/*******************************************************************
 * File: activexObject.js                                          *
 *                                                                 *
 * Autor: Christian Schwarze                                       *
 * Copyright: Christian Schwarze                                   *
 * Stand: 09.11.2007                                               *
 *                                                                 *
 * Liefert die eigentliche Funktion zum Senden und Empfangen       *
 * von Daten im Hintergrund einer Webseite						   *
 *******************************************************************/

function saveHeadData(){
	properties['action'] 		= 'loadBackground';
	properties['uri'] 			= '/res/head.php';
	properties['addrSonst'] 	= document.getElementById('addrSonst').value;
	properties['objectName'] 	= document.getElementById('objectname').value;
	properties['zip'] 			= document.getElementById('zip_code').value;
	properties['street'] 		= document.getElementById('street').value;
	properties['city'] 			= document.getElementById('city').value;

	// Show AnimImage
	var waiting = document.getElementById("waitState");
	waiting.style.visibility="visible";
	window.setTimeout("actionNow(properties, 'head', true)", 500);
	return false;
}

function calculation(){
	properties['action'] = 'loadBackground';
	properties['uri'] = '/res/calculator.php';
	
	if (document.getElementById('s_ab_1').checked == true) {
		properties['s_abstand'] = 300;
	}else if(document.getElementById('s_ab_2').checked == true) {
		properties['s_abstand'] = 400;
	}else if(document.getElementById('s_ab_3').checked == true) {
		properties['s_abstand'] = 600;
	}
	
	var system = document.getElementById('oberflaeche');
	properties['system'] = system.options[system.selectedIndex].value;
	
	properties['konstruktion']	= document.getElementById('u_const_1').checked == true ? 'Holz' : 'Metall';
	
	if(document.getElementById('blechdicke_1').checked==true){
		properties['blechdicke'] = 1;
	}else if(document.getElementById('blechdicke_2').checked==true){
		properties['blechdicke'] = 2;
	}else{
		properties['blechdicke'] = 0;
	}
	
	properties['beplankung']	= document.getElementById('beplankung_1').checked == true ? 'einlagig' : 'doppellagig';
	
	if (document.getElementById('mischkonstruktion_1').checked == true) {
		properties['bauplattendicke'] = 0;
	}
	else {
		if (document.getElementById('bauplattendicke_1').checked == true) {
			properties['bauplattendicke'] = 'BAU1';
		}
		else if (document.getElementById('bauplattendicke_2').checked == true) {
			properties['bauplattendicke'] = 'BAU2';
		}
		else if (document.getElementById('bauplattendicke_3').checked == true) {
			properties['bauplattendicke'] = 'BAU3';
		}
		else if (document.getElementById('bauplattendicke_4').checked == true) {
			properties['bauplattendicke'] = 'BAU4';
		}
		else {
			properties['bauplattendicke'] = 0;
		}
	}
	properties['wandlaenge'] 	= document.getElementById('wandlaenge').value!='' ? parseFloat(document.getElementById('wandlaenge').value+'.'+document.getElementById('wandlaenge_1').value) : 0;
	properties['wandhoehe'] 	= document.getElementById('wandhoehe').value!='' ? parseFloat(document.getElementById('wandhoehe').value+'.'+document.getElementById('wandhoehe_1').value) : 0;
	properties['fliesenhoehe'] 	= document.getElementById('fliesenhoehe').value!='' ? parseFloat(document.getElementById('fliesenhoehe').value+'.'+document.getElementById('fliesenhoehe_1').value) : 0;
	
	var bpl = document.getElementById('format');
	properties['format_bp'] = bpl.options[bpl.selectedIndex].value;
	
	// Show AnimImage
	var waiting = document.getElementById("waitState");
	waiting.style.visibility="visible";

	
	window.setTimeout("actionNow(properties, 'calculator', true)", 500);
	
	return false;
}

function actionNow(arr, callBackFunction, showWaitingState){
	requestEngine(arr, callBackFunction, showWaitingState);
}

function requestEngine(properties, ausgabeFunktion, showWaitingState){
	// try/catch Block um Fehler abzufangen
	try{
		// var waiting = document.getElementById("waitState");
		// Variablen deklarieren
		var data = '';
		// Post Variablen definieren, diese sollte als Parameter 
		// an die Funktion übergeben werden !
		for(property in properties){
			data += '&' + property + '=' + encodeURIComponent(properties[property]);
		}
		// Basis ist das Verzeichnis der Datei welche 
		// diese Funktion includiert hat und aufruft
		var xhttp = false;
		
		// Überprüfen welches ActiveX bzw. welcher Browser vorliegt!
		xhttp = getActiveX();
		
		// xhttp - Objekt initialisiert ist dann Anfrage senden
		if( xhttp ){
			xhttp.open('POST', properties['uri'], true);        
			xhttp.setRequestHeader('Method', 'POST' + properties['uri'] + ' HTTP/1.1');
			xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			xhttp.onreadystatechange = function(){
				if (xhttp.readyState != 4){
					// Solange uri nichts zurückliefert, warten
					return;
				}
				else{
					var result=xhttp.responseText;
					
					switch(ausgabeFunktion){
						case "head":
						break;
						case "calculator":
						 var output = document.getElementById('ergebnis');
						 var error = document.getElementById('error');
						 msg = result.split('][');
						 output.innerHTML = '';
						 if(msg[2]=='0'){
						 	output.innerHTML = msg[0];
						 }
						 error.innerHTML = '';
						 error.innerHTML = msg[1];
						break;						
						default:
						break;
					}
					
					// Hide AnimImage
					if(showWaitingState==true){
						waiting.style.visibility="hidden";
					}
				}
			}
		}
		else{
			// return Fehler
			return "error";
		}
		xhttp.send( data );
		delete xhttp;
	}
	catch(e){
		alert("Fehler in Anwendung" + e);
	}
	// Ende try/catch Block
}

function getActiveX(){
	try{
		xhttp = new ActiveXObject('Msxml2.XMLHTTP');
	} 
	catch (e){
		try { xhttp = new ActiveXObject('Microsoft.XMLHTTP'); } catch (oc)  { xhttp = null;	}
	}
	
	if(!xhttp && typeof XMLHttpRequest != 'undefined'){
		xhttp = new XMLHttpRequest();
	}
	
	return xhttp;
}

/*
 * Sonstige Funktionalitäten:
 * IwView
 */
function checkFields(obj){
	var whichField = obj.options[obj.selectedIndex].value
	var fieldToShow = document.getElementById('fliese');
	
	if(whichField==4){
		fieldToShow.style.visibility="visible";
		
	}else{
		fieldToShow.style.visibility="hidden";
	}
	calculation();
}

function showAuswahl(state){
	var auswahl = document.getElementById('bapladi');
	if(state=='show'){
		auswahl.style.display="";
		
	}else{
		auswahl.style.display="none";	
	}
	calculation();
}

function checkBlechdicke(state){
	var fieldToShow = document.getElementById('blech');
	if(state=='show'){
		fieldToShow.style.visibility="visible";
		document.getElementById('blechdicke_1').checked=true;
	}else{
		fieldToShow.style.visibility="hidden";	
		document.getElementById('blechdicke_1').checked=false;
		document.getElementById('blechdicke_2').checked=false;
	}
	calculation();
}

function clearErg(){
	document.getElementById('ergebnis').innerHTML='';
}

flag = 0;
function highlight(id){
	if(flag == 0){
	var obj = document.getElementById(id);
	var obj_nav = document.getElementById(id+'_links');
	obj.style.backgroundColor="#01AEF0";
	obj_nav.style.display="block";
	obj_nav.style.visibility="visible";
	obj_nav.style.backgroundColor="";
	flag = 1;
	}
}

function downlight(id){
	var obj = document.getElementById(id);
	var obj_nav = document.getElementById(id+'_links');
	obj.style.backgroundColor="#0434B2";
	obj_nav.style.display="none";
	obj_nav.style.visibility="hidden";
	obj_nav.style.backgroundColor="";
	flag = 0;
}
