From: <Saved by Windows Internet Explorer 8>
Subject: Aiming for a learning-focused school
Date: Tue, 17 Nov 2009 09:02:38 -0000
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CA6764.B652A320"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.teachingtimes.com/articles/aiming-for-learning-focused.htm

=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 xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Aiming for a =
learning-focused school</TITLE><!-- InstanceBegin =
template=3D"/Templates/articleTemplate.dwt.php" =
codeOutsideHTMLIsLocked=3D"false" -->
<META content=3D"text/html; charset=3Dutf-8" =
http-equiv=3DContent-Type><!-- InstanceBeginEditable name=3D"doctitle" =
-->
<META name=3Ddescription content=3D"learning-focused teaching"><!-- =
InstanceEndEditable -->
<META name=3Dkeywords content=3D"">
<META name=3Drobots content=3DNOODP,NOYDIR>
<META content=3DEnglish http-equiv=3Dcontent-language><LINK =
rel=3Dstylesheet=20
type=3Dtext/css =
href=3D"http://www.teachingtimes.com/css/tt/style.css"><LINK=20
rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://www.teachingtimes.com/css/tt/menus.css"><LINK =
rel=3Dstylesheet=20
type=3Dtext/css href=3D"/css/tt/images.css"><!--[if lte IE 6]>=0A=
<link rel=3D"stylesheet" type=3D"text/css" href=3D"/css/tt/style_ie.css" =
/>=0A=
<![endif]--><!--[if gte IE 6]><LINK=20
rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://www.teachingtimes.com/css/tt/style_ie7.css"><![endif]-->
<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.teachingtimes.com/includes/js/tt/common.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.teachingtimes.com/includes/js/prototype.js"></SCRIPT>
<!-- InstanceBeginEditable name=3D"header" --><!-- InstanceEndEditable =
-->
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18852"></HEAD>
<BODY id=3DnoBanner><!--noBanner-->
<DIV id=3Darticle class=3DmainContainer>
<DIV class=3DpageContainer>
<DIV class=3DcontentContainer>
<DIV class=3DpublicationBannerContainer></DIV>
<DIV class=3D"contentInner booples"><!-- Lead Story -->
<DIV class=3D"leadContainer booples">
<DIV class=3DleadContainerBottom></DIV>
<DIV class=3DleadInner>
<DIV class=3DzoneHeading>
<H1><!-- InstanceBeginEditable name=3D"zoneTitle" -->Aiming for a =
learning-focused=20
school<!-- InstanceEndEditable --></H1></DIV><!-- InstanceBeginEditable =
name=3D"content" -->
<DIV=20
style=3D"TEXT-ALIGN: right; PADDING-BOTTOM: 0px; PADDING-LEFT: 14px; =
PADDING-RIGHT: 14px; PADDING-TOP: 0px"><!-- AddThis Button BEGIN -->
<SCRIPT type=3Dtext/javascript>var =
addthis_pub=3D"teachingtimes";</SCRIPT>
<A onmouseover=3D"return addthis_open(this, '', '[URL]', '[TITLE]')"=20
onmouseout=3Daddthis_close() onclick=3D"return addthis_sendto()"=20
href=3D"http://www.addthis.com/bookmark.php?v=3D20"><IMG=20
style=3D"BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; =
BORDER-RIGHT: 0px"=20
alt=3D"Bookmark and Share"=20
src=3D"http://s7.addthis.com/static/btn/lg-bookmark-en.gif" width=3D125=20
height=3D16></A>
<SCRIPT type=3Dtext/javascript=20
src=3D"http://s7.addthis.com/js/200/addthis_widget.js"></SCRIPT>
 <!-- AddThis Button END --></DIV>
<DIV=20
style=3D"PADDING-BOTTOM: 14px; LINE-HEIGHT: 18px; PADDING-LEFT: 14px; =
PADDING-RIGHT: 14px; FONT-FAMILY: Georgia, 'Times New Roman', Times, =
serif; FONT-SIZE: 13px; PADDING-TOP: 14px">
<P>&nbsp;&nbsp;<!--StartFragment--></P>
<P style=3D"TEXT-ALIGN: center" class=3DMsoNormal align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: medium"><B style=3D"mso-bidi-font-weight: =
normal"><SPAN=20
lang=3DEN-GB>Aiming For a Learning-Focused School: Fairlawn Primary =
School Paves=20
the Way</SPAN></B></SPAN><B style=3D"mso-bidi-font-weight: normal"><SPAN =

lang=3DEN-GB><O:P></O:P></SPAN></B></P>
<P class=3DMsoNormal><SPAN lang=3DEN-GB><O:P>&nbsp;</O:P></SPAN><SPAN=20
style=3D"FONT-SIZE: small"><SPAN lang=3DEN-GB>What is learning? Sounds =
simple, but=20
ask yourself and all your teaching colleagues the same question and =
you=E2=80=99re=20
likely to get a wide range of different answers. That=E2=80=99s exactly =
what Robin=20
Bosher, head teacher of Fairlawn Primary school in Lewisham did with his =
staff=20
two years ago. =E2=80=9CMost of us misconstrued it as a question about =
teaching=E2=80=9D, he=20
says. =E2=80=9CUntil recently the emphasis in schools has been on =
teaching. It has=20
always been assumed that if there=E2=80=99s good teaching, then learning =
will take=20
place. Now we know that=E2=80=99s not the =
case.=E2=80=9D</SPAN></SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN =
lang=3DEN-GB><O:P><SPAN=20
style=3D"FONT-SIZE: small">&nbsp;</SPAN></O:P></SPAN><SPAN=20
style=3D"FONT-SIZE: small"><SPAN lang=3DEN-GB>Ex-Ofsted inspector, Mike =
Horton, who=20
is now headmaster at the British School of Chicago, backs up =
Robin=E2=80=99s comments.=20
=E2=80=9CI think that a lot of us in the profession don=E2=80=99t truly =
understand what it means=20
when you start talking about learning,=E2=80=9D he says and recalls an =
example from his=20
inspection days: =E2=80=9CThe teacher I was inspecting had everything; =
he was well=20
prepared, had lots of interactive materials, questions and answers, the =
lot. But=20
when I spoke to the children after the lesson, they hadn=E2=80=99t been =
challenged at=20
all because they=E2=80=99d done all the learning before. The children =
had enjoyed the=20
lesson and so had the teacher, but they hadn=E2=80=99t learnt anything=20
new.=E2=80=9D</SPAN><BR></SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><B=20
style=3D"mso-bidi-font-weight: normal"><SPAN lang=3DEN-GB>Becoming=20
learning-focused<O:P></O:P></SPAN></B></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>It =
was this=20
realisation that a focus on learning was critical that inspired Robin =
Bosher to=20
adopt a new approach for Fairlawn Primary; one that helped the whole =
school=20
become learning-focused. It was a programme called Looking for Learning, =

developed over a six year period by Fieldwork Education, the =
organisation that=20
created the International Primary Curriculum. Looking for Learning is a=20
leadership toolkit which aims to help schools answer crucial questions =
such as=20
=E2=80=98What is learning?=E2=80=99 and =E2=80=98What does it mean to be =
a learning-focused school?=E2=80=99 and=20
helps schools to identify, improve and increase the learning that is =
taking=20
place within their classrooms. =E2=80=9CThere=E2=80=99s been a complete =
change in 18 months as a=20
result,=E2=80=9D says Robin. =E2=80=9CWe=E2=80=99ve moved from a focus =
on =E2=80=98Am I teaching well?=E2=80=99 to =E2=80=98Are=20
the children learning?=E2=80=99 and this is a whole school philosophy =
that every teacher=20
has adopted.=E2=80=9D</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>So =
how did Robin=20
and the teachers at Fairlawn make the change with Looking for Learning? =
=E2=80=9CWe=20
approached it in three ways,=E2=80=9D says Robin. =E2=80=9CAs an audit =
about quality teaching=20
and learning, as a lead for looking at key questions for monitoring =
learning=20
within the classroom, and as an observation process that focuses on =
whole school=20
improvement.=E2=80=9D</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN =
lang=3DEN-GB>Fundamental to the=20
process was to establish a clear understanding amongst all the staff of =
what=20
learning really means. =E2=80=9CLooking for Learning provided just the =
right help we=20
needed to define the different kinds of learning and to ask the right =
questions=20
of children in the classroom to identify what learning was going =
on,=E2=80=9D explains=20
Robin.</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><B=20
style=3D"mso-bidi-font-weight: normal"><SPAN lang=3DEN-GB>Identifying =
Learning in=20
the Classroom<O:P></O:P></SPAN></B></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>The =
next step was=20
to get the teachers into each other=E2=80=99s classrooms to observe and =
identify the=20
learning that was going on. A major part of Looking for =
Learning=E2=80=99s observational=20
approach includes talking to the children about their learning and =
knowing=20
exactly what questions to ask to identify the learning was a crucial =
part of the=20
process. =E2=80=9CTo achieve this we had to help our children understand =
exactly what is=20
meant by learning too,=E2=80=9D says Robin. =E2=80=9CThis has become a =
constant part of our=20
school life in and out of the classroom. For example, we have six =
learning=20
questions, each one focusing on the children=E2=80=99s learning and we =
rotate them on a=20
week-by-week basis. These questions appear all round school so that =
everywhere=20
the children go they see the same questions. For example, this =
week=E2=80=99s question=20
is =E2=80=98Why are we learning this?=E2=80=99 Another question that we =
use is =E2=80=98How is this=20
connected to our other learning?=E2=80=99 It=E2=80=99s helping everyone =
to embed that=20
understanding of learning.=E2=80=9D</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN =
lang=3DEN-GB>Robin says that=20
classroom observations have shifted in focus because of the Looking for =
Learning=20
process: =E2=80=9CDeveloping key monitoring and observation questions so =
that the=20
observers clearly know that they are looking for the learning rather =
than just=20
good teaching is very important,=E2=80=9D he says. =E2=80=9CNow our =
teachers are much more=20
confident about classroom observations because they know what =
they=E2=80=99re being=20
observed for. This was quite a difficult shift for them because they =
were used=20
to the old observational techniques on such issues as =E2=80=98Are the =
children in the=20
correct groups?=E2=80=99 =E2=80=98Are they behaving well?=E2=80=99 and =
=E2=80=98Do I have good resources?=E2=80=99 These=20
questions all focused on good teaching practice but not on good =
learning. They=20
are not the best questions for making sure that children are learning =
well. As=20
teachers, we=E2=80=99ve had to make a distinct shift from being praised =
for having=20
quiet, studious lessons to learning that it=E2=80=99s good if =
there=E2=80=99s collaborative=20
learning going on which is so important for successful learning. Now =
everyone=20
knows that what we=E2=80=99re observing for is to assess whether the =
children have=20
learnt anything. The teaching elements are still there in our =
observation, but=20
they=E2=80=99re of much less importance.=E2=80=9D</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>The =
results of the=20
Looking for Learning observations then became the source of group =
discussions=20
for the teachers and leaders to identify and then improve the amount and =
the=20
quality of learning that was going on in all of the classrooms. This =
process=20
continues today.</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><B=20
style=3D"mso-bidi-font-weight: normal"><SPAN=20
lang=3DEN-GB>Progress<O:P></O:P></SPAN></B></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>So =
just how much=20
difference has this process made to the school? =E2=80=9CSix months =
after introducing=20
Looking for Learning we had an Ofsted inspection and learning was =
regarded as=20
=E2=80=98outstanding,=E2=80=99 says Robin. =E2=80=9CIn the space of just =
six months we had shifted from=20
=E2=80=98good=E2=80=99 at a max, to =E2=80=98outstanding=E2=80=99 in =
many lessons. Looking for Learning=20
definitely took us from good to great and we continue it today to =
maintain and,=20
hopefully improve, on the standard of our learning. You can=E2=80=99t =
underestimate the=20
change that it has made for us.=E2=80=9D</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>The =
Looking for=20
Learning classroom observations are just one of five steps in the =
Looking for=20
Learning Toolkit; a cost-effective, self-help, toolkit of resources =
about=20
learning designed to help leaders to enable their school to become =
driven by=20
learning. The Toolkit includes 5 practical, jargon-free manuals guiding =
leaders=20
every step of the way from putting the Looking for Learning process into =

practice, to understanding learning, to creating, leading and managing a =

learning-focused school supported throughout with three DVDs and an =
effective=20
range of resources. In addition, the Looking for Learning Toolkit =
includes a=20
membership of the Learning Network, a live, evolving website designed as =
a=20
one-stop resource for finding out, discussing and learning more about =
learning=20
as new developments and thinking are published. Within the Learning =
Network is a=20
members-only secure, online database for recording and analysing the =
Looking for=20
Learning evidence within your own school. For more information about the =
Looking=20
for Learning Toolkit &nbsp;call Fieldwork Education at 020-5731-9696.=20
</SPAN><SPAN style=3D"TEXT-DECORATION: underline"=20
class=3DApple-style-span><B><BR></B></SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN =
style=3D"FONT-SIZE: medium"><B=20
style=3D"mso-bidi-font-weight: normal"><SPAN lang=3DEN-GB>How to Create =
a=20
Learning-Focused School</SPAN></B></SPAN><B=20
style=3D"mso-bidi-font-weight: normal"><SPAN =
lang=3DEN-GB><O:P></O:P></SPAN></B></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>The =
Looking for=20
Learning Toolkit provides school leaders with a whole range of practical =
ideas=20
for creating a learning-focused school such as turning meetings into=20
learning-focused meetings, writing learning-focused targets and creating =

learning-focused displays. Here are some ideas from the Looking for =
Learning=20
Toolkit for creating learning-focused displays:</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><EM><SPAN=20
style=3D"FONT-SIZE: small"><B style=3D"mso-bidi-font-weight: =
normal"><SPAN=20
lang=3DEN-GB>Use learning-focused language in your=20
displays</SPAN></B></SPAN></EM><B style=3D"mso-bidi-font-weight: =
normal"><SPAN=20
lang=3DEN-GB><O:P></O:P></SPAN></B></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>Make =
sure you talk=20
about =E2=80=98learning=E2=80=99 displays to each other and to the =
children.&nbsp;</SPAN><SPAN=20
lang=3DEN-GB>Use =E2=80=98learning=E2=80=99, or at least =
learning-related language, in all of the=20
titles, questions,&nbsp;</SPAN><SPAN lang=3DEN-GB>descriptions and so on =
that make=20
up the display. For example, the title =
=E2=80=98Ancient&nbsp;</SPAN><SPAN=20
lang=3DEN-GB>Egyptians=E2=80=99 becomes =E2=80=98What we have learnt =
about life in Ancient Egypt=E2=80=99=20
or&nbsp;</SPAN><SPAN lang=3DEN-GB>=E2=80=98Evidence that we are =
developing our skills in=20
history=E2=80=99.&nbsp;</SPAN><SPAN lang=3DEN-GB>This learning-focused =
language can also=20
be applied to individual pieces of learning&nbsp;</SPAN><SPAN =
lang=3DEN-GB>within=20
the overall display. For example, a caption on an individual piece of =
work=20
can&nbsp;</SPAN><SPAN lang=3DEN-GB>change from =E2=80=98A lovely =
timeline from Sarah=E2=80=99 to=20
=E2=80=98Sarah chose this piece of learning for the display because it =
shows how she is=20
getting better at sequencing important historical =
events=E2=80=99.</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><EM><B=20
style=3D"mso-bidi-font-weight: normal"><SPAN lang=3DEN-GB>Engage the=20
learners</SPAN></B></EM><B style=3D"mso-bidi-font-weight: normal"><SPAN=20
lang=3DEN-GB><O:P></O:P></SPAN></B></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>Make =
the displays=20
interactive so that they enhance and move forward your =
children=E2=80=99s</SPAN><SPAN=20
lang=3DEN-GB>&nbsp;learning:</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN =
lang=3DEN-GB>=E2=80=A2 Add questions to=20
them, or problems to be solved.</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN =
lang=3DEN-GB>=E2=80=A2 Refer to the=20
displays at the start of the school day.</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN =
lang=3DEN-GB>=E2=80=A2 Situate a=20
=E2=80=98teaching=E2=80=99 part of the lesson near to a display and use =
it to help=20
the&nbsp;</SPAN><SPAN lang=3DEN-GB>children focus on the =
subject.</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN =
lang=3DEN-GB>=E2=80=A2 Entice the=20
children by a blank board along with a notice =E2=80=98Watch out for=20
some&nbsp;</SPAN><SPAN lang=3DEN-GB>exciting new learning coming soon to =
this=20
board!=E2=80=99</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN =
lang=3DEN-GB>=E2=80=A2 At the start of=20
a new project, leave a strange but related object by a =
blank&nbsp;</SPAN><SPAN=20
lang=3DEN-GB>board and ask the children to write about it (either =
directly on the=20
board or by&nbsp;</SPAN><SPAN lang=3DEN-GB>using a post-it note). For =
example,=20
what do they think this is? What do they&nbsp;</SPAN><SPAN =
lang=3DEN-GB>want to=20
learn about it? What do they already know about it?</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><EM><B=20
style=3D"mso-bidi-font-weight: normal"><SPAN lang=3DEN-GB>Create a =
=E2=80=98Learning=20
Wall=E2=80=99</SPAN></B></EM><B style=3D"mso-bidi-font-weight: =
normal"><SPAN=20
lang=3DEN-GB><O:P></O:P></SPAN></B></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN lang=3DEN-GB>For =
either an=20
individual class or a whole-school department, create a display=20
area&nbsp;</SPAN><SPAN lang=3DEN-GB>that represents a wall =E2=80=93 the =
=E2=80=98Learning Wall=E2=80=99.=20
Each child has their own =E2=80=98brick=E2=80=99 in =
the&nbsp;</SPAN><SPAN lang=3DEN-GB>wall,=20
represented by a coloured piece of paper. At the end of a day, week or=20
project&nbsp;</SPAN><SPAN lang=3DEN-GB>ask the children to write or draw =
what they=20
have learnt =E2=80=93 perhaps on a post-it note.&nbsp;</SPAN><SPAN =
lang=3DEN-GB>They=20
should then put this on to their brick on the learning wall. As this =
activity=20
is&nbsp;</SPAN><SPAN lang=3DEN-GB>repeated and the children revisit =
their bricks=20
over regular periods of time, the wall&nbsp;</SPAN><SPAN =
lang=3DEN-GB>provides for=20
them (and others) a record of the progressions in their =
learning.</SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN=20
lang=3DEN-GB><O:P></O:P></SPAN></P>
<P style=3D"TEXT-ALIGN: center; LINE-HEIGHT: 150%" class=3DMsoNormal=20
align=3Dcenter>&nbsp;</P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN=20
lang=3DEN-GB><O:P></O:P></SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN=20
lang=3DEN-GB><O:P></O:P></SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN=20
lang=3DEN-GB><O:P></O:P></SPAN></P>
<P style=3D"LINE-HEIGHT: 150%" class=3DMsoNormal><SPAN=20
lang=3DEN-GB><O:P></O:P></SPAN></P><!--EndFragment--></DIV><!-- =
InstanceEndEditable --></DIV></DIV><!-- Search & Sponsored Article -->
<DIV class=3DrightElementContainer>
<DIV style=3D"HEIGHT: 100px" class=3DsearchContainer>
<DIV class=3DsearchContainerBottom></DIV>
<DIV class=3DsearchInner>
<DIV id=3DsearchHeading><A id=3DsearchTitle=20
href=3D"javascript:common__showSearch();">search</A></DIV>
<DIV id=3DsearchHeadingOff><A id=3DloginTitle=20
href=3D"javascript:common__showLogin();">login</A></DIV>
<DIV id=3Dsearch>
<FORM method=3Dpost name=3DsearchForm action=3D/search/run.htm><INPUT=20
class=3DsearchField maxLength=3D80 type=3Dtext name=3Dsearch>=20
<DIV class=3DsearchSubmit=20
onclick=3Ddocument.searchForm.submit();>Search</DIV></FORM></DIV>
<DIV style=3D"DISPLAY: none" id=3Dlogin>
<FORM method=3Dpost name=3DsideLoginForm action=3D/login.htm><INPUT=20
value=3D/articles/aiming-for-learning-focused.htm type=3Dhidden =
name=3Ddestination>=20
<INPUT class=3DsearchField maxLength=3D80 type=3Dtext name=3Dusername>=20
<DIV class=3DloginSubmit=20
onclick=3Ddocument.sideLoginForm.submit();>Login</DIV><INPUT =
class=3DpasswordField=20
maxLength=3D80 type=3Dpassword name=3Dpassword> =
</FORM></DIV></DIV></DIV><!-- InstanceBeginEditable =
name=3D"sponsoredArticle" --><!-- InstanceEndEditable -->
<DIV style=3D"HEIGHT: 10px" class=3DclearIt><IMG alt=3Dspacer=20
src=3D"http://www.teachingtimes.com/images/tt/transparent.gif" width=3D1 =

height=3D1></DIV>
<DIV style=3D"TEXT-ALIGN: center; PADDING-BOTTOM: 15px; PADDING-TOP: =
15px"=20
class=3DsearchContainer>
<DIV class=3DsearchContainerBottom></DIV>
<DIV style=3D"PADDING-TOP: 10px" class=3DvertAdsContainer>
<SCRIPT type=3Dtext/javascript>=0A=
							<!--=0A=
								google_ad_client =3D "pub-7498318012883359";=0A=
								/* 120x240, created 18/03/09 */=0A=
								google_ad_slot =3D "8351737411";=0A=
								google_ad_width =3D 120;=0A=
								google_ad_height =3D 240;=0A=
							//-->=0A=
							</SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"></SCRIPT>=

</DIV></DIV>
<DIV style=3D"HEIGHT: 10px" class=3DclearIt><IMG alt=3Dspacer=20
src=3D"http://www.teachingtimes.com/images/tt/transparent.gif" width=3D1 =

height=3D1></DIV></DIV><!-- subMenus -->
<DIV class=3DleftElementContainer><!--=0A=
					<div class=3D"zoneTitleContainer">=0A=
						<img src=3D"/images/tt/zones.gif" width=3D"129" height=3D"38" =
alt=3D"Zones" class=3D"zoneTitle" />=0A=
					</div>=0A=
					-->
<DIV class=3DleftToolContainer>
<DIV class=3DleftToolHeader>education zones</DIV>
<DIV class=3DzonesMenu>
<UL>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/conferences.htm">conferences</A=
></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/secondary-leadership.htm">secon=
dary=20
  leadership</A></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/international-education.htm">in=
ternational=20
  education</A></LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/zone/primary-leadership.htm">primary=
=20
  leadership</A></LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/zone/early-years.htm">early=20
  years</A></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/creative-curriculum-in-the-clas=
sroom.htm">creative=20
  curriculum</A></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/professional-learning.htm">prof=
essional=20
  learning</A></LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/zone/every-child-matters.htm">every =

  child matters</A></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/e-learning.htm">e-learning</A><=
/LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/zone/learning-outside.htm">learning =

  outside the classroom</A></LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/zone/future-schools.htm">schools of =

  the future</A></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/parents-governors.htm">parents-=
governors</A></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/leadership-briefing.htm">leader=
ship=20
  briefing</A></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/leadership-research.htm">leader=
ship=20
  research</A></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/zone/managers-briefcase.htm">manager=
's=20
  briefcase</A></LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/zone/school-business.htm">school=20
  business</A></LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/zone/healthy-schools.htm">healthy=20
  schools</A></LI></UL></DIV>
<DIV style=3D"HEIGHT: 30px" class=3DclearIt><IMG alt=3Dspacer=20
src=3D"http://www.teachingtimes.com/images/tt/transparent.gif" width=3D1 =

height=3D1></DIV>
<DIV class=3DleftToolHeader>browse</DIV>
<DIV class=3DbrowseMenu>
<UL>
  <LI><A href=3D"http://www.teachingtimes.com/news.htm">News</A></LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/publications.htm">Subscribe</A></LI>=

  <LI><A =
href=3D"http://www.teachingtimes.com/articles/most_read.htm">Popular=20
  Articles</A></LI>
  <LI><A=20
  =
href=3D"http://www.teachingtimes.com/publications.htm">Publications</A></=
LI><!--							=0A=
								<li><a href=3D"#">Services</a></li>=0A=
								<li style=3D"border-bottom:none;">Books:=0A=
									<ul>=0A=
										<li><a href=3D"#">Early Years</a></li>=0A=
										<li><a href=3D"#">Co-operative Learning</a></li>=0A=
										<li><a href=3D"#">School Improvement</a></li>=0A=
										<li><a href=3D"#">Thinking Across the Curriculum</a></li>=0A=
									</ul>=0A=
								</li>=0A=
--></UL></DIV>
<DIV style=3D"HEIGHT: 30px" class=3DclearIt><IMG alt=3Dspacer=20
src=3D"http://www.teachingtimes.com/images/tt/transparent.gif" width=3D1 =

height=3D1></DIV>
<DIV class=3DmainSubMenu><!--<ul>=0A=
							<li><a href=3D"/pricing.htm">pricing</a></li>=0A=
							<li><a href=3D"/privacy.htm">privacy statement</a></li>=0A=
							<li><a href=3D"/terms_and_conditions.htm">terms &amp; =
conditions</a></li>=0A=
							<li><a href=3D"/contact_us.htm">contact us</a></li>=0A=
							<li style=3D"border-bottom:none;"><a =
href=3D"/about_imaginative_minds.htm">about imaginative minds</a></li>=0A=
							</ul>-->
<UL>
  <LI><A href=3D"http://www.teachingtimes.com/about.htm">About =
Us</A></LI>
  <LI><A href=3D"http://www.teachingtimes.com/contact.htm">Contact =
Us</A></LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/privacy-statement.htm">privacy=20
  statement</A></LI>
  <LI><A =
href=3D"http://www.teachingtimes.com/terms-and-conditions.htm">Terms and =

  Conditions</A></LI></UL></DIV></DIV></DIV></DIV></DIV><!-- Main Menu =
-->
<DIV class=3DtopToolContainer>
<DIV class=3DtopToolItem><A=20
href=3D"http://www.teachingtimes.com/home.htm">Home</A></DIV>
<DIV class=3DtopToolSep><IMG alt=3Dspacer=20
src=3D"http://www.teachingtimes.com/images/transparent.gif" width=3D1=20
height=3D1></DIV>
<DIV class=3DtopToolItem><A =
href=3D"http://www.thinkingonlinecatalogue.co.uk/"=20
target=3D_blank>Books/Resources</A></DIV>
<DIV class=3DtopToolSep><IMG alt=3Dspacer=20
src=3D"http://www.teachingtimes.com/images/transparent.gif" width=3D1=20
height=3D1></DIV>
<DIV class=3DtopToolItem><A=20
href=3D"http://library.teachingtimes.com/">Library</A></DIV><!--=0A=
			<div class=3D"topToolSep"><img src=3D"/images/transparent.gif" =
width=3D"1" height=3D"1" alt=3D"spacer" /></div>=0A=
			<div class=3D"topToolItem"><a href=3D"#">Jobs</a></div>=0A=
-->
<DIV class=3DtopToolSep><IMG alt=3Dspacer=20
src=3D"http://www.teachingtimes.com/images/transparent.gif" width=3D1=20
height=3D1></DIV>
<DIV class=3DtopToolItem><A=20
href=3D"http://www.teachingtimes.com/suppliers_coming_soon.htm">Suppliers=
</A></DIV>
<DIV class=3DtopToolSep><IMG alt=3Dspacer=20
src=3D"http://www.teachingtimes.com/images/transparent.gif" width=3D1=20
height=3D1></DIV>
<DIV class=3DtopToolItem><A=20
href=3D"http://www.teachingtimes.com/publications.htm">Subscribe</A></DIV=
>
<DIV class=3DtopToolSep><IMG alt=3Dspacer=20
src=3D"http://www.teachingtimes.com/images/transparent.gif" width=3D1=20
height=3D1></DIV>
<DIV class=3DtopToolItem><A=20
href=3D"http://www.teachingtimes.com/contact.htm">Contact</A></DIV></DIV>=
<!-- Header -->
<DIV class=3DheaderContainer>
<DIV class=3DheaderInner><IMG class=3Dlogo alt=3D"Teaching Times"=20
src=3D"http://www.teachingtimes.com/images/tt/teachingtimes-logo.png" =
width=3D460=20
height=3D88></DIV></DIV>
<DIV class=3DpublicationBanner></DIV>
<DIV id=3Dadzone_28 class=3DhorizAdContainer></DIV><!-- Footer -->
<DIV class=3Dfooter>Copyright =C2=A9 2008 - 2009 Imaginative Minds Ltd. =
All rights=20
reserved.<BR>Site produced, powered &amp; maintained by <A=20
title=3D"ANOTHER Cybacat Website" href=3D"http://www.cybacat.com/"=20
target=3D_blank>Cybacat</A>.</DIV></DIV></DIV><!-- InstanceBeginEditable =
name=3D"footer" -->
<SCRIPT type=3Dtext/javascript =
src=3D"http://ads.cybacat.com/js/ads.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
var cadsI =3D new Cads();=0A=
cadsI.options.xhrProxyAddress =3D '/adproxy/xml/';=0A=
=0A=
cadsI.options.adZones.push({zoneID:28, className:"horizAdvert"});=0A=
cadsI.options.adZones.push({zoneID:27, className:"vertAdvert"});=0A=
cadsI.init();=0A=
</SCRIPT>
<!-- InstanceEndEditable -->
<SCRIPT type=3Dtext/javascript>=0A=
var gaJsHost =3D (("https:" =3D=3D document.location.protocol) ? =
"https://ssl." : "http://www.");=0A=
document.write(unescape("%3Cscript src=3D'" + gaJsHost + =
"google-analytics.com/ga.js' type=3D'text/javascript'%3E%3C/script%3E"));=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
try {=0A=
var pageTracker =3D _gat._getTracker("UA-610573-14");=0A=
pageTracker._trackPageview();=0A=
} catch(err) {}</SCRIPT>
<!-- InstanceEnd --></BODY></HTML>

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://s7.addthis.com/static/btn/lg-bookmark-en.gif

R0lGODlhfQAQAMQfAF+25dvZ12SsPeexZ5KSkh0g/7DP4/zIBOaymvrLUviSEba1tairpurq6sPG
yBqS0+BKCqDGX/DHnsbVqPz8/PPz8/b29vr6+v9pOu/v7+zs7Ojo6MDAwAAAAP///////yH5BAEA
AB8ALAAAAAB9ABAAAAX/4PdxZGmeaKqubOu+cMyJY+DdeK7vfO//wKBwOAzMODaicslsOolGDg5D
rVKf2KZluy14vb4FY7zgBRCSCpF0s7ox2fiQ2/0WdIu8p3zj5wIQgQMbQ2weVm1VOR2MHTiNj4w3
jpMelI+TkpaQlpg8dBZ2dzgEOGM3AQR+NwgQCgoIERECAkCGiIeKnp2Xjr2dwJqbwLyYlJc7oKI5
pR4bBAEBDtPNU68KE7K0tlK5O1e7vsbjv+LileXEn3TLpB4NHAQW0w7PORYLBg4S2bMM3BQogMtB
JWDARh0OGkyYUCEjgxQaSoyIkOJDihAzHkR4IiOBjyQyVNAwBqKBBwAA+gTgly2AxowkLlzAZUWm
zA42ceK8eWFnz58+ffIMCjTnT5tIb3I0kfQCAZkcMmQIwCApAJQqE2hN0LQpiS00q9DpwIUs2S1m
y1o4yxZUWrRr4cadCwrt0hKgODDgYCHqggALQD0YDECC1gMD6tYlUaHCGyuNGyOM3IgyI8mUK3SI
jHlz58yeNXPmjLDDidFSOFTwC3i0gwAGDCQ4cEBBmtG4Q0p9jEGq79/AgwsfTrz48NIngH8kkGH5
R+IBBkgH3iFD9epSSQQwrqG79+/gw4sfT768+fPo04M3UmOD+/fw48ufT7++/fv48+vXz16EjP8A
BijggCyIEAIAOw==

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.teachingtimes.com/images/tt/transparent.gif

R0lGODlhAQABALMAAP///////w0AAAAAAAEAAAEAAP///wEAAAAAAP///////////////////2QA
AP///yH5BAEAAAAALAAAAAABAAEAAAQCEEQAOw==

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.teachingtimes.com/images/transparent.gif

R0lGODlhAQABALMAAP///////w0AAAAAAAEAAAEAAP///wEAAAAAAP///////////////////2QA
AP///yH5BAEAAAAALAAAAAABAAEAAAQCEEQAOw==

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.teachingtimes.com/images/tt/teachingtimes-logo.png

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
RK5CYII=

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.teachingtimes.com/css/tt/style.css

BODY {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FONT-FAMILY: tahoma, verdana, arial, sans-serif, helvetica; =
BACKGROUND: url(/images/tt/backgrounds/page-back-top.gif) #e9e9eb =
repeat-x left top; FONT-SIZE: 11px; PADDING-TOP: 0px
}
FORM {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; PADDING-TOP: 0px
}
H1 {
	TEXT-ALIGN: left; MARGIN-TOP: 0px; FONT-FAMILY: Georgia, "Times New =
Roman", Times, serif; MARGIN-BOTTOM: 10px; COLOR: #0186c1; FONT-SIZE: =
30px; FONT-WEIGHT: normal
}
H1 A {
	COLOR: #fe541b; TEXT-DECORATION: none
}
H1 A:link {
	COLOR: #fe541b; TEXT-DECORATION: none
}
H1 A:active {
	COLOR: #fe541b; TEXT-DECORATION: none
}
H1 A:visited {
	COLOR: #fe541b; TEXT-DECORATION: none
}
H1 A:hover {
	COLOR: #fe541b; TEXT-DECORATION: underline
}
H2 {
	TEXT-ALIGN: left; MARGIN-TOP: 0px; FONT-FAMILY: Georgia, "Times New =
Roman", Times, serif; MARGIN-BOTTOM: 10px; COLOR: #fe541b; FONT-SIZE: =
18px; FONT-WEIGHT: normal
}
H2 A {
	COLOR: #fe541b; TEXT-DECORATION: none
}
H2 A:link {
	COLOR: #fe541b; TEXT-DECORATION: none
}
H2 A:active {
	COLOR: #fe541b; TEXT-DECORATION: none
}
H2 A:visited {
	COLOR: #fe541b; TEXT-DECORATION: none
}
H2 A:hover {
	COLOR: #fe541b; TEXT-DECORATION: underline
}
H3 {
	MARGIN: 0px; DISPLAY: block; FONT-SIZE: 12px; FONT-WEIGHT: bold
}
A {
	COLOR: #000000; TEXT-DECORATION: underline
}
A:link {
	COLOR: #000000; TEXT-DECORATION: underline
}
A:active {
	COLOR: #000000; TEXT-DECORATION: underline
}
A:hover {
	COLOR: #000000; TEXT-DECORATION: none
}
FORM {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; PADDING-TOP: 0px
}
.mainContainer {
	POSITION: relative; TEXT-ALIGN: center
}
.pageContainer {
	POSITION: relative; TEXT-ALIGN: left; MARGIN: auto; WIDTH: 998px; =
COLOR: #000000
}
.contentContainer {
	POSITION: relative; PADDING-TOP: 155px
}
.contentInner {
	POSITION: relative; PADDING-LEFT: 178px
}
.leftElementContainer {
	POSITION: absolute; WIDTH: 147px; TOP: 0px; LEFT: 16px
}
.rightElementContainer {
	POSITION: absolute; WIDTH: 176px; TOP: 0px; RIGHT: 16px
}
.mainContentContainer {
	POSITION: relative; PADDING-BOTTOM: 20px; WIDTH: 803px; BACKGROUND: =
url(/images/tt/backgrounds/content-main-top.gif) #ffffff no-repeat left =
top; CLEAR: both
}
.mainContentContainerBottom {
	POSITION: absolute; WIDTH: 803px; BOTTOM: 0px; BACKGROUND: =
url(/images/tt/backgrounds/content-main-bottom.gif) no-repeat left top; =
HEIGHT: 17px; LEFT: 0px
}
.mainInner {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 10px
}
.mainLeft {
	WIDTH: 656px; FLOAT: left
}
.vertAdsContainer {
	TEXT-ALIGN: center; WIDTH: 125px; FLOAT: left
}
#zone .vertAdsContainer {
	MARGIN: auto; FLOAT: none
}
#article .vertAdsContainer {
	MARGIN: auto; FLOAT: none
}
#articleList .vertAdsContainer {
	MARGIN: auto; FLOAT: none
}
#suppliers .vertAdsContainer {
	MARGIN: auto; FLOAT: none
}
#jobs .vertAdsContainer {
	MARGIN: auto; FLOAT: none
}
.vertAdvert {
	MARGIN-BOTTOM: 6px
}
.headerContainer {
	POSITION: absolute; HEIGHT: 125px; TOP: 0px; LEFT: 0px
}
.headerInner {
	POSITION: relative
}
.zoneHeading {
	LINE-HEIGHT: 40px; WIDTH: 620px
}
#suppliers .zoneHeading {
	LINE-HEIGHT: normal; WIDTH: 620px; BACKGROUND: =
url(/images/suppliers/search-background.png) no-repeat center top; =
HEIGHT: 101px
}
#suppliers .zoneHeadingInner {
	PADDING-BOTTOM: 7px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; =
PADDING-TOP: 40px
}
#jobs .zoneHeading {
	LINE-HEIGHT: normal; WIDTH: 620px; BACKGROUND: =
url(/images/suppliers/search-background.png) no-repeat center top; =
HEIGHT: 101px
}
#jobs .zoneHeadingInner {
	PADDING-BOTTOM: 7px; PADDING-LEFT: 18px; PADDING-RIGHT: 18px; =
PADDING-TOP: 40px
}
.zoneHeading H1 {
	PADDING-BOTTOM: 0px; TEXT-TRANSFORM: capitalize; FONT-VARIANT: normal; =
FONT-STYLE: normal; MARGIN: 0px; PADDING-LEFT: 17px; WIDTH: 570px; =
PADDING-RIGHT: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: =
#0e1b5f; FONT-SIZE: 27px; FONT-WEIGHT: bold; PADDING-TOP: 0px
}
H1#publicationTitle {
	PADDING-BOTTOM: 20px; TEXT-TRANSFORM: capitalize; FONT-VARIANT: normal; =
FONT-STYLE: normal; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 410px; =
PADDING-RIGHT: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: =
#0e1b5f; FONT-SIZE: 30px; FONT-WEIGHT: bold; PADDING-TOP: 0px
}
.publicationInfo {
	FONT-SIZE: 13px
}
.zoneTitleContainer {
	POSITION: relative; BACKGROUND-COLOR: #101a5f; HEIGHT: 40px
}
.zoneTitle {
	POSITION: absolute; TOP: 5px; LEFT: 20px
}
.leadContainer {
	POSITION: relative; WIDTH: 620px; BACKGROUND: =
url(/images/tt/backgrounds/lead-element-bottom.gif) #ffffff no-repeat =
left bottom; FLOAT: left; HEIGHT: 300px
}
#zone .leadContainer {
	PADDING-BOTTOM: 10px; HEIGHT: auto
}
#article .leadContainer {
	HEIGHT: auto
}
#articleList .leadContainer {
	POSITION: relative; WIDTH: 620px; BACKGROUND: =
url(/images/tt/backgrounds/lead-element-bottom.gif) #ffffff no-repeat =
left bottom; FLOAT: left; HEIGHT: auto
}
#suppliers .leadContainer {
	HEIGHT: auto
}
#jobs .leadContainer {
	HEIGHT: auto
}
.leadContainerBottom {
	POSITION: absolute; WIDTH: 620px; BACKGROUND: =
url(/images/tt/backgrounds/lead-element-top.gif) no-repeat left top; =
HEIGHT: 18px; TOP: 0px; LEFT: 0px
}
#articleList .leadContainerBottom {
	POSITION: absolute; WIDTH: 620px; BACKGROUND: =
url(/images/tt/backgrounds/lead-element-top.gif) no-repeat left top; =
HEIGHT: 18px; TOP: 0px; LEFT: 0px
}
.leadInner {
	BORDER-BOTTOM: #4da7d2 2px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 10px; MARGIN-RIGHT: 10px; =
PADDING-TOP: 12px
}
#zone .leadInner {
	BORDER-BOTTOM: #4da7d2 1px solid; POSITION: relative; PADDING-BOTTOM: =
10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 10px; =
MARGIN-LEFT: 10px; MARGIN-RIGHT: 10px; PADDING-TOP: 10px
}
#article .leadInner {
	BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; HEIGHT: auto; =
MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px; PADDING-TOP: 10px
}
#articleList .leadInner {
	BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 10px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-BOTTOM: 0px; MARGIN-LEFT: =
0px; MARGIN-RIGHT: 0px; PADDING-TOP: 10px
}
#suppliers .leadInner {
	BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 14px; =
PADDING-LEFT: 14px; PADDING-RIGHT: 14px; MARGIN-BOTTOM: 0px; HEIGHT: =
auto; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px; PADDING-TOP: 16px
}
#jobs .leadInner {
	BORDER-BOTTOM: medium none; POSITION: relative; PADDING-BOTTOM: 14px; =
PADDING-LEFT: 14px; PADDING-RIGHT: 14px; MARGIN-BOTTOM: 0px; HEIGHT: =
auto; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px; PADDING-TOP: 16px
}
.leadImage {
	WIDTH: 324px; FLOAT: left; HEIGHT: 259px
}
.leadCorner {
	POSITION: absolute; TOP: 17px; LEFT: 10px
}
#zone .leadCorner {
	POSITION: absolute; TOP: 10px; LEFT: 0px
}
.leadStory {
	TEXT-ALIGN: left; MARGIN-TOP: 1px; WIDTH: 265px; FLOAT: right; HEIGHT: =
255px; OVERFLOW: hidden
}
.leadStoryPubLink {
	POSITION: absolute; PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; =
WIDTH: 265px; BOTTOM: 0px; FONT-SIZE: 10px; BORDER-TOP: #8b8b8d 1px =
dashed; RIGHT: 0px; PADDING-TOP: 4px
}
.leadStoryPubLink A {
	COLOR: #8b8b8d; TEXT-DECORATION: none
}
.leadStoryPubLink A:link {
	COLOR: #8b8b8d; TEXT-DECORATION: none
}
.leadStoryPubLink A:active {
	COLOR: #8b8b8d; TEXT-DECORATION: none
}
.leadStoryPubLink A:visited {
	COLOR: #8b8b8d; TEXT-DECORATION: none
}
.leadStoryPubLink A:hover {
	COLOR: #000000; TEXT-DECORATION: none
}
.topRowContainer {
	MARGIN-BOTTOM: 15px
}
#zone .topRowContainer {
	BACKGROUND: url(/images/tt/zone-secondary-news-back.gif) repeat-y =
center top
}
#zone .topRowContainerInner {
	PADDING-LEFT: 18px
}
.topRowItem {
	BORDER-BOTTOM: #4da7d2 2px solid; POSITION: relative; TEXT-ALIGN: left; =
WIDTH: 191px; FLOAT: left; HEIGHT: 350px; MARGIN-RIGHT: 14px
}
#zone .topRowItem {
	BORDER-BOTTOM: medium none; POSITION: relative; TEXT-ALIGN: left; =
WIDTH: 275px; FLOAT: left; HEIGHT: 320px; MARGIN-RIGHT: 0px
}
.topRowItemImage {
	WIDTH: 191px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 150px
}
#zone .topRowItemImage {
	WIDTH: 275px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 188px
}
.topRowItemText {
	OVERFLOW: hidden
}
#zone .topRowItemText {
	OVERFLOW: hidden
}
.topRowItemSep {
	WIDTH: 14px; FLOAT: left
}
#zone .topRowItemSep {
	WIDTH: 32px; FLOAT: left
}
.topRowItemPubLink {
	POSITION: absolute; PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; =
WIDTH: 191px; BOTTOM: 0px; FONT-SIZE: 10px; BORDER-TOP: #8b8b8d 1px =
dashed; PADDING-TOP: 4px; LEFT: 0px
}
.topRowItemPubLink A {
	COLOR: #8b8b8d; TEXT-DECORATION: none
}
.topRowItemPubLink A:link {
	COLOR: #8b8b8d; TEXT-DECORATION: none
}
.topRowItemPubLink A:active {
	COLOR: #8b8b8d; TEXT-DECORATION: none
}
.topRowItemPubLink A:visited {
	COLOR: #8b8b8d; TEXT-DECORATION: none
}
.topRowItemPubLink A:hover {
	COLOR: #000000; TEXT-DECORATION: none
}
.columnContainer {
	CLEAR: both
}
.column {
	WIDTH: 295px; FLOAT: left
}
.columnSep {
	WIDTH: 10px; FLOAT: left
}
.publicationBannerContainer {
	BACKGROUND: url(/images/tt/backgrounds/publication-panel.gif) no-repeat =
center top; HEIGHT: 160px
}
#noBanner .publicationBannerContainer {
	DISPLAY: none
}
.publicationBanner {
	POSITION: absolute; WIDTH: 950px; HEIGHT: 135px; TOP: 162px; LEFT: 23px
}
#noBanner .publicationBanner {
	DISPLAY: none
}
.rssContainer {
	POSITION: relative; WIDTH: 147px; BACKGROUND: =
url(/images/tt/backgrounds/left-element-top.gif) no-repeat left top; =
FLOAT: left
}
.rssContainerBottom {
	Z-INDEX: 2; POSITION: absolute; WIDTH: 147px; BOTTOM: -1px; BACKGROUND: =
url(/images/tt/backgrounds/left-element-bottom.gif) no-repeat left top; =
HEIGHT: 13px; LEFT: 0px
}
.rssInner {
	Z-INDEX: 4000; PADDING-BOTTOM: 10px; LINE-HEIGHT: 24px; PADDING-LEFT: =
10px; PADDING-RIGHT: 10px; COLOR: #000000; FONT-SIZE: 12px; PADDING-TOP: =
10px
}
.rssInner A {
	COLOR: #000000; TEXT-DECORATION: underline
}
.rssInner A:link {
	COLOR: #000000; TEXT-DECORATION: underline
}
.rssInner A:active {
	COLOR: #000000; TEXT-DECORATION: underline
}
.rssInner A:visited {
	COLOR: #000000; TEXT-DECORATION: underline
}
.rssInner A:hover {
	COLOR: #000000; TEXT-DECORATION: none
}
.rssLinks {
	Z-INDEX: 4000; POSITION: relative; TEXT-ALIGN: center; LINE-HEIGHT: =
11px; CLEAR: both; FONT-SIZE: 10px
}
.rssLinks A {
	COLOR: #999; TEXT-DECORATION: underline
}
.rssLinks A:link {
	COLOR: #999; TEXT-DECORATION: underline
}
.rssLinks A:active {
	COLOR: #999; TEXT-DECORATION: underline
}
.rssLinks A:visited {
	COLOR: #999; TEXT-DECORATION: underline
}
.rssLinks A:hover {
	COLOR: #999; TEXT-DECORATION: none
}
.searchContainer {
	POSITION: relative; WIDTH: 176px; BACKGROUND: =
url(/images/tt/backgrounds/side-element-top.gif) no-repeat left top; =
FLOAT: left
}
.searchContainerBottom {
	POSITION: absolute; WIDTH: 176px; BOTTOM: -1px; BACKGROUND: =
url(/images/tt/backgrounds/side-element-bottom.gif) no-repeat left top; =
HEIGHT: 13px; LEFT: 0px
}
.searchInner {
	Z-INDEX: 4000; PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: =
10px; PADDING-TOP: 10px
}
.searchInner #searchHeading {
	TEXT-ALIGN: center; LINE-HEIGHT: 20px; TEXT-TRANSFORM: capitalize; =
WIDTH: 75px; BACKGROUND: url(/images/buttons/search-blue.gif) no-repeat =
left top; FLOAT: left; HEIGHT: 20px; FONT-SIZE: 11px; FONT-WEIGHT: bold
}
.searchInner #searchHeadingOff {
	TEXT-ALIGN: center; LINE-HEIGHT: 20px; TEXT-TRANSFORM: capitalize; =
WIDTH: 75px; FLOAT: left; HEIGHT: 20px; FONT-SIZE: 11px; FONT-WEIGHT: =
bold
}
.searchInner #searchHeading A {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.searchInner #searchHeading A:link {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.searchInner #searchHeading A:active {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.searchInner #searchHeading A:visited {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.searchInner #searchHeading A:hover {
	COLOR: #ffffff; TEXT-DECORATION: underline
}
.searchInner #searchHeadingOff A {
	COLOR: #000000; TEXT-DECORATION: none
}
.searchInner #searchHeadingOff A:link {
	COLOR: #000000; TEXT-DECORATION: none
}
.searchInner #searchHeadingOff A:active {
	COLOR: #000000; TEXT-DECORATION: none
}
.searchInner #searchHeadingOff A:visited {
	COLOR: #000000; TEXT-DECORATION: none
}
.searchInner #searchHeadingOff A:hover {
	COLOR: #000000; TEXT-DECORATION: underline
}
.searchField {
	BORDER-BOTTOM: #ffffff 0px solid; BORDER-LEFT: #ffffff 0px solid; =
PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #e9e9eb; MARGIN-TOP: 10px; WIDTH: =
150px; FONT-SIZE: 11px; BORDER-TOP: #ffffff 0px solid; BORDER-RIGHT: =
#ffffff 0px solid; PADDING-TOP: 2px
}
.passwordField {
	BORDER-BOTTOM: #ffffff 0px solid; BORDER-LEFT: #ffffff 0px solid; =
PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #e9e9eb; MARGIN-TOP: 6px; WIDTH: =
75px; FONT-SIZE: 11px; BORDER-TOP: #ffffff 0px solid; BORDER-RIGHT: =
#ffffff 0px solid; PADDING-TOP: 2px
}
.searchSubmit {
	TEXT-ALIGN: right; MARGIN-TOP: 4px; PADDING-RIGHT: 4px; CURSOR: pointer
}
.loginSubmit {
	PADDING-RIGHT: 4px; FLOAT: right; CURSOR: pointer; PADDING-TOP: 8px
}
.sponsoredContainer {
	TEXT-ALIGN: left; PADDING-BOTTOM: 15px; PADDING-LEFT: 10px; =
PADDING-RIGHT: 10px; PADDING-TOP: 10px
}
.sponsoredInner {
	HEIGHT: 170px; OVERFLOW: hidden
}
.sponsoredInner #heading {
	TEXT-TRANSFORM: uppercase; COLOR: #881212
}
.sponsoredText {
=09
}
.sponsoredText A {
	COLOR: #000000; TEXT-DECORATION: none
}
.sponsoredText A:link {
	COLOR: #000000; TEXT-DECORATION: none
}
.sponsoredText A:active {
	COLOR: #000000; TEXT-DECORATION: none
}
.sponsoredText A:visited {
	COLOR: #000000; TEXT-DECORATION: none
}
.sponsoredText A:hover {
	COLOR: #000000; TEXT-DECORATION: underline
}
.issueInner {
	TEXT-ALIGN: left; PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; PADDING-TOP: 5px
}
.issueInner #heading {
	TEXT-TRANSFORM: uppercase; COLOR: #881212
}
.issueText {
	PADDING-TOP: 7px
}
.issueText A {
	COLOR: #000000; TEXT-DECORATION: none
}
.issueText A:link {
	COLOR: #000000; TEXT-DECORATION: none
}
.issueText A:active {
	COLOR: #000000; TEXT-DECORATION: none
}
.issueText A:visited {
	COLOR: #000000; TEXT-DECORATION: none
}
.issueText A:hover {
	COLOR: #000000; TEXT-DECORATION: underline
}
.issueSubscribe {
	MARGIN-TOP: 10px; BORDER-TOP: #cccccc 1px dashed; PADDING-TOP: 5px
}
.issueSubscribe A {
	COLOR: #881212; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
.issueSubscribe A:link {
	COLOR: #881212; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
.issueSubscribe A:active {
	COLOR: #881212; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
.issueSubscribe A:visited {
	COLOR: #881212; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
.issueSubscribe A:hover {
	COLOR: #881212; FONT-WEIGHT: bold; TEXT-DECORATION: underline
}
.logo {
	POSITION: absolute; TOP: 20px; LEFT: 20px
}
.horizAdContainer {
	POSITION: absolute; WIDTH: 468px; HEIGHT: 90px; TOP: 35px; RIGHT: 20px
}
.horizAdvert {
=09
}
.clearIt {
	CLEAR: both
}
#zone .footer {
	PADDING-RIGHT: 180px
}
#articleList .footer {
	PADDING-RIGHT: 180px
}
#article .footer {
	PADDING-RIGHT: 180px
}
#suppliers .footer {
	PADDING-RIGHT: 180px
}
#jobs .footer {
	PADDING-RIGHT: 180px
}
.footer {
	TEXT-ALIGN: right; PADDING-BOTTOM: 10px; LINE-HEIGHT: 18px; MARGIN: 0px =
16px 10px; LETTER-SPACING: normal; COLOR: #666666; CLEAR: both; =
PADDING-TOP: 10px
}
.footer A {
	COLOR: #666666; TEXT-DECORATION: underline
}
.footer A:active {
	COLOR: #666666; TEXT-DECORATION: underline
}
.footer A:link {
	COLOR: #666666; TEXT-DECORATION: underline
}
.footer A:visited {
	COLOR: #666666; TEXT-DECORATION: underline
}
.footer A:hover {
	COLOR: #000000; TEXT-DECORATION: underline
}
.booples:after {
	TEXT-ALIGN: left; DISPLAY: block; HEIGHT: 0px; VISIBILITY: hidden; =
CLEAR: both; FONT-SIZE: 0px; CONTENT: "."
}
.booples {
	DISPLAY: block
}
* HTML .booples {
	HEIGHT: 1%
}
.booples {
	DISPLAY: block
}
.latestNewsArticles H3 {
	BORDER-BOTTOM: #fe541b 2px solid; PADDING-BOTTOM: 4px; TEXT-TRANSFORM: =
uppercase; BACKGROUND-COLOR: #000244; PADDING-LEFT: 4px; PADDING-RIGHT: =
4px; MARGIN-BOTTOM: 4px; COLOR: #ffffff; PADDING-TOP: 4px
}
.latestNewsArticles A {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.latestNewsLink {
	BORDER-BOTTOM: #cccccc 2px dotted; PADDING-BOTTOM: 4px; TEXT-TRANSFORM: =
uppercase; COLOR: #666666
}
#zone .sponsoredArticles H2 {
	BORDER-BOTTOM: #0b5314 2px solid; PADDING-BOTTOM: 4px; TEXT-TRANSFORM: =
uppercase; BACKGROUND-COLOR: #658c09; PADDING-LEFT: 4px; PADDING-RIGHT: =
4px; FONT-FAMILY: tahoma, verdana, arial, sans-serif, helvetica; =
MARGIN-BOTTOM: 4px; COLOR: #ffffff; FONT-SIZE: 12px; FONT-WEIGHT: bold; =
PADDING-TOP: 4px
}
.widget {
	MARGIN-BOTTOM: 8px
}
.widgetArticle {
	BORDER-BOTTOM: #666666 2px dotted; PADDING-BOTTOM: 4px; PADDING-TOP: =
10px
}
.widgetArticle H3 {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetArticle H3 A {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetArticle H3 A:hover {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetArticle H3 A:visited {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetArticleImageRight {
	WIDTH: 100px; FLOAT: right; HEIGHT: 100px
}
.widgetArticleContentRight {
	WIDTH: 190px; FLOAT: right
}
.widgetArticleImageLeft {
	WIDTH: 100px; FLOAT: left; HEIGHT: 100px
}
.widgetArticleContentLeft {
	WIDTH: 190px; FLOAT: left
}
.storeFeedWidget {
=09
}
.widgetStoreItem {
	MARGIN-BOTTOM: 4px
}
.widgetStoreItem H3 {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetStoreItem H3 A {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetStoreItem H3 A:hover {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetStoreItem H3 A:visited {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.suppliersFeedWidget {
=09
}
.widgetSupplier {
	MARGIN-BOTTOM: 4px
}
.widgetSupplier H3 {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetSupplier H3 A {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetSupplier H3 A:hover {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetSupplier H3 A:visited {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.jobsWidget {
	MARGIN-BOTTOM: 4px
}
.widgetJobItem {
	MARGIN-BOTTOM: 4px
}
.widgetJobItem H3 {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetJobItem H3 A {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetJobItem H3 A:hover {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widgetJobItem H3 A:visited {
	MARGIN: 0px 0px 6px; COLOR: #0186c1; FONT-SIZE: 16px
}
.widget H2 {
	BORDER-BOTTOM: 2px solid; PADDING-BOTTOM: 4px; TEXT-TRANSFORM: =
uppercase; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; FONT-FAMILY: tahoma, =
verdana, arial, sans-serif, helvetica; MARGIN-BOTTOM: 4px; COLOR: =
#ffffff; FONT-SIZE: 12px; FONT-WEIGHT: bold; PADDING-TOP: 4px
}
.widgetTitleOne {
	BORDER-BOTTOM-COLOR: #402100; BACKGROUND-COLOR: #bf6200
}
.widgetTitleTwo {
	BORDER-BOTTOM-COLOR: #80007e; BACKGROUND-COLOR: #bf00bd
}
.widgetTitleThree {
	BORDER-BOTTOM-COLOR: #004040; BACKGROUND-COLOR: #008080
}
.widgetTitleFour {
	BORDER-BOTTOM-COLOR: #0002bf; BACKGROUND-COLOR: #8081ff
}
.widgetTitleFive {
	BORDER-BOTTOM-COLOR: #403f00; BACKGROUND-COLOR: #807e00
}
.widgetTitleSix {
	BORDER-BOTTOM-COLOR: #804100; BACKGROUND-COLOR: #e67704
}
.widgetTitleSeven {
	BORDER-BOTTOM-COLOR: #333333; BACKGROUND-COLOR: #999999
}
.widgetTitleEight {
	BORDER-BOTTOM-COLOR: #000244; BACKGROUND-COLOR: #0186c1
}
.widgetTitleNine {
	BORDER-BOTTOM-COLOR: #fe541b; BACKGROUND-COLOR: #000244
}
.widgetTitleTen {
	BORDER-BOTTOM-COLOR: #0b5314; BACKGROUND-COLOR: #658c09
}
.publicationContainer {
	POSITION: relative; TEXT-ALIGN: center; PADDING-BOTTOM: 10px; WIDTH: =
206px; FLOAT: left
}
.publicationInner {
	TEXT-ALIGN: left; MARGIN: 16px auto auto; WIDTH: 160px
}
.publicationContainer H3 {
	TEXT-ALIGN: center
}
.publicationContainer A {
	COLOR: #000000; TEXT-DECORATION: none
}
.publicationContainer A:hover {
	COLOR: #000000; TEXT-DECORATION: none
}
.publicationContainer A:visited {
	COLOR: #000000; TEXT-DECORATION: none
}
.publicationThumb {
	WIDTH: 100%; CURSOR: pointer
}
.publicationSubscribeLink {
	POSITION: absolute; TOP: 90px; LEFT: 10px
}
.pubSep {
	MARGIN: 10px 23px; HEIGHT: 1px; CLEAR: both; BORDER-TOP: #66b6d9 2px =
solid
}
.articleListPubToggle {
	FLOAT: right; CURSOR: pointer
}
.searchResultCont {
	MARGIN-BOTTOM: 18px
}
.searchResultCont IMG {
	PADDING-LEFT: 8px; FLOAT: right
}
.searchResultWord {
	COLOR: #ff0000
}
.searchResultCont H3 {
	MARGIN: 0px 0px 6px
}
.searchResultCont H3 SPAN {
	FONT-WEIGHT: normal
}
.newsItemContainer {
	MARGIN-BOTTOM: 18px
}
.newsItemContainer IMG {
	PADDING-LEFT: 10px; FLOAT: right
}
.newsItemContainer H3 {
	MARGIN: 0px 0px 6px
}
.newsItemContainer H3 SPAN {
	FONT-WEIGHT: normal
}
.searchControls SPAN {
	FONT-SIZE: 14px
}
.searchControls DIV {
	PADDING-BOTTOM: 7px; LINE-HEIGHT: 20px; FONT-WEIGHT: bold
}
.searchControls FORM {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 10px
}
.searchControlsNew {
=09
}
.searchControlsNew DIV {
	PADDING-BOTTOM: 7px
}
.searchControlsNew SPAN {
	FONT-WEIGHT: bold
}
.searchOptions {
	PADDING-TOP: 5px
}
.searchReport {
	WIDTH: 220px; FLOAT: right
}
.searchReport DIV {
	LINE-HEIGHT: 16px
}
.searchResutlsBanner {
	BORDER-BOTTOM: #31a9e3 1px solid; PADDING-BOTTOM: 3px; =
BACKGROUND-COLOR: #d0eaff; MARGIN: 7px 0px; PADDING-LEFT: 3px; =
PADDING-RIGHT: 3px; CLEAR: both; FONT-SIZE: 12px; BORDER-TOP: #31a9e3 =
1px solid; PADDING-TOP: 3px
}
.loginInputRow {
	MARGIN-BOTTOM: 8px
}
.loginInputRow STRONG {
	WIDTH: 110px; FLOAT: left; MARGIN-RIGHT: 6px
}
.loginInputRow DIV {
	FLOAT: left
}
.loginInputRow DIV INPUT {
	MARGIN: 0px
}
.mainLoginSubmit {
	BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; =
BACKGROUND: none transparent scroll repeat 0% 0%; BORDER-TOP: #000000 =
1px solid; CURSOR: pointer; BORDER-RIGHT: #000000 1px solid
}
.mostViewedArticlesList {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 16px 0px 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; =
PADDING-TOP: 0px
}
.mostViewedArticlesList LI {
	BORDER-BOTTOM: #c0c0c0 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: =
5px; PADDING-RIGHT: 5px; PADDING-TOP: 10px
}
.mostViewedArticlesList LI H3 {
	MARGIN-BOTTOM: 6px
}
.mostViewedArticlesList LI DIV {
	FLOAT: right; COLOR: #ff0000; FONT-WEIGHT: bold
}
.mostViewedArticlesList LI P {
	MARGIN: 0px 0px 4px; HEIGHT: 1.2em; CLEAR: both; OVERFLOW: hidden
}
.cardIcon {
	FLOAT: left; MARGIN-RIGHT: 5px
}
.paymentOptions {
	BACKGROUND: url(/images/tt/backgrounds/payment-back.gif) repeat-y left =
top
}
.ratesList {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 6px 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; =
PADDING-TOP: 0px
}
.ratesList LI {
	BORDER-BOTTOM: #000000 1px solid; PADDING-BOTTOM: 4px; MARGIN: 6px; =
PADDING-LEFT: 4px; PADDING-RIGHT: 4px; PADDING-TOP: 4px
}
.ratesList LI DIV {
	FLOAT: left
}
.ratesList LI H3 {
	MARGIN: 0px 0px 6px
}
.ratesList LI IMG {
	FLOAT: right
}
.rateFeatures {
	LIST-STYLE-POSITION: inside; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.rateFeatures LI {
	BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: =
medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0px
}
.ratePrice {
	WIDTH: 15%; FONT-SIZE: 16px
}
.subPayment {
	FLOAT: left
}
.subPayment DL DT {
	MARGIN-BOTTOM: 3px; FONT-WEIGHT: bold
}
.subPayment DL DD {
	MARGIN-BOTTOM: 8px; MARGIN-LEFT: 0px
}
.subPayment DL DD DIV {
	TEXT-ALIGN: center; FLOAT: left
}
.subscriberDetails {
=09
}
.subscriberDetails DT {
	WIDTH: 124px; MARGIN-BOTTOM: 8px; FLOAT: left; CLEAR: both; =
FONT-WEIGHT: bold
}
.subscriberDetails DD {
	MARGIN-BOTTOM: 8px; FLOAT: left; MARGIN-LEFT: 25px
}
.subscriberDetails DD DL {
	POSITION: relative; MARGIN: 0px 5px 0px 0px; FLOAT: left; TOP: -1.2em
}
.subscriberDetails DD DL DT {
	WIDTH: auto; MARGIN-BOTTOM: 2px; FLOAT: left; CLEAR: none
}
.subscriberDetails DD DL DD {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; FLOAT: left; CLEAR: both; PADDING-TOP: 0px
}
.subscriberDetails DD INPUT {
	FONT-SIZE: 11px
}
.subscriberDetails DD SELECT {
	FONT-SIZE: 11px
}
.migrationContactList {
	PADDING-LEFT: 0px; MARGIN-LEFT: 0px
}
.migrationContactList LI {
	BORDER-BOTTOM: #c0c0c0 1px solid; PADDING-BOTTOM: 10px; =
LIST-STYLE-TYPE: none; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; CURSOR: =
pointer; LIST-STYLE-IMAGE: none; PADDING-TOP: 10px
}
.migrationContactList LI#activeContact {
	BACKGROUND-COLOR: #d0eaff
}
.leftFloat {
	FLOAT: left; MARGIN-RIGHT: 6px
}
.rightFloat {
	FLOAT: right; MARGIN-LEFT: 4px
}

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.teachingtimes.com/css/tt/menus.css

.topToolContainer {
	POSITION: absolute; WIDTH: 966px; BACKGROUND: =
url(/images/tt/backgrounds/toolbar.gif) no-repeat left top; HEIGHT: =
20px; TOP: 125px; LEFT: 16px
}
.topToolItem {
	TEXT-ALIGN: center; LINE-HEIGHT: 18px; WIDTH: 158px; FLOAT: left; =
COLOR: #ffffff; FONT-SIZE: 11px; FONT-WEIGHT: bold
}
.topToolItem A {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.topToolItem A:link {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.topToolItem A:active {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.topToolItem A:visited {
	COLOR: #ffffff; TEXT-DECORATION: none
}
.topToolItem A:hover {
	COLOR: #ffffff; TEXT-DECORATION: underline
}
.topToolSep {
	BACKGROUND-COLOR: #bfbec3; WIDTH: 2px; FLOAT: left; HEIGHT: 20px
}
.leftToolHeader {
	TEXT-ALIGN: center; PADDING-BOTTOM: 7px; TEXT-TRANSFORM: uppercase; =
BACKGROUND: url(/images/tt/backgrounds/submenu-title.gif) no-repeat left =
top; FONT-WEIGHT: bold; PADDING-TOP: 7px
}
.leftToolHeaderBlue {
	TEXT-ALIGN: center; PADDING-BOTTOM: 7px; TEXT-TRANSFORM: uppercase; =
BACKGROUND: url(/images/tt/backgrounds/submenu-title-blue.gif) no-repeat =
left top; FONT-WEIGHT: bold; PADDING-TOP: 7px
}
.leftToolContainer {
	COLOR: #ffffff
}
.zonesMenu {
	TEXT-TRANSFORM: capitalize; PADDING-LEFT: 3px; BACKGROUND: =
url(/images/tt/backgrounds/submenu-main.gif) no-repeat left bottom; =
COLOR: #000000
}
.zonesMenu UL {
	TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; =
WIDTH: 141px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.zonesMenu LI {
	BORDER-BOTTOM: #e6e6e6 1px solid; PADDING-BOTTOM: 5px; LIST-STYLE-TYPE: =
none; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; LIST-STYLE-IMAGE: none; =
PADDING-TOP: 5px
}
.zonesMenu LI A {
	COLOR: #000000; TEXT-DECORATION: none
}
.zonesMenu LI A:link {
	COLOR: #000000; TEXT-DECORATION: none
}
.zonesMenu LI A:active {
	COLOR: #000000; TEXT-DECORATION: none
}
.zonesMenu LI A:visited {
	COLOR: #000000; TEXT-DECORATION: none
}
.zonesMenu LI A:hover {
	COLOR: #000000; TEXT-DECORATION: underline
}
.browseMenu {
	PADDING-LEFT: 3px; COLOR: #000000
}
.browseMenu UL {
	TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; =
WIDTH: 141px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.browseMenu LI {
	BORDER-BOTTOM: #919095 1px solid; PADDING-BOTTOM: 5px; LIST-STYLE-TYPE: =
none; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; LIST-STYLE-IMAGE: none; =
PADDING-TOP: 5px
}
.browseMenu LI A {
	COLOR: #000000; TEXT-DECORATION: none
}
.browseMenu LI A:link {
	COLOR: #000000; TEXT-DECORATION: none
}
.browseMenu LI A:active {
	COLOR: #000000; TEXT-DECORATION: none
}
.browseMenu LI A:visited {
	COLOR: #000000; TEXT-DECORATION: none
}
.browseMenu LI A:hover {
	COLOR: #000000; TEXT-DECORATION: underline
}
.browseMenu UL LI UL {
	TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 5px 0px 0px; =
PADDING-LEFT: 0px; WIDTH: 141px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.browseMenu UL LI UL LI {
	BORDER-BOTTOM: medium none; PADDING-BOTTOM: 5px; PADDING-LEFT: 15px; =
PADDING-RIGHT: 3px; PADDING-TOP: 5px
}
.browseMenu UL LI UL LI A {
	COLOR: #324465; TEXT-DECORATION: none
}
.browseMenu UL LI UL LI A:link {
	COLOR: #324465; TEXT-DECORATION: none
}
.browseMenu UL LI UL LI A:active {
	COLOR: #324465; TEXT-DECORATION: none
}
.browseMenu UL LI UL LI A:visited {
	COLOR: #324465; TEXT-DECORATION: none
}
.browseMenu UL LI UL LI A:hover {
	COLOR: #324465; TEXT-DECORATION: underline
}
.mainSubMenu {
	BACKGROUND-COLOR: #c7c7cf
}
.mainSubMenu UL {
	TEXT-ALIGN: left; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; =
WIDTH: 147px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.mainSubMenu LI {
	BORDER-BOTTOM: #e9e9eb 1px solid; PADDING-BOTTOM: 7px; TEXT-TRANSFORM: =
uppercase; LIST-STYLE-TYPE: none; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; =
LIST-STYLE-IMAGE: none; PADDING-TOP: 7px
}
.mainSubMenu LI A {
	COLOR: #000000; TEXT-DECORATION: none
}
.mainSubMenu LI A:link {
	COLOR: #000000; TEXT-DECORATION: none
}
.mainSubMenu LI A:active {
	COLOR: #000000; TEXT-DECORATION: none
}
.mainSubMenu LI A:visited {
	COLOR: #000000; TEXT-DECORATION: none
}
.mainSubMenu LI A:hover {
	COLOR: #ffffff; TEXT-DECORATION: underline
}

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.teachingtimes.com/css/tt/style_ie7.css

.booples {
	MIN-HEIGHT: 0px
}
.subscriberDetails {
	BORDER-BOTTOM: #ffffff 2px solid; BORDER-LEFT: #ffffff 2px solid; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
BORDER-TOP: #ffffff 2px solid; BORDER-RIGHT: #ffffff 2px solid; =
PADDING-TOP: 0px
}
.subscriberDetails DD INPUT {
	POSITION: relative; LEFT: -24px
}
.subscriberDetails DD DL DD INPUT {
	LEFT: auto
}

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.teachingtimes.com/includes/js/tt/common.js

// JavaScript Document=0A=
function common__showSearch() {=0A=
    $('searchTitle').parentNode.id =3D "";=0A=
    $('loginTitle').parentNode.id =3D "";=0A=
=0A=
	$('search').style.display =3D '';=0A=
    $('searchTitle').parentNode.id =3D "searchHeading";=0A=
	//$('searchTitle').style.color =3D '#cccccc';=0A=
	=0A=
	$('login').style.display =3D 'none';=0A=
    $('loginTitle').parentNode.id =3D "searchHeadingOff";=0A=
	//$('loginTitle').style.color =3D '#000000';=0A=
}=0A=
=0A=
function common__showLogin() {=0A=
    $('searchTitle').parentNode.id =3D "";=0A=
    $('loginTitle').parentNode.id =3D "";=0A=
=0A=
    $('search').style.display =3D 'none';=0A=
    $('searchTitle').parentNode.id =3D "searchHeadingOff";=0A=
	//$('searchTitle').style.color =3D '#000000';=0A=
    =0A=
	$('login').style.display =3D '';=0A=
    $('loginTitle').parentNode.id =3D "searchHeading";=0A=
	//$('loginTitle').style.color =3D '#cccccc';	=0A=
}=0A=
=0A=
function common__showSupplierMap(listingURL, baseURL) {=0A=
	var width =3D 640;=0A=
	var height =3D 480;=0A=
	var posX =3D (screen.width / 2) - (width/2);=0A=
	var posY =3D (screen.height / 2) - (height/2);=0A=
	window.open(baseURL+'/suppliers/'+listingURL+'/map.htm', =
'supplier_map', =
'left=3D'+posX+',top=3D'+posY+',width=3D'+width+',height=3D'+height);=0A=
}=0A=
=0A=
function common__showCurrentContent(elm) {=0A=
	document.getElementById("currentContentEdit").style.display =3D "";=0A=
	document.getElementById("contentUpdate").style.display =3D "none";=0A=
	document.getElementById("contentToggleOff").id =3D "";=0A=
	elm.id =3D "contentToggleOff";=0A=
}=0A=
=0A=
function common__showRequestedUpdate(elm) {=0A=
	document.getElementById("currentContentEdit").style.display =3D "none";=0A=
	document.getElementById("contentUpdate").style.display =3D "";=0A=
	document.getElementById("contentToggleOff").id =3D "";=0A=
	elm.id =3D "contentToggleOff";=0A=
}=0A=
=0A=
=0A=
function common__hoverMigrationContact(contact) {=0A=
	if(document.getElementById("activeContact") !=3D null) =
document.getElementById("activeContact").id =3D null;=0A=
	contact.id =3D "activeContact";=0A=
}=0A=
=0A=
function common__unHoverMigrationContact(contact) {=0A=
	contact.id =3D null;=0A=
}=0A=

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.teachingtimes.com/includes/js/prototype.js

/*  Prototype JavaScript framework, version 1.6.0.2=0A=
 *  (c) 2005-2008 Sam Stephenson=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *  For details, see the Prototype web site: http://www.prototypejs.org/=0A=
 *=0A=
 =
*------------------------------------------------------------------------=
--*/=0A=
=0A=
var Prototype =3D {=0A=
  Version: '1.6.0.2',=0A=
=0A=
  Browser: {=0A=
    IE:     !!(window.attachEvent && !window.opera),=0A=
    Opera:  !!window.opera,=0A=
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A=
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && =
navigator.userAgent.indexOf('KHTML') =3D=3D -1,=0A=
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A=
  },=0A=
=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate,=0A=
    ElementExtensions: !!window.HTMLElement,=0A=
    SpecificElementExtensions:=0A=
      document.createElement('div').__proto__ &&=0A=
      document.createElement('div').__proto__ !=3D=3D=0A=
        document.createElement('form').__proto__=0A=
  },=0A=
=0A=
  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',=0A=
  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A=
=0A=
  emptyFunction: function() { },=0A=
  K: function(x) { return x }=0A=
};=0A=
=0A=
if (Prototype.Browser.MobileSafari)=0A=
  Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A=
=0A=
=0A=
/* Based on Alex Arnell's inheritance implementation. */=0A=
var Class =3D {=0A=
  create: function() {=0A=
    var parent =3D null, properties =3D $A(arguments);=0A=
    if (Object.isFunction(properties[0]))=0A=
      parent =3D properties.shift();=0A=
=0A=
    function klass() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
=0A=
    Object.extend(klass, Class.Methods);=0A=
    klass.superclass =3D parent;=0A=
    klass.subclasses =3D [];=0A=
=0A=
    if (parent) {=0A=
      var subclass =3D function() { };=0A=
      subclass.prototype =3D parent.prototype;=0A=
      klass.prototype =3D new subclass;=0A=
      parent.subclasses.push(klass);=0A=
    }=0A=
=0A=
    for (var i =3D 0; i < properties.length; i++)=0A=
      klass.addMethods(properties[i]);=0A=
=0A=
    if (!klass.prototype.initialize)=0A=
      klass.prototype.initialize =3D Prototype.emptyFunction;=0A=
=0A=
    klass.prototype.constructor =3D klass;=0A=
=0A=
    return klass;=0A=
  }=0A=
};=0A=
=0A=
Class.Methods =3D {=0A=
  addMethods: function(source) {=0A=
    var ancestor   =3D this.superclass && this.superclass.prototype;=0A=
    var properties =3D Object.keys(source);=0A=
=0A=
    if (!Object.keys({ toString: true }).length)=0A=
      properties.push("toString", "valueOf");=0A=
=0A=
    for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A=
      var property =3D properties[i], value =3D source[property];=0A=
      if (ancestor && Object.isFunction(value) &&=0A=
          value.argumentNames().first() =3D=3D "$super") {=0A=
        var method =3D value, value =3D Object.extend((function(m) {=0A=
          return function() { return ancestor[m].apply(this, arguments) =
};=0A=
        })(property).wrap(method), {=0A=
          valueOf:  function() { return method },=0A=
          toString: function() { return method.toString() }=0A=
        });=0A=
      }=0A=
      this.prototype[property] =3D value;=0A=
    }=0A=
=0A=
    return this;=0A=
  }=0A=
};=0A=
=0A=
var Abstract =3D { };=0A=
=0A=
Object.extend =3D function(destination, source) {=0A=
  for (var property in source)=0A=
    destination[property] =3D source[property];=0A=
  return destination;=0A=
};=0A=
=0A=
Object.extend(Object, {=0A=
  inspect: function(object) {=0A=
    try {=0A=
      if (Object.isUndefined(object)) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : String(object);=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  },=0A=
=0A=
  toJSON: function(object) {=0A=
    var type =3D typeof object;=0A=
    switch (type) {=0A=
      case 'undefined':=0A=
      case 'function':=0A=
      case 'unknown': return;=0A=
      case 'boolean': return object.toString();=0A=
    }=0A=
=0A=
    if (object =3D=3D=3D null) return 'null';=0A=
    if (object.toJSON) return object.toJSON();=0A=
    if (Object.isElement(object)) return;=0A=
=0A=
    var results =3D [];=0A=
    for (var property in object) {=0A=
      var value =3D Object.toJSON(object[property]);=0A=
      if (!Object.isUndefined(value))=0A=
        results.push(property.toJSON() + ': ' + value);=0A=
    }=0A=
=0A=
    return '{' + results.join(', ') + '}';=0A=
  },=0A=
=0A=
  toQueryString: function(object) {=0A=
    return $H(object).toQueryString();=0A=
  },=0A=
=0A=
  toHTML: function(object) {=0A=
    return object && object.toHTML ? object.toHTML() : =
String.interpret(object);=0A=
  },=0A=
=0A=
  keys: function(object) {=0A=
    var keys =3D [];=0A=
    for (var property in object)=0A=
      keys.push(property);=0A=
    return keys;=0A=
  },=0A=
=0A=
  values: function(object) {=0A=
    var values =3D [];=0A=
    for (var property in object)=0A=
      values.push(object[property]);=0A=
    return values;=0A=
  },=0A=
=0A=
  clone: function(object) {=0A=
    return Object.extend({ }, object);=0A=
  },=0A=
=0A=
  isElement: function(object) {=0A=
    return object && object.nodeType =3D=3D 1;=0A=
  },=0A=
=0A=
  isArray: function(object) {=0A=
    return object !=3D null && typeof object =3D=3D "object" &&=0A=
      'splice' in object && 'join' in object;=0A=
  },=0A=
=0A=
  isHash: function(object) {=0A=
    return object instanceof Hash;=0A=
  },=0A=
=0A=
  isFunction: function(object) {=0A=
    return typeof object =3D=3D "function";=0A=
  },=0A=
=0A=
  isString: function(object) {=0A=
    return typeof object =3D=3D "string";=0A=
  },=0A=
=0A=
  isNumber: function(object) {=0A=
    return typeof object =3D=3D "number";=0A=
  },=0A=
=0A=
  isUndefined: function(object) {=0A=
    return typeof object =3D=3D "undefined";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Function.prototype, {=0A=
  argumentNames: function() {=0A=
    var names =3D =
this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").inv=
oke("strip");=0A=
    return names.length =3D=3D 1 && !names[0] ? [] : names;=0A=
  },=0A=
=0A=
  bind: function() {=0A=
    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return =
this;=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function() {=0A=
      return __method.apply(object, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  bindAsEventListener: function() {=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function(event) {=0A=
      return __method.apply(object, [event || =
window.event].concat(args));=0A=
    }=0A=
  },=0A=
=0A=
  curry: function() {=0A=
    if (!arguments.length) return this;=0A=
    var __method =3D this, args =3D $A(arguments);=0A=
    return function() {=0A=
      return __method.apply(this, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  delay: function() {=0A=
    var __method =3D this, args =3D $A(arguments), timeout =3D =
args.shift() * 1000;=0A=
    return window.setTimeout(function() {=0A=
      return __method.apply(__method, args);=0A=
    }, timeout);=0A=
  },=0A=
=0A=
  wrap: function(wrapper) {=0A=
    var __method =3D this;=0A=
    return function() {=0A=
      return wrapper.apply(this, =
[__method.bind(this)].concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  methodize: function() {=0A=
    if (this._methodized) return this._methodized;=0A=
    var __method =3D this;=0A=
    return this._methodized =3D function() {=0A=
      return __method.apply(null, [this].concat($A(arguments)));=0A=
    };=0A=
  }=0A=
});=0A=
=0A=
Function.prototype.defer =3D Function.prototype.delay.curry(0.01);=0A=
=0A=
Date.prototype.toJSON =3D function() {=0A=
  return '"' + this.getUTCFullYear() + '-' +=0A=
    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A=
    this.getUTCDate().toPaddedString(2) + 'T' +=0A=
    this.getUTCHours().toPaddedString(2) + ':' +=0A=
    this.getUTCMinutes().toPaddedString(2) + ':' +=0A=
    this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A=
};=0A=
=0A=
var Try =3D {=0A=
  these: function() {=0A=
    var returnValue;=0A=
=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var lambda =3D arguments[i];=0A=
      try {=0A=
        returnValue =3D lambda();=0A=
        break;=0A=
      } catch (e) { }=0A=
    }=0A=
=0A=
    return returnValue;=0A=
  }=0A=
};=0A=
=0A=
RegExp.prototype.match =3D RegExp.prototype.test;=0A=
=0A=
RegExp.escape =3D function(str) {=0A=
  return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var PeriodicalExecuter =3D Class.create({=0A=
  initialize: function(callback, frequency) {=0A=
    this.callback =3D callback;=0A=
    this.frequency =3D frequency;=0A=
    this.currentlyExecuting =3D false;=0A=
=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    this.timer =3D setInterval(this.onTimerEvent.bind(this), =
this.frequency * 1000);=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    this.callback(this);=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    if (!this.timer) return;=0A=
    clearInterval(this.timer);=0A=
    this.timer =3D null;=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    if (!this.currentlyExecuting) {=0A=
      try {=0A=
        this.currentlyExecuting =3D true;=0A=
        this.execute();=0A=
      } finally {=0A=
        this.currentlyExecuting =3D false;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
Object.extend(String, {=0A=
  interpret: function(value) {=0A=
    return value =3D=3D null ? '' : String(value);=0A=
  },=0A=
  specialChar: {=0A=
    '\b': '\\b',=0A=
    '\t': '\\t',=0A=
    '\n': '\\n',=0A=
    '\f': '\\f',=0A=
    '\r': '\\r',=0A=
    '\\': '\\\\'=0A=
  }=0A=
});=0A=
=0A=
Object.extend(String.prototype, {=0A=
  gsub: function(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D arguments.callee.prepareReplacement(replacement);=0A=
=0A=
    while (source.length > 0) {=0A=
      if (match =3D source.match(pattern)) {=0A=
        result +=3D source.slice(0, match.index);=0A=
        result +=3D String.interpret(replacement(match));=0A=
        source  =3D source.slice(match.index + match[0].length);=0A=
      } else {=0A=
        result +=3D source, source =3D '';=0A=
      }=0A=
    }=0A=
    return result;=0A=
  },=0A=
=0A=
  sub: function(pattern, replacement, count) {=0A=
    replacement =3D this.gsub.prepareReplacement(replacement);=0A=
    count =3D Object.isUndefined(count) ? 1 : count;=0A=
=0A=
    return this.gsub(pattern, function(match) {=0A=
      if (--count < 0) return match[0];=0A=
      return replacement(match);=0A=
    });=0A=
  },=0A=
=0A=
  scan: function(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return String(this);=0A=
  },=0A=
=0A=
  truncate: function(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : =
String(this);=0A=
  },=0A=
=0A=
  strip: function() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  },=0A=
=0A=
  stripTags: function() {=0A=
    return this.replace(/<\/?[^>]+>/gi, '');=0A=
  },=0A=
=0A=
  stripScripts: function() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  },=0A=
=0A=
  extractScripts: function() {=0A=
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A=
    var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A=
    return (this.match(matchAll) || []).map(function(scriptTag) {=0A=
      return (scriptTag.match(matchOne) || ['', ''])[1];=0A=
    });=0A=
  },=0A=
=0A=
  evalScripts: function() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  },=0A=
=0A=
  escapeHTML: function() {=0A=
    var self =3D arguments.callee;=0A=
    self.text.data =3D this;=0A=
    return self.div.innerHTML;=0A=
  },=0A=
=0A=
  unescapeHTML: function() {=0A=
    var div =3D new Element('div');=0A=
    div.innerHTML =3D this.stripTags();=0A=
    return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A=
      $A(div.childNodes).inject('', function(memo, node) { return =
memo+node.nodeValue }) :=0A=
      div.childNodes[0].nodeValue) : '';=0A=
  },=0A=
=0A=
  toQueryParams: function(separator) {=0A=
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A=
    if (!match) return { };=0A=
=0A=
    return match[1].split(separator || '&').inject({ }, function(hash, =
pair) {=0A=
      if ((pair =3D pair.split('=3D'))[0]) {=0A=
        var key =3D decodeURIComponent(pair.shift());=0A=
        var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A=
        if (value !=3D undefined) value =3D decodeURIComponent(value);=0A=
=0A=
        if (key in hash) {=0A=
          if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A=
          hash[key].push(value);=0A=
        }=0A=
        else hash[key] =3D value;=0A=
      }=0A=
      return hash;=0A=
    });=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.split('');=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  },=0A=
=0A=
  times: function(count) {=0A=
    return count < 1 ? '' : new Array(count + 1).join(this);=0A=
  },=0A=
=0A=
  camelize: function() {=0A=
    var parts =3D this.split('-'), len =3D parts.length;=0A=
    if (len =3D=3D 1) return parts[0];=0A=
=0A=
    var camelized =3D this.charAt(0) =3D=3D '-'=0A=
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A=
      : parts[0];=0A=
=0A=
    for (var i =3D 1; i < len; i++)=0A=
      camelized +=3D parts[i].charAt(0).toUpperCase() + =
parts[i].substring(1);=0A=
=0A=
    return camelized;=0A=
  },=0A=
=0A=
  capitalize: function() {=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  },=0A=
=0A=
  underscore: function() {=0A=
    return this.gsub(/::/, =
'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{=
1}_#{2}').gsub(/-/,'_').toLowerCase();=0A=
  },=0A=
=0A=
  dasherize: function() {=0A=
    return this.gsub(/_/,'-');=0A=
  },=0A=
=0A=
  inspect: function(useDoubleQuotes) {=0A=
    var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A=
      var character =3D String.specialChar[match[0]];=0A=
      return character ? character : '\\u00' + =
match[0].charCodeAt().toPaddedString(2, 16);=0A=
    });=0A=
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';=0A=
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return this.inspect(true);=0A=
  },=0A=
=0A=
  unfilterJSON: function(filter) {=0A=
    return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A=
  },=0A=
=0A=
  isJSON: function() {=0A=
    var str =3D this;=0A=
    if (str.blank()) return false;=0A=
    str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A=
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A=
  },=0A=
=0A=
  evalJSON: function(sanitize) {=0A=
    var json =3D this.unfilterJSON();=0A=
    try {=0A=
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A=
    } catch (e) { }=0A=
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A=
  },=0A=
=0A=
  include: function(pattern) {=0A=
    return this.indexOf(pattern) > -1;=0A=
  },=0A=
=0A=
  startsWith: function(pattern) {=0A=
    return this.indexOf(pattern) =3D=3D=3D 0;=0A=
  },=0A=
=0A=
  endsWith: function(pattern) {=0A=
    var d =3D this.length - pattern.length;=0A=
    return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A=
  },=0A=
=0A=
  empty: function() {=0A=
    return this =3D=3D '';=0A=
  },=0A=
=0A=
  blank: function() {=0A=
    return /^\s*$/.test(this);=0A=
  },=0A=
=0A=
  interpolate: function(object, pattern) {=0A=
    return new Template(this, pattern).evaluate(object);=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.WebKit || Prototype.Browser.IE) =
Object.extend(String.prototype, {=0A=
  escapeHTML: function() {=0A=
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');=0A=
  },=0A=
  unescapeHTML: function() {=0A=
    return =
this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');=0A=
  }=0A=
});=0A=
=0A=
String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A=
  if (Object.isFunction(replacement)) return replacement;=0A=
  var template =3D new Template(replacement);=0A=
  return function(match) { return template.evaluate(match) };=0A=
};=0A=
=0A=
String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A=
=0A=
Object.extend(String.prototype.escapeHTML, {=0A=
  div:  document.createElement('div'),=0A=
  text: document.createTextNode('')=0A=
});=0A=
=0A=
with (String.prototype.escapeHTML) div.appendChild(text);=0A=
=0A=
var Template =3D Class.create({=0A=
  initialize: function(template, pattern) {=0A=
    this.template =3D template.toString();=0A=
    this.pattern =3D pattern || Template.Pattern;=0A=
  },=0A=
=0A=
  evaluate: function(object) {=0A=
    if (Object.isFunction(object.toTemplateReplacements))=0A=
      object =3D object.toTemplateReplacements();=0A=
=0A=
    return this.template.gsub(this.pattern, function(match) {=0A=
      if (object =3D=3D null) return '';=0A=
=0A=
      var before =3D match[1] || '';=0A=
      if (before =3D=3D '\\') return match[2];=0A=
=0A=
      var ctx =3D object, expr =3D match[3];=0A=
      var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A=
      match =3D pattern.exec(expr);=0A=
      if (match =3D=3D null) return before;=0A=
=0A=
      while (match !=3D null) {=0A=
        var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', =
']') : match[1];=0A=
        ctx =3D ctx[comp];=0A=
        if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A=
        expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : =
match[0].length);=0A=
        match =3D pattern.exec(expr);=0A=
      }=0A=
=0A=
      return before + String.interpret(ctx);=0A=
    });=0A=
  }=0A=
});=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
=0A=
var $break =3D { };=0A=
=0A=
var Enumerable =3D {=0A=
  each: function(iterator, context) {=0A=
    var index =3D 0;=0A=
    iterator =3D iterator.bind(context);=0A=
    try {=0A=
      this._each(function(value) {=0A=
        iterator(value, index++);=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
    return this;=0A=
  },=0A=
=0A=
  eachSlice: function(number, iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var index =3D -number, slices =3D [], array =3D this.toArray();=0A=
    while ((index +=3D number) < array.length)=0A=
      slices.push(array.slice(index, index+number));=0A=
    return slices.collect(iterator, context);=0A=
  },=0A=
=0A=
  all: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!iterator(value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  any: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result =3D false;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!iterator(value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  collect: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(iterator(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  detect: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  findAll: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  grep: function(filter, iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var results =3D [];=0A=
=0A=
    if (Object.isString(filter))=0A=
      filter =3D new RegExp(filter);=0A=
=0A=
    this.each(function(value, index) {=0A=
      if (filter.match(value))=0A=
        results.push(iterator(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  include: function(object) {=0A=
    if (Object.isFunction(this.indexOf))=0A=
      if (this.indexOf(object) !=3D -1) return true;=0A=
=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  },=0A=
=0A=
  inGroupsOf: function(number, fillWith) {=0A=
    fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  },=0A=
=0A=
  inject: function(memo, iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator(memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  },=0A=
=0A=
  invoke: function(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.map(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  },=0A=
=0A=
  max: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator(value, index);=0A=
      if (result =3D=3D null || value >=3D result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  min: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator(value, index);=0A=
      if (result =3D=3D null || value < result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  partition: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      (iterator(value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  },=0A=
=0A=
  pluck: function(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  reject: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  sortBy: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    return this.map(function(value, index) {=0A=
      return {value: value, criteria: iterator(value, index)};=0A=
    }).sort(function(left, right) {=0A=
      var a =3D left.criteria, b =3D right.criteria;=0A=
      return a < b ? -1 : a > b ? 1 : 0;=0A=
    }).pluck('value');=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.map();=0A=
  },=0A=
=0A=
  zip: function() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (Object.isFunction(args.last()))=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      return iterator(collections.pluck(index));=0A=
    });=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.toArray().length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Enumerable, {=0A=
  map:     Enumerable.collect,=0A=
  find:    Enumerable.detect,=0A=
  select:  Enumerable.findAll,=0A=
  filter:  Enumerable.findAll,=0A=
  member:  Enumerable.include,=0A=
  entries: Enumerable.toArray,=0A=
  every:   Enumerable.all,=0A=
  some:    Enumerable.any=0A=
});=0A=
function $A(iterable) {=0A=
  if (!iterable) return [];=0A=
  if (iterable.toArray) return iterable.toArray();=0A=
  var length =3D iterable.length || 0, results =3D new Array(length);=0A=
  while (length--) results[length] =3D iterable[length];=0A=
  return results;=0A=
}=0A=
=0A=
if (Prototype.Browser.WebKit) {=0A=
  $A =3D function(iterable) {=0A=
    if (!iterable) return [];=0A=
    if (!(Object.isFunction(iterable) && iterable =3D=3D '[object =
NodeList]') &&=0A=
        iterable.toArray) return iterable.toArray();=0A=
    var length =3D iterable.length || 0, results =3D new Array(length);=0A=
    while (length--) results[length] =3D iterable[length];=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
Array.from =3D $A;=0A=
=0A=
Object.extend(Array.prototype, Enumerable);=0A=
=0A=
if (!Array.prototype._reverse) Array.prototype._reverse =3D =
Array.prototype.reverse;=0A=
=0A=
Object.extend(Array.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      iterator(this[i]);=0A=
  },=0A=
=0A=
  clear: function() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  },=0A=
=0A=
  first: function() {=0A=
    return this[0];=0A=
  },=0A=
=0A=
  last: function() {=0A=
    return this[this.length - 1];=0A=
  },=0A=
=0A=
  compact: function() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  },=0A=
=0A=
  flatten: function() {=0A=
    return this.inject([], function(array, value) {=0A=
      return array.concat(Object.isArray(value) ?=0A=
        value.flatten() : [value]);=0A=
    });=0A=
  },=0A=
=0A=
  without: function() {=0A=
    var values =3D $A(arguments);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  },=0A=
=0A=
  reverse: function(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  },=0A=
=0A=
  reduce: function() {=0A=
    return this.length > 1 ? this : this[0];=0A=
  },=0A=
=0A=
  uniq: function(sorted) {=0A=
    return this.inject([], function(array, value, index) {=0A=
      if (0 =3D=3D index || (sorted ? array.last() !=3D value : =
!array.include(value)))=0A=
        array.push(value);=0A=
      return array;=0A=
    });=0A=
  },=0A=
=0A=
  intersect: function(array) {=0A=
    return this.uniq().findAll(function(item) {=0A=
      return array.detect(function(value) { return item =3D=3D=3D value =
});=0A=
    });=0A=
  },=0A=
=0A=
  clone: function() {=0A=
    return [].concat(this);=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    var results =3D [];=0A=
    this.each(function(object) {=0A=
      var value =3D Object.toJSON(object);=0A=
      if (!Object.isUndefined(value)) results.push(value);=0A=
    });=0A=
    return '[' + results.join(', ') + ']';=0A=
  }=0A=
});=0A=
=0A=
// use native browser JS 1.6 implementation if available=0A=
if (Object.isFunction(Array.prototype.forEach))=0A=
  Array.prototype._each =3D Array.prototype.forEach;=0A=
=0A=
if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, =
i) {=0A=
  i || (i =3D 0);=0A=
  var length =3D this.length;=0A=
  if (i < 0) i =3D length + i;=0A=
  for (; i < length; i++)=0A=
    if (this[i] =3D=3D=3D item) return i;=0A=
  return -1;=0A=
};=0A=
=0A=
if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D =
function(item, i) {=0A=
  i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A=
  var n =3D this.slice(0, i).reverse().indexOf(item);=0A=
  return (n < 0) ? n : i - n - 1;=0A=
};=0A=
=0A=
Array.prototype.toArray =3D Array.prototype.clone;=0A=
=0A=
function $w(string) {=0A=
  if (!Object.isString(string)) return [];=0A=
  string =3D string.strip();=0A=
  return string ? string.split(/\s+/) : [];=0A=
}=0A=
=0A=
if (Prototype.Browser.Opera){=0A=
  Array.prototype.concat =3D function() {=0A=
    var array =3D [];=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++) =
array.push(this[i]);=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      if (Object.isArray(arguments[i])) {=0A=
        for (var j =3D 0, arrayLength =3D arguments[i].length; j < =
arrayLength; j++)=0A=
          array.push(arguments[i][j]);=0A=
      } else {=0A=
        array.push(arguments[i]);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  };=0A=
}=0A=
Object.extend(Number.prototype, {=0A=
  toColorPart: function() {=0A=
    return this.toPaddedString(2, 16);=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this + 1;=0A=
  },=0A=
=0A=
  times: function(iterator) {=0A=
    $R(0, this, true).each(iterator);=0A=
    return this;=0A=
  },=0A=
=0A=
  toPaddedString: function(length, radix) {=0A=
    var string =3D this.toString(radix || 10);=0A=
    return '0'.times(length - string.length) + string;=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return isFinite(this) ? this.toString() : 'null';=0A=
  }=0A=
});=0A=
=0A=
$w('abs round ceil floor').each(function(method){=0A=
  Number.prototype[method] =3D Math[method].methodize();=0A=
});=0A=
function $H(object) {=0A=
  return new Hash(object);=0A=
};=0A=
=0A=
var Hash =3D Class.create(Enumerable, (function() {=0A=
=0A=
  function toQueryPair(key, value) {=0A=
    if (Object.isUndefined(value)) return key;=0A=
    return key + '=3D' + encodeURIComponent(String.interpret(value));=0A=
  }=0A=
=0A=
  return {=0A=
    initialize: function(object) {=0A=
      this._object =3D Object.isHash(object) ? object.toObject() : =
Object.clone(object);=0A=
    },=0A=
=0A=
    _each: function(iterator) {=0A=
      for (var key in this._object) {=0A=
        var value =3D this._object[key], pair =3D [key, value];=0A=
        pair.key =3D key;=0A=
        pair.value =3D value;=0A=
        iterator(pair);=0A=
      }=0A=
    },=0A=
=0A=
    set: function(key, value) {=0A=
      return this._object[key] =3D value;=0A=
    },=0A=
=0A=
    get: function(key) {=0A=
      return this._object[key];=0A=
    },=0A=
=0A=
    unset: function(key) {=0A=
      var value =3D this._object[key];=0A=
      delete this._object[key];=0A=
      return value;=0A=
    },=0A=
=0A=
    toObject: function() {=0A=
      return Object.clone(this._object);=0A=
    },=0A=
=0A=
    keys: function() {=0A=
      return this.pluck('key');=0A=
    },=0A=
=0A=
    values: function() {=0A=
      return this.pluck('value');=0A=
    },=0A=
=0A=
    index: function(value) {=0A=
      var match =3D this.detect(function(pair) {=0A=
        return pair.value =3D=3D=3D value;=0A=
      });=0A=
      return match && match.key;=0A=
    },=0A=
=0A=
    merge: function(object) {=0A=
      return this.clone().update(object);=0A=
    },=0A=
=0A=
    update: function(object) {=0A=
      return new Hash(object).inject(this, function(result, pair) {=0A=
        result.set(pair.key, pair.value);=0A=
        return result;=0A=
      });=0A=
    },=0A=
=0A=
    toQueryString: function() {=0A=
      return this.map(function(pair) {=0A=
        var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A=
=0A=
        if (values && typeof values =3D=3D 'object') {=0A=
          if (Object.isArray(values))=0A=
            return values.map(toQueryPair.curry(key)).join('&');=0A=
        }=0A=
        return toQueryPair(key, values);=0A=
      }).join('&');=0A=
    },=0A=
=0A=
    inspect: function() {=0A=
      return '#<Hash:{' + this.map(function(pair) {=0A=
        return pair.map(Object.inspect).join(': ');=0A=
      }).join(', ') + '}>';=0A=
    },=0A=
=0A=
    toJSON: function() {=0A=
      return Object.toJSON(this.toObject());=0A=
    },=0A=
=0A=
    clone: function() {=0A=
      return new Hash(this);=0A=
    }=0A=
  }=0A=
})());=0A=
=0A=
Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;=0A=
Hash.from =3D $H;=0A=
var ObjectRange =3D Class.create(Enumerable, {=0A=
  initialize: function(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  },=0A=
=0A=
  include: function(value) {=0A=
    if (value < this.start)=0A=
      return false;=0A=
    if (this.exclusive)=0A=
      return value < this.end;=0A=
    return value <=3D this.end;=0A=
  }=0A=
});=0A=
=0A=
var $R =3D function(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
};=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new XMLHttpRequest()},=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
};=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responder) {=0A=
    if (!this.include(responder))=0A=
      this.responders.push(responder);=0A=
  },=0A=
=0A=
  unregister: function(responder) {=0A=
    this.responders =3D this.responders.without(responder);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (Object.isFunction(responder[callback])) {=0A=
        try {=0A=
          responder[callback].apply(responder, [request, transport, =
json]);=0A=
        } catch (e) { }=0A=
      }=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Ajax.Responders, Enumerable);=0A=
=0A=
Ajax.Responders.register({=0A=
  onCreate:   function() { Ajax.activeRequestCount++ },=0A=
  onComplete: function() { Ajax.activeRequestCount-- }=0A=
});=0A=
=0A=
Ajax.Base =3D Class.create({=0A=
  initialize: function(options) {=0A=
    this.options =3D {=0A=
      method:       'post',=0A=
      asynchronous: true,=0A=
      contentType:  'application/x-www-form-urlencoded',=0A=
      encoding:     'UTF-8',=0A=
      parameters:   '',=0A=
      evalJSON:     true,=0A=
      evalJS:       true=0A=
    };=0A=
    Object.extend(this.options, options || { });=0A=
=0A=
    this.options.method =3D this.options.method.toLowerCase();=0A=
=0A=
    if (Object.isString(this.options.parameters))=0A=
      this.options.parameters =3D =
this.options.parameters.toQueryParams();=0A=
    else if (Object.isHash(this.options.parameters))=0A=
      this.options.parameters =3D this.options.parameters.toObject();=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request =3D Class.create(Ajax.Base, {=0A=
  _complete: false,=0A=
=0A=
  initialize: function($super, url, options) {=0A=
    $super(options);=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    this.url =3D url;=0A=
    this.method =3D this.options.method;=0A=
    var params =3D Object.clone(this.options.parameters);=0A=
=0A=
    if (!['get', 'post'].include(this.method)) {=0A=
      // simulate other verbs over post=0A=
      params['_method'] =3D this.method;=0A=
      this.method =3D 'post';=0A=
    }=0A=
=0A=
    this.parameters =3D params;=0A=
=0A=
    if (params =3D Object.toQueryString(params)) {=0A=
      // when GET, append parameters to URL=0A=
      if (this.method =3D=3D 'get')=0A=
        this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A=
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A=
        params +=3D '&_=3D';=0A=
    }=0A=
=0A=
    try {=0A=
      var response =3D new Ajax.Response(this);=0A=
      if (this.options.onCreate) this.options.onCreate(response);=0A=
      Ajax.Responders.dispatch('onCreate', this, response);=0A=
=0A=
      this.transport.open(this.method.toUpperCase(), this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous) =
this.respondToReadyState.bind(this).defer(1);=0A=
=0A=
      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
      this.setRequestHeaders();=0A=
=0A=
      this.body =3D this.method =3D=3D 'post' ? (this.options.postBody =
|| params) : null;=0A=
      this.transport.send(this.body);=0A=
=0A=
      /* Force Firefox to handle ready state 4 for synchronous requests =
*/=0A=
      if (!this.options.asynchronous && this.transport.overrideMimeType)=0A=
        this.onStateChange();=0A=
=0A=
    }=0A=
    catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var headers =3D {=0A=
      'X-Requested-With': 'XMLHttpRequest',=0A=
      'X-Prototype-Version': Prototype.Version,=0A=
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'=0A=
    };=0A=
=0A=
    if (this.method =3D=3D 'post') {=0A=
      headers['Content-type'] =3D this.options.contentType +=0A=
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');=0A=
=0A=
      /* Force "Connection: close" for older Mozilla browsers to work=0A=
       * around a bug where XMLHttpRequest sends an incorrect=0A=
       * Content-length header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType &&=0A=
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)=0A=
            headers['Connection'] =3D 'close';=0A=
    }=0A=
=0A=
    // user-defined headers=0A=
    if (typeof this.options.requestHeaders =3D=3D 'object') {=0A=
      var extras =3D this.options.requestHeaders;=0A=
=0A=
      if (Object.isFunction(extras.push))=0A=
        for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A=
          headers[extras[i]] =3D extras[i+1];=0A=
      else=0A=
        $H(extras).each(function(pair) { headers[pair.key] =3D =
pair.value });=0A=
    }=0A=
=0A=
    for (var name in headers)=0A=
      this.transport.setRequestHeader(name, headers[name]);=0A=
  },=0A=
=0A=
  success: function() {=0A=
    var status =3D this.getStatus();=0A=
    return !status || (status >=3D 200 && status < 300);=0A=
  },=0A=
=0A=
  getStatus: function() {=0A=
    try {=0A=
      return this.transport.status || 0;=0A=
    } catch (e) { return 0 }=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var state =3D Ajax.Request.Events[readyState], response =3D new =
Ajax.Response(this);=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      try {=0A=
        this._complete =3D true;=0A=
        (this.options['on' + response.status]=0A=
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A=
         || Prototype.emptyFunction)(response, response.headerJSON);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      var contentType =3D response.getHeader('Content-type');=0A=
      if (this.options.evalJS =3D=3D 'force'=0A=
          || (this.options.evalJS && this.isSameOrigin() && contentType=0A=
          && =
contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s=
*$/i)))=0A=
        this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + state] || Prototype.emptyFunction)(response, =
response.headerJSON);=0A=
      Ajax.Responders.dispatch('on' + state, this, response, =
response.headerJSON);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      // avoid memory leak in MSIE: clean up=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  isSameOrigin: function() {=0A=
    var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A=
    return !m || (m[0] =3D=3D =
'#{protocol}//#{domain}#{port}'.interpolate({=0A=
      protocol: location.protocol,=0A=
      domain: document.domain,=0A=
      port: location.port ? ':' + location.port : ''=0A=
    }));=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name) || null;=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval((this.transport.responseText || '').unfilterJSON());=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  dispatchException: function(exception) {=0A=
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);=0A=
    Ajax.Responders.dispatch('onException', this, exception);=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
Ajax.Response =3D Class.create({=0A=
  initialize: function(request){=0A=
    this.request =3D request;=0A=
    var transport  =3D this.transport  =3D request.transport,=0A=
        readyState =3D this.readyState =3D transport.readyState;=0A=
=0A=
    if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) =
{=0A=
      this.status       =3D this.getStatus();=0A=
      this.statusText   =3D this.getStatusText();=0A=
      this.responseText =3D String.interpret(transport.responseText);=0A=
      this.headerJSON   =3D this._getHeaderJSON();=0A=
    }=0A=
=0A=
    if(readyState =3D=3D 4) {=0A=
      var xml =3D transport.responseXML;=0A=
      this.responseXML  =3D Object.isUndefined(xml) ? null : xml;=0A=
      this.responseJSON =3D this._getResponseJSON();=0A=
    }=0A=
  },=0A=
=0A=
  status:      0,=0A=
  statusText: '',=0A=
=0A=
  getStatus: Ajax.Request.prototype.getStatus,=0A=
=0A=
  getStatusText: function() {=0A=
    try {=0A=
      return this.transport.statusText || '';=0A=
    } catch (e) { return '' }=0A=
  },=0A=
=0A=
  getHeader: Ajax.Request.prototype.getHeader,=0A=
=0A=
  getAllHeaders: function() {=0A=
    try {=0A=
      return this.getAllResponseHeaders();=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  getResponseHeader: function(name) {=0A=
    return this.transport.getResponseHeader(name);=0A=
  },=0A=
=0A=
  getAllResponseHeaders: function() {=0A=
    return this.transport.getAllResponseHeaders();=0A=
  },=0A=
=0A=
  _getHeaderJSON: function() {=0A=
    var json =3D this.getHeader('X-JSON');=0A=
    if (!json) return null;=0A=
    json =3D decodeURIComponent(escape(json));=0A=
    try {=0A=
      return json.evalJSON(this.request.options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  _getResponseJSON: function() {=0A=
    var options =3D this.request.options;=0A=
    if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A=
      !(this.getHeader('Content-type') || =
'').include('application/json')) ||=0A=
        this.responseText.blank())=0A=
          return null;=0A=
    try {=0A=
      return this.responseText.evalJSON(options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.Updater =3D Class.create(Ajax.Request, {=0A=
  initialize: function($super, container, url, options) {=0A=
    this.container =3D {=0A=
      success: (container.success || container),=0A=
      failure: (container.failure || (container.success ? null : =
container))=0A=
    };=0A=
=0A=
    options =3D Object.clone(options);=0A=
    var onComplete =3D options.onComplete;=0A=
    options.onComplete =3D (function(response, json) {=0A=
      this.updateContent(response.responseText);=0A=
      if (Object.isFunction(onComplete)) onComplete(response, json);=0A=
    }).bind(this);=0A=
=0A=
    $super(url, options);=0A=
  },=0A=
=0A=
  updateContent: function(responseText) {=0A=
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'],=0A=
        options =3D this.options;=0A=
=0A=
    if (!options.evalScripts) responseText =3D =
responseText.stripScripts();=0A=
=0A=
    if (receiver =3D $(receiver)) {=0A=
      if (options.insertion) {=0A=
        if (Object.isString(options.insertion)) {=0A=
          var insertion =3D { }; insertion[options.insertion] =3D =
responseText;=0A=
          receiver.insert(insertion);=0A=
        }=0A=
        else options.insertion(receiver, responseText);=0A=
      }=0A=
      else receiver.update(responseText);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A=
  initialize: function($super, container, url, options) {=0A=
    $super(options);=0A=
    this.onComplete =3D this.options.onComplete;=0A=
=0A=
    this.frequency =3D (this.options.frequency || 2);=0A=
    this.decay =3D (this.options.decay || 1);=0A=
=0A=
    this.updater =3D { };=0A=
    this.container =3D container;=0A=
    this.url =3D url;=0A=
=0A=
    this.start();=0A=
  },=0A=
=0A=
  start: function() {=0A=
    this.options.onComplete =3D this.updateComplete.bind(this);=0A=
    this.onTimerEvent();=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    this.updater.options.onComplete =3D undefined;=0A=
    clearTimeout(this.timer);=0A=
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A=
  },=0A=
=0A=
  updateComplete: function(response) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (response.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D response.responseText;=0A=
    }=0A=
    this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * =
this.frequency);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
function $(element) {=0A=
  if (arguments.length > 1) {=0A=
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)=0A=
      elements.push($(arguments[i]));=0A=
    return elements;=0A=
  }=0A=
  if (Object.isString(element))=0A=
    element =3D document.getElementById(element);=0A=
  return Element.extend(element);=0A=
}=0A=
=0A=
if (Prototype.BrowserFeatures.XPath) {=0A=
  document._getElementsByXPath =3D function(expression, parentElement) {=0A=
    var results =3D [];=0A=
    var query =3D document.evaluate(expression, $(parentElement) || =
document,=0A=
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
    for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A=
      results.push(Element.extend(query.snapshotItem(i)));=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!window.Node) var Node =3D { };=0A=
=0A=
if (!Node.ELEMENT_NODE) {=0A=
  // DOM level 2 ECMAScript Language Binding=0A=
  Object.extend(Node, {=0A=
    ELEMENT_NODE: 1,=0A=
    ATTRIBUTE_NODE: 2,=0A=
    TEXT_NODE: 3,=0A=
    CDATA_SECTION_NODE: 4,=0A=
    ENTITY_REFERENCE_NODE: 5,=0A=
    ENTITY_NODE: 6,=0A=
    PROCESSING_INSTRUCTION_NODE: 7,=0A=
    COMMENT_NODE: 8,=0A=
    DOCUMENT_NODE: 9,=0A=
    DOCUMENT_TYPE_NODE: 10,=0A=
    DOCUMENT_FRAGMENT_NODE: 11,=0A=
    NOTATION_NODE: 12=0A=
  });=0A=
}=0A=
=0A=
(function() {=0A=
  var element =3D this.Element;=0A=
  this.Element =3D function(tagName, attributes) {=0A=
    attributes =3D attributes || { };=0A=
    tagName =3D tagName.toLowerCase();=0A=
    var cache =3D Element.cache;=0A=
    if (Prototype.Browser.IE && attributes.name) {=0A=
      tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A=
      delete attributes.name;=0A=
      return Element.writeAttribute(document.createElement(tagName), =
attributes);=0A=
    }=0A=
    if (!cache[tagName]) cache[tagName] =3D =
Element.extend(document.createElement(tagName));=0A=
    return Element.writeAttribute(cache[tagName].cloneNode(false), =
attributes);=0A=
  };=0A=
  Object.extend(this.Element, element || { });=0A=
}).call(window);=0A=
=0A=
Element.cache =3D { };=0A=
=0A=
Element.Methods =3D {=0A=
  visible: function(element) {=0A=
    return $(element).style.display !=3D 'none';=0A=
  },=0A=
=0A=
  toggle: function(element) {=0A=
    element =3D $(element);=0A=
    Element[Element.visible(element) ? 'hide' : 'show'](element);=0A=
    return element;=0A=
  },=0A=
=0A=
  hide: function(element) {=0A=
    $(element).style.display =3D 'none';=0A=
    return element;=0A=
  },=0A=
=0A=
  show: function(element) {=0A=
    $(element).style.display =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  remove: function(element) {=0A=
    element =3D $(element);=0A=
    element.parentNode.removeChild(element);=0A=
    return element;=0A=
  },=0A=
=0A=
  update: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
    content =3D Object.toHTML(content);=0A=
    element.innerHTML =3D content.stripScripts();=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  },=0A=
=0A=
  replace: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    else if (!Object.isElement(content)) {=0A=
      content =3D Object.toHTML(content);=0A=
      var range =3D element.ownerDocument.createRange();=0A=
      range.selectNode(element);=0A=
      content.evalScripts.bind(content).defer();=0A=
      content =3D range.createContextualFragment(content.stripScripts());=0A=
    }=0A=
    element.parentNode.replaceChild(content, element);=0A=
    return element;=0A=
  },=0A=
=0A=
  insert: function(element, insertions) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A=
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))=0A=
          insertions =3D {bottom:insertions};=0A=
=0A=
    var content, insert, tagName, childNodes;=0A=
=0A=
    for (var position in insertions) {=0A=
      content  =3D insertions[position];=0A=
      position =3D position.toLowerCase();=0A=
      insert =3D Element._insertionTranslations[position];=0A=
=0A=
      if (content && content.toElement) content =3D content.toElement();=0A=
      if (Object.isElement(content)) {=0A=
        insert(element, content);=0A=
        continue;=0A=
      }=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A=
        ? element.parentNode : element).tagName.toUpperCase();=0A=
=0A=
      childNodes =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
=0A=
      if (position =3D=3D 'top' || position =3D=3D 'after') =
childNodes.reverse();=0A=
      childNodes.each(insert.curry(element));=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  wrap: function(element, wrapper, attributes) {=0A=
    element =3D $(element);=0A=
    if (Object.isElement(wrapper))=0A=
      $(wrapper).writeAttribute(attributes || { });=0A=
    else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, =
attributes);=0A=
    else wrapper =3D new Element('div', wrapper);=0A=
    if (element.parentNode)=0A=
      element.parentNode.replaceChild(wrapper, element);=0A=
    wrapper.appendChild(element);=0A=
    return wrapper;=0A=
  },=0A=
=0A=
  inspect: function(element) {=0A=
    element =3D $(element);=0A=
    var result =3D '<' + element.tagName.toLowerCase();=0A=
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A=
      var property =3D pair.first(), attribute =3D pair.last();=0A=
      var value =3D (element[property] || '').toString();=0A=
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);=0A=
    });=0A=
    return result + '>';=0A=
  },=0A=
=0A=
  recursivelyCollect: function(element, property) {=0A=
    element =3D $(element);=0A=
    var elements =3D [];=0A=
    while (element =3D element[property])=0A=
      if (element.nodeType =3D=3D 1)=0A=
        elements.push(Element.extend(element));=0A=
    return elements;=0A=
  },=0A=
=0A=
  ancestors: function(element) {=0A=
    return $(element).recursivelyCollect('parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return $(element).select("*");=0A=
  },=0A=
=0A=
  firstDescendant: function(element) {=0A=
    element =3D $(element).firstChild;=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    return $(element);=0A=
  },=0A=
=0A=
  immediateDescendants: function(element) {=0A=
    if (!(element =3D $(element).firstChild)) return [];=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    if (element) return [element].concat($(element).nextSiblings());=0A=
    return [];=0A=
  },=0A=
=0A=
  previousSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return =
element.previousSiblings().reverse().concat(element.nextSiblings());=0A=
  },=0A=
=0A=
  match: function(element, selector) {=0A=
    if (Object.isString(selector))=0A=
      selector =3D new Selector(selector);=0A=
    return selector.match($(element));=0A=
  },=0A=
=0A=
  up: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return $(element.parentNode);=0A=
    var ancestors =3D element.ancestors();=0A=
    return Object.isNumber(expression) ? ancestors[expression] :=0A=
      Selector.findElement(ancestors, expression, index);=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return element.firstDescendant();=0A=
    return Object.isNumber(expression) ? =
element.descendants()[expression] :=0A=
      element.select(expression)[index || 0];=0A=
  },=0A=
=0A=
  previous: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.previousElementSibling(element));=0A=
    var previousSiblings =3D element.previousSiblings();=0A=
    return Object.isNumber(expression) ? previousSiblings[expression] :=0A=
      Selector.findElement(previousSiblings, expression, index);=0A=
  },=0A=
=0A=
  next: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.nextElementSibling(element));=0A=
    var nextSiblings =3D element.nextSiblings();=0A=
    return Object.isNumber(expression) ? nextSiblings[expression] :=0A=
      Selector.findElement(nextSiblings, expression, index);=0A=
  },=0A=
=0A=
  select: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element, args);=0A=
  },=0A=
=0A=
  adjacent: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element.parentNode, =
args).without(element);=0A=
  },=0A=
=0A=
  identify: function(element) {=0A=
    element =3D $(element);=0A=
    var id =3D element.readAttribute('id'), self =3D arguments.callee;=0A=
    if (id) return id;=0A=
    do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));=0A=
    element.writeAttribute('id', id);=0A=
    return id;=0A=
  },=0A=
=0A=
  readAttribute: function(element, name) {=0A=
    element =3D $(element);=0A=
    if (Prototype.Browser.IE) {=0A=
      var t =3D Element._attributeTranslations.read;=0A=
      if (t.values[name]) return t.values[name](element, name);=0A=
      if (t.names[name]) name =3D t.names[name];=0A=
      if (name.include(':')) {=0A=
        return (!element.attributes || !element.attributes[name]) ? null =
:=0A=
         element.attributes[name].value;=0A=
      }=0A=
    }=0A=
    return element.getAttribute(name);=0A=
  },=0A=
=0A=
  writeAttribute: function(element, name, value) {=0A=
    element =3D $(element);=0A=
    var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A=
=0A=
    if (typeof name =3D=3D 'object') attributes =3D name;=0A=
    else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A=
=0A=
    for (var attr in attributes) {=0A=
      name =3D t.names[attr] || attr;=0A=
      value =3D attributes[attr];=0A=
      if (t.values[attr]) name =3D t.values[attr](element, value);=0A=
      if (value =3D=3D=3D false || value =3D=3D=3D null)=0A=
        element.removeAttribute(name);=0A=
      else if (value =3D=3D=3D true)=0A=
        element.setAttribute(name, name);=0A=
      else element.setAttribute(name, value);=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    return $(element).getDimensions().height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return $(element).getDimensions().width;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var elementClassName =3D element.className;=0A=
    return (elementClassName.length > 0 && (elementClassName =3D=3D =
className ||=0A=
      new RegExp("(^|\\s)" + className + =
"(\\s|$)").test(elementClassName)));=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    if (!element.hasClassName(className))=0A=
      element.className +=3D (element.className ? ' ' : '') + className;=0A=
    return element;=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    element.className =3D element.className.replace(=0A=
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A=
    return element;=0A=
  },=0A=
=0A=
  toggleClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return element[element.hasClassName(className) ?=0A=
      'removeClassName' : 'addClassName'](className);=0A=
  },=0A=
=0A=
  // removes whitespace-only text node children=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    var node =3D element.firstChild;=0A=
    while (node) {=0A=
      var nextNode =3D node.nextSibling;=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        element.removeChild(node);=0A=
      node =3D nextNode;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.blank();=0A=
  },=0A=
=0A=
  descendantOf: function(element, ancestor) {=0A=
    element =3D $(element), ancestor =3D $(ancestor);=0A=
    var originalAncestor =3D ancestor;=0A=
=0A=
    if (element.compareDocumentPosition)=0A=
      return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A=
=0A=
    if (element.sourceIndex && !Prototype.Browser.Opera) {=0A=
      var e =3D element.sourceIndex, a =3D ancestor.sourceIndex,=0A=
       nextAncestor =3D ancestor.nextSibling;=0A=
      if (!nextAncestor) {=0A=
        do { ancestor =3D ancestor.parentNode; }=0A=
        while (!(nextAncestor =3D ancestor.nextSibling) && =
ancestor.parentNode);=0A=
      }=0A=
      if (nextAncestor && nextAncestor.sourceIndex)=0A=
       return (e > a && e < nextAncestor.sourceIndex);=0A=
    }=0A=
=0A=
    while (element =3D element.parentNode)=0A=
      if (element =3D=3D originalAncestor) return true;=0A=
    return false;=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D element.cumulativeOffset();=0A=
    window.scrollTo(pos[0], pos[1]);=0A=
    return element;=0A=
  },=0A=
=0A=
  getStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value) {=0A=
      var css =3D document.defaultView.getComputedStyle(element, null);=0A=
      value =3D css ? css[style] : null;=0A=
    }=0A=
    if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A=
    return value =3D=3D 'auto' ? null : value;=0A=
  },=0A=
=0A=
  getOpacity: function(element) {=0A=
    return $(element).getStyle('opacity');=0A=
  },=0A=
=0A=
  setStyle: function(element, styles) {=0A=
    element =3D $(element);=0A=
    var elementStyle =3D element.style, match;=0A=
    if (Object.isString(styles)) {=0A=
      element.style.cssText +=3D ';' + styles;=0A=
      return styles.include('opacity') ?=0A=
        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : =
element;=0A=
    }=0A=
    for (var property in styles)=0A=
      if (property =3D=3D 'opacity') =
element.setOpacity(styles[property]);=0A=
      else=0A=
        elementStyle[(property =3D=3D 'float' || property =3D=3D =
'cssFloat') ?=0A=
          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : =
'styleFloat') :=0A=
            property] =3D styles[property];=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  setOpacity: function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  },=0A=
=0A=
  getDimensions: function(element) {=0A=
    element =3D $(element);=0A=
    var display =3D $(element).getStyle('display');=0A=
    if (display !=3D 'none' && display !=3D null) // Safari bug=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=0A=
    // All *Width and *Height properties give 0 on elements with display =
none,=0A=
    // so enable the element temporarily=0A=
    var els =3D element.style;=0A=
    var originalVisibility =3D els.visibility;=0A=
    var originalPosition =3D els.position;=0A=
    var originalDisplay =3D els.display;=0A=
    els.visibility =3D 'hidden';=0A=
    els.position =3D 'absolute';=0A=
    els.display =3D 'block';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D originalDisplay;=0A=
    els.position =3D originalPosition;=0A=
    els.visibility =3D originalVisibility;=0A=
    return {width: originalWidth, height: originalHeight};=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      // Opera returns the offset relative to the positioning context, =
when an=0A=
      // element is position relative but top and left have not been =
defined=0A=
      if (window.opera) {=0A=
        element.style.top =3D 0;=0A=
        element.style.left =3D 0;=0A=
      }=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  undoPositioned: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._madePositioned) {=0A=
      element._madePositioned =3D undefined;=0A=
      element.style.position =3D=0A=
        element.style.top =3D=0A=
        element.style.left =3D=0A=
        element.style.bottom =3D=0A=
        element.style.right =3D '';=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  makeClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return element;=0A=
    element._overflow =3D Element.getStyle(element, 'overflow') || =
'auto';=0A=
    if (element._overflow !=3D=3D 'hidden')=0A=
      element.style.overflow =3D 'hidden';=0A=
    return element;=0A=
  },=0A=
=0A=
  undoClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element._overflow) return element;=0A=
    element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : =
element._overflow;=0A=
    element._overflow =3D null;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  positionedOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
      if (element) {=0A=
        if (element.tagName =3D=3D 'BODY') break;=0A=
        var p =3D Element.getStyle(element, 'position');=0A=
        if (p !=3D=3D 'static') break;=0A=
      }=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  absolutize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.getStyle('position') =3D=3D 'absolute') return;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    var offsets =3D element.positionedOffset();=0A=
    var top     =3D offsets[1];=0A=
    var left    =3D offsets[0];=0A=
    var width   =3D element.clientWidth;=0A=
    var height  =3D element.clientHeight;=0A=
=0A=
    element._originalLeft   =3D left - parseFloat(element.style.left  || =
0);=0A=
    element._originalTop    =3D top  - parseFloat(element.style.top || =
0);=0A=
    element._originalWidth  =3D element.style.width;=0A=
    element._originalHeight =3D element.style.height;=0A=
=0A=
    element.style.position =3D 'absolute';=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.width  =3D width + 'px';=0A=
    element.style.height =3D height + 'px';=0A=
    return element;=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.getStyle('position') =3D=3D 'relative') return;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    element.style.position =3D 'relative';=0A=
    var top  =3D parseFloat(element.style.top  || 0) - =
(element._originalTop || 0);=0A=
    var left =3D parseFloat(element.style.left || 0) - =
(element._originalLeft || 0);=0A=
=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.height =3D element._originalHeight;=0A=
    element.style.width  =3D element._originalWidth;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeScrollOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.scrollTop  || 0;=0A=
      valueL +=3D element.scrollLeft || 0;=0A=
      element =3D element.parentNode;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  getOffsetParent: function(element) {=0A=
    if (element.offsetParent) return $(element.offsetParent);=0A=
    if (element =3D=3D document.body) return $(element);=0A=
=0A=
    while ((element =3D element.parentNode) && element !=3D =
document.body)=0A=
      if (Element.getStyle(element, 'position') !=3D 'static')=0A=
        return $(element);=0A=
=0A=
    return $(document.body);=0A=
  },=0A=
=0A=
  viewportOffset: function(forElement) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
=0A=
      // Safari fix=0A=
      if (element.offsetParent =3D=3D document.body &&=0A=
        Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A=
=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      if (!Prototype.Browser.Opera || element.tagName =3D=3D 'BODY') {=0A=
        valueT -=3D element.scrollTop  || 0;=0A=
        valueL -=3D element.scrollLeft || 0;=0A=
      }=0A=
    } while (element =3D element.parentNode);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  clonePosition: function(element, source) {=0A=
    var options =3D Object.extend({=0A=
      setLeft:    true,=0A=
      setTop:     true,=0A=
      setWidth:   true,=0A=
      setHeight:  true,=0A=
      offsetTop:  0,=0A=
      offsetLeft: 0=0A=
    }, arguments[2] || { });=0A=
=0A=
    // find page position of source=0A=
    source =3D $(source);=0A=
    var p =3D source.viewportOffset();=0A=
=0A=
    // find coordinate system to use=0A=
    element =3D $(element);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    // delta [0,0] will do fine with position: fixed elements,=0A=
    // position:absolute needs offsetParent deltas=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A=
      parent =3D element.getOffsetParent();=0A=
      delta =3D parent.viewportOffset();=0A=
    }=0A=
=0A=
    // correct by body offsets (fixes Safari)=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    // set position=0A=
    if (options.setLeft)   element.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if (options.setTop)    element.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if (options.setWidth)  element.style.width =3D source.offsetWidth + =
'px';=0A=
    if (options.setHeight) element.style.height =3D source.offsetHeight =
+ 'px';=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.identify.counter =3D 1;=0A=
=0A=
Object.extend(Element.Methods, {=0A=
  getElementsBySelector: Element.Methods.select,=0A=
  childElements: Element.Methods.immediateDescendants=0A=
});=0A=
=0A=
Element._attributeTranslations =3D {=0A=
  write: {=0A=
    names: {=0A=
      className: 'class',=0A=
      htmlFor:   'for'=0A=
    },=0A=
    values: { }=0A=
  }=0A=
};=0A=
=0A=
if (Prototype.Browser.Opera) {=0A=
  Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A=
    function(proceed, element, style) {=0A=
      switch (style) {=0A=
        case 'left': case 'top': case 'right': case 'bottom':=0A=
          if (proceed(element, 'position') =3D=3D=3D 'static') return =
null;=0A=
        case 'height': case 'width':=0A=
          // returns '0px' for hidden elements; we want it to return null=0A=
          if (!Element.visible(element)) return null;=0A=
=0A=
          // returns the border-box dimensions rather than the =
content-box=0A=
          // dimensions, so we subtract padding and borders from the =
value=0A=
          var dim =3D parseInt(proceed(element, style), 10);=0A=
=0A=
          if (dim !=3D=3D element['offset' + style.capitalize()])=0A=
            return dim + 'px';=0A=
=0A=
          var properties;=0A=
          if (style =3D=3D=3D 'height') {=0A=
            properties =3D ['border-top-width', 'padding-top',=0A=
             'padding-bottom', 'border-bottom-width'];=0A=
          }=0A=
          else {=0A=
            properties =3D ['border-left-width', 'padding-left',=0A=
             'padding-right', 'border-right-width'];=0A=
          }=0A=
          return properties.inject(dim, function(memo, property) {=0A=
            var val =3D proceed(element, property);=0A=
            return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A=
          }) + 'px';=0A=
        default: return proceed(element, style);=0A=
      }=0A=
    }=0A=
  );=0A=
=0A=
  Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A=
    function(proceed, element, attribute) {=0A=
      if (attribute =3D=3D=3D 'title') return element.title;=0A=
      return proceed(element, attribute);=0A=
    }=0A=
  );=0A=
}=0A=
=0A=
else if (Prototype.Browser.IE) {=0A=
  // IE doesn't report offsets correctly for static elements, so we =
change them=0A=
  // to "relative" to get the values, then change them back.=0A=
  Element.Methods.getOffsetParent =3D =
Element.Methods.getOffsetParent.wrap(=0A=
    function(proceed, element) {=0A=
      element =3D $(element);=0A=
      var position =3D element.getStyle('position');=0A=
      if (position !=3D=3D 'static') return proceed(element);=0A=
      element.setStyle({ position: 'relative' });=0A=
      var value =3D proceed(element);=0A=
      element.setStyle({ position: position });=0A=
      return value;=0A=
    }=0A=
  );=0A=
=0A=
  $w('positionedOffset viewportOffset').each(function(method) {=0A=
    Element.Methods[method] =3D Element.Methods[method].wrap(=0A=
      function(proceed, element) {=0A=
        element =3D $(element);=0A=
        var position =3D element.getStyle('position');=0A=
        if (position !=3D=3D 'static') return proceed(element);=0A=
        // Trigger hasLayout on the offset parent so that IE6 reports=0A=
        // accurate offsetTop and offsetLeft values for position: fixed.=0A=
        var offsetParent =3D element.getOffsetParent();=0A=
        if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D =
'fixed')=0A=
          offsetParent.setStyle({ zoom: 1 });=0A=
        element.setStyle({ position: 'relative' });=0A=
        var value =3D proceed(element);=0A=
        element.setStyle({ position: position });=0A=
        return value;=0A=
      }=0A=
    );=0A=
  });=0A=
=0A=
  Element.Methods.getStyle =3D function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? =
'styleFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value && element.currentStyle) value =3D =
element.currentStyle[style];=0A=
=0A=
    if (style =3D=3D 'opacity') {=0A=
      if (value =3D (element.getStyle('filter') || =
'').match(/alpha\(opacity=3D(.*)\)/))=0A=
        if (value[1]) return parseFloat(value[1]) / 100;=0A=
      return 1.0;=0A=
    }=0A=
=0A=
    if (value =3D=3D 'auto') {=0A=
      if ((style =3D=3D 'width' || style =3D=3D 'height') && =
(element.getStyle('display') !=3D 'none'))=0A=
        return element['offset' + style.capitalize()] + 'px';=0A=
      return null;=0A=
    }=0A=
    return value;=0A=
  };=0A=
=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    function stripAlpha(filter){=0A=
      return filter.replace(/alpha\([^\)]*\)/gi,'');=0A=
    }=0A=
    element =3D $(element);=0A=
    var currentStyle =3D element.currentStyle;=0A=
    if ((currentStyle && !currentStyle.hasLayout) ||=0A=
      (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A=
        element.style.zoom =3D 1;=0A=
=0A=
    var filter =3D element.getStyle('filter'), style =3D element.style;=0A=
    if (value =3D=3D 1 || value =3D=3D=3D '') {=0A=
      (filter =3D stripAlpha(filter)) ?=0A=
        style.filter =3D filter : style.removeAttribute('filter');=0A=
      return element;=0A=
    } else if (value < 0.00001) value =3D 0;=0A=
    style.filter =3D stripAlpha(filter) +=0A=
      'alpha(opacity=3D' + (value * 100) + ')';=0A=
    return element;=0A=
  };=0A=
=0A=
  Element._attributeTranslations =3D {=0A=
    read: {=0A=
      names: {=0A=
        'class': 'className',=0A=
        'for':   'htmlFor'=0A=
      },=0A=
      values: {=0A=
        _getAttr: function(element, attribute) {=0A=
          return element.getAttribute(attribute, 2);=0A=
        },=0A=
        _getAttrNode: function(element, attribute) {=0A=
          var node =3D element.getAttributeNode(attribute);=0A=
          return node ? node.value : "";=0A=
        },=0A=
        _getEv: function(element, attribute) {=0A=
          attribute =3D element.getAttribute(attribute);=0A=
          return attribute ? attribute.toString().slice(23, -2) : null;=0A=
        },=0A=
        _flag: function(element, attribute) {=0A=
          return $(element).hasAttribute(attribute) ? attribute : null;=0A=
        },=0A=
        style: function(element) {=0A=
          return element.style.cssText.toLowerCase();=0A=
        },=0A=
        title: function(element) {=0A=
          return element.title;=0A=
        }=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.write =3D {=0A=
    names: Object.extend({=0A=
      cellpadding: 'cellPadding',=0A=
      cellspacing: 'cellSpacing'=0A=
    }, Element._attributeTranslations.read.names),=0A=
    values: {=0A=
      checked: function(element, value) {=0A=
        element.checked =3D !!value;=0A=
      },=0A=
=0A=
      style: function(element, value) {=0A=
        element.style.cssText =3D value ? value : '';=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.has =3D {};=0A=
=0A=
  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A=
      'encType maxLength readOnly longDesc').each(function(attr) {=0A=
    Element._attributeTranslations.write.names[attr.toLowerCase()] =3D =
attr;=0A=
    Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A=
  });=0A=
=0A=
  (function(v) {=0A=
    Object.extend(v, {=0A=
      href:        v._getAttr,=0A=
      src:         v._getAttr,=0A=
      type:        v._getAttr,=0A=
      action:      v._getAttrNode,=0A=
      disabled:    v._flag,=0A=
      checked:     v._flag,=0A=
      readonly:    v._flag,=0A=
      multiple:    v._flag,=0A=
      onload:      v._getEv,=0A=
      onunload:    v._getEv,=0A=
      onclick:     v._getEv,=0A=
      ondblclick:  v._getEv,=0A=
      onmousedown: v._getEv,=0A=
      onmouseup:   v._getEv,=0A=
      onmouseover: v._getEv,=0A=
      onmousemove: v._getEv,=0A=
      onmouseout:  v._getEv,=0A=
      onfocus:     v._getEv,=0A=
      onblur:      v._getEv,=0A=
      onkeypress:  v._getEv,=0A=
      onkeydown:   v._getEv,=0A=
      onkeyup:     v._getEv,=0A=
      onsubmit:    v._getEv,=0A=
      onreset:     v._getEv,=0A=
      onselect:    v._getEv,=0A=
      onchange:    v._getEv=0A=
    });=0A=
  })(Element._attributeTranslations.read.values);=0A=
}=0A=
=0A=
else if (Prototype.Browser.Gecko && =
/rv:1\.8\.0/.test(navigator.userAgent)) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A=
      (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
else if (Prototype.Browser.WebKit) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
=0A=
    if (value =3D=3D 1)=0A=
      if(element.tagName =3D=3D 'IMG' && element.width) {=0A=
        element.width++; element.width--;=0A=
      } else try {=0A=
        var n =3D document.createTextNode(' ');=0A=
        element.appendChild(n);=0A=
        element.removeChild(n);=0A=
      } catch (e) { }=0A=
=0A=
    return element;=0A=
  };=0A=
=0A=
  // Safari returns margins on body which is incorrect if the child is =
absolutely=0A=
  // positioned.  For performance reasons, redefine =
Element#cumulativeOffset for=0A=
  // KHTML/WebKit only.=0A=
  Element.Methods.cumulativeOffset =3D function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      if (element.offsetParent =3D=3D document.body)=0A=
        if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;=0A=
=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  };=0A=
}=0A=
=0A=
if (Prototype.Browser.IE || Prototype.Browser.Opera) {=0A=
  // IE and Opera are missing .innerHTML support for TABLE-related and =
SELECT elements=0A=
  Element.Methods.update =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var tagName =3D element.tagName.toUpperCase();=0A=
=0A=
    if (tagName in Element._insertionTranslations.tags) {=0A=
      $A(element.childNodes).each(function(node) { =
element.removeChild(node) });=0A=
      Element._getContentFromAnonymousElement(tagName, =
content.stripScripts())=0A=
        .each(function(node) { element.appendChild(node) });=0A=
    }=0A=
    else element.innerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
if ('outerHTML' in document.createElement('div')) {=0A=
  Element.Methods.replace =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) {=0A=
      element.parentNode.replaceChild(content, element);=0A=
      return element;=0A=
    }=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var parent =3D element.parentNode, tagName =3D =
parent.tagName.toUpperCase();=0A=
=0A=
    if (Element._insertionTranslations.tags[tagName]) {=0A=
      var nextSibling =3D element.next();=0A=
      var fragments =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
      parent.removeChild(element);=0A=
      if (nextSibling)=0A=
        fragments.each(function(node) { parent.insertBefore(node, =
nextSibling) });=0A=
      else=0A=
        fragments.each(function(node) { parent.appendChild(node) });=0A=
    }=0A=
    else element.outerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
Element._returnOffset =3D function(l, t) {=0A=
  var result =3D [l, t];=0A=
  result.left =3D l;=0A=
  result.top =3D t;=0A=
  return result;=0A=
};=0A=
=0A=
Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A=
  var div =3D new Element('div'), t =3D =
Element._insertionTranslations.tags[tagName];=0A=
  if (t) {=0A=
    div.innerHTML =3D t[0] + html + t[1];=0A=
    t[2].times(function() { div =3D div.firstChild });=0A=
  } else div.innerHTML =3D html;=0A=
  return $A(div.childNodes);=0A=
};=0A=
=0A=
Element._insertionTranslations =3D {=0A=
  before: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element);=0A=
  },=0A=
  top: function(element, node) {=0A=
    element.insertBefore(node, element.firstChild);=0A=
  },=0A=
  bottom: function(element, node) {=0A=
    element.appendChild(node);=0A=
  },=0A=
  after: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element.nextSibling);=0A=
  },=0A=
  tags: {=0A=
    TABLE:  ['<table>',                '</table>',                   1],=0A=
    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],=0A=
    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],=0A=
    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],=0A=
    SELECT: ['<select>',               '</select>',                  1]=0A=
  }=0A=
};=0A=
=0A=
(function() {=0A=
  Object.extend(this.tags, {=0A=
    THEAD: this.tags.TBODY,=0A=
    TFOOT: this.tags.TBODY,=0A=
    TH:    this.tags.TD=0A=
  });=0A=
}).call(Element._insertionTranslations);=0A=
=0A=
Element.Methods.Simulated =3D {=0A=
  hasAttribute: function(element, attribute) {=0A=
    attribute =3D Element._attributeTranslations.has[attribute] || =
attribute;=0A=
    var node =3D $(element).getAttributeNode(attribute);=0A=
    return node && node.specified;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.ByTag =3D { };=0A=
=0A=
Object.extend(Element, Element.Methods);=0A=
=0A=
if (!Prototype.BrowserFeatures.ElementExtensions &&=0A=
    document.createElement('div').__proto__) {=0A=
  window.HTMLElement =3D { };=0A=
  window.HTMLElement.prototype =3D =
document.createElement('div').__proto__;=0A=
  Prototype.BrowserFeatures.ElementExtensions =3D true;=0A=
}=0A=
=0A=
Element.extend =3D (function() {=0A=
  if (Prototype.BrowserFeatures.SpecificElementExtensions)=0A=
    return Prototype.K;=0A=
=0A=
  var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A=
=0A=
  var extend =3D Object.extend(function(element) {=0A=
    if (!element || element._extendedByPrototype ||=0A=
        element.nodeType !=3D 1 || element =3D=3D window) return element;=0A=
=0A=
    var methods =3D Object.clone(Methods),=0A=
      tagName =3D element.tagName, property, value;=0A=
=0A=
    // extend methods for specific tags=0A=
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A=
=0A=
    for (property in methods) {=0A=
      value =3D methods[property];=0A=
      if (Object.isFunction(value) && !(property in element))=0A=
        element[property] =3D value.methodize();=0A=
    }=0A=
=0A=
    element._extendedByPrototype =3D Prototype.emptyFunction;=0A=
    return element;=0A=
=0A=
  }, {=0A=
    refresh: function() {=0A=
      // extend methods for all tags (Safari doesn't need this)=0A=
      if (!Prototype.BrowserFeatures.ElementExtensions) {=0A=
        Object.extend(Methods, Element.Methods);=0A=
        Object.extend(Methods, Element.Methods.Simulated);=0A=
      }=0A=
    }=0A=
  });=0A=
=0A=
  extend.refresh();=0A=
  return extend;=0A=
})();=0A=
=0A=
Element.hasAttribute =3D function(element, attribute) {=0A=
  if (element.hasAttribute) return element.hasAttribute(attribute);=0A=
  return Element.Methods.Simulated.hasAttribute(element, attribute);=0A=
};=0A=
=0A=
Element.addMethods =3D function(methods) {=0A=
  var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A=
=0A=
  if (!methods) {=0A=
    Object.extend(Form, Form.Methods);=0A=
    Object.extend(Form.Element, Form.Element.Methods);=0A=
    Object.extend(Element.Methods.ByTag, {=0A=
      "FORM":     Object.clone(Form.Methods),=0A=
      "INPUT":    Object.clone(Form.Element.Methods),=0A=
      "SELECT":   Object.clone(Form.Element.Methods),=0A=
      "TEXTAREA": Object.clone(Form.Element.Methods)=0A=
    });=0A=
  }=0A=
=0A=
  if (arguments.length =3D=3D 2) {=0A=
    var tagName =3D methods;=0A=
    methods =3D arguments[1];=0A=
  }=0A=
=0A=
  if (!tagName) Object.extend(Element.Methods, methods || { });=0A=
  else {=0A=
    if (Object.isArray(tagName)) tagName.each(extend);=0A=
    else extend(tagName);=0A=
  }=0A=
=0A=
  function extend(tagName) {=0A=
    tagName =3D tagName.toUpperCase();=0A=
    if (!Element.Methods.ByTag[tagName])=0A=
      Element.Methods.ByTag[tagName] =3D { };=0A=
    Object.extend(Element.Methods.ByTag[tagName], methods);=0A=
  }=0A=
=0A=
  function copy(methods, destination, onlyIfAbsent) {=0A=
    onlyIfAbsent =3D onlyIfAbsent || false;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (!Object.isFunction(value)) continue;=0A=
      if (!onlyIfAbsent || !(property in destination))=0A=
        destination[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  function findDOMClass(tagName) {=0A=
    var klass;=0A=
    var trans =3D {=0A=
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A=
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": =
"DList",=0A=
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": =
"Heading",=0A=
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A=
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", =
"CAPTION":=0A=
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A=
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", =
"TR":=0A=
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A=
      "FrameSet", "IFRAME": "IFrame"=0A=
    };=0A=
    if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
=0A=
    window[klass] =3D { };=0A=
    window[klass].prototype =3D =
document.createElement(tagName).__proto__;=0A=
    return window[klass];=0A=
  }=0A=
=0A=
  if (F.ElementExtensions) {=0A=
    copy(Element.Methods, HTMLElement.prototype);=0A=
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A=
  }=0A=
=0A=
  if (F.SpecificElementExtensions) {=0A=
    for (var tag in Element.Methods.ByTag) {=0A=
      var klass =3D findDOMClass(tag);=0A=
      if (Object.isUndefined(klass)) continue;=0A=
      copy(T[tag], klass.prototype);=0A=
    }=0A=
  }=0A=
=0A=
  Object.extend(Element, Element.Methods);=0A=
  delete Element.ByTag;=0A=
=0A=
  if (Element.extend.refresh) Element.extend.refresh();=0A=
  Element.cache =3D { };=0A=
};=0A=
=0A=
document.viewport =3D {=0A=
  getDimensions: function() {=0A=
    var dimensions =3D { };=0A=
    var B =3D Prototype.Browser;=0A=
    $w('width height').each(function(d) {=0A=
      var D =3D d.capitalize();=0A=
      dimensions[d] =3D (B.WebKit && !document.evaluate) ? self['inner' =
+ D] :=0A=
        (B.Opera) ? document.body['client' + D] : =
document.documentElement['client' + D];=0A=
    });=0A=
    return dimensions;=0A=
  },=0A=
=0A=
  getWidth: function() {=0A=
    return this.getDimensions().width;=0A=
  },=0A=
=0A=
  getHeight: function() {=0A=
    return this.getDimensions().height;=0A=
  },=0A=
=0A=
  getScrollOffsets: function() {=0A=
    return Element._returnOffset(=0A=
      window.pageXOffset || document.documentElement.scrollLeft || =
document.body.scrollLeft,=0A=
      window.pageYOffset || document.documentElement.scrollTop || =
document.body.scrollTop);=0A=
  }=0A=
};=0A=
/* Portions of the Selector class are derived from Jack Slocum=E2=80=99s =
DomQuery,=0A=
 * part of YUI-Ext version 0.40, distributed under the terms of an =
MIT-style=0A=
 * license.  Please see http://www.yui-ext.com/ for more information. */=0A=
=0A=
var Selector =3D Class.create({=0A=
  initialize: function(expression) {=0A=
    this.expression =3D expression.strip();=0A=
    this.compileMatcher();=0A=
  },=0A=
=0A=
  shouldUseXPath: function() {=0A=
    if (!Prototype.BrowserFeatures.XPath) return false;=0A=
=0A=
    var e =3D this.expression;=0A=
=0A=
    // Safari 3 chokes on :*-of-type and :empty=0A=
    if (Prototype.Browser.WebKit &&=0A=
     (e.include("-of-type") || e.include(":empty")))=0A=
      return false;=0A=
=0A=
    // XPath can't do namespaced attributes, nor can it read=0A=
    // the "checked" property from DOM nodes=0A=
    if ((/(\[[\w-]*?:|:checked)/).test(this.expression))=0A=
      return false;=0A=
=0A=
    return true;=0A=
  },=0A=
=0A=
  compileMatcher: function() {=0A=
    if (this.shouldUseXPath())=0A=
      return this.compileXPathMatcher();=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, h =3D =
Selector.handlers,=0A=
        c =3D Selector.criteria, le, p, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.matcher =3D Selector._cache[e];=0A=
      return;=0A=
    }=0A=
=0A=
    this.matcher =3D ["this.matcher =3D function(root) {",=0A=
                    "var r =3D root, h =3D Selector.handlers, c =3D =
false, n;"];=0A=
=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :=0A=
    	      new Template(c[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.matcher.push("return h.unique(n);\n}");=0A=
    eval(this.matcher.join('\n'));=0A=
    Selector._cache[this.expression] =3D this.matcher;=0A=
  },=0A=
=0A=
  compileXPathMatcher: function() {=0A=
    var e =3D this.expression, ps =3D Selector.patterns,=0A=
        x =3D Selector.xpath, le, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.xpath =3D Selector._cache[e]; return;=0A=
    }=0A=
=0A=
    this.matcher =3D ['.//*'];=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        if (m =3D e.match(ps[i])) {=0A=
          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :=0A=
            new Template(x[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.xpath =3D this.matcher.join('');=0A=
    Selector._cache[this.expression] =3D this.xpath;=0A=
  },=0A=
=0A=
  findElements: function(root) {=0A=
    root =3D root || document;=0A=
    if (this.xpath) return document._getElementsByXPath(this.xpath, =
root);=0A=
    return this.matcher(root);=0A=
  },=0A=
=0A=
  match: function(element) {=0A=
    this.tokens =3D [];=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, as =3D =
Selector.assertions;=0A=
    var le, p, m;=0A=
=0A=
    while (e && le !=3D=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          // use the Selector.assertions methods unless the selector=0A=
          // is too complex.=0A=
          if (as[i]) {=0A=
            this.tokens.push([i, Object.clone(m)]);=0A=
            e =3D e.replace(m[0], '');=0A=
          } else {=0A=
            // reluctantly do a document-wide search=0A=
            // and look for a match in the array=0A=
            return this.findElements(document).include(element);=0A=
          }=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    var match =3D true, name, matches;=0A=
    for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A=
      name =3D token[0], matches =3D token[1];=0A=
      if (!Selector.assertions[name](element, matches)) {=0A=
        match =3D false; break;=0A=
      }=0A=
    }=0A=
=0A=
    return match;=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.expression;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return "#<Selector:" + this.expression.inspect() + ">";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Selector, {=0A=
  _cache: { },=0A=
=0A=
  xpath: {=0A=
    descendant:   "//*",=0A=
    child:        "/*",=0A=
    adjacent:     "/following-sibling::*[1]",=0A=
    laterSibling: '/following-sibling::*',=0A=
    tagName:      function(m) {=0A=
      if (m[1] =3D=3D '*') return '';=0A=
      return "[local-name()=3D'" + m[1].toLowerCase() +=0A=
             "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A=
    },=0A=
    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A=
    id:           "[@id=3D'#{1}']",=0A=
    attrPresence: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      return new Template("[@#{1}]").evaluate(m);=0A=
    },=0A=
    attr: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      m[3] =3D m[5] || m[6];=0A=
      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      var h =3D Selector.xpath.pseudos[m[1]];=0A=
      if (!h) return '';=0A=
      if (Object.isFunction(h)) return h(m);=0A=
      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A=
    },=0A=
    operators: {=0A=
      '=3D':  "[@#{1}=3D'#{3}']",=0A=
      '!=3D': "[@#{1}!=3D'#{3}']",=0A=
      '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A=
      '$=3D': "[substring(@#{1}, (string-length(@#{1}) - =
string-length('#{3}') + 1))=3D'#{3}']",=0A=
      '*=3D': "[contains(@#{1}, '#{3}')]",=0A=
      '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A=
      '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A=
    },=0A=
    pseudos: {=0A=
      'first-child': '[not(preceding-sibling::*)]',=0A=
      'last-child':  '[not(following-sibling::*)]',=0A=
      'only-child':  '[not(preceding-sibling::* or =
following-sibling::*)]',=0A=
      'empty':       "[count(*) =3D 0 and (count(text()) =3D 0 or =
translate(text(), ' \t\r\n', '') =3D '')]",=0A=
      'checked':     "[@checked]",=0A=
      'disabled':    "[@disabled]",=0A=
      'enabled':     "[not(@disabled)]",=0A=
      'not': function(m) {=0A=
        var e =3D m[6], p =3D Selector.patterns,=0A=
            x =3D Selector.xpath, le, v;=0A=
=0A=
        var exclusion =3D [];=0A=
        while (e && le !=3D e && (/\S/).test(e)) {=0A=
          le =3D e;=0A=
          for (var i in p) {=0A=
            if (m =3D e.match(p[i])) {=0A=
              v =3D Object.isFunction(x[i]) ? x[i](m) : new =
Template(x[i]).evaluate(m);=0A=
              exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A=
              e =3D e.replace(m[0], '');=0A=
              break;=0A=
            }=0A=
          }=0A=
        }=0A=
        return "[not(" + exclusion.join(" and ") + ")]";=0A=
      },=0A=
      'nth-child':      function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-last-child': function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-of-type':    function(m) {=0A=
        return Selector.xpath.pseudos.nth("position() ", m);=0A=
      },=0A=
      'nth-last-of-type': function(m) {=0A=
        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", =
m);=0A=
      },=0A=
      'first-of-type':  function(m) {=0A=
        m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A=
      },=0A=
      'last-of-type':   function(m) {=0A=
        m[6] =3D "1"; return =
Selector.xpath.pseudos['nth-last-of-type'](m);=0A=
      },=0A=
      'only-of-type':   function(m) {=0A=
        var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + =
p['last-of-type'](m);=0A=
      },=0A=
      nth: function(fragment, m) {=0A=
        var mm, formula =3D m[6], predicate;=0A=
        if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
        if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
        if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A=
          return '[' + fragment + "=3D " + mm[1] + ']';=0A=
        if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A=
          if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A=
          var a =3D mm[1] ? Number(mm[1]) : 1;=0A=
          var b =3D mm[2] ? Number(mm[2]) : 0;=0A=
          predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A=
          "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A=
          return new Template(predicate).evaluate({=0A=
            fragment: fragment, a: a, b: b });=0A=
        }=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  criteria: {=0A=
    tagName:      'n =3D h.tagName(n, r, "#{1}", c);      c =3D false;',=0A=
    className:    'n =3D h.className(n, r, "#{1}", c);    c =3D false;',=0A=
    id:           'n =3D h.id(n, r, "#{1}", c);           c =3D false;',=0A=
    attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;',=0A=
    attr: function(m) {=0A=
      m[3] =3D (m[5] || m[6]);=0A=
      return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", =
c); c =3D false;').evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A=
      return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    descendant:   'c =3D "descendant";',=0A=
    child:        'c =3D "child";',=0A=
    adjacent:     'c =3D "adjacent";',=0A=
    laterSibling: 'c =3D "laterSibling";'=0A=
  },=0A=
=0A=
  patterns: {=0A=
    // combinators must be listed first=0A=
    // (and descendant needs to be last combinator)=0A=
    laterSibling: /^\s*~\s*/,=0A=
    child:        /^\s*>\s*/,=0A=
    adjacent:     /^\s*\+\s*/,=0A=
    descendant:   /^\s/,=0A=
=0A=
    // selectors follow=0A=
    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,=0A=
    id:           /^#([\w\-\*]+)(\b|$)/,=0A=
    className:    /^\.([\w\-\*]+)(\b|$)/,=0A=
    pseudo:=0A=
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis=
)abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/,=0A=
    attrPresence: /^\[([\w]+)\]/,=0A=
    attr:         =
/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^=
\]]*?)))?\]/=0A=
  },=0A=
=0A=
  // for Selector.match and Element#match=0A=
  assertions: {=0A=
    tagName: function(element, matches) {=0A=
      return matches[1].toUpperCase() =3D=3D =
element.tagName.toUpperCase();=0A=
    },=0A=
=0A=
    className: function(element, matches) {=0A=
      return Element.hasClassName(element, matches[1]);=0A=
    },=0A=
=0A=
    id: function(element, matches) {=0A=
      return element.id =3D=3D=3D matches[1];=0A=
    },=0A=
=0A=
    attrPresence: function(element, matches) {=0A=
      return Element.hasAttribute(element, matches[1]);=0A=
    },=0A=
=0A=
    attr: function(element, matches) {=0A=
      var nodeValue =3D Element.readAttribute(element, matches[1]);=0A=
      return nodeValue && Selector.operators[matches[2]](nodeValue, =
matches[5] || matches[6]);=0A=
    }=0A=
  },=0A=
=0A=
  handlers: {=0A=
    // UTILITY FUNCTIONS=0A=
    // joins two collections=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    // marks an array of nodes for counting=0A=
    mark: function(nodes) {=0A=
      var _true =3D Prototype.emptyFunction;=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._countedByPrototype =3D _true;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    unmark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._countedByPrototype =3D undefined;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    // mark each child node with its position (for nth calls)=0A=
    // "ofType" flag indicates whether we're indexing for nth-of-type=0A=
    // rather than nth-child=0A=
    index: function(parentNode, reverse, ofType) {=0A=
      parentNode._countedByPrototype =3D Prototype.emptyFunction;=0A=
      if (reverse) {=0A=
        for (var nodes =3D parentNode.childNodes, i =3D nodes.length - =
1, j =3D 1; i >=3D 0; i--) {=0A=
          var node =3D nodes[i];=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || =
node._countedByPrototype)) node.nodeIndex =3D j++;=0A=
        }=0A=
      } else {=0A=
        for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node =
=3D nodes[i]; i++)=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || =
node._countedByPrototype)) node.nodeIndex =3D j++;=0A=
      }=0A=
    },=0A=
=0A=
    // filters out duplicates and extends all nodes=0A=
    unique: function(nodes) {=0A=
      if (nodes.length =3D=3D 0) return nodes;=0A=
      var results =3D [], n;=0A=
      for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A=
        if (!(n =3D nodes[i])._countedByPrototype) {=0A=
          n._countedByPrototype =3D Prototype.emptyFunction;=0A=
          results.push(Element.extend(n));=0A=
        }=0A=
      return Selector.handlers.unmark(results);=0A=
    },=0A=
=0A=
    // COMBINATOR FUNCTIONS=0A=
    descendant: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, node.getElementsByTagName('*'));=0A=
      return results;=0A=
    },=0A=
=0A=
    child: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A=
          if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') =
results.push(child);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    adjacent: function(nodes) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        var next =3D this.nextElementSibling(node);=0A=
        if (next) results.push(next);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    laterSibling: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, Element.nextSiblings(node));=0A=
      return results;=0A=
    },=0A=
=0A=
    nextElementSibling: function(node) {=0A=
      while (node =3D node.nextSibling)=0A=
	      if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    previousElementSibling: function(node) {=0A=
      while (node =3D node.previousSibling)=0A=
        if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    // TOKEN FUNCTIONS=0A=
    tagName: function(nodes, root, tagName, combinator) {=0A=
      var uTagName =3D tagName.toUpperCase();=0A=
      var results =3D [], h =3D Selector.handlers;=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          // fastlane for ordinary descendant combinators=0A=
          if (combinator =3D=3D "descendant") {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              h.concat(results, node.getElementsByTagName(tagName));=0A=
            return results;=0A=
          } else nodes =3D this[combinator](nodes);=0A=
          if (tagName =3D=3D "*") return nodes;=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName.toUpperCase() =3D=3D=3D uTagName) =
results.push(node);=0A=
        return results;=0A=
      } else return root.getElementsByTagName(tagName);=0A=
    },=0A=
=0A=
    id: function(nodes, root, id, combinator) {=0A=
      var targetNode =3D $(id), h =3D Selector.handlers;=0A=
      if (!targetNode) return [];=0A=
      if (!nodes && root =3D=3D document) return [targetNode];=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          if (combinator =3D=3D 'child') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (targetNode.parentNode =3D=3D node) return [targetNode];=0A=
          } else if (combinator =3D=3D 'descendant') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Element.descendantOf(targetNode, node)) return =
[targetNode];=0A=
          } else if (combinator =3D=3D 'adjacent') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Selector.handlers.previousElementSibling(targetNode) =
=3D=3D node)=0A=
                return [targetNode];=0A=
          } else nodes =3D h[combinator](nodes);=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node =3D=3D targetNode) return [targetNode];=0A=
        return [];=0A=
      }=0A=
      return (targetNode && Element.descendantOf(targetNode, root)) ? =
[targetNode] : [];=0A=
    },=0A=
=0A=
    className: function(nodes, root, className, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      return Selector.handlers.byClassName(nodes, root, className);=0A=
    },=0A=
=0A=
    byClassName: function(nodes, root, className) {=0A=
      if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A=
      var needle =3D ' ' + className + ' ';=0A=
      for (var i =3D 0, results =3D [], node, nodeClassName; node =3D =
nodes[i]; i++) {=0A=
        nodeClassName =3D node.className;=0A=
        if (nodeClassName.length =3D=3D 0) continue;=0A=
        if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' =
').include(needle))=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    attrPresence: function(nodes, root, attr, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      var results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        if (Element.hasAttribute(node, attr)) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    attr: function(nodes, root, attr, value, operator, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      var handler =3D Selector.operators[operator], results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        var nodeValue =3D Element.readAttribute(node, attr);=0A=
        if (nodeValue =3D=3D=3D null) continue;=0A=
        if (handler(nodeValue, value)) results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    pseudo: function(nodes, name, value, root, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      return Selector.pseudos[name](nodes, value, root);=0A=
    }=0A=
  },=0A=
=0A=
  pseudos: {=0A=
    'first-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.previousElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'last-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.nextElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'only-child': function(nodes, value, root) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!h.previousElementSibling(node) && =
!h.nextElementSibling(node))=0A=
          results.push(node);=0A=
      return results;=0A=
    },=0A=
    'nth-child':        function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root);=0A=
    },=0A=
    'nth-last-child':   function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true);=0A=
    },=0A=
    'nth-of-type':      function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, false, true);=0A=
    },=0A=
    'nth-last-of-type': function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true, true);=0A=
    },=0A=
    'first-of-type':    function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, false, true);=0A=
    },=0A=
    'last-of-type':     function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, true, true);=0A=
    },=0A=
    'only-of-type':     function(nodes, formula, root) {=0A=
      var p =3D Selector.pseudos;=0A=
      return p['last-of-type'](p['first-of-type'](nodes, formula, root), =
formula, root);=0A=
    },=0A=
=0A=
    // handles the an+b logic=0A=
    getIndices: function(a, b, total) {=0A=
      if (a =3D=3D 0) return b > 0 ? [b] : [];=0A=
      return $R(1, total).inject([], function(memo, i) {=0A=
        if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A=
        return memo;=0A=
      });=0A=
    },=0A=
=0A=
    // handles nth(-last)-child, nth(-last)-of-type, and =
(first|last)-of-type=0A=
    nth: function(nodes, formula, root, reverse, ofType) {=0A=
      if (nodes.length =3D=3D 0) return [];=0A=
      if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
      if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
      var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A=
      h.mark(nodes);=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        if (!node.parentNode._countedByPrototype) {=0A=
          h.index(node.parentNode, reverse, ofType);=0A=
          indexed.push(node.parentNode);=0A=
        }=0A=
      }=0A=
      if (formula.match(/^\d+$/)) { // just a number=0A=
        formula =3D Number(formula);=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.nodeIndex =3D=3D formula) results.push(node);=0A=
      } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // =
an+b=0A=
        if (m[1] =3D=3D "-") m[1] =3D -1;=0A=
        var a =3D m[1] ? Number(m[1]) : 1;=0A=
        var b =3D m[2] ? Number(m[2]) : 0;=0A=
        var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A=
        for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; =
i++) {=0A=
          for (var j =3D 0; j < l; j++)=0A=
            if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A=
        }=0A=
      }=0A=
      h.unmark(nodes);=0A=
      h.unmark(indexed);=0A=
      return results;=0A=
    },=0A=
=0A=
    'empty': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        // IE treats comments as element nodes=0A=
        if (node.tagName =3D=3D '!' || (node.firstChild && =
!node.innerHTML.match(/^\s*$/))) continue;=0A=
        results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    'not': function(nodes, selector, root) {=0A=
      var h =3D Selector.handlers, selectorType, m;=0A=
      var exclusions =3D new Selector(selector).findElements(root);=0A=
      h.mark(exclusions);=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node._countedByPrototype) results.push(node);=0A=
      h.unmark(exclusions);=0A=
      return results;=0A=
    },=0A=
=0A=
    'enabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'disabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'checked': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.checked) results.push(node);=0A=
      return results;=0A=
    }=0A=
  },=0A=
=0A=
  operators: {=0A=
    '=3D':  function(nv, v) { return nv =3D=3D v; },=0A=
    '!=3D': function(nv, v) { return nv !=3D v; },=0A=
    '^=3D': function(nv, v) { return nv.startsWith(v); },=0A=
    '$=3D': function(nv, v) { return nv.endsWith(v); },=0A=
    '*=3D': function(nv, v) { return nv.include(v); },=0A=
    '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + =
' '); },=0A=
    '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + =
'-').include('-' + v.toUpperCase() + '-'); }=0A=
  },=0A=
=0A=
  split: function(expression) {=0A=
    var expressions =3D [];=0A=
    expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, =
function(m) {=0A=
      expressions.push(m[1].strip());=0A=
    });=0A=
    return expressions;=0A=
  },=0A=
=0A=
  matchElements: function(elements, expression) {=0A=
    var matches =3D $$(expression), h =3D Selector.handlers;=0A=
    h.mark(matches);=0A=
    for (var i =3D 0, results =3D [], element; element =3D elements[i]; =
i++)=0A=
      if (element._countedByPrototype) results.push(element);=0A=
    h.unmark(matches);=0A=
    return results;=0A=
  },=0A=
=0A=
  findElement: function(elements, expression, index) {=0A=
    if (Object.isNumber(expression)) {=0A=
      index =3D expression; expression =3D false;=0A=
    }=0A=
    return Selector.matchElements(elements, expression || '*')[index || =
0];=0A=
  },=0A=
=0A=
  findChildElements: function(element, expressions) {=0A=
    expressions =3D Selector.split(expressions.join(','));=0A=
    var results =3D [], h =3D Selector.handlers;=0A=
    for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A=
      selector =3D new Selector(expressions[i].strip());=0A=
      h.concat(results, selector.findElements(element));=0A=
    }=0A=
    return (l > 1) ? h.unique(results) : results;=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.IE) {=0A=
  Object.extend(Selector.handlers, {=0A=
    // IE returns comment nodes on getElementsByTagName("*").=0A=
    // Filter them out.=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        if (node.tagName !=3D=3D "!") a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    // IE improperly serializes _countedByPrototype in (inner|outer)HTML.=0A=
    unmark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node.removeAttribute('_countedByPrototype');=0A=
      return nodes;=0A=
    }=0A=
  });=0A=
}=0A=
=0A=
function $$() {=0A=
  return Selector.findChildElements(document, $A(arguments));=0A=
}=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    $(form).reset();=0A=
    return form;=0A=
  },=0A=
=0A=
  serializeElements: function(elements, options) {=0A=
    if (typeof options !=3D 'object') options =3D { hash: !!options };=0A=
    else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A=
    var key, value, submitted =3D false, submit =3D options.submit;=0A=
=0A=
    var data =3D elements.inject({ }, function(result, element) {=0A=
      if (!element.disabled && element.name) {=0A=
        key =3D element.name; value =3D $(element).getValue();=0A=
        if (value !=3D null && (element.type !=3D 'submit' || =
(!submitted &&=0A=
            submit !=3D=3D false && (!submit || key =3D=3D submit) && =
(submitted =3D true)))) {=0A=
          if (key in result) {=0A=
            // a key is already present; construct an array of values=0A=
            if (!Object.isArray(result[key])) result[key] =3D =
[result[key]];=0A=
            result[key].push(value);=0A=
          }=0A=
          else result[key] =3D value;=0A=
        }=0A=
      }=0A=
      return result;=0A=
    });=0A=
=0A=
    return options.hash ? data : Object.toQueryString(data);=0A=
  }=0A=
};=0A=
=0A=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form, options) {=0A=
    return Form.serializeElements(Form.getElements(form), options);=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    return $A($(form).getElementsByTagName('*')).inject([],=0A=
      function(elements, child) {=0A=
        if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A=
          elements.push(Element.extend(child));=0A=
        return elements;=0A=
      }=0A=
    );=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name) return $A(inputs).map(Element.extend);=0A=
=0A=
    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))=0A=
        continue;=0A=
      matchingInputs.push(Element.extend(input));=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('disable');=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('enable');=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    var elements =3D $(form).getElements().findAll(function(element) {=0A=
      return 'hidden' !=3D element.type && !element.disabled;=0A=
    });=0A=
    var firstByIndex =3D elements.findAll(function(element) {=0A=
      return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A=
    }).sortBy(function(element) { return element.tabIndex }).first();=0A=
=0A=
    return firstByIndex ? firstByIndex : elements.find(function(element) =
{=0A=
      return ['input', 'select', =
'textarea'].include(element.tagName.toLowerCase());=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    form =3D $(form);=0A=
    form.findFirstElement().activate();=0A=
    return form;=0A=
  },=0A=
=0A=
  request: function(form, options) {=0A=
    form =3D $(form), options =3D Object.clone(options || { });=0A=
=0A=
    var params =3D options.parameters, action =3D =
form.readAttribute('action') || '';=0A=
    if (action.blank()) action =3D window.location.href;=0A=
    options.parameters =3D form.serialize(true);=0A=
=0A=
    if (params) {=0A=
      if (Object.isString(params)) params =3D params.toQueryParams();=0A=
      Object.extend(options.parameters, params);=0A=
    }=0A=
=0A=
    if (form.hasAttribute('method') && !options.method)=0A=
      options.method =3D form.method;=0A=
=0A=
    return new Ajax.Request(action, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element =3D {=0A=
  focus: function(element) {=0A=
    $(element).focus();=0A=
    return element;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    $(element).select();=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Form.Element.Methods =3D {=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element.disabled && element.name) {=0A=
      var value =3D element.getValue();=0A=
      if (value !=3D undefined) {=0A=
        var pair =3D { };=0A=
        pair[element.name] =3D value;=0A=
        return Object.toQueryString(pair);=0A=
      }=0A=
    }=0A=
    return '';=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    return Form.Element.Serializers[method](element);=0A=
  },=0A=
=0A=
  setValue: function(element, value) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    Form.Element.Serializers[method](element, value);=0A=
    return element;=0A=
  },=0A=
=0A=
  clear: function(element) {=0A=
    $(element).value =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  present: function(element) {=0A=
    return $(element).value !=3D '';=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    try {=0A=
      element.focus();=0A=
      if (element.select && (element.tagName.toLowerCase() !=3D 'input' =
||=0A=
          !['button', 'reset', 'submit'].include(element.type)))=0A=
        element.select();=0A=
    } catch (e) { }=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.blur();=0A=
    element.disabled =3D true;=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D false;=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Field =3D Form.Element;=0A=
var $F =3D Form.Element.Methods.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element.Serializers =3D {=0A=
  input: function(element, value) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return Form.Element.Serializers.inputSelector(element, value);=0A=
      default:=0A=
        return Form.Element.Serializers.textarea(element, value);=0A=
    }=0A=
  },=0A=
=0A=
  inputSelector: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.checked ? =
element.value : null;=0A=
    else element.checked =3D !!value;=0A=
  },=0A=
=0A=
  textarea: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.value;=0A=
    else element.value =3D value;=0A=
  },=0A=
=0A=
  select: function(element, index) {=0A=
    if (Object.isUndefined(index))=0A=
      return this[element.type =3D=3D 'select-one' ?=0A=
        'selectOne' : 'selectMany'](element);=0A=
    else {=0A=
      var opt, value, single =3D !Object.isArray(index);=0A=
      for (var i =3D 0, length =3D element.length; i < length; i++) {=0A=
        opt =3D element.options[i];=0A=
        value =3D this.optionValue(opt);=0A=
        if (single) {=0A=
          if (value =3D=3D index) {=0A=
            opt.selected =3D true;=0A=
            return;=0A=
          }=0A=
        }=0A=
        else opt.selected =3D index.include(value);=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  selectOne: function(element) {=0A=
    var index =3D element.selectedIndex;=0A=
    return index >=3D 0 ? this.optionValue(element.options[index]) : =
null;=0A=
  },=0A=
=0A=
  selectMany: function(element) {=0A=
    var values, length =3D element.length;=0A=
    if (!length) return null;=0A=
=0A=
    for (var i =3D 0, values =3D []; i < length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected) values.push(this.optionValue(opt));=0A=
    }=0A=
    return values;=0A=
  },=0A=
=0A=
  optionValue: function(opt) {=0A=
    // extend element because hasAttribute may not be native=0A=
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A=
  initialize: function($super, element, frequency, callback) {=0A=
    $super(callback, frequency);=0A=
    this.element   =3D $(element);=0A=
    this.lastValue =3D this.getValue();=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    var value =3D this.getValue();=0A=
    if (Object.isString(this.lastValue) && Object.isString(value) ?=0A=
        this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value)) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D Class.create({=0A=
  initialize: function(element, callback) {=0A=
    this.element  =3D $(element);=0A=
    this.callback =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A=
      this.registerFormCallbacks();=0A=
    else=0A=
      this.registerCallback(this.element);=0A=
  },=0A=
=0A=
  onElementEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  },=0A=
=0A=
  registerFormCallbacks: function() {=0A=
    Form.getElements(this.element).each(this.registerCallback, this);=0A=
  },=0A=
=0A=
  registerCallback: function(element) {=0A=
    if (element.type) {=0A=
      switch (element.type.toLowerCase()) {=0A=
        case 'checkbox':=0A=
        case 'radio':=0A=
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
        default:=0A=
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
if (!window.Event) var Event =3D { };=0A=
=0A=
Object.extend(Event, {=0A=
  KEY_BACKSPACE: 8,=0A=
  KEY_TAB:       9,=0A=
  KEY_RETURN:   13,=0A=
  KEY_ESC:      27,=0A=
  KEY_LEFT:     37,=0A=
  KEY_UP:       38,=0A=
  KEY_RIGHT:    39,=0A=
  KEY_DOWN:     40,=0A=
  KEY_DELETE:   46,=0A=
  KEY_HOME:     36,=0A=
  KEY_END:      35,=0A=
  KEY_PAGEUP:   33,=0A=
  KEY_PAGEDOWN: 34,=0A=
  KEY_INSERT:   45,=0A=
=0A=
  cache: { },=0A=
=0A=
  relatedTarget: function(event) {=0A=
    var element;=0A=
    switch(event.type) {=0A=
      case 'mouseover': element =3D event.fromElement; break;=0A=
      case 'mouseout':  element =3D event.toElement;   break;=0A=
      default: return null;=0A=
    }=0A=
    return Element.extend(element);=0A=
  }=0A=
});=0A=
=0A=
Event.Methods =3D (function() {=0A=
  var isButton;=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A=
    isButton =3D function(event, code) {=0A=
      return event.button =3D=3D buttonMap[code];=0A=
    };=0A=
=0A=
  } else if (Prototype.Browser.WebKit) {=0A=
    isButton =3D function(event, code) {=0A=
      switch (code) {=0A=
        case 0: return event.which =3D=3D 1 && !event.metaKey;=0A=
        case 1: return event.which =3D=3D 1 && event.metaKey;=0A=
        default: return false;=0A=
      }=0A=
    };=0A=
=0A=
  } else {=0A=
    isButton =3D function(event, code) {=0A=
      return event.which ? (event.which =3D=3D=3D code + 1) : =
(event.button =3D=3D=3D code);=0A=
    };=0A=
  }=0A=
=0A=
  return {=0A=
    isLeftClick:   function(event) { return isButton(event, 0) },=0A=
    isMiddleClick: function(event) { return isButton(event, 1) },=0A=
    isRightClick:  function(event) { return isButton(event, 2) },=0A=
=0A=
    element: function(event) {=0A=
      var node =3D Event.extend(event).target;=0A=
      return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? =
node.parentNode : node);=0A=
    },=0A=
=0A=
    findElement: function(event, expression) {=0A=
      var element =3D Event.element(event);=0A=
      if (!expression) return element;=0A=
      var elements =3D [element].concat(element.ancestors());=0A=
      return Selector.findElement(elements, expression, 0);=0A=
    },=0A=
=0A=
    pointer: function(event) {=0A=
      return {=0A=
        x: event.pageX || (event.clientX +=0A=
          (document.documentElement.scrollLeft || =
document.body.scrollLeft)),=0A=
        y: event.pageY || (event.clientY +=0A=
          (document.documentElement.scrollTop || =
document.body.scrollTop))=0A=
      };=0A=
    },=0A=
=0A=
    pointerX: function(event) { return Event.pointer(event).x },=0A=
    pointerY: function(event) { return Event.pointer(event).y },=0A=
=0A=
    stop: function(event) {=0A=
      Event.extend(event);=0A=
      event.preventDefault();=0A=
      event.stopPropagation();=0A=
      event.stopped =3D true;=0A=
    }=0A=
  };=0A=
})();=0A=
=0A=
Event.extend =3D (function() {=0A=
  var methods =3D Object.keys(Event.Methods).inject({ }, function(m, =
name) {=0A=
    m[name] =3D Event.Methods[name].methodize();=0A=
    return m;=0A=
  });=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    Object.extend(methods, {=0A=
      stopPropagation: function() { this.cancelBubble =3D true },=0A=
      preventDefault:  function() { this.returnValue =3D false },=0A=
      inspect: function() { return "[object Event]" }=0A=
    });=0A=
=0A=
    return function(event) {=0A=
      if (!event) return false;=0A=
      if (event._extendedByPrototype) return event;=0A=
=0A=
      event._extendedByPrototype =3D Prototype.emptyFunction;=0A=
      var pointer =3D Event.pointer(event);=0A=
      Object.extend(event, {=0A=
        target: event.srcElement,=0A=
        relatedTarget: Event.relatedTarget(event),=0A=
        pageX:  pointer.x,=0A=
        pageY:  pointer.y=0A=
      });=0A=
      return Object.extend(event, methods);=0A=
    };=0A=
=0A=
  } else {=0A=
    Event.prototype =3D Event.prototype || =
document.createEvent("HTMLEvents").__proto__;=0A=
    Object.extend(Event.prototype, methods);=0A=
    return Prototype.K;=0A=
  }=0A=
})();=0A=
=0A=
Object.extend(Event, (function() {=0A=
  var cache =3D Event.cache;=0A=
=0A=
  function getEventID(element) {=0A=
    if (element._prototypeEventID) return element._prototypeEventID[0];=0A=
    arguments.callee.id =3D arguments.callee.id || 1;=0A=
    return element._prototypeEventID =3D [++arguments.callee.id];=0A=
  }=0A=
=0A=
  function getDOMEventName(eventName) {=0A=
    if (eventName && eventName.include(':')) return "dataavailable";=0A=
    return eventName;=0A=
  }=0A=
=0A=
  function getCacheForID(id) {=0A=
    return cache[id] =3D cache[id] || { };=0A=
  }=0A=
=0A=
  function getWrappersForEventName(id, eventName) {=0A=
    var c =3D getCacheForID(id);=0A=
    return c[eventName] =3D c[eventName] || [];=0A=
  }=0A=
=0A=
  function createWrapper(element, eventName, handler) {=0A=
    var id =3D getEventID(element);=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    if (c.pluck("handler").include(handler)) return false;=0A=
=0A=
    var wrapper =3D function(event) {=0A=
      if (!Event || !Event.extend ||=0A=
        (event.eventName && event.eventName !=3D eventName))=0A=
          return false;=0A=
=0A=
      Event.extend(event);=0A=
      handler.call(element, event);=0A=
    };=0A=
=0A=
    wrapper.handler =3D handler;=0A=
    c.push(wrapper);=0A=
    return wrapper;=0A=
  }=0A=
=0A=
  function findWrapper(id, eventName, handler) {=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    return c.find(function(wrapper) { return wrapper.handler =3D=3D =
handler });=0A=
  }=0A=
=0A=
  function destroyWrapper(id, eventName, handler) {=0A=
    var c =3D getCacheForID(id);=0A=
    if (!c[eventName]) return false;=0A=
    c[eventName] =3D c[eventName].without(findWrapper(id, eventName, =
handler));=0A=
  }=0A=
=0A=
  function destroyCache() {=0A=
    for (var id in cache)=0A=
      for (var eventName in cache[id])=0A=
        cache[id][eventName] =3D null;=0A=
  }=0A=
=0A=
  if (window.attachEvent) {=0A=
    window.attachEvent("onunload", destroyCache);=0A=
  }=0A=
=0A=
  return {=0A=
    observe: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var name =3D getDOMEventName(eventName);=0A=
=0A=
      var wrapper =3D createWrapper(element, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.addEventListener) {=0A=
        element.addEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.attachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    stopObserving: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var id =3D getEventID(element), name =3D =
getDOMEventName(eventName);=0A=
=0A=
      if (!handler && eventName) {=0A=
        getWrappersForEventName(id, eventName).each(function(wrapper) {=0A=
          element.stopObserving(eventName, wrapper.handler);=0A=
        });=0A=
        return element;=0A=
=0A=
      } else if (!eventName) {=0A=
        Object.keys(getCacheForID(id)).each(function(eventName) {=0A=
          element.stopObserving(eventName);=0A=
        });=0A=
        return element;=0A=
      }=0A=
=0A=
      var wrapper =3D findWrapper(id, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.removeEventListener) {=0A=
        element.removeEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.detachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      destroyWrapper(id, eventName, handler);=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    fire: function(element, eventName, memo) {=0A=
      element =3D $(element);=0A=
      if (element =3D=3D document && document.createEvent && =
!element.dispatchEvent)=0A=
        element =3D document.documentElement;=0A=
=0A=
      var event;=0A=
      if (document.createEvent) {=0A=
        event =3D document.createEvent("HTMLEvents");=0A=
        event.initEvent("dataavailable", true, true);=0A=
      } else {=0A=
        event =3D document.createEventObject();=0A=
        event.eventType =3D "ondataavailable";=0A=
      }=0A=
=0A=
      event.eventName =3D eventName;=0A=
      event.memo =3D memo || { };=0A=
=0A=
      if (document.createEvent) {=0A=
        element.dispatchEvent(event);=0A=
      } else {=0A=
        element.fireEvent(event.eventType, event);=0A=
      }=0A=
=0A=
      return Event.extend(event);=0A=
    }=0A=
  };=0A=
})());=0A=
=0A=
Object.extend(Event, Event.Methods);=0A=
=0A=
Element.addMethods({=0A=
  fire:          Event.fire,=0A=
  observe:       Event.observe,=0A=
  stopObserving: Event.stopObserving=0A=
});=0A=
=0A=
Object.extend(document, {=0A=
  fire:          Element.Methods.fire.methodize(),=0A=
  observe:       Element.Methods.observe.methodize(),=0A=
  stopObserving: Element.Methods.stopObserving.methodize(),=0A=
  loaded:        false=0A=
});=0A=
=0A=
(function() {=0A=
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A=
     Matthias Miller, Dean Edwards and John Resig. */=0A=
=0A=
  var timer;=0A=
=0A=
  function fireContentLoadedEvent() {=0A=
    if (document.loaded) return;=0A=
    if (timer) window.clearInterval(timer);=0A=
    document.fire("dom:loaded");=0A=
    document.loaded =3D true;=0A=
  }=0A=
=0A=
  if (document.addEventListener) {=0A=
    if (Prototype.Browser.WebKit) {=0A=
      timer =3D window.setInterval(function() {=0A=
        if (/loaded|complete/.test(document.readyState))=0A=
          fireContentLoadedEvent();=0A=
      }, 0);=0A=
=0A=
      Event.observe(window, "load", fireContentLoadedEvent);=0A=
=0A=
    } else {=0A=
      document.addEventListener("DOMContentLoaded",=0A=
        fireContentLoadedEvent, false);=0A=
    }=0A=
=0A=
  } else {=0A=
    document.write("<script id=3D__onDOMContentLoaded defer =
src=3D//:><\/script>");=0A=
    $("__onDOMContentLoaded").onreadystatechange =3D function() {=0A=
      if (this.readyState =3D=3D "complete") {=0A=
        this.onreadystatechange =3D null;=0A=
        fireContentLoadedEvent();=0A=
      }=0A=
    };=0A=
  }=0A=
})();=0A=
/*------------------------------- DEPRECATED =
-------------------------------*/=0A=
=0A=
Hash.toQueryString =3D Object.toQueryString;=0A=
=0A=
var Toggle =3D { display: Element.toggle };=0A=
=0A=
Element.Methods.childOf =3D Element.Methods.descendantOf;=0A=
=0A=
var Insertion =3D {=0A=
  Before: function(element, content) {=0A=
    return Element.insert(element, {before:content});=0A=
  },=0A=
=0A=
  Top: function(element, content) {=0A=
    return Element.insert(element, {top:content});=0A=
  },=0A=
=0A=
  Bottom: function(element, content) {=0A=
    return Element.insert(element, {bottom:content});=0A=
  },=0A=
=0A=
  After: function(element, content) {=0A=
    return Element.insert(element, {after:content});=0A=
  }=0A=
};=0A=
=0A=
var $continue =3D new Error('"throw $continue" is deprecated, use =
"return" instead');=0A=
=0A=
// This should be moved to script.aculo.us; notice the deprecated methods=0A=
// further below, that map to the newer Element methods.=0A=
var Position =3D {=0A=
  // set to true if needed, warning: firefox performance problems=0A=
  // NOT neeeded for page scrolling, only if draggable contained in=0A=
  // scrollable elements=0A=
  includeScrollOffsets: false,=0A=
=0A=
  // must be called before calling withinIncludingScrolloffset, every =
time the=0A=
  // page is scrolled=0A=
  prepare: function() {=0A=
    this.deltaX =3D  window.pageXOffset=0A=
                || document.documentElement.scrollLeft=0A=
                || document.body.scrollLeft=0A=
                || 0;=0A=
    this.deltaY =3D  window.pageYOffset=0A=
                || document.documentElement.scrollTop=0A=
                || document.body.scrollTop=0A=
                || 0;=0A=
  },=0A=
=0A=
  // caches x/y coordinate pair to use with overlap=0A=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (y >=3D this.offset[1] &&=0A=
            y <  this.offset[1] + element.offsetHeight &&=0A=
            x >=3D this.offset[0] &&=0A=
            x <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  withinIncludingScrolloffsets: function(element, x, y) {=0A=
    var offsetcache =3D Element.cumulativeScrollOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  // within must be called directly before=0A=
  overlap: function(mode, element) {=0A=
    if (!mode) return 0;=0A=
    if (mode =3D=3D 'vertical')=0A=
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A=
        element.offsetHeight;=0A=
    if (mode =3D=3D 'horizontal')=0A=
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A=
        element.offsetWidth;=0A=
  },=0A=
=0A=
  // Deprecation layer -- use newer Element methods now (1.5.2).=0A=
=0A=
  cumulativeOffset: Element.Methods.cumulativeOffset,=0A=
=0A=
  positionedOffset: Element.Methods.positionedOffset,=0A=
=0A=
  absolutize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.absolutize(element);=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.relativize(element);=0A=
  },=0A=
=0A=
  realOffset: Element.Methods.cumulativeScrollOffset,=0A=
=0A=
  offsetParent: Element.Methods.getOffsetParent,=0A=
=0A=
  page: Element.Methods.viewportOffset,=0A=
=0A=
  clone: function(source, target, options) {=0A=
    options =3D options || { };=0A=
    return Element.clonePosition(target, source, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!document.getElementsByClassName) document.getElementsByClassName =
=3D function(instanceMethods){=0A=
  function iter(name) {=0A=
    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' =
" + name + " ')]";=0A=
  }=0A=
=0A=
  instanceMethods.getElementsByClassName =3D =
Prototype.BrowserFeatures.XPath ?=0A=
  function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') =
: iter(className);=0A=
    return cond ? document._getElementsByXPath('.//*' + cond, element) : =
[];=0A=
  } : function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var elements =3D [], classNames =3D (/\s/.test(className) ? =
$w(className) : null);=0A=
    if (!classNames && !className) return elements;=0A=
=0A=
    var nodes =3D $(element).getElementsByTagName('*');=0A=
    className =3D ' ' + className + ' ';=0A=
=0A=
    for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A=
      if (child.className && (cn =3D ' ' + child.className + ' ') && =
(cn.include(className) ||=0A=
          (classNames && classNames.all(function(name) {=0A=
            return !name.toString().blank() && cn.include(' ' + name + ' =
');=0A=
          }))))=0A=
        elements.push(Element.extend(child));=0A=
    }=0A=
    return elements;=0A=
  };=0A=
=0A=
  return function(className, parentElement) {=0A=
    return $(parentElement || =
document.body).getElementsByClassName(className);=0A=
  };=0A=
}(Element.Methods);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.ClassNames =3D Class.create();=0A=
Element.ClassNames.prototype =3D {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    this.element.className.split(/\s+/).select(function(name) {=0A=
      return name.length > 0;=0A=
    })._each(iterator);=0A=
  },=0A=
=0A=
  set: function(className) {=0A=
    this.element.className =3D className;=0A=
  },=0A=
=0A=
  add: function(classNameToAdd) {=0A=
    if (this.include(classNameToAdd)) return;=0A=
    this.set($A(this).concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set($A(this).without(classNameToRemove).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return $A(this).join(' ');=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.ClassNames.prototype, Enumerable);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.addMethods();
------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://s7.addthis.com/js/200/addthis_widget.js

/* (c) 2008, 2009 Add This, LLC */=0A=
var addthis_conf=3D{ver:200};function =
addthis_invoke(s,u,t,p){addthis_config.username=3Dp||_ate.pub();addthis_s=
hare.url=3D(u||w.addthis_url);addthis_share.title=3D(t||w.addthis_title);=
var =
w=3Dwindow,lu=3Daddthis_share.url.toLowerCase(),lt=3Daddthis_share.title.=
toLowerCase();if(lu=3D=3D=3D""||lu=3D=3D=3D"[url]"){addthis_share.url=3Dl=
ocation.href;}if(lt=3D=3D=3D""||lt=3D=3D=3D"[title]"){addthis_share.title=
=3Ddocument.title;}_ate.as(s);return false;}if(!window._ate){var =
_atd=3D"www.addthis.com/",_atr=3D"//s7.addthis.com/",_euc=3DencodeURIComp=
onent,_duc=3DdecodeURIComponent,_atu=3D"undefined",_atc=3D{dr:0,ver:250,l=
oc:0,enote:"",cwait:500,tamp:0.2,samp:0.01,camp:1,vamp:1,addr:-1,addt:1,x=
fl:!!window.addthis_disable_flash,abf:!!window.addthis_do_ab};(function()=
{try{var =
l=3Dwindow.location;if(l.protocol.indexOf("file")=3D=3D=3D0){_atr=3D"http=
:"+_atr;}if(l.hostname.indexOf("localhost")!=3D-1){_atc.loc=3D1;}}catch(e=
){}var =
ua=3Dnavigator.userAgent.toLowerCase(),d=3Ddocument,w=3Dwindow,wa=3Dw.add=
EventListener,we=3Dw.attachEvent,dl=3Dd.location,b=3D{win:/windows/.test(=
ua),chr:/chrome/.test(ua),iph:/iphone/.test(ua),saf:/safari/.test(ua),web=
:/webkit/.test(ua),opr:/opera/.test(ua),msi:(/msie/.test(ua))&&!(/opera/.=
test(ua)),ffx:/firefox/.test(ua),ff2:/firefox\/2/.test(ua),ie6:/msie =
6.0/.test(ua),ie7:/msie =
7.0/.test(ua),mod:-1},_9=3D{isBound:false,isReady:false,readyList:window.=
addthis_onload||[],onReady:function(){if(!_9.isReady){_9.isReady=3Dtrue;v=
ar l=3D_9.readyList;for(var =
fn=3D0;fn<l.length;fn++){l[fn].call(window);}_9.readyList=3D[];}},addLoad=
:function(_c){var _d=3Dw.onload;if(typeof =
w.onload!=3D"function"){w.onload=3D_c;}else{w.onload=3Dfunction(){if(_d){=
_d();}_c();};}},bindReady:function(){if(r.isBound){return;}r.isBound=3Dtr=
ue;if(d.addEventListener&&!b.opr){d.addEventListener("DOMContentLoaded",r=
.onReady,false);}var =
_e=3Dwindow.addthis_product;if(_e&&_e.indexOf("f")>-1){r.onReady();return=
;}if(b.msi&&window=3D=3Dtop){(function(){if(r.isReady){return;}try{d.docu=
mentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0)=
;return;}r.onReady();})();}if(b.opr){d.addEventListener("DOMContentLoaded=
",function(){if(r.isReady){return;}for(var =
i=3D0;i<d.styleSheets.length;i++){if(d.styleSheets[i].disabled){setTimeou=
t(arguments.callee,0);return;}}r.onReady();},false);}if(b.saf){var =
_10;(function(){if(r.isReady){return;}if(d.readyState!=3D"loaded"&&d.read=
yState!=3D"complete"){setTimeout(arguments.callee,0);return;}if(_10=3D=3D=
=3Dundefined){var _12=3Dd.gn("link");for(var =
i=3D0;i<_12.length;i++){if(_12[i].getAttribute("rel")=3D=3D"stylesheet"){=
_10++;}}var =
_14=3Dd.gn("style");_10+=3D_14.length;}if(d.styleSheets.length!=3D_10){se=
tTimeout(arguments.callee,0);return;}r.onReady();})();}r.addLoad(r.onRead=
y);},append:function(fn,_16){r.bindReady();if(r.isReady){fn.call(window,[=
]);}else{r.readyList.push(function(){return =
fn.call(window,[]);});}}},r=3D_9,_17=3Dfunction(o,fn,acc,cxt){if(!o){retu=
rn acc;}if(o instanceof Array){for(var =
i=3D0,len=3Do.length,v=3Do[0];i<len;v=3Do[++i]){acc=3Dfn.call(cxt||o,acc,=
v,i,o);}}else{for(var _1f in =
o){acc=3Dfn.call(cxt||o,acc,o[_1f],_1f,o);}}return =
acc;},_20=3DArray.prototype.slice,_21=3Dfunction(a){return =
_20.apply(a,_20.call(arguments,1));},_23=3Dfunction(s){return =
s.replace(/(^\s+|\s+$)/g,"");},_25=3Dfunction(o,del){return =
_17(o,function(acc,v,k){k=3D_23(k);if(k){acc.push(_euc(k)+"=3D"+_euc(_23(=
v)));}return acc;},[]).join(del||"&");},_2b=3Dfunction(q,del){return =
_17((q||"").split(del||"&"),function(acc,_2f){var =
kv=3D_2f.split("=3D"),k=3D_23(_duc(kv[0])),v=3D_23(_duc(kv.slice(1).join(=
"=3D")));if(k){acc[k]=3Dv;}return acc;},{});},_33=3D{vst:[],rev:"$Rev: =
70591 =
$",bro:b,clck:1,show:1,dl:dl,camp:_atc.camp-Math.random(),samp:_atc.samp-=
Math.random(),vamp:_atc.vamp-Math.random(),tamp:_atc.tamp-Math.random(),a=
b:"-",scnt:1,seq:1,inst:1,wait:500,tmo:null,cvt:[],svt:[],sttm:new =
Date().getTime(),max:268435455,pix:"tev",sid:0,sub:!!window.at_sub,uid:nu=
ll,oot:null,swf:"//bin.clearspring.com/at/v/1/button1.6.swf",evu:"//e1.cl=
earspring.com/at/",spt:"static/r07/widget09.png",ifpp:null,com:function(m=
){if(window.parent&&window.postMessage){window.parent.postMessage(m,"*");=
}else{_33.ifm(m);}},ifwn:function(){var =
a=3D_33;try{a.rec(a.sifr.contentWindow.name);}catch(e){}},ifm:function(m)=
{if(addthis_wpl){var =
a=3D(addthis_wpl.split("#"))[0];window.parent.location.href=3Da+"#at"+m;}=
return false;},hash:window.location.hash,ifp:function(){var =
a=3D_33,m=3Dwindow.location.hash,p=3D0;if(m&&m.indexOf("#at")>-1){m=3Dm.s=
ubstr(3).split(";");for(var k in m){var =
v=3Dm[k].length>3?m[k].substr(0,3):null;switch(v){case"ssh":p=3D1;a.ssh(m=
[k].substr(4));break;case"uid":p=3D1;a.asetup(m[k].substr(4));break;}}if(=
p){if(!a.hash.length||a.hash=3D=3D""){a.hash=3D"#";}window.location.hash=3D=
a.hash;}}if(a.gssh&&a.guid){clearInterval(a.ifpp);}},pmh:function(e){if(e=
.origin.slice(-12)=3D=3D".addthis.com"){_33.rec(e.data);}},rec:function(s=
){if(!s){return;}var =
_3f=3D_2b(s),a=3D_33,i=3Da.sifr;if(_3f.ssh){a.ssh(_3f.ssh);}if(_3f.uid){a=
.asetup(_3f.uid);}if(i&&i.parentNode){i.parentNode.removeChild(i);a.sifr=3D=
null;}},ssh:function(ssh){_33.gssh=3D1;window.addthis_ssh=3D_duc(ssh);},m=
un:function(s){var mv=3D291;if(s){for(var =
i=3D0;i<s.length;i++){mv=3D(mv*(s.charCodeAt(i)+i)+3)&1048575;}}return(mv=
&16777215).toString(32);},ibt:function(){if(_33.bti){return _33.bti;}var =
_46=3D(window.addthis_product||"men").substr(0,3),_47=3D_46=3D=3D"bkm"||_=
46=3D=3D"fct"||_46=3D=3D"fxe";if(_47){_33.bti=3D_47;}return =
_47;},off:function(){return Math.floor((new =
Date().getTime()-_33.sttm)/100).toString(16);},ran:function(){return =
Math.floor(Math.random()*4294967295).toString(36);},srd:function(){if(_33=
.dr){return"&pre=3D"+_euc(_33.dr);}else{return"";}},cst:function(c){retur=
n"CXNID=3D2000001.521545608054043907"+(c||2)+"NXC";},imgz:[],hrr:function=
(_49){if(_49&&_49.urls&&_49.urls instanceof Array){for(var =
i=3D0;i<_49.urls.length;i++){var img=3Dnew =
Image();_33.imgz.push(img);img.src=3D_49.urls[i];}}},img:function(i,c){if=
(!window.at_sub&&!_atc.xtr){var =
a=3D_33,dr=3Da.dr,rev=3D((a.rev||"").split(" =
"));if(dr){dr=3D(dr.split("?")).shift();dr=3D(dr.split("http://")).pop();=
if(dr.length>25){dr=3Ddr.substr(0,25);}}var img=3Dnew =
Image();a.imgz.push(img);img.src=3D_atr+"live/t00/"+i+".gif?"+(a.uid!=3D=3D=
null?"uid=3D"+a.uid+"&":"")+a.ran()+"&"+a.cst(c)+(a.pub()?"&pub=3D"+a.pub=
():"")+(dr?"&dr=3D"+_euc(dr):"")+(rev.length>1?"&rev=3D"+rev[1]:"");}},cu=
id:function(){return(_33.sttm&_33.max).toString(16)+(Math.floor(Math.rand=
om()*_33.max)).toString(16);},ssid:function(){if(_33.sid=3D=3D=3D0){_33.s=
id=3D_33.cuid();}return =
_33.sid;},sev:function(id,_53){_33.pix=3D"sev-"+(typeof(id)!=3D=3D"number=
"?_euc(id):id);_33.svt.push(id+";"+_33.off());if(_53=3D=3D=3D1){_33.xmi(t=
rue);}else{_33.sxm(true);}},cev:function(k,v){_33.pix=3D"cev-"+_euc(k);_3=
3.cvt.push(_euc(k)+"=3D"+_euc(v)+";"+_33.off());_33.sxm(true);},sxm:funct=
ion(b){if(_33.tmo!=3D=3Dnull){clearTimeout(_33.tmo);}if(b){_33.tmo=3D_33.=
sto("_ate.xmi(false)",_33.wait);}},sto:function(c,t){return =
setTimeout(c,t);},sta:function(){var =
a=3D_33;return"AT-"+(a.pub()?a.pub():"unknown")+"/-/"+a.ab+"/"+a.ssid()+"=
/"+(a.seq++)+(a.uid!=3D=3Dnull?"/"+a.uid:"");},xred:function(){var =
w=3Dwindow,a=3D_33,hp=3D0,dr=3Dd.referer||d.referrer||"",du=3Ddl?dl.href:=
null,fnd=3D0;if(a.camp>=3D0&&du&&dl&&dl.protocol&&(dr.indexOf(".com")>-1)=
&&(dl.protocol.indexOf("https")=3D=3D-1)){if(dr&&dr.match(/ws\/results\/(=
Web|Images|Video|News)/)){fnd=3D1;}else{if(dr.indexOf(".com/search")>-1){=
var t=3Ddr.split("?").pop().split("&");for(var =
i=3D0;i<t.length;i++){if(t[i].indexOf("q=3D")=3D=3D=3D0||t[i].indexOf("p=3D=
")=3D=3D=3D0||t[i].indexOf("query")=3D=3D=3D0||t[i].indexOf("qry")=3D=3D=3D=
0||t[i].indexOf("text")=3D=3D=3D0){fnd=3D1;break;}}}}if(!_atc.xtr&&!_atc.=
xck&&fnd&&a.mun(a.pub())!=3D=3D"mu2r"){var =
o=3Dd.ce("script");o.src=3D"//cf.addthis.com/red/p.json?callback=3D_ate.h=
rr"+(a.pub()?"&pub=3D"+a.pub():"")+(a.uid&&a.uid!=3D=3D"anonymous"?"&uid=3D=
"+_euc(a.uid):"")+"&url=3D"+_euc(du)+"&ref=3D"+_euc((d.referer||d.referre=
r));d.gn("head")[0].appendChild(o);}}},xld:function(){var =
a=3D_33;if(!a.xld_p){a.xld_p=3D1;if(a.samp>=3D0&&!a.sub){a.sev("20");a.ce=
v("plo",Math.round(1/_atc.samp));if(a.dr){a.cev("pre",a.dr);}}a.xred();a.=
img(_atc.ver+"lo","2");}},xmi:function(_64){var =
a=3D_33,h=3Da.dl?a.dl.hostname:"";if(!a.uid){a.dck("X"+a.cuid());}else{a.=
coo();}if(a.cvt.length+a.svt.length>0){a.sxm(false);if(a.seq=3D=3D=3D1){a=
.cev("pin",a.inst);}if(_atc.xtr){return;}if(h.indexOf(".gov")>-1||h.index=
Of(".mil")>-1){_atc.xck=3D1;}var =
urp=3Da.pix+"-"+a.ran()+".png?ev=3D"+_33.sta()+"&se=3D"+a.svt.join(",")+"=
&ce=3D"+a.cvt.join(",")+(_atc.xck?"&xck=3D1":""),url=3Da.evu+urp;a.cvt=3D=
[];a.svt=3D[];if(_64){var =
d=3Ddocument,i=3Dd.ce("iframe");i.id=3D"_atf";i.src=3Durl;_33.opp(i.style=
);d.body.appendChild(i);i=3Dd.getElementById("_atf");}else{var img=3Dnew =
Image();a.imgz.push(img);img.src=3Durl;}}},loc:function(){return =
_atc.loc;},opp:function(st){st.width=3Dst.height=3D"1px";st.position=3D"a=
bsolute";st.zIndex=3D100000;},pub:function(){return =
window.addthis_config&&addthis_config.username?_euc(addthis_config.userna=
me):(window.addthis_pub||"");},plo:[],lad:function(x){_33.plo.push(x);},l=
ng:function(al){var =
d=3Ddocument;if(al&&(al.toLowerCase()).indexOf("en")!=3D=3D0&&!_33.pll){_=
33.pll=3D_33.ajs("static/r07/lang01.js");}},ajs:function(_70){var =
o=3Dd.ce("script");o.src=3D_atr+_70;d.gn("head")[0].appendChild(o);return=
 o;},jlo:function(){try{var =
d=3Ddocument,a=3D_33,al=3D(window.addthis_language||addthis_config.ui_lan=
guage||(a.bro.msi?navigator.userLanguage:navigator.language));a.lng(al);i=
f(!a.pld){if(a.bro.ie6){var img=3Dnew =
Image();a.imgz.push(img);img.src=3D_atr+a.spt;if(window.addthis_feed){img=
=3Dnew =
Image();a.imgz.push(img);img.src=3D_atr+"static/r05/feed00.gif";}}a.pld=3D=
a.ajs("static/r07/menu37.js");}}catch(e){}},igv:function(u,t){if(!w.addth=
is_share){w.addthis_share=3D{url:w.addthis_url||u,title:w.addthis_title||=
t};}if(!w.addthis_config){w.addthis_config=3D{username:w.addthis_pub};}el=
se{if(addthis_config.data_use_flash=3D=3D=3Dfalse){_atc.xfl=3D1;}if(addth=
is_config.data_use_cookies=3D=3D=3Dfalse){_atc.xck=3D1;}}},lod:function(a=
rg){try{var =
w=3Dwindow,a=3D_33,msi=3Da.bro.msi,hp=3D0,dr=3Dd.referer||d.referrer||"",=
du=3Ddl?dl.href:null,dh=3Ddl.hostname,si=3Ddu?du.indexOf("sms_ss"):-1,f=3D=
((arg=3D=3D=3D1||w.addthis_load_flash)&&!_atc.abf),al=3D((w.addthis_langu=
age||(w.addthis_config?w.addthis_config.ui_language:null)||(a.bro.msi?nav=
igator.userLanguage:navigator.language)).split("-")).shift(),xx,xy,lks=3D=
d.gn("link"),ifr,_87=3D_atr+"static/r07/sh09.html",_88=3D"//"+dh+"/favico=
n.ico",_89=3D"_ate.ifwn()",ifr;if(!w.postMessage){var =
_8a=3Dd.gn("img");for(var =
i=3D0;i<_8a.length;i++){if(_8a[i].src.split("//").pop().indexOf(dh)=3D=3D=
0){_88=3D_8a[i].src;break;}}}if(!_atc.xic||(w.postMessage||a.bro.msi)){if=
(!msi){ifr=3Dd.ce("iframe");}else{var =
div=3Dd.ce("div");div.style.visibility=3D"hidden";a.opp(div.style);d.body=
.insertBefore(div,d.body.firstChild);div.innerHTML=3D"<iframe =
id=3D\"_atssh\" width=3D\"1\" height=3D\"1\" name=3D\"_atssh\" =
"+(!w.postMessage?"onload=3D\""+_89+"\" =
":"")+">";ifr=3Dd.getElementById("_atssh");}}for(var =
i=3D0;i<lks.length;i++){var =
l=3Dlks[i];if(l.rel&&l.rel=3D=3D"canonical"&&l.href){du=3Dl.href;}}a.igv(=
du,d.title||"");a.gov();a.dr=3Ddr;a.ab=3D(!al||al=3D=3D"en")&&(a.bro.ffx|=
|a.bro.msi)&&!a.ibt()?"ps-"+(window.addthis_ab!=3D=3Dundefined?addthis_ab=
:(a.tamp>0?Math.min(4,Math.floor(Math.random()*4+1)):0)):"~";var =
_8e=3D(a.swf&&!_atc.xfl&&!(a.loc())&&!_atc.abf&&(f||a.uid=3D=3D=3Dnull||(=
a.uid!=3D=3D"anonymous"&&a.oot&&((new =
Date()).getTime()-a.oot>60480000))));_87+=3D"#swfp=3D"+(_8e&&msi?1:0);if(=
!msi&&_8e){var _8f=3Dfunction(o,n,v){var =
c=3Dd.ce("param");c.name=3Dn;c.value=3Dv;o.appendChild(c);},div=3Dd.ce("d=
iv"),o=3Dd.ce("object");o.id=3D"atff";o.data=3Da.swf;o.width=3Do.height=3D=
"1px";o.quality=3D"high";o.type=3D"application/x-shockwave-flash";_8f(o,"=
wmode","transparent");_8f(o,"allowScriptAccess","always");div.appendChild=
(o);d.body.insertBefore(div,d.body.firstChild);}if(dl.href.indexOf(_atr)=3D=
=3D-1&&ifr){ifr.id=3D"_atssh";a.opp(ifr.style);ifr.width=3Difr.height=3D1=
;ifr.frameborder=3Difr.style.border=3D0;ifr.style.top=3Difr.style.left=3D=
0;if(w.postMessage){ifr.src=3D_87;if(msi){w.attachEvent("onmessage",a.pmh=
);}else{w.addEventListener("message",a.pmh,false);}ifr=3Dd.body.appendChi=
ld(ifr);}else{if(false&&!_atc.xic&&a.bro.msi&&window=3D=3Dtop){ifr.onload=
=3D_89;ifr.src=3D_88;ifr=3Dd.body.appendChild(ifr);ifr.src=3D_87+"&wpl=3D=
"+_euc(_88);}}a.sifr=3Difr;}if(!f){if(_8e){a.uoo();if(a.bro.ie6||a.bro.ie=
7){a.sto("if (_ate.xld) =
_ate.xld()",5000);}else{a.sto("_ate.xld()",5000);}}else{a.guid=3D1;a.xld(=
);}if(si>-1&&du.indexOf(_atd+"book")=3D=3D-1){var =
sm=3Ddu.substr(si);sm=3Dsm.split("&").shift().split("#").shift().split("=3D=
").pop();if(a.vamp>=3D0&&!a.sub&&sm.length){a.cev("plv",Math.round(1/_atc=
.vamp));a.cev("rsc",sm);}}}if(a.plo.length>0){a.jlo();}}catch(e){}},kck:f=
unction(k){var d=3Ddocument;if(d.cookie){d.cookie=3Dk+"=3D ; =
expires=3DTue, 31 Mar 2009 05:47:11 UTC; =
path=3D/";}},rck:function(k){var d=3Ddocument;if(d.cookie){var =
ck=3Dd.cookie.split(";");for(var i=3D0;i<ck.length;i++){var =
c=3Dck[i],x=3Dc.indexOf(k+"=3D");if(x>=3D0){return =
c.substring(x+(k.length+1));}}}return;},uoo:function(){_33.sck("_csoot",(=
new =
Date().getTime()));},coo:function(f){if(_33.uid=3D=3D"anonymous"&&!_33.oo=
t){_33.xck=3D1;_33.uoo();}},dck:function(c){_33.uid=3Dc;_33.sck("_csuid",=
c);_33.coo();},gov:function(){var =
h=3D_33.dl?_33.dl.hostname:"";if(h.indexOf(".gov")>-1||h.indexOf(".mil")>=
-1){_atc.xck=3D1;_atc.xfl=3D1;}var =
p=3D_33.pub(),x=3D["usarmymedia","govdelivery"];for(i in =
x){if(p=3D=3Dx[i]){_atc.xck=3D1;_atc.xfl=3D1;break;}}},sck:function(u,v,s=
){_33.gov();if(!_atc.xck){d.cookie=3Du+"=3D"+v+(!s?"; expires=3DWed, 04 =
Oct 2028 03:19:53 GMT":"")+"; path=3D/";}},asetup:function(x){var =
a=3D_33;try{if(!a.guid){a.guid=3D1;if(x!=3D=3Dnull&&x!=3D=3D_atu){a.dck(x=
);}a.xld();}}catch(e){}return =
x;},ao:function(elt,_aa,_ab,_ac,_ad,_ae){_33.lad(["open",elt,_aa,_ab,_ac,=
_ad,_ae]);_33.jlo();return =
false;},ac:function(){},as:function(s,cf,sh){_33.lad(["send",s,cf,sh]);_3=
3.jlo();}},a=3D_33;w._ate=3Da;w._adr=3Dr;d.ce=3Dd.createElement;d.gn=3Dd.=
getElementsByTagName;r.bindReady();if(!_atc.ost){if(!w.addthis_conf){w.ad=
dthis_conf=3D{};}for(var i in =
addthis_conf){_atc[i]=3Daddthis_conf[i];}_atc.ost=3D1;}r.append(a.lod);if=
(d.cookie){var ck=3Dd.cookie.split(";");for(var =
i=3D0;i<ck.length;i++){var =
c=3Dck[i],x=3Dc.indexOf("_csuid=3D"),y=3Dc.indexOf("_csoot=3D");if(x>=3D0=
){_33.uid=3Dc.substring(x+7);}else{if(y>=3D0){_33.oot=3Dc.substring(y+7);=
}}}}try{var =
l=3Dd.ce("link");l.rel=3D"stylesheet";l.type=3D"text/css";l.href=3D_atr+"=
static/r07/widget21.css";l.media=3D"all";d.gn("head")[0].appendChild(l);}=
catch(e){}var =
ss=3Dd.gn("script"),s=3Dss[ss.length-1],q=3Ds.src.indexOf("#")>-1?s.src.r=
eplace(/^[^\#]+\#?/,""):s.src.replace(/^[^\?]+\??/,""),p=3D_2b(q);if(p.pu=
b){w.addthis_pub=3D_duc(p.pub);}else{if(p.username){w.addthis_pub=3D_duc(=
p.username);}}if(w.addthis_pub&&w.addthis_config){w.addthis_config.userna=
me=3Dw.addthis_pub;}if(p.domready){_atc.dr=3D1;}try{if(_atc.ver=3D=3D=3D1=
20){var rc=3D"atb"+w._ate.cuid();d.write("<span =
id=3D\""+rc+"\"></span>");w._ate.igv();w._ate.lad(["span",rc,addthis_shar=
e.url||"[url]",addthis_share.title||"[title]"]);}if(w.addthis_clickout){_=
33.lad(["cout"]);}}catch(e){}})();function =
addthis_open(elt,_bd,_be,_bf,_c0,_c1){if(typeof =
_c0=3D=3D"string"){_c0=3Dnull;}return =
_ate.ao(elt,_bd,_be,_bf,_c0,_c1);}function =
addthis_close(){_ate.ac();}function =
addthis_sendto(s,cf,sh){_ate.as(s,cf,sh);return =
false;}if(_atc.dr){_adr.onReady();}}else{_ate.inst++;}if(_atc.abf){addthi=
s_open(document.getElementById("ab"),"emailab",window.addthis_url||"[URL]=
",window.addthis_title||"[TITLE]");}
------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js

(function(){var g=3Dtrue,h=3Dnull,j=3Dfalse,aa=3D(new =
Date).getTime(),k=3Dfunction(a){var b=3D(new =
Date).getTime()-aa;b=3D"&dtd=3D"+(b<1000?b:"M");return a+b};var =
l=3Dthis,ba=3Dfunction(a,b,c){a=3Da.split(".");c=3Dc||l;!(a[0]in =
c)&&c.execScript&&c.execScript("var "+a[0]);for(var =
d;a.length&&(d=3Da.shift());)if(!a.length&&b!=3D=3Dundefined)c[d]=3Db;els=
e c=3Dc[d]?c[d]:(c[d]=3D{})},n=3Dfunction(a){var b=3Dtypeof =
a;if(b=3D=3D"object")if(a){if(a instanceof Array||!(a instanceof =
Object)&&Object.prototype.toString.call(a)=3D=3D"[object Array]"||typeof =
a.length=3D=3D"number"&&typeof a.splice!=3D"undefined"&&typeof =
a.propertyIsEnumerable!=3D"undefined"&&!a.propertyIsEnumerable("splice"))=
return"array";=0A=
if(!(a instanceof =
Object)&&(Object.prototype.toString.call(a)=3D=3D"[object =
Function]"||typeof a.call!=3D"undefined"&&typeof =
a.propertyIsEnumerable!=3D"undefined"&&!a.propertyIsEnumerable("call")))r=
eturn"function"}else return"null";else if(b=3D=3D"function"&&typeof =
a.call=3D=3D"undefined")return"object";return b},o=3Dfunction(a){return =
n(a)=3D=3D"array"},ca=3Dfunction(a){var b=3Dn(a);return =
b=3D=3D"array"||b=3D=3D"object"&&typeof =
a.length=3D=3D"number"},p=3Dfunction(a){return typeof =
a=3D=3D"string"},da=3Dfunction(a){a=3Dn(a);return a=3D=3D"object"||=0A=
a=3D=3D"array"||a=3D=3D"function"};Math.floor(Math.random()*2147483648).t=
oString(36);=0A=
var ea=3Dfunction(a){var =
b=3Dn(a);if(b=3D=3D"object"||b=3D=3D"array"){if(a.clone)return =
a.clone.call(a);b=3Db=3D=3D"array"?[]:{};for(var c in =
a)b[c]=3Dea(a[c]);return b}return a},fa=3Dfunction(a,b){var =
c=3Db||l;if(arguments.length>2){var =
d=3DArray.prototype.slice.call(arguments,2);return function(){var =
e=3DArray.prototype.slice.call(arguments);Array.prototype.unshift.apply(e=
,d);return a.apply(c,e)}}else return function(){return =
a.apply(c,arguments)}},ga=3DDate.now||function(){return(new =
Date).getTime()},q=3Dfunction(a,b,c){ba(a,=0A=
b,c)};var ha=3Dfunction(a,b,c){if(a.forEach)a.forEach(b,c);else =
if(Array.forEach)Array.forEach(a,b,c);else for(var =
d=3Da.length,e=3Dp(a)?a.split(""):a,f=3D0;f<d;f++)f in =
e&&b.call(c,e[f],f,a)},ia=3Dfunction(a){if(o(a))return =
a.concat();else{for(var =
b=3D[],c=3D0,d=3Da.length;c<d;c++)b[c]=3Da[c];return b}};var =
r=3Dfunction(a,b){this.width=3Da;this.height=3Db};r.prototype.clone=3Dfun=
ction(){return new =
r(this.width,this.height)};r.prototype.toString=3Dfunction(){return"("+th=
is.width+" x =
"+this.height+")"};r.prototype.ceil=3Dfunction(){this.width=3DMath.ceil(t=
his.width);this.height=3DMath.ceil(this.height);return =
this};r.prototype.floor=3Dfunction(){this.width=3DMath.floor(this.width);=
this.height=3DMath.floor(this.height);return this};=0A=
r.prototype.round=3Dfunction(){this.width=3DMath.round(this.width);this.h=
eight=3DMath.round(this.height);return =
this};r.prototype.scale=3Dfunction(a){this.width*=3Da;this.height*=3Da;re=
turn this};var ja=3Dfunction(a,b,c){for(var d in =
a)b.call(c,a[d],d,a)};var ka=3Dfunction(a){return =
a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},qa=3Dfunction(a,b){if(b)return =
a.replace(la,"&amp;").replace(ma,"&lt;").replace(na,"&gt;").replace(oa,"&=
quot;");else{if(!pa.test(a))return =
a;if(a.indexOf("&")!=3D-1)a=3Da.replace(la,"&amp;");if(a.indexOf("<")!=3D=
-1)a=3Da.replace(ma,"&lt;");if(a.indexOf(">")!=3D-1)a=3Da.replace(na,"&gt=
;");if(a.indexOf('"')!=3D-1)a=3Da.replace(oa,"&quot;");return =
a}},la=3D/&/g,ma=3D/</g,na=3D/>/g,oa=3D/\"/g,pa=3D/[&<>\"]/,ta=3Dfunction=
(a){if(s(a,"&"))return"document"in l&&!s(a,"<")?=0A=
ra(a):sa(a);return a},ra=3Dfunction(a){var =
b=3Dl.document.createElement("a");b.innerHTML=3Da;b.normalize&&b.normaliz=
e();a=3Db.firstChild.nodeValue;b.innerHTML=3D"";return =
a},sa=3Dfunction(a){return =
a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case =
"lt":return"<";case "gt":return">";case =
"quot":return'"';default:if(c.charAt(0)=3D=3D"#"){c=3DNumber("0"+c.substr=
(1));if(!isNaN(c))return String.fromCharCode(c)}return =
b}})},ua=3Dfunction(a,b){for(var c=3Db.length,d=3D0;d<c;d++){var =
e=3Dc=3D=3D1?b:b.charAt(d);=0A=
if(a.charAt(0)=3D=3De&&a.charAt(a.length-1)=3D=3De)return =
a.substring(1,a.length-1)}return a},s=3Dfunction(a,b){return =
a.indexOf(b)!=3D-1},va=3Dfunction(a,b){var =
c=3D0;a=3Dka(String(a)).split(".");b=3Dka(String(b)).split(".");for(var =
d=3DMath.max(a.length,b.length),e=3D0;c=3D=3D0&&e<d;e++){var =
f=3Da[e]||"",i=3Db[e]||"",m=3Dnew RegExp("(\\d*)(\\D*)","g"),t=3Dnew =
RegExp("(\\d*)(\\D*)","g");do{var =
x=3Dm.exec(f)||["","",""],y=3Dt.exec(i)||["","",""];if(x[0].length=3D=3D0=
&&y[0].length=3D=3D0)break;c=3Dx[1].length=3D=3D0?0:parseInt(x[1],10);var=
 sb=3Dy[1].length=3D=3D=0A=
0?0:parseInt(y[1],10);c=3Du(c,sb)||u(x[2].length=3D=3D0,y[2].length=3D=3D=
0)||u(x[2],y[2])}while(c=3D=3D0)}return =
c},u=3Dfunction(a,b){if(a<b)return-1;else if(a>b)return 1;return =
0};ga();var v,w,z,A,B,wa,xa,ya,za,Aa,Ba=3Dfunction(){return =
l.navigator?l.navigator.userAgent:h},C=3Dfunction(){return =
l.navigator},Ca=3Dfunction(){wa=3DB=3DA=3Dz=3Dw=3Dv=3Dj;var =
a;if(a=3DBa()){var =
b=3DC();v=3Da.indexOf("Opera")=3D=3D0;w=3D!v&&a.indexOf("MSIE")!=3D-1;A=3D=
(z=3D!v&&a.indexOf("WebKit")!=3D-1)&&a.indexOf("Mobile")!=3D-1;wa=3D(B=3D=
!v&&!z&&b.product=3D=3D"Gecko")&&b.vendor=3D=3D"Camino"}};Ca();=0A=
var D=3Dv,E=3Dw,Da=3DB,F=3Dz,Ea=3DA,Fa=3Dfunction(){var a=3DC();return =
a&&a.platform||""},Ga=3DFa(),Ha=3Dfunction(){xa=3Ds(Ga,"Mac");ya=3Ds(Ga,"=
Win");za=3Ds(Ga,"Linux");Aa=3D!!C()&&s(C().appVersion||"","X11")};Ha();va=
r Ia=3Dxa,Ja=3Dya,Ka=3Dza,La=3Dfunction(){var =
a=3D"",b;if(D&&l.opera){a=3Dl.opera.version;a=3Dtypeof =
a=3D=3D"function"?a():a}else{if(Da)b=3D/rv\:([^\);]+)(\)|;)/;else =
if(E)b=3D/MSIE\s+([^\);]+)(\)|;)/;else =
if(F)b=3D/WebKit\/(\S+)/;if(b)a=3D(a=3Db.exec(Ba()))?a[1]:""}return =
a},Ma=3DLa(),Na=3D{},G=3Dfunction(a){return =
Na[a]||(Na[a]=3Dva(Ma,a)>=3D0)};var Oa=3Dfunction(a){return =
p(a)?document.getElementById(a):a},Pa=3DOa,Ra=3Dfunction(a,b){ja(b,functi=
on(c,d){if(d=3D=3D"style")a.style.cssText=3Dc;else =
if(d=3D=3D"class")a.className=3Dc;else =
if(d=3D=3D"for")a.htmlFor=3Dc;else if(d in =
Qa)a.setAttribute(Qa[d],c);else =
a[d]=3Dc})},Qa=3D{cellpadding:"cellPadding",cellspacing:"cellSpacing",col=
span:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"w=
idth",usemap:"useMap",frameborder:"frameBorder",type:"type"},Sa=3Dfunctio=
n(a){var b=3Da.document;if(F&&!G("500")&&!Ea){if(typeof a.innerHeight=3D=3D=0A=
"undefined")a=3Dwindow;b=3Da.innerHeight;var =
c=3Da.document.documentElement.scrollHeight;if(a=3D=3Da.top)if(c<b)b-=3D1=
5;return new =
r(a.innerWidth,b)}a=3Db.compatMode=3D=3D"CSS1Compat"&&(!D||D&&G("9.50"))?=
b.documentElement:b.body;return new =
r(a.clientWidth,a.clientHeight)},Ua=3Dfunction(){return =
Ta(document,arguments)},Ta=3Dfunction(a,b){var =
c=3Db[0],d=3Db[1];if(E&&d&&(d.name||d.type)){c=3D["<",c];d.name&&c.push('=
 name=3D"',qa(d.name),'"');if(d.type){c.push(' =
type=3D"',qa(d.type),'"');d=3Dea(d);delete =
d.type}c.push(">");c=3Dc.join("")}var e=3D=0A=
a.createElement(c);if(d)if(p(d))e.className=3Dd;else =
Ra(e,d);if(b.length>2){function =
f(i){if(i)e.appendChild(p(i)?a.createTextNode(i):i)}for(d=3D2;d<b.length;=
d++){c=3Db[d];ca(c)&&!(da(c)&&c.nodeType>0)?ha(Va(c)?ia(c):c,f):f(c)}}ret=
urn e},Wa=3Dfunction(a,b){a.appendChild(b)};F&&G("522");var =
Va=3Dfunction(a){if(a&&typeof a.length=3D=3D"number")if(da(a))return =
typeof a.item=3D=3D"function"||typeof a.item=3D=3D"string";else =
if(n(a)=3D=3D"function")return typeof a.item=3D=3D"function";return =
j};function H(a,b){a=3DparseFloat(a);return =
isNaN(a)||a>1||a<0?b:a}function I(a,b){if(a=3D=3D"true")return =
g;if(a=3D=3D"false")return j;return b}function J(a,b){var =
c=3D/^([\w-]+\.)+[\w-]{2,}(\:[0-9]+)?$/;return c.test(a)?a:b};var =
Xa=3Ddocument,Ya=3DI("false",j),Za=3DI("false",j),$a=3DI("false",j);I("fa=
lse",j);var K=3Dwindow;var =
ab=3D"pagead2.googlesyndication.com",bb=3D"googleads.g.doubleclick.net",c=
b=3D"pubads.g.doubleclick.net",db=3D"securepubads.g.doubleclick.net",eb=3D=
"partner.googleadservices.com",L=3DJ("pagead2.googlesyndication.com",ab),=
fb=3DJ("googleads.g.doubleclick.net",bb),gb=3DJ("pagead2.googlesyndicatio=
n.com",ab);J("pubads.g.doubleclick.net",cb);J("partner.googleadservices.c=
om",eb);J("securepubads.g.doubleclick.net",db);var =
M=3Dfunction(a,b){for(var c in =
a)Object.prototype.hasOwnProperty.call(a,c)&&b.call(h,a[c],c,a)};function=
 N(a){return typeof =
encodeURIComponent=3D=3D"function"?encodeURIComponent(a):escape(a)}functi=
on hb(a,b,c){var =
d=3Ddocument.createElement("script");d.type=3D"text/javascript";if(b)d.on=
load=3Db;if(c)d.id=3Dc;d.src=3Da;var =
e=3Ddocument.getElementsByTagName("head")[0];if(!e)return =
j;window.setTimeout(function(){e.appendChild(d)},0);return g}=0A=
function =
ib(a,b){a.google_image_requests||(a.google_image_requests=3D[]);var =
c=3Dnew Image;c.src=3Db;a.google_image_requests.push(c)}function =
jb(a){if(a in kb)return kb[a];return =
kb[a]=3Dnavigator.userAgent.toLowerCase().indexOf(a)!=3D-1}var kb=3D{};=0A=
function lb(){if(navigator.plugins&&navigator.mimeTypes.length){var =
a=3Dnavigator.plugins["Shockwave Flash"];if(a&&a.description)return =
a.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")}else =
if(navigator.userAgent&&navigator.userAgent.indexOf("Windows =
CE")>=3D0){a=3D3;for(var b=3D1;b;)try{b=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+(a+1));a++}catch(c){b=3Dh}=
return a.toString()}else if(jb("msie")&&!window.opera){b=3Dh;try{b=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(d){a=3D=0A=
0;try{b=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");a=3D6;b.AllowScriptAcces=
s=3D"always"}catch(e){if(a=3D=3D6)return a.toString()}try{b=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(f){}}if(b){a=3Db.Get=
Variable("$version").split(" ")[1];return =
a.replace(/,/g,".")}}return"0"}function O(a){var =
b=3Da.google_ad_format;if(b)return b.indexOf("_0ads")>0;return =
a.google_ad_output!=3D"html"&&a.google_num_radlinks>0}function =
P(a){return!!a&&a.indexOf("_sdo")!=3D-1}=0A=
function Q(a,b){var =
c=3DMath.random();if(c<b){b=3DMath.floor(c/b*a.length);return =
a[b]}return""}=0A=
var mb=3Dfunction(a){a.u_tz=3D-(new =
Date).getTimezoneOffset();a.u_his=3Dwindow.history.length;a.u_java=3Dnavi=
gator.javaEnabled();if(window.screen){a.u_h=3Dwindow.screen.height;a.u_w=3D=
window.screen.width;a.u_ah=3Dwindow.screen.availHeight;a.u_aw=3Dwindow.sc=
reen.availWidth;a.u_cd=3Dwindow.screen.colorDepth}if(navigator.plugins)a.=
u_nplug=3Dnavigator.plugins.length;if(navigator.mimeTypes)a.u_nmime=3Dnav=
igator.mimeTypes.length},nb=3Dfunction(a){var =
b=3DK;if(a&&b.top!=3Db)b=3Db.top;try{return =
b.document&&!b.document.body?new r(-1,=0A=
-1):Sa(b||window)}catch(c){return new r(-12245933,-12245933)}};var =
ob=3D{google_ad_channel:"channel",google_ad_host:"host",google_ad_host_ch=
annel:"h_ch",google_ad_host_tier_id:"ht_id",google_ad_section:"region",go=
ogle_ad_type:"ad_type",google_adtest:"adtest",google_allow_expandable_ads=
:"ea",google_alternate_ad_url:"alternate_ad_url",google_alternate_color:"=
alt_color",google_bid:"bid",google_city:"gcs",google_color_bg:"color_bg",=
google_color_border:"color_border",google_color_line:"color_line",google_=
color_link:"color_link",google_color_text:"color_text",google_color_url:"=
color_url",=0A=
google_contents:"contents",google_country:"gl",google_cust_age:"cust_age"=
,google_cust_ch:"cust_ch",google_cust_gender:"cust_gender",google_cust_id=
:"cust_id",google_cust_interests:"cust_interests",google_cust_job:"cust_j=
ob",google_cust_l:"cust_l",google_cust_lh:"cust_lh",google_cust_u_url:"cu=
st_u_url",google_disable_video_autoplay:"disable_video_autoplay",google_e=
d:"ed",google_encoding:"oe",google_feedback:"feedback_link",google_flash_=
version:"flash",google_font_face:"f",google_font_size:"fs",google_hints:"=
hints",=0A=
google_kw:"kw",google_kw_type:"kw_type",google_language:"hl",google_page_=
url:"url",google_region:"gr",google_reuse_colors:"reuse_colors",google_sa=
fe:"adsafe",google_tag_info:"gut",google_targeting:"targeting",google_ui_=
features:"ui",google_ui_version:"uiv",google_video_doc_id:"video_doc_id",=
google_video_product_type:"video_product_type"},pb=3D{google_ad_client:"c=
lient",google_ad_format:"format",google_ad_output:"output",google_ad_call=
back:"callback",google_ad_height:"h",google_ad_override:"google_ad_overri=
de",=0A=
google_ad_slot:"slotname",google_ad_width:"w",google_ctr_threshold:"ctr_t=
",google_image_size:"image_size",google_last_modified_time:"lmt",google_m=
ax_num_ads:"num_ads",google_max_radlink_len:"max_radlink_len",google_num_=
radlinks:"num_radlinks",google_num_radlinks_per_unit:"num_radlinks_per_un=
it",google_only_ads_with_video:"only_ads_with_video",google_rl_dest_url:"=
rl_dest_url",google_rl_filtering:"rl_filtering",google_rl_mode:"rl_mode",=
google_rt:"rt",google_skip:"skip"},qb=3D{google_only_pyv_ads:"pyv",=0A=
google_with_pyv_ads:"withpyv"};function rb(a,b){try{return =
a.top.document.URL=3D=3Db.URL}catch(c){}return j}function =
tb(a,b,c,d){c=3Dc||a.google_ad_width;d=3Dd||a.google_ad_height;if(rb(a,b)=
)return j;var e=3Db.documentElement;if(c&&d){var =
f=3D1,i=3D1;if(a.innerHeight){f=3Da.innerWidth;i=3Da.innerHeight}else =
if(e&&e.clientHeight){f=3De.clientWidth;i=3De.clientHeight}else =
if(b.body){f=3Db.body.clientWidth;i=3Db.body.clientHeight}if(i>2*d||f>2*c=
)return j}return g}function =
ub(a,b){M(b,function(c,d){a["google_"+d]=3Dc})}=0A=
function vb(a,b){if(!b)return a.URL;return a.referrer}function =
wb(a,b){if(!b&&a.google_referrer_url=3D=3Dh)return"0";else =
if(b&&a.google_referrer_url=3D=3Dh)return"1";else =
if(!b&&a.google_referrer_url!=3Dh)return"2";else =
if(b&&a.google_referrer_url!=3Dh)return"3";return"4"}function =
xb(a,b,c,d){a.page_url=3Dvb(c,d);a.page_location=3Dh}function =
yb(a,b,c,d){a.page_url=3Db.google_page_url;a.page_location=3Dvb(c,d)||"EM=
PTY"}=0A=
function zb(a,b){var =
c=3D{},d=3Dtb(a,b,a.google_ad_width,a.google_ad_height);c.iframing=3Dwb(a=
,d);a.google_page_url?yb(c,a,b,d):xb(c,a,b,d);c.last_modified_time=3Db.UR=
L=3D=3Dc.page_url?Date.parse(b.lastModified)/1000:h;c.referrer_url=3Dd?a.=
google_referrer_url:a.google_page_url&&a.google_referrer_url?a.google_ref=
errer_url:b.referrer;return c}function Ab(a){var =
b=3D{},c=3Da.URL.substring(a.URL.lastIndexOf("http"));b.iframing=3Dh;b.pa=
ge_url=3Dc;b.page_location=3Da.URL;b.last_modified_time=3Dh;b.referrer_ur=
l=3Dc;return b}=0A=
function Bb(a,b){b=3DCb(a,b);ub(a,b)}function Cb(a,b){return =
a=3Da.google_page_url=3D=3Dh&&Db[b.domain]?Ab(b):zb(a,b)}var =
Db=3D{};Db["ad.yieldmanager.com"]=3Dg;var =
Eb=3Dfunction(a,b,c){b=3Dfa(b,l,a);a=3Dwindow.onerror;window.onerror=3Db;=
try{c()}catch(d){c=3Dd.toString();var =
e=3D"";if(d.fileName)e=3Dd.fileName;var =
f=3D-1;if(d.lineNumber)f=3Dd.lineNumber;b=3Db(c,e,f);if(!b)throw =
d;}window.onerror=3Da};q("google_protectAndRun",Eb);=0A=
var Gb=3Dfunction(a,b,c,d){if(Math.random()<0.01){var =
e=3DXa;a=3D["http://",gb,"/pagead/gen_204","?id=3Djserror","&jscb=3D",Ya?=
1:0,"&jscd=3D",Za?1:0,"&context=3D",N(a),"&msg=3D",N(b),"&file=3D",N(c),"=
&line=3D",N(d.toString()),"&url=3D",N(e.URL.substring(0,512)),"&ref=3D",N=
(e.referrer.substring(0,512))];a.push(Fb());ib(K,a.join(""))}return!$a};q=
("google_handleError",Gb);=0A=
var Ib=3Dfunction(a){Hb|=3Da},Hb=3D0,Fb=3Dfunction(){var =
a=3D["&client=3D",N(K.google_ad_client),"&format=3D",N(K.google_ad_format=
),"&slotname=3D",N(K.google_ad_slot),"&output=3D",N(K.google_ad_output),"=
&ad_type=3D",N(K.google_ad_type)];return a.join("")};var =
R=3D"",Lb=3Dfunction(){if(window.google_ad_frameborder=3D=3Dh)window.goog=
le_ad_frameborder=3D0;if(window.google_ad_output=3D=3Dh)window.google_ad_=
output=3D"html";if(P(window.google_ad_format)){var =
a=3Dwindow.google_ad_format.match(/^(\d+)x(\d+)_.*/);if(a){window.google_=
ad_width=3DparseInt(a[1],10);window.google_ad_height=3DparseInt(a[2],10);=
window.google_ad_output=3D"html"}}window.google_ad_format=3DJb(window.goo=
gle_ad_format,window.google_ad_output,window.google_ad_width,window.googl=
e_ad_height,window.google_ad_slot,=0A=
!!window.google_override_format);R=3Dwindow.google_ad_client||"";window.g=
oogle_ad_client=3DKb(window.google_ad_format,window.google_ad_client);Bb(=
window,document);if(window.google_num_slots_by_channel=3D=3Dh)window.goog=
le_num_slots_by_channel=3D{};if(window.google_viewed_host_channels=3D=3Dh=
)window.google_viewed_host_channels=3D{};if(window.google_num_slots_by_cl=
ient=3D=3Dh)window.google_num_slots_by_client=3D{};if(window.google_prev_=
ad_formats_by_region=3D=3Dh)window.google_prev_ad_formats_by_region=3D{};=
if(window.google_prev_ad_slotnames_by_region=3D=3D=0A=
h)window.google_prev_ad_slotnames_by_region=3D{};if(window.google_correla=
tor=3D=3Dh)window.google_correlator=3D(new =
Date).getTime();if(window.google_adslot_loaded=3D=3Dh)window.google_adslo=
t_loaded=3D{};if(window.google_adContentsBySlot=3D=3Dh)window.google_adCo=
ntentsBySlot=3D{};if(window.google_flash_version=3D=3Dh)window.google_fla=
sh_version=3Dlb();if(window.google_new_domain_checked=3D=3Dh)window.googl=
e_new_domain_checked=3D0;if(window.google_new_domain_enabled=3D=3Dh)windo=
w.google_new_domain_enabled=3D0;if(!window.google_num_ad_slots)window.goo=
gle_num_ad_slots=3D=0A=
0;if(!window.google_num_0ad_slots)window.google_num_0ad_slots=3D0;if(!win=
dow.google_num_sdo_slots)window.google_num_sdo_slots=3D0;window.google_ad=
_section=3Dwindow.google_ad_section||window.google_ad_region||"";window.g=
oogle_country=3Dwindow.google_country||window.google_gl||"";a=3D(new =
Date).getTime();if(o(window.google_color_bg))window.google_color_bg=3DS(w=
indow.google_color_bg,a);if(o(window.google_color_text))window.google_col=
or_text=3DS(window.google_color_text,a);if(o(window.google_color_link))wi=
ndow.google_color_link=3D=0A=
S(window.google_color_link,a);if(o(window.google_color_url))window.google=
_color_url=3DS(window.google_color_url,a);if(o(window.google_color_border=
))window.google_color_border=3DS(window.google_color_border,a);if(o(windo=
w.google_color_line))window.google_color_line=3DS(window.google_color_lin=
e,a)},Mb=3Dfunction(a){M(ob,function(b,c){a[c]=3Dh});M(pb,function(b,c){a=
[c]=3Dh});M(qb,function(b,c){a[c]=3Dh});a.google_container_id=3Dh;a.googl=
e_eids=3Dh;a.google_page_location=3Dh;a.google_referrer_url=3Dh;a.google_=
ad_region=3Dh;=0A=
a.google_gl=3Dh},S=3Dfunction(a,b){Ib(2);return =
a[b%a.length]},Kb=3Dfunction(a,b){if(!b)return"";b=3Db.toLowerCase();retu=
rn =
b=3DP(a)?Nb(b):Ob(b)},Ob=3Dfunction(a){if(a&&a.substring(0,3)!=3D"ca-")a=3D=
"ca-"+a;return =
a},Nb=3Dfunction(a){if(a&&a.substring(0,9)!=3D"dist-aff-")a=3D"dist-aff-"=
+a;return =
a},Jb=3Dfunction(a,b,c,d,e,f){if(!a&&b=3D=3D"html")a=3Dc+"x"+d;return =
a=3DPb(a,e,f)?a.toLowerCase():""},Pb=3Dfunction(a,b,c){if(!a)return =
j;if(!b)return g;return c};var T=3Ddocument,U=3Dnavigator,V=3Dwindow;=0A=
function Qb(){var a=3DT.cookie,b=3DMath.round((new =
Date).getTime()/1000),c=3DV.google_analytics_domain_name;c=3Dtypeof =
c=3D=3D"undefined"?Rb("auto"):Rb(c);var =
d=3Da.indexOf("__utma=3D"+c+".")>-1,e=3Da.indexOf("__utmb=3D"+c)>-1,f=3Da=
.indexOf("__utmc=3D"+c)>-1,i=3D{},m=3D!!V&&!!V.gaGlobal;if(d){a=3Da.split=
("__utma=3D"+c+".")[1].split(";")[0].split(".");i.sid=3De&&f?a[3]+"":m&&V=
.gaGlobal.sid?V.gaGlobal.sid:b+"";i.vid=3Da[0]+"."+a[1];i.from_cookie=3Dg=
}else{i.sid=3Dm&&V.gaGlobal.sid?V.gaGlobal.sid:b+"";i.vid=3Dm&&V.gaGlobal=
.vid?V.gaGlobal.vid:=0A=
(Math.round(Math.random()*2147483647)^Sb()&2147483647)+"."+b;i.from_cooki=
e=3Dj}i.dh=3Dc;i.hid=3Dm&&V.gaGlobal.hid?V.gaGlobal.hid:Math.round(Math.r=
andom()*2147483647);return V.gaGlobal=3Di}=0A=
function Sb(){var =
a=3DT.cookie?T.cookie:"",b=3DV.history.length,c,d=3D[U.appName,U.version,=
U.language?U.language:U.browserLanguage,U.platform,U.userAgent,U.javaEnab=
led()?1:0].join("");if(V.screen)d+=3DV.screen.width+"x"+V.screen.height+V=
.screen.colorDepth;else =
if(V.java){c=3Djava.awt.Toolkit.getDefaultToolkit().getScreenSize();d+=3D=
c.screen.width+"x"+c.screen.height}d+=3Da;d+=3DT.referrer?T.referrer:"";f=
or(a=3Dd.length;b>0;)d+=3Db--^a++;return Tb(d)}=0A=
function Tb(a){var =
b=3D1,c=3D0,d;if(!(a=3D=3Dundefined||a=3D=3D"")){b=3D0;for(d=3Da.length-1=
;d>=3D0;d--){c=3Da.charCodeAt(d);b=3D(b<<6&268435455)+c+(c<<14);c=3Db&266=
338304;b=3Dc!=3D0?b^c>>21:b}}return b}function =
Rb(a){if(!a||a=3D=3D""||a=3D=3D"none")return =
1;if("auto"=3D=3Da){a=3DT.domain;if("www."=3D=3Da.substring(0,4))a=3Da.su=
bstring(4,a.length)}return Tb(a.toLowerCase())};var =
Ub=3D{google:1,googlegroups:1,gmail:1,googlemail:1,googleimages:1,googlep=
rint:1};function =
Vb(a){a=3Da.google_page_location||a.google_page_url;if(!a)return =
j;a=3Da.toString();if(a.indexOf("http://")=3D=3D0)a=3Da.substring(7,a.len=
gth);else =
if(a.indexOf("https://")=3D=3D0)a=3Da.substring(8,a.length);var =
b=3Da.indexOf("/");if(b=3D=3D-1)b=3Da.length;a=3Da.substring(0,b);a=3Da.s=
plit(".");b=3Dj;if(a.length>=3D3)b=3Da[a.length-3]in =
Ub;if(a.length>=3D2)b=3Db||a[a.length-2]in Ub;return b}=0A=
function Wb(a,b,c){if(Vb(a)){a.google_new_domain_checked=3D1;return =
j}if(a.google_new_domain_checked=3D=3D0){var =
d=3DMath.random();if(d<=3Dc){c=3D"http://"+fb+"/pagead/test_domain.js";d=3D=
"script";b.write("<"+d+' =
src=3D"'+c+'"></'+d+">");a.google_new_domain_checked=3D1;return =
g}}return j}function =
Xb(a){if(!Vb(a)&&a.google_new_domain_enabled=3D=3D1)return"http://"+fb;re=
turn"http://"+gb};var =
W=3Dfunction(a){this.s=3Da;this.f=3D[];this.e=3D0;this.a=3D[];this.o=3D0;=
this.b=3D[];this.m=3Dj;this.g=3Dthis.h=3D"";this.l=3Dj};W.prototype.q=3Df=
unction(a,b){var =
c=3Dthis.s[b],d=3Dthis.f;this.s[b]=3Dfunction(e){if(e&&e.length>0){var =
f=3De.length>1?e[1].url:h;d.push([a,ta(e[0].url),f])}c(e)}};W.prototype.p=
=3Dfunction(){this.e++};W.prototype.r=3Dfunction(a){this.a.push(a)};W.pro=
totype.n=3Dfunction(){if(!this.m){hb("http://"+L+"/pagead/osd.js");this.m=
=3Dg}};=0A=
W.prototype.i=3Dfunction(a){if(this.e>0)for(var =
b=3Ddocument.getElementsByTagName("iframe"),c=3Dthis.l?"google_ads_iframe=
_":"google_ads_frame",d=3D0;d<b.length;d++){var =
e=3Db.item(d);e.src&&e.name&&e.name.indexOf(c)=3D=3D0&&a(e,e.src)}};=0A=
W.prototype.j=3Dfunction(a){var b=3Dthis.f;if(b.length>0)for(var =
c=3Ddocument.getElementsByTagName("a"),d=3Dfunction(x,y){return =
x.innerHTML.indexOf(y)>0},e=3D0;e<c.length;e++)for(var =
f=3D0;f<b.length;f++)if(c.item(e).href=3D=3Db[f][1]){var =
i=3Dc.item(e).parentNode;if(b[f][2])for(var =
m=3Di,t=3D0;t<4;t++){if(d(m,b[f][2])){i=3Dm;break}m=3Dm.parentNode}a(i,b[=
f][0]);b.splice(f,1);break}};=0A=
W.prototype.k=3Dfunction(a){for(var b=3D0;b<this.a.length;b++){var =
c=3Dthis.a[b],d=3DYb(c);if(d)(d=3Ddocument.getElementById("google_ads_div=
_"+d))&&a(d,c)}};W.prototype.c=3Dfunction(a){this.j(a);this.k(a);this.i(a=
)};W.prototype.setupOsd=3Dfunction(a,b,c){this.o=3Da;this.h=3Db;this.g=3D=
c};W.prototype.getOsdMode=3Dfunction(){return =
this.o};W.prototype.getEid=3Dfunction(){return =
this.h};W.prototype.getCorrelator=3Dfunction(){return =
this.g};W.prototype.d=3Dfunction(){return =
this.f.length+this.e+this.a.length};=0A=
W.prototype.setValidAdBlockTypes=3Dfunction(a){this.b=3Da};W.prototype.re=
gisterAdBlockByType=3Dfunction(a,b,c){if(this.b.length>0){for(var =
d=3D0;d<this.b.length;d++)if(this.b[d]=3D=3Da){this.l=3Dc;if(a=3D=3D"js")=
this.q(b,"google_ad_request_done");else if(a=3D=3D"html")this.p();else =
a=3D=3D"json_html"&&this.r(b)}this.n()}};var =
Yb=3Dfunction(a){if((a=3Da.match(/[&\?](?:slotname)=3D([^&]+)/))&&a.lengt=
h=3D=3D2)return =
a[1];return""},Zb=3Dfunction(){window.__google_ad_urls||(window.__google_=
ad_urls=3Dnew W(window));return window.__google_ad_urls};=0A=
q("Goog_AdSense_getAdAdapterInstance",Zb);q("Goog_AdSense_OsdAdapter",W);=
q("Goog_AdSense_OsdAdapter.prototype.numBlocks",W.prototype.d);q("Goog_Ad=
Sense_OsdAdapter.prototype.findBlocks",W.prototype.c);q("Goog_AdSense_Osd=
Adapter.prototype.getOsdMode",W.prototype.getOsdMode);q("Goog_AdSense_Osd=
Adapter.prototype.getEid",W.prototype.getEid);q("Goog_AdSense_OsdAdapter.=
prototype.getCorrelator",W.prototype.getCorrelator);q("Goog_AdSense_OsdAd=
apter.prototype.setValidAdBlockTypes",W.setValidAdBlockTypes);=0A=
q("Goog_AdSense_OsdAdapter.prototype.setupOsd",W.prototype.setupOsd);q("G=
oog_AdSense_OsdAdapter.prototype.registerAdBlockByType",W.prototype.regis=
terAdBlockByType);var =
$b,ac,bc,cc,dc,ec,fc=3Dfunction(){ec=3Ddc=3Dcc=3Dbc=3Dac=3D$b=3Dj;var =
a=3DBa();if(a)if(a.indexOf("Firefox")!=3D-1)$b=3Dg;else =
if(a.indexOf("Camino")!=3D-1)ac=3Dg;else =
if(a.indexOf("iPhone")!=3D-1||a.indexOf("iPod")!=3D-1)bc=3Dg;else =
if(a.indexOf("Android")!=3D-1)cc=3Dg;else =
if(a.indexOf("Chrome")!=3D-1)dc=3Dg;else =
if(a.indexOf("Safari")!=3D-1)ec=3Dg};fc();var gc=3Dfunction(a,b){var =
c=3Da.nodeType=3D=3D9?a:a.ownerDocument||a.document;if(c.defaultView&&c.d=
efaultView.getComputedStyle)if(a=3Dc.defaultView.getComputedStyle(a,""))r=
eturn a[b];return h},hc=3Dfunction(a,b){return =
gc(a,b)||(a.currentStyle?a.currentStyle[b]:h)||a.style[b]},ic=3Dfunction(=
a,b,c,d){if(/^\d+px?$/.test(b))return parseInt(b,10);else{var =
e=3Da.style[c],f=3Da.runtimeStyle[c];a.runtimeStyle[c]=3Da.currentStyle[c=
];a.style[c]=3Db;b=3Da.style[d];a.style[c]=3De;a.runtimeStyle[c]=3Df;retu=
rn b}},jc=3Dfunction(a){var b=3D=0A=
a.nodeType=3D=3D9?a:a.ownerDocument||a.document,c=3D"";if(b.createTextRan=
ge){c=3Db.body.createTextRange();c.moveToElementText(a);c=3Dc.queryComman=
dValue("FontName")}if(!c){c=3Dhc(a,"fontFamily");if(D&&Ka)c=3Dc.replace(/=
 \[[^\]]*\]/,"")}a=3Dc.split(",");if(a.length>1)c=3Da[0];return =
ua(c,"\"'")},kc=3D/[^\d]+$/,lc=3Dfunction(a){return(a=3Da.match(kc))&&a[0=
]||h},mc=3D{cm:1,"in":1,mm:1,pc:1,pt:1},nc=3D{em:1,ex:1},oc=3Dfunction(a)=
{var b=3Dhc(a,"fontSize"),c=3Dlc(b);if(b&&"px"=3D=3Dc)return =
parseInt(b,10);if(E)if(c in mc)return ic(a,b,"left",=0A=
"pixelLeft");else if(a.parentNode&&a.parentNode.nodeType=3D=3D1&&c in =
nc){a=3Da.parentNode;c=3Dhc(a,"fontSize");return =
ic(a,b=3D=3Dc?"1em":b,"left","pixelLeft")}c=3DUa("span",{style:"visibilit=
y:hidden;position:absolute;line-height:0;padding:0;margin:0;border:0;heig=
ht:1em;"});Wa(a,c);b=3Dc.offsetHeight;c&&c.parentNode&&c.parentNode.remov=
eChild(c);return b};var X=3D{};function pc(a){if(a=3D=3D1)return =
g;return!X[a]}function =
Y(a,b){if(a)if(b=3D=3D1)if(X[b])X[b]+=3D","+a;else X[b]=3Da;else =
X[b]=3Da}function qc(){var a=3D[];M(X,function(b){a.push(b)});return =
a.join(",")}function rc(a,b){if(a&&a instanceof Array)for(var =
c=3D0;c<a.length;c++)a[c]&&typeof a[c]=3D=3D"string"&&Y(a[c],b)}var =
Z=3Dj;=0A=
function sc(a,b){var =
c=3D"script";Z=3Dtc(a,b);if(!Z)a.google_allow_expandable_ads=3Dj;var =
d=3D!uc();Z&&d&&b.write("<"+c+' =
src=3D"http://'+L+'/pagead/expansion_embed.js"></'+c+">");a=3DWb(a,b,H("1=
",0.01));(d=3Dd||a)&&jb("msie")&&!window.opera?b.write("<"+c+' =
src=3D"http://'+L+'/pagead/render_ads.js"></'+c+">"):b.write("<"+c+'>goog=
le_protectAndRun("ads_core.google_render_ad", google_handleError, =
google_render_ad);</'+c+">")}function $(a){return a!=3Dh?'"'+a+'"':'""'}=0A=
function vc(a){var b=3D"google_unique_id";if(a[b])++a[b];else =
a[b]=3D1;return a[b]}var wc=3Dfunction(a,b){var =
c=3Db.slice(-1),d=3Dc=3D=3D"?"||c=3D=3D"#"?"":"&",e=3D[b];b=3Dfunction(f,=
i){if(f||f=3D=3D=3D0||f=3D=3D=3Dj){if(typeof =
f=3D=3D"boolean")f=3Df?1:0;e.push(d,i,"=3D",N(f));d=3D"&"}};M(a,b);return=
 e.join("")};function xc(){var =
a=3DE&&G("6"),b=3DDa&&G("1.8.1"),c=3DF&&G("525");if(Ja&&(a||b||c))return =
g;else if(Ia&&(c||b))return g;else if(Ka&&b)return g;return j}=0A=
function uc(){return(typeof =
ExpandableAdSlotFactory=3D=3D"function"||typeof =
ExpandableAdSlotFactory=3D=3D"object")&&typeof =
ExpandableAdSlotFactory.createIframe=3D=3D"function"}function =
tc(a,b){if(a.google_allow_expandable_ads=3D=3D=3Dj||!b.body||a.google_ad_=
output!=3D"html"||tb(a,b)||!yc(a)||isNaN(a.google_ad_height)||isNaN(a.goo=
gle_ad_width)||!xc())return j;return g}function yc(a){var =
b=3Da.google_ad_format;if(P(b))return =
j;if(O(a)&&b!=3D"468x15_0ads_al")return j;return g}=0A=
function zc(){var =
a;if(K.google_ad_output=3D=3D"html"&&!(O(K)||P(K.google_ad_format))&&pc(0=
)){a=3D["6083035","6083034"];a=3DQ(a,H("0.001",0));Y(a,0)}return =
a=3D=3D"6083035"}=0A=
function =
Ac(a,b){if((a.google_unique_id||0)!=3D0||P(a.google_ad_format))return"";v=
ar =
c=3D"";a=3DO(a);if(b=3D=3D"html"||a)c=3DQ(["36815001","36815002"],H("0.01=
",0));if(c=3D=3D""&&(b=3D=3D"js"||a))c=3DQ(["36815003","36815004"],H("0.0=
1",0));if(c=3D=3D""&&(b=3D=3D"html"||b=3D=3D"js"))c=3DQ(["36813005","3681=
3006"],H("0.008",0));return c}=0A=
function Bc(){var =
a=3DZb(),b=3Dwindow.google_enable_osd,c=3D"";if(b=3D=3D=3Dg){c=3D"3681300=
6";Cc(c,a)}else =
if(b!=3D=3Dj&&pc(0)){c=3DAc(window,window.google_ad_output);if(c!=3D"")Cc=
(c,a);else c=3Da.getEid()}return c}function Cc(a,b){var =
c=3Db.getOsdMode(),d=3D[];switch(a){case =
"36815004":c=3D1;d=3D["js"];break;case =
"36815002":c=3D1;d=3D["html"];break;case =
"36813006":c=3D0;d=3D["html","js"];break}d.length>0&&b.setValidAdBlockTyp=
es(d);b.setupOsd(c,a,window.google_correlator)}=0A=
function Dc(a,b,c,d){var =
e=3Dvc(a);c=3Dwc({ifi:e},c);c=3Dc.substring(0,1992);c=3Dc.replace(/%\w?$/=
,"");var =
f=3D"script";if((a.google_ad_output=3D=3D"js"||a.google_ad_output=3D=3D"j=
son_html")&&(a.google_ad_request_done||a.google_radlink_request_done))b.w=
rite("<"+f+' language=3D"JavaScript1.1" =
src=3D'+$(k(c))+"></"+f+">");else =
if(a.google_ad_output=3D=3D"html")if(Z&&uc()){b=3Da.google_container_id||=
d||h;a["google_expandable_ad_slot"+e]=3DExpandableAdSlotFactory.createIfr=
ame("google_ads_frame"+e,k(c),a.google_ad_width,a.google_ad_height,=0A=
b)}else{e=3D'<iframe name=3D"google_ads_frame" =
width=3D'+$(a.google_ad_width)+" height=3D"+$(a.google_ad_height)+" =
frameborder=3D"+$(a.google_ad_frameborder)+" src=3D"+$(k(c))+' =
marginwidth=3D"0" marginheight=3D"0" vspace=3D"0" hspace=3D"0" =
allowtransparency=3D"true" =
scrolling=3D"no"></iframe>';a.google_container_id?Ec(a.google_container_i=
d,b,e):b.write(e)}return c}function Fc(a){Mb(a)}function =
Gc(a){if(!Hc())return j;var =
b=3Dzc();a=3DIc(a);b=3DXb(window)+Jc(a.google_ad_format,b);window.google_=
ad_url=3Dwc(a,b);return g}=0A=
var Mc=3Dfunction(a){a.dt=3Daa;var =
b=3Dwindow.google_prev_ad_formats_by_region,c=3Dwindow.google_ad_section,=
d=3Dwindow.google_ad_format,e=3Dwindow.google_ad_slot;if(b[c])if(!P(d)){a=
.prev_fmts=3Db[c];if(window.google_num_slots_by_client.length>1)a.slot=3D=
window.google_num_slots_by_client[R]}var =
f=3Dwindow.google_prev_ad_slotnames_by_region;if(f[c])a.prev_slotnames=3D=
f[c].toLowerCase();if(d){if(!P(d))if(b[c])b[c]+=3D","+d;else =
b[c]=3Dd}else if(e)if(f[c])f[c]+=3D","+e;else =
f[c]=3De;a.correlator=3Dwindow.google_correlator;if(window.google_new_dom=
ain_checked=3D=3D=0A=
1&&window.google_new_domain_enabled=3D=3D0)a.dblk=3D1;if(window.google_ad=
_channel){b=3Dwindow.google_num_slots_by_channel;c=3D"";d=3Dwindow.google=
_ad_channel.split(Kc);for(e=3D0;e<d.length;e++){f=3Dd[e];if(b[f])c+=3Df+"=
+";else =
b[f]=3D1}a.pv_ch=3Dc}if(window.google_ad_host_channel){b=3DLc(window.goog=
le_ad_host_channel,window.google_viewed_host_channels);a.pv_h_ch=3Db}if(Y=
a)a.jscb=3D1;if(Za)a.jscd=3D1;a.frm=3Dwindow.google_iframing;b=3DQb();a.g=
a_vid=3Db.vid;a.ga_sid=3Db.sid;a.ga_hid=3Db.hid;a.ga_fc=3Db.from_cookie;a=
.ga_wpids=3Dwindow.google_analytics_uacct},=0A=
Nc=3Dfunction(a){var =
b=3Dg;if(b=3Dnb(b)){a.biw=3Db.width;a.bih=3Db.height}};function =
Lc(a,b){var c=3Da.split("|");a=3D-1;for(var =
d=3D[],e=3D0;e<c.length;e++){var =
f=3Dc[e].split(Kc);b[e]||(b[e]=3D{});for(var =
i=3D"",m=3D0;m<f.length;m++){var =
t=3Df[m];if(t!=3D"")if(b[e][t])i+=3D"+"+t;else =
b[e][t]=3D1}i=3Di.slice(1);d[e]=3Di;if(i!=3D"")a=3De}b=3D"";if(a>-1){for(=
e=3D0;e<a;e++)b+=3Dd[e]+"|";b+=3Dd[a]}return b}=0A=
function Oc(){var a=3DBc();Y(a,0);var b=3DMath.random()<0.01;a=3Dh;var =
c=3D"";if(b){c=3D"google_temp_span";a=3DPc(c)}b=3DGc(a);a&&a.id=3D=3Dc&&(=
a&&a.parentNode?a.parentNode.removeChild(a):h);if(b){a=3DDc(window,docume=
nt,window.google_ad_url);Zb().registerAdBlockByType(window.google_ad_outp=
ut,a,j);Fc(window)}}var =
Qc=3Dfunction(a){M(pb,function(b,c){a[b]=3Dwindow[c]});M(ob,function(b,c)=
{a[b]=3Dwindow[c]});M(qb,function(b,c){a[b]=3Dwindow[c]})},Rc=3Dfunction(=
a){rc(window.google_eids,1);a.eid=3Dqc()};=0A=
function Sc(a,b,c,d){a=3DGb(a,b,c,d);sc(window,document);return =
a}function Tc(){Lb()}function Uc(a){var =
b=3D{};a=3Da.split("?");a=3Da[a.length-1].split("&");for(var =
c=3D0;c<a.length;c++){var =
d=3Da[c].split("=3D");if(d[0])try{b[d[0].toLowerCase()]=3Dd.length>1?wind=
ow.decodeURIComponent?decodeURIComponent(d[1].replace(/\+/g," =
")):unescape(d[1]):""}catch(e){}}return b}function Vc(){var =
a=3Dwindow,b=3DUc(document.URL);if(b.google_ad_override){a.google_ad_over=
ride=3Db.google_ad_override;a.google_adtest=3D"on"}}=0A=
function =
Ec(a,b,c){if(a)if((a=3Db.getElementById(a))&&c&&c.length!=3D""){a.style.v=
isibility=3D"visible";a.innerHTML=3Dc}}=0A=
var Jc=3Dfunction(a,b){return =
a=3DP(a)?"/pagead/sdo?":b?"/pagead/render_iframe_ads.html#":"/pagead/ads?=
"},Wc=3Dfunction(a,b){b.dff=3Djc(a);b.dfs=3Doc(a)},Xc=3Dfunction(a){a.ref=
=3Dwindow.google_referrer_url;a.loc=3Dwindow.google_page_location},Hc=3Df=
unction(){var =
a=3Dwindow.google_prev_ad_formats_by_region,b=3Dwindow.google_prev_ad_slo=
tnames_by_region,c=3Dwindow.google_ad_section;if(P(window.google_ad_forma=
t)){window.google_num_sdo_slots+=3D1;if(window.google_num_sdo_slots>4)ret=
urn j}else if(O(window)){window.google_num_0ad_slots+=3D=0A=
1;if(window.google_num_0ad_slots>3)return =
j}else{window.google_num_ad_slots+=3D1;if(window.google_num_slots_to_rota=
te){Ib(1);a[c]=3Dh;b[c]=3Dh;if(window.google_num_slot_to_show=3D=3Dh)wind=
ow.google_num_slot_to_show=3D(new =
Date).getTime()%window.google_num_slots_to_rotate+1;if(window.google_num_=
slot_to_show!=3Dwindow.google_num_ad_slots)return j}else =
if(window.google_num_ad_slots>6&&c=3D=3D"")return =
j}a=3Dwindow.google_num_slots_by_client;if(a[R])a[R]+=3D1;else{a[R]=3D1;a=
.length+=3D1}return g},Ic=3Dfunction(a){var b=3D{};Qc(b);=0A=
Mc(b);mb(b);a&&Wc(a,b);Nc(b);Rc(b);Xc(b);b.fu=3DHb;return =
b},Pc=3Dfunction(a){var =
b=3Dwindow.google_container_id&&Pa(window.google_container_id)||Pa(a);if(=
!b&&!window.google_container_id&&a){document.write("<span =
id=3D"+a+"></span>");b=3DPa(a)}return b},Kc=3D/[+, =
]/;window.google_render_ad=3DOc;var =
Yc=3D["30143070","30143071","30143075"],Zc=3Dtypeof =
window.postMessage=3D=3D"function"||typeof =
window.postMessage=3D=3D"object"||typeof =
document.postMessage=3D=3D"function",ad=3Dfunction(a,b){typeof =
A1_googleCreateSlot=3D=3D"function"?A1_googleCreateSlot(a.google_ad_clien=
t):$c(a,b)},cd=3Dfunction(){if(!bd())return j;return =
g},dd=3Dfunction(a){if(P(a.google_ad_format))return j;var =
b=3Da.google_ad_output;if(b&&b!=3D"html")return =
j;a=3Da.google_ad_client;if(typeof =
a!=3D"string"||a.substring(0,4)!=3D"pub-"&&a.substring(0,7)!=3D"ca-pub-")=
return j;=0A=
return g},fd=3Dfunction(a){if(typeof =
a.google_a1_eid=3D=3D"string")return a.google_a1_eid;var =
b=3DH("0",0);a.google_a1_eid=3Ded(Yc,b);return =
a.google_a1_eid},$c=3Dfunction(a,b){if(!a.google_included_a1_script){var =
c=3D"script",d=3D"/pagead/show_ads_sra3.js?v\x3d1";b.write("<"+c+' =
src=3D"http://'+L+d+'"></'+c+">");a.google_included_a1_script=3Dg}},bd=3D=
function(){if(E&&G("8"))return j;return Zc||!F},ed=3Dfunction(a,b){var =
c=3DMath.random();if(c<b){b=3DMath.floor(c/b*a.length);return =
a[b]}return""};function =
gd(){Vc();Eb("show_ads.google_init_globals",Sc,Tc);sc(window,document)}fu=
nction hd(){if(!cd(window)||!dd(window))gd();else =
if($a&&window.google_use_a1=3D=3D=3Dg)ad(window,document);else{var =
a=3Dfd(window);if(a){Y(a,0);window.google_allow_expandable_ads=3Dj}!a||a=3D=
=3D"30143070"?gd():ad(window,document)}}Eb("show_ads.main",Gb,hd);})()=0A=

------=_NextPart_000_0000_01CA6764.B652A320
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ads.cybacat.com/js/ads.js

function Cads() {	=0A=
	//this.xhrObjects =3D new Array();=0A=
	this.options =3D new Object();=0A=
	this.options.adZones =3D new Array();=0A=
	=0A=
	this.handleException =3D function(e) {=0A=
		alert(e);	=0A=
	}=0A=
	=0A=
	this.init =3D function () {=0A=
		for(var zIndex =3D 0; zIndex < this.options.adZones.length; zIndex++)=0A=
		{=0A=
			try {=0A=
				this.getAdverts(this.options.adZones[zIndex]);	=0A=
			}=0A=
			catch(e) {=0A=
				this.handleException(e);	=0A=
			}=0A=
		}=0A=
	}=0A=
	=0A=
	this.newXhr =3D function() {=0A=
		var xhr;=0A=
		=0A=
		if(typeof ActiveXObject !=3D "undefined") {=0A=
			xhr =3D new ActiveXObject("MSXML2.XMLHTTP");=0A=
			//alert(xhr);=0A=
		} else {=0A=
			xhr =3D new XMLHttpRequest();=0A=
		}=0A=
			=0A=
		return xhr;=0A=
	}=0A=
	=0A=
	this.getAdverts =3D function(zone) {=0A=
		//this.xhrObjects.push(this.newXhr());=0A=
		//var xhrIndex =3D this.xhrObjects.length -1;		=0A=
		var xhr =3D this.newXhr();//=3D this.xhrObjects[xhrIndex];=0A=
		var supor =3D this;=0A=
		xhr.onreadystatechange =3D function() {=0A=
			supor.requestStateChanged(xhr);=0A=
		};=0A=
		xhr.open("get", (typeof(this.options.xhrProxyAddress) =3D=3D =
'undefined' ? 'http://ads.cybacat.com/get/xml/' : =
this.options.xhrProxyAddress)+zone.zoneID, true);=0A=
		xhr.send("");=0A=
	}=0A=
=0A=
	this.requestStateChanged =3D function(xhr) {=0A=
		//alert("cads__requestStateChanged("+xhrIndex+")");=0A=
		=0A=
		if(xhr.readyState =3D=3D 4) {=0A=
			if(xhr.status=3D=3D200) {=0A=
				this.processAdverts(xhr);=0A=
			}=0A=
			else {=0A=
				//Something's  gone wrong!=0A=
				alert(xhr.responseText);=0A=
			}=0A=
		}=0A=
	}=0A=
	=0A=
	this.processAdverts =3D function(transport) {=0A=
		//try {=0A=
			var xml =3D transport.responseXML;=0A=
			var advertsTag =3D xml.getElementsByTagName("adverts")[0];=0A=
			var zoneId =3D xml.getElementsByTagName("zone_id")[0].firstChild.data;=0A=
			var zoneElement =3D document.getElementById("adzone_"+zoneId);=0A=
			if(zoneElement =3D=3D null) {=0A=
				//alert('Couldn\'t find '+"adzone_"+zoneId);=0A=
				return;=0A=
			}=0A=
			=0A=
			//need to find the local object for this zone.=0A=
			var zoneObj =3D null;=0A=
			var z =3D 0;=0A=
			do {=0A=
				if(this.options.adZones[z].zoneID =3D=3D  zoneId) zoneObj =3D =
this.options.adZones[z];=0A=
				z++;=0A=
			} while(zoneObj =3D=3D null && z < this.options.adZones.length)=0A=
			=0A=
			var adClass =3D (zoneObj =3D=3D null || (typeof zoneObj.className =
=3D=3D 'undefined')) ? '' : zoneObj.className;=0A=
			=0A=
			for(var i =3D 0; i < advertsTag.childNodes.length; i++)=0A=
			{=0A=
				if(advertsTag.childNodes[i].tagName !=3D "advert") continue;=0A=
				=0A=
				this.processAdvert(advertsTag.childNodes[i], zoneElement, adClass);=0A=
			}=0A=
		//}=0A=
		//catch(e) {=0A=
		//	this.handleException(e);	=0A=
		//}=0A=
	}=0A=
	=0A=
	this.processAdvert =3D function(advertTag, zoneElement, adClass) {=0A=
		//try {=0A=
				=0A=
			var contDiv =3D document.createElement("div");=0A=
			contDiv.className =3D adClass;=0A=
			zoneElement.appendChild(contDiv);=0A=
			=0A=
			switch(advertTag.getAttribute("type")) {=0A=
				case "image/gif":=0A=
				case "image/jpeg":=0A=
				case "image/png":=0A=
					var aTag =3D document.createElement("a");=0A=
					aTag.href =3D advertTag.getAttribute("href");=0A=
					aTag.target =3D "_blank";=0A=
					//aTag.style.position =3D "relative";=0A=
					contDiv.appendChild(aTag);=0A=
					this.processImageAdvert(advertTag, aTag);=0A=
				break;=0A=
				=0A=
				case "application/x-shockwave-flash":=0A=
					if(advertTag.getAttribute("href") !=3D null && =
advertTag.getAttribute("href").length > 0) {=0A=
						var aTag =3D document.createElement("a");=0A=
						aTag.href =3D advertTag.getAttribute("href");=0A=
						aTag.target =3D "_blank";=0A=
						aTag.style.position =3D "relative";=0A=
						contDiv.appendChild(aTag);=0A=
						this.processFlashAdvert(advertTag, aTag);=0A=
					}=0A=
					else this.processFlashAdvert(advertTag, contDiv);=0A=
				break;=0A=
				=0A=
				case "application/google-adsense":=0A=
					this.processAdsenseAdvert(advertTag, contDiv);=0A=
				break;	=0A=
			}=0A=
		//}=0A=
		//catch(e) {=0A=
		//	alert(zoneElement);=0A=
		//	this.handleException(e);	=0A=
		//}=0A=
	}=0A=
	=0A=
	this.processImageAdvert =3D function (advertTag, element) {=0A=
		var imgTag =3D document.createElement("img");=0A=
		imgTag.src =3D advertTag.getAttribute("src");=0A=
		imgTag.width =3D advertTag.getAttribute("width");=0A=
		imgTag.height =3D advertTag.getAttribute("height");=0A=
		imgTag.alt =3D (advertTag.getAttribute("alt") !=3D null) ? =
advertTag.getAttribute("alt") : "";=0A=
		imgTag.border =3D "0";=0A=
	=0A=
		element.appendChild(imgTag);=0A=
	}=0A=
	=0A=
	this.processFlashAdvert =3D function (advertTag, element) {=0A=
		/**=0A=
		* This was all hacked about from using DOM to=0A=
		* the dreaded innerHTML in several attempts to=0A=
		* solve issues with buggy flash elements not=0A=
		* propagating onclick events to the browser.=0A=
		*/		=0A=
		var html =3D "";=0A=
		if(element.tagName.toLowerCase() =3D=3D "a") html +=3D=0A=
		"<img src=3D\"http://ads.cybacat.com/images/transparent.gif\" \=0A=
			width=3D\""+advertTag.getAttribute("width")+"\" =
height=3D\""+advertTag.getAttribute("height")+"\" \=0A=
			border=3D\"0\" style=3D\"z-index:100; position:absolute;\" />";=0A=
		html +=3D =0A=
		"<object width=3D\""+advertTag.getAttribute("width")+"\" =
height=3D\""+advertTag.getAttribute("height")+"\" \=0A=
			=
codebase=3D\"http://download.macromedia.com/pub/shockwave/cabs/flash/swfl=
ash.cab#version=3D6,0,40,0\" \=0A=
			classid=3D\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" > \=0A=
			<param name=3D\"src\" value=3D\""+advertTag.getAttribute("src")+"\" =
/> \=0A=
			<param name=3D\"wmode\" value=3D\"opaque\" /> \=0A=
			\=0A=
			<embed src=3D\""+advertTag.getAttribute("src")+"\" =
width=3D\""+advertTag.getAttribute("width")+"\" =
height=3D\""+advertTag.getAttribute("height")+"\" \=0A=
				wmode=3D\"opaque\" type=3D\"application/x-shockwave-flash\" =
pluginspage=3D\"application/x-shockwave-flash\" /> \=0A=
		</object>";=0A=
		element.innerHTML +=3D html;=0A=
		=0A=
		//we need the <embed> or <object> element for the following=0A=
		//fallback code to work correctly.=0A=
		var fallbackParentTag =3D null;=0A=
		var eTags =3D element.getElementsByTagName("embed");=0A=
		var oTags =3D element.getElementsByTagName("object");=0A=
		if(eTags.length > 0) fallbackParentTag =3D eTags[0];=0A=
		else if(oTags.length > 0) fallbackParentTag =3D oTags[0];=0A=
		=0A=
		var fallbacks =3D advertTag.getElementsByTagName("advert");=0A=
		for(var fI =3D 0; fallbackParentTag !=3D null && fI < =
fallbacks.length; fI++)=0A=
		{=0A=
			try {=0A=
				this.processAdvert(fallbacks[fI], fallbackParentTag);=0A=
			}=0A=
			catch(e) {=0A=
				this.handleException(e);	=0A=
			}=0A=
		}=0A=
	}=0A=
	=0A=
	this.processAdsenseAdvert =3D function(advertTag, element) {=0A=
		if(document.referrer !=3D "http://www.teachingtimes.com/adtest.htm") =
return;=0A=
			=0A=
		var code =3D advertTag.getAttribute("code");=0A=
		code =3D code.replace(/&lt;/g, "<").replace(/&gt;/g, =
">").replace(/&quot;/g, '"');=0A=
		//alert(code);=0A=
		/**=0A=
		* Code can contain several <script> elements,=0A=
		* of the form :=0A=
		* <script type=3D"x">=0A=
		* some js;=0A=
		* more js;=0A=
		* </script>=0A=
		* or=0A=
		* <script type=3D"x" src=3D"url">/\w/</script>=0A=
		*/=0A=
		=
//<script\s*(type=3D"[a-z_/]+"\s*|src=3D"([a-z0-9_:/?$.-]+)"\s*){1,2}>\s*=
</script\s*>=0A=
		var linkMatcher =3D new =
RegExp(/<script\s*(?:type=3D"[a-z_\/]+"\s*|src=3D"([a-z0-9_:\/?$.-]+)"\s*=
){1,2}>\s*<\/script\s*>/g);=0A=
		var linkScripts =3D linkMatcher.exec(code);=0A=
			=0A=
		=
//<script\s*(?:type=3D"[a-z_/]+")?\s*>((?:[a-z0-9_/\\%^&$=A3)(><}{[\]!=3D=
*,;:"'-]|\s)+)</script\s*>=0A=
		var inlineMatcher =3D new =
RegExp(/<script\s*(?:type=3D"[a-z_\/]+")?\s*>((?:[a-z0-9_\/\\%^&$=A3)(><}=
{[\]!=3D*,;:"'-]|\s)+)<\/script\s*>/g);=0A=
		var inlineScripts =3D inlineMatcher.exec(code);=0A=
		=0A=
		for(var i =3D 1; i < inlineScripts.length; i++) {=0A=
			inlineScripts[i] =3D inlineScripts[i].replace(/^<!--.*$/igm, "");=0A=
			alert("Inline script:\n"+inlineScripts[i]);=0A=
			var scriptElem =3D document.createElement("script");=0A=
			scriptElem.type =3D "text/javascript";=0A=
			scriptElem.innerHTML =3D inlineScripts[i];		=0A=
			element.appendChild(scriptElem);=0A=
		}=0A=
		=0A=
		for(var i =3D 1; i < linkScripts.length; i++) {=0A=
			alert("Linked script: '"+linkScripts[i]+"'");=0A=
			var linkElem =3D document.createElement("script");=0A=
			linkElem.type =3D "text/javascript";				=0A=
			linkElem.src =3D linkScripts[i];			=0A=
			element.appendChild(linkElem);	=0A=
		}=0A=
	}=0A=
=0A=
}
------=_NextPart_000_0000_01CA6764.B652A320--
