//=====================================================================||
//               NOP Design JavaScript Shopping Cart                   ||
//                                                                     ||
// For more information on SmartSystems, or how NOPDesign can help you ||
// Please visit us on the WWW at http://www.nopdesign.com              ||
//                                                                     ||
// Javascript portions of this shopping cart software are available as ||
// freeware from NOP Design.  You must keep this comment unchanged in  ||
// your code.  For more information contact FreeCart@NopDesign.com.    ||
//                                                                     ||
// JavaScript Shop Module, V.4.5.0  draft                              ||
//=====================================================================||
//
//                INSTALLED MODIFICATIONS   Thursday, April 08, 2004  RC 
//
// Product selector
// Two taxes (FST & PST)
// Non-Taxable fields
// Quantity Limit field
// Quantity Limit applied to ChangeQuantity function
// Product cost extended total or shipping column
// Unable to order zero, negative or fractional quantities
// Odd/even background change in Cart tables
// Weight row and FST row toggled on/off automatically
// Calculated shipping costs
// PST/GST 3 button mod
//
//---------------------------------------------------------------------||
//                       Global Options                                ||
//                      ----------------                               ||
// Shopping Cart Options, you can modify these options to change the   ||
// the way the cart functions.                                         ||
//                                                                     ||
// Language Packs                                                      ||
// ==============                                                      ||
// You may include any language pack before nopcart.js in your HTML    ||
// pages to change the language.  Simply include a language pack with  ||
// a script src BEFORE the <SCRIPT SRC="nopcart_two_tax.js">... line.          ||
//  For example: <SCRIPT SRC="language-en.js"></SCRIPT>                ||
//                                                                     ||
// Options For Everyone:                                               ||
// =====================                                               ||
// * MonetarySymbol: string, the symbol which represents dollars/euro, ||
//   in your locale.                                                   ||
// * DisplayNotice: true/false, controls whether the user is provided  ||
//   with a popup letting them know their product is added to the cart ||
// * DisplayShippingColumn: true/false, controls whether the managecart||
//   and checkout pages display shipping cost column.                  ||
// * DisplayShippingRow: true/false, controls whether the managecart   ||
//   and checkout pages display shipping cost total row.               ||
// * DisplayTaxRow: true/false, controls whether the managecart        ||
//   and checkout pages display tax cost total row.                    ||
// * TaxRate: number, your area's current tax rate, ie: if your tax    ||
//   rate was 7.5%, you would set TaxRate = 0.075                      ||
// * TaxByRegion: true/false, when set to true, the user is prompted   ||
//   with TaxablePrompt to determine if they should be charged tax.    ||
//   In the USA, this is useful to charge tax to those people who live ||
//   in a particular state, but no one else.                           ||
// * TaxPrompt: string, popup message if user has not selected either  ||
//   taxable or nontaxable when TaxByRegion is set to true.            ||
// * TaxablePrompt: string, the message the user is prompted with to   ||
//   select if they are taxable.  If TaxByRegion is set to false, this ||
//   has no effect. Example: 'Arizona Residents'                       ||
// * NonTaxablePrompt: string, same as above, but the choice for non-  ||
//   taxable people.  Example: 'Other States'                          ||
// * MinimumOrder: number, the minium dollar amount that must be       ||
//   purchased before a user is allowed to checkout.  Set to 0.00      ||
//   to disable.                                                       ||
// * MinimumOrderPrompt: string, Message to prompt users with when     ||
//   they have not met the minimum order amount.                       ||
//                                                                     ||
// Payment Processor Options:                                          ||
// ==========================                                          ||
// * PaymentProcessor: string, the two digit payment processor code    ||
//   for support payment processor gateways.  Setting this field to    ||
//   anything other than an empty string will override your OutputItem ||
//   settings -- so please be careful when receiving any form data.    ||
//   Support payment processor gateways are:                           ||
//    * Authorize.net (an)                                             ||
//    * Worldpay      (wp)                                             ||
//    * LinkPoint     (lp)
//                                                                     ||
// Options For Programmers:                                            ||
// ========================                                            ||
// * OutputItem<..>: string, the name of the pair value passed at      ||
//   checkouttime.  Change these only if you are connecting to a CGI   ||
//   script and need other field names, or are using a secure service  ||
//   that requires specific field names.                               ||
// * AppendItemNumToOutput: true/false, if set to true, the number of  ||
//   each ordered item will be appended to the output string.  For     ||
//   example if OutputItemId is 'ID_' and this is set to true, the     ||
//   output field name will be 'ID_1', 'ID_2' ... for each item.       ||
// * HiddenFieldsToCheckout: true/false, if set to true, hidden fields ||
//   for the cart items will be passed TO the checkout page, from the  ||
//   ManageCart page.  This is set to true for CGI/PHP/Script based    ||
//   checkout pages, but should be left false if you are using an      ||
//   HTML/Javascript Checkout Page. Hidden fields will ALWAYS be       ||
//   passed FROM the checkout page to the Checkout CGI/PHP/ASP/Script  ||
//---------------------------------------------------------------------||

//Options for Everyone:

// MonetarySymbol     = '£'; 
MonetarySymbol        = '$';
DisplayNotice         = true;
DisplayShippingColumn = false;	// false displays product total (extension)
DisplayShippingRow    = false;		// toggles shipping row on or off
DisplayTaxRow         = true;		// TaxByRegion must also be false
TaxByRegion           = true;		// if true overrides DisplayTaxRow = false setting 
FstRate               = 0.06;		// FST row is off when FstRate = 0
TaxRate               = 0.08;   // State or Provincial Sales Tax Rate
ShippingFstRate       = 0.00;   // Federal Sales Tax Rate applied to shipping costs
ShippingTaxRate       = 0.00;   // State Sales Tax Rate applied to shipping costs
WeightUnits           = "Kilograms"   // Unit of measurement oz, lbs, Kilograms, grams
TaxPrompt             = 'For tax purposes, please select if you are an Ontario resident before continuing';


TaxablePrompt         = 'Ontario Residents'; //Tax by Region Radio button
TaxablePrompt2        = 'Other Canadians';  //Tax by Region Radio button
NonTaxablePrompt      = 'Other Countries';  //Tax by Region Radio button
MinimumOrder          =  0.01;	  // prevents Checkout below minimum Order amount
MinimumOrderPrompt    = '\nOpps! Your Cart is either empty or below the minimum order!\n\n Please increase your order before going through the checkout.\n\n';

//Payment Processor Options:
PaymentProcessor      = '';

//Options for Programmers: 
OutputItemId          = 'ID_'; 
OutputItemQuantity    = 'QUANTITY_'; 
OutputItemPrice       = 'PRICE_'; 
OutputItemName        = 'NAME_'; 
OutputItemShipping    = 'shipping_'; 
OutputItemAddtlInfo   = 'ADDTLINFO_'; 
OutputOrderSubtotal   = 'SUBTOTAL'; 
OutputOrderShipping   = 'SHIPPING';
OutputOrderZone       = "ZONE"
OutputOrderFst        = 'GST';
OutputOrderTax        = 'TAX';
OutputOrderTotal      = 'TOTAL';
AppendItemNumToOutput = true;
HiddenFieldsToCheckout = true;


//=====================================================================||
//---------------------------------------------------------------------||
//    YOU DO NOT NEED TO MAKE ANY MODIFICATIONS BELOW THIS LINE        ||
//---------------------------------------------------------------------||
//=====================================================================||


//---------------------------------------------------------------------||
//                      Language Strings                               ||
//                     ------------------                              ||
// These strings will not be used unless you have not included a       ||
// language pack already.  You should NOT modify these, but instead    ||
// modify the strings in language-**.js where ** is the language pack  ||
// you are using.                                                      ||
//---------------------------------------------------------------------||
if ( !bLanguageDefined ) {
strSorry  = "I'm Sorry, your cart is full, please proceed to checkout.";
strAdded  = " added to your shopping cart.";
strRemove = "Click 'Ok' to remove this product from your shopping cart.";
strEmpty  = "Your cart is empty!";
strILabel = "Prod Id";
strDLabel = "Description";
strQLabel = "Qty";
strPLabel = "Price each";
strPTLabel= "Price total";
strRLabel = "Remove";
strSLabel = "Shipping";
strWLabel = "Weight";
strRButton= "Remove";
strSUB    = "SUBTOTAL";
strSHIP   = "SHIPPING";
strFST    = "FEDERAL SALES TAX";
strTAX    = "PROVINCIAL SALES TAX";
strWTOT   = "WEIGHT"
strTOT    = "TOTAL";
strErrQty = "Invalid Quantity.";
strNewQty = 'Please enter new quantity:';
strSpace  = "   ";
Language = 'en';
bLanguageDefined = false; // true;
}
strUSERENTRY = "";
strWEIGHT    = "";
strQTY       = "";
TAXABLE      = true ;
strTAXABLE   = true ;
FSTAXABLE    = true ;
strFSTAXABLE = true ;
strALLTAX    = "TOTAL TAX"; // used in managecart table
strALLTAX2    = "TOTAL TAX";	 // used in checkout table

//---------------------------------------------------------------------||
// FUNCTION:    checkCR                                                ||
// PARAMETERS:  Keypressed                                             ||
// RETURNS:     keypressed                                             ||
// PURPOSE:     To block return (Enter) key pressed when using forms   ||
// =======================================================================
// function checkCR(evt) {
// var evt  = (evt) ? evt : ((event) ? event : null);
// var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
// if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
//   }
// document.onkeypress = checkCR;

//---------------------------------------------------------------------||
// FUNCTION:    CKquantity                                             ||
// PARAMETERS:  Quantity to                                            ||
// RETURNS:     Quantity as a number, and possible alert               ||
// PURPOSE:     Make sure quantity is represented as a number          ||
// =======================================================================
function CKquantity(checkString) {
var strNewQuantity = "";


for ( i = 0; i < checkString.length; i++ ) {
	ch = checkString.substring(i, i+1);
	if ( (ch >= "0" && ch <= "9") || (ch == '.') )
	strNewQuantity += ch;
   }

if ( 	strNewQuantity.length < 1 )
	strNewQuantity = "1";

	if ( 	strNewQuantity < 1 )
	strNewQuantity = "1";

			if ( strNewQuantity.charAt(0)==0){
			strNewQuantity = strNewQuantity.substring(1, strNewQuantity.length);}
			
return(strNewQuantity);
}


//---------------------------------------------------------------------||
// FUNCTION:    AddOneOfManyToCart                                     ||
// PARAMETERS:  Form Object PRODUCTSELECTOR                            ||
// RETURNS:     Product parameters to order form                       ||
// PURPOSE:     selects one of many products with different size,      ||
//              cost, shipping and/or tax to add to shopping cart      ||
//---------------------------------------------------------------------||
function AddOneOfManyToCart(formToUpdate) 
{ 

   selectedObj = formToUpdate.PRODUCTSELECTOR[formToUpdate.PRODUCTSELECTOR.selectedIndex]; 

   nameVal = selectedObj.getAttribute("name"); 
   if (nameVal == "select") { 
      alert('Please select an option'); 
      return false; 
   } 

   formToUpdate.NAME.value = nameVal; 

   costVal = selectedObj.getAttribute("cost"); 
   formToUpdate.PRICE.value = costVal; 


   id_numVal = selectedObj.getAttribute("id_num"); 
   formToUpdate.ID_NUM.value = id_numVal; 

if (formToUpdate.SHIPPING == null)
	formToUpdate.SHIPPING.value = 0.00;
shippingVal = selectedObj.getAttribute("shipping");
if (( isNaN(shippingVal)) || (shippingVal == null)) shippingVal = "0.00";
formToUpdate.SHIPPING.value = shippingVal;

if (formToUpdate.WEIGHT == null)
formToUpdate.WEIGHT.value = 0.00;
weightVal = selectedObj.getAttribute("weight");
if (( isNaN(weightVal)) || (weightVal == null)) weightVal = "0.00";
formToUpdate.WEIGHT.value = weightVal;

   if (formToUpdate.FSTAXABLE == null) 
	      formToUpdate.FSTAXABLE = true; 

				
   if (formToUpdate.TAXABLE == null) 
	      formToUpdate.TAXABLE = true; 

   if (formToUpdate.LIMIT == null) 
	     formToUpdate.LIMIT = 100000;
			else 
   var limitVal = selectedObj.getAttribute("limit"); 
   formToUpdate.LIMIT.value = limitVal;
				

   switch( formToUpdate.PRODUCTSELECTOR[formToUpdate.PRODUCTSELECTOR.selectedIndex].value ) { 
   } 
   AddToCart(formToUpdate); 
} 


//---------------------------------------------------------------------||
// FUNCTION:    AddToCart                                              ||
// PARAMETERS:  Form Object                                            ||
// RETURNS:     Cookie to user's browser, with prompt                  ||
// PURPOSE:     Adds a product to the user's shopping cart             ||
//---------------------------------------------------------------------||
function AddToCart(thisForm) {
   iNumberOrdered     = 0;
   var bAlreadyInCart = false;
   var notice         = "";
	 var strQTYLIMIT    = 9;
   var i              = 0;
	 strProductId       = "";
   iNumberOrdered = GetCookie("NumberOrdered");
	 
	 if ( iNumberOrdered == null )
      iNumberOrdered = 0;

   if ( thisForm.ID_NUM == null )
      strID_NUM    = "000000";
   else {
      strID_NUM    = thisForm.ID_NUM.value;
			strProductId = strID_NUM.charAt(0);
			}
   if ( thisForm.FSTAXABLE == null) 
      strFSTAXABLE = true ;
	 else {
	  if ((thisForm.FSTAXABLE.value == "false") || (thisForm.FSTAXABLE.value == "FALSE")) 
      strFSTAXABLE = false ; 
   else  
      strFSTAXABLE = true ; 
			}
   if ( thisForm.TAXABLE == null) 
      strTAXABLE = true ;
	 else {
	  if ((thisForm.TAXABLE.value == "false") || (thisForm.TAXABLE.value == "FALSE")) 
      strTAXABLE = false ; 
   else  
      strTAXABLE = true ; 
			}
   if ( strProductId == 'd') {
      strFSTAXABLE = false ;
      strTAXABLE   = false ; 
			}

   if ( strProductId == 'n') {
      strTAXABLE   = false ; 
			}
   if ( thisForm.LIMIT == null ) {
      strQTYLIMIT  = 10000;
      } else {
	 if ((thisForm.LIMIT.value == "false" )||( thisForm.LIMIT.value == null )) {
	    strQTYLIMIT  = 10000;
      } else {
	    strQTYLIMIT  = thisForm.LIMIT.value;
      }
	}
	
   if ( thisForm.QUANTITY == null )
      strQUANTITY  = "1";
   else {
	 		strQUANTITY  = thisForm.QUANTITY.value;
		}

		if (parseInt(thisForm.QUANTITY.value)<= parseInt(strQTYLIMIT)) {
      strQUANTITY  = parseInt(thisForm.QUANTITY.value);
			} else {
			strQUANTITY = strQTYLIMIT;
			}	
   if ( thisForm.PRICE == null )
      strPRICE     = "0.00";
   else
      strPRICE     = thisForm.PRICE.value;

   if ( thisForm.NAME == null )
      strNAME      = "";
   else
      strNAME      = thisForm.NAME.value;

if((thisForm.SHIPPING==null)||(thisForm.SHIPPING.value==null)){
strSHIPPING="0.00";
}else{
strSHIPPING=thisForm.SHIPPING.value;
}
if((thisForm.WEIGHT==null)||(thisForm.WEIGHT.value==null)){
strWEIGHT="0";
}else{
strWEIGHT=thisForm.WEIGHT.value;
}

   if ( thisForm.ADDITIONALINFO == null ) {
      strADDTLINFO = " ";
   } else {
      strADDTLINFO = thisForm.ADDITIONALINFO[thisForm.ADDITIONALINFO.selectedIndex].value;
  		 }
 
   if ( thisForm.ADDITIONALINFO2 != null ) {
      strADDTLINFO += "; " + thisForm.ADDITIONALINFO2[thisForm.ADDITIONALINFO2.selectedIndex].value;
   }

   if ( thisForm.ADDITIONALINFO3 != null ) {
      strADDTLINFO += "; " + thisForm.ADDITIONALINFO3[thisForm.ADDITIONALINFO3.selectedIndex].value;
   }
 
   if ( thisForm.ADDITIONALINFO4 != null ) {
      strADDTLINFO += "; " + thisForm.ADDITIONALINFO4[thisForm.ADDITIONALINFO4.selectedIndex].value;
   }
if ( thisForm.USERENTRY != null ) {
		strUSERENTRY = thisForm.USERENTRY.value;
		if (strUSERENTRY =="enter name or leave blank") strUSERENTRY = "blank"; 
} 
if ( thisForm.USERENTRY2 != null ) { 
		strUSERENTRY += "; " + thisForm.USERENTRY2.value; 
} 
if ( thisForm.USERENTRY3 != null ) { 
		strUSERENTRY += "; " + thisForm.USERENTRY3.value; 
} 

   //Is this product already in the cart?  If so, increment quantity instead of adding another.
   for ( i = 1; i <= iNumberOrdered; i++ ) {
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);

      fields    = new Array(11);
      fields[0] = database.substring( 0, Token0 );        // Product ID
      fields[1] = database.substring( Token0+1, Token1 ); // Quantity
      fields[2] = database.substring( Token1+1, Token2 ); // Price
      fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description
      fields[4] = database.substring( Token3+1, Token4 ); // Shipping Cost
      fields[5] = database.substring( Token4+1, Token5 ); // Additional Information
      fields[6] = database.substring( Token5+1, Token6 ); // User Entry
      fields[7] = database.substring( Token6+1, Token7 ); // Weight
      fields[8] = database.substring( Token7+1, Token8 ); // Limit
      fields[9] = database.substring( Token8+1, Token9 ); // FSTaxable
      fields[10] = database.substring(Token9+1, database.length ); // Taxable

          strQTY = (parseInt(strQUANTITY)+parseInt(fields[1]));
			if (strQTY >	strQTYLIMIT	) strQTY = strQTYLIMIT;	 

      if ( fields[0] == strID_NUM &&
           fields[2] == strPRICE  &&
           fields[3] == strNAME   &&
           fields[5] == strADDTLINFO &&
           fields[6] == strUSERENTRY
         ) {
         bAlreadyInCart = true;
         dbUpdatedOrder = strID_NUM    + "|" +
                          strQTY       + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING  + "|" +
                          strADDTLINFO + "|" +
													strUSERENTRY + "|" +
                          strWEIGHT    + "|" +
                          strQTYLIMIT  + "|" +
													strFSTAXABLE + "|" +
                          strTAXABLE; 

													
         strNewOrder = "Order." + i;
         DeleteCookie(strNewOrder, "/");
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
//      notice = strQUANTITY + " " + strNAME + " " + strADDTLINFO + " " + strAdded;
 notice = strAdded + "\n-------------------------------------------------------------------\n" + "Quantity inc by: " + strQUANTITY + "\nProduct  : " + strNAME + " " + strADDTLINFO + "\n" + strUSERENTRY;

        break;
      }
   }

   if ( !bAlreadyInCart ) {
      iNumberOrdered++;

			    strQTY = (parseInt(strQUANTITY));
			if (strQTY >	strQTYLIMIT	) strQTY = strQTYLIMIT;

      if ( iNumberOrdered > 15 )
         alert( strSorry );
      else {
         dbUpdatedOrder = strID_NUM    + "|" + 
                          strQTY       + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING  + "|" +
                          strADDTLINFO + "|" +
													strUSERENTRY + "|" +
                          strWEIGHT    + "|" +
                          strQTYLIMIT  + "|" +
													strFSTAXABLE + "|" +
                          strTAXABLE; 

         strNewOrder = "Order." + iNumberOrdered;
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         SetCookie("NumberOrdered", iNumberOrdered, null, "/");
//         notice = strQUANTITY + " " + strNAME + " " + strADDTLINFO + " " + strAdded;
notice = strAdded + "\n-------------------------------------------------------------------\n" + "Quantity : " + strQUANTITY + "\nProduct  : " + strNAME + " " + strADDTLINFO + "\n" + strUSERENTRY;
      }
   }

   if ( DisplayNotice && notice!='') 
	       alert(notice);
}


//---------------------------------------------------------------------||
// FUNCTION:    getCookieVal                                           ||
// PARAMETERS:  offset                                                 ||
// RETURNS:     URL unescaped Cookie Value                             ||
// PURPOSE:     Get a specific value from a cookie                     ||
//---------------------------------------------------------------------||
function getCookieVal (offset) {
   var endstr = document.cookie.indexOf (";", offset);

   if ( endstr == -1 )
      endstr = document.cookie.length;
   return(unescape(document.cookie.substring(offset, endstr)));
}


//---------------------------------------------------------------------||
// FUNCTION:    FixCookieDate                                          ||
// PARAMETERS:  date                                                   ||
// RETURNS:     date                                                   ||
// PURPOSE:     Fixes cookie date, stores back in date                 ||
//---------------------------------------------------------------------||
function FixCookieDate (date) {
   var base = new Date(0);
   var skew = base.getTime();

   date.setTime (date.getTime() - skew);
}


//---------------------------------------------------------------------||
// FUNCTION:    GetCookie                                              ||
// PARAMETERS:  Name                                                   ||
// RETURNS:     Value in Cookie                                        ||
// PURPOSE:     Retrieves cookie from users browser                    ||
//---------------------------------------------------------------------||
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(null);
}


//---------------------------------------------------------------------||
// FUNCTION:    SetCookie                                              ||
// PARAMETERS:  name, value, expiration date, path, domain, security   ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Stores a cookie in the users browser                   ||
//---------------------------------------------------------------------||
function SetCookie (name,value,expires,path,domain,secure) {
	var argv = SetCookie.arguments;  
	var argc = SetCookie.arguments.length;  
	var expires = (argc > 2) ? argv[2] : null;  
	var path = (argc > 3) ? argv[3] : null;  
	var domain = (argc > 4) ? argv[4] : null;  
	var secure = (argc > 5) ? argv[5] : false;  
   document.cookie = name + "=" + escape (value) +
                     ((expires) ? "; expires=" + expires.toGMTString() : "") +
                     ((path) ? "; path=" + path : "") +
                     ((domain) ? "; domain=" + domain : "") +
                     ((secure) ? "; secure" : "");
}


//---------------------------------------------------------------------||
// FUNCTION:    DeleteCookie                                           ||
// PARAMETERS:  Cookie name, path, domain                              ||
// RETURNS:     null                                                   ||
// PURPOSE:     Removes a cookie from users browser.                   ||
//---------------------------------------------------------------------||
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:    MoneyFormat                                            ||
// PARAMETERS:  Number to be formatted                                 ||
// RETURNS:     Formatted Number                                       ||
// PURPOSE:     Reformats Dollar Amount to #.## format                 ||
//---------------------------------------------------------------------||
function moneyFormat(input) {
   var dollars = Math.floor(input);
   var tmp = new String(input);

   for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ ) {
      if ( tmp.charAt(decimalAt)=="." )
         break;
   }

   var cents  = "" + Math.round(input * 100);
   cents = cents.substring(cents.length-2, cents.length)
           dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0;

   if ( cents.length <2 )
      cents = "0" + cents;

   return(dollars + "." + cents);
}


//---------------------------------------------------------------------||
// FUNCTION:    RemoveFromCart                                         ||
// PARAMETERS:  Order Number to Remove                                 ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Removes an item from a users shopping cart             ||
//---------------------------------------------------------------------||
function RemoveFromCart(RemOrder) {
   if ( confirm( strRemove ) ) {
      NumberOrdered = GetCookie("NumberOrdered");
      for ( i=RemOrder; i < NumberOrdered; i++ ) {
         NewOrder1 = "Order." + (i+1);
         NewOrder2 = "Order." + (i);
         database = GetCookie(NewOrder1);
         SetCookie (NewOrder2, database, null, "/");
      }
      NewOrder = "Order." + NumberOrdered;
      SetCookie ("NumberOrdered", NumberOrdered-1, null, "/");
      DeleteCookie(NewOrder, "/");
      location.href=location.href;
   }
}


//---------------------------------------------------------------------||
// FUNCTION:    ChangeQuantity                                         ||
// PARAMETERS:  Order Number to Change Quantity                        ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes quantity of an item in the shopping cart       ||
//---------------------------------------------------------------------||
function ChangeQuantity(OrderItem,NewQuantity) {
   if ( isNaN(NewQuantity) ) {
      alert( strErrQty );
   } else {
		 if (NewQuantity == 0 ){RemoveFromCart(OrderItem); return false;} 
	 	 if (NewQuantity < 1 ) 
         NewQuantity = 1;
      NewOrder = "Order." + OrderItem;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);

      fields    = new Array(11);
      fields[0] = database.substring( 0, Token0 );        // Product ID
      fields[1] = database.substring( Token0+1, Token1 ); // Quantity
      fields[2] = database.substring( Token1+1, Token2 ); // Price
      fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description
      fields[4] = database.substring( Token3+1, Token4 ); // Shipping Cost
      fields[5] = database.substring( Token4+1, Token5 ); // Additional Information
      fields[6] = database.substring( Token5+1, Token6 ); // User Entry
      fields[7] = database.substring( Token6+1, Token7 ); // Weight
      fields[8] = database.substring( Token7+1, Token8 ); // Limit
      fields[9] = database.substring( Token8+1, Token9 ); // FSTaxable
      fields[10] = database.substring( Token9+1, database.length ); // Taxable

			    strQTYLIMIT = (parseInt(fields[8]));
			if (NewQuantity >	strQTYLIMIT	) NewQuantity = strQTYLIMIT;	 

      dbUpdatedOrder = fields[0] + "|" +
                       NewQuantity + "|" +
                       fields[2] + "|" +
                       fields[3] + "|" +
                       fields[4] + "|" +
                       fields[5] + "|" +
                       fields[6] + "|" +
                       fields[7] + "|" +
                       fields[8] + "|" +
                       fields[9] + "|" +
                       fields[10];
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.href=location.href;      
   }
}


//---------------------------------------------------------------------||
// FUNCTION:    GetFromCart                                            ||
// PARAMETERS:  Null                                                   ||
// RETURNS:     Product Table Written to Document                      ||
// PURPOSE:     Draws current cart product table on HTML page          ||
//              **DEPRECATED FUNCTION, USE ManageCart or Checkout**    ||
//---------------------------------------------------------------------||
function GetFromCart( fShipping ) {
   ManageCart( );
}


//---------------------------------------------------------------------||
// FUNCTION:    RadioChecked                                           ||
// PARAMETERS:  Radio button to check                                  ||
// RETURNS:     True if a radio has been checked                       ||
// PURPOSE:     Form fillin validation                                 ||
//---------------------------------------------------------------------||
function RadioChecked( radiobutton ) {
   var bChecked = false;
   var rlen = radiobutton.length;
   for ( i=0; i < rlen; i++ ) {
      if ( radiobutton[i].checked )
         bChecked = true;
   }    
   return bChecked;
} 


//---------------------------------------------------------------------||
// FUNCTION:    QueryString                                            ||
// PARAMETERS:  Key to read                                            ||
// RETURNS:     value of key                                           ||
// PURPOSE:     Read data passed in via GET mode                       ||
//---------------------------------------------------------------------||
QueryString.keys = new Array();
QueryString.values = new Array();
function QueryString(key) {
   var value = null;
   for (var i=0;i<QueryString.keys.length;i++) {
      if (QueryString.keys[i]==key) {
         value = QueryString.values[i];
         break;
      }
   }
   return value;
} 

//---------------------------------------------------------------------||
// FUNCTION:    QueryString_Parse                                      ||
// PARAMETERS:  (URL string)                                           ||
// RETURNS:     null                                                   ||
// PURPOSE:     Parses query string data, must be called before Q.S.   ||
//---------------------------------------------------------------------||
function QueryString_Parse() {
   var query = window.location.search.substring(1);
   var pairs = query.split("&"); for (var i=0;i<pairs.length;i++) {
      var pos = pairs[i].indexOf('=');
      if (pos >= 0) {
         var argname = pairs[i].substring(0,pos);
         var value = pairs[i].substring(pos+1);
         QueryString.keys[QueryString.keys.length] = argname;
         QueryString.values[QueryString.values.length] = value;
      }
   }
}


//---------------------------------------------------------------------||
// FUNCTION:    ManageCart                                             ||
// PARAMETERS:  Null                                                   ||
// RETURNS:     Product Table Written to Document                      ||
// PURPOSE:     Draws current cart product table on HTML page          ||
//---------------------------------------------------------------------||
function ManageCart( ) {
   var iNumberOrdered = 0;    //Number of products ordered
   var fTotal         = 0;    //Total cost of order
	 var fprodttl       = 0; 		//Total product cost = QTY * PRICE
   var fFst           = 0;    //FST amount
   var fTax           = 0;    //Tax amount
   var fATax          = 0;    //Total of Both Taxes  
   var fShip          = 0;    //Shipping amount
   var fShipping      = 0;    //Calculated Shipping amount
	 var fWeight        = 0;		//Weight of items for shipping calculation 
	 var fItems         = 0;    //Sum of item Quantities
	 var LocationSelected = 99;
	 var LocationLabel  = "";
	 var TotWeight      = 0;
   var strTotal       = "";   //Total cost formatted as money
   var strFst         = "";   //Total FST formatted as money
   var strTax         = "";   //Total tax formatted as money
   var strATax        = "";   //Total both taxes formatted as money 
   var strShipping    = "";   //Total shipping formatted as money
   var strOutput      = "";   //String to be written to page
   var bDisplay       = true; //Whether to write string to the page (here for programmers)
   var strPP          = "";   //Payment Processor Description Field
	 var strProductId   = "";		//Used or non-taxable item identification

	 
   iNumberOrdered = GetCookie("NumberOrdered");
   if ( iNumberOrdered == null )
      iNumberOrdered = 0;

// ------------------- Manage Cart Table Header ------------------------------||
   if ( bDisplay )
				 		strOutput = 	"<TABLE CELLSPACING=0 CELLPADDING=2 WIDTH=600 BORDER=5 CLASS=\"nopcart\" summary=\"outside border\"><TR><TD>" +
"<TABLE CELLSPACING=0 CELLPADDING=0 WIDTH=596 BORDER=0 CLASS=\"nopcart\"><TR>" +			
"<TD WIDTH=55 CLASS=\"nopheader\"><strong>"+strILabel+"</strong></TD>" +			
"<TD ALIGN=\"CENTER\" CLASS=\"nopheader\" colspan=\"2\"><strong>"+strDLabel+"</strong></TD>" +			
"<TD WIDTH=30 ALIGN=\"center\" CLASS=\"nopheader\"><strong>"+strQLabel+"</strong></TD>" +			
"<TD WIDTH=55 ALIGN=\"center\" CLASS=\"nopheader\"><strong>"+strPLabel+"</strong></TD>";
if ( DisplayShippingColumn ) { strOutput += 
"<TD WIDTH=60 ALIGN=\"center\" CLASS=\"nopheader\"><strong>"+strSLabel+"</strong></TD>";
} else { strOutput += 
"<TD WIDTH=60 ALIGN=\"center\" CLASS=\"nopheader\"><strong>"+strPTLabel+"</strong></TD>";}
strOutput += "<TD  WIDTH=80 ALIGN=\"CENTER\" CLASS=\"nopheader\"><strong>"+strRLabel+"</strong></TD></TR>";


   if ( iNumberOrdered == 0 ) {
      strOutput += "<TR><TD COLSPAN=7 CLASS=\"nopentry\"><CENTER><BR><B>Your shopping cart is empty</B><BR><BR></CENTER></TD></TR>";
   strTotal       = "0.00";   //Total cost formatted as money
   strFst         = "0.00";   //Total gst formatted as money
   strTax         = "0.00";   //Total tax formatted as money
	 strATax        = "0.00";   //Total both taxes formatted as money 
   strShipping    = "0.00";   //Total shipping formatted as money

   }

   for ( i = 1; i <= iNumberOrdered; i++ ) {
			even = (i & 1);
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);
	msg2 ='[ '+i+' ] ';
			
      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);

      fields    = new Array(11);
      fields[0] = database.substring( 0, Token0 );        // Product ID
      fields[1] = database.substring( Token0+1, Token1 ); // Quantity
      fields[2] = database.substring( Token1+1, Token2 ); // Price
      fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description
      fields[4] = database.substring( Token3+1, Token4 ); // Shipping Cost
      fields[5] = database.substring( Token4+1, Token5 ); // Additional Information
      fields[6] = database.substring( Token5+1, Token6 ); // User Entry
      fields[7] = database.substring( Token6+1, Token7 ); // Weight
      fields[8] = database.substring( Token7+1, Token8 ); // Limit
      fields[9] = database.substring( Token8+1, Token9 ); // FSTaxable
      fields[10] = database.substring( Token9+1, database.length ); // Taxable

      fprodttl    = (parseInt(fields[1]) * parseFloat(fields[2]) );
      fTotal     += fprodttl;	             
      fItems     += parseInt(fields[1]);	  
			fWeight    += (parseInt(fields[1])* parseFloat(fields[7]) );
      fShip      += (parseInt(fields[1]) * parseFloat(fields[4]) );
			
			if( fields[9]  == "true" ) { fFst += ( fprodttl * FstRate); }
			if( fields[10] == "true" ) { fTax += ( fprodttl * TaxRate); }

		
// ------------------- Manage Cart Table Body -------------------------------||
if (even ^ 1 ) {noprow="nopeven";
	} else {noprow ="nopentry";
	} 			
if ( bDisplay ){
     
				strOutput += "<TR VALIGN=TOP CLASS=\"tblpadding5\"><TD CLASS=\""+noprow+"\">" + fields[0] + "</TD>";

         if ( (fields[5] != "") || (fields[6] != "") )
            strOutput += "<TD CLASS=\""+noprow+"\" colspan=\"2\">"  + fields[3] + " - <I>"+ fields[5] + "  "+ fields[6]+ "</I></TD>";
         else
            strOutput += "<TD CLASS=\""+noprow+"\" colspan=\"2\">"  + fields[3] + "</TD>";

         strOutput += "<TD CLASS=\""+noprow+"\" align=\"right\"><A style=\"text-decoration: none; font-size: 133%;\" HREF=\"javascript: ChangeQuantity("+i+", (("+fields[1]+")-1));\"><b> - </b></a><INPUT TYPE=TEXT NAME=Q SIZE=1 VALUE=\"" + fields[1] + "\" onChange=\"ChangeQuantity("+i+", this.value);\"><A style=\"text-decoration: none; font-size: 100%;\" HREF=\"javascript: ChangeQuantity("+i+", (("+fields[1]+")+1));\"><b> + </b></a></TD>";
         strOutput += "<TD ALIGN=RIGHT CLASS=\""+noprow+"\">"+ MonetarySymbol + moneyFormat(fields[2]) + "</TD>";

// Either display Shipping Column or extended price column
         if ( DisplayShippingColumn ) {
            if ( parseFloat(fields[4]) > 0 )
               strOutput += "<TD CLASS=\""+noprow+"\">"+ MonetarySymbol + moneyFormat(fields[4]) + "/ea </TD>";
            else
               strOutput += "<TD CLASS=\""+noprow+"\" ALIGN=\"center\">N/A</TD>";
         }
	else {
		strOutput += "<TD ALIGN=RIGHT CLASS=\""+noprow+"\">"+ MonetarySymbol + moneyFormat(fprodttl) + "</TD>";
         }

   strOutput += "<TD CLASS=\""+noprow+"\" ALIGN=right VALIGN=middle><input type=button class=\"butforme\" onmousedown=\"this.className='butformy'\" onmouseup=\"this.className='butforme'\" onmouseover=\"this.className='butformx'\" onmouseout=\"this.className='butforme'\" value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\"></TD></TR>";
}

// ------------------- End of ManageCart Table Body --------------------------||

      if ( AppendItemNumToOutput ) {
         strFooter = i;
      } else {
         strFooter = "";
      }
      if ( HiddenFieldsToCheckout ) {
         strOutput += "<input type=hidden name=\"" + OutputItemId        + strFooter + "\" value=\"" + fields[0] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemQuantity  + strFooter + "\" value=\"" + fields[1] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemPrice     + strFooter + "\" value=\"" + fields[2] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemName      + strFooter + "\" value=\"" + fields[3] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemShipping  + strFooter + "\" value=\"" + fields[4] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">";
      }

   }

// --------------------- Start of ManageCart Table Footer -----------------------||
// -- Calculate shipping by Zone, Quantity, weight, value, Shipping (fields[4] --||

      fShipping = ComputeShipping(LocationSelected, fItems, fWeight, fTotal, fShip); 

      fShipping += ((fShipping * ShippingFstRate)+ (fShipping * ShippingTaxRate));
			if (fTotal == 0) fShipping = 0.00;
			fATax       = fFst + fTax;	
      strTotal    = moneyFormat(fTotal);
      strFst      = moneyFormat(fFst);
      strTax      = moneyFormat(fTax);
      strATax     = moneyFormat(fATax);
      strShipping = moneyFormat(fShipping);

		
   if ( bDisplay ) {
      strOutput += "<TR><TD align=\"right\" CLASS=\"nopheader\" COLSPAN=7><IMG SRC=\"./images/one.gif\" WIDTH=3 HEIGHT=2 ALT=\"Space\"></TD></TR>";
	 
      strOutput += "<TR><TD align=\"right\" CLASS=\"noptotal\" COLSPAN=5><B>"+strSUB+"    </B></TD>";
      strOutput += "<TD CLASS=\"noptotal\" ALIGN=\"right\"><B>" + MonetarySymbol + strTotal + "</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
      strOutput += "</TR>";

// Don't display Weight Row if Weight is zero
			if (fWeight >0 ){
      strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 ALIGN=RIGHT><B>"+strWTOT+"   </B></TD>"; 
      strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + moneyFormat(fWeight) + "</B></TD>"; 
      strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=LEFT> <B> "+ WeightUnits +"</B></TD></TR>"; 
     }

      if ( DisplayShippingRow ) {
         strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 align=\"right\"><B>"+strSHIP+"    </B></TD>";
         strOutput += "<TD CLASS=\"noptotal\" ALIGN=\"right\"><B>" + MonetarySymbol + strShipping + "</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
         strOutput += "</TR>";
      }
			
// Don't display Federal Sales Tax Row if FST Rate zero
      if ( FstRate > 0 ) {
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 align=\"right\"><B>"+strFST+"   </B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" ALIGN=\"right\"><B>"+ MonetarySymbol + strFst + "</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
            strOutput += "</TR>";
			}
// Don't display Provincial Sales Tax Row if Tax Rate zero
      if ( TaxRate > 0 ) {
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 align=\"right\"><B>"+strTAX+"   </B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" ALIGN=\"right\"><B>"+ MonetarySymbol + strTax + "</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
            strOutput += "</TR>";
			}

      if ( DisplayTaxRow || TaxByRegion ) {
         if ( TaxByRegion ) {
            strOutput += "<TR><TD CLASS=\"nopeven\" COLSPAN=2 ROWSPAN=3 align=\"center\"><B>"+strALLTAX+"    </B></TD>";
            strOutput += "<TD  CLASS=\"nopeven\" COLSPAN=3 ALIGN=\"right\"><B>";
            strOutput += "<input type=radio name=\""+OutputOrderTax+"\" value=\"" + strATax + "\">";
            strOutput += TaxablePrompt + ":</B></TD><TD CLASS=\"nopeven\" ALIGN=\"right\"><B> " + MonetarySymbol + strATax + "</B></TD><TD CLASS=\"nopeven\"><BR></TD></TR>";

// add these lines for 2nd State Tax:
            strOutput += "<TR><TD CLASS=\"nopeven\" COLSPAN=3 ALIGN=\"right\"><B><input type=radio name=\""+OutputOrderTax+"\" value=\"" + strFst + "\">"; 
             strOutput += TaxablePrompt2 + ":</B></TD><TD CLASS=\"nopeven\" ALIGN=\"right\"><B> " + MonetarySymbol + strFst + "</B></TD><TD CLASS=\"nopeven\"><BR></TD></TR>";

//end addition 

            strOutput += "<TR><TD CLASS=\"nopeven\" COLSPAN=3 ALIGN=\"right\"><B><input type=radio name=\""+OutputOrderTax+"\" value=\"0.00\">";
            strOutput += NonTaxablePrompt + ":</B></TD><TD CLASS=\"nopeven\" ALIGN=\"right\"><B> " + MonetarySymbol + "0.00";
            strOutput += "</B></TD><TD CLASS=\"nopeven\"><BR></TD>";
            strOutput += "</TR>";
         } else {
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 align=\"right\"><B>"+strTAX+"   </B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" ALIGN=\"right\"><B>" + MonetarySymbol + strATax + "</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
            strOutput += "</TR>";
         }
      }

      if ( !TaxByRegion ) {
         strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 align=\"right\"><B>"+strTOT+"   </B></TD>";
         strOutput += "<TD CLASS=\"noptotal\" ALIGN=\"right\"><B>" + MonetarySymbol + moneyFormat(fTotal + fShipping + fFst + fTax) + "</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
         strOutput += "</TR>";
      }
      strOutput += "</TABLE> </TD></TR></TABLE>";

      if ( HiddenFieldsToCheckout ) {
         strOutput += "<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+ MonetarySymbol + strTotal + "\">";
         strOutput += "<input type=hidden name=\""+OutputOrderShipping+"\" value=\""+ MonetarySymbol + strShipping + "\">";
         strOutput += "<input type=hidden name=\""+OutputOrderFst+"\"      value=\""+ MonetarySymbol + strFst + "\">";
         strOutput += "<input type=hidden name=\""+OutputOrderTax+"\"      value=\""+ MonetarySymbol + strTax + "\">";
         strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\"    value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fFst + fTax)) + "\">";

      }
   }
   g_TotalCost = (fTotal);

   document.write(strOutput);
   document.close();
}

//-----------------------------------------------------------------------|| 
// FUNCTION: ComputeShipping                                             || 
// PARAMETERS: Zone, Total Quantity, Weight, Total Value, preset amount  || 
// RETURNS:  Shipping Cost                                               || 
// PURPOSE: Compute shipping cost total Qty and shipping zone            || 
//-----------------------------------------------------------------------||
 
function ComputeShipping(Zone, NoQty, Wgt, TotVal, ship) {
Shipping = 0.00;
// LocationValue = GetCookie("ZoneSelected"); 

	 // ------------------- Calculate shipping by total order weight ------------||

	 // ------------------- fWeight is in lbs or Kilograms ----------------------||
	 // - between this weight and    this ,  shipping costs this ----------------||
/*	 
if ( Wgt >  0.00 && Wgt <=  0.50 ){ Shipping +=  3.30 }; 
if ( Wgt >  0.50 && Wgt <=  1.00 ){ Shipping +=  4.40 }; 
if ( Wgt >  1.00 && Wgt <=  2.00 ){ Shipping +=  5.50 }; 
if ( Wgt >  2.00 && Wgt <=  5.00 ){ Shipping +=  6.60 }; 
if ( Wgt >  5.00 && Wgt <= 10.00 ){ Shipping +=  7.70 }; 
if ( Wgt > 10.00 && Wgt <= 15.00 ){ Shipping +=  8.80 }; 
if ( Wgt > 15.00 && Wgt <= 20.00 ){ Shipping += 10.00 }; 
if ( Wgt > 20.00 && Wgt <= 25.00 ){ Shipping += 11.10 }; 
if ( Wgt > 25.00 && Wgt <= 30.00 ){ Shipping += 12.20 }; 
if ( Wgt > 30.00 ){ Shipping  += 15.50; } 

if (LocationValue != Zone) { 
SetCookie("ZoneSelected", Zone, null, "/"); 
location.href=location.href; 
	}
	 
var ItemQty = parseInt(NoQty);
if (LocationValue == 0 ){
  var ship =  (ItemQty * 5.00);
  return (ship);
}
if (LocationValue == 1 ){
  var ship =  (ItemQty * 7.00);
  return (ship);
}

if (LocationValue == 99 ) return 0.00; 
*/
	return Shipping; 
}

//---------------------------------------------------------------------||
// FUNCTION:    ValidateCart                                           ||
// PARAMETERS:  Form to validate                                       ||
// RETURNS:     true/false                                             ||
// PURPOSE:     Validates the managecart form                          ||
//---------------------------------------------------------------------||
var g_TotalCost = 0;
function ValidateCart( theForm ) {
   if ( TaxByRegion ) {
      if ( !RadioChecked(eval("theForm."+OutputOrderTax)) ) {
         alert( TaxPrompt );
         return false;
      }
   }

   if ( isNaN (g_TotalCost) ) {
      alert( NoQtyPrompt );
      return false;
   }

   if ( MinimumOrder >= 0.01 ) {
      if ( g_TotalCost < MinimumOrder ) {
         alert( MinimumOrderPrompt );
         return false;
      }
   }
/*
   if ( !RadioChecked(theForm.ZONE) ) {
      alert( LocationPrompt );
      return false;
   }
*/
   return true;
}


//---------------------------------------------------------------------||
// FUNCTION:    CheckoutCart                                           ||
// PARAMETERS:  Null                                                   ||
// RETURNS:     Product Table Written to Document                      ||
// PURPOSE:     Draws current cart product table on HTML page for      ||
//              checkout.                                              ||
//---------------------------------------------------------------------||
function CheckoutCart( ) {
   var iNumberOrdered = 0;    //Number of products ordered
   var fTotal         = 0;    //Total cost of order
	 var fprodttl       = 0; 		//Total product cost = QTY * PRICE
   var fFst           = 0;    //FST amount
   var fTax           = 0;    //Tax amount
   var fATax          = 0;    //Total of Both Taxes  
   var fShip          = 0;    //Shipping amount
   var fShipping      = 0;    //Calculated Shipping amount
	 var fWeight        = 0;		//Weight of items for shipping calculation 
	 var fItems         = 0;    // Sum of item Quantities
	 var LocationSelected = 99;
	 var LocationLabel  = "";
	 var TotWeight      = 0;
   var strTotal       = "";   //Total cost formatted as money
   var strFst         = "";   //Total FST formatted as money
   var strTax         = "";   //Total tax formatted as money
   var strATax        = "";   //Total both taxes formatted as money 
   var strShipping    = "";   //Total shipping formatted as money
   var strOutput      = "";   //String to be written to page
   var bDisplay       = true; //Whether to write string to the page (here for programmers)
   var strPP          = "";   //Payment Processor Description Field
	 var strProductId   = "";		//Used or non-taxable item identification
	 

   iNumberOrdered = GetCookie("NumberOrdered");
   if ( iNumberOrdered == null )
      iNumberOrdered = 0;


   if ( TaxByRegion ) {
      QueryString_Parse();
      fATax = parseFloat( QueryString( OutputOrderTax ) );
      strATax = moneyFormat(fATax);
   }

// ------------------- CheckoutCart Table Header -----------------------------||
   if ( bDisplay )
	 		strOutput = 	"<TABLE CELLSPACING=0 CELLPADDING=2 WIDTH=600 BORDER=5 CLASS=\"nopcart\"><TR><TD>" +
	"<TABLE CELLSPACING=0 CELLPADDING=0 WIDTH=596 BORDER=0 CLASS=\"nopcart\"><TR>" +			
"<TD WIDTH=55 CLASS=\"nopheader\"><strong>"+strILabel+"</strong></TD>" +			
"<TD ALIGN=\"center\" CLASS=\"nopheader\"><strong>"+strDLabel+"</strong></TD>" +			
"<TD WIDTH=30 ALIGN=\"center\" CLASS=\"nopheader\"><strong>"+strQLabel+"</strong></TD>" +			"<TD WIDTH=60 ALIGN=\"center\" CLASS=\"nopheader\"><strong>"+strPLabel+"</strong></TD>";
if ( DisplayShippingColumn ) { strOutput += 
"<TD WIDTH=75 ALIGN=\"center\" CLASS=\"nopheader\"><strong>"+strWLabel+"</strong></TD>";
} else { strOutput += 
"<TD WIDTH=75 ALIGN=\"center\" CLASS=\"nopheader\"><strong>"+strPTLabel+"</strong></TD>";}
strOutput += "</TR>";


   for ( i = 1; i <= iNumberOrdered; i++ ) {
	 		even = (i & 1);
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);

      fields    = new Array(11);
      fields[0] = database.substring( 0, Token0 );        // Product ID
      fields[1] = database.substring( Token0+1, Token1 ); // Quantity
      fields[2] = database.substring( Token1+1, Token2 ); // Price
      fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description
      fields[4] = database.substring( Token3+1, Token4 ); // Shipping Cost
      fields[5] = database.substring( Token4+1, Token5 ); // Additional Information
      fields[6] = database.substring( Token5+1, Token6 ); // User Entry
      fields[7] = database.substring( Token6+1, Token7 ); // Weight
      fields[8] = database.substring( Token7+1, Token8 ); // Limit
      fields[9] = database.substring( Token8+1, Token9 ); // FSTaxable
      fields[10] = database.substring( Token9+1, database.length ); // Taxable

      fprodttl    = (parseInt(fields[1]) * parseFloat(fields[2]) );
      fTotal     += fprodttl;	             
      fItems     += parseInt(fields[1]);	  
			fWeight    += (parseInt(fields[1])* parseFloat(fields[7]) );
      fShipping  += (parseInt(fields[1]) * parseFloat(fields[4]) );
			if( fields[9]  == "true" ) { fFst += ( fprodttl * FstRate); }

if ( !TaxByRegion ) {
			if( fields[10] == "true" ) fTax += (fprodttl * TaxRate);  
			}
      strTotal    = moneyFormat(fTotal);
			strFst    = moneyFormat(fFst);
      if ( !TaxByRegion ) strTax = moneyFormat(fTax);

      fShipping = ComputeShipping(LocationSelected, fItems, fWeight, fTotal); 
      strShipping = moneyFormat(fShipping);

// ------------------- CheckoutCart Table Body -------------------------------||
if (even ^ 1 ) {noprow="nopeven";
	} else {noprow ="nopentry";
	} 			
			
if ( bDisplay ){

		strOutput += "<TR VALIGN=TOP CLASS=\"tblpadding5\"><TD CLASS=\""+noprow+"\">"  + fields[0] + "</TD>";

          if ( (fields[5] != "") || (fields[6] != "") )
            strOutput += "<TD CLASS=\""+noprow+"\">"  + fields[3] + " - <I>"+ fields[5] + "  "+ fields[6]+ "</I></TD>";
         else
            strOutput += "<TD CLASS=\""+noprow+"\">"  + fields[3] + "</TD>";

         strOutput += "<TD CLASS=\""+noprow+"\">" + fields[1] + "</TD>";
         strOutput += "<TD ALIGN=RIGHT CLASS=\""+noprow+"\">"+ MonetarySymbol + moneyFormat(fields[2]) + "</TD>";

// Display either shipping or extended price in this column
         if ( DisplayShippingColumn ) {
            if ( parseFloat(ItemWeight[i]) > 0 )
    strOutput += "<TD CLASS=\""+noprow+"\" align=\"right\">"+ MonetarySymbol + moneyFormat(ItemWeight[i]) + "/ea</TD>";
            else
    strOutput += "<TD CLASS=\""+noprow+"\" ALIGN=\"center\">N/A</TD>";
         }
	else {
		strOutput += "<TD ALIGN=RIGHT CLASS=\""+noprow+"\" align=\"right\">"+ MonetarySymbol + moneyFormat(fprodttl) + "   </TD>";
         }
    strOutput += "</TR>";
  }

      if ( AppendItemNumToOutput ) {
         strFooter = i;
      } else {
         strFooter = "";
      }
      if ( PaymentProcessor != '' ) {
         //Process description field for payment processors instead of hidden values.
         //Format Description of product as:
         // ID, Name, Qty X
         strPP += fields[0] + ", " + fields[3];
         if ( fields[5] != "" )
            strPP += " - " + fields[5];
         strPP += ", Qty. " + fields[1] + "\n";
      } else {
         strOutput += "<input type=hidden name=\"" + OutputItemId        + strFooter + "\" value=\"" + fields[0] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemQuantity  + strFooter + "\" value=\"" + fields[1] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemPrice     + strFooter + "\" value=\"" + fields[2] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemName      + strFooter + "\" value=\"" + fields[3] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemShipping  + strFooter + "\" value=\"" + fields[4] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">";
      } 

   }
// ------------------- Start of CheckoutCart Table Footer -------------------||
      fShipping = ComputeShipping(LocationSelected, fItems, fWeight, fTotal, fShip); 

      fShipping  += (fShipping * ShippingFstRate);	// calculates FST on shipping charge
	    fShipping  += (fShipping * ShippingTaxRate);	// calculates PST on shipping charge
			 if (fATax ==0) {fTax = fFst = 0;}
			fTax        = (fATax - fFst);
			  if (fTax <= 0.02) fTax = 0;
      strTotal    = moneyFormat(fTotal);
      strFst      = moneyFormat(fFst);
      strTax      = moneyFormat(fTax);
      strShipping = moneyFormat(fShipping);

   if ( bDisplay ) {
      strOutput += "<TR><TD align=\"right\" CLASS=\"nopheader\" COLSPAN=6><IMG SRC=\"./images/one.gif\" WIDTH=3 HEIGHT=2 ALT=\"Space\"></TD></TR>";
      strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>"+strSUB+"</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
      strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strTotal + "   </B></TD><TD CLASS=\"noptotal\"><BR></TD>";
      strOutput += "</TR>";

      if ( DisplayShippingRow ) {
         strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>"+strSHIP+"</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
         strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strShipping + "   </B></TD><TD CLASS=\"noptotal\"><BR></TD>";
         strOutput += "</TR>";
      }

         strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>"+strFST+"</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
         strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strFst + "   </B></TD><TD CLASS=\"noptotal\"><BR></TD>";
         strOutput += "</TR>";

 
      if ( DisplayTaxRow || TaxByRegion ) {
         strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>"+strTAX+"</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
         strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strTax + "   </B></TD><TD CLASS=\"noptotal\"><BR></TD>";
         strOutput += "</TR>";
      }

      strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>"+strTOT+"</B></TD><TD CLASS=\"noptotal\"><BR></TD>";
      strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat((fTotal + fShipping + fFst + fTax)) + "   </B></TD><TD CLASS=\"noptotal\"><BR></TD>";
      strOutput += "</TR>";

      strOutput += "</TABLE> </TD></TR></TABLE>";

      
      if ( PaymentProcessor == 'an') {
         //Process this for Authorize.net WebConnect
         strOutput += "<input type=hidden name=\"x_Version\" value=\"3.0\">";
         strOutput += "<input type=hidden name=\"x_Show_Form\" value=\"PAYMENT_FORM\">";
         strOutput += "<input type=hidden name=\"x_Description\" value=\""+ strPP + "\">";
         strOutput += "<input type=hidden name=\"x_Amount\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">";
      } else if ( PaymentProcessor == 'wp') {
         //Process this for WorldPay
         strOutput += "<input type=hidden name=\"desc\" value=\""+ strPP + "\">";
         strOutput += "<input type=hidden name=\"amount\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">";
      } else if ( PaymentProcessor == 'lp') {
         //Process this for LinkPoint         
         strOutput += "<input type=hidden name=\"mode\" value=\"fullpay\">";
         strOutput += "<input type=hidden name=\"chargetotal\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">";
//         strOutput += "<input type=hidden name=\"tax\" value=\""+ MonetarySymbol + strFst + "\">";
         strOutput += "<input type=hidden name=\"tax\" value=\""+ MonetarySymbol + strATax + "\">";
         strOutput += "<input type=hidden name=\"subtotal\" value=\""+ MonetarySymbol + strTotal + "\">";
         strOutput += "<input type=hidden name=\"shipping\" value=\""+ MonetarySymbol + strShipping + "\">";
         strOutput += "<input type=hidden name=\"desc\" value=\""+ strPP + "\">";
      } else {
         strOutput += "<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+ MonetarySymbol + strTotal + "\">";
         strOutput += "<input type=hidden name=\""+OutputOrderShipping+"\" value=\""+ MonetarySymbol + strShipping + "\">";
         strOutput += "<input type=hidden name=\""+OutputOrderFst+"\"      value=\""+ MonetarySymbol + strFst + "\">";
         strOutput += "<input type=hidden name=\""+OutputOrderTax+"\"      value=\""+ MonetarySymbol + strTax + "\">";
         strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\"    value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fATax)) + "\n" + "\n" + "\">";
      }
   }

   document.write(strOutput);
   document.close();
}
// -=#=-=#=-=#=- above code writes cart contents table to checkout page -=#=-=#=-

//---------------------------------------------------------------------||
// FUNCTION:    giftRegistration                                       ||
// PARAMETERS:  Null                                                   ||
// RETURNS:     Product Table Written to Document w/o totals           ||
// PURPOSE:     Draws current cart product table on HTML page for      ||
//              gift Registration.                                     ||
//---------------------------------------------------------------------||
function giftRegistration( ) {
   var iNumberOrdered = 0;    //Number of products ordered
   var fTotal         = 0;    //Total cost of order
	 var fprodttl       = 0; 		//Total product cost = QTY * PRICE
   var fFst           = 0;    //FST amount
   var fTax           = 0;    //Tax amount
   var fShipping      = 0;    //Shipping amount
	 var fWeight        = 0;		//Weight of items for shipping calculation 
	 var fItems         = 0;    // Sum of item Quantities
	 var LocationSelected = 99;
	 var LocationLabel  = "";
	 var TotWeight      = 0;
   var strTotal       = "";   //Total cost formatted as money
   var strFst         = "";   //Total FST formatted as money
   var strTax         = "";   //Total tax formatted as money
   var strShipping    = "";   //Total shipping formatted as money
   var strOutput      = "";   //String to be written to page
   var bDisplay       = true; //Whether to write string to the page (here for programmers)
   var strPP          = "";   //Payment Processor Description Field
	 var strProductId   = "";		//Used or non-taxable item identification
	 
   iNumberOrdered = GetCookie("NumberOrdered");
   if ( iNumberOrdered == null )
      iNumberOrdered = 0;

   if ( bDisplay )
	 		strOutput = 	"<TABLE CELLSPACING=0 CELLPADDING=2 WIDTH=610 BORDER=5 CLASS=\"nopcart\"><TR><TD>" +
      	"<TABLE CELLSPACING=0 CELLPADDING=0 WIDTH=100% BORDER=0 CLASS=\"nopcart\"><TR>" + 
				"<TD WIDTH=65 ALIGN=CENTER CLASS=\"nopheader\"><strong>"+strILabel+"</strong></TD>" +
				"<TD WIDTH=350 ALIGN=CENTER CLASS=\"nopheader\"><strong>"+strDLabel+"</strong></TD>" +
				"<TD WIDTH=25 ALIGN=CENTER CLASS=\"nopheader\"><strong>"+strQLabel+"</strong></TD>" +
				"<TD ALIGN=RIGHT WIDTH=65 CLASS=\"nopheader\"><strong>"+strPLabel+"</strong></TD>"  +				"</TR>"; 

   for ( i = 1; i <= iNumberOrdered; i++ ) {
	 		even = (i & 1);
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);

      fields    = new Array(11);
      fields[0] = database.substring( 0, Token0 );        // Product ID
      fields[1] = database.substring( Token0+1, Token1 ); // Quantity
      fields[2] = database.substring( Token1+1, Token2 ); // Price
      fields[3] = database.substring( Token2+1, Token3 ); // Product Name/Description
      fields[4] = database.substring( Token3+1, Token4 ); // Shipping Cost
      fields[5] = database.substring( Token4+1, Token5 ); // Additional Information
      fields[6] = database.substring( Token5+1, Token6 ); // User Entry
      fields[7] = database.substring( Token6+1, Token7 ); // Weight
      fields[8] = database.substring( Token7+1, Token8 ); // Limit
      fields[9] = database.substring( Token8+1, Token9 ); // FSTaxable
      fields[10] = database.substring( Token9+1, database.length ); // Taxable

      fprodttl    = (parseInt(fields[1]) * parseFloat(fields[2]) );
      fTotal     += fprodttl;	             
      fItems     += parseInt(fields[1]);	  
			fWeight    += (parseInt(fields[1])* parseFloat(fields[7]) );
      fShipping  += (parseInt(fields[1]) * parseFloat(fields[4]) );
			if( fields[9]  = true ) { fFst += ( fprodttl * FstRate); }

	// -------------------  Cart Table Body -------------------------------||
if (even ^ 1 ) noprow="nopeven";
	 else noprow ="nopentry"; 			
		
if ( bDisplay ){

		strOutput += "<TR VALIGN=TOP CLASS=\"TBLPADDING5\"><TD CLASS=\""+noprow+"\">"  + fields[0] + "</TD>";

         if ( (fields[5] != "") || (fields[6] != "") )
            strOutput += "<TD CLASS=\""+noprow+"\">"  + fields[3] + " - <I>"+ fields[5] + "  "+ fields[6]+ "</I></TD>";
         else
            strOutput += "<TD CLASS=\""+noprow+"\">"  + fields[3] + "</TD>";

         strOutput += "<TD CLASS=\""+noprow+"\">" + fields[1] + "</TD>";
         strOutput += "<TD ALIGN=RIGHT CLASS=\""+noprow+"\">"+ MonetarySymbol + moneyFormat(fields[2]) + "</TD>";

         strOutput += "</TR>";
}
      if ( AppendItemNumToOutput ) {
         strFooter = i;
      } else {
         strFooter = "";
      }
// format email
      strOutput += "<input type=hidden name=\" Item "  +  strFooter + '  PLU=' + fields[0] + strSpace + OutputItemQuantity  + '=' + fields[1] + strSpace + fields[3] + strSpace + fields[5] + strSpace + MonetarySymbol + moneyFormat(fields[2]) + "\n" + "\">";
      } 

			
   if ( bDisplay ) {
      strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 ALIGN=Center><B>Gift suggestions to be placed in our Registry</B></TD>";
      strOutput += "</TR>";

      strOutput += "</TABLE> </TD></TR></TABLE>";

   }

   document.write(strOutput);
   document.close();
}
// -=#=-=#=- above code writes cart contents table to gift registry page -=#=-=#=-


//=====================================================================||
//               END NOP Design SmartPost Shopping Cart                ||
//=====================================================================||


//=====================================================================||
//             BEGIN SmartPost Shopping Cart MODIFICATIONS             ||
//=====================================================================||
//

function getQueryVariable() {
  var unsetme = GetCookie("NumberOrdered");
  var cookiemonster;
  DeleteCookie("NumberOrdered", "/");
  for ( i = 1; i <= unsetme; i++ ) {
    cookiemonster = "Order." + i;
    DeleteCookie(cookiemonster, "/");
  }

  var count   = 0;
  var getVARS = new Array(9);
  var control = 0;
  var query   = window.location.search.substring(1);
  var vars    = query.split("&");
  var holder  = new Array(vars.length);
  var tmpString;
  
  var j = 1;
  var a = "ID_"        + j;
  var b = "QUANTITY_"  + j;
  var c = "PRICE_"     + j;
  var d = "NAME_"      + j;
  var e = "SHIPPING_"  + j;
  var f = "ADDTLINFO_" + j;
 
  for (var i = 0; i < vars.length; i++) {
    var pair  = vars[i].split("=");

    if ( (pair[0] == "Q") && (control > 0) ) {
      j++;
      a = "ID_" + j;
      b = "QUANTITY_"  + j;
      c = "PRICE_"     + j;
      d = "NAME_"      + j;
      e = "SHIPPING_"  + j;
      f = "ADDTLINFO_" + j; 
    }

    switch (pair[0]) {
      case a:
        getVARS[0] = unescape(pair[1]);
      break;
      case b:
        getVARS[1] = unescape(pair[1]);
      break;
      case c:
        getVARS[2] = unescape(pair[1]);
      break;
      case d:
        tmpString  = unescape(pair[1]);
        getVARS[3] = tmpString.replace(/\+/g, " ");
      break;
      case e:
        getVARS[4] = unescape(pair[1]);
      break;
      case f:
        getVARS[5] = unescape(pair[1]);
        SSLFIX(getVARS);
        control = 1;
      break;
    }

  }

}



function SSLFIX(passme) {

   var iNumberOrdered = 0;
   var bAlreadyInCart = false;
   var notice = "";
   iNumberOrdered = GetCookie("NumberOrdered");

   if ( iNumberOrdered == null )
      iNumberOrdered = 0;

    if (passme[0]) {
      strID_NUM     = passme[0];
    } else {
      strID_NUM     = "";
    }    
    
    if (passme[1]) {
      strQUANTITY  = passme[1];
    } else {
      strQUANTITY     = "1";
    }      
    
    if (passme[2]) {
      strPRICE     = passme[2];
    } else {
      strPRICE     = "0.00";
    }
    
    if (passme[3]) {
      strNAME      = passme[3];
    } else {
      strNAME     = "";
    }     
    
    if (passme[4]) {
      strSHIPPING  = passme[4];
    } else {
      strSHIPPING     = "0.00";
    }    
    
    if (passme[5]) {
      strADDTLINFO = passme[5];
    } else {
      strADDTLINFO = "";
    }

   //Is this product already in the cart?  If so, increment quantity instead of adding another.
   for ( i = 1; i <= iNumberOrdered; i++ ) {
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, database.length );

      if ( fields[0] == strID_NUM &&
           fields[2] == strPRICE  &&
           fields[3] == strNAME   &&
           fields[5] == strADDTLINFO
         ) {
         bAlreadyInCart = true;
         dbUpdatedOrder = strID_NUM    + "|" +
                          (parseInt(strQUANTITY)+parseInt(fields[1]))  + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING  + "|" +
                          strADDTLINFO;
         strNewOrder = "Order." + i;
         DeleteCookie(strNewOrder, "/");
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         notice = strQUANTITY + " " + strNAME + strAdded;
         break;
      }
   }


   if ( !bAlreadyInCart ) {
      iNumberOrdered++;

      if ( iNumberOrdered > 12 )
         alert( strSorry );
      else {
         dbUpdatedOrder = strID_NUM    + "|" + 
                          strQUANTITY  + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING  + "|" +
                          strADDTLINFO;

         strNewOrder = "Order." + iNumberOrdered;
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         SetCookie("NumberOrdered", iNumberOrdered, null, "/");
         notice = strQUANTITY + " " + strNAME + strAdded;
      }
   }

}


//=====================================================================||
//             END SmartPost Shopping Cart MODIFICATIONS               ||
//=====================================================================||
