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

//=====================================================================||
// UPS Shiping Mod by Stefko V.1.0.0 ||
// ||
// Version History: 02/23/03  V.1.0.0 Released ||
//                            includes USERENTRY ||
//                  03/02/03  V.1.1.0 Now works with Netscape & Opera ||
//                            added Taxable and Non-taxable product code||
//                            added MathRound to Weight ||
//=====================================================================||

//---------------------------------------------------------------------||
// 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="../os1/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. ||
// * HiddenFieldsToCheckout: true/false, if set to true, hidden fields ||
// for the cart items will be passed TO the checkout page, from the ||
// ManageCart page. This is set to true for CGI/PHP/Script based ||
// checkout pages, but should be left false if you are using an ||
// HTML/Javascript Checkout Page. Hidden fields will ALWAYS be ||
// passed FROM the checkout page to the Checkout CGI/PHP/ASP/Script ||
//---------------------------------------------------------------------||

//Options for Everyone:
MonetarySymbol = '';
DisplayNotice = true;
DisplayChangeQty = false;
DisplayShippingColumn = true;
DisplayShippingRow = true;
TaxRate = 0.100; //set taxable region rate ||
DisplayTaxRow = false;
TaxByRegion = false; //leave this at false, UPS Shipping Mod will activate taxable Zone ||
TaxPrompt = 'For tax purposes, please select if you are an Kansas branch of Oasis before continuing'; //Deactivated ||
TaxablePrompt = 'Kansas Branch'; //Deactivated ||
NonTaxablePrompt = 'Other Branches'; //Deactivated ||
MinimumOrder = 0.01;
MinimumOrderPrompt = 'Oops!\n\nWe can not proceed to check out since\nthere is no item in the shopping cart.';
//original syntax - MinimumOrderPrompt = 'Your order is below our minimum order, please order more before checking out.';

NoQtyPrompt = 'You are seeing this error due to either:\n\n    1/ You have not selected a Shipping Zone\n    2/ You order has exceeded the 20KG / 20000gms limit per order\n\nPlease adjust your order accordingly before proceeding further\nor contact us regarding shipping of larger orders.'; //If attempted to go to checkout before selecting shipping zone ||

//Payment Processor Options:
PaymentProcessor = '';

//Options for Programmers:
OutputItemId = 'ID_';
OutputItemQuantity = 'QUANTITY_';
OutputItemPrice = 'PRICE_';
OutputItemName = 'NAME_';
OutputItemWeight = 'WEIGHT_'; //Added for UPS mod ||
OutputItemAddtlInfo = 'ADDTLINFO_';
OutputItemXtend = 'XTEND_';
OutputOrderZone = 'SHIPZONE';
OutputOrderSubtotal = 'SUBTOTAL';
OutputOrderShipping = 'SHIPPING';
OutputOrderTax = 'TAX';
OutputOrderTotal = 'TOTAL';
AppendItemNumToOutput = true;
HiddenFieldsToCheckout = true;

//Options for Shipping by Weight:
LocationLabel = 'ZONE';
LocationPrompt = 'For shipping purpose, please select the zone that your location is in.';
MaxWeightPrompt = 'Sorry, maximum weight allowable is 500lbs.';



//=====================================================================||
//---------------------------------------------------------------------||
// YOU DO NOT NEED TO MAKE ANY MODIFICATIONS BELOW THIS LINE ||
//---------------------------------------------------------------------||
//=====================================================================||


//---------------------------------------------------------------------||
// Language Strings ||
// ------------------ ||
// These strings will not be used unless you have not included a ||
// language pack already. You should NOT modify these, but instead ||
// modify the strings in language-**.js where ** is the language pack ||
// you are using. ||
//---------------------------------------------------------------------||
if ( !bLanguageDefined ) {
    strSorry = "I'm Sorry, your cart is full, please proceed to checkout.";
    strAdded = " Added to your shopping cart.";
    strRemove = "Click 'Ok' to remove this product from your shopping cart.";
    strILabel = "Product Id";
    strDLabel = "Product Name/Description";
    strQLabel = "Qty";
    strPLabel = "Price";
    strSLabel = "Weight"; //Added for UPS mod ||
    strRLabel = "Remove From Cart";
    strRButton= "Remove";
    strSUB = "SUBTOTAL";
    strWTOT = "TOTAL WEIGHT"; //Added for UPS mod ||
    strSHIP = "SHIPPING";
    strTAX = "TAX";
    strTOT = "TOTAL";
    strErrQty = "Invalid Quantity.";
    strNewQty = 'Please enter new 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: AddToCart ||
// PARAMETERS: Form Object ||
// RETURNS: Cookie to user's browser, with prompt ||
// PURPOSE: Adds a product to the user's shopping cart ||
// EXTRAS ADDED IN: USERENTRY for customer text input ||
// EXTRA: check cart not already contains items from UK
//---------------------------------------------------------------------||
function AddToCart(thisForm) {
    var iNumberOrdered = 0;
    var bAlreadyInCart = false;
    var notice = "";

    if( CheckCartCookie() == 0 ) // on wrong site, being redirected
    {
        return;
    }

    iNumberOrdered = GetCookie("NumberOrdered");

    if ( iNumberOrdered == null )
        iNumberOrdered = 0;

    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;

    if ( thisForm.WEIGHT == null ) //Added for UPS mod ||
        strSHIPPING = "0";
    else
        strSHIPPING = thisForm.WEIGHT.value;

    if ( thisForm.ADDITIONALINFO == null ) {
        strADDTLINFO = "";
    } else {
        strADDTLINFO = thisForm.ADDITIONALINFO.value;
    } if ( thisForm.ADDITIONALINFO2 != null ) {
        strADDTLINFO += "; " + thisForm.ADDITIONALINFO2.value;
    } if ( thisForm.ADDITIONALINFO3 != null ) {
        strADDTLINFO += "; " + thisForm.ADDITIONALINFO3.value;
    } if ( thisForm.ADDITIONALINFO4 != null ) {
        strADDTLINFO += "; " + thisForm.ADDITIONALINFO4.value;
    }
    if ( thisForm.USERENTRY != null ) {
        strADDTLINFO += "; " + thisForm.USERENTRY.value;
    }
    if ( thisForm.USERENTRY2 != null ) {
        strADDTLINFO += "; " + thisForm.USERENTRY2.value;
    }
    if ( thisForm.USERENTRY3 != null ) {
        strADDTLINFO += "; " + thisForm.USERENTRY3.value;
    }
    //Is this product already in the cart? If so, increment quantity instead of adding another.
    for ( i = 1; i <= iNumberOrdered; i++ ) {
        NewOrder = "Order." + i;
        database = "";
        database = GetCookie(NewOrder);

        Token0 = database.indexOf("|", 0);
        Token1 = database.indexOf("|", Token0+1);
        Token2 = database.indexOf("|", Token1+1);
        Token3 = database.indexOf("|", Token2+1);
        Token4 = database.indexOf("|", Token3+1);

        fields = new Array;
        fields[0] = database.substring( 0, Token0 );
        fields[1] = database.substring( Token0+1, Token1 );
        fields[2] = database.substring( Token1+1, Token2 );
        fields[3] = database.substring( Token2+1, Token3 );
        fields[4] = database.substring( Token3+1, Token4 );
        fields[5] = database.substring( Token4+1, database.length );

        if ( fields[0] == strID_NUM &&
            fields[2] == strPRICE &&
            fields[3] == strNAME &&
            fields[5] == strADDTLINFO
            ) {
            bAlreadyInCart = true;
            dbUpdatedOrder = strID_NUM + "|" +
            (parseInt(strQUANTITY)+parseInt(fields[1])) + "|" +
            strPRICE + "|" +
            strNAME + "|" +
            strSHIPPING + "|" +
            strADDTLINFO;
            strNewOrder = "Order." + i;
            DeleteCookie(strNewOrder, "/");
            SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
            notice = strAdded + "\n-------------------------------------\n" + "Quantity : " + strQUANTITY + "\nProduct  : " + strNAME;
            break;
        }
    }


    if ( !bAlreadyInCart ) {
        iNumberOrdered++;

        if ( iNumberOrdered > 12 )
            alert( strSorry );
        else {
            dbUpdatedOrder = strID_NUM + "|" +
            strQUANTITY + "|" +
            strPRICE + "|" +
            strNAME + "|" +
            strSHIPPING + "|" +
            strADDTLINFO;

            strNewOrder = "Order." + iNumberOrdered;
            SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
            SetCookie("NumberOrdered", iNumberOrdered, null, "/");
            notice = strAdded + "\n-------------------------------------\n" + "Quantity : " + strQUANTITY + "\nProduct  : " + strNAME;
        }
    }

    if ( DisplayNotice && notice!=''){
        alert(notice);
        self.location.href='/products/cart_contents.html';
    }else{
}

}


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

        fields = new Array;
        fields[0] = database.substring( 0, Token0 );
        fields[1] = database.substring( Token0+1, Token1 );
        fields[2] = database.substring( Token1+1, Token2 );
        fields[3] = database.substring( Token2+1, Token3 );
        fields[4] = database.substring( Token3+1, Token4 );
        fields[5] = database.substring( Token4+1, database.length );

        dbUpdatedOrder = fields[0] + "|" +
        NewQuantity + "|" +
        fields[2] + "|" +
        fields[3] + "|" +
        fields[4] + "|" +
        fields[5];
        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 ||
// EXTRAS ADDED IN: Code to enable UPS mod. ||
//---------------------------------------------------------------------||
function ManageCart( ) {
    var iNumberOrdered = 0; //Number of products ordered
    var fTotal = 0; //Total cost of order
    var fTax = 0; //Tax amount
    var fWeight = 0; //Weight
    var fShipping = 0; //Shipping amount
    var numHampers = 0;
    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;

    LocationSelected = GetCookie("ZoneSelected");
    if (LocationSelected == null) LocationSelected = 8; // Code to use Wichita as default checked if customer goes to Checkout with an empty Cart ||


    if ( bDisplay )
        strOutput = "<h2>Products in your cart:</h2><br><TABLE CELLSPACING=0 CELLPADDING=2 BORDER=0 bgcolor=#ffffff><TR>" +
        "<TD CLASS=\"orderhd\" ALIGN=CENTER><B>"+strILabel+"</B></TD>" +
        "<TD CLASS=\"orderhd\" ALIGN=CENTER><B>"+strDLabel+"</B></TD>" +
        "<TD CLASS=\"orderhd\" ALIGN=CENTER><B>"+strQLabel+"</B></TD>" +
        "<TD CLASS=\"orderhd\" ALIGN=CENTER><B>"+strPLabel+"</B></TD>" +
        (DisplayShippingColumn?"<TD CLASS=\"orderhd\" ALIGN=CENTER><B>"+strSLabel+"</B></TD>":"") +
        "<TD CLASS=\"orderhd\" ALIGN=CENTER><B>"+strRLabel+"</B></TD></TR>";

    if ( iNumberOrdered == 0 ) {
        strOutput += "<TR><TD COLSPAN=6 CLASS=\"orderhd\"><CENTER><BR><B>Your cart is empty</B><BR><BR></CENTER></TD></TR>";
    }

    for ( i = 1; i <= iNumberOrdered; i++ ) {
        even = Math.round(i/2);
        NewOrder = "Order." + i;
        database = "";
        database = GetCookie(NewOrder);

        Token0 = database.indexOf("|", 0);
        Token1 = database.indexOf("|", Token0+1);
        Token2 = database.indexOf("|", Token1+1);
        Token3 = database.indexOf("|", Token2+1);
        Token4 = database.indexOf("|", Token3+1);

        fields = new Array;
        fields[0] = database.substring( 0, Token0 ); // 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 ); // Weight
        fields[5] = database.substring( Token4+1, database.length ); //Additional Information

        fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) );
        fWeight += (parseInt(fields[1]) * parseFloat(fields[4]) );
        fWeight = Math.round(fWeight * 100)/100;
        var strProductId = fields[0];
        if( strProductId[0] != 'n' ) {
            fTax += (parseInt(fields[1]) * parseFloat(fields[2]) ) * TaxRate;
        }

        strTotal = moneyFormat(fTotal);
        strTax = moneyFormat(fTax);

        if ( IsHamper(strProductId) )
            ++numHampers;

        if ( bDisplay ){
            if ((even) ==(i/2) ) {
                strOutput += "<TR><TD CLASS=\"nopeven\" ALIGN=CENTER>" + fields[0] + "</TD>";

                if ( fields[5] == "" )
                    strOutput += "<TD CLASS=\"nopeven\">" + fields[3] + "</TD>";
                else
                    strOutput += "<TD CLASS=\"nopeven\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>";

                if ( DisplayChangeQty ) {
                    strOutput += "<TD CLASS=\"nopeven\" ALIGN=CENTER><INPUT TYPE=TEXT NAME=Q SIZE=2 VALUE=\"" + fields[1] + "\" onChange=\"ChangeQuantity("+i+", this.value);\"></TD>";
                } else {
                    strOutput += "<TD CLASS=\"nopeven\" ALIGN=CENTER>" + fields[1] + "</TD>";
                }
                strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(fields[2]) + "/ea</TD>";

                if ( DisplayShippingColumn ) {

                    strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(parseInt(fields[1]) * parseFloat(fields[2]) ) + "</TD>";
                }else {
                    strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>N/A</TD>";
                }

                strOutput += "<TD CLASS=\"nopeven\" ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"mybutorder\"></TD></TR>";
            }
            else {
                strOutput += "<TR><TD CLASS=\"nopentry\" ALIGN=CENTER>" + fields[0] + "</TD>";

                if ( fields[5] == "" )
                    strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + "</TD>";
                else
                    strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>";

                if ( DisplayChangeQty ) {
                    strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER><INPUT TYPE=TEXT NAME=Q SIZE=2 VALUE=\"" + fields[1] + "\" onChange=\"ChangeQuantity("+i+", this.value);\"></TD>";
                } else {
                    strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER>" + fields[1] + "</TD>";
                }
                strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(fields[2]) + "/ea</TD>";

                if ( DisplayShippingColumn ) {

                    strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(parseInt(fields[1]) * parseFloat(fields[2]) ) + "</TD>";
                }else {
                    strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>N/A</TD>";
                }

                strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"mybutorder\"></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=\"" + OutputItemWeight + strFooter + "\" value=\"" + fields[4] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">";
        }

    }//for all ordered items

    if ( bDisplay ) {
        //strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>"+strSUB+"</B></TD>";
        //strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + strTotal + strSpace +"</B></TD></tr>";
        strOutput += "<tr><td colspan=5 width=100%><br><input type=\"button\" value=\"Add More Products\" onClick=\"AddMoreToCart('/products/index.html');\" class=\"mybutorder\"></td></tr></table><table>";

        //this displays the shipping matrix and sets the value for each zone ||

        if (( DisplayShippingRow ) && ( iNumberOrdered != 0)) {
            strOutput += "<br><h2>Choose your method of shipping:</h2><br><table width=\"100%\"  bgcolor=#ffffff><tr><td width=\"50%\" valign=\"top\"><Table cellpadding=\"0\" cellspacing=\"0\" bgcolor=#ffffff><tr><td colspan=\"4\"><strong> <span style=\"color: #000099\">Australia</span></strong><br><span style=\"color: #000099;font-size:10pt;\">&nbsp; &nbsp; - Regular Approx. 2 to 5 Business Days<br>&nbsp; &nbsp; - Express Approx. 1 to 2 Business Days</span><p style=\"text-align:right; font-size: 7pt; color: #000099; margin-top: 3px;\">Does not include <a href=\"/company/faqs.html#ques3\" target=\"_blank\" style=\"text-decoration: underline; color: #000099;\">processing time</a></p></td></tr><tr><td colspan=\"4\"><br></td></tr><TR><TD CLASS=\"nopship\" COLSPAN=1 ALIGN=right><B>"+"REGULAR"+"</B></TD><TD CLASS=\"nopship\" COLSPAN=1 ALIGN=left><B>"+"EXPRESS"+"</B></TD></tr>";
            strOutput += "<tr><TD CLASS=\"regmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"MELA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "</td><TD CLASS=\"expmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"MELB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"> Melbourne";
            strOutput += "<tr><TD CLASS=\"regmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"REGA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "</td><TD CLASS=\"expmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"REGB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"> Regional Victoria";
            strOutput += "<tr><TD CLASS=\"regmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"NSWA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "</td><TD CLASS=\"expmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"NSWB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"> New South Wales & ACT";
            strOutput += "<tr><TD CLASS=\"regmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"QLDA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "</td><TD CLASS=\"expmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"QLDB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"> Queensland";
            strOutput += "<tr><TD CLASS=\"regmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"SAA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "</td><TD CLASS=\"expmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"SAB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"> South Australia";
            strOutput += "<tr><TD CLASS=\"regmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"NTA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "</td><TD CLASS=\"expmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"NTB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"> Northern Territory";
            strOutput += "<tr><TD CLASS=\"regmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"WAA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "</td><TD CLASS=\"expmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"WAB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"> Western Australia";
            strOutput += "<tr><TD CLASS=\"regmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"TASA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "</td><TD CLASS=\"expmail\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"TASB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"> Tasmania";
            strOutput += "</td></tr></table></td><td width=\"50%\" valign=\"top\">";
            strOutput += "<table cellpadding=\"0\" cellspacing=\"0\" bgcolor=#ffffff border=0><tr><td colspan=\"4\"><strong><span style=\"color: #cc6600\">Overseas</span></strong><br><span style=\"color: #cc6600; font-size:10pt;\">&nbsp; &nbsp; - Regular Approx. 7 to 10 Business Days<br>&nbsp; &nbsp; - Express Approx. 2 to 5 Business Days</span><p style=\"text-align:right; font-size: 7pt; color: #cc6600; margin-top: 3px; padding-right: 25px;\">Does not include <a href=\"/company/faqs.html#ques3\" target=\"_blank\" style=\"text-decoration: underline; color: #cc6600;\">processing time</a></p></td></tr><tr><td colspan=\"4\"><br></td></tr><TR><TD CLASS=\"nopship\" COLSPAN=1 ALIGN=right><B>"+"REGULAR"+"</B></TD><TD CLASS=\"nopship\" COLSPAN=2 ALIGN=left><B>"+"EXPRESS"+"</B></TD></tr>";
            strOutput += "<tr><TD CLASS=\"regmail2\" valign=\"top\"><input type=radio name=\"ZONE\" value=\"NZA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"></td><TD CLASS=\"expmail2\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"NZB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "Zone A - New Zealand</td></tr>";
            strOutput += "<tr><TD CLASS=\"regmail2\" valign=\"top\"><input type=radio name=\"ZONE\" value=\"APA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"></td><TD CLASS=\"expmail2\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"APB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "Zone B - Asia / Pacific</td></tr>";
            strOutput += "<tr><TD CLASS=\"regmail2\" valign=\"top\"><BR></td><TD CLASS=\"expmail2\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"USB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "Zone C - Canada / Middle East</td></tr>";
            strOutput += "<tr><TD CLASS=\"regmail2\" valign=\"top\"><input type=radio name=\"ZONE\" value=\"RWA" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\"></td><TD CLASS=\"expmail2\" valign=\"top\">";
            strOutput += "<input type=radio name=\"ZONE\" value=\"RWB" + "\" onClick=\"ComputeShipping(this.value, "+fWeight+", " + numHampers + ")\">";
            strOutput += "Zone D - Europe and Rest of the World";
            strOutput += "</TD>";
            strOutput += "</TR></table></td></tr></table><table width=100% bgcolor=#ffffff>";

            document.write(strOutput);
            strOutput = "";

            LocationSelected = GetCookie("ZoneSelected");
            if (LocationSelected == null) LocationSelected = 8; // Code to use Local Area as default checked, but not needed because want null selected at this time ||
            //if (LocationSelected != null) document.all.ZONE[LocationSelected].checked = true;

            if (LocationSelected != null) {
                var cLocations = document.getElementsByName('ZONE');
                for (var iCtr = 0; iCtr < cLocations.length; iCtr++) {
                    if (cLocations[iCtr].value == LocationSelected) cLocations[iCtr].checked = true;
                }
            }

            if (LocationSelected == "MELA" ) LocationLabel = "Melbourne - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "MELB" ) LocationLabel = "Melbourne - Express Approx. 1 to 2 Days";
            if (LocationSelected == "REGA" ) LocationLabel = "Regional Victoria - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "REGB" ) LocationLabel = "Regional Victoria - Express Approx. 1 to 2 Days";
            if (LocationSelected == "NSWA" ) LocationLabel = "New South Wales / ACT - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "NSWB" ) LocationLabel = "New South Wales / ACT - Express Approx. 1 to 2 Days";
            if (LocationSelected == "QLDA" ) LocationLabel = "Queensland - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "QLDB" ) LocationLabel = "Queensland - Express Approx. 1 to 2 Days";
            if (LocationSelected == "SAA" ) LocationLabel = "South Australia - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "SAB" ) LocationLabel = "South Australia - Express Approx. 1 to 2 Days";
            if (LocationSelected == "NTA" ) LocationLabel = "Northern Territory - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "NTB" ) LocationLabel = "Northern Territory - Express Approx. 1 to 2 Days";
            if (LocationSelected == "WAA" ) LocationLabel = "Western Australia - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "WAB" ) LocationLabel = "Western Australia - Express Approx. 1 to 2 Days";
            if (LocationSelected == "TASA" ) LocationLabel = "Tasmania - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "TASB" ) LocationLabel = "Tasmania - Express Approx. 1 to 2 Days";
            if (LocationSelected == "NZA") LocationLabel = "Zone A - Regular Approx. 7 to 10 Days";
            if (LocationSelected == "NZB") LocationLabel = "Zone A - Express Approx. 2 to 5 Days";
            if (LocationSelected == "APA") LocationLabel = "Zone B - Regular Approx. 7 to 10 Days";
            if (LocationSelected == "APB") LocationLabel = "Zone B - Express Approx. 2 to 5 Days";
            if (LocationSelected == "USA") LocationLabel = "Zone C - Regular Approx. 7 to 10 Days";
            if (LocationSelected == "USB") LocationLabel = "Zone C - Express Approx. 2 to 5 Days";
            if (LocationSelected == "RWA") LocationLabel = "Zone D - Regular Approx. 7 to 10 Days";
            if (LocationSelected == "RWB") LocationLabel = "Zone D - Express Approx. 2 to 5 Days";
            if (LocationSelected == 8) LocationLabel = '<font color="#FF0000">Select Shipping Zone</font>';

            if ((fWeight == 0) && (numHampers==0)) fShipping = 0;
            else fShipping = ComputeShipping(LocationSelected, fWeight, numHampers);

            strTax = moneyFormat(fTax + (fShipping * 0.100));

            strShipping = moneyFormat(fShipping);
            strOutput += "<TR><td><br></td></tr><tr><TD CLASS=\"noptotal\"><B>"+strSUB+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\"><B>\$AU " + MonetarySymbol + strTotal + strSpace +"</B></TD></tr>";
            strOutput += "<TR><TD CLASS=\"nopweight\"><B>"+strWTOT+"</B></TD>";
            strOutput += "<TD CLASS=\"nopweight\" COLSPAN=1><B>" + fWeight + " gms" + "</B></TD>";
            strOutput += "</TR>";
            strOutput += "<TR><TD CLASS=\"noptotal\"><B>" + strSHIP +"&nbsp;&nbsp;" + LocationLabel + "</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=left><B>\$AU " + MonetarySymbol + strShipping + strSpace +"</B></TD>";
            strOutput += "</TR>";
        }

        if ( DisplayTaxRow || TaxByRegion ) {
            if ( TaxByRegion ) {
                strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>"+strTAX+"</B></TD>";
                strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1><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=5><B>"+strTAX+"</B></TD>";
                strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=left><B>" + MonetarySymbol + strTax + strSpace +"</B></TD>";
                strOutput += "</TR>";
            }
        }

        if (LocationSelected != "MELA"
            && LocationSelected != "MELB"
            && LocationSelected != "REGA"
            && LocationSelected != "REGB"
            && LocationSelected != "NSWA"
            && LocationSelected != "NSWB"
            && LocationSelected != "QLDA"
            && LocationSelected != "QLDB"
            && LocationSelected != "SAA"
            && LocationSelected != "SAB"
            && LocationSelected != "NTA"
            && LocationSelected != "NTB"
            && LocationSelected != "WAA"
            && LocationSelected != "WAB"
            && LocationSelected != "TASA"
            && LocationSelected != "TASB" ) //sets tax to 0.00 for all areas except 0 ||
            fTax = 0.00;

        if (LocationSelected == "MELA"
            || LocationSelected == "MELB"
            || LocationSelected == "REGA"
            || LocationSelected == "REGB"
            || LocationSelected == "NSWA"
            || LocationSelected == "NSWB"
            || LocationSelected == "QLDA"
            || LocationSelected == "QLDB"
            || LocationSelected == "SAA"
            || LocationSelected == "SAB"
            || LocationSelected == "NTA"
            || LocationSelected == "NTB"
            || LocationSelected == "WAA"
            || LocationSelected == "WAB"
            || LocationSelected == "TASA"
            || LocationSelected == "TASB")
            {
            strOutput += "<TR><TD CLASS=\"noptotal\"><B>"+strTAX+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=left><B>\$AU " + MonetarySymbol + strTax + strSpace +"</B></TD>";
            strOutput += "</TR>";
            fTax = fTax + (fShipping * 0.100);
        }

        if ( !TaxByRegion )
        {
            strOutput += "<TR><TD CLASS=\"noptotal2\"><B>"+strTOT+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal2\" COLSPAN=1 ALIGN=left><B>\$AU " + MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + strSpace +"</B></TD>";
            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);
    g_TotalWeight = fWeight;

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

//---------------------------------------------------------------------||
// FUNCTION: IsHamper ||
// PARAMETERS: ||
// RETURNS: ||
// PURPOSE: Compute shipping cost due to total weight ||
//---------------------------------------------------------------------||
function IsHamper(productId) {
    var productPrefix = productId.substring( 0, 2 );

    return ( (productPrefix == "CO") || (productPrefix == "JU") || (productPrefix == "SW") );
}

//---------------------------------------------------------------------||
// FUNCTION: ComputeShipping ||
// PARAMETERS:
//  Zone - shipping zone
//  TotWeight - total weight
//  numHampers - number of hampers in order
// RETURNS: Shipping charge ||
// PURPOSE: Compute shipping including $50 flat fee for hampers ||
//---------------------------------------------------------------------||
function ComputeShipping(Zone, TotWeight, numHampers) {
    var result;
    
    result = ComputeShippingFromWeight(Zone, TotWeight);
    
    // Add flat $50 shipping for hampers
    if ( numHampers > 0 )
        result += numHampers * 50;
    
    return result;
}

//---------------------------------------------------------------------||
// FUNCTION: ComputeShippingFromWeight ||
// PARAMETERS: ||
// RETURNS: ||
// PURPOSE: Compute shipping cost due to total weight ||
//---------------------------------------------------------------------||
function ComputeShippingFromWeight(Zone, TotWeight) {
    LocationValue = GetCookie("ZoneSelected");

    if (LocationValue != Zone) {
        SetCookie("ZoneSelected", Zone, null, "/");
        location.href=location.href;
    }

    if (TotWeight == 0) return 0.00;

    if (LocationValue == "MELA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (3.60 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 500) && (TotWeight > 251)) return (4.65 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (6.20 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "MELB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (6.80 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (9.70 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }


    if (LocationValue == "REGA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (3.60 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 500) && (TotWeight > 251)) return (4.65 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (6.20 + (0.00035 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "REGB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (6.80 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (9.70 + (0.00065 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }


    if (LocationValue == "NSWA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (3.60 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 500) && (TotWeight > 251)) return (4.65 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (7.90 + (0.00060 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "NSWB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (6.80 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (9.70 + (0.00460 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }



    if (LocationValue == "QLDA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (3.60 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 500) && (TotWeight > 251)) return (4.65 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (7.90 + (0.00180 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "QLDB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (6.80 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (9.70 + (0.00870 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "SAA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (3.60 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 500) && (TotWeight > 251)) return (4.65 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (7.90 + (0.00085 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "SAB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (6.80 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (9.70 + (0.00310 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "NTA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (3.60 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 500) && (TotWeight > 251)) return (4.65 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (7.90 + (0.00270 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "NTB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (6.80 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (9.70 + (0.01070 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "WAA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (3.60 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 500) && (TotWeight > 251)) return (4.65 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (7.90 + (0.00275 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "WAB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (6.80 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (9.70 + (0.01400 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "TASA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (3.60 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 500) && (TotWeight > 251)) return (4.65 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (7.90 + (0.00090 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "TASB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (6.80 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 500)) return (9.70 + (0.00250 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "NZA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (6.00);
        if ((TotWeight <= 500) && (TotWeight > 251)) return (9.00);
        if ((TotWeight <= 750) && (TotWeight > 501)) return (12.50);
        if ((TotWeight <= 1000) && (TotWeight > 751)) return (15.50);
        if ((TotWeight <= 1250) && (TotWeight > 1001)) return (19.00);
        if ((TotWeight <= 1500) && (TotWeight > 1251)) return (22.00);
        if ((TotWeight <= 1750) && (TotWeight > 1501)) return (25.50);
        if ((TotWeight <= 2000) && (TotWeight > 1751)) return (28.50);
        if ((TotWeight <= 2500) && (TotWeight > 2001)) return (32.00);
        if ((TotWeight <= 3000) && (TotWeight > 2501)) return (35.50);
        if ((TotWeight <= 3500) && (TotWeight > 3001)) return (39.00);
        if ((TotWeight <= 4000) && (TotWeight > 3501)) return (42.50);
        if ((TotWeight <= 4500) && (TotWeight > 4001)) return (46.00);
        if ((TotWeight <= 5000) && (TotWeight > 4501)) return (49.50);
        if ((TotWeight <= 5500) && (TotWeight > 5001)) return (53.00);
        if ((TotWeight <= 6000) && (TotWeight > 5501)) return (56.50);
        if ((TotWeight <= 6500) && (TotWeight > 6001)) return (60.00);
        if ((TotWeight <= 7000) && (TotWeight > 6501)) return (63.50);
        if ((TotWeight <= 7500) && (TotWeight > 7001)) return (67.00);
        if ((TotWeight <= 8000) && (TotWeight > 7501)) return (70.50);
        if ((TotWeight <= 8500) && (TotWeight > 8001)) return (74.00);
        if ((TotWeight <= 9000) && (TotWeight > 8501)) return (77.50);
        if ((TotWeight <= 9500) && (TotWeight > 9001)) return (81.00);
        if ((TotWeight <= 10000) && (TotWeight > 9501)) return (84.50);
        if ((TotWeight <= 10500) && (TotWeight > 10001)) return (88.00);
        if ((TotWeight <= 11000) && (TotWeight > 10501)) return (91.50);
        if ((TotWeight <= 11500) && (TotWeight > 11001)) return (95.00);
        if ((TotWeight <= 12000) && (TotWeight > 11501)) return (98.50);
        if ((TotWeight <= 12500) && (TotWeight > 12001)) return (102.00);
        if ((TotWeight <= 13000) && (TotWeight > 12501)) return (105.50);
        if ((TotWeight <= 13500) && (TotWeight > 13001)) return (109.00);
        if ((TotWeight <= 14000) && (TotWeight > 13501)) return (112.50);
        if ((TotWeight <= 14500) && (TotWeight > 14001)) return (116.00);
        if ((TotWeight <= 15000) && (TotWeight > 14501)) return (119.50);
        if ((TotWeight <= 15500) && (TotWeight > 15001)) return (123.00);
        if ((TotWeight <= 16000) && (TotWeight > 15501)) return (126.50);
        if ((TotWeight <= 16500) && (TotWeight > 16001)) return (130.00);
        if ((TotWeight <= 17000) && (TotWeight > 16501)) return (133.50);
        if ((TotWeight <= 17500) && (TotWeight > 17001)) return (137.00);
        if ((TotWeight <= 18000) && (TotWeight > 17501)) return (140.50);
        if ((TotWeight <= 18500) && (TotWeight > 18001)) return (144.00);
        if ((TotWeight <= 19000) && (TotWeight > 18501)) return (147.50);
        if ((TotWeight <= 19500) && (TotWeight > 19001)) return (151.00);
        if ((TotWeight <= 20000) && (TotWeight > 19501)) return (154.50);
        if ((TotWeight <= 20001) && (TotWeight > 20000)) return (0.00);
    }


    if (LocationValue == "NZB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (37.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 1000) && (TotWeight > 501)) return (42.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 2000) && (TotWeight > 1001)) return (49.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 3000) && (TotWeight > 2001)) return (57.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 5000) && (TotWeight > 3001)) return (72.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 7500) && (TotWeight > 5001)) return (92.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 10000) && (TotWeight > 7501)) return (113.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 12500) && (TotWeight > 10001)) return (133.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 15000) && (TotWeight > 12501)) return (153.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 17500) && (TotWeight > 15001)) return (173.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 17501)) return (193.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }



    if (LocationValue == "APA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (7.00);
        if ((TotWeight <= 500) && (TotWeight > 251)) return (11.00);
        if ((TotWeight <= 750) && (TotWeight > 501)) return (15.50);
        if ((TotWeight <= 1000) && (TotWeight > 751)) return (19.50);
        if ((TotWeight <= 1250) && (TotWeight > 1001)) return (24.00);
        if ((TotWeight <= 1500) && (TotWeight > 1251)) return (28.00);
        if ((TotWeight <= 1750) && (TotWeight > 1501)) return (32.50);
        if ((TotWeight <= 2000) && (TotWeight > 1751)) return (36.50);
        if ((TotWeight <= 2500) && (TotWeight > 2001)) return (41.00);
        if ((TotWeight <= 3000) && (TotWeight > 2501)) return (45.50);
        if ((TotWeight <= 3500) && (TotWeight > 3001)) return (50.00);
        if ((TotWeight <= 4000) && (TotWeight > 3501)) return (54.50);
        if ((TotWeight <= 4500) && (TotWeight > 4001)) return (59.00);
        if ((TotWeight <= 5000) && (TotWeight > 4501)) return (63.50);
        if ((TotWeight <= 5500) && (TotWeight > 5001)) return (68.00);
        if ((TotWeight <= 6000) && (TotWeight > 5501)) return (72.50);
        if ((TotWeight <= 6500) && (TotWeight > 6001)) return (77.00);
        if ((TotWeight <= 7000) && (TotWeight > 6501)) return (81.50);
        if ((TotWeight <= 7500) && (TotWeight > 7001)) return (86.00);
        if ((TotWeight <= 8000) && (TotWeight > 7501)) return (90.50);
        if ((TotWeight <= 8500) && (TotWeight > 8001)) return (95.00);
        if ((TotWeight <= 9000) && (TotWeight > 8501)) return (99.50);
        if ((TotWeight <= 9500) && (TotWeight > 9001)) return (104.00);
        if ((TotWeight <= 10000) && (TotWeight > 9501)) return (108.50);
        if ((TotWeight <= 10500) && (TotWeight > 10001)) return (113.00);
        if ((TotWeight <= 11000) && (TotWeight > 10501)) return (117.50);
        if ((TotWeight <= 11500) && (TotWeight > 11001)) return (122.00);
        if ((TotWeight <= 12000) && (TotWeight > 11501)) return (126.50);
        if ((TotWeight <= 12500) && (TotWeight > 12001)) return (131.00);
        if ((TotWeight <= 13000) && (TotWeight > 12501)) return (135.50);
        if ((TotWeight <= 13500) && (TotWeight > 13001)) return (140.00);
        if ((TotWeight <= 14000) && (TotWeight > 13501)) return (144.50);
        if ((TotWeight <= 14500) && (TotWeight > 14001)) return (149.00);
        if ((TotWeight <= 15000) && (TotWeight > 14501)) return (153.50);
        if ((TotWeight <= 15500) && (TotWeight > 15001)) return (158.00);
        if ((TotWeight <= 16000) && (TotWeight > 15501)) return (162.50);
        if ((TotWeight <= 16500) && (TotWeight > 16001)) return (167.00);
        if ((TotWeight <= 17000) && (TotWeight > 16501)) return (171.50);
        if ((TotWeight <= 17500) && (TotWeight > 17001)) return (176.00);
        if ((TotWeight <= 18000) && (TotWeight > 17501)) return (180.50);
        if ((TotWeight <= 18500) && (TotWeight > 18001)) return (185.00);
        if ((TotWeight <= 19000) && (TotWeight > 18501)) return (189.50);
        if ((TotWeight <= 19500) && (TotWeight > 19001)) return (194.00);
        if ((TotWeight <= 20000) && (TotWeight > 19501)) return (198.50);
        if ((TotWeight <= 20001) && (TotWeight > 20000)) return (0.00);
    }


    if (LocationValue == "APB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (40.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 1000) && (TotWeight > 501)) return (46.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 2000) && (TotWeight > 1001)) return (55.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 3000) && (TotWeight > 2001)) return (67.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 5000) && (TotWeight > 3001)) return (88.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 7500) && (TotWeight > 5001)) return (115.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 10000) && (TotWeight > 7501)) return (143.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 12500) && (TotWeight > 10001)) return (170.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 15000) && (TotWeight > 12501)) return (198.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 17500) && (TotWeight > 15001)) return (225.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 17501)) return (253.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }

    if (LocationValue == "USA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (8.00);
        if ((TotWeight <= 500) && (TotWeight > 251)) return (13.00);
        if ((TotWeight <= 750) && (TotWeight > 501)) return (18.50);
        if ((TotWeight <= 1000) && (TotWeight > 751)) return (23.50);
        if ((TotWeight <= 1250) && (TotWeight > 1001)) return (29.00);
        if ((TotWeight <= 1500) && (TotWeight > 1251)) return (34.00);
        if ((TotWeight <= 1750) && (TotWeight > 1501)) return (39.50);
        if ((TotWeight <= 2000) && (TotWeight > 1751)) return (44.50);
        if ((TotWeight <= 2500) && (TotWeight > 2001)) return (51.00);
        if ((TotWeight <= 3000) && (TotWeight > 2501)) return (57.50);
        if ((TotWeight <= 3500) && (TotWeight > 3001)) return (64.00);
        if ((TotWeight <= 4000) && (TotWeight > 3501)) return (70.50);
        if ((TotWeight <= 4500) && (TotWeight > 4001)) return (77.00);
        if ((TotWeight <= 5000) && (TotWeight > 4501)) return (83.50);
        if ((TotWeight <= 5500) && (TotWeight > 5001)) return (90.00);
        if ((TotWeight <= 6000) && (TotWeight > 5501)) return (96.50);
        if ((TotWeight <= 6500) && (TotWeight > 6001)) return (103.00);
        if ((TotWeight <= 7000) && (TotWeight > 6501)) return (109.50);
        if ((TotWeight <= 7500) && (TotWeight > 7001)) return (116.00);
        if ((TotWeight <= 8000) && (TotWeight > 7501)) return (122.50);
        if ((TotWeight <= 8500) && (TotWeight > 8001)) return (129.00);
        if ((TotWeight <= 9000) && (TotWeight > 8501)) return (135.50);
        if ((TotWeight <= 9500) && (TotWeight > 9001)) return (142.00);
        if ((TotWeight <= 10000) && (TotWeight > 9501)) return (148.50);
        if ((TotWeight <= 10500) && (TotWeight > 10001)) return (155.00);
        if ((TotWeight <= 11000) && (TotWeight > 10501)) return (161.50);
        if ((TotWeight <= 11500) && (TotWeight > 11001)) return (168.00);
        if ((TotWeight <= 12000) && (TotWeight > 11501)) return (174.50);
        if ((TotWeight <= 12500) && (TotWeight > 12001)) return (181.00);
        if ((TotWeight <= 13000) && (TotWeight > 12501)) return (187.50);
        if ((TotWeight <= 13500) && (TotWeight > 13001)) return (194.00);
        if ((TotWeight <= 14000) && (TotWeight > 13501)) return (200.50);
        if ((TotWeight <= 14500) && (TotWeight > 14001)) return (207.00);
        if ((TotWeight <= 15000) && (TotWeight > 14501)) return (213.50);
        if ((TotWeight <= 15500) && (TotWeight > 15001)) return (220.00);
        if ((TotWeight <= 16000) && (TotWeight > 15501)) return (226.50);
        if ((TotWeight <= 16500) && (TotWeight > 16001)) return (233.00);
        if ((TotWeight <= 17000) && (TotWeight > 16501)) return (239.50);
        if ((TotWeight <= 17500) && (TotWeight > 17001)) return (246.00);
        if ((TotWeight <= 18000) && (TotWeight > 17501)) return (252.50);
        if ((TotWeight <= 18500) && (TotWeight > 18001)) return (259.00);
        if ((TotWeight <= 19000) && (TotWeight > 18501)) return (265.50);
        if ((TotWeight <= 19500) && (TotWeight > 19001)) return (272.00);
        if ((TotWeight <= 20000) && (TotWeight > 19501)) return (278.50);
        if ((TotWeight <= 20001) && (TotWeight > 20000)) return (0.00);
    }


    if (LocationValue == "USB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (43.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 1000) && (TotWeight > 501)) return (52.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 2000) && (TotWeight > 1001)) return (62.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 3000) && (TotWeight > 2001)) return (79.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 5000) && (TotWeight > 3001)) return (104.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 7500) && (TotWeight > 5001)) return (139.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 10000) && (TotWeight > 7501)) return (174.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 12500) && (TotWeight > 10001)) return (211.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 15000) && (TotWeight > 12501)) return (248.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 17500) && (TotWeight > 15001)) return (286.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 17501)) return (323.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }



    if (LocationValue == "RWA" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 250) && (TotWeight > 1)) return (24.50);
        if ((TotWeight <= 500) && (TotWeight > 251)) return (30.50);
        if ((TotWeight <= 750) && (TotWeight > 501)) return (37.00);
        if ((TotWeight <= 1000) && (TotWeight > 751)) return (43.00);
        if ((TotWeight <= 1250) && (TotWeight > 1001)) return (49.50);
        if ((TotWeight <= 1500) && (TotWeight > 1251)) return (55.50);
        if ((TotWeight <= 1750) && (TotWeight > 1501)) return (62.00);
        if ((TotWeight <= 2000) && (TotWeight > 1751)) return (68.00);
        if ((TotWeight <= 2500) && (TotWeight > 2001)) return (76.50);
        if ((TotWeight <= 3000) && (TotWeight > 2501)) return (85.00);
        if ((TotWeight <= 3500) && (TotWeight > 3001)) return (93.50);
        if ((TotWeight <= 4000) && (TotWeight > 3501)) return (102.00);
        if ((TotWeight <= 4500) && (TotWeight > 4001)) return (110.50);
        if ((TotWeight <= 5000) && (TotWeight > 4501)) return (119.00);
        if ((TotWeight <= 5500) && (TotWeight > 5001)) return (127.50);
        if ((TotWeight <= 6000) && (TotWeight > 5501)) return (136.00);
        if ((TotWeight <= 6500) && (TotWeight > 6001)) return (144.50);
        if ((TotWeight <= 7000) && (TotWeight > 6501)) return (153.00);
        if ((TotWeight <= 7500) && (TotWeight > 7001)) return (161.50);
        if ((TotWeight <= 8000) && (TotWeight > 7501)) return (170.00);
        if ((TotWeight <= 8500) && (TotWeight > 8001)) return (178.50);
        if ((TotWeight <= 9000) && (TotWeight > 8501)) return (187.00);
        if ((TotWeight <= 9500) && (TotWeight > 9001)) return (195.50);
        if ((TotWeight <= 10000) && (TotWeight > 9501)) return (204.00);
        if ((TotWeight <= 10500) && (TotWeight > 10001)) return (212.50);
        if ((TotWeight <= 11000) && (TotWeight > 10501)) return (221.00);
        if ((TotWeight <= 11500) && (TotWeight > 11001)) return (229.50);
        if ((TotWeight <= 12000) && (TotWeight > 11501)) return (238.00);
        if ((TotWeight <= 12500) && (TotWeight > 12001)) return (246.50);
        if ((TotWeight <= 13000) && (TotWeight > 12501)) return (255.00);
        if ((TotWeight <= 13500) && (TotWeight > 13001)) return (263.50);
        if ((TotWeight <= 14000) && (TotWeight > 13501)) return (272.00);
        if ((TotWeight <= 14500) && (TotWeight > 14001)) return (280.50);
        if ((TotWeight <= 15000) && (TotWeight > 14501)) return (289.00);
        if ((TotWeight <= 15500) && (TotWeight > 15001)) return (297.50);
        if ((TotWeight <= 16000) && (TotWeight > 15501)) return (306.00);
        if ((TotWeight <= 16500) && (TotWeight > 16001)) return (314.50);
        if ((TotWeight <= 17000) && (TotWeight > 16501)) return (323.00);
        if ((TotWeight <= 17500) && (TotWeight > 17001)) return (331.50);
        if ((TotWeight <= 18000) && (TotWeight > 17501)) return (340.00);
        if ((TotWeight <= 18500) && (TotWeight > 18001)) return (348.50);
        if ((TotWeight <= 19000) && (TotWeight > 18501)) return (357.00);
        if ((TotWeight <= 19500) && (TotWeight > 19001)) return (365.50);
        if ((TotWeight <= 20000) && (TotWeight > 19501)) return (374.00);
        if ((TotWeight <= 20001) && (TotWeight > 20000)) return (0.00);
    }


    if (LocationValue == "RWB" ) {
        if (TotWeight <= 1) return 0.00;
        if ((TotWeight <= 500) && (TotWeight > 1)) return (45.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 1000) && (TotWeight > 501)) return (55.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 2000) && (TotWeight > 1001)) return (69.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 3000) && (TotWeight > 2001)) return (86.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 5000) && (TotWeight > 3001)) return (120.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 7500) && (TotWeight > 5001)) return (163.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 10000) && (TotWeight > 7501)) return (205.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 12500) && (TotWeight > 10001)) return (248.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 15000) && (TotWeight > 12501)) return (290.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 17500) && (TotWeight > 15001)) return (333.00 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
        if ((TotWeight <= 20000) && (TotWeight > 17501)) return (375.50 + (0.00 * Math.ceil(parseFloat((TotWeight - 1) / 1))));
    }
    if (LocationValue == 8 ) return 0.00;

    // If unknown location, return 0 for shipping
    return 0.00;
}

//---------------------------------------------------------------------||
// FUNCTION:    ValidateCart                                           ||
// PARAMETERS:  Form to validate                                       ||
// RETURNS:     true/false                                             ||
// PURPOSE:     Validates the managecart form                          ||
//---------------------------------------------------------------------||
var g_TotalCost = 0;
var g_TotalWeight = 0;

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

    if ( isNaN(g_TotalCost) || (g_TotalWeight > 20000) ) {
        alert( NoQtyPrompt );
        return false;
    }

    if ( MinimumOrder >= 0.01 ) {
        if ( g_TotalCost < MinimumOrder ) {
            alert( MinimumOrderPrompt );
            return false;
        }
    }

    if ( !RadioChecked(theForm.ZONE) ) {
        alert( LocationPrompt );
        return false;
    }

    return true;
}


//---------------------------------------------------------------------||
// FUNCTION: CheckoutCart ||
// PARAMETERS: Null ||
// RETURNS: Product Table Written to Document ||
// PURPOSE: Draws current cart product table on HTML page for ||
// checkout. ||
//---------------------------------------------------------------------||
function AddMoreToCart(gohere) {
    window.location=gohere;
}

//---------------------------------------------------------------------||
// 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 fWeight = 0; //Weight
    var numHampers = 0;
    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  bgcolor=#ffffff CELLSPACING=0 CELLPADDING=2 BORDER=0 CLASS=\"nopcart\"><TR>" +
        "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strILabel+"</B></TD>" +
        "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strDLabel+"</B></TD>" +
        "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strQLabel+"</B></TD>" +
        "<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strPLabel+"</B></TD>" +
        (DisplayShippingColumn?"<TD CLASS=\"nopheader\" ALIGN=CENTER><B>"+strSLabel+"</B></TD>":"") +
        "</TR>";

    for ( i = 1; i <= iNumberOrdered; i++ ) {
        even = Math.round(i/2);
        NewOrder = "Order." + i;
        database = "";
        database = GetCookie(NewOrder);

        Token0 = database.indexOf("|", 0);
        Token1 = database.indexOf("|", Token0+1);
        Token2 = database.indexOf("|", Token1+1);
        Token3 = database.indexOf("|", Token2+1);
        Token4 = database.indexOf("|", Token3+1);

        fields = new Array;
        fields[0] = database.substring( 0, Token0 ); // 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 ); // Weight
        fields[5] = database.substring( Token4+1, database.length ); //Additional Information

        fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) );
        fWeight += (parseInt(fields[1]) * parseFloat(fields[4]) );
        fWeight = Math.round(fWeight * 100)/100;
        if ( !TaxByRegion ) var strProductId = fields[0];
        if( strProductId[0] != 'n' ) {
            fTax += (parseInt(fields[1]) * parseFloat(fields[2]) ) * TaxRate;
        }
        strTotal = moneyFormat(fTotal);
        if ( !TaxByRegion ) strTax = moneyFormat(fTax);

        if ( IsHamper(fields[0]))
            ++numHampers;

        if ( bDisplay ){
            if ((even) ==(i/2) ) {
                strOutput += "<TR><TD CLASS=\"nopeven\" ALIGN=CENTER>" + fields[0] + "</TD>";

                if ( fields[5] == "" )
                    strOutput += "<TD CLASS=\"nopeven\">" + fields[3] + "</TD>";
                else
                    strOutput += "<TD CLASS=\"nopeven\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>";

                strOutput += "<TD CLASS=\"nopeven\" ALIGN=CENTER>" + fields[1] + "</TD>";
                strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(fields[2]) + "/ea</TD>";

                if ( DisplayShippingColumn ) {

                    strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(parseInt(fields[1]) * parseFloat(fields[2]) ) + "</TD>";
                }else {
                    strOutput += "<TD CLASS=\"nopeven\" ALIGN=RIGHT>N/A</TD>";
                }

                strOutput += "</TR>";
            }
            else {
                strOutput += "<TR><TD CLASS=\"nopentry\" ALIGN=CENTER>" + fields[0] + "</TD>";

                if ( fields[5] == "" )
                    strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + "</TD>";
                else
                    strOutput += "<TD CLASS=\"nopentry\">" + fields[3] + " - <I>"+ fields[5] + "</I></TD>";

                strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER>" + fields[1] + "</TD>";
                strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(fields[2]) + "/ea</TD>";

                if ( DisplayShippingColumn ) {

                    strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>"+ MonetarySymbol + moneyFormat(parseInt(fields[1]) * parseFloat(fields[2]) ) + "</TD>";
                }else {
                    strOutput += "<TD CLASS=\"nopentry\" ALIGN=RIGHT>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 {
            LocationSelected = GetCookie("ZoneSelected");
            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=\"" + OutputItemWeight + strFooter + "\" value=\"" + fields[4] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemXtend + strFooter + "\" value=\"" + moneyFormat(fields[1] * fields[2]) + "\">";
            strOutput += "<input type=hidden name=\"" + OutputOrderZone + strFooter + "\" value=\"" + LocationSelected + "\">";
        }

    } // for each item

    if ( bDisplay ) {
        //strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=3><B>"+strSUB+"</B></TD>";
        //strOutput += "<TD CLASS=\"noptotal\" COLSPAN=2 ALIGN=RIGHT><B>" + MonetarySymbol + strTotal + "</B></TD>";
        //strOutput += "</TR>";

        if ( DisplayShippingRow ) {
            LocationSelected = GetCookie("ZoneSelected");
            if (LocationSelected == null) LocationSelected = 0; //Needed if checkout cart is empty

            if (LocationSelected == "MELA" ) LocationLabel = "Melbourne - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "MELB" ) LocationLabel = "Melbourne - Express Approx. 1 to 2 Days";
            if (LocationSelected == "REGA" ) LocationLabel = "Regional Victoria - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "REGB" ) LocationLabel = "Regional Victoria - Express Approx. 1 to 2 Days";
            if (LocationSelected == "NSWA" ) LocationLabel = "New South Wales / ACT - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "NSWB" ) LocationLabel = "New South Wales / ACT - Express Approx. 1 to 2 Days";
            if (LocationSelected == "QLDA" ) LocationLabel = "Queensland - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "QLDB" ) LocationLabel = "Queensland - Express Approx. 1 to 2 Days";
            if (LocationSelected == "SAA" ) LocationLabel = "South Australia - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "SAB" ) LocationLabel = "South Australia - Express Approx. 1 to 2 Days";
            if (LocationSelected == "NTA" ) LocationLabel = "Northern Territory - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "NTB" ) LocationLabel = "Northern Territory - Express Approx. 1 to 2 Days";
            if (LocationSelected == "WAA" ) LocationLabel = "Western Australia - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "WAB" ) LocationLabel = "Western Australia - Express Approx. 1 to 2 Days";
            if (LocationSelected == "TASA" ) LocationLabel = "Tasmania - Regular Approx. 2 to 5 Days";
            if (LocationSelected == "TASB" ) LocationLabel = "Tasmania - Express Approx. 1 to 2 Days";
            if (LocationSelected == "NZA") LocationLabel = "Zone A - Regular Approx. 7 to 10 Days";
            if (LocationSelected == "NZB") LocationLabel = "Zone A - Express Approx. 2 to 5 Days";
            if (LocationSelected == "APA") LocationLabel = "Zone B - Regular Approx. 7 to 10 Days";
            if (LocationSelected == "APB") LocationLabel = "Zone B - Express Approx. 2 to 5 Days";
            if (LocationSelected == "USA") LocationLabel = "Zone C - Regular Approx. 7 to 10 Days";
            if (LocationSelected == "USB") LocationLabel = "Zone C - Express Approx. 2 to 5 Days";
            if (LocationSelected == "RWA") LocationLabel = "Zone D - Regular Approx. 7 to 10 Days";
            if (LocationSelected == "RWB") LocationLabel = "Zone D - Express Approx. 2 to 5 Days";
            if (LocationSelected == 8) LocationLabel = '<font color="#FF0000">Select Shipping Zone</font>';


            if ((fWeight == 0) && (numHampers==0)) fShipping = 0;
            else fShipping = ComputeShipping(LocationSelected, fWeight, numHampers);

            strShipping = moneyFormat(fShipping);
            strOutput += "<TR><td><br></td></tr><tr><TD CLASS=\"noptotal\"><B>"+strSUB+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\"><B>\$AU " + MonetarySymbol + strTotal + strSpace +"</B></TD></tr>";
            strOutput += "<TR><TD CLASS=\"nopweight\"><B>"+strWTOT+"</B></TD>";
            strOutput += "<TD CLASS=\"nopweight\" COLSPAN=1><B>" + fWeight + "gms" + "</B></TD>";
            strOutput += "</TR>";
            strOutput += "<TR><TD CLASS=\"noptotal\"><B>" + strSHIP +"&nbsp;&nbsp;" + LocationLabel + "</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=left><B>" + MonetarySymbol + strShipping + strSpace +"</B></TD>";
            strOutput += "</TR>";
        }

        if ( DisplayTaxRow || TaxByRegion ) {
            if ( TaxByRegion ) {
                strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5><B>"+strTAX+"</B></TD>";
                strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1><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=5><B>"+strTAX+"</B></TD>";
                strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=left><B>" + MonetarySymbol + strTax + strSpace +"</B></TD>";
                strOutput += "</TR>";
            }
        }

        if (LocationSelected != "MELA"
            && LocationSelected != "MELB"
            && LocationSelected != "REGA"
            && LocationSelected != "REGB"
            && LocationSelected != "NSWA"
            && LocationSelected != "NSWB"
            && LocationSelected != "QLDA"
            && LocationSelected != "QLDB"
            && LocationSelected != "SAA"
            && LocationSelected != "SAB"
            && LocationSelected != "NTA"
            && LocationSelected != "NTB"
            && LocationSelected != "WAA"
            && LocationSelected != "WAB"
            && LocationSelected != "TASA"
            && LocationSelected != "TASB" ) //sets tax to 0.00 for all areas except 0 ||
            fTax = 0.00;

        if (LocationSelected == "MELA"
            || LocationSelected == "MELB"
            || LocationSelected == "REGA"
            || LocationSelected == "REGB"
            || LocationSelected == "NSWA"
            || LocationSelected == "NSWB"
            || LocationSelected == "QLDA"
            || LocationSelected == "QLDB"
            || LocationSelected == "SAA"
            || LocationSelected == "SAB"
            || LocationSelected == "NTA"
            || LocationSelected == "NTB"
            || LocationSelected == "WAA"
            || LocationSelected == "WAB"
            || LocationSelected == "TASA"
            || LocationSelected == "TASB")  {
            strOutput += "<TR><TD CLASS=\"noptotal\"><B>"+strTAX+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=left><B>" + MonetarySymbol + strTax + strSpace +"</B></TD>";
            strOutput += "</TR>";
        }

        if ( !TaxByRegion ) {
            strOutput += "<TR><TD CLASS=\"noptotal2\"><B>"+strTOT+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal2\" COLSPAN=1 ALIGN=left><B>" + MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + strSpace +"</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((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 if (LocationSelected != 0){
            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 + "0.00" + "\">";
            strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\" value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fTax)) + "\">";
            strOutput += "<input type=hidden name=\""+OutputOrderZone+"\" value=\""+ LocationLabel + "\">";
        } 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)) + "\">";
            strOutput += "<input type=hidden name=\""+OutputOrderZone+"\" value=\""+ LocationLabel + "\">";
        }
    }

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

//---------------------------------------------------------------------||
// FUNCTION: Print_total ||
// PARAMETERS: none ||
// RETURNS: Total cost currently racked up by shopper ||
// PURPOSE: Aesthetics ||
//---------------------------------------------------------------------||
function Print_total( ) {
    var strOutput = ""; //String to be written to page
    var strTotal = ""; //Total cost formatted as money
    var fTotal = 0;
    var iNumberOrdered = 0; //Number of products ordered


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


    for ( i = 1; i <= iNumberOrdered; i++ ) {

        NewOrder = "Order." + i;
        database = "";
        database = GetCookie(NewOrder);

        Token0 = database.indexOf("|", 0);
        Token1 = database.indexOf("|", Token0+1);
        Token2 = database.indexOf("|", Token1+1);
        Token3 = database.indexOf("|", Token2+1);
        Token4 = database.indexOf("|", Token3+1);

        fields = new Array;
        fields[0] = database.substring( 0, Token0 ); // 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 ); // Weight
        fields[5] = database.substring( Token4+1, database.length ); //Additional Information

        fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) );

    }

    strTotal = moneyFormat(fTotal);
    strOutput+=strTotal;
    document.write(strOutput);

}


//---------------------------------------------------------------------||
// FUNCTION: CheckCartCookie ||
// PARAMETERS: none ||
// RETURNS: 1 if all ok, 0 if redirecting ||
// PURPOSE: Added by amj 6 may 2009, part of preventing uk and aus items in same cart ||
//---------------------------------------------------------------------||
function CheckCartCookie()
{
    var cartSite = "";
    cartSite = GetCookie("CartSite");

    if( cartSite == null )
        SetCookie("CartSite","AUS",null,"/");
    else if( cartSite != "AUS" ) //on wrong site
    {
        SwitchToUkSite();
        return 0;
    }
    return 1;

}

//---------------------------------------------------------------------||
// FUNCTION: SwitchToUkSite ||
// PARAMETERS: none ||
// RETURNS:  ||
// PURPOSE: Added by amj 5 may 2009, prevents uk and aus items in same cart ||
//---------------------------------------------------------------------||
function SwitchToUkSite()
{
    var oldUrl = self.location.href;

    alert( "Sorry, you can not add products from our Australian site as you already have products from our UK site in your shopping cart. To add this product from our UK site, click OK below." );
    window.location = oldUrl.toString().replace("com.au/", "com.au/uk/");

}


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