// Ausgabe in Div
function setOutput(error, ActionDiv) {
	document.getElementById('' + ActionDiv + '').innerHTML = '' + error + '';
	return;
}
// Roten Rahmen setzen
function redborder(p_sFeld) {
	document.getElementById('' + p_sFeld + '').style.border = '1px solid #F00';
	return;
}
// Roten Rahmen entfernen
function clearborder(p_sFeld) {
	document.getElementById('' + p_sFeld + '').style.border = '1px solid #96BCDD';
	return;
}
//Einblenden ohne gleichzeitiges ausblenden
function einblenden(p_sObjEinblenden) {
	
	var l_oEinblenden = document.getElementById(p_sObjEinblenden);
	if (l_oEinblenden){
		l_oEinblenden.style.display = "block"
	}

	return;
}
// Ausblenden
function ausblenden(p_sObj) {
	var l_oObj = document.getElementById(p_sObj);
	if(l_oObj){
		l_oObj.style.display = "none";
	}
	return;
}

function addslashes(str) {
	str = str.replace(/\'/g, '\'');
	str = str.replace(/\"/g, '\"');
	str = str.replace(/\\/g, '\\');
	str = str.replace(/\0/g, '\0');
	str = str.replace(/\r/g, "");
	str = str.replace(/\n/g, "");
	return str;
}

function stripshlashes(str) {
	str = str.replace(/\\'/g, "'");
	str = str.replace(/\\"/g, '"');
	str = str.replace(/\r/g, "");
	str = str.replace(/\n/g, "");
	return str;
}

// ++++++++++++ Ajax Objekte ++++++++++++++++

function createAJAXRequestObject() {
	var resObject = null;

	try {
		resObject = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (Error) {
		try {
			resObject = ActiveXObject("MSXML2.XMLHTTP");
		} catch (Error) {
			try {
				resObject = new XMLHttpRequest();
			} catch (Error) {
				alert("[createAJAXRequestObject] Das Erzeugen das XMLHttpRequest-Objekts ist nicht möglich");
			}
		}
	}
	return resObject;
}

var g_oResObject = createAJAXRequestObject();

function getElemValue(p_oElem, p_oElemName) {

	
	
	try {
		var l_sType = "";
		
		l_sType = p_oElem.type;
		
		switch (l_sType) {
		case "text":
		case "hidden":
			return p_oElem.value;
			break;
		case "select-one":
			l_nSelect = p_oElem.selectedIndex;
			return p_oElem.options[l_nSelect].value; // liefert somit die ID
			// des
			// Selectboxeintrages
			break;
		case "password":
			return p_oElem.value;
			break;
		case "button":
			return p_oElem.value;
			break;
		case "radio":

			var ret = "";
			if (p_oElemName.checked == true) {

				for ( var i = 0; i < 10; i++) {
					if (p_oElemName.checked[i] == true) {
						ret = p_oElemName.value[i];
						return ret;
						break;

					}
				}
			} else {
				return ret;
				break;
			}

			// return p_oElem.checked;
			// return p_oElem.checked;
			// return p_oElemName;
			break;
		case "checkbox":
			return p_oElem.value;
			break;
		default:
			//alert("Typ:" + l_sType + " wird derzeit noch nicht unterstuetzt");
			return "";
			//return p_oElem.value;
		}
	} catch (Error) {
		alert(Error);
		return null;
	}
}

function doVerarbeiteAjaxResponse(p_oSrcElem, p_sResonseText) {
	// versuche den erhaltenen Text zu eval
	try {
		// l_sResponseText = stripshlashes(p_sResonseText);
		l_sResponseText = p_sResonseText;
		eval(l_sResponseText);
		// eval(addslashes(p_sResonseText));
		// sollte nach den eval diese Variable exsisiteren dann wurde JS-Code
		// emfängen
		if (l_aAJAXRes) {
			if (l_aAJAXRes["Result"]) {
				switch (l_aAJAXRes["Result"]) {
				case "DO_NOTHING":
					return true; // es wird keine Aktion erwartet - es wird
					// standardmaessif true zurückgeliefert
					break;
				case "DO_JS":
					// versuche gelieferten Code aus l_aAJAXRes["JSAction"]
					// auszuführen
					try {
						eval(l_aAJAXRes["JSAction"]);
						return true;
					} catch (e) {
						alert("Fehler: der gelieferte JavaScript-Code konnte nicht ausgefuehrt werden\n\n"
								+ l_sResponseText + " " + e);
						return false;
					}
					break;
				default:
					alert("[doVerarbeiteAjaxResponse] Fehler: Formatfehler - "
							+ l_aAJAXRes["Result"] + " wird nicht unterstuetzt");
					return false;
					break;
				}
			} else {
				alert("[doVerarbeiteAjaxResponse] Fehler: Formatfehler - Schluessel Result in l_aAJAXRes nicht gesetzt!");
				return false;
			}
		} else {
			alert("Warung: der AJAX-Request liegt in Javascript vor und könnte ausgefuehrt werden - das Format liegt aber nicht\nin der erwarteten Form vor. Variable l_aAJAXRes ist nicht definiert. Bitte melden Sie diesen Vorfall dem Entwicklerteam und beschrieben Sie die Schritte, welche zu dieser Ausnahme gefuehrt haben.");
			return;
		}

	} catch (e) {
		// entweder war kein JS-Code verfügbar oder es lag ein Syntaxfehler vor
		// - das können wir aber jetzt auch nicht mehr herausfinden
		// es wird versucht mit dem erhaltendne Ergebniss noch was an zu fangen
		alert("Ausnahmefehler: " + l_sResponseText);
		return false;
	}
}


var Callback = function(p_sElemID, p_sOnEvent, p_sAction) {
	
	var m_oElement = document.getElementById(p_sElemID);
	var m_oElementName = document.getElementsByName(p_sElemID);

	if (!m_oElement) {
		alert("Callback: " + p_sElemID + " nicht vorhanden");
		return;
	}

	// PHP-Datei
	var l_sFile = "/form_calls.php";

	handleOnChangeElem = function() {
		
		
		if (g_oResObject.readyState == 4) {
			return doVerarbeiteAjaxResponse(m_oElement,g_oResObject.responseText);
		}
	}

	handleEvent = function(event) {

		var myFelderKey = new Array();
		for ( var i = 0; i < document.forms.length; i++) {
			for ( var j = 0; j < document.forms[i].elements.length; j++) {
				if (document.forms[i].elements[j].name) {
					myFelderKey[document.forms[i].elements[j].name] = true;
				}
			}
		}
		var myFelder = new Array();
		for ( var j in myFelderKey) {
			myFelder.push(j);
		}

		var l_oHttpParam = null;
		// var l_oElement = document.getElementById(p_sElemID);
		var l_sElemType = m_oElement.type;
		var l_sElemValue = getElemValue(m_oElement, m_oElementName);

		var myPostParam = "";

		for ( var i = 0; i < myFelder.length; i++) {
			var myFields = document.getElementsByName('' + myFelder[i] + '');
			if (myFields[0]) {
				var myType = myFields[0].type;

				if ((myType == "radio") || (myType == "checkbox")) {

					for ( var j = 0; j < myFields.length; j++) {

						if (myFields[j].checked == true) {
							myPostParam += '&' + myFields[j].name + '='
									+ escape(myFields[j].value);
							break;
						}
					}
				} else {
					// myPostParam = myPostParam + '&' + myFieldID.id + '=' +
					// getElemValue('' + myFieldID.id + '');
					for ( var j = 0; j < myFields.length; j++) {
						myPostParam += '&' + myFields[j].name + '='
								+ escape(myFields[j].value);
					}
				}
			}
		}

		l_oHttpParam = "delegate=tarif" + myPostParam
				+ "&" + "elem=" + escape(p_sElemID) + "&" + "value=" + escape(l_sElemValue)
				+ "&type=" + escape(l_sElemType) + "&action=" + escape(p_sAction);

		
		g_oResObject.open("POST", l_sFile, true);
		g_oResObject.onreadystatechange = handleOnChangeElem;
		g_oResObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		g_oResObject.send(l_oHttpParam);

	}

	eval("m_oElement." + p_sOnEvent + " = handleEvent;");
	return;
}
function aufruf_seite(p_sURL) { // Define arbitrary function to run desired
	location.href = '' + p_sURL + '';
}
