var HYPERLINK = 0;
var FORM = 1;
var URLSTRING = 2;
var UNKNOWN= 3;


var _ctLinkObj = null;
var _ctLinkType = UNKNOWN;
var _ctCookieName = "ENT.CT.TO";
var _ctTimeOutHandle = null;
var _ctWaiting = false;

var _om_gbls = { 
    setomnicontenttype : function(p) {
        var ct="other";
        if (p.indexOf("/article")>-1) { ct="article"; }
        else if (p.indexOf("/photo")>-1||p.indexOf("/gallery")>-1 ) { ct="photo"; }
        else if (p.indexOf("/video/")>-1) { ct="video"; }
        else if (p.indexOf("/blog")>-1||p.indexOf("blog/")>-1 ) { ct="blog"; }
        else if (p.indexOf("photo")>-1||p.indexOf("gallery")>-1 ) { ct="photo"; }
        return ct;
    },
    setVertical : function (h) {
        var vert="other";
        if (h.indexOf("entertainment")>-1) { vert="entertainment"; }
        else if (h.indexOf("movies")>-1) { vert="movies"; }
        else if (h.indexOf("tv")>-1) { vert="tv";}
        else if (h.indexOf("music")>-1) { vert="music";  }
        return vert;
    },
    setSubDept : function(p,vert) {
        var sub=p;
        if(vert=="movies") {
            if (p=="/") { sub="home"; }
            else if (p.indexOf("/movies/movie/")>-1) { sub="movie"; }
            else if (p.indexOf("/showtimes/")>-1) { sub="showtimes"; }
            else if (p.indexOf("/top-box-office")>-1) { sub="top box office"; }
            else if (p.indexOf("/movie-trailers")>-1) { sub="trailers"; }
            else if (p.indexOf("/in-theaters")>-1) { sub="in theaters"; }
            else if (p.indexOf("/coming-soon")>-1) { sub="coming soon"; }
            else if (p.indexOf("/new-on-dvd")>-1) { sub="new on dvd"; }
            else if (p.indexOf("/critics-reviews")>-1) { sub="critics reviews"; }
        }
        else if (vert=="tv") {
            if (p=="/") { sub="home"; }
            else if (p.indexOf("/photos/tv")>-1) { sub="photos"; }
            else if (p.indexOf("/tv/guide/")>-1) { sub="tv listings"; }
            else if (p.indexOf("/tonights-picks/")>-1) { sub="tonights picks"; }
            else if (p.indexOf("/realitytv/")>-1) { sub="reality tv"; }
            else if (p.indexOf("/new-on-dvd/")>-1) { sub="new on dvd"; }
            else if (p.indexOf("/tv/browse")>-1) { sub="browse tv shows"; }
            else if (p.indexOf("/video/tv")>-1) { sub="video"; }
            else if (p.indexOf("/news/")>-1) { sub="news"; }
        }
        else if (vert=="music") {
            if(p=="/") { sub="home"; }
            else if (p.indexOf("/photos/music")>-1) { sub="photos"; }
            else if (p.indexOf("/video/music")>-1) { sub="music videos"; }
            else if (p.indexOf("/newthisweek/")>-1) { sub="new this week"; }
            else if (p.indexOf("/listening booth/")>-1) { sub="listening booth"; }
            else if (p.indexOf("/new-on-dvd/music")>-1) { sub="new on dvd"; }
            else if (p.indexOf("/genre/")>-1) { sub="browse"; }
        }
        else if (vert=="entertainment") {
            if(p=="/") { sub="home"; }
            else if (p.indexOf("/video/")>-1) { sub="video"; }
            else if (p.indexOf("/photos/movies")>-1) { sub="photos"; }
            else if (p.indexOf("/blog")>-1) { sub="blog"; }
            else if (p.indexOf("/superfans")>-1) { sub="superfans"; }
            else if (p.indexOf("/news/")>-1) { sub="news"; }
            else if (p.indexOf("/the-hit-list/")>-1) { sub="blog"; }
        }
        return sub;
    },
    linkTrackCall : function(obj,desturl,cm1,cm2,ce,hl) {
      var oldlt=s.linkTrackVars;
      s.trackExitLinks=false;
      s.linkTrackVars="prop12,prop13,prop14,prop15,prop16,prop17";
      s.prop12=desturl;
      s.prop13=cm1;
      s.prop14=cm2;
      s.prop15=ce;
      s.prop16=hl;
      s.prop17=s.pageName;
      s.tl(obj,'o',desturl);
      s.linkTrackVars=oldlt;
    },
    setPGcodes : function () {
        var advs = $("table[pagegroup]");
        var innertext;
        var pg = "";
        var Index = 0;
        // Logic to find out PG codes
        for (i = 0; i < advs.length; i++) {
            pg += $(advs[i]).attr("pagegroup") + "-";
        }
        pg = pg.substr(0, pg.length - 1);
        return (pg);
    },
    setevar30 : function(ct,pg)  {
        if (!ct) ct = _om_gbls.setomnicontenttype();
        if (pg != "") {
           pg += "||";
           return (pg + ct + s.prop3);
        }
        return (s.prop19 + s.prop3);
    },
    setExtraVars : function() {
        var p=window.location.pathname.toLowerCase();
        var h=window.location.hostname.toLowerCase();
        // insert test values here
        //h = "tv.msn.com";
        //p = "/photos/tv/";
        s.prop19 = _om_gbls.setomnicontenttype(p);
        s.prop27 = _om_gbls.setVertical(h);
        s.prop28 = _om_gbls.setSubDept(p,s.prop27);
        s.prop45 = _om_gbls.setPGcodes();
        s.eVar30 = _om_gbls.setevar30(s.prop19,s.prop45); 
    }
}

function h(hyperlink, data)
{
	window.setTimeout("omTrack('" + hyperlink.href.replace(/\'/g,"%27") + "','" + hyperlink.innerText.replace(/\'|\"/g,"") + "','" + data.replace(/\'|\"/g,"") + "');", 10);
	return ctTrackHyperlink(hyperlink, data);
}

function clipt(hyperlink, data)
{
	if(typeof(hyperlink.clipurl) != "undefined" && typeof(hyperlink.clipid) != "undefined")
	{
	    window.setTimeout("omClipTrack('" + hyperlink.clipurl.replace(/\'/g,"%27") + "','" + hyperlink.clipid.replace(/\'/g,"") + "','" + data.replace(/\'|\"/g,"") + "');", 10);
	}
	return ctTrackHyperlink(hyperlink, data);
}

function omClipTrack(clipurl, clipid, data)
{
	try
	{
		var w=window;
		var s = s_gi(w.s_account);
		s.linkTrackVars = "eVar19,eVar21,events";
		s.linkTrackEvents = "prodView";
		s.eVar19 = "1";
		var u = clipurl.substr(0,clipurl.indexOf("?"))
		u = u.substr(u.lastIndexOf(".") + 1);
		s.eVar21 = u;
		s.events = "prodView";
		s.tl(true, 'o', clipid);
	}
	catch(e)
    {
    }
}

function omTrack(href, linktext, data)
{
	try
	{
		if(ctTrackingNow() == false)
		{
			if(ctIsAnchor() == true)
				return true;
			else
				return false;
		}
		
		var w=window;
		if(w.s)
		{
			w.s.linkTrackVars="prop13,prop15,prop16,prop17";
		
		    var pr = "";
		    var s1 = data.split("&");
		    var ss = "";
		    var t = "";
		    var source = "";
		    var campaign = "";

		    var hl = false;
		    for(var i=0;i<s1.length;i++)
		    {
			    ss = s1[i];
			    t = ss.substr(ss.indexOf("=") + 1)
			    if(ss.toLowerCase().indexOf("cm") >= 0)
			    {
				    w.s.prop13 = t;
			    }
			    else if(ss.toLowerCase().indexOf("ce") >= 0)
			    {
				    w.s.prop15 = t;
			    }
			    else if(ss.toLowerCase().indexOf("hl") >= 0)
			    {
				    hl = true;
				    w.s.prop16 = t;
			    }
		    }
		    if(hl == false)
		    {
			    w.s.prop16 = linktext;
		    }
		    
		    var c_url = window.location;
		    if(c_url)
		    {
		        w.s.prop17 = c_url;
		    }
    		
		    if(w.s&&typeof(w.s.tl)=="function")
		    {
			    w.s.tl(true,"o",linktext);
		    }
		}
	}
	catch(e)
    {
    }
}


function ctTrackHyperlink(hyperlink, data)
{
	if(window.event.shiftKey == true)
	{
		ctTrackDirect(data);
		return true;
	}
	
	_ctLinkObj = hyperlink;
	_ctLinkType = HYPERLINK;

	if(ctTrackingNow() == false)
	{
		if(ctIsAnchor() == true)
			return true;
		else
			return false;
	}

	ctCancelTimer();

	if(ctHasTarget() == true)
	{ 
		_ctWaiting = false; 
		ctSetTrackData(data);
		return true;
	}
	else
	{
		_ctWaiting = true; 
		ctSetTimeout();
		ctSetTrackData(data);

		if(ctIsAnchor() == true)
			return true;
		else
			return false;
	}
}

function f(form, data){return ctTrackForm(form, data);}
function ctTrackForm(form, data)
{
    _ctLinkObj = form;
    _ctLinkType = FORM;

	if(ctTrackingNow() == false)
		return true;

	ctCancelTimer();

    _ctWaiting = true;
    ctSetTimeout();
    ctSetTrackData(data);
    return false;
}

function u(url, data){return ctTrackUrl(url, data);}
function ctTrackUrl(url, data)
{
    _ctLinkObj = url;
    _ctLinkType = URLSTRING;

	if(ctTrackingNow() == false)
	{
		window.location = url;
	}
	else
	{
		ctCancelTimer();

		_ctWaiting = true;
		ctSetTimeout();
		ctSetTrackData(data);
	}
    
    return false;
}

function ctTrackDirect(data)
{
	ctCancelTimer();
	_ctWaiting = false;
	ctSetTrackData(data);
}

function ctSetTimeout()
{
    _ctTimeOutHandle = window.setTimeout("ctTimeOut();", (timeOut  * 1000) );
}


function ctSetTrackData(data)
{
    clickTarget.src = gServer + "??" + "pi=" + propertyId + "&di=" + domaindId + "&ps=" + pageId + "&" + data;
}


function ctCancelTimer()
{
	if(_ctTimeOutHandle != null)
		window.clearTimeout(_ctTimeOutHandle);

	_ctTimeOutHandle = null;
}

function ctIsAnchor()
{
	var ret = false;

	if(_ctLinkType == HYPERLINK)
	{
		if(_ctLinkObj.href.charAt(_ctLinkObj.href.length - 1) == "#")
		{
			ret = true;
		}
	}

	return ret;
}


function ctTrackingNow()
{
	if(document.cookie.indexOf(_ctCookieName) == -1)
		return true;
	else
		return false;
}


function ctHasTarget()
{	
    if(_ctLinkType == HYPERLINK)
	{
		if(_ctLinkObj.target != "")
		    return true;
	}
	return false;
}


function ctDoNavigation()
{
	if(_ctLinkObj == null || ctIsAnchor() == true)
		return;

	if(_ctLinkType == HYPERLINK)
        window.location = _ctLinkObj.href;
	else if(_ctLinkType == FORM)
		_ctLinkObj.submit();
	else if(_ctLinkType == URLSTRING)
		window.location = _ctLinkObj;
}


function ctTimeOut()
{
    if(_ctWaiting == true)
    { 	
	    var expiration = new Date();
	    expiration.setTime(expiration.getTime() + ((backoffTime * 1000) * 60));

	    document.cookie = _ctCookieName + "=page;path=/;expires=" + expiration.toUTCString();

	    ctDoNavigation();
	}
}


function ctStateChange()
{
    if(_ctWaiting == true)
    { 	
	    if(event.srcElement.readyState == "complete")
	    {
		    ctCancelTimer();
		    ctDoNavigation();
	    }
    } 
}

function flashtrack(link, cm, linkname)
{
	window.setTimeout("omFlashTrack('" + cm.replace(/\'/g,"") + "','" + linkname.replace(/\'/g,"") + "');", 10);
	window.location = link;
}

function omFlashTrack(cm, linkname)
{
	try
	{        
		var w=window;
		var s = s_gi(w.s_account);
		s.linkTrackVars = "prop17,prop18,prop13,prop16";
		s.prop17 = w.tmppageName;
		s.prop18 = w.tmpcampaignID;
		s.prop13 = cm;
		s.prop16 = linkname;
		void(s.tl(true, 'o', linkname));
	}
	catch(e)
    {
    }
}

