﻿
//
// Global Page-Scope Ad Variables
//
var dartTile = 1;
var tvgtoday = new Date();
var dartOrd = tvgtoday.getTime();

var adsIsIE = (navigator.userAgent.toLowerCase().indexOf("msie")>=0);
var adsIsSafari = (navigator.userAgent.toLowerCase().indexOf("safari")>=0);
var adsIsChrome = (navigator.userAgent.toLowerCase().indexOf("chrome")>=0);


function getGoogleAdTag(gaWd,gaHt)
{
	if(!bypassAds()) { document.write("<scr" + "ipt language='javascript' src='http:\/\/pagead2.googlesyndication.com/pagead/show_ads.js'>" + "<\/scr" + "ipt>"); }
	else { document.write("<table align='center' style='width:"+gaWd+"px;height:"+gaHt+"px;display:block;background-color:#AAAAAA;'><tr><td style='text-align:center;vertical-align:middle;'><center>Google Ads<br>"+gaWd+"x"+gaHt+"<\/center><\/td><\/tr><\/table>"); }
}

function getFullDARTad(position)
{
    var urlDART=getDARTag(position);    
    
    if(bypassAds())
    {
        document.write(urlDART);
    }
    else
    {    
        if(urlDART.length>0)
        {
            document.write("<scr"+"ipt type='text/javascript' language='javascript' src='" + urlDART + "'></scr"+"ipt>");
            if( (position=="wallpaperhead") && ((adsIsSafari)||(adsIsChrome)) )
            { 
				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>";
    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;
    
    // 10-12-09 - add sports.tvguide.com
	if(strHostname.indexOf('sports')>=0)
	{ baseSite = "sports"; }
    
    // 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 "sky_160x600":
            size = "160x600";
            pos = "right";
            iWd = 160; iHt = 600;
            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 "hpspotlight":
            size = "160x30";
            pos = "hpspotlight";
            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(adsIsIE) { return ""; }
            size = "2x2";
            pos = "wallpaper";
            iWd = 2; iHt = 2;
            break;
        case "wallpaperfoot":
            // IE gets the wallpaper at the bottom of the page
            if(!(adsIsIE)) { 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 "hpbna":
            size = "160x30";
            pos = "hpbna";
            iWd = 160; iHt = 30;
            break;
       case "hpfeatureddvd":
            size = "160x30";
            pos = "hpfeatureddvd";
            iWd = 160; iHt = 30;
            break;
        case "onebyone":
            size = "1x1";
            pos = "onebyone";
            iWd = 1; iHt = 1;
            break;
        case "tvglogo":
            size = "88x63";
            pos = "tvglogo";
            iWd = 88; iHt = 63;
            break;
        case "prestitial":
            size = "800x500";
            pos = "prestitial";
            iWd = 800; iHt = 500;
            break;
        case "closeup":
            size = "468x60";
            pos = "closeup";
            iWd = 468; iHt = 60;
            break;
        case "sponsorbar":
            size = "160x30";
            pos = "sponsorbar";
            iWd = 160; iHt = 30;
            break;       
        default:
            return "";
    }

    if(bypassAds())
    {        
        if((iWd>2)&&(iHt>2))
        {
            if(pos!="ingrid")
            {
                return "<table align='center' style='height:"+iHt+"px;width:"+iWd+"px;background-color:#AAAAAA;'><tr><td style='text-align:center;vertical-align:middle;font-size:11px;font-family:Arial,Helvetica,Sans;'>AD "+iWd+"x"+iHt+"<br>pos="+pos+"</td></tr></table>";
            }
            else
            {
                return "http://www.tvguide.com/images/space.gif";
            }
        }
        else
        {
            return "";
        }
    }

    
    // 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/i, "");
    url = url.replace(/default\.aspx/i, "");
    url = url.replace(/betagrid\.aspx/i, "");
    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=="fashion")
            {
                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 =="fashion")
            {
                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;
    
    // handle IFramed ad positions
    if((pos=="ingrid")||(pos=="closeup"))
    {
        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 bypassAds()
{	
	// look for nads query
	ac = ad_getQueryParam("nads");
	if(ac.length>0)
	{
		if(ac=="no"){ad_writeCookie("nads","",-1);return false;}
		else{ad_writeCookie("nads","8086",0);return true;}
	}

	// don't show ads if we have the nads cookie
	var ac = ad_readCookie("nads");
	if(ac!=null){if(ac.length>0){return true;}}	

	// show ads on port 80 or "no port" which is port 80
    if((document.location.port=="80")||(document.location.port==""))
    { return false; }

	return true;
}

function ad_writeCookie(strName, strValue, iDays)
{
	var strCookie = strName + "=" + strValue + "; ";
	if(iDays!=0)
	{
	    var date = new Date();
	    date.setTime(date.getTime()+(iDays*24*60*60*1000));
		strCookie += "expires=" + date.toGMTString() + "; ";
	}
    var dom = document.domain;
    var tvg = ".tvguide.com";
    
    if (dom.match(/tvguide.com$/i))
	{
        strCookie += "domain=" + tvg + "; ";
    }
	strCookie += "path=/";
	document.cookie = strCookie;
}

function ad_readCookie(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 ad_getQueryParam(strName)
{
    var u,i;
    u = document.location.search + "";
    i = u.indexOf(strName+"=",0);
    if(i>=0)
    {
        i += strName.length+1;
        var n = u.indexOf('&',i);
        if(n>i)
        {
            return unescape(u.substring(i,n));
        }
        else if(i<u.length)
        {
            return unescape(u.substring(i));
        }
    }
    return "";
}

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){} 
    
	if(typeof(optionGenreFilter) != "undefined")
	{     
        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;
        }
	}
    
	if(typeof(bHDTVOnlyFilter) != "undefined")
	{     
        if(bHDTVOnlyFilter)
        {
            strkys += "filter=hd;";
        }
    }
    
    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 = ad_readCookie("Provider");
    if (provider != null) 
    {
        strkys += "provider="+provider+";";            
    }

    return strkys;
}

function getNewRsiStringForDART() 
{
    var DMSegCookie = ad_readCookie("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 = ad_readCookie("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 **
