// HINKLEY locator.js
// Copyright 2009, Hinkley Auto Sales, Inc.
// Montague, NJ 07827  All rights reserved.
// Validate Vehicle Locator Form
// Establish global Arrays for Day and Month Names */

var dayNames=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var monthNames=new Array("January","February","March","April","May","June","July","August","September","October","November","December");

function getCurTime() {
	curDateTime=new Date();
	curYear=curDateTime.getFullYear();
	curMonthNbr=curDateTime.getMonth();
	curDayNbrOfWeek=curDateTime.getDay();
	curDayNbrOfMonth=curDateTime.getDate();
	
	curLocalHours=curDateTime.getHours();
	curLocalMinutes=curDateTime.getMinutes();
	curLocalSeconds=curDateTime.getSeconds();
	if (curLocalMinutes<10)
		curLocalMinutes="0"+curLocalMinutes;
	if (curLocalSeconds<10)
		curLocalSeconds="0"+curLocalSeconds;

	curUTCTime = curDateTime.toUTCString();
	curDateTime = curDateTime.toLocaleTimeString();

	var retrnData=dayNames[curDayNbrOfWeek]+', '+monthNames[curMonthNbr]+' '+curDayNbrOfMonth+', '+curYear+', '+curLocalHours +':'+curLocalMinutes +':'+curLocalSeconds+'\n ('+curUTCTime+')';
	return retrnData;
}

function taLimit(evt) {
/* Copyright 2009, All rights reserved. DeFinis Computer Associates */
	var evtObj;						// Contains event object
	var elementTarget;		// Contains either the srcElement (IE) or the evt.target property
	if (evt.srcElement){	// The browser is IE
		evtObj = window.event;
		elementTarget = evt.srcElement;
	} else {							// The browser is non-IE
		evtObj = evt;
		elementTarget = evt.target;
	}
	
	var maxLength = elementTarget.rows * elementTarget.cols;
//	var maxLength = 3;	// used for testing
	var taCounter=0;
	var keyHit = evtObj.type;
	var keyCode = evtObj.keyCode;
	if (keyCode == 8) {
		taBackspace(evt);
		return;
	}
	
	taCounter = maxLength - document.frmVehLoc.MESSAGE.value.length -1;
	
	if (document.frmVehLoc.MESSAGE.value.length==maxLength){
		document.frmVehLoc.MESSAGE.value = document.frmVehLoc.i_MESSAGE.value.substring(0,maxLength);
		return false;
	}else{
		if(document.all)
			document.getElementById('myCounter').innerText = taCounter;
		else
			document.getElementById('myCounter').innerHTML = taCounter;		
	}
}

function taBackspace(evt) {
	var elementTarget;		// Contains either the srcElement (IE) or the evt.target property
	if (evt.srcElement){	// The browser is IE
		elementTarget = evt.srcElement;
	} else {							// The browser is non-IE
		elementTarget = evt.target;
	}
	keyHit = evt.type;
	keyCode = evt.keyCode;
	var maxLength = elementTarget.rows * elementTarget.cols;
//	var maxLength = 3;	// used for testing
	var taCounter=0;
	if (document.frmVehLoc.MESSAGE.value.length==0){
		taCounter = maxLength;
//		return false;
	}else{
		taCounter = maxLength - document.frmVehLoc.MESSAGE.value.length;
	}
	if(document.all)
		document.getElementById('myCounter').innerText = taCounter;
	else
		document.getElementById('myCounter').innerHTML = taCounter;
}

function validateWorkPhone() 
{
	var workPhone = document.getElementById('WORKPHONE').value;
	var	bestTime = document.getElementById('BESTTIME').value;
	if(bestTime.toUpperCase().indexOf("WORK") != -1){
		if(document.getElementById('WORKPHONE').value == ''){
			alert("You must enter a valid Work Phone Number if you want to be called at work.");
			document.getElementById('WORKPHONE').focus();
			document.getElementById('WORKPHONE').select();				
		}
	}
}

function fnValidateForm(formName)
{
  var x  = 0;
  var FormOk  = true;
	var ItemName = '';
	var ItemValue = '';
	var myForm = document.forms[formName];
	
// *** INTERNAL FIELD NAMES ***
	fldNames = new Array(
		"NAME",
		"ADDRESS",
		"CITYSTATEZIP",
		"HOMEPHONE",
		"WORKPHONE",
		"EXT",
		"EMAIL",
		"BESTTIME",
		"VEHICLEYEAR",
		"MAKE",
		"BODYSTYLE",
		"TRIM",
		"MILES",
		"ENGINESIZE",
		"CYLINDERS",
		"DOORS",
		"INTERIOR",
		"TRANSMISSION",
		"OPTIONS_AMFM",
		"OPTIONS_CASSETTE",
		"OPTIONS_CDPLAYER",
		"OPTIONS_AC",
		"OPTIONS_DUALREAR_AC",
		"OPTIONS_TILT",
		"OPTIONS_CRUISE",
		"OPTIONS_PWINDOWS",
		"OPTIONS_PLOCKS",
		"OPTIONS_PMIRRORS",
		"OPTIONS_PDRIVERSEAT",
		"OPTIONS_PPASSSEAT",
		"OPTIONS_ALLOYWHEELS",
		"OPTIONS_KEYLESSENTRY",
		"OPTIONS_SUNROOF",
		"OPTIONS_TTOP",
		"TRKOPTIONS_REGCAB",
		"TRKOPTIONS_XTNDCAB",
		"TRKOPTIONS_CREWCAB",
		"TRKOPTIONS_2DR",
		"TRKOPTIONS_3DR",
		"TRKOPTIONS_4DR",
		"TRKOPTIONS_HALFTON",
		"TRKOPTIONS_3QTRTON",
		"TRKOPTIONS_1TON",
		"TRKOPTIONS_PUALLY",
		"TRKOPTIONS_REGBED",
		"TRKOPTIONS_LONGBED",
		"TRKOPTIONS_BEDLINER",
		"TRKOPTIONS_BEDCOVER",
		"TRKOPTIONS_TOPPER",
		"TRKOPTIONS_SUNGLASS",
		"TRKOPTIONS_TOW",
		"TRKOPTIONS_3RDSEAT",
		"TRKOPTIONS_XTNDWHEELBASE",
		"TRKOPTIONS_RUNBOARDS",
		"TRKOPTIONS_QUADSEATS",
		"VANOPTIONS_SINGLESLIDEDOOR",
		"VANOPTIONS_DUALSLIDEDOORS",
		"VANOPTIONS_HATCHBACK",
		"VANOPTIONS_BACKDOORS",
		"MESSAGE"
	);
	captionNames = new Array(
		'Name',
		'Address',
		'City, State, Zip',
		'Home Phone',
		'Work Phone',
		'Extension',
		'E-Mail Addr',
		'Best Time to Call',
		'Year of Vehicle',		
		'Make/Model',		
		'Special Make/Model',		
		'Trim/Special Package',		
		'Miles',		
		'Engine Size',		
		'Number of Cylinders',		
		'Number of Doors',		
		'Interior',		
		'Transmission',		
		'AmFm Radio',
		'Cassette',		
		'CD Player',		
		'A/C',				
		'Dual / Rear A/C',	
		'Tilt',
		'Cruise',
		'Power Windows',
		'Power Locks',
		'Power Mirrors',
		'Power Drivers Seat',
		'Power Pass. Seat',
		'Alloy Wheels',
		'Keyless Entry',
		'Sunroof',
		'T-Top',
		'Reg Cab',
		'Ext Cab',
		'Crew Cab',	
		'2 door',
		'3 door',
		'4 door',
		'1/2 Ton',
		'3/4 Ton',
		'1 Ton',
		'Pually',
		'Regular Bed',
		'Long Bed',
		'Bedliner',
		'Bed Cover',
		'Topper',
		'Sunscreen Glass',
		'Trailer / Tow Pkg.',
		'3rd Seat',
		'Ext. Wheelbase',
		'Running Boards',
		'Quad Seats',
		'Single Sliding Door',
		'Dual Sliding Doors',
		'Hatchback',
		'Back Door(s)',		
		'Message'
	);

	var ItemCount = fldNames.length;
	var ItemRequired = false;
	var captionPtr = 0;
	
  while ((x < myForm.elements.length) && myForm.elements[x].name != 'undefined' && (FormOk)){
		ItemName = myForm.elements[x].name;
		ItemValue = myForm.elements[x].value;
		// Set the Caption Pointer
	
		for (captionPtr=0;captionPtr<ItemCount;captionPtr++){
			if(ItemName == fldNames[captionPtr]){
				break;
			}
		}	

		// Check if required field is empty
		if (myForm.elements[x].className.indexOf("cRequiredFld") != -1){
			if (ItemValue.length == 0){
			  FormOk = false;
				alert(captionNames[captionPtr] + ' is a required item.');
				myForm.elements[x].focus();
				myForm.elements[x].select();
				return FormOk;				
			}
		}

		//	Required or not, must be valid format if present		
		if(ItemName.indexOf("PHONE") != -1 || ItemName.indexOf("FAX") != -1){
			if (myForm.elements[x].className.indexOf("cRequiredFld") != -1 || ItemValue.length > 0) {
				var myRegExp=/^\d{3}-\d{3}-\d{4}$/;		// 3 digits followed by hyphen followed by 3 digits followed by hyphen followed by 4 digits
				if(!myRegExp.test(ItemValue)){
					FormOk = false;
					alert("Please enter a valid " + captionNames[captionPtr] + " with format as 000-000-0000.");
					myForm.elements[x].focus();
					myForm.elements[x].select();
					return FormOk;				
				}
			}
		}

		if(ItemName.indexOf("EXT") != -1){
			if(ItemValue.length > 0){
				if(myForm.elements[x-1].value.length == 0) {
					FormOk = false;
					alert(captionNames[captionPtr]+" must be Blank or associated Phone Number is missing");
					myForm.elements[x].focus();
					myForm.elements[x].select();
					return FormOk;				
				}else if(isNaN(ItemValue) || myForm.elements[x-1].value.length == 0) {	// EXT must immediately follow WORKPHONE
					FormOk = false;
					alert(captionNames[captionPtr]+" must be Numeric");
					myForm.elements[x].focus();
					myForm.elements[x].select();
					return FormOk;				
				}
			}
		}

		if(ItemName == "EMAIL"){
			if (myForm.elements[x].className.indexOf("cRequiredFld") != -1 || ItemValue.length > 0) {
				var myRegExp1=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
				if(!myRegExp1.test(ItemValue)){
					FormOk = false;
					alert(captionNames[captionPtr] + " has an invalid format.");
					myForm.elements[x].focus();
					myForm.elements[x].select();				
					return FormOk;				
				}
			}
		}
		
		if(ItemName == "BESTTIME"){
			if(ItemValue.toUpperCase().indexOf("WORK") != -1){
				if(document.getElementById('WORKPHONE').value == ''){
					FormOk = false;
					alert("You must enter a valid Work Phone Number if you want to be called at work.");
					document.getElementById('WORKPHONE').focus();
					document.getElementById('WORKPHONE').select();				
					return FormOk;				
				}else{
					document.getElementById('WORKPHONE').className = 'cOptionalFld';
				}
			}
		}
/*
		if (ItemName == "SPECIALMODEL"){
			if(ItemValue != "" && document.getElementById('MAKE').value  != "Not Listed"){
	      FormOk = false;
	      alert('Make/Model specified twice.  Choose only one. If Special is desired, set first one to \"Not Listed\"');
				document.getElementById('MAKE').focus();
				return FormOk;				
			}else if(ItemValue == "" && document.getElementById('MAKE').value == "Not Listed"){
	      FormOk = false;
	      alert("Please select a Make/Model or manually enter one that's not on the list.");
				document.getElementById('SPECIALMODEL').focus();
				document.getElementById('SPECIALMODEL').select();				
				return FormOk;				
			}
		}
*/		
    x ++;
  }
  
	return FormOk;
		
}

function formSubmit(formName){
// last updated 10-09-2009	
	var msgSent = 'MSG SENT:';
	var myForm = document.forms[formName]
	
	if(window.event)
		window.event.returnValue = false;
		
  if(fnValidateForm(formName)){
		// Prevent redundant "MSG SENT:" lines which may result from incorrect Captcha codes
  	ItemName = myForm.elements['MESSAGE'].name;
		ItemValue = myForm.elements['MESSAGE'].value;
		if(ItemValue.toUpperCase().indexOf(msgSent) != -1){
			var stop = ItemValue.lastIndexOf(msgSent)-2;
			myForm.elements['MESSAGE'].value=ItemValue.substring(0, stop);
		}

		if (confirm ("Data is valid.  Click O.K. to Send.")){
			if(document.all){									// if IE
				if(myForm.action.substring(0,7).toLowerCase()	== 'mailto:'){
					alert("\n"+'Please do not block messages that may follow.  Click Yes/OK'+"\n"+"\n");
				}
				var timeSubmitted = "\n\n" + msgSent + ' '+getCurTime();
				myForm.elements['MESSAGE'].value+=timeSubmitted + "\n";		// Timestamp message with time sent
				myForm.submit();
				if(window.event){
					window.event.returnValue = true;
					return true;
				}else{
					return false;
				}
			}else if(document.getElementById){		// If other than IE
				if(myForm.action.substring(0,7).toLowerCase()	== 'mailto:'){	
					alert("\n"+'Please do not block messages that may follow.  Click Yes/OK, then,'+"\n\n"+'Your E-mail software may then be waiting for your response.  If so, Click SEND to continue'+"\n"+"\n");
				}
				var timeSubmitted = "\n\n" + msgSent + ' '+getCurTime();
				myForm.elements['MESSAGE'].value+=timeSubmitted + "\n";		// Timestamp message with time sent
				myForm.submit();
				return false;
			}
		}
		return false;
	}
	return false;
}

function formReset(formName,rtrnLoc){	
// last updated 04-16-2009	
	var myForm = document.forms[formName]
	if (confirm ("Are you sure you want to clear the entire form?")){
		window.location = rtrnLoc;
		return false;
	}else{
		return true;	// 		return false in HTML;
	}
}

