From: <Mit Microsoft Internet Explorer 7 gespeichert>
Subject: Why Europe Loves A Leader It Could Never Vote For | Print Article | Newsweek.com
Date: Tue, 29 Jul 2008 09:10:59 +0200
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C8F15B.0456E260"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C8F15B.0456E260
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.newsweek.com/id/148943/output/print

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML lang=3Den xml:lang=3D"en"><HEAD><TITLE>Why Europe Loves A Leader =
It Could Never Vote For | Print Article | Newsweek.com</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Dutf-8"><LINK=20
href=3D"http://www.newsweek.com/site/css/printArticle.css" =
type=3Dtext/css=20
rel=3Dstylesheet>
<SCRIPT language=3Djavascript type=3Dtext/javascript>
		var commercialNode =3D "intl";
		</SCRIPT>

<SCRIPT language=3Djavascript =
src=3D"http://ndn.newsweek.com/site/js/lib/jquery.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT language=3Djavascript=20
src=3D"http://ndn.newsweek.com/site/js/lib/swfobject-mod.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT language=3Djavascript=20
src=3D"http://bc.newsweek.com/players/js/bcFullscreenPlayer.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT language=3Djavascript1.1=20
src=3D"http://www.washingtonpost.com/wp-srv/ad/wpni_generic_ad.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT language=3Djavascript1.1=20
src=3D"http://www.washingtonpost.com/wp-srv/ad/nw_ad_v3.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT language=3Djavascript type=3Dtext/javascript>
				var ad_content_type =3D "";
				</SCRIPT>

<META content=3D"MSHTML 6.00.6000.16674" name=3DGENERATOR></HEAD>
<BODY><IMG alt=3DNewsweek=20
src=3D"http://ndn.newsweek.com/site/images/printpage_newsweek_banner.gif"=
>=20
<DIV class=3DcontentWrapper>
<DIV class=3DsponsoredAd id=3Dslug_88x31 style=3D"CLEAR: both; FLOAT: =
right">
<DIV class=3DSponsoredBy>Sponsored By</DIV>
<DIV class=3Dad88x31>
<SCRIPT language=3Djavascript type=3Dtext/javascript>
						placeAd2('printthis','88x31',false,'');
					</SCRIPT>
</DIV></DIV>
<DIV class=3Dheadline>Why Europe Loves A Leader It Could Never Vote =
For</DIV>
<DIV class=3Ddeck>
<DIV class=3Dauthor>Stefan Theil</DIV>
<DIV class=3Dsource>NEWSWEEK</DIV>
<DIV class=3DarticleUpdated>Updated: 11:38&nbsp;AM ET Jul&nbsp;26, =
2008</DIV>
<DIV class=3Dbody>
<P>What was most interesting about the throngs who came to see Barack =
Obama in=20
Europe last week was never articulated in public. It's that they adore =
him for=20
America (the Bild tabloid called the German reaction "love at first =
sight") but=20
would never get to vote for someone like him at home.</P>
<P>To be sure, Europeans swinging American flags again instead of =
burning=20
effigies of the U.S. president is a refreshing sight. To many Europeans, =
Obama=20
feels like one of them=E2=80=94mildly left of center, talking about =
cooperation,=20
promising that America will act on climate change. But Europe's =
adulation of the=20
half-Kenyan senator has some observers asking an obvious question: he'd =
be a=20
shoo-in if Europeans could vote in America, but would they pick him in =
Europe?=20
Would a German Turk, a Dutch Indonesian or a Franco-Algerian stand a =
chance of=20
making it up the ranks of the Continent's major political parties? =
"Absolutely=20
not," says Jerome Mack, a London-based corporate diversity =
consultant.</P>
<P>In the main, that's not even due to overt racism, says Mack. =
"Europe's=20
approach to ethnic diversity has been benign neglect," he says, and it's =
waiting=20
(and waiting, and waiting) for minorities to perfectly assimilate. =
Often,=20
Europeans don't even seem to think it's an issue. In June, many Germans =
were=20
simply offended when Peter L=C3=B6scher, CEO of Munich-based Siemens, =
said that the=20
multinational tech company's senior management was too male, too white =
and too=20
German. Just as important, the Continent's political =
systems=E2=80=94dominated by=20
powerful party machines that encourage conformism and =
homogeneity=E2=80=94make it=20
particularly difficult for outsiders. Bypassing the party establishment =
and=20
appealing directly to voters, as Obama has done, would be a virtually =
impossible=20
path. While Europe's parties have nominated dozens of M.P.s with =
immigrant=20
backgrounds, they're usually pigeonholed as specialists for minority =
issues.=20
None has gained fame with a national agenda.</P>
<P>Some argue that an Obama win would help blaze a trail for Europe's =
minorities=20
as well. Already, his candidacy "holds up a mirror" to the French (and =
other=20
Europeans) on their unresolved integration issues, argues Dominique =
Mo=C3=AFsi,=20
deputy director of the French Institute for International Affairs. =
Michael=20
Stuber, a diversity expert in Cologne, thinks that a decade from now, =
Europe too=20
will be ready for minority candidates for high office. What happens if =
Obama=20
loses, now that so many Europeans have invested their hopes in his =
victory? The=20
Atlantic that grew just a bit smaller last week will be just as wide as=20
usual.</P><!-- Omniture -->
<SCRIPT language=3Djavascript type=3Dtext/javascript>
		<!--
	=09
			var nw_page_name =3D "nw - article - 148943 - Why Europe Loves A =
Leader It Could Never Vote For";
			var nw_section =3D "international edition";
			var nw_content_type =3D "article";
			var nw_source =3D "newsweek mag";
			var nw_search_result_count =3D "0";
			var nw_content_id =3D "148943";
			var nw_headline =3D "Why Europe Loves A Leader It Could Never Vote =
For";
			var nw_author =3D "stefan theil";
			var nw_page_num =3D "print format";
			var nw_application =3D "gutenberg";
			var nw_hierarchy =3D "international edition|articles";
		-->
		</SCRIPT>
</DIV>
<DIV class=3DURL>URL: http://www.newsweek.com/id/148943</DIV></DIV>
<DIV class=3Dhr>
<DIV class=3Dcopyright>=C2=A9 &nbsp;2008&nbsp;</DIV>
<SCRIPT language=3Djavascript =
src=3D"http://ndn.newsweek.com/site/js/nw_omniture.js"=20
type=3Dtext/javascript></SCRIPT>
</DIV></DIV></BODY></HTML>

------=_NextPart_000_0000_01C8F15B.0456E260
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ndn.newsweek.com/site/images/printpage_newsweek_banner.gif

R0lGODlhZAI0ALMAAJweAxwHA9DPzz8+PeWUgvPw7+jh39dbQZ9HNdNNMe26r5Z9eL28vP///8ok
AQAAACH5BAAAAAAALAAAAABkAjQAAAT/0MlJq7046827/2AojmRpnmiqrmzrvnAsz3Rt33iu73zv
/8CgcEgsGo/IpHLJbDqf0Kh0Sq1ar9isdsvter/gsHhMLpvP6LR6zW673/C4fE6v2+/4vH7P7/v/
gIGCg4SFhoeIiYqLjI2Oj5CRkmcHlZYHFZeXbpqYk5+gbw2jpA0EFKWlCG2pDauhsLFlraOvDrQN
AwBsrbqyv8BcuAK7t7S+a73FwczNUQoMtAsS0KUCDMhqB9Gk2c7f4EgBuNMO490BActqBKXe4fDx
P7gFxe7LBwT6ng6dBwkSEliaoAlgPgUEMFkS6C/gQAkFJ+jTBxBDvn0V2nXb1Umex48z/3A1YCDh
Xr8CqQqcoqVgF8paDjSSMmAgFbcGCnDtqjlq2oFULXOmMlBRYisD/GTmAqB01DqQUKOWENlg2r2m
pW5mDZCg1AKmVFtpLRXA2CgGAH5a49mqgC2h0iQo1YW1rNS7eD9QrecOQSkDC8aKDaCUAWGq17Li
CqB2lAHGVBkseNnAwK7CC9i6jXm1ld28oENXKEWZlNYBcBukC8DWgICsAwKkVu1ggWlr6QaYHqAV
22F3DvyOem06nfCeDig/VucV7EYHbH2Lni7aa1jbxS9bz146F+dRur1CXEAe8kx1bMGnvY2upGns
Pe3CfTzX+ch0T6nrB+kOPi2tAiygT/9q/qnWVSpfCYUNSwcAgF9ywInlXGKmTaRZbwISkN5v4DVm
2Gf7hcjfRoKxd116A2AlwDm5BFBiAypNQGBjpBQQwEsFivRiKikqRko6IgY5onoQ/hdWT/4xMBt4
o9i4y44k9ZMVVrn8eORZV/aIC1pCdhmPSTT6eNYAZJZJZjrWvNTbWZ/xRo4E6XGT5HA3emWmmb3d
WSaHIyHo5Z/fmPQdglsBYOhFBEyz5IK9lGWJg5khqN1Q4SEomzvqAIDARPp4lSlTE23qzljlAGoq
LJV4hUBF6YFHmY0TqLKepW2lI9Mp5vRW1oFbtaoan1/JNdNx90FEVn2lbXbqspPgQsD/Lgl0p+VZ
1JDlEo+XbjVoAeUQaFerC/DZwIoSvLrKAZQZRiCcpFyTngAIhGmAAszW+wg5doWpi6+e7pKak/qW
RSW2wpLFlaXGimTjwVRVes+SINorsSH4TnAaAAkQN1i+2poFozrb/geye459i+kEOTYZG0fdkRLu
MdeSNfHMhkDDwM04h0sBztjsAsACGo8UG4g2S2YXATnnm7Obw4VLdNJy8TyyBAgwoJzTy1R94WpF
4+zLNlLTLPYgq5U9tQRlL2P2gxWkPYHZEzi4mtxzWwA32mVbQLfbFOxdtzlrF+P32IQXbvjhiCeu
+OKMN+7445BHLvnklFdu+eWYZ675Huacd+7556CHLvropJdu+umop6766qy37vrrsIsRAQA7

------=_NextPart_000_0000_01C8F15B.0456E260
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.newsweek.com/site/css/printArticle.css

IMG {
	MARGIN: 20px 0px 0px
}
.contentWrapper {
	MARGIN: 0px 40px; WIDTH: 520px; PADDING-TOP: 30px
}
.SponsoredBy {
	FONT: 9pt Arial, Helvetica, sans-serif
}
.ad88x31 A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.contentWrapper DIV.ad88x31 A IMG {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.sponsoredAd {
	DISPLAY: none
}
.headline {
	MARGIN: 0px; FONT: bold 23pt/1em Arial, Helvetica, sans-serif; COLOR: =
#000
}
.deck {
	DISPLAY: block; MARGIN: 0px; FONT: bold 11pt/1.1em Georgia, san-serif; =
COLOR: #000
}
.author {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; FONT: bold =
10pt Arial, Helvetica, sans-serif; COLOR: #585449; PADDING-TOP: 20px
}
.source {
	FONT: bold 8pt Arial, Helvetica, sans-serif; TEXT-TRANSFORM: uppercase; =
COLOR: #585449
}
.articleUpdated {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 1.2em; FONT: 7.5pt Arial, Helvetica, sans-serif; COLOR: #585449; =
PADDING-TOP: 0px
}
.body {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; FONT: 9pt =
Arial, Helvetica, sans-serif; COLOR: #000; PADDING-TOP: 4px
}
.URL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; FONT: 10pt =
Arial, Helvetica, sans-serif; COLOR: #585449; PADDING-TOP: 12px
}
.hr {
	BORDER-TOP: #000 1px solid; WIDTH: 610px
}
.copyright {
	MARGIN: 0px 0px 0px 40px; FONT: 10pt Arial, Helvetica, sans-serif; =
COLOR: #585449; PADDING-TOP: 9px
}

------=_NextPart_000_0000_01C8F15B.0456E260
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ndn.newsweek.com/site/js/lib/jquery.js

(function(){=0A=
/*=0A=
 * jQuery 1.2 - New Wave Javascript=0A=
 *=0A=
 * Copyright (c) 2007 John Resig (jquery.com)=0A=
 * Dual licensed under the MIT (MIT-LICENSE.txt)=0A=
 * and GPL (GPL-LICENSE.txt) licenses.=0A=
 *=0A=
 * $Date: 2007-09-10 15:45:49 -0400 (Mon, 10 Sep 2007) $=0A=
 * $Rev: 3219 $=0A=
 */=0A=
=0A=
// Map over jQuery in case of overwrite=0A=
if ( typeof jQuery !=3D "undefined" )=0A=
	var _jQuery =3D jQuery;=0A=
=0A=
var jQuery =3D window.jQuery =3D function(a,c) {=0A=
	// If the context is global, return a new object=0A=
	if ( window =3D=3D this || !this.init )=0A=
		return new jQuery(a,c);=0A=
	=0A=
	return this.init(a,c);=0A=
};=0A=
=0A=
// Map over the $ in case of overwrite=0A=
if ( typeof $ !=3D "undefined" )=0A=
	var _$ =3D $;=0A=
	=0A=
// Map the jQuery namespace to the '$' one=0A=
window.$ =3D jQuery;=0A=
=0A=
var quickExpr =3D /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;=0A=
=0A=
jQuery.fn =3D jQuery.prototype =3D {=0A=
	init: function(a,c) {=0A=
		// Make sure that a selection was provided=0A=
		a =3D a || document;=0A=
=0A=
		// Handle HTML strings=0A=
		if ( typeof a  =3D=3D "string" ) {=0A=
			var m =3D quickExpr.exec(a);=0A=
			if ( m && (m[1] || !c) ) {=0A=
				// HANDLE: $(html) -> $(array)=0A=
				if ( m[1] )=0A=
					a =3D jQuery.clean( [ m[1] ], c );=0A=
=0A=
				// HANDLE: $("#id")=0A=
				else {=0A=
					var tmp =3D document.getElementById( m[3] );=0A=
					if ( tmp )=0A=
						// Handle the case where IE and Opera return items=0A=
						// by name instead of ID=0A=
						if ( tmp.id !=3D m[3] )=0A=
							return jQuery().find( a );=0A=
						else {=0A=
							this[0] =3D tmp;=0A=
							this.length =3D 1;=0A=
							return this;=0A=
						}=0A=
					else=0A=
						a =3D [];=0A=
				}=0A=
=0A=
			// HANDLE: $(expr)=0A=
			} else=0A=
				return new jQuery( c ).find( a );=0A=
=0A=
		// HANDLE: $(function)=0A=
		// Shortcut for document ready=0A=
		} else if ( jQuery.isFunction(a) )=0A=
			return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a =
);=0A=
=0A=
		return this.setArray(=0A=
			// HANDLE: $(array)=0A=
			a.constructor =3D=3D Array && a ||=0A=
=0A=
			// HANDLE: $(arraylike)=0A=
			// Watch for when an array-like object is passed as the selector=0A=
			(a.jquery || a.length && a !=3D window && !a.nodeType && a[0] !=3D =
undefined && a[0].nodeType) && jQuery.makeArray( a ) ||=0A=
=0A=
			// HANDLE: $(*)=0A=
			[ a ] );=0A=
	},=0A=
	=0A=
	jquery: "1.2",=0A=
=0A=
	size: function() {=0A=
		return this.length;=0A=
	},=0A=
	=0A=
	length: 0,=0A=
=0A=
	get: function( num ) {=0A=
		return num =3D=3D undefined ?=0A=
=0A=
			// Return a 'clean' array=0A=
			jQuery.makeArray( this ) :=0A=
=0A=
			// Return just the object=0A=
			this[num];=0A=
	},=0A=
	=0A=
	pushStack: function( a ) {=0A=
		var ret =3D jQuery(a);=0A=
		ret.prevObject =3D this;=0A=
		return ret;=0A=
	},=0A=
	=0A=
	setArray: function( a ) {=0A=
		this.length =3D 0;=0A=
		Array.prototype.push.apply( this, a );=0A=
		return this;=0A=
	},=0A=
=0A=
	each: function( fn, args ) {=0A=
		return jQuery.each( this, fn, args );=0A=
	},=0A=
=0A=
	index: function( obj ) {=0A=
		var pos =3D -1;=0A=
		this.each(function(i){=0A=
			if ( this =3D=3D obj ) pos =3D i;=0A=
		});=0A=
		return pos;=0A=
	},=0A=
=0A=
	attr: function( key, value, type ) {=0A=
		var obj =3D key;=0A=
		=0A=
		// Look for the case where we're accessing a style value=0A=
		if ( key.constructor =3D=3D String )=0A=
			if ( value =3D=3D undefined )=0A=
				return this.length && jQuery[ type || "attr" ]( this[0], key ) || =
undefined;=0A=
			else {=0A=
				obj =3D {};=0A=
				obj[ key ] =3D value;=0A=
			}=0A=
		=0A=
		// Check to see if we're setting style values=0A=
		return this.each(function(index){=0A=
			// Set all the styles=0A=
			for ( var prop in obj )=0A=
				jQuery.attr(=0A=
					type ? this.style : this,=0A=
					prop, jQuery.prop(this, obj[prop], type, index, prop)=0A=
				);=0A=
		});=0A=
	},=0A=
=0A=
	css: function( key, value ) {=0A=
		return this.attr( key, value, "curCSS" );=0A=
	},=0A=
=0A=
	text: function(e) {=0A=
		if ( typeof e !=3D "object" && e !=3D null )=0A=
			return this.empty().append( document.createTextNode( e ) );=0A=
=0A=
		var t =3D "";=0A=
		jQuery.each( e || this, function(){=0A=
			jQuery.each( this.childNodes, function(){=0A=
				if ( this.nodeType !=3D 8 )=0A=
					t +=3D this.nodeType !=3D 1 ?=0A=
						this.nodeValue : jQuery.fn.text([ this ]);=0A=
			});=0A=
		});=0A=
		return t;=0A=
	},=0A=
=0A=
	wrapAll: function(html) {=0A=
		if ( this[0] )=0A=
			// The elements to wrap the target around=0A=
			jQuery(html, this[0].ownerDocument)=0A=
				.clone()=0A=
				.insertBefore(this[0])=0A=
				.map(function(){=0A=
					var elem =3D this;=0A=
					while ( elem.firstChild )=0A=
						elem =3D elem.firstChild;=0A=
					return elem;=0A=
				})=0A=
				.append(this);=0A=
=0A=
		return this;=0A=
	},=0A=
=0A=
	wrapInner: function(html) {=0A=
		return this.each(function(){=0A=
			jQuery(this).contents().wrapAll(html);=0A=
		});=0A=
	},=0A=
=0A=
	wrap: function(html) {=0A=
		return this.each(function(){=0A=
			jQuery(this).wrapAll(html);=0A=
		});=0A=
	},=0A=
=0A=
	append: function() {=0A=
		return this.domManip(arguments, true, 1, function(a){=0A=
			this.appendChild( a );=0A=
		});=0A=
	},=0A=
=0A=
	prepend: function() {=0A=
		return this.domManip(arguments, true, -1, function(a){=0A=
			this.insertBefore( a, this.firstChild );=0A=
		});=0A=
	},=0A=
	=0A=
	before: function() {=0A=
		return this.domManip(arguments, false, 1, function(a){=0A=
			this.parentNode.insertBefore( a, this );=0A=
		});=0A=
	},=0A=
=0A=
	after: function() {=0A=
		return this.domManip(arguments, false, -1, function(a){=0A=
			this.parentNode.insertBefore( a, this.nextSibling );=0A=
		});=0A=
	},=0A=
=0A=
	end: function() {=0A=
		return this.prevObject || jQuery([]);=0A=
	},=0A=
=0A=
	find: function(t) {=0A=
		var data =3D jQuery.map(this, function(a){ return jQuery.find(t,a); });=0A=
		return this.pushStack( /[^+>] [^+>]/.test( t ) || t.indexOf("..") > -1 =
?=0A=
			jQuery.unique( data ) : data );=0A=
	},=0A=
=0A=
	clone: function(events) {=0A=
		// Do the clone=0A=
		var ret =3D this.map(function(){=0A=
			return this.outerHTML ? jQuery(this.outerHTML)[0] : =
this.cloneNode(true);=0A=
		});=0A=
		=0A=
		if (events =3D=3D=3D true) {=0A=
			var clone =3D ret.find("*").andSelf();=0A=
=0A=
			this.find("*").andSelf().each(function(i) {=0A=
				var events =3D jQuery.data(this, "events");=0A=
				for ( var type in events )=0A=
					for ( var handler in events[type] )=0A=
						jQuery.event.add(clone[i], type, events[type][handler], =
events[type][handler].data);=0A=
			});=0A=
		}=0A=
=0A=
		// Return the cloned set=0A=
		return ret;=0A=
	},=0A=
=0A=
	filter: function(t) {=0A=
		return this.pushStack(=0A=
			jQuery.isFunction( t ) &&=0A=
			jQuery.grep(this, function(el, index){=0A=
				return t.apply(el, [index]);=0A=
			}) ||=0A=
=0A=
			jQuery.multiFilter(t,this) );=0A=
	},=0A=
=0A=
	not: function(t) {=0A=
		return this.pushStack(=0A=
			t.constructor =3D=3D String &&=0A=
			jQuery.multiFilter(t, this, true) ||=0A=
=0A=
			jQuery.grep(this, function(a) {=0A=
				return ( t.constructor =3D=3D Array || t.jquery )=0A=
					? jQuery.inArray( a, t ) < 0=0A=
					: a !=3D t;=0A=
			})=0A=
		);=0A=
	},=0A=
=0A=
	add: function(t) {=0A=
		return this.pushStack( jQuery.merge(=0A=
			this.get(),=0A=
			t.constructor =3D=3D String ?=0A=
				jQuery(t).get() :=0A=
				t.length !=3D undefined && (!t.nodeName || t.nodeName =3D=3D "FORM") =
?=0A=
					t : [t] )=0A=
		);=0A=
	},=0A=
=0A=
	is: function(expr) {=0A=
		return expr ? jQuery.multiFilter(expr,this).length > 0 : false;=0A=
	},=0A=
=0A=
	hasClass: function(expr) {=0A=
		return this.is("." + expr);=0A=
	},=0A=
	=0A=
	val: function( val ) {=0A=
		if ( val =3D=3D undefined ) {=0A=
			if ( this.length ) {=0A=
				var elem =3D this[0];=0A=
		    	=0A=
				// We need to handle select boxes special=0A=
				if ( jQuery.nodeName(elem, "select") ) {=0A=
					var index =3D elem.selectedIndex,=0A=
						a =3D [],=0A=
						options =3D elem.options,=0A=
						one =3D elem.type =3D=3D "select-one";=0A=
					=0A=
					// Nothing was selected=0A=
					if ( index < 0 )=0A=
						return null;=0A=
=0A=
					// Loop through all the selected options=0A=
					for ( var i =3D one ? index : 0, max =3D one ? index + 1 : =
options.length; i < max; i++ ) {=0A=
						var option =3D options[i];=0A=
						if ( option.selected ) {=0A=
							// Get the specifc value for the option=0A=
							var val =3D jQuery.browser.msie && =
!option.attributes["value"].specified ? option.text : option.value;=0A=
							=0A=
							// We don't need an array for one selects=0A=
							if ( one )=0A=
								return val;=0A=
							=0A=
							// Multi-Selects return an array=0A=
							a.push(val);=0A=
						}=0A=
					}=0A=
					=0A=
					return a;=0A=
					=0A=
				// Everything else, we just grab the value=0A=
				} else=0A=
					return this[0].value.replace(/\r/g, "");=0A=
			}=0A=
		} else=0A=
			return this.each(function(){=0A=
				if ( val.constructor =3D=3D Array && =
/radio|checkbox/.test(this.type) )=0A=
					this.checked =3D (jQuery.inArray(this.value, val) >=3D 0 ||=0A=
						jQuery.inArray(this.name, val) >=3D 0);=0A=
				else if ( jQuery.nodeName(this, "select") ) {=0A=
					var tmp =3D val.constructor =3D=3D Array ? val : [val];=0A=
=0A=
					jQuery("option", this).each(function(){=0A=
						this.selected =3D (jQuery.inArray(this.value, tmp) >=3D 0 ||=0A=
						jQuery.inArray(this.text, tmp) >=3D 0);=0A=
					});=0A=
=0A=
					if ( !tmp.length )=0A=
						this.selectedIndex =3D -1;=0A=
				} else=0A=
					this.value =3D val;=0A=
			});=0A=
	},=0A=
	=0A=
	html: function( val ) {=0A=
		return val =3D=3D undefined ?=0A=
			( this.length ? this[0].innerHTML : null ) :=0A=
			this.empty().append( val );=0A=
	},=0A=
=0A=
	replaceWith: function( val ) {=0A=
		return this.after( val ).remove();=0A=
	},=0A=
=0A=
	slice: function() {=0A=
		return this.pushStack( Array.prototype.slice.apply( this, arguments ) =
);=0A=
	},=0A=
=0A=
	map: function(fn) {=0A=
		return this.pushStack(jQuery.map( this, function(elem,i){=0A=
			return fn.call( elem, i, elem );=0A=
		}));=0A=
	},=0A=
=0A=
	andSelf: function() {=0A=
		return this.add( this.prevObject );=0A=
	},=0A=
	=0A=
	domManip: function(args, table, dir, fn) {=0A=
		var clone =3D this.length > 1, a; =0A=
=0A=
		return this.each(function(){=0A=
			if ( !a ) {=0A=
				a =3D jQuery.clean(args, this.ownerDocument);=0A=
				if ( dir < 0 )=0A=
					a.reverse();=0A=
			}=0A=
=0A=
			var obj =3D this;=0A=
=0A=
			if ( table && jQuery.nodeName(this, "table") && jQuery.nodeName(a[0], =
"tr") )=0A=
				obj =3D this.getElementsByTagName("tbody")[0] || =
this.appendChild(document.createElement("tbody"));=0A=
=0A=
			jQuery.each( a, function(){=0A=
				if ( jQuery.nodeName(this, "script") ) {=0A=
					if ( this.src )=0A=
						jQuery.ajax({ url: this.src, async: false, dataType: "script" });=0A=
					else=0A=
						jQuery.globalEval( this.text || this.textContent || this.innerHTML =
|| "" );=0A=
				} else=0A=
					fn.apply( obj, [ clone ? this.cloneNode(true) : this ] );=0A=
			});=0A=
		});=0A=
	}=0A=
};=0A=
=0A=
jQuery.extend =3D jQuery.fn.extend =3D function() {=0A=
	// copy reference to target object=0A=
	var target =3D arguments[0] || {}, a =3D 1, al =3D arguments.length, =
deep =3D false;=0A=
=0A=
	// Handle a deep copy situation=0A=
	if ( target.constructor =3D=3D Boolean ) {=0A=
		deep =3D target;=0A=
		target =3D arguments[1] || {};=0A=
	}=0A=
=0A=
	// extend jQuery itself if only one argument is passed=0A=
	if ( al =3D=3D 1 ) {=0A=
		target =3D this;=0A=
		a =3D 0;=0A=
	}=0A=
=0A=
	var prop;=0A=
=0A=
	for ( ; a < al; a++ )=0A=
		// Only deal with non-null/undefined values=0A=
		if ( (prop =3D arguments[a]) !=3D null )=0A=
			// Extend the base object=0A=
			for ( var i in prop ) {=0A=
				// Prevent never-ending loop=0A=
				if ( target =3D=3D prop[i] )=0A=
					continue;=0A=
=0A=
				// Recurse if we're merging object values=0A=
				if ( deep && typeof prop[i] =3D=3D 'object' && target[i] )=0A=
					jQuery.extend( target[i], prop[i] );=0A=
=0A=
				// Don't bring in undefined values=0A=
				else if ( prop[i] !=3D undefined )=0A=
					target[i] =3D prop[i];=0A=
			}=0A=
=0A=
	// Return the modified object=0A=
	return target;=0A=
};=0A=
=0A=
var expando =3D "jQuery" + (new Date()).getTime(), uuid =3D 0, win =3D =
{};=0A=
=0A=
jQuery.extend({=0A=
	noConflict: function(deep) {=0A=
		window.$ =3D _$;=0A=
		if ( deep )=0A=
			window.jQuery =3D _jQuery;=0A=
		return jQuery;=0A=
	},=0A=
=0A=
	// This may seem like some crazy code, but trust me when I say that this=0A=
	// is the only cross-browser way to do this. --John=0A=
	isFunction: function( fn ) {=0A=
		return !!fn && typeof fn !=3D "string" && !fn.nodeName && =0A=
			fn.constructor !=3D Array && /function/i.test( fn + "" );=0A=
	},=0A=
	=0A=
	// check if an element is in a XML document=0A=
	isXMLDoc: function(elem) {=0A=
		return elem.documentElement && !elem.body ||=0A=
			elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;=0A=
	},=0A=
=0A=
	// Evalulates a script in a global context=0A=
	// Evaluates Async. in Safari 2 :-(=0A=
	globalEval: function( data ) {=0A=
		data =3D jQuery.trim( data );=0A=
		if ( data ) {=0A=
			if ( window.execScript )=0A=
				window.execScript( data );=0A=
			else if ( jQuery.browser.safari )=0A=
				// safari doesn't provide a synchronous global eval=0A=
				window.setTimeout( data, 0 );=0A=
			else=0A=
				eval.call( window, data );=0A=
		}=0A=
	},=0A=
=0A=
	nodeName: function( elem, name ) {=0A=
		return elem.nodeName && elem.nodeName.toUpperCase() =3D=3D =
name.toUpperCase();=0A=
	},=0A=
	=0A=
	cache: {},=0A=
	=0A=
	data: function( elem, name, data ) {=0A=
		elem =3D elem =3D=3D window ? win : elem;=0A=
=0A=
		var id =3D elem[ expando ];=0A=
=0A=
		// Compute a unique ID for the element=0A=
		if ( !id ) =0A=
			id =3D elem[ expando ] =3D ++uuid;=0A=
=0A=
		// Only generate the data cache if we're=0A=
		// trying to access or manipulate it=0A=
		if ( name && !jQuery.cache[ id ] )=0A=
			jQuery.cache[ id ] =3D {};=0A=
		=0A=
		// Prevent overriding the named cache with undefined values=0A=
		if ( data !=3D undefined )=0A=
			jQuery.cache[ id ][ name ] =3D data;=0A=
		=0A=
		// Return the named cache data, or the ID for the element	=0A=
		return name ? jQuery.cache[ id ][ name ] : id;=0A=
	},=0A=
	=0A=
	removeData: function( elem, name ) {=0A=
		elem =3D elem =3D=3D window ? win : elem;=0A=
=0A=
		var id =3D elem[ expando ];=0A=
=0A=
		// If we want to remove a specific section of the element's data=0A=
		if ( name ) {=0A=
			if ( jQuery.cache[ id ] ) {=0A=
				// Remove the section of cache data=0A=
				delete jQuery.cache[ id ][ name ];=0A=
=0A=
				// If we've removed all the data, remove the element's cache=0A=
				name =3D "";=0A=
				for ( name in jQuery.cache[ id ] ) break;=0A=
				if ( !name )=0A=
					jQuery.removeData( elem );=0A=
			}=0A=
=0A=
		// Otherwise, we want to remove all of the element's data=0A=
		} else {=0A=
			// Clean up the element expando=0A=
			try {=0A=
				delete elem[ expando ];=0A=
			} catch(e){=0A=
				// IE has trouble directly removing the expando=0A=
				// but it's ok with using removeAttribute=0A=
				if ( elem.removeAttribute )=0A=
					elem.removeAttribute( expando );=0A=
			}=0A=
=0A=
			// Completely remove the data cache=0A=
			delete jQuery.cache[ id ];=0A=
		}=0A=
	},=0A=
=0A=
	// args is for internal usage only=0A=
	each: function( obj, fn, args ) {=0A=
		if ( args ) {=0A=
			if ( obj.length =3D=3D undefined )=0A=
				for ( var i in obj )=0A=
					fn.apply( obj[i], args );=0A=
			else=0A=
				for ( var i =3D 0, ol =3D obj.length; i < ol; i++ )=0A=
					if ( fn.apply( obj[i], args ) =3D=3D=3D false ) break;=0A=
=0A=
		// A special, fast, case for the most common use of each=0A=
		} else {=0A=
			if ( obj.length =3D=3D undefined )=0A=
				for ( var i in obj )=0A=
					fn.call( obj[i], i, obj[i] );=0A=
			else=0A=
				for ( var i =3D 0, ol =3D obj.length, val =3D obj[0]; =0A=
					i < ol && fn.call(val,i,val) !=3D=3D false; val =3D obj[++i] ){}=0A=
		}=0A=
=0A=
		return obj;=0A=
	},=0A=
	=0A=
	prop: function(elem, value, type, index, prop){=0A=
			// Handle executable functions=0A=
			if ( jQuery.isFunction( value ) )=0A=
				value =3D value.call( elem, [index] );=0A=
				=0A=
			// exclude the following css properties to add px=0A=
			var exclude =3D /z-?index|font-?weight|opacity|zoom|line-?height/i;=0A=
=0A=
			// Handle passing in a number to a CSS property=0A=
			return value && value.constructor =3D=3D Number && type =3D=3D =
"curCSS" && !exclude.test(prop) ?=0A=
				value + "px" :=0A=
				value;=0A=
	},=0A=
=0A=
	className: {=0A=
		// internal only, use addClass("class")=0A=
		add: function( elem, c ){=0A=
			jQuery.each( (c || "").split(/\s+/), function(i, cur){=0A=
				if ( !jQuery.className.has( elem.className, cur ) )=0A=
					elem.className +=3D ( elem.className ? " " : "" ) + cur;=0A=
			});=0A=
		},=0A=
=0A=
		// internal only, use removeClass("class")=0A=
		remove: function( elem, c ){=0A=
			elem.className =3D c !=3D undefined ?=0A=
				jQuery.grep( elem.className.split(/\s+/), function(cur){=0A=
					return !jQuery.className.has( c, cur );	=0A=
				}).join(" ") : "";=0A=
		},=0A=
=0A=
		// internal only, use is(".class")=0A=
		has: function( t, c ) {=0A=
			return jQuery.inArray( c, (t.className || t).toString().split(/\s+/) =
) > -1;=0A=
		}=0A=
	},=0A=
=0A=
	swap: function(e,o,f) {=0A=
		for ( var i in o ) {=0A=
			e.style["old"+i] =3D e.style[i];=0A=
			e.style[i] =3D o[i];=0A=
		}=0A=
		f.apply( e, [] );=0A=
		for ( var i in o )=0A=
			e.style[i] =3D e.style["old"+i];=0A=
	},=0A=
=0A=
	css: function(e,p) {=0A=
		if ( p =3D=3D "height" || p =3D=3D "width" ) {=0A=
			var old =3D {}, oHeight, oWidth, d =3D =
["Top","Bottom","Right","Left"];=0A=
=0A=
			jQuery.each( d, function(){=0A=
				old["padding" + this] =3D 0;=0A=
				old["border" + this + "Width"] =3D 0;=0A=
			});=0A=
=0A=
			jQuery.swap( e, old, function() {=0A=
				if ( jQuery(e).is(':visible') ) {=0A=
					oHeight =3D e.offsetHeight;=0A=
					oWidth =3D e.offsetWidth;=0A=
				} else {=0A=
					e =3D jQuery(e.cloneNode(true))=0A=
						.find(":radio").removeAttr("checked").end()=0A=
						.css({=0A=
							visibility: "hidden", position: "absolute", display: "block", =
right: "0", left: "0"=0A=
						}).appendTo(e.parentNode)[0];=0A=
=0A=
					var parPos =3D jQuery.css(e.parentNode,"position") || "static";=0A=
					if ( parPos =3D=3D "static" )=0A=
						e.parentNode.style.position =3D "relative";=0A=
=0A=
					oHeight =3D e.clientHeight;=0A=
					oWidth =3D e.clientWidth;=0A=
=0A=
					if ( parPos =3D=3D "static" )=0A=
						e.parentNode.style.position =3D "static";=0A=
=0A=
					e.parentNode.removeChild(e);=0A=
				}=0A=
			});=0A=
=0A=
			return p =3D=3D "height" ? oHeight : oWidth;=0A=
		}=0A=
=0A=
		return jQuery.curCSS( e, p );=0A=
	},=0A=
=0A=
	curCSS: function(elem, prop, force) {=0A=
		var ret, stack =3D [], swap =3D [];=0A=
=0A=
		// A helper method for determining if an element's values are broken=0A=
		function color(a){=0A=
			if ( !jQuery.browser.safari )=0A=
				return false;=0A=
=0A=
			var ret =3D document.defaultView.getComputedStyle(a,null);=0A=
			return !ret || ret.getPropertyValue("color") =3D=3D "";=0A=
		}=0A=
=0A=
		if (prop =3D=3D "opacity" && jQuery.browser.msie) {=0A=
			ret =3D jQuery.attr(elem.style, "opacity");=0A=
			return ret =3D=3D "" ? "1" : ret;=0A=
		}=0A=
		=0A=
		if (prop.match(/float/i))=0A=
			prop =3D styleFloat;=0A=
=0A=
		if (!force && elem.style[prop])=0A=
			ret =3D elem.style[prop];=0A=
=0A=
		else if (document.defaultView && =
document.defaultView.getComputedStyle) {=0A=
=0A=
			if (prop.match(/float/i))=0A=
				prop =3D "float";=0A=
=0A=
			prop =3D prop.replace(/([A-Z])/g,"-$1").toLowerCase();=0A=
			var cur =3D document.defaultView.getComputedStyle(elem, null);=0A=
=0A=
			if ( cur && !color(elem) )=0A=
				ret =3D cur.getPropertyValue(prop);=0A=
=0A=
			// If the element isn't reporting its values properly in Safari=0A=
			// then some display: none elements are involved=0A=
			else {=0A=
				// Locate all of the parent display: none elements=0A=
				for ( var a =3D elem; a && color(a); a =3D a.parentNode )=0A=
					stack.unshift(a);=0A=
=0A=
				// Go through and make them visible, but in reverse=0A=
				// (It would be better if we knew the exact display type that they =
had)=0A=
				for ( a =3D 0; a < stack.length; a++ )=0A=
					if ( color(stack[a]) ) {=0A=
						swap[a] =3D stack[a].style.display;=0A=
						stack[a].style.display =3D "block";=0A=
					}=0A=
=0A=
				// Since we flip the display style, we have to handle that=0A=
				// one special, otherwise get the value=0A=
				ret =3D prop =3D=3D "display" && swap[stack.length-1] !=3D null ?=0A=
					"none" :=0A=
					=
document.defaultView.getComputedStyle(elem,null).getPropertyValue(prop) =
|| "";=0A=
=0A=
				// Finally, revert the display styles back=0A=
				for ( a =3D 0; a < swap.length; a++ )=0A=
					if ( swap[a] !=3D null )=0A=
						stack[a].style.display =3D swap[a];=0A=
			}=0A=
=0A=
			if ( prop =3D=3D "opacity" && ret =3D=3D "" )=0A=
				ret =3D "1";=0A=
=0A=
		} else if (elem.currentStyle) {=0A=
			var newProp =3D prop.replace(/\-(\w)/g,function(m,c){return =
c.toUpperCase();});=0A=
			ret =3D elem.currentStyle[prop] || elem.currentStyle[newProp];=0A=
=0A=
			// From the awesome hack by Dean Edwards=0A=
			// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291=0A=
=0A=
			// If we're not dealing with a regular pixel number=0A=
			// but a number that has a weird ending, we need to convert it to =
pixels=0A=
			if ( !/^\d+(px)?$/i.test(ret) && /^\d/.test(ret) ) {=0A=
				var style =3D elem.style.left;=0A=
				var runtimeStyle =3D elem.runtimeStyle.left;=0A=
				elem.runtimeStyle.left =3D elem.currentStyle.left;=0A=
				elem.style.left =3D ret || 0;=0A=
				ret =3D elem.style.pixelLeft + "px";=0A=
				elem.style.left =3D style;=0A=
				elem.runtimeStyle.left =3D runtimeStyle;=0A=
			}=0A=
		}=0A=
=0A=
		return ret;=0A=
	},=0A=
	=0A=
	clean: function(a, doc) {=0A=
		var r =3D [];=0A=
		doc =3D doc || document;=0A=
=0A=
		jQuery.each( a, function(i,arg){=0A=
			if ( !arg ) return;=0A=
=0A=
			if ( arg.constructor =3D=3D Number )=0A=
				arg =3D arg.toString();=0A=
			=0A=
			// Convert html string into DOM nodes=0A=
			if ( typeof arg =3D=3D "string" ) {=0A=
				// Fix "XHTML"-style tags in all browsers=0A=
				arg =3D arg.replace(/(<(\w+)[^>]*?)\/>/g, function(m, all, tag){=0A=
					return =
tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area)$/i)? m : =
all+"></"+tag+">";=0A=
				});=0A=
=0A=
				// Trim whitespace, otherwise indexOf won't work as expected=0A=
				var s =3D jQuery.trim(arg).toLowerCase(), div =3D =
doc.createElement("div"), tb =3D [];=0A=
=0A=
				var wrap =3D=0A=
					// option or optgroup=0A=
					!s.indexOf("<opt") &&=0A=
					[1, "<select>", "</select>"] ||=0A=
					=0A=
					!s.indexOf("<leg") &&=0A=
					[1, "<fieldset>", "</fieldset>"] ||=0A=
					=0A=
					s.match(/^<(thead|tbody|tfoot|colg|cap)/) &&=0A=
					[1, "<table>", "</table>"] ||=0A=
					=0A=
					!s.indexOf("<tr") &&=0A=
					[2, "<table><tbody>", "</tbody></table>"] ||=0A=
					=0A=
				 	// <thead> matched above=0A=
					(!s.indexOf("<td") || !s.indexOf("<th")) &&=0A=
					[3, "<table><tbody><tr>", "</tr></tbody></table>"] ||=0A=
					=0A=
					!s.indexOf("<col") &&=0A=
					[2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"] ||=0A=
=0A=
					// IE can't serialize <link> and <script> tags normally=0A=
					jQuery.browser.msie &&=0A=
					[1, "div<div>", "</div>"] ||=0A=
					=0A=
					[0,"",""];=0A=
=0A=
				// Go to html and back, then peel off extra wrappers=0A=
				div.innerHTML =3D wrap[1] + arg + wrap[2];=0A=
				=0A=
				// Move to the right depth=0A=
				while ( wrap[0]-- )=0A=
					div =3D div.lastChild;=0A=
				=0A=
				// Remove IE's autoinserted <tbody> from table fragments=0A=
				if ( jQuery.browser.msie ) {=0A=
					=0A=
					// String was a <table>, *may* have spurious <tbody>=0A=
					if ( !s.indexOf("<table") && s.indexOf("<tbody") < 0 ) =0A=
						tb =3D div.firstChild && div.firstChild.childNodes;=0A=
						=0A=
					// String was a bare <thead> or <tfoot>=0A=
					else if ( wrap[1] =3D=3D "<table>" && s.indexOf("<tbody") < 0 )=0A=
						tb =3D div.childNodes;=0A=
=0A=
					for ( var n =3D tb.length-1; n >=3D 0 ; --n )=0A=
						if ( jQuery.nodeName(tb[n], "tbody") && !tb[n].childNodes.length )=0A=
							tb[n].parentNode.removeChild(tb[n]);=0A=
	=0A=
					// IE completely kills leading whitespace when innerHTML is used	=0A=
					if ( /^\s/.test(arg) )	=0A=
						div.insertBefore( doc.createTextNode( arg.match(/^\s*/)[0] ), =
div.firstChild );=0A=
=0A=
				}=0A=
				=0A=
				arg =3D jQuery.makeArray( div.childNodes );=0A=
			}=0A=
=0A=
			if ( 0 =3D=3D=3D arg.length && (!jQuery.nodeName(arg, "form") && =
!jQuery.nodeName(arg, "select")) )=0A=
				return;=0A=
=0A=
			if ( arg[0] =3D=3D undefined || jQuery.nodeName(arg, "form") || =
arg.options )=0A=
				r.push( arg );=0A=
			else=0A=
				r =3D jQuery.merge( r, arg );=0A=
=0A=
		});=0A=
=0A=
		return r;=0A=
	},=0A=
	=0A=
	attr: function(elem, name, value){=0A=
		var fix =3D jQuery.isXMLDoc(elem) ? {} : jQuery.props;=0A=
=0A=
		// Safari mis-reports the default selected property of a hidden option=0A=
		// Accessing the parent's selectedIndex property fixes it=0A=
		if ( name =3D=3D "selected" && jQuery.browser.safari )=0A=
			elem.parentNode.selectedIndex;=0A=
		=0A=
		// Certain attributes only work when accessed via the old DOM 0 way=0A=
		if ( fix[name] ) {=0A=
			if ( value !=3D undefined ) elem[fix[name]] =3D value;=0A=
			return elem[fix[name]];=0A=
		} else if ( jQuery.browser.msie && name =3D=3D "style" )=0A=
			return jQuery.attr( elem.style, "cssText", value );=0A=
=0A=
		else if ( value =3D=3D undefined && jQuery.browser.msie && =
jQuery.nodeName(elem, "form") && (name =3D=3D "action" || name =3D=3D =
"method") )=0A=
			return elem.getAttributeNode(name).nodeValue;=0A=
=0A=
		// IE elem.getAttribute passes even for style=0A=
		else if ( elem.tagName ) {=0A=
=0A=
			if ( value !=3D undefined ) {=0A=
				if ( name =3D=3D "type" && jQuery.nodeName(elem,"input") && =
elem.parentNode )=0A=
					throw "type property can't be changed";=0A=
				elem.setAttribute( name, value );=0A=
			}=0A=
=0A=
			if ( jQuery.browser.msie && /href|src/.test(name) && =
!jQuery.isXMLDoc(elem) ) =0A=
				return elem.getAttribute( name, 2 );=0A=
=0A=
			return elem.getAttribute( name );=0A=
=0A=
		// elem is actually elem.style ... set the style=0A=
		} else {=0A=
			// IE actually uses filters for opacity=0A=
			if ( name =3D=3D "opacity" && jQuery.browser.msie ) {=0A=
				if ( value !=3D undefined ) {=0A=
					// IE has trouble with opacity if it does not have layout=0A=
					// Force it by setting the zoom level=0A=
					elem.zoom =3D 1; =0A=
	=0A=
					// Set the alpha filter to set the opacity=0A=
					elem.filter =3D (elem.filter || "").replace(/alpha\([^)]*\)/,"") +=0A=
						(parseFloat(value).toString() =3D=3D "NaN" ? "" : =
"alpha(opacity=3D" + value * 100 + ")");=0A=
				}=0A=
	=0A=
				return elem.filter ? =0A=
					(parseFloat( elem.filter.match(/opacity=3D([^)]*)/)[1] ) / =
100).toString() : "";=0A=
			}=0A=
			name =3D name.replace(/-([a-z])/ig,function(z,b){return =
b.toUpperCase();});=0A=
			if ( value !=3D undefined ) elem[name] =3D value;=0A=
			return elem[name];=0A=
		}=0A=
	},=0A=
	=0A=
	trim: function(t){=0A=
		return (t||"").replace(/^\s+|\s+$/g, "");=0A=
	},=0A=
=0A=
	makeArray: function( a ) {=0A=
		var r =3D [];=0A=
=0A=
		// Need to use typeof to fight Safari childNodes crashes=0A=
		if ( typeof a !=3D "array" )=0A=
			for ( var i =3D 0, al =3D a.length; i < al; i++ )=0A=
				r.push( a[i] );=0A=
		else=0A=
			r =3D a.slice( 0 );=0A=
=0A=
		return r;=0A=
	},=0A=
=0A=
	inArray: function( b, a ) {=0A=
		for ( var i =3D 0, al =3D a.length; i < al; i++ )=0A=
			if ( a[i] =3D=3D b )=0A=
				return i;=0A=
		return -1;=0A=
	},=0A=
=0A=
	merge: function(first, second) {=0A=
		// We have to loop this way because IE & Opera overwrite the length=0A=
		// expando of getElementsByTagName=0A=
=0A=
		// Also, we need to make sure that the correct elements are being =
returned=0A=
		// (IE returns comment nodes in a '*' query)=0A=
		if ( jQuery.browser.msie ) {=0A=
			for ( var i =3D 0; second[i]; i++ )=0A=
				if ( second[i].nodeType !=3D 8 )=0A=
					first.push(second[i]);=0A=
		} else=0A=
			for ( var i =3D 0; second[i]; i++ )=0A=
				first.push(second[i]);=0A=
=0A=
		return first;=0A=
	},=0A=
=0A=
	unique: function(first) {=0A=
		var r =3D [], done =3D {};=0A=
=0A=
		try {=0A=
			for ( var i =3D 0, fl =3D first.length; i < fl; i++ ) {=0A=
				var id =3D jQuery.data(first[i]);=0A=
				if ( !done[id] ) {=0A=
					done[id] =3D true;=0A=
					r.push(first[i]);=0A=
				}=0A=
			}=0A=
		} catch(e) {=0A=
			r =3D first;=0A=
		}=0A=
=0A=
		return r;=0A=
	},=0A=
=0A=
	grep: function(elems, fn, inv) {=0A=
		// If a string is passed in for the function, make a function=0A=
		// for it (a handy shortcut)=0A=
		if ( typeof fn =3D=3D "string" )=0A=
			fn =3D eval("false||function(a,i){return " + fn + "}");=0A=
=0A=
		var result =3D [];=0A=
=0A=
		// Go through the array, only saving the items=0A=
		// that pass the validator function=0A=
		for ( var i =3D 0, el =3D elems.length; i < el; i++ )=0A=
			if ( !inv && fn(elems[i],i) || inv && !fn(elems[i],i) )=0A=
				result.push( elems[i] );=0A=
=0A=
		return result;=0A=
	},=0A=
=0A=
	map: function(elems, fn) {=0A=
		// If a string is passed in for the function, make a function=0A=
		// for it (a handy shortcut)=0A=
		if ( typeof fn =3D=3D "string" )=0A=
			fn =3D eval("false||function(a){return " + fn + "}");=0A=
=0A=
		var result =3D [];=0A=
=0A=
		// Go through the array, translating each of the items to their=0A=
		// new value (or values).=0A=
		for ( var i =3D 0, el =3D elems.length; i < el; i++ ) {=0A=
			var val =3D fn(elems[i],i);=0A=
=0A=
			if ( val !=3D=3D null && val !=3D undefined ) {=0A=
				if ( val.constructor !=3D Array ) val =3D [val];=0A=
				result =3D result.concat( val );=0A=
			}=0A=
		}=0A=
=0A=
		return result;=0A=
	}=0A=
});=0A=
=0A=
var userAgent =3D navigator.userAgent.toLowerCase();=0A=
=0A=
// Figure out what browser is being used=0A=
jQuery.browser =3D {=0A=
	version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],=0A=
	safari: /webkit/.test(userAgent),=0A=
	opera: /opera/.test(userAgent),=0A=
	msie: /msie/.test(userAgent) && !/opera/.test(userAgent),=0A=
	mozilla: /mozilla/.test(userAgent) && =
!/(compatible|webkit)/.test(userAgent)=0A=
};=0A=
=0A=
var styleFloat =3D jQuery.browser.msie ? "styleFloat" : "cssFloat";=0A=
	=0A=
jQuery.extend({=0A=
	// Check to see if the W3C box model is being used=0A=
	boxModel: !jQuery.browser.msie || document.compatMode =3D=3D =
"CSS1Compat",=0A=
	=0A=
	styleFloat: jQuery.browser.msie ? "styleFloat" : "cssFloat",=0A=
	=0A=
	props: {=0A=
		"for": "htmlFor",=0A=
		"class": "className",=0A=
		"float": styleFloat,=0A=
		cssFloat: styleFloat,=0A=
		styleFloat: styleFloat,=0A=
		innerHTML: "innerHTML",=0A=
		className: "className",=0A=
		value: "value",=0A=
		disabled: "disabled",=0A=
		checked: "checked",=0A=
		readonly: "readOnly",=0A=
		selected: "selected",=0A=
		maxlength: "maxLength"=0A=
	}=0A=
});=0A=
=0A=
jQuery.each({=0A=
	parent: "a.parentNode",=0A=
	parents: "jQuery.dir(a,'parentNode')",=0A=
	next: "jQuery.nth(a,2,'nextSibling')",=0A=
	prev: "jQuery.nth(a,2,'previousSibling')",=0A=
	nextAll: "jQuery.dir(a,'nextSibling')",=0A=
	prevAll: "jQuery.dir(a,'previousSibling')",=0A=
	siblings: "jQuery.sibling(a.parentNode.firstChild,a)",=0A=
	children: "jQuery.sibling(a.firstChild)",=0A=
	contents: =
"jQuery.nodeName(a,'iframe')?a.contentDocument||a.contentWindow.document:=
jQuery.makeArray(a.childNodes)"=0A=
}, function(i,n){=0A=
	jQuery.fn[ i ] =3D function(a) {=0A=
		var ret =3D jQuery.map(this,n);=0A=
		if ( a && typeof a =3D=3D "string" )=0A=
			ret =3D jQuery.multiFilter(a,ret);=0A=
		return this.pushStack( jQuery.unique(ret) );=0A=
	};=0A=
});=0A=
=0A=
jQuery.each({=0A=
	appendTo: "append",=0A=
	prependTo: "prepend",=0A=
	insertBefore: "before",=0A=
	insertAfter: "after",=0A=
	replaceAll: "replaceWith"=0A=
}, function(i,n){=0A=
	jQuery.fn[ i ] =3D function(){=0A=
		var a =3D arguments;=0A=
		return this.each(function(){=0A=
			for ( var j =3D 0, al =3D a.length; j < al; j++ )=0A=
				jQuery(a[j])[n]( this );=0A=
		});=0A=
	};=0A=
});=0A=
=0A=
jQuery.each( {=0A=
	removeAttr: function( key ) {=0A=
		jQuery.attr( this, key, "" );=0A=
		this.removeAttribute( key );=0A=
	},=0A=
	addClass: function(c){=0A=
		jQuery.className.add(this,c);=0A=
	},=0A=
	removeClass: function(c){=0A=
		jQuery.className.remove(this,c);=0A=
	},=0A=
	toggleClass: function( c ){=0A=
		jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" =
](this, c);=0A=
	},=0A=
	remove: function(a){=0A=
		if ( !a || jQuery.filter( a, [this] ).r.length ) {=0A=
			jQuery.removeData( this );=0A=
			this.parentNode.removeChild( this );=0A=
		}=0A=
	},=0A=
	empty: function() {=0A=
		// Clean up the cache=0A=
		jQuery("*", this).each(function(){ jQuery.removeData(this); });=0A=
=0A=
		while ( this.firstChild )=0A=
			this.removeChild( this.firstChild );=0A=
	}=0A=
}, function(i,n){=0A=
	jQuery.fn[ i ] =3D function() {=0A=
		return this.each( n, arguments );=0A=
	};=0A=
});=0A=
=0A=
jQuery.each( [ "Height", "Width" ], function(i,name){=0A=
	var n =3D name.toLowerCase();=0A=
	=0A=
	jQuery.fn[ n ] =3D function(h) {=0A=
		return this[0] =3D=3D window ?=0A=
			jQuery.browser.safari && self["inner" + name] ||=0A=
			jQuery.boxModel && Math.max(document.documentElement["client" + =
name], document.body["client" + name]) ||=0A=
			document.body["client" + name] :=0A=
		=0A=
			this[0] =3D=3D document ?=0A=
				Math.max( document.body["scroll" + name], document.body["offset" + =
name] ) :=0A=
        =0A=
				h =3D=3D undefined ?=0A=
					( this.length ? jQuery.css( this[0], n ) : null ) :=0A=
					this.css( n, h.constructor =3D=3D String ? h : h + "px" );=0A=
	};=0A=
});=0A=
=0A=
var chars =3D jQuery.browser.safari && parseInt(jQuery.browser.version) =
< 417 ?=0A=
		"(?:[\\w*_-]|\\\\.)" :=0A=
		"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",=0A=
	quickChild =3D new RegExp("^>\\s*(" + chars + "+)"),=0A=
	quickID =3D new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),=0A=
	quickClass =3D new RegExp("^([#.]?)(" + chars + "*)");=0A=
=0A=
jQuery.extend({=0A=
	expr: {=0A=
		"": "m[2]=3D=3D'*'||jQuery.nodeName(a,m[2])",=0A=
		"#": "a.getAttribute('id')=3D=3Dm[2]",=0A=
		":": {=0A=
			// Position Checks=0A=
			lt: "i<m[3]-0",=0A=
			gt: "i>m[3]-0",=0A=
			nth: "m[3]-0=3D=3Di",=0A=
			eq: "m[3]-0=3D=3Di",=0A=
			first: "i=3D=3D0",=0A=
			last: "i=3D=3Dr.length-1",=0A=
			even: "i%2=3D=3D0",=0A=
			odd: "i%2",=0A=
=0A=
			// Child Checks=0A=
			"first-child": "a.parentNode.getElementsByTagName('*')[0]=3D=3Da",=0A=
			"last-child": =
"jQuery.nth(a.parentNode.lastChild,1,'previousSibling')=3D=3Da",=0A=
			"only-child": =
"!jQuery.nth(a.parentNode.lastChild,2,'previousSibling')",=0A=
=0A=
			// Parent Checks=0A=
			parent: "a.firstChild",=0A=
			empty: "!a.firstChild",=0A=
=0A=
			// Text Check=0A=
			contains: "(a.textContent||a.innerText||'').indexOf(m[3])>=3D0",=0A=
=0A=
			// Visibility=0A=
			visible: =
'"hidden"!=3Da.type&&jQuery.css(a,"display")!=3D"none"&&jQuery.css(a,"vis=
ibility")!=3D"hidden"',=0A=
			hidden: =
'"hidden"=3D=3Da.type||jQuery.css(a,"display")=3D=3D"none"||jQuery.css(a,=
"visibility")=3D=3D"hidden"',=0A=
=0A=
			// Form attributes=0A=
			enabled: "!a.disabled",=0A=
			disabled: "a.disabled",=0A=
			checked: "a.checked",=0A=
			selected: "a.selected||jQuery.attr(a,'selected')",=0A=
=0A=
			// Form elements=0A=
			text: "'text'=3D=3Da.type",=0A=
			radio: "'radio'=3D=3Da.type",=0A=
			checkbox: "'checkbox'=3D=3Da.type",=0A=
			file: "'file'=3D=3Da.type",=0A=
			password: "'password'=3D=3Da.type",=0A=
			submit: "'submit'=3D=3Da.type",=0A=
			image: "'image'=3D=3Da.type",=0A=
			reset: "'reset'=3D=3Da.type",=0A=
			button: '"button"=3D=3Da.type||jQuery.nodeName(a,"button")',=0A=
			input: "/input|select|textarea|button/i.test(a.nodeName)",=0A=
=0A=
			// :has()=0A=
			has: "jQuery.find(m[3],a).length",=0A=
=0A=
			// :header=0A=
			header: "/h\\d/i.test(a.nodeName)",=0A=
=0A=
			// :animated=0A=
			animated: "jQuery.grep(jQuery.timers,function(fn){return =
a=3D=3Dfn.elem;}).length"=0A=
		}=0A=
	},=0A=
	=0A=
	// The regular expressions that power the parsing engine=0A=
	parse: [=0A=
		// Match: [@value=3D'test'], [@foo]=0A=
		/^(\[) *@?([\w-]+) *([!*$^~=3D]*) *('?"?)(.*?)\4 *\]/,=0A=
=0A=
		// Match: :contains('foo')=0A=
		/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,=0A=
=0A=
		// Match: :even, :last-chlid, #id, .class=0A=
		new RegExp("^([:.#]*)(" + chars + "+)")=0A=
	],=0A=
=0A=
	multiFilter: function( expr, elems, not ) {=0A=
		var old, cur =3D [];=0A=
=0A=
		while ( expr && expr !=3D old ) {=0A=
			old =3D expr;=0A=
			var f =3D jQuery.filter( expr, elems, not );=0A=
			expr =3D f.t.replace(/^\s*,\s*/, "" );=0A=
			cur =3D not ? elems =3D f.r : jQuery.merge( cur, f.r );=0A=
		}=0A=
=0A=
		return cur;=0A=
	},=0A=
=0A=
	find: function( t, context ) {=0A=
		// Quickly handle non-string expressions=0A=
		if ( typeof t !=3D "string" )=0A=
			return [ t ];=0A=
=0A=
		// Make sure that the context is a DOM Element=0A=
		if ( context && !context.nodeType )=0A=
			context =3D null;=0A=
=0A=
		// Set the correct context (if none is provided)=0A=
		context =3D context || document;=0A=
=0A=
		// Initialize the search=0A=
		var ret =3D [context], done =3D [], last;=0A=
=0A=
		// Continue while a selector expression exists, and while=0A=
		// we're no longer looping upon ourselves=0A=
		while ( t && last !=3D t ) {=0A=
			var r =3D [];=0A=
			last =3D t;=0A=
=0A=
			t =3D jQuery.trim(t);=0A=
=0A=
			var foundToken =3D false;=0A=
=0A=
			// An attempt at speeding up child selectors that=0A=
			// point to a specific element tag=0A=
			var re =3D quickChild;=0A=
			var m =3D re.exec(t);=0A=
=0A=
			if ( m ) {=0A=
				var nodeName =3D m[1].toUpperCase();=0A=
=0A=
				// Perform our own iteration and filter=0A=
				for ( var i =3D 0; ret[i]; i++ )=0A=
					for ( var c =3D ret[i].firstChild; c; c =3D c.nextSibling )=0A=
						if ( c.nodeType =3D=3D 1 && (nodeName =3D=3D "*" || =
c.nodeName.toUpperCase() =3D=3D nodeName.toUpperCase()) )=0A=
							r.push( c );=0A=
=0A=
				ret =3D r;=0A=
				t =3D t.replace( re, "" );=0A=
				if ( t.indexOf(" ") =3D=3D 0 ) continue;=0A=
				foundToken =3D true;=0A=
			} else {=0A=
				re =3D /^([>+~])\s*(\w*)/i;=0A=
=0A=
				if ( (m =3D re.exec(t)) !=3D null ) {=0A=
					r =3D [];=0A=
=0A=
					var nodeName =3D m[2], merge =3D {};=0A=
					m =3D m[1];=0A=
=0A=
					for ( var j =3D 0, rl =3D ret.length; j < rl; j++ ) {=0A=
						var n =3D m =3D=3D "~" || m =3D=3D "+" ? ret[j].nextSibling : =
ret[j].firstChild;=0A=
						for ( ; n; n =3D n.nextSibling )=0A=
							if ( n.nodeType =3D=3D 1 ) {=0A=
								var id =3D jQuery.data(n);=0A=
=0A=
								if ( m =3D=3D "~" && merge[id] ) break;=0A=
								=0A=
								if (!nodeName || n.nodeName.toUpperCase() =3D=3D =
nodeName.toUpperCase() ) {=0A=
									if ( m =3D=3D "~" ) merge[id] =3D true;=0A=
									r.push( n );=0A=
								}=0A=
								=0A=
								if ( m =3D=3D "+" ) break;=0A=
							}=0A=
					}=0A=
=0A=
					ret =3D r;=0A=
=0A=
					// And remove the token=0A=
					t =3D jQuery.trim( t.replace( re, "" ) );=0A=
					foundToken =3D true;=0A=
				}=0A=
			}=0A=
=0A=
			// See if there's still an expression, and that we haven't already=0A=
			// matched a token=0A=
			if ( t && !foundToken ) {=0A=
				// Handle multiple expressions=0A=
				if ( !t.indexOf(",") ) {=0A=
					// Clean the result set=0A=
					if ( context =3D=3D ret[0] ) ret.shift();=0A=
=0A=
					// Merge the result sets=0A=
					done =3D jQuery.merge( done, ret );=0A=
=0A=
					// Reset the context=0A=
					r =3D ret =3D [context];=0A=
=0A=
					// Touch up the selector string=0A=
					t =3D " " + t.substr(1,t.length);=0A=
=0A=
				} else {=0A=
					// Optimize for the case nodeName#idName=0A=
					var re2 =3D quickID;=0A=
					var m =3D re2.exec(t);=0A=
					=0A=
					// Re-organize the results, so that they're consistent=0A=
					if ( m ) {=0A=
					   m =3D [ 0, m[2], m[3], m[1] ];=0A=
=0A=
					} else {=0A=
						// Otherwise, do a traditional filter check for=0A=
						// ID, class, and element selectors=0A=
						re2 =3D quickClass;=0A=
						m =3D re2.exec(t);=0A=
					}=0A=
=0A=
					m[2] =3D m[2].replace(/\\/g, "");=0A=
=0A=
					var elem =3D ret[ret.length-1];=0A=
=0A=
					// Try to do a global search by ID, where we can=0A=
					if ( m[1] =3D=3D "#" && elem && elem.getElementById && =
!jQuery.isXMLDoc(elem) ) {=0A=
						// Optimization for HTML document case=0A=
						var oid =3D elem.getElementById(m[2]);=0A=
						=0A=
						// Do a quick check for the existence of the actual ID attribute=0A=
						// to avoid selecting by the name attribute in IE=0A=
						// also check to insure id is a string to avoid selecting an =
element with the name of 'id' inside a form=0A=
						if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && typeof =
oid.id =3D=3D "string" && oid.id !=3D m[2] )=0A=
							oid =3D jQuery('[@id=3D"'+m[2]+'"]', elem)[0];=0A=
=0A=
						// Do a quick check for node name (where applicable) so=0A=
						// that div#foo searches will be really fast=0A=
						ret =3D r =3D oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] =
: [];=0A=
					} else {=0A=
						// We need to find all descendant elements=0A=
						for ( var i =3D 0; ret[i]; i++ ) {=0A=
							// Grab the tag name being searched for=0A=
							var tag =3D m[1] =3D=3D "#" && m[3] ? m[3] : m[1] !=3D "" || m[0] =
=3D=3D "" ? "*" : m[2];=0A=
=0A=
							// Handle IE7 being really dumb about <object>s=0A=
							if ( tag =3D=3D "*" && ret[i].nodeName.toLowerCase() =3D=3D =
"object" )=0A=
								tag =3D "param";=0A=
=0A=
							r =3D jQuery.merge( r, ret[i].getElementsByTagName( tag ));=0A=
						}=0A=
=0A=
						// It's faster to filter by class and be done with it=0A=
						if ( m[1] =3D=3D "." )=0A=
							r =3D jQuery.classFilter( r, m[2] );=0A=
=0A=
						// Same with ID filtering=0A=
						if ( m[1] =3D=3D "#" ) {=0A=
							var tmp =3D [];=0A=
=0A=
							// Try to find the element with the ID=0A=
							for ( var i =3D 0; r[i]; i++ )=0A=
								if ( r[i].getAttribute("id") =3D=3D m[2] ) {=0A=
									tmp =3D [ r[i] ];=0A=
									break;=0A=
								}=0A=
=0A=
							r =3D tmp;=0A=
						}=0A=
=0A=
						ret =3D r;=0A=
					}=0A=
=0A=
					t =3D t.replace( re2, "" );=0A=
				}=0A=
=0A=
			}=0A=
=0A=
			// If a selector string still exists=0A=
			if ( t ) {=0A=
				// Attempt to filter it=0A=
				var val =3D jQuery.filter(t,r);=0A=
				ret =3D r =3D val.r;=0A=
				t =3D jQuery.trim(val.t);=0A=
			}=0A=
		}=0A=
=0A=
		// An error occurred with the selector;=0A=
		// just return an empty set instead=0A=
		if ( t )=0A=
			ret =3D [];=0A=
=0A=
		// Remove the root context=0A=
		if ( ret && context =3D=3D ret[0] )=0A=
			ret.shift();=0A=
=0A=
		// And combine the results=0A=
		done =3D jQuery.merge( done, ret );=0A=
=0A=
		return done;=0A=
	},=0A=
=0A=
	classFilter: function(r,m,not){=0A=
		m =3D " " + m + " ";=0A=
		var tmp =3D [];=0A=
		for ( var i =3D 0; r[i]; i++ ) {=0A=
			var pass =3D (" " + r[i].className + " ").indexOf( m ) >=3D 0;=0A=
			if ( !not && pass || not && !pass )=0A=
				tmp.push( r[i] );=0A=
		}=0A=
		return tmp;=0A=
	},=0A=
=0A=
	filter: function(t,r,not) {=0A=
		var last;=0A=
=0A=
		// Look for common filter expressions=0A=
		while ( t  && t !=3D last ) {=0A=
			last =3D t;=0A=
=0A=
			var p =3D jQuery.parse, m;=0A=
=0A=
			for ( var i =3D 0; p[i]; i++ ) {=0A=
				m =3D p[i].exec( t );=0A=
=0A=
				if ( m ) {=0A=
					// Remove what we just matched=0A=
					t =3D t.substring( m[0].length );=0A=
=0A=
					m[2] =3D m[2].replace(/\\/g, "");=0A=
					break;=0A=
				}=0A=
			}=0A=
=0A=
			if ( !m )=0A=
				break;=0A=
=0A=
			// :not() is a special case that can be optimized by=0A=
			// keeping it out of the expression list=0A=
			if ( m[1] =3D=3D ":" && m[2] =3D=3D "not" )=0A=
				r =3D jQuery.filter(m[3], r, true).r;=0A=
=0A=
			// We can get a big speed boost by filtering by class here=0A=
			else if ( m[1] =3D=3D "." )=0A=
				r =3D jQuery.classFilter(r, m[2], not);=0A=
=0A=
			else if ( m[1] =3D=3D "[" ) {=0A=
				var tmp =3D [], type =3D m[3];=0A=
				=0A=
				for ( var i =3D 0, rl =3D r.length; i < rl; i++ ) {=0A=
					var a =3D r[i], z =3D a[ jQuery.props[m[2]] || m[2] ];=0A=
					=0A=
					if ( z =3D=3D null || /href|src|selected/.test(m[2]) )=0A=
						z =3D jQuery.attr(a,m[2]) || '';=0A=
=0A=
					if ( (type =3D=3D "" && !!z ||=0A=
						 type =3D=3D "=3D" && z =3D=3D m[5] ||=0A=
						 type =3D=3D "!=3D" && z !=3D m[5] ||=0A=
						 type =3D=3D "^=3D" && z && !z.indexOf(m[5]) ||=0A=
						 type =3D=3D "$=3D" && z.substr(z.length - m[5].length) =3D=3D =
m[5] ||=0A=
						 (type =3D=3D "*=3D" || type =3D=3D "~=3D") && z.indexOf(m[5]) =
>=3D 0) ^ not )=0A=
							tmp.push( a );=0A=
				}=0A=
				=0A=
				r =3D tmp;=0A=
=0A=
			// We can get a speed boost by handling nth-child here=0A=
			} else if ( m[1] =3D=3D ":" && m[2] =3D=3D "nth-child" ) {=0A=
				var merge =3D {}, tmp =3D [],=0A=
					test =3D /(\d*)n\+?(\d*)/.exec(=0A=
						m[3] =3D=3D "even" && "2n" || m[3] =3D=3D "odd" && "2n+1" ||=0A=
						!/\D/.test(m[3]) && "n+" + m[3] || m[3]),=0A=
					first =3D (test[1] || 1) - 0, last =3D test[2] - 0;=0A=
=0A=
				for ( var i =3D 0, rl =3D r.length; i < rl; i++ ) {=0A=
					var node =3D r[i], parentNode =3D node.parentNode, id =3D =
jQuery.data(parentNode);=0A=
=0A=
					if ( !merge[id] ) {=0A=
						var c =3D 1;=0A=
=0A=
						for ( var n =3D parentNode.firstChild; n; n =3D n.nextSibling )=0A=
							if ( n.nodeType =3D=3D 1 )=0A=
								n.nodeIndex =3D c++;=0A=
=0A=
						merge[id] =3D true;=0A=
					}=0A=
=0A=
					var add =3D false;=0A=
=0A=
					if ( first =3D=3D 1 ) {=0A=
						if ( last =3D=3D 0 || node.nodeIndex =3D=3D last )=0A=
							add =3D true;=0A=
					} else if ( (node.nodeIndex + last) % first =3D=3D 0 )=0A=
						add =3D true;=0A=
=0A=
					if ( add ^ not )=0A=
						tmp.push( node );=0A=
				}=0A=
=0A=
				r =3D tmp;=0A=
=0A=
			// Otherwise, find the expression to execute=0A=
			} else {=0A=
				var f =3D jQuery.expr[m[1]];=0A=
				if ( typeof f !=3D "string" )=0A=
					f =3D jQuery.expr[m[1]][m[2]];=0A=
=0A=
				// Build a custom macro to enclose it=0A=
				f =3D eval("false||function(a,i){return " + f + "}");=0A=
=0A=
				// Execute it against the current filter=0A=
				r =3D jQuery.grep( r, f, not );=0A=
			}=0A=
		}=0A=
=0A=
		// Return an array of filtered elements (r)=0A=
		// and the modified expression string (t)=0A=
		return { r: r, t: t };=0A=
	},=0A=
=0A=
	dir: function( elem, dir ){=0A=
		var matched =3D [];=0A=
		var cur =3D elem[dir];=0A=
		while ( cur && cur !=3D document ) {=0A=
			if ( cur.nodeType =3D=3D 1 )=0A=
				matched.push( cur );=0A=
			cur =3D cur[dir];=0A=
		}=0A=
		return matched;=0A=
	},=0A=
	=0A=
	nth: function(cur,result,dir,elem){=0A=
		result =3D result || 1;=0A=
		var num =3D 0;=0A=
=0A=
		for ( ; cur; cur =3D cur[dir] )=0A=
			if ( cur.nodeType =3D=3D 1 && ++num =3D=3D result )=0A=
				break;=0A=
=0A=
		return cur;=0A=
	},=0A=
	=0A=
	sibling: function( n, elem ) {=0A=
		var r =3D [];=0A=
=0A=
		for ( ; n; n =3D n.nextSibling ) {=0A=
			if ( n.nodeType =3D=3D 1 && (!elem || n !=3D elem) )=0A=
				r.push( n );=0A=
		}=0A=
=0A=
		return r;=0A=
	}=0A=
});=0A=
/*=0A=
 * A number of helper functions used for managing events.=0A=
 * Many of the ideas behind this code orignated from =0A=
 * Dean Edwards' addEvent library.=0A=
 */=0A=
jQuery.event =3D {=0A=
=0A=
	// Bind an event to an element=0A=
	// Original by Dean Edwards=0A=
	add: function(element, type, handler, data) {=0A=
		// For whatever reason, IE has trouble passing the window object=0A=
		// around, causing it to be cloned in the process=0A=
		if ( jQuery.browser.msie && element.setInterval !=3D undefined )=0A=
			element =3D window;=0A=
=0A=
		// Make sure that the function being executed has a unique ID=0A=
		if ( !handler.guid )=0A=
			handler.guid =3D this.guid++;=0A=
			=0A=
		// if data is passed, bind to handler =0A=
		if( data !=3D undefined ) { =0A=
        		// Create temporary function pointer to original handler =0A=
			var fn =3D handler; =0A=
=0A=
			// Create unique handler function, wrapped around original handler =0A=
			handler =3D function() { =0A=
				// Pass arguments and context to original handler =0A=
				return fn.apply(this, arguments); =0A=
			};=0A=
=0A=
			// Store data in unique handler =0A=
			handler.data =3D data;=0A=
=0A=
			// Set the guid of unique handler to the same of original handler, so =
it can be removed =0A=
			handler.guid =3D fn.guid;=0A=
		}=0A=
=0A=
		// Namespaced event handlers=0A=
		var parts =3D type.split(".");=0A=
		type =3D parts[0];=0A=
		handler.type =3D parts[1];=0A=
=0A=
		// Init the element's event structure=0A=
		var events =3D jQuery.data(element, "events") || jQuery.data(element, =
"events", {});=0A=
		=0A=
		var handle =3D jQuery.data(element, "handle", function(){=0A=
			// returned undefined or false=0A=
			var val;=0A=
=0A=
			// Handle the second event of a trigger and when=0A=
			// an event is called after a page has unloaded=0A=
			if ( typeof jQuery =3D=3D "undefined" || jQuery.event.triggered )=0A=
				return val;=0A=
			=0A=
			val =3D jQuery.event.handle.apply(element, arguments);=0A=
			=0A=
			return val;=0A=
		});=0A=
=0A=
		// Get the current list of functions bound to this event=0A=
		var handlers =3D events[type];=0A=
=0A=
		// Init the event handler queue=0A=
		if (!handlers) {=0A=
			handlers =3D events[type] =3D {};	=0A=
			=0A=
			// And bind the global event handler to the element=0A=
			if (element.addEventListener)=0A=
				element.addEventListener(type, handle, false);=0A=
			else=0A=
				element.attachEvent("on" + type, handle);=0A=
		}=0A=
=0A=
		// Add the function to the element's handler list=0A=
		handlers[handler.guid] =3D handler;=0A=
=0A=
		// Keep track of which events have been used, for global triggering=0A=
		this.global[type] =3D true;=0A=
	},=0A=
=0A=
	guid: 1,=0A=
	global: {},=0A=
=0A=
	// Detach an event or set of events from an element=0A=
	remove: function(element, type, handler) {=0A=
		var events =3D jQuery.data(element, "events"), ret, index;=0A=
=0A=
		// Namespaced event handlers=0A=
		if ( typeof type =3D=3D "string" ) {=0A=
			var parts =3D type.split(".");=0A=
			type =3D parts[0];=0A=
		}=0A=
=0A=
		if ( events ) {=0A=
			// type is actually an event object here=0A=
			if ( type && type.type ) {=0A=
				handler =3D type.handler;=0A=
				type =3D type.type;=0A=
			}=0A=
			=0A=
			if ( !type ) {=0A=
				for ( type in events )=0A=
					this.remove( element, type );=0A=
=0A=
			} else if ( events[type] ) {=0A=
				// remove the given handler for the given type=0A=
				if ( handler )=0A=
					delete events[type][handler.guid];=0A=
				=0A=
				// remove all handlers for the given type=0A=
				else=0A=
					for ( handler in events[type] )=0A=
						// Handle the removal of namespaced events=0A=
						if ( !parts[1] || events[type][handler].type =3D=3D parts[1] )=0A=
							delete events[type][handler];=0A=
=0A=
				// remove generic event handler if no more handlers exist=0A=
				for ( ret in events[type] ) break;=0A=
				if ( !ret ) {=0A=
					if (element.removeEventListener)=0A=
						element.removeEventListener(type, jQuery.data(element, "handle"), =
false);=0A=
					else=0A=
						element.detachEvent("on" + type, jQuery.data(element, "handle"));=0A=
					ret =3D null;=0A=
					delete events[type];=0A=
				}=0A=
			}=0A=
=0A=
			// Remove the expando if it's no longer used=0A=
			for ( ret in events ) break;=0A=
			if ( !ret ) {=0A=
				jQuery.removeData( element, "events" );=0A=
				jQuery.removeData( element, "handle" );=0A=
			}=0A=
		}=0A=
	},=0A=
=0A=
	trigger: function(type, data, element, donative, extra) {=0A=
		// Clone the incoming data, if any=0A=
		data =3D jQuery.makeArray(data || []);=0A=
=0A=
		// Handle a global trigger=0A=
		if ( !element ) {=0A=
			// Only trigger if we've ever bound an event for it=0A=
			if ( this.global[type] )=0A=
				jQuery("*").add([window, document]).trigger(type, data);=0A=
=0A=
		// Handle triggering a single element=0A=
		} else {=0A=
			var val, ret, fn =3D jQuery.isFunction( element[ type ] || null ),=0A=
				// Check to see if we need to provide a fake event, or not=0A=
				evt =3D !data[0] || !data[0].preventDefault;=0A=
			=0A=
			// Pass along a fake event=0A=
			if ( evt )=0A=
				data.unshift( this.fix({ type: type, target: element }) );=0A=
=0A=
			// Trigger the event=0A=
			if ( jQuery.isFunction( jQuery.data(element, "handle") ) )=0A=
				val =3D jQuery.data(element, "handle").apply( element, data );=0A=
=0A=
			// Handle triggering native .onfoo handlers=0A=
			if ( !fn && element["on"+type] && element["on"+type].apply( element, =
data ) =3D=3D=3D false )=0A=
				val =3D false;=0A=
=0A=
			// Extra functions don't get the custom event object=0A=
			if ( evt )=0A=
				data.shift();=0A=
=0A=
			// Handle triggering of extra function=0A=
			if ( extra && extra.apply( element, data ) =3D=3D=3D false )=0A=
				val =3D false;=0A=
=0A=
			// Trigger the native events (except for clicks on links)=0A=
			if ( fn && donative !=3D=3D false && val !=3D=3D false && =
!(jQuery.nodeName(element, 'a') && type =3D=3D "click") ) {=0A=
				this.triggered =3D true;=0A=
				element[ type ]();=0A=
			}=0A=
=0A=
			this.triggered =3D false;=0A=
		}=0A=
=0A=
		return val;=0A=
	},=0A=
=0A=
	handle: function(event) {=0A=
		// returned undefined or false=0A=
		var val;=0A=
=0A=
		// Empty object is for triggered events with no data=0A=
		event =3D jQuery.event.fix( event || window.event || {} ); =0A=
=0A=
		// Namespaced event handlers=0A=
		var parts =3D event.type.split(".");=0A=
		event.type =3D parts[0];=0A=
=0A=
		var c =3D jQuery.data(this, "events") && jQuery.data(this, =
"events")[event.type], args =3D Array.prototype.slice.call( arguments, 1 =
);=0A=
		args.unshift( event );=0A=
=0A=
		for ( var j in c ) {=0A=
			// Pass in a reference to the handler function itself=0A=
			// So that we can later remove it=0A=
			args[0].handler =3D c[j];=0A=
			args[0].data =3D c[j].data;=0A=
=0A=
			// Filter the functions by class=0A=
			if ( !parts[1] || c[j].type =3D=3D parts[1] ) {=0A=
				var tmp =3D c[j].apply( this, args );=0A=
=0A=
				if ( val !=3D=3D false )=0A=
					val =3D tmp;=0A=
=0A=
				if ( tmp =3D=3D=3D false ) {=0A=
					event.preventDefault();=0A=
					event.stopPropagation();=0A=
				}=0A=
			}=0A=
		}=0A=
=0A=
		// Clean up added properties in IE to prevent memory leak=0A=
		if (jQuery.browser.msie)=0A=
			event.target =3D event.preventDefault =3D event.stopPropagation =3D=0A=
				event.handler =3D event.data =3D null;=0A=
=0A=
		return val;=0A=
	},=0A=
=0A=
	fix: function(event) {=0A=
		// store a copy of the original event object =0A=
		// and clone to set read-only properties=0A=
		var originalEvent =3D event;=0A=
		event =3D jQuery.extend({}, originalEvent);=0A=
		=0A=
		// add preventDefault and stopPropagation since =0A=
		// they will not work on the clone=0A=
		event.preventDefault =3D function() {=0A=
			// if preventDefault exists run it on the original event=0A=
			if (originalEvent.preventDefault)=0A=
				originalEvent.preventDefault();=0A=
			// otherwise set the returnValue property of the original event to =
false (IE)=0A=
			originalEvent.returnValue =3D false;=0A=
		};=0A=
		event.stopPropagation =3D function() {=0A=
			// if stopPropagation exists run it on the original event=0A=
			if (originalEvent.stopPropagation)=0A=
				originalEvent.stopPropagation();=0A=
			// otherwise set the cancelBubble property of the original event to =
true (IE)=0A=
			originalEvent.cancelBubble =3D true;=0A=
		};=0A=
		=0A=
		// Fix target property, if necessary=0A=
		if ( !event.target && event.srcElement )=0A=
			event.target =3D event.srcElement;=0A=
				=0A=
		// check if target is a textnode (safari)=0A=
		if (jQuery.browser.safari && event.target.nodeType =3D=3D 3)=0A=
			event.target =3D originalEvent.target.parentNode;=0A=
=0A=
		// Add relatedTarget, if necessary=0A=
		if ( !event.relatedTarget && event.fromElement )=0A=
			event.relatedTarget =3D event.fromElement =3D=3D event.target ? =
event.toElement : event.fromElement;=0A=
=0A=
		// Calculate pageX/Y if missing and clientX/Y available=0A=
		if ( event.pageX =3D=3D null && event.clientX !=3D null ) {=0A=
			var e =3D document.documentElement, b =3D document.body;=0A=
			event.pageX =3D event.clientX + (e && e.scrollLeft || b.scrollLeft || =
0);=0A=
			event.pageY =3D event.clientY + (e && e.scrollTop || b.scrollTop || =
0);=0A=
		}=0A=
			=0A=
		// Add which for key events=0A=
		if ( !event.which && (event.charCode || event.keyCode) )=0A=
			event.which =3D event.charCode || event.keyCode;=0A=
		=0A=
		// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for =
Macs)=0A=
		if ( !event.metaKey && event.ctrlKey )=0A=
			event.metaKey =3D event.ctrlKey;=0A=
=0A=
		// Add which for click: 1 =3D=3D left; 2 =3D=3D middle; 3 =3D=3D right=0A=
		// Note: button is not normalized, so don't use it=0A=
		if ( !event.which && event.button )=0A=
			event.which =3D (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( =
event.button & 4 ? 2 : 0 ) ));=0A=
			=0A=
		return event;=0A=
	}=0A=
};=0A=
=0A=
jQuery.fn.extend({=0A=
	bind: function( type, data, fn ) {=0A=
		return type =3D=3D "unload" ? this.one(type, data, fn) : =
this.each(function(){=0A=
			jQuery.event.add( this, type, fn || data, fn && data );=0A=
		});=0A=
	},=0A=
	=0A=
	one: function( type, data, fn ) {=0A=
		return this.each(function(){=0A=
			jQuery.event.add( this, type, function(event) {=0A=
				jQuery(this).unbind(event);=0A=
				return (fn || data).apply( this, arguments);=0A=
			}, fn && data);=0A=
		});=0A=
	},=0A=
=0A=
	unbind: function( type, fn ) {=0A=
		return this.each(function(){=0A=
			jQuery.event.remove( this, type, fn );=0A=
		});=0A=
	},=0A=
=0A=
	trigger: function( type, data, fn ) {=0A=
		return this.each(function(){=0A=
			jQuery.event.trigger( type, data, this, true, fn );=0A=
		});=0A=
	},=0A=
=0A=
	triggerHandler: function( type, data, fn ) {=0A=
		if ( this[0] )=0A=
			return jQuery.event.trigger( type, data, this[0], false, fn );=0A=
	},=0A=
=0A=
	toggle: function() {=0A=
		// Save reference to arguments for access in closure=0A=
		var a =3D arguments;=0A=
=0A=
		return this.click(function(e) {=0A=
			// Figure out which function to execute=0A=
			this.lastToggle =3D 0 =3D=3D this.lastToggle ? 1 : 0;=0A=
			=0A=
			// Make sure that clicks stop=0A=
			e.preventDefault();=0A=
			=0A=
			// and execute the function=0A=
			return a[this.lastToggle].apply( this, [e] ) || false;=0A=
		});=0A=
	},=0A=
=0A=
	hover: function(f,g) {=0A=
		=0A=
		// A private function for handling mouse 'hovering'=0A=
		function handleHover(e) {=0A=
			// Check if mouse(over|out) are still within the same parent element=0A=
			var p =3D e.relatedTarget;=0A=
	=0A=
			// Traverse up the tree=0A=
			while ( p && p !=3D this ) try { p =3D p.parentNode; } catch(e) { p =
=3D this; };=0A=
			=0A=
			// If we actually just moused on to a sub-element, ignore it=0A=
			if ( p =3D=3D this ) return false;=0A=
			=0A=
			// Execute the right function=0A=
			return (e.type =3D=3D "mouseover" ? f : g).apply(this, [e]);=0A=
		}=0A=
		=0A=
		// Bind the function to the two event listeners=0A=
		return this.mouseover(handleHover).mouseout(handleHover);=0A=
	},=0A=
	=0A=
	ready: function(f) {=0A=
		// Attach the listeners=0A=
		bindReady();=0A=
=0A=
		// If the DOM is already ready=0A=
		if ( jQuery.isReady )=0A=
			// Execute the function immediately=0A=
			f.apply( document, [jQuery] );=0A=
			=0A=
		// Otherwise, remember the function for later=0A=
		else=0A=
			// Add the function to the wait list=0A=
			jQuery.readyList.push( function() { return f.apply(this, [jQuery]); } =
);=0A=
	=0A=
		return this;=0A=
	}=0A=
});=0A=
=0A=
jQuery.extend({=0A=
	/*=0A=
	 * All the code that makes DOM Ready work nicely.=0A=
	 */=0A=
	isReady: false,=0A=
	readyList: [],=0A=
	=0A=
	// Handle when the DOM is ready=0A=
	ready: function() {=0A=
		// Make sure that the DOM is not already loaded=0A=
		if ( !jQuery.isReady ) {=0A=
			// Remember that the DOM is ready=0A=
			jQuery.isReady =3D true;=0A=
			=0A=
			// If there are functions bound, to execute=0A=
			if ( jQuery.readyList ) {=0A=
				// Execute all of them=0A=
				jQuery.each( jQuery.readyList, function(){=0A=
					this.apply( document );=0A=
				});=0A=
				=0A=
				// Reset the list of functions=0A=
				jQuery.readyList =3D null;=0A=
			}=0A=
			// Remove event listener to avoid memory leak=0A=
			if ( jQuery.browser.mozilla || jQuery.browser.opera )=0A=
				document.removeEventListener( "DOMContentLoaded", jQuery.ready, =
false );=0A=
			=0A=
			// Remove script element used by IE hack=0A=
			if( !window.frames.length ) // don't remove if frames are present =
(#1187)=0A=
				jQuery(window).load(function(){ jQuery("#__ie_init").remove(); });=0A=
		}=0A=
	}=0A=
});=0A=
=0A=
jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +=0A=
	"mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + =0A=
	"submit,keydown,keypress,keyup,error").split(","), function(i,o){=0A=
	=0A=
	// Handle event binding=0A=
	jQuery.fn[o] =3D function(f){=0A=
		return f ? this.bind(o, f) : this.trigger(o);=0A=
	};=0A=
});=0A=
=0A=
var readyBound =3D false;=0A=
=0A=
function bindReady(){=0A=
	if ( readyBound ) return;=0A=
	readyBound =3D true;=0A=
=0A=
	// If Mozilla is used=0A=
	if ( jQuery.browser.mozilla || jQuery.browser.opera )=0A=
		// Use the handy event callback=0A=
		document.addEventListener( "DOMContentLoaded", jQuery.ready, false );=0A=
	=0A=
	// If IE is used, use the excellent hack by Matthias Miller=0A=
	// =
http://www.outofhanwell.com/blog/index.php?title=3Dthe_window_onload_prob=
lem_revisited=0A=
	else if ( jQuery.browser.msie ) {=0A=
	=0A=
		// Only works if you document.write() it=0A=
		document.write("<scr" + "ipt id=3D__ie_init defer=3Dtrue " + =0A=
			"src=3D//:><\/script>");=0A=
	=0A=
		// Use the defer script hack=0A=
		var script =3D document.getElementById("__ie_init");=0A=
		=0A=
		// script does not exist if jQuery is loaded dynamically=0A=
		if ( script ) =0A=
			script.onreadystatechange =3D function() {=0A=
				if ( this.readyState !=3D "complete" ) return;=0A=
				jQuery.ready();=0A=
			};=0A=
	=0A=
		// Clear from memory=0A=
		script =3D null;=0A=
	=0A=
	// If Safari  is used=0A=
	} else if ( jQuery.browser.safari )=0A=
		// Continually check to see if the document.readyState is valid=0A=
		jQuery.safariTimer =3D setInterval(function(){=0A=
			// loaded and complete are both valid states=0A=
			if ( document.readyState =3D=3D "loaded" || =0A=
				document.readyState =3D=3D "complete" ) {=0A=
	=0A=
				// If either one are found, remove the timer=0A=
				clearInterval( jQuery.safariTimer );=0A=
				jQuery.safariTimer =3D null;=0A=
	=0A=
				// and execute any waiting functions=0A=
				jQuery.ready();=0A=
			}=0A=
		}, 10); =0A=
=0A=
	// A fallback to window.onload, that will always work=0A=
	jQuery.event.add( window, "load", jQuery.ready );=0A=
}=0A=
jQuery.fn.extend({=0A=
	load: function( url, params, callback ) {=0A=
		if ( jQuery.isFunction( url ) )=0A=
			return this.bind("load", url);=0A=
=0A=
		var off =3D url.indexOf(" ");=0A=
		if ( off >=3D 0 ) {=0A=
			var selector =3D url.slice(off, url.length);=0A=
			url =3D url.slice(0, off);=0A=
		}=0A=
=0A=
		callback =3D callback || function(){};=0A=
=0A=
		// Default to a GET request=0A=
		var type =3D "GET";=0A=
=0A=
		// If the second parameter was provided=0A=
		if ( params )=0A=
			// If it's a function=0A=
			if ( jQuery.isFunction( params ) ) {=0A=
				// We assume that it's the callback=0A=
				callback =3D params;=0A=
				params =3D null;=0A=
=0A=
			// Otherwise, build a param string=0A=
			} else {=0A=
				params =3D jQuery.param( params );=0A=
				type =3D "POST";=0A=
			}=0A=
=0A=
		var self =3D this;=0A=
=0A=
		// Request the remote document=0A=
		jQuery.ajax({=0A=
			url: url,=0A=
			type: type,=0A=
			data: params,=0A=
			complete: function(res, status){=0A=
				// If successful, inject the HTML into all the matched elements=0A=
				if ( status =3D=3D "success" || status =3D=3D "notmodified" )=0A=
					// See if a selector was specified=0A=
					self.html( selector ?=0A=
						// Create a dummy div to hold the results=0A=
						jQuery("<div/>")=0A=
							// inject the contents of the document in, removing the scripts=0A=
							// to avoid any 'Permission Denied' errors in IE=0A=
							.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))=0A=
=0A=
							// Locate the specified elements=0A=
							.find(selector) :=0A=
=0A=
						// If not, just inject the full result=0A=
						res.responseText );=0A=
=0A=
				// Add delay to account for Safari's delay in globalEval=0A=
				setTimeout(function(){=0A=
					self.each( callback, [res.responseText, status, res] );=0A=
				}, 13);=0A=
			}=0A=
		});=0A=
		return this;=0A=
	},=0A=
=0A=
	serialize: function() {=0A=
		return jQuery.param(this.serializeArray());=0A=
	},=0A=
	serializeArray: function() {=0A=
		return this.map(function(){=0A=
			return jQuery.nodeName(this, "form") ?=0A=
				jQuery.makeArray(this.elements) : this;=0A=
		})=0A=
		.filter(function(){=0A=
			return this.name && !this.disabled && =0A=
				(this.checked || /select|textarea/i.test(this.nodeName) || =0A=
					/text|hidden|password/i.test(this.type));=0A=
		})=0A=
		.map(function(i, elem){=0A=
			var val =3D jQuery(this).val();=0A=
			return val =3D=3D null ? null :=0A=
				val.constructor =3D=3D Array ?=0A=
					jQuery.map( val, function(i, val){=0A=
						return {name: elem.name, value: val};=0A=
					}) :=0A=
					{name: elem.name, value: val};=0A=
		}).get();=0A=
	}=0A=
});=0A=
=0A=
// Attach a bunch of functions for handling common AJAX events=0A=
jQuery.each( =
"ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(",=
"), function(i,o){=0A=
	jQuery.fn[o] =3D function(f){=0A=
		return this.bind(o, f);=0A=
	};=0A=
});=0A=
=0A=
var jsc =3D (new Date).getTime();=0A=
=0A=
jQuery.extend({=0A=
	get: function( url, data, callback, type ) {=0A=
		// shift arguments if data argument was ommited=0A=
		if ( jQuery.isFunction( data ) ) {=0A=
			callback =3D data;=0A=
			data =3D null;=0A=
		}=0A=
		=0A=
		return jQuery.ajax({=0A=
			type: "GET",=0A=
			url: url,=0A=
			data: data,=0A=
			success: callback,=0A=
			dataType: type=0A=
		});=0A=
	},=0A=
=0A=
	getScript: function( url, callback ) {=0A=
		return jQuery.get(url, null, callback, "script");=0A=
	},=0A=
=0A=
	getJSON: function( url, data, callback ) {=0A=
		return jQuery.get(url, data, callback, "json");=0A=
	},=0A=
=0A=
	post: function( url, data, callback, type ) {=0A=
		if ( jQuery.isFunction( data ) ) {=0A=
			callback =3D data;=0A=
			data =3D {};=0A=
		}=0A=
=0A=
		return jQuery.ajax({=0A=
			type: "POST",=0A=
			url: url,=0A=
			data: data,=0A=
			success: callback,=0A=
			dataType: type=0A=
		});=0A=
	},=0A=
=0A=
	ajaxSetup: function( settings ) {=0A=
		jQuery.extend( jQuery.ajaxSettings, settings );=0A=
	},=0A=
=0A=
	ajaxSettings: {=0A=
		global: true,=0A=
		type: "GET",=0A=
		timeout: 0,=0A=
		contentType: "application/x-www-form-urlencoded",=0A=
		processData: true,=0A=
		async: true,=0A=
		data: null=0A=
	},=0A=
	=0A=
	// Last-Modified header cache for next request=0A=
	lastModified: {},=0A=
=0A=
	ajax: function( s ) {=0A=
		var jsonp, jsre =3D /=3D(\?|%3F)/g, status, data;=0A=
=0A=
		// Extend the settings, but re-extend 's' so that it can be=0A=
		// checked again later (in the test suite, specifically)=0A=
		s =3D jQuery.extend(true, s, jQuery.extend(true, {}, =
jQuery.ajaxSettings, s));=0A=
=0A=
		// convert data if not already a string=0A=
		if ( s.data && s.processData && typeof s.data !=3D "string" )=0A=
			s.data =3D jQuery.param(s.data);=0A=
=0A=
		// Break the data into one single string=0A=
		var q =3D s.url.indexOf("?");=0A=
		if ( q > -1 ) {=0A=
			s.data =3D (s.data ? s.data + "&" : "") + s.url.slice(q + 1);=0A=
			s.url =3D s.url.slice(0, q);=0A=
		}=0A=
=0A=
		// Handle JSONP Parameter Callbacks=0A=
		if ( s.dataType =3D=3D "jsonp" ) {=0A=
			if ( !s.data || !s.data.match(jsre) )=0A=
				s.data =3D (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + =
"=3D?";=0A=
			s.dataType =3D "json";=0A=
		}=0A=
=0A=
		// Build temporary JSONP function=0A=
		if ( s.dataType =3D=3D "json" && s.data && s.data.match(jsre) ) {=0A=
			jsonp =3D "jsonp" + jsc++;=0A=
			s.data =3D s.data.replace(jsre, "=3D" + jsonp);=0A=
=0A=
			// We need to make sure=0A=
			// that a JSONP style response is executed properly=0A=
			s.dataType =3D "script";=0A=
=0A=
			// Handle JSONP-style loading=0A=
			window[ jsonp ] =3D function(tmp){=0A=
				data =3D tmp;=0A=
				success();=0A=
				// Garbage collect=0A=
				window[ jsonp ] =3D undefined;=0A=
				try{ delete window[ jsonp ]; } catch(e){}=0A=
			};=0A=
		}=0A=
=0A=
		if ( s.dataType =3D=3D "script" && s.cache =3D=3D null )=0A=
			s.cache =3D false;=0A=
=0A=
		if ( s.cache =3D=3D=3D false && s.type.toLowerCase() =3D=3D "get" )=0A=
			s.data =3D (s.data ? s.data + "&" : "") + "_=3D" + (new =
Date()).getTime();=0A=
=0A=
		// If data is available, append data to url for get requests=0A=
		if ( s.data && s.type.toLowerCase() =3D=3D "get" ) {=0A=
			s.url +=3D "?" + s.data;=0A=
=0A=
			// IE likes to send both get and post data, prevent this=0A=
			s.data =3D null;=0A=
		}=0A=
=0A=
		// Watch for a new set of requests=0A=
		if ( s.global && ! jQuery.active++ )=0A=
			jQuery.event.trigger( "ajaxStart" );=0A=
=0A=
		// If we're requesting a remote document=0A=
		// and trying to load JSON or Script=0A=
		if ( !s.url.indexOf("http") && s.dataType =3D=3D "script" ) {=0A=
			var head =3D document.getElementsByTagName("head")[0];=0A=
			var script =3D document.createElement("script");=0A=
			script.src =3D s.url;=0A=
=0A=
			// Handle Script loading=0A=
			if ( !jsonp && (s.success || s.complete) ) {=0A=
				var done =3D false;=0A=
=0A=
				// Attach handlers for all browsers=0A=
				script.onload =3D script.onreadystatechange =3D function(){=0A=
					if ( !done && (!this.readyState || =0A=
							this.readyState =3D=3D "loaded" || this.readyState =3D=3D =
"complete") ) {=0A=
						done =3D true;=0A=
						success();=0A=
						complete();=0A=
						head.removeChild( script );=0A=
					}=0A=
				};=0A=
			}=0A=
=0A=
			head.appendChild(script);=0A=
=0A=
			// We handle everything using the script element injection=0A=
			return;=0A=
		}=0A=
=0A=
		var requestDone =3D false;=0A=
=0A=
		// Create the request object; Microsoft failed to properly=0A=
		// implement the XMLHttpRequest in IE7, so we use the ActiveXObject =
when it is available=0A=
		var xml =3D window.ActiveXObject ? new =
ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();=0A=
=0A=
		// Open the socket=0A=
		xml.open(s.type, s.url, s.async);=0A=
=0A=
		// Set the correct header, if data is being sent=0A=
		if ( s.data )=0A=
			xml.setRequestHeader("Content-Type", s.contentType);=0A=
=0A=
		// Set the If-Modified-Since header, if ifModified mode.=0A=
		if ( s.ifModified )=0A=
			xml.setRequestHeader("If-Modified-Since",=0A=
				jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );=0A=
=0A=
		// Set header so the called script knows that it's an XMLHttpRequest=0A=
		xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");=0A=
=0A=
		// Allow custom headers/mimetypes=0A=
		if ( s.beforeSend )=0A=
			s.beforeSend(xml);=0A=
			=0A=
		if ( s.global )=0A=
		    jQuery.event.trigger("ajaxSend", [xml, s]);=0A=
=0A=
		// Wait for a response to come back=0A=
		var onreadystatechange =3D function(isTimeout){=0A=
			// The transfer is complete and the data is available, or the request =
timed out=0A=
			if ( !requestDone && xml && (xml.readyState =3D=3D 4 || isTimeout =
=3D=3D "timeout") ) {=0A=
				requestDone =3D true;=0A=
				=0A=
				// clear poll interval=0A=
				if (ival) {=0A=
					clearInterval(ival);=0A=
					ival =3D null;=0A=
				}=0A=
				=0A=
				status =3D isTimeout =3D=3D "timeout" && "timeout" ||=0A=
					!jQuery.httpSuccess( xml ) && "error" ||=0A=
					s.ifModified && jQuery.httpNotModified( xml, s.url ) && =
"notmodified" ||=0A=
					"success";=0A=
=0A=
				if ( status =3D=3D "success" ) {=0A=
					// Watch for, and catch, XML document parse errors=0A=
					try {=0A=
						// process the data (runs the xml through httpData regardless of =
callback)=0A=
						data =3D jQuery.httpData( xml, s.dataType );=0A=
					} catch(e) {=0A=
						status =3D "parsererror";=0A=
					}=0A=
				}=0A=
=0A=
				// Make sure that the request was successful or notmodified=0A=
				if ( status =3D=3D "success" ) {=0A=
					// Cache Last-Modified header, if ifModified mode.=0A=
					var modRes;=0A=
					try {=0A=
						modRes =3D xml.getResponseHeader("Last-Modified");=0A=
					} catch(e) {} // swallow exception thrown by FF if header is not =
available=0A=
	=0A=
					if ( s.ifModified && modRes )=0A=
						jQuery.lastModified[s.url] =3D modRes;=0A=
=0A=
					// JSONP handles its own success callback=0A=
					if ( !jsonp )=0A=
						success();	=0A=
				} else=0A=
					jQuery.handleError(s, xml, status);=0A=
=0A=
				// Fire the complete handlers=0A=
				complete();=0A=
=0A=
				// Stop memory leaks=0A=
				if ( s.async )=0A=
					xml =3D null;=0A=
			}=0A=
		};=0A=
		=0A=
		if ( s.async ) {=0A=
			// don't attach the handler to the request, just poll it instead=0A=
			var ival =3D setInterval(onreadystatechange, 13); =0A=
=0A=
			// Timeout checker=0A=
			if ( s.timeout > 0 )=0A=
				setTimeout(function(){=0A=
					// Check to see if the request is still happening=0A=
					if ( xml ) {=0A=
						// Cancel the request=0A=
						xml.abort();=0A=
	=0A=
						if( !requestDone )=0A=
							onreadystatechange( "timeout" );=0A=
					}=0A=
				}, s.timeout);=0A=
		}=0A=
			=0A=
		// Send the data=0A=
		try {=0A=
			xml.send(s.data);=0A=
		} catch(e) {=0A=
			jQuery.handleError(s, xml, null, e);=0A=
		}=0A=
		=0A=
		// firefox 1.5 doesn't fire statechange for sync requests=0A=
		if ( !s.async )=0A=
			onreadystatechange();=0A=
		=0A=
		// return XMLHttpRequest to allow aborting the request etc.=0A=
		return xml;=0A=
=0A=
		function success(){=0A=
			// If a local callback was specified, fire it and pass it the data=0A=
			if ( s.success )=0A=
				s.success( data, status );=0A=
=0A=
			// Fire the global callback=0A=
			if ( s.global )=0A=
				jQuery.event.trigger( "ajaxSuccess", [xml, s] );=0A=
		}=0A=
=0A=
		function complete(){=0A=
			// Process result=0A=
			if ( s.complete )=0A=
				s.complete(xml, status);=0A=
=0A=
			// The request was completed=0A=
			if ( s.global )=0A=
				jQuery.event.trigger( "ajaxComplete", [xml, s] );=0A=
=0A=
			// Handle the global AJAX counter=0A=
			if ( s.global && ! --jQuery.active )=0A=
				jQuery.event.trigger( "ajaxStop" );=0A=
		}=0A=
	},=0A=
=0A=
	handleError: function( s, xml, status, e ) {=0A=
		// If a local callback was specified, fire it=0A=
		if ( s.error ) s.error( xml, status, e );=0A=
=0A=
		// Fire the global callback=0A=
		if ( s.global )=0A=
			jQuery.event.trigger( "ajaxError", [xml, s, e] );=0A=
	},=0A=
=0A=
	// Counter for holding the number of active queries=0A=
	active: 0,=0A=
=0A=
	// Determines if an XMLHttpRequest was successful or not=0A=
	httpSuccess: function( r ) {=0A=
		try {=0A=
			return !r.status && location.protocol =3D=3D "file:" ||=0A=
				( r.status >=3D 200 && r.status < 300 ) || r.status =3D=3D 304 ||=0A=
				jQuery.browser.safari && r.status =3D=3D undefined;=0A=
		} catch(e){}=0A=
		return false;=0A=
	},=0A=
=0A=
	// Determines if an XMLHttpRequest returns NotModified=0A=
	httpNotModified: function( xml, url ) {=0A=
		try {=0A=
			var xmlRes =3D xml.getResponseHeader("Last-Modified");=0A=
=0A=
			// Firefox always returns 200. check Last-Modified date=0A=
			return xml.status =3D=3D 304 || xmlRes =3D=3D =
jQuery.lastModified[url] ||=0A=
				jQuery.browser.safari && xml.status =3D=3D undefined;=0A=
		} catch(e){}=0A=
		return false;=0A=
	},=0A=
=0A=
	httpData: function( r, type ) {=0A=
		var ct =3D r.getResponseHeader("content-type");=0A=
		var xml =3D type =3D=3D "xml" || !type && ct && ct.indexOf("xml") >=3D =
0;=0A=
		var data =3D xml ? r.responseXML : r.responseText;=0A=
=0A=
		if ( xml && data.documentElement.tagName =3D=3D "parsererror" )=0A=
			throw "parsererror";=0A=
=0A=
		// If the type is "script", eval it in global context=0A=
		if ( type =3D=3D "script" )=0A=
			jQuery.globalEval( data );=0A=
=0A=
		// Get the JavaScript object, if JSON is used.=0A=
		if ( type =3D=3D "json" )=0A=
			data =3D eval("(" + data + ")");=0A=
=0A=
		return data;=0A=
	},=0A=
=0A=
	// Serialize an array of form elements or a set of=0A=
	// key/values into a query string=0A=
	param: function( a ) {=0A=
		var s =3D [];=0A=
=0A=
		// If an array was passed in, assume that it is an array=0A=
		// of form elements=0A=
		if ( a.constructor =3D=3D Array || a.jquery )=0A=
			// Serialize the form elements=0A=
			jQuery.each( a, function(){=0A=
				s.push( encodeURIComponent(this.name) + "=3D" + encodeURIComponent( =
this.value ) );=0A=
			});=0A=
=0A=
		// Otherwise, assume that it's an object of key/value pairs=0A=
		else=0A=
			// Serialize the key/values=0A=
			for ( var j in a )=0A=
				// If the value is an array then the key names need to be repeated=0A=
				if ( a[j] && a[j].constructor =3D=3D Array )=0A=
					jQuery.each( a[j], function(){=0A=
						s.push( encodeURIComponent(j) + "=3D" + encodeURIComponent( this ) =
);=0A=
					});=0A=
				else=0A=
					s.push( encodeURIComponent(j) + "=3D" + encodeURIComponent( a[j] ) =
);=0A=
=0A=
		// Return the resulting serialization=0A=
		return s.join("&").replace(/%20/g, "+");=0A=
	}=0A=
=0A=
});=0A=
jQuery.fn.extend({=0A=
	show: function(speed,callback){=0A=
		return speed ?=0A=
			this.animate({=0A=
				height: "show", width: "show", opacity: "show"=0A=
			}, speed, callback) :=0A=
			=0A=
			this.filter(":hidden").each(function(){=0A=
				this.style.display =3D this.oldblock ? this.oldblock : "";=0A=
				if ( jQuery.css(this,"display") =3D=3D "none" )=0A=
					this.style.display =3D "block";=0A=
			}).end();=0A=
	},=0A=
	=0A=
	hide: function(speed,callback){=0A=
		return speed ?=0A=
			this.animate({=0A=
				height: "hide", width: "hide", opacity: "hide"=0A=
			}, speed, callback) :=0A=
			=0A=
			this.filter(":visible").each(function(){=0A=
				this.oldblock =3D this.oldblock || jQuery.css(this,"display");=0A=
				if ( this.oldblock =3D=3D "none" )=0A=
					this.oldblock =3D "block";=0A=
				this.style.display =3D "none";=0A=
			}).end();=0A=
	},=0A=
=0A=
	// Save the old toggle function=0A=
	_toggle: jQuery.fn.toggle,=0A=
	=0A=
	toggle: function( fn, fn2 ){=0A=
		return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?=0A=
			this._toggle( fn, fn2 ) :=0A=
			fn ?=0A=
				this.animate({=0A=
					height: "toggle", width: "toggle", opacity: "toggle"=0A=
				}, fn, fn2) :=0A=
				this.each(function(){=0A=
					jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();=0A=
				});=0A=
	},=0A=
	=0A=
	slideDown: function(speed,callback){=0A=
		return this.animate({height: "show"}, speed, callback);=0A=
	},=0A=
	=0A=
	slideUp: function(speed,callback){=0A=
		return this.animate({height: "hide"}, speed, callback);=0A=
	},=0A=
=0A=
	slideToggle: function(speed, callback){=0A=
		return this.animate({height: "toggle"}, speed, callback);=0A=
	},=0A=
	=0A=
	fadeIn: function(speed, callback){=0A=
		return this.animate({opacity: "show"}, speed, callback);=0A=
	},=0A=
	=0A=
	fadeOut: function(speed, callback){=0A=
		return this.animate({opacity: "hide"}, speed, callback);=0A=
	},=0A=
	=0A=
	fadeTo: function(speed,to,callback){=0A=
		return this.animate({opacity: to}, speed, callback);=0A=
	},=0A=
	=0A=
	animate: function( prop, speed, easing, callback ) {=0A=
		var opt =3D jQuery.speed(speed, easing, callback);=0A=
=0A=
		return this[ opt.queue =3D=3D=3D false ? "each" : "queue" ](function(){=0A=
			opt =3D jQuery.extend({}, opt);=0A=
			var hidden =3D jQuery(this).is(":hidden"), self =3D this;=0A=
			=0A=
			for ( var p in prop ) {=0A=
				if ( prop[p] =3D=3D "hide" && hidden || prop[p] =3D=3D "show" && =
!hidden )=0A=
					return jQuery.isFunction(opt.complete) && opt.complete.apply(this);=0A=
=0A=
				if ( p =3D=3D "height" || p =3D=3D "width" ) {=0A=
					// Store display property=0A=
					opt.display =3D jQuery.css(this, "display");=0A=
=0A=
					// Make sure that nothing sneaks out=0A=
					opt.overflow =3D this.style.overflow;=0A=
				}=0A=
			}=0A=
=0A=
			if ( opt.overflow !=3D null )=0A=
				this.style.overflow =3D "hidden";=0A=
=0A=
			opt.curAnim =3D jQuery.extend({}, prop);=0A=
			=0A=
			jQuery.each( prop, function(name, val){=0A=
				var e =3D new jQuery.fx( self, opt, name );=0A=
=0A=
				if ( /toggle|show|hide/.test(val) )=0A=
					e[ val =3D=3D "toggle" ? hidden ? "show" : "hide" : val ]( prop );=0A=
				else {=0A=
					var parts =3D val.toString().match(/^([+-]?)([\d.]+)(.*)$/),=0A=
						start =3D e.cur(true) || 0;=0A=
=0A=
					if ( parts ) {=0A=
						end =3D parseFloat(parts[2]),=0A=
						unit =3D parts[3] || "px";=0A=
=0A=
						// We need to compute starting value=0A=
						if ( unit !=3D "px" ) {=0A=
							self.style[ name ] =3D end + unit;=0A=
							start =3D (end / e.cur(true)) * start;=0A=
							self.style[ name ] =3D start + unit;=0A=
						}=0A=
=0A=
						// If a +/- token was provided, we're doing a relative animation=0A=
						if ( parts[1] )=0A=
							end =3D ((parts[1] =3D=3D "-" ? -1 : 1) * end) + start;=0A=
=0A=
						e.custom( start, end, unit );=0A=
					} else=0A=
						e.custom( start, val, "" );=0A=
				}=0A=
			});=0A=
=0A=
			// For JS strict compliance=0A=
			return true;=0A=
		});=0A=
	},=0A=
	=0A=
	queue: function(type, fn){=0A=
		if ( !fn ) {=0A=
			fn =3D type;=0A=
			type =3D "fx";=0A=
		}=0A=
=0A=
		if ( !arguments.length )=0A=
			return queue( this[0], type );=0A=
=0A=
		return this.each(function(){=0A=
			if ( fn.constructor =3D=3D Array )=0A=
				queue(this, type, fn);=0A=
			else {=0A=
				queue(this, type).push( fn );=0A=
			=0A=
				if ( queue(this, type).length =3D=3D 1 )=0A=
					fn.apply(this);=0A=
			}=0A=
		});=0A=
	},=0A=
=0A=
	stop: function(){=0A=
		var timers =3D jQuery.timers;=0A=
=0A=
		return this.each(function(){=0A=
			for ( var i =3D 0; i < timers.length; i++ )=0A=
				if ( timers[i].elem =3D=3D this )=0A=
					timers.splice(i--, 1);=0A=
		}).dequeue();=0A=
	}=0A=
=0A=
});=0A=
=0A=
var queue =3D function( elem, type, array ) {=0A=
	if ( !elem )=0A=
		return;=0A=
=0A=
	var q =3D jQuery.data( elem, type + "queue" );=0A=
=0A=
	if ( !q || array )=0A=
		q =3D jQuery.data( elem, type + "queue", =0A=
			array ? jQuery.makeArray(array) : [] );=0A=
=0A=
	return q;=0A=
};=0A=
=0A=
jQuery.fn.dequeue =3D function(type){=0A=
	type =3D type || "fx";=0A=
=0A=
	return this.each(function(){=0A=
		var q =3D queue(this, type);=0A=
=0A=
		q.shift();=0A=
=0A=
		if ( q.length )=0A=
			q[0].apply( this );=0A=
	});=0A=
};=0A=
=0A=
jQuery.extend({=0A=
	=0A=
	speed: function(speed, easing, fn) {=0A=
		var opt =3D speed && speed.constructor =3D=3D Object ? speed : {=0A=
			complete: fn || !fn && easing || =0A=
				jQuery.isFunction( speed ) && speed,=0A=
			duration: speed,=0A=
			easing: fn && easing || easing && easing.constructor !=3D Function && =
easing=0A=
		};=0A=
=0A=
		opt.duration =3D (opt.duration && opt.duration.constructor =3D=3D =
Number ? =0A=
			opt.duration : =0A=
			{ slow: 600, fast: 200 }[opt.duration]) || 400;=0A=
	=0A=
		// Queueing=0A=
		opt.old =3D opt.complete;=0A=
		opt.complete =3D function(){=0A=
			jQuery(this).dequeue();=0A=
			if ( jQuery.isFunction( opt.old ) )=0A=
				opt.old.apply( this );=0A=
		};=0A=
	=0A=
		return opt;=0A=
	},=0A=
	=0A=
	easing: {=0A=
		linear: function( p, n, firstNum, diff ) {=0A=
			return firstNum + diff * p;=0A=
		},=0A=
		swing: function( p, n, firstNum, diff ) {=0A=
			return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;=0A=
		}=0A=
	},=0A=
	=0A=
	timers: [],=0A=
=0A=
	fx: function( elem, options, prop ){=0A=
		this.options =3D options;=0A=
		this.elem =3D elem;=0A=
		this.prop =3D prop;=0A=
=0A=
		if ( !options.orig )=0A=
			options.orig =3D {};=0A=
	}=0A=
=0A=
});=0A=
=0A=
jQuery.fx.prototype =3D {=0A=
=0A=
	// Simple function for setting a style value=0A=
	update: function(){=0A=
		if ( this.options.step )=0A=
			this.options.step.apply( this.elem, [ this.now, this ] );=0A=
=0A=
		(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );=0A=
=0A=
		// Set display property to block for height/width animations=0A=
		if ( this.prop =3D=3D "height" || this.prop =3D=3D "width" )=0A=
			this.elem.style.display =3D "block";=0A=
	},=0A=
=0A=
	// Get the current size=0A=
	cur: function(force){=0A=
		if ( this.elem[this.prop] !=3D null && this.elem.style[this.prop] =
=3D=3D null )=0A=
			return this.elem[ this.prop ];=0A=
=0A=
		var r =3D parseFloat(jQuery.curCSS(this.elem, this.prop, force));=0A=
		return r && r > -10000 ? r : parseFloat(jQuery.css(this.elem, =
this.prop)) || 0;=0A=
	},=0A=
=0A=
	// Start an animation from one number to another=0A=
	custom: function(from, to, unit){=0A=
		this.startTime =3D (new Date()).getTime();=0A=
		this.start =3D from;=0A=
		this.end =3D to;=0A=
		this.unit =3D unit || this.unit || "px";=0A=
		this.now =3D this.start;=0A=
		this.pos =3D this.state =3D 0;=0A=
		this.update();=0A=
=0A=
		var self =3D this;=0A=
		function t(){=0A=
			return self.step();=0A=
		}=0A=
=0A=
		t.elem =3D this.elem;=0A=
=0A=
		jQuery.timers.push(t);=0A=
=0A=
		if ( jQuery.timers.length =3D=3D 1 ) {=0A=
			var timer =3D setInterval(function(){=0A=
				var timers =3D jQuery.timers;=0A=
				=0A=
				for ( var i =3D 0; i < timers.length; i++ )=0A=
					if ( !timers[i]() )=0A=
						timers.splice(i--, 1);=0A=
=0A=
				if ( !timers.length )=0A=
					clearInterval( timer );=0A=
			}, 13);=0A=
		}=0A=
	},=0A=
=0A=
	// Simple 'show' function=0A=
	show: function(){=0A=
		// Remember where we started, so that we can go back to it later=0A=
		this.options.orig[this.prop] =3D jQuery.attr( this.elem.style, =
this.prop );=0A=
		this.options.show =3D true;=0A=
=0A=
		// Begin the animation=0A=
		this.custom(0, this.cur());=0A=
=0A=
		// Make sure that we start at a small width/height to avoid any=0A=
		// flash of content=0A=
		if ( this.prop =3D=3D "width" || this.prop =3D=3D "height" )=0A=
			this.elem.style[this.prop] =3D "1px";=0A=
		=0A=
		// Start by showing the element=0A=
		jQuery(this.elem).show();=0A=
	},=0A=
=0A=
	// Simple 'hide' function=0A=
	hide: function(){=0A=
		// Remember where we started, so that we can go back to it later=0A=
		this.options.orig[this.prop] =3D jQuery.attr( this.elem.style, =
this.prop );=0A=
		this.options.hide =3D true;=0A=
=0A=
		// Begin the animation=0A=
		this.custom(this.cur(), 0);=0A=
	},=0A=
=0A=
	// Each step of an animation=0A=
	step: function(){=0A=
		var t =3D (new Date()).getTime();=0A=
=0A=
		if ( t > this.options.duration + this.startTime ) {=0A=
			this.now =3D this.end;=0A=
			this.pos =3D this.state =3D 1;=0A=
			this.update();=0A=
=0A=
			this.options.curAnim[ this.prop ] =3D true;=0A=
=0A=
			var done =3D true;=0A=
			for ( var i in this.options.curAnim )=0A=
				if ( this.options.curAnim[i] !=3D=3D true )=0A=
					done =3D false;=0A=
=0A=
			if ( done ) {=0A=
				if ( this.options.display !=3D null ) {=0A=
					// Reset the overflow=0A=
					this.elem.style.overflow =3D this.options.overflow;=0A=
				=0A=
					// Reset the display=0A=
					this.elem.style.display =3D this.options.display;=0A=
					if ( jQuery.css(this.elem, "display") =3D=3D "none" )=0A=
						this.elem.style.display =3D "block";=0A=
				}=0A=
=0A=
				// Hide the element if the "hide" operation was done=0A=
				if ( this.options.hide )=0A=
					this.elem.style.display =3D "none";=0A=
=0A=
				// Reset the properties, if the item has been hidden or shown=0A=
				if ( this.options.hide || this.options.show )=0A=
					for ( var p in this.options.curAnim )=0A=
						jQuery.attr(this.elem.style, p, this.options.orig[p]);=0A=
			}=0A=
=0A=
			// If a callback was provided, execute it=0A=
			if ( done && jQuery.isFunction( this.options.complete ) )=0A=
				// Execute the complete function=0A=
				this.options.complete.apply( this.elem );=0A=
=0A=
			return false;=0A=
		} else {=0A=
			var n =3D t - this.startTime;=0A=
			this.state =3D n / this.options.duration;=0A=
=0A=
			// Perform the easing function, defaults to swing=0A=
			this.pos =3D jQuery.easing[this.options.easing || =
(jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, =
this.options.duration);=0A=
			this.now =3D this.start + ((this.end - this.start) * this.pos);=0A=
=0A=
			// Perform the next step of the animation=0A=
			this.update();=0A=
		}=0A=
=0A=
		return true;=0A=
	}=0A=
=0A=
};=0A=
=0A=
jQuery.fx.step =3D {=0A=
	scrollLeft: function(fx){=0A=
		fx.elem.scrollLeft =3D fx.now;=0A=
	},=0A=
=0A=
	scrollTop: function(fx){=0A=
		fx.elem.scrollTop =3D fx.now;=0A=
	},=0A=
=0A=
	opacity: function(fx){=0A=
		jQuery.attr(fx.elem.style, "opacity", fx.now);=0A=
	},=0A=
=0A=
	_default: function(fx){=0A=
		fx.elem.style[ fx.prop ] =3D fx.now + fx.unit;=0A=
	}=0A=
};=0A=
// The Offset Method=0A=
// Originally By Brandon Aaron, part of the Dimension Plugin=0A=
// http://jquery.com/plugins/project/dimensions=0A=
jQuery.fn.offset =3D function() {=0A=
	var left =3D 0, top =3D 0, elem =3D this[0], results;=0A=
	=0A=
	if ( elem ) with ( jQuery.browser ) {=0A=
		var	absolute	=3D jQuery.css(elem, "position") =3D=3D "absolute", =0A=
		    	parent		=3D elem.parentNode, =0A=
		    	offsetParent	=3D elem.offsetParent, =0A=
		    	doc		=3D elem.ownerDocument,=0A=
			safari2		=3D safari && !absolute && parseInt(version) < 522;=0A=
	=0A=
		// Use getBoundingClientRect if available=0A=
		if ( elem.getBoundingClientRect ) {=0A=
			box =3D elem.getBoundingClientRect();=0A=
		=0A=
			// Add the document scroll offsets=0A=
			add(=0A=
				box.left + Math.max(doc.documentElement.scrollLeft, =
doc.body.scrollLeft),=0A=
				box.top  + Math.max(doc.documentElement.scrollTop,  =
doc.body.scrollTop)=0A=
			);=0A=
		=0A=
			// IE adds the HTML element's border, by default it is medium which =
is 2px=0A=
			// IE 6 and IE 7 quirks mode the border width is overwritable by the =
following css html { border: 0; }=0A=
			// IE 7 standards mode, the border is always 2px=0A=
			if ( msie ) {=0A=
				var border =3D jQuery("html").css("borderWidth");=0A=
				border =3D (border =3D=3D "medium" || jQuery.boxModel && =
parseInt(version) >=3D 7) && 2 || border;=0A=
				add( -border, -border );=0A=
			}=0A=
	=0A=
		// Otherwise loop through the offsetParents and parentNodes=0A=
		} else {=0A=
		=0A=
			// Initial element offsets=0A=
			add( elem.offsetLeft, elem.offsetTop );=0A=
		=0A=
			// Get parent offsets=0A=
			while ( offsetParent ) {=0A=
				// Add offsetParent offsets=0A=
				add( offsetParent.offsetLeft, offsetParent.offsetTop );=0A=
			=0A=
				// Mozilla and Safari > 2 does not include the border on offset =
parents=0A=
				// However Mozilla adds the border for table cells=0A=
				if ( mozilla && /^t[d|h]$/i.test(parent.tagName) || !safari2 )=0A=
					border( offsetParent );=0A=
				=0A=
				// Safari <=3D 2 doubles body offsets with an absolutely positioned =
element or parent=0A=
				if ( safari2 && !absolute && jQuery.css(offsetParent, "position") =
=3D=3D "absolute" )=0A=
					absolute =3D true;=0A=
			=0A=
				// Get next offsetParent=0A=
				offsetParent =3D offsetParent.offsetParent;=0A=
			}=0A=
		=0A=
			// Get parent scroll offsets=0A=
			while ( parent.tagName && /^body|html$/i.test(parent.tagName) ) {=0A=
				// Work around opera inline/table scrollLeft/Top bug=0A=
				if ( /^inline|table-row.*$/i.test(jQuery.css(parent, "display")) )=0A=
					// Subtract parent scroll offsets=0A=
					add( -parent.scrollLeft, -parent.scrollTop );=0A=
			=0A=
				// Mozilla does not add the border for a parent that has overflow =
!=3D visible=0A=
				if ( mozilla && jQuery.css(parent, "overflow") !=3D "visible" )=0A=
					border( parent );=0A=
			=0A=
				// Get next parent=0A=
				parent =3D parent.parentNode;=0A=
			}=0A=
		=0A=
			// Safari doubles body offsets with an absolutely positioned element =
or parent=0A=
			if ( safari && absolute )=0A=
				add( -doc.body.offsetLeft, -doc.body.offsetTop );=0A=
		}=0A=
=0A=
		// Return an object with top and left properties=0A=
		results =3D { top: top, left: left };=0A=
	}=0A=
=0A=
	return results;=0A=
=0A=
	function border(elem) {=0A=
		add( jQuery.css(elem, "borderLeftWidth"), jQuery.css(elem, =
"borderTopWidth") );=0A=
	}=0A=
=0A=
	function add(l, t) {=0A=
		left +=3D parseInt(l) || 0;=0A=
		top +=3D parseInt(t) || 0;=0A=
	}=0A=
};=0A=
})();=0A=

------=_NextPart_000_0000_01C8F15B.0456E260
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ndn.newsweek.com/site/js/lib/swfobject-mod.js

=EF=BB=BF/**=0A=
 * SWFObject v1.5: Flash Player detection and embed - =
http://blog.deconcept.com/swfobject/=0A=
 *=0A=
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT =
License:=0A=
 * http://www.opensource.org/licenses/mit-license.php=0A=
 *=0A=
 * NS: Modified to work with jquery=0A=
 */=0A=
if(typeof deconcept=3D=3D"undefined"){var deconcept=3Dnew =
Object();}if(typeof =
deconcept.util=3D=3D"undefined"){deconcept.util=3Dnew =
Object();}if(typeof =
deconcept.SWFObjectUtil=3D=3D"undefined"){deconcept.SWFObjectUtil=3Dnew =
Object();}deconcept.SWFObject=3Dfunction(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!=
document.getElementById){return;}this.DETECT_KEY=3D_a?_a:"detectflash";th=
is.skipDetect=3Ddeconcept.util.getRequestParameter(this.DETECT_KEY);this.=
params=3Dnew Object();this.variables=3Dnew =
Object();this.attributes=3Dnew =
Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id"=
,id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height=
",h);}if(_5){this.setAttribute("version",new =
deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=3Dd=
econcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&=
&this.installedVer.major>7){deconcept.SWFObject.doPrepUnload=3Dtrue;}if(c=
){this.addParam("bgcolor",c);}var =
q=3D_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpress=
Install",false);this.setAttribute("doExpressInstall",false);var =
_c=3D(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.s=
etAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);=
}};deconcept.SWFObject.prototype=3D{useExpressInstall:function(_d){this.x=
iSWFPath=3D!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInsta=
ll",true);},setAttribute:function(_e,_f){this.attributes[_e]=3D_f;},getAt=
tribute:function(_10){return =
this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=3D_12;=
},getParams:function(){return =
this.params;},addVariable:function(_13,_14){this.variables[_13]=3D_14;},g=
etVariable:function(_15){return =
this.variables[_15];},getVariables:function(){return =
this.variables;},getVariablePairs:function(){var _16=3Dnew Array();var =
key;var _18=3Dthis.getVariables();for(key in =
_18){_16[_16.length]=3Dkey+"=3D"+_18[key];}return =
_16;},getSWFHTML:function(){var =
_19=3D"";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.l=
ength){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplay=
erType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}var =
_1c=3Dthis.getVariablePairs().join("&");_19=3D"<embed =
type=3D\"application/x-shockwave-flash\" =
src=3D\""+this.getAttribute("swf")+"?"+_1c+"\" =
width=3D\""+this.getAttribute("width")+"\" =
height=3D\""+this.getAttribute("height")+"\" =
style=3D\""+this.getAttribute("style")+"\"";_19+=3D" =
id=3D\""+this.getAttribute("id")+"\" =
name=3D\""+this.getAttribute("id")+"\" ";var =
_1a=3Dthis.getParams();for(var key in =
_1a){_19+=3D[key]+"=3D\""+_1a[key]+"\" =
";}if(_1c.length>0){_19+=3D"flashvars=3D\""+_1c+"\"";}_19+=3D"/>";}else{i=
f(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType",=
"ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19=3D"<object =
id=3D\""+this.getAttribute("id")+"\" =
classid=3D\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" =
width=3D\""+this.getAttribute("width")+"\" =
height=3D\""+this.getAttribute("height")+"\" =
style=3D\""+this.getAttribute("style")+"\">";_19+=3D"<param =
name=3D\"movie\" value=3D\""+this.getAttribute("swf")+"\" />";var =
_1d=3Dthis.getParams();for(var key in _1d){_19+=3D"<param =
name=3D\""+key+"\" value=3D\""+_1d[key]+"\" />";}var =
_1f=3Dthis.getVariablePairs().join("&");if(_1f.length>0){_19+=3D"<param =
name=3D\"flashvars\" value=3D\""+_1f+"\" />";}_19+=3D"</object>";}return =
_19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var =
_21=3Dnew =
deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21=
)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.=
setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",es=
cape(this.getAttribute("xiRedirectUrl")));document.title=3Ddocument.title=
.slice(0,47)+" - Flash Player =
Installation";this.addVariable("MMdoctitle",document.title);}}if(this.ski=
pDetect||this.getAttribute("doExpressInstall")||this.installedVer.version=
IsValid(this.getAttribute("version"))){var n=3D(typeof =
_20=3D=3D"string")?document.getElementById(_20):_20;/*n.innerHTML=3Dthis.=
getSWFHTML();*/$(n).html(this.getSWFHTML());return =
true;}else{if(this.getAttribute("redirectUrl")!=3D""){document.location.r=
eplace(this.getAttribute("redirectUrl"));}}return =
false;}};deconcept.SWFObjectUtil.getPlayerVersion=3Dfunction(){var =
_23=3Dnew =
deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeType=
s.length){var x=3Dnavigator.plugins["Shockwave =
Flash"];if(x&&x.description){_23=3Dnew =
deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replac=
e(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&nav=
igator.userAgent.indexOf("Windows CE")>=3D0){var axo=3D1;var =
_26=3D3;while(axo){try{_26++;axo=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=3Dnew =
deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=3Dnull;}}}else{try{var =
axo=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var =
axo=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=3Dnew =
deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=3D"always";}catch=
(e){if(_23.major=3D=3D6){return _23;}}try{axo=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=3Dnull=
){_23=3Dnew deconcept.PlayerVersion(axo.GetVariable("$version").split(" =
")[1].split(","));}}}return =
_23;};deconcept.PlayerVersion=3Dfunction(_29){this.major=3D_29[0]!=3Dnull=
?parseInt(_29[0]):0;this.minor=3D_29[1]!=3Dnull?parseInt(_29[1]):0;this.r=
ev=3D_29[2]!=3Dnull?parseInt(_29[2]):0;};deconcept.PlayerVersion.prototyp=
e.versionIsValid=3Dfunction(fv){if(this.major<fv.major){return =
false;}if(this.major>fv.major){return =
true;}if(this.minor<fv.minor){return =
false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return =
false;}return =
true;};deconcept.util=3D{getRequestParameter:function(_2b){var =
q=3Ddocument.location.search||document.location.hash;if(_2b=3D=3Dnull){re=
turn q;}if(q){var _2d=3Dq.substring(1).split("&");for(var =
i=3D0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("=3D"))=3D=3D=
_2b){return _2d[i].substring((_2d[i].indexOf("=3D")+1));}}}return =
"";}};deconcept.SWFObjectUtil.cleanupSWFs=3Dfunction(){var =
_2f=3Ddocument.getElementsByTagName("OBJECT");for(var =
i=3D_2f.length-1;i>=3D0;i--){_2f[i].style.display=3D"none";for(var x in =
_2f[i]){if(typeof =
_2f[i][x]=3D=3D"function"){_2f[i][x]=3Dfunction(){};}}}};if(deconcept.SWF=
Object.doPrepUnload){if(!deconcept.unloadSet){deconcept.SWFObjectUtil.pre=
pUnload=3Dfunction(){__flash_unloadHandler=3Dfunction(){};__flash_savedUn=
loadHandler=3Dfunction(){};window.attachEvent("onunload",deconcept.SWFObj=
ectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",deconcept.SWFO=
bjectUtil.prepUnload);deconcept.unloadSet=3Dtrue;}}if(!document.getElemen=
tById&&document.all){document.getElementById=3Dfunction(id){return =
document.all[id];};}var =
getQueryParamValue=3Ddeconcept.util.getRequestParameter;var =
FlashObject=3Ddeconcept.SWFObject;var SWFObject=3Ddeconcept.SWFObject;
------=_NextPart_000_0000_01C8F15B.0456E260
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bc.newsweek.com/players/js/bcFullscreenPlayer.js

function bcFullscreenPlayer(config) =0A=
{=0A=
	var bcServerRunning =3D true;=0A=
=0A=
	if (bcServerRunning) =0A=
	{=0A=
		var version =3D deconcept.SWFObjectUtil.getPlayerVersion();=0A=
=0A=
		if (config["flashid"] =3D=3D null) =0A=
		{=0A=
			config["flashid"] =3D config["divid"]+"fobj";=0A=
		}=0A=
=0A=
		if (document.getElementById && (version['major'] =3D=3D 0)) =0A=
		{=0A=
			document.getElementById(config["divid"]).innerHTML =3D "<a =
href=3D'http://www.adobe.com/go/getflashplayer'><img =
src=3D'http://bc.newsweek.com/media/nw_flash_install_ccol.jpg' =
border=3D0></a>";=0A=
		} =0A=
		else if (document.getElementById && (version['major'] > 0 && =
version['major'] < 8)) =0A=
		{=0A=
			document.getElementById(config["divid"]).innerHTML =3D "<a =
href=3D'http://www.adobe.com/go/getflashplayer'><img =
src=3D'http://bc.newsweek.com/media/nw_flash_upgrade_ccol.jpg' =
border=3D0></a>";=0A=
		} =0A=
		else =0A=
		{=0A=
			var t =3D "";=0A=
			if (config["test"]) =0A=
			{=0A=
				t =3D "_test";=0A=
			}=0A=
			=0A=
			var swfPath =3D "http://bc.newsweek.com/players/v1/";=0A=
			var swfFile =3D "mini_player"+t+".swf";=0A=
			var width =3D 300;=0A=
			var height =3D 370;=0A=
=0A=
			if (config["width"] > 0) =0A=
			{=0A=
				width =3D config["width"];=0A=
			}=0A=
			if (config["height"] > 0) =0A=
			{=0A=
				height =3D config["height"];=0A=
			}=0A=
			=0A=
			if (matchConfig(config["url"])) =0A=
			{=0A=
				swfFile =3D "link_player.swf";=0A=
				width =3D 976;=0A=
				height =3D 550;=0A=
			} =0A=
			else =0A=
			{=0A=
				if (config["type"] =3D=3D "arthead") {=0A=
					swfFile =3D "arthead_player"+t+".swf";=0A=
					width =3D 610;=0A=
					height =3D 285;=0A=
				} =0A=
				else if (config["type"] =3D=3D "single") =0A=
				{=0A=
					swfFile =3D "single_player"+t+".swf";=0A=
					width =3D 610;=0A=
					height =3D 285;=0A=
				} =0A=
				else if (config["type"] =3D=3D "link") =0A=
				{=0A=
					swfFile =3D "link_player.swf";=0A=
					width =3D 976;=0A=
					height =3D 550;=0A=
				} =0A=
				else if (config["type"] =3D=3D "lineup") =0A=
				{=0A=
					swfFile =3D "lineup_player"+t+".swf";=0A=
					width =3D 610;=0A=
					height =3D 285;=0A=
				}=0A=
			}	=0A=
			=0A=
			swfFile +=3D "?v=3D3";=0A=
			=0A=
			=0A=
			config["width"] =3D width;=0A=
			config["height"] =3D height;=0A=
=0A=
			// Brightcove Settings=0A=
			var so =3D new SWFObject(swfPath+swfFile, config["flashid"], width, =
height, "8", config["bgcolor"]);=0A=
			=0A=
			=0A=
			if (config["wmode"]) =0A=
			{=0A=
				so.addParam("wmode", config["wmode"]);=0A=
			} =0A=
			=0A=
			for (var i in config) =0A=
			{=0A=
				if (config[i]) =0A=
				{=0A=
					so.addVariable(i, config[i]);=0A=
				}=0A=
			}=0A=
=0A=
			if (config["type"] =3D=3D "mini_lineup")=0A=
			{=0A=
				so.addVariable("startMinimized", "true");=0A=
			}=0A=
			else if (config["type"] =3D=3D "mini_standard")=0A=
			{=0A=
				so.addVariable("startMinimized", "false");=0A=
			}=0A=
			=0A=
			var queryStr =3D new String(window.location.search);=0A=
			queryStr =3D queryStr.substr(1);=0A=
			var queryPairs =3D queryStr.split("&");=0A=
			if(queryPairs.length>0){=0A=
				for(var x=3D0;x<queryPairs.length;x++){=0A=
					var valPair =3D queryPairs[x].split("=3D");=0A=
					if(valPair[0]!=3Dnull && valPair[1]!=3Dnull){=0A=
						so.addVariable(valPair[0], valPair[1]);=0A=
					}=0A=
				}=0A=
			}=0A=
			so.addVariable("autoStart", "true");=0A=
			so.addVariable("moreTab", "true");=0A=
			so.addVariable("location", window.location.href);=0A=
			so.addVariable("r", Math.floor(Math.random()*100000000));=0A=
			so.addParam("allowFullScreen", "true");=0A=
			so.addParam("allowScriptAccess", "always");=0A=
			so.addParam("allowScripting", "always");=0A=
			so.addParam("base", swfPath);=0A=
=0A=
			so.write(config["divid"]);=0A=
		} 	=0A=
	}=0A=
	else =0A=
	{=0A=
		document.getElementById(config["flashid"]).innerHTML =3D "FALSE";=0A=
	}=0A=
}=0A=
=0A=
function matchConfig(configURL) {=0A=
	if (configURL =3D=3D undefined) return false;=0A=
	=0A=
	var base =3D document.domain;=0A=
	var url =3D new String(window.location.href);=0A=
	url =3D url.substring(url.indexOf("//")+2, url.length);=0A=
	=0A=
	=0A=
	if (url.indexOf("?") !=3D -1)=0A=
	{=0A=
		url =3D url.substring(0, url.indexOf("?"));=0A=
	}=0A=
	=0A=
	var config_url =3D configURL.substring(configURL.indexOf("?")+1, =
configURL.length).split("=3D").join("/");=0A=
	//var targetURL =3D base + "/" + config_url;=0A=
	var targetURL =3D base + "/id/" + configURL;=0A=
	=0A=
	if (url =3D=3D targetURL || url =3D=3D "www." + targetURL) =0A=
	{=0A=
		return true;=0A=
	} =0A=
	else =0A=
	{=0A=
		return false;=0A=
	}=0A=
}=0A=
=0A=
//to prevent errors in netscape=0A=
function onFSCommand() {=0A=
}
------=_NextPart_000_0000_01C8F15B.0456E260
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.washingtonpost.com/wp-srv/ad/wpni_generic_ad.js

wpniAds =3D new Object();

//gets revsci info
if (document.domain !=3D '') {
document.write('<s\cript =
src=3D"http://js.revsci.net/gateway/gw.js?csid=3DJ05531"></s\cript>');
}

function postLoadDebug()
{
=09
	scripts =3D document.getElementsByTagName('script');
	for(var a=3D0;a<scripts.length;a++)
	{
		if(scripts[a].innerHTML.match('placeAd') && =
scripts[a].parentNode.nodeName.toLowerCase() !=3D 'head')
		{
			scripts[a].parentNode.innerHTML +=3D =
debugTextArea(scripts[a].parentNode.innerHTML,null);
		}
	}
}

if(typeof wpniSite =3D=3D 'undefined')
{
	wpniSite =3D '';
}
if(typeof wpniDomain =3D=3D 'undefined')
{
	wpniDomain =3D document.domain.split(".")[1] + "." + =
document.domain.split(".")[2];
}


wpniAds =3D new Object();
wpniAds.keyvalues =3D new Object();
wpniAds.adTypes =3D new Object();
wpniAds.utils =3D new Object();

wpniAds.deliveryType =3D new Object();

wpniAds.templates =3D new Object();
wpniAds.templates.rules =3D new Object();
wpniAds.templates.initRule =3D function (ruleName)
{
	this.rules[ruleName] =3D new Object();
	this.rules[ruleName].where =3D new Array('');
	this.rules[ruleName].when =3D new Array('');
	this.rules[ruleName].what =3D new Array('');
}

wpniAds.utils.wabs =3D new Object();
wpniAds.utils.wabs.recalc =3D function ()
{
	var rootElement =3D (document.compatMode !=3D =
'BackCompat')?document.documentElement:document.body;
	this.bodyheight =3D rootElement.scrollHeight;
	this.bodywidth =3D rootElement.scrollWidth;
	this.scrollheight=3D rootElement.scrollTop;
	this.scrollwidth=3D rootElement.scrollLeft;
	this.windowheight =3D rootElement.clientHeight;
	this.windowwidth=3D rootElement.clientWidth;	=09
}

function maxDim(_obj)
{
	var lcSize =3D _obj.size.toLowerCase();
	var dimArray =3D lcSize.split(',');
	var maxWidth =3D 0;
	var maxHeight =3D 0;
	for(var a =3D 0; a< dimArray.length; a++)
	{
		maxWidth =3D Math.max(dimArray[a].split('x')[0],maxWidth)
		maxHeight =3D Math.max(dimArray[a].split('x')[1],maxHeight)
	}
	return [maxWidth,maxHeight]
}


function getQSValue( name )
{
	  var locString=3D(arguments[1])?arguments[1]:window.location.href;
//first test to see if the qs variable at all. if not, return null.
  var regex =3D new RegExp( "[\\?&;]"+name );
  var results =3D regex.exec( locString );
  if(!results) return null;
//ok, it's there. get the value.

  var regex =3D new RegExp( "[\\?&;]"+name+"=3D([^&#]*)" );
  var results =3D regex.exec( locString );
  return (results=3D=3Dnull)?"":results[1]
}

//generates random number (but not ord string) once for entire page
function randomInt(top)
{
	return Math.floor(Math.random()*top)
}

//generates ord string once for entire page
function ordMaker()
{=09
	//if this.AJAX is passed as true as an argument overload, also pass =
back a unique ajax_ord kv with a random number value
	var ajax_ord =3D '';
	if(arguments[0]=3D=3D'AJAX')
	{
		ajax_ord =3D 'ajax_ord=3D' + randomInt(10000000000) + ';';
	}
=09
	if (typeof this.ordReturnValue =3D=3D 'undefined')
	{=09
		this.ordReturnValue =3D "ord=3D" + randomInt(1000000000000000000);
    }=20
	return ajax_ord + this.ordReturnValue
}

//checks for dfpcomp variable. if it exists, return dfpcomp as a =
keyvalue.
function dfpCompFunc()
{
	if(typeof this.dfpReturnValue =3D=3D 'undefined' || this.dfpReturnValue =
=3D=3D '')
	{=09
		if(typeof dfpcomp !=3D 'undefined')
		{=09
			this.dfpReturnValue =3D 'dfpcomp=3D' + dfpcomp + ";";
		}
		else
		{
			this.dfpReturnValue =3D '';
		}
	}
	return this.dfpReturnValue;
}

function pageId()
{
=09
	var pageIdStringRoot =3D (typeof pageIdRoot !=3D =
'undefined')?pageIdRoot:wpniSite;
	if(typeof this.returnValue=3D=3D'undefined')
	{
	=09
		this.pIdReturnValue =3D location.href.split('?')[0]
		if(this.pIdReturnValue.lastIndexOf('.') > =
this.pIdReturnValue.lastIndexOf('/'))
		{
			this.pIdReturnValue =3D =
this.pIdReturnValue.substring(0,this.pIdReturnValue.lastIndexOf('.'))
		}
				if(this.pIdReturnValue.lastIndexOf('index') > =
this.pIdReturnValue.lastIndexOf('/') || =
this.pIdReturnValue.lastIndexOf('default') > =
this.pIdReturnValue.lastIndexOf('/'))
		{
			this.pIdReturnValue =3D =
this.pIdReturnValue.substring(0,this.pIdReturnValue.lastIndexOf('/'))
		}
		//take off domain name and protocol declaration
		this.pIdReturnValue =3D this.pIdReturnValue.split(document.domain)[1]
		//trim slashes from start and end
		this.pIdReturnValue=3DtrimAll(this.pIdReturnValue,'/')
		this.pIdReturnValue=3Dthis.pIdReturnValue.replace(/[\/\.]/gi,'-')
	=09
		if(this.pIdReturnValue=3D=3D'')
		{
			this.pIdReturnValue =3D pageIdStringRoot
		}
	}
	return 'pageId=3D' + pageIdStringRoot + '-' + =
this.pIdReturnValue.replace(/[\#]/gi,'') + ';'
}
function trimAll(sString,toTrim)=20
{
	if(typeof sString =3D=3D 'undefined' || !sString) return '';
=09
	while (sString.substring(0,1) =3D=3D toTrim)
	{
		sString =3D sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) =3D=3D =
toTrim)
	{
		sString =3D sString.substring(0,sString.length-1);
	}
	return sString;
}

//if revsci array exists, creates revsci keyvalues
function revsci()
{=09
	if (typeof rsinetsegs !=3D 'undefined' && (typeof =
this.revsciReturnValue =3D=3D 'undefined' || this.revsciReturnValue =
=3D=3D '') )
	{
		this.revsciReturnValue=3D'';
		for(i=3D0;i<rsinetsegs.length;i++)
		{
			this.revsciReturnValue +=3D =
"rs=3D"+rsinetsegs[i].replace("J05531_","j")+";"
		}
	}
	else if (typeof this.revsciReturnValue=3D=3D'undefined')
	{
		this.revsciReturnValue=3D'';
	}
=09
	return this.revsciReturnValue
}

//creates debugAdCode box for each ad spot
function debugTextArea(ac,adAddress)
{=20
=09
	if(!location.href.match('debugAdCode') && adAddress) return;
	var bgColor =3D (adAddress)?"FFAA00":"D9CCFF";
	var color =3D (adAddress)?"770000":"5B24FF";
	var debugLink =3D '';
    var debugPre =3D '<div =
style=3D"position:relative;float:left;z-index:1000000000">';
	if(!adAddress)
	{
		possAdIds =3D ac.match(/[^\d]\d{7,9}[^\d]/gi)
		if(possAdIds)
		{
			var newPAI =3D new Array()
			for(var a =3D 0; a < possAdIds.length; a++)
			{
				var addFlag =3D true;
				var stripped =3D possAdIds[a].substring(1,possAdIds[a].length-1);
			=09
				for(var b =3D 0; b < newPAI.length; b++)
				{
					if(stripped =3D=3D newPAI[b])
					{
						addFlag =3D false;
						break;
					}
				}
				if(addFlag) newPAI.push(stripped)
			}
			debugLink =3D '<div =
style=3D"color:#000000;font-weight:bold;text-decoration:none"><em>Possibl=
e</em> Ad Ids: ' + ( (newPAI.length > 0)?(newPAI):('<em>NONE</em>') ) + =
'</div>';
		}
	}
	else
	{
		debugLink =3D '<div><a =
style=3D"color:#111177;font-weight:bold;text-decoration:none" =
target=3D"_blank" href=3D"' + adAddress.replace(/adj/gi,"adi") + =
'">Click Here To See The Ad Call In Its Own Window</a></div>';
	}
	var debug =3D '<div =
style=3D"text-align:left;text-transform:none;letter-spacing:normal;line-s=
pacing:normal;padding:8px;position:absolute:top:0px;left:0px;width:300px;=
background-color:#' + bgColor + ';color:#' + color + =
';font-family:verdana;font-size:9px;word-wrap:break-word;text-wrap:unrest=
ricted;overflow:scroll">' + debugLink + textifyCode(ac) + '</div>';
	var debugPost =3D '</div>'
=09
	var debugReturn =3D debugPre  + debug + debugPost;
=09
  if(adAddress)
  {
	document.write(debugReturn)
  }
    return debugReturn;
}

//getCookie function
function getCookie(name) {
	var cookie =3D " " + 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 unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

//returns size if it isn't a flex

function wpFlex(size)=09
{=09
	return 'sz=3D'+size+';'
}



//setcookie function
function setCookie (name, value, expires, path, domain, secure) {
=09
=09
        cookieString =3D name + "=3D" + escape(value) +
        ((expires) ? "; expires=3D" + expires : "") +
        ((path) ? "; path=3D" + path : "") +
        ((domain) ? "; domain=3D" + domain : "") +
        ((secure) ? "; secure" : "");
		if(location.href.match('test_cookie'))
		{
			adOpsDebug('<b>domain passed to setCookie:</b> ' +domain + '<br/>');
		}
		document.cookie =3D cookieString;
}

//sets Point of Entry value--once for entire page
function poe()
{
	if(typeof this.poeReturnValue =3D=3D 'undefined')
	{
		poeString =3D wpniSite + "_poe";
		this.poeReturnValue =3D 'poe=3Dno;';
		if (getCookie(poeString) =3D=3D null || getCookie(poeString) =3D=3D =
"false")
		{
			this.poeReturnValue =3D 'poe=3Dyes;';
			setCookie(poeString,"true","","/","",'')
		}
	}
	return this.poeReturnValue
}

//sets rss-user values--once for entire page
function rss()
{=20
 if(typeof rssString =3D=3D 'undefined') return '';
 if (typeof this.rssReturnValue =3D=3D 'undefined')
 {
  if (location.href.indexOf(rssString) !=3D -1)
  {
   this.rssReturnValue=3D"fromrss=3Dy;";
   setCookie('rss_now','true','','/',wpniDomain,'');
   setCookie('rss','true',''+cookieExpStringMaker((28 * 24 * 60 * 60 * =
1000),thisDate())+'','/',wpniDomain,'');
  }
  else
  {
   this.rssReturnValue=3D"fromrss=3Dn;";
   setCookie('rss_now','false',''+cookieExpStringMaker((28 * 24 * 60 * =
60 * 1000),thisDate())+'','/',wpniDomain,'');
  }
  if (getCookie('rss') !=3D null)=20
  {
   this.rssReturnValue+=3D'rss=3Dy;'
  }
  else=20
  {
   this.rssReturnValue +=3D 'rss=3Dn;'
  }
 }
=20
 return this.rssReturnValue
}

//figures out if this user came from a link (not heavy) or opened a =
window with this (heavy)
function heavy()
{
	if (typeof this.heavyReturnValue =3D=3D 'undefined')
	{
		this.heavyReturnValue =3D "heavy=3Dn;"
		if (typeof document.referrer !=3D "undefined")
		{
			if (document.referrer =3D=3D '') this.heavyReturnValue =3D =
"heavy=3Dy;"
		}
	}
	return this.heavyReturnValue
}

//writes a doubleclick tile keyvalue


// add pos and delivery
function tile(tileBoolean,varDcCount,thisPos,delivery)
{
	if(!tileBoolean) return
=09
	this.tileReturnValue =3D varDcCount;
	if(delivery=3D=3D'AJAX')
	{
		if(typeof AJAXTileArray =3D=3D 'undefined')
		{
			this.AJAXTileArray =3D new Array();
		}
		if(!this.AJAXTileArray[thisPos + delivery])
		{
			this.AJAXTileArray[thisPos + delivery] =3D varDcCount;
		}
		else
		{
			this.tileReturnValue =3D this.AJAXTileArray[thisPos + delivery]
		}
	}
	return "tile=3D" + this.tileReturnValue + ";"
}

//returns a string that is the current date plus an amount of =
milliseconds, passed in the argument
function cookieExpStringMaker() {
 var today =3D new Date()
 var todayPlusDay =3D today.getTime() + arguments[0]
 today.setTime(todayPlusDay)
 return '' + today + ''
}
//returns true if the user...
function timeScope()
{
 numPop=3D(typeof numPop =3D=3D 'undefined')?5:numPop;
 hourScope=3D(typeof hourScope =3D=3D 'undefined')?24:hourScope;
=20
 var finalNumOfPops =3D (numPop-1)*2;
=20
 var returnValue24 =3D true;
 if(getCookie('popUpClockCookie'))
 {
  if (parseInt(getCookie('popUpClockCookie')) > finalNumOfPops )
  {
   var returnValue24 =3D false
  }
  else
  {
   setCookie('popUpClockCookie','' + =
(parseInt(getCookie('popUpClockCookie')) + 1) + '', =
cookieExpStringMaker((hourScope * 60 * 60 * 1000),thisDate()), '/', =
wpniDomain,'')
=20
  }
 }
 else
 {
  setCookie('popUpClockCookie','1','' + cookieExpStringMaker((hourScope =
* 60 * 60 * 1000),thisDate()) + '','/', wpniDomain,'')
 }
 return returnValue24
}
//returns true if the user...
function didntSeePopUpOnPreviousPage()
{
 var returnValuePrev =3D true;
 if(getCookie('popUpOnPreviousPageCookie')!=3Dnull)
 {
   if(getCookie('popUpOnPreviousPageCookie') =3D=3D 'true')
   {
         var returnValuePrev =3D false
         setCookie('popUpOnPreviousPageCookie','false','', '/', =
wpniDomain,'')
        }
      else
        {
         setCookie('popUpOnPreviousPageCookie','true','', '/', =
wpniDomain,'')
        }
 }
 else
 {=20
      setCookie('popUpOnPreviousPageCookie','true','', =
'/',wpniDomain,'')
 }
 return returnValuePrev
}
//is passed one or more strings and then asks the question...
function isAnyOfTheseInTheUrl()
{
 var returnValue =3D false;
  for(var x=3D0;x<arguments.length;x++)
  {
   if(location.href.match(arguments[x]))
   {
    returnValue =3D true;
   }
  }
 return returnValue
}
//interstitial and popup manager
function interstitial()
{
 if(typeof tileThatGetsDcopt !=3D 'undefined' && !tileThatGetsDcopt)
 {
	return '';
 }
 if(typeof tileThatGetsDcopt =3D=3D 'undefined')
 {
	tileThatGetsDcopt =3D 1;=20
 }
//interstitial is processed if the returnValue doesn't exist, if we're =
on the home domain, if no_interstitials isn't in the URL, and this is =
the right tile number
 if(typeof this.intReturnValue =3D=3D 'undefined' && =
!isAnyOfTheseInTheUrl('no_interstitials') && arguments[1] =3D=3D =
tileThatGetsDcopt)
 {
  //default is that dcopt=3Dist should be passed
  this.intReturnValue =3D "dcopt=3Dist;";
  //if this is a refresh page or from a google search page, or there are =
no cookies, skip pops
  if(!isAnyOfTheseInTheUrl('g=3D1','o=3D','sid=3D','reload=3Dtrue') && =
document.domain.match(wpniDomain))
  {=20
   var a =3D timeScope();
   var b =3D didntSeePopUpOnPreviousPage();
   adopsDebug("Interstitial Time Scope: " + a + "<br>" + "Didn't See =
Pops On Previous Page: " + b + "<br>")
   if(a && b)
   {
    this.intReturnValue +=3D 'ad=3Dpop;';
   }
  }
  return this.intReturnValue;
 }=20
 return ''
}

function thisDate()
{
	if (typeof this.dateReturnValue =3D=3D 'undefined')
	{
		this.dateReturnValue =3D new Date()
	}
	return this.dateReturnValue
}

function dateToString()
{
	if (typeof this.dtsReturnValue =3D=3D 'undefined')
	{
		var thisDateObj =3D thisDate()
		var yyyy =3D thisDateObj.getYear();
		yyyy +=3D (yyyy < 1900 )?1900:0;
		var mm =3D thisDateObj.getMonth() + 1;
		var dd =3D thisDateObj.getDate();
		var hour =3D thisDateObj.getHours();
		var min =3D thisDateObj.getMinutes();
		if (mm < 10) mm =3D "0"+mm;
		if (dd < 10) dd =3D "0"+dd;
		if (hour < 10) hour =3D "0"+hour;
		if (min < 10) min =3D "0"+min;
		this.dtsReturnValue =3D ''+yyyy+mm+dd+hour+min;
	}
	return this.dtsReturnValue
}

function dayOfWeekCheck(now,dosString)
{
 //if day of week string is undefined, return true
 if(typeof dosString =3D=3D 'undefined') return true;
 dosDate =3D thisDate()
 thisDos =3D dosDate.getDay()
 return (dosString.match(thisDos))?true:false
}

function dateCheck(when,now)
{
=20
 this.dateCheckReturnValue=3Dfalse;
 if (typeof when =3D=3D "undefined" || when =3D=3D '')
 {
  this.dateCheckReturnValue =3D true;
 }
 else
 {
  dateSets =3D when.split(';')
  for (x=3D0;x<dateSets.length;x++)
  {
   if (now >=3D dateSets[x].split('/')[0] && now <=3D =
dateSets[x].split('/')[1] && =
dayOfWeekCheck(now,dateSets[x].split('/')[2]))
   {
    this.dateCheckReturnValue=3Dtrue
   }
  }
 }
 return this.dateCheckReturnValue=20
}

function locationCheck(where,currentLoc)
{
 	//if empty string is passed for where, it's ROS, so true
 	if (typeof where =3D=3D 'undefined' || where =3D=3D '')
 	{
		return true
	}

	var nodes =3D where.split(';');
=09
	//default value is true unless one or more checks is for an positive =
match--then default is false
	this.locCheckReturnValue =3D true;
 	for (var x=3D0;x<nodes.length;x++)
	{
		if(nodes[x].charAt(0)!=3D'!')
		{
			this.locCheckReturnValue =3D false;
		}
	}

	for (var x=3D0;x<nodes.length;x++)
	{

		//checking for positive or negative match?
		var posTest =3D (nodes[x].charAt(0)=3D=3D'!')?false:true;
		//strips negative flag from start of string, if there is one
		nodes[x] =3D =
(nodes[x].charAt(0)=3D=3D'!')?nodes[x].split('!')[1]:nodes[x];
		//makes this into a Reg Exp
		var posRegExp =3D RegExp(nodes[x],'gi');
		//checks pageId and currentLoc for a match
	=09
		var thisLocCheck =3D (currentLoc.match(posRegExp) || =
pageId().match(posRegExp))
	=09
		//if we have a match...
		if(thisLocCheck)
		{
		=09
			//if we have a match, and it is positive, make it true but continue =
checking the rest
			if(posTest)
			{
				this.locCheckReturnValue =3D true;
			}
			//if we have a match, but it is negative, make the return value =
negative and consider it done
			else
			{
				this.locCheckReturnValue =3D false;
				break;
			}
		}
	}
=09
 	return this.locCheckReturnValue
}
=20

function getHighestValue()
{
	var longest =3D 0;
	var loop;
	for (loop=3D0;loop<arguments.length;loop++)
	{
		if (arguments[loop] > longest)
		{
			longest =3D arguments[loop];
		}
	}
return longest;
}


function posMaker(what,posOverride,delivery)
{
	var pipe =3D new RegExp("\\|");
	if(what.match(pipe))
	{
		return 'pos=3D'+what.split('|')[0]+"_"+what.split('|')[1]+';'
	}
	if(posOverride || delivery=3D=3D'AJAX')
	{
		posOverride =3D (typeof posOverride =3D=3D "undefined")?"":"_" + =
posOverride;
		return 'pos=3D'+what+posOverride+';'
	}
	if (typeof this.usedSpots =3D=3D 'undefined')
	{
		this.usedSpots =3D new Array();
	}
	if (this.usedSpots[what] =3D=3D null)
	{
		this.usedSpots[what] =3D 1;
		return 'pos=3D'+what+';';
	}
	else
	{
		this.usedSpots[what]++;
		return 'pos=3D'+what+"_"+this.usedSpots[what]+';';
	}
}



function siteZoneDir(currentLoc)
{
		var currentLocArray =3D currentLoc.split('/');
		if(wpniSite =3D=3D '')
		{
			this.szdReturnValue =3D currentLoc + ";";
		}
		else {
			this.szdReturnValue =3D wpniSite + "." + currentLoc + ";";
		}
		for(var x=3D0;x<currentLocArray.length;x++)
		{
			this.szdReturnValue +=3D 'dir=3D' + currentLocArray[x] + ";"
		}
	return this.szdReturnValue
}

function doubleClickTestCode(testFlagArray)
{
	if(typeof this.dctCodeValue =3D=3D 'undefined')
	{
		this.dctCodeValue =3D '';
		var queryResult =3D getQSValue('test_ads');
=09
		if(queryResult !=3D null)
		{
			this.dctCodeValue =3D 'kw=3Dtest_' + =
((queryResult!=3D'')?queryResult:'ads') + ';';=09
		}
	}
	return this.dctCodeValue
}

function adDelivery()
{
	var deliveryArray =3D ['AJAX','inline','adi'];
	var delivery =3D arguments[0].toString();
	for(var d=3D0;d<deliveryArray.length;d++)
	{
		if(delivery.match(deliveryArray[d]))
		{
			deliveryType =3D "iframe";
			break
		}
		else {
			deliveryType =3D "js";
		}
	}
	return deliveryType;
}

function kvAjax(delivery)
{
	return 'ajax=3D' + (  ( delivery=3D=3D'AJAX'  )?'y':'n' ) + ';';=09
}

function AdInstance()
{=09
	this.when =3D new Array()
	this.where =3D new Array()
	this.isTest =3D false;
	this.managerListLength =3D 0
	this.AJAX =3D false;
	this.debugAction =3D function (output) { return debugTextArea(output) }
	this.adSlugDisplayStyle =3D 'block';
=09
	this.dateObject =3D new Date()
	this.now =3D dateToString(this.dateObject)
=09
	this.tile =3D true
	//this.flex =3D false
=09
	this.interstitial =3D "dcopt=3Dist;"
=09
	this.doubleClickFlag =3D true;
	this.doubleClickAdType =3D "adj";
	this.dcCode =3D  heavy() + pageId() + poe() + revsci() + dfpCompFunc() =
+ rss(this.dateObject) + front();
=09
	this.templateCheck =3D function(currentLoc,thisPos)
	{
		var templateTest =3D true;
	=09
		for(a in wpniAds.templates.rules)
		{
		=09
			var totalFlights =3D =
Math.max(wpniAds.templates.rules[a].where.length,wpniAds.templates.rules[=
a].when.length);
		=09
			for(var b =3D 0; b < totalFlights; b++)
			{=09
				if(locationCheck(wpniAds.templates.rules[a].where[b],currentLoc) && =
dateCheck(wpniAds.templates.rules[a].when[b], dateToString()))
				{
				=09
					for(var c =3D 0; c < wpniAds.templates.rules[a].what.length; c++)
					{
					=09
						var posTestFlag =3D (wpniAds.templates.rules[a].what[c].charAt(0) =
!=3D '!')?true:false;
						var testNoExclam =3D wpniAds.templates.rules[a].what[c];
						var testNoExclam =3D (testNoExclam.charAt(0) !=3D =
'!')?testNoExclam:testNoExclam.substring(1,wpniAds.templates.rules[a].wha=
t[c].length);
						var testRE =3D RegExp(testNoExclam.toLowerCase(),'gi')
						if(thisPos.match(testRE) && testNoExclam !=3D '')
						{				 =20
							templateTest =3D posTestFlag;
							adopsDebug('<b>Template Match [' + a + ']:</b> <i>' + posTestFlag =
+ '</i> for <i>' + testRE + '</i><br>');
						=09
						}
					}
				}
			}
		}
		if(!templateTest)
		{
			adopsDebug('<i style=3D"color:#910004;font-weight:bold">Failed =
template test</i><br>');
		}
		return templateTest;
	}
=09
	this.testAction =3D function (testFlagArray)
	{=09
		return doubleClickTestCode(testFlagArray)
	}
=09
	this.code =3D '';
=09
=09

=09
	//START OF=20
	this.adExecute =3D function =
(currentLoc,what,delivery,onTheFly,thisPos,old_ajax)
	{
		adopsDebug('currentLoc=3D'+currentLoc+'&nbsp;&nbsp; =
what=3D'+what+'&nbsp;&nbsp; onTheFly=3D'+onTheFly+'&nbsp;&nbsp; =
thisPos=3D'+thisPos + '&nbsp;&nbsp;deliveryType =3D ' + =
adDelivery(delivery))
	=09
		var divId =3D thisPos.split('=3D')[1].split(';')[0];
	=09
		if(delivery =3D=3D 'AJAX' && old_ajax)
		{
			divId =3D divId.replace(/_/gi,'AJAX');=09
		}
	=09
		var targetDivId =3D 'wpni_adi_' + divId;
		var slugDivId =3D 'slug_' + divId;
		var thisPos =3D thisPos.toLowerCase();
	=09
	=09
		//var deliveryType =3D (AJAXflag || this.adType =3D=3D 'inline' || =
this.adType =3D=3D 'iframe')?'iframe':'js';
		//var dcMediaServer =3D (AJAXflag || this.adType =3D=3D 'inline' || =
this.adType =3D=3D 'iframe')?'adi':'adj';
		var dcAdDelivery =3D "del=3D" + adDelivery(delivery) + ";";
		var dcMediaServer =3D =
(adDelivery(delivery)=3D=3D"iframe")?'adi':'adj';
=09
	=09
		=
adopsDebug('&nbsp;&nbsp;thisPos=3D'+thisPos+'&nbsp;&nbsp;slugId=3D'+slugD=
ivId+'&nbsp;&nbsp;targetDivId=3D'+targetDivId + =
'&nbsp;&nbsp;deliveryType =3D ' + dcAdDelivery + =
'&nbsp;&nbsp;dcMediaServer =3D' + dcMediaServer + '<br>')
=09
	=09
=09
		if(this.adType =3D=3D 'inline')
   		{=09
			var inlineAdGraf =3D getInlineAdGraf(this)
			if(!inlineAdGraf)
			{
				adopsDebug('<i style=3D"color:#910004;font-weight:bold">It is an =
inline ad but we couldn\'t find a good space for the inline ad in the =
container DIV ' + this.parentId + '.</i><br/>' )
				return;
			}
			else
			{
				var inlineDiv =3D document.createElement('div');
				inlineDiv.style.width =3D maxDim(this)[0] + 'px';
				inlineDiv.style.height =3D maxDim(this)[1] + 'px';
				inlineDiv.style.margin =3D "8px 0px";
				inlineDiv.id =3D targetDivId;
				document.getElementById(this.parentId).insertBefore(inlineDiv, =
inlineAdGraf )
			=09
				if(this.slugURL)
				{
					inlineAdSlugDiv =3D document.createElement('div');
					inlineAdSlugDiv.id =3D slugDivId;
					inlineAdSlugDiv.style.marginTop =3D "8px";
					inlineAdSlugImg =3D document.createElement('img');
					inlineAdSlugImg.src =3D this.slugURL;
					inlineAdSlugDiv.appendChild(inlineAdSlugImg);
					=
document.getElementById(this.parentId).insertBefore(inlineAdSlugDiv,inlin=
eDiv )
				}
		 	}
		}

		if(delivery =3D=3D 'AJAX' && !document.getElementById(targetDivId))
		{
			adopsDebug('<i style=3D"color:#910004;font-weight:bold">It is an AJAX =
call but we could not find the target DIV.</i><br/>' )
			return;
		}
	=09
		if(delivery =3D=3D 'inline')
		{
			document.write('<div id=3D"'+ targetDivId +'"></div>')
		}
	=09

		//if this is a doubleclick thing, iterate (or initialize) the tile =
number.=20
	=09
		if(this.adSlugDisplayStyle)
		{
				=09
			if(document.getElementById(slugDivId))
			{
				document.getElementById(slugDivId).style.display =3D =
this.adSlugDisplayStyle;
			}
			else
			{
				adopsDebug('<i style=3D"color:#910004;font-weight:bold">Could not =
find a DIV with the ID of ' + slugDivId + '</i><br/>' )
			}
		}
		else
		{
			adopsDebug('<i>This ad type has its slug type intentionally omitted.' =
)
		}
	=09
		if (this.doubleClickFlag =3D=3D true)
		{=20
			if (typeof varDcCount =3D=3D 'undefined')
			{
			 	varDcCount =3D 1
			}
			else
			{
				varDcCount++
			}
			//var adAddress =3D "http://ad.doubleclick.net/" + dcMediaServer + =
"/" + siteZoneDir(currentLoc) + this.code + =
this.testAction(this.testFlagArray) + wpFlex(this.size) + dcAdDelivery + =
kvAjax(dcAdDelivery) + tile(this.tile,varDcCount,what,AJAXflag) + =
interstitial(this.interstitial,varDcCount) + this.dcCode + thisPos + =
onTheFly +  ordMaker(AJAXflag) +  "?"
		=09
			var adAddress =3D "http://ad.doubleclick.net/" + dcMediaServer + "/" =
+ siteZoneDir(currentLoc) + this.code + =
this.testAction(this.testFlagArray) + wpFlex(this.size) + dcAdDelivery + =
kvAjax(delivery) + tile(this.tile,varDcCount,thisPos,delivery) + =
interstitial(this.interstitial,varDcCount) + this.dcCode + thisPos + =
onTheFly +  ordMaker(delivery) +  "?"

		}
		=09
		if (dcMediaServer =3D=3D 'adi')
		{
			iframeObj =3D document.createElement('iframe');
			iframeObj.setAttribute('src',adAddress);
			iframeObj.style.width =3D maxDim(this)[0] + 'px';
			iframeObj.style.height =3D maxDim(this)[1] + 'px'
			iframeObj.setAttribute('marginWidth','0');
			iframeObj.setAttribute('marginHeight','0');
			iframeObj.setAttribute('frameBorder','0');
			iframeObj.setAttribute('scrolling','no');
			iframeObj.style.border =3D "none"
		=09
		=09
			adDivRef =3D document.getElementById(targetDivId)
				=09
			if(adDivRef.hasChildNodes())
			{
    			while ( adDivRef.childNodes.length >=3D 1 )
    			{
       				adDivRef.removeChild(adDivRef.firstChild );
    			}=20
			}
			adDivRef.appendChild(iframeObj);
		=09
			adopsDebug('<b>'+targetDivId+' Appended Iframe Ad Call:</b> '+ =
textifyCode(adDivRef.innerHTML) + '<br/>')
		}
		else
		{
			var output=3D"<s\cript language=3D'JavaScript1.1' src=3D'" + =
adAddress + "'></s\cript>";
			document.write(output);
			adopsDebug('<b>document-written call:</b> ' + textifyCode(output) + =
'<br>');
			debugTextArea(output,adAddress);
		}
	}
}



function placeAd2(currentLoc,what,delivery,onTheFly)
{=09

	var old_ajax =3D false;
=09
	if(what.match('AJAX'))
	{
		var delivery =3D 'AJAX';
		var what =3D what.replace(/AJAX/,"|");
		var old_ajax =3D true;
	}

=09
=09
	if (location.href.match('no_ads'))
	{
		return
	}
=09
	adopsDebug('<div =
style=3D"margin-top:10px;font-size:14px;font-weight:bold">placeAd2("'+cur=
rentLoc+'","'+what+'","'+delivery+'","'+onTheFly+'")</div>')
	if(typeof onTheFly =3D=3D 'undefined')
	{
		onTheFly =3D ''
	}
=09
	//pipe is delimiter for pos iterator override, //AJAX is delimiter for =
AJAX
=09
	var currentLoc =3D =
hackBin('currentLoc',currentLoc,what,delivery,onTheFly);
	var what =3D hackBin('what',currentLoc,what,delivery,onTheFly);
	var delivery =3D hackBin('delivery',currentLoc,what,delivery,onTheFly);
	//var flex =3D hackBin('flex',currentLoc,what,flex,onTheFly);
	var onTheFly=3D hackBin('onTheFly',currentLoc,what,delivery,onTheFly);
	//var AJAXflag =3D what.split('AJAX')[1]
	var posOverride =3D what.split('|')[1];
	var thisPos =3D posMaker(what,posOverride,delivery);
	var what =3D what.split('|')[0];
=09
=09
=09
=09
	//if array adClasses doesn't exist, initializes it.
	if (typeof adClasses =3D=3D "undefined")
	{
		var adClasses =3D new Array()
	}

	//if the specified ad type (what) doesn't exist in the array adClasses, =
define it with initAdType
=09
	if (typeof adClasses[what] =3D=3D "undefined")
	{
		adClasses[what] =3D initAdType(what)
	}
=09
=09
=09
	//run this adtype's  method, which actually does what has to be done.
=09
	if(adClasses[what].isTest && location.href.match('testAdSpots'))
	{
		adopsDebug('<b style=3D"color:#009900">This is a test =
spot.</b></br>');
	}
	else if (adClasses[what].isTest)
	{
		adopsDebug('<b style=3D"color:#990000">This is a test spot and there =
is no "testAdSpots" in the query string, so it did not get =
rendered.</b>');
	}
=09
	var testCheck =3D !adClasses[what].isTest || =
location.href.match('testAdSpots');
=09
	if( (adClasses[what].templateCheck( currentLoc,thisPos ) && testCheck) =
|| location.href.match('allAds') )
	{=09
		=
adClasses[what].adExecute(currentLoc,what,delivery,onTheFly,thisPos,old_a=
jax)
	}
}

function adopsDebugToggle()
{
	var toggleButton =3D document.getElementById('adopsDebugToggle');
	var adopsDebugDiv =3D document.getElementById('adopsDebugDiv');
	adopsDebugDiv.style.display =3D (toggleButton.innerHTML =3D=3D 'Show =
Data')?'block':'none';
	toggleButton.innerHTML =3D (toggleButton.innerHTML =3D=3D 'Show =
Data')?'Hide Data':'Show Data';
=09
}

function adopsDebug(_str)
{
	if(!location.href.match('debugAdCode') && =
!location.href.match('adopsDebug') && !location.href.match('allAds')) =
return;
						  =20
	if(!document.getElementById('adopsDebugDiv'))
	{
		debugDiv =3D document.createElement('DIV');
		debugDiv.style.fontSize =3D '9px';
		debugDiv.style.textAlign =3D 'left';
		debugDiv.style.fontFamily =3D 'verdana,arial,helvetica';
		debugDiv.style.padding =3D "10px";
		debugDiv.style.marginBottom =3D "10px";
		debugDiv.style.borderBottom =3D "1px solid #a8a1a1";
		debugDiv.style.backgroundColor=3D "#e1e1e8";
		debugDiv.innerHTML =3D "<p style=3D'margin:0px 0px 5px =
0px;padding:0px;font-size:14px;color:#272127'>WPNI AdOps Debug =
Info&nbsp;<a href=3D'javascript:adopsDebugToggle()' =
style=3D'font-weight:bold;font-size:10px' id=3D'adopsDebugToggle'>Show =
Data</a></p>"
		debugDivContent =3D document.createElement('DIV');
		debugDivContent.setAttribute('id','adopsDebugDiv');
		debugDivContent.style.display =3D "none";
		debugDiv.appendChild(debugDivContent);
		document.body.insertBefore(debugDiv, document.body.firstChild);
	}
	document.getElementById('adopsDebugDiv').innerHTML +=3D _str;
}

function textifyCode(_code)
{
	_code =3D _code.replace(/</gi,'&lt;');
	_code =3D _code.replace(/>/gi,'&gt;');
	return _code;
}


function getInlineAdGraf(thisAdType) {

	var bottom_of_obstacle =3D 0;
	if(document.getElementById(thisAdType.obstacleId))
		{
			var obstacle =3D document.getElementById(thisAdType.obstacleId);
			var bottom_of_obstacle =3D obstacle.offsetTop+obstacle.offsetHeight;
		}
	=09
	var grafs =3D =
document.getElementById(thisAdType.parentId).getElementsByTagName(thisAdT=
ype.childElement);
	=09
	if(bottom_of_obstacle =3D=3D 0 && grafs.length > 4)
	{
		var targetGrafNum =3D Math.min(Math.ceil(grafs.length/3),4);
			adopsDebug('<span style=3D"font-style:bold;font-color:#009900">Found =
No Obstacle! Putting inline ad after Graf #' + targetGrafNum + =
'</span><br/>');
		return grafs[targetGrafNum]
	}
	else
	{
		for( var i=3D0; i<grafs.length; i++ )
		{
			if ( grafs[i].offsetTop > bottom_of_obstacle + =
thisAdType.obstacleMargin && i > 1 && i <=3D grafs.length - 2)
			{
				adopsDebug('<span =
style=3D"font-style:bold;font-color:#009900">Cleared an Obstacle! =
Putting inline ad after Graf #' + i + '</span><br/>');
				return grafs[i] ;
			}
		}
	}

	return false;
}




//this function varies from site to site, so this is just a shell
function front()
{
	return '';
}

googleAds =3D =
{'googleVars':{'google_safe':'high','google_ad_client':'ca-washingtonpost=
-article-site_js','google_ad_output':'js','google_ad_channel':'other','go=
ogle_skip':0,google_max_num_ads:3,google_ad_section:'default'}};

googleAds.nodeHacks =3D [];
googleAds.hideBox =3D "";
//googleAds.nodeHacks =3D =
['/comics','/foodanddining','/travel','/crosswords'];

googleAds.nodeCheck =3D function (cNode)
{
   //loops through nodeHacks
   for(var a =3D 0; a < this.nodeHacks.length; a++)
   {
		if(cNode.match(this.nodeHacks[a]))
		{
			nodeReg =3D RegExp(this.nodeHacks[a],'gi');
			return this.nodeHacks[a].replace(/[^a-z0-9]/gi,'');
		}
   }
   return cNode.split('/')[0];
}
googleAds.debug =3D function ()
{
	 for(var a in this.googleVars)
	 {
	    adopsDebug('<b>' + a + ':</b> ' + this.googleVars[a]+'<br>');
	 }
	return true;
}

//function to see if the vertical distance between two elements is =
larger than the viewport
googleAds.vertCheck =3D function (posId1,posId2)
{
		wpniAds.utils.wabs.recalc();
		var windowHeight =3D wpniAds.utils.wabs.windowheight;
		var offset1=3Ddocument.getElementById(posId1).offsetTop;
		var offset2=3Ddocument.getElementById(posId2).offsetTop;
		adopsDebug('<b>' + posId1 + ' vertical position:</b> ' + offset1 + =
'<br>');
		adopsDebug('<b>' + posId2 + ' vertical position:</b> ' + offset2 + =
'<br>');
		adopsDebug('<b>windowHeight:</b> ' + windowHeight + '<br>');
       		//return boolean answer to this question:
	        //is the distance between the two boxes greater than the height =
of the viewport?
		return (offset1 - offset2 > windowHeight) || (offset2 - offset1 > =
windowHeight);
		adopsDebug(e + '<br/>')
		return;

}

googleAds.execute =3D function =
(clientId,pageType,cNode,pos,adCount,test)
{
 adopsDebug('<b =
style=3D"font-size:12px">googleAds("'+clientId+'","'+pageType+'","'+cNode=
+'","'+pos+'","'+adCount+'",'+test+')</b><br>');
 this.googleVars.google_ad_client =3D clientId;
 if(pageType !=3D "")
 {
	var setPageType =3D  pageType + '_';
 }
 else {
	setPageType =3D "";
 }

 this.googleVars.google_ad_channel =3D setPageType + =
this.nodeCheck(cNode,pos) + '_' + pos;
 this.googleVars.google_max_num_ads =3D adCount;
 this.googleVars.google_adtest =3D (test)?'on':'off';
 for(var a in this.googleVars)
 {
  eval(a + '=3D"' + this.googleVars[a] + '"');
 }
=20
 if( pos !=3D googleAds.hideBox || =
!document.getElementById('googleBottomBox') || =
googleAds.vertCheck('googleBottomBox','googleRightBox')  )
 {=20
  document.write('<div style=3D"margin-top:4px"></div><s\cript =
type=3D"text/javascript" =
src=3D"http://www.washingtonpost.com/wp-srv/ad/google_display.js"></s\cri=
pt>');
  this.debug();
 this.googleVars.google_skip +=3D parseInt(adCount);
 }
 else
 {
 this.debug();
  adopsDebug('<b>Sorry, the divs were too close vertically to render a ' =
+ googleAds.hideBox + ' adSense box.</b><br>');
 }
}






------=_NextPart_000_0000_01C8F15B.0456E260
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.washingtonpost.com/wp-srv/ad/nw_ad_v3.js

wpniSite=3D'newsweek';
wpniDomain=3D'newsweek.com';
show_doubleclick_ad =3D true;
rssString =3D "from=3Drss";
tileThatGetsDcopt =3D 1;

wpniAds.templates.initRule('defaultTemplate');
wpniAds.templates.rules.defaultTemplate.what =3D new =
Array('!bigboxAJAX','!88x31','!leaderboard_2');
/*wpniAds.templates.initRule('noBottomLB');
wpniAds.templates.rules.noBottomLB.what =3D  new =
Array('!leaderboard_2');
wpniAds.templates.rules.noBottomLB.where =3D new =
Array('health/healthforlife');*/
wpniAds.templates.initRule('allianz');
wpniAds.templates.rules.allianz.what =3D new =
Array('!234x60','!bigbox_2','!leaderboard_2','!88x31');
wpniAds.templates.rules.allianz.where =3D new =
Array('intl/turningpoints');
wpniAds.templates.rules.allianz.when =3D new =
Array('200805010000/200901010000');

wpniAds.templates.initRule('trendMicro');
wpniAds.templates.rules.trendMicro.what =3D new Array('leaderboard');
wpniAds.templates.rules.trendMicro.where =3D new =
Array('techbiz/tech/threatmeter');
wpniAds.templates.rules.trendMicro.when =3D new =
Array('200806110000/200812310000');

wpniAds.templates.initRule('noBB2orBB3');
wpniAds.templates.rules.noBB2orBB3.what =3D new =
Array('!bigbox_2','!bigbox_3');
wpniAds.templates.rules.noBB2orBB3.where =3D new =
Array('culture/entertainment/ansen','tipsheet/giftguide','culture/enterta=
inment/holidaymovie','techbiz/gross','tipsheet/money/moneyguide','health/=
healthforlife','culture/holidayguide','culture/religion','tipsheet/enviro=
nment','techbiz/levy/campaign','politics/fineman','techbiz/leadership/wom=
en','health/toyourhealth','health/herbody','culture/boomers','culture/who=
snext');
wpniAds.templates.initRule('airForce');
wpniAds.templates.rules.airForce.what =3D new Array('!468x60');
wpniAds.templates.rules.airForce.where =3D new Array('');
wpniAds.templates.rules.airForce.when =3D new =
Array('200802252200/200802262359');

function initAdType(what)
{
	thisAdType =3D new AdInstance()
	thisAdType.testFlagArray =3D new Array('test_ads','test_' + what);=09
	thisAdType.debugFlagArray =3D new Array('debugAdCode','debugAdCode_' + =
what);
	thisAdType.dcCode +=3D atoz();

	switch(what)
	{
		case '468x60':
			thisAdType.size =3D '468x60';
			thisAdType.code =3D 'ad=3D468x60;';
		break
	=09
		case '120x60':
			thisAdType.size =3D '120x60';
			thisAdType.code =3D 'ad=3D120x60;';
		break
	=09
		case 'leaderboard':
			thisAdType.size =3D "728x90";
			thisAdType.code =3D "ad=3Dlb;";
		break
	=09
		case '88x31':
			thisAdType.size =3D "88x31";
			thisAdType.code =3D "ad=3D88x31;";
	=09
		break;
	=09
		case '234x60':
			thisAdType.size =3D "234x60";
			thisAdType.code =3D "ad=3D234x60;";
		break;
	=09
		case '170x90':
			thisAdType.size =3D "170x90";
			thisAdType.code =3D "ad=3D170x90;";
		break;

		case '160x60':
			thisAdType.size =3D "170x90";
			thisAdType.code =3D "ad=3D170x90;";
		break;
	=09
		case 'bigbox':
			thisAdType.size =3D "300x250"
			thisAdType.code =3D "ad=3Dbb;"
		break
	=09
		case 'articleFlex':
			thisAdType.size =3D "300x250,336x850,160x600,180x150"
			thisAdType.code =3D "ad=3Dbb;ad=3Dhp;ad=3Dss;"
		break
	=09
		case 'homepageFlex':
			thisAdType.size =3D "300x250,336x850,180x150"
			thisAdType.code =3D "ad=3Dbb;ad=3Dhp;"
		break

		case 'bigboxHPFlex':
			thisAdType.size =3D "300x250,336x850"
			thisAdType.code =3D "ad=3Dbb;ad=3Dhp;"
		break
	=09
		case 'video':
		=09
			thisAdType.adServer =3D 'http://ad.doubleclick.net/pfadx/'
			thisAdType.code =3D "ad=3Dvideo"
			thisAdType.adExecute =3D function =
(currentLoc,varDcCount,what,flexBoolean)
			{
				if(typeof config =3D=3D 'undefined')
				{
					config =3D new Array();
				}
			=09
				config['adServerURL'] =3D this.adServer + siteZoneDir(currentLoc) + =
this.code + ";" + thisAdType.testAction(thisAdType.testFlagArray)
				config['additionalAdTargetingParams'] =3D ';' + this.dcCode
				adopsDebug("config['adServerURL']=3D" + config['adServerURL'] + =
"<br>");
				adopsDebug("config['additionalAdTargetingParams']=3D" + =
config['additionalAdTargetingParams'] + "<br>");
			}
		=09

		break

	}
=09
	if (thisAdType.isThisManaged =3D true)
	{
	thisAdType.managerListLength =3D =
getHighestValue(thisAdType.when.length,thisAdType.where.length);
	}
=09
=09
return thisAdType
}

function front()
{
	if ( ( ad_content_type && ad_content_type  =3D=3D 'front' ) || =
commercialNode && commercialNode =3D=3D 'homepage')
	{
		return 'front=3Dy;';
	}
	else
	{
		return 'front=3Dn;'
	}
};

function atoz()
{
=09
	if(typeof conditionID !=3D 'undefined' && (commercialNode.match('atoz') =
|| commercialNode.match('cam')))
	{
		var a =3D '=3D' + conditionID + ';'
		if(commercialNode.match('/atoz'))
		{
			return 'atoz' + a;
		}
		if(commercialNode.match('/cam'))
		{
			return 'cam'  + a;
		}
	}
	return '';
}


function hackBin(_arg,currentLoc,what,delivery,onTheFly)
{
	var hackReturnValue=3Deval(_arg)
	switch(_arg)
	{
		case 'currentLoc':
			hackReturnValue +=3D (commercialNode =3D=3D 'intl/turningpoints' && =
(currentLoc =3D=3D 'printthis' || currentLoc =3D=3D =
'module/quickread'))?'/intl/turningpoints':'';
		break;

	}
	return hackReturnValue
}
------=_NextPart_000_0000_01C8F15B.0456E260
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ndn.newsweek.com/site/js/nw_omniture.js

/* SiteCatalyst code version: H.10.
Copyright 1997-2007 Omniture, Inc. More info available at
http://www.omniture.com */
/************************ ADDITIONAL FEATURES ************************
     Plugins
*/
/* Specify the Report Suite ID(s) to track here */
var s_account=3D"wpninewsweekprod"
var s=3Ds_gi(s_account)
/************************** CONFIG SECTION **************************/
/* You may add or alter any code config here. */
/* E-commerce Config */
s.currencyCode=3D"USD"
/* Link Tracking Config */
s.trackDownloadLinks=3Dtrue
s.trackExternalLinks=3Dtrue
s.trackInlineStats=3Dtrue
s.linkDownloadFileTypes=3D"exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls"
s.linkInternalFilters=3D"javascript:,"+window.location.host
s.linkLeaveQueryString=3Dfalse
s.linkTrackVars=3D"server"
s.linkTrackEvents=3D"None"
/* Plugin Config */
s.usePlugins=3Dtrue
function s_doPlugins(s) {
	/* Add calls to plugins here */
=09
=09
var URL=3Dwindow.location.host+window.location.pathname;=09
=09
/* Plugin Example: getQueryParam v2.0 */
=20
s.campaign=3Ds.getQueryParam('wpsrc')
s.eVar3=3Ds.getQueryParam('wpisrc')


/* Plugin Example: getValOnce v0.2
s.campaign=3Ds.getValOnce(s.campaign,"s_campaign",0)
*/

/* Set event 1 (page view) on every page */=09
s.events=3Ds.events?s.events+',event1':'event1';

/* Set eVar 1 & 2 to PN and Channel  */=09
s.eVar1=3Ds.pageName;
s.eVar2=3Ds.channel;

/* Set DSLV & New vs Repeat  */=09
s.prop18=3Ds.getNewRepeat();
s.prop17=3Ds.getDaysSinceLastVisit();
s.prop17=3Ds.getAndPersistValue(s.prop17,'s_dslv',0);
s.eVar14=3Ds.prop18;
s.eVar15=3Ds.prop17;

/* Get Visit Num */=09
s.eVar16=3Ds.getVisitNum();

/* Plugin Example: timeparting - EST - hour,day,weekday */
s.prop8=3Ds.getTimeParting('d','-5','2008');
s.prop9=3Ds.getTimeParting('h','-5','2008');
s.prop10=3Ds.getTimeParting('w','-5','2008');

/* Set hierarchy to prop23 */
s.prop23=3Ds.hier1;

/* Set eVar18 to entry content type */
var ct =3D s.prop3
var isEP =3D s.c_r('s_wp_ep');
if(!isEP && ct){s.c_w('s_wp_ep',ct,0)
s.eVar18=3Dct;}

/* Look for Navigation ID - Set prop28 & 29 */
var pp=3Ds.getPreviousPage();
var nid=3Ds.getQueryParam('nid')
if(nid){s.prop28=3Dnid;s.prop29=3Dpp;}

/* Look for homepage id - Set prop 27 if HP value is previous page */
var hpid=3Ds.getQueryParam('hpid');
if(hpid && pp=3D=3D"nw - homepage - national") {s.prop27=3Dpp+' - =
'+hpid;s.eVar19=3Ds.prop27}
if(hpid && pp=3D=3D"nw - homepage - local") {s.prop27=3Dpp+' - =
'+hpid;s.eVar19=3Ds.prop27}
if(hpid && pp=3D=3D"nw - homepage - national override"){s.prop27=3Dpp+' =
- '+hpid;s.eVar19=3Ds.prop27}
if(hpid && pp=3D=3D"nw - homepage - default"){s.prop27=3Dpp+' - =
'+hpid;s.eVar19=3Ds.prop27}

var hpv=3Ds.getQueryParam('hpv');//multimedia check
if(hpid && hpv=3D=3D"local"){pp=3D"nw - homepage - =
local";s.prop27=3Dpp+' - '+hpid;s.eVar19=3Ds.prop27}
if(hpid && hpv=3D=3D"national"){pp=3D"nw - homepage - =
national";s.prop27=3Dpp+' - '+hpid;s.eVar19=3Ds.prop27}
if(hpid && hpv=3D=3D"default"){pp=3D"nw - homepage - =
default";s.prop27=3Dpp+' - '+hpid;s.eVar19=3Ds.prop27}
if(hpid && hpv=3D=3D"override"){pp=3D"nw - homepage - national =
override";s.prop27=3Dpp+' - '+hpid;s.eVar19=3Ds.prop27}

if(s.server=3D=3D"washingtonpost.com jobs"){s.eVar4=3Ds.prop6};

var temp1=3Ds.getQueryParam('reload');
var temp2=3Ds.getQueryParam('sub');
if(temp1=3D=3D"true"){s.prop31=3D"site reload"};
if(temp2 && temp2.toLowerCase()=3D=3D"ar"){s.prop31=3D"completed sign =
in"};
if(temp2 && temp2.toLowerCase()=3D=3D"new"){s.prop31=3D"completed =
registration"};
s.prop20=3Ds.getQueryParam('tid');s.eVar20=3Ds.prop20;


}
s.doPlugins=3Ds_doPlugins
/************************** PLUGINS SECTION *************************/
/* You may insert any plugins you wish to use here.                 */
/*
 * Plugin: getQueryParam 2.1 - return query string parameter(s)
 */
s.getQueryParam=3Dnew Function("p","d","u",""
+"var =
s=3Dthis,v=3D'',i,t;d=3Dd?d:'';u=3Du?u:(s.pageURL?s.pageURL:s.wd.locati"
+"on);if(u=3D=3D'f')u=3Ds.gtfs().location;while(p){i=3Dp.indexOf(',');i=3D=
i<0?p"
+".length:i;t=3Ds.p_gpv(p.substring(0,i),u+'');if(t)v+=3Dv?d+t:t;p=3Dp.su=
bs"
+"tring(i=3D=3Dp.length?i:i+1)}return v");
s.p_gpv=3Dnew Function("k","u",""
+"var =
s=3Dthis,v=3D'',i=3Du.indexOf('?'),q;if(k&&i>-1){q=3Du.substring(i+1);v"
+"=3Ds.pt(q,'&','p_gvf',k)}return v");
s.p_gvf=3Dnew Function("t","k",""
+"if(t){var =
s=3Dthis,i=3Dt.indexOf('=3D'),p=3Di<0?t:t.substring(0,i),v=3Di<0?'T"
+"rue':t.substring(i+1);if(p.toLowerCase()=3D=3Dk.toLowerCase())return =
s."
+"epa(v)}return ''");

/*
 * Plugin: getAndPersistValue 0.3 - get a value on every page
 */
s.getAndPersistValue=3Dnew Function("v","c","e",""
+"var s=3Dthis,a=3Dnew =
Date;e=3De?e:0;a.setTime(a.getTime()+e*86400000);if("
+"v)s.c_w(c,v,e?a:0);return s.c_r(c);");

/*
 * Plugin: Days since last Visit 1.0.H
 */
s.getDaysSinceLastVisit=3Dnew Function(""
+"var s=3Dthis,e=3Dnew =
Date(),cval,ct=3De.getTime(),c=3D's_lastvisit',day=3D24*"
+"60*60*1000;e.setTime(ct+3*365*day);cval=3Ds.c_r(c);if(!cval){s.c_w(c,"
+"ct,e);return 'First page view or cookies not supported';}else{var d"
+"=3Dct-cval;if(d>30*60*1000){if(d>30*day){s.c_w(c,ct,e);return 'More t"
+"han 30 days';}if(d<30*day+1 && d>7*day){s.c_w(c,ct,e);return 'More "
+"than 7 days';}if(d<7*day+1 && d>day){s.c_w(c,ct,e);return 'Less tha"
+"n 7 days';}if(d<day+1){s.c_w(c,ct,e);return 'Less than 1 day';}}els"
+"e return '';}"
);


/*                                                                 =20
 * Plugin: Visit Number By Month 2.0 - Return the user visit number=20
 */
s.getVisitNum=3Dnew Function(""
+"var s=3Dthis,e=3Dnew =
Date(),cval,cvisit,ct=3De.getTime(),c=3D's_vnum',c2=3D's"
+"_invisit';e.setTime(ct+30*24*60*60*1000);cval=3Ds.c_r(c);if(cval){var"
+" =
i=3Dcval.indexOf('&vn=3D'),str=3Dcval.substring(i+4,cval.length),k;}cvis"=

+"it=3Ds.c_r(c2);if(cvisit){if(str){e.setTime(ct+30*60*1000);s.c_w(c2,'"
+"true',e);return str;}else return 'unknown visit number';}else{if(st"
+"r){str++;k=3Dcval.substring(0,i);e.setTime(k);s.c_w(c,k+'&vn=3D'+str,e)=
"
+";e.setTime(ct+30*60*1000);s.c_w(c2,'true',e);return str;}else{s.c_w"
+"(c,ct+30*24*60*60*1000+'&vn=3D1',e);e.setTime(ct+30*60*1000);s.c_w(c2"
+",'true',e);return 1;}}"
);

/*
 * Plugin: getNewRepeat 1.0 - Return whether user is new or repeat
 */
s.getNewRepeat=3Dnew Function(""
+"var s=3Dthis,e=3Dnew =
Date(),cval,ct=3De.getTime(),y=3De.getYear();e.setTime"
+"(ct+30*24*60*60*1000);cval=3Ds.c_r('s_nr');if(cval.length=3D=3D0){s.c_w=
("
+"'s_nr',ct,e);return 'New';}if(cval.length!=3D0&&ct-cval<30*60*1000){s"
+".c_w('s_nr',ct,e);return 'New';}if(cval<1123916400001){e.setTime(cv"
+"al+30*24*60*60*1000);s.c_w('s_nr',ct,e);return 'Repeat';}else retur"
+"n 'Repeat';");


/*
 * Plugin: getTimeParting 1.3 - Set timeparting values based on time =
zone
 */

s.getTimeParting=3Dnew Function("t","z","y",""
+"dc=3Dnew Date('1/1/2000');var f=3D15;var ne=3D8;if(dc.getDay()!=3D6||"
+"dc.getMonth()!=3D0){return'Data Not Available'}else{;z=3DparseInt(z);"
+"if(y=3D=3D'2009'){f=3D8;ne=3D1};gmar=3Dnew =
Date('3/1/'+y);dsts=3Df-gmar.getDay("
+");gnov=3Dnew Date('11/1/'+y);dste=3Dne-gnov.getDay();spr=3Dnew =
Date('3/'"
+"+dsts+'/'+y);fl=3Dnew Date('11/'+dste+'/'+y);cd=3Dnew Date();"
+"if(cd>spr&&cd<fl){z=3Dz+1}else{z=3Dz};utc=3Dcd.getTime()+(cd.getTimezon=
eO"
+"ffset()*60000);tz=3Dnew Date(utc + =
(3600000*z));thisy=3Dtz.getFullYear("
+");var days=3D['Sunday','Monday','Tuesday','Wednesday','Thursday','Fr"
+"iday','Saturday'];if(thisy!=3Dy){return'Data Not Available'}else{;thi"
+"sh=3Dtz.getHours();thismin=3Dtz.getMinutes();thisd=3Dtz.getDay();var =
dow=3D"
+"days[thisd];var ap=3D'AM';var dt=3D'Weekday';var =
mint=3D'00';if(thismin>3"
+"0){mint=3D'30'}if(thish>=3D12){ap=3D'PM';thish=3Dthish-12};if =
(thish=3D=3D0){th"
+"ish=3D12};if(thisd=3D=3D6||thisd=3D=3D0){dt=3D'Weekend'};var =
timestring=3Dthish+'"
+":'+mint+ap;var daystring=3Ddow;var =
endstring=3Ddt;if(t=3D=3D'h'){return tim"
+"estring}if(t=3D=3D'd'){return daystring};if(t=3D=3D'w'){return en"
+"dstring}}};"
);

/*
 * Plugin: getPreviousPage_v1.1 - return previous page based on event =
list
 */
s.getPreviousPage=3Dnew Function("el",""
+"var s=3Dthis,pid,i,j,e;if(el){if(s.events){while(el){if(pid){break;}i"
+"=3Del.indexOf(',');i=3Di<0?el.length:i;e=3Ds.events;while(e){j=3De.inde=
xOf("
+"',');j=3Dj<0?e.length:j;if(e.substring(0,j)=3D=3Del.substring(0,i)){pid=
=3Ds"
+".p_gpp();}e=3De.substring(j=3D=3De.length?j:j+1);}el=3Del.substring(i=3D=
=3Del.l"
+"ength?i:i+1);}}}else{pid=3Ds.p_gpp();}return pid;");

/*
 * Utility Function: p_gpp
 */
s.p_gpp=3Dnew Function(""
+"var =
s=3Dthis,p,i;p=3Ds.rq(s.un);i=3Dp.indexOf('pid=3D')+4;p=3Dp.substring(i,p=
"
+".length);i=3Dp.indexOf('&');p=3Dp.substring(0,i);p=3Dunescape(p);return=
 p"
+";");

/*
 * Function - read combined cookies v 0.2
 */
s.c_rr=3Ds.c_r;
s.c_r=3Dnew Function("k",""
+"var s=3Dthis,d=3Dnew =
Date,v=3Ds.c_rr(k),c=3Ds.c_rr('s_pers'),i,m,e;if(v)ret"
+"urn v;k=3Ds.ape(k);i=3Dc.indexOf(' =
'+k+'=3D');c=3Di<0?s.c_rr('s_sess'):c;i=3D"
+"c.indexOf(' =
'+k+'=3D');m=3Di<0?i:c.indexOf('|',i);e=3Di<0?i:c.indexOf(';'"
+",i);m=3Dm>0?m:e;v=3Di<0?'':s.epa(c.substring(i+2+k.length,m<0?c.length:=
"
+"m));if(m>0&&m!=3De)if(parseInt(c.substring(m+1,e<0?c.length:e))<d.get"
+"Time()){d.setTime(d.getTime()-60000);s.c_w(s.epa(k),'',d);v=3D'';}ret"
+"urn v;");
/*
 * Function - write combined cookies v 0.2
 */
s.c_wr=3Ds.c_w;
s.c_w=3Dnew Function("k","v","e",""
+"var s=3Dthis,d=3Dnew =
Date,ht=3D0,pn=3D's_pers',sn=3D's_sess',pc=3D0,sc=3D0,pv,sv,"
+"c,i,t;d.setTime(d.getTime()-60000);if(s.c_rr(k)) s.c_wr(k,'',d);k=3Ds"
+".ape(k);pv=3Ds.c_rr(pn);i=3Dpv.indexOf(' =
'+k+'=3D');if(i>-1){pv=3Dpv.substr"
+"ing(0,i)+pv.substring(pv.indexOf(';',i)+1);pc=3D1;}sv=3Ds.c_rr(sn);i=3D=
sv"
+".indexOf(' =
'+k+'=3D');if(i>-1){sv=3Dsv.substring(0,i)+sv.substring(sv.i"
+"ndexOf(';',i)+1);sc=3D1;}d=3Dnew =
Date;if(e){if(e.getTime()>d.getTime())"
+"{pv+=3D' '+k+'=3D'+s.ape(v)+'|'+e.getTime()+';';pc=3D1;}}else{sv+=3D' =
'+k+'"
+"=3D'+s.ape(v)+';';sc=3D1;}if(sc) =
s.c_wr(sn,sv,0);if(pc){t=3Dpv;while(t&&t"
+".indexOf(';')!=3D-1){var =
t1=3DparseInt(t.substring(t.indexOf('|')+1,t.i"
+"ndexOf(';')));t=3Dt.substring(t.indexOf(';')+1);ht=3Dht<t1?t1:ht;}d.set=
"
+"Time(ht);s.c_wr(pn,pv,d);}return v=3D=3Ds.c_r(s.epa(k));");


/* WARNING: Changing any of the below variables will cause drastic
changes to how your visitor data is collected.  Changes should only be
made when instructed to do so by your account manager.*/
s.visitorNamespace=3D"wpni"
s.trackingServer=3D"metrics.washingtonpost.com"
s.trackingServerSecure=3D"smetrics.washingtonpost.com"
s.dc=3D112
s.vmk=3D"46BF8B07"

/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_objectID;function s_c2fe(f){var x=3D'',s=3D0,e,a,b,c;while(1){e=3D
f.indexOf('"',s);b=3Df.indexOf('\\',s);c=3Df.indexOf("\n",s);if(e<0||(b>=3D=

0&&b<e))e=3Db;if(e<0||(c>=3D0&&c<e))e=3Dc;if(e>=3D0){x+=3D(e>s?f.substrin=
g(s,e):
'')+(e=3D=3Dc?'\\n':'\\'+f.substring(e,e+1));s=3De+1}else return x
+f.substring(s)}return f}function s_c2fa(f){var =
s=3Df.indexOf('(')+1,e=3D
f.indexOf(')'),a=3D'',c;while(s>=3D0&&s<e){c=3Df.substring(s,s+1);if(c=3D=
=3D',')
a+=3D'","';else if(("\n\r\t ").indexOf(c)<0)a+=3Dc;s++}return =
a?'"'+a+'"':
a}function s_c2f(cc){cc=3D''+cc;var fc=3D'var f=3Dnew Function(',s=3D
cc.indexOf(';',cc.indexOf('{')),e=3Dcc.lastIndexOf('}'),o,a,d,q,c,f,h,x
fc+=3Ds_c2fa(cc)+',"var s=3Dnew Object;';c=3Dcc.substring(s+1,e);s=3D
c.indexOf('function');while(s>=3D0){d=3D1;q=3D'';x=3D0;f=3Dc.substring(s)=
;a=3D
s_c2fa(f);e=3Do=3Dc.indexOf('{',s);e++;while(d>0){h=3Dc.substring(e,e+1);=
if(
q){if(h=3D=3Dq&&!x)q=3D'';if(h=3D=3D'\\')x=3Dx?0:1;else =
x=3D0}else{if(h=3D=3D'"'||h=3D=3D"'"
)q=3Dh;if(h=3D=3D'{')d++;if(h=3D=3D'}')d--}if(d>0)e++}c=3Dc.substring(0,s=
)
+'new Function('+(a?a+',':'')+'"'+s_c2fe(c.substring(o+1,e))+'")'
+c.substring(e+1);s=3Dc.indexOf('function')}fc+=3Ds_c2fe(c)+';return =
s");'
eval(fc);return f}function s_gi(un,pg,ss){var c=3D"function s_c(un,pg,s"
+"s){var s=3Dthis;s.wd=3Dwindow;if(!s.wd.s_c_in){s.wd.s_c_il=3Dnew =
Array;s."
+"wd.s_c_in=3D0;}s._il=3Ds.wd.s_c_il;s._in=3Ds.wd.s_c_in;s._il[s._in]=3Ds=
;s.w"
+"d.s_c_in++;s.m=3Dfunction(m){return =
(''+m).indexOf('{')<0};s.fl=3Dfunct"
+"ion(x,l){return x?(''+x).substring(0,l):x};s.co=3Dfunction(o){if(!o)r"
+"eturn o;var n=3Dnew Object,x;for(x in o)if(x.indexOf('select')<0&&x.i"
+"ndexOf('filter')<0)n[x]=3Do[x];return =
n};s.num=3Dfunction(x){x=3D''+x;for"
+"(var p=3D0;p<x.length;p++)if(('0123456789').indexOf(x.substring(p,p+1"
+"))<0)return 0;return 1};s.rep=3Dfunction(x,o,n){var =
i=3Dx.indexOf(o);wh"
+"ile(x&&i>=3D0){x=3Dx.substring(0,i)+n+x.substring(i+o.length);i=3Dx.ind=
ex"
+"Of(o,i+n.length)}return x};s.ape=3Dfunction(x){var =
s=3Dthis,h=3D'01234567"
+"89ABCDEF',i,c=3Ds.charSet,n,l,e,y=3D'';c=3Dc?c.toUpperCase():'';if(x){x=
=3D'"
+"'+x;if(c=3D=3D'AUTO'&&('').charCodeAt){for(i=3D0;i<x.length;i++){c=3Dx.=
subs"
+"tring(i,i+1);n=3Dx.charCodeAt(i);if(n>127){l=3D0;e=3D'';while(n||l<4){e=
=3Dh"
+".substring(n%16,n%16+1)+e;n=3DparseInt(n/16);l++}y+=3D'%u'+e}else =
if(c=3D"
+"=3D'+')y+=3D'%2B';else =
y+=3Descape(c)}x=3Dy}else{x=3Dx?s.rep(escape(''+x),'+'"
+",'%2B'):x;if(x&&c&&s.em=3D=3D1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=
"
+"=3Dx.indexOf('%');while(i>=3D0){i++;if(h.substring(8).indexOf(x.substri=
"
+"ng(i,i+1).toUpperCase())>=3D0)return x.substring(0,i)+'u00'+x.substri"
+"ng(i);i=3Dx.indexOf('%',i)}}}}return x};s.epa=3Dfunction(x){var =
s=3Dthis;"
+"return x?unescape(s.rep(''+x,'+',' ')):x};s.pt=3Dfunction(x,d,f,a){va"
+"r =
s=3Dthis,t=3Dx,z=3D0,y,r;while(t){y=3Dt.indexOf(d);y=3Dy<0?t.length:y;t=3D=
t.s"
+"ubstring(0,y);r=3Ds.m(f)?s[f](t,a):f(t,a);if(r)return =
r;z+=3Dy+d.length"
+";t=3Dx.substring(z,x.length);t=3Dz<x.length?t:''}return =
''};s.isf=3Dfunct"
+"ion(t,a){var =
c=3Da.indexOf(':');if(c>=3D0)a=3Da.substring(0,c);if(t.subst"
+"ring(0,2)=3D=3D's_')t=3Dt.substring(2);return =
(t!=3D''&&t=3D=3Da)};s.fsf=3Dfuncti"
+"on(t,a){var =
s=3Dthis;if(s.pt(a,',','isf',t))s.fsg+=3D(s.fsg!=3D''?',':'')"
+"+t;return 0};s.fs=3Dfunction(x,f){var =
s=3Dthis;s.fsg=3D'';s.pt(x,',','fsf"
+"',f);return s.fsg};s.c_d=3D'';s.c_gdf=3Dfunction(t,a){var =
s=3Dthis;if(!s."
+"num(t))return 1;return 0};s.c_gd=3Dfunction(){var =
s=3Dthis,d=3Ds.wd.locat"
+"ion.hostname,n=3Ds.fpCookieDomainPeriods,p;if(!n)n=3Ds.cookieDomainPeri=
"
+"ods;if(d&&!s.c_d){n=3Dn?parseInt(n):2;n=3Dn>2?n:2;p=3Dd.lastIndexOf('.'=
);"
+"if(p>=3D0){while(p>=3D0&&n>1){p=3Dd.lastIndexOf('.',p-1);n--}s.c_d=3Dp>=
0&&s"
+".pt(d,'.','c_gdf',0)?d.substring(p):d}}return s.c_d};s.c_r=3Dfunction"
+"(k){var s=3Dthis;k=3Ds.ape(k);var c=3D' '+s.d.cookie,i=3Dc.indexOf(' =
'+k+'=3D"
+"'),e=3Di<0?i:c.indexOf(';',i),v=3Di<0?'':s.epa(c.substring(i+2+k.length=
"
+",e<0?c.length:e));return =
v!=3D'[[B]]'?v:''};s.c_w=3Dfunction(k,v,e){var"
+" =
s=3Dthis,d=3Ds.c_gd(),l=3Ds.cookieLifetime,t;v=3D''+v;l=3Dl?(''+l).toUppe=
rCa"
+"se():'';if(e&&l!=3D'SESSION'&&l!=3D'NONE'){t=3D(v!=3D''?parseInt(l?l:0)=
:-60"
+");if(t){e=3Dnew =
Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!=3D'NONE'"
+"){s.d.cookie=3Dk+'=3D'+s.ape(v!=3D''?v:'[[B]]')+'; =
path=3D/;'+(e&&l!=3D'SESSI"
+"ON'?' expires=3D'+e.toGMTString()+';':'')+(d?' =
domain=3D'+d+';':'');ret"
+"urn s.c_r(k)=3D=3Dv}return 0};s.eh=3Dfunction(o,e,r,f){var =
s=3Dthis,b=3D's_'+"
+"e+'_'+s._in,n=3D-1,l,i,x;if(!s.ehl)s.ehl=3Dnew =
Array;l=3Ds.ehl;for(i=3D0;i<"
+"l.length&&n<0;i++){if(l[i].o=3D=3Do&&l[i].e=3D=3De)n=3Di}if(n<0){n=3Di;=
l[n]=3Dnew"
+" =
Object}x=3Dl[n];x.o=3Do;x.e=3De;f=3Dr?x.b:f;if(r||f){x.b=3Dr?0:o[e];x.o[e=
]=3Df"
+"}if(x.b){x.o[b]=3Dx.b;return b}return =
0};s.cet=3Dfunction(f,a,t,o,b){va"
+"r =
s=3Dthis,r;if(s.apv>=3D5&&(!s.isopera||s.apv>=3D7))eval('try{r=3Ds.m(f)?s=
"
+"[f](a):f(a)}catch(e){r=3Ds.m(t)?s[t](e):t(e)}');else{if(s.ismac&&s.u."
+"indexOf('MSIE =
4')>=3D0)r=3Ds.m(b)?s[b](a):b(a);else{s.eh(s.wd,'onerror'"
+",0,o);r=3Ds.m(f)?s[f](a):f(a);s.eh(s.wd,'onerror',1)}}return r};s.gtf"
+"set=3Dfunction(e){var s=3Dthis;return s.tfs};s.gtfsoe=3Dnew =
Function('e',"
+"'var s=3Ds_c_il['+s._in+'];s.eh(window,\"onerror\",1);s.etfs=3D1;var =
c=3D"
+"s.t();if(c)s.d.write(c);s.etfs=3D0;return =
true');s.gtfsfb=3Dfunction(a)"
+"{return window};s.gtfsf=3Dfunction(w){var =
s=3Dthis,p=3Dw.parent,l=3Dw.locat"
+"ion;s.tfs=3Dw;if(p&&p.location!=3Dl&&p.location.host=3D=3Dl.host){s.tfs=
=3Dp;r"
+"eturn s.gtfsf(s.tfs)}return s.tfs};s.gtfs=3Dfunction(){var =
s=3Dthis;if("
+"!s.tfs){s.tfs=3Ds.wd;if(!s.etfs)s.tfs=3Ds.cet('gtfsf',s.tfs,'gtfset',s.=
"
+"gtfsoe,'gtfsfb')}return s.tfs};s.mr=3Dfunction(sess,q,ta){var =
s=3Dthis,"
+"dc=3Ds.dc,t1=3Ds.trackingServer,t2=3Ds.trackingServerSecure,ns=3Ds.visi=
torN"
+"amespace,unc=3Ds.rep(s.fun,'_','-'),imn=3D's_i_'+s.fun,im,b,e,rs=3D'htt=
p'"
+"+(s.ssl?'s':'')+'://'+(t1?(s.ssl&&t2?t2:t1):((ns?ns:(s.ssl?'102':un"
+"c))+'.'+(s.dc?s.dc:112)+'.2o7.net'))+'/b/ss/'+s.un+'/1/H.10-Pdvu-2/"
+"'+sess+'?[AQB]&ndh=3D1'+(q?q:'')+(s.q?s.q:'')+'&[AQE]';if(s.isie&&!s."
+"ismac){if(s.apv>5.5)rs=3Ds.fl(rs,4095);else =
rs=3Ds.fl(rs,2047)}if(s.d.i"
+"mages&&s.apv>=3D3&&(!s.isopera||s.apv>=3D7)&&(s.ns6<0||s.apv>=3D6.1)){i=
m=3D"
+"s.wd[imn];if(!im)im=3Ds.wd[imn]=3Dnew =
Image;im.src=3Drs;if(rs.indexOf('&p"
+"e=3D')>=3D0&&(!ta||ta=3D=3D'_self'||ta=3D=3D'_top'||(s.wd.name&&ta=3D=3D=
s.wd.name))"
+"){b=3De=3Dnew Date;while(e.getTime()-b.getTime()<500)e=3Dnew =
Date}return "
+"''}return '<im'+'g sr'+'c=3D\"'+rs+'\" width=3D1 height=3D1 border=3D0 =
alt=3D"
+"\"\">'};s.gg=3Dfunction(v){var s=3Dthis;return =
s.wd['s_'+v]};s.glf=3Dfunc"
+"tion(t,a){if(t.substring(0,2)=3D=3D's_')t=3Dt.substring(2);var =
s=3Dthis,v=3Ds"
+".gg(t);if(v)s[t]=3Dv};s.gl=3Dfunction(v){var =
s=3Dthis;if(s.pg)s.pt(v,',',"
+"'glf',0)};s.gv=3Dfunction(v){var s=3Dthis;return =
s['vpm_'+v]?s['vpv_'+v"
+"]:(s[v]?s[v]:'')};s.havf=3Dfunction(t,a){var =
s=3Dthis,b=3Dt.substring(0,4"
+"),x=3Dt.substring(4),n=3DparseInt(x),k=3D'g_'+t,m=3D'vpm_'+t,q=3Dt,v=3D=
s.linkTr"
+"ackVars,e=3Ds.linkTrackEvents;s[k]=3Ds.gv(t);if(s.lnk||s.eo){v=3Dv?v+',=
'+"
+"s.vl_l:'';if(v&&!s.pt(v,',','isf',t))s[k]=3D'';if(t=3D=3D'events'&&e)s[=
k]"
+"=3Ds.fs(s[k],e)}s[m]=3D0;if(t=3D=3D'visitorID')q=3D'vid';else =
if(t=3D=3D'pageURL'"
+"){q=3D'g';s[k]=3Ds.fl(s[k],255)}else =
if(t=3D=3D'referrer'){q=3D'r';s[k]=3Ds.fl("
+"s[k],255)}else if(t=3D=3D'vmk')q=3D'vmt';else =
if(t=3D=3D'charSet'){q=3D'ce';if("
+"s[k]&&s[k].toUpperCase()=3D=3D'AUTO')s[k]=3D'ISO8859-1';else =
if(s[k]&&s.e"
+"m=3D=3D2)s[k]=3D'UTF-8'}else =
if(t=3D=3D'visitorNamespace')q=3D'ns';else if(t=3D=3D'"
+"cookieDomainPeriods')q=3D'cdp';else =
if(t=3D=3D'cookieLifetime')q=3D'cl';els"
+"e if(t=3D=3D'variableProvider')q=3D'vvp';else =
if(t=3D=3D'currencyCode')q=3D'cc'"
+";else if(t=3D=3D'channel')q=3D'ch';else =
if(t=3D=3D'transactionID')q=3D'xact';el"
+"se if(t=3D=3D'campaign')q=3D'v0';else =
if(s.num(x)){if(b=3D=3D'prop')q=3D'c'+n;e"
+"lse if(b=3D=3D'eVar')q=3D'v'+n;else =
if(b=3D=3D'hier'){q=3D'h'+n;s[k]=3Ds.fl(s[k],"
+"255)}}if(s[k]&&t!=3D'linkName'&&t!=3D'linkType')s.qav+=3D'&'+q+'=3D'+s.=
ape("
+"s[k]);return ''};s.hav=3Dfunction(){var =
s=3Dthis;s.qav=3D'';s.pt(s.vl_t,'"
+",','havf',0);return =
s.qav};s.lnf=3Dfunction(t,h){t=3Dt?t.toLowerCase():"
+"'';h=3Dh?h.toLowerCase():'';var =
te=3Dt.indexOf('=3D');if(t&&te>0&&h.index"
+"Of(t.substring(te+1))>=3D0)return t.substring(0,te);return =
''};s.ln=3Df"
+"unction(h){var s=3Dthis,n=3Ds.linkNames;if(n)return =
s.pt(n,',','lnf',h)"
+";return =
''};s.ltdf=3Dfunction(t,h){t=3Dt?t.toLowerCase():'';h=3Dh?h.toLow"
+"erCase():'';var =
qi=3Dh.indexOf('?');h=3Dqi>=3D0?h.substring(0,qi):h;if(t&"
+"&h.substring(h.length-(t.length+1))=3D=3D'.'+t)return 1;return =
0};s.lte"
+"f=3Dfunction(t,h){t=3Dt?t.toLowerCase():'';h=3Dh?h.toLowerCase():'';if(=
t&"
+"&h.indexOf(t)>=3D0)return 1;return 0};s.lt=3Dfunction(h){var =
s=3Dthis,lft"
+"=3Ds.linkDownloadFileTypes,lef=3Ds.linkExternalFilters,lif=3Ds.linkInte=
rn"
+"alFilters;lif=3Dlif?lif:s.wd.location.hostname;h=3Dh.toLowerCase();if(s=
"
+".trackDownloadLinks&&lft&&s.pt(lft,',','ltdf',h))return 'd';if(s.tr"
+"ackExternalLinks&&(lef||lif)&&(!lef||s.pt(lef,',','ltef',h))&&(!lif"
+"||!s.pt(lif,',','ltef',h)))return 'e';return ''};s.lc=3Dnew Function("
+"'e','var =
s=3Ds_c_il['+s._in+'],b=3Ds.eh(this,\"onclick\");s.lnk=3Ds.co(th"
+"is);s.t();s.lnk=3D0;if(b)return this[b](e);return true');s.bc=3Dnew =
Fun"
+"ction('e','var s=3Ds_c_il['+s._in+'],f;if(s.d&&s.d.all&&s.d.all.cppXY"
+"ctnr)return;s.eo=3De.srcElement?e.srcElement:e.target;eval(\"try{if(s"
+".eo&&(s.eo.tagName||s.eo.parentElement||s.eo.parentNode))s.t()}catc"
+"h(f){}\");s.eo=3D0');s.ot=3Dfunction(o){var =
a=3Do.type,b=3Do.tagName;return"
+" (a&&a.toUpperCase?a:b&&b.toUpperCase?b:o.href?'A':'').toUpperCase("
+")};s.oid=3Dfunction(o){var =
s=3Dthis,t=3Ds.ot(o),p=3Do.protocol,c=3Do.onclick,"
+"n=3D'',x=3D0;if(!o.s_oid){if(o.href&&(t=3D=3D'A'||t=3D=3D'AREA')&&(!c||=
!p||p.to"
+"LowerCase().indexOf('javascript')<0))n=3Do.href;else =
if(c){n=3Ds.rep(s."
+"rep(s.rep(s.rep(''+c,\"\\r\",''),\"\\n\",''),\"\\t\",''),' ','');x=3D"
+"2}else =
if(o.value&&(t=3D=3D'INPUT'||t=3D=3D'SUBMIT')){n=3Do.value;x=3D3}else =
if"
+"(o.src&&t=3D=3D'IMAGE')n=3Do.src;if(n){o.s_oid=3Ds.fl(n,100);o.s_oidt=3D=
x}}re"
+"turn o.s_oid};s.rqf=3Dfunction(t,un){var =
s=3Dthis,e=3Dt.indexOf('=3D'),u=3De>"
+"=3D0?','+t.substring(0,e)+',':'';return =
u&&u.indexOf(','+un+',')>=3D0?s"
+".epa(t.substring(e+1)):''};s.rq=3Dfunction(un){var =
s=3Dthis,c=3Dun.indexO"
+"f(','),v=3Ds.c_r('s_sq'),q=3D'';if(c<0)return =
s.pt(v,'&','rqf',un);retu"
+"rn s.pt(un,',','rq',0)};s.sqp=3Dfunction(t,a){var =
s=3Dthis,e=3Dt.indexOf("
+"'=3D'),q=3De<0?'':s.epa(t.substring(e+1));s.sqq[q]=3D'';if(e>=3D0)s.pt(=
t.su"
+"bstring(0,e),',','sqs',q);return 0};s.sqs=3Dfunction(un,q){var =
s=3Dthis"
+";s.squ[un]=3Dq;return 0};s.sq=3Dfunction(q){var =
s=3Dthis,k=3D's_sq',v=3Ds.c_r"
+"(k),x,c=3D0;s.sqq=3Dnew Object;s.squ=3Dnew =
Object;s.sqq[q]=3D'';s.pt(v,'&',"
+"'sqp',0);s.pt(s.un,',','sqs',q);v=3D'';for(x in s.squ)s.sqq[s.squ[x]]"
+"+=3D(s.sqq[s.squ[x]]?',':'')+x;for(x in =
s.sqq)if(x&&s.sqq[x]&&(x=3D=3Dq||"
+"c<2)){v+=3D(v?'&':'')+s.sqq[x]+'=3D'+s.ape(x);c++}return =
s.c_w(k,v,0)};"
+"s.wdl=3Dnew Function('e','var =
s=3Ds_c_il['+s._in+'],r=3Dtrue,b=3Ds.eh(s.wd,"
+"\"onload\"),i,o,oc;if(b)r=3Dthis[b](e);for(i=3D0;i<s.d.links.length;i++=
"
+"){o=3Ds.d.links[i];oc=3Do.onclick?\"\"+o.onclick:\"\";if((oc.indexOf(\"=
"
+"s_gs(\")<0||oc.indexOf(\".s_oc(\")>=3D0)&&oc.indexOf(\".tl(\")<0)s.eh"
+"(o,\"onclick\",0,s.lc);}return r');s.wds=3Dfunction(){var =
s=3Dthis;if(s"
+".apv>3&&(!s.isie||!s.ismac||s.apv>=3D5)){if(s.b&&s.b.attachEvent)s.b."
+"attachEvent('onclick',s.bc);else if(s.b&&s.b.addEventListener)s.b.a"
+"ddEventListener('click',s.bc,false);else s.eh(s.wd,'onload',0,s.wdl"
+")}};s.vs=3Dfunction(x){var =
s=3Dthis,v=3Ds.visitorSampling,g=3Ds.visitorSamp"
+"lingGroup,k=3D's_vsn_'+s.un+(g?'_'+g:''),n=3Ds.c_r(k),e=3Dnew =
Date,y=3De.ge"
+"tYear();e.setYear(y+10+(y<1900?1900:0));if(v){v*=3D100;if(!n){if(!s.c"
+"_w(k,x,e))return 0;n=3Dx}if(n%10000>v)return 0}return =
1};s.dyasmf=3Dfun"
+"ction(t,m){if(t&&m&&m.indexOf(t)>=3D0)return 1;return =
0};s.dyasf=3Dfunc"
+"tion(t,m){var s=3Dthis,i=3Dt?t.indexOf('=3D'):-1,n,x;if(i>=3D0&&m){var =
n=3Dt."
+"substring(0,i),x=3Dt.substring(i+1);if(s.pt(x,',','dyasmf',m))return "
+"n}return 0};s.uns=3Dfunction(){var =
s=3Dthis,x=3Ds.dynamicAccountSelection"
+",l=3Ds.dynamicAccountList,m=3Ds.dynamicAccountMatch,n,i;s.un.toLowerCas=
"
+"e();if(x&&l){if(!m)m=3Ds.wd.location.host;if(!m.toLowerCase)m=3D''+m;l=3D=
"
+"l.toLowerCase();m=3Dm.toLowerCase();n=3Ds.pt(l,';','dyasf',m);if(n)s.un=
"
+"=3Dn}i=3Ds.un.indexOf(',');s.fun=3Di<0?s.un:s.un.substring(0,i)};s.sa=3D=
fun"
+"ction(un){var s=3Dthis;s.un=3Dun;if(!s.oun)s.oun=3Dun;else =
if((','+s.oun+"
+"',').indexOf(un)<0)s.oun+=3D','+un;s.uns()};s.t=3Dfunction(){var =
s=3Dthis"
+",trk=3D1,tm=3Dnew =
Date,sed=3DMath&&Math.random?Math.floor(Math.random()*1"
+"0000000000000):tm.getTime(),sess=3D's'+Math.floor(tm.getTime()/108000"
+"00)%10+sed,yr=3Dtm.getYear(),vt=3Dtm.getDate()+'/'+tm.getMonth()+'/'+(y=
"
+"r<1900?yr+1900:yr)+' '+tm.getHours()+':'+tm.getMinutes()+':'+tm.get"
+"Seconds()+' '+tm.getDay()+' '+tm.getTimezoneOffset(),tfs=3Ds.gtfs(),t"
+"a=3D'',q=3D'',qs=3D'';s.gl(s.vl_g);s.uns();if(!s.q){var =
tl=3Dtfs.location,a"
+",o,i,x=3D'',c=3D'',v=3D'',p=3D'',bw=3D'',bh=3D'',j=3D'1.0',k=3Ds.c_w('s=
_cc','true',"
+"0)?'Y':'N',hp=3D'',ct=3D'',pn=3D0,ps;if(String&&String.prototype){j=3D\=
"1.1"
+"\";if(j.match){j=3D\"1.2\";if(tm.setUTCDate){j=3D\"1.3\";if(s.isie&&s.i=
"
+"smac&&s.apv>=3D5)j=3D\"1.4\";if(pn.toPrecision){j=3D\"1.5\";a=3Dnew =
Array;i"
+"f(a.forEach){j=3D\"1.6\";i=3D0;o=3Dnew Object;eval(\"try{i=3Dnew =
Iterator(o"
+")}catch(e){}\");if(i&&i.next)j=3D\"1.7\"}}}}}if(s.apv>=3D4)x=3Dscreen.w=
id"
+"th+'x'+screen.height;if(s.isns||s.isopera){if(s.apv>=3D3){v=3Ds.n.javaE=
"
+"nabled()?'Y':'N';if(s.apv>=3D4){c=3Dscreen.pixelDepth;bw=3Ds.wd.innerWi=
dt"
+"h;bh=3Ds.wd.innerHeight;}}s.pl=3Ds.n.plugins}else =
if(s.isie){if(s.apv>=3D"
+"4){v=3Ds.n.javaEnabled()?'Y':'N';c=3Dscreen.colorDepth;if(s.apv>=3D5){b=
w=3D"
+"s.d.documentElement.offsetWidth;bh=3Ds.d.documentElement.offsetHeight"
+";if(!s.ismac&&s.b){eval(\"try{s.b.addBehavior('#default#homePage');"
+"hp=3Ds.b.isHomePage(tl)?'Y':'N'}catch(e){}\");eval(\"try{s.b.addBehav"
+"ior('#default#clientCaps');ct=3Ds.b.connectionType}catch(e){}\")}}}el"
+"se =
r=3D''}if(s.pl)while(pn<s.pl.length&&pn<30){ps=3Ds.fl(s.pl[pn].name,"
+"100)+';';if(p.indexOf(ps)<0)p+=3Dps;pn++}s.q=3D(x?'&s=3D'+s.ape(x):'')+=
(c"
+"?'&c=3D'+s.ape(c):'')+(j?'&j=3D'+j:'')+(v?'&v=3D'+v:'')+(k?'&k=3D'+k:''=
)+(b"
+"w?'&bw=3D'+bw:'')+(bh?'&bh=3D'+bh:'')+(ct?'&ct=3D'+s.ape(ct):'')+(hp?'&=
hp"
+"=3D'+hp:'')+(p?'&p=3D'+s.ape(p):'')}if(s.usePlugins)s.doPlugins(s);var =
"
+"l=3Ds.wd.location,r=3Dtfs.document.referrer;if(!s.pageURL)s.pageURL=3Dl=
;i"
+"f(!s.referrer)s.referrer=3Dr;if(s.lnk||s.eo){var =
o=3Ds.eo?s.eo:s.lnk;if"
+"(!o)return '';var =
p=3Ds.gv('pageName'),w=3D1,t=3Ds.ot(o),n=3Ds.oid(o),x=3Do.s"
+"_oidt,h,l,i,oc;if(s.eo&&o=3D=3Ds.eo){while(o&&!n&&t!=3D'BODY'){o=3Do.pa=
rent"
+"Element?o.parentElement:o.parentNode;if(!o)return =
'';t=3Ds.ot(o);n=3Ds."
+"oid(o);x=3Do.s_oidt}oc=3Do.onclick?''+o.onclick:'';if((oc.indexOf(\"s_g=
"
+"s(\")>=3D0&&oc.indexOf(\".s_oc(\")<0)||oc.indexOf(\".tl(\")>=3D0)return=
"
+" =
''}ta=3Dn?o.target:1;h=3Do.href?o.href:'';i=3Dh.indexOf('?');h=3Ds.linkLe=
a"
+"veQueryString||i<0?h:h.substring(0,i);l=3Ds.linkName?s.linkName:s.ln("
+"h);t=3Ds.linkType?s.linkType.toLowerCase():s.lt(h);if(t&&(h||l))q+=3D'&=
"
+"pe=3Dlnk_'+(t=3D=3D'd'||t=3D=3D'e'?s.ape(t):'o')+(h?'&pev1=3D'+s.ape(h)=
:'')+(l?"
+"'&pev2=3D'+s.ape(l):'');else =
trk=3D0;if(s.trackInlineStats){if(!p){p=3Ds."
+"gv('pageURL');w=3D0}t=3Ds.ot(o);i=3Do.sourceIndex;if(s.gg('objectID')){=
n=3D"
+"s.gg('objectID');x=3D1;i=3D1}if(p&&n&&t)qs=3D'&pid=3D'+s.ape(s.fl(p,255=
))+("
+"w?'&pidt=3D'+w:'')+'&oid=3D'+s.ape(s.fl(n,100))+(x?'&oidt=3D'+x:'')+'&o=
t=3D"
+"'+s.ape(t)+(i?'&oi=3D'+i:'')}}if(!trk&&!qs)return '';if(s.p_r)s.p_r()"
+";var =
code=3D'';if(trk&&s.vs(sed))code=3Ds.mr(sess,(vt?'&t=3D'+s.ape(vt):'"
+"')+s.hav()+q+(qs?qs:s.rq(s.un)),ta);s.sq(trk?'':qs);s.lnk=3Ds.eo=3Ds.li=
"
+"nkName=3Ds.linkType=3Ds.wd.s_objectID=3Ds.ppu=3D'';if(s.pg)s.wd.s_lnk=3D=
s.wd."
+"s_eo=3Ds.wd.s_linkName=3Ds.wd.s_linkType=3D'';return =
code};s.tl=3Dfunction("
+"o,t,n){var =
s=3Dthis;s.lnk=3Ds.co(o);s.linkType=3Dt;s.linkName=3Dn;s.t()};s."
+"ssl=3D(s.wd.location.protocol.toLowerCase().indexOf('https')>=3D0);s.d=3D=
"
+"document;s.b=3Ds.d.body;s.n=3Dnavigator;s.u=3Ds.n.userAgent;s.ns6=3Ds.u=
.ind"
+"exOf('Netscape6/');var =
apn=3Ds.n.appName,v=3Ds.n.appVersion,ie=3Dv.indexO"
+"f('MSIE '),o=3Ds.u.indexOf('Opera =
'),i;if(v.indexOf('Opera')>=3D0||o>0)"
+"apn=3D'Opera';s.isie=3D(apn=3D=3D'Microsoft Internet =
Explorer');s.isns=3D(apn"
+"=3D=3D'Netscape');s.isopera=3D(apn=3D=3D'Opera');s.ismac=3D(s.u.indexOf=
('Mac')>"
+"=3D0);if(o>0)s.apv=3DparseFloat(s.u.substring(o+6));else =
if(ie>0){s.apv"
+"=3DparseInt(i=3Dv.substring(ie+5));if(s.apv>3)s.apv=3DparseFloat(i)}els=
e "
+"if(s.ns6>0)s.apv=3DparseFloat(s.u.substring(s.ns6+10));else =
s.apv=3Dpar"
+"seFloat(v);s.em=3D0;if(String.fromCharCode){i=3Descape(String.fromCharC=
"
+"ode(256)).toUpperCase();s.em=3D(i=3D=3D'%C4%80'?2:(i=3D=3D'%U0100'?1:0)=
)}s.sa"
+"(un);s.vl_l=3D'visitorID,vmk,ppu,charSet,visitorNamespace,cookieDomai"
+"nPeriods,cookieLifetime,pageName,pageURL,referrer,currencyCode,purc"
+"haseID';s.vl_t=3Ds.vl_l+',variableProvider,channel,server,pageType,tr"
+"ansactionID,campaign,state,zip,events,products,linkName,linkType';f"
+"or(var =
n=3D1;n<51;n++)s.vl_t+=3D',prop'+n+',eVar'+n+',hier'+n;s.vl_g=3Ds."
+"vl_t+',trackDownloadLinks,trackExternalLinks,trackInlineStats,linkL"
+"eaveQueryString,linkDownloadFileTypes,linkExternalFilters,linkInter"
+"nalFilters,linkNames';s.pg=3Dpg;s.gl(s.vl_g);if(!ss)s.wds()}",
l=3Dwindow.s_c_il,n=3Dnavigator,u=3Dn.userAgent,v=3Dn.appVersion,e=3Dv.in=
dexOf(
'MSIE =
'),m=3Du.indexOf('Netscape6/'),a,i,s;if(l)for(i=3D0;i<l.length;i++){
s=3Dl[i];if(s.oun=3D=3Dun)return s;else =
if(s.fs(s.oun,un)){s.sa(un);return s
}}if(e>0){a=3DparseInt(i=3Dv.substring(e+5));if(a>3)a=3DparseFloat(i)}
else if(m>0)a=3DparseFloat(u.substring(m+10));else =
a=3DparseFloat(v);if(a
>=3D5&&v.indexOf('Opera')<0&&u.indexOf('Opera')<0){eval(c);return new
s_c(un,pg,ss)}else s=3Ds_c2f(c);return s(un,pg,ss)}function s_co(o){
var s=3Ds_gi("^",1,1);return s.co(o)}function s_gs(un){var =
s=3Ds_gi(un,1,1
);return s.t()}function s_dc(un){var s=3Ds_gi(un,1);return s.t()}

/* end s_code */

/* You may give each page an identifying name, server, and channel on =
the next lines. */

if (typeof(nw_section) !=3D "undefined")
{
	nw_section =3D nw_section.replace(/\//, " - ");
}

if (typeof(nw_subsection) !=3D "undefined")
{
	nw_subsection =3D nw_subsection.replace(/\//, " - ");
}

if (typeof(nw_page_name) !=3D "undefined")
{
	s.pageName=3Dnw_page_name.replace(/<[a-zA-Z\/][^>]*>/g,"");
=09
	//remove session id
	s.pageName=3Ds.pageName.replace(/\;jsessionid\=3D.{23}/g,"");
}
else
{
	s.pageName=3D"nw - " + document.location.pathname + " - " + =
document.title;
=09
	//remove html
	s.pageName=3Ds.pageName.replace(/<[a-zA-Z\/][^>]*>/g,"");
	=09
	//remove session id
	s.pageName=3Ds.pageName.replace(/\;jsessionid\=3D.{23}/g,"");
}

if(typeof(nw_channel) !=3D "undefined")
{
	s.channel=3D(nw_channel.indexOf("nw - ")>=3D0)?nw_channel:"nw - " + =
nw_channel;
}
else if(typeof(nw_section) !=3D "undefined")
{
	s.channel=3D(nw_section.indexOf("nw - =
")>=3D0)?nw_section.split('/')[0]:"nw - " + nw_section.split('/')[0];
}
else if (typeof(nw_hierarchy) !=3D "undefined")
{=09
	s.channel=3D(nw_hierarchy.indexOf("nw - =
")>=3D0)?nw_hierarchy.split('|')[0]:"nw - " + =
nw_hierarchy.split('|')[0];
}
else
{
	s.channel=3D"nw - nocategory";
}

s.server=3D"newsweek.com";
s.pageType=3D"";
if (typeof(nw_sectionfront) !=3D "undefined")
{
	nw_sectionfront=3Dnw_sectionfront.toLowerCase();
	s.prop1=3D(nw_sectionfront.indexOf("nw - ")>=3D0)?nw_sectionfront:"nw - =
" + nw_sectionfront;
}
if (typeof(nw_subsection) !=3D "undefined")
{
	nw_subsection =3D nw_subsection.toLowerCase();
	s.prop2=3D(nw_subsection.indexOf("nw - ")>=3D0)?nw_subsection:"nw - " + =
nw_subsection;
}
if (typeof(nw_content_type) !=3D "undefined")
{
	s.prop3=3Dnw_content_type.toLowerCase();
}
if (typeof(nw_source) !=3D "undefined")
{
	s.prop4=3Dnw_source.toLowerCase();
}
else
{
	s.prop4=3D"newsweek.com";
}

if (typeof(nw_author) !=3D "undefined")
{
	s.prop5=3Dnw_author.toLowerCase();
}
if (typeof(nw_search_keywords) !=3D "undefined")
{
	s.prop6=3Dnw_search_keywords.toLowerCase();
}
if (typeof(nw_search_type) !=3D "undefined")
{
	s.prop7=3Dnw_search_type.toLowerCase();
}
s.prop8=3D"";
s.prop9=3D"";
s.prop10=3D"";
s.prop11=3D"";
if (typeof(nw_content_id) !=3D "undefined")
{
	s.prop12=3Dnw_content_id;
	if ( typeof(nw_application) !=3D "undefined" && nw_application )
	{
	      s.prop13 =3D "" ;
	}
	if (typeof(nw_headline) !=3D "undefined" && nw_content_id !=3D "")=20
	{
		s.prop13=3Dnw_headline + " - " + nw_content_id;
	}
}
if (typeof(nw_page_num) !=3D "undefined")
{
	s.prop14=3Dnw_page_num;
}
if (typeof(nw_printed) !=3D "undefined") {
	s.prop19=3D"printed page";
}
if (typeof(nw_search_result_count) !=3D "undefined")
{
	s.prop21=3Dnw_search_result_count;
}
if (typeof(nw_blog_name) !=3D "undefined")
{
	s.prop25=3Dnw_blog_name;
}
if (typeof(nw_application) !=3D "undefined")
{
	s.prop32=3Dnw_application;
}
/* E-commerce Variables */
s.campaign=3D"";
s.state=3D"";
s.zip=3D"";
s.events=3D"";
s.products=3D"";
s.purchaseID=3D"";
s.eVar1=3D"";
s.eVar2=3D"";
s.eVar3=3D"";
s.eVar4=3D"";
s.eVar5=3D"";
s.eVar6=3D"";
s.eVar7=3D"";
s.eVar8=3D"";
s.eVar9=3D"";
s.eVar10=3D"";
/* Hierarchy Variables */
if (typeof(nw_hierarchy) !=3D "undefined")
{
	s.hier1=3D nw_hierarchy.toLowerCase();
}
else
{
	s.hier1=3D"nocategory";
}
s.hier2=3D"newsweek.com|" + s.hier1;

/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_code=3Ds.t();if(s_code)document.write(s_code)

if(navigator.appVersion.indexOf('MSIE')>=3D0)document.write(unescape('%3C=
')+'\!-'+'-')

/* End SiteCatalyst code version: H.7. */
------=_NextPart_000_0000_01C8F15B.0456E260--
