PageSourceSearch

https://bigother.com/_static/??-eJyV0dFOwzAMBdAfIjVM0yYeEJ+C3NQtbh…ZH+e83dCm0ayYwqJLylXtPL0/n58XA8nc6Hb5dOxKM=

js bigother.com collected 2026-09-24 18:03:34 UTC 142,035 bytes, 3,825 lines download raw bytes

1!function($){"use strict";(new function(){var e=this;this.init=function(){window.ppFormRecaptchaLoadCallback=this.recaptcha_processing,$(".pp-del-profile-avatar").on("click",this.delete_avatar),$(".pp-del-cover-image").on("click",this.delete_profile_image_cover),$(document).on("click",".has-password-visibility-icon .pp-form-material-icons",this.toggle_password_visibility),$(document.body).on("click","a.showlogin",(function(){$(".pp_wc_login").slideToggle()})),$(window).on("load resize ppress_updated_checkout",(function(){e.defaultUserProfileResponsive()})),$(window).on("ppress_updated_checkout",(function(){e.recaptcha_processing()})),$(document).on("click",".ppress-confirm-delete",(function(e){e.preventDefault(),confirm(pp_ajax_form.confirm_delete)&&(window.location.href=$(this).attr("href"))})),this.submit_reload_form_on_billing_country_field_change(),this.myaccount_password_strength_meter(),"true"!==pp_ajax_form.disable_ajax_form&&($(document).on("submit",'form[data-pp-form-submit="login"]',this.ajax_login),$(document).on("submit",'form[data-pp-form-submit="signup"]',this.ajax_registration),$(document).on("submit",'form[data-pp-form-submit="passwordreset"]',this.ajax_password_reset),$(document).on("submit",'form[data-pp-form-submit="editprofile"]',this.ajax_edit_profile))},this.recaptcha_processing=function(){$(".pp-g-recaptcha").each((function(s,t){var r=$(t).attr("data-sitekey"),o=$(this).parents(".pp-form-container").find("form"),p=void 0!==grecaptcha.enterprise?grecaptcha.enterprise:grecaptcha;if("v3"===$(t).attr("data-type"))o.find("input.pp-submit-form").on("click",(function(s){s.preventDefault(),e._add_processing_label(o),p.ready((function(){p.execute(r,{action:"form"}).then((function(e){o.find('[name="g-recaptcha-response"]').remove(),o.append($("<input>",{type:"hidden",value:e,name:"g-recaptcha-response"})),o.trigger("submit")}))}))}));else{try{var a=p.render(t,{sitekey:r,theme:$(t).attr("data-theme"),size:$(t).attr("data-size")})}catch(e){}o.on("pp_form_submitted",(function(){p.reset(a)})),$(document).on("ppress_process_checkout_success_callback ppress_process_checkout_error_callback",(function(){p.reset(a)}))}}))},this.toggle_password_visibility=function(e){e.preventDefault();var s=$(this).parents(".pp-form-field-input-textarea-wrap").find(".pp-form-field");"password"===s.attr("type")?(s.attr("type","text"),$(this).text("visibility_off")):(s.attr("type","password"),$(this).text("visibility"))},this.submit_reload_form_on_billing_country_field_change=function(){$(document).on("change",".pp-edit-profile-form-wrap select[name=ppress_billing_country]",(function(e){$(document).on("pp_form_edit_profile_success",(function(){window.location.reload()})),$(this).closest("form").find("input.pp-submit-form").trigger("click")}))},this.ajax_edit_profile=function(s){if(void 0!==window.FormData&&window.FormData){s.preventDefault();var t=$('form[data-pp-form-submit="editprofile"]'),r=e.get_melange_id(t),o=new FormData(this);o.append("action","pp_ajax_editprofile"),o.append("nonce",pp_ajax_form.nonce),o.append("melange_id",r),$(".profilepress-edit-profile-status").remove(),$(".profilepress-edit-profile-success").remove(),""!==window.edit_profile_msg_class&&$("."+window.edit_profile_msg_class).remove(),e._add_processing_label(t),$.post({url:pp_ajax_form.ajaxurl,data:o,cache:!1,contentType:!1,enctype:"multipart/form-data",processData:!1,dataType:"json",success:function(s){t.trigger("pp_form_submitted"),t.trigger("pp_form_edit_profile_success",[t]),"avatar_url"in s&&""!==s.avatar_url&&($("img[data-del='avatar'], img.pp-user-avatar").attr("src",s.avatar_url),$("input[name=eup_avatar]",t).val("")),"cover_image_url"in s&&""!==s.cover_image_url&&($("img[data-del='cover-image'], img.pp-user-cover-image").attr("src",s.cover_image_url),$("input[name=eup_cover_image]",t).val(""),$(".profilepress-myaccount-has-cover-image",t).show(),$(".profilepress-myaccount-cover-image-empty",t).hide()),"message"in s&&(window.edit_profile_msg_class=$(s.message).attr("class"),t.before(s.message),s.message&&s.message.includes("profilepress-edit-profile-status")&&e.scroll_to_notices($(".profilepress-edit-profile-status"))),"redirect"in s&&(t.trigger("pp_edit_profile_success_before_redirect"),window.location.assign(s.redirect)),e._remove_processing_label(t)}},"json")}},this.ajax_password_reset=function(s){s.preventDefault();var t=$(this),r=e.get_melange_id(t),o="true"===t.find('input[name="is-pp-tab-widget"]').val(),p={action:"pp_ajax_passwordreset",data:$(this).serialize()+"&melange_id="+r};e._remove_status_notice(),t.parents(".pp-tab-widget-form").prev(".pp-tab-status").remove(),e._add_processing_label(t),$.post(pp_ajax_form.ajaxurl,p,(function(s){if(t.trigger("pp_form_submitted"),"object"!=typeof s)return e._remove_processing_label(t);if("message"in s){if(t.trigger("pp_password_reset_status"),o){var r=s.message.replace("profilepress-reset-status","pp-tab-status");t.parents(".pp-tab-widget-form").before(r)}else t.parents(".lucidContainer").length>0?t.parents(".lucidContainer").before(s.message):t.before(s.message);"status"in s&&!0===s.status&&t.hide(),$('input[name="user_login"]',t).val("")}e._remove_processing_label(t)}),"json")},this.ajax_registration=function(s){if(void 0!==window.FormData&&window.FormData){s.preventDefault();var t=$(this),r=e.get_melange_id(t),o=new FormData(this),p="true"===t.find('input[name="is-pp-tab-widget"]').val();o.append("action","pp_ajax_signup"),o.append("melange_id",r),e._remove_status_notice(),t.parents(".pp-tab-widget-form").prev(".pp-tab-status").remove(),e._add_processing_label(t),$.post({url:pp_ajax_form.ajaxurl,data:o,cache:!1,contentType:!1,enctype:"multipart/form-data",processData:!1,dataType:"json",success:function(s){if(t.trigger("pp_form_submitted"),"object"!=typeof s)return e._remove_processing_label(t);if("message"in s){if(t.trigger("pp_registration_error",[s]),t.trigger("pp_registration_ajax_response",[s]),p){var r=s.message.replace("profilepress-reg-status","pp-tab-status");t.parents(".pp-tab-widget-form").before(r)}else t.parents(".lucidContainer").length>0?t.parents(".lucidContainer").before(s.message):t.before(s.message);s.message&&s.message.includes("profilepress-reg-status")&&e.scroll_to_notices()}else"redirect"in s&&(t.trigger("pp_registration_success",[s]),window.location.assign(s.redirect));e._remove_processing_label(t)}})}},this.ajax_login=function(s){s.preventDefault();var t=$(this),r={action:"pp_ajax_login",data:$(this).serialize()},o="true"===t.find('input[name="is-pp-tab-widget"]').val();e._remove_status_notice(),e._add_processing_label(t),$.post(pp_ajax_form.ajaxurl,r,(function(s){if(t.trigger("pp_form_submitted"),null===s||"object"!=typeof s)return e._remove_processing_label(t);if("success"in s&&!0===s.success&&"redirect"in s)t.trigger("pp_login_form_success"),window.location.assign(s.redirect);else if(t.trigger("pp_login_form_error"),"code"in s&&"pp2fa_auth_code_invalid"==s.code&&t.find(".pp-2fa").show(),o){var r=s.message.replace("profilepress-login-status","pp-tab-status");t.parents(".pp-tab-widget-form").before(r)}else t.parents(".lucidContainer").length>0?t.parents(".lucidContainer").before(s.message):t.before(s.message);e._remove_processing_label(t)}),"json")},this.delete_avatar=function(e){e.preventDefault();var s=$(this).text(),t=$(this);e.preventDefault(),confirm(pp_ajax_form.confirm_delete)&&(t.is("button")&&t.text(pp_ajax_form.deleting_text),$.post(pp_ajax_form.ajaxurl,{action:"pp_del_avatar",nonce:pp_ajax_form.nonce}).done((function(e){"error"in e&&"nonce_failed"===e.error?(t.text(s),alert(pp_ajax_form.deleting_error)):"success"in e&&($("img[data-del='avatar']").attr("src",e.default),t.remove())}
1)))},this.delete_profile_image_cover=function(e){e.preventDefault();var s=$(this).text(),t=$(this);e.preventDefault(),confirm(pp_ajax_form.confirm_delete)&&(t.is("button")&&t.text(pp_ajax_form.deleting_text),$.post(pp_ajax_form.ajaxurl,{action:"pp_del_cover_image",nonce:pp_ajax_form.nonce}).done((function(e){"error"in e&&"nonce_failed"===e.error&&(t.text(s),alert(pp_ajax_form.deleting_error)),"success"in e&&(""!==e.default?($("img[data-del='cover-image']").attr("src",e.default),t.parent().find(".profilepress-myaccount-has-cover-image").show(),t.parent().find(".profilepress-myaccount-cover-image-empty").hide()):(t.parent().find(".profilepress-myaccount-has-cover-image").hide(),t.parent().find(".profilepress-myaccount-cover-image-empty").show()),t.remove())})))},this.get_melange_id=function(e){var s=$("input.pp_melange_id",e).val();return void 0===s?"":s},this._add_processing_label=function(e){var s=e.find("input[data-pp-submit-label]");s.attr({value:s.data("pp-processing-label"),disabled:"disabled"}).css("opacity",".4")},this._remove_processing_label=function(e){var s=e.find("input[data-pp-submit-label]");s.attr("value",s.data("pp-submit-label")),s.attr({value:s.data("pp-submit-label"),disabled:null}).css("opacity","")},this._remove_status_notice=function(){$(".profilepress-login-status,.pp-tab-status,.profilepress-edit-profile-success,.profilepress-edit-profile-status,.pp-reset-success,.profilepress-reset-status,.profilepress-reg-status").remove()},this.scroll_to_notices=function(e){(e=e||$(".profilepress-reg-status")).length&&$("html, body").animate({scrollTop:e.offset().top-100},1e3)},this.defaultUserProfileResponsive=function(){$(".ppress-default-profile, .pp-member-directory, .ppress-checkout__form").each((function(){var e=$
1(this),s=e.width();s<=340?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui800"),e.removeClass("ppressui768"),e.removeClass("ppressui960"),e.addClass("ppressui340")):s<=500?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960"),e.addClass("ppressui500")):s<=768?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960"),e.addClass("ppressui768")):s<=800?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960"),e.addClass("ppressui800")):s<=960?(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960"),e.addClass("ppressui960")):s>960&&(e.removeClass("ppressui340"),e.removeClass("ppressui500"),e.removeClass("ppressui768"),e.removeClass("ppressui800"),e.removeClass("ppressui960")),e.css("opacity",1)})),$(".ppress-default-profile-cover, .ppress-default-profile-cover-e").each((function(){var e=$
1(this),s=Math.round(e.width()/e.data("ratio"))+"px";e.height(s),e.find(".ppress-dpf-cover-add").height(s)}))},this.myaccount_password_strength_meter=function(){$((function(){var e=$("input[name=password_new]"),s=$("input[name=password_confirm_new]"),t=$("input[name=submit-form]"),r=$("#pp-pass-strength-result");$("body").on("keyup","input[name=password_new], input[name=password_confirm_new]",(function(o){!function(e,s,t,r,o){var p=e.val(),a=s.val();r.attr("disabled","disabled"),t.removeClass("short bad good strong"),o=o.concat(wp.passwordStrength.userInputDisallowedList());var i=wp.passwordStrength.meter(p,o,a);switch(i){case 2:t.addClass("bad").html(pwsL10n.bad);break;case 3:t.addClass("good").html(pwsL10n.good);break;case 4:t.addClass("strong").html(pwsL10n.strong);break;case 5:t.addClass("short").html(pwsL10n.mismatch);break;default:t.addClass("short").html(pwsL10n.short)}"false"===myacPwsL10n.disable_enforcement&&4===i&&""!==a.trim()&&r.removeAttr("disabled")}(e,s,r,t,[])}))}))}}).init(),(new function(){let e=this;window.ppressCheckoutForm=this,this.last_checked_email="",this.check_email_xhr=null,this.init=function(){if("0"!==pp_ajax_form.is_checkout&&0!==$("#ppress_checkout_main_form").length){if($(document).on("click",".ppress-checkout-show-login-form",this.toggle_login_form),$(document).on("click",'.ppress-login-submit-btn input[type="submit"]',this.process_login),$(document).on("click",".ppress-coupon-code-link",this.toggle_discount_code_reveal),$(document).on("click",".ppress-apply-discount-btn",this.apply_discount_code),$(document).on("click","#ppress-remove-applied-coupon",this.remove_applied_discount_code),$(document).on("submit","#ppress_mb_checkout_form",this.process_checkout),"1"!==pp_ajax_form.is_user_logged_in){$(document).on("blur","#ppress_mb_checkout_form #ppmb_email",this.check_email_exists),$(document).on("input","#ppress_mb_checkout_form #ppmb_email",e.debounce(this.check_email_exists,500)),$(document).on("click",".ppress-checkout-inline-login-link",this.show_login_form_and_focus),$.trim($("#ppress_mb_checkout_form #ppmb_email").val())&&this.check_email_exists()}$(document).on("click",".ppress-terms-and-conditions-link",(function(e){var s=$(".ppress-checkout-form__terms_condition__content");s.length>0&&(e.preventDefault(),s.slideToggle())})),$(document).on("ppress_update_checkout",this.update_checkout),"1"===pp_ajax_form.is_checkout_tax_enabled?$(document).on("change","#ppress_mb_checkout_form .ppress_billing_country, #ppress_mb_checkout_form .ppress_billing_state, #ppress_mb_checkout_form .ppress_vat_number",e.debounce((function(){$(document.body).trigger("ppress_update_checkout")}),200)):$(document).on("change","#ppress_mb_checkout_form .ppress_billing_country",e.contextual_state_field),$(document.body).on("change","#ppress_checkout_payment_methods [name=ppress_payment_method]",(function(){$(document.body).trigger("ppress_update_checkout")})),$(document.body).on("change","#ppress_mb_checkout_form #ppress-checkout-renewal",(function(){$(document.body).trigger("ppress_update_checkout")})),$(document.body).on("change","#ppress_mb_checkout_form #pwyw_price",(function(){$(document.body).trigger("ppress_update_checkout")})),$(document.body).on("change","#ppress_mb_checkout_form [name=group_selector]",(function(){e.update_checkout()})),$(document.body).trigger("ppress_update_checkout"),$(document).ajaxError((function(){e.remove_spinner()}))}},this.debounce=function(e,s){let t;return s=s||600,function(){clearTimeout(t),t=setTimeout((function(){e()}),s)}},this.contextual_state_field=function(){let e=$(".ppress_billing_state"),s={action:"ppress_contextual_state_field",country:$(this).val(),name:e.prop("name"),id:e.prop("id"),class:e.prop("class"),csrf:$("#ppress_checkout_nonce").val()};$.post(pp_ajax_form.ajaxurl,s,(function(s){e.replaceWith(s.data)}))},this.scroll_to_notices=function(e){"true"===pp_ajax_form.is_checkout_autoscroll_enabled&&(e=e||$(".ppress-checkout-alert")).length&&$("html, body").animate({scrollTop:e.offset().top-100},1e3)},this.update_checkout=function(s){s=s||!1;let t=$("#ppress_mb_checkout_form [name=group_selector]").length>0;e.removeAllAlerts(),e.add_spinner();let r={action:"ppress_update_order_review",plan_id:$("#ppress-checkout-plan-id").val(),ppress_payment_method:$("#ppress_checkout_payment_methods [name=ppress_payment_method]:checked").val(),csrf:$("#ppress_checkout_nonce").val(),address:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_address").val(),city:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_city").val(),country:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_country").val(),state:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_state").val(),postcode:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_postcode").val(),phone:$(".ppress-checkout-form__payment_method.ppress-active .ppress_billing_phone").val(),vat_number:$("#ppress_checkout_main_form .ppress_vat_number").val(),post_data:$("#ppress_mb_checkout_form").serialize()};!0===t&&(r.isChangePlanUpdate="true"),$.post(pp_ajax_form.ajaxurl,r,(function(o){let p={};if($(".ppress-checkout-form__payment_method :input, .ppress-checkout_account_info-wrap :input").each((function(){let e=$(this).attr("id");e&&(-1!==$.inArray($(this).attr("type"),["checkbox","radio"])?p[e]=$(this).prop("checked"):p[e]=$(this).val())})),"data"in o&&void 0!==o.data.fragments&&($.each(o.data.fragments,(function(s,t){e.fragments&&e.fragments[s]===t||$(s).replaceWith(t)})),e.fragments=r.fragments),$.isEmptyObject(p)||$(".ppress-checkout-form__payment_method :input, .ppress-checkout_account_info-wrap :input").each((function(){let e=$(this).attr("id");e&&(-1!==$.inArray($(this).attr("type"),["checkbox","radio"])?$(this).prop("checked",p[e]):($.inArray($(this).attr("type"),["select"]),$(this).val(p[e])))})),"success"in o&&!1===o.success){let e=$("#ppress_checkout_main_form");
1o.data&&e.prepend(o.data),e.find(".input-text, select, input:checkbox").trigger("blur")}$(document.body).trigger("ppress_updated_checkout",[o]);let a,i=$(".ppress-checkout_order_summary__bottom_details");(a=$(".ppress-checkout-alert")).length>0&&(i=a),e.scroll_to_notices(i),e.remove_spinner(),!0===t&&!0!==s&&e.update_checkout(!0),!0===t&&(e.last_checked_email="",e.check_email_exists())}))},this.toggle_login_form=function(e){e.preventDefault(),$("#ppress_checkout_account_info .ppress-main-checkout-form__login_form_wrap").slideToggle((function(){if($(this).is(":visible")){let e=$.trim($("#ppress_mb_checkout_form #ppmb_email").val()),s=$("#ppmb_user_login");e&&!s.val()&&s.val(e)}}))},this.show_login_form_and_focus=function(e){e.preventDefault();let s=$("#ppress_checkout_account_info .ppress-main-checkout-form__login_form_wrap"),t=$.trim($("#ppress_mb_checkout_form #ppmb_email").val()),r=$("#ppmb_user_login");t&&r.val(t);let o=function(){r.val()?$("#ppmb_user_pass").focus():r.focus()};s.is(":visible")?o():s.slideDown(o),$("#ppress_checkout_account_info").length&&$("html, body").animate({scrollTop:$("#ppress_checkout_account_info").offset().top-100},500)},this.check_email_exists=function(){if("1"===pp_ajax_form.is_user_logged_in)return;let s=$("#ppress_mb_checkout_form #ppmb_email");if(0===s.length||"hidden"===s.attr("type"))return;let t=$.trim(s.val());if(!t||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t))return e.remove_email_exists_message(),void(e.last_checked_email="");if(t===e.last_checked_email)return;let r={action:"ppress_checkout_check_email",email:t,csrf:$("#ppress_checkout_nonce").val()||pp_ajax_form.nonce};e.check_email_xhr&&e.check_email_xhr.abort(),e.check_email_xhr=$.post(pp_ajax_form.ajaxurl,r,(function(r){if(e.last_checked_email=t,e.remove_email_exists_message(),r&&r.success&&r.data&&r.data.exists&&$.trim($("#ppress_mb_checkout_form #ppmb_email").val())===t){let e=r.data.message||"";if(e){let t=$('<div class="ppress-checkout-field-inline-message ppress-checkout-email-exists-message">'+e+"</div>"),r=s.closest(".ppmb-email");r.length?r.append(t):s.after(t)}}}))},this.remove_email_exists_message=function(){$(".ppress-checkout-email-exists-message").remove()},this.toggle_discount_code_reveal=function(e){e.preventDefault(),$("#ppress-checkout-coupon-code-wrap").slideToggle()},this.apply_discount_code=function(s){s.preventDefault(),e.removeAllAlerts(),e.add_spinner();let t={action:"ppress_checkout_apply_discount",plan_id:$("#ppress-checkout-plan-id").val(),coupon_code:$("#apply-discount").val(),ppress_checkout_nonce:$("#ppress_checkout_nonce").val()};$.post(pp_ajax_form.ajaxurl,t,(function(s){"success"in s&&!0===s.success?$(document.body).trigger("ppress_update_checkout"):($(".ppress-checkout_order_summary-wrap").before(s.data),e.remove_spinner())}))},this.remove_applied_discount_code=function(s){s.preventDefault(),e.removeAllAlerts(),e.add_spinner();let t={action:"ppress_checkout_remove_discount",plan_id:$("#ppress-checkout-plan-id").val(),ppress_checkout_nonce:$("#ppress_checkout_nonce").val()};$.post(pp_ajax_form.ajaxurl,t,(function(s){"success"in s&&!0===s.success?$(document.body).trigger("ppress_update_checkout"):($(".ppress-checkout_order_summary-wrap").before(s.data),e.remove_spinner())}))},this.process_login=function(s){s.preventDefault(),e.removeAllAlerts(),e.add_spinner();let t={action:"ppress_process_checkout_login",ppmb_user_login:$("#ppress_mb_checkout_form #ppmb_user_login").val(),ppmb_user_pass:$("#ppress_mb_checkout_form #ppmb_user_pass").val(),ppress_checkout_nonce:$("#ppress_checkout_nonce").val()};$.post(pp_ajax_form.ajaxurl,t,(function(s){"success"in s&&(!0===s.success?window.location.reload():"data"in s&&$("#ppress_mb_checkout_form .ppress-login-submit-btn").prepend(s.data)),e.remove_spinner()}))},this.process_checkout=function(s){if("function"!=typeof this.checkValidity||!1!==this.checkValidity()){s.preventDefault(),e.removeAllAlerts(),e.add_spinner();var t=$(this),r=e.get_payment_method();if(!1!==t.triggerHandler("ppress_checkout_place_order_"+r)){let s=new FormData(this);s.append("action","ppress_process_checkout"),s.append("ppress_checkout_nonce",$("#ppress_checkout_nonce").val()),$.post({url:pp_ajax_form.ajaxurl,data:s,cache:!1,contentType:!1,enctype:"multipart/form-data",processData:!1,dataType:"json",success:function(s){if($(document.body).trigger("ppress_process_checkout_success_callback",[s]),"success"in s)return!0===s.success?void(!1!==t.triggerHandler("ppress_process_checkout_"+r,[s,r])&&("redirect_url"in s&&void 0!==s.redirect_url&&s.redirect_url.length>0?window.location.assign(s.redirect_url):($(document.body).trigger("ppress_checkout_success",[s,r]),window.location.assign(s.order_success_url)))):"error_message"in s?e.createAlertMessage(s.error_message):"data"in s&&"string"==typeof s.data?e.createAlertMessage(s.data):void 0;e.remove_spinner()},error:function(s,t,r){$(document.body).trigger("ppress_process_checkout_error_callback",[s,t,r]),e.createAlertMessage(r)}},"json")}}},this.get_payment_method=function(){return $("#ppress_mb_checkout_form").find('input[name="ppress_payment_method"]:checked').val()},this.createAlertMessage=function(e,s){s=s||"error";var t=void 0!==e.indexOf&&-1!==e.indexOf("ppress-checkout-alert"),r="";t||(r='<div class="ppress-checkout-alert ppress-'+s+'"><p>'),r+=e,t||(r+="</p></div>"),$("#ppress_checkout_main_form").prepend(r),ppressCheckoutForm.scroll_to_notices(),ppressCheckoutForm.remove_spinner(),$(document.body).trigger("ppress_checkout_error",[e])},this.removeAllAlerts=function(){$(".ppress-checkout-alert").remove()},this.add_spinner=function(){e.remove_spinner(),$(".ppress-checkout__form").prepend('<div class="ppress-checkout__form__preloader"><div class="ppress-checkout__form__spinner"></div></div>')},this.remove_spinner=function(){$(".ppress-checkout__form .ppress-checkout__form__preloader").remove()},this.is_var_defined=function(e){return null!=e},this.get_obj_val=function(e,s){return this.is_var_defined(e)&&""!==e?e:s}}).init()}(jQuery);;
2/**
3 * File navigation.js.
4 *
5 * Handles toggling the navigation menu for small screens and enables TAB key
6 * navigation support for dropdown menus.
7 */
8( function() {
9	var container, button, menu, links, i, len;
10
11	container = document.getElementById( 'site-navigation' );
12	if ( ! container ) {
13		return;
14	}
15
16	button = container.getElementsByTagName( 'button' )[0];
17	if ( 'undefined' === typeof button ) {
18		return;
19	}
20
21	menu = container.getElementsByTagName( 'ul' )[0];
22
23	// Hide menu toggle button if menu is empty and return early.
24	if ( 'undefined' === typeof menu ) {
25		button.style.display = 'none';
26		return;
27	}
28
29	menu.setAttribute( 'aria-expanded', 'false' );
30	if ( -1 === menu.className.indexOf( 'nav-menu' ) ) {
31		menu.className += ' nav-menu';
32	}
33
34	button.onclick = function() {
35		if ( -1 !== container.className.indexOf( 'toggled' ) ) {
36			container.className = container.className.replace( ' toggled', '' );
37			button.setAttribute( 'aria-expanded', 'false' );
38			menu.setAttribute( 'aria-expanded', 'false' );
39		} else {
40			container.className += ' toggled';
41			button.setAttribute( 'aria-expanded', 'true' );
42			menu.setAttribute( 'aria-expanded', 'true' );
43		}
44	};
45
46	// Get all the link elements within the menu.
47	links    = menu.getElementsByTagName( 'a' );
48
49	// Each time a menu link is focused or blurred, toggle focus.
50	for ( i = 0, len = links.length; i < len; i++ ) {
51		links[i].addEventListener( 'focus', toggleFocus, true );
52		links[i].addEventListener( 'blur', toggleFocus, true );
53	}
54
55	/**
56	 * Sets or removes .focus class on an element.
57	 */
58	function toggleFocus() {
59		var self = this;
60
61		// Move up through the ancestors of the current link until we hit .nav-menu.
62		while ( -1 === self.className.indexOf( 'nav-menu' ) ) {
63
64			// On li elements toggle the class .focus.
65			if ( 'li' === self.tagName.toLowerCase() ) {
66				if ( -1 !== self.className.indexOf( 'focus' ) ) {
67					self.className = self.className.replace( ' focus', '' );
68				} else {
69					self.className += ' focus';
70				}
71			}
72
73			self = self.parentElement;
74		}
75	}
76
77	/**
78	 * Toggles `focus` class to allow submenu access on tablets.
79	 */
80	( function( container ) {
81		var touchStartFn, i,
82			parentLink = container.querySelectorAll( '.menu-item-has-children > a, .page_item_has_children > a' );
83
84		if ( 'ontouchstart' in window ) {
85			touchStartFn = function( e ) {
86				var menuItem = this.parentNode, i;
87
88				if ( ! menuItem.classList.contains( 'focus' ) ) {
89					e.preventDefault();
90					for ( i = 0; i < menuItem.parentNode.children.length; ++i ) {
91						if ( menuItem === menuItem.parentNode.children[i] ) {
92							continue;
93						}
94						menuItem.parentNode.children[i].classList.remove( 'focus' );
95					}
96					menuItem.classList.add( 'focus' );
97				} else {
98					menuItem.classList.remove( 'focus' );
99				}
100			};
101
102			for ( i = 0; i < parentLink.length; ++i ) {
103				parentLink[i].addEventListener( 'touchstart', touchStartFn, false );
104			}
105		}
106	}( container ) );
107} )();
108;
109/**
110 * File skip-link-focus-fix.js.
111 *
112 * Helps with accessibility for keyboard only users.
113 *
114 * Learn more: https://git.io/vWdr2
115 */
116( function() {
117	var isIe = /(trident|msie)/i.test( navigator.userAgent );
118
119	if ( isIe && document.getElementById && window.addEventListener ) {
120		window.addEventListener( 'hashchange', function() {
121			var id = location.hash.substring( 1 ),
122				element;
123
124			if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) {
125				return;
126			}
127
128			element = document.getElementById( id );
129
130			if ( element ) {
131				if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) {
132					element.tabIndex = -1;
133				}
134
135				element.focus();
136			}
137		}, false );
138	}
139} )();
140;
141/*
142     _ _      _       _
143 ___| (_) ___| | __  (_)___
144/ __| | |/ __| |/ /  | / __|
145\__ \ | | (__|   < _ | \__ \
146|___/_|_|\___|_|\_(_)/ |___/
147                   |__/
148
149 Version: 1.6.0
150  Author: Ken Wheeler
151 Website: http://kenwheeler.github.io
152    Docs: http://kenwheeler.github.io/slick
153    Repo: http://github.com/kenwheeler/slick
154  Issues: http://github.com/kenwheeler/slick/issues
155
156 */
157/* global window, document, define, jQuery, setInterval, clearInterval */
158(function(factory) {
159    'use strict';
160    if (typeof define === 'function' && define.amd) {
161        define(['jquery'], factory);
162    } else if (typeof exports !== 'undefined') {
163        module.exports = factory(require('jquery'));
164    } else {
165        factory(jQuery);
166    }
167
168}(function($) {
169    'use strict';
170    var Slick = window.Slick || {};
171
172    Slick = (function() {
173
174        var instanceUid = 0;
175
176        function Slick(element, settings) {
177
178            var _ = this, dataSettings;
179
180            _.defaults = {
181                accessibility: true,
182                adaptiveHeight: false,
183                appendArrows: $(element),
184                appendDots: $(element),
185                arrows: true,
186                asNavFor: null,
187                prevArrow: '<button type="button" data-role="none" class="slick-prev" aria-label="Previous" tabindex="0" role="button">Previous</button>',
188                nextArrow: '<button type="button" data-role="none" class="slick-next" aria-label="Next" tabindex="0" role="button">Next</button>',
189                autoplay: false,
190                autoplaySpeed: 3000,
191                centerMode: false,
192                centerPadding: '50px',
193                cssEase: 'ease',
194                customPaging: function(slider, i) {
195                    return $('<button type="button" data-role="none" role="button" tabindex="0" />').text(i + 1);
196                },
197                dots: false,
198                dotsClass: 'slick-dots',
199                draggable: true,
200                easing: 'linear',
201                edgeFriction: 0.35,
202                fade: false,
203                focusOnSelect: false,
204                infinite: true,
205                initialSlide: 0,
206                lazyLoad: 'ondemand',
207                mobileFirst: false,
208                pauseOnHover: true,
209                pauseOnFocus: true,
210                pauseOnDotsHover: false,
211                respondTo: 'window',
212                responsive: null,
213                rows: 1,
214                rtl: false,
215                slide: '',
216                slidesPerRow: 1,
217                slidesToShow: 1,
218                slidesToScroll: 1,
219                speed: 500,
220                swipe: true,
221                swipeToSlide: false,
222                touchMove: true,
223                touchThreshold: 5,
224                useCSS: true,
225                useTransform: true,
226                variableWidth: false,
227                vertical: false,
228                verticalSwiping: false,
229                waitForAnimate: true,
230                zIndex: 1000
231            };
232
233            _.initials = {
234                animating: false,
235                dragging: false,
236                autoPlayTimer: null,
237                currentDirection: 0,
238                currentLeft: null,
239                currentSlide: 0,
240                direction: 1,
241                $dots: null,
242                listWidth: null,
243                listHeight: null,
244                loadIndex: 0,
245                $nextArrow: null,
246                $prevArrow: null,
247                slideCount: null,
248                slideWidth: null,
249                $slideTrack: null,
250                $slides: null,
251                sliding: false,
252                slideOffset: 0,
253                swipeLeft: null,
254                $list: null,
255                touchObject: {},
256                transformsEnabled: false,
257                unslicked: false
258            };
259
260            $.extend(_, _.initials);
261
262            _.activeBreakpoint = null;
263            _.animType = null;
264            _.animProp = null;
265            _.breakpoints = [];
266            _.breakpointSettings = [];
267            _.cssTransitions = false;
268            _.focussed = false;
269            _.interrupted = false;
270            _.hidden = 'hidden';
271            _.paused = true;
272            _.positionProp = null;
273            _.respondTo = null;
274            _.rowCount = 1;
275            _.shouldClick = true;
276            _.$slider = $(element);
277            _.$slidesCache = null;
278            _.transformType = null;
279            _.transitionType = null;
280            _.visibilityChange = 'visibilitychange';
281            _.windowWidth = 0;
282            _.windowTimer = null;
283
284            dataSettings = $(element).data('slick') || {};
285
286            _.options = $.extend({}, _.defaults, settings, dataSettings);
287
288            _.currentSlide = _.options.initialSlide;
289
290            _.originalSettings = _.options;
291
292            if (typeof document.mozHidden !== 'undefined') {
293                _.hidden = 'mozHidden';
294                _.visibilityChange = 'mozvisibilitychange';
295            } else if (typeof document.webkitHidden !== 'undefined') {
296                _.hidden = 'webkitHidden';
297                _.visibilityChange = 'webkitvisibilitychange';
298            }
299
300            _.autoPlay = $.proxy(_.autoPlay, _);
301            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
302            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
303            _.changeSlide = $.proxy(_.changeSlide, _);
304            _.clickHandler = $.proxy(_.clickHandler, _);
305            _.selectHandler = $.proxy(_.selectHandler, _);
306            _.setPosition = $.proxy(_.setPosition, _);
307            _.swipeHandler = $.proxy(_.swipeHandler, _);
308            _.dragHandler = $.proxy(_.dragHandler, _);
309            _.keyHandler = $.proxy(_.keyHandler, _);
310
311            _.instanceUid = instanceUid++;
312
313            // A simple way to check for HTML strings
314            // Strict HTML recognition (must start with <)
315            // Extracted from jQuery v1.11 source
316            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
317
318
319            _.registerBreakpoints();
320            _.init(true);
321
322        }
323
324        return Slick;
325
326    }());
327
328    Slick.prototype.activateADA = function() {
329        var _ = this;
330
331        _.$slideTrack.find('.slick-active').attr({
332            'aria-hidden': 'false'
333        }).find('a, input, button, select').attr({
334            'tabindex': '0'
335        });
336
337    };
338
339    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
340
341        var _ = this;
342
343        if (typeof(index) === 'boolean') {
344            addBefore = index;
345            index = null;
346        } else if (index < 0 || (index >= _.slideCount)) {
347            return false;
348        }
349
350        _.unload();
351
352        if (typeof(index) === 'number') {
353            if (index === 0 && _.$slides.length === 0) {
354                $(markup).appendTo(_.$slideTrack);
355            } else if (addBefore) {
356                $(markup).insertBefore(_.$slides.eq(index));
357            } else {
358                $(markup).insertAfter(_.$slides.eq(index));
359            }
360        } else {
361            if (addBefore === true) {
362                $(markup).prependTo(_.$slideTrack);
363            } else {
364                $(markup).appendTo(_.$slideTrack);
365            }
366        }
367
368        _.$slides = _.$slideTrack.children(this.options.slide);
369
370        _.$slideTrack.children(this.options.slide).detach();
371
372        _.$slideTrack.append(_.$slides);
373
374        _.$slides.each(function(index, element) {
375            $(element).attr('data-slick-index', index);
376        });
377
378        _.$slidesCache = _.$slides;
379
380        _.reinit();
381
382    };
383
384    Slick.prototype.animateHeight = function() {
385        var _ = this;
386        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
387            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
388            _.$list.animate({
389                height: targetHeight
390            }, _.options.speed);
391        }
392    };
393
394    Slick.prototype.animateSlide = function(targetLeft, callback) {
395
396        var animProps = {},
397            _ = this;
398
399        _.animateHeight();
400
401        if (_.options.rtl === true && _.options.vertical === false) {
402            targetLeft = -targetLeft;
403        }
404        if (_.transformsEnabled === false) {
405            if (_.options.vertical === false) {
406                _.$slideTrack.animate({
407                    left: targetLeft
408                }, _.options.speed, _.options.easing, callback);
409            } else {
410                _.$slideTrack.animate({
411                    top: targetLeft
412                }, _.options.speed, _.options.easing, callback);
413            }
414
415        } else {
416
417            if (_.cssTransitions === false) {
418                if (_.options.rtl === true) {
419                    _.currentLeft = -(_.currentLeft);
420                }
421                $({
422                    animStart: _.currentLeft
423                }).animate({
424                    animStart: targetLeft
425                }, {
426                    duration: _.options.speed,
427                    easing: _.options.easing,
428                    step: function(now) {
429                        now = Math.ceil(now);
430                        if (_.options.vertical === false) {
431                            animProps[_.animType] = 'translate(' +
432                                now + 'px, 0px)';
433                            _.$slideTrack.css(animProps);
434                        } else {
435                            animProps[_.animType] = 'translate(0px,' +
436                                now + 'px)';
437                            _.$slideTrack.css(animProps);
438                        }
439                    },
440                    complete: function() {
441                        if (callback) {
442                            callback.call();
443                        }
444                    }
445                });
446
447            } else {
448
449                _.applyTransition();
450                targetLeft = Math.ceil(targetLeft);
451
452                if (_.options.vertical === false) {
453                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
454                } else {
455                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
456                }
457                _.$slideTrack.css(animProps);
458
459                if (callback) {
460                    setTimeout(function() {
461
462                        _.disableTransition();
463
464                        callback.call();
465                    }, _.options.speed);
466                }
467
468            }
469
470        }
471
472    };
473
474    Slick.prototype.getNavTarget = function() {
475
476        var _ = this,
477            asNavFor = _.options.asNavFor;
478
479        if ( asNavFor && asNavFor !== null ) {
480            asNavFor = $(asNavFor).not(_.$slider);
481        }
482
483        return asNavFor;
484
485    };
486
487    Slick.prototype.asNavFor = function(index) {
488
489        var _ = this,
490            asNavFor = _.getNavTarget();
491
492        if ( asNavFor !== null && typeof asNavFor === 'object' ) {
493            asNavFor.each(function() {
494                var target = $(this).slick('getSlick');
495                if(!target.unslicked) {
496                    target.slideHandler(index, true);
497                }
498            });
499        }
500
501    };
502
503    Slick.prototype.applyTransition = function(slide) {
504
505        var _ = this,
506            transition = {};
507
508        if (_.options.fade === false) {
509            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
510        } else {
511            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
512        }
513
514        if (_.options.fade === false) {
515            _.$slideTrack.css(transition);
516        } else {
517            _.$slides.eq(slide).css(transition);
518        }
519
520    };
521
522    Slick.prototype.autoPlay = function() {
523
524        var _ = this;
525
526        _.autoPlayClear();
527
528        if ( _.slideCount > _.options.slidesToShow ) {
529            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );
530        }
531
532    };
533
534    Slick.prototype.autoPlayClear = function() {
535
536        var _ = this;
537
538        if (_.autoPlayTimer) {
539            clearInterval(_.autoPlayTimer);
540        }
541
542    };
543
544    Slick.prototype.autoPlayIterator = function() {
545
546        var _ = this,
547            slideTo = _.currentSlide + _.options.slidesToScroll;
548
549        if ( !_.paused && !_.interrupted && !_.focussed ) {
550
551            if ( _.options.infinite === false ) {
552
553                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {
554                    _.direction = 0;
555                }
556
557                else if ( _.direction === 0 ) {
558
559                    slideTo = _.currentSlide - _.options.slidesToScroll;
560
561                    if ( _.currentSlide - 1 === 0 ) {
562                        _.direction = 1;
563                    }
564
565                }
566
567            }
568
569            _.slideHandler( slideTo );
570
571        }
572
573    };
574
575    Slick.prototype.buildArrows = function() {
576
577        var _ = this;
578
579        if (_.options.arrows === true ) {
580
581            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');
582            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');
583
584            if( _.slideCount > _.options.slidesToShow ) {
585
586                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
587                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
588
589                if (_.htmlExpr.test(_.options.prevArrow)) {
590                    _.$prevArrow.prependTo(_.options.appendArrows);
591                }
592
593                if (_.htmlExpr.test(_.options.nextArrow)) {
594                    _.$nextArrow.appendTo(_.options.appendArrows);
595                }
596
597                if (_.options.infinite !== true) {
598                    _.$prevArrow
599                        .addClass('slick-disabled')
600                        .attr('aria-disabled', 'true');
601                }
602
603            } else {
604
605                _.$prevArrow.add( _.$nextArrow )
606
607                    .addClass('slick-hidden')
608                    .attr({
609                        'aria-disabled': 'true',
610                        'tabindex': '-1'
611                    });
612
613            }
614
615        }
616
617    };
618
619    Slick.prototype.buildDots = function() {
620
621        var _ = this,
622            i, dot;
623
624        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
625
626            _.$slider.addClass('slick-dotted');
627
628            dot = $('<ul />').addClass(_.options.dotsClass);
629
630            for (i = 0; i <= _.getDotCount(); i += 1) {
631                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
632            }
633
634            _.$dots = dot.appendTo(_.options.appendDots);
635
636            _.$dots.find('li').first().addClass('slick-active').attr('aria-hidden', 'false');
637
638        }
639
640    };
641
642    Slick.prototype.buildOut = function() {
643
644        var _ = this;
645
646        _.$slides =
647            _.$slider
648                .children( _.options.slide + ':not(.slick-cloned)')
649                .addClass('slick-slide');
650
651        _.slideCount = _.$slides.length;
652
653        _.$slides.each(function(index, element) {
654            $(element)
655                .attr('data-slick-index', index)
656                .data('originalStyling', $(element).attr('style') || '');
657        });
658
659        _.$slider.addClass('slick-slider');
660
661        _.$slideTrack = (_.slideCount === 0) ?
662            $('<div class="slick-track"/>').appendTo(_.$slider) :
663            _.$slides.wrapAll('<div class="slick-track"/>').parent();
664
665        _.$list = _.$slideTrack.wrap(
666            '<div aria-live="polite" class="slick-list"/>').parent();
667        _.$slideTrack.css('opacity', 0);
668
669        if (_.options.centerMode === true || _.options.swipeToSlide === true) {
670            _.options.slidesToScroll = 1;
671        }
672
673        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');
674
675        _.setupInfinite();
676
677        _.buildArrows();
678
679        _.buildDots();
680
681        _.updateDots();
682
683
684        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
685
686        if (_.options.draggable === true) {
687            _.$list.addClass('draggable');
688        }
689
690    };
691
692    Slick.prototype.buildRows = function() {
693
694        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;
695
696        newSlides = document.createDocumentFragment();
697        originalSlides = _.$slider.children();
698
699        if(_.options.rows > 1) {
700
701            slidesPerSection = _.options.slidesPerRow * _.options.rows;
702            numOfSlides = Math.ceil(
703                originalSlides.length / slidesPerSection
704            );
705
706            for(a = 0; a < numOfSlides; a++){
707                var slide = document.createElement('div');
708                for(b = 0; b < _.options.rows; b++) {
709                    var row = document.createElement('div');
710                    for(c = 0; c < _.options.slidesPerRow; c++) {
711                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
712                        if (originalSlides.get(target)) {
713                            row.appendChild(originalSlides.get(target));
714                        }
715                    }
716                    slide.appendChild(row);
717                }
718                newSlides.appendChild(slide);
719            }
720
721            _.$slider.empty().append(newSlides);
722            _.$slider.children().children().children()
723                .css({
724                    'width':(100 / _.options.slidesPerRow) + '%',
725                    'display': 'inline-block'
726                });
727
728        }
729
730    };
731
732    Slick.prototype.checkResponsive = function(initial, forceUpdate) {
733
734        var _ = this,
735            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
736        var sliderWidth = _.$slider.width();
737        var windowWidth = window.innerWidth || $(window).width();
738
739        if (_.respondTo === 'window') {
740            respondToWidth = windowWidth;
741        } else if (_.respondTo === 'slider') {
742            respondToWidth = sliderWidth;
743        } else if (_.respondTo === 'min') {
744            respondToWidth = Math.min(windowWidth, sliderWidth);
745        }
746
747        if ( _.options.responsive &&
748            _.options.responsive.length &&
749            _.options.responsive !== null) {
750
751            targetBreakpoint = null;
752
753            for (breakpoint in _.breakpoints) {
754                if (_.breakpoints.hasOwnProperty(breakpoint)) {
755                    if (_.originalSettings.mobileFirst === false) {
756                        if (respondToWidth < _.breakpoints[breakpoint]) {
757                            targetBreakpoint = _.breakpoints[breakpoint];
758                        }
759                    } else {
760                        if (respondToWidth > _.breakpoints[breakpoint]) {
761                            targetBreakpoint = _.breakpoints[breakpoint];
762                        }
763                    }
764                }
765            }
766
767            if (targetBreakpoint !== null) {
768                if (_.activeBreakpoint !== null) {
769                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
770                        _.activeBreakpoint =
771                            targetBreakpoint;
772                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
773                            _.unslick(targetBreakpoint);
774                        } else {
775                            _.options = $.extend({}, _.originalSettings,
776                                _.breakpointSettings[
777                                    targetBreakpoint]);
778                            if (initial === true) {
779                                _.currentSlide = _.options.initialSlide;
780                            }
781                            _.refresh(initial);
782                        }
783                        triggerBreakpoint = targetBreakpoint;
784                    }
785                } else {
786                    _.activeBreakpoint = targetBreakpoint;
787                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
788                        _.unslick(targetBreakpoint);
789                    } else {
790                        _.options = $.extend({}, _.originalSettings,
791                            _.breakpointSettings[
792                                targetBreakpoint]);
793                        if (initial === true) {
794                            _.currentSlide = _.options.initialSlide;
795                        }
796                        _.refresh(initial);
797                    }
798                    triggerBreakpoint = targetBreakpoint;
799                }
800            } else {
801                if (_.activeBreakpoint !== null) {
802                    _.activeBreakpoint = null;
803                    _.options = _.originalSettings;
804                    if (initial === true) {
805                        _.currentSlide = _.options.initialSlide;
806                    }
807                    _.refresh(initial);
808                    triggerBreakpoint = targetBreakpoint;
809                }
810            }
811
812            // only trigger breakpoints during an actual break. not on initialize.
813            if( !initial && triggerBreakpoint !== false ) {
814                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);
815            }
816        }
817
818    };
819
820    Slick.prototype.changeSlide = function(event, dontAnimate) {
821
822        var _ = this,
823            $target = $(event.currentTarget),
824            indexOffset, slideOffset, unevenOffset;
825
826        // If target is a link, prevent default action.
827        if($target.is('a')) {
828            event.preventDefault();
829        }
830
831        // If target is not the <li> element (ie: a child), find the <li>.
832        if(!$target.is('li')) {
833            $target = $target.closest('li');
834        }
835
836        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
837        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
838
839        switch (event.data.message) {
840
841            case 'previous':
842                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
843                if (_.slideCount > _.options.slidesToShow) {
844                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
845                }
846                break;
847
848            case 'next':
849                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
850                if (_.slideCount > _.options.slidesToShow) {
851                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
852                }
853                break;
854
855            case 'index':
856                var index = event.data.index === 0 ? 0 :
857                    event.data.index || $target.index() * _.options.slidesToScroll;
858
859                _.slideHandler(_.checkNavigable(index), false, dontAnimate);
860                $target.children().trigger('focus');
861                break;
862
863            default:
864                return;
865        }
866
867    };
868
869    Slick.prototype.checkNavigable = function(index) {
870
871        var _ = this,
872            navigables, prevNavigable;
873
874        navigables = _.getNavigableIndexes();
875        prevNavigable = 0;
876        if (index > navigables[navigables.length - 1]) {
877            index = navigables[navigables.length - 1];
878        } else {
879            for (var n in navigables) {
880                if (index < navigables[n]) {
881                    index = prevNavigable;
882                    break;
883                }
884                prevNavigable = navigables[n];
885            }
886        }
887
888        return index;
889    };
890
891    Slick.prototype.cleanUpEvents = function() {
892
893        var _ = this;
894
895        if (_.options.dots && _.$dots !== null) {
896
897            $('li', _.$dots)
898                .off('click.slick', _.changeSlide)
899                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))
900                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));
901
902        }
903
904        _.$slider.off('focus.slick blur.slick');
905
906        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
907            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
908            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);
909        }
910
911        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
912        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);
913        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
914        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);
915
916        _.$list.off('click.slick', _.clickHandler);
917
918        $(document).off(_.visibilityChange, _.visibility);
919
920        _.cleanUpSlideEvents();
921
922        if (_.options.accessibility === true) {
923            _.$list.off('keydown.slick', _.keyHandler);
924        }
925
926        if (_.options.focusOnSelect === true) {
927            $(_.$slideTrack).children().off('click.slick', _.selectHandler);
928        }
929
930        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);
931
932        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);
933
934        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);
935
936        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);
937        $(document).off('ready.slick.slick-' + _.instanceUid, _.setPosition);
938
939    };
940
941    Slick.prototype.cleanUpSlideEvents = function() {
942
943        var _ = this;
944
945        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
946        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
947
948    };
949
950    Slick.prototype.cleanUpRows = function() {
951
952        var _ = this, originalSlides;
953
954        if(_.options.rows > 1) {
955            originalSlides = _.$slides.children().children();
956            originalSlides.removeAttr('style');
957            _.$slider.empty().append(originalSlides);
958        }
959
960    };
961
962    Slick.prototype.clickHandler = function(event) {
963
964        var _ = this;
965
966        if (_.shouldClick === false) {
967            event.stopImmediatePropagation();
968            event.stopPropagation();
969            event.preventDefault();
970        }
971
972    };
973
974    Slick.prototype.destroy = function(refresh) {
975
976        var _ = this;
977
978        _.autoPlayClear();
979
980        _.touchObject = {};
981
982        _.cleanUpEvents();
983
984        $('.slick-cloned', _.$slider).detach();
985
986        if (_.$dots) {
987            _.$dots.remove();
988        }
989
990
991        if ( _.$prevArrow && _.$prevArrow.length ) {
992
993            _.$prevArrow
994                .removeClass('slick-disabled slick-arrow slick-hidden')
995                .removeAttr('aria-hidden aria-disabled tabindex')
996                .css('display','');
997
998            if ( _.htmlExpr.test( _.options.prevArrow )) {
999                _.$prevArrow.remove();
1000            }
1001        }
1002
1003        if ( _.$nextArrow && _.$nextArrow.length ) {
1004
1005            _.$nextArrow
1006                .removeClass('slick-disabled slick-arrow slick-hidden')
1007                .removeAttr('aria-hidden aria-disabled tabindex')
1008                .css('display','');
1009
1010            if ( _.htmlExpr.test( _.options.nextArrow )) {
1011                _.$nextArrow.remove();
1012            }
1013
1014        }
1015
1016
1017        if (_.$slides) {
1018
1019            _.$slides
1020                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')
1021                .removeAttr('aria-hidden')
1022                .removeAttr('data-slick-index')
1023                .each(function(){
1024                    $(this).attr('style', $(this).data('originalStyling'));
1025                });
1026
1027            _.$slideTrack.children(this.options.slide).detach();
1028
1029            _.$slideTrack.detach();
1030
1031            _.$list.detach();
1032
1033            _.$slider.append(_.$slides);
1034        }
1035
1036        _.cleanUpRows();
1037
1038        _.$slider.removeClass('slick-slider');
1039        _.$slider.removeClass('slick-initialized');
1040        _.$slider.removeClass('slick-dotted');
1041
1042        _.unslicked = true;
1043
1044        if(!refresh) {
1045            _.$slider.trigger('destroy', [_]);
1046        }
1047
1048    };
1049
1050    Slick.prototype.disableTransition = function(slide) {
1051
1052        var _ = this,
1053            transition = {};
1054
1055        transition[_.transitionType] = '';
1056
1057        if (_.options.fade === false) {
1058            _.$slideTrack.css(transition);
1059        } else {
1060            _.$slides.eq(slide).css(transition);
1061        }
1062
1063    };
1064
1065    Slick.prototype.fadeSlide = function(slideIndex, callback) {
1066
1067        var _ = this;
1068
1069        if (_.cssTransitions === false) {
1070
1071            _.$slides.eq(slideIndex).css({
1072                zIndex: _.options.zIndex
1073            });
1074
1075            _.$slides.eq(slideIndex).animate({
1076                opacity: 1
1077            }, _.options.speed, _.options.easing, callback);
1078
1079        } else {
1080
1081            _.applyTransition(slideIndex);
1082
1083            _.$slides.eq(slideIndex).css({
1084                opacity: 1,
1085                zIndex: _.options.zIndex
1086            });
1087
1088            if (callback) {
1089                setTimeout(function() {
1090
1091                    _.disableTransition(slideIndex);
1092
1093                    callback.call();
1094                }, _.options.speed);
1095            }
1096
1097        }
1098
1099    };
1100
1101    Slick.prototype.fadeSlideOut = function(slideIndex) {
1102
1103        var _ = this;
1104
1105        if (_.cssTransitions === false) {
1106
1107            _.$slides.eq(slideIndex).animate({
1108                opacity: 0,
1109                zIndex: _.options.zIndex - 2
1110            }, _.options.speed, _.options.easing);
1111
1112        } else {
1113
1114            _.applyTransition(slideIndex);
1115
1116            _.$slides.eq(slideIndex).css({
1117                opacity: 0,
1118                zIndex: _.options.zIndex - 2
1119            });
1120
1121        }
1122
1123    };
1124
1125    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {
1126
1127        var _ = this;
1128
1129        if (filter !== null) {
1130
1131            _.$slidesCache = _.$slides;
1132
1133            _.unload();
1134
1135            _.$slideTrack.children(this.options.slide).detach();
1136
1137            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);
1138
1139            _.reinit();
1140
1141        }
1142
1143    };
1144
1145    Slick.prototype.focusHandler = function() {
1146
1147        var _ = this;
1148
1149        _.$slider
1150            .off('focus.slick blur.slick')
1151            .on('focus.slick blur.slick',
1152                '*:not(.slick-arrow)', function(event) {
1153
1154            event.stopImmediatePropagation();
1155            var $sf = $(this);
1156
1157            setTimeout(function() {
1158
1159                if( _.options.pauseOnFocus ) {
1160                    _.focussed = $sf.is(':focus');
1161                    _.autoPlay();
1162                }
1163
1164            }, 0);
1165
1166        });
1167    };
1168
1169    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
1170
1171        var _ = this;
1172        return _.currentSlide;
1173
1174    };
1175
1176    Slick.prototype.getDotCount = function() {
1177
1178        var _ = this;
1179
1180        var breakPoint = 0;
1181        var counter = 0;
1182        var pagerQty = 0;
1183
1184        if (_.options.infinite === true) {
1185            while (breakPoint < _.slideCount) {
1186                ++pagerQty;
1187                breakPoint = counter + _.options.slidesToScroll;
1188                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1189            }
1190        } else if (_.options.centerMode === true) {
1191            pagerQty = _.slideCount;
1192        } else if(!_.options.asNavFor) {
1193            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
1194        }else {
1195            while (breakPoint < _.slideCount) {
1196                ++pagerQty;
1197                breakPoint = counter + _.options.slidesToScroll;
1198                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1199            }
1200        }
1201
1202        return pagerQty - 1;
1203
1204    };
1205
1206    Slick.prototype.getLeft = function(slideIndex) {
1207
1208        var _ = this,
1209            targetLeft,
1210            verticalHeight,
1211            verticalOffset = 0,
1212            targetSlide;
1213
1214        _.slideOffset = 0;
1215        verticalHeight = _.$slides.first().outerHeight(true);
1216
1217        if (_.options.infinite === true) {
1218            if (_.slideCount > _.options.slidesToShow) {
1219                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
1220                verticalOffset = (verticalHeight * _.options.slidesToShow) * -1;
1221            }
1222            if (_.slideCount % _.options.slidesToScroll !== 0) {
1223                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
1224                    if (slideIndex > _.slideCount) {
1225                        _.slideOffset = ((_.options.slidesToShow - (sl
1225ideIndex - _.slideCount)) * _.slideWidth) * -1;
1226                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
1227                    } else {
1228                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
1229                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
1230                    }
1231                }
1232            }
1233        } else {
1234            if (slideIndex + _.options.slidesToShow > _.slideCount) {
1235                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
1236                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
1237            }
1238        }
1239
1240        if (_.slideCount <= _.options.slidesToShow) {
1241            _.slideOffset = 0;
1242            verticalOffset = 0;
1243        }
1244
1245        if (_.options.centerMode === true && _.options.infinite === true) {
1246            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
1247        } else if (_.options.centerMode === true) {
1248            _.slideOffset = 0;
1249            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
1250        }
1251
1252        if (_.options.vertical === false) {
1253            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
1254        } else {
1255            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
1256        }
1257
1258        if (_.options.variableWidth === true) {
1259
1260            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
1261                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
1262            } else {
1263                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
1264            }
1265
1266            if (_.options.rtl === true) {
1267                if (targetSlide[0]) {
1268                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
1269                } else {
1270                    targetLeft =  0;
1271                }
1272            } else {
1273                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
1274            }
1275
1276            if (_.options.centerMode === true) {
1277                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
1278                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
1279                } else {
1280                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
1281                }
1282
1283                if (_.options.rtl === true) {
1284                    if (targetSlide[0]) {
1285                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
1286                    } else {
1287                        targetLeft =  0;
1288                    }
1289                } else {
1290                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
1291                }
1292
1293                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
1294            }
1295        }
1296
1297        return targetLeft;
1298
1299    };
1300
1301    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {
1302
1303        var _ = this;
1304
1305        return _.options[option];
1306
1307    };
1308
1309    Slick.prototype.getNavigableIndexes = function() {
1310
1311        var _ = this,
1312            breakPoint = 0,
1313            counter = 0,
1314            indexes = [],
1315            max;
1316
1317        if (_.options.infinite === false) {
1318            max = _.slideCount;
1319        } else {
1320            breakPoint = _.options.slidesToScroll * -1;
1321            counter = _.options.slidesToScroll * -1;
1322            max = _.slideCount * 2;
1323        }
1324
1325        while (breakPoint < max) {
1326            indexes.push(breakPoint);
1327            breakPoint = counter + _.options.slidesToScroll;
1328            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
1329        }
1330
1331        return indexes;
1332
1333    };
1334
1335    Slick.prototype.getSlick = function() {
1336
1337        return this;
1338
1339    };
1340
1341    Slick.prototype.getSlideCount = function() {
1342
1343        var _ = this,
1344            slidesTraversed, swipedSlide, centerOffset;
1345
1346        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;
1347
1348        if (_.options.swipeToSlide === true) {
1349            _.$slideTrack.find('.slick-slide').each(function(index, slide) {
1350                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {
1351                    swipedSlide = slide;
1352                    return false;
1353                }
1354            });
1355
1356            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;
1357
1358            return slidesTraversed;
1359
1360        } else {
1361            return _.options.slidesToScroll;
1362        }
1363
1364    };
1365
1366    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {
1367
1368        var _ = this;
1369
1370        _.changeSlide({
1371            data: {
1372                message: 'index',
1373                index: parseInt(slide)
1374            }
1375        }, dontAnimate);
1376
1377    };
1378
1379    Slick.prototype.init = function(creation) {
1380
1381        var _ = this;
1382
1383        if (!$(_.$slider).hasClass('slick-initialized')) {
1384
1385            $(_.$slider).addClass('slick-initialized');
1386
1387            _.buildRows();
1388            _.buildOut();
1389            _.setProps();
1390            _.startLoad();
1391            _.loadSlider();
1392            _.initializeEvents();
1393            _.updateArrows();
1394            _.updateDots();
1395            _.checkResponsive(true);
1396            _.focusHandler();
1397
1398        }
1399
1400        if (creation) {
1401            _.$slider.trigger('init', [_]);
1402        }
1403
1404        if (_.options.accessibility === true) {
1405            _.initADA();
1406        }
1407
1408        if ( _.options.autoplay ) {
1409
1410            _.paused = false;
1411            _.autoPlay();
1412
1413        }
1414
1415    };
1416
1417    Slick.prototype.initADA = function() {
1418        var _ = this;
1419        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
1420            'aria-hidden': 'true',
1421            'tabindex': '-1'
1422        }).find('a, input, button, select').attr({
1423            'tabindex': '-1'
1424        });
1425
1426        _.$slideTrack.attr('role', 'listbox');
1427
1428        _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
1429            $(this).attr({
1430                'role': 'option',
1431                'aria-describedby': 'slick-slide' + _.instanceUid + i + ''
1432            });
1433        });
1434
1435        if (_.$dots !== null) {
1436            _.$dots.attr('role', 'tablist').find('li').each(function(i) {
1437                $(this).attr({
1438                    'role': 'presentation',
1439                    'aria-selected': 'false',
1440                    'aria-controls': 'navigation' + _.instanceUid + i + '',
1441                    'id': 'slick-slide' + _.instanceUid + i + ''
1442                });
1443            })
1444                .first().attr('aria-selected', 'true').end()
1445                .find('button').attr('role', 'button').end()
1446                .closest('div').attr('role', 'toolbar');
1447        }
1448        _.activateADA();
1449
1450    };
1451
1452    Slick.prototype.initArrowEvents = function() {
1453
1454        var _ = this;
1455
1456        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1457            _.$prevArrow
1458               .off('click.slick')
1459               .on('click.slick', {
1460                    message: 'previous'
1461               }, _.changeSlide);
1462            _.$nextArrow
1463               .off('click.slick')
1464               .on('click.slick', {
1465                    message: 'next'
1466               }, _.changeSlide);
1467        }
1468
1469    };
1470
1471    Slick.prototype.initDotEvents = function() {
1472
1473        var _ = this;
1474
1475        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
1476            $('li', _.$dots).on('click.slick', {
1477                message: 'index'
1478            }, _.changeSlide);
1479        }
1480
1481        if ( _.options.dots === true && _.options.pauseOnDotsHover === true ) {
1482
1483            $('li', _.$dots)
1484                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))
1485                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));
1486
1487        }
1488
1489    };
1490
1491    Slick.prototype.initSlideEvents = function() {
1492
1493        var _ = this;
1494
1495        if ( _.options.pauseOnHover ) {
1496
1497            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
1498            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
1499
1500        }
1501
1502    };
1503
1504    Slick.prototype.initializeEvents = function() {
1505
1506        var _ = this;
1507
1508        _.initArrowEvents();
1509
1510        _.initDotEvents();
1511        _.initSlideEvents();
1512
1513        _.$list.on('touchstart.slick mousedown.slick', {
1514            action: 'start'
1515        }, _.swipeHandler);
1516        _.$list.on('touchmove.slick mousemove.slick', {
1517            action: 'move'
1518        }, _.swipeHandler);
1519        _.$list.on('touchend.slick mouseup.slick', {
1520            action: 'end'
1521        }, _.swipeHandler);
1522        _.$list.on('touchcancel.slick mouseleave.slick', {
1523            action: 'end'
1524        }, _.swipeHandler);
1525
1526        _.$list.on('click.slick', _.clickHandler);
1527
1528        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
1529
1530        if (_.options.accessibility === true) {
1531            _.$list.on('keydown.slick', _.keyHandler);
1532        }
1533
1534        if (_.options.focusOnSelect === true) {
1535            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
1536        }
1537
1538        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));
1539
1540        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));
1541
1542        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);
1543
1544        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
1545        $(document).on('ready.slick.slick-' + _.instanceUid, _.setPosition);
1546
1547    };
1548
1549    Slick.prototype.initUI = function() {
1550
1551        var _ = this;
1552
1553        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
1554
1555            _.$prevArrow.show();
1556            _.$nextArrow.show();
1557
1558        }
1559
1560        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
1561
1562            _.$dots.show();
1563
1564        }
1565
1566    };
1567
1568    Slick.prototype.keyHandler = function(event) {
1569
1570        var _ = this;
1571         //Dont slide if the cursor is inside the form fields and arrow keys are pressed
1572        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {
1573            if (event.keyCode === 37 && _.options.accessibility === true) {
1574                _.changeSlide({
1575                    data: {
1576                        message: _.options.rtl === true ? 'next' :  'previous'
1577                    }
1578                });
1579            } else if (event.keyCode === 39 && _.options.accessibility === true) {
1580                _.changeSlide({
1581                    data: {
1582                        message: _.options.rtl === true ? 'previous' : 'next'
1583                    }
1584                });
1585            }
1586        }
1587
1588    };
1589
1590    Slick.prototype.lazyLoad = function() {
1591
1592        var _ = this,
1593            loadRange, cloneRange, rangeStart, rangeEnd;
1594
1595        function loadImages(imagesScope) {
1596
1597            $('img[data-lazy]', imagesScope).each(function() {
1598
1599                var image = $(this),
1600                    imageSource = $(this).attr('data-lazy'),
1601                    imageToLoad = document.createElement('img');
1602
1603                imageToLoad.onload = function() {
1604
1605                    image
1606                        .animate({ opacity: 0 }, 100, function() {
1607                            image
1608                                .attr('src', imageSource)
1609                                .animate({ opacity: 1 }, 200, function() {
1610                                    image
1611                                        .removeAttr('data-lazy')
1612                                        .removeClass('slick-loading');
1613                                });
1614                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
1615                        });
1616
1617                };
1618
1619                imageToLoad.onerror = function() {
1620
1621                    image
1622                        .removeAttr( 'data-lazy' )
1623                        .removeClass( 'slick-loading' )
1624                        .addClass( 'slick-lazyload-error' );
1625
1626                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
1627
1628                };
1629
1630                imageToLoad.src = imageSource;
1631
1632            });
1633
1634        }
1635
1636        if (_.options.centerMode === true) {
1637            if (_.options.infinite === true) {
1638                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
1639                rangeEnd = rangeStart + _.options.slidesToShow + 2;
1640            } else {
1641                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
1642                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
1643            }
1644        } else {
1645            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
1646            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);
1647            if (_.options.fade === true) {
1648                if (rangeStart > 0) rangeStart--;
1649                if (rangeEnd <= _.slideCount) rangeEnd++;
1650            }
1651        }
1652
1653        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
1654        loadImages(loadRange);
1655
1656        if (_.slideCount <= _.options.slidesToShow) {
1657            cloneRange = _.$slider.find('.slick-slide');
1658            loadImages(cloneRange);
1659        } else
1660        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
1661            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
1662            loadImages(cloneRange);
1663        } else if (_.currentSlide === 0) {
1664            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
1665            loadImages(cloneRange);
1666        }
1667
1668    };
1669
1670    Slick.prototype.loadSlider = function() {
1671
1672        var _ = this;
1673
1674        _.setPosition();
1675
1676        _.$slideTrack.css({
1677            opacity: 1
1678        });
1679
1680        _.$slider.removeClass('slick-loading');
1681
1682        _.initUI();
1683
1684        if (_.options.lazyLoad === 'progressive') {
1685            _.progressiveLazyLoad();
1686        }
1687
1688    };
1689
1690    Slick.prototype.next = Slick.prototype.slickNext = function() {
1691
1692        var _ = this;
1693
1694        _.changeSlide({
1695            data: {
1696                message: 'next'
1697            }
1698        });
1699
1700    };
1701
1702    Slick.prototype.orientationChange = function() {
1703
1704        var _ = this;
1705
1706        _.checkResponsive();
1707        _.setPosition();
1708
1709    };
1710
1711    Slick.prototype.pause = Slick.prototype.slickPause = function() {
1712
1713        var _ = this;
1714
1715        _.autoPlayClear();
1716        _.paused = true;
1717
1718    };
1719
1720    Slick.prototype.play = Slick.prototype.slickPlay = function() {
1721
1722        var _ = this;
1723
1724        _.autoPlay();
1725        _.options.autoplay = true;
1726        _.paused = false;
1727        _.focussed = false;
1728        _.interrupted = false;
1729
1730    };
1731
1732    Slick.prototype.postSlide = function(index) {
1733
1734        var _ = this;
1735
1736        if( !_.unslicked ) {
1737
1738            _.$slider.trigger('afterChange', [_, index]);
1739
1740            _.animating = false;
1741
1742            _.setPosition();
1743
1744            _.swipeLeft = null;
1745
1746            if ( _.options.autoplay ) {
1747                _.autoPlay();
1748            }
1749
1750            if (_.options.accessibility === true) {
1751                _.initADA();
1752            }
1753
1754        }
1755
1756    };
1757
1758    Slick.prototype.prev = Slick.prototype.slickPrev = function() {
1759
1760        var _ = this;
1761
1762        _.changeSlide({
1763            data: {
1764                message: 'previous'
1765            }
1766        });
1767
1768    };
1769
1770    Slick.prototype.preventDefault = function(event) {
1771
1772        event.preventDefault();
1773
1774    };
1775
1776    Slick.prototype.progressiveLazyLoad = function( tryCount ) {
1777
1778        tryCount = tryCount || 1;
1779
1780        var _ = this,
1781            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),
1782            image,
1783            imageSource,
1784            imageToLoad;
1785
1786        if ( $imgsToLoad.length ) {
1787
1788            image = $imgsToLoad.first();
1789            imageSource = image.attr('data-lazy');
1790            imageToLoad = document.createElement('img');
1791
1792            imageToLoad.onload = function() {
1793
1794                image
1795                    .attr( 'src', imageSource )
1796                    .removeAttr('data-lazy')
1797                    .removeClass('slick-loading');
1798
1799                if ( _.options.adaptiveHeight === true ) {
1800                    _.setPosition();
1801                }
1802
1803                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);
1804                _.progressiveLazyLoad();
1805
1806            };
1807
1808            imageToLoad.onerror = function() {
1809
1810                if ( tryCount < 3 ) {
1811
1812                    /**
1813                     * try to load the image 3 times,
1814                     * leave a slight delay so we don't get
1815                     * servers blocking the request.
1816                     */
1817                    setTimeout( function() {
1818                        _.progressiveLazyLoad( tryCount + 1 );
1819                    }, 500 );
1820
1821                } else {
1822
1823                    image
1824                        .removeAttr( 'data-lazy' )
1825                        .removeClass( 'slick-loading' )
1826                        .addClass( 'slick-lazyload-error' );
1827
1828                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
1829
1830                    _.progressiveLazyLoad();
1831
1832                }
1833
1834            };
1835
1836            imageToLoad.src = imageSource;
1837
1838        } else {
1839
1840            _.$slider.trigger('allImagesLoaded', [ _ ]);
1841
1842        }
1843
1844    };
1845
1846    Slick.prototype.refresh = function( initializing ) {
1847
1848        var _ = this, currentSlide, lastVisibleIndex;
1849
1850        lastVisibleIndex = _.slideCount - _.options.slidesToShow;
1851
1852        // in non-infinite sliders, we don't want to go past the
1853        // last visible index.
1854        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {
1855            _.currentSlide = lastVisibleIndex;
1856        }
1857
1858        // if less slides than to show, go to start.
1859        if ( _.slideCount <= _.options.slidesToShow ) {
1860            _.currentSlide = 0;
1861
1862        }
1863
1864        currentSlide = _.currentSlide;
1865
1866        _.destroy(true);
1867
1868        $.extend(_, _.initials, { currentSlide: currentSlide });
1869
1870        _.init();
1871
1872        if( !initializing ) {
1873
1874            _.changeSlide({
1875                data: {
1876                    message: 'index',
1877                    index: currentSlide
1878                }
1879            }, false);
1880
1881        }
1882
1883    };
1884
1885    Slick.prototype.registerBreakpoints = function() {
1886
1887        var _ = this, breakpoint, currentBreakpoint, l,
1888            responsiveSettings = _.options.responsive || null;
1889
1890        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {
1891
1892            _.respondTo = _.options.respondTo || 'window';
1893
1894            for ( breakpoint in responsiveSettings ) {
1895
1896                l = _.breakpoints.length-1;
1897                currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
1898
1899                if (responsiveSettings.hasOwnProperty(breakpoint)) {
1900
1901                    // loop through the breakpoints and cut out any existing
1902                    // ones with the same breakpoint number, we don't want dupes.
1903                    while( l >= 0 ) {
1904                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {
1905                            _.breakpoints.splice(l,1);
1906                        }
1907                        l--;
1908                    }
1909
1910                    _.breakpoints.push(currentBreakpoint);
1911                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;
1912
1913                }
1914
1915            }
1916
1917            _.breakpoints.sort(function(a, b) {
1918                return ( _.options.mobileFirst ) ? a-b : b-a;
1919            });
1920
1921        }
1922
1923    };
1924
1925    Slick.prototype.reinit = function() {
1926
1927        var _ = this;
1928
1929        _.$slides =
1930            _.$slideTrack
1931                .children(_.options.slide)
1932                .addClass('slick-slide');
1933
1934        _.slideCount = _.$slides.length;
1935
1936        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
1937            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
1938        }
1939
1940        if (_.slideCount <= _.options.slidesToShow) {
1941            _.currentSlide = 0;
1942        }
1943
1944        _.registerBreakpoints();
1945
1946        _.setProps();
1947        _.setupInfinite();
1948        _.buildArrows();
1949        _.updateArrows();
1950        _.initArrowEvents();
1951        _.buildDots();
1952        _.updateDots();
1953        _.initDotEvents();
1954        _.cleanUpSlideEvents();
1955        _.initSlideEvents();
1956
1957        _.checkResponsive(false, true);
1958
1959        if (_.options.focusOnSelect === true) {
1960            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
1961        }
1962
1963        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
1964
1965        _.setPosition();
1966        _.focusHandler();
1967
1968        _.paused = !_.options.autoplay;
1969        _.autoPlay();
1970
1971        _.$slider.trigger('reInit', [_]);
1972
1973    };
1974
1975    Slick.prototype.resize = function() {
1976
1977        var _ = this;
1978
1979        if ($(window).width() !== _.windowWidth) {
1980            clearTimeout(_.windowDelay);
1981            _.windowDelay = window.setTimeout(function() {
1982                _.windowWidth = $(window).width();
1983                _.checkResponsive();
1984                if( !_.unslicked ) { _.setPosition(); }
1985            }, 50);
1986        }
1987    };
1988
1989    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {
1990
1991        var _ = this;
1992
1993        if (typeof(index) === 'boolean') {
1994            removeBefore = index;
1995            index = removeBefore === true ? 0 : _.slideCount - 1;
1996        } else {
1997            index = removeBefore === true ? --index : index;
1998        }
1999
2000        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
2001            return false;
2002        }
2003
2004        _.unload();
2005
2006        if (removeAll === true) {
2007            _.$slideTrack.children().remove();
2008        } else {
2009            _.$slideTrack.children(this.options.slide).eq(index).remove();
2010        }
2011
2012        _.$slides = _.$slideTrack.children(this.options.slide);
2013
2014        _.$slideTrack.children(this.options.slide).detach();
2015
2016        _.$slideTrack.append(_.$slides);
2017
2018        _.$slidesCache = _.$slides;
2019
2020        _.reinit();
2021
2022    };
2023
2024    Slick.prototype.setCSS = function(position) {
2025
2026        var _ = this,
2027            positionProps = {},
2028            x, y;
2029
2030        if (_.options.rtl === true) {
2031            position = -position;
2032        }
2033        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';
2034        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';
2035
2036        positionProps[_.positionProp] = position;
2037
2038        if (_.transformsEnabled === false) {
2039            _.$slideTrack.css(positionProps);
2040        } else {
2041            positionProps = {};
2042            if (_.cssTransitions === false) {
2043                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
2044                _.$slideTrack.css(positionProps);
2045            } else {
2046                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
2047                _.$slideTrack.css(positionProps);
2048            }
2049        }
2050
2051    };
2052
2053    Slick.prototype.setDimensions = function() {
2054
2055        var _ = this;
2056
2057        if (_.options.vertical === false) {
2058            if (_.options.centerMode === true) {
2059                _.$list.css({
2060                    padding: ('0px ' + _.options.centerPadding)
2061                });
2062            }
2063        } else {
2064            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
2065            if (_.options.centerMode === true) {
2066                _.$list.css({
2067                    padding: (_.options.centerPadding + ' 0px')
2068                });
2069            }
2070        }
2071
2072        _.listWidth = _.$list.width();
2073        _.listHeight = _.$list.height();
2074
2075
2076        if (_.options.vertical === false && _.options.variableWidth === false) {
2077            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
2078            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));
2079
2080        } else if (_.options.variableWidth === true) {
2081            _.$slideTrack.width(5000 * _.slideCount);
2082        } else {
2083            _.slideWidth = Math.ceil(_.listWidth);
2084            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
2085        }
2086
2087        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
2088        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);
2089
2090    };
2091
2092    Slick.prototype.setFade = function() {
2093
2094        var _ = this,
2095            targetLeft;
2096
2097        _.$slides.each(function(index, element) {
2098            targetLeft = (_.slideWidth * index) * -1;
2099            if (_.options.rtl === true) {
2100                $(element).css({
2101                    position: 'relative',
2102                    right: targetLeft,
2103                    top: 0,
2104                    zIndex: _.options.zIndex - 2,
2105                    opacity: 0
2106                });
2107            } else {
2108                $(element).css({
2109                    position: 'relative',
2110                    left: targetLeft,
2111                    top: 0,
2112                    zIndex: _.options.zIndex - 2,
2113                    opacity: 0
2114                });
2115            }
2116        });
2117
2118        _.$slides.eq(_.currentSlide).css({
2119            zIndex: _.options.zIndex - 1,
2120            opacity: 1
2121        });
2122
2123    };
2124
2125    Slick.prototype.setHeight = function() {
2126
2127        var _ = this;
2128
2129        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
2130            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
2131            _.$list.css('height', targetHeight);
2132        }
2133
2134    };
2135
2136    Slick.prototype.setOption =
2137    Slick.prototype.slickSetOption = function() {
2138
2139        /**
2140         * accepts arguments in format of:
2141         *
2142         *  - for changing a single option's value:
2143         *     .slick("setOption", option, value, refresh )
2144         *
2145         *  - for changing a set of responsive options:
2146         *     .slick("setOption", 'responsive', [{}, ...], refresh )
2147         *
2148         *  - for updating multiple values at once (not responsive)
2149         *     .slick("setOption", { 'option': value, ... }, refresh )
2150         */
2151
2152        var _ = this, l, item, option, value, refresh = false, t
2152ype;
2153
2154        if( $.type( arguments[0] ) === 'object' ) {
2155
2156            option =  arguments[0];
2157            refresh = arguments[1];
2158            type = 'multiple';
2159
2160        } else if ( $.type( arguments[0] ) === 'string' ) {
2161
2162            option =  arguments[0];
2163            value = arguments[1];
2164            refresh = arguments[2];
2165
2166            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {
2167
2168                type = 'responsive';
2169
2170            } else if ( typeof arguments[1] !== 'undefined' ) {
2171
2172                type = 'single';
2173
2174            }
2175
2176        }
2177
2178        if ( type === 'single' ) {
2179
2180            _.options[option] = value;
2181
2182
2183        } else if ( type === 'multiple' ) {
2184
2185            $.each( option , function( opt, val ) {
2186
2187                _.options[opt] = val;
2188
2189            });
2190
2191
2192        } else if ( type === 'responsive' ) {
2193
2194            for ( item in value ) {
2195
2196                if( $.type( _.options.responsive ) !== 'array' ) {
2197
2198                    _.options.responsive = [ value[item] ];
2199
2200                } else {
2201
2202                    l = _.options.responsive.length-1;
2203
2204                    // loop through the responsive object and splice out duplicates.
2205                    while( l >= 0 ) {
2206
2207                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
2208
2209                            _.options.responsive.splice(l,1);
2210
2211                        }
2212
2213                        l--;
2214
2215                    }
2216
2217                    _.options.responsive.push( value[item] );
2218
2219                }
2220
2221            }
2222
2223        }
2224
2225        if ( refresh ) {
2226
2227            _.unload();
2228            _.reinit();
2229
2230        }
2231
2232    };
2233
2234    Slick.prototype.setPosition = function() {
2235
2236        var _ = this;
2237
2238        _.setDimensions();
2239
2240        _.setHeight();
2241
2242        if (_.options.fade === false) {
2243            _.setCSS(_.getLeft(_.currentSlide));
2244        } else {
2245            _.setFade();
2246        }
2247
2248        _.$slider.trigger('setPosition', [_]);
2249
2250    };
2251
2252    Slick.prototype.setProps = function() {
2253
2254        var _ = this,
2255            bodyStyle = document.body.style;
2256
2257        _.positionProp = _.options.vertical === true ? 'top' : 'left';
2258
2259        if (_.positionProp === 'top') {
2260            _.$slider.addClass('slick-vertical');
2261        } else {
2262            _.$slider.removeClass('slick-vertical');
2263        }
2264
2265        if (bodyStyle.WebkitTransition !== undefined ||
2266            bodyStyle.MozTransition !== undefined ||
2267            bodyStyle.msTransition !== undefined) {
2268            if (_.options.useCSS === true) {
2269                _.cssTransitions = true;
2270            }
2271        }
2272
2273        if ( _.options.fade ) {
2274            if ( typeof _.options.zIndex === 'number' ) {
2275                if( _.options.zIndex < 3 ) {
2276                    _.options.zIndex = 3;
2277                }
2278            } else {
2279                _.options.zIndex = _.defaults.zIndex;
2280            }
2281        }
2282
2283        if (bodyStyle.OTransform !== undefined) {
2284            _.animType = 'OTransform';
2285            _.transformType = '-o-transform';
2286            _.transitionType = 'OTransition';
2287            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
2288        }
2289        if (bodyStyle.MozTransform !== undefined) {
2290            _.animType = 'MozTransform';
2291            _.transformType = '-moz-transform';
2292            _.transitionType = 'MozTransition';
2293            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
2294        }
2295        if (bodyStyle.webkitTransform !== undefined) {
2296            _.animType = 'webkitTransform';
2297            _.transformType = '-webkit-transform';
2298            _.transitionType = 'webkitTransition';
2299            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
2300        }
2301        if (bodyStyle.msTransform !== undefined) {
2302            _.animType = 'msTransform';
2303            _.transformType = '-ms-transform';
2304            _.transitionType = 'msTransition';
2305            if (bodyStyle.msTransform === undefined) _.animType = false;
2306        }
2307        if (bodyStyle.transform !== undefined && _.animType !== false) {
2308            _.animType = 'transform';
2309            _.transformType = 'transform';
2310            _.transitionType = 'transition';
2311        }
2312        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);
2313    };
2314
2315
2316    Slick.prototype.setSlideClasses = function(index) {
2317
2318        var _ = this,
2319            centerOffset, allSlides, indexOffset, remainder;
2320
2321        allSlides = _.$slider
2322            .find('.slick-slide')
2323            .removeClass('slick-active slick-center slick-current')
2324            .attr('aria-hidden', 'true');
2325
2326        _.$slides
2327            .eq(index)
2328            .addClass('slick-current');
2329
2330        if (_.options.centerMode === true) {
2331
2332            centerOffset = Math.floor(_.options.slidesToShow / 2);
2333
2334            if (_.options.infinite === true) {
2335
2336                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
2337
2338                    _.$slides
2339                        .slice(index - centerOffset, index + centerOffset + 1)
2340                        .addClass('slick-active')
2341                        .attr('aria-hidden', 'false');
2342
2343                } else {
2344
2345                    indexOffset = _.options.slidesToShow + index;
2346                    allSlides
2347                        .slice(indexOffset - centerOffset + 1, indexOffset + centerOffset + 2)
2348                        .addClass('slick-active')
2349                        .attr('aria-hidden', 'false');
2350
2351                }
2352
2353                if (index === 0) {
2354
2355                    allSlides
2356                        .eq(allSlides.length - 1 - _.options.slidesToShow)
2357                        .addClass('slick-center');
2358
2359                } else if (index === _.slideCount - 1) {
2360
2361                    allSlides
2362                        .eq(_.options.slidesToShow)
2363                        .addClass('slick-center');
2364
2365                }
2366
2367            }
2368
2369            _.$slides
2370                .eq(index)
2371                .addClass('slick-center');
2372
2373        } else {
2374
2375            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
2376
2377                _.$slides
2378                    .slice(index, index + _.options.slidesToShow)
2379                    .addClass('slick-active')
2380                    .attr('aria-hidden', 'false');
2381
2382            } else if (allSlides.length <= _.options.slidesToShow) {
2383
2384                allSlides
2385                    .addClass('slick-active')
2386                    .attr('aria-hidden', 'false');
2387
2388            } else {
2389
2390                remainder = _.slideCount % _.options.slidesToShow;
2391                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
2392
2393                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
2394
2395                    allSlides
2396                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
2397                        .addClass('slick-active')
2398                        .attr('aria-hidden', 'false');
2399
2400                } else {
2401
2402                    allSlides
2403                        .slice(indexOffset, indexOffset + _.options.slidesToShow)
2404                        .addClass('slick-active')
2405                        .attr('aria-hidden', 'false');
2406
2407                }
2408
2409            }
2410
2411        }
2412
2413        if (_.options.lazyLoad === 'ondemand') {
2414            _.lazyLoad();
2415        }
2416
2417    };
2418
2419    Slick.prototype.setupInfinite = function() {
2420
2421        var _ = this,
2422            i, slideIndex, infiniteCount;
2423
2424        if (_.options.fade === true) {
2425            _.options.centerMode = false;
2426        }
2427
2428        if (_.options.infinite === true && _.options.fade === false) {
2429
2430            slideIndex = null;
2431
2432            if (_.slideCount > _.options.slidesToShow) {
2433
2434                if (_.options.centerMode === true) {
2435                    infiniteCount = _.options.slidesToShow + 1;
2436                } else {
2437                    infiniteCount = _.options.slidesToShow;
2438                }
2439
2440                for (i = _.slideCount; i > (_.slideCount -
2441                        infiniteCount); i -= 1) {
2442                    slideIndex = i - 1;
2443                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
2444                        .attr('data-slick-index', slideIndex - _.slideCount)
2445                        .prependTo(_.$slideTrack).addClass('slick-cloned');
2446                }
2447                for (i = 0; i < infiniteCount; i += 1) {
2448                    slideIndex = i;
2449                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
2450                        .attr('data-slick-index', slideIndex + _.slideCount)
2451                        .appendTo(_.$slideTrack).addClass('slick-cloned');
2452                }
2453                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {
2454                    $(this).attr('id', '');
2455                });
2456
2457            }
2458
2459        }
2460
2461    };
2462
2463    Slick.prototype.interrupt = function( toggle ) {
2464
2465        var _ = this;
2466
2467        if( !toggle ) {
2468            _.autoPlay();
2469        }
2470        _.interrupted = toggle;
2471
2472    };
2473
2474    Slick.prototype.selectHandler = function(event) {
2475
2476        var _ = this;
2477
2478        var targetElement =
2479            $(event.target).is('.slick-slide') ?
2480                $(event.target) :
2481                $(event.target).parents('.slick-slide');
2482
2483        var index = parseInt(targetElement.attr('data-slick-index'));
2484
2485        if (!index) index = 0;
2486
2487        if (_.slideCount <= _.options.slidesToShow) {
2488
2489            _.setSlideClasses(index);
2490            _.asNavFor(index);
2491            return;
2492
2493        }
2494
2495        _.slideHandler(index);
2496
2497    };
2498
2499    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
2500
2501        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
2502            _ = this, navTarget;
2503
2504        sync = sync || false;
2505
2506        if (_.animating === true && _.options.waitForAnimate === true) {
2507            return;
2508        }
2509
2510        if (_.options.fade === true && _.currentSlide === index) {
2511            return;
2512        }
2513
2514        if (_.slideCount <= _.options.slidesToShow) {
2515            return;
2516        }
2517
2518        if (sync === false) {
2519            _.asNavFor(index);
2520        }
2521
2522        targetSlide = index;
2523        targetLeft = _.getLeft(targetSlide);
2524        slideLeft = _.getLeft(_.currentSlide);
2525
2526        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
2527
2528        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
2529            if (_.options.fade === false) {
2530                targetSlide = _.currentSlide;
2531                if (dontAnimate !== true) {
2532                    _.animateSlide(slideLeft, function() {
2533                        _.postSlide(targetSlide);
2534                    });
2535                } else {
2536                    _.postSlide(targetSlide);
2537                }
2538            }
2539            return;
2540        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
2541            if (_.options.fade === false) {
2542                targetSlide = _.currentSlide;
2543                if (dontAnimate !== true) {
2544                    _.animateSlide(slideLeft, function() {
2545                        _.postSlide(targetSlide);
2546                    });
2547                } else {
2548                    _.postSlide(targetSlide);
2549                }
2550            }
2551            return;
2552        }
2553
2554        if ( _.options.autoplay ) {
2555            clearInterval(_.autoPlayTimer);
2556        }
2557
2558        if (targetSlide < 0) {
2559            if (_.slideCount % _.options.slidesToScroll !== 0) {
2560                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
2561            } else {
2562                animSlide = _.slideCount + targetSlide;
2563            }
2564        }
2564 else if (targetSlide >= _.slideCount) {
2565            if (_.slideCount % _.options.slidesToScroll !== 0) {
2566                animSlide = 0;
2567            } else {
2568                animSlide = targetSlide - _.slideCount;
2569            }
2570        } else {
2571            animSlide = targetSlide;
2572        }
2573
2574        _.animating = true;
2575
2576        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);
2577
2578        oldSlide = _.currentSlide;
2579        _.currentSlide = animSlide;
2580
2581        _.setSlideClasses(_.currentSlide);
2582
2583        if ( _.options.asNavFor ) {
2584
2585            navTarget = _.getNavTarget();
2586            navTarget = navTarget.slick('getSlick');
2587
2588            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {
2589                navTarget.setSlideClasses(_.currentSlide);
2590            }
2591
2592        }
2593
2594        _.updateDots();
2595        _.updateArrows();
2596
2597        if (_.options.fade === true) {
2598            if (dontAnimate !== true) {
2599
2600                _.fadeSlideOut(oldSlide);
2601
2602                _.fadeSlide(animSlide, function() {
2603                    _.postSlide(animSlide);
2604                });
2605
2606            } else {
2607                _.postSlide(animSlide);
2608            }
2609            _.animateHeight();
2610            return;
2611        }
2612
2613        if (dontAnimate !== true) {
2614            _.animateSlide(targetLeft, function() {
2615                _.postSlide(animSlide);
2616            });
2617        } else {
2618            _.postSlide(animSlide);
2619        }
2620
2621    };
2622
2623    Slick.prototype.startLoad = function() {
2624
2625        var _ = this;
2626
2627        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
2628
2629            _.$prevArrow.hide();
2630            _.$nextArrow.hide();
2631
2632        }
2633
2634        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
2635
2636            _.$dots.hide();
2637
2638        }
2639
2640        _.$slider.addClass('slick-loading');
2641
2642    };
2643
2644    Slick.prototype.swipeDirection = function() {
2645
2646        var xDist, yDist, r, swipeAngle, _ = this;
2647
2648        xDist = _.touchObject.startX - _.touchObject.curX;
2649        yDist = _.touchObject.startY - _.touchObject.curY;
2650        r = Math.atan2(yDist, xDist);
2651
2652        swipeAngle = Math.round(r * 180 / Math.PI);
2653        if (swipeAngle < 0) {
2654            swipeAngle = 360 - Math.abs(swipeAngle);
2655        }
2656
2657        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
2658            return (_.options.rtl === false ? 'left' : 'right');
2659        }
2660        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
2661            return (_.options.rtl === false ? 'left' : 'right');
2662        }
2663        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
2664            return (_.options.rtl === false ? 'right' : 'left');
2665        }
2666        if (_.options.verticalSwiping === true) {
2667            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
2668                return 'down';
2669            } else {
2670                return 'up';
2671            }
2672        }
2673
2674        return 'vertical';
2675
2676    };
2677
2678    Slick.prototype.swipeEnd = function(event) {
2679
2680        var _ = this,
2681            slideCount,
2682            direction;
2683
2684        _.dragging = false;
2685        _.interrupted = false;
2686        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;
2687
2688        if ( _.touchObject.curX === undefined ) {
2689            return false;
2690        }
2691
2692        if ( _.touchObject.edgeHit === true ) {
2693            _.$slider.trigger('edge', [_, _.swipeDirection() ]);
2694        }
2695
2696        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {
2697
2698            direction = _.swipeDirection();
2699
2700            switch ( direction ) {
2701
2702                case 'left':
2703                case 'down':
2704
2705                    slideCount =
2706                        _.options.swipeToSlide ?
2707                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :
2708                            _.currentSlide + _.getSlideCount();
2709
2710                    _.currentDirection = 0;
2711
2712                    break;
2713
2714                case 'right':
2715                case 'up':
2716
2717                    slideCount =
2718                        _.options.swipeToSlide ?
2719                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :
2720                            _.currentSlide - _.getSlideCount();
2721
2722                    _.currentDirection = 1;
2723
2724                    break;
2725
2726                default:
2727
2728
2729            }
2730
2731            if( direction != 'vertical' ) {
2732
2733                _.slideHandler( slideCount );
2734                _.touchObject = {};
2735                _.$slider.trigger('swipe', [_, direction ]);
2736
2737            }
2738
2739        } else {
2740
2741            if ( _.touchObject.startX !== _.touchObject.curX ) {
2742
2743                _.slideHandler( _.currentSlide );
2744                _.touchObject = {};
2745
2746            }
2747
2748        }
2749
2750    };
2751
2752    Slick.prototype.swipeHandler = function(event) {
2753
2754        var _ = this;
2755
2756        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
2757            return;
2758        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
2759            return;
2760        }
2761
2762        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
2763            event.originalEvent.touches.length : 1;
2764
2765        _.touchObject.minSwipe = _.listWidth / _.options
2766            .touchThreshold;
2767
2768        if (_.options.verticalSwiping === true) {
2769            _.touchObject.minSwipe = _.listHeight / _.options
2770                .touchThreshold;
2771        }
2772
2773        switch (event.data.action) {
2774
2775            case 'start':
2776                _.swipeStart(event);
2777                break;
2778
2779            case 'move':
2780                _.swipeMove(event);
2781                break;
2782
2783            case 'end':
2784                _.swipeEnd(event);
2785                break;
2786
2787        }
2788
2789    };
2790
2791    Slick.prototype.swipeMove = function(event) {
2792
2793        var _ = this,
2794            edgeWasHit = false,
2795            curLeft, swipeDirection, swipeLength, positionOffset, touches;
2796
2797        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
2798
2799        if (!_.dragging || touches && touches.length !== 1) {
2800            return false;
2801        }
2802
2803        curLeft = _.getLeft(_.currentSlide);
2804
2805        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
2806        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
2807
2808        _.touchObject.swipeLength = Math.round(Math.sqrt(
2809            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
2810
2811        if (_.options.verticalSwiping === true) {
2812            _.touchObject.swipeLength = Math.round(Math.sqrt(
2813                Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
2814        }
2815
2816        swipeDirection = _.swipeDirection();
2817
2818        if (swipeDirection === 'vertical') {
2819            return;
2820        }
2821
2822        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
2823            event.preventDefault();
2824        }
2825
2826        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
2827        if (_.options.verticalSwiping === true) {
2828            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
2829        }
2830
2831
2832        swipeLength = _.touchObject.swipeLength;
2833
2834        _.touchObject.edgeHit = false;
2835
2836        if (_.options.infinite === false) {
2837            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
2838                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
2839                _.touchObject.edgeHit = true;
2840            }
2841        }
2842
2843        if (_.options.vertical === false) {
2844            _.swipeLeft = curLeft + swipeLength * positionOffset;
2845        } else {
2846            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
2847        }
2848        if (_.options.verticalSwiping === true) {
2849            _.swipeLeft = curLeft + swipeLength * positionOffset;
2850        }
2851
2852        if (_.options.fade === true || _.options.touchMove === false) {
2853            return false;
2854        }
2855
2856        if (_.animating === true) {
2857            _.swipeLeft = null;
2858            return false;
2859        }
2860
2861        _.setCSS(_.swipeLeft);
2862
2863    };
2864
2865    Slick.prototype.swipeStart = function(event) {
2866
2867        var _ = this,
2868            touches;
2869
2870        _.interrupted = true;
2871
2872        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
2873            _.touchObject = {};
2874            return false;
2875        }
2876
2877        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
2878            touches = event.originalEvent.touches[0];
2879        }
2880
2881        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
2882        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
2883
2884        _.dragging = true;
2885
2886    };
2887
2888    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {
2889
2890        var _ = this;
2891
2892        if (_.$slidesCache !== null) {
2893
2894            _.unload();
2895
2896            _.$slideTrack.children(this.options.slide).detach();
2897
2898            _.$slidesCache.appendTo(_.$slideTrack);
2899
2900            _.reinit();
2901
2902        }
2903
2904    };
2905
2906    Slick.prototype.unload = function() {
2907
2908        var _ = this;
2909
2910        $('.slick-cloned', _.$slider).remove();
2911
2912        if (_.$dots) {
2913            _.$dots.remove();
2914        }
2915
2916        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
2917            _.$prevArrow.remove();
2918        }
2919
2920        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
2921            _.$nextArrow.remove();
2922        }
2923
2924        _.$slides
2925            .removeClass('slick-slide slick-active slick-visible slick-current')
2926            .attr('aria-hidden', 'true')
2927            .css('width', '');
2928
2929    };
2930
2931    Slick.prototype.unslick = function(fromBreakpoint) {
2932
2933        var _ = this;
2934        _.$slider.trigger('unslick', [_, fromBreakpoint]);
2935        _.destroy();
2936
2937    };
2938
2939    Slick.prototype.updateArrows = function() {
2940
2941        var _ = this,
2942            centerOffset;
2943
2944        centerOffset = Math.floor(_.options.slidesToShow / 2);
2945
2946        if ( _.options.arrows === true &&
2947            _.slideCount > _.options.slidesToShow &&
2948            !_.options.infinite ) {
2949
2950            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2951            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2952
2953            if (_.currentSlide === 0) {
2954
2955                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
2956                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2957
2958            } else if (_.currentSlide >
2958= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
2959
2960                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
2961                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2962
2963            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {
2964
2965                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
2966                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
2967
2968            }
2969
2970        }
2971
2972    };
2973
2974    Slick.prototype.updateDots = function() {
2975
2976        var _ = this;
2977
2978        if (_.$dots !== null) {
2979
2980            _.$dots
2981                .find('li')
2982                .removeClass('slick-active')
2983                .attr('aria-hidden', 'true');
2984
2985            _.$dots
2986                .find('li')
2987                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
2988                .addClass('slick-active')
2989                .attr('aria-hidden', 'false');
2990
2991        }
2992
2993    };
2994
2995    Slick.prototype.visibility = function() {
2996
2997        var _ = this;
2998
2999        if ( _.options.autoplay ) {
3000
3001            if ( document[_.hidden] ) {
3002
3003                _.interrupted = true;
3004
3005            } else {
3006
3007                _.interrupted = false;
3008
3009            }
3010
3011        }
3012
3013    };
3014
3015    $.fn.slick = function() {
3016        var _ = this,
3017            opt = arguments[0],
3018            args = Array.prototype.slice.call(arguments, 1),
3019            l = _.length,
3020            i,
3021            ret;
3022        for (i = 0; i < l; i++) {
3023            if (typeof opt == 'object' || typeof opt == 'undefined')
3024                _[i].slick = new Slick(_[i], opt);
3025            else
3026                ret = _[i].slick[opt].apply(_[i].slick, args);
3027            if (typeof ret != 'undefined') return ret;
3028        }
3029        return _;
3030    };
3031
3032}));
3033;
3034/*!
3035* jQuery meanMenu v2.0.8
3036* @Copyright (C) 2012-2014 Chris Wharton @ MeanThemes (https://github.com/meanthemes/meanMenu)
3037*
3038*/
3039/*
3040* This program is free software: you can redistribute it and/or modify
3041* it under the terms of the GNU General Public License as published by
3042* the Free Software Foundation, either version 3 of the License, or
3043* (at your option) any later version.
3044*
3045* THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
3046* HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
3047* INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
3048* FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE
3049* OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
3050* COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.COPYRIGHT HOLDERS WILL NOT
3051* BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL
3052* DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
3053*
3054* You should have received a copy of the GNU General Public License
3055* along with this program. If not, see <http://gnu.org/licenses/>.
3056*
3057* Find more information at http://www.meanthemes.com/plugins/meanmenu/
3058*
3059*/
3060(function ($) {
3061	"use strict";
3062		$.fn.meanmenu = function (options) {
3063				var defaults = {
3064						meanMenuTarget: jQuery(this), // Target the current HTML markup you wish to replace
3065						meanMenuContainer: 'body', // Choose where meanmenu will be placed within the HTML
3066						meanMenuClose: "X", // single character you want to represent the close menu button
3067						meanMenuCloseSize: "18px", // set font size of close button
3068						meanMenuOpen: "<span /><span /><span />", // text/markup you want when menu is closed
3069						meanRevealPosition: "right", // left right or center positions
3070						meanRevealPositionDistance: "0", // Tweak the position of the menu
3071						meanRevealColour: "", // override CSS colours for the reveal background
3072						meanScreenWidth: "767", // set the screen width you want meanmenu to kick in at
3073						meanNavPush: "", // set a height here in px, em or % if you want to budge your layout now the navigation is missing.
3074						meanShowChildren: true, // true to show children in the menu, false to hide them
3075						meanExpandableChildren: true, // true to allow expand/collapse children
3076						meanExpand: "+", // single character you want to represent the expand for ULs
3077						meanContract: "-", // single character you want to represent the contract for ULs
3078						meanRemoveAttrs: false, // true to remove classes and IDs, false to keep them
3079						onePage: false, // set to true for one page sites
3080						meanDisplay: "block", // override display method for table cell based layouts e.g. table-cell
3081						removeElements: "" // set to hide page elements
3082				};
3083				options = $.extend(defaults, options);
3084
3085				// get browser width
3086				var currentWidth = window.innerWidth || document.documentElement.clientWidth;
3087
3088				return this.each(function () {
3089						var meanMenu = options.meanMenuTarget;
3090						var meanContainer = options.meanMenuContainer;
3091						var meanMenuClose = options.meanMenuClose;
3092						var meanMenuCloseSize = options.meanMenuCloseSize;
3093						var meanMenuOpen = options.meanMenuOpen;
3094						var meanRevealPosition = options.meanRevealPosition;
3095						var meanRevealPositionDistance = options.meanRevealPositionDistance;
3096						var meanRevealColour = options.meanRevealColour;
3097						var meanScreenWidth = options.meanScreenWidth;
3098						var meanNavPush = options.meanNavPush;
3099						var meanRevealClass = ".meanmenu-reveal";
3100						var meanShowChildren = options.meanShowChildren;
3101						var meanExpandableChildren = options.meanExpandableChildren;
3102						var meanExpand = options.meanExpand;
3103						var meanContract = options.meanContract;
3104						var meanRemoveAttrs = options.meanRemoveAttrs;
3105						var onePage = options.onePage;
3106						var meanDisplay = options.meanDisplay;
3107						var removeElements = options.removeElements;
3108
3109						//detect known mobile/tablet usage
3110						var isMobile = false;
3111						if ( (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i)) || (navigator.userAgent.match(/Android/i)) || (navigator.userAgent.match(/Blackberry/i)) || (navigator.userAgent.match(/Windows Phone/i)) ) {
3112								isMobile = true;
3113						}
3114
3115						if ( (navigator.userAgent.match(/MSIE 8/i)) || (navigator.userAgent.match(/MSIE 7/i)) ) {
3116							// add scrollbar for IE7 & 8 to stop breaking resize function on small content sites
3117								jQuery('html').css("overflow-y" , "scroll");
3118						}
3119
3120						var meanRevealPos = "";
3121						var meanCentered = function() {
3122							if (meanRevealPosition === "center") {
3123								var newWidth = window.innerWidth || document.documentElement.clientWidth;
3124								var meanCenter = ( (newWidth/2)-22 )+"px";
3125								meanRevealPos = "left:" + meanCenter + ";right:auto;";
3126
3127								if (!isMobile) {
3128									jQuery('.meanmenu-reveal').css("left",meanCenter);
3129								} else {
3130									jQuery('.meanmenu-reveal').animate({
3131											left: meanCenter
3132									});
3133								}
3134							}
3135						};
3136
3137						var menuOn = false;
3138						var meanMenuExist = false;
3139
3140
3141						if (meanRevealPosition === "right") {
3142								meanRevealPos = "right:" + meanRevealPositionDistance + ";left:auto;";
3143						}
3144						if (meanRevealPosition === "left") {
3145								meanRevealPos = "left:" + meanRevealPositionDistance + ";right:auto;";
3146						}
3147						// run center function
3148						meanCentered();
3149
3150						// set all styles for mean-reveal
3151						var $navreveal = "";
3152
3153						var meanInner = function() {
3154								// get last class name
3155								if (jQuery($navreveal).is(".meanmenu-reveal.meanclose")) {
3156										$navreveal.html(meanMenuClose);
3157								} else {
3158										$navreveal.html(meanMenuOpen);
3159								}
3160						};
3161
3162						// re-instate original nav (and call this on window.width functions)
3163						var meanOriginal = function() {
3164							jQuery('.mean-bar,.mean-push').remove();
3165							jQuery(meanContainer).removeClass("mean-container");
3166							jQuery(meanMenu).css('display', meanDisplay);
3167							menuOn = false;
3168							meanMenuExist = false;
3169							jQuery(removeElements).removeClass('mean-remove');
3170						};
3171
3172						// navigation reveal
3173						var showMeanMenu = function() {
3174								var meanStyles = "background:"+meanRevealColour+";color:"+meanRevealColour+";"+meanRevealPos;
3175								if (currentWidth <= meanScreenWidth) {
3176								jQuery(removeElements).addClass('mean-remove');
3177									meanMenuExist = true;
3178									// add class to body so we don't need to worry about media queries here, all CSS is wrapped in '.mean-container'
3179									jQuery(meanContainer).addClass("mean-container");
3180									jQuery('.mean-container').prepend('<div class="mean-bar"><a href="#nav" class="meanmenu-reveal" style="'+meanStyles+'">Show Navigation</a><nav class="mean-nav"></nav></div>');
3181
3182									//push meanMenu navigation into .mean-nav
3183									var meanMenuContents = jQuery(meanMenu).html();
3184									jQuery('.mean-nav').html(meanMenuContents);
3185
3186									// remove all classes from EVERYTHING inside meanmenu nav
3187									if(meanRemoveAttrs) {
3188										jQuery('nav.mean-nav ul, nav.mean-nav ul *').each(function() {
3189											// First check if this has mean-remove class
3190											if (jQuery(this).is('.mean-remove')) {
3191												jQuery(this).attr('class', 'mean-remove');
3192											} else {
3193												jQuery(this).removeAttr("class");
3194											}
3195											jQuery(this).removeAttr("id");
3196										});
3197									}
3198
3199									// push in a holder div (this can be used if removal of nav is causing layout issues)
3200									jQuery(meanMenu).before('<div class="mean-push" />');
3201									jQuery('.mean-push').css("margin-top",meanNavPush);
3202
3203									// hide current navigation and reveal mean nav link
3204									jQuery(meanMenu).hide();
3205									jQuery(".meanmenu-reveal").show();
3206
3207									// turn 'X' on or off
3208									jQuery(meanRevealClass).html(meanMenuOpen);
3209									$navreveal = jQuery(meanRevealClass);
3210
3211									//hide mean-nav ul
3212									jQuery('.mean-nav ul').hide();
3213
3214									// hide sub nav
3215									if(meanShowChildren) {
3216											// allow expandable sub nav(s)
3217											if(meanExpandableChildren){
3218												jQuery('.mean-nav ul ul').each(function() {
3219														if(jQuery(this).children().length){
3220																jQuery(this,'li:first').parent().append('<a class="mean-expand" href="#" style="font-size: '+ meanMenuCloseSize +'">'+ meanExpand +'</a>');
3221														}
3222												});
3223												jQuery('.mean-expand').on("click",function(e){
3224														e.preventDefault();
3225															if (jQuery(this).hasClass("mean-clicked")) {
3226																	jQuery(this).text(meanExpand);
3227																jQuery(this).prev('ul').slideUp(300, function(){});
3228														} else {
3229																jQuery(this).text(meanContract);
3230																jQuery(this).prev('ul').slideDown(300, function(){});
3231														}
3232														jQuery(this).toggleClass("mean-clicked");
3233												});
3234											} else {
3235													jQuery('.mean-nav ul ul').show();
3236											}
3237									} else {
3238											jQuery('.mean-nav ul ul').hide();
3239									}
3240
3241									// add last class to tidy up borders
3242									jQuery('.mean-nav ul li').last().addClass('mean-last');
3243									$navreveal.removeClass("meanclose");
3244									jQuery($navreveal).click(function(e){
3245										e.preventDefault();
3246								if( menuOn === false ) {
3247												$navreveal.css("text-align", "center");
3248												$navreveal.css("text-indent", "0");
3249												$navreveal.css("font-size", meanMenuCloseSize);
3250												jQuery('.mean-nav ul:first').slideDown();
3251												menuOn = true;
3252										} else {
3253											jQuery('.mean-nav ul:first').slideUp();
3254											menuOn = false;
3255										}
3256											$navreveal.toggleClass("meanclose");
3257											meanInner();
3258											jQuery(removeElements).addClass('mean-remove');
3259									});
3260
3261									// for one page websites, reset all variables...
3262									if ( onePage ) {
3263										jQuery('.mean-nav ul > li > a:first-child').on( "click" , function () {
3264											jQuery('.mean-nav ul:first').slideUp();
3265											menuOn = false;
3266											jQuery($navreveal).toggleClass("meanclose").html(meanMenuOpen);
3267										});
3268									}
3269							} else {
3270								meanOriginal();
3271							}
3272						};
3273
3274						if (!isMobile) {
3275								// reset menu on resize above meanScreenWidth
3276								jQuery(window).resize(function () {
3277										currentWidth = window.innerWidth || document.documentElement.clientWidth;
3278										if (currentWidth > meanScreenWidth) {
3279												meanOriginal();
3280										} else {
3281											meanOriginal();
3282										}
3283										if (currentWidth <= meanScreenWidth) {
3284												showMeanMenu();
3285												meanCentered();
3286										} else {
3287											meanOriginal();
3288										}
3289								});
3290						}
3291
3292					jQuery(window).resize(function () {
3293								// get browser width
3294								currentWidth = window.innerWidth || document.documentElement.clientWidth;
3295
3296								if (!isMobile) {
3297										meanOriginal();
3298										if (currentWidth <= meanScreenWidth) {
3299												showMeanMenu();
3300												meanCentered();
3301										}
3302								} else {
3303										meanCentered();
3304										if (currentWidth <= meanScreenWidth) {
3305												if (meanMenuExist === false) {
3306														showMeanMenu();
3307												}
3308										} else {
3309												meanOriginal();
3310										}
3311								}
3312						});
3313
3314					// run main menuMenu function on load
3315					showMeanMenu();
3316				});
3317		};
3318})(jQuery);;
3319/*!
3320 * Theia Sticky Sidebar v1.7.0
3321 * https://github.com/WeCodePixels/theia-sticky-sidebar
3322 *
3323 * Glues your website's sidebars, making them permanently visible while scrolling.
3324 *
3325 * Copyright 2013-2016 WeCodePixels and other contributors
3326 * Released under the MIT license
3327 */
3328
3329(function ($) {
3330    $.fn.theiaStickySidebar = function (options) {
3331        var defaults = {
3332            'containerSelector': '',
3333            'additionalMarginTop': 0,
3334            'additionalMarginBottom': 0,
3335            'updateSidebarHeight': true,
3336            'minWidth': 0,
3337            'disableOnResponsiveLayouts': true,
3338            'sidebarBehavior': 'modern',
3339            'defaultPosition': 'relative',
3340            'namespace': 'TSS'
3341        };
3342        options = $.extend(defaults, options);
3343
3344        // Validate options
3345        options.additionalMarginTop = parseInt(options.additionalMarginTop) || 0;
3346        options.additionalMarginBottom = parseInt(options.additionalMarginBottom) || 0;
3347
3348        tryInitOrHookIntoEvents(options, this);
3349
3350        // Try doing init, otherwise hook into window.resize and document.scroll and try again then.
3351        function tryInitOrHookIntoEvents(options, $that) {
3352            var success = tryInit(options, $that);
3353
3354            if (!success) {
3355                console.log('TSS: Body width smaller than options.minWidth. Init is delayed.');
3356
3357                $(document).on('scroll.' + options.namespace, function (options, $that) {
3358                    return function (evt) {
3359                        var success = tryInit(options, $that);
3360
3361                        if (success) {
3362                            $(this).unbind(evt);
3363                        }
3364                    };
3365                }(options, $that));
3366                $(window).on('resize.' + options.namespace, function (options, $that) {
3367                    return function (evt) {
3368                        var success = tryInit(options, $that);
3369
3370                        if (success) {
3371                            $(this).unbind(evt);
3372                        }
3373                    };
3374                }(options, $that))
3375            }
3376        }
3377
3378        // Try doing init if proper conditions are met.
3379        function tryInit(options, $that) {
3380            if (options.initialized === true) {
3381                return true;
3382            }
3383
3384            if ($('body').width() < options.minWidth) {
3385                return false;
3386            }
3387
3388            init(options, $that);
3389
3390            return true;
3391        }
3392
3393        // Init the sticky sidebar(s).
3394        function init(options, $that) {
3395            options.initialized = true;
3396
3397            // Add CSS
3398            var existingStylesheet = $('#theia-sticky-sidebar-stylesheet-' + options.namespace);
3399            if (existingStylesheet.length === 0) {
3400                $('head').append($('<style id="theia-sticky-sidebar-stylesheet-' + options.namespace + '">.theiaStickySidebar:after {content: ""; display: table; clear: both;}</style>'));
3401            }
3402
3403            $that.each(function () {
3404                var o = {};
3405
3406                o.sidebar = $(this);
3407
3408                // Save options
3409                o.options = options || {};
3410
3411                // Get container
3412                o.container = $(o.options.containerSelector);
3413                if (o.container.length == 0) {
3414                    o.container = o.sidebar.parent();
3415                }
3416
3417                // Create sticky sidebar
3418                o.sidebar.parents().css('-webkit-transform', 'none'); // Fix for WebKit bug - https://code.google.com/p/chromium/issues/detail?id=20574
3419                o.sidebar.css({
3420                    'position': o.options.defaultPosition,
3421                    'overflow': 'visible',
3422                    // The "box-sizing" must be set to "content-box" because we set a fixed height to this element when the sticky 
3422sidebar has a fixed position.
3423                    '-webkit-box-sizing': 'border-box',
3424                    '-moz-box-sizing': 'border-box',
3425                    'box-sizing': 'border-box'
3426                });
3427
3428                // Get the sticky sidebar element. If none has been found, then create one.
3429                o.stickySidebar = o.sidebar.find('.theiaStickySidebar');
3430                if (o.stickySidebar.length == 0) {
3431                    // Remove <script> tags, otherwise they will be run again when added to the stickySidebar.
3432                    var javaScriptMIMETypes = /(?:text|application)\/(?:x-)?(?:javascript|ecmascript)/i;
3433                    o.sidebar.find('script').filter(function (index, script) {
3434                        return script.type.length === 0 || script.type.match(javaScriptMIMETypes);
3435                    }).remove();
3436
3437                    o.stickySidebar = $('<div>').addClass('theiaStickySidebar').append(o.sidebar.children());
3438                    o.sidebar.append(o.stickySidebar);
3439                }
3440
3441                // Get existing top and bottom margins and paddings
3442                o.marginBottom = parseInt(o.sidebar.css('margin-bottom'));
3443                o.paddingTop = parseInt(o.sidebar.css('padding-top'));
3444                o.paddingBottom = parseInt(o.sidebar.css('padding-bottom'));
3445
3446                // Add a temporary padding rule to check for collapsable margins.
3447                var collapsedTopHeight = o.stickySidebar.offset().top;
3448                var collapsedBottomHeight = o.stickySidebar.outerHeight();
3449                o.stickySidebar.css('padding-top', 1);
3450                o.stickySidebar.css('padding-bottom', 1);
3451                collapsedTopHeight -= o.stickySidebar.offset().top;
3452                collapsedBottomHeight = o.stickySidebar.outerHeight() - collapsedBottomHeight - collapsedTopHeight;
3453                if (collapsedTopHeight == 0) {
3454                    o.stickySidebar.css('padding-top', 0);
3455                    o.stickySidebarPaddingTop = 0;
3456                }
3457                else {
3458                    o.stickySidebarPaddingTop = 1;
3459                }
3460
3461                if (collapsedBottomHeight == 0) {
3462                    o.stickySidebar.css('padding-bottom', 0);
3463                    o.stickySidebarPaddingBottom = 0;
3464                }
3465                else {
3466                    o.stickySidebarPaddingBottom = 1;
3467                }
3468
3469                // We use this to know whether the user is scrolling up or down.
3470                o.previousScrollTop = null;
3471
3472                // Scroll top (value) when the sidebar has fixed position.
3473                o.fixedScrollTop = 0;
3474
3475                // Set sidebar to default values.
3476                resetSidebar();
3477
3478                o.onScroll = function (o) {
3479                    // Stop if the sidebar isn't visible.
3480                    if (!o.stickySidebar.is(":visible")) {
3481                        return;
3482                    }
3483
3484                    // Stop if the window is too small.
3485                    if ($('body').width() < o.options.minWidth) {
3486                        resetSidebar();
3487                        return;
3488                    }
3489
3490                    // Stop if the sidebar width is larger than the container width (e.g. the theme is responsive and the sidebar is now below the content)
3491                    if (o.options.disableOnResponsiveLayouts) {
3492                        var sidebarWidth = o.sidebar.outerWidth(o.sidebar.css('float') == 'none');
3493
3494                        if (sidebarWidth + 50 > o.container.width()) {
3495                            resetSidebar();
3496                            return;
3497                        }
3498                    }
3499
3500                    var scrollTop = $(document).scrollTop();
3501                    var position = 'static';
3502
3503                    // If the user has scrolled down enough for the sidebar to be clipped at the top, then we can consider changing its position.
3504                    if (scrollTop >= o.sidebar.offset().top + (o.paddingTop - o.options.additionalMarginTop)) {
3505                        // The top and bottom offsets, used in various calculations.
3506                        var offsetTop = o.paddingTop + options.additionalMarginTop;
3507                        var offsetBottom = o.paddingBottom + o.marginBottom + options.additionalMarginBottom;
3508
3509                        // All top and bottom positions are relative to the window, not to the parent elemnts.
3510                        var containerTop = o.sidebar.offset().top;
3511                        var containerBottom = o.sidebar.offset().top + getClearedHeight(o.container);
3512
3513                        // The top and bottom offsets relative to the window screen top (zero) and bottom (window height).
3514                        var windowOffsetTop = 0 + options.additionalMarginTop;
3515                        var windowOffsetBottom;
3516
3517                        var sidebarSmallerThanWindow = (o.stickySidebar.outerHeight() + offsetTop + offsetBottom) < $(window).height();
3518                        if (sidebarSmallerThanWindow) {
3519                            windowOffsetBottom = windowOffsetTop + o.stickySidebar.outerHeight();
3520                        }
3521                        else {
3522                            windowOffsetBottom = $(window).height() - o.marginBottom - o.paddingBottom - options.additionalMarginBottom;
3523                        }
3524
3525                        var staticLimitTop = containerTop - scrollTop + o.paddingTop;
3526                        var staticLimitBottom = containerBottom - scrollTop - o.paddingBottom - o.marginBottom;
3527
3528                        var top = o.stickySidebar.offset().top - scrollTop;
3529                        var scrollTopDiff = o.previousScrollTop - scrollTop;
3530
3531                        // If the sidebar position is fixed, then it won't move up or down by itself. So, we manually adjust the top coordinate.
3532                        if (o.stickySidebar.css('position') == 'fixed') {
3533                            if (o.options.sidebarBehavior == 'modern') {
3534                                top += scrollTopDiff;
3535                            }
3536                        }
3537
3538                        if (o.options.sidebarBehavior == 'stick-to-top') {
3539                            top = options.additionalMarginTop;
3540                        }
3541
3542                        if (o.options.sidebarBehavior == 'stick-to-bottom') {
3543                            top = windowOffsetBottom - o.stickySidebar.outerHeight();
3544                        }
3545
3546                        if (scrollTopDiff > 0) { // If the user is scrolling up.
3547                            top = Math.min(top, windowOffsetTop);
3548                        }
3549                        else { // If the user is scrolling down.
3550                            top = Math.max(top, windowOffsetBottom - o.stickySidebar.outerHeight());
3551                        }
3552
3553                        top = Math.max(top, staticLimitTop);
3554
3555                        top = Math.min(top, staticLimitBottom - o.stickySidebar.outerHeight());
3556
3557                        // If the sidebar is the same height as the container, we won't use fixed positioning.
3558                        var sidebarSameHeightAsContainer = o.container.height() == o.stickySidebar.outerHeight();
3559
3560                        if (!sidebarSameHeightAsContainer && top == windowOffsetTop) {
3561                            position = 'fixed';
3562                        }
3563                        else if (!sidebarSameHeightAsContainer && top == windowOffsetBottom - o.stickySidebar.outerHeight()) {
3564                            position = 'fixed';
3565                        }
3566                        else if (scrollTop + top - o.sidebar.offset().top - o.paddingTop <= options.additionalMarginTop) {
3567                            // Stuck to the top of the page. No special behavior.
3568                            position = 'static';
3569                        }
3570                        else {
3571                            // Stuck to the bottom of the page.
3572                            position = 'absolute';
3573                        }
3574                    }
3575
3576                    /*
3577                     * Performance notice: It's OK to set these CSS values at each resize/scroll, even if they don't change.
3578                     * It's way slower to first check if the values have changed.
3579                     */
3580                    if (position == 'fixed') {
3581                        var scrollLeft = $(document).scrollLeft();
3582
3583                        o.stickySidebar.css({
3584                            'position': 'fixed',
3585                            'width': getWidthForObject(o.stickySidebar) + 'px',
3586                            'transform': 'translateY(' + top + 'px)',
3587                            'left': (o.sidebar.offset().left + parseInt(o.sidebar.css('padding-left')) - scrollLeft) + 'px',
3588                            'top': '0px'
3589                        });
3590                    }
3591                    else if (position == 'absolute') {
3592                        var css = {};
3593
3594                        if (o.stickySidebar.css('position') != 'absolute') {
3595                            css.position = 'absolute';
3596                            css.transform = 'translateY(' + (scrollTop + top - o.sidebar.offset().top - o.stickySidebarPaddingTop - o.stickySidebarPaddingBottom) + 'px)';
3597                            css.top = '0px';
3598                        }
3599
3600                        css.width = getWidthForObject(o.stickySidebar) + 'px';
3601                        css.left = '';
3602
3603                        o.stickySidebar.css(css);
3604                    }
3605                    else if (position == 'static') {
3606                        resetSidebar();
3607                    }
3608
3609                    if (position != 'static') {
3610                        if (o.options.updateSidebarHeight == true) {
3611                            o.sidebar.css({
3612                                'min-height': o.stickySidebar.outerHeight() + o.stickySidebar.offset().top - o.sidebar.offset().top + o.paddingBottom
3613                            });
3614                        }
3615                    }
3616
3617                    o.previousScrollTop = scrollTop;
3618                };
3619
3620                // Initialize the sidebar's position.
3621                o.onScroll(o);
3622
3623                // Recalculate the sidebar's position on every scroll and resize.
3624                $(document).on('scroll.' + o.options.namespace, function (o) {
3625                    return function () {
3626                        o.onScroll(o);
3627                    };
3628                }(o));
3629                $(window).on('resize.' + o.options.namespace, function (o) {
3630                    return function () {
3631                        o.stickySidebar.css({'position': 'static'});
3632                        o.onScroll(o);
3633                    };
3634                }(o));
3635
3636                // Recalculate the sidebar's position every time the sidebar changes its size.
3637                if (typeof ResizeSensor !== 'undefined') {
3638                    new ResizeSensor(o.stickySidebar[0], function (o) {
3639                        return function () {
3640                            o.onScroll(o);
3641                        };
3642                    }(o));
3643                }
3644
3645                // Reset the sidebar to its default state
3646                function resetSidebar() {
3647                    o.fixedScrollTop = 0;
3648                    o.sidebar.css({
3649                        'min-height': '1px'
3650                    });
3651                    o.stickySidebar.css({
3652                        'position': 'static',
3653                        'width': '',
3654                        'transform': 'none'
3655                    });
3656                }
3657
3658                // Get the height of a div as if its floated children were cleared. Note that this function fails if the floats are more than one level deep.
3659                function getClearedHeight(e) {
3660                    var height = e.height();
3661
3662                    e.children().each(function () {
3663                        height = Math.max(height, $(this).height());
3664                    });
3665
3666                    return height;
3667                }
3668            });
3669        }
3670
3671        function getWidthForObject(object) {
3672            var width;
3673
3674            try {
3675                width = object[0].getBoundingClientRect().width;
3676            }
3677            catch (err) {
3678            }
3679
3680            if (typeof width === "undefined") {
3681                width = object.width();
3682            }
3683
3684            return width;
3685        }
3686
3687        return this;
3688    }
3689})(jQuery);
3690
3691//# sourceMappingURL=maps/theia-sticky-sidebar.js.map
3692;
3693jQuery(document).ready(function($){
3694
3695  /* MEan Menu */
3696  jQuery('#main-nav').meanmenu({
3697    meanMenuContainer: '.main-navigation-holder',
3698    meanScreenWidth:"767"
3699  });
3700
3701  /* slick slider */
3702  $('.main-blog-slider').slick();
3703
3704  $('.main-slider-nav').slick();
3705
3706  /* show/hide search form  */
3707  jQuery(".search-box").hide();
3708
3709  jQuery(".search-btn").click(function(e) {
3710
3711    var parent_element = $(this).parent();
3712
3713    parent_element.children('.search-box').slideToggle('slow');
3714
3715    parent_element.toggleClass('open');
3716
3717    e.preventDefault();
3718
3719  });
3720
3721  /* Scroll to top */
3722  var $scroll_obj = $( '#btn-gotop' );
3723
3724  $( window ).scroll(function(){
3725
3726    if ( $( this ).scrollTop() > 100 ) {
3727
3728      $scroll_obj.fadeIn();
3729
3730    } else {
3731
3732      $scroll_obj.fadeOut();
3733
3734    }
3735
3736  });
3737
3738  $scroll_obj.click(function(){
3739
3740    $( 'html, body' ).animate( { scrollTop: 0 }, 600 );
3741
3742    return false;
3743
3744  });  
3745
3746  /* Sticky sidebar */
3747  var main_ref = $("body");
3748  
3749  if( main_ref.hasClass( 'sticky-sidebar-enabled' ) ){
3750
3751    $( '#primary, #sidebar-primary' ).theiaStickySidebar();
3752    
3753  }
3754
3755  //For news carousel
3756  $('.carousel-enabled .grid-news-items').slick({
3757    dots: false,
3758    infinite: true,
3759    speed: 600,
3760    slidesToShow: 3,
3761    arrows:true,
3762    autoplay:true,
3763    slidesToScroll: 1,
3764    responsive: [
3765      {
3766        breakpoint: 1024,
3767        settings: {
3768          slidesToShow: 2,
3769          slidesToScroll: 2,
3770          infinite: true,
3771          dots: false
3772        }
3773      },
3774      {
3775        breakpoint: 481,
3776        settings: {
3777          slidesToShow: 1,
3778          slidesToScroll: 1
3779        }
3780      }
3781    ]
3782  });
3783
3784  //For breaking news carousel
3785  $('#breaking-news').slick({
3786      autoplay: true,
3787      autoplaySpeed: 5000,
3788      dots: false,
3789      slidesToShow: 1,
3790      slidesToScroll: 1,
3791      vertical: true,
3792      arrows:true,
3793      adaptiveHeight: true,
3794  });
3795
3796});;
3797!function(e){var n=function(){var e,n,t,d;"undefined"!=typeof FB&&FB.XFBML?FB.XFBML.parse():((e=document.createElement("div")).id="fb-root",document.getElementsByTagName("body")[0].appendChild(e),n="//connect.facebook.net/"+jpfbembed.locale+"/sdk.js#xfbml=1",jpfbembed.appid&&(n+="&appId="+jpfbembed.appid),n+="&version=v2.3",(t=document.createElement("script")).setAttribute("src",n),(d=document.querySelector("script")).parentNode.insertBefore(t,d))};e.fbAsyncInit=function(){FB.init({appId:jpfbembed.appid,version:"v2.3"}),FB.XFBML.parse()},"undefined"!=typeof infiniteScroll&&document.body.addEventListener("post-load",n),n()}(window);;
3798// For compatibility with optimizers
3799if (document.readyState !== 'loading') {
3800    //console.log('Newsletter loaded (late)');
3801    tnp_ajax_init();
3802} else {
3803    document.addEventListener("DOMContentLoaded", function () {
3804        //console.log('Newsletter loaded');
3805        tnp_ajax_init();
3806    });
3807}
3808
3809function tnp_ajax_init() {
3810    document.querySelectorAll('form.tnp-ajax').forEach(el => {
3811        el.addEventListener('submit', async function(ev) {
3812            ev.preventDefault();
3813            ev.stopPropagation();
3814            const response = await fetch(newsletter_data.action_url + '?action=tnp&na=sa', {
3815                method: "POST",
3816                body: new FormData(this)
3817            });
3818            this.innerHTML = await response.text();
3819        });
3820    });
3821}
3822
3823
3824
3825;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.