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