var ship_texas = false;

function checkEmpApp(order)  {
   if (!order.affirmation.checked)  {
      alert("You MUST affirm that you have read and understand the terms of the Applicant Affirmation & Consent by checking the box at the bottom of the form.");
      order.affirmation.focus();
      return false;
   }
   if (order.LastName.value=="")  {
      alert("Please provide your last name.");
      order.LastName.focus();
      return false;
   }
   if (order.FirstName.value=="")  {
      alert("Please provide your first name.");
      order.FirstName.focus();
      return false;
   }
   if (order.StreetAddress.value=="")  {
      alert("Please provide your street address.");
      order.StreetAddress.focus();
      return false;
   }
   if (order.City.value=="")  {
      alert("Please provide your city.");
      order.City.focus();
      return false;
   }
   if (order.State.value=="")  {
      alert("Please provide your state.");
      order.State.focus();
      return false;
   }
   if (order.ZipCode.value=="")  {
      alert("Please provide your ZIP Code");
      order.ZipCode.focus();
      return false;
   }
   var zip_filter=/[0-9]{5,5}/
   if (!(zip_filter.test(order.ZipCode.value)))  {
      alert("The ZIP Code you provided is not a valid ZIP Code");
      order.ZipCode.focus();
      return false;
   }
   if (order.DayTimePhone.value=="")  {
      alert("Please provide your phone number.");
      order.DayTimePhone.focus();
      return false;
   }
   var phone_filter=/[0-9\s\)\(\.-]{7,30}/;
   if (!(phone_filter.test(order.DayTimePhone.value)))  {
      alert("Please enter a valid phone number, using only and '(', ')', '.', '-' characters.");
      order.DayTimePhone.focus();
      return false;
   }
   if (order.Position.value=="none")  {
      alert("Please indicate the position you are applying for.");
      order.Position.focus();
      return false;
   }
   if (order.AbleToWorkOT.value=="none")  {
      alert("Please indicate whether you are able to work overtime.");
      order.AbleToWorkOT.focus();
      return false;
   }
   if (order.WillRelocate.value=="none")  {
      alert("Please indicate whether you are willing to relocate if necessary.");
      order.WillRelocate.focus();
      return false;
   }
   if (order.WillTravel.value=="none")  {
      alert("Please indicate whether you are willing to travel if necessary.");
      order.WillTravel.focus();
      return false;
   }
   if (order.CurrentlyEmployed.value=="none")  {
      alert("Please indicate whether you are currently employed.");
      order.CurrentlyEmployed.focus();
      return false;
   }
   if (order.HearAbout.value=="none")  {
      alert("Please indicate where you heard about Just Brakes.");
      order.HearAbout.focus();
      return false;
   }
   if (order.AppliedBefore.value=="none")  {
      alert("Please indicate whether you have applied at Just Brakes before.");
      order.AppliedBefore.focus();
      return false;
   }
   if (order.WorkBefore.value=="none")  {
      alert("Please indicate whether you have ever been employed at Just Brakes before.");
      order.WorkBefore.focus();
      return false;
   }
}

function checkWarrantyReg(order)  {
   if (order.mlname.value=="")  {
      alert("Please provide your last name.");
      order.mlname.focus();
      return false;
   }
   if (order.mfname.value=="")  {
      alert("Please provide your first name.");
      order.mfname.focus();
      return false;
   }
   if (order.mstreetaddress.value=="")  {
      alert("Please provide your street address.");
      order.mstreetaddress.focus();
      return false;
   }
   if (order.mcity.value=="")  {
      alert("Please provide the city in your address.");
      order.mcity.focus();
      return false;
   }
   if (order.mstate.value=="")  {
      alert("Please provide the state in your address.");
      order.mstate.focus();
      return false;
   }
   if (order.mzipcode.value=="")  {
      alert("Please provide your ZIP code.");
      order.mzipcode.focus();
      return false;
   }
   if (order.memail.value=="")  {
      alert("Please provide your Email.");
      order.memail.focus();
      return false;
   }
   var zip_filter=/[0-9]{5,5}/
   if (!(zip_filter.test(order.mzipcode.value)))  {
      alert("The ZIP Code you provided is not a valid ZIP Code");
      order.mzipcode.focus();
      return false;
   }
   if (order.TextPhoneArea.value=="")  {
      alert("Please provide your full phone number.");
      order.TextPhoneArea.focus();
      return false;
   }
   var phone_filter=/[0-9]{3,3}/;
   if (!(phone_filter.test(order.TextPhoneArea.value)))  {
      alert("Please enter a valid area code using only numbers.");
      order.TextPhoneArea.focus();
      return false;
   }
   if (order.TextPhonePrefix.value=="")  {
      alert("Please provide your full phone number.");
      order.TextPhonePrefix.focus();
      return false;
   }
   var phone_filter=/[0-9]{3,3}/;
   if (!(phone_filter.test(order.TextPhonePrefix.value)))  {
      alert("Please enter a valid phone prefix using only numbers.");
      order.TextPhonePrefix.focus();
      return false;
   }
   if (order.TextPhoneNumber.value=="")  {
      alert("Please provide your full phone number.");
      order.TextPhoneNumber.focus();
      return false;
   }
   var phone_filter=/[0-9]{4,4}/;
   if (!(phone_filter.test(order.TextPhoneNumber.value)))  {
      alert("Please enter a valid phone number using only numbers.");
      order.TextPhoneNumber.focus();
      return false;
   }
   if (order.mrmodel.value=="")  {
      alert("Please provide the model of your car.");
      order.mrmodel.focus();
      return false;
   }
   if (order.mstate.value=="")  {
      alert("Please provide the state in your address.");
      order.mstate.focus();
      return false;
   }
   if (order.TextPhoneNumber.value=="")  {
      alert("Please provide your full phone number.");
      order.TextPhoneNumber.focus();
      return false;
   }
   var order_filter=/[0-9a-zA-Z]{1,3}/;
   if (!(order_filter.test(order.TextRepair1a.value)))  {
      alert("Please enter your order number using only numbers or letters.");
      order.TextRepair1a.focus();
      return false;
   }
   var order_filter=/[0-9a-zA-Z]{1,6}/;
   if (!(order_filter.test(order.TextRepair1b.value)))  {
      alert("Please enter your order number using only numbers or letters.");
      order.TextRepair1b.focus();
      return false;
   }

   if ((order.TextRepair1a.value!=order.TextRepair2a.value) || (order.TextRepair1b.value!=order.TextRepair2b.value))  {
      alert("Please ensure that you have entered the correct Repair Order Number in both spaces on the form.");
      order.TextRepair1a.focus();
      return false;
   }
   return true;
}


function checkCreditCard(order) {

    var data = order;
    var userInfo = "";
    var now = new Date();
    var month = now.getMonth()+1;
    var year = now.getYear();    // gives 2005
    card_type = data.credit_card.value;
    exp_month_index = data.month.selectedIndex;
    exp_year_index = data.year.selectedIndex;

    if (data.credit_card.value=="none") {
        alert("You have not selected a credit card type");
        data.credit_card.focus();
        return false;
    }

    if (data.card_number.value == "") {
        alert("You have not filled in the Credit Card Number");
        data.card_number.focus();
        return false;
    }

    if (data.card_name.value == "") {
        alert("Please provide your name exactly as it appears on your credit card");
        data.card_name.focus();
        return false;
    }

    if (data.month.value=="none") {
        alert("You have not selected an expiration date");
        data.month.focus();
        return false;
    }

    if (data.year.value=="none") {
        alert("You have not selected an expiration date");
        data.year.focus();
        return false;
    }

/*
		cvv = data.card_vnumber.value
    if (cvv == "") {
        alert("You have not filled in the Credit Card Verification Number");
        data.card_vnumber.focus();
        return false;
    }
		
		if (cvv.length != 3) {
        alert("The Credit Card Verification Number is the last three digits on the back of the Credit Card");
        data.card_vnumber.focus();
        return false;
    }
*/		
    var credit_filter1=/[0-9\s]{16,19}/;
    var credit_filter2=/[0-9]{13,16}/;
    
		
	  charset = "0123456789";
		card_num_hold = data.card_number.value;
		var card_num = "";
	  for (var i=0;i<card_num_hold.length;i++) {
		   c = card_num_hold.substr(i,1);
		   if (charset.indexOf(c)!= -1) {
         card_num += c;
		   }
    }


    if (!validateCCNum(card_type,card_num) || !LuhnCheck(card_num)) {
      alert("Credit card number is not valid or you have selected incorrect type of credit card");
	    return false;    
	  }

    if (data.month.value < month && data.year.value <= year) {
      alert("Your Card has Expired");
      data.month.focus();
      return false;
    }            
    if(data.year.value < year) {
      alert("Your Card has Expired");
      data.year.focus();
      return false;
    }
    alert("We are processing your order.  After clicking OK in this box, simply wait for the Thank You page to display.  Do not click the Continue button again or refresh your browser as this may cancel your order.");
    return true;


}


function validateCCNum(cardType,cardNum)
{
	var result = false;
	cardType = cardType.toUpperCase();

	
	var cardLen = cardNum.length;
	var firstdig = cardNum.substring(0,1);
	var seconddig = cardNum.substring(1,2);
	var first4digs = cardNum.substring(0,4);
	switch (cardType)
	{
		case "VISA":
			result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
			break;
		case "AMEX":
			var validNums = "47";
			result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
			break;
		case "MASTERCARD":
			var validNums = "12345";
			result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);
			break;
		case "DISCOVER":
			result = (cardLen == 16) && (first4digs == "6011");
			break;
		case "DINERS":
			var validNums = "068";
			result = (cardLen == 14) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
			break;
	}
	return result;
}

function LuhnCheck(str) 
{
  var result = true;

  var sum = 0; 
  var mul = 1; 
  var strLen = str.length;
  
  for (i = 0; i < strLen; i++) 
  {
    var digit = str.substring(strLen-i-1,strLen-i);
    var tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }
  if ((sum % 10) != 0)
    result = false;
    
  return result;
}


function clearorder(form)
{
   form.s_fname.value="";
   form.s_lname.value="";
   form.s_address1.value="";
   form.s_address2.value="";
   form.s_city.value="";
   form.s_state.selectedIndex=0;
   form.s_zip.value="";
   form.fname.value="";
   form.lname.value="";
   form.address1.value="";
   form.address2.value="";
   form.city.value="";
   form.state.selectedIndex=0;
   form.zip.value="";
   form.phone.value="";
   form.email.value="";
   form.s_fname.focus();
}


// http://www.a1javascripts.com

function resetorder(form) 
{   
    form.reset();
    form.s_fname.focus();
    return false;
}

function clearcard(form) 
{   
    form.reset();
    form.credit_card.focus();
}

// Array Function

function makeArray() {
var args = makeArray.arguments;
    for (var i = 0; i < args.length; i++) {
    this[i] = args[i];
    }
this.length = args.length;
}


function updateState(form)
{
    if(form.shipaddr.checked == true)  {
        form.s_state.selectedIndex = form.state.selectedIndex;
    }
}

function updateStateShip(form)
{
    if(form.shipaddr.checked == true)  {
        form.state.selectedIndex = form.s_state.selectedIndex;
    }
}

function updateShip(form)
{
    if(form.shipaddr.checked == true) {
        setShipAddr(form);
    }
}

function updateBill(form)
{
   if (form.shipaddr.checked == true)  {
      form.s_fname.value = form.fname.value;
      form.s_lname.value = form.lname.value;
      form.s_address1.value = form.address1.value;
      form.s_address2.value = form.address2.value;
      form.s_city.value = form.city.value;
      form.s_state.selectedIndex = form.state.selectedIndex;
      form.s_zip.value = form.zip.value;
      form.s_country.value = form.country.value;
   }
}

function updateCountry(form)
{
    if(form.shipaddr.checked == true) {
        form.s_country.value = form.country.value;
    }
} 
function updateCountryShip(form)
{
    if(form.shipaddr.checked == true) {
        form.country.value = form.s_country.value;
    }
} 
  

function setShipAddr(form) {
   if (form.shipaddr.checked == true) 
   {
      form.fname.value = form.s_fname.value;
      form.lname.value = form.s_lname.value;
      form.address1.value = form.s_address1.value;
      form.address2.value = form.s_address2.value;
      form.city.value = form.s_city.value;
      form.state.selectedIndex = form.s_state.selectedIndex;
      form.zip.value = form.s_zip.value;
      form.country.value = form.s_country.value;
   }
   else
   {
      form.fname.value = "";
      form.lname.value = "";
      form.address1.value = "";
      form.address2.value = "";
      form.city.value = "";
      form.state.selectedIndex = 0;
      form.zip.value = "";
      form.country.value = "";
     
   }
}  
function pay_check(form) {
    if(form.paycheck.checked == true)
     alert("Items paid by check will not be shipped\n until check is received");
}  


function emailCheck (emailStr) 
{
    var emailPat=/^(.+)@(.+)$/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
    var validChars="\[^\\s" + specialChars + "\]"
    var quotedUser="(\"[^\"]*\")"
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom=validChars + '+'
    var word="(" + atom + "|" + quotedUser + ")"
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

    var matchArray=emailStr.match(emailPat)
    if (matchArray==null) 
    {
	    alert("Email address is not of proper format.\n(Example:johndoe@isp.com)")
	    return false
    }
    var user=matchArray[1]
    var domain=matchArray[2]

    if (user.match(userPat)==null) 
    {
        alert("Email address is not of proper format.\n(Example:johndoe@isp.com)")
        return false
     }

    var IPArray=domain.match(ipDomainPat)
    if (IPArray!=null) 
    {
	  for (var i=1;i<=4;i++) 
	  {
	    if (IPArray[i]>255) 
	    {
	        alert("Email address is not of proper format.\n(Example:johndoe@isp.com)")
		    return false
	    }
      }
      return true
   }

   // Domain is symbolic name
   var domainArray=domain.match(domainPat)
   if (domainArray==null) 
   {
	   alert("Email address is not of proper format.\n(Example:johndoe@isp.com)")
       return false
   }

   var atomPat=new RegExp(atom,"g")
   var domArr=domain.match(atomPat)
   var len=domArr.length
   if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
   {
       alert("The Email address must end in a three-letter domain, or two letter country.")
       return false
   }

   if (len<2) 
   {
       alert("Email address is not of proper format.\n(Example:johndoe@isp.com)")
       return false
   }

return true;
}

function do_test(form) {

	document.writeln('confirmed');
	document.writeln('name ='+rvorderform.first_name.value );

}

function popphone() {
	window.open("popphone.html","_blank",config="width=300,height=160,left=440,top=300,dependent=yes,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no");
}

function popemail() {
	window.open("popemail.html","_blank",config="width=350,height=200,left=440,top=300,dependent=yes,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,directories=no,status=no");
}

