//=====================================================================||
//               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                                     ||
//=====================================================================||
MonetarySymbol = '￥';
DisplayNotice = true;
DisplayShippingColumn = true;
DisplayShippingRow = true;
DisplayTaxRow = false;
TaxRate = 0.00;
TaxByRegion = false;
TaxPrompt = 'For tax purposes, please select if you are an Arizona resident before continuing';
TaxablePrompt = 'Arizona Residents';
NonTaxablePrompt = 'Other States';
MinimumOrder = 0.01;
MinimumOrderPrompt = '買い物カゴに何も入っていません。買い物カゴに商品を入れて下さい。';
Rate = 0.8906;
PaymentProcessor = '';
OutputItemId = 'ID_';
OutputItemQuantity = 'QUANTITY_';
OutputItemPrice = 'PRICE_';
OutputItemName = 'NAME_';
OutputItemShipping = 'SHIPPING_';
OutputItemAddtlInfo = 'ADDTLINFO_';
OutputOrderSubtotal = 'SUBTOTAL';
OutputOrderShipping = 'SHIPPING';
OutputOrderIns = 'INSURANCE';
OutputOrderTax = 'TAX';
OutputOrderTotal = 'TOTAL';
AppendItemNumToOutput = true;
HiddenFieldsToCheckout = false;
if ( !bLanguageDefined )
{
    strSorry = "I'm Sorry, your cart is full, please proceed to checkout.";
    strAdded = " added to your shopping cart.";
    strRemove = "Click 'Ok' to remove this product from your shopping cart.";
    strILabel = "Product Id";
    strDLabel = "Product Name/Description";
    strQLabel = "Quantity";
    strPLabel = "Price";
    strSLabel = "Shipping";
    strRLabel = "Remove From Cart";
    strRButton= "Remove";
    strSUB = "SUBTOTAL";
    strSHIP = "SHIPPING";
    strINS = "INSURANCE";
    strTAX = "TAX";
    strTOT = "TOTAL";
    strErrQty = "Invalid Quantity.";
    strNewQty = 'Please enter new quantity:';
    bLanguageDefined = true;
}
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(thisForm)
{
    var iNumberOrdered = 0;
    var bAlreadyInCart = false;
    var notice = "";
    iNumberOrdered = GetCookie("NumberOrdered");
    if ( iNumberOrdered == null )
    iNumberOrdered = 0;
    if ( thisForm.ID_NUM == null )
    strID_NUM = "";
    else
    strID_NUM = thisForm.ID_NUM.value;
    if ( thisForm.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.SHIPPING == null )
    strSHIPPING = "0.00";
    else
    strSHIPPING = thisForm.SHIPPING.value;
    if ( thisForm.ADDITIONALINFO == null )
    {
        strADDTLINFO = "";
    }
    else
    {
        strADDTLINFO = thisForm.ADDITIONALINFO[thisForm.ADDITIONALINFO.selectedIndex].value;
    }
    if ( thisForm.ADDITIONALINFO2 != null )
    {
        strADDTLINFO += "; " + thisForm.ADDITIONALINFO2[thisForm.ADDITIONALINFO2.selectedIndex].value;
    }
    if ( thisForm.ADDITIONALINFO3 != null )
    {
        strADDTLINFO += "; " + thisForm.ADDITIONALINFO3[thisForm.ADDITIONALINFO3.selectedIndex].value;
    }
    if ( thisForm.ADDITIONALINFO4 != null )
    {
        strADDTLINFO += "; " + thisForm.ADDITIONALINFO4[thisForm.ADDITIONALINFO4.selectedIndex].value;
    }
    if ( thisForm.ILINK == null )
    strILINK = "";
    else
    strILINK = thisForm.ILINK.value;
    for ( i = 1; i <= iNumberOrdered; i++ )
    {
        NewOrder = "Order." + i;
        database = "";
        database = GetCookie(NewOrder);
        Token0 = database.indexOf("|", 0);
        Token1 = database.indexOf("|", Token0+1);
        Token2 = database.indexOf("|", Token1+1);
        Token3 = database.indexOf("|", Token2+1);
        Token4 = database.indexOf("|", Token3+1);
        Token5 = database.indexOf("|", Token4+1);
        fields = new Array;
        fields[0] = database.substring( 0, Token0 );
        fields[1] = database.substring( Token0+1, Token1 );
        fields[2] = database.substring( Token1+1, Token2 );
        fields[3] = database.substring( Token2+1, Token3 );
        fields[4] = database.substring( Token3+1, Token4 );
        fields[5] = database.substring( Token4+1, Token5 );
        fields[6] = database.substring( Token5+1, database.length );
        if ( fields[0] == strID_NUM &&
        fields[2] == strPRICE &&
        fields[3] == strNAME &&
        fields[5] == strADDTLINFO
        )
        {
            bAlreadyInCart = true;
            alert('この商品は既に買い物カゴに入っています。');
            return;
        }
    }
    if ( !bAlreadyInCart )
    {
        iNumberOrdered++;
        if ( iNumberOrdered > 12 )
        alert( strSorry );
        else
        {
            dbUpdatedOrder = strID_NUM + "|" +
            strQUANTITY + "|" +
            strPRICE + "|" +
            strNAME + "|" +
            strSHIPPING + "|" +
            strADDTLINFO + "|" +
            strILINK;
            strNewOrder = "Order." + iNumberOrdered;
            SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
            SetCookie("NumberOrdered", iNumberOrdered, null, "/");
            notice = " " + strID_NUM + "：　" + strNAME + strAdded;
        }
    }
    if ( DisplayNotice )
    alert(notice);
}
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 (date)
{
    var base = new Date(0);
    var skew = base.getTime();
    date.setTime (date.getTime() - skew);
}
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 (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 (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(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 * 1000);
    cents = cents.substring(cents.length-3, cents.length);
    dollars += ((tmp.charAt(decimalAt+3)=="9")&&(cents=="000"))? 1 : 0;
    if ( cents == "0" )
    cents = "000";
    if ((dollars + cents) == 0)
    return("")
    if (dollars > 0)
    return(dollars + "," + cents)
    else
    return(cents)
}
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(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( fShipping )
{
    ManageCart( );
}
function RadioChecked( radiobutton )
{
    var bChecked = false;
    var rlen = radiobutton.length;
    for ( i=0; i < rlen; i++ )
    {
        if ( radiobutton[i].checked )
        bChecked = true;
    }
    return bChecked;
}
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()
{
    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 GetInsurance(ins)
{
    if (strInsurance != ins)
    {
        SetCookie("Insurance", ins, null, "/");
        location.href=location.href;
    }
    return ins;
}
function InsurCost(subtotal,insstatus)
{
    iNumInCart = GetCookie("NumberOrdered");
    if (insstatus == "No Insurance") return 0;
    if (insstatus == "Insurance") return (.260 * Rate);
    return
}
function ManageCart( )
{
    var iNumberOrdered = 0;
    var fTotal = 0;
    var fTax = 0;
    var fShipping = 0;
    var fInsCost = 0;
    var strTotal = "";
    var strTax = "";
    var strShipping = "";
    var strInsCost = "";
    var strOutput = "";
    var bDisplay = true;
    iNumberOrdered = GetCookie("NumberOrdered");
    if ( iNumberOrdered == null )
    iNumberOrdered = 0;
    strInsurance = GetCookie("Insurance");
    if ( strInsurance == null )
    strInsurance = "No Insurance";
    if ( bDisplay )
    strOutput = "<TABLE width=\"90%\" CLASS=\"nopcart\"><TR>" +
    "<TD CLASS=\"nopheader\"><B>"+strILabel+"</B></TD>" +
    "<TD CLASS=\"nopheader\"><B>"+strDLabel+"</B></TD>" +
    "<TD CLASS=\"nopheader\"><B>"+strQLabel+"</B></TD>" +
    "<TD CLASS=\"nopheader\"><B>"+strPLabel+"</B></TD>" +
    (DisplayShippingColumn?"<TD CLASS=\"nopheader\"><B>"+strSLabel+"</B></TD>":"") +
    "<TD CLASS=\"nopheader\"><B>"+strRLabel+"</B></TD></TR>";
    if ( iNumberOrdered == 0 )
    {
        strOutput += "<TR><TD COLSPAN=6 CLASS=\"nopentry\"><CENTER><BR><B>まだ買い物カゴには何も入っていません。</B><BR><BR></CENTER></TD></TR>";
    }
    for ( i = 1; i <= iNumberOrdered; i++ )
    {
        NewOrder = "Order." + i;
        database = "";
        database = GetCookie(NewOrder);
        Token0 = database.indexOf("|", 0);
        Token1 = database.indexOf("|", Token0+1);
        Token2 = database.indexOf("|", Token1+1);
        Token3 = database.indexOf("|", Token2+1);
        Token4 = database.indexOf("|", Token3+1);
        Token5 = database.indexOf("|", Token4+1);
        fields = new Array;
        fields[0] = database.substring( 0, Token0 );
        fields[1] = database.substring( Token0+1, Token1 );
        fields[2] = database.substring( Token1+1, Token2 );
        fields[3] = database.substring( Token2+1, Token3 );
        fields[4] = smoneyFormat(database.substring( Token3+1, Token4 ) * Rate);
        fields[5] = database.substring( Token4+1, Token5 );
        fields[6] = database.substring( Token5+1, database.length );
        fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) );
        fShipping += (parseInt(fields[1]) * parseFloat(fields[4]) );
        if ((strInsurance == "Insurance") && (parseFloat(fields[2]) <= (5 * Rate)))
        {
            fInsCost += InsurCost(fTotal,strInsurance) - (.075 * Rate);
        }
        if ((strInsurance == "Insurance") && (parseFloat(fields[2]) > (5 * Rate)) && (parseFloat(fields[2]) <= (10 * Rate)))
        {
            fInsCost += InsurCost(fTotal,strInsurance);
        }
        if ((strInsurance == "Insurance") && (parseFloat(fields[2]) > (10 * Rate)))
        {
            fInsCost += InsurCost(fTotal,strInsurance) + (((Math.floor((fields[2]) / 10)) / 10) * Rate);
        }
	if (fTotal >= 30)       // If the total is \30,000 or more - shipping is \1,000
	    fShipping = 1;
        fTax = (fTotal * TaxRate);
        strTotal = moneyFormat(fTotal);
        strTax = moneyFormat(fTax);
        strShipping = moneyFormat(fShipping);
        strInsCost = moneyFormat(fInsCost);
        if ( bDisplay )
        {
            strOutput += "<TR><TD CLASS=\"nopentry\">" + fields[0] + "</TD>";
            if ( fields[5] == "" )
            strOutput += "<TD CLASS=\"nopentry\"><a href=\"" + fields[6] + "\">"+ fields[3] + "</a></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\">"+ MonetarySymbol + moneyFormat(fields[2]) + "</TD>";
            if ( DisplayShippingColumn )
            {
                if ( parseFloat(fields[4]) > 0 )
                strOutput += "<TD CLASS=\"nopentry\">"+ MonetarySymbol + moneyFormat(fields[4]) + "/各</TD>";
                else
                strOutput += "<TD CLASS=\"nopentry\">N/A</TD>";
            }
            strOutput += "<TD CLASS=\"nopentry\" ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD></TR>";
        }
        if ( AppendItemNumToOutput )
        {
            strFooter = i;
        }
        else
        {
            strFooter = "";
        }
        if ( HiddenFieldsToCheckout )
        {
            strOutput += "<input type=hidden name=\"" + OutputItemId + strFooter + "\" value=\"" + fields[0] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemQuantity + strFooter + "\" value=\"" + fields[1] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemPrice + strFooter + "\" value=\"" + fields[2] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemName + strFooter + "\" value=\"" + fields[3] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemShipping + strFooter + "\" value=\"" + fields[4] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">";
        }
    }
    if ( bDisplay )
    {
        strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 ALIGN=RIGHT><B>"+strSUB+"</B></TD>";
        strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat(fTotal) + "</B></TD>";
        strOutput += "</TR>";
        if ( DisplayShippingRow )
        {
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 ALIGN=RIGHT><B>"+strSHIP+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat(fShipping) + "</B></TD>";
            strOutput += "</TR>";
        }
        if ( DisplayTaxRow || TaxByRegion )
        {
            if ( TaxByRegion )
            {
                strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 ALIGN=RIGHT><B>"+strTAX+"</B></TD>";
                strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><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 ALIGN=RIGHT><B>"+strTAX+"</B></TD>";
                strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + strTax + "</B></TD>";
                strOutput += "</TR>";
            }
        }
        if (strInsurance == "Insurance")
        {
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 ALIGN=RIGHT><B>"+strINS+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat(fInsCost) + "</B></TD>";
            strOutput += "</TR>";
        }
        strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=5 ALIGN=RIGHT><B>"+strTOT+"</B></TD>";
        strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat((fTotal + fShipping + fTax + fInsCost)) + "</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 + fInsCost)) + "\">";
        }
    }
    g_TotalCost = (fTotal + fShipping + fTax + fInsCost);
    document.write(strOutput);
    document.close();
}
var g_TotalCost = 0;
function ValidateCart( theForm )
{
    if ( TaxByRegion )
    {
        if ( !RadioChecked(eval("theForm."+OutputOrderTax)) )
        {
            alert( TaxPrompt );
            return false;
        }
    }
    if ( MinimumOrder >= 0.01 )
    {
        if ( g_TotalCost < MinimumOrder )
        {
            alert( MinimumOrderPrompt );
            return false;
        }
    }
    return true;
}
function CheckoutCart( )
{
    var iNumberOrdered = 0;
    var fTotal = 0;
    var fTax = 0;
    var fShipping = 0;
    var fInsCost = 0;
    var strTotal = "";
    var strTax = "";
    var strShipping = "";
    var strInsCost = "";
    var strOutput = "";
    var bDisplay = true;
    var strPP = "";
    iNumberOrdered = GetCookie("NumberOrdered");
    if ( iNumberOrdered == null )
    iNumberOrdered = 0;
    strInsurance = GetCookie("Insurance");
    if ( strInsurance == null )
    strInsurance = "No Insurance";
    if ( TaxByRegion )
    {
        QueryString_Parse();
        fTax = parseFloat( QueryString( OutputOrderTax ) );
        strTax = moneyFormat(fTax);
    }
    if ( bDisplay )
    strOutput = "<TABLE width=\"90%\" CLASS=\"nopcart\"><TR>" +
    "<TD CLASS=\"nopheader\"><B>"+strILabel+"</B></TD>" +
    "<TD CLASS=\"nopheader\"><B>"+strDLabel+"</B></TD>" +
    "<TD CLASS=\"nopheader\"><B>"+strQLabel+"</B></TD>" +
    "<TD CLASS=\"nopheader\"><B>"+strPLabel+"</B></TD>" +
    (DisplayShippingColumn?"<TD CLASS=\"nopheader\"><B>"+strSLabel+"</B></TD>":"") +
    "</TR>";
    if ( iNumberOrdered == 0 )
    {
        strOutput += "<TR><TD COLSPAN=6 CLASS=\"nopentry\"><CENTER><BR><B>まだ買い物カゴには何も入っていません</B><BR><BR></CENTER></TD></TR>";
    }
    for ( i = 1; i <= iNumberOrdered; i++ )
    {
        NewOrder = "Order." + i;
        database = "";
        database = GetCookie(NewOrder);
        Token0 = database.indexOf("|", 0);
        Token1 = database.indexOf("|", Token0+1);
        Token2 = database.indexOf("|", Token1+1);
        Token3 = database.indexOf("|", Token2+1);
        Token4 = database.indexOf("|", Token3+1);
        Token5 = database.indexOf("|", Token4+1);
        fields = new Array;
        fields[0] = database.substring( 0, Token0 );
        fields[1] = database.substring( Token0+1, Token1 );
        fields[2] = database.substring( Token1+1, Token2 );
        fields[3] = database.substring( Token2+1, Token3 );
        fields[4] = smoneyFormat(database.substring( Token3+1, Token4 ) * Rate);
        fields[5] = database.substring( Token4+1, Token5 );
        fields[6] = database.substring( Token5+1, database.length );
        fTotal += (parseInt(fields[1]) * parseFloat(fields[2]) );
        fShipping += (parseInt(fields[1]) * parseFloat(fields[4]) );
        if ((strInsurance == "Insurance") && (parseFloat(fields[2]) <= (5 * Rate)))
        {
            fInsCost += InsurCost(fTotal,strInsurance) - (.075 * Rate);
        }
        if ((strInsurance == "Insurance") && (parseFloat(fields[2]) > (5 * Rate)) && (parseFloat(fields[2]) <= (10 * Rate)))
        {
            fInsCost += InsurCost(fTotal,strInsurance);
        }
        if ((strInsurance == "Insurance") && (parseFloat(fields[2]) > (10 * Rate)))
        {
            fInsCost += InsurCost(fTotal,strInsurance) + (((Math.floor((fields[2]) / 10)) / 10) * Rate);
        }
	if (fTotal >= 30)       // If the total is \30,000 or more - shipping is \1,000
	    fShipping = 1;
        if ( !TaxByRegion ) fTax = (fTotal * TaxRate);
        strTotal = moneyFormat(fTotal);
        if ( !TaxByRegion ) strTax = moneyFormat(fTax);
        strShipping = moneyFormat(fShipping);
        strInsCost = moneyFormat(fInsCost);
        if ( bDisplay )
        {
            strOutput += "<TR><TD CLASS=\"nopentry\">" + 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\">"+ MonetarySymbol + moneyFormat(fields[2]) + "</TD>";
            if ( DisplayShippingColumn )
            {
                if ( parseFloat(fields[4]) > 0 )
                strOutput += "<TD CLASS=\"nopentry\">"+ MonetarySymbol + moneyFormat(fields[4]) + "/各</TD>";
                else
                strOutput += "<TD CLASS=\"nopentry\">N/A</TD>";
            }
            strOutput += "</TR>";
        }
        if ( AppendItemNumToOutput )
        {
            strFooter = i;
        }
        else
        {
            strFooter = "";
        }
        if ( PaymentProcessor != '' )
        {
            strPP += fields[0] + ", " + fields[3];
            if ( fields[5] != "" )
            strPP += " - " + fields[5];
            strPP += ", Qty. " + fields[1] + "\n";
        }
        else
        {
            strOutput += "<input type=hidden name=\"" + OutputItemId + strFooter + "\" value=\"" + fields[0] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemQuantity + strFooter + "\" value=\"" + fields[1] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemPrice + strFooter + "\" value=\"" + fields[2] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemName + strFooter + "\" value=\"" + fields[3] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemShipping + strFooter + "\" value=\"" + fields[4] + "\">";
            strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">";
        }
    }
    if ( bDisplay )
    {
        strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=4 ALIGN=RIGHT><B>"+strSUB+"</B></TD>";
        strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat(fTotal) + "</B></TD>";
        strOutput += "</TR>";
        if ( DisplayShippingRow )
        {
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=4 ALIGN=RIGHT><B>"+strSHIP+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat(fShipping) + "</B></TD>";
            strOutput += "</TR>";
        }
        if (strInsurance == "Insurance")
        {
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=4 ALIGN=RIGHT><B>"+strINS+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat(fInsCost) + "</B></TD>";
            strOutput += "</TR>";
        }
        if ( DisplayTaxRow || TaxByRegion )
        {
            strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=4 ALIGN=RIGHT><B>"+strTAX+"</B></TD>";
            strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + strTax + "</B></TD>";
            strOutput += "</TR>";
        }
        strOutput += "<TR><TD CLASS=\"noptotal\" COLSPAN=4 ALIGN=RIGHT><B>"+strTOT+"</B></TD>";
        strOutput += "<TD CLASS=\"noptotal\" COLSPAN=1 ALIGN=RIGHT><B>" + MonetarySymbol + moneyFormat((fTotal + fShipping + fTax + fInsCost)) + "</B></TD>";
        strOutput += "</TR>";
        strOutput += "</TABLE>";
        if ( PaymentProcessor == 'an')
        {
            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')
        {
            strOutput += "<input type=hidden name=\"desc\" value=\""+ strPP + "\">";
            strOutput += "<input type=hidden name=\"amount\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">";
        }
        else if ( PaymentProcessor == 'lp')
        {
            strOutput += "<input type=hidden name=\"mode\" value=\"fullpay\">";
            strOutput += "<input type=hidden name=\"chargetotal\" value=\""+ moneyFormat((fTotal + fShipping + fTax)) + "\">";
            strOutput += "<input type=hidden name=\"tax\" value=\""+ MonetarySymbol + strTax + "\">";
            strOutput += "<input type=hidden name=\"subtotal\" value=\""+ MonetarySymbol + strTotal + "\">";
            strOutput += "<input type=hidden name=\"shipping\" value=\""+ MonetarySymbol + strShipping + "\">";
            strOutput += "<input type=hidden name=\"desc\" value=\""+ strPP + "\">";
        }
        else
        {
            strOutput += "<input type=hidden name=\""+OutputOrderSubtotal+"\" value=\""+ MonetarySymbol + strTotal + "\">";
            strOutput += "<input type=hidden name=\""+OutputOrderShipping+"\" value=\""+ MonetarySymbol + strShipping + "\">";
            if (strInsurance == "Insurance")
            {
                strOutput += "<input type=hidden name=\""+OutputOrderIns+"\" value=\""+ MonetarySymbol + strInsCost + "\">";
            }
            strOutput += "<input type=hidden name=\""+OutputOrderTax+"\" value=\""+ MonetarySymbol + strTax + "\">";
            strOutput += "<input type=hidden name=\""+OutputOrderTotal+"\" value=\""+ MonetarySymbol + moneyFormat((fTotal + fShipping + fTax + fInsCost)) + "\">";
        }
    }
    document.write(strOutput);
    document.close();
}
function mathFormat(input)
{
    var reg = Math.floor(input);
    var tmp = new String(input);
    for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ )
    {
        if ( tmp.charAt(decimalAt)=="." )
        break;
    }
    var dec = "" + Math.round(input * 100);
    dec = dec.substring(dec.length-2, dec.length)
    reg += ((tmp.charAt(decimalAt+2)=="9")&&(dec=="00"))? 1 : 0;
    if ( dec == "0" )
    dec = "00";
    return(reg + "." + dec);
}
function ShippingChart( )
{
    var strOutput	= "";
    Pound	= 453.6;
    s1Pound	= 2250;
    s2Pound	= 2700;
    s3Pound	= 3150;
    s4Pound	= 3600;
    s5Pound	= 4050;
    s6Pound	= 4500;
    s7Pound	= 4950;
    s8Pound	= 5350;
    s9Pound	= 5800;
    s10Pound	= 6350;
    spPound	= 450;
    strOutput += "<TABLE CLASS=\"nopcart\"><TR>" +
    "<TD CLASS=\"nopheader\"><CENTER><B>重さ／ポンド（グラム） ↓</B></CENTER></TD>" +
    "<TD CLASS=\"nopheader\"><CENTER><B>円</B></CENTER></TD>" +
    "<TD CLASS=\"nopheader\"><CENTER><B>ドル</B></CENTER></TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;１ポンド（" + mathFormat(Pound * 1) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s1Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s1Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;２ポンド（" + mathFormat(Pound * 2) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s2Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s2Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;３ポンド（" + mathFormat(Pound * 3) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s3Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s3Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;４ポンド（" + mathFormat(Pound * 4) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s4Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s4Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;５ポンド（" + mathFormat(Pound * 5) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s5Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s5Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;６ポンド（" + mathFormat(Pound * 6) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s6Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s6Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;７ポンド（" + mathFormat(Pound * 7) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s7Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s7Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;８ポンド（" + mathFormat(Pound * 8) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s8Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s8Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;９ポンド（" + mathFormat(Pound * 9) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s9Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s9Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\">&nbsp;１０ポンド（" + mathFormat(Pound * 10) + "g）まで&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;" + MonetarySymbol + moneyFormat((s10Pound / 1000) * Rate) + "&nbsp;</TD>" +
    "<TD CLASS=\"nopentry\">&nbsp;$" + mathFormat(s10Pound / 100) + "&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\" COLSPAN=3>&nbsp;以上は、１ポンド（" + mathFormat(Pound * 1) + "g）あたり" + mathFormat(spPound * Rate) + "円（$" + mathFormat(spPound / 100) + "）です。&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\" COLSPAN=3>&nbsp;今週は１ドル＝" + mathFormat(Rate * 100) + "円として計算しています。&nbsp;</TD>" +
    "</TR>";
    strOutput += "</TABLE>";
    document.write(strOutput);
    document.close();
}
function InsuranceChart( )
{
    var strOutput	= "";
    i50Dollars	= 245;
    i100Dollars	= 335;
    i200Dollars	= 430;
    i300Dollars	= 525;
    strOutput += "<TABLE CLASS=\"nopcart\">" +
    "<TR>" +
    "<TD CLASS=\"nopheader\"><CENTER><B>&nbsp;保険　→</B></CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>&nbsp;５０ドル（" + moneyFormat(5 * Rate) + "円）まで</CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>&nbsp;１００ドル（" + moneyFormat(10 * Rate) + "円）まで</CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>&nbsp;２００ドル（" + moneyFormat(20 * Rate) + "円）まで</CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>&nbsp;３００ドル（" + moneyFormat(30 * Rate) + "円）まで</CENTER></TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopheader\"><B>&nbsp;円</B></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>" + MonetarySymbol + moneyFormat((i50Dollars / 1000) * Rate) + "</CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>" + MonetarySymbol + moneyFormat((i100Dollars / 1000) * Rate) + "</CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>" + MonetarySymbol + moneyFormat((i200Dollars / 1000) * Rate) + "</CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>" + MonetarySymbol + moneyFormat((i300Dollars / 1000) * Rate) + "</CENTER></TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopheader\"><B>&nbsp;ドル</B></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>$" + mathFormat(i50Dollars / 100) + "</CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>$" + mathFormat(i100Dollars / 100) + "</CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>$" + mathFormat(i200Dollars / 100) + "</CENTER></TD>" +
    "<TD CLASS=\"nopentry\"><CENTER>$" + mathFormat(i300Dollars / 100) + "</CENTER></TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\" COLSPAN=5>&nbsp;１００ドル以上は、１００ドル（" + moneyFormat(Rate * 10) + "円）あたり１ドル（" + mathFormat(Rate * 100) + "円）加算されます。最高５０００ドルまで掛けられます。&nbsp;</TD>" +
    "</TR>";
    strOutput += "<TR>" +
    "<TD CLASS=\"nopentry\" COLSPAN=5>&nbsp;今週は１ドル＝" + mathFormat(Rate * 100) + "円として計算しています。&nbsp;</TD>" +
    "</TR>";
    strOutput += "</TABLE>";
    document.write(strOutput);
    document.close();
}
function smoneyFormat(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 * 1000);
    cents = cents.substring(cents.length-3, cents.length);
    dollars += ((tmp.charAt(decimalAt+3)=="9")&&(cents=="000"))? 1 : 0;
    if ( cents == "0" )
    cents = "000";
    if ((dollars + cents) == 0)
    return("")
    if (dollars > 0)
    return(dollars + "." + cents)
    else
    return(cents)
}
