
function __check_required(errortext)	//Feld muß angegeben werden für text/textarea/select
{
	var feld=__frm_check_field;
	var err='';
	if(feld.value.length==0) err=errortext+"\n";
	return err;
}
function __check_annahme(errortext)	//Feld muß angekreuzt werden
{
	var feld=__frm_check_field;
	var err='';
	if(feld.checked == false) err=errortext+"\n";
	return err;
}
function __check_required_ausschluss(errortext,errortext2,inhalt)	//Feld muß angegeben werden, bestzimmter value nicht erlaubt
{
	var feld=__frm_check_field;
	var ausschluss=inhalt;
	var text=errortext;
	var err='';
	if(feld.value.length==0)
	{
		err=errortext+"\n";
	}
	else
	{
		if(feld.value==inhalt)
		{
			err=errortext2+' können wir Ihnen leider kein Angebot erstellen!'+"\n";
		}
	}
	return err;
}
function __check_numeric(errortext) 	//Feldinhalt muß numrisch sein für text/textarea/select
{
	var feld=__frm_check_field;
	var err='';
	if(!__nurzahl(feld.value)) err=errortext+"\n";
	return err;
}
function __check_radio(text)			//Radio-Button muß gewählt werden
{
	var field=__frm_check_field;
	var x;
	var ret=text;
	for(x=0;x<field.length;x++)
	{if(field[x].checked==true) ret="";}
	if(ret!=""){field[x-1].focus();ret=ret+"\n";}
	return ret;
}

function __check_email()				//Feld muß gültige Mailadresse enthalten
{
	var field=__frm_check_field;
	var atpos,pointpos,len,ret;
	atpos= field.value.indexOf('@',0);
	if(atpos>0) 
	{	pointpos= field.value.indexOf('.',atpos);
	}
	len= field.value.length;
	if(((atpos>0) && (pointpos>= atpos+3) && (pointpos < len-2)))
	{	ret="";}
	else
	{	ret="Bitte geben Sie eine gültige Mailadresse an.";
		field.focus();
	}
	return ret;
}

function __check_textfeld(errormessage,typ,allow_null,min_len,max_len)
{
	var f=__frm_check_field;
	var err = '';

	if(f.value.length!=0)	//Prüfungen nur durchführen wenn etwas eingegeben wurde
	{
		switch(typ)
		{
			case 'numeric':
							if(!__nurzahl(f.value)) {err+='Es sind nur Ziffern erlaubt.';}
							break;
			case 'nonnumeric':
							if(!__nurbuchstaben(f.value)) {err+='Es sind nur Buchstaben erlaubt.';}
							break;
		}
		if(err=='' && (max_len!=false || min_len!=false))	//minimale und maximale Feldlänge prüfen
		{
			if(max_len!=false && f.value.length> max_len)max_err=true;else max_err=false;
			if(min_len!=false && f.value.length< min_len)min_err=true;else min_err=false;
			if(min_err || max_err)	//minimal oder maximallänge wurde überschritten
			{
				if(min_len !=false && max_len !=false)	//Beide Grenzen angegeben
				{
					if(min_len==max_len)				//nur eine länge erlaubt
						err+='Die Eingabe muß '+min_len+ ' Zeichen lang sein.';
					else								//erlaubter bereich
						err+='Die Eingabe muß zwischen '+min_len+ ' und '+max_len+' Zeichen lang sein.';
				}
				else
				{
					if(min_len!=false)					//nur minimal-grenze
						err+='Die Eingabe muß mindestens '+min_len+ ' Zeichen lang sein.';
					if(max_len!=false)					//nur maximal-grenze
						err+='Die Eingabe darf maximal '+max_len+ ' Zeichen lang sein.';
				}
			}
		}
	}
	else	//wenn nicht eigegeben wurde prüfen ob dies erlaubt
	{
		if(allow_null==false) {err+='Dieses Feld muß angegeben werden.';}
	}
	if(err!='')	//Fehler sind aufgetreten, also die Textmeldung integrieren
	{
		err=errormessage+' ('+err+")\n";
		f.focus();
	}
	return err;
}

function __check_numfeld(errormessage,allow_null,min_val,max_val)
{
	var f=__frm_check_field;
	var err = '';

	if(f.value.length!=0)	//Prüfungen nur durchführen wenn etwas eingegeben wurde
	{
		if(!__nurzahl(f.value)) {err+='Es sind nur Ziffern erlaubt.';}
		if(err=='' && (max_val!=false || min_val!=false))	//minimale und maximale Feldlänge prüfen
		{
			if(max_val!=false && f.value > max_val)max_err=true;else max_err=false;
			if(min_val!=false && f.value < min_val)min_err=true;else min_err=false;
			if(min_err || max_err)	//minimal oder maximallänge wurde überschritten
			{
				if(min_val !=false && max_val !=false)	//Beide Grenzen angegeben
				{
					if(min_val==max_val)				//nur ein wert erlaubt
						err+='Die Eingabe muß '+min_val+ ' sein.';
					else								//erlaubter bereich
						err+='Die Eingabe muß zwischen '+min_val+ ' und '+max_val+' liegen.';
				}
				else
				{
					if(min_val!=false)					//nur minimal-grenze
						err+='Die Eingabe muß mindestens '+min_val+ ' sein.';
					if(max_val!=false)					//nur maximal-grenze
						err+='Die Eingabe darf maximal '+max_val+ ' sein.';
				}
			}
		}
	}
	else	//wenn nicht eigegeben wurde prüfen ob dies erlaubt
	{
		if(allow_null==false) {err+='Dieses Feld muß angegeben werden.';}
	}
	if(err!='')	//Fehler sind aufgetreten, also die Textmeldung integrieren
	{
		err=errormessage+' ('+err+")\n";
		f.focus();
	}
	return err;
}
//numerische Felder mit Nachkommastellen
function __check_numfeld_nachkomma(errormessage,allow_null,min_val,max_val)
{
	var f=__frm_check_field;
	var err = '';

	if(f.value.length!=0)	//Prüfungen nur durchführen wenn etwas eingegeben wurde
	{
		if(!__nurzahl_nachkomma(f.value)) {err+='Es sind nur Ziffern und Kommata erlaubt.';}
		if(err=='' && (max_val!=false || min_val!=false))	//minimale und maximale Feldlänge prüfen
		{
			if(max_val!=false && parseFloat(f.value.replace(/,/,'.')) > max_val)max_err=true;else max_err=false;
			if(min_val!=false && parseFloat(f.value.replace(/,/,'.')) < min_val)min_err=true;else min_err=false;
			if(min_err || max_err)	//minimal oder maximallänge wurde überschritten
			{
				if(min_val !=false && max_val !=false)	//Beide Grenzen angegeben
				{
					if(min_val==max_val)				//nur ein wert erlaubt
						err+='Die Eingabe muß '+min_val+ ' sein.';
					else								//erlaubter bereich
						err+='Die Eingabe muß zwischen '+min_val+ ' und '+max_val+' liegen.';
				}
				else
				{
					if(min_val!=false)					//nur minimal-grenze
						err+='Die Eingabe muß mindestens '+min_val+ ' sein.';
					if(max_val!=false)					//nur maximal-grenze
						err+='Die Eingabe darf maximal '+max_val+ ' sein.';
				}
			}
		}
	}
	else	//wenn nicht eigegeben wurde prüfen ob dies erlaubt
	{
		if(allow_null==false) {err+='Dieses Feld muß angegeben werden.';}
	}
	if(err!='')	//Fehler sind aufgetreten, also die Textmeldung integrieren
	{
		err=errormessage+' ('+err+")\n";
		f.focus();
	}
	return err;
}
// Funktion zum checken der maximalen Eingabewerte
function __check_hoechstwerte(anzeigename,numeric,max_value,werteinheit)
{
	var feld=__frm_check_field;
	var errvar = "";
	
	if (numeric!= false) //Feldinhalt muß numerisch sein, oder leer
		{ if( (feld.value.length!=0) &&  !__nurzahl(feld.value) ) {errvar=errvar + anzeigename + " muß numerisch sein!\n";}
		}
	if(max_value != false) //Es existiert ein Maximalwert für das Feld
		{if(feld.value > max_value) {errvar=errvar + anzeigename + " darf maximal " + max_value  + werteinheit + " betragen!\n";}
		}
		
	if(errvar != "") feld.focus();
	return errvar;
}

function __check_neuwert_pkw(anzeigename,allow_null,numeric,max_value,werteinheit)
{
	var feld=__frm_check_field;
	var errvar = "";
	if(feld.value.length==0)
	{
		if(allow_null==false) {errvar=anzeigename+ ' (Dieses Feld muß angegeben werden.)';}
	}
	if (numeric!= false) //Feldinhalt muß numerisch sein, oder leer
		{ if( (feld.value.length!=0) &&  !__nurzahl(feld.value) ) {errvar=errvar + anzeigename + " muß numerisch sein!\n";}
		}
	if(max_value != false) //Es existiert ein Maximalwert für das Feld

		{if(feld.value > max_value) 
		{
		if (document.frm.angaben_kasko.value != '-')
		{
			errvar='Aufgrund Ihrer Angaben möchten wir Sie bitten, sich telefonisch mit uns in Verbindung zu setzen!';}
		}
		}
		
	if(errvar != "") feld.focus();
	return errvar;
}

function __check_datepart(errormessage,part,allownull)
{
	var err='';
	var feld=__frm_check_field;
	switch(part)
	{
		case 'tag':
						partlen=2;minval=1;maxval=31;
						break;
		case 'monat':
						partlen=2;minval=1;maxval=12;
						break;
		case 'jahr':
						partlen=4;minval=1850;maxval=2050;
						break;
		default:		alert('Fehler in __check_datepart() '+feld.name);
						break;
	}
	err=__check_textfeld(errormessage,'numeric',allownull,partlen,partlen);
	if(err=='')err=__check_numfeld(errormessage,allownull,minval,maxval);
	return err;
}
function __check_date(errormessage,allownull,minj,minm,mind,maxj,maxm,maxd)
{
	var err='';
	var feld=__frm_check_field;
	var fm=document.forms[__frm_check_field.form.name];
	//Herausfinden mit welchem Feld wir beginnen, tag oder monat
	if(feld.name.substr(feld.name.length-4,4)=='_tag')	//Wir beginnen mit dem tag
	{
		var basename=feld.name.substr(0,feld.name.length-4);
		var d=feld;	//Tag-Feld
		var dval=d.value;
		var m=fm.elements[basename+'_monat'];	//Monatsfeld
	}
	else	//Beginn mit dem Monat
	{
		var basename=feld.name.substr(0,feld.name.length-6);
		var d=false;	//Kein Tagesdatum
		var dval='01';		//Kein Tagesfeld vorhanden somit immer 1
		var m=feld;		//Monatsfeld
	}
	var j=fm.elements[basename+'_jahr'];	//Jahresfeld

	if(allownull!=true || (d && d.value.length!=0) || m.value.length!=0 || j.value.length!=0)	//Es muß geprüft werden
	{
		var d1= new Date();
		var heute = new Date(__get_year(d1),d1.getMonth(),d1.getDate(),0,0,0);
		var checkdate= new Date(parseInt(j.value,10),parseInt(m.value,10)-1,parseInt(dval,10),0,0,0);
		
		if((!d ||dval.length==0) && m.value.length==0 && j.value.length==0) {err+='Dieses Datum muß angegeben werden';if(d)d.focus();else m.focus();}
		if(err=='' && d && !__nurzahl(dval)) {err+='Es sind nur Ziffern erlaubt';d.focus();}
		if(err=='' && !__nurzahl(m.value)) {err+='Es sind nur Ziffern erlaubt';m.focus();}
		if(err=='' && !__nurzahl(j.value)) {err+='Es sind nur Ziffern erlaubt';j.focus();}
			
		if(err=='' && d && dval.length!=2) {err+='Falsches Eingabeformat: TT';d.focus();}
		if(err=='' && m.value.length!=2) {err+='Falsches Eingabeformat: MM';m.focus();}
		if(err=='' && j.value.length!=4) {err+='Falsches Eingabeformat: JJJJ';j.focus();}
		if (err=='')
		{
			if( (parseInt(__get_year(checkdate),10)!=parseInt(j.value,10))||(parseInt(checkdate.getMonth()+1,10)!=parseInt(m.value,10))||(parseInt(checkdate.getDate(),10)!=parseInt(dval,10)) ) 
				err+='ungültiges Datum';
		}

	}
	
	if(err!='')
		err=errormessage+' ('+err+")\n";
	return err;
}


//  ######## Hilfsfunktionen ###################
function __nurzahl(str)
{
	var x,ret;
	var zeichen="1234567890";
	ret=true;
	for(x=0;x< str.length;x++)
	{	if( zeichen.indexOf(str.charAt(x))==-1 )
		ret=false;
	}
	return ret;
}
function __nurzahl_nachkomma(str)
{
	var x,ret;
	var zeichen="1234567890,";
	ret=true;
	for(x=0;x< str.length;x++)
	{	if( zeichen.indexOf(str.charAt(x))==-1 )
		ret=false;
	}
	return ret;
}

function __nurbuchstaben(str)
{
	var x,ret;
	var zeichen="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßäöüÄÖÜ-,/_. ";
	ret=true;
	for(x=0;x< str.length;x++)
	{	if( zeichen.indexOf(str.charAt(x))==-1 )
		ret=false;
	}
	return ret;
}
function __get_year(datum)
{
	var jahr= datum.getYear();
	if(jahr < 999) jahr+=1900;		//Netscape liefert Jahr 2-stellig
	return jahr;
}
function onoff_radio_block()
{
	if (arguments[0]!='')
	{
    	if (document.getElementsByName(arguments[0])[0].checked == true)
    	{
    			if (navigator.appName == "Microsoft Internet Explorer")
    				document.getElementById(arguments[1]).style.display = "block";
    
    			else
    				document.getElementById(arguments[1]).style.display = "table-row";
    	}
    	else
    			document.getElementById(arguments[1]).style.display = "none";
    
    	if (arguments.length > 2)
    	{
            for (i=2; i<arguments.length;i++)
        	   document.getElementById(arguments[i]).value ='';
    	}
    }
}

