From: Subject: washingtonpost.com: Pentagon Deleted Rumsfeld Comment Date: Thu, 22 Apr 2004 05:04:44 -0700 MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_0000_01C42827.53EB9480"; type="text/html" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C42827.53EB9480 Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.washingtonpost.com/ac2/wp-dyn/A28729-2004Apr20?language=printer washingtonpost.com: Pentagon Deleted Rumsfeld = Comment washingtonpost.com

Pentagon Deleted Rumsfeld Comment =
Remark to=20 Saudi About War's Certainty Is Not in Internet Transcript of Interview=20

By Mike Allen
Washington Post Staff = Writer
Wednesday,=20 April 21, 2004; Page A01

The Pentagon deleted from a public transcript a statement Defense = Secretary=20 Donald H. Rumsfeld made to author Bob Woodward suggesting that the=20 administration gave Saudi Arabia a two-month heads-up that President = Bush had=20 decided to invade Iraq.

At issue was a passage in Woodward's "Plan of Attack," an account = published=20 this week of Bush's decision making about the war, quoting Rumsfeld as = telling=20 Prince Bandar bin Sultan, the Saudi ambassador to Washington, in January = 2003=20 that he could "take that to the bank" that the invasion would = happen.

The comment came in a key moment in the run-up to the war, when = Rumsfeld and=20 other officials were briefing Bandar on a military plan to attack and = invade=20 Iraq, and pointing to a top-secret map that showed how the war plan = would=20 unfold. The book reports that the meeting with Bandar was held on Jan. = 11, 2003,=20 in Vice President Cheney's West Wing office. Gen. Richard B. Myers, = chairman of=20 the Joint Chiefs of Staff, also attended.

Pentagon officials omitted the discussion of the meeting from a = transcript of=20 the Woodward interview that they posted on the Defense Department's Web = site=20 Monday. Rumsfeld told reporters at a briefing yesterday that he may have = used=20 the phrase "take that to the bank" but that no final decision had been = made to=20 go to war.

"To my knowledge, a decision had not been taken by the president to = go to war=20 at that meeting," Rumsfeld said. "There was certainly nothing I said = that should=20 have suggested that, and any suggestion to the contrary would not be=20 accurate."

Woodward supplied his own transcript showing that Rumsfeld told him = on Oct.=20 23, 2003: "I remember meeting with the vice president and I think Dick = Myers and=20 I met with a foreign dignitary at one point and looked him in the eye = and said=20 you can count on this. In other words, at some point we had had enough = of a=20 signal from the president that we were able to look a foreign dignitary = in the=20 eye and say you can take that to the bank this is going to happen."

The transcript made it clear that the foreign dignitary Woodward was=20 discussing was Bandar, although Rumsfeld would not say that. "We're = going to=20 have to clean some of this up in the transcript," Rumsfeld said in the = omitted=20 passage. "We'll give you a -- I mean you just said Bandar and I didn't = agree=20 with that so we're going to have to -- I don't want to say who it is but = you are=20 going to have to go through that and find a way to clean up my language=20 too."

All told, the Pentagon transcript omits a series of eight questions = and=20 answers, some of them just a few words each. Yesterday Rumsfeld = described the=20 deleted passages as "some banter."

Larry DiRita, the Pentagon's chief spokesman, said the deletion was = an honest=20 disagreement and defense officials were reviewing the passage to = determine=20 whether to restore it to the published version.

"I had discussions with the author about passages that would be = excluded from=20 the transcript by mutual agreement, and this passage was one of those = sections,"=20 he said. "It was excluded specifically because the secretary was not in = a=20 position to validate or confirm the details that the author was = raising."

Woodward said: "As the transcript shows, it was not off the record. I = was=20 surprised that it was deleted because it obviously dealt with a critical = issue=20 and was important corroborating information for the book. I asked DiRita = to=20 restore it on the Pentagon Web site."

Rumsfeld's comments came on a day when fallout from the book's many=20 disclosures continued to dominate conversations throughout Washington. = Rumsfeld,=20 who gave Woodward two lengthy interviews after Bush asked his Cabinet to = cooperate, was a rare dissenter in an administration that has embraced = the book=20 despite the mixed portrayal it offers of Bush's campaign to unseat = Saddam=20 Hussein.

Stephanie Cutter, communications director for Democratic presidential = candidate John F. Kerry, said the book "raises serious doubts about the=20 president's planning for war with Iraq, and what his war cabinet knew or = didn't=20 know."

But Bush's closest aides, who typically resist efforts to pull back = the Oval=20 Office curtains, are actively promoting sales of the book.

"We're urging people to buy the book," White House communications = director=20 Dan Bartlett said. "What this book does is show a president who was = asking the=20 right questions and showing prudence as well as resolve during very = difficult=20 times. This book undermines a lot of the critics' charges."

An official involved in the negotiations said the administration = cooperated=20 so completely that Bush asked Cheney to grant Woodward an interview, = which=20 Cheney did, although he is not named as a source. Woodward writes in the = book=20 that information came from "more than 75 key people directly involved in = the=20 events," most of whom spoke on the condition that they not be = identified.

The Pentagon posted transcripts of both Woodward interviews with = Rumsfeld,=20 and they show that Rumsfeld was more recalcitrant than other = administration=20 figures. He complained about Woodward's questions in a past meeting, = saying that=20 "almost everything you asked me was premised with an assertion that was = either=20 incomplete or wrong." Woodward is quoted as gently reminding Rumsfeld = that the=20 president "wants me to do this."

At Rumsfeld's briefing yesterday, he said that he remembered the = session in=20 Cheney's office with Bandar but that it was not unlike others "we had = with any=20 number of neighboring countries as the buildup towards the -- to support = the=20 diplomacy, the flow of forces was taking place.

"We had the obligation to try to do it in the most cost-effective and = responsible way, and the way that would best fit General [Tommy R.] = Franks's=20 plans, in the event that he did in fact ultimately have to go to war," = Rumsfeld=20 said, referring to the former head of the U.S. Central Command. "That = meant we=20 had to talk to the countries in the region and work out things at ports = or=20 airfields and that type of thing."

After being handed a note later in the briefing, Rumsfeld returned to = the=20 transcript and said that it might omit "some discussion about a totally=20 unrelated topic, and some items that were agreed between us . . . that = were off=20 the record."

"But I can say of certain knowledge that nothing was taken out that = would=20 naysay what I just indicated in my response to the question," Rumsfeld = said.

"No 18-minute gap?" a reporter asked, referring to the notorious = deletion=20 from a Watergate tape.

Amid laughter, Rumsfeld said: "You can take that to the bank."

Mark Malseed contributed to this report.

=A9 2004 The Washington Post Company

------=_NextPart_000_0000_01C42827.53EB9480 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_0000_01C42827.53EB9480 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://127.0.0.1:1028/js.cgi?pcaw&r=1869 NS_ActualWrite=3Ddocument.write; // Popup Blocker --> RanPostamble=3D0; NS_ActualOpen=3Dwindow.open; orig_setTimeout =3D window.setTimeout; function NS_NullWindow(){this.window;} function NS_NewOpen(url,nam,atr){ obj=3Dnew NS_NullWindow(); obj.focus =3D NS_NullWindow; obj.opener =3D this.window; return(obj); } function NS_NullWindow2(){this.window;} function NS_NewOpen2(url,nam,atr){return(new NS_NullWindow2());} function op_stop() { NS_ActualOpen2=3Dwindow.open; = window.open=3DNS_NewOpen2; } function op_start() { window.open=3DNS_ActualOpen2; } function noopen_ST(one,two) { = return(orig_setTimeout("op_stop();"+one+";;op_start();",two)); } function noopen_load() {=20 op_stop(); if(orig_onload) orig_onload(); op_start(); } function noopen_unload() { op_stop(); if(orig_onunload) orig_onunload(); = op_start(); } function postamble() {=0A= =0A= if(!RanPostamble) { RanPostamble=3D1; orig_onload =3D window.onload; orig_onunload =3D window.onunload; window.onunload =3D noopen_unload; window.onload =3D noopen_load; window.open=3DNS_ActualOpen; } } window.setTimeout =3D noopen_ST; window.open=3DNS_NewOpen; document.ignore =3D new Object(); ------=_NextPart_000_0000_01C42827.53EB9480 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; // Define all possible ad positions var BANNER_TOP =3D 1 << 0; var BANNER_BOTTOM =3D 1 << 1; var TOWER_LEFT =3D 1 << 2; var TOWER_RIGHT =3D 1 << 3; var BIGBOX =3D 1 << 4; var BIGBOX_LEFT =3D 1 << 5; var SUPER_BANNER =3D 1 << 6; var SUPER_BANNER_BOTTOM =3D 1 << 7; var GOOGLE_LINKS =3D 1 << 8; var HALFPAGE_LEFT =3D 1 << 9; var TOWER_LEFT_160 =3D 1 << 10 ; var FOURTH_COLUMN_160 =3D 1 << 11 ; // Define all possible ad templates var NEWS_TOWER =3D 0; var NEWS_BIGBOX =3D 1; var BIGFIVE_TOWER =3D 2; var BIGFIVE_BIGBOX =3D 3; var OBIT =3D 4; var NEWS_SUPER_BANNER =3D 5; var BANNER_ONLY =3D 6; var BOX_ONLY =3D 7; var LIVEONLINE_BIGBOX =3D 8; var NEWS_SUPER_BANNER_NOGOOGLE =3D 9; var BOX_ONLY_NOGOOGLE =3D 10;=20 var HALFPAGE_ONLY =3D 11; var TECH =3D 12; var TECH_SUPER_BANNER =3D 13; var BANNER_BIGBOX =3D 14; var POLITICS_BOX_ONLY =3D 15; var BIGFIVE_TOWER_NO =3D 16; var BIGFIVE_BIGBOX_NO =3D 17; var ENLARGE_PHOTO =3D 18; var PRINTER_FRIENDLY =3D 19; var NEWS_TOWER_NO =3D 20; var LIVEONLINE_BIGBOX_NO =3D 21; var HALFPAGE_ONLY_NOGOOGLE =3D 22; var NEWS_SUPER_BANNER_FOURTH =3D 23; var BOX_ONLY_FOURTH =3D 24; var NEWS_BIGBOX_FOURTH =3D 25; var NEWS_SUPER_BANNER_FOURTH_NOGOOGLE =3D 26; var NEWS_BIGBOX_FOURTH_NOGOOGLE =3D 27; var ADMIN_TOWER =3D 28;=20 var ADMIN_BIGBOX =3D 29; var DEFAULT_TEMPLATE =3D NEWS_TOWER; // Allow for IE User to get google links document.layers?GOOGLE=3Dnull:GOOGLE=3DGOOGLE_LINKS; if (typeof commercialNode =3D=3D 'undefined') { commercialNode =3D ''; } // Makes fourth column equal to true if commercial node is equal to = technology if ( (commercialNode.indexOf("technology") !=3D -1) && = (thisNode.indexOf("technology") =3D=3D -1) ) { BIGBOX =3D BIGBOX_LEFT; TOWER_LEFT_160 =3D null; } // Check screen width to see if user is eligible for fourth column = skyscraper (must have a resolution higher than 860 wide, and not use = Netscape if ((screen.width<=3D860) || (document.layers)) {FOURTH_COLUMN=3Dnull;} else{FOURTH_COLUMN=3DFOURTH_COLUMN_160;} // Removes google links for individual nodes. =20 if (thisNode =3D=3D "artsandliving/dating") GOOGLE=3Dnull; //dating = exclusion to be kept forever else if (thisNode =3D=3D "opinion/columns/willgeorge") GOOGLE=3Dnull; // = George Solomon Exception 2/5/04 else if (thisNode =3D=3D "sports/features/crime") GOOGLE=3Dnull; // = BALCO exception 02/13/2004 else if (thisNode =3D=3D "sports/latestap") GOOGLE=3Dnull; //Steroid AP = articles 2/17/04 else if (thisNode =3D=3D "print/sports/inside") GOOGLE=3Dnull; //Steroid = articles 2/27/04 // Removes google links for individual articles. =20 articleUrl =3D document.location.href; if (articleUrl.indexOf('A37827-2004Feb12') !=3D -1) GOOGLE=3Dnull; // = Feb. 13, 2004 else if (articleUrl.indexOf('A39274-2004Feb13') !=3D -1) GOOGLE=3Dnull; = // Feb. 13, 2004 else if (articleUrl.indexOf('A38191-2004Feb12') !=3D -1) GOOGLE=3Dnull; = // Feb. 13, 2004 else if (articleUrl.indexOf('A37551-2004Feb12') !=3D -1) GOOGLE=3Dnull; = // Feb. 13, 2004 else if (articleUrl.indexOf('A36962-2004Feb12') !=3D -1) GOOGLE=3Dnull; = // Feb. 13, 2004 else if (articleUrl.indexOf('A10915-2004Feb26') !=3D -1) GOOGLE=3Dnull; = // Feb. 26, 2004 else if (articleUrl.indexOf('A18014-2004Feb29') !=3D -1) GOOGLE=3Dnull; = // Mar. 1, 2004 else if (articleUrl.indexOf('A41783-2004Mar8') !=3D -1) GOOGLE=3Dnull; = // Mar. 8, 2004 else if (articleUrl.indexOf('A41780-2004Mar8') !=3D -1) GOOGLE=3Dnull; = // Mar. 8, 2004 // Define contents of ad templates var templateConfigs =3D new Array(); templateConfigs[ NEWS_TOWER ] =3D SUPER_BANNER + TOWER_LEFT_160 + = GOOGLE; templateConfigs[ NEWS_BIGBOX ] =3D SUPER_BANNER + SUPER_BANNER_BOTTOM = + BIGBOX_LEFT + GOOGLE; templateConfigs[ BIGFIVE_TOWER ] =3D SUPER_BANNER + TOWER_LEFT_160 + = SUPER_BANNER_BOTTOM + GOOGLE; templateConfigs[ BIGFIVE_BIGBOX ] =3D SUPER_BANNER + SUPER_BANNER_BOTTOM = + BIGBOX_LEFT + GOOGLE; templateConfigs[ BIGFIVE_TOWER_NO ] =3D SUPER_BANNER + TOWER_LEFT_160 + = SUPER_BANNER_BOTTOM; templateConfigs[ BIGFIVE_BIGBOX_NO ] =3D SUPER_BANNER + = SUPER_BANNER_BOTTOM + BIGBOX_LEFT; templateConfigs[ OBIT ] =3D 0; templateConfigs[ NEWS_SUPER_BANNER ] =3D SUPER_BANNER + TOWER_LEFT_160 + = SUPER_BANNER_BOTTOM + GOOGLE; templateConfigs[ BANNER_ONLY ] =3D SUPER_BANNER_BOTTOM + GOOGLE; templateConfigs[ BOX_ONLY ] =3D BIGBOX_LEFT + GOOGLE; templateConfigs[ LIVEONLINE_BIGBOX ] =3D SUPER_BANNER + BIGBOX_LEFT + = GOOGLE; templateConfigs[ NEWS_SUPER_BANNER_NOGOOGLE ] =3D SUPER_BANNER + = TOWER_LEFT_160 + SUPER_BANNER_BOTTOM; templateConfigs[ BOX_ONLY_NOGOOGLE ] =3D BIGBOX_LEFT ; templateConfigs[ HALFPAGE_ONLY ] =3D HALFPAGE_LEFT + GOOGLE ; templateConfigs[ HALFPAGE_ONLY_NOGOOGLE ] =3D HALFPAGE_LEFT; templateConfigs[ TECH ] =3D SUPER_BANNER + TOWER_LEFT_160 + = SUPER_BANNER_BOTTOM + BIGBOX + GOOGLE; templateConfigs[ TECH_SUPER_BANNER ] =3D SUPER_BANNER + TOWER_LEFT_160 + = SUPER_BANNER_BOTTOM + BIGBOX + GOOGLE; templateConfigs[ BANNER_BIGBOX ] =3D SUPER_BANNER + BIGBOX + GOOGLE; templateConfigs[ POLITICS_BOX_ONLY ] =3D BIGBOX_LEFT + BANNER_BOTTOM + = GOOGLE; templateConfigs[ ENLARGE_PHOTO ] =3D TOWER_LEFT_160; templateConfigs[ PRINTER_FRIENDLY ] =3D TOWER_LEFT_160 + GOOGLE; templateConfigs[ NEWS_TOWER_NO ] =3D SUPER_BANNER + TOWER_LEFT_160; templateConfigs[ LIVEONLINE_BIGBOX_NO ] =3D SUPER_BANNER + = BIGBOX_LEFT; templateConfigs[ NEWS_SUPER_BANNER_FOURTH ] =3D SUPER_BANNER + = TOWER_LEFT_160 + SUPER_BANNER_BOTTOM + GOOGLE + FOURTH_COLUMN; templateConfigs[ BOX_ONLY_FOURTH ] =3D BIGBOX_LEFT + FOURTH_COLUMN + = GOOGLE; templateConfigs[ NEWS_BIGBOX_FOURTH ] =3D SUPER_BANNER + = SUPER_BANNER_BOTTOM + BIGBOX_LEFT + FOURTH_COLUMN + GOOGLE; templateConfigs[ NEWS_SUPER_BANNER_FOURTH_NOGOOGLE ] =3D SUPER_BANNER + = TOWER_LEFT_160 + SUPER_BANNER_BOTTOM + FOURTH_COLUMN; templateConfigs[ NEWS_BIGBOX_FOURTH_NOGOOGLE ] =3D SUPER_BANNER + = SUPER_BANNER_BOTTOM + BIGBOX_LEFT + FOURTH_COLUMN; templateConfigs[ ADMIN_TOWER ] =3D SUPER_BANNER + SUPER_BANNER_BOTTOM + = TOWER_LEFT_160 + GOOGLE; templateConfigs[ ADMIN_BIGBOX ] =3D SUPER_BANNER + SUPER_BANNER_BOTTOM = + BIGBOX_LEFT + GOOGLE; // Make node-to-template assignments // 120x600 Tower Ads var nodeConfigs =3D new AdConfigurations(); nodeConfigs.addConfiguration('nation/nationalsecurity/abroad/iraq') .addTemplateAssignment(new TemplateAssignment(BANNER_ONLY,1)) nodeConfigs.addConfiguration('metro/obituaries') .addTemplateAssignment(new TemplateAssignment(OBIT,1)) nodeConfigs.addConfiguration('nation') .addTemplateAssignment(new TemplateAssignment(HALFPAGE_ONLY,.03)) .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.25)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.72)) nodeConfigs.addConfiguration('jobs') .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.5)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.5)) nodeConfigs.addConfiguration('world') .addTemplateAssignment(new TemplateAssignment(HALFPAGE_ONLY,.03)) .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.22)) .addTemplateAssignment(new TemplateAssignment(BOX_ONLY,.75)) nodeConfigs.addConfiguration('metro') .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.2)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.8)) nodeConfigs.addConfiguration('sports') .addTemplateAssignment(new TemplateAssignment(HALFPAGE_ONLY,.03)) .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.35)) .addTemplateAssignment(new TemplateAssignment(BOX_ONLY,.62)) nodeConfigs.addConfiguration('business') .addTemplateAssignment(new TemplateAssignment(HALFPAGE_ONLY,.05)) .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.35)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.6)) nodeConfigs.addConfiguration('food') .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.2)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.8)) nodeConfigs.addConfiguration('style') .addTemplateAssignment(new TemplateAssignment(HALFPAGE_ONLY,.02)) .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.3)) .addTemplateAssignment(new TemplateAssignment(BOX_ONLY,.68)) nodeConfigs.addConfiguration('travel') .addTemplateAssignment(new TemplateAssignment(BIGFIVE_TOWER_NO,1)) nodeConfigs.addConfiguration('health') .addTemplateAssignment(new TemplateAssignment(BIGFIVE_TOWER,.3)) .addTemplateAssignment(new TemplateAssignment(BIGFIVE_BIGBOX,.7)) nodeConfigs.addConfiguration('home') .addTemplateAssignment(new TemplateAssignment(BIGFIVE_TOWER,.45)) .addTemplateAssignment(new TemplateAssignment(BIGFIVE_BIGBOX,.55)) nodeConfigs.addConfiguration('education') .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.65)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.35)) nodeConfigs.addConfiguration('world/columns/sanchezmarcela') .addTemplateAssignment(new = TemplateAssignment(NEWS_SUPER_BANNER_NOGOOGLE,.4)) .addTemplateAssignment(new TemplateAssignment(BOX_ONLY_NOGOOGLE,.6)) nodeConfigs.addConfiguration('liveonline') .addTemplateAssignment(new TemplateAssignment(NEWS_TOWER,.5)) .addTemplateAssignment(new TemplateAssignment(LIVEONLINE_BIGBOX,.5)) nodeConfigs.addConfiguration('realestate') .addTemplateAssignment(new TemplateAssignment(NEWS_TOWER,1)) nodeConfigs.addConfiguration('technology') .addTemplateAssignment(new TemplateAssignment(TECH_SUPER_BANNER,1)) nodeConfigs.addConfiguration('politics') .addTemplateAssignment(new TemplateAssignment(HALFPAGE_ONLY,.05)) .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.22)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.73)) nodeConfigs.addConfiguration('weather') .addTemplateAssignment(new TemplateAssignment(NEWS_TOWER,.6)) .addTemplateAssignment(new TemplateAssignment(LIVEONLINE_BIGBOX,.4)) nodeConfigs.addConfiguration('entertainment') .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.15)) .addTemplateAssignment(new TemplateAssignment(NEWS_TOWER,.35)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.5)) nodeConfigs.addConfiguration('artsandliving') .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.1)) .addTemplateAssignment(new TemplateAssignment(NEWS_TOWER,.35)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.55)) nodeConfigs.addConfiguration('opinion') .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.3)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.7)) nodeConfigs.addConfiguration('mostemailed') .addTemplateAssignment(new TemplateAssignment(NEWS_SUPER_BANNER,.5)) .addTemplateAssignment(new TemplateAssignment(NEWS_BIGBOX,.5)) nodeConfigs.addConfiguration('admin/keycontent') .addTemplateAssignment(new TemplateAssignment(ADMIN_BIGBOX,1)) nodeConfigs.addConfiguration('visitorsguide') .addTemplateAssignment(new TemplateAssignment(NEWS_TOWER,1)) // For this node, select a template if ( (typeof commercialNode !=3D 'undefined') && (commercialNode !=3D = "") ) { if (thisNode.indexOf("technology") !=3D -1) { adTemplate =3D nodeConfigs.getTemplate( thisNode ) } else { adTemplate =3D nodeConfigs.getTemplate( commercialNode ); } } else { adTemplate =3D nodeConfigs.getTemplate( thisNode ); } if (document.location.href.indexOf("debugAdCode") !=3D -1) = document.writeln("Ad Template: " + adTemplate); // Define objects // TemplateAssignment associates a template with a frequency ( 0 <=3D = frq <=3D 1 ) function TemplateAssignment( tmpl, frq ) { this.template =3D tmpl; this.frequency =3D ( ( frq >=3D 0 ) && ( frq <=3D 1 ) ) ? frq : 0 ; } // NodeTemplateAssignment collects TemplateAssignment objects for a = specific node function NodeTemplateAssignment ( node ) { this.node =3D node; this.templates =3D new Array(); this.templateCount =3D 0; =20 this.addTemplateAssignment =3D _addAdTemplateAssignment; this.selectTemplate =3D _adSelectTemplate; } // AdConfigurations collects NodeTemplateAssignments for the site function AdConfigurations () { this.configs =3D new Array(); this.length =3D 0; =20 this.addConfiguration =3D _addAdConfiguration; this.getTemplate =3D _adGetTemplate; } function _adSelectTemplate() { var base =3D 0; var rNum =3D Math.random(); var rTemplate =3D NEWS_TOWER; =20 for (var count =3D 0; count < this.templates.length; count++) { if ( rNum < this.templates[count].frequency + base )=20 { rTemplate =3D this.templates[count].template; break; //return this.templates[count].template; } else { base +=3D this.templates[count].frequency; } } return rTemplate; } function _adGetTemplate ( node ) { adTemplate =3D DEFAULT_TEMPLATE; var base =3D 0; var bestMatch =3D 0; for ( var count =3D 0; count < this.length; count++ ) { if ( this.configs[count].node =3D=3D node ) { adTemplate =3D this.configs[count].selectTemplate(); break; } else if (( node.indexOf(this.configs[count].node) =3D=3D 0 ) && ( = this.configs[count].node.length > bestMatch )) { adTemplate =3D this.configs[count].selectTemplate(); bestMatch =3D this.configs[count].node.length; } } return templateConfigs[adTemplate]; } function _addAdTemplateAssignment( templateAssignment ) { this.templates[this.templateCount++] =3D templateAssignment; return this; } function _addAdConfiguration ( n ) { this.configs[this.length++] =3D new NodeTemplateAssignment (n); return this.configs[this.length - 1]; } ------=_NextPart_000_0000_01C42827.53EB9480 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.washingtonpost.com/wp-srv/popjs/popupCampaignClasses.js /*=0A= * Popup Campaign Manager provides the objects and methods needed to = control multiple popup campaigns=0A= * It is controlled by popupCampaigns.js; by itself it does nothing that = you'll see on a page.=0A= * It needs one preset variable: thisNode must be set to the node to = which the page belongs before importing this javascript source.=0A= * TO CHANGE THE DOUBLECLICK CAP OR DOUBLECLICK TIMEFRAME, EDIT = DClickCap and DClickTimeFrame IN THIS FILE=0A= */=0A= =0A= if ( typeof thisNode =3D=3D 'undefined' ) thisNode =3D 'news';=0A= =0A= // CONSTANTS=0A= // REGISTERED|NOT_REGISTERED identify whether the user is defined (based = on the WPATC cookie).=0A= // To define both user groups, use addition (REGISTERED + NOT_REGISTERED = =3D=3D all users)=0A= var REGISTERED =3D 1;=0A= var NOT_REGISTERED =3D 2;=0A= =0A= // ARTICLE|FRONT|IMPLICIT|EXPLICIT define the types of pages to which a = mapping applies.=0A= // To combine several page types, use addition =0A= // (FRONT + ARTICLE + IMPLICIT =3D=3D all section front and articles in = this node and all its children)=0A= var ARTICLE =3D 1;=0A= var FRONT =3D 2;=0A= var IMPLICIT =3D 4;=0A= var EXPLICIT =3D 0;=0A= =0A= // These constants make the time conversion to milliseconds easier. Take = a number and multiply it by the appropriate constant=0A= var pcm_DAYS =3D 24 * 60 * 60 * 1000;=0A= var pcm_HOURS =3D 60 * 60 * 1000;=0A= var pcm_MINUTES =3D 60 * 1000;=0A= var TWELVE_HOURS =3D 12 * pcm_HOURS;=0A= var ONE_DAY =3D 1 * pcm_DAYS;=0A= var ONE_WEEK =3D 7 * pcm_DAYS;=0A= var ONE_MONTH =3D 30 * pcm_DAYS;=0A= var pcm_now =3D new Date();=0A= =0A= // The following constants are for internal use=0A= var NA =3D '';=0A= var SESSION =3D 0;=0A= var CAMPAIGN_MANAGER =3D 1;=0A= var INTENSITY =3D 2;=0A= var SUBSCRIBED =3D 3;=0A= var DCLICK =3D 4;=0A= var DCLICK_SESSION_CAP =3D 5; // new code for v4=0A= var POPUP_WIDTH =3D 300;=0A= var POPUP_HEIGHT =3D 400;=0A= =0A= var COOKIE_NAME =3D new Array();=0A= var COOKIE_VALUE =3D new Array();=0A= =0A= COOKIE_NAME[SESSION] =3D 'wpni_session';=0A= COOKIE_NAME[CAMPAIGN_MANAGER] =3D 'wpni_campaignmanager';=0A= COOKIE_NAME[INTENSITY] =3D 'wpni_campaignintensity';=0A= COOKIE_NAME[SUBSCRIBED] =3D 'WPATC';=0A= COOKIE_NAME[DCLICK] =3D 'dcCount';=0A= COOKIE_NAME[DCLICK_SESSION_CAP] =3D 'dcSessionLimit'; // new code for v4=0A= =0A= // DClickCap and DClickTimeFrame apply to DoubleClick popup and popunder = campaigns=0A= var DClickCap =3D 5; // Maximum number of DoubleClick popups allowed in = timeframe=0A= var DClickTimeFrame =3D TWELVE_HOURS; // Timeframe applied to DClickCap=0A= var DClickSessionCap =3D 2; // New variable to control popups per session=0A= var DClickMinTimeBetweenPopups =3D 60000;=0A= var FORCED_SESSION_EXPIRATON =3D TWELVE_HOURS; // Must match value in = cookie_code.html=0A= =0A= var popupUrl =3D NA;=0A= var pcm_node =3D thisNode; // thisNode must be defined in the file = calling this js file=0A= var isArticle =3D (location.href.indexOf("/articles/") !=3D -1) ? true : = false ;=0A= var popupHasBeenDelivered =3D false;=0A= var interstitialIsAllowed =3D true;=0A= =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= interstitialIsAllowed =3D false;=0A= } =0A= }=0A= // END GOOGLE LOGIC=0A= =0A= =0A= // Extract cookies that are not campaign specific =0A= for (var count =3D 0; count < COOKIE_NAME.length; count++)=0A= {=0A= var startAt =3D 0;=0A= if ( (startAt =3D document.cookie.indexOf(COOKIE_NAME[count])) !=3D -1)=0A= {=0A= startAt +=3D COOKIE_NAME[count].length + 1;=0A= var endAt =3D (document.cookie.indexOf(";", startAt) =3D=3D -1) ? = document.cookie.length : document.cookie.indexOf(";", startAt);=0A= COOKIE_VALUE[count] =3D document.cookie.substring(startAt, endAt);=0A= }=0A= else=0A= {=0A= COOKIE_VALUE[count] =3D NA;=0A= }=0A= //alert ( COOKIE_NAME[count]+'=3D'+COOKIE_VALUE[count] );=0A= }=0A= =0A= // New logic to prevent back-to-back interstitials=0A= if ( COOKIE_VALUE[DCLICK_SESSION_CAP].indexOf ("X") !=3D -1 )=0A= {=0A= interstitialIsAllowed =3D false; =0A= var newCookie =3D = COOKIE_VALUE[DCLICK_SESSION_CAP].substring(0,COOKIE_VALUE[DCLICK_SESSION_= CAP].length - 1);=0A= document.ignore =3D "dcSessionLimit=3D" + newCookie + = ";path=3D/;domain=3D.washingtonpost.com";=0A= }=0A= =0A= // New logic to allow for internal timing of DCLICK_SESSION_CAP (v5)=0A= //var dclickTimeBetweenPopups =3D new Date();=0A= //dclickTimeBetweenPopups.setTime ( dclickTimeBetweenPopups.getTime() + = DClickMinTimeBetweenPopups );=0A= =0A= if ( COOKIE_VALUE[DCLICK_SESSION_CAP].indexOf ("|") !=3D -1 )=0A= {=0A= dclickSessionExpiration =3D = COOKIE_VALUE[DCLICK_SESSION_CAP].substring(COOKIE_VALUE[DCLICK_SESSION_CA= P].indexOf("|") + 1);=0A= COOKIE_VALUE[DCLICK_SESSION_CAP] =3D = COOKIE_VALUE[DCLICK_SESSION_CAP].substring(0, = COOKIE_VALUE[DCLICK_SESSION_CAP].indexOf("|"));=0A= var currentDate =3D new Date();=0A= var cookieExpiresDate =3D new Date();=0A= cookieExpiresDate.setTime( parseInt(dclickSessionExpiration) );=0A= =0A= var cookieSetDate =3D new Date();=0A= cookieSetDate.setTime( parseInt(dclickSessionExpiration) - = FORCED_SESSION_EXPIRATON );=0A= =0A= // If cookie was written in past 15 mins, don't allow interstitial=0A= if ( currentDate.getTime() - cookieExpiresDate.getTime() < 0 ) // If = the cookie was set to expire in the past 15 minutes=0A= {=0A= if ( currentDate.getTime() - cookieSetDate.getTime() < = DClickMinTimeBetweenPopups )=0A= {=0A= interstitialIsAllowed =3D false;=0A= // alert ("No ad because it's been less than a minute = ("+(currentDate.getTime() - cookieSetDate.getTime())+" < = "+DClickMinTimeBetweenPopups+")" );=0A= }=0A= if ( COOKIE_VALUE[DCLICK_SESSION_CAP] >=3D DClickSessionCap )=0A= {=0A= interstitialIsAllowed =3D false;=0A= }=0A= =0A= //alert ( "Last popup occurred too recently ( "+( = currentDate.getTime() - cookieSetDate.getTime() = )+"<"+DClickMinTimeBetweenPopups+")" );=0A= }=0A= // If cookie is older than 15 mins, expire it=0A= else=0A= {=0A= dclickSessionExpiration =3D new Date();=0A= dclickSessionExpiration.setTime ( dclickSessionExpiration.getTime() = - 100000 );=0A= document.ignore =3D COOKIE_NAME[DCLICK_SESSION_CAP] + = "=3D1;expires=3D"+dclickSessionExpiration.toGMTString()+";path=3D/;domain= =3D.washingtonpost.com"; // new code for v4=0A= //alert ( "Deleting old cookie" );=0A= }=0A= }=0A= =0A= // if ( COOKIE_VALUE[DCLICK_SESSION_CAP] >=3D DClickSessionCap ) = interstitialIsAllowed=3Dfalse; // new code for v4=0A= if ( COOKIE_VALUE[DCLICK] >=3D DClickCap ) interstitialIsAllowed =3D = false;=0A= =0A= // logic to abandon Doubleclick call in War node if = interstitialisAllowed is false=0A= if ((typeof adTemplate !=3D'undefined') && (typeof thisNode !=3D = 'undefined') && (thisNode =3D=3D 'nation/nationalsecurity/abroad/iraq') = && (interstitialIsAllowed =3D=3D false))=0A= {=0A= adTemplate =3D templateConfigs[ OBIT ];=0A= }=0A= =0A= // Extract the campaign-specific cookie=0A= function getCampaignCookie(cn)=0A= {=0A= var c =3D NA;=0A= var temp =3D document.cookie;=0A= while (temp.indexOf(cn + ':') !=3D -1) =0A= temp =3D temp.substring(0, temp.indexOf(cn + ':')) =0A= + temp.substring(temp.indexOf(cn + ':') + cn.length + 1);=0A= if (temp.indexOf(cn) !=3D -1)=0A= {=0A= var startAt =3D temp.indexOf(cn) + cn.length + 1;=0A= var endAt =3D (temp.indexOf(';', startAt) =3D=3D -1) ? temp.length : = temp.indexOf(';', startAt);=0A= c =3D temp.substring(startAt, endAt);=0A= }=0A= return c;=0A= }=0A= =0A= // Try to deliver a campaign from an Array of campaigns (the Array is = the argument to this function)=0A= function deliverCampaign(campaign)=0A= {=0A= //if ( (typeof debugAdCodeJsp !=3D "undefined") && (debugAdCodeJsp) ) = alert(COOKIE_VALUE[DCLICK] + ';' + (popupHasBeenDelivered ? 'true': = 'false')); =0A= // Abort if another popup already has been deliver on this page=0A= if ( popupHasBeenDelivered ) =0A= {=0A= // var expires =3D '';=0A= // var dcCountExpiration =3D new Date();=0A= // dcCountExpiration.setTime(dcCountExpiration.getTime() + = (DClickTimeFrame) );=0A= // if ( ( DClickTimeFrame !=3D SESSION ) && (COOKIE_VALUE[DCLICK] = !=3D NA) )=0A= // expires =3D ';expires=3D' + dcCountExpiration.toGMTString();=0A= // if ( COOKIE_VALUE[DCLICK_SESSION_CAP] !=3D NA ) =0A= // COOKIE_VALUE[DCLICK_SESSION_CAP] =3D parseInt( = COOKIE_VALUE[DCLICK_SESSION_CAP] ) + 1; // new code for v4=0A= // else COOKIE_VALUE[DCLICK_SESSION_CAP] =3D 1; // new code for v4=0A= // if ( COOKIE_VALUE[DCLICK] !=3D NA ) =0A= // COOKIE_VALUE[DCLICK] =3D parseInt( COOKIE_VALUE[DCLICK] ) + 1;=0A= // else COOKIE_VALUE[DCLICK] =3D 1; =0A= //document.ignore =3D COOKIE_NAME[DCLICK_SESSION_CAP] + "=3D" + = COOKIE_VALUE[DCLICK_SESSION_CAP] + "|" + dclickSessionExpiration + = ";path=3D/;domain=3D.washingtonpost.com"; // new code for v4=0A= // document.ignore =3D COOKIE_NAME[DCLICK] + "=3D" + = COOKIE_VALUE[DCLICK] + expires + = ";path=3D/;domain=3D.washingtonpost.com";=0A= return;=0A= }=0A= // Abort if the user has exceeded the session limit (defined in = popupCampaigns.js)=0A= if ( (COOKIE_VALUE[SESSION] !=3D NA) && = (parseInt(COOKIE_VALUE[SESSION]) >=3D popupSessionLimit) )=0A= {=0A= return;=0A= }=0A= =0A= // Abort if the user has exceeded the intensity limit (defined in = popupCampaigns.js)=0A= if ( (COOKIE_VALUE[INTENSITY] !=3D NA) && = (parseInt(COOKIE_VALUE[INTENSITY]) >=3D popupIntensityLimit) )=0A= {=0A= return;=0A= }=0A= =0A= // Extract possible campaigns from the campaign list by passing each = campaign through a bunch of filters=0A= var validCampaign =3D new Array();=0A= var validCampaignCount =3D 0;=0A= =0A= for (var count =3D 0; count < campaign.length; count++)=0A= {=0A= // Filter one: Check the window during which the campaign is valid=0A= if ( (campaign[count].timed =3D=3D false) || ( (pcm_now > = campaign[count].startTime) && ((pcm_now < campaign[count].endTime)) ) )=0A= {=0A= // Check target=0A= if ( ( ( (campaign[count].target & NOT_REGISTERED) =3D=3D = NOT_REGISTERED ) && (COOKIE_VALUE[SUBSCRIBED] =3D=3D NA) )=0A= || ( ( (campaign[count].target & REGISTERED) =3D=3D REGISTERED = ) && (COOKIE_VALUE[SUBSCRIBED] !=3D NA) )=0A= )=0A= {=0A= // Check to see if this campaign has surpassed its delivery limit=0A= var campaignCookie =3D getCampaignCookie(campaign[count].name);=0A= if ( (campaignCookie =3D=3D NA) =0A= || (parseInt(campaignCookie) < campaign[count].limit)=0A= )=0A= {=0A= // Determine if this node is valid for this campaign=0A= if (determinePopupUrl(campaign[count]) !=3D NA)=0A= { =0A= validCampaign[validCampaignCount++] =3D campaign[count];=0A= }=0A= else{=0A= }=0A= }=0A= else{=0A= }=0A= }=0A= else{=0A= }=0A= }=0A= else{=0A= }=0A= }=0A= =0A= // Abort if there are no valid campaigns=0A= if (validCampaignCount =3D=3D 0) return;=0A= =0A= =0A= // Randomize the valid campaigns=0A= if (validCampaignCount > 1)=0A= {=0A= for (var count =3D 0; count < validCampaignCount; count++)=0A= {=0A= var newSpot =3D Math.floor(Math.random() * validCampaignCount);=0A= hold =3D validCampaign[newSpot];=0A= validCampaign[newSpot] =3D validCampaign[count];=0A= validCampaign[count] =3D hold;=0A= }=0A= }=0A= =0A= =0A= =0A= // Iterate through random list of campaigns, trying to deliver one=0A= for (var count =3D 0; count < validCampaignCount; count++)=0A= {=0A= var campaignCookie =3D getCampaignCookie(validCampaign[count].name);=0A= if ((campaignCookie =3D=3D NA) || (parseInt(campaignCookie) < = validCampaign[count].limit))=0A= {=0A= doPopup(validCampaign[count]);=0A= break;=0A= }=0A= }=0A= }=0A= =0A= function doPopup(campaign)=0A= {=0A= // UPDATE COOKIES!=0A= if (COOKIE_VALUE[SESSION] =3D=3D NA) COOKIE_VALUE[SESSION] =3D 1;=0A= else COOKIE_VALUE[SESSION]++;=0A= var campaignCookie =3D getCampaignCookie(campaign.name);=0A= if (campaignCookie =3D=3D NA) campaignCookie =3D 1;=0A= else campaignCookie =3D parseInt(campaignCookie) + 1;=0A= if (COOKIE_VALUE[CAMPAIGN_MANAGER].indexOf(campaign.name + ":") !=3D = -1)=0A= {=0A= var startAt =3D COOKIE_VALUE[CAMPAIGN_MANAGER].indexOf(campaign.name = + ":") + campaign.name.length + 1;=0A= var endAt =3D (COOKIE_VALUE[CAMPAIGN_MANAGER].indexOf("^", startAt) = =3D=3D -1) ? COOKIE_VALUE[CAMPAIGN_MANAGER].length : = COOKIE_VALUE[CAMPAIGN_MANAGER].indexOf("^", startAt);=0A= var temp =3D = parseInt(COOKIE_VALUE[CAMPAIGN_MANAGER].substring(startAt, endAt)) + 1;=0A= COOKIE_VALUE[CAMPAIGN_MANAGER] =3D = COOKIE_VALUE[CAMPAIGN_MANAGER].substring(0,startAt) =0A= + temp=0A= + = COOKIE_VALUE[CAMPAIGN_MANAGER].substring(endAt);=0A= }=0A= else=0A= {=0A= COOKIE_VALUE[CAMPAIGN_MANAGER] +=3D campaign.name + ":1^";=0A= }=0A= if (COOKIE_VALUE[INTENSITY] =3D=3D NA) COOKIE_VALUE[INTENSITY] =3D 1;=0A= else COOKIE_VALUE[INTENSITY]++;=0A= =0A= // Determine expiration times for different cookies=0A= var campaignExpiration =3D new Date();=0A= var managerExpiration =3D new Date();=0A= var intensityExpiration =3D new Date();=0A= campaignExpiration.setTime(campaignExpiration.getTime() + = (campaign.frequency));=0A= managerExpiration.setTime(managerExpiration.getTime() + (365 * = pcm_DAYS) );=0A= intensityExpiration.setTime(intensityExpiration.getTime() + (7 * = pcm_DAYS) );=0A= =0A= // Write cookies to browser=0A= document.ignore =3D COOKIE_NAME[SESSION] + "=3D" + = COOKIE_VALUE[SESSION] + ";path=3D/";=0A= document.ignore =3D campaign.name + "=3D" + campaignCookie + = ";expires=3D" + campaignExpiration.toGMTString() + ";path=3D/";=0A= document.ignore =3D COOKIE_NAME[CAMPAIGN_MANAGER] + "=3D" + = COOKIE_VALUE[CAMPAIGN_MANAGER] + ";expires=3D" + = managerExpiration.toGMTString() + ";path=3D/";=0A= document.ignore =3D COOKIE_NAME[INTENSITY] + "=3D" + = COOKIE_VALUE[INTENSITY] + ";expires=3D" + = intensityExpiration.toGMTString() + ";path=3D/";=0A= =0A= if (pcm_now.getSeconds()%campaign.mod =3D=3D 0)=0A= {=0A= =0A= w =3D window.open(determinePopupUrl(campaign), '', 'width=3D' + = campaign.width + ',height=3D' + campaign.height + ',scrollbars=3Dyes');=0A= }=0A= }=0A= =0A= function determinePopupUrl(campaign)=0A= {=0A= var url =3D NA;=0A= for (var count =3D 0; count < campaign.nodeToUrlMapCount; count++)=0A= {=0A= var mapping =3D campaign.nodeToUrlMap[count];=0A= if ( ((mapping.applies & IMPLICIT) =3D=3D IMPLICIT) && = (pcm_node.indexOf(mapping.node) =3D=3D 0) )=0A= {=0A= if ((((mapping.applies & ARTICLE) =3D=3D ARTICLE) && (isArticle)) = ||=0A= (((mapping.applies & FRONT) =3D=3D FRONT) && (!isArticle))=0A= )=0A= {=0A= url =3D mapping.url;=0A= }=0A= }=0A= else if ( ((mapping.applies & EXPLICIT) =3D=3D EXPLICIT) && = (pcm_node =3D=3D mapping.node) )=0A= {=0A= if ((((mapping.applies & ARTICLE) =3D=3D ARTICLE) && (isArticle)) = ||=0A= (((mapping.applies & FRONT) =3D=3D FRONT) && (!isArticle))=0A= )=0A= {=0A= url =3D mapping.url;=0A= break;=0A= }=0A= }=0A= }=0A= return url;=0A= }=0A= =0A= // JAVASCRIPT OBJECTS and definitions of their methods=0A= function Campaign()=0A= {=0A= this.name =3D '';=0A= this.timed =3D false;=0A= this.startTime =3D null;=0A= this.endTime =3D null;=0A= this.nodeToUrlMap =3D new Array();=0A= this.nodeToUrlMapCount =3D 0;=0A= this.target =3D NOT_REGISTERED;=0A= this.limit =3D 1;=0A= this.frequency =3D 7 * pcm_DAYS;=0A= this.width =3D POPUP_WIDTH;=0A= this.height =3D POPUP_HEIGHT;=0A= this.mod =3D 1;=0A= =0A= this.setName =3D pcm_setName;=0A= this.setTime =3D pcm_setTime;=0A= this.setTarget =3D pcm_setTarget;=0A= this.setLimit =3D pcm_setLimit;=0A= this.setFrequency =3D pcm_setFrequency;=0A= this.mapNodeToUrl =3D pcm_mapNodeToUrl;=0A= this.setDimensions =3D pcm_setDimensions;=0A= this.setMod =3D pcm_setMod;=0A= }=0A= =0A= function NodeToUrlMap(n,u,a)=0A= {=0A= this.node =3D n;=0A= this.url =3D u;=0A= this.applies =3D a;=0A= }=0A= =0A= function pcm_setDimensions(x,y)=0A= {=0A= this.width =3D x;=0A= this.height =3D y;=0A= }=0A= =0A= function pcm_mapNodeToUrl(u)=0A= {=0A= this.nodeToUrlMap[this.nodeToUrlMapCount++] =3D u;=0A= }=0A= =0A= function pcm_setName(n)=0A= {=0A= this.name =3D n;=0A= }=0A= =0A= function pcm_setTime(s,e)=0A= {=0A= this.startTime =3D s;=0A= this.endTime =3D e;=0A= this.timed =3D true;=0A= }=0A= =0A= function pcm_setTarget(t)=0A= {=0A= this.target =3D t;=0A= }=0A= =0A= function pcm_setLimit(l)=0A= {=0A= this.limit =3D l;=0A= }=0A= =0A= function pcm_setFrequency(f)=0A= {=0A= this.frequency =3D f;=0A= }=0A= =0A= function pcm_setMod(m)=0A= {=0A= this.mod =3D m;=0A= } =0A= =0A= =0A= point =3D 'poe=3Dno;'=0A= =0A= // Methods added for POE advertising campaign=0A= // Add into popup campaign classes=0A= =0A= function setCookie (name, value, expires, path, domain, secure) {=0A= document.ignore =3D name + "=3D" + escape(value) +=0A= ((expires) ? "; expires=3D" + expires : "") +=0A= ((path) ? "; path=3D" + path : "") +=0A= ((domain) ? "; domain=3D" + domain : "") +=0A= ((secure) ? "; secure" : "");=0A= }=0A= =0A= function getCookie(name) {=0A= var cookie =3D " " + document.cookie;=0A= var search =3D " " + name + "=3D";=0A= var setStr =3D null;=0A= var offset =3D 0;=0A= var end =3D 0;=0A= if (cookie.length > 0) {=0A= offset =3D cookie.indexOf(search);=0A= if (offset !=3D -1) {=0A= offset +=3D search.length;=0A= end =3D cookie.indexOf(";", offset)=0A= if (end =3D=3D -1) {=0A= end =3D cookie.length;=0A= }=0A= setStr =3D unescape(cookie.substring(offset, end));=0A= }=0A= }=0A= return(setStr);=0A= }=0A= =0A= function createTime() {=0A= var cDate =3D new Date();=0A= var cMil =3D cDate.getTime();=0A= var e =3D cMil % (1000 * 60 * 60 * 24);=0A= var r =3D (1000 * 60 * 60 * 24) - e;=0A= var nr =3D 2 * 24 * 60 * 60 * 1000;=0A= return(nr);=0A= }=0A= =0A= var wpniPOE =3D new Date();=0A= var interval =3D 0;=0A= =0A= var wpniWeek =3D wpniPOE.getTime() + createTime();=0A= wpniPOE.setTime(wpniWeek);=0A= =0A= point_of_entry =3D "Hidden-Referrer".toLowerCase();=0A= =0A= if (getCookie("wp_poe") =3D=3D null || getCookie("wp_poe") =3D=3D = "false") {=0A= point =3D 'poe=3Dyes;';=0A= setCookie("wp_poe","true",wpniPOE.toGMTString(),"/",".washingtonpost.com"= ,'')=0A= =0A= // All pages that are deemed to be "point of entry" are forced to have a = certain configuration for advertising leave behind purposes. - sja=0A= /*=0A= if (typeof commercialNode !=3D 'undefined') {=0A= if (thisNode.indexOf("technology") =3D=3D -1) {=0A= var adTemplate =3D templateConfigs[NEWS_SUPER_BANNER];=0A= }=0A= else adTemplate =3D templateConfigs[TECH_SUPER_BANNER];=0A= }=0A= */=0A= }=0A= =0A= // Logic added to prevent intrusive ad from appearing before or = immediately after the registration prompt=0A= // Check to see if registration cookie exists.=0A= if (getCookie("WPATC") !=3D null) {=0A= var array =3D getCookie("WPATC").split(":");=0A= var temp_hash =3D new Array();=0A= for (i=3D0; i no layer */ /* layer =3D [1-6] =3D=3D> use layer, layer should match tile */ /* w =3D width, h =3D height */ function placeAd(layer,node,kw,pos,dir,w,h,tile) { if (show_doubleclick_ad) { =20 // 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")) if ( firstTimeCalled ) { var axel =3D Math.random()+""; var ord =3D axel * 1000000000000000000; adUniqueNumber =3D ord+'?' ; } =20 if (node.indexOf("/") =3D=3D -1) node +=3D "/" ; // only pass in abbreviated argument list: layer [0,1,2] and node = (tile and pos are set based on layer) // usage: placeAd(layer,node); example: = placeAd(1,'wpni.entertain/music'); if ( arguments.length =3D=3D 2 ) { adArgs =3D 2 ; platform =3D 'STATIC' ; layer =3D arguments[0] ; if (layer =3D=3D 0) { tile =3D 1 } else { tile =3D layer } node =3D arguments[1] ; pos =3D setPosition(tile); w =3D setWidth(tile); h =3D = setHeight(tile); kw =3D '';dir=3D''; dir=3DgetDir(node); node=3DmkNode(node); } =20 // only pass in abbreviated argument list: layer, node, and tile (pos = is set based on tile) // this is to be used when layer is 0, but you still need to set = tile=3D1 and tile=3D2 // usage: placeAd(layer,node,tile); example: = placeAd(0,'wpni.entertain/music',1); else if ( arguments.length =3D=3D 3 ) { jobsUrl =3D document.location.href; platform =3D 'STATIC' ; layer =3D arguments[0] ; node =3D arguments[1] ; tile =3D arguments [2] ; pos =3D setPosition(tile); w =3D setWidth(tile); h =3D = setHeight(tile); // sja 3/10/04 // need to override kw on jobs page. // campaign ends 12/31/04 topjob =3D (jobsUrl.indexOf("topjob") !=3D -1)?true:false; if (jobsUrl.indexOf("jobs/JS_JobSearchResult") !=3D -1) { if (!topjob) { jobsSearchString(); kw =3D "searchresults;" +jString ; } } else if (jobsUrl.indexOf("/military/cover.htm") !=3D -1) = kw=3D'kw=3Dmilitarytransitions;'; else kw =3D ''; =09 dir=3DgetDir(node); node=3DmkNode(node); =09 layer =3D new String(layer) ; // sneaking in call to new place ad if (! layer.match(/[0-9]+/) ) { placeAd(layer,node,tile,'',true) ; return '' ; } } else if ( arguments.length =3D=3D 4 ) { placeAd(arguments[0],arguments[1],arguments[2],arguments[3],'') ; return '' ; } /** * crk added 17 Jul 2002 * methods for 5 parameter placeAd call * placeAd(platform,node,tile,kw,assertive) * @param platform: STATIC, FT, or JSP: not usef for anything yet * @param node: should have the form of a spud node, e.g. = "metro/dc/schools" * @param tile: integer value from 1 to 14 (as of 17 Jul 2002) * @param kw: this text will just be thrown into the ad tag, = unmanipulated, whatever it is * @param assertive: if assertive is true, adSite, adZone, and adDir are = calculated anew, otherwise the previous values are used **/ else if ( arguments.length =3D=3D 5 ) { jobsUrl =3D document.location.href; var na =3D = [arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]] ; adArgs =3D 5 ; platform =3D na[0] ; node =3D cleanNode(na[1]) ; tile =3D na[2] ; =20 topjob =3D (jobsUrl.indexOf("topjob") !=3D -1)?true:false; if (jobsUrl.indexOf("jobs/JS_JobSearchResult") !=3D -1) { if (!topjob) { jobsSearchString(); kw =3D "searchresults;" +jString ; } } else if (jobsUrl.indexOf("/military/cover.htm") !=3D -1) = kw=3D'kw=3Dmilitarytransitions;'; else kw =3D na[3]; assertive =3D na[4] ; pos =3D setPosition(tile); w =3D setWidth(tile); h =3D setHeight(tile); =09 if ( firstTimeCalledNew || assertive ) { adAncestor =3D getAdAncestor(node) ; adSite =3D getAdSite(adAncestor) ; adNoda =3D getAdNode(node,adAncestor) ; adZone =3D getAdZone(adNoda) ; adDir =3D getAdDir(node) ; firstTimeCalledNew =3D false ; if (adZone) adSiteZone =3D adSite + "/" + adZone ; else adSiteZone =3D adSite ; } var alerts =3D false ; if (assertive) { if (alerts) alert("adAncestor: "+adAncestor) ; if (alerts) alert("adSite: "+adSite) ; if (alerts) alert("adNoda: "+adNoda) ; if (alerts) alert("adZone: "+adZone) ; if (alerts) alert("adDir: "+adDir) ; } } // for full parameter list, modernize the positions else if ( arguments.length =3D=3D 8 ) { adArgs =3D 8 ; platform =3D 'STATIC' ; // added logic specifically for liveonline templates // the new 468 tags are 8 arguments... so there's logic for !468 if ( node.substring(5,15) =3D=3D "liveonline" && w !=3D 468) //if (node.substring(5,15) =3D=3D "liveonline") { pos =3D "ad" + pos; tile =3D 11; } else { pos =3D setPosition(tile) ; } } //insert interstitial value in the top banner if ( firstTimeCalled ) { inter_value=3D"dcopt=3Dist;"; =20 =20 // TO DETERMINE IF USER CAME FROM GOOGLE: var docUrl =3D document.location.href; var key =3D docUrl.indexOf('?'); =20 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") ) { inter_value =3D ""; }=20 } // END GOOGLE LOGIC =20 // TO DETERMINE IF THE AD IS BEING CALLED FROM A POPUP //added by mw & = pk- April 7, 2003 if ( window.opener ) { inter_value =3D ""; } =09 if ( document.cookie.indexOf ("dcSessionLimit=3D") !=3D -1 ) { inter_value =3D ""; } else if ( document.cookie.indexOf ("dcCount=3D") !=3D -1 ) { var startAt =3D document.cookie.indexOf( "dcCount=3D" ) + 8; var endAt =3D document.cookie.indexOf( ";", startAt ); if ( endAt =3D=3D -1 ) endAt =3D document.cookie.length; dcCount =3D parseInt ( document.cookie.substring ( startAt, endAt = ) ); if ( dcCount >=3D 5 ) inter_value =3D ""; } if ( location.href.indexOf ( ".washingtonpost.com" ) =3D=3D -1 ) { inter_value =3D ""; } } else inter_value=3D""; if ( adArgs !=3D 5 ) { kw =3D mkKeyword(kw,node) ; dir =3D mkDir(dir) ; var keyvalues =3D = node+dir+static_wpatc+inter_value+"kw=3D"+kw+";pos=3D"+pos+";sz=3D"+w+"x"= +h+";"+point+"tile=3D"+tile+";ord=3D"+adUniqueNumber ; } else if ( adArgs =3D=3D 5 ) { var keyvalues =3D = adSiteZone+";"+static_wpatc+inter_value+adDir+kw+"pos=3D"+pos+";sz=3D"+w+= "x"+h+";"+point+"tile=3D"+tile+";ord=3D"+adUniqueNumber ; } =20 var adCode =3D "" ; adCode +=3D (''); if (debugAdCode) { adCode +=3D debugTextArea(adCode); } =20 document.write(adCode); firstTimeCalled =3D false ; =20 } // end if (show_doubleclick_ad) } // end placeAd function setPosition(tile) { var p =3D "ad"+tile ; // document.write(p) ; return p ; } function setWidth(tile) { var wi ; if ( tile >=3D 1 && tile <=3D 2 ) { wi =3D "468"; } else if ( tile >=3D 3 && tile <=3D 5 ) { wi =3D "120"; } else if ( tile >=3D 6 && tile <=3D 6 ) { wi =3D "105"; } else if ( tile >=3D 8 && tile <=3D 9 ) { wi =3D "300"; } else if ( tile >=3D 10 && tile <=3D 10 ) { wi =3D "125"; } else if ( tile >=3D 11 && tile <=3D 11 ) { wi =3D "120"; } else if ( tile >=3D 12 && tile <=3D 12 ) { wi =3D "130"; } else if ( tile >=3D 13 && tile <=3D 13 ) { wi =3D "728"; } else if ( tile >=3D 14 && tile <=3D 14 ) { wi =3D "120"; } else if ( tile >=3D 15 && tile <=3D 15 ) { wi =3D "446"; } else if ( tile >=3D 16 && tile <=3D 16 ) { wi =3D "300"; } else if ( tile >=3D 17 && tile <=3D 17 ) { wi =3D "720"; } else if ( tile >=3D 18 && tile <=3D 18 ) { wi =3D "120"; } else if ( tile >=3D 19 && tile <=3D 19 ) { wi =3D "760"; } else if ( tile >=3D 20 && tile <=3D 20 ) { wi =3D "120"; } // tower = left else if ( tile >=3D 21 && tile <=3D 21 ) { wi =3D "160"; } else if ( tile >=3D 22 && tile <=3D 22 ) { wi =3D "110"; } else if ( tile >=3D 23 && tile <=3D 23 ) { wi =3D "234"; } else if ( tile >=3D 24 && tile <=3D 24 ) { wi =3D "336"; } // half = page left else if ( tile >=3D 25 && tile <=3D 25 ) { wi =3D "728"; } // super = banner bottom else if ( tile >=3D 26 && tile <=3D 26 ) { wi =3D "300"; } // big box = left else if ( tile >=3D 27 && tile <=3D 27 ) { wi =3D "160"; } // tower = left 160 else if ( tile >=3D 28 && tile <=3D 28 ) { wi =3D "1"; } // 1x1 filler = pos. else if ( tile >=3D 29 && tile <=3D 29 ) { wi =3D "120"; } // 120x60 = VM. // document.write(wi) ; return wi ; } function setHeight(tile) { var he ; if ( tile >=3D 1 && tile <=3D 2 ) { he=3D"60"; } else if ( tile >=3D 3 && tile <=3D 5 ) { he=3D"90"; } else if ( tile >=3D 6 && tile <=3D 6 ) { he=3D"60"; } else if ( tile >=3D 8 && tile <=3D 8 ) { he =3D "360"; } else if ( tile >=3D 9 && tile <=3D 9 ) { he =3D "250"; } else if ( tile >=3D 10 && tile <=3D 10 ) { he =3D "125"; } else if ( tile >=3D 11 && tile <=3D 11 ) { he =3D "600"; } else if ( tile >=3D 12 && tile <=3D 12 ) { he =3D "31"; } else if ( tile >=3D 13 && tile <=3D 13 ) { he =3D "90"; } else if ( tile >=3D 14 && tile <=3D 14 ) { he =3D "240"; } else if ( tile >=3D 15 && tile <=3D 15 ) { he =3D "33"; } else if ( tile >=3D 16 && tile <=3D 16 ) { he =3D "250"; } else if ( tile >=3D 17 && tile <=3D 17 ) { he =3D "60"; } else if ( tile >=3D 18 && tile <=3D 18 ) { he =3D "600"; } else if ( tile >=3D 19 && tile <=3D 19 ) { he =3D "90"; } else if ( tile >=3D 20 && tile <=3D 20 ) { he =3D "600"; } // tower = left 120 else if ( tile >=3D 21 && tile <=3D 21 ) { he =3D "600"; } else if ( tile >=3D 22 && tile <=3D 22 ) { he =3D "90"; } else if ( tile >=3D 23 && tile <=3D 23 ) { he =3D "60"; } else if ( tile >=3D 24 && tile <=3D 24 ) { he =3D "850"; } // half = page left else if ( tile >=3D 25 && tile <=3D 25 ) { he =3D "90"; } // super = banner bottom else if ( tile >=3D 26 && tile <=3D 26 ) { he =3D "250"; } // big box = left else if ( tile >=3D 27 && tile <=3D 27 ) { he =3D "600"; } // tower = left 160 else if ( tile >=3D 28 && tile <=3D 28 ) { he =3D "1"; } // 1x1 filler = position else if ( tile >=3D 29 && tile <=3D 29 ) { he =3D "60"; } // 120x60 // document.write(he) ; return he ; } function mkDir(myDir) { var dirAry =3D myDir.split("/") ; var dirBreakUp =3D 0 ; if ( dirAry.length > dirBreakUp ) { var myDir =3D "" ; for(var i=3D0;i 1) { for (i=3D1;i3) { newNode =3D "" ; for (i=3D0;i<3;i++) { newNode +=3D dirAry[i] ; if (i!=3D2) newNode +=3D "/" ; } } return newNode ; } function debugTextArea(ac) { var re =3D new RegExp("\"","g") ; ac =3D ac.replace(re,"\\\"") ; return '
'; } function getWPATCookie() { if (document.cookie.indexOf("WPATC") !=3D -1) { var start =3D (document.cookie.indexOf("WPATC") + 6); var end =3D (document.cookie.indexOf(";",start)) =3D=3D -1 ? = document.cookie.length : document.cookie.indexOf(";",start); var cookie =3D document.cookie.substring(start,end) + ";"; while (cookie.indexOf(":") !=3D -1) cookie =3D = cookie.substring(0,cookie.indexOf(":"))+";"+cookie.substring(cookie.index= Of(":")+1,cookie.length); if (cookie.lastIndexOf(";") !=3D cookie.length - 1) cookie +=3D ';'; if (cookie.indexOf("=3D") =3D=3D 0) cookie =3D = cookie.substring(cookie.indexOf(";")+1,cookie.length); } else var cookie =3D "" ; return cookie ; } /** * crk added 17 July 2002 * methods for 5 parameter placeAd call * placeAd(platform,node,tile,kw,assertive) **/ // get ancestor from node function getAdAncestor(node) { var end =3D node.indexOf("/") ; if ( end =3D=3D -1 ) return node ; else { var adAncestor =3D node.substring(0,end) ;=09 return adAncestor ; } } // get adSite function getAdSite(ancestor) { if ( isNewsAncestor(ancestor) ) return "wpni.news" ; else return "wpni."+ancestor ; } =20 // get ad node function getAdNode(node,ancestor) { if ( isNewsAncestor(ancestor) ) return node ; else { var start =3D node.indexOf("/")+1 ; if (start) return node.substring(start) ; else return "" ; } } // get ad node function getAdZone(node) { var ary =3D new Array() ; if ( node.indexOf("/") !=3D -1 ) ary =3D node.split("/") ; else ary[0] =3D node ; if ( ary.length <=3D 2 ) return node ; else { var zone =3D '' ; for(var i=3D0; i<2; i++) { zone +=3D ary[i] ; if (i=3D=3D0) zone +=3D "/" ; } return zone ; } } =20 function getAdDir(node) { var page =3D "" ; var ary =3D new Array() ; if ( node.indexOf("/") !=3D -1 ) ary =3D node.split("/") ; else ary[0] =3D node ; var dir =3D '' ; for(var i=3D0; i"); tile =3D ''; if ( (typeof thisNode =3D=3D 'undefined') || (typeof commercialNode = =3D=3D 'undefined') ) { tile +=3D ''; } else { pnode =3D thisNode.split("/")[0]; if (thisNode !=3D commercialNode) { if (commercialNode !=3D '') tile +=3D 'cn=3Dyes;pnode=3D'+pnode+';'; else tile +=3D ''; } else tile +=3D ''; } tile +=3D 'tile'; ------=_NextPart_000_0000_01C42827.53EB9480 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_0000_01C42827.53EB9480 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_0000_01C42827.53EB9480 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 '' ; // output +=3D 'var = SA_ID=3D"wpost;wpost";' ; output +=3D '' ; output +=3D '' ; // IBM Copyright ends if ( location.protocol !=3D "file:" ) document.write(output) ; firstSiteMetrixCall =3D false ; } } ------=_NextPart_000_0000_01C42827.53EB9480--