$(window).load(function(){	
	$('#frmDealer').submit(function(){
		$('input').blur();
		if(!required('#company1','You must enter a Company Name')) return false;
		if(!required('#address1','You must enter a Address')) return false;
		if(!required('#city1','You must enter a City')) return false;
		if(!required('#phone1','You must enter a Phone')) return false;
		if(!required('#typeofbusiness1','You must enter a Type of Business')) return false;
		if(!required('#city2','You must enter a City')) return false;
		if(!required('#fedtaxid','You must enter a Fed Tax ID #')) return false;
		if(!required('#zip1','You must enter a Zip')) return false;
		if(!required('#state1','You must enter a State')) return false;
		if(!required('#fax1','You must enter a Fax')) return false;
		if(!required('#numberofemployees','You must enter a Number of Employees')) return false;
		if(!required('#stateincorporated','You must enter a State Incorporated')) return false;
		if(!required('#dateincorporated','You must enter a Date Incorporated')) return false;
		if(!required('#yrsinbusiness','You must enter a Yrs. In Business')) return false;
		if(!required('#billto','You must enter a Bill To')) return false;
		if(!required('#billingaddress','You must enter a Billing Address')) return false;
		if(!required('#accountpayable','You must enter a Account Payable')) return false;
		if(!required('#billinginstructions','You must enter a Billing Instructions')) return false;
		if(!required('#attn','You must enter a Attn')) return false;
		if(!required('#city3','You must enter a City')) return false;
		if(!required('#phone2','You must enter a Phone')) return false;
		if(!required('#title1','You must enter a Title')) return false;
		if(!required('#city4','You must enter a City')) return false;
		if(!required('#zip3','You must enter a Zip')) return false;
		if(!required('#president','You must enter a President')) return false;
		if(!required('#address3','You must enter a Address')) return false;
		if(!required('#ss1','You must enter a SS#')) return false;
		if(!required('#vicepresident','You must enter a Vice-President')) return false;
		if(!required('#address3_','You must enter a Address')) return false;
		if(!required('#ss2','You must enter a SS#')) return false;
		if(!required('#bank1','You must enter a Bank')) return false;
		if(!required('#account1','You must enter a Account')) return false;
		if(!required('#address4','You must enter a Address')) return false;
		if(!required('#contact1','You must enter a Contact')) return false;
		if(!required('#phone3','You must enter a Phone')) return false;
		if(!required('#bank2','You must enter a Bank')) return false;
		if(!required('#account2','You must enter a Account')) return false;
		if(!required('#address5','You must enter a Address')) return false;
		if(!required('#contact2','You must enter a Contact')) return false;
		if(!required('#phone4','You must enter a Phone')) return false;
		if(!required('#company2','You must enter a Company')) return false;
		if(!required('#address6','You must enter a Address')) return false;
		if(!required('#city5','You must enter a City')) return false;
		if(!required('#state3','You must enter a State')) return false;
		if(!required('#zip4','You must enter a Zip')) return false;
		if(!required('#typeofbusiness2','You must enter a Type of Business')) return false;
		if(!required('#contact3','You must enter a Contact')) return false;
		if(!required('#phone5','You must enter a Phone')) return false;
		if(!required('#company3','You must enter a Company')) return false;
		if(!required('#address7','You must enter a Address')) return false;
		if(!required('#city6','You must enter a City')) return false;
		if(!required('#state4','You must enter a State')) return false;
		if(!required('#zip5','You must enter a Zip')) return false;
		if(!required('#typeofbusiness3','You must enter a Type of Business')) return false;
		if(!required('#contact4','You must enter a Contact')) return false;
		if(!required('#phone6','You must enter a Phone')) return false;
		if(!required('#signature','You must enter a Signature of Applicant')) return false;
		if(!required('#title2','You must enter a Title')) return false;
		if(!required('#date1','You must enter a Date')) return false;
		if(!required('#name','You must enter a Name')) return false;
		if(!required('#address8','You must enter a Address')) return false;
		if(!required('#phone7','You must enter a Phone')) return false;
		
		if(!required('#acct','You must enter a Credit Card Number')) return false;
		
		if(!validateCreditCard($.trim($('#acct').val()))){
			alert('Please enter a valid Credit Card Number');
			$focus='#acct';
			return false;
		}
		
		// Credit card type detecting regexp
		var ccTypeRegExp = {
			'Visa': new RegExp('^4[0-9]{12}([0-9]{3})?$'),
			'MasterCard': new RegExp('^5[1-5][0-9]{14}$'),
			'Amex': new RegExp('^3[47][0-9]{13}$'),
			'Discover': new RegExp('^6011[0-9]{12}$')
		};
		
		var ccType = $.trim($('#creditcardtype').val());
		
		// Matched credit card type
		var ccMatchedType = '';
	
		switch($('#acct').val().substring(0,1)){
			case '3' : ccMatchedType="Amex";break;
			case '4' : ccMatchedType="Visa";break;
			case '5' : ccMatchedType="MasterCard";break;
			case '6' : ccMatchedType="Discover";break;
		}
		
		if(ccMatchedType != ccType) {
			alert('Credit Card Number doesn\'t match Credit Card type');						
			$focus='#acct';
			return false;
		}
		
		if(!required('#namecard','You must enter a Name on Card')) return false;
		
		var ccExpMonth   = $.trim($('#expDateMonth').val());
		var ccExpYear    = $.trim($('#expDateYear').val());
		var currentTime  = new Date();
		var currentMonth = currentTime.getMonth() + 1;
		var currentYear  = currentTime.getFullYear();
		if (ccExpMonth < currentMonth && ccExpYear == currentYear) {
			alert("Incorrect Credit Card Expiration Date");
			return false;
		}
		
		if(!required('#cvv2','You must enter a Credit Card Verification Number')) return false;
		
		switch (ccType) {
			case 'Visa' :
			case 'MasterCard' :
			case 'Discover' :
				re = new RegExp('^[0-9]{3}$');
				break;
			case 'Amex' :
				re = new RegExp('^[0-9]{4}$');
				break;
		}
		
		if (!$.trim($('#cvv2').val()).match(re)) {
			alert('Please enter a valid Credit Card Verification Number.');
			$focus='#cvv2';
			return false;
		}
		
		if(!required('#address9','You must enter a Credit Card billing address')) return false;
		if(!required('#bankwhich','You must enter a Bank which issued credit card')) return false;
		if(!required('#citystateofbank','You must enter a City, State of bank')) return false;
		if(!required('#cardholder','You must enter a Card holders signature')) return false;
		if(!required('#date2','You must enter a Date')) return false;
		
		return true;
	});
});

function validateCreditCard(s) {
    // remove non-numerics
    var v = "0123456789";
    var w = "";
    for (i=0; i < s.length; i++) {
        x = s.charAt(i);
        if (v.indexOf(x,0) != -1)
        w += x;
    }
    // validate number
    j = w.length / 2;
    if (j < 6.5 || j > 8 || j == 7) return false;
    k = Math.floor(j);
    m = Math.ceil(j) - k;
    c = 0;
    for (i=0; i<k; i++) {
        a = w.charAt(i*2+m) * 2;
        c += a > 9 ? Math.floor(a/10 + a%10) : a;
    }
    for (i=0; i<k+m; i++) c += w.charAt(i*2+1-m) * 1;
    return (c%10 == 0);
}

var $lightbox = false;
var $focus = "";

function alert(msg){ Lightbox(msg); };

function Lightbox(msg){
	$lightbox = true;
	$("#fadebox").css({width: $(window).width() + 'px', height: $(window).height() + 'px'});
	$("#fadebox").css('opacity',.75).fadeIn();
	$("#overbox").fadeIn();
	$("#overboxBody").html(msg);
}

function hideLightbox(){
	$lightbox = false;
	$("#overbox").fadeOut();$("#fadebox").fadeOut();
	$($focus).focus();
}

document.onkeypress = function hiddenLightbox(e){
	var kC=(window.event)?event.keyCode:e.keyCode;
	if((kC==13 || kC==27) && $lightbox){ hideLightbox(); return false; }
}


/*-------------- validaciones --------------*/
var key;
// NOTE: Backspace = 8, Enter = 13, '0' = 48, '9' = 57 , '.' = 46
function only_numbers(evt){
	(document.all)?key=evt.keyCode:key=evt.which;
	return (key <= 13 || key == 46 || evt.ctrlKey || (key >= 48 && key <= 57));
}

function number(elem){
	var expre = /^[0-9].+$/;	
	if($(elem).val().match(expre) || $(elem).val() == ""){return true;}
	else{alert('Must enter only numbers.');$focus=elem;return false;}
}

function required(elem,msg,conten){
	if(conten==null)conten="";
	if($(elem).val()==conten){alert(msg);$focus=elem;return false;}
	return true;
}

function validateEmail(elem){
	if($(elem).val()!="" && !emailCheck($(elem).val())){$focus=elem;return false;}
	return true;
}

function compare(elem1,elem2,msg){
	if($(elem1).val()!=$(elem2).val()){alert(msg);$focus=elem2;return false;}
	return true;
}

function emailCheck(emailStr) {
<!-- Changes:  Sandeep V. Tamhankar (stamhankar@hotmail.com) -->

/* 1.1.2: Fixed a bug where trailing . in e-mail address was passing
            (the bug is actually in the weak regexp engine of the browser; I
            simplified the regexps to make it work).
   1.1.1: Removed restriction that countries must be preceded by a domain,
            so abc@host.uk is now legal.  However, there's still the 
            restriction that an address must end in a two or three letter
            word.
     1.1: Rewrote most of the function to conform more closely to RFC 822.
     1.0: Original  */

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]"
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")"
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+'
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	alert("The email address appears invalid. <br />(check [@] y [.])");
	return false
}
var user=matchArray[1]

var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
	alert("The email address appears invalid. <br />(check data before de [@])");
    return false
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
			alert("The email address appears invalid. <br />(Incorrect destination IP)");
		return false
	    }
    }
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("The email address appears invalid. <br />(After checking data of [@])");
    return false
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
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) {
   // the address must end in a two letter or three letter word.
   alert("The email address appears invalid. <br />(After checking data of [.])");
   return false
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr="The email address appears invalid. <br />(After checking data of [.])"
   alert(errStr);
   return false
}

// If we've gotten this far, everything's valid!
return true;
}
//  End -->