﻿
//
// Global Page-Scope Ad Variables
//
var dartTile = 1;
var tvgtoday = new Date();
var dartOrd = tvgtoday.getTime();

function getFullDARTad(position)
{
    var urlDART=getDARTag(position);    
    
    // only show ads when the website is on port 80
    if(!((document.location.port=="80")||(document.location.port=="")))
    {
        document.write(urlDART);
    }
    else
    {    
        if(urlDART.length>0)
        {
            document.write("<scr"+"ipt type='text/javascript' language='javascript' src='" + urlDART + "'></scr"+"ipt>");
        }    
    }
}

function getDARTImageTag(position)
{
    var urlDART = getDARTag(position);   
    var tagImg = urlDART.replace('/adj/','/ad/');
    var tagURL = urlDART.replace('/adj/','/jump/');
    var strImageAd = "<div><a href=\"" + tagURL + "\"><img src=\"" + tagImg + "\" alt=\"\"></a></div>";
    // alert(strImageAd);
    return strImageAd;
}

function getDARTag(position)
{
    var url = document.location.pathname;
    var site = "";
    var baseSite = "root";    
    var s1 = "";
    var s2 = "";
    var pos = "";
    var size = "";
    var iHt = 0;
    var iWd = 0;
    var bDetail = false;
    var bSubSpecial = false;
    
    // 4-18-08 fix problems with apostrophes    
    url = url.replace("'","");
    
    // 4-18-08 fix problems with quotes
    url = url.replace("\"","");
      
    url = url.toLowerCase();
    position = position.toLowerCase();
    
    //
    // HACK: for news-views we send real url
    //
    try
    {
        // HACK HACK: no REAL URL for photo
        if(strRealURL!=null)
        {   
            if(strRealURL.length>0)
            {  
                url = strRealURL;
            }
        }    
    }
    catch(err)
    {
        // do nothing - fail silently
    }
            
    switch(position)
    {
        case "banner_top" : 
            size = "728x90";
            pos = "top";
            iWd = 728; iHt = 90;
            break;
        case "banner_bottom" : 
            size = "728x90";
            pos = "bottom";
            iWd = 728; iHt = 90;
            break;
        case "mid_banner" : 
            size = "728x90";
            pos = "ingrid";
            iWd = 728; iHt = 90;
            break;
        case "box_300x250" : 
            size = "300x250";
            pos = "right";
            iWd = 300; iHt = 250;
            break;
        case "inline":
            size = "300x250";
            pos = "right";
            iWd = 300; iHt = 250;
            break;
        case "header_320x55":
            size = "320x55";
            pos = "head";
            iWd = 320; iHt = 55;
            break;
        case "photo_gallery":
            size = "300x250";
            pos = "photo_gallery";
            iWd = 300; iHt = 250;
            break;
        case "promo_320x95":
            size = "320x95";
            pos = "right1";
            iWd = 320; iHt = 95;
            break;
      //  case "richmedia":
      //      size = "1x1";
      //      pos = "richmedia";
      //      iWd = 1; iHt = 1;
      //      break;
        case "listings_right":
            size = "160x600";
            pos = "listings_right";
            iWd = 160; iHt = 600;
            break;
        case "listingstop":
            size = "220x50";
            pos = "listingstop";
            iWd = 220; iHt = 50;
            break;
        case "wallpaper":
            size = "2x2";
            pos = "wallpaper";
            iWd = 2; iHt = 2;
            break;
        case "hpvideo":
            size = "160x30";
            pos = "hpvideo";
            iWd = 160; iHt = 30;
            break;
        case "hphotlist":
            size = "160x30";
            pos = "hphotlist";
            iWd = 160; iHt = 30;
            break;
        case "hpbreaking":
            size = "160x30";
            pos = "hpbreaking";
            iWd = 160; iHt = 30;
            break;
        case "ovghead":
            size = "295x35";
            pos = "ovghead";
            iWd = 295; iHt = 35;
            break;
        case "halfpage":
            size = "300x600";
            pos = "halfpage";
            iWd = 300; iHt = 600;
            break;
        case "wallpaperhead":
            // Non-IE Browsers get the wallpaper at the top of the page
            if(navigator.userAgent.toLowerCase().indexOf("msie")>=0) { return ""; }
            size = "2x2";
            pos = "wallpaper";
            iWd = 2; iHt = 2;
            break;
        case "wallpaperfoot":
            // IE gets the wallpaper at the bottom of the page
            if(!(navigator.userAgent.toLowerCase().indexOf("msie")>=0)) { return ""; }
            size = "2x2";
            pos = "wallpaper";
            iWd = 2; iHt = 2;
            break;
        case "textlink":
            size = "5x5";
            pos = "textlink";
            iWd = 5; iHt = 5;
            break;            
        case "objlistings":
            size = "160x30";
            pos = "objlistings";
            iWd = 160; iHt = 30;
            break;
        case "quiz":
            size = "160x30";
            pos = "quiz";
            iWd = 160; iHt = 30;
            break;
        case "ovgfly":
            size = "162x33";
            pos = "ovgfly";
            iWd = 162; iHt = 33;
            break;
        case "hptonights":
            size = "160x30";
            pos = "hptonights";
            iWd = 160; iHt = 30;
            break;
        case "hplastnights":
            size = "160x30";
            pos = "hplastnights";
            iWd = 160; iHt = 30;
            break;
        case "onebyone":
            size = "1x1";
            pos = "onebyone";
            iWd = 1; iHt = 1;
            break;
            
            
        default:
            return "";
    }

    // only show ads when the website is on port 80        
    if(!((document.location.port=="80")||(document.location.port=="")))
    {        
        if((iWd>2)&&(iHt>2))
        {
            if(pos!="ingrid")
            {
                return "<table align='center' style='height:"+iHt+"px;width:"+iWd+"px;background-color:#AAAAAA;'><td style='text-align:center;vertical-align:middle;font-size:12px;font-family:Arial,Helvetica,Sans;'>AD "+iWd+"x"+iHt+"<br>pos="+pos+"</td></table>";
            }
            else
            {
                return "http://www.tvguide.com/images/space.gif";
            }
        }
        else
        {
            return "";
        }
    }

    
    //
    // check for LiveWorld pages
    //    
    if(strHostname.indexOf("community")>=0)
    {
        try
        {
            //
            // build a community "URL" like this: /C800001/F700005/
            //
            if (strCatID.length > 0)
            {
                // prefix the Category ID with a "C"
                url = "/community/C" + strCatID;
            }
            if (strForumID > 0)
            {
                // prefix the Forum ID with an "F"
                url += "/F" + strForumID;
            }
        }
        catch(err)
        {
            // do nothing - allow to continue
        }
    }
    else
    {
        // detail pages fix
        try 
        {
            if(parseInt(iTvObjectID,10)>0) 
            {
                switch(strTvObjectType)
                {
                    case "tvshow":
                        url = "/detail/tvshow/id_" + iTvObjectID;
                        s1 = "tvshow"; s2 = iTvObjectID;
                        bDetail = true;
                        break;
                    case "celebrity":
                        url = "/detail/celebrity/id_" + iTvObjectID;
                        s1 = "celebrity"; s2 = iTvObjectID;
                        bDetail = true;
                        break;
                    case "movie":
                        url = "/detail/movie/id_" + iTvObjectID;
                        s1 = "movie"; s2 = iTvObjectID;
                        bDetail = true;
                        break;
                }
                
            }
        }
        catch(err)
        {
        }
    }

    // process page URLs
    url = url.replace("home.aspx", "");
    url = url.replace("default.aspx", "");
    url = url.replace(".aspx", "");

    // remove trailing slash...
    url = url.replace(/\/$/,"");
    
    // process the URL param - convert slashes to underscores and remove first slash    
    var urlparam = url.replace( /\//g,"_");
    urlparam = urlparam.replace(/^_/g,'');
    
    // remove hyphens from url
    url = url.replace(/-/g, "");

    // split url into components
    var secs = url.split('/');
        
    switch(strHostname)
    {
        case "video.tvguide.com" :
        case "video-qa.tvguide.com" :
        case "video-stg.tvguide.com" :
        case "bbp-pilot.tvguide.com" :
        case "rad1onlsps1.tvguide.com" :
            baseSite = "bbportal";
            break;
    }

    // build site, s1, s2 params
    // ignore if detail page
    switch(secs.length)
    {
        case 0:
            site = baseSite;
            break;
        case 1:
            site = baseSite;
            break;
       case 2:
            site = secs[1];
            if ( site == "keywords" || site == "authors" || site == "episoderecaps" || site == "news" || site == "sports" || site == "americanidol" || site == "dancingstars" || site == "asks" || site == "celebrityblogs" || site == "cheersjeers" || site == "roush" || site == "biz" )
            {
                site = "newsviews";
                s1 = secs[1];
                bSubSpecial = true;
                break;
            }
            if ( site == "toptvshows" )
            {
                site = "top/tv";
                bSubSpecial = true;
                break;
            }
            if ( site.indexOf("soap")>=0 )
            {
                site = "soaps";
                break;
            }
            if ( site == "moviesdvd" )
            {
                site = "dvds/movie";
                bSubSpecial = true;
                break;
            }
            if ( site == "moviestv" )
            {
                site = "movies/tv";
                bSubSpecial = true;
                break;
            }
            if ( site == "movienews" )
            {
                site = "movies/news";
                bSubSpecial = true;
                break;
            }  
            if ( site == "dvdnews" )
            {
                site = "newsviews/dvd";
                bSubSpecial = true;
                break;
            }                                    
            if ( site == "moviestrailers" )
            {
                site = "movies/trailers";
                bSubSpecial = true;
                break;
            }              
            break;
        case 3:
            site = secs[1];
            if ( site == "keywords" || site == "authors" || site == "episoderecaps" || site == "news" || site == "sports" || site == "americanidol" || site == "dancingstars" || site == "asks" || site == "celebrityblogs" || site == "cheersjeers" || site == "roush" || site == "biz" )
            {
                site = "newsviews";
                s1 = secs[1];
                s2 = secs[2];
                bSubSpecial = true;
                break;
            }
            if ( site == "newsviews" && secs[2]== "dvdsales")
            {
                site = "dvds";
                s1 = "tv";
                s2 = secs[2];
                bSubSpecial = true;
                break;
            }
            
            if ( site.indexOf("soap")>=0 )
            {
                site = "soaps";
                s1 = "updates";
                s2 = secs[2];
                bSubSpecial = true;
                break;
            }
            if ( site == "dvdnews" )
            {
                site = "news";
                s1 = "dvd";
                s2 = secs[2];
                bSubSpecial = true;
                break;
            }            
            if ( site == "movienews" )
            {
                site = "movies";
                s1 = "news";
                s2 = secs[2];
                bSubSpecial = true;
                break;
            }            
            if ( site == "moviestrailers" )
            {
                site = "movies";
                s1 = "trailers";
                s2 = secs[2];
                bSubSpecial = true;
                break;
            }                        
            if(!bDetail)
            { 
                s1 = secs[2]; 
            }
            break;
        case 4:
            site = secs[1];
            if(!bDetail)
            {
                s1 = secs[2];
                s2 = secs[3];
            }                
            break;
        case 5:
            site = secs[1];
            if(!bDetail)            
            {
                s1 = secs[3];
                s2 = secs[4];
            }                
            break;
    } 

    var strAdPath=site;
    if (s1.length > 0) { strAdPath += "/" + s1; }
    if ( bSubSpecial != true )
    {
        if (s2.length > 0) { strAdPath += "/" + s2; }
    }
    
    if(bDetail)
    { strAdPath += "/id_" + iTvObjectID; }
    
    // alert(strAdPath + " s1=" + s1 + " s2=" + s2);
    // alert("iTvObjectID=" + iTvObjectID);

    var strAd = "http://ad.doubleclick.net/adj/tvg.";    
    var locOrd = dartOrd;
    
    if(pos=="ingrid")
    {
        strAd = "http://ad.doubleclick.net/adi/tvg.";
        locOrd += dartTile;
    }
    
    strAd += strAdPath+";s1="+s1+";s2="+s2+";url="+urlparam+";tvg=ad;pos="+pos+";tile="+dartTile+";";
    
    if(position=="banner_top")
    {
        strAd+="dcopt=ist;"
    }
    else
    {
        strAd+="dcopt=;"    
    }
  
    strAd += getKeywords();
    
    strAd += "promo=;"+strRsiSegments+"sz="+size+";ord="+locOrd+"?";
    
    dartTile++;
    
    return strAd;
}

function readAdCookie(strName)
{
	var name = strName + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
	}
	return null;
}

function getKeywords()
{
    var strkys = "";
    try 
    { 
        if(strTvObjectName.length>0) 
        {
            var tobj = strTvObjectName.replace("'","");   
            tobj = escape(tobj).replace(/%20/g,"+");
            strkys+="kw="+tobj+";"; 
        } 
    }
    catch(err){}
    try { if(strTvObjectType.length>0) { strkys+="kw="+escape(strTvObjectType)+";"; } }
    catch(err){}    
    try { if(strSearchKey .length>0) { strkys+="kw="+escape(strSearchKey )+";"; } }
    catch(err){} 
    
    try
    {
        switch(optionGenreFilter)
        {
            case 2:
                // movies
                strkys += "filter=movies;";
                break;
            case 3:
                // sports
                strkys += "filter=sports;";
                break;
            case 4:
                // family
                strkys += "filter=family;";
                break;
            case 5:
                // ppv
                strkys += "filter=ppv;";
                break;
            case 6:
                // ppv
                strkys += "filter=news;";
                break;
        }
    }
    catch(err)
    {
    }
    
    try
    {
        if(bHDTVOnlyFilter)
        {
            strkys += "filter=hd;";
        }
    }
    catch(err)
    {
    }
    
    try
    {
        var strProvider = strServiceProvider.toLowerCase();            
        if((strProvider.indexOf("directv")>=0)||(strProvider.indexOf("dish")>=0))
        {
                strkys += "service=satellite;";
        }
        else if(strProvider.indexOf("national listings")>=0)
        {
                strkys += "service=national;";    
        }
        else
        {
            strkys += "service=cable;";    
        }
    }
    catch(err)
    {
    }
 
    try
    {    
        if(strHostname.indexOf("qa")>=0)
        {
            strkys += "srvr=qa;";    
        }
    }
    catch(err)
    {
    }

    var provider = readAdCookie("Provider");
    if (provider != null) 
    {
        strkys += "provider="+provider+";";            
    }

    return strkys;
}

function getNewRsiStringForDART() 
{
    var DMSegCookie = readAdCookie("rsi_segs");

    if (DMSegCookie == null) {
        return "";
    }

    var segs = DMSegCookie.split('|');

    var sbRSI = "";
    for (var i = 0; i < segs.length; i++) {
        var seg = segs[i].split('_');
        if (seg.length == 2) {
            sbRSI += "segs=" + seg[1] + ";";
        }
    }
    return sbRSI;
}


function getRsiStringForDART()
{
    // try the new code first
    var sbRSI = getNewRsiStringForDART();
    
    if (sbRSI.length>0)
    {    
        // alert("DART string: " + sbRSI);
        return sbRSI;
    }
    
    sbRSI = "";
    
    //
    // Special Processing for RSI tags. The cookie format is as follows....
    // DMSEG=<UniqeID>&<CustomerID>&<InternalUSE>&<NumberOfSegmetns>&<SegID1,SegID2,SegID3>
    //			
    var DMSegCookie = readAdCookie("DMSEG");

    if (DMSegCookie==null)
    {
        return "";
    }

    var DMSegCnt = 0;
    var DMSegArray = DMSegCookie.split('&');
   
    if (DMSegArray.length >= 5)
    {
        try
        {
            DMSegCnt = parseInt(DMSegArray[4],10);
        }
        catch(err)
        {
            return "";
        }

        if (DMSegCnt > 0)
        {
            var DMSegIDs = DMSegArray[5].split(',');

            if (DMSegIDs.length > 0)
            {
                for (var dm=0; dm<DMSegIDs.length; dm++)
                {
                    sbRSI += "segs=" + DMSegIDs[dm] + ";";
                }
            }
        }
    }

    return sbRSI;
}

//
// get hostname oncce per page
//
var strHostname = document.location.hostname;
strHostname = strHostname.toLowerCase();

if(strHostname!=null)
{
    strHostname = strHostname.toLowerCase();
    if(strHostname.indexOf("akamai-origin")>=0)
    {
        strHostname = "www.tvguide.com";
    }
}

//
// get RSI tags once and re-use for each call
//
var strRsiSegments = getRsiStringForDART();

//
// get keywords string once and re-use for all calls
//
var strTvgAdKeywords = getKeywords();

// ** END-OF-FILE **
