////////////////////////////////////////////////////////////////
//
// wScript.js - Weblic® Kontakt-Formular
//
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
//
// Anzupassende Variablen:
//
// Aktiviert den Debugmodus zur Fehlersuche (0 = aus, 1 = ein).
var cacheMode = 0;
//
// Aktiviert den Debugmodus zur Fehlersuche (0 = aus, 1 = ein).
var debugMode = 0;
//
//erscheint wenn ein Pflichtfeld nicht ausgefüllt wurde
var messageObligation = " ist ein Pflichtfeld!\n"; 
////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////
//
// Beschreibung: Sendet das Formular
// 
// Parameter: form = Formular, das gesendet werden soll.
//
////////////////////////////////////////////////////////////////

function submitForm(form, cacheMode){

  var cookieStr = "";

  if(checkForm(form) == false){
    //return false; // bei Aufruf ueber <button type="submit" ... und onSubmit-Event im Form-Tag
    return;          // bei Aufruf ueber <a href="javascript:submitForm(document.frmContact);" ... oder onclick="submitForm();" ...
  }
  else{
    if(cacheMode == 1){   
      cookieStr += "; path=/";  
      document.cookie = cookieStr; 
    }
    form.submit();
  }
}

//////////////////////////////////////////////////////////////////////////////
//
// Beschreibung: Prüft, ob die Plichtfelder im Formular ausgefüllt worden sind.
// 
// Parameter: form = Formular, das geprüft werden soll.
//
//////////////////////////////////////////////////////////////////////////////

function checkForm(form){

 var messageEmail      = " enthält keine gültige Email Adresse!\n"; //erscheint wenn ein Pflichtfeld nicht ausgefüllt wurde

  var isObligation = /\|\w*o\w*$/i;  //Pflichtfeld, wenn Feldname am Schluss |o  enthaelt   (z.B.: "Strasse|o")
  var isEmail      = /\|\w*e\w*$/i;  //Emailfeld wenn Feldname am Schluss |e enthaelt       (z.B.: "eMail|e")
  var isCache      = /\|\w*c\w*$/i;  //Wird fuer weitere Formulare gespeichert am Schluss |c enthaelt       (z.B.: "eMail|c")
          //Pflicht- und Emailfeld, wenn am Schluss |oe oder |eo (z.B.: "eMail|eo") 

  var checkEmail   = /.*\@.*\.\w+/i;
  var formElement;
  var formElementNameOrig;
  var elementStr;
  var alertStr = "";
  var radioButtonName = "";
 
  for(var i = 0; i <= form.elements.length - 1; i++){
    var formElement = form.elements[i];
    //if(formElement){ // 23.05.2008: Wie folgt geändert, damit auch fieldset berücksichtigt werden kann (ph)
    if(formElement && formElement.name){
      formElementNameOrig = formElement.name.replace(/\|\w+/, '');
      if(formElement.title == ""){
        elementStr = formElementNameOrig;
      }
      else{
        elementStr = formElement.title;
      }
      if(formElement.type == "text" || formElement.type == "textarea" || formElement.type == "select-one" || formElement.type == "select" ||  formElement.type == "password"){
         
        if(isObligation.test(formElement.name) == true){  
          if(formElement.value == ""){
            alertStr += elementStr + messageObligation;                     
          }
        } 
        //if(isEmail.test(formElement.name) == true){  // 13.08.2007: Wird nun auf nicht leeren Inhalt geprüft, damit das Feld auch als Nicht-Pflichtfeld definiert werden kann (ph)
        if(isEmail.test(formElement.name) == true && formElement.value != ''){
          if (checkEmail.test(formElement.value) == false){
            alertStr += elementStr + messageEmail;                     
          }
        } 
        if(cacheMode == "1"){    
          if(isCache.test(formElement.name) == true){ 
            if(formElement.value != ""){
              cookieStr += "wFc_" + formElementNameOrig + "=" + formElement.value + ":";
            }
          }    
        }     
      }
	    else if(formElement.type == "checkbox"){
        formElementNameOrig = formElement.name.replace(/\|\w+/, ''); 	  
        if(isObligation.test(formElement.name) == true){  
          if(formElement.checked == false){
            alertStr += elementStr + messageObligation;                     
          }
        } 
	    }
      else if(formElement.type == "radio"){
        if(radioButtonName != formElement.name){
          radioButtonName = formElement.name;
          var radioButtons = document.getElementsByName(formElement.name);
          formElementNameOrig = formElement.name.replace(/\|\w+/, ''); 	  
          if(isObligation.test(formElement.name) == true){  
            var isChecked = false;
            for(j = 0; j < radioButtons.length; j++){
              if(radioButtons[j].checked == true){
                isChecked = true
              }
            }
            if(isChecked == false){
              alertStr += elementStr + messageObligation;                     
            }
          } 
        }
	    }
    }
  }

  if(alertStr != ""){
    alert(alertStr);  
    return false;
  }
 /* hier folgt die Erweiterung: verstecktes Feld wird auf value geprüft, wenn Feld leer, wird die Formularaktion gesetzt */
  
  if(document.frmBooker.mail.value != ""){
     alert("Spam");
     return false;
  } else {
           document.frmBooker.action = "/cgi-bin/wMailer.cgi";
           document.frmBooker.submit();
    }

 /* Erweiterung Ende */ 

  return true;
  
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Initialisiert das Formular
// 
// Parameter: form = Formular, das initialisiert werden soll.
//
////////////////////////////////////////////////////////////////

function initForm(form){

  var isCache      = /\|\w*c\w*$/i;  //Wird fuer weitere Formulare gespeichert am Schluss |c enthaelt       (z.B.: "eMail|c")

  var formElement;
  var formElementNameOrig;

  var cookieStr    = document.cookie;
  var elementValue = "";

  if(form){
    for(var i = 0; i <= form.elements.length - 1; i++){
      var formElement = form.elements[i];
      if(formElement){
        if(formElement.name){      
          if(isCache.test(formElement.name) == true){ 
            if(formElement.value == ""){
              formElementNameOrig = formElement.name.replace(/\|\w+/, ''); 
              var getElementValue = eval("/wFc_" + formElementNameOrig + "\=([^\:]+)\:/");
              if(getElementValue.test(cookieStr) == true){
                elementValue = RegExp.$1;
                formElement.value = elementValue;
              }  
            }
          }
        }
      }
    }
  }
  else{
    //alert("Formular wurde nicht gefunden!\n Wurde es schon geladen?");
  }
}

