
/*********************************************************************
LocalCart(TM) v 1.0
(C) Copyright 2004-2006 by Dean Koepke.  All Rights Reserved.
    None of the code contained herein may be used in any way, shape,
       or form without express, written permission from the author.
    Violators will be prosecuted for copyright infringement to the
       fullest extent allowed by law.
    Interested parties may email 'localcart@deankoepke.com' to obtain
       licensing information.
*********************************************************************/
function validate_money(x)
{
var i, dollars = false, cents = -1;
for (i = 0;
     i < x.length;
     ++i)
  if (x.charAt(i) == ".")
    if (cents == -1)
      cents = 0;
    else
      {
      alert("DEBUG -- Invalid figure: '" + x + "'");
      break;
      }
  else if ((x.charAt(i) >= "0") && (x.charAt(i) <= "9"))
    if (cents >= 0)
      ++cents;
    else
      ++dollars;
  else if ((cents == -1) || (cents == 2))
    {
    alert("DEBUG -- Invalid figure: '" + x + "'");
    break;
    }
if (!dollars || (cents != 2))
  alert("DEBUG -- Invalid figure: '" + x + "'");
return (x);
}

var catalog = new Array();
function item_listing(item_name, detail_page, item_number, price, shipping, shipping2, position_on_shelf)
{
this.item_name = item_name;
this.detail_page = detail_page;
this.item_number = new String(item_number);
this.price = validate_money(price);
this.shipping = validate_money(shipping);
this.shipping2 = validate_money(shipping2);
this.on_shelf = true;
this.position_on_shelf = position_on_shelf;
this.in_cart = false;
this.quantity = 0;
}

function show_catalog(i)
{
alert("DEBUG -- catalog[" + i + "]:" +
      "\n  item_name = " + catalog[i].item_name +
      "\n  item_number = " + catalog[i].item_number +
      "\n  price = " + catalog[i].price +
      "\n  shipping = " + catalog[i].shipping +
      "\n  shipping2 = " + catalog[i].shipping2 +
      "\n  on_shelf = " + catalog[i].on_shelf +
      "\n  position_on_shelf = " + catalog[i].position_on_shelf +
      "\n  in_cart = " + catalog[i].in_cart +
      "\n  quantity = " + catalog[i].quantity);
}

catalog[0] = new item_listing("fudge factor", null, null, "0.00", "0.00", "0.00", 8287);

function place_on_shelf(item_name, detail_page, item_number, price, shipping, shipping2, position_on_shelf)
{
var i;
for (i = 0;
     i < catalog.length;
     ++i)
  if (catalog[i].item_number == item_number)
    {
    if ((catalog[i].item_name != item_name) ||
        (catalog[i].price != price) ||
        (catalog[i].shipping != shipping) ||
        (catalog[i].shipping2 != shipping2))
      alert("DEBUG -- Data mis-match for ITEM# " + item_number);
    catalog[i].detail_page = detail_page;
    catalog[i].on_shelf = true;
    catalog[i].position_on_shelf = position_on_shelf;
    return;
    }
catalog[i] = new item_listing(item_name, detail_page, item_number, price, shipping, shipping2, position_on_shelf);
}

function get_position_on_shelf(element)
{
var i, j;
for (i = 0;
     i < parent.text.document.store_shelf.add_to_cart.length;
     ++i)
  if ((element == parent.text.document.store_shelf.add_to_cart[i]) ||
      (element == parent.text.document.store_shelf.quantity[i]))
    for (j = 0;
         j < catalog.length;
         ++j)
      if (catalog[j].on_shelf && (catalog[j].position_on_shelf == i))
        return (j);
alert("Error processing Shopping Cart!\nReloading...");
parent.text.location.reload(true);
}

function is_valid_quantity(x)
{
var n = 0;
var i;
var message = "Invalid QUANTITY!";
for (i = 0;
     i < x.length;
     ++i)
  {
  if ((x.charAt(i) < "0") || (x.charAt(i) > "9"))
    {
    alert(message);
    return (false);
    }
  else
    n = n*10 + x.charAt(i) - 0;
  }
if (n == 0)
  {
  alert(message);
  return (false);
  }
return (true);
}

var cards_in_cart;
var paypal;
function submit_order()
{
var i, j;
var text = top.document;
var catalog = parent.banner.catalog;
var business_cards = parent.banner.business_cards;
var got_cards = parent.banner.cards_in_cart;
text.writeln('<h1 align=center>Submitting Order To PayPal...</h1>');
text.writeln('<h3 align=center>Please allow a few seconds for the PayPal screen to appear.</h3>');
text.writeln('<form name=buy_now action="https://www.paypal.com/cgi-bin/webscr" method="post">');
text.writeln('<input type=hidden name="cmd" value="_cart">');
text.writeln('<input type=hidden name="business" value="paypal@US-First.us">');
text.writeln('<input type=hidden name="return" value="http://US-First.us/store/sale_OK.html">');
text.writeln('<input type=hidden name="cancel_return" value="http://US-First.us/store/cancel.html">');
if (!got_cards)
  {
  text.writeln('<input type=hidden name="no_note" value="0">');
  text.writeln('<input type=hidden name="cn" value="US-First Member # (optional)">');
  }
else
  {
  text.writeln('<input type=hidden name="no_note" value="1">');
  }
text.writeln('<input type=hidden name="currency_code" value="USD">');
text.writeln('<input type=hidden name="lc" value="US">');
text.writeln('<input type=hidden name="upload" value="1">');
for (i = 0, j = 1;
     i < catalog.length;
     ++i)
  if (catalog[i].in_cart)
    {
    text.writeln('<input type=hidden name="item_name_' + j + '" value="' + catalog[i].item_name + '">');
    text.writeln('<input type=hidden name="quantity_' + j + '" value="' + catalog[i].quantity + '">');
    text.writeln('<input type=hidden name="amount_' + j + '" value="' + catalog[i].price + '">');
    text.writeln('<input type=hidden name="shipping_' + j + '" value="' + catalog[i].shipping + '">');
    text.writeln('<input type=hidden name="shipping2_' + j + '" value="' + catalog[i].shipping2 + '">');
    text.writeln('<input type=hidden name="item_number_' + j + '" value="' + catalog[i].item_number + '">');
    if (catalog[i].item_number.match(/^PBC-/))
      {
      text.writeln('<input type=hidden name="on0_' + j + '" value="Member Number">');
      text.writeln('<input type=hidden name="os0_' + j + '" value="' + business_cards.os0 + '">');
      text.writeln('<input type=hidden name="on1_' + j + '" value="Name On Cards">');
      text.writeln('<input type=hidden name="os1_' + j + '" value="' + business_cards.os1 + '">');
      }
    ++j;
    }
text.writeln('</form>');
text.close();
text.buy_now.submit();
}

function dollars_and_cents(x)
{
var i = Math.round(x*100)%100;
var s = Math.floor(x) + '.';
if (i < 10)
  s += '0';
s += i;
return s;
}

function print_order()
{
if ((ship_to.name == "name") || (ship_to.name == ""))
  alert("Missing SHIP TO -- NAME!");
else if ((ship_to.address == "address") || (ship_to.address == ""))
  alert("Missing SHIP TO -- ADDRESS!");
else if ((ship_to.city == "city") || (ship_to.city == ""))
  alert("Missing SHIP TO -- CITY!");
else if (!ship_to.state)
  alert("Missing SHIP TO -- STATE!");
else if ((ship_to.ZIP == "ZIP") || (ship_to.ZIP == ""))
  alert("Missing SHIP TO -- ZIP!");
else
  {
  print();
  }
}

function display_cart()
{
var cart = parent.text.document;
cards_in_cart = false;
cart.writeln('<script javascript>');
cart.writeln('defaultStatus="Welcome to US-First!"');
cart.writeln('\<\/script>');
cart.writeln('\<body background="../background.gif">');
cart.writeln('<form name=order_form>');
cart.writeln('<center><font size=5>SHOPPING CART</font>');
cart.writeln('</center>');
cart.writeln('<table border=0 width="100%">');
cart.writeln('<tr bgcolor="darkblue">');
cart.writeln('<th>&nbsp;</font></th><th align=left><font color="white">&nbsp;Item&nbsp;</font></th><th align=right><font color="white">Price Each&nbsp;</font></th><th align=right><font color="white">Quantity&nbsp;</font></th><th align=right><font color="white">Item-Total&nbsp;</font></th>');
var bgcolor = Array(2);
bgcolor[0] = '"lightgreen"';
bgcolor[1] = '"pink"';
var i, line_number, item_total;
var color = 0;
var shipping = 0;
var tax = 0;
var total = 0;
for (parent.banner.items_in_cart = 0, line_number = 1;
     parent.banner.items_in_cart < catalog.length;
     ++parent.banner.items_in_cart)
  {
  if (catalog[parent.banner.items_in_cart].in_cart)
    {
    total += item_total = catalog[parent.banner.items_in_cart].price*catalog[parent.banner.items_in_cart].quantity;
    shipping += parseFloat(catalog[parent.banner.items_in_cart].shipping) + (catalog[parent.banner.items_in_cart].quantity - 1)*catalog[parent.banner.items_in_cart].shipping2;
    cart.writeln('<tr bgcolor=' + bgcolor[color] + '>');
    color = (color + 1)%2;
    cart.writeln('<th align=right>' + line_number + '</th>');
    ++line_number;
    cart.writeln('<th align=left><input type=submit value="VIEW" onClick=\'window.location="' + catalog[parent.banner.items_in_cart].detail_page + '"; return false;\'>&nbsp;&nbsp;&nbsp;' + catalog[parent.banner.items_in_cart].item_name + '</th>');
    cart.writeln('<th align=right>' + dollars_and_cents(catalog[parent.banner.items_in_cart].price) + '&nbsp;</th>');
    cart.writeln('<th align=right>' + catalog[parent.banner.items_in_cart].quantity);
    cart.writeln('<input type=text size=6 value="change"');
    cart.writeln('       onFocus="value=\'\'; return true;"');
    cart.writeln('       onChange="if (parent.banner.is_valid_quantity(value)) {parent.banner.catalog[' + parent.banner.items_in_cart + '].quantity = value; parent.banner.display_cart(); return true} else {value=\'change\'; return true}"');
    cart.writeln('       onBlur="value=\'change\'; return true;">');
    cart.writeln('<input type=button value="Delete" onClick="if (confirm(\'DELETE \' + parent.banner.catalog[' + parent.banner.items_in_cart + '].item_name + \'?\')) {parent.banner.catalog[' + parent.banner.items_in_cart + '].in_cart = false; parent.banner.display_cart(); return false} else {return false}"</th>');
    cart.writeln('<th align=right>' + dollars_and_cents(item_total));
    cart.writeln('&nbsp;</th>');
    if (catalog[parent.banner.items_in_cart].item_number.match(/^PBC-/))
      {
      cards_in_cart = true;
      }
    }
  }
cart.writeln('<tr bgcolor="#ffd0ff">');
cart.writeln('<th>&nbsp;</th><th>&nbsp;</th><th>&nbsp;</th><th align=left>&nbsp;Sub-Total:</th><th align=right>' + (parent.amount = dollars_and_cents(total)));
cart.writeln('&nbsp;</th>');
cart.writeln('<tr bgcolor="#ffffa0">');
cart.writeln('<th>&nbsp;</th><th>&nbsp;</th><th>&nbsp;</th><th align=left>&nbsp;Shipping:</th><th align=right>' + dollars_and_cents(shipping));
cart.writeln('&nbsp;</th>');
cart.writeln('<tr bgcolor="#d0f0ff">');
cart.writeln('<th>&nbsp;</th><th>&nbsp;</th><th>&nbsp;</th><th align=left>&nbsp;TOTAL:</th><th align=right>$' + dollars_and_cents(total + shipping + tax));
cart.writeln('&nbsp;</th>');
cart.writeln('</table>');
cart.writeln('<br><center>');
if (cards_in_cart)
  {
  cart.write('<b>Member Number: ' + business_cards.os0);
  cart.write('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');
  cart.writeln('Name On Cards: ' + business_cards.os1 + '</b>');
  }
cart.writeln('<p>');
cart.writeln('<table border=1 cellpadding=5 bgcolor="#f0f0f0"><tr>');
cart.writeln('<th>');
cart.writeln('<font size=4>PLACE YOUR ORDER</font>');
cart.writeln('<p>');
cart.writeln('<table width="100%" border=1 cellpadding=5 bgcolor="#f0f4ff"><tr><th>');
cart.writeln('ONLINE<p>');
cart.writeln('<p>');
cart.writeln('<a href="https://www.paypal.com/us/verified/pal=paypal%40US%2dFirst%2eus" target="_blank"><img src="http://www.paypal.com/en_US/i/icon/verification_seal.gif" border="0" alt="Official PayPal Seal"></a>');
cart.writeln('<p>');
cart.writeln('<input type=submit value="PLACE ORDER" onClick="if (parent.banner.items_in_cart > 0) {parent.banner.submit_order()} else {alert(\'You must include at least one item in your order...\');} return false;">');
cart.writeln('</th></table><p>');
cart.writeln('or');
cart.writeln('<p>');
cart.writeln('<table width="100%" border=1 cellpadding=5 bgcolor="#f0f4ff"><tr><th>');
cart.writeln('Via US MAIL<p>');
cart.writeln('<center>');
cart.writeln('Enter SHIP TO information...');
cart.writeln('<table border=0><tr><th align=left>');
cart.writeln('<input type=text name=name size=30 value="' + parent.banner.ship_to.name + '" onfocus="if (value==\'name\') {value = \'\'} return true;" onChange="parent.banner.ship_to.name = value; return true;">');
if (!cards_in_cart)
  {
  cart.writeln('<br><input type=text name=member_number size=8 value="' + parent.banner.ship_to.member_number + '" onfocus="if (value==\'Member #\') {value = \'\'} return true;" onChange="parent.banner.ship_to.member_number = value; return true;"> (optional)');
  }
cart.writeln('<br><textarea name=address rows=2 cols=30 onfocus="if (value==\'address\') {value = \'\'} return true;" onChange="parent.banner.ship_to.address = value; return true;">' + parent.banner.ship_to.address + '</textarea>');
cart.writeln('<br><input type=text name=city size=15 value="' + parent.banner.ship_to.city + '" onfocus="if (value==\'city\') {value = \'\'} return true;" onChange="parent.banner.ship_to.city = value; return true;">,');
i = 0;
cart.writeln('<select name=state onChange="parent.banner.ship_to.state = document.order_form.state.selectedIndex; return true;">');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="--">state');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="AL">AL');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="AK">AK');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="AR">AR');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="AZ">AZ');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="CA">CA');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="CO">CO');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="CT">CT');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="DC">DC');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="DE">DE');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="FL">FL');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="GA">GA');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="HI">HI');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="IA">IA');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="ID">ID');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="IL">IL');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="IN">IN');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="KS">KS');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="KY">KY');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="LA">LA');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="MA">MA');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="MD">MD');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="ME">ME');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="MI">MI');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="MN">MN');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="MO">MO');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="MS">MS');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="MT">MT');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="NC">NC');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="ND">ND');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="NE">NE');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="NH">NH');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="NJ">NJ');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="NM">NM');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="NV">NV');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="NY">NY');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="OH">OH');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="OK">OK');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="OR">OR');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="PA">PA');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="RI">RI');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="SC">SC');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="SD">SD');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="TN">TN');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="TX">TX');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="UT">UT');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="VA">VA');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="VT">VT');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="WA">WA');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="WI">WI');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="WV">WV');
cart.writeln('  <option ' + ((parent.banner.ship_to.state == i++)? "selected " : "") + 'value="WY">WY');
cart.writeln('</select>');
cart.writeln('<input type=text name=ZIP size=10 value="' + parent.banner.ship_to.ZIP + '" onfocus="if (value==\'ZIP\') {value = \'\'} return true;" onChange="parent.banner.ship_to.ZIP = value; return true;">');
cart.writeln('</th></table>');
cart.writeln('</center>');
cart.writeln('<br>...then click');
cart.writeln('<br>');
cart.writeln('<input type=submit value="PRINT ORDER" onClick="parent.banner.print_order(); return false;">');
cart.writeln('<p>...and mail your check or money order for <font color="red">$' + dollars_and_cents(total + shipping) + '</font> to:');
cart.writeln('<p><center>');
cart.writeln('<table border=0><tr>');
cart.writeln('<th align=left>');
cart.writeln('US-First<br>PO Box 346<br>League City, TX 77574-0346');
cart.writeln('</th></table>');
cart.writeln('</center>');
cart.writeln('</th></table>');
cart.writeln('</th></table>');
cart.writeln('</form>');
cart.writeln('</center>');
cart.writeln('<p><br><br><br>');
cart.close();
}

function item_moved(item)
{
var i = get_position_on_shelf(item);
var quantity_in_cart = parent.text.document.store_shelf.quantity[catalog[i].position_on_shelf];
if (item.checked)
  {
  catalog[i].in_cart = true;
  quantity_in_cart.value = catalog[i].quantity = 1;
  return (true);
  }
else
  if (window.confirm('DELETE ' + catalog[i].item_name + '?'))
    {
    catalog[i].in_cart = false;
    quantity_in_cart.value = '';
    return (true);
    }
  else
    return (false);
}

function update_quantity(item)
{
var i = get_position_on_shelf(item);
var item_in_cart = parent.text.document.store_shelf.add_to_cart[catalog[i].position_on_shelf];
if (is_valid_quantity(item.value))
  {
  catalog[i].quantity = item.value;
  catalog[i].in_cart = item_in_cart.checked = true;
  item.blur();
  }
else
  item.value = '';
return (true);
}

function valid_quantity(item)
{
var i = get_position_on_shelf(item);
if ((item.value == '') && catalog[i].in_cart)
  item.value = catalog[i].quantity;
return (true);
}

