1/* 2 * Javascript: EventON functions for all calendars 3 * @version: 4.6.1 4 */ 5(function($){ 6 7 // Calendar function s 8 $.fn.evo_cal_functions = function(O){ 9 el = this; 10 switch(O.action){ 11 // load shortcodes inside calendar data 12 case 'load_shortcodes': 13 return el.find('.evo_cal_data').data('sc'); 14 break; 15 case 'update_json': 16 //console.log(O.json); 17 el.find('.evo_cal_events').data('events', O.json); 18 break; 19 case 'update_shortcodes': 20 //console.log(O.SC); 21 el.find('.evo_cal_data').data( 'sc', O.SC ); 22 break; 23 } 24 }; 25 26 // access page GLOBALS 27 $.fn.evo_get_global = function(opt){ 28 var defaults = { S1:'', S2:''}; 29 var OPT = $.extend({}, defaults, opt); 30 31 var BUS = $('#evo_global_data').data('d'); 32 33 if(!(OPT.S1 in BUS)) return false; 34 if(!(OPT.S2 in BUS[OPT.S1])) return false; 35 return BUS[OPT.S1][OPT.S2]; 36 } 37 $.fn.evo_get_txt = function(opt){ 38 var defaults = { V:''} 39 var OPT = $.extend({}, defaults, opt); 40 41 var BUS = $('#evo_global_data').data('d'); 42 //console.log(BUS); 43 if(!('txt' in BUS)) return false; 44 if(!(OPT.V in BUS.txt)) return false; 45 return BUS.txt[OPT.V]; 46 } 47 48 // get translated text strings from ajax loaded data @4.6.4 49 $.fn.evo_lang = function(text){ 50 var t = text.toLowerCase() 51 .replace(/ /g, "_") 52 .replace(/[^\w-]+/g, ""); 53 54 var BUS = $('#evo_global_data').data('d'); 55 56 if(!('txt' in BUS)) return text; 57 if(!(t in BUS.txt)) return text; 58 return BUS.txt[ t ]; 59 60 } 61 $.fn.evo_get_cal_def = function(opt){ 62 var defaults = { V:''} 63 var OPT = $.extend({}, defaults, opt); 64 65 var BUS = $('#evo_global_data').data('d'); 66 if(!('cal_def' in BUS)) return false; 67 if(!(OPT.V in BUS.cal_def)) return false; 68 return BUS.cal_def[OPT.V]; 69 } 70 71 // return dms translates values from global data 72 // added 4.0 73 $.fn.evo_get_dms_vals = function(opt){ 74 // type = d, d1,d3, m, m3 75 // V = 0-x 76 var defaults = { type:'d', V:''} 77 var OPT = $.extend({}, defaults, opt); 78 79 var BUS = $('#evo_global_data').data('d'); 80 if(!('dms' in BUS)) return false; 81 if(!(OPT.type in BUS.dms)) return false; 82 83 return BUS.dms[ OPT.type ][ OPT.V ]; 84 85 } 86 87 // GENERAL AJAX ACCESS + 4.1.2 88 $.fn.evo_admin_get_ajax = function(opt){ 89 var defs = { 90 'lightbox_key':'', // same as lightbox class 91 'lightbox_loader': true, 92 'load_new_content': true, 93 'load_new_content_id': '', // @since 4.3.5 94 'hide_lightbox':false, // @since 4.3.5 95 'hide_message':2000, // @since 4.3.5 96 'ajaxdata':{ 97 'load_lbcontent':'', 98 'load_new_content':'' 99 }, 100 'uid':'', 101 'end':'admin', // admin or client 102 'loader_el':'', 103 'ajax_type':'ajax', 104 'ajax_action':'', 105 } 106 107 var el = $(this); 108 var OO = $.extend({}, defs, opt); 109 110 var ajaxdata = OO.ajaxdata; 111 112 // passing nonce 113 ajaxdata['nn'] = ( OO.end == 'client' ) ? evo_general_params.n : evo_admin_ajax_handle.postnonce; 114 115 // uid use ajax_action as backup 116 if( OO.uid == '' && OO.ajax_action != '') OO.uid = OO.ajax_action; 117 118 LB = false; 119 if( OO.lightbox_key != '') LB = $('body').find('.evo_lightbox.'+ OO.lightbox_key); 120 121 122 var returnvals = ''; 123 124 // process action value 125 if( 'a' in ajaxdata ) ajaxdata['action'] = ajaxdata.a; 126 127 // add uid into ajax data 128 ajaxdata['uid'] = OO.uid; 129 130 // ajax url processing 131 var ajax_url = el.evo_get_ajax_url({a: OO.ajax_action, e: OO.end, type: OO.ajax_type}); 132 133 //console.log(ajaxdata); 134 //console.log(ajax_url); 135 $.ajax({ 136 beforeSend: function(){ 137 $('body').trigger('evo_ajax_beforesend_' + OO.uid ,[ OO, el ]); 138 if( LB && OO.lightbox_loader){ 139 LB.find('.ajde_popup_text').addClass( 'evoloading loading'); 140 LB.find('.evolb_content').addClass( 'evoloading loading'); 141 } 142 if( OO.loader_el){ 143 $( OO.loader_el ).addClass('evoloading loading'); 144 } 145 }, 146 type: 'POST', 147 url: ajax_url, 148 data: ajaxdata, 149 dataType:'json', 150 success:function(data){ 151 //return; 152 //console.log(OO); 153 if( LB ){ 154 // show message 155 if( 'msg' in data && data.msg != '' && LB){ 156 LB.evo_lightbox_show_msg({'type': data.status, 157 'message':data.msg, 158 hide_lightbox: OO.hide_lightbox, 159 hide_message: OO.hide_message 160 });
161 } 162 163 // populate content 164 if( OO.ajaxdata.load_lbcontent || OO.ajaxdata.load_new_content || OO.load_new_content ){ 165 // populate a specific dom element with content 166 if( OO.load_new_content_id != '' ){ 167 $('body').find('#'+OO.load_new_content_id ).replaceWith( data.content ); 168 }else{ 169 LB.evo_lightbox_populate_content({content: data.content}); 170 } 171 } 172 }else{ 173 // populate content 174 if( OO.ajaxdata.load_lbcontent || OO.ajaxdata.load_new_content || OO.load_new_content ){ 175 // populate a specific dom element inside with content 176 if( OO.load_new_content_id != '' ){ 177 $('body').find('#'+OO.load_new_content_id ).html( data.content ); 178 } 179 } 180 } 181 182 // for SP content @since 4.5.2 183 if( 'sp_content' in data){ 184 $("body").find('#evops_content').html( data.sp_content); 185 } 186 // SP footer content @since 4.5.2 187 if( 'sp_content_foot' in data){ 188 $("body").find('.evosp_foot').html( data.sp_content_foot); 189 } 190 // process trumbowyg editors 191 $('body').trigger('evo_elm_load_interactivity'); 192 193 //console.log(OO); 194 $('body').trigger('evo_ajax_success_' + OO.uid,[ OO, data , el]); 195 196 },complete:function(){ 197 $('body').trigger('evo_ajax_complete_' + OO.uid ,[ OO , el ]); 198 if( LB && OO.lightbox_loader){ 199 LB.find('.ajde_popup_text').removeClass( 'evoloading loading'); 200 LB.find('.evolb_content').removeClass( 'evoloading loading'); 201 } 202 if( OO.loader_el){ 203 $( OO.loader_el ).removeClass('evoloading loading'); 204 } 205 } 206 }); 207 } 208 209 // submit forms via ligtbox 210 // @since 4.2.2 @updated 4.3.5 211 $.fn.evo_ajax_lightbox_form_submit = function(opt){ 212 var defs = { 213 'lightbox_key':'', // lightbox class 214 'lightbox_loader': true, // show lightbox loading animations 215 'uid':'', 216 'end':'admin', // admin or client 217 'hide_lightbox':false, 218 'hide_message':false, 219 'load_new_content':false, 220 'load_new_content_id':'', 221 'ajax_type':'ajax', 222 'ajax_action':'', 223 } 224 225 var OO = $.extend({}, defs, opt); 226 const el = this; 227 228 const form = this.closest('form'); 229 var LB = false; 230 if( OO.lightbox_key != '') LB = $('body').find('.evo_lightbox.'+ OO.lightbox_key); 231 232 if( LB) LB.evo_lightbox_hide_msg(); 233 234 //console.log(OO); 235 236 var ajax_url = el.evo_get_ajax_url({a: OO.ajax_action, e: OO.end, type: OO.ajax_type}); 237 238 form.ajaxSubmit({ 239 beforeSubmit: function(opt, xhr){ 240 $('body').trigger('evo_ajax_beforesend_' + OO.uid ,[ OO , xhr, opt]); // 4.4.2 241 if( LB && OO.lightbox_loader) LB.evo_lightbox_start_inloading(); 242 }, 243 dataType: 'json', 244 url: ajax_url, type: 'POST', 245 success:function(data){ 246 247 $('body').trigger('evo_ajax_success_' + OO.uid,[ OO, data, el ]); 248 249 if( data.status == 'good'){ 250 if(LB && 'msg' in data){ 251 LB.evo_lightbox_show_msg({'type': 'good', 252 'message':data.msg, 253 hide_lightbox: OO.hide_lightbox, 254 hide_message: OO.hide_message 255 }); 256 } 257 258 // populate specific element 259 if( OO.load_new_content && OO.load_new_content_id != ''){ 260 $('body').find('#'+OO.load_new_content_id ).replaceWith( data.content ); 261 }else{ 262 // populate current lightbox 263 if( OO.load_new_content ) LB.evo_lightbox_populate_content({content: data.content}); 264 } 265 266 267 // if ajax data pass dom content to be replaced with run through each and replace - @4.2.3 268 if( 'refresh_dom_content' in data ){ 269 $.each(data.refresh_dom_content, function(domid, content){ 270 $('body').find('#'+ domid).replaceWith( content); 271 }); 272 } 273 274 }else{ 275 LB.evo_lightbox_show_msg({'type': 'bad', 'message':data.msg}); 276 } 277 }, 278 complete:function(){ 279 $('body').trigger('evo_ajax_complete_' + OO.uid ,[ OO ]); 280 $('body').trigger('evo_ajax_form_complete_' + OO.uid ,[ OO , form]); 281 if( LB && OO.lightbox_loader) LB.evo_lightbox_stop_inloading(); 282 } 283 }); 284 } 285 286 // LIGHTBOX version 4.2
287 // @version 4.2 288 $('body').on('click','.evolb_trigger', function(event){ 289 if( event !== undefined ){ 290 event.preventDefault(); 291 event.stopPropagation(); 292 } 293 294 $(this).evo_lightbox_open($(this).data('lbvals')); 295 }); 296 $('body').on('click','.evolb_close_btn', function (){ 297 const LB = $(this).closest('.evo_lightbox'); 298 LB.evo_lightbox_close(); 299 }); 300 301 // @since 4.2.2 302 $('body').on('click','.evolb_trigger_save, .evo_submit_form', function(event){ 303 if( event !== undefined ){ 304 event.preventDefault(); 305 event.stopPropagation(); 306 } 307 $(this).evo_ajax_lightbox_form_submit( $(this).data('d') ); 308 }); 309 310 $('body').on('click','.evo_trigger_ajax_run', function(event){ 311 if( event !== undefined ){ 312 event.preventDefault(); 313 event.stopPropagation(); 314 } 315 $(this).evo_admin_get_ajax( $(this).data('d') ); 316 }); 317 // @since 4.3.3 318 $('body').on('evo_lightbox_trigger', function(event, data){ 319 $('body').evo_lightbox_open(data); 320 }); 321 322 $.fn.evo_lightbox_open = function (opt){ 323 var defaults = { 324 'uid':'', 325 't':'', //title 326 'lbc':'',// * lightbox class - REQUIRED 327 'lbac':'',// ligthbox additional class 4.6 328 'lbsz':'',// lightbox size = mid small 329 'content':'',// passed on dynamic content 330 'content_id' :'',// id to get dynamic content from page 331 'ajax':'no',// use ajax to load content yes no 332 'ajax_url':'', 333 'd':'', // data object for ajax 334 'end':'admin',// admin or client end 335 'other_data':'', 336 'lightbox_loader': false, 337 'preload_temp_key': 'init', // 4.6 338 'load_new_content': true, // @since 4.3.5 339 'lb_padding': 'evopad30', // @4.3.5 340 'ajax_action':'', // @4.4 pass on ajax endpoint action key 341 'ajax_type':'ajax', // @4.4 ajax type, ajax, rest or endpoint 342 }; 343 344 var OO = $.extend({}, defaults, opt); 345 346 const fl_footer = OO.end == 'client' ? '<div class="evolb_footer"></div>' :''; 347 348 // create lightbox HTML 349 var html = '<div class="evo_lightbox '+OO.lbc+' '+OO.end+' '+OO.lbac+'" data-lbc="'+OO.lbc+'"><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><span class="evolb_close_btn evolbclose "><i class="fa fa-xmark"><i></span></div><div class="evolb_content '+ OO.lb_padding +'"></div><p class="message"></p>'+fl_footer+'</div></div></div></div>'; 350 351 $('#evo_lightboxes').append( html ); 352 353 //console.log(OO); 354 355 LIGHTBOX = $('.evo_lightbox.'+ OO.lbc); 356 357 // Open lightbox on page 358 setTimeout( function(){ 359 $('#evo_lightboxes').show(); 360 LIGHTBOX.addClass('show'); 361 $('body').addClass('evo_overflow'); 362 $('html').addClass('evo_overflow'); 363 },300); 364 365 // show loading animation 366 LIGHTBOX.evo_lightbox_show_open_animation(OO); 367 368 //return; 369 370 // Load content 371 // dynamic content within the site 372 if(OO.content_id != ''){ 373 var content = $('#'+ OO.content_id ).html(); 374 LIGHTBOX.find('.evolb_content').html( content); 375 } 376 // load passed on content 377 if(OO.content != ''){ 378 LIGHTBOX.find('.evolb_content').html( OO.content); 379 } 380 381 // run ajax to load content for the lightbox inside 382 if( OO.ajax == 'yes' && OO.d != ''){ 383 384 var D = {}; 385 D = OO.d; 386 387 LB.evo_admin_get_ajax({ 388 ajaxdata: D, 389 ajax_action: OO.ajax_action, 390 ajax_type: OO.ajax_type, 391 lightbox_key: OO.lbc, 392 uid: ( OO.uid != '' ) ? OO.uid : OO.d.uid, 393 end: OO.end, 394 lightbox_loader: OO.lightbox_loader, 395 load_new_content: OO.load_new_content, 396 }); 397 } 398 399 // load content from a AJAX file 400 if( OO.ajax_url != ''){ 401 $.ajax({
402 beforeSend: function(){}, 403 url: OO.ajax_url, 404 success:function(data){ 405 LIGHTBOX.find('.evolb_content').html( data); 406 },complete:function(){} 407 }); 408 } 409 410 $('body').trigger('evo_lightbox_processed', [ OO, LIGHTBOX]); 411 } 412 413 $.fn.evo_lightbox_close = function (opt){ 414 var LB = this; 415 var defaults = { 416 'delay':500, 417 'remove_from_dom':true, 418 }; 419 420 if( !(LB.hasClass('show')) ) return; 421 422 var OO = $.extend({}, defaults, opt); 423 424 var hide_delay = parseInt( OO.delay); 425 426 complete_close = (LB.parent().find('.evo_lightbox.show').length == 1)? true: false; 427 428 if( hide_delay > 500){ 429 setTimeout( function(){ 430 LB.removeClass('show'); 431 }, ( hide_delay - 500 ) ); 432 }else{ 433 LB.removeClass('show'); 434 } 435 436 setTimeout( function(){ 437 if(complete_close){ 438 $('body').removeClass('evo_overflow'); 439 $('html').removeClass('evo_overflow'); 440 } 441 // remove lightbox HTML from DOM 442 if( OO.remove_from_dom) LB.remove(); 443 }, hide_delay); 444 } 445 446 447 // Other LB functions 448 $.fn.evo_lightbox_populate_content = function(opt){ 449 LB = this; 450 var defaults = { 451 'content':'', 452 }; var OO = $.extend({}, defaults, opt); 453 LB.find('.evolb_content').html( OO.content ); 454 } 455 $.fn.evo_lightbox_start_inloading = function(opt){ 456 LB = this; 457 LB.find('.evolb_content').addClass('loading'); 458 } 459 $.fn.evo_lightbox_stop_inloading = function(opt){ 460 LB = this; 461 LB.find('.evolb_content').removeClass('loading'); 462 } 463 $.fn.evo_lightbox_show_msg = function(opt){ 464 LB = this; 465 var defaults = { 466 'type':'good', 467 'message':'', 468 'hide_message': false,// hide message after some time pass time or false 469 'hide_lightbox': false, // hide lightbox after some time of false 470 }; var OO = $.extend({}, defaults, opt); 471 LB.find('.message').removeClass('bad good').addClass( OO.type ).html( OO.message ).fadeIn(); 472 473 if( OO.hide_message ) setTimeout(function(){ LB.evo_lightbox_hide_msg() }, OO.hide_message ); 474 475 if( OO.hide_lightbox ) LB.evo_lightbox_close({ delay: OO.hide_lightbox }); 476 } 477 $.fn.evo_lightbox_hide_msg = function(opt){ 478 LB = this; 479 LB.find('p.message').hide(); 480 } 481 482 483 // add preload animations to lightbox u4.6 484 $.fn.evo_lightbox_show_open_animation = function(opt){ 485 LB = this; 486 var defaults = { 487 'animation_type':'initial', // animation type initial or saving 488 'preload_temp_key': 'init', // 4.6 passed on preload template key 489 'end':'admin', 490 }; 491 var OO = $.extend({}, defaults, opt); 492 493 if( OO.animation_type == 'initial'){ 494 495 passed_data = OO.end == 'admin' ? evo_admin_ajax_handle: evo_general_params; 496 497 html = passed_data.html.preload_general; 498 if( OO.preload_temp_key != 'init') html = passed_data.html[ OO.preload_temp_key ]; 499 LB.find('.evolb_content').html( html ); 500 } 501 502 if( OO.animation_type == 'saving') 503 LB.find('.evolb_content').addClass('loading'); 504 } 505 506 // eventcard Lightbox function v4.6 507 $.fn.evo_cal_lightbox_trigger = function( SC_data , obj, CAL ){ 508 const cancel_class = ( obj.hasClass('cancel_event')) ? ' cancel_event':''; 509 510 var extra_classes = ' ' + SC_data.calendar_type; // 4.6.6 511 512 var other_data = { 513 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, 514 CAL:CAL, 515 obj: obj, 516 et_data: obj.find('.evoet_data').data(),// @4.5.5 517 SC: SC_data 518 }; 519 520 // generate a random ID for this 521 maximum = 99; 522 minimum = 10; 523 var randomnumber = Math.floor(Math.random() * (maximum - minimum + 1)) + minimum; 524 525 // lightbox additional class 526 lbac = ''; 527 if( evo_general_params.cal.lbs == 'sc1') lbac = 'within'; 528 if( evo_general_params.cal.lbs == 'sc2') lbac = 'within ecSCR'; 529 530 // AJAX via lightbox 531 if(SC_data.ux_val == '3a'){ 532 533 var new_content = ''; 534 new_content += '<div class="evo_cardlb" style="padding:10px 10px 0 10px">'; 535 new_content += '<div style="margin-bottom:20px; width:100%; height:200px" class="evo_preloading"></div>'; 536 const box = '<div style="display:flex;justify-content: space-between;margin-bottom:10px"><div style="width:40px;height:40px; margin-right:20px" class="evo_preloading"></div> <div style="flex:1 0 auto"> <div class="evo_preloading" style="width:70%; height:20px; margin-bottom:10px"></div><div class="evo_preloading" style="width:100%; height:80px; margin-bottom:10px"></div> </div> </div>'; 537 new_content += box + box + box; 538 new_content += '</div>'; 539 540 541 var data_arg = {}; 542 data_arg['event_id'] = SC_data.event_id; 543 data_arg['ri'] = SC_data.repeat_interval; 544 data_arg['SC'] = SC_data; 545 data_arg['load_lbcontent'] = true; 546 data_arg['action'] = 'eventon_load_single_eventcard_content'; 547 data_arg['uid'] = 'load_single_eventcard_content_3a'; 548 if( CAL ) data_arg['calid'] = CAL.attr('id'); 549 550 551 //reset view to match 552 if( data_arg.SC.tile_style == '2') data_arg.SC.eventtop_style = '0'; 553 data_arg.SC.tile_style = '0'; 554 data_arg.SC.tile_bg = '0'; 555 data_arg.SC.tiles = 'no'; 556 557 $('body').evo_lightbox_open({ 558 uid:'evo_open_eventcard_lightbox', 559 //uid:'load_single_eventcard_content_3a', 560 lbc:'evo_eventcard_'+ randomnumber,lbac: lbac, 561 end:'client', 562 content: new_content, 563 ajax:'yes', 564 ajax_type: 'endpoint', 565 ajax_action: 'eventon_load_single_eventcard_content', 566 d: data_arg, 567 other_data: other_data 568 });
569 570 // open lightbox using page event content 571 }else{ 572 573 var content = obj.closest('.eventon_list_event').find('.event_description').html(); 574 var _content = $(content).not('.evcal_close'); 575 576 clrW = obj.closest('.eventon_list_event').hasClass('clrW') ? 'clrW':'clrB';//4.6.2 577 578 CAL.evo_lightbox_open({ 579 uid:'evo_open_eventcard_lightbox', 580 lbc:'evo_eventcard_'+ randomnumber,lbac: lbac, 581 end:'client', 582 content: '<div class="evopop_top '+clrW+'">'+ obj.html() +'</div><div class="evopop_body">' + content +'</div>', 583 other_data: other_data 584 }); 585 586 return; 587 } 588 } 589 590 // listerners for lightbox on eventcard 591 $.fn.evo_cal_lb_listeners = function(){ 592 // Listerners 593 // process various lightbox types 594 $('body') 595 .on('evo_lightbox_processed', function(event, OO, LIGHTBOX){ 596 if( OO.uid != 'evo_open_eventcard_lightbox') return false; 597 598 var CAL = OO.other_data.CAL; 599 600 LIGHTBOX.addClass('eventcard eventon_events_list'); 601 LIGHTBOX_content = LIGHTBOX.find('.evolb_content'); 602 LIGHTBOX_content.attr('class', 'evolb_content '+ OO.other_data.extra_classes ); 603 604 var SC = OO.other_data.SC; 605 var obj = OO.other_data.obj; 606 607 //console.log(SC); 608 609 // update border color and eventtop color 610 const evoet_data = OO.other_data.et_data; 611 612 bgcolor = bggrad =''; 613 if( evoet_data ){
614 bgcolor = evoet_data.bgc; 615 bggrad = evoet_data.bggrad; 616 } 617 618 619 // if tiles and eventtop style set to clean 620 var show_lightbox_color = ( SC.eventtop_style == '0' || SC.eventtop_style == '4') ? false: true; 621 622 if( (CAL && CAL.hasClass('color') && show_lightbox_color) || 623 (!CAL && show_lightbox_color) 624 625 ){ 626 LIGHTBOX_content.addClass('color'); 627 LIGHTBOX_content.find('.evopop_top').css({ 628 'background-color':bgcolor, 629 'background-image': bggrad, 630 }); 631 }else{ 632 LIGHTBOX_content.find('.evopop_top').css({'border-left':'3px solid '+bgcolor}); 633 } 634 635 // trigger 636 if( obj.data('runjs')){ 637 $('body').trigger('evo_load_single_event_content',[ SC.event_id, OO.other_data.obj]); 638 } 639 640 641 // RTL 642 if( SC.evortl =='yes') LIGHTBOX.addClass('evortl'); 643 644 $('body').trigger('evolightbox_end', [ LIGHTBOX , CAL, OO]); // @s4.6 645 646 }) 647 648 // after eventcard content is loaded to lightbox via 3a - @since 4.2.3 649 .on('evo_ajax_success_evo_open_eventcard_lightbox', function (event, OO, data){ 650 651 if( OO.ajaxdata.uid != "load_single_eventcard_content_3a") return false; 652 653 LIGHTBOX = $('.evo_lightbox.'+ OO.lightbox_key); 654 LIGHTBOX_content = LIGHTBOX.find('.evolb_content'); 655 656 CAL = $('body').find('#'+ OO.ajaxdata.calid); 657 658 $('body').trigger('evolightbox_end', [ LIGHTBOX , CAL, OO]); // @s4.6 659 }) 660 ; 661 } 662 663 // Get Ajax url @since 4.4 @u 4.5.5 664 $.fn.evo_get_ajax_url = function(opt){ 665 var defaults = { 666 a:'', // action key 667 e:'client', // end 668 type: 'ajax'}; 669 var OO = $.extend({}, defaults, opt); 670 671 // end point url 672 if( OO.type == 'endpoint'){ 673 var evo_ajax_url = ( OO.e == 'client' )? 674 evo_general_params.evo_ajax_url : evo_admin_ajax_handle.evo_ajax_url; 675 return evo_ajax_url.toString().replace( '%%endpoint%%', OO.a ); 676 // rest api url 677 }else if( OO.type == 'rest' ){ 678 var evo_ajax_url = ( OO.e == 'client' )? 679 evo_general_params.rest_url : evo_admin_ajax_handle.rest_url; 680 //console.log(evo_ajax_url); 681 //console.log(OO); 682 return evo_ajax_url.toString().replace( '%%endpoint%%', OO.a ); 683 }else{ 684 action_add = OO.a != '' ? '?action='+ OO.a: ''; 685 return ( OO.e == 'client' ) ? 686 evo_general_params.ajaxurl + action_add : evo_admin_ajax_handle.ajaxurl + action_add; 687 } 688 } 689 690 // Count down // @+ 4.5 691 $.fn.evo_countdown_get = function(opt){ 692 var defaults = { gap:'', endutc: ''}; 693 var OPT = $.extend({}, defaults, opt); 694 var gap = OPT.gap; 695 696 // if gap not provided use endutc 697 if( gap == '' ){ 698 var Mnow = moment().utc(); 699 var M = moment(); 700 M.set('millisecond', OPT.endutc ); 701 702 gap = OPT.endutc - Mnow.unix(); 703 } 704 705 // if negative gap 706 if( gap < 0){ 707 return { 708 'd': 0, 709 'h':0, 710 'm':0, 711 's':0 712 }; 713 } 714 715 distance = ( gap * 1000); 716 717 var days = Math.floor(distance / (1000 * 60 * 60 * 24)); 718 var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 719 var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); 720 var seconds = Math.floor((distance % (1000 * 60)) / 1000); 721 722 minutes = minutes<10? '0'+minutes : minutes; 723 seconds = seconds<10? '0'+seconds : seconds; 724 725 return { 726 'd': days, 727 'h':hours, 728 'm':minutes, 729 's':seconds 730 }; 731 }; 732 // @u 4.5.2 733 $.fn.evo_countdown = function(opt){ 734 var defaults = { S1:''}; 735 var OPT = $.extend({}, defaults, opt); 736 var el = $(this); 737 738 const day_text = ( el.data('d') !== undefined && el.data('d') != '' )? el.data('d'):'Day'; 739 const days_text = ( el.data('ds') !== undefined && el.data('ds') != '' )? el.data('ds'):'Days'; 740 741 // intial run 742 //var gap = parseInt(el.data('gap')); 743 var duration = el.data('dur'); 744 var endutc = parseInt(el.data('endutc')); 745 var text = el.data('t'); 746 747 if(text === undefined) text = ''; 748 749 if( el.hasClass('evo_cd_on')) return; 750 751 // get gap using end time utc 752 var Mnow = moment().utc(); 753 var M = moment(); 754 M.set('millisecond', OPT.endutc ); 755 756 //console.log(Mnow.unix()); 757 //console.log(endutc); 758 759 gap = endutc - Mnow.unix(); 760 761 762 // on initial run - event hasnt happened yet 763 if( gap > 0 ){ 764 765 // initial 766 dd = el.evo_countdown_get({ 'gap': gap }); 767 768 el.html( ( dd.d>0 ? dd.d + ' ' + ( dd.d >1 ? days_text: day_text ) + " " :'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text ); 769
770 el.data('gap', ( gap - 1) ); // save new gap value 771 el.addClass('evo_cd_on'); 772 773 // set intervals 774 var CD = setInterval(function(){ 775 776 gap = el.data('gap'); // get gap for this cycle 777 duration = el.data('dur'); 778 779 const bar_elm = el.closest('.evo_event_progress').find('.evo_ep_bar'); 780 781 // when timer is ticking 782 if( gap > 0 ){ 783 784 // increase bar width if exists 785 if( duration !== undefined && bar_elm.length){ 786 perc = ( (duration - gap)/ duration ) * 100; 787 bar_elm.find('b').css('width',perc+'%'); 788 } 789 790 dd = el.evo_countdown_get({ 'gap': gap }); 791 792 el.html( ( dd.d>0 ? dd.d + ' ' + ( dd.d >1 ? days_text: day_text ) + " ":'') + dd.h + ":" + dd.m +':'+ dd.s +' '+text ); 793 el.data('gap', ( gap - 1) ); 794 795 // when timer expired 796 }else{ 797 798 const expire_timer_action = el.data('exp_act'); 799 800 // perform ajax task after expiration 801 if(expire_timer_action !== undefined){ 802 $('body').trigger('runajax_refresh_now_cal',[ 803 el , 804 el.data('n'), 805 ]); 806 } 807 808 const _complete_text = el.evo_get_txt({V:'event_completed'}); 809 810 // live now text 811 if(bar_elm.length){ 812 bar_elm.addClass('evo_completed'); 813 //el.siblings('.evo_ep_pre').html( _complete_text ); 814 } 815 816 817 // event tag & live elements 818 if( el.closest('.evcal_desc').length){ 819 el.closest('.evcal_desc').find('.eventover').html( _complete_text); 820 el.closest('.evcal_desc').find('.evo_live_now').remove(); 821 } 822 823 // event card 824 if( el.closest('.eventon_list_event').length){ 825 el.closest('.eventon_list_event').find('span.evo_live_now').hide(); 826 } 827 828 el.html(''); 829 clearInterval(CD); 830 } 831 832 },1000); 833 // event has already passed 834 }else{ 835 // if gap is less 836 el.closest('.evo_event_progress').find('.evo_ep_bar').hide(); 837 clearInterval(CD); 838 } 839 }; 840 841 // Handlebar process template data into html 842 $.fn.evo_HB_process_template = function(opt){ 843 var defaults = { TD:'', part:''} 844 var OPT = $.extend({}, defaults, opt); 845 846 BUS = $('#evo_global_data').data('d'); 847 848 template = Handlebars.compile( BUS.temp[ OPT.part ] ); 849 return template( OPT.TD ); 850 } 851 852 // Date range and events @4.5.7 853 // Date range and events - from webpage 854 $.fn.evo_cal_events_in_range = function(opt){ 855 var defaults = { S:'', E:'', 856 hide: true, 857 closeEC:true, 858 showEV: false, // show events 859 showEVL: false, // show events list 860 showAllEvs: false // show all events regardless of the range 861 }; 862 var OPT = $.extend({}, defaults, opt); 863 var CAL = $(this); 864 865 eJSON = CAL.find('.evo_cal_events').data('events'); 866 867 R = {}; 868 html = ''; 869 json = {}; 870 871 show = 0; 872 873 // using events JSON data 874 if( eJSON && eJSON.length > 0){ 875 $.each(eJSON, function(ind, ED){ 876 eO = CAL.find('#event_'+ ED._ID); 877 if(eO === undefined || eO.length==0) return; 878 879 if(OPT.hide) eO.hide(); // pre hide 880 this_show = false; 881 882 // month long or year long events 883 if( ED.month_long || ED.year_long ){ 884 this_show = true; 885 886 }else{ 887 if(CAL.evo_is_in_range({ 888 'S': OPT.S, 'E': OPT.E, 'start': ED.unix_start , 'end':ED.unix_end 889 })){ 890 this_show = true; 891 } 892 } 893 894 if( OPT.showAllEvs) this_show = true; 895 896 if( this_show){ 897 // show event 898 if( OPT.showEV) eO.show(); 899 900 // close open event cards 901 if(OPT.closeEC && SC.evc_open == 'no') eO.find('.event_description').hide().removeClass('open'); 902 903 html += eO[0].outerHTML; 904 json[ ED._ID] = ED; 905 show++; 906 } 907 }); 908 }else{ 909 // get all the events in the events list 910 var cal_events = CAL.find('.eventon_list_event'); 911 912 cal_events.each(function(index, elm){ 913 var ED = $(elm).evo_cal_get_basic_eventdata(); 914 if( !ED) return; 915 916 if(OPT.hide) $(elm).hide(); // pre hide 917 this_show = false; 918 919 // month long or year long events 920 if( $(elm).hasClass('month_long') || $(elm).hasClass('year_long') ){ 921 this_show = true; 922 923 }else{ 924 if(CAL.evo_is_in_range({ 925 'S': OPT.S, 'E': OPT.E, 'start': ED.unix_start , 'end':ED.unix_end 926 })){ 927 this_show = true; 928 } 929 } 930 931 if( OPT.showAllEvs) this_show = true; 932 933 if( this_show){ 934 // show event 935 if( OPT.showEV) $(elm).show(); 936 937 // close open event cards 938 if(OPT.closeEC && SC.evc_open == 'no') 939 $(elm).find('.event_description').hide().removeClass('open'); 940 941 html += $(elm)[0].outerHTML; 942 json[ ED.uID ] = ED; 943 show++; 944 } 945 }); 946 } 947 948 949 // No events 950 if( OPT.showEV){ 951
952 no_event_content = CAL.evo_get_global({S1: 'html', S2:'no_events'}); 953 954 tx_noevents = CAL.evo_get_txt({V:'no_events'}); 955 EL = CAL.find('.eventon_events_list'); 956 EL.find('.eventon_list_event.no_events').remove(); 957 if( show == 0 ) 958 EL.append('<div class="eventon_list_event no_events">'+ no_event_content +'</div>'); 959 } 960 961 // if show events list 962 if( OPT.showEVL){ 963 CAL.find('.eventon_events_list').show().removeClass('evo_hide'); 964 } 965 966 R['count'] = show; 967 R['html'] = html; 968 R['json'] = json; 969 970 return R; 971 } 972 973 // check if an event is in the given date range 974 $.fn.evo_is_in_range = function(opt){ 975 var defaults = { S:'', E:'', start:'',end:''} 976 var OPT = $.extend({}, defaults, opt); 977 978 S = parseInt(OPT.S); 979 E = parseInt(OPT.E); 980 start = parseInt(OPT.start); 981 end = parseInt(OPT.end); 982 983 return ( 984 ( start <= S && end >= E ) || 985 ( start <= S && end >= S && end <= E) || 986 ( start <= E && end >= E ) || 987 ( start >= S && end <= E ) 988 ) ? true: false; 989 } 990 $.fn.evo_cal_hide_events = function(){ 991 CAL = $(this); 992 CAL.find('.eventon_list_event').hide(); 993 } 994 995 // get event data basics from html event on page 996 // ~@version 4.0.3 997 $.fn.evo_cal_get_basic_eventdata = function(){ 998 var ELM = $(this); 999 1000 var _time = ELM.data('time'); 1001 if( _time === undefined ) return false; 1002 1003 const time = _time.split('-'); 1004 const ri = ELM.data('ri').replace('r',''); 1005 const eID = ELM.data('event_id'); 1006 1007 var _event_title = ELM.find('.evcal_event_title').text(); 1008 _event_title = _event_title.replace(/'/g, '''); 1009 1010 1011 var RR = { 1012 'uID': eID + '_' + ri, 1013 'ID': eID , 1014 'event_id': eID , 1015 'ri': ri, 1016 'event_start_unix': parseInt(time[0]), 1017 'event_end_unix': parseInt(time[1]), 1018 'ux_val': ELM.find('.evcal_list_a').data('ux_val'), 1019 'event_title': _event_title, 1020 'hex_color': ELM.data('colr'), 1021 'hide_et': ELM.hasClass('no_et') ? 'y':'n', // hide endtime 1022 'evcal_event_color': ELM.data('colr'), 1023 'unix_start': parseInt(time[0]),// @4.5.7 1024 'unix_end': parseInt(time[1]),// @4.5.7 1025 }; 1026 1027 // event type 1028 RR['ett1'] = {}; 1029 ELM.find('.evoet_eventtypes.ett1 .evoetet_val').each(function(){ 1030 RR['ett1'][ $(this).data('id')] = $(this).data('v'); 1031 }); 1032 1033 // since 4.3.5 1034 const eventtop_data = ELM.find('.evoet_data').data('d'); 1035 1036 // location 1037 if('loc.n' in eventtop_data && eventtop_data['loc.n'] != ''){ 1038 RR['location'] = eventtop_data['loc.n']; 1039 } 1040 1041 // organizer 1042 if('orgs' in eventtop_data && eventtop_data.orgs !== undefined ){ 1043 var org_names = ''; 1044 $.each(eventtop_data.orgs, function(index, value){ 1045 org_names += value +' '; 1046 }); 1047 RR['organizer'] = org_names; 1048 } 1049 1050 // event tags @s 4.5.2 1051 if( 'tags' in eventtop_data && eventtop_data.tags !== undefined ){ 1052 //console.log(eventtop_data.tags); 1053 RR['event_tags'] = eventtop_data.tags; 1054 } 1055 1056 1057 return RR; 1058 1059 } 1060 1061 1062 // DATE time functions @+2.8 1063 $.fn.evo_day_in_month = function(opt){ 1064 var defaults = { M:'', Y:''} 1065 var OPT = $.extend({}, defaults, opt); 1066 1067 return new Date(OPT.Y, OPT.M, 0).getDate(); 1068 } 1069 $.fn.evo_get_day_name_index = function(opt){ 1070 var defaults = { M:'', Y:'', D:''} 1071 var OPT = $.extend({}, defaults, opt); 1072 1073 //return moment(OPT.Y+'-'+OPT.M+'-'+OPT.D).utc().day(); 1074 1075 return new Date( Date.UTC(OPT.Y, OPT.M-1, OPT.D) ).getUTCDay(); 1076 } 1077 1078 // LIGHTBOX 1079 // page Lightbox functions @+2.8 1080 // append to the lightbox main class name .evo_lightbox 1081 // Legacy 1082 $.fn.evo_prepare_lb = function(){ 1083 $(this).find('.evo_lightbox_body').html(''); 1084 } 1085 $.fn.evo_show_lb = function(opt){ 1086 var defaults = { RTL:'', calid:''} 1087 var OPT = $.extend({}, defaults, opt); 1088 1089 $(this).addClass('show '+ OPT.RTL).attr('data-cal_id', OPT.calid); 1090 $('body').trigger('evolightbox_show'); 1091 } 1092 $.fn.evo_append_lb = function(opt){ 1093 var defaults = { C:'', CAL:''} 1094 var OPT = $.extend({}, defaults, opt); 1095 $(this).find('.evo_lightbox_body').html( OPT.C); 1096 1097 if( OPT.CAL!= '' && OPT.CAL !== undefined && OPT.CAL.hasClass('color')){ 1098 const LIST = $(this).find('.eventon_events_list'); 1099 if( LIST.length>0){ 1100 LIST.find('.eventon_list_event').addClass('color'); 1101 } 1102 } 1103 } 1104 1105 // event image gallery @4.6 1106 // adjust event image height on lightbox 1107 $.fn.eventon_check_img_size_on_lb = function( ){ 1108 LB = this; 1109 winH = parseInt($( window ).height()); 1110 winW = parseInt($( window ).width()); 1111 1112 var pad = 50; 1113 if( winW < 650) pad = 20; 1114 if( winW < 500) pad = 10; 1115 1116 winH -= pad*2; 1117 winW -= pad*2; 1118 1119 LB = $('body').find('.evolb_ft_img'); 1120 WINratio = winH/winW; 1121 1122 const IMG = LB.find('img'); 1123 IMGratio = parseInt( IMG.data('h') )/ parseInt( IMG.data('w') ); 1124 img_relative_w = parseInt(winH/IMGratio); 1125 1126 if(WINratio < 1 ){// wider window 1127 if(IMGratio<1){// wider image 1128 if(img_relative_w > winW){ // image wider than window 1129 IMG.css({'width': winW ,'height': 'auto' } ); 1130 }else{// image smaller than window width 1131 newIH = winH>parseInt(IMG.data('h'))? parseInt(IMG.data('h')): winH; 1132 newIW = (winH>parseInt(IMG.attr('h')) )? '100%': img_relative_w; 1133 IMG.css({'width': newIW ,'height': newIH } ); 1134 } 1135 }else{ 1136 IMG.css({'width': 'auto' ,'height': winH } ); 1137 } 1138 }else{ 1139 if(IMGratio<1){// wider image 1140 IMG.css({'width': winW ,'height': 'auto' } ); 1141 }else{// taller image 1142 if(img_relative_w > winW){ // relative image wider than window 1143 IMG.css({'width': winW ,'height': 'auto' } ); 1144 }else{ 1145 IMG.css({'width': 'auto' ,'height': winH } ); 1146 } 1147 } 1148 } 1149 } 1150 1151 $.fn.eventon_process_main_ft_img = function(OO){ 1152 IMG = this; 1153 img_sty = 'def'; 1154 if( IMG.hasClass('fit') ) img_sty = 'fit'; 1155 if( IMG.hasClass('full') ) img_sty = 'full'; 1156 1157 box_width = IMG.width(); 1158 box_height = IMG.height(); 1159 1160 img_height = parseInt( IMG.data('h') ); 1161 img_width = parseInt( IMG.data('w') ); 1162 img_ratio = IR = img_height / img_width; // image ratio 1163 1164 // fit style 1165 if( IMG.hasClass('fit')){
1166 new_width = box_height / img_ratio; 1167 //console.log(new_width+' '+box_height +' '+img_ratio); 1168 new_height = box_height; 1169 if( new_width > box_width ){// width is wider than box 1170 1171 if( IR <1 ){ 1172 new_width = box_width; new_height = IR * new_width; 1173 }else{ 1174 new_height = box_height; new_width = new_height / IR; 1175 } 1176 } 1177 IMG.find('span').css({'width':new_width, 'height': new_height} ); 1178 } 1179 1180 // full style 1181 if( IMG.hasClass('full')){ 1182 new_height = img_ratio * box_width; 1183 new_width = box_width; 1184 IMG.find('span').css({'width':new_width, 'height': new_height} ); 1185 IMG.css({'height': new_height} ); 1186 } 1187 1188 //console.log(box_width +' '+img_width+' '+new_width); 1189 } 1190 1191 // Calendar Data & Shortcodes 1192 // get shortcodes from evo bottom 1193 $.fn.evo_shortcode_data = function(){ 1194 var ev_cal = $(this); 1195 return ev_cal.find('.evo_cal_data').data('sc'); 1196 } 1197 1198 // get filter data @4.6 1199 $.fn.evo_get_filter_data = function(){ 1200 return $(this).find('.evo_cal_data').data('filter_data'); 1201 } 1202 $.fn.evo_cal_get_filter_sub_data = function( tax , key){ 1203 newdata = $(this).evo_get_filter_data(); 1204 1205 return newdata[ tax ][ key ]; 1206 } 1207 $.fn.evo_cal_update_filter_data = function(tax, new_val, key){ 1208 1209 newdata = $(this).evo_get_filter_data(); 1210 1211 if( key === undefined) key = 'nterms'; 1212 1213 newdata[ tax ][ key ] = new_val; 1214 1215 $(this).find('.evo_cal_data').data('filter_data', newdata ); 1216 } 1217 $.fn.evo_cal_get_footer_data = function( key ){ 1218 data = $(this).find('.evo_cal_data').data(); 1219 1220 //console.log(data); 1221 1222 if( data === undefined ) return false; // 4.6.2 1223 if( key in data ) return data[ key ]; 1224 return false; 1225 } 1226 1227 // hide cal data from view 1228 $.fn.evo_cal_hide_data = function(){ 1229 $(this).find('.evo_cal_data').attr({ 1230 'data-sc':'', 1231 'data-filter_data':'', 1232 'data-nav_data':'', 1233 }); 1234 } 1235 1236 // update shortcode values from filter changes @u4.6 1237 $.fn.evo_update_sc_from_filters = function(){ 1238 var el = $(this); 1239 SC = el.evo_shortcode_data(); 1240 1241 1242 $.each( el.evo_get_filter_data() , function(index, value){ 1243 var default_val = value.terms; 1244 var filter_val = value.nterms; 1245 const NOT_values = value.__notvals; 1246 1247 filter_val = filter_val == ''? 'NOT-all': filter_val; 1248 1249 var not_string = ''; 1250 1251 // if NOT filter in place > include that in tax value for query 1252 if( NOT_values!== undefined && NOT_values.length >0 && filter_val != default_val ){ 1253 1254 $.each(NOT_values, function(index, value){ 1255 not_string += 'NOT-'+ value +','; 1256 }); 1257 } 1258 1259 SC[ index ] = not_string + filter_val; 1260 }); 1261 1262 1263 el.find('.evo_cal_data').data( 'sc', SC ); 1264 } 1265 1266 1267 1268 // get shortcode single value 1269 $.fn.evo_get_sc_val = function(opt){ 1270 var defaults = { F:''} 1271 var OPT = $.extend({}, defaults, opt); 1272 var ev_cal = $(this); 1273 1274 if(OPT.F=='') return false; 1275 SC = ev_cal.find('.evo_cal_data').data('sc'); 1276 1277 if(!(SC[ OPT.F])) return false; 1278 return SC[ OPT.F]; 1279 } 1280 // UPDATE Single value 1281 $.fn.evo_update_cal_sc = function(opt){ 1282 var defaults = { 1283 F:'', V:'' 1284 } 1285 var OPT = $.extend({}, defaults, opt); 1286 var ev_cal = $(this); 1287 SC = ev_cal.find('.evo_cal_data').data('sc'); 1288 1289 SC[ OPT.F ] = OPT.V; 1290 1291 ev_cal.find('.evo_cal_data').data( 'sc', SC ); 1292 } 1293 // UPDATE all shortcode values 1294 $.fn.evo_update_all_cal_sc = function(opt){ 1295 var defaults = {SC:''} 1296 var OPT = $.extend({}, defaults, opt); 1297 var CAL = $(this); 1298 CAL.find('.evo_cal_data').data( 'sc', OPT.SC ); 1299 } 1300 1301 // OTHERS 1302 // hex colors // @+2.8 1303 $.fn.evo_is_hex_dark = function(opt){ 1304 var defaults = { hex:'808080'} 1305 var OPT = $.extend({}, defaults, opt); 1306 1307 hex = OPT.hex; 1308 1309 var c = hex.replace('#',''); 1310 var is_hex = typeof c === 'string' && c.length === 6 && !isNaN(Number('0x' + c)); 1311 1312 if(is_hex){ 1313 var values = c.split(''); 1314 r = parseInt(values[0].toString() + values[1].toString(), 16); 1315 g = parseInt(values[2].toString() + values[3].toString(), 16); 1316 b = parseInt(values[4].toString() + values[5].toString(), 16); 1317 }else{ 1318 var vals = c.substring(c.indexOf('(') +1, c.length -1).split(', '); 1319 var r = vals[0] // extract red 1320 var g = vals[1]; // extract green 1321 var b = vals[2]; 1322 } 1323 1324 var luma = ((r * 299) + (g * 587) + (b * 114)) / 1000; // per ITU-R BT.709 1325 1326 return luma>155? true:false; 1327 } 1328 1329 // get rgb from hex code @4.5 1330 $.fn.evo_rgb_process = function(opt){ 1331 var defaults = { data:'808080',type:'rgb', method:'rgb_to_val'} 1332 var opt = $.extend({}, defaults, opt); 1333 1334 const color = opt.data; 1335 1336 // RGB => hex 1337 if( opt.method == 'rgb_to_hex'){ 1338 if(color == '1'){ 1339 return; 1340 }else{ 1341 if(color !=='' && color){ 1342 rgb = color.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); 1343 1344 return "#" + 1345 ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) + 1346 ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) + 1347 ("0" + parseInt(rgb[3],10).toString(16)).slice(-2); 1348 } 1349 } 1350 } 1351 1352 // RGB => rgb val 1353 if( opt.method == 'rgb_to_val'){ 1354 if( opt.type == 'hex'){ 1355 var rgba = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(color); 1356 var rgb = new Array(); 1357 rgb['r']= parseInt(rgba[1], 16); 1358 rgb['g']= parseInt(rgba[2], 16); 1359 rgb['b']= parseInt(rgba[3], 16); 1360 1361 }else{ 1362 rgb = color; 1363 } 1364 1365 return parseInt((rgb['r'] + rgb['g'] + rgb['b'])/3); 1366 } 1367 } 1368 1369 // Other data 1370 $.fn.evo_get_OD = function(){
1371 var ev_cal = $(this); 1372 return ev_cal.find('.evo_cal_data').data('od'); 1373 } 1374 1375 1376 1377 // get evo data for a given calendar 1378 $.fn.evo_getevodata = function(){ 1379 1380 var ev_cal = $(this); 1381 var evoData = {}; 1382 1383 ev_cal.find('.evo-data').each(function(){ 1384 $.each(this.attributes, function(i, attrib){ 1385 var name = attrib.name; 1386 if(attrib.name!='class' && attrib.name!='style' ){ 1387 name__ = attrib.name.split('-'); 1388 evoData[name__[1]] = attrib.value; 1389 } 1390 }); 1391 }); 1392 1393 return evoData; 1394 } 1395 1396 // check if mobile device v4.6 1397 $.fn.evo_is_mobile = function(){ 1398 return ( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) )? true: false; 1399 } 1400 1401 // eventon loading functions 1402 // v 2.4.5 -- deprecating 1403 $.fn.evo_loader_animation = function(opt){ 1404 var defaults = { 1405 direction:'start' 1406 } 1407 var OPT = $.extend({}, defaults, opt); 1408 1409 if(OPT.direction == 'start'){ 1410 $(this).find('#eventon_loadbar').slideDown(); 1411 }else{ 1412 $(this).find('#eventon_loadbar').slideUp(); 1413 } 1414 } 1415 1416 // DEPRECATED functions 1417 $.fn.evo_item_shortcodes = function(){ 1418 var OBJ = $(this); 1419 var shortcode_array ={}; 1420 OBJ.each(function(){ 1421 $.each(this.attributes, function(i, attrib){ 1422 var name = attrib.name; 1423 if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ 1424 name__ = attrib.name.split('-'); 1425 shortcode_array[name__[1]] = attrib.value; 1426 } 1427 }); 1428 }); 1429 return shortcode_array; 1430 } 1431 $.fn.evo_shortcodes = function(){ 1432 var ev_cal = $(this); 1433 var shortcode_array ={}; 1434 1435 ev_cal.find('.cal_arguments').each(function(){ 1436 $.each(this.attributes, function(i, attrib){ 1437 var name = attrib.name; 1438 if(attrib.name!='class' && attrib.name!='style' && attrib.value !=''){ 1439 name__ = attrib.name.split('-'); 1440 shortcode_array[name__[1]] = attrib.value; 1441 } 1442 }); 1443 }); 1444 return shortcode_array; 1445 } 1446 1447 1448}(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.