////////////////////////////////////////////////////////////////
//
// wScript.js 2.4.3
// erstellt durch Scholl Communications AG, 77694 Kehl, www.scholl.de
// erstellt mit Weblication® Content Management Server, www.weblication.de
//
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
//
// Anzupassende Variablen:
//
// Rahmen, in den die Seiten zu laden sind, falls kein Ziel angegeben wurde ("top" fuer Nonframe).
var frameContent = "content";
//
// Falls Cookies zur Weitergabe von NavId verwendet werden sollen (0 = aus, 1 = ein).
var useCookiesNavId = 0;
//
// Falls Cookies zur Weitergabe von PageId verwendet werden sollen (0 = aus, 1 = ein).
var useCookiesPageId = 0;
//
// Aktiviert den Debugmodus zur Fehlersuche (0 = aus, 1 = ein).
var cacheMode = 0;
//
// Aktiviert den Debugmodus zur Fehlersuche (0 = aus, 1 = ein).
var debugMode = 0;
//
// Optionen des standard Popupfensters.
var optionsPopup = "scrollbars=yes,resizable=yes,menubar=yes,location=no,width=600,height=480";
//
// Optionen des ersten Popupfensters.
var optionsPopup1 = "scrollbars=yes,resizable=yes,menubar=no,location=no,width=240,height=360";
//
// Optionen des zweiten Popupfensters.
var optionsPopup2 = "scrollbars=yes,resizable=yes,menubar=no,location=no,width=160,height=160";
//
//erscheint wenn ein Pflichtfeld nicht ausgefüllt wurde
var messageObligation = " ist ein Pflichtfeld!\n"; 
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
//
// Beschreibung: Browsererkennung
//
////////////////////////////////////////////////////////////////

var ns  = (document.layers) ? 1 : 0;
var ie  = (document.all) ? 1 : 0;
var dom = (document.getElementById) ? 1 : 0;
var mac = (navigator.platform.indexOf("Mac") != -1) ? 1 : 0;


////////////////////////////////////////////////////////////////
//
// Beschreibung: Sendet das Formular
// 
// Parameter: form = Formular, das gesendet werden soll.
//
////////////////////////////////////////////////////////////////

function submitForm(form, cacheMode, useAjax){
 
 if(useAjax == null) useAjax = false;

 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 = "";

 var cookieStr = "";

 var messageSemicolon = " enthält ein Semikolon!\n";
 
  for(var i = 0; i <= form.elements.length - 1; i++){
    var formElement = form.elements[i];
    if(formElement){
      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(formElement.value.match(/;/)){
          alertStr += elementStr + messageSemicolon;
        }
        if(isObligation.test(formElement.name) == true){
          if(formElement.value == ""){
            alertStr += elementStr + messageObligation;                     
          }
        } 
        if(isEmail.test(formElement.name) == true){  
          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;
  }
  else{
    if(cacheMode == 1){   
      cookieStr += "; path=/";  
      document.cookie = cookieStr; 
    }   
  }
  
  // Formular abschicken the ajax or conventional way
  if(useAjax == true && form.newsletter.checked) makeRequest(form);
  else form.submit();
}

////////////////////////////////////////////////////////////////
//
// 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?");
  }
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Bereitet AjaxHttpRequest vor und verarbeitet die Ergebnisse.
// 
// Parameter: form = das Formular, das verarbeitet werden soll.
//
////////////////////////////////////////////////////////////////

function makeRequest(form) {    
    
    // Ajax loader Grafik anzeigen
    document.getElementById('ajaxloader').style.display = 'block';
    
    // Bastel den url-String
    // Hol Dir die mailer-cgi-url aus dem Formular
    if(form.contactmailurl)
      contactUrl = form.contactmailurl.value;
    else return false;
    
    // Bastel den url-String
    // Hol Dir die newsletter-cgi-url aus dem Formular  
    if(form.newslettermailurl)
      newsletterUrl = form.newslettermailurl.value;
    else return false;
    
    // Hol die Key/Values aus den Formularelemente und erzeuge einen URL-String
    var params = "?";
    for(var i = 0; i <= form.elements.length - 1; i++){
      params += form.elements[i].name + "=" + form.elements[i].value;
            
      // Hänge ein "&" dran, wenn es nicht das letzte Array element ist      
      if(i <= form.elements.length -2) params += "&";
    }
    
    // Die URL-Parameter an die URL anhängen
    contactUrl += params;
    newsletterUrl += params;
    
    // Connection für Kontaktformularversand organisieren.
    http_request1 = getXMLHttpRequest();    
    
    // Connection öffnen & Request absetzen.
    http_request1.open('GET', contactUrl, true);
    if(document && document.charset){
      http_request1.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=' + document.charset );
    }
    else{
      // Nachfolgend kann das im Formular verwendete Charset angegeben werden, falls dies nicht ausgelesen werden kann (z.B. charset=ISO-8859-1):
      http_request1.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1'  );
    }
    http_request1.setRequestHeader('W-Ajax-Engine', 'Weblication/4.x' );
    http_request1.send(null);
    
    alertStr = "";
    
    http_request1.onreadystatechange = function () {
      
      if (http_request1.readyState == 4) {
        
        // Request1 abgearbeitet      
        if (http_request1.status == 200) {
        
          // Request1 war erfolgreich - übergebe Response an Temporäre-Variable          
          executeText = http_request1.responseText; 
                    
          // Neues Request-Objekt für den Newsletterversand
          http_request2 = getXMLHttpRequest();
          
          // Connection öffnen & Request2 absetzen.
          http_request2.open('GET', newsletterUrl, true);
          if(document && document.charset){
            http_request2.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=' + document.charset );
          }
          else{
            // Nachfolgend kann das im Formular verwendete Charset angegeben werden, falls dies nicht ausgelesen werden kann (z.B. charset=ISO-8859-1):
            http_request2.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1'  );
          }
          http_request2.setRequestHeader('W-Ajax-Engine', 'Weblication/4.x' );
          http_request2.send(null);
          
          var contactSuccess = "success";
          var testText = "error";
          var tempReg = new RegExp(testText, 'i');                    
          // Prüfe ob Fehler-Adresse zurückgegeben wird, d.h. ob es Probleme mit dem Verschicken gab
          if(tempReg.test(executeText)) contactSuccess = "error";       
                    
          http_request2.onreadystatechange = function () {          
            
            if (http_request2.readyState == 4) {
              
              // Request2 abgearbeitet                  
              if (http_request2.status == 200) {
                
                executeText2 = http_request2.responseText;
                executeText2 = executeText2.substring(executeText2.indexOf(">")+1,executeText2.lastIndexOf("<"));
                executeText2 = executeText2.replace(/'\)/,"&contactResult="+contactSuccess+"')");
                
                // Führe die Response von Request1 aus
                // => Trigger redirect auf Antwortseite.  
                eval(executeText2);
              }
              else{
                alert(http_request2.responseText);
                // Ajax loader verbergen
                document.getElementById('ajaxloader').style.display = 'none';
              }
            }
          }
        }
        else{
          alert(http_request1.responseText);
          // Ajax loader verbergen
          document.getElementById('ajaxloader').style.display = 'none';
        }
      }
    }
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Erzeugt einen XMLHttpRequest und gibt ihn zurück.
// 
// Parameter: url = die URL, die aufgerufen werden soll.
//
// Return: http_request-Objekt
//
////////////////////////////////////////////////////////////////
function getXMLHttpRequest(){
  
  var http_request = false;
  var ret = false;
  
  // Erzeuge einen Ajax-Request
  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
      http_request = new XMLHttpRequest();
      if (http_request.overrideMimeType) {
          http_request.overrideMimeType('text/xml');
          // See note below about this line
      }
  } else if (window.ActiveXObject) { // IE
      try {
          http_request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
          try {
              http_request = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (e) {}
      }
  }    
  
  if (!http_request) {
      alert('Giving up :( Cannot create an XMLHTTP instance');
      return false;
  }
    
  return http_request;
} 

