PageSourceSearch

https://www.ldh-france.org/wp-content/themes/ldh2018/library/js/plugins.js?ver=6.8.10

js ldh-france.org collected 2026-09-24 09:07:51 UTC 38,259 bytes, 738 lines download raw bytes

1/*global define:false require:false */
2(function (name, context, definition) {
3	if (typeof module != 'undefined' && module.exports) module.exports = definition();
4	else if (typeof define == 'function' && define.amd) define(definition);
5	else context[name] = definition();
6})('jquery-scrollto', this, function(){
7	// Prepare
8	var jQuery, $, ScrollTo;
9	jQuery = $ = window.jQuery || require('jquery');
10
11	// Fix scrolling animations on html/body on safari
12	$.propHooks.scrollTop = $.propHooks.scrollLeft = {
13		get: function(elem,prop) {
14			var result = null;
15			if ( elem.tagName === 'HTML' || elem.tagName === 'BODY' ) {
16				if ( prop === 'scrollLeft' ) {
17					result = window.scrollX;
18				} else if ( prop === 'scrollTop' ) {
19					result = window.scrollY;
20				}
21			}
22			if ( result == null ) {
23				result = elem[prop];
24			}
25			return result;
26		}
27	};
28	$.Tween.propHooks.scrollTop = $.Tween.propHooks.scrollLeft = {
29		get: function(tween) {
30			return $.propHooks.scrollTop.get(tween.elem, tween.prop);
31		},
32		set: function(tween) {
33			// Our safari fix
34			if ( tween.elem.tagName === 'HTML' || tween.elem.tagName === 'BODY' ) {
35				// Defaults
36				tween.options.bodyScrollLeft = (tween.options.bodyScrollLeft || window.scrollX);
37				tween.options.bodyScrollTop = (tween.options.bodyScrollTop || window.scrollY);
38
39				// Apply
40				if ( tween.prop === 'scrollLeft' ) {
41					tween.options.bodyScrollLeft = Math.round(tween.now);
42				}
43				else if ( tween.prop === 'scrollTop' ) {
44					tween.options.bodyScrollTop = Math.round(tween.now);
45				}
46
47				// Apply
48				window.scrollTo(tween.options.bodyScrollLeft, tween.options.bodyScrollTop);
49			}
50			// jQuery's IE8 Fix
51			else if ( tween.elem.nodeType && tween.elem.parentNode ) {
52				tween.elem[ tween.prop ] = tween.now;
53			}
54		}
55	};
56
57	// jQuery ScrollTo
58	ScrollTo = {
59		// Configuration
60		config: {
61			duration: 400,
62			easing: 'swing',
63			callback: undefined,
64			durationMode: 'each',
65			offsetTop: 0,
66			offsetLeft: 0
67		},
68
69		// Set Configuration
70		configure: function(options){
71			// Apply Options to Config
72			$.extend(ScrollTo.config, options||{});
73
74			// Chain
75			return this;
76		},
77
78		// Perform the Scroll Animation for the Collections
79		// We use $inline here, so we can determine the actual offset start for each overflow:scroll item
80		// Each collection is for each overflow:scroll item
81		scroll: function(collections, config){
82			// Prepare
83			var collection, $container, container, $target, $inline, position, containerTagName,
84				containerScrollTop, containerScrollLeft,
85				containerScrollTopEnd, containerScrollLeftEnd,
86				startOffsetTop, targetOffsetTop, targetOffsetTopAdjusted,
87				startOffsetLeft, targetOffsetLeft, targetOffsetLeftAdjusted,
88				scrollOptions,
89				callback;
90
91			// Determine the Scroll
92			collection = collections.pop();
93			$container = collection.$container;
94			$target = collection.$target;
95			containerTagName = $container.prop('tagName');
96
97			// Prepare the Inline Element of the Container
98			$inline = $('<span/>').css({
99				'position': 'absolute',
100				'top': '0px',
101				'left': '0px'
102			});
103			position = $container.css('position');
104
105			// Insert the Inline Element of the Container
106			$container.css({position:'relative'});
107			$inline.appendTo($container);
108
109			// Determine the top offset
110			startOffsetTop = $inline.offset().top;
111			targetOffsetTop = $target.offset().top;
112			targetOffsetTopAdjusted = targetOffsetTop - startOffsetTop - parseInt(config.offsetTop,10);
113
114			// Determine the left offset
115			startOffsetLeft = $inline.offset().left;
116			targetOffsetLeft = $target.offset().left;
117			targetOffsetLeftAdjusted = targetOffsetLeft - startOffsetLeft - parseInt(config.offsetLeft,10);
118
119			// Determine current scroll positions
120			containerScrollTop = $container.prop('scrollTop');
121			containerScrollLeft = $container.prop('scrollLeft');
122
123			// Reset the Inline Element of the Container
124			$inline.remove();
125			$container.css({position:position});
126
127			// Prepare the scroll options
128			scrollOptions = {};
129
130			// Prepare the callback
131			callback = function(event){
132				// Check
133				if ( collections.length === 0 ) {
134					// Callback
135					if ( typeof config.callback === 'function' ) {
136						config.callback();
137					}
138				}
139				else {
140					// Recurse
141					ScrollTo.scroll(collections,config);
142				}
143				// Return true
144				return true;
145			};
146
147			// Handle if we only want to scroll if we are outside the viewport
148			if ( config.onlyIfOutside ) {
149				// Determine current scroll positions
150				containerScrollTopEnd = containerScrollTop + $container.height();
151				containerScrollLeftEnd = containerScrollLeft + $container.width();
152
153				// Check if we are in the range of the visible area of the container
154				if ( containerScrollTop < targetOffsetTopAdjusted && targetOffsetTopAdjusted < containerScrollTopEnd ) {
155					targetOffsetTopAdjusted = containerScrollTop;
156				}
157				if ( containerScrollLeft < targetOffsetLeftAdjusted && targetOffsetLeftAdjusted < containerScrollLeftEnd ) {
158					targetOffsetLeftAdjusted = containerScrollLeft;
159				}
160			}
161
162			// Determine the scroll options
163			if ( targetOffsetTopAdjusted !== containerScrollTop ) {
164				scrollOptions.scrollTop = targetOffsetTopAdjusted;
165			}
166			if ( targetOffsetLeftAdjusted !== containerScrollLeft ) {
167				scrollOptions.scrollLeft = targetOffsetLeftAdjusted;
168			}
169
170			// Check to see if the scroll is necessary
171			if ( $container.prop('scrollHeight') === $container.width() ) {
172				delete scrollOptions.scrollTop;
173			}
174			if ( $container.prop('scrollWidth') === $container.width() ) {
175				delete scrollOptions.scrollLeft;
176			}
177
178			// Perform the scroll
179			if ( scrollOptions.scrollTop != null || scrollOptions.scrollLeft != null ) {
180				$container.animate(scrollOptions, {
181					duration: config.duration,
182					easing: config.easing,
183					complete: callback
184				});
185			}
186			else {
187				callback();
188			}
189
190			// Return true
191			return true;
192		},
193
194		// ScrollTo the Element using the Options
195		fn: function(options){
196			// Prepare
197			var collections, config, $container, container;
198			collections = [];
199
200			// Prepare
201			var	$target = $(this);
202			if ( $target.length === 0 ) {
203				// Chain
204				return this;
205			}
206
207			// Handle Options
208			config = $.extend({},ScrollTo.config,options);
209
210			// Fetch
211			$container = $target.parent();
212			container = $container.get(0);
213
214			// Cycle through the containers
215			while ( ($container.length === 1) && (container !== document.body) && (container !== document) ) {
216				// Check Container for scroll differences
217				var containerScrollTop, containerScrollLeft;
218				containerScrollTop = $container.css('overflow-y') !== 'visible' && container.scrollHeight !== container.clientHeight;
219				containerScrollLeft =  $container.css('overflow-x') !== 'visible' && container.scrollWidth !== container.clientWidth;
220				if ( containerScrollTop || containerScrollLeft ) {
221					// Push the Collection
222					collections.push({
223						'$container': $container,
224						'$target': $target
225					});
226					// Update the Target
227					$target = $container;
228				}
229				// Update the Container
230				$container = $container.parent();
231				container = $container.get(0);
232			}
233
234			// Add the final collection
235			collections.push({
236				'$container': $('html'),
237				// document.body doesn't work in firefox, html works for all
238				// internet explorer starts at the beggining
239				'$target': $target
240			});
241
242			// Adjust the Config
243			if ( config.durationMode === 'all' ) {
244				config.duration /= collections.length;
245			}
246
247			// Handle
248			ScrollTo.scroll(collections,config);
249
250			// Chain
251			return this;
252		}
253	};
254
255	// Apply our extensions to jQuery
256	$.ScrollTo = $.ScrollTo || ScrollTo;
257	$.fn.ScrollTo = $.fn.ScrollTo || ScrollTo.fn;
258
259	// Export
260	return ScrollTo;
261});
262
263/*
264 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
265 *
266 * Uses the built in easing capabilities added In jQuery 1.1
267 * to offer multiple easing options
268 *
269 * TERMS OF USE - jQuery Easing
270 * 
271 * Open source under the BSD License. 
272 * 
273 * Copyright © 2008 George McGinley Smith
274 * All rights reserved.
275 * 
276 * Redistribution and use in source and binary forms, with or without modification, 
277 * are permitted provided that the following conditions are met:
278 * 
279 * Redistributions of source code must retain the above copyright notice, this list of 
280 * conditions and the following disclaimer.
281 * Redistributions in binary form must reproduce the above copyright notice, this list 
282 * of conditions and the following disclaimer in the documentation and/or other materials 
283 * provided with the distribution.
284 * 
285 * Neither the name of the author nor the names of contributors may be used to endorse 
286 * or promote products derived from this software without specific prior written permission.
287 * 
288 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
289 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
290 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
291 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
vendor: 5,091 bytes, lines 292-437
292 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
293 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
294 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
295 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
296 * OF THE POSSIBILITY OF SUCH DAMAGE. 
297 *
298*/
299
300// t: current time, b: begInnIng value, c: change In value, d: duration
301jQuery.easing['jswing'] = jQuery.easing['swing'];
302
303jQuery.extend( jQuery.easing,
304{
305	def: 'easeOutQuad',
306	swing: function (x, t, b, c, d) {
307		//alert(jQuery.easing.default);
308		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
309	},
310	easeInQuad: function (x, t, b, c, d) {
311		return c*(t/=d)*t + b;
312	},
313	easeOutQuad: function (x, t, b, c, d) {
314		return -c *(t/=d)*(t-2) + b;
315	},
316	easeInOutQuad: function (x, t, b, c, d) {
317		if ((t/=d/2) < 1) return c/2*t*t + b;
318		return -c/2 * ((--t)*(t-2) - 1) + b;
319	},
320	easeInCubic: function (x, t, b, c, d) {
321		return c*(t/=d)*t*t + b;
322	},
323	easeOutCubic: function (x, t, b, c, d) {
324		return c*((t=t/d-1)*t*t + 1) + b;
325	},
326	easeInOutCubic: function (x, t, b, c, d) {
327		if ((t/=d/2) < 1) return c/2*t*t*t + b;
328		return c/2*((t-=2)*t*t + 2) + b;
329	},
330	easeInQuart: function (x, t, b, c, d) {
331		return c*(t/=d)*t*t*t + b;
332	},
333	easeOutQuart: function (x, t, b, c, d) {
334		return -c * ((t=t/d-1)*t*t*t - 1) + b;
335	},
336	easeInOutQuart: function (x, t, b, c, d) {
337		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
338		return -c/2 * ((t-=2)*t*t*t - 2) + b;
339	},
340	easeInQuint: function (x, t, b, c, d) {
341		return c*(t/=d)*t*t*t*t + b;
342	},
343	easeOutQuint: function (x, t, b, c, d) {
344		return c*((t=t/d-1)*t*t*t*t + 1) + b;
345	},
346	easeInOutQuint: function (x, t, b, c, d) {
347		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
348		return c/2*((t-=2)*t*t*t*t + 2) + b;
349	},
350	easeInSine: function (x, t, b, c, d) {
351		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
352	},
353	easeOutSine: function (x, t, b, c, d) {
354		return c * Math.sin(t/d * (Math.PI/2)) + b;
355	},
356	easeInOutSine: function (x, t, b, c, d) {
357		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
358	},
359	easeInExpo: function (x, t, b, c, d) {
360		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
361	},
362	easeOutExpo: function (x, t, b, c, d) {
363		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
364	},
365	easeInOutExpo: function (x, t, b, c, d) {
366		if (t==0) return b;
367		if (t==d) return b+c;
368		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
369		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
370	},
371	easeInCirc: function (x, t, b, c, d) {
372		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
373	},
374	easeOutCirc: function (x, t, b, c, d) {
375		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
376	},
377	easeInOutCirc: function (x, t, b, c, d) {
378		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
379		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
380	},
381	easeInElastic: function (x, t, b, c, d) {
382		var s=1.70158;var p=0;var a=c;
383		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
384		if (a < Math.abs(c)) { a=c; var s=p/4; }
385		else var s = p/(2*Math.PI) * Math.asin (c/a);
386		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
387	},
388	easeOutElastic: function (x, t, b, c, d) {
389		var s=1.70158;var p=0;var a=c;
390		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
391		if (a < Math.abs(c)) { a=c; var s=p/4; }
392		else var s = p/(2*Math.PI) * Math.asin (c/a);
393		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
394	},
395	easeInOutElastic: function (x, t, b, c, d) {
396		var s=1.70158;var p=0;var a=c;
397		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
398		if (a < Math.abs(c)) { a=c; var s=p/4; }
399		else var s = p/(2*Math.PI) * Math.asin (c/a);
400		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
401		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
402	},
403	easeInBack: function (x, t, b, c, d, s) {
404		if (s == undefined) s = 1.70158;
405		return c*(t/=d)*t*((s+1)*t - s) + b;
406	},
407	easeOutBack: function (x, t, b, c, d, s) {
408		if (s == undefined) s = 1.70158;
409		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
410	},
411	easeInOutBack: function (x, t, b, c, d, s) {
412		if (s == undefined) s = 1.70158; 
413		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
414		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
415	},
416	easeInBounce: function (x, t, b, c, d) {
417		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
418	},
419	easeOutBounce: function (x, t, b, c, d) {
420		if ((t/=d) < (1/2.75)) {
421			return c*(7.5625*t*t) + b;
422		} else if (t < (2/2.75)) {
423			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
424		} else if (t < (2.5/2.75)) {
425			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
426		} else {
427			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
428		}
429	},
430	easeInOutBounce: function (x, t, b, c, d) {
431		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
432		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
433	}
434});
435
436/*
437 *
438 * TERMS OF USE - EASING EQUATIONS
439 * 
440 * Open source under the BSD License. 
441 * 
442 * Copyright © 2001 Robert Penner
443 * All rights reserved.
444 * 
445 * Redistribution and use in source and binary forms, with or without modification, 
446 * are permitted provided that the following conditions are met:
447 * 
448 * Redistributions of source code must retain the above copyright notice, this list of 
449 * conditions and the following disclaimer.
450 * Redistributions in binary form must reproduce the above copyright notice, this list 
451 * of conditions and the following disclaimer in the documentation and/or other materials 
452 * provided with the distribution.
453 * 
454 * Neither the name of the author nor the names of contributors may be used to endorse 
455 * or promote products derived from this software without specific prior written permission.
456 * 
457 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
458 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
459 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
460 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
461 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
462 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
463 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
464 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
465 * OF THE POSSIBILITY OF SUCH DAMAGE. 
466 *
467 */
468
469 /*
470 * jquery.tappable.js version 0.2
471 *
472 * More responsive (iOS-like) touch behaviour for buttons and other 'tappable' UI
473 * elements, instead of Mobile Safari's 300ms delay and ugly grey overlay:
474 *
475 *  - A 'touched' class is added to the element as soon as it is tapped (or, in
476 *    the case of a "long tap" - when the user keeps their finger down for a
477 *    moment - after a specified delay).
478 *
479 *  - The supplied callback is called as soon as the user lifts their finger.
480 *
481 *  - The class is removed, and firing of the callback cancelled, if the user moves
482 *    their finger (though this can be disabled).
483 *
484 *  - If the browser doesn't support touch events, it falls back to click events.
485 *
486 * More detailed explanation of behaviour and background:
487 * http://aanandprasad.com/articles/jquery-tappable/
488 *
489 * See it in action here: http://nnnnext.com
490 *
491 * I recommend that you add a `-webkit-tap-highlight-color: rgba(0,0,0,0)`
492 * style rule to any elements you wish to make tappable, to hide the ugly grey
493 * click overlay.
494 *
495 * Tested on iOS 4.3 and some version of Android, I don't know. Leave me alone.
496 *
497 * Basic usage:
498 *
499 *   $(element).tappable(function() { console.log("Hello World!") })
500 *
501 * Advanced usage:
502 *
503 *   $(element).tappable({
504 *     callback:     function() { console.log("Hello World!") },
505 *     cancelOnMove: false,
506 *     touchDelay:   150,
507 *     onlyIf:       function(el) { return $(el).hasClass('enabled') }
508 *   })
509 *
510 * Options:
511 *
512 *   cancelOnMove: If truthy, then as soon as the user moves their finger, the
513 *                 'touched' class is removed from the element. When they lift
514 *                 their finger, the callback will *not* be fired. Defaults to
515 *                 true.
516 *
517 *   touchDelay:   Time to wait (ms) before adding the 'touched' class when the
518 *                 user performs a "long tap". Best employed on elements that the
519 *                 user is likely to touch while scrolling. Around 150 will work
520 *                 well. Defaults to 0.
521 *   
522 *   onlyIf:       Function to run as soon as the user touches the element, to
523 *                 determine whether to do anything. If it returns a falsy value,
524 *                 the 'touched' class will not be added and the callback will
525 *                 not be fired.
526 *
527 */
528
529;(function($) {
530  var touchSupported = ('ontouchstart' in window)
531
532  $.fn.tappable = function(options) {
533    var cancelOnMove = true,
534        onlyIf = function() { return true },
535        touchDelay = 0,
536        callback
537
538    switch(typeof options) {
539      case 'function':
540        callback = options
541        break;
542      case 'object':
543        callback = options.callback
544
545        if (typeof options.cancelOnMove != 'undefined') {
546          cancelOnMove = options.cancelOnMove
547        }
548
549        if (typeof options.onlyIf != 'undefined') {
550          onlyIf = options.onlyIf
551        }
552
553        if (typeof options.touchDelay != 'undefined') {
554          touchDelay = options.touchDelay
555        }
556
557        break;
558    }
559
560    var fireCallback = function(el, event) {
561      if (typeof callback == 'function' && onlyIf(el)) {
562        callback.call(el, event)
563      }
564    }
565
566    if (touchSupported) {
567      this.bind('touchstart', function(event) {
568        var el = this
569
570        if (onlyIf(this)) {
571          $(el).addClass('touch-started')
572
573          window.setTimeout(function() {
574            if ($(el).hasClass('touch-started')) {
575              $(el).addClass('touched')
576            }
577          }, touchDelay)
578        }
579
580        return true
581      })
582
583      this.bind('touchend', function(event) {
584        var el = this
585
586        if ($(el).hasClass('touch-started')) {
587          $(el)
588            .removeClass('touched')
589            .removeClass('touch-started')
590
591          fireCallback(el, event)
592        }
593
594        return true
595      })
596
597      this.bind('click', function(event) {
598        event.preventDefault()
599      })
600
601      if (cancelOnMove) {
602        this.bind('touchmove', function() {
603          $(this)
604            .removeClass('touched')
605            .removeClass('touch-started')
606        })
607      }
608    } else if (typeof callback == 'function') {
609      this.bind('click', function(event) {
610        if (onlyIf(this)) {
611          callback.call(this, event)
612        }
613      })
614    }
615
616    return this
617  }
618})(jQuery);
619
620/**
621 * @preserve JSizes - JQuery plugin v0.33
622 *
623 * Licensed under the revised BSD License.
624 * Copyright 2008-2010 Bram Stein
625 * All rights reserved.
626 */
627/*global jQuery*/
628(function ($) {
629	'use strict';
630	var num = function (value) {
631			return parseInt(value, 10) || 0;
632		};
633
634	/**
635	 * Sets or gets the values for min-width, min-height, max-width
636	 * and max-height.
637	 */
638	$.each(['min', 'max'], function (i, name) {
639		$.fn[name + 'Size'] = function (value) {
640			var width, height;
641			if (value) {
642				if (value.width !== undefined) {
643					this.css(name + '-width', value.width);
644				}
645				if (value.height !== undefined) {
646					this.css(name + '-height', value.height);
647				}
648			} else {
649				width = this.css(name + '-width');
650				height = this.css(name + '-height');
651				// Apparently:
652				//  * Opera returns -1px instead of none
653				//  * IE6 returns undefined instead of none
654				return {'width': (name === 'max' && (width === undefined || width === 'none' || num(width) === -1) && Number.MAX_VALUE) || num(width), 
655						'height': (name === 'max' && (height === undefined || height === 'none' || num(height) === -1) && Number.MAX_VALUE) || num(height)};
656			}
657			return this;
658		};
659	});
660
661	/**
662	 * Returns whether or not an element is visible.
663	 */
664	$.fn.isVisible = function () {
665		return this.is(':visible');
666	};
667
668	/**
669	 * Sets or gets the values for border, margin and padding.
670	 */
671	$.each(['border', 'margin', 'padding'], function (i, name) {
672		$.fn[name] = function (value) {
673			if (value) {
674				if (value.top !== undefined) {
675					this.css(name + '-top' + (name === 'border' ? '-width' : ''), value.top);
676				}
677				if (value.bottom !== undefined) {
678					this.css(name + '-bottom' + (name === 'border' ? '-width' : ''), value.bottom);
679				}
680				if (value.left !== undefined) {
681					this.css(name + '-left' + (name === 'border' ? '-width' : ''), value.left);
682				}
683				if (value.right !== undefined) {
684					this.css(name + '-right' + (name === 'border' ? '-width' : ''), value.right);
685				}
686			} else {
687				return {top: num(this.css(name + '-top' + (name === 'border' ? '-width' : ''))),
688						bottom: num(this.css(name + '-bottom' + (name === 'border' ? '-width' : ''))),
689						left: num(this.css(name + '-left' + (name === 'border' ? '-width' : ''))),
690						right: num(this.css(name + '-right' + (name === 'border' ? '-width' : '')))};
691			}
692			return this;
693		};
694	});
695}(jQuery));
696/*!
697 * jQuery TextChange Plugin
698 * http://www.zurb.com/playground/jquery-text-change-custom-event
699 *
700 * Copyright 2010, ZURB
701 * Released under the MIT License
702 */
703 (function(a){a.event.special.textchange={setup:function(){a(this).data("lastValue",this.contentEditable==="true"?a(this).html():a(this).val());a(this).bind("keyup.textchange",a.event.special.textchange.handler);a(this).bind("cut.textchange paste.textchange input.textchange",a.event.special.textchange.delayedHandler)},teardown:function(){a(this).unbind(".textchange")},handler:function(){a.event.special.textchange.triggerIfChanged(a(this))},delayedHandler:function(){var c=a(this);setTimeout(function(){a.event.special.textchange.triggerIfChanged(c)},
704 25)},triggerIfChanged:function(a){var b=a[0].contentEditable==="true"?a.html():a.val();b!==a.data("lastValue")&&(a.trigger("textchange",[a.data("lastValue")]),a.data("lastValue",b))}};a.event.special.hastext={setup:function(){a(this).bind("textchange",a.event.special.hastext.handler)},teardown:function(){a(this).unbind("textchange",a.event.special.hastext.handler)},handler:function(c,b){b===""&&b!==a(this).val()&&a(this).trigger("hastext")}};a.event.special.notext={setup:function(){a(this).bind("textchange",
705 a.event.special.notext.handler)},teardown:function(){a(this).unbind("textchange",a.event.special.notext.handler)},handler:function(c,b){a(this).val()===""&&a(this).val()!==b&&a(this).trigger("notext")}}})(jQuery);
706
707/*
708 * jQuery replaceText - v1.1 - 11/21/2009
709 * http://benalman.com/projects/jquery-replacetext-plugin/
710 * 
711 * Copyright (c) 2009 "Cowboy" Ben Alman
712 * Dual licensed under the MIT and GPL licenses.
713 * http://benalman.com/about/license/
714 */
715(function($){$.fn.replaceText=function(b,a,c){return this.each(function(){var f=this.firstChild,g,e,d=[];if(f){do{if(f.nodeType===3){g=f.nodeValue;e=g.replace(b,a);if(e!==g){if(!c&&/</.test(e)){$(f).before(e);d.push(f)}else{f.nodeValue=e}}}}while(f=f.nextSibling)}d.length&&$(d).remove()})}})(jQuery);
716
717/*	
718 * jQuery mmenu v4.3.1
719 * @requires jQuery 1.7.0 or later
720 *
721 * mmenu.frebsite.nl
722 *	
723 * Copyright (c) Fred Heusschen
724 * www.frebsite.nl
725 *
726 * Dual licensed under the MIT and GPL licenses.
727 * http://en.wikipedia.org/wiki/MIT_License
728 * http://en.wikipedia.org/wiki/GNU_General_Public_License
729 */
730!function(e){function s(s,n,t){if(t){if("object"!=typeof s&&(s={}),"boolean"!=typeof s.isMenu){var i=t.children();s.isMenu=1==i.length&&i.is(n.panelNodetype)}return s}s=e.extend(!0,{},e[a].defaults,s),("top"==s.position||"bottom"==s.position)&&("back"==s.zposition||"next"==s.zposition)&&(e[a].deprecated('Using position "'+s.position+'" in combination with zposition "'+s.zposition+'"','zposition "front"'),s.zposition="front");for(var o=["position","zposition","modal","moveBackground"],l=0,d=o.length;d>l;l++)"undefined"!=typeof s[o[l]]&&(e[a].deprecated('The option "'+o[l]+'"',"offCanvas."+o[l]),s.offCanvas=s.offCanvas||{},s.offCanvas[o[l]]=s[o[l]]);return s}function n(s){s=e.extend(!0,{},e[a].configuration,s);for(var n=["panel","list","selected","label","spacer"],t=0,i=n.length;i>t;t++)"undefined"!=typeof s[n[t]+"Class"]&&(e[a].deprecated('The configuration option "'+n[t]+'Class"',"classNames."+n[t]),s.classNames[n[t]]=s[n[t]+"Class"]);if("undefined"!=typeof s.counterClass&&(e[a].deprecated('The configuration option "counterClass"',"classNames.c
730ounters.counter"),s.classNames.counters=s.classNames.counters||{},s.classNames.counters.counter=s.counterClass),"undefined"!=typeof s.collapsedClass&&(e[a].deprecated('The configuration option "collapsedClass"',"classNames.labels.collapsed"),s.classNames.labels=s.classNames.labels||{},s.classNames.labels.collapsed=s.collapsedClass),"undefined"!=typeof s.header)for(var n=["panelHeader","panelNext","panelPrev"],t=0,i=n.length;i>t;t++)"undefined"!=typeof s.header[n[t]+"Class"]&&(e[a].deprecated('The configuration option "header.'+n[t]+'Class"',"classNames.header."+n[t]),s.classNames.header=s.classNames.header||{},s.classNames.header[n[t]]=s.header[n[t]+"Class"]);for(var n=["pageNodetype","pageSelector","menuWrapperSelector","menuInjectMethod"],t=0,i=n.length;i>t;t++)"undefined"!=typeof s[n[t]]&&(e[a].deprecated('The configuration option "'+n[t]+'"',"offCanvas."+n[t]),s.offCanvas=s.offCanvas||{},s.offCanvas[n[t]]=s[n[t]]);return s}function t(){u=!0,c.$wndw=e(window),c.$html=e("html"),c.$body=e("body"),e.each([l,d,r],function(e,s){s.add=function(e){e=e.split(" ");for(var n in e)s[e[n]]=s.mm(e[n])}}),l.mm=function(e){return"mm-"+e},l.add("wrapper menu ismenu inline panel list subtitle selected label spacer current highest hidden opened subopened subopen fullsubopen subclose"),l.umm=function(e){return"mm-"==e.slice(0,3)&&(e=e.slice(3)),e},d.mm=function(e){return"mm-"+e},d.add("parent"),r.mm=function(e){return e+".mm"},r.add("toggle open close setSelected transitionend webkitTransitionEnd mousedown mouseup touchstart touchmove touchend scroll resize click keydown keyup"),e[a]._c=l,e[a]._d=d,e[a]._e=r,e[a].glbl=c}function i(s,n){if(s.hasClass(l.current))return!1;var t=e("."+l.panel,n),i=t.filter("."+l.current);return t.removeClass(l.highest).removeClass(l.current).not(s).not(i).addClass(l.hidden),s.hasClass(l.opened)?i.addClass(l.highest).removeClass(l.opened).removeClass(l.subopened):(s.addClass(l.highest),i.addClass(l.subopened)),s.removeClass(l.hidden).addClass(l.current),setTimeout(function(){s.removeClass(l.subopened).addClass(l.opened)},25),"open"}var a="mmenu",o="4.3.1";if(!e[a]){var l={},d={},r={},u=!1,c={$wndw:null,$html:null,$body:null};e[a]=function(e,s,n){return this.$menu=e,this.opts=s,this.conf=n,this.vars={},this._init(),this},e[a].uniqueId=0,e[a].prototype={_init:function(){if(this.opts=s(this.opts,this.conf,this.$menu),this._initMenu(),this._initPanels(),this._initLinks(),this._bindCustomEvents(),e[a].addons)for(var n=0;n<e[a].addons.length;n++)"function"==typeof this["_addon_"+e[a].addons[n]]&&this["_addon_"+e[a].addons[n]]()},_bindCustomEvents:function(){var s=this,n=this.$menu.find(this.opts.isMenu&&!this.opts.slidingSubmenus?"ul, ol":"."+l.panel);n.off(r.toggle+" "+r.open+" "+r.close).on(r.toggle+" "+r.open+" "+r.close,function(e){e.stopPropagation()}),this.opts.slidingSubmenus?n.on(r.open,function(){return i(e(this),s.$menu)}):n.on(r.toggle,function(){var s=e(this);return s.triggerHandler(s.parent().hasClass(l.opened)?r.close:r.open)}).on(r.open,function(){return e(this).parent().addClass(l.opened),"open"}).on(r.close,function(){return e(this).parent().removeClass(l.opened),"close"})},_initMenu:function(){this.opts.offCanvas&&this.conf.clone&&(this.$menu=this.$menu.clone(!0),this.$menu.add(this.$menu.find("*")).filter("[id]").each(function(){e(this).attr("id",l.mm(e(this).attr("id")))})),this.$menu.contents().each(function(){3==e(this)[0].nodeType&&e(this).remove()}),this.$menu.parent().addClass(l.wrapper);var s=[l.menu];s.push(l.mm(this.opts.slidingSubmenus?"horizontal":"vertical")),this.opts.classes&&s.push(this.opts.classes),this.opts.isMenu&&s.push(l.ismenu),this.$menu.addClass(s.join(" "))},_initPanels:function(){var s=this;this.__refactorClass(e("."+this.conf.classNames.list,this.$menu),this.conf.classNames.list,"list"),this.opts.isMenu&&e("ul, ol",this.$menu).not(".mm-nolist").addClass(l.list);var n=e("."+l.list+" > li",this.$menu);this.__refactorClass(n,this.conf.classNames.selected,"selected"),this.__refactorClass(n,this.conf.classNames.label,"label"),this.__refactorClass(n,this.conf.classNames.spacer,"spacer"),n.off(r.setSelected).on(r.setSelected,function(s,t){s.stopPropagation(),n.removeClass(l.selected),"boolean"!=typeof t&&(t=!0),t&&e(this).addClass(l.selected)}),this.__refactorClass(e("."+this.conf.classNames.panel,this.$menu),this.conf.classNames.panel,"panel"),this.$menu.children().filter(this.conf.panelNodetype).add(this.$menu.find("."+l.list).children().children().filter(this.conf.panelNodetype)).addClass(l.panel);var t=e("."+l.panel,this.$menu);t.each(function(){var n=e(this),t=n.attr("id")||s.__getUniqueId();n.attr("id",t)}),t.find("."+l.panel).each(function(){var n=e(this),t=n.is("ul, ol")?
730n:n.find("ul ,ol").first(),i=n.parent(),a=i.find("> a, > span"),o=i.closest("."+l.panel);if(n.data(d.parent,i),i.parent().is("."+l.list)){var r=e('<a class="'+l.subopen+'" href="#'+n.attr("id")+'" />').insertBefore(a);a.is("a")||r.addClass(l.fullsubopen),s.opts.slidingSubmenus&&t.prepend('<li class="'+l.subtitle+'"><a class="'+l.subclose+'" href="#'+o.attr("id")+'">'+a.text()+"</a></li>")}});var i=this.opts.slidingSubmenus?r.open:r.toggle;if(t.each(function(){var n=e(this),t=n.attr("id");e('a[href="#'+t+'"]',s.$menu).off(r.click).on(r.click,function(e){e.preventDefault(),n.trigger(i)})}),this.opts.slidingSubmenus){var a=e("."+l.list+" > li."+l.selected,this.$menu);a.parents("li").removeClass(l.selected).end().add(a.parents("li")).each(function(){var s=e(this),n=s.find("> ."+l.panel);n.length&&(s.parents("."+l.panel).addClass(l.subopened),n.addClass(l.opened))}).closest("."+l.panel).addClass(l.opened).parents("."+l.panel).addClass(l.subopened)}else{var a=e("li."+l.selected,this.$menu);a.parents("li").removeClass(l.selected).end().add(a.parents("li")).addClass(l.opened)}var o=t.filter("."+l.opened);o.length||(o=t.first()),o.addClass(l.opened).last().addClass(l.current),this.opts.slidingSubmenus&&t.not(o.last()).addClass(l.hidden).end().find("."+l.panel).appendTo(this.$menu)},_initLinks:function(){var s=this;e("."+l.list+" > li > a",this.$menu).not("."+l.subopen).not("."+l.subclose).not('[rel="external"]').not('[target="_blank"]').off(r.click).on(r.click,function(n){var t=e(this),i=t.attr("href");s.__valueOrFn(s.opts.onClick.setSelected,t)&&t.parent().trigger(r.setSelected);var a=s.__valueOrFn(s.opts.onClick.preventDefault,t,"#"==i.slice(0,1));a&&n.preventDefault(),s.__valueOrFn(s.opts.onClick.blockUI,t,!a)&&c.$html.addClass(l.blocking),s.__valueOrFn(s.opts.onClick.close,t,a)&&s.$menu.triggerHandler(r.close)})},_update:function(e){if(this.updates||(this.updates=[]),"function"==typeof e)this.updates.push(e);else for(var s=0,n=this.updates.length;n>s;s++)this.updates[s].call(this,e)},__valueOrFn:function(e,s,n){return"function"==typeof e?e.call(s[0]):"undefined"==typeof e&&"undefined"!=typeof n?n:e},__refactorClass:function(e,s,n){e.filter("."+s).removeClass(s).addClass(l[n])},__transitionend:function(e,s,n){var t=!1,i=function(){t||s.call(e[0]),t=!0};e.one(r.transitionend,i),e.one(r.webkitTransitionEnd,i),setTimeout(i,1.1*n)},__getUniqueId:function(){return l.mm(e[a].uniqueId++)}},e.fn[a]=function(i,o){return u||t(),i=s(i,o),o=n(o),this.each(function(){var s=e(this);s.data(a)||s.data(a,new e[a](s,i,o))})},e[a].version=o,e[a].defaults={classes:"",slidingSubmenus:!0,onClick:{setSelected:!0}},e[a].configuration={panelNodetype:"ul, ol, div",transitionDuration:400,classNames:{panel:"Panle",list:"List",selected:"Selected",label:"Label",spacer:"Spacer"}},function(){var s=window.document,n=window.navigator.userAgent,t="ontouchstart"in s,i="WebkitOverflowScrolling"in s.documentElement.style,o=function(){return n.indexOf("Android")>=0?2.4>parseFloat(n.slice(n.indexOf("Android")+8)):!1}();e[a].support={touch:t,oldAndroidBrowser:o,overflowscrolling:function(){return t?i?!0:o?!1:!0:!0}()}}(),e[a].debug=function(){},e[a].deprecated=function(e,s){"undefined"!=typeof console&&"undefined"!=typeof console.warn&&console.warn("MMENU: "+e+" is deprecated, use "+s+" instead.")}}}(jQuery);
731/*	
732 * jQuery mmenu offCanvas addon
733 * mmenu.frebsite.nl
734 *	
735 * Copyright (c) Fred Heusschen
736 * www.frebsite.nl
737 */
738!function(e){function o(e){return e}function t(e){return"string"!=typeof e.pageSelector&&(e.pageSelector="> "+e.pageNodetype),e}function n(){u=!0,s=e[r]._c,i=e[r]._d,a=e[r]._e,s.add("offcanvas modal background opening blocker page"),i.add("style"),a.add("opening opened closing closed setPage"),p=e[r].glbl,p.$allMenus=(p.$allMenus||e()).add(this.$menu),p.$wndw.on(a.keydown,function(e){return p.$html.hasClass(s.opened)&&9==e.keyCode?(e.preventDefault(),!1):void 0});var o=0;p.$wndw.on(a.resize,function(e,t){if(t||p.$html.hasClass(s.opened)){var n=p.$wndw.height();(t||n!=o)&&(o=n,p.$page.css("minHeight",n))}})}var s,i,a,p,r="mmenu",l="offCanvas",u=!1;e[r].prototype["_addon_"+l]=function(){if(!this.opts[l])return this;u||n(),this.opts[l]=o(this.opts[l]),this.conf[l]=t(this.conf[l]),this.vars.opened=!1;var e=this.opts[l],i=this.conf[l],a=[s.offcanvas];"left"!=e.position&&a.push(s.mm(e.position)),"back"!=e.zposition&&a.push(s.mm(e.zposition)),this.$menu.addClass(a.join(" ")).parent().removeClass(s.wrapper),this[l+"_initPage"](p.$page),this[l+"_initBlocker"](),this[l+"_initOpenClose"](),this[l+"_bindCustomEvents"](),this.$menu[i.menuInjectMethod+"To"](i.menuWrapperSelector)},e[r].addons=e[r].addons||[],e[r].addons.push(l),e[r].defaults[l]={position:"left",zposition:"back",modal:!1,moveBackgroun
738d:!0},e[r].configuration[l]={pageNodetype:"div",pageSelector:null,menuWrapperSelector:"body",menuInjectMethod:"prepend"},e[r].prototype.open=function(){if(this.vars.opened)return!1;var e=this;return this._openSetup(),setTimeout(function(){e._openFinish()},25),"open"},e[r].prototype._openSetup=function(){p.$allMenus.not(this.$menu).trigger(a.close),p.$page.data(i.style,p.$page.attr("style")||""),p.$wndw.trigger(a.resize,[!0]);var e=[s.opened];this.opts[l].modal&&e.push(s.modal),this.opts[l].moveBackground&&e.push(s.background),"left"!=this.opts[l].position&&e.push(s.mm(this.opts[l].position)),"back"!=this.opts[l].zposition&&e.push(s.mm(this.opts[l].zposition)),this.opts.classes&&e.push(this.opts.classes),p.$html.addClass(e.join(" ")),this.$menu.addClass(s.current+" "+s.opened)},e[r].prototype._openFinish=function(){var e=this;this.__transitionend(p.$page,function(){e.$menu.trigger(a.opened)},this.conf.transitionDuration),this.vars.opened=!0,p.$html.addClass(s.opening),this.$menu.trigger(a.opening)},e[r].prototype.close=function(){if(!this.vars.opened)return!1;var e=this;return this.__transitionend(p.$page,function(){e.$menu.removeClass(s.current).removeClass(s.opened),p.$html.removeClass(s.opened).removeClass(s.modal).removeClass(s.background).removeClass(s.mm(e.opts[l].position)).removeClass(s.mm(e.opts[l].zposition)),e.opts.classes&&p.$html.removeClass(e.opts.classes),p.$page.attr("style",p.$page.data(i.style)),e.vars.opened=!1,e.$menu.trigger(a.closed)},this.conf.transitionDuration),p.$html.removeClass(s.opening),this.$menu.trigger(a.closing),"close"},e[r].prototype[l+"_initBlocker"]=function(){var o=this;p.$blck||(p.$blck=e('<div id="'+s.blocker+'" />').appendTo(p.$body)),p.$blck.off(a.touchstart).on(a.touchstart,function(e){e.preventDefault(),e.stopPropagation(),p.$blck.trigger(a.mousedown)}).on(a.mousedown,function(e){e.preventDefault(),p.$html.hasClass(s.modal)||o.close()})},e[r].prototype[l+"_initPage"]=function(o){o||(o=e(this.conf[l].pageSelector,p.$body),o.length>1&&(e[r].debug("Multiple nodes found for the page-node, all nodes are wrapped in one <"+this.conf[l].pageNodetype+">."),o=o.wrapAll("<"+this.conf[l].pageNodetype+" />").parent())),o.addClass(s.page),p.$page=o},e[r].prototype[l+"_initOpenClose"]=function(){var o=this,t=this.$menu.attr("id");t&&t.length&&(this.conf.clone&&(t=s.umm(t)),e('a[href="#'+t+'"]').off(a.click).on(a.click,function(e){e.preventDefault(),o.open()}));var t=p.$page.attr("id");t&&t.length&&e('a[href="#'+t+'"]').on(a.click,function(e){e.preventDefault(),o.close()})},e[r].prototype[l+"_bindCustomEvents"]=function(){var e=this,o=a.open+" "+a.opening+" "+a.opened+" "+a.close+" "+a.closing+" "+a.closed+" "+a.setPage;this.$menu.off(o).on(o,function(e){e.stopPropagation()}),this.$menu.on(a.open,function(){e.open()}).on(a.close,function(){e.close()}).on(a.setPage,function(o,t){e[l+"_initPage"](t),e[l+"_initOpenClose"]()})}}(jQuery);

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.