var ajaxReqURLs = new Array();
var runningAjaxReqs = new Array();
var ajaxReqFunctions = new Array();
var nextFunctionAJAX = new Array();
var MouseXAJAX = new Array();
var MouseYAJAX = new Array();
var ajaxLoader ="<img src='../images/ajax-loader.gif' style='margin:auto;' />";
//var req=null;
//var formParent=null;
//var nextFunction=null;
function AJAXgetForm(formName){
	var and=false;
	var elements = document.forms[formName].elements;
	var url=elements["AJAXURL"].value;
	for(var i=0;i<elements.length;i++){
		if(elements[i].name=="")continue;
		if(elements[i].name=="AJAXURL")continue;
		var value="";
		if(elements[i].type=="text" || elements[i].type=="textarea" || elements[i].type=="password" || elements[i].type=="hidden"){
			var temp = elements[i].value;
			temp = escape(temp);//(/\&/,"%26");
			temp = temp.replace(/\+/g , "%2B");
			value += elements[i].name+"="+temp;
		}else if(elements[i].type=="checkbox"){
			if(!elements[i].checked)continue;
			value += elements[i].name+"="+elements[i].value;
		}else if(elements[i].type=="radio"){
			if(!elements[i].checked)continue;
			value += elements[i].name+"="+elements[i].value;
		}else if(elements[i].type=="select-one"){
			value += elements[i].name+"="+elements[i].value;
		}else if(elements[i].type=="submit"){
			value += elements[i].name+"="+elements[i].value;
		}else if(elements[i].type=="button"){
			value += elements[i].name+"="+elements[i].value;
		}else{
			alert(elements[i].name+" "+elements[i].type+" "+elements[i].value);
		}
		if(and)url +="&";
		else url += "?";
		url += value;
		and=true;
	}
	return url;
}
function AJAXsubmitForm(formName,target_id,nextFunction){
	url = AJAXgetForm(formName);
	AJAXloadHTMLinTarget(url,target_id,nextFunction,null);
/*	alert(url);
	formParent =document.getElementById(formName).parentNode;
	formParent.innerHTML=ajaxLoader;
	AJAXsendRequest(url,"AJAXprocessForm()");*/
}
function AJAXprocessForm(){
	var html = req.responseText;
	if(html==""){
		formParent=null;
		if(nextFunction!=null){
			eval(nextFunction);
			nextFunction=null;
		}
	}else{
		formParent.innerHTML="fehlerbehandlung!";
	}
}
function AJAXloadHTMLinTarget(url,target_id,nextFunction,e){
	AJAXsendRequest(url,"processReqLoadHTMLinTarget('"+target_id+"')",nextFunction,target_id,e);
}
function processReqLoadHTMLinTarget(target_id){
	var html = req.responseText;//alert(html);
	document.getElementById(target_id).innerHTML=html;
	AJAXevalScripts(document.getElementById(target_id));
}
function AJAXcreateXMLHttpRequest() {
	var req;
	try{
		req = new XMLHttpRequest();
	}catch (e){
		try{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}catch (e){
			try{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}catch (failed){
				 req = null;
				 alert("kein Ajax Request");
            }
        }
    }
	return req;
}
function AJAXevalScripts(html){
	var scripts = html.getElementsByTagName("script");
	for(var i=0;i<scripts.length;i++){
		eval(scripts[i].innerHTML);
	}
}
function AJAXsetRequestRunning(){
	var runningCount=0;
	for(var i=0;i<ajaxReqURLs.length;i++){
		var url = ajaxReqURLs[i];
		curReq = runningAjaxReqs[url];
		if(curReq==null)continue;
		/*0 : UNINITIALIZED/ 1 : LOADING/ 2 : LOADED/3 : INTERACTIVE/ 4 : COMPLETED */
		if(curReq.readyState == 4){
			ajaxReqURLs[i]=null;
			if(curReq.status == 200){
				var text = curReq.responseText;
				var indexOfError = text.indexOf("Exception");
				var indexOfLogin = text.indexOf("Login.jsp");
				if(indexOfError>-1){
					var errorText =text.substr(text.indexOf("<table"),text.length);
					document.getElementById("ajaxLoaderDiv").innerHTML=	errorText;
					showDiv("ajaxLoaderDiv");
				}else if(indexOfLogin>-1){
					window.location.reload();
					return;
				}else{
					req = runningAjaxReqs[url];
					eval(ajaxReqFunctions[url]);
					hideDiv("ajaxLoaderDiv");
					if(nextFunctionAJAX[url]!=null)eval(nextFunctionAJAX[url]);
				 }
				runningAjaxReqs[url]=null;
				ajaxReqFunctions[url]=null;
			}else if(curReq.status == 503){//server down
				window.location.reload();
			}else if(curReq.status == 0){//auch server down???
				window.location.reload();
			}else{
				alert("Request Fail: Statustext:"+curReq.statustext+" Status:"+curReq.status+" readyState"+curReq.readyState+"\nText:"+curReq.responseText);
			}
		}else{
			runningCount++;
		}
	}
	if(runningCount==0){
		ajaxReqURLs = new Array();
		ajaxReqFunctions = new Array();
		runningAjaxReqs[url]=new Array();
	}
}
function AJAXsendRequest(url,processReq,nextFunction,target_id,e){
	if(!e)e = window.event;
	var curReq = AJAXcreateXMLHttpRequest();
	if(url.indexOf("?")<0){	url+="?";
	}else{url+="&";}
	url+="rand="+(new Date()).getTime();
	ajaxReqURLs.push(url);
	runningAjaxReqs[url]=curReq;
	ajaxReqFunctions[url]=processReq;
	if(e!=null){
		MouseXAJAX[url]=e.clientX;
		MouseYAJAX[url]=e.clientY;
	}

	if(nextFunction!=null)nextFunctionAJAX[url]=nextFunction;
	var ajaxLoaderDiv = document.getElementById("ajaxLoaderDiv");
	if(ajaxLoaderDiv==null){
		ajaxLoaderDiv = document.createElement("div");
		ajaxLoaderDiv.id="ajaxLoaderDiv";
		document.getElementsByTagName("body")[0].appendChild(ajaxLoaderDiv);
	}
	if(ajaxLoaderDiv!=null){
		var top=0;
		var left=0;
		if(window.innerHeight !=null){
			top= (window.innerHeight/2) ;
			left= (window.innerWidth/2) -150;
		}else{
			top= (screen.availHeight/3+ document.body.scrollTop) ;
			left= (document.body.clientWidth/2) ;
		}

		for(var i=0;i<ajaxReqURLs.length;i++){
			var url = ajaxReqURLs[i];
			if(url==null)continue;
		}
		if(target_id!=null){
			var tempAjaxLoader="<div style='background:url(../images/ajax-loader.gif) center  no-repeat;";
			var targetWidth = parseInt(document.getElementById(target_id).style.width);
			var targetHeight = parseInt(document.getElementById(target_id).style.height);
			if(targetWidth>0){
				tempAjaxLoader +="width:"+targetWidth+"px;";
			}
			if(targetHeight>0){
				tempAjaxLoader +="height:"+targetHeight+"px;";
			}
			tempAjaxLoader +="' >"+"</div>";
			document.getElementById(target_id).innerHTML=tempAjaxLoader;
		}else{
			ajaxLoaderDiv.innerHTML+="<br />RQ"+url;
			ajaxLoaderDiv.innerHTML=ajaxLoader;
			ajaxLoaderDiv.style.position="absolute";
			ajaxLoaderDiv.style.top=top+"px";
			ajaxLoaderDiv.style.left=left+"px";
			showDiv("ajaxLoaderDiv");
		}
	}
	curReq.onreadystatechange=AJAXsetRequestRunning;
	curReq.open("GET",url,true);
	curReq.send(null);
}
var edit=0;
var a_links = new Array(document.getElementsByTagName("a").length);
function AJAXsetFormReadOnly(form){
	if(form.elements["oid_form"].value=="-1"){
		if(document.getElementById("ChangeButton")!=null)hideDiv("ChangeButton");
		if(document.getElementById("SaveButton")!=null)showDiv("SaveButton");
		return;
	}
	for(var i=0;i<form.elements.length;i++){
		element = form.elements[i];
		element.disabled=true;
		element.style.color='#000000';
		element.style.backgroundColor='#f0f0f0';
	}
	for(var i=0;i<document.getElementsByTagName("a").length;i++){
		if(a_links[i]==null || a_links[i]=="")continue;
		var atag = document.getElementsByTagName("a")[i];
		atag.href=a_links[i];
	}
	edit=0;
	if(document.getElementById("ChangeButton")!=null)document.getElementById("ChangeButton").innerHTML="bearbeiten";
	if(document.getElementById("SaveButton")!=null)hideDiv("SaveButton");
}
function AJAXbuttonChange(url,form){
	if(edit==0){
		changeFormAJAX =form;
		url += "&action=lock";
		AJAXsendRequest(url,"AJAXsetFormChange('"+form.id+"')",null);
	}else{
		setFormReadOnly(form);
		url += "&action=unlock";
		AJAXsendRequest(url,"");
	}
}
function AJAXsetFormChange(form_id){
	var error = getNodeValue(req.responseXML,"Error");
	if(error!=null){
		alert(error);
		return;
	}
	//daten noch mal neu laden!!!!!!!!!!!!!!!!!!!
	var changeFormAJAX= document.getElementById(form_id);
	for(var i=0;i<changeFormAJAX.elements.length;i++){
		element = changeFormAJAX.elements[i];
		element.disabled=false;
		element.style.color="#000000";
		element.style.backgroundColor='#FFFF99';
	}
	for(var i=0;i<document.getElementsByTagName("a").length;i++){
		var atag = document.getElementsByTagName("a")[i];
		a_links[i]=atag.href;
		atag.href='javascript:alert("Bitte erst speichern oder abbrechen")';
	}
	if(document.getElementById("SaveButton")!=null)showDiv("SaveButton");
	edit=1;
	if(document.getElementById("ChangeButton")!=null)document.getElementById("ChangeButton").innerHTML="abbrechen";
}
function AJAXsetFormChange(form){
	for(var i=0;i<form.elements.length;i++){
		element = form.elements[i];
		element.disabled=false;
		element.style.color="#000000";
		element.style.backgroundColor='#FFFF99';
	}
	for(var i=0;i<document.getElementsByTagName("a").length;i++){
		var atag = document.getElementsByTagName("a")[i];
		a_links[i]=atag.href;
		atag.href='javascript:alert("Bitte erst speichern oder abbrechen")';
	}
	if(document.getElementById("SaveButton")!=null)showDiv("SaveButton");
	edit=1;
	if(document.getElementById("ChangeButton")!=null)document.getElementById("ChangeButton").innerHTML="abbrechen";
}
function showAJAXWindow(width,height,top,left){
	if(top<0)top=5;
	if(left<0)left=5;
	document.getElementById('AJAXWindow').style.left=left+"px";
	document.getElementById('AJAXWindow').style.top=top+"px";
	document.getElementById('AJAXWindow').style.height=height+"px";
	document.getElementById('AJAXWindow').style.width=width+"px";
	showDiv('AJAXWindow');
}
function showAJAXWindow2(width,height,top,left){
	if(top<0)top=5;
	if(left<0)left=5;
	document.getElementById('AJAXWindow2').style.left=left+"px";
	document.getElementById('AJAXWindow2').style.top=top+"px";
	document.getElementById('AJAXWindow2').style.height=height+"px";
	document.getElementById('AJAXWindow2').style.width=width+"px";
	showDiv('AJAXWindow2');
}


function AJAXloadHTMLvideoBlock(url,target_id,nextFunction,e){
	AJAXsendRequest(url,"processReqLoadHTMLinTarget('"+target_id+"')",nextFunction,target_id,e);
}
function processReqLoadHTMLvideoBlock(target_id){
	var html = req.responseText;//alert(html);
	document.getElementById(target_id).innerHTML=html;
}