
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;

function davStopTimer() {
    clearInterval(davTimer);
}

function davPing() {
    if (davPlayState == PLAYER_STARTED_STATE) {
        var currentPos = davPlayerObj.controls.currentPosition;
        if (currentPos != davPlayedLength) {
            davPlayedLength = currentPos;
            davGenerateEvent(DAV_PING_EVENT);
        }
    }
}

// called when opening new media.
function davPlayerOpenStateChange(newState) {

    if (newState == PLAYER_OPENED_STATE) {
        // media started
        davPlayState = PLAYER_STARTED_STATE;
        if (readStreamName) {
            davTitle = davPlayerObj.currentMedia.name;
        }
        var ctype = davPlayerObj.currentMedia.getItemInfo("CONTENTTYPE").toUpperCase();
	if (ctype != null) {
        	ctype = ctype.toUpperCase();
	}
        var absVal = davPlayerObj.currentMedia.getItemInfo("ABSTRACT").toUpperCase();
	if (absVal != null) {
        	absVal = absVal.toUpperCase();
	}
	if (ctype != null || absVal != null) {
        	if (ctype == "AD" || absVal == "AD" ) {
            		davContentType = "a";
            		davContentTypeStr = "ad";
        	} else if (ctype == "CONTENT" || absVal == "CONTENT") {
            		davContentType = "c";
            		davContentTypeStr = "content";
        	} else {
            		davContentType = "";
            		davContentTypeStr = "";
        	}
	}
        davDuration = davPlayerObj.currentMedia.duration;
        davGenerateEvent(DAV_START_EVENT);
    }
}

// called when playstate changes 
function davPlayerStateChange(newState) {

    if (newState == PLAYER_END_STATE) {
        // media ended
        davPlayState = PLAYER_OFF_STATE;

        davGenerateEvent(DAV_END_EVENT);
    } else if (newState == PLAYER_STOPPED_STATE) {
        // media stopped
        davPlayState = PLAYER_OFF_STATE;
    }
}

function davGenerateEvent(davEvent) {

    var ScRandom = Math.ceil(Math.random()*1000000000);
    var rsLP = location.protocol.indexOf('https')>-1?'https:':'http:';

    ScImgSrc = rsLP + davUrl + 'cgi-bin/m?ci=' + scCid;

    if (prefixCG && (davContentTypeStr!="")) {
        ScImgSrc += '&cg=' + davContentTypeStr + '-' + davGroup;                   //Content Group 
    } else {
        ScImgSrc += '&cg=' + davGroup;                                      
    }
    ScImgSrc += '&rp=' + escape(window.top.location);                              //Container of Stream
    
    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();
    davImg.src = ScImgSrc;

}

function createActiveXObject(id) {

    var error;
    var control = null;

    try {
        if (window.ActiveXObject){
            control = new ActiveXObject(id);
        } else if (window.GeckoActiveXObject){
            control = new GeckoActiveXObject(id);
        }
    } catch (error){;}
    return control;
}

function detectWMPSupport() {

    var wmp64 = "MediaPlayer.MediaPlayer.1";
    var wmp7 = "WMPlayer.OCX.7";
    if((window.ActiveXObject && navigator.userAgent.indexOf('Windows') != -1) || window.GeckoActiveXObject) {
        if(createActiveXObject(wmp7)){ 
            return true;
        } else {
            if(createActiveXObject(wmp64)){
                return true;
            } else {
                return false;
            }
        }
    } else { 
        return false;
    }
}

function davInitStream(playerObj, url, cid, streamName, freq, playerName, container, titleCheck, rsPCG, custom) {

    davPlayerObj = playerObj;
    davUrl = url;
    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 (!detectWMPSupport()) {
        davGenerateEvent(DAV_START_EVENT);
        supportWMP = 0;
    } else {
        supportWMP = 1;
    }
    if (freq <= 0) {
        return;
    } 
    davFreq = freq * 1000;
    davTimer = setInterval("davPing()", davFreq);

}

