var messRefreshTimer=null;
var scrollTimer=null;

//if(QBS_site_url)
	QBS_site_url="http://www.sunsetrealtyservices.com/admin/index.php";

function initChat()
{
	if(messRefreshTimer)
	{
		window.clearInterval(messRefreshTimer);
	}
	refreshMessages();
	messRefreshTimer=window.setInterval("refreshMessages()",1000);
}

function refreshMessages()
{
	var http_request=makeHttpRequestObject();
	if (!http_request)
	{
		return false;
	}
	var query_string="";
	query_string+="cid="+cid;
	http_request.onreadystatechange = function() { processRefreshMessages(http_request); };
	try {
		AJAXSend(http_request,QBS_site_url+"/user_ajax/load_messages",query_string);
	}
	catch (e)
	{
		alert("Error requesting data from server.  Contact Technical Support.\n\r"+e);
	}
}

var takenLatch=false;

function processRefreshMessages(http_request)
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			var xmldoc=http_request.responseXML;
			var d=document.getElementById("messageLog");
			d.innerHTML="";
			var chat=xmldoc.getElementsByTagName("chat").item(0);
			var taken=parseInt(getNamedNodeValue(chat,"taken"));
			var qcnt=parseInt(getNamedNodeValue(chat,"qcnt"));
			var ucnt=parseInt(getNamedNodeValue(chat,"ucnt"));
			var active=parseInt(getNamedNodeValue(chat,"active"));
			var csname=getNamedNodeValue(chat,"csname");
			var ms=xmldoc.getElementsByTagName("message");
			if(taken > 0)
			{
				if(takenLatch && (ms.length > 0))
				{
					for(var i=0;i<ms.length;i++)
					{
						var m=ms.item(i);
						d.innerHTML+="<hr/>"+getNamedNodeValue(m,"text");
					}
					if(active < 1)
					{
						d.innerHTML+="<hr/>This session has ended.  You may close the window at any time.  Thank you!";
						takenLatch=false;
						window.clearInterval(messRefreshTimer);
					}
					scrollTimer=setInterval("scrollMessages()",250);
				}
				else
				{
					takenLatch=true;
					d.innerHTML="You have been connected with "+csname+".  Thank you!";
				}
			}
			else
			{
				if(ucnt < 1)
					d.innerHTML="Please wait while you are connected with a customer service agent.  You are number "+qcnt+" in the queue.  Thank you for your patience.";
				else
				{
					d.appendChild(document.createTextNode("There are no customer service agents available right now.  Please try again at another time or "));
					var a=document.createElement("a");
					a.appendChild(document.createTextNode("click here"));
					a.href='#';
					a.onclick=function () { closeConversation(); window.opener.location=QBS_base_url+"../contact.php"; };
					d.appendChild(a);
					d.appendChild(document.createTextNode(" to send a message from our contact form."));
				}
			}
		}
		else
		{
			alert('Server Error, contact Techincal Support.');
		}
	}
}

function checkEnter(ta,e)
{
	if(window.event)
		e=window.event;
	p=e.altKey || e.shiftKey;
	if(e.keyCode==13 && !p)
	{
		sendMessage();
		return false;
	}
	return true;
}

function sendMessage()
{
	var http_request=makeHttpRequestObject();
	if (!http_request)
	{
		return false;
	}
	var m=document.getElementById("newMessage");
	var query_string="message="+m.value;
	query_string+="&cid="+cid;
	http_request.onreadystatechange = function() { processSendMessage(http_request); };
	try {
		AJAXSend(http_request,QBS_site_url+"/user_ajax/send_message",query_string);
		//m.value="";
	}
	catch (e)
	{
		alert("Error requesting data from server.  Contact Technical Support.\n\r"+e);
	}
}

function processSendMessage(http_request)
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			var xmldoc=http_request.responseXML;
			var success=parseInt(getNamedNodeValue(xmldoc,"success"));
			if(success > 0)
			{
				var m=document.getElementById("newMessage");
				m.value="";
			}
			else
			{
				alert("I had trouble sending the message, please try again.");
			}
		}
		else
		{
			alert('Server Error, contact Techincal Support.');
		}
	}
}

function scrollMessages()
{
	clearInterval(scrollTimer);
	var d=document.getElementById("messageLog");
	d.scrollTop=d.scrollHeight;
}

function launchClientChat()
{
	window.open(QBS_site_url+"/clientchat","chat","width=400,height=500");
}

function startChat()
{
	if(cid)
	{
		alert("A conversation has already been started.");
		return false;
	}
	var http_request=makeHttpRequestObject();
	if (!http_request)
	{
		return false;
	}
	var query_string="";
	http_request.onreadystatechange = function() { processStartChat(http_request); };
	try {
		AJAXSend(http_request,QBS_site_url+"/user_ajax/start_chat",query_string);
	}
	catch (e)
	{
		alert("Error requesting data from server.  Contact Technical Support.\n\r"+e);
	}
}

function processStartChat(http_request)
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			var xmldoc=http_request.responseXML;
			var success=parseInt(getNamedNodeValue(xmldoc,"success"));
			cid=parseInt(getNamedNodeValue(xmldoc,"cid"));
			if((success > 0) && (cid > 0))
			{
				initChat();
			}
			else
			{
				alert("I had trouble starting the conversation, please try again.");
				window.close();
			}
		}
		else
		{
			alert('Server Error, contact Techincal Support.');
		}
	}
}

function closeConversation()
{
	var http_request=makeHttpRequestObject();
	if (!http_request)
	{
		return false;
	}
	var query_string="cid="+cid;
	http_request.onreadystatechange = function() { processCloseConversation(http_request); };
	try {
		AJAXSend(http_request,QBS_site_url+"/user_ajax/close_chat",query_string);
	}
	catch (e)
	{
		alert("Error requesting data from server.  Contact Technical Support.\n\r"+e);
	}
}

function processCloseConversation(http_request)
{
	if (http_request.readyState == 4)
	{
		if (http_request.status == 200)
		{
			var xmldoc=http_request.responseXML;
			var success=parseInt(getNamedNodeValue(xmldoc,"success"));
			if(success > 0)
			{
				takenLatch=false;
				window.close();
			}
			else
			{
				alert("I had trouble closing the conversation, please try again.");
			}
		}
		else
		{
			alert('Server Error, contact Techincal Support.');
		}
	}
}
