// This shopping cart is a modified version of the free NOP shopping cart.  Visit http://www.nopdesign.com/freecart/ as necessary for future reference.


MonetarySymbol        = '$'; 
DisplayNotice         = true;   //Displays that something was put into cart, change to false to stop display
DisplayShippingColumn = false;   // by changing to true can add a shipping cost/column (if needed in future)
DisplayShippingRow    = false;    // by changing to true can add a shipping row (if needed in future)
DisplayTaxRow         = false;   // by changing to true can add a tax cost/column (if needed in future)
TaxRate               = 0.07;    // by changing to true DisplayTaxRow to true, this is the tax rate that is charged (if needed in future)
TaxByRegion           = false;    // by changing to true DisplayTaxRow to true, this is the tax rate that is charged by area if you wish to specify (if needed in future)
TaxPrompt             = 'For tax purposes, please select if you are an Arizona resident before continuing'; 
TaxablePrompt         = 'Arizona Residents'; 
NonTaxablePrompt      = 'Other States'; 
MinimumOrder          = 0.00; 
MinimumOrderPrompt    = 'Your order is below our minimum order, please order more before checking out.'; 

//Payment Processor Options: 
PaymentProcessor      = ''; 


OutputItemId          = 'ID_'; 
OutputItemQuantity    = 'QUANTITY_'; 
OutputItemPrice       = 'PRICE_'; 
OutputItemName        = 'NAME_'; 
OutputItemShipping    = 'SHIPPING_'; 
OutputItemAddtlInfo   = 'ADDTLINFO_'; 
OutputOrderSubtotal   = 'SUBTOTAL'; 
OutputOrderShipping   = 'SHIPPING'; 
OutputOrderTax        = 'TAX'; 
OutputOrderTotal      = 'TOTAL'; 
AppendItemNumToOutput = true; 
HiddenFieldsToCheckout = true; 



//---------------------------------------------------------------------|| 
//                      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-en.js.                               || 
//---------------------------------------------------------------------|| 
if ( !bLanguageDefined ) { 
strSorry  = "Your cart is full, please proceed to checkout.";
strAdded  = "The max allowed for this publication has been added to your order.";
strRemove = "Click OK to remove this publication from your order.";
strILabel = "Pub. No.   ";
strDLabel = "Publication Title";
strQLabel = "Quantity";
strPLabel = "Price";
strSLabel = "Ext.";
strRLabel = "Remove From Order";
strRButton= "Remove";
strSUB    = "SUBTOTAL";
strWTOT   = "TOTAL WEIGHT";
strSHIP   = "SHIPPING CHARGE";
strTAX    = "STATE/LOCAL SALES TAX";
strCOUP = "COUPON";
strTOT    = "TOTAL";
strErrQty = "Invalid Quantity.";
strNewQty = 'Please enter new quantity:';
strSpace = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
Language = 'en';
bLanguageDefined = true;
} 


//---------------------------------------------------------------------|| 
// 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"; 
	
   return(strNewQuantity); 
} 


//---------------------------------------------------------------------|| 
// 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) { 
   var iNumberOrdered = 0; 
   var bAlreadyInCart = false; 
   var notice = ""; 
   iNumberOrdered = GetCookie("NumberOrdered"); 

   if ( iNumberOrdered == null ) 
      iNumberOrdered = 0; 

   if ( thisForm.ID_NUM == null ) 
      strID_NUM    = ""; 
   else 
      strID_NUM    = thisForm.ID_NUM.value; 

   if ( thisForm.LIMIT == null ) { 
      strQTYLIMIT  = 10000; // Qty ceiling. This should be infinity! 
      } 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 ) 
      strSHIPPING  = "0.00"; 
   else 
      strSHIPPING  = thisForm.SHIPPING.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; 
   } 

   //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);      

      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, Token5 ); // Additional Information 
      fields[6] = database.substring( Token5+1, database.length );  // Limit 

          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 
         ) { 
bAlreadyInCart = true; 
if ((parseInt(strQUANTITY)+parseInt(fields[1])) > strQTYLIMIT){ 
dbUpdatedOrder = strID_NUM + "|" + 
strQTY + "|" + 
strPRICE + "|" + 
strNAME + "|" + 
strSHIPPING + "|" + 
strADDTLINFO  + "|" + 
strQTYLIMIT; 
strNewOrder = "Order." + i; 
DeleteCookie(strNewOrder, "/"); 
SetCookie(strNewOrder, dbUpdatedOrder, null, "/"); 
notice2 = strAdded + "\n-------------------------------------\n" + 

"\nPublication: " + strNAME; 
break; } 
else{ 
dbUpdatedOrder = strID_NUM + "|" + 
(parseInt(strQUANTITY)+parseInt(fields[1])) + "|" + 
strPRICE + "|" + 
strNAME + "|" + 
strSHIPPING + "|" + 
strADDTLINFO  + "|" + 
strQTYLIMIT; 
strNewOrder = "Order." + i; 
DeleteCookie(strNewOrder, "/"); 
SetCookie(strNewOrder, dbUpdatedOrder, null, "/"); 

"\nPublication: " + strNAME; 
break;}
      } 
   } 


   if ( !bAlreadyInCart ) { 
      iNumberOrdered++; 
	  	  

      if ( iNumberOrdered > 25 ) 
         alert( strSorry ); 
      else { 
         dbUpdatedOrder = strID_NUM    + "|" + 
                          strQUANTITY  + "|" + 
                          strPRICE     + "|" + 
                          strNAME      + "|" + 
                          strSHIPPING  + "|" + 
                          strADDTLINFO  + "|" + 
                    strQTYLIMIT; 

         strNewOrder = "Order." + iNumberOrdered; 
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/"); 
         SetCookie("NumberOrdered", iNumberOrdered, null, "/"); 
      } 
   } 
     
   
   if ( DisplayNotice ) 
      alert(notice2); 
} 



function LastPage()
{
   DeleteCookie("LastPage", "/"); 
   SetCookie("LastPage", window.location, null, "/"); 
   
}



function BackToOrdering()
{
	var href = GetCookie("LastPage");
	
	if(href==null){
		window.location="index.htm";
	}else{
	    window.location = href;
	}
}



function DescBack()
{
	var href = GetCookie("LastPage");
	
	if(href==null){
		window.location="../index.htm";
	}else{
	    window.location = href;
	}
}
   
  


//---------------------------------------------------------------------|| 
// 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) { 
   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:    Classroom Page                                         || 
// RETURNS:     Agree or not                                           || 
// PURPOSE:     if user select educator, check cart then go to classrm pg   ||
//              if empty or give warning, empty cart, then go to classrm pg || 
//---------------------------------------------------------------------|| 


function classroom(){
  var iNumberOrdered=0;
	  
   iNumberOrdered = GetCookie("NumberOrdered"); 
   if ( iNumberOrdered == null ) 
      iNumberOrdered = 0; 

if(iNumberOrdered==0){ 

 window.location="classroom.html";}
 
else if (iNumberOrdered!=0){
 var agree=confirm("If you have started ordering below, your order will be emptied.\nDo you want to continue?");
 
  if (agree)
  {NumberOrdered = 0; 
  SetCookie('NumberOrdered', 0, null, '/')
 window.location="classroom.html";}
 else {window.location="index.htm";}
 }
 
}



//---------------------------------------------------------------------|| 
// 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 == "0" ) 
      cents = "00"; 

   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 ){
		alert("Quantity must be 1 or more");
   }

     
   else { 
      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);      

      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, Token5 ); // Additional Information 
      fields[6] = database.substring( Token5+1, database.length );  // Limit 
	  
      strQTYLIMIT = (parseInt(fields[6])); 
	   	  
	  
    if (NewQuantity >   strQTYLIMIT   ) NewQuantity = strQTYLIMIT;  
      alert("The quantity has been updated. \nIf the quantity entered is more than the limit, the order will default to limit.");
      dbUpdatedOrder = fields[0] + "|" + 
                       NewQuantity + "|" + 
                       fields[2] + "|" + 
                       fields[3] + "|" + 
                       fields[4] + "|" + 
                   fields[5] + "|" + 
                     fields[6]; 
      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 fTax           = 0;    //Tax amount 
   var fShipping      = 0;    //Shipping amount 
   var strTotal       = "";   //Total cost 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) 

   iNumberOrdered = GetCookie("NumberOrdered"); 
   if ( iNumberOrdered == null ) 
      iNumberOrdered = 0; 

   if ( bDisplay ) 
      strOutput = "<TABLE WIDTH='95%' cellpadding='1' cellspacing='1' bordercolor='#CCCCCC' CLASS=\"nopcart\"><TR>" + 
             <!--     "<TD width='12%' bgcolor='#395E9B' CLASS=\"nopheader\"><B><font color='#FFFFFF'>"+strILabel+"</font></B></TD>" +  -->
                  "<TD width='62%' bgcolor='#395E9B' CLASS=\"nopheader\"><B><font color='#FFFFFF'>"+strDLabel+"</font></B></TD>" + 
                  "<TD width='10%' bgcolor='#395E9B' CLASS=\"nopheader\"><B><font color='#FFFFFF'>"+strQLabel+"</font></B></TD>" + 
                  (DisplayShippingColumn?"<TD width='1%' bgcolor='#395E9B' CLASS=\"nopheader\"><B><font color='#FFFFFF'>"+strSLabel+"</font></B></TD>":"") + 
                  "<TD width='10%' bgcolor='#395E9B' CLASS=\"nopheader\"><B><font color='#FFFFFF'><DIV ALIGN='center'>"+strRLabel+"</DIV></font></B></TD></TR>"; 

   if ( iNumberOrdered == 0 ) { 
      strOutput += "<TR><TD bgcolor='#F4F8FF' COLSPAN=6 CLASS=\"nopentry\"><CENTER><BR><B>Empty</B><BR><BR></CENTER></TD></TR>"; 
   } 

   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);      

      fields = new Array; 
      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, database.length );  // Limit 

      fTotal     += (parseInt(fields[1]) * parseFloat(fields[2]) ); 
      fShipping  += (parseInt(fields[1]) * parseFloat(fields[4]) ); 
      fTax        = (fTotal * TaxRate); 
      strTotal    = moneyFormat(fTotal); 
      strTax      = moneyFormat(fTax); 
      strShipping = moneyFormat(fShipping); 

      if ( bDisplay ) { 
    <!--     strOutput += "<TR><TD bgcolor='#F4F8FF' CLASS=\"nopentry\">"  + fields[0] + "</TD>"; -->

         if ( fields[5] == "" ) 
            strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\" ALIGN=LEFT>"  + fields[3] + "</TD>"; 
         else 
            strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\" ALIGN=LEFT>"  + fields[3] + " - <I>"+ fields[5] + "</I></TD>"; 

         strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\"><INPUT TYPE=TEXT NAME=Q SIZE=2 VALUE=\"" + fields[1] + "\" onChange=\"ChangeQuantity("+i+", this.value);\"></TD>"; 
		 
		 

         if ( DisplayShippingColumn ) { 
            if ( parseFloat(fields[4]) > 0 ) 
               strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\">"+ MonetarySymbol + moneyFormat(fields[4]) + "/ea</TD>"; 
            else 
               strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\">N/A</TD>"; 
         } 

         strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\" ALIGN=CENTER><input type=button value=\""+strRButton+"\" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD></TR>"; 
      } 

      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] + "\">"; 
      } 

   } 

   if ( bDisplay ) { 
      strOutput += "</TR>"; 

      if ( DisplayShippingRow ) { 
         strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strSHIP+"</B></TD>"; 
         strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2><B>" + MonetarySymbol + strShipping + "</B></TD>"; 
         strOutput += "</TR>"; 
      } 

      if ( DisplayTaxRow || TaxByRegion ) { 
         if ( TaxByRegion ) { 
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strTAX+"</B></TD>"; 
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2><B>"; 
            strOutput += "<input type=radio name=\""+OutputOrderTax+"\" value=\"" + strTax + "\">"; 
            strOutput += TaxablePrompt + ": " + MonetarySymbol + strTax; 
            strOutput += "<BR><input type=radio name=\""+OutputOrderTax+"\" value=\"0.00\">"; 
            strOutput += NonTaxablePrompt + ": " + MonetarySymbol + "0.00"; 
            strOutput += "</B></TD>"; 
            strOutput += "</TR>"; 
         } else { 
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=4><B>"+strTAX+"</B></TD>"; 
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2><B>" + MonetarySymbol + strTax + "</B></TD>"; 
            strOutput += "</TR>"; 
         } 
      } 

      if ( !TaxByRegion ) { 
         strOutput += "</TR>"; 
      } 
      strOutput += "</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=\""+OutputOrderTax+"\"      value=\""+ MonetarySymbol + strTax + "\">"; 
         strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\"    value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + "\">"; 
      } 
   } 
   g_TotalCost = (fTotal + fShipping + fTax); 

   document.write(strOutput); 
   document.close(); 
} 

//---------------------------------------------------------------------|| 
// 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 ( MinimumOrder >= 0.01 ) { 
      if ( g_TotalCost < MinimumOrder ) { 
         alert( MinimumOrderPrompt ); 
         return false; 
      } 
   } 

   return true; 
} 




//---------------------------------------------------------------------|| 
// FUNCTION:    GetCookie                                              || 
// PARAMETERS:  Name                                                   || 
// RETURNS:     Value in Cookie                                        || 
// PURPOSE:     Checks that something is in cookie/cart then determines|| 
//              if user can checkout or not                            || 
//---------------------------------------------------------------------|| 
function check(thisForm){
  var iNumberOrdered=0;
	  
   iNumberOrdered = GetCookie("NumberOrdered"); 
   if ( iNumberOrdered == null ) 
      iNumberOrdered = 0; 

if(iNumberOrdered==0){
	alert("You must have an item in your order to check out.");
	}else{window.location="checkout.asp";}
	}


//---------------------------------------------------------------------|| 
// 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 fTax           = 0;    //Tax amount 
   var fShipping      = 0;    //Shipping amount 
   var strTotal       = "";   //Total cost 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 

   iNumberOrdered = GetCookie("NumberOrdered"); 
   if ( iNumberOrdered == null ) 
      iNumberOrdered = 0; 

   if ( TaxByRegion ) { 
      QueryString_Parse(); 
      fTax = parseFloat( QueryString( OutputOrderTax ) ); 
      strTax = moneyFormat(fTax); 
   } 

   if ( bDisplay ) 
      strOutput = "<TABLE WIDTH='75%' cellpadding='1' cellspacing='1' bordercolor='#CCCCCC' CLASS=\"nopcart\"><TR>" + 
                  "<TD width='10%' bgcolor='#395E9B' CLASS=\"nopheader\"><B><font color='#FFFFFF'>"+strILabel+"</font></B></TD>" + 
                  "<TD width='54%' bgcolor='#395E9B' CLASS=\"nopheader\"><B><font color='#FFFFFF'>"+strDLabel+"</font></B></TD>" + 
                  "<TD width='10%' bgcolor='#395E9B' CLASS=\"nopheader\"><B><DIV ALIGN='center'><font color='#FFFFFF'>"+strQLabel+"</font></DIV></B></TD>" + 
                  (DisplayShippingColumn?"<TD width='1%' bgcolor='#395E9B' CLASS=\"nopheader\"><B><font color='#FFFFFF'>"+strSLabel+"</font></B></TD>":"") + 
                  "</TR>"; 

   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); 

      fields = new Array; 
      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, database.length );  // Limit 

      fTotal     += (parseInt(fields[1]) * parseFloat(fields[2]) ); 
      fShipping  += (parseInt(fields[1]) * parseFloat(fields[4]) ); 
      if ( !TaxByRegion ) fTax = (fTotal * TaxRate); 
      strTotal    = moneyFormat(fTotal); 
      if ( !TaxByRegion ) strTax = moneyFormat(fTax); 
      strShipping = moneyFormat(fShipping); 

      if ( bDisplay ) { 
         strOutput += "<TR><TD bgcolor='#F4F8FF' CLASS=\"nopentry\">"  + fields[0] + "</TD>"; 

         if ( fields[5] == "" ) 
            strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\" ALIGN=LEFT>"  + fields[3] + "</TD>"; 
         else 
            strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\" ALIGN=LEFT>"  + fields[3] + " - <I>"+ fields[5] + "</I></TD>"; 

         strOutput += "<TD bgcolor='#F4F8FF' ALIGN=center CLASS=\"nopentry\">" + fields[1] + "</TD>"; 

         if ( DisplayShippingColumn ) { 
            if ( parseFloat(fields[4]) > 0 ) 
               strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\">"+ MonetarySymbol + moneyFormat(fields[4]) + "/ea</TD>"; 
            else 
               strOutput += "<TD bgcolor='#F4F8FF' CLASS=\"nopentry\">N/A</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] + "\">"; 
      } 

   } 

   if ( bDisplay ) { 
      strOutput += "</TR>"; 

      if ( DisplayShippingRow ) { 
         strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strSHIP+"</B></TD>"; 
         strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strShipping + "</B></TD>"; 
         strOutput += "</TR>"; 
      } 

      if ( DisplayTaxRow || TaxByRegion ) { 
         strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strTAX+"</B></TD>"; 
         strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strTax + "</B></TD>"; 
         strOutput += "</TR>"; 
      } 

      strOutput += "</TR>"; 

      strOutput += "</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 + strTax + "\">"; 
         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=\""+OutputOrderTax+"\"      value=\""+ MonetarySymbol + strTax + "\">"; 
         strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\"    value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + "\">"; 
      } 
   } 

   document.write(strOutput); 
   document.close(); 
} 

//=====================================================================|| 
//               END Shopping Cart                                     || 
//=====================================================================|| 