//--------------------------------------------------------------------------------- 
//--------------------------------------------------------------------------------- 
//=========================================================================================== LOAD AND RUN
//--------------------------------------------------------------------------------- 
//--------------------------------------------------------------------------------- 

var tasks = new Array();
window.req_state_xmlHTTp_and_run = 0;

//=================================================================================
function callTask()
{

	st = window.req_state_xmlHTTp_and_run;
	if(((st == null)||(st == 4)||(st == 0)) && (tasks.length > 0))
	{
		x = tasks.shift();
		loadRunTask(x['url'],x['tab'],x['jsc']);
		if(tasks.length >0)
		{
			setTimeout('callTask();',10);
		}
	}else{
		if(tasks.length >0)
		{
			setTimeout('callTask();',10);
		}
	}

}
//=================================================================================
function loadRun(url,tab,jscript)
{	
	var key = document.getElementById('key');
	key = (key)?key.innerHTML:0;
					 
	if(url.substring(0,12) != 'actions.php?')
	{
		url = 'actions.php?'+url;
	}
	
	url = url.replace(/&amp;/g,'&')+'&key='+key;
	
	var x = new Array();

	x['url']  = url;
	x['tab']  = tab;
	x['jsc']  = jscript;
	
	tasks.push(x);

	if(typeof tab != 'undefined')
	{
		loadingbar = document.getElementById('loading');
		if(loadingbar)
			{ loadingbar.setAttribute('style','display:block;'); }
	}

	callTask();
}
//=================================================================================
function loadRunTask(url,tab,jscript)
{
	xmlHTTp_and_run=GetXmlHttpObject()
	function stateChanged(){ 
		window.req_state_xmlHTTp_and_run = xmlHTTp_and_run.readyState;
		if (xmlHTTp_and_run.readyState==4)
		{
			if(xmlHTTp_and_run.responseText == 'reload...')
			{
				window.open('index.php','_self');
			}else{
				loadinto = null;
				if(tab && (tab !=''))
					{ loadinto = document.getElementById(tab); }
				
				if (loadinto)
					{ loadinto.innerHTML=xmlHTTp_and_run.responseText; }
	
				if (jscript )
					{ eval(jscript);}
				
				if(tasks.length == 0)
				{
					loadingbar = document.getElementById('loading');
					if(loadingbar)
						{ loadingbar.setAttribute('style','display:none;'); }
						
					initAll(); // ------- init all loaded elements in the end ---
					loadmessages();
				}
			}
		}
	}
	if (xmlHTTp_and_run==null){
	  alert ("Your browser does not support AJAX!");
	  return;
	} 
	
	if(tab == 'tabcontent')
	{
		url += '&tabcontent=1'
	}
	
	xmlHTTp_and_run.onreadystatechange=stateChanged;
	xmlHTTp_and_run.open("GET",url,true);	
	xmlHTTp_and_run.send(null); 
}
//=================================================================================
function GetXmlHttpObject()
{
var 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 loadmessages()
{
	xmlHTTp_mess=GetXmlHttpObject()
	function mess_stateChanged()
	{ 
		if (xmlHTTp_mess.readyState==4)
		{
	
			rtext = xmlHTTp_mess.responseText;
	
			if (rtext.indexOf('code class=')>0)
			{
				rtext = rtext.replace(/(<([^>]+)>)/ig,"");
				rt = rtext.split("alert('");
				for( var i = 0; i<rt.length; i++)
				{
					if(rt[i].length>0)
					alert(rt[i].replace(/(\'\)\;)/ig,""));
				}
			}else{
				loadinto = document.getElementById('messages');
				if (loadinto)
				{ 
					loadinto.innerHTML=rtext; 
					if (trim(rtext)!='')
					{
						messagehide(); 
					}
				}
			}

		}
	}
	if (xmlHTTp_mess==null){
	  alert ("Your browser does not support AJAX!");
	  return;
	} 
	xmlHTTp_mess.onreadystatechange=mess_stateChanged;
	xmlHTTp_mess.open("GET",'messages.php',true);	
	xmlHTTp_mess.send(null); 
}
