//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Funktionen des Projekts (ausser Menue)
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Gemeinsame globale Variablen
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

var undefined;


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Ein-/Ausblenden von Help- bzw. Details- bzw. Body-Divs
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//+++++++++++++++++++++++++++++++++++++++++++++++
// Globale Variablen
//+++++++++++++++++++++++++++++++++++++++++++++++

var buttonCloseSuffix = 'close';
var buttonOpenSuffix = 'open';
var regExpButtonClosePattern = /close/;
var regExpButtonOpenPattern = /open/;

var __elementList__ = [];
var __elementListCurrentState__; // [open|closed]


//+++++++++++++++++++++++++++++++++++++++++++++++
// switchAll
//+++++++++++++++++++++++++++++++++++++++++++++++

function switchAll() {

  var list = [];
  var currentState;
  var forceState;

  list = __elementList__;
  currentState = __elementListCurrentState__;

  if (!currentState) {
    currentState = 'open';
  }

  for (var i=0; i<list.length; i++) {

    if (list[i]['layerID'] && list[i]['buttonID'] && list[i]['buttonClassName']) {

      if (currentState == 'open') {
        list[i]['buttonClassName'] = hideLayerByButton(list[i]['layerID'],list[i]['buttonID'],list[i]['buttonClassName']);
      } else {
        list[i]['buttonClassName'] = showLayerByButton(list[i]['layerID'],list[i]['buttonID'],list[i]['buttonClassName']);
      }

    }

  }

  if (currentState == 'open') {
    __elementListCurrentState__ = 'closed';
  } else {
    __elementListCurrentState__ = 'open';
  }

  __elementList__ = list;

}


//+++++++++++++++++++++++++++++++++++++++++++++++
// switchLayerDisplayByButton
//+++++++++++++++++++++++++++++++++++++++++++++++

function switchLayerDisplayByButton(layerID,buttonID,buttonClassName) {

  var layer = document.getElementById(layerID);

  if (!layer) {
    return undefined;
  }

  // Funktionsaufruf

  if (layer.style.display && layer.style.display == 'none') {
    showLayerByButton(layerID,buttonID,buttonClassName);
  } else {
    hideLayerByButton(layerID,buttonID,buttonClassName);
  }

}


//+++++++++++++++++++++++++++++++++++++++++++++++
// showLayerByButton
//+++++++++++++++++++++++++++++++++++++++++++++++

function showLayerByButton(layerID,buttonID,buttonClassName) {

  var layer = document.getElementById(layerID);
  var button = document.getElementById(buttonID);
  var buttonClassNameString = '';

  if (!layer || !button || !buttonClassName) {
    return undefined;
  }

  // Layer ein-/ausblenden

  layer.style.display = 'block';

  // Button aendern

  if (buttonClassName.match(regExpButtonOpenPattern)) {
    buttonClassNameString = buttonClassName.replace(regExpButtonOpenPattern,buttonCloseSuffix);
  }

  button.className = buttonClassNameString;

  return buttonClassNameString;

}


//+++++++++++++++++++++++++++++++++++++++++++++++
// hideLayerByButton
//+++++++++++++++++++++++++++++++++++++++++++++++

function hideLayerByButton(layerID,buttonID,buttonClassName) {

  var layer = document.getElementById(layerID);
  var button = document.getElementById(buttonID);
  var buttonClassNameString = '';

  if (!layer || !button || !buttonClassName) {
    return undefined;
  }

  // Layer ein-/ausblenden

  layer.style.display = 'none';

  // Button aendern

  if (buttonClassName.match(regExpButtonClosePattern)) {
    buttonClassNameString = buttonClassName.replace(regExpButtonClosePattern,buttonOpenSuffix);
  }

  button.className = buttonClassNameString;

  return buttonClassNameString;

}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Hilfsfunktionen
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//+++++++++++++++++++++++++++++++++++++++++++++++
// Globale Variablen
//+++++++++++++++++++++++++++++++++++++++++++++++


//+++++++++++++++++++++++++++++++++++++++++++++++
// gotoURL
//+++++++++++++++++++++++++++++++++++++++++++++++

function gotoURL(url) {

  if (url != '') {
    window.location = url;
  }

}


//+++++++++++++++++++++++++++++++++++++++++++++++
// open_interaction_window
//+++++++++++++++++++++++++++++++++++++++++++++++

function open_interaction_window(window_name, url, window_id) {

  var currentWindow;

  if (window_id == 'artikel-detail') {

    currentWindow = window.open(url,window_name,"scrollbars=yes,toolbar=no,location=no,width=700,height=750,status=no,resizable=yes");
    currentWindow.focus();

  } else {

    //currentWindow = window.open(url,window_name,"scrollbars=yes,toolbar=no,location=no,width=700,height=550,status=no,resizable=yes");
    currentWindow = window.open(url,window_name,"scrollbars=yes,toolbar=no,location=no,width=838,height=600,status=no,resizable=yes");
    currentWindow.focus();

  }

}


//+++++++++++++++++++++++++++++++++++++++++++++++
// checkData
//+++++++++++++++++++++++++++++++++++++++++++++++

function checkData(area) {


  // Bestandsuebernahme

  if (area == 'bestandsuebernahme') {

    var anzahl = 0;

    for (var i=0; i<document.myform.elements.length; i++) {
      if (document.myform.elements[i].type == 'checkbox') {
        if (document.myform.elements[i].checked) {
          anzahl++;
        }
      }
    }

    if (anzahl > 0) {
      return true;
    } else {
      alert("Sie haben keine Artikel ausgewählt!\n\nKlicken Sie auf die Kästchen links neben den Artikeln,\num diese zu übernehmen.");
      return false;
    }

  }


  // Warenkorb

  if (area == 'warenkorb') {

    var anzahl = 0;

    for (var i=0; i<document.myform.elements.length; i++) {
      if (document.myform.elements[i].type == 'checkbox') {
        if (document.myform.elements[i].checked) {
          anzahl++;
        }
      }
    }

    if (anzahl > 0) {
      return true;
    } else {
      alert("Sie haben keine Artikel ausgewählt!\n\nKlicken Sie auf die Kästchen links neben den Artikeln,\num diese für den Bestellvorgang auszuwählen.")
      return false;
    }

  }


  // Bestellung bearbeiten

  if (area == 'bestellung_bearbeiten') {

    var anzahl = 0;

    for (var i=0; i<abostart.length; i++) {
      if (document.myform.elements[abostart[i]].value == '') {
        alert("Bitte geben Sie für jedes Abonnement\neine Abostart ein.\nDanke!");
        return false;
      }
    }

    return true;

  }


  // Freigabeantrag

  if (area == 'freigabeantrag') {

    var anzahl = 0;

    for (var i=0; i<document.myform.elements.length; i++) {
      if (document.myform.elements[i].type == 'checkbox') {
        if (document.myform.elements[i].checked) {
          anzahl++;
        }
      }
    }

    if (anzahl > 0) {
      return true;
    } else {
      alert("Sie haben keine Artikel ausgewählt!\n\nKlicken Sie auf die Kästchen links neben den Artikeln,\num diese für den Freigabevorgang auszuwählen.")
      return false;
    }

  }


  // Bestand Suche

  if (area == 'bestand_suche') {

    for (var i=0; i<document.myform.elements.length; i++) {

      if (document.myform.elements[i].type == 'hidden') {

        var name = document.myform.elements[i].name;

        if (name.indexOf("kartei") == 0) {
          var j = name.substring(6);

          if (j>=1 && j<=10) {
            var datum_von = document.myform.elements["kartei" + j + "_datum_von"].value;
            var datum_bis = document.myform.elements["kartei" + j + "_datum_bis"].value;
            document.myform.elements[i].value = datum_von + ";" + datum_bis;
          }

        }

      }

    }

    return true;

  }


}


//+++++++++++++++++++++++++++++++++++++++++++++++
// storeSelection
//+++++++++++++++++++++++++++++++++++++++++++++++

function storeSelection() {

  var selection = {};

  for (var i=0; i<document.myform.elements.length; i++) {
    if (document.myform.elements[i].type == 'checkbox') {
      selection[document.myform.elements[i].value] = document.myform.elements[i].checked;
    }
  }

  parent.fro_menue_links._selection = selection;

}


//+++++++++++++++++++++++++++++++++++++++++++++++
// restoreSelection
//+++++++++++++++++++++++++++++++++++++++++++++++

function restoreSelection() {

  var selection = parent.fro_menue_links._selection;

  if (!selection) {
    return;
  }

  for (var i=0; i<document.myform.elements.length; i++) {
    if (document.myform.elements[i].type == 'checkbox') {
      if (selection[document.myform.elements[i].value] != undefined) {
        document.myform.elements[i].checked = selection[document.myform.elements[i].value];
      }
    }
  }

}


//+++++++++++++++++++++++++++++++++++++++++++++++
// schnellbestellung
//+++++++++++++++++++++++++++++++++++++++++++++++

function schnellbestellung() {

  var anzahl = 0;

  for (var i=0; i<document.myform.elements.length; i++) {
    if (document.myform.elements[i].type == 'checkbox') {
      if (document.myform.elements[i].name == "_idauftrag" && document.myform.elements[i].checked) {
        anzahl++;
      }
    }
  }

  if (anzahl > 0) {
    document.myform._aktion.value = 'schnellbestellung';
    // Problem mit IE
    // document.myform.submit();
    window.location = getURLFromForm(document.myform);
    return false;
  } else {
    alert("Sie haben keine Artikel ausgewählt!\n\nKlicken Sie auf die Kästchen links neben den Artikeln,\num diese für den Bestellvorgang auszuwählen.")
    return false;
  }

}


//+++++++++++++++++++++++++++++++++++++++++++++++
// getURLFromForm
//+++++++++++++++++++++++++++++++++++++++++++++++

function getURLFromForm(htmlElement) {
 if (!arguments.length) {
   return false;
 }
 var url = '';
 var docSource = '';
 var tagName = htmlElement['tagName'];
 tagName = tagName.toLowerCase();
 if (tagName != 'form'){
   return false;
 }
 var nameValuePeer = [];
 for (var i=0; i<htmlElement.elements.length; i++){
   nameValuePeer[i] = {};
   if (htmlElement.elements[i].name.length){
     if (htmlElement.elements[i].type == 'select-one'){
         nameValuePeer[i]['name'] = htmlElement.elements[i].name;
         nameValuePeer[i]['value'] = htmlElement.elements[i].options[htmlElement.elements[i].selectedIndex].value;
     } else if (htmlElement.elements[i].type == 'select-multiple'){
       nameValuePeer[i]['name'] = htmlElement.elements[i].name;
       nameValuePeer[i]['value'] = [];
       for (var ii=0; ii<htmlElement.elements[i].options.length; ii++){
         if (htmlElement.elements[i].options[ii].selected){
           nameValuePeer[i]['value'][ii] = htmlElement.elements[i].options[ii].value;
         }
       }
     } else if (htmlElement.elements[i].type == 'radio'){
       nameValuePeer[i]['name'] = htmlElement.elements[i].name;
       if (htmlElement.elements[i].length){
         nameValuePeer[i]['value'] = [];
         for (var ii=0; ii<htmlElement.elements[i].length; ii++){
           if (htmlElement.elements[i][ii].checked){
             nameValuePeer[i]['value'][ii] = htmlElement.elements[i][ii].value;
           }
         }
       } else {
         if (htmlElement.elements[i].checked){
           nameValuePeer[i]['value'] = htmlElement.elements[i].value;
         }
       }
     } else if (htmlElement.elements[i].type == 'checkbox'){
       nameValuePeer[i]['name'] = htmlElement.elements[i].name;
       if (htmlElement.elements[i].length){
         nameValuePeer[i]['value'] = [];
         for (var ii=0; ii<htmlElement.elements[i].length; ii++){
           if (htmlElement.elements[i][ii].checked){
             nameValuePeer[i]['value'][ii] = htmlElement.elements[i][ii].value;
           }
         }
       } else {
         if (htmlElement.elements[i].checked){
           nameValuePeer[i]['value'] = htmlElement.elements[i].value;
         }
       }
     } else {
       nameValuePeer[i]['name'] = htmlElement.elements[i].name;
       nameValuePeer[i]['value'] = htmlElement.elements[i].value;
     }
   }
 }
 url += htmlElement.action + '?';
 for (var f=0; f<nameValuePeer.length; f++){
   if (typeof nameValuePeer[f]['value'] == 'object'){
     for (var ff=0; ff<nameValuePeer[f]['value'].length; ff++){
       if (nameValuePeer[f]['value'][ff]){
         url += '&' + encodeURIComponent(nameValuePeer[f]['name']);
         url += '=' + encodeURIComponent(nameValuePeer[f]['value'][ff]);
       }
     }
   } else {
     if (nameValuePeer[f]['value']){
       url += '&' + encodeURIComponent(nameValuePeer[f]['name']);
       url += '=' + encodeURIComponent(nameValuePeer[f]['value']);
     }
   }
 }
 return url;
}


//+++++++++++++++++++++++++++++++++++++++++++++++
// checkDefaultValue
//+++++++++++++++++++++++++++++++++++++++++++++++

function checkDefaultValue(formObj,defaultValue) {

  if (formObj.value == defaultValue) {
    formObj.value = '';
  }

}


//+++++++++++++++++++++++++++++++++++++++++++++++
// listNavigationGoto
//+++++++++++++++++++++++++++++++++++++++++++++++

function listNavigationGoto(id,pageSize,url,maxItems) {

  var pageNumber = document.getElementById(id).value;
  var newIndex = pageNumber * pageSize;
  var lastIndex;
  var newPageNumber;

  if (isNaN(newIndex)) {
    newIndex = 0;
  }

  if (newIndex >= maxItems) {

    newPageNumber = Math.floor(maxItems/pageSize);

    if (maxItems % pageSize == 0) {
      newPageNumber -= 1;
    }

    lastIndex = newPageNumber * pageSize;
    newIndex = lastIndex + 1;

  } else {

    newIndex += 1;

    if (newIndex > pageSize) {
      newIndex -= pageSize;
    }

  }

  window.location = url + '&amp;_von=' + newIndex;

  return false;

}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//Hilfsklassen
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//+++++++++++++++++++++++++++++++++++++++++++++++
//Frohberg
//+++++++++++++++++++++++++++++++++++++++++++++++

function Frohberg() {}

//Klassen-Methoden

Frohberg.openPopup = function(url, size) {

  var settingsString = "scrollbars=yes,toolbar=no,location=no,status=no,resizable=yes";
  
  if (size == "size1") {
    settingsString += ",width=1062,height=768";
  }
  
  Frohberg.currentPopup = window.open("/store/relaunch/custom_popup/index.html", "customPopup", settingsString);
  Frohberg.requestURL = url;
  Frohberg.currentPopup.focus();

}

Frohberg.closePopup = function() {
  Frohberg.currentPopup.close();
}

Frohberg.go = function(url) {

  var newURL = Frohberg._validateURL(url);
  Frohberg.currentParent.location = newURL;
  Frohberg.currentPopup.focus();  

}

Frohberg.goAndClosePopup = function(url) {

  var newURL = Frohberg._validateURL(url);
  Frohberg.currentParent.location = newURL;
  Frohberg.currentPopup.close();

}

Frohberg.sync = function() {
  
  Frohberg.globalSID = window.opener.Frohberg.globalSID;
  Frohberg.currentPopup = window;
  Frohberg.currentParent = window.opener;
  
}

Frohberg._validateURL = function(url) {

  var currentSID = Frohberg._getSID();
  var newURL = url;
  
  if (url.search(/_SID/) != -1) {
    newURL = url.replace(/^(.*)_SID=[^&]+&(.*)$/, "$1$2&_SID=" + currentSID);    
  } else {
    newURL += "&_SID=" + currentSID;
  }
  
  return newURL;

}

Frohberg._getSID = function() {

  var currentSID = Frohberg.globalSID ? Frohberg.globalSID : "NEW";
  return currentSID;

}

//Klassen-Eigenschaften

Frohberg.globalSID;
Frohberg.currentPopup;
Frohberg.currentParent;