var products = new Array(); // hold product codes for use in doTotals
  products[0] = "s_Plan1";
  products[1] = "s_Plan2";
 

function getProductTotal(field, form) {
	if (field.value=="") field.value=0;
	if ( !isPosInt(form, field, field.value) ) return;
	else {
		var product = field.name.slice(0, field.name.lastIndexOf("_") ); 
    var price = form[product + "_price"].value;
		var amt = field.value * price;
		form[product + "_tot"].value= formatDecimal(amt);
		doTotals(form);
	}
}		

function doTotals(form) {
	var sub_tot_amt=0, tax_amt=0, g_tot_amt=0;
		for (var i=0; i < 2; i++) {
			var cur_field = form[ products[i] + "_qty" ]; 
			if ( !isPosInt(form, cur_field, cur_field.value) ) return; 
			else sub_tot_amt += parseFloat(cur_field.value) * parseFloat( form[ products[i] + "_price" ].value );
    }
		if ( form.sales_tax && form.sales_tax.checked ) {
			tax_amt = 0 * sub_tot_amt;
			form.tax_amt.value = formatDecimal(tax_amt);
		}
		if (sub_tot_amt==0) g_tot_amt=0;
		else g_tot_amt = sub_tot_amt + tax_amt + 
      0;
		form.grand_tot.value = formatDecimal(g_tot_amt);
}

function inspectOptions(btn, field, form) {
	field.value = formatDecimal(btn.value);
	if (form.sub_tot.value > 0) doTotals(form);
}

function doSalesTax(field,form) {
	if (field.checked) 
		form.tax_amt.value = formatDecimal( 
      0 * form.sub_tot.value );
	else form.tax_amt.value = 0;
	if (form.sub_tot.value > 0) doTotals(form);
}

/*
function finalCheck(form) {
	// final check of quantity entries' validity
	for (var i=0; i < 9; i++) {
		var cur_field = form[ products[i] + "_qty" ]; 
		if ( !isPosInt(form, cur_field, cur_field.value) ) return;
	}
	// check if a quantity entered
	if (form.grand_tot.value == 0) {
		alert("You haven't ordered anything.");



		return false;
	} else {
		if ( !isValidEmail(form, form.email, form.email.value) ) return;
	  form.submit();
	}
}
*/

function checkValue(field) {
  if (field.value == 0) field.value = "";
}

function reCheckValue(field) {
  if (field.value == "") field.value = 0;
}

// ie needs delay
function setFocus(fld) { fld.focus();	fld.select(); }

function isPosInt(frm,fld,val) {
	var re = /^\d+$/
	if ( !re.test(val) ) {
		alert("Please enter whole numbers only.");
		if ( document.forms[frm.name] ) { // protect ns4 in case of nesting
    	setTimeout("setFocus(document.forms['"+frm.name+"'].elements['"+fld.name+"'])", 100);
    } else {
      fld.focus(); fld.select();
    }
		return false;
	} else return true;
}

function isValidEmail(frm,fld,entry) {
	var re = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,4}(\.[a-z]{2}){0,2})$/i;
	if (!re.test(entry)) {
		alert("The email address is not valid.")
		if ( document.forms[frm.name] ) { // protect ns4 in case of nesting
    	setTimeout("setFocus(document.forms['"+frm.name+"'].elements['"+fld.name+"'])",100);
    } else {
      fld.focus(); fld.select();
    }
		return false;
	} else return true;
}

// format val to n number of decimal places
// modified version of Danny Goodman's (JS Bible)
function formatDecimal(val, n) {
  n = n || 2;
  var str = "" + Math.round ( parseFloat(val) * Math.pow(10, n) );
  while (str.length <= n) str = "0" + str;
  var pt = str.length - n;
  return str.slice(0,pt) + "." + str.slice(pt);
}