function viewRouteMap() { var hWnd = window.open('popup_routeMap.php', 'Routemap','width=370,height=500,directories=no,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=no'); } function viewStopMap(mapPhoto) { var hWnd = window.open('popup_stopMap.php?mapPhoto=' + mapPhoto, 'Stopmap','width=430,height=430,directories=no,location=no,menubar=no,scrollbars=no,status=no,toolbar=no,resizable=no'); } function viewSecurityCodePopup() { var hWnd = window.open('popup_securityCode.php', 'securityCodeOverview','width=430,height=430,directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes'); } function imageOff(imageName) { if (document.images && doIt=="yes") { document[imageName].src = eval(imageName + '_off.src'); } } function imageOn(imageName) { if (document.images && doIt=="yes") { document[imageName].src = eval(imageName + '_on.src'); } } function changeClass(object, newClass) { objRef = document.getElementById(object); objRef.className = newClass; } function openWindow(url, windowName, width, height) { if(screen.width){ var winl = (screen.width - width) / 2; var wint = (screen.height - height) / 2; } else{ winl = 0; wint = 0; } if (winl < 0) winl = 0; if (wint < 0) wint = 0; var settings = ''; settings += 'height=' + height + ','; settings += 'width=' + width + ','; settings += 'top=200,left=200,'; settings += 'directories=no,location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes'; var win = window.open(url, windowName, settings); } function trim (str) { while (str.charAt(0) == ' ') { str = str.substring(1); } while (str.charAt(str.length - 1) == ' ') { str = str.substring(0, str.length - 1); } return str; } function isEmailValid(sEmail) { if (sEmail.value == '' || sEmail.indexOf('.') == 0 || sEmail.indexOf('.') == -1 || sEmail.indexOf('@') == 0 || sEmail.indexOf('@') == -1 || sEmail.indexOf('.') == sEmail.length - 1) { return false; } else { return true; } } function isValidZipcode(sZip) { sZip = trim(sZip); //Valid formats: // 99999 (5) // 99999-9999 (10) // 99999 9999 (10) // 999999999 (9) // AAAAAA (Canadian) (6) // AAA AAA (Canadian) (7) //First, check length - must be 5, 10, 9, or 6 characters long if (sZip.length != 5 && sZip.length != 10 && sZip.length != 9 && sZip.length != 6 && sZip.length != 7) { return false; } //If ZIP code is 5 or 9 characters, they must all be numbers if (sZip.length == 5 || sZip.length == 9) { if (isNaN(sZip)) { return false; } } //If ZIP code is 10 characters, must be 99999-9999 or 99999 9999 if (sZip.length == 10) { //6th character must be a dash or space if(!sZip.indexOf('-') == 5 && !sZip.indexOf(' ') == 5) { return false; } //Check that first 5 characters and last 4 characters are all numbers var firstFive = sZip.substring(0, 5); var lastFour = sZip.substring(6, 10); if (isNaN(firstFive) || isNaN(lastFour)) { return false; } } //If ZIP code is 6 characters, it must be Canadian and must NOT be all numbers if (sZip.length == 6) { if (!isNaN(sZip)) { return false; } //First character cannot be a number firstChar = sZip.substring(0, 1); if (!isNaN(firstChar)) { return false; } } //If ZIP code is 7 characters, it must be Canadian and must NOT be all numbers if (sZip.length == 7) { if (!isNaN(sZip)) { return false; } //First character cannot be a number firstChar = sZip.substring(0, 1); if (!isNaN(firstChar)) { return false; } //Fourth character must be a dash or space if(!sZip.indexOf('-') == 3 && !sZip.indexOf(' ') == 3) { return false; } } return true; } function addDays(myDate, days) { return new Date(myDate + (days * 24 * 60 * 60 * 1000)); } function FormatNumber(expr, decplaces) { var str = "" + Math.round(eval(expr) * Math.pow(10,decplaces)); while (str.length <= decplaces) { str = "0" + str; } var decpoint = str.length - decplaces; return str.substring(0,decpoint) + "." + str.substring(decpoint, str.length); } /* var STATE_NAMES = new Array( "Alabama", "Alaska", "American Samoa", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Federated States of Micronesia", "Florida", "Georgia", "Guam", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Marshall Islands", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Northern Mariana Islands", "Ohio", "Oklahoma", "Oregon", "Palau", "Pennsylvania", "Puerto Rico", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virgin Islands", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming", "Armed Forces Africa", "Armed Forces Americas", "Armed Forces Canada", "Armed Forces Europe", "Armed Forces Middle east", "Armed Forces Pacific"); */ function isValidState(value) { var STATES = new Array("AL","AK","AS","AZ","AR","CA","CO","CT", "DE","DC","FM","FL","GA","GU","HI","ID","IL","IN","IA","KS", "KY","LA","ME","MH","MD","MA","MI","MN","MS","MO","MT","NE", "NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PW", "PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA", "WV","WI","WY","AA","AE","AP"); if (value == null || value == "") { return false; } var st = value.toUpperCase(); //Loop through array of state abbreviations for (var i = 0; i < STATES.length; i++) { if (STATES[i] == st) { return true; } } return false; } function isValidProvince(value) { var PROVINCES = new Array("AB","BC","MB", "NB", "NF", "NT", "NS", "ON", "PE", "QC", "SK", "YT"); if (value == null || value == "") { return false; } var prov = value.toUpperCase(); //Loop through array of province abbreviations for (var i = 0; i < PROVINCES.length; i++) { if (PROVINCES[i] == prov) { return true; } } return false; } function jsvoid() { //Do nothing } function isValidDate(sDate) { //Check to make sure two slashes are present in the date provided if (sDate.lastIndexOf('/') <= sDate.indexOf('/')) { return false; } //Split on slash sDateArray = sDate.split('/'); sMonth = sDateArray[0]; sDay = sDateArray[1]; sYear = sDateArray[2]; //Validate year part if (isNaN(sYear)) { return false; } if (sYear.length == 2) { sYear = parseInt('20' + sYear); } else { if (sYear.length != 4) { return false; } } if (sDay <= daysInMonth(sMonth, sYear)) { return true; } else { return false; } } function isLeapYear(yr) { if (yr % 4 != 0) return false; else if (yr % 400 == 0) return true; else if (yr % 100 == 0) return false; else return true; } function daysInMonth(mn, yr) { var mDay; if ((mn == 4) || (mn == 6) || (mn == 9) || (mn == 11)) { mDay = 30; } else if (mn == 2) { //calling leap year function mDay = isLeapYear(yr) ? 29 : 28; } else { mDay = 31; } return mDay; } function getRadioValue(objRadio) { var itemChecked = false; for (i=0; i < objRadio.length; i++) { if (objRadio[i].checked) { itemChecked = true; return objRadio[i].value; } } if (itemChecked == false) { return ''; } } function setRadioValue(objRadio, sValue) { for (i=0; i < objRadio.length; i++) { if (objRadio[i].value == sValue) { objRadio[i].checked = true; } } } function autoFillStateZip(oCityBox, oStateBox, oZipBox) { //Default to current values in text boxes sCity = oCityBox.value; sState = oStateBox.value; sZipCode = oZipBox.value; switch (trim(oCityBox.value.toLowerCase())) { case 'oak harbor': sCity = 'Oak Harbor'; sState = 'WA'; sZipCode = '98277'; break; case 'coupeville': sCity = 'Coupeville'; sState = 'WA'; sZipCode = '98239'; break; case 'greenbank': sCity = 'Greenbank'; sState = 'WA'; sZipCode = '98253'; break; case 'freeland': sCity = 'Freeland'; sState = 'WA'; sZipCode = '98249'; break; case 'langley': sCity = 'Langley'; sState = 'WA'; sZipCode = '98260'; break; case 'clinton': sCity = 'Clinton'; sState = 'WA'; sZipCode = '98236'; break; } //Update text boxes oCityBox.value = sCity; oZipBox.value = sZipCode; oStateBox.value = sState; } function capitalizeState(oStateBox) { oStateBox.value = oStateBox.value.toUpperCase(); } //------------------------------------------------ // START OF CREDIT CARD VALIDATION FUNCTIONS //------------------------------------------------ function isValidCreditCardNumber(ccNum, ccType) { if (ccNum.length > 0) { if (!LuhnCheck(ccNum) || !validateCCNum(ccType, ccNum)) { return false; } } else { return false; } return true; } function validateCCNum(cardType, cardNum) { var result = false; cardType = cardType.toUpperCase(); var cardLen = cardNum.length; var firstdig = cardNum.substring(0,1); var seconddig = cardNum.substring(1,2); var first4digs = cardNum.substring(0,4); switch (cardType) { case "VISA": result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4"); break; case "AMEX": var validNums = "47"; result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0); break; case "MASTERCARD": var validNums = "12345"; result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0); break; case "DISCOVER": result = (cardLen == 16) && (first4digs == "6011"); break; case "DINERS": var validNums = "068"; result = (cardLen == 14) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0); break; } return result; } function LuhnCheck(str) { var result = true; var sum = 0; var mul = 1; var strLen = str.length; for (i = 0; i < strLen; i++) { var digit = str.substring(strLen-i-1,strLen-i); var tproduct = parseInt(digit ,10)*mul; if (tproduct >= 10) { sum += (tproduct % 10) + 1; } else { sum += tproduct; } if (mul == 1) { mul++; } else { mul--; } } if ((sum % 10) != 0) { result = false; } return result; } function isValidExpDate(formValue) { var result = true; if (result && (formValue.length > 0)) { var elems = formValue.split("/"); result = (elems.length == 2); // should be two components var expired = false; if (result) { var month = parseInt(elems[0],10); var year = parseInt(elems[1],10); if (elems[1].length == 2) { year += 2000; } var now = new Date(); var nowMonth = now.getMonth() + 1; var nowYear = now.getFullYear(); expired = (nowYear > year) || ((nowYear == year ) && (nowMonth > month)); result = allDigits(elems[0]) && (month > 0) && (month < 13) && allDigits(elems[1]) && ((elems[1].length == 2) || (elems[1].length == 4)); } if (!result) { result = false; } else if (expired) { result = false; } } return result; } //------------------------------------------------ // END OF CREDIT CARD VALIDATION FUNCTIONS //------------------------------------------------ function allDigits(str) { return inValidCharSet(str,"0123456789"); } function inValidCharSet(str,charset) { var result = true; for (var i=0;i