Cobalt.Website.Media.Player = function(sandbox)
{
    var _currentPlayer = null;
    var _videoData = null;
    var _enhancedDmiData = null;

    function setVideoData(videoData)
    {
        _videoData = videoData;
    }
    function setDmiData(dmiData)
    {
        _enhancedDmiData = dmiData;
    }
    function getDmiData()
    {
    	return  _enhancedDmiData;
    }
    

    function getVideoData()
    {
        return _videoData;
    }

    function createAndInitializeVideoPlayerInstance(videoData)
    {
        var instance;
        
        if (!videoData || !videoData.type)
        {
            throwIllegalPlayerException();
        }

        if (videoData.type === "P")
        {
		    instance = Cobalt.Website.Media.CobaltLiquidusPlayer(sandbox);
			
			if(!videoData.liquidusVideo) 
				videoData.liquidusVideo = {}; // this solved an issue with execution just stopping
			videoData.liquidusVideo.jsURL = "http://cobalt.liquidusvideolink.com/RTA.js";
            videoData.liquidusVideo.LTVPlayerHeight = videoData.height;
			videoData.liquidusVideo.LTVPlayerTarget = "media_placeholder";  //redo these in serializer from backend
            videoData.liquidusVideo.LTVPlayerWidth = videoData.width;
            instance.init(videoData.liquidusVideo);
            return instance;
        }
        
        if (videoData.type === "D")
        {
		    instance = Cobalt.Website.Media.CobaltDmiPlayer(sandbox);
		    var enhancedDmiData = getDmiData();
		    enhancedDmiData.LTVPlayerTarget = "media_placeholder";
		    enhancedDmiData.LTVPlayerHeight = videoData.height;
			enhancedDmiData.LTVPlayerWidth = videoData.width;
            instance.init(enhancedDmiData);
            return instance;
        }

        if (videoData.type === "T" || videoData.type === "W")
        {
            instance = Cobalt.Website.Media.ProfessionalFlashVideoPlayer(sandbox);
			swfObjectReplacementElement("media_placeholder");
            videoData.clientElementId = "media_player";
            instance.init(videoData);
            return instance;
        }

        throwIllegalPlayerException();
    }
	
	// Fix for: SWFObject replaces then element <div id="media_placeholder" /> to <object id="media_placeholder" />
	function swfObjectReplacementElement(id){
		sandbox.dom("#"+id).html("<div id=\"media_player\"></div>");
	}

    function throwIllegalPlayerException()
    {
        throw new Error("Media.Player => illegal player type in video data");
    }
    

    return {
        init: function(videoData)
        {
            setVideoData(videoData.data);
            setDmiData(videoData.enhancedVideoData);
        },

        play: function(startMovie)
        {
            var playerInstance = createAndInitializeVideoPlayerInstance(getVideoData());
            playerInstance.play(startMovie);
            _currentPlayer =playerInstance; 
        },
        
        destroy:function()
        {

        },
        destroyDmi:function(playerTarget)
        {
        	if(_currentPlayer && _currentPlayer.destroy && playerTarget != null){
        		_currentPlayer.destroy(playerTarget);
        	}
        }
    }
};

