/* * Javascript: EventON functions for all calendars * @version: 4.6.1 */ (function($){ // Calendar function s $.fn.evo_cal_functions = function(O){ el = this; switch(O.action){ // load shortcodes inside calendar data case 'load_shortcodes': return el.find('.evo_cal_data').data('sc'); break; case 'update_json': //console.log(O.json); el.find('.evo_cal_events').data('events', O.json); break; case 'update_shortcodes': //console.log(O.SC); el.find('.evo_cal_data').data( 'sc', O.SC ); break; } }; // access page GLOBALS $.fn.evo_get_global = function(opt){ var defaults = { S1:'', S2:''}; var OPT = $.extend({}, defaults, opt); var BUS = $('#evo_global_data').data('d'); if(!(OPT.S1 in BUS)) return false; if(!(OPT.S2 in BUS[OPT.S1])) return false; return BUS[OPT.S1][OPT.S2]; } $.fn.evo_get_txt = function(opt){ var defaults = { V:''} var OPT = $.extend({}, defaults, opt); var BUS = $('#evo_global_data').data('d'); //console.log(BUS); if(!('txt' in BUS)) return false; if(!(OPT.V in BUS.txt)) return false; return BUS.txt[OPT.V]; } // get translated text strings from ajax loaded data @4.6.4 $.fn.evo_lang = function(text){ var t = text.toLowerCase() .replace(/ /g, "_") .replace(/[^\w-]+/g, ""); var BUS = $('#evo_global_data').data('d'); if(!('txt' in BUS)) return text; if(!(t in BUS.txt)) return text; return BUS.txt[ t ]; } $.fn.evo_get_cal_def = function(opt){ var defaults = { V:''} var OPT = $.extend({}, defaults, opt); var BUS = $('#evo_global_data').data('d'); if(!('cal_def' in BUS)) return false; if(!(OPT.V in BUS.cal_def)) return false; return BUS.cal_def[OPT.V]; } // return dms translates values from global data // added 4.0 $.fn.evo_get_dms_vals = function(opt){ // type = d, d1,d3, m, m3 // V = 0-x var defaults = { type:'d', V:''} var OPT = $.extend({}, defaults, opt); var BUS = $('#evo_global_data').data('d'); if(!('dms' in BUS)) return false; if(!(OPT.type in BUS.dms)) return false; return BUS.dms[ OPT.type ][ OPT.V ]; } // GENERAL AJAX ACCESS + 4.1.2 $.fn.evo_admin_get_ajax = function(opt){ var defs = { 'lightbox_key':'', // same as lightbox class 'lightbox_loader': true, 'load_new_content': true, 'load_new_content_id': '', // @since 4.3.5 'hide_lightbox':false, // @since 4.3.5 'hide_message':2000, // @since 4.3.5 'ajaxdata':{ 'load_lbcontent':'', 'load_new_content':'' }, 'uid':'', 'end':'admin', // admin or client 'loader_el':'', 'ajax_type':'ajax', 'ajax_action':'', } var el = $(this); var OO = $.extend({}, defs, opt); var ajaxdata = OO.ajaxdata; // passing nonce ajaxdata['nn'] = ( OO.end == 'client' ) ? evo_general_params.n : evo_admin_ajax_handle.postnonce; // uid use ajax_action as backup if( OO.uid == '' && OO.ajax_action != '') OO.uid = OO.ajax_action; LB = false; if( OO.lightbox_key != '') LB = $('body').find('.evo_lightbox.'+ OO.lightbox_key); var returnvals = ''; // process action value if( 'a' in ajaxdata ) ajaxdata['action'] = ajaxdata.a; // add uid into ajax data ajaxdata['uid'] = OO.uid; // ajax url processing var ajax_url = el.evo_get_ajax_url({a: OO.ajax_action, e: OO.end, type: OO.ajax_type}); //console.log(ajaxdata); //console.log(ajax_url); $.ajax({ beforeSend: function(){ $('body').trigger('evo_ajax_beforesend_' + OO.uid ,[ OO, el ]); if( LB && OO.lightbox_loader){ LB.find('.ajde_popup_text').addClass( 'evoloading loading'); LB.find('.evolb_content').addClass( 'evoloading loading'); } if( OO.loader_el){ $( OO.loader_el ).addClass('evoloading loading'); } }, type: 'POST', url: ajax_url, data: ajaxdata, dataType:'json', success:function(data){ //return; //console.log(OO); if( LB ){ // show message if( 'msg' in data && data.msg != '' && LB){ LB.evo_lightbox_show_msg({'type': data.status, 'message':data.msg, hide_lightbox: OO.hide_lightbox, hide_message: OO.hide_message }); } // populate content if( OO.ajaxdata.load_lbcontent || OO.ajaxdata.load_new_content || OO.load_new_content ){ // populate a specific dom element with content if( OO.load_new_content_id != '' ){ $('body').find('#'+OO.load_new_content_id ).replaceWith( data.content ); }else{ LB.evo_lightbox_populate_content({content: data.content}); } } }else{ // populate content if( OO.ajaxdata.load_lbcontent || OO.ajaxdata.load_new_content || OO.load_new_content ){ // populate a specific dom element inside with content if( OO.load_new_content_id != '' ){ $('body').find('#'+OO.load_new_content_id ).html( data.content ); } } } // for SP content @since 4.5.2 if( 'sp_content' in data){ $("body").find('#evops_content').html( data.sp_content); } // SP footer content @since 4.5.2 if( 'sp_content_foot' in data){ $("body").find('.evosp_foot').html( data.sp_content_foot); } // process trumbowyg editors $('body').trigger('evo_elm_load_interactivity'); //console.log(OO); $('body').trigger('evo_ajax_success_' + OO.uid,[ OO, data , el]); },complete:function(){ $('body').trigger('evo_ajax_complete_' + OO.uid ,[ OO , el ]); if( LB && OO.lightbox_loader){ LB.find('.ajde_popup_text').removeClass( 'evoloading loading'); LB.find('.evolb_content').removeClass( 'evoloading loading'); } if( OO.loader_el){ $( OO.loader_el ).removeClass('evoloading loading'); } } }); } // submit forms via ligtbox // @since 4.2.2 @updated 4.3.5 $.fn.evo_ajax_lightbox_form_submit = function(opt){ var defs = { 'lightbox_key':'', // lightbox class 'lightbox_loader': true, // show lightbox loading animations 'uid':'', 'end':'admin', // admin or client 'hide_lightbox':false, 'hide_message':false, 'load_new_content':false, 'load_new_content_id':'', 'ajax_type':'ajax', 'ajax_action':'', } var OO = $.extend({}, defs, opt); const el = this; const form = this.closest('form'); var LB = false; if( OO.lightbox_key != '') LB = $('body').find('.evo_lightbox.'+ OO.lightbox_key); if( LB) LB.evo_lightbox_hide_msg(); //console.log(OO); var ajax_url = el.evo_get_ajax_url({a: OO.ajax_action, e: OO.end, type: OO.ajax_type}); form.ajaxSubmit({ beforeSubmit: function(opt, xhr){ $('body').trigger('evo_ajax_beforesend_' + OO.uid ,[ OO , xhr, opt]); // 4.4.2 if( LB && OO.lightbox_loader) LB.evo_lightbox_start_inloading(); }, dataType: 'json', url: ajax_url, type: 'POST', success:function(data){ $('body').trigger('evo_ajax_success_' + OO.uid,[ OO, data, el ]); if( data.status == 'good'){ if(LB && 'msg' in data){ LB.evo_lightbox_show_msg({'type': 'good', 'message':data.msg, hide_lightbox: OO.hide_lightbox, hide_message: OO.hide_message }); } // populate specific element if( OO.load_new_content && OO.load_new_content_id != ''){ $('body').find('#'+OO.load_new_content_id ).replaceWith( data.content ); }else{ // populate current lightbox if( OO.load_new_content ) LB.evo_lightbox_populate_content({content: data.content}); } // if ajax data pass dom content to be replaced with run through each and replace - @4.2.3 if( 'refresh_dom_content' in data ){ $.each(data.refresh_dom_content, function(domid, content){ $('body').find('#'+ domid).replaceWith( content); }); } }else{ LB.evo_lightbox_show_msg({'type': 'bad', 'message':data.msg}); } }, complete:function(){ $('body').trigger('evo_ajax_complete_' + OO.uid ,[ OO ]); $('body').trigger('evo_ajax_form_complete_' + OO.uid ,[ OO , form]); if( LB && OO.lightbox_loader) LB.evo_lightbox_stop_inloading(); } }); } // LIGHTBOX version 4.2 // @version 4.2 $('body').on('click','.evolb_trigger', function(event){ if( event !== undefined ){ event.preventDefault(); event.stopPropagation(); } $(this).evo_lightbox_open($(this).data('lbvals')); }); $('body').on('click','.evolb_close_btn', function (){ const LB = $(this).closest('.evo_lightbox'); LB.evo_lightbox_close(); }); // @since 4.2.2 $('body').on('click','.evolb_trigger_save, .evo_submit_form', function(event){ if( event !== undefined ){ event.preventDefault(); event.stopPropagation(); } $(this).evo_ajax_lightbox_form_submit( $(this).data('d') ); }); $('body').on('click','.evo_trigger_ajax_run', function(event){ if( event !== undefined ){ event.preventDefault(); event.stopPropagation(); } $(this).evo_admin_get_ajax( $(this).data('d') ); }); // @since 4.3.3 $('body').on('evo_lightbox_trigger', function(event, data){ $('body').evo_lightbox_open(data); }); $.fn.evo_lightbox_open = function (opt){ var defaults = { 'uid':'', 't':'', //title 'lbc':'',// * lightbox class - REQUIRED 'lbac':'',// ligthbox additional class 4.6 'lbsz':'',// lightbox size = mid small 'content':'',// passed on dynamic content 'content_id' :'',// id to get dynamic content from page 'ajax':'no',// use ajax to load content yes no 'ajax_url':'', 'd':'', // data object for ajax 'end':'admin',// admin or client end 'other_data':'', 'lightbox_loader': false, 'preload_temp_key': 'init', // 4.6 'load_new_content': true, // @since 4.3.5 'lb_padding': 'evopad30', // @4.3.5 'ajax_action':'', // @4.4 pass on ajax endpoint action key 'ajax_type':'ajax', // @4.4 ajax type, ajax, rest or endpoint }; var OO = $.extend({}, defaults, opt); const fl_footer = OO.end == 'client' ? '' :''; // create lightbox HTML var html = '

' + OO.t + '

'+fl_footer+'
'; $('#evo_lightboxes').append( html ); //console.log(OO); LIGHTBOX = $('.evo_lightbox.'+ OO.lbc); // Open lightbox on page setTimeout( function(){ $('#evo_lightboxes').show(); LIGHTBOX.addClass('show'); $('body').addClass('evo_overflow'); $('html').addClass('evo_overflow'); },300); // show loading animation LIGHTBOX.evo_lightbox_show_open_animation(OO); //return; // Load content // dynamic content within the site if(OO.content_id != ''){ var content = $('#'+ OO.content_id ).html(); LIGHTBOX.find('.evolb_content').html( content); } // load passed on content if(OO.content != ''){ LIGHTBOX.find('.evolb_content').html( OO.content); } // run ajax to load content for the lightbox inside if( OO.ajax == 'yes' && OO.d != ''){ var D = {}; D = OO.d; LB.evo_admin_get_ajax({ ajaxdata: D, ajax_action: OO.ajax_action, ajax_type: OO.ajax_type, lightbox_key: OO.lbc, uid: ( OO.uid != '' ) ? OO.uid : OO.d.uid, end: OO.end, lightbox_loader: OO.lightbox_loader, load_new_content: OO.load_new_content, }); } // load content from a AJAX file if( OO.ajax_url != ''){ $.ajax({ beforeSend: function(){}, url: OO.ajax_url, success:function(data){ LIGHTBOX.find('.evolb_content').html( data); },complete:function(){} }); } $('body').trigger('evo_lightbox_processed', [ OO, LIGHTBOX]); } $.fn.evo_lightbox_close = function (opt){ var LB = this; var defaults = { 'delay':500, 'remove_from_dom':true, }; if( !(LB.hasClass('show')) ) return; var OO = $.extend({}, defaults, opt); var hide_delay = parseInt( OO.delay); complete_close = (LB.parent().find('.evo_lightbox.show').length == 1)? true: false; if( hide_delay > 500){ setTimeout( function(){ LB.removeClass('show'); }, ( hide_delay - 500 ) ); }else{ LB.removeClass('show'); } setTimeout( function(){ if(complete_close){ $('body').removeClass('evo_overflow'); $('html').removeClass('evo_overflow'); } // remove lightbox HTML from DOM if( OO.remove_from_dom) LB.remove(); }, hide_delay); } // Other LB functions $.fn.evo_lightbox_populate_content = function(opt){ LB = this; var defaults = { 'content':'', }; var OO = $.extend({}, defaults, opt); LB.find('.evolb_content').html( OO.content ); } $.fn.evo_lightbox_start_inloading = function(opt){ LB = this; LB.find('.evolb_content').addClass('loading'); } $.fn.evo_lightbox_stop_inloading = function(opt){ LB = this; LB.find('.evolb_content').removeClass('loading'); } $.fn.evo_lightbox_show_msg = function(opt){ LB = this; var defaults = { 'type':'good', 'message':'', 'hide_message': false,// hide message after some time pass time or false 'hide_lightbox': false, // hide lightbox after some time of false }; var OO = $.extend({}, defaults, opt); LB.find('.message').removeClass('bad good').addClass( OO.type ).html( OO.message ).fadeIn(); if( OO.hide_message ) setTimeout(function(){ LB.evo_lightbox_hide_msg() }, OO.hide_message ); if( OO.hide_lightbox ) LB.evo_lightbox_close({ delay: OO.hide_lightbox }); } $.fn.evo_lightbox_hide_msg = function(opt){ LB = this; LB.find('p.message').hide(); } // add preload animations to lightbox u4.6 $.fn.evo_lightbox_show_open_animation = function(opt){ LB = this; var defaults = { 'animation_type':'initial', // animation type initial or saving 'preload_temp_key': 'init', // 4.6 passed on preload template key 'end':'admin', }; var OO = $.extend({}, defaults, opt); if( OO.animation_type == 'initial'){ passed_data = OO.end == 'admin' ? evo_admin_ajax_handle: evo_general_params; html = passed_data.html.preload_general; if( OO.preload_temp_key != 'init') html = passed_data.html[ OO.preload_temp_key ]; LB.find('.evolb_content').html( html ); } if( OO.animation_type == 'saving') LB.find('.evolb_content').addClass('loading'); } // eventcard Lightbox function v4.6 $.fn.evo_cal_lightbox_trigger = function( SC_data , obj, CAL ){ const cancel_class = ( obj.hasClass('cancel_event')) ? ' cancel_event':''; var extra_classes = ' ' + SC_data.calendar_type; // 4.6.6 var other_data = { extra_classes: 'evo_lightbox_body eventon_list_event evo_pop_body evcal_eventcard event_'+SC_data.event_id +'_'+ SC_data.repeat_interval + cancel_class + extra_classes, CAL:CAL, obj: obj, et_data: obj.find('.evoet_data').data(),// @4.5.5 SC: SC_data }; // generate a random ID for this maximum = 99; minimum = 10; var randomnumber = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; // lightbox additional class lbac = ''; if( evo_general_params.cal.lbs == 'sc1') lbac = 'within'; if( evo_general_params.cal.lbs == 'sc2') lbac = 'within ecSCR'; // AJAX via lightbox if(SC_data.ux_val == '3a'){ var new_content = ''; new_content += '
'; new_content += '
'; const box = '
'; new_content += box + box + box; new_content += '
'; var data_arg = {}; data_arg['event_id'] = SC_data.event_id; data_arg['ri'] = SC_data.repeat_interval; data_arg['SC'] = SC_data; data_arg['load_lbcontent'] = true; data_arg['action'] = 'eventon_load_single_eventcard_content'; data_arg['uid'] = 'load_single_eventcard_content_3a'; if( CAL ) data_arg['calid'] = CAL.attr('id'); //reset view to match if( data_arg.SC.tile_style == '2') data_arg.SC.eventtop_style = '0'; data_arg.SC.tile_style = '0'; data_arg.SC.tile_bg = '0'; data_arg.SC.tiles = 'no'; $('body').evo_lightbox_open({ uid:'evo_open_eventcard_lightbox', //uid:'load_single_eventcard_content_3a', lbc:'evo_eventcard_'+ randomnumber,lbac: lbac, end:'client', content: new_content, ajax:'yes', ajax_type: 'endpoint', ajax_action: 'eventon_load_single_eventcard_content', d: data_arg, other_data: other_data }); // open lightbox using page event content }else{ var content = obj.closest('.eventon_list_event').find('.event_description').html(); var _content = $(content).not('.evcal_close'); clrW = obj.closest('.eventon_list_event').hasClass('clrW') ? 'clrW':'clrB';//4.6.2 CAL.evo_lightbox_open({ uid:'evo_open_eventcard_lightbox', lbc:'evo_eventcard_'+ randomnumber,lbac: lbac, end:'client', content: '
'+ obj.html() +'
' + content +'
', other_data: other_data }); return; } } // listerners for lightbox on eventcard $.fn.evo_cal_lb_listeners = function(){ // Listerners // process various lightbox types $('body') .on('evo_lightbox_processed', function(event, OO, LIGHTBOX){ if( OO.uid != 'evo_open_eventcard_lightbox') return false; var CAL = OO.other_data.CAL; LIGHTBOX.addClass('eventcard eventon_events_list'); LIGHTBOX_content = LIGHTBOX.find('.evolb_content'); LIGHTBOX_content.attr('class', 'evolb_content '+ OO.other_data.extra_classes ); var SC = OO.other_data.SC; var obj = OO.other_data.obj; //console.log(SC); // update border color and eventtop color const evoet_data = OO.other_data.et_data; bgcolor = bggrad =''; if( evoet_data ){ bgcolor = evoet_data.bgc; bggrad = evoet_data.bggrad; } // if tiles and eventtop style set to clean var show_lightbox_color = ( SC.eventtop_style == '0' || SC.eventtop_style == '4') ? false: true; if( (CAL && CAL.hasClass('color') && show_lightbox_color) || (!CAL && show_lightbox_color) ){ LIGHTBOX_content.addClass('color'); LIGHTBOX_content.find('.evopop_top').css({ 'background-color':bgcolor, 'background-image': bggrad, }); }else{ LIGHTBOX_content.find('.evopop_top').css({'border-left':'3px solid '+bgcolor}); } // trigger if( obj.data('runjs')){ $('body').trigger('evo_load_single_event_content',[ SC.event_id, OO.other_data.obj]); } // RTL if( SC.evortl =='yes') LIGHTBOX.addClass('evortl'); $('body').trigger('evolightbox_end', [ LIGHTBOX , CAL, OO]); // @s4.6 }) // after eventcard content is loaded to lightbox via 3a - @since 4.2.3 .on('evo_ajax_success_evo_open_eventcard_lightbox', function (event, OO, data){ if( OO.ajaxdata.uid != "load_single_eventcard_content_3a") return false; LIGHTBOX = $('.evo_lightbox.'+ OO.lightbox_key); LIGHTBOX_content = LIGHTBOX.find('.evolb_content'); CAL = $('body').find('#'+ OO.ajaxdata.calid); $('body').trigger('evolightbox_end', [ LIGHTBOX , CAL, OO]); // @s4.6 }) ; } // Get Ajax url @since 4.4 @u 4.5.5 $.fn.evo_get_ajax_url = function(opt){ var defaults = { a:'', // action key e:'client', // end type: 'ajax'}; var OO = $.extend({}, defaults, opt); // end point url if( OO.type == 'endpoint'){ var evo_ajax_url = ( OO.e == 'client' )? evo_general_params.evo_ajax_url : evo_admin_ajax_handle.evo_ajax_url; return evo_ajax_url.toString().replace( '%%endpoint%%', OO.a ); // rest api url }else if( OO.type == 'rest' ){ var evo_ajax_url = ( OO.e == 'client' )? evo_general_params.rest_url : evo_admin_ajax_handle.rest_url; //console.log(evo_ajax_url); //console.log(OO); return evo_ajax_url.toString().replace( '%%endpoint%%', OO.a ); }else{ action_add = OO.a != '' ? '?action='+ OO.a: ''; return ( OO.e == 'client' ) ? evo_general_params.ajaxurl + action_add : evo_admin_ajax_handle.ajaxurl + action_add; } } // Count down // @+ 4.5 $.fn.evo_countdown_get = function(opt){ var defaults = { gap:'', endutc: ''}; var OPT = $.extend({}, defaults, opt); var gap = OPT.gap; // if gap not provided use endutc if( gap == '' ){ var Mnow = moment().utc(); var M = moment(); M.set('millisecond', OPT.endutc ); gap = OPT.endutc - Mnow.unix(); } // if negative gap if( gap < 0){ return { 'd': 0, 'h':0, 'm':0, 's':0 }; } distance = ( gap * 1000); var days = Math.floor(distance / (1000 * 60 * 60 * 24)); var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); var seconds = Math.floor((distance % (1000 * 60)) / 1000); minutes = minutes<10? '0'+minutes : minutes; seconds = seconds<10? '0'+seconds : seconds; return { 'd': days, 'h':hours, 'm':minutes, 's':seconds }; }; // @u 4.5.2 $.fn.evo_countdown = function(opt){ var defaults = { S1:''}; var OPT = $.extend({}, defaults, opt); var el = $(this); const day_text = ( el.data('d') !== undefined && el.data('d') != '' )? el.data('d'):'Day'; const days_text = ( el.data('ds') !== undefined && el.data('ds') != '' )? el.data('ds'):'Days'; // intial run //var gap = parseInt(el.data('gap')); var duration = el.data('dur'); var endutc = parseInt(el.data('endutc')); var text = el.data('t'); if(text === undefined) text = ''; if( el.hasClass('evo_cd_on')) return; // get gap using end time utc var Mnow = moment().utc(); var M = moment(); M.set('millisecond', OPT.endutc ); //console.log(Mnow.unix()); //console.log(endutc); gap = endutc - Mnow.unix(); // on initial run - event hasnt happened yet if( gap > 0 ){ // initial dd = el.evo_countdown_get({ 'gap': gap }); el.html( ( dd.d>0 ? dd.d + ' ' + ( dd.d >1 ? days_text: day_text ) + " " :'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text ); el.data('gap', ( gap - 1) ); // save new gap value el.addClass('evo_cd_on'); // set intervals var CD = setInterval(function(){ gap = el.data('gap'); // get gap for this cycle duration = el.data('dur'); const bar_elm = el.closest('.evo_event_progress').find('.evo_ep_bar'); // when timer is ticking if( gap > 0 ){ // increase bar width if exists if( duration !== undefined && bar_elm.length){ perc = ( (duration - gap)/ duration ) * 100; bar_elm.find('b').css('width',perc+'%'); } dd = el.evo_countdown_get({ 'gap': gap }); el.html( ( dd.d>0 ? dd.d + ' ' + ( dd.d >1 ? days_text: day_text ) + " ":'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text ); el.data('gap', ( gap - 1) ); // when timer expired }else{ const expire_timer_action = el.data('exp_act'); // perform ajax task after expiration if(expire_timer_action !== undefined){ $('body').trigger('runajax_refresh_now_cal',[ el , el.data('n'), ]); } const _complete_text = el.evo_get_txt({V:'event_completed'}); // live now text if(bar_elm.length){ bar_elm.addClass('evo_completed'); //el.siblings('.evo_ep_pre').html( _complete_text ); } // event tag & live elements if( el.closest('.evcal_desc').length){ el.closest('.evcal_desc').find('.eventover').html( _complete_text); el.closest('.evcal_desc').find('.evo_live_now').remove(); } // event card if( el.closest('.eventon_list_event').length){ el.closest('.eventon_list_event').find('span.evo_live_now').hide(); } el.html(''); clearInterval(CD); } },1000); // event has already passed }else{ // if gap is less el.closest('.evo_event_progress').find('.evo_ep_bar').hide(); clearInterval(CD); } }; // Handlebar process template data into html $.fn.evo_HB_process_template = function(opt){ var defaults = { TD:'', part:''} var OPT = $.extend({}, defaults, opt); BUS = $('#evo_global_data').data('d'); template = Handlebars.compile( BUS.temp[ OPT.part ] ); return template( OPT.TD ); } // Date range and events @4.6.7 // Date range and events - from webpage $.fn.evo_cal_events_in_range = function(opt){ var defaults = { S:'', E:'', hide: true, closeEC:true, showEV: false, // show events showEVL: false, // show events list showAllEvs: false // show all events regardless of the range }; var OPT = $.extend({}, defaults, opt); var CAL = $(this); var eJSON = CAL.find('.evo_cal_events').data('events'); var SC = CAL.evo_shortcode_data(); R = {}; html = ''; json = {}; show = 0; // using events JSON data if( eJSON && eJSON.length > 0){ $.each(eJSON, function(ind, ED){ eO = CAL.find('#event_'+ ED._ID); if(eO === undefined || eO.length==0) return; if(OPT.hide) eO.hide(); // pre hide this_show = false; // month long or year long events if( ED.month_long || ED.year_long ){ this_show = true; }else{ if(CAL.evo_is_in_range({ 'S': OPT.S, 'E': OPT.E, 'start': ED.unix_start , 'end':ED.unix_end })){ this_show = true; } } if( OPT.showAllEvs) this_show = true; if( this_show){ // show event if( OPT.showEV) eO.show(); // close open event cards if(OPT.closeEC && SC.evc_open == 'no') eO.find('.event_description').hide().removeClass('open'); html += eO[0].outerHTML; json[ ED._ID] = ED; show++; } }); }else{ // get all the events in the events list var cal_events = CAL.find('.eventon_list_event'); cal_events.each(function(index, elm){ var ED = $(elm).evo_cal_get_basic_eventdata(); if( !ED) return; if(OPT.hide) $(elm).hide(); // pre hide this_show = false; // month long or year long events if( $(elm).hasClass('month_long') || $(elm).hasClass('year_long') ){ this_show = true; }else{ if(CAL.evo_is_in_range({ 'S': OPT.S, 'E': OPT.E, 'start': ED.unix_start , 'end':ED.unix_end })){ this_show = true; } } if( OPT.showAllEvs) this_show = true; if( this_show){ // show event if( OPT.showEV) $(elm).show(); // close open event cards if(OPT.closeEC && SC.evc_open == 'no') $(elm).find('.event_description').hide().removeClass('open'); html += $(elm)[0].outerHTML; json[ ED.uID ] = ED; show++; } }); } // No events if( OPT.showEV){ no_event_content = CAL.evo_get_global({S1: 'html', S2:'no_events'}); tx_noevents = CAL.evo_get_txt({V:'no_events'}); EL = CAL.find('.eventon_events_list'); EL.find('.eventon_list_event.no_events').remove(); if( show == 0 ) EL.append('
'+ no_event_content +'
'); } // if show events list if( OPT.showEVL){ CAL.find('.eventon_events_list').show().removeClass('evo_hide'); } R['count'] = show; R['html'] = html; R['json'] = json; return R; } // check if an event is in the given date range $.fn.evo_is_in_range = function(opt){ var defaults = { S:'', E:'', start:'',end:''} var OPT = $.extend({}, defaults, opt); S = parseInt(OPT.S); E = parseInt(OPT.E); start = parseInt(OPT.start); end = parseInt(OPT.end); return ( ( start <= S && end >= E ) || ( start <= S && end >= S && end <= E) || ( start <= E && end >= E ) || ( start >= S && end <= E ) ) ? true: false; } $.fn.evo_cal_hide_events = function(){ CAL = $(this); CAL.find('.eventon_list_event').hide(); } // get event data basics from html event on page // ~@version 4.0.3 $.fn.evo_cal_get_basic_eventdata = function(){ var ELM = $(this); var _time = ELM.data('time'); if( _time === undefined ) return false; const time = _time.split('-'); const ri = ELM.data('ri').replace('r',''); const eID = ELM.data('event_id'); var _event_title = ELM.find('.evcal_event_title').text(); _event_title = _event_title.replace(/'/g, '''); var RR = { 'uID': eID + '_' + ri, 'ID': eID , 'event_id': eID , 'ri': ri, 'event_start_unix': parseInt(time[0]), 'event_end_unix': parseInt(time[1]), 'ux_val': ELM.find('.evcal_list_a').data('ux_val'), 'event_title': _event_title, 'hex_color': ELM.data('colr'), 'hide_et': ELM.hasClass('no_et') ? 'y':'n', // hide endtime 'evcal_event_color': ELM.data('colr'), 'unix_start': parseInt(time[0]),// @4.5.7 'unix_end': parseInt(time[1]),// @4.5.7 }; // event type RR['ett1'] = {}; ELM.find('.evoet_eventtypes.ett1 .evoetet_val').each(function(){ RR['ett1'][ $(this).data('id')] = $(this).data('v'); }); // since 4.3.5 const eventtop_data = ELM.find('.evoet_data').data('d'); // location if('loc.n' in eventtop_data && eventtop_data['loc.n'] != ''){ RR['location'] = eventtop_data['loc.n']; } // organizer if('orgs' in eventtop_data && eventtop_data.orgs !== undefined ){ var org_names = ''; $.each(eventtop_data.orgs, function(index, value){ org_names += value +' '; }); RR['organizer'] = org_names; } // event tags @s 4.5.2 if( 'tags' in eventtop_data && eventtop_data.tags !== undefined ){ //console.log(eventtop_data.tags); RR['event_tags'] = eventtop_data.tags; } return RR; } // DATE time functions @+2.8 $.fn.evo_day_in_month = function(opt){ var defaults = { M:'', Y:''} var OPT = $.extend({}, defaults, opt); return new Date(OPT.Y, OPT.M, 0).getDate(); } $.fn.evo_get_day_name_index = function(opt){ var defaults = { M:'', Y:'', D:''} var OPT = $.extend({}, defaults, opt); //return moment(OPT.Y+'-'+OPT.M+'-'+OPT.D).utc().day(); return new Date( Date.UTC(OPT.Y, OPT.M-1, OPT.D) ).getUTCDay(); } // LIGHTBOX // page Lightbox functions @+2.8 // append to the lightbox main class name .evo_lightbox // Legacy $.fn.evo_prepare_lb = function(){ $(this).find('.evo_lightbox_body').html(''); } $.fn.evo_show_lb = function(opt){ var defaults = { RTL:'', calid:''} var OPT = $.extend({}, defaults, opt); $(this).addClass('show '+ OPT.RTL).attr('data-cal_id', OPT.calid); $('body').trigger('evolightbox_show'); } $.fn.evo_append_lb = function(opt){ var defaults = { C:'', CAL:''} var OPT = $.extend({}, defaults, opt); $(this).find('.evo_lightbox_body').html( OPT.C); if( OPT.CAL!= '' && OPT.CAL !== undefined && OPT.CAL.hasClass('color')){ const LIST = $(this).find('.eventon_events_list'); if( LIST.length>0){ LIST.find('.eventon_list_event').addClass('color'); } } } // event image gallery @4.6 // adjust event image height on lightbox $.fn.eventon_check_img_size_on_lb = function( ){ LB = this; winH = parseInt($( window ).height()); winW = parseInt($( window ).width()); var pad = 50; if( winW < 650) pad = 20; if( winW < 500) pad = 10; winH -= pad*2; winW -= pad*2; LB = $('body').find('.evolb_ft_img'); WINratio = winH/winW; const IMG = LB.find('img'); IMGratio = parseInt( IMG.data('h') )/ parseInt( IMG.data('w') ); img_relative_w = parseInt(winH/IMGratio); if(WINratio < 1 ){// wider window if(IMGratio<1){// wider image if(img_relative_w > winW){ // image wider than window IMG.css({'width': winW ,'height': 'auto' } ); }else{// image smaller than window width newIH = winH>parseInt(IMG.data('h'))? parseInt(IMG.data('h')): winH; newIW = (winH>parseInt(IMG.attr('h')) )? '100%': img_relative_w; IMG.css({'width': newIW ,'height': newIH } ); } }else{ IMG.css({'width': 'auto' ,'height': winH } ); } }else{ if(IMGratio<1){// wider image IMG.css({'width': winW ,'height': 'auto' } ); }else{// taller image if(img_relative_w > winW){ // relative image wider than window IMG.css({'width': winW ,'height': 'auto' } ); }else{ IMG.css({'width': 'auto' ,'height': winH } ); } } } } $.fn.eventon_process_main_ft_img = function(OO){ IMG = this; img_sty = 'def'; if( IMG.hasClass('fit') ) img_sty = 'fit'; if( IMG.hasClass('full') ) img_sty = 'full'; box_width = IMG.width(); box_height = IMG.height(); img_height = parseInt( IMG.data('h') ); img_width = parseInt( IMG.data('w') ); img_ratio = IR = img_height / img_width; // image ratio // fit style if( IMG.hasClass('fit')){ new_width = box_height / img_ratio; //console.log(new_width+' '+box_height +' '+img_ratio); new_height = box_height; if( new_width > box_width ){// width is wider than box if( IR <1 ){ new_width = box_width; new_height = IR * new_width; }else{ new_height = box_height; new_width = new_height / IR; } } IMG.find('span').css({'width':new_width, 'height': new_height} ); } // full style if( IMG.hasClass('full')){ new_height = img_ratio * box_width; new_width = box_width; IMG.find('span').css({'width':new_width, 'height': new_height} ); IMG.css({'height': new_height} ); } //console.log(box_width +' '+img_width+' '+new_width); } // Calendar Data & Shortcodes // get shortcodes from evo bottom $.fn.evo_shortcode_data = function(){ var ev_cal = $(this); return ev_cal.find('.evo_cal_data').data('sc'); } // get filter data @4.6 $.fn.evo_get_filter_data = function(){ return $(this).find('.evo_cal_data').data('filter_data'); } $.fn.evo_cal_get_filter_sub_data = function( tax , key){ newdata = $(this).evo_get_filter_data(); return newdata[ tax ][ key ]; } $.fn.evo_cal_update_filter_data = function(tax, new_val, key){ newdata = $(this).evo_get_filter_data(); if( key === undefined) key = 'nterms'; newdata[ tax ][ key ] = new_val; $(this).find('.evo_cal_data').data('filter_data', newdata ); } $.fn.evo_cal_get_footer_data = function( key ){ data = $(this).find('.evo_cal_data').data(); //console.log(data); if( data === undefined ) return false; // 4.6.2 if( key in data ) return data[ key ]; return false; } // hide cal data from view $.fn.evo_cal_hide_data = function(){ $(this).find('.evo_cal_data').attr({ 'data-sc':'', 'data-filter_data':'', 'data-nav_data':'', }); } // update shortcode values from filter changes @u4.6 $.fn.evo_update_sc_from_filters = function(){ var el = $(this); SC = el.evo_shortcode_data(); $.each( el.evo_get_filter_data() , function(index, value){ var default_val = value.terms; var filter_val = value.nterms; const NOT_values = value.__notvals; filter_val = filter_val == ''? 'NOT-all': filter_val; var not_string = ''; // if NOT filter in place > include that in tax value for query if( NOT_values!== undefined && NOT_values.length >0 && filter_val != default_val ){ $.each(NOT_values, function(index, value){ not_string += 'NOT-'+ value +','; }); } SC[ index ] = not_string + filter_val; }); el.find('.evo_cal_data').data( 'sc', SC ); } // get shortcode single value $.fn.evo_get_sc_val = function(opt){ var defaults = { F:''} var OPT = $.extend({}, defaults, opt); var ev_cal = $(this); if(OPT.F=='') return false; SC = ev_cal.find('.evo_cal_data').data('sc'); if(!(SC[ OPT.F])) return false; return SC[ OPT.F]; } // UPDATE Single value $.fn.evo_update_cal_sc = function(opt){ var defaults = { F:'', V:'' } var OPT = $.extend({}, defaults, opt); var ev_cal = $(this); SC = ev_cal.find('.evo_cal_data').data('sc'); SC[ OPT.F ] = OPT.V; ev_cal.find('.evo_cal_data').data( 'sc', SC ); } // UPDATE all shortcode values $.fn.evo_update_all_cal_sc = function(opt){ var defaults = {SC:''} var OPT = $.extend({}, defaults, opt); var CAL = $(this); CAL.find('.evo_cal_data').data( 'sc', OPT.SC ); } // OTHERS // hex colors // @+2.8 $.fn.evo_is_hex_dark = function(opt){ var defaults = { hex:'808080'} var OPT = $.extend({}, defaults, opt); hex = OPT.hex; var c = hex.replace('#',''); var is_hex = typeof c === 'string' && c.length === 6 && !isNaN(Number('0x' + c)); if(is_hex){ var values = c.split(''); r = parseInt(values[0].toString() + values[1].toString(), 16); g = parseInt(values[2].toString() + values[3].toString(), 16); b = parseInt(values[4].toString() + values[5].toString(), 16); }else{ var vals = c.substring(c.indexOf('(') +1, c.length -1).split(', '); var r = vals[0] // extract red var g = vals[1]; // extract green var b = vals[2]; } var luma = ((r * 299) + (g * 587) + (b * 114)) / 1000; // per ITU-R BT.709 return luma>155? true:false; } // get rgb from hex code @4.5 $.fn.evo_rgb_process = function(opt){ var defaults = { data:'808080',type:'rgb', method:'rgb_to_val'} var opt = $.extend({}, defaults, opt); const color = opt.data; // RGB => hex if( opt.method == 'rgb_to_hex'){ if(color == '1'){ return; }else{ if(color !=='' && color){ rgb = color.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); return "#" + ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) + ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) + ("0" + parseInt(rgb[3],10).toString(16)).slice(-2); } } } // RGB => rgb val if( opt.method == 'rgb_to_val'){ if( opt.type == 'hex'){ var rgba = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(color); var rgb = new Array(); rgb['r']= parseInt(rgba[1], 16); rgb['g']= parseInt(rgba[2], 16); rgb['b']= parseInt(rgba[3], 16); }else{ rgb = color; } return parseInt((rgb['r'] + rgb['g'] + rgb['b'])/3); } } // Other data $.fn.evo_get_OD = function(){ var ev_cal = $(this); return ev_cal.find('.evo_cal_data').data('od'); } // get evo data for a given calendar $.fn.evo_getevodata = function(){ var ev_cal = $(this); var evoData = {}; ev_cal.find('.evo-data').each(function(){ $.each(this.attributes, function(i, attrib){ var name = attrib.name; if(attrib.name!='class' && attrib.name!='style' ){ name__ = attrib.name.split('-'); evoData[name__[1]] = attrib.value; } }); }); return evoData; } // check if mobile device v4.6 $.fn.evo_is_mobile = function(){ return ( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) )? true: false; } // eventon loading functions // v 2.4.5 -- deprecating $.fn.evo_loader_animation = function(opt){ var defaults = { direction:'start' } var OPT = $.extend({}, defaults, opt); if(OPT.direction == 'start'){ $(this).find('#eventon_loadbar').slideDown(); }else{ $(this).find('#eventon_loadbar').slideUp(); } } // DEPRECATED functions $.fn.evo_item_shortcodes = function(){ var OBJ = $(this); var shortcode_array ={}; OBJ.each(function(){ $.each(this.attributes, function(i, attrib){ var name = attrib.name; if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ name__ = attrib.name.split('-'); shortcode_array[name__[1]] = attrib.value; } }); }); return shortcode_array; } $.fn.evo_shortcodes = function(){ var ev_cal = $(this); var shortcode_array ={}; ev_cal.find('.cal_arguments').each(function(){ $.each(this.attributes, function(i, attrib){ var name = attrib.name; if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ name__ = attrib.name.split('-'); shortcode_array[name__[1]] = attrib.value; } }); }); return shortcode_array; } }(jQuery));