/*#############################################################*/
/*# Written by YourWeb (Web-Technologies & Solutions)         #*/
/*# You're welcome at our site http://www.your-web-service.de #*/
/*#############################################################*/

var FormCheckAkiv = 0;				/* Andere Ausgabe in Funktion Message		*/
var Field2Check;				/* Field to check next				*/

function Message (Feldname, Text) {
 if(FormCheckAkiv == 1) {
    alert("Bitte geben Sie im Feld\n" + Feldname + "\n" + Text + " ein!");
  }
  else {
    alert("Bitte geben Sie hier\n" + Text + " ein!");
  }
}

function Komma2Dot (X) {
  var Pos = X.indexOf(",");
  return((Pos >= 0) ? X.substring(0,Pos) + "." + X.substring(Pos+1, X.length) : X);
}

function SetValueIfEmpty (FeldObject, i, SearchString, SetValue) {
  if(FeldObject.form.elements[i].name.indexOf(SearchString)!= -1) {
    if (FeldObject.form.elements[i].value == "") FeldObject.form.elements[i].value = SetValue;
  }
}

function BerechneFormular () {}

var CheckStatus = 0;				/* Muss zwischen 2 Aufrufen von Check erhalten bleiben,	*/
						/* wichtig bei 2 aufeinanderfolgenden Muss-Feldern	*/
function Check (FeldObject, StartField) {
  var i = 0; Work = 0, nwork = 0; Fehler = 0; ValueStart = ""; Feldname = ""; Ort = ""; Vorwahl = "";
  var Muss = 0, Zahl = 0, GanzZahl = 0, PositiveZahl = 0; PositiveZahlOhne0 = 0; EMail = 0; TelefonNr = 0; PLZ = 0; CheckSelect = 0;

  if (CheckStatus == 1)	{ return; }

  if (! FeldObject)	{ return; }		/* exist at first call */

  Work = FeldObject.name.lastIndexOf('_');	/* Format aus z.B. Name_pg herausholen */
  if(Work == -1) { return; }
  Feldname = FeldObject.name.substring(0, Work);
  Format   = FeldObject.name.substring(Work+1, FeldObject.name.length);

  ValueStart	= FeldObject.value;
  Work		= ValueStart;

  if (Format.indexOf("m") >= 0) { Muss  = 1; }
  if (Format.indexOf("z") >= 0) { Zahl  = 1; }
  if (Format.indexOf("g") >= 0) { Zahl  = 1; GanzZahl = 1; }
  if (Format.indexOf("p") >= 0) { Zahl  = 1; PositiveZahl = 1; }
  if (Format.indexOf("N") >= 0) { Zahl  = 1; PositiveZahl = 1; PositiveZahlOhne0 = 1; }
  if (Format.indexOf("S") >= 0) { CheckSelect = 1; }
  if (Format.indexOf("E") >= 0) { EMail = 1; }
  if (Format.indexOf("T") >= 0) { TelefonNr = 1; }
  if (Format.indexOf("P") >= 0) { Zahl  = 1; GanzZahl = 1; PositiveZahl = 1; PLZ = 1; }

  if (EMail == 1) { Work = Work.replace(/ +/,""); }

  if (Muss		== 1) { if(Work.length == 0)		{ Message (Feldname, "unbedingt etwas");		Fehler = 1; } }
  if (Zahl		== 1) { Work = Komma2Dot(Work); 
				Work = String(Work.match(/^[\-\+]?\d*[,\.]?\d*/));
				nwork = Number(Work); }
  if (GanzZahl		== 1) { if(Work.indexOf(".") >= 0)	{ Message (Feldname, "nur ganze Zahlen");		Fehler = 1; } }
  if (PositiveZahl	== 1) { if(nwork < 0)			{ Message (Feldname, "nur positive Zahlen");		Fehler = 1; } }
  if (PositiveZahlOhne0	== 1) { if(nwork == 0)			{ Message (Feldname, "keine Null");			Fehler = 1; } }
  if (CheckSelect	== 1) { if (FeldObject.options[FeldObject.selectedIndex].value.indexOf("<") == 0)
								{ Message (Feldname, "eine Auswahl");			Fehler = 1; } }
  if (TelefonNr		== 1) { if ((Work.length != 0) &&    /* leeres Feld akzeptieren, Muss-Feld wird oben bereits abgefangen */
				    (!Work.match(/^\d+-\d+$/)))	{ Message (Feldname, "eine Telefon-Nummer\nim Format 0123-9876");
															Fehler = 1; } }
  if (PLZ		== 1) { if (Work.length < 5 &&
				    Work.length > 0)		{ Message (Feldname, "eine 5-stellige Postleitzahl");	Fehler = 1; } }
  if (EMail		== 1) { if (Work) { Work = String(Work.match(/^[\w\.-]+@[\w\.-]+/)); }
				if ((Work.length != 0) &&    /* leeres Feld akzeptieren, Muss-Feld wird oben bereits abgefangen */
				    (! Work.match(/^[^\.].*[^\.]@[^\.].+\.[^\.]+$/)) ||
				    (Work.match(/\.{2}/)) ||
				    (Work.match(/^.+ .+$/)))	{ Message (Feldname, "nur EMail-Adressen");	Fehler = 1; } }

  if (Work != ValueStart && Work != 'null') { FeldObject.value = Work; }

  if (PLZ		== 1 &&
      Fehler		== 0) { 
    switch (nwork) {
	case 47608 : Ort = "Geldern";		Vorwahl = "02831"; break;
	case 47533 : Ort = "Kleve";		Vorwahl = "02821"; break;
	case 47669 : Ort = "Wachtendonk";	Vorwahl = "02836"; break;
    }
    if (nwork >= 47051 &&
	nwork <= 47279 ) { Ort = "Duisburg";	Vorwahl = "0203"; }
    if (nwork >= 48143 &&
	nwork <= 48167 ) { Ort = "Münster";	Vorwahl = "0251"; }

    for(i=(StartField ? StartField : 0); i<FeldObject.form.length; i++) {
      SetValueIfEmpty(FeldObject, i, 'Ort', Ort);
      SetValueIfEmpty(FeldObject, i, 'TelefonVorwahl', Vorwahl); SetValueIfEmpty(FeldObject, i, 'TelefonKomplett', Vorwahl);
      SetValueIfEmpty(FeldObject, i, 'FaxVorwahl', Vorwahl);	 SetValueIfEmpty(FeldObject, i, 'FaxKomplett', Vorwahl);
    }
  }

  if (Fehler == 1) { CheckStatus = 1; FeldObject.focus(); window.setTimeout("CheckStatus = 0;", 10); return (false); }
  else		   {
    if(FormCheckAkiv == 0) {				/* Nicht bei Endprüfung Berechnen (Speed)	*/
      BerechneFormular(FeldObject); return (true);	/* Diese Prozedur muß oberhalb angegeben sein!	*/
    }
  }
}

function FormCheck (FormObject, StartField) {
  BerechneFormular();					/* Berechne Formular einmal vor FormularCheck!	*/

  FormCheckAkiv = 1;
  for(i=(StartField ? StartField : 0); i<FormObject.length; i++) {
    if (FormObject.elements[i].type == "hidden") continue;	/* don't check hidden fields */
    if(Check(FormObject.elements[i], StartField) == false) { FormCheckAkiv = 0; return(false); }
  }
  FormCheckAkiv = 0;
  return(true);
}
