﻿//
// Windows Media Player object control for Dayport Videos
//
function Video(id, vidIdParamName, conDefId, displayTease) {
    // ************************************************************************
    //  PRIVATE VARIABLES
    // ************************************************************************
    var siteId = id;
    var videoIdParamName = vidIdParamName;
    var contractDefId = conDefId;
    var showTease = displayTease;
    
    var isBufferComplete = false;
    var isInitialVideoInfo = true; // used in the VideoOpenStateChange event so VideoInfo() only gets called once on state 5
    var lastPlayedId = '-9999'; // used to keep track of the current position
    
    var currentVideoId = '-9999';
    var isCommercial = false;
    var currentVideoTitle = '';
    var currentVideoDescription = '';
    var reportingSection = '';
    var reportingTitle = '';
    var isEmail = false;
    var isNonSupportedError = false;
    
    var vidMetaDataList = new Array(); // built on first stream
    var vidMetaDataListBuilt = false; // so the array only gets built once
    var currVideoPosition = 1; // increments on <event_name>
    
    var divPlayer;
    var objPlayer;
    
    SetObj();
    
    // ************************************************************************
    //  PRIVATE FUNCTIONS
    // ************************************************************************
    function SetObj() {
        SetDiv();
        objPlayer = document.getElementById('video1');
        return objPlayer;
    }
    
    function SetDiv() {
        divPlayer = document.getElementById('divVideo1');
        return divPlayer;
    }
    
    function VideoPlayState() {
        if(!objPlayer) SetObj();
        
        return eval(objPlayer).PlayState;
    }
    
    function VideoBufferingProcess() {
        if(!objPlayer) SetObj();
        
        return eval(objPlayer).BufferingProgress;
    }
    
    function CleanString(string) {
        var retString = '';
        
        for(var i = 0; i < string.length; i++) {
            var charCode = string.charCodeAt(i);
            
            switch(charCode) {
                case 0: break;
                default:
                    retString += string.charAt(i);
                    break;
            }
        }
        return retString;
    }
    
    function BuildMetaDataList() {
        vidMetaDataList = new Array();
        if(!objPlayer) SetObj();
        if(objPlayer.EntryCount == 0) return false;

        for(var i = 1; i <= objPlayer.EntryCount; i++) {
            var title = escape(CleanString(objPlayer.GetMediaParameter(i, 'Title')));
			var articleId = escape(CleanString(objPlayer.GetMediaParameter(i, 'Article_ID')));
			var description = escape(CleanString(objPlayer.GetMediaParameter(i, 'abstract')));
			var adId = escape(CleanString(objPlayer.GetMediaParameter(i, 'AdContractID')));
			var metaData = new VideoMetaData(i, articleId, title, description, adId);
			
			vidMetaDataList[i] = metaData;
        }
        
        vidMetaDataListBuilt = true;
    }
    
    // ************************************************************************
    //  PRIVILEGED METHODS (May be invoked publicly and may access private items)
    // ************************************************************************
    this.ShowLayer = function(id, action) {
        var layer = document.getElementById(id);
        
        if(layer)
            layer.style.visibility = action;
    }
    
    this.Email = function() {
        var vidLink = document.getElementById('emailVideoLink');
        var vidLinkSection = document.getElementById('emailVideoSectionIcon');
        var emailLayer = document.getElementById('emailVideoSection');
        var currentVideoInfo = document.getElementById('currentVideoInfo');

        if(!isEmail) {
            if(!isCommercial && currentVideoInfo != null)
                isEmail = !isEmail;
        } else
            isEmail = !isEmail;
            
        if(currentVideoInfo != null)
            currentVideoInfo.src = "/mediacenter/videodetails/dayportdetails.aspx?" +videoIdParamName +"=" +currentVideoId +"&isCommercial=" +isCommercial +"&currentVideoTitle=" +currentVideoTitle +"&currentVideoDescription=" + currentVideoDescription +"&isEmail=" +isEmail;
            
        if(isEmail && vidLink)
            vidLink.innerHTML = "Return to Video";
        else if(vidLink)
            vidLink.innerHTML = "Email Video";
            
        if(!isEmail) {
            if(!isCommercial) {
                emailLayer.style.visibility = 'visible';
            }else {
                emailLayer.style.visibility = 'hidden';
            }
        }
    }
    
    this.PlayVideo = function() {
        if(!objPlayer) SetObj();
        
        eval(objPlayer).Play();
    }
    
    this.PauseVideo = function() {
        if(!objPlayer) SetObj();
        
        if(VideoPlayState() == 2) {
            eval(objPlayer).Pause();
            return true;
        } else {
            return false;
        }
    }
    
    this.StopVideo = function() {
        if(!objPlayer) SetObj();

        eval(objPlayer).Stop();
    }
    
    this.VideoPlayStateChange = function(newState) {
        if(!objPlayer) SetObj();
        
        if(newState == 3) {
            SetDiv();
            var divVideo1 = document.getElementById('divVideo1');
            var divPreload = document.getElementById('preLoad');
            
            if(divVideo1 && divPreload) {
                divVideo1.style.visibility = 'visible';
                divPreload.style.visibility = 'hidden';
            }
            
            isBufferComplete = true;
        }
        
        // update tracking (video finished playing)
    }
    
    this.VideoBuffering = function(buffering) {
        if(isBufferComplete) return false;
        
        var divPreload = document.getElementById('preLoad');
        if(!divPlayer) SetDiv();
        if(!objPlayer) SetObj();

        if((eval(objPlayer).PlayState == 2) || (eval(objPlayer).PlayState == 1) || (eval(objPlayer).PlayState == 3)) {
            divPlayer.style.visibility = 'visible';
            divPreload.style.visibility = 'hidden';
            isBufferComplete = true;
        }
    }
    
    this.VideoOpenStateChange = function(newState) {
        if(newState == 6) {
            if(!vidMetaDataListBuilt && objPlayer.EntryCount > 1) {
                BuildMetaDataList();
            }
        }
    }
    
    this.VideoNewStream = function() {
        if(!objPlayer) SetObj();
        if(!vidMetaDataListBuilt) return;
        
        // firefox hack
        var divVideo1 = document.getElementById('divVideo1');
        var divPreload = document.getElementById('preLoad');
        var currentVideoInfo = document.getElementById('currentVideoInfo');

        if(divVideo1 && divPreload) {
            divVideo1.style.visibility = 'visible';
            divPreload.style.visibility = 'hidden';
        }

        var currentMetaData = vidMetaDataList[currVideoPosition];
        
        currentVideoId = currentMetaData.ArticleId;
        isCommercial = currentMetaData.IsCommercial;

        if(isCommercial) {
            var overrideAdArea = document.getElementById('OverrideAdArea');
            if(overrideAdArea)
                overrideAdArea.innerHTML = '<iframe name="playerAd" id="playerAd" src="/mediacenter/videoad/dayportVideoAd.aspx?contractDefId=' +contractDefId +'&contractId=' +currentMetaData.AdContractID +'" height="250" width="300" scrolling="no" frameborder="0"></iframe>';
//            if(window.parent.playerAd)
//                window.parent.playerAd.location = '/mediacenter/videoad/dayportVideoAd.aspx?contractDefId=' +contractDefId +'&contractId=' +currentMetaData.AdContractID;
        }
        
        if(!isCommercial)
            currentVideoTitle = currentMetaData.Title;
        else
            currentVideoTitle = 'Advertisement';
            
        if(showTease)
            currentVideoDescription = currentMetaData.Description;
        else
            currentVideoDescription = '';
        
        if(currentVideoInfo && !isEmail)
            currentVideoInfo.src = '/mediacenter/videodetails/dayportdetails.aspx?isCommercial=' +currentMetaData.IsCommercial +'&currentVideoTitle=' +currentVideoTitle +'&currentVideoDescription=' +currentVideoDescription +'&isEmail=' +isEmail;

        if(!isEmail) {
            var emailLayer = document.getElementById('emailVideoSection');
            if(!isCommercial)
                emailLayer.style.visibility = 'visible';
            else
                emailLayer.style.visibility = 'hidden';
        }
        
        currVideoPosition++;
    }
}


//
// Class to store information about a video
//
function VideoMetaData(entryPos, articleId, title, description, adContractId) {
    this.EntryPosition = entryPos;
    this.ArticleId = articleId;
    this.Title = title;
    this.IsCommercial = (articleId == null || articleId.length == 0);
    this.Description = description;
    this.AdContractID = adContractId;
}



//
// flash scripts for Dayport Videos
//
function updateBannerAd(contractDefId, contractId){
	//window.parent.playerAd.location = '/mediacenter/videoad/dayportVideoAd.aspx?contractDefId=' +contractDefId +'&contractId=' +contractId;
	var overrideAdArea = document.getElementById('OverrideAdArea');
    if(overrideAdArea)
        overrideAdArea.innerHTML = '<iframe name="playerAd" id="playerAd" src="/mediacenter/videoad/dayportVideoAd.aspx?contractDefId=' +contractDefId +'&contractId=' +contractId +'" height="250" width="300" scrolling="no" frameborder="0"></iframe>';
}

function trackStats(section, title){
	// TODO: track video play
}

function email(videoId, toEmail, fromEmail, title){
	var url = "/mediacenter/videodetails/dayportdetails.aspx?videoId=" +videoId +"&currentVideoTitle=" +title +"&from=" +fromEmail +"&to=" +toEmail ;
	var currentVideoInfo = document.getElementById('currentVideoInfo');

	if(currentVideoInfo != null)
	    currentVideoInfo.src = url;
}

function trackSponserVideo(url) {
    var videoTracker = parent.document.getElementById('videoTracker');
    if(videoTracker)
        videoTracker.src = url;
}

function trackVideoPlay(url) {
    var videoTracker = parent.document.getElementById('videoPlayTracker');
    if(videoTracker)
        videoTracker.src = url;
}