// ----------------------------------------------
// tecton.js	Version 20.12.2004/1607
// ----------------------------------------------
var olactive    = null;
var bInitLico   = false;
var tectonpage  = null;
var bNotlicht   = false;
var bLuxmate    = false;
var nlControl   = 'NL0';
var lsControl   = 'LS10';
var maxLen      = 0.00;
var minLBLen    = 1.50;
var amp         = unescape('%26');

var dFreeSpace=0.0;

function WC() {
	if (typeof(WaitCursor)=='function') WaitCursor();
}

function showBubble(sAdvImage, sBubbleText, sAdvText) {
		    //debugger;
			try {
				overlib(sBubbleText, BUBBLE, BUBBLETYPE, 'zs',  REF,sAdvImage, REFX,-35,REFY,-30,ADJBUBBLE, TEXTFONTCLASS, 'comic20', STICKY, TIMEOUT, 6000);
			}
			catch(e) {
			}
}


function winOnLoad(){	
  	 var elfo=document.forms[0];  	 
  	 if(elfo){  	 	
		tectonpage = elfo.id;		
		if(tectonpage=='tectonpage1'){
		 	initPage1();
		}		
		if(tectonpage=='page2'){
			FormatAllNumbers( elfo );
			initPage2();
		} 		
		if(tectonpage=='tecton3'){
			FormatAllNumbers( elfo );
			initPage3();
		}
  	 } 
	 // debugger;
	 if(xGetElementById('TEC_SHOWPRICEINFO'))
		window.setTimeout("showBubble('TEC_SHOWPRICEINFO', msgShowPriceInfo,'');", 2000);
}
// ---------------------- form handler -----------------------------//
function submitForm(pfrm,href,elem,target){
    var elfo = xGetElementById(pfrm); 
    if(checkAll()==true){  
	    if( elfo ) {
			WC();
	    	eh=elfo.href;
	    	et=elfo.target;
	    	if(href) elfo.action=loadTectonURL( href );
	    	if(target) elfo.target=target;	    	
	    	CheckAllNumbers( elfo );
	    	elfo.submit();	    	
	    	elfo.href = eh;
	    	elfo.target=et;
	    	return true;
	    }  // form present
    } // check all inputs
    return false;
}

// ----- lico module functions and methodes  ------------------------ // 
function setUpLico(){	
	bInitLico=false;
	try{ 
		  licoInit(new Array(
				new Array('tSystemX', 'lXSystem', 'tcombo0',   null),
				new Array('tSystem1', 'lblCombo1', 'tcombo1', 'tSystemp'),
				new Array('tSystem2', 'lblCombo2', 'tcombo2', 'tSystemp'),
				new Array('tSystem3', 'lblCombo3', 'tcombo3', 'tSystemp'),
				new Array('tSystem4', 'lblCombo4', 'tcombo4', 'tSystemp'),
				new Array('tSystem5', 'lblCombo5', 'tcombo5', 'tSystemp')
                ),'tSystemp',true,true, null );			
		  bInitLico=true;	
		  licoEnableSAPRequest(false);		  
	}
	catch(e){
		alert('Fatal Error\ninit LicoModule...');
	}
	return bInitLico;
}

function licobada(elem){
	updateAccessory(null);
// called by combo tSystemp onchange
	if(!elem) return false;
	if(elem && bInitLico){
		licoSetBaseProductByOrderNr(elem.options[elem.selectedIndex].value);
		setBaseLumMaxLen();
		return true;
	}else{
	   if(elem)
	      return setLumMaxLen(elem);
	}
	return false;
}

function setLumMaxLen(elem){
	updateAccessory(null);
	// called by combo tcombo0... tcombo4
	var e1 = xGetElementById('lummaxlen');
	if(!e1) return;
	if(bInitLico==true){
		// lico vorhanden
	    if( typeof(elem=='string') ){
			if(elem && e1){
				if(e1.value=='') 
				   e1.value=0;
				var maxLen  = str2Number(e1.value);		
				var dLength = licoGetSelectedOptionValue(elem, 'dLength');
				if(dLength!=null){
					dLength = str2Number(dLength);
					if(dLength > 0){
					   e1.value = dLength;	
					   recalcTS(); // immer neu berechnen   
					   return true;
					}
				}
			}
		}
	}else{
	    // kein lico nur systemleuchte
	    setBaseLumMaxLen();
    }    
	return false;
} // max. laenge vom lico modul.

function setBaseLumMaxLen(){
	 var e1 = xGetElementById('lummaxlen');
	 var e2 = xGetElementById('systemleuchte');
	 if(e2 && e1){
	     var n = e2.selectedIndex;
	     var dLength = Number(e2.options[n].className);
	     if(dLength>0){
	  	    e1.value = dLength;	
	  	    recalcTS(); // immer neu berechnen
	     }
	 }
}

// ------------------------- page 1 INIT  --------------------------//
function initPage1(){
	
	//toggleview('v2s'); 
	try {
		if(xGetElementById('notlichtmode1'))
			if(xGetElementById('notlichtmode1').checked)
				toggleview('v4s');
			
			
		if(xGetElementById('lichtsteuerung1'))
			if(xGetElementById('lichtsteuerung1').checked)
				toggleview('v5s');	
	}
	catch(e) {}
	
	var elem = xGetElementById('name');
	if(elem){
	   elem.focus();
	   elem.select();	
	}
}

// ------------------------- page 2 INIT  --------------------------//
function initPage2(){
  	// toggleview('v2s'); 

	var elem0 = xGetElementById('pageid');
	var elem1 = xGetElementById('berechnungsmode');
	var elem2 = xGetElementById('lichtbandlaenge');	
	
	var elem3 = xGetElementById('lblength');
	var elem4 = xGetElementById('freiraum');
		
	var elem5 = xGetElementById('befestigung');
	var elem6 = xGetElementById('befestigunglaenge');
	
	var bNewPage = (elem0.value.trim()=='');
	
	if(elem1 && elem2 && elem3){
		if(elem1.value==2){
			if( bNewPage==false ){
			    dNewLen = str2Number(elem3.value) * 0.1;
			    dNewLen = Math.floor(dNewLen) / 100;
			    elem2.value = dNewLen;
			}// TS.leuchtenberechnung
			elem2.readonly=true;
			elem2.disabled=true;
			elem2.style.background="#f5f5f5"
		} // calcmode leuchteneingabe
	} // check lichtbandlaenge
	
	minLBLen = 1.50; // default
	if(elem3 && elem4 && (bNewPage==false)){
		minLBLen = str2Number(elem3.value) -  str2Number(elem4.value);
		minLBLen = (minLBLen<1.50)?1500:minLBLen;
		minLBLen = Math.floor(minLBLen * 0.1) / 100;		
	} // check min. lichtbandlaenge
	
	if(elem5 && elem6){
		var bFlag = elem5.options[elem5.selectedIndex].title;
		elem6.val = elem6.value; // save current value		
		cbAction('display',bFlag,'befestigunglaenge');
	} // checked kette
	
	if(elem0){
		if( bNewPage == false ){
			elem1 = xGetElementById('RBWH');
			elem2 = xGetElementById('RBSR');	
			if(elem1 && elem2){
				// block color selector.
				elem1.readonly=true;
				elem1.disabled=true;
				elem2.readonly=true;
				elem2.disabled=true;
			}
		} // checked pageId
	} // checked color selector
	
	if( checkErrorMessage()){
		// all well done..	
		var elem = xGetElementById('name');
		if(elem){
		   elem.focus();
		   elem.select();
		   return true;
		}
	}	
	return false;
}

// ------------------------- page 3 INIT  --------------------------//
function initPage3(){
	var elem1 = xGetElementById('notlichtmode');
	var elem2 = xGetElementById('lichtsteuerung');
	var elem3 = xGetElementById('steuermodul');	
	var elem4 = xGetElementById('systemleuchte');
	var elem5 = xGetElementById('lummaxlen');	
	var eInOut = xGetElementById('iolength');
	var elem7 = xGetElementById('freiraum');
	var elem8 = xGetElementById('tsfree');
	
	if(elem8) elem8.innerHTML="";
	if(bInitLico==false && elem4)
		licobada(elem4);	
	
	// notlicht und lichtsteurung on / off.
	if(elem1 && elem1.value.trim()!='') 
	   bNotlicht=((elem1.value.trim()!='NL01'));
	   
	if(elem2 && elem2.value!='') 
	   bLuxmate=(elem2.value!=1);
	
	if(bNotlicht && elem1){
		nlControl=elem1.value;
		var elNL = xGetElementById('varnotlicht');
		if(nlControl!=''){
			var elTX = xGetElementById(nlControl);
			if(elNL){
				if(elTX)
				   elNL.innerHTML = elTX.value;
			}
		}	
	}// notlicht
	
	if(bLuxmate && elem2 && elem3){
		if(elem2.value!='' && elem3.value!=''){
			lsControl='LS'+elem2.value+elem3.value;
			var elLS = xGetElementById('varluxmate');
			var elLT = xGetElementById(lsControl);
			if(elLS){
				if(elLT)
				   elLS.innerHTML = elLT.value;
			}	
		}	
	}//lichtsteuerung
	
	toggleNotlicht(bNotlicht); // onoff notlicht
	toogleLuxmate(bLuxmate);   // onoff lichtsteuerung
		
	if(elem3) 
	   checkpage3(elem4); // basisleuchte
	
	if(bInitLico)
		setBaseLumMaxLen();  //recalcTS is included in setBaseLumMaxLen
	else
		recalcTS();	// neuberechnung freiraum
	
	if( checkErrorMessage()){
		// all well done..	
		var elem = xGetElementById('name');
		if(elem){
		   elem.focus();
		   elem.select();
		   return true;
		}
	}	
	
	return false;
}

// -------------------------- CHECK ALL PAGES  ---------------------- //
function checkAll(){	
	
	// final check der eingaben der seite 2 und seite 2
	// vor dem submit an den server
	
	var e0=null;
	var e1=null;
	var e2=null;
	var e3=null;
	var e4=null;
	var e5=null;	
	
	if(tectonpage=='page2'){
				
		e0 = xGetElementById('name');
		if(e0){
			if(e0.value.trim()==''){
			   var tmsg = getMessageText('message_notext'); 				
		   	   alert(tmsg);
			   e0.focus();
			   return false;
			} 
		}// checked bezeichnung
		
		e1 = xGetElementById('lichtband');
		if(e1){
			if( str2Number(e1.value)<1 ){			  
			   var tmsg = getMessageText('message_minval'); 		  	   
		       alert(tmsg + ' 1');
			   e1.focus();
			   return false;
			} 
		} // checked anzahl lichtband
		
		e2 = xGetElementById('lichtbandlaenge');		
		if(e2){
			if(!xIsDisabled(e2)){
				dLBLen = str2Number(e2.value);   
				if( dLBLen < minLBLen ){
				   var tmsg = getMessageText('message_minval');
		       	   alert(tmsg + ' ' + minLBLen + 'm');
				   e2.focus();
				   return false;
				} 
			}
		} // checked lichtbandlaenge
		
		e3 = xGetElementById('befestigunglaenge');		
		if(e3){
			if(!xIsDisabled(e3)){
				dMontageLen = str2Number(e3.value);   
				if( str2Number(e3.value)==0){
					var tmsg = getMessageText('message_minval');
		       	    alert(tmsg + ' > 0.00 m');
			   		e3.focus();
			   		return false;
				} 
			}
		}// checked befestigunglaenge

		if(!checkEA())
			return false;
		
		return checkME(); // mitteneinspeiser
		
 	} 
 	
 	if(tectonpage=='tecton3'){
 		
 		e0 = xGetElementById('name');
		if(e0){
			if(e0.value.trim()==''){
			   var tmsg = getMessageText('message_notext');
		   	   alert(tmsg);
			   e0.focus();
			   return false;
			} 
		} // checked bezeichung
		
		e1 = xGetElementById('anzahl');
		if(e1){
			nAnzahl = str2Number(e1.value); 
			if(nAnzahl<0){
			   var tmsg = getMessageText('message_minval');		
		       alert(tmsg + ' 1');
			   e1.focus();
			   return false;
			}
		} // checked anzahl>0
		
		e2 = xGetElementById('anzahlnotlicht');
		if(e2 && bNotlicht==true){
			if(!xIsDisabled(e2)){
				if(e1 && e2){
					if( str2Number(e2.value)< 1){
					  var tmsg = getMessageText('message_minval');		
		       		  alert(tmsg + ' 1');
		       		  e2.select();
					  e2.focus();
			   		  return false;
					}
					if( str2Number(e2.value)>str2Number(e1.value) ){
					  var tmsg = getMessageText('message_maxval');
					  alert(tmsg + ' ' + e1.value);	
					  e2.select();
					  e2.value = e1.value;
					  e2.focus();
			   		  return false;
					}					
				}
			}
		} // checked anzahlnotlicht<anzahl
		
 		e3 = xGetElementById('gruppen');
		if(e3 && bLuxmate==true){
			if(!xIsDisabled(e3)){
			   if(e1 && e3){
					if( str2Number(e3.value)<0 ){
					var tmsg = getMessageText('message_minval');		
		       		  alert(tmsg + ' 0');
		       		  e2.select();
					  e2.focus();
			   		  return false;
					}
					if( str2Number(e3.value)>str2Number(e1.value) ){
					  var tmsg = getMessageText('message_maxval');
					  alert(tmsg + ' ' + e1.value);	
					  e2.select();
					  e2.value = e1.value;
					  e2.focus();
			   		  return false;
					}					
				}
			}
		} // check gruppen<anzahl
		
		objelem = xGetElementById('anzahl');	
 		if(recalcTS(objelem,'','')) {
			var bNewPage = (xGetElementById('pageid').value.trim()=='');
			
			//alert(dFreeSpace);
						
 			if(dFreeSpace > 1.0) {  // ask for additional lums
				var tmsg = getMessageText('message_addnextlum');
				var ttit = getMessageText('title_addnextlum');
				if(bNewPage && xConfirm(tmsg, ttit)) {
		 			var eNext = xGetElementById('nextStep'); 	
		 			eNext.name='page';
		 			eNext.value=3;
				}	
  			} // add lum?
 		} // fc ok?
 		else
			return false;
	}
	
	return true;
	
}

function checkLS(elem) {
	var remote=elem.enableOptions.split(';');
	for(i=2;;i++) {
		var eCheck=xGetElementById(remote[0]+i);
		if(eCheck){
			if(remote[1].indexOf(eCheck.option)!=-1)
				eCheck.disabled=false;
			else {
				if(eCheck.checked)
					xGetElementById(remote[0]+'1').checked=true;
				eCheck.checked=false;
				eCheck.disabled=true;
			}	
		}
		else
			break;
			
	}
	
	if(remote[0]=='lichtsteuerung') {
		var eSM=xGetElementById('steuermodul');
		if(eSM) {
			if(elem.value=='') {
				xGetElementById('steuermodul1').disabled=false;
			}
			else {
				xGetElementById('steuermodul1').disabled=true;
				xGetElementById('steuermodul1').checked=false;
				xGetElementById('steuermodul2').checked=true;
			}
		}
	}
	
	
	return true;
}

// -------------------------- CHECK PAGE 2 ---------------------- //
function checkpage2(elem,bNum,vMin,vMax){
	
	if(elem){
		
		var elemType = elem.className;
		if(elemType=="text"){
		   if(elem.value==""){
		   	  var tmsg = getMessageText('message_notext');
		   	  alert( tmsg );		   	     
		      elem.focus();
		      elem.select();		       
		      return false;
		   }
		} // checked beschreibung
		
		if(bNum){
			dVal=str2Number(elem.value);
			if(elem.id=='lichtbandlaenge')
			   vMin = minLBLen;			   
			if(vMin){
				if(dVal<vMin){
				   var tmsg = getMessageText('message_minval');
				   alert(tmsg + ' ' + vMin);
				   if(elem.id=='lichtbandlaenge'){
				   	  elem.value = vMin.toLocaleString();
				   }else{
				   	  elem.value = vMin;
				   }
				   elem.select();	
				   elem.focus();
				   return false;	
				}   
			}
			if(vMax){
				if(dVal>vMax){
					var tmsg = getMessageText('message_maxval');
					alert(tmsg + ' ' + vMax);   
					elem.value=vMax;
					elem.focus();
					elem.select();	
					return false;	
				}  
			}	
		} // check lichtband;lichtbandlaenge,montagelaenge

		return checkME(); // check Mitteneinspeiser
	}
	return true;
}

function checkkabelkanal(elem){
	var e1 = xGetElementById('befestigung');
	if(e1 && elem){
		if(elem.value=='00000000'){
		   return true;
		}
		if(e1.value=='BE2' || e1.value=='BE3'){
			// nicht möglich..
			var tmsg = getMessageText('message_check_mounting');
		    alert(tmsg); 
			elem.options[0].selected=true;
			elem.focus();
			return false;
		}
	}
	return false;
} // check kabelkanal mit Befestigung

function tsInOut(refid,index){	
	
	// ein- und ausspeiser prüfen
	
	var cbBase = refid.id.substring(0,3);
	var e1 = xGetElementById(cbBase+'1');
	var e2 = xGetElementById(cbBase+'2');
	var e3 = xGetElementById(cbBase+'3');	
	
	if(e1 && e2 && e3){
		var cb1 = e1.value.substring(0,1);
		var cb2 = e2.value.substring(0,1);
		var cb3 = e3.value.substring(0,1);	
		if(index==1 && cb1=="E"){
			if(cb2=="E")  e2.options[0].selected=true;
			if(cb3=="E")  e3.options[0].selected=true;
		}
		if(index==2 && cb2=="E"){
			if(cb1=="E") e1.options[0].selected=true;
			if(cb3=="E") e3.options[0].selected=true;
		}
		if(index==3 && cb3=="E"){
			if(cb1=="E") e1.options[0].selected=true;
			if(cb2=="E") e2.options[0].selected=true;
		}
		if(cb1=="A" && cb2=="A" && cb3=="A"){
			if(index==1){
				e3.options[1].selected=true;
			}
			if(index==2){
				e3.options[1].selected=true;
			}
			if(index==3){
				e1.options[1].selected=true;
			}
		}
		
		
		// check mitteneinspeiser und festen ausspeiser.
		var ctag1 = e1.options[e1.selectedIndex].getAttribute('logic');
		var ctag2 = e3.options[e3.selectedIndex].getAttribute('logic');
		var eaType = (e1.value +'x'+ e2.value +'x' + e3.value);
	    if(typeof(ctag1)=='string' && typeof(ctag2)=='string'){
	    	return (checkME() && checkTA(e3,eaType));
	    }else if ((typeof(ctag1)=='string')){
	    	return (checkME() && checkTA(e1,eaType));
	    }else if ((typeof(ctag2)=='string')){
	    	return (checkME() && checkTA(e3,eaType));	
		}else{
			return checkME();
		}
	}
	alert('fatal system error: connectors..');
	return false;
	
}// check combosettings


function checkEA() {
   var sColor,eTS,eE1,eE2,eE3
   // alert('in checkEA');
   sColor =(xGetElementById('RBWH').checked)?'WH':'SH';
   if(typeof(sColor)=='string') {
      if(sColor == "WH") {
         eTS = xGetElementById('tragschieneWH');
         eE1 = xGetElementById('cbw1');
         eE2 = xGetElementById('cbw2');
         eE3 = xGetElementById('cbw3');
      }
      else {
         eTS = xGetElementById('tragschieneSR');
         eE1 = xGetElementById('cbs1');
         eE2 = xGetElementById('cbs2');
         eE3 = xGetElementById('cbs3');
      } // white or silver
      if(eTS && eE1 && eE2 && eE3) {
		 var TS_bgn=eE1.value.substring(0,3);
		 var TS_cen=eE2.value.substring(0,3);
		 var TS_end=eE3.value.substring(0,3);
		 if((TS_bgn=='A00' && TS_cen=='E10' && TS_end=='A00') ||	
			(TS_bgn=='A00' && TS_cen=='A10' && TS_end=='E01') ||	
			(TS_bgn=='E01' && TS_cen=='A10' && TS_end=='A00')) {
			// einspeiser laengen message -- 20060122
			if(!confirm(getMessageText('message_confirm_length')))
				return(false);
		 }
	  }	// controls
	} //col
	return true;
}


function checkME() {
   // Mitteneinspeiser ist nur zugelassen, wenn die Lichtbandlänge
   // größer als Einspeiser + 2xTragschiene + Ausspeiser ist.
   // 2004-12-02 M.W
   var sColor,eTS,eE1,eE2,eE3
   sColor =(xGetElementById('RBWH').checked)?'WH':'SH';
   if(typeof(sColor)=='string') {
      if(sColor == "WH") {
         eTS = xGetElementById('tragschieneWH');
         eE1 = xGetElementById('cbw1');
         eE2 = xGetElementById('cbw2');
         eE3 = xGetElementById('cbw3');
      }
      else {
         eTS = xGetElementById('tragschieneSR');
         eE1 = xGetElementById('cbs1');
         eE2 = xGetElementById('cbs2');
         eE3 = xGetElementById('cbs3');
      } // white or silver
      if(eTS && eE1 && eE2 && eE3) {
         var v1 = Number(eTS.options[eTS.selectedIndex].className);
         var v2 = Number(eE1.options[eE1.selectedIndex].className);
         var v3 = Number(eE2.options[eE2.selectedIndex].className);
         var v4 = Number(eE3.options[eE3.selectedIndex].className);
         if(eE2.selectedIndex > 0){
            var dLen = 2 * Number(v1);
            if(!isNaN(dLen)) {
               var eLBLen = xGetElementById('lichtbandlaenge');
               if(eLBLen) {
                  var dLBLen = str2Number(eLBLen.value);                  
                  var dLen = Math.floor( (v1 * 2) + v2 + v3 + v4 );
                  dLen = Math.floor( dLen * 0.001 );                  
                  if( (dLBLen - dLen)<0 ) {                  	
              		 var tmsg = getMessageText('message_notsme');                  
                 	 alert(tmsg); 
                 	 eE2.options[0].selected=true;
                 	 tsInOut(eE2,3);
                 	 eE2.focus();
                 	 return false;
                  } // check length
               } // element found
            } // valid length
         } // me selected
      } // elements found
   } // color selector
   return true;
}

function checkTA(elem,eaType){
  // check TA/TE  !! qad: keine SDB Verbindung..
  var intended=/A010xA100xE010|E010xA100xA010|A010xE100xA010|E010xA080xA010|A010xE100xE010|A010xA080xE010|A015xA100xE011|E011xA100xA015|A015xE101xA015|E011xA090xA015|A015xE101xE011|A015xA080xE011/;
  if(elem){
		var e1    = elem.options(elem.selectedIndex);
	    var ctag  = e1.getAttribute('logic');
	    var bFlag = e1.getAttribute('confirmed');
	    if( typeof(ctag)=='string' && (bFlag==null) && intended.test(eaType) ){
			var tmsg = getMessageText(ctag);								
			if(confirm(tmsg)==true){
			   e1.setAttribute('confirmed',1);
			   return true;	
			}else{
			  e1.setAttribute('confirmed',2);
			  elem.focus();
			  return false;
			} // confirm
	    } // checked logictag
	} // elem found	  			
}


// -------------------------- CHECK PAGE 3 ---------------------- //
function checkpage3(elem){
	if(elem){
		
		var elemType = elem.className;
		
		if(elemType=="text"){
		   if(elem.value==""){
		   	  var tmsg = getMessageText('message_notext');   
		   	  alert(tmsg);   
		      elem.focus();
		      elem.select();		       
		      return false;
		   }
		   return true;
		} // checked beschreibung
					
		if(elem.tagName=="SELECT" && elem.id=='systemleuchte'){
			if(bNotlicht==true || bLuxmate==true){
				var nlOff;
				if(elem.selectedIndex!=-1)
					nlOff = elem.options[elem.selectedIndex].title;	
				else
					nlOff = '0';
					
				var objNL = xGetElementById('anzahlnotlicht');
			    var objGR = xGetElementById('gruppen');	
			    if(objNL.getAttribute("val")=="undefined" || objNL.getAttribute("val")==null)
			    	objNL.val = objNL.value;
			    if(objGR.getAttribute("val")=="undefined" || objGR.getAttribute("val")==null)
			    	objGR.val = objGR.value;	
				if(nlOff=="4"){	
					// Strahler		
					if(objNL){
					   objNL.val = objNL.value;
					   objNL.value = 0;
					   toggleNotlicht(false);
					}
					 if(objGR){
					   objGR.val = objGR.value;
					   objGR.value = 0;
					   toogleLuxmate(false);
					}
				}else{
				    // Basisleuchten
					objNL = xGetElementById('anzahlnotlicht');
					objGR = xGetElementById('gruppen');
					toggleNotlicht(bNotlicht);
					toogleLuxmate(bLuxmate);
					if(objNL) objNL.value=objNL.getAttribute("val");
					if(objGR) objGR.value=objGR.getAttribute("val");					
				}				
			}
	    }
	    
		return true;
			
	}
}

// -------------------- Freiraum, max. Produktanzahl Berechnung -----------------//
function recalcTS(elem,v1,v2){
	// prüfen leuchtenazahl mit berechnung des freiraumes.
	elemAnzahl = xGetElementById('anzahl');		
	
	if(elemAnzahl){	
			
		var nLums = str2Number(elemAnzahl.value);	// anzahl leuchten	
			
		if(Number(nLums)<1){
		   // min 1  check	
		   var tmsg = getMessageText('message_minval');
		   alert(tmsg + ' 1');
		   elemAnzahl.value=1;
		   elemAnzahl.select();	
		   elemAnzahl.focus();
		   return false;
		}	
		
		var eUILabel    = xGetElementById('tsfree'); 			// ausgabe label freiraum
		var eFreiraum   = xGetElementById('freiraum'); 			// freiraum in mm		
		var eLumMaxLen  = xGetElementById('lummaxlen'); 		// produktlaenge max. in mm
		var eUsedspace  = xGetElementById('usedspace'); 		// used space in mm
		var eTsCalcMode = xGetElementById('berechnungsmode');	// berechnungsmodus tragschiene / leuchte
		var eInOut      = xGetElementById('iolength'); 		    // ein- und ausspeisung 
			
		var nMaxLum      = 0;
		var dIolength    = 0;	
		var dFreiraum    = 0;
		var dMaxTsLength = 0;
		
		if(eFreiraum && eUILabel && eLumMaxLen && eInOut){
			
			if(str2Number(eLumMaxLen.value)==0){
				return false;
			} // keine produktlaenge vorhanden.
			
			var dNewLumLen = str2Number(eLumMaxLen.value); // produktlaenge in mm		
			if(dNewLumLen<1000){			
				// check leuchtenlaenge < 1000 mm
		    	// kann nicht ueber Einspeiser montiert werden	
				if(eInOut) dIolength = str2Number(eInOut.value);
			}	
 
			var dFreiraum  = str2Number(eFreiraum.value);
			var dUsedSpace = str2Number(eUsedspace.value);						
			var dMaxFreeSpace = (dFreiraum + dUsedSpace) - dIolength;
			
			nMaxLum = Math.floor( dMaxFreeSpace / dNewLumLen );
			
			if(eTsCalcMode){
				if(eTsCalcMode.value==2){
				   dMaxTsLength = (100 * 1000) - 30 - dIolength;
				   if( (nLums * dNewLumLen) > dMaxTsLength ){
				   	   var dMaxLums = Math.floor( dMaxTsLength / dNewLumLen ) - 1 ;
				   	   var tmsg = getMessageText('message_maxval');	
					   alert(tmsg + ' ' + dMaxLums );					   
					   elemAnzahl.value = dMaxLums;
					   elemAnzahl.select();	
					   elemAnzahl.focus();
				   }
				   else { // show lb length
				        var dTSLen=(nLums * dNewLumLen + dIolength + 30)/1000.0; // ?????
				        //alert('LL:' + str2Number(nLums * dNewLumLen)+' FR:' + str2Number(eFreiraum.value)+' US:'+str2Number(eUsedspace.value)+' IO:'+str2Number(dIolength));
						eUILabel.innerHTML =  dTSLen.toLocaleString() + '<br/>' + nMaxLum + ' ST';
				   }
				   return true;
				}
			}// check calcmode leuchtenanzahl (100mm)			
			
			// Ermittlung der max. Leuchtenanzahl
			
			if(nMaxLum<1){
				 elem = xGetElementById('systemleuchte');
				 var tmsg = getMessageText('message_nospacefree');
				 alert(tmsg);
				 //if(elem) elemAnzahl.focus();
				 return false;
			} // produkt kann nicht verwendet werden.
			
			// berechnung und anzeige freiraum			
			if(nLums>nMaxLum){
			   var tmsg = getMessageText('message_maxval');	
			   alert(tmsg + ' ' + nMaxLum);
			   if(eUILabel) eUILabel.innerHTML= '0';
			   elemAnzahl.value = nMaxLum;
			   elemAnzahl.select();	
			   elemAnzahl.focus();
			   return false;
			}else{ 	 
			   dUsedSpace = (dNewLumLen * nLums);				   
			   if( dUsedSpace > 0 ) {
			   	  dFreeSpace = (dMaxFreeSpace - dUsedSpace)/1000;
			   	  dFreeSpace = (dFreeSpace<0)?0:dFreeSpace;
			      eUILabel.innerHTML = dFreeSpace.toLocaleString() + '<br/>' + nMaxLum + ' ST';
			    }
			   return true;
			}					
		}		
	} // TS.leuchtenberechnung
	return false;
} // page 3 - max. Anzahl Leuchten 

// ----------------------- Notlicht ------------------------ //
function toggleNotlicht(bShow){
	// notlicht eingabe ein- oder ausschalten
	var elem=xGetElementById('lumr1');
	if(!elem) return false;
	if(bShow==false){
		elem.style.display="none";	
		elem.disabled = true;
	}else{
		elem.disabled = false;
		elem.style.display="";	
	}
	return true;
}

function recalcNL(elem,lumanz,maxval){
	// check der eingabe anzahl notleuchten
	if(elem && !xIsDisabled(elem)){
		if(str2Number(elem.value)<1){
		   var tmsg = getMessageText('message_minval');		
		   alert(tmsg + ' 1');
		   elem.value=1;
		   elem.select();	
		   elem.focus();
		   return false;
		} // min check
		var elem1 = xGetElementById('anzahl');
		if(elem1){
			if( str2Number(elem.value)>str2Number(elem1.value) ){
			   var tmsg = getMessageText('message_maxval');	
			   alert(tmsg + ' ' + elem1.value);
			   elem.value = elem1.value;
			   elem.select();	
			   elem.focus();
			   return false;
			}else{
			   return true;
			}
		} // max. check
		return false;
	}
	return false;
}

// ------------------- Lichtsteuerung -----------------------//
function toogleLuxmate(bShow){
	// lichtsteuerung schaltgruppen ein- oder ausschalten
	var elem=xGetElementById('lumr2');
	if(!elem) return false;
	if(bShow==false){
		elem.style.display="none";	
		elem.disabled = true;
	}else{
		elem.disabled = false;
		elem.style.display="";	
	}
	return true;
}

// ----------------- Lichtsteuerung und Schaltgruppen ------------//
function recalcLS(elem,lumanz,maxval){
	
	// check der eingabe der anzahl lichtsteuerungsgruppen onblur element gruppen.
	
	var nMaxTL = 0;
	var nCurTL = 0;
	var nMaxGR = 0;
	
	if(elem){
		
		var elem1=xGetElementById('anzahl'); 	// leuchtenanzahl
		var elem2=xGetElementById(lsControl);	// lichtsteurungsdaten
		
		if(!elem2){
			elem.value=0;
			return true;	
		} // keine lichtsteuerung gefunden.
			
		if(elem1 && elem2){			
			if(str2Number(elem1.value)<2){
				elem.value=0;
				return true;		
			} // zuwenig leuchten
			
			if(xIsDisabled(elem2)){
			  elem.value=0;
		      return true;
		    } // lichtsteuerung aus
			
			nMaxTL = str2Number(elem2.title); // max. Anzahl Tochterleuchten
			
			if(nMaxTL>0){
				
				nCurTL = str2Number(elem1.value) - str2Number(elem.value);
				
				if(nCurTL<1){
					nMaxGR = Math.ceil(str2Number(elem1.value)/nMaxTL);
					var tmsg = getMessageText('message_maxval');	
					alert(tmsg + ' ' + nMaxGR);
					elem.value=nMaxGR;
					elem.select();	
					elem.focus();
					return false;
				} // max. anzahl
				
				nMaxGR = Math.ceil(nCurTL/nMaxTL);
				if(str2Number(elem.value) >= nMaxGR) 
					return true; // valid...
					
				if(str2Number(elem.value) < nMaxGR){
				   var tmsg = getMessageText('message_minval');		
				   alert(tmsg + ' ' + nMaxGR);
				   elem.value=nMaxGR;
				   elem.select();	
				   elem.focus();
				   return false;
				} // min. anzahl				
			}
		}
		
	}
	return false;
} 

//  ----------------------- UI TOOLS ----------------------------- //

function str2Number(s){
	// see utils.js
	var retValue = MakeUSNumber(s);
	retValue=(retValue=='')?0:Number(retValue);
	return retValue
}

function checkErrorMessage(){
	 var errmsg=xGetElementById('srvmsg');
  	 if(errmsg && errmsg.length>0){
  	  	alert(errmsg[0].value);
  	  	return false;
  	 }
  	 return true;
} // servermeldungen anzeigen

function getMessageText(stag){
	 var tmsg = xGetElementById(stag);	
	 if(tmsg && tmsg.value.length!=0){
	 	return tmsg.value.trim();
	 }else{
	    return stag;
	 }
} // UI Meldungen aufbereiten

function cbAction(mode,value,elem){
	// debugger;
	if(elem){
	    if (elem=='befestigunglaenge'){	    	
	   	   // check kabelkanal
	   	   var eWhite  = xGetElementById("RBWH");
	   	   var eSilver = xGetElementById("RBSR");
	   	   if(eWhite.checked){
	   	   	  var eka =xGetElementById('kabelkanalWH');
	   	   	  checkkabelkanal(eka);
	   	   	  // 2004-12-21 ml return false;
	   	   }
	   	   if(eSilver.checked){
	   	   	  var eka =xGetElementById('kabelkanalSR');
	   	   	  checkkabelkanal(eka);
	   	   	  // 2004-12-21 ml return false;
	   	   }	   	   
		}
		value = (typeof(value)=='undefined')?'1':value;
		value = (value=='')?'1':value;
		switch(mode){
			case 'display':
				var e1 = xGetElementById(elem);	
				var e2 = xGetElementById('lbl'+elem);	 				
				if(e1 && e2){
					if(value!='2'){
						xHide(e1);					
						e1.val = e1.value;
						e1.disabled = true;
						e1.value=0;
						xHide(e2);
					}else{
						xShow(e1);
						e1.disabled = false;
						e1.value = e1.getAttribute("val");
						xShow(e2);
					}
					return true;
				}
				break;
			default:break;	
		}
	}
	return false;
} // element toggle action

function setViewBox(v1,v2){
	e1 = xGetElementById(v1);
	e2 = xGetElementById(v2);
	if(e1 && e2){
		e2.style.display="none";	
		e1.style.display="";	
	}
} // white or silver...

function rbAction(elem,cv){
	if(elem){
		e1 = xGetElementById(cv);	 
		if(elem.id=='lichtsteuerung5' && e1){
			// sonderfall 1-10V, nur mit Schaltschrank.
			xHide(e1);
			return true;
		}
		if(elem && e1){
			if(elem.alt=="1"){
				xHide(e1);
			}else{
				xShow(e1);
			}
			return true;		
		}	
 	}
 	return false;
} // toggle UI Elements

function setOlActive(s){
	olactive=s;
}

function olActive(elem){
	if(olactive!=null){
		r1=xGetElementById(olactive);
		r2=xGetElementById(olactive+'a');
		if(r1&&r2){
			r1.className="outlineoff";		
			r2.className="outlineoff";
		}
	}
	olactive=elem.id.substring(0,elem.id.length-1);
	r1=xGetElementById(olactive);
	r2=xGetElementById(olactive+'a');
	if(r1&&r2){
		r1.className="outlineon";		
		r2.className="outlineon";
	}
} // outline handler

function doPrint(){
	window.print();
} 

function openWindow(elem,href){
	//href+= amp + 'document='+elem.id;
	window.open(loadTectonURL( href ), 'TecWin', 'scrollbars=1, location=0, menubar=0, status=0, toolbar=0, resizable=1, width=540, height=400');
}

function loadpage( href ){
	WC();
  	location.href = loadTectonURL( href );
}

function showlookup(sname,shref){
  var xw=newwindow('lookup',href_lookup+shref);
}

function newwindow(winname,theURL){
	var more='",status=1,toolbar=0,menubar=0,location=0,resizable=1,center=1"';
	var newwin=window.open(loadTectonURL( theURL ),winname,"width=600,height=400" + more);
	newwin.focus();	
	return newwin;
}

function loadwindow(winname,theURL,width,height,more){
	var newwin=window.open(loadTectonURL( theURL ),winname,'width='+width+',height='+height+','+more);
	newwin.focus();	
	return newwin;
}

function setnewdata(elmid,svalue){
  elem=xGetElementById(elmid);
  if(elem){
     switch(elem.tagName){
     case 'SPAN':elem.innerHTML=svalue;break;
     case 'DIV':elem.innerHTML=svalue;break;
     case 'INPUT':elem.value=svalue;break;
     }
  }
}

function toggleview(e1){		 		
	var elem = xGetElementById(e1);
	var imgOn = xGetElementById(e1+'on');
	var imgOff = xGetElementById(e1+'off');	
	var fldState = xGetElementById(e1+'state');	
	if(elem && imgOn && imgOff){
		if(elem.className=='')
		   elem.className='panelOn';	     
		if(elem.className=='panelOff'){
			elem.className='panelOn';
	        imgOn.className='toggle-on';
	        imgOff.className='toggle-off';
	        if(fldState) fldState.value="on"
		}else{
			elem.className='panelOff';
		    imgOn.className='toggle-off';
		    imgOff.className='toggle-on';
		    if(fldState) fldState.value="off"
		}
	}		 		
} // toggle by element name		
	 	
function bugfixMoz(){
	var elem = xGetElementById('page');
	if(elem) xHeight(e,xClientHeight());			 		
}

function togglesub(e1){						 		
	var elem = xGetElementById(e1.id + '-sub');
	var imgOn = xGetElementById(e1.id+'-on');
	var imgOff = xGetElementById(e1.id+'-off');
	if(elem && imgOn && imgOff){
 		if(elem.className=='panelOn'){ 			
 		   elem.className='panelOff';
 		   imgOn.className='toggle-off';
 		   imgOff.className='toggle-on'; 		   
 		}else{ 		
		   elem.className='panelOn';
           imgOn.className='toggle-on';
 		   imgOff.className='toggle-off';
 		}
	}
} // toggle by element id		

function imageClick(img, zoomdir) {
	var sFile=img.src.substr(img.src.lastIndexOf('/')+1);
	var zoom=zoomdir;
	if(zoom=='')
		zoom='/PDB/photo';
	
	ds = window.open( loadTectonURL( "/eServices/ProductCatalog/DownloadPreview.htm?"+zoom + '/' + sFile ), "DownLoadPreview", "scrollbars=0, location=0, menubar=0, status=0, toolbar=0, resizable=0, width=530, height=550");
	ds.focus();

}
////////////////////////// accessories //////////

function cbInsertAccessories(sProducts) {
	var tabBody=xGetElementById('accessoryB');
	if(tabBody!=null) { // make it empty again
		var par=tabBody.parentNode;
		// 2008-04-11     tabBody.removeNode(true);
		// 2008-04-11     tabBody=par.appendChild(document.createElement('<tbody id="accessoryB"></tbody>'));
		par.removeChild(tabBody);
		var tbody=document.createElement('TBODY');
		tbody.id='accessoryB';
		tabBody=par.appendChild(tbody);
	}	
	if(tabBody!=null) {
		var lines=sProducts.split('\n');
		var sGName='';   
		for(var i=0; i < lines.length; i++) {
			var fields=lines[i].split('|');
			if(fields.length>3) {
				// var row=tabBody.insertRow();
				var row=document.createElement('TR');
				tabBody.appendChild(row);
				for(var j=0; j<fields.length; j++) {
					switch(j) {
						case 0: // ArticleID not used
								// var td=row.insertCell();
								var td=document.createElement('TD');
								row.appendChild(td);
								var inp=document.createElement('INPUT');
								inp.type='checkbox';
								inp.name='acc';
								
								if(sAccessories.indexOf(fields[1])!=-1) 
									inp.checked=true; 
							
								inp.value=fields[1];
								td.appendChild(inp);
								break;
						case 1: // order nr
						case 2: // name
						case 3: // name2
								// var td=row.insertCell();
								var td=document.createElement('TD');
								row.appendChild(td);
								td.innerHTML=fields[j];
								break;
						case 4: // Gname
								if(sGName != fields[j]) {
									// var rowGrp=tabBody.insertRow(tabBody.rows.length-1);
									var rowGrp=document.createElement('TR');
									tabBody.appendChild(rowGrp);
									
									// var tdGrp=rowGrp.insertCell();
									var tdGrp=document.createElement('TD');
									rowGrp.appendChild(tdGrp);
									tdGrp.align='left';
									tdGrp.colSpan=4;
									sGName=fields[j];
									var b=document.createElement('B');
									b.innerHTML=sGName;
									tdGrp.appendChild(b);
								}
								break;
					} // which field
				} // all fields
			} // syntax correct
		} // all Lines
		if(tabBody.rows.length<1) { // add message no acc found
			//var rowGrp=tabBody.insertRow(tabBody.rows.length-1);
			var rowGrp=document.createElement('TR');
			tabBody.appendChild(rowGrp);
			//var tdGrp=rowGrp.insertCell();
			var tdGrp=document.createElement('TD');
			rowGrp.appendChild(tdGrp);
			tdGrp.align='left';
			tdGrp.colSpan=4;
			var b=document.createElement('B');
			b.innerHTML=getMessageText('message_no_accessories');;
			tdGrp.appendChild(b);
		} // add message no acc found
	}  // tBody found
	
	try{
//		alert('trying to prepare accessories for eCatNew');
		eCATNew_Accessories();
	} catch(e) {};
}


var updateAccessory_sOrderNr=''

function updateAccessory(sOrderNr) {
	if(sOrderNr==null) {
		elem=xGetElementById('systemleuchte');
		if(elem)
			sOrderNr=elem.options[elem.selectedIndex].value;
	}
	if(updateAccessory_sOrderNr != sOrderNr) {	
		updateAccessory_sOrderNr=sOrderNr;
		var tabBody=xGetElementById('accessoryB');
		if(tabBody!=null) {
			var par=tabBody.parentNode;
			// 2008-04-11     par.removeChild(tabBody);
			par.removeChild(tabBody);
			
			tabBody=document.createElement("tbody");
			var tmpAttrib=document.createAttribute("id");
			tmpAttrib.nodeValue = "accessoryB";
			tabBody.setAttributeNode(tmpAttrib);
			
			par.appendChild(tabBody);

			// var rowGrp=tabBody.insertRow(tabBody.rows.length-1);
			var rowGrp=document.createElement('TR');
			tabBody.appendChild(rowGrp);
			
			// var tdGrp=rowGrp.insertCell(0);
			var tdGrp=document.createElement('TD');
			rowGrp.appendChild(tdGrp);
			tdGrp.align='left';
			tdGrp.colSpan=4;
			var b=document.createElement('b');
			b.innerHTML=getMessageText('message_search_accessories') + ": " + sOrderNr;
			tdGrp.appendChild(b);

		}
		jsrsExecute( '/lico/product.asp', cbInsertAccessories, 'getAccessories', 'sOrderNr='+sOrderNr+'&web-lang='+webLang);
	}
}	 	




String.prototype.ltrim = new Function("return this.replace(/^\\s*/gi, '');");
String.prototype.rtrim = new Function("return this.replace(/\\s+$/gi, '');");
String.prototype.trim  = new Function("return this.replace(/\\s+$|^\\s*/gi,'');");

function loadTectonURL( url ){
	try {
		if( eCATNew && eCATNew == 'true' ){
			if( url.indexOf('?') == -1 ) url += '?eCATNew=' + eCATNew;
			else url += '&eCATNew=' + eCATNew;
		}
	} catch(e){}
	
	return url;
}

// end tecton.js
