//=====================================================================||
//               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.4.0                                     ||
//=====================================================================||

//---------------------------------------------------------------------||
//                       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.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.       ||
//---------------------------------------------------------------------||

//Options for Everyone:
MonetarySymbol        = '$';
DisplayNotice         = false;
DisplayShippingColumn = false;
DisplayShippingRow    = false;
DisplayTaxRow         = false;
TaxRate               = 0;
TaxByRegion           = false;
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      = 'an';

//Options for Programmers:
OutputItemId          = 'ID_';
OutputItemQuantity    = 'QUANTITY_';
OutputItemPrice       = 'PRICE_';
OutputItemName        = 'NAME_';
OutputItemShipping    = 'SHIPPING_';
OutputItemAddtlInfo   = 'ADDTLINFO_';
OutputOrderSubtotal   = 'SUBTOTAL';
OutputOrderShipping   = 'SHIPPING';
OutputOrderTax        = 'TAX';
OutputOrderTotal      = 'TOTAL';
var strTotal       = 0;   //Total cost formatted as money
var discount = 0;
// the following 2 items may belong in the calling php, or the database
var discountRate = .10;
var hoursForDiscount = 2;
var removeRegOption = 0;  // set to 1 to enable option of removing registration from bill

AppendItemNumToOutput = true;

studentClass = new Array();

var promoCode = "HSADV";


//=====================================================================||
//---------------------------------------------------------------------||
//    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.                                                      ||
//---------------------------------------------------------------------||
bLanguageDefined = false;
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.";
    strILabel = "Time";
    strDLabel = "Name/Description";
    strQLabel = "Quantity";
    strPLabel = "Price";
    strSLabel = "Shipping";
    strRLabel = "Remove From Cart";
    strRButton= "Remove";
    strSUB    = "SUBTOTAL";
    strSHIP   = "SHIPPING";
    strTAX    = "TAX";
    strTOT    = "TOTAL";
    strErrQty = "Invalid Quantity.";

    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 clearCookies()
{
    //	alert ("clearing cookies");
    var iNumberOrdered = 0;
    iNumberOrdered = GetCookie("NumberOrdered");
    for ( i = 1; i <= iNumberOrdered; i++ )
    {
        NewOrder = "Order." + i;
        //	   alert (NewOrder);
        DeleteCookie(NewOrder, "/")
        DeleteCookie("Student." + i, "/");

    }
    DeleteCookie("RegistrationPaid", "/");
    DeleteCookie("NumberOrdered", "/");
    return (true);
}

//---------------------------------------------------------------------||
// 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) {


    if (thisForm.PURCHTYPE.value == "merch" || thisForm.PURCHTYPE.value == "classCard") {
        addMerchToCart(thisForm);
    } else {
        addClassToCart (thisForm);
    }
}

function addMerchToCart (thisForm) {
    var iNumberOrdered = 0;
    var notice = "";

    iNumberOrdered = GetCookie("NumberOrdered");

    if ( iNumberOrdered == null )
        iNumberOrdered = 0;

    if ( thisForm.QUANTITY == null )
        strQUANTITY  = "1";
    else
        strQUANTITY  = thisForm.QUANTITY.value;

    if ( thisForm.PRICE == null )
        strPRICE     = "0.00";
    else
        strPRICE     = thisForm.PRICE.value;

    if ( thisForm.NAME == null )
        strNAME      = "";
    else
        strNAME      = thisForm.NAME.value;

    iNumberOrdered++;

    dbUpdatedOrder = "merch|" +
    strQUANTITY   + "|" +
    strPRICE      + "|" +
    strNAME       + "|" +
    thisForm.TAX.value  + "|" +
    thisForm.DESC.value  + "|" +
    thisForm.SIZE.value + "|0|0";
	var studentCookie = "student." + iNumberOrdered;
	SetCookie(studentCookie, "merch", 24, "/");
    strNewOrder = "Order." + iNumberOrdered;
    SetCookie(strNewOrder, dbUpdatedOrder, 24, "/");
    SetCookie("NumberOrdered", iNumberOrdered, 24, "/");
    notice = strNAME + strAdded;
    if ( DisplayNotice )
        alert(notice);
}


function addClassToCart (thisForm) {
    var iNumberOrdered = 0;
    var notice = "";
    var pass = 1;
    var season = "";
    var classid = "";
    var registration = "";

    iNumberOrdered = GetCookie("NumberOrdered");

    if ( iNumberOrdered == null )
        iNumberOrdered = 0;
    if (iNumberOrdered == 0) {
        SetCookie("RegistrationPaid", 0, 24, "/");
    }
    if ( thisForm.ID_NUM == null )
        strID_NUM    = "";
    else
        strID_NUM    = thisForm.ID_NUM.value;

    if ( thisForm.QUANTITY == null )
        strQUANTITY  = "1";
    else
        strQUANTITY  = thisForm.QUANTITY.value;

    if ( thisForm.PRICE == null )
        strPRICE     = "0.00";
    else
        strPRICE     = thisForm.PRICE.value;

    if ( thisForm.NAME == null )
        strNAME      = "";
    else
        strNAME      = thisForm.NAME.value;
    strSHIPPING = "0.00";
   
    if ( thisForm.SESSION == null )
        strADDTLINFO  = "noDiscount";
    else
        strADDTLINFO = thisForm.SESSION.value;
  
    if (thisForm.SEASON == null)
        season = "";
    else
        season = thisForm.SEASON.value;
     
    if (thisForm.CLASSID == null)
        alert ("No classid?");
    else
        classid = thisForm.CLASSID.value;
     
    registration = thisForm.REGISTRATION.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);
        Token6 = database.indexOf("|", Token5+1);
        Token7 = database.indexOf("|", Token6+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 );
        fields[6] = database.substring( Token5+1, Token6 );
        fields[7] = database.substring( Token6+1, Token7 );
        fields[8] = database.substring( Token7+1, database.length );
	
//        if (season != fields[6] && season != ', classcard, ')
//        {
//            pass = 0;
//            strSorry = 'Please Register for only one Season at a time:' + season;
//        }
    }
    iNumberOrdered++;
	
    if ( iNumberOrdered > 12  || pass == 0 )
    {
        alert (strSorry);
        return (false);
    }
    else
    {
        dbUpdatedOrder = strID_NUM    + "|" +
        strQUANTITY  + "|" +
        strPRICE     + "|" +
        strNAME      + "|" +
        strSHIPPING  + "|" +
        strADDTLINFO + "|" +
        season       + "|" +
        classid      + "|" +
        registration;
					  
	
        strNewOrder = "Order." + iNumberOrdered;
        SetCookie(strNewOrder, dbUpdatedOrder, 24, "/");
        SetCookie("NumberOrdered", iNumberOrdered, 24, "/");
        notice = strNAME + strAdded;
    }


    if ( DisplayNotice )
        alert(notice);
    return (true);
}


//---------------------------------------------------------------------||
// 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,hours,path,domain,secure) {
    if (hours) {
        var expires = new Date();
        expires.setTime (expires.getTime() + (hours * 60 * 60 * 1000));
    } else {
        expires = "";
    }
    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 == "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, 24, "/");
        }
        NewOrder = "Order." + NumberOrdered;
		StudentCookie = "student." + NumberOrdered;
        SetCookie ("NumberOrdered", NumberOrdered-1, 24, "/");
        DeleteCookie(NewOrder, "/");
		DeleteCookie(StudentCookie, "/");
        if (NumberOrdered-1 == 0)
            SetCookie("RegistrationPaid", 0, 24, "/");
        location.href=location.href;
    }
}

function setRegistrationPaid()
{
    SetCookie("RegistrationPaid", 1, 24, "/");
    registrationFee = 0.00;
    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 {
        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);
	  
        fields = new Array;
        fields[0] = database.substring( 0, Token0 );    // strID_NUM
        fields[1] = database.substring( Token0+1, Token1 ); //strQUANTITY
        fields[2] = database.substring( Token1+1, Token2 ); //strPRICE
        fields[3] = database.substring( Token2+1, Token3 ); //strNAME
        fields[4] = database.substring( Token3+1, Token4 ); //strSHIPPING
        fields[5] = database.substring( Token4+1, Token5 ); //strADDTLINFO
        fields[6] = database.substring( Token5+1, Token6 ); //season
        fields[7] = database.substring( Token6+1, Token7 ); //classid
        fields[8] = database.substring( Token7+1, database.length ); //registration

        dbUpdatedOrder = fields[0] + "|" +
        NewQuantity + "|" +
        fields[2] + "|" +
        fields[3] + "|" +
        fields[4] + "|" +
        fields[5] + "|" +
        fields[6] + "|" +
        fields[7] + "|" +
        fields[8];
                   
        strNewOrder = "Order." + OrderItem;
        DeleteCookie(strNewOrder, "/");
        SetCookie(strNewOrder, dbUpdatedOrder, 24, "/");
        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 saveStudent(index)
{
    var regFees = new Array();
    
    // Save the enrollment info in the cookie
    studentEle = document.getElementById("student" + index);
    nameVal = studentEle.options[studentEle.selectedIndex].value;
    studentCookie = "student." + index
    SetCookie(studentCookie, nameVal, 24, "/");
  
    // set registration
    iNumberOrdered = GetCookie("NumberOrdered");
    if ( iNumberOrdered == null )
        iNumberOrdered = 0;

    for ( i = 1; i <= iNumberOrdered; i++ ) {
        var studentId = 0;
        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);
	  
        fields = new Array;
        fields[0] = database.substring( 0, Token0 );    // strID_NUM
        fields[1] = database.substring( Token0+1, Token1 ); //strQUANTITY
        fields[2] = database.substring( Token1+1, Token2 ); //strPRICE
        fields[3] = database.substring( Token2+1, Token3 ); //strNAME
        fields[4] = database.substring( Token3+1, Token4 ); //strSHIPPING
        fields[5] = database.substring( Token4+1, Token5 ); //strADDTLINFO
        fields[6] = database.substring( Token5+1, Token6 ); //season
        fields[7] = database.substring( Token6+1, Token7 ); //classid
        fields[8] = database.substring( Token7+1, database.length ); //registration

        nameVal = GetCookie("student."+i);

        bar1Index = nameVal.indexOf("|");
        bar2Index = nameVal.indexOf ("|", bar1Index + 1);
        id = nameVal.substring (0, bar1Index);
        name = nameVal.substring (bar1Index + 1, bar2Index);
        regPd = nameVal.substring (bar2Index + 1, nameVal.length)
		
        regFees[name] = (parseFloat (fields[8])); // - parseFloat(regPd));
	  
    }
    var regFeeAmt = 0.0;

    registrationPaid = GetCookie ("RegistrationPaid");
    if (registrationPaid == null) {

		for (x in regFees) {
			//   alert (x + " == " + regFees[x]);
			regFeeAmt += regFees[x];
		}
		regFeeEle = document.getElementById ("regFee");
		regFeeEle.innerHTML = MonetarySymbol + moneyFormat(regFeeAmt);
		totalEle = document.getElementById ("gTotal");
		g_TotalCost = (strTotal + regFeeAmt - discount);
		totalEle.innerHTML = MonetarySymbol + moneyFormat (g_TotalCost);
	}
//  barIndex = nameVal.indexOf("|");
//  name = nameVal.subString (0, barIndex);
//  value = nameVal.subString (barIndex + 1);
}

function checkCode ( ) {
	promo = document.getElementById("PROMO");
	enteredCode = promo.value;
	if (enteredCode == promoCode) {
		setRegistrationPaid();
	} else {
		alert (promo.value);
	}
//    location.href=location.href;
}


//---------------------------------------------------------------------||
// FUNCTION:    ManageCart                                             ||
// PARAMETERS:  Null                                                   ||
// RETURNS:     Product Table Written to Document                      ||
// PURPOSE:     Draws current cart product table on HTML page          ||
//---------------------------------------------------------------------||
function ManageCart( studentString ) {
    var iNumberOrdered = 0;    //Number of products ordered
	
    var fTotal         = 0;    //Total cost of order
    var fTax           = 0;    //Tax amount

    var fQuantity      = 0;     // static variable holding rolling total of class hours.
	
    var strTax         = "";   //Total tax formatted as money
    var strOutput      = "";   //String to be written to page
    var registrationPaid = 0;
	var classTotal = 0;
    var discountableTotal = 0;
    var nonDiscountableTotal = 0;
    var campCounter = 0;
    var campDiscountableTotal = 0;
    var studentList = new Array ();
    var studentRegPd = new Array ();
    var valueList = new Array ();
    var taxSubTotal = 0;
    var counter = 0;
    var index = 0;
    var hasMore = 1;
    var regFees = new Array();
    var regFeeAmt = 0.00;
    var taxAmount= 0.00;

    //alert (studentString);
	
    //
    // Parse the student information
    //
    do {
        var tokenEq = studentString.indexOf ("=", index);
        if (tokenEq > 0) {
            valueList[counter] = studentString.substring (index, tokenEq);
            var tokenBar = studentString.indexOf ("|", tokenEq+1);
            var stdValues = studentString.substring (tokenEq + 1, tokenBar);
            var tokenPlus = stdValues.indexOf ("+", 0);
            studentList[counter] = stdValues.substring (0, tokenPlus);
            studentRegPd[counter] = stdValues.substring (tokenPlus + 1, tokenBar);
            // alert (valueList[counter] + ", " + studentList[counter] + ", " + studentRegPd[counter]);
            index = tokenBar + 1;
            counter++;
        } else {
            hasMore = 0;
        }
    } while (hasMore);
	
    iNumberOrdered = GetCookie("NumberOrdered");
    if ( iNumberOrdered == null )
        iNumberOrdered = 0;
	

    strOutput = "<TABLE CLASS=\"nopcart\" width='100%'><TR>" +
                "<TD CLASS=\"nopheader\"><B>"+strILabel+"</B></TD>" +
                "<TD CLASS=\"nopheader\"><B>"+strDLabel+"</B></TD>" +
                "<TD CLASS=\"nopheader\" width='0'><B>Student</B></TD>" +
                "<TD CLASS=\"nopheader\"><B>"+strPLabel+"</B></TD>" +
                "<TD nowrap width='15%' CLASS=\"nopheader\"><B>"+strRLabel+"</B></TD></TR>";
	
    if ( iNumberOrdered == 0 ) {
        strOutput += "<TR><TD COLSPAN=5 CLASS=\"nopentry\"><CENTER><BR><B>Your cart is empty</B><BR><BR></CENTER></TD></TR>";
    }
	adultClasses = 0;
    for ( i = 1; i <= iNumberOrdered; i++ ) {
        var stdName = "";
        var studentId = 0;
        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);
		
        fields = new Array;
        fields[0] = database.substring( 0, Token0 );    // strID_NUM - or merch
        fields[1] = database.substring( Token0+1, Token1 ); //strQUANTITY
        fields[2] = database.substring( Token1+1, Token2 ); //strPRICE
        fields[3] = database.substring( Token2+1, Token3 ); //strNAME
        fields[4] = database.substring( Token3+1, Token4 ); //strSHIPPING - or TAX
        fields[5] = database.substring( Token4+1, Token5 ); //strADDTLINFO - or Description
        fields[6] = database.substring( Token5+1, Token6 ); //season - or Size
        fields[7] = database.substring( Token6+1, Token7 ); //classid
        fields[8] = database.substring( Token7+1, database.length ); //registration
        price = eval (fields[2]);
        //    fTotal     += (parseInt(fields[1]) * parseFloat(fields[2]) );
        if (fields[0] == "merch") {
            TaxRate = eval (fields[4]);
            if (TaxRate > 0) {
                taxSubTotal += (price * TaxRate);
                taxSubTotal.toFixed (2);
            }
            nonDiscountableTotal += price;
            size = fields[6];
			var merchStudentCookie = "student." + index
		    SetCookie(merchStudentCookie, "merch", 24, "/");
        } else { // handle class registration
			classTotal++;
            if (fields[5] == "Adult") {
				adultClasses++;
                fTotal = price;
                if (adultClasses > 1) {
                    fields[2] = 0.00;
                }
            }
			
            //  alert (fields[5]);
            if (fields[5] == "Camp") {
                campDiscountableTotal += parseFloat (fields[2]);
                campCounter++;
            }
			
            if (fields[5] == "Youth"  || fields[5] == "YouthSummer") {
                fQuantity += parseFloat (fields[1]);
                //		  alert (fQuantity);
                discountableTotal += parseFloat (fields[2]);
            } else {
                nonDiscountableTotal += parseFloat(fields[2]);
            }
        }

        strTotal    = discountableTotal + nonDiscountableTotal; //strTotal gets overwritten on each loop
        strTax      = moneyFormat(taxSubTotal);
		
        nameVal = GetCookie ("student." + i);
        if (nameVal) {
            barIndex = nameVal.indexOf("|");
            studentId = nameVal.substring (0, barIndex);
            bar2Index = nameVal.indexOf ("|", barIndex + 1);
            stdName = nameVal.substring (barIndex + 1, bar2Index);
            regPd = nameVal.substring (bar2Index + 1, nameVal.length)
        }
        regFees[stdName] = (parseFloat (fields[8])); // - parseFloat(regPd));

        strOutput += "<TR>";
        strOutput += "<TD CLASS=\"nopentry\">"  + fields[0] + "</TD>";
        if ( fields[0] == "merch" || fields[5] == "" )
            strOutput += "<TD CLASS=\"nopentry\">"  + fields[3] + "</TD>";
        else
            strOutput += "<TD CLASS=\"nopentry\">"  + fields[3] + " - <I>"+ fields[5] + "</I></TD>";
        if (fields[0] == "merch") {
			if (fields[6] == "") {
				strOutput += "<td class='nopentry'>&nbsp</td>";
			} else {
	            strOutput += "<td class='nopentry'>Size " + fields[6] + "</td>";
			}
        } else {
            if (studentList.length == 1) {
                strOutput += "<td class='nopentry'>" + studentList[0] + "</td>";
                SetCookie ("student.1", valueList[0] +  "|" + studentList[0] + "|" + studentRegPd[0], 24, "/");
            } else {
                strOutput += "<td class='nopentry'><select name='student" + i + "' id='student" + i + "' onchange='saveStudent(" + i + ");'>;";
                strOutput += "<option value='-1||0'></option>";
                for (x=0;x<studentList.length; x++) {
                    strOutput += "<option value='" + valueList[x] + "|" + studentList[x] + "|" + studentRegPd[x] + "' ";
                    if (studentId == valueList[x]) {
                        strOutput += "selected>";
                    } else {
                        strOutput += ">";
                    }
                    strOutput += studentList[x] + "</option>";
                }
                strOutput += "</select></td>";
            }
        }
        strOutput += "<TD CLASS=\"nopentry\">"+ MonetarySymbol + moneyFormat(fields[2]) + "</TD>";

        strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER width='0'><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD></TR>";
        regFeeAmt = 0.0;
        for (x in regFees) {
            regFeeAmt += regFees[x];
        }
	
        if ( AppendItemNumToOutput ) {
            strFooter = i;
        } else {
            strFooter = "";
        }

	
    }
	
    registrationPaid = GetCookie ("RegistrationPaid");
    if (registrationPaid == null)
        registrationPaid = 0;
	
    if (registrationPaid == 1)
        regFeeAmt = 0.00;

    strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strSUB+" </B> </TD>";
    strOutput += "<TD CLASS=\"noptotal\"><B>" + MonetarySymbol + moneyFormat(strTotal) + "</B></TD>";
    strOutput += "<TD CLASS=\"noptotal\">&nbsp;</td>";
    strOutput += "</TR>";

    //	Calculate discount
    if (campCounter > 0 && iNumberOrdered > 1) {
        discount = (discountableTotal + campDiscountableTotal) * discountRate;
    } else {
        if (fQuantity >= hoursForDiscount) {
            discount = (discountableTotal * discountRate);
        }
    }
    if (discount > 0)
    {
        strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>10% discount for 2 hours or more of class</B></TD>";
        strOutput += "<TD CLASS=\"noptotal\"><B><font color='red'>-" + MonetarySymbol + moneyFormat(discount) + "</font></B></TD>";
        strOutput += "<TD CLASS=\"noptotal\">&nbsp;</td>";
        strOutput += "</TR>";
    }

    if ( removeRegOption ) {
        strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>Registration Fee:</B><i> Remove if paid this year</i>";
    }
    else {
        strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>Registration Fee</B>";
    }
	if ( promoCode != "" ) {
		if (regFeeAmt == 0.00) {
			strOutput += "&nbsp;&nbsp;<font color='red'>Promotional Code accepted</font>";
		} else {
			strOutput += "&nbsp;<I>Promotional Code</I><INPUT TYPE='text' NAME='PROMO' ID='PROMO' onchange='javascript:checkCode()' SIZE='5' />";
			strOutput += "&nbsp;<input type='button' name='checkIt' id='checkIt' onclick='javascript:checkCode()' value='check'></input>";
		}
	}
	strOutput += "</TD>";
    strOutput += "<TD CLASS=\"noptotal\"<B><span id=\"regFee\">" + MonetarySymbol + moneyFormat(regFeeAmt) + "</span></B></TD>";
    if (regFeeAmt == 0.00 || !removeRegOption )
    {
        strOutput += "<TD CLASS=\"noptotal\">&nbsp;</TD>";
    }
    else
    {
        strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER width='0'><input type=button value=\" "+strRButton+" \" onClick=\"setRegistrationPaid()\" class=\"nopbutton\"></TD>";
    }
    strOutput += "</TR>";
    strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>Sales Tax</B></TD>";
    strOutput += "<TD CLASS=\"noptotal\"<B><span id=\"taxAmount\">" + MonetarySymbol + strTax + "</span></B></TD>";
    strOutput += "<TD CLASS=\"noptotal\">&nbsp;</TD></tr>";


    g_TotalCost = (strTotal + regFeeAmt + taxSubTotal - discount);

    strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strTOT+"</B></TD>";
    strOutput += "<TD CLASS=\"noptotal\"><B><span id=\"gTotal\">" + MonetarySymbol + moneyFormat((g_TotalCost)) + "</span></B></TD>";
    strOutput += "<TD CLASS=\"noptotal\">&nbsp;</td>";
    strOutput += "</TR>";

    strOutput += "</TABLE>";
	strOutput += "<input type=hidden name=\"CLASSTOTAL\" value=\"" + classTotal + "\">"


    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() {

    if ( TaxByRegion ) {
        if ( !RadioChecked(eval("theForm."+OutputOrderTax)) ) {
            alert( TaxPrompt );
            return false;
        }
    }

    if ( MinimumOrder >= 0.01 ) {
        if ( g_TotalCost < MinimumOrder ) {
            alert( MinimumOrderPrompt );
            return false;
        }
    }
    iNumberOrdered = GetCookie("NumberOrdered");
    for ( i = 1; i <= iNumberOrdered; i++ ) {
        cookieVal = GetCookie ("student." + i)

        if (cookieVal == null)
        {
            alert ("Item " + i + " has no student selected");
            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 discount = 0;
    var iNumberOrdered = 0;    //Number of products ordered
    var fTotal         = 0;    //Total cost of order
    var fTax           = 0;    //Tax amount
    var fRegistration  = 10.00;  //registration fee
    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 strPP          = "";   //Payment Processor Description Field
    var fQuantity      = 0;     // static variable holding rolling total of class hours.
    var discountableTotal = 0;
    var nonDiscountableTotal = 0;
    var campCounter = 0;
    var campDiscountableTotal = 0;
    var regFees = new Array();
    var taxAmount= 0.00;
    var taxSubTotal = 0;	

	
    iNumberOrdered = GetCookie("NumberOrdered");
    if ( iNumberOrdered == null )
        iNumberOrdered = 0;
	
    registrationPaid = GetCookie ("RegistrationPaid");
    if (registrationPaid == null)
        registrationPaid = 0;

    if ( TaxByRegion ) {
        QueryString_Parse();
        fTax = parseFloat( QueryString( OutputOrderTax ) );
        strTax = moneyFormat(fTax);
    }
	
	
    strOutput = "<TABLE CLASS=\"nopcart\" width=\"100%\"><TR>" +
    "<TD CLASS=\"nopheader\"><B>"+strILabel+"</B></TD>" +
    "<TD CLASS=\"nopheader\"><B>"+strDLabel+"</B></TD>" +
    "<TD CLASS=\"nopheader\"><B>student</B></TD>" +
    "<TD CLASS=\"nopheader\"><B>"+strPLabel+"</B></TD>" +
    (DisplayShippingColumn?"<TD CLASS=\"nopheader\"><B>"+strSLabel+"</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);
        Token6 = database.indexOf("|", Token5+1);
        Token7 = database.indexOf("|", Token6+1);
		
        fields = new Array;
        fields[0] = database.substring( 0, Token0 );    // strID_NUM
        fields[1] = database.substring( Token0+1, Token1 ); //strQUANTITY
        fields[2] = database.substring( Token1+1, Token2 ); //strPRICE
        fields[3] = database.substring( Token2+1, Token3 ); //strNAME
        fields[4] = database.substring( Token3+1, Token4 ); //strSHIPPING
        fields[5] = database.substring( Token4+1, Token5 ); //strADDTLINFO
        fields[6] = database.substring( Token5+1, Token6 ); //season
        fields[7] = database.substring( Token6+1, Token7 ); //classid
        fields[8] = database.substring( Token7+1, database.length ); //registration
        price = eval (fields[2]);

	    if (fields[0] == "merch") {
            TaxRate = eval (fields[4]);
            if (TaxRate > 0) {
                taxSubTotal += (price * TaxRate);
                taxSubTotal.toFixed (2);
            }
            nonDiscountableTotal += price;
        }  
		
        nameVal = GetCookie ("student." + i);
		
        if (nameVal)
        {
            barIndex = nameVal.indexOf("|");
            id = nameVal.substring (0, barIndex);
            bar2Index = nameVal.indexOf ("|", barIndex + 1);
            stdName = nameVal.substring (barIndex + 1, bar2Index);
            regPd = nameVal.substring (bar2Index + 1, nameVal.length)
            regFees[stdName] = parseFloat (fields[8]); // - parseFloat(regPd));
        }
        else
        {
            id = -1;
            stdName = 'Unset';
            regPd = 0;
        }
		if (fields[0] != "merch") {
			if (fields[5] == "Adult")
			{
				fTotal = parseFloat(fields[2]);
				if (i > 1)
				{
					fields[2] = 0.00;
				}
			}		
			if (fields[5] == "Camp")
			{
				campDiscountableTotal += parseFloat (fields[2]);
				campCounter++;
			}
			if (fields[5] == "Youth" || fields[5] == "YouthSummer")
			{
				fQuantity += parseFloat (fields[1]);
				discountableTotal += parseFloat (fields[2]);
			}
			else
			{
				nonDiscountableTotal += parseFloat(fields[2]);
			}
		}
        strTotal    = discountableTotal + nonDiscountableTotal; //strTotal gets overwritten on each loop.
        strTax = moneyFormat(taxSubTotal);

        var regFeeAmt = 0;
        for (x in regFees) {
            regFeeAmt += regFees[x];
        }
        if (registrationPaid == 1) {
            regFeeAmt = 0;
        }
		
        strOutput += "<TR><TD CLASS=\"nopentry\">"  + fields[0] + "</TD>";
		
        if ( fields[5] == "" )
            strOutput += "<TD CLASS=\"nopentry\">"  + fields[3] + "</TD>";
        else {
			var description = fields[3] + " - <I>" + fields[5] + "</I>";
            strOutput += "<TD CLASS=\"nopentry\">"  + description.substring (0, 40) + "</I></TD>";
		}
		if (fields[0] == "merch") {
			if (fields[6] == "") {
				strOutput += "<td class='nopentry'>&nbsp</td>";
			} else {
	            strOutput += "<td class='nopentry'>Size " + fields[6] + "</td>";
			}			
        } else {
            strOutput += "<TD CLASS=\"nopentry\">" + stdName + "</TD>";
		}
        strOutput += "<TD CLASS=\"nopentry\" ALIGN=\"right\">"+ MonetarySymbol + moneyFormat(fields[2]) + "</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[3] + ", " + fields[0] + "-" + stdName;
            if ( fields[5] != "" )
                strPP += " - " + fields[5];
            strPP += ", " + fields[1] + " Hours<br>";
        } 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] + "\">";
        }
		
    }
		

    strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strSUB+"</B></TD>";
    strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat(strTotal) + "</B></TD>";
    strOutput += "</TR>";
    if (campCounter > 0 && iNumberOrdered > 1) {
        discount = (discountableTotal + campDiscountableTotal) * discountRate;
    }
    else
    {
        if (fQuantity >= hoursForDiscount)	{
            //	 alert (discountableTotal);
            discount = (discountableTotal * discountRate);
        // fTotal = fTotal - discount;
        }
    }
    if (discount > 0){
        strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>10% discount for 2 hours or more of class</B></TD>";
        strOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B><font color='red'>-" + MonetarySymbol + moneyFormat(discount) + "</font></B></TD>";
        strOutput += "</TR>";
    }


    strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>Registration Fee</B></TD>";
    strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat(regFeeAmt) + "</B></TD>";
    strOutput += "</TR>";

    strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>Sales Tax</B></TD>";
    strOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B><span id=\"taxAmount\">" + MonetarySymbol + moneyFormat(strTax) + "</span></B></TD>";
    strOutput += "</tr>";

    g_TotalCost = strTotal + regFeeAmt + taxSubTotal - discount;
    strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strTOT+"</B></TD>";
    strOutput += "<TD CLASS=\"noptotal\" ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat((g_TotalCost)) + "</B></TD>";
    //     strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat((fTotal + fRegistration - discount)) + "</B></TD>";
    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((g_TotalCost)) + "\">";
        strOutput += "<input type=hidden name=\"x_Registration\" value=\"" + regFeeAmt + "\">";
    } 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 - discount)) + "\">";
        strOutput += "<input type=hidden name=\"x_Registration\" value=\"" + fRegistration + "\">";

    }

	
    document.write(strOutput);
    document.close();
}

//=====================================================================||
//               END NOP Design SmartPost Shopping Cart                ||
//=====================================================================||

