function updateTotal()
{
	var objFrmMain = document.orderform;
	
// CALCULATE: Add cost totals of each book together
	var tot1=parseFloat(objFrmMain.tot1.value);
	var tot2=parseFloat(objFrmMain.tot2.value);
	var tot3=parseFloat(objFrmMain.tot3.value);
	var tot4=parseFloat(objFrmMain.tot4.value);
	var tot5=parseFloat(objFrmMain.tot5.value);
	
	var newTotal =  tot1 + tot2 + tot3 + tot4 + tot5;
	
// UPDATE: Total cost of Books form object
	objFrmMain.total.value = FormatNumber(newTotal,2);

	var qty1=parseInt(objFrmMain.qty1.value);
	var qty2=parseInt(objFrmMain.qty2.value);
	var qty3=parseInt(objFrmMain.qty3.value);
	var qty4=parseInt(objFrmMain.qty4.value);
	var qty5=parseInt(objFrmMain.qty5.value);
	

	var newShipping =  (qty1 + qty2 + qty3 + qty4 + qty5) * 2.70;
	
// LOCATION: Where am I Located?
	
	var gst = 0;
	var pst = 0;
	
	var province = objFrmMain.province.value;
	
		if((province == "on") || (province == "ont") || (province == "ontario")) {
			objFrmMain.country.value = "Canada";
			objFrmMain.province.value = "Ontario";
			pst = 0.00;
		}

	var country = objFrmMain.country.value;
	
// If in Canada add 7% GST; if in Ontario add additional 8% PST
	
	if(country == "Canada") {
		// gst = 0.07;
		// We are not using GST
	
		if(province == "Ontario") {
			pst = 0.000;
		}
	}
	
	var newTax = newTotal*(gst + pst);
	
	objFrmMain.gst.value = FormatNumber(gst*newTotal,2);
	objFrmMain.pst.value = FormatNumber(pst*newTotal,2);

	objFrmMain.tax.value = FormatNumber(newTax,2);
	objFrmMain.shipping.value = FormatNumber(newShipping,2);
	objFrmMain.finaltotal.value = FormatNumber(newTotal+newShipping+newTax,2);
	

}


function FormatNumber(Number,Decimals,Separator)
{
 Number += ""          // Force argument to string.
 Decimals += ""        // Force argument to string.
 Separator += ""       // Force argument to string.
 if((Separator == "") || (Separator.length > 1))
  Separator = "."
 if(Number.length == 0)
  Number = "0"
 var OriginalNumber = Number  // Save for number too large.
 var Sign = 1
 var Pad = ""
 var Count = 0
 // If no number passed, force number to 0.
 if(parseFloat(Number)){
  Number = parseFloat(Number)} else {
  Number = 0}
 // If no decimals passed, default decimals to 2.
 if((parseInt(Decimals,10)) || (parseInt(Decimals,10) == 0)){
  Decimals = parseInt(Decimals,10)} else {
  Decimals = 2}
 if(Number < 0)
 {
  Sign = -1         // Remember sign of Number.
  Number *= Sign    // Force absolute value of Number.
 }
 if(Decimals < 0)
  Decimals *= -1    // Force absolute value of Decimals.
 // Next, convert number to rounded integer and force to string value.
 // (Number contains 1 extra digit used to force rounding)
 Number = "" + Math.floor(Number * Math.pow(10,Decimals + 1) + 5)
 if((Number.substring(1,2) == '.')||((Number + '')=='NaN'))
  return(OriginalNumber) // Number too large to format as specified.
 // If length of Number is less than number of decimals requested +1,
 // pad with zeros to requested length.
 if(Number.length < Decimals +1) // Construct pad string.
 {
  for(Count = Number.length; Count <= Decimals; Count++)
   Pad += "0"
 }
 Number = Pad + Number // Pad number as needed.
 if(Decimals == 0){
  // Drop extra digit -- Decimal portion is formatted.
  Number = Number.substring(0, Number.length -1)} else {
  // Or, format number with decimal point and drop extra decimal digit.
 Number = Number.substring(0,Number.length - Decimals -1) +
          Separator +
          Number.substring(Number.length - Decimals -1,
          Number.length -1)}
 if((Number == "") || (parseFloat(Number) < 1))
  Number="0"+Number // Force leading 0 for |Number| less than 1.
 if(Sign == -1)
  Number = "-" + Number  // Set sign of number.
 return(Number)
}



