function deleteProduct(aCode){
	myOrderLines = XML.getFirstItem("Order").getFirstItem("OrderBody").getFirstItem("OrderLines")
	tmpChildNodes = myOrderLines.childNodes;
	anArray = new Array();
	for(var i=0;i<tmpChildNodes.length;i++){
		if(tmpChildNodes[i].getFirstItem("Product").code!=aCode) anArray[anArray.length] = tmpChildNodes[i];
		};
	myOrderLines.childNodes = anArray;
	reload();
	};
// 12010
function updShoppingCart(){
	myOrderLines = XML.getFirstItem("Order").getFirstItem("OrderBody").getFirstItem("OrderLines");
	for(var i=0;i<myOrderLines.childNodes.length;i++){
		myOrderLines.childNodes[i].getFirstItem("QuantityOrdered").amount = parseInt(document.ProductIndex.elements[i].value);
		};
	reload();
	};
// 12025
	function calcDiscount(myElement){
		var myInternal = myElement.getFirstItem("Internal");
		var myQuantityOrdered = myElement.getFirstItem("QuantityOrdered");
		var myDiscount = myElement.getFirstItem("Discount");
		var myTax = myElement.getFirstItem("Tax");
		var myPrice = myElement.getFirstItem("Price");
		var myNet = myPrice.getFirstItem("Net");
		var myGross = myPrice.getFirstItem("Gross");
		
		var arrDiscountStrings = myInternal.discount.split(";");
		myDiscount.amountNet = "0";myDiscount.amountGross = "0";myDiscount.rate = "0";
		
		if(boolPriceTaxIncl){
			myNet.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(myInternal.price) * ( 1 - parseFloat(myTax.rate) / ( 100 + parseFloat(myTax.rate) ) ) / parseInt(myPrice.unit), objLeadCurrency ) );
			myNet.getFirstItem("LineTotal").putValue( parseFloat(myNet.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
			myGross.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(myInternal.price) / parseInt(myPrice.unit), objLeadCurrency ) );
			myGross.getFirstItem("LineTotal").putValue( parseFloat(myGross.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
			}
		else{
			myNet.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(myInternal.price) / parseInt(myPrice.unit), objLeadCurrency ) );
			myNet.getFirstItem("LineTotal").putValue( parseFloat(myNet.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
			myGross.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(myInternal.price) * ( 1 + parseFloat(myTax.rate) / 100 ) / parseInt(myPrice.unit), objLeadCurrency ) );
			myGross.getFirstItem("LineTotal").putValue( parseFloat(myGross.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
			};
		// discounts available
		var maxAmount = 1;
		for(var i=0;i<arrDiscountStrings.length-1;i++){
			aDiscount = arrDiscountStrings[i].split("::");
			if(parseInt(myQuantityOrdered.amount)>=aDiscount[1]&&parseInt(aDiscount[1])>maxAmount){
				maxAmount = aDiscount[1];
				if(parseInt(aDiscount[0])==0){
					if(boolPriceTaxIncl){
						myNet.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(aDiscount[2]) * ( 1 - parseFloat(myTax.rate) / ( 100 + parseFloat(myTax.rate) ) ) / parseInt(myPrice.unit), objLeadCurrency ) );
						myNet.getFirstItem("LineTotal").putValue( parseFloat(myNet.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
						myGross.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(aDiscount[2]) / parseInt(myPrice.unit), objLeadCurrency ) );
						myGross.getFirstItem("LineTotal").putValue( parseFloat(myGross.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
							myDiscount.amountNet = ( parseFloat(myInternal.price) - parseFloat(aDiscount[2]) ) * ( 1 - parseFloat(myTax.rate) / ( 100 + parseFloat(myTax.rate) ) ) *  parseInt(myQuantityOrdered.amount) / parseInt(myPrice.unit);
							myDiscount.amountGross = ( parseFloat(myInternal.price) - parseFloat(aDiscount[2]) ) *  parseInt(myQuantityOrdered.amount) / parseInt(myPrice.unit);
						}
					else{
						myNet.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(aDiscount[2]) / parseInt(myPrice.unit), objLeadCurrency ) );
						myNet.getFirstItem("LineTotal").putValue( parseFloat(myNet.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
						myGross.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(aDiscount[2]) * ( 1 + parseFloat(myTax.rate) / 100 ) / parseInt(myPrice.unit), objLeadCurrency ) );
						myGross.getFirstItem("LineTotal").putValue( parseFloat(myGross.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
							myDiscount.amountNet = ( parseFloat(myInternal.price) - parseFloat(aDiscount[2]) ) *  parseInt(myQuantityOrdered.amount) / parseInt(myPrice.unit);
							myDiscount.amountGross = ( parseFloat(myInternal.price) - parseFloat(aDiscount[2]) ) * ( 1 + parseFloat(myTax.rate) / 100 ) *  parseInt(myQuantityOrdered.amount) / parseInt(myPrice.unit);
						};
					}
				else{
					myDiscount.rate = aDiscount[2];
					if(boolPriceTaxIncl){
						myNet.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(myInternal.price) * ( 1 - parseFloat(aDiscount[2])/100 ) * ( 1 - parseFloat(myTax.rate) / ( 100 + parseFloat(myTax.rate) ) ) / parseInt(myPrice.unit), objLeadCurrency ) );
						myNet.getFirstItem("LineTotal").putValue( parseFloat(myNet.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
						myGross.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(myInternal.price) * ( 1 - parseFloat(aDiscount[2])/100 ) / parseInt(myPrice.unit), objLeadCurrency ) );
						myGross.getFirstItem("LineTotal").putValue( parseFloat(myGross.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
							myDiscount.amountNet = ( parseFloat(myInternal.price) - parseFloat(myInternal.price) * ( 1 - parseFloat(aDiscount[2])/100 ) ) * ( 1 - parseFloat(myTax.rate) / ( 100 + parseFloat(myTax.rate) ) ) *  parseInt(myQuantityOrdered.amount) / parseInt(myPrice.unit);
							myDiscount.amountGross = ( parseFloat(myInternal.price) - parseFloat(myInternal.price) * ( 1 - parseFloat(aDiscount[2])/100 ) ) *  parseInt(myQuantityOrdered.amount) / parseInt(myPrice.unit);
						}
					else{
						myNet.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(myInternal.price) * ( 1 - parseFloat(aDiscount[2])/100 ) / parseInt(myPrice.unit), objLeadCurrency ) );
						myNet.getFirstItem("LineTotal").putValue( parseFloat(myNet.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
						myGross.getFirstItem("SingleUnit").putValue( TFormatCurrencyValue( parseFloat(myInternal.price) * ( 1 - parseFloat(aDiscount[2])/100 ) * ( 1 + parseFloat(myTax.rate) / 100 ) / parseInt(myPrice.unit), objLeadCurrency ) );
						myGross.getFirstItem("LineTotal").putValue( parseFloat(myGross.getFirstItem("SingleUnit").getValue()) * myQuantityOrdered.amount );
							myDiscount.amountNet = ( parseFloat(myInternal.price) - parseFloat(myInternal.price) * ( 1 - parseFloat(aDiscount[2])/100 ) ) *  parseInt(myQuantityOrdered.amount) / parseInt(myPrice.unit);
							myDiscount.amountGross = ( parseFloat(myInternal.price) - parseFloat(myInternal.price) * ( 1 - parseFloat(aDiscount[2])/100 ) )
								* ( 1 + parseFloat(myTax.rate) / 100 ) *  parseInt(myQuantityOrdered.amount) / parseInt(myPrice.unit);
						};
					};
				};
			};
		return myElement;
		};
// 12030
	function TElementPrint(variableAmount){
		myProduct = this.getFirstItem("Product");
		myInternal = this.getFirstItem("Internal");
		myTax = this.getFirstItem("Tax")
		myDiscount = this.getFirstItem("Discount");
		myPrice = this.getFirstItem("Price");
		myNet = myPrice.getFirstItem("Net");
		myGross = myPrice.getFirstItem("Gross");
		myQuantityOrdered = this.getFirstItem("QuantityOrdered");
		tmpVariants = myInternal.variants.split("@");
		strVariants = "";strTmpReturnVal = "";
		if(tmpVariants.length>1){
			for(var i=0;i<tmpVariants.length-1;i++){
				tmpElement = tmpVariants[i].split(";");
				strTmpReturnVal += "<nobr>" + tmpVariants[i].split(";")[0] + ": " + tmpVariants[i].split(";")[1] + '</nobr><br>';
				strVariants += "search" + i + "=" + tmpElement[1] + "&";
				};
			strVariants += "{EOL}";
			};
		returnVal = '<tr bgcolor="#dddddd" >'
			+ '<td class="BSBODY" nowrap >' + myProduct.code + '</td>'
			+ '<td class="BSBODY" >'
			+ "<a href=\"javascript: callpage('" + myInternal.address + "','" + strVariants + "'," + myInternal.navIndex + ")\">" + myProduct.desc1 + "</a><br>" + myProduct.desc2 + "</td>"
			+ '<td class="BSBODY" >';
		if(tmpVariants.length>1){
			returnVal += strTmpReturnVal;
			}
		else returnVal += "&nbsp;";
		var taxamount = myTax.rate
		if(boolDisplTaxIncl){ // Preise Brutto darstellen
			var discountAmount = TFormatCurrencyOnly( myDiscount.amountGross / myQuantityOrdered.amount, objPriCurrency );
			var singlePrice = TFormatCurrencyOnly( myGross.getFirstItem("SingleUnit").getValue(), objPriCurrency );
			var fullPrice = TFormatCurrencyOnly( myGross.getFirstItem("LineTotal").getValue(), objPriCurrency );
			}
		else{ // Preise Netto darstellen
			var discountAmount = TFormatCurrencyOnly( myDiscount.amountNet / myQuantityOrdered.amount, objPriCurrency );
			var singlePrice = TFormatCurrencyOnly( myNet.getFirstItem("SingleUnit").getValue(), objPriCurrency );
			var fullPrice = TFormatCurrencyOnly( myNet.getFirstItem("LineTotal").getValue(), objPriCurrency );
			};
		returnVal += '</td>';
		if(variableAmount) returnVal += '<td class="BSBODY"><a href="javascript: deleteProduct(\'' + myProduct.code + '\');"><img src="../assets/images/icdelproduct.gif" width="24" height="23" alt="Delete" border="0" align="bottom" hspace="0" vspace="0" class="MAIN"></a></td>'
		else returnVal += '';
		returnVal += '<td class="BSBODY" align="right" nowrap >' + discountAmount + '</td>'
			+ '<td class="BSBODY" align="right" nowrap >' + singlePrice  + '</td>';
		if(variableAmount) returnVal += '<td class="BSBODY" align="center" ><input type="text" size="2" name="Amount_' + this.number + '" value="' + myQuantityOrdered.amount + '" onChange="this.value=valNumber(this.value,' + myInternal.minOrder + ',minOrderMsg)"></td>'
		else returnVal += '<td class="BSBODY" align="center" >' + myQuantityOrdered.amount + '</td>';
		returnVal += '<td class="BSBODY" align="right" nowrap >' + fullPrice + '</td>'
			+ '</tr>';
		return returnVal;
		};
// 12050
	function setupShoppingCartEntries(){
		// Order
		var myOrder = XML.getFirstItem("Order");
		// Order/OrderHeader
		var myOrderHeader = myOrder.getFirstItem("OrderHeader");
		// Order/OrderHeader/TotalWeight
		var myTotalWeight = myOrderHeader.getFirstItem("TotalWeight");
			myTotalWeight.putValue("0");
		// Order/OrderHeader/TaxableAmount
		var myTaxableAmount = myOrderHeader.getFirstItem("TaxableAmount");
			myTaxableAmount.putValue("0");
		// Order/OrderBody
		var myOrderBody = myOrder.getFirstItem("OrderBody");
		// Order/OrderBody/OrderLines
		var myOrderLines = myOrderBody.getFirstItem("OrderLines");
			myOrderLines.count= "0";
		// Order/OrderSummary
		var myOrderSummary = myOrder.getFirstItem("OrderSummary");
		// Order/OrderSummary/LinesTotal
		var myLinesTotal = myOrderSummary.getFirstItem("LinesTotal");
			myLinesTotal.net = "0";
			myLinesTotal.VAT = "0";
			myLinesTotal.gross = "0";
		var myConfig = XML.getFirstItem("Config");
		
		for(var i=0;i<myOrderLines.childNodes.length;i++){
			myOrderLines.count = parseInt(myOrderLines.count) + 1;
			// Fill Entry Array with OrderLines childs ( Lines )
			Entry[i] = myOrderLines.childNodes[i];
			// check if amount greater than 0
			if(parseInt(Entry[i].getFirstItem("QuantityOrdered").amount)<=0) Entry[i].getFirstItem("QuantityOrdered").amount = 1;
			myQuantityOrdered	= Entry[i].getFirstItem("QuantityOrdered");
			myInternal			= Entry[i].getFirstItem("Internal");
			myTax					= Entry[i].getFirstItem("Tax");
			myPrice				= Entry[i].getFirstItem("Price");
				myNet				= myPrice.getFirstItem("Net");
				myGross			= myPrice.getFirstItem("Gross");
			myDiscount			= Entry[i].getFirstItem("Discount");
			myVariants			= Entry[i].getFirstItem("Variants");
			myVariants.childNodes = new Array();
			// update routine for taxrates
			myTax.rate = taxarea[myConfig.taxarea][parseInt(myTax.taxclass) + 1]
			//
			Entry[i].number = i + 1;
			Entry[i] = calcDiscount(Entry[i]);
			// setup variants
			arrVariants = myInternal.variants.split("@");
			for(var j=0;j<arrVariants.length-1;j++){
				aVariant = new clsObject("Variant");
				aVariant.type = arrVariants[j].split(";")[0];
				aVariant.value = arrVariants[j].split(";")[1];
				myVariants.addObject(aVariant);
				};	
			// Order/OrderHeader/TotalWeight
			myTotalWeight.putValue(parseFloat(myTotalWeight.getValue())
				+ parseFloat(Entry[i].getFirstItem("Weight").amount) * parseInt(myQuantityOrdered.amount) );
			// Order/OrderHeader/TaxableAmount
			myTaxableAmount.putValue(parseFloat(myTaxableAmount.getValue())
				+ parseFloat(myNet.getFirstItem("LineTotal").getValue()));
			myLinesTotal.net = parseFloat(myLinesTotal.net)
				+ parseFloat(myNet.getFirstItem("LineTotal").getValue());
			myLinesTotal.gross = parseFloat(myLinesTotal.gross)
				+ parseFloat(myGross.getFirstItem("LineTotal").getValue());
			// Print
			Entry[i].addMethod(TElementPrint,"Print");
			};
		};
// 12060
	function DisplayShoppingCart(isOrderform){
		if(Entry.length>0){
			var myOrder = XML.getFirstItem("Order");
			var myOrderSummary = myOrder.getFirstItem("OrderSummary");
			var myLinesTotal = myOrderSummary.getFirstItem("LinesTotal");
			var myFreight = myOrderSummary.getFirstItem("Freight");
			var myPayment = myOrder.getFirstItem("OrderHeader").getFirstItem("PaymentMethod").getFirstItem("Charge")
			var result = "<form name=\"ProductIndex\" onSubmit=\"return false;\">"; 
			for(var i=0;i<Entry.length;i++) result += Entry[i].Print(isOrderform);
			if(boolDisplTaxIncl){
				tmpTemporaryValue = parseFloat(XML.getFirstItem("Order").getFirstItem("OrderSummary").getFirstItem("LinesTotal").gross);
				if(!isOrderform){
					tmpTemporaryTax = parseFloat(myLinesTotal.gross) - parseFloat(myLinesTotal.net);
					tmpFreightChargeTax = parseFloat(myFreight.gross) - parseFloat(myFreight.net);
					tmpFreightCharge = parseFloat(myFreight.gross);
					tmpPaymentCharge = parseFloat(myPayment.gross);
					tmpPaymentChargeTax = parseFloat(myPayment.gross) - parseFloat(myPayment.net);
					tmpTotal = tmpTemporaryValue + tmpFreightCharge + tmpPaymentCharge;
					};
				}
			else{
				tmpTemporaryValue = parseFloat(XML.getFirstItem("Order").getFirstItem("OrderSummary").getFirstItem("LinesTotal").net);
				if(!isOrderform){
					tmpTemporaryTax = parseFloat(myLinesTotal.gross) - parseFloat(myLinesTotal.net);
					tmpFreightCharge = parseFloat(myFreight.net);
					tmpFreightChargeTax = parseFloat(myFreight.gross) - parseFloat(myFreight.net);
					tmpPaymentCharge = parseFloat(myPayment.net);
					tmpPaymentChargeTax = parseFloat(myPayment.gross) - parseFloat(myPayment.net);
					tmpTotal = tmpTemporaryValue + tmpTemporaryTax + tmpFreightCharge + tmpFreightChargeTax + tmpPaymentCharge + tmpPaymentChargeTax;
					};
				};
			if(!isOrderform) var myColspan=6
			else var myColspan=7;
			result += '<tr><td colspan="' + (myColspan + 1).toString() + '" bgcolor="#00339a" ></td>';
			result += '<tr><td colspan="' + myColspan + '" align="right"><strong>'
				+ 'Subtotal&nbsp;' + objPriCurrency.charCurrency  // Text for subtotal
				+ '</strong></td><td  class="BSFOOT" align="right" nowrap><strong>'
				+ TFormatCurrencyOnly(tmpTemporaryValue, objPriCurrency)
				+ '</strong></td></tr>';
			if(!isOrderform){
				result += '<tr><td colspan="' + myColspan + '" align="right"><strong>'
					+ 'Shipping Costs&nbsp;' + objPriCurrency.charCurrency  // Text for Versandkosten
					+ '</strong></td><td  class="BSFOOT" align="right" nowrap><strong>'
					+ TFormatCurrencyOnly(tmpFreightCharge, objPriCurrency)
					+ '</strong></td></tr>';
				result += '<tr><td colspan="' + myColspan + '" align="right"><strong>'
					+ 'Mode of Payment Fees&nbsp;' + objPriCurrency.charCurrency  // Text for Payment Charge
					+ '</strong></td><td  class="BSFOOT" align="right" nowrap><strong>'
					+ TFormatCurrencyOnly(tmpPaymentCharge, objPriCurrency)
					+ '</strong></td></tr>';
					if(boolDisplTaxIncl){
						result += '<tr><td colspan="' + myColspan + '" align="right"><strong>'
							+ 'Included VAT&nbsp;' + objPriCurrency.charCurrency  // Text for Included Tax
							+ '</strong></td><td  class="BSFOOT" align="right" nowrap><strong>'
							+ TFormatCurrencyOnly(tmpTemporaryTax + tmpFreightChargeTax + tmpPaymentChargeTax, objPriCurrency)
							+ '</strong></td></tr>';
						}
					else{
						result += '<tr><td colspan="' + myColspan + '" align="right"><strong>'
							+ 'VAT&nbsp;' + objPriCurrency.charCurrency  // Text for Added Tax
							+ '</strong></td><td  class="BSFOOT" align="right" nowrap><strong>'
							+ TFormatCurrencyOnly(tmpTemporaryTax + tmpFreightChargeTax + tmpPaymentChargeTax, objPriCurrency)
							+ '</strong></td></tr>';
						};
				result += '<tr><td colspan="' + myColspan + '" align="right"><strong>'
					+ 'Final Amount&nbsp;' + objPriCurrency.charCurrency
					+ '</strong></td><td  class="BSFOOT" align="right" nowrap><strong>'
					+ TFormatCurrencyOnly(tmpTotal, objPriCurrency)
					+ '</strong></td></tr>';
				};
			if(isOrderform){
				if(boolDisplSecCurr){
					result += '<tr><td colspan="' + myColspan + '" align="right"><strong>'
						+ 'Alternative&nbsp;' + objSecCurrency.charCurrency // Tax inclusive or additive
						+ '</strong></td><td  class="BSFOOT" align="right"> '
						+ TFormatCurrencyOnly(tmpTemporaryValue, objSecCurrency)
						+ '</td></tr>';
					}
				}
			else{
				if(boolDisplSecCurr){
					result += '<tr><td colspan="' + myColspan + '" align="right"><strong>'
						+ 'Alternative&nbsp;' + objSecCurrency.charCurrency // Tax inclusive or additive
						+ '</strong></td><td  class="BSFOOT" align="right"> '
						+ TFormatCurrencyOnly(tmpTotal, objSecCurrency)
						+ '</td></tr>';
					}
				};
			result += "</form>";
			return result;
			};
		return "<table class=\"bs\"><tr><td>Your order form is empty...</td></tr></table>";
		};
//
function reload(){
	safeData();
	location.href="orderform.htm";
	};
// 12065
	function delShoppingCart(){
		var msg = "Are you sure you want to delete your shopping basket?";
		if(confirm(msg)){
			XML.getFirstItem("Order").getFirstItem("OrderBody").getFirstItem("OrderLines").childNodes = new Array();
			reload();
			};
		};
// 12067
	function redirectCheckOut(){
		myLinesTotal = XML.getFirstItem("Order").getFirstItem("OrderSummary").getFirstItem("LinesTotal");
		if(boolDisplTaxIncl) var myMinvalue = myLinesTotal.gross
		else var myMinvalue = myLinesTotal.net;
		if(Entry.length>0&&parseFloat(myMinvalue)>=parseFloat(minOrderValue)){
			safeData();
			document.location.href="pchase_custinfo.htm";
			};
		if(!(parseFloat(myMinvalue)>=parseFloat(minOrderValue))){
			alert("Below minimum order value. The minimum order value is "
				+ TFormatCurrency(minOrderValue,objPriCurrency));
			};
		};
// 12070
	var Entry = new Array();
// 12110
	setupShoppingCartEntries();
// 12120
	XML.getFirstItem("Config").getFirstItem("SearchEngine").mode = 0;
// 12140
	var minOrderMsg = "Below minimum order amount. The minimum order amount is now being adjusted.";
// 12140
function callpage(address, defValues, NavIndex){
	myConfig = XML.getFirstItem("Config");
	myConfig.getFirstItem("QueryStringData").putValue(defValues);
	myConfig.getFirstItem("NavigationIndex").putValue((NavIndex).toString());
	safeData();
	location.href = address;
	};
