function createREQ() {
try {
     req = new XMLHttpRequest(); /* e.g. Firefox */
     } catch(err1) {
       try {
       req = new ActiveXObject('Msxml2.XMLHTTP'); /* some versions IE */
       } catch (err2) {
         try {
         req = new ActiveXObject("Microsoft.XMLHTTP"); /* some versions IE */
         } catch (err3) {
          req = false;
         }
       }
     }
     return req;
}
function requestGET(url, query, req) {
myRand=parseInt(Math.random()*99999999);
req.open("GET",url+'?'+query+'&rand='+myRand,true);
req.send(null);
}
function requestPOST(url, query, req) {
req.open("POST", url,true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(query);
}

function doCallback(callback,p_items)
{
	var pos_1, pos_2, differ;
	var evalcall;
	callback=callback.replace(/[/]/g,"'");
	pos_1=callback.search(/\(/);
	pos_2=callback.search(/\)/);
	differ=pos_2-pos_1;
	if(differ>1)
	{
		evalcall=callback.substring(0,pos_2)+',p_items)';
	}
	else
	{
		evalcall=callback.substring(0,pos_2)+'p_items)';
	}
	eval(evalcall);
}

function doAjax(url,query,callback,reqtype,getxml,view_item,disable_item) {
var myreq = createREQ();
myreq.onreadystatechange = function() {
	if(myreq.readyState == 4)
	{
		if(myreq.status == 200)
		{
			var respon_items;
			if(getxml==1)
			{
				respon_items = myreq.responseXML;
			}
			else
			{
      			respon_items = myreq.responseText;
			}
			ajaxWaiter(view_item, disable_item, false);
			doCallback(callback, respon_items);
		}
		else
		{
			if(myreq.status == 404)
			{
				alert("Error, File not found...");
			}
			else if(myreq.status == 500)
			{
				alert("Internal server Error...");
			}
			else
			{
				alert("I can't serve your request... please try again...\r\nif the problem still exist please contact your \"IT-Support\"...");
			}
			ajaxWaiter(view_item, disable_item, false);
		}
	}
	else
	{
		waitLayer();
		ajaxWaiter(view_item, disable_item, true);
	}
}
if(reqtype=='post')
{
	requestPOST(url,query,myreq);
}
else
{
	requestGET(url,query,myreq);
}
}

function ajaxWaiter(view_element, disable_element, waitstatus)
{
	if(waitstatus==true)
	{
		for(a=0; a<view_element.length; a++)
		{
			document.getElementById(view_element[a]).style.display='';
		}
		for(a=0; a<disable_element.length; a++)
		{
			document.getElementById(disable_element[a]).disabled = true;
		}
	}
	else
	{
		for(a=0; a<view_element.length; a++)
		{
			document.getElementById(view_element[a]).style.display='none';
		}
		for(a=0; a<disable_element.length; a++)
		{
			document.getElementById(disable_element[a]).disabled = false;
		}
	}
}

function myarr(ary)
{
	for(a=0; a<ary.length ; a++)
	{
		alert(ary[a]);
	}
}
function waitAjax(elementid, waitstatus, actbutton)
{
	if(waitstatus==true)
	{
		if(actbutton!='')
		{
			document.getElementById(actbutton).disabled = true;
		}
		document.getElementById(elementid).style.display='';
	}
	else
	{
		document.getElementById(elementid).style.display='none';
		if(actbutton!='')
		{
			document.getElementById(actbutton).disabled = false;
		}
	}
}