PageSourceSearch

https://moto-net.com/sites/default/files/js/js_X3qb_Pr38gxgzVnUkSW9OTq9ese8nR0uGQX1ngEwUrk.js

js moto-net.com collected 2026-10-02 10:25:02 UTC 75,588 bytes, 2,214 lines download raw bytes

1function show_object(o) {
2//   var t="";for (p in o) {t+="\n"+p+"="+o[p]};alert(t);
3  jQuery('body').append('------------------<br/>');
4  for (p in o) {
5      jQuery('body').append(p+"="+o[p]+"<br/>");
6  }
7}
8;
9// Ouverture / fermeture d'une popup par survol
10//
11// Utilisation :
12//   <div id="un-id">
13//     <div class="popup">
14//        ...
15//     </div>
16//   </div>
17//
18//   <script>
19//     jQuery(document).ready(function(){
20//       popupInit('#un-id',{});
21//     });
22//   </script>
23//
24// Le premier div sera affiché. Il peut par exemple contenir une image de fond.
25// Le div de classe popup sera affiché au survol du premier, et sera effacé
26// lorsque la souris ira ailleurs, après un certain délai.
27// Noter que le contenu de <div class="popup"> sera enclos dans un <div class="popup-content">
28//
29// Paramètres
30//   ex :    popupInit('#un-id',{delay:500,duration:'slow',easing:'swing'});
31//     delay : temps entre le survol et l'ouverture ou la fermeture.
32//             utile pour éviter une ouverture sur un survol fugitif,
33//             ou la fermeture en passant d'une icone à la popup, par exemple.
34//             défaut = 500
35//     duration : durée de l'animation (cf doc jquery show())
36//             défaut = slow
37//     easing : type d'animation (cf doc jquery show())
38//             défaut = swing
39//     event  : évenement déclenchant l'ouverture ou la fermeture
40//             mouse = ouverture au survol, fermeture en fin de survol
41//             click = ouverture et fermeture par clic
42//             click-mouse = ouverture par clic, fermeture par clic ou fin de survol
43//             always = toujours ouvert
44//             all = click + mouse
45//               défaut = mouse
46//     popup : identifiant de la popup associée.
47//             par défaut, c'est l'élément de class popup inclus.
48//     callback : nom d'une fonction qui sera appelée lors de l'ouverture ou de la fermeture de la popup.
49//             un argument sera passé, valant 'open' ou 'close'.
50//             la callback retourne vrai pour autoriser l'action, faux sinon.
51//     group : permet de définir un groupe de popups dans lequel une seule popup sera ouverte à la fois.
52//     width : taille fixée pour la popup
53
54var popupGroups = {};
55
56function popupInit(selector,params) {
57  var me = jQuery(selector);
58  
59  // L'élement doit exister
60  if (me.length!=1) {
61    throw "popupInit('"+selector+"') : l'élément n'existe pas ou n'est pas unique";
62  }
63
64  // Sauvegarde des parametres ou de leurs valeurs par défaut
65  me.data('selector', selector);
66  me.data('delay',      (params.hasOwnProperty('delay'))      ? params.delay    : 500);
67  me.data('duration',   (params.hasOwnProperty('duration'))   ? params.duration : 'slow');
68  me.data('easing',     (params.hasOwnProperty('easing'))     ? params.easing   : 'swing');
69  me.data('event',      (params.hasOwnProperty('event'))      ? params.event    : 'mouse');
70  me.data('popup',      (params.hasOwnProperty('popup'))      ? params.popup    : '');
71  me.data('callback',   (params.hasOwnProperty('callback'))   ? params.callback : '');
72  me.data('group',      (params.hasOwnProperty('group'))      ? params.group : '');
73  me.data('width',      (params.hasOwnProperty('width'))      ? params.width : 'auto');
74  me.data('margin-top', (params.hasOwnProperty('marginTop')) ? params.marginTop : 0);
75  me.data('calculer-y-avec-scroll', (params.hasOwnProperty('calculerYAvecScroll')) ? params.calculerYAvecScroll: 1);
76  
77  // Cas d'un groupe
78  if (me.data('group')!='') {
79    var group = me.data('group');
80    if (!popupGroups.hasOwnProperty(group)) {
81      popupGroups[group] = new Array();
82    }
83    popupGroups[group][popupGroups[group].length] = me;
84  }
85  
86  // Ajout de fonctions spécifiques sur l'objet
87  me.data('getPopup',function(){
88    var popup;
89    var selector = me.data('popup');
90  
91    if (selector=="") {
92      popup = me.find('.popup');
93    }
94    else {
95      popup = jQuery(selector);
96    }
97    // La popup doit exister et être unique
98    if (popup.length!=1) {
99      throw "popupInit('"+me.data('selector')+"') : la popup n'existe pas ou n'est pas unique";
100    }
101    return popup;
102  });
103  me.data('togglePopup',function(event) {
104    if (me.data('opened')=="1") {
105      me.data('closePopup')(false/*me*/);
106    }
107    else {
108      me.data('openPopup')();
109    }
110  });
111  me.data('openPopupOnMouse',function(event) {
112    me.data('mouseover',"1");
113    if (me.data('opened')=="1") return; // déjà ouvert
114    var ts = setTimeout(function(){
115      clearTimeout(ts);
116      if (me.data('mouseover')=="1") {
117        me.data('openPopup')();
118      }
119    },me.data('delay'));
120  });
121  me.data('keepPopup',function(event) {
122    me.data('mouseover',"1");
123  });
124  me.data('closePopupOnMouse',function(event) {
125    me.data('mouseover',"0");
126    if (me.data('opened')=="0") return; // déjà fermé
127    var ts = setTimeout(function(){
128      clearTimeout(ts);
129      if (me.data('mouseover')=="0") {
130        me.data('closePopup')(false);
131        me.dequeue();
132      }
133    },me.data('delay'));
134  });
135  me.data('openPopup',function(){
136    var ok = true;
137    if (me.data('callback')!="") {
138      eval("ok = "+me.data('callback')+"('open')");
139    }
140    if (!ok) return;
141    me.data('opened',"1");
142    me.addClass('opened');
143    var popup  = me.data('getPopup')();
144    if (me.data('popup')=='') {
145      // Calcul de la position
146      var offset = me.offset();
147      popup.css({left:'-9999px'});
148      popup.show();
149      
150      // La popup ne déborde pas à condition de bien la positionner.
151      //   - idéalement, le centre du <LI> correspond au centre de la popup
152      var largeur_popup = popup.width();
153      var largeur_dispo = me.offsetParent().width();
154      var debut_popup;
155      var fin_popup;
156      var y = me.height() + offset.top /*- me.offsetParent().position().top*/ + me.data('margin-top'); /* version 3 ok */
157      if (me.data('calculer-y-avec-scroll')) {
158        y-= jQuery(window).scrollTop();
159        y-= me.offsetParent().position().top;
160        // ça dépend... oui pour les menus, mais non pour la popup de connexion...
161      }
162      else {
163      }
164      // Quand la largeur de la popup atteitn ou dépasse la largeur disponible, elle est simplement
165      // centrée
166      if (largeur_popup >= largeur_dispo) {
167        debut_popup = Math.round((largeur_dispo - largeur_popup)/2);
168        popup.css({top:y,left:debut_popup});
169      }
170      // Sinon elle est centrée sur le li
171      else {
172        var centre_li = Math.round(offset.left + (me.width() / 2));
173        debut_popup = Math.round(centre_li - (popup.width() / 2));
174        fin_popup = debut_popup + popup.width();
175        if (fin_popup > largeur_dispo) {
176          delta = fin_popup - largeur_dispo;
177          debut_popup -= delta;
178          fin_popup -= delta;
179        }
180        if (debut_popup < 0) {
181          delta = 0 - debut_popup;
182          debut_popup += delta;
183          fin_popup += delta;
184        }
185        popup.offset({top:y,left:debut_popup});
186      }
187    }
188    var group = me.data('group');
189    if (group != "") {
190      var brothers = popupGroups[group];
191      for (i in brothers) {
192        var brother = brothers[i];
193        if (brother !== me) {
194          brother.data('closePopup')(false);
195        }
196      }
197    }
198    if (me.data('event')=='all') {
199      jQuery(document).click(me.data('closePopupOnClick'));
200    }
201    popup.show(me.data('duration'),me.data('easing'));
202    popup.trigger("popup",['open']);
203  });
204  me.data('closePopup',function(force) {
205    var ok = true;
206    if (!force && me.data('callback')!="") {
207      eval("ok = "+me.data('callback')+"('close')");
208    }
209    if (!ok) return;
210    var popup  = me.data('getPopup')();
211    me.removeClass('opened');
212    popup.hide();
213    if (me.data('event')=='all') {
214      jQuery(document).unbind('click',me.data('closePopupOnClick'));
215    }
216    me.data('opened',"0");
217    popup.trigger("popup",['close']);
218//     if (me.data('callback')!="") {
219//       eval(me.data('callback')+"('close')");
220//     }
221  });
222  me.data('closePopupOnClick',function(event) {
223    // Fermeture acceptée sur un click ailleurs que sur la popup
224    if (event.button != 0) {
225      // Seul le click avec bouton principal est géré
226      return; 
227    }
228    
229    var popup = me.data('getPopup')(me);
230    if (popup.is(event.target)) {
231      // click sur la popup
232      return; 
233    }
234    var e = popup.find(event.target);
235    if (e.length) { 
236      // ou click sur un composant de la popup
237      return;
238    }
239    // Donc on peut fermer
240    me.data('closePopup')(true);
241  });
242  me.data('setCss',function(array){
243    var popup  = me.data('getPopup')();
244    for (var property in array) {
245      var values = (array[property]+"").split('|');
246      var ok = false;
247      for (var i in values) {
248        var value = values[i];
249        if (value == popup.css(property)) ok = true;
250      }
251      if (!ok) {
252        popup.css(property,values[0]);
253      }
254    }
255  });
256  
257  var popup = me.data('getPopup')(me);
258  
259  popup.find('> *').wrapAll('<div class="popup-content">');
260
261  // Css requis
262  me.data('setCss')({
263    display:'none',
264    position:'absolute|fixed',
265    'z-index':5000|6000,
266  });
267  
268  // La popup ne doit jamais déborder
269  if (me.data('width')=='auto') {
270    me.data('setCss')({
271      'max-width':'80%',
272    });
273  }
274  else {
275    me.data('setCss')({
276      width: me.data('width'),
277    });
278  }
279  
280  
281  popup.click(function(event){event.stopPropagation()});
282
283  // Handlers
284  if (params.event == "mouse") {
285    me.mouseover(me.data('openPopupOnMouse'));
286    me.mouseout(me.data('closePopupOnMouse'));
287  }
288  else if (params.event == "click") {
289    me.click(me.data('togglePopup'));
290  }
291  else if (params.event == "click-mouse") {
292    me.click(me.data('togglePopup'));
293    me.mouseover(me.data('keepPopup'));
294    me.mouseout(me.data('closePopupOnMouse'));
295  }
296  else if (params.event == "all") {
297    me.click(me.data('togglePopup'));
298    me.mouseover(me.data('openPopupOnMouse'));
299    me.mouseout(me.data('closePopupOnMouse'));
300  }
301  else if (params.event == "always") {
302    me.data('openPopup')();
303  }
304}
305;
306/* Aspect du bouton menu 
307 * Callback déclenchée par popup.js
308 */
309
310/* Classe scrolled pour le body lorsqu'il
311 * est scrollé au delà d'une limite :
312 * La hauteur de tout ce qui est avant la page lorsqu'elle n'est pas scrollée
313 */
314jQuery(window).scroll(function(){
315  var body = jQuery('body');
316  var marge = body.outerHeight(true)-body.outerHeight(false);
317  var limite = body.data('limite');
318  if (marge > limite) {
319//       console.info(marge);
320      body.data('limite',marge);
321  }
322  if (jQuery(window).scrollTop() > limite) {
323    jQuery('body').addClass('scrolled');
324  }
325  else {
326    jQuery('body').removeClass('scrolled');
327  }
328});
329
330jQuery(document).ready(function() {
331  var body = jQuery('body');
332  body.data('limite',0);
333});
334               ;
335/*
336 *  jQuery OwlCarousel v1.3.3
337 *
338 *  Copyright (c) 2013 Bartosz Wojciechowski
339 *  http://www.owlgraphic.com/owlcarousel/
340 *
341 *  Licensed under MIT
342 *
343 */
344
345/*JS Lint helpers: */
346/*global dragMove: false, dragEnd: false, jQuery, jQuery, alert, window, document */
347/*jslint nomen: true, continue:true */
348
349if (typeof Object.create !== "function") {
350    Object.create = function (obj) {
351        function F() {}
352        F.prototype = obj;
353        return new F();
354    };
355}
356(function (jQuery, window, document) {
357
358    var Carousel = {
359        init : function (options, el) {
360            var base = this;
361
362            base.jQueryelem = jQuery(el);
363            base.options = jQuery.extend({}, jQuery.fn.owlCarousel.options, base.jQueryelem.data(), options);
364
365            base.userOptions = options;
366            base.loadContent();
367        },
368
369        loadContent : function () {
370            var base = this, url;
371
372            function getData(data) {
373                var i, content = "";
374                if (typeof base.options.jsonSuccess === "function") {
375                    base.options.jsonSuccess.apply(this, [data]);
376                } else {
377                    for (i in data.owl) {
378                        if (data.owl.hasOwnProperty(i)) {
379                            content += data.owl[i].item;
380                        }
381                    }
382                    base.jQueryelem.html(content);
383                }
384                base.logIn();
385            }
386
387            if (typeof base.options.beforeInit === "function") {
388                base.options.beforeInit.apply(this, [base.jQueryelem]);
389            }
390
391            if (typeof base.options.jsonPath === "string") {
392                url = base.options.jsonPath;
393                jQuery.getJSON(url, getData);
394            } else {
395                base.logIn();
396            }
397        },
398
399        logIn : function () {
400            var base = this;
401
402            base.jQueryelem.data("owl-originalStyles", base.jQueryelem.attr("style"));
403            base.jQueryelem.data("owl-originalClasses", base.jQueryelem.attr("class"));
404
405            base.jQueryelem.css({opacity: 0});
406            base.orignalItems = base.options.items;
407            base.checkBrowser();
408            base.wrapperWidth = 0;
409            base.checkVisible = null;
410            base.setVars();
411        },
412
413        setVars : function () {
414            var base = this;
415            if (base.jQueryelem.children().length === 0) {return false; }
416            base.baseClass();
417            base.eventTypes();
418            base.jQueryuserItems = base.jQueryelem.children();
419            base.itemsAmount = base.jQueryuserItems.length;
420            base.wrapItems();
421            base.jQueryowlItems = base.jQueryelem.find(".owl-item");
422            base.jQueryowlWrapper = base.jQueryelem.find(".owl-wrapper");
423            base.playDirection = "next";
424            base.prevItem = 0;
425            base.prevArr = [0];
426            base.currentItem = 0;
427            base.customEvents();
428            base.onStartup();
429        },
430
431        onStartup : function () {
432            var base = this;
433            base.updateItems();
434            base.calculateAll();
435            base.buildControls();
436            base.updateControls();
437            base.response();
438            base.moveEvents();
439            base.stopOnHover();
440            base.owlStatus();
441
442            if (base.options.transitionStyle !== false) {
443                base.transitionTypes(base.options.transitionStyle);
444            }
445            if (base.options.autoPlay === true) {
446                base.options.autoPlay = 5000;
447            }
448            base.play();
449
450            base.jQueryelem.find(".owl-wrapper").css("display", "block");
451
452            if (!base.jQueryelem.is(":visible")) {
453                base.watchVisibility();
454            } else {
455                base.jQueryelem.css("opacity", 1);
456            }
457            base.onstartup = false;
458            base.eachMoveUpdate();
459            if (typeof base.options.afterInit === "function") {
460                base.options.afterInit.apply(this, [base.jQueryelem]);
461            }
462        },
463
464        eachMoveUpdate : function () {
465            var base = this;
466
467            if (base.options.lazyLoad === true) {
468                base.lazyLoad();
469            }
470            if (base.options.autoHeight === true) {
471                base.autoHeight();
472            }
473            base.onVisibleItems();
474
475            if (typeof base.options.afterAction === "function") {
476                base.options.afterAction.apply(this, [base.jQueryelem]);
477            }
478        },
479
480        updateVars : function () {
481            var base = this;
482            if (typeof base.options.beforeUpdate === "function") {
483                base.options.beforeUpdate.apply(this, [base.jQueryelem]);
484            }
485            base.watchVisibility();
486            base.updateItems();
487            base.calculateAll();
488            base.updatePosition();
489            base.updateControls();
490            base.eachMoveUpdate();
491            if (typeof base.options.afterUpdate === "function") {
492                base.options.afterUpdate.apply(this, [base.jQueryelem]);
493            }
494        },
495
496        reload : function () {
497            var base = this;
498            window.setTimeout(function () {
499                base.updateVars();
500            }, 0);
501        },
502
503        watchVisibility : function () {
504            var base = this;
505
506            if (base.jQueryelem.is(":visible") === false) {
507                base.jQueryelem.css({opacity: 0});
508                window.clearInterval(base.autoPlayInterval);
509                window.clearInterval(base.checkVisible);
510            } else {
511                return false;
512            }
513            base.checkVisible = window.setInterval(function () {
514                if (base.jQueryelem.is(":visible")) {
515                    base.reload();
516                    base.jQueryelem.animate({opacity: 1}, 200);
517                    window.clearInterval(base.checkVisible);
518                }
519            }, 500);
520        },
521
522        wrapItems : function () {
523            var base = this;
524            base.jQueryuserItems.wrapAll("<div class=\"owl-wrapper\">").wrap("<div class=\"owl-item\"></div>");
525            base.jQueryelem.find(".owl-wrapper").wrap("<div class=\"owl-wrapper-outer\">");
526            base.wrapperOuter = base.jQueryelem.find(".owl-wrapper-outer");
527            base.jQueryelem.css("display", "block");
528        },
529
530        baseClass : function () {
531            var base = this,
532                hasBaseClass = base.jQueryelem.hasClass(base.options.baseClass),
533                hasThemeClass = base.jQueryelem.hasClass(base.options.theme);
534
535            if (!hasBaseClass) {
536                base.jQueryelem.addClass(base.options.baseClass);
537            }
538
539            if (!hasThemeClass) {
540                base.jQueryelem.addClass(base.options.theme);
541            }
542        },
543
544        updateItems : function () {
545            var base = this, width, i;
546
547            if (base.options.responsive === false) {
548                return false;
549            }
550            if (base.options.singleItem === true) {
551                base.options.items = base.orignalItems = 1;
552                base.options.itemsCustom = false;
553                base.options.itemsDesktop = false;
554                base.options.itemsDesktopSmall = false;
555                base.options.itemsTablet = false;
556                base.options.itemsTabletSmall = false;
557                base.options.itemsMobile = false;
558                return false;
559            }
560
561            width = jQuery(base.options.responsiveBaseWidth).width();
562
563            if (width > (base.options.itemsDesktop[0] || base.orignalItems)) {
564                base.options.items = base.orignalItems;
565            }
566            if (base.options.itemsCustom !== false) {
567                //Reorder array by screen size
568                base.options.itemsCustom.sort(function (a, b) {return a[0] - b[0]; });
569
570                for (i = 0; i < base.options.itemsCustom.length; i += 1) {
571                    if (base.options.itemsCustom[i][0] <= width) {
572                        base.options.items = base.options.itemsCustom[i][1];
573                    }
574                }
575
576            } else {
577
578                if (width <= base.options.itemsDesktop[0] && base.options.itemsDesktop !== false) {
579                    base.options.items = base.options.itemsDesktop[1];
580                }
581
582                if (width <= base.options.itemsDesktopSmall[0] && base.options.itemsDesktopSmall !== false) {
583                    base.options.items = base.options.itemsDesktopSmall[1];
584                }
585
586                if (width <= base.options.itemsTablet[0] && base.options.itemsTablet !== false) {
587                    base.options.items = base.options.itemsTablet[1];
588                }
589
590                if (width <= base.options.itemsTabletSmall[0] && base.options.itemsTabletSmall !== false) {
591                    base.options.items = base.options.itemsTabletSmall[1];
592                }
593
594                if (width <= base.options.itemsMobile[0] && base.options.itemsMobile !== false) {
595                    base.options.items = base.options.itemsMobile[1];
596                }
597            }
598
599            //if number of items is less than declared
600            if (base.options.items > base.itemsAmount && base.options.itemsScaleUp === true) {
601                base.options.items = base.itemsAmount;
602            }
603        },
604
605        response : function () {
606            var base = this,
607                smallDelay,
608                lastWindowWidth;
609
610            if (base.options.responsive !== true) {
611                return false;
612            }
613            lastWindowWidth = jQuery(window).width();
614
615            base.resizer = function () {
616                if (jQuery(window).width() !== lastWindowWidth) {
617                    if (base.options.autoPlay !== false) {
618                        window.clearInterval(base.autoPlayInterval);
619                    }
620                    window.clearTimeout(smallDelay);
621                    smallDelay = window.setTimeout(function () {
622                        lastWindowWidth = jQuery(window).width();
623                        base.updateVars();
624                    }, base.options.responsiveRefreshRate);
625                }
626            };
627            jQuery(window).resize(base.resizer);
628        },
629
630        updatePosition : function () {
631            var base = this;
632            base.jumpTo(base.currentItem);
633            if (base.options.autoPlay !== false) {
634                base.checkAp();
635            }
636        },
637
638        appendItemsSizes : function () {
639            var base = this,
640                roundPages = 0,
641                lastItem = base.itemsAmount - base.options.items;
642
643            base.jQueryowlItems.each(function (index) {
644                var jQuerythis = jQuery(this);
645                jQuerythis
646                    .css({"width": base.itemWidth})
647                    .data("owl-item", Number(index));
648
649                if (index % base.options.items === 0 || index === lastItem) {
650                    if (!(index > lastItem)) {
651                        roundPages += 1;
652                    }
653                }
654                jQuerythis.data("owl-roundPages", roundPages);
655            });
656        },
657
658        appendWrapperSizes : function () {
659            var base = this,
660                width = base.jQueryowlItems.length * base.itemWidth;
661
662            base.jQueryowlWrapper.css({
663                "width": width * 2,
664                "left": 0
665            });
666            base.appendItemsSizes();
667        },
668
669        calculateAll : function () {
670            var base = this;
671            base.calculateWidth();
672            base.appendWrapperSizes();
673            base.loops();
674            base.max();
675        },
676
677        calculateWidth : function () {
678            var base = this;
679            base.itemWidth = Math.round(base.jQueryelem.width() / base.options.items);
680        },
681
682        max : function () {
683            var base = this,
684                maximum = ((base.itemsAmount * base.itemWidth) - base.options.items * base.itemWidth) * -1;
685            if (base.options.items > base.itemsAmount) {
686                base.maximumItem = 0;
687                maximum = 0;
688                base.maximumPixels = 0;
689            } else {
690                base.maximumItem = base.itemsAmount - base.options.items;
691                base.maximumPixels = maximum;
692            }
693            return maximum;
694        },
695
696        min : function () {
697            return 0;
698        },
699
700        loops : function () {
701            var base = this,
702                prev = 0,
703                elWidth = 0,
704                i,
705                item,
706                roundPageNum;
707
708            base.positionsInArray = [0];
709            base.pagesInArray = [];
710
711            for (i = 0; i < base.itemsAmount; i += 1) {
712                elWidth += base.itemWidth;
713                base.positionsInArray.push(-elWidth);
714
715                if (base.options.scrollPerPage === true) {
716                    item = jQuery(base.jQueryowlItems[i]);
717                    roundPageNum = item.data("owl-roundPages");
718                    if (roundPageNum !== prev) {
719                        base.pagesInArray[prev] = base.positionsInArray[i];
720                        prev = roundPageNum;
721                    }
722                }
723            }
724        },
725
726        buildControls : function () {
727            var base = this;
728            if (base.options.navigation === true || base.options.pagination === true) {
729                base.owlControls = jQuery("<div class=\"owl-control
729s\"/>").toggleClass("clickable", !base.browser.isTouch).appendTo(base.jQueryelem);
730            }
731            if (base.options.pagination === true) {
732                base.buildPagination();
733            }
734            if (base.options.navigation === true) {
735                base.buildButtons();
736            }
737        },
738
739        buildButtons : function () {
740            var base = this,
741                buttonsWrapper = jQuery("<div class=\"owl-buttons\"/>");
742            base.owlControls.append(buttonsWrapper);
743
744            base.buttonPrev = jQuery("<div/>", {
745                "class" : "owl-prev",
746                "html" : base.options.navigationText[0] || ""
747            });
748
749            base.buttonNext = jQuery("<div/>", {
750                "class" : "owl-next",
751                "html" : base.options.navigationText[1] || ""
752            });
753
754            buttonsWrapper
755                .append(base.buttonPrev)
756                .append(base.buttonNext);
757
758            buttonsWrapper.on("touchstart.owlControls mousedown.owlControls", "div[class^=\"owl\"]", function (event) {
759                event.preventDefault();
760            });
761
762            buttonsWrapper.on("touchend.owlControls mouseup.owlControls", "div[class^=\"owl\"]", function (event) {
763                event.preventDefault();
764                if (jQuery(this).hasClass("owl-next")) {
765                    base.next();
766                } else {
767                    base.prev();
768                }
769            });
770        },
771
772        buildPagination : function () {
773            var base = this;
774
775            base.paginationWrapper = jQuery("<div class=\"owl-pagination\"/>");
776            base.owlControls.append(base.paginationWrapper);
777
778            base.paginationWrapper.on("touchend.owlControls mouseup.owlControls", ".owl-page", function (event) {
779                event.preventDefault();
780                if (Number(jQuery(this).data("owl-page")) !== base.currentItem) {
781                    base.goTo(Number(jQuery(this).data("owl-page")), true);
782                }
783            });
784        },
785
786        updatePagination : function () {
787            var base = this,
788                counter,
789                lastPage,
790                lastItem,
791                i,
792                paginationButton,
793                paginationButtonInner;
794
795            if (base.options.pagination === false) {
796                return false;
797            }
798
799            base.paginationWrapper.html("");
800
801            counter = 0;
802            lastPage = base.itemsAmount - base.itemsAmount % base.options.items;
803
804            for (i = 0; i < base.itemsAmount; i += 1) {
805                if (i % base.options.items === 0) {
806                    counter += 1;
807                    if (lastPage === i) {
808                        lastItem = base.itemsAmount - base.options.items;
809                    }
810                    paginationButton = jQuery("<div/>", {
811                        "class" : "owl-page"
812                    });
813                    paginationButtonInner = jQuery("<span></span>", {
814                        "text": base.options.paginationNumbers === true ? counter : "",
815                        "class": base.options.paginationNumbers === true ? "owl-numbers" : ""
816                    });
817                    paginationButton.append(paginationButtonInner);
818
819                    paginationButton.data("owl-page", lastPage === i ? lastItem : i);
820                    paginationButton.data("owl-roundPages", counter);
821
822                    base.paginationWrapper.append(paginationButton);
823                }
824            }
825            base.checkPagination();
826        },
827        checkPagination : function () {
828            var base = this;
829            if (base.options.pagination === false) {
830                return false;
831            }
832            base.paginationWrapper.find(".owl-page").each(function () {
833                if (jQuery(this).data("owl-roundPages") === jQuery(base.jQueryowlItems[base.currentItem]).data("owl-roundPages")) {
834                    base.paginationWrapper
835                        .find(".owl-page")
836                        .removeClass("active");
837                    jQuery(this).addClass("active");
838                }
839            });
840        },
841
842        checkNavigation : function () {
843            var base = this;
844
845            if (base.options.navigation === false) {
846                return false;
847            }
848            if (base.options.rewindNav === false) {
849                if (base.currentItem === 0 && base.maximumItem === 0) {
850                    base.buttonPrev.addClass("disabled");
851                    base.buttonNext.addClass("disabled");
852                } else if (base.currentItem === 0 && base.maximumItem !== 0) {
853                    base.buttonPrev.addClass("disabled");
854                    base.buttonNext.removeClass("disabled");
855                } else if (base.currentItem === base.maximumItem) {
856                    base.buttonPrev.removeClass("disabled");
857                    base.buttonNext.addClass("disabled");
858                } else if (base.currentItem !== 0 && base.currentItem !== base.maximumItem) {
859                    base.buttonPrev.removeClass("disabled");
860                    base.buttonNext.removeClass("disabled");
861                }
862            }
863        },
864
865        updateControls : function () {
866            var base = this;
867            base.updatePagination();
868            base.checkNavigation();
869            if (base.owlControls) {
870                if (base.options.items >= base.itemsAmount) {
871                    base.owlControls.hide();
872                } else {
873                    base.owlControls.show();
874                }
875            }
876        },
877
878        destroyControls : function () {
879            var base = this;
880            if (base.owlControls) {
881                base.owlControls.remove();
882            }
883        },
884
885        next : function (speed) {
886            var base = this;
887
888            if (base.isTransition) {
889                return false;
890            }
891
892            base.currentItem += base.options.scrollPerPage === true ? base.options.items : 1;
893            if (base.currentItem > base.maximumItem + (base.options.scrollPerPage === true ? (base.options.items - 1) : 0)) {
894                if (base.options.rewindNav === true) {
895                    base.currentItem = 0;
896                    speed = "rewind";
897                } else {
898                    base.currentItem = base.maximumItem;
899                    return false;
900                }
901            }
902            base.goTo(base.currentItem, speed);
903        },
904
905        prev : function (speed) {
906            var base = this;
907
908            if (base.isTransition) {
909                return false;
910            }
911
912            if (base.options.scrollPerPage === true && base.currentItem > 0 && base.currentItem < base.options.items) {
913                base.currentItem = 0;
914            } else {
915                base.currentItem -= base.options.scrollPerPage === true ? base.options.items : 1;
916            }
917            if (base.currentItem < 0) {
918                if (base.options.rewindNav === true) {
919                    base.currentItem = base.maximumItem;
920                    speed = "rewind";
921                } else {
922                    base.currentItem = 0;
923                    return false;
924                }
925            }
926            base.goTo(base.currentItem, speed);
927        },
928
929        goTo : function (position, speed, drag) {
930            var base = this,
931                goToPixel;
932
933            if (base.isTransition) {
934                return false;
935            }
936            if (typeof base.options.beforeMove === "function") {
937                base.options.beforeMove.apply(this, [base.jQueryelem]);
938            }
939            if (position >= base.maximumItem) {
940                position = base.maximumItem;
941            } else if (position <= 0) {
942                position = 0;
943            }
944
945            base.currentItem = base.owl.currentItem = position;
946            if (base.options.transitionStyle !== false && drag !== "drag" && base.options.items === 1 && base.browser.support3d === true) {
947                base.swapSpeed(0);
948                if (base.browser.support3d === true) {
949                    base.transition3d(base.positionsInArray[position]);
950                } else {
951                    base.css2slide(base.positionsInArray[position], 1);
952                }
953                base.afterGo();
954                base.singleItemTransition();
955                return false;
956            }
957            goToPixel = base.positionsInArray[position];
958
959            if (base.browser.support3d === true) {
960                base.isCss3Finish = false;
961
962                if (speed === true) {
963                    base.swapSpeed("paginationSpeed");
964                    window.setTimeout(function () {
965                        base.isCss3Finish = true;
966                    }, base.options.paginationSpeed);
967
968                } else if (speed === "rewind") {
969                    base.swapSpeed(base.options.rewindSpeed);
970                    window.setTimeout(function () {
971                        base.isCss3Finish = true;
972                    }, base.options.rewindSpeed);
973
974                } else {
975                    base.swapSpeed("slideSpeed");
976                    window.setTimeout(function () {
977                        base.isCss3Finish = true;
978                    }, base.options.slideSpeed);
979                }
980                base.transition3d(goToPixel);
981            } else {
982                if (speed === true) {
983                    base.css2slide(goToPixel, base.options.paginationSpeed);
984                } else if (speed === "rewind") {
985                    base.css2slide(goToPixel, base.options.rewindSpeed);
986                } else {
987                    base.css2slide(goToPixel, base.options.slideSpeed);
988                }
989            }
990            base.afterGo();
991        },
992
993        jumpTo : function (position) {
994            var base = this;
995            if (typeof base.options.beforeMove === "function") {
996                base.options.beforeMove.apply(this, [base.jQueryelem]);
997            }
998            if (position >= base.maximumItem || position === -1) {
999                position = base.maximumItem;
1000            } else if (position <= 0) {
1001                position = 0;
1002            }
1003            base.swapSpeed(0);
1004            if (base.browser.support3d === true) {
1005                base.transition3d(base.positionsInArray[position]);
1006            } else {
1007                base.css2slide(base.positionsInArray[position], 1);
1008            }
1009            base.currentItem = base.owl.currentItem = position;
1010            base.afterGo();
1011        },
1012
1013        afterGo : function () {
1014            var base = this;
1015
1016            base.prevArr.push(base.currentItem);
1017            base.prevItem = base.owl.prevItem = base.prevArr[base.prevArr.length - 2];
1018            base.prevArr.shift(0);
1019
1020            if (base.prevItem !== base.currentItem) {
1021                base.checkPagination();
1022                base.checkNavigation();
1023                base.eachMoveUpdate();
1024
1025                if (base.options.autoPlay !== false) {
1026                    base.checkAp();
1027                }
1028            }
1029            if (typeof base.options.afterMove === "function" && base.prevItem !== base.currentItem) {
1030                base.options.afterMove.apply(this, [base.jQueryelem]);
1031            }
1032        },
1033
1034        stop : function () {
1035            var base = this;
1036            base.apStatus = "stop";
1037            window.clearInterval(base.autoPlayInterval);
1038        },
1039
1040        checkAp : function () {
1041            var base = this;
1042            if (base.apStatus !== "stop") {
1043                base.play();
1044            }
1045        },
1046
1047        play : function () {
1048            var base = this;
1049            base.apStatus = "play";
1050            if (base.options.autoPlay === false) {
1051                return false;
1052            }
1053            window.clearInterval(base.autoPlayInterval);
1054            base.autoPlayInterval = window.setInterval(function () {
1055                base.next(true);
1056            }, base.options.autoPlay);
1057        },
1058
1059        swapSpeed : function (action) {
1060            var base = this;
1061            if (action === "slideSpeed") {
1062                base.jQueryowlWrapper.css(base.addCssSpeed(base.options.slideSpeed));
1063            } else if (action === "paginationSpeed") {
1064                base.jQueryowlWrapper.css(base.addCssSpeed(base.options.paginationSpeed));
1065            } else if (typeof action !== "string") {
1066                base.jQueryowlWrapper.css(base.addCssSpeed(action));
1067            }
1068        },
1069
1070        addCssSpeed : function (speed) {
1071            return {
1072                "-webkit-transition": "all " + speed + "ms ease",
1073                "-moz-transition": "all " + speed + "ms ease",
1074                "-o-transition": "all " + speed + "ms ease",
1075                "transition": "all " + speed + "ms ease"
1076            };
1077        },
1078
1079        removeTransition : function () {
1080            return {
1081                "-webkit-transition": "",
1082                "-moz-transition": "",
1083                "-o-transition": "",
1084                "transition": ""
1085            };
1086        },
1087
1088        doTranslate : function (pixels) {
1089            return {
1090                "-webkit-transform": "translate3d(" + pixels + "px, 0px, 0px)",
1091                "-moz-transform": "translate3d(" + pixels + "px, 0px, 0px)",
1092                "-o-transform": "translate3d(" + pixels + "px, 0px, 0px)",
1093                "-ms-transform": "translate3d(" + pixels + "px, 0px, 0px)",
1094                "transform": "translate3d(" + pixels + "px, 0px,0px)"
1095            };
1096        },
1097
1098        transition3d : function (value) {
1099            var base = this;
1100            base.jQueryowlWrapper.css(base.doTranslate(value));
1101        },
1102
1103        css2move : function (value) {
1104            var base = this;
1105            base.jQueryowlWrapper.css({"left" : value});
1106        },
1107
1108        css2slide : function (value, speed) {
1109            var base = this;
1110
1111            base.isCssFinish = false;
1112            base.jQueryowlWrapper.stop(true, true).animate({
1113                "left" : value
1114            }, {
1115                duration : speed || base.options.slideSpeed,
1116                complete : function () {
1117                    base.isCssFinish = true;
1118                }
1119            });
1120        },
1121
1122        checkBrowser : function () {
1123            var base = this,
1124                translate3D = "translate3d(0px, 0px, 0px)",
1125                tempElem = document.createElement("div"),
1126                regex,
1127                asSupport,
1128                support3d,
1129                isTouch;
1130
1131            tempElem.style.cssText = "  -moz-transform:" + translate3D +
1132                                  "; -ms-transform:"     + translate3D +
1133                                  "; -o-transform:"      + translate3D +
1134                                  "; -webkit-transform:" + translate3D +
1135                                  "; transform:"         + translate3D;
1136            regex = /translate3d\(0px, 0px, 0px\)/g;
1137            asSupport = tempElem.style.cssText.match(regex);
1138            support3d = (asSupport !== null && asSupport.length === 1);
1139
1140            isTouch = "ontouchstart" in window || window.navigator.msMaxTouchPoints;
1141
1142            base.browser = {
1143                "support3d" : support3d,
1144                "isTouch" : isTouch
1145            };
1146        },
1147
1148        moveEvents : function () {
1149            var base = this;
1150            if (base.options.mouseDrag !== false || base.options.touchDrag !== false) {
1151                base.gestures();
1152                base.disabledEvents();
1153            }
1154        },
1155
1156        eventTypes : function () {
1157            var base = this,
1158                types = ["s", "e", "x"];
1159
1160            base.ev_types = {};
1161
1162            if (base.options.mouseDrag === true && base.options.touchDrag === true) {
1163                types = [
1164                    "touchstart.owl mousedown.owl",
1165                    "touchmove.owl mousemove.owl",
1166                    "touchend.owl touchcancel.owl mouseup.owl"
1167                ];
1168            } else if (base.options.mouseDrag === false && base.options.touchDrag === true) {
1169                types = [
1170                    "touchstart.owl",
1171                    "touchmove.owl",
1172                    "touchend.owl touchcancel.owl"
1173                ];
1174            } else if (base.options.mouseDrag === true && base.options.touchDrag === false) {
1175                types = [
1176                    "mousedown.owl",
1177                    "mousemove.owl",
1178                    "mouseup.owl"
1179                ];
1180            }
1181
1182            base.ev_types.start = types[0];
1183            base.ev_types.move = types[1];
1184            base.ev_types.end = types[2];
1185        },
1186
1187        disabledEvents :  function () {
1188            var base = this;
1189            base.jQueryelem.on("dragstart.owl", function (event) { event.preventDefault(); });
1190            base.jQueryelem.on("mousedown.disableTextSelect", function (e) {
1191                return jQuery(e.target).is('input, textarea, select, option');
1192            });
1193        },
1194
1195        gestures : function () {
1196            /*jslint unparam: true*/
1197            var base = this,
1198                locals = {
1199                    offsetX : 0,
1200                    offsetY : 0,
1201                    baseElWidth : 0,
1202                    relativePos : 0,
1203                    position: null,
1204                    minSwipe : null,
1205                    maxSwipe: null,
1206                    sliding : null,
1207                    dargging: null,
1208                    targetElement : null
1209                };
1210
1211            base.isCssFinish = true;
1212
1213            function getTouches(event) {
1214                if (event.touches !== undefined) {
1215                    return {
1216                        x : event.touches[0].pageX,
1217                        y : event.touches[0].pageY
1218                    };
1219                }
1220
1221                if (event.touches === undefined) {
1222                    if (event.pageX !== undefined) {
1223                        return {
1224                            x : event.pageX,
1225                            y : event.pageY
1226                        };
1227                    }
1228                    if (event.pageX === undefined) {
1229                        return {
1230                            x : event.clientX,
1231                            y : event.clientY
1232                        };
1233                    }
1234                }
1235            }
1236
1237            function swapEvents(type) {
1238                if (type === "on") {
1239                    jQuery(document).on(base.ev_types.move, dragMove);
1240                    jQuery(document).on(base.ev_types.end, dragEnd);
1241                } else if (type === "off") {
1242                    jQuery(document).off(base.ev_types.move);
1243                    jQuery(document).off(base.ev_types.end);
1244                }
1245            }
1246
1247            function dragStart(event) {
1248                var ev = event.originalEvent || event || window.event,
1249                    position;
1250
1251                if (ev.which === 3) {
1252                    return false;
1253                }
1254                if (base.itemsAmount <= base.options.items) {
1255                    return;
1256                }
1257                if (base.isCssFinish === false && !base.options.dragBeforeAnimFinish) {
1258                    return false;
1259                }
1260                if (base.isCss3Finish === false && !base.options.dragBeforeAnimFinish) {
1261                    return false;
1262                }
1263
1264                if (base.options.autoPlay !== false) {
1265                    window.clearInterval(base.autoPlayInterval);
1266                }
1267
1268                if (base.browser.isTouch !== true && !base.jQueryowlWrapper.hasClass("grabbing")) {
1269                    base.jQueryowlWrapper.addClass("grabbing");
1270                }
1271
1272                base.newPosX = 0;
1273                base.newRelativeX = 0;
1274
1275                jQuery(this).css(base.removeTransition());
1276
1277                position = jQuery(this).position();
1278                locals.relativePos = position.left;
1279
1280                locals.offsetX = getTouches(ev).x - position.left;
1281                locals.offsetY = getTouches(ev).y - position.top;
1282
1283                swapEvents("on");
1284
1285                locals.sliding = false;
1286                locals.targetElement = ev.target || ev.srcElement;
1287            }
1288
1289            function dragMove(event) {
1290                var ev = event.originalEvent || event || window.event,
1291                    minSwipe,
1292                    maxSwipe;
1293
1294                base.newPosX = getTouches(ev).x - locals.offsetX;
1295                base.newPosY = getTouches(ev).y - locals.offsetY;
1296                base.newRelativeX = base.newPosX - locals.relativePos;
1297
1298                if (typeof base.options.startDragging === "function" && locals.dragging !== true && base.newRelativeX !== 0) {
1299                    locals.dragging = true;
1300                    base.options.startDragging.apply(base, [base.jQueryelem]);
1301                }
1302
1303                if ((base.newRelativeX > 8 || base.newRelativeX < -8) && (base.browser.isTouch === true)) {
1304                    if (ev.preventDefault !== undefined) {
1305                        ev.preventDefault();
1306                    } else {
1307                        ev.returnValue = false;
1308                    }
1309                    locals.sliding = true;
1310                }
1311
1312                if ((base.newPosY > 10 || base.newPosY < -10) && locals.sliding === false) {
1313                    jQuery(document).off("touchmove.owl");
1314                }
1315
1316                minSwipe = function () {
1317                    return base.newRelativeX / 5;
1318                };
1319
1320                maxSwipe = function () {
1321                    return base.maximumPixels + base.newRelativeX / 5;
1322                };
1323
1324                base.newPosX = Math.max(Math.min(base.newPosX, minSwipe()), maxSwipe());
1325                if (base.browser.support3d === true) {
1326                    base.transition3d(base.newPosX);
1327                } else {
1328                    base.css2move(base.newPosX);
1329                }
1330            }
1331
1332            function dragEnd(event) {
1333                var ev = event.originalEvent || event || window.event,
1334                    newPosition,
1335                    handlers,
1336                    owlStopEvent;
1337
1338                ev.target = ev.target || ev.srcElement;
1339
1340                locals.dragging = false;
1341
1342                if (base.browser.isTouch !== true) {
1343                    base.jQueryowlWrapper.removeClass("grabbing");
1344                }
1345
1346                if (base.newRelativeX < 0) {
1347                    base.dragDirection = base.owl.dragDirection = "left";
1348                } else {
1349                    base.dragDirection = base.owl.dragDirection = "right";
1350                }
1351
1352                if (base.newRelativeX !== 0) {
1353                    newPosition = base.getNewPosition();
1354                    base.goTo(newPosition, false, "drag");
1355                    if (locals.targetElement === ev.target && base.browser.isTouch !== true) {
1356                        jQuery(ev.target).on("click.disable", function (ev) {
1357                            ev.stopImmediatePropagation();
1358                            ev.stopPropagation();
1359                            ev.preventDefault();
1360                            jQuery(ev.target).off("click.disable");
1361                        });
1362                        handlers = jQuery._data(ev.target, "events").click;
1363                        owlStopEvent = handlers.pop();
1364                        handlers.splice(0, 0, owlStopEvent);
1365                    }
1366                }
1367                swapEvents("off");
1368            }
1369            base.jQueryelem.on(base.ev_types.start, ".owl-wrapper", dragStart);
1370        },
1371
1372        getNewPosition : function () {
1373            var base = this,
1374                newPosition = base.closestItem();
1375
1376            if (newPosition > base.maximumItem) {
1377                base.currentItem = base.maximumItem;
1378                newPosition  = base.maximumItem;
1379            } else if (base.newPosX >= 0) {
1380                newPosition = 0;
1381                base.currentItem = 0;
1382            }
1383            return newPosition;
1384        },
1385        closestItem : function () {
1386            var base = this,
1387                array = base.options.scrollPerPage === true ? base.pagesInArray : base.positionsInArray,
1388                goal = base.newPosX,
1389                closest = null;
1390
1391            jQuery.each(array, function (i, v) {
1392                if (goal - (base.itemWidth / 20) > array[i + 1] && goal - (base.itemWidth / 20) < v && base.moveDirection() === "left") {
1393                    closest = v;
1394                    if (base.options.scrollPerPage === true) {
1395                        base.currentItem = jQuery.inArray(closest, base.positionsInArray);
1396                    } else {
1397                        base.currentItem = i;
1398                    }
1399                } else if (goal + (base.itemWidth / 20) < v && goal + (base.itemWidth / 20) > (array[i + 1] || array[i] - base.itemWidth) && base.moveDirection() === "right") {
1400                    if (base.options.scrollPerPage === true) {
1401                        closest = array[i + 1] || array[array.length - 1];
1402                        base.currentItem = jQuery.inArray(closest, base.positionsInArray);
1403                    } else {
1404                        closest = array[i + 1];
1405                        base.currentItem = i + 1;
1406                    }
1407                }
1408            });
1409            return base.currentItem;
1410        },
1411
1412        moveDirection : function () {
1413            var base = this,
1414                direction;
1415            if (base.newRelativeX < 0) {
1416                direction = "right";
1417                base.playDirection = "next";
1418            } else {
1419                direction = "left";
1420                base.playDirection = "prev";
1421            }
1422            return direction;
1423        },
1424
1425        customEvents : function () {
1426            /*jslint unparam: true*/
1427            var base = this;
1428            base.jQueryelem.on("owl.next", function () {
1429                base.next();
1430            });
1431            base.jQueryelem.on("owl.prev", function () {
1432                base.prev();
1433            });
1434            base.jQueryelem.on("owl.play", function (event, speed) {
1435                base.options.autoPlay = speed;
1436                base.play();
1437                base.hoverStatus = "play";
1438            });
1439            base.jQueryelem.on("owl.stop", function () {
1440                base.stop();
1441                base.hoverStatus = "stop";
1442            });
1443            base.jQueryelem.on("owl.goTo", function (event, item) {
1444                base.goTo(item);
1445            });
1446            base.jQueryelem.on("owl.jumpTo", function (event, item) {
1447                base.jumpTo(item);
1448            });
1449        },
1450
1451        stopOnHover : function () {
1452            var base = this;
1453            if (base.options.stopOnHover === true && base.browser.isTouch !== true && base.options.autoPlay !== false) {
1454                base.jQueryelem.on("mouseover", function () {
1455                    base.stop();
1456                });
1457                base.jQueryelem.on("mouseout", function () {
1458                    if (base.hoverStatus !== "stop") {
1459                        base.play();
1460                    }
1461                });
1462            }
1463        },
1464
1465        lazyLoad : function () {
1466            var base = this,
1467                i,
1468                jQueryitem,
1469                itemNumber,
1470                jQuerylazyImg,
1471                follow;
1472
1473            if (base.options.lazyLoad === false) {
1474                return false;
1475            }
1476            for (i = 0; i < base.itemsAmount; i += 1) {
1477                jQueryitem = jQuery(base.jQueryowlItems[i]);
1478
1479                if (jQueryitem.data("owl-loaded") === "loaded") {
1480                    continue;
1481                }
1482
1483                itemNumber = jQueryitem.data("owl-item");
1484                jQuerylazyImg = jQueryitem.find(".lazyOwl");
1485
1486                if (typeof jQuerylazyImg.data("src") !== "string") {
1487                    jQueryitem.data("owl-loaded", "loaded");
1488                    continue;
1489                }
1490                if (jQueryitem.data("owl-loaded") === undefined) {
1491                    jQuerylazyImg.hide();
1492                    jQueryitem.addClass("loading").data("owl-loaded", "checked");
1493                }
1494                if (base.options.lazyFollow === true) {
1495                    follow = itemNumber >= base.currentItem;
1496                } else {
1497                    follow = true;
1498                }
1499                if (follow && itemNumber < base.currentItem + base.options.items && jQuerylazyImg.length) {
1500                    base.lazyPreload(jQueryitem, jQuerylazyImg);
1501                }
1502            }
1503        },
1504
1505        lazyPreload : function (jQueryitem, jQuerylazyImg) {
1506            var base = this,
1507                iterations = 0,
1508                isBackgroundImg;
1509
1510            if (jQuerylazyImg.prop("tagName") === "DIV") {
1511                jQuerylazyImg.css("background-image", "url(" + jQuerylazyImg.data("src") + ")");
1512                isBackgroundImg = true;
1513            } else {
1514                jQuerylazyImg[0].src = jQuerylazyImg.data("src");
1515            }
1516
1517            function showImage() {
1518                jQueryitem.data("owl-loaded", "loaded").removeClass("loading");
1519                jQuerylazyImg.removeAttr("data-src");
1520                if (base.options.lazyEffect === "fade") {
1521                    jQuerylazyImg.fadeIn(400);
1522                } else {
1523                    jQuerylazyImg.show();
1524                }
1525                if (typeof base.options.afterLazyLoad === "function") {
1526                    base.options.afterLazyLoad.apply(this, [base.jQueryelem]);
1527                }
1528            }
1529
1530            function checkLazyImage() {
1531                iterations += 1;
1532                if (base.completeImg(jQuerylazyImg.get(0)) || isBackgroundImg === true) {
1533                    showImage();
1534                } else if (iterations <= 100) {//if image loads in less than 10 seconds 
1535                    window.setTimeout(checkLazyImage, 100);
1536                } else {
1537                    showImage();
1538                }
1539            }
1540
1541            checkLazyImage();
1542        },
1543
1544        autoHeight : function () {
1545            var base = this,
1546                jQuerycurrentimg = jQuery(base.jQueryowlItems[base.currentItem]).find("img"),
1547                iterations;
1548
1549            function addHeight() {
1550                var jQuerycurrentItem = jQuery(base.jQueryowlItems[base.currentItem]).height();
1551                base.wrapperOuter.css("height", jQuerycurrentItem + "px");
1552                if (!base.wrapperOuter.hasClass("autoHeight")) {
1553                    window.setTimeout(function () {
1554                        base.wrapperOuter.addClass("autoHeight");
1555                    }, 0);
1556                }
1557            }
1558
1559            function checkImage() {
1560                iterations += 1;
1561                if (base.completeImg(jQuerycurrentimg.get(0))) {
1562                    addHeight();
1563                } else if (iterations <= 100) { //if image loads in less than 10 seconds 
1564                    window.setTimeout(checkImage, 100);
1565                } else {
1566                    base.wrapperOuter.css("height", ""); //Else remove height attribute
1567                }
1568            }
1569
1570            if (jQuerycurrentimg.get(0) !== undefined) {
1571                iterations = 0;
1572                checkImage();
1573            } else {
1574                addHeight();
1575            }
1576        },
1577
1578        completeImg : function (img) {
1579            var naturalWidthType;
1580
1581            if (!img.complete) {
1582                return false;
1583            }
1584            naturalWidthType = typeof img.naturalWidth;
1585            if (naturalWidthType !== "undefined" && img.naturalWidth === 0) {
1586                return false;
1587            }
1588            return true;
1589        },
1590
1591        onVisibleItems : function () {
1592            var base = this,
1593                i;
1594
1595            if (base.options.addClassActive === true) {
1596                base.jQueryowlItems.removeClass("active");
1597            }
1598            base.visibleItems = [];
1599            for (i = base.currentItem; i < base.currentItem + base.options.items; i += 1) {
1600                base.visibleItems.push(i);
1601
1602                if (base.options.addClassActive === true) {
1603                    jQuery(base.jQueryowlItems[i]).addClass("active");
1604                }
1605            }
1606            base.owl.visibleItems = base.visibleItems;
1607        },
1608
1609        transitionTypes : function (className) {
1610            var base = this;
1611            //Currently available: "fade", "backSlide", "goDown", "fadeUp"
1612            base.outClass = "owl-" + className + "-out";
1613            base.inClass = "owl-" + className + "-in";
1614        },
1615
1616        singleItemTransition : function () {
1617            var base = this,
1618                outClass = base.outClass,
1619                inClass = base.inClass,
1620                jQuerycurrentItem = base.jQueryowlItems.eq(base.currentItem),
1621                jQueryprevItem = base.jQueryowlItems.eq(base.prevItem),
1622                prevPos = Math.abs(base.positionsInArray[base.currentItem]) + base.positionsInArray[base.prevItem],
1623                origin = Math.abs(base.positionsInArray[base.currentItem]) + base.itemWidth / 2,
1624                animEnd = 'webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend';
1625
1626            base.isTransition = true;
1627
1628            base.jQueryowlWrapper
1629                .addClass('owl-origin')
1630                .css({
1631                    "-webkit-transform-origin" : origin + "px",
1632                    "-moz-perspective-origin" : origin + "px",
1633                    "perspective-origin" : origin + "px"
1634                });
1635            function transStyles(prevPos) {
1636                return {
1637                    "position" : "relative",
1638                    "left" : prevPos + "px"
1639                };
1640            }
1641
1642            jQueryprevItem
1643                .css(transStyles(prevPos, 10))
1644                .addClass(outClass)
1645                .on(animEnd, function () {
1646                    base.endPrev = true;
1647                    jQueryprevItem.off(animEnd);
1648                    base.clearTransStyle(jQueryprevItem, outClass);
1649                });
1650
1651            jQuerycurrentItem
1652                .addClass(inClass)
1653                .on(animEnd, function () {
1654                    base.endCurrent = true;
1655                    jQuerycurrentItem.off(animEnd);
1656                    base.clearTransStyle(jQuerycurrentItem, inClass);
1657                });
1658        },
1659
1660        clearTransStyle : function (item, classToRemove) {
1661            var base = this;
1662            item.css({
1663                "position" : "",
1664                "left" : ""
1665            }).removeClass(classToRemove);
1666
1667            if (base.endPrev && base.endCurrent) {
1668                base.jQueryowlWrapper.removeClass('owl-origin');
1669                base.endPrev = false;
1670                base.endCurrent = false;
1671                base.isTransition = false;
1672            }
1673        },
1674
1675        owlStatus : function () {
1676            var base = this;
1677            base.owl = {
1678                "userOptions"   : base.userOptions,
1679                "baseElement"   : base.jQueryelem,
1680                "userItems"     : base.jQueryuserItems,
1681                "owlItems"      : base.jQueryowlItems,
1682                "currentItem"   : base.currentItem,
1683                "prevItem"      : base.prevItem,
1684                "visibleItems"  : base.visibleItems,
1685                "isTouch"       : base.browser.isTouch,
1686                "browser"       : base.browser,
1687                "dragDirection" : base.dragDirection
1688            };
1689        },
1690
1691        clearEvents : function () {
1692            var base = this;
1693            base.jQueryelem.off(".owl owl mousedown.disableTextSelect");
1694            jQuery(document).off(".owl owl");
1695            jQuery(window).off("resize", base.resizer);
1696        },
1697
1698        unWrap : function () {
1699            var base = this;
1700            if (base.jQueryelem.children().length !== 0) {
1701                base.jQueryowlWrapper.unwrap();
1702                base.jQueryuserItems.unwrap().unwrap();
1703                if (base.owlControls) {
1704                    base.owlControls.remove();
1705                }
1706            }
1707            base.clearEvents();
1708            base.jQueryelem
1709                .attr("style", base.jQueryelem.data("owl-originalStyles") || "")
1710                .attr("class", base.jQueryelem.data("owl-originalClasses"));
1711        },
1712
1713        destroy : function () {
1714            var base = this;
1715            base.stop();
1716            window.clearInterval(base.checkVisible);
1717            base.unWrap();
1718            base.jQueryelem.removeData();
1719        },
1720
1721        reinit : function (newOptions) {
1722            var base = this,
1723                options = jQuery.extend({}, base.userOptions, newOptions);
1724            base.unWrap();
1725            base.init(options, base.jQueryelem);
1726        },
1727
1728        addItem : function (htmlString, targetPosition) {
1729            var base = this,
1730                position;
1731
1732            if (!htmlString) {return false; }
1733
1734            if (base.jQueryelem.children().length === 0) {
1735                base.jQueryelem.append(htmlString);
1736                base.setVars();
1737                return false;
1738            }
1739            base.unWrap();
1740            if (targetPosition === undefined || targetPosition === -1) {
1741                position = -1;
1742            } else {
1743                position = targetPosition;
1744            }
1745            if (position >= base.jQueryuserItems.length || position === -1) {
1746                base.jQueryuserItems.eq(-1).after(htmlString);
1747            } else {
1748                base.jQueryuserItems.eq(position).before(htmlString);
1749            }
1750
1751            base.setVars();
1752        },
1753
1754        removeItem : function (targetPosition) {
1755            var base = this,
1756                position;
1757
1758            if (base.jQueryelem.children().length === 0) {
1759                return false;
1760            }
1761            if (targetPosition === undefined || targetPosition === -1) {
1762                position = -1;
1763            } else {
1764                position = targetPosition;
1765            }
1766
1767            base.unWrap();
1768            base.jQueryuserItems.eq(position).remove();
1769            base.setVars();
1770        }
1771
1772    };
1773
1774    jQuery.fn.owlCarousel = function (options) {
1775        return this.each(function () {
1776            if (jQuery(this).data("owl-init") === true) {
1777                return false;
1778            }
1779            jQuery(this).data("owl-init", true);
1780            var carousel = Object.create(Carousel);
1781            carousel.init(options, this);
1782            jQuery.data(this, "owlCarousel", carousel);
1783        });
1784    };
1785
1786    jQuery.fn.owlCarousel.options = {
1787
1788        items : 5,
1789        itemsCustom : false,
1790        itemsDesktop : [1199, 4],
1791        itemsDesktopSmall : [979, 3],
1792        itemsTablet : [768, 2],
1793        itemsTabletSmall : false,
1794        itemsMobile : [479, 1],
1795        singleItem : false,
1796        itemsScaleUp : false,
1797
1798        slideSpeed : 200,
1799        paginationSpeed : 800,
1800        rewindSpeed : 1000,
1801
1802        autoPlay : false,
1803        stopOnHover : false,
1804
1805        navigation : false,
1806        navigationText : ["prev", "next"],
1807        rewindNav : true,
1808        scrollPerPage : false,
1809
1810        pagination : true,
1811        paginationNumbers : false,
1812
1813        responsive : true,
1814        responsiveRefreshRate : 200,
1815        responsiveBaseWidth : window,
1816
1817        baseClass : "owl-carousel",
1818        theme : "owl-theme",
1819
1820        lazyLoad : false,
1821        lazyFollow : true,
1822        lazyEffect : "fade",
1823
1824        autoHeight : false,
1825
1826        jsonPath : false,
1827        jsonSuccess : false,
1828
1829        dragBeforeAnimFinish : true,
1830        mouseDrag : true,
1831        touchDrag : true,
1832
1833        addClassActive : false,
1834        transitionStyle : false,
1835
1836        beforeUpdate : false,
1837        afterUpdate : false,
1838        beforeInit : false,
1839        afterInit : false,
1840        beforeMove : false,
1841        afterMove : false,
1842        afterAction : false,
1843        startDragging : false,
1844        afterLazyLoad: false
1845    };
1846}(jQuery, window, document));;
1847//   Les colonnes sont des DIV display:inline-block, vertical-align:top, position:relative et top:0.
1848//   Le conteneur doit avoir white-space:nowrap pour empêcher les colonnes de passer à la ligne
1849//   Par défaut, les colonnes sont alignées par le bas, mais vertical-align-top les aligne par le haut.
1850    
1851function synchroniserCadres(o) {
1852  
1853  // Fonction appelée lors d'un changement de taille
1854  var colSize = function(colonne,contexte) {
1855    // si on sait le faire.... 
1856    // changera le height de la colonne et éventuellement le iMax.
1857    for (var i=0;i<contexte.colonnes.length;i++) {
1858      contexte.colonnes[i].height = parseInt(contexte.colonnes[i].element.height());
1859    }
1860    calculerColonneMax(contexte);
1861  };
1862  
1863  // Fonction de calcul de la plus haute colonne
1864  var calculerColonneMax = function(contexte) {
1865    var hMax = 0;
1866    contexte.iMax = 0;
1867    for (var i=0; i<contexte.colonnes.length; i++) {
1868      var h = contexte.colonnes[i].element.is(':visible')
1869        ? contexte.colonnes[i].height
1870        : 0;
1871      if (h > hMax) {
1872        hMax = h;
1873        contexte.iMax = i;
1874      }
1875    }
1876  };
1877      
1878  // Fonction de positionnement des colonnes
1879  var positionnerColonnes = function(contexte) {
1880    var min = Math.min;
1881    var max = Math.max;
1882    
1883    for (var i = 0; i < contexte.colonnes.length; i++) {
1884      var colonne = contexte.colonnes[i];
1885      colSize(colonne,contexte); // pas top, mais la hauteur peut changer...
1886    }
1887    
1888    // Indice de la plus grande colonne : celle qui n'est jamais repositionnée.
1889    var colonneMax = contexte.colonnes[contexte.iMax];
1890    
1891    for (var i = 0; i < contexte.colonnes.length; i++) {
1892      var colonne = contexte.colonnes[i];
1893//       if (i != contexte.iMax) {
1894        // Calcul du top : le plus petit positif ou nul parmi :
1895        //    - contexte.window.scrollTop() - colonneMax.element.offset().top + contexte.pad()
1896        //      colonne flotte entre son plus haut et son plus bas niveau
1897        //    - colonneMax.height - colonne.height
1898        //      alinement par le bas
1899        //    - 0
1900        //      alignement par le haut.
1901        
1902        var a = contexte.window.scrollTop() - colonneMax.element.offset().top + contexte.pad();
1903        var b = colonneMax.height - colonne.height;
1904        var c = 0;
1905        var top = max(c,min(a,b));
1906        colonne.element.css('top', top);
1907//       }
1908    }
1909  };
1910    
1911  // Contexte contient les différentes colonnes, la colonne la plus haute, le padding, window...
1912  var contexte = {
1913    pad:0,
1914    colonnes:[],
1915    iMax:0,
1916    window:jQuery(window),
1917    o:o,
1918  };
1919  
1920  // Détermination du padding :
1921  //   ce peut-être une valeur absolue,
1922  //   la marge haute du body ( pad = 'body-margin-top' )
1923  //   ou par un selecteur jQuery. 
1924  // Sauf en cas de valeur absolue, la valeur sera calculée à chaque fois
1925  
1926  if (o.hasOwnProperty('pad')) {
1927    if (parseInt(o.pad)==o.pad) {
1928      contexte.pad = function(){return o.pad};
1929    }
1930    else if (o.pad == 'body-margin-top') {
1931      contexte.pad = function() { 
1932        body = jQuery('body');
1933        return parseInt(body.css('margin-top')) + parseInt(body.css('padding-top'));
1934      }
1935    }
1936    else {
1937      var pad_element = jQuery(o.pad);
1938      contexte.pad = function(){return pad_element.height()}
1939    }
1940  }
1941  
1942  // Mémorisation des colonnes, ajout d'un handler lorsqu'elles changent de hauteur
1943  for (var i = 0; i < o.colonnes.length; i++) {
1944    var selector = jQuery(o.colonnes[i]);
1945    jQuery(selector).each(function(){
1946      element = jQuery(this);
1947      if (element.css('float')=='none') {
1948        var colonne = {
1949          contexte:contexte, 
1950          element:element,
1951          height:parseInt(element.height()),
1952        };
1953        contexte.colonnes.push(colonne);
1954        element.bind('resize',function(){
1955          colSize(jQuery(this),contexte);
1956        });
1957      }
1958    });
1959  }
1960  
1961  // Calcul de la colonne max
1962  calculerColonneMax(contexte);
1963  
1964  // Pose d'un handler sur le scroll
1965  jQuery(document).scroll(function(){
1966    positionnerColonnes(contexte);
1967  });
1968  
1969}
1970
1971
1972jQuery(document).ready(function(){
1973  jQuery.ready.promise().done(function(){
1974    jQuery('.synchro').each(function(){
1975      var id = '#' + jQuery(this).attr('id');
1976      synchroniserCadres({pad:'body-margin-top',colonnes:[id+' > DIV']});
1977    });
1978  });
1979});
1980
1981  
1982;
1983(function ($) {
1984// Pseudo onglets utilisés pour gérer les colonnes sur des viewports étroits
1985// Une liste UL est générée avec la classe "colonnes-tabs";
1986// Parmi les items de cette liste, de classe "colonnes-tab", certains ont un attribut "data-tab" contenant un nom de classe,
1987// qui sera positionnée sur une colonne de classe "colonne" dans les desce
1987ndants de l'élément 
1988// portant la classe donnée dans l'attribut "data-parent-tab".
1989//
1990// Donc on a, par exemple :
1991//     <UL class="colonnes-tabs">
1992//       <LI class="colonnes-tab" data-tab="colonne-8" data-parent-tab="colonnes-12">...</LI>
1993//     </UL>
1994// 
1995//     <DIV class="colonnes colonnes-12">
1996//       <DIV class="colonne colonne-8">...</DIV>
1997//       ...
1998//     </DIV>
1999
2000
2001$(document).ready(function(){
2002
2003  jQuery('.colonnes-tabs > .colonnes-tab[data-tab]').click(function(){
2004    var item = jQuery(this);
2005    
2006    // Déjà sélectionné, rien à faire
2007    if (item.hasClass('current')) return;
2008                                    
2009    var current_item = item.parent().children('LI.current');
2010    if (current_item.length>0) {
2011      current_item.removeClass('current');
2012      jQuery('.' + current_item.attr('data-parent-tab') + ' .' + current_item.attr('data-tab')).removeClass('current');
2013    }
2014    
2015    item.addClass('current');
2016    jQuery('.' + item.attr('data-parent-tab') + ' .' + item.attr('data-tab')).addClass('current');
2017    jQuery(window).resize(); // car l'effet d'un resize précédent sur la colonne cachée a été nul
2018  });
2019  
2020});
2021
2022// Permet $(...).on('currentChanged',function...
2023$.each(['addClass', 'removeClass', 'toggleClass'], function (i, ev) {
2024  var el = $.fn[ev];
2025  $.fn[ev] = function () {
2026    // Le premier argument peut être string, function ou boolean
2027    // Le second peut etre boolean seulement
2028    var classes = undefined;
2029    var state = undefined;
2030    if (arguments.length>0) {
2031      switch(typeof(arguments[0])) {
2032        case 'string':
2033          classes = arguments[0];
2034          break;
2035        case 'function':
2036          classes = arguments[0]();
2037          break;
2038        case 'boolean':
2039          state = arguments[0];
2040          break;
2041      }
2042    }
2043    if (arguments.length>1) {
2044      switch(typeof(arguments[1])) {
2045        case 'boolean':
2046          state = arguments[0];
2047          break;
2048      }
2049    }
2050    classes = classes.split(' ');
2051    var current = false;
2052    for(var i=0;i<classes.length;i++) {
2053      if (classes[i].trim()=='current') current=true;
2054    }
2055    if (current) {
2056    
2057      // Déclenchement du trigger dans un timeout,
2058      // afin qu'il soit après toute autre action
2059      var me = this;
2060      setTimeout(
2061        function(){
2062          me.trigger('currentChanged');
2063        },
2064        1
2065      );
2066    }
2067    return el.apply(this,arguments);
2068  };
2069});
2070
2071
2072})(jQuery);
2073
2074;
2075(function ($) {
2076  
2077$("document").ready(function(){
2078  flex_simulator_init();
2079});
2080
2081
2082function flex_simulator_init() {
2083  $('body').append('<div style="display:none"><div id="flex-simulator-test" style="display:flex"></div></div>');
2084  if ($('#flex-simulator-test').css('display') == 'flex') return;
2085 
2086  // Donc display:flex n'est pas reconnu, et il faut le simuler
2087  $(window).resize(function(){
2088    flex_simulator_grow();
2089  });
2090  $('.flexible').on('currentChanged',function(){
2091    flex_simulator_grow();
2092  });
2093  
2094  flex_simulator_grow();
2095}
2096
2097function flex_simulator_grow() {
2098  $('.flexible').each(function(){
2099    // Pour simplifier, on ne traite que les extensions horizontales : 
2100    //   - Les blocs flexibles ont la classe "flexible"
2101    //   - Lorsque flex-grow est valué à 1, alors empty-cells est valué à "hide" (bidouille...)
2102    //   - Il n'y aura qu'un seul flex-grow:1 dans une fratrie
2103    
2104    // Recherche des blocs frères du flexible, visibles.
2105    var moi = $(this);
2106    if (moi.css('empty-cells') != 'hide' || moi.css('display')=='none') {
2107      return;
2108    }
2109    var fratrie = $(this).siblings();
2110    
2111    // Largeur disponible
2112    var total = moi.parent().width();
2113    var reste = total;
2114    
2115    // Largeur de la fratrie
2116    fratrie.each(function(){
2117      var f = $(this);
2118      if (f!=moi && f.css('display')!='none') {
2119        // Dans la fratrie, on peut avoir positionné une largeur,
2120        // notamment par le jeu des changements de classes.
2121        // On revient à des largeurs spécifiées par la feuille de style
2122        f.css('width','');
2123        reste -= f.outerWidth(true);
2124      }
2125    });
2126    
2127    // Retrait aussi de mon padding
2128    reste -= (moi.outerWidth(true) - moi.width()); 
2129    
2130    moi.css('width',reste + 'px');
2131  });
2132}
2133  
2134})(jQuery);   
2135
2136;
2137jQuery(document).ready(function(){
2138  jQuery('TABLE').tablesResponsives();
2139});
2140
2141
2142(function() {
2143  var delayedAdjust, TableResponsiveIndex;
2144  
2145  delayedAdjust = [];
2146  TableResponsiveIndex = 0;
2147  
2148  TableResponsive = (function() {
2149    function TableResponsive(e) {
2150      this.t = jQuery(e);
2151      this.init();
2152    }
2153    
2154    TableResponsive.prototype.init = function() {
2155      this.setupTable();
2156      this.adjustOnLoad();
2157      return this.adjustOnResize();
2158    }
2159    
2160    TableResponsive.prototype.setupTable = function() {
2161      this.b = this.t.children('tbody');
2162      this.r = 100;
2163      this.c = jQuery(this.t).find('*');
2164      this.index = TableResponsiveIndex++;
2165    }
2166    
2167    TableResponsive.prototype.adjustOnLoad = function() {
2168      var _this = this;
2169      return jQuery(window).on('load', function() {
2170        return _this.resizeTable();
2171      });
2172    };    
2173    
2174    TableResponsive.prototype.adjustOnResize = function() {
2175      var _this = this;
2176      return jQuery(window).on('resize', function() {
2177        clearTimeout(delayedAdjust[_this.index]);
2178        return delayedAdjust[_this.index] = setTimeout(function() {
2179          return _this.resizeTable();
2180        }, 20);
2181      });
2182    };
2183    
2184    TableResponsive.prototype.resizeTable = function() {
2185      // On peut agrandir tant que b n'est pas plus large qu'initialement
2186      while (this.b.width() < this.t.width() && this.r < 100) {
2187        this.r ++;
2188        this.c.css({fontSize:this.r+'%'});
2189      }
2190      // On doit réduire tant que b est plus large que la table
2191      // En se limitant à 90%, ce qui est déjà illisible.
2192      while (this.b.width() > this.t.width() && this.r > 90) {
2193        this.r --;
2194        this.c.css({fontSize:this.r+'%'});
2195      }
2196    };
2197    
2198    return TableResponsive;
2199
2200  })();
2201  
2202  (function($) {
2203    var tablesResponsivesElements;
2204    tablesResponsivesElements = [];
2205    return $.fn.tablesResponsives = function(options) {
2206      return this.each(function() {
2207        return tablesResponsivesElements.push(new TableResponsive(this));
2208      });
2209    };
2210  })(jQuery);  
2211}).call(this);
2212    
2213    
2214;

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.