/*
AskUsChat.com Client
Copyright (c) 2000-2010 Keyring Labs

AskUsChat can be added to your site for a low monthly fee.
http://www.AskUsChat.com
*/
bReady			= false;
bChangeName		= false;
bSendRequired	= false;
sMessage		= "";
sMessages		= "";
STAFF_ID = -1;
oCom = null;
w = window;
d = document;
f = d.forms['send'];
fs = d.forms['survey'];
DEBUGRECV = true;

function changename() {
	bChangeName = true;
}

function showchat() {
	bSendRequired = true;
	d.all["container_scrollpane"].style.display = "";
	d.all["content"].style.display = "";
	d.all["container_sendas"].style.display = "";
	d.all["container_sendform"].style.display = "";
	d.all["container_requiredform"].style.display = "none";
}

function L3CommunicatorReady() { 
	w.clearTimeout(oTimeout);
	oCom = new L3Communicator();
	d.all["statusdisplay"].style.display = "none";
	if (!CUSTOM_SURVEY && !REQUIRE_CHATNAME && !REQUIRE_NAMEFIRST && !REQUIRE_EMAIL) {
		showchat();
	} else {
		d.all["container_requiredform"].style.display = "";
	}
	oCom.setRequestPage(REQUEST_URL);
	oCom.setVariable("action", "1");
	oCom.setVariable("sid", f.elements["phpsessionid"].value);
	oCom.setVariable("type", "2");
	oCom.setVariable("op", ((ONPAGE) ? "1" : "2"));
	oCom.send();
	w.onunload = close;
	w.onbeforeunload = close;
}

function L3CommunicatorDataReceived(sData) {
	if (DEBUGRECV && sData && sData.length) debug("!!!" + sData);
	oCom.load(sData); 
	switch (oCom.nvData.Get("action")) {
	case "started" :
		debug("started");
		bReady = true;
		f.elements["userid"].value = oCom.nvData.Get("userid");
		if (oCom.nvData.Get("staffid") == STAFF_ID) break;
		STAFF_ID		= oCom.nvData.Get("staffid");
		STAFF_NAME		= oCom.nvData.Get("staffname");
		STAFF_PHOTO	= oCom.nvData.Get("staffphoto");
		sMessages += WELCOME_MESSAGE + "<BR>";
		if (STAFF_ID * 1 > 0) {
			sMessages = "<B>You are connected to " + STAFF_NAME + "</B><BR>";
			if (d.all["right_heading"]) d.all["right_heading"].innerHTML = "<B>You are connected to:</B><BR>";
			if (d.all["right_image"]) {
				if (STAFF_PHOTO && STAFF_PHOTO.length) d.all["right_image"].src = STAFF_PHOTO;
				else d.all["right_image"].style.display = "none";
			}
			if (d.all["right_caption"]) d.all["right_caption"].innerHTML = "<B>" + STAFF_NAME + "</B>";
		}
		if (oCom.nvData.Get("historyhtml").length > 0) {
			sMessages = unescape(oCom.nvData.Get("historyhtml").replace(/\+/g, "%20"));
			f.elements["name"].value = oCom.nvData.Get("chatname");
			f.elements["message"].value = "";
		}

	case "message" :
		message(oCom.nvData.Get("message"));
		break;
	}
	oTimeout = w.setTimeout("query()", 3000);
}

function L3CommunicatorConnected() {
	d.all["statusdisplay"].style.display = "none";
	if (!CUSTOM_SURVEY && !REQUIRE_CHATNAME && !REQUIRE_NAMEFIRST && !REQUIRE_EMAIL) {
		showchat();
	} else {
		d.all["container_requiredform"].style.display = "";
	}
	oCom.setVariable("action", "1");
	oCom.setVariable("accountcode", ACCOUNT_CODE);
	oCom.setVariable("phpsessionid", f.elements["phpsessionid"].value);
	oCom.setVariable("hostname", f.elements["hostname"].value);
	oCom.setVariable("type", "2");
	oCom.setVariable("name", "");
	oCom.send();
}

function message(sMessage) {
	if (sMessage && sMessage.length) {
		if (sMessage.indexOf("/") == 0) {
			var aCommand = sMessage.split(" ");
			switch (aCommand[0]) {
			case "/openurl" :
				sMessages += "<SPAN CLASS='messagename'>" + STAFF_NAME + "</SPAN><SPAN CLASS='messagetext'> sent web page <A HREF='" + aCommand[1] + "' TARGET='l3copenurl'>" + aCommand[1] + "</A>. If you have a popup blocker enabled, click <A HREF='" + aCommand[1] + "' TARGET='l3copenurl'>here</A>.";
				if (ONPAGE) {
					w.parent.document.location.href = aCommand[1];
				} else {
					w.open(aCommand[1], "l3copenurl", "");
				}
				break;
			case "/nick" :
				bChangeName = false;
				break;
			case "/endchat" :
				saveHistory("");
				w.onbeforeunload = null;
				w.onunload = null;
				d.location.href = "end.php?SID=" + f.elements["phpsessionid"].value +
					((ONPAGE) ? "&OP&callerdomain=" + CALLERDOMAIN : "");
				return;
			}
		} else {
			sMessages += "<SPAN CLASS='messagename'>" + STAFF_NAME + "</SPAN><SPAN CLASS='messagetext'>" + sMessage + "</SPAN><br>";
		}
	}
	if (bSendRequired) {
		d.all["messages"].innerHTML += sMessages;
		saveHistory(d.all["messages"].innerHTML, 1);
		sMessages = "";
		oScrl = new scrl();
		oScrl.scrollTo(oScrl.iScrollMax-1);
		w.focus();
		f.elements["message"].focus();
	}
}

function debug(s) {
	return;
//	alert(s);
	d.all["messages"].innerHTML += "<PRE>" + s + "</PRE>";
	oScrl = new scrl();
	oScrl.scrollTo(oScrl.iScrollMax-1);
}

function query() {
	//debug("query" + bReady);
	w.clearTimeout(oTimeout);
	oCom.nvData = new NameValue("", "\r\n\r\n", "\r\n");
	if (sMessage.length > 0) {
		oCom.setVariable("action", "2");
		oCom.setVariable("historyhtml", d.all["messages"].innerHTML);
	} else oCom.setVariable("action", "3");
	oCom.setVariable("userid", f.elements["userid"].value);
	oCom.setVariable("staffid", STAFF_ID);
	oCom.setVariable("type", "3");
	oCom.setVariable("name", escape(f.elements["name"].value));
	oCom.setVariable("changename", ((bChangeName) ? 1 : 0));
	oCom.setVariable("message", escape(sMessage));
	oCom.send();
	sMessage = "";
}

function close() {
	if (PREVIEW == 1) return;
	try {
		w.opener.location.href = "closed.php";
	} catch (e) { }
	w.onunload = null;
}

function endchat() {
	oCom.nvData = new NameValue("", "\r\n\r\n", "\r\n")
	oCom.setVariable("action", "6");
	oCom.setVariable("userid", f.elements["userid"].value);
	oCom.setVariable("staffid", STAFF_ID);
	oCom.send();
}

function sendmessage() {
	if (!bReady || !f.elements["message"].value.length) return;
	sMessage += f.elements["message"].value + " ";
	sMessages += "<SPAN CLASS='messagenameself'>" + f.elements["name"].value + "</SPAN><SPAN CLASS='messagetextself'>" + f.elements["message"].value + "</SPAN><br>";
	f.elements["message"].value = "";
	d.all["messages"].innerHTML += sMessages;
	sMessages = "";
	oScrl = new scrl();
	oScrl.scrollTo(oScrl.iScrollMax-1);
	f.elements["message"].focus();
}

function submitsurvey() {
	var bValid = true;
	var aFields = new Array();
	for (var i=0; i<fs.elements["fields"].length; i++) {
		aFields[i] = fs.elements["fields"][i].value;
		if (fs.elements["field_" + aFields[i] + "_required"].value == "1") {
			if (!fs.elements["field_" + aFields[i]].value.length) {
				bValid = false;
			}
		}
		if (fs.elements["field_" + aFields[i] + "_identity"].value == "1") {
			f.elements["name"].value = fs.elements["field_" + aFields[i]].value;
			bChangeName = true;
		}
	}
	if (bValid) {
		showchat();
		message("");
		bSendRequired = true;
	} else {
		d.all["requirederror"].innerHTML = "Sorry, you must provide required information before continuing.";
		return;
	}
	oCom.nvData = new NameValue("", "\r\n\r\n", "\r\n")
	oCom.setVariable("action", "4");
	oCom.setVariable("userid", f.elements["userid"].value);
	oCom.setVariable("staffid", STAFF_ID);
	oCom.setVariable("name", escape(f.elements["name"].value));
	oCom.setVariable("surveyid", fs.elements["surveyid"].value);
	oCom.setVariable("fields", aFields.join(","));
	var aValues;
	for (var i=0; i<aFields.length; i++) {
		aValues = new Array();
		switch (fs.elements["field_" + aFields[i] + "_type"].value * 1) {
		case 0 :
			aValues[0] = escape(fs.elements["field_" + aFields[i]].value);
			break;
		case 1 :
			for (var j=0; j<fs.elements["field_" + aFields[i]].options.length; j++) {
				if (fs.elements["field_" + aFields[i]].options[j].selected) {
					aValues[aValues.length] = fs.elements["field_" + aFields[i]].options[j].value;
				}
			}
			break;
		case 2 :
			for (var j=0; j<fs.elements["field_" + aFields[i]].length; j++) {
				if (fs.elements["field_" + aFields[i]][j].checked) {
					aValues[aValues.length] = fs.elements["field_" + aFields[i]][j].value;
				}
			}
			break;
		}
		oCom.setVariable("field_" + aFields[i], aValues.join(","));
	}
	oCom.setVariable("changename", ((bChangeName) ? 1 : 0));
	oCom.setVariable("message", "/start");
	oCom.send();
}

function saveHistory(messages) {
	oCom.nvData = new NameValue("", "\r\n\r\n", "\r\n")
	oCom.setVariable("action", "7");
	oCom.setVariable("userid", f.elements["userid"].value);
	oCom.setVariable("historyhtml", messages);
	oCom.send();
}
