// Executes list of functions when page first loads
<!--Hide JavaScript from older browsers

var subTotal = 0; //Initializes subtotal
var maTaxTotal = 0; //Initializes MA tax
var shipTotal = 0; //Initializes shipping & handling
var donation_amount = 0; //Initializes donation amount
var shippingtype = "domestic"; //Initializes shipping type

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload !='function') {
    window.onload = func;
  } else {
	window.onload = function() {
	  oldonload();
      func();
	}
  }
}

function resetOrderForm() {
var x = document.getElementById("orderentry");
document.orderdonation_form.reset();
}

function selectDonorRadio() {
  if (!document.getElementById) {return false;}
  if (!document.getElementById("imagination-amt")) {return false;}
  var amtField = document.getElementById("imagination-amt");
  var radioButtons = amtField.form.donortype;
  for (var i = 0; i < radioButtons.length; i++) {
    if (radioButtons[i].id != "imagination-radio") {
	radioButtons[i].onclick = function() {
	  amtField.value = "";
	  donation_amount = this.value*1; // Sets donation amount
	  var donation_amountTxt = donation_amount.toString();
	  var displayDonation = "$" + donation_amountTxt + ".00";
	  document.getElementById("donation-box").value = displayDonation;
	  calculateTotal();
	  }      
	}
  }
}

function selectImaginationRadio() {
  if (!document.getElementById) {return false;}
  if (!document.getElementById("imagination-radio")) {return false;}
  var amtField = document.getElementById("imagination-amt");
  amtField.onfocus = function() {
    var radioButton = document.getElementById("imagination-radio");
    radioButton.checked = true;
  }
  amtField.onblur = function() { // Sets donation amount based on user entry
	donation_amount = amtField.value;
	var donation_amountTxt = donation_amount.toString();	
	var badChars = /[a-z]+|[A-Z]+|\_/; // Regular expression prohibiting letters and the underscore.
	if (badChars.test(donation_amountTxt)) {
	  alert("Enter only numbers and/or a decimal point (e.g., 25, 35.75, etc.).\n");
	  amtField.value = "";
	  amtField.focus();
	  return;
	}
	var badChars2 = /\W/; // Regular expression prohibiting other characters
	if (badChars2.test(donation_amountTxt)) {
	  var isDot = /\./;
	  if (!isDot.test(donation_amountTxt)) {
		alert("Enter only numbers and/or a decimal point (e.g., 25, 35.75, etc.).\n");
		amtField.value = "";
		amtField.focus();
		return;
	  } else {
		  var badFormat = /\W.*\.|\..*\W/;
		  if (badFormat.test(donation_amountTxt)) {
			alert("Enter only numbers and/or a decimal point (e.g., 25, 35.75, etc.).\n");
			amtField.value = "";
			amtField.focus();
			return;
			}
	    }
	}
	if (donation_amountTxt == "" || donation_amountTxt == ".") {
	  donation_amount = 0;
	  displayDonation = "";
	  amtField.value = "";
	  calculateTotal();
	  } else {
		  donation_amount = donation_amount*1;
		  var the_decimal = donation_amountTxt.indexOf(".");
		  if (the_decimal == -1) {
			displayDonation = "$" + donation_amountTxt + ".00";
			} else if (donation_amountTxt.charAt(the_decimal + 1) == "") {
				displayDonation = "$" + donation_amountTxt + "00";
			  } else if (donation_amountTxt.charAt(the_decimal + 2) == "") {
			  	  displayDonation = "$" + donation_amountTxt + "0";
			  	} else {
					displayDonation = "$" + donation_amountTxt.substring(0,(the_decimal + 3));
					donation_amount = (donation_amountTxt.substring(0,(the_decimal + 3)))*1;
				  }
			calculateTotal();
		}
	document.getElementById("donation-box").value = displayDonation;
  }
}

function uncheckRadioGroup () {  // Based on script found at http://www.faqts.com/knowledge_base/view.phtml/aid/1813
  if (!document.getElementById) {return false;}
  if (!document.getElementById("uncheck-btn")) {return false;}
  var btn = document.getElementById("uncheck-btn");
  var num_elements = btn.form.elements;
  var radioButtonOrGroup = new Array();
  var j = 0;
  for (var i = 0; i < num_elements.length; i++) {
    if (num_elements[i].type != "radio") {continue;}
    if (num_elements[i].type == "radio") {
      radioButtonOrGroup[j] = num_elements[i];
	  j++;
	}
  }
  var amtField = document.getElementById("imagination-amt");
  btn.onclick = function() {
    if (radioButtonOrGroup.length) { // We have a group
      for (var b = 2; b < radioButtonOrGroup.length; b++) { //b=2 so that the Shipping Type radio button is not cleared
        if (radioButtonOrGroup[b].checked) {
          radioButtonOrGroup[b].checked = false;
		  amtField.value = "";
		  donation_amount = 0; // Resets donation amount to zero
		  document.getElementById("donation-box").value = "";
          break;
        }
	  }
	}
	else {
      radioButtonOrGroup.checked = false;
	  donation_amount = 0; // Resets donation amount to zero
	  document.getElementById("donation-box").value = "";
	}
	calculateTotal();
  }
}

function displayItemTotals(y) {
  var targetRow = y.parentNode.parentNode;
  var quantityCol = targetRow.getElementsByTagName("td")[1];
  var quantityEntered = quantityCol.firstChild.value;
  var badChars = /[a-z]+|[A-Z]+|\W|\_/; // Regular expression prohibiting letters, other characters, and the underscore.
	if (badChars.test(quantityEntered)) {
	  alert("Enter only integer values for Quantity.\n");
	  quantityCol.firstChild.value = "";
	  quantityCol.firstChild.focus();
	  return false;
	}
	var priceCol = targetRow.getElementsByTagName("td")[2];
	var priceTxt = priceCol.firstChild.nodeValue;
	var re = /\$/;
	var newTxt = priceTxt.replace(re, "");
	var price = newTxt*1;
	var itemTotal = (quantityEntered*1)*price;
	var roundTotal = roundAmount(itemTotal);
	if (roundTotal == 0) {
	  var displayTotal = "";
	  } else {
	      var displayTotal = "$" + roundTotal;
		  }
	var rightCol = targetRow.getElementsByTagName("td")[3];
	rightCol.firstChild.value = displayTotal;
	calculateSubtotal();
}

function roundAmount(the_number) {
  var tempNum=Math.round(the_number*100)/100;
  var tempNumTxt = tempNum.toString();
  var the_decimal = tempNumTxt.indexOf(".");
  if (the_decimal == -1) {
    var the_number_txt = tempNumTxt + ".00";
  } else {
	  var y = the_decimal + 3;
	  var the_number_txt = tempNumTxt.substring(0,y);
	  if (the_number_txt.charAt(the_decimal+1) == "") {
		the_number_txt = the_number_txt + "00";
	  } else if (the_number_txt.charAt(the_decimal+2) == "") {
		  the_number_txt = the_number_txt + "0";
		}
	}
  return the_number_txt;
}

function calculateSubtotal() {
  subTotal = 0;
  var products = document.getElementById("productList");
  var tds = products.getElementsByTagName("td");
  for (var i=0; i<tds.length; i++) {
    var tdClass = tds[i].className;
	if (tdClass == "rightcol") {
	  var itemTotalTxt = tds[i].firstChild.value;
	  if (itemTotalTxt == "") {
	    var itemTotal = 0;
		} else {
			var re = /\$/;
			var newTxt = itemTotalTxt.replace(re, "");
			itemTotal = newTxt*1;
			}
	  subTotal = subTotal + itemTotal;
	  subTotal=Math.round(subTotal*100)/100;
	}
  }
  var subTotalTxt = subTotal.toString();
  var the_decimal = subTotalTxt.indexOf(".");
  if (the_decimal == -1) {
    the_number_txt = subTotalTxt + ".00";
  } else {
	  var y = the_decimal + 3;
	  var the_number_txt = subTotalTxt.substring(0,y);
	  if (the_number_txt.charAt(the_decimal+1) == "") {
		the_number_txt = the_number_txt + "00";
	  } else if (the_number_txt.charAt(the_decimal+2) == "") {
		  the_number_txt = the_number_txt + "0";
		}
	}
  subTotalTxt = "$" + the_number_txt;
  if (subTotalTxt == "$0.00") {
    subTotalTxt = "";
  }
  document.getElementById("subtotal-box").value = subTotalTxt;
  calculateMaTax();
}

function maTaxCheckbox() {
  if (!document.orderdonation_form.ma_resident) {return false;}
  maCheckbox = document.orderdonation_form.ma_resident;
  maCheckbox.onclick = function() {
	  calculateSubtotal();
  }
}

function calculateMaTax() {
  if (maCheckbox.checked == true) {
    maTaxTotal = subTotal*.0625;
  } else {
	  maTaxTotal = 0;
	  }
  maTaxTotal=Math.round(maTaxTotal*100)/100;
  var maTaxTotalTxt = maTaxTotal.toString();
  var the_decimal = maTaxTotalTxt.indexOf(".");
  var y = the_decimal + 3;
  var the_number_txt = maTaxTotalTxt.substring(0,y);
  if (the_decimal == "-1") {
	the_number_txt = the_number_txt + ".00";
	} else if (the_number_txt.charAt(the_decimal+2) == "") {
		the_number_txt = the_number_txt + "0";
		}
  maTaxTotalTxt = "$" + the_number_txt;
  if (maTaxTotalTxt == "$0.00") {
    maTaxTotalTxt = "";
  }
  document.getElementById("ma-tax-box").value = maTaxTotalTxt;
  calculateShipping();
}

function shippingRadioButton() {
  if (!document.orderdonation_form.shiptype) {return false;}
  shipTypeRadio = document.orderdonation_form.shiptype;
  shipTypeRadio[0].onclick = function() {
  shippingtype = shipTypeRadio[0].value;
    calculateSubtotal();
  }
  shipTypeRadio[1].onclick = function() {
  shippingtype = shipTypeRadio[1].value;
    calculateSubtotal();
  }
}

function calculateShipping() {
if (shippingtype == "domestic") {
  if (subTotal > 0.00 && subTotal < 50.00) {
    shipTotal = 8;
	} else if (subTotal >= 50.00 && subTotal < 100.00) {
		shipTotal = 10;
		} else if (subTotal >= 100.00 && subTotal < 150.00) {
			shipTotal = 15;
			} else if (subTotal >= 150.00 && subTotal < 200.00) {
				shipTotal = 20;
				} else if (subTotal >= 200.00) {
					shipTotal = 25;
					} else if (subTotal == 0) {
						shipTotal = 0;
						}
   }
 else if (shippingtype == "international") {
   shipTotal = 20;
   }
  shipTotalTxt = "$" + shipTotal + ".00";
  if (shipTotalTxt == "$0.00") {
    shipTotalTxt = "";
  }
  document.getElementById("shipping-box").value = shipTotalTxt;
  calculateTotal();
}

function calculateTotal() {
  totalSale = subTotal + maTaxTotal + shipTotal + donation_amount;
  totalSale = Math.round(totalSale*100)/100;
  var tempNumTxt = totalSale.toString();
  var the_decimal = tempNumTxt.indexOf(".");
  if (the_decimal == -1) {
    var the_number_txt = tempNumTxt + ".00";
  } else {
	  var y = the_decimal + 3;
	  var the_number_txt = tempNumTxt.substring(0,y);
	  if (the_number_txt.charAt(the_decimal+1) == "") {
		the_number_txt = the_number_txt + "00";
	  } else if (the_number_txt.charAt(the_decimal+2) == "") {
		  the_number_txt = the_number_txt + "0";
		}
	}
  var totalSaleTxt = "$" + the_number_txt;
  if (totalSaleTxt == "$0.00") {
    totalSaleTxt = "";
  }
  document.getElementById("total-box").value = totalSaleTxt;
}

function hideRateTable() {
  if (!document.getElementById) {return false;}
  document.getElementById("shiprates").className = "hiderates";
}

function readonlyAmountBox() {
  if (!document.getElementById) {return false;}
  var prodtable = document.getElementById("productcatalog");
  var prodamountboxes = prodtable.getElementsByTagName("input");
  for (var i=0; i<prodamountboxes.length; i++) {
    if (prodamountboxes[i].className == "amount-box") {
      prodamountboxes[i].className = "readonly-amount-box";
      prodamountboxes[i].readOnly = true;
    }
  }
}  

// List of functions to load when page first loads
addLoadEvent(resetOrderForm);
addLoadEvent(selectDonorRadio);
addLoadEvent(selectImaginationRadio);
addLoadEvent(uncheckRadioGroup);
addLoadEvent(maTaxCheckbox);
addLoadEvent(shippingRadioButton);
addLoadEvent(hideRateTable);
addLoadEvent(readonlyAmountBox);

// End hiding scripts -->

