//
// $Id: pk3scripts.js,v 1.11 2009/11/25 15:53:37 ics Exp $
//
all_js = new Array(); 
all_deps = new Array(); 
debuglevel = 1; 

var caller = ''; 
var pk3_warschon = ''; 
var pk3_warschon2 = ''; 
var maxloop = 10; 
var pk3_starten = 0;

var pk3_stack = new Array();  
var pk3_level = ". . . . . . . . . . . . . . . . "; 

var pk3_bewertung = new Array(); 

function pk3_add_bewertung(a,b) {
	pk3_bewertung[pk3_bewertung.length ] = a 	
	pk3_bewertung[pk3_bewertung.length ] = b  	
}





function pkjs_test(v,level ,start) {

	
		
        if(level != 1 ) {
		pk3_warschon = '';
	} else {
	
	}
	
	pk3debug("=CLEAR",1);
	pk3_warschon = ''; 
	pk3_warschon2 = ''; 

	pk3debug("TESTE:  " +v.name); 
	pk3_test(v.name,0);
	
	return; 

	var inhalt = getwert(v,'');
	pk3debug("TESTE:  " +v.name); 
	var bez  = v.name; 
	var size = 0
	try { 
		size = all_deps[bez].length; 
	} catch (e) {
		pk3debug("ERROR: "+v.id+"/"+v.name+": nicht in all_deps "); 
	}
	
	for (var ii = 0; ii < all_js.length;  ii++ ) {
		var o = v; 
//		if(bez != all_js[ii].bez) {
			if(all_js[ii].bez != '') {
				o = document.getElementById(all_js[ii].bez); 
			// 	alert("TESTe OBJ "+ii+": "+all_js[ii].bez);
				var inhalt = getwert(o,'');
			} else {
				var inhalt = ''; 
			}
//		}
		all_js[ii].teste(o.id,inhalt);

	}

	return ; 


	for (var i = 0; i < size ;i++ ) {
		var o = v; 
		if(bez != all_js[all_deps[bez][i]].bez) {
			o = document.getElementById(all_js[all_deps[bez][i]].bez); 
			pk3debug("TESTe OBJ " +v.name);
			var inhalt = getwert(o,'');
		}
		all_js[all_deps[bez][i]].teste(o.id,inhalt);
	}
	return; 

}

function pk3_test(was,level) {
	// was = ein BEZ 
	var v = level + 1; 
	var lt = pk3_level.substr(0,2*v); 
	if(pk3_warschon.indexOf('.'+was+'.') == -1) {
		// noch nicht getestet 
		pk3debug(lt +"LEVEL:  "+ ": "+ was); 
		pk3_warschon = pk3_warschon + '.'+was+'.'; 
		var len = 0;
		try {
			len = all_deps[was].length; 
		} catch(e) {
				} 
		for(var i = 0; i < len; i++) {
			d = all_deps[was][i]; 
		    if(pk3_warschon2.indexOf('.'+d+'.') == -1) {
	 		   pk3_warschon2 = pk3_warschon2 + '.'+d+'.'; 
			   pk3debug(lt+ "TEST "+d+": " )
			   o = document.getElementById(all_js[d].bez);
			   var inhalt = getwert(o,'');
			   all_js[d].teste(o.id,inhalt);
			   pk3_test(all_js[d].bez,v); 
		    }
		}
		

	}

}


function pk_checkall() {
	// 
	// laden nachdem alle Felder da sind
	// 
	for (var ii = 0; ii < all_js.length;  ii++ ) {
		var n = all_js[ii].bez; 
		if(document.getElementById(n)) {
			try {
				var inhalt = getwert(document.getElementById(n),'');
				// inhalt = ''; 
				all_js[ii].teste(document.getElementById(n).id,inhalt);
				
			} catch (e){
				alert ("ERROR with "+n); 				
			}
		}
//AS                pk3debug(".. "+n+" .. "+all_js[ii].art); 
	}
	pk3_viewall();
	pk3_starten = 1; 
	// 
 	// pk3_final(0); 
	window.setTimeout('set_pk3_bewertung()',500); 
}

function set_pk3_bewertung() {
	for(var i = 0; i < pk3_bewertung.length; i++) {
		var n = pk3_bewertung[i] ; 
		var m = pk3_bewertung[++i] ; 
		var j = 0; 
		var sum  = 0; 
		var add = 0; 
		if(document.getElementById('BWH_'+n+ '_0')) {
// 			document.getElementById('BWH_'+n+ '_0').style.borderRightWidth='0px'; 
		}
		while(document.getElementById('BWH_'+n+ '_'+j) && j < 5) {
		  if(j == 0)  { add = -5 } else { add = -6; }  
		  if(document.getElementById('BWE_'+m+ '_'+j)) {
			var a = document.getElementById('BWH_'+n+ '_'+j); 
			var b = document.getElementById('BWE_'+m+ '_'+j); 
			// alert(a.offsetWidth);
			if(a.offsetWidth > 0 ){ 
				b.style.width =  (a.offsetWidth + add) + 'px';
			}
			sum = sum + a.offsetWidth; 
		  }
		  j++; 	
		}
//  		alert(sum); 
	}

}

function getwert(v,def) {
	var inhalt = v.value;
 	  if(!inhalt){inhalt = '7,5';} 
	if(def == 0 && inhalt == '') return 0; 
	 
	if(v.type == 'checkbox') {
		if(! v.checked)  {
			inhalt = def;
		} 
	}
	if(v.type == 'radio') {
		var n = v.name;
		var a = new Array(); 
		inhalt = ''; 
		try {
			eval("var a = document.FORMRAHMEN."+n);  
		} catch(e) {
		}
		for(var i = 0; i < a.length; i++) {
			if(a[i].checked) inhalt = a[i].value; 
		}
	}
	if(pk3_starten == 99) {
	  if(v.type == 'radio') {
	    inhalt = ''; 
	    for(var ii = 0; ii < document.FORMRAHMEN.length; ii++) {
	      if(document.FORMRAHMEN.elements[ii].name.indexOf('IN_') == 0) {
		var e = document.FORMRAHMEN.elements[ii]; 
		
		if(e.type =="radio" && e.id == v.id) {
			if(e.checked) inhalt = e.value ;
			pk3debug("RADIO" + e.id + " " + e.type + " " + e.value + " IN: " + inhalt)
		}
              }
	    }
	  }
	}
//	if(v.type == 'radio') {
//		alert(v.id + "." +v.value +v.length); 
//	}
	inhalt = inhalt.trim(); 
	if(def == '99'  ) {
		inhalt = Math.round(inhalt*100); 
		inhalt = inhalt/100; 
		def = '0'; 
	}
	if(def == '0'  ) {
		inhalt =inhalt.replace('.',''); 
		inhalt = inhalt.replace(',','.'); 
		if(isNaN(inhalt)) inhalt = 0; 
		// inhalt = Math.round(inhalt*100) / 100 ; 
	}
	if(def == '99'  ) {
		inhalt = Math.round(inhalt*100); 
		inhalt = inhalt/100; 
	}
	return inhalt; 
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

function add_wennjs(name,bez,wert) {
	var p = all_js.length;
	all_js[all_js.length ] = new wenn_js(name,bez,wert); 
	add_dep(bez,p)
}

function add_input(name) {
	// add_dep(name,'nix'); 
}

function add_ajax(name,bez,wert,q) {
	var p = all_js.length;
	all_js[all_js.length ] = new pkajax(name,bez,wert,q);
	add_dep(bez,p)
		
	
} 

function add_formel(name,f) {
	var p = all_js.length;  
	all_js[p] = new formel(name,f);
	add_dep(name,p)
	all_js[p].checkformel(p); 
}

function add_anzeige(name,f,pos,nachk) {
	var p = all_js.length;  
	all_js[p] = new anzeige(name,f,pos,nachk);
	add_dep(name,p);	
}

function add_dep(n,i) {
	if(! all_deps[n]) {
		all_deps[n] = new Array();
	}
	if(i != 'nix') {
		all_deps[n][all_deps[n].length] = i; 
	}
}

/////////////////////////////////////////////////////////

function anzeige(name,text,p,k) {
	this.bez = name;
	this.txt = text; 
	this.pos = p; 
	this.nachk = k; 
	this.art = "ANZEIGE"; 
	this.teste = function(name,wert) {
		pk3debug("ANZEIGE: "+this.bez+" .. "+name+" mit "+wert+".")
		var v = getwert(document.getElementById(this.bez),"");
		if(v != '') {
			if(this.nachk == 2) {
				var aus = /^(\d+)\,(\d*)/; // ,(\d{0-2})(\d)/; 
				aus.exec(v); 
				pk3debug(" === " + v + "= " + RegExp.$1 + ','+RegExp.$2); 
				if(RegExp.$1 != '' && RegExp.$2 != '') {
					var tmp = RegExp.$2
					v = RegExp.$1 + ','+tmp.substr(0,2); 
				}
				
			}
 			var t= this.txt.replace('[X]',v); 
			
			pk3debug(' . . ANZEIGE: PK3_TXT'+this.pos+'_'+this.bez+" - "+t ); 
			document.getElementById('PK3_TXT'+this.pos+'_'+this.bez).innerHTML = ""+t; 
		}
	}

}

function formel(name,f) {
	this.name = name; 
	this.formel_org = ' '+f+' '; 
	this.f = '';
	this.bez = name; 
	this.art = "FORMEL"; 
	this.werte = new Array(); 
	this.teile = new Array(); 
	this.vars = new Array();


	this.formel_org = this.formel_org.replace(/,/g,'.'); 

	this.teste = function(name,wert) {
		var f = ''; 
//AS		pk3debug("FORMEL:"+this.teile,2); 
		for(var i = 0; i < this.teile.length; i++) {
			if(this.teile[i].indexOf('=') == 0) {
				var dy = this.teile[i].replace('=',''); 
				// alert("get "+dy); 
				f = f +  getwert(document.getElementById(dy),"0");  
			} else {
				f = f + this.teile[i]; 
			}
		}
		if(f == '' ) f = 0; 
		var ret = 0; 

		try{ 
			f = f.replace(/&#44;/g,','); 
			eval("ret = "+f+";");
		} catch (e) {
			ret = 0; 
			pk3debug("===== EVAL ERROR :"+this.formel_org); 
		}
		pk3debug(" . . Formel:  "+this.name+ ": ("+f+ ") ergibt: "+ret+" || "+this.formel_org,1) ;
		if(document.getElementById(this.name).type!='hidden') { 
			ret = Math.round(ret*100) / 100 ; 
		}
		ret = String(ret);
		if(ret.indexOf('.') > 0) { ret = ret.replace('.',',') }; 
		if(ret == 'Infinity') {
			ret = "00"; 
		}
		document.getElementById(this.name).value = ""+ret;  
	}
	
	this.checkformel = function(pos) {
		var t = this.formel_org.split("["); 
		for(var i = 0; i < t.length; i++) {
			// pk3debug(this.name+" - "+i+":"+t[i]); 
			if(t[i].indexOf(']')!= -1) {
				var tmp = t[i].split(']'); 
				this.teile[this.teile.length] = '='+tmp[0]+""; 
				this.teile[this.teile.length] = tmp[1]+" "; 
				add_dep(tmp[0],pos); 
				this.vars[this.vars.length] = tmp[0]; 
				// pk3debug(this.name+" . . . .  "+i+":"+tmp[0]);
				for(var j = 0; j < all_js.length; j++) {
//					if(all_js[j].bez == tmp[0] && all_js[j].art == 'FORMEL') {
					if(all_js[j].bez == tmp[0] ) {
						
						pk3debug(" . . VARS: "+this.bez+" in "+all_js[j].bez+" :"+(all_js.length-1) ); 
						try { 
							all_js[j].vars[all_js[j].vars.length] = this.bez; 
						} catch (e) {
							pk3debug("ERROR: "+all_js[j].art ); 
						}
						// alert(all_js[j].vars); 
					}
				}
				

			} else {
				this.teile[this.teile.length] = t[i]+ " "; 

			}
			if(i % 2 == 0 ) { 
				// ausserhalb 
			} else {
				// in einem Bez
			}
		}

		// alert("TEXT " + this.teile); 


	}

}

function wenn_js(name,bez,wert) {
	this.name = name;
	this.bez = bez;
	this.wert = wert.trim(); 
	this.art = "WENN"; 
	this.status = false; 
	
	this.teste = function (name,wert) {
		pk3debug("WENNJS "+name+" = "+wert +" Ziel: " +this.bez+"="+ this.wert); 
		if(name==this.bez) {
			if(wert == this.wert ) {
				this.status = true; 
			} else {
				this.status = false; 	
			}
			if(this.status) {
				//document.getElementById(this.name).style.display = "block"; 
				try {
					Effect.BlindDown(this.name);
				} catch(exc) {
					document.getElementById(this.name).style.display = "block"; 
				}
			} else {
				document.getElementById(this.name).style.display = "none"; 
				// Löschen .. 
				pk3_inputclean(document.getElementById(this.name),0)
			}
		}
	}
}


function pkajax(name,bez,wert,quelle) {
	this.name = name;
	this.bez = bez;
	this.wert = wert.trim(); 
	this.art = "AJAX";
	this.status = false; 
	this.quelle = quelle;  

	this.teste = function(name,wert) {
		if(name==this.bez) {
			if(wert == this.wert ) {
				this.status = true; 
			} else {
				this.status = false; 	
			}
			if(this.status) {
		pk3debug(" AJAX "+name+" = "+wert +" Ziel " +this.bez+"="+ this.wert+" IN: "+this.name);

		 ajax_call('/wn05iframe/a_pk3.php?POS='+this.name+'&NAME='+this.quelle); 
		//alert('/dynamic/ajax.php?='+this.quelle+'&name=this.name'); 
			}
		}
	}
}

function pk3debug(a,level) {
//    if(level == 0) level = 1; 
//	if(debuglevel  <= level) {
	  if(document.getElementById("pk3_debug")) {
		document.getElementById("pk3_debug").innerHTML = 
			document.getElementById("pk3_debug").innerHTML + a + "<br>" ; ;
		if(a == '=CLEAR') 	document.getElementById("pk3_debug").innerHTML = ""; 
	  }
//	}
}

function istnull(a,b) {
	if(a == 0) return b; 
	return a; 
}

function pk3_final_off() {
	for(var d = all_js.length-1; d >= 0; d--) {
	   if(all_js[d].art == "FORMEL" ) {		
		for (var i in all_js[d].vars) {
			var n = all_js[d].vars[i]; 
			pk3debug(all_js[d].bez+" - "+n); 
			add_dep(n,''); 
			 all_deps[n][all_deps[n].length] = -d; 
		}
	   }
	}
	return; 
}

function pk3_final(level) {
	var ab = 0; 
	var t = new Array(); 
	for (var ii in all_deps ) {
//		t[t.length] = ii; 
//	}
//	for(var d = t.length-1; d >= 0; d--) {
//		ii = t[d]
		var add = new Array; 
		var size = all_deps[ii].length; 
		for(var i = 0; i < size; i++) {
		   if(all_deps[ii][i] < 0) {
			  var index = all_deps[ii][i] * -1; 
			  var n = all_js[index].bez
			  if(n != '') {
				for(k = 0; k < all_deps[n].length; k++) {
					if(all_deps[n][k] != index) {
						add[add.length] = Math.abs(all_deps[n][k]); 
						all_deps[ii][all_deps[ii].length] =  Math.abs(all_deps[n][k]);
 					}
				}
 		          }
 			  all_deps[ii][i] = index;

		   }
		}
		all_deps[ii].concat(add); 
		pk3debug("ADD:"+ii+":"+add+"<br>"); 
	}
	for (var ii in all_deps ) {	
		if(all_deps[ii].length == 1) {
			var n = all_deps[ii][0]; 
			all_deps[ii] = all_deps[all_js[n].bez]
		}
	}
}


function pk3_viewall() {
	if(! document.getElementById("pk3_debug")) {
		return; 
	}
	var Fenster1 = window.open('', "Zweitfenster", 
	"width=900,height=600,left=10,top=20,resizable=1,scrollbars=1");
	for (var ii = 0; ii < all_js.length;  ii++ ) {
		var n = all_js[ii].bez; 
		var z = ''; 
		if(all_js[ii].art == 'FORMEL') {
			z= "<br> . .  "+all_js[ii].formel_org+"<br> . . "+all_js[ii].vars; 
	
		}
		if(all_js[ii].art == 'WENN') {
			z= " auf "+all_js[ii].name; 
		}
		Fenster1.document.write(ii+":"+n+" "+all_js[ii].art+z+"<br>"); 
	}
	Fenster1.document.write("<hr>"); 
	for (var ii in all_deps ) {
		Fenster1.document.write(ii + ": "+all_deps[ii]+"<br>"); 
	}

	Fenster1.document.close(); 
	Fenster1.focus(); 
}

// pk3_viewall(); 

/////////////////////
function pk3_inputclean(x,level) {
	var l = level + 1;  
	for (var i=0;i<x.childNodes.length;i++) {
		var y = x.childNodes[i];
		var tn = y.tagName; 
//		pk3debug('CLR '+pk3_level.substr(0,2*l)+":" +tn);
		if(y.tagName == 'INPUT') {
			if(y.type == 'radio' || y.type == 'checkbox' ) {
				y.checked = false; 
				
			} else {
				y.value = ''; 
			}
		}
		if(tn == 'DIV' || tn == 'TABLE' || tn == 'TBODY' || tn == 'TR' || tn == 'TD') {
			pk3_inputclean(y,l); 
		}
	}

}

function is_it_visible(x) {
//	alert(x.tagName); 
// 	window.status = x.tagName + window.status 
	if(x.tagName == 'FORM' || x.tagName == 'BODY') {
		return true;
	}
	if(x.style) { 
		if(x.style.display) {
			if(x.style.display=="none") {
				return false; 
			}	
		 }
	}
	return is_it_visible(x.parentNode);;
}


///////////////////////////////////////////////////////////////////
var mliste = new Array(); 
var tliste = new Array(); 
var do_formcheck = true;
 
function pk3_addchck(a,b) {
   var x = mliste.push(a) ;
   var y = tliste.push(b) ;
} 


function dochckthis() { 

   var is_ok = 0;
   var f= document.getElementById('FORMRAHMEN'); 
  
   for(var i = 0; i < f.elements.length; i++) {
   	
	var a = f.elements[i]
	t = ''; 
	var pattern = a.getAttribute('pattern'); 
        if(a.getAttribute('patternx') != '') {
		pattern = a.getAttribute('patternx');
	};
    	var reqn = a.getAttribute('reqn');
    
 	if(a.type == 'text'){	
 	var pattern = a.getAttribute('patternx'); 	
 	}
    
	if(a.type == 'radio') {
		val = getwert(a,''); 
		if(pattern == 'J') pattern = 'radio'; 
	} else {
		var val = a.value;
	}
	if (reqn == null) reqn = ''; 
	if (pattern == null) pattern  = '';
	if(! is_it_visible(a)) pattern = ''; 
	if(pattern == 'PLZ') pattern = "1000-99999"; 
	 //alert(pattern + '-'+reqn+' '+a.value);
	if (pattern != null && pattern != '') {
		
	  if(pattern == 'J') { 
		if(a.value.length == 0 ) t = " darf nicht leer sein ";
	  } else if (pattern == 'EMAIL') {
		if(val.indexOf('@') < 2 ) t = " muss eine Email sein "; 
	  } else if (pattern == 'radio') {
		if(val == '') t = " Bitte eine Option w&auml;hlen ";
	  } else if (pattern.indexOf('-') > 0) {
	 	
		var k   = pattern.split('-'); 
		try {
			min = parseInt(k[0]); 
			max = parseInt(k[1]);
			vl = parseInt(a.value); 
		} catch(e) { 
			min = 0; max = 1000000;vl = -1; 
		}
		if(isNaN(vl)) vl = -1; 
		if(vl < min || vl > max) { 
			
			t = " muss eine Zahl zwischen "+min+" und "+max+" sein";
		}
	  }
	}
	if(reqn != '') {
	   a.style.border="";
	   if(document.getElementById('REQTXT' +reqn) ) {
		document.getElementById('REQTXT' +reqn).innerHTML = ''; 
	   }
	} else {
		if(a.style.borderColor  == "red") {
			a.style.border="1x solid #CCCCCC";
		}
	}
	if(t != '') {
		a.style.border="1x solid red"; 
		var b = a.parentNode
		if(reqn != '') {
			
			document.getElementById('REQTXT' +reqn).innerHTML = '<br>'+t; 
		}
		is_ok++
		
	} 


   }
	
	//alert(is_ok);
	
    if(is_ok > 0 ) {
		document.getElementById('REQTXT').innerHTML = 'Es fehlen noch Eingaben in diesem Formular!<br>'; 
    } else {
		 document.getElementById('REQTXT').innerHTML = ''; 
    }
	
// 	return false; 
    return (is_ok == 0); 

   return is_ok; 
}
//////////////////////////////////////////////7

function pk3_write_slider(id,maxi,st) {
	 var h = '<div class="playground">'
	h += '<div id="sl_'+id+'" class="ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all">'; 
	h += '<div class="ui-slider-handle ui-state-default ui-corner-all" style="left: 0%;"/>'; 
	h += '<div class="ui-slider-range ui-widget-header" style="left: 0%; width: 100%;"/></div></div>'; 
	var newdiv = document.createElement('div');
	newdiv.innerHTML = h; 
	document.getElementById(id).parentNode.appendChild(newdiv);
	var val = 0; 
	try {
		val = 1*document.getElementById(id).value; 
	} catch (e) {}
	$("#sl_"+id).slider({step:1*st,max: 1*maxi ,min:0,value:val
 	,change: function(event, ui) {  
		var p = ui.handle.parentNode; 
		var xid = p.id; 
		var ww = xid.replace(/sl_/g,""); 
		document.getElementById(ww).value = ui.value; 
		document.getElementById(xid+"_val").innerHTML = ui.value;
		pkjs_test(document.getElementById(ww)); 
	 }
	}); 
}



