/* *****************************************************************
   Projektidentifikation: LAV_NRW                                
   BearbeitungsStand    : 12.01.2012                               
   Bearbeiter           : S.Gawehns                                
   Produktidentifikation: LAV_NRW_pruefeFormular_2_0_0.js           
   Version              : V 2.0.0                                  
  *****************************************************************
   Änderungen                                                      
   Stand           : 	                                           
   Bearbeiter      : 	                                              
   Kurzbeschreibung:                           
                                                                
  *****************************************************************
                                                                 
   Javascript-Funktionen zur Validierung von HTML-Formularen, die Funktionen sind durch die Alerts selbst erklärend
   
 	function nurErlaubteZeichen(erlaubt, aString)
 	function pruefeNumFeld(einFeld, bezeichnung,laenge) 
 	function buchstabenOderZahl(aString ,erlaubt)    
 	function trim(aString) 
 	function etwasEingegeben(einFeld, bezeichnung, pflichtfeld)  
 	function pruefePositiveGanzzahl(einFeld, bezeichnung, pflichtfeld) 
 	function pruefePositiveGanzzahlVonBis(einFeld, bezeichnung, pflichtfeld, von, bis)  
 	function pruefeTextfeld(einFeld, bezeichnung, pflichtfeld, minLaenge) 
 	function pruefeTextfeldZeichen(einFeld, bezeichnung, pflichtfeld, erlaubt)
 	function pruefeDatum(tag, monat, jahr)
 	function pruefeURL(einFeld, bezeichnung, pflichtfeld) 
 	function pruefeTelefonnr(einFeld, bezeichnung, pflichtfeld)
 	function pruefeListe(eineListe, bezeichnung)
 	function pruefeEMailAdresse(einFeld, bezeichnung, pflichtfeld)
 	function EMail(s)
 	 	
 	

  ***************************************************************** */

function nurErlaubteZeichen(erlaubt, aString) {
    for (i=0; i<aString.length; i++) {
        ch=aString.charAt(i);
        for(j=0; j<erlaubt.length; j++)
            if(ch==erlaubt.charAt(j))
                break;
        if(j==erlaubt.length)
            return(false);
    }
    return(true);
}

function pruefeNumFeld(einFeld, bezeichnung,laenge){
	regtext="\\d{"+laenge+"}";
	var reg=new RegExp(regtext);
	if(reg.test(einFeld.value)){
		return(true);
	}else{
		alert("Im Feld \""+bezeichnung+"\" sind nur "+laenge+"-stellige Zahlen erlaubt.");
		einFeld.focus();
		return false;
	}
}

function buchstabenOderZahl(aString ,erlaubt) {   
    erlaubt=erlaubt+"äöüßÄÜÖ ";
    for (i=0; i<aString.length; i++) {
        ch=aString.charAt(i);
        chCode= aString.charCodeAt(i)
        for(j=0; j<erlaubt.length; j++){
            if(ch==erlaubt.charAt(j))
                break;	    
        }
        if(j==erlaubt.length && !((chCode>47 && chCode<58) || (chCode>64 && chCode<91) || (chCode>96 && chCode<123)))
            return(false);
    }
    return(true);
}

function trim(aString){
    while(aString.substring(aString.length-1,aString.length)==" ")
        aString=aString.substring(0,aString.length-1);
    while(aString.substring(0,1)==" ")
        aString=aString.substring(1,aString.length);
    return(aString);
}

function etwasEingegeben(einFeld, bezeichnung, pflichtfeld) {
    einFeld.value=trim(einFeld.value);
    if(pflichtfeld && einFeld.value.length==0) {
        alert("Bitte geben Sie im Feld \""+bezeichnung+"\" etwas ein.");
        einFeld.focus();
        return(false);
    }
    return(true);
}

function pruefePositiveGanzzahl(einFeld, bezeichnung, pflichtfeld) {
    if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
    if(!nurErlaubteZeichen("0123456789",einFeld.value)) {
        alert("Bitte geben Sie in das Feld \""+bezeichnung+"\" nur eine positive Ganzzahl ein!");
        einFeld.focus();
        return(false)
    }
    return(true);
}

function pruefePositiveGanzzahlVonBis(einFeld, bezeichnung, pflichtfeld, von, bis) {
    einFeld.value=trim(einFeld.value);
    if(pflichtfeld || einFeld.value.length!=0) {
        if(!pruefePositiveGanzzahl(einFeld, bezeichnung, pflichtfeld)) return(false);
        wert=parseInt(einFeld.value,10);
        if(wert<von||wert>bis) {
            alert("Bitte geben Sie in das Feld \""+bezeichnung+"\" nur Werte von "+von+" bis "+bis+" ein!");
            einFeld.focus();
            return(false)
        }
    }
    return(true);
}

// Ein Textfeld wird auf Pflichtfeld und MindestLänge geprüft
function pruefeTextfeld(einFeld, bezeichnung, pflichtfeld, minLaenge) {
    if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
    if((pflichtfeld>0 || einFeld.value.length>0) && einFeld.value.length<minLaenge) {
        alert("Bitte geben Sie im Feld \""+bezeichnung+"\" mindestens "+minLaenge+" Zeichen ein.");
        einFeld.focus();
        return(false);
    }
    return(true);
}

// Ein Textfeld wird auf Buchstaben, Zahlen und übergebene Sonderzeichen geprüft
function pruefeTextfeldZeichen(einFeld, bezeichnung, pflichtfeld, erlaubt) {
    if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
    if(!buchstabenOderZahl(einFeld.value,erlaubt)) {
        var text="Bitte geben Sie in das Feld \""+bezeichnung+"\" nur ";
        for (i=0; i<erlaubt.length; i++)
        	text=text+erlaubt.charAt(i)+", ";
        text=text+"Buchstaben und Zahlen ein!";
        alert(text);
       	einFeld.focus();
      	return(false);
    }
    return(true);
}

function pruefeDatum(tag, monat, jahr) {
	var ok=true;
	reg =/([0-9]{4})/;
  	if(!(reg.test(jahr.value)))
  		ok=false;
	reg =/([0-9]{1,2})/;
  	if(!(reg.test(tag.value))||!(reg.test(monat.value)))
  		ok=false;  		
// das durch tag, monat, jahr angegebene Datum pruefen
//(samt Schaltjahr-Regelung)
    if(ok){
	    monatbuf=monat.value*1;
	    tagbuf=tag.value*1;
	    if(tagbuf<1 || monatbuf<1 || monatbuf>12){
	      ok=false;
	    }else{
		    max=31;
	    	if(monatbuf==2){
	    		if(jahr.value%4==0 && (jahr.value%100!=0 || jahr.value%400==0))
		            max=29;
	            else
	                max=28;
	        }
	        if(monatbuf==4||monatbuf==6||monatbuf==9||monatbuf==11)
	    		max=30; 
			ok=(tagbuf<=max);
	    }
		if(!ok) {
			alert("Das eingegebene Datum ist ungültig.");
		    return(false);
	    }else{
	    	var heute = new Date();
			var datum = new Date(jahr.value, monatbuf-1, tagbuf);
			if (datum < heute){
				alert("Der Wunschtermin liegt in der Vergangenheit.");
				return(false);
			}else{
				if(datum.getDay()==0 || datum.getDay()==6){
					alert("Der Wunschtermin liegt am Wochenende.");
					return(false);
				}
			}
	    }
	}else{
		alert("Das eingegebene Datum ist ungültig.");
		return false;
	}
    return(true);
}

function pruefeURL(einFeld, bezeichnung, pflichtfeld) {
    einFeld.value=trim(einFeld.value);
    if(pflichtfeld || einFeld.value.length!=0) {
        if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
        s=einFeld.value;
        chars=":=?&"+"\\";
        for(i=0;i<chars.length;i++) {
            pos=s.indexOf(chars.charAt(i));
            while(pos>=0) {
                s=s.substring(0,pos)+s.substring(pos+1,s.length);
                pos=s.indexOf(chars.charAt(i));
            };
        };
        if(s!=escape(unescape(s))) {
            alert("Die in das Feld \""+bezeichnung+"\" eingegebene URL enthält ungültige Leer- oder Sonderzeichen.");
            einFeld.focus();
            return(false);
        }
    }
    return(true);
}

function pruefeTelefonnr(einFeld, bezeichnung, pflichtfeld) {
    einFeld.value=trim(einFeld.value);
    if(pflichtfeld || einFeld.value.length!=0) {
        if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);
        if(!nurErlaubteZeichen("0123456789-/+() ",einFeld.value)) {
            alert("In dem Feld \""+bezeichnung+"\" sind nur Zahlen und die Zeichen - / + ( ) erlaubt!");
            einFeld.focus();
            return(false)
        }
        if(einFeld.value.length<3) {
            alert("Bitte geben Sie im Feld \""+bezeichnung+"\" mindestens 3 Zeichen ein.");
            einFeld.focus();
            return(false);
        }
    }
    return(true);
}

function pruefeListe(eineListe, bezeichnung) {
    if(eineListe.selectedIndex==0) {
        alert("Bitte wählen Sie in der Liste \""+bezeichnung+"\" etwas aus.");
        eineListe.focus();
        return(false);
    }
    return(true);
}

function pruefeEMailAdresse(einFeld, bezeichnung, pflichtfeld){
	var ok=true;
    einFeld.value=trim(einFeld.value);
    if(einFeld.value!="leer"){
        if(pflichtfeld || einFeld.value.length!=0) {
            if(!etwasEingegeben(einFeld,bezeichnung, pflichtfeld)) return(false);    
//Es wird eine Mail-Prüfung aus SelfHtml verwendet
            ok=EMail(einFeld.value);
            if(!ok) {
                alert("Bitte geben Sie in das Feld \""+bezeichnung+"\" eine gültige E-Mail-Adresse ein!");
                einFeld.focus();
            }
        }
    }
    return ok;
}

// Email-Prüfung aus SelfHTML http://www.infos24.de/javascripte/handbuch/7_js_regular_expression.htm#10
function EMail(s){
	reg =/^\w[\w|\.|\-]+@\w[\w|\.|\-]+\.[a-zA-Z]{2,4}$/;
	res = (reg.test(s));
	return(res);
} 

