
var gField;
var gFrame;

function isEmail() {
	var isValidEmail = false;
	var str = gField.value;
	var supported = 0;
	if (window.RegExp) {
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported) 
	{
		isValidEmail = (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
		if (!isValidEmail)
		{
      		alert("The e-mail typed seems to be invalid!");
      		gField.focus();
      		gField.select();
		}
		return isValidEmail;
	}
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
	isValidEmail = (!r1.test(str) && r2.test(str));
	if (!isValidEmail)
	{
      	alert("The e-mail typed seems to be invalid!");
      	gField.focus();
      	gField.select();
	}
	return isValidEmail;
}

function isNotEmpty() {
   if (gField.value == "" || gField.value == null) {
      alert("The selected field cannot be left empty.");
      gField.focus();
      gField.select();
      return false;
   }
   gField.value = gField.value.toUpperCase();
   return true;
}


function isPositiveInteger() {
   var inputStr = gField.value;
   if (inputStr.length == 0)
      return true;
   for (var i = 0; i < inputStr.length; i++) {
      var oneChar = inputStr.charAt(i);
      if (oneChar < "0" || oneChar > "9") {
         alert("The selected field must be a positive, whole number (no letters or punctuation are allowed).");
         gField.focus();
         gField.select();
         return false;
      }
   }
   return true;
}

function isDollarsOnly8Commas() {
   var inputStr = gField.value;
   if (inputStr.length == 0)
      return true;
   inputStr = stripCommasAndDoll(gField.value);
   inputStr = stripCents(inputStr);
   gField.value = inputStr;

   if (isPositiveInteger()) {
      if (inputStr.length > 8) {
         alert("The selected field must be less than 100,000,000.");
         gField.focus();
         gField.select();
         return false;
      }
      gField.value = reinsertCommas(inputStr);
      return true;
   }
   alert("Check the dollar amount entered.");
   gField.focus();
   gField.select();
   return false;
}

function isUSState() {
   var inputStr = gField.value.toUpperCase();
   if (inputStr.length > 0 && USStates[inputStr] == null) {
      var msg = "";
      var firstChar = inputStr.charAt(0);
      if (firstChar == "A") {
         msg += "\n(Alabama = AL; Alaska = AK; Arizona = AZ; Arkansas = AR)";
      }
      if (firstChar == "D") {
         msg += "\n(Delaware = DE; District of Columbia = DC)";
      }
      if (firstChar == "I") {
         msg += "\n(Idaho = ID; Illinois = IL; Indiana = IN; Iowa = IA)";
      }
      if (firstChar == "M") {
         msg += "\n(Maine = ME; Maryland = MD; Massachusetts = MA; Michigan = MI; Minnesota = MN; Mississippi = MS; Missouri = MO; Montana = MT)";
      }
      if (firstChar == "N") {
         msg += "\n(Nebraska = NE; Nevada = NV)";
      }
      alert("Check the spelling of the state abbreviation." + msg);
      gField.focus();
      gField.select();
      return false;
   }
   gField.value = inputStr;

   return true;
}

function maxString15() {
   return maxString(15);
}
function maxString25() {
   return maxString(25);
}
function maxString30() {
   return maxString(30);
}
function maxString35() {
   return maxString(35);
}

function isDateFormat() {
   var inputStr = gField.value;
   while (inputStr.indexOf("-") != -1) {
      inputStr = replaceString(inputStr,"-","/");
   }
   var delim1 = inputStr.indexOf("/");
   var delim2 = inputStr.lastIndexOf("/");
   if (delim1 != -1 && delim1 == delim2) {
      alert("The date entry is not in an acceptable format.\n\nYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm-dd-yyyy.  (If the month or date data is not available, enter \'01\' in the appropriate location.)");
      gField.focus();
      gField.select();
      return false;
   }
   if (delim1 != -1) {
      // there are delimiters; extract component values
      var mm = parseInt(inputStr.substring(0,delim1),10);
      var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10);
      var yyyy = parseInt(inputStr.substring(delim2 + 1, inputStr.length),10);
   } else {
      // there are no delimiters; extract component values
      var mm = parseInt(inputStr.substring(0,2),10);
      var dd = parseInt(inputStr.substring(2,4),10);
      var yyyy = parseInt(inputStr.substring(4,inputStr.length),10);
   }
   if (isNaN(mm) || isNaN(dd) || isNaN(yyyy)) {
      alert("The date entry is not in an acceptable format.\n\nYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm-dd-yyyy.");
      gField.focus();
      gField.select();
      return false;
   }
   if (mm < 1 || mm > 12) {
      // month value is not 1 thru 12
      alert("Months must be entered between the range of 01 (January) and 12 (December).");
      gField.focus();
      gField.select();
      return false;
   }
   if (dd < 1 || dd > 31) {
      // date value is not 1 thru 31
      alert("Days must be entered between the range of 01 and a maximum of 31 (depending on the month and year).");
      gField.focus();
      gField.select();
      return false;
   }
   if (yyyy < 100) {
      if (yyyy >= 30) {
         yyyy += 1900;
      } else {
         yyyy += 2000;
      }
   }
   gField.value = monthDayFormat(mm) + "/" + monthDayFormat(dd) + "/" + yyyy;
   return true;
}

function isM5_P10Date() {
   if (gField.value.length == 0)
      return true;
   var thisYear = getYear();
   return isDate((thisYear - 5),(thisYear + 10));
}

function isNYU() {
   var inputStr = gField.value.toUpperCase();
   if (inputStr.length != 1 || "NYU".indexOf(inputStr) == -1) {
      alert("Enter one letter only:\n   N(o)\n   Y(es)\n   U(nknown)");
      gField.focus();
      gField.select();
      return false;
   }
   gField.value = inputStr;
   return true;
}

function isZip() {
   if (gField.value.length == 0)
      return true;
   var inputStr = gField.value;
   if (isPositiveInteger()) {
      if (inputStr.length != 5) {
         alert("Enter the first five digits of the ZIP code in this field.");
         gField.focus();
         gField.select();
         return false;
      }
      return true;
   }
   return false;
}

function isPhone() {
   var inputStr = gField.value;
   if (inputStr.length == 0)
      return true;
   inputStr = stripHyphens(inputStr);
   inputStr = stripSlashParens(inputStr);
   for (var i = 0; i < inputStr.length; i++) {
      var oneChar = inputStr.charAt(i);
      if (oneChar < "0" || oneChar > "9") {
         alert("A phone number must be numbers only, including Area Code.  The entry format is \'212-555-1212\' or \'2125551212\'.");
         gField.focus();
         gField.select();
         return false;
      }
   }
   if (inputStr.length != 10) {
         alert("Your phone number entry contains " + inputStr.length + " numbers instead of the required 10. Be sure to include Area Code.");
         gField.focus();
         gField.select();
         return false;
   }
   inputStr = restorePhoneHyphens(inputStr);
   gField.value = inputStr;
   return true;
}


function isSSN1() {
   var inputStr = gField.value;
   if (inputStr == null || inputStr == "")
      return true;
   if (isNum(3)) {
      if (parseInt(inputStr) >= 800) {
         alert("The first three digits of a Social Security number must be below 800.");
         gField.focus();
         gField.select();
         return false;
      }
      if (inputStr == "000") {
         alert("All zeros are not allowed in any Social Security number field.");
         gField.focus();
         gField.select();
         return false;
      }
      return true;
   }
   return false;
}

function isSSN2() {
   return isTINComponent(2, "Social Security");
}
function isSSN3() {
   return isTINComponent(4, "Social Security");
}

function isConfirmed() {
   var inputStr = gField.value;
   var primary = (gField.name.indexOf("_xcfm") == -1);
   if (primary) {
     var xcfmField = eval("window." + gFrame.name + ".document.forms[0]." + gField.name + "_xcfm");
      var xcfmValue = xcfmField.value;
      if (inputStr != xcfmValue) {
         xcfmField.value = "";
         return true;
      }
   } else {
      var xcfmField = eval("window." + gFrame.name + ".document.forms[0]." + gField.name.substring(0,(gField.name.length-5)));
   }
   var xcfmStr = xcfmField.value;
   if ((primary && xcfmStr != "") || (!primary)) {
      if (inputStr != xcfmStr) {
         alert("The main and confirmation entry field contents do not match. Both fields must have EXACTLY the same content to be accepted by the database.");
         gField.focus();
         gField.select();
         return false;
      }
   }
   return true;
}

function maxString(len) {
   var inputStr = gField.value.toUpperCase();
   if (inputStr.length > len) {
      if (!confirm("This field is limited to " + len + " characters long. Should the system accept the first " + len + " characters of your entry, and ignore the rest?")) {
         gField.focus();
         gField.select();
         return false;
      }
      inputStr = inputStr.substring(0,len);
   }
   gField.value = inputStr;
   return true;
}

function stripCommasAndDoll(inputStr) {
   var marker;
   while (inputStr.indexOf("$") != -1) {
      marker = inputStr.indexOf("$");
      inputStr = inputStr.substring(0,marker) + inputStr.substring(marker+1,inputStr.length);
   }
   while (inputStr.indexOf(",") != -1) {
      marker = inputStr.indexOf(",");
      inputStr = inputStr.substring(0,marker) + inputStr.substring(marker+1,inputStr.length);
   }
   return inputStr;
}

function reinsertCommas(inputStr) {
   var out = "";
   var len = inputStr.length;
   for (var i = 0; i < len; i++) {
      if (i != 0 && i%3 == 0) {
         out = "," + out;
      }
      out = inputStr.charAt(len-i-1) + out;
   }
   return out;
}

function stripCents(inputStr) {
   var marker = inputStr.indexOf(".");
   if (marker != -1) {
      return inputStr.substring(0,marker);
   }
   return inputStr;
}

function stripHyphens(inputStr) {
   var marker;
   while (inputStr.indexOf("-") != -1) {
      marker = inputStr.indexOf("-");
      inputStr = inputStr.substring(0,marker) + inputStr.substring(marker+1,inputStr.length);
   }
   return inputStr;
}

function stripSlashParens(inputStr) {
   var marker;
   while (inputStr.indexOf("/") != -1) {
      marker = inputStr.indexOf("/");
      inputStr = inputStr.substring(0,marker) + inputStr.substring(marker+1,inputStr.length);
   }
   while (inputStr.indexOf("(") != -1) {
      marker = inputStr.indexOf("(");
      inputStr = inputStr.substring(0,marker) + inputStr.substring(marker+1,inputStr.length);
   }
   while (inputStr.indexOf(")") != -1) {
      marker = inputStr.indexOf(")");
      inputStr = inputStr.substring(0,marker) + inputStr.substring(marker+1,inputStr.length);
   }
   while (inputStr.indexOf(" ") != -1) {
      marker = inputStr.indexOf(" ");
      inputStr = inputStr.substring(0,marker) + inputStr.substring(marker+1,inputStr.length);
   }
   return inputStr;
}

function stripZeros(inputStr) {
   var result = inputStr;
   while (result.substring(0,1) == "0") {
      result = result.substring(1,result.length);
   }
   return result;
}

function restorePhoneHyphens(inputStr) {
   var n1 = inputStr.substring(0,3);
   var n2 = inputStr.substring(3,6);
   var n3 = inputStr.substring(6,10);
   return (n1 + "-" + n2 + "-" + n3);
}

function isSSNRange(inputStr) {
   if (inputStr.substring(0,3) == "000" ||
      inputStr.substring(4,6) == "00"  ||
      inputStr.substring(7,11) == "0000") {
         alert("No segment of a valid Social Security Number can be all zeros.");
         gField.focus();
         gField.select();
         return false;
   }
   if (parseInt(inputStr.substring(0,3), 10) >= 800) {
         alert("The first three digits of a valid Social Security Number must be less than \'800\'.");
         gField.focus();
         gField.select();
         return false;
   }
   return true;
}

function isNum(n) {
   if (isPositiveInteger()) {
      var inputStr = gField.value;
      if (inputStr.length != n) {
         alert("The selected field requires a number " + n + " digits long.");
         gField.focus();
         gField.select();
         return false;
      }
      return true;
   }
   return false;
}

var USStates = new Array(53);
USStates["AL"] = "ALABAMA";
USStates["AK"] = "ALASKA";
USStates["AZ"] = "ARIZONA";
USStates["AR"] = "ARKANSAS";
USStates["CA"] = "CALIFORNIA";
USStates["CO"] = "COLORADO";
USStates["CT"] = "CONNECTICUT";
USStates["DE"] = "DELAWARE";
USStates["DC"] = "DISTRICT OF COLUMBIA";
USStates["FL"] = "FLORIDA";
USStates["FR"] = "FOREIGN";
USStates["GA"] = "GEORGIA";
USStates["HI"] = "HAWAII";
USStates["ID"] = "IDAHO";
USStates["IL"] = "ILLINOIS";
USStates["IN"] = "INDIANA";
USStates["IA"] = "IOWA";
USStates["KS"] = "KANSAS";
USStates["KY"] = "KENTUCKY";
USStates["LA"] = "LOUISIANA";
USStates["ME"] = "MAINE";
USStates["MD"] = "MARYLAND";
USStates["MA"] = "MASSACHUSETTS";
USStates["MI"] = "MICHIGAN";
USStates["MN"] = "MINNESOTA";
USStates["MS"] = "MISSISSIPPI";
USStates["MO"] = "MISSOURI";
USStates["MT"] = "MONTANA";
USStates["NE"] = "NEBRASKA";
USStates["NV"] = "NEVADA";
USStates["NH"] = "NEW HAMPSHIRE";
USStates["NJ"] = "NEW JERSEY";
USStates["NM"] = "NEW MEXICO";
USStates["NY"] = "NEW YORK";
USStates["NC"] = "NORTH CAROLINA";
USStates["ND"] = "NORTH DAKOTA";
USStates["OH"] = "OHIO";
USStates["OK"] = "OKLAHOMA";
USStates["OR"] = "OREGON";
USStates["PA"] = "PENNSYLVANIA";
USStates["PR"] = "PUERTO RICO";
USStates["RI"] = "RHODE ISLAND";
USStates["SC"] = "SOUTH CAROLINA";
USStates["SD"] = "SOUTH DAKOTA";
USStates["TN"] = "TENNESSEE";
USStates["TX"] = "TEXAS";
USStates["UT"] = "UTAH";
USStates["VT"] = "VERMONT";
USStates["VA"] = "VIRGINIA";
USStates["WA"] = "WASHINGTON";
USStates["WV"] = "WEST VIRGINIA";
USStates["WI"] = "WISCONSIN";
USStates["WY"] = "WYOMING";

function isDate(minYear,maxYear,minDays,maxDays) {
   var inputStr = gField.value;
   while (inputStr.indexOf("-") != -1) {
      inputStr = replaceString(inputStr,"-","/");
   }
   var delim1 = inputStr.indexOf("/");
   var delim2 = inputStr.lastIndexOf("/");
   if (delim1 != -1 && delim1 == delim2) {
      alert("The date entry is not in an acceptable format.\n\nYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm-dd-yyyy.  (If the month or date data is not available, enter \'01\' in the appropriate location.)");
      gField.focus();
      gField.select();
      return false;
   }
   if (delim1 != -1) {
      var mm = parseInt(inputStr.substring(0,delim1),10);
      var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10);
      var yyyy = parseInt(inputStr.substring(delim2 + 1, inputStr.length),10);
   } else {
      var mm = parseInt(inputStr.substring(0,2),10);
      var dd = parseInt(inputStr.substring(2,4),10);
      var yyyy = parseInt(inputStr.substring(4,inputStr.length),10);
   }
   if (isNaN(mm) || isNaN(dd) || isNaN(yyyy)) {
      alert("The date entry is not in an acceptable format.\n\nYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm-dd-yyyy.");
      gField.focus();
      gField.select();
      return false;
   }
   if (mm < 1 || mm > 12) {
      alert("Months must be entered between the range of 01 (January) and 12 (December).");
      gField.focus();
      gField.select();
      return false;
   }
   if (dd < 1 || dd > 31) {
      alert("Days must be entered between the range of 01 and a maximum of 31 (depending on the month and year).");
      gField.focus();
      gField.select();
      return false;
   }

   if (yyyy < 100) {
      if (yyyy >= 30) {
         yyyy += 1900;
      } else {
         yyyy += 2000;
      }
   }

   var today = new Date()
   if (!minYear) {
      var dateStr = new String(monthDayFormat(mm) + "/" + monthDayFormat(dd) + "/" + yyyy);
      var testDate = new Date(dateStr);
      if (testDate.getTime() < (today.getTime() + (minDays * 24 * 60 * 60 * 1000))) {
         alert("The most likely range for this entry begins " + minDays + " days from today.");
      }
      if (testDate.getTime() > today.getTime() + (maxDays * 24 * 60 * 60 * 1000)) {
         alert("The most likely range for this entry ends " + maxDays + " days from today.");
      }
   } else if (minYear && maxYear) {
      if (yyyy < minYear || yyyy > maxYear) {
         alert("The most likely range for this entry is between the years " + minYear + " and " + maxYear + ".  If your source data indicates a date outside this range, then enter that date.");
      }
   } else {
      var thisYear = today.getYear();
      if (thisYear < 100) {
         thisYear += 1900;
      }
      minYear = thisYear - 100;
      maxYear = thisYear + 25;
      if (yyyy < minYear || yyyy > maxYear) {
         alert("It is unusual for a date entry to be before " + minYear + " or after " + maxYear + ". Please verify this entry.");
      }
   }
   if (!checkMonthLength(mm,dd)) {
      gField.focus();
      gField.select();
      return false;
   }
   if (mm == 2) {
      if (!checkLeapMonth(mm,dd,yyyy)) {
         gField.focus();
         gField.select();
         return false;
      }
   }

   gField.value = monthDayFormat(mm) + "/" + monthDayFormat(dd) + "/" + yyyy;
   return true;
}

function getYear() {
   var thisYear = (new Date()).getYear();
   thisYear = (thisYear < 1900) ? thisYear + 1900: thisYear;
   return thisYear;
}

function checkMonthLength(mm,dd) {
   var months = new Array("","January","February","March","April","May","June","July","August","September","October","November","December");
   if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30) {
      alert(months[mm] + " has only 30 days.");
      return false;
   } else if (dd > 31) {
      alert(months[mm] + " has only 31 days.");
      return false;
   }
   return true;
}

function checkLeapMonth(mm,dd,yyyy) {
   if (yyyy % 4 > 0 && dd > 28) {
      alert("February of " + yyyy + " has only 28 days.");
      return false;
   } else if (dd > 29) {
      alert("February of " + yyyy + " has only 29 days.");
      return false;
   }
   return true;
}

function monthDayFormat(val) {
   if (isNaN(val) || val == 0) {
      return "01";
   } else if (val < 10) {
      return "0" + val;
   }
   return "" + val;
}

function isTINComponent(len, type) {
   var inputStr = gField.value;
   if (inputStr == null || inputStr == "") {return true}
   if (isNum(len)) {
      inputStr = parseInt(stripZeros(inputStr),10);
      if (inputStr == 0 || isNaN(inputStr)) {
         alert("All zeros are not allowed in any " + type + " number field.");
         gField.focus();
         gField.select();
         return false;
      }
      return true;
   }
   return false;
}

function getFront(mainStr,searchStr){
   foundOffset = mainStr.indexOf(searchStr);
   if (foundOffset == -1) {
      return null;
   }
   return mainStr.substring(0,foundOffset);
}

function getEnd(mainStr,searchStr) {
   foundOffset = mainStr.indexOf(searchStr);
   if (foundOffset == -1) {
      return null;
   }
   return mainStr.substring(foundOffset+searchStr.length,mainStr.length);
}

function insertString(mainStr,searchStr,insertStr) {
   var front = getFront(mainStr,searchStr);
   var end = getEnd(mainStr,searchStr);
   if (front != null && end != null) {
      return front + insertStr + searchStr + end;
   }
   return null;
}

function deleteString(mainStr,deleteStr) {
   return replaceString(mainStr,deleteStr,"");
}

function replaceString(mainStr,searchStr,replaceStr) {
   var front = getFront(mainStr,searchStr);
   var end = getEnd(mainStr,searchStr);
   if (front != null && end != null) {
      return front + replaceStr + end;
   }
   return null;
}


function dispatcher(validationFunc) {
   this.doValidate = validationFunc;
}
var dispatchLookup = new Array
dispatchLookup["isNotEmpty"] = new dispatcher(isNotEmpty);
dispatchLookup["isPositiveInteger"] = new dispatcher(isPositiveInteger);
dispatchLookup["isDollarsOnly8Commas"] = new dispatcher(isDollarsOnly8Commas);
dispatchLookup["isUSState"] = new dispatcher(isUSState);
dispatchLookup["maxString15"] = new dispatcher(maxString15);
dispatchLookup["maxString25"] = new dispatcher(maxString25);
dispatchLookup["maxString30"] = new dispatcher(maxString30);
dispatchLookup["maxString35"] = new dispatcher(maxString35);
dispatchLookup["isNYU"] = new dispatcher(isNYU);
dispatchLookup["isConfirmed"] = new dispatcher(isConfirmed);
dispatchLookup["isZip"] = new dispatcher(isZip);
dispatchLookup["isPhone"] = new dispatcher(isPhone);
dispatchLookup["isSSN1"] = new dispatcher(isSSN1);
dispatchLookup["isSSN2"] = new dispatcher(isSSN2);
dispatchLookup["isSSN3"] = new dispatcher(isSSN3);
dispatchLookup["isM5_P10Date"] = new dispatcher(isM5_P10Date);
dispatchLookup["isDateFormat"] = new dispatcher(isDateFormat);
dispatchLookup["isEmail"] = new dispatcher(isEmail);

function validate(frame, field, method) {
   gFrame = frame;

   gField = eval("window.document.orderform." + field.name);
   
   var args = validate.arguments;
   for (i = 2; i < args.length; i++) {
      if (!dispatchLookup[args[i]].doValidate()) {
         return false;
      }
   }
   return true;
}

	  
      var columnHeads = "Qty,Item#,Description,Price,Total".split(",");
      var columnWidths = "3,7,20,7,8".split(",");
      var numberOfRows = 15;
      var freeShippingMinPrice = 50;
      var shippingPrice = 5.00;
      var caTax = 8.25;
	  var sameShipToInfo = false;
      
      function extendRow(form,rowNum) {
         var rowSum = form.Qty[rowNum].value * form.Price[rowNum].value;
         form.Amount[rowNum].value = formatNum(rowSum,2);
      }
      
      function addAmounts(form) {
         var subTotal = 0;
         for (var i = 0; i < numberOfRows; i++) {
            subTotal += (form.Amount[i].value != "") ? 
               parseFloat(form.Amount[i].value) : 0;
         }
         form.subtotal.value = formatNum(subTotal,2);
		 
		 if (form.shiptostate.value == "CA") form.tax.value = form.subtotal.value * caTax / 100;
		 else form.tax.value = 0.00;
		 
		 if (form.subtotal.value >= freeShippingMinPrice) 	form.shipping.value = 0.00;
		 else												form.shipping.value = shippingPrice;
		 
         form.total.value = "$" + formatNum((
		 									parseFloat(form.subtotal.value) + 
            								parseFloat(form.tax.value) +
											parseFloat(form.shipping.value)
											),2);
      }
      
      function getTax(form,amt){
         var chosenPercent = form.percent[form.percent.selectedIndex].value;
         var chosenFraction = form.fraction[form.fraction.selectedIndex].value;
         var rate = parseFloat(chosenPercent + "." + chosenFraction) / 100;
         return amt * rate;
      }
      
      function calculate(form,rowNum) {
         extendRow(form,rowNum);
         addAmounts(form);
      }
      
      function formatNum(expr,decplaces) {
         var str = (Math.round(parseFloat(expr) * 
            Math.pow(10,decplaces))).toString();
         while (str.length <= decplaces) {
            str = "0" + str;
         } 
         var decpoint = str.length - decplaces;
         return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
      }
      
	  function makeTitleRow() {
         var titleRow = "<tr>";
         for (var i = 0; i < columnHeads.length; i++) {
            titleRow += "<th>" + columnHeads[i] + "<\/th>";
         }
         titleRow += "<\/tr>";
         return titleRow;
      }
  
      function makeOneRow(rowNum) {
         var oneRow = "<tr>";
         for (var i = 0; i < columnHeads.length; i++) {
            oneRow += "<td align=middle><input type=text size=" + 
               columnWidths[i] + " name=\'" + columnHeads[i] + 
               "\' onchange='calculate(this.form," + rowNum + ")'><\/td>";
         }
         oneRow += "<\/tr>";
         return oneRow;
      }
	  
	  function checkIt(evt) {
	     evt = (evt) ? evt : window.event;
         var charCode = (evt.charCode) ? evt.charCode : 
            ((evt.which) ? evt.which : evt.keyCode);
         if (charCode > 31 && (charCode < 48 || charCode > 57)) {
            window.status = "This field accepts numbers only.";
            return false;
         }
         status = "";
         return true;
	  }
	  
      function copyContactInfo(form) {
		if (form.sameshiptoinfo.checked)
		{
			sameShipToInfo = true;
			form.shiptoname.value = form.soldtoname.value;			 
			form.shiptoaddress.value = form.soldtoaddress.value;
			form.shiptocity.value = form.soldtocity.value;
			form.shiptostate.value = form.soldtostate.value;
			form.shiptozip.value = form.soldtozip.value;
			form.shiptodayphone.value = form.soldtodayphone.value;
			form.shiptofax.value = form.soldtofax.value;
			form.shiptoemail.value = form.soldtoemail.value;	
						
			calculate(orderform, 0);
			disableShipToFormElements(form, true);
	  		//alert("'Sold To' contact info copied!");
		}
		else
		{
		 	sameShipToInfo = false;
			disableShipToFormElements(form, false);			
		}
		return true;
      }
	  
	  function disableShipToFormElements(form, disabled)
	  {
		form.shiptoname.disabled 	 = disabled;
		form.shiptoaddress.disabled  = disabled;
		form.shiptocity.disabled 	 = disabled;
		form.shiptostate.disabled 	 = disabled;
		form.shiptozip.disabled 	 = disabled;
		form.shiptodayphone.disabled = disabled;
		form.shiptofax.disabled 	 = disabled;
		form.shiptoemail.disabled 	 = disabled; 
        return true;
	  }
	  
	  function checkChanges(form, window, element, changedElement)
	  {
		switch (changedElement)
		{
			case 'soldtoname':
								validate(window, element, 'isNotEmpty');
								if (sameShipToInfo) form.shiptoname.value = form.soldtoname.value;
								break;
			case 'soldtoaddress':
								validate(window, element,'isNotEmpty');
								if (sameShipToInfo) form.soldtoaddress.value = form.soldtoaddress.value;
								break;
			case 'soldtocity':
								validate(window, element,'isNotEmpty');
								if (sameShipToInfo) form.soldtocity.value = form.soldtocity.value;
								break;
			case 'soldtostate':
								validate(window, element,'isUSState');
								if (sameShipToInfo) form.soldtostate.value = form.soldtostate.value;
								break;
			case 'soldtozip':
								validate(window, element,'isZip');
								if (sameShipToInfo) form.soldtozip.value = form.soldtozip.value;
								break;
			case 'soldtodayphone':
								validate(window, element,'isPhone');
								if (sameShipToInfo) form.soldtodayphone.value = form.soldtodayphone.value;
								break;
			case 'soldtofax':
								validate(window, element,'isPhone');
								if (sameShipToInfo) form.soldtofax.value = form.soldtofax.value;
								break;
			case 'soldtoemail':	
								validate(window, element,'isEmail');
								if (sameShipToInfo) form.soldtoemail.value = form.soldtoemail.value;					
								break;
			case 'shiptoname':
								validate(window, element,'isNotEmpty');
								break;
			case 'shiptoaddress':
								validate(window, element,'isNotEmpty');
								break;
			case 'shiptocity':
								validate(window, element,'isNotEmpty');
								break;
			case 'shiptostate':
								validate(window, element,'isUSState');
								calculate(orderform, 0);
								break;
			case 'shiptozip':
								validate(window, element,'isZip');
								break;
			case 'shiptodayphone':
								validate(window, element,'isPhone');
								break;
			case 'shiptofax':
								validate(window, element,'isPhone');
								break;
			case 'shiptoemail':
								validate(window, element,'isEmail');
								break;
			default:
								break;		
		}
		if (sameShipToInfo)
		{
						 
			form.shiptoaddress.value = form.soldtoaddress.value;
			form.shiptocity.value = form.soldtocity.value;
			form.shiptostate.value = form.soldtostate.value;
			form.shiptozip.value = form.soldtozip.value;
			form.shiptodayphone.value = form.soldtodayphone.value;
			form.shiptofax.value = form.soldtofax.value;
			form.shiptoemail.value = form.soldtoemail.value;			
		}
        return true;
	  }
	  function submitValidation(form)
	{
		var counter = 0;
         for (var i = 0; i < numberOfRows; i++)
		 {
            if(form.Amount[i].value != "")
			{
				form.Qty[i].name = "Qty" + (++counter);
				form.Item[i].name = "Item" + (counter);
				form.Description[i].name = "Description" + (counter);
				form.Price[i].name = "Price" + (counter);
				form.Amount[i].name = "Amount" + (counter);
			}
         }
		 return true;	
	}