////////////////////////////////////////////////////////////////
//
// wShop.js 1.0.4
// erstellt durch Scholl Communications AG, 77694 Kehl, www.scholl.de
// erstellt mit Weblication® Content Management Server, www.weblication.de
// Stand: 28.10.2003
//
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
//
// Anzupassende Variablen:
//
// Vorlage fuer den Kopf der Bestellung
var orderHeaderTpl  = '<table width="100%" border="0" cellspacing="0" cellpadding="2">';
//
// Zeilenvorlage eines Produktes in der Bestellung
var orderProductTpl  = '<tr><td class="text" width="5%" height=" align="center">&nbsp;<input type="hidden" name="product_$productName" value="(Art.Nr. $productId) $amount Buchung(en) à $price = $sum"></td><td class="text" width="5%" align="center">$amount</td><td class="text"  width="40%">$productName</td><td class="text" width="25%" align="right">$price EUR</td><td align="right" class="text" width="25%">$sum EUR</td></tr>';
//
// Vorlage fuer die Summe der Bestellung
var orderSumNettoTpl = '<tr><td class="text">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td class="text">Summe Netto:&nbsp;</td><td align="right" class="text">$ordersum EUR<input type="hidden" name="orderSum" value="$ordersum"></td></tr>';
//
// Vorlage fuer die Summe der Mehrwertsteuer
var orderSumTaxTpl = '';
//
// Vorlage fuer die Summe der Bestellung
var orderSumBruttoTpl = '<tr><td class="text">&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td class="text">Summe:&nbsp;</td><td align="right" class="text">$ordersum EUR<input type="hidden" name="orderSum" value="$ordersum"></td></tr>';
//
// Vorlage fuer den Fuss der Bestellung
var orderFooterTpl  = '</table>';
//
// Sind Preise Brutto [0|1] (0=Nettopreise, 1=Bruttopreise)
var productPricesBrutto = 1;
//
// Mehrwehrtsteuersatz in Prozent
var taxValuePercent = 16;
//
// Anzeige von Preisen ohne Nachkommaangabe
var stringNoCent = ".00";
//
//erscheint wenn ein Pflichtfeld nicht ausgefüllt wurde
var messageObligation = " ist ein Pflichtfeld!\n"; 
//
//Id des Shops
var shopId = 'Portal-Bergwaldprojekte';
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
//
// Beschreibung: Zeigt den Inhalt des Warenkorbs an
//
////////////////////////////////////////////////////////////////

function showProducts(){
  showBasketInfo();
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Zeigt den Inhalt des Warenkorbs an
//
////////////////////////////////////////////////////////////////

function getBasketInfo(info){
  return showBasketInfo(info, 'return');
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Zeigt Informationen zum Warenkorb an
//
////////////////////////////////////////////////////////////////

  function showBasketInfo(info, option){

    var productStr = getCookie(shopId);
    var productRowTmp;
    var numberProducts = 0;
    var numberProductsTimeout = 64;

    if(! info){
      info = "";
    }  
    
    var entry = productStr;
  
    var productId     = "";
    var productName   = "";
    var productAmount = 1;
    var productPrice  = 0;    
    var productSum    = 0;
    var orderSum      = 0;
    var orderSumNetto = 0;
    var orderSumBrutto = 0;    
    var orderSumTax   = 0;
    var productPricePrint = 0;
    var productSumPrint = 0;
    var i = 0;

    if(info == ""){                      
      document.write(orderHeaderTpl);    
    }  
  
    var products = productStr.split('~~~');
    
    for(var i=0;i<products.length;i++){
      if(products[i] != ''){
        entry      = products[i].replace(/p:/, '');    
        //alert(entry);  
      
        productId     = entry.replace(/^([^\~]+)\~___.*/, '$1');
        if(productId == entry){
          productId = "";
        }
        productAmount = entry.replace(/.*\~___([^\~]+)\~__-.*/, '$1');    
        if(productAmount == entry){
          productAmount = "";
        }      
        productName   = entry.replace(/.*\~__-([^\~]+)\~_-_.*/, '$1');
        if(productName == entry){
          productName = "";
        }      
        productPrice  = entry.replace(/.*\~_-_([^\~]+)\~_--.*/, '$1');    
        if(productPrice == entry){
          productPrice = "";
        }      
        
        productPrice  = productPrice.replace(/\,/, ".");
        productPrice  = Math.round(parseFloat(productPrice)* 100)/100;
        productSum    = Math.round(productPrice * parseFloat(productAmount) * 100)/100;;
      
        if(entry != ""){
          productPricePrint  = convertPrice(productPrice);    
          productSumPrint    = convertPrice(productSum);        
          productRowTmp = orderProductTpl.replace(/\$productId/g, productId);
          productRowTmp = productRowTmp.replace(/\$productName/g, productName);
          productRowTmp = productRowTmp.replace(/\$amount/g, productAmount);
          productRowTmp = productRowTmp.replace(/\$price/g, productPricePrint);
          productRowTmp = productRowTmp.replace(/\$sum/g, productSumPrint);        
          if(info == ""){                    
            document.write(productRowTmp);
          }  
          orderSum += productSum;
          if(entry != ""){
            numberProducts += parseInt(productAmount);
          }              
        }      
      }
    }

    if(productPricesBrutto == 0){
      orderSumNetto = orderSum;
      orderSumNetto = convertPrice(orderSumNetto);    
      orderSumNettoTpl = orderSumNettoTpl.replace(/\$ordersum/g, orderSumNetto);    

      orderSumTax = orderSum * taxValuePercent / 100;
      orderSumTax = convertPrice(orderSumTax);
      orderSumTaxTpl = orderSumTaxTpl.replace(/\$ordersumtax/g, orderSumTax);        
    
      orderSumBrutto = orderSum * (100 + taxValuePercent) / 100;
      orderSumBrutto = convertPrice(orderSumBrutto);    
      orderSumBruttoTpl = orderSumBruttoTpl.replace(/\$ordersum/g, orderSumBrutto);    

      if(info == ""){                  
        document.write(orderSumNettoTpl);    
        document.write(orderSumBruttoTpl);
        document.write(orderSumTaxTpl);    
      }  
    }
    else{
      orderSumTax = orderSum / (100 + taxValuePercent) * taxValuePercent;
      orderSumTax = convertPrice(orderSumTax);
      orderSumTaxTpl = orderSumTaxTpl.replace(/\$ordersumtax/g, orderSumTax);        
    
      orderSumBrutto = orderSum;
      orderSumBrutto = convertPrice(orderSumBrutto);    
      orderSumBruttoTpl = orderSumBruttoTpl.replace(/\$ordersum/g, orderSumBrutto);    

      if(info == ""){                  
        document.write(orderSumBruttoTpl);
        document.write(orderSumTaxTpl);    

      }  
    }    

    if(info == ""){                      
      document.write(orderFooterTpl);
    }  
    else if(info == "numberProducts"){    
      if(option == "return"){                  
        return numberProducts;
      }
      else{
        document.write(numberProducts);      
      }  
    }      
    else if(info == "sumBrutto"){                      
      if(option == "return"){                  
        return orderSumBrutto;
      }
      else{
        document.write(orderSumBrutto);      
      }        
    }       
  }      
    
////////////////////////////////////////////////////////////////
//
// Beschreibung: Konvertiert die Preise
//
////////////////////////////////////////////////////////////////  
  
  function convertPrice(price){

    price = Math.round(price * 100)/100;  
    var priceInt = parseInt(price);
    
    if(price == priceInt){
      price += stringNoCent;    
      return price;
    }
   
    var testPrice = /\.(\d+)$/;
    testPrice.test(price);
    var result = RegExp.$1;
    if(result == ""){
      price += stringNoCent;
    }
    else if(result.length == 1){
      price += "0";
    }
    return price;
  }
  
////////////////////////////////////////////////////////////////
//
// Beschreibung: Fuegt ein neues Produkt dem Warenkorb hinzu
//
////////////////////////////////////////////////////////////////

  function addProduct (productId, productAmount, productName, productPrice, productArt){
  
    var productStr = getCookie(shopId);
    
    var regExpStr;
    var existsProduct = new RegExp(":" + productId + "~___");
    if(existsProduct.test(productStr) == true){
      var numberProductsBasket    = productStr.replace(":" + productId + "~___", ":~~~~~~~~");
      numberProductsBasket    = numberProductsBasket.replace(/.*\~\~\~\~\~\~\~\~/, "");    
      numberProductsBasket    = numberProductsBasket.replace(/^(\d+).*/, '$1');        

      var numberProductsBasketNew = parseInt(numberProductsBasket) + parseInt(productAmount);
      productStr       = productStr.replace(":" + productId + "~___", ":~~~~~~~~");
      var dollar1      = productStr.replace(/\~\~\~\~\~\~\~\~(\d+).*$/, '');
      productStr       = productStr.replace(/(.*)\~\~\~\~\~\~\~\~(\d+)/, dollar1 + productId + "~___" +  numberProductsBasketNew);
      setProducts(productStr);
    }
    else{
      var productsFirst = new RegExp("p:");

      if(productsFirst.test(productStr) == true){
        productStr = "p:" + productId + "~___" + productAmount + "~__-" + productName + "~_-_" + productPrice + "~_--" + "~~~" + productStr;
      }
      else{
        productStr = "p:" + productId + "~___" + productAmount + "~__-" + productName + "~_-_" + productPrice + "~_--" + "~~~";      
      }     
      setProducts(productStr);
    }
//    document.location.reload();
if(productArt == "BWP") {
  document.location.href="/portal/Huetten/Bergwaldprojekte/Bergwaldprojektwochen/warenkorb.php?art="+productArt;
}
else {
     document.location.href="/portal/Huetten/Bergwaldprojekte/Bergwaldprojektwochen/warenkorb.php";
     }

  }  
////////////////////////////////////////////////////////////////
//
// Beschreibung: Setzt eine bestimmte Anzahl eines Produktes
//
////////////////////////////////////////////////////////////////

  function setProduct (productId, productAmount, productName, productPrice){
  
    var productStr = getCookie(shopId);
    
    var regExpStr;
    var existsProduct = new RegExp(":" + productId + "~___");
    if(existsProduct.test(productStr) == true){
      var numberProductsBasket    = productStr.replace(":" + productId + "~___", ":~~~~~~~~");
      numberProductsBasket    = numberProductsBasket.replace(/.*\~\~\~\~\~\~\~\~/, "");
      numberProductsBasket    = numberProductsBasket.replace(/^(\d+).*/, '$1');          

      var numberProductsBasketNew = parseInt(productAmount);
      productStr       = productStr.replace(":" + productId + "~___", ":~~~~~~~~");
      var dollar1      = productStr.replace(/\~\~\~\~\~\~\~\~(\d+).*$/, '');
      productStr       = productStr.replace(/(.*)\~\~\~\~\~\~\~\~(\d+)/, dollar1 + productId + "~___" +  numberProductsBasketNew);
      setProducts(productStr);
    }
    else{
      var productsFirst = new RegExp("p:");

      if(productsFirst.test(productStr) == true){
        productStr = "p:" + productId + "~___" + productAmount + "~__-" + productName + "~_-_" + productPrice + "~_--" + "~~~" + productStr;
      }
      else{
        productStr = "p:" + productId + "~___" + productAmount + "~__-" + productName + "~_-_" + productPrice + "~_--" + "~~~";      
      }     
      setProducts(productStr);
    }
    document.location.reload();
  }  
  
////////////////////////////////////////////////////////////////
//
// Beschreibung: Entfernt eine bestimmte Anzahl eines Produktes aus dem Warenkorb
//
////////////////////////////////////////////////////////////////

  function removeProduct (productId, productAmount){
  
    var productStr = getCookie(shopId);
    var regExpStr;
    var existsProduct = new RegExp(":" + productId + "~___");
    
    if(existsProduct.test(productStr) == true){
      productAmount    = productStr.replace(":" + productId + "~___", ":~~~~~~~~");
      productAmount    = productAmount.replace(/.*\~\~\~\~\~\~\~\~/, "");
      productAmount    = productAmount.replace(/^(\d+).*/, '$1');          
      var productAmountNew = productAmount * 2;
      productAmountNew = productAmountNew/2-1;
      if(productAmountNew > 0){
        productStr       = productStr.replace(":" + productId + "~___", ":~~~~~~~~");
        var dollar1      = productStr.replace(/\~\~\~\~\~\~\~\~(\d+).*$/, '');
        productStr       = productStr.replace(/(.*)\~\~\~\~\~\~\~\~(\d+)/, dollar1 + productId + "~___" +  productAmountNew);
      }
      else{                      
        productStr       = productStr.replace(":" + productId + "~___", "~~~~~~~~");      
        productStr       = productStr.replace(/p\~\~\~\~\~\~\~\~[^:]*\~\~\~/ , "");
      }      
      setProducts(productStr);
      document.location.reload();
    }
  }

////////////////////////////////////////////////////////////////
//
// Beschreibung: Entfernt ein Produkt aus dem Warenkorb
//
////////////////////////////////////////////////////////////////

  function clearProduct (productId){
  
    var productStr = getCookie(shopId);
    var regExpStr;
    var existsProduct = new RegExp(":" + productId + "~___");
    
    if(existsProduct.test(productStr) == true){
      productStr       = productStr.replace(":" + productId + "~___", "~~~~~~~~");      
      productStr       = productStr.replace(/p\~\~\~\~\~\~\~\~[^:]*\~\~\~/ , "");
    }      
    setProducts(productStr);
	document.location.reload();
  }  
  
////////////////////////////////////////////////////////////////
//
// Beschreibung: Schreibt den Warenkorb
//
////////////////////////////////////////////////////////////////  

function setProducts (productStr){

  document.cookie = shopId + "=" + encodeURI(productStr) + "; path=/;";
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Loescht den Warenkorb
//
////////////////////////////////////////////////////////////////  

function clearBasket (){
  
  document.cookie = shopId + "=; path=/;";
}
  
////////////////////////////////////////////////////////////////
//
// Beschreibung: Sendet die Bestellung
// 
// Parameter: form = Formular, das gesendet werden soll.
//
////////////////////////////////////////////////////////////////

function submitOrder(form, cacheMode){

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

  var cookieStr = "";

// Formular nicht absenden lassen, wenn keine Veranstaltung im Warenkorb ist
// und eine entsprechende Meldung ausgeben - Gerhard Flatscher 03/2007 
  var numberProductsCur = getBasketInfo('numberProducts');
  if (numberProductsCur == 0) {
     alert("Sie haben keine Veranstaltung in Ihrem Warenkorb - Bitte buchen!");
     return;
     }


  for(var i = 0; i <= form.elements.length - 1; i++){
    var formElement = form.elements[i];
    if(formElement){
      if(formElement.type == "text" || formElement.type == "textarea"){
        formElementNameOrig = formElement.name.replace(/\|\w+/, ''); 
        if(isObligation.test(formElement.name) == true){  
          if(formElement.value == ""){
            alertStr += formElementNameOrig + messageObligation;                     
          }
        } 
        if(isEmail.test(formElement.name) == true){  
          if (checkEmail.test(formElement.value) == false){
            alertStr += formElementNameOrig + 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 += formElementNameOrig + messageObligation;                     
          }
        } 
      }
    }
  }

  if(alertStr != ""){
    alert(alertStr);  
  }
  else{
    if(cacheMode == "1"){      
      cookieStr += "; path=/";    
      document.cookie = cookieStr;  
    }
    clearBasket();
    form.submit();
  }
}

////////////////////////////////////////////////////////////////
//
// Beschreibung: Ermittelt ein Cookie
//
////////////////////////////////////////////////////////////////  

function getCookie(name){
  var cookieStr = document.cookie;
  if(name && name != ''){
    if(cookieStr.indexOf(name + '=') >= 0){
      var nameReg = new RegExp('.*' + name + '=');
      cookieStr = cookieStr.replace(nameReg, '');
      cookieStr = cookieStr.replace(/;.*/, '');
    cookieStr = decodeURI(cookieStr);
    }
    else{
      return '';
    }
  } 
  return cookieStr;
}
