var search=window.search=function(){function w(n){_.forEach($("#search-experience option:not([value=''])"),function(t){var i=$(t),r=i.val();_.some(n,function(n){return n===r})?i.removeClass("disabled").removeAttr("disabled"):i.addClass("disabled").attr("disabled","disabled")})}function b(n){_.forEach($("#search-departure-month option:not([value=''])"),function(t){var i=$(t),r=i.val();_.some(n,function(n){return new Date(n).ddmmyyyy()===r})?i.removeClass("disabled").removeAttr("disabled"):i.addClass("disabled").attr("disabled","disabled")})}function u(){var n=t.find(".departure-airport-tag"),i;n.length>0?$("#departure-airport-any").hide():$("#departure-airport-any").show();i=t.find(".x-more-tags");n.length>2?(i.find(".x-more-value").html(n.length-2),i.show(),$(n).hide(),$(n[0]).show(),$(n[1]).show()):($(n).show(),i.hide())}function k(n){var i=$($.fn.template("departure-airport-tag")),r;i.attr("data-value",n);i.find(".tag-text").html(n);r=t.find(".departure-airport-tag:last");r.length?i.insertAfter(r):t.prepend(i);$(".departure-airport-tag").length>2&&i.hide()}function c(n){$(n,t).remove()}function d(){var n=$(this).closest(".departure-airport-tag"),i=n.data("value"),r=$("#search-departure-airports input[value='"+i+"']");r.prop("checked",!1);$(n,t).remove();u();s()}function g(){var i=$(this),r=i.val(),n;i.is(":checked")?k(r):(n=t.find(".departure-airport-tag[data-value='"+r+"']"),n&&c(n));u()}function nt(i){var f=[],e,r;_.forEach($("#search-departure-airports .checkbox input:not([value=''])"),function(n){var r=$(n),e=r.val(),u,o;_.some(i,function(n){return n.Key===e})?(r.removeAttr("disabled"),r.closest(".checkbox").removeClass("disabled")):(r.attr("disabled","disabled").prop("checked",!1),r.closest(".checkbox").addClass("disabled"));u=t.find(".departure-airport-tag[data-value='"+e+"']");r.prop("checked")===!1&&u.length&&(c(u),o=r.siblings("label").html(),f.push(o))});f.length>0&&(e=n.find("#airport-removed"),r="",_.forEach(f,function(n,t){r+=t===0?n:t===f.length-1?" and "+n:", "+n}),r+=f.length>1?" have":" has",e.find(".dynamic-message").html(r),e.addClass("show"),u())}function tt(n){if(!$(n.target).hasClass("departure-airport-tag")&&!$(n.target).parent().hasClass("departure-airport-tag")){var t=$("#search-departure-airports"),i=$("#search-departure-airport-tags");i.is(n.target)||i.has(n.target).length>0?t.toggle():t.is(n.target)===!1&&t.has(n.target).length===0&&t.hide()}}function r(n){n&&n.preventDefault()}function ut(n){var t=$(this).closest(".card-img").find(".tooltip");n.type==="touchend"?$(t).toggleClass("show"):n.type==="mouseover"?t.addClass("show"):n.type==="mouseout"&&t.removeClass("show")}var h=!1,n,i,e,t,o="[value=''], [value='.'], [value='any'], select:has(option[value='']:selected)",s=function(){function t(){n.find("#search-form-error").show()}function f(n){n?(w(n.Experiences),nt(n.DepartureAirports),b(n.DepartureMonths)):t()}var i=n.data("aggregations-url"),r=n.attr("method"),u=n.find("input, select").not(o).serializeArray();$.ajax({type:r,url:i,data:u,success:f,error:t,dataType:"json"})},l=function(t){r(t);var i=n.attr("action"),u=n.attr("method"),f=n.find("input, select").not(o).serializeArray();utilities.post(i,f,u)},a=function(n){r(n);$("select.search-option option").removeClass("disabled").removeAttr("disabled");$("select.search-option").val("");$("input[type='checkbox'].search-option").parent().removeClass("disabled").removeAttr("disabled");$("input[type='checkbox'].search-option").prop("checked",!1);$(t.find(".departure-airport-tag"),t).remove();u()},v=function(){var n=$("#search-results .card"),r=$("#sort-by"),t=$(r).val(),i;t==="most-relevant"?n=_.orderBy(n,function(n){var t=$(n);return t.data("relevancy-rating")},["desc"]):t.indexOf("price")!==-1&&(i=t==="price-low-high"?"asc":"desc",n=_.orderBy(n,function(n){var t=$(n);return t.data("price")},[i]));$("#search-results").html(n)},f=function(){function n(){alert("We're sorry, an error has occured with your search. Please refresh and try again")}function f(t){t?($("#search-results").html(t),v(),$("#search-results-found").html($("#search-results .card").length)):n()}var t=i.attr("action"),r=i.attr("method"),u=i.find("input").not(o).serializeArray();$.ajax({type:r,url:t,data:u,success:f,error:n,dataType:"html"})},it=function(n){r(n);var t=$(this).closest(".filter-block"),i=$(t).find(".checkbox.hide");$(this).removeClass("show-more-filters").addClass("show-less-filters").text("Show less");$(t).find(".checkbox.hide").toggleClass("hide").addClass("less")},rt=function(n){r(n);var i=$(this).closest(".filter-block"),t=$(i).find(".checkbox.less"),u=t.find(":checked").length;$(this).removeClass("show-less-filters").addClass("show-more-filters").text("Show more ("+t.length+")");t.toggleClass("hide").removeClass("less")},y=function(n){r(n);$(".filter-option").prop("checked",!1);f()},p=function(){if(!h){if(n=$("#search-form"),i=$("#search-filters"),e=$("#search-results"),t=$("#search-departure-airport-tags"),n.length){n.on("change","#search-departure-airports .search-option",g);n.on("change",".search-option",s);n.on("click","#search-go",l);n.on("click","#search-reset",a);on("click",tt)}if(t.length)t.on("click",".departure-airport-tag",d);if(i.length){i.on("change",".filter-option",f);i.on("click","#filters-reset",y);i.on("click",".show-more-filters",it);i.on("click",".show-less-filters",rt);$(".filters h3 span").on("click",function(){$(this).toggleClass("up");$(this).parent().next().toggle()})}if(e.length){$("#sort-by").on("change",v);f();e.on("touchend mouseover mouseout",".offer-link",ut)}h=!0}};return window.jQuery&&window.utilities&&p(),{init:p,resetForm:a,updateForm:s,go:l,getResults:f,resetFilters:y}}()