
/**********************Basic Ajax Script*************************************/
function ajax(functName, displayId, params){
	var ajaxRequest;  // The variable that makes Ajax possible!

	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Unsupported Browser: No Ajax Object.");
				return false;
			}
		}
	}
	//Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = 
		function(){
			if(ajaxRequest.readyState == 4)
			{
				//Get the data from the server's response
				result = ajaxRequest.responseText;
				response = result.split("#");
				lines = response[1].split("^");
				if(lines[0] == "Invalid Cardnumber:" || lines[0] == "Card number already in use."){
					disableFields();
				}else{
					enableFields();
				}
						
				document.getElementById(response[0]).innerHTML = "";
				for(j=0;j<lines.length;j++)
				{
					document.getElementById(response[0]).innerHTML+=lines[j]+"</br>";					
				}								
			}
		}
	var queryString = "?action=" + arguments[0];
	for(i=1; i<arguments.length; i++)
	{
		queryString += "&arg" + i + "=" + arguments[i];			
	}
	queryString = "registerController.php" + queryString;
	
	ajaxRequest.open("GET", queryString, true);
	ajaxRequest.send(null);
}
function enableFields()
{
		document.getElementById("firstName").disabled = false;
		document.getElementById("lastName").disabled = false;
		document.getElementById("address").disabled = false;
		document.getElementById("city").disabled = false;
		document.getElementById("zip").disabled = false;
		document.getElementById("vipEmail").disabled = false;
		document.getElementById("vipPhone").disabled = false;
		document.getElementById("cellPhone").disabled = false;
		document.getElementById("vin0").disabled = false;				
		document.getElementById("insurCo").disabled = false;	
		document.getElementById("vip_model").disabled = false;
                document.getElementById("submit").disabled = false;
		return;	
}
function disableFields()
{
		document.getElementById("firstName").disabled = true;
		document.getElementById("lastName").disabled = true;
		document.getElementById("address").disabled = true;
		document.getElementById("city").disabled = true;
		document.getElementById("zip").disabled = true;
		document.getElementById("vipEmail").disabled = true;
		document.getElementById("vipPhone").disabled = true;
		document.getElementById("cellPhone").disabled = true;
		document.getElementById("vin0").disabled = true;				
		document.getElementById("insurCo").disabled = true;	
		document.getElementById("cardNumberResult").innerHTML="";
		document.getElementById("cardNumberResult").style.border="0px";
		document.getElementById("vip_model").disabled = false;
                document.getElementById("submit").disabled = true;
		return;		
}
function getShop(cardNumber)
{
	if (cardNumber.length < 9)
	{
		disableFields();
	}else{
		ajax("checkCardNumber", "cardNumberResult", cardNumber);
	}
}
/*****************************End Basic Ajax Script***************************/

/*****************************Check All***************************************/
function checkAll(field)
{
	if(field.checked == true)
	{
		document.getElementById('optVoice').checked = true;
		document.getElementById('optText').checked = true;
		document.getElementById('optEmail').checked = true;
		
	}	
	else{
		document.getElementById('optVoice').checked = false;
		document.getElementById('optText').checked = false;
		document.getElementById('optEmail').checked = false;
	}
}
/******************************End Check All*********************************/

/******************************addInput**************************************/

var counter = 0;

function addInput(divId){
	if(document.getElementById('vinmake_vin'+counter).innerHTML != "" && counter < 4 ) {
		counter++;        
		var newdiv = document.createElement('div');
		var text = "<div id='s4c1" + counter + "'><div class='s4c1'>Vehicle VIN" + " <br /><input type='text' size='24' maxlength='17' name='vins[]' id='vin" + counter + "' onkeyup='nospechar(this)' onblur='vinValidator(this)' /></div>\
					<div class='s4c1a'><div class='s4c1a1'><span class='vin-title'>Year (From VIN)</span><br /><span id='vinyear_vin" + counter + "' class='vin-content' ></span></div>\
					<div class='s4c1a2'><span class='vin-title'>Make (From VIN)</span><br /><span id='vinmake_vin" + counter + "' class='vin-content' ></span></div></div>\
					<div class='s4c1b'><label>Model</label><br /><input type='text' id='vip_model" + counter + "' name='vip_models[]' maxlength='25' size='24' /></div></div>";
		newdiv.innerHTML = text;
		document.getElementById(divId).appendChild(newdiv);
	}
}
function removeInput(){
	deadDiv = document.getElementById('s4c1' + counter);
	if(deadDiv){
		deadDiv.parentNode.innerHTML = "";
		deadDiv.style.display = "none";
		counter--;
	}
}

/****************************endaddInput****************************************/

/************
 * Form Validation Script
 * 
 * 
 */
 
 function notEmpty(){
	 var isValid = true;	
	if(document.forms["regVipCard"]["firstName"].value == null || document.forms["regVipCard"]["firstName"].value == "")
	{ 
		document.getElementById("firstNameError").innerHTML = "Required Field";				
		isValid=false;
	}
	if(document.forms["regVipCard"]["lastName"].value == null || document.forms["regVipCard"]["lastName"].value == "")
	{ 
		document.getElementById("lastNameError").innerHTML = "Required Field";				
		isValid=false;
	}
//	if(document.forms["regVipCard"]["vipEmail"].value == null || document.forms["regVipCard"]["vipEmail"].value == "")
//	{ 
//		document.getElementById("vipEmailError").innerHTML = "Required Field";				
//		isValid=false;
//	}
	if(document.forms["regVipCard"]["vipPhone"].value == null || document.forms["regVipCard"]["vipPhone"].value == "")
	{ 
		document.getElementById("vipPhoneError").innerHTML = "Required Field";				
		isValid=false;
	}
	return isValid;
	
}

function isNumeric(elem){
	var numericExpression = /^[0-9]+$/;
	if(elem.value.match(numericExpression)){
		return true;
	}else{
		alert(helperMsg);
		elem.focus();
		return false;
	}
}

function isAlphabet(elem){
	var alphaExp = /^[a-zA-Z]+$/;
	if(elem.value.match(alphaExp)){
		document.getElementById(elem.name + "Error").innerHTML = "";
		return true;
	}else{
		document.getElementById(elem.name + "Error").innerHTML = "Only letters are allowed";		
		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){
	var uInput = elem.value;
	if(uInput.length >= min && uInput.length <= max){
		return true;
	}else{
		alert("Please enter between " +min+ " and " +max+ " characters");
		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){
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(elem.value.match(emailExp)){
		document.getElementById(elem.name + "Error").innerHTML = "";
		return true;
	}else{
		document.getElementById(elem.name + "Error").innerHTML = "Invalid Email";
		elem.focus();
		return false;
	}
}
function phoneNumberValidator(elem)
{
	var phoneExp = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;  
	if(elem.value.match(phoneExp)){
		document.getElementById(elem.name + "Error").innerHTML = "";
		return true;
	}else{
		document.getElementById(elem.name + "Error").innerHTML = "Invalid Phone Number";
		elem.focus();
		return false;
	}
}

//Prevent user from typing symbols
function nospechar(vinput) {
	!(/^[A-z0-9 ]*$/i).test(vinput.value)?vinput.value = vinput.value.replace(/[^A-z0-9 ]/ig,""):null;
} 

//Begin VIN Validation function
function vinValidator(uservin) {
	var inputVIN = document.getElementById(uservin.id).value.toUpperCase();
	document.getElementById(uservin.id).value = inputVIN;
	
//Clears Make and Model fields
	function vinClear() {
		document.getElementById("vinmake_"+uservin.id).innerHTML = "";
		document.getElementById("vinyear_"+uservin.id).innerHTML = "";
	}
	
//Define some Regex variables
	var val_alphanum = /^[0-9a-zA-Z]+$/;
	var val_numeric = /^[0-9]+$/;
	var val_alpha = /^[a-zA-Z]+$/;
	
	if(inputVIN != "") {

//Some conditionals to verify the user input is in correct format
		if(inputVIN.match(val_alphanum) && inputVIN.length != 17) {
			vinClear();
			alert("VIN must be 17 characters long. Please leave blank for models made before 1981.");
			return false;
		}
		
		else if(!inputVIN.match(val_alphanum) && inputVIN.length == 17) {
			vinClear();
			alert("VIN must be alphanumeric, containing only letters(A-Z) and numbers(0-9).");
			return false;
		}
		
		else if(inputVIN.match(val_alphanum) && inputVIN.length == 17) {

//Slice Make code and Year Span character from VIN
			var VIN_make = inputVIN.slice(0,3);
			var VIN_year_prefix_check = inputVIN.slice(6,7);

//Check Year Span character is either Alpha/Numeric
			if(VIN_year_prefix_check.match(val_alpha)) {
				var VIN_year_prefix = 2;
			}
			
			else if(VIN_year_prefix_check.match(val_numeric)) {
				var VIN_year_prefix = 1;
			}
			else {
				vinClear();
				alert("VIN could not be matched in our database. Please verify VIN is entered correctly before proceeding.");
				return false;
			}

//Adds prefix to Year identifier
			var VIN_year = VIN_year_prefix+inputVIN.slice(9,10);
//Check if sliced variables match Javascript array made from database, if so then updates Make/Model field
			if(VIN_year_array[VIN_year] != undefined && VIN_make_array[VIN_make] != undefined) {
				document.getElementById("vinmake_"+uservin.id).innerHTML = VIN_make_array[VIN_make];
				document.getElementById("vinyear_"+uservin.id).innerHTML = VIN_year_array[VIN_year];
				return true;
			}
			
			else {
				vinClear();
				alert("VIN could not be matched in our database. Please verify VIN is entered correctly before proceeding.");
				return false;
			}
		}
		
		else {
			vinClear();
			alert("VIN must be alpha-numeric(A-Z/0-9) and contain 17 characters. Please leave VIN blank for models made before 1981.");
			return false;
		}
	}
	
	else {
		vinClear();
		return true;
	}
}
