﻿// JScript File
// UPDATE 11-18-2009 by Paul Maltar
// Added DWID and PHVS calls
// UPDATE 05-19-2009 by Paul Maltar
//Added UserID to tracking calls for Ando Tracking
// Update 06-12-2010 by Paul Maltar
// Changed the order of calling partner tracking as Ando does not seem to work when called last.

var PartnerID;
function TackingInfo(partnerID) {
    PartnerID = partnerID;
}

function loadXMLDoc(url) {
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.open("GET", url, true);
        req.send(null);
        // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        isIE = true;
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.open("GET", url, true);
            req.send();
        }
    }
    return req;
}
var TrackingState
function MMXTracking(StationID, CallSign, MixArtist, AndoMediaID, Action, Source, DWID, UserID) {
    if (Source == null || Source == "") {
        Source = 'unknown';
    }

    if (PartnerID == null || PartnerID == "") {
        PartnerID = 'CBS';
    }
    try {
        if (CallSign == null || CallSign == "null") {
            CallSign = "";
        }
    }
    catch (e) {
        CallSign = "";
    }
    try {
        if (MixArtist == null || MixArtist == "null") {
            MixArtist = "";
        }
    }
    catch (e) {
        MixArtist = "";
    }
    var date_now = new Date();
    if (Action == null || Action == "null") {
        Action = "ChangeStation";
    }

    AndoTrackingVars.CallSign = CallSign;
    AndoTrackingVars.AndoMediaID = AndoMediaID;
    AndoTrackingVars.Action = Action;
    AndoTrackingVars.Source = Source;
    AndoTrackingVars.UserID = UserID;
    
    if (Action == "ChangeStation") {
        var url = "/player/mmx.xml?pid=" + PartnerID + "&sid=" + StationID + (CallSign != "" ? "&StationName=" + escape(CallSign) : "") + (MixArtist != "" ? "&MixArtist=" + escape(MixArtist) : "") + "&noCache=" + escape(date_now.toTimeString());
        loadXMLDoc(url);
        if (CallSign != "") {
            document.getElementById("TrackingPixel").src = "http://stat.onestat.com/stat.aspx?tagver=2&sid=" + CallSign + ".intertechmedia.com&url=http://player.play.it&ti=Streaming_Player&js=No&";
        }
    }
    //alert("Action = " + Action);
    CallAndoTracking();
    if (PartnerID == "AOL" && Action == "ChangeStation") {
        //alert("PartnerID = " + PartnerID + "\nAction = " + Action);
        if (s_265.mmxgo === true) {
            var mmx_host = (document.location.protocol == 'https:' ? 'https://sb' : 'http://b') + '.scorecardresearch.com/b',
	        mmx_URL = encodeURIComponent('http://player.play.it/player/mmx.xml?pid=aol'),
	        mmx_img_src = mmx_host + '?C1=2&C2=1000009&C4=' + mmx_URL + '&C5=' + encodeURIComponent(s_265.channel) + '&C7=' + mmx_URL + '&C8=rdo%20%3A%20Station%20Change&RN=' + Math.floor(Math.random() * 99999999);

            var mmx_img = new Image(); document.getElementsByTagName('head')[0].appendChild(mmx_img); mmx_img.src = mmx_img_src;
        }
    }
    if (PartnerID == "YAHOO") {
        switch (Action) {
            case "ChangeStation":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTEyN2FnNnZyBF9TAzc5MTAwNDI1NgRzZWMDc3QtY2hnBHNsawNjaGFuZ2U-";
                break;
            case "Play":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTB1aWNpdmZrBF9TAzc5MTAwNDI1NgRzZWMDcGJ0bgRzbGsDcGxheQ--";
                break;
            case "Start":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTExNmJudWhpBF9TAzc5MTAwNDI1NgRzZWMDc3Qtc3RyBHNsawNzdGFydA--";
                break;
            case "Stop":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTB1M2FtNGVoBF9TAzc5MTAwNDI1NgRzZWMDcGJ0bgRzbGsDc3RvcA--";
                break;
            case "Pause":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTB2cXBvZmhkBF9TAzc5MTAwNDI1NgRzZWMDcGJ0bgRzbGsDcGF1c2U-";
                break;
            case "Skip":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTB1ZG4xbjUwBF9TAzc5MTAwNDI1NgRzZWMDcGJ0bgRzbGsDc2tpcA--";
                break;
            case "SetPreset":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTE1b2lnb2szBF9TAzc5MTAwNDI1NgRzZWMDc3QtaW5mbwRzbGsDYm9va21hcms-";
                break;
            case "RemovePreset":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTEzdW4yMHFoBF9TAzc5MTAwNDI1NgRzZWMDc3QtaW5mbwRzbGsDcmVtb3Zl";
                break;
            case "BrowseStation":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTEycjdnZXIzBF9TAzc5MTAwNDI1NgRzZWMDYm5hdgRzbGsDc3RhdGlvbnM-";
                break;
            case "BrowseHistory":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTExa3FxZWRjBF9TAzc5MTAwNDI1NgRzZWMDYm5hdgRzbGsDaGlzdG9yeQ--";
                break;
            case "BrowsePresets":
                TrackingPixel.src = "http://geo.yahoo.com/t;_ylc=X3oDMTEya3U3bmY0BF9TAzc5MTAwNDI1NgRzZWMDYm5hdgRzbGsDYm9va21hcms-";
                break;
            case "FailOver":
            default:
                TrackingPixel.src = "/images/blank.gif";
                break;
        }
    }

    //DW calls have to be after Ando because when DW throws a silent error, nothing after it will be executed.
    if (Action == "ChangeStation" || Action == "Start") {
        if (DWID != null && DW != null) {
            DW.pageParams = {
                siteId: DWID
            };
            DW.clear();
            //DW.trackClicks();
        }
    }
}

function CallAndoTracking() {
    if (AndoTrackingVars.Started) {
        //alert('AndoTrackingVars.AndoMediaID:' + AndoTrackingVars.AndoMediaID);
        if (AndoTrackingVars.AndoMediaID != null || AndoTrackingVars.AndoMediaID != "") {
            if (AndoTrackingVars.CallSign != "") {
                AndoTrackingVars.Action = "Stop";
            }
            var AndoExtraData = 'dist=' + PartnerID + '&ss=' + AndoTrackingVars.Source + '&ps=' + TargetPlayer + '&vid=' + AndoTrackingVars.UserID;
            //alert("Action : " + AndoTrackingVars.Action + "\nAndoMediaID : " + AndoTrackingVars.AndoMediaID + "\nAndoExtraData : " + AndoExtraData);
            switch (AndoTrackingVars.Action) {
                case "ChangeStation":
                    //alert(AndoTrackingVars.Action + ": ChangeStation tracking");
                    AndoTrack.AndoStartTracking(AndoTrackingVars.AndoMediaID, AndoExtraData);
                    TrackingState = "on";
                    break;
                case "Play":
                case "Start":
                    if (TrackingState == "failover" || TrackingState == "Error") {
                        //alert(AndoTrackingVars.Action + ": in failover mode do nothing");
                    }
                    else {
                        //alert(AndoTrackingVars.Action + ": Play/Start tracking");
                        if (TrackingState == "paused") {
                            AndoTrack.AndoResumeTracking();
                        } else {
                            //alert("AndoTrackingVars.Action : " + Action + "\nAndoMediaID : " + AndoMediaID + "\nAndoExtraData : " + AndoExtraData);
                            AndoTrack.AndoStartTracking(AndoTrackingVars.AndoMediaID, AndoExtraData);
                            //alert("success")
                        }
                        TrackingState = "on";
                    }
                    break;
                case "Pause":
                    AndoTrack.AndoPauseTracking();
                    TrackingState = "paused";
                    break;
                case "Stop":
                case "Timeout":
                    if (TrackingState == "on") {
                        //alert(AndoTrackingVars.Action + ": Stop/Pause/FailOver/Timeout - Turn off tracking");
                        AndoTrack.AndoEndTracking();
                        TrackingState = "off";
                    }
                    else {
                        //alert(AndoTrackingVars.Action + ": Stop/Pause/FailOver/Timeout Tracking is already off, do nothing");
                    }
                    break;
                case "Error":
                    //alert(AndoTrackingVars.Action + ": Stop/Pause/FailOver/Timeout - Turn off tracking");
                    AndoTrack.AndoEndTracking();
                    TrackingState = "Error";
                    break;
                case "FailOver":
                    //alert(AndoTrackingVars.Action + ": Stop/Pause/FailOver/Timeout - Turn off tracking");
                    AndoTrack.AndoEndTracking();
                    TrackingState = "failover";
                    break;
                case "Skip":
                    if (TrackingState == "off") {
                        AndoTrack.AndoStartTracking(AndoTrackingVars.AndoMediaID, AndoExtraData);
                        //alert(AndoTrackingVars.Action + ": tracking was off - Start tracking");
                        TrackingState = "on";
                    }
                    else {
                        //alert(AndoTrackingVars.Action + ": tracking is on: Do nothing");
                    }
                    break;
                case "SetPreset":
                case "RemovePreset":
                case "BrowseStation":
                case "BrowseHistory":
                case "BrowsePresets":
                default:
                    //alert(AndoTrackingVars.Action + ": default: Do nothing");
                    break;
            }
        }
    }
    else {
        //alert('Ando is Not loaded yet... tryagain in 1 sec');
        AndoTrackingVars.Started = true;
        setTimeout(CallAndoTracking, 1000);
    }
}

function AndoTrackingInfo() {
    this.CallSign;
    this.AndoMediaID;
    this.Action;
    this.Source;
    this.UserID;
    this.Started = false;
}
var AndoTrackingVars = new AndoTrackingInfo();
//window.onbeforeunload = CloseHistory;

var HistoryTrackingVal = "";
var TrackClose
var delayed = false;
//PlayHistoryValues('me', '1', '2433', '1');
function CloseHistory() {
    if (HistoryTrackingVal == "")
        return;
    if (TrackClose == null)
        TrackClose = document.getElementById("TrackClose");
    if (TrackClose != null)
        TrackClose.src = "http://playhistory.play.it/PlayHistoryVerificationService/PlayHistoryVerificationService.svc/UpdateStatusOnClose?" + HistoryTrackingVal;

    return delayed;
}

function PlayHistoryValues(User, Track, Station, Seconds, nextTrackId) {
    if (nextTrackId == null || nextTrackId == "")
        nextTrackId = -1;
    if (Track == null || Track == "")
        Track = -1;
    if (Seconds == null || Seconds == "" || Seconds == "null")
        Seconds = -1;
    HistoryTrackingVal = 'userId=' + User + '&trackId=' + Track + '&stationId=' + Station + '&secondsPlayed=' + Seconds + '&target=' + TargetPlayer + '&nextTrackId=' + nextTrackId
    //(string userId, int trackId, string stationid, int secondsPlayed, string target, int nextTrackId)
}

//window.onunload = CloseHistory;

function attachedDelayTimer() {
    try {
        if (is.safari) {
            window.onbeforeunload = CloseHistory;
            //alert('attached listener');
        }
        else {
            window.onunload = CloseHistory;
        }
        delayedtimerAttached = true;
    }
    catch (e) {
        delayedtime = setTimeout(attachedDelayTimer, 2000);
        delayedtimerAttached = false;
    }
}
attachedDelayTimer();
