jquery_mb_extruder 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +22 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +61 -0
- data/Rakefile +2 -0
- data/jquery_mb_extruder.gemspec +24 -0
- data/lib/jquery_mb_extruder.rb +7 -0
- data/lib/jquery_mb_extruder/version.rb +3 -0
- data/vendor/assets/images/black_op_30.png +0 -0
- data/vendor/assets/images/blue_op_75.png +0 -0
- data/vendor/assets/images/browser.png +0 -0
- data/vendor/assets/images/extruder_bgnd.png +0 -0
- data/vendor/assets/images/extruder_blank.png +0 -0
- data/vendor/assets/images/extruder_bottom.png +0 -0
- data/vendor/assets/images/extruder_flap.png +0 -0
- data/vendor/assets/images/extruder_header_bgnd.png +0 -0
- data/vendor/assets/images/extruder_left.png +0 -0
- data/vendor/assets/images/extruder_left_flap.png +0 -0
- data/vendor/assets/images/extruder_voice.png +0 -0
- data/vendor/assets/images/extruder_voiceHover.png +0 -0
- data/vendor/assets/images/fuzz.gif +0 -0
- data/vendor/assets/images/optionsPanel.png +0 -0
- data/vendor/assets/images/orange_op_75.png +0 -0
- data/vendor/assets/images/red_op_50.png +0 -0
- data/vendor/assets/images/settingsBtn.png +0 -0
- data/vendor/assets/javascripts/jquery.hoverIntent.min.js +21 -0
- data/vendor/assets/javascripts/jquery.mb.YTPlayer.js +1022 -0
- data/vendor/assets/javascripts/jquery.mb.extruder.jquery.json +42 -0
- data/vendor/assets/javascripts/jquery.mb.flipText.js +120 -0
- data/vendor/assets/javascripts/mbExtruder.js +521 -0
- data/vendor/assets/stylesheets/YTPlayer.css +240 -0
- data/vendor/assets/stylesheets/mbExtruder.css +21 -0
- data/vendor/assets/stylesheets/mbExtruder.less +311 -0
- metadata +120 -0
    
        checksums.yaml
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            SHA1:
         | 
| 3 | 
            +
              metadata.gz: 1c549f557b0cc345f6da8cdc86ee765e2afbfd35
         | 
| 4 | 
            +
              data.tar.gz: fe5ee7f6f14e9e13136b2df31fe571528f53b7da
         | 
| 5 | 
            +
            SHA512:
         | 
| 6 | 
            +
              metadata.gz: 6204b87a80c658cecb1d2c087b7ccd330b2ff0ae9137d5089f344ff0455574325daa1b593e27b4bb233f03b1c40c1f6c8bd65179a9eb49cdbd9d20cf9fb31f29
         | 
| 7 | 
            +
              data.tar.gz: 2f7eacd67a4db7bcf99342e553a77800f492c9d9b42548175e8d84405d4f32d3871934e6a2b3f39c27011cb48b41829148e7441a14be31f085c0d5b562ede3d4
         | 
    
        data/.gitignore
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            *.gem
         | 
| 2 | 
            +
            *.rbc
         | 
| 3 | 
            +
            .bundle
         | 
| 4 | 
            +
            .config
         | 
| 5 | 
            +
            .yardoc
         | 
| 6 | 
            +
            Gemfile.lock
         | 
| 7 | 
            +
            InstalledFiles
         | 
| 8 | 
            +
            _yardoc
         | 
| 9 | 
            +
            coverage
         | 
| 10 | 
            +
            doc/
         | 
| 11 | 
            +
            lib/bundler/man
         | 
| 12 | 
            +
            pkg
         | 
| 13 | 
            +
            rdoc
         | 
| 14 | 
            +
            spec/reports
         | 
| 15 | 
            +
            test/tmp
         | 
| 16 | 
            +
            test/version_tmp
         | 
| 17 | 
            +
            tmp
         | 
| 18 | 
            +
            *.bundle
         | 
| 19 | 
            +
            *.so
         | 
| 20 | 
            +
            *.o
         | 
| 21 | 
            +
            *.a
         | 
| 22 | 
            +
            mkmf.log
         | 
    
        data/Gemfile
    ADDED
    
    
    
        data/LICENSE.txt
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            Copyright (c) 2014 Taylor Mitchell
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            MIT License
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 6 | 
            +
            a copy of this software and associated documentation files (the
         | 
| 7 | 
            +
            "Software"), to deal in the Software without restriction, including
         | 
| 8 | 
            +
            without limitation the rights to use, copy, modify, merge, publish,
         | 
| 9 | 
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 10 | 
            +
            permit persons to whom the Software is furnished to do so, subject to
         | 
| 11 | 
            +
            the following conditions:
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            The above copyright notice and this permission notice shall be
         | 
| 14 | 
            +
            included in all copies or substantial portions of the Software.
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 17 | 
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 18 | 
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 19 | 
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 20 | 
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 21 | 
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 22 | 
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,61 @@ | |
| 1 | 
            +
            # JQuery MB Extruder - Rails Gem
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            This is a Rails gem that will install the [JQuery MB Extruder](http://pupunzi.com/#mb.components/mb.extruder/extruder.html) in your application.
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ## Installation
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            Add this line to your application's Gemfile:
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                gem 'jquery_mb_extruder'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            And then execute:
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                $ bundle install
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            Or install it yourself as:
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                $ gem install jquery_mb_extruder
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            ## Usage
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            # mb.extruder.readme
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            __An open source jQuery component to easily build a top or left sliding panel.__
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ## [go to the demo](http://pupunzi.com/#mb.components/mb.extruder/extruder.html)
         | 
| 28 | 
            +
            ## [go to the doc](http://wiki.github.com/pupunzi/jquery.mb.extruder/)
         | 
| 29 | 
            +
            ## [go to the blog](http://pupunzi.open-lab.com/mb-jquery-components/jquery-mb-extruder/)
         | 
| 30 | 
            +
             | 
| 31 | 
            +
             | 
| 32 | 
            +
            [jquery.mb.components](http://pupunzi.com/), another way of thinking the web
         | 
| 33 | 
            +
            	
         | 
| 34 | 
            +
            	
         | 
| 35 | 
            +
            #### CSS
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            Add this line at the end of your application.css
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            	*= require jquery_mb_extruder
         | 
| 40 | 
            +
            	
         | 
| 41 | 
            +
            #### Javascript
         | 
| 42 | 
            +
             | 
| 43 | 
            +
             | 
| 44 | 
            +
            You will need to add global jquery_mb_extruder object in your application.js:
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            	//= require jquery_mb_extruder
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            #### Thanks
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            Thanks to the makers of mb.extruder!
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            Scy0846
         | 
| 53 | 
            +
             | 
| 54 | 
            +
             | 
| 55 | 
            +
            ## Contributing
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            1. Fork it
         | 
| 58 | 
            +
            2. Create your feature branch (`git checkout -b my-new-feature`)
         | 
| 59 | 
            +
            3. Commit your changes (`git commit -am 'Add some feature'`)
         | 
| 60 | 
            +
            4. Push to the branch (`git push origin my-new-feature`)
         | 
| 61 | 
            +
            5. Create new Pull Request
         | 
    
        data/Rakefile
    ADDED
    
    
| @@ -0,0 +1,24 @@ | |
| 1 | 
            +
            # coding: utf-8
         | 
| 2 | 
            +
            lib = File.expand_path('../lib', __FILE__)
         | 
| 3 | 
            +
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 | 
            +
            require 'jquery_mb_extruder/version'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Gem::Specification.new do |spec|
         | 
| 7 | 
            +
              spec.name          = "jquery_mb_extruder"
         | 
| 8 | 
            +
              spec.version       = JqueryMbExtruder::VERSION
         | 
| 9 | 
            +
              spec.authors       = ["Taylor Mitchell"]
         | 
| 10 | 
            +
              spec.email         = ["scy0846@gmail.com"]
         | 
| 11 | 
            +
              spec.summary       = %q{JQuery MB Extruder Framework for Rails.}
         | 
| 12 | 
            +
              spec.description   = %q{You can find more details on how to use this at http://pupunzi.com/#mb.components/mb.extruder/extruder.html. While this gem is not my creation, I did not create the jquery.mb.extruder framework.}
         | 
| 13 | 
            +
              spec.homepage      = "https://github.com/scy0846/jquery_mb_extruder"
         | 
| 14 | 
            +
              spec.license       = "MIT"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              spec.files         = `git ls-files -z`.split("\x0")
         | 
| 17 | 
            +
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         | 
| 18 | 
            +
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 19 | 
            +
              spec.require_paths = ["lib"]
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              spec.add_runtime_dependency "jquery-rails"
         | 
| 22 | 
            +
              spec.add_development_dependency "bundler", "~> 1.6"
         | 
| 23 | 
            +
              spec.add_development_dependency "rake"
         | 
| 24 | 
            +
            end
         | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            /*
         | 
| 2 | 
            +
             * ******************************************************************************
         | 
| 3 | 
            +
             *  jquery.mb.components
         | 
| 4 | 
            +
             *  file: jquery.hoverIntent.min.js
         | 
| 5 | 
            +
             *
         | 
| 6 | 
            +
             *  Copyright (c) 2001-2014. Matteo Bicocchi (Pupunzi);
         | 
| 7 | 
            +
             *  Open lab srl, Firenze - Italy
         | 
| 8 | 
            +
             *  email: matteo@open-lab.com
         | 
| 9 | 
            +
             *  site: 	http://pupunzi.com
         | 
| 10 | 
            +
             *  blog:	http://pupunzi.open-lab.com
         | 
| 11 | 
            +
             * 	http://open-lab.com
         | 
| 12 | 
            +
             *
         | 
| 13 | 
            +
             *  Licences: MIT, GPL
         | 
| 14 | 
            +
             *  http://www.opensource.org/licenses/mit-license.php
         | 
| 15 | 
            +
             *  http://www.gnu.org/licenses/gpl.html
         | 
| 16 | 
            +
             *
         | 
| 17 | 
            +
             *  last modified: 07/01/14 22.50
         | 
| 18 | 
            +
             *  *****************************************************************************
         | 
| 19 | 
            +
             */
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            (function(a){a.fn.hoverIntent=function(k,j){var l={sensitivity:7,interval:100,timeout:0};l=a.extend(l,j?{over:k,out:j}:k);var n,m,h,d;var e=function(f){n=f.pageX;m=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-n)+Math.abs(d-m))<l.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return l.over.apply(f,[g])}else{h=n;d=m;f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return l.out.apply(f,[g])};var b=function(q){var o=(q.type=="mouseover"?q.fromElement:q.toElement)||q.relatedTarget;while(o&&o!=this){try{o=o.parentNode}catch(q){o=this}}if(o==this){return false}var g=jQuery.extend({},q);var f=this;if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(q.type=="mouseover"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},l.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},l.timeout)}}};return this.mouseover(b).mouseout(b)}})(jQuery);
         | 
| @@ -0,0 +1,1022 @@ | |
| 1 | 
            +
            /*
         | 
| 2 | 
            +
             * ******************************************************************************
         | 
| 3 | 
            +
             *  jquery.mb.components
         | 
| 4 | 
            +
             *  file: jquery.mb.YTPlayer.js
         | 
| 5 | 
            +
             *
         | 
| 6 | 
            +
             *  Copyright (c) 2001-2014. Matteo Bicocchi (Pupunzi);
         | 
| 7 | 
            +
             *  Open lab srl, Firenze - Italy
         | 
| 8 | 
            +
             *  email: matteo@open-lab.com
         | 
| 9 | 
            +
             *  site: 	http://pupunzi.com
         | 
| 10 | 
            +
             *  blog:	http://pupunzi.open-lab.com
         | 
| 11 | 
            +
             * 	http://open-lab.com
         | 
| 12 | 
            +
             *
         | 
| 13 | 
            +
             *  Licences: MIT, GPL
         | 
| 14 | 
            +
             *  http://www.opensource.org/licenses/mit-license.php
         | 
| 15 | 
            +
             *  http://www.gnu.org/licenses/gpl.html
         | 
| 16 | 
            +
             *
         | 
| 17 | 
            +
             *  last modified: 07/01/14 22.50
         | 
| 18 | 
            +
             *  *****************************************************************************
         | 
| 19 | 
            +
             */
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            /*Browser detection patch*/
         | 
| 22 | 
            +
            (function(){if(!(8>jQuery.fn.jquery.split(".")[1])){jQuery.browser={};jQuery.browser.mozilla=!1;jQuery.browser.webkit=!1;jQuery.browser.opera=!1;jQuery.browser.msie=!1;var a=navigator.userAgent;jQuery.browser.name=navigator.appName;jQuery.browser.fullVersion=""+parseFloat(navigator.appVersion);jQuery.browser.majorVersion=parseInt(navigator.appVersion,10);var c,b;if(-1!=(b=a.indexOf("Opera"))){if(jQuery.browser.opera=!0,jQuery.browser.name="Opera",jQuery.browser.fullVersion=a.substring(b+6),-1!=(b= a.indexOf("Version")))jQuery.browser.fullVersion=a.substring(b+8)}else if(-1!=(b=a.indexOf("MSIE")))jQuery.browser.msie=!0,jQuery.browser.name="Microsoft Internet Explorer",jQuery.browser.fullVersion=a.substring(b+5);else if(-1!=(b=a.indexOf("Chrome")))jQuery.browser.webkit=!0,jQuery.browser.name="Chrome",jQuery.browser.fullVersion=a.substring(b+7);else if(-1!=(b=a.indexOf("Safari"))){if(jQuery.browser.webkit=!0,jQuery.browser.name="Safari",jQuery.browser.fullVersion=a.substring(b+7),-1!=(b=a.indexOf("Version")))jQuery.browser.fullVersion= a.substring(b+8)}else if(-1!=(b=a.indexOf("Firefox")))jQuery.browser.mozilla=!0,jQuery.browser.name="Firefox",jQuery.browser.fullVersion=a.substring(b+8);else if((c=a.lastIndexOf(" ")+1)<(b=a.lastIndexOf("/")))jQuery.browser.name=a.substring(c,b),jQuery.browser.fullVersion=a.substring(b+1),jQuery.browser.name.toLowerCase()==jQuery.browser.name.toUpperCase()&&(jQuery.browser.name=navigator.appName);if(-1!=(a=jQuery.browser.fullVersion.indexOf(";")))jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0, a);if(-1!=(a=jQuery.browser.fullVersion.indexOf(" ")))jQuery.browser.fullVersion=jQuery.browser.fullVersion.substring(0,a);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);
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            /*******************************************************************************
         | 
| 25 | 
            +
             * jQuery.mb.components: jquery.mb.CSSAnimate
         | 
| 26 | 
            +
             ******************************************************************************/
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            jQuery.fn.CSSAnimate=function(a,b,k,l,f){return this.each(function(){var c=jQuery(this);if(0!==c.length&&a){"function"==typeof b&&(f=b,b=jQuery.fx.speeds._default);"function"==typeof k&&(f=k,k=0);"function"==typeof l&&(f=l,l="cubic-bezier(0.65,0.03,0.36,0.72)");if("string"==typeof b)for(var j in jQuery.fx.speeds)if(b==j){b=jQuery.fx.speeds[j];break}else b=null;if(jQuery.support.transition){var e="",h="transitionEnd";jQuery.browser.webkit?(e="-webkit-",h="webkitTransitionEnd"):jQuery.browser.mozilla? (e="-moz-",h="transitionend"):jQuery.browser.opera?(e="-o-",h="otransitionend"):jQuery.browser.msie&&(e="-ms-",h="msTransitionEnd");j=[];for(d in a){var g=d;"transform"===g&&(g=e+"transform",a[g]=a[d],delete a[d]);"transform-origin"===g&&(g=e+"transform-origin",a[g]=a[d],delete a[d]);j.push(g);c.css(g)||c.css(g,0)}d=j.join(",");c.css(e+"transition-property",d);c.css(e+"transition-duration",b+"ms");c.css(e+"transition-delay",k+"ms");c.css(e+"transition-timing-function",l);c.css(e+"backface-visibility", "hidden");setTimeout(function(){c.css(a)},0);setTimeout(function(){c.called||!f?c.called=!1:f()},b+20);c.on(h,function(a){c.off(h);c.css(e+"transition","");a.stopPropagation();"function"==typeof f&&(c.called=!0,f());return!1})}else{for(var d in a)"transform"===d&&delete a[d],"transform-origin"===d&&delete a[d],"auto"===a[d]&&delete a[d];if(!f||"string"===typeof f)f="linear";c.animate(a,b,f)}}})}; jQuery.fn.CSSAnimateStop=function(){var a="",b="transitionEnd";jQuery.browser.webkit?(a="-webkit-",b="webkitTransitionEnd"):jQuery.browser.mozilla?(a="-moz-",b="transitionend"):jQuery.browser.opera?(a="-o-",b="otransitionend"):jQuery.browser.msie&&(a="-ms-",b="msTransitionEnd");jQuery(this).css(a+"transition","");jQuery(this).off(b)}; jQuery.support.transition=function(){var a=(document.body||document.documentElement).style;return void 0!==a.transition||void 0!==a.WebkitTransition||void 0!==a.MozTransition||void 0!==a.MsTransition||void 0!==a.OTransition}();
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            /*
         | 
| 31 | 
            +
             * Metadata - jQuery plugin for parsing metadata from elements
         | 
| 32 | 
            +
             * Copyright (c) 2006 John Resig, Yehuda Katz, Jörn Zaefferer, Paul McLanahan
         | 
| 33 | 
            +
             * Dual licensed under the MIT and GPL licenses:
         | 
| 34 | 
            +
             *   http://www.opensource.org/licenses/mit-license.php
         | 
| 35 | 
            +
             *   http://www.gnu.org/licenses/gpl.html
         | 
| 36 | 
            +
             */
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            (function(c){c.extend({metadata:{defaults:{type:"class",name:"metadata",cre:/({.*})/,single:"metadata"},setType:function(b,c){this.defaults.type=b;this.defaults.name=c},get:function(b,f){var d=c.extend({},this.defaults,f);d.single.length||(d.single="metadata");var a=c.data(b,d.single);if(a)return a;a="{}";if("class"==d.type){var e=d.cre.exec(b.className);e&&(a=e[1])}else if("elem"==d.type){if(!b.getElementsByTagName)return;e=b.getElementsByTagName(d.name);e.length&&(a=c.trim(e[0].innerHTML))}else void 0!= b.getAttribute&&(e=b.getAttribute(d.name))&&(a=e);0>a.indexOf("{")&&(a="{"+a+"}");a=eval("("+a+")");c.data(b,d.single,a);return a}}});c.fn.metadata=function(b){return c.metadata.get(this[0],b)}})(jQuery);
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            /***************************************************************************************/
         | 
| 41 | 
            +
            if(typeof ytp != "object")
         | 
| 42 | 
            +
            	ytp ={};
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            String.prototype.getVideoID=function(){
         | 
| 45 | 
            +
            	var movieURL;
         | 
| 46 | 
            +
            	if(this.substr(0,16)=="http://youtu.be/"){
         | 
| 47 | 
            +
            		movieURL= this.replace("http://youtu.be/","");
         | 
| 48 | 
            +
            	}else if(this.indexOf("http")>-1){
         | 
| 49 | 
            +
            		movieURL = this.match(/[\\?&]v=([^&#]*)/)[1];
         | 
| 50 | 
            +
            	}else{
         | 
| 51 | 
            +
            		movieURL = this
         | 
| 52 | 
            +
            	}
         | 
| 53 | 
            +
            	return movieURL;
         | 
| 54 | 
            +
            };
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            var isDevice = 'ontouchstart' in window;
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            function onYouTubePlayerAPIReady() {
         | 
| 59 | 
            +
            	if(ytp.YTAPIReady)
         | 
| 60 | 
            +
            		return;
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            	ytp.YTAPIReady=true;
         | 
| 63 | 
            +
            	jQuery(document).trigger("YTAPIReady");
         | 
| 64 | 
            +
            }
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            (function (jQuery) {
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            	jQuery.mbYTPlayer = {
         | 
| 69 | 
            +
            		name           : "jquery.mb.YTPlayer",
         | 
| 70 | 
            +
            		version        : "2.5.7",
         | 
| 71 | 
            +
            		author         : "Matteo Bicocchi",
         | 
| 72 | 
            +
            		defaults       : {
         | 
| 73 | 
            +
            			containment            : "body",
         | 
| 74 | 
            +
            			ratio                  : "16/9",
         | 
| 75 | 
            +
            			showYTLogo             : false,
         | 
| 76 | 
            +
            			videoURL               : null,
         | 
| 77 | 
            +
            			startAt                : 0,
         | 
| 78 | 
            +
            			autoPlay               : true,
         | 
| 79 | 
            +
            			vol                    :100,
         | 
| 80 | 
            +
            			addRaster              : false,
         | 
| 81 | 
            +
            			opacity                : 1,
         | 
| 82 | 
            +
            			quality                : "default", //or “small”, “medium”, “large”, “hd720”, “hd1080”, “highres”
         | 
| 83 | 
            +
            			mute                   : false,
         | 
| 84 | 
            +
            			loop                   : true,
         | 
| 85 | 
            +
            			showControls           : true,
         | 
| 86 | 
            +
            			showAnnotations        : false,
         | 
| 87 | 
            +
            			printUrl               : true,
         | 
| 88 | 
            +
            			stopMovieOnClick       :false,
         | 
| 89 | 
            +
            			realfullscreen         :true,
         | 
| 90 | 
            +
            			onReady                : function (player) {},
         | 
| 91 | 
            +
            			onStateChange          : function (player) {},
         | 
| 92 | 
            +
            			onPlaybackQualityChange: function (player) {},
         | 
| 93 | 
            +
            			onError                : function (player) {}
         | 
| 94 | 
            +
            		},
         | 
| 95 | 
            +
            		//todo: use @font-face instead
         | 
| 96 | 
            +
            		controls       : {
         | 
| 97 | 
            +
            			play  : "P",
         | 
| 98 | 
            +
            			pause : "p",
         | 
| 99 | 
            +
            			mute  : "M",
         | 
| 100 | 
            +
            			unmute: "A",
         | 
| 101 | 
            +
            			onlyYT: "O",
         | 
| 102 | 
            +
            			showSite: "R",
         | 
| 103 | 
            +
            			ytLogo: "Y"
         | 
| 104 | 
            +
            		},
         | 
| 105 | 
            +
            		rasterImg      : "images/raster.png",
         | 
| 106 | 
            +
            		rasterImgRetina: "images/raster@2x.png",
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            		buildPlayer: function (options) {
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            			return this.each(function () {
         | 
| 111 | 
            +
            				var YTPlayer = this;
         | 
| 112 | 
            +
            				var $YTPlayer = jQuery(YTPlayer);
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            				YTPlayer.loop = 0;
         | 
| 115 | 
            +
            				YTPlayer.opt = {};
         | 
| 116 | 
            +
            				var property = {};
         | 
| 117 | 
            +
             | 
| 118 | 
            +
            				$YTPlayer.addClass("mb_YTVPlayer");
         | 
| 119 | 
            +
             | 
| 120 | 
            +
            				if (jQuery.metadata) {
         | 
| 121 | 
            +
            					jQuery.metadata.setType("class");
         | 
| 122 | 
            +
            					property = $YTPlayer.metadata();
         | 
| 123 | 
            +
            				}
         | 
| 124 | 
            +
             | 
| 125 | 
            +
            				if (jQuery.isEmptyObject(property))
         | 
| 126 | 
            +
            					property = $YTPlayer.data("property") && typeof $YTPlayer.data("property") == "string" ? eval('(' + $YTPlayer.data("property") + ')') : $YTPlayer.data("property");
         | 
| 127 | 
            +
             | 
| 128 | 
            +
            				jQuery.extend(YTPlayer.opt, jQuery.mbYTPlayer.defaults, options, property);
         | 
| 129 | 
            +
             | 
| 130 | 
            +
            				var canGoFullscreen = !(jQuery.browser.msie || jQuery.browser.opera || self.location.href != top.location.href);
         | 
| 131 | 
            +
             | 
| 132 | 
            +
            				if(!canGoFullscreen)
         | 
| 133 | 
            +
            					YTPlayer.opt.realfullscreen = false;
         | 
| 134 | 
            +
             | 
| 135 | 
            +
            				if (!$YTPlayer.attr("id"))
         | 
| 136 | 
            +
            					$YTPlayer.attr("id", "id_" + new Date().getTime());
         | 
| 137 | 
            +
             | 
| 138 | 
            +
            				YTPlayer.opt.id = YTPlayer.id;
         | 
| 139 | 
            +
            				YTPlayer.isAlone = false;
         | 
| 140 | 
            +
             | 
| 141 | 
            +
            				/*to maintain back compatibility
         | 
| 142 | 
            +
            				 * ***********************************************************/
         | 
| 143 | 
            +
            				if (YTPlayer.opt.isBgndMovie)
         | 
| 144 | 
            +
            					YTPlayer.opt.containment = "body";
         | 
| 145 | 
            +
             | 
| 146 | 
            +
            				if (YTPlayer.opt.isBgndMovie && YTPlayer.opt.isBgndMovie.mute != undefined)
         | 
| 147 | 
            +
            					YTPlayer.opt.mute = YTPlayer.opt.isBgndMovie.mute;
         | 
| 148 | 
            +
            				/************************************************************/
         | 
| 149 | 
            +
             | 
| 150 | 
            +
            				if (!YTPlayer.opt.videoURL)
         | 
| 151 | 
            +
            					YTPlayer.opt.videoURL = $YTPlayer.attr("href");
         | 
| 152 | 
            +
             | 
| 153 | 
            +
            				var playerID = "mbYTP_" + YTPlayer.id;
         | 
| 154 | 
            +
            				var videoID = this.opt.videoURL ? this.opt.videoURL.getVideoID() : $YTPlayer.attr("href") ? $YTPlayer.attr("href").getVideoID() : false;
         | 
| 155 | 
            +
            				YTPlayer.videoID = videoID;
         | 
| 156 | 
            +
             | 
| 157 | 
            +
             | 
| 158 | 
            +
            				YTPlayer.opt.showAnnotations = (YTPlayer.opt.showAnnotations) ? '0' : '3';
         | 
| 159 | 
            +
            				var playerVars = { 'autoplay': 0, 'modestbranding': 1, 'controls': 0, 'showinfo': 0, 'rel': 0, 'enablejsapi': 1, 'version': 3, 'playerapiid': playerID, 'origin': '*', 'allowfullscreen': true, 'wmode': "transparent", 'iv_load_policy': YTPlayer.opt.showAnnotations};
         | 
| 160 | 
            +
             | 
| 161 | 
            +
            				var canPlayHTML5 = false;
         | 
| 162 | 
            +
            				var v = document.createElement('video');
         | 
| 163 | 
            +
            				if (v.canPlayType ) { // && !jQuery.browser.msie
         | 
| 164 | 
            +
            					canPlayHTML5 = true;
         | 
| 165 | 
            +
            				}
         | 
| 166 | 
            +
             | 
| 167 | 
            +
            				if (canPlayHTML5) //  && !(YTPlayer.isPlayList && jQuery.browser.msie)
         | 
| 168 | 
            +
            					jQuery.extend(playerVars, {'html5': 1});
         | 
| 169 | 
            +
             | 
| 170 | 
            +
            				if(jQuery.browser.msie && jQuery.browser.version < 9 ){
         | 
| 171 | 
            +
            					this.opt.opacity = 1;
         | 
| 172 | 
            +
            				}
         | 
| 173 | 
            +
             | 
| 174 | 
            +
            				var playerBox = jQuery("<div/>").attr("id", playerID).addClass("playerBox");
         | 
| 175 | 
            +
            				var overlay = jQuery("<div/>").css({position: "absolute", top: 0, left: 0, width: "100%", height: "100%"}).addClass("YTPOverlay"); //YTPlayer.isBackground ? "fixed" :
         | 
| 176 | 
            +
             | 
| 177 | 
            +
            				YTPlayer.opt.containment = YTPlayer.opt.containment == "self" ? jQuery(this) : jQuery(YTPlayer.opt.containment);
         | 
| 178 | 
            +
             | 
| 179 | 
            +
            				YTPlayer.isBackground = YTPlayer.opt.containment.get(0).tagName.toLowerCase() == "body";
         | 
| 180 | 
            +
             | 
| 181 | 
            +
            				if (isDevice && YTPlayer.isBackground){
         | 
| 182 | 
            +
            					$YTPlayer.hide();
         | 
| 183 | 
            +
            					return;
         | 
| 184 | 
            +
            				}
         | 
| 185 | 
            +
             | 
| 186 | 
            +
            				if (YTPlayer.opt.addRaster) {
         | 
| 187 | 
            +
            					var retina = (window.retina || window.devicePixelRatio > 1);
         | 
| 188 | 
            +
            					overlay.addClass(retina ? "raster retina" : "raster");
         | 
| 189 | 
            +
            				}else{
         | 
| 190 | 
            +
            					overlay.removeClass("raster retina");
         | 
| 191 | 
            +
            				}
         | 
| 192 | 
            +
             | 
| 193 | 
            +
            				var wrapper = jQuery("<div/>").addClass("mbYTP_wrapper").attr("id", "wrapper_" + playerID);
         | 
| 194 | 
            +
            				wrapper.css({position: "absolute", zIndex: 0, minWidth: "100%", minHeight: "100%",left:0, top:0, overflow: "hidden", opacity: 0});
         | 
| 195 | 
            +
            				playerBox.css({position: "absolute", zIndex: 0, width: "100%", height: "100%", top: 0, left: 0, overflow: "hidden", opacity: this.opt.opacity});
         | 
| 196 | 
            +
            				wrapper.append(playerBox);
         | 
| 197 | 
            +
             | 
| 198 | 
            +
            				if (YTPlayer.isBackground && ytp.isInit)
         | 
| 199 | 
            +
            					return;
         | 
| 200 | 
            +
             | 
| 201 | 
            +
            				YTPlayer.opt.containment.children().each(function () {
         | 
| 202 | 
            +
            					if (jQuery(this).css("position") == "static")
         | 
| 203 | 
            +
            						jQuery(this).css("position", "relative");
         | 
| 204 | 
            +
            				});
         | 
| 205 | 
            +
             | 
| 206 | 
            +
            				if (YTPlayer.isBackground) {
         | 
| 207 | 
            +
            					jQuery("body").css({position: "relative", minWidth: "100%", minHeight: "100%", zIndex: 1, boxSizing: "border-box"});
         | 
| 208 | 
            +
            					wrapper.css({position: "fixed", top: 0, left: 0, zIndex: 0});
         | 
| 209 | 
            +
            					$YTPlayer.hide();
         | 
| 210 | 
            +
            					YTPlayer.opt.containment.prepend(wrapper);
         | 
| 211 | 
            +
            				} else
         | 
| 212 | 
            +
            					YTPlayer.opt.containment.prepend(wrapper);
         | 
| 213 | 
            +
             | 
| 214 | 
            +
            				YTPlayer.wrapper = wrapper;
         | 
| 215 | 
            +
             | 
| 216 | 
            +
            				playerBox.css({opacity: 1});
         | 
| 217 | 
            +
             | 
| 218 | 
            +
            				if (!isDevice){
         | 
| 219 | 
            +
            					playerBox.after(overlay);
         | 
| 220 | 
            +
            					YTPlayer.overlay = overlay;
         | 
| 221 | 
            +
            				}
         | 
| 222 | 
            +
             | 
| 223 | 
            +
             | 
| 224 | 
            +
            				if(!YTPlayer.isBackground){
         | 
| 225 | 
            +
            					overlay.on("mouseenter",function(){
         | 
| 226 | 
            +
            						$YTPlayer.find(".mb_YTVPBar").addClass("visible");
         | 
| 227 | 
            +
            					}).on("mouseleave",function(){
         | 
| 228 | 
            +
            								$YTPlayer.find(".mb_YTVPBar").removeClass("visible");
         | 
| 229 | 
            +
            							})
         | 
| 230 | 
            +
            				}
         | 
| 231 | 
            +
             | 
| 232 | 
            +
            				// add YT API to the header
         | 
| 233 | 
            +
            				//jQuery("#YTAPI").remove();
         | 
| 234 | 
            +
             | 
| 235 | 
            +
            				if(!ytp.YTAPIReady){
         | 
| 236 | 
            +
            					var tag = document.createElement('script');
         | 
| 237 | 
            +
            					tag.src = "http://www.youtube.com/player_api";
         | 
| 238 | 
            +
            					tag.id = "YTAPI";
         | 
| 239 | 
            +
            					var firstScriptTag = document.getElementsByTagName('script')[0];
         | 
| 240 | 
            +
            					firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
         | 
| 241 | 
            +
            				}else{
         | 
| 242 | 
            +
            					setTimeout(function(){
         | 
| 243 | 
            +
            						jQuery(document).trigger("YTAPIReady");
         | 
| 244 | 
            +
            					}, 200)
         | 
| 245 | 
            +
            				}
         | 
| 246 | 
            +
             | 
| 247 | 
            +
            				jQuery(document).on("YTAPIReady", function () {
         | 
| 248 | 
            +
             | 
| 249 | 
            +
            					if ((YTPlayer.isBackground && ytp.isInit) || YTPlayer.opt.isInit)
         | 
| 250 | 
            +
            						return;
         | 
| 251 | 
            +
             | 
| 252 | 
            +
            					if(YTPlayer.isBackground && YTPlayer.opt.stopMovieOnClick)
         | 
| 253 | 
            +
            						jQuery(document).off("mousedown.ytplayer").on("mousedown,.ytplayer",function(e){
         | 
| 254 | 
            +
            							var target = jQuery(e.target);
         | 
| 255 | 
            +
            							if(target.is("a") || target.parents().is("a")){
         | 
| 256 | 
            +
            								$YTPlayer.pauseYTP();
         | 
| 257 | 
            +
            							}
         | 
| 258 | 
            +
            						});
         | 
| 259 | 
            +
             | 
| 260 | 
            +
            					if (YTPlayer.isBackground)
         | 
| 261 | 
            +
            						ytp.isInit = true;
         | 
| 262 | 
            +
             | 
| 263 | 
            +
            					YTPlayer.opt.isInit = true;
         | 
| 264 | 
            +
             | 
| 265 | 
            +
            					YTPlayer.opt.vol = YTPlayer.opt.vol ? YTPlayer.opt.vol : 100;
         | 
| 266 | 
            +
             | 
| 267 | 
            +
            					jQuery.mbYTPlayer.getDataFromFeed(YTPlayer.videoID, YTPlayer);
         | 
| 268 | 
            +
             | 
| 269 | 
            +
            					jQuery(document).on("getVideoInfo_" + YTPlayer.opt.id, function () {
         | 
| 270 | 
            +
             | 
| 271 | 
            +
            						if(isDevice && !YTPlayer.isBackground){
         | 
| 272 | 
            +
            							new YT.Player(playerID, {
         | 
| 273 | 
            +
            								height: '100%',
         | 
| 274 | 
            +
            								width: '100%',
         | 
| 275 | 
            +
            								videoId: YTPlayer.videoID,
         | 
| 276 | 
            +
            								events: {
         | 
| 277 | 
            +
            									'onReady': function(){
         | 
| 278 | 
            +
            										$YTPlayer.optimizeDisplay();
         | 
| 279 | 
            +
            										playerBox.css({opacity: 1});
         | 
| 280 | 
            +
            										YTPlayer.wrapper.css({opacity: 1});
         | 
| 281 | 
            +
            										$YTPlayer.optimizeDisplay();
         | 
| 282 | 
            +
            									},
         | 
| 283 | 
            +
            									'onStateChange': function(){}
         | 
| 284 | 
            +
            								}
         | 
| 285 | 
            +
            							});
         | 
| 286 | 
            +
            							return;
         | 
| 287 | 
            +
            						}
         | 
| 288 | 
            +
             | 
| 289 | 
            +
            						new YT.Player(playerID, {
         | 
| 290 | 
            +
            							videoId   : YTPlayer.videoID.toString(),
         | 
| 291 | 
            +
            							playerVars: playerVars,
         | 
| 292 | 
            +
            							events    : {
         | 
| 293 | 
            +
            								'onReady': function (event) {
         | 
| 294 | 
            +
             | 
| 295 | 
            +
            									YTPlayer.player = event.target;
         | 
| 296 | 
            +
             | 
| 297 | 
            +
            									if(YTPlayer.isReady)
         | 
| 298 | 
            +
            										return;
         | 
| 299 | 
            +
             | 
| 300 | 
            +
            									YTPlayer.isReady = true;
         | 
| 301 | 
            +
             | 
| 302 | 
            +
            									YTPlayer.playerEl = YTPlayer.player.getIframe();
         | 
| 303 | 
            +
            									$YTPlayer.optimizeDisplay();
         | 
| 304 | 
            +
             | 
| 305 | 
            +
            									YTPlayer.videoID = videoID;
         | 
| 306 | 
            +
             | 
| 307 | 
            +
            									jQuery(window).on("resize.YTP",function () {
         | 
| 308 | 
            +
            										$YTPlayer.optimizeDisplay();
         | 
| 309 | 
            +
            									});
         | 
| 310 | 
            +
             | 
| 311 | 
            +
            									if (YTPlayer.opt.showControls)
         | 
| 312 | 
            +
            										jQuery(YTPlayer).buildYTPControls();
         | 
| 313 | 
            +
             | 
| 314 | 
            +
            									//YTPlayer.player.setPlaybackQuality(YTPlayer.opt.quality);
         | 
| 315 | 
            +
             | 
| 316 | 
            +
            									if (YTPlayer.opt.startAt > 0)
         | 
| 317 | 
            +
            										YTPlayer.player.seekTo(parseFloat(YTPlayer.opt.startAt), true);
         | 
| 318 | 
            +
             | 
| 319 | 
            +
            									if (!YTPlayer.opt.autoPlay) {
         | 
| 320 | 
            +
             | 
| 321 | 
            +
            										$YTPlayer.stopYTP();
         | 
| 322 | 
            +
            										YTPlayer.checkForStartAt = setInterval(function () {
         | 
| 323 | 
            +
            											if (YTPlayer.player.getCurrentTime() >= YTPlayer.opt.startAt) {
         | 
| 324 | 
            +
            												clearInterval(YTPlayer.checkForStartAt);
         | 
| 325 | 
            +
            												$YTPlayer.pauseYTP();
         | 
| 326 | 
            +
             | 
| 327 | 
            +
            												if (YTPlayer.opt.mute) {
         | 
| 328 | 
            +
            													jQuery(YTPlayer).muteYTPVolume();
         | 
| 329 | 
            +
            												}else{
         | 
| 330 | 
            +
            													jQuery(YTPlayer).unmuteYTPVolume();
         | 
| 331 | 
            +
            												}
         | 
| 332 | 
            +
            											}
         | 
| 333 | 
            +
            										}, 1);
         | 
| 334 | 
            +
             | 
| 335 | 
            +
            									} else {
         | 
| 336 | 
            +
            										$YTPlayer.playYTP();
         | 
| 337 | 
            +
            										YTPlayer.player.setVolume(YTPlayer.opt.vol);
         | 
| 338 | 
            +
             | 
| 339 | 
            +
            										if (YTPlayer.opt.mute) {
         | 
| 340 | 
            +
            											jQuery(YTPlayer).muteYTPVolume();
         | 
| 341 | 
            +
            										}else{
         | 
| 342 | 
            +
            											jQuery(YTPlayer).unmuteYTPVolume();
         | 
| 343 | 
            +
            										}
         | 
| 344 | 
            +
            									}
         | 
| 345 | 
            +
             | 
| 346 | 
            +
            									if (typeof YTPlayer.opt.onReady == "function")
         | 
| 347 | 
            +
            										YTPlayer.opt.onReady($YTPlayer);
         | 
| 348 | 
            +
             | 
| 349 | 
            +
            									jQuery.mbYTPlayer.checkForState(YTPlayer);
         | 
| 350 | 
            +
             | 
| 351 | 
            +
            								},
         | 
| 352 | 
            +
             | 
| 353 | 
            +
            								'onStateChange'          : function (event) {
         | 
| 354 | 
            +
             | 
| 355 | 
            +
            									/*
         | 
| 356 | 
            +
            									 -1 (unstarted)
         | 
| 357 | 
            +
            									 0 (ended)
         | 
| 358 | 
            +
            									 1 (playing)
         | 
| 359 | 
            +
            									 2 (paused)
         | 
| 360 | 
            +
            									 3 (buffering)
         | 
| 361 | 
            +
            									 5 (video cued).
         | 
| 362 | 
            +
            									 */
         | 
| 363 | 
            +
             | 
| 364 | 
            +
            									if (typeof event.target.getPlayerState != "function")
         | 
| 365 | 
            +
            										return;
         | 
| 366 | 
            +
            									var state = event.target.getPlayerState();
         | 
| 367 | 
            +
             | 
| 368 | 
            +
            									if (typeof YTPlayer.opt.onStateChange == "function")
         | 
| 369 | 
            +
            										YTPlayer.opt.onStateChange($YTPlayer, state);
         | 
| 370 | 
            +
             | 
| 371 | 
            +
            									var playerBox = jQuery(YTPlayer.playerEl);
         | 
| 372 | 
            +
            									var controls = jQuery("#controlBar_" + YTPlayer.id);
         | 
| 373 | 
            +
             | 
| 374 | 
            +
            									var data = YTPlayer.opt;
         | 
| 375 | 
            +
             | 
| 376 | 
            +
            									if (state == 0) { // end
         | 
| 377 | 
            +
            										if (YTPlayer.state == state)
         | 
| 378 | 
            +
            											return;
         | 
| 379 | 
            +
             | 
| 380 | 
            +
            										YTPlayer.state = state;
         | 
| 381 | 
            +
            										YTPlayer.player.pauseVideo();
         | 
| 382 | 
            +
            										var startAt = YTPlayer.opt.startAt ? YTPlayer.opt.startAt : 1;
         | 
| 383 | 
            +
             | 
| 384 | 
            +
            										if (data.loop) {
         | 
| 385 | 
            +
            											YTPlayer.wrapper.css({opacity: 0});
         | 
| 386 | 
            +
            											$YTPlayer.playYTP();
         | 
| 387 | 
            +
            											YTPlayer.player.seekTo(startAt,true);
         | 
| 388 | 
            +
             | 
| 389 | 
            +
            										} else if (!YTPlayer.isBackground) {
         | 
| 390 | 
            +
            											YTPlayer.player.seekTo(startAt, true);
         | 
| 391 | 
            +
            											$YTPlayer.playYTP();
         | 
| 392 | 
            +
            											setTimeout(function () {
         | 
| 393 | 
            +
            												$YTPlayer.pauseYTP();
         | 
| 394 | 
            +
            											}, 10);
         | 
| 395 | 
            +
            										}
         | 
| 396 | 
            +
             | 
| 397 | 
            +
            										if (!data.loop && YTPlayer.isBackground)
         | 
| 398 | 
            +
            											YTPlayer.wrapper.CSSAnimate({opacity: 0}, 2000);
         | 
| 399 | 
            +
            										else if (data.loop) {
         | 
| 400 | 
            +
            											YTPlayer.wrapper.css({opacity: 0});
         | 
| 401 | 
            +
            											YTPlayer.loop++;
         | 
| 402 | 
            +
            										}
         | 
| 403 | 
            +
             | 
| 404 | 
            +
            										controls.find(".mb_YTVPPlaypause").html(jQuery.mbYTPlayer.controls.play);
         | 
| 405 | 
            +
            										jQuery(YTPlayer).trigger("YTPEnd");
         | 
| 406 | 
            +
            									}
         | 
| 407 | 
            +
             | 
| 408 | 
            +
            									if (state == 3) { // buffering
         | 
| 409 | 
            +
            										if (YTPlayer.state == state)
         | 
| 410 | 
            +
            											return;
         | 
| 411 | 
            +
            										YTPlayer.state = state;
         | 
| 412 | 
            +
            										controls.find(".mb_YTVPPlaypause").html(jQuery.mbYTPlayer.controls.play);
         | 
| 413 | 
            +
            										jQuery(YTPlayer).trigger("YTPBuffering");
         | 
| 414 | 
            +
            									}
         | 
| 415 | 
            +
             | 
| 416 | 
            +
            									if (state == -1) { // unstarted
         | 
| 417 | 
            +
            										if (YTPlayer.state == state)
         | 
| 418 | 
            +
            											return;
         | 
| 419 | 
            +
            										YTPlayer.state = state;
         | 
| 420 | 
            +
             | 
| 421 | 
            +
            										YTPlayer.wrapper.css({opacity:0});
         | 
| 422 | 
            +
             | 
| 423 | 
            +
            										jQuery(YTPlayer).trigger("YTPUnstarted");
         | 
| 424 | 
            +
            									}
         | 
| 425 | 
            +
             | 
| 426 | 
            +
            									if (state == 1) { // play
         | 
| 427 | 
            +
            										if (YTPlayer.state == state)
         | 
| 428 | 
            +
            											return;
         | 
| 429 | 
            +
            										YTPlayer.state = state;
         | 
| 430 | 
            +
            										YTPlayer.player.setPlaybackQuality(YTPlayer.opt.quality);
         | 
| 431 | 
            +
             | 
| 432 | 
            +
            										if(YTPlayer.opt.mute){
         | 
| 433 | 
            +
            											$YTPlayer.muteYTPVolume();
         | 
| 434 | 
            +
            											YTPlayer.opt.mute = false;
         | 
| 435 | 
            +
            										}
         | 
| 436 | 
            +
             | 
| 437 | 
            +
            										if (YTPlayer.opt.autoPlay && YTPlayer.loop == 0) {
         | 
| 438 | 
            +
            											YTPlayer.wrapper.CSSAnimate({opacity: YTPlayer.isAlone ? 1 : YTPlayer.opt.opacity}, 2000);
         | 
| 439 | 
            +
            										} else if(!YTPlayer.isBackground) {
         | 
| 440 | 
            +
            											YTPlayer.wrapper.css({opacity: YTPlayer.isAlone ? 1 : YTPlayer.opt.opacity});
         | 
| 441 | 
            +
            											$YTPlayer.css({background: "rgba(0,0,0,0.5)"});
         | 
| 442 | 
            +
            										}else{
         | 
| 443 | 
            +
            											setTimeout(function () {
         | 
| 444 | 
            +
            												jQuery(YTPlayer.playerEl).CSSAnimate({opacity: 1}, 2000);
         | 
| 445 | 
            +
            												YTPlayer.wrapper.CSSAnimate({opacity: YTPlayer.opt.opacity}, 2000);
         | 
| 446 | 
            +
            											}, 1000);
         | 
| 447 | 
            +
            										}
         | 
| 448 | 
            +
             | 
| 449 | 
            +
            										controls.find(".mb_YTVPPlaypause").html(jQuery.mbYTPlayer.controls.pause);
         | 
| 450 | 
            +
             | 
| 451 | 
            +
            										jQuery(YTPlayer).trigger("YTPStart");
         | 
| 452 | 
            +
            									}
         | 
| 453 | 
            +
             | 
| 454 | 
            +
            									if (state == 2) { // pause
         | 
| 455 | 
            +
            										if (YTPlayer.state == state)
         | 
| 456 | 
            +
            											return;
         | 
| 457 | 
            +
            										YTPlayer.state = state;
         | 
| 458 | 
            +
            										controls.find(".mb_YTVPPlaypause").html(jQuery.mbYTPlayer.controls.play);
         | 
| 459 | 
            +
            										jQuery(YTPlayer).trigger("YTPPause");
         | 
| 460 | 
            +
            									}
         | 
| 461 | 
            +
            								},
         | 
| 462 | 
            +
            								'onPlaybackQualityChange': function (e) {
         | 
| 463 | 
            +
            									if (typeof YTPlayer.opt.onPlaybackQualityChange == "function")
         | 
| 464 | 
            +
            										YTPlayer.opt.onPlaybackQualityChange($YTPlayer);
         | 
| 465 | 
            +
            								},
         | 
| 466 | 
            +
            								'onError'                : function (err) {
         | 
| 467 | 
            +
             | 
| 468 | 
            +
            									if(err.data == 2 && YTPlayer.isPlayList)
         | 
| 469 | 
            +
            										jQuery(YTPlayer).playNext();
         | 
| 470 | 
            +
             | 
| 471 | 
            +
            									if (typeof YTPlayer.opt.onError == "function")
         | 
| 472 | 
            +
            										YTPlayer.opt.onError($YTPlayer, err);
         | 
| 473 | 
            +
            								}
         | 
| 474 | 
            +
            							}
         | 
| 475 | 
            +
            						});
         | 
| 476 | 
            +
            					});
         | 
| 477 | 
            +
            				})
         | 
| 478 | 
            +
            			});
         | 
| 479 | 
            +
            		},
         | 
| 480 | 
            +
             | 
| 481 | 
            +
            		getDataFromFeed: function (videoID, YTPlayer) {
         | 
| 482 | 
            +
            			//Get video info from FEEDS API
         | 
| 483 | 
            +
             | 
| 484 | 
            +
            			YTPlayer.videoID = videoID;
         | 
| 485 | 
            +
            			if (!jQuery.browser.msie) { //!(jQuery.browser.msie && jQuery.browser.version<9)
         | 
| 486 | 
            +
             | 
| 487 | 
            +
            				jQuery.getJSON('http://gdata.youtube.com/feeds/api/videos/' + videoID + '?v=2&alt=jsonc', function (data, status, xhr) {
         | 
| 488 | 
            +
             | 
| 489 | 
            +
            					YTPlayer.dataReceived = true;
         | 
| 490 | 
            +
             | 
| 491 | 
            +
            					var videoData = data.data;
         | 
| 492 | 
            +
             | 
| 493 | 
            +
            					YTPlayer.title = videoData.title;
         | 
| 494 | 
            +
            					YTPlayer.videoData = videoData;
         | 
| 495 | 
            +
             | 
| 496 | 
            +
            					if (YTPlayer.opt.ratio == "auto")
         | 
| 497 | 
            +
            						if (videoData.aspectRatio && videoData.aspectRatio === "widescreen")
         | 
| 498 | 
            +
            							YTPlayer.opt.ratio = "16/9";
         | 
| 499 | 
            +
            						else
         | 
| 500 | 
            +
            							YTPlayer.opt.ratio = "4/3";
         | 
| 501 | 
            +
             | 
| 502 | 
            +
            					if(!YTPlayer.isInit){
         | 
| 503 | 
            +
             | 
| 504 | 
            +
            						YTPlayer.isInit = true;
         | 
| 505 | 
            +
             | 
| 506 | 
            +
            						if (!YTPlayer.isBackground) {
         | 
| 507 | 
            +
            							var bgndURL = YTPlayer.videoData.thumbnail.hqDefault;
         | 
| 508 | 
            +
             | 
| 509 | 
            +
            							jQuery(YTPlayer).css({background: "rgba(0,0,0,0.5) url(" + bgndURL + ") center center", backgroundSize: "cover"});
         | 
| 510 | 
            +
            						}
         | 
| 511 | 
            +
             | 
| 512 | 
            +
            						jQuery(document).trigger("getVideoInfo_" + YTPlayer.opt.id);
         | 
| 513 | 
            +
            					}
         | 
| 514 | 
            +
            					jQuery(YTPlayer).trigger("YTPChanged");
         | 
| 515 | 
            +
            				});
         | 
| 516 | 
            +
             | 
| 517 | 
            +
            				setTimeout(function(){
         | 
| 518 | 
            +
            					if(!YTPlayer.dataReceived && !YTPlayer.isInit){
         | 
| 519 | 
            +
            						YTPlayer.isInit = true;
         | 
| 520 | 
            +
            						jQuery(document).trigger("getVideoInfo_" + YTPlayer.opt.id);
         | 
| 521 | 
            +
            					}
         | 
| 522 | 
            +
            				},2500)
         | 
| 523 | 
            +
             | 
| 524 | 
            +
            			} else {
         | 
| 525 | 
            +
            				YTPlayer.opt.ratio == "auto" ? YTPlayer.opt.ratio = "16/9" : YTPlayer.opt.ratio;
         | 
| 526 | 
            +
             | 
| 527 | 
            +
            				if(!YTPlayer.isInit){
         | 
| 528 | 
            +
            					YTPlayer.isInit = true;
         | 
| 529 | 
            +
            					setTimeout(function(){
         | 
| 530 | 
            +
            						jQuery(document).trigger("getVideoInfo_" + YTPlayer.opt.id);
         | 
| 531 | 
            +
            					},100)
         | 
| 532 | 
            +
             | 
| 533 | 
            +
            				}
         | 
| 534 | 
            +
            				jQuery(YTPlayer).trigger("YTPChanged");
         | 
| 535 | 
            +
            			}
         | 
| 536 | 
            +
            		},
         | 
| 537 | 
            +
             | 
| 538 | 
            +
            		getVideoID: function(){
         | 
| 539 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 540 | 
            +
            			return YTPlayer.videoID || false ;
         | 
| 541 | 
            +
            		},
         | 
| 542 | 
            +
             | 
| 543 | 
            +
            		setVideoQuality: function(quality){
         | 
| 544 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 545 | 
            +
            			YTPlayer.player.setPlaybackQuality(quality);
         | 
| 546 | 
            +
            		},
         | 
| 547 | 
            +
             | 
| 548 | 
            +
            		YTPlaylist : function(videos, shuffle, callback){
         | 
| 549 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 550 | 
            +
             | 
| 551 | 
            +
            			YTPlayer.isPlayList = true;
         | 
| 552 | 
            +
             | 
| 553 | 
            +
            			if(shuffle)
         | 
| 554 | 
            +
            				videos = jQuery.shuffle(videos);
         | 
| 555 | 
            +
             | 
| 556 | 
            +
            			if(!YTPlayer.videoID){
         | 
| 557 | 
            +
            				YTPlayer.videos = videos;
         | 
| 558 | 
            +
            				YTPlayer.videoCounter = 0;
         | 
| 559 | 
            +
            				YTPlayer.videoLength = videos.length;
         | 
| 560 | 
            +
             | 
| 561 | 
            +
            				jQuery(YTPlayer).data("property", videos[0]);
         | 
| 562 | 
            +
            				jQuery(YTPlayer).mb_YTPlayer();
         | 
| 563 | 
            +
            			}
         | 
| 564 | 
            +
             | 
| 565 | 
            +
            			if(typeof callback == "function")
         | 
| 566 | 
            +
            				jQuery(YTPlayer).on("YTPChanged",function(){
         | 
| 567 | 
            +
            					callback(YTPlayer);
         | 
| 568 | 
            +
            				});
         | 
| 569 | 
            +
             | 
| 570 | 
            +
            			jQuery(YTPlayer).on("YTPEnd", function(){
         | 
| 571 | 
            +
            				jQuery(YTPlayer).playNext();
         | 
| 572 | 
            +
            			});
         | 
| 573 | 
            +
            		},
         | 
| 574 | 
            +
             | 
| 575 | 
            +
            		playNext: function(){
         | 
| 576 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 577 | 
            +
            			YTPlayer.videoCounter++;
         | 
| 578 | 
            +
            			if(YTPlayer.videoCounter>=YTPlayer.videoLength)
         | 
| 579 | 
            +
            				YTPlayer.videoCounter = 0;
         | 
| 580 | 
            +
            			jQuery(YTPlayer.playerEl).css({opacity:0});
         | 
| 581 | 
            +
            			jQuery(YTPlayer).changeMovie(YTPlayer.videos[YTPlayer.videoCounter]);
         | 
| 582 | 
            +
            		},
         | 
| 583 | 
            +
             | 
| 584 | 
            +
            		playPrev: function(){
         | 
| 585 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 586 | 
            +
            			YTPlayer.videoCounter--;
         | 
| 587 | 
            +
            			if(YTPlayer.videoCounter==0)
         | 
| 588 | 
            +
            				YTPlayer.videoCounter = YTPlayer.videoLength;
         | 
| 589 | 
            +
            			jQuery(YTPlayer.playerEl).css({opacity:0});
         | 
| 590 | 
            +
            			jQuery(YTPlayer).changeMovie(YTPlayer.videos[YTPlayer.videoCounter]);
         | 
| 591 | 
            +
            		},
         | 
| 592 | 
            +
             | 
| 593 | 
            +
            		changeMovie: function (opt) {
         | 
| 594 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 595 | 
            +
            			var data = YTPlayer.opt;
         | 
| 596 | 
            +
            			if (opt) {
         | 
| 597 | 
            +
            				jQuery.extend(data, opt);
         | 
| 598 | 
            +
            			}
         | 
| 599 | 
            +
             | 
| 600 | 
            +
            			YTPlayer.videoID = data.videoURL.getVideoID();
         | 
| 601 | 
            +
             | 
| 602 | 
            +
            			jQuery(YTPlayer).pauseYTP();
         | 
| 603 | 
            +
            			var timer = jQuery.browser.msie ? 1000 : 0;
         | 
| 604 | 
            +
            			jQuery(YTPlayer).getPlayer().cueVideoByUrl(encodeURI("http://www.youtube.com/v/" + YTPlayer.videoID) , 5 , YTPlayer.opt.quality);
         | 
| 605 | 
            +
             | 
| 606 | 
            +
            			setTimeout(function(){
         | 
| 607 | 
            +
            				jQuery(YTPlayer).playYTP();
         | 
| 608 | 
            +
            				jQuery(YTPlayer).one("YTPStart", function(){
         | 
| 609 | 
            +
            					jQuery(YTPlayer.playerEl).CSSAnimate({opacity:1},2000);
         | 
| 610 | 
            +
            				});
         | 
| 611 | 
            +
             | 
| 612 | 
            +
            			},timer)
         | 
| 613 | 
            +
             | 
| 614 | 
            +
            			if (YTPlayer.opt.mute) {
         | 
| 615 | 
            +
            				jQuery(YTPlayer).muteYTPVolume();
         | 
| 616 | 
            +
            			}else{
         | 
| 617 | 
            +
            				jQuery(YTPlayer).unmuteYTPVolume();
         | 
| 618 | 
            +
            			}
         | 
| 619 | 
            +
             | 
| 620 | 
            +
            			if (YTPlayer.opt.addRaster) {
         | 
| 621 | 
            +
            				var retina = (window.retina || window.devicePixelRatio > 1);
         | 
| 622 | 
            +
            				YTPlayer.overlay.addClass(retina ? "raster retina" : "raster");
         | 
| 623 | 
            +
            			}else{
         | 
| 624 | 
            +
            				YTPlayer.overlay.removeClass("raster");
         | 
| 625 | 
            +
            				YTPlayer.overlay.removeClass("retina");
         | 
| 626 | 
            +
            			}
         | 
| 627 | 
            +
             | 
| 628 | 
            +
            			jQuery("#controlBar_" + YTPlayer.id).remove();
         | 
| 629 | 
            +
             | 
| 630 | 
            +
            			if (YTPlayer.opt.showControls)
         | 
| 631 | 
            +
            				jQuery(YTPlayer).buildYTPControls();
         | 
| 632 | 
            +
             | 
| 633 | 
            +
            			jQuery.mbYTPlayer.getDataFromFeed(YTPlayer.videoID, YTPlayer);
         | 
| 634 | 
            +
            			jQuery(YTPlayer).optimizeDisplay();
         | 
| 635 | 
            +
            			jQuery.mbYTPlayer.checkForState(YTPlayer);
         | 
| 636 | 
            +
             | 
| 637 | 
            +
            		},
         | 
| 638 | 
            +
             | 
| 639 | 
            +
            		getPlayer: function () {
         | 
| 640 | 
            +
            			return jQuery(this).get(0).player;
         | 
| 641 | 
            +
            		},
         | 
| 642 | 
            +
             | 
| 643 | 
            +
            		playerDestroy: function () {
         | 
| 644 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 645 | 
            +
            			ytp.YTAPIReady = false;
         | 
| 646 | 
            +
            			ytp.isInit = false;
         | 
| 647 | 
            +
            			YTPlayer.opt.isInit = false;
         | 
| 648 | 
            +
            			YTPlayer.videoID = null;
         | 
| 649 | 
            +
             | 
| 650 | 
            +
            			var playerBox = YTPlayer.wrapper;
         | 
| 651 | 
            +
            			playerBox.remove();
         | 
| 652 | 
            +
            			jQuery("#controlBar_" + YTPlayer.id).remove();
         | 
| 653 | 
            +
            		},
         | 
| 654 | 
            +
             | 
| 655 | 
            +
            		fullscreen: function(real) {
         | 
| 656 | 
            +
             | 
| 657 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 658 | 
            +
             | 
| 659 | 
            +
            			var controls = jQuery("#controlBar_" + YTPlayer.id);
         | 
| 660 | 
            +
            			var fullScreenBtn = controls.find(".mb_OnlyYT");
         | 
| 661 | 
            +
            			var videoWrapper = jQuery(YTPlayer.wrapper);
         | 
| 662 | 
            +
            			if(real){
         | 
| 663 | 
            +
            				var fullscreenchange = jQuery.browser.mozilla ? "mozfullscreenchange" : jQuery.browser.webkit ? "webkitfullscreenchange" : "fullscreenchange";
         | 
| 664 | 
            +
            				jQuery(document).off(fullscreenchange);
         | 
| 665 | 
            +
            				jQuery(document).on(fullscreenchange, function() {
         | 
| 666 | 
            +
            					var isFullScreen = RunPrefixMethod(document, "IsFullScreen") || RunPrefixMethod(document, "FullScreen");
         | 
| 667 | 
            +
             | 
| 668 | 
            +
            					if (!isFullScreen) {
         | 
| 669 | 
            +
            						jQuery(YTPlayer).removeClass("fullscreen");
         | 
| 670 | 
            +
            						YTPlayer.isAlone = false;
         | 
| 671 | 
            +
            						fullScreenBtn.html(jQuery.mbYTPlayer.controls.onlyYT)
         | 
| 672 | 
            +
            						jQuery(YTPlayer).setVideoQuality(YTPlayer.opt.quality);
         | 
| 673 | 
            +
             | 
| 674 | 
            +
            						if (YTPlayer.isBackground){
         | 
| 675 | 
            +
            							jQuery("body").after(controls);
         | 
| 676 | 
            +
            						}else{
         | 
| 677 | 
            +
            							YTPlayer.wrapper.before(controls);
         | 
| 678 | 
            +
            						}
         | 
| 679 | 
            +
            					}else{
         | 
| 680 | 
            +
            						jQuery(YTPlayer).setVideoQuality("default");
         | 
| 681 | 
            +
            					}
         | 
| 682 | 
            +
            				});
         | 
| 683 | 
            +
            			}
         | 
| 684 | 
            +
             | 
| 685 | 
            +
            			if (!YTPlayer.isAlone) {
         | 
| 686 | 
            +
             | 
| 687 | 
            +
            				if (YTPlayer.player.getPlayerState() >= 1) {
         | 
| 688 | 
            +
             | 
| 689 | 
            +
            					if(YTPlayer.player.getPlayerState() != 1 && YTPlayer.player.getPlayerState() != 2)
         | 
| 690 | 
            +
            						jQuery(YTPlayer).playYTP();
         | 
| 691 | 
            +
             | 
| 692 | 
            +
            					if(real){
         | 
| 693 | 
            +
            						YTPlayer.wrapper.append(controls);
         | 
| 694 | 
            +
            						jQuery(YTPlayer).addClass("fullscreen");
         | 
| 695 | 
            +
            						launchFullscreen(videoWrapper.get(0));
         | 
| 696 | 
            +
            					} else
         | 
| 697 | 
            +
            						videoWrapper.css({zIndex: 10000}).CSSAnimate({opacity: 1}, 1000, 0);
         | 
| 698 | 
            +
             | 
| 699 | 
            +
            					jQuery(YTPlayer).trigger("YTPFullScreenStart");
         | 
| 700 | 
            +
             | 
| 701 | 
            +
            					fullScreenBtn.html(jQuery.mbYTPlayer.controls.showSite)
         | 
| 702 | 
            +
            					YTPlayer.isAlone = true;
         | 
| 703 | 
            +
            				}
         | 
| 704 | 
            +
             | 
| 705 | 
            +
            			} else {
         | 
| 706 | 
            +
             | 
| 707 | 
            +
            				if(real){
         | 
| 708 | 
            +
            					cancelFullscreen();
         | 
| 709 | 
            +
            				} else{
         | 
| 710 | 
            +
            					videoWrapper.CSSAnimate({opacity: YTPlayer.opt.opacity}, 500);
         | 
| 711 | 
            +
            				}
         | 
| 712 | 
            +
             | 
| 713 | 
            +
            				jQuery(YTPlayer).trigger("YTPFullScreenEnd");
         | 
| 714 | 
            +
             | 
| 715 | 
            +
            				videoWrapper.css({zIndex: -1});
         | 
| 716 | 
            +
            				fullScreenBtn.html(jQuery.mbYTPlayer.controls.onlyYT)
         | 
| 717 | 
            +
            				YTPlayer.isAlone = false;
         | 
| 718 | 
            +
            			}
         | 
| 719 | 
            +
             | 
| 720 | 
            +
            			function RunPrefixMethod(obj, method) {
         | 
| 721 | 
            +
            				var pfx = ["webkit", "moz", "ms", "o", ""];
         | 
| 722 | 
            +
            				var p = 0, m, t;
         | 
| 723 | 
            +
            				while (p < pfx.length && !obj[m]) {
         | 
| 724 | 
            +
            					m = method;
         | 
| 725 | 
            +
            					if (pfx[p] == "") {
         | 
| 726 | 
            +
            						m = m.substr(0,1).toLowerCase() + m.substr(1);
         | 
| 727 | 
            +
            					}
         | 
| 728 | 
            +
            					m = pfx[p] + m;
         | 
| 729 | 
            +
            					t = typeof obj[m];
         | 
| 730 | 
            +
            					if (t != "undefined") {
         | 
| 731 | 
            +
            						pfx = [pfx[p]];
         | 
| 732 | 
            +
            						return (t == "function" ? obj[m]() : obj[m]);
         | 
| 733 | 
            +
            					}
         | 
| 734 | 
            +
            					p++;
         | 
| 735 | 
            +
            				}
         | 
| 736 | 
            +
            			}
         | 
| 737 | 
            +
             | 
| 738 | 
            +
            			function launchFullscreen(element) {
         | 
| 739 | 
            +
            				RunPrefixMethod(element, "RequestFullScreen");
         | 
| 740 | 
            +
            			}
         | 
| 741 | 
            +
             | 
| 742 | 
            +
            			function cancelFullscreen() {
         | 
| 743 | 
            +
            				if (RunPrefixMethod(document, "FullScreen") || RunPrefixMethod(document, "IsFullScreen")) {
         | 
| 744 | 
            +
            					RunPrefixMethod(document, "CancelFullScreen");
         | 
| 745 | 
            +
            				}
         | 
| 746 | 
            +
            			}
         | 
| 747 | 
            +
            		},
         | 
| 748 | 
            +
             | 
| 749 | 
            +
            		playYTP: function () {
         | 
| 750 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 751 | 
            +
            			var controls = jQuery("#controlBar_" + YTPlayer.id);
         | 
| 752 | 
            +
            			var playBtn = controls.find(".mb_YTVPPlaypause");
         | 
| 753 | 
            +
            			playBtn.html(jQuery.mbYTPlayer.controls.pause);
         | 
| 754 | 
            +
            			YTPlayer.player.playVideo();
         | 
| 755 | 
            +
             | 
| 756 | 
            +
            			YTPlayer.wrapper.CSSAnimate({opacity: YTPlayer.opt.opacity}, 2000);
         | 
| 757 | 
            +
            			$(YTPlayer).on("YTPStart", function(){
         | 
| 758 | 
            +
            				jQuery(YTPlayer).css("background", "none");
         | 
| 759 | 
            +
            			})
         | 
| 760 | 
            +
            		},
         | 
| 761 | 
            +
             | 
| 762 | 
            +
            		toggleLoops: function () {
         | 
| 763 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 764 | 
            +
            			var data = YTPlayer.opt;
         | 
| 765 | 
            +
            			if (data.loop == 1) {
         | 
| 766 | 
            +
            				data.loop = 0;
         | 
| 767 | 
            +
            			} else {
         | 
| 768 | 
            +
            				if(data.startAt) {
         | 
| 769 | 
            +
            					YTPlayer.player.seekTo(data.startAt);
         | 
| 770 | 
            +
            				} else {
         | 
| 771 | 
            +
            					YTPlayer.player.playVideo();
         | 
| 772 | 
            +
            				}
         | 
| 773 | 
            +
            				data.loop = 1;
         | 
| 774 | 
            +
            			}
         | 
| 775 | 
            +
            		},
         | 
| 776 | 
            +
             | 
| 777 | 
            +
            		stopYTP: function () {
         | 
| 778 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 779 | 
            +
            			var controls = jQuery("#controlBar_" + YTPlayer.id);
         | 
| 780 | 
            +
            			var playBtn = controls.find(".mb_YTVPPlaypause");
         | 
| 781 | 
            +
            			playBtn.html(jQuery.mbYTPlayer.controls.play);
         | 
| 782 | 
            +
            			YTPlayer.player.stopVideo();
         | 
| 783 | 
            +
            		},
         | 
| 784 | 
            +
             | 
| 785 | 
            +
            		pauseYTP: function () {
         | 
| 786 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 787 | 
            +
            			var data = YTPlayer.opt;
         | 
| 788 | 
            +
            			var controls = jQuery("#controlBar_" + YTPlayer.id);
         | 
| 789 | 
            +
            			var playBtn = controls.find(".mb_YTVPPlaypause");
         | 
| 790 | 
            +
            			playBtn.html(jQuery.mbYTPlayer.controls.play);
         | 
| 791 | 
            +
            			YTPlayer.player.pauseVideo();
         | 
| 792 | 
            +
            		},
         | 
| 793 | 
            +
             | 
| 794 | 
            +
            		setYTPVolume: function (val) {
         | 
| 795 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 796 | 
            +
            			if (!val && !YTPlayer.opt.vol && player.getVolume() == 0)
         | 
| 797 | 
            +
            				jQuery(YTPlayer).unmuteYTPVolume();
         | 
| 798 | 
            +
            			else if ((!val && YTPlayer.player.getVolume() > 0) || (val && YTPlayer.player.getVolume() == val))
         | 
| 799 | 
            +
            				jQuery(YTPlayer).muteYTPVolume();
         | 
| 800 | 
            +
            			else
         | 
| 801 | 
            +
            				YTPlayer.opt.vol = val;
         | 
| 802 | 
            +
            			YTPlayer.player.setVolume(YTPlayer.opt.vol);
         | 
| 803 | 
            +
            		},
         | 
| 804 | 
            +
             | 
| 805 | 
            +
            		muteYTPVolume: function () {
         | 
| 806 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 807 | 
            +
            			YTPlayer.opt.vol = YTPlayer.player.getVolume() || 50;
         | 
| 808 | 
            +
            			YTPlayer.player.mute();
         | 
| 809 | 
            +
            			YTPlayer.player.setVolume(0);
         | 
| 810 | 
            +
            			var controls = jQuery("#controlBar_" + YTPlayer.id);
         | 
| 811 | 
            +
            			var muteBtn = controls.find(".mb_YTVPMuteUnmute");
         | 
| 812 | 
            +
            			muteBtn.html(jQuery.mbYTPlayer.controls.unmute);
         | 
| 813 | 
            +
            		},
         | 
| 814 | 
            +
             | 
| 815 | 
            +
            		unmuteYTPVolume: function () {
         | 
| 816 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 817 | 
            +
             | 
| 818 | 
            +
            			YTPlayer.player.unMute();
         | 
| 819 | 
            +
            			YTPlayer.player.setVolume(YTPlayer.opt.vol);
         | 
| 820 | 
            +
             | 
| 821 | 
            +
            			var controls = jQuery("#controlBar_" + YTPlayer.id);
         | 
| 822 | 
            +
            			var muteBtn = controls.find(".mb_YTVPMuteUnmute");
         | 
| 823 | 
            +
            			muteBtn.html(jQuery.mbYTPlayer.controls.mute);
         | 
| 824 | 
            +
            		},
         | 
| 825 | 
            +
             | 
| 826 | 
            +
            		manageYTPProgress: function () {
         | 
| 827 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 828 | 
            +
            			var controls = jQuery("#controlBar_" + YTPlayer.id);
         | 
| 829 | 
            +
            			var progressBar = controls.find(".mb_YTVPProgress");
         | 
| 830 | 
            +
            			var loadedBar = controls.find(".mb_YTVPLoaded");
         | 
| 831 | 
            +
            			var timeBar = controls.find(".mb_YTVTime");
         | 
| 832 | 
            +
            			var totW = progressBar.outerWidth();
         | 
| 833 | 
            +
             | 
| 834 | 
            +
            			var currentTime = Math.floor(YTPlayer.player.getCurrentTime());
         | 
| 835 | 
            +
            			var totalTime = Math.floor(YTPlayer.player.getDuration());
         | 
| 836 | 
            +
            			var timeW = (currentTime * totW) / totalTime;
         | 
| 837 | 
            +
            			var startLeft = 0;
         | 
| 838 | 
            +
             | 
| 839 | 
            +
            			var loadedW = YTPlayer.player.getVideoLoadedFraction() * 100;
         | 
| 840 | 
            +
             | 
| 841 | 
            +
            			loadedBar.css({left: startLeft, width: loadedW + "%"});
         | 
| 842 | 
            +
            			timeBar.css({left: 0, width: timeW});
         | 
| 843 | 
            +
            			return {totalTime: totalTime, currentTime: currentTime};
         | 
| 844 | 
            +
            		},
         | 
| 845 | 
            +
             | 
| 846 | 
            +
            		buildYTPControls: function () {
         | 
| 847 | 
            +
            			var YTPlayer = this.get(0);
         | 
| 848 | 
            +
            			var data = YTPlayer.opt;
         | 
| 849 | 
            +
             | 
| 850 | 
            +
            			if(jQuery("#controlBar_"+ YTPlayer.id).length)
         | 
| 851 | 
            +
            				return;
         | 
| 852 | 
            +
             | 
| 853 | 
            +
            			var controlBar = jQuery("<span/>").attr("id", "controlBar_" + YTPlayer.id).addClass("mb_YTVPBar").css({whiteSpace: "noWrap", position: YTPlayer.isBackground ? "fixed" : "absolute", zIndex: YTPlayer.isBackground ? 10000 : 1000}).hide();
         | 
| 854 | 
            +
            			var buttonBar = jQuery("<div/>").addClass("buttonBar");
         | 
| 855 | 
            +
            			var playpause = jQuery("<span>" + jQuery.mbYTPlayer.controls.play + "</span>").addClass("mb_YTVPPlaypause ytpicon").click(function () {
         | 
| 856 | 
            +
            				if (YTPlayer.player.getPlayerState() == 1)
         | 
| 857 | 
            +
            					jQuery(YTPlayer).pauseYTP();
         | 
| 858 | 
            +
            				else
         | 
| 859 | 
            +
            					jQuery(YTPlayer).playYTP();
         | 
| 860 | 
            +
            			});
         | 
| 861 | 
            +
             | 
| 862 | 
            +
            			var MuteUnmute = jQuery("<span>" + jQuery.mbYTPlayer.controls.mute + "</span>").addClass("mb_YTVPMuteUnmute ytpicon").click(function () {
         | 
| 863 | 
            +
            				if (YTPlayer.player.getVolume()==0) {
         | 
| 864 | 
            +
            					jQuery(YTPlayer).unmuteYTPVolume();
         | 
| 865 | 
            +
            				} else {
         | 
| 866 | 
            +
            					jQuery(YTPlayer).muteYTPVolume();
         | 
| 867 | 
            +
            				}
         | 
| 868 | 
            +
            			});
         | 
| 869 | 
            +
             | 
| 870 | 
            +
            			var idx = jQuery("<span/>").addClass("mb_YTVPTime");
         | 
| 871 | 
            +
             | 
| 872 | 
            +
            			var vURL = data.videoURL;
         | 
| 873 | 
            +
            			if(vURL.indexOf("http") < 0)
         | 
| 874 | 
            +
            				vURL = "http://www.youtube.com/watch?v="+data.videoURL;
         | 
| 875 | 
            +
            			var movieUrl = jQuery("<span/>").html(jQuery.mbYTPlayer.controls.ytLogo).addClass("mb_YTVPUrl ytpicon").attr("title", "view on YouTube").on("click", function () {window.open(vURL, "viewOnYT")});
         | 
| 876 | 
            +
            			var onlyVideo = jQuery("<span/>").html(jQuery.mbYTPlayer.controls.onlyYT).addClass("mb_OnlyYT ytpicon").on("click",function () {jQuery(YTPlayer).fullscreen(data.realfullscreen);});
         | 
| 877 | 
            +
             | 
| 878 | 
            +
            			var progressBar = jQuery("<div/>").addClass("mb_YTVPProgress").css("position", "absolute").click(function (e) {
         | 
| 879 | 
            +
            				timeBar.css({width: (e.clientX - timeBar.offset().left)});
         | 
| 880 | 
            +
            				YTPlayer.timeW = e.clientX - timeBar.offset().left;
         | 
| 881 | 
            +
            				controlBar.find(".mb_YTVPLoaded").css({width: 0});
         | 
| 882 | 
            +
            				var totalTime = Math.floor(YTPlayer.player.getDuration());
         | 
| 883 | 
            +
            				YTPlayer.goto = (timeBar.outerWidth() * totalTime) / progressBar.outerWidth();
         | 
| 884 | 
            +
             | 
| 885 | 
            +
            				YTPlayer.player.seekTo(parseFloat(YTPlayer.goto), true);
         | 
| 886 | 
            +
            				controlBar.find(".mb_YTVPLoaded").css({width: 0});
         | 
| 887 | 
            +
            			});
         | 
| 888 | 
            +
             | 
| 889 | 
            +
            			var loadedBar = jQuery("<div/>").addClass("mb_YTVPLoaded").css("position", "absolute");
         | 
| 890 | 
            +
            			var timeBar = jQuery("<div/>").addClass("mb_YTVTime").css("position", "absolute");
         | 
| 891 | 
            +
             | 
| 892 | 
            +
            			progressBar.append(loadedBar).append(timeBar);
         | 
| 893 | 
            +
            			buttonBar.append(playpause).append(MuteUnmute).append(idx);
         | 
| 894 | 
            +
             | 
| 895 | 
            +
            			if (data.printUrl){
         | 
| 896 | 
            +
            				buttonBar.append(movieUrl);
         | 
| 897 | 
            +
            			}
         | 
| 898 | 
            +
             | 
| 899 | 
            +
            			if (YTPlayer.isBackground || (YTPlayer.opt.realfullscreen && !YTPlayer.isBackground))
         | 
| 900 | 
            +
            				buttonBar.append(onlyVideo);
         | 
| 901 | 
            +
             | 
| 902 | 
            +
            			controlBar.append(buttonBar).append(progressBar);
         | 
| 903 | 
            +
             | 
| 904 | 
            +
            			if (!YTPlayer.isBackground) {
         | 
| 905 | 
            +
            				controlBar.addClass("inlinePlayer");
         | 
| 906 | 
            +
            				YTPlayer.wrapper.before(controlBar);
         | 
| 907 | 
            +
            			} else {
         | 
| 908 | 
            +
            				jQuery("body").after(controlBar);
         | 
| 909 | 
            +
            			}
         | 
| 910 | 
            +
            			controlBar.fadeIn();
         | 
| 911 | 
            +
             | 
| 912 | 
            +
            		},
         | 
| 913 | 
            +
             | 
| 914 | 
            +
            		checkForState:function(YTPlayer){
         | 
| 915 | 
            +
             | 
| 916 | 
            +
            			var controlBar = jQuery("#controlBar_" + YTPlayer.id);
         | 
| 917 | 
            +
            			var data = YTPlayer.opt;
         | 
| 918 | 
            +
            			var startAt = YTPlayer.opt.startAt ? YTPlayer.opt.startAt : 1;
         | 
| 919 | 
            +
             | 
| 920 | 
            +
            			YTPlayer.getState = setInterval(function () {
         | 
| 921 | 
            +
            				var prog = jQuery(YTPlayer).manageYTPProgress();
         | 
| 922 | 
            +
             | 
| 923 | 
            +
            				controlBar.find(".mb_YTVPTime").html(jQuery.mbYTPlayer.formatTime(prog.currentTime) + " / " + jQuery.mbYTPlayer.formatTime(prog.totalTime));
         | 
| 924 | 
            +
            				if (parseFloat(YTPlayer.player.getDuration() - 3) < YTPlayer.player.getCurrentTime() && YTPlayer.player.getPlayerState() == 1 && !YTPlayer.isPlayList) {
         | 
| 925 | 
            +
            					if(!data.loop){
         | 
| 926 | 
            +
            						YTPlayer.player.pauseVideo();
         | 
| 927 | 
            +
            						YTPlayer.wrapper.CSSAnimate({opacity: 0}, 2000,function(){
         | 
| 928 | 
            +
            							YTPlayer.player.seekTo(startAt);
         | 
| 929 | 
            +
             | 
| 930 | 
            +
            							if (!YTPlayer.isBackground) {
         | 
| 931 | 
            +
            								var bgndURL = YTPlayer.videoData.thumbnail.hqDefault;
         | 
| 932 | 
            +
            								jQuery(YTPlayer).css({background: "rgba(0,0,0,0.5) url(" + bgndURL + ") center center", backgroundSize: "cover"});
         | 
| 933 | 
            +
            							}
         | 
| 934 | 
            +
            						});
         | 
| 935 | 
            +
            					}else
         | 
| 936 | 
            +
            						YTPlayer.player.seekTo(startAt);
         | 
| 937 | 
            +
            					jQuery(YTPlayer).trigger("YTPEnd");
         | 
| 938 | 
            +
            				}
         | 
| 939 | 
            +
            			}, 1);
         | 
| 940 | 
            +
             | 
| 941 | 
            +
            		},
         | 
| 942 | 
            +
             | 
| 943 | 
            +
            		formatTime      : function (s) {
         | 
| 944 | 
            +
            			var min = Math.floor(s / 60);
         | 
| 945 | 
            +
            			var sec = Math.floor(s - (60 * min));
         | 
| 946 | 
            +
            			return (min < 9 ? "0" + min : min) + " : " + (sec < 9 ? "0" + sec : sec);
         | 
| 947 | 
            +
            		}
         | 
| 948 | 
            +
            	};
         | 
| 949 | 
            +
             | 
| 950 | 
            +
            	jQuery.fn.toggleVolume = function () {
         | 
| 951 | 
            +
            		var YTPlayer = this.get(0);
         | 
| 952 | 
            +
            		if (!YTPlayer)
         | 
| 953 | 
            +
            			return;
         | 
| 954 | 
            +
             | 
| 955 | 
            +
            		if (YTPlayer.player.isMuted()) {
         | 
| 956 | 
            +
            			jQuery(YTPlayer).unmuteYTPVolume();
         | 
| 957 | 
            +
            			return true;
         | 
| 958 | 
            +
            		} else {
         | 
| 959 | 
            +
            			jQuery(YTPlayer).muteYTPVolume();
         | 
| 960 | 
            +
            			return false;
         | 
| 961 | 
            +
            		}
         | 
| 962 | 
            +
            	};
         | 
| 963 | 
            +
             | 
| 964 | 
            +
            	jQuery.fn.optimizeDisplay = function () {
         | 
| 965 | 
            +
            		var YTPlayer = this.get(0);
         | 
| 966 | 
            +
            		var data = YTPlayer.opt;
         | 
| 967 | 
            +
            		var playerBox = jQuery(YTPlayer.playerEl);
         | 
| 968 | 
            +
            		var win = {};
         | 
| 969 | 
            +
            		var el = !YTPlayer.isBackground ? data.containment : jQuery(window);
         | 
| 970 | 
            +
             | 
| 971 | 
            +
            		win.width = el.width();
         | 
| 972 | 
            +
            		win.height = el.height();
         | 
| 973 | 
            +
             | 
| 974 | 
            +
            		var margin = 24;
         | 
| 975 | 
            +
            		var vid = {};
         | 
| 976 | 
            +
            		vid.width = win.width + ((win.width * margin) / 100);
         | 
| 977 | 
            +
            		vid.height = data.ratio == "16/9" ? Math.ceil((9 * win.width) / 16) : Math.ceil((3 * win.width) / 4);
         | 
| 978 | 
            +
            		vid.marginTop = -((vid.height - win.height) / 2);
         | 
| 979 | 
            +
            		vid.marginLeft = -((win.width * (margin / 2)) / 100);
         | 
| 980 | 
            +
             | 
| 981 | 
            +
            		if (vid.height < win.height) {
         | 
| 982 | 
            +
            			vid.height = win.height + ((win.height * margin) / 100);
         | 
| 983 | 
            +
            			vid.width = data.ratio == "16/9" ? Math.floor((16 * win.height) / 9) : Math.floor((4 * win.height) / 3);
         | 
| 984 | 
            +
            			vid.marginTop = -((win.height * (margin / 2)) / 100);
         | 
| 985 | 
            +
            			vid.marginLeft = -((vid.width - win.width) / 2);
         | 
| 986 | 
            +
            		}
         | 
| 987 | 
            +
            		playerBox.css({width: vid.width, height: vid.height, marginTop: vid.marginTop, marginLeft: vid.marginLeft});
         | 
| 988 | 
            +
            	};
         | 
| 989 | 
            +
             | 
| 990 | 
            +
            	jQuery.shuffle = function(arr) {
         | 
| 991 | 
            +
            		var newArray = arr.slice();
         | 
| 992 | 
            +
            		var len = newArray.length;
         | 
| 993 | 
            +
            		var i = len;
         | 
| 994 | 
            +
            		while (i--) {
         | 
| 995 | 
            +
            			var p = parseInt(Math.random()*len);
         | 
| 996 | 
            +
            			var t = newArray[i];
         | 
| 997 | 
            +
            			newArray[i] = newArray[p];
         | 
| 998 | 
            +
            			newArray[p] = t;
         | 
| 999 | 
            +
            		}
         | 
| 1000 | 
            +
            		return newArray;
         | 
| 1001 | 
            +
            	};
         | 
| 1002 | 
            +
             | 
| 1003 | 
            +
            	jQuery.fn.mb_YTPlayer = jQuery.mbYTPlayer.buildPlayer;
         | 
| 1004 | 
            +
            	jQuery.fn.YTPlaylist = jQuery.mbYTPlayer.YTPlaylist;
         | 
| 1005 | 
            +
            	jQuery.fn.playNext = jQuery.mbYTPlayer.playNext;
         | 
| 1006 | 
            +
            	jQuery.fn.changeMovie = jQuery.mbYTPlayer.changeMovie;
         | 
| 1007 | 
            +
            	jQuery.fn.getVideoID = jQuery.mbYTPlayer.getVideoID;
         | 
| 1008 | 
            +
            	jQuery.fn.getPlayer = jQuery.mbYTPlayer.getPlayer;
         | 
| 1009 | 
            +
            	jQuery.fn.playerDestroy = jQuery.mbYTPlayer.playerDestroy;
         | 
| 1010 | 
            +
            	jQuery.fn.fullscreen = jQuery.mbYTPlayer.fullscreen;
         | 
| 1011 | 
            +
            	jQuery.fn.buildYTPControls = jQuery.mbYTPlayer.buildYTPControls;
         | 
| 1012 | 
            +
            	jQuery.fn.playYTP = jQuery.mbYTPlayer.playYTP;
         | 
| 1013 | 
            +
            	jQuery.fn.toggleLoops = jQuery.mbYTPlayer.toggleLoops;
         | 
| 1014 | 
            +
            	jQuery.fn.stopYTP = jQuery.mbYTPlayer.stopYTP;
         | 
| 1015 | 
            +
            	jQuery.fn.pauseYTP = jQuery.mbYTPlayer.pauseYTP;
         | 
| 1016 | 
            +
            	jQuery.fn.muteYTPVolume = jQuery.mbYTPlayer.muteYTPVolume;
         | 
| 1017 | 
            +
            	jQuery.fn.unmuteYTPVolume = jQuery.mbYTPlayer.unmuteYTPVolume;
         | 
| 1018 | 
            +
            	jQuery.fn.setYTPVolume = jQuery.mbYTPlayer.setYTPVolume;
         | 
| 1019 | 
            +
            	jQuery.fn.setVideoQuality = jQuery.mbYTPlayer.setVideoQuality;
         | 
| 1020 | 
            +
            	jQuery.fn.manageYTPProgress = jQuery.mbYTPlayer.manageYTPProgress;
         | 
| 1021 | 
            +
             | 
| 1022 | 
            +
            })(jQuery);
         |