
var PLAYER_OFF_STATE = -1;
var PLAYER_STARTED_STATE = 3;
var PLAYER_STOPPED_STATE = 1;
var PLAYER_END_STATE = 8;
var PLAYER_OPENED_STATE = 13;

var davPlayState = PLAYER_OFF_STATE; // -1 -> before start, 3 -> started

var DAV_START_EVENT = 0;
var DAV_PING_EVENT = 1;
var DAV_END_EVENT = 2;

var davPlayerObj = "";
var davTimer = "";
var davTitle = "";
var davContainer = "";
var davGroup = "";
var davFreq = 0;

var davCustom = "";

var davPlayedLength = 0;
var davDuration = 0;
var readStreamName = 0;

var davImg = new Image();
var ScImgSrc;

var scCid="";
var davUrl="";

var supportWMP = 0;
var davContentType = "";        // a for ad, c for content, o for other
var davContentTypeStr = "";        
var prefixCG = 0;


var playingAd = false;
var playStarted = false;
var playEnded = false;

function davStopTimer() {
    clearInterval(davTimer);
}

function davPing() {
	//alert('ping');
	//alert('davPlayState:'+davPlayState+' PLAYER_STARTED_STATE:'+PLAYER_STARTED_STATE);
	
    if (playingAd) return;
    if (davPlayState == PLAYER_STARTED_STATE) {
        //var currentPos = davPlayerObj.controls.currentPosition;
        var currentPos = getPlayerParam("currentPosition", true);
        
        //alert('ping3');
        if (currentPos != davPlayedLength) {
            davPlayedLength = currentPos;
            //alert('ping2');
            davGenerateEvent(DAV_PING_EVENT);
        }
    }
}

// called when opening new media.
function davPlayerOpenStateChange(newState) {
    if (playingAd) return;
    
    if (newState == PLAYER_OPENED_STATE && !playStarted) {
        // media started
		//alert("davPlayerOpenStateChange"+davPlayState +" " + newState);
        //window.parent.davPlayState = PLAYER_STARTED_STATE;
        davPlayState = PLAYER_STARTED_STATE;
		//alert("2davPlayerOpenStateChange"+window.davPlayState +" " + newState);
		//alert(window.location);
        if (readStreamName) {
            //davTitle = davPlayerObj.currentMedia.name;
            davTitle = getPlayerParam("currentMediaName");
        }

        //davDuration = davPlayerObj.currentMedia.duration;
        davDuration = getPlayerParam("currentMediaDuration", true);
        //alert("currentMediaDuration " + davDuration + ", name " + getPlayerParam("currentMediaName"));
        
        playStarted = true;
        davGenerateEvent(DAV_START_EVENT);
    }
}

// called when playstate changes 
function davPlayerStateChange(newState) {
	//alert('davPlayerStateChange:'+newState);
    if (playingAd) return;
    
    if (newState == PLAYER_END_STATE && !playEnded) {
        // media ended
        davPlayState = PLAYER_OFF_STATE;
		//alert("davPlayerStateChange " + newState);
		
		playEnded = true;
        davGenerateEvent(DAV_END_EVENT);
    } else if (newState == PLAYER_STOPPED_STATE) {
        // media stopped
        davPlayState = PLAYER_OFF_STATE;
    }
}

function davGenerateEvent(davEvent) {

    if (playingAd) return;
	
	var davUrl = '//secure-us.imrworldwide.com/';
	//alert('davUrl:'+davUrl);
	
    var ScRandom = Math.ceil(Math.random()*1000000000);
    ScImgSrc = davUrl + 'cgi-bin/m?ci=' + scCid;

    if (prefixCG && (davContentTypeStr!="")) {
        ScImgSrc += '&cg=' + davContentTypeStr + '-' + davGroup;                   //Content Group 
    } else {
        ScImgSrc += '&cg=' + davGroup;
    }

    try {
        ScImgSrc += '&rp=' + escape(window.top.location);                          //Container of Stream
    } catch (e) {
        ScImgSrc += '&rp=' + escape(window.location);
    }
    
    for (count=0; count < davCustom.length; count++) {
        if (davCustom[count] != '') {
            ScImgSrc += '&c' + count + '=' + davCustom[count];
        }
    }
    if (davContentType != "") {
        ScImgSrc += '&c' + count + '=st,' + davContentType;                        // ContentType
    }

    if (davEvent == DAV_START_EVENT) {
               ScImgSrc += '&tl=dav0-' + escape(davTitle);                         //Title of the Stream
               ScImgSrc += '&si=' + escape(davContainer);                          //Container of Stream

    } else if (davEvent == DAV_PING_EVENT) {
               ScImgSrc += '&tl=dav1-' + escape(davTitle);                         //Title of the Stream
               ScImgSrc += '&du=' + escape(Math.round(davPlayedLength));           // Played Length
    } else if (davEvent == DAV_END_EVENT) {
               ScImgSrc += '&tl=dav2-' + escape(davTitle);                         //Title of the Stream
               ScImgSrc += '&du=' + escape(Math.round(davDuration));               // Played Length
    } else {
        return;
    } 

    ScImgSrc += '&cc=1';                                                           //Cookie Check (Always on)
    ScImgSrc += '&rnd=' + ScRandom;

    davImg = "";
    davImg = new Image();
    //alert('ScImgSrc:'+ScImgSrc);
    davImg.src = ScImgSrc;

}

function davInitStream(playerObj, url, cid, streamName, freq, playerName, container, titleCheck, rsPCG, custom) {
	playStarted = false;
	playEnded = false;
	
    davPlayerObj = playerObj;
    davUrl = url;
    //alert('davUrl:'+davUrl);
    //alert('freq:'+freq);
    scCid = cid;

    davTitle = streamName;
    davGroup = playerName;
    davContainer = container;

    if (titleCheck == 1) {
        readStreamName = 1;
    }

    if (rsPCG == 1) {
        prefixCG = 1;
    }
    davCustom = new Array();

    if (custom) {
        for (count=0; count < custom.length; count++) {
            davCustom[count] = custom[count];
        }
    }

    davPlayState = PLAYER_OFF_STATE;
    davStopTimer();
    
    if (!playingAd && !g_isIE && slCtl == null) {
        davGenerateEvent(DAV_START_EVENT);
    }
    
    if (freq <= 0) {
        return;
    } 
    davFreq = freq * 1000;
    //alert('davFreq:'+davFreq);
    davTimer = setInterval("davPing()", davFreq);
	//alert(window.location);

}

// support wmp and silverlight player

function getPlayerParam(name, pn) 
{	
    var ret = "0";
    switch (name) {
        // executeAcudeoAd finished 
        case "currentPosition":
            if (davPlayerObj)
                return davPlayerObj.controls.currentPosition;
            else if (slCtl != null) {
                ret = slCtl.Content.acudeo.getPlayerParam(name);
                return (pn ? Number(ret) : ret);
            }
            return davPlayedLength;
        case "currentMediaName":
            if (davPlayerObj)
                return (davPlayerObj.currentMedia ? davPlayerObj.currentMedia.name : "");
            else if (slCtl != null)
                return slCtl.Content.acudeo.getPlayerParam(name);
            return "";
        case "currentMediaDuration":
            if (davPlayerObj)
                return (davPlayerObj.currentMedia ? davPlayerObj.currentMedia.duration : 0);
            else if (slCtl != null) {
                ret = slCtl.Content.acudeo.getPlayerParam(name);
                return (pn ? Number(ret) : ret);
            }
            return davDuration;
    }
    return ret;
}

function setPlayingAd(str) {
    playingAd = (str == "true");
}

