/*
Copyright Birgit Pfeil, 2008  adrian-wimmer@gmx.net
*/
/*
id´s:, sc[$options_data.ID]  hervorgehobnes Bild, scc[$options_data.ID]  ausgewähltes Bild, id[$options_data.ID]  input Element
var SC_Color;	//(optionid, fname, fid)
var SC_Sel;		//(optionid, inputelement)
var SC_DATA;	//(fname fid,fid,fid,...,divelement)

*/
var SC_DATA;
var SC_Sel;
var SC_2B = true;
// Variablen für eine Farbbox :
var	SC_BOX_CUR_BASE; // aktueller Farboptionsindex
var SC_BOX_BASE =-1; // Basisoption
// Benutzung: 1.Schritt der Auswahl:Bei mouseOver über der FarbBox wird die Farbe hervorgehoben: 
//e: img im SelectColor<DIV> n1: $options_data.ID n2: $item_data.ID
function selectColor(e,n1,n2){			
	var pic= e.src;						// Auswahlbild
	var p= e.offsetParent;			// übergeordntes Element
//if((p.className!="selectColor")||(p.className!="selectColor1")||(p.className!="selectColor2")) return; //ist die Farbe wählbar?	
if(p.className!="selectColor") return; //ist die Farbe wählbar?
	var s= document.getElementById("sc"+n1);// div element zur vergrößerten Darstellung
	var f= document.getElementById("sc_op"+n1).form; // das Formular
	if((document.getElementById("sc_op"+n1)).value!=""){ // 
		_sc_check_ini(f); //
		if(!document.getElementById("sc2boxes")) SC_2B= false;
		if(document.getElementById("awbp_"+n2)){
			_sc_box_ini(n1);
			SC_2B= false;
		}
	}
	if(SC_2B && document.getElementById("sc2boxes") && document.getElementById("awbp_"+n2)){
			_sc_box_ini(n1);
			SC_2B= false;
		}
	s.style.top= p.offsetTop -4 +"px";   // größe des vergrößerten Auswahlfeldes
	s.style.left= p.offsetLeft -4 +"px";
	s.style.height= p.offsetHeight +8 +"px";
	s.style.width= p.offsetWidth +8 +"px";
	s.style.visibility= "visible";
	s.innerHTML="<img src='"+e.src+"' alt='' onclick=\"chooseColor(this,'"+n1+"','"+n2+"')\"/>";
}
// Benutzung: 2. Schritt der Auswahl: onclick auf das im 1.Schritt erzeugte <img> wird ausgewählt. (die Funktion erscheint nicht im HTML Quelltext. 
function chooseColor(e,n1,n2){ //e= img n1= optionsid n2 = farbid
	// überprüfung, ob Box
	var i1,i2,i3,s;
	var v=(document.getElementById("sc2boxes"))?(document.getElementById("sc2boxes")).value:-1;
	if(SC_BOX_BASE<0 || v==n1){
	document.getElementById("id"+n1).value= n2;
	document.getElementById("scc"+n1).innerHTML="<img src='"+e.src+"' alt='' >";
	}else{
		//Fallunterscheidung one/two boxes:  n1 nicht 

		i1=_sc_get_optindex(n1);
		i2= _sc_get_dataindex(i1,n2);
		i3=n1;
		if(SC_DATA[i2][SC_BOX_CUR_BASE]) n2= SC_DATA[i2][SC_BOX_CUR_BASE];
		n1=SC_Sel[SC_BOX_CUR_BASE-1][0];
		document.getElementById("id"+n1).value= n2;
		document.getElementById("scc"+n1).innerHTML="<img src='"+e.src+"' alt='' >";
		_sc_set_cur_base(); //nächste Farboption funktion setzt SC_BOX_CUR_BASE
		_sc_set_box(SC_BOX_CUR_BASE); //Begrenzung der Farbauswahl
		s= document.getElementById("sc"+i3);// div element zur vergrößerten Darstellung
		s.style.visibility= "hidden";
		s.innerHTML="";
	}
}
function check_n_submit(){
		var e= document.getElementById("awbpx");
	awbp_check_n_submit(e.form);	
}

// Absendefunktion:  4. Schritt: Prüfen, Fehlermelden, Absenden (siehe hierzu auch die Änderung im ShopSystem!)
function awbp_check_n_submit(f){		// Auruf aus der Seite über onclick
// input el in SC_Sel[i][1]
// check auf unausgefüllte Farbe Value<=0 ret index Fehler
// check auf gleiches value() ret= -1= ok  index welche arbe ist falsch
	var k,l,m,n,o,p,_noColorId;
	var _count=0;
	var s= true;
	if(!SC_Sel){
		//info()  keine Auswahl()
		return
	}
	if(document.getElementById("awbp_partSelect")){
		// 2boxes:  eine Farbe mindestens, egal wie oft gewählt, der Rest auf X setzen.
		// id="awbp_partSelect" value="{$item_data.ID}"
		k= document.getElementById("awbp_partSelect"); 
		_noColorId= k.value;
		for(k=0;k<SC_Sel.length;k++){
			o=(SC_Sel[k][1]).value;
			if(o>=0) _count++;
		}
		if(_count==0) s=false;
	}else{
		for(k=0;k<SC_Sel.length;k++){
			o=(SC_Sel[k][1]).value;
			if(o<0){
				s= false;
				// info() unvollständige auswahl. 
				break;
			}
			for(l=k+1;l<SC_Sel.length;l++){
				p=(SC_Sel[l][1]).value;
				if(p<0){
					s= false;
					// info() unvollständige auswahl
					break;
				}
				m=_sc_get_dataindex(k+1,o);
				n=_sc_get_dataindex(l+1,p);
				if(n==m){	// (n==m || n==null )
					s=false;
					// info() gleiche Farbe gewählt
					break;
				}
			}
			if(!s) break;
		}
	}	
	if(s){
		if(document.getElementById("sc2boxes")) // der Form  halber
			(document.getElementById("sc2boxes")).value="";
		f.submit();
		}
}
// Farboptionsindex ändern : Benutzung: 3.Schritt: Korrektur: mit onclick auf das Feld mit der ausgewählten Farbe
function selectColorOption(o){
	var i= _sc_get_optindex(o);
	if(!SC_Sel) return;
	document.getElementById("scc"+o).innerHTML="";
	document.getElementById("id"+o).value="-1";	
	_sc_set_cur_base(i);
	_sc_set_box(i); // auswahl begrenzen
}
/* interne Funktionen ----------------------------------------------------------------------------- */
function _sc_check_ini(f){
	var k,l,m,n,o;
	var _is_set;
	var _box1 = -1;
	var reg=/\d+/;
	var reg1=/<(.+):(\d+)>/g;
	var e= f.elements;
	var SC_Color = new Array();
	SC_Sel = new Array();
	SC_DATA = new Array();
	if(document.getElementById("sc2boxes")){
		k=document.getElementById("sc2boxes");
			_box1= k.value;
	} else {
		// check auf 2 Boxen varable setzen für  nicht bearbeitung von
	}
	for(k=0;k<e.length; k++){
		if(e[k].type=="hidden"){
			n=e[k].name;
			
			if(n.substring(0,3)=="id["){
				l=reg.exec(n)[0];
				if(_box1!=l) SC_Sel[SC_Sel.length]=new Array(l,e[k]); // änderung 
			}			
			if(n.substring(0,2)=="op"){ // daten: Farbe, index
				o=reg.exec(n)[0];
				if(_box1!=o){
					n=e[k].value;
					while(l=reg1.exec(n)){
						SC_Color[SC_Color.length]= new Array (o,l[1],l[2]);
					}
				}	
				e[k].value="";
					
			}
		}	
	}
	for(k=0; k< SC_Color.length;k++){
		_is_set= false;
		for(l=0;l< SC_DATA.length;l++){
			if(SC_Color[k][1]==SC_DATA[l][0]){
				_is_set= true;
				break;
			}
		}
		if(_is_set){
		//	SC_DATA[l]= new Array(SC_Sel.length+1);
			SC_DATA[l][0]= SC_Color[k][1];
		//	n= k[0]
			SC_DATA[l][_sc_get_optindex(SC_Color[k][0])]= SC_Color[k][2];
		}else{
			m= SC_DATA.length;
			SC_DATA[m]= new Array(SC_Sel.length+2);
			SC_DATA[m][0]= SC_Color[k][1];
		//	n= k[0]
			SC_DATA[m][_sc_get_optindex(SC_Color[k][0])]=SC_Color[k][2];
		}
	}
}
function  _sc_box_ini(n1){
	var k;
	var l= SC_Sel.length +1;
	SC_BOX_BASE = _sc_get_optindex(n1);
	SC_BOX_CUR_BASE = SC_BOX_BASE;
	for( k=0; k<SC_DATA.length;k++){
		if(document.getElementById("awbp_"+SC_DATA[k][SC_BOX_BASE]))
			SC_DATA[k][l]= document.getElementById("awbp_"+SC_DATA[k][SC_BOX_BASE]);
	}
}
function _sc_set_box(i){	// index i über _sc_get_optindex() 
	var k,m,n,o;
	var l= SC_Sel.length +1;
	for( k=0; k<SC_DATA.length;k++){	// nur farben der aktuellen Farboption
	if(SC_DATA[k][l]){	// &&... Fehlerbehebung  für zuviele Farben 
			if(SC_DATA[k][i]){	// 
				(SC_DATA[k][l]).className= "selectColor";
			}else{ 
				(SC_DATA[k][l]).className= "unselectColor";
			}
		}
	}
	for(k=0; k<SC_Sel.length; k++){		// ausgewählte Farben ausblenden
		m=(SC_Sel[k][1]).value;
		n= _sc_get_optindex(SC_Sel[k][0]);
		if(m>=0){
			o=_sc_get_dataindex(n,m);
			(SC_DATA[o][l]).className= "unselectColor";
		}
	}	
}
function _sc_set_cur_base(i){ // setzt die zu bearbeitende FarbOption (optindex)
	var k;
	var l;
	if(i) SC_BOX_CUR_BASE=i;
	else{						// auskommentiert am 26.12. wg. Änderung in two_boxes.. 
/*		if(document.getElementById("sc2boxes")){
			if(SC_BOX_CUR_BASE==1) return;
			for(k=1; k<SC_Sel.length; k++){		// SC_Sel;		//(optionid, inputelement)
				if((SC_Sel[k][1]).value=="-1"){
					l=k+1;
					break;
				}
			}
			if(!l)	l=(SC_BOX_CUR_BASE<SC_Sel.length)?SC_BOX_CUR_BASE+1:2;
			SC_BOX_CUR_BASE=l;			
		}else{ */
			for(k=0; k<SC_Sel.length; k++){		// SC_Sel;		//(optionid, inputelement)
				if((SC_Sel[k][1]).value=="-1"){
					l=k+1;
					break;
				}
			}
			if(!l)	l=(SC_BOX_CUR_BASE<SC_Sel.length)?SC_BOX_CUR_BASE+1:1;
			SC_BOX_CUR_BASE=l;
	//	}
	}
}
function _sc_get_optindex(i){	// intern:  Übergibt zur optionId den Index in SC_DATA
	for(var k=0; k<SC_Sel.length;k++){
		if(SC_Sel[k][0]== i) return ++k;
	}
	return null;
}
function _sc_get_dataindex(o,i){		// übergibt zum  SC_DATA optindex (1... ) und zum farbindex den sc-dataindex	
	var k;
	var l= SC_DATA.length;
	for(k=0; k<SC_DATA.length;k++){
		if(SC_DATA[k][o]== i) return k;
	}
	return null;
}
function _sc_get_fname(o,i){		// übergibt zum  SC_DATA optindex (1... ) und zum Farbindex den Farbnamen	
	var k;
	for(k=0; k<SC_DATA.length;k++){
		if(SC_DATA[k][o]== i) return SC_Data[k][0];
	}
	return null;
}
function _sc_get_findex(o,n){		// übergibt zum  SC_DATA optindex (1... ) und zum Farbnamen den Farbindex	
	var k;
	for(k=0; k<SC_DATA.length;k++){
		if(SC_DATA[k][0]== n) return SC_Data[k][o];
	}
	return null;
}
function getParentNodeByTag(e,n){		
	var f;
	do{
		e= e.parentNode;
		f= e.tagName.toLowerCase();
	}while(f.substring(0,4)!="body" || f.substring(0,n.length)!=n.toLowerCase());
	if(f.substring(0,4)=="body") if(n.toLowerCase!="body") return null;
	return e;
}
function getFormElement(e){
	return getParentNodeByTag(e,"form");
}	
/* Ende */
