var myName='';
var open=false;
var messageReq=false;
var uc=0;
var lastID=0;
function ajaxchat_init() {
	pingIM();
	setInterval(pingIM,1000);
	if(document.getElementById("msg") && open) { document.getElementById("msg").focus(); }
	if(document.getElementById("myName") && myName.length) { document.getElementById("myName").value=myName; }
	reload_list();
}
if(window.addEventListener) { window.addEventListener("load",ajaxchat_init,false); }
else { window.attachEvent("onload",ajaxchat_init); }
function im_kp(el, e) {
	if(!e) { e=window.event; }
	if(e.keyCode==13) { updateName(el); }
}
function reload_list() {
	var count=document.getElementById("online_count");
	var list=document.getElementById("online_list");
	var listReq=getXML();
	listReq.onreadystatechange=function() {
		if(listReq.readyState==4 && listReq.status==200) {
			var data=listReq.responseText.split("::");
			list.innerHTML=data[1];
			count.innerHTML=data[0];
		}
	}
	listReq.open("GET","http://s7icky.com/wp-content/plugins/ajaxchat/ajaxchat_xml.php?action=online_list&t="+new Date().getTime());
	listReq.send(null);
}
function openOnline() {
	//Toggle ajaxchat window.
	open=!open;
	var openReq=getXML();
	openReq.open("GET","http://s7icky.com/wp-content/plugins/ajaxchat/ajaxchat_xml.php?action=open&val="+(open?'1':'0')+"&t="+new Date().getTime());
	openReq.send(null);
	var el=document.getElementById("ac_window");
	var messages=document.getElementById("messages");
	if(el.style.display=="none" || el.style.display=="") {
		el.style.display="block";
		if(document.getElementById("msg")) { document.getElementById("msg").focus(); }
	}
	else { el.style.display="none"; }
	if(open) { messages.scrollTop=messages.scrollHeight; }
	
}
function updateName(el) {
	var updateReq=getXML();
	updateReq.onreadystatechange=function() {
		if(updateReq.readyState==4 && updateReq.status==200) {
			if(updateReq.responseText.match("OK")) {
				var tmp=updateReq.responseText;
				tmp=tmp.split(":");
				document.getElementById("myName").value=tmp[1];
				myName=tmp[1];
				document.getElementById("msg").focus();
				reload_list();
			}
			else {
				if(myName.length) { document.getElementById("myName").value=myName; }
				alert(updateReq.responseText);
			}
		}
	}
	updateReq.open("GET","http://s7icky.com/wp-content/plugins/ajaxchat/ajaxchat_xml.php?action=updateName&name="+el.value);
	updateReq.send(null);
}
function blurName(el) {
	if(myName.length) { el.value=myName; }
}
function ajaxchat_closed() {
	open=false;
	closeReq=getXML();
	closeReq.open("GET","http://s7icky.com/wp-content/plugins/ajaxchat/ajaxchat_xml.php?action=open&val=0",function() { return false; });
	closeReq.send(null);
}
function ajaxchat_open() {
	open=true;
	openReq=getXML();
	openReq.open("GET","http://s7icky.com/wp-content/plugins/ajaxchat/ajaxchat_xml.php?action=open&val=1",function() { return false; });
	openReq.send(null);
}
function loadEl(el, url, cb) {
	if(!el || !url) { return false; }
	var req=getXML();
	req.onreadystatechange=function() {
		if(req.readyState==4 && req.status==200) {
			el.innerHTML=req.responseText;
			cb();
		}
	};
	req.open("GET",url);
	req.send(null);
}
function getXML() {
        try { httpreq=new XMLHttpRequest(); } catch(err) { try { httpreq=new ActiveXObject("Microsoft.XMLHTTP"); } catch(err) { try { httpreq=new ActiveXObject("Msxml2.XMLHTTP"); } catch(err) { } } }
        if(!httpreq) { alert("XMLHttpRequest not supported"); return false; }
        return httpreq;
}
function loadMessages(info) {
	var maxid=0;
	var el=document.getElementById("messages");
	var i,x;
	el.innerHTML+=info;
	el.scrollTop=el.scrollHeight;
	//Just in case, check to make sure no duplicates in messages div
	for(i=0;i<el.childNodes.length;i++) {
		var tId=parseInt(el.childNodes[i].id);
		var tEls=document.getElementsByName(tId.toString());
		if(tEls.length>1) {
			for(x=1;x<tEls.length;x++) {
				var tmpel=tEls[x];
				tmpel.parentNode.removeChild(tmpel);
			}
		}
		if(tId>maxid) { maxid=tId; }
	}
	lastID=maxid;
}
function pingIM() {
	uc++;
	if(uc==10) { reload_list(); uc=0; }
	if(messageReq) { return false; }
	messageReq=getXML();
	messageReq.onreadystatechange=function() {
		if(messageReq.readyState==4) { //Seperate block so we always clear messageReq when the request is finished, regardless of status
			if(messageReq.status==200) {
				if(messageReq.responseText.match("NEW:")) {
					var loadIt=messageReq.responseText.split("NEW:");
					loadIt=loadIt[1];
					loadMessages(loadIt);
				}
			}
			messageReq=null;
		}
	}
	messageReq.open("GET","http://s7icky.com/wp-content/plugins/ajaxchat/ajaxchat_ping.php?lastid="+lastID+"&t="+new Date().getTime());
	messageReq.send(null);
}
function msg_kp(el,e) {
	if(!e) { e=window.event; }
	if(e.keyCode==13 && el.value.length) { sendMsg(el.value); el.value=""; }
}
function sendMsg(txt) {
	var sendReq=getXML();
	sendReq.onreadystatechange=function() {
		if(sendReq.readyState==4 && sendReq.status==200) {
			if(sendReq.responseText.match("ERROR")) { alert("There was an error sending your message."+sendReq.responseText); return false; }
		}
	}
	var params="msg="+encodeURI(txt);
	params=params.replace("+","%2B"); //Replace any remaining plus signs, spaces should have been converted to %20, remaining plus signs are user inputted.
	sendReq.open("POST","http://s7icky.com/wp-content/plugins/ajaxchat//ajaxchat_xml.php?action=send",true);
	sendReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=ISO-8859-1");
	sendReq.setRequestHeader("Content-length", params.length);
	sendReq.setRequestHeader("Connection", "close");
	sendReq.send(params);
}
