// (c) by www.Stefanoni.ch
var GetFromPhp = function(oForm, cFldId, cValue, cTransAktOverr)
{

if (oForm==false)
	{oForm=document;}

switch (true)
	{
	case ' '+cValue==' 0':
		break;
	case cValue==false:
		cValue = document.getElementById(cFldId).value
		break;		
	default:
	}
	
cAnzAntw = 0;
// ----- Request vorbereiten ------
var query = "Feld=" 		+ cFldId +				// Ursprünglich Auslösendes Object der aktuellen html-Seite
			"&AjaxWert=" 	+ escape(cValue) +		// entweder Feldwert oder Antwort-Wert
			"&AnzAntw=" 	+ cAnzAntw

if (typeof(cVarSid) == 'string')
	{query = query + "&Sid=" + cVarSid;}			// Sess.ID

var xmlhttp = new ajaxRequest(
			cVarAjaxServer,		// "Carbu32.php" cVarAjaxServer = in HTML übergeordnet definierte Var
			function()
			{
				var oRequest = xmlhttp.req;
				if (oRequest.readyState==4)
				{
					var oDaten = (oRequest.status == 200)
					? oRequest.responseXML : "ERROR";
					// PRG_ERR() automatisch ausgeben
					if (oRequest.responseText.indexOf('* Fehler in Prog:')	> 0 ||
						oRequest.responseText.indexOf('Fatal error') 		> 0 ||
						oRequest.responseText.indexOf('Undefined index:')	> 0 ||
						oRequest.responseText.indexOf('<b>Warning</b>')		> 0 ||
						oRequest.responseText.indexOf('valid MySQL result') > 0 )
						{window.clipboardData.setData('Text',oRequest.responseText);
						alert('Debug, jetzt in Zwischenablage verfügbar: ' + window.clipboardData.getData('Text'));}

					//alert(oRequest.responseText); 
					//window.clipboardData.setData('Text',window.clipboardData.getData('Text') + oRequest.responseText);
					//window.clipboardData.setData('Text',oRequest.responseText);	// nur unter IE 
					//window.clipboardData.setData('Text',oRequest.responseXML);
					//alert(oRequest.responseXML);

					DatenInFormSchreiben(oForm,oDaten);
				}
			},
			"POST",
			query,
			["Content-Type","application/x-www-form-urlencoded"]
			);

//// ----- Request ausführen ------
xmlhttp.doRequest();
}

// -----------------------------------------------------------
//  Abgerufene Daten in FORM schreiben
// -----------------------------------------------------------
DatenInFormSchreiben = function(oForm,oDaten)
{

//oForm.dumpfeld.value = cDatenText;

var anzantw = oDaten.getElementsByTagName("anzantw")[0].firstChild.data;

for (var nJetzt = 1; nJetzt <= anzantw; nJetzt++)
	{
	var fldtyp 		 = oDaten.getElementsByTagName("antw_" + nJetzt)[0].getElementsByTagName("typ")[0].firstChild.data;
	var fldname 	 = oDaten.getElementsByTagName("antw_" + nJetzt)[0].getElementsByTagName("name")[0].firstChild.data;
	var fldwert 	 = oDaten.getElementsByTagName("antw_" + nJetzt)[0].getElementsByTagName("wert")[0].firstChild.data;

	if (fldwert == '@')
		{fldwert = '';}

	//var fldaktion 	 = oDaten.getElementsByTagName("antw_" + i)[0].getElementsByTagName("aktion")[0].firstChild.data;
	if (fldtyp.substr(0,5) == 'Fenst' || fldtyp == 'WinLocationReplace' || fldname=='@')			// OR
		{//Kein Bezug zu Objekt, das per JS verändert werden soll
		oFld = '';}
	else
		{var oFld = document.getElementById(fldname);
		var cDisab = oDaten.getElementsByTagName("antw_" + nJetzt)[0].getElementsByTagName("disabl")[0].firstChild.data

		switch (true)
				{
				case cDisab.substr(0,1) == 'T':
					oFld.disabled=true;
					break;

				case cDisab.substr(0,1) == 'F':
					oFld.disabled=false;
					break;

				default:
					// WEITER, Parameter wurde für andere Zwecke verwendet
					//alert("Other-Fall aus js. Disabled: " + cDisab);
					break;
				}
		if (cDisab.length > 2) // Altes System mit Class-Send
			{oFld.className = cDisab.substr(2,cDisab.length-2);}
		}
	
	//alert(oFld.getAttribute("id", 0) + ': '+ oFld.getAttribute("class", 0))
	switch (true)
			{
			case fldtyp == "IT":
				oFld.value = fldwert;
				break;

			case fldtyp.substr(0,5) == "Fenst":		// Alert, Confirm, Prompt, PopUp
				FensterAusgeben(oForm, fldname, fldwert, fldtyp);
				break;

			case fldtyp == "FormRefr":
				// Submit auslösen
				document.form1.submit();
				//document.form1.submit.click();
				break;

			case fldtyp == "Tip":
				// Tip aufrufen mit normalem Text
				Tip(fldwert);
				break;

			case fldtyp.substr(0,9) == "HtmlToTip":
				// Tip aufrufen mit HTML-Inhalt
				MyHtmlToTip(fldtyp,fldname,fldwert);
				break;

			case fldtyp == "DoUnTip":
				// Tip schliessen
				UnTip();
				break;

			case fldtyp == "FormReload":
				// Refresh auslösen über reload
				location.reload();
				break;

			case fldtyp == "ButClick":
				// Button anklicken
				eval('document.form1.' + fldname + '.click()');
				break;

			case fldtyp.substr(0,2) == 'SE':	// SELECT
				switch (true)
						{
						case fldtyp == 'SE_VA':
							SE_VA = fldwert;
							break;
						case fldtyp == 'SE_TE':
							SE_TE = fldwert;
							break;
						case fldtyp == 'SE_SE':
							SelectWithNewOpt(oFld, SE_VA, SE_TE, fldwert, cDisab);
						case fldtyp == 'SE':		// gleiche Aktion wie bei fldtyp == "IT"
							oFld.value = fldwert;
							break;
						default:
							alert("Other-Fall aus js. Unbekannter fldtyp: " + fldtyp);
							break;
						}
				break;

			case fldtyp == "WinLocationReplace":		// neue Webseite aufrufen
				window.location.replace(fldwert);
				break;

			case fldtyp == "JustDisabl":
				// Keine Aktion, da nur DISABLED gesetzt werden soll
				break;

			case fldtyp == "JustClose":
				self.close();	
				break;

			default:
				alert("Other-Fall aus js. Unbekannter fldtyp: " + fldtyp);
				break;
			}
}

//if (oDaten.getElementsByTagName("transende")[0].firstChild.data == 9)
//	{TransAktiv = false}									// UnLock für folgende Transaktionen
//TransAktiv = false

return;
}

// -----------------------------------------------------------
// Options eines Selectfeldes neu setzen
// -----------------------------------------------------------
SelectWithNewOpt = function(oFeld, cValue, cText, cSelectedKonstante, nPosDerZeile)
{
//alert('cText=' + cText + ', cSelectedKonstante=' + cSelectedKonstante + ', nPosDerZeile' + nPosDerZeile);

//alert(cValue+' '+cText+'   cSelectedKonstante=' + cSelectedKonstante + '   nPosDerZeile=' + nPosDerZeile);
if (cSelectedKonstante == 'true')
	{nSetIndex = nPosDerZeile;}
else	
	{nSetIndex = oFeld.selectedIndex;}
	
if (nPosDerZeile == '0')
	{oFeld.options.length = 0;}

oFeld.options[nPosDerZeile] = new Option(cText, cValue, false, cSelectedKonstante);
oFeld.selectedIndex = nSetIndex;

}

// -----------------------------------------------------------
// REQUEST 
// -----------------------------------------------------------
ajaxRequest = function(u,f,m,b,h,s)
{
    this.url      = u;
    this.wState   = f || function() { };
    this.method   = m || "GET";
    this.body     = b || null;
    this.headers  = h || false;
    this.sync     = s || true;
    this.abortReq = false;
    
    this.req = (window.XMLHttpRequest) 
           ?
           new XMLHttpRequest()
           :
           ((window.ActiveXObject)
           ?
           new ActiveXObject("Microsoft.XMLHTTP")
           :
           false
           );
    
    this.doRequest = function()
    	{
        this.req.open(this.method,this.url,this.sync);
        if (this.headers)
			{
				for (var i=0; i<this.headers.length; i+=2)
					{this.req.setRequestHeader(this.headers[i],this.headers[i+1]);}
			}
        this.req.onreadystatechange = this.wState;
        (!this.abortReq) ? this.req.send(this.body) : this.req.abort();
    	}
}

// -----------------------------------------------------------
//  Neues Child zufügen
// -----------------------------------------------------------
CloneZeile = function(cParentNodeId, cTrId, oForm, cName, cValue)
{

for (var i=1; i<cValue; i+=1)
	{

	// Clonen
	var oDolly2 = document.getElementById(cTrId).cloneNode(true);	// immer wieder neue deklarieren !
	oDolly2.id = cTrId + i;
	document.getElementById(cParentNodeId).appendChild(oDolly2);

	// Alle ID und Name inkrementieren
	for (var iTab=1; iTab<=6; iTab+=1)
		{

		var oCx = document.getElementsByName("flddolly" + iTab + "1" )[1];
		cX = i + 1;
		oCx.id 		= oCx.id.substr(0,9) + cX;
		oCx.name 	= oCx.name.substr(0,9) + cX;
		}


	//var oLoesch = document.getElementsByName("fldzigro1")[1]
	//oLoesch.parentNode.removeChild(oLoesch);	
	}

//HTML 	document.getElementById("unentschlossen").align
//		document.getElementsByTagName("p")[0].firstChild.data = "neuer erster";
//		document.getElementsByName("Zutat")[0].checked = true;
//		document.getElementById("unentschlossen").align = wie;		
//
//
//NODE 	bereich.getElementsByTagName("h2")
//
//Nur Java : document.elements()

}
// -----------------------------------------------------------
//  Fenster Handling
// -----------------------------------------------------------
FensterAusgeben = function(oForm, fldname, fldwert, fldaktion)
{
switch (fldaktion)
	{
	case "FenstAlert":
		alert(fldwert);
		break;

	case "FenstWinOpen":
		window.open(fldwert, '_blank', 'status=yes, top=0, left=0, width=10, height=10');
		break;

	case "FenstConfirm":
		if (window.confirm(fldwert) == false)
			GetFromPhp(oForm, fldname, "kAbbr", 1);
		else
			GetFromPhp(oForm, fldname, "kOk", 1);
		break;

	case "FenstPrompt":
		//var cAntwort = window.prompt("Geben Sie eine Zahl zwischen 1 und 4 ein:", "");;					
		break;
		
	default:
		alert("Other-Fall aus js. Unbekannte fldaktion: " + fldaktion);
		break;
	}
}

// -----------------------------------------------------------
//  Test Func
// -----------------------------------------------------------
TestFunc = function(cPara)
{ alert('Aus TestFunc() von Prozedur.js: ' + cPara); }
	



