From: Subject: Deep-sea drilling expedition seeks earthquake, tsunami causes (Nov. 8, 2007) Date: Thu, 8 Nov 2007 20:44:20 -0500 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C82248.2385CC60" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.news.wisc.edu/14202 =EF=BB=BF Deep-sea drilling = expedition seeks earthquake, tsunami causes (Nov. 8, 2007)

=20 =

UW-Madison = > News > Deep-sea drilling=20 expeditio...

Deep-sea drilling expedition seeks earthquake, tsunami causes

Nov. 8, 2007

by Jill Sakai =

Deep-sea drilling in the Nankai Trough =

UW-Madison geologist Harold Tobin = describes the=20 Nankai Trough deep-sea drilling project in this video produced by = the Integrated = Ocean Drilling=20 Program.

This is a video story that requires the Flash 8 or higher player = plugin. Download and = install=20 it.

Harold = Tobin is interested in deep scientific questions, whose answers lie=20 thousands of meters underwater.

The UW-Madison geologist studies deep oceanic earthquake faults, = which extend=20 miles into the Earth=E2=80=99s crust below the seafloor, to learn what = causes=20 earthquakes and tsunamis. Tobin is currently at sea aboard the Japanese = research=20 vessel Chikyu= ,=20 co-leading an international deep-sea drilling expedition to the Nankai = Trough, a=20 region off the southwest coast of Japan that is one of the most active=20 earthquake zones on the planet.

The expedition, part of the Nankai=20 Trough Seismogenic Zone Experiment (NanTroSEIZE), = marks the=20 first geologic study of these deep-sea faults, which have previously = been=20 inaccessible. Such faults are responsible for generating tsunamis, = including the=20 one that devastated Sumatra in December 2004.

The current expedition launched Sept. 21 and will continue through = Nov. 16.=20 Progress=20 reports and photos from the ship are available on the Web. =

Related story topics

More UW-Madison news

Go to the news front = page

Latest headlines

  • New test can curb losses of = potatoes in=20 storage
  • Health toll of climate change = seen as=20 ethical crisis
  • Computer scientist forges new = line of=20 defense against malicious traffic
  • Project = aims to=20 reduce risks of falls among the elderly
  • Wildfire drives carbon levels = in=20 northern forests
  • More =C2=BB =

Browse other stories

RSS feeds

For news media

=C2=A9 2007 Board of Regents of the University of Wisconsin System =

=0A= _uacct =3D "UA-2389964-5";=0A= urchinTracker();=0A= ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.news.wisc.edu/stylesheets/reset.css?1191008255 HTML { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } BODY { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } DIV { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } SPAN { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } APPLET { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } OBJECT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } H1 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } H2 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } H3 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } H4 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } H5 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } H6 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } P { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } BLOCKQUOTE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } PRE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } ABBR { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } ACRONYM { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } ADDRESS { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } BIG { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } CITE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } CODE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } DEL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } DFN { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } FONT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } IMG { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } INS { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } KBD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } Q { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } S { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } SAMP { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } SMALL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } STRIKE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } SUB { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } SUP { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } TT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } VAR { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } DD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } DL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } DT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } LI { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } OL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } UL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } FIELDSET { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } FORM { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } LABEL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } LEGEND { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } TABLE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } CAPTION { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } TBODY { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } TFOOT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } THEAD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } TR { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } TH { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } TD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; LINE-HEIGHT: = 1; PADDING-TOP: 0px; FONT-FAMILY: inherit; TEXT-ALIGN: left; = BORDER-RIGHT-WIDTH: 0px } :focus { outline: 0 } A IMG { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } :link IMG { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } :visited IMG { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } TABLE { BORDER-COLLAPSE: collapse; border-spacing: 0 } OL { LIST-STYLE-TYPE: none } UL { LIST-STYLE-TYPE: none } Q:unknown { content: "" } Q:unknown { content: "" } BLOCKQUOTE:unknown { content: "" } BLOCKQUOTE:unknown { content: "" } CITE { FONT-STYLE: italic } ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.news.wisc.edu/stylesheets/news-global-elements.css?1183047938 BODY { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 82%; PADDING-BOTTOM: = 0px; MARGIN: 0px; COLOR: #333; LINE-HEIGHT: 1.4; PADDING-TOP: 0px; = FONT-FAMILY: verdana, arial, "sans serif"; BACKGROUND-COLOR: #f4f4f4 } A { COLOR: #be070c; TEXT-DECORATION: none } A:hover { COLOR: #c90 } A:visited { COLOR: #964a4c } ABBR { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } ACRONYM { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } #page { BORDER-RIGHT: #fafafa 4px solid; BORDER-TOP: #fafafa 4px solid; MARGIN: = 10px auto 0px; BORDER-LEFT: #fafafa 4px solid; WIDTH: 830px; = BORDER-BOTTOM: #fafafa 4px solid; BACKGROUND-COLOR: #fff } #header { BACKGROUND: url(/images/banner-bg.gif) no-repeat 0px 0px; WIDTH: 100%; = HEIGHT: 65px } #header #title { Z-INDEX: 100; BACKGROUND: url(/images/crest.png) no-repeat 0px 11px; = LEFT: 50%; MARGIN: 0px 0px 0px -405px; WIDTH: 65px; POSITION: absolute; = TOP: 10px; HEIGHT: 78px } #header #title A { DISPLAY: block; WIDTH: 220px; HEIGHT: 50px } #header H1 { BACKGROUND: url(/images/title.gif) no-repeat 0px 0px; MARGIN: 10px 0px = 0px 47px; WIDTH: 220px; HEIGHT: 50px } #header H1 SPAN { LEFT: -1000px; POSITION: absolute; TOP: -140px } #search { BORDER-RIGHT: 0px solid; BORDER-TOP: 0px solid; RIGHT: 50%; = BORDER-LEFT: 0px solid; MARGIN-RIGHT: -400px; BORDER-BOTTOM: 0px solid; = POSITION: absolute; TOP: 35px; TEXT-ALIGN: right } #search P { MARGIN: 0px } #search INPUT { FONT-SIZE: 0.9em } #search #term { PADDING-RIGHT: 0.1em; PADDING-LEFT: 0.1em; PADDING-BOTTOM: 0.1em; = PADDING-TOP: 0.1em } #search #go { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } .video { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; BACKGROUND: = url(/images/video.gif) no-repeat left 2px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } .video A { DISPLAY: block; PADDING-LEFT: 20px } .video STRONG { DISPLAY: block; PADDING-LEFT: 20px } #story P.video { MARGIN-BOTTOM: 0px } #content .audio { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; BACKGROUND: = url(/images/volume_high.gif) no-repeat left 2px; PADDING-BOTTOM: 0px; = MARGIN: 0px; PADDING-TOP: 0px } #content #sideBar UL + P.audio { MARGIN-TOP: 2em } #content .nolink.audio { PADDING-LEFT: 20px } #content .audio A { DISPLAY: block; PADDING-LEFT: 20px } #content .mp3player { MARGIN-LEFT: 20px } .mapBug { BACKGROUND: url(http://www.uc.wisc.edu/images/mapBug.gif) no-repeat = right 50%; WHITE-SPACE: nowrap } .mapBug A { PADDING-RIGHT: 18px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px 2px 0px 0px; PADDING-TOP: 0px } ACRONYM { CURSOR: help; BORDER-TOP-STYLE: none; FONT-STYLE: normal; = BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: = none } ABBR { CURSOR: help; BORDER-TOP-STYLE: none; FONT-STYLE: normal; = BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: = none } DFN { CURSOR: help; BORDER-TOP-STYLE: none; FONT-STYLE: normal; = BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: = none } ABBR.initialism { speak: spell-out } ACRONYM { speak: normal } ABBR.truncation { speak: normal } #footer { BACKGROUND: url(/images/banner-bg.gif) no-repeat 0px 0px; HEIGHT: 3.5em } #footer P#copyright { PADDING-RIGHT: 0px; PADDING-LEFT: 1em; FLOAT: left; PADDING-BOTTOM: = 0px; PADDING-TOP: 1.3em } #footer P { PADDING-RIGHT: 1em; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: = 0.85em; FLOAT: right; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; = PADDING-TOP: 1.3em } #footer P A { COLOR: #fff } .sleeve { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 15px; = PADDING-TOP: 15px } DIV#uc { TEXT-TRANSFORM: uppercase; COLOR: #777 } .mouseOver { CURSOR: pointer } .mouseOut { CURSOR: default } .hide { DISPLAY: none } .clearfix:unknown { CLEAR: both; DISPLAY: block; FONT-SIZE: 0px; VISIBILITY: hidden; = HEIGHT: 0px; content: "." } ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.news.wisc.edu/stylesheets/story.css?1190771696 #header #siteTitle { BACKGROUND: url(/images/title.gif) no-repeat 0px 0px; MARGIN: 10px 0px = 0px 47px; WIDTH: 220px; HEIGHT: 50px } #header #siteTitle SPAN { LEFT: -1000px; POSITION: absolute; TOP: -140px } #content { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px = solid; PADDING-LEFT: 0px; MIN-HEIGHT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; BORDER-LEFT: #ccc 0px solid; WIDTH: 100%; PADDING-TOP: 0px; = BORDER-BOTTOM: #ccc 0px solid } #leftCol { BACKGROUND: none transparent scroll repeat 0% 0% } #rightCol { BACKGROUND: none transparent scroll repeat 0% 0% } #leftCol { FLOAT: left; WIDTH: 590px; PADDING-TOP: 10px } #rightCol { FLOAT: left; WIDTH: 240px; PADDING-TOP: 7em } #content #breadcrumbs { FONT-SIZE: 0.9em; MARGIN: 3px 1em 0pt 0pt; TEXT-ALIGN: right } #related .sleeve { PADDING-RIGHT: 25px; PADDING-LEFT: 15px; PADDING-BOTTOM: 15px; = PADDING-TOP: 0px } #related LI EM { FONT-SIZE: 0.8em; COLOR: #7286a5; FONT-STYLE: normal; FONT-FAMILY: = verdana, arial sans-serif } #related LI SPAN.date { FONT-SIZE: 0.8em; COLOR: #7286a5; FONT-STYLE: normal; FONT-FAMILY: = verdana, arial sans-serif } #related A:hover { COLOR: #c90; BORDER-BOTTOM: #ababab 1px dotted } #related UL LI A:hover { COLOR: #c90; BORDER-BOTTOM: #ababab 1px dotted } #related P#archives { FONT-SIZE: 1em; MARGIN: 1em 0px 0px } #related P#rss { PADDING-RIGHT: 0px; PADDING-LEFT: 20px; FONT-SIZE: 1em; BACKGROUND: = url(http://www.news.wisc.edu/rss/images/feed_icon_16x16.gif) no-repeat = left 50%; PADDING-BOTTOM: 0px; MARGIN: 1.4em 0px 0.5em; LINE-HEIGHT: = 16px; PADDING-TOP: 0px } #related H2 { FONT-WEIGHT: normal; FONT-SIZE: 1em; MARGIN: 0px; TEXT-TRANSFORM: = uppercase; LETTER-SPACING: 1px } #related H3 { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-WEIGHT: = normal; FONT-SIZE: 0.9em; PADDING-BOTTOM: 0.4em; MARGIN: 0em 0px 0.5em; = TEXT-TRANSFORM: uppercase; COLOR: #444; LINE-HEIGHT: 1.2; PADDING-TOP: = 0.4em; FONT-FAMILY: verdana, arial, sans-serif } #related H3:first-child { MARGIN-TOP: 1em } #related H3#explore { FONT-SIZE: 1.1em; MARGIN: 0em 0px 0px } #content #related H4 { FONT-WEIGHT: normal; FONT-SIZE: 0.95em; MARGIN: 1.5em 0px 0px; COLOR: = #333 } #content #related #siteBox H3 + H4 { MARGIN-TOP: 1em } #related UL LI EM { FONT-SIZE: 0.8em; COLOR: #7286a5; FONT-STYLE: normal } #related UL.headline LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 1em; LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } #related UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 4px = 0px 0px; PADDING-TOP: 0px } #related UL LI { MARGIN: 0px 0px 1em; LINE-HEIGHT: 1.2; LIST-STYLE-TYPE: none } #related UL LI SPAN.headline { FONT-FAMILY: verdana, arial sans-serif } #related UL LI SPAN.headline A { LINE-HEIGHT: 1.2 } #related UL.inline LI { MARGIN-BOTTOM: 4px } #related UL.inline LI { FONT-SIZE: 0.95em; MARGIN-LEFT: 1em; LIST-STYLE-TYPE: square } #related UL#archives LI { FONT-SIZE: 0.95em; MARGIN-LEFT: 1em; LIST-STYLE-TYPE: square } #related #menuLeft UL LI { FONT-SIZE: 0.95em; MARGIN-LEFT: 1em; LIST-STYLE-TYPE: square } #related #menuRight UL LI { FONT-SIZE: 0.95em; MARGIN-LEFT: 1em; LIST-STYLE-TYPE: square } #related A:hover { COLOR: #c90; BORDER-BOTTOM: #ababab 1px dotted } #menu UL LI A:hover { COLOR: #c90; BORDER-BOTTOM: #ababab 1px dotted } #siteBox { BORDER-RIGHT: #e3c8a6 2px dotted; PADDING-RIGHT: 1em; BORDER-TOP: = #e3c8a6 2px dotted; PADDING-LEFT: 1em; BACKGROUND: = url(/images/stripes3.gif) 0pt 50%; PADDING-BOTTOM: 1em; MARGIN: 30px 0px = 0px; BORDER-LEFT: #e3c8a6 2px dotted; PADDING-TOP: 1em; BORDER-BOTTOM: = #e3c8a6 2px dotted } #related #siteBox UL LI { MARGIN: 0px 0px 4px 1.2em } #related #siteBox UL.headline LI { MARGIN: 0px 0px 1em } #content .sleeve#story { PADDING-RIGHT: 30px; PADDING-LEFT: 15px; PADDING-BOTTOM: 15px; = PADDING-TOP: 20px } #content P A:hover { TEXT-DECORATION: none } #content H1 { FONT-WEIGHT: bold; FONT-SIZE: 1.5em; MARGIN: 0px 0px 0.65em; = TEXT-TRANSFORM: none; LINE-HEIGHT: 1.2; FONT-FAMILY: georgia, serif } #content H2 { FONT-SIZE: 1.2em; MARGIN: 1.5em 0px 1em; LINE-HEIGHT: 1.3 } #content H2 { FONT-WEIGHT: bold; TEXT-TRANSFORM: none } #content H3 { FONT-WEIGHT: bold; TEXT-TRANSFORM: none } #content H3 { FONT-SIZE: 14px; MARGIN-BOTTOM: 0px } #content #sideBar H3 { MARGIN-TOP: 10px; MARGIN-BOTTOM: 0px } #content #sideBar H2 { MARGIN: 0px 0px 1em } #content P { FONT-SIZE: 1.1em; MARGIN: 0px 0px 1em; LINE-HEIGHT: 1.5 } #content #story UL LI { FONT-SIZE: 1.1em; MARGIN: 0px 0px 1em; LINE-HEIGHT: 1.5 } #content #story OL LI { FONT-SIZE: 1.1em; MARGIN: 0px 0px 1em; LINE-HEIGHT: 1.5 } #content #story UL LI { MARGIN: 0px 0px 1em 1em; LIST-STYLE-TYPE: disc } #content #story OL LI { MARGIN: 0px 0px 1em 1.5em; LIST-STYLE-TYPE: decimal } #content #story BLOCKQUOTE { MARGIN-LEFT: 3em } #content P IMG { BORDER-RIGHT: #666 1px solid; BORDER-TOP: #666 1px solid; BORDER-LEFT: = #666 1px solid; BORDER-BOTTOM: #666 1px solid } #content #storyDate { FONT-WEIGHT: bold; FONT-SIZE: 0.9em; COLOR: #777777 } #content #author { FONT-SIZE: 0.9em } #content #author A { BORDER-BOTTOM: #ffffff 0px solid } #sideBar { BORDER-RIGHT: #abcebd 2px dotted; PADDING-RIGHT: 15px; BORDER-TOP: = #abcebd 2px dotted; PADDING-LEFT: 15px; FONT-SIZE: 1em; FLOAT: right; = PADDING-BOTTOM: 15px; MARGIN: 0px 0px 20px 20px; BORDER-LEFT: #abcebd = 2px dotted; WIDTH: 175px; LINE-HEIGHT: 1.3em; PADDING-TOP: 15px; = BORDER-BOTTOM: #abcebd 2px dotted; BACKGROUND-COLOR: #fefefe } #sideBar IMG { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; = BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid } #sideBar P A.sideBarImageLink:link { BORDER-RIGHT: #900 0px solid; BORDER-TOP: #900 0px solid; BORDER-LEFT: = #900 0px solid; BORDER-BOTTOM: #900 0px solid } #sideBar #moreInfo { MARGIN-BOTTOM: 15px } #content #sideBar P { LINE-HEIGHT: 1.2 } #content #sideBar IMG { LINE-HEIGHT: 1.2 } #content #sideBar P { FONT-SIZE: 1em; LINE-HEIGHT: 1.3 } #content #sideBar P.caption { =09 } #content #story #sideBar UL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: = 0px; MARGIN: 0px 0px 8px 14px; LINE-HEIGHT: 1.3; PADDING-TOP: 0px } #content .mainCaption { MARGIN-TOP: -15px; FONT-SIZE: 11px; COLOR: #000000; LINE-HEIGHT: 13px } #content .photoByLine { MARGIN-TOP: 0px; FONT-SIZE: 0.9em; LINE-HEIGHT: 13px } #content .inBodyHeadshot { PADDING-RIGHT: 10px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; PADDING-TOP: 5px } #content .inBodyHeadshot P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } #content P#backToWW { CLEAR: both } #content P#backToWW A { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } #sideBar .book { BORDER-TOP-WIDTH: 0px! important; BORDER-LEFT-WIDTH: 0px! important; = BORDER-BOTTOM-WIDTH: 0px! important; BORDER-RIGHT-WIDTH: 0px! important } .pullQuote { PADDING-RIGHT: 0px; BORDER-TOP: #990000 1px solid; PADDING-LEFT: 0px; = FONT-SIZE: 1.3em; FLOAT: right; PADDING-BOTTOM: 1em; MARGIN: 0px 0px 2em = 2em; WIDTH: 45%; COLOR: #990000; PADDING-TOP: 1em; BORDER-BOTTOM: = #990000 1px solid; TEXT-ALIGN: center } #content .pullQuote P.quote { MARGIN: 0px; LINE-HEIGHT: 1.3; FONT-FAMILY: georgia, serif } #content #pullQuoteAuthor { MARGIN-TOP: 0.5em; FONT-SIZE: 0.75em; COLOR: #444; TEXT-ALIGN: left } .photoBlockRight370 { PADDING-RIGHT: 0px; PADDING-LEFT: 40px; FLOAT: right; PADDING-BOTTOM: = 0px; MARGIN: 0px; WIDTH: 370px; PADDING-TOP: 8px } .photoBlockRight370 P IMG { MARGIN-TOP: 1em } .photoBlockRight370 P:first-child IMG { MARGIN-TOP: 0em } .photoBlockLeft370 { PADDING-RIGHT: 20px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px; WIDTH: 370px; PADDING-TOP: 0px } #content .photoBlockRight370 H4 { FONT-SIZE: 1em } #content .photoBlockRight370 UL LI { FONT-SIZE: 11px; MARGIN-BOTTOM: 0.4em; LINE-HEIGHT: 1.1 } #content #wideSide { BORDER-RIGHT: #ababab 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: = #ababab 1px solid; PADDING-LEFT: 10px; FLOAT: right; PADDING-BOTTOM: = 0px; MARGIN-LEFT: 50px; BORDER-LEFT: #ababab 1px solid; WIDTH: 220px; = MARGIN-RIGHT: 20px; PADDING-TOP: 0px; BORDER-BOTTOM: #ababab 1px solid } #content #wideSide P { FONT-SIZE: 11px; LINE-HEIGHT: 15px } #content #wideSide IMG { BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-LEFT: = #000 1px solid; BORDER-BOTTOM: #000 1px solid } #content .headshotRight { PADDING-RIGHT: 0px; PADDING-LEFT: 20px; FLOAT: right; PADDING-BOTTOM: = 10px; WIDTH: 100px; PADDING-TOP: 0px } #content .headshotLeft { CLEAR: both; PADDING-RIGHT: 10px; PADDING-LEFT: 0px; FLOAT: left; = PADDING-BOTTOM: 10px; WIDTH: 100px; PADDING-TOP: 0px } #content IMG.headshotNoCaption { FLOAT: left; MARGIN: 0.4em 1em 1em 0px } #content .flashvideo { MARGIN: 0px 0px 1em 15px } #content #story UL.tight { MARGIN: -1em 0px 1em } #content #story UL.tight LI { MARGIN: 0px 0px 0px 1em } #content DIV.inline-content { =09 } #content DIV.photo IMG { =09 } #content DIV.right { FLOAT: right; MARGIN: 0.5em 0px 0px 3em } #content DIV.left { FLOAT: left; MARGIN: 0.5em 2em 0px 0px } #content DIV.inline-content P.mainCaption { MARGIN-TOP: 0px; FONT-SIZE: 0.9em; COLOR: #444; LINE-HEIGHT: 1.2 } #content DIV.inline-content P.photoByLine { MARGIN-TOP: 0px } #content DIV.span.inline-content { MARGIN: 2em 0px } #content DIV.pull-quote.inline-content { PADDING-RIGHT: 0px; BORDER-TOP: #990000 1px solid; PADDING-LEFT: 0px; = FONT-SIZE: 1.3em; BACKGROUND: none transparent scroll repeat 0% 0%; = MARGIN-BOTTOM: 1em; PADDING-BOTTOM: 1em; WIDTH: 45%; COLOR: #990000; = PADDING-TOP: 1em; BORDER-BOTTOM: #990000 1px solid } #content DIV.pull-quote P.quote { MARGIN: 0px; LINE-HEIGHT: 1.3; FONT-FAMILY: georgia, serif } #content DIV.pull-quote P.quotee { FONT-SIZE: 0.75em; MARGIN: 0.5em 0px 0px; COLOR: #444; TEXT-ALIGN: left } #content #wls-timeline { BORDER-RIGHT: #4a6705 4px double; PADDING-RIGHT: 1em; BORDER-TOP: = #4a6705 4px double; PADDING-LEFT: 1em; PADDING-BOTTOM: 1em; BORDER-LEFT: = #4a6705 4px double; PADDING-TOP: 1em; BORDER-BOTTOM: #4a6705 4px double; = BACKGROUND-COLOR: #eff4e2 } #content #wls-timeline H2 { MARGIN-TOP: 0px } #content P.wls-reference { COLOR: #4a6705; FONT-STYLE: italic } #content P SPAN.wls-date { FONT-WEIGHT: bold } #content #wls-timeline IMG { BORDER-RIGHT: #444 1px solid; BORDER-TOP: #444 1px solid; FLOAT: right; = MARGIN: 0px 0px 1em 1em; BORDER-LEFT: #444 1px solid; BORDER-BOTTOM: = #444 1px solid } #content H2#first-person-impressions { FONT-SIZE: 1.4em; COLOR: #ddb55b; FONT-FAMILY: georgia, serif } #content DIV.first-person-wibus { BORDER-RIGHT: #ededed 6px double; PADDING-RIGHT: 1em; BORDER-TOP: = #ededed 6px double; PADDING-LEFT: 1em; MARGIN-BOTTOM: 2em; = PADDING-BOTTOM: 1em; BORDER-LEFT: #ededed 6px double; PADDING-TOP: 1em; = BORDER-BOTTOM: #ededed 6px double } #content DIV.first-person-wibus H3 { FONT-SIZE: 1.3em; MARGIN-BOTTOM: 0.4em } #content #pageNav { PADDING-RIGHT: 0.2em; BORDER-TOP: #ababab 1px solid; PADDING-LEFT: = 0.2em; FONT-SIZE: 0.9em; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: = 0px; BORDER-BOTTOM: #ababab 1px solid; BACKGROUND-COLOR: #f5f5f5; = TEXT-ALIGN: left } #pageNav A { PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #c-list H1 { FONT-STYLE: italic; FONT-FAMILY: verdana, sans-serif } #c-list H1 SPAN { DISPLAY: block; FONT-WEIGHT: normal; FONT-SIZE: 0.6em; FONT-STYLE: = normal } #c-list H2 { FONT-SIZE: 1.1em; MARGIN: 0px 0px 1em } #c-list #content P#count { FONT-SIZE: 0.9em; MARGIN: -1em 0px 1em } #c-list #content P#count IMG { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 3px; PADDING-LEFT: 1em; = BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; = VERTICAL-ALIGN: text-top; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px } #c-list #content .sleeve#story { PADDING-RIGHT: 20px; PADDING-TOP: 10px } #c-list #leftCol { WIDTH: 560px; PADDING-TOP: 0px } #c-list #rightCol { WIDTH: 250px; PADDING-TOP: 4em } #c-list #rightCol #related { BORDER-RIGHT: #c90 1px dotted; BORDER-TOP: #c90 1px dotted; BACKGROUND: = url(/images/stripes-story.gif) repeat-y 0px 0px; BORDER-LEFT: #c90 1px = dotted; BORDER-BOTTOM: #c90 1px dotted } #c-list #rightCol #related .sleeve { PADDING-TOP: 1em } #c-list #content #related LI { FONT-SIZE: 0.95em; LINE-HEIGHT: 1.4 } #c-list #content #related LI A { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; COLOR: #900; BORDER-RIGHT-WIDTH: 0px } UL.events SPAN.description { DISPLAY: block; FONT-SIZE: 0.95em; MARGIN: 0.3em 0px 0px; LINE-HEIGHT: = 1.3 } #content UL.storyIndex { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 2em 0px 0px; PADDING-TOP: 0px } #content #story UL.storyIndex LI { CLEAR: both; MARGIN: 0px 0px 1.5em; LINE-HEIGHT: 1.4; LIST-STYLE-TYPE: = none } #content UL.storyIndex SPAN { =09 } #content UL.storyIndex SPAN.headline { FONT-SIZE: 1.1em; LINE-HEIGHT: 1.2 } #content UL.storyIndex SPAN.date { DISPLAY: block; FONT-SIZE: 0.8em; MARGIN: 0.2em 0pt 0.4em; COLOR: #c90; = LINE-HEIGHT: 1; FONT-STYLE: italic } #content UL.storyIndex SPAN.description { DISPLAY: block; FONT-SIZE: 0.95em; LINE-HEIGHT: 1.25 } #content UL.storyIndex IMG { BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: = #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid } #content UL.storyIndex IMG.noBorder { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } #content IMG.noBorder { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } #content #sideBar IMG.noBorder { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } #content UL.storyIndex IMG.thumbLeft { FLOAT: left; MARGIN: 0.3em 1em 0.3em 0px } #c-list #searchResults { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #c-list #searchResults LI { MARGIN: 0px 0px 1em; LINE-HEIGHT: 1.2; LIST-STYLE-TYPE: none } #c-list #searchResults LI .date { DISPLAY: block; FONT-SIZE: 0.8em; COLOR: #c90 } BODY.generic #content #rightCol { PADDING-TOP: 0em } BODY.generic #related H3#explore { FONT-SIZE: 1.3em; MARGIN: 0px } BODY.generic #leftCol { WIDTH: 620px } BODY.generic #rightCol { WIDTH: 210px } ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.news.wisc.edu/stylesheets/print.css?1178293547 BODY { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; FONT: 12px/19px "Lucida Grande", "Lucida Sans Unicode", Verdana, = "sans serif"; PADDING-TOP: 0px } H1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } H2 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } H3 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } H4 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } H5 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } H6 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } A { COLOR: #900; TEXT-DECORATION: none } #page { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; WIDTH: auto; BORDER-RIGHT-WIDTH: 0px } #header { BACKGROUND: none transparent scroll repeat 0% 0% } #header #title { BACKGROUND: none transparent scroll repeat 0% 0% } #header H1 { BACKGROUND: none transparent scroll repeat 0% 0% } #header { HEIGHT: auto } #header #title { MARGIN-TOP: 0px; FONT-SIZE: 24px; MARGIN-BOTTOM: 5px; MARGIN-LEFT: 0px; = COLOR: #000; LINE-HEIGHT: 1.1em; FONT-FAMILY: trajan, serif; POSITION: = static } #header #title { MARGIN: 0px; WIDTH: 100%; HEIGHT: auto } #header H1 { MARGIN: 0px; WIDTH: 100%; HEIGHT: auto } #header #title A { =09 } #header H1 SPAN { POSITION: static } #content { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; MARGIN-LEFT: 0px; WIDTH: auto; BORDER-RIGHT-WIDTH: 0px } #content .sleeve#story { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #leftCol { WIDTH: 100% } #search { DISPLAY: none } #breadcrumbs { DISPLAY: none } #rightCol { DISPLAY: none } #footer P { DISPLAY: none } #footer { BORDER-TOP-WIDTH: 0px; CLEAR: both; BORDER-LEFT-WIDTH: 0px; BACKGROUND: = none transparent scroll repeat 0% 0%; BORDER-BOTTOM-WIDTH: 0px; HEIGHT: = auto; BORDER-RIGHT-WIDTH: 0px } #footer P#copyright { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0pt; DISPLAY: block; = PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; FLOAT: none; = BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0pt; PADDING-TOP: 1.3em; = BORDER-RIGHT-WIDTH: 0px } #content H1 { FONT-SIZE: 20px; FONT-FAMILY: georgia, sans } #content H2#siteTitle { MARGIN-TOP: 20px! important; FONT-SIZE: 12px! important; MARGIN-BOTTOM: = 0px! important; PADDING-BOTTOM: 0px! important; TEXT-TRANSFORM: = uppercase; COLOR: #777777 } #content H2 { MARGIN-TOP: 5px! important; FONT-SIZE: 24px; TEXT-TRANSFORM: none; = LINE-HEIGHT: 1.2em } #content H3 { MARGIN-TOP: 5px! important; FONT-SIZE: 20px; TEXT-TRANSFORM: none; = LINE-HEIGHT: 1.2em } #content H4 { MARGIN-TOP: 30px; FONT-SIZE: 16px } #content H4 { TEXT-TRANSFORM: none } #content H5 { TEXT-TRANSFORM: none } #content H5 { FONT-SIZE: 14px; MARGIN-BOTTOM: -18px } #content P { FONT-SIZE: 15px; LINE-HEIGHT: 1.5em } #content #storyDate { FONT-SIZE: 11px; MARGIN: 0px; COLOR: #777777 } #content #author { FONT-SIZE: 11px } #content #author A { BORDER-BOTTOM: #ffffff 0px solid } A { COLOR: #000 } #sideBar { BORDER-RIGHT: #cc9900 1px solid; PADDING-RIGHT: 15px; BORDER-TOP: = #cc9900 1px solid; PADDING-LEFT: 15px; FONT-SIZE: 1em; FLOAT: right; = PADDING-BOTTOM: 15px; MARGIN: 40px 0px 20px 20px; BORDER-LEFT: #cc9900 = 1px solid; WIDTH: 220px; LINE-HEIGHT: 1.3em; PADDING-TOP: 15px; = BORDER-BOTTOM: #cc9900 1px solid; BACKGROUND-COLOR: #fbf4ea } #sideBar IMG { BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; = BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid } #sideBar #moreInfo { MARGIN-BOTTOM: 15px } #furtherReading { MARGIN-TOP: 5px } #furtherReading UL { MARGIN-LEFT: 15px } #furtherReading UL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 5px = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: square! important } #content #sideBar P { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; = PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 1em; = PADDING-TOP: 0px! important } #content #sideBar IMG { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; = PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 1em; = PADDING-TOP: 0px! important } #content #sideBar P { FONT-SIZE: 1em; LINE-HEIGHT: 1.3em; PADDING-TOP: 10px! important } #content #sideBar P.caption { PADDING-BOTTOM: 5px! important; PADDING-TOP: 0px! important } #content #sideBar LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: = 0px; MARGIN: 0px 0px 8px 14px; PADDING-TOP: 0px } #content .mainCaption { MARGIN-TOP: -15px; FONT-SIZE: 11px; COLOR: #000000; LINE-HEIGHT: 13px } #content .inBodyHeadshot { PADDING-RIGHT: 10px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; PADDING-TOP: 5px } #content .inBodyHeadshot P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } #content UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #content UL LI { CLEAR: none; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 15px; = PADDING-BOTTOM: 0px; MARGIN: 0px 0px 15px 20px; LINE-HEIGHT: 1.5em; = PADDING-TOP: 0px; LIST-STYLE-TYPE: disc } #sideBar .book { BORDER-TOP-WIDTH: 0px! important; BORDER-LEFT-WIDTH: 0px! important; = BORDER-BOTTOM-WIDTH: 0px! important; BORDER-RIGHT-WIDTH: 0px! important } .pullQuote { BORDER-TOP: #990000 1px solid; FONT-SIZE: 16px; FLOAT: right; = PADDING-BOTTOM: 8px; MARGIN: 0px 0px 5px 10px; WIDTH: 45%; COLOR: = #990000; PADDING-TOP: 8px; BORDER-BOTTOM: #990000 1px solid; TEXT-ALIGN: = center } #pullQuoteAuthor { FONT-SIZE: 13px! important; TEXT-ALIGN: right } .hide { DISPLAY: none } H1 SPAN.hide { DISPLAY: block } #footer { CLEAR: both; PADDING-RIGHT: 15px; BORDER-TOP: #000 1px solid; = PADDING-LEFT: 15px; FONT-SIZE: 0.85em; PADDING-BOTTOM: 3px; LINE-HEIGHT: = 1.27em; PADDING-TOP: 3px; TEXT-ALIGN: center } #footer H2 { DISPLAY: none } #footer H3 { DISPLAY: none } #footer P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #footer UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } #footer UL LI { DISPLAY: inline; MARGIN: 0px 10px; FONT-STYLE: normal; LIST-STYLE-TYPE: = none } #footer ADDRESS { DISPLAY: inline; MARGIN: 0px 10px; FONT-STYLE: normal; LIST-STYLE-TYPE: = none } .invisible { VISIBILITY: hidden } #content UL LI.more { DISPLAY: none } ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.news.wisc.edu/stylesheets/glider.css?1185475504 DIV#slideshow { MARGIN-BOTTOM: 2em } DIV.scroller { BORDER-RIGHT: #cccccc 0px solid; BORDER-TOP: #cccccc 0px solid; = MARGIN-BOTTOM: 0.7em; OVERFLOW: hidden; BORDER-LEFT: #cccccc 0px solid; = WIDTH: 550px; BORDER-BOTTOM: #cccccc 0px solid; HEIGHT: auto } DIV.scroller DIV.section { OVERFLOW: hidden; WIDTH: 550px; LINE-HEIGHT: 1.2; HEIGHT: auto } DIV.scroller DIV.test.section { FLOAT: left } DIV.scroller DIV.content { WIDTH: 10000px } DIV#slideshow-controls { TEXT-ALIGN: center } DIV.section IMG { BORDER-RIGHT: #444 1px solid; BORDER-TOP: #444 1px solid; BORDER-LEFT: = #444 1px solid; BORDER-BOTTOM: #444 1px solid } ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.news.wisc.edu/javascripts/prototype.js?1174745057 /* Prototype JavaScript framework, version 1.5.0=0A= * (c) 2005-2007 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://prototype.conio.net/=0A= *=0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Prototype =3D {=0A= Version: '1.5.0',=0A= BrowserFeatures: {=0A= XPath: !!document.evaluate=0A= },=0A= =0A= ScriptFragment: '(?:)((\n|\r|.)*?)(?:<\/script>)',=0A= emptyFunction: function() {},=0A= K: function(x) { return x }=0A= }=0A= =0A= var Class =3D {=0A= create: function() {=0A= return function() {=0A= this.initialize.apply(this, arguments);=0A= }=0A= }=0A= }=0A= =0A= var Abstract =3D new Object();=0A= =0A= Object.extend =3D function(destination, source) {=0A= for (var property in source) {=0A= destination[property] =3D source[property];=0A= }=0A= return destination;=0A= }=0A= =0A= Object.extend(Object, {=0A= inspect: function(object) {=0A= try {=0A= if (object =3D=3D=3D undefined) return 'undefined';=0A= if (object =3D=3D=3D null) return 'null';=0A= return object.inspect ? object.inspect() : object.toString();=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=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= =0A= Function.prototype.bind =3D function() {=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= Function.prototype.bindAsEventListener =3D function(object) {=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).concat($A(arguments)));=0A= }=0A= }=0A= =0A= Object.extend(Number.prototype, {=0A= toColorPart: function() {=0A= var digits =3D this.toString(16);=0A= if (this < 16) return '0' + digits;=0A= return digits;=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= =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= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var PeriodicalExecuter =3D Class.create();=0A= PeriodicalExecuter.prototype =3D {=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= 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.callback(this);=0A= } finally {=0A= this.currentlyExecuting =3D false;=0A= }=0A= }=0A= }=0A= }=0A= String.interpret =3D function(value){=0A= return value =3D=3D null ? '' : String(value);=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 count =3D=3D=3D undefined ? 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 this;=0A= },=0A= =0A= truncate: function(length, truncation) {=0A= length =3D length || 30;=0A= truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation;=0A= return this.length > length ?=0A= this.slice(0, length - truncation.length) + truncation : 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 div =3D document.createElement('div');=0A= var text =3D document.createTextNode(this);=0A= div.appendChild(text);=0A= return div.innerHTML;=0A= },=0A= =0A= unescapeHTML: function() {=0A= var div =3D document.createElement('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 name =3D decodeURIComponent(pair[0]);=0A= var value =3D pair[1] ? decodeURIComponent(pair[1]) : undefined;=0A= =0A= if (hash[name] !=3D=3D undefined) {=0A= if (hash[name].constructor !=3D Array)=0A= hash[name] =3D [hash[name]];=0A= if (value) hash[name].push(value);=0A= }=0A= else hash[name] =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= 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.replace(/\\/g, '\\\\');=0A= if (useDoubleQuotes)=0A= return '"' + escapedString.replace(/"/g, '\\"') + '"';=0A= else=0A= return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A= }=0A= });=0A= =0A= String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A= if (typeof replacement =3D=3D 'function') 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= var Template =3D Class.create();=0A= Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A= Template.prototype =3D {=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= return this.template.gsub(this.pattern, function(match) {=0A= var before =3D match[1];=0A= if (before =3D=3D '\\') return match[2];=0A= return before + String.interpret(object[match[3]]);=0A= });=0A= }=0A= }=0A= =0A= var $break =3D new Object();=0A= var $continue =3D new Object();=0A= =0A= var Enumerable =3D {=0A= each: function(iterator) {=0A= var index =3D 0;=0A= try {=0A= this._each(function(value) {=0A= try {=0A= iterator(value, index++);=0A= } catch (e) {=0A= if (e !=3D $continue) throw e;=0A= }=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= return this;=0A= },=0A= =0A= eachSlice: function(number, iterator) {=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.map(iterator);=0A= },=0A= =0A= all: function(iterator) {=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!(iterator || Prototype.K)(value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= any: function(iterator) {=0A= var result =3D false;=0A= this.each(function(value, index) {=0A= if (result =3D !!(iterator || Prototype.K)(value, index))=0A= throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= collect: function(iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push((iterator || Prototype.K)(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= detect: function(iterator) {=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) {=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(pattern, iterator) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= var stringValue =3D value.toString();=0A= if (stringValue.match(pattern))=0A= results.push((iterator || Prototype.K)(value, index));=0A= })=0A= return results;=0A= },=0A= =0A= include: function(object) {=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 fillWith =3D=3D=3D undefined ? 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) {=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) {=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D (iterator || Prototype.K)(value, index);=0A= if (result =3D=3D undefined || value >=3D result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= min: function(iterator) {=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D (iterator || Prototype.K)(value, index);=0A= if (result =3D=3D undefined || value < result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= partition: function(iterator) {=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= ((iterator || Prototype.K)(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, index) {=0A= results.push(value[property]);=0A= });=0A= return results;=0A= },=0A= =0A= reject: function(iterator) {=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) {=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 (typeof args.last() =3D=3D 'function')=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 '#';=0A= }=0A= }=0A= =0A= Object.extend(Enumerable, {=0A= map: Enumerable.collect,=0A= find: Enumerable.detect,=0A= select: Enumerable.findAll,=0A= member: Enumerable.include,=0A= entries: Enumerable.toArray=0A= });=0A= var $A =3D Array.from =3D function(iterable) {=0A= if (!iterable) return [];=0A= if (iterable.toArray) {=0A= return iterable.toArray();=0A= } else {=0A= var results =3D [];=0A= for (var i =3D 0, length =3D iterable.length; i < length; i++)=0A= results.push(iterable[i]);=0A= return results;=0A= }=0A= }=0A= =0A= Object.extend(Array.prototype, Enumerable);=0A= =0A= if (!Array.prototype._reverse)=0A= 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(value && value.constructor =3D=3D Array ?=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= indexOf: function(object) {=0A= for (var i =3D 0, length =3D this.length; i < length; i++)=0A= if (this[i] =3D=3D object) return i;=0A= return -1;=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() {=0A= return this.inject([], function(array, value) {=0A= return array.include(value) ? array : array.concat([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= =0A= Array.prototype.toArray =3D Array.prototype.clone;=0A= =0A= function $w(string){=0A= string =3D string.strip();=0A= return string ? string.split(/\s+/) : [];=0A= }=0A= =0A= if(window.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(arguments[i].constructor =3D=3D Array) {=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= var Hash =3D function(obj) {=0A= Object.extend(this, obj || {});=0A= };=0A= =0A= Object.extend(Hash, {=0A= toQueryString: function(obj) {=0A= var parts =3D [];=0A= =0A= this.prototype._each.call(obj, function(pair) {=0A= if (!pair.key) return;=0A= =0A= if (pair.value && pair.value.constructor =3D=3D Array) {=0A= var values =3D pair.value.compact();=0A= if (values.length < 2) pair.value =3D values.reduce();=0A= else {=0A= key =3D encodeURIComponent(pair.key);=0A= values.each(function(value) {=0A= value =3D value !=3D undefined ? encodeURIComponent(value) : = '';=0A= parts.push(key + '=3D' + encodeURIComponent(value));=0A= });=0A= return;=0A= }=0A= }=0A= if (pair.value =3D=3D undefined) pair[1] =3D '';=0A= parts.push(pair.map(encodeURIComponent).join('=3D'));=0A= });=0A= =0A= return parts.join('&');=0A= }=0A= });=0A= =0A= Object.extend(Hash.prototype, Enumerable);=0A= Object.extend(Hash.prototype, {=0A= _each: function(iterator) {=0A= for (var key in this) {=0A= var value =3D this[key];=0A= if (value && value =3D=3D Hash.prototype[key]) continue;=0A= =0A= var pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= },=0A= =0A= keys: function() {=0A= return this.pluck('key');=0A= },=0A= =0A= values: function() {=0A= return this.pluck('value');=0A= },=0A= =0A= merge: function(hash) {=0A= return $H(hash).inject(this, function(mergedHash, pair) {=0A= mergedHash[pair.key] =3D pair.value;=0A= return mergedHash;=0A= });=0A= },=0A= =0A= remove: function() {=0A= var result;=0A= for(var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= var value =3D this[arguments[i]];=0A= if (value !=3D=3D undefined){=0A= if (result =3D=3D=3D undefined) result =3D value;=0A= else {=0A= if (result.constructor !=3D Array) result =3D [result];=0A= result.push(value)=0A= }=0A= }=0A= delete this[arguments[i]];=0A= }=0A= return result;=0A= },=0A= =0A= toQueryString: function() {=0A= return Hash.toQueryString(this);=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= }=0A= });=0A= =0A= function $H(object) {=0A= if (object && object.constructor =3D=3D Hash) return object;=0A= return new Hash(object);=0A= };=0A= ObjectRange =3D Class.create();=0A= Object.extend(ObjectRange.prototype, Enumerable);=0A= Object.extend(ObjectRange.prototype, {=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 (typeof responder[callback] =3D=3D 'function') {=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() {=0A= Ajax.activeRequestCount++;=0A= },=0A= onComplete: function() {=0A= Ajax.activeRequestCount--;=0A= }=0A= });=0A= =0A= Ajax.Base =3D function() {};=0A= Ajax.Base.prototype =3D {=0A= setOptions: 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= }=0A= Object.extend(this.options, options || {});=0A= =0A= this.options.method =3D this.options.method.toLowerCase();=0A= if (typeof this.options.parameters =3D=3D 'string')=0A= this.options.parameters =3D = this.options.parameters.toQueryParams();=0A= }=0A= }=0A= =0A= Ajax.Request =3D Class.create();=0A= Ajax.Request.Events =3D=0A= ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A= =0A= Ajax.Request.prototype =3D Object.extend(new Ajax.Base(), {=0A= _complete: false,=0A= =0A= initialize: function(url, options) {=0A= this.transport =3D Ajax.getTransport();=0A= this.setOptions(options);=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 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= params =3D Hash.toQueryString(params);=0A= if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) = params +=3D '&_=3D'=0A= =0A= // when GET, append parameters to URL=0A= if (this.method =3D=3D 'get' && params)=0A= this.url +=3D (this.url.indexOf('?') > -1 ? '&' : '?') + params;=0A= =0A= try {=0A= Ajax.Responders.dispatch('onCreate', this, this.transport);=0A= =0A= this.transport.open(this.method.toUpperCase(), this.url,=0A= this.options.asynchronous);=0A= =0A= if (this.options.asynchronous)=0A= setTimeout(function() { this.respondToReadyState(1) = }.bind(this), 10);=0A= =0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= this.setRequestHeaders();=0A= =0A= var body =3D this.method =3D=3D 'post' ? (this.options.postBody || = params) : null;=0A= =0A= this.transport.send(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 (typeof extras.push =3D=3D 'function')=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= return !this.transport.status=0A= || (this.transport.status >=3D 200 && this.transport.status < = 300);=0A= },=0A= =0A= respondToReadyState: function(readyState) {=0A= var state =3D Ajax.Request.Events[readyState];=0A= var transport =3D this.transport, json =3D this.evalJSON();=0A= =0A= if (state =3D=3D 'Complete') {=0A= try {=0A= this._complete =3D true;=0A= (this.options['on' + this.transport.status]=0A= || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A= || Prototype.emptyFunction)(transport, json);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= if ((this.getHeader('Content-type') || 'text/javascript').strip().=0A= match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))=0A= this.evalResponse();=0A= }=0A= =0A= try {=0A= (this.options['on' + state] || Prototype.emptyFunction)(transport, = json);=0A= Ajax.Responders.dispatch('on' + state, this, transport, json);=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= getHeader: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name);=0A= } catch (e) { return null }=0A= },=0A= =0A= evalJSON: function() {=0A= try {=0A= var json =3D this.getHeader('X-JSON');=0A= return json ? eval('(' + json + ')') : null;=0A= } catch (e) { return null }=0A= },=0A= =0A= evalResponse: function() {=0A= try {=0A= return eval(this.transport.responseText);=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.Updater =3D Class.create();=0A= =0A= Object.extend(Object.extend(Ajax.Updater.prototype, = Ajax.Request.prototype), {=0A= initialize: function(container, url, options) {=0A= this.container =3D {=0A= success: (container.success || container),=0A= failure: (container.failure || (container.success ? null : = container))=0A= }=0A= =0A= this.transport =3D Ajax.getTransport();=0A= this.setOptions(options);=0A= =0A= var onComplete =3D this.options.onComplete || = Prototype.emptyFunction;=0A= this.options.onComplete =3D (function(transport, param) {=0A= this.updateContent();=0A= onComplete(transport, param);=0A= }).bind(this);=0A= =0A= this.request(url);=0A= },=0A= =0A= updateContent: function() {=0A= var receiver =3D this.container[this.success() ? 'success' : = 'failure'];=0A= var response =3D this.transport.responseText;=0A= =0A= if (!this.options.evalScripts) response =3D response.stripScripts();=0A= =0A= if (receiver =3D $(receiver)) {=0A= if (this.options.insertion)=0A= new this.options.insertion(receiver, response);=0A= else=0A= receiver.update(response);=0A= }=0A= =0A= if (this.success()) {=0A= if (this.onComplete)=0A= setTimeout(this.onComplete.bind(this), 10);=0A= }=0A= }=0A= });=0A= =0A= Ajax.PeriodicalUpdater =3D Class.create();=0A= Ajax.PeriodicalUpdater.prototype =3D Object.extend(new Ajax.Base(), {=0A= initialize: function(container, url, options) {=0A= this.setOptions(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(request) {=0A= if (this.options.decay) {=0A= this.decay =3D (request.responseText =3D=3D this.lastText ?=0A= this.decay * this.options.decay : 1);=0A= =0A= this.lastText =3D request.responseText;=0A= }=0A= this.timer =3D setTimeout(this.onTimerEvent.bind(this),=0A= this.decay * this.frequency * 1000);=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 (typeof element =3D=3D 'string')=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(query.snapshotItem(i));=0A= return results;=0A= };=0A= }=0A= =0A= document.getElementsByClassName =3D function(className, parentElement) {=0A= if (Prototype.BrowserFeatures.XPath) {=0A= var q =3D ".//*[contains(concat(' ', @class, ' '), ' " + className + = " ')]";=0A= return document._getElementsByXPath(q, parentElement);=0A= } else {=0A= var children =3D ($(parentElement) || = document.body).getElementsByTagName('*');=0A= var elements =3D [], child;=0A= for (var i =3D 0, length =3D children.length; i < length; i++) {=0A= child =3D children[i];=0A= if (Element.hasClassName(child, className))=0A= elements.push(Element.extend(child));=0A= }=0A= return elements;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!window.Element)=0A= var Element =3D new Object();=0A= =0A= Element.extend =3D function(element) {=0A= if (!element || _nativeExtensions || element.nodeType =3D=3D 3) return = element;=0A= =0A= if (!element._extended && element.tagName && element !=3D window) {=0A= var methods =3D Object.clone(Element.Methods), cache =3D = Element.extend.cache;=0A= =0A= if (element.tagName =3D=3D 'FORM')=0A= Object.extend(methods, Form.Methods);=0A= if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))=0A= Object.extend(methods, Form.Element.Methods);=0A= =0A= Object.extend(methods, Element.Methods.Simulated);=0A= =0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (typeof value =3D=3D 'function' && !(property in element))=0A= element[property] =3D cache.findOrStore(value);=0A= }=0A= }=0A= =0A= element._extended =3D true;=0A= return element;=0A= };=0A= =0A= Element.extend.cache =3D {=0A= findOrStore: function(value) {=0A= return this[value] =3D this[value] || function() {=0A= return value.apply(null, [this].concat($A(arguments)));=0A= }=0A= }=0A= };=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, html) {=0A= html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A= $(element).innerHTML =3D html.stripScripts();=0A= setTimeout(function() {html.evalScripts()}, 10);=0A= return element;=0A= },=0A= =0A= replace: function(element, html) {=0A= element =3D $(element);=0A= html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A= if (element.outerHTML) {=0A= element.outerHTML =3D html.stripScripts();=0A= } else {=0A= var range =3D element.ownerDocument.createRange();=0A= range.selectNodeContents(element);=0A= element.parentNode.replaceChild(=0A= range.createContextualFragment(html.stripScripts()), element);=0A= }=0A= setTimeout(function() {html.evalScripts()}, 10);=0A= return element;=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 $A($(element).getElementsByTagName('*'));=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 (typeof selector =3D=3D 'string')=0A= selector =3D new Selector(selector);=0A= return selector.match($(element));=0A= },=0A= =0A= up: function(element, expression, index) {=0A= return Selector.findElement($(element).ancestors(), expression, = index);=0A= },=0A= =0A= down: function(element, expression, index) {=0A= return Selector.findElement($(element).descendants(), expression, = index);=0A= },=0A= =0A= previous: function(element, expression, index) {=0A= return Selector.findElement($(element).previousSiblings(), = expression, index);=0A= },=0A= =0A= next: function(element, expression, index) {=0A= return Selector.findElement($(element).nextSiblings(), expression, = index);=0A= },=0A= =0A= getElementsBySelector: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element, args);=0A= },=0A= =0A= getElementsByClassName: function(element, className) {=0A= return document.getElementsByClassName(className, element);=0A= },=0A= =0A= readAttribute: function(element, name) {=0A= element =3D $(element);=0A= if (document.all && !window.opera) {=0A= var t =3D Element._attributeTranslations;=0A= if (t.values[name]) return t.values[name](element, name);=0A= if (t.names[name]) name =3D t.names[name];=0A= var attribute =3D element.attributes[name];=0A= if(attribute) return attribute.nodeValue;=0A= }=0A= return element.getAttribute(name);=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= if (elementClassName.length =3D=3D 0) return false;=0A= if (elementClassName =3D=3D className ||=0A= elementClassName.match(new RegExp("(^|\\s)" + className + = "(\\s|$)")))=0A= return true;=0A= return false;=0A= },=0A= =0A= addClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= Element.classNames(element).add(className);=0A= return element;=0A= },=0A= =0A= removeClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= Element.classNames(element).remove(className);=0A= return element;=0A= },=0A= =0A= toggleClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= Element.classNames(element)[element.hasClassName(className) ? = 'remove' : 'add'](className);=0A= return element;=0A= },=0A= =0A= observe: function() {=0A= Event.observe.apply(Event, arguments);=0A= return $A(arguments).first();=0A= },=0A= =0A= stopObserving: function() {=0A= Event.stopObserving.apply(Event, arguments);=0A= return $A(arguments).first();=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.match(/^\s*$/);=0A= },=0A= =0A= descendantOf: function(element, ancestor) {=0A= element =3D $(element), ancestor =3D $(ancestor);=0A= while (element =3D element.parentNode)=0A= if (element =3D=3D ancestor) return true;=0A= return false;=0A= },=0A= =0A= scrollTo: function(element) {=0A= element =3D $(element);=0A= var pos =3D Position.cumulativeOffset(element);=0A= window.scrollTo(pos[0], pos[1]);=0A= return element;=0A= },=0A= =0A= getStyle: function(element, style) {=0A= element =3D $(element);=0A= if (['float','cssFloat'].include(style))=0A= style =3D (typeof element.style.styleFloat !=3D 'undefined' ? = 'styleFloat' : 'cssFloat');=0A= style =3D style.camelize();=0A= var value =3D element.style[style];=0A= if (!value) {=0A= if (document.defaultView && document.defaultView.getComputedStyle) = {=0A= var css =3D document.defaultView.getComputedStyle(element, null);=0A= value =3D css ? css[style] : null;=0A= } else if (element.currentStyle) {=0A= value =3D element.currentStyle[style];=0A= }=0A= }=0A= =0A= if((value =3D=3D 'auto') && ['width','height'].include(style) && = (element.getStyle('display') !=3D 'none'))=0A= value =3D element['offset'+style.capitalize()] + 'px';=0A= =0A= if (window.opera && ['left', 'top', 'right', = 'bottom'].include(style))=0A= if (Element.getStyle(element, 'position') =3D=3D 'static') value = =3D 'auto';=0A= if(style =3D=3D 'opacity') {=0A= if(value) return parseFloat(value);=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= return value =3D=3D 'auto' ? null : value;=0A= },=0A= =0A= setStyle: function(element, style) {=0A= element =3D $(element);=0A= for (var name in style) {=0A= var value =3D style[name];=0A= if(name =3D=3D 'opacity') {=0A= if (value =3D=3D 1) {=0A= value =3D (/Gecko/.test(navigator.userAgent) &&=0A= !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? = 0.999999 : 1.0;=0A= if(/MSIE/.test(navigator.userAgent) && !window.opera)=0A= element.style.filter =3D = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');=0A= } else if(value =3D=3D '') {=0A= if(/MSIE/.test(navigator.userAgent) && !window.opera)=0A= element.style.filter =3D = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');=0A= } else {=0A= if(value < 0.00001) value =3D 0;=0A= if(/MSIE/.test(navigator.userAgent) && !window.opera)=0A= element.style.filter =3D = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +=0A= 'alpha(opacity=3D'+value*100+')';=0A= }=0A= } else if(['float','cssFloat'].include(name)) name =3D (typeof = element.style.styleFloat !=3D 'undefined') ? 'styleFloat' : 'cssFloat';=0A= element.style[name.camelize()] =3D value;=0A= }=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.style.overflow || 'auto';=0A= if ((Element.getStyle(element, 'overflow') || 'visible') !=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= =0A= Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf});=0A= =0A= Element._attributeTranslations =3D {};=0A= =0A= Element._attributeTranslations.names =3D {=0A= colspan: "colSpan",=0A= rowspan: "rowSpan",=0A= valign: "vAlign",=0A= datetime: "dateTime",=0A= accesskey: "accessKey",=0A= tabindex: "tabIndex",=0A= enctype: "encType",=0A= maxlength: "maxLength",=0A= readonly: "readOnly",=0A= longdesc: "longDesc"=0A= };=0A= =0A= Element._attributeTranslations.values =3D {=0A= _getAttr: function(element, attribute) {=0A= return element.getAttribute(attribute, 2);=0A= },=0A= =0A= _flag: function(element, attribute) {=0A= return $(element).hasAttribute(attribute) ? attribute : null;=0A= },=0A= =0A= style: function(element) {=0A= return element.style.cssText.toLowerCase();=0A= },=0A= =0A= title: function(element) {=0A= var node =3D element.getAttributeNode('title');=0A= return node.specified ? node.nodeValue : null;=0A= }=0A= };=0A= =0A= Object.extend(Element._attributeTranslations.values, {=0A= href: Element._attributeTranslations.values._getAttr,=0A= src: Element._attributeTranslations.values._getAttr,=0A= disabled: Element._attributeTranslations.values._flag,=0A= checked: Element._attributeTranslations.values._flag,=0A= readonly: Element._attributeTranslations.values._flag,=0A= multiple: Element._attributeTranslations.values._flag=0A= });=0A= =0A= Element.Methods.Simulated =3D {=0A= hasAttribute: function(element, attribute) {=0A= var t =3D Element._attributeTranslations;=0A= attribute =3D t.names[attribute] || attribute;=0A= return $(element).getAttributeNode(attribute).specified;=0A= }=0A= };=0A= =0A= // IE is missing .innerHTML support for TABLE-related elements=0A= if (document.all && !window.opera){=0A= Element.Methods.update =3D function(element, html) {=0A= element =3D $(element);=0A= html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A= var tagName =3D element.tagName.toUpperCase();=0A= if (['THEAD','TBODY','TR','TD'].include(tagName)) {=0A= var div =3D document.createElement('div');=0A= switch (tagName) {=0A= case 'THEAD':=0A= case 'TBODY':=0A= div.innerHTML =3D '' + html.stripScripts() + = '
';=0A= depth =3D 2;=0A= break;=0A= case 'TR':=0A= div.innerHTML =3D '' + html.stripScripts() = + '
';=0A= depth =3D 3;=0A= break;=0A= case 'TD':=0A= div.innerHTML =3D '
' + = html.stripScripts() + '
';=0A= depth =3D 4;=0A= }=0A= $A(element.childNodes).each(function(node){=0A= element.removeChild(node)=0A= });=0A= depth.times(function(){ div =3D div.firstChild });=0A= =0A= $A(div.childNodes).each(=0A= function(node){ element.appendChild(node) });=0A= } else {=0A= element.innerHTML =3D html.stripScripts();=0A= }=0A= setTimeout(function() {html.evalScripts()}, 10);=0A= return element;=0A= }=0A= };=0A= =0A= Object.extend(Element, Element.Methods);=0A= =0A= var _nativeExtensions =3D false;=0A= =0A= if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A= ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {=0A= var className =3D 'HTML' + tag + 'Element';=0A= if(window[className]) return;=0A= var klass =3D window[className] =3D {};=0A= klass.prototype =3D document.createElement(tag ? tag.toLowerCase() : = 'div').__proto__;=0A= });=0A= =0A= Element.addMethods =3D function(methods) {=0A= Object.extend(Element.Methods, methods || {});=0A= =0A= function copy(methods, destination, onlyIfAbsent) {=0A= onlyIfAbsent =3D onlyIfAbsent || false;=0A= var cache =3D Element.extend.cache;=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (!onlyIfAbsent || !(property in destination))=0A= destination[property] =3D cache.findOrStore(value);=0A= }=0A= }=0A= =0A= if (typeof HTMLElement !=3D 'undefined') {=0A= copy(Element.Methods, HTMLElement.prototype);=0A= copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A= copy(Form.Methods, HTMLFormElement.prototype);=0A= [HTMLInputElement, HTMLTextAreaElement, = HTMLSelectElement].each(function(klass) {=0A= copy(Form.Element.Methods, klass.prototype);=0A= });=0A= _nativeExtensions =3D true;=0A= }=0A= }=0A= =0A= var Toggle =3D new Object();=0A= Toggle.display =3D Element.toggle;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.Insertion =3D function(adjacency) {=0A= this.adjacency =3D adjacency;=0A= }=0A= =0A= Abstract.Insertion.prototype =3D {=0A= initialize: function(element, content) {=0A= this.element =3D $(element);=0A= this.content =3D content.stripScripts();=0A= =0A= if (this.adjacency && this.element.insertAdjacentHTML) {=0A= try {=0A= this.element.insertAdjacentHTML(this.adjacency, this.content);=0A= } catch (e) {=0A= var tagName =3D this.element.tagName.toUpperCase();=0A= if (['TBODY', 'TR'].include(tagName)) {=0A= this.insertContent(this.contentFromAnonymousTable());=0A= } else {=0A= throw e;=0A= }=0A= }=0A= } else {=0A= this.range =3D this.element.ownerDocument.createRange();=0A= if (this.initializeRange) this.initializeRange();=0A= = this.insertContent([this.range.createContextualFragment(this.content)]);=0A= }=0A= =0A= setTimeout(function() {content.evalScripts()}, 10);=0A= },=0A= =0A= contentFromAnonymousTable: function() {=0A= var div =3D document.createElement('div');=0A= div.innerHTML =3D '' + this.content + = '
';=0A= return $A(div.childNodes[0].childNodes[0].childNodes);=0A= }=0A= }=0A= =0A= var Insertion =3D new Object();=0A= =0A= Insertion.Before =3D Class.create();=0A= Insertion.Before.prototype =3D Object.extend(new = Abstract.Insertion('beforeBegin'), {=0A= initializeRange: function() {=0A= this.range.setStartBefore(this.element);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.each((function(fragment) {=0A= this.element.parentNode.insertBefore(fragment, this.element);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= Insertion.Top =3D Class.create();=0A= Insertion.Top.prototype =3D Object.extend(new = Abstract.Insertion('afterBegin'), {=0A= initializeRange: function() {=0A= this.range.selectNodeContents(this.element);=0A= this.range.collapse(true);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.reverse(false).each((function(fragment) {=0A= this.element.insertBefore(fragment, this.element.firstChild);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= Insertion.Bottom =3D Class.create();=0A= Insertion.Bottom.prototype =3D Object.extend(new = Abstract.Insertion('beforeEnd'), {=0A= initializeRange: function() {=0A= this.range.selectNodeContents(this.element);=0A= this.range.collapse(this.element);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.each((function(fragment) {=0A= this.element.appendChild(fragment);=0A= }).bind(this));=0A= }=0A= });=0A= =0A= Insertion.After =3D Class.create();=0A= Insertion.After.prototype =3D Object.extend(new = Abstract.Insertion('afterEnd'), {=0A= initializeRange: function() {=0A= this.range.setStartAfter(this.element);=0A= },=0A= =0A= insertContent: function(fragments) {=0A= fragments.each((function(fragment) {=0A= this.element.parentNode.insertBefore(fragment,=0A= this.element.nextSibling);=0A= }).bind(this));=0A= }=0A= });=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= var Selector =3D Class.create();=0A= Selector.prototype =3D {=0A= initialize: function(expression) {=0A= this.params =3D {classNames: []};=0A= this.expression =3D expression.toString().strip();=0A= this.parseExpression();=0A= this.compileMatcher();=0A= },=0A= =0A= parseExpression: function() {=0A= function abort(message) { throw 'Parse error in selector: ' + = message; }=0A= =0A= if (this.expression =3D=3D '') abort('empty expression');=0A= =0A= var params =3D this.params, expr =3D this.expression, match, = modifier, clause, rest;=0A= while (match =3D = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=3D)(?:"([^"]*)"|([^\]\s]*))= )?\]$/i)) {=0A= params.attributes =3D params.attributes || [];=0A= params.attributes.push({name: match[2], operator: match[3], value: = match[4] || match[5] || ''});=0A= expr =3D match[1];=0A= }=0A= =0A= if (expr =3D=3D '*') return this.params.wildcard =3D true;=0A= =0A= while (match =3D expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {=0A= modifier =3D match[1], clause =3D match[2], rest =3D match[3];=0A= switch (modifier) {=0A= case '#': params.id =3D clause; break;=0A= case '.': params.classNames.push(clause); break;=0A= case '':=0A= case undefined: params.tagName =3D clause.toUpperCase(); break;=0A= default: abort(expr.inspect());=0A= }=0A= expr =3D rest;=0A= }=0A= =0A= if (expr.length > 0) abort(expr.inspect());=0A= },=0A= =0A= buildMatchExpression: function() {=0A= var params =3D this.params, conditions =3D [], clause;=0A= =0A= if (params.wildcard)=0A= conditions.push('true');=0A= if (clause =3D params.id)=0A= conditions.push('element.readAttribute("id") =3D=3D ' + = clause.inspect());=0A= if (clause =3D params.tagName)=0A= conditions.push('element.tagName.toUpperCase() =3D=3D ' + = clause.inspect());=0A= if ((clause =3D params.classNames).length > 0)=0A= for (var i =3D 0, length =3D clause.length; i < length; i++)=0A= conditions.push('element.hasClassName(' + clause[i].inspect() + = ')');=0A= if (clause =3D params.attributes) {=0A= clause.each(function(attribute) {=0A= var value =3D 'element.readAttribute(' + = attribute.name.inspect() + ')';=0A= var splitValueBy =3D function(delimiter) {=0A= return value + ' && ' + value + '.split(' + = delimiter.inspect() + ')';=0A= }=0A= =0A= switch (attribute.operator) {=0A= case '=3D': conditions.push(value + ' =3D=3D ' + = attribute.value.inspect()); break;=0A= case '~=3D': conditions.push(splitValueBy(' ') + = '.include(' + attribute.value.inspect() + ')'); break;=0A= case '|=3D': conditions.push(=0A= splitValueBy('-') + '.first().toUpperCase() = =3D=3D ' + attribute.value.toUpperCase().inspect()=0A= ); break;=0A= case '!=3D': conditions.push(value + ' !=3D ' + = attribute.value.inspect()); break;=0A= case '':=0A= case undefined: conditions.push('element.hasAttribute(' + = attribute.name.inspect() + ')'); break;=0A= default: throw 'Unknown operator ' + attribute.operator = + ' in selector';=0A= }=0A= });=0A= }=0A= =0A= return conditions.join(' && ');=0A= },=0A= =0A= compileMatcher: function() {=0A= this.match =3D new Function('element', 'if (!element.tagName) return = false; \=0A= element =3D $(element); \=0A= return ' + this.buildMatchExpression());=0A= },=0A= =0A= findElements: function(scope) {=0A= var element;=0A= =0A= if (element =3D $(this.params.id))=0A= if (this.match(element))=0A= if (!scope || Element.childOf(element, scope))=0A= return [element];=0A= =0A= scope =3D (scope || = document).getElementsByTagName(this.params.tagName || '*');=0A= =0A= var results =3D [];=0A= for (var i =3D 0, length =3D scope.length; i < length; i++)=0A= if (this.match(element =3D scope[i]))=0A= results.push(Element.extend(element));=0A= =0A= return results;=0A= },=0A= =0A= toString: function() {=0A= return this.expression;=0A= }=0A= }=0A= =0A= Object.extend(Selector, {=0A= matchElements: function(elements, expression) {=0A= var selector =3D new Selector(expression);=0A= return = elements.select(selector.match.bind(selector)).map(Element.extend);=0A= },=0A= =0A= findElement: function(elements, expression, index) {=0A= if (typeof expression =3D=3D 'number') index =3D expression, = expression =3D false;=0A= return Selector.matchElements(elements, expression || '*')[index || = 0];=0A= },=0A= =0A= findChildElements: function(element, expressions) {=0A= return expressions.map(function(expression) {=0A= return = expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], = function(results, expr) {=0A= var selector =3D new Selector(expr);=0A= return results.inject([], function(elements, result) {=0A= return elements.concat(selector.findElements(result || = element));=0A= });=0A= });=0A= }).flatten();=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, getHash) {=0A= var data =3D elements.inject({}, function(result, element) {=0A= if (!element.disabled && element.name) {=0A= var key =3D element.name, value =3D $(element).getValue();=0A= if (value !=3D undefined) {=0A= if (result[key]) {=0A= if (result[key].constructor !=3D Array) 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 getHash ? data : Hash.toQueryString(data);=0A= }=0A= };=0A= =0A= Form.Methods =3D {=0A= serialize: function(form, getHash) {=0A= return Form.serializeElements(Form.getElements(form), getHash);=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().each(function(element) {=0A= element.blur();=0A= element.disabled =3D 'true';=0A= });=0A= return form;=0A= },=0A= =0A= enable: function(form) {=0A= form =3D $(form);=0A= form.getElements().each(function(element) {=0A= element.disabled =3D '';=0A= });=0A= return form;=0A= },=0A= =0A= findFirstElement: function(form) {=0A= return $(form).getElements().find(function(element) {=0A= return element.type !=3D 'hidden' && !element.disabled &&=0A= ['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= =0A= Object.extend(Form, Form.Methods);=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 Hash.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= 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= element.focus();=0A= if (element.select && ( element.tagName.toLowerCase() !=3D 'input' ||=0A= !['button', 'reset', 'submit'].include(element.type) ) )=0A= element.select();=0A= return element;=0A= },=0A= =0A= disable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D true;=0A= return element;=0A= },=0A= =0A= enable: function(element) {=0A= element =3D $(element);=0A= element.blur();=0A= element.disabled =3D false;=0A= return element;=0A= }=0A= }=0A= =0A= Object.extend(Form.Element, Form.Element.Methods);=0A= var Field =3D Form.Element;=0A= var $F =3D Form.Element.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= return Form.Element.Serializers.inputSelector(element);=0A= default:=0A= return Form.Element.Serializers.textarea(element);=0A= }=0A= },=0A= =0A= inputSelector: function(element) {=0A= return element.checked ? element.value : null;=0A= },=0A= =0A= textarea: function(element) {=0A= return element.value;=0A= },=0A= =0A= select: function(element) {=0A= return this[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=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 function() {}=0A= Abstract.TimedObserver.prototype =3D {=0A= initialize: function(element, frequency, callback) {=0A= this.frequency =3D frequency;=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);=0A= },=0A= =0A= onTimerEvent: function() {=0A= var value =3D this.getValue();=0A= var changed =3D ('string' =3D=3D typeof this.lastValue && 'string' = =3D=3D typeof value=0A= ? this.lastValue !=3D value : String(this.lastValue) !=3D = String(value));=0A= if (changed) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= }=0A= }=0A= =0A= Form.Element.Observer =3D Class.create();=0A= Form.Element.Observer.prototype =3D Object.extend(new = Abstract.TimedObserver(), {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.Observer =3D Class.create();=0A= Form.Observer.prototype =3D Object.extend(new Abstract.TimedObserver(), {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.EventObserver =3D function() {}=0A= Abstract.EventObserver.prototype =3D {=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.bind(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();=0A= Form.Element.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.EventObserver =3D Class.create();=0A= Form.EventObserver.prototype =3D Object.extend(new = Abstract.EventObserver(), {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= if (!window.Event) {=0A= var Event =3D new Object();=0A= }=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= =0A= element: function(event) {=0A= return event.target || event.srcElement;=0A= },=0A= =0A= isLeftClick: function(event) {=0A= return (((event.which) && (event.which =3D=3D 1)) ||=0A= ((event.button) && (event.button =3D=3D 1)));=0A= },=0A= =0A= pointerX: function(event) {=0A= return event.pageX || (event.clientX +=0A= (document.documentElement.scrollLeft || document.body.scrollLeft));=0A= },=0A= =0A= pointerY: function(event) {=0A= return event.pageY || (event.clientY +=0A= (document.documentElement.scrollTop || document.body.scrollTop));=0A= },=0A= =0A= stop: function(event) {=0A= if (event.preventDefault) {=0A= event.preventDefault();=0A= event.stopPropagation();=0A= } else {=0A= event.returnValue =3D false;=0A= event.cancelBubble =3D true;=0A= }=0A= },=0A= =0A= // find the first node with the given tagName, starting from the=0A= // node the event was triggered on; traverses the DOM upwards=0A= findElement: function(event, tagName) {=0A= var element =3D Event.element(event);=0A= while (element.parentNode && (!element.tagName ||=0A= (element.tagName.toUpperCase() !=3D tagName.toUpperCase())))=0A= element =3D element.parentNode;=0A= return element;=0A= },=0A= =0A= observers: false,=0A= =0A= _observeAndCache: function(element, name, observer, useCapture) {=0A= if (!this.observers) this.observers =3D [];=0A= if (element.addEventListener) {=0A= this.observers.push([element, name, observer, useCapture]);=0A= element.addEventListener(name, observer, useCapture);=0A= } else if (element.attachEvent) {=0A= this.observers.push([element, name, observer, useCapture]);=0A= element.attachEvent('on' + name, observer);=0A= }=0A= },=0A= =0A= unloadCache: function() {=0A= if (!Event.observers) return;=0A= for (var i =3D 0, length =3D Event.observers.length; i < length; = i++) {=0A= Event.stopObserving.apply(this, Event.observers[i]);=0A= Event.observers[i][0] =3D null;=0A= }=0A= Event.observers =3D false;=0A= },=0A= =0A= observe: function(element, name, observer, useCapture) {=0A= element =3D $(element);=0A= useCapture =3D useCapture || false;=0A= =0A= if (name =3D=3D 'keypress' &&=0A= (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A= || element.attachEvent))=0A= name =3D 'keydown';=0A= =0A= Event._observeAndCache(element, name, observer, useCapture);=0A= },=0A= =0A= stopObserving: function(element, name, observer, useCapture) {=0A= element =3D $(element);=0A= useCapture =3D useCapture || false;=0A= =0A= if (name =3D=3D 'keypress' &&=0A= (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A= || element.detachEvent))=0A= name =3D 'keydown';=0A= =0A= if (element.removeEventListener) {=0A= element.removeEventListener(name, observer, useCapture);=0A= } else if (element.detachEvent) {=0A= try {=0A= element.detachEvent('on' + name, observer);=0A= } catch (e) {}=0A= }=0A= }=0A= });=0A= =0A= /* prevent memory leaks in IE */=0A= if (navigator.appVersion.match(/\bMSIE\b/))=0A= Event.observe(window, 'unload', Event.unloadCache, false);=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= realOffset: 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 [valueL, valueT];=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 [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 'relative' || p =3D=3D 'absolute') break;=0A= }=0A= } while (element);=0A= return [valueL, valueT];=0A= },=0A= =0A= offsetParent: 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= // 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 this.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 this.realOffset(element);=0A= =0A= this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A= this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A= this.offset =3D this.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= page: 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=3Ddocument.body)=0A= if (Element.getStyle(element,'position')=3D=3D'absolute') break;=0A= =0A= } while (element =3D element.offsetParent);=0A= =0A= element =3D forElement;=0A= do {=0A= if (!window.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 [valueL, valueT];=0A= },=0A= =0A= clone: function(source, target) {=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 Position.page(source);=0A= =0A= // find coordinate system to use=0A= target =3D $(target);=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(target,'position') =3D=3D 'absolute') {=0A= parent =3D Position.offsetParent(target);=0A= delta =3D Position.page(parent);=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) target.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px';=0A= if(options.setTop) target.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px';=0A= if(options.setWidth) target.style.width =3D source.offsetWidth + = 'px';=0A= if(options.setHeight) target.style.height =3D source.offsetHeight + = 'px';=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (element.style.position =3D=3D 'absolute') return;=0A= Position.prepare();=0A= =0A= var offsets =3D Position.positionedOffset(element);=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= },=0A= =0A= relativize: function(element) {=0A= element =3D $(element);=0A= if (element.style.position =3D=3D 'relative') return;=0A= Position.prepare();=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= }=0A= }=0A= =0A= // Safari returns margins on body which is incorrect if the child is = absolutely=0A= // positioned. For performance reasons, redefine = Position.cumulativeOffset for=0A= // KHTML/WebKit only.=0A= if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {=0A= Position.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 [valueL, valueT];=0A= }=0A= }=0A= =0A= Element.addMethods(); ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.news.wisc.edu/javascripts/effects.js?1174745057 // Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, = http://mir.aculo.us)=0A= // Contributors:=0A= // Justin Palmer (http://encytemedia.com/)=0A= // Mark Pilgrim (http://diveintomark.org/)=0A= // Martin Bialasinki=0A= // =0A= // script.aculo.us is freely distributable under the terms of an = MIT-style license.=0A= // For details, see the script.aculo.us web site: = http://script.aculo.us/ =0A= =0A= // converts rgb() and #xxx to #xxxxxx format, =0A= // returns self (or first argument) if not convertable =0A= String.prototype.parseColor =3D function() { =0A= var color =3D '#';=0A= if(this.slice(0,4) =3D=3D 'rgb(') { =0A= var cols =3D this.slice(4,this.length-1).split(','); =0A= var i=3D0; do { color +=3D parseInt(cols[i]).toColorPart() } while = (++i<3); =0A= } else { =0A= if(this.slice(0,1) =3D=3D '#') { =0A= if(this.length=3D=3D4) for(var i=3D1;i<4;i++) color +=3D = (this.charAt(i) + this.charAt(i)).toLowerCase(); =0A= if(this.length=3D=3D7) color =3D this.toLowerCase(); =0A= } =0A= } =0A= return(color.length=3D=3D7 ? color : (arguments[0] || this)); =0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Element.collectTextNodes =3D function(element) { =0A= return $A($(element).childNodes).collect( function(node) {=0A= return (node.nodeType=3D=3D3 ? node.nodeValue : =0A= (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));=0A= }).flatten().join('');=0A= }=0A= =0A= Element.collectTextNodesIgnoreClass =3D function(element, className) { =0A= return $A($(element).childNodes).collect( function(node) {=0A= return (node.nodeType=3D=3D3 ? node.nodeValue : =0A= ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? =0A= Element.collectTextNodesIgnoreClass(node, className) : ''));=0A= }).flatten().join('');=0A= }=0A= =0A= Element.setContentZoom =3D function(element, percent) {=0A= element =3D $(element); =0A= element.setStyle({fontSize: (percent/100) + 'em'}); =0A= if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);=0A= return element;=0A= }=0A= =0A= Element.getOpacity =3D function(element){=0A= element =3D $(element);=0A= var opacity;=0A= if (opacity =3D element.getStyle('opacity')) =0A= return parseFloat(opacity); =0A= if (opacity =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/)) =0A= if(opacity[1]) return parseFloat(opacity[1]) / 100; =0A= return 1.0; =0A= }=0A= =0A= Element.setOpacity =3D function(element, value){ =0A= element=3D $(element); =0A= if (value =3D=3D 1){=0A= element.setStyle({ opacity: =0A= (/Gecko/.test(navigator.userAgent) && = !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? =0A= 0.999999 : 1.0 });=0A= if(/MSIE/.test(navigator.userAgent) && !window.opera) =0A= element.setStyle({filter: = Element.getStyle(element,'filter').replace(/alpha\([^\)]*\)/gi,'')}); =0A= } else { =0A= if(value < 0.00001) value =3D 0; =0A= element.setStyle({opacity: value});=0A= if(/MSIE/.test(navigator.userAgent) && !window.opera) =0A= element.setStyle(=0A= { filter: = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +=0A= 'alpha(opacity=3D'+value*100+')' }); =0A= }=0A= return element;=0A= } =0A= =0A= Element.getInlineOpacity =3D function(element){ =0A= return $(element).style.opacity || '';=0A= } =0A= =0A= Element.forceRerendering =3D function(element) {=0A= try {=0A= element =3D $(element);=0A= var n =3D document.createTextNode(' ');=0A= element.appendChild(n);=0A= element.removeChild(n);=0A= } catch(e) { }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Array.prototype.call =3D function() {=0A= var args =3D arguments;=0A= this.each(function(f){ f.apply(this, args) });=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Effect =3D {=0A= _elementDoesNotExistError: {=0A= name: 'ElementDoesNotExistError',=0A= message: 'The specified DOM element does not exist, but is required = for this effect to operate'=0A= },=0A= tagifyText: function(element) {=0A= if(typeof Builder =3D=3D 'undefined')=0A= throw("Effect.tagifyText requires including script.aculo.us' = builder.js library");=0A= =0A= var tagifyStyle =3D 'position:relative';=0A= if(/MSIE/.test(navigator.userAgent) && !window.opera) tagifyStyle = +=3D ';zoom:1';=0A= =0A= element =3D $(element);=0A= $A(element.childNodes).each( function(child) {=0A= if(child.nodeType=3D=3D3) {=0A= child.nodeValue.toArray().each( function(character) {=0A= element.insertBefore(=0A= Builder.node('span',{style: tagifyStyle},=0A= character =3D=3D ' ' ? String.fromCharCode(160) : = character), =0A= child);=0A= });=0A= Element.remove(child);=0A= }=0A= });=0A= },=0A= multiple: function(element, effect) {=0A= var elements;=0A= if(((typeof element =3D=3D 'object') || =0A= (typeof element =3D=3D 'function')) && =0A= (element.length))=0A= elements =3D element;=0A= else=0A= elements =3D $(element).childNodes;=0A= =0A= var options =3D Object.extend({=0A= speed: 0.1,=0A= delay: 0.0=0A= }, arguments[2] || {});=0A= var masterDelay =3D options.delay;=0A= =0A= $A(elements).each( function(element, index) {=0A= new effect(element, Object.extend(options, { delay: index * = options.speed + masterDelay }));=0A= });=0A= },=0A= PAIRS: {=0A= 'slide': ['SlideDown','SlideUp'],=0A= 'blind': ['BlindDown','BlindUp'],=0A= 'appear': ['Appear','Fade']=0A= },=0A= toggle: function(element, effect) {=0A= element =3D $(element);=0A= effect =3D (effect || 'appear').toLowerCase();=0A= var options =3D Object.extend({=0A= queue: { position:'end', scope:(element.id || 'global'), limit: 1 }=0A= }, arguments[2] || {});=0A= Effect[element.visible() ? =0A= Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, = options);=0A= }=0A= };=0A= =0A= var Effect2 =3D Effect; // deprecated=0A= =0A= /* ------------- transitions ------------- */=0A= =0A= Effect.Transitions =3D {=0A= linear: Prototype.K,=0A= sinoidal: function(pos) {=0A= return (-Math.cos(pos*Math.PI)/2) + 0.5;=0A= },=0A= reverse: function(pos) {=0A= return 1-pos;=0A= },=0A= flicker: function(pos) {=0A= return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;=0A= },=0A= wobble: function(pos) {=0A= return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;=0A= },=0A= pulse: function(pos, pulses) { =0A= pulses =3D pulses || 5; =0A= return (=0A= Math.round((pos % (1/pulses)) * pulses) =3D=3D 0 ? =0A= ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : =0A= 1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2))=0A= );=0A= },=0A= none: function(pos) {=0A= return 0;=0A= },=0A= full: function(pos) {=0A= return 1;=0A= }=0A= };=0A= =0A= /* ------------- core effects ------------- */=0A= =0A= Effect.ScopedQueue =3D Class.create();=0A= Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), {=0A= initialize: function() {=0A= this.effects =3D [];=0A= this.interval =3D null;=0A= },=0A= _each: function(iterator) {=0A= this.effects._each(iterator);=0A= },=0A= add: function(effect) {=0A= var timestamp =3D new Date().getTime();=0A= =0A= var position =3D (typeof effect.options.queue =3D=3D 'string') ? =0A= effect.options.queue : effect.options.queue.position;=0A= =0A= switch(position) {=0A= case 'front':=0A= // move unstarted effects after this effect =0A= this.effects.findAll(function(e){ return e.state=3D=3D'idle' = }).each( function(e) {=0A= e.startOn +=3D effect.finishOn;=0A= e.finishOn +=3D effect.finishOn;=0A= });=0A= break;=0A= case 'with-last':=0A= timestamp =3D this.effects.pluck('startOn').max() || timestamp;=0A= break;=0A= case 'end':=0A= // start effect after last queued effect has finished=0A= timestamp =3D this.effects.pluck('finishOn').max() || timestamp;=0A= break;=0A= }=0A= =0A= effect.startOn +=3D timestamp;=0A= effect.finishOn +=3D timestamp;=0A= =0A= if(!effect.options.queue.limit || (this.effects.length < = effect.options.queue.limit))=0A= this.effects.push(effect);=0A= =0A= if(!this.interval) =0A= this.interval =3D setInterval(this.loop.bind(this), 40);=0A= },=0A= remove: function(effect) {=0A= this.effects =3D this.effects.reject(function(e) { return = e=3D=3Deffect });=0A= if(this.effects.length =3D=3D 0) {=0A= clearInterval(this.interval);=0A= this.interval =3D null;=0A= }=0A= },=0A= loop: function() {=0A= var timePos =3D new Date().getTime();=0A= this.effects.invoke('loop', timePos);=0A= }=0A= });=0A= =0A= Effect.Queues =3D {=0A= instances: $H(),=0A= get: function(queueName) {=0A= if(typeof queueName !=3D 'string') return queueName;=0A= =0A= if(!this.instances[queueName])=0A= this.instances[queueName] =3D new Effect.ScopedQueue();=0A= =0A= return this.instances[queueName];=0A= }=0A= }=0A= Effect.Queue =3D Effect.Queues.get('global');=0A= =0A= Effect.DefaultOptions =3D {=0A= transition: Effect.Transitions.sinoidal,=0A= duration: 1.0, // seconds=0A= fps: 25.0, // max. 25fps due to Effect.Queue implementation=0A= sync: false, // true for combining=0A= from: 0.0,=0A= to: 1.0,=0A= delay: 0.0,=0A= queue: 'parallel'=0A= }=0A= =0A= Effect.Base =3D function() {};=0A= Effect.Base.prototype =3D {=0A= position: null,=0A= start: function(options) {=0A= this.options =3D = Object.extend(Object.extend({},Effect.DefaultOptions), options || {});=0A= this.currentFrame =3D 0;=0A= this.state =3D 'idle';=0A= this.startOn =3D this.options.delay*1000;=0A= this.finishOn =3D this.startOn + (this.options.duration*1000);=0A= this.event('beforeStart');=0A= if(!this.options.sync)=0A= Effect.Queues.get(typeof this.options.queue =3D=3D 'string' ? =0A= 'global' : this.options.queue.scope).add(this);=0A= },=0A= loop: function(timePos) {=0A= if(timePos >=3D this.startOn) {=0A= if(timePos >=3D this.finishOn) {=0A= this.render(1.0);=0A= this.cancel();=0A= this.event('beforeFinish');=0A= if(this.finish) this.finish(); =0A= this.event('afterFinish');=0A= return; =0A= }=0A= var pos =3D (timePos - this.startOn) / (this.finishOn - = this.startOn);=0A= var frame =3D Math.round(pos * this.options.fps * = this.options.duration);=0A= if(frame > this.currentFrame) {=0A= this.render(pos);=0A= this.currentFrame =3D frame;=0A= }=0A= }=0A= },=0A= render: function(pos) {=0A= if(this.state =3D=3D 'idle') {=0A= this.state =3D 'running';=0A= this.event('beforeSetup');=0A= if(this.setup) this.setup();=0A= this.event('afterSetup');=0A= }=0A= if(this.state =3D=3D 'running') {=0A= if(this.options.transition) pos =3D this.options.transition(pos);=0A= pos *=3D (this.options.to-this.options.from);=0A= pos +=3D this.options.from;=0A= this.position =3D pos;=0A= this.event('beforeUpdate');=0A= if(this.update) this.update(pos);=0A= this.event('afterUpdate');=0A= }=0A= },=0A= cancel: function() {=0A= if(!this.options.sync)=0A= Effect.Queues.get(typeof this.options.queue =3D=3D 'string' ? =0A= 'global' : this.options.queue.scope).remove(this);=0A= this.state =3D 'finished';=0A= },=0A= event: function(eventName) {=0A= if(this.options[eventName + 'Internal']) this.options[eventName + = 'Internal'](this);=0A= if(this.options[eventName]) this.options[eventName](this);=0A= },=0A= inspect: function() {=0A= return '#';=0A= }=0A= }=0A= =0A= Effect.Parallel =3D Class.create();=0A= Object.extend(Object.extend(Effect.Parallel.prototype, = Effect.Base.prototype), {=0A= initialize: function(effects) {=0A= this.effects =3D effects || [];=0A= this.start(arguments[1]);=0A= },=0A= update: function(position) {=0A= this.effects.invoke('render', position);=0A= },=0A= finish: function(position) {=0A= this.effects.each( function(effect) {=0A= effect.render(1.0);=0A= effect.cancel();=0A= effect.event('beforeFinish');=0A= if(effect.finish) effect.finish(position);=0A= effect.event('afterFinish');=0A= });=0A= }=0A= });=0A= =0A= Effect.Event =3D Class.create();=0A= Object.extend(Object.extend(Effect.Event.prototype, = Effect.Base.prototype), {=0A= initialize: function() {=0A= var options =3D Object.extend({=0A= duration: 0=0A= }, arguments[0] || {});=0A= this.start(options);=0A= },=0A= update: Prototype.emptyFunction=0A= });=0A= =0A= Effect.Opacity =3D Class.create();=0A= Object.extend(Object.extend(Effect.Opacity.prototype, = Effect.Base.prototype), {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if(!this.element) throw(Effect._elementDoesNotExistError);=0A= // make this work on IE on elements without 'layout'=0A= if(/MSIE/.test(navigator.userAgent) && !window.opera && = (!this.element.currentStyle.hasLayout))=0A= this.element.setStyle({zoom: 1});=0A= var options =3D Object.extend({=0A= from: this.element.getOpacity() || 0.0,=0A= to: 1.0=0A= }, arguments[1] || {});=0A= this.start(options);=0A= },=0A= update: function(position) {=0A= this.element.setOpacity(position);=0A= }=0A= });=0A= =0A= Effect.Move =3D Class.create();=0A= Object.extend(Object.extend(Effect.Move.prototype, = Effect.Base.prototype), {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if(!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({=0A= x: 0,=0A= y: 0,=0A= mode: 'relative'=0A= }, arguments[1] || {});=0A= this.start(options);=0A= },=0A= setup: function() {=0A= // Bug in Opera: Opera returns the "real" position of a static = element or=0A= // relative element that does not have top/left explicitly set.=0A= // =3D=3D> Always set top and left for position relative elements in = your stylesheets =0A= // (to 0 if you do not need them) =0A= this.element.makePositioned();=0A= this.originalLeft =3D parseFloat(this.element.getStyle('left') || = '0');=0A= this.originalTop =3D parseFloat(this.element.getStyle('top') || = '0');=0A= if(this.options.mode =3D=3D 'absolute') {=0A= // absolute movement, so we need to calc deltaX and deltaY=0A= this.options.x =3D this.options.x - this.originalLeft;=0A= this.options.y =3D this.options.y - this.originalTop;=0A= }=0A= },=0A= update: function(position) {=0A= this.element.setStyle({=0A= left: Math.round(this.options.x * position + this.originalLeft) + = 'px',=0A= top: Math.round(this.options.y * position + this.originalTop) + = 'px'=0A= });=0A= }=0A= });=0A= =0A= // for backwards compatibility=0A= Effect.MoveBy =3D function(element, toTop, toLeft) {=0A= return new Effect.Move(element, =0A= Object.extend({ x: toLeft, y: toTop }, arguments[3] || {}));=0A= };=0A= =0A= Effect.Scale =3D Class.create();=0A= Object.extend(Object.extend(Effect.Scale.prototype, = Effect.Base.prototype), {=0A= initialize: function(element, percent) {=0A= this.element =3D $(element);=0A= if(!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({=0A= scaleX: true,=0A= scaleY: true,=0A= scaleContent: true,=0A= scaleFromCenter: false,=0A= scaleMode: 'box', // 'box' or 'contents' or {} with = provided values=0A= scaleFrom: 100.0,=0A= scaleTo: percent=0A= }, arguments[2] || {});=0A= this.start(options);=0A= },=0A= setup: function() {=0A= this.restoreAfterFinish =3D this.options.restoreAfterFinish || false;=0A= this.elementPositioning =3D this.element.getStyle('position');=0A= =0A= this.originalStyle =3D {};=0A= ['top','left','width','height','fontSize'].each( function(k) {=0A= this.originalStyle[k] =3D this.element.style[k];=0A= }.bind(this));=0A= =0A= this.originalTop =3D this.element.offsetTop;=0A= this.originalLeft =3D this.element.offsetLeft;=0A= =0A= var fontSize =3D this.element.getStyle('font-size') || '100%';=0A= ['em','px','%','pt'].each( function(fontSizeType) {=0A= if(fontSize.indexOf(fontSizeType)>0) {=0A= this.fontSize =3D parseFloat(fontSize);=0A= this.fontSizeType =3D fontSizeType;=0A= }=0A= }.bind(this));=0A= =0A= this.factor =3D (this.options.scaleTo - this.options.scaleFrom)/100;=0A= =0A= this.dims =3D null;=0A= if(this.options.scaleMode=3D=3D'box')=0A= this.dims =3D [this.element.offsetHeight, = this.element.offsetWidth];=0A= if(/^content/.test(this.options.scaleMode))=0A= this.dims =3D [this.element.scrollHeight, = this.element.scrollWidth];=0A= if(!this.dims)=0A= this.dims =3D [this.options.scaleMode.originalHeight,=0A= this.options.scaleMode.originalWidth];=0A= },=0A= update: function(position) {=0A= var currentScale =3D (this.options.scaleFrom/100.0) + (this.factor * = position);=0A= if(this.options.scaleContent && this.fontSize)=0A= this.element.setStyle({fontSize: this.fontSize * currentScale + = this.fontSizeType });=0A= this.setDimensions(this.dims[0] * currentScale, this.dims[1] * = currentScale);=0A= },=0A= finish: function(position) {=0A= if(this.restoreAfterFinish) = this.element.setStyle(this.originalStyle);=0A= },=0A= setDimensions: function(height, width) {=0A= var d =3D {};=0A= if(this.options.scaleX) d.width =3D Math.round(width) + 'px';=0A= if(this.options.scaleY) d.height =3D Math.round(height) + 'px';=0A= if(this.options.scaleFromCenter) {=0A= var topd =3D (height - this.dims[0])/2;=0A= var leftd =3D (width - this.dims[1])/2;=0A= if(this.elementPositioning =3D=3D 'absolute') {=0A= if(this.options.scaleY) d.top =3D this.originalTop-topd + 'px';=0A= if(this.options.scaleX) d.left =3D this.originalLeft-leftd + = 'px';=0A= } else {=0A= if(this.options.scaleY) d.top =3D -topd + 'px';=0A= if(this.options.scaleX) d.left =3D -leftd + 'px';=0A= }=0A= }=0A= this.element.setStyle(d);=0A= }=0A= });=0A= =0A= Effect.Highlight =3D Class.create();=0A= Object.extend(Object.extend(Effect.Highlight.prototype, = Effect.Base.prototype), {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if(!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({ startcolor: '#ffff99' }, = arguments[1] || {});=0A= this.start(options);=0A= },=0A= setup: function() {=0A= // Prevent executing on elements not in the layout flow=0A= if(this.element.getStyle('display')=3D=3D'none') { this.cancel(); = return; }=0A= // Disable background image during the effect=0A= this.oldStyle =3D {=0A= backgroundImage: this.element.getStyle('background-image') };=0A= this.element.setStyle({backgroundImage: 'none'});=0A= if(!this.options.endcolor)=0A= this.options.endcolor =3D = this.element.getStyle('background-color').parseColor('#ffffff');=0A= if(!this.options.restorecolor)=0A= this.options.restorecolor =3D = this.element.getStyle('background-color');=0A= // init color calculations=0A= this._base =3D $R(0,2).map(function(i){ return = parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));=0A= this._delta =3D $R(0,2).map(function(i){ return = parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] = }.bind(this));=0A= },=0A= update: function(position) {=0A= this.element.setStyle({backgroundColor: = $R(0,2).inject('#',function(m,v,i){=0A= return = m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); = }.bind(this)) });=0A= },=0A= finish: function() {=0A= this.element.setStyle(Object.extend(this.oldStyle, {=0A= backgroundColor: this.options.restorecolor=0A= }));=0A= }=0A= });=0A= =0A= Effect.ScrollTo =3D Class.create();=0A= Object.extend(Object.extend(Effect.ScrollTo.prototype, = Effect.Base.prototype), {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= this.start(arguments[1] || {});=0A= },=0A= setup: function() {=0A= Position.prepare();=0A= var offsets =3D Position.cumulativeOffset(this.element);=0A= if(this.options.offset) offsets[1] +=3D this.options.offset;=0A= var max =3D window.innerHeight ? =0A= window.height - window.innerHeight :=0A= document.body.scrollHeight - =0A= (document.documentElement.clientHeight ? =0A= document.documentElement.clientHeight : = document.body.clientHeight);=0A= this.scrollStart =3D Position.deltaY;=0A= this.delta =3D (offsets[1] > max ? max : offsets[1]) - = this.scrollStart;=0A= },=0A= update: function(position) {=0A= Position.prepare();=0A= window.scrollTo(Position.deltaX, =0A= this.scrollStart + (position*this.delta));=0A= }=0A= });=0A= =0A= /* ------------- combination effects ------------- */=0A= =0A= Effect.Fade =3D function(element) {=0A= element =3D $(element);=0A= var oldOpacity =3D element.getInlineOpacity();=0A= var options =3D Object.extend({=0A= from: element.getOpacity() || 1.0,=0A= to: 0.0,=0A= afterFinishInternal: function(effect) { =0A= if(effect.options.to!=3D0) return;=0A= effect.element.hide().setStyle({opacity: oldOpacity}); =0A= }}, arguments[1] || {});=0A= return new Effect.Opacity(element,options);=0A= }=0A= =0A= Effect.Appear =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= from: (element.getStyle('display') =3D=3D 'none' ? 0.0 : = element.getOpacity() || 0.0),=0A= to: 1.0,=0A= // force Safari to render floated elements properly=0A= afterFinishInternal: function(effect) {=0A= effect.element.forceRerendering();=0A= },=0A= beforeSetup: function(effect) {=0A= effect.element.setOpacity(effect.options.from).show(); =0A= }}, arguments[1] || {});=0A= return new Effect.Opacity(element,options);=0A= }=0A= =0A= Effect.Puff =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D { =0A= opacity: element.getInlineOpacity(), =0A= position: element.getStyle('position'),=0A= top: element.style.top,=0A= left: element.style.left,=0A= width: element.style.width,=0A= height: element.style.height=0A= };=0A= return new Effect.Parallel(=0A= [ new Effect.Scale(element, 200, =0A= { sync: true, scaleFromCenter: true, scaleContent: true, = restoreAfterFinish: true }), =0A= new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], =0A= Object.extend({ duration: 1.0, =0A= beforeSetupInternal: function(effect) {=0A= Position.absolutize(effect.effects[0].element)=0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.effects[0].element.hide().setStyle(oldStyle); }=0A= }, arguments[1] || {})=0A= );=0A= }=0A= =0A= Effect.BlindUp =3D function(element) {=0A= element =3D $(element);=0A= element.makeClipping();=0A= return new Effect.Scale(element, 0,=0A= Object.extend({ scaleContent: false, =0A= scaleX: false, =0A= restoreAfterFinish: true,=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping();=0A= } =0A= }, arguments[1] || {})=0A= );=0A= }=0A= =0A= Effect.BlindDown =3D function(element) {=0A= element =3D $(element);=0A= var elementDimensions =3D element.getDimensions();=0A= return new Effect.Scale(element, 100, Object.extend({ =0A= scaleContent: false, =0A= scaleX: false,=0A= scaleFrom: 0,=0A= scaleMode: {originalHeight: elementDimensions.height, originalWidth: = elementDimensions.width},=0A= restoreAfterFinish: true,=0A= afterSetup: function(effect) {=0A= effect.element.makeClipping().setStyle({height: '0px'}).show(); =0A= }, =0A= afterFinishInternal: function(effect) {=0A= effect.element.undoClipping();=0A= }=0A= }, arguments[1] || {}));=0A= }=0A= =0A= Effect.SwitchOff =3D function(element) {=0A= element =3D $(element);=0A= var oldOpacity =3D element.getInlineOpacity();=0A= return new Effect.Appear(element, Object.extend({=0A= duration: 0.4,=0A= from: 0,=0A= transition: Effect.Transitions.flicker,=0A= afterFinishInternal: function(effect) {=0A= new Effect.Scale(effect.element, 1, { =0A= duration: 0.3, scaleFromCenter: true,=0A= scaleX: false, scaleContent: false, restoreAfterFinish: true,=0A= beforeSetup: function(effect) { =0A= effect.element.makePositioned().makeClipping();=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: = oldOpacity});=0A= }=0A= })=0A= }=0A= }, arguments[1] || {}));=0A= }=0A= =0A= Effect.DropOut =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D {=0A= top: element.getStyle('top'),=0A= left: element.getStyle('left'),=0A= opacity: element.getInlineOpacity() };=0A= return new Effect.Parallel(=0A= [ new Effect.Move(element, {x: 0, y: 100, sync: true }), =0A= new Effect.Opacity(element, { sync: true, to: 0.0 }) ],=0A= Object.extend(=0A= { duration: 0.5,=0A= beforeSetup: function(effect) {=0A= effect.effects[0].element.makePositioned(); =0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);=0A= } =0A= }, arguments[1] || {}));=0A= }=0A= =0A= Effect.Shake =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D {=0A= top: element.getStyle('top'),=0A= left: element.getStyle('left') };=0A= return new Effect.Move(element, =0A= { x: 20, y: 0, duration: 0.05, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: -40, y: 0, duration: 0.1, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: 40, y: 0, duration: 0.1, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: -40, y: 0, duration: 0.1, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: 40, y: 0, duration: 0.1, afterFinishInternal: = function(effect) {=0A= new Effect.Move(effect.element,=0A= { x: -20, y: 0, duration: 0.05, afterFinishInternal: = function(effect) {=0A= effect.element.undoPositioned().setStyle(oldStyle);=0A= }}) }}) }}) }}) }}) }});=0A= }=0A= =0A= Effect.SlideDown =3D function(element) {=0A= element =3D $(element).cleanWhitespace();=0A= // SlideDown need to have the content of the element wrapped in a = container element with fixed height!=0A= var oldInnerBottom =3D element.down().getStyle('bottom');=0A= var elementDimensions =3D element.getDimensions();=0A= return new Effect.Scale(element, 100, Object.extend({ =0A= scaleContent: false, =0A= scaleX: false, =0A= scaleFrom: window.opera ? 0 : 1,=0A= scaleMode: {originalHeight: elementDimensions.height, originalWidth: = elementDimensions.width},=0A= restoreAfterFinish: true,=0A= afterSetup: function(effect) {=0A= effect.element.makePositioned();=0A= effect.element.down().makePositioned();=0A= if(window.opera) effect.element.setStyle({top: ''});=0A= effect.element.makeClipping().setStyle({height: '0px'}).show(); =0A= },=0A= afterUpdateInternal: function(effect) {=0A= effect.element.down().setStyle({bottom:=0A= (effect.dims[0] - effect.element.clientHeight) + 'px' }); =0A= },=0A= afterFinishInternal: function(effect) {=0A= effect.element.undoClipping().undoPositioned();=0A= effect.element.down().undoPositioned().setStyle({bottom: = oldInnerBottom}); }=0A= }, arguments[1] || {})=0A= );=0A= }=0A= =0A= Effect.SlideUp =3D function(element) {=0A= element =3D $(element).cleanWhitespace();=0A= var oldInnerBottom =3D element.down().getStyle('bottom');=0A= return new Effect.Scale(element, window.opera ? 0 : 1,=0A= Object.extend({ scaleContent: false, =0A= scaleX: false, =0A= scaleMode: 'box',=0A= scaleFrom: 100,=0A= restoreAfterFinish: true,=0A= beforeStartInternal: function(effect) {=0A= effect.element.makePositioned();=0A= effect.element.down().makePositioned();=0A= if(window.opera) effect.element.setStyle({top: ''});=0A= effect.element.makeClipping().show();=0A= }, =0A= afterUpdateInternal: function(effect) {=0A= effect.element.down().setStyle({bottom:=0A= (effect.dims[0] - effect.element.clientHeight) + 'px' });=0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: = oldInnerBottom});=0A= effect.element.down().undoPositioned();=0A= }=0A= }, arguments[1] || {})=0A= );=0A= }=0A= =0A= // Bug in opera makes the TD containing this element expand for a = instance after finish =0A= Effect.Squish =3D function(element) {=0A= return new Effect.Scale(element, window.opera ? 1 : 0, { =0A= restoreAfterFinish: true,=0A= beforeSetup: function(effect) {=0A= effect.element.makeClipping(); =0A= }, =0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping(); =0A= }=0A= });=0A= }=0A= =0A= Effect.Grow =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= direction: 'center',=0A= moveTransition: Effect.Transitions.sinoidal,=0A= scaleTransition: Effect.Transitions.sinoidal,=0A= opacityTransition: Effect.Transitions.full=0A= }, arguments[1] || {});=0A= var oldStyle =3D {=0A= top: element.style.top,=0A= left: element.style.left,=0A= height: element.style.height,=0A= width: element.style.width,=0A= opacity: element.getInlineOpacity() };=0A= =0A= var dims =3D element.getDimensions(); =0A= var initialMoveX, initialMoveY;=0A= var moveX, moveY;=0A= =0A= switch (options.direction) {=0A= case 'top-left':=0A= initialMoveX =3D initialMoveY =3D moveX =3D moveY =3D 0; =0A= break;=0A= case 'top-right':=0A= initialMoveX =3D dims.width;=0A= initialMoveY =3D moveY =3D 0;=0A= moveX =3D -dims.width;=0A= break;=0A= case 'bottom-left':=0A= initialMoveX =3D moveX =3D 0;=0A= initialMoveY =3D dims.height;=0A= moveY =3D -dims.height;=0A= break;=0A= case 'bottom-right':=0A= initialMoveX =3D dims.width;=0A= initialMoveY =3D dims.height;=0A= moveX =3D -dims.width;=0A= moveY =3D -dims.height;=0A= break;=0A= case 'center':=0A= initialMoveX =3D dims.width / 2;=0A= initialMoveY =3D dims.height / 2;=0A= moveX =3D -dims.width / 2;=0A= moveY =3D -dims.height / 2;=0A= break;=0A= }=0A= =0A= return new Effect.Move(element, {=0A= x: initialMoveX,=0A= y: initialMoveY,=0A= duration: 0.01, =0A= beforeSetup: function(effect) {=0A= effect.element.hide().makeClipping().makePositioned();=0A= },=0A= afterFinishInternal: function(effect) {=0A= new Effect.Parallel(=0A= [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, = from: 0.0, transition: options.opacityTransition }),=0A= new Effect.Move(effect.element, { x: moveX, y: moveY, sync: = true, transition: options.moveTransition }),=0A= new Effect.Scale(effect.element, 100, {=0A= scaleMode: { originalHeight: dims.height, originalWidth: = dims.width }, =0A= sync: true, scaleFrom: window.opera ? 1 : 0, transition: = options.scaleTransition, restoreAfterFinish: true})=0A= ], Object.extend({=0A= beforeSetup: function(effect) {=0A= effect.effects[0].element.setStyle({height: = '0px'}).show(); =0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldSty= le); =0A= }=0A= }, options)=0A= )=0A= }=0A= });=0A= }=0A= =0A= Effect.Shrink =3D function(element) {=0A= element =3D $(element);=0A= var options =3D Object.extend({=0A= direction: 'center',=0A= moveTransition: Effect.Transitions.sinoidal,=0A= scaleTransition: Effect.Transitions.sinoidal,=0A= opacityTransition: Effect.Transitions.none=0A= }, arguments[1] || {});=0A= var oldStyle =3D {=0A= top: element.style.top,=0A= left: element.style.left,=0A= height: element.style.height,=0A= width: element.style.width,=0A= opacity: element.getInlineOpacity() };=0A= =0A= var dims =3D element.getDimensions();=0A= var moveX, moveY;=0A= =0A= switch (options.direction) {=0A= case 'top-left':=0A= moveX =3D moveY =3D 0;=0A= break;=0A= case 'top-right':=0A= moveX =3D dims.width;=0A= moveY =3D 0;=0A= break;=0A= case 'bottom-left':=0A= moveX =3D 0;=0A= moveY =3D dims.height;=0A= break;=0A= case 'bottom-right':=0A= moveX =3D dims.width;=0A= moveY =3D dims.height;=0A= break;=0A= case 'center': =0A= moveX =3D dims.width / 2;=0A= moveY =3D dims.height / 2;=0A= break;=0A= }=0A= =0A= return new Effect.Parallel(=0A= [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, = transition: options.opacityTransition }),=0A= new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, = transition: options.scaleTransition, restoreAfterFinish: true}),=0A= new Effect.Move(element, { x: moveX, y: moveY, sync: true, = transition: options.moveTransition })=0A= ], Object.extend({ =0A= beforeStartInternal: function(effect) {=0A= effect.effects[0].element.makePositioned().makeClipping(); =0A= },=0A= afterFinishInternal: function(effect) {=0A= = effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle= (oldStyle); }=0A= }, options)=0A= );=0A= }=0A= =0A= Effect.Pulsate =3D function(element) {=0A= element =3D $(element);=0A= var options =3D arguments[1] || {};=0A= var oldOpacity =3D element.getInlineOpacity();=0A= var transition =3D options.transition || Effect.Transitions.sinoidal;=0A= var reverser =3D function(pos){ return = transition(1-Effect.Transitions.pulse(pos, options.pulses)) };=0A= reverser.bind(transition);=0A= return new Effect.Opacity(element, =0A= Object.extend(Object.extend({ duration: 2.0, from: 0,=0A= afterFinishInternal: function(effect) { = effect.element.setStyle({opacity: oldOpacity}); }=0A= }, options), {transition: reverser}));=0A= }=0A= =0A= Effect.Fold =3D function(element) {=0A= element =3D $(element);=0A= var oldStyle =3D {=0A= top: element.style.top,=0A= left: element.style.left,=0A= width: element.style.width,=0A= height: element.style.height };=0A= element.makeClipping();=0A= return new Effect.Scale(element, 5, Object.extend({ =0A= scaleContent: false,=0A= scaleX: false,=0A= afterFinishInternal: function(effect) {=0A= new Effect.Scale(element, 1, { =0A= scaleContent: false, =0A= scaleY: false,=0A= afterFinishInternal: function(effect) {=0A= effect.element.hide().undoClipping().setStyle(oldStyle);=0A= } });=0A= }}, arguments[1] || {}));=0A= };=0A= =0A= Effect.Morph =3D Class.create();=0A= Object.extend(Object.extend(Effect.Morph.prototype, = Effect.Base.prototype), {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= if(!this.element) throw(Effect._elementDoesNotExistError);=0A= var options =3D Object.extend({=0A= style: ''=0A= }, arguments[1] || {});=0A= this.start(options);=0A= },=0A= setup: function(){=0A= function parseColor(color){=0A= if(!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) = color =3D '#ffffff';=0A= color =3D color.parseColor();=0A= return $R(0,2).map(function(i){=0A= return parseInt( color.slice(i*2+1,i*2+3), 16 ) =0A= });=0A= }=0A= this.transforms =3D = this.options.style.parseStyle().map(function(property){=0A= var originalValue =3D this.element.getStyle(property[0]);=0A= return $H({ =0A= style: property[0], =0A= originalValue: property[1].unit=3D=3D'color' ? =0A= parseColor(originalValue) : parseFloat(originalValue || 0), =0A= targetValue: property[1].unit=3D=3D'color' ? =0A= parseColor(property[1].value) : property[1].value,=0A= unit: property[1].unit=0A= });=0A= }.bind(this)).reject(function(transform){=0A= return (=0A= (transform.originalValue =3D=3D transform.targetValue) ||=0A= (=0A= transform.unit !=3D 'color' &&=0A= (isNaN(transform.originalValue) || = isNaN(transform.targetValue))=0A= )=0A= )=0A= });=0A= },=0A= update: function(position) {=0A= var style =3D $H(), value =3D null;=0A= this.transforms.each(function(transform){=0A= value =3D transform.unit=3D=3D'color' ?=0A= $R(0,2).inject('#',function(m,v,i){=0A= return m+(Math.round(transform.originalValue[i]+=0A= (transform.targetValue[i] - = transform.originalValue[i])*position)).toColorPart() }) : =0A= transform.originalValue + Math.round(=0A= ((transform.targetValue - transform.originalValue) * position) = * 1000)/1000 + transform.unit;=0A= style[transform.style] =3D value;=0A= });=0A= this.element.setStyle(style);=0A= }=0A= });=0A= =0A= Effect.Transform =3D Class.create();=0A= Object.extend(Effect.Transform.prototype, {=0A= initialize: function(tracks){=0A= this.tracks =3D [];=0A= this.options =3D arguments[1] || {};=0A= this.addTracks(tracks);=0A= },=0A= addTracks: function(tracks){=0A= tracks.each(function(track){=0A= var data =3D $H(track).values().first();=0A= this.tracks.push($H({=0A= ids: $H(track).keys().first(),=0A= effect: Effect.Morph,=0A= options: { style: data }=0A= }));=0A= }.bind(this));=0A= return this;=0A= },=0A= play: function(){=0A= return new Effect.Parallel(=0A= this.tracks.map(function(track){=0A= var elements =3D [$(track.ids) || $$(track.ids)].flatten();=0A= return elements.map(function(e){ return new track.effect(e, = Object.extend({ sync:true }, track.options)) });=0A= }).flatten(),=0A= this.options=0A= );=0A= }=0A= });=0A= =0A= Element.CSS_PROPERTIES =3D ['azimuth', 'backgroundAttachment', = 'backgroundColor', 'backgroundImage', =0A= 'backgroundPosition', 'backgroundRepeat', 'borderBottomColor', = 'borderBottomStyle', =0A= 'borderBottomWidth', 'borderCollapse', 'borderLeftColor', = 'borderLeftStyle', 'borderLeftWidth',=0A= 'borderRightColor', 'borderRightStyle', 'borderRightWidth', = 'borderSpacing', 'borderTopColor',=0A= 'borderTopStyle', 'borderTopWidth', 'bottom', 'captionSide', 'clear', = 'clip', 'color', 'content',=0A= 'counterIncrement', 'counterReset', 'cssFloat', 'cueAfter', = 'cueBefore', 'cursor', 'direction',=0A= 'display', 'elevation', 'emptyCells', 'fontFamily', 'fontSize', = 'fontSizeAdjust', 'fontStretch',=0A= 'fontStyle', 'fontVariant', 'fontWeight', 'height', 'left', = 'letterSpacing', 'lineHeight',=0A= 'listStyleImage', 'listStylePosition', 'listStyleType', = 'marginBottom', 'marginLeft', 'marginRight',=0A= 'marginTop', 'markerOffset', 'marks', 'maxHeight', 'maxWidth', = 'minHeight', 'minWidth', 'opacity',=0A= 'orphans', 'outlineColor', 'outlineOffset', 'outlineStyle', = 'outlineWidth', 'overflowX', 'overflowY',=0A= 'paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop', 'page', = 'pageBreakAfter', 'pageBreakBefore',=0A= 'pageBreakInside', 'pauseAfter', 'pauseBefore', 'pitch', 'pitchRange', = 'position', 'quotes',=0A= 'richness', 'right', 'size', 'speakHeader', 'speakNumeral', = 'speakPunctuation', 'speechRate', 'stress',=0A= 'tableLayout', 'textAlign', 'textDecoration', 'textIndent', = 'textShadow', 'textTransform', 'top',=0A= 'unicodeBidi', 'verticalAlign', 'visibility', 'voiceFamily', 'volume', = 'whiteSpace', 'widows',=0A= 'width', 'wordSpacing', 'zIndex'];=0A= =0A= Element.CSS_LENGTH =3D = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;=0A= =0A= String.prototype.parseStyle =3D function(){=0A= var element =3D Element.extend(document.createElement('div'));=0A= element.innerHTML =3D '
';=0A= var style =3D element.down().style, styleRules =3D $H();=0A= =0A= Element.CSS_PROPERTIES.each(function(property){=0A= if(style[property]) styleRules[property] =3D style[property]; =0A= });=0A= =0A= var result =3D $H();=0A= =0A= styleRules.each(function(pair){=0A= var property =3D pair[0], value =3D pair[1], unit =3D null;=0A= =0A= if(value.parseColor('#zzzzzz') !=3D '#zzzzzz') {=0A= value =3D value.parseColor();=0A= unit =3D 'color';=0A= } else if(Element.CSS_LENGTH.test(value)) =0A= var components =3D value.match(/^([\+\-]?[0-9\.]+)(.*)$/),=0A= value =3D parseFloat(components[1]), unit =3D = (components.length =3D=3D 3) ? components[2] : null;=0A= =0A= result[property.underscore().dasherize()] =3D $H({ value:value, = unit:unit });=0A= }.bind(this));=0A= =0A= return result;=0A= };=0A= =0A= Element.morph =3D function(element, style) {=0A= new Effect.Morph(element, Object.extend({ style: style }, arguments[2] = || {}));=0A= return element;=0A= };=0A= =0A= ['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setCont= entZoom',=0A= 'collectTextNodes','collectTextNodesIgnoreClass','morph'].each( =0A= function(f) { Element.Methods[f] =3D Element[f]; }=0A= );=0A= =0A= Element.Methods.visualEffect =3D function(element, effect, options) {=0A= s =3D effect.gsub(/_/, '-').camelize();=0A= effect_class =3D s.charAt(0).toUpperCase() + s.substring(1);=0A= new Effect[effect_class](element, options);=0A= return $(element);=0A= };=0A= =0A= Element.addMethods(); ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.news.wisc.edu/javascripts/swfobject.js?1180465530 /** * SWFObject v1.4.4: Flash Player detection and embed - = http://blog.deconcept.com/swfobject/ * * SWFObject is (c) 2006 Geoff Stearns and is released under the MIT = License: * http://www.opensource.org/licenses/mit-license.php * * **SWFObject is the SWF embed script formerly known as FlashObject. = The name was changed for * legal reasons. */ if(typeof deconcept=3D=3D"undefined"){var deconcept=3Dnew Object();} if(typeof deconcept.util=3D=3D"undefined"){deconcept.util=3Dnew = Object();} if(typeof = deconcept.SWFObjectUtil=3D=3D"undefined"){deconcept.SWFObjectUtil=3Dnew = Object();} deconcept.SWFObject=3Dfunction(_1,id,w,h,_5,c,_7,_8,_9,_a,_b){if(!documen= t.getElementById){return;} this.DETECT_KEY=3D_b?_b:"detectflash"; this.skipDetect=3Ddeconcept.util.getRequestParameter(this.DETECT_KEY); this.params=3Dnew Object(); this.variables=3Dnew Object(); this.attributes=3Dnew Array(); if(_1){this.setAttribute("swf",_1);} if(id){this.setAttribute("id",id);} if(w){this.setAttribute("width",w);} if(h){this.setAttribute("height",h);} if(_5){this.setAttribute("version",new = deconcept.PlayerVersion(_5.toString().split(".")));} this.installedVer=3Ddeconcept.SWFObjectUtil.getPlayerVersion(); if(c){this.addParam("bgcolor",c);} var q=3D_8?_8:"high"; this.addParam("quality",q); this.setAttribute("useExpressInstall",_7); this.setAttribute("doExpressInstall",false); var _d=3D(_9)?_9:window.location; this.setAttribute("xiRedirectUrl",_d); this.setAttribute("redirectUrl",""); if(_a){this.setAttribute("redirectUrl",_a);}}; deconcept.SWFObject.prototype=3D{setAttribute:function(_e,_f){ this.attributes[_e]=3D_f; },getAttribute:function(_10){ return this.attributes[_10]; },addParam:function(_11,_12){ this.params[_11]=3D_12; },getParams:function(){ return this.params; },addVariable:function(_13,_14){ this.variables[_13]=3D_14; },getVariable:function(_15){ return this.variables[_15]; },getVariables:function(){ return this.variables; },getVariablePairs:function(){ var _16=3Dnew Array(); var key; var _18=3Dthis.getVariables(); for(key in _18){_16.push(key+"=3D"+_18[key]);} return _16;},getSWFHTML:function(){var _19=3D""; if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){ if(this.getAttribute("doExpressInstall")){ this.addVariable("MMplayerType","PlugIn");} _19=3D"0){_19+=3D"flashvars=3D\""+_1c+"\"";}_19+=3D"/>"; }else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplaye= rType","ActiveX");} _19=3D""; _19+=3D""; var _1d=3Dthis.getParams(); for(var key in _1d){_19+=3D"";} var _1f=3Dthis.getVariablePairs().join("&"); if(_1f.length>0){_19+=3D"";}_19+=3D"";} return _19; },write:function(_20){ if(this.getAttribute("useExpressInstall")){ var _21=3Dnew deconcept.PlayerVersion([6,0,65]); if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsVal= id(this.getAttribute("version"))){ this.setAttribute("doExpressInstall",true); this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl"= ))); document.title=3Ddocument.title.slice(0,47)+" - Flash Player = Installation"; this.addVariable("MMdoctitle",document.title);}} if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installed= Ver.versionIsValid(this.getAttribute("version"))){ var n=3D(typeof _20=3D=3D"string")?document.getElementById(_20):_20; n.innerHTML=3Dthis.getSWFHTML();return true; }else{if(this.getAttribute("redirectUrl")!=3D""){document.location.replac= e(this.getAttribute("redirectUrl"));}} return false;}}; deconcept.SWFObjectUtil.getPlayerVersion=3Dfunction(){ var _23=3Dnew deconcept.PlayerVersion([0,0,0]); if(navigator.plugins&&navigator.mimeTypes.length){ var x=3Dnavigator.plugins["Shockwave Flash"]; if(x&&x.description){_23=3Dnew = deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replac= e(/(\s+r|\s+b[0-9]+)/,".").split("."));} }else{try{var axo=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");} catch(e){try{var axo=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); _23=3Dnew = deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess=3D"always";} catch(e){if(_23.major=3D=3D6){return _23;}}try{axo=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash");} catch(e){}}if(axo!=3Dnull){_23=3Dnew = deconcept.PlayerVersion(axo.GetVariable("$version").split(" = ")[1].split(","));}} return _23;}; deconcept.PlayerVersion=3Dfunction(_27){ this.major=3D_27[0]!=3Dnull?parseInt(_27[0]):0; this.minor=3D_27[1]!=3Dnull?parseInt(_27[1]):0; this.rev=3D_27[2]!=3Dnull?parseInt(_27[2]):0; }; deconcept.PlayerVersion.prototype.versionIsValid=3Dfunction(fv){ if(this.majorfv.major){return true;} if(this.minorfv.minor){return true;} if(this.rev=0A= * @copyright 2007 Curbly LLC=0A= * @package Glider=0A= * @license MIT=0A= * @url http://www.missingmethod.com/projects/glider/=0A= * @version 0.0.3=0A= * @dependencies prototype.js 1.5.1+, effects.js=0A= */=0A= =0A= /* Thanks to Andrew Dupont for refactoring help and code cleanup - = http://andrewdupont.net/ */=0A= =0A= Glider =3D Class.create();=0A= Object.extend(Object.extend(Glider.prototype, Abstract.prototype), {=0A= initialize: function(wrapper, options){=0A= this.scrolling =3D false;=0A= this.wrapper =3D $(wrapper);=0A= this.scroller =3D this.wrapper.down('div.scroller');=0A= this.sections =3D = this.wrapper.getElementsBySelector('div.section');=0A= this.options =3D Object.extend({ duration: 1.0, frequency: 3 }, = options || {});=0A= =0A= this.sections.each( function(section, index) {=0A= section._index =3D index;=0A= }); =0A= =0A= this.events =3D {=0A= click: this.click.bind(this)=0A= };=0A= =0A= this.addObservers();=0A= if(this.options.initialSection) = this.moveTo(this.options.initialSection, this.scroller, { = duration:this.options.duration }); // initialSection should be the id = of the section you want to show up on load=0A= if(this.options.autoGlide) this.start();=0A= },=0A= =0A= addObservers: function() {=0A= var controls =3D this.wrapper.getElementsBySelector('div.controls = a');=0A= controls.invoke('observe', 'click', this.events.click);=0A= }, =0A= =0A= click: function(event) {=0A= this.stop();=0A= var element =3D Event.findElement(event, 'a');=0A= if (this.scrolling) this.scrolling.cancel();=0A= =0A= this.moveTo(element.href.split("#")[1], this.scroller, { = duration:this.options.duration }); =0A= Event.stop(event);=0A= },=0A= =0A= moveTo: function(element, container, options){=0A= this.current =3D $(element);=0A= =0A= Position.prepare();=0A= var containerOffset =3D Position.cumulativeOffset(container),=0A= elementOffset =3D Position.cumulativeOffset($(element));=0A= =0A= this.scrolling =3D new Effect.SmoothScroll(container, =0A= {duration:options.duration, x:(elementOffset[0]-containerOffset[0]), = y:(elementOffset[1]-containerOffset[1])});=0A= return false;=0A= },=0A= =0A= next: function(){=0A= if (this.current) {=0A= var currentIndex =3D this.current._index;=0A= var nextIndex =3D (this.sections.length - 1 =3D=3D currentIndex) ? = 0 : currentIndex + 1; =0A= } else var nextIndex =3D 1;=0A= =0A= this.moveTo(this.sections[nextIndex], this.scroller, { =0A= duration: this.options.duration=0A= });=0A= },=0A= =0A= previous: function(){=0A= if (this.current) {=0A= var currentIndex =3D this.current._index;=0A= var prevIndex =3D (currentIndex =3D=3D 0) ? this.sections.length - = 1 : =0A= currentIndex - 1;=0A= } else var prevIndex =3D this.sections.length - 1;=0A= =0A= this.moveTo(this.sections[prevIndex], this.scroller, { =0A= duration: this.options.duration=0A= });=0A= },=0A= =0A= stop: function()=0A= {=0A= clearTimeout(this.timer);=0A= },=0A= =0A= start: function()=0A= {=0A= this.periodicallyUpdate();=0A= },=0A= =0A= periodicallyUpdate: function()=0A= { =0A= if (this.timer !=3D null) {=0A= clearTimeout(this.timer);=0A= this.next();=0A= }=0A= this.timer =3D setTimeout(this.periodicallyUpdate.bind(this), = this.options.frequency*1000);=0A= }=0A= =0A= });=0A= =0A= Effect.SmoothScroll =3D Class.create();=0A= Object.extend(Object.extend(Effect.SmoothScroll.prototype, = Effect.Base.prototype), {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= var options =3D Object.extend({=0A= x: 0,=0A= y: 0,=0A= mode: 'absolute'=0A= } , arguments[1] || {} );=0A= this.start(options);=0A= },=0A= setup: function() {=0A= if (this.options.continuous && !this.element._ext ) {=0A= this.element.cleanWhitespace();=0A= this.element._ext=3Dtrue;=0A= this.element.appendChild(this.element.firstChild);=0A= }=0A= =0A= this.originalLeft=3Dthis.element.scrollLeft;=0A= this.originalTop=3Dthis.element.scrollTop;=0A= =0A= if(this.options.mode =3D=3D 'absolute') {=0A= this.options.x -=3D this.originalLeft;=0A= this.options.y -=3D this.originalTop;=0A= } =0A= },=0A= update: function(position) { =0A= this.element.scrollLeft =3D this.options.x * position + = this.originalLeft;=0A= this.element.scrollTop =3D this.options.y * position + = this.originalTop;=0A= }=0A= }); ------=_NextPart_000_0000_01C82248.2385CC60 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.google-analytics.com/urchin.js //-- Google Analytics Urchin Module=0A= //-- Copyright 2007 Google, All Rights Reserved.=0A= =0A= //-- Urchin On Demand Settings ONLY=0A= var _uacct=3D""; // set up the Urchin Account=0A= var _userv=3D1; // service mode (0=3Dlocal,1=3Dremote,2=3Dboth)=0A= =0A= //-- UTM User Settings=0A= var _ufsc=3D1; // set client info flag (1=3Don|0=3Doff)=0A= var _udn=3D"auto"; // (auto|none|domain) set the domain name for cookies=0A= var _uhash=3D"on"; // (on|off) unique domain hash for cookies=0A= var _utimeout=3D"1800"; // set the inactive session timeout in seconds=0A= var _ugifpath=3D"/__utm.gif"; // set the web path to the __utm.gif file=0A= var _utsp=3D"|"; // transaction field separator=0A= var _uflash=3D1; // set flash version detect option (1=3Don|0=3Doff)=0A= var _utitle=3D1; // set the document title detect option = (1=3Don|0=3Doff)=0A= var _ulink=3D0; // enable linker functionality (1=3Don|0=3Doff)=0A= var _uanchor=3D0; // enable use of anchors for campaign = (1=3Don|0=3Doff)=0A= var _utcp=3D"/"; // the cookie path for tracking=0A= var _usample=3D100; // The sampling % of visitors to track (1-100).=0A= =0A= //-- UTM Campaign Tracking Settings=0A= var _uctm=3D1; // set campaign tracking module (1=3Don|0=3Doff)=0A= var _ucto=3D"15768000"; // set timeout in seconds (6 month default)=0A= var _uccn=3D"utm_campaign"; // name=0A= var _ucmd=3D"utm_medium"; // medium (cpc|cpm|link|email|organic)=0A= var _ucsr=3D"utm_source"; // source=0A= var _uctr=3D"utm_term"; // term/keyword=0A= var _ucct=3D"utm_content"; // content=0A= var _ucid=3D"utm_id"; // id number=0A= var _ucno=3D"utm_nooverride"; // don't override=0A= =0A= //-- Auto/Organic Sources and Keywords=0A= var _uOsr=3Dnew Array();=0A= var _uOkw=3Dnew Array();=0A= _uOsr[0]=3D"google"; _uOkw[0]=3D"q";=0A= _uOsr[1]=3D"yahoo"; _uOkw[1]=3D"p";=0A= _uOsr[2]=3D"msn"; _uOkw[2]=3D"q";=0A= _uOsr[3]=3D"aol"; _uOkw[3]=3D"query";=0A= _uOsr[4]=3D"aol"; _uOkw[4]=3D"encquery";=0A= _uOsr[5]=3D"lycos"; _uOkw[5]=3D"query";=0A= _uOsr[6]=3D"ask"; _uOkw[6]=3D"q";=0A= _uOsr[7]=3D"altavista"; _uOkw[7]=3D"q";=0A= _uOsr[8]=3D"netscape"; _uOkw[8]=3D"query";=0A= _uOsr[9]=3D"cnn"; _uOkw[9]=3D"query";=0A= _uOsr[10]=3D"looksmart"; _uOkw[10]=3D"qt";=0A= _uOsr[11]=3D"about"; _uOkw[11]=3D"terms";=0A= _uOsr[12]=3D"mamma"; _uOkw[12]=3D"query";=0A= _uOsr[13]=3D"alltheweb"; _uOkw[13]=3D"q";=0A= _uOsr[14]=3D"gigablast"; _uOkw[14]=3D"q";=0A= _uOsr[15]=3D"voila"; _uOkw[15]=3D"rdata";=0A= _uOsr[16]=3D"virgilio"; _uOkw[16]=3D"qs";=0A= _uOsr[17]=3D"live"; _uOkw[17]=3D"q";=0A= _uOsr[18]=3D"baidu"; _uOkw[18]=3D"wd";=0A= _uOsr[19]=3D"alice"; _uOkw[19]=3D"qs";=0A= _uOsr[20]=3D"yandex"; _uOkw[20]=3D"text";=0A= _uOsr[21]=3D"najdi"; _uOkw[21]=3D"q";=0A= _uOsr[22]=3D"aol"; _uOkw[22]=3D"q";=0A= _uOsr[23]=3D"club-internet"; _uOkw[23]=3D"q";=0A= _uOsr[24]=3D"mama"; _uOkw[24]=3D"query";=0A= _uOsr[25]=3D"seznam"; _uOkw[25]=3D"q";=0A= _uOsr[26]=3D"search"; _uOkw[26]=3D"q";=0A= _uOsr[27]=3D"szukaj"; _uOkw[27]=3D"szukaj";=0A= _uOsr[28]=3D"szukaj"; _uOkw[28]=3D"qt";=0A= _uOsr[29]=3D"netsprint"; _uOkw[29]=3D"q";=0A= _uOsr[30]=3D"google.interia"; _uOkw[30]=3D"q";=0A= _uOsr[31]=3D"szukacz"; _uOkw[31]=3D"q";=0A= _uOsr[32]=3D"yam"; _uOkw[32]=3D"k";=0A= _uOsr[33]=3D"pchome"; _uOkw[33]=3D"q";=0A= =0A= =0A= //-- Auto/Organic Keywords to Ignore=0A= var _uOno=3Dnew Array();=0A= //_uOno[0]=3D"urchin";=0A= //_uOno[1]=3D"urchin.com";=0A= //_uOno[2]=3D"www.urchin.com";=0A= =0A= //-- Referral domains to Ignore=0A= var _uRno=3Dnew Array();=0A= //_uRno[0]=3D".urchin.com";=0A= =0A= //-- **** Don't modify below this point ***=0A= var = _uff,_udh,_udt,_ubl=3D0,_udo=3D"",_uu,_ufns=3D0,_uns=3D0,_ur=3D"-",_ufno=3D= 0,_ust=3D0,_ubd=3Ddocument,_udl=3D_ubd.location,_udlh=3D"",_uwv=3D"1";=0A= var _ugifpath2=3D"http://www.google-analytics.com/__utm.gif";=0A= if (_udl.hash) _udlh=3D_udl.href.substring(_udl.href.indexOf('#'));=0A= if (_udl.protocol=3D=3D"https:") = _ugifpath2=3D"https://ssl.google-analytics.com/__utm.gif";=0A= if (!_utcp || _utcp=3D=3D"") _utcp=3D"/";=0A= function urchinTracker(page) {=0A= if (_udl.protocol=3D=3D"file:") return;=0A= if (_uff && (!page || page=3D=3D"")) return;=0A= var a,b,c,xx,v,z,k,x=3D"",s=3D"",f=3D0;=0A= var nx=3D" expires=3D"+_uNx()+";";=0A= var dc=3D_ubd.cookie;=0A= _udh=3D_uDomain();=0A= if (!_uVG()) return;=0A= _uu=3DMath.round(Math.random()*2147483647);=0A= _udt=3Dnew Date();=0A= _ust=3DMath.round(_udt.getTime()/1000);=0A= a=3Ddc.indexOf("__utma=3D"+_udh);=0A= b=3Ddc.indexOf("__utmb=3D"+_udh);=0A= c=3Ddc.indexOf("__utmc=3D"+_udh);=0A= if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A= if (_utimeout && _utimeout!=3D"") {=0A= x=3Dnew Date(_udt.getTime()+(_utimeout*1000));=0A= x=3D" expires=3D"+x.toGMTString()+";";=0A= }=0A= if (_ulink) {=0A= if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A= s+=3D_udl.search;=0A= if(s && s!=3D"" && s.indexOf("__utma=3D")>=3D0) {=0A= if (!(_uIN(a=3D_uGC(s,"__utma=3D","&")))) a=3D"-";=0A= if (!(_uIN(b=3D_uGC(s,"__utmb=3D","&")))) b=3D"-";=0A= if (!(_uIN(c=3D_uGC(s,"__utmc=3D","&")))) c=3D"-";=0A= v=3D_uGC(s,"__utmv=3D","&");=0A= z=3D_uGC(s,"__utmz=3D","&");=0A= k=3D_uGC(s,"__utmk=3D","&");=0A= xx=3D_uGC(s,"__utmx=3D","&");=0A= if ((k*1) !=3D ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) = {_ubl=3D1;a=3D"-";b=3D"-";c=3D"-";xx=3D"-";z=3D"-";v=3D"-";}=0A= if (a!=3D"-" && b!=3D"-" && c!=3D"-") f=3D1;=0A= else if(a!=3D"-") f=3D2;=0A= }=0A= }=0A= if(f=3D=3D1) {=0A= _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A= _ubd.cookie=3D"__utmb=3D"+b+"; path=3D"+_utcp+";"+x+_udo;=0A= _ubd.cookie=3D"__utmc=3D"+c+"; path=3D"+_utcp+";"+_udo;=0A= } else if (f=3D=3D2) {=0A= a=3D_uFixA(s,"&",_ust);=0A= _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A= _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A= _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A= _ufns=3D1;=0A= } else if (a>=3D0 && b>=3D0 && c>=3D0) {=0A= _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A= } else {=0A= if (a>=3D0) a=3D_uFixA(_ubd.cookie,";",_ust);=0A= else a=3D_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1";=0A= _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A= _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A= _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A= _ufns=3D1;=0A= }=0A= if (_ulink && xx && xx!=3D"" && xx!=3D"-") {=0A= xx=3D_uUES(xx);=0A= if (xx.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmx=3D"+xx+"; = path=3D"+_utcp+";"+nx+_udo;=0A= }=0A= if (_ulink && v && v!=3D"" && v!=3D"-") {=0A= v=3D_uUES(v);=0A= if (v.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmv=3D"+v+"; = path=3D"+_utcp+";"+nx+_udo;=0A= }=0A= _uInfo(page);=0A= _ufns=3D0;=0A= _ufno=3D0;=0A= if (!page || page=3D=3D"") _uff=3D1;=0A= }=0A= function _uInfo(page) {=0A= var p,s=3D"",dm=3D"",pg=3D_udl.pathname+_udl.search;=0A= if (page && page!=3D"") pg=3D_uES(page,1);=0A= _ur=3D_ubd.referrer;=0A= if (!_ur || _ur=3D=3D"") { _ur=3D"-"; }=0A= else {=0A= dm=3D_ubd.domain;=0A= if(_utcp && _utcp!=3D"/") dm+=3D_utcp;=0A= p=3D_ur.indexOf(dm);=0A= if ((p>=3D0) && (p<=3D8)) { _ur=3D"0"; }=0A= if (_ur.indexOf("[")=3D=3D0 && = _ur.lastIndexOf("]")=3D=3D(_ur.length-1)) { _ur=3D"-"; }=0A= }=0A= s+=3D"&utmn=3D"+_uu;=0A= if (_ufsc) s+=3D_uBInfo();=0A= if (_uctm) s+=3D_uCInfo();=0A= if (_utitle && _ubd.title && _ubd.title!=3D"") = s+=3D"&utmdt=3D"+_uES(_ubd.title);=0A= if (_udl.hostname && _udl.hostname!=3D"") = s+=3D"&utmhn=3D"+_uES(_udl.hostname);=0A= s+=3D"&utmr=3D"+_ur;=0A= s+=3D"&utmp=3D"+pg;=0A= if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A= var i=3Dnew Image(1,1);=0A= i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A= i.onload=3Dfunction() {_uVoid();}=0A= }=0A= if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A= var i2=3Dnew Image(1,1);=0A= = i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+= _uGCS();=0A= i2.onload=3Dfunction() { _uVoid(); }=0A= }=0A= return;=0A= }=0A= function _uVoid() { return; }=0A= function _uCInfo() {=0A= if (!_ucto || _ucto=3D=3D"") { _ucto=3D"15768000"; }=0A= if (!_uVG()) return;=0A= var = c=3D"",t=3D"-",t2=3D"-",t3=3D"-",o=3D0,cs=3D0,cn=3D0,i=3D0,z=3D"-",s=3D""= ;=0A= if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A= s+=3D_udl.search;=0A= var x=3Dnew Date(_udt.getTime()+(_ucto*1000));=0A= var dc=3D_ubd.cookie;=0A= x=3D" expires=3D"+x.toGMTString()+";";=0A= if (_ulink && !_ubl) {=0A= z=3D_uUES(_uGC(s,"__utmz=3D","&"));=0A= if (z!=3D"-" && z.indexOf(";")=3D=3D-1) { = _ubd.cookie=3D"__utmz=3D"+z+"; path=3D"+_utcp+";"+x+_udo; return ""; }=0A= }=0A= z=3Ddc.indexOf("__utmz=3D"+_udh);=0A= if (z>-1) { z=3D_uGC(dc,"__utmz=3D"+_udh,";"); }=0A= else { z=3D"-"; }=0A= t=3D_uGC(s,_ucid+"=3D","&");=0A= t2=3D_uGC(s,_ucsr+"=3D","&");=0A= t3=3D_uGC(s,"gclid=3D","&");=0A= if ((t!=3D"-" && t!=3D"") || (t2!=3D"-" && t2!=3D"") || (t3!=3D"-" && = t3!=3D"")) {=0A= if (t!=3D"-" && t!=3D"") c+=3D"utmcid=3D"+_uEC(t);=0A= if (t2!=3D"-" && t2!=3D"") { if (c !=3D "") c+=3D"|"; = c+=3D"utmcsr=3D"+_uEC(t2); }=0A= if (t3!=3D"-" && t3!=3D"") { if (c !=3D "") c+=3D"|"; = c+=3D"utmgclid=3D"+_uEC(t3); }=0A= t=3D_uGC(s,_uccn+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmccn=3D"+_uEC(t);=0A= else c+=3D"|utmccn=3D(not+set)";=0A= t=3D_uGC(s,_ucmd+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmcmd=3D"+_uEC(t);=0A= else c+=3D"|utmcmd=3D(not+set)";=0A= t=3D_uGC(s,_uctr+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmctr=3D"+_uEC(t);=0A= else { t=3D_uOrg(1); if (t!=3D"-" && t!=3D"") = c+=3D"|utmctr=3D"+_uEC(t); }=0A= t=3D_uGC(s,_ucct+"=3D","&");=0A= if (t!=3D"-" && t!=3D"") c+=3D"|utmcct=3D"+_uEC(t);=0A= t=3D_uGC(s,_ucno+"=3D","&");=0A= if (t=3D=3D"1") o=3D1;=0A= if (z!=3D"-" && o=3D=3D1) return "";=0A= }=0A= if (c=3D=3D"-" || c=3D=3D"") { c=3D_uOrg(); if (z!=3D"-" && = _ufno=3D=3D1) return ""; }=0A= if (c=3D=3D"-" || c=3D=3D"") { if (_ufns=3D=3D1) c=3D_uRef(); if = (z!=3D"-" && _ufno=3D=3D1) return ""; }=0A= if (c=3D=3D"-" || c=3D=3D"") {=0A= if (z=3D=3D"-" && _ufns=3D=3D1) { = c=3D"utmccn=3D(direct)|utmcsr=3D(direct)|utmcmd=3D(none)"; }=0A= if (c=3D=3D"-" || c=3D=3D"") return "";=0A= }=0A= if (z!=3D"-") {=0A= i=3Dz.indexOf(".");=0A= if (i>-1) i=3Dz.indexOf(".",i+1);=0A= if (i>-1) i=3Dz.indexOf(".",i+1);=0A= if (i>-1) i=3Dz.indexOf(".",i+1);=0A= t=3Dz.substring(i+1,z.length);=0A= if (t.toLowerCase()=3D=3Dc.toLowerCase()) cs=3D1;=0A= t=3Dz.substring(0,i);=0A= if ((i=3Dt.lastIndexOf(".")) > -1) {=0A= t=3Dt.substring(i+1,t.length);=0A= cn=3D(t*1);=0A= }=0A= }=0A= if (cs=3D=3D0 || _ufns=3D=3D1) {=0A= t=3D_uGC(dc,"__utma=3D"+_udh,";");=0A= if ((i=3Dt.lastIndexOf(".")) > 9) {=0A= _uns=3Dt.substring(i+1,t.length);=0A= _uns=3D(_uns*1);=0A= }=0A= cn++;=0A= if (_uns=3D=3D0) _uns=3D1;=0A= _ubd.cookie=3D"__utmz=3D"+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; = path=3D"+_utcp+"; "+x+_udo;=0A= }=0A= if (cs=3D=3D0 || _ufns=3D=3D1) return "&utmcn=3D1";=0A= else return "&utmcr=3D1";=0A= }=0A= function _uRef() {=0A= if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A= var i=3D0,h,k,n;=0A= if ((i=3D_ur.indexOf("://"))<0) return "";=0A= h=3D_ur.substring(i+3,_ur.length);=0A= if (h.indexOf("/") > -1) {=0A= k=3Dh.substring(h.indexOf("/"),h.length);=0A= if (k.indexOf("?") > -1) k=3Dk.substring(0,k.indexOf("?"));=0A= h=3Dh.substring(0,h.indexOf("/"));=0A= }=0A= h=3Dh.toLowerCase();=0A= n=3Dh;=0A= if ((i=3Dn.indexOf(":")) > -1) n=3Dn.substring(0,i);=0A= for (var ii=3D0;ii<_uRno.length;ii++) {=0A= if ((i=3Dn.indexOf(_uRno[ii].toLowerCase())) > -1 && = n.length=3D=3D(i+_uRno[ii].length)) { _ufno=3D1; break; }=0A= }=0A= if (h.indexOf("www.")=3D=3D0) h=3Dh.substring(4,h.length);=0A= return = "utmccn=3D(referral)|utmcsr=3D"+_uEC(h)+"|"+"utmcct=3D"+_uEC(k)+"|utmcmd=3D= referral";=0A= }=0A= function _uOrg(t) {=0A= if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A= var i=3D0,h,k;=0A= if ((i=3D_ur.indexOf("://")) < 0) return "";=0A= h=3D_ur.substring(i+3,_ur.length);=0A= if (h.indexOf("/") > -1) {=0A= h=3Dh.substring(0,h.indexOf("/"));=0A= }=0A= for (var ii=3D0;ii<_uOsr.length;ii++) {=0A= if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) {=0A= if ((i=3D_ur.indexOf("?"+_uOkw[ii]+"=3D")) > -1 || = (i=3D_ur.indexOf("&"+_uOkw[ii]+"=3D")) > -1) {=0A= k=3D_ur.substring(i+_uOkw[ii].length+2,_ur.length);=0A= if ((i=3Dk.indexOf("&")) > -1) k=3Dk.substring(0,i);=0A= for (var yy=3D0;yy<_uOno.length;yy++) {=0A= if (_uOno[yy].toLowerCase()=3D=3Dk.toLowerCase()) { _ufno=3D1; = break; }=0A= }=0A= if (t) return _uEC(k);=0A= else return = "utmccn=3D(organic)|utmcsr=3D"+_uEC(_uOsr[ii])+"|"+"utmctr=3D"+_uEC(k)+"|= utmcmd=3Dorganic";=0A= }=0A= }=0A= }=0A= return "";=0A= }=0A= function _uBInfo() {=0A= var sr=3D"-",sc=3D"-",ul=3D"-",fl=3D"-",cs=3D"-",je=3D1;=0A= var n=3Dnavigator;=0A= if (self.screen) {=0A= sr=3Dscreen.width+"x"+screen.height;=0A= sc=3Dscreen.colorDepth+"-bit";=0A= } else if (self.java) {=0A= var j=3Djava.awt.Toolkit.getDefaultToolkit();=0A= var s=3Dj.getScreenSize();=0A= sr=3Ds.width+"x"+s.height;=0A= }=0A= if (n.language) { ul=3Dn.language.toLowerCase(); }=0A= else if (n.browserLanguage) { ul=3Dn.browserLanguage.toLowerCase(); }=0A= je=3Dn.javaEnabled()?1:0;=0A= if (_uflash) fl=3D_uFlash();=0A= if (_ubd.characterSet) cs=3D_uES(_ubd.characterSet);=0A= else if (_ubd.charset) cs=3D_uES(_ubd.charset);=0A= return = "&utmcs=3D"+cs+"&utmsr=3D"+sr+"&utmsc=3D"+sc+"&utmul=3D"+ul+"&utmje=3D"+j= e+"&utmfl=3D"+fl;=0A= }=0A= function __utmSetTrans() {=0A= var e;=0A= if (_ubd.getElementById) e=3D_ubd.getElementById("utmtrans");=0A= else if (_ubd.utmform && _ubd.utmform.utmtrans) = e=3D_ubd.utmform.utmtrans;=0A= if (!e) return;=0A= var l=3De.value.split("UTM:");=0A= var i,i2,c;=0A= if (_userv=3D=3D0 || _userv=3D=3D2) i=3Dnew Array();=0A= if (_userv=3D=3D1 || _userv=3D=3D2) { i2=3Dnew Array(); c=3D_uGCS(); }=0A= =0A= for (var ii=3D0;ii=3D2;ii--) {=0A= try {=0A= var fl=3Deval("new = ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");=0A= if (fl) { f=3Dii + '.0'; break; }=0A= }=0A= catch(e) {}=0A= }=0A= }=0A= return f;=0A= }=0A= function __utmLinker(l,h) {=0A= if (!_ulink) return;=0A= var p,k,a=3D"-",b=3D"-",c=3D"-",x=3D"-",z=3D"-",v=3D"-";=0A= var dc=3D_ubd.cookie;=0A= if (!l || l=3D=3D"") return;=0A= var iq =3D l.indexOf("?"); =0A= var ih =3D l.indexOf("#"); =0A= if (dc) {=0A= a=3D_uES(_uGC(dc,"__utma=3D"+_udh,";"));=0A= b=3D_uES(_uGC(dc,"__utmb=3D"+_udh,";"));=0A= c=3D_uES(_uGC(dc,"__utmc=3D"+_udh,";"));=0A= x=3D_uES(_uGC(dc,"__utmx=3D"+_udh,";"));=0A= z=3D_uES(_uGC(dc,"__utmz=3D"+_udh,";"));=0A= v=3D_uES(_uGC(dc,"__utmv=3D"+_udh,";"));=0A= k=3D(_uHash(a+b+c+x+z+v)*1)+(_udh*1);=0A= = p=3D"__utma=3D"+a+"&__utmb=3D"+b+"&__utmc=3D"+c+"&__utmx=3D"+x+"&__utmz=3D= "+z+"&__utmv=3D"+v+"&__utmk=3D"+k;=0A= }=0A= if (p) {=0A= if (h && ih>-1) return;=0A= if (h) { _udl.href=3Dl+"#"+p; }=0A= else {=0A= if (iq=3D=3D-1 && ih=3D=3D-1) _udl.href=3Dl+"?"+p;=0A= else if (ih=3D=3D-1) _udl.href=3Dl+"&"+p;=0A= else if (iq=3D=3D-1) = _udl.href=3Dl.substring(0,ih-1)+"?"+p+l.substring(ih);=0A= else _udl.href=3Dl.substring(0,ih-1)+"&"+p+l.substring(ih);=0A= }=0A= } else { _udl.href=3Dl; }=0A= }=0A= function __utmLinkPost(f,h) {=0A= if (!_ulink) return;=0A= var p,k,a=3D"-",b=3D"-",c=3D"-",x=3D"-",z=3D"-",v=3D"-";=0A= var dc=3D_ubd.cookie;=0A= if (!f || !f.action) return;=0A= var iq =3D f.action.indexOf("?"); =0A= var ih =3D f.action.indexOf("#"); =0A= if (dc) {=0A= a=3D_uES(_uGC(dc,"__utma=3D"+_udh,";"));=0A= b=3D_uES(_uGC(dc,"__utmb=3D"+_udh,";"));=0A= c=3D_uES(_uGC(dc,"__utmc=3D"+_udh,";"));=0A= x=3D_uES(_uGC(dc,"__utmx=3D"+_udh,";"));=0A= z=3D_uES(_uGC(dc,"__utmz=3D"+_udh,";"));=0A= v=3D_uES(_uGC(dc,"__utmv=3D"+_udh,";"));=0A= k=3D(_uHash(a+b+c+x+z+v)*1)+(_udh*1);=0A= = p=3D"__utma=3D"+a+"&__utmb=3D"+b+"&__utmc=3D"+c+"&__utmx=3D"+x+"&__utmz=3D= "+z+"&__utmv=3D"+v+"&__utmk=3D"+k;=0A= }=0A= if (p) {=0A= if (h && ih>-1) return;=0A= if (h) { f.action+=3D"#"+p; }=0A= else {=0A= if (iq=3D=3D-1 && ih=3D=3D-1) f.action+=3D"?"+p;=0A= else if (ih=3D=3D-1) f.action+=3D"&"+p;=0A= else if (iq=3D=3D-1) = f.action=3Df.action.substring(0,ih-1)+"?"+p+f.action.substring(ih);=0A= else = f.action=3Df.action.substring(0,ih-1)+"&"+p+f.action.substring(ih);=0A= }=0A= }=0A= return;=0A= }=0A= function __utmSetVar(v) {=0A= if (!v || v=3D=3D"") return;=0A= if (!_udo || _udo =3D=3D "") {=0A= _udh=3D_uDomain();=0A= if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A= }=0A= if (!_uVG()) return;=0A= var r=3DMath.round(Math.random() * 2147483647);=0A= _ubd.cookie=3D"__utmv=3D"+_udh+"."+_uES(v)+"; path=3D"+_utcp+"; = expires=3D"+_uNx()+";"+_udo;=0A= var s=3D"&utmt=3Dvar&utmn=3D"+r;=0A= if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A= var i=3Dnew Image(1,1);=0A= i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A= i.onload=3Dfunction() { _uVoid(); }=0A= }=0A= if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A= var i2=3Dnew Image(1,1);=0A= = i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+= _uGCS();=0A= i2.onload=3Dfunction() { _uVoid(); }=0A= }=0A= }=0A= function _uGCS() {=0A= var t,c=3D"",dc=3D_ubd.cookie;=0A= if ((t=3D_uGC(dc,"__utma=3D"+_udh,";"))!=3D"-") = c+=3D_uES("__utma=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmb=3D"+_udh,";"))!=3D"-") = c+=3D_uES("__utmb=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmc=3D"+_udh,";"))!=3D"-") = c+=3D_uES("__utmc=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmx=3D"+_udh,";"))!=3D"-") = c+=3D_uES("__utmx=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmz=3D"+_udh,";"))!=3D"-") = c+=3D_uES("__utmz=3D"+t+";+");=0A= if ((t=3D_uGC(dc,"__utmv=3D"+_udh,";"))!=3D"-") = c+=3D_uES("__utmv=3D"+t+";");=0A= if (c.charAt(c.length-1)=3D=3D"+") c=3Dc.substring(0,c.length-1);=0A= return c;=0A= }=0A= function _uGC(l,n,s) {=0A= if (!l || l=3D=3D"" || !n || n=3D=3D"" || !s || s=3D=3D"") return "-";=0A= var i,i2,i3,c=3D"-";=0A= i=3Dl.indexOf(n);=0A= i3=3Dn.indexOf("=3D")+1;=0A= if (i > -1) {=0A= i2=3Dl.indexOf(s,i); if (i2 < 0) { i2=3Dl.length; }=0A= c=3Dl.substring((i+i3),i2);=0A= }=0A= return c;=0A= }=0A= function _uDomain() {=0A= if (!_udn || _udn=3D=3D"" || _udn=3D=3D"none") { _udn=3D""; return 1; }=0A= if (_udn=3D=3D"auto") {=0A= var d=3D_ubd.domain;=0A= if (d.substring(0,4)=3D=3D"www.") {=0A= d=3Dd.substring(4,d.length);=0A= }=0A= _udn=3Dd;=0A= }=0A= _udn =3D _udn.toLowerCase(); =0A= if (_uhash=3D=3D"off") return 1;=0A= return _uHash(_udn);=0A= }=0A= function _uHash(d) {=0A= if (!d || d=3D=3D"") return 1;=0A= var h=3D0,g=3D0;=0A= for (var i=3Dd.length-1;i>=3D0;i--) {=0A= var c=3DparseInt(d.charCodeAt(i));=0A= h=3D((h << 6) & 0xfffffff) + c + (c << 14);=0A= if ((g=3Dh & 0xfe00000)!=3D0) h=3D(h ^ (g >> 21));=0A= }=0A= return h;=0A= }=0A= function _uFixA(c,s,t) {=0A= if (!c || c=3D=3D"" || !s || s=3D=3D"" || !t || t=3D=3D"") return "-";=0A= var a=3D_uGC(c,"__utma=3D"+_udh,s);=0A= var lt=3D0,i=3D0;=0A= if ((i=3Da.lastIndexOf(".")) > 9) {=0A= _uns=3Da.substring(i+1,a.length);=0A= _uns=3D(_uns*1)+1;=0A= a=3Da.substring(0,i);=0A= if ((i=3Da.lastIndexOf(".")) > 7) {=0A= lt=3Da.substring(i+1,a.length);=0A= a=3Da.substring(0,i);=0A= }=0A= if ((i=3Da.lastIndexOf(".")) > 5) {=0A= a=3Da.substring(0,i);=0A= }=0A= a+=3D"."+lt+"."+t+"."+_uns;=0A= }=0A= return a;=0A= }=0A= function _uTrim(s) {=0A= if (!s || s=3D=3D"") return "";=0A= while ((s.charAt(0)=3D=3D' ') || (s.charAt(0)=3D=3D'\n') || = (s.charAt(0,1)=3D=3D'\r')) s=3Ds.substring(1,s.length);=0A= while ((s.charAt(s.length-1)=3D=3D' ') || = (s.charAt(s.length-1)=3D=3D'\n') || (s.charAt(s.length-1)=3D=3D'\r')) = s=3Ds.substring(0,s.length-1);=0A= return s;=0A= }=0A= function _uEC(s) {=0A= var n=3D"";=0A= if (!s || s=3D=3D"") return "";=0A= for (var i=3D0;i0) r=3Da.substring(i+1,i2); else return = ""; =0A= if ((i=3Da.indexOf(".",i2+1))>0) t=3Da.substring(i2+1,i); else return = ""; =0A= if (f) {=0A= return r;=0A= } else {=0A= var c=3Dnew = Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T'= ,'U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9');=0A= return = c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r= &7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5= &m]+c[t&m];=0A= }=0A= }=0A= function _uIN(n) {=0A= if (!n) return false;=0A= for (var i=3D0;i"9") && (c!=3D".")) return false;=0A= }=0A= return true;=0A= }=0A= function _uES(s,u) {=0A= if (typeof(encodeURIComponent) =3D=3D 'function') {=0A= if (u) return encodeURI(s);=0A= else return encodeURIComponent(s);=0A= } else {=0A= return escape(s);=0A= }=0A= }=0A= function _uUES(s) {=0A= if (typeof(decodeURIComponent) =3D=3D 'function') {=0A= return decodeURIComponent(s);=0A= } else {=0A= return unescape(s);=0A= }=0A= }=0A= function _uVG() {=0A= if((_udn.indexOf("www.google.") =3D=3D 0 || _udn.indexOf(".google.") = =3D=3D 0 || _udn.indexOf("google.") =3D=3D 0) && _utcp=3D=3D'/' && = _udn.indexOf("google.org")=3D=3D-1) {=0A= return false;=0A= }=0A= return true;=0A= }=0A= function _uSP() {=0A= var s=3D100;=0A= if (_usample) s=3D_usample;=0A= if(s>=3D100 || s<=3D0) return true;=0A= return ((__utmVisitorCode(1)%10000)<(s*100));=0A= }=0A= function urchinPathCopy(p){=0A= var d=3Ddocument,nx,tx,sx,i,c,cs,t,h,o;=0A= cs=3Dnew Array("a","b","c","v","x","z");=0A= h=3D_uDomain(); if (_udn && _udn!=3D"") o=3D" domain=3D"+_udn+";";=0A= nx=3D_uNx()+";";=0A= tx=3Dnew Date(); tx.setTime(tx.getTime()+(_utimeout*1000));=0A= tx=3Dtx.toGMTString()+";";=0A= sx=3Dnew Date(); sx.setTime(sx.getTime()+(_ucto*1000));=0A= sx=3Dsx.toGMTString()+";";=0A= for (i=3D0;i<6;i++){=0A= t=3D" expires=3D";=0A= if (i=3D=3D1) t+=3Dtx; else if (i=3D=3D2) t=3D""; else if (i=3D=3D5) = t+=3Dsx; else t+=3Dnx;=0A= c=3D_uGC(d.cookie,"__utm"+cs[i]+"=3D"+h,";");=0A= if (c!=3D"-") d.cookie=3D"__utm"+cs[i]+"=3D"+c+"; path=3D"+p+";"+t+o;=0A= }=0A= }=0A= function _uCO() {=0A= if (!_utk || _utk=3D=3D"" || _utk.length<10) return;=0A= var d=3D'www.google.com';=0A= if (_utk.charAt(0)=3D=3D'!') d=3D'analytics.corp.google.com';=0A= _ubd.cookie=3D"GASO=3D"+_utk+"; path=3D"+_utcp+";"+_udo;=0A= var sc=3Ddocument.createElement('script');=0A= sc.type=3D'text/javascript';=0A= sc.id=3D"_gasojs";=0A= = sc.src=3D'https://'+d+'/analytics/reporting/overlay_js?gaso=3D'+_utk+'&'+= Math.random();=0A= document.getElementsByTagName('head')[0].appendChild(sc); =0A= }=0A= function _uGT() {=0A= var h=3Dlocation.hash, a;=0A= if (h && h!=3D"" && h.indexOf("#gaso=3D")=3D=3D0) {=0A= a=3D_uGC(h,"gaso=3D","&");=0A= } else {=0A= a=3D_uGC(_ubd.cookie,"GASO=3D",";");=0A= }=0A= return a;=0A= }=0A= var _utk=3D_uGT();=0A= if (_utk && _utk!=3D"" && _utk.length>10) {=0A= if (window.addEventListener) {=0A= window.addEventListener('load', _uCO, false); =0A= } else if (window.attachEvent) { =0A= window.attachEvent('onload', _uCO);=0A= }=0A= }=0A= =0A= function _uNx() {=0A= return (new Date((new Date()).getTime()+63072000000)).toGMTString();=0A= }=0A= ------=_NextPart_000_0000_01C82248.2385CC60--