From: <Saved by Microsoft Internet Explorer 5>
Subject: washingtonpost.com: UN: Nordic Nations Lead Digital Technology Access
Date: Fri, 21 Nov 2003 20:35:52 +0100
MIME-Version: 1.0
Content-Type: multipart/related;
	boundary="----=_NextPart_000_003B_01C3B06F.0E1D1030";
	type="multipart/alternative"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106

This is a multi-part message in MIME format.

------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/wpni.technologyarticle/apdcopt=ist;dir=apnode;dir=technology;dir=ap;page=article;kw=;pos=ad27;sz=160x600;tile=27;abr=!ie;ord=1069443364209?

R0lGODlhAQABAIABAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAICTAEAOw==

------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://stats.surfaid.ihost.com/crc/images/uc.GIF?1.13&wpost&wpost&noscript

R0lGODlhAQABAIAAAAAAAAAAACwAAAAAAQABAAACAkQBADs=

------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: http://www.washingtonpost.com/wp-srv/javascript/isHomePage.js

function isHomePage()
{
  var path = location.pathname ;
  var href = location.href ;
  if ( path == '' )
    return true ;
  else if ( path == '/' )
    return true ;
  else if ( path == '/wp-srv/front.htm' )
    return true ;
  else if ( href == 'http://www.washingtonpost.com' )
    return true ;
  else if ( href == 'http://www.washingtonpost.com/' )
    return true ;
  else if ( href == 'http://www.washingtonpost.com/wp-srv/front.htm' )
    return true ;
  else
    return false ;
}

------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.washingtonpost.com/wp-srv/javascript/resetCookies.js

function resetCookies()
{

  // threshhold value ( 1 is always, 0 is never )
  var THRESHHOLD =3D 1.000 ;
  var DOMAIN     =3D getDomain() ;

  // cookie object
  function MyCookie(name,enabled,version_parameter,version,threshhold)
  {
    this.name =3D name ;
    this.enabled =3D enabled ;
    this.version_parameter =3D version_parameter ;
    this.version =3D version ;
    this.threshhold =3D threshhold ;
  }

  function setCookie(name, value, expires, path, domain, secure)
  {
    document.cookie =3D name + "=3D" + escape(value) +
      ((expires) ? " ; expires=3D" + expires : "") +
      ((path) ? " ; path=3D" + path : "") +
      ((domain) ? " ; domain=3D" + domain : "") +
      ((secure) ? " ; secure" : "") ;
  }

  function manyYearsAgo()
  {
    var nowDate =3D new Date();
    // change number for # of years
    nowDate.setYear(nowDate.getFullYear() - 3);
    return ( nowDate.toGMTString() );
  }

  function getCookie(name)
  {
    var cookie =3D " " + unescape(document.cookie) ;
    var search =3D " " + name + "=3D" ;
    var setStr =3D null ;
    var offset =3D 0 ;
    var end =3D 0 ;

    if (cookie.length > 0)
    {
      offset =3D cookie.indexOf(search) ;
      if (offset !=3D -1)
      {
        offset +=3D search.length ;
        end =3D cookie.indexOf(";", offset)

        if (end =3D=3D -1)
          end =3D cookie.length ;

        setStr =3D cookie.substring(offset, end) ;
      }
    }
    return(setStr) ;
  }

  function arePersistentCookiesOn()
  {
    setCookie("test","on","","/",DOMAIN) ;
    var value =3D getCookie("test") ;
 =20
    if ( getCookie("test") =3D=3D "on" )
    {
      return true ;
      setCookie("test","on",manyYearsAgo(),"/",DOMAIN) ;
    }
    else
      return false ;
  }
 =20
  function isWebLogicUp()
  {
    return weblogic_up ;
  }
 =20
  function isThreshholdMet(threshhold)
  {
    var random =3D Math.random() ;
    var proceed =3D ( random <=3D threshhold ) ;
    if ( random =3D=3D 0 )
      proceed =3D false
 =20
    return proceed ;
  }
 =20
  function hasAValue(user)
  {
    if ( user =3D=3D null || user =3D=3D "" || user =3D=3D "null" )
      return false ;
    else
      return true ;
  }
 =20
  function isACookieableUser()
  {
    var user_type   =3D "" ;
 =20
    var explicit =3D getCookie("wpniuser") ;
    var implicit =3D getCookie("WPNIUCID") ;
 =20
    if ( hasAValue(explicit) )
    {
      //var logout =3D getCookie("logout") ;
      //if ( hasAValue(logout) && logout =3D=3D "false" )
      //{
        user_type =3D "explicit" ;
        user_cookie =3D "wpniuser" ;
        user_value =3D explicit ;
      //}
    }
    if ( !user_type && hasAValue(implicit) )
    {
      user_type =3D "implicit" ;
      user_cookie =3D "WPNIUCID" ;
      user_value =3D implicit ;
    }
 =20
    if ( user_type )
      return true ;
    else
      return false ;
 =20
  }
 =20
  function callServletIfNecessary()
  {
    function =
hasInsufficientVersion(value,version_parameter,required_version)
    {

      function getVersioning(value,version_parameter)
      {
        var re1 =3D new =
RegExp("(:|^)("+version_parameter+"=3D([^:]+))","g") ;
 =20
        if ( value.match(re1) )
          return RegExp.$2 ;
        else
          return false ;
      } // end function getVersioning
 =20
      function getVersion(value,version_parameter)
      {
        var re1 =3D new =
RegExp("(:|^)("+version_parameter+"=3D([^:]+))","g") ;
 =20
        if ( value.match(re1) )
          return RegExp.$3 ;
        else
          return "" ;
      } // end function getVersion

      =
/************************************************************************=
**/
      /* BEGIN MAIN PART OF hasInsufficientVersion()                     =
       */
      =
/************************************************************************=
**/

      var insufficient =3D false ;
      var versioning =3D getVersioning(value,version_parameter) ;
 =20
      if ( versioning )
      {
        var version =3D getVersion(value,version_parameter) ;
        if ( version =3D=3D required_version)
          insufficient =3D false ;
        else if ( isNaN(version) || isNaN(required_version) )
          insufficient =3D true ;
        else if ( version < required_version )
          insufficient =3D true ;
      }
      else
        insufficient =3D true ;

      return insufficient ;=20

    } // end function hasInsufficientVersion()
 =20
    =
/************************************************************************=
**/
    /* BEGIN MAIN PART OF callServletIfNecessary()                       =
     */
    =
/************************************************************************=
**/

    for( var i=3D0; i<cookies_reset_ary.length ; i++ )
    {
      var callServlet =3D false ;

      var biscuit =3D cookies_reset_ary[i] ;
      var name =3D biscuit.name ;
      var enabled =3D biscuit.enabled ;
      var version_parameter =3D biscuit.version_parameter ;
      var required_version =3D biscuit.version ;
      var threshhold =3D biscuit.threshhold ;
      var value =3D getCookie(name) ;
 =20
      if ( enabled && isThreshholdMet(threshhold) )
      {
        // if no cookie, set the new one
        if (! hasAValue(value) )
          callServlet =3D true ;
        // if cookie, but wrong version, set the new one
        else if ( =
hasInsufficientVersion(value,version_parameter,required_version) )
          callServlet =3D true ;
      }

      if ( callServlet )
      {
        var servletUrl =3D =
"http://washingtonpost.com/ac2/wp-dyn/CookieDeliveryServlet" ;
        var query =3D "?" ;
        query +=3D 'cookie=3D'+name ;
        query +=3D '&' ;
        query +=3D user_cookie+'=3D'+user_value ;
        query +=3D '&' ;
        query +=3D 'type=3Djs' ;
=20
        //document.write('&lt;s\cript =
src=3D"'+servletUrl+query+'"&gt;&lt;/s\cript&gt;') ;
        document.write('<s\cript =
src=3D"'+servletUrl+query+'"></s\cript>') ;
        document.write('<p>') ;
      }
 =20
    } // end for cookies_reset_ary
 =20
  } // end function callServletIfNecessary()

  function getDomain()
  {
    var domain =3D document.domain ;
    var domains =3D new Array(".washingtonpost.com") ;

    for ( var i=3D0; i<domains.length; i++ )
    {
      if ( domain.indexOf(domains[i]) !=3D -1 )
        return domains[i] ;
    }
    return domains[0] ;

  } // end function getDomain

  =
/************************************************************************=
**/
  /* BEGIN MAIN PART OF resetCookies()                                   =
   */
  =
/************************************************************************=
**/

  // cookies to reset
  var cookies_reset_ary =3D new Array(
    new MyCookie( "WPATC",true,"VS",2,1.0 )
  ) ;

  if ( arePersistentCookiesOn() )
  {
    if ( isWebLogicUp() )
    {
      if ( isThreshholdMet(THRESHHOLD) )
      {

        var user_cookie =3D "" ;
        var user_value  =3D "" ;

        // this function also sets the above two values
        if ( isACookieableUser() )
        {
          callServletIfNecessary() ;
        } // end if isACookieableUser()
      } // end if isThreshholdMet()
    } // end if weblogic_up
  } // end if arePersistentCookiesOn()

} // end function resetCookies()
------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: multipart/alternative;
	boundary="----=_NextPart_001_0044_01C3B06F.0E1E96D0"


------=_NextPart_001_0044_01C3B06F.0E1E96D0
Content-Type: text/html;
	charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.washingtonpost.com/ac2/wp-dyn/A61736-2003Nov19?language=printer

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>washingtonpost.com: UN: Nordic Nations Lead Digital =
Technology Access</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dwindows-1252">
<SCRIPT language=3DJavaScript>=0A=
<!--=0A=
var axel =3D Math.random() + "";=0A=
var ord =3D axel * 1000000000000000000;=0A=
//-->=0A=
</SCRIPT>

<SCRIPT>var thisNode =3D 'technology/ap' ;</SCRIPT>

<SCRIPT language=3DJavaScript>var SA_Message=3D"SACategory=3D" + =
thisNode;</SCRIPT>

<SCRIPT=20
src=3D"http://media.washingtonpost.com/wp-srv/ad/ad_configurations.js"></=
SCRIPT>

<SCRIPT language=3DJavaScript=20
src=3D"http://media.washingtonpost.com/wp-srv/popjs/popupCampaignClasses.=
js"></SCRIPT>

<SCRIPT =
src=3D"http://media.washingtonpost.com/wp-srv/ad/ad.js"></SCRIPT>

<SCRIPT>var adTemplate =3D templateConfigs[PRINTER_FRIENDLY];</SCRIPT>

<META content=3D"MSHTML 6.00.2800.1264" name=3DGENERATOR></HEAD>
<BODY>
<SCRIPT language=3Djavascript>=0A=
<!--=0A=
if ((adTemplate & TOWER_LEFT_160) =3D=3D TOWER_LEFT_160) {=0A=
document.write('<table width=3D"165" cellpadding=3D"0" cellspacing=3D"0" =
border=3D"0" align=3D"right"><tr><td width=3D"5" rowspan=3D"2"><spacer =
type=3D"block" width=3D"5"></td><td width=3D"160" valign=3D"top" =
align=3D"center"><img =
src=3D"http://media.washingtonpost.com/wp-adv/images/adTAG.gif" =
border=3D"0" width=3D"89" height=3D"14"></td></tr><tr><td width=3D"160" =
valign=3D"top" align=3D"center">');=0A=
}=0A=
//-->=0A=
</SCRIPT>
<!--#config timefmt=3D"%Y%m%d%H%M%S"-->
<SCRIPT language=3Djavascript=20
src=3D"http://media.washingtonpost.com/wp-srv/ad/call_tile.js"></SCRIPT>

<SCRIPT language=3Djavascript=20
src=3D"http://media.washingtonpost.com/wp-srv/ad/show_doubleclick_ad.js">=
</SCRIPT>

<SCRIPT language=3DJavaScript>=0A=
<!--=0A=
var debugAdCodeJsp =3D false ;=0A=
if ( document.URL.indexOf("debugAdCodeJsp")+1 ) debugAdCodeJsp =3D true ;=0A=
else if ( document.URL.indexOf("debugAdCodeStatic")+1 ) debugAdCodeJsp =
=3D false ;=0A=
else if ( document.URL.indexOf("debugAdCode")+1 ) debugAdCodeJsp =3D =
true ;=0A=
=0A=
function debugTextArea(ac)=0A=
{=0A=
  return '<form><textarea wrap=3Dphysical cols=3D55 =
rows=3D10>'+ac+'</textarea></form>';=0A=
}=0A=
=0A=
if (document.cookie.indexOf("WPATC") !=3D -1)=0A=
{=0A=
  var start =3D (document.cookie.indexOf("WPATC") + 6);=0A=
  var end =3D (document.cookie.indexOf(";",start)) =3D=3D -1 ? =
document.cookie.length : document.cookie.indexOf(";",start);=0A=
  var cookie =3D document.cookie.substring(start,end) + ";";=0A=
  while (cookie.indexOf(":") !=3D -1)=0A=
    cookie =3D =
cookie.substring(0,cookie.indexOf(":"))+";"+cookie.substring(cookie.index=
Of(":")+1,cookie.length);=0A=
  if (cookie.lastIndexOf(";") !=3D cookie.length - 1) cookie +=3D ';';=0A=
  if (cookie.indexOf("=3D") =3D=3D 0) cookie =3D =
cookie.substring(cookie.indexOf(";")+1,cookie.length);=0A=
}=0A=
else var cookie =3D "";=0A=
=0A=
=0A=
=0A=
var interstitial =3D 'dcopt=3Dist;'=0A=
if ( ( typeof interstitialIsAllowed !=3D 'undefined' ) &&=0A=
     ( !interstitialIsAllowed ) )=0A=
{=0A=
  interstitial =3D '';=0A=
}=0A=
=0A=
=0A=
=0A=
//--> </SCRIPT>

<SCRIPT language=3Djavascript><!--=0A=
if ((adTemplate & TOWER_LEFT_160) =3D=3D TOWER_LEFT_160)=0A=
{=0A=
=0A=
if (show_doubleclick_ad)=0A=
{=0A=
  var adString =3D =
'wpni.technologyarticle/ap;'+interstitial+'dir=3Dapnode;dir=3Dtechnology;=
dir=3Dap;page=3Darticle;'+cookie+';kw=3D;pos=3Dad27;sz=3D160x600;'+tile+'=
=3D27;ord=3D'+ord+'?';=0A=
=0A=
  var adTag =3D '<S\CRIPT LANGUAGE=3D"JavaScript1.1" =
SRC=3D"http://ad.doubleclick.net/adj/'+adString+'"></S\CRIPT>';=0A=
  interstitial =3D '';=0A=
  if (debugAdCodeJsp) { adTag +=3D debugTextArea(adTag); }=0A=
=0A=
  document.write(adTag);=0A=
} // end show_doubleclick_ad=0A=
}=0A=
=0A=
//--></SCRIPT>
<NOSCRIPT><A=20
href=3D"http://ad.doubleclick.net/jump/wpni.technologyarticle/apdcopt=3Di=
st;dir=3Dapnode;dir=3Dtechnology;dir=3Dap;page=3Darticle;kw=3D;pos=3Dad27=
;sz=3D160x600;tile=3D27;abr=3D!ie;ord=3D1069443364209?"><IMG=20
height=3D600=20
src=3D"http://ad.doubleclick.net/ad/wpni.technologyarticle/apdcopt=3Dist;=
dir=3Dapnode;dir=3Dtechnology;dir=3Dap;page=3Darticle;kw=3D;pos=3Dad27;sz=
=3D160x600;tile=3D27;abr=3D!ie;ord=3D1069443364209?"=20
width=3D160 border=3D0></A> </NOSCRIPT>
<SCRIPT language=3Djavascript>=0A=
<!--=0A=
if ((adTemplate & TOWER_LEFT_160) =3D=3D TOWER_LEFT_160)=0A=
{=0A=
document.write('</td></tr></table>');=0A=
}=0A=
//-->=0A=
</SCRIPT>
<FONT face=3Dhelvetica,arial color=3D#000000 =
size=3D-1><B>washingtonpost.com</B>=20
</FONT>
<P><FONT size=3D+2><B>UN: Nordic Nations Lead Digital Technology =
Access</B></FONT>=20
<BR>
<P><FONT size=3D-1><BR>Reuters<BR>Wednesday, November 19, 2003; 11:48 AM =
</FONT>
<P><NITF>
<P></P>
<P>By Robert Evans</P>
<P>GENEVA (Reuters) - Nordic countries lead the world in access to =
digital=20
information and communication technology but four Asian "tiger" =
economies are=20
catching up fast, the United Nations telecommunications agency said on=20
Wednesday.</P>
<P>In a new report, the Geneva-based body said Sweden and Denmark led =
the field,=20
closely followed by Iceland, South Korea and Norway, while Iceland and =
Sweden=20
had the world's highest rates of Internet connection.</P>
<P>Studies by experts at the International Telecommunications Union =
(ITU) showed=20
Hong Kong had by far the cheapest Internet access, based on the lowest =
price for=20
20 hours use as a portion of average income.</P>
<P>On a scale based around 1.00, the tariff in Hong Kong was 0.19 while =
in=20
second place United States it was 0.51 and in third place Singapore it =
was 0.64.=20
In Sweden, it was 1.1 and in the Democratic Republic of Congo it reached =
nearly=20
1,000.00.</P>
<P>The studies, covering 178 economies, showed that many once poorer =
states have=20
in recent years invested heavily in digital information and =
communication=20
technology as a driver for development and established a relatively high =
rate of=20
access.</P>
<P>These include ex-communist countries such as Estonia, the United Arab =

Emirates in the Middle East, and island states including the Bahamas and =
the=20
Seychelles. </P>
<P>DIGITAL DIVIDE</P>
<P>The ITU found sub-Saharan African countries had least overall access =
to=20
digital information and communication technology -- which also includes =
mobile=20
phones -- with almost none in Burkina Faso and Niger.</P>
<P>The agency said what it dubs its Digital Access Index (DAI) was the =
first=20
such survey to take into account education levels and affordability as =
well as=20
the existence of infrastructure in determining where countries stood in =
the=20
rankings.</P>
<P>In the past, ITU expert Michael Minges told a news briefing, "limited =

infrastructure has often been regarded as the main barrier to bridging =
the=20
Digital Divide" -- the gap in ICT use between rich and poor =
countries.</P>
<P>But this was no longer the case.</P>
<P>South Korea, Hong Kong, Taiwan and Singapore have scored the greatest =

advances in information technology use and application over the past =
four years,=20
the ITU said.</P>
<P>The four are among 25 nations that the agency lists in the Index as =
having=20
high access -- its top rating with a potential score of 1.00. Sweden, at =
number=20
one, scores 0.85, with Denmark at 0.83 and Iceland and South Korea at =
0.82.</P>
<P>The United States shares 10th position with Canada on 0.78, while New =

Zealand, Italy, France and Slovenia tie for 21st place with 0.72 and =
Israel is=20
25th with 0.70.</P>
<P>Heading the 40-nation second category, defined by ITU as having =
"upper=20
access," is Ireland at 0.69, with Mauritius, Russia, Mexico and Brazil =
equal=20
36th on 0.50 at the bottom of a listing including other European Union =
members=20
Spain, Greece and Portugal as well as Malaysia, Argentina and =
Jamaica.</P>
<P>Medium access states, a total of 58, range from former Soviet Belarus =
through=20
South Africa, Egypt and India down to Armenia at 0.30, while the 55 =
low-access=20
nations are headed by Zimbabwe on 0.29 down to Niger on 0.04. =
</P></NITF>
<P>
<CENTER>=A9 2003 Reuters <!-- Google Links Begin Here -->
<SCRIPT language=3Djavascript><!--=0A=
var googleRan =3D Math.floor(Math.random() * 1000000);=0A=
if ( ((adTemplate & GOOGLE_LINKS) =3D=3D GOOGLE_LINKS)) {=0A=
document.write('<HR SIZE=3D"1" WIDTH=3D"100%"><table width=3D"468" =
border=3D"0" cellpadding=3D"0" cellspacing=3D"0"><tr><td =
width=3D"468"><spacer type=3D"block" width=3D"468" =
height=3D"5"></td></tr></table>');=0A=
google_ad_client =3D 'washingtonpost_416x144';=0A=
google_ad_width =3D 416;=0A=
google_ad_height =3D 144;=0A=
google_ad_format =3D '416x144_new';=0A=
google_safe =3D 'high';=0A=
if (!document.layers) {=0A=
document.write('<img =
src=3D"http://media.washingtonpost.com/wp-srv/google/tracker.gif?'+google=
Ran+'" width=3D"1" height=3D"1" border=3D"0"><br>');=0A=
}=0A=
=0A=
document.write('<s\cript language=3D"JavaScript" =
src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"></s\cript=
>');=0A=
}=0A=
//-->=0A=
</SCRIPT>
</CENTER>
<P></P><!--#config errmsg=3D""-->
<SCRIPT=20
src=3D"http://media.washingtonpost.com/wp-srv/javascript/resize.js"></SCR=
IPT>
<IFRAME style=3D"LEFT: 0px; VISIBILITY: hidden; POSITION: absolute; TOP: =
0px"=20
border=3D0 align=3Dleft marginWidth=3D0 marginHeight=3D0=20
src=3D"http://www.washingtonpost.com/wp-srv/resetcookie/front.htm" =
frameBorder=3D0=20
width=3D1 scrolling=3Dno=20
height=3D1><!--<ilayer width=3D"1" height=3D"1" =
src=3D"http://www.washingtonpost.com/wp-srv/resetcookie/front.htm" =
scrolling=3D"no" visibility=3D"hidden" cellpadding=3D"no" =
cellspacing=3D"0"></ilayer>--></IFRAME>
<SCRIPT language=3DJavaScript1.1=20
src=3D"http://media.washingtonpost.com/wp-srv/javascript/placeSiteMetrix.=
js"></SCRIPT>

<SCRIPT language=3DJavaScript1.1>placeSiteMetrix();</SCRIPT>
<NOSCRIPT><IMG height=3D1 alt=3D""=20
src=3D"http://stats.surfaid.ihost.com/crc/images/uc.GIF?1.13&amp;wpost&am=
p;wpost&amp;noscript"=20
width=3D1 border=3D0></NOSCRIPT> <!--#config errmsg=3D"[an error =
occurred while processing this directive]"--></BODY></HTML>

------=_NextPart_001_0044_01C3B06F.0E1E96D0
Content-Type: text/html;
	charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.washingtonpost.com/wp-srv/resetcookie/front.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dwindows-1252">
<SCRIPT=20
src=3D"http://www.washingtonpost.com/wp-srv/javascript/isHomePage.js"></S=
CRIPT>

<SCRIPT>=0A=
<!--=0A=
var cacheBuster =3D (new Date()).getTime();=0A=
document.write('<s\cript =
src=3D"http://www.washingtonpost.com/wp-srv/javascript/weblogic_up.js?'+c=
acheBuster+'"></s\cript>')=0A=
// -->=0A=
</SCRIPT>

<SCRIPT=20
src=3D"http://www.washingtonpost.com/wp-srv/javascript/resetCookies.js"><=
/SCRIPT>

<SCRIPT>=0A=
<!--=0A=
if (! isHomePage() )=0A=
  resetCookies();=0A=
// -->=0A=
</SCRIPT>

<META content=3D"MSHTML 6.00.2800.1264" name=3DGENERATOR></HEAD>
<BODY></BODY></HTML>

------=_NextPart_001_0044_01C3B06F.0E1E96D0--

------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.washingtonpost.com/wp-srv/ad/ad_configurations.js

var adTemplate =3D 255;=0A=
=0A=
// Define all possible ad positions=0A=
var BANNER_TOP    =3D 1 << 0;=0A=
var BANNER_BOTTOM =3D 1 << 1;=0A=
var TOWER_LEFT    =3D 1 << 2;=0A=
var TOWER_RIGHT   =3D 1 << 3;=0A=
var BIGBOX        =3D 1 << 4;=0A=
var BIGBOX_LEFT =3D 1 << 5;=0A=
var SUPER_BANNER  =3D 1 << 6;=0A=
var SUPER_BANNER_BOTTOM =3D 1 << 7;=0A=
var GOOGLE_LINKS	=3D 1 << 8;=0A=
var HALFPAGE_LEFT =3D 1 << 9;=0A=
var TOWER_LEFT_160 =3D 1 << 10 ;=0A=
var FOURTH_COLUMN_160 =3D 1 << 11 ;=0A=
=0A=
=0A=
// Define all possible ad templates=0A=
var NEWS_TOWER     =3D 0;=0A=
var NEWS_BIGBOX    =3D 1;=0A=
var BIGFIVE_TOWER  =3D 2;=0A=
var BIGFIVE_BIGBOX =3D 3;=0A=
var OBIT           =3D 4;=0A=
var NEWS_SUPER_BANNER =3D 5;=0A=
var BANNER_ONLY =3D 6;=0A=
var BOX_ONLY =3D 7;=0A=
var LIVEONLINE_BIGBOX =3D 8;=0A=
var NEWS_SUPER_BANNER_NOGOOGLE =3D 9;=0A=
var BOX_ONLY_NOGOOGLE =3D 10; =0A=
var HALFPAGE_ONLY =3D 11;=0A=
var TECH          =3D 12;=0A=
var TECH_SUPER_BANNER =3D 13;=0A=
var BANNER_BIGBOX =3D 14;=0A=
var POLITICS_BOX_ONLY =3D 15;=0A=
var BIGFIVE_TOWER_NO  =3D 16;=0A=
var BIGFIVE_BIGBOX_NO =3D 17;=0A=
var ENLARGE_PHOTO =3D 18;=0A=
var PRINTER_FRIENDLY =3D 19;=0A=
var NEWS_TOWER_NO     =3D 20;=0A=
var LIVEONLINE_BIGBOX_NO =3D 21;=0A=
var HALFPAGE_ONLY_NOGOOGLE =3D 22;=0A=
var NEWS_SUPER_BANNER_FOURTH =3D 23;=0A=
var BOX_ONLY_FOURTH =3D 24;=0A=
var DEFAULT_TEMPLATE =3D NEWS_TOWER;=0A=
=0A=
// Allow for IE User to get google links=0A=
document.layers?GOOGLE=3Dnull:GOOGLE=3DGOOGLE_LINKS;=0A=
=0A=
// Makes fourth column equal to true if commercial node is equal to =
technology=0A=
if ((commercialNode.indexOf("technology") !=3D -1) && (!document.layers) =
) {=0A=
GOOGLE =3D FOURTH_COLUMN_160 + GOOGLE_LINKS;=0A=
}=0A=
else if ((commercialNode.indexOf("technology") !=3D -1) && =
(document.layers) ) {=0A=
GOOGLE =3D FOURTH_COLUMN_160;=0A=
}=0A=
=0A=
// Check screen width to see if user is eligible for fourth column =
skyscraper=0A=
(screen.width>=3D860)?FOURTH_COLUMN=3DFOURTH_COLUMN_160:FOURTH_COLUMN=3Dn=
ull;=0A=
=0A=
// Removes google links for individual nodes.  =0A=
//if (thisNode =3D=3D "world/mideast/neareast/turkey") GOOGLE=3Dnull;=0A=
=0A=
// Define contents of ad templates=0A=
var templateConfigs =3D new Array();=0A=
=0A=
templateConfigs[ NEWS_TOWER ]     =3D SUPER_BANNER + TOWER_LEFT_160 + =
GOOGLE;=0A=
templateConfigs[ NEWS_BIGBOX ]    =3D SUPER_BANNER + SUPER_BANNER_BOTTOM =
+ BIGBOX_LEFT + GOOGLE;=0A=
templateConfigs[ BIGFIVE_TOWER ]  =3D SUPER_BANNER + TOWER_LEFT_160 + =
SUPER_BANNER_BOTTOM + GOOGLE;=0A=
templateConfigs[ BIGFIVE_BIGBOX ] =3D SUPER_BANNER + SUPER_BANNER_BOTTOM =
+ BIGBOX_LEFT + GOOGLE;=0A=
templateConfigs[ OBIT ]           =3D 0;=0A=
templateConfigs[ NEWS_SUPER_BANNER ] =3D SUPER_BANNER + TOWER_LEFT_160 + =
SUPER_BANNER_BOTTOM + GOOGLE;=0A=
templateConfigs[ BANNER_ONLY ]   =3D SUPER_BANNER_BOTTOM + GOOGLE;=0A=
templateConfigs[ BOX_ONLY ]   =3D BIGBOX_LEFT + GOOGLE;=0A=
templateConfigs[ LIVEONLINE_BIGBOX ]   =3D SUPER_BANNER + BIGBOX_LEFT + =
GOOGLE;=0A=
templateConfigs[ NEWS_SUPER_BANNER_NOGOOGLE ] =3D SUPER_BANNER + =
TOWER_LEFT_160 + SUPER_BANNER_BOTTOM;=0A=
templateConfigs[ BOX_ONLY_NOGOOGLE ]   =3D BIGBOX_LEFT ;=0A=
templateConfigs[ HALFPAGE_ONLY ] =3D HALFPAGE_LEFT + GOOGLE ;=0A=
templateConfigs[ HALFPAGE_ONLY_NOGOOGLE ] =3D HALFPAGE_LEFT;=0A=
templateConfigs[ TECH ]   =3D SUPER_BANNER + TOWER_LEFT_160 + =
BANNER_BOTTOM + BIGBOX + GOOGLE;=0A=
templateConfigs[ TECH_SUPER_BANNER ] =3D SUPER_BANNER + TOWER_LEFT_160 + =
BANNER_BOTTOM + BIGBOX + GOOGLE;=0A=
templateConfigs[ BANNER_BIGBOX ] =3D SUPER_BANNER + BIGBOX + GOOGLE;=0A=
templateConfigs[ POLITICS_BOX_ONLY ]   =3D BIGBOX_LEFT + BANNER_BOTTOM + =
GOOGLE;=0A=
templateConfigs[ BIGFIVE_TOWER_NO ]  =3D SUPER_BANNER + TOWER_LEFT_160 + =
SUPER_BANNER_BOTTOM;=0A=
templateConfigs[ BIGFIVE_BIGBOX_NO ] =3D SUPER_BANNER + =
SUPER_BANNER_BOTTOM + BIGBOX_LEFT;=0A=
templateConfigs[ ENLARGE_PHOTO ] =3D TOWER_LEFT_160;=0A=
templateConfigs[ PRINTER_FRIENDLY ] =3D TOWER_LEFT_160 + GOOGLE;=0A=
templateConfigs[ NEWS_TOWER_NO ]     =3D SUPER_BANNER + TOWER_LEFT_160;=0A=
templateConfigs[ LIVEONLINE_BIGBOX_NO ]   =3D SUPER_BANNER + BIGBOX_LEFT;=0A=
templateConfigs[ NEWS_SUPER_BANNER_FOURTH ] =3D SUPER_BANNER + =
TOWER_LEFT_160 + SUPER_BANNER_BOTTOM + GOOGLE + FOURTH_COLUMN;=0A=
templateConfigs[ BOX_ONLY_FOURTH ]   =3D BIGBOX_LEFT + FOURTH_COLUMN + =
GOOGLE;=0A=
=0A=
=0A=
=0A=
// Make node-to-template assignments=0A=
=0A=
// 120x600 Tower Ads=0A=
var nodeConfigs =3D new AdConfigurations();=0A=
nodeConfigs.addConfiguration( 'nation/nationalsecurity/abroad/iraq' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( BANNER_ONLY, =
           1) );=0A=
nodeConfigs.addConfiguration( 'metro/obituaries' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( OBIT,        =
    1) );=0A=
nodeConfigs.addConfiguration( 'nation' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
HALFPAGE_ONLY,         .05 ) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER,     .25) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_BIGBOX, =
   .7) );=0A=
nodeConfigs.addConfiguration( 'jobs' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER,     .5) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_BIGBOX, =
   .5) );=0A=
nodeConfigs.addConfiguration( 'world' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
HALFPAGE_ONLY,         .1 ) )=0A=
		   .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER_FOURTH,     .25) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BOX_ONLY_FOURTH,    .65) );=0A=
nodeConfigs.addConfiguration( 'metro' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER,     .2) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_BIGBOX, =
   .8) );=0A=
nodeConfigs.addConfiguration( 'sports' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
HALFPAGE_ONLY,         .5 ) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER,     .25) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( BOX_ONLY,    =
.75) );=0A=
nodeConfigs.addConfiguration( 'business' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
HALFPAGE_ONLY,         .05 ) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER,     .5) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_BIGBOX, =
      .45) );=0A=
nodeConfigs.addConfiguration( 'food' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER,     .2) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_BIGBOX, =
   .8) );=0A=
nodeConfigs.addConfiguration( 'style' )=0A=
	       .addTemplateAssignment ( new TemplateAssignment( HALFPAGE_ONLY,  =
       .1 ) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER,     .25) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( BOX_ONLY,    =
.65) );=0A=
nodeConfigs.addConfiguration( 'travel' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BIGFIVE_TOWER,   1) );=0A=
nodeConfigs.addConfiguration( 'health' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BIGFIVE_TOWER,  .3) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BIGFIVE_BIGBOX, .7) );=0A=
nodeConfigs.addConfiguration( 'home' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BIGFIVE_TOWER,  .4) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BIGFIVE_BIGBOX, .6) );=0A=
nodeConfigs.addConfiguration( 'education' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BIGFIVE_TOWER,  .65) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BIGFIVE_BIGBOX, .35) );=0A=
nodeConfigs.addConfiguration( 'world/columns/sanchezmarcela') =0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER_NOGOOGLE,     .4) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BOX_ONLY_NOGOOGLE,    .6) );=0A=
nodeConfigs.addConfiguration( 'liveonline' )=0A=
            .addTemplateAssignment ( new TemplateAssignment( NEWS_TOWER, =
       .5) )=0A=
            .addTemplateAssignment ( new TemplateAssignment( =
LIVEONLINE_BIGBOX , .5) );=0A=
nodeConfigs.addConfiguration( 'realestate' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_TOWER,  =
   1) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_BIGBOX, =
   0) );=0A=
nodeConfigs.addConfiguration( 'technology' )=0A=
            .addTemplateAssignment ( new TemplateAssignment( TECH,       =
 .5) )=0A=
            .addTemplateAssignment ( new TemplateAssignment( =
TECH_SUPER_BANNER, .5) );=0A=
nodeConfigs.addConfiguration( 'politics' )=0A=
		   .addTemplateAssignment ( new TemplateAssignment( HALFPAGE_ONLY,     =
    .05 ) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER,     .25) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_BIGBOX, =
   .70) );=0A=
nodeConfigs.addConfiguration( 'weather' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_TOWER,  =
   .6) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BANNER_BIGBOX,    .4) );=0A=
nodeConfigs.addConfiguration( 'entertainment' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER, .05) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_TOWER, =
.35) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_BIGBOX, =
.6) );=0A=
nodeConfigs.addConfiguration( 'artsandleisure' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
NEWS_SUPER_BANNER, .05) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_TOWER, =
.35) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_BIGBOX, =
.6) );=0A=
nodeConfigs.addConfiguration( 'visitorsguide' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( NEWS_TOWER, =
1) )=0A=
nodeConfigs.addConfiguration( 'health/specials/pharmaceuticals' )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BIGFIVE_TOWER_NO,  .3) )=0A=
           .addTemplateAssignment ( new TemplateAssignment( =
BIGFIVE_BIGBOX_NO, .7) );=0A=
nodeConfigs.addConfiguration( 'liveonline/politics' )=0A=
            .addTemplateAssignment ( new TemplateAssignment( =
NEWS_TOWER_NO,        .5) )=0A=
            .addTemplateAssignment ( new TemplateAssignment( =
LIVEONLINE_BIGBOX_NO , .5) );=0A=
		   =0A=
		   =0A=
		   =0A=
=0A=
// For this node, select a template=0A=
if ( (typeof commercialNode !=3D 'undefined') && (commercialNode !=3D =
"") ) {=0A=
adTemplate =3D nodeConfigs.getTemplate( commercialNode );=0A=
}=0A=
=0A=
else {=0A=
adTemplate =3D nodeConfigs.getTemplate( thisNode );=0A=
}=0A=
=0A=
if (document.location.href.indexOf("debugAdCode") !=3D -1) =
document.writeln("Ad Template: " + adTemplate);=0A=
=0A=
// Define objects=0A=
// TemplateAssignment associates a template with a frequency ( 0 <=3D =
frq <=3D 1 )=0A=
function TemplateAssignment( tmpl, frq )=0A=
{=0A=
  this.template =3D tmpl;=0A=
  this.frequency =3D ( ( frq >=3D 0 ) && ( frq <=3D 1 ) ) ? frq : 0 ;=0A=
}=0A=
=0A=
// NodeTemplateAssignment collects TemplateAssignment objects for a =
specific node=0A=
function NodeTemplateAssignment ( node )=0A=
{=0A=
  this.node =3D node;=0A=
  this.templates =3D new Array();=0A=
  this.templateCount =3D 0;=0A=
  =0A=
  this.addTemplateAssignment =3D _addAdTemplateAssignment;=0A=
  this.selectTemplate =3D _adSelectTemplate;=0A=
}=0A=
=0A=
// AdConfigurations collects NodeTemplateAssignments for the site=0A=
function AdConfigurations ()=0A=
{=0A=
  this.configs =3D new Array();=0A=
  this.length =3D 0;=0A=
  =0A=
  this.addConfiguration =3D _addAdConfiguration;=0A=
  this.getTemplate =3D _adGetTemplate;=0A=
}=0A=
=0A=
function _adSelectTemplate()=0A=
{=0A=
  var base =3D 0;=0A=
  var rNum =3D Math.random();=0A=
  var rTemplate =3D NEWS_TOWER;=0A=
  =0A=
  for (var count =3D 0; count < this.templates.length; count++)=0A=
  {=0A=
    if ( rNum < this.templates[count].frequency + base ) =0A=
    {=0A=
      rTemplate =3D this.templates[count].template;=0A=
      break;=0A=
      //return this.templates[count].template;=0A=
    }=0A=
    else=0A=
    {=0A=
      base +=3D this.templates[count].frequency;=0A=
    }=0A=
  }=0A=
  return rTemplate;=0A=
}=0A=
=0A=
function _adGetTemplate ( node )=0A=
{=0A=
  adTemplate =3D DEFAULT_TEMPLATE;=0A=
  var base =3D 0;=0A=
  var bestMatch =3D 0;=0A=
  for ( var count =3D 0; count < this.length; count++ )=0A=
  {=0A=
    if ( this.configs[count].node =3D=3D node )=0A=
    {=0A=
      adTemplate =3D this.configs[count].selectTemplate();=0A=
      break;=0A=
    }=0A=
    else if (( node.indexOf(this.configs[count].node) =3D=3D 0 ) && ( =
this.configs[count].node.length > bestMatch ))=0A=
    {=0A=
      adTemplate =3D this.configs[count].selectTemplate();=0A=
      bestMatch =3D this.configs[count].node.length;=0A=
    }=0A=
  }=0A=
  return templateConfigs[adTemplate];=0A=
}=0A=
=0A=
function _addAdTemplateAssignment( templateAssignment )=0A=
{=0A=
  this.templates[this.templateCount++] =3D templateAssignment;=0A=
  return this;=0A=
}=0A=
=0A=
function _addAdConfiguration ( n )=0A=
{=0A=
  this.configs[this.length++] =3D new NodeTemplateAssignment (n);=0A=
  return this.configs[this.length - 1];=0A=
}
------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.washingtonpost.com/wp-srv/popjs/popupCampaignClasses.js

/*
 * Popup Campaign Manager provides the objects and methods needed to =
control multiple popup campaigns
 * It is controlled by popupCampaigns.js; by itself it does nothing that =
you'll see on a page.
 * It needs one preset variable: thisNode must be set to the node to =
which the page belongs before importing this javascript source.
 * TO CHANGE THE DOUBLECLICK CAP OR DOUBLECLICK TIMEFRAME, EDIT =
DClickCap and DClickTimeFrame IN THIS FILE
 */

if ( typeof thisNode =3D=3D 'undefined' ) thisNode =3D 'news';

// CONSTANTS
// REGISTERED|NOT_REGISTERED identify whether the user is defined (based =
on the WPATC cookie).
// To define both user groups, use addition (REGISTERED + NOT_REGISTERED =
=3D=3D all users)
var REGISTERED =3D 1;
var NOT_REGISTERED =3D 2;

// ARTICLE|FRONT|IMPLICIT|EXPLICIT define the types of pages to which a =
mapping applies.
// To combine several page types, use addition=20
// (FRONT + ARTICLE + IMPLICIT =3D=3D all section front and articles in =
this node and all its children)
var ARTICLE =3D 1;
var FRONT =3D 2;
var IMPLICIT =3D 4;
var EXPLICIT =3D 0;

// These constants make the time conversion to milliseconds easier. Take =
a number and multiply it by the appropriate constant
var pcm_DAYS =3D 24 * 60 * 60 * 1000;
var pcm_HOURS =3D 60 * 60 * 1000;
var pcm_MINUTES =3D 60 * 1000;
var TWELVE_HOURS =3D 12 * pcm_HOURS;
var ONE_DAY =3D 1 * pcm_DAYS;
var ONE_WEEK =3D 7 * pcm_DAYS;
var ONE_MONTH =3D 30 * pcm_DAYS;
var pcm_now =3D new Date();

// The following constants are for internal use
var NA =3D '';
var SESSION =3D 0;
var CAMPAIGN_MANAGER =3D 1;
var INTENSITY =3D 2;
var SUBSCRIBED =3D 3;
var DCLICK =3D 4;
var DCLICK_SESSION_CAP =3D 5; // new code for v4
var POPUP_WIDTH =3D 300;
var POPUP_HEIGHT =3D 400;

var COOKIE_NAME =3D new Array();
var COOKIE_VALUE =3D new Array();

COOKIE_NAME[SESSION] =3D 'wpni_session';
COOKIE_NAME[CAMPAIGN_MANAGER] =3D 'wpni_campaignmanager';
COOKIE_NAME[INTENSITY] =3D 'wpni_campaignintensity';
COOKIE_NAME[SUBSCRIBED] =3D 'WPATC';
COOKIE_NAME[DCLICK] =3D 'dcCount';
COOKIE_NAME[DCLICK_SESSION_CAP] =3D 'dcSessionLimit'; // new code for v4

// DClickCap and DClickTimeFrame apply to DoubleClick popup and popunder =
campaigns
var DClickCap =3D 5; // Maximum number of DoubleClick popups allowed in =
timeframe
var DClickTimeFrame =3D TWELVE_HOURS; // Timeframe applied to DClickCap
var DClickSessionCap =3D 2; // New variable to control popups per =
session
var DClickMinTimeBetweenPopups =3D 60000;
var FORCED_SESSION_EXPIRATON =3D TWELVE_HOURS; // Must match value in =
cookie_code.html

var popupUrl =3D NA;
var pcm_node =3D thisNode; // thisNode must be defined in the file =
calling this js file
var isArticle =3D (location.href.indexOf("/articles/") !=3D -1) ? true : =
false ;
var popupHasBeenDelivered =3D false;
var interstitialIsAllowed =3D true;


// TO DETERMINE IF USER CAME FROM GOOGLE:
var docUrl =3D document.location.href;
var key =3D docUrl.indexOf('?');

if (key !=3D -1) // make sure there are parameters
{
  // get the parameter
  var temp =3D docUrl.substring(key + 1, docUrl.length);
 =20
  // if just "g" was passed in, set the interstitial to false
  if (temp.length =3D=3D 1 && (temp =3D=3D "g" || temp =3D=3D "G") )
  {
    interstitialIsAllowed =3D false;
  }=20
}
// END GOOGLE LOGIC


// Extract cookies that are not campaign specific=20
for (var count =3D 0; count < COOKIE_NAME.length; count++)
{
  var startAt =3D 0;
  if ( (startAt =3D document.cookie.indexOf(COOKIE_NAME[count])) !=3D =
-1)
  {
    startAt +=3D COOKIE_NAME[count].length + 1;
    var endAt =3D (document.cookie.indexOf(";", startAt) =3D=3D -1) ? =
document.cookie.length : document.cookie.indexOf(";", startAt);
    COOKIE_VALUE[count] =3D document.cookie.substring(startAt, endAt);
  }
  else
  {
    COOKIE_VALUE[count] =3D NA;
  }
  //alert ( COOKIE_NAME[count]+'=3D'+COOKIE_VALUE[count] );
}

// New logic to prevent back-to-back interstitials
if ( COOKIE_VALUE[DCLICK_SESSION_CAP].indexOf ("X") !=3D -1 )
{
  interstitialIsAllowed =3D false;=20
  var newCookie =3D =
COOKIE_VALUE[DCLICK_SESSION_CAP].substring(0,COOKIE_VALUE[DCLICK_SESSION_=
CAP].length - 1);
  document.cookie =3D "dcSessionLimit=3D" + newCookie + =
";path=3D/;domain=3D.washingtonpost.com";
}

// New logic to allow for internal timing of DCLICK_SESSION_CAP (v5)
//var dclickTimeBetweenPopups =3D new Date();
//dclickTimeBetweenPopups.setTime ( dclickTimeBetweenPopups.getTime() + =
DClickMinTimeBetweenPopups );

if ( COOKIE_VALUE[DCLICK_SESSION_CAP].indexOf ("|") !=3D -1 )
{
  dclickSessionExpiration =3D =
COOKIE_VALUE[DCLICK_SESSION_CAP].substring(COOKIE_VALUE[DCLICK_SESSION_CA=
P].indexOf("|") + 1);
  COOKIE_VALUE[DCLICK_SESSION_CAP] =3D =
COOKIE_VALUE[DCLICK_SESSION_CAP].substring(0, =
COOKIE_VALUE[DCLICK_SESSION_CAP].indexOf("|"));
  var currentDate =3D new Date();
  var cookieExpiresDate =3D new Date();
  cookieExpiresDate.setTime( parseInt(dclickSessionExpiration) );

  var cookieSetDate =3D new Date();
  cookieSetDate.setTime( parseInt(dclickSessionExpiration) - =
FORCED_SESSION_EXPIRATON );
 =20
  // If cookie was written in past 15 mins, don't allow interstitial
  if ( currentDate.getTime() - cookieExpiresDate.getTime() < 0 ) // If =
the cookie was set to expire in the past 15 minutes
  {
    if ( currentDate.getTime() - cookieSetDate.getTime() < =
DClickMinTimeBetweenPopups )
    {
      interstitialIsAllowed =3D false;
//      alert ("No ad because it's been less than a minute =
("+(currentDate.getTime() - cookieSetDate.getTime())+" < =
"+DClickMinTimeBetweenPopups+")" );
    }
    if ( COOKIE_VALUE[DCLICK_SESSION_CAP] >=3D DClickSessionCap )
    {
      interstitialIsAllowed =3D false;
    }

    //alert ( "Last popup occurred too recently ( "+( =
currentDate.getTime() - cookieSetDate.getTime() =
)+"<"+DClickMinTimeBetweenPopups+")" );
  }
// If cookie is older than 15 mins, expire it
  else
  {
    dclickSessionExpiration =3D new Date();
    dclickSessionExpiration.setTime ( dclickSessionExpiration.getTime() =
- 100000 );
    document.cookie =3D COOKIE_NAME[DCLICK_SESSION_CAP] + =
"=3D1;expires=3D"+dclickSessionExpiration.toGMTString()+";path=3D/;domain=
=3D.washingtonpost.com"; // new code for v4
    //alert ( "Deleting old cookie" );
  }
}

// if ( COOKIE_VALUE[DCLICK_SESSION_CAP] >=3D DClickSessionCap ) =
interstitialIsAllowed=3Dfalse; // new code for v4
if ( COOKIE_VALUE[DCLICK] >=3D DClickCap ) interstitialIsAllowed =3D =
false;

// logic to abandon Doubleclick call in War node if =
interstitialisAllowed is false
if ((typeof adTemplate !=3D'undefined') && (typeof thisNode !=3D =
'undefined') && (thisNode =3D=3D 'nation/nationalsecurity/abroad/iraq') =
&&  (interstitialIsAllowed =3D=3D false))
		{
		adTemplate =3D templateConfigs[ OBIT ];
		}

// Extract the campaign-specific cookie
function getCampaignCookie(cn)
{
  var c =3D NA;
  var temp =3D document.cookie;
  while (temp.indexOf(cn + ':') !=3D -1)=20
    temp =3D temp.substring(0, temp.indexOf(cn + ':'))=20
         + temp.substring(temp.indexOf(cn + ':') + cn.length + 1);
  if (temp.indexOf(cn) !=3D -1)
  {
    var startAt =3D temp.indexOf(cn) + cn.length + 1;
    var endAt =3D (temp.indexOf(';', startAt) =3D=3D -1) ? temp.length : =
temp.indexOf(';', startAt);
    c =3D temp.substring(startAt, endAt);
  }
  return c;
}

// Try to deliver a campaign from an Array of campaigns (the Array is =
the argument to this function)
function deliverCampaign(campaign)
{
  //if ( (typeof debugAdCodeJsp !=3D "undefined") && (debugAdCodeJsp) ) =
alert(COOKIE_VALUE[DCLICK] + ';' + (popupHasBeenDelivered ? 'true': =
'false'));=20
  // Abort if another popup already has been deliver on this page
  if ( popupHasBeenDelivered )=20
  {
//    var expires =3D '';
//    var dcCountExpiration =3D new Date();
//    dcCountExpiration.setTime(dcCountExpiration.getTime() + =
(DClickTimeFrame) );
//    if ( ( DClickTimeFrame !=3D SESSION ) && (COOKIE_VALUE[DCLICK] =
!=3D NA) )
//      expires =3D ';expires=3D' + dcCountExpiration.toGMTString();
//    if ( COOKIE_VALUE[DCLICK_SESSION_CAP] !=3D NA )=20
//      COOKIE_VALUE[DCLICK_SESSION_CAP] =3D parseInt( =
COOKIE_VALUE[DCLICK_SESSION_CAP] ) + 1; // new code for v4
//    else COOKIE_VALUE[DCLICK_SESSION_CAP] =3D 1; // new code for v4
//    if ( COOKIE_VALUE[DCLICK] !=3D NA )=20
//      COOKIE_VALUE[DCLICK] =3D parseInt( COOKIE_VALUE[DCLICK] ) + 1;
//    else COOKIE_VALUE[DCLICK] =3D 1;=20
    //document.cookie =3D COOKIE_NAME[DCLICK_SESSION_CAP] + "=3D" + =
COOKIE_VALUE[DCLICK_SESSION_CAP] + "|" + dclickSessionExpiration + =
";path=3D/;domain=3D.washingtonpost.com"; // new code for v4
//    document.cookie =3D COOKIE_NAME[DCLICK] + "=3D" + =
COOKIE_VALUE[DCLICK] + expires + =
";path=3D/;domain=3D.washingtonpost.com";
    return;
  }
  // Abort if the user has exceeded the session limit (defined in =
popupCampaigns.js)
  if ( (COOKIE_VALUE[SESSION] !=3D NA) && =
(parseInt(COOKIE_VALUE[SESSION]) >=3D popupSessionLimit) )
  {
    return;
  }
 =20
  // Abort if the user has exceeded the intensity limit (defined in =
popupCampaigns.js)
  if ( (COOKIE_VALUE[INTENSITY] !=3D NA) && =
(parseInt(COOKIE_VALUE[INTENSITY]) >=3D popupIntensityLimit) )
  {
    return;
  }

  // Extract possible campaigns from the campaign list by passing each =
campaign through a bunch of filters
  var validCampaign =3D new Array();
  var validCampaignCount =3D 0;

  for (var count =3D 0; count < campaign.length; count++)
  {
    // Filter one: Check the window during which the campaign is valid
    if ( (campaign[count].timed =3D=3D false) || ( (pcm_now > =
campaign[count].startTime) && ((pcm_now < campaign[count].endTime)) ) )
    {
      // Check target
      if (  ( ( (campaign[count].target & NOT_REGISTERED) =3D=3D =
NOT_REGISTERED ) && (COOKIE_VALUE[SUBSCRIBED] =3D=3D NA) )
         || ( ( (campaign[count].target & REGISTERED) =3D=3D REGISTERED =
) && (COOKIE_VALUE[SUBSCRIBED] !=3D NA) )
         )
      {
        // Check to see if this campaign has surpassed its delivery =
limit
        var campaignCookie =3D getCampaignCookie(campaign[count].name);
        if (  (campaignCookie =3D=3D NA)=20
           || (parseInt(campaignCookie) < campaign[count].limit)
           )
        {
          // Determine if this node is valid for this campaign
          if (determinePopupUrl(campaign[count]) !=3D NA)
          { 		 =20
            validCampaign[validCampaignCount++] =3D campaign[count];
          }
          else{
          }
        }
        else{
        }
      }
      else{
      }
    }
    else{
    }
  }

  // Abort if there are no valid campaigns
  if (validCampaignCount =3D=3D 0) return;

 =20
  // Randomize the valid campaigns
  if (validCampaignCount > 1)
  {
    for (var count =3D 0; count < validCampaignCount; count++)
    {
      var newSpot =3D Math.floor(Math.random() * validCampaignCount);
      hold =3D validCampaign[newSpot];
      validCampaign[newSpot] =3D validCampaign[count];
      validCampaign[count] =3D hold;
    }
  }
 =20
 =20
 =20
  // Iterate through random list of campaigns, trying to deliver one
  for (var count =3D 0; count < validCampaignCount; count++)
  {
    var campaignCookie =3D getCampaignCookie(validCampaign[count].name);
    if ((campaignCookie =3D=3D NA) || (parseInt(campaignCookie) < =
validCampaign[count].limit))
    {
      doPopup(validCampaign[count]);
      break;
    }
  }
}

function doPopup(campaign)
{
  // UPDATE COOKIES!
  if (COOKIE_VALUE[SESSION] =3D=3D NA) COOKIE_VALUE[SESSION] =3D 1;
  else COOKIE_VALUE[SESSION]++;
  var campaignCookie =3D getCampaignCookie(campaign.name);
  if (campaignCookie =3D=3D NA) campaignCookie =3D 1;
  else campaignCookie =3D parseInt(campaignCookie) + 1;
  if (COOKIE_VALUE[CAMPAIGN_MANAGER].indexOf(campaign.name + ":") !=3D =
-1)
  {
    var startAt =3D COOKIE_VALUE[CAMPAIGN_MANAGER].indexOf(campaign.name =
+ ":") + campaign.name.length + 1;
    var endAt =3D (COOKIE_VALUE[CAMPAIGN_MANAGER].indexOf("^", startAt) =
=3D=3D -1) ? COOKIE_VALUE[CAMPAIGN_MANAGER].length : =
COOKIE_VALUE[CAMPAIGN_MANAGER].indexOf("^", startAt);
    var temp =3D =
parseInt(COOKIE_VALUE[CAMPAIGN_MANAGER].substring(startAt, endAt)) + 1;
    COOKIE_VALUE[CAMPAIGN_MANAGER] =3D =
COOKIE_VALUE[CAMPAIGN_MANAGER].substring(0,startAt)=20
                                   + temp
                                   + =
COOKIE_VALUE[CAMPAIGN_MANAGER].substring(endAt);
  }
  else
  {
    COOKIE_VALUE[CAMPAIGN_MANAGER] +=3D campaign.name + ":1^";
  }
  if (COOKIE_VALUE[INTENSITY] =3D=3D NA) COOKIE_VALUE[INTENSITY] =3D 1;
  else COOKIE_VALUE[INTENSITY]++;

  // Determine expiration times for different cookies
  var campaignExpiration =3D new Date();
  var managerExpiration =3D new Date();
  var intensityExpiration =3D new Date();
  campaignExpiration.setTime(campaignExpiration.getTime() + =
(campaign.frequency));
  managerExpiration.setTime(managerExpiration.getTime() + (365 * =
pcm_DAYS) );
  intensityExpiration.setTime(intensityExpiration.getTime() + (7 * =
pcm_DAYS) );

  // Write cookies to browser
  document.cookie =3D COOKIE_NAME[SESSION] + "=3D" + =
COOKIE_VALUE[SESSION] + ";path=3D/";
  document.cookie =3D campaign.name + "=3D" + campaignCookie + =
";expires=3D" + campaignExpiration.toGMTString() + ";path=3D/";
  document.cookie =3D COOKIE_NAME[CAMPAIGN_MANAGER] + "=3D" + =
COOKIE_VALUE[CAMPAIGN_MANAGER] + ";expires=3D" + =
managerExpiration.toGMTString() + ";path=3D/";
  document.cookie =3D COOKIE_NAME[INTENSITY] + "=3D" + =
COOKIE_VALUE[INTENSITY] + ";expires=3D" + =
intensityExpiration.toGMTString() + ";path=3D/";
=20
  if (pcm_now.getSeconds()%campaign.mod =3D=3D 0)
  {
 =20
  w =3D window.open(determinePopupUrl(campaign), '', 'width=3D' + =
campaign.width + ',height=3D' + campaign.height + ',scrollbars=3Dyes');
  }
}

function determinePopupUrl(campaign)
{
  var url =3D NA;
  for (var count =3D 0; count < campaign.nodeToUrlMapCount; count++)
  {
    var mapping =3D campaign.nodeToUrlMap[count];
    if ( ((mapping.applies & IMPLICIT) =3D=3D IMPLICIT) && =
(pcm_node.indexOf(mapping.node) =3D=3D 0) )
    {
      if ((((mapping.applies & ARTICLE) =3D=3D ARTICLE) && (isArticle)) =
||
          (((mapping.applies & FRONT) =3D=3D FRONT) && (!isArticle))
         )
      {
        url =3D mapping.url;
      }
    }
    else if ( ((mapping.applies & EXPLICIT) =3D=3D EXPLICIT) && =
(pcm_node =3D=3D mapping.node) )
    {
      if ((((mapping.applies & ARTICLE) =3D=3D ARTICLE) && (isArticle)) =
||
          (((mapping.applies & FRONT) =3D=3D FRONT) && (!isArticle))
         )
      {
        url =3D mapping.url;
        break;
      }
    }
  }
  return url;
}

// JAVASCRIPT OBJECTS and definitions of their methods
function Campaign()
{
  this.name =3D '';
  this.timed =3D false;
  this.startTime =3D null;
  this.endTime =3D null;
  this.nodeToUrlMap =3D new Array();
  this.nodeToUrlMapCount =3D 0;
  this.target =3D NOT_REGISTERED;
  this.limit =3D 1;
  this.frequency =3D 7 * pcm_DAYS;
  this.width =3D POPUP_WIDTH;
  this.height =3D POPUP_HEIGHT;
  this.mod =3D 1;
 =20
  this.setName =3D pcm_setName;
  this.setTime =3D pcm_setTime;
  this.setTarget =3D pcm_setTarget;
  this.setLimit =3D pcm_setLimit;
  this.setFrequency =3D pcm_setFrequency;
  this.mapNodeToUrl =3D pcm_mapNodeToUrl;
  this.setDimensions =3D pcm_setDimensions;
  this.setMod =3D pcm_setMod;
}

function NodeToUrlMap(n,u,a)
{
  this.node =3D n;
  this.url =3D u;
  this.applies =3D a;
}

function pcm_setDimensions(x,y)
{
  this.width =3D x;
  this.height =3D y;
}

function pcm_mapNodeToUrl(u)
{
  this.nodeToUrlMap[this.nodeToUrlMapCount++] =3D u;
}

function pcm_setName(n)
{
  this.name =3D n;
}

function pcm_setTime(s,e)
{
  this.startTime =3D s;
  this.endTime =3D e;
  this.timed =3D true;
}

function pcm_setTarget(t)
{
  this.target =3D t;
}

function pcm_setLimit(l)
{
  this.limit =3D l;
}

function pcm_setFrequency(f)
{
  this.frequency =3D f;
}

function pcm_setMod(m)
{
  this.mod =3D m;
} =20


------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.washingtonpost.com/wp-srv/ad/ad.js

var debugAdCode =3D false ;=0A=
if (document.location.search.indexOf("debugAdCodeStatic")+1)=0A=
  debugAdCode =3D true ;=0A=
else if (document.location.search.indexOf("debugAdCodeJsp")+1)=0A=
  debugAdCode =3D false ;=0A=
else if (document.location.search.indexOf("debugAdCode")+1)=0A=
  debugAdCode =3D true ;=0A=
var show_doubleclick_ad =3D true ;=0A=
var static_wpatc =3D getWPATCookie() ;=0A=
=0A=
// constants=0A=
var KEEP_NODE =3D false ;=0A=
var CHANGE_NODE =3D true ;=0A=
=0A=
// changed on first call to placeAd=0A=
var firstTimeCalled =3D true ;=0A=
var firstTimeCalledNew =3D true ;=0A=
var adUniqueNumber =3D '' ;=0A=
var newsAncestorAsString =3D new String("") ;=0A=
// var newsAncestorAsString =3D new =
String(",metro,nation,style,opinion,food,outlook,magazine,books,digest,ar=
chive,print,") ;=0A=
=0A=
// changed on first call to placeAd or when assertive is true=0A=
var adAncestor =3D new String() ;=0A=
var adNoda =3D new String() ;=0A=
var adSite =3D new String() ;=0A=
var adZone =3D new String() ;=0A=
var adSiteZone =3D new String() ;=0A=
var adDir =3D new String() ;=0A=
var adArgs =3D 0 ;=0A=
=0A=
/* layer =3D 0 =3D=3D> no layer */=0A=
/* layer =3D [1-6] =3D=3D> use layer, layer should match tile */=0A=
/* w =3D width, h =3D height */=0A=
function placeAd(layer,node,kw,pos,dir,w,h,tile)=0A=
{=0A=
=0A=
if (show_doubleclick_ad)=0A=
{=0A=
  =0A=
  // if ((tile =3D=3D 1||layer =3D=3D 1||kw =3D=3D 1) || (layer =3D=3D0) =
|| (node.substring(5,15) =3D=3D "liveonline") || (node.substring(5,13) =
=3D=3D "washtech"))=0A=
  if ( firstTimeCalled )=0A=
  {=0A=
    var axel =3D Math.random()+"";=0A=
    var ord =3D axel * 1000000000000000000;=0A=
    adUniqueNumber =3D ord+'?' ;=0A=
  }=0A=
  =0A=
  if (node.indexOf("/") =3D=3D -1) node +=3D "/" ;=0A=
=0A=
  // only pass in abbreviated argument list: layer [0,1,2] and node =
(tile and pos are set based on layer)=0A=
  // usage: placeAd(layer,node); example: =
placeAd(1,'wpni.entertain/music');=0A=
  if ( arguments.length =3D=3D 2 )=0A=
  {=0A=
	adArgs =3D 2 ;=0A=
    platform =3D 'STATIC' ;=0A=
    layer =3D arguments[0] ;=0A=
    if (layer =3D=3D 0) { tile =3D 1 } else { tile =3D layer }=0A=
    node =3D arguments[1] ;=0A=
    pos =3D setPosition(tile); w =3D setWidth(tile); h =3D =
setHeight(tile);=0A=
    kw =3D '';dir=3D'';=0A=
	dir=3DgetDir(node);=0A=
	node=3DmkNode(node);=0A=
  }=0A=
  =0A=
  // only pass in abbreviated argument list: layer, node, and tile (pos =
is set based on tile)=0A=
  // this is to be used when layer is 0, but you still need to set =
tile=3D1 and tile=3D2=0A=
  // usage: placeAd(layer,node,tile); example: =
placeAd(0,'wpni.entertain/music',1);=0A=
  else if ( arguments.length =3D=3D 3 )=0A=
  {=0A=
	adArgs =3D 3 ;=0A=
    platform =3D 'STATIC' ;=0A=
    layer =3D arguments[0] ;=0A=
    node =3D arguments[1] ;=0A=
    tile =3D arguments [2] ;=0A=
    pos =3D setPosition(tile); w =3D setWidth(tile); h =3D =
setHeight(tile);=0A=
    kw =3D '';=0A=
	dir=3DgetDir(node);=0A=
	node=3DmkNode(node);=0A=
	=0A=
    layer =3D new String(layer) ;=0A=
    // sneaking in call to new place ad=0A=
    if (! layer.match(/[0-9]+/) )=0A=
    {=0A=
      placeAd(layer,node,tile,'',true) ;=0A=
	  return '' ;=0A=
    }=0A=
  }=0A=
=0A=
  else if ( arguments.length =3D=3D 4 )=0A=
  {=0A=
    placeAd(arguments[0],arguments[1],arguments[2],arguments[3],'') ;=0A=
    return '' ;=0A=
  }=0A=
=0A=
/**=0A=
 * crk added 17 Jul 2002=0A=
 * methods for 5 parameter placeAd call=0A=
 * placeAd(platform,node,tile,kw,assertive)=0A=
 * @param platform: STATIC, FT, or JSP: not usef for anything yet=0A=
 * @param node: should have the form of a spud node, e.g. =
"metro/dc/schools"=0A=
 * @param tile: integer value from 1 to 14 (as of 17 Jul 2002)=0A=
 * @param kw: this text will just be thrown into the ad tag, =
unmanipulated, whatever it is=0A=
 * @param assertive: if assertive is true, adSite, adZone, and adDir are =
calculated anew, otherwise the previous values are used=0A=
 **/=0A=
  else if ( arguments.length =3D=3D 5 )=0A=
  {=0A=
    var na =3D =
[arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]] ;=0A=
    adArgs =3D 5 ;=0A=
    platform =3D na[0] ;=0A=
    node =3D cleanNode(na[1]) ;=0A=
    tile =3D na[2] ;=0A=
    kw =3D na[3] ;=0A=
	assertive =3D na[4] ;=0A=
	pos =3D setPosition(tile); w =3D setWidth(tile); h =3D setHeight(tile);=0A=
	=0A=
    if ( firstTimeCalledNew || assertive )=0A=
	{=0A=
	  adAncestor =3D getAdAncestor(node) ;=0A=
	  adSite =3D getAdSite(adAncestor) ;=0A=
	  adNoda =3D getAdNode(node,adAncestor) ;=0A=
	  adZone =3D getAdZone(adNoda) ;=0A=
	  adDir =3D getAdDir(node) ;=0A=
	  firstTimeCalledNew =3D false ;=0A=
=0A=
    if (adZone)=0A=
	  adSiteZone =3D adSite + "/" + adZone ;=0A=
	else=0A=
	  adSiteZone =3D adSite ;=0A=
=0A=
	}=0A=
=0A=
	var alerts =3D false ;=0A=
	if (assertive)=0A=
    {=0A=
      if (alerts) alert("adAncestor: "+adAncestor) ;=0A=
      if (alerts) alert("adSite: "+adSite) ;=0A=
      if (alerts) alert("adNoda: "+adNoda) ;=0A=
      if (alerts) alert("adZone: "+adZone) ;=0A=
      if (alerts) alert("adDir: "+adDir) ;=0A=
    }=0A=
=0A=
  }=0A=
=0A=
  // for full parameter list, modernize the positions=0A=
  else if ( arguments.length =3D=3D 8 )=0A=
  {=0A=
	adArgs =3D 8 ;=0A=
    platform =3D 'STATIC' ;=0A=
    // added logic specifically for liveonline templates=0A=
    // the new 468 tags are 8 arguments... so there's logic for !468=0A=
    if ( node.substring(5,15) =3D=3D "liveonline" && w !=3D 468)=0A=
    //if (node.substring(5,15) =3D=3D "liveonline")=0A=
    {=0A=
      pos =3D "ad" + pos;=0A=
      tile =3D 11;=0A=
    }=0A=
    else=0A=
    {=0A=
      pos =3D setPosition(tile) ;=0A=
    }=0A=
=0A=
  }=0A=
=0A=
  // fix old tower ad to new tower ad=0A=
  if ( h =3D=3D "615" )=0A=
  {=0A=
    w =3D "120" ;=0A=
    h =3D "600" ;=0A=
  }=0A=
=0A=
  //insert interstitial value in the top banner=0A=
  if ( firstTimeCalled )=0A=
  {=0A=
    inter_value=3D"dcopt=3Dist;";  =0A=
    =0A=
    // TO DETERMINE IF USER CAME FROM GOOGLE:=0A=
    var docUrl =3D document.location.href;=0A=
    var key =3D docUrl.indexOf('?');=0A=
    =0A=
    if (key !=3D -1) // make sure there are parameters=0A=
    {=0A=
      // get the parameter=0A=
      var temp =3D docUrl.substring(key + 1, docUrl.length);=0A=
      =0A=
      // if just "g" was passed in, set the interstitial to false=0A=
      if (temp.length =3D=3D 1 && (temp =3D=3D "g" || temp =3D=3D "G") )=0A=
      {=0A=
        inter_value =3D "";=0A=
      } =0A=
    }=0A=
    // END GOOGLE LOGIC=0A=
    =0A=
	// TO DETERMINE IF THE AD IS BEING CALLED FROM A POPUP //added by mw & =
pk- April 7, 2003=0A=
	if ( window.opener )=0A=
    {=0A=
	inter_value =3D "";=0A=
    }=0A=
	=0A=
  	if ( document.cookie.indexOf ("dcSessionLimit=3D") !=3D -1 )=0A=
    {=0A=
	 inter_value =3D "";=0A=
    }=0A=
    else if ( document.cookie.indexOf ("dcCount=3D") !=3D -1 )=0A=
    {=0A=
      var startAt =3D document.cookie.indexOf( "dcCount=3D" ) + 8;=0A=
      var endAt =3D document.cookie.indexOf( ";", startAt );=0A=
      if ( endAt =3D=3D -1 ) endAt =3D document.cookie.length;=0A=
      dcCount =3D parseInt ( document.cookie.substring ( startAt, endAt =
) );=0A=
      if ( dcCount >=3D 5 ) inter_value =3D "";=0A=
    }=0A=
    if ( location.href.indexOf ( ".washingtonpost.com" ) =3D=3D -1 )=0A=
    {=0A=
      inter_value =3D "";=0A=
    }=0A=
  }=0A=
  else=0A=
    inter_value=3D"";=0A=
=0A=
  if ( adArgs !=3D 5 )=0A=
  {=0A=
    kw =3D mkKeyword(kw,node) ;=0A=
    dir =3D mkDir(dir) ;=0A=
    var keyvalues =3D =
node+dir+static_wpatc+inter_value+"kw=3D"+kw+";pos=3D"+pos+";sz=3D"+w+"x"=
+h+";tile=3D"+tile+";ord=3D"+adUniqueNumber ;=0A=
  }=0A=
  else if ( adArgs =3D=3D 5 )=0A=
  {=0A=
    var keyvalues =3D =
adSiteZone+";"+static_wpatc+inter_value+adDir+kw+"pos=3D"+pos+";sz=3D"+w+=
"x"+h+";tile=3D"+tile+";ord=3D"+adUniqueNumber ;=0A=
  }=0A=
  =0A=
  var adCode =3D "" ;=0A=
  adCode +=3D ('<script language=3D"JavaScript1.1" =
src=3D"http://ad.doubleclick.net/adj/'+keyvalues+'">');=0A=
  adCode +=3D ('</script>');=0A=
=0A=
  if (debugAdCode) {  adCode +=3D debugTextArea(adCode); }=0A=
=0A=
  if ( tile !=3D 6 ) // put in condition for promo box=0A=
  {=0A=
    if ( tile !=3D 2 )=0A=
        document.write(adCode);=0A=
    //show the bottom banner only on the Ad5=0A=
    else if ( node.indexOf('wpni.health') =3D=3D 0 || =
node.indexOf('health')=3D=3D0 ||=0A=
			  node.indexOf('wpni.home') =3D=3D 0 || node.indexOf('home')=3D=3D0 ||=0A=
			  node.indexOf('wpni.education') =3D=3D 0 || =
node.indexOf('education')=3D=3D0 ||=0A=
			  node.indexOf('wpni.technology') =3D=3D 0 || =
node.indexOf('technology')=3D=3D0 ||=0A=
			  node.indexOf('wpni.travel') =3D=3D 0 || =
node.indexOf('travel')=3D=3D0 ||=0A=
			  node.indexOf('photo/video') =3D=3D 0 || node.indexOf('entertain') =
=3D=3D 0 ||          node.indexOf('wpni.entertain') =3D=3D 0 || =
node.indexOf('realestate') =3D=3D 0 ||          =
node.indexOf('wpni.realestate') =3D=3D 0 || node.indexOf('politics') =
=3D=3D 0) =0A=
      document.write(adCode);=0A=
  }=0A=
  else // begin promo box code=0A=
  {=0A=
    promoad_national =3D layer ;=0A=
	document.write('<S\CRIPT LANGUAGE=3D"javascript" =
SRC=3D"http://www.washingtonpost.com/wp-srv/javascript/common/promoad.js"=
></S\CRIPT>') ;=0A=
  } // end promo code=0A=
=0A=
  firstTimeCalled =3D false ;=0A=
  =0A=
} // end if (show_doubleclick_ad)=0A=
=0A=
} // end placeAd=0A=
=0A=
// deprecated=0A=
function placeLayer(layer,node,kw,pos,dir,w,h,tile)=0A=
{=0A=
  // do nothing=0A=
}=0A=
=0A=
function setPosition(tile)=0A=
{=0A=
  var p =3D "ad"+tile ;=0A=
  // document.write(p) ;=0A=
  return p ;=0A=
}=0A=
=0A=
function setWidth(tile)=0A=
{=0A=
  var wi ;=0A=
  if      ( tile >=3D 1 && tile <=3D 2 ) { wi =3D "468"; }=0A=
  else if ( tile >=3D 3 && tile <=3D 5 ) { wi =3D "120"; }=0A=
  else if ( tile >=3D 6 && tile <=3D 6 ) { wi =3D "105"; }=0A=
  else if ( tile >=3D 8 && tile <=3D 9 ) { wi =3D "300"; }=0A=
  else if ( tile >=3D 10 && tile <=3D 10 ) { wi =3D "125"; }=0A=
  else if ( tile >=3D 11 && tile <=3D 11 ) { =0A=
  if ( (typeof adTemplate !=3D 'undefined') && (thisNode =3D=3D =
"style/comics/dilbert") ) {wi =3D "160";}=0A=
  else wi =3D "120";=0A=
  }=0A=
  else if ( tile >=3D 12 && tile <=3D 12 ) { wi =3D "130"; }=0A=
  else if ( tile >=3D 13 && tile <=3D 13 ) { wi =3D "728"; }=0A=
  else if ( tile >=3D 14 && tile <=3D 14 ) { wi =3D "120"; }=0A=
  else if ( tile >=3D 15 && tile <=3D 15 ) { wi =3D "446"; }=0A=
  else if ( tile >=3D 16 && tile <=3D 16 ) { wi =3D "300"; }=0A=
  else if ( tile >=3D 17 && tile <=3D 17 ) { wi =3D "720"; }=0A=
  else if ( tile >=3D 18 && tile <=3D 18 ) { wi =3D "120"; }=0A=
  else if ( tile >=3D 19 && tile <=3D 19 ) { wi =3D "760"; }=0A=
  else if ( tile >=3D 20 && tile <=3D 20 ) { wi =3D "120"; } // tower =
left=0A=
  else if ( tile >=3D 21 && tile <=3D 21 ) { wi =3D "160"; }=0A=
  else if ( tile >=3D 22 && tile <=3D 22 ) { wi =3D "110"; }=0A=
  else if ( tile >=3D 23 && tile <=3D 23 ) { wi =3D "234"; }=0A=
  else if ( tile >=3D 24 && tile <=3D 24 ) { wi =3D "336"; } // half =
page left=0A=
  else if ( tile >=3D 25 && tile <=3D 25 ) { wi =3D "728"; } // super =
banner bottom=0A=
  else if ( tile >=3D 26 && tile <=3D 26 ) { wi =3D "300"; } // big box =
left=0A=
  else if ( tile >=3D 27 && tile <=3D 27 ) { wi =3D "160"; } // tower =
left 160=0A=
  else if ( tile >=3D 28 && tile <=3D 28 ) { wi =3D "1"; } // 1x1 filler =
pos.=0A=
  else if ( tile >=3D 29 && tile <=3D 29 ) { wi =3D "120"; } // 120x60 =
VM.=0A=
=0A=
  // document.write(wi) ;=0A=
  return wi ;=0A=
}=0A=
=0A=
function setHeight(tile)=0A=
{=0A=
  var he ;=0A=
  if      ( tile >=3D 1 && tile <=3D 2 ) { he=3D"60"; }=0A=
  else if ( tile >=3D 3 && tile <=3D 5 ) { he=3D"90"; }=0A=
  else if ( tile >=3D 6 && tile <=3D 6 ) { he=3D"60"; }=0A=
  else if ( tile >=3D 8 && tile <=3D 8 ) { he =3D "360"; }=0A=
  else if ( tile >=3D 9 && tile <=3D 9 ) { he =3D "250"; }=0A=
  else if ( tile >=3D 10 && tile <=3D 10 ) { he =3D "125"; }=0A=
  else if ( tile >=3D 11 && tile <=3D 11 ) { he =3D "600"; }=0A=
  else if ( tile >=3D 12 && tile <=3D 12 ) { he =3D "31"; }=0A=
  else if ( tile >=3D 13 && tile <=3D 13 ) { he =3D "90"; }=0A=
  else if ( tile >=3D 14 && tile <=3D 14 ) { he =3D "240"; }=0A=
  else if ( tile >=3D 15 && tile <=3D 15 ) { he =3D "33"; }=0A=
  else if ( tile >=3D 16 && tile <=3D 16 ) { he =3D "250"; }=0A=
  else if ( tile >=3D 17 && tile <=3D 17 ) { he =3D "60"; }=0A=
  else if ( tile >=3D 18 && tile <=3D 18 ) { he =3D "600"; }=0A=
  else if ( tile >=3D 19 && tile <=3D 19 ) { he =3D "90"; }=0A=
  else if ( tile >=3D 20 && tile <=3D 20 ) { he =3D "600"; } // tower =
left 120=0A=
  else if ( tile >=3D 21 && tile <=3D 21 ) { he =3D "600"; }=0A=
  else if ( tile >=3D 22 && tile <=3D 22 ) { he =3D "90"; }=0A=
  else if ( tile >=3D 23 && tile <=3D 23 ) { he =3D "60"; }=0A=
  else if ( tile >=3D 24 && tile <=3D 24 ) { he =3D "850"; } // half =
page left=0A=
  else if ( tile >=3D 25 && tile <=3D 25 ) { he =3D "90"; } // super =
banner bottom=0A=
  else if ( tile >=3D 26 && tile <=3D 26 ) { he =3D "250"; } // big box =
left=0A=
  else if ( tile >=3D 27 && tile <=3D 27 ) { he =3D "600"; } // tower =
left 160=0A=
  else if ( tile >=3D 28 && tile <=3D 28 ) { he =3D "1"; } // 1x1 filler =
position=0A=
  else if ( tile >=3D 29 && tile <=3D 29 ) { he =3D "60"; } // 120x60=0A=
  // document.write(he) ;=0A=
  return he ;=0A=
}=0A=
=0A=
function placeShoppingBox(node)=0A=
{=0A=
  /* do nothing */=0A=
}=0A=
=0A=
function placeAdLinks(node,dir,kw,txt)=0A=
{=0A=
  /* do nothing  */=0A=
}=0A=
=0A=
function mkDir(myDir)=0A=
{=0A=
  var dirAry =3D myDir.split("/") ;=0A=
  var dirBreakUp =3D 0 ;=0A=
  if ( dirAry.length > dirBreakUp )=0A=
  {=0A=
    var myDir =3D "" ;=0A=
    for(var i=3D0;i<dirBreakUp;i++)=0A=
    {=0A=
      myDir +=3D dirAry[i] ;=0A=
      if (i < dirBreakUp-1)=0A=
        myDir +=3D "/" ;=0A=
    }=0A=
    myDir +=3D ";" ;=0A=
    for(var i=3D0;i<dirAry.length;i++)=0A=
    {=0A=
      myDir +=3D "dir=3D"+dirAry[i]+";" ;=0A=
    }=0A=
  }=0A=
  else=0A=
  {=0A=
    myDir +=3D ";" ;=0A=
  }=0A=
  return myDir ;=0A=
}=0A=
=0A=
function mkKeyword(myKeyword,myNode)=0A=
{=0A=
  if (myKeyword =3D=3D "" )=0A=
  {=0A=
    if (myNode.indexOf("/") !=3D -1 )=0A=
    {=0A=
      nodeAry =3D myNode.split("/") ;=0A=
      myKeyword =3D nodeAry[1] ;=0A=
    }=0A=
  }=0A=
  return myKeyword ;=0A=
}=0A=
=0A=
function getDir(node)=0A=
{=0A=
  var dirAry =3D node.split("/") ;=0A=
  var newDir =3D "" ;=0A=
  if (dirAry.length > 1)=0A=
  {=0A=
    for (i=3D1;i<dirAry.length;i++)=0A=
	{=0A=
	  newDir +=3D dirAry[i] ;=0A=
	  if (i!=3DdirAry.length-1)=0A=
	    newDir +=3D "/" ;=0A=
	}=0A=
  }=0A=
  return newDir ;=0A=
}=0A=
=0A=
function mkNode(node)=0A=
{=0A=
  var dirAry =3D node.split("/") ;=0A=
  var newNode =3D node ;=0A=
  if (dirAry.length >3)=0A=
  {=0A=
    newNode =3D "" ;=0A=
    for (i=3D0;i<3;i++)=0A=
    {=0A=
      newNode +=3D dirAry[i] ;=0A=
      if (i!=3D2)=0A=
        newNode +=3D "/" ;=0A=
    }=0A=
  }=0A=
  return newNode ;=0A=
}=0A=
=0A=
=0A=
function debugTextArea(ac)=0A=
{=0A=
  var re =3D new RegExp("\"","g") ;=0A=
  ac =3D ac.replace(re,"\\\"") ;=0A=
  return '<form><textarea wrap=3Dphysical cols=3D\"+55+\" =
rows=3D\"+10+\">'+ac+'</textarea></form>';=0A=
}=0A=
=0A=
function getWPATCookie()=0A=
{=0A=
  if (document.cookie.indexOf("WPATC") !=3D -1)=0A=
  {=0A=
    var start =3D (document.cookie.indexOf("WPATC") + 6);=0A=
    var end =3D (document.cookie.indexOf(";",start)) =3D=3D -1 ? =
document.cookie.length : document.cookie.indexOf(";",start);=0A=
    var cookie =3D document.cookie.substring(start,end) + ";";=0A=
    while (cookie.indexOf(":") !=3D -1)=0A=
      cookie =3D =
cookie.substring(0,cookie.indexOf(":"))+";"+cookie.substring(cookie.index=
Of(":")+1,cookie.length);=0A=
    if (cookie.lastIndexOf(";") !=3D cookie.length - 1) cookie +=3D ';';=0A=
    if (cookie.indexOf("=3D") =3D=3D 0) cookie =3D =
cookie.substring(cookie.indexOf(";")+1,cookie.length);=0A=
  }=0A=
  else var cookie =3D "" ;=0A=
  return cookie ;=0A=
}=0A=
=0A=
/**=0A=
 * crk added 17 July 2002=0A=
 * methods for 5 parameter placeAd call=0A=
 * placeAd(platform,node,tile,kw,assertive)=0A=
 **/=0A=
=0A=
  // get ancestor from node=0A=
  function getAdAncestor(node)=0A=
  {=0A=
	var end =3D node.indexOf("/") ;=0A=
	if ( end =3D=3D -1 )=0A=
	  return node ;=0A=
    else=0A=
	{=0A=
	  var adAncestor =3D node.substring(0,end) ;	=0A=
      return adAncestor ;=0A=
	}=0A=
  }=0A=
=0A=
  // get adSite=0A=
  function getAdSite(ancestor)=0A=
  {=0A=
    if ( isNewsAncestor(ancestor) )=0A=
      return "wpni.news" ;=0A=
    else=0A=
      return "wpni."+ancestor ;=0A=
  }=0A=
  =0A=
  // get ad node=0A=
  function getAdNode(node,ancestor)=0A=
  {=0A=
    if ( isNewsAncestor(ancestor) )=0A=
	  return node ;=0A=
	else=0A=
	{=0A=
	  var start =3D node.indexOf("/")+1 ;=0A=
	  if (start)=0A=
        return node.substring(start) ;=0A=
	  else=0A=
	    return "" ;=0A=
	}=0A=
  }=0A=
=0A=
  // get ad node=0A=
  function getAdZone(node)=0A=
  {=0A=
    var ary =3D new Array() ;=0A=
	if ( node.indexOf("/") !=3D -1 )=0A=
	  ary =3D node.split("/") ;=0A=
	else=0A=
	  ary[0] =3D node ;=0A=
=0A=
	if ( ary.length <=3D 2 )=0A=
	  return node ;=0A=
	else=0A=
	{=0A=
	  var zone =3D '' ;=0A=
	  for(var i=3D0; i<2; i++)=0A=
	  {=0A=
	    zone +=3D ary[i] ;=0A=
		if (i=3D=3D0) zone +=3D "/" ;=0A=
	  }=0A=
	  return zone ;=0A=
	}=0A=
  }=0A=
  =0A=
  function getAdDir(node)=0A=
  {=0A=
    var page =3D "" ;=0A=
    var ary =3D new Array() ;=0A=
	if ( node.indexOf("/") !=3D -1 )=0A=
	  ary =3D node.split("/") ;=0A=
	else=0A=
	  ary[0] =3D node ;=0A=
=0A=
	var dir =3D '' ;=0A=
	for(var i=3D0; i<ary.length; i++)=0A=
	{=0A=
	  // parse out article string if present in ancestor=0A=
	  if ( i =3D=3D 0 &&=0A=
	       ary[i].indexOf("article") !=3D -1 &&=0A=
		   ary[i].indexOf("article") =3D=3D ary[i].length - "article".length &&=0A=
		   ary[i] !=3D "article" )=0A=
	  {=0A=
	    ary[i] =3D ary[i].substring(0,ary[i].indexOf("article")) ;=0A=
		page =3D "page=3Darticle;" ;=0A=
	  }=0A=
	  dir +=3D "dir=3D"+ary[i]+";" ;=0A=
	}=0A=
	return "dir=3D"+ary[ary.length-1]+"node;"+dir+page ;=0A=
  }=0A=
=0A=
  // check if adSite should be wpni.news=0A=
  function isNewsAncestor(ancestor)=0A=
  {=0A=
    if ( newsAncestorAsString !=3D null &&=0A=
	     newsAncestorAsString !=3D ""   &&=0A=
		 newsAncestorAsString.indexOf(","+ancestor+",") !=3D -1=0A=
	   )=0A=
      return true  ;=0A=
    else=0A=
	  return false ;=0A=
  }=0A=
  =0A=
  function cleanNode(node)=0A=
  {=0A=
    if ( node.charAt(node.length-1) =3D=3D "/" )=0A=
	  return node.substring(0,node.length-1) ;=0A=
	else=0A=
	  return node ;=0A=
  }=0A=
=0A=
// end crk added 17 July 2002=0A=

------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.washingtonpost.com/wp-srv/ad/call_tile.js

tile =3D 'ptile';=0A=
=0A=
=0A=
=0A=
=0A=

------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: http://media.washingtonpost.com/wp-srv/ad/show_doubleclick_ad.js

show_doubleclick_ad = true ;
------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: http://media.washingtonpost.com/wp-srv/javascript/resize.js

if ( !document.getElementById && !document.all )
{
  if(!window.saveInnerWidth)
  {
    window.onresize = resize ;
    window.saveInnerWidth = window.innerWidth ;
    window.saveInnerHeight = window.innerHeight ;
  }
}

function resize()
{
  if (saveInnerWidth < window.innerWidth ||
      saveInnerWidth > window.innerWidth ||
      saveInnerHeight > window.innerHeight ||
      saveInnerHeight < window.innerHeight )
  {
    window.history.go(0) ;
  }
}
------=_NextPart_000_003B_01C3B06F.0E1D1030
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.washingtonpost.com/wp-srv/javascript/placeSiteMetrix.js

function placeSiteMetrix()
{
  if ( typeof firstSiteMetrixCall =3D=3D "undefined" || =
firstSiteMetrixCall =3D=3D true )
  {
    var output =3D '' ;
    // <! Copyright IBM Corporation, 2001, 2002 !>
    output +=3D '<s\cript language=3D"JavaScript1.1">var =
SA_ID=3D"wpost;wpost";</s\cript>' ;
    output +=3D '<s\cript language=3D"JavaScript1.1" =
src=3D"'+location.protocol+'//stats.surfaid.ihost.com/crc/sacdcwp.js"></s=
\cript>' ;
    output +=3D '<noscript> <img =
src=3D"'+location.protocol+'//stats.surfaid.ihost.com/crc/images/uc.GIF?1=
.13&wpost&wpost&noscript" height=3D"1" width=3D"1" alt=3D"" =
border=3D"0"></noscript>' ;
    // IBM Copyright ends
	if ( location.protocol !=3D "file:" )
      document.write(output) ;

    firstSiteMetrixCall =3D false ;
  }
}
------=_NextPart_000_003B_01C3B06F.0E1D1030--
