FareFinder.lowestPrice="";FareFinder.openDateMonth="";FareFinder.openDateYear="";function FareFinder(){this.control=$("#lff");this.culture=$("#cul",this.control).val();this.selectedRoute="ol.frs > li.act";this.routeOutbound="data-route";this.routeReturn="data-routereturn";this.isOneWay=function(){return $(this.selectedRoute).attr("data-ow")=="true"};this.allRoutes="ol.frs > li";this.fromText=$("ol.frs",this.control).attr("data-from");this.oneWayText=$("ol.frs",this.control).attr("data-oneway");this.returnText=$("ol.frs",this.control).attr("data-return");this.Accordion=$("#lffAcc",this.control);this.AccTitleDepart=$("#ttlDep",this.control);this.AccTitleReturn=$("#ttlRet",this.control);this.AccDepartDateLink=$(".chgDate",this.AccTitleDepart);this.AccDepartDateValue=$(".selDate",this.AccTitleDepart);this.AccReturnDateLink=$(".chgDate",this.AccTitleReturn);this.AccReturnDateValue=$(".selDate",this.AccTitleReturn);this.departContainer=$("#depCon",this.control);this.returnContainer=$("#retCon",this.control);this.calendarSelectReturn=".calSelRtn";this.calendarSelectDepart=".calSelDep";this.calendarChangeDepart=".calChgDep";this.calendarChangeReturn=".calChgRtn";this.calendarOneWay=".btnOneWay";this.calendarReturn=".btnReturn";this.calendarContainer=".calCon";this.tabs=$("ul.lffTabs li",this.control);this.fromXtoTitle=$("#rteFrom",this.control);this.fromXList=$("#departureList",this.control);this.fromXListItems=$("li",this.fromXList);this.activePanel="chartDep";this.calendarOptions=".calOptCont";this.titleDate=".selDate";this.fromAirport=$("#fromApt",this.control);this.calendarKey=$("#calendarKey",this.control);this.formDepartDate=$("#depDte",this.control);this.formReturnDate=$("#retDte",this.control);this.formDepartLowest=$("#depIsLow",this.control);this.formReturnLowest=$("#retIsLow",this.control);this.formOneWay=$("#owy",this.control);this.formFrom=$("#frm",this.control);this.formTo=$("#to",this.control);this.counters=$("#adult .count, #children .count",this.control);this.minusButton=$(".minus",this.control);this.plusButton=$(".plus",this.control);this.partyMessage=$("#maxPax",this.control);this.Initialise()}FareFinder.prototype.ToggleAccordionIcon=function(){if($(this).hasClass("arrow-e")){$(this).removeClass("arrow-e arrow-s");return"arrow-s"}else{$(this).removeClass("arrow-e arrow-s");return"arrow-e"}};FareFinder.prototype.onPlusMinusClick=function(h){var k=$(h.currentTarget),b=k.prevAll(".count"),j=b.data("type"),e=b.data("min"),d=b.data("max"),g=$("#adult .count",this.control),i=$("#children .count",this.control),f=$("#infants .count",this.control),a=parseInt(b.html()),c=a;switch(h.data.op){case"-":if(a>e){c=a-1;b.html(c)}break;case"+":if(a<d){c=a+1;b.html(c)}}switch(j){case"adult":f.data("max",c);i.data("max",9-c);f.html()>g.html()&&f.html(c);break;case"child":g.data("max",9-c)}$.each($(".people",this.control),function(){b=$(this).find(".count");e=b.data("min");d=b.data("max");a=parseInt(b.html());var f=$(this).find(".minus"),c=$(this).find(".plus"),g=false;if(a==e){f.addClass("limit");c.removeClass("limit");g=true}if(a==d){f.removeClass("limit");c.addClass("limit");g=true}if(a==d&&a==e){f.addClass("limit");c.addClass("limit");g=true}if(!g){f.removeClass("limit");c.removeClass("limit")}});this.LoadCalendarContent(this.activePanel,FareFinder.openDateMonth,FareFinder.openDateYear)};FareFinder.prototype.Initialise=function(){this.Accordion.accordion({autoHeight:false,change:$.proxy(this.onDirectionChange,this)});this.tabs.bind("click",$.proxy(this.OnRegionChange,this));$(this.allRoutes,this.control).live("click",$.proxy(this.onRouteSelection,this));this.AccDepartDateLink.bind("click",$.proxy(this.LoadAccordionDepartPanel,this));this.AccReturnDateLink.bind("click",$.proxy(this.LoadAccordionReturnPanel,this));this.fromXtoTitle.click($.proxy(function(){this.fromXList.show().addClass("sel")},this));$(document).click($.proxy(function(a){!$(a.target).closest(this.fromXtoTitle).length&&this.fromXList.removeClass("sel").hide()},this));this.fromXListItems.click(function(){window.location.href=$(this).find("a").prop("href")});this.onRouteSelection();this.minusButton.on("click",{op:"-"},$.proxy(this.onPlusMinusClick,this));this.plusButton.on("click",{op:"+"},$.proxy(this.onPlusMinusClick,this));this.onDatePickerUpdate();this.onDatePickerGenerateHTML();$(document).on("mouseenter",".available, .not-available",function(){$(this).find(".ui-state-default").addClass("blueHover");$(this).find(".month, .fare span").addClass("white")});$(document).on("mouseleave",".available, .not-available",function(){$(this).find(".ui-state-default").removeClass("blueHover");$(this).find(".month, .fare span").removeClass("white")});$(document).on("mouseenter","#rteSelect .blueCircle",function(){$(".tooltip").fadeIn(300)});$(document).on("mouseleave","#rteSelect .blueCircle",function(){$(".tooltip").fadeOut(300)})};FareFinder.prototype.onDatePickerGenerateHTML=function(){var a=$.datepicker._generateHTML;$.datepicker._generateHTML=function(d){var e=$(a.apply(this,arguments)),h=d.selectedDay+"/"+(d.selectedMonth+1)+"/"+d.selectedYear,b=$.datepicker.parseDate("dd/mm/yy",h),f=new Date((new Date(b)).setMonth(b.getMonth()+1)),g=new Date((new Date(b)).setMonth(b.getMonth()+-1)),c={monthNamesShort:$.datepicker.regional[""].monthNamesShort},k=$.datepicker.formatDate("M",b,c),j=$.datepicker.formatDate("M",g,c),i=$.datepicker.formatDate("M",f,c);$.each(e.find("tbody td","#lff"),function(d,e){var a=$(e),c=k;if(a.hasClass("ui-datepicker-other-month"))c=d<7?j:i;a.append('<span class="month">'+c+"</span>");a.hasClass("available")&&a.append('<div class="fare"><span>'+FareFinder.lowestPrice+"</span></div>");a.hasClass("not-available")&&a.append('<div class="fare"><span>Other fares</span></div>');var b=a.find(".ui-state-default");b.html().length==1&&b.html("0"+b.html());a.wrapInner('<div class="cont" />')});return e}};FareFinder.prototype.onDatePickerUpdate=function(){var a=$.datepicker._updateDatepicker;$.datepicker._updateDatepicker=function(){a.apply(this,arguments);$.each($(".available, .not-available","#lff"),function(d,a){var c=FareFinder.lowestPrice+" fare available. <br/> Click to select date and fare.",b="Other fares available. <br/> Click to select date and fare.";$(a).qtip({content:$(a).hasClass("available")?c:b,position:{my:$(a).next().length==0?"bottom right":"bottom left",at:"top right"}})})}};FareFinder.prototype.onRouteSelection=function(a){if(a){$(this.selectedRoute,this.control).switchClass("act","nonact",0);$(a.currentTarget,this.control).switchClass("nonact","act",0)}this.formOneWay.val(this.isOneWay());this.formDepartDate.val($(this.selectedRoute).attr(this.routeOutbound));this.formReturnDate.val($(this.selectedRoute).attr(this.routeReturn));if(this.isOneWay()){this.AccTitleReturn.show();this.AccTitleDepart.removeClass("ow")}else{this.AccTitleReturn.hide();this.AccTitleDepart.addClass("ow")}this.AccDepartDateValue.html("");this.AccReturnDateValue.html("");this.formDepartDate.val("");this.formReturnDate.val("");this.LoadAccordionDepartPanel();this.LoadCalendarContent(this.activePanel);this.Track()};FareFinder.prototype.GetPartySize=function(){var a=0;$.each(this.counters,function(){a=a+parseInt($(this).html())});return a};FareFinder.prototype.LoadCalendarContent=function(c,d,e){var a,f,h,b,g;d=d||(new Date).getMonth()+1;e=e||(new Date).getFullYear();if(c=="chartDep"){a=$(this.calendarContainer,this.departContainer);h=this.fromAirport.html();f=$(".dst",$(this.selectedRoute)).html();b=$(this.selectedRoute).attr(this.routeOutbound)}else if(c=="chartRet"){a=$(this.calendarContainer,this.returnContainer);h=$(".dst",$(this.selectedRoute)).html();f=this.fromAirport.html();b=$(this.selectedRoute).attr(this.routeReturn)}$(".button",this.calendarOption).live("click",$.proxy(this.MakeBooking,this));$(this.calendarSelectReturn+","+this.calendarChangeReturn,this.departContainer).bind("click",$.proxy(this.LoadAccordionReturnPanel,this));$(this.calendarSelectDepart+","+this.calendarChangeDepart,this.returnContainer).bind("click",$.proxy(this.LoadAccordionDepartPanel,this));$.getJSON("/bmi/src/svc/farefinder/farefinderdata.svc/getfaresformonthbyday?r="+b+"&o="+this.isOneWay()+"&m="+d+"&y="+e,$.proxy(function(k){var i=this.ParseFares(k);$(this.calendarOptions).children().hide();$(".calendar",a).datepicker("destroy");var j=this.GetPartySize();j==9?this.partyMessage.slideDown():this.partyMessage.slideUp();$(".calendar",a).datepicker({dateFormat:"dd/mm/yy",maxDate:"+357d",onSelect:$.proxy(this.OnCalendarSelect,this),beforeShowDay:$.proxy(function(b){for(var c=[false,"other-month"],a=0;a<i.length;a++)if(b.getDate()==i[a].date.getDate()&&b.getMonth()==i[a].date.getMonth()&&b.getYear()==i[a].date.getYear()&&i[a].maxSeats>=j&&i[a].isLowest){c=[true,"available"];g=i[a].currencyPrice;FareFinder.lowestPrice=g;break}else if(b.getDate()==i[a].date.getDate()&&b.getMonth()==i[a].date.getMonth()&&b.getYear()==i[a].date.getYear()&&i[a].maxSeats>=j&&!i[a].isLowest){c=[true,"not-available"];break}return c},this),onChangeMonthYear:$.proxy(function(e,d){if(c=="chartDep")b=$(this.selectedRoute).attr(this.routeOutbound);else if(c=="chartRet")b=$(this.selectedRoute).attr(this.routeReturn);FareFinder.openDateMonth=d;FareFinder.openDateYear=e;$.ajax({url:"/bmi/src/svc/farefinder/farefinderdata.svc/getfaresformonthbyday?r="+b+"&o="+this.isOneWay()+"&m="+d+"&y="+e,dataType:"json",async:false,success:$.proxy(function(b){i=this.ParseFares(b);i.length>0?$(".calPrice",a).html(g+" fare available"):$(".calPrice",a).html("Lowest fare available")},this)})},this)});$(".calRoute",a).html("From "+h+" to "+f);if(this.isOneWay())$("#rtnMessage").hide();else $("#rtnMessage").show();$(".calendar",a).datepicker("option",$.datepicker.regional[this.culture]);$(".calendar",a).datepicker("option","dayNamesMin",$.datepicker.regional[this.culture].dayNamesShort);$(".calendar",a).datepicker("option","prevText","Previous month");$(".calendar",a).datepicker("option","nextText","Next month");$(".calendar",a).datepicker("setDate","01/"+d+"/"+e);$(".calendar").find(".ui-state-active").removeClass("ui-state-active").removeClass("ui-state-hover").parent().trigger("mouseleave");$(".calendar").find(".ui-state-highlight").parent().parent().removeClass("ui-datepicker-current-day");$(".calendar",a).fadeTo("slow",1)},this))};FareFinder.prototype.ParseFares=function(b){var a=[];b!=null&&$.each(b,function(c,b){a.push({date:new Date(parseInt(b.Date.replace(/\/+Date\(([\d+-]+)\)\/+/,"$1"))),currencyPrice:b.CurrencySymbolPrice,seats:b.Seats,isLowest:b.IsLowestFare,maxSeats:b.MaxSeats})});return a};FareFinder.prototype.OnCalendarSelect=function(b,m){var f,c,e,h=this.isOneWay(),a;if(this.activePanel=="chartDep"){f=this.formDepartLowest;c=this.AccTitleDepart;e=true;a=$(this.calendarContainer,this.departContainer);this.formDepartDate.val(b)}else{f=this.formReturnLowest;c=this.AccTitleReturn;e=false;a=$(this.calendarContainer,this.returnContainer);this.formReturnDate.val(b)}var l=$.datepicker.parseDate("dd/mm/yy",b),j=$.datepicker.formatDate("DD, dd MM yy",l,{monthNames:$.datepicker.regional[this.culture].monthNames,dayNames:$.datepicker.regional[this.culture].dayNames});$(this.titleDate,c).html(j);f.val($(".calendar",a).find("td a:contains("+m.selectedDay+")").eq(0).parentsUntil("tr").hasClass("available"));var d=this.formDepartDate.val(),g=this.formReturnDate.val();if(!h){b=$.datepicker.parseDate("dd/mm/yy",d);b.setDate(b.getDate()+7);var k=$.datepicker.formatDate("dd/mm/yy",b),i=$.datepicker.formatDate("DD, dd MM yy",b,{monthNames:$.datepicker.regional[this.culture].monthNames,dayNames:$.datepicker.regional[this.culture].dayNames});this.formReturnDate.val(k);this.AccReturnDateValue.html(i)}if(d&&d.length>0)if(h)if(g&&g.length>0){$(this.calendarOneWay+", "+this.calendarSelectReturn+", "+this.calendarSelectDepart,a).hide();$(this.calendarReturn,a).show();if(e){$(this.calendarChangeDepart,a).hide();$(this.calendarChangeReturn,a).show()}else{$(this.calendarChangeDepart,a).show();$(this.calendarChangeReturn,a).hide()}}else{$(this.calendarSelectReturn+", "+this.calendarOneWay,a).show();$(this.calendarReturn+", "+this.calendarSelectDepart+", "+this.calendarChangeReturn+", "+this.calendarChangeDepart,a).hide()}else{$(this.calendarOneWay+", "+this.calendarSelectReturn+", "+this.calendarChangeReturn+", "+this.calendarChangeDepart+", "+this.calendarSelectDepart,a).hide();$(this.calendarReturn,a).show()}else{$(this.calendarOneWay+", "+this.calendarReturn+", "+this.calendarSelectReturn+", "+this.calendarChangeReturn+", "+this.calendarChangeDepart,a).hide();$(this.calendarSelectDepart,a).show()}};FareFinder.prototype.onDirectionChange=function(g,b){var c=$(b.newHeader).attr("id");$(b.oldHeader).find(".arrow").toggleClass(this.ToggleAccordionIcon);$(b.newHeader).find(".arrow").toggleClass(this.ToggleAccordionIcon);if(c=="ttlDep")this.activePanel="chartDep";else if(c=="ttlRet")this.activePanel="chartRet";var a=this.formDepartDate.val();if(a&&a.length>0){var e=$.datepicker.parseDate("dd/mm/yy",a),d=e.getMonth()+1,f=e.getFullYear();FareFinder.openDateMonth=d;FareFinder.openDateYear=f;this.LoadCalendarContent(this.activePanel,d,f)}else{FareFinder.openDateMonth=null;FareFinder.openDateYear=null;this.LoadCalendarContent(this.activePanel)}};FareFinder.prototype.LoadAccordionDepartPanel=function(){this.Accordion.accordion("activate",0);return false};FareFinder.prototype.LoadAccordionReturnPanel=function(){this.Accordion.accordion("activate",1);return false};FareFinder.prototype.OnRegionChange=function(d){var a=$(d.currentTarget);$("li.sel",a.parent()).switchClass("sel","nonsel",0);a.switchClass("nonsel","sel",0);var c=$(this.selectedRoute).attr(this.routeOutbound).substr(0,3),b=a.attr("data-regionId");$(".frs",this.control).empty();$.getJSON("/bmi/src/svc/farefinder/farefinderdata.svc/getfaresforregion?d="+c+"&r="+b,$.proxy(function(a){$.each(a,$.proxy(function(b,a){$(".frs",this.control).append($("<li>").attr("class",b==0?"act":"nonact").attr("data-route",a.Route.From+a.Route.To).attr("data-routereturn",a.Route.To+a.Route.From).attr("data-currency",a.Currency).attr("data-currencysymbol",a.CurrencySymbolPrice).attr("data-price",a.Price).attr("data-ow",a.Route.IsOneWay).html($("<a>").html($("<div>").attr("class","dst").html(a.Route.ToName)).append($("<div>").attr("class","far").html(this.fromText+" "+a.CurrencySymbolPrice)).append($("<div>").attr("class","owr").attr("data-ow",a.Route.IsOneWay).html(a.Route.IsOneWay?this.oneWayText:this.returnText))).append($("<div>").attr("class","arr img_sprt").html("")))},this));this.onRouteSelection()},this))};FareFinder.prototype.MakeBooking=function(){$("#__VIEWSTATE").remove();var a="not lowest fare";if(this.formDepartLowest.val()=="true"||this.formReturnLowest.val()=="true")a="lowest fare";$("input[name=cityfrominput0]").val(this.formFrom.val());$("input[name=citytoinput0]").val(this.formTo.val());$("input[name=fb_numpaxadt]").val($("#adult .count",this.control).html());$("input[name=fb_numpaxchd]").val($("#children .count",this.control).html());$("input[name=fb_numpaxinf]").val($("#infants .count",this.control).html());$("input[name=outbound]").val(this.formDepartDate.val());$("input[name=flexibledates]").val("1");$("input[name=return]").val(this.formReturnDate.val());$("input[name=ibesource]").val("Low fare finder - "+a);$("form").attr("action","http://www.flybmi.com/book/index.aspx").submit();return false};FareFinder.prototype.Track=function(){var d=$(this.selectedRoute).attr(this.routeOutbound),b=d.substr(0,3),c=d.substr(3,3);this.formFrom.val(b);this.formTo.val(c);if(b.length>0&&c.length>0){var a=new OmnitureCustomLink(true,"Low fare finder");a.AddEvent(54);a.AddEvar("1",b);a.AddEvar("2",c);a.AddEvar("3",b+"-"+c);a.Report()}};function Splash(){this.context=$("#main");this.selectedCountry=$("#countries",this.context);this.selectedLanguage=$("#languages",this.context);this.readMorePanel=$("#rd_mor",this.context);this.contentPanel=$("#pnl",this.context);this.flag=$("#flag",this.context);this.MoreInfoClick=function(){this.readMorePanel.hide();this.contentPanel.css({height:"auto",marginBottom:"1px"}).find(".pnl_txt p").css({paddingBottom:"10px"});return false};this.FilterLanguages=function(){this.UpdateFlag();$.post(window.location.pathname,"country="+this.selectedCountry.val(),$.proxy(this.FilterLanguagesSuccess,this))};this.FilterLanguagesSuccess=function(a){if(a){var b=this.selectedLanguage.val();this.selectedLanguage.find("option").remove();$.each(a,$.proxy(function(b,a){this.selectedLanguage.append($("<option/>").val(a.code).html(a.name))},this));this.selectedLanguage.val(b)}};this.UpdateFlag=function(){this.flag.attr("class","img_sprt img_"+this.selectedCountry.val())};this.readMorePanel.find("a").bind("click",$.proxy(this.MoreInfoClick,this));this.selectedCountry.bind("change",$.proxy(this.FilterLanguages,this));this.FilterLanguages();this.UpdateFlag()};
