/***
 * Fügt ein Object hinzu und öffnet das Options Fenster!
 * Modifizierte o2cAddObject()-Funktion die beim laden eines Objektes aufgerufen wird.
 *
 * @param {String} OBJPFAD Der Pfad zur o2c-Datei
 * @param {String} PRODUCT_ID Die vom typo3-Shop generierte ID des Produktes
 * @param {String} objTurn Die Start-Dreh-Position des Objektes, Standard: 360
 * @param {Boolean} p_ObjShow Hier wird definiert ob das Objekt im Player angezeigt werden soll oder nicht
 * @param {String} p_ObjBefestigung Die vom typo3-Shop generierte ID des Produktes das als Befestigung diehnt
 * @param {String} p_KlickObjPlayer Die vom typo3-Shop generierte ID des Objektes an dem das neue angebaut wird
 */
function o2cAddObject2(OBJPFAD,PRODUCT_ID,objTurn,p_ObjShow,p_ObjBefestigung,p_KlickObjPlayer) {
	document.o2cPlayer.CurrentObject = document.o2cPlayer.AddObject(Fileadmin[0]+OBJPFAD);
	document.o2cPlayer.ObjectSetUserData(document.o2cPlayer.CurrentObject,PRODUCT_ID+','+objTurn+','+p_KlickObjPlayer+','+p_ObjBefestigung);
	// NewFunc: Speichert das o2c-Objekt ins o2cSave Array
	SaveNew(document.o2cPlayer.CurrentObject,PRODUCT_ID,objTurn,OBJPFAD,p_ObjShow,p_ObjBefestigung,p_KlickObjPlayer);

	// Ende NewFunc
	if(p_ObjShow=='true') {
		document.o2cPlayer.ObjectShow(true);
	} // if
	
} // function


/***
 * Speichert das o2c-Objekt ins o2cSave Array, benötigt Parameter und das Array o2cSave!
 * 
 * @param {String} p_ObjID Objekt-ID des zu speichernen Objektes
 * @param {String} p_ProId Die vom typo3-Shop generierte ID des Produktes
 * @param {String} p_ObjTurn Die aktuelle Dreh-Position des Objektes
 * @param {String} p_ObjPfad Der Pfad zur o2c-Datei
 * @param {Boolean} p_ObjShow Ob das Objekt angezeigt werden soll oder nicht, steht auch dafür ob ein Objekt gelöscht wurde oder nicht
 * @param {String} p_ObjBefestigung Die vom typo3-Shop generierte ID des Produktes das als Befestigung diehnt
 * @param {String} p_KlickObjPlayer Die vom typo3-Shop generierte ID des Objektes an dem das neue angebaut wird
 */
function SaveNew(p_ObjID,p_ProId,p_ObjTurn,p_ObjPfad,p_ObjShow,p_ObjBefestigung,p_KlickObjPlayer) {
	// Erzeugt ein neues Array in dem o2cSave Array
	o2cSave[p_ObjID] = new Array();
	// Ermittelt die XYZ Position
	var objPos = document.o2cPlayer.ObjectGetPositionAsString(p_ObjID).split('/'); 
	// Parameter
	o2cSave[p_ObjID][0] = p_ObjID; // Objekt ID
	o2cSave[p_ObjID][1] = p_ProId; // Product ID
	// o2cSave[p_ObjID][2] = document.o2cPlayer.ObjectGetPositionAsString(p_ObjID);	// objXY
	o2cSave[p_ObjID][2] = objPos[12]+'/'+objPos[13]+'/'+objPos[14]; // Objekt Koordinaten
	o2cSave[p_ObjID][3] = p_ObjTurn; // objTurn
	o2cSave[p_ObjID][4] = p_ObjPfad; // Objekt Pfad
	o2cSave[p_ObjID][5] = p_ObjShow; // Anzeigen Ja/Nein
	o2cSave[p_ObjID][6] = p_ObjBefestigung; // BefestigungsID
	o2cSave[p_ObjID][7] = p_KlickObjPlayer; // KlickObj
} // function


/*** 
 * Überschreibt vorhandene Einträge in dem o2cSave Array 
 * Parameter Objekt ID und Funktion werden benötigt.
 *
 * @param {String} p_ObjID
 * @param {String} p_Func
 * @param {String} p_ObjTurn
 */
function SaveOverwrite(p_ObjID,p_Func,p_ObjTurn) {
	if(p_ObjID) {
		switch(p_Func) {
			case 'POS': 	
				// Ermittelt die XYZ Position
				var objPos = document.o2cPlayer.ObjectGetPositionAsString(p_ObjID).split('/'); 
				// o2cSave[p_ObjID][2] = document.o2cPlayer.ObjectGetPositionAsString(p_ObjID);
				o2cSave[p_ObjID][2] = objPos[12]+'/'+objPos[13]+'/'+objPos[14]; // Objekt Koordinaten
                o2cSave[p_ObjID][3] = p_ObjTurn;
				break;
			case 'DEL':
				o2cSave[p_ObjID][5] = false;
				break;
		} // switch
	} // if
} // function


/***
 * Generiert den SaveCode und gibt in dem angegebenen Element aus
 */
function SaveGet() {
               iframetarget.document.getElementById('saveName').value = document.getElementById('projectName').childNodes[0].nodeValue;
	if(iframetarget.document.getElementById('saveCode')) {
		iframetarget.document.getElementById('saveCode').value = o2cSave.join('#');	
	}
} // function


/***
 * Läd die vorhandene Komposition aus dem o2cSave Array
 * 
 * @param {String} loadString Der Lade-String bestehend aus Position und Objekt-IDs damit die gespeicherte Konfiguration nachgebaut werden kann
 */
function LoadIt(loadString) {
	// Funktion die alle vorhandenen Objekte löscht um die Arbeitsfläche zu bereinigen
	for(i=0;i<o2cSave.length;i++) {
		if(o2cSave[i]) {
			document.o2cPlayer.CurrentObject = o2cSave[i][0];
			document.o2cPlayer.ObjectDelete();
		} // if
	} // for

	Bound = false;
	document.o2cPlayer.FlushCaches(true,false,false,false);

	// Zerteilt den loadString in seine erste Array Ebene
	var o2cLoad = loadString.split('#');

	// Erstellt ein neues Load Array
	var o2cLoad2 = new Array();

	// löscht das aktuelle o2cSave Array
	o2cSave = new Array();

	// Füllt das o2cSave Array mit den geladenen daten
	for(i=0;i<o2cLoad.length;i++) {
		o2cLoad2[i] = new Array();
		o2cLoad2[i] = o2cLoad[i].split(',');
	} // for

	// Füllt das o2cSave Array mit den geladenen daten
	for(i=0;i<o2cLoad.length;i++) {
		if(o2cLoad[i]) {
			o2cAddObject2(o2cLoad2[i][4],o2cLoad2[i][1],o2cLoad2[i][3],o2cLoad2[i][5],o2cLoad2[i][6],o2cLoad2[i][7]);
		} // if
	} // for

	// Füllt das o2cSave Array mit den geladenen daten
	for(i=0;i<o2cLoad.length;i++) {
		if(o2cLoad[i]) {
			o2cSetPosition2(o2cLoad2[i][0],o2cLoad2[i][2],o2cLoad2[i][3]);	
		} // if
	} // for
	
	// Die Optionen deaktivieren
	document.o2cPlayer.CurrentObject = 0;
	iframenavigation.window.location.href = 'http://'+window.location.hostname+'/konf_navigationen_ko.html?tt_products=2'+MP;	

} // function


/***
 * Setzt die Positionen (Modifiziert für SaveLoad)
 *
 * @param {String} objID Die Objekt-ID des zu positionierenden Objektes
 * @param {String} objXYZ Der neue Positions-String
 * @param {String} objTurn Die neue Dreh-Position
 */
function o2cSetPosition2(objID,objXYZ,objTurn) {
	var cc = document.o2cPlayer.CurrentObject;
	document.o2cPlayer.CurrentObject = objID;
	// Wandelt das Positions Array in eine Zeichenkette und übergibt es an o2c	
	var NewPosition = objXYZ.split('/');
	var objPos = document.o2cPlayer.ObjectGetPositionAsString(objID).split('/'); 
	objPos[12] = NewPosition[0];
	objPos[13] = NewPosition[1];
	objPos[14] = NewPosition[2];
	objPos = objPos.join('/')
	document.o2cPlayer.ObjectSetPositionFromString(objID,objPos);
	// Objekt drehen
	CacheObjTurn = objTurn;
	SaveOverwrite(objID,'POS',objTurn);
	objTurn = objTurn.split('|');
	document.o2cPlayer.ObjectTurn(0,1,0,objTurn[1]);
	document.o2cPlayer.ObjectTurn(0,0,1,objTurn[0]);
	
	document.o2cPlayer.CurrentObject = cc;

} // function
