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.