PageSourceSearch

https://www.bocoip.com/wp-content/themes/sininen-harka-underscores-child/js/custom.js?ver=1.3.8

js bocoip.com collected 2026-10-08 00:38:52 UTC 17,979 bytes, 559 lines download raw bytes

1jQuery(document).ready(function($) {
2
3    /**
4     * Logo scroll pienennys
5     */
6
7     var navimg = $('.nav-branding');
8
9    $(window).scroll(function() {
10        if ($(document).scrollTop() > 150) {
11            $(navimg).css('transform', 'translate3d(0px, -20px, 0px) scale3d(0.8, 0.8, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg)');
12        }
13        else {
14            $(navimg).css('transform', 'translate3d(0px, 0px, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg)');
15        }
16    });
17
18
19    /**
20     * Slider
21     */
22
23    // Poistetaan jqmobilesta layoutin rikkovat, näille ei tarvetta. jq mobilea käytetään slider swipeleft ja swiperight -eventeille
24    $.mobile.ajaxEnabled = false;
25    $.mobile.autoInitializePage = false;
26
27    var slideNumber = 1;
28
29    $(document).on('keypress',function(e) {
30        if(e.which == 13){ //Enter painettu
31            $(':focus').click(); //Triggeröi button click -event
32        }
33    });
34
35    $(document).on('click', '[class*="w-slider-arrow"]',function(){
36
37        if($(this).data('enabled')){
38
39            //var parent = '#' + $(this).siblings('.w-slider-mask').attr('id');
40            var parent = $(this).parent(),
41                sliderMask = parent.find('.w-slider-mask');
42
43            var arrow = $(this);
44            var slideAmount = parent.find('.w-slide').length;
45            
46            
47            //var offset = $(parent).width();
48            var offset = parent.find('.w-slide').width();
49            
50            //var matrix = $(parent+' > .w-slide').css('transform').replace(/[^0-9\-.,]/g, '').split(',');
51            var matrix = parent.find('.w-slide').css('transform').replace(/[^0-9\-.,]/g, '').split(',');
52
53            var x = parseInt(matrix[12] || matrix[4]);
54
55            // Oikea transform
56            if($(this).hasClass('w-slider-arrow-right')){
57                translateX = parseInt(x - offset);
58                slideNumber++;
59
60            // Vasen transform
61            } else {
62                translateX = parseInt(x + offset);
63                slideNumber = slideNumber - 1;
64            }
65            
66            // Asetetaan sliden numero parentille
67            $(parent).attr('data-activeslide', slideNumber);
68
69            // Slaidaus ylläolevien laskujen mukaan
70            $('.w-slide').each(function() {
71                if( $(this).parent().attr('id') == $(sliderMask).attr('id')){
72                    $(this).css('transform', 'translateX('+translateX+'px)');
73                }
74                
75            });
76
77            // Disabloi nuolet CSS transformin ajaksi
78            $(arrow).data('enabled', false);
79            $(arrow).css('opacity', 0.5);
80            setTimeout(function() { 
81                $(arrow).data('enabled', true);
82                $(arrow).css('opacity', 1);
83            }, 500);
84
85
86            // Viimeinen slaidi
87            if(slideNumber === slideAmount){
88                parent.find('.w-slider-arrow-right').hide();
89            } else {
90                parent.find('.w-slider-arrow-right').show();
91            }
92
93            // Ensimmäinen slaidi
94            if(slideNumber === 1){
95                parent.find('.w-slider-arrow-left').hide();
96            } else {
97                parent.find('.w-slider-arrow-left').show();
98            }
99
100        } else {
101            console.log('Transform not done, waiting...');
102        }
103        
104    });
105
106    /**
107     * Slider Swipe
108     */
109
110    $('.overflow-slider-element').on('swipeleft swiperight', function(e) {
111        e.stopPropagation();
112        e.preventDefault();
113        console.log('swipe');
114
115        var parent = $(this),
116            sliderMask = parent.find('.w-slider-mask'),
117            offset = parent.find('.w-slide').width(),
118            matrix = parent.find('.w-slide').css('transform').replace(/[^0-9\-.,]/g, '').split(','),
119            x = parseInt(matrix[12] || matrix[4]),
120            slideAmount = parent.find('.w-slide').length;
121
122
123        if(e.type == 'swiperight'){
124            if(slideNumber === 1){
125                return;
126            }
127            translateX = parseInt(x + offset),
128            slideNumber = slideNumber - 1;
129        } else {
130            if(slideNumber === slideAmount){
131                return; 
132            }
133            
134            translateX = parseInt(x - offset),
135            slideNumber++;
136        }
137
138        // Viimeinen slaidi
139        if(slideNumber === slideAmount){
140            parent.find('.w-slider-arrow-right').hide();
141        } else {
142            parent.find('.w-slider-arrow-right').show();
143        }
144
145        // Ensimmäinen slaidi
146        if(slideNumber === 1){
147            parent.find('.w-slider-arrow-left').hide();
148        } else {
149            parent.find('.w-slider-arrow-left').show();
150        }
151
152        // Asetetaan sliden numero parentille
153        $(parent).attr('data-activeslide', slideNumber);
154
155        // Slaidaus ylläolevien laskujen mukaan
156        $('.w-slide').each(function() {
157            if( $(this).parent().attr('id') == $(sliderMask).attr('id')){
158                $(this).css('transform', 'translateX('+translateX+'px)');
159            }
160            
161        });
162    });
163
164    /**
165     * Ihminen modaali / slidaava profiili
166     */
167
168    $(document).on('click', '.people-card-label-showprofile, .people-open-profile-link',function(e){
169    //$('.people-card-label-showprofile, .people-open-profile-link').on('click', function(e){
170
171        e.preventDefault();
172
173        
174        // Avaa modaali
175        $('.people-modal-element').css('transform', 'translateX(0vw)');
176        $('.people-modal-bg').css('opacity', '0.8');
177
178        var target_id = $(this).data('ihminen-id');
179        var target_modal = $('.people-modal-element').find('.people-modal-content#'+target_id);
180
181        target_modal.delay(50).queue(function (next) { 
182            target_modal.css('transform', 'translate3d(0vw, 0px, 0px)');
183            next(); 
184        });
185
186        
187
188        // Sulje modaali
189        $('.people-modal-item-close-trigger').on('click', function(e){
190
191            $('.people-modal-bg').css('opacity', '0');
192            target_modal.css('transform', 'translate3d(100vw, 0px, 0px)'); 
193            target_modal.delay(300).queue(function (next) { 
194                
195                $('.people-modal-element').css('transform', 'translateX(100vw)');
196                
197                //target_modal.css('display', 'none');
198                next(); 
199            });
200            //target_modal.delay(500).css('transform', 'translate3d(0vw, 0px, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg)');
201        });
202
203    });
204
205    /**
206     * Menu
207     */
208
209    // Avaa valikko
210    $(document).on('click', '.nav-item-dropdown-toggle',function(){
211    //$('.nav-item-dropdown-toggle').on('click', function(e){
212
213        var dropdown = $(this).parent().find('.nav-dropdown-list');
214
215        
216        
217        // Avaa klikattu (jos ei jo auki)
218        if(dropdown.hasClass('w--open')){
219
220            $(dropdown).removeClass('w--open');
221
222        } else {
223
224            // Sulje  muut avoinna olevat
225            $('.nav-dropdown-list.w--open').removeClass('w--open');
226
227            // Avaa klikatun elementin dropdown
228            $(dropdown).addClass('w--open');
229
230        }
231        
232        
233
234        
235    });
236
237    // Jos klikataan muualle kuin headeriin, sulje dropdown
238    $(document).click(function (e) {
239        var $tgt = $(e.target);
240
241        if ($tgt.closest('.site-header').length == 0) {
242            $('.nav-dropdown-list.w--open').removeClass('w--open');
243        }
244   
245   });
246    
247    // Avaa Ihmiset suodatus
248    
249    $(document).ready(function() {
250        $('.people-filter-open-trigger').click(function() {
251                $('.people-filters-wrapper').slideToggle("fast");
252        });
253    });
254
255  // Avaa Asiantuntijat 
256    
257  /*$(document).ready(function() {
258    $('.single-service-aside-mobile-trigger').click(function() {
259            $('.single-service-aside-holder').animate({
260                width: 'toggle', direction: "left"
261            }, "slow")
262        });
263    });
264
265    $(document).ready(function() {
266        $('.single-service-aside-mobile-trigger').click(function() {
267            $('.single-service-aside-holder').toggle("slide", {direction: "right" }, 1000);
268            $('.single-service-aside-trigger-label-open').css('display', 'none');
269        });
270    });
271
272    */
273
274    /**
275     * Asiantuntija-osion dynaaminen fixed-toiminnallisuus. 
276     * Aloita fixed vasta tietyssä kohtaa scrollausta
277     */
278
279    if($('.palvelu-template-default').length || $('.page-template-aloita').length || $('.page-template-aloita-extra').length ){
280
281        // Osion ylä- ja alarajat joissa fixed, muuten absolute. Lasketaan sisällön yllä olevien (hero, menut jne) korkeuden mukaan
282        var sidesectionTopLimit = $('.section-hero').outerHeight() + $('.site-header').outerHeight(),
283            sidesectionBottomLimit  = 0;
284
285        if( $('#ratkaisut').length) {
286            sidesectionBottomLimit = $('#ratkaisut').offset().top - ($('#ratkaisut').height() / 2) - $('.single-service-aside-col').height();
287        } else {
288            sidesectionBottomLimit = $('.section.cta-main').offset().top - ($('.section.cta-main').height() / 2) - $('.single-service-aside-col').height();
289        }
290        
291        if($('.service-secondary-nav').length){
292            sidesectionTopLimit = sidesectionTopLimit + $('.service-secondary-nav').outerHeight();
293        }
294    }
295
296    $(window).scroll(function() {
297
298        if ($(window).width() > 990) {
299
300            if ( sidesectionTopLimit <= $(window).scrollTop() && $(window).scrollTop() <= sidesectionBottomLimit ) {
301
302                $('.single-service-aside-holder').css({
303                    'position' : 'fixed',
304                    'top' : '0%'
305                });
306
307            // Yli toplimitin ja yli bottomlimitin (absolute mutta top height bottomlimittiin)
308            } else if (sidesectionTopLimit <= $(window).scrollTop() && $(window).scrollTop() >= sidesectionBottomLimit ) {
309                
310                $('.single-service-aside-holder').css({
311                    'position' : 'absolute',
312                    'top' : (sidesectionBottomLimit)+'px'
313                });
314
315            // Alle toplimitin
316            } else {
317
318                $('.single-service-aside-holder').css({
319                    'position' : 'absolute',
320                    'top' : (sidesectionTopLimit)+'px'
321                });
322
323            }
324
325        }
326    });
327
328
329    
330    /**
331     * Asiantuntija-osion näyttäminen mobiilissa, toggle on off
332     */
333    $(document).on('click', '.single-service-aside-trigger-label-open',function(e){
334    
335        e.preventDefault();
336        
337        // Avaa modaali
338        $('.single-service-aside-holder').addClass('open');
339        $('.single-service-aside-holder').css('z-index', '9999');
340        $('.single-service-aside-col').css('transform', 'translateX(0vw)');
341        $('.single-service-aside-trigger-label-open').css('display', 'none');
342        $('.single-service-aside-trigger-label-hide').css('display', 'block');
343
344        
345
346        // Sulje modaali
347        $('.single-service-aside-trigger-label-hide').on('click', function(e){
348
349            e.preventDefault();
350
351            $('.single-service-aside-holder').removeClass('open');
352            $('.single-service-aside-holder').css('z-index', '1');
353            $('.single-service-aside-col').css('transform', 'translateX(100vw)');
354            $('.single-service-aside-trigger-label-open').css('display', 'block');
355            $('.single-service-aside-trigger-label-hide').css('display', 'none');
356
357            //target_modal.delay(500).css('transform', 'translate3d(0vw, 0px, 0px) scale3d(1, 1, 1) rotateX(0deg) rotateY(0deg) rotateZ(0deg) skew(0deg, 0deg)');
358        });
359
360    });
361
362    /**
363     * Mobiilimenu
364     */
365
366    // Avaa valikko
367    $(document).on('click', '.nav-mobile-trigger',function(){
368
369        var dropdown = $('.nav-mobile-menu');
370        
371        // Avaa klikattu (jos ei jo auki)
372        if(dropdown.hasClass('w--open')){
373
374            $(dropdown).removeClass('w--open');
375            $(dropdown).css('opacity', '0');
376            $(dropdown).css('transform', 'translateY(-100vh)');
377
378        } else {
379
380            // Avaa klikatun elementin dropdown
381            $(dropdown).addClass('w--open');
382            $(dropdown).css('opacity', '1');
383            $(dropdown).css('transform', 'translateY(0vh)');
384        }
385        
386    });
387
388    // Mobiilimenu accordionit
389    $(document).on('click', '.mobile-menu-item, .mobile-menu-sub-item', function(){
390
391        var dropdown = $(this).next(),
392            curHeight = dropdown.height(),
393            autoHeight = dropdown.css('height', 'auto').height();
394            
395        dropdown.height(curHeight); // Reset to Default Height
396
397        // Avaa klikattu (jos ei jo auki)
398        if(dropdown.hasClass('w--open')){
399
400            dropdown.removeClass('w--open');
401            dropdown.stop().animate({ height: 0}, 300);
402            $(this).find('.nav-item-icon').removeClass('flipped');
403
404        } else {
405     
406            
407
408            // Avaa klikatun elementin dropdown
409            dropdown.addClass('w--open');
410            dropdown.stop().animate({ height: autoHeight}, 300); 
411            
412            $(this).find('.nav-item-icon').addClass('flipped');
413
414            // Parentin korkeus auto, koska korkeus kasvaa
415            if($(this).hasClass('mobile-menu-sub-item')){
416                $(this).parent().parent().css('height', 'auto');
417            }
418        }
419
420    });
421
422    // Footer accordionit
423    $(document).on('click', '.footer-accordion-item', function(){
424
425        var dropdown = $(this).find('.footer-accordion-content'),
426            curHeight = dropdown.height(),
427            autoHeight = dropdown.css('height', 'auto').height();
428            
429        dropdown.height(curHeight); // Reset to Default Height
430
431        // Avaa klikattu (jos ei jo auki)
432        if(dropdown.hasClass('w--open')){
433
434            dropdown.removeClass('w--open');
435            dropdown.stop().animate({ height: 0}, 300);
436            $(this).find('.nav-item-icon').removeClass('flipped');
437
438        } else {
439     
440            // Avaa klikatun elementin dropdown
441            dropdown.addClass('w--open');
442            dropdown.stop().animate({ height: autoHeight}, 300); 
443            
444            $(this).find('.nav-item-icon').addClass('flipped');
445        }
446
447    });
448
449     /**
450     * Historia
451     */
452    
453    // Jos historia-template
454    if($('body.page-template-historia').length > 0){
455
456        $.fn.isInViewport = function() {
457            var elementTop = $(this).offset().top;
458            var elementBottom = elementTop + $(this).outerHeight();
459        
460            var viewportTop = $(window).scrollTop();
461            // Puolessa välissä viewporttia
462            var viewportBottom = viewportTop + $(window).height() / 2;
463        
464            return elementBottom > viewportTop && elementTop < viewportBottom;
465        };
466
467        // Poistu - smooth scroll
468        $('.history-back-to-top-trigger').click(function(e){
469                    
470            e.preventDefault();
471
472            $('html, body').animate({scrollTop: $('#sisalto-alku').offset().top - 300 }, 900);
473
474        });
475
476        /*
477        ** Parallax scroll
478        */
479    
480        $(window).on('load scroll', function() {
481
482            var parallaxElement = $('.history-item'),
483                parallaxQuantity = parallaxElement.length;
484
485            window.requestAnimationFrame(function() {
486                for (var i = 0; i < parallaxQuantity; i++) {
487                    var currentElement = parallaxElement.eq(i),
488                    windowTop = $(window).scrollTop(),
489                    elementTop = currentElement.offset().top,
490                    elementHeight = currentElement.height(),
491                    viewPortHeight = window.innerHeight * 0.5 - elementHeight * 0.5,
492                    scrolled = windowTop - elementTop + viewPortHeight;
493                    if(currentElement.isInViewport()){
494                        currentElement.css({
495                            transform: 'translate3d(0,' + (scrolled * -0.04) + 'px, 0)'
496                        });
497                    } else {
498                        currentElement.css({
499                            transform: 'translate3d(0,' + (scrolled * -0.01) + 'px, 0)'
500                        });
501                    }
502                    
503                }
504            });
505            
506        });
507
508        // Osion seuraaminen ja aktiivisen / inaktiivisten opacity
509        let services = document.querySelectorAll('.history-item');
510        
511        const options = {
512            rootMargin:  '-10%',
513            threshold: 0.5 // Observer should be fired when 50% of an observed element intersects the "capturing frame";
514        }
515
516        let Observer = new IntersectionObserver(
517            function (entries, Observer) {
518                entries.forEach(entry => {
519                    if (entry.isIntersecting) {
520
521                        visible = $(entry.target);
522                        //console.log(visible.find('.history-year > div').text() + ' intersecting');
523                        
524                        visible.css('opacity', '1');
525
526                    } else {
527                        $(entry.target).css('opacity', '0.2');
528                    }
529
530                });
531        }, options);
532        
533        services.forEach(section => Observer.observe(section));
534
535    }
536    
537    /**
538     * Ratkaisumme-tabit
539     */
540
541    $(document).on('click', '.w-tab-link', function(e){
542
543        e.preventDefault();
544        var tab = $(this),
545            target = $(this).attr('href'),
546            content = $('.tabs-content-element').find(target);
547
548        // Sulje kaikki
549        $('.tab-content-pane').removeClass('w--tab-active');
550        $('.tabs-item-link').removeClass('w--current');
551
552        // Avaa target
553        $(content).addClass('w--tab-active');
554        $(tab).addClass('w--current');
555    
556    });
557
558
559});

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.