// utility function to retrieve an expiration date in proper
// format; pass three integer parameters for the number of days, hours,
// and minutes from now you want the cookie to expire (or negative
// values for a past date); all three parameters are required,
// so use zeros where appropriate
function getExpDate(days, hours, minutes) {
    var expDate = new Date( );
    if (typeof days == "number" && typeof hours == "number" && 
        typeof hours == "number") {
        expDate.setDate(expDate.getDate( ) + parseInt(days));
        expDate.setHours(expDate.getHours( ) + parseInt(hours));
        expDate.setMinutes(expDate.getMinutes( ) + parseInt(minutes));
        return expDate.toGMTString( );
    }
}
   
// utility function called by getCookie( )
function getCookieVal(offset) {
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1) {
        endstr = document.cookie.length;
    }
    return unescape(document.cookie.substring(offset, endstr));
}
   
// primary function to retrieve cookie by name
function getCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg) {
            return getCookieVal(j);
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break; 
    }
    return "";
}
   
// store cookie value with optional details as needed
function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape (value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}
   
// remove the cookie by setting ancient expiration date
function deleteCookie(name,path,domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

//-----------------------------------------------------------------------
        function getQtyOrder(cookieName, partNo){
  	  var cookieValue = getCookie(cookieName);
  	  var retVal = 0;
  	  if (cookieValue){
  	    var orders = cookieValue.split("|");
  	    for (var i=0; i < orders.length; i++){
  	      var oneOrder = orders[i].split("__");
  	      if (partNo == oneOrder[0]){
  	        retVal = (oneOrder[4] * 1);
  	      }
  	    }
  	  }
  	  return retVal;
        }
        
        function addOneToOrder(cookieName, partNo){
  	  var cookieValue = getCookie(cookieName);
  	  if (cookieValue){
  	    var orders = cookieValue.split("|");
  	    var fullOrder = "";
  	    for (var i=0; i < orders.length; i++){
  	      var oneOrder = orders[i].split("__");
  	      if ( fullOrder != ""){
  	        fullOrder = fullOrder + "|";
  	      }
  	      if (partNo == oneOrder[0]){
  	        fullOrder = fullOrder + oneOrder[0] + "__" + oneOrder[1] + "__" + oneOrder[2] + "__" + oneOrder[3] + "__" + (getQtyOrder(cookieName, partNo) + 1);
  	      }else{
  	        fullOrder = fullOrder + oneOrder[0] + "__" + oneOrder[1] + "__" + oneOrder[2] + "__" + oneOrder[3] + "__" + oneOrder[4];
  	      }
  	    }
  	    setCookie (cookieName, fullOrder);
  	    displayOrder(cookieName, "shoppingCart");
  	  }
        }

        function subOneToOrder(cookieName, partNo){
  	  var cookieValue = getCookie(cookieName);
  	  var orders = cookieValue.split("|");
  	  var fullOrder = "";
  	  for (var i=0; i < orders.length; i++){
  	    var oneOrder = orders[i].split("__");
	      if ( fullOrder != ""){
		fullOrder = fullOrder + "|";
	      }
  	    if (partNo == oneOrder[0]){
  	      var qty = getQtyOrder(cookieName, partNo);
  	      if (qty>1){
  	        fullOrder = fullOrder + oneOrder[0] + "__" + oneOrder[1] + "__" + oneOrder[2] + "__" + oneOrder[3] + "__" + (qty - 1);
  	      }
  	    }else{
  	      fullOrder = fullOrder + oneOrder[0] + "__" + oneOrder[1] + "__" + oneOrder[2] + "__" + oneOrder[3] + "__" + oneOrder[4];
  	    }
  	  }
  	  setCookie (cookieName, fullOrder);
  	  displayOrder(cookieName, "shoppingCart");
        }

	function addToCookie(itemNo, someString, cookieName){
	  var cookieValue = getCookie(cookieName);
	  var orderParts = someString.split("__");
	  if (getQtyOrder(cookieName, orderParts[0]) == 0){
	    if (!cookieValue){
	      setCookie (cookieName, someString);
	    }else{
	      cookieValue += "|" + someString;
	      setCookie (cookieName, cookieValue);
	    }
	  }
	  addOneToOrder(cookieName, orderParts[0]);
	  displayOrder(cookieName, "shoppingCart");
	}
	
	function showOrder(cookieName){

        var popText = document.getElementById("shoppingCart");
        popText.innerHTML = getOrderHTML(cookieName);
        //popText.style.left = 200;
        //popText.style.top = 100;
        popText.style.visibility = "visible";
	  
	}
	
	function clearOrder(cookieName){
	  deleteCookie(cookieName);
	}

       function getOrderHTML(cookieName){
  	  var cookieValue = getCookie(cookieName);
  	  var textToDisplay ="<table border=\"0\" width=\"200\" cellspacing=\"0\" cellpadding=\"0\" class=\"sechanddetailtable\">";
  	  //images/menu1-right.jpg
  	  textToDisplay +="<tr>";
  	  //textToDisplay +="<th class=\"shDettabHeaders\">" + "Part Number" + "</th>";
  	  textToDisplay +="<th class=\"shDettabHeaders\">" + "Part Name" + "</th>";
  	  textToDisplay +="<th class=\"shDettabHeaders\">" + "Price (ex VAT)" + "</th>";
  	  textToDisplay +="<th colspan=\"2\" class=\"shDettabHeaders\">" + "Qty" + "</th>";
  	  textToDisplay +="</tr>";

  	  if (cookieValue){
  	    var orders = cookieValue.split("|");
  	  
    	    //textToDisplay += "Part Number | Part Name\n"; 
  	    for (var i=0; i < orders.length; i++){
  	      var oneOrder = orders[i].split("__");
  	      //alert("Part Number: " + oneOrder[0] + ", Part Name: " + oneOrder[1]);
  	      textToDisplay +="<tr>";
  	      //textToDisplay +="<td>" + oneOrder[0] + "</td>";
  	      textToDisplay +="<td>" + oneOrder[1] + "</td>";
  	      textToDisplay +="<td align=\"right\">" + oneOrder[2] + "</td>";
  	      textToDisplay +="<td align=\"right\"><p>&nbsp;" + oneOrder[4] + "</td>";
  	      textToDisplay +="<td align=\"right\"><p>";
  	      textToDisplay += "<img src=\"images/updownup.jpg\"  onclick=\"addOneToOrder('" + cookieName + "','" + oneOrder[0] + "')\" /><br />";
  	      textToDisplay += "<img src=\"images/updowndown.jpg\"  onclick=\"subOneToOrder('" + cookieName + "','" + oneOrder[0] + "')\" />";
  	      textToDisplay += "</p>";
  	      textToDisplay += "</td>";
  	      textToDisplay +="</tr>";
  	      //textToDisplay += oneOrder[0] + " | " + oneOrder[1] + "\n";
  	    
  	    }
  	  }
  	  textToDisplay +="</table>";
  	  return textToDisplay;
  	}

	function trim(str)
	{
	   return str.replace(/^\s*|\s*$/g,"");
	}
	
       function getPureValue(mixedText){
         var mixedTextTmp = trim(mixedText);

         var retVal = 0;

         if (mixedTextTmp[0]=="%"){
           retVal = trim(mixedTextTmp.substring(1, mixedTextTmp.length));
         }else if (mixedTextTmp[mixedTextTmp.length -1]=="%"){
           retVal = trim(mixedTextTmp.substring(0, mixedTextTmp.length - 1));
         }else if (mixedTextTmp[0]=="€"){
           retVal = trim(mixedTextTmp.substring(1, mixedTextTmp.length));
         }else if (mixedTextTmp[mixedTextTmp.length -1]=="€"){
           retVal = trim(mixedTextTmp.substring(0, mixedTextTmp.length - 1));
         }else{
           retVal = mixedTextTmp;
         }
         return retVal;
       }       
       
       function getOrderHTMLFinal(cookieName){
  	  var cookieValue = getCookie(cookieName);
  	  var textToDisplay ="<table border=\"0\" width=\"600\" cellspacing=\"0\" cellpadding=\"0\" class=\"sechanddetailtable\">";
  	  var fullTotal = 0;
  	  //images/menu1-right.jpg
  	  textToDisplay +="<tr>";
  	  //textToDisplay +="<th class=\"shDettabHeaders\">" + "Part Number" + "</th>";
  	  textToDisplay +="<th class=\"shDettabHeaders\" width=\"300\">" + "Part Name" + "</th>";
  	  textToDisplay +="<th class=\"shDettabHeaders\" width=\"100\">" + "Price (ex VAT)" + "</th>";
  	  textToDisplay +="<th class=\"shDettabHeaders\" width=\"50%\">" + "VAT" + "</th>";
  	  textToDisplay +="<th class=\"shDettabHeaders\" width=\"50%\">" + "Qty" + "</th>";
  	  textToDisplay +="<th class=\"shDettabHeaders\" width=\"100%\">" + "Total" + "</th>";
  	  textToDisplay +="</tr>";

  	  if (cookieValue){
  	    var orders = cookieValue.split("|");
  	  
    	    //textToDisplay += "Part Number | Part Name\n"; 
  	    for (var i=0; i < orders.length; i++){
  	      var oneOrder = orders[i].split("__");
  	      //alert("Part Number: " + oneOrder[0] + ", Part Name: " + oneOrder[1]);
  	      textToDisplay +="<tr>";
  	      //textToDisplay +="<td>" + oneOrder[0] + "</td>";
  	      textToDisplay +="<td>" + oneOrder[1] + "</td>";
  	      textToDisplay +="<td align=\"right\">&nbsp;" + oneOrder[2] + "</td>";
  	      textToDisplay +="<td align=\"right\">&nbsp;" + oneOrder[3] + "</td>";
  	      textToDisplay +="<td align=\"right\"><p>&nbsp;" + oneOrder[4] + "</td>";
  	      
  	      
  	      var price = 0;
  	      if ( (oneOrder[2])&&(oneOrder[2]!="")){
  	        price = getPureValue(oneOrder[2]) * 1.0;
  	      }
  	      
  	      var vat = 1;
  	      if ( (oneOrder[3])&&(oneOrder[3]!="")){
  	        vat = getPureValue(oneOrder[3]) * 1.0;
  	      }
  	      
  	      var quantity = oneOrder[4] * 1.0;
  	      
  	      var total = (price + (price * vat /100) ) * quantity;
  	      fullTotal += total;
  	      textToDisplay +="<td align=\"right\"><p>&nbsp;€" + total.toFixed(2) + "</td>";
  	      textToDisplay +="</tr>";
  	      //textToDisplay += oneOrder[0] + " | " + oneOrder[1] + "\n";
  	    
  	    }
	    textToDisplay +="<tr>";
  	      textToDisplay +="<td style=\"border: 1px solid #000000;\" colspan=\"4\" align=\"right\"><p style=\"font-weight: bold;\">&nbsp;Total" +  "</td>";
  	      textToDisplay +="<td style=\"border: 1px solid #000000;\" align=\"right\"><p style=\"font-weight: bold;\">&nbsp;€" + fullTotal.toFixed(2) + "</td>";
	    textToDisplay +="</tr>";
  	  }
  	  textToDisplay +="</table>";
  	  return textToDisplay;
  	}

       function getOrderText(cookieName){
  	  var cookieValue = getCookie(cookieName);
  	  var orders = cookieValue.split("|");
  	  //var textToDisplay ="<table>";
  	  var textToDisplay ="";
  	  //textToDisplay +="<tr>";
  	  //textToDisplay +="<th>" + "Part Number" + "</th>";
  	  //textToDisplay +="<th>" + "Part Name" + "</th>";
  	  //textToDisplay +="</tr>";
  	  textToDisplay += "Part Number | Part Name | Price | Quantity\n"; 
  	  for (var i=0; i < orders.length; i++){
  	    var oneOrder = orders[i].split("__");
  	    //alert("Part Number: " + oneOrder[0] + ", Part Name: " + oneOrder[1]);
  	    //textToDisplay +="<tr>";
  	    //textToDisplay +="<td>" + oneOrder[0] + "</td>";
  	    //textToDisplay +="<td>" + oneOrder[1] + "</td>";
  	    //textToDisplay +="</tr>";
  	    textToDisplay += oneOrder[0] + " | " + oneOrder[1] + " | " + oneOrder[2] + " | " + oneOrder[4] + "\n";
  	    
  	  }
  	  //textToDisplay +="</table>";
  	  return textToDisplay;
  	}
	
	function displayOrder(cookieName, divId){
	  var myDisplayDiv = document.getElementById(divId);
	  if (myDisplayDiv){
	    myDisplayDiv.innerHTML = getOrderHTML(cookieName);
	  }
	}