function isZip(zipcode) {
	
	     // Check for correct zip code
	     reZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
	
	     if (!reZip.test(zipcode)) {     
	         zip = document.getElementById("txtZip");	
			 ziperror = document.getElementById("reqvalZip");       
	         generalerror.style.display = "block";
			 ziperror.style.display = "block";
	     }
	
	return true;
	}
	
	// email checking
	
	
	function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){		   
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){		   
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){		    
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){		    
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){		    
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){		    
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){		   
		    return false;
		 }

 		 return true					
	}

	function ValidateEmail(){
		var emailID=document.getElementById("txtEmail");
	
		
		emailerror = document.getElementById("valEmail");	
		
		if ((emailID.value==null)||(emailID.value=="")){
			emailerror.style.display = "block";	
			return false;
		}
		if (echeck(emailID.value)==false){
			emailerror.style.display = "block";	
			return false;
		}
		return true;
 	}


// end email checking	
	
// Phone number checking 


// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}

function ValidatePhone(){
	var Phone=document.getElementById("txtPhone");
	
	phoneerror = document.getElementById("reqvalPhone");	
			
	if ((Phone.value==null)||(Phone.value=="")){		
		phoneerror.style.display = "block";	
		return false;
	}
	if (checkInternationalPhone(Phone.value)==false){	
		phoneerror.style.display = "block";			
		return false;
	}
	return true;
 }
 
 // end phone number checking
 
 // url checking 
 
 function ValidateURL(url) {
    var v = new RegExp();
    
    v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
    if (!v.test(url)) {
        dealerurlerror = document.getElementById("valDealerURL");
        dealerurlerror.style.display = "block";
        return false;
    }
} 

	function checkForm() {
	
	var error = false;
	
		generalerror = document.getElementById("generalError");
		firstname = document.getElementById("txtFirst");	
		firstnameerror = document.getElementById("reqFirst");
		lastname = document.getElementById("txtLast");	
		lastnameerror = document.getElementById("reqLast");
		city = document.getElementById("txtCity");	
		cityerror = document.getElementById("reqCity");
		state = document.getElementById("cboStates");	
		stateerror = document.getElementById("reqState");
		zip = document.getElementById("txtZip");	
		ziperror = document.getElementById("reqvalZip");
		phone = document.getElementById("txtPhone");
		phoneerror = document.getElementById("reqvalPhone");
		email = document.getElementById("txtEmail");
		emailerror = document.getElementById("valEmail");
		dealer = document.getElementById("txtdealer_name");
		dealererror = document.getElementById("reqDealer");
		dealerurl = document.getElementById("txtdealer_url");
		dealerurlerror = document.getElementById("valDealerURL");
		

		// start fresh in case this is the not the first time through the form
		generalerror.style.display = "none";
		firstnameerror.style.display = "none";
		lastnameerror.style.display = "none";
		lastnameerror.style.marginTop = "0";
		cityerror.style.display = "none";
		stateerror.style.display = "none";
		ziperror.style.display = "none";
		stateerror.style.marginTop = "0";
		ziperror.style.marginTop = "0";
		phoneerror.style.display = "none";
		emailerror.style.display = "none";		
		dealererror.style.display = "none";
		dealerurlerror.style.display = "none";
			
		if (firstname.value == "") {
			generalerror.style.display = "block";
			firstnameerror.style.display = "block";
			// move the left margintop when there is no firstname
			lastnameerror.style.marginTop = "-14px";
			
			error = true;
			
		}
		
		if (lastname.value == "") {
			generalerror.style.display = "block";
			lastnameerror.style.display = "block";
			
			error = true;
		}
		
		if (city.value == "") {
			generalerror.style.display = "block";
			cityerror.style.display = "block";
			// move the left margintop when there is no city
			stateerror.style.marginTop = "-14px";
			if (state.value != "") {
				// if there is a state selected, but no city, move that zip up
				ziperror.style.marginTop = "-14px";			

			}
			
			error = true;
		}
		
		if (state.value == "") {
			generalerror.style.display = "block";
			stateerror.style.display = "block";
			// move the left margintop when there is no state
			ziperror.style.marginTop = "-14px";
			
			error = true;
		}
		
		// validate zip if entered
		if (zip.value != "") {					
			return isZip (zip.value);			
		}
		
		if (phone.value == "") {
			generalerror.style.display = "block";
			phoneerror.style.display = "block";	
			
			error = true;		
		}
		else {
			// validate phone number if entered
			ValidatePhone();			
					
		}
		
		// validate email if entered
		if (email.value != "") {					
			return ValidateEmail ();			
		}
		
		if (dealer.value == "") {
			generalerror.style.display = "block";
			dealererror.style.display = "block";
			
			error = true;
		}
		
		if (dealerurl.value != "http://") {	
			return ValidateURL(dealerurl.value);			
		}
		
		if (error) {		
			document.location = "#top"
			return false;
			}
			
	if (error)
		return false;
	else
		return true;	
	}