/*******************************************************************
 * 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						   *
 *******************************************************************/
var counter = 0;
var studspacing = 1; // Ständerachsabstand: 1 =  600 mm, 400 mm, 300 mm | 2 = 325 mm, 625 mm

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(){
	counter++;
	if(counter > 2){

		properties['action'] = 'loadBackground';
		properties['uri'] = '/res/calculator_Oc.php';
		
		properties['s_abstand_variante'] = studspacing;
		if(studspacing == 1){
			if (document.getElementById('s_ab_1').checked == true) {
				properties['s_abstand'] = 300;
			}
		}else{
			if (document.getElementById('s_ab_2').checked == true) {
				properties['s_abstand'] = 312.5;
			}
		}
		
		var system = document.getElementById('oberflaeche');
		properties['system'] = system.options[system.selectedIndex].value;
		
		properties['konstruktion']	= document.getElementById('u_const_1').checked == true ? 'Holz' : 'Metall';
		properties['mischkonstruktion']	= document.getElementById('mischkonstruktion_1').checked == true ? 0 : 1;
		
		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['flaeche'] 		= document.getElementById('flaeche').value!='' ? parseFloat(document.getElementById('flaeche').value+'.'+document.getElementById('flaeche_1').value) : 0;
		var bpl = document.getElementById('format');
		properties['format_bp'] = bpl.options[bpl.selectedIndex].value;
		
		var waiting = document.getElementById("waitState");
		waiting.style.visibility="visible";	
		
		window.setTimeout("actionNow(properties, 'calculator', true)", 500);
		return false;
		
	}else{
		var error = document.getElementById('error');
	 	error.style.border = "none";
		error.innerHTML = '';
		error.style.display = 'none';
		return false;
	}
}

function changeBauplatten(chkField ,studspacing){
	properties['action'] = 'loadBackground';
	properties['uri'] = '/res/changeListBauplatten.php';
	
	properties['size'] 		= chkField;
	properties['auswahl'] 	= studspacing;
	
	var waiting = document.getElementById("waitState");
	waiting.style.visibility="visible";

	window.setTimeout("actionNow(properties, 'bauplatten', 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 "bauplatten":
							showPlatten(result);
						break;						
						case "calculator":
						 var output = document.getElementById('ergebnis');
						 var error = document.getElementById('error');
						 error.style.display = 'block';
						 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){
	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;
flashObj = '';
function highlight(id, flash){
	if(flag == 0){
		if(flash != ''){
			var span = document.getElementById(flash+'_span');
			flashObj = span.innerHTML;
			span.innerHTML = '<img class="menupics" alt="" src="/res/images/aussensysteme220x178.png"/>';
		}
	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, flash){
	if(flash != ''){
		var span = document.getElementById(flash+'_span');
		span.innerHTML = flashObj;
		flashObj = '';
	}
	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;
}

/*
 * Zeigt alle Bauplatten an
 */
function showPlatten(erg){	
	try{
		var Knoten = document.getElementById('format');
		while(Knoten.getElementsByTagName('optgroup').length>0){
			//alert(Knoten.getElementsByTagName('optgroup')[0].label);
			Knoten.removeChild(Knoten.getElementsByTagName('optgroup')[0])
		}
		document.getElementById('format').options.length = 0;
	}
	catch(e){
		var txt = "";
		for (var x in e){
			txt += '\n' + e[x];
		}
		alert ('Errormessage: ' + txt);
	}
	
	// Ab hier werden die Optionen wieder erstellt !

	var arr 			= new Array();
	var phrase			= "";
	var arrDaten 		= erg.split('#');
	var optionNeu 		= null;
	var neueOptionen 	= new Array();
	var z,a 			= 0;
	var y 				= 0;
	var optgroup		= new Array();

	for(i=0; i<arrDaten.length-1;i++){
		phrase=arrDaten[i];
		arr[i]=phrase.split('|');
		
		if(arr[i][0]=="</optgroup>"){
			Knoten.appendChild(optgroup[z]);
			for (x=0 ; x < neueOptionen.length; x++){
				eval("Knoten.options[a] = new Option('" + neueOptionen[x][0] + "')");
				eval("Knoten.options[a].value = '" + neueOptionen[x][1] + "'");
				a++;
			}
			neueOptionen.length = 0;
			y = 0;
			z++;
		}		
		
		else if(arr[i][0]=="<optgroup>"){
			optgroup[z] = document.createElement('optgroup');
			optgroup[z].label = arr[i][1];
		}		
		
		else{
			neueOptionen[y] = new Array('Outdoor ' + arr[i][0], arr[i][1]);
			y++;
		}
	
	}
	
	
	calculation();
}

function loadBauplatten(){
	if (document.getElementById('s_ab_1').checked == true) {
		chkField = 300;
		studspacing = 1;
	}else if(document.getElementById('s_ab_2').checked == true) {
		chkField = 312.5;
		studspacing = 2;
	}
	changeBauplatten(chkField ,studspacing);
}
