if (typeof abcdm == "undefined" || !abcdm) {
    var abcdm = {};
}

/* Analytics Class */

abcdm.analytics = {

    omnTagCleanUp: function(name) {

        var url = location.href;

        if ((s_omni != null) && (typeof s_omni == "object")) {

            s_omni[name] = s_omni[name].toLowerCase();
            s_omni[name] = s_omni[name].replace(/\+/g, "_");

            /* Regex:	   [0] Remove spaces
			   [1] Dashes to underscores
			   [2] Slashes to colons
			   [3] Pluses to underscores
			   [4] Remove null trailing colons
			   [5] Remove double colons
			   [6] Spaces to underscores
			   [7] Remove whole numeric entries
	    */

        var correctionPatterns = [	"/\\s/g,\"\"", 
            				"/-/g, \"_\"",
            				"/\\//g, \":\"",
            				"/\\+/g, \"_\"",
            				"/:*/,\"\"",             				
            				"/(:){2,}/g, \":\"",
            				"/(\\s)/, \"_\"",
            				"/\\b\\:[\\d]+\\b/g, \"\""];

            for (var i = 0; i < correctionPatterns.length; i++) {
                if (s_omni[name] != null) {
                    eval("s_omni." + name + "=" + "s_omni." + name + ".replace(" + correctionPatterns[i] + ")");
                }
            }

            ((s_omni[name].lastIndexOf(":") + 1) == s_omni[name].length) ? s_omni[name] = s_omni[name].substr(0, s_omni[name].length - 1) : s_omni[name] = s_omni[name];

            //alert(name + " = " + s_omni[name]);
        }
    },

    //Tracks link:
    omnTrackLink: function(sEvent, sLinkname) {

        try {
            var pageName = s_omni.pageName;
            s_omni.linkTrackVars = "eVar16,events";
            s_omni.linkTrackEvents = sEvent;
            s_omni.eVar16 = pageName;
            s_omni.events = sEvent;
            s_omni.tl(this, 'o', sLinkname);

        } catch(e) {}

        return false;

    },

    //Tracks Campaigns Via QS (arg):
    omnTrackCampaign: function(arg) {

        var query = location.search.substring(1);
        var pairs = query.split("&");

        for (var i = 0; i < pairs.length; i++) {
            var pos = pairs[i].indexOf('=');
            if (pos == -1) continue;
            var argname = pairs[i].substring(0, pos);
            if (argname == arg) {
                var value = pairs[i].substring(pos + 1);
                s_omni.campaign = unescape(value);
                break;
            }

        }

    },

    //Construct tags:
    omnBuildTags: function(name) {

        if ((s_omni != null) && (typeof s_omni == "object")) {

            if ((s_omni[name] == null) || (s_omni[name] == "null")) {
                var hier1 = url.substring(0, url.lastIndexOf('/') + 1);
                hier1 = url.substring(url.indexOf(location.hostname) + location.hostname.length);
                var pagename = s_omni[name] = url.substring(url.lastIndexOf('/') + 1, url.length);
                hier1 = "unassigned:" + location.hostname + ":" + hier1;

                if (name == "pageName") {
                    s_omni[name] = hier1 + ":" + pagename;
                }
            }

            //Include categories w/ pagename:
            if (name == "pageName") {

                var hierarchy = new Array();
                var prop4 = '';
                var prop5 = '';
                var prop6 = '';
                var hier1 = '';
                var chann = '';

                abcdm.analytics.omnTagCleanUp("pageName");

                hierarchy = s_omni[name].split(':');

                if (hierarchy.length >= 2) {
                    for (var i = 0; i < 2; i++) {
                        prop5 += hierarchy[i] + ":";
                    }
                }

                if (hierarchy.length >= 3) {
                    for (var i = 0; i < 3; i++) {
                        prop6 += hierarchy[i] + ":";
                    }
                }

                for (var i = 0; i < hierarchy.length - 1; i++) {
                    hier1 += hierarchy[i] + ":";
                }

                chann = hierarchy[0];

                prop6 = prop6.slice(0, -1);
                prop5 = prop5.slice(0, -1);
                hier1 = hier1.slice(0, -1);

                if (prop5) {
                    prop4 = prop5.substring(prop5.lastIndexOf(":") + 1, prop5.length);
                }

                if (!s_omni["prop6"]) {
                    if ((prop6 != '') && (prop6 != s_omni["pageName"])) {
                        s_omni["prop6"] = prop6;
                    }
                } else {
                    abcdm.analytics.omnTagCleanUp("prop6");
                }

                if (!s_omni["prop5"]) {
                    if (prop5 != '') {
                        s_omni["prop5"] = prop5;
                    }
                } else {
                    abcdm.analytics.omnTagCleanUp("prop5");
                }

                if (!s_omni["prop4"]) {
                    if (prop4 != '') {
                        s_omni["prop4"] = prop4;
                    }
                } else {
                    abcdm.analytics.omnTagCleanUp("prop4");
                }

                if (!s_omni["hier1"]) {
                    if (hier1 != '') {
                        s_omni["hier1"] = hier1;
                    }
                } else {
                    abcdm.analytics.omnTagCleanUp("hier1");
                }

                if (!s_omni["channel"]) {
                    if (chann != '') {
                        s_omni["channel"] = chann;
                        s_omni["eVar19"] = chann;
                    }
                } else {
                    abcdm.analytics.omnTagCleanUp("channel");
                }

                if (!s_omni["prop31"]) {
                    flashver = abcdm.analytics.getFlashVersion();
                    s_omni["prop31"] = flashver[0] + "." + flashver[1];
                }

                if (!s_omni["prop24"]) {
                    s_omni["prop24"] = window.location;
                }

                //alert('pageName-- ' + s_omni["pageName"]);
                //alert('hier1-- ' + s_omni["hier1"]);
                //alert('channel-- ' + s_omni["channel"]);
                //alert('prop5-- ' + s_omni["prop5"]);
                //alert('prop6-- ' + s_omni["prop6"]);
            }

        }

        try {

} catch(e) {}

        return false;

    },

    getFlashVersion: function() {

        var ver;

        if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") {
            var _d = navigator.plugins["Shockwave Flash"].description;

            if (typeof _d != "undefined") {
                _d = _d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
                var _m = parseInt(_d.replace(/^(.*)\..*$/, "$1"), 10);
                var _r = /r/.test(_d) ? parseInt(_d.replace(/^.*r(.*)$/, "$1"), 10) : 0;
                ver = [_m, _r];
            }

        }
        else if (window.ActiveXObject) {

            try {
                var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
            }
            catch(e) {
                try {
                    var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
                    ver = [6, 0];
                    _a.AllowScriptAccess = "always"; // throws if fp < 6.47 
                }
                catch(e) {}

                try {
                    var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
                }
                catch(e) {}
            }
            if (typeof _a == "object") {
                var _d = _a.GetVariable("$version"); // bugs in fp 6.21/6.23
                if (typeof _d != "undefined") {
                    _d = _d.replace(/^\S+\s+(.*)$/, "$1").split(",");
                    ver = [parseInt(_d[0], 10), parseInt(_d[2], 10)];
                }

            }
        }

        return ver;
    },

  trackMedia: function() {

    var debug = false;
    if (window.location.search.substring(1).indexOf("debug_js=true") != -1) {
        debug = true;
    }

    if (!abcdm.trackMediaArgs) {
        abcdm.trackMediaArgs = new Array();
    }

    for (var i = 0; i < arguments.length; i++) {
        abcdm.trackMediaArgs[i] = arguments[i];
    }

    var timeout = 24;

    if (!abcdm.trackMedia_queue) {
        abcdm.trackMedia_queue = 0;
    }

    if (((typeof s_omni.eVar2 == "undefined" || !s_omni.eVar2) && (abcdm.trackMedia_queue < timeout))) {
        abcdm.trackMedia_queue++;
        if (debug) msgWriter("WARNING (Could not retrieve eVar2 value, buffering.)");
        window.setTimeout('abcdm.analytics.trackMedia();', 2000);
        return false;
    }

    if (abcdm.trackMedia_queue == timeout) {
        if (debug) msgWriter("ERROR (Timed out while waiting for eVar2 value.)");
    }

    //Event Codes:
    var START = 1;
    var COMPLETE = 2;
    var AUTOSTARTED = 3;
    var OPEN = 4;
    var PAUSE = 5;
    var RESUME = 6;
    var STOP = 7;
    var CLOSE = 8;
    var AD_START = 9;
    var AD_COMPLETE = 10;
    var MUTE = 11;
    var FULL_SCREEN = 12;
    var EMBED = 13;
    var TOGGLE_QUALITY = 14;
    var LOGIN = 15;
    var ERROR = 16;
    var RELATED_VIDEOS = 17;

    if (abcdm.trackMediaArgs[1].length > 0) {
        s_omni.eVar2 = s_omni.eVar2 + ":error";
    }

    //var videoName = s_omni.eVar2.substring(4,s_omni.eVar2.length);
    s_omni.prop3 = s_omni.eVar2;

    if (!abcdm.videoEvents) {
        abcdm.videoEvents = new Array();
    }

    if (!abcdm.videoEvents["OPEN"]) {
        abcdm.videoEvents["OPEN"] = true;
        abcdm.videoEvents["PLAYTIME"] = 1;
        if (debug) msgWriter("V2 OPEN (" + s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name + "  Len:" + abcdm.omnParams.segmentstotallen + ")");
        s_omni.Media.open(s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name, abcdm.omnParams.segmentstotallen, s_omni.Media.playerName);
        s_omni.Media.trackEvents = "event1";
        //if (debug) alert(s.Media.e);
    }

    var action = abcdm.trackMediaArgs[0];

    switch (action) {

    case PAUSE:

        abcdm.videoEvents["PAUSE"] = true;
	//The stop event will handle this: 
	//abcdm.videoEvents["PLAYTIME"] = ((abcdm.videoEvents["ENDTIME"] - abcdm.videoEvents["STARTTIME"]) + abcdm.videoEvents["PLAYTIME"]);
        break;

    case RESUME:
        abcdm.videoEvents["RESUME"] = true;
        break;
    }


    //Count completes as closures:
    if(action == 2) action = 8;
    //Count pauses as stops:
    if(action == 5) action = 7;
    //Count resumes as starts:
    if(action == 6) action = 1;

    //s_omni.Media.trackVars = "prop1,prop2,prop3,prop9.prop12,prop31,prop29,eVar2,eVar20,eVar21,eVar16,eVar13,eVar11,eVar15,events";
    s_omni.Media.trackVars = "events,eVar2,eVar11,eVar15,eVar13";

    //if (debug) alert(action);

    //if (debug) alert("hier-- " + s_omni["hier1"]);

    switch (action) {

    case MUTE:
        abcdm.videoEvents["MUTE"] = true;
        break;

    case FULL_SCREEN:
        abcdm.videoEvents["FULL_SCREEN"] = true;
        break;

    case RELATED_VIDEOS:
        abcdm.videoEvents["RELATED_VIDEOS"] = true;
        break;

    case TOGGLE_QUALITY:
        abcdm.videoEvents["TOGGLE_QUALITY"] = true;
        break;

    case AUTOSTARTED:
        s_omni.eVar13 = "vid:" + "auto";
        break;

    case AD_START:
        abcdm.videoEvents["AD_START"] = true;
        if (abcdm.cvbParams.tag != null) {
            abcdm.cvbParams.tag.src = "http://beacon.securestudies.com/scripts/beacon.dll?C1=1&C2=3000014&C3=&C4=&C5=010000&C6=" + s_omni["channel"] + "&C7=" + escape(window.location.href) + "&C8=" + escape(document.title) + "&C9=" + escape(document.referrer) + "&rn=" + Math.floor(Math.random() * 99999999);
            if (debug) msgWriter("AD START(COMSCORE)");
        }
        break;

    case AD_COMPLETE:
        abcdm.videoEvents["AD_COMPLETE"] = true;
        break;

    case CLOSE:
        if (debug) msgWriter("CLOSE  (" + s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name + ")");
        s_omni.Media.close(s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name);
	 abcdm.videoEvents["OPEN"] = false;
        abcdm.videoEvents["PLAYTIME"] = 1;
        break;

    case OPEN:
        //Implied					
        break;

    case START:

        abcdm.videoEvents["START"] = true;
        abcdm.videoEvents["STARTTIME"] = new Date();

        if (!s_omni.eVar13) {
            s_omni.eVar13 = "vid:" + "manual";
        }

        if (abcdm.cvbParams.tag != null) {
            abcdm.cvbParams.tag.src = "http://beacon.securestudies.com/scripts/beacon.dll?C1=1&C2=3000014&C3=&C4=&C5=" + abcdm.cvbParams.delivery_type + "0000&C6=" + s_omni["channel"] + "&C7=" + escape(window.location.href) + "&C8=" + escape(document.title) + "&C9=" + escape(document.referrer) + "&rn=" + Math.floor(Math.random() * 99999999);
            if (debug) msgWriter("START(COMSCORE)");
        }

        if (abcdm.omnParams.videosegments != null) {
            if ((abcdm.trackMediaArgs[2] > 0) && (abcdm.trackMediaArgs[2] <= abcdm.omnParams.videosegments.length)) {
                /*
		  if ((abcdm.omnParams.videosegments[abcdm.trackMediaArgs[2]]) && (abcdm.omnParams.videosegments[abcdm.trackMediaArgs[2]].length > 0)) {
                    abcdm.videoEvents["START_evar15"] = s_omni.eVar2 + ":" + abcdm.omnParams.videosegments[abcdm.trackMediaArgs[2]];
                } else {
                    abcdm.videoEvents["START_evar15"] = s_omni.eVar2 + ":videosegment_" + abcdm.trackMediaArgs[2];
                }
		  */
                //abcdm.videoEvents["START_evar15"] = s_omni.eVar2 + ":segment_" + abcdm.trackMediaArgs[2];
		  abcdm.videoEvents["START_evar15"] = s_omni.eVar2 + ":segment_" + abcdm.trackMediaArgs[2] + ":" + abcdm.cvbParams.delivery_type_name;
            }
        }

	 //s_omni.events = "event1";
	 abcdm.videoEvents["PLAYTIME"] = ((abcdm.videoEvents["ENDTIME"] - abcdm.videoEvents["STARTTIME"]) + abcdm.videoEvents["PLAYTIME"]);

	 if(isNaN(Math.round(abcdm.videoEvents["PLAYTIME"] / 1000))) {
	        s_omni.Media.play(s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name, 0);
	        if (debug) msgWriter("PLAY @ 0");
	 } else {
	        s_omni.Media.play(s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name, Math.round(abcdm.videoEvents["PLAYTIME"] / 1000));
	        if (debug) msgWriter("PLAY @" + Math.round(abcdm.videoEvents["PLAYTIME"] / 1000));
        }
        
        break;

    case STOP:

        if (abcdm.omnParams.videosegments != null) {
            if ((abcdm.trackMediaArgs[2] > 0) && (abcdm.trackMediaArgs[2] <= abcdm.omnParams.videosegments.length)) {
                s_omni.eVar15 = "vid:" + abcdm.omnParams.videosegments[abcdm.trackMediaArgs[2]];
                //Chapter Stop:
                s_omni.events = "event10";
            }
        }

        abcdm.videoEvents["ENDTIME"] = new Date();

        abcdm.videoEvents["PLAYTIME"] = ((abcdm.videoEvents["ENDTIME"] - abcdm.videoEvents["STARTTIME"]) + abcdm.videoEvents["PLAYTIME"]);
        if (debug) msgWriter("STOP  " + s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name + " (viewing time: " + Math.round(abcdm.videoEvents["PLAYTIME"] / 1000) + ")");
        s_omni.Media.stop(s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name, Math.round(abcdm.videoEvents["PLAYTIME"] / 1000));

        break;

    }

    if (!s_omni.Media.monitor) {

        if (debug) msgWriter("OMN MON ATTACH");

        s_omni.Media.autoTrack = false;
        s_omni.Media.trackWhilePlaying = true; //Continuous Tracking
        s_omni.Media.trackSeconds = 20;


        s_omni.Media.monitor = function(s_omni, media) {

            var debug = false;            
	     var calltracker = false;
            if (window.location.search.substring(1).indexOf("debug_js=true") != -1) {
                debug = true;
            }
		
	     abcdm.videoEvents["ENDTIME"] = new Date();

	     if(!abcdm.videoEvents["PLAYTIME"]) abcdm.videoEvents["PLAYTIME"] = 1;

            if (debug) { 
              var viewtime = ((abcdm.videoEvents["ENDTIME"] - abcdm.videoEvents["STARTTIME"]) + abcdm.videoEvents["PLAYTIME"]);
		msgWriter("MONITOR (" + media.name + " offset: " + media.offset + " timePlayed: " + media.timePlayed + " event:" +  media.event + ")");
            }

            if (abcdm.videoEvents) {

                if (abcdm.videoEvents["PAUSE"]) {
                    abcdm.videoEvents["PAUSE"] = false;
                    s_omni.Media.trackEvents = s.Media.trackEvents + "," + "event40";
                    s_omni.eVar11 = "vid:" + "pause";
		      calltracker = true;
                    if (debug) msgWriter("PAUSE " + media.name);
                }

                if (abcdm.videoEvents["RESUME"]) {
                    abcdm.videoEvents["RESUME"] = false;
                    s_omni.eVar11 = "vid:" + "resume";
                    s_omni.Media.trackEvents = s.Media.trackEvents + "," + "event40";
		      calltracker = true;                    
                    if (debug) msgWriter("RESUME");
                }

                if (abcdm.videoEvents["MUTE"]) {
                    abcdm.videoEvents["MUTE"] = false;
                    s_omni.eVar11 = "vid:" + "mute";
                    s_omni.Media.trackEvents = s.Media.trackEvents + "," + "event40";
		      calltracker = true;                    
                    if (debug) msgWriter("MUTE");
                }

                if (abcdm.videoEvents["FULL_SCREEN"]) {
                    abcdm.videoEvents["FULL_SCREEN"] = false;
                    s_omni.eVar11 = "vid:" + "full-screen";
                    s_omni.Media.trackEvents = s.Media.trackEvents + "," + "event40";
		      calltracker = true;                    
                    if (debug) msgWriter("FULL_SCREEN");
                }

                if (abcdm.videoEvents["RELATED_VIDEOS"]) {
                    abcdm.videoEvents["RELATED_VIDEOS"] = false;
                    s_omni.eVar11 = "vid:" + "related-videos";
                    s_omni.Media.trackEvents = s.Media.trackEvents + "," + "event40";
		      calltracker = true;                    
                    if (debug) msgWriter("RELATED_VIDEOS");
                }

                if (abcdm.videoEvents["TOGGLE_QUALITY"]) {
                    abcdm.videoEvents["TOGGLE_QUALITY"] = false;
                    s_omni.eVar11 = "vid:" + "toggle-quality";
                    s_omni.Media.trackEvents = s.Media.trackEvents + "," + "event40";
		      calltracker = true;                    
                    if (debug) msgWriter("TOGGLE_QUALITY");
                }

                if (abcdm.videoEvents["AD_START"]) {
                    abcdm.videoEvents["AD_START"] = false;
                    s_omni.Media.trackEvents = s.Media.trackEvents + "," + "event12";
		      calltracker = true;                    
                    if (debug) msgWriter("AD_START");
                }

                if (abcdm.videoEvents["AD_COMPLETE"]) {
                    abcdm.videoEvents["AD_COMPLETE"] = false;
                    s_omni.Media.trackEvents = s.Media.trackEvents + "," + "event13";
		      calltracker = true;                    
                    if (debug) msgWriter("AD_COMPLETE");
                }

                if (abcdm.videoEvents["START"]) {
                    abcdm.videoEvents["START"] = false;

                    if (abcdm.videoEvents["START_evar15"]) {
                        s_omni.eVar15 = abcdm.videoEvents["START_evar15"];
                        //Chapter Start:
                        s_omni.Media.trackEvents = s.Media.trackEvents + "," +  "event9";
 		          calltracker = true;                        
                        if (debug) msgWriter("START (segment " + abcdm.videoEvents["START_evar15"] + " )");
                        abcdm.videoEvents["START_evar15"] = false;
                    }
                }

		  if(calltracker) {
                       
                       var newlist = new Array();
       	         listvalues = s.Media.trackEvents.split(",");
	       	  var hash = new Object();

	       	  	for (var i=0; i<listvalues.length; i++)
	       	  	{
	       	  		if (hash[listvalues[i].toLowerCase()] != 1)
	       	  		{
	       	  			if(listvalues[i])
             						newlist = newlist.concat(listvalues[i]);

	       	  			hash[listvalues[i].toLowerCase()] = 1
	       	  		}
	       	  		else { count++; }
	       	  	}

			 s_omni.Media.trackEvents = newlist.join(",");
			 //Fix for bug in omn code ... 
			 //s_omni.events = s_omni.Media.trackEvents;
	               if (debug) msgWriter("Track: " + s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name + "  Events: " + s_omni.Media.trackEvents + " Vars: " + s_omni.Media.trackVars + ")");
		        s_omni.Media.track(s_omni.eVar2 + ":" + abcdm.cvbParams.delivery_type_name);
			 s_omni.Media.trackEvents = "";
		  }

            }
        };
    }
}

};

//Legacy support:
function _hbLink(a, b, c) {

    if ((a != "PLUGINS_MOVE_INSTALLED") && (a != "PLUGINS_MOVE_NOT_INSTALLED")) {
        if (!b) b = a;
        abcdm.analytics.omnTrackLink(a, b);
    }
    //_hbLinkO(a,b,c);
}

function msgWriter(str) {
    var body = document.getElementsByTagName("body")[0];
    var oTestOutput = document.createElement("div");
    //var oTestOutput = document.getElementById("msgLayer");
    var oElem = document.createElement("div");
    oElem.appendChild(document.createTextNode(str));
    oTestOutput.appendChild(oElem);
    body.appendChild(oTestOutput);
}

function var_dump(obj) {
    if (typeof obj == "object") {
        return "Type: " + typeof(obj) + ((obj.constructor) ? "\nConstructor: " + obj.constructor: "") + "\nValue: " + obj;
    } else {
        return "Type: " + typeof(obj) + "\nValue: " + obj;
    }
}


function dedupe_list()
{
	var count = 0;
	var mainlist = document.form1.mainlist.value;
	mainlist = mainlist.replace(/\r/gi, "\n");
	mainlist = mainlist.replace(/\n+/gi, "\n");
	
	var listvalues = new Array();
	var newlist = new Array();
	
	listvalues = mainlist.split("\n");
	
	var hash = new Object();
	
	for (var i=0; i<listvalues.length; i++)
	{
		if (hash[listvalues[i].toLowerCase()] != 1)
		{
			newlist = newlist.concat(listvalues[i]);
			hash[listvalues[i].toLowerCase()] = 1
		}
		else { count++; }
	}
	document.form1.mainlist.value = newlist.join("\r\n");
	alert('Removed ' + count + ' duplicate values from list. . .');
}


function print_r(x, max, sep, l) {

    l = l || 0;
    max = max || 10;
    sep = sep || ' ';

    if (l > max) {
        return "[WARNING: Too much recursion]\n";
    }

    var
    i, r = '',
    t = typeof x,
    tab = '';

    if (x === null) {
        r += "(null)\n";
    } else if (t == 'object') {

        l++;

        for (i = 0; i < l; i++) {
            tab += sep;
        }

        if (x && x.length) {
            t = 'array';
        }

        r += '(' + t + ") :\n";

        for (i in x) {
            try {
                r += tab + '[' + i + '] : ' + print_r(x[i], max, sep, (l + 1));
            } catch(e) {
                return "[ERROR: " + e + "]\n";
            }
        }

    } else {

        if (t == 'string') {
            if (x == '') {
                x = '(empty)';
            }
        }

        r += '(' + t + ') ' + x + "\n";

    }

    return r;

}


