
// Einfügen und Anzeigen der Infobox
function showBoxInfoAbout(txtstring) {
	if (document.getElementById('infoAboutBox') == null) {
		var infoAboutBox = document.createElement('div');
		infoAboutBox.setAttribute('style','background:#DDDDDD; border-bottom: 1px solid #AAAAAA; border-right: 1px solid #AAAAAA; border-left: 1px solid #AAAAAA; margin-left: 3px; padding: 3px 10px 3px 10px; position:absolute; z-index:100000; width: 50%;');
		infoAboutBox.setAttribute('onclick','this.style.display="none";');
		infoAboutBox.setAttribute('id','infoAboutBox');
		var infoAboutTxt = document.createTextNode("INFO: "+txtstring);
		infoAboutBox.appendChild(infoAboutTxt);
		window.document.body.insertBefore(infoAboutBox,window.document.body.firstChild);	
	} else {
		document.getElementById('infoAboutBox').style.display = "block";
	}
	window.setTimeout("hideBoxInfoAbout()", 2500);
}

// Verbergen der Infobox
function hideBoxInfoAbout() {
	document.getElementById('infoAboutBox').style.display = "none";
}

// Anzeigen des angegebenen Elements
function showElem(elemId) {
	document.getElementById(elemId).style.display = 'block';
}

// Verbergen des angegebenen Elements
function hideElem(elemId) {
	document.getElementById(elemId).style.display ='none';
}

// Setzen eines neuen Textes z.B. für Links
function changeElemTxt(elemId, newTxt) {
	document.getElementById(elemId).innerHTML =newTxt;
}		

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function isValue(oN, errorBox) {
	var objRef = MM_findObj(oN);
	// Falls sich kein eindeutiges Objekt im Formular finden ließ
	if (typeof objRef.value=='undefined') {
		if (!(typeof document.getElementById(oN).value=='undefined')) {
			objRef = document.getElementById(oN);	
		}
	}
  
	if (objRef.value=="") {
		showElem(errorBox);
		objRef.focus();
		return false; 
	}
}

function isPLZ(oN, errorBox) { 
	var objRef = MM_findObj(oN);
	// Falls sich kein eindeutiges Objekt im Formular finden ließ
	if (typeof objRef.value=='undefined') {
		if (!(typeof document.getElementById(oN).value=='undefined')) {
			objRef = document.getElementById(oN);	
		}
	}
  
	if ((isNaN(objRef.value)) || objRef.value.length!=5 || objRef.value.indexOf(".")!=-1) {
		showElem(errorBox);
		 objRef.focus();return false;
	}	
}

function isNumeric(oN, errorBox) { 
	var objRef = MM_findObj(oN);
	// Falls sich kein eindeutiges Objekt im Formular finden ließ
	if (typeof objRef.value=='undefined') {
		if (!(typeof document.getElementById(oN).value=='undefined')) {
			objRef = document.getElementById(oN);	
		}
	}
	
	if (isNaN(objRef.value)) {
		if (objRef.value.indexOf(".")!=-1) {
			var zahl = objRef.value.split(".");
		} else { 
			var zahl = objRef.value.split(","); 
		}
		if (zahl.length>2) { 
			showElem(errorBox);
			objRef.focus();return false;
		}
			
		if (isNaN(zahl[0]) || isNaN(zahl[1])) { 
			showElem(errorBox);
			objRef.focus();return false;
		} 
	}
}

function validateStromStartform() {
	$ret_val = true;
	hideElem("ao_error_vx_usage");
	hideElem("ao_error_vx_plz");

	// Formulareingaben validieren
	if (isValue("vx_var11","ao_error_vx_usage")==false) $ret_val = false;   
	if (isNumeric("vx_var11","ao_error_vx_usage")==false) $ret_val = false;  
	if (isValue("PLZ","ao_error_vx_plz")==false) $ret_val = false;   
	if (isPLZ("PLZ","ao_error_vx_plz")==false) $ret_val = false;  
	return $ret_val;
}

function validateGasStartform() {
	$ret_val = true;
	hideElem("ao_error_vx_usage");
	hideElem("ao_error_vx_kw");	
	hideElem("ao_error_vx_plz");

	// Formulareingaben validieren
	if (isValue("usage_total","ao_error_vx_usage")==false) $ret_val = false;   
	if (isNumeric("usage_total","ao_error_vx_usage")==false) $ret_val = false;  
	if (isValue("Leistung","ao_error_vx_kw")==false) $ret_val = false;   
	if (isNumeric("Leistung","ao_error_vx_kw")==false) $ret_val = false;  	
	if (isValue("PLZ","ao_error_vx_plz")==false) $ret_val = false;   
	if (isPLZ("PLZ","ao_error_vx_plz")==false) $ret_val = false;  
	return $ret_val;
}

/*************************************************************************************************************************
 *************************************************************************************************************************
 * Div. Funktionen zur AJAX-Kommunikation:
 */


// Basis-URL fuer die Kommunikation mit dem Server
var servURL = "/aspect/woPage/page=EnergieTrackingAJAX";
// Auf Develop01 die AJAX URL anpassen
if(window.location.hostname == "develop01") {
	var servURL = "/testtt1/woPage/page=EnergieTrackingAJAX";
}

// Variable zur Speicherung des Timeouts fuer eventuelle Verbindungsstoerung 
var tmout = null;
// Erzeugen des XMLHttpRequest-Objekts
var req = createXMLHttpRequest();

function createXMLHttpRequest() {
 	var checkXMLHttpReq;
	// Ermitteln welche AJAX-Techniken der Browser unterstuetzt
	if(window.XMLHttpRequest) {
		try {
			checkXMLHttpReq = new XMLHttpRequest();
		} catch(e) {
			checkXMLHttpReq = false;
		}
	} else if(window.ActiveXObject) {
		try {
			checkXMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				checkXMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				checkXMLHttpReq = false;
			}
		}
	}
	return checkXMLHttpReq;
}

function sendRequest(paramurl) {
	// Erstellen eines neuen XMLHTTPRequest-Objects
	req = createXMLHttpRequest();

	// URL fuer den Request aufbauen
	var reqURL = servURL + paramurl;
		
	if (req != null) {
		// Setzen des Timeouts, falls noch keiner gesetzt wurde.
		if (tmout == null) {
			tmout = window.setTimeout("ajaxAbort()", 55000);
		}

		// Verbindung oeffnen und Anfrage senden
		req.open('get', reqURL, true);  
		req.onreadystatechange = handleResponse;
		if (req.onerror) {req.onerror = ajaxError;} 	
		// Um Caching-Probleme mit dem Internet-Explorer wg. neuen Datenbankeinträgen zu vermeiden
		req.setRequestHeader("Pragma", "no-cache");
		req.setRequestHeader("Cache-Control", "must-revalidate");
		req.setRequestHeader("If-Modified-Since", document.lastModified);
		// Senden des Request
		req.send(null); 
	}
}

function handleResponse() {
	if(req.readyState == 4){
		// Ermitteln des Request-Status - Try/Catch-Erforderlich fuer das Sonderverhalten des Firefox, wenn ein Abort erfolgt ist. 
		try {
			var rdState = req.status;
		} catch(e) {
			var rdState = -1;
		}

		if (rdState == 200) {
			// Zuruecksetzen des Timeout
			if (tmout != null){
				window.clearTimeout(tmout);
				tmout = null;
			}

			// Das Ergebnis entgegen nehmen
			var response = req.responseText;

			try {
				// Umwandeln der Ergebnisdaten in Objekte
				var data = JSON.parse(response);
/*
				if (data.response.type == "state" && data.response.val == "ok") {
					alert("trc: ok");
				} else {
					alert("trc: error");
				}
*/				
			} catch(e) {}
		} else {}
	}
}

function ajaxAbort() {
	// Abbrechen der Anfrage
	req.abort();
	req = createXMLHttpRequest();	
}

function ajaxError() {
	// Abbrechen der Anfrage
	req.abort();
	req = createXMLHttpRequest();	
}

function trc(obj) {
	var session = "";
	var url = "";
	var sparte = "";
	if (document.getElementById('tr_sessionid') != null) {
		session = document.getElementById('tr_sessionid').value;
	}
	if (obj != null) {
		url = encodeURI(escape(obj.href));
		if (url.match(/power/gi) || url.match(/strom/gi)) {
			sparte = "S";
		} else if (url.match(/gas/gi)) {
			sparte = "G";		
		}		
	}	
	// Aufbauen der URL für die Anfrage
	var reqUrl = '&sessionID=' + session
			+ '&dest=' + url
			+ '&energiesparte=' + sparte;
	// Senden der Anfrage an den Server
	sendRequest(reqUrl);
}


