PageSourceSearch

https://www.hotelflamingo.it/wp-content/themes/my-dms-hotel/sectio…/js/jquery.mb.vimeo_player.js?ver=08afd1

js hotelflamingo.it collected 2026-10-04 13:26:48 UTC 50,778 bytes, 1,114 lines download raw bytes

1/* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2 jquery.mb.components
3 
4 file: jquery.mb.vimeo_player.src.js
5 last modified: 10/25/18 8:00 PM
6 Version:  1.1.9
7 Build:  546
8 
9 Open Lab s.r.l., Florence - Italy
10 email:  [email protected]
11 blog: 	http://pupunzi.open-lab.com
12 site: 	http://pupunzi.com
13 	http://open-lab.com
14 
15 Licences: MIT, GPL
16 http://www.opensource.org/licenses/mit-license.php
17 http://www.gnu.org/licenses/gpl.html
18 
19 Copyright (c) 2001-2018. Matteo Bicocchi (Pupunzi)
20 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */
21
22
23var get_vimeo_videoID = function (url) {
24
25	var videoID
26	if (url.indexOf('vimeo.com') > 0) {
27		videoID = url.substr(url.lastIndexOf('/') + 1, url.length)
28	} else {
29		videoID = url.length > 15 ? null : url
30	}
31
32	return videoID
33};
34
35
36(function ($) {
37	jQuery.vimeo_player = {
38		name    : 'jquery.mb.vimeo_player',
39		author  : 'Matteo Bicocchi (pupunzi)',
40		version : '1.1.9',
41		build   : '546',
42		defaults: {
43			containment        : 'body',
44			ratio              : 16 / 9, // "16/9" or "4/3"
45			videoURL           : null,
46			startAt            : 0,
47			stopAt             : 0,
48			autoPlay           : true,
49			fadeTime           : 1000,
50			vol                : 5, // 1 to 10
51			addRaster          : false,
52			opacity            : 1,
53			mute               : true,
54			loop               : true,
55			showControls       : true,
56			show_vimeo_logo    : true,
57			stopMovieOnBlur    : true,
58			realfullscreen     : true,
59			playOnMobile       : true,
60			mobileFallbackImage: null,
61			gaTrack            : false,
62			optimizeDisplay    : true,
63			mask               : false,
64			align              : 'center,center', // top,bottom,left,right
65			onReady            : function (player) {
66			}
67		},
68		/**
69		 *  @fontface icons
70		 *  */
71		controls: {
72			play      : 'P',
73			pause     : 'p',
74			mute      : 'M',
75			unmute    : 'A',
76			fullscreen: 'O',
77			showSite  : 'R',
78			logo      : 'V'
79		},
80
81		/**
82		 *
83		 */
84		buildPlayer: function (options) {
85			//console.time("Vimeo_start")
86			var isIframe = function () {
87				var isIfr = false
88				try {
89					if (self.location.href != top.location.href) isIfr = true
90				} catch (e) {
91					isIfr = true
92				}
93				return isIfr
94			}
95
96			var script = document.createElement('script')
97			script.src = '//player.vimeo.com/api/player.js'
98			script.onload = function () {
99				jQuery(document).trigger('vimeo_api_loaded')
100			}
101			document.head.appendChild(script)
102
103			return this.each(function () {
104
105				var vimeo_player = this
106				var $vimeo_player = jQuery(vimeo_player)
107				vimeo_player.loop = 0
108				vimeo_player.opt = {}
109				vimeo_player.state = {}
110				vimeo_player.id = vimeo_player.id || 'YTP_' + new Date().getTime()
111				$vimeo_player.addClass('vimeo_player')
112
113				var property = $vimeo_player.data('property') && typeof $vimeo_player.data('property') == 'string' ? eval('(' + $vimeo_player.data('property') + ')') : $vimeo_player.data('property')
114
115				jQuery.extend(vimeo_player.opt, jQuery.vimeo_player.defaults, options, property)
116				vimeo_player.opt.ratio = vimeo_player.opt.ratio == 'auto' ? 16 / 9 : vimeo_player.opt.ratio
117
118				if (eval(vimeo_player.opt.loop))
119					vimeo_player.opt.loop = 9999
120
121				vimeo_player.isRetina = (window.retina || window.devicePixelRatio > 1)
122
123				vimeo_player.canGoFullScreen = !(jQuery.browser.msie || jQuery.browser.opera || isIframe())
124				if (!vimeo_player.canGoFullScreen) vimeo_player.opt.realfullscreen = false
125
126				vimeo_player.isAlone = false
127				vimeo_player.hasFocus = true
128
129				vimeo_player.videoID = this.opt.videoURL ? get_vimeo_videoID(this.opt.videoURL) : $vimeo_player.attr('href') ? get_vimeo_videoID($vimeo_player.attr('href')) : false
130				vimeo_player.isSelf = vimeo_player.opt.containment == 'self'
131
132				vimeo_player.opt.containment = vimeo_player.opt.containment == 'self' ? jQuery(this) : jQuery(vimeo_player.opt.containment)
133				vimeo_player.opt.vol = vimeo_player.opt.vol / 10
134
135				vimeo_player.isBackground = vimeo_player.opt.containment.is('body')
136
137				if (vimeo_player.isBackground && vimeo_player.backgroundIsInited)
138					return
139
140				vimeo_player.playOnMobile = (vimeo_player.opt.playOnMobile && jQuery.browser.mobile)
141
142				if (!vimeo_player.isSelf) {
143					$vimeo_player.hide()
144				}
145
146				var overlay = jQuery('<div/>').css({
147					position: 'absolute',
148					top     : 0,
149					left    : 0,
150					width   : '100%',
151					height  : '100%'
152				}).addClass('vimeo_player_overlay')
153
154				if (vimeo_player.isSelf) {
155					overlay.on('click', function () {
156						$vimeo_player.togglePlay()
157					})
158				}
159
160				var playerID = 'vimeo_player_' + vimeo_player.id
161
162				var wrapper = jQuery('<div/>').addClass('vimeo_player_wrapper').attr('id', 'vimeo_player_wrapper_' + playerID)
163				wrapper.css({
164					position: 'absolute',
165					zIndex  : 0,
166					width   : '100%',
167					height  : '100%',
168					left    : 0,
169					top     : 0,
170					overflow: 'hidden',
171					opacity : 0
172				})
173
174				vimeo_player.wrapper = wrapper
175				vimeo_player.opt.containment.prepend(wrapper)
176
177				if (vimeo_player.opt.mobileFallbackImage && jQuery.browser.mobile) {
178
179					wrapper.css({
180						backgroundImage   : 'url(' + vimeo_player.opt.mobileFallbackImage + ')',
181						backgroundPosition: 'center center',
182						backgroundSize    : 'cover',
183						backgroundRepeat  : 'no-repeat',
184						opacity           : 1
185					})
186
187					setTimeout(function () {
188						var VEvent = jQuery.Event('VPFallback')
189						$vimeo_player.trigger(VEvent)
190					}, 1000)
191
192					$vimeo_player.hide()
193					return $vimeo_player
194				}
195
196				vimeo_player.opt.containment.children().not('script, style').each(function () {
197					if (jQuery(this).css('position') == 'static') jQuery(this).css('position', 'relative')
198				})
199
200				if (vimeo_player.isBackground) {
201					jQuery('body').css({
202						boxSizing: 'border-box'
203					})
204
205					wrapper.css({
206						position: 'fixed',
207						top     : 0,
208						left    : 0,
209						zIndex  : 0
210					})
211
212				} else
213					if (vimeo_player.opt.containment.css('position') == 'static')
214						vimeo_player.opt.containment.css({
215							position: 'relative'
216						})
217
218				vimeo_player.videoWrapper = wrapper
219				vimeo_player.overlay = overlay
220
221				if (!vimeo_player.isBackground) {
222					overlay.on('mouseenter', function () {
223						if (vimeo_player.controlBar && vimeo_player.controlBar.length)
224							vimeo_player.controlBar.addClass('visible')
225					}).on('mouseleave', function () {
226						if (vimeo_player.controlBar && vimeo_player.controlBar.length)
227							vimeo_player.controlBar.removeClass('visible')
228					})
229				}
230
231				jQuery(document).on('vimeo_api_loaded', function () {
232
233					var vURL = '//player.vimeo.com/video/' + vimeo_player.videoID
234					//vimeo_player.opt.videoURL
235					var options = {
236						id        : vURL,
237						muted     : vimeo_player.opt.mute ? 1 : 0,
238						background: 1,
239						autoplay  : vimeo_player.playOnMobile ? 1 : 0
240					}
241
242					// console.debug(options);
243
244					vimeo_player.player = new Vimeo.Player(vimeo_player.videoWrapper.get(0).id, options)
245					vimeo_player.player.ready().then(function () {
246						vimeo_player.playerBox = vimeo_player.videoWrapper.find('iframe')
247						vimeo_player.playerBox.after(overlay)
248
249						var VEvent
250
251						function start()
252						{
253							vimeo_player.isReady = true
254							if (vimeo_player.opt.mute) {
255								setTimeout(function () {
256									$vimeo_player.v_mute()
257								}, 1)
258							}
259
260							if (vimeo_player.opt.showControls)
261								jQuery.vimeo_player.buildControls(vimeo_player)
262
263							if (vimeo_player.opt.autoPlay) {
264								if (!vimeo_player.playOnMobile) {
265									setTimeout(function () {
266										vimeo_player.player.pause()
267										$vimeo_player.v_play()
268										VEvent = jQuery.Event('VPStart')
269										$vimeo_player.trigger(VEvent)
270										$vimeo_player.v_optimize_display()
271									}, vimeo_player.opt.fadeTime)
272								} else {
273									setTimeout(function () {
274										VEvent = jQuery.Event('VPStart')
275										$vimeo_player.trigger(VEvent)
276										vimeo_player.videoWrapper.fadeTo(vimeo_player.opt.fadeTime, vimeo_player.opt.opacity)
277									}, 1000)
278								}
279							} else {
280								$vimeo_player.v_pause()
281							}
282
283
284							VEvent = jQuery.Event('VPReady')
285							VEvent.opt = vimeo_player.opt
286							$vimeo_player.trigger(VEvent)
287
288							if (typeof vimeo_player.opt.onReady == 'function')
289								vimeo_player.opt.onReady(vimeo_player)
290
291							$vimeo_player.v_optimize_display()
292						}
293
294						if (vimeo_player.opt.startAt) {
295							vimeo_player.player.play().then(function () {
296								vimeo_player.player.pause()
297							})
298							$vimeo_player.v_seekTo(vimeo_player.opt.startAt, function () {
299								start()
300							})
301						} else {
302							start()
303						}
304
305						jQuery(window).off('resize.vimeo_player_' + vimeo_player.id).on('resize.vimeo_player_' + vimeo_player.id, function () {
306							clearTimeout(vimeo_player.optimizeD)
307							vimeo_player.optimizeD = setTimeout(function () {
308								$vimeo_player.v_optimize_display()
309							}, 250)
310						})
311
312						//PROGRESS
313						vimeo_player.player.on('progress', function (data) {
314							VEvent = jQuery.Event('VPProgress')
315							VEvent.data = data
316							$vimeo_player.trigger(VEvent)
317
318						})
319
320						//ERROR
321						vimeo_player.player.on('error', function (data) {
322							vimeo_player.state = -1
323							//console.debug( "error:: ", data );
324							// Trigger state events
325							VEvent = jQuery.Event('VPError')
326							VEvent.error = data
327							$vimeo_player.trigger(VEvent)
328						})
329
330						//PLAY
331						vimeo_player.player.on('play', function (data) {
332							vimeo_player.state = 1
333							$vimeo_player.trigger('change_state')
334
335							if (vimeo_player.controlBar && vimeo_player.controlBar.length)
336								vimeo_player.controlBar.find('.vimeo_player_pause').html(jQuery.vimeo_player.controls.pause)
337
338							if (typeof _gaq != 'undefined' && eval(vimeo_player.opt.gaTrack)) _gaq.push(['_trackEvent', 'vimeo_player', 'Play', vimeo_player.videoID])
339							if (typeof ga != 'undefined' && eval(vimeo_player.opt.gaTrack)) ga('send', 'event', 'vimeo_player', 'play', vimeo_player.videoID)
340
341							// Trigger state events
342							VEvent = jQuery.Event('VPPlay')
343							VEvent.error = data
344							$vimeo_player.trigger(VEvent)
345
346
347							//Add raster image
348							if (vimeo_player.opt.addRaster) {
349								var classN = vimeo_player.opt.addRaster == 'dot' ? 'raster-dot' : 'raster'
350								vimeo_player.overlay.addClass(vimeo_player.isRetina ? classN + ' retina' : classN)
351							} else {
352								vimeo_player.overlay.removeClass(function (index, classNames) {
353									// change the list into an array
354									var current_classes = classNames.split(' '),
355									  // array of classes which are to be removed
356									  classes_to_remove = []
357									jQuery.each(current_classes, function (index, class_name) {
358										// if the classname begins with bg add it to the classes_to_remove array
359										if (/raster.*/.test(class_name)) {
360											classes_to_remove.push(class_name)
361										}
362									})
363									classes_to_remove.push('retina')
364									// turn the array back into a string
365									return classes_to_remove.join(' ')
366								})
367							}
368
369						})
370
371						//PAUSE
372						vimeo_player.player.on('pause', function (data) {
373							vimeo_player.state = 2
374							$vimeo_player.trigger('change_state')
375
376							if (vimeo_player.controlBar && vimeo_player.controlBar.length)
377								vimeo_player.controlBar.find('.vimeo_player_pause').html(jQuery.vimeo_player.controls.play)
378
379							VEvent = jQuery.Event('VPPause')
380							VEvent.time = data
381							$vimeo_player.trigger(VEvent)
382
383						})
384
385						//SEEKED
386						vimeo_player.player.on('seeked', function (data) {
387							vimeo_player.state = 3
388							$vimeo_player.trigger('change_state')
389						})
390
391						//ENDED
392						vimeo_player.player.on('ended', function (data) {
393							vimeo_player.state = 0
394							$vimeo_player.trigger('change_state')
395
396							VEvent = jQuery.Event('VPEnd')
397							VEvent.time = data
398							$vimeo_player.trigger(VEvent)
399
400						})
401
402						//TIME UPDATE
403						vimeo_player.player.on('timeupdate', function (data) {
404
405							vimeo_player.duration = data.duration
406							vimeo_player.percent = data.percent
407							vimeo_player.seconds = data.seconds
408
409							vimeo_player.state = 1
410							vimeo_player.player.getPaused().then(function (paused) {
411								if (paused)
412									vimeo_player.state = 2
413							})
414
415							if (vimeo_player.opt.stopMovieOnBlur) {
416								if (!document.hasFocus()) {
417									if (vimeo_player.state == 1) {
418										vimeo_player.hasFocus = false
419										$vimeo_player.v_pause()
420										vimeo_player.document_focus = setInterval(function () {
421											if (document.hasFocus() && !vimeo_player.hasFocus) {
422												vimeo_player.hasFocus = true
423												$vimeo_player.v_play()
424												clearInterval(vimeo_player.document_focus)
425											}
426										}, 300)
427									}
428								}
429							}
430
431							if (vimeo_player.opt.showControls) {
432								var controls = jQuery('#controlBar_' + vimeo_player.id)
433								var progressBar = controls.find('.vimeo_player_pogress')
434								var loadedBar = controls.find('.vimeo_player_loaded')
435								var timeBar = controls.find('.vimeo_player_seek_bar')
436								var totW = progressBar.outerWidth()
437								var currentTime = Math.floor(data.seconds)
438								var totalTime = Math.floor(data.duration)
439								var timeW = (currentTime * totW) / totalTime
440								var startLeft = 0
441								var loadedW = data.percent * 100
442								loadedBar.css({
443									left : startLeft,
444									width: loadedW + '%'
445								})
446								timeBar.css({
447									left : 0,
448									width: timeW
449								})
450
451								if (data.duration) {
452									vimeo_player.controlBar.find('.vimeo_player_time').html(jQuery.vimeo_player.formatTime(
452data.seconds) + ' / ' + jQuery.vimeo_player.formatTime(data.duration))
453								} else {
454									vimeo_player.controlBar.find('.vimeo_player_time').html('-- : -- / -- : --')
455								}
456							}
457
458							vimeo_player.opt.stopAt = vimeo_player.opt.stopAt > data.duration ? data.duration - 0.5 : vimeo_player.opt.stopAt
459							var end_time = vimeo_player.opt.stopAt || data.duration - 0.5
460
461							if (data.seconds >= end_time) {
462
463								vimeo_player.loop = vimeo_player.loop || 0
464
465								if (vimeo_player.opt.loop && vimeo_player.loop < vimeo_player.opt.loop) {
466									$vimeo_player.v_seekTo(vimeo_player.opt.startAt)
467									vimeo_player.loop++
468
469								} else {
470									$vimeo_player.v_pause()
471									vimeo_player.state = 0
472									$vimeo_player.trigger('change_state')
473								}
474							}
475
476							// Trigger state events
477							VEvent = jQuery.Event('VPTime')
478							VEvent.time = data.seconds
479							$vimeo_player.trigger(VEvent)
480
481						})
482					})
483
484					$vimeo_player.on('change_state', function () {
485						if (vimeo_player.state == 0)
486							vimeo_player.videoWrapper.fadeOut(vimeo_player.opt.fadeTime, function () {
487								$vimeo_player.v_seekTo(0)
488							})
489					})
490				})
491			})
492		},
493		/**
494		 *
495		 * @param s
496		 * @returns {string}
497		 */
498		formatTime : function (s) {
499			var min = Math.floor(s / 60)
500			var sec = Math.floor(s - (60 * min))
501			return (min <= 9 ? '0' + min : min) + ' : ' + (sec <= 9 ? '0' + sec : sec)
502		},
503
504		play: function () {
505			var vimeo_player = this.get(0)
506			if (!vimeo_player.isReady)
507				return this
508
509			vimeo_player.player.pause()
510			vimeo_player.player.play()
511			setTimeout(function () {
512				vimeo_player.videoWrapper.fadeTo(vimeo_player.opt.fadeTime, vimeo_player.opt.opacity)
513				//console.timeEnd("Vimeo_start");
514			}, 1000)
515
516			var controls = jQuery('#controlBar_' + vimeo_player.id)
517
518			if (controls.length) {
519				var playBtn = controls.find('.mb_YTPPvimeo_player_playpause')
520				playBtn.html(jQuery.vimeo_player.controls.pause)
521			}
522			vimeo_player.state = 1
523
524			jQuery(vimeo_player).css('background-image', 'none')
525			return this
526		},
527
528		togglePlay: function (callback) {
529			var vimeo_player = this.get(0)
530			if (vimeo_player.state == 1)
531				this.v_pause()
532			else
533				this.v_play()
534
535			if (typeof callback == 'function')
536				callback(vimeo_player.state)
537
538			return this
539		},
540
541		pause: function () {
542			var vimeo_player = this.get(0)
543			vimeo_player.player.pause()
544			vimeo_player.state = 2
545			return this
546		},
547
548		seekTo: function (val, callback) {
549			var vimeo_player = this.get(0)
550
551			var seekTo = vimeo_player.opt.stopAt && (val >= vimeo_player.opt.stopAt) ? vimeo_player.opt.stopAt - 0.5 : val
552
553			vimeo_player.player.setCurrentTime(seekTo).then(function (data) {
554				if (typeof callback == 'function')
555					callback(data)
556			})
557			return this
558		},
559
560		setVolume: function (val) {
561			var vimeo_player = this.get(0)
562			vimeo_player.isMute = false
563			vimeo_player.opt.vol = val || vimeo_player.opt.vol
564			vimeo_player.player.setVolume(vimeo_player.opt.vol)
565
566			if (vimeo_player.volumeBar && vimeo_player.volumeBar.length)
567				vimeo_player.volumeBar.updateSliderVal(val * 100)
568			return this
569		},
570
571		toggleVolume: function () {
572			var vimeo_player = this.get(0)
573			if (!vimeo_player) return
574
575			if (vimeo_player.isMute) {
576				jQuery(vimeo_player).v_unmute()
577				return true
578			} else {
579				jQuery(vimeo_player).v_mute()
580				return false
581			}
582		},
583
584		mute: function () {
585			var vimeo_player = this.get(0)
586
587			if (vimeo_player.isMute)
588				return this
589
590			if (vimeo_player.playOnMobile) {
591				//vimeo_player.player.toggleMute()
592			}
593
594			vimeo_player.isMute = true
595			vimeo_player.player.setVolume(0)
596
597			if (vimeo_player.volumeBar && vimeo_player.volumeBar.length && vimeo_player.volumeBar.width() > 10) {
598				vimeo_player.volumeBar.updateSliderVal(0)
599			}
600
601			var controls = jQuery('#controlBar_' + vimeo_player.id)
602			var muteBtn = controls.find('.vimeo_player_muteUnmute')
603			muteBtn.html(jQuery.vimeo_player.controls.unmute)
604
605			jQuery(vimeo_player).addClass('isMuted')
606
607			if (vimeo_player.volumeBar && vimeo_player.volumeBar.length)
608				vimeo_player.volumeBar.addClass('muted')
609
610			return this
611		},
612
613		unmute       : function () {
614			var vimeo_player = this.get(0)
615
616			if (!vimeo_player.isMute)
617				return
618
619			vimeo_player.isMute = false
620
621			if (vimeo_player.playOnMobile) {
622				//vimeo_player.player.toggleMute()
623			}
624
625			jQuery(vimeo_player).v_set_volume(vimeo_player.opt.vol)
626			if (vimeo_player.volumeBar && vimeo_player.volumeBar.length) vimeo_player.volumeBar.updateSliderVal(vimeo_player.opt.vol > .1 ? vimeo_player.opt.vol : .1)
627			var controls = jQuery('#controlBar_' + vimeo_player.id)
628			var muteBtn = controls.find('.vimeo_player_muteUnmute')
629			muteBtn.html(jQuery.vimeo_player.controls.mute)
630			jQuery(vimeo_player).removeClass('isMuted')
631			if (vimeo_player.volumeBar && vimeo_player.volumeBar.length)
632				vimeo_player.volumeBar.removeClass('muted')
633
634			return this
635		},
636		/**
637		 * playerDestroy
638		 * @returns {jQuery.mbYTPlayer}
639		 */
640		playerDestroy: function () {
641			var vimeo_player = this.get(0)
642			if (!vimeo_player.isReady)
643				return this
644
645			vimeo_player.player.destroy().then(function () {
646				// the player was destroyed
647				vimeo_player.loop = 0
648				vimeo_player.opt = {}
649				vimeo_player.state = {}
650				vimeo_player.wrapper.remove()
651				jQuery('#controlBar_' + vimeo_player.id).remove()
652				clearInterval(vimeo_player.document_focus)
653
654			}).catch(function (error) {
655				// an error occurred
656				console.error('Vimeo_player could not be destroyed. The error is: ' + error)
657			})
658
659			return this
660		},
661
662		changeMovie: function (obj) {
663			var $vimeo_player = this
664			var vimeo_player = $vimeo_player.get(0)
665			vimeo_player.opt.startAt = 0
666			vimeo_player.opt.stopAt = 0
667			vimeo_player.opt.mask = false
668			vimeo_player.opt.mute = true
669			vimeo_player.hasData = false
670			vimeo_player.hasChanged = true
671			vimeo_player.player.loopTime = undefined
672
673			if (obj)
674				jQuery.extend(vimeo_player.opt, obj)
675
676			if (vimeo_player.opt.loop == 'true')
677				vimeo_player.opt.loop = 9999
678
679			vimeo_player.player.loadVideo(obj.videoURL).then(function (id) {
680				$vimeo_player.v_optimize_display()
681				jQuery(vimeo_player).v_play()
682				if (vimeo_player.opt.startAt)
683					$vimeo_player.v_seekTo(vimeo_player.opt.startAt)
684			})
685		},
686
687		buildControls: function (vimeo_player) {
688			var data = vimeo_player.opt
689
690			if (jQuery('#controlBar_' + vimeo_player.id).length)
691				return
692
693			vimeo_player.controlBar = jQuery('<span/>').attr('id', 'controlBar_' + vimeo_player.id).addClass('vimeo_player_bar').css({
694				whiteSpace: 'noWrap',
695				position  : vimeo_player.isBackground ? 'fixed' : 'absolute',
696				zIndex    : vimeo_player.isBackground ? 10000 : 1000
697			})
698			var buttonBar = jQuery('<div/>').addClass('buttonBar')
699			/* play/pause button*/
700			var playpause = jQuery('<span>' + jQuery.vimeo_player.controls.play + '</span>').addClass('vimeo_player_pause vimeo_icon').click(function () {
701				if (vimeo_player.state == 1) jQuery(vimeo_player).v_pause()
702				else jQuery(vimeo_player).v_play()
703			})
704			/* mute/unmute button*/
705			var MuteUnmute = jQuery('<span>' + jQuery.vimeo_player.controls.mute + '</span>').addClass('vimeo_player_muteUnmute vimeo_icon').click(function () {
706
707				if (vimeo_player.isMute) {
708					jQuery(vimeo_player).v_unmute()
709				} else {
710					jQuery(vimeo_player).v_mute()
711				}
712			})
713			/* volume bar*/
714			var volumeBar = jQuery('<div/>').addClass('vimeo_player_volume_bar').css({
715				display: 'inline-block'
716			})
717			vimeo_player.volumeBar = volumeBar
718			/* time elapsed */
719			var idx = jQuery('<span/>').addClass('vimeo_player_time')
720			var vURL = 'https://vimeo.com/' + vimeo_player.videoID
721
722			var movieUrl = jQuery('<span/>').html(jQuery.vimeo_player.controls.logo).addClass('vimeo_url vimeo_icon').attr('title', 'view on Vimeo').on('click', function () {
723				window.open(vURL, 'viewOnVimeo')
724			})
725
726			var fullscreen = jQuery('<span/>').html(jQuery.vimeo_player.controls.fullscreen).addClass('vimeo_fullscreen vimeo_icon').on('click', function () {
727				jQuery(vimeo_player).v_fullscreen(data.realfullscreen)
728			})
729			var progressBar = jQuery('<div/>').addClass('vimeo_player_pogress').css('position', 'absolute').click(function (e) {
730				timeBar.css({
731					width: (e.clientX - timeBar.offset().left)
732				})
733
734				vimeo_player.timeW = e.clientX - timeBar.offset().left
735
736				vimeo_player.controlBar.find('.vimeo_player_loaded').css({
737					width: 0
738				})
739				var totalTime = Math.floor(vimeo_player.duration)
740				vimeo_player.goto = (timeBar.outerWidth() * totalTime) / progressBar.outerWidth()
741
742				jQuery(vimeo_player).v_seekTo(parseFloat(vimeo_player.goto))
743
744				vimeo_player.controlBar.find('.vimeo_player_loaded').css({
745					width: 0
746				})
747			})
748
749			var loadedBar = jQuery('<div/>').addClass('vimeo_player_loaded').css('position', 'absolute')
750			var timeBar = jQuery('<div/>').addClass('vimeo_player_seek_bar').css('position', 'absolute')
751			progressBar.append(loadedBar).append(timeBar)
752			buttonBar.append(playpause).append(MuteUnmute).append(volumeBar).append(idx)
753			if (data.show_vimeo_logo) {
754				buttonBar.append(movieUrl)
755			}
756			if (vimeo_player.isBackground || (eval(vimeo_player.opt.realfullscreen) && !vimeo_player.isBackground)) buttonBar.append(fullscreen)
757			vimeo_player.controlBar.append(buttonBar).append(progressBar)
758			if (!vimeo_player.isBackground) {
759				//vimeo_player.controlBar.addClass( "inline_vimeo_player" );
760				vimeo_player.videoWrapper.before(vimeo_player.controlBar)
761			} else {
762				jQuery('body').after(vimeo_player.controlBar)
763			}
764
765			volumeBar.simpleSlider({
766				initialval : vimeo_player.opt.vol,
767				scale      : 100,
768				orientation: 'h',
769				callback   : function (el) {
770					if (el.value == 0) {
771						jQuery(vimeo_player).v_mute()
772					} else {
773						jQuery(vimeo_player).v_unmute()
774					}
775					vimeo_player.player.setVolume(el.value / 100)
776
777					if (!vimeo_player.isMute)
778						vimeo_player.opt.vol = el.value
779				}
780			})
781		},
782
783		optimizeVimeoDisplay: function (align) {
784			var vimeo_player = this.get(0)
785			var vid = {}
786
787			vimeo_player.opt.align = align || vimeo_player.opt.align
788
789			vimeo_player.opt.align = typeof vimeo_player.opt.align != 'undefined ' ? vimeo_player.opt.align : 'center,center'
790			var VimeoAlign = vimeo_player.opt.align.split(',')
791
792			if (vimeo_player.opt.optimizeDisplay) {
793
794				var win = {}
795				var el = vimeo_player.videoWrapper
796				var abundance = vimeo_player.isPlayer ? 0 : el.outerHeight() * .15
797
798				win.width = el.outerWidth() + abundance
799				win.height = el.outerHeight() + abundance
800
801				vimeo_player.opt.ratio = eval(vimeo_player.opt.ratio)
802
803				vid.width = win.width
804				vid.height = Math.ceil(vid.width / vimeo_player.opt.ratio)
805
806				vid.marginTop = Math.ceil(-((vid.height - win.height) / 2))
807				vid.marginLeft = 0
808
809				vimeo_player.playerBox.css({
810					top        : 0,
811					opacity    : 0,
812					width      : 100,
813					height     : Math.ceil(100 / vimeo_player.opt.ratio),
814					marginTop  : 0,
815					marginLeft : 0,
816					frameBorder: 0
817				})
818
819				var lowest = vid.height < win.height
820
821				if (lowest) {
822					vid.height = win.height
823					vid.width = Math.ceil(vid.height * vimeo_player.opt.ratio)
824					vid.marginTop = 0
825					vid.marginLeft = Math.ceil(-((vid.width - win.width) / 2))
826				}
827
828				for (var a in VimeoAlign) {
829
830					if (VimeoAlign.hasOwnProperty(a)) {
831						var al = VimeoAlign[a].replace(/ /g, '')
832						switch (al) {
833							case 'top':
834								vid.marginTop = lowest ? -((vid.height - win.height) / 2) : 0
835								break
836							case 'bottom':
837								vid.marginTop = lowest ? 0 : -(vid.height - win.height)
838								break
839							case 'left':
840								vid.marginLeft = 0
841								break
842							case 'right':
843								vid.marginLeft = lowest ? -(vid.width - win.width) : 0
844								break
845							default:
846								if (vid.width > win.width)
847									vid.marginLeft = -((vid.width - win.width) / 2)
848								break
849						}
850					}
851				}
852			} else {
853				vid.width = '100%'
854				vid.height = '100%'
855				vid.marginTop = 0
856				vid.marginLeft = 0
857			}
858			setTimeout(function () {
859				vimeo_player.playerBox.css({
860					opacity   : 1,
861					width     : vid.width,
862					height    : vid.height,
863					marginTop : vid.marginTop,
864					marginLeft: vid.marginLeft,
865					maxWidth  : 'initial'
866				})
867			}, 10)
868		},
869
870		/**
871		 *
872		 * @param align
873		 */
874		setAlign: function (align) {
875			var $vimeo_player = this
876			$vimeo_player.v_optimize_display(align)
877		},
878
879		/**
880		 *
881		 */
882		getAlign: function () {
883			var vimeo_player = this.get(0)
884			return vimeo_player.opt.align
885		},
886
887		/**
888		 *
889		 * @param real
890		 * @returns {jQuery.vimeo_player}
891		 */
892		fullscreen: function (real) {
893			var vimeo_player = this.get(0)
894			var $vimeo_player = jQuery(vimeo_player)
895			var VEvent
896
897			if (typeof real == 'undefined') real = vimeo_player.opt.realfullscreen
898			real = eval(real)
899			var controls = jQuery('#controlBar_' + vimeo_player.id)
900			var fullScreenBtn = controls.find('.vimeo_fullscreen')
901			var videoWrapper = vimeo_player.isSelf ? vimeo_player.opt.containment : vimeo_player.videoWrapper
902
903			if (real) {
904				var fullscreenchange = jQuery.browser.mozilla ? 'mozfullscreenchange' : jQuery.browser.webkit ? 'webkitfullscreenchange' : 'fullscreenchange'
905				jQuery(document).off(fullscreenchange).on(fullscreenchange, function () {
906					var isFullScreen = RunPrefixMethod(document, 'IsFullScreen') || RunPrefixMethod(document, 'FullScreen')
907					if (!isFullScreen) {
908						vimeo_player.isAlone = false
909						fullScreenBtn.html(jQuery.vimeo_player.controls.fullscreen)
910						videoWrapper.removeClass('vimeo_player_Fullscreen')
911
912						videoWrapper.fadeTo(vimeo_player.opt.fadeTime, vimeo_player.opt.opacity)
913
914						videoWrapper.css({
915							zIndex: 0
916						})
917
918						if (vimeo_player.isBackground) {
919							jQuery('body').after(controls)
920						} else {
921							vimeo_player.videoWrapper.before(controls)
922						}
923						jQuery(window).resize()
924						// Trigger state events
925						VEvent = jQuery.Event('VPFullScreenEnd')
926						$vimeo_player.trigger(VEvent)
927
928					} else {
929						// Trigger state events
930						VEvent = jQuery.Event('VPFullScreenStart')
931						$vimeo_player.trigger(VEvent)
932					}
933				})
934			}
935			if (!vimeo_player.isAlone) {
936				function hideMouse()
937				{
938					vimeo_player.overlay.css({
939						cursor: 'none'
940					})
941				}
942
943				jQuery(document).on('mousemove.vimeo_player', function (e) {
944					vimeo_player.overlay.css({
945						cursor: 'auto'
946					})
947					clearTimeout(vimeo_player.hideCursor)
948					if (!jQuery(e.target).parents().is('.vimeo_player_bar'))
949						vimeo_player.hideCursor = setTimeout(hideMouse, 3000)
950				})
951
952				hideMouse()
953
954				if (real) {
955					videoWrapper.css({
956						opacity: 0
957					})
958					videoWrapper.addClass('vimeo_player_Fullscreen')
959					launchFullscreen(videoWrapper.get(0))
960					setTimeout(function () {
961						videoWrapper.fadeTo(vimeo_player.opt.fadeTime, 1)
962						vimeo_player.videoWrapper.append(controls)
963						jQuery(vimeo_player).v_optimize_display()
964
965					}, 500)
966				} else videoWrapper.css({
967					zIndex: 10000
968				}).fadeTo(vimeo_player.opt.fadeTime, 1)
969				fullScreenBtn.html(jQuery.vimeo_player.controls.showSite)
970				vimeo_player.isAlone = true
971			} else {
972				jQuery(document).off('mousemove.vimeo_player')
973				clearTimeout(vimeo_player.hideCursor)
974				vimeo_player.overlay.css({
975					cursor: 'auto'
976				})
977				if (real) {
978					cancelFullscreen()
979				} else {
980					videoWrapper.fadeTo(vimeo_player.opt.fadeTime, vimeo_player.opt.opacity).css({
981						zIndex: 0
982					})
983				}
984				fullScreenBtn.html(jQuery.vimeo_player.controls.fullscreen)
985				vimeo_player.isAlone = false
986			}
987
988			function RunPrefixMethod(obj, method)
989			{
990				var pfx = ['webkit', 'moz', 'ms', 'o', '']
991				var p = 0,
992				  m, t
993				while (p < pfx.length && !obj[m]) {
994					m = method
995					if (pfx[p] == '') {
996						m = m.substr(0, 1).toLowerCase() + m.substr(1)
997					}
998					m = pfx[p] + m
999					t = typeof obj[m]
1000					if (t != 'undefined') {
1001						pfx = [pfx[p]]
1002						return (t == 'function' ? obj[m]() : obj[m])
1003					}
1004					p++
1005				}
1006			}
1007
1008			function launchFullscreen(element)
1009			{
1010				RunPrefixMethod(element, 'RequestFullScreen')
1011			}
1012
1013			function cancelFullscreen()
1014			{
1015				if (RunPrefixMethod(document, 'FullScreen') || RunPrefixMethod(document, 'IsFullScreen')) {
1016					RunPrefixMethod(document, 'CancelFullScreen')
1017				}
1018			}
1019
1020			return this
1021		}
1022	}
1023
1024	jQuery.fn.vimeo_player = jQuery.vimeo_player.buildPlayer
1025	jQuery.fn.v_play = jQuery.vimeo_player.play
1026	jQuery.fn.v_toggle_play = jQuery.vimeo_player.togglePlay
1027	jQuery.fn.v_change_movie = jQuery.vimeo_player.changeMovie
1028	jQuery.fn.v_pause = jQuery.vimeo_player.pause
1029	jQuery.fn.v_seekTo = jQuery.vimeo_player.seekTo
1030	jQuery.fn.v_optimize_display = jQuery.vimeo_player.optimizeVimeoDisplay
1031	jQuery.fn.v_set_align = jQuery.vimeo_player.setAlign
1032	jQuery.fn.v_get_align = jQuery.vimeo_player.getAlign
1033	jQuery.fn.v_fullscreen = jQuery.vimeo_player.fullscreen
1034	jQuery.fn.v_mute = jQuery.vimeo_player.mute
1035	jQuery.fn.v_unmute = jQuery.vimeo_player.unmute
1036	jQuery.fn.v_set_volume = jQuery.vimeo_player.setVolume
1037	jQuery.fn.v_toggle_volume = jQuery.vimeo_player.toggleVolume
1038
1039})(jQuery)
1040;/*___________________________________________________________________________________________________________________________________________________
1041 _ jquery.mb.components                                                                                                                             _
1042 _                                                                                                                                                  _
1043 _ file: jquery.mb.browser.min.js                                                                                                                   _
1044 _ last modified: 24/05/17 19.56                                                                                                                    _
1045 _                                                                                                                                                  _
1046 _ Open Lab s.r.l., Florence - Italy                                                                                                                _
1047 _                                                                                                                                                  _
1048 _ email: [email protected]                                                                                                                       _
vendor: 18,582 bytes, lines 1049-1114
1049 _ site: http://pupunzi.com                                                                                                                         _
1050 _       http://open-lab.com                                                                                                                        _
1051 _ blog: http://pupunzi.open-lab.com                                                                                                                _
1052 _ Q&A:  http://jquery.pupunzi.com                                                                                                                  _
1053 _                                                                                                                                                  _
1054 _ Licences: MIT, GPL                                                                                                                               _
1055 _    http://www.opensource.org/licenses/mit-license.php                                                                                            _
1056 _    http://www.gnu.org/licenses/gpl.html                                                                                                          _
1057 _                                                                                                                                                  _
1058 _ Copyright (c) 2001-2017. Matteo Bicocchi (Pupunzi);                                                                                              _
1059 ___________________________________________________________________________________________________________________________________________________*/
1060
1061var nAgt=navigator.userAgent;jQuery.browser=jQuery.browser||{};jQuery.browser.mozilla=!1;jQuery.browser.webkit=!1;jQuery.browser.opera=!1;jQuery.browser.safari=!1;jQuery.browser.chrome=!1;jQuery.browser.androidStock=!1;jQuery.browser.msie=!1;jQuery.browser.edge=!1;jQuery.browser.ua=nAgt;function isTouchSupported(){var a=nAgt.msMaxTouchPoints,e="ontouchstart"in document.createElement("div");return a||e?!0:!1}
1062var getOS=function(){var a={version:"Unknown version",name:"Unknown OS"};-1!=navigator.appVersion.indexOf("Win")&&(a.name="Windows");-1!=navigator.appVersion.indexOf("Mac")&&0>navigator.appVersion.indexOf("Mobile")&&(a.name="Mac");-1!=navigator.appVersion.indexOf("Linux")&&(a.name="Linux");/Mac OS X/.test(nAgt)&&!/Mobile/.test(nAgt)&&(a.version=/Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1],a.version=a.version.replace(/_/g,".").substring(0,5));/Windows/.test(nAgt)&&(a.version="Unknown.Unknown");/Windows NT 5.1/.test(nAgt)&&
1063(a.version="5.1");/Windows NT 6.0/.test(nAgt)&&(a.version="6.0");/Windows NT 6.1/.test(nAgt)&&(a.version="6.1");/Windows NT 6.2/.test(nAgt)&&(a.version="6.2");/Windows NT 10.0/.test(nAgt)&&(a.version="10.0");/Linux/.test(nAgt)&&/Linux/.test(nAgt)&&(a.version="Unknown.Unknown");a.name=a.name.toLowerCase();a.major_version="Unknown";a.minor_version="Unknown";"Unknown.Unknown"!=a.version&&(a.major_version=parseFloat(a.version.split(".")[0]),a.minor_version=parseFloat(a.version.split(".")[1]));return a};
1064jQuery.browser.os=getOS();jQuery.browser.hasTouch=isTouchSupported();jQuery.browser.name=navigator.appName;jQuery.browser.fullVersion=""+parseFloat(navigator.appVersion);jQuery.browser.majorVersion=parseInt(navigator.appVersion,10);var nameOffset,verOffset,ix;
1065if(-1!=(verOffset=nAgt.indexOf("Opera")))jQuery.browser.opera=!0,jQuery.browser.name="Opera",jQuery.browser.fullVersion=nAgt.substring(verOffset+6),-1!=(verOffset=nAgt.indexOf("Version"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8));else if(-1!=(verOffset=nAgt.indexOf("OPR")))jQuery.browser.opera=!0,jQuery.browser.name="Opera",jQuery.browser.fullVersion=nAgt.substring(verOffset+4);else if(-1!=(verOffset=nAgt.indexOf("MSIE")))jQuery.browser.msie=!0,jQuery.browser.name="Microsoft Internet Explorer",
1066		jQuery.browser.fullVersion=nAgt.substring(verOffset+5);else if(-1!=nAgt.indexOf("Trident")){jQuery.browser.msie=!0;jQuery.browser.name="Microsoft Internet Explorer";var start=nAgt.indexOf("rv:")+3,end=start+4;jQuery.browser.fullVersion=nAgt.substring(start,end)}else-1!=(verOffset=nAgt.indexOf("Edge"))?(jQuery.browser.edge=!0,jQuery.browser.name="Microsoft Edge",jQuery.browser.fullVersion=nAgt.substring(verOffset+5)):-1!=(verOffset=nAgt.indexOf("Chrome"))?(jQuery.browser.webkit=!0,jQuery.browser.chrome=
1067		!0,jQuery.browser.name="Chrome",jQuery.browser.fullVersion=nAgt.substring(verOffset+7)):-1<nAgt.indexOf("mozilla/5.0")&&-1<nAgt.indexOf("android ")&&-1<nAgt.indexOf("applewebkit")&&!(-1<nAgt.indexOf("chrome"))?(verOffset=nAgt.indexOf("Chrome"),jQuery.browser.webkit=!0,jQuery.browser.androidStock=!0,jQuery.browser.name="androidStock",jQuery.browser.fullVersion=nAgt.substring(verOffset+7)):-1!=(verOffset=nAgt.indexOf("Safari"))?(jQuery.browser.webkit=!0,jQuery.browser.safari=!0,jQuery.browser.name=
1068		"Safari",jQuery.browser.fullVersion=nAgt.substring(verOffset+7),-1!=(verOffset=nAgt.indexOf("Version"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8))):-1!=(verOffset=nAgt.indexOf("AppleWebkit"))?(jQuery.browser.webkit=!0,jQuery.browser.safari=!0,jQuery.browser.name="Safari",jQuery.browser.fullVersion=nAgt.substring(verOffset+7),-1!=(verOffset=nAgt.indexOf("Version"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8))):-1!=(verOffset=nAgt.indexOf("Firefox"))?(jQuery.browser.mozilla=
1069		!0,jQuery.browser.name="Firefox",jQuery.browser.fullVersion=nAgt.substring(verOffset+8)):(nameOffset=nAgt.lastIndexOf(" ")+1)<(verOffset=nAgt.lastIndexOf("/"))&&(jQuery.browser.name=nAgt.substring(nameOffset,verOffset),jQuery.browser.fullVersion=nAgt.substring(verOffset+1),jQuery.browser.name.toLowerCase()==jQuery.browser.name.toUpperCase()&&(jQuery.browser.name=navigator.appName));
1070-1!=(ix=jQuery.browser.fullVersion.indexOf(";"))&&(jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix));-1!=(ix=jQuery.browser.fullVersion.indexOf(" "))&&(jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix));jQuery.browser.majorVersion=parseInt(""+jQuery.browser.fullVersion,10);isNaN(jQuery.browser.majorVersion)&&(jQuery.browser.fullVersion=""+parseFloat(navigator.appVersion),jQuery.browser.majorVersion=parseInt(navigator.appVersion,10));
1071jQuery.browser.version=jQuery.browser.majorVersion;jQuery.browser.android=/Android/i.test(nAgt);jQuery.browser.blackberry=/BlackBerry|BB|PlayBook/i.test(nAgt);jQuery.browser.ios=/iPhone|iPad|iPod|webOS/i.test(nAgt);jQuery.browser.operaMobile=/Opera Mini/i.test(nAgt);jQuery.browser.windowsMobile=/IEMobile|Windows Phone/i.test(nAgt);jQuery.browser.kindle=/Kindle|Silk/i.test(nAgt);
1072jQuery.browser.mobile=jQuery.browser.android||jQuery.browser.blackberry||jQuery.browser.ios||jQuery.browser.windowsMobile||jQuery.browser.operaMobile||jQuery.browser.kindle;jQuery.isMobile=jQuery.browser.mobile;jQuery.isTablet=jQuery.browser.mobile&&765<jQuery(window).width();jQuery.isAndroidDefault=jQuery.browser.android&&!/chrome/i.test(nAgt);jQuery.mbBrowser=jQuery.browser;
1073jQuery.browser.versionCompare=function(a,e){if("stringstring"!=typeof a+typeof e)return!1;for(var c=a.split("."),d=e.split("."),b=0,f=Math.max(c.length,d.length);b<f;b++){if(c[b]&&!d[b]&&0<parseInt(c[b])||parseInt(c[b])>parseInt(d[b]))return 1;if(d[b]&&!c[b]&&0<parseInt(d[b])||parseInt(c[b])<parseInt(d[b]))return-1}return 0};
1074;/*___________________________________________________________________________________________________________________________________________________
1075 _ jquery.mb.components                                                                                                                             _
1076 _                                                                                                                                                  _
1077 _ file: jquery.mb.simpleSlider.min.js                                                                                                              _
1078 _ last modified: 09/05/17 19.31                                                                                                                    _
1079 _                                                                                                                                                  _
1080 _ Open Lab s.r.l., Florence - Italy                                                                                                                _
1081 _                                                                                                                                                  _
1082 _ email: [email protected]                                                                                                                       _
1083 _ site: http://pupunzi.com                                                                                                                         _
1084 _       http://open-lab.com                                                                                                                        _
1085 _ blog: http://pupunzi.open-lab.com                                                                                                                _
1086 _ Q&A:  http://jquery.pupunzi.com                                                                                                                  _
1087 _                                                                                                                                                  _
1088 _ Licences: MIT, GPL                                                                                                                               _
1089 _    http://www.opensource.org/licenses/mit-license.php                                                                                            _
1090 _    http://www.gnu.org/licenses/gpl.html                                                                                                          _
1091 _                                                                                                                                                  _
1092 _ Copyright (c) 2001-2017. Matteo Bicocchi (Pupunzi);                                                                                              _
1093 ___________________________________________________________________________________________________________________________________________________*/
1094
1095
1096var nAgt=navigator.userAgent;jQuery.browser=jQuery.browser||{};jQuery.browser.mozilla=!1;jQuery.browser.webkit=!1;jQuery.browser.opera=!1;jQuery.browser.safari=!1;jQuery.browser.chrome=!1;jQuery.browser.androidStock=!1;jQuery.browser.msie=!1;jQuery.browser.edge=!1;jQuery.browser.ua=nAgt;function isTouchSupported(){var a=nAgt.msMaxTouchPoints,e="ontouchstart"in document.createElement("div");return a||e?!0:!1}
1097var getOS=function(){var a={version:"Unknown version",name:"Unknown OS"};-1!=navigator.appVersion.indexOf("Win")&&(a.name="Windows");-1!=navigator.appVersion.indexOf("Mac")&&0>navigator.appVersion.indexOf("Mobile")&&(a.name="Mac");-1!=navigator.appVersion.indexOf("Linux")&&(a.name="Linux");/Mac OS X/.test(nAgt)&&!/Mobile/.test(nAgt)&&(a.version=/Mac OS X (10[\.\_\d]+)/.exec(nAgt)[1],a.version=a.version.replace(/_/g,".").substring(0,5));/Windows/.test(nAgt)&&(a.version="Unknown.Unknown");/Windows NT 5.1/.test(nAgt)&&
1098(a.version="5.1");/Windows NT 6.0/.test(nAgt)&&(a.version="6.0");/Windows NT 6.1/.test(nAgt)&&(a.version="6.1");/Windows NT 6.2/.test(nAgt)&&(a.version="6.2");/Windows NT 10.0/.test(nAgt)&&(a.version="10.0");/Linux/.test(nAgt)&&/Linux/.test(nAgt)&&(a.version="Unknown.Unknown");a.name=a.name.toLowerCase();a.major_version="Unknown";a.minor_version="Unknown";"Unknown.Unknown"!=a.version&&(a.major_version=parseFloat(a.version.split(".")[0]),a.minor_version=parseFloat(a.version.split(".")[1]));return a};
1099jQuery.browser.os=getOS();jQuery.browser.hasTouch=isTouchSupported();jQuery.browser.name=navigator.appName;jQuery.browser.fullVersion=""+parseFloat(navigator.appVersion);jQuery.browser.majorVersion=parseInt(navigator.appVersion,10);var nameOffset,verOffset,ix;
1100if(-1!=(verOffset=nAgt.indexOf("Opera")))jQuery.browser.opera=!0,jQuery.browser.name="Opera",jQuery.browser.fullVersion=nAgt.substring(verOffset+6),-1!=(verOffset=nAgt.indexOf("Version"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8));else if(-1!=(verOffset=nAgt.indexOf("OPR")))jQuery.browser.opera=!0,jQuery.browser.name="Opera",jQuery.browser.fullVersion=nAgt.substring(verOffset+4);else if(-1!=(verOffset=nAgt.indexOf("MSIE")))jQuery.browser.msie=!0,jQuery.browser.name="Microsoft Internet Explorer",
1101		jQuery.browser.fullVersion=nAgt.substring(verOffset+5);else if(-1!=nAgt.indexOf("Trident")){jQuery.browser.msie=!0;jQuery.browser.name="Microsoft Internet Explorer";var start=nAgt.indexOf("rv:")+3,end=start+4;jQuery.browser.fullVersion=nAgt.substring(start,end)}else-1!=(verOffset=nAgt.indexOf("Edge"))?(jQuery.browser.edge=!0,jQuery.browser.name="Microsoft Edge",jQuery.browser.fullVersion=nAgt.substring(verOffset+5)):-1!=(verOffset=nAgt.indexOf("Chrome"))?(jQuery.browser.webkit=!0,jQuery.browser.chrome=
1102		!0,jQuery.browser.name="Chrome",jQuery.browser.fullVersion=nAgt.substring(verOffset+7)):-1<nAgt.indexOf("mozilla/5.0")&&-1<nAgt.indexOf("android ")&&-1<nAgt.indexOf("applewebkit")&&!(-1<nAgt.indexOf("chrome"))?(verOffset=nAgt.indexOf("Chrome"),jQuery.browser.webkit=!0,jQuery.browser.androidStock=!0,jQuery.browser.name="androidStock",jQuery.browser.fullVersion=nAgt.substring(verOffset+7)):-1!=(verOffset=nAgt.indexOf("Safari"))?(jQuery.browser.webkit=!0,jQuery.browser.safari=!0,jQuery.browser.name=
1103		"Safari",jQuery.browser.fullVersion=nAgt.substring(verOffset+7),-1!=(verOffset=nAgt.indexOf("Version"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8))):-1!=(verOffset=nAgt.indexOf("AppleWebkit"))?(jQuery.browser.webkit=!0,jQuery.browser.safari=!0,jQuery.browser.name="Safari",jQuery.browser.fullVersion=nAgt.substring(verOffset+7),-1!=(verOffset=nAgt.indexOf("Version"))&&(jQuery.browser.fullVersion=nAgt.substring(verOffset+8))):-1!=(verOffset=nAgt.indexOf("Firefox"))?(jQuery.browser.mozilla=
1104		!0,jQuery.browser.name="Firefox",jQuery.browser.fullVersion=nAgt.substring(verOffset+8)):(nameOffset=nAgt.lastIndexOf(" ")+1)<(verOffset=nAgt.lastIndexOf("/"))&&(jQuery.browser.name=nAgt.substring(nameOffset,verOffset),jQuery.browser.fullVersion=nAgt.substring(verOffset+1),jQuery.browser.name.toLowerCase()==jQuery.browser.name.toUpperCase()&&(jQuery.browser.name=navigator.appName));
1105-1!=(ix=jQuery.browser.fullVersion.indexOf(";"))&&(jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix));-1!=(ix=jQuery.browser.fullVersion.indexOf(" "))&&(jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,ix));jQuery.browser.majorVersion=parseInt(""+jQuery.browser.fullVersion,10);isNaN(jQuery.browser.majorVersion)&&(jQuery.browser.fullVersion=""+parseFloat(navigator.appVersion),jQuery.browser.majorVersion=parseInt(navigator.appVersion,10));
1106jQuery.browser.version=jQuery.browser.majorVersion;jQuery.browser.android=/Android/i.test(nAgt);jQuery.browser.blackberry=/BlackBerry|BB|PlayBook/i.test(nAgt);jQuery.browser.ios=/iPhone|iPad|iPod|webOS/i.test(nAgt);jQuery.browser.operaMobile=/Opera Mini/i.test(nAgt);jQuery.browser.windowsMobile=/IEMobile|Windows Phone/i.test(nAgt);jQuery.browser.kindle=/Kindle|Silk/i.test(nAgt);
1107jQuery.browser.mobile=jQuery.browser.android||jQuery.browser.blackberry||jQuery.browser.ios||jQuery.browser.windowsMobile||jQuery.browser.operaMobile||jQuery.browser.kindle;jQuery.isMobile=jQuery.browser.mobile;jQuery.isTablet=jQuery.browser.mobile&&765<jQuery(window).width();jQuery.isAndroidDefault=jQuery.browser.android&&!/chrome/i.test(nAgt);jQuery.mbBrowser=jQuery.browser;
1108jQuery.browser.versionCompare=function(a,e){if("stringstring"!=typeof a+typeof e)return!1;for(var c=a.split("."),d=e.split("."),b=0,f=Math.max(c.length,d.length);b<f;b++){if(c[b]&&!d[b]&&0<parseInt(c[b])||parseInt(c[b])>parseInt(d[b]))return 1;if(d[b]&&!c[b]&&0<parseInt(d[b])||parseInt(c[b])<parseInt(d[b]))return-1}return 0};
1109
1110(function(b){b.simpleSlider={defaults:{initialval:0,scale:100,orientation:"h",readonly:!1,callback:!1},events:{start:b.browser.mobile?"touchstart":"mousedown",end:b.browser.mobile?"touchend":"mouseup",move:b.browser.mobile?"touchmove":"mousemove"},init:function(c){return this.each(function(){var a=this,d=b(a);d.addClass("simpleSlider");a.opt={};b.extend(a.opt,b.simpleSlider.defaults,c);b.extend(a.opt,d.data());var e="h"==a.opt.orientation?"horizontal":"vertical";e=b("<div/>").addClass("level").addClass(e);
1111	d.prepend(e);a.level=e;d.css({cursor:"default"});"auto"==a.opt.scale&&(a.opt.scale=b(a).outerWidth());d.updateSliderVal();a.opt.readonly||(d.on(b.simpleSlider.events.start,function(c){b.browser.mobile&&(c=c.changedTouches[0]);a.canSlide=!0;d.updateSliderVal(c);"h"==a.opt.orientation?d.css({cursor:"col-resize"}):d.css({cursor:"row-resize"});b.browser.mobile||(c.preventDefault(),c.stopPropagation())}),b(document).on(b.simpleSlider.events.move,function(c){b.browser.mobile&&(c=c.changedTouches[0]);a.canSlide&&
1112	(b(document).css({cursor:"default"}),d.updateSliderVal(c),b.browser.mobile||(c.preventDefault(),c.stopPropagation()))}).on(b.simpleSlider.events.end,function(){b(document).css({cursor:"auto"});a.canSlide=!1;d.css({cursor:"auto"})}))})},updateSliderVal:function(c){var a=this.get(0);if(a.opt){a.opt.initialval="number"==typeof a.opt.initialval?a.opt.initialval:a.opt.initialval(a);var d=b(a).outerWidth(),e=b(a).outerHeight();a.x="object"==typeof c?c.clientX+document.body.scrollLeft-this.offset().left:
1113				"number"==typeof c?c*d/a.opt.scale:a.opt.initialval*d/a.opt.scale;a.y="object"==typeof c?c.clientY+document.body.scrollTop-this.offset().top:"number"==typeof c?(a.opt.scale-a.opt.initialval-c)*e/a.opt.scale:a.opt.initialval*e/a.opt.scale;a.y=this.outerHeight()-a.y;a.scaleX=a.x*a.opt.scale/d;a.scaleY=a.y*a.opt.scale/e;a.outOfRangeX=a.scaleX>a.opt.scale?a.scaleX-a.opt.scale:0>a.scaleX?a.scaleX:0;a.outOfRangeY=a.scaleY>a.opt.scale?a.scaleY-a.opt.scale:0>a.scaleY?a.scaleY:0;a.outOfRange="h"==a.opt.orientation?
1114		a.outOfRangeX:a.outOfRangeY;a.value="undefined"!=typeof c?"h"==a.opt.orientation?a.x>=this.outerWidth()?a.opt.scale:0>=a.x?0:a.scaleX:a.y>=this.outerHeight()?a.opt.scale:0>=a.y?0:a.scaleY:"h"==a.opt.orientation?a.scaleX:a.scaleY;"h"==a.opt.orientation?a.level.width(Math.floor(100*a.x/d)+"%"):a.level.height(Math.floor(100*a.y/e));"function"==typeof a.opt.callback&&a.opt.callback(a)}}};b.fn.simpleSlider=b.simpleSlider.init;b.fn.updateSliderVal=b.simpleSlider.updateSliderVal})(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.