PageSourceSearch

https://www.contrado.fr/blog/wp-content/themes/contradoblog/js/common.js?ver=6.0.2

js contrado.fr collected 2026-09-28 06:06:27 UTC 13,069 bytes, 238 lines download raw bytes

vendor: 4,943 bytes, lines 1-116
1/**
2 * hoverIntent is similar to jQuery's built-in "hover" method except that
3 * instead of firing the handlerIn function immediately, hoverIntent checks
4 * to see if the user's mouse has slowed down (beneath the sensitivity
5 * threshold) before firing the event. The handlerOut function is only
6 * called after a matching handlerIn.
7 *
8 * hoverIntent r7 // 2013.03.11 // jQuery 1.9.1+
9 * http://cherne.net/brian/resources/jquery.hoverIntent.html
10 *
11 * You may use hoverIntent under the terms of the MIT license. Basically that
12 * means you are free to use hoverIntent as long as this header is left intact.
13 * Copyright 2007, 2013 Brian Cherne
14 *
15 * // basic usage ... just like .hover()
16 * .hoverIntent( handlerIn, handlerOut )
17 * .hoverIntent( handlerInOut )
18 *
19 * // basic usage ... with event delegation!
20 * .hoverIntent( handlerIn, handlerOut, selector )
21 * .hoverIntent( handlerInOut, selector )
22 *
23 * // using a basic configuration object
24 * .hoverIntent( config )
25 *
26 * @param  handlerIn   function OR configuration object
27 * @param  handlerOut  function OR selector for delegation OR undefined
28 * @param  selector    selector OR undefined
29 * @author Brian Cherne <brian(at)cherne(dot)net>
30 **/
31(function($) {
32    $.fn.hoverIntent = function(handlerIn,handlerOut,selector) {
33
34        // default configuration values
35        var cfg = {
36            interval: 100,
37            sensitivity: 7,
38            timeout: 0
39        };
40
41        if ( typeof handlerIn === "object" ) {
42            cfg = $.extend(cfg, handlerIn );
43        } else if ($.isFunction(handlerOut)) {
44            cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );
45        } else {
46            cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );
47        }
48
49        // instantiate variables
50        // cX, cY = current X and Y position of mouse, updated by mousemove event
51        // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
52        var cX, cY, pX, pY;
53
54        // A private function for getting mouse position
55        var track = function(ev) {
56            cX = ev.pageX;
57            cY = ev.pageY;
58        };
59
60        // A private function for comparing current and previous mouse position
61        var compare = function(ev,ob) {
62            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
63            // compare mouse positions to see if they've crossed the threshold
64            if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
65                $(ob).off("mousemove.hoverIntent",track);
66                // set hoverIntent state to true (so mouseOut can be called)
67                ob.hoverIntent_s = 1;
68                return cfg.over.apply(ob,[ev]);
69            } else {
70                // set previous coordinates for next time
71                pX = cX; pY = cY;
72                // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
73                ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
74            }
75        };
76
77        // A private function for delaying the mouseOut function
78        var delay = function(ev,ob) {
79            ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
80            ob.hoverIntent_s = 0;
81            return cfg.out.apply(ob,[ev]);
82        };
83
84        // A private function for handling mouse 'hovering'
85        var handleHover = function(e) {
86            // copy objects to be passed into t (required for event object to be passed in IE)
87            var ev = jQuery.extend({},e);
88            var ob = this;
89
90            // cancel hoverIntent timer if it exists
91            if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
92
93            // if e.type == "mouseenter"
94            if (e.type == "mouseenter") {
95                // set "previous" X and Y position based on initial entry point
96                pX = ev.pageX; pY = ev.pageY;
97                // update "current" X and Y position based on mousemove
98                $(ob).on("mousemove.hoverIntent",track);
99                // start polling interval (self-calling timeout) to compare mouse coordinates over time
100                if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
101
102                // else e.type == "mouseleave"
103            } else {
104                // unbind expensive mousemove event
105                $(ob).off("mousemove.hoverIntent",track);
106                // if hoverIntent state is true, then call the mouseOut function after the specified delay
107                if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
108            }
109        };
110
111        // listen for mouseenter and mouseleave
112        return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);
113    };
114})(jQuery);
115
116/*
117 * jQuery Superfish Menu Plugin - v1.7.5
118 * Copyright (c) 2014 Joel Birch
119 *
120 * Dual licensed under the MIT and GPL licenses:
121 *  http://www.opensource.org/licenses/mit-license.php
122 *  http://www.gnu.org/licenses/gpl.html
123 */
124
125;(function(e,s){"use strict";var n=function(){var n={bcClass:"sf-breadcrumb",menuClass:"sf-js-enabled",anchorClass:"sf-with-ul",menuArrowClass:"sf-arrows"},o=function(){var n=/iPhone|iPad|iPod/i.test(navigator.userAgent);return n&&e(s).load(function(){e("body").children().on("click",e.noop)}),n}(),t=function(){var e=document.documentElement.style;return"behavior"in e&&"fill"in e&&/iemobile/i.test(navigator.userAgent)}(),i=function(){return!!s.PointerEvent}(),r=function(e,s){var o=n.menuClass;s.cssArrows&&(o+=" "+n.menuArrowClass),e.toggleClass(o)},a=function(s,o){return s.find("li."+o.pathClass).slice(0,o.pathLevels).addClass(o.hoverClass+" "+n.bcClass).filter(function(){return e(this).children(o.popUpSelector).hide().show().length}).removeClass(o.pathClass)},l=function(e){e.children("a").toggleClass(n.anchorClass)},h=function(e){var s=e.css("ms-touch-action"),n=e.css("touch-action");n=n||s,n="pan-y"===n?"auto":"pan-y",e.css({"ms-touch-action":n,"touch-action":n})},u=function(s,n){var r="li:has("+n.popUpSelector+")";e.fn.hoverIntent&&!n.disableHI?s.hoverIntent(c,f,r):s.on("mouseenter.superfish",r,c).on("mouseleave.superfish",r,f);var a="MSPointerDown.superfish";i&&(a="pointerdown.superfish"),o||(a+=" touchend.superfish"),t&&(a+=" mousedown.superfish"),s.on("focusin.superfish","li",c).on("focusout.superfish","li",f).on(a,"a",n,p)},p=function(s){var n=e(this),o=n.siblings(s.data.popUpSelector);o.length>0&&o.is(":hidden")&&(n.one("click.superfish",!1),"MSPointerDown"===s.type||"pointerdown"===s.type?n.trigger("focus"):e.proxy(c,n.parent("li"))())},c=function(){var s=e(this),n=m(s);clearTimeout(n.sfTimer),s.siblings().superfish("hide").end().superfish("show")},f=function(){var s=e(this),n=m(s);o?e.proxy(d,s,n)():(clearTimeout(n.sfTimer),n.sfTimer=setTimeout(e.proxy(d,s,n),n.delay))},d=function(s){s.retainPath=e.inArray(this[0],s.$path)>-1,this.superfish("hide"),this.parents("."+s.hoverClass).length||(s.onIdle.call(v(this)),s.$path.length&&e.proxy(c,s.$path)())},v=function(e){return e.closest("."+n.menuClass)},m=function(e){return v(e).data("sf-options")};return{hide:function(s){if(this.length){var n=this,o=m(n);if(!o)return this;var t=o.retainPath===!0?o.$path:"",i=n.find("li."+o.hoverClass).add(this).not(t).removeClass(o.hoverClass).children(o.popUpSelector),r=o.speedOut;s&&(i.show(),r=0),o.retainPath=!1,o.onBeforeHide.call(i),i.stop(!0,!0).animate(o.animationOut,r,function(){var s=e(this);o.onHide.call(s)})}return this},show:function(){var e=m(this);if(!e)return this;var s=this.addClass(e.hoverClass),n=s.children(e.popUpSelector);return e.onBeforeShow.call(n),n.stop(!0,!0).animate(e.animation,e.speed,function(){e.onShow.call(n)}),this},destroy:function(){return this.each(function(){var s,o=e(this),t=o.data("sf-options");return t?(s=o.find(t.popUpSelector).parent("li"),clearTimeout(t.sfTimer),r(o,t),l(s),h(o),o.off(".superfish").off(".hoverIntent"),s.children(t.popUpSelector).attr("style",function(e,s){return s.replace(/display[^;]+;?/g,"")}),t.$path.removeClass(t.hoverClass+" "+n.bcClass).addClass(t.pathClass),o.find("."+t.hoverClass).removeClass(t.hoverClass),t.onDestroy.call(o),o.removeData("sf-options"),void 0):!1})},init:function(s){return this.each(function(){var o=e(this);if(o.data("sf-options"))return!1;var t=e.extend({},e.fn.superfish.defaults,s),i=o.find(t.popUpSelector).parent("li");t.$path=a(o,t),o.data("sf-options",t),r(o,t),l(i),h(o),u(o,t),i.not("."+n.bcClass).superfish("hide",!0),t.onInit.call(this)})}}}();e.fn.superfish=function(s){return n[s]?n[s].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof s&&s?e.error("Method "+s+" does not exist on jQuery.fn.superfish"):n.init.apply(this,arguments)},e.fn.superfish.defaults={popUpSelector:"ul,.sf-mega",hoverClass:"sfHover",pathClass:"overrideThisToUse",pathLevels:1,delay:800,animation:{opacity:"show"},animationOut:{opacity:"hide"},speed:"normal",speedOut:"fast",cssArrows:!0,disableHI:!1,onInit:e.noop,onBeforeShow:e.noop,onShow:e.noop,onBeforeHide:e.noop,onHide:e.noop,onIdle:e.noop,onDestroy:e.noop}})(jQuery,window);
126
127/*jshint browser:true */
128/*!
129* FitVids 1.1
130*
131* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
132* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
133* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
134*
135*/
136
137;(function( $ ){
138
139  'use strict';
140
141  $.fn.fitVids = function( options ) {
142    var settings = {
143      customSelector: null,
144      ignore: null
145    };
146
147    if(!document.getElementById('fit-vids-style')) {
148      // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
149      var head = document.head || document.getElementsByTagName('head')[0];
150      var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
151      var div = document.createElement("div");
152      div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
153      head.appendChild(div.childNodes[1]);
154    }
155
156    if ( options ) {
157      $.extend( settings, options );
158    }
159
160    return this.each(function(){
161      var selectors = [
162        'iframe[src*="player.vimeo.com"]',
163        'iframe[src*="youtube.com"]',
164        'iframe[src*="youtube-nocookie.com"]',
165        'iframe[src*="kickstarter.com"][src*="video.html"]',
166        'object',
167        'embed'
168      ];
169
170      if (settings.customSelector) {
171        selectors.push(settings.customSelector);
172      }
173
174      var ignoreList = '.fitvidsignore';
175
176      if(settings.ignore) {
177        ignoreList = ignoreList + ', ' + settings.ignore;
178      }
179
180      var $allVideos = $(this).find(selectors.join(','));
181      $allVideos = $allVideos.not('object object'); // SwfObj conflict patch
182      $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
183
184      $allVideos.each(function(count){
185        var $this = $(this);
186        if($this.parents(ignoreList).length > 0) {
187          return; // Disable FitVids on this video.
188        }
189        if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
190        if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
191        {
192          $this.attr('height', 9);
193          $this.attr('width', 16);
194        }
195        var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
196            width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
197            aspectRatio = height / width;
198        if(!$this.attr('id')){
199          var videoID = 'fitvid' + count;
200          $this.attr('id', videoID);
201        }
202        $this.wrap('<div class="fluid-width-video-wrapper"></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
203        $this.removeAttr('height').removeAttr('width');
204      });
205    });
206  };
207// Works with either jQuery or Zepto
208})( window.jQuery || window.Zepto );
209
210(function( $ ) {
211
212  $( document ).ready( function() {
213    $( '#main' ).fitVids();
214  });
215
216})( jQuery );
217
218// #Newsletter Popup Start //
219	var modal = document.getElementById("myModal");
220	var sclose= document.getElementById("sclose");
221	var bclose = document.getElementById("btnNewsletterSignUpNo");
222
223	window.onload = function () {
224		setTimeout(function () {
225			modal.style.display = "block";
226		}, 10000);
227	}
228	
229	sclose.onclick = function () {
230		modal.style.display = "none";
231	}
232
233	window.onclick = function (event) {
234		if (event.target == modal) {
235			modal.style.display = "none";
236		}
237	}
238// #Newsletter Popup End //

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.