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