/*-----------------------------------------------------------------------------
Title: ajax_functions.js
Description: Create XMLHttpRequest objects and functions for using them.

LightCube Solutions, LLC
info@lightcubesolutions.com

Last Modified
-------------------------------------------------------------------------------
$Date$
$Author$
$Rev$
-----------------------------------------------------------------------------*/

// Some global variables
var xmlHttp;
var divId;
var wait_count;
var wait_action;
var timeout;

function GetXmlHttpObject() {
	xmlHttp=null;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		//Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}

function stateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var resp = xmlHttp.responseText;
		if (divId != null) {
			var domObj;
			if (domObj = document.getElementById(divId)) {
				domObj.innerHTML = resp;
				if (x = domObj.getElementsByTagName("script")) {
					for(var i=0;i<x.length;i++) {
						eval(x[i].text);
					}
				}
			}
		}
	}
}

function noAjax() {
	alert ("Browser does not support HTTP Request");
	return;
}

function loadAction(url, domObj, message) {
	wait_action = null;
	wait_count = null;
	if (timeout != '' && timeout != null) {
		clearTimeout(timeout);
	}
	var st = document.getElementById('status');
	st.innerHTML = message;
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null) {
		noAjax();
		return;
	}
	divId = domObj;
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("POST",url,true);
	xmlHttp.send(null);
}

function wait_a_sec (action, threshold) {
	var st = document.getElementById('status');
	var todo;
	
	if (wait_count == null || wait_count == '') {
		wait_count = threshold;
	}
	
	if (action != null && action != '') {
		wait_action = action;
	}

	switch (wait_count) {
		case 0:
		case null:
			todo = wait_action;
			wait_action = null;
			wait_count = null;
			st.innerHTML = 'Refreshing data...';
			break;
		case 1:
			st.innerHTML = 'Refreshing data in 1 second';	
			wait_count--;
			todo = 'wait_a_sec(null, null)';
			break;
		default:
			st.innerHTML = 'Refreshing data in '+wait_count+' seconds';
			wait_count--;
			todo = 'wait_a_sec(null, null)';
			break;
	}
	
	timeout = setTimeout(todo, 1000);
}
