////////////////////////////////////////////////////////////////
//
// 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 width="5%" height=" align="center"><a class="textDecorationNone" href="javascript:addProduct(\'$productId\',\'1\',\'$productName\',\'\');">+</a>&nbsp;<a class="textDecorationNone" href="javascript:removeProduct(\'$productId\',\'1\',\'$productName\',\'\');">-</a><input type="hidden" name="product_$productName" value="(Art.Nr. $productId) $amount Stueck à $price = $sum"></td><td width="5%" align="center">$amount</td><td width="30%">$productName</td><td width="10%">$productId</td><td width="25%" align="right">$price EUR</td><td align="right" width="25%">$sum EUR</td></tr>';
//
// Vorlage fuer die Summe der Bestellung
var orderSumNettoTpl = '<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>Summe Netto:&nbsp;</td><td align="right">$ordersum EUR<input type="hidden" name="orderSum" value="$ordersum"></td></tr>';
//
// Vorlage fuer die Summe der Mehrwertsteuer
var orderSumTaxTpl = '<tr><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>Summe MwSt:&nbsp;</td><td align="right">$ordersumtax EUR<input type="hidden" name="orderSumTax" value="$ordersumtax"></td></tr>';
//
// Vorlage fuer die Summe der Bestellung
var orderSumBruttoTpl = '<tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>Summe Brutto:&nbsp;</td><td align="right">$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"; 
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
//
// 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 = document.cookie;
    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);
    }  
  
    while(entry.length > 1 && i < numberProductsTimeout){
      i += 1;
      productStr = productStr.replace(/p\:([^\:]+\~\~\~)(.*)/, '$1$2'); 
      entry      = RegExp.$1;      
	
      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(orderSumTaxTpl);	
        document.write(orderSumBruttoTpl);
      }  
	}
	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(orderSumTaxTpl);	
        document.write(orderSumBruttoTpl);
      }  
	}	

    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){
  
    var productStr    = document.cookie;
    productStr = productStr.replace(/.*wShop=/, "");
	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;
      productStr       = productStr.replace(":" + productId + "~___", ":~~~~~~~~");
      productStr       = productStr.replace(/(.*)\~\~\~\~\~\~\~\~(\d+)/, "$1" + productId + "~___" +  productAmountNew);
      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.href = "/html_de/system/warenkorb.php";
  }
  
////////////////////////////////////////////////////////////////
//
// Beschreibung: Entfernt ein Produkt aus dem Warenkorb
//
////////////////////////////////////////////////////////////////

  function removeProduct (productId, productAmount, productName, productPrice){
  
    var productStr    = document.cookie;
    productStr = productStr.replace(/.*wShop=/, "");
	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 + "~___", ":~~~~~~~~");
        productStr       = productStr.replace(/(.*)\~\~\~\~\~\~\~\~(\d+)/, "$1" + productId + "~___" +  productAmountNew);
	  }
	  else{		  	  	  
        productStr       = productStr.replace(":" + productId + "~___", "~~~~~~~~");	  
        productStr       = productStr.replace(/p\~\~\~\~\~\~\~\~[^:]*\~\~\~/ , "");
	  }	  
      setProducts(productStr);
	  document.location.reload();
	}
  }

////////////////////////////////////////////////////////////////
//
// Beschreibung: Schreibt den Warenkorb
//
////////////////////////////////////////////////////////////////  

function setProducts (productStr){

  document.cookie = "wShop=" + productStr + "; path=/;";
}

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

function clearBasket (){
  
  document.cookie = "wShop=; 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 = "";

	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();
	}
}