/*#############################################################*/
/*# 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; 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);

  Work  = FeldObject.value;
  nwork = Number(Work);    

  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 (Zahl  == 1 ||
      EMail == 1) { Work = Work.replace(/ +/,""); FeldObject.value = Work; }


  if (Muss		== 1) { if(Work.length == 0)		{ Message (Feldname, "unbedingt etwas");		Fehler = 1; } }
  if (Zahl		== 1) { Work = Komma2Dot(Work); FeldObject.value = Work;
				if(!nwork && Work != 0)		{ Message (Feldname, "nur Zahlen");			Fehler = 1; } }
  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.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 (PLZ		== 1 &&
      Fehler		== 0) { 
    switch (nwork) {
	case 46519 : Ort = "Alpen";		Vorwahl = "02802"; break;
	case 47551 : Ort = "Bedburg-Hau";	Vorwahl = "02821"; break;
	case 46446 : Ort = "Emmerich";		Vorwahl = "02822"; break;
	case 47608 : Ort = "Geldern";		Vorwahl = "02831"; break;
	case 47574 : Ort = "Goch";		Vorwahl = "02823"; break;
	case 46499 : Ort = "Hamminkeln";	Vorwahl = "02852"; break;
	case 46569 : Ort = "Hünxe";		Vorwahl = "02858"; break;
	case 47661 : Ort = "Issum";		Vorwahl = "02835"; break;
	case 47546 : Ort = "Kalkar";		Vorwahl = "02824"; break;
	case 47475 : Ort = "Kamp-Lintfort";	Vorwahl = "02842"; break;
	case 47647 : Ort = "Kerken";		Vorwahl = "02833"; break;
	case 47533 : Ort = "Kleve";		Vorwahl = "02821"; break;
	case 47559 : Ort = "Kranenburg";	Vorwahl = "02826"; break;
	case 47506 : Ort = "Neukirchen-Vluyn";	Vorwahl = "02845"; break;
	case 46459 : Ort = "Rees";		Vorwahl = "02851"; break;
	case 47495 : Ort = "Rheinberg";		Vorwahl = "02843"; break;
	case 47509 : Ort = "Rheurdt";		Vorwahl = "02845"; break;
	case 46514 : Ort = "Schermbeck";	Vorwahl = "02853"; break;
	case 47665 : Ort = "Sonsbeck";		Vorwahl = "02838"; break;
	case 47638 : Ort = "Straelen";		Vorwahl = "02834"; break;
	case 47589 : Ort = "Uedem";		Vorwahl = "02825"; break;
	case 46562 : Ort = "Voerde";		Vorwahl = "02855"; break;
	case 47669 : Ort = "Wachtendonk";	Vorwahl = "02836"; break;
	case 47652 : Ort = "Weeze";		Vorwahl = "02837"; break;
	case 46509 : Ort = "Xanten";		Vorwahl = "02801"; break;
    }
    if (nwork >= 46535 &&
	nwork <= 46539 ) { Ort = "Dinslaken";	Vorwahl = "02064"; }
    if (nwork >= 47051 &&
	nwork <= 47279 ) { Ort = "Duisburg";	Vorwahl = "0203"; }
    if (nwork >= 47623 &&
	nwork <= 47627 ) { Ort = "Kevelaer";	Vorwahl = "02832"; }
    if (nwork >= 47441 &&
	nwork <= 47447 ) { Ort = "Moers";	Vorwahl = "02841"; }
    if (nwork >= 48143 &&
	nwork <= 48167 ) { Ort = "Münster";	Vorwahl = "0251"; }
    if (nwork >= 46483 &&
	nwork <= 46487 ) { Ort = "Wesel";	Vorwahl = "0281"; }

    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);
}
