//<SCRIPT language="javascript">
///info und gebrauchtmarkt
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()
	}
}	
////

//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 == ''
        || 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







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 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) window.opener.standform.submit()
				window.focus();
			}
		}
	}
}
function selectrecord(fieldvalstring){
	var formnames=new Array()
	//alle möglichen formnames hier definieren
	formnames[0]="standform"
	formnames[1]="quicksearch"
	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 ("Ö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
				for (i=flds.length-1;i>-1;i--){  //start at the end of the fields
					var parts=flds[i].split("_") //if it contains _ it will be the link, like num_IDAddress 
					if (parts.length>1) {
						defaultfiltername=flds[i]; 
					}else {
						if (flds[i].substr(0,subpartlength)==linknamesubpart) {
							selectlinkname=flds[i]
						}
					}
				}
				//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
							callform.elements[flds[i]].value=fldvals[i];
							//alert("setze" +flds[i]+" auf "+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==selectlinkname) {
							var selectlink=window.opener.document.links[i]
							var selecthref=selectlink.href
							defaultfiltername+="="
							var parts=selecthref.split(defaultfiltername)
							//alert(defaultfiltername)
							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 formobj.submit();
		} else 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"
				/*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 url="../sourcemain/fieldselection.php?availablefields="+formobj.availablefields.value
			+ "&availablefieldaliases="+formobj.availablefieldaliases.value
			+ "&displayfields="+formobj.displayfields.value
	window.open(url,"Feldauswahl","scrollbars=1,WIDTH=680,HEIGHT=370,LEFT=250,TOP=200",false)
}

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()
	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){
	var check=false
	var formobj=document.standform
	if (checkformelement(elname)) {
		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) {
			alert(get_fieldalias(elname)+" muss ganze Zahl sein!")
			el.focus()
		}
	}
	return check
}

function checkfloat(elname){
	var check=false
	var formobj=document.standform
	if (checkformelement(elname)) {
		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) {
			alert(get_fieldalias(elname)+" muss Dezimalzahl sein!")
			el.focus()
		}
	}
	return check
}
function is_integer(valtocheck) {
	var check=false
	if (!isNaN(valtocheck)) {
		valtocheck=valtocheck*1
		if (parseInt(valtocheck)==valtocheck) check=true;
	}
	return check
}	
function checkdate(elname,formname){
	var dateseps= new Array(".",","," ")
	var monate31= "1,3,5,7,8,10,12"
	var check=false
	if (!formname) formname='standform';
	var formobj=document.forms[formname];
	if (checkformelement(elname,formname)){
		var errmsg=""
		var errmsgdefault="Bitte gültiges Datum (z.B. 23.3 oder 1.2.03 eigeben)"
		var el=formobj.elements[elname]
		var datestring=formobj.elements[elname].value
		if (datestring.length==0) return true; //empty string ok
		var parts=new Array()
		for (var isep=0; isep < dateseps.length; isep++) {
			parts=datestring.split(dateseps[isep])
			if (parts.length>1) break;
		}
		//nur ein teil..
		var countparts=parts.length
		if (countparts<2) {
			errmsg=errmsgdefault
		}else{
			for (var i=0; i < countparts; i++) {
				if (is_integer(parts[i])==false) {
					errmsg=errmsgdefault+"\n"+"Ungültiges Zeichen gefunden"
				}
			}
		}
		if (errmsg=="") {
			Tag=parts[0]*1 //numerischen typ erzwingen
			if (Tag<32 && Tag>0) {
				Monat=parts[1]*1
				if (Monat<13 && Monat>0) {
					if (monate31.indexOf(Monat)==-1){
						if (Monat==2) {
							if (Tag>29) {
								errmsg=errmsgdefault+"\n"+"Tag für Februar zu gross (Schaltzjahr wird zur Zeit nicht berücksichtigt"
							}
						}else{
							if (Tag==31) errmsg=errmsgdefault+"\n"+"Für diesen Monat nur 30 Tage zulässig";
						}
					}
					//if (errmsg=="") alert ("OK");
				}else errmsg=errmsgdefault+"\n"+"Ungültiger Monat";
			}else errmsg=errmsgdefault+"\n"+"Ungültiger Tag";
		}
		//Jahr checken	
		if (errmsg=="") {
			if (countparts>2) {
				Jahr=parts[2]*1
				if (Jahr<100){
					if (Jahr<20) {
						Jahr=2000+Jahr
					}else{
						Jahr=1900+Jahr
					}
				}else{
					if (Jahr<1920) errmsg=errmsgdefault+"\n"+"Ungültiges Jahr (< 1920)";
				}
			}else{
				var jetzt = new Date();
				Jahr = jetzt.getFullYear();
			}
		}
		if (errmsg!="") {
			alert(errmsg);
			el.focus();
		}else{
			el.value=Tag+"."+Monat+"."+Jahr
			check=true
		}
	}
	return check
}
	
function checktime(elname){
	var timeseps= new Array(":"," ",",")
	var check=false
	var formobj=document.standform
	if (checkformelement(elname)){
		var errmsg=""
		var errmsgdefault="Bitte gültigen Zeitwert eingeben (z.B. 13:30 oder 9:05:45)"
		var el=formobj.elements[elname]
		var timestring=formobj.elements[elname].value
		if (timestring.length==0) return true; //empty string ok
		var parts=new Array()
		for (var isep=0; isep < timeseps.length; isep++) {
			parts=timestring.split(timeseps[isep])
			if (parts.length>1) break;
		}
		//nur ein teil..
		var countparts=parts.length
		if (countparts<1) {
			errmsg=errmsgdefault
		}else{
			for (var i=0; i < countparts; i++) {
				if (!is_integer(parts[i])) {
					if (i==0) {
						errmsg=errmsgdefault+"\n"+"Ungültige Stunde";
						break;
					}else if (i==1) {
						parts[1]="00";
						parts[2]="00";
						break;
					}else if (i==2){
						parts[2]="00";
						break;
					}
				}
			}
			var partval=0
			if (errmsg=="") {
				if (countparts==1) parts[1]="00"; //minuten auf 0 setzen
				if (countparts<3) parts[2]="00"; //sekunden auf 0 setzen
				countparts=3 //wert fixieren
				for (var i=0; i < countparts; i++) {
					partval=eval(parts[i]);
					if (i==0) {
						if (partval>23 || partval<0) {
							errmsg=errmsgdefault+"\n"+"Ungültige Stunde (muss zwischen 0 und 23 liegen)";
							break;
						}	
					}else{
						if (partval>59 || partval<0) {
							errmsg=errmsgdefault+"\n"+"Ungültige Minute oder Sekunde (muss zwischen 0 und 59 liegen)";
							break;
						}
					}
					if (partval<10) {
						parts[i]="0"+partval //führende 0 dazubauen
					}
				}	
				if (errmsg=="") {	
					var Std=parts[0];
					var Min=parts[1];
					var Sek=parts[2];
				}
			}
		}
		if (errmsg!="") {
			alert(errmsg);
			el.focus();
		}else{
			el.value=Std+":"+Min+":"+Sek
			check=true
		}
	}
	return check
}
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("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"
						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;
			}
		}
		formobj.submit();
		//}
	}
}
function checkdelete(id,qi){

	var formobj=document.standform
	var check=true
	if (id!="") {
		var check=confirm("Soll der Datensatz mit der ID '"+id+"' wirklich gelöscht werden?")
		if (check) {
			if (formobj.formdirty.value) {
				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()
			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()
			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()
	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
	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 jetzt = new Date();
	var newtarget=jetzt.getTime();
	formobj.target=newtarget
	var oldpopup
	if (formobj.popup) {
		oldpopup=formobj.popup.value
		formobj.popup.value=1
	}
	formobj.submit()
	formobj.target=oldtarget
	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"
		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.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)
		}
	}
	//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 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)
		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_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()
		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()
	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()
		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()
	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)
	formobj.submit()
}
function movelast() {
	formobj=document.standform
	formobj.offset.value=formobj.counttotal.value-formobj.rpp.value
	formobj.submit()
}
function movefirst() {
	formobj=document.standform
	formobj.offset.value=0
	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
		}
		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;
		}
	}
}
//</SCRIPT>