var refreshInterval = 5000; //update in page as well. Hack, but fix later.
var refreshTimer = getTimer();
/*var reEnableRefreshInterval = 30000;
var refreshReEnableTimer = null;
var x=0;
function disableRefresh(){
	clearInterval(refreshTimer);
	if(refreshReEnableTimer != null)
		clearTimeout(refreshReEnableTimer);
	refreshReEnableTimer=setTimeout("enableRefresh();", reEnableRefreshInterval); //auto re-enable in 20 seconds.
	//ioStat('D');
}
function enableRefresh(){
	refreshTimer = getTimer();
	//ioStat('E');
}*/

//Called by refreshTimer- initialized from getTimer.
function doRefresh(){
	//ioStat('R');
	//location.reload(true); //WARNING: Erases what user has typed so far!
	
	loadChatMessages();
}

//Initializes refreshTimer to call doRefresh() at period of refreshInterval.
function getTimer(){
	return setInterval("doRefresh();",refreshInterval);
}

//Cross-browser method for obtaining AJAX XMLHTTP instance.
function getHttp(){
	var xmlHttp;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try {xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}
		catch (e) {
			try {xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}
			catch (e) {
				alert("Your browser does not support AJAX! Please upgrade your browser. Try Firefox at getfirefox.com.");
				return false;
			}
		}
	}
	return xmlHttp;
}

//Loads chat messages from /chat/latest.php by XMLHTTP, and sets it as the innerHTML (bleagh) of element with id=latest
function loadChatMessages(){
	var xmlHttp=getHttp();
	
	xmlHttp.onreadystatechange=function() {
		if(xmlHttp.readyState==4) {
			var node = document.getElementById("latest");
			
			//:( no innerdom for me... IE6 killed it.
			//while (node.firstChild) {node.removeChild(node.firstChild);}
			//var newDOM=stringToDOM(xmlHttp.responseText);
			//node.appendChild(newDOM);
			node.innerHTML=xmlHttp.responseText;
		}
	}
	var date = new Date(); //for fooling caching. I know it's a hack, but live with it.
	var timestamp = date.getTime();
	xmlHttp.open("GET","/chat/latest.php?"+timestamp,true);
	xmlHttp.send(null);
}

//Loads some filler HTML as the innerHTML (bleagh) of element with id=latest
function loadFillerText(){
	var filler="<img src=\"/images/chat-loading.gif\" ></img>";
	var node = document.getElementById("latest");
	while (node.firstChild) {node.removeChild(node.firstChild);}
	//node.appendChild(stringToDOM(filler));
	node.innerHTML=filler;

}

//Called by reload link. Loads filler text, waits a bit, and calls loadChatMessages().
function userReload(){
	loadFillerText();
	setTimeout('loadChatMessages()',1000);
}

//Clears id=chattools, makes chatAddImg be /images/add.gif.
function hideMessageAddBar(){
	var node = document.getElementById("chatTools");
	while (node.firstChild) {node.removeChild(node.firstChild);}
	var image = document.getElementById("chatAddImg");
	image.setAttribute("src", "/images/add.gif");

}

//Loads /chat/addform.inc.php by XMLHTTP, and sets it as the innerHTML (bleagh) of element with id=chatTools
function showMessageAddBar(){
	var xmlHttp=getHttp();
	xmlHttp.onreadystatechange=function() {
		if(xmlHttp.readyState==4) {
			var node = document.getElementById("chatTools");
			/*while (node.firstChild) {node.removeChild(node.firstChild);}
			var newDOM=stringToDOM(xmlHttp.responseText);
			node.appendChild(newDOM);*/
			node.innerHTML=xmlHttp.responseText;
		}
	}
	xmlHttp.open("GET","/chat/addform.inc.php",true);
	xmlHttp.send(null);
	var image = document.getElementById("chatAddImg");
	image.setAttribute("src", "/images/close.gif");

}

//Toggles message add bar.
var barShown=false;
function toggleMessageAddBar(){
	if(barShown)
		hideMessageAddBar();
	else
		showMessageAddBar();
	barShown=!barShown;
}

//Posts by XMLHTTP to url.
var http_request = false;
function makePOSTRequest(url, parameters) {
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
         	// set type accordingly to anticipated content type
            	//http_request.overrideMimeType('text/xml');
		http_request.overrideMimeType('text/html');
         	}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
               			http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert('Cannot create XMLHTTP instance. Please upgrade your browser.');
	return false;
	}
      
      	loadFillerText();
	http_request.onreadystatechange = alertContents;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	}

//Helper to makePOSTRequest.
function alertContents() {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			result = http_request.responseText;
			//document.getElementById('myspan').innerHTML = result;            
			//alert(result);
			document.getElementById("minichat_message").value="";
			setTimeout('loadChatMessages()',500);
		} else {
			alert('There was an error submitting the message. Maybe your browser is too old?');
		}
	}
}
   
//Posts chat form to URL, emulating the way stock minichat2 would do it.
function submitForm(obj) {
	var poststr = 	"minichat_nick=" +
				escape(encodeURI(
				document.getElementById("minichat_nick").value )
						) +
			"&minichat_message=" +escape(encodeURI( 
				document.getElementById("minichat_message").value )
						) + 
			"&minichat_md5=" +escape(encodeURI(
				document.getElementById("minichat_md5").value ));
	makePOSTRequest('/chat/minichat2.inc.php', poststr);
}

//For debug- print to document.
/*function ioStat(t){
	var newcontent = document.createElement('span'); 
	newcontent.id = "Span"+x++; 
	newcontent.appendChild(document.createTextNode(t)); 
	var scr = document.getElementById('stat'); 
	scr.parentNode.insertBefore(newcontent, scr);

}*/
