function TTFareFinderComp(){TTFareFinderComp.superclass.constructor.call(this);}YAHOO.lang.extend(TTFareFinderComp,FareFinderComp);TTFareFinderComp.EXPECTED_TILE="expectedTile";TTFareFinderComp.OMNITURE_MODULE="omnitureModule";YAHOO.widget.AutoComplete.prototype.forceSelection=true;YAHOO.widget.AutoComplete.prototype._textMatchesOption=function(){var a=null;if(this._nDisplayedItems>0){a=this._elList.childNodes[0];}return(a);};YAHOO.widget.AutoComplete.prototype._clearSelection=function(){};TTFareFinderComp.prototype.TILES_TO_REFRESH={"tiles-def.homePage":["main#partners#tileName-homePageDeals#popupErrorHelperPopup"],"tiles-def.results":["ttd2c#partners#popupErrorHelperPopup","results"],"tiles-def.saving-searcher":["ttd2c#partners#popupErrorHelperPopup","xsell"]};TTFareFinderComp.prototype.BIND_TOGETHER=[{airIndexForm:"destinationCity",hotelIndexForm:"origCity",carIndexForm:"origCity",vacationIndexForm:"destinationCity"},{airIndexForm:"startDate",hotelIndexForm:"startDate",carIndexForm:"startDate",vacationIndexForm:"startDate"},{airIndexForm:"endDate",hotelIndexForm:"endDate",carIndexForm:"endDate",vacationIndexForm:"endDate"},{airIndexForm:"noOfTickets",hotelIndexForm:"noOfAdults",vacationIndexForm:"noOfAdults"},{airIndexForm:"origCity",vacationIndexForm:"origCity"}];TTFareFinderComp.prototype.NECESSARY_TO_REFRESH={airIndexForm:["destinationCity","origCity"],vacationIndexForm:["destinationCity","origCity"],hotelIndexForm:["origCity"],carIndexForm:["origCity"]};TTFareFinderComp.parseOutCity=function(a){return function(c){var d=document[c][a].value;var e=d.indexOf(",");var b=d.indexOf("(");if(e!==-1&&b!==-1){if(b<e){return d.slice(0,b);}return d.slice(0,e);}if(e!==-1){return d.slice(0,e);}return d;};};TTFareFinderComp.parseOutState=function(a){return function(c){var d=document[c][a].value;if(d.indexOf("-")===-1&&d.indexOf(",")===-1){return"";}var b=YAHOO.lang.trim(d.slice(d.indexOf(",")+1,d.indexOf("-")-1));if(d.indexOf("-")===-1){b=YAHOO.lang.trim(d.slice(d.indexOf(",")+1,d.length));}if(b.length===2){return b;}else{return"";}};};TTFareFinderComp.parseOutCityCommaState=function(a){return function(d){var e=document[d][a].value;var c=e.indexOf(",");var b=e.indexOf("-");if(c===-1){return e;}var f=YAHOO.lang.trim(e.slice(0,c));if(b===-1){return f+","+YAHOO.lang.trim(e.slice(c+1,e.length));}return f+","+YAHOO.lang.trim(e.slice(c+1,b));};};TTFareFinderComp.parseOutAirportCodeOrCityCommaState=function(a){return function(d){var e=document[d][a].value;if(e.indexOf("(")!=-1){return YAHOO.lang.trim(e.slice(e.indexOf("(")+1,e.indexOf(")")));}var c=e.indexOf(",");var b=e.indexOf("-");if(c===-1){return e;}var f=YAHOO.lang.trim(e.slice(0,c));if(b===-1){return f+","+YAHOO.lang.trim(e.slice(c+1,e.length));}return f+","+YAHOO.lang.trim(e.slice(c+1,b));};};TTFareFinderComp.parseOutCountryCode=function(a){return function(c){var d=document[c][a].value;if(d.indexOf("-")===-1&&d.indexOf(",")===-1){return"US";}var b=TTDare2CompareComp.COUNTRY_NAME_TO_COUNTRY_CODE[YAHOO.lang.trim(d.slice(d.indexOf(",")+1,d.indexOf("-")-1))];if(d.indexOf("-")===-1){b=TTDare2CompareComp.COUNTRY_NAME_TO_COUNTRY_CODE[YAHOO.lang.trim(d.slice(d.indexOf(",")+1,d.length))];}if(b!==undefined&&b.length===2){return b;}else{return"US";}};};TTFareFinderComp.parseOutAirportCodeOrCity=function(a){return function(b){var c=document[b][a].value;if(c.lastIndexOf("(")!=-1){return c.slice(c.lastIndexOf("(")+1,c.lastIndexOf(")"));}else{if(c.indexOf(",")!=-1){return c.slice(0,c.indexOf(","));}else{return c;}}};};TTFareFinderComp.parseOutTime=function(a){return function(d){var e=document[d][a].value;var b=Math.floor(e/100);var c=e-b*100;if(c===0){c="00";}return"11/11/09 "+b+":"+c;};};TTFareFinderComp.prototype.partners={};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING={};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.ORIG_AIRPORT_CODE_INDEX]={airIndexForm:TTFareFinderComp.parseOutAirportCodeOrCity("origCity"),vacationIndexForm:TTFareFinderComp.parseOutAirportCodeOrCity("origCity"),hotelIndexForm:"origCity",carIndexForm:"origCity"};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.DEST_AIRPORT_CODE_INDEX]={airIndexForm:TTFareFinderComp.parseOutAirportCodeOrCity("destinationCity"),vacationIndexForm:TTFareFinderComp.parseOutAirportCodeOrCity("destinationCity")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.START_DATE_INDEX]={airIndexForm:"startDate",hotelIndexForm:"startDate",carIndexForm:"startDate",vacationIndexForm:"startDate"};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.END_DATE_INDEX]={airIndexForm:"endDate",hotelIndexForm:"endDate",carIndexForm:"endDate",vacationIndexForm:"endDate"};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.NO_OF_ADULTS_INDEX]={airIndexForm:"noOfTickets",hotelIndexForm:"noOfAdults",vacationIndexForm:"noOfAdults"};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.NO_OF_ROOMS_INDEX]={hotelIndexForm:"numRooms"};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.START_TIME_INDEX]={carIndexForm:TTFareFinderComp.parseOutTime("startTime")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.END_TIME_INDEX]={carIndexForm:TTFareFinderComp.parseOutTime("endTime")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.CITY_NAME_INDEX]={hotelIndexForm:TTFareFinderComp.parseOutCity("origCity"),carIndexForm:TTFareFinderComp.parseOutCity("origCity")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.STATE_CODE_INDEX]={hotelIndexForm:TTFareFinderComp.parseOutState("origCity"),carIndexForm:TTFareFinderComp.parseOutState("origCity")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.COUNTRY_CODE_INDEX]={hotelIndexForm:TTFareFinderComp.parseOutCountryCode("origCity"),carIndexForm:TTFareFinderComp.parseOutCountryCode("origCity")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.CITY_STATE_INDEX]={hotelIndexForm:TTFareFinderComp.parseOutCityCommaState("origCity"),carIndexForm:TTFareFinderComp.parseOutCityCommaState("origCity")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.AIRPORT_CODE_OR_CITY_STATE_INDEX]={hotelIndexForm:TTFareFinderComp.parseOutAirportCodeOrCityCommaState("origCity"),carIndexForm:TTFareFinderComp.parseOutAirportCodeOrCityCommaState("origCity")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.ORIG_CITY_NAME_INDEX]={airIndexForm:TTFareFinderComp.parseOutCity("origCity"),vacationIndexForm:TTFareFinderComp.parseOutCity("origCity")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.DEST_CITY_NAME_INDEX]={airIndexForm:TTFareFinderComp.parseOutCity("destinationCity"),vacationIndexForm:TTFareFinderComp.parseOutCity("destinationCity")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.ORIG_STATE_CODE_INDEX]={airIndexForm:TTFareFinderComp.parseOutState("origCity"),vacationIndexForm:TTFareFinderComp.parseOutState("origCity")};TTFareFinderComp.prototype.CLIENT_SERVER_MAPPING[TTDare2CompareComp.DEST_STATE_CODE_INDEX]={airIndexForm:TTFareFinderComp.parseOutState("destinationCity"),vacationIndexForm:TTFareFinderComp.parseOutState("destinationCity")};TTFareFinderComp.prototype.init=function(){TTFareFinderComp.superclass.init.call(this);for(var b=0;b<this.BIND_TOGETHER.length;b++){this.bindFields(this.BIND_TOGETHER[b]);}for(form in this.NECESSARY_TO_REFRESH){if(this.NECESSARY_TO_REFRESH.hasOwnProperty(form)){var a=this.NECESSARY_TO_REFRESH[form];for(b=0;b<a.length;b++){YAHOO.util.Event.on(document[form][a[b]],"keyup",this.refresh,{pack:a,formName:form,tile:this[TTFareFinderComp.EXPECTED_TILE]},this);}}}};TTFareFinderComp.prototype.registerAutoComplete=function(b){TTFareFinderComp.superclass.registerAutoComplete.call(this,b);var a=this.inputId2AutoCompleteObjMap[this.resolveInputElement(b).id];a.itemSelectEvent.subscribe(function(){var c=YAHOO.util.Event.getListeners(this.getInputEl(),"change");for(i=0;i<c.length;i++){c[i].fn(c[i],c[i].obj);}c=YAHOO.util.Event.getListeners(this.getInputEl(),"keyup");for(i=0;i<c.length;i++){c[i].fn.call(c[i].adjust,c[i],c[i].obj);}},a,true);a.dataReturnEvent.subscribe(this.handleDataReturnEvent);};TTFareFinderComp.prototype.showFields=function(b,a){TTFareFinderComp.superclass.showFields.call(this,b,a);var d=YAHOO.util.Dom.getElementsByClassName(a,"form",this.domId)[0];var e=d.name;var c=TTDare2CompareComp.CODE_TO_VERTICAL[d.d2cPgoodCode.value];ValidatorSupport.clearErrors(d);this.refresh({type:"verticalSwitch"},{pack:this.NECESSARY_TO_REFRESH[e],formName:e,tile:this[TTFareFinderComp.EXPECTED_TILE]});AnalyticsSupport.logOmnitureLinkEvent({moduleName:this[TTFareFinderComp.OMNITURE_MODULE],link:"radio"+c},{});};TTFareFinderComp.prototype.bindFields=function(a){for(form in a){YAHOO.util.Event.on(document[form][a[form]],"change",TTFareFinderComp.change,{pack:a,current:form},false);}};TTFareFinderComp.change=function(d,c){for(form in c.pack){if(form!=c.current){var b=document[form][c.pack[form]];var a=document[c.current][c.pack[c.current]];preTargetElement=YAHOO.util.Dom.getPreviousSibling(b);preSourceElement=YAHOO.util.Dom.getPreviousSibling(a);if(preTargetElement&&preSourceElement&&preTargetElement.name==="isFromAutoComplete"&&preSourceElement.name==="isFromAutoComplete"){preTargetElement.value=preSourceElement.value;}b.value=a.value;}}};TTFareFinderComp.prototype.refresh=function(h,b){var j=0;for(field in b.pack){if(b.pack.hasOwnProperty(field)){var c=document[b.formName][b.pack[field]];var d=YAHOO.util.Dom.getPreviousSibling(c);if(d&&d.name==="isFromAutoComplete"&&d.value=="true"){j++;}}}if((b.pack.length==j&&h.keyCode&&(h.keyCode==13||h.keyCode==8))||(b.pack.length==j&&!h.keyCode)||h.type==="verticalSwitch"){this.getCheckedPartners();var g=this;var f=null;if(h.type!=="verticalSwitch"){f={success:function(e){AjaxSupport.defaultSuccessCallback(e);AjaxSupport.tilesReplacedEvent.subscribe(g.setCheckedPartners,g,true);}};}var a=this.TILES_TO_REFRESH[b.tile];if(YAHOO.env.ua.webkit>0){a[0]=a[0]+"#"+this.domId+"-options";}AjaxSupport.refreshTilesByFormSubmit(document[b.formName].elements[0],a,b.tile,null,f,null,null);}};TTFareFinderComp.prototype.getMappingObject=function(c){var a={};for(param in this.CLIENT_SERVER_MAPPING){var b=this.CLIENT_SERVER_MAPPING[param];formName=c.name;if(typeof b[formName]=="function"){a[param]=b[formName](formName);}else{if(document[formName][b[formName]]&&document[formName][b[formName]].value){a[param]=document[formName][b[formName]].value;}}}a[TTDare2CompareComp.RANDOM]=Math.floor(Math.random()*100000000+1000);return a;};TTFareFinderComp.prototype.getCheckedPartners=function(){var b=document.getElementById("partners").getElementsByTagName("input");for(i=0;i<b.length;i++){var a=b[i];if(a.type=="checkbox"){this.partners[a.value]=a.checked;}}};TTFareFinderComp.prototype.setCheckedPartners=function(a,b){var d=document.getElementById("partners").getElementsByTagName("input");for(i=0;i<d.length;i++){var c=d[i];if(c.type=="checkbox"){if(this.partners[c.value]!==undefined){c.checked=this.partners[c.value];CompSupport.callJsObj(c,"refreshCheckbox",c);}}}AjaxSupport.tilesReplacedEvent.unsubscribe(this.setCheckedPartners,this);};TTFareFinderComp.prototype.tryValidatorDisambiguation=function(c,d){var a=this.inputId2AutoCompleteObjMap[d.id];var e=DomSupport.getValue(d);var b=a.generateRequest(e);a.dataRequestEvent.fire(a,e,b);a.dataSource.sendRequest(b,{success:this.handleAutoCompleteResponse,failure:this.handleAutoCompleteResponse,scope:this,argument:{fieldId:d.id}});};TTFareFinderComp.prototype.handleAutoCompleteResponse=function(e,a,d){var c=document.getElementById(d.fieldId);if(a.results.length<1){ValidatorSupport.handleErrorsOnForm(c.form,[c],"autocompleteHasNoMatches",null);}else{ValidatorSupport.handleErrorsOnForm(c.form,[c],"autocompleteHasMatches",null);c.focus();var b=function(){var f=this.inputId2AutoCompleteObjMap[d.fieldId];f._populateList(e,a,d);f.setHeader("Select a location");};YAHOO.lang.later(100,this,b);}};TTFareFinderComp.prototype.handleDataReturnEvent=function(a,c){var b=c[0];var d=c[2];if(d.length<1){b.setHeader("We don't recognize the city or airport.");d.push("");}else{b.setHeader("");}};TTFareFinderComp.prototype.doBeforeExpandContainerOverride=function(a,b,d,c){if(c.length==1&&c[0]===""){c.pop();}return TTFareFinderComp.superclass.doBeforeExpandContainerOverride.call(this,a,b,d,c);};