//<script>
function Lib_dhtm(obj)
{
	obj.form_ausf	=Library_form_ausf;
	obj.ArraySort	=Library_ArraySort;
	obj.Set_onkeypress_enter=Library_Set_onkeypress_enter;
	
	return obj;
}
if(self["Lib"] == null) 
		self["Lib"] = Lib_dhtm(new Object());
else	Lib_dhtm(self["Lib"]);

/*
z.B.	Lib.Set_onkeypress_enter( self, 13, "alert(1)");
	wird immer alert(1) aufrufen when "enter" gedruckt wird
*/
function Library_Set_onkeypress_enter( Fenster, Button, F_tion ) {
	Docum = Fenster.document;
	Docum.onkeypress = Library_onkeypress_enter;
	
	if( Docum["onkeypress_F_tion"] == null ) {
		Docum.onkeypress_F_tion = new Array();
		Docum.win = Fenster;
	}
	Docum.onkeypress_F_tion[Button] = F_tion;
	
	if( Lib.browser.ns4 && Fenster!=null) {
		Library_all_elements( Fenster, "win", Fenster );
		Library_all_elements( Fenster, "onkeypress", Library_parent_onkeypress );
	}
}
function Library_onkeypress_enter(e)
{ 
  if( !Lib.browser.ns ) {
       var key=this.win.event.keyCode;
	   if( this.onkeypress_F_tion[key]!=null) 
			this.win.self.eval(this.onkeypress_F_tion[key]);
	   if( this.win.event.srcElement["onkeypress"] != null )
			return this.win.event.srcElement.onkeypress();
		return true;
  } else {
	   var key=e.which;
	   if( Lib.browser.ns6 ) {
			key = e.keyCode;
	   }
	   if( this.onkeypress_F_tion[key]!=null) {
			if( Lib.browser.ns6 ) {
				this.win.setTimeout(this.onkeypress_F_tion[key]+"",100);
			} else {
				this.win.eval(this.onkeypress_F_tion[key]);
			}
	   }
	   return true;
  }
}
function Library_all_elements( Win, Name, Value)
{ var obj; var str="";
  for( var f=0; f<Win.document.forms.length; f++ )
     for( var e=0; e<Win.document.forms[f].elements.length; e++ ) {
		obj = Win.document.forms[f].elements[e];
		obj[Name] = Value;
		str+=obj.name+"\n";
     }
}

function Library_parent_onkeypress(e)
{
  if( Lib.browser.ns4 ) {
	if( this.win != null && this.win.document["onkeypress"] != null )
		this.win.document.onkeypress(e);
  }
}
/*
quelle_array="oooo%%oooo%0%OOOO\nOOOOO%1%o%z%oooo%%oooo\n%{5%kkkk%x%kf%y%fff}n%}%\ndsfdfsdfsdf\n%{6%k %% kf %2% ff %% f\n%}%";
 var elem_array = new Array(10,12,17);
 elem_array.test=" Hallo ";
 elem_array[3]=(" Hallo " == elem_array.test);
 elem_array[6]=new Array(1,2,3,4,5);
 elem_array[6][0]=new Array(3,4,5);
 elem_array[5]= new obj();
 function obj()
 {
  this.x='koord_X'; this.y='koord_Y';
 }
  !!!!!! forma.test_textarea2.value=hidden2.form_ausf(quelle.split('%'),elem_array).join('');
mode==null |?test| tra-la-la |?| nur whenn (test==false) wird "tra-la-la" nicht gezeigt
anderfals(test ==null oder test==true) wird "tra-la-la" gezeigt

mode==1 nur when true wird angezeigt
*/
function Library_form_ausf(quelle_array,elem_array,nummer,parent_elem_array,mode)
{
	var wert;
	var n,i,i1,name; 
	if(quelle_array.length%2 == 0) // z.B. "|T_Land| |test|" oder Feller
		quelle_array[quelle_array.length]=""; 
	
	for(i=1,i1=0; i<quelle_array.length-1; i+=2)
	{ 
		if(quelle_array[i].indexOf('?')!=-1) //*****Bedienung if(?name oder ?!name) else(?!) end(?) 
		{ 
			name = i1++; var loeschen;

			if(quelle_array[i]!='?') 
			    name = quelle_array[i].split('?').join('');
			if((""+name).indexOf('!')!=-1) //*****NOT Bedienung
			{ name = name.split('!').join(''); loeschen=true; } 
			else loeschen=false;
						 
			wert=getWert( elem_array,name );
			if(mode==null) {
				if( wert==false || wert=="false" ) {
			  		loeschen=!loeschen;
				} else { loeschen=loeschen; }
			} else {
				if( wert==true || wert=="true" ) {
			  		loeschen=loeschen;
				} else { loeschen=!loeschen; }
			}
			var cont=0; 
			quelle_array[i]='';
						 
			var str__="";
						   
			for(n=i+2; n<quelle_array.length-1; n+=2) //alles macht Leer
			{ 
			    if(quelle_array[ n ].indexOf('?')!=-1) {
			  		if(quelle_array[ n ]=='?') {
			  			if(cont==0) { if(loeschen) quelle_array[n-1]=''; quelle_array[n]=''; break; }
			  			else cont--;
			  		} else if(quelle_array[ n ]=='!?' || quelle_array[ n ]=='?!') {
			  			if(cont==0) { 
			  				if(loeschen) 
			  					quelle_array[n-1]=''; 
			  				loeschen=!loeschen; quelle_array[n]=''; continue;
			  			}
			  		} else cont++;
			    }
			    if(loeschen==true) { quelle_array[n-1]=quelle_array[n]=''; }
			}
		}
		else if(quelle_array[i].indexOf('{')!=-1) //*****Schleife
		{
			name = i1++;
			if(quelle_array[i]!='{') 
				name = quelle_array[i].split('{').join('');
			var new_quelle_array = new Array();
			quelle_array[i]='';
			var cont=0;
			for( n=0, i+=2; i<quelle_array.length && (quelle_array[i] != '}' || cont > 0); i+=2, n+=2)
			{	if(quelle_array[ i ].indexOf('{')!=-1) cont++; 
				if(quelle_array[ i ].indexOf('}')!=-1) cont--; 
				new_quelle_array[ n ]=quelle_array[i-1];
				new_quelle_array[n+1]=quelle_array[ i ];
				quelle_array[i-1]=quelle_array[i]="";
			}
			new_quelle_array[n]=quelle_array[i-1];
			quelle_array[i-1]=quelle_array[i]="";
			if(name == null || name.split == null || name.split(' ') == '') {
				if(elem_array.length!=null) {
		 			for(n=0; n<elem_array.length; n++)
					{	new_quelle_array1 = Library_copy_array(new_quelle_array);
						quelle_array[i-1] += Library_form_ausf(new_quelle_array1,elem_array[n],n,elem_array).join('');
					}
				} else {
					quelle_array[i-1] += Library_form_ausf(new_quelle_array,elem_array).join('');
				}
			} else {
				wert=getWert( elem_array,name );
				if(wert!= null) {
					if(wert.length!=null) {
		 				for(n=0; n<wert.length; n++)
						{	new_quelle_array1 = Library_copy_array(new_quelle_array);
							quelle_array[i-1] += Library_form_ausf(new_quelle_array1,wert[n],n,wert).join('');
						} 
					} else {
							quelle_array[i-1] += Library_form_ausf(new_quelle_array,wert,null,elem_array).join('');
					}
				}
			 }
		}
		else
		if(quelle_array[i]!='')
		{	var String_Var=false; 
		         
		    if(quelle_array[i].indexOf("\"")!=-1) 
		    {
				name=quelle_array[i].split("\"").join("");
				String_Var=true;
		    } else name=quelle_array[i];
				 
			wert=getWert( elem_array,name );
			if(wert!=null) 
			   quelle_array[i]=wert;
			else
			if((""+name).toUpperCase()=='RecordValue'.toUpperCase()) // Schlüsselwörte
			{	if(elem_array!=null) 
					quelle_array[i]=elem_array;
			}
			else
			if((""+name).toUpperCase()=='RecordNumber'.toUpperCase()) // Schlüsselwörte
			{	if(nummer!=null) 
					quelle_array[i]=nummer;
			}
			else
			if((""+name)=='/js_oder/') { // Schlüsselwörte
				quelle_array[i]="||";
			} else if((""+name)=='/procent/') { // Schlüsselwörte
			    quelle_array[i]="%";
			} else
			if((""+name).indexOf("..")!=-1) // parentobject
			{	name=name.split('..')[1]+"";
				if(parent_elem_array!=null && parent_elem_array[name]!=null) 
					quelle_array[i]=parent_elem_array[name];  
			} else quelle_array[i]='';
						 
			if(String_Var) quelle_array[i]="'"+quelle_array[i]+"'";		 
		} else quelle_array[i]='';
	}
	return quelle_array;
}
function getWert( elem_array, name ) {
	if( elem_array!=null ) {
		if( name.indexOf(".")!=-1 ) {
			var obj = eval("elem_array."+name);
			if( typeof(obj)=="function" ) {
				return obj();
			} else if( typeof(obj)!="undefined" ){
				return obj;
			} else {
				return null;
			}
		} else {
			if( typeof(elem_array[name])=="function" ) {
				return elem_array[name]();
			} else if( typeof(elem_array[name])!="undefined" ){
				return elem_array[name];
			} else {
				return null;
			}
		}
	} else {
		return null;
	}
}
function Library_copy_array(array1)
{ 
	var ret = new Array();
	for(var i=0; i<array1.length; i++) ret[i]=array1[i];
	return ret;
}
function Library_ArraySort( arr, f_tion ) {
	var min_i, val;
	for( var i=0; i<arr.length; i++ ) {
		min_i = i;
		for( var j=i+1; j<arr.length; j++ ) {
			if( arr[j]!=null && f_tion(arr[min_i],arr[j])==1 ) {
				min_i = j;
			}
		}
		if( min_i>i ) {
			val=arr[min_i]; arr[min_i]=arr[i]; arr[i]=val;
		}
	}
}
