// source --> https://folsomchicagospizzatwist.com/wp-content/plugins/woo-exfood/js/food.min.js?ver=3.4 
!function(T){"use strict";"object"==typeof google&&"object"==typeof google.maps&&google.maps.event.addDomListener&&(google.maps.event.addDomListener(window,"load",function(){var t,e=document.getElementById("exwf-user-address");jQuery(".exwf-sugges-list").length||null!=e&&(t=new google.maps.places.Autocomplete(e),""!=(e=jQuery("#exwf_auto_limit").val())&&t.setComponentRestrictions({country:jQuery.parseJSON(e)}),google.maps.event.addListener(t,"place_changed",function(){var e=t.getPlace();""!=e.geometry.location.lat()&&e.geometry.location.lng()}))}),google.maps.event.addDomListener(window,"load",function(){var f,e;jQuery(".exwf-sugges-list").length||null!=(e=document.getElementById("billing_address_1"))&&"yes"!=jQuery("#exwf_dis_auto").val()&&(f=new google.maps.places.Autocomplete(e),""!=(e=jQuery("#exwf_auto_limit").val())&&f.setComponentRestrictions({country:jQuery.parseJSON(e)}),google.maps.event.addListener(f,"place_changed",function(){for(var e=f.getPlace(),t=e.address_components,a="",o="",i="",d="",n="",l="",r="",s="",c=0;c<t.length;++c)-1!==jQuery.inArray("street_number",t[c].types)?o=t[c].long_name:-1!==jQuery.inArray("route",t[c].types)?i=t[c].long_name:-1!==jQuery.inArray("neighborhood",t[c].types)?d=t[c].long_name:-1!==jQuery.inArray("locality",t[c].types)||""==n&&-1!==jQuery.inArray("administrative_area_level_1",t[c].types)?n=t[c].long_name:-1!==jQuery.inArray("administrative_area_level_1",t[c].types)&&-1!==jQuery.inArray("political",t[c].types)?s=t[c].short_name:-1!==jQuery.inArray("country",t[c].types)?l=t[c].short_name:-1!==jQuery.inArray("postal_code",t[c].types)&&(r=t[c].long_name);a=0<(""!=o?e.name.indexOf(o):0)?i+" "+o+(""!=d?" "+d:""):o+" "+i+(""!=d?" "+d:"");jQuery("#billing_address_1").val(a),jQuery("select#billing_country").val(l).trigger("change"),jQuery("#billing_city").val(n),jQuery("#billing_state").val(s).trigger("change"),jQuery("#billing_postcode").val(r)}))}),google.maps.event.addDomListener(window,"load",function(){var f,e;jQuery(".exwf-sugges-list").length||null!=(e=document.getElementById("shipping_address_1"))&&"yes"!=jQuery("#exwf_dis_auto").val()&&(f=new google.maps.places.Autocomplete(e),""!=(e=jQuery("#exwf_auto_limit").val())&&f.setComponentRestrictions({country:jQuery.parseJSON(e)}),google.maps.event.addListener(f,"place_changed",function(){for(var e=f.getPlace(),t=e.address_components,a="",o="",i="",d="",n="",l="",r="",s="",c=0;c<t.length;++c)-1!==jQuery.inArray("street_number",t[c].types)?o=t[c].long_name:-1!==jQuery.inArray("route",t[c].types)?i=t[c].long_name:-1!==jQuery.inArray("neighborhood",t[c].types)?d=t[c].long_name:-1!==jQuery.inArray("locality",t[c].types)||""==n&&-1!==jQuery.inArray("administrative_area_level_1",t[c].types)?n=t[c].long_name:-1!==jQuery.inArray("administrative_area_level_1",t[c].types)&&-1!==jQuery.inArray("political",t[c].types)?s=t[c].short_name:-1!==jQuery.inArray("country",t[c].types)?l=t[c].short_name:-1!==jQuery.inArray("postal_code",t[c].types)&&(r=t[c].long_name);a=0<(""!=o?e.name.indexOf(o):0)?i+" "+o+(""!=d?" "+d:""):o+" "+i+(""!=d?" "+d:"");jQuery("#shipping_address_1").val(a),jQuery("select#shipping_country").val(l).trigger("change"),jQuery("#shipping_city").val(n),jQuery("#shipping_state").val(s).trigger("change"),jQuery("#shipping_postcode").val(r)}))})),T(document).ready(function(){function c(o,i,e,t,a,d,n,l,r,s){T.fn.extl_datepicker.dates.en={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:l,months:d,monthsShort:n,today:"Today",clear:"Clear",titleFormat:"MM yyyy",weekStart:r},o.extl_datepicker({todayHighlight:!0,startDate:"0"!=a?new Date(a):new Date,autoclose:!0,format:i,daysOfWeekDisabled:"undefined"!=e&&""!=e?e:"[]",datesDisabled:"undefined"!=t&&""!=t?t:"[01/01/1000]"}).on("show",function(e){}).on("changeDate",function(e){var t,a=o.val();t="mm/dd/yyyy"!=i?a.split("-").reverse().join("-"):(t=a.split("/"))[2]+"-"+t[0]+"-"+t[1],"yes"==s?(a=o.data("current_url"),(a=new URL(a)).searchParams.set("menu-date",t),jQuery(".exwf-menu-bydate select.exwf-menu-date").append(T("<option>",{value:a,text:"My option"})),jQuery('.exwf-menu-bydate select.exwf-menu-date option[value="'+a+'"]').attr("selected","selected").attr("data-date",t),setTimeout(function(){jQuery(".exwf-menu-bydate select.exwf-menu-date").change()},150)):jQuery(".gr-date-time input#exwfood_date_deli").attr("data-date",t)})}var e,t,a,o,n,i;function d(){var e,t;t=jQuery(".exwf-deli-field input[name=exwfood_date_deli]").length?(e=jQuery(".exwf-deli-field input[name=exwfood_date_deli]"),"no"):(e=jQuery(".exwf-menu-bydate input[name=exwfood_date_deli]"),"yes");var a="mm/dd/yyyy",o=e.data("disday")+"",i=e.data("disdate"),d=e.data("fm");""!=d&&null!=d&&(a=d);var n=e.data("mindate"),l=e.data("fmon"),r=e.data("smon"),s=e.data("sday"),d=e.data("fiday");c(e,a,o,i,n,l,r,s,d,t)}function l(e,t,a,o,i,d){a={action:"exwoofood_booking_info",id_food:e,id_crsc:t,cart_itemkey:d,param_shortcode:a};T.ajax({type:"post",url:o,dataType:"html",data:a,success:function(e){var t,a;"0"==e||""==e?T(".row.loadmore").html("error"):(t="#food_modal",T("body > .ex-fdlist #food_modal").length&&(t="body > .ex-fdlist #food_modal"),T(t).empty(),T(t).append(e),null!=(e=T(t).attr("data-dljsvar"))&&0<e?setTimeout(function(){var e=T(t+" .modal-content").find(".variations_form");e.each(function(){T(this).wc_variation_form()}),e.trigger("check_variations"),e.trigger("reset_image")},e):((a=T(t+" .modal-content").find(".variations_form")).each(function(){T(this).wc_variation_form()}),a.trigger("check_variations"),a.trigger("reset_image")),"function"==typeof T.fn.init_addon_totals&&T("body").find(".cart:not(.cart_group)").each(function(){T(this).init_addon_totals()}),0!=i&&i.removeClass("ex-loading"),T("html").css("max-width",n),T("html").fadeIn("slow",function(){T(this).addClass("exfd-hidden-scroll")}),T(t).css("display","block"),T(t).addClass("exfd-modal-active"),a=T(t+" .exfd-modal-carousel").attr("rtl_mode"),T(t+" .exfd-modal-carousel:not(.ex_s_lick-initialized)").EX_ex_s_lick({dots:!0,slidesToShow:1,infinite:!0,speed:500,fade:!0,cssEase:"linear",arrows:!0,rtl:"yes"==a,adaptiveHeight:!0}),T(t+" .woosb-wrap").length&&T(document).trigger("woosq_loaded"),setTimeout(function(){var e=T(t+" .ex-modal-big").height();T(t+" .fd_modal_img").height()<e&&767<T(window).width()&&T(t+" .ex-modal-big").addClass("ex-padimg")},10),setTimeout(function(){T(t+" .exfd-modal-carousel:not(.exwp-no-galle)").EX_ex_s_lick("setPosition")},150),setTimeout(function(){T(t+" .exfd-modal-carousel:not(.exwp-no-galle)").EX_ex_s_lick("setPosition")},300),T(document).trigger("exwfqv_loaded"),T(t+" .mnm_form").length&&T("body").trigger("quick-view-displayed"))}})}function r(e,t,a){var o,i,d=e.closest(".ex-fdlist").attr("id"),n=T("#"+d).hasClass("table-layout")?"table":"";T("#"+d).hasClass("ex-loading")||(T("#"+d).addClass("ex-loading"),T("#"+d).hasClass("list-layout")&&(n="list"),o=T("#"+d+" input[name=param_query]").val(),i=T("#"+d+" input[name=ajax_url]").val(),e=T("#"+d+" input[name=param_shortcode]").val(),a={action:"exfood_menuegory",param_query:o,id_crsc:d,param_shortcode:e,layout:n,key_word:t,cat:a},T.ajax({type:"post",url:i,dataType:"json",data:a,success:function(e){var t,a;"0"!=e?(T("#"+d+" .ex-loadmore").length&&(t=1,("off"==e.page_navi?T("#"+d+" .ex-loadmore .loadmore-exfood"):T("#"+d+" .ex-loadmore")).remove()),T("#"+d+" input[name=num_page_uu]").val("1"),T("#"+d+" input[name=current_page]").val("1"),a="",a=T("table"==n?"#"+d+" table tbody":"list"==n?"#"+d+" .ctlist":"#"+d+" .ctgrid"),""!=e.page_navi&&"off"!=e.page_navi?1==t?T("#"+d).append(e.page_navi):(T("#"+d+" .exfd-pagination").fadeOut({duration:0,complete:function(){T(this).remove()}}),T("#"+d+" .exfd-pagination-parent").append(e.page_navi)):"off"==e.page_navi&&T("#"+d+" .exfd-pagination .page-navi").fadeOut({duration:0,complete:function(){T(this).remove()}}),T("#"+d).removeClass("ex-loading"),T(a).fadeOut({duration:0,complete:function(){T(this).empty(),a.append(e.html_content).fadeIn()}}),T("#"+d+" .exwf-dcat").length&&T("#"+d+" .exwf-dcat").remove(),"table"==n?T(e.html_dcat).insertBefore("#"+d+" .ctlist"):"list"==n&&T("#"+d+".category_left").length?T("#"+d+" .ctlist").prepend(e.html_dcat):T(e.html_dcat).insertBefore(a),""!=e.html_modal&&(T("#"+d+" .ex-hidden .exp-mdcontaner").fadeOut({duration:0,complete:function(){T(this).empty()}}),T("#"+d+" .ex-hidden .exp-mdcontaner").append(e.html_modal).fadeIn()),s()):T("#"+d+" .loadmore-exfood").html("error")}}))}function s(){T(".ex-food-plug .loadmore-exfood").on("click",function(){var e,t;T(this).hasClass("disable-click")||(t=(e=T(this)).closest(".ex-fdlist").attr("id"),f("loadmore",e,t,""))})}function f(a,o,i,e){"loadmore"!=a&&T("#"+i+" .page-numbers").removeClass("disable-click"),o.addClass("disable-click");var d=T("#"+i+" input[name=num_page_uu]").val();T("loadmore"==a?"#"+i+" .loadmore-exfood":"#"+i).addClass("ex-loading");var n=T("#"+i).hasClass("table-layout")?"table":"";T("#"+i).hasClass("list-layout")&&(n="list");var t=T("#"+i+" input[name=param_query]").val(),l=T("#"+i+" input[name=param_ids]").val(),r=T("#"+i+" input[name=current_page]").val(),s=T("#"+i+" input[name=num_page]").val(),c=T("#"+i+" input[name=ajax_url]").val(),f=T("#"+i+" input[name=param_shortcode]").val(),f={action:"exwoofood_loadmore",param_query:t,param_ids:l,id_crsc:i,page:""!=e?e:+r+1,param_shortcode:f,layout:n};T.ajax({type:"post",url:c,dataType:"json",data:f,success:function(e){var t;"0"!=e?("loadmore"==a?(d=+d+1,T("#"+i+" input[name=num_page_uu]").val(d),""==e.html_content?T("#"+i+" .loadmore-exfood").remove():(T("#"+i+" input[name=current_page]").val(+r+1),"table"==n?T("#"+i+" table tbody").append(e.html_content):"list"==n?T("#"+i+" .ctlist").append(e.html_content):(T("#"+i+" .ctgrid").append(e.html_content),setTimeout(function(){T("#"+i+" .item-grid").addClass("active")},200)),T("#"+i+" .loadmore-exfood").removeClass("ex-loading"),o.removeClass("disable-click")),d==s&&T("#"+i+" .loadmore-exfood").remove()):(t="",t=T("table"==n?"#"+i+" table tbody":"list"==n?"#"+i+" .ctlist":"#"+i+" .ctgrid"),T(t).fadeOut({duration:0,complete:function(){T(this).empty()}}),T("#"+i).removeClass("ex-loading"),t.append(e.html_content).fadeIn(),jQuery(window).height(),jQuery("html,body").animate({scrollTop:jQuery("#"+i).offset().top-50},"slow")),""!=e.html_modal&&T("#"+i+" .ex-hidden .exp-mdcontaner").append(e.html_modal).fadeIn(),T("#"+i).hasClass("extp-masonry")&&!T("#"+i).hasClass("column-1")&&"function"==typeof imagesLoaded&&T("#"+i+".extp-masonry .ctgrid").imagesLoaded(function(){T("#"+i+".extp-masonry .ctgrid").masonry("reloadItems"),T("#"+i+".extp-masonry .ctgrid").masonry({isInitLayout:!1,horizontalOrder:!0,itemSelector:".item-grid"})})):T("#"+i+" .loadmore-exfood").html("error")}})}function u(e,t,a,o,i,d,n,l,r,s){jQuery(e).hasClass("ex_s_lick-initialized")||jQuery(e).EX_ex_s_lick({infinite:t,initialSlide:a,rtl:"yes"==o,prevArrow:'<button type="button" class="ex_s_lick-prev"></button>',nextArrow:'<button type="button" class="ex_s_lick-next"></button>',slidesToShow:i,slidesToScroll:d,dots:!0,autoplay:1==n,autoplaySpeed:""!=l?l:3e3,arrows:!0,centerMode:!1,focusOnSelect:!1,ariableWidth:!0,adaptiveHeight:!0,responsive:[{breakpoint:1024,settings:{slidesToShow:i,slidesToScroll:d}},{breakpoint:769,settings:{slidesToShow:""!=s?s:2,slidesToScroll:1}},{breakpoint:480,settings:{slidesToShow:r,slidesToScroll:1}}]})}jQuery(document).ready(function(e){jQuery(".ex-fdlist").length&&!jQuery("body > .ex-fdlist").length&&(jQuery("body").append('<div class="ex-fdlist"></div>'),jQuery("body > .ex-fdlist").append(jQuery(".exfd-cart-content:not(.exwf-sccart)")),jQuery("body > .ex-fdlist").append(jQuery(".exfd-shopping-cart")),jQuery("body > .ex-fdlist").append(jQuery(".exfd-overlay")),jQuery("body > .ex-fdlist").append(jQuery("#food_modal")),jQuery(".ex-popup-location.ex-popup-active").length&&jQuery("body > .ex-fdlist").append(jQuery(".ex-popup-location.ex-popup-active")),jQuery("body > .ex-fdlist .exwf-order-method").length||jQuery("body > .ex-fdlist").append(jQuery(".exwf-order-method")),jQuery("body > .ex-fdlist").append(jQuery(".exwf-opcls-info:not(.exwf-odtype)")),jQuery("body > .ex-fdlist").append(jQuery(".exwf-mbnav").first()))}),0<jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").length&&(e=jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]"),t="mm/dd/yyyy",a=jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("disday")+"",i=jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("disdate"),""!=(o=jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("fm"))&&null!=o&&(t=o),c(e,t,a,i,jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("mindate"),jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("fmon"),jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("smon"),jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("sday"),jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("fiday"),"")),(jQuery(".exwf-menu-bydate input[name=exwfood_date_deli]").length||jQuery(".exwf-deli-field input[name=exwfood_date_deli]").length)&&d(),jQuery(document).on("exwf_datetime_loaded",function(e){setTimeout(function(){(jQuery(".exwf-menu-bydate input[name=exwfood_date_deli]").length||jQuery(".exwf-deli-field input[name=exwfood_date_deli]").length)&&d()},200)}),n=T("html").width(),T(window).resize(function(){T("html").css("max-width",""),n=T("html").width(),"block"==T(".ex_modal.exfd-modal-active").css("display")&&T("html").css("max-width",n)}),T("body").on("click",".ex-fdlist.ex-food-plug:not(.exfdisable-modal) .parent_grid .ctgrid a:not(.mndate-sl), .ex-fdlist.ex-food-plug:not(.exfdisable-modal) .parent_grid .scrs-grid a:not(.mndate-sl), .ex-fdlist:not(.exfdisable-modal) .ctlist a:not(.mndate-sl)",function(e){var t,a=T(this).closest(".ex-fdlist ").attr("id"),o=T("#"+a).hasClass("table-layout")?"table":"";if(T("#"+a).hasClass("ex-fdcarousel")&&(o="Carousel"),t="table"!=o?T(this).closest(".item-grid"):T(this).closest("tr"),!t.hasClass("ex-redirect")&&(e.preventDefault(),!t.hasClass("ex-loading"))){T(".ex-fdlist .item-grid, .ex-fdlist tr").removeClass("exwf-crfood"),t.addClass("exwf-crfood"),t.addClass("ex-loading");o=t.data("id_food"),e=T("#"+a+" input[name=ajax_url]").val();return l(o,a,T("#"+a+" input[name=param_shortcode]").val(),e,t,""),!1}}),T("body").on("click",".exwf-nepr .exwf-previous:not(.exwf-disclick), .exwf-nepr .exwf-next:not(.exwf-disclick)",function(e){var t;if(e.preventDefault(),(t=T(this).hasClass("exwf-next")?T(".ex-fdlist .exwf-crfood").next():T(".ex-fdlist .exwf-crfood").prev()).length){T(".ex-fdlist .item-grid, .ex-fdlist tr").removeClass("exwf-crfood"),t.addClass("exwf-crfood");var a=t.closest(".ex-fdlist ").attr("id");T("#"+a).hasClass("table-layout");T("#"+a).hasClass("ex-fdcarousel");var o=t.data("id_food"),e=T("#"+a+" input[name=ajax_url]").val();return l(o,a,T("#"+a+" input[name=param_shortcode]").val(),e,t,""),!1}}),T(document).on("exwfqv_loaded",function(e){return jQuery(".exwf-nepr .exwf-previous").length&&(T(".ex-fdlist .exwf-crfood").next().length||jQuery(".exwf-nepr .exwf-next").addClass("exwf-disclick"),T(".ex-fdlist .exwf-crfood").prev().length||jQuery(".exwf-nepr .exwf-previous").addClass("exwf-disclick")),!1}),T("body").on("click",".exwf-edit-options",function(e){e.preventDefault();var t=T(this).data("id_food"),e=T(this).data("key");return l(t,"","",T(".ex-fdlist input[name=ajax_url]").val(),!1,e),!1}),T("body").on("click",".exfd-cart-mini li > a:not(.remove):not(.exwf-edit-options), .exfd-cart-mini li a.exwfpdlink",function(e){var t=T(this).closest("li").find(".remove").data("product_id");if(""!=t)return e.preventDefault(),l(t,"","",T(".ex-fdlist input[name=ajax_url]").val(),!1,""),!1}),T("body").on("click",".woocommerce-cart-form .cart_item .product-name > a:not(.exwf-edit-options), a.exwf-dfcartlink",function(e){var t=T(this).closest(".cart_item").find(".product-remove a").data("product_id");if(""!=t)return e.preventDefault(),l(t,"","",T(".ex-fdlist input[name=ajax_url]").val(),!1,""),!1}),T(window).on("resize",function(){var e=T("#food_modal .ex-modal-big").height();T("#food_modal .fd_modal_img").height()<e&&767<T(window).width()?T("#food_modal .ex-modal-big").addClass("ex-padimg"):T("#food_modal .ex-modal-big").removeClass("ex-padimg")}),T(".exfd-shopping-cart").on("click",function(e){return e.preventDefault(),T(".exfd-cart-content").addClass("excart-active"),T(".exfd-overlay").addClass("exfd-overlay-active"),T(".exfd-cart-content .exfd-out-notice").remove(),T(document).trigger("exwf_open_sidecart"),T(".exfd-cart-mini .ex-fdcarousel").length&&setTimeout(function(){jQuery(".exfd-cart-mini .ex-fdcarousel .ctgrid.ex_s_lick-initialized").EX_ex_s_lick("setPosition")},200),!1}),T(".exfd-cart-content .exfd-close-cart, .exfd-overlay").on("click",function(e){return T(".exfd-cart-content").removeClass("excart-active"),T(".exfd-overlay").removeClass("exfd-overlay-active"),T(document).trigger("exwf_close_sidecart"),T(".exfd-cart-content .exfd-out-notice").remove(),!1}),T("body").on("click",".ex-fdlist.ex-food-plug:not(.exfdisable-modal) .exfd-choice",function(e){return T(this).prev(".ex-hidden").find("form").length?(T(this).addClass("ex-loading"),T(this).prev(".ex-hidden").find(".exwoofood-woocommerce form").trigger("submit")):T(this).prev(".ex-hidden").find("a").trigger("click"),!1}),T("body").on("click",".ex-fdlist.ex-food-plug.exfdisable-modal .exfd-choice",function(e){var t=T(this).closest("figure").find(".exfd_modal_click").attr("href");return""!=t&&null!=t&&(location.href=t),!1}),T("body").on("click",".ex-fdlist.ex-food-plug:not(.exfdisable-modal) .exbt-inline .exstyle-3-button",function(e){return T(this).closest("figure").find(".ex-hidden form").length?(e.preventDefault(),T(this).addClass("ex-loading"),T(this).closest("figure").find(".ex-hidden form").trigger("submit")):T(this).closest("figure").find(".ex-hidden a").trigger("click"),!1}),T(".ex-food-plug #food_modal").on("click",".ex_close",function(e){e.preventDefault();T(this);e="#food_modal";T("body > .ex-fdlist #food_modal").length&&(e="body > .ex-fdlist #food_modal"),T(e).css("display","none"),T("html").removeClass("exfd-hidden-scroll"),T(e).removeClass("exfd-modal-active"),T("html").css("max-width","")}),T(".ex-food-plug .ex_modal").on("click",function(e){"ex_modal exfd-modal-active"==e.target.className&&(e.preventDefault(),T(this).css("display","none"),T("html").removeClass("exfd-hidden-scroll"),T(this).removeClass("exfd-modal-active"),T("html").css("max-width",""))}),T(".exwf-order-method .exwf-opcls-info.exwf-odtype").length||(i=T(".ex-popup-location"),i=T(".ex-popup-location"),(T(".exwf-menu-bydate.ex-popup-location").length?T(".exwf-menu-bydate.ex-popup-location"):i).addClass("ex-popup-active")),T(".ex-food-plug .ex-menu-list .ex-menu-item").on("click",function(e){e.preventDefault();var t=T(this),a=t.closest(".ex-fdlist");a.hasClass("category_left")?(a.find(".ex-menu-item").removeClass("ex-active-left"),t.addClass("ex-active-left"),t.parents(".ex-menu-item").addClass("ex-active-left")):(a.find(".ex-menu-item").removeClass("ex-menu-item-active"),t.addClass("ex-menu-item-active"),t.parents(".ex-menu-item").addClass("ex-menu-item-active"));e=T(this),a=e.closest(".ex-fdlist").attr("id"),t=t.attr("data-value");return r(e,T("#"+a+" input[name=s]").val(),t),!1}),T(".ex-fdlist.ex-food-plug .ex-menu-select select[name=exfood_menu]").on("change",function(e){e.preventDefault();e=T(this);return e.closest(".exfd-filter-group").find('.ex-menu-list [data-value="'+e.val()+'"]').trigger("click"),!1}),T(".ex-fdlist .exwf-search-form .exwf-s-submit").on("click",function(e){e.preventDefault();var t=T(this),e=t.closest(".ex-fdlist").attr("id");return T("#"+e+" .ex-menu-item-active").length?t.closest(".ex-fdlist").find(".ex-menu-item-active").trigger("click"):(e=t.closest(".ex-fdlist").attr("id"),r(t,T("#"+e+" input[name=s]").val(),"")),!1}),s(),T(".ex-fdlist.ex-food-plug .exfd-pagination-parent").on("click",".page-numbers",function(e){e.preventDefault();var t=T(this),a=t.closest(".ex-fdlist").attr("id");T("#"+a+" .page-numbers").removeClass("current"),T(t).addClass("current");e=t.text();1<+e&&T("#"+a+" .prev-ajax").removeClass("disable-click"),T("#"+a+" .next-ajax").removeClass("disable-click"),f("page_link",t,a,e)}),T(".ex-fdlist.ex-food-plug .exfd-pagination-parent").on("click",".next-ajax",function(e){e.preventDefault();var t=T(this),a=t.closest(".ex-fdlist").attr("id"),o=T("#"+a+" .current"),e=o.text();T("#"+a+" .prev-ajax").removeClass("disable-click"),o.removeClass("current"),o.next().addClass("current"),f("page_link",t,a,+e+1),t.removeClass("disable-click")}),T(".ex-fdlist.ex-food-plug .exfd-pagination-parent").on("click",".prev-ajax",function(e){e.preventDefault();var t=T(this),a=t.closest(".ex-fdlist").attr("id"),o=T("#"+a+" .page-navi .current"),e=parseInt(o.text());if(T("#"+a+" .next-ajax").removeClass("disable-click"),1==e)return T("#"+a+" .prev-ajax").addClass("disable-click"),!1;o.removeClass("current"),o.prev().addClass("current");--e;f("page_link",t,a,e),1<e&&T("#"+a+" .prev-ajax").removeClass("disable-click")}),jQuery(".ex-fdcarousel:not(.exwf-scrssl)").each(function(){var e=jQuery(this),t=e.attr("id"),a=e.data("slidesshow"),o=e.data("slidesscroll"),i=e.data("tb_items");""==a&&(a=3),""==o&&(o=a);0<e.data("startit")&&e.data("startit");var d=e.data("autoplay"),n=e.data("speed"),l=e.data("rtl"),r=1<e.data("mobile_item")?e.data("mobile_item"):1,s=0<e.data("start_on")?e.data("start_on"):0;u("#"+t+" .ctgrid","0"==e.data("infinite")?0:"yes"==e.data("infinite")||"1"==e.data("infinite"),s,l,a,o,d,n,r,i)}),jQuery(".exwf-cart-cross-sells .ex-fdcarousel").each(function(){var e=jQuery(this),t=e.attr("id"),a=e.data("slidesshow"),o=1;""==o&&(o=a);0<e.data("startit")&&e.data("startit");var i=e.data("autoplay"),d=e.data("speed"),n=e.data("rtl"),l=1<e.data("mobile_item")?e.data("mobile_item"):1,r=0<e.data("start_on")?e.data("start_on"):0;u("#"+t+" .scrs-grid","0"==e.data("infinite")?0:"yes"==e.data("infinite")||"1"==e.data("infinite"),r,n,a,o,i,d,l,1)}),T(".exfd-filter.exwf-filter-slider").length&&jQuery(".exfd-filter.exwf-filter-slider .ex-menu-list").each(function(){var e=T(this),t=e.width(),a=0;T(this).children().outerWidth(function(e,t){a+=t}),t<a&&(jQuery(e).closest(".exfd-filter-group").addClass("act-exslick"),jQuery(e).EX_ex_s_lick({dots:!1,infinite:!1,prevArrow:'<button type="button" class="exslick-pre"><i class="icon ion-chevron-left"></i></button>',nextArrow:'<button type="button" class="exslick-nex"><i class="icon ion-chevron-right"></i></button>',speed:300,slidesToShow:1,centerMode:!1,variableWidth:!0,focusOnSelect:!1}))}),jQuery(window).on("load",function(){jQuery(".ex-fdcarousel.ld-screen").each(function(){jQuery(this).addClass("at-childdiv")}),jQuery(".ex-fdck.ld-screen").each(function(){jQuery(this).addClass("at-childdiv")})}),setTimeout(function(){jQuery(".ex-fdcarousel.ld-screen").each(function(){jQuery(this).addClass("at-childdiv")})},4e3);var x,m,p,y,w,_,h=T(".ex-loc-select").val();function g(){var e;T(".exwf-deli-field select#exwfood_time_deli").data("date");T(".exwf-deli-field select[name=exwfood_date_deli]").length?e=T(".exwf-deli-field select[name=exwfood_date_deli]").val():T(".exwf-deli-field input[name=exwfood_date_deli]").length&&(t=T(".exwf-deli-field input#exwfood_date_deli").data("fm"),""!=(e=T(".exwf-deli-field input[name=exwfood_date_deli]").val())&&(e="dd-mm-yyyy"==t?(a=e.replace(/(\d{2})-(\d{2})-(\d{4})/,"$2/$1/$3"),new Date(a+" 00:00:00+0000").getTime()/1e3):new Date(e+" 00:00:00+0000").getTime()/1e3));var t=T(".exwf-deli-field select[name=exwfood_time_deli]").val(),a=T(".exwf-loc-field select[name=exwoofood_ck_loca]").length?T(".exwf-loc-field select[name=exwoofood_ck_loca]").val():"";""!=e&&""!=t&&(T(".exwf-deli-field").addClass("ex-loading"),t={action:"exwf_time_delivery_status",date:e,time:t,loc:a},a=exwf_jspr.ajaxurl,T.ajax({type:"post",url:a,dataType:"json",data:t,success:function(e){T(".exwf-deli-field").removeClass("ex-loading"),null!=e.html_content?(T(".exwf-deli-field p.exwf-time-stt").remove(),T(".exwf-deli-field").append(e.html_content)):T(".exwf-deli-field p.exwf-time-stt").remove(),e.refresh_order&&1==e.refresh_order&&T("body").trigger("update_checkout")}}))}function v(){var e,t,a,o;T(".exwf-order-method .exwf-emndate-time").length||!T(".exwf-deli-field #exwfood_time_deli").length||T(".exwf-deli-field .exwfood-time-deli").hasClass("exwf-mn-timesl")||(T(".exwf-deli-field p.exwf-time-stt").remove(),T(".exwf-deli-field select#exwfood_time_deli").data("date"),T(".exwf-deli-field select[name=exwfood_date_deli]").length?t=T(".exwf-deli-field select[name=exwfood_date_deli]").val():T(".exwf-deli-field input[name=exwfood_date_deli]").length&&(e=T(".exwf-deli-field input#exwfood_date_deli").data("fm"),""!=(t=T(".exwf-deli-field input[name=exwfood_date_deli]").val())&&(o=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),t=(o="dd-mm-yyyy"==e?o?t.replace(/(\d{2})-(\d{2})-(\d{4})/,"$3/$2/$1"):t.replace(/(\d{2})-(\d{2})-(\d{4})/,"$3-$2-$1"):o?t.replace(/(\d{2})\/(\d{2})\/(\d{4})/,"$3/$1/$2"):t.replace(/(\d{2})\/(\d{2})\/(\d{4})/,"$3-$1-$2"),new Date(o+" 00:00:00+0000").getTime()/1e3))),o=T(".exwf-loc-field select[name=exwoofood_ck_loca]").length?T(".exwf-loc-field select[name=exwoofood_ck_loca]").val():"",""!=t&&(T(".exwf-deli-field").addClass("ex-loading"),t={action:"exwf_time_delivery_slots",date:t,loc:o},a=T(".exwf-deli-field select#exwfood_time_deli option:selected").val(),o=exwf_jspr.ajaxurl,T.ajax({type:"post",url:o,dataType:"json",data:t,success:function(e){T(".exwf-deli-field").removeClass("ex-loading"),null!=e.html_timesl&&""!=e.html_timesl&&(T("#exwfood_time_deli_field .woocommerce-input-wrapper").html(e.html_timesl),""!=T("#exwfood_time_deli").attr("data-userslt")?T("#exwfood_time_deli").val(T("#exwfood_time_deli").attr("data-userslt")):null!=a&&T('.exwf-deli-field select#exwfood_time_deli option[value="'+a+'"]').length&&T(".exwf-deli-field select#exwfood_time_deli").val(a)),null!=e.data_time&&""!=e.data_time&&T(".exwf-deli-field select#exwfood_time_deli").attr("data-time",e.data_time),T(document).trigger("exwf_time_delivery_slots_loaded")}})))}function j(){var e=T(".exwf-loc-field select").val();T(".exwf-loc-field").addClass("ex-loading");var t=jQuery(".woocommerce-checkout #billing_address_1").val(),a=jQuery(".woocommerce-checkout #billing_city").val(),o=jQuery(".woocommerce-checkout #billing_country").val(),a={action:"exwf_update_shipping_fee",loc:e,address:null!=t?t:"",city:null!=a?a:"",country:null!=o?o:""},o=exwf_jspr.ajaxurl;T.ajax({type:"post",url:o,dataType:"json",data:a,success:function(e){var t,a,o,i;T(".exwf-loc-field").removeClass("ex-loading"),T("body").trigger("update_checkout"),T(document).trigger("exwfqv_updated_shipping_fee"),jQuery(".exwf-loc-field.exwf-loc-advdate").length&&(e.select_dates&&""!=e.select_dates?(jQuery(".exwf-deli-field #exwfood_date_deli_field .woocommerce-input-wrapper input").length&&jQuery("body").append('<div class="ex-hidden exwf-dfpkdate">'+jQuery(".exwf-deli-field #exwfood_date_deli_field .woocommerce-input-wrapper").html()+"</div>"),jQuery(".exwf-deli-field #exwfood_date_deli_field .woocommerce-input-wrapper").html(e.select_dates)):(jQuery(".exwf-deli-field #exwfood_date_deli_field .woocommerce-input-wrapper select").length&&jQuery(".exwf-deli-field #exwfood_date_deli_field .woocommerce-input-wrapper").html(jQuery(".ex-hidden.exwf-dfpkdate").html()),e.exwoofood_ck_disday&&""!=e.exwoofood_ck_disday&&jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").attr("data-disday",e.exwoofood_ck_disday),e.exwoofood_ck_disdate&&""!=e.exwoofood_ck_disdate&&jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").attr("data-disdate",e.exwoofood_ck_disdate),t=jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]"),a="mm/dd/yyyy",o=jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").attr("data-disday")+"",i=jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").attr("data-disdate"),i=JSON.parse(i),""!=(e=jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("fm"))&&null!=e&&(a=e),c(t,a,o,i,jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("mindate"),jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("fmon"),jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("smon"),jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("sday"),jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").data("fiday"),"")))}})}function b(e,t,a){var o=e.closest(".exwf-con-quantity").find(".qty").attr("min"),i=e.closest(".exwf-con-quantity").find(".qty").attr("max");""!=i&&i<t||""!=o&&t<o||(e.closest(".exwf-con-quantity").find(".qty").val(t),T(".exfd-cart-mini").addClass("ex-loading"),T(".exfd-cart-content .exfd-out-notice").remove(),t={action:"exwf_update_quantity",quantity:t,key:a},a=exwf_jspr.ajaxurl,T.ajax({type:"post",url:a,dataType:"json",data:t,success:function(e){e.message&&""!=e.message&&(T(e.message).insertAfter(T(".exfd-cart-content .exfd-close-cart")),setTimeout(function(){T(".exfd-cart-content .exfd-out-notice").remove()},5e3)),T(".exfd-cart-mini").css("opacity",".6"),T.ajax({type:"post",url:wc_add_to_cart_params.ajax_url,data:{action:"exwoofood_refresh_cart"},success:function(e){T("div.exfd-cart-mini").remove(),T(e.fragments["div.exfd-cart-mini"]).insertAfter(".exfd-cart-content .exfd-close-cart"),T(".exfd-shopping-cart span.exfd-cart-num").replaceWith(e.fragments["span.exfd-cart-num"]),T(".exwf-mbnav-icon span.exfd-cart-num").replaceWith(e.fragments["span.exfd-cart-num"])}}),T(".exfd-cart-mini").removeClass("ex-loading"),T(document).trigger("exwfqv_updated_qty")}}))}function Q(){T(".exwf-mngroup").length&&T(".exwf-mngroup ").each(function(){var e=T(this),t=e.width();e.find(".exfd-filter").width(t);var o=jQuery(this).attr("id"),t=e.offset().top,e=t+e.height();t-=50,e-=100,T(document).scrollTop()>=t&&T(document).scrollTop()<=e?T("#"+o+" .exwf-mngrfilter").addClass("exsticky").fadeIn():T("#"+o+" .exwf-mngrfilter").removeClass("exsticky").fadeOut(),T("#"+o+" .exwf-mngr-content .exwf-mngr-item").each(function(){var e=T(this),t=T(this).attr("data-menu"),a=e.offset().top,e=a+e.height();a-=50,e-=50,T(document).scrollTop()>a&&T(document).scrollTop()<e?(T("#"+o+" .exwf-mngrfilter .filtermngr-item[data-menu='"+t+"']").addClass("ex-menu-item-active"),T("#"+o+" .exwf-mngrfilter .ex-menu-select select").val(t)):T("#"+o+" .exwf-mngrfilter .filtermngr-item[data-menu='"+t+"']").removeClass("ex-menu-item-active")})})}function k(){jQuery(".exwf-mngroup-more").each(function(){var e,t,a,o=T(this),i=o.children(".exwf-mngr-endel");e=i,t=jQuery(window).scrollTop(),a=t+jQuery(window).height(),(i=e.offset().top)+e.height()<=a+200&&t<=i&&!o.hasClass("ex-loading")&&(o.find('.exwf-mngrfilter .filtermngr-item[data-menu="exmmore"]').remove(),o.find('.exwf-mngrfilter select option[value="exmmore"]').remove(),t=o.attr("data-sc"),""!=(i=o.attr("data-menu"))&&"[]"!=i&&(o.addClass("ex-loading"),t={action:"exwoofood_more_menu",param_shortcode:t,data_menu:i},i=exwf_jspr.ajaxurl,T.ajax({type:"post",url:i,dataType:"json",data:t,success:function(e){o.removeClass("ex-loading"),""!=e.html_content&&o.find(".exwf-mngr-content").append(e.html_content),o.attr("data-menu",e.arr_menu),o.find(".exwf-mngrfilter .ex-menu-list").append(e.html_infilter),o.find(".exwf-mngrfilter .ex-menu-select select").append(e.html_slfilter),s()}})))})}function C(){jQuery(".exwf-cart-cross-sells .ex-fdcarousel").length&&(setTimeout(function(){jQuery(".exwf-cart-cross-sells .ex-fdcarousel").each(function(){var e=jQuery(this);e.closest(".exwf-cart-cross-sells").removeClass("ex-load-hidden");var t=e.attr("id"),a=e.data("slidesshow"),o=e.data("slidesscroll");""==a&&(a=3),""==o&&(o=a);0<e.data("startit")&&e.data("startit");var i=e.data("autoplay"),d=e.data("speed"),n=e.data("rtl"),l=1<e.data("mobile_item")?e.data("mobile_item"):1,r=0<e.data("start_on")?e.data("start_on"):0;u("#"+t+" .scrs-grid","0"==e.data("infinite")?0:"yes"==e.data("infinite")||"1"==e.data("infinite"),r,n,a,o,i,d,l,1)})},1500),setTimeout(function(){jQuery(".exwf-cart-cross-sells .ex-fdcarousel.ld-screen").addClass("at-childdiv"),T(".ex_modal.ex-loading").length&&T(".ex_modal").removeClass("ex-loading"),jQuery(".exwf-cart-cross-sells .ex-fdcarousel .scrs-grid.ex_s_lick-initialized").EX_ex_s_lick("setPosition")},2e3))}T(".ex-loc-select:not(.exwf-disable-red)").on("change",function(){var e=T(this),t=e.val(),a=e.attr("data-text"),o=parseInt(T(".exfd-cart-num").html());return null!=h&&t!=h&&null!=a&&0<o?confirm(a)?window.location=t:e.val(h):t!=h&&(window.location=t),!1}),T(".exwf-menuof-date:not(.exwf-disable-red) .mndate-sl").on("click",function(){var e=T(this).attr("data-text"),t=parseInt(T(".exfd-cart-num").html());if(null!=e&&0<t)return confirm(e)}),T("body").on("change",".ex-loc-select.exwf-mn-timesl",function(){T(".exwf-menu-bydate").addClass("ex-loading");var a=T(this),e={action:"exwf_menu_by_timesl",date:T(this).find(":selected").attr("data-date"),cr_url:T(this).attr("data-current_url")},t=exwf_jspr.ajaxurl;T.ajax({type:"post",url:t,dataType:"json",data:e,success:function(e){var t;T(".exwf-menu-bydate").removeClass("ex-loading"),""==e.html_content?(t=a.find(":selected").val(),window.location=t):(T(".exwf-mnsl").remove(),T(".exwf-menu-bydate .ex-popup-info").append(e.html_content))}})}),T("body").on("change",".exwf-emndate-time #exwfood_date_deli",function(){T(this);var e,t=T(this).find(":selected").attr("data-date");null!=t&&(T(".exwf-deli-field").addClass("ex-loading"),e={action:"exwf_menu_by_timesl",date:t,cr_url:"no"},t=exwf_jspr.ajaxurl,T.ajax({type:"post",url:t,dataType:"json",data:e,success:function(e){T(".exwf-deli-field").removeClass("ex-loading"),""!=e.html_content&&T("#exwfood_time_deli_field .woocommerce-input-wrapper").html(e.html_content)}}))}),T("body").on("change",".exwf-menu-bydate #exwf_menu_time",function(){var e=T(this).val();return""!=e&&null!=e&&(location.href=e),!1}),jQuery(document).ready(function(e){var t="#exwfood_date_deli";e(t).length&&e(t).trigger("change")}),T("body").on("change",".exwf-deli-field select#exwfood_time_deli",function(){g()}),T("body").on("change",".exwf-deli-field select#exwfood_date_deli",function(){v()}),T(".exwf-loc-field select[name=exwoofood_ck_loca]").on("change",function(){v()}),!jQuery(".exwf-deli-field #exwfood_date_deli").length&&T(".exwf-deli-field select[name=exwfood_time_deli]").length&&g(),jQuery("body").on("propertychange change keyup paste input",".exwf-deli-field input[name=exwfood_date_deli]",function(){v()}),T(".exwf-deli-field select#exwfood_time_deli").length&&(""==(x=T(".exwf-deli-field select#exwfood_time_deli").data("crtime"))||isNaN(x)||(m=300,p=setInterval(function(){m<=0?clearInterval(p):(x+=1,T(".exwf-deli-field select#exwfood_time_deli").attr("data-crtime",x)),--m},1e3))),T("body").on("change",".exwf-loc-field select",function(){jQuery(".exwf-loc-field.exwf-loc-advdate").length?(jQuery(".exwf-deli-field .exwfood-date-deli input[type=text]").extl_datepicker("destroy"),j()):jQuery(".exwf-order-take.at-method").length||j()}),jQuery(".exwf-order-take.at-method").length||jQuery(".exwf-order-dinein.at-method").length||!jQuery(".woocommerce-checkout #billing_address_1").length||(jQuery(".woocommerce-checkout #billing_address_1").addClass("exwf-re-upsh"),_=jQuery(".woocommerce-checkout #ship-to-different-address-checkbox").is(":checked")?(y=jQuery(".woocommerce-checkout #shipping_address_1").val(),w=jQuery(".woocommerce-checkout #shipping_city").val(),jQuery(".woocommerce-checkout #shipping_country").val()):(y=jQuery(".woocommerce-checkout #billing_address_1").val(),w=jQuery(".woocommerce-checkout #billing_city").val(),jQuery(".woocommerce-checkout #billing_country").val()),T("body").on("blur",".woocommerce-checkout #billing_address_1, .woocommerce-checkout #shipping_address_1",function(){var e,t;a=jQuery(".woocommerce-checkout #ship-to-different-address-checkbox").is(":checked")?(e=jQuery(".woocommerce-checkout #shipping_address_1").val(),t=jQuery(".woocommerce-checkout #shipping_city").val(),jQuery(".woocommerce-checkout #shipping_country").val()):(e=jQuery(".woocommerce-checkout #billing_address_1").val(),t=jQuery(".woocommerce-checkout #billing_city").val(),jQuery(".woocommerce-checkout #billing_country").val());var a,o=jQuery(".exwf-loc-field select").val();!jQuery(".woocommerce-checkout #billing_address_1").hasClass("exwf-re-upsh")&&e==y&&w==t&&a==_||(jQuery(".woocommerce-checkout #billing_address_1").removeClass("exwf-re-upsh"),a={action:"exwf_update_shipping_fee_bykm",address:y=e,city:w=t,country:_=a,loc:o},o=exwf_jspr.ajaxurl,T.ajax({type:"post",url:o,dataType:"json",data:a,success:function(e){"unc"!=e&&(T(document).trigger("exwf_update_shipping_fee_bykm",[e]),T("body").trigger("update_checkout"))}}))}),T(window).on("scroll",function(){T(".woocommerce-checkout #billing_address_1").is(":focus")||T(".woocommerce-checkout #billing_address_1").trigger("blur")})),T("body").on("click",".exwo-showmore",function(e){T(this).remove(),T(".exwo-product-options").addClass("exwo-show")}),jQuery("body").on("click",".exwf-user-dl-info a",function(e){jQuery(document.body).trigger("wc_fragment_refresh")}),jQuery("body").on("click",".exfd-cart-mini .exwf-quantity #exminus_ticket",function(){var e,t,a=jQuery(this),o=parseInt(jQuery(this).closest(".exwf-con-quantity").find(".qty").val())-1;0<o&&(e=T(this).closest(".exwf-con-quantity").attr("data-cart_key"),t=T(this).closest(".exwf-con-quantity").attr("data-quantity"),0<=o&&o!=t&&b(a,o,e))}),jQuery("body").on("click",".exfd-cart-mini #explus_ticket",function(){var e=jQuery(this),t=parseInt(jQuery(this).closest(".exwf-con-quantity").find(".qty").val())+1,a=T(this).closest(".exwf-con-quantity").attr("data-cart_key"),o=T(this).closest(".exwf-con-quantity").attr("data-quantity");0<=t&&t!=o&&b(e,t,a)}),jQuery("body").on("keyup change",".exfd-cart-mini .exwf-quantity .quantity .qty",function(){var e=jQuery(this),t=T(this).val(),a=T(this).closest(".exwf-con-quantity").attr("data-cart_key"),o=T(this).closest(".exwf-con-quantity").attr("data-quantity");0<=t&&t!=o&&b(e,t,a)}),Q(),T(document).scroll(function(){Q(),T(".ex-fdlist.exwf-ftfixed:not(.exwf-mngrfilter):not(.category_left) .exfd-filter").length&&T(".ex-fdlist.exwf-ftfixed:not(.exwf-mngrfilter):not(.category_left)").each(function(){var e=T(this),t=e.attr("id"),a="";e.hasClass("exwf-clft")&&(a=e.attr("data-id"),e=T("#"+a));var o=e.width(),i=e.height();T(this).find(".exfd-filter .exfd-filter-group").width(o);o=e.offset().top,e=o+e.height();e-=100,T(document).scrollTop()>=o&&T(document).scrollTop()<=e?(T(""!=a?"#"+a:"#"+t).height(i),T("#"+t+" .exfd-filter").addClass("exsticky")):(T(""!=a?"#"+a:"#"+t).height(""),T("#"+t+" .exfd-filter").removeClass("exsticky"))})}),T(".exwf-mngroup").on("click",".exwf-mngrfilter .filtermngr-item",function(){var e=T(this).attr("data-id"),t=T(this).attr("data-menu");"exmmore"==t?(T(window).height(),T("html,body").animate({scrollTop:T("#"+e+" .exwf-mngr-endel").offset().top-30},"slow")):T("#"+e+" .exwf-mngr-item[data-menu='"+t+"']").length&&(T(window).height(),T("html,body").animate({scrollTop:T("#"+e+" .exwf-mngr-item[data-menu='"+t+"']").offset().top-30},"slow"))}),T(".exwf-mngrfilter").on("change","select",function(){var e=T(this).attr("data-id"),t=T(this).val();"exmmore"==t?(T(window).height(),T("html,body").animate({scrollTop:T("#"+e+" .exwf-mngr-endel").offset().top-30},"slow")):T("#"+e+" .exwf-mngr-item[data-menu='"+t+"']").length&&(T(window).height(),T("html,body").animate({scrollTop:T("#"+e+" .exwf-mngr-item[data-menu='"+t+"']").offset().top-30},"slow"))}),T(".exwf-mngroup-more").length&&(k(),jQuery(document).scroll(function(){k()})),C(),T(document).ajaxComplete(function(){C()}),T(document).on("exwfqv_loaded",function(e){return jQuery(".exfd-cart-content.excart-active").length&&T(".exfd-close-cart").trigger("click"),!1}),T(".exwf-whastsapp-byloc").length&&setTimeout(function(){var e=T(".exwf-whastsapp-byloc").html();T(".exwf-order-whastsapp").remove(),T(".exfd-cart-mini").append(e)},500),T("body").on("click",".exwf-heading-5 .mnheading-5",function(e){var t=T(this);T(t).next(".exwf-mnlayout").slideToggle(200);t=t.closest(".exwf-mngr-item");t.hasClass("exwf-active")?t.removeClass("exwf-active"):t.addClass("exwf-active")}),T("body").on("click",".exwf-cart-icon",function(e){T(".exfd-shopping-cart").length&&(event.preventDefault(),T(".exfd-shopping-cart").trigger("click"))}),jQuery("body").on("click",".exwf-show-inlgty .quantity .ion-chevron-down, #food_modal:not(.exf-dis-bt) .exbuttons_added #exminus_ticket",function(){var e=parseInt(jQuery(this).closest(".quantity").find(".qty").val())-1,t=""!=(t=jQuery(this).closest(".quantity").find(".qty").attr("min"))?parseInt(t):"";(isNaN(t)||t<=e||""==t)&&(t=jQuery(this).closest(".quantity").find(".qty"),(0<e||0==e&&(jQuery("#food_modal .grouped_form").length||t.hasClass("mnm-quantity")))&&t.val(e),t.hasClass("mnm-quantity")&&t.trigger("change"))}),jQuery("body").on("click",".exwf-show-inlgty .quantity .ion-chevron-up, #food_modal:not(.exf-dis-bt) .exbuttons_added #exadd_ticket",function(){var e=jQuery(this).closest(".quantity").find(".qty"),t=e.val(),a=jQuery(this).closest(".quantity").find(".qty").attr("max"),t=""!=t?parseInt(t):0,a=""!=a?parseInt(a):"";(isNaN(a)||t<a||""==a)&&(t+=1,e.val(t)),e.hasClass("mnm-quantity")&&e.trigger("change")}),jQuery(".exsfixed-list:not(.category_left) .ex-menu-list > .ex-menu-item.exwf-has-child").on("mouseover",function(){var e=jQuery(this),t=jQuery("> .exfd-ul-child",e),e=e.position();t.css({top:e.top+35,left:e.left})})})}(jQuery);
// source --> https://folsomchicagospizzatwist.com/wp-content/plugins/woo-exfood/js/ajax-add-to-cart.min.js?ver=3.2.5 
!function(s){"use strict";s(document).on("submit",".exwoofood-woocommerce form",function(e){s("#food_modal .exwoofood-woocommerce > div .exfd-out-notice").remove();var o=s(this).find(".single_add_to_cart_button"),a=s(this),d="def";(a.closest(".exbt-inline").length||a.closest(".ex-hidden").length)&&(d="no");var t=a.find("input[name=add-to-cart]").val()||o.val(),n=s(".ex-fdlist > input[name=food_loc]").val();if(t&&!o.is(".disabled")){e.preventDefault();var i={action:"exwoofood_add_to_cart","add-to-cart":t,loc:n};a.serializeArray().forEach(function(e){i[e.name]=e.value}),s(document.body).trigger("adding_to_cart",[o,i]),s(this).find(".exrow-group.ex-checkbox").length&&s(this).find(".exrow-group.ex-checkbox").each(function(){var e=s(this).find(".ex-options").attr("name"),t=[];s(this).find('input[name="'+e+'"]:checked').each(function(){t.push(s(this).val())}),i[e]=t}),s(".wc-pao-addon-checkbox").length&&s(".wc-pao-addon-checkbox").each(function(){var e=s(this).attr("name"),t=[];s('input[name="'+e+'"]:checked').each(function(){t.push(s(this).val())}),i[e]=t}),s(".ppom-check-input").length&&s(".ppom-check-input").each(function(){var e,t;"checkbox"==s(this).attr("type")&&(e=s(this).attr("name"),t=[],s('input[name="'+e+'"]:checked').each(function(){t.push(s(this).val())}),i[e]=t)}),s(".wccf_product_field_checkbox").length&&s(".wccf_product_field_checkbox").each(function(){var e=s(this).attr("name"),t=[];s('input[name="'+e+'"]:checked').each(function(){t.push(s(this).val())}),i[e]=t});var c=s(".exfd-cart-mini").html();return s.ajax({type:"post",url:wc_add_to_cart_params.ajax_url,data:i,beforeSend:function(e){o.removeClass("added").addClass("ex-loading")},complete:function(e){o.removeClass("ex-loading");var t=s(".exfd-cart-mini");c!=t&&(e.error||o.addClass("added"))},error:function(e,t,o){console.log(e.responseText)},success:function(e){var t;e.error?s("#food_modal .exwoofood-woocommerce > div").append(e.message):(s(".ex-fdlist.exwf-disable-atctg").length||s(document.body).trigger("added_to_cart",[e.fragments,e.cart_hash,o]),s(".woocommerce-notices-wrapper").empty().append(e.notices),s(".ex-fdlist.ex-food-plug .exfd-choice.ex-loading").length?s(".ex-fdlist.ex-food-plug .exfd-choice.ex-loading").removeClass("ex-loading"):s(".ex-fdlist .exstyle-3 .exstyle-3-image .exbt-inline span.ex-loading").length&&s(".ex-fdlist .exstyle-3 .exstyle-3-image .exbt-inline span.ex-loading").removeClass("ex-loading"),t=s(".exfd-cart-mini").html(),c==t&&(o.removeClass("added"),s("#food_modal .modal-content").data("close-popup")),e=o.closest(".ex-fdlist ").attr("id"),t=s("#"+e).hasClass("table-layout")?"table":"",0==(e=1==(e=o.closest(".exp-arrow").find("a img").eq(0)).length?e:o.closest("#food_modal").find("img").eq(0)).length&&("table"!=t?0==(e=o.closest(".item-grid").find("img").eq(0)).length&&0==(e=o.closest(".item-grid").find(".ex-fly-cart").eq(0)).length&&(e=o.closest(".item-grid")):0==(e=o.closest("tr").find("img").eq(0)).length&&(e=o.closest("tr").find(".item-grid"))),0==e.length&&jQuery(".ex_modal.exfd-modal-active").length&&(e=jQuery(".ex_modal.exfd-modal-active .exmd-no-img")),jQuery(".ex_modal.exfd-modal-active .exfd-img-mod").length&&(e=jQuery(".ex_modal.exfd-modal-active .exfd-img-mod")),t=e,0!=(e=jQuery(".exfd-shopping-cart")).length&&t.length&&t.clone().offset({top:t.offset().top,left:t.offset().left}).css({opacity:"0.5",position:"absolute",height:"150px",width:"150px","z-index":"1001"}).appendTo(jQuery("body")).animate({top:e.offset().top+10,left:e.offset().left,width:40,height:40},800).animate({width:0,height:0},function(){jQuery(this).detach()}),s(".exfd-cart-mini").css("opacity",".6"),s.ajax({type:"post",url:wc_add_to_cart_params.ajax_url,data:{action:"exwoofood_refresh_cart"},success:function(e){s("div.exfd-cart-mini").remove(),s(e.fragments["div.exfd-cart-mini"]).insertAfter(".exfd-cart-content .exfd-close-cart"),s(".exfd-shopping-cart span.exfd-cart-num").replaceWith(e.fragments["span.exfd-cart-num"]),s(".exwf-mbnav-icon span.exfd-cart-num").replaceWith(e.fragments["span.exfd-cart-num"])}}),s("#food_modal .exmd-upsells").length?s("#food_modal .exmd-upsells .exwf-md-up-sells").length||(s(".ex_modal").addClass("ex-loading"),t=a.closest(".modal-content").find("input[name=exwf_upsells_ids]").val(),e=t,t=s("#food_modal .exwf-md-modern").length,t={action:"exwf_ajax_upsells",ids:e,mdst:t},s.ajax({type:"post",url:wc_add_to_cart_params.ajax_url,dataType:"json",data:t,success:function(e){"0"!=e&&s("#food_modal .exmd-upsells").append(e.html_content).fadeIn()}})):"yes"==s("#food_modal .modal-content").data("close-popup")&&"no"!=d&&s("#food_modal .ex_close").trigger("click"),o.hasClass("ex-loading")&&o.removeClass("ex-loading"),s(document).trigger("exwfqv_added_tocart"))}}),!1}})}(jQuery);
// source --> https://folsomchicagospizzatwist.com/wp-content/plugins/woo-exfood/js/ex_s_lick/ex_s_lick.js?ver=1.0 
/*
     _ _      _       _
 ___| (_) ___| | __  (_)___
/ __| | |/ __| |/ /  | / __|
\__ \ | | (__|   < _ | \__ \
|___/_|_|\___|_|\_(_)/ |___/
                   |__/

 Version: 1.6.0
  Author: Ken Wheeler
 Website: http://kenwheeler.github.io
    Docs: http://kenwheeler.github.io/ex_s_lick
    Repo: http://github.com/kenwheeler/ex_s_lick
  Issues: http://github.com/kenwheeler/ex_s_lick/issues

 */
/* global window, document, define, jQuery, setInterval, clearInterval */
(function(factory) {
    'use strict';
    if (typeof define === 'function' && define.amd) {
        define(['jquery'], factory);
    } else if (typeof exports !== 'undefined') {
        module.exports = factory(require('jquery'));
    } else {
        factory(jQuery);
    }

}(function($) {
    'use strict';
    var EXT_Slick = window.EXT_Slick || {};

    EXT_Slick = (function() {

        var instanceUid = 0;

        function EXT_Slick(element, settings) {

            var _ = this, dataSettings;

            _.defaults = {
                accessibility: true,
                adaptiveHeight: false,
                appendArrows: $(element),
                appendDots: $(element),
                arrows: true,
                asNavFor: null,
                prevArrow: '<button type="button" data-role="none" class="ex_s_lick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
                nextArrow: '<button type="button" data-role="none" class="ex_s_lick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
                autoplay: false,
                autoplaySpeed: 3000,
                centerMode: false,
                centerPadding: '50px',
                cssEase: 'ease',
                customPaging: function(slider, i) {
                    return $('<button type="button" data-role="none" role="button" tabindex="0" />').text(i + 1);
                },
                dots: false,
                dotsClass: 'ex_s_lick-dots',
                draggable: true,
                easing: 'linear',
                edgeFriction: 0.35,
                fade: false,
                focusOnSelect: false,
                infinite: true,
                initialSlide: 0,
                lazyLoad: 'ondemand',
                mobileFirst: false,
                pauseOnHover: true,
                pauseOnFocus: true,
                pauseOnDotsHover: false,
                respondTo: 'window',
                responsive: null,
                rows: 1,
                rtl: false,
                slide: '',
                slidesPerRow: 1,
                slidesToShow: 1,
                slidesToScroll: 1,
                speed: 500,
                swipe: true,
                swipeToSlide: false,
                touchMove: true,
                touchThreshold: 5,
                useCSS: true,
                useTransform: true,
                variableWidth: false,
                vertical: false,
                verticalSwiping: false,
                waitForAnimate: true,
                zIndex: 1000
            };

            _.initials = {
                animating: false,
                dragging: false,
                autoPlayTimer: null,
                currentDirection: 0,
                currentLeft: null,
                currentSlide: 0,
                direction: 1,
                $dots: null,
                listWidth: null,
                listHeight: null,
                loadIndex: 0,
                $nextArrow: null,
                $prevArrow: null,
                slideCount: null,
                slideWidth: null,
                $slideTrack: null,
                $slides: null,
                sliding: false,
                slideOffset: 0,
                swipeLeft: null,
                $list: null,
                touchObject: {},
                transformsEnabled: false,
                unex_s_licked: false
            };

            $.extend(_, _.initials);

            _.activeBreakpoint = null;
            _.animType = null;
            _.animProp = null;
            _.breakpoints = [];
            _.breakpointSettings = [];
            _.cssTransitions = false;
            _.focussed = false;
            _.interrupted = false;
            _.hidden = 'hidden';
            _.paused = true;
            _.positionProp = null;
            _.respondTo = null;
            _.rowCount = 1;
            _.shouldClick = true;
            _.$slider = $(element);
            _.$slidesCache = null;
            _.transformType = null;
            _.transitionType = null;
            _.visibilityChange = 'visibilitychange';
            _.windowWidth = 0;
            _.windowTimer = null;

            dataSettings = $(element).data('ex_s_lick') || {};

            _.options = $.extend({}, _.defaults, settings, dataSettings);

            _.currentSlide = _.options.initialSlide;

            _.originalSettings = _.options;

            if (typeof document.mozHidden !== 'undefined') {
                _.hidden = 'mozHidden';
                _.visibilityChange = 'mozvisibilitychange';
            } else if (typeof document.webkitHidden !== 'undefined') {
                _.hidden = 'webkitHidden';
                _.visibilityChange = 'webkitvisibilitychange';
            }

            _.autoPlay = $.proxy(_.autoPlay, _);
            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
            _.changeSlide = $.proxy(_.changeSlide, _);
            _.clickHandler = $.proxy(_.clickHandler, _);
            _.selectHandler = $.proxy(_.selectHandler, _);
            _.setPosition = $.proxy(_.setPosition, _);
            _.swipeHandler = $.proxy(_.swipeHandler, _);
            _.dragHandler = $.proxy(_.dragHandler, _);
            _.keyHandler = $.proxy(_.keyHandler, _);

            _.instanceUid = instanceUid++;

            // A simple way to check for HTML strings
            // Strict HTML recognition (must start with <)
            // Extracted from jQuery v1.11 source
            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;


            _.registerBreakpoints();
            _.init(true);

        }

        return EXT_Slick;

    }());

    EXT_Slick.prototype.activateADA = function() {
        var _ = this;

        _.$slideTrack.find('.ex_s_lick-active').attr({
            'aria-hidden': 'false'
        }).find('a, input, button, select').attr({
            'tabindex': '0'
        });

    };

    EXT_Slick.prototype.addSlide = EXT_Slick.prototype.ex_s_lickAdd = function(markup, index, addBefore) {

        var _ = this;

        if (typeof(index) === 'boolean') {
            addBefore = index;
            index = null;
        } else if (index < 0 || (index >= _.slideCount)) {
            return false;
        }

        _.unload();

        if (typeof(index) === 'number') {
            if (index === 0 && _.$slides.length === 0) {
                $(markup).appendTo(_.$slideTrack);
            } else if (addBefore) {
                $(markup).insertBefore(_.$slides.eq(index));
            } else {
                $(markup).insertAfter(_.$slides.eq(index));
            }
        } else {
            if (addBefore === true) {
                $(markup).prependTo(_.$slideTrack);
            } else {
                $(markup).appendTo(_.$slideTrack);
            }
        }

        _.$slides = _.$slideTrack.children(this.options.slide);

        _.$slideTrack.children(this.options.slide).detach();

        _.$slideTrack.append(_.$slides);

        _.$slides.each(function(index, element) {
            $(element).attr('data-ex_s_lick-index', index);
        });

        _.$slidesCache = _.$slides;

        _.reinit();

    };

    EXT_Slick.prototype.animateHeight = function() {
        var _ = this;
        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
            _.$list.animate({
                height: targetHeight
            }, _.options.speed);
        }
    };

    EXT_Slick.prototype.animateSlide = function(targetLeft, callback) {

        var animProps = {},
            _ = this;

        _.animateHeight();

        if (_.options.rtl === true && _.options.vertical === false) {
            targetLeft = -targetLeft;
        }
        if (_.transformsEnabled === false) {
            if (_.options.vertical === false) {
                _.$slideTrack.animate({
                    left: targetLeft
                }, _.options.speed, _.options.easing, callback);
            } else {
                _.$slideTrack.animate({
                    top: targetLeft
                }, _.options.speed, _.options.easing, callback);
            }

        } else {

            if (_.cssTransitions === false) {
                if (_.options.rtl === true) {
                    _.currentLeft = -(_.currentLeft);
                }
                $({
                    animStart: _.currentLeft
                }).animate({
                    animStart: targetLeft
                }, {
                    duration: _.options.speed,
                    easing: _.options.easing,
                    step: function(now) {
                        now = Math.ceil(now);
                        if (_.options.vertical === false) {
                            animProps[_.animType] = 'translate(' +
                                now + 'px, 0px)';
                            _.$slideTrack.css(animProps);
                        } else {
                            animProps[_.animType] = 'translate(0px,' +
                                now + 'px)';
                            _.$slideTrack.css(animProps);
                        }
                    },
                    complete: function() {
                        if (callback) {
                            callback.call();
                        }
                    }
                });

            } else {

                _.applyTransition();
                targetLeft = Math.ceil(targetLeft);

                if (_.options.vertical === false) {
                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
                } else {
                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
                }
                _.$slideTrack.css(animProps);

                if (callback) {
                    setTimeout(function() {

                        _.disableTransition();

                        callback.call();
                    }, _.options.speed);
                }

            }

        }

    };

    EXT_Slick.prototype.getNavTarget = function() {

        var _ = this,
            asNavFor = _.options.asNavFor;

        if ( asNavFor && asNavFor !== null ) {
            asNavFor = $(asNavFor).not(_.$slider);
        }

        return asNavFor;

    };

    EXT_Slick.prototype.asNavFor = function(index) {

        var _ = this,
            asNavFor = _.getNavTarget();

        if ( asNavFor !== null && typeof asNavFor === 'object' ) {
            asNavFor.each(function() {
                var target = $(this).EX_ex_s_lick('getEXT_Slick');
                if(!target.unex_s_licked) {
                    target.slideHandler(index, true);
                }
            });
        }

    };

    EXT_Slick.prototype.applyTransition = function(slide) {

        var _ = this,
            transition = {};

        if (_.options.fade === false) {
            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
        } else {
            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
        }

        if (_.options.fade === false) {
            _.$slideTrack.css(transition);
        } else {
            _.$slides.eq(slide).css(transition);
        }

    };

    EXT_Slick.prototype.autoPlay = function() {

        var _ = this;

        _.autoPlayClear();

        if ( _.slideCount > _.options.slidesToShow ) {
            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );
        }

    };

    EXT_Slick.prototype.autoPlayClear = function() {

        var _ = this;

        if (_.autoPlayTimer) {
            clearInterval(_.autoPlayTimer);
        }

    };

    EXT_Slick.prototype.autoPlayIterator = function() {

        var _ = this,
            slideTo = _.currentSlide + _.options.slidesToScroll;

        if ( !_.paused && !_.interrupted && !_.focussed ) {

            if ( _.options.infinite === false ) {

                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {
                    _.direction = 0;
                }

                else if ( _.direction === 0 ) {

                    slideTo = _.currentSlide - _.options.slidesToScroll;

                    if ( _.currentSlide - 1 === 0 ) {
                        _.direction = 1;
                    }

                }

            }

            _.slideHandler( slideTo );

        }

    };

    EXT_Slick.prototype.buildArrows = function() {

        var _ = this;

        if (_.options.arrows === true ) {

            _.$prevArrow = $(_.options.prevArrow).addClass('ex_s_lick-arrow');
            _.$nextArrow = $(_.options.nextArrow).addClass('ex_s_lick-arrow');

            if( _.slideCount > _.options.slidesToShow ) {

                _.$prevArrow.removeClass('ex_s_lick-hidden').removeAttr('aria-hidden tabindex');
                _.$nextArrow.removeClass('ex_s_lick-hidden').removeAttr('aria-hidden tabindex');

                if (_.htmlExpr.test(_.options.prevArrow)) {
                    _.$prevArrow.prependTo(_.options.appendArrows);
                }

                if (_.htmlExpr.test(_.options.nextArrow)) {
                    _.$nextArrow.appendTo(_.options.appendArrows);
                }

                if (_.options.infinite !== true) {
                    _.$prevArrow
                        .addClass('ex_s_lick-disabled')
                        .attr('aria-disabled', 'true');
                }

            } else {

                _.$prevArrow.add( _.$nextArrow )

                    .addClass('ex_s_lick-hidden')
                    .attr({
                        'aria-disabled': 'true',
                        'tabindex': '-1'
                    });

            }

        }

    };

    EXT_Slick.prototype.buildDots = function() {

        var _ = this,
            i, dot;

        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {

            _.$slider.addClass('ex_s_lick-dotted');

            dot = $('<ul />').addClass(_.options.dotsClass);

            for (i = 0; i <= _.getDotCount(); i += 1) {
                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
            }

            _.$dots = dot.appendTo(_.options.appendDots);

            _.$dots.find('li').first().addClass('ex_s_lick-active').attr('aria-hidden', 'false');

        }

    };

    EXT_Slick.prototype.buildOut = function() {

        var _ = this;

        _.$slides =
            _.$slider
                .children( _.options.slide + ':not(.ex_s_lick-cloned)')
                .addClass('ex_s_lick-slide');

        _.slideCount = _.$slides.length;

        _.$slides.each(function(index, element) {
            $(element)
                .attr('data-ex_s_lick-index', index)
                .data('originalStyling', $(element).attr('style') || '');
        });

        _.$slider.addClass('ex_s_lick-slider');

        _.$slideTrack = (_.slideCount === 0) ?
            $('<div class="ex_s_lick-track"/>').appendTo(_.$slider) :
            _.$slides.wrapAll('<div class="ex_s_lick-track"/>').parent();

        _.$list = _.$slideTrack.wrap(
            '<div aria-live="polite" class="ex_s_lick-list"/>').parent();
        _.$slideTrack.css('opacity', 0);

        if (_.options.centerMode === true || _.options.swipeToSlide === true) {
            _.options.slidesToScroll = 1;
        }

        $('img[data-lazy]', _.$slider).not('[src]').addClass('ex_s_lick-loading');

        _.setupInfinite();

        _.buildArrows();

        _.buildDots();

        _.updateDots();


        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);

        if (_.options.draggable === true) {
            _.$list.addClass('draggable');
        }

    };

    EXT_Slick.prototype.buildRows = function() {

        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;

        newSlides = document.createDocumentFragment();
        originalSlides = _.$slider.children();

        if(_.options.rows > 1) {

            slidesPerSection = _.options.slidesPerRow * _.options.rows;
            numOfSlides = Math.ceil(
                originalSlides.length / slidesPerSection
            );

            for(a = 0; a < numOfSlides; a++){
                var slide = document.createElement('div');
                for(b = 0; b < _.options.rows; b++) {
                    var row = document.createElement('div');
                    for(c = 0; c < _.options.slidesPerRow; c++) {
                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
                        if (originalSlides.get(target)) {
                            row.appendChild(originalSlides.get(target));
                        }
                    }
                    slide.appendChild(row);
                }
                newSlides.appendChild(slide);
            }

            _.$slider.empty().append(newSlides);
            _.$slider.children().children().children()
                .css({
                    'width':(100 / _.options.slidesPerRow) + '%',
                    'display': 'inline-block'
                });

        }

    };

    EXT_Slick.prototype.checkResponsive = function(initial, forceUpdate) {

        var _ = this,
            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
        var sliderWidth = _.$slider.width();
        var windowWidth = window.innerWidth || $(window).width();

        if (_.respondTo === 'window') {
            respondToWidth = windowWidth;
        } else if (_.respondTo === 'slider') {
            respondToWidth = sliderWidth;
        } else if (_.respondTo === 'min') {
            respondToWidth = Math.min(windowWidth, sliderWidth);
        }

        if ( _.options.responsive &&
            _.options.responsive.length &&
            _.options.responsive !== null) {

            targetBreakpoint = null;

            for (breakpoint in _.breakpoints) {
                if (_.breakpoints.hasOwnProperty(breakpoint)) {
                    if (_.originalSettings.mobileFirst === false) {
                        if (respondToWidth < _.breakpoints[breakpoint]) {
                            targetBreakpoint = _.breakpoints[breakpoint];
                        }
                    } else {
                        if (respondToWidth > _.breakpoints[breakpoint]) {
                            targetBreakpoint = _.breakpoints[breakpoint];
                        }
                    }
                }
            }

            if (targetBreakpoint !== null) {
                if (_.activeBreakpoint !== null) {
                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
                        _.activeBreakpoint =
                            targetBreakpoint;
                        if (_.breakpointSettings[targetBreakpoint] === 'unex_s_lick') {
                            _.unex_s_lick(targetBreakpoint);
                        } else {
                            _.options = $.extend({}, _.originalSettings,
                                _.breakpointSettings[
                                    targetBreakpoint]);
                            if (initial === true) {
                                _.currentSlide = _.options.initialSlide;
                            }
                            _.refresh(initial);
                        }
                        triggerBreakpoint = targetBreakpoint;
                    }
                } else {
                    _.activeBreakpoint = targetBreakpoint;
                    if (_.breakpointSettings[targetBreakpoint] === 'unex_s_lick') {
                        _.unex_s_lick(targetBreakpoint);
                    } else {
                        _.options = $.extend({}, _.originalSettings,
                            _.breakpointSettings[
                                targetBreakpoint]);
                        if (initial === true) {
                            _.currentSlide = _.options.initialSlide;
                        }
                        _.refresh(initial);
                    }
                    triggerBreakpoint = targetBreakpoint;
                }
            } else {
                if (_.activeBreakpoint !== null) {
                    _.activeBreakpoint = null;
                    _.options = _.originalSettings;
                    if (initial === true) {
                        _.currentSlide = _.options.initialSlide;
                    }
                    _.refresh(initial);
                    triggerBreakpoint = targetBreakpoint;
                }
            }

            // only trigger breakpoints during an actual break. not on initialize.
            if( !initial && triggerBreakpoint !== false ) {
                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);
            }
        }

    };

    EXT_Slick.prototype.changeSlide = function(event, dontAnimate) {

        var _ = this,
            $target = $(event.currentTarget),
            indexOffset, slideOffset, unevenOffset;

        // If target is a link, prevent default action.
        if($target.is('a')) {
            event.preventDefault();
        }

        // If target is not the <li> element (ie: a child), find the <li>.
        if(!$target.is('li')) {
            $target = $target.closest('li');
        }

        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;

        switch (event.data.message) {

            case 'previous':
                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
                if (_.slideCount > _.options.slidesToShow) {
                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
                }
                break;

            case 'next':
                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
                if (_.slideCount > _.options.slidesToShow) {
                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
                }
                break;

            case 'index':
                var index = event.data.index === 0 ? 0 :
                    event.data.index || $target.index() * _.options.slidesToScroll;

                _.slideHandler(_.checkNavigable(index), false, dontAnimate);
                $target.children().trigger('focus');
                break;

            default:
                return;
        }

    };

    EXT_Slick.prototype.checkNavigable = function(index) {

        var _ = this,
            navigables, prevNavigable;

        navigables = _.getNavigableIndexes();
        prevNavigable = 0;
        if (index > navigables[navigables.length - 1]) {
            index = navigables[navigables.length - 1];
        } else {
            for (var n in navigables) {
                if (index < navigables[n]) {
                    index = prevNavigable;
                    break;
                }
                prevNavigable = navigables[n];
            }
        }

        return index;
    };

    EXT_Slick.prototype.cleanUpEvents = function() {

        var _ = this;

        if (_.options.dots && _.$dots !== null) {

            $('li', _.$dots)
                .off('click.ex_s_lick', _.changeSlide)
                .off('mouseenter.ex_s_lick', $.proxy(_.interrupt, _, true))
                .off('mouseleave.ex_s_lick', $.proxy(_.interrupt, _, false));

        }

        _.$slider.off('focus.ex_s_lick blur.ex_s_lick');

        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
            _.$prevArrow && _.$prevArrow.off('click.ex_s_lick', _.changeSlide);
            _.$nextArrow && _.$nextArrow.off('click.ex_s_lick', _.changeSlide);
        }

        _.$list.off('touchstart.ex_s_lick mousedown.ex_s_lick', _.swipeHandler);
        _.$list.off('touchmove.ex_s_lick mousemove.ex_s_lick', _.swipeHandler);
        _.$list.off('touchend.ex_s_lick mouseup.ex_s_lick', _.swipeHandler);
        _.$list.off('touchcancel.ex_s_lick mouseleave.ex_s_lick', _.swipeHandler);

        _.$list.off('click.ex_s_lick', _.clickHandler);

        $(document).off(_.visibilityChange, _.visibility);

        _.cleanUpSlideEvents();

        if (_.options.accessibility === true) {
            _.$list.off('keydown.ex_s_lick', _.keyHandler);
        }

        if (_.options.focusOnSelect === true) {
            $(_.$slideTrack).children().off('click.ex_s_lick', _.selectHandler);
        }

        $(window).off('orientationchange.ex_s_lick.ex_s_lick-' + _.instanceUid, _.orientationChange);

        $(window).off('resize.ex_s_lick.ex_s_lick-' + _.instanceUid, _.resize);

        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);

        $(window).off('load.ex_s_lick.ex_s_lick-' + _.instanceUid, _.setPosition);
        $(document).off('ready.ex_s_lick.ex_s_lick-' + _.instanceUid, _.setPosition);

    };

    EXT_Slick.prototype.cleanUpSlideEvents = function() {

        var _ = this;

        _.$list.off('mouseenter.ex_s_lick', $.proxy(_.interrupt, _, true));
        _.$list.off('mouseleave.ex_s_lick', $.proxy(_.interrupt, _, false));

    };

    EXT_Slick.prototype.cleanUpRows = function() {

        var _ = this, originalSlides;

        if(_.options.rows > 1) {
            originalSlides = _.$slides.children().children();
            originalSlides.removeAttr('style');
            _.$slider.empty().append(originalSlides);
        }

    };

    EXT_Slick.prototype.clickHandler = function(event) {

        var _ = this;

        if (_.shouldClick === false) {
            event.stopImmediatePropagation();
            event.stopPropagation();
            event.preventDefault();
        }

    };

    EXT_Slick.prototype.destroy = function(refresh) {

        var _ = this;

        _.autoPlayClear();

        _.touchObject = {};

        _.cleanUpEvents();

        $('.ex_s_lick-cloned', _.$slider).detach();

        if (_.$dots) {
            _.$dots.remove();
        }


        if ( _.$prevArrow && _.$prevArrow.length ) {

            _.$prevArrow
                .removeClass('ex_s_lick-disabled ex_s_lick-arrow ex_s_lick-hidden')
                .removeAttr('aria-hidden aria-disabled tabindex')
                .css('display','');

            if ( _.htmlExpr.test( _.options.prevArrow )) {
                _.$prevArrow.remove();
            }
        }

        if ( _.$nextArrow && _.$nextArrow.length ) {

            _.$nextArrow
                .removeClass('ex_s_lick-disabled ex_s_lick-arrow ex_s_lick-hidden')
                .removeAttr('aria-hidden aria-disabled tabindex')
                .css('display','');

            if ( _.htmlExpr.test( _.options.nextArrow )) {
                _.$nextArrow.remove();
            }

        }


        if (_.$slides) {

            _.$slides
                .removeClass('ex_s_lick-slide ex_s_lick-active ex_s_lick-center ex_s_lick-visible ex_s_lick-current')
                .removeAttr('aria-hidden')
                .removeAttr('data-ex_s_lick-index')
                .each(function(){
                    $(this).attr('style', $(this).data('originalStyling'));
                });

            _.$slideTrack.children(this.options.slide).detach();

            _.$slideTrack.detach();

            _.$list.detach();

            _.$slider.append(_.$slides);
        }

        _.cleanUpRows();

        _.$slider.removeClass('ex_s_lick-slider');
        _.$slider.removeClass('ex_s_lick-initialized');
        _.$slider.removeClass('ex_s_lick-dotted');

        _.unex_s_licked = true;

        if(!refresh) {
            _.$slider.trigger('destroy', [_]);
        }

    };

    EXT_Slick.prototype.disableTransition = function(slide) {

        var _ = this,
            transition = {};

        transition[_.transitionType] = '';

        if (_.options.fade === false) {
            _.$slideTrack.css(transition);
        } else {
            _.$slides.eq(slide).css(transition);
        }

    };

    EXT_Slick.prototype.fadeSlide = function(slideIndex, callback) {

        var _ = this;

        if (_.cssTransitions === false) {

            _.$slides.eq(slideIndex).css({
                zIndex: _.options.zIndex
            });

            _.$slides.eq(slideIndex).animate({
                opacity: 1
            }, _.options.speed, _.options.easing, callback);

        } else {

            _.applyTransition(slideIndex);

            _.$slides.eq(slideIndex).css({
                opacity: 1,
                zIndex: _.options.zIndex
            });

            if (callback) {
                setTimeout(function() {

                    _.disableTransition(slideIndex);

                    callback.call();
                }, _.options.speed);
            }

        }

    };

    EXT_Slick.prototype.fadeSlideOut = function(slideIndex) {

        var _ = this;

        if (_.cssTransitions === false) {

            _.$slides.eq(slideIndex).animate({
                opacity: 0,
                zIndex: _.options.zIndex - 2
            }, _.options.speed, _.options.easing);

        } else {

            _.applyTransition(slideIndex);

            _.$slides.eq(slideIndex).css({
                opacity: 0,
                zIndex: _.options.zIndex - 2
            });

        }

    };

    EXT_Slick.prototype.filterSlides = EXT_Slick.prototype.ex_s_lickFilter = function(filter) {

        var _ = this;

        if (filter !== null) {

            _.$slidesCache = _.$slides;

            _.unload();

            _.$slideTrack.children(this.options.slide).detach();

            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);

            _.reinit();

        }

    };

    EXT_Slick.prototype.focusHandler = function() {

        var _ = this;

        _.$slider
            .off('focus.ex_s_lick blur.ex_s_lick')
            .on('focus.ex_s_lick blur.ex_s_lick',
                '*:not(.ex_s_lick-arrow)', function(event) {

            event.stopImmediatePropagation();
            var $sf = $(this);

            setTimeout(function() {

                if( _.options.pauseOnFocus ) {
                    _.focussed = $sf.is(':focus');
                    _.autoPlay();
                }

            }, 0);

        });
    };

    EXT_Slick.prototype.getCurrent = EXT_Slick.prototype.ex_s_lickCurrentSlide = function() {

        var _ = this;
        return _.currentSlide;

    };

    EXT_Slick.prototype.getDotCount = function() {

        var _ = this;

        var breakPoint = 0;
        var counter = 0;
        var pagerQty = 0;

        if (_.options.infinite === true) {
            while (breakPoint < _.slideCount) {
                ++pagerQty;
                breakPoint = counter + _.options.slidesToScroll;
                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
            }
        } else if (_.options.centerMode === true) {
            pagerQty = _.slideCount;
        } else if(!_.options.asNavFor) {
            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
        }else {
            while (breakPoint < _.slideCount) {
                ++pagerQty;
                breakPoint = counter + _.options.slidesToScroll;
                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
            }
        }

        return pagerQty - 1;

    };

    EXT_Slick.prototype.getLeft = function(slideIndex) {

        var _ = this,
            targetLeft,
            verticalHeight,
            verticalOffset = 0,
            targetSlide;

        _.slideOffset = 0;
        verticalHeight = _.$slides.first().outerHeight(true);

        if (_.options.infinite === true) {
            if (_.slideCount > _.options.slidesToShow) {
                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
                verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;
            }
            if (_.slideCount % _.options.slidesToScroll !== 0) {
                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
                    if (slideIndex > _.slideCount) {
                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;
                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
                    } else {
                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
                    }
                }
            }
        } else {
            if (slideIndex + _.options.slidesToShow > _.slideCount) {
                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
            }
        }

        if (_.slideCount <= _.options.slidesToShow) {
            _.slideOffset = 0;
            verticalOffset = 0;
        }

        if (_.options.centerMode === true && _.options.infinite === true) {
            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
        } else if (_.options.centerMode === true) {
            _.slideOffset = 0;
            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
        }

        if (_.options.vertical === false) {
            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
        } else {
            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
        }

        if (_.options.variableWidth === true) {

            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
                targetSlide = _.$slideTrack.children('.ex_s_lick-slide').eq(slideIndex);
            } else {
                targetSlide = _.$slideTrack.children('.ex_s_lick-slide').eq(slideIndex + _.options.slidesToShow);
            }

            if (_.options.rtl === true) {
                if (targetSlide[0]) {
                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
                } else {
                    targetLeft =  0;
                }
            } else {
                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
            }

            if (_.options.centerMode === true) {
                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
                    targetSlide = _.$slideTrack.children('.ex_s_lick-slide').eq(slideIndex);
                } else {
                    targetSlide = _.$slideTrack.children('.ex_s_lick-slide').eq(slideIndex + _.options.slidesToShow + 1);
                }

                if (_.options.rtl === true) {
                    if (targetSlide[0]) {
                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
                    } else {
                        targetLeft =  0;
                    }
                } else {
                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
                }

                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
            }
        }

        return targetLeft;

    };

    EXT_Slick.prototype.getOption = EXT_Slick.prototype.ex_s_lickGetOption = function(option) {

        var _ = this;

        return _.options[option];

    };

    EXT_Slick.prototype.getNavigableIndexes = function() {

        var _ = this,
            breakPoint = 0,
            counter = 0,
            indexes = [],
            max;

        if (_.options.infinite === false) {
            max = _.slideCount;
        } else {
            breakPoint = _.options.slidesToScroll * -1;
            counter = _.options.slidesToScroll * -1;
            max = _.slideCount * 2;
        }

        while (breakPoint < max) {
            indexes.push(breakPoint);
            breakPoint = counter + _.options.slidesToScroll;
            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
        }

        return indexes;

    };

    EXT_Slick.prototype.getEXT_Slick = function() {

        return this;

    };

    EXT_Slick.prototype.getSlideCount = function() {

        var _ = this,
            slidesTraversed, swipedSlide, centerOffset;

        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;

        if (_.options.swipeToSlide === true) {
            _.$slideTrack.find('.ex_s_lick-slide').each(function(index, slide) {
                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {
                    swipedSlide = slide;
                    return false;
                }
            });

            slidesTraversed = Math.abs($(swipedSlide).attr('data-ex_s_lick-index') - _.currentSlide) || 1;

            return slidesTraversed;

        } else {
            return _.options.slidesToScroll;
        }

    };

    EXT_Slick.prototype.goTo = EXT_Slick.prototype.ex_s_lickGoTo = function(slide, dontAnimate) {

        var _ = this;

        _.changeSlide({
            data: {
                message: 'index',
                index: parseInt(slide)
            }
        }, dontAnimate);

    };

    EXT_Slick.prototype.init = function(creation) {

        var _ = this;

        if (!$(_.$slider).hasClass('ex_s_lick-initialized')) {

            $(_.$slider).addClass('ex_s_lick-initialized');

            _.buildRows();
            _.buildOut();
            _.setProps();
            _.startLoad();
            _.loadSlider();
            _.initializeEvents();
            _.updateArrows();
            _.updateDots();
            _.checkResponsive(true);
            _.focusHandler();

        }

        if (creation) {
            _.$slider.trigger('init', [_]);
        }

        if (_.options.accessibility === true) {
            _.initADA();
        }

        if ( _.options.autoplay ) {

            _.paused = false;
            _.autoPlay();

        }

    };

    EXT_Slick.prototype.initADA = function() {
        var _ = this;
        _.$slides.add(_.$slideTrack.find('.ex_s_lick-cloned')).attr({
            'aria-hidden': 'true',
            'tabindex': '-1'
        }).find('a, input, button, select').attr({
            'tabindex': '-1'
        });

        _.$slideTrack.attr('role', 'listbox');

        _.$slides.not(_.$slideTrack.find('.ex_s_lick-cloned')).each(function(i) {
            $(this).attr({
                'role': 'option',
                'aria-describedby': 'ex_s_lick-slide' + _.instanceUid + i + ''
            });
        });

        if (_.$dots !== null) {
            _.$dots.attr('role', 'tablist').find('li').each(function(i) {
                $(this).attr({
                    'role': 'presentation',
                    'aria-selected': 'false',
                    'aria-controls': 'navigation' + _.instanceUid + i + '',
                    'id': 'ex_s_lick-slide' + _.instanceUid + i + ''
                });
            })
                .first().attr('aria-selected', 'true').end()
                .find('button').attr('role', 'button').end()
                .closest('div').attr('role', 'toolbar');
        }
        _.activateADA();

    };

    EXT_Slick.prototype.initArrowEvents = function() {

        var _ = this;

        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
            _.$prevArrow
               .off('click.ex_s_lick')
               .on('click.ex_s_lick', {
                    message: 'previous'
               }, _.changeSlide);
            _.$nextArrow
               .off('click.ex_s_lick')
               .on('click.ex_s_lick', {
                    message: 'next'
               }, _.changeSlide);
        }

    };

    EXT_Slick.prototype.initDotEvents = function() {

        var _ = this;

        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
            $('li', _.$dots).on('click.ex_s_lick', {
                message: 'index'
            }, _.changeSlide);
        }

        if ( _.options.dots === true && _.options.pauseOnDotsHover === true ) {

            $('li', _.$dots)
                .on('mouseenter.ex_s_lick', $.proxy(_.interrupt, _, true))
                .on('mouseleave.ex_s_lick', $.proxy(_.interrupt, _, false));

        }

    };

    EXT_Slick.prototype.initSlideEvents = function() {

        var _ = this;

        if ( _.options.pauseOnHover ) {

            _.$list.on('mouseenter.ex_s_lick', $.proxy(_.interrupt, _, true));
            _.$list.on('mouseleave.ex_s_lick', $.proxy(_.interrupt, _, false));

        }

    };

    EXT_Slick.prototype.initializeEvents = function() {

        var _ = this;

        _.initArrowEvents();

        _.initDotEvents();
        _.initSlideEvents();

        _.$list.on('touchstart.ex_s_lick mousedown.ex_s_lick', {
            action: 'start'
        }, _.swipeHandler);
        _.$list.on('touchmove.ex_s_lick mousemove.ex_s_lick', {
            action: 'move'
        }, _.swipeHandler);
        _.$list.on('touchend.ex_s_lick mouseup.ex_s_lick', {
            action: 'end'
        }, _.swipeHandler);
        _.$list.on('touchcancel.ex_s_lick mouseleave.ex_s_lick', {
            action: 'end'
        }, _.swipeHandler);

        _.$list.on('click.ex_s_lick', _.clickHandler);

        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));

        if (_.options.accessibility === true) {
            _.$list.on('keydown.ex_s_lick', _.keyHandler);
        }

        if (_.options.focusOnSelect === true) {
            $(_.$slideTrack).children().on('click.ex_s_lick', _.selectHandler);
        }

        $(window).on('orientationchange.ex_s_lick.ex_s_lick-' + _.instanceUid, $.proxy(_.orientationChange, _));

        $(window).on('resize.ex_s_lick.ex_s_lick-' + _.instanceUid, $.proxy(_.resize, _));

        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);

        $(window).on('load.ex_s_lick.ex_s_lick-' + _.instanceUid, _.setPosition);
        $(document).on('ready.ex_s_lick.ex_s_lick-' + _.instanceUid, _.setPosition);

    };

    EXT_Slick.prototype.initUI = function() {

        var _ = this;

        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {

            _.$prevArrow.show();
            _.$nextArrow.show();

        }

        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {

            _.$dots.show();

        }

    };

    EXT_Slick.prototype.keyHandler = function(event) {

        var _ = this;
         //Dont slide if the cursor is inside the form fields and arrow keys are pressed
        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {
            if (event.keyCode === 37 && _.options.accessibility === true) {
                _.changeSlide({
                    data: {
                        message: _.options.rtl === true ? 'next' :  'previous'
                    }
                });
            } else if (event.keyCode === 39 && _.options.accessibility === true) {
                _.changeSlide({
                    data: {
                        message: _.options.rtl === true ? 'previous' : 'next'
                    }
                });
            }
        }

    };

    EXT_Slick.prototype.lazyLoad = function() {

        var _ = this,
            loadRange, cloneRange, rangeStart, rangeEnd;

        function loadImages(imagesScope) {

            $('img[data-lazy]', imagesScope).each(function() {

                var image = $(this),
                    imageSource = $(this).attr('data-lazy'),
                    imageToLoad = document.createElement('img');

                imageToLoad.onload = function() {

                    image
                        .animate({ opacity: 0 }, 100, function() {
                            image
                                .attr('src', imageSource)
                                .animate({ opacity: 1 }, 200, function() {
                                    image
                                        .removeAttr('data-lazy')
                                        .removeClass('ex_s_lick-loading');
                                });
                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
                        });

                };

                imageToLoad.onerror = function() {

                    image
                        .removeAttr( 'data-lazy' )
                        .removeClass( 'ex_s_lick-loading' )
                        .addClass( 'ex_s_lick-lazyload-error' );

                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);

                };

                imageToLoad.src = imageSource;

            });

        }

        if (_.options.centerMode === true) {
            if (_.options.infinite === true) {
                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
                rangeEnd = rangeStart + _.options.slidesToShow + 2;
            } else {
                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
            }
        } else {
            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);
            if (_.options.fade === true) {
                if (rangeStart > 0) rangeStart--;
                if (rangeEnd <= _.slideCount) rangeEnd++;
            }
        }

        loadRange = _.$slider.find('.ex_s_lick-slide').slice(rangeStart, rangeEnd);
        loadImages(loadRange);

        if (_.slideCount <= _.options.slidesToShow) {
            cloneRange = _.$slider.find('.ex_s_lick-slide');
            loadImages(cloneRange);
        } else
        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
            cloneRange = _.$slider.find('.ex_s_lick-cloned').slice(0, _.options.slidesToShow);
            loadImages(cloneRange);
        } else if (_.currentSlide === 0) {
            cloneRange = _.$slider.find('.ex_s_lick-cloned').slice(_.options.slidesToShow * -1);
            loadImages(cloneRange);
        }

    };

    EXT_Slick.prototype.loadSlider = function() {

        var _ = this;

        _.setPosition();

        _.$slideTrack.css({
            opacity: 1
        });

        _.$slider.removeClass('ex_s_lick-loading');

        _.initUI();

        if (_.options.lazyLoad === 'progressive') {
            _.progressiveLazyLoad();
        }

    };

    EXT_Slick.prototype.next = EXT_Slick.prototype.ex_s_lickNext = function() {

        var _ = this;

        _.changeSlide({
            data: {
                message: 'next'
            }
        });

    };

    EXT_Slick.prototype.orientationChange = function() {

        var _ = this;

        _.checkResponsive();
        _.setPosition();

    };

    EXT_Slick.prototype.pause = EXT_Slick.prototype.ex_s_lickPause = function() {

        var _ = this;

        _.autoPlayClear();
        _.paused = true;

    };

    EXT_Slick.prototype.play = EXT_Slick.prototype.ex_s_lickPlay = function() {

        var _ = this;

        _.autoPlay();
        _.options.autoplay = true;
        _.paused = false;
        _.focussed = false;
        _.interrupted = false;

    };

    EXT_Slick.prototype.postSlide = function(index) {

        var _ = this;

        if( !_.unex_s_licked ) {

            _.$slider.trigger('afterChange', [_, index]);

            _.animating = false;

            _.setPosition();

            _.swipeLeft = null;

            if ( _.options.autoplay ) {
                _.autoPlay();
            }

            if (_.options.accessibility === true) {
                _.initADA();
            }

        }

    };

    EXT_Slick.prototype.prev = EXT_Slick.prototype.ex_s_lickPrev = function() {

        var _ = this;

        _.changeSlide({
            data: {
                message: 'previous'
            }
        });

    };

    EXT_Slick.prototype.preventDefault = function(event) {

        event.preventDefault();

    };

    EXT_Slick.prototype.progressiveLazyLoad = function( tryCount ) {

        tryCount = tryCount || 1;

        var _ = this,
            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),
            image,
            imageSource,
            imageToLoad;

        if ( $imgsToLoad.length ) {

            image = $imgsToLoad.first();
            imageSource = image.attr('data-lazy');
            imageToLoad = document.createElement('img');

            imageToLoad.onload = function() {

                image
                    .attr( 'src', imageSource )
                    .removeAttr('data-lazy')
                    .removeClass('ex_s_lick-loading');

                if ( _.options.adaptiveHeight === true ) {
                    _.setPosition();
                }

                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);
                _.progressiveLazyLoad();

            };

            imageToLoad.onerror = function() {

                if ( tryCount < 3 ) {

                    /**
                     * try to load the image 3 times,
                     * leave a slight delay so we don't get
                     * servers blocking the request.
                     */
                    setTimeout( function() {
                        _.progressiveLazyLoad( tryCount + 1 );
                    }, 500 );

                } else {

                    image
                        .removeAttr( 'data-lazy' )
                        .removeClass( 'ex_s_lick-loading' )
                        .addClass( 'ex_s_lick-lazyload-error' );

                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);

                    _.progressiveLazyLoad();

                }

            };

            imageToLoad.src = imageSource;

        } else {

            _.$slider.trigger('allImagesLoaded', [ _ ]);

        }

    };

    EXT_Slick.prototype.refresh = function( initializing ) {

        var _ = this, currentSlide, lastVisibleIndex;

        lastVisibleIndex = _.slideCount - _.options.slidesToShow;

        // in non-infinite sliders, we don't want to go past the
        // last visible index.
        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {
            _.currentSlide = lastVisibleIndex;
        }

        // if less slides than to show, go to start.
        if ( _.slideCount <= _.options.slidesToShow ) {
            _.currentSlide = 0;

        }

        currentSlide = _.currentSlide;

        _.destroy(true);

        $.extend(_, _.initials, { currentSlide: currentSlide });

        _.init();

        if( !initializing ) {

            _.changeSlide({
                data: {
                    message: 'index',
                    index: currentSlide
                }
            }, false);

        }

    };

    EXT_Slick.prototype.registerBreakpoints = function() {

        var _ = this, breakpoint, currentBreakpoint, l,
            responsiveSettings = _.options.responsive || null;

        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {

            _.respondTo = _.options.respondTo || 'window';

            for ( breakpoint in responsiveSettings ) {

                l = _.breakpoints.length-1;
                currentBreakpoint = responsiveSettings[breakpoint].breakpoint;

                if (responsiveSettings.hasOwnProperty(breakpoint)) {

                    // loop through the breakpoints and cut out any existing
                    // ones with the same breakpoint number, we don't want dupes.
                    while( l >= 0 ) {
                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {
                            _.breakpoints.splice(l,1);
                        }
                        l--;
                    }

                    _.breakpoints.push(currentBreakpoint);
                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;

                }

            }

            _.breakpoints.sort(function(a, b) {
                return ( _.options.mobileFirst ) ? a-b : b-a;
            });

        }

    };

    EXT_Slick.prototype.reinit = function() {

        var _ = this;

        _.$slides =
            _.$slideTrack
                .children(_.options.slide)
                .addClass('ex_s_lick-slide');

        _.slideCount = _.$slides.length;

        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
        }

        if (_.slideCount <= _.options.slidesToShow) {
            _.currentSlide = 0;
        }

        _.registerBreakpoints();

        _.setProps();
        _.setupInfinite();
        _.buildArrows();
        _.updateArrows();
        _.initArrowEvents();
        _.buildDots();
        _.updateDots();
        _.initDotEvents();
        _.cleanUpSlideEvents();
        _.initSlideEvents();

        _.checkResponsive(false, true);

        if (_.options.focusOnSelect === true) {
            $(_.$slideTrack).children().on('click.ex_s_lick', _.selectHandler);
        }

        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);

        _.setPosition();
        _.focusHandler();

        _.paused = !_.options.autoplay;
        _.autoPlay();

        _.$slider.trigger('reInit', [_]);

    };

    EXT_Slick.prototype.resize = function() {

        var _ = this;

        if ($(window).width() !== _.windowWidth) {
            clearTimeout(_.windowDelay);
            _.windowDelay = window.setTimeout(function() {
                _.windowWidth = $(window).width();
                _.checkResponsive();
                if( !_.unex_s_licked ) { _.setPosition(); }
            }, 50);
        }
    };

    EXT_Slick.prototype.removeSlide = EXT_Slick.prototype.ex_s_lickRemove = function(index, removeBefore, removeAll) {

        var _ = this;

        if (typeof(index) === 'boolean') {
            removeBefore = index;
            index = removeBefore === true ? 0 : _.slideCount - 1;
        } else {
            index = removeBefore === true ? --index : index;
        }

        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
            return false;
        }

        _.unload();

        if (removeAll === true) {
            _.$slideTrack.children().remove();
        } else {
            _.$slideTrack.children(this.options.slide).eq(index).remove();
        }

        _.$slides = _.$slideTrack.children(this.options.slide);

        _.$slideTrack.children(this.options.slide).detach();

        _.$slideTrack.append(_.$slides);

        _.$slidesCache = _.$slides;

        _.reinit();

    };

    EXT_Slick.prototype.setCSS = function(position) {

        var _ = this,
            positionProps = {},
            x, y;

        if (_.options.rtl === true) {
            position = -position;
        }
        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';
        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';

        positionProps[_.positionProp] = position;

        if (_.transformsEnabled === false) {
            _.$slideTrack.css(positionProps);
        } else {
            positionProps = {};
            if (_.cssTransitions === false) {
                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
                _.$slideTrack.css(positionProps);
            } else {
                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
                _.$slideTrack.css(positionProps);
            }
        }

    };

    EXT_Slick.prototype.setDimensions = function() {

        var _ = this;

        if (_.options.vertical === false) {
            if (_.options.centerMode === true) {
                _.$list.css({
                    padding: ('0px ' + _.options.centerPadding)
                });
            }
        } else {
            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
            if (_.options.centerMode === true) {
                _.$list.css({
                    padding: (_.options.centerPadding + ' 0px')
                });
            }
        }

        _.listWidth = _.$list.width();
        _.listHeight = _.$list.height();


        if (_.options.vertical === false && _.options.variableWidth === false) {
            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.ex_s_lick-slide').length)));

        } else if (_.options.variableWidth === true) {
            _.$slideTrack.width(5000 * _.slideCount);
        } else {
            _.slideWidth = Math.ceil(_.listWidth);
            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.ex_s_lick-slide').length)));
        }

        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
        if (_.options.variableWidth === false) _.$slideTrack.children('.ex_s_lick-slide').width(_.slideWidth - offset);

    };

    EXT_Slick.prototype.setFade = function() {

        var _ = this,
            targetLeft;

        _.$slides.each(function(index, element) {
            targetLeft = (_.slideWidth * index) * -1;
            if (_.options.rtl === true) {
                $(element).css({
                    position: 'relative',
                    right: targetLeft,
                    top: 0,
                    zIndex: _.options.zIndex - 2,
                    opacity: 0
                });
            } else {
                $(element).css({
                    position: 'relative',
                    left: targetLeft,
                    top: 0,
                    zIndex: _.options.zIndex - 2,
                    opacity: 0
                });
            }
        });

        _.$slides.eq(_.currentSlide).css({
            zIndex: _.options.zIndex - 1,
            opacity: 1
        });

    };

    EXT_Slick.prototype.setHeight = function() {

        var _ = this;

        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
            _.$list.css('height', targetHeight);
        }

    };

    EXT_Slick.prototype.setOption =
    EXT_Slick.prototype.ex_s_lickSetOption = function() {

        /**
         * accepts arguments in format of:
         *
         *  - for changing a single option's value:
         *     .ex_s_lick("setOption", option, value, refresh )
         *
         *  - for changing a set of responsive options:
         *     .ex_s_lick("setOption", 'responsive', [{}, ...], refresh )
         *
         *  - for updating multiple values at once (not responsive)
         *     .ex_s_lick("setOption", { 'option': value, ... }, refresh )
         */

        var _ = this, l, item, option, value, refresh = false, type;

        if( $.type( arguments[0] ) === 'object' ) {

            option =  arguments[0];
            refresh = arguments[1];
            type = 'multiple';

        } else if ( $.type( arguments[0] ) === 'string' ) {

            option =  arguments[0];
            value = arguments[1];
            refresh = arguments[2];

            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {

                type = 'responsive';

            } else if ( typeof arguments[1] !== 'undefined' ) {

                type = 'single';

            }

        }

        if ( type === 'single' ) {

            _.options[option] = value;


        } else if ( type === 'multiple' ) {

            $.each( option , function( opt, val ) {

                _.options[opt] = val;

            });


        } else if ( type === 'responsive' ) {

            for ( item in value ) {

                if( $.type( _.options.responsive ) !== 'array' ) {

                    _.options.responsive = [ value[item] ];

                } else {

                    l = _.options.responsive.length-1;

                    // loop through the responsive object and splice out duplicates.
                    while( l >= 0 ) {

                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {

                            _.options.responsive.splice(l,1);

                        }

                        l--;

                    }

                    _.options.responsive.push( value[item] );

                }

            }

        }

        if ( refresh ) {

            _.unload();
            _.reinit();

        }

    };

    EXT_Slick.prototype.setPosition = function() {

        var _ = this;

        _.setDimensions();

        _.setHeight();

        if (_.options.fade === false) {
            _.setCSS(_.getLeft(_.currentSlide));
        } else {
            _.setFade();
        }

        _.$slider.trigger('setPosition', [_]);

    };

    EXT_Slick.prototype.setProps = function() {

        var _ = this,
            bodyStyle = document.body.style;

        _.positionProp = _.options.vertical === true ? 'top' : 'left';

        if (_.positionProp === 'top') {
            _.$slider.addClass('ex_s_lick-vertical');
        } else {
            _.$slider.removeClass('ex_s_lick-vertical');
        }

        if (bodyStyle.WebkitTransition !== undefined ||
            bodyStyle.MozTransition !== undefined ||
            bodyStyle.msTransition !== undefined) {
            if (_.options.useCSS === true) {
                _.cssTransitions = true;
            }
        }

        if ( _.options.fade ) {
            if ( typeof _.options.zIndex === 'number' ) {
                if( _.options.zIndex < 3 ) {
                    _.options.zIndex = 3;
                }
            } else {
                _.options.zIndex = _.defaults.zIndex;
            }
        }

        if (bodyStyle.OTransform !== undefined) {
            _.animType = 'OTransform';
            _.transformType = '-o-transform';
            _.transitionType = 'OTransition';
            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
        }
        if (bodyStyle.MozTransform !== undefined) {
            _.animType = 'MozTransform';
            _.transformType = '-moz-transform';
            _.transitionType = 'MozTransition';
            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
        }
        if (bodyStyle.webkitTransform !== undefined) {
            _.animType = 'webkitTransform';
            _.transformType = '-webkit-transform';
            _.transitionType = 'webkitTransition';
            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
        }
        if (bodyStyle.msTransform !== undefined) {
            _.animType = 'msTransform';
            _.transformType = '-ms-transform';
            _.transitionType = 'msTransition';
            if (bodyStyle.msTransform === undefined) _.animType = false;
        }
        if (bodyStyle.transform !== undefined && _.animType !== false) {
            _.animType = 'transform';
            _.transformType = 'transform';
            _.transitionType = 'transition';
        }
        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);
    };


    EXT_Slick.prototype.setSlideClasses = function(index) {

        var _ = this,
            centerOffset, allSlides, indexOffset, remainder;

        allSlides = _.$slider
            .find('.ex_s_lick-slide')
            .removeClass('ex_s_lick-active ex_s_lick-center ex_s_lick-current')
            .attr('aria-hidden', 'true');

        _.$slides
            .eq(index)
            .addClass('ex_s_lick-current');

        if (_.options.centerMode === true) {

            centerOffset = Math.floor(_.options.slidesToShow / 2);

            if (_.options.infinite === true) {

                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {

                    _.$slides
                        .slice(index - centerOffset, index + centerOffset + 1)
                        .addClass('ex_s_lick-active')
                        .attr('aria-hidden', 'false');

                } else {

                    indexOffset = _.options.slidesToShow + index;
                    allSlides
                        .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2)
                        .addClass('ex_s_lick-active')
                        .attr('aria-hidden', 'false');

                }

                if (index === 0) {

                    allSlides
                        .eq(allSlides.length - 1 - _.options.slidesToShow)
                        .addClass('ex_s_lick-center');

                } else if (index === _.slideCount - 1) {

                    allSlides
                        .eq(_.options.slidesToShow)
                        .addClass('ex_s_lick-center');

                }

            }

            _.$slides
                .eq(index)
                .addClass('ex_s_lick-center');

        } else {

            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {

                _.$slides
                    .slice(index, index + _.options.slidesToShow)
                    .addClass('ex_s_lick-active')
                    .attr('aria-hidden', 'false');

            } else if (allSlides.length <= _.options.slidesToShow) {

                allSlides
                    .addClass('ex_s_lick-active')
                    .attr('aria-hidden', 'false');

            } else {

                remainder = _.slideCount % _.options.slidesToShow;
                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;

                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {

                    allSlides
                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
                        .addClass('ex_s_lick-active')
                        .attr('aria-hidden', 'false');

                } else {

                    allSlides
                        .slice(indexOffset, indexOffset + _.options.slidesToShow)
                        .addClass('ex_s_lick-active')
                        .attr('aria-hidden', 'false');

                }

            }

        }

        if (_.options.lazyLoad === 'ondemand') {
            _.lazyLoad();
        }

    };

    EXT_Slick.prototype.setupInfinite = function() {

        var _ = this,
            i, slideIndex, infiniteCount;

        if (_.options.fade === true) {
            _.options.centerMode = false;
        }

        if (_.options.infinite === true && _.options.fade === false) {

            slideIndex = null;

            if (_.slideCount > _.options.slidesToShow) {

                if (_.options.centerMode === true) {
                    infiniteCount = _.options.slidesToShow + 1;
                } else {
                    infiniteCount = _.options.slidesToShow;
                }

                for (i = _.slideCount; i > (_.slideCount -
                        infiniteCount); i -= 1) {
                    slideIndex = i - 1;
                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
                        .attr('data-ex_s_lick-index', slideIndex - _.slideCount)
                        .prependTo(_.$slideTrack).addClass('ex_s_lick-cloned');
                }
                for (i = 0; i < infiniteCount; i += 1) {
                    slideIndex = i;
                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
                        .attr('data-ex_s_lick-index', slideIndex + _.slideCount)
                        .appendTo(_.$slideTrack).addClass('ex_s_lick-cloned');
                }
                _.$slideTrack.find('.ex_s_lick-cloned').find('[id]').each(function() {
                    $(this).attr('id', '');
                });

            }

        }

    };

    EXT_Slick.prototype.interrupt = function( toggle ) {

        var _ = this;

        if( !toggle ) {
            _.autoPlay();
        }
        _.interrupted = toggle;

    };

    EXT_Slick.prototype.selectHandler = function(event) {

        var _ = this;

        var targetElement =
            $(event.target).is('.ex_s_lick-slide') ?
                $(event.target) :
                $(event.target).parents('.ex_s_lick-slide');

        var index = parseInt(targetElement.attr('data-ex_s_lick-index'));

        if (!index) index = 0;

        if (_.slideCount <= _.options.slidesToShow) {

            _.setSlideClasses(index);
            _.asNavFor(index);
            return;

        }

        _.slideHandler(index);

    };

    EXT_Slick.prototype.slideHandler = function(index, sync, dontAnimate) {

        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
            _ = this, navTarget;

        sync = sync || false;

        if (_.animating === true && _.options.waitForAnimate === true) {
            return;
        }

        if (_.options.fade === true && _.currentSlide === index) {
            return;
        }

        if (_.slideCount <= _.options.slidesToShow) {
            return;
        }

        if (sync === false) {
            _.asNavFor(index);
        }

        targetSlide = index;
        targetLeft = _.getLeft(targetSlide);
        slideLeft = _.getLeft(_.currentSlide);

        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;

        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
            if (_.options.fade === false) {
                targetSlide = _.currentSlide;
                if (dontAnimate !== true) {
                    _.animateSlide(slideLeft, function() {
                        _.postSlide(targetSlide);
                    });
                } else {
                    _.postSlide(targetSlide);
                }
            }
            return;
        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
            if (_.options.fade === false) {
                targetSlide = _.currentSlide;
                if (dontAnimate !== true) {
                    _.animateSlide(slideLeft, function() {
                        _.postSlide(targetSlide);
                    });
                } else {
                    _.postSlide(targetSlide);
                }
            }
            return;
        }

        if ( _.options.autoplay ) {
            clearInterval(_.autoPlayTimer);
        }

        if (targetSlide < 0) {
            if (_.slideCount % _.options.slidesToScroll !== 0) {
                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
            } else {
                animSlide = _.slideCount + targetSlide;
            }
        } else if (targetSlide >= _.slideCount) {
            if (_.slideCount % _.options.slidesToScroll !== 0) {
                animSlide = 0;
            } else {
                animSlide = targetSlide - _.slideCount;
            }
        } else {
            animSlide = targetSlide;
        }

        _.animating = true;

        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);

        oldSlide = _.currentSlide;
        _.currentSlide = animSlide;

        _.setSlideClasses(_.currentSlide);

        if ( _.options.asNavFor ) {

            navTarget = _.getNavTarget();
            navTarget = navTarget.EX_ex_s_lick('getEXT_Slick');

            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {
                navTarget.setSlideClasses(_.currentSlide);
            }

        }

        _.updateDots();
        _.updateArrows();

        if (_.options.fade === true) {
            if (dontAnimate !== true) {

                _.fadeSlideOut(oldSlide);

                _.fadeSlide(animSlide, function() {
                    _.postSlide(animSlide);
                });

            } else {
                _.postSlide(animSlide);
            }
            _.animateHeight();
            return;
        }

        if (dontAnimate !== true) {
            _.animateSlide(targetLeft, function() {
                _.postSlide(animSlide);
            });
        } else {
            _.postSlide(animSlide);
        }

    };

    EXT_Slick.prototype.startLoad = function() {

        var _ = this;

        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {

            _.$prevArrow.hide();
            _.$nextArrow.hide();

        }

        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {

            _.$dots.hide();

        }

        _.$slider.addClass('ex_s_lick-loading');

    };

    EXT_Slick.prototype.swipeDirection = function() {

        var xDist, yDist, r, swipeAngle, _ = this;

        xDist = _.touchObject.startX - _.touchObject.curX;
        yDist = _.touchObject.startY - _.touchObject.curY;
        r = Math.atan2(yDist, xDist);

        swipeAngle = Math.round(r * 180 / Math.PI);
        if (swipeAngle < 0) {
            swipeAngle = 360 - Math.abs(swipeAngle);
        }

        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
            return (_.options.rtl === false ? 'left' : 'right');
        }
        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
            return (_.options.rtl === false ? 'left' : 'right');
        }
        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
            return (_.options.rtl === false ? 'right' : 'left');
        }
        if (_.options.verticalSwiping === true) {
            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
                return 'down';
            } else {
                return 'up';
            }
        }

        return 'vertical';

    };

    EXT_Slick.prototype.swipeEnd = function(event) {

        var _ = this,
            slideCount,
            direction;

        _.dragging = false;
        _.interrupted = false;
        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;

        if ( _.touchObject.curX === undefined ) {
            return false;
        }

        if ( _.touchObject.edgeHit === true ) {
            _.$slider.trigger('edge', [_, _.swipeDirection() ]);
        }

        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {

            direction = _.swipeDirection();

            switch ( direction ) {

                case 'left':
                case 'down':

                    slideCount =
                        _.options.swipeToSlide ?
                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :
                            _.currentSlide + _.getSlideCount();

                    _.currentDirection = 0;

                    break;

                case 'right':
                case 'up':

                    slideCount =
                        _.options.swipeToSlide ?
                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :
                            _.currentSlide - _.getSlideCount();

                    _.currentDirection = 1;

                    break;

                default:


            }

            if( direction != 'vertical' ) {

                _.slideHandler( slideCount );
                _.touchObject = {};
                _.$slider.trigger('swipe', [_, direction ]);

            }

        } else {

            if ( _.touchObject.startX !== _.touchObject.curX ) {

                _.slideHandler( _.currentSlide );
                _.touchObject = {};

            }

        }

    };

    EXT_Slick.prototype.swipeHandler = function(event) {

        var _ = this;

        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
            return;
        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
            return;
        }

        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
            event.originalEvent.touches.length : 1;

        _.touchObject.minSwipe = _.listWidth / _.options
            .touchThreshold;

        if (_.options.verticalSwiping === true) {
            _.touchObject.minSwipe = _.listHeight / _.options
                .touchThreshold;
        }

        switch (event.data.action) {

            case 'start':
                _.swipeStart(event);
                break;

            case 'move':
                _.swipeMove(event);
                break;

            case 'end':
                _.swipeEnd(event);
                break;

        }

    };

    EXT_Slick.prototype.swipeMove = function(event) {

        var _ = this,
            edgeWasHit = false,
            curLeft, swipeDirection, swipeLength, positionOffset, touches;

        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;

        if (!_.dragging || touches && touches.length !== 1) {
            return false;
        }

        curLeft = _.getLeft(_.currentSlide);

        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;

        _.touchObject.swipeLength = Math.round(Math.sqrt(
            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));

        if (_.options.verticalSwiping === true) {
            _.touchObject.swipeLength = Math.round(Math.sqrt(
                Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
        }

        swipeDirection = _.swipeDirection();

        if (swipeDirection === 'vertical') {
            return;
        }

        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
            event.preventDefault();
        }

        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
        if (_.options.verticalSwiping === true) {
            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
        }


        swipeLength = _.touchObject.swipeLength;

        _.touchObject.edgeHit = false;

        if (_.options.infinite === false) {
            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
                _.touchObject.edgeHit = true;
            }
        }

        if (_.options.vertical === false) {
            _.swipeLeft = curLeft + swipeLength * positionOffset;
        } else {
            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
        }
        if (_.options.verticalSwiping === true) {
            _.swipeLeft = curLeft + swipeLength * positionOffset;
        }

        if (_.options.fade === true || _.options.touchMove === false) {
            return false;
        }

        if (_.animating === true) {
            _.swipeLeft = null;
            return false;
        }

        _.setCSS(_.swipeLeft);

    };

    EXT_Slick.prototype.swipeStart = function(event) {

        var _ = this,
            touches;

        _.interrupted = true;

        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
            _.touchObject = {};
            return false;
        }

        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
            touches = event.originalEvent.touches[0];
        }

        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;

        _.dragging = true;

    };

    EXT_Slick.prototype.unfilterSlides = EXT_Slick.prototype.ex_s_lickUnfilter = function() {

        var _ = this;

        if (_.$slidesCache !== null) {

            _.unload();

            _.$slideTrack.children(this.options.slide).detach();

            _.$slidesCache.appendTo(_.$slideTrack);

            _.reinit();

        }

    };

    EXT_Slick.prototype.unload = function() {

        var _ = this;

        $('.ex_s_lick-cloned', _.$slider).remove();

        if (_.$dots) {
            _.$dots.remove();
        }

        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
            _.$prevArrow.remove();
        }

        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
            _.$nextArrow.remove();
        }

        _.$slides
            .removeClass('ex_s_lick-slide ex_s_lick-active ex_s_lick-visible ex_s_lick-current')
            .attr('aria-hidden', 'true')
            .css('width', '');

    };

    EXT_Slick.prototype.unex_s_lick = function(fromBreakpoint) {

        var _ = this;
        _.$slider.trigger('unex_s_lick', [_, fromBreakpoint]);
        _.destroy();

    };

    EXT_Slick.prototype.updateArrows = function() {

        var _ = this,
            centerOffset;

        centerOffset = Math.floor(_.options.slidesToShow / 2);

        if ( _.options.arrows === true &&
            _.slideCount > _.options.slidesToShow &&
            !_.options.infinite ) {

            _.$prevArrow.removeClass('ex_s_lick-disabled').attr('aria-disabled', 'false');
            _.$nextArrow.removeClass('ex_s_lick-disabled').attr('aria-disabled', 'false');

            if (_.currentSlide === 0) {

                _.$prevArrow.addClass('ex_s_lick-disabled').attr('aria-disabled', 'true');
                _.$nextArrow.removeClass('ex_s_lick-disabled').attr('aria-disabled', 'false');

            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {

                _.$nextArrow.addClass('ex_s_lick-disabled').attr('aria-disabled', 'true');
                _.$prevArrow.removeClass('ex_s_lick-disabled').attr('aria-disabled', 'false');

            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {

                _.$nextArrow.addClass('ex_s_lick-disabled').attr('aria-disabled', 'true');
                _.$prevArrow.removeClass('ex_s_lick-disabled').attr('aria-disabled', 'false');

            }

        }

    };

    EXT_Slick.prototype.updateDots = function() {

        var _ = this;

        if (_.$dots !== null) {

            _.$dots
                .find('li')
                .removeClass('ex_s_lick-active')
                .attr('aria-hidden', 'true');

            _.$dots
                .find('li')
                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
                .addClass('ex_s_lick-active')
                .attr('aria-hidden', 'false');

        }

    };

    EXT_Slick.prototype.visibility = function() {

        var _ = this;

        if ( _.options.autoplay ) {

            if ( document[_.hidden] ) {

                _.interrupted = true;

            } else {

                _.interrupted = false;

            }

        }

    };

    $.fn.EX_ex_s_lick = function() {
        var _ = this,
            opt = arguments[0],
            args = Array.prototype.slice.call(arguments, 1),
            l = _.length,
            i,
            ret;
        for (i = 0; i < l; i++) {
            if (typeof opt == 'object' || typeof opt == 'undefined')
                _[i].EX_ex_s_lick = new EXT_Slick(_[i], opt);
            else
                ret = _[i].EX_ex_s_lick[opt].apply(_[i].EX_ex_s_lick, args);
            if (typeof ret != 'undefined') return ret;
        }
        return _;
    };

}));