(function ($) { 'use strict'; /** * All of the code for your public-facing JavaScript source * should reside in this file. * * Note: It has been assumed you will write jQuery code here, so the * $ function reference has been prepared for usage within the scope * of this function. * * This enables you to define handlers, for when the DOM is ready: * * $(function() { * * }) ; * * When the window is loaded: * * $( window ).load(function() { * * }) ; * * ...and/or other possibilities. * * Ideally, it is not considered best practise to attach more than a * single DOM-ready or window-load handler for a particular page. * Although scripts in the WordPress core, Plugins and Themes may be * practising this, we should strive to set a better example in our own work. */ jQuery(document).ready(function () { /************** Initialize dark mode toggle before accesskey mapping **************/ litespeed_init_dark_mode(); /************** Common LiteSpeed JS **************/ // Link confirm $('[data-litespeed-cfm]').on('click', function (event) { var cfm_txt = $.trim($(this).data('litespeed-cfm')).replace(/\\n/g, '\n'); if (cfm_txt === '') { return true; } if (confirm(cfm_txt)) { return true; } event.preventDefault(); event.stopImmediatePropagation(); return false; }); /************** LSWCP JS ****************/ // page tab switch functionality (function () { var hash = window.location.hash.substr(1); var $tabs = $('[data-litespeed-tab]'); var $subtabs = $('[data-litespeed-subtab]'); // Handle tab and subtab events var tab_action = function ($elems, type) { type = litespeed_tab_type(type); var data = 'litespeed-' + type; $elems.on('click', function (_event) { litespeed_display_tab($(this).data(data), type); document.cookie = 'litespeed_' + type + '=' + $(this).data(data); $(this).blur(); }); }; tab_action($tabs); tab_action($subtabs, 'subtab'); if (!$tabs.length > 0) { // No tabs exist return; } // Find hash in tabs and subtabs var $hash_tab = $tabs.filter('[data-litespeed-tab="' + hash + '"]:first'); var $hash_subtab = $subtabs.filter('[data-litespeed-subtab="' + hash + '"]:first'); // Find tab name var $subtab; var $tab; var tab_name; if ($hash_subtab.length > 0) { // Hash is a subtab $tab = $hash_subtab.closest('[data-litespeed-layout]'); if ($tab.length > 0) { $subtab = $hash_subtab; tab_name = $tab.data('litespeed-layout'); } } if (typeof $tab === 'undefined' || $tab.length < 1) { // Maybe hash is a tab $tab = $hash_tab; if ($tab.length < 1) { // Maybe tab cookie exists $tab = litespeed_tab_cookie($tabs); if ($tab.length < 1) { // Use the first tab by default $tab = $tabs.first(); } } if (typeof tab_name === 'undefined') { tab_name = $tab.data('litespeed-tab'); } } // Always display a tab litespeed_display_tab(tab_name); // Find subtab name if (typeof $subtab === 'undefined' || $subtab.length < 1) { $subtab = litespeed_tab_cookie($subtabs, 'subtab'); } if ($subtab.length > 0) { var subtab_name = $subtab.data('litespeed-subtab'); // Display a subtab litespeed_display_tab(subtab_name, 'subtab'); } })(); /******************** Clear whm msg ********************/ $(document).on('click', '.lscwp-whm-notice .notice-dismiss', function () { $.get(litespeed_data.ajax_url_dismiss_whm); }); /******************** Clear rule conflict msg ********************/ $(document).on('click', '.lscwp-notice-ruleconflict .notice-dismiss', function () { $.get(litespeed_data.ajax_url_dismiss_ruleconflict); }); /** Accesskey **/ $('[litespeed-accesskey]').map(function () { var thiskey = $(this).attr('litespeed-accesskey'); if (thiskey == '') { return; } // Append shortcut info to existing title or set default var currentTitle = $(this).attr('title'); if (currentTitle) { $(this).attr('title', currentTitle + ' (Shortcut: ' + thiskey.toLocaleUpperCase() + ')'); } else { $(this).attr('title', 'Shortcut : ' + thiskey.toLocaleUpperCase()); } var that = this; $(document).on('keydown', function (e) { if ($(':input:focus').length) return; if (e.metaKey || e.ctrlKey || e.altKey || e.shiftKey) return; if (e.key && e.key.toLowerCase() === thiskey.toLowerCase()) { $(that)[0].click(); } }); }); /** Lets copy one more submit button **/ if ($('input[name="LSCWP_CTRL"]').length > 0) { var btn = $('input.litespeed-duplicate-float'); btn.clone().addClass('litespeed-float-submit').removeAttr('id').insertAfter(btn); } if ($('input[id="LSCWP_NONCE"]').length > 0) { $('input[id="LSCWP_NONCE"]').removeAttr('id'); } /** * Human readable time conversation * @since 3.0 */ if ($('[data-litespeed-readable]').length > 0) { $('[data-litespeed-readable]').each(function (index, el) { var that = this; var $input = $(this).siblings('input[type="text"]'); var txt = litespeed_readable_time($input.val()); $(that).html(txt ? '= ' + txt : ''); $input.on('keyup', function (event) { var txt = litespeed_readable_time($(this).val()); $(that).html(txt ? '= ' + txt : ''); }); }); } /** * Click only once */ if ($('[data-litespeed-onlyonce]').length > 0) { $('[data-litespeed-onlyonce]').on('click', function (e) { if ($(this).hasClass('disabled')) { e.preventDefault(); } $(this).addClass('disabled'); }); } }); })(jQuery); /** * Plural handler */ function litespeed_plural($num, $txt) { if ($num > 1) return $num + ' ' + $txt + 's'; return $num + ' ' + $txt; } /** * Convert seconds to readable time */ function litespeed_readable_time(seconds) { if (seconds < 60) { return ''; } var second = Math.floor(seconds % 60); var minute = Math.floor((seconds / 60) % 60); var hour = Math.floor((seconds / 3600) % 24); var day = Math.floor((seconds / 3600 / 24) % 7); var week = Math.floor(seconds / 3600 / 24 / 7); var str = ''; if (week) str += ' ' + litespeed_plural(week, 'week'); if (day) str += ' ' + litespeed_plural(day, 'day'); if (hour) str += ' ' + litespeed_plural(hour, 'hour'); if (minute) str += ' ' + litespeed_plural(minute, 'minute'); if (second) str += ' ' + litespeed_plural(second, 'second'); return str; } /** * Normalize specified tab type * @since 4.7 */ function litespeed_tab_type(type) { return 'subtab' === type ? type : 'tab'; } /** * Sniff cookies for tab and subtab * @since 4.7 */ function litespeed_tab_cookie($elems, type) { type = litespeed_tab_type(type); var re = new RegExp('(?:^|.*;)\\s*litespeed_' + type + '\\s*=\\s*([^;]*).*$|^.*$', 'ms'); var name = document.cookie.replace(re, '$1'); return $elems.filter('[data-litespeed-' + type + '="' + name + '"]:first'); } function litespeed_display_tab(name, type) { type = litespeed_tab_type(type); var $tabs; var $layouts; var classname; var layout_type; if ('subtab' === type) { classname = 'focus'; layout_type = 'sublayout'; $tabs = jQuery('[data-litespeed-subtab="' + name + '"]') .siblings('[data-litespeed-subtab]') .addBack(); $layouts = jQuery('[data-litespeed-sublayout="' + name + '"]') .siblings('[data-litespeed-sublayout]') .addBack(); } else { // Maybe handle subtabs var $subtabs = jQuery('[data-litespeed-layout="' + name + '"] [data-litespeed-subtab]'); if ($subtabs.length > 0) { // Find subtab name var $subtab = litespeed_tab_cookie($subtabs, 'subtab'); if ($subtab.length < 1) { $subtab = jQuery('[data-litespeed-layout="' + name + '"] [data-litespeed-subtab]:first'); } if ($subtab.length > 0) { var subtab_name = $subtab.data('litespeed-subtab'); // Display a subtab litespeed_display_tab(subtab_name, 'subtab'); } } classname = 'nav-tab-active'; layout_type = 'layout'; $tabs = jQuery('[data-litespeed-tab]'); $layouts = jQuery('[data-litespeed-layout]'); } $tabs.removeClass(classname); $tabs.filter('[data-litespeed-' + type + '="' + name + '"]').addClass(classname); $layouts.hide(); $layouts.filter('[data-litespeed-' + layout_type + '="' + name + '"]').show(); } function litespeed_copy_to_clipboard(elementId, clickedElement) { var range = document.createRange(); range.selectNode(document.getElementById(elementId)); window.getSelection().removeAllRanges(); window.getSelection().addRange(range); document.execCommand('copy'); window.getSelection().removeAllRanges(); clickedElement.setAttribute('aria-label', 'Copied!'); } // Dark mode toggle functionality function litespeed_init_dark_mode() { 'use strict'; // Only add toggle on LiteSpeed pages if (window.location.search.indexOf('page=litespeed') === -1) return; // Create toggle button var toggleBtn = document.createElement('button'); toggleBtn.className = 'litespeed-dark-mode-toggle'; toggleBtn.setAttribute('title', 'Toggle Dark Mode'); toggleBtn.setAttribute('aria-label', 'Toggle Dark Mode'); toggleBtn.setAttribute('litespeed-accesskey', 'z'); toggleBtn.setAttribute('data-litespeed-noprefix', true); function applyDarkMode() { var prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; var savedPreference = localStorage.getItem('litespeed-dark-preference'); var isDark = savedPreference ? savedPreference === 'dark' : prefersDark; // Determine needed class (only when overriding browser preference) var needsClass; if (savedPreference === 'dark' && !prefersDark) { needsClass = 'litespeed-darkmode'; } else if (savedPreference === 'light' && prefersDark) { needsClass = 'litespeed-lightmode'; } // Only update DOM if class needs to change if (needsClass) { if (!document.body.classList.contains(needsClass)) { document.body.classList.remove('litespeed-darkmode', 'litespeed-lightmode'); document.body.classList.add(needsClass); } } else { if (document.body.classList.contains('litespeed-darkmode') || document.body.classList.contains('litespeed-lightmode')) { document.body.classList.remove('litespeed-darkmode', 'litespeed-lightmode'); } } // Update button icon toggleBtn.innerHTML = isDark ? '☀️' : '🌙'; } // Initialize applyDarkMode(); // Toggle handler toggleBtn.addEventListener('click', function() { var prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; var savedPreference = localStorage.getItem('litespeed-dark-preference'); var currentlyDark = savedPreference ? savedPreference === 'dark' : prefersDark; // Toggle and store only if different from browser preference if (!currentlyDark === prefersDark) { localStorage.removeItem('litespeed-dark-preference'); } else { localStorage.setItem('litespeed-dark-preference', currentlyDark ? 'light' : 'dark'); } applyDarkMode(); }); // Listen for system theme changes if (window.matchMedia) { window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', applyDarkMode); } // Add to page document.body.appendChild(toggleBtn); } /*! * vue-resource v1.4.0 * https://github.com/pagekit/vue-resource * Released under the MIT License. */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.VueResource=e()}(this,function(){"use strict";var t=2;function e(e){this.state=t,this.value=void 0,this.deferred=[];var n=this;try{e(function(t){n.resolve(t)},function(t){n.reject(t)})}catch(t){n.reject(t)}}e.reject=function(t){return new e(function(e,n){n(t)})},e.resolve=function(t){return new e(function(e,n){e(t)})},e.all=function(t){return new e(function(n,o){var r=0,i=[];function s(e){return function(o){i[e]=o,(r+=1)===t.length&&n(i)}}0===t.length&&n(i);for(var u=0;u=200&&a<300,this.status=a||0,this.statusText=c||"",this.headers=new q(u),this.body=t,d(t)?this.bodyText=t:(i=t,"undefined"!=typeof Blob&&i instanceof Blob&&(this.bodyBlob=t,(0===(r=t).type.indexOf("text")||-1!==r.type.indexOf("json"))&&(this.bodyText=(n=t,new o(function(t){var e=new FileReader;e.readAsText(n),e.onload=function(){t(e.result)}})))))};L.prototype.blob=function(){return v(this.bodyBlob)},L.prototype.text=function(){return v(this.bodyText)},L.prototype.json=function(){return v(this.text(),function(t){return JSON.parse(t)})},Object.defineProperty(L.prototype,"data",{get:function(){return this.body},set:function(t){this.body=t}});var B=function(t){var e;this.body=null,this.params={},w(this,t,{method:(e=t.method||"GET",e?e.toUpperCase():"")}),this.headers instanceof q||(this.headers=new q(this.headers))};B.prototype.getUrl=function(){return $(this)},B.prototype.getBody=function(){return this.body},B.prototype.respondWith=function(t,e){return new L(t,w(e||{},{url:this.getUrl()}))};var M={"Content-Type":"application/json;charset=utf-8"};function N(t){var e=this||{},n=function(t){var e=[I],n=[];function r(r){for(;e.length;){var i=e.pop();if(l(i)){var s=void 0,u=void 0;if(m(s=i.call(t,r,function(t){return u=t})||u))return new o(function(e,o){n.forEach(function(e){s=v(s,function(n){return e.call(t,n)||n},o)}),v(s,e,o)},t);l(s)&&n.unshift(s)}else c="Invalid interceptor of type "+typeof i+", must be a function","undefined"!=typeof console&&a&&console.warn("[VueResource warn]: "+c)}var c}return m(t)||(t=null),r.use=function(t){e.push(t)},r}(e.$vm);return function(t){u.call(arguments,1).forEach(function(e){for(var n in e)void 0===t[n]&&(t[n]=e[n])})}(t||{},e.$options,N.options),N.interceptors.forEach(function(t){d(t)&&(t=N.interceptor[t]),l(t)&&n.use(t)}),n(new B(t)).then(function(t){return t.ok?t:o.reject(t)},function(t){var e;return t instanceof Error&&(e=t,"undefined"!=typeof console&&console.error(e)),o.reject(t)})}function D(t,e,n,o){var r=this||{},i={};return g(n=w({},D.actions,n),function(n,s){n=T({url:t,params:w({},e)},o,n),i[s]=function(){return(r.$http||N)(function(t,e){var n,o=w({},t),r={};switch(e.length){case 2:r=e[0],n=e[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(o.method)?n=e[0]:r=e[0];break;case 0:break;default:throw"Expected up to 2 arguments [params, body], got "+e.length+" arguments"}return o.body=n,o.params=w({},o.params,r),o}(n,arguments))}}),i}function J(t){var e,n,r;J.installed||(n=(e=t).config,r=e.nextTick,i=r,a=n.debug||!n.silent,t.url=$,t.http=N,t.resource=D,t.Promise=o,Object.defineProperties(t.prototype,{$url:{get:function(){return b(t.url,this,this.$options.url)}},$http:{get:function(){return b(t.http,this,this.$options.http)}},$resource:{get:function(){return t.resource.bind(this)}},$promise:{get:function(){var e=this;return function(n){return new t.Promise(n,e)}}}}))}return N.options={},N.headers={put:M,post:M,patch:M,delete:M,common:{Accept:"application/json, text/plain, */*"},custom:{}},N.interceptor={before:function(t){l(t.before)&&t.before.call(this,t)},method:function(t){t.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(t.method)&&(t.headers.set("X-HTTP-Method-Override",t.method),t.method="POST")},jsonp:function(t){"JSONP"==t.method&&(t.client=A)},json:function(t){var e=t.headers.get("Content-Type")||"";return m(t.body)&&0===e.indexOf("application/json")&&(t.body=JSON.stringify(t.body)),function(t){return t.bodyText?v(t.text(),function(e){var n,o;if(0===(t.headers.get("Content-Type")||"").indexOf("application/json")||(o=(n=e).match(/^\s*(\[|\{)/))&&{"[":/]\s*$/,"{":/}\s*$/}[o[1]].test(n))try{t.body=JSON.parse(e)}catch(e){t.body=null}else t.body=e;return t}):t}},form:function(t){var e;e=t.body,"undefined"!=typeof FormData&&e instanceof FormData?t.headers.delete("Content-Type"):m(t.body)&&t.emulateJSON&&(t.body=$.params(t.body),t.headers.set("Content-Type","application/x-www-form-urlencoded"))},header:function(t){g(w({},N.headers.common,t.crossOrigin?{}:N.headers.custom,N.headers[p(t.method)]),function(e,n){t.headers.has(n)||t.headers.set(n,e)})},cors:function(t){if(c){var e=$.parse(location.href),n=$.parse(t.getUrl());n.protocol===e.protocol&&n.host===e.host||(t.crossOrigin=!0,t.emulateHTTP=!1,R||(t.client=U))}}},N.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach(function(t){N[t]=function(e,n){return this(w(n||{},{url:e,method:t}))}}),["post","put","patch"].forEach(function(t){N[t]=function(e,n,o){return this(w(o||{},{url:e,method:t,body:n}))}}),D.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(J),J}); /*Click Away*/ !function(e,t){"use strict";function n(e,t,n){i(e);var u=n.context,a=t.value;if("function"==typeof a){var c=!1;setTimeout(function(){c=!0},0),e[o]=function(t){var n=t.path||(t.composedPath?t.composedPath():void 0);if(c&&(n?n.indexOf(e)<0:!e.contains(t.target)))return a.call(u,t)},document.documentElement.addEventListener("click",e[o],!1)}}function i(e){document.documentElement.removeEventListener("click",e[o],!1),delete e[o]}t="default"in t?t.default:t;/^2\./.test(t.version)||t.util.warn("VueClickaway 2.2.2 only supports Vue 2.x, and does not support Vue "+t.version);var o="_vue_clickaway_handler",u={bind:n,update:function(e,t){t.value!==t.oldValue&&n(e,t)},unbind:i},a={directives:{onClickaway:u}};e.version="2.2.2",e.directive=u,e.mixin=a}(this.VueClickaway={},Vue); Page not found | Blessed Elena Academy

Oops! That page can’t be found.

Home / Error 404
404 Error