1 2// <script> 3 4// Append Hidden Form 5 6if(!$(AJAXForm).length) { 7 8 BodyObject.append( 9 '<form data-route="1" '+ 10 'class="ajax fixed AJAXForm" '+ 11 (!WebApp.IsCMS ? 'data-loading="0" ' : '')+ 12 'data-ajaxreplace="'+(WebApp.IsCMS ? 'section.right > article' : 'main')+'" '+ 13 'style="left:9999px;top:9999px;">'+ 14 '</form>' 15 ); 16 17} 18 19// Detect History Changes 20 21WindowObject.on('popstate',function() { 22 23 if(!window.location.hash || ['#SF','#BF','#Tab'].includes(window.location.hash.replace(/\d/g,''))) { 24 25 $('.popup, .overlay, .lightbox').remove(); 26 27 var PopStateOverride = false; 28 29 console.log('PopState: '+window.location.pathname.replace('/','')+window.location.search); 30 31 if(typeof window.PopStateOverride === 'function') { 32 $('.popup .close').click(); 33 window.PopStateOverride(); 34 } 35 else { 36 37 if($(AJAXForm).attr('data-scrollrestore') && 'scrollRestoration' in history) { 38 history.scrollRestoration = $(AJAXForm).attr('data-scrollrestore'); 39 } 40 WebApp.ProcessAJAXRequest(); 41 42 } 43 44 } 45 46}); 47 48// Call OnPageReady 49 50OnPageReady({'InitialLoad' : true}); 51 52// Clear Date Pickers 53 54BodyObject.on('keydown','.datepicker, datetimepicker',function(event) { 55 56 if([8,46].indexOf(event.which) !== -1) { 57 $(this).val(''); 58 $(this).siblings('[type=hidden][name="'+$(this).attr('name')+'"]').val(''); 59 } 60 61}); 62 63// Copy To Clipboard 64 65BodyObject.on('click','.CopyToClip',function(event) { 66 67 event.preventDefault(); 68 event.stopImmediatePropagation(); 69 70 var THIS = $(this); 71 72 if(!$('.TempField').length) { 73 74 var Copy = THIS.attr('data-copy'); 75 var Text = THIS.is(':input') ? THIS.val() : 76 (Copy && Copy !== 'AS_TEXT' ? Copy : (Copy === 'AS_TEXT' ? THIS.text() : THIS.html().replace(/<br>|<br\/>|<br \/>/g,"\n"))); 77 78 BodyObject.append('<textarea class="TempField" style="position:absolute;top:-10000px;left:-10000px;">'+Text+'</textarea>'); 79 80 } 81 82 var CopyText = document.querySelector('.TempField'); 83 84 CopyText.select(); 85 document.execCommand('copy'); 86 87 $('.TempField').remove(); 88 89 if(Callback = THIS.attr('data-callback')) { 90 window[Callback](THIS); 91 } 92 else { 93 94 BodyObject.append( 95 '<div class="popup Copied">'+ 96 ' <h6>Copied</h6>'+ 97 ' <div class="paddedb_medium">Copied To Clipboard</div>'+ 98 '</div>' 99 ); 100 101 ShowPopup(false,'.Copied'); 102 103 setTimeout(function() { 104 $('.Copied .close').click(); 105 },500); 106 107 } 108 109}); 110 111// Load reCAPTCHA Script ON Form Interaction 112 113BodyObject.on('click','input, textarea',function(event) { 114 reCAPTCHAcallback(); 115}); 116 117// Collapsable Menus 118 119BodyObject.on('click','nav.collapse .dropdown > a',function(event) { 120 121 event.preventDefault(); 122 event.stopImmediatePropagation(); 123 124 var Height = 0; 125 var Action = ''; 126 var Class = $(this).parent().attr('class').split(' '); 127 Class = Class[1]; 128 129 if($(this).siblings('div').outerHeight() === 0) { 130 131 Action = 'Expand'; 132 133 $(this).parent().addClass('expanded'); 134 $(this).siblings('div').css('height',0); 135 136 $(this).siblings('div').children().each(function() { 137 Height = Height + $(this).outerHeight(); 138 }); 139 } 140 else { 141 Height = 0; 142 Action = 'Close'; 143 } 144 145 $.post( 146 '/', 147 { 148 'MenuCollapse' : $(this).closest('.collapse').attr('data-menu'), 149 'Class' : Class, 150 'Action' : Action 151 } 152 ); 153 154 $(this).stop().siblings('div').animate({ 155 'height' : Height 156 },250,function() { 157 if(Height === 0) { 158 $(this).parent().removeClass('expanded'); 159 $(this).css({ 160 'overflow' : 'hidden' 161 }); 162 } 163 else { 164 $(this).css({'height':'auto'}); 165 } 166 }); 167 168}); 169 170// AJAX Links 171 172BodyObject.on('click','nav.ajax a, a.ajax',function(event) { 173 174 var THIS = $(this); 175 var Dropdown = THIS.parents('.dropdown'); 176 var Unset = false; 177 var HREF = THIS.attr('href'); 178 179 if(!event.ctrlKey && !event.metaKey) { 180 181 if(HREF) { 182 183 var El1 = THIS.closest('.mobile-menu'); 184 var El2 = THIS.closest('#MM'); 185 186 if(El1.length || El2.length) { 187 188 if(El1.length) { 189 $('a.mobile-menu').click(); 190 } 191 else { 192 193 let Close = $('.overlay#Close'); 194 Close = Close.length ? Close : El2.find('#Close'); 195 196 if(Close.length) { 197 Close.click(); 198 } 199 200 } 201 202 if(Dropdown.length) { 203 Dropdown.children('a').click(); 204 } 205 206 } 207 else if(Dropdown.length) { 208 Dropdown.addClass('AutoLeave'); 209 ProcessDropdownMouseLeave(Dropdown); 210 } 211 212 } 213 214 if(THIS.hasClass('ajax') && !HREF) { 215 216 HREF = window.location.pathname.replace('/','')+window.location.search; 217 Unset = true; 218 219 THIS.attr('href',HREF); 220 221 } 222 223 if(HREF && THIS.attr('target') !== '_blank' && HREF.indexOf('?GenerateReport') === -1 && HREF.indexOf(':') === -1) { 224 225 event.preventDefault(); 226 227 if(!THIS.hasClass('greyed_bg')) { 228 229 if(Replace = THIS.attr('data-ajaxreplace') || THIS.closest('.ajax').attr('data-ajaxreplace')) { 230 $(AJAXForm).attr('data-ajaxreplace',Replace); 231 } 232 233 if(ScrollFix = THIS.attr('data-ajaxscrollfix') || THIS.closest('.ajax').attr('data-ajaxscrollfix')) { 234 $(AJAXForm).attr('data-ajaxscrollfix',ScrollFix); 235 } 236 237 var ActiveForm = !WebApp.IsCMS ? $(this).closest('form[data-ajaxreplace]') : {}; 238 239 WebApp.ProcessAJAXRequest({ 240 'HREF' : $(this).attr('href'), 241 'ViaPopUp' : $(this).closest('.popup').length ? true : false, 242 'Form' : ActiveForm.length ? ActiveForm : null 243 }); 244 245 if(Unset) { 246 THIS.removeAttr('href'); 247 } 248 249 } 250 251 } 252 253 } 254 255}); 256 257// Toggle Switch 258 259BodyObject.on('change','.toggleswitch [type=checkbox]',function(event) { 260 261 var ToggleElement = $(this).siblings('.relative').children('.absolute'); 262 263 if(ToggleElement.hasClass('On')) { 264 ToggleElement.removeClass('On'); 265 } 266 else { 267 ToggleElement.addClass('On'); 268 } 269 270}); 271 272// Trigger Sort By "Ordering ASC" On ".OrderDrag "Click 273 274BodyObject.on('click','.responsive-table .greyed_bg.OrderDrag',function() { 275 $('button[value="Ordering ASC"]').focus().click(); 276}); 277 278// Show / Hide Next Div 279 280BodyObject.on('change','.ShowHide',function(event) { 281 282 let THIS = $(this); 283 284 if(!THIS.hasClass('Propagate')) { 285 event.stopImmediatePropagation(); 286 } 287 288 let CSS = ''; 289 let Hide = THIS.attr('data-hide'); 290 Hide = Hide ? Hide.split('|') : ['','0','No']; 291 let Sel = THIS.attr('data-showhide'); 292 let El = Sel ? $(Sel) : null; 293 El = El ? El : THIS.closest('label').length ? THIS.closest('label').next() : THIS.next(); 294 let IsRadio = THIS.is(':radio'); 295 let Checked = THIS.is(':checked'); 296 297 if(THIS.prop('tagName') === 'SELECT') { 298 299 CSS = Hide.includes(THIS.val()) ? 'none' : 'block'; 300 301 } 302 else if(THIS.is(':checkbox') || IsRadio) { 303 304 let Val = THIS.val(); 305 El = Sel ? El : (THIS.closest('label').length ? THIS.closest('label').next() : THIS.next()); 306 CSS = Checked && !Hide.includes('1') || Hide.includes('1') && !Checked ? 'block' : 'none'; 307 308 if(IsRadio) { 309 310 if(!Sel && CSS === 'block') { 311 312 $('[name="'+THIS.attr('name')+'"]:not([value="'+THIS.attr('value')+'"])').each(function() { 313 314 var _THIS_ = $(this); 315 316 SiblingElement = _THIS_.closest('label') ? _THIS_.closest('label').next() : _THIS_.next(); 317 SiblingElement.css('display','none'); 318 319 }); 320 321 } 322 else if(Sel && Checked) { 323 CSS = !Hide.includes(Val) ? 'block' : 'none'; 324 } 325 326 } 327 328 } 329 330 if(!IsRadio || Checked) { 331 El.css('display',CSS); 332 } 333 334 // If Manual Change Inside A Pop-Up, Reload It To Resize It 335 336 let _PopUp = THIS.closest('.popup'); 337 338 if(_PopUp.length && event.originalEvent) { 339 ShowPopup(false,'.'+_PopUp.attr('class').split(' ')[2],true); 340 } 341 342}); 343 344$('.ShowHide').change(); 345 346// Enable Feed Buttons For All Feeds 347 348BodyObject.on('click','.items-feed a.arrow',function() { 349
350 var Class = $(this).parent().attr('class').split(' '); 351 var Class = Class[0]; 352 var ItemsFeedElement = $(this).parent().find('.active').prop('tagName').toLowerCase(); 353 var ItemsFeedElement = '.'+Class+' '+($(this).parent().hasClass('Scroll') ? '.scroller > ' : '> ')+ItemsFeedElement; 354 var Callback = $(this).parent().attr('data-callback'); 355 356 ShowNextItem(ItemsFeedElement,($(this).hasClass('prev') ? true : false),Callback); 357 358}); 359 360BodyObject.on('click','.dots a',function() { 361 362 var THIS = $(this); 363 var ActiveDot = THIS.parent().find('.fas').index(); 364 var Prev = ActiveDot > THIS.index(); 365 var Count = Number(String(ActiveDot - THIS.index()).replace('-','')); 366 var Class = $(this).parent().attr('data-class'); 367 var Feed = $('.items-feed.'+Class); 368 var ItemsFeedElement = Feed.find('.active').prop('tagName').toLowerCase(); 369 ItemsFeedElement = '.items-feed.'+Class+' '+(Feed.hasClass('Scroll') ? '.scroller > ' : '> ')+ItemsFeedElement; 370 371 if(Count) { 372 ShowNextItem(ItemsFeedElement,Prev,'ChangeFeedDot',Count); 373 } 374 375}); 376 377 378// Publish & Un-Publish For New Records 379 380BodyObject.on('click','button[name=Publish],button[name=UnPublish]',function(event) { 381 if($('input[name=Status]').length) { 382 event.preventDefault(); 383 var NewValue = $('input[name=Status]').val() == 1 ? 99999 : 1; 384 var NewButton = $('input[name=Status]').val() == 1 ? '<button name="Publish" class="button red" value="3">No<span class="fa fa-times"></span></button>' : '<button name="UnPublish" class="button green" value="">Yes<span class="fa fa-check"></span></button>'; 385 $('input[name=Status]').val(NewValue); 386 $(this).replaceWith(NewButton); 387 } 388}); 389 390// Delete Record Warning Pop-Up 391 392BodyObject.on('click','.fa-remove, .Del, .Prompt',function(event) { 393 394 var THIS = $(this); 395 396 if(!THIS.hasClass('Propagate')) { 397 event.stopImmediatePropagation(); 398 } 399 400 if(!THIS.hasClass('CloseTrigger')) { 401 event.preventDefault(); 402 } 403 if(!$('.popup.delete-confirm').length) { 404 405 THIS.addClass('CloseTrigger'); 406 407 BodyObject.append( 408 '<form class="popup small delete-confirm ajax">'+ 409 (THIS.attr('data-popuptext') ? THIS.attr('data-popuptext') : 410 ' <h6>Confirm</h6>'+ 411 ' <div class="paddedb_medium"><p>Are You Sure You Want To Delete?</p></div>')+ 412 ' <div class="foot">'+ 413 ' <a class="more close red_bg floatl widthauto">No</a>'+ 414 ' <a class="more green_bg floatr widthauto'+(THIS.hasClass('PreventAutoClose') ? ' PreventAutoClose' : '')+'">Yes</a>'+ 415 ' <div class="clear"></div>'+ 416 ' </div>'+ 417 '</form>' 418 ); 419 420 if(THIS.attr('data-function')) { 421 window[THIS.attr('data-function')](THIS.attr('data-function-args') ? THIS.attr('data-function-args') : null); 422 } 423 424 ShowPopup(false,'.delete-confirm'); 425 426 } 427 428}); 429 430// Escape To Close Pop-Up Or Lightbox 431 432BodyObject.on('keydown',function(event) { 433 434 if(event.which === 27) { 435 $('.popup .close, .lightbox .close').click(); 436 } 437 438}); 439 440BodyObject.on('keydown','.delete-confirm .green_bg:not(.PreventAutoClose)',function(event) { 441 442 if(event.which === 13) { 443 444 event.preventDefault(); 445 event.stopImmediatePropagation(); 446 447 $(this).click(); 448 449 } 450 451}); 452 453BodyObject.on('click','.delete-confirm .green_bg:not(.PreventAutoClose)',function(event) { 454 455 event.preventDefault(); 456 event.stopImmediatePropagation(); 457 458 var THIS = $(this); 459 460 if(!$('button.CloseTrigger').hasClass('AJAXSubmit')) { 461 462 if($('button.CloseTrigger').hasClass('IncludeSiblings')) { 463 464 var Fields = THIS.closest('.delete-confirm').find('input, textarea, select'); 465 var Target = $('button.CloseTrigger').parent(); 466 467 Fields.each(function() { 468 469 var _THIS_ = $(this); 470 var Clone = _THIS_.clone(); 471 472 Clone.addClass('none').val(_THIS_.val()).appendTo(Target); 473 474 }); 475 476 } 477 478 $('.CloseTrigger').focus().click(); // First Focus To Ensure Active Element Changes 479 $('.popup.delete-confirm .close').click(); 480 481 } 482 else { 483 484 var Button = $('button.CloseTrigger'); 485 486 Button.closest('form').addClass('ajax'); 487 Button.focus().click(); 488 489 setTimeout(function() { 490 THIS.siblings('.close').click(); 491 },100); 492 493 } 494 495}); 496 497// Dropdown Mouseenter Function 498 499function ProcessDropdownMouseEnter(Element) { 500 501 var Type = Element.attr('class').replace(' active','').split(' '); 502 Type = Type[Type.length - 1]; 503 504 // Horizontal 505 506 if(Type === 'hori') { 507 508 if(Element.closest('nav').hasClass('detailed')) { 509 510 Element.children('div').css({'height':'auto','display':'flex'}); 511 512 setTimeout(function() { 513 Element.children('div').css({'opacity' : 1}); 514 },1); 515 516 } 517 else { 518 var NewHeight = 0; 519 Element.children('div').children().each(function(){ 520 NewHeight = NewHeight + $(this).outerHeight(); 521 }); 522 Element.children('div').stop().animate({ 'height': NewHeight+'px' },500,function() { 523 $(this).css('overflow','visible'); 524 }); 525 526 } 527 528 } 529 530 // Vertical 531 532 else if(Type === 'vert') { 533 534 if(Element.closest('nav').hasClass('detailed')) { 535 Element.children('div').css({'width':'auto','display':'none', 'opacity' : 0}); 536 } 537 else { 538 Element.children('div').stop().animate({ 'width': Element.children('div').attr('data-width')+'px' },500,function() { 539 $(this).css('overflow','visible'); 540 }); 541 542 } 543 544 } 545 546} 547 548// Dropdown Mouseout Function 549 550function ProcessDropdownMouseLeave(Element) { 551 552 var Type = Element.attr('class').replace(' AutoLeave','').replace(' active','').split(' '); 553 Type = Type[Type.length - 1]; 554 555 // Horizontal 556 557 if(Type === 'hori') { 558 559 var AutoLeave = Element.hasClass('AutoLeave'); 560 561 if(Element.closest('nav').hasClass('detailed')) { 562 563 Element.children('div').css('opacity','0'); 564 565 setTimeout(function() { 566 Element.children('div').css('display','none'); 567 },200);
568 569 } 570 else { 571 572 var Speed = AutoLeave ? 0 : 500; 573 574 Element.children('div').stop().animate({ 'height': '0px' },Speed,function() { 575 $(this).css('overflow','hidden'); 576 }); 577 578 } 579 580 if(AutoLeave) { 581 Element.removeClass('AutoLeave'); 582 } 583 584 } 585 586 // Vertical 587 588 else if(Type === 'vert') { 589 590 var AutoLeave = Element.hasClass('AutoLeave'); 591 var Speed = AutoLeave ? 0 : 500; 592 593 if(Element.closest('nav').hasClass('detailed')) { 594 Element.children('div').stop().fadeTo(Speed,0,function() { 595 $(this).css('display','none'); 596 }); 597 } 598 else { 599 600 Element.children('div').stop().animate({ 'width': '0px' },Speed,function() { 601 $(this).css('overflow','hidden'); 602 603 }); 604 605 } 606 607 if(AutoLeave) { 608 Element.removeClass('AutoLeave'); 609 } 610 611 } 612 613} 614 615/* Dropdown Menu: Detect Touch */ 616 617BodyObject.on('click touchstart','nav:not(.mobile-menu):not(.collapse):not(#MM) .dropdown > a',function(event) { 618 619 if(event.pointerType === 'touch'&& window.navigator.userAgent.toLowerCase().match(/(edge)/) || 620 event.type === 'touchstart' && window.navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad)/) || 621 event.type === 'click' && window.navigator.userAgent.toLowerCase().match(/(android|iemobile|blackberry|bada|ipad)/)) { 622 623 event.preventDefault(); 624 event.stopImmediatePropagation(); 625 626 if(!$(this).hasClass('TouchProcessed') && $(this).attr('href') && !$(this).closest('.detailed').length) { 627 $(this).addClass('TouchProcessed'); 628 $(this).siblings('div').prepend($(this).clone()); 629 } 630 631 if( 632 $(this).parent().hasClass('hori') && $(this).parent().children('div').height() < 25 || 633 $(this).parent().hasClass('vert') && $(this).parent().children('div').width() < 25 || 634 $(this).closest('.detailed').length && $(this).parent().children('div').css('display') === 'none' 635 ) { 636 637 ProcessDropdownMouseEnter($(this).parent()); 638 } 639 else { 640 ProcessDropdownMouseLeave($(this).parent()); 641 } 642 643 } 644 645}); 646 647/* Dropdown Menu: Hover */ 648 649BodyObject.on('mouseenter','nav:not(.mobile-menu):not(.collapse) .dropdown',function() { 650 651 var THIS = $(this); 652 653 var Timeout = setTimeout(function(Timeout) { 654 ProcessDropdownMouseEnter(THIS); 655 THIS.attr('data-hovered','true'); 656 },window.navigator.userAgent.toLowerCase().match(/(edge)/) ? 450 : 150); 657 658 $(this).attr('data-hovered-timeout',Timeout); 659 660}); 661 662BodyObject.on('mouseleave','nav:not(.mobile-menu) .dropdown',function(){ 663 664 if($(this).attr('data-hovered')) { 665 ProcessDropdownMouseLeave($(this)); 666 } 667 clearTimeout($(this).attr('data-hovered-timeout')); 668 $(this).attr('data-hovered-timeout',''); 669 $(this).attr('data-hovered',''); 670 671}); 672 673if($('.dropdown > div .active').length) { 674 $('.dropdown > div .active').parent().addClass('active'); 675} 676 677// Auto-Scroll Item Images 678 679if($('.item-images').attr('data-autoscroll')) { 680 ScrollItemImages(); 681} 682 683// Play & Pause Auto-Scroll 684 685BodyObject.on('click','.item-images .thumbnails > .fas',function() { 686 687 if($(this).hasClass('fa-play')) { 688 $(this).addClass('fa-pause').removeClass('fa-play'); 689 ScrollItemImages(); 690 } 691 else if($(this).hasClass('fa-pause')) { 692 $(this).addClass('fa-play').removeClass('fa-pause'); 693 clearInterval(window.ItemImagesScroll); 694 } 695 696}); 697 698// Items Images Interation: Select Image 699 700BodyObject.on('click','.item-images .thumbnails img',function() { 701 702 if(!window.AutoClick) { 703 $('.item-images .fa-pause').click(); 704 } 705 706 var This = $(this); 707 var Size = This.closest('.item-images').attr('data-size'); 708 var Source = This.attr('src').replace('tiny/',(Size !== 'large' ? Size+'/' : '')); 709 var Img = This.closest('.item-images').find('.cell img[src="'+$(this).attr('src').replace('/tiny/',(Size === 'large'? '/' : '/'+Size+'/'))+'"]'); 710 711 This.parent().addClass('active').siblings().removeClass('active'); 712 Img.removeClass('none').siblings().addClass('none'); 713 714 ItemImagesChildDimensions(Img); 715 716}); 717 718// Items Images Interation: Scroll Through Thumbnails 719 720BodyObject.on('click','.item-images .thumbnails .arrow',function() { 721 722 if(!window.AutoClick) { 723 $('.item-images .fa-pause').click(); 724 } 725 726 var THIS = $(this); 727 var Direction = THIS.hasClass('prev') ? '+' : '-'; 728 var Width = THIS.siblings('div').children().outerWidth(); 729 730 THIS.siblings('div').children(':first-child').animate({'margin-left':Direction+'='+Width},350,function() { 731 732 var _THIS = $(this); 733 734 _THIS.css('margin-left',0); 735 736 if(Direction === '-') { 737 _THIS.insertAfter(_THIS.siblings(':last-child')); 738 } 739 else { 740 _THIS.siblings(':last-child').insertBefore(_THIS); 741 } 742 743 }); 744 745}); 746 747// Items Images Interation: Hover 748 749BodyObject.on('mousemove','.item-images.zoom .cell img',function(event) { 750 751 $('.item-images .fa-pause').click(); 752 753 if(WindowObject.outerWidth(true) + 17 > 800) { 754 755 var Size = $(this).closest('.item-images').attr('data-size'); 756 var Source = $(this).attr('src').replace('/'+Size+'/','/'); 757 758 if(!$('.magnified').length) { 759 $(this).after('<div class="magnified" style="background-image:url(images/loading.gif);"><img src="'+Source+'" /></div>'); 760 $('.magnified img').on('load',function() { 761 var Width = $(this).width() / $(this).height(); 762 Width = Width * $(this).parent().height(); 763 $(this).parent().addClass('loaded').css({'width':Width}); 764 }); 765 } 766 767 var Offset = $(this).offset(); 768 var Zoom = $(this).closest('.item-images').attr('data-zoom'); 769 var ZoomX = (event.pageX - Offset.left) * (Zoom / 100); 770 ZoomX = ZoomX * 0.5; 771 var ZoomY = (event.pageY - Offset.top) * (Zoom / 100); 772 ZoomY = ZoomY * 0.5; 773 774 775 $('.magnified.loaded').css({'background-image':'url('+Source+')','background-size':Zoom+'%','background-position':'-'+ZoomX+'px -'+ZoomY+'px'}); 776 } 777 778}); 779 780BodyObject.on('mouseout','.item-images .cell img',function() { 781 $('.magnified, .lens').remove(); 782}); 783 784// Custom Lightbox 785 786BodyObject.on('click','.lightbox .arrow',function() { 787 if($(this).hasClass('prev')) { 788 if($('.currentlightbox').parent().parent().hasClass('photogallery')) { 789 var ElementType = $('.currentlightbox').prop('tagName'); 790 if($('.currentlightbox').parent().prev().length) { 791 $('.currentlightbox').parent().prev().children(ElementType).click(); 792 } 793 // If There Are Multiple Galleries On The Page, Show Last Image Of Previous One 794 else if($('.item-list.photogallery').length > 1) { 795 var Index = $('.currentlightbox').parent().parent().index('.item-list.photogallery'); 796 Index = Index == 0 ? ($('.item-list.photogallery').length - 1) : Index - 1; 797 $('.item-list.photogallery:eq('+Index+')').children().children().last(
797).click(); 798 } 799 else { 800 $('.currentlightbox').parent().siblings().last().children(ElementType).click(); 801 } 802 } 803 else { 804 if($('.currentlightbox').prev().length) { 805 $('.currentlightbox').prev().click(); 806 } 807 else { 808 $('.currentlightbox').siblings().last().click(); 809 } 810 } 811 } 812 else { 813 if($('.currentlightbox').parent().parent().hasClass('photogallery')) { 814 var ElementType = $('.currentlightbox').prop('tagName'); 815 if($('.currentlightbox').parent().next().length) { 816 $('.currentlightbox').parent().next().children(ElementType).click(); 817 } 818 // If There Are Multiple Galleries On The Page, Show First Image Of Next One 819 else if($('.item-list.photogallery').length > 1) { 820 var Index = $('.currentlightbox').parent().parent().index('.item-list.photogallery'); 821 Index = Index == ($('.item-list.photogallery').length - 1) ? 0 : Index + 1; 822 $('.item-list.photogallery:eq('+Index+')').children().children().first().click(); 823 } 824 else { 825 $('.currentlightbox').parent().siblings().first().children(ElementType).click(); 826 } 827 } 828 else { 829 if($('.currentlightbox').next().length) { 830 $('.currentlightbox').next().click(); 831 } 832 else { 833 $('.currentlightbox').siblings().first().click(); 834 } 835 } 836 } 837}); 838 839BodyObject.keydown(function(event) { 840 841 if(event.which === 116) { 842 843 if(event.shiftKey) { 844 845 event.preventDefault(); 846 847 let URI = window.location.pathname.replace('/',''); 848 URI = URI || 'home'; 849 850 WebApp.ProcessAJAXRequest({'URI' : URI+window.location.search+window.location.hash}); 851 852 } 853 854 } 855 else if($('.lightbox').length) { 856 857 if(event.which == 37) { 858 $('.lightbox .arrow.prev').click(); 859 } 860 if(event.which == 39) { 861 $('.lightbox .arrow.next').click(); 862 } 863 864 } 865 866}); 867 868BodyObject.on('click','.lightbox-link',function(event) { 869 870 SetBodyPosition(); 871 872 if($(this).is('img')) { 873 var ImageURL = $(this).attr('src').replace('-small',''); 874 ImageURL = ImageURL.replace('/small/','/'); 875 ImageURL = ImageURL.replace('/thumb/',($(this).hasClass('ToSmall') ? '/small/' : '/')); 876 ImageURL = ImageURL.replace('/tiny/','/'); 877 } 878 else { 879 event.preventDefault(); 880 var ImageURL = $(this).attr('href'); 881 } 882 $('.currentlightbox').removeClass('currentlightbox'); 883 $(this).addClass('currentlightbox'); 884 if ($('div.lightbox').length) { // IF LIGHTBOX ALREADY EXISTS FADE IT OUT AND REMOVE IT 885 $('div.lightbox').fadeTo(300, 0.0, 886 function() { 887 $(this).remove(); 888 }); 889 } 890 else { 891 LoadingOverlay(); 892 } 893 if($(this).attr('title')) { 894 var Caption = '<div class="caption">'+$(this).attr('title').replace(/---/g,'<br/><br/>') +'</div>'; 895 } 896 else { 897 var Caption = ''; 898 } 899 BodyObject.append('<div class="lightbox" style="background-image:url(\''+ImageURL+'\');">'+Caption+'<a style="right:50%;top:50%;" class="close"></a><img class="source" src="'+ImageURL+'"/><img class="original" src="'+ImageURL+'"/></div>'); 900 901 var ElementType = $(this).prop('tagName'); 902 if($(this).parent().parent().hasClass('photogallery') || $(this).siblings(ElementType).length) { 903 $('.lightbox').append('<a class="arrow prev fa fa-chevron-left c3"></a><a class="arrow next fa fa-chevron-right c3"></a>'); 904 } 905 906 $('div.lightbox img').fadeTo(1500, 0.0, // FADE OUT ALREADY HIDDEN IMG TO ALLOW IMG TO BE LOADED FULLY 907 function() { 908 $('div.lightbox').fadeTo(400, 1.0); 909 if(WindowObject.height() > $('div.lightbox img.original').height()) { 910 $('div.lightbox').css('background-size','auto'); 911 } 912 SetLightboxSize(); 913 PlaceCloseButton(); 914 }); 915 916}); 917 918BodyObject.on('click','.close, .exit',function() { 919 920 var THIS = $(this); 921 922 $('.CloseTrigger').removeClass('CloseTrigger'); 923 924 var ElementToClose = THIS.closest(THIS.attr('data-close') || '.popup, .lightbox'); 925 926 ElementToClose = ElementToClose.length ? ElementToClose : THIS.parent(); 927 928 ElementToClose.animate({'top':'85%','opacity':0},350,function() { 929 930 if($(this).hasClass('records') || !$(this).find('.close, .exit').hasClass('hide')) { 931 $(this).remove(); 932 } 933 else { 934 $(this).css('display','none'); 935 } 936 937 }); 938 939 if(!THIS.attr('data-retainoverlay')) { 940 RemoveOverlay(); 941 } 942 943}); 944// Show Titles (Legacy Tooltips) 945 946BodyObject.on('mouseenter','.showtitles',function() { 947 $(this).prepend('<div'+($(this).attr('data-titlesclass') ? ' class="'+$(this).attr('data-titlesclass')+'"' : '')+'>'+$(this).attr('title')+'</div>'); 948 $(this).attr('title',''); 949}); 950 951BodyObject.on('mouseleave','.showtitles',function() { 952 $(this).attr('title',$('div',this).html()); 953 $('div',this).remove(); 954}); 955 956// Tooltips 957 958BodyObject.on('mouseenter','[data-tooltip]',function() { 959 960 let THIS = $(this); 961 let TT = THIS.attr('data-tooltip'); 962 963 try { 964 TT = JSON.parse(TT); 965 } 966 catch(e) { 967 TT = {'Text' : TT}; 968 } 969 970 TT.Text = TT.Text.slice(0,1) === "\r" ? TT.Text.replace(/\n/,'') : TT.Text; 971 TT.Colour = TT.Colour || 'colour1'; 972 973 THIS.prepend('<div class="absolute '+TT.Colour+'_bg bgo90 '+(TT.Class || '')+'">'+(TT.Title ? '<h6>'+TT.Title+'</h6>' : '')+TT.Text.replace(/\n/g,'<br/>')+'</div>'); 974 setTimeout(() => { THIS.addClass('hovered'); },50); 975 976}); 977 978BodyObject.on('mouseleave','[data-tooltip]',function() { 979 980 $(this).addClass('hoverout'); 981 982 setTimeout(() => { 983 $(this).removeClass('hoverout hovered'); 984 $('div',this).remove(); 985 },300); 986 987}); 988 989// If Selecting All 990 991BodyObject.on('change','.SelectAll',function(event) { 992 993 event.stopImmediatePropagation(); 994 995 if($(this).is(':checked')) { 996 $('input[name="SelectRecords[]"]').prop('checked','checked'); 997 } 998 else {
999 $('input[name="SelectRecords[]"]').prop('checked',false); 1000 } 1001}); 1002 1003// Load CMS On Header Double-Click 1004 1005BodyObject.on('dblclick','header',function(event) { 1006 1007 if(event.altKey || (event.shiftKey && event.ctrlKey)) { 1008 1009 GetURL({ 1010 1011 'URL' : 'ajax?'+(new Date()).getTime(), 1012 'PostData' : JSON.stringify({ 1013 1014 'Class' : 'Admin', 1015 'Method' : 'Debug', 1016 'Static' : true 1017 1018 }) 1019 }).then(IsAdmin => { 1020 1021 if(IsAdmin) { 1022 window.open('/administrator?AdminSocialLogin=Office365'); 1023 } 1024 1025 }); 1026 1027 } 1028 1029}); 1030 1031// Detect Touch 1032 1033$('body:not([data-touchcheck])').on('touchstart',function() { 1034 $(this).attr('data-touchcheck',true); 1035}); 1036 1037// AJAX Links PopUp 1038 1039BodyObject.on('click','a.AJAXLinks',function() { 1040 1041 let _THIS = $(this); 1042 let ItemClass = _THIS.attr('data-itemclass'); 1043 let LinkClass = _THIS.attr('data-linkclass'); 1044 let Custom = _THIS.attr('data-custom'); 1045 let _URL = 'route/includes/ajax'+ 1046 '?PopUp=1'+ 1047 '&AddLinks=1'+ 1048 '&ObjectClass='+_THIS.attr('data-objectclass')+ 1049 '&LinkClass='+LinkClass+ 1050 '&Method=WriteListOfRecords'+ 1051 (ItemClass ? '&ItemClass='+ItemClass : '')+ 1052 (Custom ? '&CustomData='+encodeURIComponent(Custom) : '')+ 1053 (_THIS.attr('data-append') || ''); 1054 1055 GetURL({'URL' : _URL+'&PostURL='+encodeURIComponent(_URL)}).then(Response => { 1056 1057 $('body > section.right > article').append('<section class="records popup">'+Response+'</section>'); 1058 1059 ShowPopup(false,'.records'); 1060 1061 }); 1062 1063}); 1064 1065// If Selecting AJAX Link 1066 1067BodyObject.on('change','.records.popup input.AJAXLinks',function(event) { 1068 1069 event.stopImmediatePropagation(); 1070 1071 let THIS = $(this); 1072 1073 if(THIS.is(':checked')) { 1074 1075 var Element = THIS.closest('td').siblings('[data-title=Name]'); 1076 Element = Element.length ? Element : THIS.closest('td').siblings('[data-title="Full Name"]'); 1077 var Title = Element.clone(); 1078 Title.find('b').remove(); 1079 Title = Title.text(); 1080 1081 var Name = THIS.attr('data-linklist') || THIS.attr('name').replace('[]',''); 1082 1083 $('.link-list.'+Name+' .grey, .link-list[data-linklist="'+Name+'"] .grey').remove(); 1084 $('.link-list.'+Name+', .link-list[data-linklist="'+Name+'"]').append( 1085 '<label class="flex flexwn pointer">'+ 1086 THIS.clone().wrap('<div></div>').parent().html().replace('">','" checked="checked">')+ 1087 ' <span>'+Title+'</span>'+ 1088 '</label>' 1089 ); 1090 } 1091 1092}); 1093 1094// If Adding New Text Input Array Field 1095 1096BodyObject.on('click','.FieldText.Array .fa-plus',function(event) { 1097 1098 let Parent = $(this).parent(); 1099 let Field = Parent.find('input,textarea'); 1100 let IsDate = Field.hasClass('hasDatepicker'); 1101 1102 if(IsDate) { 1103 Field.datepicker('destroy'); 1104 Field.removeClass('hasDatepicker').removeAttr('id'); 1105 } 1106 1107 let Clone = Parent.clone(); 1108 1109 Clone.find('input,textarea').val(''); 1110 Clone.insertAfter(Parent); 1111 1112 if(!IsDate) { 1113 Parent.next().children('input,textarea').focus(); 1114 } 1115 1116 OnPageReady(); 1117 1118}); 1119 1120// If Deleting Text Input Array Field 1121 1122BodyObject.on('click','.FieldText.Array .Del.CloseTrigger',function() { 1123 $(this).parent().remove(); 1124}); 1125 1126// If Selecting Custom Radio Field 1127 1128BodyObject.on('click','.FieldRadio label:not(.noallow)',function(event) { 1129 $(this).removeClass('o30').siblings().addClass('o30'); 1130}); 1131 1132// If Selecting Custom Select Field 1133 1134BodyObject.on('click','.SelectField > a',function(event) { 1135 1136 let THIS = $(this); 1137 let TargetEl = THIS.siblings('.flowhide'); 1138 let Classes = ['Visible','fa-caret-up','fa-caret-down']; 1139 let Action = (TargetEl.hasClass(Classes[0]) ? 'remove' : 'add'); 1140 1141 TargetEl[Action+'Class'](Classes[0]); 1142 THIS.find('.button.b_bg').children().removeClass(Classes[Action === 'add' ? 2 : 1]).addClass(Classes[Action === 'add' ? 1 : 2]); 1143 1144}); 1145 1146BodyObject.on('click','.SelectField .flowhide a',function() { 1147 1148 let THIS = $(this); 1149 let Classes = 'colour1_bg bgo80'; 1150 let Parent = THIS.closest('.SelectField'); 1151 1152 $('[name="'+THIS.attr('data-name')+'"]').val(THIS.attr('data-value')).change(); 1153 THIS.closest('.absolute').siblings().children('.Selected').text(THIS.text()); 1154 1155 if(Parent.hasClass('Submit')) { 1156 THIS.closest('form').submit(); 1157 } 1158 else { 1159 1160 THIS.addClass(Classes).siblings().removeClass(Classes).closest('.absolute').siblings('.pointer').click(); 1161 1162 let Label = Parent.find('.Label'); 1163 1164 if(Label.length) { 1165 Label.text(THIS.text()); 1166 } 1167 1168 } 1169 1170}); 1171 1172// If Selecting Single Record 1173 1174BodyObject.on('change','table.responsive-table input[name="SelectRecords[]"]',function(event) { 1175 event.stopImmediatePropagation(); 1176}); 1177 1178// Double Click Admin Row 1179 1180BodyObject.on('dblclick','table.responsive-table tr',function() { 1181 1182 var Element = $(this).find('.dblclick').length ? $(this).find('.dblclick') : $(this).find('.fa-edit'); 1183 1184 if(Element.length && (Element.hasClass('ajax') || Element.hasClass('event'))) { 1185 Element.click(); 1186 } 1187 else { 1188 1189 var URL = $(this).find('.dblclick').attr('href') ? $(this).find('.dblclick').attr('href') : $(this).find('.fa-edit').attr('href'); 1190 1191 if(URL) { 1192 window.location.href = (URL.indexOf('http:') > -1 || URL.indexOf('https:') > -1 ? '' : $('base').attr('href'))+URL; 1193 } 1194 1195 } 1196 1197}); 1198 1199// Sort Responsive Table Record Lists 1200 1201BodyObject.on('click','.SortableColumn button, .SortableColumn input, .SortableColumn select',function(event) { 1202 event.stopImmediatePropagation(); 1203}); 1204 1205BodyObject.on('click','.responsive-table.fw.filterlist td b',function(event) { 1206 1207 var Button = $(this).closest('table').find('.headers-x').children(':eq('+$(this).parent().index()+')').find('button[name=Sort]'); 1208 1209 Button.closest('form').append( 1210 '<div class="fixed left100 top100">'+ 1211 ' <input name="MobileFilter" type="hidden" value="1"/>'+ 1212 Button.clone().wrap('<div></div>').parent().html().replace('fas ','ClonedSort fas ')+ 1213 '</div>' 1214 ); 1215 1216 $('.ClonedSort').focus().click(); 1217 1218}); 1219 1220BodyObject.on('click','.SortableColumn, .MultiSelectParent',function(event) { 1221 1222 let _THIS = $(this); 1223 let THIS = $(event.target); 1224 let MSP = _THIS.hasClass('MultiSelectParent'); 1225 let SC = _THIS.hasClass('SortableColumn'); 1226 1227 // Custom Multi Select Fields 1228 1229 if(SC && MSP || !SC && MSP) { 1230 1231 THIS = THIS.children('.MultiSelect').children();
1232 THIS[(THIS.hasClass('height0') ? 'remove' : 'add')+'Class']('height0'); 1233 1234 } 1235 1236 else if(!THIS.hasClass('MultiSelectParent') && SC) { 1237 _THIS.find('button[name=Sort]').focus().click(); // First Focus To Ensure Active Element Changes 1238 } 1239 1240}); 1241 1242// Show Admin List Filters 1243 1244BodyObject.on('click','.ListFilter',function() { 1245 1246 if(!$('.overlay').length) { 1247 BodyObject.append('<div class="overlay none block-1099"></div>'); 1248 $('.overlay').fadeTo(350,1); 1249 } 1250 1251 var FilterElement = $(this).closest('.popup').length ? $(this).siblings().find('.ajax.filter') : $(this).siblings('.ajax.filter'); 1252 FilterElement = FilterElement.find('.headers-x'); 1253 1254 FilterElement.css({ 1255 'max-height' : (WindowObject.outerHeight() - $('.mobilebar').outerHeight()) * 0.85, 1256 'top' : '50%', 1257 'overflow' : 'auto' 1258 }).fadeTo(350,1); 1259 1260 var MarginTop = FilterElement.outerHeight() / 2; 1261 MarginTop = MarginTop - (MarginTop * 2); 1262 MarginTop = MarginTop + ($('.mobilebar').outerHeight() / 2); 1263 1264 FilterElement.css({ 1265 'margin-top' : MarginTop, 1266 'opacity' : '1' 1267 }); 1268 1269 var RecordsPopUp = FilterElement.closest('.popup.records'); 1270 1271 if(RecordsPopUp.length) { 1272 FilterElement.css({'position' : 'absolute'}); 1273 RecordsPopUp.addClass('flowhide-1999'); 1274 } 1275 1276}); 1277 1278BodyObject.on('click','.records.popup a.hide[data-close=".headers-x"]',function() { 1279 $(this).closest('.popup.records').removeClass('flowhide-1999'); 1280}); 1281 1282// Multi Select 1283 1284BodyObject.on('change','.MultiSelect > .absolute > .flowauto input.SelectAllResults',function(event) { 1285 1286 event.stopImmediatePropagation(); 1287 1288 var THIS = $(this); 1289 var Selector = '[data-name="'+THIS.attr('data-name')+'"] label'; 1290 1291 $(Selector+'.flex').children('input').prop('checked',THIS.is(':checked')); 1292 1293}); 1294 1295BodyObject.on('click','.MultiSelect > .absolute > .flex > a.Apply',function(event) { 1296 1297 event.stopImmediatePropagation(); 1298 1299 var THIS = $(this); 1300 var Form = THIS.closest('form'); 1301 let Button = Form.find('button'); 1302 1303 Form.append('<input name="MultiSelectApplied" type="hidden" value="'+THIS.prev().attr('data-name')+'"/>'); 1304 1305 // if(Button.hasClass('Del') || Button.hasClass('fa-remove')) { 1306 // Button.click(); 1307 // } 1308 // else { 1309 Button.prop('disabled',true); 1310 Form.submit(); 1311 // } 1312 1313}); 1314 1315BodyObject.on('click change','.MultiSelect *',function(event) { 1316 event.stopImmediatePropagation(); 1317}); 1318 1319BodyObject.on('keyup paste','.MultiSelect > .absolute > .flex > input',function(event) { 1320 1321 if(event.which == 13) { 1322 1323 event.preventDefault(); 1324 event.stopImmediatePropagation(); 1325 1326 } 1327 else { 1328 1329 let THIS = $(this); 1330 let Name = THIS.attr('data-name'); 1331 1332 // Timeout To Check For Intent 1333 1334 clearTimeout(window.JSONSearchTimeOut); 1335 1336 window.JSONSearchTimeOut = setTimeout(function(){ 1337 1338 let Selector = '[data-name="'+Name+'"] label'; 1339 let SearchValue = THIS.val().trim().toLowerCase(); 1340 let Search = SearchValue ? window.MultiSelectObjs[Name].filter(Obj => Obj.L.toLowerCase().includes(SearchValue)) : []; 1341 let Notice = $(Selector.replace('label','.Notice')); 1342 let Method = 'add'; 1343 1344 if(Search.length) { 1345 1346 if(Search.length < 1500) { 1347 1348 Search.forEach(I => { 1349 WebApp.MultiSelectEl(Name,I); 1350 }); 1351 1352 } 1353 else { 1354 1355 Method = 'remove'; 1356 Notice.find('.Count').html('<b class="amber">'+Search.length+'</b>'); 1357 1358 } 1359 1360 } 1361 1362 Notice[Method+'Class']('none'); 1363 1364 if(SearchValue) { 1365 $(Selector+'[data-text!="'+SearchValue+'"]:not(:first-child)').removeClass('flex').addClass('none'); 1366 $(Selector+'[data-text*="'+SearchValue+'"]').removeClass('none').addClass('flex'); 1367 } 1368 else { 1369 $(Selector).removeClass('none').addClass('flex'); 1370 } 1371 1372 },250); 1373 1374 } 1375 1376}); 1377 1378// Filter 1379 1380BodyObject.on('keydown input','form.filter input[type=text], form.filter input[type=number]',function(event) { 1381 1382 clearTimeout(window.TouchFilterTimeOut); 1383 1384 var THIS = $(this); 1385 var Form = THIS.closest('form'); 1386 var KeyCode = event.which; 1387 1388 if(KeyCode === 0 && event.originalEvent.inputType === 'deleteContentBackward') { 1389 KeyCode = 8; 1390 } 1391 1392 if(KeyCode !== 229) { 1393 1394 if(KeyCode == 13) { 1395 1396 event.preventDefault(); 1397 event.stopImmediatePropagation(); 1398 1399 Form.find('button').prop('disabled',true); 1400 Form.submit(); 1401 1402 } 1403 else if(BodyObject.attr('data-touchcheck') && ![8,16,17,46].includes(KeyCode)) { 1404 1405 var Selector = 'data-filtertimeout'; 1406 1407 if(!BodyObject.attr(Selector)) { 1408 BodyObject.attr(Selector,$('section > nav a[data-type=1]').length ? 750 : 2000); 1409 } 1410 1411 window.TouchFilterTimeOut = setTimeout(function() { 1412 THIS.closest('.popup.records').removeClass('flowhide-1999'); 1413 Form.submit(); 1414 },BodyObject.attr(Selector)); 1415 1416 } 1417 1418 } 1419 1420}); 1421 1422BodyObject.on('change','form.filter select, form.filter input[type=checkbox]:not(.Excluded), form.filter input[type=radio]:not([value=Selected])',function(event) { 1423 $(this).closest('form').find('button').prop('disabled',true); 1424 $(this).closest('form').submit(); 1425}); 1426 1427BodyObject.on('change','.pagination select',function(event) { 1428 $(this).closest('form').submit(); 1429}); 1430 1431BodyObject.on('keypress','form.update input[name="Ordering[]"]',function(event) { 1432 if(event.which == 13) { 1433 $('button[name=Publish],button[name=UnPublish]').val(0); 1434 } 1435}); 1436 1437// Sort 1438 1439if($('section.records').length) { 1440 if($('input[name=CurrentSort]').val()) { 1441 $('button[name=Sort],button[name=CustomSort]').each(function() { 1442 if($(this).val() == $('input[name=CurrentSort]').val()) { 1443 $(this).addClass('active'); 1444 } 1445 }); 1446 } 1447 else { 1448 $('button[value="Name ASC"]').addClass('active'); 1449 } 1450 if(!$('section.records .empty').length && $('.bulk-actions').length) { 1451 var Cloned = $('section.records .titles').clone(); 1452 Cloned.find('div').each(function() { 1453 $(this).html($(this).is(':last-child') ? 'All <input type="checkbox" class="SelectAll"/>' : ''); 1454 }); 1455 Cloned.insertBefore('form.update >
1455 div:last-child'); 1456 } 1457} 1458 1459BodyObject.on('click','.bulk-actions input[type=radio]',function() { 1460 $(this).parent().siblings('label').children('input[type=radio]').prop('checked',false); 1461}); 1462 1463// AJAX Get Include File 1464 1465BodyObject.on('change','.select-trigger select',function() { 1466 1467 let Select = $(this); 1468 1469 Select.closest('.select-trigger').siblings('.select-params').each(function() { 1470 1471 let ParamsDiv = $(this); 1472 let Val,Key,Value,Check = null; 1473 1474 $(ParamsDiv).attr('id','?'); 1475 1476 $(this).children('input[type=hidden]').each(function() { 1477 1478 let THIS = $(this); 1479 Val = $(this).val().split('::'); 1480 Key = Val[0]; 1481 Val = Val[1]; 1482 1483 if(Key == 'Conditions') { 1484 1485 Val = Val.split('*****'); 1486 1487 $.each(Val,function(Index,Value) { 1488 1489 Value = Value.split('-----'); 1490 Check = Select.attr('name').split('.'); 1491 Check = Check.length > 1 ? Check[Check.length - 1] : Check[0]; 1492 1493 if(Value[0] == Check) { 1494 Val[Index] = Value[0]+'-----'+Select.val(); 1495 } 1496 1497 }); 1498 1499 Val = Val.join('*****'); 1500 1501 } 1502 1503 if(Key == 'IncludeFile') { 1504 THIS.parent().attr('data-page',decodeURIComponent(Val)); 1505 } 1506 else { 1507 THIS.parent().attr('id',THIS.parent().attr('id')+Key+'='+(Key == 'ObjectID' && Select.hasClass('ObjectID') ? Select.val() : Val)+'&'); 1508 } 1509 1510 }); 1511 1512 var IncludeFile = Select.attr('data-page') ? Select.attr('data-page') : $('base').attr('href')+'route/includes/ajax'; 1513 1514 $.get( 1515 1516 IncludeFile+$(ParamsDiv).attr('id')+'AJAX=true&'+new Date().getTime() / 1000, 1517 function(data) {$(ParamsDiv).children('.select-result').html(data); } 1518 1519 ); 1520 1521 }); 1522 1523}); 1524 1525// DateRange Field 1526 1527BodyObject.on('click','.DateRange > span:first-child button',function(event) { 1528 event.stopImmediatePropagation(); 1529}); 1530 1531BodyObject.on('click','.DateRange > span:first-child',function(event) { 1532 event.stopImmediatePropagation(); 1533 $(this).siblings('div.absolute').fadeTo(350,1); 1534}); 1535 1536BodyObject.on('click','.DateRange > div a.amber_bg',function(event) { 1537 event.stopImmediatePropagation(); 1538 $(this).parent('div.absolute').fadeTo(350,0,function() { 1539 $(this).css('display','none'); 1540 }); 1541}); 1542 1543// Mobile Menu 1544 1545$('a.mobile-menu').click(function() { 1546 1547 if(!$('a.mobile-menu').attr('data-left') && $('nav.mobile-menu').css('left') !== '0px') { 1548 $('a.mobile-menu').attr('data-left',$('nav.mobile-menu').css('left')); 1549 } 1550 1551 var IconToTimes = $('nav.mobile-menu').css('left') === '0px' ? true : false; 1552 var Left = $('nav.mobile-menu').css('left') === '0px' ? $('a.mobile-menu').attr('data-left') : 0; 1553 var Opacity = $('nav.mobile-menu').css('left') === '0px' ? 0 : 1; 1554 var MenuWidth = $(this).attr('data-slide') ? $(this).attr('data-slide') : null; 1555 var OverlayClass = $(this).attr('data-overlay') ? 1556 // Light Overlay 1557 ($(this).attr('data-overlay') == 1 ? '' : 1558 // Custom Overlay 1559 $(this).attr('data-overlay')) : 1560 // Invisible Overlay 1561 'nobg'; 1562 1563 if(MenuWidth) { 1564 MenuWidth = parseInt($('nav.mobile-menu').outerWidth()); 1565 var MarginLeft = $('nav.mobile-menu').css('right') === '0px' ? 0 : MenuWidth - (MenuWidth *2); 1566 var Right = $('nav.mobile-menu').css('right') === '0px' ? MenuWidth - (MenuWidth *2) : 0; 1567 IconToTimes = $('nav.mobile-menu').css('right') === '0px' ? true : false; 1568 Opacity = $('nav.mobile-menu').css('right') === '0px' ? 0 : 1; 1569 } 1570 1571 if(IconToTimes) { 1572 BodyObject.css('overflow-y','auto'); 1573 $('a.mobile-menu.fa-times').addClass('fa-bars WasTimes'); 1574 $('.WasTimes').removeClass('fa-times').removeClass('WasTimes'); 1575 $('.overlay.'+(OverlayClass ? OverlayClass+'.' : '')+'mobile-menu').remove(); 1576 } 1577 else { 1578 1579 var ZIndex = $('nav.mobile-menu').css('z-index'); 1580 1581 BodyObject.css('overflow-y','hidden'); 1582 $('a.mobile-menu.fa-bars').addClass('fa-times WasBars'); 1583 $('.WasBars').removeClass('fa-bars').removeClass('WasBars'); 1584 BodyObject.append('<div class="overlay '+(OverlayClass ? OverlayClass+' ' : '')+'mobile-menu" style="opacity:0;z-index:'+(ZIndex - 1)+';"></div>'); 1585 $('.overlay.nobg.mobile-menu').fadeTo(250,1); 1586 1587 } 1588 1589 if(MenuWidth) { 1590 BodyObject.animate({'margin-left':MarginLeft},350); 1591 $('nav.mobile-menu').animate({'right':Right},350); 1592 } 1593 else { 1594 $('nav.mobile-menu').animate({'left':Left},350); 1595 } 1596 1597 if(Opacity === 0 ) { 1598 $('a.close-menu').addClass('none').removeClass('flex'); 1599 } 1600 else { 1601 $('a.close-menu').removeClass('none').addClass('flex'); 1602 } 1603 1604 $('.overlay').fadeTo(350,Opacity,function() { 1605 if(Opacity === 0) { 1606 $(this).css('display','none'); 1607 } 1608 }); 1609 $('.social-feed.facebook a.tab, .btt').fadeTo(350,Opacity === 1 ? 0 : 1,function() { 1610 $(this).css('display',Opacity === 1 ? 'none' : 'block'); 1611 }); 1612 1613}); 1614 1615BodyObject.on('click','.overlay.mobile-menu',function() { 1616 $('a.mobile-menu').click(); 1617}); 1618 1619$('nav.mobile-menu .dropdown > a').click(function(event) { 1620 1621 event.preventDefault(); 1622 event.stopImmediatePropagation(); 1623 1624 var Sibling = $(this).siblings('div'); 1625 var Height = 0; 1626 1627 if(Sibling.outerHeight() == 0) { 1628 Sibling.children().each(function() { 1629 Height = Height + $(this).outerHeight(); 1630 }); 1631 } 1632 1633 Sibling.animate({'height':Height},350,function() { 1634 if(Height !== 0) { 1635 $(this).css('height','auto'); 1636 } 1637 }); 1638 1639}); 1640 1641// On Custom Event Triggers 1642 1643VideoAspectRatio(); 1644BodyObject.on('PhotoHeightSet',VideoAspectRatio); 1645BodyObject.on('CustomResize','.ParallaxParent',function() { 1646 $(this).height($(this).height() * 0.6); 1647}); 1648 1649// Prevent Click Of Greyed Out Login Buttons 1650 1651BodyObject.on('click','button.greyed_bg',function(event) { 1652 event.preventDefault(); 1653 event.stopImmediatePropagation(); 1654}); 1655 1656// Contact Form: Select File 1657 1658BodyObject.on('change','form.CCF input[type=file]',function(event) { 1659 1660 let THIS = $(this); 1661 let Form = THIS.closest('form'); 1662 let Total = 0; 1663 let Limit = 30; 1664 1665 Form.find('[type=file]').each(function() { 1666 1667 for(let i = 0; i !== this.files.length; i++) { 1668 Total += this.files[i].size; 1669 } 1670 1671 }); 1672 1673 if((Total / 1000 / 1000) > Limit) { 1674 1675 PopUp({ 1676 'Class' : '.Alert', 1677 'Title' : 'Error', 1678 'Content' : 'The maximum file upload limit of <b class="red">'+Limit+'MB</b> has been exceeded.' 1679 }); 1680 1681 THIS.val(''); 1682 1683 } 1684 else if(!JSON.parse(THIS.attr('data-accepted')).includes(THIS.val().split('.').pop().toLowerCase())) { 1685 1686 PopUp({ 1687 'Class' : '.Alert', 1688 'Title' : 'Error', 1689 'Content' : THIS.attr('data-error') 1690 }); 1691 1692 THIS.val(''); 1693 1694 } 1695 1696}); 1697 1698// POST AJAX Forms 1699 1700BodyObject.on('click','form.ajax button',function(event) { 1701 1702 if($(document.activeElement)[0].tagName !== 'BUTTON') { 1703 event.preventDefault(); 1704 event.stopImmediatePropagation(); 1705 $(this).focus().click(); 1706 } 1707 1708}); 1709 1710BodyObject.on('keypress','form.ajax',function(event) { 1711 1712 var Target = $(event.target); 1713 var Textarea = event.target.nodeName === 'TEXTAREA'; 1714 var PreventEnter = Target.hasClass('PreventEnter') || Textarea; 1715 1716 if(event.which == 13) { 1717 1718 if(PreventEnter) { 1719 1720 if(!Textarea) { 1721 event.preventDefault(); 1722 event.stopImmediatePropagation(); 1723 } 1724 1725 } 1726 else { 1727 1728 var Form = $(this).closest('form'); 1729 var Button = Form.find('.OnEnter').length ? Form.find('.OnEnter') : Form.find('button').last(); 1730 1731 Button.focus(); // Focus Only, Default Event Will Submit 1732 1733 } 1734 1735 } 1736 1737}); 1738 1739BodyObject.on('keyup','input.OnType',function() { 1740 1741 var THIS = $(this); 1742 var Timeout = THIS.attr('data-timeout') || 350; 1743 1744 clearTimeout(window.SearchTimeOut); 1745 1746 window.SearchTimeOut = setTimeout(function(){ 1747 THIS.closest('form').submit(); 1748 },Timeout); 1749 1750}); 1751 1752BodyObject.on('change','input[type=url]',function() { 1753 1754 var THIS = $(this); 1755 var Val = THIS.val(); 1756 1757 if(!Val.includes('://')) { 1758 1759 fetch('https://'+Val,{'mode' : 'no-cors'}).then(function(R) { 1760 THIS.val('https://'+Val); 1761 }).catch(function(E) { 1762 THIS.val('http://'+Val); 1763 }) 1764 1765 } 1766 1767}); 1768 1769BodyObject.on('submit','form.ajax',function(event) { 1770 1771 event.preventDefault(); 1772 1773 var ActiveElement = $($(document.activeElement)[0]); 1774 window.ScrollTop = $('html, body').scrollTop(); 1775 1776 if(ActiveElement.prop('tagName') === 'BUTTON') { 1777 1778 if(ActiveElement.hasClass('NoProcess')) { 1779 var NoProcess = true; 1780 } 1781 else { 1782 var NoProcess = false; 1783 1784 if(ActiveElement.attr('name')) { 1785 var ElementNew = '<input name="'+ActiveElement.attr('name')+'" value=\''+ActiveElement.val().replace(/'/g,'"')+'\' type="hidden" id="NewAJAXFormElement"/>'; 1786 var EscapedName = '"'+ActiveElement.attr('name')+'"'; 1787 if($(this).find('input[name='+EscapedName+']').length) { 1788 $(this).find('input[name='+EscapedName+']').replaceWith(ElementNew); 1789 } 1790 else { 1791 ActiveElement.before(ElementNew); 1792 } 1793 } 1794 } 1795 } 1796 1797 if(!NoProcess) { 1798 1799 var Pathname = window.location.pathname; 1800 var Action = ''; 1801 var ActiveElementVal = ActiveElement.val().split('?'); 1802 var Hash = ''; 1803 1804 if(Pathname === '/' && ((!$(this).attr('action') && ActiveElement.attr('name') !== 'Action') || ActiveElementVal[0] === '')) { 1805 1806 Pathname = '/home'; 1807 1808 if(ActiveElementVal[0] === '') { 1809 ActiveElement.val('home'); 1810 } 1811 1812 } 1813 1814 if($(this).attr('action') || ActiveElement.attr('name') === 'Action') { 1815 1816 Action = ActiveElement.attr('name') === 'Action' ? ActiveElement.val() : $(this).attr('action'); 1817 Hash = Action.split('#')[1]; 1818 Action = ($(this).attr('data-route') && Action.indexOf('route/') < 0 ? 'route/pages/' : '')+ 1819 (ActiveElement.attr('name') === 'Action' && Action.replace('#'+Hash,'') === '.' ? 'home' : Action); 1820 Action = Action+(ActiveElementVal[1] && !Action.includes('?') ? '?'+ActiveElementVal[1] : ''); 1821 1822 } 1823 else { 1824 1825 Action = (Action.indexOf('route/') < 0 ? 'route/pages'+Pathname.replace('/administrator','') : Pathname)+(ActiveElementVal[1] ? '?'+ 1826 ActiveElementVal[1] : window.location.search); 1827 1828 } 1829 1830 var Method = $(this).attr('method') ? $(this).attr('method').toUpperCase() : (ActiveElement.attr('name') === 'Action' ? 'GET' : 'POST'); 1831 var This = $(this); 1832 var FormFieldData = Method === 'POST' ? new FormData() : (ActiveElement.attr('name') === 'Action' ? 'Action='+ActiveElement.val():$(this).serialize()); 1833 var ActionWas = null; 1834 1835 // POST Request 1836 1837 if(Method === 'POST') { 1838 1839 $.each($(this).find('input, textarea, select'),function(K,V) { 1840 1841 if($(this).is(':checkbox') && $(this).is(':checked') || $(this).is(':radio') && $(this).is(':checked') || (!$(this).is(':checkbox') && !$(this).is(':radio'))) { 1842 if($(this).attr('name') && !$(this).prop('disabled')) { 1843 1844 var Files = V.files; 1845 V = $(V); 1846 1847 if(Files && Files.length) { 1848 1849 for(FileK = 0; FileK < Files.length; FileK++) { 1850 FormFieldData.append(V.attr('name'),Files[FileK],Files[FileK].name); 1851 } 1852 1853 } 1854 else { 1855 FormFieldData.append(V.attr('name'),V.val()); 1856 } 1857 1858 } 1859 } 1860 1861 }); 1862 1863 if(ActiveElement.closest('[data-tabpost]').length) { 1864 FormFieldData.append('TabPost',ActiveElement.closest('[data-tabpost]').attr('data-tabpost'));
1865 } 1866 1867 try { 1868 1869 if(FormFieldData.get('Store')) { 1870 1871 var DateCurrent = Math.floor((new Date()).getTime() / 1000); 1872 var Created = new Date(); 1873 1874 if(!$(this).find('input[name=UpdatedSW]').length) { 1875 $(this).append('<input name="UpdatedSW" type="hidden"/>'); 1876 FormFieldData.append('UpdatedSW',DateCurrent); 1877 } 1878 1879 $('[name="UpdatedSW"]').val(DateCurrent); 1880 1881 if($(this).find('input[name=Created]').length && !$(this).find('input[name=Created]').val()) { 1882 FormFieldData.append('Created',Created.toISOString().split('T')[0]+' '+Created.toTimeString().split(' ')[0]); 1883 } 1884 1885 var NameArray = null; 1886 var TempArray = []; 1887 var FormAsArray = $(this).serializeArray(); 1888 var FormAsObject = {'UpdatedSW' : DateCurrent}; 1889 var FormAsPostObject = {'UpdatedSW' : DateCurrent}; 1890 1891 FormAsArray.map(function(V,K) { 1892 1893 FormAsPostObject[K] = V; 1894 1895 if(V.value && V.value.indexOf('[') < 0) { 1896 1897 FormAsPostObject[V.name] = V.value; 1898 NameArray = V.name.split('[').map(function(K) { 1899 return K = K.replace(']',''); 1900 }); 1901 1902 if(NameArray[1] &&!FormAsObject[NameArray[0]]) { FormAsObject[NameArray[0]] = {}} 1903 if(NameArray[2] &&!FormAsObject[NameArray[0]][NameArray[1]]) { FormAsObject[NameArray[0]][NameArray[1]] = {}} 1904 if(NameArray[3] &&!FormAsObject[NameArray[0]][NameArray[1]][NameArray[2]]) { FormAsObject[NameArray[0]][NameArray[1]][NameArray[2]]= {}} 1905 1906 switch(NameArray.length) { 1907 1908 case 4: { 1909 FormAsObject[NameArray[0]][NameArray[1]][NameArray[2]][NameArray[3]] = V.value; 1910 break; 1911 } 1912 1913 case 3: { 1914 FormAsObject[NameArray[0]][NameArray[1]][NameArray[2]] = V.value; 1915 break; 1916 } 1917 1918 case 2: { 1919 FormAsObject[NameArray[0]][NameArray[1]] = V.value; 1920 break; 1921 } 1922 1923 case 1: { 1924 FormAsObject[NameArray[0]] = V.value; 1925 break; 1926 } 1927 1928 } 1929 1930 } 1931 else if(V.value) { 1932 FormAsObject[K] = V.value; 1933 } 1934 }); 1935 1936 FormFieldData.append('JSONForm',JSON.stringify(FormAsPostObject)); 1937 FormFieldData.append('JSONObject',JSON.stringify(FormAsObject)); 1938 1939 } 1940 1941 } 1942 catch(Error) { 1943 console.log('Unsupported Feature Caught: '+Error); 1944 } 1945 1946 } 1947 1948 // GET Request 1949 1950 else { 1951 1952 if(!Action.includes('?')) { 1953 1954 var Check = Action.replace('route/pages/',''); 1955 1956 if(Query = FormFieldData.replace('Action='+Check,'').replace('Action=.','')) { 1957 Action += '?'+Query; 1958 } 1959 1960 } 1961 1962 } 1963 1964 if( 1965 !$('.overlay').length && ( 1966 (ActiveElement.attr('name') !== 'Action' && $(this).attr('data-loading') !== '0') || 1967 $(this).attr('data-loading') === '1' || 1968 ActiveElement.attr('data-loading') === '1' 1969 ) 1970 ) { 1971 LoadingOverlay(); 1972 } 1973 1974 if(Method === 'GET') { 1975 if(ActiveElement.attr('name') === 'Action') { 1976 FormFieldData = null; 1977 } 1978 else { 1979 FormFieldData = FormFieldData.split('&'); 1980 FormFieldData.forEach(function(V,K) { 1981 V = V.split('='); 1982 if(V[0] === 'Action') { 1983 FormFieldData.splice(K,1); 1984 } 1985 }); 1986 FormFieldData = FormFieldData.join('&'); 1987 } 1988 } 1989 1990 window.ActiveForm = This; 1991 window.ActiveForm.Action = Action; 1992 window.ActiveForm.ActiveElement = ActiveElement; 1993 window.ActiveForm.Data = FormFieldData; 1994 1995 var Callback = [ 1996 window.ActiveForm.attr('data-ajaxcallback'), 1997 window.ActiveForm.attr('data-ajaxcallbackforce') 1998 ]; 1999 2000 if('fetch' in window) { 2001 2002 // If Request Takes Longer Than 1 Second, Add Loading 2003 2004 var LoadingTimeout = setTimeout(function() { 2005 2006 if(!$('body > .overlay').find('.fa-spinner-third').length && This.attr('data-loading') !== '0') { 2007 LoadingOverlay(); 2008 } 2009 },1000); 2010 2011 let CORS = Action.includes('://') ? true : false; 2012 2013 fetch(Action+(Method === 'GET' && FormFieldData ? (Action.indexOf('?') > -1 ? '&' : '?')+FormFieldData : ''),{ 2014 2015 method : Method, 2016 body : Method === 'POST' ? FormFieldData : null, 2017 credentials : CORS ? 'include' : 'same-origin', 2018 headers : Object.fromEntries(Object.entries({ 2019 2020 'X-Requested-With' : 'XMLHttpRequest', 2021 'accept' : 'text/html', 2022 'cache-control' : CORS ? null : 'no-store' 2023 2024 }).filter(([_, v]) => v != null) 2025 2026 ) 2027 2028 }) 2029 .catch(function(Error) { 2030 WebApp.AJAXError(Error); 2031 }) 2032 .then(function(Response) { 2033 2034 clearTimeout(LoadingTimeout); 2035 2036 if([500,503].includes(Response.status)) { 2037 2038 Response = { 2039 2040 "Error" : 2041 2042 "<div class=\"notification-bar error\"><div class=\"flex flexwn\">"+ 2043 " <i class=\"fa-solid fa-triangle-exclamation red f7 marginr_medium\"></i>"+ 2044 " The Technical team has been notified, and will resolve the issue as soon as possible"+ 2045 "</div></div>" 2046 2047 }; 2048 2049 return [JSON.stringify(Response),Response]; 2050 2051 } 2052 else { 2053 2054 var ResponseObject = Response; 2055 2056 return Response.text().then(function(ResponseString) { 2057 return [ResponseString,ResponseObject]; 2058 });
2059 2060 } 2061 2062 }) 2063 .catch(function(Error) { 2064 WebApp.AJAXError(Error); 2065 }) 2066 .then(function(ResponseArray) { 2067 WebApp.AJAXSuccess(ResponseArray,Callback,FormFieldData); 2068 }); 2069 2070 } 2071 else { 2072 2073 $.ajax({ 2074 2075 'type' : Method, 2076 'url' : Action, 2077 'processData' : false, 2078 'contentType' : false, 2079 'data' : FormFieldData, 2080 'success' : WebApp.AJAXSuccess, 2081 'error' : WebApp.AJAXError 2082 2083 }); 2084 2085 } 2086 2087 } 2088 2089}); 2090 2091// Swap Tabs On Click 2092 2093BodyObject.on('click','.tabs a',function() { 2094 2095 let THIS = $(this); 2096 let Index = THIS.index(); 2097 let Selector = '.tabbed > div:eq('+Index+')'; 2098 let Element = $(Selector); 2099 let URI = window.location.pathname+window.location.search; 2100 let Hash = window.location.hash; 2101 let New = URI+(Index ? '#Tab'+(Index+1) : ''); 2102 let Classes = ['green','blue','active']; 2103 let Display = THIS.parent().attr('data-display') ?? 'block'; 2104 let Form = Element.closest('form'); 2105 2106 if(URI+Hash !== New) { 2107 window.history.pushState(null,null,New); 2108 } 2109 2110 if(WebApp.IsCMS) { 2111 THIS.addClass(Classes[0]).removeClass(Classes[1]).siblings().removeClass(Classes[0]).addClass(Classes[1]); 2112 } 2113 else { 2114 THIS.addClass(Classes[2]).siblings().removeClass(Classes[2]); 2115 } 2116 2117 Element.css('display',Display).siblings().css('display','none') 2118 2119 if(Form.hasClass('ajax')) { 2120 Form.attr('action',Form.attr('data-route') ? New : (WebApp.IsCMS ? New.replace('/administrator/','/administrator/route/pages/') : 'route/pages/'+New)); 2121 } 2122 2123 VideoAspectRatio(); 2124 2125}); 2126 2127// Remove Margin Bottom From Paragraphs That Only Have A Clear After Them 2128 2129$('div.clear:last-child').each(function() { 2130 if($(this).prev().prop('tagName') === 'P') { 2131 $(this).prev().css('margin-bottom','0px'); 2132 } 2133}); 2134 2135// Analytics Tracking 2136 2137BodyObject.on('click','[data-track]',function() { 2138 2139 if(typeof gtag !== 'undefined') { 2140 2141 var ViaAds = BodyObject.attr('data-fromads') || ''; 2142 ViaAds = ViaAds ? 'Via'+ViaAds : ''; 2143 var Label = $(this).attr('data-track'); 2144 var Event = 'EnquiryBy'+Label+ViaAds; 2145 2146 gtag('event','generate_lead', { 2147 'event_category' : 'engagement', 2148 'event_label' : Label+'Clicked'+ViaAds, 2149 'value' : 1 2150 }); 2151 2152 gtag('event',Event,{'value': 1}); 2153 2154 console.log('Analytics Event "'+Event+'" Tracked'); 2155 2156 if(Label === 'Telephone' && typeof GoogConv !== 'undefined') { 2157 2158 GoogConv.forEach(V => { 2159 2160 gtag('event', 'conversion', {'send_to': V, 2161 2162 'value' : 1.0, 2163 'currency' : 'GBP' 2164 2165 }); 2166 2167 console.log('Google Conversion Triggered For "'+V+'"'); 2168 2169 }) 2170 2171 } 2172 2173 } 2174 2175}); 2176 2177 2178// On Resize 2179 2180WindowObject.on('resize',function() { 2181 SetLightboxSize(); 2182}); 2183 2184// On Scroll 2185 2186window.YScrollElement = WebApp.IsCMS ? document.querySelector('aside.left') : document; 2187window.YScrollElement = WebApp.IsCMS && YScrollElement && YScrollElement.offsetHeight ? document.querySelector('section.right') : document; 2188var Debounce = function(ScrollFunction) { 2189 2190 var Frame; 2191 2192 return function(Event) { 2193 2194 window.YScrollPos = Event.target.scrollingElement ? Event.target.scrollingElement : Event.target; 2195 window.YScrollPos = Event.target.scrollingElement ? Event.target.scrollingElement : Event.target; 2196 window.YScrollPos = window.YScrollPos.scrollTop; 2197 2198 if(Frame) { 2199 cancelAnimationFrame(Frame); 2200 } 2201 2202 // Queue our function call for the next frame 2203 2204 Frame = requestAnimationFrame(function() { 2205 2206 ScrollFunction(Event); 2207 2208 if(typeof window.OnScrollFunction !== 'undefined') { 2209 window.OnScrollFunction(Event); 2210 } 2211 2212 }); 2213 2214 } 2215 2216}; 2217 2218var OnScroll = function(Event) { 2219 2220 ParallaxScroll(); 2221 TriggerScrollPoints(); 2222 2223 2224} 2225 2226if(YScrollElement) { 2227 YScrollElement.addEventListener('scroll',Debounce(OnScroll), { passive: true }); 2228} 2229 2230OnScroll(); 2231 2232// On Blur 2233 2234window.onblur = () => { if(WebApp.IsCMS) { SWI.FixTabTitle(true); } /* Tabbed PWA Title Fix */ } 2235 2236// On Focus 2237 2238window.onfocus = () => { if(WebApp.IsCMS) { SWI.FixTabTitle(); } /* Tabbed PWA Title Fix */ } 2239 2240// On Load 2241 2242WindowObject.on('load',function() { 2243 Parallax();
2244}); 2245 2246// On Popup 2247 2248WindowObject.on('PopUp',function(event) { 2249 2250 var PopUpEventElement = $(event.target); 2251 var SpamFlag = PopUpEventElement.text().toLowerCase().indexOf('flagged as spam') > -1; 2252 2253 if(SpamFlag) { 2254 PopUpEventElement.addClass('FlaggedAsSpam'); 2255 } 2256 2257 OnPageReady({ 2258 2259 'InitialLoad' : SpamFlag ? true : false, 2260 'ViaPopUp' : PopUpEventElement 2261 2262 }); 2263 2264}); 2265 2266// Set Window Width & Height For Android Chrome Bug 2267 2268window.WindowWidth = WindowObject.width(); 2269 2270// On Resize & Load 2271 2272WindowObject.on('load resize',function(event) { 2273 2274 var Resize = WindowObject.width() != window.WindowWidth && event.type === 'resize'; 2275 2276 if(Resize || event.type === 'load') { 2277 2278 if(Resize) { 2279 2280 clearTimeout(window.ObjFeedTimeout); 2281 2282 window.ObjFeedTimeout = setTimeout(() => { 2283 WebApp.Feed(true); 2284 },500); 2285 2286 var PopUps = $('.popup'); 2287 2288 if(PopUps.length) { 2289 2290 PopUps.each(function() { 2291 2292 let THIS = $(this); 2293 2294 if(THIS.css('display') === 'block') { 2295 ShowPopup(false,'.'+THIS.attr('class').replace(/ /g,'.').replace('..','.'),true); 2296 } 2297 2298 }); 2299 2300 } 2301 2302 } 2303 2304 if(Resize || $('.items-feed .layout-grid').length) { 2305 2306 $('[data-gridprocessed]').removeAttr('data-gridprocessed'); 2307 2308 setTimeout(() => { 2309 SetGridHeight(); 2310 },250); 2311 2312 } 2313 2314 // Resize Only 2315 2316 if(event.type === 'resize') { 2317 2318 var Selector = '.mobile-menu'; 2319 var Button = $('a'+Selector); 2320 var Classes = [ 2321 'fa-times', 2322 'fa-bars' 2323 ]; 2324 2325 Button.removeAttr('data-left'); 2326 $('nav'+Selector).removeAttr('style'); 2327 2328 if(Button.hasClass(Classes[0])) { 2329 Button.addClass(Classes[1]).removeClass(Classes[0]); 2330 } 2331 2332 } 2333 2334 // Functions 2335 2336 SetAutoScrolls(); 2337 LineUpLoop(); 2338 SetMobileFeedSizes(); 2339 ItemImagesHeight(); 2340 VideoAspectRatio(); 2341 PositionDropdowns(); 2342 2343 } 2344 2345 window.WindowWidth = WindowObject.width(); 2346 2347}); 2348 2349 2350 2351// Animate On Click 2352 2353BodyObject.on('click','.item-list.faq li > h3',function() { 2354 2355 let THIS = $(this); 2356 let Expanded = THIS.hasClass('Expanded') ? true : false; 2357 let Height = Expanded ? 0 : THIS.siblings('div').children('div').outerHeight(true); 2358 2359 if(!Expanded) { 2360 THIS.addClass('Expanded'); 2361 THIS.parent().siblings().find('h3.Expanded').click(); 2362 } 2363 else { 2364 THIS.removeClass('Expanded'); 2365 } 2366 2367 THIS.siblings('div').animate({'height':Height},350,function() { 2368 2369 if(!Expanded) { 2370 THIS.siblings('div').css('height','auto'); 2371 } 2372 2373 }); 2374 2375}); 2376 2377!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(j(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(b,c,d){var e="DEPRECATED METHOD: "+c+"\n"+d+" AT \n";return function(){var c=new Error("get-stack-trace"),d=c&&c.stack?c.stack.replace(/^[^\(]+?[\n$]/gm,"").replace(/^\s+at\s+/gm,"").replace(/^Object.<anonymous>\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",f=a.console&&(a.console.warn||a.console.log);return f&&f.call(a.console,e,d),b.apply(this,arguments)}}function i(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&ha(d,c)}function j(a,b){return function(){return a.apply(b,arguments)}}function k(a,b){return typeof a==ka?a.apply(b?b[0]||d:d,b):a}function l(a,b){return a===d?b:a}function m(a,b,c){g(q(b),function(b){a.addEventListener(b,c,!1)})}function n(a,b,c){g(q(b),function(b){a.removeEventListener(b,c,!1)})}function o(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function p(a,b){return a.indexOf(b)>-1}function q(a){return a.trim().split(/\s+/g)}function r(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function s(a){return Array.prototype.slice.call(a,0)}function t(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];r(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function u(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ia.length;){if(c=ia[g],e=c?c+f:b,e in a)return e;g++}return d}function v(){return qa++}function w(b){var c=b.ownerDocument||b;return c.defaultView||c.parentWindow||a}function x(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){k(a.options.enable,[a])&&c.handler(b)},this.init()}function y(a){var b,c=a.options.inputClass;return new(b=c?c:ta?M:ua?P:sa?R:L)(a,z)}
vendor: 5,173 bytes, line 2377
2377function z(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&Aa&&d-e===0,g=b&(Ca|Da)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,A(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function A(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=D(b)),e>1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=na(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY);var j=F(b.deltaTime,b.deltaX,b.deltaY);b.overallVelocityX=j.x,b.overallVelocityY=j.y,b.overallVelocity=ma(j.x)>ma(j.y)?j.x:j.y,b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,b.maxPointers=c.prevInput?b.pointers.length>c.prevInput.maxPointers?b.pointers.length:c.prevInput.maxPointers:b.pointers.length,C(c,b);var k=a.element;o(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===Aa||f.eventType===Ca)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Da&&(i>za||h.velocity===d)){var j=b.deltaX-h.deltaX,k=b.deltaY-h.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=ma(l.x)>ma(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function D(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:la(a.pointers[c].clientX),clientY:la(a.pointers[c].clientY)},c++;return{timeStamp:na(),pointers:b,center:E(b),deltaX:a.deltaX,deltaY:a.deltaY}}function E(a){var b=a.length;if(1===b)return{x:la(a[0].clientX),y:la(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:la(c/b),y:la(d/b)}}function F(a,b,c){return{x:b/a||0,y:c/a||0}}function G(a,b){return a===b?Ea:ma(a)>=ma(b)?0>a?Fa:Ga:0>b?Ha:Ia}function H(a,b,c){c||(c=Ma);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function I(a,b,c){c||(c=Ma);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function J(a,b){return I(b[1],b[0],Na)+I(a[1],a[0],Na)}function K(a,b){return H(b[0],b[1],Na)/H(a[0],a[1],Na)}function L(){this.evEl=Pa,this.evWin=Qa,this.allow=!0,this.pressed=!1,x.apply(this,arguments)}function M(){this.evEl=Ta,this.evWin=Ua,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function N(){this.evTarget=Wa,this.evWin=Xa,this.started=!1,x.apply(this,arguments)}function O(a,b){var c=s(a.touches),d=s(a.changedTouches);return b&(Ca|Da)&&(c=t(c.concat(d),"identifier",!0)),[c,d]}function P(){this.evTarget=Za,this.targetIds={},x.apply(this,arguments)}function Q(a,b){var c=s(a.touches),d=this.targetIds;if(b&(Aa|Ba)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=s(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return o(a.target,i)}),b===Aa)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Ca|Da)&&delete d[g[e].identifier],e++;return h.length?[t(f.concat(h),"identifier",!0),h]:void 0}function R(){x.apply(this,arguments);var a=j(this.handler,this);this.touch=new P(this.manager,a),this.mouse=new L(this.manager,a)}function S(a,b){this.manager=a,this.set(b)}function T(a){if(p(a,db))return db;var b=p(a,eb),c=p(a,fb);return b&&c?db:b||c?b?eb:fb:p(a,cb)?cb:bb}function U(a){this.options=ha({},this.defaults,a||{}),this.id=v(),this.manager=null,this.options.enable=l(this.options.enable,!0),this.state=gb,this.simultaneous={},this.requireFail=[]}function V(a){return a&lb?"cancel":a&jb?"end":a&ib?"move":a&hb?"start":""}function W(a){return a==Ia?"down":a==Ha?"up":a==Fa?"left":a==Ga?"right":""}function X(a,b){var c=b.manager;return c?c.get(a):a}function Y(){U.apply(this,arguments)}function Z(){Y.apply(this,arguments),this.pX=null,this.pY=null}function $(){Y.apply(this,arguments)}function _(){U.apply(this,arguments),this._timer=null,this._input=null}function aa(){Y.apply(this,arguments)}function ba(){Y.apply(this,arguments)}function ca(){U.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function da(a,b){return b=b||{},b.recognizers=l(b.recognizers,da.defaults.preset),new ea(a,b)}function ea(a,b){this.options=ha({},da.defaults,b||{}),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=y(this),this.touchAction=new S(this,this.options.touchAction),fa(this,!0),g(this.options.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function fa(a,b){var c=a.element;c.style&&g(a.options.cssProps,function(a,d){c.style[u(c.style,d)]=b?a:""})}function ga(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ha,ia=["","webkit","Moz","MS","ms","o"],ja=b.createElement("div"),ka="function",la=Math.round,ma=Math.abs,na=Date.now;
2377ha="function"!=typeof Object.assign?function(a){if(a===d||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1;c<arguments.length;c++){var e=arguments[c];if(e!==d&&null!==e)for(var f in e)e.hasOwnProperty(f)&&(b[f]=e[f])}return b}:Object.assign;var oa=h(function(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a},"extend","Use `assign`."),pa=h(function(a,b){return oa(a,b,!0)},"merge","Use `assign`."),qa=1,ra=/mobile|tablet|ip(ad|hone|od)|android/i,sa="ontouchstart"in a,ta=u(a,"PointerEvent")!==d,ua=sa&&ra.test(navigator.userAgent),va="touch",wa="pen",xa="mouse",ya="kinect",za=25,Aa=1,Ba=2,Ca=4,Da=8,Ea=1,Fa=2,Ga=4,Ha=8,Ia=16,Ja=Fa|Ga,Ka=Ha|Ia,La=Ja|Ka,Ma=["x","y"],Na=["clientX","clientY"];x.prototype={handler:function(){},init:function(){this.evEl&&m(this.element,this.evEl,this.domHandler),this.evTarget&&m(this.target,this.evTarget,this.domHandler),this.evWin&&m(w(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(w(this.element),this.evWin,this.domHandler)}};var Oa={mousedown:Aa,mousemove:Ba,mouseup:Ca},Pa="mousedown",Qa="mousemove mouseup";i(L,x,{handler:function(a){var b=Oa[a.type];b&Aa&&0===a.button&&(this.pressed=!0),b&Ba&&1!==a.which&&(b=Ca),this.pressed&&this.allow&&(b&Ca&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:xa,srcEvent:a}))}});var Ra={pointerdown:Aa,pointermove:Ba,pointerup:Ca,pointercancel:Da,pointerout:Da},Sa={2:va,3:wa,4:xa,5:ya},Ta="pointerdown",Ua="pointermove pointerup pointercancel";a.MSPointerEvent&&!a.PointerEvent&&(Ta="MSPointerDown",Ua="MSPointerMove MSPointerUp MSPointerCancel"),i(M,x,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Ra[d],f=Sa[a.pointerType]||a.pointerType,g=f==va,h=r(b,a.pointerId,"pointerId");e&Aa&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Ca|Da)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Va={touchstart:Aa,touchmove:Ba,touchend:Ca,touchcancel:Da},Wa="touchstart",Xa="touchstart touchmove touchend touchcancel";i(N,x,{handler:function(a){var b=Va[a.type];if(b===Aa&&(this.started=!0),this.started){var c=O.call(this,a,b);b&(Ca|Da)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:va,srcEvent:a})}}});var Ya={touchstart:Aa,touchmove:Ba,touchend:Ca,touchcancel:Da},Za="touchstart touchmove touchend touchcancel";i(P,x,{handler:function(a){var b=Ya[a.type],c=Q.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:va,srcEvent:a})}}),i(R,x,{handler:function(a,b,c){var d=c.pointerType==va,e=c.pointerType==xa;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ca|Da)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var $a=u(ja.style,"touchAction"),_a=$a!==d,ab="compute",bb="auto",cb="manipulation",db="none",eb="pan-x",fb="pan-y";S.prototype={set:function(a){a==ab&&(a=this.compute()),_a&&this.manager.element.style&&(this.manager.element.style[$a]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){k(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),T(a.join(" "))},preventDefaults:function(a){if(!_a){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=p(d,db),f=p(d,fb),g=p(d,eb);if(e){var h=1===a.pointers.length,i=a.distance<2,j=a.deltaTime<250;if(h&&i&&j)return}if(!g||!f)return e||f&&c&Ja||g&&c&Ka?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var gb=1,hb=2,ib=4,jb=8,kb=jb,lb=16,mb=32;U.prototype={defaults:{},set:function(a){return ha(this.options,a),this.manager&&this.manager.touchAction.update(),this}
vendor: 4,505 bytes, line 2377
2377,recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=X(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=X(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=X(a,this),-1===r(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=X(a,this);var b=r(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(b,a)}var c=this,d=this.state;jb>d&&b(c.options.event+V(d)),b(c.options.event),a.additionalEvent&&b(a.additionalEvent),d>=jb&&b(c.options.event+V(d))},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=mb)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(mb|gb)))return!1;a++}return!0},recognize:function(a){var b=ha({},a);return k(this.options.enable,[this,b])?(this.state&(kb|lb|mb)&&(this.state=gb),this.state=this.process(b),void(this.state&(hb|ib|jb|lb)&&this.tryEmit(b))):(this.reset(),void(this.state=mb))},process:function(a){},getTouchAction:function(){},reset:function(){}},i(Y,U,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(hb|ib),e=this.attrTest(a);return d&&(c&Da||!e)?b|lb:d||e?c&Ca?b|jb:b&hb?b|ib:hb:mb}}),i(Z,Y,{defaults:{event:"pan",threshold:10,pointers:1,direction:La},getTouchAction:function(){var a=this.options.direction,b=[];return a&Ja&&b.push(fb),a&Ka&&b.push(eb),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Ja?(e=0===f?Ea:0>f?Fa:Ga,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ea:0>g?Ha:Ia,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Y.prototype.attrTest.call(this,a)&&(this.state&hb||!(this.state&hb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=W(a.direction);b&&(a.additionalEvent=this.options.event+b),this._super.emit.call(this,a)}}),i($,Y,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[db]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&hb)},emit:function(a){if(1!==a.scale){var b=a.scale<1?"in":"out";a.additionalEvent=this.options.event+b}this._super.emit.call(this,a)}}),i(_,U,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[bb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Ca|Da)&&!f)this.reset();else if(a.eventType&Aa)this.reset(),this._timer=e(function(){this.state=kb,this.tryEmit()},b.time,this);else if(a.eventType&Ca)return kb;return mb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===kb&&(a&&a.eventType&Ca?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=na(),this.manager.emit(this.options.event,this._input)))}}),i(aa,Y,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[db]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&hb)}}),i(ba,Y,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Ja|Ka,pointers:1},getTouchAction:function(){return Z.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Ja|Ka)?b=a.overallVelocity:c&Ja?b=a.overallVelocityX:c&Ka&&(b=a.overallVelocityY),this._super.attrTest.call(this,a)&&c&a.offsetDirection&&a.distance>this.options.threshold&&a.maxPointers==this.options.pointers&&ma(b)>this.options.velocity&&a.eventType&Ca},emit:function(a){var b=W(a.offsetDirection);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),i(ca,U,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[cb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaT
2377ime<b.time;if(this.reset(),a.eventType&Aa&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Ca)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||H(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=kb,this.tryEmit()},b.interval,this),hb):kb}return mb},failTimeout:function(){return this._timer=e(function(){this.state=mb},this.options.interval,this),mb},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==kb&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),da.VERSION="2.0.6",da.defaults={domEvents:!1,touchAction:ab,enable:!0,inputTarget:null,inputClass:null,preset:[[aa,{enable:!1}],[$,{enable:!1},["rotate"]],[ba,{direction:Ja}],[Z,{direction:Ja},["swipe"]],[ca],[ca,{event:"doubletap",taps:2},["tap"]],[_]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var nb=1,ob=2;ea.prototype={set:function(a){return ha(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?ob:nb},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&kb)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===ob||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(hb|ib|jb)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof U)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;if(a=this.get(a)){var b=this.recognizers,c=r(b,a);-1!==c&&(b.splice(c,1),this.touchAction.update())}return this},on:function(a,b){var c=this.handlers;return g(q(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(q(a),function(a){b?c[a]&&c[a].splice(r(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&ga(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&fa(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},ha(da,{INPUT_START:Aa,INPUT_MOVE:Ba,INPUT_END:Ca,INPUT_CANCEL:Da,STATE_POSSIBLE:gb,STATE_BEGAN:hb,STATE_CHANGED:ib,STATE_ENDED:jb,STATE_RECOGNIZED:kb,STATE_CANCELLED:lb,STATE_FAILED:mb,DIRECTION_NONE:Ea,DIRECTION_LEFT:Fa,DIRECTION_RIGHT:Ga,DIRECTION_UP:Ha,DIRECTION_DOWN:Ia,DIRECTION_HORIZONTAL:Ja,DIRECTION_VERTICAL:Ka,DIRECTION_ALL:La,Manager:ea,Input:x,TouchAction:S,TouchInput:P,MouseInput:L,PointerEventInput:M,TouchMouseInput:R,SingleTouchInput:N,Recognizer:U,AttrRecognizer:Y,Tap:ca,Pan:Z,Swipe:ba,Pinch:$,Rotate:aa,Press:_,on:m,off:n,each:g,merge:pa,extend:oa,assign:ha,inherit:i,bindFn:j,prefixed:u});var pb="undefined"!=typeof a?a:"undefined"!=typeof self?self:{};pb.Hammer=da,"function"==typeof define&&define.amd?define(function(){return da}):"undefined"!=typeof module&&module.exports?module.exports=da:a[c]=da}(window,document,"Hammer"); 2378 2379 2380$('.items-feed.headerslide').on('mousedown','img,a',function(event) { 2381 event.preventDefault(); 2382}); 2383 2384SetHeaderSlideHeight(); 2385 2386WindowObject.on('load',function() { 2387 2388 $('.ParallaxParent.items-feed.headerslide').children(':not(.arrow)').each(function() { 2389 $(this).css('background-image','url('+$(this).find('img').attr('src')+')'); 2390 }); 2391 2392 SetHeaderSlideHeight(); 2393 2394}); 2395 2396WindowObject.resize(function() { 2397 SetHeaderSlideHeight(); 2398}); 2399 2400function MobileGallery() { 2401 var Display = $('.item-list.photogallery').is(':visible') ? 'block' : 'none'; 2402 2403 $('.item-list.photogallery').siblings('.pagination').css('display',Display); 2404 2405 $('.mobile-photo-gallery > div .scroller div').width($('.mobile-photo-gallery > div').width()).trigger($.Event('GalleryWidthSet')); 2406 $('.mobile-photo-gallery > div, .mobile-photo-gallery > div .scroller div').height($('.mobile-photo-gallery > div').width() * $('.mobile-photo-gallery > div').attr('data-aspect')); 2407 $('.mobile-photo-gallery > div .scroller').width($('.mobile-photo-gallery > div').width() * $('.mobile-photo-gallery > div img').length); 2408 2409 var MarginLeft = (parseInt($('.mobile-photo-gallery > div .scroller').attr('data-counter')) * $('.mobile-photo-gallery > div .scroller div').width()); 2410 MarginLeft = MarginLeft - (MarginLeft * 2); 2411 $('.mobile-photo-gallery > div .scroller').css('margin-left',MarginLeft); 2412 2413 $('.mobile-photo-gallery > div img').each(function() { 2414 2415 $(this).css('width','100%'); 2416 $(this).css('height','auto'); 2417 $(this).css('margin','0px'); 2418 2419 if($(this).width() > $(this).height() && $(this).height() <= $('.mobile-photo-gallery > div').height()) { 2420 // If Landscape & Exact Aspect Ratio Of Container 2421 $(this).css('width','100%'); 2422 $(this).css('height','auto'); 2423 $(this).attr('data-orientation','width'); 2424 2425 } 2426 else { 2427 // If Portrait 2428 $(this).css('width','auto'); 2429 $(this).css('height','100%'); 2430 $(this).attr('data-orientation','height'); 2431 $(this).attr('data-margin-top-org',0); 2432 } 2433 2434 if($(this).width() > $(this).height()) { 2435 var MarginTop = ($(this).parent().height() / 2) - ($(this).height() / 2); 2436 $(this).css('margin-top',MarginTop); 2437 $(this).attr('data-margin-top-org',MarginTop); 2438 } 2439 2440 }); 2441 2442} 2443 2444function ShowPreviousPicture() { 2445 if(!$('.mobile-photo-gallery > div .scroller').hasClass('animating')) { 2446 if($('.mobile-photo-gallery > div .scroller').css('margin-left') != '0px') { 2447 $('.mobile-photo-gallery > div .scroller').addClass('animating'); 2448 $('.mobile-photo-gallery > div .scroller').attr('data-counter',parseInt($('.mobile-photo-gallery > div .scroller').attr('data-counter'))-1); 2449 $('.mobile-photo-gallery > div .scroller').animate({'marginLeft':'+='+$('.mobile-photo-gallery > div').width()},500,function() { 2450 $('.mobile-photo-gallery > div .scroller').removeClass('animating'); 2451 if($('.mobile-photo-gallery > div .scroller').css('margin-left') == '-'+($('.mobile-photo-gallery > div .scroller').width() - $('.mobile-photo-gallery > div').width())+'px') { 2452 $('.mobile-photo-gallery > div .scroller .arrow.next').attr('style','display:none!important;'); 2453 } 2454 else { 2455 $('.mobile-photo-gallery > div .scroller .arrow.next').attr('style','display:block!important;'); 2456 } 2457 if($('.mobile-photo-gallery > div .scroller').css('margin-left') == '0px') { 2458 $('.mobile-photo-gallery > div .scroller .arrow.prev').attr('style','display:none!important;'); 2459 } 2460 else { 2461 $('.mobile-photo-gallery > div .scroller .arrow.prev').attr('style','display:block!important;'); 2462 } 2463 }); 2464 } 2465 } 2466} 2467 2468function ShowNextPicture() { 2469 if(!$('.mobile-photo-gallery > div .scroller').hasClass('animating')) { 2470 if($('.mobile-photo-gallery > div .scroller').css('margin-left') != '-'+($('.mobile-photo-gallery > div .scroller').width() - $('.mobile-photo-gallery > div').width())+'px') { 2471 $('.mobile-photo-gallery > div .scroller').addClass('animating'); 2472 $('.mobile-photo-gallery > div .scroller').attr('data-counter',parseInt($('.mobile-photo-gallery > div .scroller').attr('data-counter'))+1); 2473 $('.mobile-photo-gallery > div .scroller').animate({'marginLeft':'-='+$('.mobile-photo-gallery > div').width()},500,function() { 2474 $('.mobile-photo-gallery > div .scroller').removeClass('animating'); 2475 if($('.mobile-photo-gallery > div .scroller').css('margin-left') == '-'+($('.mobile-photo-gallery > div .scroller').width() - $('.mobile-photo-gallery > div').width())+'px') { 2476 $('.mobile-photo-gallery > div .scroller .arrow.next').attr('style','display:none!important;'); 2477 } 2478 else { 2479 $('.mobile-photo-gallery > div .scroller .arrow.next').attr('style','display:block!important;'); 2480 } 2481 if($('.mobile-photo-gallery > div .scroller').css('margin-left') == '0px') { 2482 $('.mobile-photo-gallery > div .scroller .arrow.prev').attr('style','display:none!important;'); 2483 } 2484 else { 2485 $('.mobile-photo-gallery > div .scroller .arrow.prev').attr('style','display:block!important;'); 2486 } 2487 }); 2488 } 2489 } 2490} 2491 2492$(window).on('load',function() { 2493 MobileGallery(); 2494}); 2495 2496$(document).ready(function() { 2497 MobileGallery(); 2498 2499 if($('.mobile-photo-gallery').length) { 2500 2501 var HammerObject = new Hammer($('.mobile-photo-gallery > div > div')[0], { 2502 domEvents: true, 2503 threshold: 0 2504 }); 2505 2506 HammerObject.on('tap',function() { 2507 var clickedElement = event.target.nodeName; 2508 if($(clickedElement).is('div')) { 2509 var Element = $('.mobile-photo-gallery > div > div > div:eq('+$('.mobile-photo-gallery > div > div').attr('data-counter')+') img'); 2510 if(!$('.mobile-photo-gallery > div > div').hasClass('ZoomedIn')) { 2511 $('.mobile-photo-gallery > div > div').addClass('ZoomedIn'); 2512 Element.css('width','auto'); 2513 Element.css('height','auto'); 2514 $('.mobile-photo-gallery .arrow').each(function() { 2515 $(this).attr('data-was-visible',($(this).is(':visible') ? 1 : 0)); 2516 $(this).attr('style','display:none!important;'); 2517 });
2518 } 2519 else { 2520 $('.mobile-photo-gallery > div > div').removeClass('ZoomedIn'); 2521 Element.css(Element.attr('data-orientation'),'100%'); 2522 Element.css('margin-left',0); 2523 Element.css('margin-top',parseInt(Element.attr('data-margin-top-org'))); 2524 $('.mobile-photo-gallery .arrow').each(function() { 2525 if($(this).attr('data-was-visible') == 1) { 2526 $(this).attr('style','display:block!important;'); 2527 } 2528 $(this).removeAttr('data-was-visible'); 2529 }); 2530 } 2531 } 2532 }); 2533 2534 HammerObject.on('panstart',function(event) { 2535 if($('.mobile-photo-gallery > div > div').hasClass('ZoomedIn')) { 2536 var Element = $('.mobile-photo-gallery > div > div > div:eq('+$('.mobile-photo-gallery > div > div').attr('data-counter')+') img'); 2537 Element.attr('data-margin-left',parseInt(Element.css('margin-left'))); 2538 Element.attr('data-margin-top',parseInt(Element.css('margin-top'))); 2539 } 2540 }); 2541 2542 HammerObject.get('pan').set({ direction: Hammer.DIRECTION_ALL }); 2543 2544 HammerObject.on('panleft panright',function(event) { 2545 touchAction: 'pan-x'; 2546 if($('.mobile-photo-gallery > div > div').hasClass('ZoomedIn')) { 2547 2548 var Element = $('.mobile-photo-gallery > div > div > div:eq('+$('.mobile-photo-gallery > div > div').attr('data-counter')+') img'); 2549 var MarginLeftOrg = parseInt(Element.attr('data-margin-left')); 2550 var MarginLeftNew = MarginLeftOrg + event.deltaX; 2551 var MaxX = Element.width() - Element.parent().width(); 2552 MaxX = (MaxX - (MaxX * 2)); 2553 var MarginTopOrg = parseInt(Element.attr('data-margin-top')); 2554 var MarginTopNew = MarginTopOrg + event.deltaY; 2555 var MaxY = Element.height() - Element.parent().height(); 2556 MaxY = (MaxY - (MaxY * 2)); 2557 2558 if(MarginLeftNew <= 0 && MarginLeftNew >= MaxX) { 2559 Element.css({ 2560 'margin-left':MarginLeftNew, 2561 }); 2562 } 2563 2564 if(MarginTopNew <= 0 && MarginTopNew >= MaxY) { 2565 Element.css({ 2566 'margin-top':MarginTopNew, 2567 }); 2568 } 2569 2570 } 2571 }); 2572 2573 HammerObject.on('panup pandown',function(event) { 2574 touchAction: 'pan-y'; 2575 if($('.mobile-photo-gallery > div > div').hasClass('ZoomedIn')) { 2576 2577 var Element = $('.mobile-photo-gallery > div > div > div:eq('+$('.mobile-photo-gallery > div > div').attr('data-counter')+') img'); 2578 var MarginLeftOrg = parseInt(Element.attr('data-margin-left')); 2579 var MarginLeftNew = MarginLeftOrg + event.deltaX; 2580 var MaxX = Element.width() - Element.parent().width(); 2581 MaxX = (MaxX - (MaxX * 2)); 2582 var MarginTopOrg = parseInt(Element.attr('data-margin-top')); 2583 var MarginTopNew = MarginTopOrg + event.deltaY; 2584 var MaxY = Element.height() - Element.parent().height(); 2585 MaxY = (MaxY - (MaxY * 2)); 2586 2587 if(MarginLeftNew <= 0 && MarginLeftNew >= MaxX) { 2588 Element.css({ 2589 'margin-left':MarginLeftNew, 2590 }); 2591 } 2592 2593 if(MarginTopNew <= 0 && MarginTopNew >= MaxY) { 2594 Element.css({ 2595 'margin-top':MarginTopNew, 2596 }); 2597 } 2598 2599 2600 } 2601 }); 2602 2603 HammerObject.on('swipeleft',function() { 2604 if(!$('.mobile-photo-gallery > div > div').hasClass('ZoomedIn')) { 2605 ShowNextPicture(); 2606 } 2607 }); 2608 2609 HammerObject.on('swiperight',function() { 2610 if(!$('.mobile-photo-gallery > div > div').hasClass('ZoomedIn')) { 2611 ShowPreviousPicture(); 2612 } 2613 }); 2614 2615 $('.mobile-photo-gallery > div img').css('pointer-events','none'); 2616 2617 $('.mobile-photo-gallery > div .scroller .arrow.next').click(function() { 2618 ShowNextPicture(); 2619 }); 2620 2621 $('.mobile-photo-gallery > div .scroller .arrow.prev').click(function() { 2622 ShowPreviousPicture(); 2623 }); 2624 2625 } 2626 2627}); 2628 2629$(window).resize(function() { 2630 MobileGallery(); 2631}); 2632 2633$(document).ready(function() { 2634 2635 // Open Filter Menu On Mobile 2636 $('.more.Filter').click(function() { 2637 $('form.filter').css({'top':0,'left':0}).fadeTo(350,1); 2638 if(!$('form.filter .close').length) { 2639 $('form.filter').append('<a class="close hide"></a>'); 2640 } 2641 }); 2642 2643 // Clone Billing Address To Delivery Address 2644 $('.delivery h2 input[type=checkbox]').change(function() { 2645 var Check = $(this).is(':checked') ? true : false; 2646 $('.delivery input[type=text]').each(function() { 2647 var Value = Check ? $('.billing input[type=text]:eq('+$('.delivery input[type=text]').index(this)+')').val() : ''; 2648 $(this).val(Value); 2649 $(this).prop('readonly',(Check ? true : false)); 2650 }); 2651 }); 2652 2653 $('.billing input[type=text]').keyup(function() { 2654 if($('.delivery h2 input[type=checkbox]').is(':checked')) { 2655 $('.delivery input[type=text]:eq('+$('.billing input[type=text]').index(this)+')').val($(this).val()); 2656 } 2657 }); 2658 2659 // Set Product Titles For PayPal On "Customisable" Products 2660 $('.custom-field').keyup(function() { 2661 var ItemName = 'item_name_'+$(this).attr('data-counter'); 2662 $('input[name='+ItemName+']').val($(this).attr('data-product-title')+' - '+$(this).attr('data-customisable-title')+': '+$(this).val()); 2663 var RemoveError = true; 2664 $('.custom-field').each(function() { 2665 if(!$(this).val()) { 2666 RemoveError = false; 2667 } 2668 }); 2669 if(RemoveError) { 2670 $(this).parent().removeClass('error'); 2671 } 2672 }); 2673 2674 $('#PayPalForm').submit(function(event) { 2675 2676 if(!$('#PayPalForm').hasClass('ReadyToSubmit')) { 2677 2678 event.preventDefault(); 2679 var ReadyToSubmit = true; 2680 $('.custom-field').each(function() { 2681 if(!$(this).val()) { 2682 $(this).parent().addClass('error'); 2683 $(this).siblings('h3').wrapInner('<span class="red"></span>'); 2684 $('html,body').animate({scrollTop:$(this).parent().offset().top - 50},500); 2685 ReadyToSubmit = false; 2686 return false; 2687 } 2688 }); 2689 2690 if(ReadyToSubmit) { 2691 2692 // First, Submit Main Form Incase Not Saved 2693 2694 $.post( 2695 $('div.basket .grid.three_x2 form').attr('action'), 2696 'AddUpdate=1&'+$('div.basket .grid.three_x2 form').serialize() 2697 ); 2698 2699 $.get('route/includes/product/send-order?'+new Date().getTime() / 1000,function() { 2700 $('#PayPalForm').addClass('ReadyToSubmit'); 2701 $('#PayPalForm').submit(); 2702 }); 2703 2704 } 2705 2706 } 2707 2708 }); 2709 2710}); 2711 2712$(window).on('load resize',function() { 2713 2714 'use strict'; 2715 2716 // Set Product Page Widths 2717 2718 var Width = $('.item.product').width() - $('.item.product > .floatl').width(); 2719 $('.item.product > .floatr').css('width',(Width - parseInt($('.item.product > .floatr').css('margin-left')))); 2720 2721 // Set Filter Height 2722 2723 if($('.item-list.product:not(.category)').length && $('.filter').length) { 2724 2725 $('.filter').removeAttr('style'); 2726 $('.item-list.product:not(.category)').parent().removeAttr('style'); 2727 2728 if($(window).outerWidth(true) + 17 > 650) { 2729 2730 var Tallest = $('.item-list.product:not(.category)').parent().height(); 2731 Tallest = Tallest > $('.filter').height() ? Tallest : $('.filter').height(); 2732 2733 $('.filter').css('height',Tallest); 2734 $('.item-list.product:not(.category)').parent().css('height',Tallest); 2735 2736 } 2737 2738 } 2739 2740}); 2741 2742function LoadMap() { 2743 2744 $('.Map').each(function(K,V) { 2745 2746 var MapID = 'Map'+K; 2747 var Coords = $(this).attr('data-coords').split(';'); 2748 var Map; 2749 var Address = new google.maps.LatLng(Coords[0],Coords[1]); 2750 var MyMapTypeID = 'Custom'; 2751 var FeatureOptions = [ 2752 2753 {"featureType":"water","elementType":"geometry.fill","stylers":[{"color":"#d3d3d3"}]}, 2754 {"featureType":"transit","stylers":[{"color":"#808080"},{"visibility":"off"}]}, 2755 {"featureType":"road.highway","elementType":"geometry.stroke","stylers":[{"visibility":"on"},{"color":"#b3b3b3"}]}, 2756 {"featureType":"road.highway","elementType":"geometry.fill","stylers":[{"color":"#2422ac"}]}, 2757 {"featureType":"road.local","elementType":"geometry.fill","stylers":[{"visib ility":"on"},{"color":"#ffffff"},{"weight":1.8}]}, 2758 {"featureType":"road.local","elementType":"geometry.stroke","stylers":[{"color":"#d7d7d7"}]}, 2759 {"featureType":"poi","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#ebebeb"}]}, 2760 {"featureType":"administrative","elementType":"geometry","stylers":[{"color":"#a7a7a7"}]}, 2761 {"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]}, 2762 {"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"color":"#ffffff"}]}, 2763 {"featureType":"landscape","elementType":"geometry.fill","stylers":[{"visibility":"on"},{"color":"#efefef"}]}, 2764 {"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#696969"}]}, 2765 {"featureType":"administrative","elementType":"labels.text.fill","stylers":[{"visibility":"on"},{"color":"#737373"}]}, 2766 {"featureType":"poi","elementType":"labels.icon","stylers":[{"visibility":"off"}]}, 2767 {"featureType":"poi","elementType":"labels","stylers":[{"visibility":"off"}]}, 2768 {"featureType":"road.arterial","elementType":"geometry.stroke","stylers":[{"color":"#d6d6d6"}]}, 2769 {"featureType":"road","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{}, 2770 {"featureType":"poi","elementType":"geometry.fill","stylers":[{"color":"#dadada"}]} 2771
2772 ]; 2773 2774 $(this).attr('id',MapID); 2775 2776 Map = new google.maps.Map(document.getElementById(MapID),{ 2777 2778 zoom : 12, 2779 scrollwheel : false, 2780 center : Address, 2781 mapTypeId : FeatureOptions.length !== 0 ? MyMapTypeID : google.maps.MapTypeId.ROADMAP, 2782 mapTypeControlOptions : { 2783 mapTypeIds : [google.maps.MapTypeId.ROADMAP, FeatureOptions.length !== 0 ? MyMapTypeID : null] 2784 }, 2785 2786 }); 2787 2788 new google.maps.Marker({ 2789 position : Address, 2790 map : Map, 2791 title : 'Unit 1, Lewis Industrial Estate, Office 11, Storage King, Nottingham, NG7 7NQ', 2792 visible : true, 2793 icon : 'route/images/theme/marker.png', 2794 }); 2795 2796 if(FeatureOptions.length !== 0) { 2797 2798 var StyledMapOptions = { 2799 name: MyMapTypeID 2800 }; 2801 2802 var CustomMapType = new google.maps.StyledMapType(FeatureOptions,StyledMapOptions); 2803 2804 Map.mapTypes.set(MyMapTypeID,CustomMapType); 2805 2806 } 2807 2808 }); 2809 2810} 2811 2812function CheckYAxis(){ 2813 if($(window).scrollTop() > $(window).height() / 3){ 2814 $('.btt').slideDown(); 2815 } 2816 else { 2817 $('.btt').slideUp(); 2818 } 2819} 2820 2821$(document).ready(function() { 2822 2823 // Background Images 2824 2825 $('div.bg').each(function() { 2826 var Source = $(this).attr('data-src'); 2827 $(this).css('background-image','url('+Source+')'); 2828 $(this).addClass('fw-'+$(this).attr('data-fw')); 2829 $(this).append('<img src="'+Source+'" class="fw none block-'+$(this).attr('data-fw')+'"/>'); 2830 }); 2831 2832 // Lineup News Feed 2833 2834 var NewsFeed = $('.items-feed.article'); 2835 2836 if(NewsFeed.length) { 2837 NewsFeed.find('article').addClass('lineupgroup relative').attr('data-group','newsfeed'); 2838 NewsFeed.find('a:first-child').addClass('relative'); 2839 NewsFeed.find('time').addClass('absolute'); 2840 LineUpLoop(); 2841 } 2842 2843 // Testimonials Autoplay 2844 var AutoTestimonials = setInterval( 2845 function() { 2846 var Element = $('section.testimonials .grid.two > a.active').is(':last-child') ? $('section.testimonials .grid.two > a:first-child') : $('section.testimonials .grid.two > a.active').next(); 2847 Element.click(); 2848 }, 2849 3500 2850 ); 2851 2852 // Testimonial Feed Buttons 2853 2854 $('section.testimonials .grid.two > a').click(function() { 2855 2856 clearInterval(AutoTestimonials); 2857 2858 $(this).addClass('active'); 2859 $(this).siblings().removeClass('active'); 2860 2861 $('section.testimonials .grid.two.last article:eq('+$(this).index()+')').addClass('table').removeClass('none'); 2862 $('section.testimonials .grid.two.last article:eq('+$(this).index()+')').siblings().addClass('none').removeClass('table'); 2863 }); 2864 2865 // Back To Top Button 2866 2867 if(!$('.btt').length) { 2868 $('body').append('<a class="btt pointer"></a>'); 2869 } 2870 2871 $('.btt').click(function(){ 2872 $('html,body').animate({scrollTop:0},0); 2873 }); 2874 2875 CheckYAxis(); 2876 2877}); 2878 2879// On Scroll 2880 2881$(window).on('scroll',function() { 2882 CheckYAxis(); 2883}); 2884 2885// On Load 2886 2887$(window).on('load',function() { 2888 LoadMap(); 2889}); 2890 2891var WindowObject = WindowObject || $(window); 2892var BodyObject = BodyObject || $(body); 2893 2894function LightBoxVideoSize() { 2895 2896 $('.lightbox-video').removeAttr('style'); 2897 2898 var VideoHeight = Math.round(($('.lightbox-video').width() / 16) * 9); 2899 $('.lightbox-video').height(VideoHeight); 2900 $('.lightbox-video').css('margin-left',-Math.abs($('.lightbox-video').width()/2)); 2901 $('.lightbox-video').css('margin-top',-Math.abs(VideoHeight/2)); 2902 2903} 2904 2905WindowObject.resize(function() { 2906 LightBoxVideoSize(); 2907}); 2908 2909LightBoxVideoSize(); 2910 2911BodyObject.on('click','.video-overlay',function() { 2912 $('.video-overlay,.lightbox-video').fadeTo(350,0.0, 2913 function() { 2914 $(this).remove(); 2915 }); 2916}); 2917 2918BodyObject.on('click','a[href*="youtube.com"], .video_lightbox',function(event) { 2919 2920 event.preventDefault(); 2921 2922 BodyObject.append( 2923 2924 '<div class="lightbox-video">'+ 2925 ' <iframe class="lightbox-video" src="'+$(this).attr('href')+'"></iframe>'+ 2926 ' <a class="close"></a>'+ 2927 '</div>'+ 2928 '<div class="overlay video-overlay"></div>' 2929 2930 ); 2931 2932 LightBoxVideoSize(); 2933 2934});
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.