Type.registerNamespace("Ecom.Detail");Type.registerNamespace("Ecom.Zoover");Ecom.Detail.CommonDetailComponent=function(){this.parentComponent=null;Ecom.Detail.CommonDetailComponent.initializeBase(this)};Ecom.Detail.CommonDetailComponent.prototype={initialize:function(){},setParentComponent:function(a){this.parentComponent=a;this.SendDetailPageByEmailDelegate=Function.createDelegate(this,this.SendDetailPageByEmail);this.OnDetailPageByEmailSentDelegate=Function.createDelegate(this,this.OnDetailPageByEmailSent);this.OnStorePackageInProfileDelegate=Function.createDelegate(this,this.OnStorePackageInProfile);this.LoginAndStorePackageDelegate=Function.createDelegate(this,this.LoginAndStorePackage);this.parentComponent.RegisterEventHandler("sendDetailPageByEmailButton","click",false,this.SendDetailPageByEmailDelegate,this.OnDetailPageByEmailSentDelegate,this.parentComponent.GetCurrentTravelInfoDelegate,null,null);this.parentComponent.RegisterEventHandler("storePackage","click",true,ThomasCook.Ecom.Web.Personalization.StorePackageInProfile,this.OnStorePackageInProfileDelegate,null,this.parentComponent.ShowWaitPanelDelegate,this.parentComponent.HideWaitPanelDelegate);this.parentComponent.RegisterEventHandler("loginAndStorePackage","click",true,this.LoginAndStorePackageDelegate,this.OnStorePackageInProfileDelegate,null,null,null)},SendDetailPageByEmail:function(a,h,d,c,k,e){Sys.Debug.trace("SendDetailPageByEmail");var b=this.parentComponent.GetCurrentTravelInfo();var j=$get("emailInput");b.SendDetailPageTo=j.value;b.EmailComments=$get("commentsText").value;var g="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";if(b.SendDetailPageTo!=""&&b.SendDetailPageTo.toLowerCase().match(g)==b.SendDetailPageTo.toLowerCase()){var e=this.parentComponent.FindWaitSpecificationInstance($get("sendDetailPageByEmailButton"),"click");ThomasCook.Ecom.Web.BookingAvailability.SendDetailPageByEmail(null,null,b,c,k,e);$get("emailInputDiv").style.display="none"}else{var f=jQuery("#sendDetailPageEmailWarning").text();alert(f)}},OnDetailPageByEmailSent:function(){var a=jQuery("#sendDetailPageSucceeded").text();GetOmnitureEventSuite().SendDetailPageByEmail_EmailSent();alert(a)},LoginAndStorePackage:function(h,f,g,d,a,e){var c=$find("loginpopupcomponentmain");if(c!=null){c.RememberProductToStore(h,f,g,d,a,e)}var b=$find("loginpopupcomponentmodaldialog");if(b!=null){b.Show()}},OnStorePackageInProfile:function(a){if(a=="Succeeded"){show("storedPackagePanel");hide("storePackagePanel")}else{var b=$find("header");if(b!=null){b.ShowError(a)}else{alert(a)}}this.parentComponent.HideWaitPanel()}};Ecom.Detail.CommonDetailComponent.registerClass("Ecom.Detail.CommonDetailComponent",Sys.Component);Ecom.Detail.BestPriceFinder=function(a){this.model={preferences:{},results:{}};this.dialog=null;this.roomTypeInfoPopup=null;this.earliestDeparture=null;this.latestReturn=null;this.preferencesTemplate=null;this.resultsTemplate=null;this._detailPageController=null;this._fixHeightsDelegate=null;Ecom.Detail.BestPriceFinder.initializeBase(this,[a])};Ecom.Detail.BestPriceFinder.prototype={initialize:function(){var d={toBeDisabledId:"entiredetailcontent",toCloseId:"dummy",width:955,height:450,backgroundColor:"#000"};this.dialog=$create(Ecom.ModalDialog,d,null,null,$get("bestPriceFinderDialogBox"));this._fixHeightsDelegate=Function.createDelegate(this,this._fixHeights);Sys.Application.add_load(Function.createDelegate(this,this._onDocumentLoad));var a=Function.createDelegate(this,this.getUserPreferences);var b=Function.createDelegate(this,this._showWaitPanel);var c=Function.createDelegate(this,this._hideWaitPanel);$addHandler($get("findBestPrice"),"click",Function.createDelegate(this,this._onFindBestPriceClick));this.RegisterEventHandler("findBestPrice","dummy",false,ThomasCook.Ecom.Web.BookingAvailability.FindBestPriceData,Function.createDelegate(this,this._onFindBestPriceCompleted),a,b,c);this.RegisterEventHandler("closeBestPriceFinder","click",false,ThomasCook.Ecom.Web.BookingAvailability.UpdateSearchBrowseUserData,Function.createDelegate(this,this.close),a,b,c);this.RegisterEventHandler("bestPriceResultItem","click",false,ThomasCook.Ecom.Web.BookingAvailability.GetInitialInfoForHoliday,Function.createDelegate(this,this._onResultSelected),Function.createDelegate(this,this._getTravelInfoForSelectedResult),b,c);$addHandler(this.get_element(),"click",this.OnClickDelegate);jQuery("#bestPriceOptionsPlaceholder #bestPriceRoomTypeInfoButton").live("click",Function.createDelegate(this,this._showRoomTypesInfoPopup));Ecom.Detail.BestPriceFinder.callBaseMethod(this,"initialize")},dispose:function(){},show:function(){if(this.dialog!=null){this.model.preferences.SelectedDuration=this._getSelectedDuration(true);this._populate("options");this.earliestDeparture.selectDate(this.initialDepartureDate,true);this.latestReturn.selectDate(this.initialReturnDate,true);this._updateRangesAndSelectedDates();this.dialog.Show()}},close:function(){if(this.dialog!=null){this.dialog.Close()}this._hideWaitPanel()},getUserPreferences:function(){this.update();var a=new ThomasCook.Ecom.Core.PageComponents.Data.CommonView.DetailPage.BestPriceUserSelection();jQuery.extend(a,this.model.preferences);a.__type="ThomasCook.Ecom.Core.PageComponents.Data.CommonView.DetailPage.BestPriceUserSelection";a.PageKey=jQuery("#main").attr("pageKey");a.Language=jQuery("#main").attr("languageISO");return a},update:function(c){if(arguments.length>0&&c){if(c.preferences){jQuery.extend(this.model.preferences,c.preferences);this.initialDepartureDate=Date.parseInvariant(this.model.preferences.EarliestDepartureDateString,"yyyyMMdd");this.initialReturnDate=Date.parseInvariant(this.model.preferences.LatestReturnDateString,"yyyyMMdd");this.seasonEndDate=Date.parseInvariant(this.model.preferences.SeasonEndDateString,"yyyyMMdd")}if(c.isInitialUpdate){if(c.initialAirports){var a=this._extendSelectionInfo(c.initialAirports).toAirports();this.model.preferences.Airports=this._mergeWithUserPrefs(a,this.model.preferences.Airports)}}if(c.initialDurations){this.model.preferences.Durations=this._extendSelectionInfo(c.initialDurations).toDurations()}if(c.results){jQuery.extend(this.model.results,c.results)}}else{var a=this.model.preferences.Airports;var b=a.length;for(var g=0;g<b;g++){a[g].Checked=jQuery("#bestPriceAirport_"+a[g].Code).is(":checked")||false}var d=this.model.preferences.Rooms;var l=d.length;for(var f=0;f<l;f++){var j=d[f].RoomTypes;var e=j.length;for(var k=0;k<e;k++){j[k].Checked=jQuery("#bestPriceRoomType_"+f+"_"+j[k].Code).is(":checked")||false}}this.model.preferences.SelectedDuration=this._getSelectedDuration();this.model.preferences.EarliestDepartureDateString=this.earliestDeparture.getSelectedDate().format("yyyyMMdd");this.model.preferences.LatestReturnDateString=this.latestReturn.getSelectedDate().format("yyyyMMdd")}if(arguments.length>0&&c&&c.populate){var h=(c.preferences&&c.results)?"both":(c.preferences)?"options":(c.results)?"results":"";this._populate(h)}},_getSelectedDuration:function(a){var b;if(a){b=jQuery("#durationselect option:selected").val()||jQuery("#durationselect option:first").val()}else{b=jQuery("#bestPriceDurations option:selected").val()||jQuery("#bestPriceDurations option:first").val()}return parseInt(b,10)||0},_onFindBestPriceClick:function(e){var g=this.earliestDeparture.getSelectedDate();var a=this.latestReturn.getSelectedDate();var f=this._getSelectedDuration();var b=Math.abs(a.getTime()-g.getTime());var d=Math.round(b/(1000*60*60*24));var c=(f>d);jQuery("#bestPriceOutOfRangeMessage").toggle(c);jQuery("#bestPriceOpeningMessage, #bestPriceResultsPlaceholder").toggle(!c);if(!c){this.HandleEvent(e,"dummy")}},_getDetailPageController:function(){if(this._detailPageController==null){this._detailPageController=$find("clickmain")}return this._detailPageController},_callDetailPageControllerMethod:function(){var c=jQuery.makeArray(arguments),b=c.shift(),a=this._getDetailPageController(),d=a[b];if(d){return d.apply(a,c)}return null},_getTravelInfoForSelectedResult:function(a,c){var k=this._callDetailPageControllerMethod("GetCurrentTravelInfo",a,c);if(a&&a.target&&a.target.id&&this.model&&this.model.results&&this.model.results.Items){var e=a.target.id.split("_"),h=parseInt(e[1],10),d=this.model.results.Items[h]||null;if(d!=null){var b=d.DepartureDate.format("yyyyMMdd");k.selectedDuration=d.Duration;if(d.DepartureAirportCode!=null){k.selectedAirport=d.DepartureAirportCode.toLowerCase()}k.selectedAirportDescription=d.DepartureAirportDescription;k.departureDate=b;k.selectedPeriod=b;k.selectedCellDate=b;k.selectedCellDuration=d.Duration;if(k.numberOfRooms!=d.Rooms.length){Sys.Debug.trace("Unexpected number of rooms in best price finder");return k}for(var f=0;f<k.numberOfRooms;f++){var g=d.Rooms[f];var l=g.ArrangementCode||"";if(k.arrangement!=l){Sys.Debug.trace("Incompatible arrangement returned by best price finder");return k}var j=k.roomOccupations[f];j.boardType=g.BoardTypeCode;j.roomIdentification=g.AccommodationCode+"__"+g.RoomBookCode}}}return k},_onResultSelected:function(a,b){this._callDetailPageControllerMethod("SetTravelInfoAndChoices",a,b);this.close()},_populate:function(a){if(a==="options"||a==="both"){if(this.preferencesTemplate==null){this.preferencesTemplate=jQuery("#bestPriceOptionsTemplate").parseTemplate("bestPriceOptions")}jQuery("#bestPriceOptionsPlaceholder").empty().appendTemplate(this.preferencesTemplate,this.model)}if(a==="results"||a==="both"){if(this.resultsTemplate==null){this.resultsTemplate=jQuery("#bestPriceResultsTemplate").parseTemplate("bestPriceResults")}if(!this.model.results||!this.model.results.Items){this.model.results={Items:[]}}jQuery("#bestPriceResultsPlaceholder").empty().appendTemplate(this.resultsTemplate,this.model)}jQuery("#bestPriceOpeningMessage").toggle(a==="options");jQuery("#bestPriceResultsPlaceholder").toggle(a==="results"||a==="both");if(this._fixHeightsDelegate){window.setTimeout(this._fixHeightsDelegate,0)}},_fixHeights:function(){var a=jQuery("#bestPricePreferencesContainer").height();var c=jQuery("#bestPriceResultsContainer");var b=c.find("div.best-price-header").outerHeight();c.height(a+"px");c.find("#bestPriceResultsPlaceholder").css({"overflow-y":"auto","overflow-x":"hidden",height:(a-b)+"px"})},_onFindBestPriceCompleted:function(a){if(a!=null){this.update({results:a});this.DoPartialUpdateWithOmnitureLogging(a)}else{Sys.Debug.trace("ThomasCook.Ecom.Web.BookingAvailability.FindBestPriceData failed")}this._populate("results");this._hideWaitPanel()},_onDocumentLoad:function(){this.roomTypeInfoPopup=new Ecom.UI.ModalBox("#bestPriceRoomTypeInfoPopup",{dialogClass:"option",width:600});this.earliestDeparture=Ecom.UI.Calendar.create({target:"#bestPriceDepartureDateControl",altField:"#bestPriceDepartureDateLabel",altFormat:"d-mm-yy",beforeShow:this._fixCalendarZindex,onSelect:Function.createDelegate(this,this._updateRangesAndSelectedDates)});this.latestReturn=Ecom.UI.Calendar.create({target:"#bestPriceReturnDateControl",altField:"#bestPriceReturnDateLabel",altFormat:"d-mm-yy",beforeShow:this._fixCalendarZindex})},_updateRangesAndSelectedDates:function(){var b=new Date(),a=new Date();a.setDate(b.getDate()+1);var d=new Date(a.getTime()),e=new Date(this.seasonEndDate),c=this.earliestDeparture.getSelectedDate();if(c<d){c=new Date(d.getTime())}if(c>e){c=new Date(e.getTime())}this.earliestDeparture.setRanges(d,e);this.earliestDeparture.selectDate(c,true);d=new Date(c.getTime());d.setDate(d.getDate()+1);e=new Date(c.getTime());e.setDate(e.getDate()+56);c=this.latestReturn.getSelectedDate();if(c<d){c=new Date(d.getTime());c.setDate(c.getDate()+14)}if(c>e){c=new Date(e.getTime())}this.latestReturn.setRanges(d,e);this.latestReturn.selectDate(c,true)},_fixCalendarZindex:function(){jQuery("#ui-datepicker-div").css("z-index","910")},_showRoomTypesInfoPopup:function(){if(this.roomTypeInfoPopup!=null){this.roomTypeInfoPopup.show({content:jQuery("#tabstripcontent_OVERSTAY_TYPES").html()})}},_showWaitPanel:function(){Ecom.Application.showWaiterBox()},_hideWaitPanel:function(){Ecom.Application.hideWaiterBox()},_findItem:function(a,d){for(var b=0,c=d.length;b<c;b++){if(d[b].Code===a.Code){return d[b]}}return null},_mergeWithUserPrefs:function(e,b){for(var c=0,d=e.length;c<d;c++){var a=this._findItem(e[c],b);if(a!=null){e[c].Checked=a.Checked}}return e},_extendSelectionInfo:function(a){return jQuery.extend(a,{toAirports:function(){var d=[];var b=this.Options||[];var e=b.length;for(var c=0;c<e;c++){d.push({Code:b[c].Value||"",Description:b[c].Description||"",Checked:true})}return d},toDurations:function(){var b=[];var c=this.Options||[];var e=c.length;for(var d=0;d<e;d++){b.push({Code:c[d].Value||"",Description:c[d].Description||""})}return b}})}};Ecom.Detail.BestPriceFinder.isBestPriceFinderEnabled=function(){return(jQuery("#main").attr("bestPriceFinder")=="enabled")};Ecom.Detail.BestPriceFinder.registerClass("Ecom.Detail.BestPriceFinder",Ecom.Omniture);Ecom.Detail.ZooverComponent=function(a){this.popup=null;Ecom.Detail.ZooverComponent.initializeBase(this,[a])};Ecom.Detail.ZooverComponent.prototype={initialize:function(){Sys.Application.add_load(Function.createDelegate(this,this.onDocumentLoad));jQuery("#zvContainer").appendTo("#zooverPlaceholder").show();jQuery("#zvContainer").click(Function.createDelegate(this,this.showZooverPopup))},onDocumentLoad:function(){this.popup=new Ecom.UI.ModalBox("#zvPopup",{dialogClass:"zoover-box",width:650})},showZooverPopup:function(){if(this.popup!==null){this.popup.show()}}};Ecom.Detail.ZooverComponent.registerClass("Ecom.Detail.ZooverComponent",Sys.UI.Control);Ecom.Detail.GoogleMaps=function(a){this.latitude=null;this.longitude=null;this.zoomFactor=null;this.accoName="";this._gmapsInitialized=false;this._initializeGoogleMapsDelegate=Function.createDelegate(this,this.initializeGoogleMaps);Ecom.Detail.GoogleMaps.initializeBase(this,[a])};Ecom.Detail.GoogleMaps.prototype={initialize:function(){jQuery("#gmStatic").appendTo("#gmapStaticPlaceholder").show();jQuery("#gmDynamic").appendTo("#gmapsPlaceholder").show()},reinitializeEventBinding:function(f){var e=jQuery("#gmStatic"),a=jQuery("#tabstrip_ENVIRONMENT"),d=Function.createDelegate(this,this._onGmTriggerClick),b=Function.createDelegate(this,this._onGmStaticClick);if(f){a.bind("click.initializeGmap",d)}else{var c=a.add(e);c.bind("click.initializeGmap",d);e.bind("click",b)}},_onGmStaticClick:function(b){var a=detailTabControl||$find("tabstrip")||null;if(a!==null){a.switchToEnvironmentTab()}},_onGmTriggerClick:function(a){window.setTimeout(this._initializeGoogleMapsDelegate,0)},validateProperties:function(){return(this.latitude!==null&&this.longitude!==null&&this.accoName!==""&&this.zoomFactor!==null)},setGeoProperties:function(a){a=a||{};this.latitude=a.latitude||null;this.longitude=a.longitude||null;this.zoomFactor=a.zoomFactor||null;this.accoName=a.accoName||"";this.reinitializeEventBinding(a.multimediaMode||false)},initializeGoogleMaps:function(){if(this._gmapsInitialized){return}if(!this.validateProperties()){Sys.Debug.trace("Ecom.Detail.GoogleMaps: invalid properties");return}var c=jQuery("#gmDynamic")[0]||null;if(c===null){Sys.Debug.trace("Ecom.Detail.GoogleMaps: target not found");return}var d=new google.maps.LatLng(this.latitude,this.longitude),b=new google.maps.Map(c,{zoom:this.zoomFactor,center:d,mapTypeId:google.maps.MapTypeId.ROADMAP,mapTypeControlOptions:{style:google.maps.MapTypeControlStyle.DROPDOWN_MENU}}),a=new google.maps.Marker({position:d,map:b,title:this.accoName});this._gmapsInitialized=true}};Ecom.Detail.GoogleMaps.registerClass("Ecom.Detail.GoogleMaps",Sys.UI.Control);Ecom.Detail.TransportSelector=function(a){this.departuresSelectId=null;this.departuresLabelId=null;this.arrivalsSelectId=null;this.arrivalsLabelId=null;this.carriersSelectId=null;this.carriersLabelId=null;this.departureHourSelectId=null;this.departureHourLabelId=null;this.transportClassSelectId=null;this.transportClassLabelId=null;this.transportDialog=null;this.flightParameterHierarchy=null;this.trainParameterHierarchy=null;this.busParameterHierarchy=null;this.currentTransport=null;ThomasCook.Ecom.Web.BookingAvailability.set_timeout(150000);Ecom.Detail.TransportSelector.initializeBase(this,[a]);this.GetCurrentTransportSearchParametersDelegate=Function.createDelegate(this,this.GetCurrentTransportSearchParameters);this.ShowSearchResultsDelegate=Function.createDelegate(this,this.ShowSearchResults);this.ShowWaitPanelDelegate=Function.createDelegate(this,this.ShowWaitPanel);this.HideWaitPanelDelegate=Function.createDelegate(this,this.HideWaitPanel);$addHandler(a,"click",this.OnClickDelegate);this.ChangeDepartureAirportDelegate=Function.createDelegate(this,this.ChangeDepartureAirport);this.ChangeArrivalAirportDelegate=Function.createDelegate(this,this.ChangeArrivalAirport);this.ChangeCarrierDelegate=Function.createDelegate(this,this.ChangeCarrier);this.ChangeDepartureHourDelegate=Function.createDelegate(this,this.ChangeDepartureHour);this.ChangeClassDelegate=Function.createDelegate(this,this.ChangeClass);this.FetchTransportParametersDelegate=Function.createDelegate(this,this.FetchTransportParameters);this.FetchFlightParametersDelegate=Function.createDelegate(this,this.FetchFlightParameters);this.FetchTrainParametersDelegate=Function.createDelegate(this,this.FetchTrainParameters);this.ShowTransportQueryResultDelegate=Function.createDelegate(this,this.ShowTransportQueryResult);this.ShowPriceCalcResultsDelegate=Function.createDelegate(this,this.ShowPriceCalcResults);this.RegisterEventHandler("flightdeparturesselect","change",false,this.ChangeDepartureAirportDelegate,null,this.FetchFlightParametersDelegate,null,null);this.RegisterEventHandler("flightarrivalsselect","change",false,this.ChangeArrivalAirportDelegate,null,this.FetchFlightParametersDelegate,null,null);this.RegisterEventHandler("flightcarriersselect","change",false,this.ChangeCarrierDelegate,null,this.FetchFlightParametersDelegate,null,null);this.RegisterEventHandler("traindeparturesselect","change",false,this.ChangeDepartureAirportDelegate,null,this.FetchTrainParametersDelegate,null,null);this.RegisterEventHandler("trainarrivalsselect","change",false,this.ChangeArrivalAirportDelegate,null,this.FetchTrainParametersDelegate,null,null);this.RegisterEventHandler("traincarriersselect","change",false,this.ChangeCarrierDelegate,null,this.FetchTrainParametersDelegate,null,null);this.RegisterEventHandler("traindeparturehoursselect","change",false,this.ChangeDepartureHourDelegate,null,this.FetchTrainParametersDelegate,null,null);this.RegisterEventHandler("traintransportclassesselect","change",false,this.ChangeClassDelegate,null,this.FetchTrainParametersDelegate,null,null);this.RegisterEventHandler("searchtransports","click",false,ThomasCook.Ecom.Web.BookingAvailability.SearchTransport,this.ShowTransportQueryResultDelegate,this.FetchTransportParametersDelegate,this.ShowWaitPanelDelegate,this.HideWaitPanelDelegate);this.RegisterEventHandler("tsTransportDescriptionChoice","click",false,ThomasCook.Ecom.Web.BookingAvailability.SelectTransportOptions,this.ShowSearchResultsDelegate,this.FetchTransportParametersDelegate,null,null);this.RegisterEventHandler("tsCalculatePrice","click",false,ThomasCook.Ecom.Web.BookingAvailability.CalculateTransportPrice,this.ShowPriceCalcResultsDelegate,this.FetchTransportParametersDelegate,this.ShowWaitPanelDelegate,this.HideWaitPanelDelegate)};Ecom.Detail.TransportSelector.prototype={initialize:function(){this.transportDialog=$create(Ecom.ModalDialog,{toBeDisabledId:"entiredetailcontent",toCloseId:"toClose",overlayId:"overlayTransportDialog",backgroundColor:"#000",width:947,height:450},null,null,$get("transportParametersDialog"));Ecom.Detail.TransportSelector.callBaseMethod(this,"initialize")},showTransportDialog:function(b){if(this.transportDialog&&b){this.HookChildSelects(this.get_element());this.flightParameterHierarchy=b.flightParameterHierarchy;this.trainParameterHierarchy=b.trainParameterHierarchy;this.busParameterHierarchy=b.busParameterHierarchy;var d=$find("transportParametersTabControl");if(d!=null){d.dispose()}var c=1;if(b.selectedTransportType=="Train"){c=2}d=$create(Proto.DetailTabControl,{selectedClass:"selected",unselectedClass:"unselected",selectedElementId:"tsTabStrip_"+c,NamingContainer:"tsTabStrip",contentPrefix:"tsTabContent"},null,null,$get("transportParametersTabControl"));var a=this;jQuery("select.transport-selection-parameter",this.element).each(function(){var e=this.id,f=e.replace(/select$/,"text");a.populateDropdown({select:e,label:f,priceTicketModusDependent:false})});this.transportDialog.Show();this.AutoSelectTransportIfNoChoicePossible(c)}},ExtractCurrentTransportFromId:function(c){var b=c.indexOf("_");var a=c.substring(b+1);if((a=="ANVR.VL")||(a=="ANVR.TR")||(a=="ANVR.BU")){this.currentTransport=a}},AutoSelectTransportIfNoChoicePossible:function(e){var b=true;jQuery("#tsTabContent_"+e+" select").each(function(){if(this.options.length>1){b=false}});if(b){var a=jQuery("#tsTabContent_"+e+" span[id^='searchtransports_']").attr("id");var d="click";var c=this.FindWaitSpecificationInstance($get(a),d);this.Wait(c,true);this.ExtractCurrentTransportFromId(a);ThomasCook.Ecom.Web.BookingAvailability.SearchTransport(a,d,this.FetchTransportParameters(),this.ShowTransportQueryResultDelegate,this.MethodTimeoutDelegate,c)}},tryToAutoAdvance:function(a){switch(a){case 1:break;case 2:break}},GetCurrentTransportSearchParameters:function(){},ChangeDepartureAirport:function(a,b,c){if(null!=c.DepartureAirport){this.populateDropdown({select:this.arrivalsSelectId,label:this.arrivalsLabelId,data:this._mapToSelectionInfo(c.DepartureAirport.Children),priceTicketModusDependent:false});c=this.FetchTransportParameters(null);this.ChangeArrivalAirport(a,b,c)}},ChangeArrivalAirport:function(a,b,c){if(null!=c.ArrivalAirport){this.populateDropdown({select:this.carriersSelectId,label:this.carriersLabelId,data:this._mapToSelectionInfo(c.ArrivalAirport.Children),priceTicketModusDependent:false});c=this.FetchTransportParameters(null);this.ChangeCarrier(a,b,c)}},ChangeCarrier:function(b,c,e){if(null!=e.Carrier){if(this.departureHourSelectId!=null){var d=$get(this.departureHourSelectId);var a=d.value;this.populateDropdown({select:this.departureHourSelectId,label:this.departureHourLabelId,data:this._mapToSelectionInfo(e.Carrier.Children),priceTicketModusDependent:false});d.value=a}e=this.FetchTransportParameters(null);this.ChangeDepartureHour(b,c,e)}},ChangeDepartureHour:function(b,c,d){if(null!=d.DepartureHour){var e=$get(this.transportClassSelectId);var a=e.value;this.populateDropdown({select:this.transportClassSelectId,label:this.transportClassLabelId,data:this._mapToSelectionInfo(d.DepartureHour.Children),priceTicketModusDependent:false});e.value=a}this.ChangeClass()},ChangeClass:function(){},_clearControlIds:function(){this.departuresSelectId=null;this.departuresLabelId=null;this.arrivalsSelectId=null;this.arrivalsLabelId=null;this.carriersSelectId=null;this.carriersLabelId=null;this.departureHourSelectId=null;this.departureHourLabelId=null;this.transportClassSelectId=null;this.transportClassLabelId=null},_setDepartures:function(a,b){this.departuresSelectId=a;this.departuresLabelId=b},_setArrivals:function(a,b){this.arrivalsSelectId=a;this.arrivalsLabelId=b},_setCarriers:function(a,b){this.carriersSelectId=a;this.carriersLabelId=b},_setDepartureHour:function(a,b){this.departureHourSelectId=a;this.departureHourLabelId=b},_setTransportClass:function(a,b){this.transportClassSelectId=a;this.transportClassLabelId=b},_mapToSelectionInfo:function(d){if(!d){return null}var c={Options:[]},b=d.length,a;for(a=0;a<b;a++){c.Options.push({Value:d[a].Code,Description:d[a].Label});if(0==a){c.SelectedValue=d[a].Code}}return c},_getSelectedValue:function(a){if(!a){return""}var c=a.options||[],b=a.selectedIndex||0,d=c[b],e=d.value||"";return e},_findNode:function(b,a){if(!b||!a){return null}var c,d=b.length;for(i=0;i<d;i++){c=b[i];if(a==c.Code){return c}}return null},_getSelectedNode:function(d,b){if(d&&b){var a=$get(d),c=this._getSelectedValue(a);if(c){return this._findNode(b,c)}}return null},_updateCurrentSelectedTransportType:function(c){if(c!=null){var b=c.target.id.indexOf("_");var a=c.target.id.substring(b+1);if((a=="ANVR.VL")||(a=="ANVR.TR")||(a=="ANVR.BU")){this.currentTransport=a}}return this.currentTransport},FetchFlightParameters:function(a){this.currentTransport="ANVR.VL";return this.FetchTransportParameters(a)},FetchTrainParameters:function(a){this.currentTransport="ANVR.TR";return this.FetchTransportParameters(a)},FetchTransportParameters:function(e){var c=new ThomasCook.Ecom.Core.PageComponents.Data.CommonView.Booking.BookingStepZero.TransportSelectionParameters(),a=null,f=this._updateCurrentSelectedTransportType(e),b=$find("clickmain");this._clearControlIds();if(f=="ANVR.VL"){this._setDepartures("flightdeparturesselect","flightdeparturestext");this._setArrivals("flightarrivalsselect","flightarrivalstext");this._setCarriers("flightcarriersselect","flightcarrierstext");a=this.flightParameterHierarchy}if(f=="ANVR.TR"){this._setDepartures("traindeparturesselect","traindeparturestext");this._setArrivals("trainarrivalsselect","trainarrivalstext");this._setCarriers("traincarriersselect","traincarrierstext");this._setDepartureHour("traindeparturehoursselect","traindeparturehourstext");this._setTransportClass("traintransportclassesselect","traintransportclassestext");a=this.trainParameterHierarchy;var d=$get("trainreturnhoursselect");if(d!=null){c.ReturnHour=this._getSelectedValue(d)}}if(f=="ANVR.BU"){this._setDepartures("busdeparturesselect","busdeparturestext");this._setArrivals("busarrivalsselect","busarrivalstext");this._setCarriers("buscarriersselect","buscarrierstext");a=this.busParameterHierarchy}if(b!==null){c.TravelInfo=b.GetCurrentTravelInfo()}if(a){c.DepartureAirport=this._getSelectedNode(this.departuresSelectId,a)}if(c.DepartureAirport){c.ArrivalAirport=this._getSelectedNode(this.arrivalsSelectId,c.DepartureAirport.Children)}if(c.ArrivalAirport){c.Carrier=this._getSelectedNode(this.carriersSelectId,c.ArrivalAirport.Children)}if(c.Carrier){c.DepartureHour=this._getSelectedNode(this.departureHourSelectId,c.Carrier.Children)}if(c.DepartureHour){c.TransportClass=this._getSelectedNode(this.transportClassSelectId,c.DepartureHour.Children)}c.TransportTypeCode=f;c.WayTransport=this.FetchSelectedWayTransport();c.BackTransport=this.FetchSelectedBackTransport();return c},FetchSelectedWayTransport:function(){var a=this.FindSelectedTransportOption(document.getElementsByName("away"));return this.FindSelectedTransport(this.wayTransports,a)},FetchSelectedBackTransport:function(){var a=this.FindSelectedTransportOption(document.getElementsByName("back"));return this.FindSelectedTransport(this.backTransports,a)},ClearTransportSelection:function(a){if(null==a){return null}for(i=0;i<a.length;i++){if(a[i].checked==true){a[i].checked=false;break}}},FindSelectedTransportOption:function(a){if(null==a){return null}for(i=0;i<a.length;i++){if(a[i].checked==true){return a[i].id.substring(a[i].id.indexOf("_")+1,a[i].id.length)}}},FindSelectedTransport:function(b,a){if((null==b)||(null==a)){return null}for(i=0;i<b.length;i++){if(b[i].TransportCode==a){return b[i]}}},ShowTransportQueryResult:function(c,b,a){if(null!=c){this.wayTransports=c.wayTransports;this.backTransports=c.backTransports;this.ShowSearchResults(c,b,a);this.AutoSelectSingleWayAndBackTransport()}},ShowSearchResults:function(d,c,a){if(d!=null){var f=$find("transportpriceandavailabilityqueryresults");if(f!=null){f.dispose()}var e=$create(Ecom.VerticalScroll,{scrollPaneCreator:function(){return[{divName:"transportOverviewLeft",up:"arrowUpLeft",down:"arrowDownLeft"},{divName:"transportOverviewRight",up:"arrowUpRight",down:"arrowDownRight"}]}},null,null,$get("transportpriceandavailabilityqueryresults"));var b=d.divUpdates;this.DoPartialUpdate(d.divUpdates);this.Wait(c,false)}},AutoSelectSingleWayAndBackTransport:function(){var a=this.AutoSelectSingleTransport("#transportOverviewLeft input");var b=this.AutoSelectSingleTransport("#transportOverviewRight input");if((a==1)||(b==1)){ThomasCook.Ecom.Web.BookingAvailability.SelectTransportOptions(null,null,this.FetchTransportParameters(),this.ShowSearchResultsDelegate,null)}},AutoSelectSingleTransport:function(a){var c=jQuery(a);var b=c.length;if(b==1){c.each(function(){jQuery(this).attr("checked","checked")})}return b},ShowPriceCalcResults:function(g,f,c){var e=g.divUpdates;this.DoPartialUpdate(g.divUpdates);var a=$find("clickpricegrid");if(a!=null){a.UpdateTransportAvailabilityForSelectedCell();hide("tsTransportAvailable")}var b=$find("clickmain");if(b!=null){b.updateStartBookingInfo();b.toggleBlocksVisibility(true,true)}var d=$find("transportParametersDialog");if((d!=null)&&(d.Close!=null)){d.Close()}this.Wait(f,false)},ShowWaitPanel:function(){Ecom.Application.showWaiterBox()},HideWaitPanel:function(){Ecom.Application.hideWaiterBox()}};Ecom.Detail.TransportSelector.registerClass("Ecom.Detail.TransportSelector",Proto.Updater);Ecom.Detail.WeatherComponent=function(a){Ecom.Detail.WeatherComponent.initializeBase(this,[a]);this.brandCode=null;this.climateInfo=new Object();this.forecast=new Object();this.monthNames=new Object();this.skiInfo=new Object();this.isWinterPackage=false;this.threshold=null;this.todayString=null};Ecom.Detail.WeatherComponent.prototype={initialize:function(){jQuery("#weatherContainer").appendTo("#weatherPlaceholder").show();jQuery(".moreInfo").click(this.handleClick);jQuery(".winter-placeholder").click(this.handleClick);jQuery(".weather-placeholder").click(this.handleClick)},handleClick:function(){var a=$find("tabstrip");a.switchToWeatherTab()},update:function(k){if(this.climateInfo==null||this.forecast==null){return}var c=new Date();var h=parseInt((k.getTime()-c.getTime())/(24*3600*1000));if(this.brandCode=="nvb"){jQuery("#weatherContainerTable").show();if(h<this.threshold){jQuery("#todayWeatherCell").show();var j=jQuery("#todayWeatherImage");if(j.length>0){jQuery("#todayWeatherImage")[0].setAttribute("src","/app/upload/weatheronline/"+this.forecast[0].WeatherCode+".png");jQuery("#todayMinTemp").html(this.forecast[0].MinimumTemperature);jQuery("#todayMaxTemp").html(this.forecast[0].MaximumTemperature)}jQuery("#tomorrowWeatherCell").show();var b=jQuery("#tomorrowWeatherImage");if(b.length>0){jQuery("#tomorrowWeatherImage")[0].setAttribute("src","/app/upload/weatheronline/"+this.forecast[1].WeatherCode+".png");jQuery("#tomorrowMinTemp").html(this.forecast[1].MinimumTemperature);jQuery("#tomorrowMaxTemp").html(this.forecast[1].MaximumTemperature)}jQuery("#averageWeatherCell").removeClass("solid regular aloneCell winterCell").addClass("regular");if(this.isWinterPackage){jQuery("#averageWeatherCell").addClass("winterCell")}else{jQuery("#averageWeatherCell").addClass("solid")}if(this.isWinterPackage&&this.skiInfo!=null){jQuery("#snowInfoCell").show();jQuery("#snowDepthMountain").html(this.skiInfo[0].SnowDepthMountain);jQuery("#snowDepthValley").html(this.skiInfo[0].SnowDepthValley);jQuery("#snowCondition").html(this.skiInfo[0].SnowCondition.ToString())}}else{jQuery("#todayWeatherCell").hide();jQuery("#tomorrowWeatherCell").hide();jQuery("#snowInfoCell").hide();jQuery("#averageWeatherCell").removeClass("regular solid winterCell aloneCell").addClass("solid aloneCell")}if(jQuery("#averageWeatherCell").length>0){jQuery("#monthAverageTemp").html(this.climateInfo[k.getMonth()].AverageTemperature);jQuery("#monthName").html(this.monthNames[k.getMonth()])}else{if(h>=this.threshold){jQuery("#weatherContainerTable").hide()}}}else{if(h<this.threshold){if(this.isWinterPackage&&this.skiInfo!=null){jQuery(".winter-placeholder").show()}else{var j=jQuery("#weatherImage");if(j.length>0){jQuery(".weather-placeholder").show();var l=jQuery("#divWeatherTitle");l.removeClass("title titleAverage").addClass("title");var e=jQuery("#weatherTitlePrefix");e.show();var f=jQuery("#weatherImgContainer");f.show();var d=jQuery("#weatherTip");d.hide();var a=jQuery("#weatherTempr");a.removeClass("tempr temprAverage").addClass("tempr");j[0].setAttribute("src","/app/upload/weatheronline/"+this.forecast[0].WeatherCode+".png");jQuery("#averageTemp").html(Math.round((this.forecast[0].MaximumTemperature+this.forecast[0].MinimumTemperature)/2));jQuery("#weatherTitle").html(this.todayString)}}}else{if(this.isWinterPackage&&this.skiInfo!=null){jQuery(".winter-placeholder").hide()}else{var g=k.getMonth();if(this.climateInfo[g]!=null){var l=jQuery("#divWeatherTitle");l.removeClass("title titleAverage").addClass("titleAverage");var e=jQuery("#weatherTitlePrefix");e.hide();var f=jQuery("#weatherImgContainer");f.hide();var d=jQuery("#weatherTip");d.show();var a=jQuery("#weatherTempr");a.removeClass("tempr temprAverage").addClass("temprAverage");jQuery("#averageTemp").html(this.climateInfo[g].AverageTemperature);jQuery("#weatherTitle").html(this.monthNames[g])}else{jQuery(".weather-placeholder").hide()}}}}}};Ecom.Detail.WeatherComponent.registerClass("Ecom.Detail.WeatherComponent",Sys.UI.Control);