function newOwnerCheckEmail(){
	email		= document.getElementById('email');
	cemail		= document.getElementById('cemail');

	if(isEmpty(email, "Please enter your email address")){
		if(emailValidator(email, "Invalid email.")){
			if(isEmpty(cemail, "Please confirm your email address.")){
				if(emailValidator(cemail, "Invalid email.")){
					if(isSimilar(email, "Email address mismatch.", cemail)){
						return true;
					}
				}
			}
		}
	}
	
	return false;
}

// JavaScript Document
function formValidator(){
	// Make quick references to our fields
	var fname 		= document.getElementById("fname");
	var lname 		= document.getElementById("lname");
	var hospbizname 	= document.getElementById("hospbizname");
	var iama 		= document.getElementById("iama");
	var street 		= document.getElementById("street");
	var city		= document.getElementById("city");
	var zipcode		= document.getElementById("zipcode");
	var email		= document.getElementById("email");
	var cemail		= document.getElementById("cemail");
	var phoneno		= document.getElementById("phoneno");
	
	// Check each input in the order that it appears in the form!
	if(isEmpty(fname, "Please enter your first name.")) {
		if(isEmpty(lname, "Please enter your last name.")) {
			if(isEmptyCombo(iama, "Please select your profession.")) {
				if(isEmpty(hospbizname, "Please enter your hospital or business name.")) {
					if(isEmpty(street, "Please enter your street.")) {
						if(isEmpty(city, "Please enter your city.")) {
							if(isEmpty(zipcode, "Please enter your zipcode.")) {
								//if(lengthMin(zipcode, "Please enter minimum of five digits.", 5)) {
									if(isEmpty(email, "Please enter your email address.")) {
										if(emailValidator(email, "Invalid email address.")) {
											if(isEmpty(cemail, "Please confirm your email address.")) {
												if(emailValidator(cemail, "Invalid confirmation email address.")) {
													if(newIsSimilar(email, cemail, "Email mismatch.")) {
														if(isEmpty(phoneno, "Please enter your phone number.")) {
															return true;
														}
													}
												}
											}
										}
									}
								//}
							}
						}
					}
				}
			}
		}
	}
	return false;
}

function educationFormValidator(){
	var vdegschool 		= document.getElementById("vdegschool");
	var vdegyearreceived		= document.getElementById("vdegyearreceived");
	var vetdegcombo		= document.getElementById("vetdeg");
	
	if(isEmptyCombo(vetdegcombo, "Please select a degree.")) {
		if(isEmpty(vdegschool, "Please enter your school.")) {
			if(isEmptyCombo(vdegyearreceived, "Please enter the year you received your degree.")) {
				return true;
			}
		}
	}
	return false;
}

function proActivityFormValidator(){
	var area 		= document.getElementById("area");
	var licenseno 	= document.getElementById("licenseno");
	var practwebadd 	= document.getElementById("practwebadd");
	var cpractwebadd 	= document.getElementById("cpractwebadd");
	
	if(isEmpty(area, "Please select primary state of licensure.")) {
		if(isEmpty2(licenseno, "Please enter your license number.")) {
			if(isEmpty(practwebadd, "Please enter your practice website address.")) {
				if(isEmpty(cpractwebadd, "Please confirm your practice website address.")) {
					if(isSimilar(practwebadd, "Website Address mismatch.")) {
						return true;
					}
				}
			}
		}
	}
	
	return false;	
}

function isEmptyCombo(elem, helperMsg){
	if(elem.value.length == 0){
		alert(helperMsg);
		elem.focus(); // set the focus to this input
		return false;
	}
	return true;
}


function isEmpty(elem, helperMsg){
	if(elem.value.length == 0){
		alert(helperMsg);
		elem.focus(); // set the focus to this input
		return false;
	}
	return true;
}

function isSimilar(elem1, helperMsg, elem2){
	if(elem1.value.toLowerCase() == elem2.value.toLowerCase()){
		return true;
	}
	else{
		alert(helperMsg);
		elem1.focus();
		return false;
	}
}

function personalInfoValidator(){
	var month_bdate	= document.getElementById('bdate_month');
	var day_bdate		= document.getElementById('bdate_day');
	var year_bdate	= document.getElementById('bdate_year');
	
	if(isEmptyCombo(month_bdate, "Please select month for your birthdate.")) {
		if(isEmptyCombo(day_bdate, "Please select day for your birthdate.")) {
			if(isEmptyCombo(year_bdate, "Please select year for your birthdate.")) {
				return true;
			}
		}
	}
	
	return false;
	
}

function isSimilar(elem1, helperMsg) {
	if(elem1.value.toLowerCase() == elem2.value.toLowerCase()){
		return true;
	}
	else{
		alert(helperMsg);
		elem1.focus();
		return false;
	}
}
function newIsSimilar(elem1, elem2, helperMsg) {
	if(elem1.value.toLowerCase() == elem2.value.toLowerCase()){
		return true;
	}
	else{
		alert(helperMsg);
		elem1.focus();
		return false;
	}
}
function isEmpty(elem, helperMsg) {
	if(elem.value.length == 0){
		alert(helperMsg);
		//errordisp.innerHTML = helperMsg;
		elem.focus(); // set the focus to this input
		return false;
	}
	return true;
}

function isEmpty2(elem, helperMsg) {
	if(elem.value.length == 0){
		alert(helperMsg);
		return false;
	}
	return true;
}

function isEmptyCombo(elem, helperMsg) {
	if(elem.value.length == 0){
		alert(helperMsg);
		elem.focus(); // set the focus to this input
		return false;
	}
	return true;
}

function isNumeric(elem, helperMsg, errordisp){
	var numericExpression = /^[0-9]+$/;
	if(elem.value.match(numericExpression)){
		return true;
	}else{
		//alert(helperMsg);
		errordisp.innerHTML = helperMsg;
		elem.focus();
		return false;
	}
}

function isAlphabet(elem, helperMsg) {
	var alphaExp = /^[a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isAlphanumeric(elem, helperMsg) {
	var alphaExp = /^[0-9a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function lengthRestriction(elem, min, max, str){
	var uInput = elem.value;
	if(uInput.length >= min && uInput.length <= max){
		return true;
	}else{
		alert("Please enter " +min+ " to " +max+ " characters for " +str+ ".");
		elem.focus();
		return false;
	}
}

function lengthMin(elem, helperMsg, min) {
	var uInput = elem.value;
	if(uInput.length == min ){
		return true;
	}else{
		alert(helperMsg);
		//errordisp.innerHTML = helperMsg;
		elem.focus();
		return false;
	}
}

function madeSelection(elem, helperMsg){
	if(elem.value == "Please Choose"){
		alert(helperMsg);
		elem.focus();
		return false;
	}else{
		return true;
	}
}

function emailValidator(elem, helperMsg) {
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(elem.value.match(emailExp)){
		return true;
	}else{
		alert(helperMsg);
		//errordisp.innerHTML = helperMsg;
		elem.focus();
		return false;
	}
}

function isURL(elem, helperMsg) {
 
	var urlexp = "/^(([\w]+?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/";
	
	if(elem.value.match(urlexp)){
		return true;
	}
	else{
		errordisp.innerHTML = helperMsg;
		elem.focus();
		return false;
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////

function mod10( cc_num ) {
	var ar = new Array( cc_num.length );
	var i = 0,sum = 0;

	for( i = 0; i < cc_num.length; ++i ) {
		ar[i] = parseInt(cc_num.charAt(i));
	}

	for( i = ar.length -2; i >= 0; i-=2 ) {
		ar[i] *= 2;
		if( ar[i] > 9 ) ar[i]-=9;
	}

	for( i = 0; i < ar.length; ++i ) {
		sum += ar[i];
	}
	return (((sum%10)==0)?true:false); 
}

function expired( month, year ) {
	var now = new Date();
	var expiresIn = new Date(year,month,0,0,0);
	expiresIn.setMonth(expiresIn.getMonth()+1);
	if( now.getTime() < expiresIn.getTime() ) return false;
	return true;
}

function isCreditCard(ccnumber, cctype){

	  if (checkCreditCard (ccnumber, cctype)) {
		alert ("Credit card has a valid format")
	  } 
	  else {alert (ccErrors[ccErrorNo])};
}

function checkCreditCard (cardnumber, cardname) {
     
  // Array to hold the permitted card characteristics
  var cards = new Array();

  // Define the cards we support. You may add addtional card types.
  
  //  Name:      As in the selection box of the form - must be same as user's
  //  Length:    List of possible valid lengths of the card number for the card
  //  prefixes:  List of possible prefixes for the card
  //  checkdigit Boolean to say whether there is a check digit
  
  cards [0] = {name: "Visa", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "MasterCard", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "DinersClub", 
               length: "14,16", 
               prefixes: "36,54,55",
               checkdigit: true};
  cards [3] = {name: "CarteBlanche", 
               length: "14", 
               prefixes: "300,301,302,303,304,305",
               checkdigit: true};
  cards [4] = {name: "AmEx", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
  cards [5] = {name: "Discover", 
               length: "16", 
               prefixes: "6011,622,64,65",
               checkdigit: true};
  cards [6] = {name: "JCB", 
               length: "16", 
               prefixes: "35",
               checkdigit: true};
  cards [7] = {name: "enRoute", 
               length: "15", 
               prefixes: "2014,2149",
               checkdigit: true};
  cards [8] = {name: "Solo", 
               length: "16,18,19", 
               prefixes: "6334, 6767",
               checkdigit: true};
  cards [9] = {name: "Switch", 
               length: "16,18,19", 
               prefixes: "4903,4905,4911,4936,564182,633110,6333,6759",
               checkdigit: true};
  cards [10] = {name: "Maestro", 
               length: "12,13,14,15,16,18,19", 
               prefixes: "5018,5020,5038,6304,6759,6761",
               checkdigit: true};
  cards [11] = {name: "VisaElectron", 
               length: "16", 
               prefixes: "417500,4917,4913,4508,4844",
               checkdigit: true};
  cards [12] = {name: "LaserCard", 
               length: "16,17,18,19", 
               prefixes: "6304,6706,6771,6709",
               checkdigit: true};
               
  // Establish card type
  var cardType = -1;
  for (var i=0; i<cards.length; i++) {

    // See if it is this card (ignoring the case of the string)
    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
  
  // If card type not found, report an error
  if (cardType == -1) {
     ccErrorNo = 0;
     return false; 
  }
   
  // Ensure that the user has provided a credit card number
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     return false; 
  }
    
  // Now remove any spaces from the credit card number
  cardnumber = cardnumber.replace (/\s/g, "");
  
  // Check that the number is numeric
  var cardNo = cardnumber
  var cardexp = /^[0-9]{13,19}$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     return false; 
  }
       
  // Now check the modulus 10 check digit - if required
  if (cards[cardType].checkdigit) {
    var checksum = 0;                                  // running checksum total
    var mychar = "";                                   // next char to process
    var j = 1;                                         // takes value of 1 or 2
  
    // Process each digit one by one starting at the right
    var calc;
    for (i = cardNo.length - 1; i >= 0; i--) {
    
      // Extract the next digit and multiply by 1 or 2 on alternative digits.
      calc = Number(cardNo.charAt(i)) * j;
    
      // If the result is in two digits add 1 to the checksum total
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      // Add the units element to the checksum total
      checksum = checksum + calc;
    
      // Switch the value of j
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    // All done - if checksum is divisible by 10, it is a valid modulus 10.
    // If not, report an error.
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     return false; 
    }
  }  

  // The following are the card-specific checks we undertake.
  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  // We use these for holding the valid lengths and prefixes of a card type
  var prefix = new Array ();
  var lengths = new Array ();
    
  // Load an array with the valid prefixes for this card
  prefix = cards[cardType].prefixes.split(",");
      
  // Now see if any of them match what we have in the card number
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  // If it isn't a valid prefix there's no point at looking at the length
  if (!PrefixValid) {
     ccErrorNo = 3;
     return false; 
  }
    
  // See if the length is valid for this card
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }
  
  // See if all is OK by seeing if the length was valid. We only check the 
  // length if all else was hunky dory.
  if (!LengthValid) {
     ccErrorNo = 4;
     return false; 
  };   
  
  // The credit card is in the required format.
  return true;
}

var ccErrorNo = 0;
var ccErrors = new Array ()

ccErrors [0] = "Unknown card type";
ccErrors [1] = "No card number provided";
ccErrors [2] = "Credit card number is in invalid format";
ccErrors [3] = "Credit card number is invalid";
ccErrors [4] = "Credit card number has an inappropriate number of digits";

//function validateCard(card_fname,card_lname,cc_num,ccc_num,card_type,card_expire_month,card_expire_year,ccv,username,password,cpassword,secuirty_ans,fname,lname) {
	function validateCard(username,password,cpassword,secuirty_ans,fname,lname) {

	/*if( card_fname.length == 0 ) {
		//card_fnamev.innerHTML = "Required field";
		alert("Please enter a cardholder first name.");
		return false;
	}
	
	if(card_fname.toLowerCase() != fname.toLowerCase()) {
		//card_fnamev.innerHTML = "Required field";
		alert("The first name of the cardholder must exactly match the name of the Veterinarian to whom this account is being granted..");
		return false;
	}
	
	if( card_lname.length == 0 ) {
		//card_lnamev.innerHTML = "Required field";
		alert("Please enter a cardholder last name.");
		return false;
	}
	
	if(card_lname.toLowerCase() != lname.toLowerCase()) {
		//card_fnamev.innerHTML = "Required field";
		alert("The last name of the cardholder must exactly match the name of the Veterinarian to whom this account is being granted..");
		return false;
	}
	
	if( card_type.length == 0 ) {
		//card_lnamev.innerHTML = "Required field";
		alert("Please select card type.");
		return false;
	}

	if( cc_num.length == 0 ) {
		//card_numv.innerHTML = "Please enter a valid card number.";
		alert("Please enter a valid card number.");
		return false;
	}
	
	if( ccc_num != cc_num ) {
		//ccard_numv.innerHTML = "Credit Card Number mismatch";
		alert("Credit Card Number mismatch.");
		return false;
	}
	
	for( var i = 0; i < cc_num.length; ++i ) {
		var c = cc_num.charAt(i);
		
		if( c < '0' || c > '9' ) {
			//card_numv.innerHTML = "Please enter a valid card number. Use only digits. do not use spaces or hyphens.";
			alert("Please enter a valid card number. Use only digits. do not use spaces or hyphens.");
			return false;
		}
	}
	var length = cc_num.length;




	switch( card_type ) {
		case 'American':
			if( length != 15 ) {
				alert("Please enter a valid American Express Card number.");
				return false;
			}
			var prefix = parseInt( cc_num.substring(0,2));
			
			if( prefix != 34 && prefix != 37 ) {
				alert("Please enter a valid American Express Card number.");
				return false;
			}
			break;
			
		case 'Discover':
			if( length != 16 ) {
				alert("Please enter a valid Discover Card number.");
				return false;
			}
			var prefix = parseInt( cc_num.substring(0,4));
			
			if( prefix != 6011 ) {
				alert("Please enter a valid Discover Card number.");
				return false;
			}
			break;
			
		case 'Master':
			if( length != 16 ) {
				alert("Please enter a valid MasterCard number.");
				return false;
			}
			var prefix = parseInt( cc_num.substring(0,2));
			
			if( prefix < 51 || prefix > 55) {
				alert("Please enter a valid MasterCard Card number.");
				return false;
			}
			break;
			
		case 'Visa':
			if( length != 16 && length != 13 ) {
				alert("Please enter a valid Visa Card number.");
				return false;
			}
			var prefix = parseInt( cc_num.substring(0,1));
			
			if( prefix != 4 ) {
				alert("Please enter a valid Visa Card number.");
				return false;
			}
			break;
	}

	if( !mod10( cc_num ) ) {
		alert("Sorry! this is not a valid credit card number.");
		return false;
	}

	if( expired( card_expire_month, card_expire_year ) ) {
		alert("Sorry! The expiration date you have entered would make this card invalid.");
		return false;
	}

	if( ccv.length == 0 ) {
		//card_ccv.innerHTML = "Required field";
		alert("Please enter your CCV.");
		return false;
	}*/
	
	if( username.length == 0 ) {
		//usernamev.innerHTML = "Required field";
		alert("Please enter your username.");
		return false;
	}
	
	if( password.length == 0 ) {
		//passwordv.innerHTML = "Required field";
		alert("Please enter your password.");
		return false;
	}
	if( cpassword.toLowerCase() != password.toLowerCase() ) {
		//cpasswordv.innerHTML = "Password mismatch";
		alert("Password mismatch.");
		return false;
	}
	
	if( secuirty_ans.length == 0 ) {
		//secuirty_ansv.innerHTML = "Required field";
		alert("Please enter your answer.");
		return false;
	}
	
	if(document.pressed == 'insert') {
		document.ccform.action ="ccard_check.php";
	}

	return true;
}