var lbto;
function AJAXInteraction(url, callback) 
{
    var req = init();
    req.onreadystatechange = processRequest;
    function init() 
    {
    	if (window.XMLHttpRequest) 
    	{
    		return new XMLHttpRequest();
    	} 
    	else if (window.ActiveXObject) 
    	{
    		return new ActiveXObject("Microsoft.XMLHTTP");
    	}
    }
    
    function processRequest () 
    {
    	if (req.readyState == 4) 
    	{
    		if (req.status == 200) 
    		{
    			hideloading();
    			if (callback) 
    				callback(req.responseText);
    		}
    	}
    }
    
    this.doGet = function() 
    {
    	req.open("GET", url, true);
    	req.send(null);
    }
    
    this.doGetNow = function() 
    {
    	req.open("GET", url, false);
    	req.send(null);
    	return(req.responseText);
    }
    
    this.doPost = function(params) 
    {
    	req.open("POST", url, true);
    	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	req.setRequestHeader("Content-length", params.length);
    	req.setRequestHeader("Connection", "close");
    	req.send(params);
    }
    
    this.doPostNow = function(params) 
    {
    	req.open("POST", url, false);
    	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	req.setRequestHeader("Content-length", params.length);
    	req.setRequestHeader("Connection", "close");
    	req.send(params);
    	return(req.responseText);
    }
}

function ajax(url,resp,noload)
{
	var temp = new AJAXInteraction(url,resp);
	temp.doGet();
	hideloading();
	if(!noload) 
		showloading();
}

function simpleajax(url)
{
	var temp = new AJAXInteraction(url);
	return (temp.doGetNow());
}

function postajax(url,param,resp)
{
	var temp = new AJAXInteraction(url,resp);
	return (temp.doPost(param));
}

function postsimpleajax(url,param)
{
	var temp = new AJAXInteraction(url);
	return (temp.doPostNow(param));
}

function hideloading()
{
	if(document.getElementById('loadingbar'))
	{
		document.getElementById('loadingbar').style.display = 'none';
		if(lbto)
			clearTimeout(lbto);
	}
}

function showloading()
{
	if (document.getElementById('loadingbar'))
	{
		document.getElementById('loadingbar').style.display = '';
	}
	else
	{
		temp = document.createElement('div');
		temp.setAttribute('id','loadingbar');
		temp.innerHTML += '<table width=50 cellspacing=0 cellpadding=3 border=0 bordercolor=black><tr><td bgcolor=yellow><font face="Arial">Loading...</font></td></tr></table>';
		temp.style.position = 'absolute';
		temp.style.top = document.body.scrollTop + 5;
		temp.style.left = document.body.scrollLeft + 5;
		document.body.appendChild(temp);
	}
	fixloadingpos();
}

function fixloadingpos()
{
	if(document.getElementById('loadingbar'))
	{
		document.getElementById('loadingbar').style.top = document.body.scrollTop + 5;
		document.getElementById('loadingbar').style.left = document.body.scrollLeft + 5;
	}
	if(lbto) 
		clearTimeout(lbto);
	lbto = setTimeout('fixloadingpos()',300);
}