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.