﻿function copyShipBill(orderInfo)
{
		orderInfo.shipFN.value = orderInfo.billFN.value;
		orderInfo.shipLN.value = orderInfo.billLN.value;
		orderInfo.shipCO.value = orderInfo.billCO.value;
		orderInfo.shipTI.value = orderInfo.billTI.value;
		orderInfo.shipA1.value = orderInfo.billA1.value;
		orderInfo.shipA2.value = orderInfo.billA2.value;
		orderInfo.shipA3.value = orderInfo.billA3.value;
		orderInfo.shipCI.value = orderInfo.billCI.value;
		orderInfo.shipSP.value = orderInfo.billSP.value;
		orderInfo.shipZP.value = orderInfo.billZP.value;
		orderInfo.shipCY.value = orderInfo.billCY.value;

}

function validate(orderInfo)
{	
	var ValidChars = "0123456789.";
	var ValidCharsP = "0123456789-+.";
   	var IsNumber=true;
   	var Char;
	var minlength = 10;

	if ((orderInfo.prdBND.value == "") && (orderInfo.prdDNT.value == "") && (orderInfo.prdENT.value == "") && (orderInfo.prdUNT.value == "") && (orderInfo.prdBTM.value == "") && (orderInfo.prdMOT.value == "") && (orderInfo.prdNEX.value == "") && (orderInfo.prdNOK.value == "") && (orderInfo.prdSHA.value == "") && (orderInfo.prdSMS.value == "") && (orderInfo.prdSAN.value == "") && (orderInfo.prdSON.value == "") && (orderInfo.prdACC.value == "") && (orderInfo.prdSCT.value == "") && (orderInfo.prdANT.value == "") && (orderInfo.prdCPB.value == "") && (orderInfo.prdCPH.value == "")) {
		alert ( "You cannot proceed unless you order at least 1 item." );
		orderInfo.prdBND.focus();
		return false;
		}
		
	if (((orderInfo.prdDNT.value > 0) || (orderInfo.prdENT.value > 0) || (orderInfo.prdUNT.value > 0)) && ((orderInfo.prdBTM.value < 1) && (orderInfo.prdMOT.value < 1) && (orderInfo.prdNEX.value < 1) && (orderInfo.prdNOK.value < 1) && (orderInfo.prdSHA.value < 1) && (orderInfo.prdSMS.value < 1) && (orderInfo.prdSAN.value < 1) && (orderInfo.prdSON.value < 1))) {
		
		var answer = confirm("The Dock-N-Talk Bundle includes a Bluetooth Module.  The Dock-N-Talk, Enterprise, & Unity all require an appropriate Cable or Bluetooth Module to function.  Press OK to continue without adding a Cable or Bluetooth Module or Cancel to add one." );
		if (!answer){
			orderInfo.prdBTM.focus();
			return false;
			}
		}
 
	for (i = 0; i < orderInfo.prdBND.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdBND.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Dock-N-Talk");
         	orderInfo.prdBND.focus();
         	orderInfo.prdBND.select();
         	return false;
         	}
	}
	for (i = 0; i < orderInfo.prdDNT.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdDNT.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Dock-N-Talk");
         	orderInfo.prdDNT.focus();
         	orderInfo.prdDNT.select();
         	return false;
         	}
      	}
        for (i = 0; i < orderInfo.prdENT.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdENT.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Enterprise Telephone");
         	orderInfo.prdENT.focus();
         	orderInfo.prdENT.select();
         	return false;
         	}
      	}
  	for (i = 0; i < orderInfo.prdUNT.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdUNT.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Unity Telephone");
         	orderInfo.prdUNT.focus();
         	orderInfo.prdUNT.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdBTM.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdBTM.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Bluetooth Module");
         	orderInfo.prdBTM.focus();
         	orderInfo.prdBTM.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdMOT.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdMOT.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Motorola Cable");
         	orderInfo.prdMOT.focus();
         	orderInfo.prdMOT.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdNEX.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdNEX.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Nextel Cable");
         	orderInfo.prdNEX.focus();
         	orderInfo.prdNEX.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdNOK.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdNOK.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Nokia Cable");
         	orderInfo.prdNOK.focus();
         	orderInfo.prdNOK.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdSAN.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdSAN.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Sanyo Cable");
         	orderInfo.prdSAN.focus();
         	orderInfo.prdSAN.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdSMS.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdSMS.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Siemens Cable");
         	orderInfo.prdSMS.focus();
         	orderInfo.prdSMS.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdSHA.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdSHA.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Sharp Cable");
         	orderInfo.prdSHA.focus();
         	orderInfo.prdSHA.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdSON.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdSON.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Sony Ericsson Cable");
         	orderInfo.prdSON.focus();
         	orderInfo.prdSON.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdACC.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdACC.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Accessory Cable");
         	orderInfo.prdACC.focus();
         	orderInfo.prdACC.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdSCT.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdSCT.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Scout Message Alert");
         	orderInfo.prdSCT.focus();
         	orderInfo.prdSCT.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdANT.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdANT.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Universal Booster Antenna");
         	orderInfo.prdANT.focus();
         	orderInfo.prdANT.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdCPB.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdCPB.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Cordless Phone Base");
         	orderInfo.prdCPB.focus();
         	orderInfo.prdCPB.select();
         	return false;
         	}
      	}
	for (i = 0; i < orderInfo.prdCPH.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.prdCPH.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: Cordless Phone Extension Set");
         	orderInfo.prdCPH.focus();
         	orderInfo.prdCPH.select();
         	return false;
         	}
      	}

	if (orderInfo.cellMake.value =="") {
		alert ( "Please enter your Cell Phone Make.");
		orderInfo.cellMake.focus();
		return false;
		}
	if (orderInfo.cellModel.value =="") {
		alert ( "Please enter your Cell Phone Model.");
		orderInfo.cellModel.focus();
		return false;
		}
	if (orderInfo.cellService.value =="") {
		alert ( "Please enter your Cell Phone Service Provider's name (Verizon, Cingular, T-Mobile, etc.)" );
		orderInfo.cellService.focus();
		return false;
		}
	if (orderInfo.shipMeth.value =="") {
		alert ( "Please select your Shipping Method." );
		orderInfo.shipMeth.focus();
		return false;
		}
	if (orderInfo.billFN.value == "") {
		alert ( "Please enter the First Name for Billing Information." );
		orderInfo.billFN.focus();
		return false;
		}
	if (orderInfo.billLN.value == "") {
		alert ( "Please enter the Last Name for Billing Information." );
		orderInfo.billLN.focus();
		return false;
		}
	if (orderInfo.billA1.value == "") {
		alert ( "Please enter the 1st line of the Address for Billing Information." );
		orderInfo.billA1.focus();
		return false;
		}
	if (orderInfo.billCI.value == "") {
		alert ( "Please enter the City for Billing Information." );
		orderInfo.billCI.focus();
		return false;
		}
	if (orderInfo.billSP.value == "") {
		alert ( "Please select the State for Billing Information" );
		orderInfo.billSP.focus();
		return false;
		}
	if (orderInfo.billZP.value == "") {
		alert ( "Please enter the Zip Code for Billing Information." );
		orderInfo.billZP.focus();
		return false;
		}
	if (orderInfo.billCY.value == "") {
		alert ( "Please enter the Country for Billing Information." );
		orderInfo.billCY.focus();
		return false;
		}
	if (orderInfo.shipFN.value == "") {
		alert ( "Please enter the First Name for Shipping Information." );
		orderInfo.shipFN.focus();
		return false;
		}
	if (orderInfo.shipLN.value == "") {
		alert ( "Please enter the Last Name for Shipping Information." );
		orderInfo.shipLN.focus();
		return false;
		}
	if (orderInfo.shipA1.value == "") {
		alert ( "Please enter the 1st line of the Address for Shipping Information." );
		orderInfo.shipA1.focus();
		return false;
		}
	if (orderInfo.shipCI.value == "") {
		alert ( "Please enter the City for Shipping Information." );
		orderInfo.ship.focus();
		return false;
		}
	if (orderInfo.shipSP.value == "") {
		alert ( "Please select the State for Shipping Information" );
		orderInfo.shipSP.focus();
		return false;
		}
	if (orderInfo.shipZP.value == "") {
		alert ( "Please enter the Zip Code for Shipping Information." );
		orderInfo.shipZP.focus();
		return false;
		}
	if (orderInfo.shipCY.value == "") {
		alert ( "Please enter the Country for Shipping Information." );
		orderInfo.shipCY.focus();
		return false;
		}
	if (orderInfo.conPN.value =="") {
		alert ( "Please enter your Primary Phone Number." );
		orderInfo.conPN.focus();
		return false;
		}
	for (i = 0; i < orderInfo.conPN.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.conPN.value.charAt(i); 
      	if (ValidCharsP.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers, +, -, and . are allowed in this field: Primary Phone Number");
         	orderInfo.conPN.focus();
         	orderInfo.conPN.select();
         	return false;
         	}
      	}
    if ((orderInfo.conPN.value != "") && (orderInfo.conPN.value.length < minlength)) {
    	alert ("You must use at least 10 numbers in this field: Primary Phone Number");
    	orderInfo.conPN.focus();
    	return false;
    	}
    for (i = 0; i < orderInfo.conMN.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.conMN.value.charAt(i); 
      	if (ValidCharsP.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers, +, -, and . are allowed in this field: Mobile Number");
         	orderInfo.conMN.focus();
         	return false;
         	}
      	}
    if ((orderInfo.conMN.value != "") && (orderInfo.conMN.value.length < minlength)) {
    	alert ("You must use at least 10 numbers in this field: Mobile Number");
    	orderInfo.conMN.focus();
    	return false;
    	}
	for (i = 0; i < orderInfo.conFN.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.conFN.value.charAt(i); 
      	if (ValidCharsP.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers, +, -, and . are allowed in this field: Fax Number");
         	orderInfo.conFN.focus();
         	return false;
         	}
      	}
    if ((orderInfo.conFN.value != "") && (orderInfo.conFN.value.length < minlength)) {
    	alert ("You must use at least 10 numbers in this field: Fax Number");
    	orderInfo.conFN.focus();
    	return false;
    	}
  	if (orderInfo.conEmail.value =="") {
		alert ( "Please enter an E-mail address.");
		orderInfo.conEmail.focus();
		return false;
		}
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(orderInfo.conEmail.value) == false){
		alert("Invalid E-mail address. Please enter a valid E-mail address.");
		orderInfo.conEmail.focus();
		orderInfo.conEmail.select();
		return false;
		}	
  	if (orderInfo.ccType.value =="") {
		alert ( "Please select the Credit Card Type you are using." );
		orderInfo.ccType.focus();
		return false;
		}
	if (orderInfo.ccNum.value =="") {
		alert ( "Please enter your Credit Card number." );
		orderInfo.ccNum.focus();
		return false;
		}
   	if (orderInfo.ccType.value == "Visa") {
   	   	// Visa: length 16, prefix 4, dashes optional.
   		var re = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
		} 
   	else if (orderInfo.ccType.value == "Mastercard") {
   	   	// Mastercard: length 16, prefix 51-55, dashes optional.
   	   	var re = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
   		}
   	else if (orderInfo.ccType.value == "American Express") {
   	   	// American Express: length 15, prefix 34 or 37.
   	   	var re = /^3[4,7]\d{13}$/;
   		}
   	if (!re.test(orderInfo.ccNum.value)){
   		alert("Your credit card number is invalid");
   		orderInfo.ccNum.focus();
   		orderInfo.ccNum.select();
   		return false;
   		}
   		// Remove all dashes for the checksum checks to eliminate negative numbers
   	ccNum = orderInfo.ccNum.value.split("-").join("");
   	// Checksum ("Mod 10")
   	// Add even digits in even length strings or odd digits in odd length strings.
   	var checksum = 0;
   	
   	for (var i=(2-(orderInfo.ccNum.value.length % 2)); i<= orderInfo.ccNum.value.length; i+=2) {
   	   	checksum += parseInt(orderInfo.ccNum.value.charAt(i-1));
   		}
   	// Analyze odd digits in even length strings or even digits in odd length strings.
   	for (var i=(orderInfo.ccNum.value.length % 2) + 1; i<orderInfo.ccNum.value.length; i+=2) {
   	   	var digit = parseInt(orderInfo.ccNum.value.charAt(i-1)) * 2;
   		if (digit < 10) {
   			checksum += digit;
   			}
   		else
   			{
   			checksum += (digit-9);
   			}
   		}
   	if ((checksum % 10) != 0) {
   		alert("Your credit card number is invalid.")
   		orderInfo.ccNum.focus();
   		orderInfo.ccNum.select();
   		return false;
	}
	if (orderInfo.ccMonth.value =="") {
		alert ( "Please select the Month your Credit Card expires." );
		orderInfo.ccMonth.focus();
		return false;
		}
	if (orderInfo.ccYear.value =="") {
		alert ( "Please select the Year your Credit Card expires." );
		orderInfo.ccYear.focus();
		return false;
		}

	var ccMonth = orderInfo.ccMonth.value;
	var ccYear = orderInfo.ccYear.value;
	var now = new Date();
	var nowMonth = now.getMonth();
	var nowYear = now.getFullYear();
	
	if ((ccMonth <= nowMonth) && (ccYear <= nowYear)) {
		alert ( "The Expiration Date for the credit card has passed." );
		orderInfo.ccMonth.focus();
		return false;
		}
	if (orderInfo.ccCV2.value =="") {
		alert ( "Please enter your CV2 number." );
		orderInfo.ccCV2.focus();
		return false;
		}
	for (i = 0; i < orderInfo.ccCV2.value.length && IsNumber == true; i++) 
      	{ 
      	Char = orderInfo.ccCV2.value.charAt(i); 
      	if (ValidChars.indexOf(Char) == -1) 
         	{
         	IsNumber = false;
         	alert ("Only numbers are allowed in this field: CV2 Code");
         	orderInfo.ccCV2.focus();
         	orderInfo.ccCV2.select();
         	return false;
         	}
      	}
	if (orderInfo.agreeTerms.checked == false) {
		alert ( "We cannot proceed with your order until you click the Agreement Checkbox." );
		orderInfo.agreeTerms.focus();
		return false;
		}
	if (orderInfo.prdBND.value == "") {
		orderInfo.prdBND.value = 0;
		}
	if (orderInfo.prdDNT.value == "") {
		orderInfo.prdDNT.value = 0;
		}
	if (orderInfo.prdENT.value == "") {
		orderInfo.prdENT.value = 0;
		}
	if (orderInfo.prdUNT.value == "") {
		orderInfo.prdUNT.value = 0;
		}
	if (orderInfo.prdBTM.value == "") {
		orderInfo.prdBTM.value = 0;
		}
	if (orderInfo.prdMOT.value == "") {
		orderInfo.prdMOT.value = 0;
		}
	if (orderInfo.prdNEX.value == "") {
		orderInfo.prdNEX.value = 0;
		}
	if (orderInfo.prdNOK.value == "") {
		orderInfo.prdNOK.value = 0;
		}
	if (orderInfo.prdSAN.value == "") {
		orderInfo.prdSAN.value = 0;
		}
	if (orderInfo.prdSMS.value == "") {
		orderInfo.prdSMS.value = 0;
		}
	if (orderInfo.prdSHA.value == "") {
		orderInfo.prdSHA.value = 0;
		}
	if (orderInfo.prdSON.value == "") {
		orderInfo.prdSON.value = 0;
		}
	if (orderInfo.prdACC.value == "") {
		orderInfo.prdACC.value = 0;
		}
	if (orderInfo.prdSCT.value == "") {
		orderInfo.prdSCT.value = 0;
		}
	if (orderInfo.prdANT.value == "") {
		orderInfo.prdANT.value = 0;
		}
	if (orderInfo.prdCPB.value == "") {
		orderInfo.prdCPB.value = 0;
		}
	if (orderInfo.prdCPH.value == "") {
		orderInfo.prdCPH.value = 0;
		}
	return true;
	}
