(function(){SS.views.SearchResultsOptionsView=function(d){this.model=d;this.changeFilterStateRequest=new YAHOO.util.CustomEvent("changeFilterStateRequest",this)};var c=SS.views.SearchResultsOptionsView,a=SS.views.SearchControlsOptionsView,b=SS.util.gettext;$L.extend(c,a,{name:"SearchResultsOptionsView",model:null,itinerary:null,optionsPanel:null,optionsPanelBodyInner:null,outboundDepartureTimeFilter:null,inboundDepartureTimeFilter:null,airlineFilter:null,_airlinesSelectionChanged:false,init:function(d){c.superclass.init.call(this,d,b("filter"));this.itinerary=SS.factories.ItineraryFactory.getItinerary();this.contentEl.innerHTML=this.buildScaffolding(this.itinerary.isReturn);this.previousEl=$D.getElementsByClassName("separator","div","sc_summary")[0];this.expandNoTracking(false);this.optionsPanel=$D.get("searchresults_options");this.optionsPanelBodyInner=$D.get("searchresults_options_body_inner");this.renderFilters();this.initEventListeners()},renderFilters:function(){},initEventListeners:function(){$E.addListener(this.optionsPanelBodyInner,"click",this.onOptionsPanelBodyInnerClicked,this,true);this.initDayViewFilterEvents()},initDayViewFilterEvents:function(){var d=this.model.filtersVisibilityChangeRequest;if(d){d.subscribe(this.onFiltersVisibilityChangeRequest,this,true)}var e=this.model.filterStateChangeRequiringValidation;if(e){e.subscribe(this.onFilterStateChangeRequiringValidation,this,true)}},onFiltersVisibilityChangeRequest:function(i,f){var h=f[0],d=f[1],g;this.expand(h);if(d){g=$D.getXY(this.optionsPanel);window.scrollTo(g[0],g[1])}},onFilterStateChangeRequiringValidation:function(i,k){var j=k[0],g=k[1],d=k[2],h=k[3],m=k[4],f=k[5],l=this.filterStateIsValid(j,g);if(l){j=this.updateFilterStateDependencies(j,[d,h,m,f]);this.showFilterState(j);j=this.readFilterStateFromControls();this.changeFilterStateRequest.fire(j,false,false)}},updateFilterStateDependencies:function(e,d){return e},filterStateIsValid:function(f,d){var e=true;e=e&&(this.outboundDepartureTimeFilter&&this.outboundDepartureTimeFilter.isOptionValid(newFilterState.selectedOutboundDepartureTimeWindows));if(d){e=e&&(this.inboundDepartureTimeFilter&&this.inboundDepartureTimeFilter.isOptionValid(newFilterState.selectedInboundDepartureTimeWindows))}e=e&&(this.airlineFilter&&this.airlineFilter.isOptionValid(newFilterState.selectedAirlines));return e},onOptionsPanelBodyInnerClicked:function(f){var d=$E.getTarget(f);if(("INPUT"==d.nodeName.toUpperCase())&&($D.hasClass(d,"filteroption"))){if($D.getAncestorByClassName(d,"airlines_list")){this.removeAirlinesLock()}if($D.getAncestorByClassName(d,"airports_list")){this.removeAirportsLock()}this.raiseFilterChange(false,true)}},removeAirlinesLock:function(){this._airlinesSelectionChanged=true},removeAirportsLock:function(){this._airportsSelectionChanged=true},raiseFilterChange:function(f,d){var e=this.readFilterStateFromControls();this.changeFilterStateRequest.fire(e,f,d)},readFilterStateFromControls:function(){var d=new SS.entities.FilterState();d.selectedOutboundDepartureTimeWindows=[this.readSelectedFilterValue(this.outboundDepartureTimeFilter)];d.selectedInboundDepartureTimeWindows=[this.readSelectedFilterValue(this.inboundDepartureTimeFilter)];d.selectedAirlines=[this.readSelectedFilterValue(this.airlineFilter)];return(d)},readSelectedFilterValue:function(f){var g="",e=0,h=null,d=null;if(null!=f){for(e=0;e<f.filterOptions.length;e++){h=f.filterOptions[e];d=$D.get(f.id+"$"+h.id);if(d&&d.checked){g=h.id;break}}}return g},buildScaffolding:function(d){},createOutboundDepartureTimeFilter:function(){var d=null,e=null;e=new SS.entities.Filter("outboundDepartureTimeWindow",b("filter_depart_time"),"radio");e.addFilterOption(new SS.entities.FilterOption(SS.departureTimeWindowsType.any,b("filtervalue_any_time"),"",true));e.addFilterOption(new SS.entities.FilterOption(SS.departureTimeWindowsType.morning,"00:00-12:59","",false));e.addFilterOption(new SS.entities.FilterOption(SS.departureTimeWindowsType.afternoon,"12:00-18:59","",false));e.addFilterOption(new SS.entities.FilterOption(SS.departureTimeWindowsType.evening,"18:00-23:59","",false));this.outboundDepartureTimeFilter=e;d=$D.get("filtergroup_dep");d.innerHTML=this.buildFilterHtml(e)},createInboundDepartureTimeFilter:function(){var d=null,e=null;e=new SS.entities.Filter("inboundDepartureTimeWindow",b("filter_return_time"),"radio");e.addFilterOption(new SS.entities.FilterOption(SS.departureTimeWindowsType.any,b("filtervalue_any_time"),"",true));e.addFilterOption(new SS.entities.FilterOption(SS.departureTimeWindowsType.morning,"00:00-12:59","",false));e.addFilterOption(new SS.entities.FilterOption(SS.departureTimeWindowsType.afternoon,"12:00-18:59","",false));e.addFilterOption(new SS.entities.FilterOption(SS.departureTimeWindowsType.evening,"18:00-23:59","",false));this.inboundDepartureTimeFilter=e;d=$D.get("filtergroup_rtn");d.innerHTML=this.buildFilterHtml(e)},buildFilterHtml:function(e){var d=[];d.push("<div class='filter'>");d.push("<h5>"+e.title+"</h5>");this.buildFilterColumnsHtml(e,d);d.push("</div>");return d.join("")},buildFilterColumnsHtml:function(f,d){var e=f.filterOptions.length;col1Length=4;if(e>4){if(e>=8){col1Length=Math.ceil(e/2)}this.buildFilterColumn(d,f,0,col1Length-1,true,false,false,false);this.buildFilterColumn(d,f,col1Length,e-1,false,true,false,false)}else{this.buildFilterColumn(d,f,0,e-1,true,true,false,false)}},buildFilterColumn:function(m,d,r,e,f,l,k,o){var j=0,s=(this.name=="DayViewOptionsView"),q,p=this.name=="DayViewOptionsView"?this.model.getCurrentQuery():this.model.currentQuery,h=false,g=false,n=null;m.push("<ul class='"+(f?" first":"")+(l?" last":"")+(k?" empty":"")+(o?" separate":"")+"'>");for(j=r;j<=e;j++){n=d.filterOptions[j];m.push("<li>");if(p){h=n.hasMixedAvailability;g=!n.hasDirectFlights}if(s&&!o){m.push("<table class='"+(n.id=="multi"?"multi":"")+" "+(g?"indirect":"direct")+"'><tr>")}if(s&&!o){m.push("<td class='cb'>")}m.push('<input type="'+(d.isMultiSelect()?"checkbox":"radio")+'" class="filteroption" name="'+d.id+'" id="'+(d.id+"$"+n.id)+'" value="'+n.id+'"'+(n.isActive?' checked="checked"':"")+" />");if(s&&!o){m.push("</td>")}if(s&&!o){m.push("<td class='a'>")}q=s?"":n.description;m.push('<label class="label_name" for="'+(d.id+"$"+n.id)+'" title="'+q+'">');m.push("<span class='name'>"+n.text+"</span>");m.push("</label>");if(s&&!o){m.push("</td>")}if(n.price){if(s&&!o){m.push("<td class='px' align='right'>")}m.push('<label class="label_price" for="'+(d.id+"$"+n.id)+'" title="'+q+'">');m.push("<span class='price'>"+n.price+"</span>");m.push("</label>");if(s&&!o){m.push("</td>")}}if(s&&!o){m.push("</tr></table>")}if(p){m.push("<input type='hidden' id='"+d.id+"$"+n.id+"_mixed_avail' name='"+d.id+"$"+n.id+"_mixed_avail' value='"+(h?"1":"0")+"'/>");m.push("<input type='hidden' id='"+d.id+"$"+n.id+"_isindirect' name='"+d.id+"$"+n.id+"_isindirect' value='"+(g?"1":"0")+"'/>")}m.push("</li>")}m.push("</ul>")},showFilterState:function(d){this.setActiveFilterOption(this.outboundDepartureTimeFilter,d.selectedOutboundDepartureTimeWindows[0]);this.setActiveFilterOption(this.inboundDepartureTimeFilter,d.selectedInboundDepartureTimeWindows[0]);this.setActiveFilterOption(this.airlineFilter,d.selectedAirlines[0]);this.setSelectedOptionsAllFilters()},setActiveFilterOption:function(d,e){if(null!=d){d.setActiveFilterOption(e)}},setSelectedOptionsAllFilters:function(){this.setSelectedOptionsOneFilter(this.outboundDepartureTimeFilter);this.setSelectedOptionsOneFilter(this.inboundDepartureTimeFilter);this.setSelectedOptionsOneFilter(this.airlineFilter)},setSelectedOptionsOneFilter:function(d){if(null!=d){d.filterOptions.forEach(function(f){var e=$D.get(d.id+"$"+f.id);if(e){if(f.isActive){$D.addClass(e.parentNode,"selected");if(!e.checked){e.checked=true}}else{$D.removeClass(e.parentNode,"selected");if(e.checked){e.checked=false}}}})}}})}());
