1/* 2 * Javascript: EventON functions for all calendars 3 * @version: 4.3.3 4 */ 5(function($){ 6 7 // Calendar function s 8 $.fn.evo_cal_functions = function(O){ 9 el = this; 10 switch(O.return){ 11 // load shortcodes inside calendar data 12 case 'load_shortcodes': 13 return el.find('.evo_cal_data').data('sc'); 14 break; 15 case 'update_shortcodes': 16 el.find('.evo_cal_data').data( 'sc', O.SC ); 17 break; 18 } 19 }; 20 21 22 23 // access page GLOBALS 24 $.fn.evo_get_global = function(opt){ 25 var defaults = { S1:'', S2:''}; 26 var OPT = $.extend({}, defaults, opt); 27 28 var BUS = $('#evo_global_data').data('d'); 29 30 if(!(OPT.S1 in BUS)) return false; 31 if(!(OPT.S2 in BUS[OPT.S1])) return false; 32 return BUS[OPT.S1][OPT.S2]; 33 } 34 $.fn.evo_get_txt = function(opt){ 35 var defaults = { V:''} 36 var OPT = $.extend({}, defaults, opt); 37 38 var BUS = $('#evo_global_data').data('d'); 39 if(!('txt' in BUS)) return false; 40 if(!(OPT.V in BUS.txt)) return false; 41 return BUS.txt[OPT.V]; 42 } 43 $.fn.evo_get_cal_def = function(opt){ 44 var defaults = { V:''} 45 var OPT = $.extend({}, defaults, opt); 46 47 var BUS = $('#evo_global_data').data('d'); 48 if(!('cal_def' in BUS)) return false; 49 if(!(OPT.V in BUS.cal_def)) return false; 50 return BUS.cal_def[OPT.V]; 51 } 52 53 // return dms translates values from global data 54 // added 4.0 55 $.fn.evo_get_dms_vals = function(opt){ 56 // type = d, d1,d3, m, m3 57 // V = 0-x 58 var defaults = { type:'d', V:''} 59 var OPT = $.extend({}, defaults, opt); 60 61 var BUS = $('#evo_global_data').data('d'); 62 if(!('dms' in BUS)) return false; 63 if(!(OPT.type in BUS.dms)) return false; 64 65 return BUS.dms[ OPT.type ][ OPT.V ]; 66 67 } 68 69 // GENERAL AJAX ACCESS + 4.1.2 70 $.fn.evo_admin_get_ajax = function(opt){ 71 var defs = { 72 'lightbox_key':'', 73 'lightbox_loader': true, 74 'load_new_content': true, 75 'ajaxdata':{ 76 'load_lbcontent':'', 77 'load_new_content':'' 78 }, 79 'uid':'', 80 'end':'admin', // admin or client 81 } 82 83 var OO = $.extend({}, defs, opt); 84 85 86 var ajaxdata = OO.ajaxdata; 87 88 // passing nonce 89 ajaxdata['nn'] = ( OO.end == 'client' ) ? evo_general_params.n : evo_admin_ajax_handle.postnonce; 90 91 LB = false; 92 if( OO.lightbox_key != '') LB = $('body').find('.evo_lightbox.'+ OO.lightbox_key); 93 94 var returnvals = ''; 95 96 97 $.ajax({ 98 beforeSend: function(){ 99 $('body').trigger('evo_ajax_beforesend_' + OO.uid ,[ OO ]); 100 if( LB && OO.lightbox_loader){ 101 LB.find('.ajde_popup_text').addClass( 'loading'); 102 LB.find('.evolb_content').addClass( 'loading'); 103 } 104 }, 105 type: 'POST', 106 url: (OO.end == 'admin')? evo_admin_ajax_handle.ajaxurl : evo_general_params.ajaxurl, 107 data: ajaxdata, 108 dataType:'json', 109 success:function(data){ 110 //console.log(OO); 111 if( OO.ajaxdata.load_lbcontent ) LB.evo_lightbox_populate_content({content: data.content}); 112 if( OO.ajaxdata.load_new_content ) LB.evo_lightbox_populate_content({content: data.content}); 113 114 // process trumbowyg editors 115 $('body').trigger('evo_elm_load_interactivity'); 116 117 //console.log(OO.uid); 118 $('body').trigger('evo_ajax_success_' + OO.uid,[ OO, data ]); 119 120 },complete:function(){ 121 $('body').trigger('evo_ajax_complete_' + OO.uid ,[ OO ]); 122 if( LB && OO.lightbox_loader){ 123 LB.find('.ajde_popup_text').removeClass( 'loading'); 124 LB.find('.evolb_content').removeClass( 'loading'); 125 } 126 } 127 }); 128 } 129 130 // submit forms via ligtbox 131 // @since 4.2.2 132 $.fn.evo_ajax_lightbox_form_submit = function(opt){ 133 var defs = { 134 'lightbox_key':'', // lightbox class 135 'lightbox_loader': true, // show lightbox loading animations 136 'uid':'', 137 'end':'admin', // admin or client 138 'hide_lightbox':false, 139 'hide_message':false, 140 'load_new_content':false, 141 } 142 143 var OO = $.extend({}, defs, opt); 144 145 const form = this.closest('form'); 146 var LB = false; 147 if( OO.lightbox_key != '') LB = $('body').find('.evo_lightbox.'+ OO.lightbox_key); 148 149 form.ajaxSubmit({ 150 beforeSubmit: function(){ 151 $('body').trigger('evo_ajax_beforesend_' + OO.uid ,[ OO ]); 152 if( LB && OO.lightbox_loader) LB.evo_lightbox_start_inloading(); 153 },
154 dataType: 'json', url: the_ajax_script.ajaxurl, type: 'POST', 155 success:function(data){ 156 157 $('body').trigger('evo_ajax_success_' + OO.uid,[ OO, data ]); 158 159 if( data.status == 'good'){ 160 LB.evo_lightbox_show_msg({'type': 'good', 161 'message':data.msg, 162 hide_lightbox: OO.hide_lightbox, 163 hide_message: OO.hide_message 164 }); 165 166 if( OO.load_new_content ) LB.evo_lightbox_populate_content({content: data.content}); 167 168 // if ajax data pass dom content to be replaced with run through each and replace - @4.2.3 169 if( 'refresh_dom_content' in data ){ 170 $.each(data.refresh_dom_content, function(domid, content){ 171 $('body').find('#'+ domid).replaceWith( content); 172 }); 173 } 174 175 }else{ 176 LB.evo_lightbox_show_msg({'type': 'bad', 'message':data.msg}); 177 } 178 }, 179 complete:function(){ 180 $('body').trigger('evo_ajax_complete_' + OO.uid ,[ OO ]); 181 $('body').trigger('evo_ajax_form_complete_' + OO.uid ,[ OO , form]); 182 if( LB && OO.lightbox_loader) LB.evo_lightbox_stop_inloading(); 183 } 184 }); 185 } 186 187 // LIGHTBOX version 4.2
188 // @version 4.2 189 $('body').on('click','.evolb_trigger', function(event){ 190 if( event !== undefined ){ 191 event.preventDefault(); 192 event.stopPropagation(); 193 } 194 195 $(this).evo_lightbox_open($(this).data('lbvals')); 196 }); 197 $('body').on('click','.evolb_close_btn', function (){ 198 const LB = $(this).closest('.evo_lightbox'); 199 LB.evo_lightbox_close(); 200 }); 201 202 // @since 4.2.2 203 $('body').on('click','.evolb_trigger_save, .evo_submit_form', function(event){ 204 if( event !== undefined ){ 205 event.preventDefault(); 206 event.stopPropagation(); 207 } 208 $(this).evo_ajax_lightbox_form_submit( $(this).data('d') ); 209 }); 210 211 $('body').on('click','.evo_trigger_ajax_run', function(event){ 212 if( event !== undefined ){ 213 event.preventDefault(); 214 event.stopPropagation(); 215 } 216 $(this).evo_admin_get_ajax( $(this).data('d') ); 217 }); 218 // @since 4.3.3 219 $('body').on('evo_lightbox_trigger', function(event, data){ 220 $('body').evo_lightbox_open(data); 221 }); 222 223 $.fn.evo_lightbox_open = function (opt){ 224 var defaults = { 225 'uid':'', 226 't':'', //title 227 'lbc':'',// * lightbox class - REQUIRED 228 'lbsz':'',// lightbox size = mid small 229 'content':'',// passed on dynamic content 230 'content_id' :'',// id to get dynamic content from page 231 'ajax':'no',// use ajax to load content yes no 232 'ajax_url':'', 233 'd':'', // data object for ajax 234 'end':'admin',// admin or client end 235 'other_data':'', 236 'lightbox_loader': true, 237 }; 238 239 var OO = $.extend({}, defaults, opt); 240 241 // create lightbox HTML 242 var html = '<div class="evo_lightbox '+OO.lbc+' '+OO.end+'"><div class="evolb_content_in"><div class="evolb_content_inin"><div class="evolb_box '+OO.lbc+' '+OO.lbsz +'"><div class="evolb_header"><a class="evolb_backbtn" style="display:none"><i class="fa fa-angle-left"></i></a><p class="evolb_title">' + OO.t + '</p><a class="evolb_close_btn evolbclose ">X</a></div><div class="evolb_content"></div><p class="message"></p></div></div></div></div>'; 243 244 $('#evo_lightboxes').append( html ); 245 246 247 LIGHTBOX = $('.evo_lightbox.'+ OO.lbc); 248 249 // Open lightbox on page 250 setTimeout( function(){ 251 $('#evo_lightboxes').show(); 252 LIGHTBOX.addClass('show'); 253 $('body').addClass('evo_overflow'); 254 $('html').addClass('evo_overflow'); 255 },300); 256 257 // show loading animation 258 LIGHTBOX.evo_lightbox_show_open_animation(); 259 260 // Load content 261 // dynamic content within the site 262 if(OO.content_id != ''){ 263 var content = $('#'+ OO.content_id ).html(); 264 LIGHTBOX.find('.evolb_content').html( content); 265 } 266 // load passed on content 267 if(OO.content != ''){ 268 LIGHTBOX.find('.evolb_content').html( OO.content); 269 } 270 271 // run ajax to load content for the lightbox inside 272 if( OO.ajax == 'yes' && OO.d != ''){ 273 274 var D = {}; 275 D = OO.d; 276 277 LB.evo_admin_get_ajax({ 278 ajaxdata: D, 279 lightbox_key: OO.lbc, 280 uid: OO.d.uid, 281 end: OO.end, 282 lightbox_loader: OO.lightbox_loader, 283 }); 284 } 285 286 // load content from a AJAX file 287 if( OO.ajax_url != ''){ 288 $.ajax({
289 beforeSend: function(){}, 290 url: OO.ajax_url, 291 success:function(data){ 292 LIGHTBOX.find('.evolb_content').html( data); 293 },complete:function(){} 294 }); 295 } 296 297 298 299 $('body').trigger('evo_lightbox_processed', [ OO, LIGHTBOX]); 300 } 301 302 $.fn.evo_lightbox_close = function (opt){ 303 LB = this; 304 var defaults = { 305 'delay':500, 306 'remove_from_dom':true, 307 }; 308 309 if( !(LB.hasClass('show')) ) return; 310 311 var OO = $.extend({}, defaults, opt); 312 313 var hide_delay = parseInt( OO.delay); 314 315 complete_close = (LB.parent().find('.evo_lightbox.show').length == 1)? true: false; 316 317 if( hide_delay > 500){ 318 setTimeout( function(){ 319 LB.removeClass('show'); 320 }, ( hide_delay - 500 ) ); 321 }else{ 322 LB.removeClass('show'); 323 } 324 325 setTimeout( function(){ 326 if(complete_close){ 327 $('body').removeClass('evo_overflow'); 328 $('html').removeClass('evo_overflow'); 329 } 330 // remove lightbox HTML from DOM 331 if( OO.remove_from_dom) LB.remove(); 332 }, hide_delay); 333 } 334 335 336 $.fn.evo_lightbox_populate_content = function(opt){ 337 LB = this; 338 var defaults = { 339 'content':'', 340 }; var OO = $.extend({}, defaults, opt); 341 LB.find('.evolb_content').html( OO.content ); 342 } 343 $.fn.evo_lightbox_start_inloading = function(opt){ 344 LB = this; 345 LB.find('.evolb_content').addClass('loading'); 346 } 347 $.fn.evo_lightbox_stop_inloading = function(opt){ 348 LB = this; 349 LB.find('.evolb_content').removeClass('loading'); 350 } 351 $.fn.evo_lightbox_show_msg = function(opt){ 352 LB = this; 353 var defaults = { 354 'type':'good', 355 'message':'', 356 'hide_message': false,// hide message after some time pass time or false 357 'hide_lightbox': false, // hide lightbox after some time of false 358 }; var OO = $.extend({}, defaults, opt); 359 LB.find('.message').removeClass('bad good').addClass( OO.type ).html( OO.message ).fadeIn(); 360 361 if( OO.hide_message ) setTimeout(function(){ LB.evo_lightbox_hide_msg() }, OO.hide_message ); 362 363 if( OO.hide_lightbox ) LB.evo_lightbox_close({ delay: OO.hide_lightbox }); 364 } 365 $.fn.evo_lightbox_hide_msg = function(opt){ 366 LB = this; 367 LB.find('p.message').hide(); 368 } 369 370 371 $.fn.evo_lightbox_show_open_animation = function(opt){ 372 LB = this; 373 var defaults = { 374 'animation_type':'initial', // animation type initial or saving 375 }; 376 var OO = $.extend({}, defaults, opt); 377 378 if( OO.animation_type == 'initial'){ 379 LB.find('.evolb_content').html('<div class="evo_loading_bar_holder"><div class="evo_loading_bar wid_40 hi_50"></div><div class="evo_loading_bar"></div><div class="evo_loading_bar"></div><div class="evo_loading_bar"></div><div class="evo_loading_bar wid_25"></div></div>'); 380 } 381 382 if( OO.animation_type == 'saving') 383 LB.find('.evolb_content').addClass('loading'); 384 385 } 386 387 // Count down // @+ 3.0 388 $.fn.evo_countdown_get = function(opt){ 389 var defaults = { gap:''}; 390 var OPT = $.extend({}, defaults, opt); 391 392 distance = (OPT.gap * 1000); 393 394 var days = Math.floor(distance / (1000 * 60 * 60 * 24)); 395 var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 396 var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); 397 var seconds = Math.floor((distance % (1000 * 60)) / 1000); 398 399 minutes = minutes<10? '0'+minutes : minutes; 400 seconds = seconds<10? '0'+seconds : seconds; 401 402 return { 403 'd': days, 404 'h':hours, 405 'm':minutes, 406 's':seconds 407 }; 408 }; 409 $.fn.evo_countdown = function(opt){ 410 var defaults = { S1:''}; 411 var OPT = $.extend({}, defaults, opt); 412 var el = $(this); 413 414 const day_text = ( el.data('d') !== undefined && el.data('d') != '' )? el.data('d'):'Day'; 415 const days_text = ( el.data('ds') !== undefined && el.data('ds') != '' )? el.data('ds'):'Days'; 416 417 // intial run 418 var gap = parseInt(el.data('gap')); 419 var text = el.data('t'); 420 if(text === undefined) text = ''; 421 422 if( el.hasClass('evo_cd_on')) return; 423 424 if( gap > 0 ){ 425 dd = el.evo_countdown_get({ 'gap': gap}); 426 el.html( ( dd.d>0 ? dd.d + ' ' + ( dd.d >1 ? days_text: day_text ) + " " :'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text ); 427 428 el.data('gap', (gap -1) ); 429 var duration = el.data('dur'); 430 431 el.addClass('evo_cd_on'); 432 433 // maybe adopt moment 434 //var M = moment(); 435 //console.log(M); 436 437 // set intervals 438 var CD = setInterval(function(){ 439 440 gap = el.data('gap'); 441 duration = el.data('dur'); 442 443 const bar_elm = el.closest('.evo_event_progress').find('.evo_ep_bar'); 444 445 if( gap > 0 ){ 446 447 // increase bar width if exists 448 if( duration !== undefined && bar_elm.length){ 449 perc = ( (duration - gap)/ duration ) * 100; 450 bar_elm.find('b').css('width',perc+'%'); 451 } 452 453 dd = el.evo_countdown_get({ 'gap': gap}); 454 455 el.html( ( dd.d>0 ? dd.d + ' ' + ( dd.d >1 ? days_text: day_text ) + " ":'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text );
456 el.data('gap', ( gap - 1) ); 457 458 }else{ 459 460 const expire_timer_action = el.data('exp_act'); 461 462 // perform ajax task after expiration 463 if(expire_timer_action !== undefined){ 464 $('body').trigger('runajax_refresh_now_cal',[ 465 el , 466 el.data('n'), 467 ]); 468 } 469 470 const _complete_text = el.evo_get_txt({V:'event_completed'}); 471 472 // live now text 473 if(bar_elm.length){ 474 bar_elm.addClass('evo_completed'); 475 //el.siblings('.evo_ep_pre').html( _complete_text ); 476 } 477 478 479 // event tag & live elements 480 if( el.closest('.evcal_desc').length){ 481 el.closest('.evcal_desc').find('.eventover').html( _complete_text); 482 el.closest('.evcal_desc').find('.evo_live_now').remove(); 483 } 484 485 // event card 486 if( el.closest('.eventon_list_event').length){ 487 el.closest('.eventon_list_event').find('span.evo_live_now').hide(); 488 } 489 490 el.html(''); 491 clearInterval(CD); 492 } 493 494 },1000); 495 }else{ 496 clearInterval(CD); 497 } 498 }; 499 500 // Handlebar process template data into html 501 $.fn.evo_HB_process_template = function(opt){ 502 var defaults = { TD:'', part:''} 503 var OPT = $.extend({}, defaults, opt); 504 505 BUS = $('#evo_global_data').data('d'); 506 507 template = Handlebars.compile( BUS.temp[ OPT.part ] ); 508 return template( OPT.TD ); 509 } 510 511 // Date range and events 512 // Date range and events - from webpage 513 $.fn.evo_cal_events_in_range = function(opt){ 514 var defaults = { S:'', E:'', 515 hide: true, 516 closeEC:true, 517 showEV: false, // show events 518 showEVL: false, // show events list 519 showAllEvs: false // show all events regardless of the range 520 }; 521 var OPT = $.extend({}, defaults, opt); 522 var CAL = $(this); 523 524 eJSON = CAL.find('.evo_cal_events').data('events'); 525 526 R = {}; 527 html = ''; 528 json = {}; 529 530 show = 0; 531 532 // using events JSON data 533 if( eJSON && eJSON.length > 0){ 534 $.each(eJSON, function(ind, ED){ 535 eO = CAL.find('#event_'+ ED._ID); 536 if(eO === undefined || eO.length==0) return; 537 538 if(OPT.hide) eO.hide(); // pre hide 539 this_show = false; 540 541 // month long or year long events 542 if( ED.month_long || ED.year_long ){ 543 this_show = true; 544 545 }else{ 546 if(CAL.evo_is_in_range({ 547 'S': OPT.S, 'E': OPT.E, 'start': ED.event_start_unix , 'end':ED.event_end_unix 548 })){ 549 this_show = true; 550 } 551 } 552 553 if( OPT.showAllEvs) this_show = true; 554 555 if( this_show){ 556 // show event 557 if( OPT.showEV) eO.show(); 558 559 // close open event cards 560 if(OPT.closeEC && SC.evc_open == 'no') eO.find('.event_description').hide().removeClass('open'); 561 562 html += eO[0].outerHTML; 563 json[ ED._ID] = ED; 564 show++; 565 } 566 }); 567 }else{ 568 // get all the events in the events list 569 var cal_events = CAL.find('.eventon_list_event'); 570 571 cal_events.each(function(index, elm){ 572 var ED = $(elm).evo_cal_get_basic_eventdata(); 573 if( !ED) return; 574 575 if(OPT.hide) $(elm).hide(); // pre hide 576 this_show = false; 577 578 // month long or year long events 579 if( $(elm).hasClass('month_long') || $(elm).hasClass('year_long') ){ 580 this_show = true; 581 582 }else{ 583 if(CAL.evo_is_in_range({ 584 'S': OPT.S, 'E': OPT.E, 'start': ED.event_start_unix , 'end':ED.event_end_unix 585 })){ 586 this_show = true; 587 } 588 } 589 590 if( OPT.showAllEvs) this_show = true; 591 592 if( this_show){ 593 // show event 594 if( OPT.showEV) $(elm).show(); 595 596 // close open event cards 597 if(OPT.closeEC && SC.evc_open == 'no') 598 $(elm).find('.event_description').hide().removeClass('open'); 599 600 html += $(elm)[0].outerHTML; 601 json[ ED.uID ] = ED; 602 show++; 603 } 604 }); 605 } 606 607 608 // No events 609 if( OPT.showEV){ 610 611 no_event_content = CAL.evo_get_global({S1: 'html', S2:'no_events'}); 612 613 tx_noevents = CAL.evo_get_txt({V:'no_events'}); 614 EL = CAL.find('.eventon_events_list'); 615 EL.find('.eventon_list_event.no_events').remove(); 616 if( show == 0 ) 617 EL.append('<div class="eventon_list_event no_events">
617'+ no_event_content +'</div>'); 618 } 619 620 // if show events list 621 if( OPT.showEVL){ 622 CAL.find('.eventon_events_list').show().removeClass('evo_hide'); 623 } 624 625 R['count'] = show; 626 R['html'] = html; 627 R['json'] = json; 628 629 return R; 630 } 631 632 // check if an event is in the given date range 633 $.fn.evo_is_in_range = function(opt){ 634 var defaults = { S:'', E:'', start:'',end:''} 635 var OPT = $.extend({}, defaults, opt); 636 637 S = parseInt(OPT.S); 638 E = parseInt(OPT.E); 639 start = parseInt(OPT.start); 640 end = parseInt(OPT.end); 641 642 return ( 643 ( start <= S && end >= E ) || 644 ( start <= S && end >= S && end <= E) || 645 ( start <= E && end >= E ) || 646 ( start >= S && end <= E ) 647 ) ? true: false; 648 } 649 $.fn.evo_cal_hide_events = function(){ 650 CAL = $(this); 651 CAL.find('.eventon_list_event').hide(); 652 } 653 654 // get event data basics from html event on page 655 // ~@version 4.0.3 656 $.fn.evo_cal_get_basic_eventdata = function(){ 657 var ELM = $(this); 658 659 var _time = ELM.data('time'); 660 if( _time === undefined ) return false; 661 662 const time = _time.split('-'); 663 const ri = ELM.data('ri').replace('r',''); 664 const eID = ELM.data('event_id'); 665 666 var _event_title = ELM.find('.evcal_event_title').text(); 667 _event_title = _event_title.replace(/'/g, '''); 668 669 670 var RR = { 671 'uID': eID + '_' + ri, 672 'ID': eID , 673 'event_id': eID , 674 'ri': ri, 675 'event_start_unix': parseInt(time[0]), 676 'event_end_unix': parseInt(time[1]), 677 'ux_val': ELM.find('.evcal_list_a').data('ux_val'), 678 'event_title': _event_title, 679 'hex_color': ELM.data('colr'), 680 'hide_et': ELM.hasClass('no_et') ? 'y':'n', // hide endtime 681 'evcal_event_color': ELM.data('colr'), 682 }; 683 684 // event type 685 RR['ett1'] = {}; 686 ELM.find('.evoet_eventtypes.ett1 .evoetet_val').each(function(){ 687 RR['ett1'][ $(this).data('id')] = $(this).data('v'); 688 }); 689 690 // location 691 if(ELM.find('.evoet_location').length > 0){ 692 const loc_elm = ELM.find('.evoet_location'); 693 RR['location'] = loc_elm.find('.evcal_location').data('n'); 694 } 695 696 // organizer 697 if(ELM.find('.evcal_oganizer').length > 0){ 698 const org_elm = ELM.find('.evcal_oganizer'); 699 var org_names = ''; 700 org_elm.find('.evoet_dataval').each(function(index){ 701 org_names += $(this).html() +' '; 702 }); 703 RR['organizer'] = org_names; 704 } 705 706 return RR; 707 708 } 709 710 711 // DATE time functions @+2.8 712 $.fn.evo_day_in_month = function(opt){ 713 var defaults = { M:'', Y:''} 714 var OPT = $.extend({}, defaults, opt); 715 716 return new Date(OPT.Y, OPT.M, 0).getDate(); 717 } 718 $.fn.evo_get_day_name_index = function(opt){ 719 var defaults = { M:'', Y:'', D:''} 720 var OPT = $.extend({}, defaults, opt); 721 722 //return moment(OPT.Y+'-'+OPT.M+'-'+OPT.D).utc().day(); 723 724 return new Date( Date.UTC(OPT.Y, OPT.M-1, OPT.D) ).getUTCDay(); 725 } 726 727 // LIGHTBOX 728 // page Lightbox functions @+2.8 729 // append to the lightbox main class name .evo_lightbox 730 731 // Legacy 732 $.fn.evo_prepare_lb = function(){ 733 $(this).find('.evo_lightbox_body').html(''); 734 } 735 $.fn.evo_show_lb = function(opt){ 736 var defaults = { RTL:'', calid:''} 737 var OPT = $.extend({}, defaults, opt); 738 739 $(this).addClass('show '+ OPT.RTL).attr('data-cal_id', OPT.calid); 740 $('body').trigger('evolightbox_show'); 741 } 742 $.fn.evo_append_lb = function(opt){ 743 var defaults = { C:'', CAL:''} 744 var OPT = $.extend({}, defaults, opt); 745 $(this).find('.evo_lightbox_body').html( OPT.C); 746 747 if( OPT.CAL!= '' && OPT.CAL !== undefined && OPT.CAL.hasClass('color')){ 748 const LIST = $(this).find('.eventon_events_list'); 749 if( LIST.length>0){ 750 LIST.find('.eventon_list_event').addClass('color'); 751 } 752 } 753 } 754 755 756 757 // Shortcodes 758 // update shortcode values from filter changes @updated 4.3.3 759 $.fn.evo_update_sc_from_filters = function(){ 760 var ev_cal = $(this); 761 SC = ev_cal.find('.evo_cal_data').data('sc'); 762 763 var filter_section = ev_cal.find('.eventon_filter_line').first(); 764 765 filter_section.find('.eventon_filter').each(function(index){ 766 O = $(this); 767 var default_val = O.data('fldef'); 768 var filter_val = O.data('filter_val'); 769 const NOT_values = O.data('notvals'); 770
771 filter_val = filter_val == ''? 'NOT-all': filter_val; 772 773 var not_string = ''; 774 775 // if NOT filter in place > include that in tax value for query 776 if( NOT_values!== undefined && NOT_values.length >0 && filter_val != default_val ){ 777 778 $.each(NOT_values, function(index, value){ 779 not_string += 'NOT-'+ value +','; 780 }); 781 } 782 783 SC[ O.data('filter_field') ] = not_string + filter_val; 784 }); 785 786 ev_cal.find('.evo_cal_data').data( 'sc', SC ); 787 } 788 789 // get shortcodes from evo bottom 790 $.fn.evo_shortcode_data = function(){ 791 var ev_cal = $(this); 792 return ev_cal.find('.evo_cal_data').data('sc'); 793 } 794 795 // get shortcode single value 796 $.fn.evo_get_sc_val = function(opt){ 797 var defaults = { F:''} 798 var OPT = $.extend({}, defaults, opt); 799 var ev_cal = $(this); 800 801 if(OPT.F=='') return false; 802 SC = ev_cal.find('.evo_cal_data').data('sc'); 803 804 if(!(SC[ OPT.F])) return false; 805 return SC[ OPT.F]; 806 } 807 // UPDATE Single value 808 $.fn.evo_update_cal_sc = function(opt){ 809 var defaults = { 810 F:'', V:'' 811 } 812 var OPT = $.extend({}, defaults, opt); 813 var ev_cal = $(this); 814 SC = ev_cal.find('.evo_cal_data').data('sc'); 815 816 SC[ OPT.F ] = OPT.V; 817 818 ev_cal.find('.evo_cal_data').data( 'sc', SC ); 819 } 820 // UPDATE all shortcode values 821 $.fn.evo_update_all_cal_sc = function(opt){ 822 var defaults = {SC:''} 823 var OPT = $.extend({}, defaults, opt); 824 var CAL = $(this); 825 CAL.find('.evo_cal_data').data( 'sc', OPT.SC ); 826 } 827 828 // OTHERS 829 // hex colors // @+2.8 830 $.fn.evo_is_hex_dark = function(opt){ 831 var defaults = { hex:'808080'} 832 var OPT = $.extend({}, defaults, opt); 833 834 hex = OPT.hex; 835 836 var c = hex.replace('#',''); 837 var is_hex = typeof c === 'string' && c.length === 6 && !isNaN(Number('0x' + c)); 838 839 if(is_hex){ 840 var values = c.split(''); 841 r = parseInt(values[0].toString() + values[1].toString(), 16); 842 g = parseInt(values[2].toString() + values[3].toString(), 16); 843 b = parseInt(values[4].toString() + values[5].toString(), 16); 844 }else{ 845 var vals = c.substring(c.indexOf('(') +1, c.length -1).split(', '); 846 var r = vals[0] // extract red 847 var g = vals[1]; // extract green 848 var b = vals[2]; 849 } 850 851 var luma = ((r * 299) + (g * 587) + (b * 114)) / 1000; // per ITU-R BT.709 852 853 return luma>155? true:false; 854 } 855 // Other data 856 $.fn.evo_get_OD = function(){ 857 var ev_cal = $(this); 858 return ev_cal.find('.evo_cal_data').data('od'); 859 } 860 861 // return all filter values for given calendar -- DEP 2.8 862 $.fn.evoGetFilters = function(){ 863 864 var ev_cal = $(this); 865 var evodata = ev_cal.find('.evo-data'); 866 867 var filters_on = ( evodata.attr('data-filters_on')=='true')?'true':'false'; 868 869 // creat the filtering data array if exist 870 if(filters_on =='true'){ 871 var filter_section = ev_cal.find('.eventon_filter_line'); 872 var filter_array = []; 873 874 875 filter_section.find('.eventon_filter').each(function(index){ 876 var filter_val = $(this).attr('data-filter_val'); 877 878 if(filter_val !='all'){ 879 var filter_ar = {}; 880 filter_ar['filter_type'] = $(this).attr('data-filter_type'); 881 filter_ar['filter_name'] = $(this).attr('data-filter_field'); 882 883 if($(this).attr('data-fl_o')=='NOT'){ 884 filter_ar['filter_op']='NOT IN'; 885 } 886 filter_ar['filter_val'] = filter_val; 887 filter_array.push(filter_ar); 888 } 889 }); 890 }else{ 891 var filter_array =''; 892 } 893 return filter_array; 894 } 895 896 897 // get evo data for a given calendar 898 $.fn.evo_getevodata = function(){ 899 900 var ev_cal = $(this); 901 var evoData = {}; 902 903 ev_cal.find('.evo-data').each(function(){ 904 $.each(this.attributes, function(i, attrib){ 905 var name = attrib.name; 906 if(attrib.name!='class' && attrib.name!='style' ){ 907 name__ = attrib.name.split('-'); 908 evoData[name__[1]] = attrib.value; 909 } 910 }); 911 }); 912 913 return evoData; 914 } 915 916 // eventon loading functions 917 // v 2.4.5 918 $.fn.evo_loader_animation = function(opt){ 919 var defaults = { 920 direction:'start' 921 } 922 var OPT = $.extend({}, defaults, opt); 923 924 if(OPT.direction == 'start'){ 925 $(this).find('#eventon_loadbar').slideDown(); 926 }else{ 927 $(this).find('#eventon_loadbar').slideUp(); 928 } 929 } 930 931 // DEPRECATED functions 932 $.fn.evo_item_shortcodes = function(){ 933 var OBJ = $(this); 934 var shortcode_array ={}; 935 OBJ.each(function(){ 936 $.each(this.attributes, function(i, attrib){ 937 var name = attrib.name; 938 if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ 939 name__ = attrib.name.split('-'); 940 shortcode_array[name__[1]] = attrib.value; 941 } 942 }); 943 }); 944 return shortcode_array; 945 } 946 $.fn.evo_shortcodes = function(){
947 var ev_cal = $(this); 948 var shortcode_array ={}; 949 950 ev_cal.find('.cal_arguments').each(function(){ 951 $.each(this.attributes, function(i, attrib){ 952 var name = attrib.name; 953 if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ 954 name__ = attrib.name.split('-'); 955 shortcode_array[name__[1]] = attrib.value; 956 } 957 }); 958 }); 959 return shortcode_array; 960 } 961 962 963}(jQuery));
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.