// colorblind.js

// Calculate sales tax in CA
function calctax(amt, taxrate)
{ // determine sales tax
var tax = amt * taxrate;
return tax;
}

function totalTwoAmounts(a,b) {
return parseFloat(a) + parseFloat(b);
}

function totalFourAmounts(a,b, c, d) {
return parseFloat(a) + parseFloat(b) + parseFloat(c) + parseFloat(d);
}

function getDiscountedShippingFactor(numDVDsValue, numGuidesValue) {
var discountFactor = 1.00;
var totalNumItems = totalTwoAmounts(numDVDsValue, numGuidesValue);
 if (totalNumItems > 39)
   {discountFactor = 0.30}
 else
 if (totalNumItems > 29)
   {discountFactor = 0.35}
 else
 if (totalNumItems > 24)
   {discountFactor = 0.40}
 else
 if (totalNumItems > 19)
   {discountFactor = 0.50}
 else
 if (totalNumItems > 14)
   {discountFactor = 0.60}
 else
 if (totalNumItems > 9)
   {discountFactor = 0.70}
 else
 if (totalNumItems > 4)
   {discountFactor = 0.80}
 return discountFactor;
}


function updateOrderSalesTax() {
  var totalProduct  = document.getElementById("totalProduct");
  var totalShipping = document.getElementById("totalShipping");
  var salesTax      = document.getElementById("salesTax");
  var orderTotal    = document.getElementById("orderTotal");
  var State         = document.getElementById("State");
  var valueState         = State.value;
  var valueTotalProduct  = totalProduct.value;
  var valueTotalShipping = totalShipping.value;
  // !! need to verify that values are valid first before calculating
  if (valueState != 'CA')
  {
    // !! if not California set to 0.00
    valueSalesTax = 0.00;
  }
  else
  {
    var valueSalesTax = calctax(valueTotalProduct, 0.0875);
  }
  salesTax.value = formatCurrencyNoDollarSign(valueSalesTax); // display sales tax value
  var valueOrderTotal = totalFourAmounts(valueTotalProduct, valueTotalShipping, valueSalesTax, 0.0);
  orderTotal.value = formatCurrencyNoDollarSign(valueOrderTotal); // display order total value
  return true;
}

function setDVDsPrice() {
  var numDVDs        = document.getElementById("numDVDs");
  var amountDVDs     = document.getElementById("amountDVDs");
  var shippingDVDs   = document.getElementById("shippingDVDs");
  var numGuides      = document.getElementById("numGuides");
  var amountGuides   = document.getElementById("amountGuides");
  var shippingGuides = document.getElementById("shippingGuides");
  var totalProduct   = document.getElementById("totalProduct");
  var totalShipping  = document.getElementById("totalShipping");
// !! need to verify that values are valid first before calculating
// calculate DVDs product and shipping values
  var valueAmountDVDs = numDVDs.value * 24.95;
  var shippingFactor = getDiscountedShippingFactor(numDVDs.value, numGuides.value);
  var valueAmountShippingDVDs = (numDVDs.value * 3.95) * shippingFactor;
  amountDVDs.value = formatCurrencyNoDollarSign(valueAmountDVDs);
  shippingDVDs.value = formatCurrencyNoDollarSign(valueAmountShippingDVDs);
// update product and shipping totals
  var valueTotalProduct = totalTwoAmounts(amountDVDs.value, amountGuides.value);
  var valueTotalShipping = totalTwoAmounts(shippingDVDs.value, shippingGuides.value);
  totalProduct.value  = formatCurrencyNoDollarSign(valueTotalProduct);
  totalShipping.value = formatCurrencyNoDollarSign(valueTotalShipping);
return true;
}

function setGuidesPrice() {
// update subTotal
  var numGuides      = document.getElementById("numGuides");
  var amountGuides   = document.getElementById("amountGuides");
  var shippingGuides = document.getElementById("shippingGuides");
  var numDVDs        = document.getElementById("numDVDs");
  var amountDVDs     = document.getElementById("amountDVDs");
  var shippingDVDs   = document.getElementById("shippingDVDs");
  var totalProduct   = document.getElementById("totalProduct");
  var totalShipping  = document.getElementById("totalShipping");
// !! need to verify that values are valid first before calculating
// calculate DVDs product and shipping values
  var valueAmountGuides = numGuides.value * 12.95;
//  alert('valueAmountGuides = ' + valueAmountGuides);
  var shippingFactor = getDiscountedShippingFactor(numDVDs.value, numGuides.value);
  var valueAmountShippingGuides = (numGuides.value * 3.95) * shippingFactor;
  amountGuides.value = formatCurrencyNoDollarSign(valueAmountGuides);
  shippingGuides.value = formatCurrencyNoDollarSign(valueAmountShippingGuides);
// update product and shipping totals
  var valueTotalProduct = totalTwoAmounts(amountDVDs.value, amountGuides.value);
  var valueTotalShipping = totalTwoAmounts(shippingDVDs.value, shippingGuides.value);
  totalProduct.value  = formatCurrencyNoDollarSign(valueTotalProduct);
  totalShipping.value = formatCurrencyNoDollarSign(valueTotalShipping);
return true;
}

function updateForItemChange() {
// update sales tax and order total
  setDVDsPrice();
  setGuidesPrice();
  updateOrderSalesTax();
}

function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function setCookie(name, value, expire) {
document.cookie = name + "=" + escape(value) + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()))
}

function getOrderNumber(){
 var d = new Date();
 var i1 = d.getMinutes();
 var d = new Date();
 var i2 = d.getMilliseconds();
 var d = new Date();
 var i3 = d.getSeconds();
 var i = i1.toString(10) + i3.toString(10) + i2.toString(10);
 unitId = '90' + i;
 while (unitId.length<9)
    {
       unitId = unitId + '0';
    }
 return unitId;
}

function formatCurrencyDollarSign(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
    num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
    cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
  return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function formatCurrencyNoDollarSign(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
    num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
    cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
  return (((sign)?'':'-') + num + '.' + cents);
}

function formatCurrencyNoDollarSignNoComma(num) {
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num))
    num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10)
    cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0,num.length-(4*i+3))+ num.substring(num.length-(4*i+3));
  return (((sign)?'':'-') + num + '.' + cents);
}

function saveDVDOrderInfo(numDVDs, numGuides, amountDVDs, shippingDVDs, amountGuides,
shippingGuides, totalProduct, totalShipping, salesTax, orderTotal, nameFirst, nameLast,
email, address, aptSteAddress, city, state, zipcode, country, learned, telephone, transID) {

var today = new Date();
var expires = new Date();
expires.setTime(today.getTime() + 1000*60*60*24*30);
setCookie("cb_numDVDs",               numDVDs,                  expires);
setCookie("cb_numGuides",             numGuides,                expires);
setCookie("cb_amountDVDs",            amountDVDs,               expires);
setCookie("cb_shippingDVDs",          shippingDVDs,             expires);
setCookie("cb_amountGuides",          amountGuides,             expires);
setCookie("cb_shippingGuides",        shippingGuides,           expires);
setCookie("cb_totalProduct",          totalProduct,             expires);
setCookie("cb_totalShipping",         totalShipping,            expires);
setCookie("cb_salesTax",              salesTax,                 expires);
setCookie("cb_orderTotal",            orderTotal,               expires);
setCookie("cb_nameFirst",             nameFirst,                expires);
setCookie("cb_nameLast",              nameLast,                 expires);
setCookie("cb_email",                 email,                    expires);
setCookie("cb_address",               address,                  expires);
setCookie("cb_aptSteAddress",         aptSteAddress,            expires);
setCookie("cb_city",                  city,                     expires);
setCookie("cb_state",                 state,                    expires);
setCookie("cb_zipcode",               zipcode,                  expires);
setCookie("cb_country",               country,                  expires);
setCookie("cb_learned",               learned,                  expires);
setCookie("cb_telephone",             telephone,                expires);
setCookie("cb_transID",               transID,                  expires);
}

function validateOrderForm () {
  var validForm = false;
  if ((document.Order.numDVDs.value == '0') && (document.Order.numGuides.value == '0') )
    alert('Please specify the number of DVDs or Study Guides for your order.')
  else
  if (document.Order.FirstName.value == '')
    alert('Please provide a First Name')
  else
  if (document.Order.LastName.value == '')
    alert('Please provide a Last Name')
  else
  if (document.Order.EMail.value == '')
    alert('Please provide an E-Mail address')
  else
  if (document.Order.EMail.value.indexOf('@') == -1)
    alert(document.registration.EMail.value + ' is not a valid email address')
  else
  if (document.Order.Learned.selectedIndex == 0)
    alert('Please select the best answer for how you Learned about Colorblind')
  else
  if (document.Order.StreetAddress.value == '')
    alert('Please provide a street address')
  else
  if (document.Order.City.value == '')
    alert('Please provide a City name')
  else
  if (document.Order.State.value == '')
    alert('Please provide a State abbreviation')
  else
  if (document.Order.Zip.value == '')
    alert('Please provide a Zip Code')
  else
  if (document.Order.Country.value == '--')
    alert('Please select a Country')
  else
    validForm = true;
  return validForm;
}

function submitRegistrationInfo(){
// ON selection of an item this function loads a new page
var numDVDs          = document.getElementById("numDVDs");
var numGuides        = document.getElementById("numGuides");
var amountDVDs       = document.getElementById("amountDVDs");
var shippingDVDs     = document.getElementById("shippingDVDs");
var amountGuides     = document.getElementById("amountGuides");
var shippingGuides   = document.getElementById("shippingGuides");
var totalProduct     = document.getElementById("totalProduct");
var totalShipping    = document.getElementById("totalShipping");
var salesTax         = document.getElementById("salesTax");
var orderTotal       = document.getElementById("orderTotal");
var nameFirst        = document.getElementById("FirstName");
var nameLast         = document.getElementById("LastName");
var email            = document.getElementById("EMail");
var address          = document.getElementById("StreetAddress");
var aptSteAddress    = document.getElementById("AptSteAddress");
var city             = document.getElementById("City");
var state            = document.getElementById("State");
var zipcode          = document.getElementById("Zip");
var country          = document.getElementById("Country");
var learned          = document.getElementById("Learned");
var telephone        = document.getElementById("Telephone");
var transID          = document.getElementById("TransID");

// store information in cookies for the next page to use
  saveDVDOrderInfo(numDVDs.value,
                   numGuides.value,
                   amountDVDs.value,
                   shippingDVDs.value,
                   amountGuides.value,
                   shippingGuides.value,
                   totalProduct.value,
                   totalShipping.value,
                   salesTax.value,
                   orderTotal.value,
                   nameFirst.value,
                   nameLast.value,
                   email.value,
                   address.value,
                   aptSteAddress.value,
                   city.value,
                   state.value,
                   zipcode.value,
                   country.value,
                   learned.value,
                   telephone.value,
                   transID.value);
  return true;
}

function processOrderPage() {
var orderForm = document.getElementById("Order");
var validRegistration = validateOrderForm();
  if (validRegistration)
  {
    submitRegistrationInfo(); // save to cookies
    orderForm.submit(); // continue with payment proces
  }
  return validRegistration;
}

function submitCreditCard(){
var cc_purchase_form=document.getElementById("cc_payment");
  cc_purchase_form.submit();
  return true;
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

