/*** 

 * Diese Funktion simuliert eine Art vorladen. Allerdings wird in wirklichkeit die Funktion immer erst

 * am Ende einer Webseite aufgerufen so das Sie automatisch erst dann die größe des Fensters verändert

 * wenn das Fenster den kompletten Inhalt dargestellt hat.

 */

var preStatus = 0;

function preloader() {

	if(preStatus==0) {

		document.getElementById('plswait').style.display = 'none';

		if (navigator.userAgent.indexOf('MSIE') != -1) {
			var windowwidth 	= document.documentElement.offsetHeight;
			var windowheight 	= document.documentElement.offsetHeight;

		} else {
			var windowwidth 	= this.window.innerWidth;
			var windowheight 	= this.window.innerHeight;
		} // if else	

		if(windowwidth<800 && windowheight<600) {
			window.resizeTo(1000, 700);
		}
		
		windowsize();
		
		// Nur für IE
		if(LoadMuster) {
			setTimeout('LoadMuster()',100);
		}

		preStatus = 1;

	} // if

} // function



/***

 *

 */

function compareFFo2cPlayer() {

	// o2cPlugin Erkennung

	if(!navigator.plugins['O2C-Player Plug-In']) {

		alert('Sie benötigen das o2cPlayer Plugin um den Konfigurator benutzen zu können. Sie werden auf die o2cPlayer Plugin Seite verwiesen, nach der Installation starten Sie den Konfigurator erneut.');

		// Angezeigter Name und Download-URL

		var npo2c_xpi = {'O2C-Player Plug-In':'http://www.o2c.de/download/plugin/o2cplayer.xpi'};

		InstallTrigger.install(npo2c_xpi);

	} else {

		// Zur Kontrolle 

		// alert(InstallTrigger.getVersion('Plugins/ELECO/O2CPlayer'));

		if(InstallTrigger.compareVersion('Plugins/ELECO/O2CPlayer','2.0.0.22')<0) {

			InstallTrigger.startSoftwareUpdate('http://www.o2c.de/download/plugin/o2cplayer.xpi');

		}

	}

} // function





/***

 * Diese Funktion erzeugt ein neues Fenster, das beim löschen einen Objektes erzeugt wird um

 * den User zu vermitteln das gerade etwas verarbeitet wird und dieser möglichst nichts machen sollte.

 */

var win = '';

function openWin() {

	win = window.open('about:blank','Progress','toolbar=no,width=200,height=100, directories=no,status=no,scrollbars=no,resize=no,menubar=no');

	win.document.writeln('<hmtl><head><title>L&auml;dt.........................</title></head>'); 

	win.document.writeln('<body style="background: url(fileadmin/template/main/images/konf_loading.gif) no-repeat center center;font-size: 76%;text-align: center;font-family: font-family:Verdana, Arial, Helvetica, sans-serif">');

	win.document.writeln('<p><strong style="color:red">Löschvorgang wird bearbeitet...</strong><br /><br /><br /><br />');

	win.document.writeln('Bitte warten</p>');

	win.document.writeln('</body></html>');

} // function





/***

 * Funktion welche die Preise ausliest und ggf. auf 0.00 setzt

 *

 * @param artid 

 */

function getPrices(artid) {

	var buildinOne = document.getElementById(artid).innerHTML;	

	alert(buildinOne);

} // function





/***
 * Diese Funktion ist für die "simulierte 100%" Höhe der iFrame & Content Box verantwortlich.
 * Sie ermittelt zu erst die verfügbare Höhe anschließend wird eine vordefinierte Höhe subtrahiert
 * und die Höhen der Styles werden aktualisiert.
 */
/*
var iheight;
var oheight = 0;
function windowsize() {	
	if (navigator.userAgent.indexOf('MSIE') != -1) {
		var windowheight 	= document.documentElement.offsetHeight;
		var explorer_a		= 184;
		var explorer_b		= 136;
	} else {
		var windowheight 	= this.window.innerHeight;
		var explorer_a		= 182;
		var explorer_b		= 134;
	} // if else	


	var iframeoptions = document.getElementById('options').className;
	if(iframeoptions == 'hideiframe') {
		var minus_a = explorer_a;
		var minus_b = explorer_b;
	} else {
		var minus_a = explorer_a;
		var minus_b = explorer_b+parseInt(iheight)+oheight;
	} // if else

	var iframeheight = windowheight - minus_a;
	var pluginheight = windowheight - minus_b;
	var o2cheight = pluginheight;
	document.getElementById('konfiframe').height = iframeheight+'px';
	document.getElementById('content').style.height = (pluginheight>=100) ? pluginheight+'px' : '100px';
	document.getElementById('o2cPlayer').height = (o2cheight>=100) ? o2cheight+'px' : '100px';

} */
var iheight;
var oheight = 0;
function windowsize() {	
	if (navigator.userAgent.indexOf('MSIE') != -1) {
		var windowheight 	= document.documentElement.offsetHeight;
		var explorer_a		= 159;
		var explorer_b		= 136;
		var noPlayer = 1;
	} else {
		var windowheight 	= this.window.innerHeight;
		var explorer_a		= 157;
		var explorer_b		= 134;
		var noPlayer = 0;
	} // if else	

	var iframeoptions = document.getElementById('options').className;
	if(iframeoptions == 'hideiframe') {
		var minus_a = explorer_a;
		var minus_b = explorer_b;
	} else {
		var minus_a = explorer_a;
		var minus_b = explorer_b+parseInt(iheight)+oheight;
	} // if else
	
	var iframeheight = windowheight - minus_a;
	var pluginheight = windowheight - minus_b;
	var o2cheight = pluginheight; /* - 13; */
	document.getElementById('konfiframe').style.height = iframeheight+'px';

if(musterAnlagenH && (iframetarget.location.pathname=='/musteranlagen_p.html' || iframetarget.location.pathname=='/musteranlagen_dg.html' || iframetarget.location.pathname=='/musteranlagen_mb.html')) {
        document.getElementById('konfioptions').style.height = o2cheight+'px';
	document.getElementById('o2cPlayer').height = noPlayer;
	document.getElementById('content').style.height = '0px';
} else {
	document.getElementById('content').style.height = pluginheight+'px';
	document.getElementById('o2cPlayer').height = o2cheight;
        musterAnlagenH = false;
}
        
} // function






/***

 * Diese Funktion ist für die Minimalisierung des Options Fensters

 */

function windowmin() {
	document.getElementById('options').className = 'hideiframe';
	musterAnlagenH = false;
	windowsize();
	document.o2cPlayer.focus();
} // function





/***

 * Diese Funktion ist für die Maximalisierung des Options Fensters

 */
function windowmax() {
	document.getElementById('options').className = 'showiframe';
	musterAnlagenH = (iframetarget.location.pathname=='/musteranlagen_p.html' || iframetarget.location.pathname=='/musteranlagen_dg.html' || iframetarget.location.pathname=='/musteranlagen_dg.html') ? true : false;
	windowsize();
	document.o2cPlayer.focus();
} // function





/***

 * Diese Funktion ist für die Darstellung der iFrames verantwortlich, 

 * sowie für das schließen des iFrames. Sie hat einen Optionalen Parameter

 * der nur zum schließen benötigt wird.

 *

 * @param {Boolean} closeIt 

 * @param {Long} height 

 */

function setIframe(closeIt,height) {

	var iframeoptions = document.getElementById('options').className;

	if(iframeoptions == 'hideiframe' && closeIt == false || iframeoptions == 'showiframe' && closeIt == false) {

		document.getElementById('options').className = 'showiframe';

		document.getElementById('closeiframe').className = 'showiframe';

		document.getElementById('konfioptions').style.height = height+'px';

		iheight = height;

	} else if(closeIt == true) {

		document.getElementById('options').className = 'hideiframe';

		document.getElementById('closeiframe').className = 'hideiframe';
		musterAnlagenH = false;
	} // if else

	windowsize();

	document.o2cPlayer.focus();

} // function





/***

 * Diese Funktion ist für die Darstellung der OptionsPalette Buttons verantwortlich, 

 * sowie für das schließen der OptionsPalette. Sie hat einen Optionalen Parameter

 * der nur zum schließen benötigt wird.

 *

 * @param {Boolean} closeIt 

 * @param {String} posBtns 

 */

function setOptionsPalette(closeIt,posBtns) {

 	var iframeoptions = document.getElementById('optionpalette').className;

	if(iframeoptions == 'hideiframe' && closeIt == false || iframeoptions == 'showiframe' && closeIt == false) {

		document.getElementById('optionpalette').className = 'showiframe';

		oheight = 20;

	} else if(closeIt == true) {

		document.getElementById('optionpalette').className = 'hideiframe';

		oheight = 0;

	} // if else



	if(posBtns) { 

		if(posBtns.indexOf('y') >= 0) { document.getElementById('btn_ja').className = 'showbutton';	} else { document.getElementById('btn_ja').className = 'hidebutton';	 } 

		if(posBtns.indexOf('n') >= 0) { document.getElementById('btn_nein').className = 'showbutton';	} else { document.getElementById('btn_nein').className = 'hidebutton'; } 

		if(posBtns.indexOf('h') >= 0) { document.getElementById('btn_hinzufugen').className = 'showbutton';	} else { document.getElementById('btn_hinzufugen').className = 'hidebutton'; } 

		if(posBtns.indexOf('s') >= 0) { document.getElementById('btn_senden').className = 'showbutton';	} else { document.getElementById('btn_senden').className = 'hidebutton'; } 

		if(posBtns.indexOf('p') >= 0) { document.getElementById('btn_print').className = 'showbutton';	} else { document.getElementById('btn_print').className = 'hidebutton'; } 

	} else {

		document.getElementById('btn_ja').className = 'hidebutton';	

		document.getElementById('btn_nein').className = 'hidebutton';	

		document.getElementById('btn_hinzufugen').className = 'hidebutton';

		document.getElementById('btn_senden').className = 'hidebutton';	

		document.getElementById('btn_print').className = 'hidebutton';	

	} // if else

	windowsize();

	document.o2cPlayer.focus();

} // function





/***

 * Diese Funktion ist für die schließung des Konfigurators verantwortlich.

 *

 * @param {Boolean} Check 

 */

function closeKonfigurator(Check) {

	if (Check == false)

		setIframe(true,0);

	else if (Check == true) 

	 	window.close();

} // function





/***

 * Diese Funktion ist für das Feld der Objekt Suche verantwortlich,

 * Sie lässt das Feld nie leer!

 * 

 * @ToDo Funktion beinhaltet einen Rechtschreibfehler control statt controll!

 * Die Funktion muss umgeschrieben und da wo sie verwendet wird geändert werden!

 */

function controll(action) {

	switch(action) {

		case 'focus':

			document.getElementById('ObjectSearch').value = '';

			break;

		case 'blur':

			if(document.getElementById('ObjectSearch').value == '') {

				document.getElementById('ObjectSearch').value = 'Art. Nr.';

			} // if

			break;

	} // switch

} // function





/***

 * Diese Funktion setzt das Value des Attachments-Select-Feld

 */

function setAttachments() {

	if(iframetarget.document.getElementById('ttp_befestigung')) {

		var minBefestigung = (iframetarget.document.getElementById('ttp_befestigung').value).split('|');

		if(minBefestigung[0]>0) {

			iframetarget.document.getElementById('ttp_basketquantity').name = 'ttp_basket['+minBefestigung[0]+'][quantity]';

			iframetarget.document.getElementById('ttp_basketquantity').value = parseInt(minBefestigung[1])+parseInt(iframetarget.document.getElementById('tempBefestigung'+minBefestigung[0]).value);

		} // if

	} // if

} // function





/***

 * Ist für die Objekt-Navigation verantwortlich. Wechselt zwischen Bau und Klick-Objekten.

 */

function setBuildObject(PRODUCT_ID,BEFESTIGUNG_ID) {

	if(PRODUCT_ID) {

		iframenavigation.window.location.href = 'http://'+window.location.hostname+'/konf_navigationen_bo.html?tt_products='+PRODUCT_ID+'&KOIMAGE='+KlickObj+'&objCTurn='+CurFan+'&befid='+BEFESTIGUNG_ID+MP;

		BauObj = PRODUCT_ID;

	} // if

} // function





/***

 * Ist ebenfalls für die Objekt-Navigation verantwortlich. Wechselt zwischen Bau und Klick-Objekten.

 * Wird vom o2c-Player aufgerufen sobald ein Objekt "angeklickt" wird.

 *

 * @param {String} OBJ_ID

 */

function setClickObject(OBJ_ID) {

	if(OBJ_ID>0 && OBJ_ID != BoundID) {

		var ObjectData = document.o2cPlayer.ObjectGetUserData(OBJ_ID).split(',');

		iframenavigation.window.location.href = 'http://'+window.location.hostname+'/konf_navigationen_ko.html?tt_products='+ObjectData[0]+'&befid='+ObjectData[3]+'&KOIMAGE=42'+MP;

//		objecttarget.window.location.reload(); 

//		objecttarget.window.location.href = 'http://'+window.location.hostname+'/konf_alle_kategorien.html?ttp_BuildObj='+ObjectData[0]+MP;

//		document.suchform.ttp_BuildObj.value = ObjectData[0];	

		document.o2cPlayer.CurrentObject = OBJ_ID;

		BevorKlickObjPlayer = KlickObjPlayer;

		KlickObjPlayer = OBJ_ID;

		KlickObj = ObjectData[0]; // Doppeltgemoppelt hält besser

		if(document.o2cPlayer.CurrentObject == 0) {

			CurFan = 360;

		} else {

			var ObjectData = document.o2cPlayer.ObjectGetUserData(document.o2cPlayer.CurrentObject).split(',');

			CurFan = ObjectData[1];

		} // if else		

		// Zusatzfunktion BoundingBox von Pascal Hinz 24.05.2006

		// setBoundingBox(OBJ_ID);

		// Zusatzfunktion BoundingBoxTexture von Pascal Hinz 30.05.2006

		setBoundingBoxTexture(OBJ_ID);

	} // if

} // function





/***

 * Benötigte Variabeln für die BoundingBox funktionen

 */

var BoundTexture = false;

// Backup Variabeln

var BupID;

var getMaterial = new Array();

var getTexture = new Array();

var CurrentTexture;

var CurrentMaterial;





/***

 * Diese Funktion macht die Makierung wieder rückgängig und ersetzt die "rote"-Textur

 * durch die alte Standard-Textur des Objektes.

 *

 * @param {String} objectID Die ID des Objektes wo die Makierung und Textur zurück gesetzt werden sollen.

 */

function dsetBoundingBoxTexture(objectID) {

	if(BoundTexture == true && objectID < 1) {

		var a = document.o2cPlayer.CurrentObject;

		// Setzt die Backup ID als CurrentObjekt	

		document.o2cPlayer.CurrentObject = BupID;

		// Schleife um die alte Texturen wieder zusammen zuführen

		for(i=0;i<CurrentTexture;i++) {

			if(document.o2cPlayer.GetTexture(i)!='') {

				document.o2cPlayer.ReplaceTexture(i,'fileadmin/texturen/holz.jpg');

			} // if

		} // for

		// Schleife um die alten Materialien wieder zusammen zuführen

		for(j=0;j<CurrentMaterial;j++) {

			// Ersetzt das Material

			document.o2cPlayer.ReplaceMaterial(j, getMaterial[j][0], getMaterial[j][1], getMaterial[j][2], getMaterial[j][3], getMaterial[j][4], getMaterial[j][5], getMaterial[j][6]);	

		} // for	

		// Setzte das aktuelle Objekt wieder als Current

		document.o2cPlayer.CurrentObject = a;

		BoundTexture = false;

	} // if

} // function





/***

 * Diese Funktion ersetzt die Textur des zu markierenden Objektes durch eine "rote"-Textur.

 * Ansonsten würden diese sich mischen!

 *

 * @param {String} objectID Die ID des Objektes dessen Texture ausgetauscht werden soll.

 */

function setBoundingBoxTexture(objectID) {

	// Backup funktion um das alte Material wieder einzusetzen.



	if(BoundTexture == true) {

		// Setzt die Backup ID als CurrentObjekt	

		document.o2cPlayer.CurrentObject = BupID;

		// Schleife um die alte Texturen wieder zusammen zuführen

		for(i=0;i<CurrentTexture;i++) {

			if(document.o2cPlayer.GetTexture(i)!='') {

				document.o2cPlayer.ReplaceTexture(i,'fileadmin/texturen/holz.jpg');

			} // if

		} // for



		// Schleife um die alten Materialien wieder zusammen zuführen

		for(j=0;j<CurrentMaterial;j++) {

			// Ersetzt das Material

			document.o2cPlayer.ReplaceMaterial(j, getMaterial[j][0], getMaterial[j][1], getMaterial[j][2], getMaterial[j][3], getMaterial[j][4], getMaterial[j][5], getMaterial[j][6]);	

		} // for



		// Setzt das Aktuelle Objekt wieder als Current Objekt

		document.o2cPlayer.CurrentObject = objectID;

	} else {

		// Makiert den erst Start

		BoundTexture = true;

	} // if else



	// Ermittelt die Anzahl der Texturen und Materialien

	CurrentTexture 	= document.o2cPlayer.GetTextureCount();

	CurrentMaterial = document.o2cPlayer.GetMaterialCount();	

	for(i=0;i<CurrentTexture;i++) {

		if(document.o2cPlayer.GetTexture(i)!='') {

			document.o2cPlayer.ReplaceTexture(i,'fileadmin/texturen/boundingbox.jpg');	

		} // if

	} // for



	for(j=0;j<CurrentMaterial;j++) {



			// Liest die Material Eigenschaften aus und speichert Sie

			getMaterial[j] = (document.o2cPlayer.GetMaterialAsString(j)) ? document.o2cPlayer.GetMaterialAsString(j).split(',') : '' ;

			// Wandelt die ZEICHENKETTEN in ZAHLEN um

			for(i=0;i<getMaterial[j].length;i++) {

				getMaterial[j][i] = parseFloat(getMaterial[j][i]);

				getMaterial[j][i] = (isNaN(getMaterial[j][i])) ? 0 : getMaterial[j][i];

			} // for

			

			// Ermittel die Farbe

			getColor = (getMaterial[j][0] == '') ? getMaterial[j][0] : RGB(255,0,0) ;

			

			// Ersetzt das Material

			document.o2cPlayer.ReplaceMaterial(j, getColor, getMaterial[j][1], getMaterial[j][2], getMaterial[j][3], getMaterial[j][4], getMaterial[j][5], getMaterial[j][6]);	

	

	} // for



	// Backup ID

	BupID = objectID;



} //function





/***

 * Diese Funktion wandelt eine RGB-Angabe als eine BIT-Kette um gibt sie als LONG wieder

 *

 * @param {Long} r Farbwert für den ROT-Kanal

 * @param {Long} g Farbwert für den GRÜN-Kanal

 * @param {Long} b Farbwert für den BLAU-Kanal

 * @return {Long} Farbwert in Bit

 */

function RGB(r, g, b) {

  var col;

  col = r | (g << 8) | (b << 16);

  return col;

} // function





/***

 * Diese Funktion setzt eine BounidgBox um ein mit der Maus markiertes Objekt.

 *

 * @param {String} objectID Id des Objekt das markiert werden soll.

 */

var Bound = false;

var BoundID;

function setBoundingBox(objectID) {



	// Ermittelt die Position und Größen

	 CurrentPosition = document.o2cPlayer.ObjectGetPositionAsString(objectID);

	 CurrentX = document.o2cPlayer.ObjectGetExtendX(false);

	 CurrentY = document.o2cPlayer.ObjectGetExtendY(false);

	 CurrentZ = document.o2cPlayer.ObjectGetExtendZ(false);

	// CurrentPosition = o2cPlayer.ObjectGetRealPositionAsString(objectID);

	

	// Läd die BoundingBox wenn nicht schon vorhanden.

	if(Bound == false) {

		document.o2cPlayer.CurrentObject = document.o2cPlayer.AddObject(Fileadmin[0]+'000_BoundingBox.o2c');

		document.o2cPlayer.ObjectShow(true);

		BoundID = document.o2cPlayer.CurrentObject;

		Bound = true;

	} else {

		document.o2cPlayer.CurrentObject = BoundID;

	} // if else



	nCurrentX = CurrentX/2;

	nCurrentY = CurrentY/2;

	nCurrentZ = CurrentZ/2;



	document.o2cPlayer.ObjectResetPosition();

	document.o2cPlayer.ObjectSetPositionFromString(BoundID,CurrentPosition);

	document.o2cPlayer.ObjectScale(nCurrentX, nCurrentY, nCurrentZ);

	document.o2cPlayer.CurrentObject = objectID;

} // function





/***

 * Diese Funktion ist neu und ist für das Schaukelsystem entwickelt worden, sie aktiviert den mittig-Button

 * damit dieser dafür genutzt werden kann Objekte in der Horizontalen mittig auszurichten.

 */

function setActionButtonMittig() {

    iframenavigation.document.getElementById('mittig').removeAttribute('disabled');

} // function





/***

 * Wenn das o2cCurrentObjekt gleich die Landschaft oder dem erstem Grundobjekt ist dann werden die 

 * Löschen Buttons ausgeblendet.

 *

 * @param {String} PRODUCT_XYZ 

 * @param {String} ebene 

 */

function setActionButtons(PRODUCT_XYZ,ebene) {

	if(document.o2cPlayer.CurrentObject == 0 || !document.o2cPlayer.CurrentObject || document.o2cPlayer.CurrentObject == 1) { 

		iframenavigation.document.getElementById('objdelete').setAttribute('disabled','disabled');

	} else { 

		if(document.o2cPlayer.CurrentObject && document.o2cPlayer.CurrentObject > 1) {

			iframenavigation.document.getElementById('objdelete').removeAttribute('disabled');

		} // if

	} // if else

	if(ebene == true) {

		iframenavigation.document.getElementById('hoch').removeAttribute('disabled');

		iframenavigation.document.getElementById('mittig').removeAttribute('disabled');

		iframenavigation.document.getElementById('mittig').click();

		iframenavigation.document.getElementById('tief').removeAttribute('disabled');

	} // if

	if(PRODUCT_XYZ) {

		if(PRODUCT_XYZ[0]!=null) {

			iframenavigation.document.getElementById('norden').removeAttribute('disabled');

			setTimeout('iframenavigation.document.getElementById("norden").click()',10);

		} // if

		if(PRODUCT_XYZ[1]!=null) {

			iframenavigation.document.getElementById('osten').removeAttribute('disabled');

			setTimeout('iframenavigation.document.getElementById("osten").click()',10);

		} // if

		if(PRODUCT_XYZ[2]!=null) {

			iframenavigation.document.getElementById('suden').removeAttribute('disabled');

			setTimeout('iframenavigation.document.getElementById("suden").click()',10);

		} // if

		if(PRODUCT_XYZ[3]!=null) {

			iframenavigation.document.getElementById('westen').removeAttribute('disabled');

			setTimeout('iframenavigation.document.getElementById("westen").click()',10);

		} // if	

	} // if

} // function





/***

 * Diese Funktion ruft das Bild-Speichern Menü auf

 */

function saveBitmap() {

	document.o2cPlayer.SaveBitmap(2,true,800,600,'');

} // function





/***

 * Setzt den o2cPlayer auf sichtbar

 * 

 * Wird momentan nicht benötigt!

 */

/* function setPlayer() {

	document.getElementById('colo2c').style.visibility='visible';

}*/
