/**
 * Clipkit Player
 *
 */

(function() {
    var CK_Player_87370 = {
        playerId: 'player_87370',
        playerConfig: null,
        hasHTML5: 'enabled',
        scriptEmbedId: 'clipkit_src_87370',
        jQuerySrc: 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js',
        flowplayerJsSrc: 'http://cdn.clipkit.de/lib/js/flowplayer.js',
        flowplayerSwfSrc: 'http://cdn.clipkit.de/lib/swf/v-3.2.5/clipkitplayer.swf',
        iPadBundleSrc: 'http://cdn.clipkit.de/lib/js/ipad.bundle.js',
        configUrl: 'http://signin.clipkit.de/98/video/87370/',
        nuggadUrl: 'http://clipkit.nuggad.net/rc',

        getConfigUrl: function() {
            if(!document.getElementById(this.scriptEmbedId))
                return alert('Could not find javascript embed!');

            var relAttribute = jQuery("#" + this.scriptEmbedId).attr('rel');
            var embedAttribute = relAttribute.replace(/&/g, "/").replace(/=/g, "/");

            return this.configUrl + embedAttribute + '/cache/config.json';
        },
        getNuggadUrl: function(config) {
            var nuggsid = config.user.plugins.nuggad.nuggsid;
            var nuggn = config.user.plugins.nuggad.nuggn;
            var nuggrid = null;

            if(typeof config.user.plugins.nuggad.nuggrid == 'undefined') {
                nuggrid = encodeURIComponent(top.location.href);
            }
            else {
                nuggrid = config.user.plugins.nuggad.nuggrid;
            }
            return this.nuggadUrl + "?nuggn="+nuggn+"&nuggsid="+nuggsid+"&nuggrid=" + nuggrid
        },
        hasFlash: function() {
            if(window.ActiveXObject) { //Is IE activeX
                var control = null;
                try {
                    control = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
                }
                catch (e) {
                    alert(e + ': Very old version of Internet Explorer. Please update your browser');
                }
                if(control)
                    return true;
            }
            else { // Check navigator.plugins for "Shockwave Flash"
                var pluginArray = new Array();
                for (i = 0, li = navigator.plugins.length; i < li; i ++) {
                    pluginArray.push(navigator.plugins[i].name.toLowerCase());
                }
                var pluginString = pluginArray.join(',');

                if(pluginString.indexOf('flash') > 0)
                    return true;
            }
            return false;
        },
        renderVideoContainer: function(embed) {
            var html = '<div id="container_' + this.playerId + '" class="clipkitvideo">';
            if(embed == 'html5') {
                html += '<a id="' + this.playerId + '" href="#"></a>';
            }
            else {
                html += '<div id="'+ this.playerId +'"></div>';
            }
            html += '</div>';
            document.write(html);
        },
        addScript: function(filename) {
            var script = document.createElement('script');
            script.setAttribute("type","text/javascript");
            script.setAttribute("src", filename);

            if (typeof script != "undefined") {
                document.getElementsByTagName("head")[0].appendChild(script);
            }
        },
        geoBlock: function(elem) {
            var sorry = '<h3 class="ck_geo-block">Sorry, this video is not available in your country!</h3>'
            jQuery('.' + elem).html(sorry);
        },
        load_flowplayer: function()
        {
            var parentThis = this;
            if(typeof jQuery == 'undefined') return;

            if(typeof flowplayer == 'undefined') {
                jQuery.ajax({
                    url: this.flowplayerJsSrc,
                    type: 'GET',
                    dataType: 'script',
                    cache: true,
                    success: function(response) {
                        parentThis.load_player_config();
                    }
                });
            }
            else {
                this.load_player_config();
            }

        },
        load_player_config: function()
        {
            var parentThis = this;
            jQuery.ajax({
                type: 'GET',
                url: this.getConfigUrl(),
                dataType: 'jsonp',
                success: function(response) {
                    parentThis.playerConfig = response;

                    if(response.geoLocation === 'forbidden') { //Check geo blocking
                        parentThis.geoBlock('clipkitvideo');
                        return;
                    }

                    if(typeof response.user.plugins.nuggad != 'undefined' && response.user.plugins.liverail != 'undefined') {
                        parentThis.load_nuggad();
                    }
                    else {
                        parentThis.init_player();
                    }
                }
            });
        },
        getMyvideoUrl: function(config, _callback) {
            var ck_domain = this.configUrl.substr(0, this.configUrl.lastIndexOf('.'));
            jQuery.ajax({
                type: 'GET',
                url: ck_domain + '.de/myvideo-url/?raw_url=' + encodeURIComponent(config.playlist[1].url),
	        dataType: 'jsonp',
	        success: _callback
            });
        },
        load_nuggad: function() {
            var parentThis = this;
            var config = this.playerConfig;

            jQuery.ajax({
                url: this.getNuggadUrl(config),
                type: 'GET',
                dataType: 'script',
                cache: false,
                success: function(response) {
                    if(typeof n_pbt1 != 'undefined') {
                        config.user.plugins.liverail.LR_TAGS = config.user.plugins.liverail.LR_TAGS + ',' + (n_pbt1.replace(';',',').replace(';',''));
                    }
                    parentThis.init_player();
                },
                error: function() {
                    parentThis.init_player();
                }
            });
        },
        init_player: function() {
            var config = this.playerConfig;
            var parentThis = this;

            this.getMyvideoUrl(config, function(response)
            {
                jQuery('#' + parentThis.playerId).css({
                    'width': config.player.css.width,
                    'height': config.player.css.height
                });

                if(config.user.plugins.liverail.LR_URL == 'undefined' || config.user.plugins.liverail.LR_URL == '') {
                    config.user.plugins.liverail.LR_URL = escape(top.location.href);
                }

                var playerParams = {
                    logo: config.player.logo,
                    clip: config.clip,
                    canvas: config.player.canvas,
                    playlist: config.playlist,
                    plugins: {
                        controls: config.player.plugins.controls,
                        rtmp: {"url":"http://cdn.clipkit.de/lib/swf/clipkitplayer.rtmp-3.2.3.swf"},
                        liverail: config.user.plugins.liverail
                    },
                    onLoad: function(){
                        var cc = this.getCommonClip();
                        (cc.autoMute) ? this.mute() : this.unmute();

                       if(cc.cdn == 2)
                       {
                            jQuery('.clipkitvideo').css({
                                'width': config.player.css.width,
                                'position': 'relative' //Position relative to main container to position logo absolutely
                            });

                            var vidNewsCont = '<div id="ck_video-infos"></div>';
                                vidNewsCont += '<div id="ck_co-logo" style="width:100px; height:28px; position:absolute; top:10px; left:10px">';
                                vidNewsCont += '<a href="http://www.myvideo.de" target="_blank">';
                                vidNewsCont += '<img src="http://cdn.clipkit.de/lib/images/myvideo-logo-klein.png" width="100" height="28" alt="MyVideo Logo" /></a></div>';
                            jQuery('#' + parentThis.playerId).after(vidNewsCont);

                            var vidNews = '<h1 style="font-size:13px"><strong>' + cc.newsfeed.title + '</strong></h1>';
                                vidNews += '<h2 style="font-size:12px"><strong>' + cc.newsfeed.subtitle + '</strong></h2>';
                                vidNews += '<p>' + cc.newsfeed.description + '</p>';
                            jQuery("#ck_video-infos").html(vidNews);
                        }
                        this.play();
                        clipkitPlayerLoaded(this);
                    }
                };

                //If MyVideo, update URL
                if(config.clip.cdn == 2) {
                    var playlistIdx = (playerParams.playlist.length == 2) ? 1 : 0; //is SplashImage
                    playerParams.playlist[playlistIdx].url = response.myVideoUrl;

                }

                if(config.clip.clipkitVideoId != 'undefined') {
                    playerParams.plugins.liverail.LR_VIDEO_ID = config.clip.clipkitVideoId;
                    playerParams.plugins.liverail.LR_VIDEO_AMID = config.clip.clipkitVideoFormat;
                }

                if(config.player.autoMute != 'undefined') {
                    if(playerParams.clip.autoMute == 'undefined') {
                        playerParams.clip.autoMute = config.player.autoMute;
                    }
                    playerParams.clip.autoMute = playerParams.clip.autoMute || config.player.autoMute;
                }

                if(typeof config.user.plugins.secure_stream != 'undefined') {
                    playerParams.plugins.secure_stream = config.user.plugins.secure_stream;
                }

                if(typeof config.user.plugins.openAdFallback != 'undefined') {
                    playerParams.plugins.openAdFallback = config.user.plugins.openAdFallback;
                }

                if(typeof config.player.play != 'undefined') {
                    playerParams.play =  config.player.play;
                }

                if(typeof config.player.autoPlay != 'undefined') {
                    var autoplayValue = config.player.autoPlay;

                    playerParams.clip.autoBuffering = autoplayValue;
                    playerParams.clip.autoPlay = autoplayValue;

                    for (var key in playerParams.playlist) {
                        playerParams.playlist[key].autoPlay = autoplayValue;
                    }
                }

                playerParams.plugins.tracker = {
                    'url': "http://cdn.clipkit.de/lib/swf/clipkit.tracking.swf"
                }

                if(typeof config.tracker != 'undefined') {
                    playerParams.plugins.tracker.impression = config.tracker;
                }

                /*
                playerParams.plugins.secure_stream = {
                    "url":"http://cdn-dev.clipkit.de/lib/swf/clipkit.mstream.swf",
                    "ttl":"3600"
                };
                */

                if(typeof clipkitPlayerLoaded == 'undefined') {
                    clipkitPlayerLoaded = function(player){}
                }

                //Load flowplayer
                flowplayer(
                    parentThis.playerId,
                    {src: parentThis.flowplayerSwfSrc, wmode: 'opaque'},
                    playerParams
                );

                //if(!jQuery.browser.msie && !jQuery.browser.safari && typeof config.user.clickThruTracker != "undefined")
                if(typeof config.user.clickThruTracker != "undefined")
                {
                  var trackerCode = '<object width="1" height="1">';
                  trackerCode += '<param name="movie" value="http://cdn.clipkit.de/lib/swf/clipkit.third-party-ad-tracker.swf"></param>';
                  trackerCode += '<param name="allowFullScreen" value="true"></param>';
                  trackerCode += '<param name="allowscriptaccess" value="always"></param>';
                  trackerCode += '<param name="flashvars" value="pc=' + config.user.clickThruTracker + '&publisher=' + config.user.website + '&lr_publisher=' + config.user.plugins.liverail.LR_PUBLISHER_ID + '"></param>';
                  trackerCode += '<embed src="http://cdn.clipkit.de/lib/swf/clipkit.third-party-ad-tracker.swf" flashvars="pc=' + config.user.clickThruTracker + '&publisher=' + config.user.website + '&lr_publisher=' + config.user.plugins.liverail.LR_PUBLISHER_ID + '" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="1" height="1"></embed>';
                  trackerCode += '</object>';

                  jQuery('#container_' + parentThis.playerId).append(trackerCode);
                }

            }); //End Callback
        }
}

    var ck_player = CK_Player_87370;

    if(ck_player.hasHTML5 == 'enabled' && ck_player.hasFlash() === false) // Flash not found, HTML 5 embed
    {
        ck_player.renderVideoContainer('html5');
        lazy_load_script_87370 = function() {
            lazy_load_script_87370.getScript(ck_player.jQuerySrc);
            lazy_load_script_87370.getScript(ck_player.flowplayerJsSrc);
            lazy_load_script_87370.tryReady(0);
        }
        lazy_load_script_87370.getScript = function(filename) {
            ck_player.addScript(filename);
        }
        lazy_load_script_87370.tryReady = function(time_elapsed) {
            // Keep checking if jQuery is loaded
            if(typeof flowplayer == "undefined" || typeof jQuery == "undefined") {
                if (time_elapsed <= 10000) {
                    setTimeout("lazy_load_script_87370.tryReady(" + (time_elapsed + 100) + ")", 100);
                }
                else { // Elapse time is over
                    if(typeof flowplayer == "undefined") {
                        alert("Timed out while loading Flowplayer.");
                    }
                    else {
                        alert("Timed out while loading jQuery.");
                    }
                }
            }
            else {
                jQuery.ajax({
                    type: 'GET',
                    url: ck_player.getConfigUrl(),
                    dataType: 'jsonp',
                    success: function(response)
                    {
                        LR_PUB_ID = response.user.plugins.liverail.LR_PUBLISHER_ID;
                        var playlist = response.playlist;
                        var playerWidth = response.player.css.width;
                        var playerHeight = response.player.css.height;

                        var player = jQuery('#' + ck_player.playerId);
                        player.attr('href', response.clip.baseUrl + '/' + playlist[1].url);
                        player.css({
                            'display': 'block',
                            'width': playerWidth + 'px',
                            'height': playerHeight + 'px',
                            'overflow': 'hidden',
                            'position': 'relative'
                        });

                        var playerElems = '<img src="' + playlist[0].url + '" alt="Video Abspielen" title="Video Abspielen" width="'+playerWidth+'" height="'+playerHeight+'" />';
                            playerElems += '<span style="display:block; width:60px; height:60px; background-image:url(http://cdn.clipkit.de/lib/images/play-icon.png); position:absolute; top:'+(playerHeight/2 - 30)+'px; left:'+(playerWidth/2 - 30)+'px"></span>';

                        jQuery('#' + ck_player.playerId).html(playerElems);

                        loadPlayer_87370();
                    }
                });
            }
        }
        loadPlayer_87370 = function() {
            loadPlayer_87370.getScript(ck_player.iPadBundleSrc);
            loadPlayer_87370.tryReady(0);
        }
        loadPlayer_87370.getScript = function(filename) {
            ck_player.addScript(filename);
        }
        loadPlayer_87370.tryReady = function(time_elapsed)
        {
            if(typeof ipadBundle == "undefined")
            {
                if(time_elapsed <= 10000) {
                    setTimeout("loadPlayer_87370.tryReady(" + (time_elapsed + 100) + ")", 100); // set a timer to check again in 200 ms.
                }
                else {
                    alert("Timed out while loading ipad bundle.")
                }
            }
            else {
                var adManager = null;
                var player = null;

                // Get Flowplayer
                $f(ck_player.playerId, ck_player.flowplayerSwfSrc, {
                    plugins: {
                        controls: true

                    },
                    clip: {
                        onBegin : function() {

                            if(adManager === null) {

                                // LiveRail HTML5 integration - Initialize player
                                player = document.getElementById(ck_player.playerId + '_api');

                                // Initialize new LiveRail HTML5 object:
                                adManager = new LiveRail.AdManager({
                                    target: player
                                });

                                // Set callback functions if needed:
                                adManager.onAdStart = function() {};
                                adManager.onAdEnd = function() {};
                                adManager.onInitComplete = function() {};

                                adManager.onAdsComplete = function(ads_played) {
                                    //alert(LR_PUB_ID);
                                    //flowplayer(ck_player.playerId).stop(0);
                                    //flowplayer(ck_player.playerId).play(0);

                                };

                                // Define LR_ parameters in a configuration object:
                                var config = {
                                    LR_PUBLISHER_ID: (typeof LR_PUB_ID != 'undefined') ? LR_PUB_ID : '',
                                    LR_FORMAT: 'video/mp4'
                                };
                                // Initialize ads:
                                adManager.initAds(config);
                            }

                            //adManager.startAds();
                            var startPreroll = function() {
                                player.removeEventListener('play', startPreroll, true);
                                adManager.startAds();
                            }
                            player.addEventListener('play', startPreroll, true);
                        }
                    } // End Clip config


                // .. and use JavaScript based controlbar plugin
                // and the iPad plugin so that this also works on the iPad
                }).ipad({simulateiDevice: true});
                //}).controls("appleControls_" + ck_player.playerId).ipad({simulateiDevice: true, controls: false});

            }
        }
        lazy_load_script_87370();
    }

    else
    { // Flash is found, use it
        ck_player.renderVideoContainer('flash');
        lazy_load_script_87370 = function() {
            lazy_load_script_87370.jQuery.load.success = function() {
                ck_player.load_flowplayer();
            }
            lazy_load_script_87370.jQuery();
        }
        lazy_load_script_87370.getScript = function(filename) {
            ck_player.addScript(filename);
        }
        lazy_load_script_87370.jQuery = function() {
            if (typeof jQuery == 'undefined')
                lazy_load_script_87370.jQuery.load()
            else
                lazy_load_script_87370.jQuery.load.success();
        }
        lazy_load_script_87370.jQuery.load = function() {
            lazy_load_script_87370.getScript(ck_player.jQuerySrc);
            lazy_load_script_87370.jQuery.tryReady(0);
        }
        lazy_load_script_87370.jQuery.tryReady = function(time_elapsed) {
            if(typeof jQuery == 'undefined') {
                if (time_elapsed <= 50000) {
                    setTimeout("lazy_load_script_87370.jQuery.tryReady(" + (time_elapsed + 200) + ")", 200);
                }
            }
            else {
                jQuery.noConflict();
                lazy_load_script_87370.jQuery.load.success();
            }
        }
        lazy_load_script_87370();
    }


})();
