/* File: /farecast.js */ var daysLong = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; var daysShort = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; function daysBetween(date1, date2){ var DSTAdjust = 0; oneMinute = 1000 * 60; var oneDay = oneMinute * 60 * 24; date1.setHours(0); date1.setMinutes(0); date1.setSeconds(0); date2.setHours(0); date2.setMinutes(0); date2.setSeconds(0); if (date2 > date1) { DSTAdjust = (date2.getTimezoneOffset() - date1.getTimezoneOffset()) * oneMinute; } else { DSTAdjust = (date1.getTimezoneOffset() - date2.getTimezoneOffset()) * oneMinute; } var diff = Math.abs(date2.getTime() - date1.getTime()) - DSTAdjust; return Math.floor(diff/oneDay); } function inDateRange(theDate, a, b){ if(dateGreater(theDate, a) && dateLess(theDate, b)){ return true; } return false; } function dateGreater(theDate, a){ if(theDate.getTime() >= a.getTime()){ return true; } return false; } function dateLess(theDate, a){ if(a.getTime() >= theDate.getTime()){ return true; } return false; } function inHoursRange(theDate, a, b){ if(hoursGreater(theDate, a) && hoursLess(theDate, b)){ return true; } return false; } function hoursGreater(theDate, a){ if(theDate.getUTCHours() >= a.getUTCHours()){ return true; } return false; } function hoursLess(theDate, a){ if(a.getUTCHours() >= theDate.getUTCHours()){ return true; } return false; } Date.prototype.justTime = function(){ var theDate = new Date(0); theDate.setHours(this.getHours()); theDate.setMinutes(this.getMinutes()); theDate.setSeconds(this.getSeconds()); return theDate; } Date.prototype.setISO8601 = function (string) { var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" + "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" + "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?"; var d = string.match(new RegExp(regexp)); var offset = 0; var date = new Date(d[1], 0, 1); if (d[3]) { date.setMonth(d[3] - 1); } if (d[5]) { date.setDate(d[5]); } if (d[7]) { date.setHours(d[7]); } if (d[8]) { date.setMinutes(d[8]); } if (d[10]) { date.setSeconds(d[10]); } if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); } if (d[14]) { offset = (Number(d[16]) * 60) + Number(d[17]); offset *= ((d[15] == '-') ? 1 : -1); } offset -= date.getTimezoneOffset(); time = (Number(date) + (offset * 60 * 1000)); this.setTime(Number(time)); } Date.prototype.setISO8601Time = function (string) { if(string.charAt(4) != "-"){ string = "0000-00-00T" + string; } var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" + "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" + "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?"; var d = string.match(new RegExp(regexp)); var offset = 0; var date = new Date(0); if (d[7]) { date.setUTCHours(d[7]); } if (d[8]) { date.setUTCMinutes(d[8]); } if (d[10]) { date.setUTCSeconds(d[10]); } if (d[12]) { date.setUTCMilliseconds(Number("0." + d[12]) * 1000); } if (d[14]) { offset = (Number(d[16]) * 60) + Number(d[17]); offset *= ((d[15] == '-') ? 1 : -1); } time = (Number(date) + (offset * 60 * 1000)); this.setTime(Number(time)); } Date.prototype.setISO8601Date = function (string) { if(string.charAt(4) != "-"){ string = "0000-00-00T" + string; } var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" + "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" + "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?"; var d = string.match(new RegExp(regexp)); var offset = 0; var date = new Date(d[1], 0, 1); if (d[3]) { date.setMonth(d[3] - 1); } if (d[5]) { date.setDate(d[5]); } if (d[7]) { date.setHours(0); } if (d[8]) { date.setMinutes(0); } if (d[10]) { date.setSeconds(0); } if (d[12]) { date.setMilliseconds(0); } if (d[14]) { offset = (Number(d[16]) * 60) + Number(d[17]); offset *= ((d[15] == '-') ? 1 : -1); } offset -= date.getTimezoneOffset(); time = (Number(date) + (offset * 60 * 1000)); this.setTime(Number(time)); } Date.prototype.setISO8601LocalDate = function(string) { var d = string.split(/-0?/); if (d.length != 3) { return; } this.setFullYear(parseInt(d[0]), parseInt(d[1]) - 1, parseInt(d[2])); } Array.prototype.exists = function (x) { for (var i = 0; i < this.length; i++) { if (this[i] == x) return true; } return false; } Date.prototype.formatDate = function (input,time) { var switches = ["o", "a", "A", "B", "c", "d", "D", "F", "g", "G", "h", "H", "i", "j", "l", "L", "m", "M", "n", "O", "r", "s", "S", "t", "U", "w", "W", "y", "Y", "z"]; var daysLong = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; var daysShort = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; var monthsShort = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; var monthsLong = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var daysSuffix = ["st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "st"]; function o() { self.setHours(self.getHours() + Math.floor(self.getTimezoneOffset()/60)); self.setMinutes(self.getMinutes() + (self.getTimezoneOffset()%60)); } function c() { return self.getHours() > 11? "p" : "a"; } function a() { return self.getHours() > 11? "pm" : "am"; } function A() { return self.getHours() > 11? "PM" : "AM"; } function B(){ var off = (self.getTimezoneOffset() + 60)*60; var theSeconds = (self.getHours() * 3600) + (self.getMinutes() * 60) + self.getSeconds() + off; var beat = Math.floor(theSeconds/86.4); if (beat > 1000) beat -= 1000; if (beat < 0) beat += 1000; if ((""+beat).length == 1) beat = "00"+beat; if ((""+beat).length == 2) beat = "0"+beat; return beat; } function d() { return new String(self.getDate()).length == 1? "0"+self.getDate() : self.getDate(); } function D() { return daysShort[self.getDay()]; } function F() { return monthsLong[self.getMonth()]; } function g() { return self.getHours() > 12? self.getHours()-12 : (self.getHours() == 0)?12:self.getHours(); } function G() { return self.getHours(); } function h() { if (self.getHours() > 12) { var s = new String(self.getHours()-12); return s.length == 1? "0"+ (self.getHours()-12) : self.getHours()-12; } else { var s = new String(self.getHours()); return s.length == 1? "0"+self.getHours() : self.getHours(); } } function H() { return new String(self.getHours()).length == 1? "0"+self.getHours() : self.getHours(); } function i() { return new String(self.getMinutes()).length == 1? "0"+self.getMinutes() : self.getMinutes(); } function j() { return self.getDate(); } function l() { return daysLong[self.getDay()]; } function L() { var y_ = Y(); if ( (y_ % 4 == 0 && y_ % 100 != 0) || (y_ % 4 == 0 && y_ % 100 == 0 && y_ % 400 == 0) ) { return 1; } else { return 0; } } function m() { return self.getMonth() < 9? "0"+(self.getMonth()+1) : self.getMonth()+1; } function M() { return monthsShort[self.getMonth()]; } function n() { return self.getMonth()+1; } function O() { var os = Math.abs(self.getTimezoneOffset()); var h = ""+Math.floor(os/60); var m = ""+(os%60); h.length == 1? h = "0"+h:1; m.length == 1? m = "0"+m:1; return self.getTimezoneOffset() < 0 ? "+"+h+m : "-"+h+m; } function r() { var r; r = D() + ", " + j() + " " + M() + " " + Y() + " " + H() + ":" + i() + ":" + s() + " " + O(); return r; } function S() { return daysSuffix[self.getDate()-1]; } function s() { return new String(self.getSeconds()).length == 1? "0"+self.getSeconds() : self.getSeconds(); } function t() { var daysinmonths = [null,31,28,31,30,31,30,31,31,30,31,30,31]; if (L()==1 && n()==2) return 29; return daysinmonths[n()]; } function U() { return Math.round(self.getTime()/1000); } function W() { var beforeNY = 364+L() - z(); var afterNY = z(); var weekday = w()!=0?w()-1:6; if (beforeNY <= 2 && weekday <= 2-beforeNY) { return 1; } var ny = new Date("January 1 " + Y() + " 00:00:00"); var nyDay = ny.getDay()!=0?ny.getDay()-1:6; if ( (afterNY <= 2) && (nyDay >=4) && (afterNY >= (6-nyDay)) ) { var prevNY = new Date("December 31 " + (Y()-1) + " 00:00:00"); return prevNY.formatDate("W"); } if (nyDay <= 3) { return 1 + Math.floor( ( z() + nyDay ) / 7 ); } else { return 1 + Math.floor( ( z() - ( 7 - nyDay ) ) / 7 ); } } function w() { return self.getDay(); } function Y() { if (self.getFullYear) { var newDate = new Date("January 1 2001 00:00:00 +0000"); var x = newDate .getFullYear(); if (x == 2001) { return self.getFullYear(); } } var x = self.getYear(); var y = x % 100; y += (y < 38) ? 2000 : 1900; return y; } function y() { var y = Y()+""; return y.substring(y.length-2,y.length); } function z() { var t = new Date("January 1 " + Y() + " 00:00:00"); var diff = self.getTime() - t.getTime(); return Math.floor(diff/1000/60/60/24); } var self = new Date() self.setTime(this.getTime()); if (time) { var prevTime = self.getTime(); self.setTime(time); } var ia = input.split(""); var ij = 0; while (ia[ij]) { if (ia[ij] == "\\") { ia.splice(ij,1); } else { if (switches.exists(ia[ij])) { ia[ij] = eval(ia[ij] + "()"); } } ij++; } if (prevTime) { self.setTime(prevTime); } return ia.join(""); } String.prototype.formatISODate = function (definition) { if(definition){ var monthsShort = ["", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; var monthsLong = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; var daysSuffix = ["st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "th", "st", "nd", "rd", "th", "th", "th", "th", "th", "th", "th", "st"]; var str = ''; var theSplit = definition.split(''); var theYear = this.substring(0,4); var theMonth = this.substring(5,7); var theDate = this.substring(8,10); var theTime = this.substring(11,17); var theHours = theTime.substring(0,2); var theMinutes = theTime.substring(3,5); for(var i=0; i 11) ? str += "p" : str += "a"; break; case "a" : (parseInt(theHours) > 11) ? str += "pm" : str += "am"; break; case "A" : (parseInt(theHours) > 11) ? str += "PM" : str += "AM"; break; case "d" : str += theDate; break; case "F": str += monthsLong[parseInt(theMonth, 10)]; break; case "g": hoursInt = parseInt(theHours, 10); (hoursInt <= 12) ? ((hoursInt < 1)?str += 12 : str += hoursInt ): str += hoursInt-12; break; case "G": hoursInt = parseInt(theHours, 10); str += hoursInt; break; case "h": hoursInt = parseInt(theHours, 10); (hoursInt <= 12) ? ((hoursInt < 1)?str += 12 :str += theHours ): ((hoursInt-12) < 10) ? str += "0" + hoursInt-12: str += hoursInt-12; break; case "H": str += theHours; break; case "i": str += theMinutes; break; case "j": dateInt = parseInt(theDate, 10); str += dateInt; break; case "m": monthInt = parseInt(theMonth, 10); monthInt = monthInt + 1; (monthInt < 10 )? str += "0" + monthInt : str += monthInt; break; case "M": str += monthsShort[parseInt(theMonth, 10)]; break; case "n": monthInt = parseInt(theMonth, 10); monthInt = monthInt + 1; str += monthInt; break; case "Y": str += theYear; break; case "y": str += theYear.substring(2,4); break; case "/": str += theSplit[i+1]; i = i+1; break; default: str += theSplit[i]; break; } } return str }else{ return this } } Date.prototype.copy = function () { return new Date(this.getTime()); }; Date.prototype.addDays = function(days) { this.setDate(this.getDate() + days); }; Date.prototype.addMonths = function(months) { this.setMonth(this.getMonth() + months); }; Date.prototype.addYears = function(years) { var thisMonth = this.getMonth(); this.setFullYear(this.getFullYear() + years); var newMonth = this.getMonth(); if (thisMonth < newMonth) { this.addDays(this.getDate() * -1); } }; /* File: /validation.js */ function isEmpty(obj) { for (var n in obj) { return false; } return true; } function isValidAddress(anElement,displayName) { var aValue = anElement.value; var mikExp1 = /^([a-zA-Z0-9_]|[-.',\/#&]|[ \s\t\n\r\f\v])+$/; var results = aValue.search(mikExp1); if(aValue == null || aValue.length == 0){ alert(displayName + " is a required field"); return false; } if(results == -1) { alert("Your "+displayName+" address contains invalid characters. Please try again."); anElement.focus(); return false; }else{return true;} } function isValidCity(anElement,displayName) { var aValue = anElement.value; var mikExp1 = /^([a-zA-Z]|[-,'.]|[ \s\t\n\r\f\v])+$/; var results = aValue.search(mikExp1); if(aValue == null || aValue.length == 0){ alert(displayName + " is a required field"); return false; } if(results == -1) { alert("Please enter a valid city"); anElement.focus(); return false; }else{return true;} } function validCharacter_EntryRequired(anElement,displayName) { var aValue = anElement.value; var mikExp1 = /^([a-zA-Z]|[- ']|[ \s\t\n\r\f\v])+$/; var results = aValue.search(mikExp1); if(aValue == null || aValue.length == 0){ alert("Please enter a "+displayName); return false; } if(results == -1) { alert("There are invalid characters in the "+displayName+". Aside from letters, please use only hyphens, spaces and apostrophes."); anElement.focus(); return false; } else{return true;} } function validCharacter(anElement,displayName) { var aValue = anElement.value; if(aValue == null || aValue == ''){return true;} var mikExp1 = /^([a-zA-Z]|[- ']|[ \s\t\n\r\f\v])+$/; var results = aValue.search(mikExp1); if(results == -1) { alert("There are invalid characters in the "+displayName+". Aside from letters, please use only hyphens, spaces and apostrophes."); anElement.focus(); return false; } else{return true;} } function validNumber(anElement,errorMsg) { var aValue = anElement.value; var mikExp1 = /^([\d])+$/; var results = aValue.search(mikExp1); if(anElement.value == null || anElement.value == ''){ if(errorMsg != ''){alert(errorMsg);} anElement.focus(); return false; } if(results == -1) { if(errorMsg != ''){alert(errorMsg);} anElement.focus(); return false; }else{return true;} } function validFFProgramNumber(anElement,errorMsg) { if(anElement.value == null || anElement.value == ''){ return true; } var aValue = anElement.value; var mikExp1 = /^([\d]|[a-zA-Z0-9])+$/; var results = aValue.search(mikExp1); if(results == -1) { alert(errorMsg); anElement.focus(); return false; }else{return true;} } function isValidEmail(anElement){ if(!validateEmail(anElement)){ alert("Please enter a valid email address (e.g. jane.doe@my-email.com or john_doe@johndoe.com)"); return false; } else{ return true; } } function validateEmail(anElement) { var emailAddress = anElement.value; var regExp = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/; return emailAddress.match(regExp); } function getFirstNumber(str){ var re = new RegExp(/\d/); var m = re.exec(str); if (m == null) {return -1;} var num = str.substr(m.index,str.length); return parseInt(num); } function getSecondNumber(str){ var re = new RegExp(/\d[_]\d/); var m = re.exec(str); if (m == null) {return -1;} return str.substr(m.index+2,str.length); } function getGreatestLastIndex(elementArray,substring){ var lastIndex = 0; var re = new RegExp(/[_]\d/); for(var j = 0; j < elementArray.length; j++){ if(elementArray[j].name.substr(0,substring.length) == substring){ var aName = elementArray[j].name; var m = re.exec(aName); var num = aName.substr(m.index+1,aName.length); if(parseInt(num) > lastIndex){ lastIndex = num; } } } return lastIndex; } function filter_HTML_JScript_All(elementArray){ var isError = false; for(var k = 0; k < elementArray.length; k++){ if(elementArray[k].value != null){ var oldStr = elementArray[k].value; if(oldStr != null && oldStr.length > 0){ var aValue = filter_HTML_JScript_Out(elementArray[k].value); elementArray[k].value = aValue; if(oldStr!=aValue){isError = true;} } } } return true; } function filter_HTML_JScript_Out(str) { var oldstr = ""; while(str != oldstr){ oldstr = str; str = str.replace( /[Jj]avascript/ , "" ); // remove string str = str.replace( /[Aa]lert/ , "" ); // remove string str = str.replace( /[Ss]cript/ , "" ); // remove string str = str.replace(/[\"]/, "" ); // strip left html tag str = str.replace(/[<]/, "" ); // strip left html tag str = str.replace(/[>]/, "" ); // strip right html tag str = str.replace(/[%]/, "" ); // strip all tag str = str.replace(/[=]/, "" ); // strip equal signs str = str.replace(/[;]/, "" ); // strip semicolon } str = str.replace(/^\s+/,""); // START str = str.replace(/\s+$/,""); // END return str; } function trimString(anElement,displayName) { var oldStr = anElement.value; var sInString = anElement.value; if(sInString == null || sInString == ''){return true;} sInString = sInString.replace(/^\s+/,""); // START sInString = sInString.replace(/\s+$/,""); // END if(oldStr != sInString){ alert("Please remove the trailing or leading whitespace from field "+displayName+"."); return false; } else{ return true; } } function groupFilledCheck_SMatch( elementArray , subStringArray, errorMsg){ var numCtr = subStringArray.length; var groupCtr = new Array(); for(j = 0; j < elementArray.length; j++){ var aName = elementArray[j].name; var index = getFirstNumber(aName); if(index == -1){continue;} var numDigits = (index+"").length; for(k = 0; k < subStringArray.length; k++){ if( subStringArray[k] == aName.substr( 0, aName.length-numDigits ) ){ if(elementArray[j].value != null && elementArray[j].value.length > 0){ if(groupCtr[index] == null){groupCtr[index] = 1;} else{groupCtr[index]++;} } } } } for(j = 0; j < groupCtr.length; j++){ if(groupCtr[j] != null){ if(numCtr != groupCtr[j] && groupCtr[j] != 0){ alert(errorMsg); return false; } } } return true; } function countgroup_SMatch( elementArray , subStringArray){ var numCtr = subStringArray.length; var groupCtr = new Array(); var result = 0; for(j = 0; j < elementArray.length; j++){ var aName = elementArray[j].name; var index = getFirstNumber(aName); if(index == -1){continue;} var numDigits = (index+"").length; for(k = 0; k < subStringArray.length; k++){ if( subStringArray[k] == aName.substr( 0, aName.length-numDigits ) ){ if(elementArray[j].value != null && elementArray[j].value.length > 0){ if(groupCtr[index] == null){groupCtr[index] = 1;} else{groupCtr[index]++;} } } } } for(j = 0; j < groupCtr.length; j++){ if(groupCtr[j] != null){ if(numCtr == groupCtr[j]){result++;} } } return result; } function groupFilledCheckRequired( elementArray , nameArray, errorMsg){ var numCtr = nameArray.length; var tupCtr = 0; for(j = 0; j < elementArray.length; j++){ var aName = elementArray[j].name; for(k = 0; k < nameArray.length; k++){ if(elementArray[j].value != null){ if( nameArray[k] == aName && elementArray[j].value.length > 0 ){ tupCtr++; } } } } if(numCtr != tupCtr ){ alert(errorMsg); return false; } return true; } function groupFilledCheck( elementArray , nameArray, errorMsg){ var numCtr = nameArray.length; var tupCtr = 0; for(j = 0; j < elementArray.length; j++){ var aName = elementArray[j].name; for(k = 0; k < nameArray.length; k++){ if(elementArray[j].value != null){ if( nameArray[k] == aName && elementArray[j].value.length > 0 ){ tupCtr++; } } } } if(numCtr != tupCtr && tupCtr != 0){ alert(errorMsg); return false; } return true; } function groupFilledCheck_SMatch_WithSymbol( elementArray ,subString_1, subString_2 , errorMsg){ for(j = 0; j < elementArray.length; j++){ var aName = elementArray[j].name; var index = getSecondNumber(aName); if(index == -1){continue;} var numDigits = aName.substr(index,aName.length).length; if( subString_1 == aName.substr( 0, aName.length-numDigits ) ){ if(elementArray[j].value != null && elementArray[j].value.length > 0){ for(m = 0; m < elementArray.length; m++){ var aName2 = elementArray[m].name; var index2 = getSecondNumber(aName2); if(index2 == -1){continue;} var numDigits2 = aName2.substr(index2,aName2.length).length; if(subString_2 == aName2.substr(0,aName2.length - numDigits2)){ if( aName.substr( subString_1.length , aName.length ) == aName2.substr( subString_2.length , aName2.length)){ if(elementArray[m].value == null ){ alert(errorMsg); return false; } if(elementArray[m].value.length == 0){ alert(errorMsg); return false; } } } } } } } return true; } function isEmptyOrNullValue(anElement,displayName){ var aValue = anElement.value; if(aValue == null || aValue.length == 0){ if(anElement.tagName == 'SELECT' ){ alert("Please select a "+displayName); return true; } alert("Please enter a "+displayName); return true; } return false; } function minimumLengthConstraint(requiredLength,anElement,displayName){ var validateFld = anElement.value; if(validateFld == null){ alert(displayName + " is a required field"); return false; } if(validateFld.length < requiredLength){ alert(displayName+" must be at least "+(requiredLength)+" characters long."); anElement.focus(); return false; } return true; } function lengthConstraint(requiredLength,anElement,errorMsg){ var validateFld = anElement.value; if(validateFld == null || validateFld.length != requiredLength){ if(errorMsg != ''){alert(errorMsg);} anElement.focus(); return false; } return true; } function isMatch(element_1 ,element_2, displayName){ if(element_1.value.length != element_2.value.length){ alert(displayName+" fields are not the same length."); return false; } if(element_1.value != element_2.value){ alert(displayName+" fields do not match."); return false; } return true; } function emptyFieldsCheck_NoError( elementArray , nameArray){ var numCtr = nameArray.length; var tupCtr = 0; for(j = 0; j < elementArray.length; j++){ var aName = elementArray[j].name; for(k = 0; k < nameArray.length; k++){ if(elementArray[j].value != null){ if( nameArray[k] == aName && elementArray[j].value.length > 0 ){tupCtr++;} } } } if( tupCtr == 0){return false;} return true; } function hasExpired(aMonth, aYear){ aMonth = aMonth - 1; var curDate = new Date(); var dateEntered = new Date(); dateEntered.setFullYear(aYear,aMonth,1); if(dateEntered < curDate){ alert("The card you entered has expired."); return true; } return false; } function isEighteenOrOlder(aDay, aMonth, aYear){ aMonth = aMonth - 1; var atleastThisOld = new Date(); atleastThisOld.setFullYear((new Date()).getFullYear()-18); var dateEntered = new Date(); dateEntered.setFullYear(aYear,aMonth,aDay); if(dateEntered > atleastThisOld){ alert("Thank you for your interest in our site but we are unable to accept your registration at this time"); return false; } return true; } function isNumber(a) { a = parseInt(a); return (typeof a == 'number') && isFinite(a); } var phoneLengthError = "Please enter a complete phone number (e.g. 206 555 5555)."; var phoneNumberError = "Please enter only numbers into the phone fields."; var zipLengthError = "Please enter a complete zip code(e.g. 90210)."; var zipNumberError = "Please enter a valid zip code(e.g. 90210)."; var cardError = "Please enter a valid credit card number (e.g. 16 numbers)."; function validNewUser(newUserForm) { doDisableElement(false, document.getElementById('submitbutton')); if(newUserForm.password.value != filter_HTML_JScript_Out(newUserForm.password.value)){ newUserForm.password.value = ""; newUserForm.password1.value = ""; s.sendFormEvent('e','create_account',newUserForm.name, 'password'); alert("You have entered an invalid keyword, or one of the following invalid symbols < > % = ;"); return false; } if(newUserForm.password1.value != filter_HTML_JScript_Out(newUserForm.password1.value)){ newUserForm.password.value = ""; newUserForm.password1.value = ""; s.sendFormEvent('e','create_account',newUserForm.name, 'password1'); alert("You have entered an invalid keyword, or one of the following invalid symbols < > % = ;"); return false; } var elementArray = newUserForm.elements; if(false == filter_HTML_JScript_All(elementArray)){return false;} if( isEmptyOrNullValue(newUserForm.homePort,"home airport")){ s.sendFormEvent('e','create_account',newUserForm.name, 'homePort'); return false; } if( isEmptyOrNullValue(newUserForm.email,"email address")){ s.sendFormEvent('e','create_account',newUserForm.name, 'email'); return false; } if( !isValidEmail(newUserForm.email)){ s.sendFormEvent('e','create_account',newUserForm.name, 'email'); return false; } if( newUserForm.password.value.length < 6){ s.sendFormEvent('e','create_account',newUserForm.name, 'password'); alert("Passwords must be 6 to 20 characters in length"); return false; } if( newUserForm.password.value != newUserForm.password1.value){ s.sendFormEvent('e','create_account',newUserForm.name, 'password1'); alert("Please make sure your confirmed password matches your initial password entry"); return false; } doDisableElement(true, document.getElementById('submitbutton')); s.sendFormEvent('s','create_account',newUserForm.name); return true; } function validNewMiniUser(new_mini_user_action_form){ var elementArray = new_mini_user_action_form.elements; if(false == filter_HTML_JScript_All(elementArray)){ s.sendFormEvent('e','home',new_mini_user_action_form.name, 'HTML or JavaScript in text'); return false; } var errorMsg = 'Please enter your email address and select a home airport in order to submit your email registration.'; if( (null == new_mini_user_action_form.email.value || 0 == new_mini_user_action_form.email.value.length) && (null == new_mini_user_action_form.homeAirport.value || 0 == new_mini_user_action_form.homeAirport.value.length) ){ s.sendFormEvent('e','home',new_mini_user_action_form.name, 'empty address and home airport'); alert(errorMsg); return false; } else if( null == new_mini_user_action_form.email.value || 0 == new_mini_user_action_form.email.value.length ){ s.sendFormEvent('e','home',new_mini_user_action_form.name, 'empty email'); alert("Please enter your email address before submitting."); return false; } else if( null == new_mini_user_action_form.homeAirport.value || 0 == new_mini_user_action_form.homeAirport.value.length ){ s.sendFormEvent('e','home',new_mini_user_action_form.name, 'empty home airport'); alert("Please select the closest home airport to you."); return false; } if( false == isValidEmail(new_mini_user_action_form.email)) { s.sendFormEvent('e','home',new_mini_user_action_form.name, 'invalid email address'); return false; } s.sendFormEvent('s','home',new_mini_user_action_form.name); return true; } function validateSearchForm(form) { if (form.depPort.value.length < 1 || form.depPort.value == 'Select departure city'){ alert("Please enter a valid 'From' airport."); return false; } else if (form.destPort.value.length < 1 || form.destPort.value == 'Select destination city') { alert("Please enter a valid 'To' airport."); return false; } else if (form.depDate.value == null || form.depDate.value.length == 0) { alert("Please enter a 'Leave' date."); return false; } else if (! validDate(form.depDate)) { return false; } else if (form.retDate.value == null || form.retDate.value.length == 0) { alert("Please enter a 'Return' date."); return false; } else if (! validDate(form.retDate)) { return false; } else if (form.depPort.value == form.destPort.value){ alert("Please enter unique 'from' and 'to' airports."); return false; } var departing = parseDate(form.depDate.value); var returning = parseDate(form.retDate.value); var yesterday = new Date(); yesterday.setDate(yesterday.getDate()-1); if (departing <= yesterday) { form.retDate.value = addDays(departing, 7); alert("The depart date can't be in the past. (MM/DD/YYYY format)"); return false; } else if (returning < departing){ form.retDate.value = addDays(departing, 7); alert("The depart date can't be after the return date."); return false; } return true; } function validDate(year, month, day) { if (year >= 1970) { var aDate = new Date(year, month -1, day); if (day != aDate.getDate()) return false; if (month != (aDate.getMonth() +1)) return false; if (year != doYear(aDate.getYear())) return false; } else { if ((day < 1) || (day > 31)) return false; if ((month < 1) || (month > 12)) return false; if ((year < 1000) || (year > 3000)) return false; } if (day > 28) { if (getNumberOfDays(year, month) < day) return false; } return true; } /* File: /AjaxRequest.js */ function AjaxRequest() { var req = new Object(); req.timeout = null; req.generateUniqueUrl = true; req.url = window.location.href; req.method = "GET"; req.async = true; req.username = null; req.password = null; req.parameters = new Object(); req.requestIndex = AjaxRequest.numAjaxRequests++; req.responseReceived = false; req.groupName = null; req.queryString = ""; req.responseText = null; req.responseXML = null; req.status = null; req.statusText = null; req.aborted = false; req.xmlHttpRequest = null; req.onTimeout = null; req.onLoading = null; req.onLoaded = null; req.onInteractive = null; req.onComplete = null; req.onSuccess = null; req.onError = null; req.onGroupBegin = null; req.onGroupEnd = null; req.xmlHttpRequest = AjaxRequest.getXmlHttpRequest(); if (req.xmlHttpRequest==null) { return null; } req.xmlHttpRequest.onreadystatechange = function() { if (req==null || req.xmlHttpRequest==null) { return; } if (req.xmlHttpRequest.readyState==1) { req.onLoadingInternal(req); } if (req.xmlHttpRequest.readyState==2) { req.onLoadedInternal(req); } if (req.xmlHttpRequest.readyState==3) { req.onInteractiveInternal(req); } if (req.xmlHttpRequest.readyState==4) { req.onCompleteInternal(req); } }; req.onLoadingInternalHandled = false; req.onLoadedInternalHandled = false; req.onInteractiveInternalHandled = false; req.onCompleteInternalHandled = false; req.onLoadingInternal = function() { if (req.onLoadingInternalHandled) { return; } AjaxRequest.numActiveAjaxRequests++; if (AjaxRequest.numActiveAjaxRequests==1 && typeof(window['AjaxRequestBegin'])=="function") { AjaxRequestBegin(); } if (req.groupName!=null) { if (typeof(AjaxRequest.numActiveAjaxGroupRequests[req.groupName])=="undefined") { AjaxRequest.numActiveAjaxGroupRequests[req.groupName] = 0; } AjaxRequest.numActiveAjaxGroupRequests[req.groupName]++; if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==1 && typeof(req.onGroupBegin)=="function") { req.onGroupBegin(req.groupName); } } if (typeof(req.onLoading)=="function") { req.onLoading(req); } req.onLoadingInternalHandled = true; }; req.onLoadedInternal = function() { if (req.onLoadedInternalHandled) { return; } if (typeof(req.onLoaded)=="function") { req.onLoaded(req); } req.onLoadedInternalHandled = true; }; req.onInteractiveInternal = function() { if (req.onInteractiveInternalHandled) { return; } if (typeof(req.onInteractive)=="function") { req.onInteractive(req); } req.onInteractiveInternalHandled = true; }; req.onCompleteInternal = function() { if (req.onCompleteInternalHandled || req.aborted) { return; } req.onCompleteInternalHandled = true; AjaxRequest.numActiveAjaxRequests--; if (AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function") { AjaxRequestEnd(req.groupName); } if (req.groupName!=null) { AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--; if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function") { req.onGroupEnd(req.groupName); } } req.responseReceived = true; try { req.status = req.xmlHttpRequest.status; } catch(E) { return null; } req.statusText = req.xmlHttpRequest.statusText; req.responseText = req.xmlHttpRequest.responseText; req.responseXML = req.xmlHttpRequest.responseXML; if (typeof(req.onComplete)=="function") { req.onComplete(req); } if (req.xmlHttpRequest.status==200 && typeof(req.onSuccess)=="function") { req.onSuccess(req); } else if (typeof(req.onError)=="function") { req.onError(req); } delete req.xmlHttpRequest['onreadystatechange']; req.xmlHttpRequest = null; }; req.onTimeoutInternal = function() { if (req!=null && req.xmlHttpRequest!=null && !req.onCompleteInternalHandled) { req.aborted = true; req.xmlHttpRequest.abort(); AjaxRequest.numActiveAjaxRequests--; if (AjaxRequest.numActiveAjaxRequests==0 && typeof(window['AjaxRequestEnd'])=="function") { AjaxRequestEnd(req.groupName); } if (req.groupName!=null) { AjaxRequest.numActiveAjaxGroupRequests[req.groupName]--; if (AjaxRequest.numActiveAjaxGroupRequests[req.groupName]==0 && typeof(req.onGroupEnd)=="function") { req.onGroupEnd(req.groupName); } } if (typeof(req.onTimeout)=="function") { req.onTimeout(req); } delete req.xmlHttpRequest['onreadystatechange']; req.xmlHttpRequest = null; } }; req.process = function() { if (req.xmlHttpRequest!=null) { if (req.generateUniqueUrl && req.method=="GET") { req.parameters["AjaxRequestUniqueId"] = new Date().getTime() + "" + req.requestIndex; } var content = null; for (var i in req.parameters) { if (req.queryString.length>0) { req.queryString += "&"; } req.queryString += encodeURIComponent(i) + "=" + encodeURIComponent(req.parameters[i]); } if (req.method=="GET") { if (req.queryString.length>0) { req.url += ((req.url.indexOf("?")>-1)?"&":"?") + req.queryString; } } req.xmlHttpRequest.open(req.method,req.url,req.async,req.username,req.password); if (req.method=="POST") { if (typeof(req.xmlHttpRequest.setRequestHeader)!="undefined") { req.xmlHttpRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); } content = req.queryString; } if (req.timeout>0) { setTimeout(req.onTimeoutInternal,req.timeout); } req.xmlHttpRequest.send(content); } }; req.handleArguments = function(args) { for (var i in args) { if (typeof(req[i])=="undefined") { req.parameters[i] = args[i]; } else { req[i] = args[i]; } } }; req.getAllResponseHeaders = function() { if (req.xmlHttpRequest!=null) { if (req.responseReceived) { return req.xmlHttpRequest.getAllResponseHeaders(); } alert("Cannot getAllResponseHeaders because a response has not yet been received"); } }; req.getResponseHeader = function(headerName) { if (req.xmlHttpRequest!=null) { if (req.responseReceived) { return req.xmlHttpRequest.getResponseHeader(headerName); } alert("Cannot getResponseHeader because a response has not yet been received"); } }; return req; } AjaxRequest.getXmlHttpRequest = function() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else if (window.ActiveXObject) { /*@cc_on @*/ /*@if (@_jscript_version >= 5) try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { return null; } } @end @*/ } else { return null; } }; AjaxRequest.isActive = function() { return (AjaxRequest.numActiveAjaxRequests>0); }; AjaxRequest.get = function(args) { AjaxRequest.doRequest("GET",args); }; AjaxRequest.post = function(args) { AjaxRequest.doRequest("POST",args); }; AjaxRequest.doRequest = function(method,args) { if (typeof(args)!="undefined" && args!=null) { var myRequest = new AjaxRequest(); myRequest.method = method; myRequest.handleArguments(args); myRequest.process(); } } ; AjaxRequest.submit = function(theform, args) { var myRequest = new AjaxRequest(); if (myRequest==null) { return false; } var serializedForm = AjaxRequest.serializeForm(theform); myRequest.method = theform.method.toUpperCase(); myRequest.url = theform.action; myRequest.handleArguments(args); myRequest.queryString = serializedForm; myRequest.process(); return true; }; AjaxRequest.serializeForm = function(theform) { var els = theform.elements; var len = els.length; var queryString = ""; this.addField = function(name,value) { if (queryString.length>0) { queryString += "&"; } queryString += encodeURIComponent(name) + "=" + encodeURIComponent(value); }; for (var i=0; i=0) { this.addField(el.name,el.options[el.selectedIndex].value); } break; case 'select-multiple': for (var j=0; j slider2.getValue(0))?slider1.getValue(0):slider2.getValue(0); } function changeElementClass(id, addClass, removeClass){ var el = document.getElementById(id); if(el){ if(!el.className){ el.className = ""; } var className = el.className; className = className.replace(removeClass, ''); if(className.indexOf(addClass) < 0){ className = className + ' ' + addClass; } className = className.replace(/\s\s+/g, ' '); className = className.replace(/^\s*|\s*$/g,""); el.className = className; return true; } return false; } function getElementsByClassName(argClassName, argTagName) { var reClassMatch = new RegExp("(^| )" + argClassName + "( |$)"); var aResult = new Array(); var sTagName = "*"; if (argTagName) sTagName = argTagName; var aEls = document.getElementsByTagName(sTagName); for (var iEl=0; iEl < aEls.length; iEl++){ if (reClassMatch.test(aEls[iEl].className)){ aResult[aResult.length] = aEls[iEl]; } } if (aResult.length == 0) aResult = null; return aResult; } function showDialog() { var dialogEl = document.getElementById("dialog"); if(dialogEl){ dialogEl.style.display = "block"; } } function hideDialog() { var dialogEl = document.getElementById("dialog"); if(dialogEl){ dialogEl.style.display = "none"; } } function writeToDialog(str) { var dialogEl = document.getElementById("dialog"); if(dialogEl){ dialogEl.innerHTML = str; } } function drawInnerHTML(elId, str){ var el = document.getElementById(elId); if(el){ el.innerHTML = str; } } function getAirlineByCode(code){ for(var i=0; i= theIntervals[i].begin) && (theTime <= theIntervals[i].end)){ return theIntervals[i] } } return {name: "Unknown"}; } function getIntervalIndex(theTime){ for(var i=0; i 0){ theAirports[i].dest.sort(sortDestAirports); } } } function sortDestAirports(a, b){ if(theAirports[a].city < theAirports[b].city){return -1} if(theAirports[a].city > theAirports[b].city){return 1} return 0; } function sortAirports(a, b){ return a.id - b.id; } function initIntervals(){ for(var i=0; i returning || returning == null || returning == "" || returning == "Invalid Date") { departing.setDate(departing.getDate() + 7); $retDate.val(departing.formatDate("m/d/Y")); } return true; } catch (e) { } } function adjustFarecastDates(theType, theField){ try { if(self.gfPop){ switch (theType){ case "ret": var baseDate1 = new Date(theField.value); var baseDate2 = new Date(theField.value); if(gfPop._startDateDefault <= baseDate1) { baseDate1.setDate(baseDate1.getDate()+2); endDateDefaultTester = new Date(gfPop._endDateDefault.getTime()) endDateDefaultTester.setDate(endDateDefaultTester.getDate() + 8); if (baseDate1 <= endDateDefaultTester) { gfPop._startDate = baseDate1; baseDate2.setDate(baseDate2.getDate()+8); if (baseDate2 <= endDateDefaultTester) { gfPop._endDate = baseDate2; } else { gfPop._endDate = gfPop._endDate; } } else { gfPop._endDate = new Date(0); } }else{ gfPop._endDate = new Date(0); } break; case "dep": gfPop._startDate = gfPop._startDateDefault; gfPop._endDate = gfPop._endDateDefault; break; case "non": gfPop._startDate = new Date(0); gfPop._endDate = new Date(0); break; } } } catch (Exception) { } } /* File: /forms/forms.js */ var cookieExpires = 365; function setCookie() { $.cookie('origPort', '', {expires: -1}); $.cookie('destPort', '', {expires: -1}); $.cookie('depDate', '', {expires: -1}); $.cookie('retDate', '', {expires: -1}); $.cookie('passengers', '', {expires: -1}); $.cookie('cabin', '', {expires: -1}); switch(getCurrentFormName()) { case "RT": $.cookie('origPort', document.getElementById("o_rt").value, {expires: cookieExpires}); $.cookie('destPort', document.getElementById("e_rt").value, {expires: cookieExpires}); $.cookie('depDate', document.getElementById("d1_rt").value, {expires: cookieExpires}); $.cookie('retDate', document.getElementById("r1_rt").value, {expires: cookieExpires}); $.cookie('passengers', document.getElementById("p_rt").value, {expires: cookieExpires}); $.cookie('cabin', document.getElementById("b_rt").value, {expires: cookieExpires}); break; case "OW": $.cookie('origPort', document.getElementById("o1_ow").value, {expires: cookieExpires}); $.cookie('destPort', document.getElementById("e1_ow").value, {expires: cookieExpires}); $.cookie('depDate', document.getElementById("dm1_ow").value, {expires: cookieExpires}); $.cookie('passengers', document.getElementById("p_ow").value, {expires: cookieExpires}); $.cookie('cabin', document.getElementById("b_ow").value, {expires: cookieExpires}); break; case "MC": $.cookie('origPort', document.getElementById("o1_mc").value, {expires: cookieExpires}); $.cookie('destPort', document.getElementById("e1_mc").value, {expires: cookieExpires}); $.cookie('depDate', document.getElementById("dm1_mc").value, {expires: cookieExpires}); $.cookie('retDate', document.getElementById("dm2_mc").value, {expires: cookieExpires}); $.cookie('passengers', document.getElementById("p_mc").value, {expires: cookieExpires}); $.cookie('cabin', document.getElementById("b_mc").value, {expires: cookieExpires}); break; default: break; } return true; } function switchFormlet(type) { syncFields(); resetFormlets(); $('#'+type).show(); $('#'+type+'_radio').parent().addClass('highlighted'); return false; } function resetFormlets() { $('#RT').hide(); $('#OW').hide(); $('#MC').hide(); $('#RT_radio').parent().removeClass(); $('#OW_radio').parent().removeClass(); $('#MC_radio').parent().removeClass(); } var stageCounter = 3; function addStage() { stageCounter++; if(stageCounter<=6) { $('#stage'+stageCounter).show(); } if(stageCounter>=6) { $('#addLink').hide(); } return false; } function getCurrentFormName() { if ($('#RT').css('display')!='none') { return 'RT'; } if ($('#OW').css('display')!='none') { return 'OW'; } if ($('#MC').css('display')!='none') { return 'MC'; } return ""; } function syncFields(form) { switch(getCurrentFormName()) { case "RT": document.getElementById("o1_ow").value = document.getElementById("o_rt").value; document.getElementById("o1_mc").value = document.getElementById("o_rt").value; document.getElementById("o1_owText").value = document.getElementById("o_rtText").value; document.getElementById("o1_mcText").value = document.getElementById("o_rtText").value; document.getElementById("e1_ow").value = document.getElementById("e_rt").value; document.getElementById("e1_mc").value = document.getElementById("e_rt").value; document.getElementById("e1_owText").value = document.getElementById("e_rtText").value; document.getElementById("e1_mcText").value = document.getElementById("e_rtText").value; document.getElementById("dm1_ow").value = document.getElementById("d1_rt").value; document.getElementById("dm1_mc").value = document.getElementById("d1_rt").value; document.getElementById("b_ow").value = document.getElementById("b_rt").value; document.getElementById("b_mc").value = document.getElementById("b_rt").value; document.getElementById("p_ow").value = document.getElementById("p_rt").value; document.getElementById("p_mc").value = document.getElementById("p_rt").value; if($('#compareWithTRV_rt').attr("checked")){ $('#compareWithTRV_ow').attr("checked", true); }else{ $('#compareWithTRV_ow').attr("checked", false); } if($('#compareWithEXP_rt').attr("checked")){ $('#compareWithEXP_ow').attr("checked", true); }else{ $('#compareWithEXP_ow').attr("checked", false); } if($('#compareWithPRI_rt').attr("checked")){ $('#compareWithPRI_ow').attr("checked", true); }else{ $('#compareWithPRI_ow').attr("checked", false); } if($('#compareWithEXPH_rt').attr("checked")){ $('#compareWithEXPH_ow').attr("checked", true); }else{ $('#compareWithEXPH_ow').attr("checked", false); } break; case "OW": document.getElementById("o_rt").value = document.getElementById("o1_ow").value; document.getElementById("o1_mc").value = document.getElementById("o1_ow").value; document.getElementById("o_rtText").value = document.getElementById("o1_owText").value; document.getElementById("o1_mcText").value = document.getElementById("o1_owText").value; document.getElementById("e_rt").value = document.getElementById("e1_ow").value; document.getElementById("e1_mc").value = document.getElementById("e1_ow").value; document.getElementById("e_rtText").value = document.getElementById("e1_owText").value; document.getElementById("e1_mcText").value = document.getElementById("e1_owText").value; document.getElementById("d1_rt").value = document.getElementById("dm1_ow").value; document.getElementById("dm1_mc").value = document.getElementById("dm1_ow").value; document.getElementById("b_rt").value = document.getElementById("b_ow").value; document.getElementById("b_mc").value = document.getElementById("b_ow").value; document.getElementById("p_rt").value = document.getElementById("p_ow").value; document.getElementById("p_mc").value = document.getElementById("p_ow").value; if($('#compareWithTRV_ow').attr("checked")){ $('#compareWithTRV_rt').attr("checked", true); }else{ $('#compareWithTRV_rt').attr("checked", false); } if($('#compareWithEXP_ow').attr("checked")){ $('#compareWithEXP_rt').attr("checked", true); }else{ $('#compareWithEXP_rt').attr("checked", false); } if($('#compareWithPRI_ow').attr("checked")){ $('#compareWithPRI_rt').attr("checked", true); }else{ $('#compareWithPRI_rt').attr("checked", false); } if($('#compareWithEXPH_ow').attr("checked")){ $('#compareWithEXPH_rt').attr("checked", true); }else{ $('#compareWithEXPH_rt').attr("checked", false); } break; case "MC": document.getElementById("o1_ow").value = document.getElementById("o1_mc").value; document.getElementById("o_rt").value = document.getElementById("o1_mc").value; document.getElementById("o1_owText").value = document.getElementById("o1_mcText").value; document.getElementById("o_rtText").value = document.getElementById("o1_mcText").value; document.getElementById("e1_ow").value = document.getElementById("e1_mc").value; document.getElementById("e_rt").value = document.getElementById("e1_mc").value; document.getElementById("e1_owText").value = document.getElementById("e1_mcText").value; document.getElementById("e_rtText").value = document.getElementById("e1_mcText").value; document.getElementById("dm1_ow").value = document.getElementById("dm1_mc").value; document.getElementById("d1_rt").value = document.getElementById("dm1_mc").value; document.getElementById("b_ow").value = document.getElementById("b_mc").value; document.getElementById("b_rt").value = document.getElementById("b_mc").value; document.getElementById("p_ow").value = document.getElementById("p_mc").value; document.getElementById("p_rt").value = document.getElementById("p_mc").value; break; default: break; } return false; } function clearMCStages() { for(var i=2; i<=6; i++) { $('.o'+i+'Text').get(0).value = ''; $('.o'+i).get(0).value = ''; $('.e' + i + 'Text').get(0).value = ''; $('.e' + i).get(0).value = ''; $('.dm' + i).get(0).value = ''; } } function doCompareWith (theForm, errors, slot){ compareWithClass = "compareWithCheckbox"; var aPopupBlocked = false; var partnerBlocked = false; if(typeof slot == 'undefined'){slot='www.homepagePartner';} switch(getCurrentFormName()){ case "RT": var compareWithURL = [ '/bookingAssistant.do?', 'p=', $(theForm).find('.p').val(), '&b=', $(theForm).find('.b').val(), '&o=', $(theForm).find('.o1').val(), '&e=', $(theForm).find('.e1').val(), '&d1=', $(theForm).find('.dm1').val(), '&r1=', $(theForm).find('.r1').val(), '&slot=', slot, '&channel=site-live' ].join(''); break; case "OW": var compareWithURL = [ '/bookingAssistant.do?', 'p=', $(theForm).find('.p').val(), '&b=', $(theForm).find('.b').val(), '&o1=', $(theForm).find('.o1').val(), '&e1=', $(theForm).find('.e1').val(), '&dm1=', $(theForm).find('.dm1').val(), '&slot=', slot, '&channel=site-live' ].join(''); var outDate = $(theForm).find('.dm1').val(); try{ var inDate = new Date($(theForm).find('.dm1').val()); inDate.setDate(inDate.getDate()+2); outDate = (inDate.getMonth()+1) + '/' + inDate.getDate() + '/' + inDate.getFullYear(); }catch(e){ void(0); } break; default: return false; } var compareWithCookieStr = "_"; $(theForm).find('.' + compareWithClass).each(function(i){ if($(this).attr("checked")){ for(var i=0; i -1 || category.indexOf('hotelDetails') > -1 || category.indexOf('HHBA_') > -1 || category.indexOf('HOBA_') > -1) { o.linkTrackEvents='event20'; o.events='event20'; } else { o.linkTrackEvents='event8'; o.events='event8'; } o.linkTrackVars='eVar22,eVar23,events'; o.eVar22=category; o.eVar23=position; var lt=obj.href!=null?o.lt(obj.href):""; if (lt=="") { o.tl(this,'o','Ad click'); } } function doOmniture_AdClick(omnitureObj, category, position, page) { doOmniture_AdCategory(omnitureObj, category+'_'+page); doOmniture_AdPosition(omnitureObj, position+'_'+page); doOmniture_Events(omnitureObj, 8); } function doOmniture_AdCategory(omnitureObj, value) { doEvar(omnitureObj,22,value); } function doOmniture_AdPosition(omnitureObj, value) { doEvar(omnitureObj,23,value); } function doOmniture_SearchTime(omnitureObj, value) { if (value == null) { return; } value = value/1000; if (value <= 60) { value = getGroup(value, 15) + ' s'; } else if (value <= 180) { value = '1.01-3 min'; } else if (value <= 300) { value = '3.01-5 min'; } else if (value <= 600) { value = '5.01-10 min'; } else { value = '10+ min'; } doProp(omnitureObj, 45, value); doEvar(omnitureObj, 45, value); } function doOmniture_DealsClick(obj, searchType, category) { var o=s_gi(s_account); o.linkTrackVars='eVar40,eVar47,events'; o.events='event3'; o.linkTrackEvents='event3'; o.eVar40=searchType; o.eVar47=category; o.tl(true,'o','deals_click'); } function doOmniture_Events(omnitureObj) { for (var i=1; i 0) { return element.options[element.selectedIndex].value; } else if (element.value != null) { return element.value; } else { return element; } } function getGroup(amount, range) { if (amount <= 0) { return "0"; } else if (0 < amount && amount < 0.1) { amount = 0.1; } amount = Math.round(parseInt(amount)); var low, high; var r = amount % range; if (r == 0){ low = amount - range; low += 0.01; high = amount; } else { low = amount - r; low += 0.01; high = amount + (range-r); } return low + '-' + high; } /* File: /ads/popupBlockedAlert.js */ function showPopupBlockedAlert(theForm, serialized){ $.overlay.hide({speed:0}); $.overlay.show({speed:500, opacity:.5, yOffset:25, xOffset:-25, overlayWidth:700, showClose:true, bodyWidth:750, overlay:$('#blockerHolder').html()}) if(serialized){ var action = $(theForm).attr('action') $('#blockerContainer').find('.noThanks').attr({ href : action + '?' + serialized }); }else{ $('#blockerContainer').find('.noThanks').click(function(){ $theForm = $(theForm); $theForm.find('.compareWithCheckbox').attr({"check": false}); $theForm.submit(); }); } }