Cobalt.Website.VehicleDetail.VideoModule = function(sandbox)
{

    var _dataManager = null;
    var _playerInstance = null;	
	
    function getDataManager()
    {
        if (_dataManager === null)
        {
            _dataManager = Cobalt.Website.Data.VehicleDetailDataManager;
        }

        return _dataManager;
    }	
	
	function getVideoData()
    {
        if (getDataManager())
        {
            return getDataManager().getVideos();
        }
        return null;
    }

    function getPlayer()
    {
        if (!_playerInstance)
        {
            _playerInstance = Cobalt.Website.Media.Player(sandbox);
        }

        return _playerInstance;
    }
	
    function handleVideoThumbClicked(e){
    	var videoData = e.customData;
    	loadVideo(videoData, true);
    	firePixelTagForVideo(videoData.data);
    }

    function handleVideoOnPageLoad(e){
    	var videoData = e.customData;
    	loadVideo(videoData, videoData.data.autoPlay);
    	/*Pixel Tag not fire before page load. Wait for page load*/
    	if(videoData.data.autoPlay == true){
			setTimeout(function(){
				firePixelTagForVideo(videoData.data)
			}, 500);
    	}else{
    		var width = videoData.data.width || 500;
        	var height= videoData.data.height || 375;
        	sandbox.dom(".media").css("position","relative");
        	sandbox.dom("#pixelTagEventInterceptor").width(width);
        	sandbox.dom("#pixelTagEventInterceptor").height(height);
        	sandbox.dom("#pixelTagEventInterceptor").css("display","block");
         	sandbox.dom("#pixelTagEventInterceptor").click(function(){
                		loadVideo(videoData, true);
         		 		firePixelTagForVideo(videoData.data);
         		 		sandbox.dom("#pixelTagEventInterceptor").remove();
       		     		
         	 });
    	}
    }

    function loadVideo(videoData, startMovie)
    {
		var player = getPlayer();
		player.destroyDmi(window.LTVPlayerTarget);
		player.init(videoData);
		player.play(startMovie);
		showDisclaimer(videoData.data);
    }
	
	function showDisclaimer(videoData){
		var disclaimerData = videoData.disclaimer;
		sandbox.dom(".media .disclaimer").html(disclaimerData);
	}
	
	function firePixelTagForVideo(videoData) 
	{
		var eventName = getEventName();
		var vin = getVehicleVin();
		var pageLabel = videoData.pixelTagLabel;
		var pageLayout = getPageLayout();
		var pageName = getPageName();
		
		sandbox.firePixelTag({
			eventName: eventName,
			vin: vin,
			pageLabel: pageLabel,
			pageLayout: pageLayout,
			pageName: pageName,
			requestUri: null
		});
	}
	
	function getPageLayout()
	{
		return "VehicleDetails_std";
	}
	
	function getPageName()
	{
		return "VehicleDetails";
	}
	
	function getEventName()
	{
		return "com.cobaltgroup.ws.view.media.video";
	}	
	
	function getVehicleVin()
	{
		return getDataManager().getVin();
	};		
    
    return {
        init:function()
        {
			sandbox.listen(null, Cobalt.Website.Common.Events.VideoThumbChanged, handleVideoThumbClicked);
            sandbox.listen(null, Cobalt.Website.Common.Events.VideoOnPageLoad, handleVideoOnPageLoad);
        },

        destroy:function()
        {
        }
    };
};


