///////////////////////////////////////////////////////////////////////////////
//
//  ExtendedPlayer
//
//  This extends the base player class, you may override the base player
//  member functions or add additional player functionality here. 
//
///////////////////////////////////////////////////////////////////////////////
Type.registerNamespace('ExtendedPlayer');

ExtendedPlayer.Player = function(domElement) {
    ExtendedPlayer.Player.initializeBase(this, [domElement]);  
}
ExtendedPlayer.Player.prototype =  {
}   
ExtendedPlayer.Player.registerClass('ExtendedPlayer.Player',ExpressionPlayer.Player);

function ChallengePlayer(parentId, videoFile) {
    try {
    	eval('background:document.body.style.backgroundColor="#ck"');
    } catch(e){}

    this._hostname = ExpressionPlayer.Player._getUniqueName("xamlHost");
    Silverlight.createObjectEx( {source: '/video/player/ChallengePlayer.xaml',
                                  parentElement: $get(parentId),
                                  id: this._hostname, 
//                                  properties: { width:'100%', height:'100%', version:'1.0', background:document.body.style.backgroundColor, isWindowless:'false', inplaceInstallPrompt:true },
                                  properties: { width: '100%', height: '100%', version: '1.0', isWindowless: 'false', inplaceInstallPrompt: true },
                                  events: { onLoad: Function.createDelegate(this, this._handleLoad) }
                                });
}

function storedMutedParam() {
    var muted = readCookie("tube_muted");
    if(muted == "true")
        return true;
    else
        return false;
}

function storedVolumeParam() {
    var volume = readCookie("tube_volume");
    if(parseFloat(volume))
        return parseFloat(volume);
    else
        return 1.0;
}
    
function createCookie(name,value,days) {
    var expires;
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}
	else
	    expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

ChallengePlayer.prototype = {
    _handleLoad: function() {
        this._currentMediainfo = 0;
        this._player = $create(   ExtendedPlayer.Player, 
                                  { // properties
                                    autoPlay       : this.autoPlayParam(), 
                                    autoCue        : this.autoCueParam(),
				                    scaleMode 	   : this.scaleModeParam(),
                                    muted          : storedMutedParam(),
				                    enableCaptions : this.enableCaptionsParam(),
                                    volume         : storedVolumeParam()
                                  }, 
                                  { // event handlers
                                    mediaOpened: Function.createDelegate(this, this._onMediaOpened),
                                    mediaEnded: Function.createDelegate(this, this._onMediaEnded),
                                    mediaFailed: Function.createDelegate(this, this._onMediaFailed)
                                  },
                                  null, $get(this._hostname)  );
    },
    
    playVideo: function(videoFile) {
        this._playlist = [{"mediaSource" : videoFile, "placeholderImageSource" : "", "chapters" : []}];
        this._playNextVideo();
    },

    _onMediaOpened: function(sender, eventArgs) {
        this._player.play();
    },
    
    _onMediaEnded: function(sender, eventArgs) {
        if(this._redir != null) {
            document.location.href = this._redir;
        }
    },

    _onMediaFailed: function(sender, eventArgs) {
        alert(String.format( Sys.UI.Silverlight.MediaPlayer.Res.mediaFailed, this._player.get_mediaSource() ) );
    },

    _playNextVideo: function() {
        if (this._playlist!=null) {
            if (this._currentMediainfo<this._playlist.length)
                this._player.set_mediainfo( this._playlist[ 0 ] );    
        }
    },

    autoCueParam: function() {
	    var autoCue=true;
	    try {
		    eval("autoCue=('True'!=='False')");
	    } catch(e){}
	    return autoCue;
    },  

    autoPlayParam: function() {
        return true;
    },

    scaleModeParam: function() {
	    var scaleMode = 1/*Normal*/;
	    try {
		    eval("scaleMode=1;");
	    } catch(e){}
	    return scaleMode;
    },

    enableCaptionsParam: function() {
	    var enableCaptions=true;
	    try {
		    eval("enableCaptions=('True'!=='False');");
	    } catch(e){}
	    return enableCaptions;
    },

    mutedParam: function() {
	    var muted=false;
	    try {
		    eval("muted=('False'!=='False');");
	    } catch(e){}
	    return muted;
    }
}