//Ladegrafik
var ajaxLoadImg = "<img src=\"./images/loading.gif\" alt=\"\" />";
//Serialisierung der Requests
var ajaxQueue = new Array();

var ajaxDebug = "";

//AjaxDatenabruf und Anzeige der Daten
//
//param string dataSource URL mit Query an den AjaxReplier
//param string objID LayerID dessen Inhalt aktualisiert werden soll
//param string streamType Flag f�r Gewichtung der Datenprozesse
//return void
//
function ajaxGetData(dataSource,objID,streamType)
{
	//Initialisierung Ajax-Object
	var XMLHttpRequestObject = false;
	if(window.XMLHttpRequest) XMLHttpRequestObject = new XMLHttpRequest();
	else if(window.ActiveXObject) XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
	
	if(XMLHttpRequestObject)
	{
		//Call f�r zu �ndernden Layer
		var obj = document.getElementById(objID);
		//Request senden
		XMLHttpRequestObject.open("GET",dataSource);
		//Listener f�r Antwort
		XMLHttpRequestObject.onreadystatechange = function()
		{
			//Positive Antwort
			if(XMLHttpRequestObject.readyState==4 && XMLHttpRequestObject.status==200) 
			{
				//Falls der Timer �berpr�ft wurde
				obj.innerHTML = XMLHttpRequestObject.responseText;
				zeit = new Date();
				ajaxDebug+= "Response: "+XMLHttpRequestObject.responseText+"<br />\n";
				ajaxDebug+= "getEnd:"+zeit.getHours()+":"+zeit.getMinutes()+":"+zeit.getSeconds()+":"+zeit.getMilliseconds()+" - "+dataSource+"<br />";//+XMLHttpRequestObject.responseText+"<br />\n<br />\n";
				ajaxProcessQueue(false);
				if(streamType=="reload") rewriteImages();
			}	
		}
		XMLHttpRequestObject.send(null);
	}
}

//AjaxAufruf zum Senden der Formulardaten
//
//param string target URL mit Query an den AjaxReplier
//param string Formularname dessen Inhalt verarbeitet werden soll
//param string streamType Flag f�r Gewichtung der Datenprozesse momentan obsolet
//return void
//
function ajaxPostData(target,objID)
{
	//Wenn das Formular nicht leer war
	postData = ajaxBuildPostData("formular");
	if(postData!="")
	{
		//Initialisierung Ajax-Object
		var XMLHttpRequestObject = false;
		if(window.XMLHttpRequest) XMLHttpRequestObject = new XMLHttpRequest();
		else if(window.ActiveXObject) XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
		
		if(XMLHttpRequestObject)
		{
			//Senden der Datenvorbereiten
			XMLHttpRequestObject.open("POST",target);
			XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			//Warten auf Okay
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if(XMLHttpRequestObject.readyState==4 && XMLHttpRequestObject.status==200) 
				{
					ajaxDebug+= XMLHttpRequestObject.responseText+"1<br />";
				}
				else ajaxDebug+= "No Connection established to <a href=\""+target+"\" target=\"_blank\">"+target+"</a>.<br />";
			}
			//Senden
			XMLHttpRequestObject.send(postData);
			//Warten auf Empfangsbest�tigung
			XMLHttpRequestObject.onreadystatechange = function()
			{
				if(XMLHttpRequestObject.readyState==4)
				{
					if(XMLHttpRequestObject.status==200) 
					{
						if(obj!="")
						{
							var obj = document.getElementById(objID);
							obj.innerHTML = XMLHttpRequestObject.responseText;
						}
					}
					zeit = new Date();
					ajaxDebug+= "PostEnd:"+zeit.getHours()+":"+zeit.getMinutes()+":"+zeit.getSeconds()+":"+zeit.getMilliseconds()+" - "+target+"<br />";
					ajaxDebug+= "Response:<br />"+XMLHttpRequestObject.responseText+"<br />";
					//ajaxDebug+= postData+"<br />";
					ajaxProcessQueue(false);	
				}				
			}	
		}
	}
	else
	{
		zeit = new Date();
		ajaxDebug+= "PostEnd:"+zeit.getHours()+":"+zeit.getMinutes()+":"+zeit.getSeconds()+":"+zeit.getMilliseconds()+" - "+target+"<br />";
		ajaxProcessQueue(false);	
	}
}

function ajaxBuildPostData(form)
{
	//Nimmt die Formulardaten auf
	var data = new Array();
	//Auslesen der Formulardaten
	if(document.forms[form].elements.length>0) 
	{
		try
		{
			for(i in document.forms[form].elements)			
			{
				try
				{
					ajaxDebug+= document.forms[form].elements[i].name+"\n"
					if(typeof document.forms[form].elements[i]!="undefined")
					{
						try
						{
							if(document.forms[form].elements[i].name!="item")
							{
								try
								{
									if(document.forms[form].elements[i].name!="namedItem")
									{
										if(document.forms[form].elements[i].type=="radio")
										{
											if(!data[document.forms[form].elements[i].name]) data[document.forms[form].elements[i].name] = -1;
											if(document.forms[form].elements[i].checked) data[document.forms[form].elements[i].name] = document.forms[form].elements[i].value;
										}
										else if(document.forms[form].elements[i].type=="checkbox") data[document.forms[form].elements[i].name] = ((document.forms[form].elements[i].checked)?document.forms[form].elements[i].value:"");
										else data[document.forms[form].elements[i].name] = document.forms[form].elements[i].value;
									}
								}
								catch(e)
								{
									ajaxDebug+= "No Name namedItem:"+e+"\n";
								}
							}
						}
						catch (e)
						{
							ajaxDebug+= "No Name Item:"+e+"\n";
						}
					}
				}
				catch (e)
				{
					ajaxDebug+= "No Name Undefined:"+e+"\n";
				}
			}
		}
		catch (e)
		{
			ajaxDebug+= "No Elements:"+e+"\n";
		}
	}
	//alert(debug);
	//Aufbauen des Datenstrings zum Senden
	var str = "";
	for(i in data) str+= ((str=="")?"":"&")+i+"="+data[i];
	return str;
}

//Queue abarbeiten
//
//return void
//
function ajaxProcessQueue(init)
{
	if(!init) ajaxQueue.shift();
	else
	{
		ajaxDebug = "";
	}
	for(i in ajaxQueue)	ajaxDebug+= i+": "+ajaxQueue[i][0]+" - "+ajaxQueue[i][2]+"<br />";
	ajaxDebug+= "&nbsp;<br />";
	if(ajaxQueue.length>0)
	{
		zeit = new Date();
		ajaxDebug+= "start:"+zeit.getHours()+":"+zeit.getMinutes()+":"+zeit.getSeconds()+":"+zeit.getMilliseconds()+" - "+ajaxQueue[0][0]+" - "+ajaxQueue[0][2]+"<br />";
	
		if(ajaxQueue[0][2]=="post") ajaxPostData(ajaxQueue[0][0],ajaxQueue[0][1]);
		else ajaxGetData(ajaxQueue[0][0],ajaxQueue[0][1],ajaxQueue[0][2]);	
	}
	else
	{
		if(document.getElementById("loading")) document.getElementById("loading").innerHTML = "&nbsp;";
		//document.getElementById("debug").innerHTML = ajaxDebug+"<br />"+ajaxQueue.length;
		//document.getElementById("infoboxContainer").innerHTML = ajaxDebug+"<br />";
	}
}

function ajaxLoadImages()
{
	if(ajaxQueue.length>0) return;
	document.getElementById("loading").innerHTML = ajaxLoadImg;
	ajaxQueue.push(new Array(replaceBase+"AjaxReplier.php5?get=images&index="+document.formular.pathSelect.selectedIndex,"imageList","std"));
	ajaxProcessQueue(true);
}

function ajaxLoadFiles()
{
	if(ajaxQueue.length>0) return;
	document.getElementById("loading").innerHTML = ajaxLoadImg;
	ajaxQueue.push(new Array(replaceBase+"AjaxReplier.php5?get=files&index="+document.formular.pathSelect.selectedIndex,"imageList","std"));
	ajaxProcessQueue(true);
}

function ajaxLoadInfo(pid,mid,index)
{
	if(ajaxQueue.length>0) return;
	ajaxQueue.push(new Array(replaceBase+"AjaxReplier.php5?get=infoNavi&pid="+pid+"&mid="+mid+"&info="+index,"infoboxNavi","std"));
	ajaxQueue.push(new Array(replaceBase+"AjaxReplier.php5?get=infoContent&pid="+pid+"&mid="+mid+"&info="+index,"infoboxContent","reload"));
	ajaxProcessQueue(true);
}

function ajaxLoadImageSelection(formular,target,layer,maxSize)
{
	if(ajaxQueue.length>0) return;
	document.getElementById("loading").innerHTML = ajaxLoadImg;
	f = eval("document."+formular);
	ajaxQueue.push(new Array(replaceBase+"AjaxReplier.php5?get=imgSelect&index="+f.pathSelect.selectedIndex+"&formular="+formular+"&target="+target+"&layer="+layer+"&maxSize="+maxSize,"imgList","std"));
	ajaxProcessQueue(true);
}

function ajaxLoadLinkSelection(formular,layer)
{
	if(ajaxQueue.length>0) return;
	document.getElementById("loading").innerHTML = ajaxLoadImg;
	f = eval("document."+formular);
	target = f.linkSelectTarget.value;
	ajaxQueue.push(new Array(replaceBase+"AjaxReplier.php5?get=linkSelect&index="+f.pathSelect2.selectedIndex+"&formular="+formular+"&target="+target+"&layer="+layer,"linkList","std"));
	ajaxProcessQueue(true);
}
