//<SCRIPT language="javascript">
var debugmode=0;

function setaktuelleausgabe(rowno){
//alert("Hallo"+rowno)
	if (confirm(LCInfoAktuellSetzen)) {
		var formobj=document.standform
		formobj.elements["istAktuell["+rowno+"]"].value=-1
		setdirty("chkdirty"+rowno,false)
		checksave()
	}
}



function confirmregistration(confirmname){
	if (confirm("Soll die Registrierung von "+confirmname+" tatsächlich vorgenommen werden ? ")) {
		return true
	}else{
		return false
	}
}



function selecttype(id,designation,classification,idequipmenttype){
	formobj=window.opener.document.standform
	formobj.Produktname.value=designation
	formobj.elements["DHV-Klasse"].value=classification
	var cl_category="Zubehoer" //Zubehör
	if (idequipmenttype==1) cl_category="Drachen"
	if (idequipmenttype==2) cl_category="Gleitschirm"
	if (idequipmenttype==3) cl_category="Drachen-Gurtzeug"
	if (idequipmenttype==4) cl_category="Gleitschirm-Gurtzeug"
	if (idequipmenttype==5 || idequipmenttype==6) cl_category="Rettungsgeraet"
 	for(i=0;i<formobj.Produktkategorie.length;++i) {
 		if (formobj.Produktkategorie.options[i].value==cl_category) {
 			formobj.Produktkategorie.value=cl_category
 			formobj.Produktkategorie.selectedIndex=i
 			window.close()
 		}
 	}
}

function submit_form(formobj) {
	if (formobj) {
		var oldmethod=formobj.method;
		var tryagain=true;
		try {
			formobj.submit();
			tryagain=false;
		}catch(err) {
			formobj.method='post';
		}
		if (tryagain) {
			try {
				formobj.submit();
			}catch(err) {
				alert('Problem beim Absenden eines Formulars');
			}finally {
				formobj.method=oldmethod;
			}
		}
	}
}

function refresh_opener(checksave){
//forces the opening widow to be refreshed
	if (window.opener){
		if (window.opener.closed == true) {
			//alert ("Öffnendes Formular ist geschlossen!");
		}else{
			if (checksave) {
				window.opener.checkapplyfilter();
			}else{
				if (window.opener.standform) {
					submit_form(window.opener.standform)
					//window.opener.standform.submit()
				}
				window.focus();
			}
		}
	}
}
function selectrecord(fieldvalstring){
	var formnames=new Array()
	//alle möglichen formnames hier definieren
	formnames[0]="quicksearch"
	formnames[1]="standform"
	var formobj=document.standform
	//alert(formobj.parent.window.name);
	var fldvals=new Array()
	fldvals=fieldvalstring.split(",")
	var countvals=fldvals.lenght
	if (countvals>0) {
		if (fldvals[0]==""){
			alert ("Leere ID; kann Datensatz nicht auswählen!")
			return;
		}
	}
	var defaultfiltername="" //um den aufrufenden  verweis ändern zu können
	var callingfields=formobj.callingfields
	var fieldstring=callingfields.value
	var linknamesubpart="selectrecordlink" //so müssen die linknamen anfangen, wenn ihr href angepasst werden soll
	var subpartlength=16;
	var selectlinkname="";

	if (fieldstring.length==0) {
		alert("Name des aufrufenden Feldes verloren, Dialogseite bitte nochmals öffnen!!")
		return;
	}
	if (window.opener){
		if (window.opener.closed == true) {
			alert (LCMsgLostOpener); //"Öffnendes Formular konnte nicht ermittelt werden!");
		}else{
//			if (window.opener.standform) {
			////////////////////////////////////
				var flds=new Array()
				flds=fieldstring.split(",")
				var rowcheckfield=""
				//try different formnames, see on which form the field flds[0] exists
				var identified=false
				var calldocument=opener.document
				for (i=0;i<formnames.length;i++) {
					if (calldocument.forms[formnames[i]]) {
					//alert(formnames[i]+", feld "+flds[0])
						if (calldocument.forms[formnames[i]].elements[flds[0]]) {
							//alert(formnames[i]+", feld "+flds[0])
							var callform=calldocument.forms[formnames[i]]
							identified=true
							break;
						}
					}

				}
				if (!identified) {
					alert("Konnte das aufrufende Formular nicht ermitteln.\nVersuchte, das Feld "+flds[0]+" zu finden.")
					return;
				}
				var fieldname=callform.elements[flds[0]].name
				var nameparts=fieldname.split("[")
				if (nameparts.length==2) {
					var parts2=nameparts[1].split("]")
					rownumber=parts2[0]
					rowcheckfield="chkdirty"+rownumber //thats the row-dirty field
					//alert(rowcheckfield)
				}else{
					rowcheckfield=""
					rownumber=""
					//alert ("Kann Name des dirty-Feldes nicht ermitteln")
				}
				//to be able to modify the calling url, the name of the link ???
				//and the name of the filter field must have been submitted via callingfields
				// neu 19.11.2004
				if (flds.length>1) {
					//dann ist das letzte feld der filtername
					var filtername=flds[flds.length-1];
					if (filtername.indexOf('_')>0) {
						defaultfiltername=filtername;
						if (flds.length>2) {
							//dann ist das vorletzte feld der linkname
							var linkname=flds[flds.length-2];
							if (linkname.indexOf('link')>0) {
								selectlinkname=linkname;
							}
						}
					}
				}
				//alert("defaultfiltername="+defaultfiltername);
				//alert("linknamesubpart="+linknamesubpart);
				//if linkname has been omitted try the following default link name:
				if (selectlinkname=="") {
					if (rownumber) selectlinkname=linknamesubpart+"["+rownumber+"]"
				}

				for (i=0;i<flds.length;i++){
					var parts=flds[i].split("_")
					if (parts.length>1) defaultfiltername=flds[i];
				}

				if (flds.length>fldvals.length) {
					countvals=fldvals.length
				}else{
					countvals=flds.length
				}
				//Werte setzen
				for (i=0;i<countvals;i++){
					if (callform.elements[flds[i]]) {
						if (callform.elements[flds[i]].type=="select-one"){
							var combo=callform.elements[flds[i]]
							for(j=0;j<combo.length;j++) {
								if (combo.options[j].value==fldvals[i]) {
									//alert("gefunden")
									combo.value=fldvals[i]
									combo.selectedIndex=j
									break;
								}
							}
						}else{ //non-combo
							//alert("setze" +flds[i]+" auf "+fldvals[i]);
							//alert("aktuell ist:"+callform.elements[flds[i]].value);
							callform.elements[flds[i]].value=fldvals[i];
						}
					}
				}

				//if (callform.elements["Anzeigetitel"]) callform.elements["Anzeigetitel"].value=designation
				if (rowcheckfield!="") {
					if (callform.elements[rowcheckfield]){
						callform.elements[rowcheckfield].checked=true
						callform.elements[rowcheckfield].value=true
					}else alert("Kann dirty Feld '"+rowcheckfield+"' nicht setzen!");
					if (callform.elements["formdirty"]){
						callform.elements["formdirty"].value=true
					}else alert("Kann dirty Feld 'formdirty' nicht setzen!");
				}

				//change calling href according to new selection
				var linkname=""
				if (defaultfiltername!="" && selectlinkname!="") { //wenn fehler beim setzen der id
					for (i=0;i<window.opener.document.links.length;i++){
						linkname=window.opener.document.links[i].name
						/*if (linkname.length>0) {
							alert('suche nach: '+selectlinkname+'\nVergleich mit: '+linkname);
						}*/
						if (linkname==selectlinkname) {
							var selectlink=window.opener.document.links[i];
							var selecthref=selectlink.href;
							defaultfiltername+="=";
							var parts=selecthref.split(defaultfiltername);
							//alert(linkname+' gefunden');
							if (parts.length==2) {
								var part1=parts[0]+defaultfiltername+fldvals[0];
								var parts2=parts[1].split("&");
								for(j=1;j<parts2.length;j++){
									part1+="&"+parts2[j];
								}
								selectlink.href=part1 ;
								break;
							}else{
								alert ("Kann den aufrufenden Filternamen nicht in der URL finden finden ("+defaultfiltername+")");
								break;
							}
						}
					}
				}
				window.close()
//			}else{
//				alert("Formular 'standform' nicht gefunden!")
//			}
		}
	}else alert("Auswählen geht nur wenn die Seite vom zugehörigen Formular aus aufgerufen wurde");
}

function reset_fieldselection(){
	var formobj=document.standform
	var elsave="savefieldselectioncookie"
	var elvalue="displayfields"
	if (formobj.elements[elsave] && formobj.elements[elvalue]){
		formobj.elements[elsave].value=true
		formobj.elements[elvalue].value=""
		if (formobj.elements["doedit"]) {
			//alert("mit submit; testen!!")
			if (formobj.elements["doedit"].value) {
				checkapplyfilter();
			}else {
				submit_form(formobj);
				//formobj.submit();
			}
		}else {
			submit_form(formobj);
			//formobj.submit();
		}
	}else alert( "Die Elemente "+elsave+" und "+elvalue+"fehlen auf dieser Seite!");
}
function popupwindow(url,poptarget,popoptions,check_save){
//performs widow.open, checks whether data needs saving
	var formobj=document.standform
	var check=true
	if (check_save){
		if (formobj.elements["formdirty"]) {
			var formisdirty=formobj.elements["formdirty"].value
			if (formisdirty) {
				check=checkuserinput(true);
			}
			if (!check) formobj.formdirty.value=""
			if (check && formisdirty) {
				save(window.location)
				return;
			}
		}
	}
	if (url && poptarget){
		if (url!="" && poptarget!=""){
			var optionstring=""
			if (!popoptions) popoptions="";
			if (popoptions=="") {
				var newheight=screen.availHeight*0.8
				var newwidth=screen.availWidth*0.9
				var newtop=screen.availHeight*0.2
				var newleft=screen.availWidth*0.2
				optionstring="height="+Math.round(newheight);
				optionstring+=",width="+Math.round(newwidth);
				optionstring+=",top="+Math.round(newtop);
				optionstring+=",left="+Math.round(newleft);
				optionstring+=",dependent=yes,resizable=yes,scrollbars=yes,status= yes "
				/*optionstring="height="+newheight.toFixed(0);
				optionstring+=",width="+newwidth.toFixed(0);
				optionstring+=",top="+newtop.toFixed(0);
				optionstring+=",left="+newleft.toFixed(0);
				optionstring+=",dependent=yes,resizable=yes,scrollbars=yes"*/
				//alert(optionstring)
			}else{
				optionstring=popoptions
			}
			var newwin=window.open(url,poptarget,optionstring,false)
			newwin.focus()
		}
	}
}

function selectfields(){
	var formobj=document.standform
	var oldmethod=formobj.method;
	var oldaction=formobj.action;
	var oldtarget=formobj.target;
	window.open('about:blank',"fieldselection","scrollbars=1,WIDTH=700,HEIGHT=410,LEFT=250,TOP=200,resizable=YES",true)
	formobj.method="post";
	formobj.target="fieldselection";
	formobj.action='fieldselection.php';
	submit_form(formobj);
	//formobj.submit()
	formobj.method=oldmethod
	formobj.action=oldaction
	formobj.target=oldtarget
}

function save(url){
	var formobj=document.standform
	var oldmethod=formobj.method
	var oldaction=formobj.action
	formobj.method="post"
	formobj.action=url
	formobj.dosave.value="1"
	unset_counttotal()
	submit_form(formobj);
	//formobj.submit()
	formobj.method=oldmethod
	formobj.action=oldaction
}


function checkformelement(elname,formname){
	if (!formname) formname='standform';
	var formobj=document.forms[formname];
	if (!formobj.elements[elname]) {
		if (debugmode) alert("Formularelement "+elname+" existiert nicht!")
		return false
	}else{
		return true
	}
}

function checkinteger(elname,formname,fieldalias){
	var check=false
	if (!formname) formname='standform';
	var formobj=document.forms[formname];
	if (checkformelement(elname,formname)) {
		var el=formobj.elements[elname]
		var val=formobj.elements[elname].value
		if (val=="") return true;
		if (!isNaN(val)) {
			numval=val*1 //remove leading zeros etc
			if (is_integer(numval)==true) {
				el.value=numval
				check=true
			}
		}
		if (check==false) {
			if (!fieldalias) {
				fieldalias=get_fieldalias(elname);
			}
			alert(fieldalias+' '+LCMsgInvalidInteger);//" muss ganze Zahl sein!");
			el.focus();
			el.select();
		}
	}
	return check
}

function checkfloat(elname,formname,fieldalias){
	var check=false
	if (!formname) formname='standform';
	var formobj=document.forms[formname];
	if (checkformelement(elname,formname)) {
		var el=formobj.elements[elname]
		var val=formobj.elements[elname].value
		//alert(val)
		if (val=="") return true;
		val=val.replace(",",".");
		if (!isNaN(val)) {
			check=true;
			numval=val*1 //remove leading zeros etc
			if (is_integer(numval)==true) {
				val=numval+".0"
			}else val=numval;
			el.value=val
		}
		if (check==false) {
			if (!fieldalias) {
				fieldalias=get_fieldalias(elname);
			}
			alert(fieldalias+' '+LCMsgInvalidFloat);//muss Dezimalzahl sein!");
			el.focus();
			el.select();
		}
	}
	return check
}
function is_integer(valtocheck) {
	var check=false
	if (!isNaN(valtocheck)) {
		valtocheck=valtocheck*1
		if (parseInt(valtocheck)==valtocheck) check=true;
	}
	return check
}

/* neue checkfunktion */

function checkdatetime(elname,format,formname) {
	var check=true;
	var errmsg='';
	if (!format) format='dt';
	if (format!='d' && format!='t' && format!='dt') {
		alert('Aufruf von checkdatetime weder für Datum noch für Zeit');
	}else {
		if (!formname) formname='standform';
		var formobj=document.forms[formname];
		var errmsgdefault='';
		var el=formobj.elements[elname];
		var datetimestring=el.value;
		if (!datetimestring) {
			// bei leerem wert true zurückgeben
		}else {
			var datestring='';
			var timestring='';
			var buildDate=true;
			var buildTime=true;
			switch(format) {
				case 'd':
					//errmsgdefault='Bitte gültiges Datum (z.B. 23.3 oder 1.2.06 oder 1.2.2006 eigeben)';
					errmsgdefault=LCMsgInvalidDate;
					datestring=datetimestring;
					buildTime=false;
					break;
				case 't':
					//errmsgdefault='Bitte gültigen 24 Stunden-Zeitwert eingeben (z.B. 13:30 oder 9:05:45)';
					errmsgdefault=LCMsgInvalidTime;
					timestring=datetimestring;
					buildDate=false;
					break;
				default :
					//errmsgdefault='Bitte gültiges Datum oder gültiges Datum + Uhrzeit eingeben (z.B. 23.3 oder 23.3.06 oder 23.3 10:30 oder 23.3.2006 10:30)';
					errmsgdefault=LCMsgInvalidDateTime;
					if (datetimestring.length>0) {
						var pos=datetimestring.indexOf(':'); var c='';
						if (pos>-1) {
							timestring=datetimestring;
							if (pos>0) {
								var s=datetimestring.substr(0,pos);
								var pos1=s.lastIndexOf(' ');
								if (pos1>0) {
									datestring=s.substr(0,pos1);
									timestring=datetimestring.substr(pos1,datetimestring.length-pos1);
								}
							}
						}else {
							datestring=datetimestring;
						}
					}
					break;
			}
			//alert(datestring+' - '+timestring);
			// date check
			if (buildDate) {
				if (!datestring) {
					// heute setzen
				}else {
					var dateseps= new Array(".",","," ");
					var months31= ",1,3,5,7,8,10,12,";
					//var c='';
					var partIndex=0;
					var yearstring='';
					var monthstring='';
					var daystring='';
					for (var i=0;i<datestring.length;i++) {
						var c=datestring.substr(i,1);
						switch(c) {
							case '.':
							case ',':
								partIndex++;
								break;
							default:
								if (isNaN(c)) {
									errmsg=errmsgdefault+"\n"+LCMsgInvalidCharacter+' '+c; //'Ungültiges Zeichen '+c;
									check=false;
								}else {
									switch(partIndex) {
										case 0: daystring+=c; break;
										case 1: monthstring+=c; break;
										case 2: yearstring+=c; break;
									}
								}
						}
						if (!check || partIndex>2) break;
					}
					if (partIndex<1) check=false;
					if (check) {
						// auf number parsen ist besser als parseInt, weil so nicht interpretiertes zu 0 wird
						var day1=Number(daystring);
						var month1=Number(monthstring);
						var year1=Number(yearstring);
						if (year1==0) {
							var today=new Date();
							year1=today.getYear();
						}
						if (year1<999) {
							year1+=1900;
						}
						if (year1>2200 || year1<1800) {
							errmsg=errmsgdefault+"\n"+LCMsgInvalidYear+' '+year1;
							check=false;
						}else {
							if (month1<1 || month1>12) {
								errmsg=errmsgdefault+"\n"+LCMsgInvalidMonth+' '+month1;
								check=false;
							}else {
								var maxday=30;
								if (months31.indexOf(','+month1+',')>-1) {
									maxday=31;
								}else {
									if (month1==2) maxday=29;
								}
								if (day1<1 || day1>maxday) {
									errmsg=errmsgdefault+"\n"+LCMsgInvalidDay+' '+day1+'.'+month1+'.';
									check=false;
								}
							}
							if (check) {
								yearstring=year1;
								monthstring=(month1<10) ? '0'+month1 : month1;
								daystring=(day1<10) ? '0'+day1 : day1;
								datestring=daystring+'.'+monthstring+'.'+yearstring;
							}
						}
					}
				}
			}
			// Zeitcheck
			if (buildTime) {
				var timeDefault='00:00:00';
				if (timestring) {
					partIndex=0;
					var hourstring='';
					var minstring='';
					var secstring='';
					for (var i=0;i<timestring.length;i++) {
						var c=timestring.substr(i,1);
						switch(c) {
							case ':':
								partIndex++;
								break;
							default:
								if (isNaN(c)) {
									errmsg=errmsgdefault+"\n"+LCMsgInvalidCharacter+' '+c;
									check=false;
								}else {
									switch(partIndex) {
										case 0: hourstring+=c; break;
										case 1: minstring+=c; break;
										case 2: secstring+=c; break;
									}
								}
						}
						if (!check || partIndex>2) break;
					}
					if (check) {
						var hour1=Number(hourstring);
						var min1=Number(minstring);
						var sec1=Number(secstring);
						if (hour1<0 || hour1>24) {
							errmsg=errmsgdefault+"\n"+LCMsgInvalidHour+' '+hour1;
							check=false;
						}else {
							if (min1<0 || min1>60) {
								errmsg=errmsgdefault+"\n"+LCMsgInvalidMinute+' '+min1;
								check=false;
							}else {
								if (sec1<0 || sec1>60) {
									errmsg=errmsgdefault+"\n"+LCMsgInvalidSecond+' '+sec1;
									check=false;
								}
							}
						}
						if (check) {
							hourstring=(hour1<10) ? '0'+hour1 : hour1;
							minstring=(min1<10) ? '0'+min1 : min1;
							secstring=(sec1<10) ? '0'+sec1 : sec1;
							timestring=hourstring+':'+minstring+':'+secstring;
						}
					}
				}
				if (!timestring) timestring=timeDefault;
			}
			if (check) {
				switch(format) {
					case 'd': datetimestring=datestring; break;
					case 't': datetimestring=timestring; break;
					case 'dt': datetimestring=datestring+' '+timestring;
				}
				//alert(datetimestring);
			}else {
				if (!errmsg) errmsg=errmsgdefault;
			}
		}
		if (!check) {
			alert(errmsg);
			el.focus();
		}else{
			el.value=datetimestring;
		}
	}
	return check;
}
/* ende neu */

function checkdate(elname,formname){
	return checkdatetime(elname,'d',formname);
}

function checktime(elname,formname){
	return checkdatetime(elname,'t',formname);
}

function checkemail(elname){
	var check=false
	var formobj=document.standform
	if (formobj.elements[elname]) {
		var el=formobj.elements[elname]
		var val=el.value;
		//var filter=/^(\w+(?:[\.\-\w]+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		//var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		var filter=/^([A-Za-z0-9_|-]+[.]*[A-Za-z0-9_|-]+)+@[A-Za-z0-9|-]+([.][A-Za-z0-9|-]+)*[.][A-Za-z0-9]+$/ig;
		if (filter.test(val)){
			check=true
		}else{
			alert(LCMsgInvalidEmail);//"Bitte eine gültige eMail-Adresse eingeben!")
			el.focus()
		}
	}
	return check
}

function checkspecificuserinput(rownumber) {
	var formobj=document.standform
	var elnamesdate=new Array()
	var elnamestime=new Array()
	var elnamesnumeric=new Array()

	elname="datefields_to_compare"
	if (checkformelement(elname)) elnamesdate=formobj.elements[elname].value.split(",")
	elname="timefields_to_compare"
	if (checkformelement(elname)) elnamestime=formobj.elements[elname].value.split(",")
	elname="numericfields_to_compare"
	if (checkformelement(elname)) elnamesnumeric=formobj.elements[elname].value.split(",")

	if (compareinput(formobj,elnamesdate,rownumber,"d")==false) return false;
	if (compareinput(formobj,elnamestime,rownumber,"t")==false) return false;
	if (compareinput(formobj,elnamesnumeric,rownumber,"n")==false) return false;

	return true
}

function compareinput(formobj,basefieldnames,rownumber,format) {
//called from checkspecificuserinput
	if (basefieldnames.length==0 || basefieldnames.length==1) return true;
	var fieldnames=new Array()
	for (var i=0; i < basefieldnames.length; i++) {
		if (rownumber!="") {
			fieldnames[i]=basefieldnames[i]+"["+rownumber+"]"
		}else{
			fieldnames[i]=basefieldnames[i]
		}
		if (checkformelement(fieldnames[i])==false) return false;
	}
	var val1=""
	var val2=""
	for (var i=0; i < fieldnames.length; i=i+2) {
		val1=formobj.elements[fieldnames[i]].value
		val2=formobj.elements[fieldnames[i+1]].value
		errmsg=get_fieldalias(fieldnames[i+1])+" muss größer oder gleich "+get_fieldalias(fieldnames[i])+" sein!"
		switch(format) {
			case "d":
				if (compare_german_dates(val1,val2)==1){
					alert(errmsg)
					return false
				}else break;
			case "t":
				if (compare_german_times(val1,val2)==1){
					alert(errmsg)
					return false
				}else break;
			case "n":
				if (val1=="" || val2=="") break;
				val1=val1*1
				val2=val2*1
				//alert("comparing "+val1+" and "+val2);
				//alert("val1>val2? "+(val1>val2));
				if (val1>val2){
					alert(errmsg)
					return false
				}else break;
		}
	}
	return true
}



function checkcustomsave(rownumber){
alert("check specific2...")
	var formobj=document.standform
	var basefieldnames=array("AnmeldungVonDatum","AnmeldungVonZeit","AnmeldungBisDatum","AnmeldungBisZeit")
	var errmsg=""
	for (var i=0; i < basefieldnames.length; i++) {
		if (rownumber!="") {
			fieldnames[i]=basefieldnames[i]+"["+rownumber+"]"
		}else{
			fieldnames[i]=basefieldnames[i]
		}
		if (checkformelement(fieldnames[i])==false) return false;
	}
	date1=formobj.elements[fieldnames[0]].value
	date2=formobj.elements[fieldnames[2]].value
	time1=formobj.elements[fieldnames[1]].value
	time2=formobj.elements[fieldnames[3]].value
	if (date1=="") {
		formobj.elements[fieldnames[1]].value="";
	}
	if (date2=="") {
		formobj.elements[fieldnames[3]].value="";
	}
	if (date1=="" || date2=="") return true;

	flagd=compare_german_dates(date1,date2)
	if (flagd==1) {
		errmsg=get_fieldalias(fieldnames[2])+" muss größer oder gleich "+get_fieldalias(fieldnames[0])+" sein!"
	}else if (flagd==0) {
		flagt=compare_german_times(time1,time2)
		if (flagt==1){
			errmsg=get_fieldalias(fieldnames[2])+" plus "+get_fieldalias(fieldnames[3])+" müssen größer oder gleich "+get_fieldalias(fieldnames[0])+" plus "+get_fieldalias(fieldnames[1])+" sein!"
		}
	}
	if (errmsg!="") {
		alert(errmsg)
		return false
	}else return true;
}


function compare_german_dates(date1,date2){
//like 12.2.2002
//returns -1 if undefined, 0 if date1=date2, 1 if date1>date2, 2 if date1<date2
	returnval=-1
	if (date1!="" && date2!=""){
		var parts1=date1.split(".")
		var parts2=date2.split(".")
		if (parts1.length==3 && parts2.length==3){
			var val1=0
			var val2=0
			for (var i=3; i >-1; i=i-1) {
			    val1=parts1[i]*1
			    val2=parts2[i]*1
				if (val2>val1){
					returnval=2
					break;
				}else if (val2<val1){
					returnval=1
					break;
				}else{
					returnval=0
				}
			}
		}else{
			alert("Datumsvergleich nicht möglich wegen ungültigem Datum!")
		}
	}
	return returnval
}

function compare_german_times(time1,time2){
//like 13:05:00 or 13:05
//returns -1 if undefined, 0 if time1=time2, 1 if time1>time2, 2 if time1<time2
	returnval=-1
	if (time1!="" && time2!=""){
		var parts1=time1.split(":")
		var parts2=time2.split(":")
		if (parts1.length==2) parts1[2]="00"
		if (parts2.length==2) parts2[2]="00"
		if (parts1.length==3 && parts2.length==3){
			var val1=0
			var val2=0
			for (var i=3; i >-1; i=i-1) {
			    val1=parts1[i]*1
			    val2=parts2[i]*1
				if (val2>val1){
					returnval=2
					break;
				}else if (val2<val1){
					returnval=1
					break;
				}else{
					returnval=0
				}
			}
		}else{
			alert("Zeitvergleich nicht möglich wegen ungültigem Zeitwert!")
		}
	}
	return returnval
}

function checksave(dont_prompt){
	var formobj=document.standform
	//alert("Formdirty.value="+formobj.formdirty.value)
	if (formobj.formdirty.value || formobj.formdirty.value=="true" || formobj.formdirty.value=="1") {
	//browser problem an dieser stelle ??
	//if (formobj.formdirty.value=="true" || formobj.formdirty.value==true || formobj.formdirty.value==1) {
		if (checkuserinput(false)) save(window.location);
	}else {
		if (!dont_prompt) {
			dont_prompt=false
		}else dont_prompt=true;
		if (!dont_prompt) alert(LCNothingToSave+"!")
	}
}
function doaction2(actiontext,actionid,prompttext,dontsave){
	var formobj=document.standform
	if (!checkformelement("actionid")) return;
	formobj.actionid.value=actionid
	doaction(actiontext,prompttext,dontsave);
	//alert("setze id wieder auf leer") for cancellation if necessary
	formobj.actionid.value=""
}
function doaction(actiontext,prompttext,dontsave,actiontarget){
	var formobj=document.standform
	if (actiontext){
		//save data if required
		if (!checkformelement("actiontype")) return;
		if (!dontsave){
			if (formobj.formdirty){
				if (formobj.formdirty.value=="true") {
					if (confirm(LCNeedsSave)){
						formobj.dosave.value="1"
						submit_form(formobj);
						//formobj.submit()
						return;
					}
				}
			}
		}
		if (prompttext){
			if (prompttext!=""){
				var check=confirm(prompttext+"?")
				if (!check) return;
			}
		}
		formobj.actiontype.value=actiontext
/*		if (!dontsave){
		alert("Mit checkapplyfilter")
			checkapplyfilter();
		}else{
		alert("ohne checkapplyfilter")*/
		if (actiontarget){
			if (actiontarget=="body"){
				formobj.target=get_bodyframe();
			}else{
				formobj.target=actiontarget;
			}
		}
		submit_form(formobj);
		//formobj.submit();
		//}
	}
}

function checkdelete(id,qi,userprompt){
	var formobj=document.standform;
	var check=true;
	if (id!="") {
		if (userprompt) {
			question=userprompt;
		}else {
			question="Soll der Datensatz mit der ID '"+id+"' wirklich gelöscht werden?";
		}
		check=confirm(question);
		if (check) {
			if (formobj.formdirty) {
				if (formobj.formdirty.value) {
					alert('vor checkuserinput');
					check=checkuserinput(true);
					//25.5.2003: erst speichern, nie löschen wenn dirty
					return;
				}
			}
		}
		if (check) {
			formobj.deleteid.value=id;
			if (qi!="") {
				if (formobj.queryindex.value!=qi) {
					formobj.displayfields.value="";
				}
				formobj.queryindex.value=qi;
			}
			//if (formobj.doedit) formobj.doedit.value=""
			//formobj.method="get"
			//unset_counttotal()
			submit_form(formobj);
			//formobj.submit()
		}
	}
}

function confirmdelete(id,url){
	var formobj=document.standform
	if (url=="") url=window.location
	if (id!="") {
		if (confirm("Soll der Datensatz mit der ID '"+id+"' wirklich gelöscht werden?")) {
			oldmethod=formobj.method
			oldaction=formobj.action
			formobj.method="post"
			formobj.action=url
			formobj.deleteid.value=id
			unset_counttotal()
			submit_form(formobj);
			//formobj.submit()
			formobj.method=oldmethod
			formobj.action=oldaction
		}
	}
}
function checkopenurl(url){
	if (url=="") url=window.location;
	var formobj=document.standform
	var check=true
	var formisdirty=formobj.formdirty.value
	if (formisdirty) check=checkuserinput(true);
	//alert("chek="+check)
	if (check) {
		if (formisdirty) {
			save(window.location)
		}else{
			formobj.dosave.value=""
			formobj.doedit.value=""
			openurl(url)
		}
	}
}
function openurl(url){
	var formobj=document.standform
	oldmethod=formobj.method
	oldaction=formobj.action
	formobj.method="post"
	formobj.action=url
	unset_counttotal()
	submit_form(formobj);
	//formobj.submit()
	formobj.method=oldmethod
	formobj.action=oldaction
}
function openprinterfriend(url){
	var formobj=document.standform
	var oldmethod=formobj.method
	var oldaction=formobj.action
	var oldtarget=formobj.target
	formobj.method="post"
	formobj.action=url
	formobj.target="_new"
	formobj.doprint.value=true
	submit_form(formobj);
	//formobj.submit()
	formobj.method=oldmethod
	formobj.action=oldaction
	formobj.target=oldtarget
	formobj.doprint.value=""
}
function openclone(){
	var formobj=document.standform;
	var oldtarget=formobj.target;
	var oldmethod=formobj.method;
	var jetzt = new Date();
	var newtarget=jetzt.getTime();
	formobj.target=newtarget;
	formobj.method='post';
	var oldpopup
	if (formobj.popup) {
		oldpopup=formobj.popup.value;
		formobj.popup.value=1;
	}
	submit_form(formobj);
	//formobj.submit()
	formobj.target=oldtarget;
	formobj.method=oldmethod;
	if (formobj.popup) formobj.popup.value=oldpopup;
}
function checkopenprinterfriend(url) {
/*	alert("hallo")*/
	if (url=="") url=window.location;
	var formobj=document.standform
	var check=true
	var formisdirty=formobj.formdirty.value
	if (formisdirty) check=checkuserinput(true);
	//alert("chek="+check)
	if (check) {
		if (formisdirty) {
			save(window.location)
		}else{
			formobj.dosave.value=""
			formobj.doedit.value=""
			openprinterfriend(url)
		}
	}
}
function promptsend(standformtarget) {
	if (confirm("Bulkmail-Versand an alle noch nicht angemailten Empfänger starten?")){
		var formobj=document.standform
		if (standformtarget!="") {
			formobj.target=standformtarget
		}
		formobj.actiontype.value="send"
		submit_form(formobj);
		//formobj.submit()
	}
}

function setview(qi,mode,filtername,viewtarget) {
/* function for genericlist.php to change the display mode, added 24/1/2003*/
	//alert("Hallo");
	var formobj=document.standform
	if (!formobj) {
		alert('Form standform nicht gefunden');
		return;
	}
	if (!formobj.doedit) {
		alert("Formelement 'doedit' is missing!")
		return
	}
	if (qi!="") {
		formobj.rpp.value="";
	}
	if (filtername) {
		if (filtername!="") {
			if (!formobj.elements[filtername]) {
				//alert("Kann Filterelement '"+filtername+"' nicht löschen!")
				//filter may not be there too
			}else{
				formobj.elements[filtername].value=""
			}
		}
	}
	if (viewtarget) {
	//alert("target="+viewtarget)
		if (viewtarget!="") {
			if (viewtarget=="body") {
				formobj.subformmode.value="" //dont pass on the current subformmode
				viewtarget=get_bodyframe()
			}
			formobj.target=viewtarget
			//alert("target="+formobj.target)
		}
	}
	if (formobj.displayfields) formobj.displayfields.value='';
	if (formobj.availablefields) formobj.availablefields.value='';
	if (formobj.availablefieldaliases) formobj.availablefieldaliases.value='';
	//formobj.target="_new"
	switch(mode) {
 	case "addnewnofilter":
		deletefilter("standform");
 	case "addnew":
		formobj.addnew.value=1
 	case "edit":
		seteditview(qi);
		break;
 	case "details":
 	case "view":
		if (mode=="details") {
			formobj.viewmode.value="1"
		}else if (mode=="view") {
			formobj.viewmode.value="0"
		}
		setlistview(qi);
		break;
 	default:
		alert("function setview: Mode "+mode+" nicht behandelt!")
	}
}
function setlistview(qi) {
	var formobj=document.standform
	formobj.doedit.value=""
	if (qi!="") {
		formobj.queryindex.value=qi;
		formobj.displayfields.value="";
	}
	if (formobj.actiontype) formobj.actiontype.value="";
	checkapplyfilter();
}
function seteditview(qi) {
	var formobj=document.standform
	formobj.doedit.value=true
	if (qi!="") {
		formobj.queryindex.value=qi;
		formobj.displayfields.value="";
	}
	if (formobj.actiontype) formobj.actiontype.value="";
	checkapplyfilter();
}



function check_submit_form(formobj){
	var check=false;
	if (formobj) {
		var formisdirty=false;
		if (formobj.formdirty) {
			formisdirty=formobj.formdirty.value
			if (formisdirty) {
				check=checkuserinput(true);
			}else{
				check=true;
			}
			if (!check) {
				formobj.formdirty.value=""
			}
		}
		if (check && formisdirty) {
			//if (formisdirty) {
			save(window.location)
		}else{
			check=true;
			submit_form(formobj);
		}
	}
	return check;
}

function checkapplyfilter(){
	var formobj=document.standform
	var check=true
	if (!formobj.formdirty) {
		alert("Element formdirty nicht gefunden!")
		return;
	}
	var formisdirty=formobj.formdirty.value
	if (formisdirty) {
		check=checkuserinput(true);
	}else{
		check=true;
	}
	//alert("check="+check)
	if (!check) {
		formobj.formdirty.value=""
		return;
	}
	if (check && formisdirty) {
		//if (formisdirty) {
		save(window.location)
	}else{
		var oldmethod=formobj.method
		//##################!!!!!!!!!!!!!!!
		formobj.dosave.value=""
		if (formobj.doedit.value==1){
			formobj.method="post"
		}
		//alert(formobj.target)
		submit_form(formobj);
		//formobj.submit()
		formobj.method=oldmethod
	}
}
function acceptanmeldung(){
	var formobj=document.standform
	if (!formobj.isconfirmed) {
		alert("Erforderliches Feld 'isconfirmed' nicht gefunden; kann nicht bestätigen")
		return false;
	}else{
		formobj.isconfirmed.value=1;
		return true;
	}
}

function checkanmeldungsdaten(){
//if form=dirty, required fields are checked
//if user cancels prompt chkdirty fields are reset
		var formobj=document.standform
		var check=true
		var keepchanges=true
		if (!formobj.requiredfields) {
			alert("Erforderliches Feld 'requiredfields' nicht gefunden")
			return false;
		}
		var fieldstring=formobj.requiredfields.value
		var flds=new Array()
		if (fieldstring.length>0) flds=fieldstring.split(",")
		// loop thru formelements ...
		var elname=""
		for (var j=0; j < flds.length && check; j++) {
			/////////////
			var fieldname1=flds[j]
			//alert("Required fields: " +formobj.requiredfields.value);
			//////////////////////////////
			if (fieldname1.length>3) {
				if (!formobj.elements[fieldname1]){
					alert ("Erforderliches Feld "+fieldname1+" existiert nicht!!")
					return false;
				}
				//alert(fieldname1)
				var el=formobj.elements[fieldname1]
				var eltype=el.type
				if (eltype=="text" || eltype=="textarea" || eltype=="hidden" || eltype=="password"){
					if (el.value=="") {
						alert("Bitte "+fieldname1+" eingeben!")
						check=false
						break;
					}
				}else if (eltype=="select-one") {
					if (el.value=="") {
						alert("Bitte "+fieldname1+" auswählen!")
						check=false
						break;
					}
				}else{
					alert("Typ des Feldes '"+fieldname1+"'="+eltype+"' und nicht behandelt!!!");
					check=false
					break;
				}
			}
		}
		//////////////////////////////
		if (!check) {
			if ( eltype!="hidden") el.focus();
			return false;
		}else return true;
		//////////
}
function check_passwords2(elname1,elname2){
	var formobj=null;
	var formname='standform';
	if (document.forms[formname]) {
		formobj=document.forms[formname];
	}else {
		if (document.forms[0]) {
			formobj=document.forms[0];
		}
	}
	if (!formobj) {
		alert("Formular konnte nicht bestimmt werden (function check_passwords2)");
		return false;
	}else {
		var check=true
		if (!formobj.elements[elname1]) {
			alert("Kennwort Feld "+elname1+" existiert nicht (function check_passwords2)!")
			return false;
		}
		if (!formobj.elements[elname2]) {
			alert("Kennwort Feld "+elname2+" existiert nicht (function check_passwords2)!")
			return false;
		}
		var el1=formobj.elements[elname1]
		var el2=formobj.elements[elname2]
		var pw1=el1.value
		var pw2=el2.value
		if (pw1=="") {
			el1.focus()
			return false;
		}
		if (pw2=="") {
			el2.focus()
			return false;
		}
		if (pw2!=pw1) {
			alert(LCPasswordsDifferent+"!")
			el1.value=""
			el2.value=""
			el1.focus()
			return false;
		}
		return true;
	}
}
function check_passwords(elname1,elname2){
//compares passwords
//alert("checking")
	var formobj=document.standform
	var check=true
	if (!formobj.elements[elname1]) {
		alert("password field "+elname1+" not available!")
		return false;
	}
	if (!formobj.elements[elname2]) {
		alert("confirm password field "+elname2+" not available!")
		return false;
	}
	var el1=formobj.elements[elname1]
	var el2=formobj.elements[elname2]
	var pw1=el1.value
	var pw2=el2.value
	if (pw1=="") {
		alert(LCPleaseEnterPassword+"!")
		el1.focus()
		return false;
	}
	if (pw2=="") {
		alert(LCPleaseConfirmPassword+"!")
		el2.focus()
		return false;
	}
	if (pw2!=pw1) {
		alert(LCPasswordsDifferent+"!")
		el1.value=""
		el2.value=""
		el1.focus()
		return false;
	}
	return true
}/**/

var fieldaliases=new Array();
function get_fieldalias(fieldname){
// inits var fieldaliases if required
	if (fieldname.length>0) {
		var parts=fieldname.split("[")
		fieldname=parts[0]
	}
	var returnval=fieldname;
	if (fieldaliases.length==0) {
	//alert(formobj.availablefieldaliases.value)
		//alert("init");
		var formobj=document.standform
		if (!checkformelement("availablefieldaliases")) return returnval;
		if (!checkformelement("availablefields")) return returnval;
		var aliases=formobj.availablefieldaliases.value.split(",")
		var fields=formobj.availablefields.value.split(",")
		var fld=""
		var alias=""
		//alert("availablefieldaliases:"+formobj.availablefieldaliases.value+"\n \n availablefields"+formobj.availablefields.value)
		//return returnval;
		//alert("gesucht wird nach "+fieldname+"\nLänge"+aliases.length+"\nLänge fields"+fields.length)
		for (i=0;i<aliases.length;i++){
			alias=aliases[i]
			if (!fields[i]) {
				//alert("Ungleiche Anzahl von Feldnamen und Feldbezeichnungen!")
				//return returnval;
			}else{
				fld=fields[i]
				//alert("alias["+i+"]="+alias+"\nfield["+i+"]="+alias);
				//alert(fld);
				fieldaliases[fld]=alias;
				//alert(fieldaliases[fld]);
				//if (fld.length>0 && alias.length>0)  fieldaliases[fld].value=alias;
			}
		}
		//alert(formobj.availablefieldaliases.value)
		//alert(formobj.availablefields.value)
	}
	if (fieldaliases[fieldname]){
		returnval=fieldaliases[fieldname]
	}
	return returnval;
}

function checkuserinput(showprompt){
//if form=dirty, required fields are checked
//if user cancels prompt chkdirty fields are reset
	var formobj=document.standform
	var check=true
	var keepchanges=true
	if (formobj.formdirty.value=="true") {
		if (showprompt) keepchanges=confirm(LCNeedsSave);
		//alert("keepchanges="+ keepchanges)
		var fieldstring=formobj.requiredfields.value
		//if there are required fields
		var flds=new Array()
		if (fieldstring.length>0) flds=fieldstring.split(",")
		// loop thru formelements ...
		var elname=""
		for (var i=0; i < formobj.elements.length; i++) {
			var formelement=formobj.elements[i]
			elname=formelement.name
			//loop thru all the elements named chkdirty0, chkdirty1 etc
			if (elname.indexOf("chkdirty")>-1){
				//if record dirty check required fields..
				if (formelement.value) {
					if (!keepchanges) {
						//set record to not dirty
						formobj.elements[elname].value=""
						check=false
					}else{ //otherwise check required fields
						var rownumber=elname.substring(8,elname.length)
						//for all required fields
						for (var j=0; j < flds.length && check; j++) {
							/////////////
							if (flds[j].length>0) {
								var fieldname1=flds[j]+"["+rownumber+"]"
								if (!formobj.elements[fieldname1]){
									alert ("erforderliches Feld "+fieldname1+" existiert nicht!!")
									check=false
									break;
								}
								//alert(fieldname1)
								var el=formobj.elements[fieldname1]
								var eltype=el.type
								if (eltype=="text" || eltype=="textarea" || eltype=="hidden" || eltype=="password"){
									if (el.value=="" || el.value=="0") {
										alert(LCbitteEingabe1+" "+get_fieldalias(fieldname1)+" "+LCbitteEingabe2)
										check=false
										break;
									}
								}else if (eltype=="select-one") {
									if (el.value=="") {
										alert("Bitte "+get_fieldalias(fieldname1)+" auswählen!")
										check=false
										break;
									}
								}else{
									alert("Typ des Feldes '"+fieldname1+"'="+eltype+"' und nicht behandelt!!!");
									check=false
									break;
								}
								//////////////////////////////
								if (!check) {
									if ( eltype!="hidden") el.focus();
									break;
								}
								//////////
							}
						}//end loop over all required fields
						if (check) check=checkspecificuserinput(rownumber)
					}//end check fields in case of savechanges
				} //end if record dirty (chkdirty=true)
			}//end chkdirty-field
			if (!check) break;
		}//end loop thru formelements
	}//end formdirty
	if (!keepchanges) formobj.formdirty.value="";
	return check;
}
function setdirty(chkname,check_by_box){
//check_by_box is true if the user directly clicks the box; thus he may toggle save or not
//when calling thru onchange check_by_box is  false
	var formobj=document.standform
	if (formobj.elements[chkname]) {
		var curval=formobj.elements[chkname].checked
		//alert(curval)
		if (check_by_box) {
			if (curval) {
				formobj.elements[chkname].value=true
			}else{
				formobj.elements[chkname].value=false
			}
		}else{
			formobj.elements[chkname].checked=true;
			formobj.elements[chkname].value=true
		}
		formobj.formdirty.value=true //always, let PHP decide whether due to elements[chkname]
	}else alert("das Element '"+chkname+"' existiert nicht!");
}
function saveasnewrecord(url,idname){
	var formobj=document.standform
	if (confirm(LCSaveAsNewRecord+"?")) {
		formobj.elements[idname].value=""
		formobj.dosave.value="1"
		var oldmethod=formobj.method
		formobj.method="post"
		formobj.action=url
		unset_counttotal()
		submit_form(formobj);
		//formobj.submit()
		formobj.action=oldmethod
	}
}

function edit(url){
	if (url=="") url=window.location;
	var formobj=document.standform
	oldmethod=formobj.method
	oldaction=formobj.action
	formobj.method="post"
	formobj.action=url
	if (formobj.edit) formobj.edit.value=true
	if (formobj.doedit) formobj.doedit.value=true
	unset_counttotal()
	submit_form(formobj);
	//formobj.submit()
	formobj.method=oldmethod
	formobj.action=oldaction
}
function addnewrecord(url){
	if (url=="") url=window.location;
	var formobj=document.standform
	var oldmethod=formobj.method
	var oldaction=formobj.action
	if (formobj.addnew){ //if exists
		formobj.addnew.value=true
		formobj.method="post"
		formobj.action=url
		//alert(formobj.addnew.value)
		//unset_counttotal()
		submit_form(formobj);
		//formobj.submit()
		formobj.method=oldmethod
		formobj.action=oldaction
	}else alert("Feld addnew existiert nicht!");
}
function setqueryindex(qi,hidefilter){
	//alert("hallo")
	var formobj=document.standform
	if (hidefilter!="") {
		formobj.hide_filter.value=hidefilter
	}
	formobj.queryindex.value=qi
	unset_counttotal()
	submit_form(formobj);
	//formobj.submit()
}
function unset_counttotal(){
	//alert("hallo")
	var formobj=document.standform
	if (formobj.counttotal) formobj.counttotal.value="";
}


function nextrecords(sign){
	formobj=document.standform
	formobj.offset.value=eval(formobj.offset.value)+sign*eval(formobj.rpp.value)
	submit_form(formobj);
	//formobj.submit()
}
function movelast() {
	formobj=document.standform
	formobj.offset.value=formobj.counttotal.value-formobj.rpp.value
	submit_form(formobj);
	//formobj.submit()
}
function movefirst() {
	formobj=document.standform
	formobj.offset.value=0
	submit_form(formobj);
	//formobj.submit()
}

function deletefilter(formname){
	var formobj=document.forms(formname)
	var freezestring=new String
	if (formobj.freezefilters){
		freezestring=formobj.freezefilters.value
	}
	freezestring=","+freezestring+","
	//alert("nr1")
	//		alert(freezestring)
	for (var i=0; i < formobj.elements.length; i++) {
		var formelement=formobj.elements[i]
		if (is_filtername(formelement.name)) {
			//alert(formelement.name)
			if (freezestring.indexOf(","+formelement.name+",")==-1) formelement.value=""
			//unset_counttotal()
		}
	}
}
function is_filtername(text) {
	//according to filter naming conventions of odb2
	returnval=false
	if (text.indexOf("_")>0){
		if (text.indexOf("pmatch")>=0 ||
			text.indexOf("lmatch")>=0 ||
			text.indexOf("rmatch")>=0 ||
			text.indexOf("xmatch")>=0 ||
			text.indexOf("num")>=0 ||
			text.indexOf("gerd")>=0 ||
			text.indexOf("gert")>=0) {
			returnval=true
		}
	}
	return returnval
}
function sortlist(fieldname){
	formobj=document.standform
	if (fieldname!="") {
		currentfields=formobj.orderbyfields.value
		if (currentfields.indexOf(fieldname)>-1 && currentfields.indexOf(fieldname+" DESC")==-1) {
			formobj.orderbyfields.value=fieldname+" DESC"
		}else{
			formobj.orderbyfields.value=fieldname
		}
		submit_form(formobj);
		//formobj.submit()
	}
}
function reloadbody(){
	if (!parent.parent.body) {
		top.location.reload()
	}else parent.parent.body.location.reload()
}
function tell_target(){
	var msg="window: "+window.name
	if (parent.frames.length>0){
		msg+="\nparent: "+parent.window.name
		for(var i=0; i < parent.frames.length; i++){
			msg+="\nframe["+i+"].name="+parent.frames[i].name
		}
	}
	if (top.frames.length>0){
		for(i=0; i < top.frames.length; i++){
			msg+="\ntop.frame["+i+"].name="+top.frames[i].name
		}
	}
	if (document.standform) msg+="\nstandformtarget="+document.standform.target
	alert(msg);
	alert("bodyframe="+get_bodyframe());
}
function rename_window(){
	check_linktargets();
}
function find_frame(framename){
	if (framename.length>0){
		if (parent.frames.length>0){
			for(var i=0; i < parent.frames.length; i++){
				msg+="\nframe["+i+"].name="+parent.frames[i].name
			}
		}
	}
}
function check_linktargets(){
//überschreibt die linktargets wenn sie body heissen,
//aber im aktuellen fenster kein frame namens "body" ist
	var somelink
	var someform
	//alert("bis daher ok")
	var linktarget=get_bodyframe();
	//alert(linktarget)
	if (linktarget!="body"){
		for (var i=0;i<document.links.length;i++){
			somelink=document.links[i]
			if (somelink.target=="body") somelink.target=linktarget;
		}
		for (i=0;i<document.forms.length;i++) {
			someform=document.forms[i]
			if (someform.target=="body") someform.target="body";
		}
	}
}

function check_windowname_alt(){
	//überschreibt den fensternamen mit "body"
	//if (document.standform) {
	var countframes=parent.frames.length
	alert("anzahl frames:"+countframes );
	var curwinname=window.name
	var parwinname=false
	if (window.parent) {
		parwinname=parent.name
	}
	if (countframes>0 && parwinname){
		if (curwinname!="body" && parwinname!="body" && parwinname!="mainframe" && parwinname!="subframe") {
			alert("setze parent.name=body");
			parent.name="body"
			parwinname=parent.name
			alert("parwinname="+parwinname);
		}
	}else parwinname="";
	if (parwinname!="body" && curwinname!="body" && curwinname!="mainframe" && curwinname!="subframe") {
		alert("setze window.name=body");
		window.name="body"
	}
	alert("window.name="+window.name);
	//}
}
function get_bodyframe(){
	var msg=""
	var framefound=false
	var bodyframe="body"
	if (window.name==bodyframe) {
		return bodyframe;
	}else{
		if (top.frames.length>0){
			for (i=0;i<top.frames.length;i++){
				msg+="\ntop "+i+": "+top.frames[i].name
				if (top.frames[i].name==bodyframe){
					framefound=true; break;
				}
			}
			if (!framefound){
				for (var i=0;i<parent.frames.length;i++){
					msg+="\nparent "+i+": "+parent.frames[i].name
					if (parent.frames[i].name==bodyframe){
						framefound=true; break;
					}
				}
			}
			if (!framefound){
				if (top.name!=""){
					return top.name
				}else{
					return "_top";
				}
			}else{
				return bodyframe
			}
		}else{
			return window.name;
		}
	}
}

////

//line colors from phpmyadmin 2.2.6
/**
 * Sets/unsets the pointer and marker in browse mode
 *
 * @param   object   the table row
 * @param   string   the action calling this script (over, out or click)
 * @param   string   the default background color
 * @param   string   the color to use for mouseover
 * @param   string   the color to use for marking a row
 *
 * @return  boolean  whether pointer is set or not
 */

function setPointer(theRow, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
    var theCells = null;
    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((thePointerColor == '' && theMarkColor == '')
        || typeof(theRow.style) == 'undefined') {
        return false;
    }



    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect    = null;
    var currentColor = null;
    var newColor     = null;
    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined'
        && typeof(theCells[0].getAttribute) != 'undefined') {
        currentColor = theCells[0].getAttribute('bgcolor');
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        currentColor = theCells[0].style.backgroundColor;
        domDetect    = false;
    } // end 3



    // 4. Defines the new color
    // 4.1 Current color is the default one
    if (currentColor) {
	    if (currentColor == ''
	        || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
	        if (theAction == 'over' && thePointerColor != '') {
	            newColor = thePointerColor;
	        }
	        else if (theAction == 'click' && theMarkColor != '') {
	            newColor = theMarkColor;
	        }
	    }

	    // 4.1.2 Current color is the pointer one
	    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()) {
	        if (theAction == 'out') {
	            newColor = theDefaultColor;
	        }
	        else if (theAction == 'click' && theMarkColor != '') {
	            newColor = theMarkColor;
	        }
	    }

	    // 4.1.3 Current color is the marker one
	    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
	        if (theAction == 'click') {
	            newColor = (thePointerColor != '')
	                     ? thePointerColor
	                     : theDefaultColor;
	        }
	    } // end 4
    }

    // 5. Sets the new color...
    if (newColor) {
        var c = null;
       // 5.1 ... with DOM compatible browsers except Opera
        if (domDetect) {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].setAttribute('bgcolor', newColor, 0);
            } // end for
        }
        // 5.2 ... with other browsers
        else {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].style.backgroundColor = newColor;
            }
        }
    } // end 5
    return true;

} // end of the 'setPointer()' function
//</SCRIPT>
