From: <Saved by Windows Internet Explorer 7>
Subject: The Bitter Taste of Dreams Come True | Print Article | Newsweek.com
Date: Mon, 18 Feb 2008 10:31:22 +0200
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C87219.6844FE40"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C87219.6844FE40
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.newsweek.com/id/111803/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>The Bitter Taste of Dreams =
Come True | 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 "culture/entertainment/books";
		</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.16608" 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>The Bitter Taste of Dreams Come True</DIV>
<DIV class=3Ddeck>
<P>Author Amos Oz speaks on Israel and Palestine, the dream of Zionism =
and how=20
politicians listen to artists and then forget everything they're =
told.</P></DIV>
<DIV class=3Dauthor>By <A=20
href=3D'http://services.newsweek.com/search.aspx?q=3DAuthor:^"joanna%20ch=
en"$&amp;sortDirection=3Ddescending&amp;sortField=3Dpubdatetime'>Joanna=20
Chen</A></DIV>
<DIV class=3Dsource>Newsweek Web Exclusive</DIV>
<DIV class=3DarticleUpdated>Updated: 5:49&nbsp;PM ET Feb&nbsp;14, =
2008</DIV>
<DIV class=3Dbody>
<P>Amos Oz is an Israeli author of international acclaim whose works =
have been=20
translated into more than 45 languages. In May, along with playwright =
Tom=20
Stoppard and former U.S. vice president Al Gore, he will receive the Dan =
David=20
Award, totaling $3 million. Oz, 69, who teaches literature at Ben Gurion =

University in southern Israel, was cited by the judges for "portraying=20
historical events while emphasizing the individual and for personal =
exploration=20
of the tragic conflict between two nations." A founding member of the =
Peace Now=20
Movement, Oz has always been at the forefront of the Israeli struggle =
for=20
identity and a staunch advocate of a two-state solution. He recently =
spoke to=20
NEWSWEEK's Joanna Chen at his home in Tel Aviv about literature, =
politics and=20
voices of the dead that won't go away.</P>
<P><STRONG>NEWSWEEK: What do you think makes your writing so accessible =
to=20
people all over the world?<BR>Amos Oz:</STRONG> I suppose there is =
something=20
universal in the provincial. My books are very local, but in a strange =
way I=20
find that the more local, parochial and provincial, the more universal=20
literature can be.</P>
<P><STRONG>Why have so few of your books been translated into =
Arabic?</STRONG>=20
<BR>The Arabic translation matters to me more than any other. It's the =
one I=20
feel involved in most. Unfortunately, there is a wall of resistance with =
the=20
Arab countries. Many Arab publishers won't touch anything coming from =
Israel,=20
whether it comes from the hawks or the doves.</P>
<P><STRONG>What have you done to remedy this?</STRONG> <BR>"A Tale of =
Love and=20
Darkness" is now being translated into Arabic by the family of George =
Khoury, a=20
Palestinian-Israeli student who was shot in the head by terrorists who =
mistook=20
him for a Jew while jogging in Jerusalem. I'm very moved by this and by =
the very=20
noble decision of the family to treat this book as a bridge between the=20
nations.</P>
<P><STRONG>What role do you think the past plays in determining the =
future of=20
this region?</STRONG> <BR>The past almost dominates this =
region=E2=80=94it doesn't just=20
play a role. I think this is one of the tragedies of this region. People =

remember too well and they remember too much. Both Jews and Arabs carry =
deep=20
injuries, dramatic injuries.</P>
<P><STRONG>Should the two sides put these memories away and get on with=20
correcting the present?</STRONG> <BR>We can do that. We can also use our =

memories as building material for the future. We can say, for example, =
these=20
particular traumatic memories [serve as] a lesson in how to treat other =
people,=20
how we should treat our own minorities. This is one way to deal with the =

past.</P>
<P><STRONG>You've talked about a compromise of pain and clenched teeth. =
Can't=20
there be a happy ending?</STRONG> <BR>No, I don't believe in a happy =
ending to=20
this kind of tragic conflict. Essentially because this is a conflict =
between=20
right and right. Any compromise will mean concession; it will mean =
renouncing=20
something which both parties very strongly regard as their own, and both =
parties=20
had very good reasons to regard as their own, so a compromise will be =
like an=20
amputation for both sides. There are no happy compromises.</P>
<P><STRONG>What used to be a local confrontation between the Arab and =
the Jew=20
has become a global affair.</STRONG> <BR>When I was a child it was =
rather=20
similar to the conflict in Belfast: a neighborhood against another =
neighborhood.=20
It evolved into a large-scale conflict between Israel and parts of the =
Arab=20
world, and unfortunately this coincides with a conflict between the West =
and=20
Islam. Let me immediately add that I don't believe in the clash of=20
civilizations. It's not about Islam versus Christianity. It's not about =
East=20
versus West. It's about the fanatics versus the rest of us.</P>
<P><STRONG>Prime Minister Ehud Olmert invited you to his house last =
year. What=20
did you discuss?</STRONG> <BR>I'm not going into the details, because it =
was a=20
private conversation, but I can tell you that this is a very common =
practice in=20
this country. Prime ministers invite writers and poets for a =
soul-searching=20
t=C3=AAte-=C3=A0-t=C3=AAte and ask them where the country has gone =
wrong. And they admire the=20
writer's answers and ignore them completely.</P>
<P><STRONG>Do you think writers still express the social conscience of =
the=20
people?<BR></STRONG>There is a long-standing expectation in the Jewish =
tradition=20
that the writer and the poet will somehow be the heir of the prophet. Of =
course,=20
no writer can deliver this, and even prophets were not very successful =
in their=20
day in changing the minds of the people. But the expectation exists.</P>
<P><STRONG>You've spoken out against the threatened Israeli invasion of =
the Gaza=20
Strip.</STRONG> <BR>By doing so we will unite the entire Palestinian =
people and=20
perhaps the entire Arab world around Hamas. It will raise public opinion =
for=20
Hamas. If we are not careful we will achieve this consequence. It hasn't =

happened yet, but it might.</P>
<P><STRONG>What do you think the people on both sides really=20
want?<BR></STRONG>The vast majority of the Israeli Jews and the vast =
majority of=20
the Palestinian Arabs know now that at the end of the day there will be =
two=20
states, two capital cities in Jerusalem, no massive return of refugees =
into=20
Israel proper and a removal of most of the settlements. They know it, =
even=20
people on both sides who don't like it.</P>
<P><STRONG>Is the Zionist project still alive and kicking?</STRONG> =
<BR>I think=20
it's a success story, but like any dream that comes true it tastes =
bitter. The=20
only way to keep a dream rosy and intact is never to try to live it out. =
This is=20
true not only of creating a nation. This is true of writing a novel, =
planting a=20
garden, living out a sexual fantasy. Zionism is lived out, and as such =
it is=20
disappointing. But this is not about the nature of Zionism; this is =
about the=20
nature of dreams.</P>
<P><STRONG>Do you think America is helping the peace process?</STRONG> =
<BR>Yes.=20
I would like to see the U.S. seriously encouraging Israel to make the =
necessary=20
concessions for a peace agreement with the Palestinians. Encouraging =
Israel also=20
means reassuring Israel. Israel will have to take huge risks by =
renouncing the=20
occupied territories, by renouncing some of its defenses. In this =
respect not=20
only the U.S. but the entire world would help both sides by extending as =
much=20
empathy to both as possible.</P>
<P><STRONG>What do you think of the Iranian threat?</STRONG> <BR>I'm =
afraid that=20
in 10 or 15 years from now every country that wants it will have the =
means of=20
mass destruction, so the campaign against Iran is a lost case. I am =
personally=20
more nervous about Pakistan than I am about Iran. Pakistan is a nuclear =
state=20
with a very powerful Islamic movement, so I am more nervous about =
Pakistan than=20
I am about Iran.</P>
<P><STRONG>Do you have literary favorites?</STRONG> <BR>I don't have a =
shelf=20
with beloved masterpieces, but Anton Chekhov is very close to my heart, =
perhaps=20
the closest. He makes me laugh and cry, sometimes he makes me laugh and =
cry at=20
the same time, which is what I tried to do in "A Tale of Love and =
Darkness": to=20
erase the line between tragedy and comedy. I no longer believe that =
tragedy and=20
comedy are two different planets. They are just two different windows =
from which=20
we can view the same landscape of our lives.</P>
<P><STRONG>How do you plan your books?</STRONG> <BR>I don't plan them. =
It's=20
sudden. I hear some voices inside my head, voices of characters, voices =
of=20
people. I don't know who those people are, but they talk inside my head, =
and I=20
don't recognize those voices initially. Eventually, if they stay with me =
for=20
long enough I become familiar with them. And gradually the voices become =

characters, and what they do to each other is the plot. But it always =
begins=20
with an assembly of voices.<BR><BR><STRONG>Your mother committed suicide =
when=20
you were a child. Do you ever hear her voice?<BR></STRONG>Sometimes, =
yes. I very=20
often hear the voices of dead people. Dead people are very important to =
me.</P>
<P><STRONG>What if a person doesn't want to hear the voices of dead=20
people?</STRONG> <BR>Not hearing those voices is missing part of =
yourself, part=20
of your life. When I wrote "A Tale of Love and Darkness" I was inviting =
the dead=20
to my home for coffee. I said to them, "Sit down. Let's have a cup of =
coffee and=20
talk. When you were alive we didn't talk much. We talked about politics =
and=20
current affairs, but we didn't talk about things that matter =E2=80=A6 =
And after the=20
talk and the coffee you'll go away. You're not staying to live in my =
home. But=20
you are invited to drop by from time to time for a cup of coffee." This =
in my=20
view is the right way to treat the dead.</P>
<P><STRONG>You wrote that as a child you wanted to grow up to be a book. =
Is a=20
book more enduring than a person?</STRONG> <BR>It was a matter of =
personal=20
safety. I was afraid. I was a terrified little child. Rumors were =
beginning to=20
come to Jerusalem at the beginning of the 1940's about the mass murder =
of the=20
Jews in Europe. The air was full of premonitions about the same destiny =
awaiting=20
the Jews of Jerusalem. I thought it would be safer to grow up and become =
a book=20
than to become a man, because as a book at least a copy of me would =
survive in=20
some far-away library in some far-away country.</P><!-- Omniture -->
<SCRIPT language=3Djavascript type=3Dtext/javascript>
		<!--
	=09
			var nw_page_name =3D "nw - article - 111803 - The Bitter Taste of =
Dreams Come True";
			var nw_section =3D "culture";
			var nw_subsection =3D "culture - books";
			var nw_content_type =3D "article";
			var nw_source =3D "newsweek.com";
			var nw_content_id =3D "111803";
			var nw_headline =3D "The Bitter Taste of Dreams Come True";
			var nw_author =3D "joanna chen";
			var nw_page_num =3D "print format";
			var nw_application =3D "gutenberg";
			var nw_hierarchy =3D "culture|books|articles";
		-->
		</SCRIPT>
</DIV>
<DIV class=3DURL>URL: http://www.newsweek.com/id/111803</DIV></DIV>
<DIV class=3Dhr>
<DIV class=3Dcopyright>=C2=A9 &nbsp;2008&nbsp;Newsweek.com</DIV>
<SCRIPT language=3Djavascript =
src=3D"http://ndn.newsweek.com/site/js/nw_omniture.js"=20
type=3Dtext/javascript></SCRIPT>
</DIV></BODY></HTML>

------=_NextPart_000_0000_01C87219.6844FE40
Content-Type: image/gif
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_01C87219.6844FE40
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; LETTER-SPACING: -1px
}
.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_01C87219.6844FE40
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_01C87219.6844FE40
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_01C87219.6844FE40
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 500;=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 500;=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);=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_01C87219.6844FE40
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.washingtonpost.com/wp-srv/ad/wpni_generic_ad.js

//gets revsci info
if (document.domain !=3D '') {
document.write('<s\cript =
src=3D"http://js.revsci.net/gateway/gw.js?csid=3DJ05531"></s\cript>');
}


wpniAds =3D new Object();
wpniAds.keyvalues =3D new Object();
wpniAds.adTypes =3D new Object();
wpniAds.utils =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('');
}

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 then it just =
throws back a new ord value
	if(arguments[0])
	{
		return "ord=3D" + randomInt(1000000000000000000);
	}
=09
	if (typeof this.ordReturnValue =3D=3D 'undefined')
	{=09
		this.ordReturnValue =3D "ord=3D" + randomInt(1000000000000000000);
    }=20
	return 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()
{
	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.pIdReturnVa