// FUNCTIONS USED FOR AUTO-TAB ON PHONE NUMBER: begin var isNN = (navigator.appName.indexOf("Netscape")!=-1); function autoTab(input,len, e) { var keyCode = (isNN) ? e.which : e.keyCode; var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46]; if(input.value.length >= len && !containsElement(filter,keyCode)) { input.value = input.value.slice(0, len); input.form[(getIndex(input)+1) % input.form.length].focus(); } function containsElement(arr, ele) { var found = false, index = 0; while(!found && index < arr.length) if(arr[index] == ele) found = true; else index++; return found; } function getIndex(input) { var index = -1, i = 0, found = false; while (i < input.form.length && index == -1) if (input.form[i] == input) index = i; else i++; return index; } return true; } // FUNCTIONS USED FOR AUTO-TAB ON PHONE NUMBER: end // FUNCTIONS USED FOR LIMITING SPECIAL REQUESTS TO 160 CHARACTERS: end // Original: Ronnie T. Moore // Web Site: The JavaScript Source // Dynamic 'fix' by: Nannette Thacker // Web Site: http://www.shiningstar.net // This script and many more are available free online at // The JavaScript Source!! http://javascript.internet.com function textCounter(field, countfield, maxlimit) { if (field.value.length > maxlimit) { field.value = field.value.substring(0, maxlimit); } else { charsLeft = maxlimit - field.value.length; countfield = document.getElementById('special_requests_limit') countfield.innerHTML = charsLeft + " characters remaining"; } } // FUNCTIONS USED FOR LIMITING SPECIAL REQUESTS TO 160 CHARACTERS: end function displayTime() { theHour = document.theForm.pickup_hour[document.theForm.pickup_hour.selectedIndex].value theMinute = document.theForm.pickup_minute[document.theForm.pickup_minute.selectedIndex].value if (theHour < 12) { am_pm = 'am' } else { am_pm = 'pm' } clarify = '' if (theMinute == "00" && theHour == 0) { clarify = " (midnight)" } if (theMinute == "00" && theHour == 12) { clarify = " (noon)" } if (theHour == 0) { theHour = 12 } if (theHour > 12) { theHour -= 12 } time_to_display = ' ' + theHour + ":" + theMinute + ' ' + am_pm + clarify timeSpot = document.getElementById('newTime') timeSpot.innerHTML = time_to_display } //////////////// REQUIRED FIELDS: begin function updateAddress_origin(text, li) { var whichID = li.id; var houseElem = document.getElementById("house-"+whichID) document.theForm.origin_number.value = houseElem.innerHTML var streetElem = document.getElementById("street-"+whichID) document.theForm.origin_street.value = streetElem.innerHTML document.theForm.origin_apt.value = "" var cityElem = document.getElementById("city-"+whichID) cities = document.theForm.origin_district for (var i=0; i 0) { warningText += "Email Address\n" warningTrack++ if (selectWhichField == "") { selectWhichField = document.theForm.email } } } // if (document.theForm.email_survey_to.value != "") { // var validateEmailSurvey = checkEmail(document.theForm.email_survey_to.value) // // if (validateEmailSurvey > 0) { // warningText += "Email Address for Survey\n" // warningTrack++ // if (selectWhichField == "") { selectWhichField = document.theForm.email_survey_to } // } // } if (warningTrack>0) { // display warning alert(warningText) selectWhichField.focus() } else { // or submit the form var formTracking = 0 // check phone number var verifyPhones = checkPhones(document.theForm.area_code.value,document.theForm.phone_number.value) if (verifyPhones > 1) { alert("Please enter phone number in xxx-xxxx format") document.theForm.phone_number.select() formTracking++ return false } if (verifyPhones == 1) { alert("Please enter a 3-digit area code.") document.theForm.area_code.select() formTracking++ return false } // make sure email address was entered if they want confirmation if (document.theForm.send_confirm[0].checked == true && document.theForm.email.value == "") { alert("Please enter an email address to receive the order confirmation.") document.theForm.email.select() formTracking++ return false } if (formTracking == 0) { var verifyDate = checkDate() if (verifyDate <= 3600) { alert("To ensure that your order receives prompt attention, we can not accept orders online when service is needed within one hour. Please call our dispatcher instead at \(210\) 222-2222.") return false } else if (verifyDate != "cancelScript") { document.theForm.submit() } } } return true // needed to make it not display an error in Netscape } function checkPhones(thisAC,thisPhone) { var tracking=0 // area code var re_areaCode = /\d\d\d/ if (!re_areaCode.test(document.theForm.area_code.value)) { tracking=1 } // phone number var re_phone = /\d\d\d\-\d\d\d\d/ if (!re_phone.test(document.theForm.phone_number.value)) { tracking += 2 } return tracking } function checkDate() { // determine the current server time //time = 1220811527 //texas time = 1220807927 var serverEpoch = parseInt("1220807927") var serverMonth = parseInt("9") -1 var serverYear = parseInt("2008") var serverDay = parseInt("7") var serverHour = parseInt("13") var serverMinute = parseInt("18") // determine the current client time var clientMonth = parseInt(document.theForm.pickup_month.selectedIndex) var clientDay = parseInt(document.theForm.pickup_day.selectedIndex) var clientHour = parseInt(document.theForm.pickup_hour[document.theForm.pickup_hour.selectedIndex].value) var clientMinute = parseInt(document.theForm.pickup_minute[document.theForm.pickup_minute.selectedIndex].value) var killMessage = "Due to heavy holiday demand, we regret that we are unable to accept reservations for pick ups between 6 p.m. Dec 31 and 6 a.m. Jan 1.\n\nPlease call 222-2222 when you are ready for your cab to be dispatched." if (clientMonth == 12 && clientDay == 31 && clientHour >= 18) { alert(killMessage) return "cancelScript" } if (clientMonth == 1 && clientDay == 1 && clientHour < 6) { alert(killMessage) return "cancelScript" } if (clientMonth == 1 && clientDay == 1 && clientHour == 6 && clientMinute == "00") { alert(killMessage) return "cancelScript" } // determine the selected epoch time by doing the following: // determine year by figuring out if selected month is before this month var selectedYear = serverYear if (clientMonth < serverMonth) { selectedYear = serverYear + 1 } if (clientMonth == serverMonth && clientDay < serverDay) { selectedYear = serverYear + 1 } //alert("selectedYear = " + selectedYear) // fix time var selectedHour = clientHour // fix hour to hh format if (selectedHour < 10) { selectedHour = "0" + selectedHour } // fix month to mm format clientMonth = clientMonth - 1 //javascript is zero-based months if (clientMonth < 10) { clientMonth = "0" + clientMonth } // fix day to dd format if (clientDay < 10) { clientDay = "0" + clientDay } // build date to parse into client epoch time var clientDate = new Date(selectedYear, clientMonth, clientDay, selectedHour, clientMinute, "00") // determine selected epoch time var clientMils = clientDate.valueOf() // this is in mils var clientEpoch = parseInt(clientMils) * .001 // build date to parse into client epoch time var serverDate = new Date(serverYear, serverMonth, serverDay, serverHour, serverMinute, "00") // determine selected epoch time var serverMils = serverDate.valueOf() // this is in mils var serverEpoch = parseInt(serverMils) * .001 // determine the difference in seconds between server time now and client time selected var secondsDifference = clientEpoch - serverEpoch return secondsDifference } // checkEmail is NOT USED, due to problems with older browsers function checkEmail(whichEmail) { var tracking=0 //valid characters, @, 2 or more valid characters, (. plus 2 or more letters)at least once // var regExp = /^[-\w_\.]+\@\w{2,}(\.[-\w_\.]{2,})+$/ var regExp = /^[-\w_\.]+\@[-\w_\.]{2,}\.\w{2,}$/ if (!regExp.test(whichEmail)) { //alert("WARNING:\n\nthis email is invalid") tracking++ } return tracking } //////////////// REQUIRED FIELDS: end