		
// remote scripting library
// (c) copyright 2005 modernmethod, inc
// var sajax_debug_mode = false;
// var sajax_request_type = "GET";
// var sajax_target_id = "";
// var sajax_failure_redirect = "";
// var active=true;

// needed data
var printOutVar = new Object();
var classfilter ;
var ListIDs = new Array();
/** trim hilfsfuntkion

// */

function outputError(res1,res2) {
	if (res1=="Error") {
	if (res2=="Reload") {
		alert("Ihre Sitzung ist abgelaufen, bitte melden Sie sich erneut an!");
		reloadPage();
	} else {
		alert("Fehler: \n "+res2);
	}
	}
}

function addRow(line) {
var table=getElementById("Maintable");
var newRow=table.insertRow(table.rows.length);
var newTD;
var newText;
// alert(line[0]);
	newRow.id="Row_"+line[0];
	for (var i=0;line.length>i;i++) {
// 	;
// 	newTD=newRow.create('td',NULL,true);
	
	var newTD=document.createElement("td");
	var thisid=("S"+line[0]+"_"+columns[i]);
	
// 	var newDIV=document.createElement("div");
	newTD.id=thisid;
	newTD.arg1=funcs[i];
	newTD.onclick=function() {
	editCell(this.arg1,this.id);};
	//newTD.appendChild(newDIV);
	
	newRow.appendChild(newTD);
// 	alert($$(thisid));
	if (i==1) { // sonderfall, printout!
	$$(thisid).create("input",{type:"checkbox",id:"S"+line[0]+"_printBox"},true);

// 	var newText=document.createElement("input");
// 	newText.id=line[0]+"_printBox";
// 	newText.setAttribute('type',"checkbox");
	} else if (i==(line.length-2)) {
// 	var newText=document.createTextNode(line[i]);
// // 	(how do i add html here Wichtig!!
		
		if (line[(i-2)]!="0") {
// 			alert(line[(i-2)]);
			$$(thisid).create("a",{href: '#',onclick:"createReceipt('S"+line[0]+"_receipt',this)"},true,"erstellen");
			$("#"+thisid+" a").addEvent("click",function(){createReceipt("S"+line[0]+"_receipt",this)});
			
		}
// 		$$(thisid).create("
	} else if (i==(line.length-1)) {
// <a href="#" onClick="askDelete('50')" style="border:none"><img src="images/x.gif" style="border:none" alt="delete"></a>
// new Function ("evt", topArray[j]["a_onclick"]);
		$$(thisid).create("a",{href: '#'},true).create("img",{src:"images/x.gif",alt:"delete",style: "border: none"},true);
		$("#"+thisid+" a").addEvent("click",function(){askDelete(line[0]);});
	} else {
		if (typeof(line[i])=="number" && line[i]==0) {
			$$(thisid).addContent("0");
		} else {
			$$(thisid).addContent(line[i]);
		}
		
	}
	}



}


/** reload the page

*/

function reloadPage() {
	location.reload();

}
		function sajax_debug(text) {
			if (sajax_debug_mode)
				alert(text);
		}
		
 		function sajax_init_object() {
 			sajax_debug("sajax_init_object() called..")
 			
 			var A;
 			
 			var msxmlhttp = new Array(
				'Msxml2.XMLHTTP.5.0',
				'Msxml2.XMLHTTP.4.0',
				'Msxml2.XMLHTTP.3.0',
				'Msxml2.XMLHTTP',
				'Microsoft.XMLHTTP');
			for (var i = 0; i < msxmlhttp.length; i++) {
				try {
					A = new ActiveXObject(msxmlhttp[i]);
				} catch (e) {
					A = null;
				}
			}
 			
			if(!A && typeof XMLHttpRequest != "undefined")
				A = new XMLHttpRequest();
			if (!A)
				sajax_debug("Could not create connection object.");
			return A;
		}
		
		var sajax_requests = new Array();
		
		function sajax_cancel() {
			for (var i = 0; i < sajax_requests.length; i++) 
				sajax_requests[i].abort();
		}
		
		function sajax_do_call(func_name, args) {
			var i, x, n;
			var uri;
			var post_data;
			var target_id;
			
			sajax_debug("in sajax_do_call().." + sajax_request_type + "/" + sajax_target_id);
			target_id = sajax_target_id;
			uri = mainUri;
			if (typeof(sajax_request_type) == "undefined" || sajax_request_type == "") 
				sajax_request_type = "GET";
			
			
			if (sajax_request_type == "GET") {
				
				if (uri.indexOf("?") == -1) 
					uri += "?rs=" + escape(func_name);
				else
					uri += "&rs=" + escape(func_name);
				uri += "&rst=" + escape(sajax_target_id);
				uri += "&rsrnd=" + new Date().getTime();
				
				for (i = 0; i < args.length-1; i++) 
					uri += "&rsargs[]=" + escape(args[i]);

				post_data = null;
			} 
			else if (sajax_request_type == "POST") {
				post_data = "rs=" + escape(func_name);
				post_data += "&rst=" + escape(sajax_target_id);
				post_data += "&rsrnd=" + new Date().getTime();
				
				for (i = 0; i < args.length-1; i++) 
					post_data = post_data + "&rsargs[]=" + escape(args[i]);
			}
			else {
				alert("Illegal request type: " + sajax_request_type);
			}
			
			x = sajax_init_object();
			if (x == null) {
				if (sajax_failure_redirect != "") {
					location.href = sajax_failure_redirect;
					return false;
				} else {
					sajax_debug("NULL sajax object for user agent:\n" + navigator.userAgent);
					return false;
				}
			} else {
				x.open(sajax_request_type, uri, true);
				// window.open(uri);
				
				sajax_requests[sajax_requests.length] = x;
				
				if (sajax_request_type == "POST") {
					x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
					x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				}
			
				x.onreadystatechange = function() {
					if (x.readyState != 4) 
						return;

					sajax_debug("received " + x.responseText);
				
					var status;
					var data;
					var txt = x.responseText.replace(/^\s*|\s*$/g,"");
					status = txt.charAt(0);
					data = txt.substring(2);

					if (status == "") {
						// let's just assume this is a pre-response bailout and let it slide for now
					} else if (status == "-") 
						alert("Error: " + data);
					else {
						if (target_id != "") 
							getElementById(target_id).innerHTML = eval(data);
						else {
							try {
								var callback;
								var extra_data = false;
								if (typeof args[args.length-1] == "object") {
									callback = args[args.length-1].callback;
									extra_data = args[args.length-1].extra_data;
								} else {
									callback = args[args.length-1];
								}
								callback(eval(data), extra_data);
							} catch (e) {
								sajax_debug("Caught error " + e + ": Could not eval " + data );
							}
						}
					}
				}
			}
			
			sajax_debug(func_name + " uri = " + uri + "/post = " + post_data);
			x.send(post_data);
			sajax_debug(func_name + " waiting..");
			delete x;
			return true;
		}
		
				
		// wrapper for update		
		function x_update() {
			sajax_do_call("update",
				x_update.arguments);
		}
		
	/*
		Callback Function, has to be passed to the Wrapper Funtction.
		is called on return from the php and handels the outputting
	*/	 
	function update_cb(res) {
		var result_array=res.split("~~");
		for (var i=0; i<result_array.length; ++i) {
			
		 	var temp_array=result_array[i].split("|");
			if (temp_array[0]=="length") {
				reloadPage();
			} 
			temp_array[0]=temp_array[0].replace(/input/,"");
			if (temp_array[1]=="") {
				temp_array[1]="";
			}
			getElementById(temp_array[0]).innerHTML=temp_array[1];
			getElementById(temp_array[0]).onClick="editCell('updapte','"+temp_array[0]+"');return false;";
		}
		
	}

	function neu_cb(res) {
		// ich glaub, ich mach das ganz am sinnvollsten mit einm reload..zumindestens erstmal
// 		alert("Laeufer angelegt!");
		// 0: SID, 1: KID, 2: Name, 3: Firstname
// 		alert("we are here: "+keepnew);	
// 			alert("blup");
// 			alert(res);
			
			var tempArr=res.split("|");
			if (tempArr.length<=0 || tempArr[0]=="Error") {
				outputError(tempArr[0],tempArr[1]);
			} else {
			var line=new Array(tempArr[0],"",tempArr[1],tempArr[2],tempArr[3],0,0,0,0," "," ");
			line[10]="blup";
			// i will need a function to add the class to my list of classes, but for now i will stick like this.
			var i=0;
			var found=0;
			for (key in classes) {	// iterate through the classes array
				if (classes[key]==tempArr[1]) {
					$$("S_classinput").select=i;
					found=1;
				}
				i=i+1;
			}
			if (found==0) { // nicht gefunden, besser hinzufügen
				$("#S_classinput").create("option",{selected: true,value: tempArr[1]},true,tempArr[1]);
			}
			addRow(line);
			$$("reportNew").replaceContent("letzter angelegter L&auml;ufer: "+tempArr[2]+", "+tempArr[3]);
			}
			$$(document).elmsByClass("dynaInput").each(function () {
			
				this.value="";
				
			});
			if (tempArr[0]==1) {
				reload();
			}
			$$("S_nameinput").focus();
	}

	function class_cb(res) {
		
		var temp_array=res.split("|");
		if (temp_array.length>2) { // ah, wir haben noch ne KID dabei, ist also ein neuer Eintrag!
			classes[temp_array[2]]=temp_array[1];
		}
// 		alert("das Res ist: "+res);
		try {
		getElementById(temp_array[0]).innerHTML=temp_array[1];
		} catch (e) {
			alert("Fehler: "+e); }
	}

	// callback to create actual receipt function

	function crReceipt_cb(res) {
// 		alert(res);
		var result_array=res.split("~~");
		for (var i=0; i<result_array.length; ++i) {
		 	var temp_array=result_array[i].split("|");
// 			alert (temp_array[0]+" :"+temp_array[1]);
			if (temp_array[0]=="Name") {
			receipt_name=temp_array[1];

			} else if (temp_array[0]=="Firstname") {
			receipt_firstname=temp_array[1];
			} else if (temp_array[0]=="MaxAmount") {
			receipt_MaxAmount=temp_array[1];
			} else if (temp_array[0]=="id") {
			receipt_SID=temp_array[1];
			}
// 			temp_array[0]=temp_array[1];
		}
// 		getElementById("addingLayer").style.display="inline";
		
		hideLayer('addingLayerWaiting');
		showLayer('addingLayer');
// 		getElementById("addingLayerWaiting").style.visibility="hidden";
		
		getElementById("runner").innerHTML=receipt_firstname+" "+receipt_name;
		if (receipt_MaxAmount < 25) {
			getElementById("receiptWarn".innerHTML="Der Betrag ist unter 25 &euro;, <br/> Sie k&ouml;nnen die Spendenquittung zwar erfassen, m&uuml;ssen dann aber &uuml;ber den Spendenquittungs-Link im Men&uuml; diese Zusammenfassen!");

		}
		getElementById("maxAmount").innerHTML=receipt_MaxAmount;
		getElementById("receiptAmount").value=receipt_MaxAmount;
	
	}

	// what comes back from adding a new receipt is edited here:

	function receiptAdd_cb(res) {
// 		alert(res);
		var temp_array=res.split("|");
		
		if (temp_array[0]=="Error") {
			outputError(temp_array[0],temp_array[1]);
			showLayer('addingLayer');
			
		} else {
			
			hideLayer('addingLayer');
			hideLayer('addingLayerWaiting');
			helpArr=temp_array[1].split("~~");
			if (helpArr.length>1) { // special case, adding only the smal receipt, doing a special note!
				alert("Spendenquittung vorerfasst, Sie muessen noch ueber den Navigationspunkt Spendenquittung \n verschiedene Spendenquittungen des gleichen Sponsors zusammenfassen, bevor die Spendenquittung weiterverarbeitet werden kann ");	
				temp_array[1]=helpArr[0];
			} else {
				alert("Spendenquittung fertig angelegt. \nDie Spendenquittung wird an die Initiative \"Kinder laufen fuer Kinder\" weitergeleitet.");
			}
			if (temp_array[1] > 0) {
			getElementById("S"+temp_array[0]+"_receipt").innerHTML="<a href='#' onCLick=\"createReceipt('S"+temp_array[0]+"_receipt',this)\">erstellen</a>";
			} else {
				getElementById("S"+temp_array[0]+"_receipt").innerHTML=""
			}
		}	
	}
// 	function 
	// wrapper for newRow
		function x_newRow() {
			sajax_do_call("newRow",	x_newRow.arguments);
		}

		function x_getReceipt() {
			sajax_do_call("getReceipt",x_getReceipt.arguments);
		}

	function x_updpaid() {
		sajax_do_call("updpaid",x_updpaid.arguments);
	}
	
	function x_class() {
		sajax_do_call("classChg",x_class.arguments);
	}
	/* 
		Forward Wrapper, not necessarlie needed.
		This way, only the name has to be passed when calling the actuala sajax function
		
	*/
	function do_update(name) {
		var content;
// 		alert(name);
		content = getElementById(name).value
// 		alert(content);
		x_update(name,content,update_cb);
	}

	function x_delete() {
		sajax_do_call("deleteRow",x_delete.arguments);
	}

	function do_delete(SID) {
// 		/*alert*/(SID);
		x_delete(SID,delete_cb);

	}
	
	// this is pretty much magic:
	// i get the id of the  itself (i mean, i could be getting that over say the SID-element, but this seems better) and then delete that row. rows have the Attrib. rowIndex, very fancy and nice ;D

	function delete_cb(res) {
// 		alert(getElementById("Row_"+res).rowIndex)
		getElementById("Maintable").deleteRow(getElementById("Row_"+res).rowIndex);
	}
	function x_receiptAdd() {
// 	alert("blup");
	sajax_do_call("receiptAdd",x_receiptAdd.arguments);
	}

	function x_receiptAdd2() {
	sajax_do_call("receiptAdd2",x_receiptAdd2.arguments);
	}
	/** returns the receiptData to the php-Backaned and displays the waiting Info
	 */

	function receiptAdd() {
// 		alert(receipt_SID);
// i've to add a function here that checks for the existance of the street, etc fields, and then sends off the "total add"
		var DName=getElementById("receiptName").value;
		var Amount=getElementById("receiptAmount").value;
// 		var Street=getElementById("receiptStreet").value;
// 		var PLZ=getElementById("receiptPLZ").value;
// 		var city=getElementById("receiptCity").value;
// 		alert(receipt_MaxAmount+"<"+Amount);
		if (getElementById("StreetID")) {

		// we have all 5 values, do the oldschool sendout!
		var Street=getElementById("StreetID").value;
 		var PLZ=getElementById("receiptPLZ").value;
 		var city=getElementById("receiptCity").value;
		var company = getElementById("company").value;
			if (!DName || !Amount || !PLZ||!city||!Street ) {
				alert("here!");
				alert("FEHLER:\n Alle Felder muessen ausgefuellt sein!");
			} else if(Number(receipt_MaxAmount.replace(/,/,".")) < Number(Amount.replace(/,/,"."))) {
				alert("FEHLER:\n der Betrag ist zu hoch.\n Fuer diesen Lauefer koennen maximal "+receipt_MaxAmount.replace(/,/,".")+" bezahlt werden!"); 
				getElementById("receiptAmount").value=receipt_MaxAmount;
			} else if (Number(Amount.replace(/,/,"."))>= 25) {
				showLayer("addingLayerWaiting");
				hideLayer("addingLayer");
				getElementById("textAddingLayerWaiting").innerHTML="Sende / Speichere ";
				if (company!="") {
					DName=company + ", z.H. " + DName;
				}
// 				alert("blup");
				x_receiptAdd(receipt_SID,DName,Amount,Street,PLZ,city,receiptAdd_cb);
			}
		} else {
//kleine variante,nur vorerfassen
		if (!DName || !Amount ) {
		alert("FEHLER:\n Alle Felder muessen ausgefuellt sein!");
		
  
		
// 		} else if (
		} else if(Number(receipt_MaxAmount.replace(/,/,".")) < Number(Amount.replace(/,/,"."))) {
			alert("FEHLER:\n der Betrag ist zu hoch.\n Fuer diesen Lauefer koennen maximal "+receipt_MaxAmount.replace(/,/,".")+" bezahlt werden!"); 
			getElementById("receiptAmount").value=receipt_MaxAmount;
		} else if(Number(Amount.replace(/,/,"."))>= 25) {
// 			alert(Amount.replace(/,/,"."));
// Bei "OK": Sie können nun die Spendenquittung zum Abschicken vorbereiten.
// Bei "Abbrechen": Sie können für diesen Sponsor mehrere Beträge
// zusammenzufassen
			if(confirm("Der Betrag ist größer als 25 Euro, somit kann eine Spendenquittung nur fuer diesen Sponsor/Läufer erstellt werden. \n Bei ¸\"OK\": Sie können nun die Spendenquittung zum Abschicken vorbereiten.\nBei \"Abbrechen\": Sie können für diesen Sponsor mehrere Beträge zusammenzufassen")) { // ja, er hat nur hier gespendet, ich kann das zweite fenster ausläsen!
				// unterscheidung im php, ob altes oder neues sktript nur über die anzahl der aargumente.
				// also, alte Art, damit ändern wir den inhalt von layer und fügen die passende eingabeboxen hinzu
				// das macht aber eine ausgelagerte funktion, bin ja nicht doof ;D
				receiptAddSecondPrep(receipt_SID,DName,Amount)
			} else {
			hideLayer("addingLayerWaiting");
			showLayer("addingLayer");
			getElementById("textAddingLayerWaiting").innerHTML="Sende / Speichere ";
			x_receiptAdd2(receipt_SID,DName,Amount,receiptAdd_cb);
			}
		} else {
			showLayer("addingLayerWaiting");
				hideLayer("addingLayer");
				
			getElementById("textAddingLayerWaiting").innerHTML="Sende / Speichere";
			x_receiptAdd2(receipt_SID,DName,Amount,receiptAdd_cb);
		}
		}
	}
	
function appendTD(Row,elem) {
	if (typeof(elem)=="string") {
		var strElem=document.createTextNode(elem);
		Row.appendChild(document.createElement('TD').appendChild(strElem))
	} else {
	        Row.appendChild(document.createElement('TD').appendChild(elem))
	}
}
// "refurbishes" the receipt layer to ask for the Adress and the COmpanyname, than ask if the info is correct and then adds it	
function receiptAddSecondPrep(SID,DName,Amount) {
	getElementById("addingLayer").style.height="15em";
	getElementById("receiptSbt").value="Adresse eintragen";

// alternate version, relying on the DOMAssistant method:
// 	alert(DName);
	$("#receiptForm").addContent("Firmenname und Rechtsform ");
	$("#receiptForm").create("input",{id: "company",type: "text",name: "company"},true);
	$("#receiptForm").addContent("<br > Straße");
	$("#receiptForm").create("input",{id: "StreetID",type: "text",name: "street"},true);
	$("#receiptForm").addContent("  PLZ  ");
	$("#receiptForm").create("input",{id: "receiptPLZ",type: "text",name: "PLZ", size: 5},true);
	$("#receiptForm").addContent("  Ort  ");
	$("#receiptForm").create("input",{id: "receiptCity",type: "text",name: "City"},true);
getElementById("receiptName").value=DName;
	getElementById("receiptAmount").value=Amount;
	
	}	

	function aggregateAsk_cb(res) {
		var ResultsArr=res.split("|");
		var resArr=new Array();
		
		var output;
		var sum;
		output="Soll aus den Vormerkungen für \n";
		sum=0;
// alert(res);	
		if (ResultsArr[0]=="Error") {
			outputError(ResultsArr[0],ResultsArr[1]);
		} else {
		 for (var i=0;ResultsArr.length>i;i++) {
// 			alert(/*ResultsArr*/[i].split("~~"))
			resArr=ResultsArr[i].split("~~");
			if (i==0) {var help=resArr; }
			if (resArr[0]) {
			output=output+"Sponsor: "+resArr[2]+"\t Betrag "+resArr[1]+"Eur\t Lauefer "+resArr[4]+" \n";
			ListIDs[ListIDs.length]=resArr[0];
			sum=parseFloat(resArr[1])+sum
			}
// 			alert("Sponsor: "+resArr[3]+"\t Betrag "+resArr[1]+"Eur\tLauefer "+resArr[5]+"\n");
// 		if (	
		}
		output=output+"\t eine Spendenquittung erstellt werden?";
		if (confirm(output)) {
			showLayer("receiptEditLayer");
			var div=$$("receiptEditText");
			
			div.replaceContent("");
			div.create("form",{method:"#"},true);
			div=$("#receiptEditText form");
			div.addContent("Spendername:");
			div.create("input",{id: "donorName",type:"text",value: help[2],className:"editClass"},true);
			div.addContent("Firma und Rechtsform");
			div.create("input",{id:"donorCompany",type:"text",className:"editClass"},true);
			div.create("br",null, true);
			div.addContent("<b>Die Spendenquittung wird mit Betrag "+sum+" &euro; erfasst!</b>");
			
			div.create("br",null, true);
			div.addContent("Strasse");
			div.create("input",{id: "donorStreet",type:"text",className:"editClass"},true);
			div.addContent("PLZ,Ort");
			div.create("input",{id: "donorPLZ",type:"text",className:"editClass"},true);
			div.create("input",{id: "donorCity",type:"text",className:"editClass"},true);
			div.create("br",null, true);
			div.create("input",{id:"submitForm",type:"submit",value:"Abschicken",className:"editClass"},true);
			div.addEvent("submit",function(){finalizeAggregate();return false});
		} else {
			$$(document).elmsByAttribute("type","checkbox","input").each(function () {
			if (this.checked) {
				this.checked=false;
			}
			});
		}
		}
	}

	function finalizeAggregate_cb(res) {
		if (res!="") {
			ResultsArr=res.split("|");
			alert("Fehler: "+ResultsArr[1]);
		} else {
			alert("Spendenquittung eingetragen!");
			reloadPage();
		}
	}		

	/** does the last steps to finish the aggregate! */	
	function finalizeAggregate() {
// alert("blup");	
		if ($$("donorName").value||$$("donorStreet").value||$$("donorCity").value||$$("donorPLZ").value|| ListIDs.length > 0) {
			if ($$("donorCompany").value){
			var name=$$("donorCompany").value+ ", "+$$("donorName").value;
			} else {
			var name=$$("donorName").value;
			}
// 			alert("blup");
			x_doAggregate(name,$$("donorStreet").value,$$("donorPLZ").value,$$("donorCity").value,finalizeAggregate_cb);
		} else {
			alert("Fehler: Mindestens Name, Straße, PLZ und Stadt müssen ausgefüllt sein!");
		}
	}

	function x_doAggregate(){
		sajax_do_call("finalizeAggregate",x_doAggregate.arguments);
	}
	/** aggregation receipts, first of all asking if this is wanted, than add form and so on */
	function x_aggregateAsk() {
		sajax_do_call("getToAggregate",x_aggregateAsk.arguments);
	}
	function getReceiptAggregate() {
		// first of all, i've to find all matching 
		var listIDs;
		$$(document).elmsByAttribute("type","checkbox","input").each(function () {
			if (this.checked) {
// 				alert(this.id);
				// write the ids into an array, and then search for these ids and return them (ajax)
				listIDs=listIDs+","+this.id
			}
		});
		x_aggregateAsk(listIDs,aggregateAsk_cb);
		
	}

	/* prints the form w/ pre defined values*/
	function receiptEdit_cb(res) {
// 		alert("test");
// 		alert(res);
		var resultsArr=res.split("|");
		var div=$$("receiptEditText");
	// this now uses the new DOMAssistant 
		$$("receiptEditText").create("Form",{id:"EditLayerForm",method:"post",action:"#"},true);
		div=$("#receiptEditText form");
		div.replaceContent("Betrag");
// 		div.addContent("test");
		div.create("input",{id: "donorAmount",type:"text",value: resultsArr[2],size:"2",className:"editClass",disabled:"TRUE"},true);
		div.addContent("Spendername");
		div.create("input",{id: "donorName",type:"text",value: resultsArr[1],className:"editClass"},true);
		div.create("br",null, true);
		div.addContent("Strasse");
		div.create("input",{id: "donorStreet",type:"text",value: resultsArr[3],className:"editClass"},true);
		div.addContent("PLZ,Ort");
		div.create("input",{id: "donorPLZ",type:"text",value: resultsArr[4],className:"editClass"},true);
		div.create("input",{id: "donorCity",type:"text",value: resultsArr[5],className:"editClass"},true);
		div.create("br",null, true);
		div.create("input",{id:"submitForm",type:"submit",value:"Ändern",className:"editClass"},true);
		div.addEvent("submit",function(){updateReceipt(1,resultsArr[0]);return false});
// 		$$("EditlayerForm").addContent("Betrag:");
// 		$$("editLayerForm").create("table",{id: "receiptEditTable"},true);
// // 		$$("receiptEditTable").create("tr",{id:"receiptEditTable1"},true);
// 		$$("receiptEditTable1").create("td",{id:"receiptEditTable11"},true);
// 			$$("receiptEditTable11").addContent("Betrag");
		
			
	}
	function do_receiptEdit() {
// 		alert("test");
		sajax_do_call("receiptEdit",do_receiptEdit.arguments);
	
	}

	
	function receiptEdit(EType,ReceiptID) {//file:///home/blitz/projekte/work-eurinome/eurinome/js/ajax.js
		showLayer("receiptEditLayer");
// 		alert("test)");
 		do_receiptEdit(ReceiptID,receiptEdit_cb);
	}

// 	function do_updateReceipt() {
// 		sajax_do_call("updateReceipt",do_updateReceipt.arguments);
// 	}

	function updateReceipt_cb(res) {
		if (res!="") {
			var resultsArr=res.split("|");
			alert("Fehler: "+resultsArr[1]);
		} else {
			$$("receiptEditText").replaceContent("Daten werden geladen");
			reloadPage();
			
		}
		
	}

	function updateReceipt(Etype,ReceiptID) {
// 		alert("test");
		if ($$("donorAmount").value||$$("donorName").value||$$("donorStreet").value||$$("donorCity").value) {
			 x_receiptAdd(0,$$("donorName").value,$$("donorAmount").value,$$("donorStreet").value,$$("donorPLZ").value,$$("donorCity").value,ReceiptID,updateReceipt_cb)
		} else {
			alert("alle Werte müssen eingegeben werden!");
		}
// 		alert($$("donorCity").value);

	}

	function help_cb(res) {
		getElementById("helptext").innerHTML=res;
	}
	
	function set_help(helpID) {
		if (helpEn) {
		if (helpID!=currentHelpID && helpID) {
	try {
		getElementById("helptext").innerHTML="Hilfstext wird geholt";
		currentHelpID=helpID;
		x_help(helpID,help_cb);
	} catch(e) { /* dont't need any error real error handling here..*/ };
		}
		}
	}

	function x_help() {
	sajax_do_call("help",x_help.arguments);
	}

	function do_class(name) {
		var content;
		content = getElementById(name).value
		if (content=="neu") {
			newClass=getElementById(name+"Neu").value;
			x_class(name,content,newClass,class_cb);
		} else {
			x_class(name,content,class_cb);
		} 	
		
		
	}

	function do_paid(name) {
		var content;
// 		alert(name);
		content = getElementById(name).value
// 		alert(content);
		x_updpaid(name,content,update_cb);
	}


	
	function newRow(name1,name2,name3) {
		var content,con_name,con_prename;
		content = getElementById(name1).value;
// 		alert(name1);
		if (content != "") {
// 			alert(content);
			if (content=="neu"){
				content=$$('newClass').value;
			}
			con_name = getElementById(name2).value;
// 			alert(con_name)			
			if (con_name != "") {
				con_prename = getElementById(name3).value;
				if (con_prename != "") {
			 
					x_newRow(name1,content,con_name,con_prename,neu_cb);
				}
			}
		}
	}

	/** createReceipt take care of the display of a div to add spendenquittungen to the liste
         *
         */
	function createReceipt(id,cellSpan) {
// 		getElementById("addingLayerWaiting").style.visibility="visible";
		showLayer("addingLayerWaiting");

		x_getReceipt(id,crReceipt_cb);
// 		alert ("hallo");
	}
	




	/**  the function to be called after finishing the editing , the id of the element are passed to this function
		it then changes the cell to be a inputbox or similar and passes the return of that function to 
		the in func specified function
	
	*/
	function editCell(func, id) {
// 		alert('blah');
		cellSpan=getElementById(id);
		if ( func != "") {
		if (func == "updatePromised") {
			updatePromised(id,cellSpan);
// 		} else if (func == "createReceipt") {
// 			createReceipt(id,cellSpan);
		}  else if (func =="gotoPrint" ) {
// 			alert("blup")
			   gotoPrint(id);
		} else {
// alert(id);
		var inputWidth = (getElementById(id).offsetWidth / 7);
		var oldCellSpan = cellSpan.innerHTML;
		if (!oldCellSpan.match(/<form/i)) {

		if (id.match(/RoundsRun/)) {
			oldCellSpan = oldCellSpan.replace(/([0-9,]*)\ \([0-9,]*\ km\)/,'$1');
		} 
// 		alert(id.match(/Amount/));
// 		alert(id);
		if (id.match(/Amount/) || id.match(/AmountFixed/)) {
			oldCellSpan= oldCellSpan.replace(/\(([0-9,]*).*\)=.*/,'$1'); /* resets the innerHtml to be only the amount per KM */
// 			alert("i got her");
		}
		if (func == "class") {
			// sonderbehandlung für Klassen.
			// gft auf den classes array zurück.
			$$(id).replaceContent("");
// 			var execute="do_"+func+"("+id+"input)";
			
// 			alert(execute);
			$$(id).create("form",{id: "activeForm"},true);
			$("#activeForm").create("select",{id:id+"input",className:"dynaInput"},true);
			$("#"+id+"input").addEvent("change",function(){
				if (this.value=="neu") {	
					$("#activeForm").create("input",{id:id+"inputNeu",type:"text"},true);
// 					$("#"+id+"inputNeu").addEvent("blur",function(){window["do_"+func](id+"input");});
					$("#"+id+"inputNeu").addEvent("change",function(){window["do_"+func](id+"input");});
				} else {
					window["do_"+func](id+"input");}
				});
// 			$("#"+id+"input").addEvent("blur",function(){window["do_"+func](id+"input");});
// 			var optList=" ";
			for (key in classes) {
				
				$("#"+id+"input").create("option",{id:"SKID"+key, value: key},true,classes[key]);
// 				optList+="<option value=\""+key+"\"";
// 				alert(trim(oldCellSpan)+"=="+classes[key]);
				if (trim(oldCellSpan)==classes[key]) {
					$$("SKID"+key).selected=true;
				}
				
			}
			$("#"+id+"input").create("option",{id:"SKIDneu", value: "neu"},true,"Neue Kl.");
// 			$("#SKIDneu").addEvent("select",function(){$("#activeForm").create("input",{id:id+"inputNeu",type:"text"},true);});
			
// 			optList=optList.concat('<option value=\"neu\">Neue Kl.</option>'); // adding a new class
// 			$$(id).replaceContent($("#activeForm"));
// 			getElementById(id).innerHTML = "<form name=\"activeForm\" onsubmit=\""+func+"('"+id+"input');return false;\" style=\"margin:0;\" action=\"\"><select class=\"dynaInput\" id=\""+id+"input\" onchange=\"do_"+func+"('"+id+"input');return false;\" onblur=\"do_"+func+"('"+id+"input');return false;\">"+optList+" </select> <br /><noscript><input value=\"OK\" type=\"submit\"></noscript></form>"
		} else {
        	getElementById(id).innerHTML = "<form id=\"activeForm\" onsubmit=\"do_"+func+"('"+id+"input');return false;\" style=\"margin:0;\" action=\"\"><input type=\"text\" class=\"dynaInput\" id=\""+id+"input\" size=\""+ inputWidth + "\" onChange=\"do_"+func+"('"+id+"input');return false;\"> <br /><noscript><input value=\"OK\" type=\"submit\"></noscript></form>";
	
		if (oldCellSpan!="") {
				if (oldCellSpan=="") {
					oldCellSpan="";
				}  
// 				alert(oldCellSpan.charCodeAt(4));
				if (oldCellSpan.match(/^.nbsp;/)) {
					oldCellSpan="";
				}
				oldCellSpan=oldCellSpan.replace(/\u20AC/,""); // replaces EURO sign - at least in ie
        		getElementById(id+"input").value = trim(oldCellSpan);
		} 
// 		getElementById(id).onclick="";
		getElementById(id+"input").focus();
		getElementById(id+"input").select();
// 		getElementById(id).style.background = '#FAFADC';
// 		getElementById(id).style.border = '1px soli	d #fc0';
		}
		currentField=id;
		for (var i=0; i<columns.length;i++) {
			var nameID=id.replace(/\d*_/,"");
			if (nameID==columns[i]) {
				currentColumn=i;
				break;
			}
		}
// 		alert('currentField:'+currentField+'CurrenColum: '+currentColumn);
		}
		}
		
		}

		
	}

/** cb function von search
*/

// setzten der Spendenquittungs und Löschen Spalte als nicht-sichtbar
// var indextoget=columns.length-2
// getElementById(columns[indextoget]).setAttribute('class',"disabled");
// indextoget=indextoget+1;

// getElementById(columns[indextoget]).setAttribute('class',"disabled");

// getElementById('classfilter').innerHTML='<a href="#" onClick="reloadPage();">Suche/Filterung zur&uuml;cksetzen</a>';

//set_help("search");
function search_cb(res) {
// alert("test");
// alert(res)
hideLayer("searchingLayer");
 var maintable=getElementById("Maintable");
 var rowlength=getElementById("Maintable").rows.length;
// alert(rowlength);
// übernahem der resultats der Suche in einem Array

var result_array=res.split("|"); // result enthält jetzt die Zeilen
if (result_array[0]=="Error") {
showLayer("searchLayer");
outputError(result_array[0],result_array[1]);
} else { // normalfall
// showLayer("goBackLayer");
	for (var i=(rowlength-1) ;i >0 ; i--) {
 	maintable.deleteRow(i);
// 	alert(i);
 	}	
	
	for (var i=0;result_array.length>i;i++) {
// 		alert(i);
		helpArr=result_array[i].split("~~");
		if (helpArr[0]=="pages") {
			$$("pages").replaceContent(helpArr[1]);
		} else if (helpArr.length>5) {
		addRow(helpArr);
		}
	}

// alert("Blup");
}
// alert(classfilter);

	if (classfilter) {
		$$("EditClass").replaceContent("");
		if (classfilter=="%") {
			getElementById('classfilter_all').setAttribute('class',"clborder-active");
		} else {
			getElementById('classfilter_'+classfilter).setAttribute('class',"clborder-active");
			
			$$("EditClass").create("a",{href:"#",id:"EditClassLink",name:classfilter},true);
			$$("EditClassLink").addContent("Klasse &auml;ndern");
			$$("EditClassLink").addEvent("click",function(){editClass(this.name);return false});
		}
	}
	
classfilter="";
ungreyMaintable();

}

/** deletes the current Table, adds a "Searching" Layer in the middle and starts the Ajax search
the deletetion of the table is def. the wrong way, but i'm needing that rt now for testing.
Normally that should be just blurreded into the background witht the "searching ..." layer in the front
*/
function startSearch() {
var searchString=getElementById("searchString").value;
var searchType=getElementById("searchType").value;
// alert("test");
// alert(searchString);
hideLayer("searchLayer");
showLayer("searchingLayer");

x_search(searchString,searchType,search_cb );
}





function classFilter(Name) {
classfilter=Name
	$$(document).elmsByClass("clborder-active").each(function () {
			this.className="clborder";
			});
// 	getElementById("classfilter_"+Name).classname="clborder";
greyMaintable();
x_search(Name,'Classname',search_cb );
}

function x_search() {
		sajax_do_call("search",x_search.arguments);
}

function x_reportError() {
	sajax_do_call("reportError",x_reportError.arguments);
}
function reportError_cb(res) {
	$("#Commonlayer span form").remove();
	hideLayer("Commonlayer");
	alert("Fehlermeldung mit Nummer "+res+" eingetragen.\nWir werden uns innerhalb des nächsten Arbeitstages um das Problem kümmern. Sollte Sie schneller Hilfe benötigen, kontaktieren Sie bitte die Initiative \"Kinder laufen für Kinder\".");
	
}

function reportError2() {
	if ($$("errorDesc").value ) {
		x_reportError($$("errorDesc").value,$$("errorEmail").value,reportError_cb);

	}
		
}
function reportError() {
	showLayer("Commonlayer");
	$("#Commonlayer h2").replaceContent("Fehler melden");
	var obj=$("#Commonlayer span");
	obj.replaceContent("");
	obj.create("form",{action: "#"},true);
	obj=$("#Commonlayer span form");
	obj.addContent("Entschuldigen Sie bitte den Fehler. <br> Bitte beschreiben Sie das Problem, damit wir Ihnen schnellstm&ouml;glich helfen k&ouml;nnen:");
	obj.addEvent("submit",function(){reportError2();return false});
	obj.create("input",{id: "errorDesc",type:"text",size:"50"},true);
	obj.addContent("Wenn Sie m&ouml;chten, k&ouml;nnen Sie eine Email-Adresse hinterlegen, dann informieren wir Sie &uuml;ber den Fortgang der Bearbeitung!");
	obj.create("input",{id: "errorEmail",type:"text",size:"20"},true);
	obj.create("input",{id:"submitError",type:"submit",value:"Abschicken"},true);
// 	var result=prompt("Entschuldigen Sie bitte den Fehler. Bitte beschreiben Sie genau ihr Problem, damit wir Ihnen schnellstmoeglich helfen koennen.","");
// 	alert(result);
		
// 	if (result==null) {
// 		alert("Eingabe abgebrochen!");
// 	} else {
// 		var email=prompt("Wenn Sie moechten, koennen Sie eine Email-Adresse hinterlegen, dann informieren wir Sie ueber den Fortgang der Bearbeitung!"); 
// 		x_reportError(result,email,reportError_cb);
// 	}
}

function x_deleteReceipt() {
	
	sajax_do_call("deleteReceipt",x_deleteReceipt.arguments);
}

function reload_cb(res) {
	ResultsArr=res.split("|");
	if (ResultsArr[0]=="Error") {
	outputError(ResultsArr[0],ResultsArr[1]);
	} else {
		reloadPage();
	}
}
// deletes the temporaryReceipts
function deleteReceipt(IncomingID) {
// 	alert(IncomingID);
	x_deleteReceipt(IncomingID,reload_cb);
}

// editClass, Edits the Name of a Class
function editClass(ClassName) {
// 	alert(ClassName);
	showLayer("Commonlayer");
	$("#Commonlayer h2").replaceContent("Gruppe Umbennen");
	var obj=$("#Commonlayer span");
	obj.replaceContent("");
	obj.create("form",{action: "#"},true);
	obj=$("#Commonlayer span form");
	obj.addContent("Bitte benennen Sie die Gruppe um:<br >");
	obj.addContent("\n bisher: "+ClassName+"<br>");
	obj.addEvent("submit",function(){do_editClass(ClassName);return false});
	obj.create("input",{id: "newClassName",type:"text",size:"50",value:ClassName},true);
	obj.create("input",{id:"submitError",type:"submit",value:"Abschicken"},true);
	

}
function do_editClass(ClassName) {
// 	alert(ClassName);
// 	alert(($$("newClassName").value);
	if ($$("newClassName").value!=ClassName) {
 	x_editClass(ClassName,$$("newClassName").value,reload_cb);
	}
	hideLayer("Commonlayer");
}

function x_editClass() {
	sajax_do_call("editClass",x_editClass.arguments);
	
}

