// Scrolling sidebar for your website

/* window.onscroll = function()
{
	if( window.XMLHttpRequest ) {
		if (document.documentElement.scrollTop > 201 || self.pageYOffset > 201) {
		    $('Chatcontent').style.position = 'fixed';
			$('Chatcontent').style.bottom = '10px';
			$('ChatShow').style.bottom = '10px';
		} else if (document.documentElement.scrollTop < 201 || self.pageYOffset < 201) {
			$('Chatcontent').style.position = 'absolute';
			$('Chatcontent').style.bottom = '10px';
			$('ChatShow').style.bottom = '10px';
		}
	}
} */

function showDiv(id) {
    document.getElementById(id).style.display = 'block';
}
function hideDiv(id) {
    document.getElementById(id).style.display = 'none';
}
function emptyDiv(id) {
    document.getElementById(id).innerHTML = "";
}

function checkUserAlive() {

    var sName = readCookie('chatName');
    var sEmail = readCookie('chatEmail');
    
    if((sName != null)&&(sEmail != null)) {
        return 1;
    }
    return 0;
}

function checkUserChat() {

    var sName = readCookie('chatName');
    var sEmail = readCookie('chatEmail');

    var ajaxRequest;  // The variable that makes Ajax possible!
        try{
            ajaxRequest = new XMLHttpRequest();
        } catch (e){
            try{
                ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try{
                    ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e){
                    alert("Your browser broke!");
                    return false;
                }
            }
        }   
        var agents = 0;
        ajaxRequest.onreadystatechange = function(){
            if(ajaxRequest.readyState == 4){ 
                agents = ajaxRequest.responseText;
                //  This is where we determin if we have availiable agents or not.
                //alert(agents);
            
                if((sName != null)&&(sEmail != null)&&(agents > 0)) {
                    // Continue live chat.
                    var sLoc = self.location.href;
                    var sMSG = "";
                    var sURL = "http://www.x10.com/onlinesupport/ajaxchat2.cgi?req=get&name=";
            
                    document.getElementById('Chatcontent').style.display = 'block';
                    HideChatDiv('ChatImage');
            
                    sURL += escape(sName) + "&email=" + escape(sEmail) + "&msg=" + escape(sMSG);
            
                    getUserChat(sURL);
            
	                requestLogin(sName, sEmail, sMSG);
            
                    scrollChatUp();

                    //They are logged in now - so send back a '1'
                    return 1;
                }   
                else {
                    if(agents > 0) {
                        // HTML for the popOUT chat login form to the bottom right.
                        var myHTML = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"200px\"><tr>\n";
                        myHTML += "<td><img src=\"http://graphics.x10.com/images22/jcchat_01.gif\" width=\"10\" height=\"10\"></td>\n";
                        myHTML += "<td width=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_02.gif\');background-repeat: repeat-x;\"></td>\n";
                        myHTML += "<td><img src=\"http://graphics.x10.com/images22/jcchat_03.gif\" width=\"10\" height=\"10\"></td></tr><tr>\n";
                        myHTML += "<td height=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_07.gif\');background-repeat: repeat-y;\"></td>\n";
                        myHTML += "<td height=\"100%\" bgcolor=\"#ffffff\">\n";
                            myHTML += "<table bgcolor=\"#ffffff\" width=\"180px\" border=\"0\" cellspacing=0 cellpadding=0>\n";
                            myHTML += "<tr><td><b>CHAT LIVE</b> with Real X10 Experts Now!</td></tr><tr><td>\n";
                            myHTML += "<form name=\"reqChat\" action=\"\" method=\"GET\"><br>";
                            myHTML += "Name: <br><input type=\"text\" name=\"name\" value=\"\" size=\"22\" onfocus=\"javascript:hideDiv('AskToChat');\"><br>";
                            myHTML += "Email: <br><input type=\"text\" name=\"email\" value=\"\" size=\"22\" onfocus=\"javascript:hideDiv('AskToChat');\"><br>";
                            myHTML += "Question: <br><textarea name=\"msg\" cols=\"22\" rows=\"3\" onfocus=\"javascript:hideDiv('AskToChat');\"></textarea><br>";
                            myHTML += "<input type=\"hidden\" name=\"refer\" value=\""+self.location.href+"\" id=\"refer\" />";
                            // The two lines below are the only difference in this against the code below.
                            myHTML += "<input type=\"button\" value=\"Ask\" onClick=\"return AskAway(this.form);\">";
                            myHTML += "<input type=\"button\" value=\"Hide\" onClick=\"HideChatDiv('ChatImage');hideDiv('Chatcontent');\"></form>";
                            myHTML += "</td><tr></table>\n";
                        myHTML += "<td height=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_09.gif\');background-repeat: repeat-y;\">";
                        myHTML += "<img src=\"http://graphics.x10.com/images22/jcchat_09.gif\" width=\"10\" height=\"14\"></td>\n";
                        myHTML += "</tr><tr><td><img src=\"http://graphics.x10.com/images22/jcchat_13.gif\" width=\"10\" height=\"10\"></td>\n";
                        myHTML += "<td width=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_14.gif\');background-repeat: repeat-x;\"></td>\n";
                        myHTML += "<td><img src=\"http://graphics.x10.com/images22/jcchat_15.gif\" width=\"10\" height=\"10\"></td></tr></table>\n";

                        document.getElementById("Chatcontent").innerHTML = myHTML;
            
                        // Now fill out our div for the static login chat form.
                        FillChatDiv('ChatImage');
                        // Start our timer for the popup window.
                        setTimeout("showDiv('AskToChat')", 15000);
                        return 0;
                    }
                    else {
                        // Leave Chatcontent blank because we have to reps available.
                        hideDiv('Chatcontent');
                        hideDiv('ChatImage');

                        // Remove their cookies.
                        //eraseCookie('chatName');
                        //eraseCookie('chatEmail');
            
                        // By returning 1 we turn off the timeout to show the "Would you like to chat with someone" popOUT.
                        return 1;
                    }
                    return 0;
                    }
                }   
            }
            var link = "http://www.x10.com/onlinesupport/checkAgents.cgi";
            ajaxRequest.open("GET", link, true);
            ajaxRequest.send(null);
}

function FillChatDiv(id) {

    var myHTML = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"180px\"><tr>\n";
    myHTML += "<td><img src=\"http://graphics.x10.com/images22/jcchat_01.gif\" width=\"10\" height=\"10\"></td>\n";
    myHTML += "<td width=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_02.gif\');background-repeat: repeat-x;\"></td>\n";
    myHTML += "<td><img src=\"http://graphics.x10.com/images22/jcchat_03.gif\" width=\"10\" height=\"10\"></td></tr><tr>\n";
    myHTML += "<td height=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_07.gif\');background-repeat: repeat-y;\"></td>\n";
    myHTML += "<td height=\"100%\" bgcolor=\"#ffffff\">\n";
        myHTML += "<table bgcolor=\"#ffffff\" width=\"160px\" border=\"0\" cellspacing=0 cellpadding=0>\n";
        myHTML += "<tr><td><b>CHAT LIVE</b> with Real X10 Experts Now!</td></tr><tr><td>\n";
        myHTML += "<form name=\"reqChat\" action=\"\" method=\"GET\"><br>";
        myHTML += "Name: <br><input type=\"text\" name=\"name\" value=\"\" size=\"22\" onfocus=\"javascript:hideDiv('AskToChat');\"><br>";
        myHTML += "Email: <br><input type=\"text\" name=\"email\" value=\"\" size=\"22\" onfocus=\"javascript:hideDiv('AskToChat');\"><br>";
        myHTML += "Question: <br><textarea name=\"msg\" cols=\"22\" rows=\"3\" onfocus=\"javascript:hideDiv('AskToChat');\"></textarea><br>";
        myHTML += "<input type=\"hidden\" name=\"refer\" value=\""+self.location.href+"\" id=\"refer\" />";
        myHTML += "<input type=\"button\" value=\"Ask\" onClick=\"return AskAway2(this.form);\">";
        myHTML += "<input type=\"button\" value=\"Hide\" onClick=\"HideChatDiv('ChatImage');\"></form>";
        myHTML += "</td><tr></table>\n";
    myHTML += "<td height=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_09.gif\');background-repeat: repeat-y;\">";
    myHTML += "<img src=\"http://graphics.x10.com/images22/jcchat_09.gif\" width=\"10\" height=\"14\"></td>\n";
    myHTML += "</tr><tr><td><img src=\"http://graphics.x10.com/images22/jcchat_13.gif\" width=\"10\" height=\"10\"></td>\n";
    myHTML += "<td width=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_14.gif\');background-repeat: repeat-x;\"></td>\n";
    myHTML += "<td><img src=\"http://graphics.x10.com/images22/jcchat_15.gif\" width=\"10\" height=\"10\"></td></tr></table>\n";

            document.getElementById(id).innerHTML = myHTML;
}
function HideChatDiv(id) {
    var myHTML = "<a href=\"\" onclick=\"hideDiv('AskToChat');hideDiv('ChatShow');hideDiv('Chatcontent');javascript:if(checkUserAlive()==0){FillChatDiv('ChatImage')}else{showDiv('Chatcontent')};return false;\">";
        myHTML += "<img src=\"http://graphics.x10.com/images22/gotquestions_livechat.gif\" border=\"0\"></a><br>";

        document.getElementById(id).innerHTML = myHTML;

}

function AskAway(id) {
    //Check to see if the fields are empty.
    if(checkEmpty(id)) {

        //Now request login.
        requestChat(id);
        return true;
    }
    return false;
}
function AskAway2(id) {
    //Check to see if the fields are empty.
    if(checkEmpty(id)) {

        //Now request login.
        requestChat2(id);
        HideChatDiv('ChatImage');
        return true;
    }
    return false;
}
function checkEmpty(f) {

    var emailaddr = "";
        if(f.name.value)
        {
            if(f.email.value)
            {
                emailaddr = f.email.value;
                var findat = emailaddr.search(/@/i);
                var finddot = emailaddr.search(/\./g);
                var len = emailaddr.length-1;
                if( findat > 0 &&
                    findat < len &&
                    finddot > 0 &&
                    finddot < len)
                {
                    if(f.msg.value)
                    {
                        return true;
                    }
                    else
                    {
                        alert("Please Enter A Question");
                        return false;
                    }
                }
                else
                {
                    alert("Please Enter A Correct Email Address\n (eg john@isp.com)");
                    return false;
                }
            }
            else
            {
                alert("Please Enter Your Email Address");
                return false;
            }
        }
        else
        {
            alert("Please Enter Your Name");
            return false;
        }
}

function getUserChat(link) {

    var myHTML = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"200px\"><tr>\n";
    myHTML += "<td><img src=\"http://graphics.x10.com/images22/jcchat_01.gif\" width=\"10\" height=\"10\"></td>\n";
    myHTML += "<td width=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_02.gif\');background-repeat: repeat-x;\"></td>\n";
    myHTML += "<td><img src=\"http://graphics.x10.com/images22/jcchat_03.gif\" width=\"10\" height=\"10\"></td></tr><tr>\n";
    myHTML += "<td height=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_07.gif\');background-repeat: repeat-y;\"></td>\n";
    myHTML += "<td height=\"100%\" bgcolor=\"#ffffff\">\n";
    myHTML += "<table bgcolor=\"#ffffff\" width=\"180px\" border=\"0\" cellspacing=0 cellpadding=0>\n";
    myHTML += "<tr><td colspan=\"3\">\n";
    myHTML += "<div id=\"idChatWindow\" style=\"height:300px;width:180px;overflow:auto;font-size:9pt;background-color: #fff;word-wrap:break-word;\">\n";
    myHTML += "</div></td></tr><tr><td colspan=\"3\">\n";
    myHTML += "<input type=\"text\" id=\"txtChatMessage\" onKeyUp=\"userChatSend(event);\" name=\"txtChatMessage\">";
    myHTML += "</td></tr><tr><td><center>\n";
    myHTML += "<input type=\"submit\" onClick=\"userChatSend(null);\" value=\"Send\">";
    myHTML += "</td><td><input type=\"button\" value=\"Hide\" onClick=\"javascript:showDiv('ChatShow');javascript:hideDiv('Chatcontent');\">";
    myHTML += "</td><td><center><input type=\"button\" value=\"Close\" onclick=\"quitApp(1);\">";
    myHTML += "</td><tr></table><div id=\"homeChatUser\"></div><br>\n";
    myHTML += "<td height=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_09.gif\');background-repeat: repeat-y;\"><img src=\"http://graphics.x10.com/images22/jcchat_09.gif\" width=\"10\" height=\"14\"></td>\n";
    myHTML += "</tr><tr><td><img src=\"http://graphics.x10.com/images22/jcchat_13.gif\" width=\"10\" height=\"10\"></td>\n";
    myHTML += "<td width=\"100%\" style=\"background-image:url(\'http://graphics.x10.com/images22/jcchat_14.gif\');background-repeat: repeat-x;\"></td>\n";
    myHTML += "<td><img src=\"http://graphics.x10.com/images22/jcchat_15.gif\" width=\"10\" height=\"10\"></td></tr></table>\n";
    
    document.getElementById("Chatcontent").innerHTML = myHTML;
       
    //GetChatResponse(link, handleLoginResponse);
}

//  Start Cookie stuff.
function cookieDate()
{
    var date = new Date();
    //alert("Date: \n" + date.getTime()+(1*24*60*60*1000));
}
function createCookie(name, value, days)
{
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
  var ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length); //delete spaces
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
  return null;
}

function eraseCookie(name)
{
  createCookie(name, "", -1);
}
//  End Cookie stuff.

/*
Login Request:
	homechat.cgi?req=login&name=<NAME>&email=<EMAIL>&msg=<MSG>
*/
function requestChat(form) {
/*
    var sName = escape(form.getElementsByTagName("input")[0].value);
    var sEmail = escape(form.getElementsByTagName("input")[1].value);
    var sMSG = escape(form.getElementsByTagName("textarea")[0].value);
*/
    var sName = form.getElementsByTagName("input")[0].value;
    var sEmail = form.getElementsByTagName("input")[1].value;
    var sMSG = form.getElementsByTagName("textarea")[0].value;
    var sURL = "http://www.x10.com/onlinesupport/ajaxchat2.cgi?req=login&name=";

    createCookie('chatName', sName, 7);
    createCookie('chatEmail', sEmail, 7);

    sURL += sName + "&email=" + sEmail + "&msg=" + sMSG;
    //alert("sURL:\n"+sURL)
    getUserChat(sURL);

	requestLogin(sName, sEmail, sMSG);
/*
    alert(form.getElementsByTagName("input")[0].value)
    alert(form.getElementsByTagName("input")[1].value)
    alert(form.getElementsByTagName("textarea")[0].value)
*/
}
function requestChat2(form) {
    var sName = form.getElementsByTagName("input")[0].value;
    var sEmail = form.getElementsByTagName("input")[1].value;
    var sMSG = form.getElementsByTagName("textarea")[0].value;
    var sURL = "http://www.x10.com/onlinesupport/ajaxchat2.cgi?req=login&name=";

    createCookie('chatName', sName, 7);
    createCookie('chatEmail', sEmail, 7);

    sURL += sName + "&email=" + sEmail + "&msg=" + sMSG;

    showDiv('Chatcontent');
    
    getUserChat(sURL);

	requestLogin(sName, sEmail, sMSG);
}

function checkAgents()
{
}

// -------------------------------------------------------------  Mikes
 function getX10C1Simple()
 {
  var s;
  var sURL = "";
  if (s = document.cookie)
  {
   var i = s.indexOf('x_10c1=', 0);
   var iEnd = s.indexOf(';', i);
   sURL = s.substr(i, iEnd - i);
  }
  return sURL;
 }
function quitApp(bttn)
{
    var con = confirm("This Action Will Erase The Conversation.\n Do You Wish To Continue?");
    if(con)
    {   

        eraseCookie('chatName');
        eraseCookie('chatEmail');
        window.open('http://www.x10.com/onlinesupport/survey.cgi?init=5&id='+g_sChatID+'&closed='+bttn,'Remove','width=600,height=500,resizable=1,scrollbars=1');
        //window.location = "http://www.x10.com/homepage.htm"
        window.location = self.location.href;
    }
}
    function userChatSend(e)
    {
        var keyCode = (e == null ? null : ((window.Event) ? e.which : e.keyCode));
        if (keyCode == 13 || e == null)
        {
            var objElement = document.getElementById(C_INPUT_CHAT_MESSAGE);
            if (objElement)
            {
                var sMessage = objElement.value.trim();
                if (sMessage && sMessage.length)
                {           
                    objElement.value = "";

                    ++g_nSends;
                    var nDelayCnt = 0;
                    if (g_nSends >= 2)
                    {
                        objElement.disabled = "disabled";
                        objElement.value = "Please wait..";
                    }
                    
                    //send chat message now
                    requestSendMessage(sMessage);                   
                }
            }           
        }
    }




// -------------------------------------------------------------  Mikes


	var C_ENABLE_DEBUG = true;
	var C_DOCUMENT_CHAT_WINDOW_ID = "idChatWindow";
	var C_INPUT_CHAT_MESSAGE = "txtChatMessage";
	var C_ID_DEBUG_OUTPUT = "divDebugOutput";
	var C_ID_STATUS = "idStatus";
	var C_LINE_SEPARATOR = "\n";
	var C_FIELD_SEPARATOR = "=";

	var g_sChatID = false;
	var g_nMsgID = false;
	var g_sChatBaseURL = "http://www.x10.com/onlinesupport/homechat4.cgi";
	var g_sCustomerName = false;
	var g_sCustomerEmail = false;
	var g_sLastChatHash = false;
	var g_nLastUpdateTime = 0;
	var g_bChatLoggedIn = false;
	
	var g_nSends = 0;

 function getX10C1Simple()
 {
  var s;
  var sURL = "";
  if (s = document.cookie)
  {
   var i = s.indexOf('x_10c1=', 0);
   var iEnd = s.indexOf(';', i);
   
   sURL = s.substr(i, iEnd - i);
  }
  return sURL;
 }
	
	function decrementSends()
	{
		if (g_nSends)
		{
			g_nSends = g_nSends ? g_nSends - 1 : 0;

			if (g_nSends == 0)
			{
				var objElement = document.getElementById(C_INPUT_CHAT_MESSAGE);
				if (objElement)
				{
					objElement.disabled = "";
					objElement.value = "";
				}
			}
		}
		
		setTimeout("decrementSends()", 2000);
	}

	
	function debugOut(sMessage)
	{
		if (C_ENABLE_DEBUG)
		{
			var objDebug = document.getElementById(C_ID_DEBUG_OUTPUT);
			if (objDebug)
			{
				objDebug.innerHTML += sMessage.nl2br() + "<BR>";		
				objDebug.scrollTop = objDebug.scrollHeight;			

			}
		}
	}

	String.prototype.trim = function()
	{
		return this.replace(/^\s*/, "").replace(/\s*$/, "");
	}
	
	String.prototype.splitNV = function()
	{
		var nEqPos = this.indexOf(C_FIELD_SEPARATOR);
		
		if (nEqPos)
		{
			var sName = this.substring(0, nEqPos).toUpperCase();
			var sValue = this.substring(nEqPos + 1);
			
			debugOut("Name = " + sName);
			debugOut("Value = " + sValue);
			
			return new Array(sName,sValue);
		}
		else
		{
			return false;
		}				
	}

	String.prototype.asInt = function()
	{
		return parseInt(this.value) == "NaN" ? 0 : parseInt(this.value);
	}

	String.prototype.nl2br = function()
	{
		return this.replace('\n', '<br />\n');
	}

	function setStatusText(nErrorCode, sMessage)
	{
	
		var objStatus = document.getElementById(C_ID_STATUS);
		if (!objStatus)
		{
			return false;
		}
		
		if (nErrorCode)
		{
			objStatus.innerHTML = "Error #<b>" + nErrorCode + "</b>: " + sMessage;
		}
		else
		{
			objStatus.innerHTML = sMessage;
		}
		
		return true;
	}

	function handleResponseFailure(sData)
	{
		sData = getCleanChatResponse(sData);
		if (!sData)
		{
			return false;
		}
		
		var bSuccess = false;
		var sFailureMessage = false;
		var nResponseCode = false;
		
		var saLines = sData.split(C_LINE_SEPARATOR);
		if (saLines && saLines.length)
		{
			//process each line
			for (var n = 0; n < saLines.length; n++)
			{
				var saFields = saLines[n].splitNV();
				switch (saFields[0])
				{
					case "RESPONSE":
						bSuccess = (saFields[1].toUpperCase() == "OK") ? true : false;
						break;
					case "RESPONSE_MSG":
						sFailureMessage = saFields[1];
						break;
					case "RESPONSE_CODE":
						nResponseCode = saFields[1].asInt();
						break;
					default:
						break;
				}
			}
		}
		
		if (!bSuccess && sFailureMessage && nResponseCode)
		{
			if (nResponseCode == 1000)
			{
				//not connected
				g_bChatLoggedIn = false;
				setStatusText(1000, "You are no longer connected to the chat.");
			}
			else
			{
				setStatusText(nResponseCode, sFailureMessage);
			}
		}
		else if (bSuccess)
		{
			setStatusText(false, "");
		}
		
	}
	
	function GetChatResponse(strURL, callback)
	{	
		debugOut("URL=" + strURL + "<BR>Callback=" + callback.toString().split("\n")[0] + "");
	    var xmlHttpReq = false;
	    var self = this;

        if(checkUserAlive() == 0) {
            // User has closed chat - reload.
            window.location = self.location.href;
        }
	    
		if (strURL.indexOf("?") > 0)
		{
			strURL = strURL + "&randseq="+Math.floor(Math.random() * 10000000);
		}
		else
		{
			strURL = strURL + "?randseq="+Math.floor(Math.random() * 10000000);
		}
		
		if (window.XMLHttpRequest)
		{
	        self.xmlHttpReq = new XMLHttpRequest();
	    }
	    else if (window.ActiveXObject)
		{
	        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	    }
	    self.xmlHttpReq.open('GET', strURL, true);
		self.xmlHttpReq.setRequestHeader('Content-Type', 'text/plain')
	    
		var nTime = new Date().getTime();
		self.xmlHttpReq.onreadystatechange = function()
		{
			//debugOut("ResponseCode=" + self.xmlHttpReq.status);
			if (self.xmlHttpReq.readyState == 4 && self.xmlHttpReq.status == 200)
			{
				//make sure we didn't take too long to update and have another call update
				if (g_nLastUpdateTime <= nTime)
				{
					callback(self.xmlHttpReq.responseText);
					
					g_nLastUpdateTime = nTime;
				}
	        }
	    }
		
	    self.xmlHttpReq.send(null);
	}

	function getCleanChatResponse(sData)
	{
		//quick validation
		if (typeof(sData) != "string")
		{
			return false;
		}
		
		//we know it's a string now..
		var sRetval = sData.trim();
		
		return sRetval.length ? sRetval : false;
	}
	
/*
Login Request:
	homechat.cgi?req=login&name=<NAME>&email=<EMAIL>&msg=<MSG>
*/
	function requestLogin(sName, sEmail, sMessage)
	{
		var sURL = g_sChatBaseURL;
		sURL += "?req=login&name=" + escape(sName);
		sURL += "&email=" + escape(sEmail);
		sURL += "&msg=" + escape(sMessage);
		sURL += "&refer=" + escape(self.location.href);
		
        //alert("sURL: "+sURL+"\nHandle: "+handleLoginResponse+"\n");

		GetChatResponse(sURL, handleLoginResponse);
	}
	function requestLoginRet(sName, sEmail, sLoc)
	{
		var sURL = g_sChatBaseURL;
		sURL += "?req=login&name=" + escape(sName);
		sURL += "&email=" + escape(sEmail);
		sURL += "&refer=" + escape(sLoc);
        //alert("sURL: "+sURL+"\nHandle: "+handleLoginResponse+"\n");
		GetChatResponse(sURL, handleLoginResponse);
	}
	
/*
Login Response (one entry per line):
	response=(OK or FAILURE, if failure no other fields need to be provided)
	response_msg=(If failure a reason can be specified here to show to customer)
	chat_id=homepagequestion.63211211176   (or whatever chat ID created is)
	name=<NAME>
	msg_id=<MSGID>
*/
	function handleLoginResponse(sData)
	{
		sData = getCleanChatResponse(sData);
		if (!sData)
		{
			return false;
		}
		
		var bSuccess = false;
		var saLines = sData.split(C_LINE_SEPARATOR);
		if (saLines && saLines.length)
		{
			//process each line
			for (var n = 0; n < saLines.length; n++)
			{
				var saFields = saLines[n].splitNV();
				debugOut("Line data = " + saLines[n]);
				debugOut("saFieldsData = " + saFields[0]);
				switch (saFields[0])
				{
					case "RESPONSE":
						bSuccess = (saFields[1].toUpperCase() == "OK") ? true : false;
						debugOut("Login Response/Logged In=" + bSuccess);
						g_bChatLoggedIn = bSuccess;
						break;
					case "RESPONSE_MSG":
						if (!bSuccess)
						{
							//failure message
							handleResponseFailure(sData);
							return false;
						}
						break;
					case "CHAT_ID":
						g_sChatID = saFields[1];
						break;
					case "NAME":
						g_sCustomerName = saFields[1];
						break;
					case "MSG_ID":
						g_nMsgID = saFields[1].asInt();
						break;
					default:
						break;
				}
			}
		}
		
		//kick off timer if login went ok, check is performed inside of function
		debugOut("Kicking off timer for getChat...");
    var oImg = document.createElement("img");
    oImg.src = "http://www.x10.com/images/homechat.gif?"+getX10C1Simple()+"&id="+g_sChatID;
    document.body.appendChild(oImg);

		timerChatUpdate();		
		
		return bSuccess;
	}
	

	
	
/*
Sending Message:
	homechat.cgi?req=send&name=<NAME>&chat_id=<CHAT_ID>&msg=<MESSAGE>
*/
	function requestSendMessage(sMessage)
	{
		if (g_bChatLoggedIn) 
		{
			var sURL = g_sChatBaseURL;
			sURL += "?req=send&name=" + escape(g_sCustomerName);
			sURL += "&chat_id=" + escape(g_sChatID);
			sURL += "&msg=" + escape(sMessage);
			
			debugOut(sURL);
			GetChatResponse(sURL, handleSendMessageResponse);
		}
	}
	
/*
Sending Response:
	response=(OK or FAILURE)
	response_msg=(If failure, specify reason for failure -- chat closed, banned, etc)
	msg_id=<NEW MSG_ID>
*/
	function handleSendMessageResponse(sData)
	{
		sData = getCleanChatResponse(sData);
		if (!sData)
		{
			return false;
		}
		
		var saLines = sData.split(C_LINE_SEPARATOR);
		if (saLines && saLines.length)
		{
			//process each line
			for (var n = 0; n < saLines.length; n++)
			{
				var saFields = saLines[n].splitNV();
				switch (saFields[0])
				{
					case "RESPONSE":
						bSuccess = (saFields[1].toUpperCase() == "OK") ? true : false;
						if (!bSuccess)
						{
							handleResponseFailure(sData);
							return false;
						}
						break;
					case "RESPONSE_MSG":
						break;
					case "MSG_ID":
						g_nMsgID = saFields[1].asInt();
						break;
					default:
						break;
				}
			}
		}		
	}
	
	function timerChatUpdate()
	{
		//kick off update request if we're logged in
		if (g_bChatLoggedIn == true)
		{
			requestGetChat();
			
			//keep timer going to update the page
			setTimeout("timerChatUpdate()", 3000);
		}
	}
	
/*	
Getting Chat:
	homechat.cgi?req=get&chat_id=<CHAT_ID>&msg_id=<MSG_ID>
*/
	function requestGetChat()
	{
		if (g_bChatLoggedIn)
		{
			var sURL = g_sChatBaseURL;
			sURL += "?req=get&chat_id=" + escape(g_sChatID);
			sURL += "&msg_id=" + g_nMsgID;
		
			GetChatResponse(sURL, handleGetChatResponse);
		}
	}
	
/*
Getting Chat Response:
	response=(OK or FAILURE)
	<remaining message is chat data>
*/
	function handleGetChatResponse(sData)
	{
		sData = getCleanChatResponse(sData);
		if (!sData)
		{
			return false;
		}
		
		var objElement = document.getElementById(C_DOCUMENT_CHAT_WINDOW_ID);
		if (!objElement)
		{
			//no chat window? Then we can't do anything with results. Drop it all.
			return false;
		}
		
		var sChatBuffer = "";
		var saLines = sData.split(C_LINE_SEPARATOR);
		if (saLines && saLines.length)
		{
			//process each line
			for (var n = 0; n < saLines.length; n++)
			{
				//first line contains status
				if (n == 0)
				{
					var saFields = saLines[n].splitNV();
					if (!(saFields[0] == "RESPONSE" && saFields[1] == "OK"))
					{
						handleResponseFailure(sData);
						return false;
					}
				}
				else if (n > 0)
				{
					sChatBuffer += saLines[n] + "<BR/>";
				}
			}
		}
		
		//compare cached MD5 hash against a hash of this new data, if same do not re-draw data
		var sChatMD5 = hex_md5(sChatBuffer);
		
		if (g_sLastChatHash != sChatMD5)
		{
            // And show the window incase the user has hidden it.
            document.getElementById('Chatcontent').style.display = 'block';
            hideDiv('ChatShow');
		
			//chat contents changed, update data.. first update with new hash so we can see changes in future
			g_sLastChatHash = sChatMD5;

			//update chat window with the new contents
			objElement.innerHTML = sChatBuffer;

			//scroll down
			objElement.scrollTop = objElement.scrollHeight;			
		}
	}
	
	
function scrollChatUp() {
		var objElement = document.getElementById(C_DOCUMENT_CHAT_WINDOW_ID);
		objElement.scrollTop = objElement.scrollHeight;			
}
/*	
Close Request:
	homechat.cgi?req=exit&chat_id=<CHAT_ID>
*/
	function requestCloseChat()
	{
	
	}
	
/*
Close response (none needed):
*/
	function handleCloseChatResponse(sData)
	{
	}

