PageSourceSearch

https://www.lagap.org/wp-content/plugins/ctl-wp-studio/classes/ext…/ctl-vulcano-theme/js/front.js?ver=6155

js lagap.org collected 2026-10-02 19:04:58 UTC 25,707 bytes, 726 lines download raw bytes

1jQuery(window).on('load', function() { 
2
3    jQuery("body").removeClass("stop-transitions");
4
5    ctlVulcanoThemeUpdateSidebar();
6    ctlVulcanoStartColAnimations();
7    ctlVulcanoThemeUpdateSiteContent();
8});
9
10jQuery(document).ready(function(){
11
12    ctlUpdateOnlineStatus();
13    window.addEventListener('online',  ctlUpdateOnlineStatus);
14    window.addEventListener('offline', ctlUpdateOnlineStatus);
15
16    const width  = window.innerWidth || 
17    document.documentElement.clientWidth || 
18    document.body.clientWidth;
19
20    if ( width < 992 ){
21        setTimeout(function(){
22            document.getElementsByTagName("body")[0].classList.add("layout-ready");
23        }, 300);
24    }else{
25        document.getElementsByTagName("body")[0].classList.add("layout-ready");
26    }
27
28
29    if ( jQuery(".ctl-theme-section-dots-navigation").length > 0 ){
30        var html = "";
31        html += '<ul class="ctl-theme-section-dots-navigation-menu">';
32
33        var iCnt = 0;
34        jQuery(".ctl-theme-section-dots-navigation").each(function(){
35            html += '<li>';
36                html += '<a class="ctl-scroll-to" href="#' + jQuery(this).attr("id") + '">';
37                    html += '<i data-index="'+iCnt+'" class="ctl-wp-studio-icons-circle-empty"></i>';
38                html += '</a>';
39            html += '</li>';
40            iCnt++;
41        });
42
43        html += '</ul>'
44        jQuery(".layout-site-content-inner").append(html);
45    }
46
47    jQuery(document).on("click", '.ctl-theme-section-dots-navigation-menu a', function(e){
48        var oNodeIcon = jQuery(this).find("i");
49
50        if( oNodeIcon.hasClass("ctl-wp-studio-icons-dot-circled") ){
51            oNodeIcon.removeClass("ctl-wp-studio-icons-dot-circled");
52            oNodeIcon.addClass("ctl-wp-studio-icons-circle-empty");
53        }else{
54            oNodeIcon.removeClass("ctl-wp-studio-icons-circle-empty");
55            oNodeIcon.addClass("ctl-wp-studio-icons-dot-circled");
56        }
57
58        jQuery('.ctl-theme-section-dots-navigation-menu i').each(function(){
59            if ( jQuery(this).attr("data-index") != oNodeIcon.attr("data-index") ){
60                jQuery(this).removeClass("ctl-wp-studio-icons-dot-circled");
61                jQuery(this).addClass("ctl-wp-studio-icons-circle-empty");
62            }
63        });
64    });
65
66    jQuery(document).on("click", '.ctl-scroll-to', function(e){
67        var oNodeAnchor = jQuery(this);
68        var iOffsetTop = jQuery(oNodeAnchor.attr("href")).eq(0).offset().top;
69    
70        var iAddingOffset = 150;
71        if ( jQuery("header").length > 0 ){
72            iAddingOffset = Math.floor(jQuery("header").outerHeight());
73        }
74
75        jQuery("body").addClass("scroll-to-animating");
76
77        if( oNodeAnchor.closest(".modal").length > 0 ){
78            iOffsetTop -= jQuery('.modal-body').offset().top;
79            jQuery('.modal-body').animate({ scrollTop: iOffsetTop }, 'slow', function(){
80                jQuery("body").removeClass("scroll-to-animating");
81                ctlVulcanoUpdateDotsMenu();
82            });    
83        }else{
84            iOffsetTop -= iAddingOffset;
85            jQuery('html,body').animate({ scrollTop: iOffsetTop }, 'slow', function(){
86                jQuery("body").removeClass("scroll-to-animating");
87                ctlVulcanoUpdateDotsMenu();
88            });    
89        }      
90    });
91    
92
93    jQuery(document).on("mouseenter", 
94			"body.layout-collapsible-menu-collapsed .layout-collapsible-menu", function(e){			
95		jQuery("body").removeClass("layout-collapsible-menu-collapsed");			
96		ctlVulcanoResizeLayout();	
97    });
98	
99    jQuery(document).on("mouseleave", ".layout-collapsible-menu", function(e){				
100		if ( !jQuery("body").hasClass("layout-collapsible-menu-collapsed") &&
101										   	 jQuery("body").hasClass("bp-up-to-md") ){
102			jQuery("body").addClass("layout-collapsible-menu-collapsed");
103			ctlVulcanoResizeLayout();	
104		}
105    });	
106	
107    jQuery(window).scroll(function(){ 
108        ctlVulcanoStartColAnimations();
109        ctlVulcanoThemeUpdateSidebar();
110        ctlVulcanoUpdateDotsMenu();
111    });
112
113    jQuery(document).on("click", ".ctl-ajax-loading-page", function(e){
114        e.preventDefault();
115
116        if (window.location.href == jQuery(this).attr("data-href") ){
117            return;
118        }
119
120        var oNodeButton = jQuery(this);
121        var idDialog = g_oCTLWPStudio.showLoading();  
122
123        var oFormData = {};
124        oFormData["action"]  = 'ctl-wp-studio';
125        oFormData["execute"] = 'ctl-vulcano-theme'; 
126        oFormData["extension-action"] = 'print-layout';
127        oFormData["layout-id"] = jQuery(this).attr("data-layout-id");
128        oFormData["page-id"] = jQuery(this).attr("data-page-id");
129        oFormData["page-url"] = jQuery(this).attr("data-href");
130
131        jQuery.post(
132            g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
133        ).done( function(response){
134            var oResponse = jQuery.parseJSON(response);
135            g_oCTLWPStudio.closeDlg(idDialog);
136            if( oResponse.res === false ){                                      
137                g_oCTLWPStudio.closeDlg(idDialog);
138                if ( oResponse.desc ){                           
139                    g_oCTLBootstrapModals.alert("Attenzione", oResponse.desc);
140                }else{
141                    alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
142                }
143            }else{
144                var html = Base64.decode(oResponse.html);
145                jQuery(".layout-site-content-outer").remove();
146                jQuery("body").prepend(html);
147                window.history.pushState(oResponse.title, "", oNodeButton.attr("data-href"));
148                document.title = oResponse.title;
149
150                g_oCTLWPStudio.applyChromaCorrection();
151                wpdk_do_action("ctl-theme-bootstrap-modals-show-modal", jQuery(".layout-site-content-outer") );
152                ctlVulcanoResizeLayout();
153            }
154            
155        }).fail( function(){    
156            g_oCTLWPStudio.closeDlg(idDialog);
157            alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
158        });  
159    })
160
161    jQuery(document).on("click", ".ctl-vulcano-theme-sidebar-toggle", function(e){
162        e.preventDefault();
163
164        jQuery("body").toggleClass("layout-collapsible-menu-collapsed");
165        ctlVulcanoResizeLayout();
166    });
167
168    jQuery(document).on("mouseleave", ".layout-mega-menu", function(e){
169        var oNodeNavLink = jQuery(this).closest("li");
170        oNodeNavLink.removeClass("show-mega-menu");
171    });
172
173    jQuery(document).on("click", "header .navbar .nav-link", function(e){
174
175        var idMenuItem = jQuery(this).closest("li").attr("id");
176
177		if ( jQuery(this).find(".open-mega-menu").length > 0 ){
178			e.preventDefault();
179		}
180		
181        jQuery(".open-mega-menu").each(function(){
182            var oNodeMenuItem = jQuery(this).closest("li");
183            if ( idMenuItem === oNodeMenuItem.attr("id")){
184                oNodeMenuItem.toggleClass("show-mega-menu");
185            }else{
186                oNodeMenuItem.removeClass("show-mega-menu");
187            }
188        });
189    });
190	
191    jQuery(document).on("mouseover", "header .navbar .nav-link", function(e){
192        var idMenuItem = jQuery(this).closest("li").attr("id");
193        jQuery(".open-mega-menu").each(function(){
194            var oNodeMenuItem = jQuery(this).closest("li");
195            if ( idMenuItem === oNodeMenuItem.attr("id")){
196                oNodeMenuItem.addClass("show-mega-menu");
197            }else{
198                oNodeMenuItem.removeClass("show-mega-menu");
199            }
200        });
201    });	
202
203    var oNodeLayout = jQuery("body").find(".layout");
204    if( oNodeLayout.length === 0 ){
205        jQuery(".ctlthemelayout-action-edit-layout").remove();
206        return;
207    }    
208    
209    jQuery(document).on( "click", ".ctlthemelayout-action-edit-layout", function(e){
210        
211       e.preventDefault();
212       e.stopPropagation();
213
214       var oNodeLayout = jQuery("body").find(".layout-site-content-inner");
215
216        var id = null;
217
218        if ( oNodeLayout.length > 0 ){
219            id = oNodeLayout.attr("data-layout-id");
220        }
221        
222        if (id === null){
223            oNodeLayout = jQuery("body").find(".layout");
224            if ( oNodeLayout.length > 0 ){
225                oNodeLayout = oNodeLayout.first();
226                id = oNodeLayout.attr("data-layout-id");            
227            }
228        }
229
230        if (id === null){
231            return;
232        } 
233
234
235       var szAdminUrl = jQuery(this).find("span").attr("data-admin-url");
236       window.location.href= szAdminUrl + "post.php?post="+id+"&action=edit";
237       
238    });
239    
240	
241    window.addEventListener("orientationchange", function(){
242        ctlVulcanoApplyBreakpointClass();
243		ctlVulcanoResizeSidebar();
244        ctlVulcanoResizeLayout();
245    });
246    window.addEventListener("touchmove", function(){
247        ctlVulcanoThemeUpdateSidebar(); 
248    });    
249    jQuery(window).resize(function() {
250        ctlVulcanoApplyBreakpointClass();
251		ctlVulcanoResizeSidebar();
252        ctlVulcanoResizeLayout();
253    });	   
254
255    wpdk_add_action("ctl-vulcano-theme-resize-layout", function(){    
256        ctlVulcanoResizeLayout();
257    });    
258
259    ctlVulcanoApplyBreakpointClass();
260    ctlVulcanoResizeSidebar();
261    ctlVulcanoResizeLayout();
262});
263
264function __ctlVulcanoResizeLayout(){
265    vhCheck();    
266	ctlVulcanoThemeUpdateSidebar();
267    ctlVulcanoThemeUpdateSiteContent(); 
268	ctlVulcanoInitColAnimations(); 	
269    ctlVulcanoStartColAnimations();
270    ctlVulcanoUpdateDotsMenu();  
271
272    wpdk_do_action("on_ctl-vulcano-theme-resize-layout");   
273}
274
275function ctlVulcanoResizeLayout(){
276
277    __ctlVulcanoResizeLayout();
278    
279    setTimeout(function(){
280        __ctlVulcanoResizeLayout();
281    }, 350);
282}
283
284function ctlVulcanoUpdateDotsMenu(){
285    // fixfix
286
287    if (jQuery("body").hasClass("scroll-to-animating")){
288        return;
289    }
290
291    if ( jQuery(".ctl-theme-section-dots-navigation").length == 0 ){
292        return;
293    }
294
295    var idVisibileSection = null;
296    var iCnt = 0;
297    jQuery(".ctl-theme-section-dots-navigation").each(function(){
298        var oNodeSection = jQuery(this);
299        if ( ctlVulcanoThemeCalculateVisibilityForDiv(oNodeSection) > 0 ){
300            idVisibileSection = iCnt;
301        }
302        iCnt++;
303    });
304
305    jQuery('.ctl-theme-section-dots-navigation-menu i').each(function(){
306        if ( jQuery(this).attr("data-index") == idVisibileSection ){
307            jQuery(this).removeClass("ctl-wp-studio-icons-circle-empty");
308            jQuery(this).addClass("ctl-wp-studio-icons-dot-circled");
309        }else{
310            jQuery(this).removeClass("ctl-wp-studio-icons-dot-circled");
311            jQuery(this).addClass("ctl-wp-studio-icons-circle-empty");
312        }
313    });
314}
315
316function ctlVulcanoThemeUpdateSiteContent(){
317    var oNodeSiteContent = jQuery(".layout-site-content-automatic-margin-top");
318
319    if (oNodeSiteContent.length === 0 ){
320        return;
321    }
322
323    var fHeaderVisibility = 0;
324    var fHeaderOffset     = 0;
325
326    if ( jQuery("header").length > 0 && jQuery("header").css("position") === "fixed" ){
327        fHeaderVisibility += jQuery("header").outerHeight();
328        fHeaderOffset += jQuery("header").position().top;
329    }
330    fHeaderOffset = 0;
331    oNodeSiteContent.css("margin-top", (fHeaderVisibility+fHeaderOffset)+ "px")
332}
333
334function ctlVulcanoThemeLoadLayout( idLayout, cb, cbOwner, aGetParams = {}, aPostParams = {} ){
335    var idDialog = g_oCTLWPStudio.showLoading();  
336
337    var oFormData = {};
338    oFormData["action"]  = 'ctl-wp-studio';
339    oFormData["execute"] = 'ctl-vulcano-theme'; 
340    oFormData["extension-action"] = 'get-layout';
341    oFormData["layout-id"]   = idLayout;
342    oFormData["get-params"]  = aGetParams;
343    oFormData["post-params"] = aPostParams;
344
345    jQuery.post(
346        g_oCTLWPStudio._oLangCommon["ajaxurl"], oFormData      
347    ).done( function(response){
348        var oResponse = jQuery.parseJSON(response);
349        g_oCTLWPStudio.closeDlg(idDialog);
350        if( oResponse.res === false ){                                      
351            g_oCTLWPStudio.closeDlg(idDialog);
352            if ( oResponse.desc ){                           
353                g_oCTLBootstrapModals.alert("Attenzione", oResponse.desc);
354            }else{
355                alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
356            }
357        }else{
358            var html = Base64.decode(oResponse.html);            
359            cb.call( cbOwner, html );
360            g_oCTLWPStudio.applyChromaCorrection();
361            ctlVulcanoResizeLayout();
362        }
363        
364    }).fail( function(){    
365        g_oCTLWPStudio.closeDlg(idDialog);
366        alert(g_oCTLWPStudio._oLangCommon["Ooops! Something Went Wrong!"]);
367    });  
368}
369
370function ctlVulcanoResizeSidebar(){
371    if ( jQuery(".layout-sidebar-menu").length > 0 ){
372        if ( jQuery("body.bp-up-to-md").length > 0 ){
373            jQuery("body").addClass("layout-collapsible-menu-collapsed");
374        }else{
375            jQuery("body").removeClass("layout-collapsible-menu-collapsed");
376        }	        
377        jQuery("body").addClass("layout-sidebar-active");
378    }
379}
380
381function ctlVulcanoThemeUpdateSidebar(){
382    var fSidebarOffset        = 0;
383    var fHeaderVisibility     = 0;
384    var fHeaderOffset         = 0;
385    var fFooterVisibility     = 0;
386	
387    if ( jQuery("header").length > 0 && jQuery("header").css("position") === "fixed" ){
388        fHeaderVisibility += jQuery("header").outerHeight();
389        fHeaderOffset += jQuery("header").position().top;
390    }
391
392    if ( jQuery("footer").length > 0 ){
393        if ( jQuery("footer").css("position") === "fixed"){
394            fFooterVisibility = jQuery("footer").outerHeight();
395        }else{
396            fFooterVisibility = ctlVulcanoThemeCalculateVisibilityForDiv(jQuery("footer"));
397        }
398    }    
399
400    if ( jQuery(".layout-menu-external").length == 0 ){
401        if ( jQuery(window).width() < 576 ){
402            fSidebarOffset = fHeaderVisibility + fHeaderOffset;
403        }else{
404            fSidebarOffset = fHeaderVisibility + fHeaderOffset + fFooterVisibility;
405        }
406    }else{
407        if ( jQuery(window).width() < 576 ){
408            fSidebarOffset = fHeaderOffset + fHeaderVisibility;
409        }else{
410            fSidebarOffset = fHeaderOffset;
411        }
412    }
413
414    document.querySelector(':root').style.setProperty('--vh-sidebar-offset', fSidebarOffset + 'px');
415
416	__ctlVulcanoThemeUpdateFooterBar();
417}
418
419function __ctlVulcanoThemeUpdateFooterBar(){
420	
421	if ( jQuery(".layout-sidebar-menu").length == 0 ){
422		return;
423	}
424
425    if ( jQuery("body").hasClass("bp-xs") ){ 
426		if ( jQuery(".layout-footer-menu").length == 0 ){
427			var html = "";
428			html += '<div class="layout-footer-menu d-flex fixed-bottom w-100 justify-content-around"></div>';
429			jQuery("body").append(html);
430			
431			if(g_bCTLVulcanoThemeHistoryBackInMobileFooterMenuEnabled){
432				// check if browser history is available
433				if (window.history && window.history.pushState && window.history.length > 1 &&
434					 ctl_wp_studio_common_localization["szHomeUrl"] != window.location.href ) {
435
436					var url = window.location.href;
437					url = url.replace(ctl_wp_studio_common_localization["szHomeUrl"], "");
438					var aUrlParts = url.split("/");
439					var i = 0;
440					while( i < aUrlParts.length ){
441						if (aUrlParts[i] == ""){
442							aUrlParts.splice(i,1);
443						}else{	
444							i++;
445						}					
446					}
447
448					if ( aUrlParts.length > 1 ){
449						var html = '<a href="#" class="ctl-action-history-back mobile-footer-menu p-2 w-100 text-center" ><i class="ctl-wp-studio-icons-level-up menu-item-icon"></i><span class="menu-item-text w-100 text-center d-block m-0">' + g_oCTLVulcanoThemeLocalizationFront["Back"] + '</span></a>';
450						jQuery(".layout-footer-menu").append(html);					
451					}				
452				}
453			}
454
455            jQuery(".layout-sidebar-menu a.mobile-footer-menu").each(function(){
456				var oNode = jQuery(this).clone();
457
458                // clean anchor
459				//oNode.find(".menu-item-text").remove();	
460				oNode.addClass("p-2");
461                oNode.find(".menu-item-text").addClass("w-100");
462                oNode.find(".menu-item-text").addClass("text-center");
463                oNode.find(".menu-item-text").addClass("d-block");
464                oNode.find(".menu-item-text").addClass("m-0");
465                oNode.addClass("w-100");
466				oNode.addClass("text-center");				
467				oNod
467e.removeClass("d-flex");
468				oNode.removeClass("align-items-baseline");
469                
470				jQuery(".layout-footer-menu").append(oNode);
471			});	
472		
473
474			var iOffset = jQuery(".layout-footer-menu").outerHeight();
475			
476			jQuery(".ctl-scroll-top-scroll-button").css("margin-bottom", iOffset + "px");
477            if ( jQuery("footer").length > 0 ){
478			    jQuery("footer").css("margin-bottom", iOffset + "px");
479            }       
480            jQuery('.layout-site-content-outer').css("margin-bottom", iOffset + "px");     
481		}
482    }else if ( jQuery(".layout-footer-menu").length > 0 ){
483		jQuery(".layout-footer-menu").remove();
484		jQuery(".ctl-scroll-top-scroll-button").css("margin-bottom", "0px");
485        if ( jQuery("footer").length > 0 ){
486		    jQuery("footer").css("margin-bottom", "0px");
487        }        
488        jQuery('.layout-site-content-outer').css("margin-bottom", "0px");  
489	}
490}
491
492
493function ctlVulcanoThemeCalculateVisibilityForDiv(div$) {
494    var windowHeight = jQuery(window).height(),
495        docScroll = jQuery(document).scrollTop(),
496        divPosition = div$.offset().top,
497        divHeight = div$.outerHeight(),
498        hiddenBefore = docScroll - divPosition,
499        hiddenAfter = (divPosition + divHeight) - (docScroll + windowHeight);
500
501    if ((docScroll > divPosition + divHeight) || (divPosition > docScroll + windowHeight)) {
502        return 0;
503    } else {
504        var result = 100;
505        var pixels = 0;
506
507        if (hiddenBefore > 0) {
508            result -= (hiddenBefore * 100) / divHeight;
509            pixels += hiddenBefore;
510        }
511
512        if (hiddenAfter > 0) {
513            result -= (hiddenAfter * 100) / divHeight;
514            pixels += hiddenAfter;
515        }
516
517        result = divHeight + (hiddenBefore + hiddenAfter);
518
519        return divHeight - pixels;
520    }
521}
522
523function ctlVulcanoInitColAnimations(){
524	
525	var szBreakPoint = jQuery("body").attr("bp");
526	if ( szBreakPoint == "xxl"){
527		szBreakPoint = "xl";
528	}
529	
530	var szLastBreakPoint = jQuery("body").attr("data-last-entrance-bp");
531	
532	if ( szBreakPoint ==  szLastBreakPoint){
533		return;	
534	}
535	
536    jQuery( ".ctl-col-animation").each(function(){
537		var szAnimation  = jQuery(this).attr("data-entrance-animation-"+szBreakPoint);
538
539		if ( szAnimation ){
540			var szOffset     = jQuery(this).attr("data-entrance-offset-"+szBreakPoint);
541			var szIterations = jQuery(this).attr("data-entrance-animation-iterations-"+szBreakPoint);
542			var szSpeed      = jQuery(this).attr("data-entrance-animation-speed-"+szBreakPoint);
543			var szDelay      = jQuery(this).attr("data-entrance-animation-delay-"+szBreakPoint);
544			var szFadein     = jQuery(this).attr("data-entrance-fadein-"+szBreakPoint);		
545			
546			jQuery(this).attr("data-entrance-animation", szAnimation);
547			jQuery(this).attr("data-entrance-offset", szOffset);
548
549			if ( szFadein ){
550				jQuery(this).attr("data-entrance-fadein", szFadein);	
551				jQuery(this).animate({opacity:0}
551,0);
552			}
553
554			jQuery(this).attr("data-entrance-iterations", szIterations);
555			jQuery(this).attr("data-entrance-speed", szSpeed);
556			jQuery(this).attr("data-entrance-delay", szDelay);
557
558			jQuery(this).addClass("ctl-col-breakpoint-animation");
559
560		}
561    });
562	
563	jQuery("body").attr("data-last-entrance-bp", szBreakPoint);
564}
565
566function ctlVulcanoApplyBreakpointClass(){
567    var width = window.innerWidth;
568
569    jQuery("body").removeClass("bp-xs");
570    jQuery("body").removeClass("bp-sm");
571    jQuery("body").removeClass("bp-md");
572    jQuery("body").removeClass("bp-lg");
573    jQuery("body").removeClass("bp-xl");
574    jQuery("body").removeClass("bp-xxl");
575    
576    jQuery("body").removeClass("bp-up-to-sm");
577    jQuery("body").removeClass("bp-up-to-md");
578    jQuery("body").removeClass("bp-up-to-lg");
579    jQuery("body").removeClass("bp-up-to-xl");
580
581    if( width >= 1400 ){
582		jQuery("body").attr("bp","xxl");		
583        jQuery("body").addClass("bp-xxl");
584    }else if( width >= 1200 ){
585		jQuery("body").attr("bp","xl");		
586        jQuery("body").addClass("bp-xl");
587        jQuery("body").addClass("bp-up-to-xl");                
588    }else if( width >= 992 ){
589		jQuery("body").attr("bp","lg");
590        jQuery("body").addClass("bp-lg");
591        jQuery("body").addClass("bp-up-to-xl");
592        jQuery("body").addClass("bp-up-to-lg");
593    }else if( width >= 768 ){
594		jQuery("body").attr("bp","md");		
595        jQuery("body").addClass("bp-md");
596        jQuery("body").addClass("bp-up-to-xl");
597        jQuery("body").addClass("bp-up-to-lg");
598        jQuery("body").addClass("bp-up-to-md");
599    }else if( width >= 576 ){
600		jQuery("body").attr("bp","sm");
601        jQuery("body").addClass("bp-sm");
602        jQuery("body").addClass("bp-up-to-xl");
603        jQuery("body").addClass("bp-up-to-lg");
604        jQuery("body").addClass("bp-up-to-md");
605        jQuery("body").addClass("bp-up-to-sm");
606    }else{
607		jQuery("body").attr("bp","xs");
608        jQuery("body").addClass("bp-xs");
609        jQuery("body").addClass("bp-up-to-xl");
610        jQuery("body").addClass("bp-up-to-lg");
611        jQuery("body").addClass("bp-up-to-md");
612        jQuery("body").addClass("bp-up-to-sm");
613    }	
614	
615}
616
617
618function ctlVulcanoStartColAnimations(){
619    var scrollTop  = jQuery(window).scrollTop();
620    var iWindowOffset = scrollTop + jQuery(window).outerHeight();
621
622    jQuery(".ctl-col-breakpoint-animation").each(function(){
623
624        var iOffset = Number(jQuery(this).attr("data-entrance-offset"));
625        
626        if (!iOffset){
627            iOffset = 50;
628        }
629
630        var iFadein = Number(jQuery(this).attr("data-entrance-fadein"));
631        
632
633        if ( iWindowOffset - iOffset >= jQuery(this).offset().top  ) {
634            jQuery(this).addClass("animate__animated");
635            jQuery(this).addClass(jQuery(this).attr("data-entrance-animation"));
636            if ( jQuery(this).attr("data-entrance-iterations") ){
637                jQuery(this).addClass(jQuery(this).attr("data-entrance-iterations"));            
638            } 
639            
640            if ( jQuery(this).attr("data-entrance-speed") ){
641                jQuery(this).addClass(jQuery(this).attr("data-entrance-speed"));            
642            } 
643
644            if ( jQuery(this).attr("data-entrance-delay") ){
645                jQuery(this).addClass(jQuery(this).attr("data-entrance-delay"));  
646                
647                var iDelay = 0;
648                switch(jQuery(this).attr("data-entrance-delay")){
649                    case "animate__delay-250ms":{
650                        iDelay = 250;
651                    }break;         
652                    case "animate__delay-500ms":{
653                        iDelay = 500;
654                    }break;        
655                    case "animate__delay-750ms":{
656                        iDelay = 750;
657                    }break;                                                            
658                    case "animate__delay-1s":{
659                        iDelay = 1000;
660                    }break;
661                    case "animate__delay-1250ms":{
662                        iDelay = 1250;
663                    }break;        
664                    case "animate__delay-1500ms":{
665                        iDelay = 1500;
666                    }break;         
667                    case "animate__delay-1750ms":{
668                        iDelay = 1750;
669                    }break;                                                                    
670                    case "animate__delay-2s":{
671                        iDelay = 2000;
672                    }break;       
673                    case "animate__delay-3s":{
674                        iDelay = 3000;
675                    }break; 
676                    case "animate__delay-4s":{
677                        iDelay = 4000;
678                    }break;     
679                    case "animate__delay-5s":{
680                        iDelay = 5000;
681                    }break;                                                                   
682                }
683				
684				if (iFadein){
685	                jQuery(this).delay(iDelay).animate({opacity:1},iFadein);
686				}  				
687
688            }else{
689				
690				if (iFadein){
691                	jQuery(this).animate({opacity:1},iFadein);
692				}  								
693            }             
694        }
695    });
696}
697
698function ctlUpdateOnlineStatus(event) {
699    if ( navigator ){
700        if ( navigator.onLine ){
701            jQuery("body").removeClass("offline");
702            jQuery(".ctl-vulcano-theme-online-monitor .ctl-theme-bootstrap-menu-item-text").text(
703                g_oCTLVulcanoThemeLocalizationFront["online"]);
704            jQuery(".ctl-vulcano-theme-online-monitor h3").text(
705                    g_oCTLVulcanoThemeLocalizationFront["online"]);                
706        }else{
707            jQuery("body").addClass("offline");
708            jQuery(".ctl-vulcano-theme-online-monitor .ctl-theme-bootstrap-menu-item-text").text(
709                g_oCTLVulcanoThemeLocalizationFront["offline"]);
710            jQuery(".ctl-vulcano-theme-online-monitor h3").text(
711                g_oCTLVulcanoThemeLocalizationFront["offline"]);                
712        }
713    }
714  }
715
716/* THEME ANALYZER */
717var g_iTimeStart = Date.now();
718jQuery(document).ready(function(){
719    jQuery('#ctl-theme-analyzer').draggable({
720        handle: "h2",
721        containment : "window"
722    });
723});
724jQuery(window).on('load', function() { 
725    jQuery(".ctl-theme-analyzer-loading-time").text( (Date.now()-g_iTimeStart)/1000 );
726});

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.