﻿(function (g) {
    var d = {}; d.ytplayers = {}; d.inits = []; d.iframeScriptInited = false; d.inited = false; g.tubeplayer = {}; g.tubeplayer.defaults = { afterReady: function () { }, stateChange: function (c) { var a = this.onPlayer; return function (b) { if (typeof b == "object") b = b.data; switch (b) { case -1: return a.unstarted[c](); case 0: return a.ended[c](); case 1: return a.playing[c](); case 2: return a.paused[c](); case 3: return a.buffering[c](); case 5: return a.cued[c](); default: return null } } }, onError: function (c) {
        var a = this.onErr; return function (b) {
            if (typeof b ==
"object") b = b.data; switch (b) { case 2: return a.invalidParameter[c](); case 100: return a.notFound[c](); case 101: case 150: return a.notEmbeddable[c](); default: return null } 
        } 
    }, qualityChange: function (c) { var a = this; return function (b) { if (typeof b == "object") b = b.data; return a.onQualityChange[c](b) } }, onQualityChange: {}, onPlayer: { unstarted: {}, ended: {}, playing: {}, paused: {}, buffering: {}, cued: {} }, onErr: { notFound: {}, notEmbeddable: {}, invalidParameter: {}}
    }; var k = { width: 425, height: 355, allowFullScreen: "true", initialVideo: "DkoeNLuMbcI",
        preferredQuality: "default", showControls: 1, showRelated: 0, autoPlay: 0, swfobjectURL: "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js", allowScriptAccess: "always", playerID: "tubeplayer-player-container", iframed: true, onPlay: function () { }, onPause: function () { }, onStop: function () { }, onSeek: function () { }, onMute: function () { }, onUnMute: function () { }, onPlayerUnstarted: function () { }, onPlayerEnded: function () { }, onPlayerPlaying: function () { }, onPlayerPaused: function () { }, onPlayerBuffering: function () { }, onPlayerCued: function () { },
        onQualityChange: function () { }, onErrorNotFound: function () { }, onErrorNotEmbeddable: function () { }, onErrorInvalidParameter: function () { } 
    }; g.fn.tubeplayer = function (c, a) { var b = g(this), f = typeof c; if (arguments.length == 0 || f == "object") return b.each(function () { d.init(g(this), c) }); else if (f == "string") return b.triggerHandler(c + ".tubeplayer", a || null) }; var h = function (c) { return function (a, b) { var f = d.getPkg(a); if (f.ytplayer) { a = c(a, b, f); if (typeof a == "undefined") a = f.$player; return a } return f.$player } }; g.tubeplayer.getPlayers =
function () { return d.ytplayers }; d.init = function (c, a) { if (c.hasClass("jquery-youtube-tubeplayer")) return c; a = g.extend({}, k, a); a.playerID += (new Date).valueOf(); c.addClass("jquery-youtube-tubeplayer").data("opts.tubeplayer", a); for (e in j) c.bind(e + ".tubeplayer", c, j[e]); d.initDefaults(g.tubeplayer.defaults, a); jQuery("<div></div>").attr("id", a.playerID).appendTo(c); d.initPlayer(c, a); return c }; d.getPkg = function (c) { c = c.data; var a = c.data("opts.tubeplayer"); return { $player: c, opts: a, ytplayer: d.ytplayers[a.playerID]} };
    d.iframeReady = function (c) {
        d.inits.push(function () {
            new YT.Player(c.playerID, { videoId: c.initialVideo, width: c.width, height: c.height, playerVars: { autoplay: c.autoPlay, controls: c.showControls, rel: c.showRelated, fs: c.allowFullScreen ? 1 : 0 }, events: { onReady: function (a) { d.ytplayers[c.playerID] = a.target; a = g(a.target).parents(".jquery-youtube-tubeplayer"); g.tubeplayer.defaults.afterReady(a) }, onPlaybackQualityChange: g.tubeplayer.defaults.qualityChange(c.playerID), onStateChange: g.tubeplayer.defaults.stateChange(c.playerID),
                onError: g.tubeplayer.defaults.onError(c.playerID)
            }
            })
        }); if (d.inits.length == 1 && !d.inited) return function () { for (var a = 0; a < d.inits.length; a++) d.inits[a](); d.inited = true }; d.inited && d.inits.pop()(); return onYouTubePlayerAPIReady
    }; d.supportsHTML5 = function () { return !!document.createElement("video").canPlayType }; d.initDefaults = function (c, a) {
        var b = a.playerID, f = c.onPlayer; f.unstarted[b] = a.onPlayerUnstarted; f.ended[b] = a.onPlayerEnded; f.playing[b] = a.onPlayerPlaying; f.paused[b] = a.onPlayerPaused; f.buffering[b] = a.onPlayerBuffering;
        f.cued[b] = a.onPlayerCued; c.onQualityChange[b] = a.onQualityChange; c = c.onErr; c.notFound[b] = a.onErrorNotFound; c.notEmbeddable[b] = a.onErrorNotEmbeddable; c.invalidParameter[b] = a.onErrorInvalidParameter
    }; d.initPlayer = function (c, a) { a.iframed && d.supportsHTML5() ? d.initIframePlayer(c, a) : d.initFlashPlayer(c, a) }; d.initIframePlayer = function (c, a) {
        if (!d.iframeScriptInited) {
            c = document.createElement("script"); c.src = "http://www.youtube.com/player_api"; var b = document.getElementsByTagName("script")[0]; b.parentNode.insertBefore(c,
b); d.iframeScriptInited = true
        } onYouTubePlayerAPIReady = d.iframeReady(a)
    }; d.initFlashPlayer = function (c, a) {
        g.getScript(a.swfobjectURL, function () {
            var b = ["//www.youtube.com/v/"]; b.push(a.initialVideo); b.push("?fs=" + (a.allowFullScreen ? 1 : 0)); b.push("&enablejsapi=1&version=3"); b.push("&playerapiid=" + a.playerID); b.push("&rel= " + a.showRelated); b.push("&autoplay=" + a.autoPlay); b.push("&controls=" + a.showControls); swfobject.embedSWF(b.join(""), a.playerID, a.width, a.height, "8", null, null, { allowScriptAccess: a.allowScriptAccess,
                wmode: "transparent", allowFullScreen: a.allowFullScreen
            }, { id: a.playerID }); onYouTubePlayerReady = function (f) { var i = document.getElementById(f); d.ytplayers[f] = i; i.addEventListener("onStateChange", "$.tubeplayer.defaults.stateChange('" + f + "')"); i.addEventListener("onError", "$.tubeplayer.defaults.onError('" + f + "')"); i.addEventListener("onPlaybackQualityChange", "$.tubeplayer.defaults.qualityChange('" + f + "')"); f = g(i).parents(".jquery-youtube-tubeplayer"); g.tubeplayer.defaults.afterReady(f) } 
        })
    }; d.getVideoIDFromURL =
function (c) { var a = c.indexOf("youtube.com/watch?v=") + 20, b = c.indexOf("&", a) || c.length; if (a > b) return ""; return c.substring(a, b) }; var j = { cue: h(function (c, a, b) { b.ytplayer.cueVideoById(a, b.opts.preferredQuality) }), play: h(function (c, a, b) { if (typeof a == "object") b.ytplayer.loadVideoById(a.id, a.time, b.opts.preferredQuality); else a ? b.ytplayer.loadVideoById(a, 0, b.opts.preferredQuality) : b.ytplayer.playVideo(); b.opts.onPlay(a) }), pause: h(function (c, a, b) { b.ytplayer.pauseVideo(); b.opts.onPause() }), stop: h(function (c,
a, b) { b.ytplayer.stopVideo(); b.opts.onStop() }), seek: h(function (c, a, b) { b.ytplayer.seekTo(a, true); b.opts.onSeek(a) }), mute: h(function (c, a, b) { b.$player.attr("data-prev-mute-volume", b.ytplayer.getVolume()); b.ytplayer.mute(); b.opts.onMute() }), unmute: h(function (c, a, b) { b.ytplayer.unMute(); b.ytplayer.setVolume(b.$player.attr("data-prev-mute-volume") || 50); b.opts.onUnMute() }), isMuted: h(function (c, a, b) { return b.ytplayer.isMuted() }), volume: h(function (c, a, b) {
    if (a) {
        b.ytplayer.setVolume(a); b.$player.attr("data-prev-mute-volume",
b.ytplayer.getVolume())
    } else return b.ytplayer.getVolume() || 0
}), quality: h(function (c, a, b) { if (a) b.ytplayer.setPlaybackQuality(a); else return b.ytplayer.getPlaybackQuality() }), data: h(function (c, a, b) {
    c = {}; b = b.ytplayer; c.bytesLoaded = b.getVideoBytesLoaded(); c.bytesTotal = b.getVideoBytesTotal(); c.startBytes = b.getVideoStartBytes(); c.state = b.getPlayerState(); c.currentTime = b.getCurrentTime(); c.availableQualityLevels = b.getAvailableQualityLevels(); c.duration = b.getDuration(); c.videoURL = b.getVideoUrl(); c.getVideoEmbedCode =
b.getVideoEmbedCode(); c.videoID = d.getVideoIDFromURL(c.videoURL); return c
}), videoId: h(function (c, a, b) { return d.getVideoIDFromURL(b.ytplayer.getVideoUrl()) }), size: h(function (c, a, b) { if (a.width && a.height) { b.ytplayer.setSize(a.width, a.height); g(b.ytplayer).css(a) } }), destroy: h(function (c, a, b) { b.$player.removeClass("jquery-youtube-tubeplayer").data("opts.tubeplayer", null).unbind(".tubeplayer").html(""); delete d.ytplayers[b.opts.playerID]; g(b.ytplayer).remove(); return null }), player: h(function (c, a, b) { return b.ytplayer })
}
})(jQuery);
