/* ajax functions */
function dataManager(div_id) {
	var self = this;
	self.eReqCompleted = null;
	this.eReqCompleted = self.eReqCompleted;
	self.eReqFailed    = null;
	this.eReqFailed    = self.eReqFailed;

	this.dataHandler = function(req) {
		var dataHandler = function() {
			if (req.readyState == 4) {
				if (req.status == 200) {
					self.eReqCompleted(req, div_id);
				}
				else {
					self.eReqFailed(req, div_id);
				}
			}
		}
		dataHandler.req           = req;
		dataHandler.eReqCompleted = self.eReqCompleted;
		dataHandler.eReqFailed    = self.eReqFailed;
		return dataHandler;
	}

	this.InitiateXmlHttpRequest = function() {
		var req = null;
		try	{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(oc)	{
				req = null;
			}
		}
		if ( !req && typeof(XMLHttpRequest) != "undefined") {
			req = new XMLHttpRequest();
		}
		return req;
	}

	this.loadData = function(dataSource) {
		var req = this.InitiateXmlHttpRequest();
		if (req != null){
			try	{
				req.onreadystatechange = this.dataHandler(req);
				req.open('GET', dataSource, true);
				req.send(null);
			}
			catch(oc)	{
				alert(oc);
			}
		}
	}
}

function failed(req, div_id) {
	document.getElementById(div_id).innerHTML = 'err';
}

function completed(req, div_id) {
	//document.getElementById(div_id).innerHTML = req.responseText;
	var data = req.responseText.split("||JavaScriptCode||");
	document.getElementById(div_id).innerHTML = data[0];
	eval(data[1]);
}

function ajax(URL, div_id, disable_loader) {
    // if you don't want the loader to appear set the 3rd parameter to any value
	if (disable_loader == null) {
	    loading(div_id);
	}
    else if( disable_loader == 'clear' )
    {
        clear(div_id);
    }
	var dm = new dataManager(div_id);
	dm.eReqCompleted = completed;
	dm.eReqFailed = failed;
	dm.loadData(URL);
}

function clear(div_id) {
    // if you want to clear the div before loading ajax content set disable_loader parameter to 'clear'
    
  	if (!document.getElementsByTagName) return false;
  	if (!document.getElementById) return false;
  	if (!document.getElementById(div_id)) return false;
  	var div = document.getElementById(div_id);
    
    div.innerHTML = '';
}

function loading(div_id) {
    // replaces the data in the div with the loading sign
    
    // first lets make sure the browser understands the DOM methods we will be using
  	if (!document.getElementsByTagName) return false;
  	if (!document.getElementById) return false;
  	
  	// make sure the div exists
  	if (!document.getElementById(div_id)) return false;
  	var div = document.getElementById(div_id);
  	
  	var old_height = div.clientHeight;
  	
  	// remove all child nodes
  	while (div.firstChild) 
    {
        div.removeChild(div.firstChild);
    }
    
    // add the loading element
    var loading = document.createElement("div");
  	loading.className = "loading";
  	if (old_height > 16) {
  	    loading.style.height = old_height+"px";
  	}
  	div.appendChild(loading);
    
}
