PageSourceSearch

https://www.inp-toulouse.fr/skins/inp-new/resources/js/custom.js

js inp-toulouse.fr collected 2026-10-01 11:28:14 UTC 26,771 bytes, 778 lines download raw bytes

1/**
2 *   0- Preloader
3 *   1- Main menu
4 *   2- Mobile menu
5 *   3- Video wrapper
6 *   4- Flex slider
7 *   5- Owl Carousel
8 *   6- Color Box
9 *   7- Scroll to top
10 *   8- Bootstrap Collapse
11 *   9- NiceScroll
12 *   10- Masonry
13 *   11- Portfolio Filter
14 *   12- Google Map
15 *   13- Validate Form
16     14- Single-author-Filter
17     15- Fraction Slider
18     16- Fix css ie8
19     17- Wow.js
20 *-----------------------------------------------------------------
21 **/
22 
23
24"use strict";
25
26/* =========================================================
270. Preloader
28============================================================ */
29
30
31jQuery(document).ready(function(){
32
33var kopa_variable = {
34    "contact": {
35        "address": "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
36        "marker": "/url image"
37    },
38    "i18n": {
39        "VIEW": "View",
40        "VIEWS": "Views",
41        "validate": {
42            "form": {
43                "SUBMIT": "Submit",
44                "SENDING": "Sending..."
45            },
46            "name": {
47                "REQUIRED": "Please enter your name",
48                "MINLENGTH": "At least {0} characters required"
49            },
50            "email": {
51                "REQUIRED": "Please enter your email",
52                "EMAIL": "Please enter a valid email"
53            },
54            "url": {
55                "REQUIRED": "Please enter your url",
56                "URL": "Please enter a valid url"
57            },
58            "message": {
59                "REQUIRED": "Please enter a message",
60                "MINLENGTH": "At least {0} characters required"
61            }
62        },
63        "tweets": {
64            "failed": "Sorry, twitter is currently unavailable for this user.",
65            "loading": "Loading tweets..."
66        }
67    },
68    "url": {
69        "template_directory_uri": resourcesPath
70    }
71};
72var map;
73/* =========================================================
741. Main Menu
75============================================================ */
76
77Modernizr.load([
78  {
79    load: kopa_variable.url.template_directory_uri + 'js/superfish.js',
80    complete: function () {
81
82        //Main menu
83        jQuery('.main-menu').superfish({
84          cssArrows: true
85        });
86
87    }
88  }
89]);
90
91Modernizr.load([
92  {
93    load: kopa_variable.url.template_directory_uri + 'js/superfish.js',
94    complete: function () {
95
96        //Main menu
97        jQuery('.secondary-menu').superfish({
98          cssArrows: false
99        });
100
101    }
102  }
103]);
104
105/* ============================================
1062. Mobile-menu
107=============================================== */
108    Modernizr.load([{
109        load: [kopa_variable.url.template_directory_uri + 'js/jquery.navgoco.js'],
110        complete: function () {
111            jQuery(".main-menu-mobile").navgoco({
112                accordion: true
113            });
114            jQuery(".main-nav-mobile > .pull").click(function () {
115                jQuery(".main-menu-mobile").slideToggle("slow");
116            });
117            jQuery(".caret").removeClass("caret");
118        }
119    }]);
120
121/* =========================================================
1223. Video wrapper
123============================================================ */
124
125if (jQuery(".video-wrapper").length > 0) {
126    Modernizr.load([{
127        load: kopa_variable.url.template_directory_uri + '/js/fitvids.js',
128        complete: function () {
129            jQuery(".video-wrapper").fitVids();
130        }
131    }]);
132};
133
134
135/* =========================================================
1364. Flex slider
137============================================================ */
138
139Modernizr.load([
140  {
141    load: kopa_variable.url.template_directory_uri + 'js/jquery.flexslider.js',
142    complete: function () {
143      jQuery('.kopa-home-slider').flexslider({
144        animation: "slide",
145        controlNav: false,
146        slideshow: false,
147        smoothHeight: true,
148        prevText: "",
149        nextText: "",
150        start: function(slider){
151          jQuery(".loading").hide();      
152          jQuery('.total-slides').text(slider.count);
153          jQuery('.current-slide').text(slider.currentSlide + 1);      
154        },
155        after: function(slider) {
156          jQuery('.current-slide').text(slider.currentSlide + 1);
157        }
158      });
159    }
160  }
161]);
162
163
164/* =========================================================
1655. Owl Carousel
166============================================================ */
167
168    Modernizr.load([{
169        load: [kopa_variable.url.template_directory_uri + 'js/owl.carousel.js'],
170        complete: function () {
171
172            jQuery('.kopa-testimonial-carousel').owlCarousel({
173                items : 1,
174                itemsDesktop : [1120,1],
175                itemsDesktopSmall : [979,1],
176                itemsTablet : [799,1],
177                lazyLoad : true,
178                navigation : true,
179                pagination: false,
180                navigationText : false,
181                autoPlay: true
182            });  
183
184            
185            var owl1 = jQuery(".owl-carousel-1");
186            owl1.owlCarousel({
187                singleItem: true,
188                pagination: false,
189                slideSpeed: 600,
190                transitionStyle : "fade",
191                navigationText: false,
192                navigation: true,
193                afterInit: function(){
194                   jQuery(".loading").hide();    
195                }
196            });
197            
198            var owl2 = jQuery(".owl-carousel-2");
199            owl2.owlCarousel({
200                singleItem: true,
201                pagination: true,
202                autoPlay: 5000,
203                slideSpeed: 1000,
204                transitionStyle : "fade",
205                navigation: false
206            }); 
207
208            var owl3 = jQuery(".owl-carousel-3");
209            owl3.owlCarousel({
210                singleItem: true,
211                pagination: true,
212                autoPlay: 5000,
213                slideSpeed: 1000,
214                transitionStyle : "fade",
215                navigation: false
216            }); 
217
218            var owl4 = jQuery(".owl-carousel-4");
219            owl4.owlCarousel({
220                items: 4,
221                pagination: false,
222                slideSpeed: 600,
223                navigationText: false,
224                navigation: true
225            });
226
227            var owl5 = jQuery(".owl-carousel-5");
228            owl5.owlCarousel({
229                singleItem: true,
230                pagination: true,
231                slideSpeed: 1000,
232                transitionStyle : "backSlide",
233                navigation: false
234            });
235
236            var owl6 = jQuery(".owl-carousel-6");
237            owl6.owlCarousel({
238                singleItem: true,
239                pagination: false,
240                slideSpeed: 600,
241                navigationText: false,
242                navigation: true
243            });
244
245            var owl7 = jQuery(".owl-carousel-7");
246            owl7.owlCarousel({
247                items: 4,
248                pagination: false,
249                slideSpeed: 600,
250                navigationText: false,
251                navigation: true
252            });
253
254            var owl8 = jQuery(".owl-carousel-8");
255            owl8.owlCarousel({
256                items: 3,
257                itemsDesktop: [1024, 3],
258                pagination: false,
259                slideSpeed: 600,
260                navigationText: false,
261                navigation: true
262            });
263
264            var owl9 = jQuery(".owl-carousel-9");
265            owl9.owlCarousel({
266                singleItem: true,
267                pagination: false,
268                slideSpeed: 600,
269                navigationText: false,
270                navigation: true
271            });
272
273            jQuery('.owl-prev').addClass('fa fa-angle-left');
274            jQuery('.owl-next').addClass('fa fa-angle-right');
275            jQuery('.owl-carousel-1 .owl-prev').removeClass('fa-angle-left').addClass('fa-caret-left');
276            jQuery('.owl-carousel-1 .owl-next').removeClass('fa-angle-right').addClass('fa-caret-right');
277        }
278    }])
279
280
281
282/* =========================================================
2836. Color Box
284============================================================ */
285
286Modernizr.load([
287{
288  load: kopa_variable.url.template_directory_uri + 'js/jquery.colorbox.js',
289  complete: function () {
290    jQuery(".group1").colorbox({rel:'group1'});
291    jQuery(".group2").colorbox({rel:'group2'});
292    jQuery(".group3").colorbox({rel:'group3'});
293    jQuery(".group4").colorbox({rel:'group4'});
294    jQuery(".group5").colorbox({rel:'group5'});
295    jQuery(".group6").colorbox({rel:'group6'});
296    jQuery(".group7").colorbox({rel:'group7'});
297    jQuery(".group8").colorbox({rel:'group8'});
298    jQuery(".group9").colorbox({rel:'group9'});
299    jQuery(".group10").colorbox({rel:'group10'});
300    jQuery(".group11").colorbox({rel:'group11'});
301    jQuery(".group12").colorbox({rel:'group12'});
302  }
303}
304]);
305
306/* =========================================================
3077. Scroll to top
308============================================================ */
309
310    // hide #back-top first
311    jQuery("#back-top").hide();
312    
313    // fade in #back-top
314    jQuery(function () {
315        jQuery(window).scroll(function () {
316            if (jQuery(this).scrollTop() > 200) {
317                jQuery('#back-top').fadeIn();
318            } else {
319                jQuery('#back-top').fadeOut();
320            }
321        });
322
323        // scroll body to 0px on click
324        jQuery('#back-top a').click(function () {
325            jQuery('body,html').animate({
326                scrollTop: 0
327            }, 800);
328            return false;
329        });
330    });
331
332/* =========================================================
3338. BOOTSTRAP COLLAPSE
334============================================================ */
335
336var panel_titles = jQuery('.panel-title a');
337    panel_titles.addClass("collapsed");
338    jQuery('.panel-heading.active').find(panel_titles).removeClass("collapsed");
339    if (panel_titles.length > 0) {
340        panel_titles.click(function() {
341            parent = jQuery(this).attr('data-parent');
342            //ACCORDION
343            if (undefined !== parent) {
344                var obj_actived = jQuery(parent).find('.panel-heading.active');
345                obj_actived.removeClass('active');
346                obj_actived.find('span.b-collapse').html('+');
347                if (jQuery(this).hasClass('collapsed')) {
348                    jQuery(this).parents('.panel-heading').addClass('active');
349                    jQuery(this).find('span.b-collapse').html('-');
350                } else {
351                    jQuery(this).parents('.panel-heading').removeClass('active');
352                    jQuery(this).find('span.b-collapse').html('+');
353                }
354            } else {
355            //TOGGLE
356                parent = jQuery(this).parents('.panel-heading');
357                if (parent.hasClass('active')) {
358                    parent.removeClass('active');
359                    jQuery(this).find('span.b-collapse').html('+');
360                } else {
361                    parent.addClass('active');
362                    jQuery(this).find('span.b-collapse').html('-');
363                }
364            }
365        });
366    }
367
368 /* =========================================================
369Toggle
370============================================================ */
371 
372 jQuery('#toggle .collapse').collapse({
373  toggle: false
374});  
375
376
377
378    /* =========================================================
37910. masonry
380============================================================ */
381
382    Modernizr.load([{
383        load: [kopa_variable.url.template_directory_uri + 'js/masonry.pkgd.js', kopa_variable.url.template_directory_uri + 'js/imagesloaded.js'],
384        complete: function () {
385            var jQuerymasonry1 = jQuery('.kopa-blog-masonry-widget > ul');
386            imagesLoaded(jQuerymasonry1, function () {
387                jQuerymasonry1.masonry({
388                    columnWidth: 1,
389                    itemSelector: '.ms-item1'
390                });
391                jQuerymasonry1.masonry('bindResize')
392            });
393        }
394    }]);
395
396   /* =========================================================
39711. Portfolio Filter
398============================================================ */
399
400    
401
402   /* =========================================================
40311. Portfolio Filter
404============================================================ */
405
406    Modernizr.load([{
407        load: [kopa_variable.url.template_directory_uri + 'js/jquery.imagesloaded.js',kopa_variable.url.template_directory_uri + 'js/jquery.wookmark.js'],
408        complete: function () {
409                jQuery('.portfolio-list-item').imagesLoaded(function() {
410                // Prepare layout options.
411                var options = {
412                  autoResize: true, // This will auto-update the layout when the browser window is resized.
413                  container: jQuery('.portfolio-container'), // Optional, used for some extra CSS styling
414                  offset: 0, // Optional, the distance between grid items
415                  fillEmptySpace: true // Optional, fill the bottom of each column with widths of flexible height
416                };
417
418                // Get a reference to your grid items.
419                var handler = jQuery('.portfolio-list-item li'),
420                    filters = jQuery('.filters-options li');
421
422                // Call the layout function.
423                handler.wookmark(options);
424
425                /**
426                 * When a filter is clicked, toggle it's active state and refresh.
427                 */
428                var onClickFilter = function(event) {
429                  var item = jQuery(event.currentTarget),
430                      activeFilters = [];
431
432                  if (!item.hasClass('active')) {
433                    filters.removeClass('active');
434                  }
435                  item.toggleClass('active');
436
437                  // Filter by the currently selected filter
438                  if (item.hasClass('active')) {
439                    activeFilters.push(item.data('filter'));
440                  }
441
442                  handler.wookmarkInstance.filter(activeFilters);
443                }
444
445                // Capture filter click events.
446                filters.click(onClickFilter);
447              });
448
449
450            jQuery('.portfolio-list').imagesLoaded(function() {
451                // Prepare layout options.
452                var options = {
453                  autoResize: true, // This will auto-update the layout when the browser window is resized.
454                  container: jQuery('.portfolio-container2'), // Optional, used for some extra CSS styling
455                  offset: 0, // Optional, the distance between grid items
456                  fillEmptySpace: true // Optional, fill the bottom of each column with widths of flexible height
457                };
458
459                // Get a reference to your grid items.
460                var handler = jQuery('.portfolio-list > li'),
461                    filters = jQuery('.filters-options2 li');
462
463                // Call the layout function.
464                handler.wookmark(options);
465
466                /**
467                 * When a filter is clicked, toggle it's active state and refresh.
468                 */
469                var onClickFilter = function(event) {
470                  var item = jQuery(event.currentTarget),
471                      activeFilters = [];
472
473                  if (!item.hasClass('active')) {
474                    filters.removeClass('active');
475                  }
476                  item.toggleClass('active');
477
478                  // Filter by the currently selected filter
479                  if (item.hasClass('active')) {
480                    activeFilters.push(item.data('filter'));
481                  }
482
483                  handler.wookmarkInstance.filter(activeFilters);
484                }
485
486                // Capture filter click events.
487                filters.click(onClickFilter);
488              });
489        }
490    }]);
491
492/* =========================================================
49312. Google Map
494============================================================ */
495
496var map;
497if (jQuery('.kopa-map').length > 0) {
498    Modernizr.load([{
499        load: ['js/gmaps.js'],
500            complete: function () {
501          var id_map = jQuery('.kopa-map').attr('id');
502          var lat = parseFloat(jQuery('.kopa-map').attr('data-latitude'));
503          var lng = parseFloat(jQuery('.kopa-map').attr('data-longitude'));
504          var place = jQuery('.kopa-map').attr('data-place');
505
506      map = new GMaps({
507          el: '#'+id_map,
508          lat: lat,
509          lng: lng,
510          zoomControl : true,
511          zoomControlOpt: {
512              style : 'SMALL',
513              position: 'TOP_LEFT'
514          },
515          panControl : false,
516          streetViewControl : false,
517          mapTypeControl: false,
518          overviewMapControl: false
519        });
520        map.addMarker({
521          lat: lat,
522            lng: lng,
523          title: place
524        });
525        }
526    }]);
527};
528
529/* =========================================================
53013. Validate Form
531============================================================ */
532
533    if (jQuery('.contact-form').length >0) {
534        Modernizr.load([
535          {
536            load:['js/jquery.form.js','js/jquery.validate.js'],
537            complete: function () {
538                jQuery('.contact-form').validate({
539                    // Add requirements to each of the fields
540                    rules: {
541                        name: {
542                            required: true,
543                            minlength: 2
544                        },
545                        email: {
546                            required: true,
547                            email: true
548                        },
549                        phone: {
550                            required: true,
551                            phone: true
552                        },
553                        message: {
554                            required: true,
555                            minlength: 10
556                        }
557                    },
558                    // Specify what error messages to display
559                    // when the user does something horrid
560                    messages: {
561                        name: {
562                            required: "Please enter your name.",
563                            minlength: jQuery.format("At least {0} characters required.")
564                        },
565                        email: {
566                            required: "Please enter your email.",
567                            email: "Please enter a valid email."
568                        },
569                        phone: {
570                            required: "Please enter your phone.",
571                            url: "Please enter a valid phone."
572                        },
573                        message: {
574                            required: "Please enter a message.",
575                            minlength: jQuery.format("At least {0} characters required.")
576                        }
577                    },
578                    // Use Ajax to send everything to processForm.php
579                    submitHandler: function(form) {
580                        jQuery("#input-submit").attr("value", "Sending...");
581                        jQuery(form).ajaxSubmit({
582                            success: function(responseText, statusText, xhr, jQueryform) {
583                                jQuery("#response").html(responseText).hide().slideDown("fast");
584                                jQuery("#input-submit").attr("value", "Submit");
585                            }
586                        });
587                        return false;
588                    }
589                });
590            }
591          }
592        ]);
593    };
594    /*** comment form ***/
595    if (jQuery('#comments-form').length >0) {
596        Modernizr.load([
597          {
598            load:['js/jquery.form.js','js/jquery.validate.js'],
599            complete: function () {
600                jQuery('#comments-form').validate({
601                    // Add requirements to each of the fields
602                    rules: {
603                        name: {
604                            required: true,
605                            minlength: 2
606                        },
607                        email: {
608                            required: true,
609                            email: true
610                        },
611                        phone: {
612                            required: true,
613                            phone: true
614                        },
615                        message: {
616                            required: true,
617                            minlength: 10
618                        }
619                    },
620                    // Specify what error messages to display
621                    // when the user does something horrid
622                    messages: {
623                        name: {
624                            required: "Please enter your name.",
625                            minlength: jQuery.format("At least {0} characters required.")
626                        },
627                        email: {
628                            required: "Please enter your email.",
629                            email: "Please enter a valid email."
630                        },
631                        phone: {
632                            required: "Please enter your phone.",
633                            url: "Please enter a valid phone."
634                        },
635                        message: {
636                            required: "Please enter a message.",
637                            minlength: jQuery.format("At least {0} characters required.")
638                        }
639                    },
640                    // Use Ajax to send everything to processForm.php
641                    submitHandler: function(form) {
642                        jQuery("#input-submit").attr("value", "Sending...");
643                        jQuery(form).ajaxSubmit({
644                            success: function(responseText, statusText, xhr, jQueryform) {
645                                jQuery("#response").html(responseText).hide().slideDown("fast");
646                                jQuery("#input-submit").attr("value", "Submit");
647                            }
648                        });
649                        return false;
650                    }
651                });
652            }
653          }
654        ]);
655    };
656
657/* ============================================
65814. Single-author-Filter
659=============================================== */
660
661    jQuery('.social-filter > div span').click(function () {
662        if (jQuery(".social-filter ul").is(":hidden")) {
663            jQuery(".social-filter ul").slideDown("slow");
664        } else {
665            jQuery(".social-filter ul").slideUp();
666        }
667    });
668  
669/* ============================================
67015. Fraction Slider
671=============================================== */
672
673      Modernizr.load([{
674        load: [kopa_variable.url.template_directory_uri + 'js/jquery.fractionslider.js'],
675        complete: function () {
676            var fr1 = jQuery('.kopa-home-slider-3-widget .slider');
677            fr1.fractionSlider({
678                'fullWidth':            true,
679                'controls':             true, 
680                'pager':                true,
681                'responsive':           true, 
682                'dimensions':           "1366,453",
683                'increase':             false,
684                'pauseOnHover':         true,
685                'slideEndAnimation':    true,
686                'slideTransitionSpeed' : 400,
687                'backgroundSpeed' : 400,
688                'timeout' : 400
689            });
690
691            var fr2 = jQuery('.kopa-home-slider-4-widget .slider');
692            fr2.fractionSlider({
693                'fullWidth':            false,
694                'controls':             true, 
695                'pager':                true,
696                'responsive':           true, 
697                'dimensions':           "1150,434",
698                'increase':             false,
699                'pauseOnHover':         true,
700                'slideEndAnimation':    true,
701                'slideTransitionSpeed' : 400,
702                'backgroundSpeed' : 400,
703                'timeout' : 400
704            });
705
706            var fr3 = jQuery('.kopa-home-slider-5-widget .slider');
707            fr3.fractionSlider({
708                'fullWidth':            false,
709                'controls':             true, 
710                'pager':                true,
711                'responsive':           true, 
712                'dimensions':           "1366,434",
713                'increase':             false,
714                'pauseOnHover':         true,
715                'slideEndAnimation':    true,
716                'slideTransitionSpeed' : 400,
717                'backgroundSpeed' : 400,
718                'timeout' : 400
719            });
720
721            jQuery('.fraction-slider .prev').addClass('fa fa-angle-left');
722            jQuery('.fraction-slider .next').addClass('fa fa-angle-right');
723        }
724    }]);
725
726/* =========================================================
72716. Fix css ie8
728============================================================ */
729    jQuery(".e-heading p:last-child").css("margin-bottom", "0");
730    jQuery(".kopa-area-1 .widget:last-child.parallax, .kopa-area-2 .widget:last-child.parallax, .kopa-area-2 .widget:last-child.kopa-portfolio-2-widget, .article-list-3 > ul > li:last-child").css("margin-bottom", "0 !important");
731    jQuery(".kopa-parallax-2-widget .ms-item1:nth-child(2)").css("background", "url(images/background/bg/6.png);");
732
733/* =========================================================
73417. Wow
735============================================================ */
736function mobilecheck() {
737    if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
738        return false;
739    }
740    return true;
741}
742Modernizr.load([
743{
744  load: resourcesPath + 'js/jquery.wow.js',
745  complete: function () {
746    if (mobilecheck()) {
747        //Wow js animation
748        new WOW().init();
749        jQuery("wow").addClass("animated");
750    }
751  }
752}
753]);
754
755
756
757/* =========================================================
75818. Sticky menu
759============================================================ */ 
760
761var sticky = $j('.kopa-header-bottom ');
762var origOffsetY = sticky.position().top +28;//les menus n'ont pas la m�me taille;
763
764function onScroll(e) {
765	var top = (document.documentElement && document.documentElement.scrollTop) || 
766    document.body.scrollTop;
767    if (!sticky.hasClass('fixed') && top >= origOffsetY) {
768    	sticky.addClass('fixed');
769    }
770    else if (top< origOffsetY) {
771        sticky.removeClass('fixed');
772    }
773}
774
775document.addEventListener('scroll', onScroll);
776
777
778});

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.