From: <Salvo pelo Microsoft Internet Explorer 7>
Subject: Video: 2009 Saint Prototype
Date: Wed, 16 Jul 2008 09:35:13 -0300
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C8E727.3F930680"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/content/global_cycle/en/us/index/news_and_info/news/saint_video.html

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Video: 2009 =
Saint Prototype</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3DUTF-8">
<META content=3D"text/html; charset=3DUTF-8" equiv=3D"Content-Type">
<META content=3Dutf-8 name=3Dencoding>
<META content=3D"" name=3Ddescription>
<META content=3D"" name=3Dkeywords>
<META content=3D2008-04-21 name=3Ddate>
<META content=3D"Video: 2009 Saint Prototype " name=3DDC.Title>
<META content=3D"" name=3DDC.Subject>
<META content=3D"" name=3DDC.Description>
<META content=3D2008-04-21 name=3DDC.Date>
<META content=3D"" name=3DDC.Publisher><LINK=20
href=3D"http://bike.shimano.com/publish/css/default/global-layout.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://bike.shimano.com/publish/css/default/global-color.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://bike.shimano.com/publish/css/default/cycle/cycling-color.c=
ss"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://bike.shimano.com/publish/css/default/cycle/cycling-layout.=
css"=20
type=3Dtext/css rel=3Dstylesheet>
<SCRIPT =
src=3D"http://bike.shimano.com/publish/javascript/SpryAccordion.js"=20
type=3Dtext/javascript>
</SCRIPT>

<SCRIPT =
src=3D"http://bike.shimano.com/publish/javascript/SpryMenuBar.js"=20
type=3Dtext/javascript>
</SCRIPT>

<SCRIPT src=3D"http://bike.shimano.com/publish/javascript/prototype.js"=20
type=3Dtext/javascript>
</SCRIPT>

<SCRIPT=20
src=3D"http://bike.shimano.com/publish/javascript/scriptaculous/scriptacu=
lous.js"=20
type=3Dtext/javascript>
</SCRIPT>

<SCRIPT =
src=3D"http://bike.shimano.com/publish/javascript/dojo/0.4.3/dojo.js"=20
type=3Dtext/javascript>
</SCRIPT>

<SCRIPT type=3Dtext/javascript>
djConfig =3D { baseScriptUri: '/publish/javascript/dojo/0.4.3/' };
</SCRIPT>

<SCRIPT =
src=3D"http://bike.shimano.com/publish/javascript/modal-message.js"=20
type=3Dtext/javascript>
</SCRIPT>

<SCRIPT type=3Dtext/javascript>
    var GB_ROOT_DIR =3D "http://" + window.location.host + =
"/publish/javascript/greybox/";
</SCRIPT>

<SCRIPT =
src=3D"http://bike.shimano.com/publish/javascript/greybox/AJS.js"=20
type=3Dtext/javascript>
</SCRIPT>

<SCRIPT =
src=3D"http://bike.shimano.com/publish/javascript/greybox/AJS_fx.js"=20
type=3Dtext/javascript>
</SCRIPT>

<SCRIPT =
src=3D"http://bike.shimano.com/publish/javascript/greybox/gb_scripts.js" =

type=3Dtext/javascript>
</SCRIPT>

<SCRIPT =
src=3D"http://bike.shimano.com/publish/flash/flowplayer/js/swfobject.js" =

type=3Dtext/javascript>
</SCRIPT>
<LINK =
href=3D"http://bike.shimano.com/publish/javascript/greybox/gb_styles.css"=
=20
type=3Dtext/css rel=3Dstylesheet>
<META content=3D"MSHTML 6.00.5730.13" name=3DGENERATOR></HEAD>
<BODY class=3DshimanoBody leftMargin=3D0 topMargin=3D0 marginwidth=3D"0" =

marginheight=3D"0">
<DIV class=3DoneColFixCtr>
<DIV id=3Dcontainer>
<DIV id=3Dheader>
<DIV id=3Dlogobar>
<DIV id=3Dlogobox>
<DIV class=3Dshimglobal_image id=3Dshimlogo_Single>
<DIV class=3Dmedia><A class=3DimageLink href=3D"http://www.shimano.com/" =

target=3D_blank><IMG id=3Dshimlogo_Single_image alt=3DShimano=20
src=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index.i=
mage.-shimlogo-Single-image.dash.201.57.gif">=20
</A></DIV></DIV>
<DIV class=3Dshimglobal_image id=3Dregionlogo_Single>
<DIV class=3Dmedia><A class=3DimageLink=20
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index.=
html"><IMG=20
id=3Dregionlogo_Single_image alt=3D""=20
src=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index.i=
mage.-regionlogo-Single-image.dash.300.57.gif">=20
</A></DIV></DIV>
<DIV class=3Dclear></DIV></DIV></DIV>
<DIV id=3DmenuContainer>
<DIV class=3Dshimglobal_navigation>
<UL class=3DMenuBarHorizontal id=3Dnavigation_Single_menu>
  <LI class=3Dlisthead><A class=3Dnolink href=3D"javascript:void(0);"=20
  target=3D_self>Products</A>=20
  <UL>
    <LI><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>Road Bike</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/road/dura-ace.html"=20
      target=3D_self>Dura-Ace</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/road/ultegra_sl.html"=20
      target=3D_self>Ultegra SL</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/road/ultegra.html"=20
      target=3D_self>Ultegra</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/road/105.html"=20
      target=3D_self>105</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/road/tiagra.html"=20
      target=3D_self>Tiagra</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/road/sora.html"=20
      target=3D_self>Sora</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/road/2200.html"=20
      target=3D_self>2200</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/road/Dura-Ace_Track.html"=20
      target=3D_self>Dura-Ace Track</A> </LI></UL></LI>
    <LI><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>Mountain=20
    Bike</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/mountain/xtr.html"=20
      target=3D_self>XTR</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/mountain/new_saint.html"=20
      target=3D_self>Saint</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/mountain/deore_xt.html"=20
      target=3D_self>Deore XT</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/mountain/hone.html"=20
      target=3D_self>Hone</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/mountain/slx.html"=20
      target=3D_self>SLX</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/mountain/deore_lx.html"=20
      target=3D_self>Deore LX</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/mountain/deore.html"=20
      target=3D_self>Deore</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/mountain/Alivio.html"=20
      target=3D_self>Alivio</A> </LI></UL></LI>
    <LI><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>Comfort</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/0/nexus.html"=20
      target=3D_self>Nexus</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/0/coasting.html"=20
      target=3D_self>Coasting</A> </LI></UL></LI>
    <LI><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>BMX Bike</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/bmx_bike/dxr.html"=20
      target=3D_self>DXR</A> </LI></UL></LI>
    <LI><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>Pedals</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/pedals/mountain.html"=20
      target=3D_self>Mountain</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/pedals/road.html"=20
      target=3D_self>Road</A> </LI></UL></LI>
    <LI><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>Shoes</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/shoes/mtb.html"=20
      target=3D_self>Mountain</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/shoes/road.html"=20
      target=3D_self>Road &amp; Tri</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/shoes/footwear_sizing_chart.html"=20
      target=3D_self>Footwear Sizing Chart </A></LI></UL></LI>
    <LI><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>Wheels</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/wheels/mountain_wheels.html"=20
      target=3D_self>Mountain Wheels</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/wheels/road_wheels.html"=20
      target=3D_self>Road Wheels</A> </LI></UL></LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
products/pro.html"=20
    target=3D_self>PRO</A> </LI></UL></LI>
  <LI class=3Dprimary><A=20
  =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
new_to_cycling.html"=20
  target=3D_self>New to Cycling</A>=20
  <UL>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
new_to_cycling/mtb_101.html"=20
    target=3D_self>MTB 101</A> </LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
new_to_cycling/road_101.html"=20
    target=3D_self>Road 101</A> </LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
new_to_cycling/lifestyle_101.html"=20
    target=3D_self>Lifestyle 101</A> </LI></UL></LI>
  <LI class=3Dprimary><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>News=20
  and Info</A>=20
  <UL>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/about_us.html"=20
    target=3D_self>About Us</A> </LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/environmental_policy.html"=20
    target=3D_self>Environmental Policy </A></LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news.html"=20
    target=3D_self>News</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/fothen_and_freire.html"=20
      target=3D_self>Fothen and Freire ride new DURA-ACE to victory</A> =
</LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/shimano_introduces0.html"=20
      target=3D_self>Shimano Introduces 2009 Dura-Ace </A></LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/shimano_helps_build.html"=20
      target=3D_self>Shimano Helps to Build More Bike Trails</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/lighter__more_powerful.html"=20
      target=3D_self>Lighter, More Powerful 2009 Saint Component Group =
</A></LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/saint_video.html"=20
      target=3D_self>Video: 2009 Saint Prototype </A></LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/coasting_com_has_a.html"=20
      target=3D_self>Coasting.com has a new look! </A></LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/gilbert_victorious.html"=20
      target=3D_self>Gilbert Victorious with Shimano Dura Ace Tubeless =
Wheels</A>=20
      </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/shimano_and_imba_release.html"=20
      target=3D_self>Shimano and IMBA Release New MTB Economics =
Study</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/press_release.html"=20
      target=3D_self>SHIMANO PURCHASES PEARL IZUMI</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/winners_shimano_you.html"=20
      target=3D_self>Winners Shimano/You Tube video contest</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/shimano_successful.html"=20
      target=3D_self>Shimano successful in Tour of Spain</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/shimano_test_rider.html"=20
      target=3D_self>Shimano test rider breaks speed biking record at =
210=20
      km/h.</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/shimano_xtr__shadow.html"=20
      target=3D_self>Shimano XTR =E2=80=9CShadow=E2=80=9D rear =
derailleur</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/shimano_introduces.html"=20
      target=3D_self>Shimano Introduces 2008 Coasting Bikes</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/ultegra_sl_offers.html"=20
      target=3D_self>Ultegra SL offers extra color option and lighter =
weight</A>=20
      </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/dura-ace_carbon_crank.html"=20
      target=3D_self>Dura-Ace Carbon Crank</A> </LI></UL></LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events.html"=20
    target=3D_self>Events</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/shimano_multi-service.html"=20
      target=3D_self>About Shimano Multi-Service</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/mountain_states_cup2.html"=20
      target=3D_self>Mountain States Cup</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/downieville_classic.html"=20
      target=3D_self>Downieville Classic</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/usa_cycling_national.html"=20
      target=3D_self>USA Cycling National Mountain Bike =
Championships</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/ragbrai.html"=20
      target=3D_self>RAGBRAI</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/courage_classic.html"=20
      target=3D_self>Courage Classic</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/crankworx_.html"=20
      target=3D_self>Crankworx </A></LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/usac-fest.html"=20
      target=3D_self>USAC-Fest</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/mountain_states_cup-g3.html"=20
      target=3D_self>Mountain States Cup-G3</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/events/tour_of_utah.html"=20
      target=3D_self>Tour of Utah</A> </LI></UL></LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/shimano_sposored_teams.html"=20
    target=3D_self>Shimano Sponsorship</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/shimano_sposored_teams/0.html"=20
      target=3D_self>2008 Road Teams</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/shimano_sposored_teams/2008_triathalon.html"=20
      target=3D_self>2008 Triathalon</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/shimano_sposored_teams/2008_mtb_teams.html"=20
      target=3D_self>2008 MTB</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/shimano_sposored_teams/2008_factory_teams.html"=20
      target=3D_self>2008 Factory Teams</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/shimano_sposored_teams/2008_bmx.html"=20
      target=3D_self>2008 BMX</A> </LI></UL></LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/links_.html"=20
    target=3D_self>Links </A></LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/advocacy_test.html"=20
    target=3D_self>Advocacy</A> </LI>
    <LI><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>Shimano=20
    Technology</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/shimano_technology/custom-fit_technology.html"=20
      target=3D_self>Custom-Fit Technology</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/shimano_technology/shadow.html"=20
      target=3D_self>Shadow</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/shimano_technology/servo-wave.html"=20
      target=3D_self>Servo-Wave</A> </LI></UL></LI></UL></LI>
  <LI class=3Dprimary><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>Tech=20
  Support</A>=20
  <UL>
    <LI><A class=3Dnolink href=3D"javascript:void(0);" =
target=3D_self>FAQ's</A>=20
    <UL>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
tech_support/faq_s/road_faq_s.html"=20
      target=3D_self>Road FAQ's</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
tech_support/faq_s/mtb_faq_s.html"=20
      target=3D_self>MTB FAQ's</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
tech_support/faq_s/shoe_faq_s.html"=20
      target=3D_self>Footwear FAQ's</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
tech_support/faq_s/nexus_faq_s.html"=20
      target=3D_self>Nexus FAQ's</A> </LI>
      <LI><A=20
      =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
tech_support/faq_s/misc_faq_s.html"=20
      target=3D_self>Misc FAQ's</A> </LI></UL></LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
tech_support/glossary_of_terms.html"=20
    target=3D_self>Glossary of Terms</A> </LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
tech_support/tech_tips.html"=20
    target=3D_self>Tech Tips</A> </LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
tech_support/warranty3.html"=20
    target=3D_self>Warranty </A></LI>
    <LI><A=20
    =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
tech_support/tech_docs.html"=20
    target=3D_self>Tech Docs</A> </LI></UL></LI>
  <LI class=3Dprimary><A=20
  =
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
contact_us.html"=20
  target=3D_self>Contact Us</A> </LI>
  <LI class=3Dprimary><A onclick=3D"return GB_show('', this.href, 600, =
917)"=20
  =
href=3D"http://www.shimano.com/publish/content/global_cycle/en/us/index/l=
ocator.content.html"=20
  target=3D_self>Dealer Locator</A> </LI></UL>
<SCRIPT type=3Dtext/javascript>

menu_navigation_Single_menu =3D function() {
	var menu =3D $('navigation_Single_menu');
	var lis =3D menu.getElementsByTagName('li');
=09
	for (var i =3D 0; i < lis.length; i++) {
		if (menu =3D=3D lis[i].parentNode) {	=09
			var link =3D lis[i].getElementsByTagName('a')[0];
			var hasSubMenu =3D lis[i].getElementsByTagName('ul').length > 0;
		=09
			Element.addClassName(link, hasSubMenu ? "MenuBarItemSubmenuHover" : =
"MenuBarItemHover");
		}
	}
}

Event.observe(window, 'load', menu_navigation_Single_menu);
var MenuBar1 =3D new Spry.Widget.MenuBar("navigation_Single_menu", =
{imgDown:"/publish/images/global/cycle/SpryMenuBarDownHover.gif", =
imgRight:"/publish/images/global/cycle/SpryMenuBarRightHover.gif"});
</SCRIPT>
</DIV></DIV>
<DIV id=3DcrumbBar>
<DIV id=3DcrumbMenu><A=20
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index.=
html"=20
target=3D_self>Home</A> &gt; <A=20
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news.html"=20
target=3D_self>News</A> &gt; <A=20
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/saint_video.html"=20
target=3D_self>Video: 2009 Saint Prototype </A></DIV></DIV>
<FORM id=3Dsearchform=20
action=3D/publish/content/global_cycle/en/us/index/search_results.html =
method=3Dget=20
encType=3Dmultipart/form-data><INPUT size=3D18 name=3Dsearch =
height=3D"12"> <INPUT=20
type=3Dimage alt=3DSearch=20
src=3D"http://bike.shimano.com/publish/images/global/arrowGoBtn.gif"=20
name=3Dsearchbtn> </FORM></DIV><!-- end header -->
<DIV id=3DmainContent>
<DIV id=3DarticleContainer>
<DIV id=3DarticleContent>
<DIV id=3Dmasthead>
<DIV id=3Dinfoblock><SPAN class=3Ddate>April 18 2008</SPAN> | <SPAN=20
class=3Dprint>Print <A href=3D"javascript:window.print()"><IMG =
alt=3D"Print Page"=20
src=3D"http://bike.shimano.com/publish/images/global/printpage.gif"></A><=
/SPAN>=20
</DIV><SPAN class=3Dheadline>Video: 2009 Saint Prototype </SPAN>
<DIV class=3Dclear></DIV></DIV>
<DIV class=3Dshimglobal_texttitleimage>
<DIV class=3D"title style1 lefta">Thomas Vanderham tests 2009 Prototype=20
Saint</DIV>
<DIV class=3Dtext>Shimano and Thomas Vanderham journeyed to Moab, Utah =
to put new=20
Saint prototype parts to the ultimate test: a steep, never before ridden =
line=20
scouted and sculpted by the Collective and Vanderham himself. The =
Collective, a=20
renowned group of filmmakers and photographers, was on site to capture =
the=20
entire experience.<BR><BR>Join Shimano as they preview the improved =
technology=20
and performance of 2009 Saint components. Then watch Vanderham, equipped =
with=20
the prototype Saint parts, find his flow from top to bottom and reaffirm =
Saint=20
as the premier heavy duty groupset.<BR><BR>Welcome to Proving=20
Ground.<BR><BR><BR></DIV></DIV>
<DIV class=3Dclear></DIV>
<DIV class=3Dshimglobal_parsys>
<DIV class=3Dshimglobal_parsys_cell>
<DIV class=3Dshimglobal_movieplayer>
<DIV class=3Dmedia>
<DIV id=3Dflowplayer_mainParsys_0001>
<OBJECT=20
codeBase=3Dhttp://download.macromedia.com/pub/shockwave/cabs/flash/swflas=
h.cab#version=3D6,0,29,0=20
height=3D294 width=3D480 =
classid=3Dclsid:D27CDB6E-AE6D-11cf-96B8-444553540000><PARAM =
NAME=3D"movie" =
VALUE=3D"/publish/flash/flowplayer/FlowPlayer_custom.swf"><PARAM =
NAME=3D"quality" VALUE=3D"high"><PARAM NAME=3D"WMODE" =
VALUE=3D"transparent">
				<embed 		src=3D"/publish/flash/flowplayer/FlowPlayer_custom.swf"=20
		quality=3D"high" 		=
pluginspage=3D"http://www.macromedia.com/go/getflashplayer"=20
		type=3D"application/x-shockwave-flash" 		width=3D"480" 		=
height=3D"294"
		WMODE=3D"transparent"></embed></OBJECT></DIV>
<SCRIPT type=3Dtext/javascript>
	var fo =3D new =
SWFObject("/publish/flash/flowplayer/FlowPlayer_custom.swf", =
"flowplayer", "480", "294", "7", "#ffffff", true);
	fo.addParam("allowScriptAccess", "always");
	fo.addParam("allowFullScreen", "true");
	fo.addVariable("config", "{videoFile: =
'/publish/content/global_cycle/en/us/index/news_and_info/news/saint_video=
.download.-mainParsys-0001-downloadFile.html/SAINT.flv', =
showFullScreenButton: true, useNativeFullScreen: true, showMenu: =
false}");
	fo.write("flowplayer_mainParsys_0001");
</SCRIPT>
</DIV></DIV>
<DIV class=3Dclear></DIV></DIV></DIV></DIV></DIV>
<DIV class=3Dclear></DIV></DIV><!-- end mainContent -->
<DIV id=3DpostContent><BR><BR>
<DIV class=3Dclear></DIV></DIV><!-- end postContent -->
<DIV id=3Dfooter>
<DIV class=3Dshimglobal_navigation>
<SCRIPT type=3Dtext/javascript>
function loadSubmenu(handle) {
	var url =3D =
'/publish/content/global_cycle/en/us/index/news_and_info/news/saint_video=
.nav_bottom_sublist.' + handle + '.html';
=09
	new Ajax.Updater('footswap', url, {method: 'get'});
}
</SCRIPT>

<DIV id=3Dfootmenu><A=20
onmouseover=3D"loadSubmenu('+content+global_portal+en+us+index+global')" =

href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/saint_video.html#">Global=20
</A>&nbsp;|&nbsp; <A=20
onmouseover=3D"loadSubmenu('+content+global_portal+en+us+index+cycling')"=
=20
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/saint_video.html#">Cycling=20
</A>&nbsp;|&nbsp; <A=20
onmouseover=3D"loadSubmenu('+content+global_portal+en+us+index+fishing')"=
=20
href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/saint_video.html#">Fishing=20
</A>&nbsp;|&nbsp; <A=20
onmouseover=3D"loadSubmenu('+content+global_portal+en+us+index+others')" =

href=3D"http://bike.shimano.com/publish/content/global_cycle/en/us/index/=
news_and_info/news/saint_video.html#">Others=20
</A>
<DIV id=3Dfootswap></DIV></DIV></DIV><A=20
href=3D"http://bike.shimano.com/publish/content/corporate/en/shimanocorpo=
ratesiteen/about_shimano/privacy_policy.html">Privacy=20
Policy</A> =C2=A9 2008&nbsp;Shimano, Inc. ALL RIGHTS RESERVED </DIV><!-- =
end footer --></DIV><!-- end container --></DIV><!-- oneColFixCtr =
--><!-- total page load time =3D 3579 milliseconds --></BODY></HTML>

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://bike.shimano.com/publish/content/global_cycle/en/us/index.image.-shimlogo-Single-image.dash.201.57.gif

R0lGODlhyQA5APcAABKz8FjJ9bHm+v7//2fO9er4/rrp+z3B83vV95Xd+Be08C+88prf+XnU98Xs
+wev78Ps+6zk+jO98oHW99rz/b/q+2DM9UzF9FHH9JPc+F3L9WvP9sDr+zvA8+z5/hCy8Mru/KXi
+UTD8zG98krF9BGy8Ov5/mLN9fz+/x638YPX9wiw8Pj9/8Ts+yy78jS+8mPN9W7Q9nDR9g6y8Jzf
+dXx/H7W96fj+ROz8E/G9Ci68tnz/bXn+vv+/3jU95/g+cHr+4va+EfE80nE9FDH9Mzv/Aav70DC
82TN9aLh+XfT9vH6/un4/g+y8AGt73XT9nHR9oTX9zm/80bE8+L2/dLx/Lno+4za+I7b+CS58cjt
/Jne+V7L9Q2x8Lfo+gKu78ft+yK48RSz8GXN9bPn+ha08G/R9q3l+rDm+ji/80HC83zV9yC38SG4
8Rq18c7v/H3V9+T2/Se68b3q+4rZ+Lvp+1rK9QOu7zzA8zK98gSu7z7B86Dg+UPD83PS9kvF9Mvu
/NTx/KPh+VTI9PD6/qjj+v3+/1bJ9Nz0/Ri18aTi+fP7/tHw/I/b+Krk+j/B8xu28TC88uf3/Z3f
+VfJ9OH1/cnu/IjZ+Jbd+CW58UXD8wqw8O76/tPx/ILX903G9HrU9+P2/SO48dvz/X/W9+35/lLH
9GHM9djy/U7G9I3a+B228Qmw8AWv75Lc+De/8vL7/pTd+Pr9/9/1/eb3/Sm68mjO9oXY97bo+qnj
+oDW957g+bjo+3LS9pHc+FXI9FnK9QCt7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAADJADkA
AAj/AIUJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuX
MGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUo1ZyAkmQBo3cq161YtA2l4
ZZDwidcKBKN4JUHQhByvcON2DXOiRkIvfxLJ7arDTCiDvfbCFXOAT0ITPlwI1opDCo2JAmYEm0y5
smXLEAZmuOwroa3LVgg2uCyFYAEcl1OrTl2izkEVq2OneFMQSezYJwwZRKTjdupTKCDu6OJ7dYuB
CS5nSLjhsgGCCC4fMK2guPXJYqgUJHP9ci1YBAl0/7ccpKCsDuMpq4A4Jn3lzAKTW16OsLnl5wOj
W54+sEB197E9QVAPIwA4mSvhGQhAAQQVYuAMcTzkgmV3IDAHEBxkqOGGGi6BnHLMOQeddNRZ1gYa
AqQogH2VDaKiDZJZJgcLAxXhxGULMKCiij5schkeAwwknmVK7JhiEn2kpghBOVymRwwoqijIFKlN
8lAZluVAkXyV0XcQi5ThJ5B+lfEnkH+WjVBQEpeRQpAVK1j2wCwDbXGZC5wg5MgXluFQipCX8XAQ
CkNcJsNALGRxGSYHDUDEZQQ8VIJlcGwJYn0i5kdif/9RtkCQAzFwWQMFHXEZIANNcFkjCi0g5yiA
Wv8WAUJeXPbLQB5MWhkbNB7EwWWHPASAZTFYOl+I9424X4mVfUqQqJaRSlAqlx0nkKqW3aCQJnJS
EGtlsx4ExGVE4PqBZS8kVMRlAUhqWQo7TMQlZV4aBOZkYgpDJmVmCoNms6AKBG1l0g50wWUOpHpZ
CAqJ0O23lIVrUAWXYWCuZRIkBAK7D6VwGQAdhCzyyEKswYhB805Wb0H3BpPvvpP1+6+nAQszMGUF
C3SwZQlfu3DDDws0JLgIUWyZxQJ5cG5lGSO0sWXtOvSCeyvAUXPKwaxMUMsvb3pmp5M5G+qoBe1c
Wc/CYFsZwwk5XNkD3gp9mcQFGV0Z0sIojbHGHDv/BIWBPhCEtdYDca1smczS/CzZBJlNGdpqU8Y2
Qm5TBjfEk9FNkN2U4a0303xD/VAcbgD4RRUfHotpspouy6llYgvMuMEIK2zZ5AdVPtnlcstadMUX
g+503w6BIQqAnqReGVkIyZDpmF77C3Ywsds8u861+2zZGQoJEbQwQ0f8+9HBU9b0QU9XFvVDJlyi
Rh4SxC+//GykpmV8l70CgwX8928BDL1hHfRc9zXY1exmk8mZMBw3GchdZg/781//TlC6t8UNfHMb
393KN5nzGSR9lFnfRhYBG8ukQXkA6hoBpWfAxUWrbNlLm4F2d8HwZU6DneNgMDxYEBBORoQb6UEb
/yzjgh7gb4YqRNzrAOZCgsGQZ7YzEO8w6LuDcG4ynlsaZdI1PNF9BD2VGQGosDaeJPIrcWE74PUW
GMPIuWeKNgyG5gZyxWDgzQRNsEwkEvKGy1DiIyhQVGWOgEL3mDFmaKSeGl/YuDbOMBhwzKAVgScQ
QmCpMk3QzkF+cBlgfCQEN6rMGAoZDBk4AAKoTCUEHGCK5+krejNLYxNx9sSzRZEyNjilKlPZgqlZ
EHNyxCEWB4KCAlnmE0wwCBhWsUaF8MAOGoimNKcZTS4MwQiX+QEpt5AQM7gSZsGQ2fSqh8BgKJCB
wXBgFRHivV/2jmiTJN9AYpAaSAyBBPgkwSOw6f/KhUTBQF2gBSkJJxDDtU6JBWTi2BhJOyhqb21A
cycV4TkxSgqkE60A0AJ61RA6GAgLgrvUl74Jy3Eu0omNdKgMbxdRy9VQkhWV50BsQDX4OKSE4ylB
eQiChctcISEnuAwuCOKHy6hpIExghWXCULNYXAYKBVHDZYAwkNFYRpsJScNlUDEQLlxGWwepw2Wm
UJABrCFO10mBoCBChgC49a1wjatbNXAFuxTEAHLlRUJ2IVfUDSQXctUFQZZAgLgqoWZzkCtYB0IH
ucZLIGeQq7UQcou4akASYZGrJRBSA7mq4iBaAIVcR2uHIFSiKqhNrWpXy9rWuva1sI2tbGdL29oV
2va2uM2tbnfL29769rfADa5whxIQADs=

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://bike.shimano.com/publish/content/global_cycle/en/us/index.image.-regionlogo-Single-image.dash.300.57.gif

R0lGODlhLAE5AMQAALOzs4yMjNnZ2fX19XBwcHl5eaCgoMXFxezs7OLi4ry8vIODg8/Pz5aWlqmp
qWZmZv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAA
AAAALAAAAAAsATkAAAX/ICSOZGmeaKqubOu+cCzPdG3feK7vfO//wKBwSCwaj8ikcslsOp/QqHRK
rVqv2Kx2y+16v+AcIEwum4Pjs3rNhqXb8Hj8La/bw/S7fn/N8/+ATX6BhIVDg4aJimKLjY43iI+S
kyaRlJeSlpibipqcn4GePggCCgAHAgOgcaSmAglkohABDwuqKgAPgwMHCw+/wA8NDCi0wccLAQq3
IsfOzmMCDwEtvzMIvwa4vw0uCr/UI8bPxwIj5MABDQcn1icDAAXOBAYILfIFT7LG2tt+CfgUpIJA
ygGBaczEPTAAoKHDhg3kEWAn4qFDAw8KWGxoTlq4Fe5iOHhwMGGJXL/s/7GQN40ELYYbLaqE8Ctm
wwAHC8AiEZIEwIwCRSQ4YEzBCgYkHxAT5GIcRRS58iQ4aPQdRlslaJlL8e3B1hMeU4Rl0dPFAAIF
RkZC+cABC6TgXHqFUbbEAIwEEtaFW9UEg4OWaH37uGTfQpI7T0QlgeDgUxRXs87d1g3FWLAtyT6Q
8e0AtnxQD+dd8TKzCK10N5N+0Jem6hGNHzw2IW2yiQQLIcibqcSwAIwFTI5YPAKjKFqPUavARkCs
adrPU9RdORp5aAANWC8neXmW7WqvUxwQxjM8BOMsRlY2gdFcrn6Fm3od4Gv9SV2wSQrHDPr0dxTT
idBdCQMCaB4L4/UzHv9hJEQlTX8nGNedci4ESEJ3PTHXAjYHEpSRCMztV4RvEEylXSX4ifCNWy74
khiFKGCzgHMMXhidgTHQMtNBiTWIny9LmTDALwNM+B9IHZYwHovNhJcLkzTk8lR2rSFBIgRwfTVc
it5puQJxXa6gFo1kagZDdyPB5+MYC4amjZFeIsmCL1r2BKMMZ40mAlIQWinfVyPpueUb8oh4AlLw
3XkfVpbdOII0Cwgg6aSUTmphhLIxRiSKacjT4wieQgBnaioMkJ2arpFQqA0JliBPkH62AKMvDIJ5
KXQfvWSTAQcZYKiojgqIDjkvaCiZH8S9Z0KbwBI2zrB01GRTdgT40dP/rSs98GkuNY74JwlntbXm
OUk2muuwNfGGWbfCRlrpu7W9MKaSH96XxpAPmASksM4uZJNDdaJbwDImXFtuC0jVyKG63sr6X21B
grmqC4gqFCeIKMGKa5lythAuwxA4Zm9xXALb36gvWJgAter2NPEM1plwam/f3keASmAqmkLOR5Lw
TXMcb2xmC+MREMDRSB99UK1cGisCRk+hXOHBEGRnX6oWu3AAAIlxmHTSEv36w5UlZIcVmCu+4GLW
Khx0Mb9BS0c1qNN8nTSP4ypEUYiPPqez3CvgZl5PT7oQ6tO12I20PFUSQTa48mgDJt8sPCjX2wpF
UmDf7JaALZa1qICR/5pgAjsjBIVzfjmpSAasKdCBkzQCvoaO16fjNd/2y9Ylo8dCzP5hLsK868aN
4++ZpsAhM6XrNt9BvEkN3pzflZWdJ9kxqawKr8aKPOZFX8+YyKKHvro/xqs+tAq4CVoMl82Pt05u
NvYrfMFzw1hWbLPRK6jbXwoWEB7HHmBIhSoouEstTPK3LXVuc3BbXwowAiUU8GlQJsjJw/zWM8Ct
JloH4gsKuhKk8ZyuVCk5AgHt4ouSCSUgAymSQRBiggbuqV7FM9f0tvMAkJlAHhRpHup+cUL1+Qcm
/wLAV7CVpvKc4CcD28pQaEEAWAGxBaNTYe5QYKJd9OIZAehf8FbAoX1PGVFoHdsZeVowmIq40EPJ
q59c0FUTciEoI8wIEDxYEgwCOCAh0oBd7NwnBFnwoBWnGMgq2oDIV8RikZA0hCEjSckzTLKSmATD
JTPJyS1sspOgtMInQ0nKKIyylKhkwilTyUottvKVfYClLGdJy1ra8pa4zKUud8nLXpYyBAA7

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://bike.shimano.com/publish/images/global/printpage.gif

R0lGODlhEQAUALMLAPn5+dra2qOjo8jIyK+vr/Pz8+3t7ba2tufn552dnf///////wAAAAAAAAAA
AAAAACH5BAEAAAsALAAAAAARABQAAARUMMlJaVgrqc37PsmleeQxJIYGIGzLFspBCIJmHHiOB4rB
SqTgBrhyGREABfCmax4MypHQQzwak0tnEwqcUqXeoQZRKSOi4U43jSaXKed1Wh5+2ycRADs=

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://bike.shimano.com/publish/images/global/arrowGoBtn.gif

R0lGODlhCgAOAMQUAMfHx7S0tNPT06qqqru7u8HBwc/Pz9nZ2b29vbe3t8TExK2trcnJyc7OztXV
1cLCws3NzaGhoaioqJ2dndnZ2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA
ABQALAAAAAAKAA4AAAU0ICWOJCU55ThFTUpNUvSkU7FMRDkBQDIFKNEEQlTAVAKBYSBTHRgRSUuF
+AVVzZTUxe2OQgA7

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/css/default/global-layout.css

BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 10px; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 15px; PADDING-TOP: 0px; FONT-FAMILY: Arial, =
Helvetica, sans-serif; TEXT-ALIGN: center
}
A IMG {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
.oneColFixCtr #container {
	MARGIN: 0px auto; WIDTH: 900px; POSITION: relative; TEXT-ALIGN: left
}
.blueText {
	FONT-WEIGHT: bold
}
.shimglobal_movieplayer .title {
	FONT-WEIGHT: bold
}
.clear {
	CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; =
FONT-SIZE: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 0px; =
LINE-HEIGHT: 0; PADDING-TOP: 0px; HEIGHT: 0px
}
.icon {
	VERTICAL-ALIGN: bottom
}
.subheadline {
	FONT-WEIGHT: bold; FONT-SIZE: 1.2em
}
.nolink {
	CURSOR: default
}
.listBar {
	PADDING-BOTTOM: 10px
}
.listBar .button {
	MARGIN-LEFT: 10px
}
.listHeader {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
1.2em; MIN-HEIGHT: 20px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px; HEIGHT: =
auto! important
}
.listHeader .date {
	FONT-SIZE: 0.75em; FLOAT: right
}
.listIntro {
	PADDING-BOTTOM: 10px; PADDING-TOP: 5px
}
.listIntro IMG {
	FLOAT: left; MARGIN-BOTTOM: 5px; MARGIN-RIGHT: 5px
}
#listContainer {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#listMain {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; FONT-SIZE: 1.2em; =
PADDING-BOTTOM: 15px; PADDING-TOP: 15px
}
#listContent {
	FLOAT: left; WIDTH: 500px; MARGIN-RIGHT: 15px
}
#listContainer UL {
	LINE-HEIGHT: 1.8em
}
.listCategory {
	FONT-WEIGHT: bold; FONT-SIZE: 1.6em; PADDING-BOTTOM: 10px
}
#header {
	POSITION: relative
}
#logobar {
	HEIGHT: 57px; TEXT-ALIGN: left
}
#logobox .shimglobal_image {
	FONT-SIZE: 0px; FLOAT: left
}
#searchform {
	Z-INDEX: 99; LEFT: 700px; POSITION: absolute; TOP: 60px
}
#menuContainer {
	MARGIN-TOP: 0px; PADDING-LEFT: 10px; HEIGHT: 28px
}
#crumbBar {
	MARGIN: 0px; HEIGHT: 15px
}
#crumbMenu {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FLOAT: right; MARGIN: 0px; =
PADDING-TOP: 2px; HEIGHT: 13px; TEXT-ALIGN: right
}
.oneColFixCtr #mainContent {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
#postContent {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#footer {
	MARGIN-TOP: 10px
}
#footmenu {
	FLOAT: right; TEXT-ALIGN: right
}
#footswap A.link {
	PADDING-LEFT: 3px
}
#footswap A.hover {
	PADDING-LEFT: 3px
}
#footswap A.visited {
	PADDING-LEFT: 3px
}
#footswap A.active {
	PADDING-LEFT: 3px
}
#footswap A {
	PADDING-LEFT: 3px
}
#footswap {
	WIDTH: 500px; PADDING-TOP: 3px; TEXT-ALIGN: right
}
#languageSelector {
	MARGIN-TOP: 5px; DISPLAY: inline; FLOAT: right; MARGIN-RIGHT: 10px; =
POSITION: relative; TEXT-ALIGN: right
}
#languageSelector IMG {
	WIDTH: 20px; HEIGHT: 20px
}
#languageList {
	LEFT: -175px; WIDTH: 200px; POSITION: absolute; TOP: 25px; TEXT-ALIGN: =
left
}
#languageList .title_bar {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#languageList .title_bar .title {
	FLOAT: left
}
#languageList .close {
	PADDING-RIGHT: 18px; DISPLAY: block; FLOAT: right
}
#languageList .languages {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 10px
}
#languageList .languages A {
	DISPLAY: block
}
#indexMain {
	FLOAT: left; HEIGHT: 345px
}
#articleBrowser_Single_accordion {
	OVERFLOW: auto
}
#indexMain .caption {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 2px; MARGIN: =
0px; OVERFLOW: hidden; WIDTH: 533px; PADDING-TOP: 2px; HEIGHT: 13px
}
#indexMain .shimglobal_texttitleimage .title {
	DISPLAY: none
}
#indexMain .shimglobal_texttitleimage .text {
	DISPLAY: none
}
#featured {
	FLOAT: left; WIDTH: 428px; HEIGHT: 150px
}
#featured .feature {
	PADDING-RIGHT: 2px; FLOAT: left; MARGIN: 1px; WIDTH: 206px; HEIGHT: =
68px
}
#featured .feature A {
	DISPLAY: block
}
#featured .feature IMG {
	FLOAT: left; MARGIN-RIGHT: 5px
}
#featured .feature .title {
	MARGIN-TOP: 3px
}
#featured #thumbs {
	MARGIN-TOP: 1px; HEIGHT: 24px
}
#featured #thumbs IMG {
	FLOAT: right
}
#featured #selected {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: =
0px; PADDING-TOP: 5px; HEIGHT: 102px
}
#featured #selected IMG {
	FLOAT: left; MARGIN-RIGHT: 10px
}
#postcontent_middle {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; MIN-HEIGHT: 150px; =
PADDING-BOTTOM: 0px; WIDTH: 200px; PADDING-TOP: 0px; HEIGHT: auto! =
important
}
#postcontent_right {
	WIDTH: 220px
}
#postcontent_middle {
	FONT-SIZE: 12px; FLOAT: left; MARGIN-LEFT: 15px; LINE-HEIGHT: 1.4em
}
#postcontent_right {
	FONT-SIZE: 12px; FLOAT: left; MARGIN-LEFT: 15px; LINE-HEIGHT: 1.4em
}
#productContainer {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#reloadable_content {
	HEIGHT: auto
}
#productMain {
	FLOAT: left
}
#productMenu {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 8px
}
#productMenu LI {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FLOAT: left; PADDING-BOTTOM: =
5px; MARGIN: 0px; WIDTH: 140px; CURSOR: pointer; PADDING-TOP: 5px; =
LIST-STYLE-TYPE: none; TEXT-ALIGN: left
}
#productMenu .tab_on A {
	DISPLAY: block
}
#productMenu .tab_off A {
	DISPLAY: block
}
#productContainer .landing {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 1.2em; =
PADDING-BOTTOM: 10px; WIDTH: 515px; MARGIN-RIGHT: 5px; PADDING-TOP: 10px
}
#productContainer .landing .text {
	MARGIN: 10px 0px
}
#productContent .features {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 1.2em; =
PADDING-BOTTOM: 10px; WIDTH: 515px; MARGIN-RIGHT: 0px; PADDING-TOP: =
10px; HEIGHT: 480px
}
#productContent .features P {
	OVERFLOW: auto; HEIGHT: 75px
}
#pictoview_btn {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; Z-INDEX: 10; LEFT: 440px; =
PADDING-BOTTOM: 3px; PADDING-TOP: 3px; POSITION: absolute; TOP: 500px
}
#productFeatures {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; OVERFLOW: =
auto; WIDTH: 335px; PADDING-TOP: 5px; HEIGHT: 490px
}
#productFeatures .header {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
1.4em; PADDING-BOTTOM: 3px; PADDING-TOP: 3px
}
#productFeatures .content {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px
}
#productFeatures .content TD {
	VERTICAL-ALIGN: top
}
#productList_Single_menu {
	WIDTH: auto! important
}
#productList_Single_menu IMG {
	FLOAT: left; MARGIN-RIGHT: 3px
}
#cross_sell_area {
	PADDING-BOTTOM: 10px; MARGIN-LEFT: 10px
}
.cross_sell {
	FLOAT: left; WIDTH: 210px; MARGIN-RIGHT: 10px; HEIGHT: 65px
}
.cross_sell IMG {
	FLOAT: left; MARGIN-RIGHT: 5px
}
.cross_sell A.linkname {
	MARGIN-TOP: 3px; DISPLAY: block
}
#compare {
	CLEAR: both; OVERFLOW: auto; WIDTH: 888px; HEIGHT: 500px
}
#compare TD {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
VERTICAL-ALIGN: top; WIDTH: 25%; PADDING-TOP: 5px
}
#compare P {
	FONT-SIZE: 1.1em
}
#compare .specName {
	FONT-WEIGHT: bold
}
#compare SELECT {
	WIDTH: 200px
}
.locate .brand_icon {
	PADDING-RIGHT: 5px
}
.locate .locatebar {
	FLOAT: left; OVERFLOW: auto; WIDTH: 277px
}
#standard_results {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 10px; HEIGHT: auto
}
.locate .locatebar .plain {
	HEIGHT: 478px
}
.locate .locatebar .dropdown {
	MARGIN-BOTTOM: 10px
}
#productContainer #results_container {
	WIDTH: 585px
}
#results_container {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
OVERFLOW: auto; WIDTH: 595px; PADDING-TOP: 10px; HEIGHT: 478px
}
#results_container #results {
	OVERFLOW: auto; WIDTH: auto; HEIGHT: auto
}
#results_container .searchResultsHeadline {
	FONT-WEIGHT: bold; FONT-SIZE: 2em
}
#results_container .text {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; =
PADDING-BOTTOM: 5px; PADDING-TOP: 5px
}
#standard_results .location {
	FONT-WEIGHT: bold; FONT-SIZE: 1.4em
}
#results {
	OVERFLOW: auto; WIDTH: 271px; HEIGHT: auto
}
#map {
	WIDTH: 584px; HEIGHT: 470px
}
.locate .map {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; FONT-SIZE: 1.2em; =
PADDING-BOTTOM: 15px; WIDTH: 588px; PADDING-TOP: 15px
}
.locate .map #masthead {
	MARGIN-BOTTOM: 5px
}
.locate .map .text {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
.locate .search {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; WIDTH: =
255px; PADDING-TOP: 10px; HEIGHT: auto
}
#types {
	FONT-SIZE: 10px
}
#productContent .video {
	OVERFLOW: auto; WIDTH: 590px; HEIGHT: 500px; TEXT-ALIGN: center
}
#productContent .video .title {
	DISPLAY: block; FONT-WEIGHT: bold; FONT-SIZE: 1.8em; MARGIN: 20px; =
FONT-STYLE: italic
}
#productContent .video .description {
	MARGIN-TOP: 40px; MARGIN-LEFT: 40px; MARGIN-RIGHT: 40px
}
#video_thumbs {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
OVERFLOW: auto; WIDTH: 271px; PADDING-TOP: 10px; HEIGHT: 480px
}
#video_thumbs .thumb {
	MARGIN-BOTTOM: 10px
}
#video_thumbs .thumb IMG {
	FLOAT: left; MARGIN-RIGHT: 10px
}
#video_thumbs .thumb .title A {
	DISPLAY: block; FONT-WEIGHT: bold; FONT-SIZE: 1.4em
}
#articleContainer {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#articleContent {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; FONT-SIZE: 1.2em; =
PADDING-BOTTOM: 15px; PADDING-TOP: 15px
}
#articleContent .media {
	MARGIN-BOTTOM: 10px
}
#articleContent .right.media {
	MARGIN-LEFT: 10px
}
#articleContent .left.media {
	MARGIN-RIGHT: 10px
}
#masthead {
	MARGIN-BOTTOM: 15px; WIDTH: 100%
}
.masthead {
	MARGIN-BOTTOM: 15px; WIDTH: 100%
}
#masthead #infoblock {
	FONT-SIZE: 1.2em; FLOAT: right
}
#masthead .headline {
	FONT-WEIGHT: bold; FONT-SIZE: 2em
}
.masthead .headline {
	FONT-WEIGHT: bold; FONT-SIZE: 2em
}
.modalDialog_transparentDivs {
	Z-INDEX: 1; FILTER: alpha(opacity=3D40); POSITION: absolute; opacity: =
0.4
}
.modalDialog_contentDiv {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; Z-INDEX: 100; PADDING-BOTTOM: =
2px; PADDING-TOP: 2px; POSITION: absolute
}
.modalDialog_contentDiv_shadow {
	Z-INDEX: 90; FILTER: alpha(opacity=3D30); POSITION: absolute; opacity: =
0.3
}
#logo_modal {
	TEXT-ALIGN: left
}
.answer_popup {
	TEXT-ALIGN: left
}
#logo_modal .headline {
	FONT-WEIGHT: bold; FONT-SIZE: 14px
}
.answer_popup .headline {
	FONT-WEIGHT: bold; FONT-SIZE: 14px
}
#logo_modal #modal_specs {
	MARGIN-LEFT: 20px; OVERFLOW: auto; MARGIN-RIGHT: 20px
}
.answer_popup .text {
	MARGIN-LEFT: 20px; OVERFLOW: auto; MARGIN-RIGHT: 20px
}
#logo_modal #logo {
	FLOAT: left; MARGIN-RIGHT: 1px
}
#modal_bar {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; =
MARGIN-BOTTOM: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px; TEXT-ALIGN: =
right
}
.answer_popup {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; Z-INDEX: 100; MAX-WIDTH: 800px; =
PADDING-BOTTOM: 5px; PADDING-TOP: 5px; POSITION: absolute
}
.answer_popup .text {
	LINE-HEIGHT: 15px
}
#newsContainer {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#hotNews {
	FLOAT: left; WIDTH: 300px
}
#hotNews .title {
	DISPLAY: block; FONT-WEIGHT: bold; FONT-SIZE: 1.2em
}
#hotNews .shimglobal_parsys {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 10px
}
#hotNews .shimglobal_feature P {
	MARGIN: 0px
}
#newsMain {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; FONT-SIZE: 1.2em; =
PADDING-BOTTOM: 15px; PADDING-TOP: 15px
}
#newsContent {
	FLOAT: left; WIDTH: 500px; MARGIN-RIGHT: 15px
}
#pageSelection {
	FONT-WEIGHT: bold; TEXT-ALIGN: right
}
#newsContent .newsCategory {
	FONT-WEIGHT: bold; FONT-SIZE: 1.6em; PADDING-BOTTOM: 10px
}
#newsContent .newsHeader {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
1.2em; PADDING-BOTTOM: 3px; PADDING-TOP: 3px
}
#newsContent .newsHeader .date {
	FONT-SIZE: 0.75em; FLOAT: right
}
#newsContent .newsIntro {
	PADDING-BOTTOM: 10px; PADDING-TOP: 5px
}
#newsContent .newsIntro IMG {
	FLOAT: left; MARGIN-BOTTOM: 5px; MARGIN-RIGHT: 5px
}
#newsContent .newsIntro .flash_obj {
	FLOAT: left; MARGIN-BOTTOM: 5px; MARGIN-RIGHT: 5px
}
#newsContent .newsOptions {
	PADDING-BOTTOM: 20px; TEXT-ALIGN: right
}
#newsContent .newsOptions .button {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
MARGIN-LEFT: 10px; PADDING-TOP: 3px
}
#contentContainer {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#contentContainer UL {
	LINE-HEIGHT: 1.8em
}
#content {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; FONT-SIZE: 1.2em; =
PADDING-BOTTOM: 15px; PADDING-TOP: 15px
}
#content .text {
	MARGIN: 5px 0px
}
#content .shimglobal_parsys_cell {
	MARGIN: 5px 0px
}
#content .left70 {
	FLOAT: left; WIDTH: 550px
}
#content .right30 {
	FLOAT: left; MARGIN-LEFT: 10px; WIDTH: 285px
}
#content .right30 .shimglobal_parsys {
	PADDING-LEFT: 10px
}
#content .left30 {
	FLOAT: left; WIDTH: 290px
}
#content .left30 .shimglobal_parsys {
	PADDING-RIGHT: 10px
}
#content .right70 {
	FLOAT: left; MARGIN-LEFT: 10px; WIDTH: 555px
}
#content .left50 {
	FLOAT: left; WIDTH: 415px
}
#content .right50 {
	FLOAT: left; MARGIN-LEFT: 10px; WIDTH: 425px
}
#content .right50 .shimglobal_parsys {
	PADDING-LEFT: 10px
}
.highlight {
	FONT-WEIGHT: bold
}
.search_result {
	FLOAT: left; WIDTH: 25px; MARGIN-RIGHT: 3px; HEIGHT: 20px
}
.galleryCell {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 0.8em; FLOAT: left; =
PADDING-BOTTOM: 10px; MARGIN: 10px; WIDTH: 240px; PADDING-TOP: 10px; =
HEIGHT: 120px
}
.galleryCell .thumb {
	FLOAT: left; MARGIN-BOTTOM: 5px; MARGIN-RIGHT: 5px
}
.galleryCell .listHeader {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
1.2em; MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px
}
.galleryCell .listHeader IMG {
	MARGIN-RIGHT: 5px
}
.shimglobal_texttitleimage IMG {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
.shimglobal_texttitleimage .right {
	FLOAT: right; MARGIN-LEFT: 5px
}
.shimglobal_texttitleimage .left {
	FLOAT: left; MARGIN-RIGHT: 5px
}
.shimglobal_texttitleimage .style1 {
	FONT-SIZE: 2em
}
.instructions .style1 {
	FONT-SIZE: 2em
}
.shimglobal_texttitleimage .style2 {
	FONT-SIZE: 1.6em
}
.instructions .style2 {
	FONT-SIZE: 1.6em
}
.shimglobal_texttitleimage .style3 {
	FONT-SIZE: 1.2em
}
.instructions .style3 {
	FONT-SIZE: 1.2em
}
.shimglobal_texttitleimage .lefta {
	TEXT-ALIGN: left
}
.shimglobal_texttitleimage .centera {
	TEXT-ALIGN: center
}
.shimglobal_texttitleimage .righta {
	TEXT-ALIGN: right
}
.shimglobal_navigation .nolink {
	CURSOR: default
}
.shimglobal_feature {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
.shimglobal_feature IMG {
	FLOAT: left; MARGIN-RIGHT: 10px
}
.shimglobal_newsletterform .newsletterInputCell {
	WIDTH: 150px
}
.form_col {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FLOAT: left; PADDING-BOTTOM: =
10px; WIDTH: 45%; PADDING-TOP: 10px
}
.form_item {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FLOAT: left; PADDING-BOTTOM: =
10px; PADDING-TOP: 10px
}
.form_item LABEL {
	DISPLAY: block
}
.form_col LABEL {
	DISPLAY: block
}
.instructions {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
10px 10px 20px; PADDING-TOP: 0px
}
.question {
	DISPLAY: block; FONT-WEIGHT: bold
}
.required_icon {
	FLOAT: left; WIDTH: 18px; HEIGHT: 15px
}
.required {
	PADDING-RIGHT: 15px
}
.clear_hr {
	CLEAR: both; BORDER-TOP: #666 1px solid; DISPLAY: block; =
PADDING-BOTTOM: 10px; MARGIN: 0px; LINE-HEIGHT: 0; PADDING-TOP: 10px; =
HEIGHT: 1px
}
.shimglobal_download .title {
	FONT-WEIGHT: bold
}
.shimglobal_columncontrol .columncontrol {
	FLOAT: left
}
.shimglobal_columncontrol .spacer {
	FLOAT: left
}
.poll_result_bar {
	MARGIN-BOTTOM: 5px; HEIGHT: 6px
}
.Accordion {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: =
hidden; PADDING-TOP: 0px
}
.AccordionPanel {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: =
0px; PADDING-TOP: 0px
}
.AccordionPanelTab {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: =
11px; PADDING-BOTTOM: 5px; MARGIN: 0px; CURSOR: pointer; PADDING-TOP: =
10px; HEIGHT: 15px
}
.AccordionPanelContent {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; OVERFLOW: auto; PADDING-TOP: 0px; HEIGHT: 150px
}
.AccordionPanel .closed {
	HEIGHT: 0px
}
.AccordionPanel .first {
	HEIGHT: 150px
}
.AccordionPanelContent .innards {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
UL.MenuBarHorizontal {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 100%; PADDING-BOTTOM: =
0px; MARGIN: 0px; WIDTH: auto; CURSOR: default; PADDING-TOP: 8px; =
LIST-STYLE-TYPE: none
}
UL.MenuBarActive {
	Z-INDEX: 1000
}
UL.MenuBarHorizontal LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 100%; FLOAT: left; =
PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: pointer; PADDING-TOP: 0px; =
LIST-STYLE-TYPE: none; POSITION: relative; TEXT-ALIGN: left
}
UL.MenuBarHorizontal LI.listhead {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px
}
UL.MenuBarHorizontal LI.primary {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px
}
UL.MenuBarHorizontal UL {
	PADDING-RIGHT: 0px; DISPLAY: none; PADDING-LEFT: 0px; FONT-SIZE: 100%; =
Z-INDEX: 1020; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 125px; CURSOR: =
default; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; POSITION: absolute
}
UL.MenuBarHorizontal UL.MenuBarSubmenuVisible {
	DISPLAY: block
}
UL.MenuBarHorizontal UL LI {
	WIDTH: 100%
}
UL.MenuBarHorizontal UL UL {
	MARGIN: -5% 0px 0px 95%; POSITION: absolute
}
UL.MenuBarHorizontal UL.MenuBarSubmenuVisible UL.MenuBarSubmenuVisible {
	LEFT: auto; TOP: 0px
}
UL.MenuBarHorizontal A {
	DISPLAY: block; CURSOR: pointer
}
UL.MenuBarHorizontal UL LI A {
	PADDING-RIGHT: 7px; DISPLAY: block; PADDING-LEFT: 7px; PADDING-BOTTOM: =
7px; MARGIN: 0px; PADDING-TOP: 7px
}
UL.MenuBarHorizontal IFRAME {
	Z-INDEX: 1010; POSITION: absolute
}

@media Screen, Projection   =20
{
UL.MenuBarHorizontal LI.MenuBarItemIE {
	DISPLAY: inline; FLOAT: left
}

}

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/css/default/global-color.css

.required_icon {
	BACKGROUND-IMAGE: url(../../images/global/asterisk.gif); =
BACKGROUND-REPEAT: no-repeat
}
.required {
	BACKGROUND-POSITION: right 50%; BACKGROUND-IMAGE: =
url(../../images/global/asterisk.gif); BORDER-BOTTOM: #ff0000 1px solid; =
BACKGROUND-REPEAT: no-repeat
}
.clear_hr {
	BORDER-TOP: #666 1px solid
}
.required_highlight {
	BACKGROUND-COLOR: #ffff99
}
.poll_result_bar {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; =
BACKGROUND-IMAGE: url(../../images/global/poll_result_bar.gif); =
BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid; =
BACKGROUND-REPEAT: repeat-y; BACKGROUND-COLOR: #d5e2e8
}
#articleContent .media IMG.noBorder {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
#content .media IMG.noBorder {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
.listHeader {
	BORDER-RIGHT: #006fa7 1px solid; BORDER-TOP: #006fa7 1px solid; =
BACKGROUND-IMAGE: url(../../images/global/white2grey.jpg); BORDER-LEFT: =
#006fa7 1px solid; COLOR: #045b97; BORDER-BOTTOM: #006fa7 1px solid; =
BACKGROUND-REPEAT: repeat-y
}
.listHeader .date {
	COLOR: #666666
}
.listIntro IMG {
	BORDER-RIGHT: #006fa7 1px solid; BORDER-TOP: #006fa7 1px solid; =
BORDER-LEFT: #006fa7 1px solid; BORDER-BOTTOM: #006fa7 1px solid
}
#listContainer {
	BACKGROUND-IMAGE: url(../../images/global/productsBG.jpg); =
BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #bfbfbf
}
#listMain {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid; =
BACKGROUND-COLOR: #ffffff
}
#listContainer UL {
	LIST-STYLE-IMAGE: url(../../images/global/list-bullet.gif); =
LINE-HEIGHT: 1.8em
}
.listCategory {
	COLOR: #333333
}
.error {
	COLOR: #cc0000
}

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/css/default/cycle/cycling-color.css

BODY {
	COLOR: #000000; BACKGROUND-COLOR: #ffffff
}
A:link {
	COLOR: #045b97
}
A:visited {
	COLOR: #045b97
}
A:hover {
	COLOR: #045b97
}
A:active {
	COLOR: #045b97
}
.oneColFixCtr #container {
=09
}
.blueText {
	COLOR: #49a4cb
}
.shimglobal_movieplayer .title {
	COLOR: #49a4cb
}
.subheadline {
	COLOR: #333333
}
#logobar {
	BACKGROUND-POSITION: right 50%; BACKGROUND-IMAGE: =
url(../../../images/global/cycle/cyclingHeader.gif); BACKGROUND-REPEAT: =
no-repeat
}
#menuContainer {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/menubar.gif)
}
#crumbBar {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/crumbBG.gif)
}
#crumbMenu {
	BORDER-RIGHT: #666666 1px solid; BACKGROUND-IMAGE: =
url(../../../images/global/cycle/crumbBar.gif); COLOR: #ffffff
}
#crumbMenu A {
	COLOR: #ffffff; TEXT-DECORATION: none
}
#languageSelector {
	MARGIN-TOP: 5px; FLOAT: right; MARGIN-RIGHT: 10px; POSITION: relative; =
TEXT-ALIGN: right
}
#languageSelector IMG {
	WIDTH: 20px; HEIGHT: 20px
}
#languageList {
	BORDER-RIGHT: #333333 2px solid; BORDER-TOP: #333333 2px solid; =
BORDER-LEFT: #333333 2px solid; BORDER-BOTTOM: #333333 2px solid; =
BACKGROUND-COLOR: #ffffff
}
#languageList .title_bar {
	BACKGROUND-COLOR: #cccccc
}
#languageList .title_bar .title {
	FONT-WEIGHT: bold; FONT-SIZE: 1.2em
}
#languageList .close {
	BACKGROUND-POSITION: right center; BACKGROUND-IMAGE: =
url(../../../images/global/close.gif); BACKGROUND-REPEAT: no-repeat
}
#languageList .languages A {
	COLOR: #045b97; TEXT-DECORATION: none
}
#languageList .languages A:hover {
	COLOR: #999999; TEXT-DECORATION: underline
}
.oneColFixCtr #mainContent {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; =
BORDER-LEFT: #cccccc 1px solid; BORDER-BOTTOM: #cccccc 1px solid
}
#postContent {
	BACKGROUND-POSITION: 50% top; BACKGROUND-IMAGE: =
url(../../../images/global/cycle/bottomBar.gif); BACKGROUND-REPEAT: =
no-repeat
}
#footer {
	COLOR: #999999
}
#footmenu A {
	COLOR: #045b97; TEXT-DECORATION: none
}
#footmenu A:hover {
	COLOR: #999999; TEXT-DECORATION: underline
}
#footswap A.link {
	COLOR: #045b97
}
#footswap A.hover {
	COLOR: #045b97
}
#footswap A.visited {
	COLOR: #045b97
}
#footswap A.active {
	COLOR: #045b97
}
#footswap A {
	COLOR: #045b97
}
#indexContainer {
	BACKGROUND-IMAGE: url(../../../images/global/productsBG.jpg); =
BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #bfbfbf
}
#indexMain {
	BACKGROUND-COLOR: #bfbfbf
}
#articleBrowser_Single_accordion {
	BORDER-LEFT: #ffffff 5px solid; BACKGROUND-COLOR: #ffffff
}
#indexMain .caption {
	BORDER-RIGHT: #666666 1px solid; BACKGROUND-IMAGE: =
url(../../../images/global/cycle/crumbBar.gif); COLOR: #ffffff
}
#featured .feature {
	BORDER-RIGHT: #9bcbe0 1px solid; BORDER-TOP: #9bcbe0 1px solid; =
BORDER-LEFT: #9bcbe0 1px solid; BORDER-BOTTOM: #9bcbe0 1px solid
}
#featured #thumbs {
	BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; =
BACKGROUND-IMAGE: url(../../../images/global/featuredThumbBG.gif); =
BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid; =
BACKGROUND-REPEAT: repeat-x
}
#featured #thumbs IMG {
	BORDER-RIGHT: #9bcbe0 1px solid; BORDER-TOP: #9bcbe0 1px solid; =
BORDER-LEFT: #9bcbe0 1px solid; BORDER-BOTTOM: #9bcbe0 1px solid
}
#featured #selected {
	BORDER-RIGHT: #9bcbe0 1px solid; BORDER-TOP: #9bcbe0 1px solid; =
BORDER-LEFT: #9bcbe0 1px solid; BORDER-BOTTOM: #9bcbe0 1px solid
}
#postcontent_middle {
	BORDER-RIGHT: #999999 1px solid; BORDER-LEFT: #999999 1px solid
}
#productContainer {
	BACKGROUND-IMAGE: url(../../../images/global/productsBG.jpg); =
BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #bfbfbf
}
#productMain {
	BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; =
BACKGROUND-IMAGE: url(../../../images/global/lightBlueGrad.jpg); =
BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid; =
BACKGROUND-REPEAT: repeat-y; BACKGROUND-COLOR: #cfdee5
}
#groupTextImage_Single_image {
	BORDER-RIGHT: #49a4cb 1px solid; BORDER-TOP: #49a4cb 1px solid; =
BORDER-LEFT: #49a4cb 1px solid; BORDER-BOTTOM: #49a4cb 1px solid
}
#productImg {
	BORDER-RIGHT: #49a4cb 1px solid; BORDER-TOP: #49a4cb 1px solid; =
BORDER-LEFT: #49a4cb 1px solid; BORDER-BOTTOM: #49a4cb 1px solid
}
#productMenu LI {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid
}
#productMenu .tab_on {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/tab_on.gif); =
BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #cedde4
}
#productMenu .tab_on A:link {
	COLOR: #000000; TEXT-DECORATION: none
}
#productMenu .tab_on A:hover {
	COLOR: #000000; TEXT-DECORATION: none
}
#productMenu .tab_on A:active {
	COLOR: #000000; TEXT-DECORATION: none
}
#productMenu .tab_on A:visited {
	COLOR: #000000; TEXT-DECORATION: none
}
#productMenu .tab_off {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/tab_off.gif); COLOR: =
#ffffff; BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #a8a6a6
}
#productMenu .tab_off A:link {
	COLOR: #ffffff; TEXT-DECORATION: none
}
#productMenu .tab_off A:hover {
	COLOR: #ffffff; TEXT-DECORATION: none
}
#productMenu .tab_off A:active {
	COLOR: #ffffff; TEXT-DECORATION: none
}
#productMenu .tab_off A:visited {
	COLOR: #ffffff; TEXT-DECORATION: none
}
#pictoview_btn {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid; =
BACKGROUND-COLOR: #cccccc
}
#productFeatures {
	BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; =
BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid; =
BACKGROUND-COLOR: #ffffff
}
#productFeatures .header {
	COLOR: #ffffff; BACKGROUND-COLOR: #93b1c4
}
#productList_Single_menu IMG {
	BORDER-RIGHT: #49a4cb 1px solid; BORDER-TOP: #49a4cb 1px solid; =
BORDER-LEFT: #49a4cb 1px solid; BORDER-BOTTOM: #49a4cb 1px solid
}
#productList_Single_menu .productNumber {
	COLOR: #1582ab
}
.cross_sell {
	BORDER-RIGHT: #9bcbe0 1px solid; BORDER-TOP: #9bcbe0 1px solid; =
BORDER-LEFT: #9bcbe0 1px solid; BORDER-BOTTOM: #9bcbe0 1px solid
}
#compare TD {
	BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid; =
BACKGROUND-COLOR: #ffffff
}
#results_container {
	BACKGROUND-COLOR: #ffffff
}
#results_container .searchResultsHeadline {
	COLOR: #333333
}
#standard_results .location {
	COLOR: #49a4cb
}
#map {
	BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; =
BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid
}
.locate .search {
	BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; =
BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid; =
BACKGROUND-COLOR: #e4eaed
}
#productContent .video .title {
	COLOR: #49a4cb
}
#video_thumbs {
	BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; =
BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px solid; =
BACKGROUND-COLOR: #ffffff
}
#video_thumbs .thumb IMG {
	BORDER-RIGHT: #49a4cb 1px solid; BORDER-TOP: #49a4cb 1px solid; =
BORDER-LEFT: #49a4cb 1px solid; BORDER-BOTTOM: #49a4cb 1px solid
}
#video_thumbs .thumb .title A {
	COLOR: #49a4cb
}
#articleContainer {
	BACKGROUND-IMAGE: url(../../../images/global/productsBG.jpg); =
BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #bfbfbf
}
#articleContent {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid; =
BACKGROUND-COLOR: #ffffff
}
#articleContent .media IMG {
	BORDER-RIGHT: #49a4cb 1px solid; BORDER-TOP: #49a4cb 1px solid; =
BORDER-LEFT: #49a4cb 1px solid; BORDER-BOTTOM: #49a4cb 1px solid
}
#masthead {
	BORDER-BOTTOM: #666666 1px solid
}
.masthead {
	BORDER-BOTTOM: #666666 1px solid
}
#masthead #infoblock {
	COLOR: #666666
}
#masthead .headline {
	COLOR: #49a4cb
}
.masthead .headline {
	COLOR: #49a4cb
}
.modalDialog_transparentDivs {
	BACKGROUND-COLOR: #000000
}
.modalDialog_contentDiv {
	BORDER-RIGHT: #000 3px solid; BORDER-TOP: #000 3px solid; BORDER-LEFT: =
#000 3px solid; BORDER-BOTTOM: #000 3px solid; BACKGROUND-COLOR: #ffffff
}
.modalDialog_contentDiv_shadow {
	BACKGROUND-COLOR: #000000
}
#modal_bar {
	COLOR: #000000; BACKGROUND-COLOR: #cccccc
}
.answer_popup {
	BORDER-RIGHT: #000000 2px solid; BORDER-TOP: #000000 2px solid; =
BORDER-LEFT: #000000 2px solid; BORDER-BOTTOM: #000000 2px solid; =
BACKGROUND-COLOR: #ffffff
}
#newsContainer {
	BACKGROUND-IMAGE: url(../../../images/global/productsBG.jpg); =
BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #bfbfbf
}
#hotNews .title {
	COLOR: #045b97
}
#hotNews .shimglobal_parsys {
	BORDER-LEFT: #666666 1px solid
}
#newsMain {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid; =
BACKGROUND-COLOR: #ffffff
}
#pageSelection {
	COLOR: #666666
}
#newsContent .newsCategory {
	COLOR: #333333
}
#newsContent .newsHeader {
	BORDER-RIGHT: #006fa7 1px solid; BORDER-TOP: #006fa7 1px solid; =
BACKGROUND-IMAGE: url(../../../images/global/white2grey.jpg); =
BORDER-LEFT: #006fa7 1px solid; COLOR: #045b97; BORDER-BOTTOM: #006fa7 =
1px solid; BACKGROUND-REPEAT: repeat-y
}
#newsContent .newsHeader .date {
	COLOR: #666666
}
#newsContent .newsIntro IMG {
	BORDER-RIGHT: #006fa7 1px solid; BORDER-TOP: #006fa7 1px solid; =
BORDER-LEFT: #006fa7 1px solid; BORDER-BOTTOM: #006fa7 1px solid
}
#newsContent .newsIntro .flash_obj {
	BORDER-RIGHT: #006fa7 1px solid; BORDER-TOP: #006fa7 1px solid; =
BORDER-LEFT: #006fa7 1px solid; BORDER-BOTTOM: #006fa7 1px solid
}
#newsContent .newsOptions .button {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid; =
BACKGROUND-COLOR: #cccccc
}
#contentContainer {
	BACKGROUND-IMAGE: url(../../../images/global/productsBG.jpg); =
BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #bfbfbf
}
#content {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid; =
BACKGROUND-COLOR: #ffffff
}
#content .media IMG {
	BORDER-RIGHT: #49a4cb 1px solid; BORDER-TOP: #49a4cb 1px solid; =
BORDER-LEFT: #49a4cb 1px solid; BORDER-BOTTOM: #49a4cb 1px solid
}
#content .right30 .shimglobal_parsys {
	BORDER-LEFT: #666666 1px solid
}
#content .left30 .shimglobal_parsys {
	BORDER-RIGHT: #666666 1px solid
}
#content .right50 .shimglobal_parsys {
	BORDER-LEFT: #666666 1px solid
}
.highlight {
	BACKGROUND-COLOR: #d5e6ff
}
.cq_result {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/content_icon.gif)
}
.bm_result {
	BACKGROUND-IMAGE: =
url(../../../images/global/cycle/bike_product_icon.gif)
}
.default_result {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/arrow_btn_right.gif)
}
.galleryCell {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; COLOR: #333333; BORDER-BOTTOM: #666666 =
1px solid
}
.galleryCell .listHeader {
	BORDER-RIGHT: #006fa7 1px solid; BORDER-TOP: #006fa7 1px solid; =
BACKGROUND-IMAGE: url(../../../images/global/white2grey.jpg); =
MARGIN-BOTTOM: 10px; BORDER-LEFT: #006fa7 1px solid; COLOR: #045b97; =
BORDER-BOTTOM: #006fa7 1px solid; BACKGROUND-REPEAT: repeat-y
}
.galleryCell .listHeader A {
	TEXT-DECORATION: none
}
.galleryCell .listHeader A.hover {
	TEXT-DECORATION: underline
}
.shimglobal_download .title {
	COLOR: #49a4cb
}
.AccordionPanelTab {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/newsItemBG.jpg); =
BACKGROUND-COLOR: #eff4f7
}
.AccordionPanelContent {
	BACKGROUND-COLOR: #c4d6df
}
.AccordionPanelOpen .AccordionPanelTab {
	BACKGROUND-COLOR: #eff4f7
}
.AccordionPanelTabHover {
	COLOR: #555555
}
.AccordionPanelOpen .AccordionPanelTabHover {
	COLOR: #555555
}
.AccordionFocused .AccordionPanelTab {
	BACKGROUND-COLOR: #3399ff
}
.AccordionFocused .AccordionPanelOpen .AccordionPanelTab {
	BACKGROUND-COLOR: #33ccff
}
UL.MenuBarHorizontal LI.primary {
	BORDER-LEFT: #045b97 1px solid
}
UL.MenuBarHorizontal UL {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px
}
UL.MenuBarHorizontal A {
	TEXT-DECORATION: none
}
UL.MenuBarHorizontal UL LI A {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/dropBG.gif); =
BORDER-BOTTOM: #666 1px solid; BORDER-LEFT-STYLE: none; TEXT-DECORATION: =
none
}
UL.MenuBarHorizontal UL LI A:hover {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/dropBGover.gif)
}
UL.MenuBarHorizontal UL A.MenuBarItemSubmenu {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/dropBG.gif)
}
UL.MenuBarHorizontal UL A.MenuBarItemSubmenuHover {
	BACKGROUND-IMAGE: url(../../../images/global/cycle/dropBGover.gif)
}
#multilingualContainer #multilingualPanel {
	COLOR: black; BACKGROUND-COLOR: rgb(235,235,235)
}
#multilingualContainer #multilingualPanel A {
	COLOR: #045b97
}

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/css/default/cycle/cycling-layout.css

#productList_Single_menu .productName {
	FONT-WEIGHT: bold; FONT-SIZE: 1.2em
}
#productFeatures .productCode {
	FONT-WEIGHT: bold; FONT-SIZE: 1.1em
}
#productMenu LI {
=09
}
#multilingualContainer {
	Z-INDEX: 2; RIGHT: 146px; POSITION: absolute; TOP: 27px
}
#multilingualContainer #multilingualPanel {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FLOAT: right; PADDING-BOTTOM: =
5px; MARGIN: 0px; WIDTH: 100px; PADDING-TOP: 5px
}
#multilingualContainer #multilingualPanel UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
MARGIN-LEFT: 0px; PADDING-TOP: 0px
}
#multilingualContainer #multilingualPanel LI {
	WIDTH: 75px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; POSITION: relative; BORDER-BOTTOM-STYLE: none
}

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/greybox/gb_styles.css

#GB_overlay {
	Z-INDEX: 100; LEFT: 0px; MARGIN: auto; POSITION: absolute; TOP: 0px; =
BACKGROUND-COLOR: #000
}
#GB_window {
	FONT-SIZE: 1px; Z-INDEX: 150; LEFT: 0px; OVERFLOW: visible; POSITION: =
absolute; TOP: 0px
}
#GB_window .content {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; WIDTH: auto; PADDING-TOP: 0px
}
#GB_frame {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
MARGIN: 0px; OVERFLOW: auto; PADDING-TOP: 0px; WHITE-SPACE: nowrap; =
BORDER-RIGHT-WIDTH: 0px
}
.GB_Gallery {
	MARGIN: 0px 22px
}
.GB_Gallery .content {
	BORDER-RIGHT: #ddd 3px solid; BORDER-TOP: #ddd 3px solid; BORDER-LEFT: =
#ddd 3px solid; BORDER-BOTTOM: #ddd 3px solid; BACKGROUND-COLOR: #fff
}
.GB_header {
	BORDER-TOP: #555 2px solid; Z-INDEX: 500; LEFT: 0px; MARGIN: 0px; =
BORDER-BOTTOM: #555 2px solid; POSITION: absolute; TOP: 10px
}
.GB_header .inner {
	PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px; FONT-FAMILY: Arial, Verdana, sans-serif; =
BACKGROUND-COLOR: #333
}
.GB_header TABLE {
	MARGIN: 0px; WIDTH: 100%; BORDER-COLLAPSE: collapse
}
.GB_header .caption {
	FONT-SIZE: 20px; COLOR: #eee; WHITE-SPACE: nowrap; TEXT-ALIGN: left
}
.GB_header .close {
	TEXT-ALIGN: right
}
.GB_header .close IMG {
	Z-INDEX: 500; CURSOR: pointer
}
.GB_header .middle {
	WHITE-SPACE: nowrap; TEXT-ALIGN: center
}
#GB_middle {
	COLOR: #eee
}
#GB_middle IMG {
	VERTICAL-ALIGN: middle; CURSOR: pointer
}
#GB_middle .disabled {
	CURSOR: default
}
#GB_middle .left {
	PADDING-RIGHT: 10px
}
#GB_middle .right {
	PADDING-LEFT: 10px
}
.GB_Window .content {
	BORDER-RIGHT: #ccc 3px solid; BORDER-TOP: #ccc 3px; BORDER-LEFT: #ccc =
3px solid; BORDER-BOTTOM: #ccc 3px solid; BACKGROUND-COLOR: #fff
}
.GB_Window .header {
	BORDER-RIGHT: #ccc 3px solid; PADDING-RIGHT: 0px; BORDER-TOP: #999 1px =
solid; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: 3px; MARGIN: =
0px; BORDER-LEFT: #ccc 3px solid; COLOR: #333; PADDING-TOP: 3px; =
BORDER-BOTTOM: #aaa 1px solid; HEIGHT: 22px
}
.GB_Window .caption {
	PADDING-RIGHT: 20px; FONT-WEIGHT: bold; FONT-SIZE: 12px; WHITE-SPACE: =
nowrap; TEXT-ALIGN: left
}
.GB_Window .close {
	TEXT-ALIGN: right
}
.GB_Window .close SPAN {
	FONT-SIZE: 12px; CURSOR: pointer
}
.GB_Window .close IMG {
	PADDING-RIGHT: 3px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; CURSOR: =
pointer; PADDING-TOP: 0px
}
.GB_Window .on {
	BORDER-BOTTOM: #333 1px solid
}
.GB_Window .click {
	BORDER-BOTTOM: red 1px solid
}

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/SpryAccordion.js

/* SpryAccordion.js - Revision: Spry Preview Release 1.4 */=0A=
=0A=
// Copyright (c) 2006. Adobe Systems Incorporated.=0A=
// All rights reserved.=0A=
//=0A=
// Redistribution and use in source and binary forms, with or without=0A=
// modification, are permitted provided that the following conditions =
are met:=0A=
//=0A=
//   * Redistributions of source code must retain the above copyright =
notice,=0A=
//     this list of conditions and the following disclaimer.=0A=
//   * Redistributions in binary form must reproduce the above copyright =
notice,=0A=
//     this list of conditions and the following disclaimer in the =
documentation=0A=
//     and/or other materials provided with the distribution.=0A=
//   * Neither the name of Adobe Systems Incorporated nor the names of =
its=0A=
//     contributors may be used to endorse or promote products derived =
from this=0A=
//     software without specific prior written permission.=0A=
//=0A=
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS =
"AS IS"=0A=
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, =
THE=0A=
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR =
PURPOSE=0A=
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS =
BE=0A=
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR=0A=
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF=0A=
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR =
BUSINESS=0A=
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER =
IN=0A=
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR =
OTHERWISE)=0A=
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED =
OF THE=0A=
// POSSIBILITY OF SUCH DAMAGE.=0A=
=0A=
var Spry;=0A=
if (!Spry) Spry =3D {};=0A=
if (!Spry.Widget) Spry.Widget =3D {};=0A=
=0A=
Spry.Widget.Accordion =3D function(element, opts)=0A=
{=0A=
	this.element =3D this.getElement(element);=0A=
	this.defaultPanel =3D 0;=0A=
	this.hoverClass =3D "AccordionPanelTabHover";=0A=
	this.openClass =3D "AccordionPanelOpen";=0A=
	this.closedClass =3D "AccordionPanelClosed";=0A=
	this.focusedClass =3D "AccordionFocused";=0A=
	this.enableAnimation =3D true;=0A=
	this.enableKeyboardNavigation =3D true;=0A=
	this.currentPanel =3D null;=0A=
	this.animator =3D null;=0A=
	this.hasFocus =3D null;=0A=
	this.duration =3D 500;=0A=
=0A=
	this.previousPanelKeyCode =3D Spry.Widget.Accordion.KEY_UP;=0A=
	this.nextPanelKeyCode =3D Spry.Widget.Accordion.KEY_DOWN;=0A=
=0A=
	this.useFixedPanelHeights =3D true;=0A=
	this.fixedPanelHeight =3D 0;=0A=
=0A=
	Spry.Widget.Accordion.setOptions(this, opts, true);=0A=
=0A=
	// Unfortunately in some browsers like Safari, the Stylesheets our=0A=
	// page depends on may not have been loaded at the time we are called.=0A=
	// This means we have to defer attaching our behaviors until after the=0A=
	// onload event fires, since some of our behaviors rely on dimensions=0A=
	// specified in the CSS.=0A=
=0A=
	if (Spry.Widget.Accordion.onloadDidFire || !navigator.vendor || =
navigator.vendor.indexOf("Apple") < 0)=0A=
		this.attachBehaviors();=0A=
	else=0A=
		Spry.Widget.Accordion.loadQueue.push(this);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.onloadDidFire =3D false;=0A=
Spry.Widget.Accordion.loadQueue =3D [];=0A=
=0A=
Spry.Widget.Accordion.addLoadListener =3D function(handler)=0A=
{=0A=
	if (typeof window.addEventListener !=3D 'undefined')=0A=
		window.addEventListener('load', handler, false);=0A=
	else if (typeof document.addEventListener !=3D 'undefined')=0A=
		document.addEventListener('load', handler, false);=0A=
	else if (typeof window.attachEvent !=3D 'undefined')=0A=
		window.attachEvent('onload', handler);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.processLoadQueue =3D function(handler)=0A=
{=0A=
	Spry.Widget.Accordion.onloadDidFire =3D true;=0A=
	var q =3D Spry.Widget.Accordion.loadQueue;=0A=
	var qlen =3D q.length;=0A=
	for (var i =3D 0; i < qlen; i++)=0A=
		q[i].attachBehaviors();=0A=
};=0A=
=0A=
Spry.Widget.Accordion.addLoadListener(Spry.Widget.Accordion.processLoadQu=
eue);=0A=
=0A=
Spry.Widget.Accordion.prototype.getElement =3D function(ele)=0A=
{=0A=
	if (ele && typeof ele =3D=3D "string")=0A=
		return document.getElementById(ele);=0A=
	return ele;=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.addClassName =3D function(ele, className)=0A=
{=0A=
	if (!ele || !className || (ele.className && ele.className.search(new =
RegExp("\\b" + className + "\\b")) !=3D -1))=0A=
		return;=0A=
	ele.className +=3D (ele.className ? " " : "") + className;=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.removeClassName =3D function(ele, =
className)=0A=
{=0A=
	if (!ele || !className || (ele.className && ele.className.search(new =
RegExp("\\b" + className + "\\b")) =3D=3D -1))=0A=
		return;=0A=
	ele.className =3D ele.className.replace(new RegExp("\\s*\\b" + =
className + "\\b", "g"), "");=0A=
};=0A=
=0A=
Spry.Widget.Accordion.setOptions =3D function(obj, optionsObj, =
ignoreUndefinedProps)=0A=
{=0A=
	if (!optionsObj)=0A=
		return;=0A=
	for (var optionName in optionsObj)=0A=
	{=0A=
		if (ignoreUndefinedProps && optionsObj[optionName] =3D=3D undefined)=0A=
			continue;=0A=
		obj[optionName] =3D optionsObj[optionName];=0A=
	}=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.onPanelTabMouseOver =3D function(panel)=0A=
{=0A=
	if (panel)=0A=
		this.addClassName(this.getPanelTab(panel), this.hoverClass);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.onPanelTabMouseOut =3D function(panel)=0A=
{=0A=
	if (panel)=0A=
		this.removeClassName(this.getPanelTab(panel), this.hoverClass);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.openPanel =3D function(panel)=0A=
{=0A=
	var panelA =3D this.currentPanel;=0A=
	var panelB =3D panel;=0A=
	=0A=
	if (!panelB || panelA =3D=3D panelB)	=0A=
		return;=0A=
=0A=
	var contentA; =0A=
	if( panelA )=0A=
		contentA =3D this.getPanelContent(panelA);=0A=
	var contentB =3D this.getPanelContent(panelB);=0A=
=0A=
	if (! contentB)=0A=
		return;=0A=
=0A=
	if (this.useFixedPanelHeights && !this.fixedPanelHeight)=0A=
	{=0A=
		this.fixedPanelHeight =3D (contentA.offsetHeight) ? =
contentA.offsetHeight : contentA.scrollHeight;=0A=
	}=0A=
=0A=
	if (this.enableAnimation)=0A=
	{=0A=
		if (this.animator)=0A=
			this.animator.stop();=0A=
		this.animator =3D new Spry.Widget.Accordion.PanelAnimator(this, =
panelB, { duration: this.duration });=0A=
		this.animator.start();=0A=
	}=0A=
	else=0A=
	{=0A=
		if(contentA)=0A=
			contentA.style.height =3D "0px";=0A=
		contentB.style.height =3D (this.useFixedPanelHeights ? =
this.fixedPanelHeight : contentB.scrollHeight) + "px";=0A=
	}=0A=
=0A=
	if(panelA)=0A=
	{=0A=
		this.removeClassName(panelA, this.openClass);=0A=
		this.addClassName(panelA, this.closedClass);=0A=
	}=0A=
=0A=
	this.removeClassName(panelB, this.closedClass);=0A=
	this.addClassName(panelB, this.openClass);=0A=
=0A=
	this.currentPanel =3D panelB;=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.openNextPanel =3D function()=0A=
{=0A=
	var panels =3D this.getPanels();=0A=
	var curPanelIndex =3D this.getCurrentPanelIndex();=0A=
	=0A=
	if( panels && curPanelIndex >=3D 0 && (curPanelIndex+1) < panels.length =
)=0A=
		this.openPanel(panels[curPanelIndex+1]);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.openPreviousPanel =3D function()=0A=
{=0A=
	var panels =3D this.getPanels();=0A=
	var curPanelIndex =3D this.getCurrentPanelIndex();=0A=
	=0A=
	if( panels && curPanelIndex > 0 && curPanelIndex < panels.length )=0A=
		this.openPanel(panels[curPanelIndex-1]);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.openFirstPanel =3D function()=0A=
{=0A=
	var panels =3D this.getPanels();=0A=
	if( panels )=0A=
		this.openPanel(panels[0]);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.openLastPanel =3D function()=0A=
{=0A=
	var panels =3D this.getPanels();=0A=
	if( panels )=0A=
		this.openPanel(panels[panels.length-1]);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.onPanelClick =3D function(panel)=0A=
{=0A=
	// if (this.enableKeyboardNavigation)=0A=
	// 	this.element.focus();=0A=
	if (panel !=3D this.currentPanel)=0A=
		this.openPanel(panel);=0A=
	//this.focus();=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.onFocus =3D function(e)=0A=
{=0A=
	// this.element.focus();=0A=
	this.hasFocus =3D true;=0A=
	this.addClassName(this.element, this.focusedClass);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.onBlur =3D function(e)=0A=
{=0A=
	// this.element.blur();=0A=
	this.hasFocus =3D false;=0A=
	this.removeClassName(this.element, this.focusedClass);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.KEY_UP =3D 38;=0A=
Spry.Widget.Accordion.KEY_DOWN =3D 40;=0A=
=0A=
Spry.Widget.Accordion.prototype.onKeyDown =3D function(e)=0A=
{=0A=
	var key =3D e.keyCode;=0A=
	if (!this.hasFocus || (key !=3D this.previousPanelKeyCode && key !=3D =
this.nextPanelKeyCode))=0A=
		return true;=0A=
	=0A=
	var panels =3D this.getPanels();=0A=
	if (!panels || panels.length < 1)=0A=
		return false;=0A=
	var currentPanel =3D this.currentPanel ? this.currentPanel : panels[0];=0A=
	var nextPanel =3D (key =3D=3D this.nextPanelKeyCode) ? =
currentPanel.nextSibling : currentPanel.previousSibling;=0A=
	=0A=
	while (nextPanel)=0A=
	{=0A=
		if (nextPanel.nodeType =3D=3D 1 /* Node.ELEMENT_NODE */)=0A=
			break;=0A=
		nextPanel =3D (key =3D=3D this.nextPanelKeyCode) ? =
nextPanel.nextSibling : nextPanel.previousSibling;=0A=
	}=0A=
	=0A=
	if (nextPanel && currentPanel !=3D nextPanel)=0A=
		this.openPanel(nextPanel);=0A=
=0A=
	if (e.stopPropagation)=0A=
		e.stopPropagation();=0A=
	if (e.preventDefault)=0A=
		e.preventDefault();=0A=
=0A=
	return false;=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.attachPanelHandlers =3D function(panel)=0A=
{=0A=
	if (!panel)=0A=
		return;=0A=
=0A=
	var tab =3D this.getPanelTab(panel);=0A=
=0A=
	if (tab)=0A=
	{=0A=
		var self =3D this;=0A=
		Spry.Widget.Accordion.addEventListener(tab, "mouseover", function(e) { =
return self.onPanelClick(panel); }, false);=0A=
		//Spry.Widget.Accordion.addEventListener(tab, "click", function(e) { =
return self.onPanelClick(panel); }, false);=0A=
		//Spry.Widget.Accordion.addEventListener(tab, "mouseover", function(e) =
{ return self.onPanelTabMouseOver(panel); }, false);=0A=
		Spry.Widget.Accordion.addEventListener(tab, "mouseout", function(e) { =
return self.onPanelTabMouseOut(panel); }, false);=0A=
	}=0A=
};=0A=
=0A=
Spry.Widget.Accordion.addEventListener =3D function(element, eventType, =
handler, capture)=0A=
{=0A=
	try=0A=
	{=0A=
		if (element.addEventListener)=0A=
			element.addEventListener(eventType, handler, capture);=0A=
		else if (element.attachEvent)=0A=
			element.attachEvent("on" + eventType, handler);=0A=
	}=0A=
	catch (e) {}=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.initPanel =3D function(panel, isDefault)=0A=
{=0A=
	var content =3D this.getPanelContent(panel);=0A=
	if (isDefault)=0A=
	{=0A=
		this.currentPanel =3D panel;=0A=
		this.removeClassName(panel, this.closedClass);=0A=
		this.addClassName(panel, this.openClass);=0A=
	}=0A=
	else=0A=
	{=0A=
		this.removeClassName(panel, this.openClass);=0A=
		this.addClassName(panel, this.closedClass);=0A=
		content.style.height =3D "0px";=0A=
	}=0A=
	=0A=
	this.attachPanelHandlers(panel);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.attachBehaviors =3D function()=0A=
{=0A=
	var panels =3D this.getPanels();=0A=
	for (var i =3D 0; i < panels.length; i++)=0A=
	{=0A=
		this.initPanel(panels[i], i =3D=3D this.defaultPanel);=0A=
	}=0A=
=0A=
	if (this.enableKeyboardNavigation)=0A=
	{=0A=
		// XXX: IE doesn't allow the setting of tabindex dynamically. This =
means we can't=0A=
		// rely on adding the tabindex attribute if it is missing to enable =
keyboard navigation=0A=
		// by default.=0A=
=0A=
		var tabIndexAttr =3D this.element.attributes.getNamedItem("tabindex");=0A=
		// if (!tabIndexAttr) this.element.tabindex =3D 0;=0A=
		if (tabIndexAttr)=0A=
		{=0A=
			var self =3D this;=0A=
			//Spry.Widget.Accordion.addEventListener(this.element, "focus", =
function(e) { return self.onFocus(e); }, false);=0A=
			//Spry.Widget.Accordion.addEventListener(this.element, "blur", =
function(e) { return self.onBlur(e); }, false);=0A=
			Spry.Widget.Accordion.addEventListener(this.element, "keydown", =
function(e) { return self.onKeyDown(e); }, false);=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.getPanels =3D function()=0A=
{=0A=
	return this.getElementChildren(this.element);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.getCurrentPanel =3D function()=0A=
{=0A=
	return this.currentPanel;=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.getCurrentPanelIndex =3D function()=0A=
{=0A=
	var panels =3D this.getPanels();=0A=
	for( var i =3D 0 ; i < panels.length; i++ )=0A=
	{=0A=
		if( this.currentPanel =3D=3D panels[i] )=0A=
			return i;=0A=
	}=0A=
	return 0;=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.getPanelTab =3D function(panel)=0A=
{=0A=
	if (!panel)=0A=
		return null;=0A=
	return this.getElementChildren(panel)[0];=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.getPanelContent =3D function(panel)=0A=
{=0A=
	if (!panel)=0A=
		return null;=0A=
	return this.getElementChildren(panel)[1];=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.getElementChildren =3D function(element)=0A=
{=0A=
	var children =3D [];=0A=
	var child =3D element.firstChild;=0A=
	while (child)=0A=
	{=0A=
		if (child.nodeType =3D=3D 1 /* Node.ELEMENT_NODE */)=0A=
			children.push(child);=0A=
		child =3D child.nextSibling;=0A=
	}=0A=
	return children;=0A=
};=0A=
=0A=
Spry.Widget.Accordion.prototype.focus =3D function()=0A=
{=0A=
	if (this.element && this.element.focus)=0A=
		this.element.focus();=0A=
};=0A=
=0A=
/////////////////////////////////////////////////////=0A=
=0A=
Spry.Widget.Accordion.PanelAnimator =3D function(accordion, panel, opts)=0A=
{=0A=
	this.timer =3D null;=0A=
	this.interval =3D 0;=0A=
	this.stepCount =3D 0;=0A=
=0A=
	this.fps =3D 0;=0A=
	this.steps =3D 10;=0A=
	this.duration =3D 500;=0A=
	this.onComplete =3D null;=0A=
=0A=
	this.panel =3D panel;=0A=
	this.panelToOpen =3D accordion.getElement(panel);=0A=
	this.panelData =3D [];=0A=
=0A=
	Spry.Widget.Accordion.setOptions(this, opts, true);=0A=
=0A=
=0A=
	// If caller specified speed in terms of frames per second,=0A=
	// convert them into steps.=0A=
=0A=
	if (this.fps > 0)=0A=
	{=0A=
		this.interval =3D Math.floor(1000 / this.fps);=0A=
		this.steps =3D parseInt((this.duration + (this.interval - 1)) / =
this.interval);=0A=
	}=0A=
	else if (this.steps > 0)=0A=
		this.interval =3D this.duration / this.steps;=0A=
=0A=
	// Set up the array of panels we want to animate.=0A=
=0A=
	var panels =3D accordion.getPanels();=0A=
	for (var i =3D 0; i < panels.length; i++)=0A=
	{=0A=
		var p =3D panels[i];=0A=
		var c =3D accordion.getPanelContent(p);=0A=
		if (c)=0A=
		{=0A=
			var h =3D c.offsetHeight;=0A=
			if (h =3D=3D undefined)=0A=
				h =3D 0;=0A=
			if (p =3D=3D panel || h > 0)=0A=
			{=0A=
				var obj =3D new Object;=0A=
				obj.panel =3D p;=0A=
				obj.content =3D c;=0A=
				obj.fromHeight =3D h;=0A=
				obj.toHeight =3D (p =3D=3D panel) ? (accordion.useFixedPanelHeights =
? accordion.fixedPanelHeight : c.scrollHeight) : 0;=0A=
				obj.increment =3D (obj.toHeight - obj.fromHeight) / this.steps;=0A=
				obj.overflow =3D c.style.overflow;=0A=
				this.panelData.push(obj);=0A=
=0A=
				c.style.overflow =3D "hidden";=0A=
				c.style.height =3D h + "px";=0A=
			}=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
Spry.Widget.Accordion.PanelAnimator.prototype.start =3D function()=0A=
{=0A=
	var self =3D this;=0A=
	this.timer =3D setTimeout(function() { self.stepAnimation(); }, =
this.interval);=0A=
};=0A=
=0A=
Spry.Widget.Accordion.PanelAnimator.prototype.stop =3D function()=0A=
{=0A=
	if (this.timer)=0A=
	{=0A=
		clearTimeout(this.timer);=0A=
=0A=
		// If we're killing the timer, restore the overflow=0A=
		// properties on the panels we were animating!=0A=
=0A=
		if (this.stepCount < this.steps)=0A=
		{=0A=
			for (i =3D 0; i < this.panelData.length; i++)=0A=
			{=0A=
				obj =3D this.panelData[i];=0A=
				obj.content.style.overflow =3D obj.overflow;=0A=
			}=0A=
		}=0A=
	}=0A=
=0A=
	this.timer =3D null;=0A=
};=0A=
=0A=
Spry.Widget.Accordion.PanelAnimator.prototype.stepAnimation =3D =
function()=0A=
{=0A=
	++this.stepCount;=0A=
=0A=
	this.animate();=0A=
=0A=
	if (this.stepCount < this.steps)=0A=
		this.start();=0A=
	else if (this.onComplete)=0A=
		this.onComplete();=0A=
};=0A=
=0A=
Spry.Widget.Accordion.PanelAnimator.prototype.animate =3D function()=0A=
{=0A=
	var i, obj;=0A=
=0A=
	if (this.stepCount >=3D this.steps)=0A=
	{=0A=
		for (i =3D 0; i < this.panelData.length; i++)=0A=
		{=0A=
			obj =3D this.panelData[i];=0A=
			if (obj.panel !=3D this.panel)=0A=
				obj.content.style.height =3D "0px";=0A=
			obj.content.style.overflow =3D obj.overflow;=0A=
			obj.content.style.height =3D obj.toHeight + "px";=0A=
		}=0A=
	}=0A=
	else=0A=
	{=0A=
		for (i =3D 0; i < this.panelData.length; i++)=0A=
		{=0A=
			obj =3D this.panelData[i];=0A=
			obj.fromHeight +=3D obj.increment;=0A=
			obj.content.style.height =3D obj.fromHeight + "px";=0A=
		}=0A=
	}=0A=
};=0A=
=0A=

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/SpryMenuBar.js

/* SpryMenuBar.js - Revision: Spry Preview Release 1.4 */=0A=
=0A=
// Copyright (c) 2006. Adobe Systems Incorporated.=0A=
// All rights reserved.=0A=
//=0A=
// Redistribution and use in source and binary forms, with or without=0A=
// modification, are permitted provided that the following conditions =
are met:=0A=
//=0A=
//   * Redistributions of source code must retain the above copyright =
notice,=0A=
//     this list of conditions and the following disclaimer.=0A=
//   * Redistributions in binary form must reproduce the above copyright =
notice,=0A=
//     this list of conditions and the following disclaimer in the =
documentation=0A=
//     and/or other materials provided with the distribution.=0A=
//   * Neither the name of Adobe Systems Incorporated nor the names of =
its=0A=
//     contributors may be used to endorse or promote products derived =
from this=0A=
//     software without specific prior written permission.=0A=
//=0A=
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS =
"AS IS"=0A=
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, =
THE=0A=
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR =
PURPOSE=0A=
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS =
BE=0A=
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR=0A=
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF=0A=
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR =
BUSINESS=0A=
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER =
IN=0A=
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR =
OTHERWISE)=0A=
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED =
OF THE=0A=
// POSSIBILITY OF SUCH DAMAGE.=0A=
=0A=
/************************************************************************=
*******=0A=
=0A=
 SpryMenuBar.js=0A=
 This file handles the JavaScript for Spry Menu Bar.  You should have no =
need=0A=
 to edit this file.  Some highlights of the MenuBar object is that =
timers are=0A=
 used to keep submenus from showing up until the user has hovered over =
the parent=0A=
 menu item for some time, as well as a timer for when they leave a =
submenu to keep=0A=
 showing that submenu until the timer fires.=0A=
=0A=
 =
*************************************************************************=
******/=0A=
=0A=
var Spry;=0A=
if(!Spry)=0A=
{=0A=
	Spry =3D {};=0A=
}=0A=
if(!Spry.Widget)=0A=
{=0A=
	Spry.Widget =3D {};=0A=
}=0A=
=0A=
// Constructor for Menu Bar=0A=
// element should be an ID of an unordered list (<ul> tag)=0A=
// preloadImage1 and preloadImage2 are images for the rollover state of =
a menu=0A=
Spry.Widget.MenuBar =3D function(element, opts)=0A=
{=0A=
	this.init(element, opts);=0A=
};=0A=
=0A=
Spry.Widget.MenuBar.prototype.init =3D function(element, opts)=0A=
{=0A=
	this.element =3D this.getElement(element);=0A=
=0A=
	// represents the current (sub)menu we are operating on=0A=
	this.currMenu =3D null;=0A=
=0A=
	var isie =3D (typeof document.all !=3D 'undefined' && typeof =
window.opera =3D=3D 'undefined' && navigator.vendor !=3D 'KDE');=0A=
	if(typeof document.getElementById =3D=3D 'undefined' || =
(navigator.vendor =3D=3D 'Apple Computer, Inc.' && typeof =
window.XMLHttpRequest =3D=3D 'undefined') || (isie && typeof =
document.uniqueID =3D=3D 'undefined'))=0A=
	{=0A=
		// bail on older unsupported browsers=0A=
		return;=0A=
	}=0A=
=0A=
	// load hover images now=0A=
	if(opts)=0A=
	{=0A=
		for(var k in opts)=0A=
		{=0A=
			var rollover =3D new Image;=0A=
			rollover.src =3D opts[k];=0A=
		}=0A=
	}=0A=
=0A=
	if(this.element)=0A=
	{=0A=
		this.currMenu =3D this.element;=0A=
		var items =3D this.element.getElementsByTagName('li');=0A=
		for(var i=3D0; i<items.length; i++)=0A=
		{=0A=
			this.initialize(items[i], element, isie);=0A=
			if(isie)=0A=
			{=0A=
				this.addClassName(items[i], "MenuBarItemIE");=0A=
				items[i].style.position =3D "static";=0A=
			}=0A=
		}=0A=
		if(isie)=0A=
		{=0A=
			if(this.hasClassName(this.element, "MenuBarVertical"))=0A=
			{=0A=
				this.element.style.position =3D "relative";=0A=
			}=0A=
			var linkitems =3D this.element.getElementsByTagName('a');=0A=
			for(var i=3D0; i<linkitems.length; i++)=0A=
			{=0A=
				linkitems[i].style.position =3D "relative";=0A=
			}=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
Spry.Widget.MenuBar.prototype.getElement =3D function(ele)=0A=
{=0A=
	if (ele && typeof ele =3D=3D "string")=0A=
		return document.getElementById(ele);=0A=
	return ele;=0A=
};=0A=
=0A=
Spry.Widget.MenuBar.prototype.hasClassName =3D function(ele, className)=0A=
{=0A=
	if (!ele || !className || !ele.className || ele.className.search(new =
RegExp("\\b" + className + "\\b")) =3D=3D -1)=0A=
	{=0A=
		return false;=0A=
	}=0A=
	return true;=0A=
};=0A=
=0A=
Spry.Widget.MenuBar.prototype.addClassName =3D function(ele, className)=0A=
{=0A=
	if (!ele || !className || this.hasClassName(ele, className))=0A=
		return;=0A=
	ele.className +=3D (ele.className ? " " : "") + className;=0A=
};=0A=
=0A=
Spry.Widget.MenuBar.prototype.removeClassName =3D function(ele, =
className)=0A=
{=0A=
	if (!ele || !className || !this.hasClassName(ele, className))=0A=
		return;=0A=
	ele.className =3D ele.className.replace(new RegExp("\\s*\\b" + =
className + "\\b", "g"), "");=0A=
};=0A=
=0A=
// addEventListener for Menu Bar=0A=
// attach an event to a tag without creating obtrusive HTML code=0A=
Spry.Widget.MenuBar.prototype.addEventListener =3D function(element, =
eventType, handler, capture)=0A=
{=0A=
	try=0A=
	{=0A=
		if (element.addEventListener)=0A=
		{=0A=
			element.addEventListener(eventType, handler, capture);=0A=
		}=0A=
		else if (element.attachEvent)=0A=
		{=0A=
			element.attachEvent('on' + eventType, handler);=0A=
		}=0A=
	}=0A=
	catch (e) {}=0A=
};=0A=
=0A=
// createIframeLayer for Menu Bar=0A=
// creates an IFRAME underneath a menu so that it will show above form =
controls and ActiveX=0A=
Spry.Widget.MenuBar.prototype.createIframeLayer =3D function(menu)=0A=
{=0A=
	//alert('creating iframe');=0A=
	var layer =3D document.createElement('iframe');=0A=
	layer.tabIndex =3D '-1';=0A=
	layer.src =3D '';=0A=
	menu.parentNode.appendChild(layer);=0A=
	=0A=
	layer.style.left =3D menu.offsetLeft + 'px';=0A=
	layer.style.top =3D menu.offsetTop + 'px';=0A=
	layer.style.width =3D (menu.offsetWidth) + 'px';=0A=
	layer.style.height =3D (menu.offsetHeight) + 'px';=0A=
};=0A=
=0A=
// removeIframeLayer for Menu Bar=0A=
// removes an IFRAME underneath a menu to reveal any form controls and =
ActiveX=0A=
Spry.Widget.MenuBar.prototype.removeIframeLayer =3D  function(menu)=0A=
{=0A=
	var layers =3D menu.parentNode.getElementsByTagName('iframe');=0A=
	while(layers.length > 0)=0A=
	{=0A=
		layers[0].parentNode.removeChild(layers[0]);=0A=
	}=0A=
};=0A=
=0A=
// clearMenus for Menu Bar=0A=
// root is the top level unordered list (<ul> tag)=0A=
Spry.Widget.MenuBar.prototype.clearMenus =3D function(root)=0A=
{=0A=
	var menus =3D root.getElementsByTagName('ul');=0A=
	for(var i=3D0; i<menus.length; i++)=0A=
	{=0A=
		this.hideSubmenu(menus[i]);=0A=
	}=0A=
	this.removeClassName(this.element, "MenuBarActive");=0A=
};=0A=
=0A=
// bubbledTextEvent for Menu Bar=0A=
// identify bubbled up text events in Safari so we can ignore them=0A=
Spry.Widget.MenuBar.prototype.bubbledTextEvent =3D function()=0A=
{=0A=
	return (navigator.vendor =3D=3D 'Apple Computer, Inc.' && (event.target =
=3D=3D event.relatedTarget.parentNode || (event.eventPhase =3D=3D 3 && =
event.target.parentNode =3D=3D event.relatedTarget)));=0A=
};=0A=
=0A=
// showSubmenu for Menu Bar=0A=
// set the proper CSS class on this menu to show it=0A=
Spry.Widget.MenuBar.prototype.showSubmenu =3D function(menu)=0A=
{=0A=
	if(this.currMenu)=0A=
	{=0A=
		this.clearMenus(this.currMenu);=0A=
		this.currMenu =3D null;=0A=
	}=0A=
	=0A=
	if(menu)=0A=
	{=0A=
		this.addClassName(menu, "MenuBarSubmenuVisible");=0A=
		if(typeof document.all !=3D 'undefined' && typeof window.opera =3D=3D =
'undefined' && navigator.vendor !=3D 'KDE')=0A=
		{=0A=
			if(!this.hasClassName(this.element, "MenuBarHorizontal") || =
menu.parentNode.parentNode !=3D this.element)=0A=
			{=0A=
				menu.style.top =3D menu.parentNode.offsetTop + 'px';=0A=
			}=0A=
		}=0A=
		if(typeof document.uniqueID !=3D "undefined")=0A=
		{=0A=
			this.createIframeLayer(menu);=0A=
		}=0A=
	}=0A=
	this.addClassName(this.element, "MenuBarActive");=0A=
};=0A=
=0A=
// hideSubmenu for Menu Bar=0A=
// remove the proper CSS class on this menu to hide it=0A=
Spry.Widget.MenuBar.prototype.hideSubmenu =3D function(menu)=0A=
{=0A=
	if(menu)=0A=
	{=0A=
		this.removeClassName(menu, "MenuBarSubmenuVisible");=0A=
		if(typeof document.all !=3D 'undefined' && typeof window.opera =3D=3D =
'undefined' && navigator.vendor !=3D 'KDE')=0A=
		{=0A=
			menu.style.top =3D '';=0A=
			menu.style.left =3D '';=0A=
		}=0A=
		this.removeIframeLayer(menu);=0A=
	}=0A=
};=0A=
=0A=
// initialize for Menu Bar=0A=
// create event listeners for the Menu Bar widget so we can properly=0A=
// show and hide submenus=0A=
Spry.Widget.MenuBar.prototype.initialize =3D function(listitem, element, =
isie)=0A=
{=0A=
	var opentime, closetime;=0A=
	var link =3D listitem.getElementsByTagName('a')[0];=0A=
	var submenus =3D listitem.getElementsByTagName('ul');=0A=
	var menu =3D (submenus.length > 0 ? submenus[0] : null);=0A=
=0A=
	var hasSubMenu =3D false;=0A=
	if(menu)=0A=
	{=0A=
		this.addClassName(link, "MenuBarItemSubmenu");=0A=
		hasSubMenu =3D true;=0A=
	}=0A=
=0A=
	if(!isie)=0A=
	{=0A=
		// define a simple function that comes standard in IE to determine=0A=
		// if a node is within another node=0A=
		listitem.contains =3D function(testNode)=0A=
		{=0A=
			// this refers to the list item=0A=
			if(testNode =3D=3D null)=0A=
			{=0A=
				return false;=0A=
			}=0A=
			if(testNode =3D=3D this)=0A=
			{=0A=
				return true;=0A=
			}=0A=
			else=0A=
			{=0A=
				return this.contains(testNode.parentNode);=0A=
			}=0A=
		};=0A=
	}=0A=
	=0A=
	// need to save this for scope further down=0A=
	var self =3D this;=0A=
=0A=
	this.addEventListener(listitem, 'mouseover', function(e)=0A=
	{=0A=
		if(self.bubbledTextEvent())=0A=
		{=0A=
			// ignore bubbled text events=0A=
			return;=0A=
		}=0A=
		clearTimeout(closetime);=0A=
		if(self.currMenu =3D=3D listitem)=0A=
		{=0A=
			self.currMenu =3D null;=0A=
		}=0A=
		// show menu highlighting=0A=
		self.addClassName(link, hasSubMenu ? "MenuBarItemSubmenuHover" : =
"MenuBarItemHover");=0A=
		if(menu && !self.hasClassName(menu, "MenuBarSubmenuVisible"))=0A=
		{=0A=
			opentime =3D window.setTimeout(function(){self.showSubmenu(menu);}, =
250);=0A=
		}=0A=
	}, false);=0A=
=0A=
	this.addEventListener(listitem, 'mouseout', function(e)=0A=
	{=0A=
		if(self.bubbledTextEvent())=0A=
		{=0A=
			// ignore bubbled text events=0A=
			return;=0A=
		}=0A=
=0A=
		var related =3D (typeof e.relatedTarget !=3D 'undefined' ? =
e.relatedTarget : e.toElement);=0A=
		if(!listitem.contains(related))=0A=
		{=0A=
			clearTimeout(opentime);=0A=
			self.currMenu =3D listitem;=0A=
=0A=
			// remove menu highlighting=0A=
			self.removeClassName(link, hasSubMenu ? "MenuBarItemSubmenuHover" : =
"MenuBarItemHover");=0A=
			if(menu)=0A=
			{=0A=
				closetime =3D window.setTimeout(function(){self.hideSubmenu(menu);}, =
600);=0A=
			}=0A=
		}=0A=
	}, false);=0A=
};=0A=

------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/prototype.js

/*  Prototype JavaScript framework, version 1.5.0_rc1=0A=
 *  (c) 2005 Sam Stephenson <sam@conio.net>=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_rc1',=0A=
  ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',=0A=
=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 undefined) return 'undefined';=0A=
      if (object =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; i < arguments.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=
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 (replacement(match) || '').toString();=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[0].nodeValue : '';=0A=
  },=0A=
=0A=
  toQueryParams: function() {=0A=
    var pairs =3D this.match(/^\??(.*)$/)[1].split('&');=0A=
    return pairs.inject({}, function(params, pairString) {=0A=
      var pair  =3D pairString.split('=3D');=0A=
      var value =3D pair[1] ? decodeURIComponent(pair[1]) : undefined;=0A=
      params[decodeURIComponent(pair[0])] =3D value;=0A=
      return params;=0A=
    });=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.split('');=0A=
  },=0A=
=0A=
  camelize: function() {=0A=
    var oStringList =3D this.split('-');=0A=
    if (oStringList.length =3D=3D 1) return oStringList[0];=0A=
=0A=
    var camelizedString =3D this.indexOf('-') =3D=3D 0=0A=
      ? oStringList[0].charAt(0).toUpperCase() + =
oStringList[0].substring(1)=0A=
      : oStringList[0];=0A=
=0A=
    for (var i =3D 1, len =3D oStringList.length; i < len; i++) {=0A=
      var s =3D oStringList[i];=0A=
      camelizedString +=3D s.charAt(0).toUpperCase() + s.substring(1);=0A=
    }=0A=
=0A=
    return camelizedString;=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 + (object[match[3]] || '').toString();=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=
  },=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(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=
  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.collect(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.collect(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.collect(Prototype.K);=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=
  inspect: function() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Enumerable, {=0A=
  map:     Enumerable.collect,=0A=
  find:    Enumerable.detect,=0A=
  select:  Enumerable.findAll,=0A=
  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; i < iterable.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; i < this.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 undefined || 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; i < this.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=
  inspect: function() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  }=0A=
});=0A=
var Hash =3D {=0A=
  _each: function(iterator) {=0A=
    for (var key in this) {=0A=
      var value =3D this[key];=0A=
      if (typeof value =3D=3D 'function') 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($H(this), function(mergedHash, pair) {=0A=
      mergedHash[pair.key] =3D pair.value;=0A=
      return mergedHash;=0A=
    });=0A=
  },=0A=
=0A=
  toQueryString: function() {=0A=
    return this.map(function(pair) {=0A=
      return pair.map(encodeURIComponent).join('=3D');=0A=
    }).join('&');=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Hash:{' + this.map(function(pair) {=0A=
      return pair.map(Object.inspect).join(': ');=0A=
    }).join(', ') + '}>';=0A=
  }=0A=
}=0A=
=0A=
function $H(object) {=0A=
  var hash =3D Object.extend({}, object || {});=0A=
  Object.extend(hash, Enumerable);=0A=
  Object.extend(hash, Hash);=0A=
  return hash;=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(responderToAdd) {=0A=
    if (!this.include(responderToAdd))=0A=
      this.responders.push(responderToAdd);=0A=
  },=0A=
=0A=
  unregister: function(responderToRemove) {=0A=
    this.responders =3D this.responders.without(responderToRemove);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (responder[callback] && 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=
=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=
      parameters:   ''=0A=
    }=0A=
    Object.extend(this.options, options || {});=0A=
  },=0A=
=0A=
  responseIsSuccess: function() {=0A=
    return this.transport.status =3D=3D undefined=0A=
        || this.transport.status =3D=3D 0=0A=
        || (this.transport.status >=3D 200 && this.transport.status < =
300);=0A=
  },=0A=
=0A=
  responseIsFailure: function() {=0A=
    return !this.responseIsSuccess();=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=
  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=
    var parameters =3D this.options.parameters || '';=0A=
    if (parameters.length > 0) parameters +=3D '&_=3D';=0A=
=0A=
    /* Simulate other verbs over post */=0A=
    if (this.options.method !=3D 'get' && this.options.method !=3D =
'post') {=0A=
      parameters +=3D (parameters.length > 0 ? '&' : '') + '_method=3D' =
+ this.options.method;=0A=
      this.options.method =3D 'post';=0A=
    }=0A=
=0A=
    try {=0A=
      this.url =3D url;=0A=
      if (this.options.method =3D=3D 'get' && parameters.length > 0)=0A=
        this.url +=3D (this.url.match(/\?/) ? '&' : '?') + parameters;=0A=
=0A=
      Ajax.Responders.dispatch('onCreate', this, this.transport);=0A=
=0A=
      this.transport.open(this.options.method, 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.options.postBody ? this.options.postBody : =
parameters;=0A=
      this.transport.send(this.options.method =3D=3D 'post' ? body : =
null);=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=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var requestHeaders =3D=0A=
      ['X-Requested-With', 'XMLHttpRequest',=0A=
       'X-Prototype-Version', Prototype.Version,=0A=
       'Accept', 'text/javascript, text/html, application/xml, text/xml, =
*/*'];=0A=
=0A=
    if (this.options.method =3D=3D 'post') {=0A=
      requestHeaders.push('Content-type', this.options.contentType);=0A=
=0A=
      /* Force "Connection: close" for Mozilla browsers to work around=0A=
       * a bug where XMLHttpReqeuest sends an incorrect Content-length=0A=
       * header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType)=0A=
        requestHeaders.push('Connection', 'close');=0A=
    }=0A=
=0A=
    if (this.options.requestHeaders)=0A=
      requestHeaders.push.apply(requestHeaders, =
this.options.requestHeaders);=0A=
=0A=
    for (var i =3D 0; i < requestHeaders.length; i +=3D 2)=0A=
      this.transport.setRequestHeader(requestHeaders[i], =
requestHeaders[i+1]);=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState !=3D 1)=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  header: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name);=0A=
    } catch (e) {}=0A=
  },=0A=
=0A=
  evalJSON: function() {=0A=
    try {=0A=
      return eval('(' + this.header('X-JSON') + ')');=0A=
    } catch (e) {}=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval(this.transport.responseText);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var event =3D Ajax.Request.Events[readyState];=0A=
    var transport =3D this.transport, json =3D this.evalJSON();=0A=
=0A=
    if (event =3D=3D 'Complete') {=0A=
      try {=0A=
        (this.options['on' + this.transport.status]=0A=
         || this.options['on' + (this.responseIsSuccess() ? 'Success' : =
'Failure')]=0A=
         || Prototype.emptyFunction)(transport, json);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      if ((this.header('Content-type') || =
'').match(/^text\/javascript/i))=0A=
        this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + event] || Prototype.emptyFunction)(transport, =
json);=0A=
      Ajax.Responders.dispatch('on' + event, this, transport, json);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    /* Avoid memory leak in MSIE: clean up the oncomplete event handler =
*/=0A=
    if (event =3D=3D 'Complete')=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=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.containers =3D {=0A=
      success: container.success ? $(container.success) : $(container),=0A=
      failure: container.failure ? $(container.failure) :=0A=
        (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, object) {=0A=
      this.updateContent();=0A=
      onComplete(transport, object);=0A=
    }).bind(this);=0A=
=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  updateContent: function() {=0A=
    var receiver =3D this.responseIsSuccess() ?=0A=
      this.containers.success : this.containers.failure;=0A=
    var response =3D this.transport.responseText;=0A=
=0A=
    if (!this.options.evalScripts)=0A=
      response =3D response.stripScripts();=0A=
=0A=
    if (receiver) {=0A=
      if (this.options.insertion) {=0A=
        new this.options.insertion(receiver, response);=0A=
      } else {=0A=
        Element.update(receiver, response);=0A=
      }=0A=
    }=0A=
=0A=
    if (this.responseIsSuccess()) {=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 $() {=0A=
  var results =3D [], element;=0A=
  for (var i =3D 0; i < arguments.length; i++) {=0A=
    element =3D arguments[i];=0A=
    if (typeof element =3D=3D 'string')=0A=
      element =3D document.getElementById(element);=0A=
    results.push(Element.extend(element));=0A=
  }=0A=
  return results.reduce();=0A=
}=0A=
=0A=
document.getElementsByClassName =3D function(className, parentElement) {=0A=
  var children =3D ($(parentElement) || =
document.body).getElementsByTagName('*');=0A=
  return $A(children).inject([], function(elements, child) {=0A=
    if (child.className.match(new RegExp("(^|\\s)" + className + =
"(\\s|$)")))=0A=
      elements.push(Element.extend(child));=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) return;=0A=
  if (_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=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (typeof value =3D=3D 'function')=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=
    $(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=
    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=
    element =3D $(element);=0A=
    return $A(element.getElementsByTagName('*'));=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=
    element =3D $(element);=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=
    element =3D $(element);=0A=
    return document.getElementsByClassName(className, element);=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    element =3D $(element);=0A=
    return element.offsetHeight;=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=
    return Element.classNames(element).include(className);=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=
  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=
  childOf: 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 x =3D element.x ? element.x : element.offsetLeft,=0A=
        y =3D element.y ? element.y : element.offsetTop;=0A=
    window.scrollTo(x, y);=0A=
    return element;=0A=
  },=0A=
=0A=
  getStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    var value =3D element.style[style.camelize()];=0A=
    if (!value) {=0A=
      if (document.defaultView && document.defaultView.getComputedStyle) =
{=0A=
        var css =3D document.defaultView.getComputedStyle(element, null);=0A=
        value =3D css ? css.getPropertyValue(style) : null;=0A=
      } else if (element.currentStyle) {=0A=
        value =3D element.currentStyle[style.camelize()];=0A=
      }=0A=
    }=0A=
=0A=
    if (window.opera && ['left', 'top', 'right', =
'bottom'].include(style))=0A=
      if (Element.getStyle(element, 'position') =3D=3D 'static') value =
=3D 'auto';=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=
      element.style[name.camelize()] =3D style[name];=0A=
    return element;=0A=
  },=0A=
=0A=
  getDimensions: function(element) {=0A=
    element =3D $(element);=0A=
    if (Element.getStyle(element, 'display') !=3D 'none')=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=
    els.visibility =3D 'hidden';=0A=
    els.position =3D 'absolute';=0A=
    els.display =3D '';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D 'none';=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;=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;=0A=
    element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : =
element._overflow;=0A=
    element._overflow =3D null;=0A=
    return element;=0A=
  }=0A=
}=0A=
=0A=
// IE is missing .innerHTML support for TABLE-related elements=0A=
if(document.all){=0A=
  Element.Methods.update =3D function(element, html) {=0A=
    element =3D $(element);=0A=
    var tagName =3D element.tagName.toUpperCase();=0A=
    if (['THEAD','TBODY','TR','TD'].indexOf(tagName) > -1) {=0A=
      var div =3D document.createElement('div');=0A=
      switch (tagName) {=0A=
        case 'THEAD':=0A=
        case 'TBODY':=0A=
          div.innerHTML =3D '<table><tbody>' +  html.stripScripts() + =
'</tbody></table>';=0A=
          depth =3D 2;=0A=
          break;=0A=
        case 'TR':=0A=
          div.innerHTML =3D '<table><tbody><tr>' +  html.stripScripts() =
+ '</tr></tbody></table>';=0A=
          depth =3D 3;=0A=
          break;=0A=
        case 'TD':=0A=
          div.innerHTML =3D '<table><tbody><tr><td>' +  =
html.stripScripts() + '</td></tr></tbody></table>';=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 (!window.HTMLElement && =
/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {=0A=
  /* Emulate HTMLElement, HTMLFormElement, HTMLInputElement, =
HTMLTextAreaElement,=0A=
     and HTMLSelectElement in Safari */=0A=
  ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {=0A=
    var klass =3D window['HTML' + tag + 'Element'] =3D {};=0A=
    klass.prototype =3D document.createElement(tag ? tag.toLowerCase() : =
'div').__proto__;=0A=
  });=0A=
}=0A=
=0A=
Element.addMethods =3D function(methods) {=0A=
  Object.extend(Element.Methods, methods || {});=0A=
=0A=
  function copy(methods, destination) {=0A=
    var cache =3D Element.extend.cache;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      destination[property] =3D cache.findOrStore(value);=0A=
    }=0A=
  }=0A=
=0A=
  if (typeof HTMLElement !=3D 'undefined') {=0A=
    copy(Element.Methods, HTMLElement.prototype);=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.toLowerCase();=0A=
        if (tagName =3D=3D 'tbody' || tagName =3D=3D 'tr') {=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 '<table><tbody>' + this.content + =
'</tbody></table>';=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(this.toArray().concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set(this.select(function(className) {=0A=
      return className !=3D classNameToRemove;=0A=
    }).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.toArray().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.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; i < clause.length; i++)=0A=
        conditions.push('Element.hasClassName(element, ' + =
clause[i].inspect() + ')');=0A=
    if (clause =3D params.attributes) {=0A=
      clause.each(function(attribute) {=0A=
        var value =3D 'element.getAttribute(' + 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(value + ' !=3D null'); 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=
      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; i < scope.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));=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.strip().split(/\s+/).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=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form) {=0A=
    var elements =3D Form.getElements($(form));=0A=
    var queryComponents =3D new Array();=0A=
=0A=
    for (var i =3D 0; i < elements.length; i++) {=0A=
      var queryComponent =3D Form.Element.serialize(elements[i]);=0A=
      if (queryComponent)=0A=
        queryComponents.push(queryComponent);=0A=
    }=0A=
=0A=
    return queryComponents.join('&');=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    form =3D $(form);=0A=
    var elements =3D new Array();=0A=
=0A=
    for (var tagName in Form.Element.Serializers) {=0A=
      var tagElements =3D form.getElementsByTagName(tagName);=0A=
      for (var j =3D 0; j < tagElements.length; j++)=0A=
        elements.push(tagElements[j]);=0A=
    }=0A=
    return elements;=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name)=0A=
      return inputs;=0A=
=0A=
    var matchingInputs =3D new Array();=0A=
    for (var i =3D 0; i < inputs.length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) ||=0A=
          (name && input.name !=3D name))=0A=
        continue;=0A=
      matchingInputs.push(input);=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    var elements =3D Form.getElements(form);=0A=
    for (var i =3D 0; i < elements.length; i++) {=0A=
      var element =3D elements[i];=0A=
      element.blur();=0A=
      element.disabled =3D 'true';=0A=
    }=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    var elements =3D Form.getElements(form);=0A=
    for (var i =3D 0; i < elements.length; i++) {=0A=
      var element =3D elements[i];=0A=
      element.disabled =3D '';=0A=
    }=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    return Form.getElements(form).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=
    Field.activate(Form.findFirstElement(form));=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=
    var method =3D element.tagName.toLowerCase();=0A=
    var parameter =3D Form.Element.Serializers[method](element);=0A=
=0A=
    if (parameter) {=0A=
      var key =3D encodeURIComponent(parameter[0]);=0A=
      if (key.length =3D=3D 0) return;=0A=
=0A=
      if (parameter[1].constructor !=3D Array)=0A=
        parameter[1] =3D [parameter[1]];=0A=
=0A=
      return parameter[1].map(function(value) {=0A=
        return key + '=3D' + encodeURIComponent(value);=0A=
      }).join('&');=0A=
    }=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    var parameter =3D Form.Element.Serializers[method](element);=0A=
=0A=
    if (parameter)=0A=
      return parameter[1];=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)=0A=
      element.select();=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.blur();=0A=
    element.disabled =3D 'true';=0A=
    return element;=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Form.Element, Form.Element.Methods);=0A=
var Field =3D Form.Element;=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=
    return false;=0A=
  },=0A=
=0A=
  inputSelector: function(element) {=0A=
    if (element.checked)=0A=
      return [element.name, element.value];=0A=
  },=0A=
=0A=
  textarea: function(element) {=0A=
    return [element.name, element.value];=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    return Form.Element.Serializers[element.type =3D=3D 'select-one' ?=0A=
      'selectOne' : 'selectMany'](element);=0A=
  },=0A=
=0A=
  selectOne: function(element) {=0A=
    var value =3D '', opt, index =3D element.selectedIndex;=0A=
    if (index >=3D 0) {=0A=
      opt =3D element.options[index];=0A=
      value =3D opt.value || opt.text;=0A=
    }=0A=
    return [element.name, value];=0A=
  },=0A=
=0A=
  selectMany: function(element) {=0A=
    var value =3D [];=0A=
    for (var i =3D 0; i < element.length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected)=0A=
        value.push(opt.value || opt.text);=0A=
    }=0A=
    return [element.name, value];=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var $F =3D Form.Element.getValue;=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=
    if (this.lastValue !=3D value) {=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=
    var elements =3D Form.getElements(this.element);=0A=
    for (var i =3D 0; i < elements.length; i++)=0A=
      this.registerCallback(elements[i]);=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; i < Event.observers.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=
        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_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/scriptaculous/scriptaculous.js

// script.aculo.us scriptaculous.js v1.6.4, Wed Sep 06 11:30:58 CEST 2006=0A=
=0A=
// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
// =0A=
// Permission is hereby granted, free of charge, to any person obtaining=0A=
// a copy of this software and associated documentation files (the=0A=
// "Software"), to deal in the Software without restriction, including=0A=
// without limitation the rights to use, copy, modify, merge, publish,=0A=
// distribute, sublicense, and/or sell copies of the Software, and to=0A=
// permit persons to whom the Software is furnished to do so, subject to=0A=
// the following conditions:=0A=
// =0A=
// The above copyright notice and this permission notice shall be=0A=
// included in all copies or substantial portions of the Software.=0A=
//=0A=
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,=0A=
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF=0A=
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND=0A=
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE=0A=
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION=0A=
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION=0A=
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.=0A=
=0A=
var Scriptaculous =3D {=0A=
  Version: '1.6.4',=0A=
  require: function(libraryName) {=0A=
    // inserting via DOM fails in Safari 2.0, so brute force approach=0A=
    document.write('<script type=3D"text/javascript" =
src=3D"'+libraryName+'"></script>');=0A=
  },=0A=
  load: function() {=0A=
    if((typeof Prototype=3D=3D'undefined') || =0A=
       (typeof Element =3D=3D 'undefined') || =0A=
       (typeof Element.Methods=3D=3D'undefined') ||=0A=
       parseFloat(Prototype.Version.split(".")[0] + "." +=0A=
                  Prototype.Version.split(".")[1]) < 1.5)=0A=
       throw("script.aculo.us requires the Prototype JavaScript =
framework >=3D 1.5.0");=0A=
    =0A=
    $A(document.getElementsByTagName("script")).findAll( function(s) {=0A=
      return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))=0A=
    }).each( function(s) {=0A=
      var path =3D s.src.replace(/scriptaculous\.js(\?.*)?$/,'');=0A=
      var includes =3D s.src.match(/\?.*load=3D([a-z,]*)/);=0A=
      (includes ? includes[1] : =
'builder,effects,dragdrop,controls,slider').split(',').each(=0A=
       function(include) { Scriptaculous.require(path+include+'.js') });=0A=
    });=0A=
  }=0A=
}=0A=
=0A=
Scriptaculous.load();
------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/dojo/0.4.3/dojo.js

/*
	Copyright (c) 2004-2006, The Dojo Foundation
	All Rights Reserved.

	Licensed under the Academic Free License version 2.1 or above OR the
	modified BSD license. For more information on Dojo licensing, see:

		http://dojotoolkit.org/community/licensing.shtml
*/

/*
	This is a compiled version of Dojo, built for deployment and not for
	development. To get an editable version, please visit:

		http://dojotoolkit.org

	for documentation and information on getting the source.
*/

if(typeof dojo=3D=3D"undefined"){
var dj_global=3Dthis;
var dj_currentContext=3Dthis;
function dj_undef(_1,_2){
return (typeof (_2||dj_currentContext)[_1]=3D=3D"undefined");
}
if(dj_undef("djConfig",this)){
var djConfig=3D{};
}
if(dj_undef("dojo",this)){
var dojo=3D{};
}
dojo.global=3Dfunction(){
return dj_currentContext;
};
dojo.locale=3DdjConfig.locale;
dojo.version=3D{major:0,minor:4,patch:3,flag:"",revision:Number("$Rev: =
8617 $".match(/[0-9]+/)[0]),toString:function(){
with(dojo.version){
return major+"."+minor+"."+patch+flag+" ("+revision+")";
}
}};
dojo.evalProp=3Dfunction(_3,_4,_5){
if((!_4)||(!_3)){
return undefined;
}
if(!dj_undef(_3,_4)){
return _4[_3];
}
return (_5?(_4[_3]=3D{}):undefined);
};
dojo.parseObjPath=3Dfunction(_6,_7,_8){
var _9=3D(_7||dojo.global());
var _a=3D_6.split(".");
var _b=3D_a.pop();
for(var i=3D0,l=3D_a.length;i<l&&_9;i++){
_9=3Ddojo.evalProp(_a[i],_9,_8);
}
return {obj:_9,prop:_b};
};
dojo.evalObjPath=3Dfunction(_e,_f){
if(typeof _e!=3D"string"){
return dojo.global();
}
if(_e.indexOf(".")=3D=3D-1){
return dojo.evalProp(_e,dojo.global(),_f);
}
var ref=3Ddojo.parseObjPath(_e,dojo.global(),_f);
if(ref){
return dojo.evalProp(ref.prop,ref.obj,_f);
}
return null;
};
dojo.errorToString=3Dfunction(_11){
if(!dj_undef("message",_11)){
return _11.message;
}else{
if(!dj_undef("description",_11)){
return _11.description;
}else{
return _11;
}
}
};
dojo.raise=3Dfunction(_12,_13){
if(_13){
_12=3D_12+": "+dojo.errorToString(_13);
}else{
_12=3Ddojo.errorToString(_12);
}
try{
if(djConfig.isDebug){
dojo.hostenv.println("FATAL exception raised: "+_12);
}
}
catch(e){
}
throw _13||Error(_12);
};
dojo.debug=3Dfunction(){
};
dojo.debugShallow=3Dfunction(obj){
};
dojo.profile=3D{start:function(){
},end:function(){
},stop:function(){
},dump:function(){
}};
function dj_eval(_15){
return dj_global.eval?dj_global.eval(_15):eval(_15);
}
dojo.unimplemented=3Dfunction(_16,_17){
var _18=3D"'"+_16+"' not implemented";
if(_17!=3Dnull){
_18+=3D" "+_17;
}
dojo.raise(_18);
};
dojo.deprecated=3Dfunction(_19,_1a,_1b){
var _1c=3D"DEPRECATED: "+_19;
if(_1a){
_1c+=3D" "+_1a;
}
if(_1b){
_1c+=3D" -- will be removed in version: "+_1b;
}
dojo.debug(_1c);
};
dojo.render=3D(function(){
function vscaffold(_1d,_1e){
var =
tmp=3D{capable:false,support:{builtin:false,plugin:false},prefixes:_1d};
for(var i=3D0;i<_1e.length;i++){
tmp[_1e[i]]=3Dfalse;
}
return tmp;
}
return =
{name:"",ver:dojo.version,os:{win:false,linux:false,osx:false},html:vscaf=
fold(["html"],["ie","opera","khtml","safari","moz"]),svg:vscaffold(["svg"=
],["corel","adobe","batik"]),vml:vscaffold(["vml"],["ie"]),swf:vscaffold(=
["Swf","Flash","Mm"],["mm"]),swt:vscaffold(["Swt"],["ibm"])};
})();
dojo.hostenv=3D(function(){
var =
_21=3D{isDebug:false,allowQueryConfig:false,baseScriptUri:"",baseRelative=
Path:"",libraryScriptUri:"",iePreventClobber:false,ieClobberMinimal:true,=
preventBackButtonFix:true,delayMozLoadingFix:false,searchIds:[],parseWidg=
ets:true};
if(typeof djConfig=3D=3D"undefined"){
djConfig=3D_21;
}else{
for(var _22 in _21){
if(typeof djConfig[_22]=3D=3D"undefined"){
djConfig[_22]=3D_21[_22];
}
}
}
return {name_:"(unset)",version_:"(unset)",getName:function(){
return this.name_;
},getVersion:function(){
return this.version_;
},getText:function(uri){
dojo.unimplemented("getText","uri=3D"+uri);
}};
})();
dojo.hostenv.getBaseScriptUri=3Dfunction(){
if(djConfig.baseScriptUri.length){
return djConfig.baseScriptUri;
}
var uri=3Dnew =
String(djConfig.libraryScriptUri||djConfig.baseRelativePath);
if(!uri){
dojo.raise("Nothing returned by getLibraryScriptUri(): "+uri);
}
var _25=3Duri.lastIndexOf("/");
djConfig.baseScriptUri=3DdjConfig.baseRelativePath;
return djConfig.baseScriptUri;
};
(function(){
var =
_26=3D{pkgFileName:"__package__",loading_modules_:{},loaded_modules_:{},a=
ddedToLoadingCount:[],removedFromLoadingCount:[],inFlightCount:0,modulePr=
efixes_:{dojo:{name:"dojo",value:"src"}},setModulePrefix:function(_27,_28=
){
this.modulePrefixes_[_27]=3D{name:_27,value:_28};
},moduleHasPrefix:function(_29){
var mp=3Dthis.modulePrefixes_;
return Boolean(mp[_29]&&mp[_29].value);
},getModulePrefix:function(_2b){
if(this.moduleHasPrefix(_2b)){
return this.modulePrefixes_[_2b].value;
}
return _2b;
},getTextStack:[],loadUriStack:[],loadedUris:[],post_load_:false,modulesL=
oadedListeners:[],unloadListeners:[],loadNotifying:false};
for(var _2c in _26){
dojo.hostenv[_2c]=3D_26[_2c];
}
})();
dojo.hostenv.loadPath=3Dfunction(_2d,_2e,cb){
var uri;
if(_2d.charAt(0)=3D=3D"/"||_2d.match(/^\w+:/)){
uri=3D_2d;
}else{
uri=3Dthis.getBaseScriptUri()+_2d;
}
if(djConfig.cacheBust&&dojo.render.html.capable){
uri+=3D"?"+String(djConfig.cacheBust).replace(/\W+/g,"");
}
try{
return !_2e?this.loadUri(uri,cb):this.loadUriAndCheck(uri,_2e,cb);
}
catch(e){
dojo.debug(e);
return false;
}
};
dojo.hostenv.loadUri=3Dfunction(uri,cb){
if(this.loadedUris[uri]){
return true;
}
var _33=3Dthis.getText(uri,null,true);
if(!_33){
return false;
}
this.loadedUris[uri]=3Dtrue;
if(cb){
_33=3D"("+_33+")";
}
var _34=3Ddj_eval(_33);
if(cb){
cb(_34);
}
return true;
};
dojo.hostenv.loadUriAndCheck=3Dfunction(uri,_36,cb){
var ok=3Dtrue;
try{
ok=3Dthis.loadUri(uri,cb);
}
catch(e){
dojo.debug("failed loading ",uri," with error: ",e);
}
return Boolean(ok&&this.findModule(_36,false));
};
dojo.loaded=3Dfunction(){
};
dojo.unloaded=3Dfunction(){
};
dojo.hostenv.loaded=3Dfunction(){
this.loadNotifying=3Dtrue;
this.post_load_=3Dtrue;
var mll=3Dthis.modulesLoadedListeners;
for(var x=3D0;x<mll.length;x++){
mll[x]();
}
this.modulesLoadedListeners=3D[];
this.loadNotifying=3Dfalse;
dojo.loaded();
};
dojo.hostenv.unloaded=3Dfunction(){
var mll=3Dthis.unloadListeners;
while(mll.length){
(mll.pop())();
}
dojo.unloaded();
};
dojo.addOnLoad=3Dfunction(obj,_3d){
var dh=3Ddojo.hostenv;
if(arguments.length=3D=3D1){
dh.modulesLoadedListeners.push(obj);
}else{
if(arguments.length>1){
dh.modulesLoadedListeners.push(function(){
obj[_3d]();
});
}
}
if(dh.post_load_&&dh.inFlightCount=3D=3D0&&!dh.loadNotifying){
dh.callLoaded();
}
};
dojo.addOnUnload=3Dfunction(obj,_40){
var dh=3Ddojo.hostenv;
if(arguments.length=3D=3D1){
dh.unloadListeners.push(obj);
}else{
if(arguments.length>1){
dh.unloadListeners.push(function(){
obj[_40]();
});
}
}
};
dojo.hostenv.modulesLoaded=3Dfunction(){
if(this.post_load_){
return;
}
if(this.loadUriStack.length=3D=3D0&&this.getTextStack.length=3D=3D0){
if(this.inFlightCount>0){
dojo.debug("files still in flight!");
return;
}
dojo.hostenv.callLoaded();
}
};
dojo.hostenv.callLoaded=3Dfunction(){
if(typeof =
setTimeout=3D=3D"object"||(djConfig["useXDomain"]&&dojo.render.html.opera=
)){
setTimeout("dojo.hostenv.loaded();",0);
}else{
dojo.hostenv.loaded();
}
};
dojo.hostenv.getModuleSymbols=3Dfunction(_42){
var _43=3D_42.split(".");
for(var i=3D_43.length;i>0;i--){
var _45=3D_43.slice(0,i).join(".");
if((i=3D=3D1)&&!this.moduleHasPrefix(_45)){
_43[0]=3D"../"+_43[0];
}else{
var _46=3Dthis.getModulePrefix(_45);
if(_46!=3D_45){
_43.splice(0,i,_46);
break;
}
}
}
return _43;
};
dojo.hostenv._global_omit_module_check=3Dfalse;
dojo.hostenv.loadModule=3Dfunction(_47,_48,_49){
if(!_47){
return;
}
_49=3Dthis._global_omit_module_check||_49;
var _4a=3Dthis.findModule(_47,false);
if(_4a){
return _4a;
}
if(dj_undef(_47,this.loading_modules_)){
this.addedToLoadingCount.push(_47);
}
this.loading_modules_[_47]=3D1;
var _4b=3D_47.replace(/\./g,"/")+".js";
var _4c=3D_47.split(".");
var _4d=3Dthis.getModuleSymbols(_47);
var _4e=3D((_4d[0].charAt(0)!=3D"/")&&!_4d[0].match(/^\w+:/));
var _4f=3D_4d[_4d.length-1];
var ok;
if(_4f=3D=3D"*"){
_47=3D_4c.slice(0,-1).join(".");
while(_4d.length){
_4d.pop();
_4d.push(this.pkgFileName);
_4b=3D_4d.join("/")+".js";
if(_4e&&_4b.charAt(0)=3D=3D"/"){
_4b=3D_4b.slice(1);
}
ok=3Dthis.loadPath(_4b,!_49?_47:null);
if(ok){
break;
}
_4d.pop();
}
}else{
_4b=3D_4d.join("/")+".js";
_47=3D_4c.join(".");
var _51=3D!_49?_47:null;
ok=3Dthis.loadPath(_4b,_51);
if(!ok&&!_48){
_4d.pop();
while(_4d.length){
_4b=3D_4d.join("/")+".js";
ok=3Dthis.loadPath(_4b,_51);
if(ok){
break;
}
_4d.pop();
_4b=3D_4d.join("/")+"/"+this.pkgFileName+".js";
if(_4e&&_4b.charAt(0)=3D=3D"/"){
_4b=3D_4b.slice(1);
}
ok=3Dthis.loadPath(_4b,_51);
if(ok){
break;
}
}
}
if(!ok&&!_49){
dojo.raise("Could not load '"+_47+"'; last tried '"+_4b+"'");
}
}
if(!_49&&!this["isXDomain"]){
_4a=3Dthis.findModule(_47,false);
if(!_4a){
dojo.raise("symbol '"+_47+"' is not defined after loading '"+_4b+"'");
}
}
return _4a;
};
dojo.hostenv.startPackage=3Dfunction(_52){
var _53=3DString(_52);
var _54=3D_53;
var _55=3D_52.split(/\./);
if(_55[_55.length-1]=3D=3D"*"){
_55.pop();
_54=3D_55.join(".");
}
var _56=3Ddojo.evalObjPath(_54,true);
this.loaded_modules_[_53]=3D_56;
this.loaded_modules_[_54]=3D_56;
return _56;
};
dojo.hostenv.findModule=3Dfunction(_57,_58){
var lmn=3DString(_57);
if(this.loaded_modules_[lmn]){
return this.loaded_modules_[lmn];
}
if(_58){
dojo.raise("no loaded module named '"+_57+"'");
}
return null;
};
dojo.kwCompoundRequire=3Dfunction(_5a){
var _5b=3D_5a["common"]||[];
var =
_5c=3D_5a[dojo.hostenv.name_]?_5b.concat(_5a[dojo.hostenv.name_]||[]):_5b=
.concat(_5a["default"]||[]);
for(var x=3D0;x<_5c.length;x++){
var _5e=3D_5c[x];
if(_5e.constructor=3D=3DArray){
dojo.hostenv.loadModule.apply(dojo.hostenv,_5e);
}else{
dojo.hostenv.loadModule(_5e);
}
}
};
dojo.require=3Dfunction(_5f){
dojo.hostenv.loadModule.apply(dojo.hostenv,arguments);
};
dojo.requireIf=3Dfunction(_60,_61){
var _62=3Darguments[0];
if((_62=3D=3D=3Dtrue)||(_62=3D=3D"common")||(_62&&dojo.render[_62].capabl=
e)){
var _63=3D[];
for(var i=3D1;i<arguments.length;i++){
_63.push(arguments[i]);
}
dojo.require.apply(dojo,_63);
}
};
dojo.requireAfterIf=3Ddojo.requireIf;
dojo.provide=3Dfunction(_65){
return dojo.hostenv.startPackage.apply(dojo.hostenv,arguments);
};
dojo.registerModulePath=3Dfunction(_66,_67){
return dojo.hostenv.setModulePrefix(_66,_67);
};
if(djConfig["modulePaths"]){
for(var param in djConfig["modulePaths"]){
dojo.registerModulePath(param,djConfig["modulePaths"][param]);
}
}
dojo.setModulePrefix=3Dfunction(_68,_69){
dojo.deprecated("dojo.setModulePrefix(\""+_68+"\", =
\""+_69+"\")","replaced by dojo.registerModulePath","0.5");
return dojo.registerModulePath(_68,_69);
};
dojo.exists=3Dfunction(obj,_6b){
var p=3D_6b.split(".");
for(var i=3D0;i<p.length;i++){
if(!obj[p[i]]){
return false;
}
obj=3Dobj[p[i]];
}
return true;
};
dojo.hostenv.normalizeLocale=3Dfunction(_6e){
var _6f=3D_6e?_6e.toLowerCase():dojo.locale;
if(_6f=3D=3D"root"){
_6f=3D"ROOT";
}
return _6f;
};
dojo.hostenv.searchLocalePath=3Dfunction(_70,_71,_72){
_70=3Ddojo.hostenv.normalizeLocale(_70);
var _73=3D_70.split("-");
var _74=3D[];
for(var i=3D_73.length;i>0;i--){
_74.push(_73.slice(0,i).join("-"));
}
_74.push(false);
if(_71){
_74.reverse();
}
for(var j=3D_74.length-1;j>=3D0;j--){
var loc=3D_74[j]||"ROOT";
var _78=3D_72(loc);
if(_78){
break;
}
}
};
dojo.hostenv.localesGenerated;
dojo.hostenv.registerNlsPrefix=3Dfunction(){
dojo.registerModulePath("nls","nls");
};
dojo.hostenv.preloadLocalizations=3Dfunction(){
if(dojo.hostenv.localesGenerated){
dojo.hostenv.registerNlsPrefix();
function preload(_79){
_79=3Ddojo.hostenv.normalizeLocale(_79);
dojo.hostenv.searchLocalePath(_79,true,function(loc){
for(var i=3D0;i<dojo.hostenv.localesGenerated.length;i++){
if(dojo.hostenv.localesGenerated[i]=3D=3Dloc){
dojo["require"]("nls.dojo_"+loc);
return true;
}
}
return false;
});
}
preload();
var _7c=3DdjConfig.extraLocale||[];
for(var i=3D0;i<_7c.length;i++){
preload(_7c[i]);
}
}
dojo.hostenv.preloadLocalizations=3Dfunction(){
};
};
dojo.requireLocalization=3Dfunction(_7e,_7f,_80,_81){
dojo.hostenv.preloadLocalizations();
var _82=3Ddojo.hostenv.normalizeLocale(_80);
var _83=3D[_7e,"nls",_7f].join(".");
var _84=3D"";
if(_81){
var _85=3D_81.split(",");
for(var i=3D0;i<_85.length;i++){
if(_82.indexOf(_85[i])=3D=3D0){
if(_85[i].length>_84.length){
_84=3D_85[i];
}
}
}
if(!_84){
_84=3D"ROOT";
}
}
var _87=3D_81?_84:_82;
var _88=3Ddojo.hostenv.findModule(_83);
var _89=3Dnull;
if(_88){
if(djConfig.localizationComplete&&_88._built){
return;
}
var _8a=3D_87.replace("-","_");
var _8b=3D_83+"."+_8a;
_89=3Ddojo.hostenv.findModule(_8b);
}
if(!_89){
_88=3Ddojo.hostenv.startPackage(_83);
var _8c=3Ddojo.hostenv.getModuleSymbols(_7e);
var _8d=3D_8c.concat("nls").join("/");
var _8e;
dojo.hostenv.searchLocalePath(_87,_81,function(loc){
var _90=3Dloc.replace("-","_");
var _91=3D_83+"."+_90;
var _92=3Dfalse;
if(!dojo.hostenv.findModule(_91)){
dojo.hostenv.startPackage(_91);
var _93=3D[_8d];
if(loc!=3D"ROOT"){
_93.push(loc);
}
_93.push(_7f);
var _94=3D_93.join("/")+".js";
_92=3Ddojo.hostenv.loadPath(_94,null,function(_95){
var _96=3Dfunction(){
};
_96.prototype=3D_8e;
_88[_90]=3Dnew _96();
for(var j in _95){
_88[_90][j]=3D_95[j];
}
});
}else{
_92=3Dtrue;
}
if(_92&&_88[_90]){
_8e=3D_88[_90];
}else{
_88[_90]=3D_8e;
}
if(_81){
return true;
}
});
}
if(_81&&_82!=3D_84){
_88[_82.replace("-","_")]=3D_88[_84.replace("-","_")];
}
};
(function(){
var _98=3DdjConfig.extraLocale;
if(_98){
if(!_98 instanceof Array){
_98=3D[_98];
}
var req=3Ddojo.requireLocalization;
dojo.requireLocalization=3Dfunction(m,b,_9c,_9d){
req(m,b,_9c,_9d);
if(_9c){
return;
}
for(var i=3D0;i<_98.length;i++){
req(m,b,_98[i],_9d);
}
};
}
})();
}
if(typeof window!=3D"undefined"){
(function(){
if(djConfig.allowQueryConfig){
var _9f=3Ddocument.location.toString();
var _a0=3D_9f.split("?",2);
if(_a0.length>1){
var _a1=3D_a0[1];
var _a2=3D_a1.split("&");
for(var x in _a2){
var sp=3D_a2[x].split("=3D");
if((sp[0].length>9)&&(sp[0].substr(0,9)=3D=3D"djConfig.")){
var opt=3Dsp[0].substr(9);
try{
djConfig[opt]=3Deval(sp[1]);
}
catch(e){
djConfig[opt]=3Dsp[1];
}
}
}
}
}
if(((djConfig["baseScriptUri"]=3D=3D"")||(djConfig["baseRelativePath"]=3D=
=3D""))&&(document&&document.getElementsByTagName)){
var _a6=3Ddocument.getElementsByTagName("script");
var _a7=3D/(__package__|dojo|bootstrap1)\.js([\?\.]|$)/i;
for(var i=3D0;i<_a6.length;i++){
var src=3D_a6[i].getAttribute("src");
if(!src){
continue;
}
var m=3Dsrc.match(_a7);
if(m){
var _ab=3Dsrc.substring(0,m.index);
if(src.indexOf("bootstrap1")>-1){
_ab+=3D"../";
}
if(!this["djConfig"]){
djConfig=3D{};
}
if(djConfig["baseScriptUri"]=3D=3D""){
djConfig["baseScriptUri"]=3D_ab;
}
if(djConfig["baseRelativePath"]=3D=3D""){
djConfig["baseRelativePath"]=3D_ab;
}
break;
}
}
}
var dr=3Ddojo.render;
var drh=3Ddojo.render.html;
var drs=3Ddojo.render.svg;
var dua=3D(drh.UA=3Dnavigator.userAgent);
var dav=3D(drh.AV=3Dnavigator.appVersion);
var t=3Dtrue;
var f=3Dfalse;
drh.capable=3Dt;
drh.support.builtin=3Dt;
dr.ver=3DparseFloat(drh.AV);
dr.os.mac=3Ddav.indexOf("Macintosh")>=3D0;
dr.os.win=3Ddav.indexOf("Windows")>=3D0;
dr.os.linux=3Ddav.indexOf("X11")>=3D0;
drh.opera=3Ddua.indexOf("Opera")>=3D0;
drh.khtml=3D(dav.indexOf("Konqueror")>=3D0)||(dav.indexOf("Safari")>=3D0)=
;
drh.safari=3Ddav.indexOf("Safari")>=3D0;
var _b3=3Ddua.indexOf("Gecko");
drh.mozilla=3Ddrh.moz=3D(_b3>=3D0)&&(!drh.khtml);
if(drh.mozilla){
drh.geckoVersion=3Ddua.substring(_b3+6,_b3+14);
}
drh.ie=3D(document.all)&&(!drh.opera);
drh.ie50=3Ddrh.ie&&dav.indexOf("MSIE 5.0")>=3D0;
drh.ie55=3Ddrh.ie&&dav.indexOf("MSIE 5.5")>=3D0;
drh.ie60=3Ddrh.ie&&dav.indexOf("MSIE 6.0")>=3D0;
drh.ie70=3Ddrh.ie&&dav.indexOf("MSIE 7.0")>=3D0;
var cm=3Ddocument["compatMode"];
drh.quirks=3D(cm=3D=3D"BackCompat")||(cm=3D=3D"QuirksMode")||drh.ie55||dr=
h.ie50;
dojo.locale=3Ddojo.locale||(drh.ie?navigator.userLanguage:navigator.langu=
age).toLowerCase();
dr.vml.capable=3Ddrh.ie;
drs.capable=3Df;
drs.support.plugin=3Df;
drs.support.builtin=3Df;
var _b5=3Dwindow["document"];
var tdi=3D_b5["implementation"];
if((tdi)&&(tdi["hasFeature"])&&(tdi.hasFeature("org.w3c.dom.svg","1.0")))=
{
drs.capable=3Dt;
drs.support.builtin=3Dt;
drs.support.plugin=3Df;
}
if(drh.safari){
var tmp=3Ddua.split("AppleWebKit/")[1];
var ver=3DparseFloat(tmp.split(" ")[0]);
if(ver>=3D420){
drs.capable=3Dt;
drs.support.builtin=3Dt;
drs.support.plugin=3Df;
}
}else{
}
})();
dojo.hostenv.startPackage("dojo.hostenv");
dojo.render.name=3Ddojo.hostenv.name_=3D"browser";
dojo.hostenv.searchIds=3D[];
dojo.hostenv._XMLHTTP_PROGIDS=3D["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Ms=
xml2.XMLHTTP.4.0"];
dojo.hostenv.getXmlhttpObject=3Dfunction(){
var _b9=3Dnull;
var _ba=3Dnull;
try{
_b9=3Dnew XMLHttpRequest();
}
catch(e){
}
if(!_b9){
for(var i=3D0;i<3;++i){
var _bc=3Ddojo.hostenv._XMLHTTP_PROGIDS[i];
try{
_b9=3Dnew ActiveXObject(_bc);
}
catch(e){
_ba=3De;
}
if(_b9){
dojo.hostenv._XMLHTTP_PROGIDS=3D[_bc];
break;
}
}
}
if(!_b9){
return dojo.raise("XMLHTTP not available",_ba);
}
return _b9;
};
dojo.hostenv._blockAsync=3Dfalse;
dojo.hostenv.getText=3Dfunction(uri,_be,_bf){
if(!_be){
this._blockAsync=3Dtrue;
}
var _c0=3Dthis.getXmlhttpObject();
function isDocumentOk(_c1){
var _c2=3D_c1["status"];
return Boolean((!_c2)||((200<=3D_c2)&&(300>_c2))||(_c2=3D=3D304));
}
if(_be){
var _c3=3Dthis,_c4=3Dnull,gbl=3Ddojo.global();
var xhr=3Ddojo.evalObjPath("dojo.io.XMLHTTPTransport");
_c0.onreadystatechange=3Dfunction(){
if(_c4){
gbl.clearTimeout(_c4);
_c4=3Dnull;
}
if(_c3._blockAsync||(xhr&&xhr._blockAsync)){
_c4=3Dgbl.setTimeout(function(){
_c0.onreadystatechange.apply(this);
},10);
}else{
if(4=3D=3D_c0.readyState){
if(isDocumentOk(_c0)){
_be(_c0.responseText);
}
}
}
};
}
_c0.open("GET",uri,_be?true:false);
try{
_c0.send(null);
if(_be){
return null;
}
if(!isDocumentOk(_c0)){
var err=3DError("Unable to load "+uri+" status:"+_c0.status);
err.status=3D_c0.status;
err.responseText=3D_c0.responseText;
throw err;
}
}
catch(e){
this._blockAsync=3Dfalse;
if((_bf)&&(!_be)){
return null;
}else{
throw e;
}
}
this._blockAsync=3Dfalse;
return _c0.responseText;
};
dojo.hostenv.defaultDebugContainerId=3D"dojoDebug";
dojo.hostenv._println_buffer=3D[];
dojo.hostenv._println_safe=3Dfalse;
dojo.hostenv.println=3Dfunction(_c8){
if(!dojo.hostenv._println_safe){
dojo.hostenv._println_buffer.push(_c8);
}else{
try{
var =
_c9=3Ddocument.getElementById(djConfig.debugContainerId?djConfig.debugCon=
tainerId:dojo.hostenv.defaultDebugContainerId);
if(!_c9){
_c9=3Ddojo.body();
}
var div=3Ddocument.createElement("div");
div.appendChild(document.createTextNode(_c8));
_c9.appendChild(div);
}
catch(e){
try{
document.write("<div>"+_c8+"</div>");
}
catch(e2){
window.status=3D_c8;
}
}
}
};
dojo.addOnLoad(function(){
dojo.hostenv._println_safe=3Dtrue;
while(dojo.hostenv._println_buffer.length>0){
dojo.hostenv.println(dojo.hostenv._println_buffer.shift());
}
});
function dj_addNodeEvtHdlr(_cb,_cc,fp){
var _ce=3D_cb["on"+_cc]||function(){
};
_cb["on"+_cc]=3Dfunction(){
fp.apply(_cb,arguments);
_ce.apply(_cb,arguments);
};
return true;
}
dojo.hostenv._djInitFired=3Dfalse;
function dj_load_init(e){
dojo.hostenv._djInitFired=3Dtrue;
var _d0=3D(e&&e.type)?e.type.toLowerCase():"load";
if(arguments.callee.initialized||(_d0!=3D"domcontentloaded"&&_d0!=3D"load=
")){
return;
}
arguments.callee.initialized=3Dtrue;
if(typeof (_timer)!=3D"undefined"){
clearInterval(_timer);
delete _timer;
}
var _d1=3Dfunction(){
if(dojo.render.html.ie){
dojo.hostenv.makeWidgets();
}
};
if(dojo.hostenv.inFlightCount=3D=3D0){
_d1();
dojo.hostenv.modulesLoaded();
}else{
dojo.hostenv.modulesLoadedListeners.unshift(_d1);
}
}
if(document.addEventListener){
if(dojo.render.html.opera||(dojo.render.html.moz&&(djConfig["enableMozDom=
ContentLoaded"]=3D=3D=3Dtrue))){
document.addEventListener("DOMContentLoaded",dj_load_init,null);
}
window.addEventListener("load",dj_load_init,null);
}
if(dojo.render.html.ie&&dojo.render.os.win){
document.attachEvent("onreadystatechange",function(e){
if(document.readyState=3D=3D"complete"){
dj_load_init();
}
});
}
if(/(WebKit|khtml)/i.test(navigator.userAgent)){
var _timer=3DsetInterval(function(){
if(/loaded|complete/.test(document.readyState)){
dj_load_init();
}
},10);
}
if(dojo.render.html.ie){
dj_addNodeEvtHdlr(window,"beforeunload",function(){
dojo.hostenv._unloading=3Dtrue;
window.setTimeout(function(){
dojo.hostenv._unloading=3Dfalse;
},0);
});
}
dj_addNodeEvtHdlr(window,"unload",function(){
dojo.hostenv.unloaded();
if((!dojo.render.html.ie)||(dojo.render.html.ie&&dojo.hostenv._unloading)=
){
dojo.hostenv.unloaded();
}
});
dojo.hostenv.makeWidgets=3Dfunction(){
var _d3=3D[];
if(djConfig.searchIds&&djConfig.searchIds.length>0){
_d3=3D_d3.concat(djConfig.searchIds);
}
if(dojo.hostenv.searchIds&&dojo.hostenv.searchIds.length>0){
_d3=3D_d3.concat(dojo.hostenv.searchIds);
}
if((djConfig.parseWidgets)||(_d3.length>0)){
if(dojo.evalObjPath("dojo.widget.Parse")){
var _d4=3Dnew dojo.xml.Parse();
if(_d3.length>0){
for(var x=3D0;x<_d3.length;x++){
var _d6=3Ddocument.getElementById(_d3[x]);
if(!_d6){
continue;
}
var _d7=3D_d4.parseElement(_d6,null,true);
dojo.widget.getParser().createComponents(_d7);
}
}else{
if(djConfig.parseWidgets){
var _d7=3D_d4.parseElement(dojo.body(),null,true);
dojo.widget.getParser().createComponents(_d7);
}
}
}
}
};
dojo.addOnLoad(function(){
if(!dojo.render.html.ie){
dojo.hostenv.makeWidgets();
}
});
try{
if(dojo.render.html.ie){
document.namespaces.add("v","urn:schemas-microsoft-com:vml");
document.createStyleSheet().addRule("v\\:*","behavior:url(#default#VML)")=
;
}
}
catch(e){
}
dojo.hostenv.writeIncludes=3Dfunction(){
};
if(!dj_undef("document",this)){
dj_currentDocument=3Dthis.document;
}
dojo.doc=3Dfunction(){
return dj_currentDocument;
};
dojo.body=3Dfunction(){
return dojo.doc().body||dojo.doc().getElementsByTagName("body")[0];
};
dojo.byId=3Dfunction(id,doc){
if((id)&&((typeof id=3D=3D"string")||(id instanceof String))){
if(!doc){
doc=3Ddj_currentDocument;
}
var ele=3Ddoc.getElementById(id);
if(ele&&(ele.id!=3Did)&&doc.all){
ele=3Dnull;
eles=3Ddoc.all[id];
if(eles){
if(eles.length){
for(var i=3D0;i<eles.length;i++){
if(eles[i].id=3D=3Did){
ele=3Deles[i];
break;
}
}
}else{
ele=3Deles;
}
}
}
return ele;
}
return id;
};
dojo.setContext=3Dfunction(_dc,_dd){
dj_currentContext=3D_dc;
dj_currentDocument=3D_dd;
};
dojo._fireCallback=3Dfunction(_de,_df,_e0){
if((_df)&&((typeof _de=3D=3D"string")||(_de instanceof String))){
_de=3D_df[_de];
}
return (_df?_de.apply(_df,_e0||[]):_de());
};
dojo.withGlobal=3Dfunction(_e1,_e2,_e3,_e4){
var _e5;
var _e6=3Ddj_currentContext;
var _e7=3Ddj_currentDocument;
try{
dojo.setContext(_e1,_e1.document);
_e5=3Ddojo._fireCallback(_e2,_e3,_e4);
}
finally{
dojo.setContext(_e6,_e7);
}
return _e5;
};
dojo.withDoc=3Dfunction(_e8,_e9,_ea,_eb){
var _ec;
var _ed=3Ddj_currentDocument;
try{
dj_currentDocument=3D_e8;
_ec=3Ddojo._fireCallback(_e9,_ea,_eb);
}
finally{
dj_currentDocument=3D_ed;
}
return _ec;
};
}
dojo.requireIf((djConfig["isDebug"]||djConfig["debugAtAllCosts"]),"dojo.d=
ebug");
dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&!djConfig["us=
eXDomain"],"dojo.browser_debug");
dojo.requireIf(djConfig["debugAtAllCosts"]&&!window.widget&&djConfig["use=
XDomain"],"dojo.browser_debug_xd");
dojo.provide("dojo.string.common");
dojo.string.trim=3Dfunction(str,wh){
if(!str.replace){
return str;
}
if(!str.length){
return str;
}
var re=3D(wh>0)?(/^\s+/):(wh<0)?(/\s+$/):(/^\s+|\s+$/g);
return str.replace(re,"");
};
dojo.string.trimStart=3Dfunction(str){
return dojo.string.trim(str,1);
};
dojo.string.trimEnd=3Dfunction(str){
return dojo.string.trim(str,-1);
};
dojo.string.repeat=3Dfunction(str,_f4,_f5){
var out=3D"";
for(var i=3D0;i<_f4;i++){
out+=3Dstr;
if(_f5&&i<_f4-1){
out+=3D_f5;
}
}
return out;
};
dojo.string.pad=3Dfunction(str,len,c,dir){
var out=3DString(str);
if(!c){
c=3D"0";
}
if(!dir){
dir=3D1;
}
while(out.length<len){
if(dir>0){
out=3Dc+out;
}else{
out+=3Dc;
}
}
return out;
};
dojo.string.padLeft=3Dfunction(str,len,c){
return dojo.string.pad(str,len,c,1);
};
dojo.string.padRight=3Dfunction(str,len,c){
return dojo.string.pad(str,len,c,-1);
};
dojo.provide("dojo.string");
dojo.provide("dojo.lang.common");
dojo.lang.inherits=3Dfunction(_103,_104){
if(!dojo.lang.isFunction(_104)){
dojo.raise("dojo.inherits: superclass argument ["+_104+"] must be a =
function (subclass: ["+_103+"']");
}
_103.prototype=3Dnew _104();
_103.prototype.constructor=3D_103;
_103.superclass=3D_104.prototype;
_103["super"]=3D_104.prototype;
};
dojo.lang._mixin=3Dfunction(obj,_106){
var tobj=3D{};
for(var x in _106){
if((typeof tobj[x]=3D=3D"undefined")||(tobj[x]!=3D_106[x])){
obj[x]=3D_106[x];
}
}
if(dojo.render.html.ie&&(typeof =
(_106["toString"])=3D=3D"function")&&(_106["toString"]!=3Dobj["toString"]=
)&&(_106["toString"]!=3Dtobj["toString"])){
obj.toString=3D_106.toString;
}
return obj;
};
dojo.lang.mixin=3Dfunction(obj,_10a){
for(var i=3D1,l=3Darguments.length;i<l;i++){
dojo.lang._mixin(obj,arguments[i]);
}
return obj;
};
dojo.lang.extend=3Dfunction(_10d,_10e){
for(var i=3D1,l=3Darguments.length;i<l;i++){
dojo.lang._mixin(_10d.prototype,arguments[i]);
}
return _10d;
};
dojo.inherits=3Ddojo.lang.inherits;
dojo.mixin=3Ddojo.lang.mixin;
dojo.extend=3Ddojo.lang.extend;
dojo.lang.find=3Dfunction(_111,_112,_113,_114){
if(!dojo.lang.isArrayLike(_111)&&dojo.lang.isArrayLike(_112)){
dojo.deprecated("dojo.lang.find(value, array)","use =
dojo.lang.find(array, value) instead","0.5");
var temp=3D_111;
_111=3D_112;
_112=3Dtemp;
}
var _116=3Ddojo.lang.isString(_111);
if(_116){
_111=3D_111.split("");
}
if(_114){
var step=3D-1;
var i=3D_111.length-1;
var end=3D-1;
}else{
var step=3D1;
var i=3D0;
var end=3D_111.length;
}
if(_113){
while(i!=3Dend){
if(_111[i]=3D=3D=3D_112){
return i;
}
i+=3Dstep;
}
}else{
while(i!=3Dend){
if(_111[i]=3D=3D_112){
return i;
}
i+=3Dstep;
}
}
return -1;
};
dojo.lang.indexOf=3Ddojo.lang.find;
dojo.lang.findLast=3Dfunction(_11a,_11b,_11c){
return dojo.lang.find(_11a,_11b,_11c,true);
};
dojo.lang.lastIndexOf=3Ddojo.lang.findLast;
dojo.lang.inArray=3Dfunction(_11d,_11e){
return dojo.lang.find(_11d,_11e)>-1;
};
dojo.lang.isObject=3Dfunction(it){
if(typeof it=3D=3D"undefined"){
return false;
}
return (typeof =
it=3D=3D"object"||it=3D=3D=3Dnull||dojo.lang.isArray(it)||dojo.lang.isFun=
ction(it));
};
dojo.lang.isArray=3Dfunction(it){
return (it&&it instanceof Array||typeof it=3D=3D"array");
};
dojo.lang.isArrayLike=3Dfunction(it){
if((!it)||(dojo.lang.isUndefined(it))){
return false;
}
if(dojo.lang.isString(it)){
return false;
}
if(dojo.lang.isFunction(it)){
return false;
}
if(dojo.lang.isArray(it)){
return true;
}
if((it.tagName)&&(it.tagName.toLowerCase()=3D=3D"form")){
return false;
}
if(dojo.lang.isNumber(it.length)&&isFinite(it.length)){
return true;
}
return false;
};
dojo.lang.isFunction=3Dfunction(it){
return (it instanceof Function||typeof it=3D=3D"function");
};
(function(){
if((dojo.render.html.capable)&&(dojo.render.html["safari"])){
dojo.lang.isFunction=3Dfunction(it){
if((typeof (it)=3D=3D"function")&&(it=3D=3D"[object NodeList]")){
return false;
}
return (it instanceof Function||typeof it=3D=3D"function");
};
}
})();
dojo.lang.isString=3Dfunction(it){
return (typeof it=3D=3D"string"||it instanceof String);
};
dojo.lang.isAlien=3Dfunction(it){
if(!it){
return false;
}
return !dojo.lang.isFunction(it)&&/\{\s*\[native =
code\]\s*\}/.test(String(it));
};
dojo.lang.isBoolean=3Dfunction(it){
return (it instanceof Boolean||typeof it=3D=3D"boolean");
};
dojo.lang.isNumber=3Dfunction(it){
return (it instanceof Number||typeof it=3D=3D"number");
};
dojo.lang.isUndefined=3Dfunction(it){
return ((typeof (it)=3D=3D"undefined")&&(it=3D=3Dundefined));
};
dojo.provide("dojo.lang.extras");
dojo.lang.setTimeout=3Dfunction(func,_12a){
var _12b=3Dwindow,_12c=3D2;
if(!dojo.lang.isFunction(func)){
_12b=3Dfunc;
func=3D_12a;
_12a=3Darguments[2];
_12c++;
}
if(dojo.lang.isString(func)){
func=3D_12b[func];
}
var args=3D[];
for(var i=3D_12c;i<arguments.length;i++){
args.push(arguments[i]);
}
return dojo.global().setTimeout(function(){
func.apply(_12b,args);
},_12a);
};
dojo.lang.clearTimeout=3Dfunction(_12f){
dojo.global().clearTimeout(_12f);
};
dojo.lang.getNameInObj=3Dfunction(ns,item){
if(!ns){
ns=3Ddj_global;
}
for(var x in ns){
if(ns[x]=3D=3D=3Ditem){
return new String(x);
}
}
return null;
};
dojo.lang.shallowCopy=3Dfunction(obj,deep){
var i,ret;
if(obj=3D=3D=3Dnull){
return null;
}
if(dojo.lang.isObject(obj)){
ret=3Dnew obj.constructor();
for(i in obj){
if(dojo.lang.isUndefined(ret[i])){
ret[i]=3Ddeep?dojo.lang.shallowCopy(obj[i],deep):obj[i];
}
}
}else{
if(dojo.lang.isArray(obj)){
ret=3D[];
for(i=3D0;i<obj.length;i++){
ret[i]=3Ddeep?dojo.lang.shallowCopy(obj[i],deep):obj[i];
}
}else{
ret=3Dobj;
}
}
return ret;
};
dojo.lang.firstValued=3Dfunction(){
for(var i=3D0;i<arguments.length;i++){
if(typeof arguments[i]!=3D"undefined"){
return arguments[i];
}
}
return undefined;
};
dojo.lang.getObjPathValue=3Dfunction(_138,_139,_13a){
with(dojo.parseObjPath(_138,_139,_13a)){
return dojo.evalProp(prop,obj,_13a);
}
};
dojo.lang.setObjPathValue=3Dfunction(_13b,_13c,_13d,_13e){
dojo.deprecated("dojo.lang.setObjPathValue","use dojo.parseObjPath and =
the '=3D' operator","0.6");
if(arguments.length<4){
_13e=3Dtrue;
}
with(dojo.parseObjPath(_13b,_13d,_13e)){
if(obj&&(_13e||(prop in obj))){
obj[prop]=3D_13c;
}
}
};
dojo.provide("dojo.io.common");
dojo.io.transports=3D[];
dojo.io.hdlrFuncNames=3D["load","error","timeout"];
dojo.io.Request=3Dfunction(url,_140,_141,_142){
if((arguments.length=3D=3D1)&&(arguments[0].constructor=3D=3DObject)){
this.fromKwArgs(arguments[0]);
}else{
this.url=3Durl;
if(_140){
this.mimetype=3D_140;
}
if(_141){
this.transport=3D_141;
}
if(arguments.length>=3D4){
this.changeUrl=3D_142;
}
}
};
dojo.lang.extend(dojo.io.Request,{url:"",mimetype:"text/plain",method:"GE=
T",content:undefined,transport:undefined,changeUrl:undefined,formNode:und=
efined,sync:false,bindSuccess:false,useCache:false,preventCache:false,jso=
nFilter:function(_143){
if((this.mimetype=3D=3D"text/json-comment-filtered")||(this.mimetype=3D=3D=
"application/json-comment-filtered")){
var _144=3D_143.indexOf("/*");
var _145=3D_143.lastIndexOf("*/");
if((_144=3D=3D-1)||(_145=3D=3D-1)){
dojo.debug("your JSON wasn't comment filtered!");
return "";
}
return _143.substring(_144+2,_145);
}
dojo.debug("please consider using a mimetype of =
text/json-comment-filtered to avoid potential security issues with JSON =
endpoints");
return _143;
},load:function(type,data,_148,_149){
},error:function(type,_14b,_14c,_14d){
},timeout:function(type,_14f,_150,_151){
},handle:function(type,data,_154,_155){
},timeoutSeconds:0,abort:function(){
},fromKwArgs:function(_156){
if(_156["url"]){
_156.url=3D_156.url.toString();
}
if(_156["formNode"]){
_156.formNode=3Ddojo.byId(_156.formNode);
}
if(!_156["method"]&&_156["formNode"]&&_156["formNode"].method){
_156.method=3D_156["formNode"].method;
}
if(!_156["handle"]&&_156["handler"]){
_156.handle=3D_156.handler;
}
if(!_156["load"]&&_156["loaded"]){
_156.load=3D_156.loaded;
}
if(!_156["changeUrl"]&&_156["changeURL"]){
_156.changeUrl=3D_156.changeURL;
}
_156.encoding=3Ddojo.lang.firstValued(_156["encoding"],djConfig["bindEnco=
ding"],"");
_156.sendTransport=3Ddojo.lang.firstValued(_156["sendTransport"],djConfig=
["ioSendTransport"],false);
var _157=3Ddojo.lang.isFunction;
for(var x=3D0;x<dojo.io.hdlrFuncNames.length;x++){
var fn=3Ddojo.io.hdlrFuncNames[x];
if(_156[fn]&&_157(_156[fn])){
continue;
}
if(_156["handle"]&&_157(_156["handle"])){
_156[fn]=3D_156.handle;
}
}
dojo.lang.mixin(this,_156);
}});
dojo.io.Error=3Dfunction(msg,type,num){
this.message=3Dmsg;
this.type=3Dtype||"unknown";
this.number=3Dnum||0;
};
dojo.io.transports.addTransport=3Dfunction(name){
this.push(name);
this[name]=3Ddojo.io[name];
};
dojo.io.bind=3Dfunction(_15e){
if(!(_15e instanceof dojo.io.Request)){
try{
_15e=3Dnew dojo.io.Request(_15e);
}
catch(e){
dojo.debug(e);
}
}
var _15f=3D"";
if(_15e["transport"]){
_15f=3D_15e["transport"];
if(!this[_15f]){
dojo.io.sendBindError(_15e,"No dojo.io.bind() transport with name =
'"+_15e["transport"]+"'.");
return _15e;
}
if(!this[_15f].canHandle(_15e)){
dojo.io.sendBindError(_15e,"dojo.io.bind() transport with name =
'"+_15e["transport"]+"' cannot handle this type of request.");
return _15e;
}
}else{
for(var x=3D0;x<dojo.io.transports.length;x++){
var tmp=3Ddojo.io.transports[x];
if((this[tmp])&&(this[tmp].canHandle(_15e))){
_15f=3Dtmp;
break;
}
}
if(_15f=3D=3D""){
dojo.io.sendBindError(_15e,"None of the loaded transports for =
dojo.io.bind()"+" can handle the request.");
return _15e;
}
}
this[_15f].bind(_15e);
_15e.bindSuccess=3Dtrue;
return _15e;
};
dojo.io.sendBindError=3Dfunction(_162,_163){
if((typeof _162.error=3D=3D"function"||typeof =
_162.handle=3D=3D"function")&&(typeof setTimeout=3D=3D"function"||typeof =
setTimeout=3D=3D"object")){
var _164=3Dnew dojo.io.Error(_163);
setTimeout(function(){
_162[(typeof =
_162.error=3D=3D"function")?"error":"handle"]("error",_164,null,_162);
},50);
}else{
dojo.raise(_163);
}
};
dojo.io.queueBind=3Dfunction(_165){
if(!(_165 instanceof dojo.io.Request)){
try{
_165=3Dnew dojo.io.Request(_165);
}
catch(e){
dojo.debug(e);
}
}
var _166=3D_165.load;
_165.load=3Dfunction(){
dojo.io._queueBindInFlight=3Dfalse;
var ret=3D_166.apply(this,arguments);
dojo.io._dispatchNextQueueBind();
return ret;
};
var _168=3D_165.error;
_165.error=3Dfunction(){
dojo.io._queueBindInFlight=3Dfalse;
var ret=3D_168.apply(this,arguments);
dojo.io._dispatchNextQueueBind();
return ret;
};
dojo.io._bindQueue.push(_165);
dojo.io._dispatchNextQueueBind();
return _165;
};
dojo.io._dispatchNextQueueBind=3Dfunction(){
if(!dojo.io._queueBindInFlight){
dojo.io._queueBindInFlight=3Dtrue;
if(dojo.io._bindQueue.length>0){
dojo.io.bind(dojo.io._bindQueue.shift());
}else{
dojo.io._queueBindInFlight=3Dfalse;
}
}
};
dojo.io._bindQueue=3D[];
dojo.io._queueBindInFlight=3Dfalse;
dojo.io.argsFromMap=3Dfunction(map,_16b,last){
var =
enc=3D/utf/i.test(_16b||"")?encodeURIComponent:dojo.string.encodeAscii;
var _16e=3D[];
var _16f=3Dnew Object();
for(var name in map){
var _171=3Dfunction(elt){
var val=3Denc(name)+"=3D"+enc(elt);
_16e[(last=3D=3Dname)?"push":"unshift"](val);
};
if(!_16f[name]){
var _174=3Dmap[name];
if(dojo.lang.isArray(_174)){
dojo.lang.forEach(_174,_171);
}else{
_171(_174);
}
}
}
return _16e.join("&");
};
dojo.io.setIFrameSrc=3Dfunction(_175,src,_177){
try{
var r=3Ddojo.render.html;
if(!_177){
if(r.safari){
_175.location=3Dsrc;
}else{
frames[_175.name].location=3Dsrc;
}
}else{
var idoc;
if(r.ie){
idoc=3D_175.contentWindow.document;
}else{
if(r.safari){
idoc=3D_175.document;
}else{
idoc=3D_175.contentWindow;
}
}
if(!idoc){
_175.location=3Dsrc;
return;
}else{
idoc.location.replace(src);
}
}
}
catch(e){
dojo.debug(e);
dojo.debug("setIFrameSrc: "+e);
}
};
dojo.provide("dojo.lang.array");
dojo.lang.mixin(dojo.lang,{has:function(obj,name){
try{
return typeof obj[name]!=3D"undefined";
}
catch(e){
return false;
}
},isEmpty:function(obj){
if(dojo.lang.isObject(obj)){
var tmp=3D{};
var _17e=3D0;
for(var x in obj){
if(obj[x]&&(!tmp[x])){
_17e++;
break;
}
}
return _17e=3D=3D0;
}else{
if(dojo.lang.isArrayLike(obj)||dojo.lang.isString(obj)){
return obj.length=3D=3D0;
}
}
},map:function(arr,obj,_182){
var _183=3Ddojo.lang.isString(arr);
if(_183){
arr=3Darr.split("");
}
if(dojo.lang.isFunction(obj)&&(!_182)){
_182=3Dobj;
obj=3Ddj_global;
}else{
if(dojo.lang.isFunction(obj)&&_182){
var _184=3Dobj;
obj=3D_182;
_182=3D_184;
}
}
if(Array.map){
var _185=3DArray.map(arr,_182,obj);
}else{
var _185=3D[];
for(var i=3D0;i<arr.length;++i){
_185.push(_182.call(obj,arr[i]));
}
}
if(_183){
return _185.join("");
}else{
return _185;
}
},reduce:function(arr,_188,obj,_18a){
var _18b=3D_188;
if(arguments.length=3D=3D2){
_18a=3D_188;
_18b=3Darr[0];
arr=3Darr.slice(1);
}else{
if(arguments.length=3D=3D3){
if(dojo.lang.isFunction(obj)){
_18a=3Dobj;
obj=3Dnull;
}
}else{
if(dojo.lang.isFunction(obj)){
var tmp=3D_18a;
_18a=3Dobj;
obj=3Dtmp;
}
}
}
var ob=3Dobj||dj_global;
dojo.lang.map(arr,function(val){
_18b=3D_18a.call(ob,_18b,val);
});
return _18b;
},forEach:function(_18f,_190,_191){
if(dojo.lang.isString(_18f)){
_18f=3D_18f.split("");
}
if(Array.forEach){
Array.forEach(_18f,_190,_191);
}else{
if(!_191){
_191=3Ddj_global;
}
for(var i=3D0,l=3D_18f.length;i<l;i++){
_190.call(_191,_18f[i],i,_18f);
}
}
},_everyOrSome:function(_194,arr,_196,_197){
if(dojo.lang.isString(arr)){
arr=3Darr.split("");
}
if(Array.every){
return Array[_194?"every":"some"](arr,_196,_197);
}else{
if(!_197){
_197=3Ddj_global;
}
for(var i=3D0,l=3Darr.length;i<l;i++){
var _19a=3D_196.call(_197,arr[i],i,arr);
if(_194&&!_19a){
return false;
}else{
if((!_194)&&(_19a)){
return true;
}
}
}
return Boolean(_194);
}
},every:function(arr,_19c,_19d){
return this._everyOrSome(true,arr,_19c,_19d);
},some:function(arr,_19f,_1a0){
return this._everyOrSome(false,arr,_19f,_1a0);
},filter:function(arr,_1a2,_1a3){
var _1a4=3Ddojo.lang.isString(arr);
if(_1a4){
arr=3Darr.split("");
}
var _1a5;
if(Array.filter){
_1a5=3DArray.filter(arr,_1a2,_1a3);
}else{
if(!_1a3){
if(arguments.length>=3D3){
dojo.raise("thisObject doesn't exist!");
}
_1a3=3Ddj_global;
}
_1a5=3D[];
for(var i=3D0;i<arr.length;i++){
if(_1a2.call(_1a3,arr[i],i,arr)){
_1a5.push(arr[i]);
}
}
}
if(_1a4){
return _1a5.join("");
}else{
return _1a5;
}
},unnest:function(){
var out=3D[];
for(var i=3D0;i<arguments.length;i++){
if(dojo.lang.isArrayLike(arguments[i])){
var add=3Ddojo.lang.unnest.apply(this,arguments[i]);
out=3Dout.concat(add);
}else{
out.push(arguments[i]);
}
}
return out;
},toArray:function(_1aa,_1ab){
var _1ac=3D[];
for(var i=3D_1ab||0;i<_1aa.length;i++){
_1ac.push(_1aa[i]);
}
return _1ac;
}});
dojo.provide("dojo.lang.func");
dojo.lang.hitch=3Dfunction(_1ae,_1af){
var args=3D[];
for(var x=3D2;x<arguments.length;x++){
args.push(arguments[x]);
}
var fcn=3D(dojo.lang.isString(_1af)?_1ae[_1af]:_1af)||function(){
};
return function(){
var ta=3Dargs.concat([]);
for(var x=3D0;x<arguments.length;x++){
ta.push(arguments[x]);
}
return fcn.apply(_1ae,ta);
};
};
dojo.lang.anonCtr=3D0;
dojo.lang.anon=3D{};
dojo.lang.nameAnonFunc=3Dfunction(_1b5,_1b6,_1b7){
var nso=3D(_1b6||dojo.lang.anon);
if((_1b7)||((dj_global["djConfig"])&&(djConfig["slowAnonFuncLookups"]=3D=3D=
true))){
for(var x in nso){
try{
if(nso[x]=3D=3D=3D_1b5){
return x;
}
}
catch(e){
}
}
}
var ret=3D"__"+dojo.lang.anonCtr++;
while(typeof nso[ret]!=3D"undefined"){
ret=3D"__"+dojo.lang.anonCtr++;
}
nso[ret]=3D_1b5;
return ret;
};
dojo.lang.forward=3Dfunction(_1bb){
return function(){
return this[_1bb].apply(this,arguments);
};
};
dojo.lang.curry=3Dfunction(_1bc,func){
var _1be=3D[];
_1bc=3D_1bc||dj_global;
if(dojo.lang.isString(func)){
func=3D_1bc[func];
}
for(var x=3D2;x<arguments.length;x++){
_1be.push(arguments[x]);
}
var _1c0=3D(func["__preJoinArity"]||func.length)-_1be.length;
function gather(_1c1,_1c2,_1c3){
var _1c4=3D_1c3;
var _1c5=3D_1c2.slice(0);
for(var x=3D0;x<_1c1.length;x++){
_1c5.push(_1c1[x]);
}
_1c3=3D_1c3-_1c1.length;
if(_1c3<=3D0){
var res=3Dfunc.apply(_1bc,_1c5);
_1c3=3D_1c4;
return res;
}else{
return function(){
return gather(arguments,_1c5,_1c3);
};
}
}
return gather([],_1be,_1c0);
};
dojo.lang.curryArguments=3Dfunction(_1c8,func,args,_1cb){
var _1cc=3D[];
var x=3D_1cb||0;
for(x=3D_1cb;x<args.length;x++){
_1cc.push(args[x]);
}
return dojo.lang.curry.apply(dojo.lang,[_1c8,func].concat(_1cc));
};
dojo.lang.tryThese=3Dfunction(){
for(var x=3D0;x<arguments.length;x++){
try{
if(typeof arguments[x]=3D=3D"function"){
var ret=3D(arguments[x]());
if(ret){
return ret;
}
}
}
catch(e){
dojo.debug(e);
}
}
};
dojo.lang.delayThese=3Dfunction(farr,cb,_1d2,_1d3){
if(!farr.length){
if(typeof _1d3=3D=3D"function"){
_1d3();
}
return;
}
if((typeof _1d2=3D=3D"undefined")&&(typeof cb=3D=3D"number")){
_1d2=3Dcb;
cb=3Dfunction(){
};
}else{
if(!cb){
cb=3Dfunction(){
};
if(!_1d2){
_1d2=3D0;
}
}
}
setTimeout(function(){
(farr.shift())();
cb();
dojo.lang.delayThese(farr,cb,_1d2,_1d3);
},_1d2);
};
dojo.provide("dojo.string.extras");
dojo.string.substituteParams=3Dfunction(_1d4,hash){
var map=3D(typeof =
hash=3D=3D"object")?hash:dojo.lang.toArray(arguments,1);
return _1d4.replace(/\%\{(\w+)\}/g,function(_1d7,key){
if(typeof (map[key])!=3D"undefined"&&map[key]!=3Dnull){
return map[key];
}
dojo.raise("Substitution not found: "+key);
});
};
dojo.string.capitalize=3Dfunction(str){
if(!dojo.lang.isString(str)){
return "";
}
if(arguments.length=3D=3D0){
str=3Dthis;
}
var _1da=3Dstr.split(" ");
for(var i=3D0;i<_1da.length;i++){
_1da[i]=3D_1da[i].charAt(0).toUpperCase()+_1da[i].substring(1);
}
return _1da.join(" ");
};
dojo.string.isBlank=3Dfunction(str){
if(!dojo.lang.isString(str)){
return true;
}
return (dojo.string.trim(str).length=3D=3D0);
};
dojo.string.encodeAscii=3Dfunction(str){
if(!dojo.lang.isString(str)){
return str;
}
var ret=3D"";
var _1df=3Descape(str);
var _1e0,re=3D/%u([0-9A-F]{4})/i;
while((_1e0=3D_1df.match(re))){
var num=3DNumber("0x"+_1e0[1]);
var _1e3=3Descape("&#"+num+";");
ret+=3D_1df.substring(0,_1e0.index)+_1e3;
_1df=3D_1df.substring(_1e0.index+_1e0[0].length);
}
ret+=3D_1df.replace(/\+/g,"%2B");
return ret;
};
dojo.string.escape=3Dfunction(type,str){
var args=3Ddojo.lang.toArray(arguments,1);
switch(type.toLowerCase()){
case "xml":
case "html":
case "xhtml":
return dojo.string.escapeXml.apply(this,args);
case "sql":
return dojo.string.escapeSql.apply(this,args);
case "regexp":
case "regex":
return dojo.string.escapeRegExp.apply(this,args);
case "javascript":
case "jscript":
case "js":
return dojo.string.escapeJavaScript.apply(this,args);
case "ascii":
return dojo.string.encodeAscii.apply(this,args);
default:
return str;
}
};
dojo.string.escapeXml=3Dfunction(str,_1e8){
str=3Dstr.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt=
;").replace(/"/gm,"&quot;");
if(!_1e8){
str=3Dstr.replace(/'/gm,"&#39;");
}
return str;
};
dojo.string.escapeSql=3Dfunction(str){
return str.replace(/'/gm,"''");
};
dojo.string.escapeRegExp=3Dfunction(str){
return =
str.replace(/\\/gm,"\\\\").replace(/([\f\b\n\t\r[\^$|?*+(){}])/gm,"\\$1")=
;
};
dojo.string.escapeJavaScript=3Dfunction(str){
return str.replace(/(["'\f\b\n\t\r])/gm,"\\$1");
};
dojo.string.escapeString=3Dfunction(str){
return =
("\""+str.replace(/(["\\])/g,"\\$1")+"\"").replace(/[\f]/g,"\\f").replace=
(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\=
r]/g,"\\r");
};
dojo.string.summary=3Dfunction(str,len){
if(!len||str.length<=3Dlen){
return str;
}
return str.substring(0,len).replace(/\.+$/,"")+"...";
};
dojo.string.endsWith=3Dfunction(str,end,_1f1){
if(_1f1){
str=3Dstr.toLowerCase();
end=3Dend.toLowerCase();
}
if((str.length-end.length)<0){
return false;
}
return str.lastIndexOf(end)=3D=3Dstr.length-end.length;
};
dojo.string.endsWithAny=3Dfunction(str){
for(var i=3D1;i<arguments.length;i++){
if(dojo.string.endsWith(str,arguments[i])){
return true;
}
}
return false;
};
dojo.string.startsWith=3Dfunction(str,_1f5,_1f6){
if(_1f6){
str=3Dstr.toLowerCase();
_1f5=3D_1f5.toLowerCase();
}
return str.indexOf(_1f5)=3D=3D0;
};
dojo.string.startsWithAny=3Dfunction(str){
for(var i=3D1;i<arguments.length;i++){
if(dojo.string.startsWith(str,arguments[i])){
return true;
}
}
return false;
};
dojo.string.has=3Dfunction(str){
for(var i=3D1;i<arguments.length;i++){
if(str.indexOf(arguments[i])>-1){
return true;
}
}
return false;
};
dojo.string.normalizeNewlines=3Dfunction(text,_1fc){
if(_1fc=3D=3D"\n"){
text=3Dtext.replace(/\r\n/g,"\n");
text=3Dtext.replace(/\r/g,"\n");
}else{
if(_1fc=3D=3D"\r"){
text=3Dtext.replace(/\r\n/g,"\r");
text=3Dtext.replace(/\n/g,"\r");
}else{
text=3Dtext.replace(/([^\r])\n/g,"$1\r\n").replace(/\r([^\n])/g,"\r\n$1")=
;
}
}
return text;
};
dojo.string.splitEscaped=3Dfunction(str,_1fe){
var _1ff=3D[];
for(var i=3D0,_201=3D0;i<str.length;i++){
if(str.charAt(i)=3D=3D"\\"){
i++;
continue;
}
if(str.charAt(i)=3D=3D_1fe){
_1ff.push(str.substring(_201,i));
_201=3Di+1;
}
}
_1ff.push(str.substr(_201));
return _1ff;
};
dojo.provide("dojo.dom");
dojo.dom.ELEMENT_NODE=3D1;
dojo.dom.ATTRIBUTE_NODE=3D2;
dojo.dom.TEXT_NODE=3D3;
dojo.dom.CDATA_SECTION_NODE=3D4;
dojo.dom.ENTITY_REFERENCE_NODE=3D5;
dojo.dom.ENTITY_NODE=3D6;
dojo.dom.PROCESSING_INSTRUCTION_NODE=3D7;
dojo.dom.COMMENT_NODE=3D8;
dojo.dom.DOCUMENT_NODE=3D9;
dojo.dom.DOCUMENT_TYPE_NODE=3D10;
dojo.dom.DOCUMENT_FRAGMENT_NODE=3D11;
dojo.dom.NOTATION_NODE=3D12;
dojo.dom.dojoml=3D"http://www.dojotoolkit.org/2004/dojoml";
dojo.dom.xmlns=3D{svg:"http://www.w3.org/2000/svg",smil:"http://www.w3.or=
g/2001/SMIL20/",mml:"http://www.w3.org/1998/Math/MathML",cml:"http://www.=
xml-cml.org",xlink:"http://www.w3.org/1999/xlink",xhtml:"http://www.w3.or=
g/1999/xhtml",xul:"http://www.mozilla.org/keymaster/gatekeeper/there.is.o=
nly.xul",xbl:"http://www.mozilla.org/xbl",fo:"http://www.w3.org/1999/XSL/=
Format",xsl:"http://www.w3.org/1999/XSL/Transform",xslt:"http://www.w3.or=
g/1999/XSL/Transform",xi:"http://www.w3.org/2001/XInclude",xforms:"http:/=
/www.w3.org/2002/01/xforms",saxon:"http://icl.com/saxon",xalan:"http://xm=
l.apache.org/xslt",xsd:"http://www.w3.org/2001/XMLSchema",dt:"http://www.=
w3.org/2001/XMLSchema-datatypes",xsi:"http://www.w3.org/2001/XMLSchema-in=
stance",rdf:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",rdfs:"http://ww=
w.w3.org/2000/01/rdf-schema#",dc:"http://purl.org/dc/elements/1.1/",dcq:"=
http://purl.org/dc/qualifiers/1.0","soap-env":"http://schemas.xmlsoap.org=
/soap/envelope/",wsdl:"http://schemas.xmlsoap.org/wsdl/",AdobeExtensions:=
"http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"};
dojo.dom.isNode=3Dfunction(wh){
if(typeof Element=3D=3D"function"){
try{
return wh instanceof Element;
}
catch(e){
}
}else{
return wh&&!isNaN(wh.nodeType);
}
};
dojo.dom.getUniqueId=3Dfunction(){
var _203=3Ddojo.doc();
do{
var id=3D"dj_unique_"+(++arguments.callee._idIncrement);
}while(_203.getElementById(id));
return id;
};
dojo.dom.getUniqueId._idIncrement=3D0;
dojo.dom.firstElement=3Ddojo.dom.getFirstChildElement=3Dfunction(_205,_20=
6){
var node=3D_205.firstChild;
while(node&&node.nodeType!=3Ddojo.dom.ELEMENT_NODE){
node=3Dnode.nextSibling;
}
if(_206&&node&&node.tagName&&node.tagName.toLowerCase()!=3D_206.toLowerCa=
se()){
node=3Ddojo.dom.nextElement(node,_206);
}
return node;
};
dojo.dom.lastElement=3Ddojo.dom.getLastChildElement=3Dfunction(_208,_209)=
{
var node=3D_208.lastChild;
while(node&&node.nodeType!=3Ddojo.dom.ELEMENT_NODE){
node=3Dnode.previousSibling;
}
if(_209&&node&&node.tagName&&node.tagName.toLowerCase()!=3D_209.toLowerCa=
se()){
node=3Ddojo.dom.prevElement(node,_209);
}
return node;
};
dojo.dom.nextElement=3Ddojo.dom.getNextSiblingElement=3Dfunction(node,_20=
c){
if(!node){
return null;
}
do{
node=3Dnode.nextSibling;
}while(node&&node.nodeType!=3Ddojo.dom.ELEMENT_NODE);
if(node&&_20c&&_20c.toLowerCase()!=3Dnode.tagName.toLowerCase()){
return dojo.dom.nextElement(node,_20c);
}
return node;
};
dojo.dom.prevElement=3Ddojo.dom.getPreviousSiblingElement=3Dfunction(node=
,_20e){
if(!node){
return null;
}
if(_20e){
_20e=3D_20e.toLowerCase();
}
do{
node=3Dnode.previousSibling;
}while(node&&node.nodeType!=3Ddojo.dom.ELEMENT_NODE);
if(node&&_20e&&_20e.toLowerCase()!=3Dnode.tagName.toLowerCase()){
return dojo.dom.prevElement(node,_20e);
}
return node;
};
dojo.dom.moveChildren=3Dfunction(_20f,_210,trim){
var _212=3D0;
if(trim){
while(_20f.hasChildNodes()&&_20f.firstChild.nodeType=3D=3Ddojo.dom.TEXT_N=
ODE){
_20f.removeChild(_20f.firstChild);
}
while(_20f.hasChildNodes()&&_20f.lastChild.nodeType=3D=3Ddojo.dom.TEXT_NO=
DE){
_20f.removeChild(_20f.lastChild);
}
}
while(_20f.hasChildNodes()){
_210.appendChild(_20f.firstChild);
_212++;
}
return _212;
};
dojo.dom.copyChildren=3Dfunction(_213,_214,trim){
var _216=3D_213.cloneNode(true);
return this.moveChildren(_216,_214,trim);
};
dojo.dom.replaceChildren=3Dfunction(node,_218){
var _219=3D[];
if(dojo.render.html.ie){
for(var i=3D0;i<node.childNodes.length;i++){
_219.push(node.childNodes[i]);
}
}
dojo.dom.removeChildren(node);
node.appendChild(_218);
for(var i=3D0;i<_219.length;i++){
dojo.dom.destroyNode(_219[i]);
}
};
dojo.dom.removeChildren=3Dfunction(node){
var _21c=3Dnode.childNodes.length;
while(node.hasChildNodes()){
dojo.dom.removeNode(node.firstChild);
}
return _21c;
};
dojo.dom.replaceNode=3Dfunction(node,_21e){
return node.parentNode.replaceChild(_21e,node);
};
dojo.dom.destroyNode=3Dfunction(node){
if(node.parentNode){
node=3Ddojo.dom.removeNode(node);
}
if(node.nodeType!=3D3){
if(dojo.evalObjPath("dojo.event.browser.clean",false)){
dojo.event.browser.clean(node);
}
if(dojo.render.html.ie){
node.outerHTML=3D"";
}
}
};
dojo.dom.removeNode=3Dfunction(node){
if(node&&node.parentNode){
return node.parentNode.removeChild(node);
}
};
dojo.dom.getAncestors=3Dfunction(node,_222,_223){
var _224=3D[];
var _225=3D(_222&&(_222 instanceof Function||typeof =
_222=3D=3D"function"));
while(node){
if(!_225||_222(node)){
_224.push(node);
}
if(_223&&_224.length>0){
return _224[0];
}
node=3Dnode.parentNode;
}
if(_223){
return null;
}
return _224;
};
dojo.dom.getAncestorsByTag=3Dfunction(node,tag,_228){
tag=3Dtag.toLowerCase();
return dojo.dom.getAncestors(node,function(el){
return ((el.tagName)&&(el.tagName.toLowerCase()=3D=3Dtag));
},_228);
};
dojo.dom.getFirstAncestorByTag=3Dfunction(node,tag){
return dojo.dom.getAncestorsByTag(node,tag,true);
};
dojo.dom.isDescendantOf=3Dfunction(node,_22d,_22e){
if(_22e&&node){
node=3Dnode.parentNode;
}
while(node){
if(node=3D=3D_22d){
return true;
}
node=3Dnode.parentNode;
}
return false;
};
dojo.dom.innerXML=3Dfunction(node){
if(node.innerXML){
return node.innerXML;
}else{
if(node.xml){
return node.xml;
}else{
if(typeof XMLSerializer!=3D"undefined"){
return (new XMLSerializer()).serializeToString(node);
}
}
}
};
dojo.dom.createDocument=3Dfunction(){
var doc=3Dnull;
var _231=3Ddojo.doc();
if(!dj_undef("ActiveXObject")){
var _232=3D["MSXML2","Microsoft","MSXML","MSXML3"];
for(var i=3D0;i<_232.length;i++){
try{
doc=3Dnew ActiveXObject(_232[i]+".XMLDOM");
}
catch(e){
}
if(doc){
break;
}
}
}else{
if((_231.implementation)&&(_231.implementation.createDocument)){
doc=3D_231.implementation.createDocument("","",null);
}
}
return doc;
};
dojo.dom.createDocumentFromText=3Dfunction(str,_235){
if(!_235){
_235=3D"text/xml";
}
if(!dj_undef("DOMParser")){
var _236=3Dnew DOMParser();
return _236.parseFromString(str,_235);
}else{
if(!dj_undef("ActiveXObject")){
var _237=3Ddojo.dom.createDocument();
if(_237){
_237.async=3Dfalse;
_237.loadXML(str);
return _237;
}else{
dojo.debug("toXml didn't work?");
}
}else{
var _238=3Ddojo.doc();
if(_238.createElement){
var tmp=3D_238.createElement("xml");
tmp.innerHTML=3Dstr;
if(_238.implementation&&_238.implementation.createDocument){
var _23a=3D_238.implementation.createDocument("foo","",null);
for(var i=3D0;i<tmp.childNodes.length;i++){
_23a.importNode(tmp.childNodes.item(i),true);
}
return _23a;
}
return =
((tmp.document)&&(tmp.document.firstChild?tmp.document.firstChild:tmp));
}
}
}
return null;
};
dojo.dom.prependChild=3Dfunction(node,_23d){
if(_23d.firstChild){
_23d.insertBefore(node,_23d.firstChild);
}else{
_23d.appendChild(node);
}
return true;
};
dojo.dom.insertBefore=3Dfunction(node,ref,_240){
if((_240!=3Dtrue)&&(node=3D=3D=3Dref||node.nextSibling=3D=3D=3Dref)){
return false;
}
var _241=3Dref.parentNode;
_241.insertBefore(node,ref);
return true;
};
dojo.dom.insertAfter=3Dfunction(node,ref,_244){
var pn=3Dref.parentNode;
if(ref=3D=3Dpn.lastChild){
if((_244!=3Dtrue)&&(node=3D=3D=3Dref)){
return false;
}
pn.appendChild(node);
}else{
return this.insertBefore(node,ref.nextSibling,_244);
}
return true;
};
dojo.dom.insertAtPosition=3Dfunction(node,ref,_248){
if((!node)||(!ref)||(!_248)){
return false;
}
switch(_248.toLowerCase()){
case "before":
return dojo.dom.insertBefore(node,ref);
case "after":
return dojo.dom.insertAfter(node,ref);
case "first":
if(ref.firstChild){
return dojo.dom.insertBefore(node,ref.firstChild);
}else{
ref.appendChild(node);
return true;
}
break;
default:
ref.appendChild(node);
return true;
}
};
dojo.dom.insertAtIndex=3Dfunction(node,_24a,_24b){
var _24c=3D_24a.childNodes;
if(!_24c.length||_24c.length=3D=3D_24b){
_24a.appendChild(node);
return true;
}
if(_24b=3D=3D0){
return dojo.dom.prependChild(node,_24a);
}
return dojo.dom.insertAfter(node,_24c[_24b-1]);
};
dojo.dom.textContent=3Dfunction(node,text){
if(arguments.length>1){
var _24f=3Ddojo.doc();
dojo.dom.replaceChildren(node,_24f.createTextNode(text));
return text;
}else{
if(node.textContent!=3Dundefined){
return node.textContent;
}
var _250=3D"";
if(node=3D=3Dnull){
return _250;
}
for(var i=3D0;i<node.childNodes.length;i++){
switch(node.childNodes[i].nodeType){
case 1:
case 5:
_250+=3Ddojo.dom.textContent(node.childNodes[i]);
break;
case 3:
case 2:
case 4:
_250+=3Dnode.childNodes[i].nodeValue;
break;
default:
break;
}
}
return _250;
}
};
dojo.dom.hasParent=3Dfunction(node){
return Boolean(node&&node.parentNode&&dojo.dom.isNode(node.parentNode));
};
dojo.dom.isTag=3Dfunction(node){
if(node&&node.tagName){
for(var i=3D1;i<arguments.length;i++){
if(node.tagName=3D=3DString(arguments[i])){
return String(arguments[i]);
}
}
}
return "";
};
dojo.dom.setAttributeNS=3Dfunction(elem,_256,_257,_258){
if(elem=3D=3Dnull||((elem=3D=3Dundefined)&&(typeof =
elem=3D=3D"undefined"))){
dojo.raise("No element given to dojo.dom.setAttributeNS");
}
if(!((elem.setAttributeNS=3D=3Dundefined)&&(typeof =
elem.setAttributeNS=3D=3D"undefined"))){
elem.setAttributeNS(_256,_257,_258);
}else{
var _259=3Delem.ownerDocument;
var _25a=3D_259.createNode(2,_257,_256);
_25a.nodeValue=3D_258;
elem.setAttributeNode(_25a);
}
};
dojo.provide("dojo.undo.browser");
try{
if((!djConfig["preventBackButtonFix"])&&(!dojo.hostenv.post_load_)){
document.write("<iframe style=3D'border: 0px; width: 1px; height: 1px; =
position: absolute; bottom: 0px; right: 0px; visibility: visible;' =
name=3D'djhistory' id=3D'djhistory' =
src=3D'"+(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri=
()+"iframe_history.html")+"'></iframe>");
}
}
catch(e){
}
if(dojo.render.html.opera){
dojo.debug("Opera is not supported with dojo.undo.browser, so =
back/forward detection will not work.");
}
dojo.undo.browser=3D{initialHref:(!dj_undef("window"))?window.location.hr=
ef:"",initialHash:(!dj_undef("window"))?window.location.hash:"",moveForwa=
rd:false,historyStack:[],forwardStack:[],historyIframe:null,bookmarkAncho=
r:null,locationTimer:null,setInitialState:function(args){
this.initialState=3Dthis._createState(this.initialHref,args,this.initialH=
ash);
},addToHistory:function(args){
this.forwardStack=3D[];
var hash=3Dnull;
var url=3Dnull;
if(!this.historyIframe){
if(djConfig["useXDomain"]&&!djConfig["dojoIframeHistoryUrl"]){
dojo.debug("dojo.undo.browser: When using cross-domain Dojo builds,"+" =
please save iframe_history.html to your domain and set =
djConfig.dojoIframeHistoryUrl"+" to the path on your domain to =
iframe_history.html");
}
this.historyIframe=3Dwindow.frames["djhistory"];
}
if(!this.bookmarkAnchor){
this.bookmarkAnchor=3Ddocument.createElement("a");
dojo.body().appendChild(this.bookmarkAnchor);
this.bookmarkAnchor.style.display=3D"none";
}
if(args["changeUrl"]){
hash=3D"#"+((args["changeUrl"]!=3D=3Dtrue)?args["changeUrl"]:(new =
Date()).getTime());
if(this.historyStack.length=3D=3D0&&this.initialState.urlHash=3D=3Dhash){=

this.initialState=3Dthis._createState(url,args,hash);
return;
}else{
if(this.historyStack.length>0&&this.historyStack[this.historyStack.length=
-1].urlHash=3D=3Dhash){
this.historyStack[this.historyStack.length-1]=3Dthis._createState(url,arg=
s,hash);
return;
}
}
this.changingUrl=3Dtrue;
setTimeout("window.location.href =3D '"+hash+"'; =
dojo.undo.browser.changingUrl =3D false;",1);
this.bookmarkAnchor.href=3Dhash;
if(dojo.render.html.ie){
url=3Dthis._loadIframeHistory();
var _25f=3Dargs["back"]||args["backButton"]||args["handle"];
var tcb=3Dfunction(_261){
if(window.location.hash!=3D""){
setTimeout("window.location.href =3D '"+hash+"';",1);
}
_25f.apply(this,[_261]);
};
if(args["back"]){
args.back=3Dtcb;
}else{
if(args["backButton"]){
args.backButton=3Dtcb;
}else{
if(args["handle"]){
args.handle=3Dtcb;
}
}
}
var _262=3Dargs["forward"]||args["forwardButton"]||args["handle"];
var tfw=3Dfunction(_264){
if(window.location.hash!=3D""){
window.location.href=3Dhash;
}
if(_262){
_262.apply(this,[_264]);
}
};
if(args["forward"]){
args.forward=3Dtfw;
}else{
if(args["forwardButton"]){
args.forwardButton=3Dtfw;
}else{
if(args["handle"]){
args.handle=3Dtfw;
}
}
}
}else{
if(dojo.render.html.moz){
if(!this.locationTimer){
this.locationTimer=3DsetInterval("dojo.undo.browser.checkLocation();",200=
);
}
}
}
}else{
url=3Dthis._loadIframeHistory();
}
this.historyStack.push(this._createState(url,args,hash));
},checkLocation:function(){
if(!this.changingUrl){
var hsl=3Dthis.historyStack.length;
if((window.location.hash=3D=3Dthis.initialHash||window.location.href=3D=3D=
this.initialHref)&&(hsl=3D=3D1)){
this.handleBackButton();
return;
}
if(this.forwardStack.length>0){
if(this.forwardStack[this.forwardStack.length-1].urlHash=3D=3Dwindow.loca=
tion.hash){
this.handleForwardButton();
return;
}
}
if((hsl>=3D2)&&(this.historyStack[hsl-2])){
if(this.historyStack[hsl-2].urlHash=3D=3Dwindow.location.hash){
this.handleBackButton();
return;
}
}
}
},iframeLoaded:function(evt,_267){
if(!dojo.render.html.opera){
var _268=3Dthis._getUrlQuery(_267.href);
if(_268=3D=3Dnull){
if(this.historyStack.length=3D=3D1){
this.handleBackButton();
}
return;
}
if(this.moveForward){
this.moveForward=3Dfalse;
return;
}
if(this.historyStack.length>=3D2&&_268=3D=3Dthis._getUrlQuery(this.histor=
yStack[this.historyStack.length-2].url)){
this.handleBackButton();
}else{
if(this.forwardStack.length>0&&_268=3D=3Dthis._getUrlQuery(this.forwardSt=
ack[this.forwardStack.length-1].url)){
this.handleForwardButton();
}
}
}
},handleBackButton:function(){
var _269=3Dthis.historyStack.pop();
if(!_269){
return;
}
var last=3Dthis.historyStack[this.historyStack.length-1];
if(!last&&this.historyStack.length=3D=3D0){
last=3Dthis.initialState;
}
if(last){
if(last.kwArgs["back"]){
last.kwArgs["back"]();
}else{
if(last.kwArgs["backButton"]){
last.kwArgs["backButton"]();
}else{
if(last.kwArgs["handle"]){
last.kwArgs.handle("back");
}
}
}
}
this.forwardStack.push(_269);
},handleForwardButton:function(){
var last=3Dthis.forwardStack.pop();
if(!last){
return;
}
if(last.kwArgs["forward"]){
last.kwArgs.forward();
}else{
if(last.kwArgs["forwardButton"]){
last.kwArgs.forwardButton();
}else{
if(last.kwArgs["handle"]){
last.kwArgs.handle("forward");
}
}
}
this.historyStack.push(last);
},_createState:function(url,args,hash){
return {"url":url,"kwArgs":args,"urlHash":hash};
},_getUrlQuery:function(url){
var _270=3Durl.split("?");
if(_270.length<2){
return null;
}else{
return _270[1];
}
},_loadIframeHistory:function(){
var =
url=3D(djConfig["dojoIframeHistoryUrl"]||dojo.hostenv.getBaseScriptUri()+=
"iframe_history.html")+"?"+(new Date()).getTime();
this.moveForward=3Dtrue;
dojo.io.setIFrameSrc(this.historyIframe,url,false);
return url;
}};
dojo.provide("dojo.io.BrowserIO");
if(!dj_undef("window")){
dojo.io.checkChildrenForFile=3Dfunction(node){
var _273=3Dfalse;
var _274=3Dnode.getElementsByTagName("input");
dojo.lang.forEach(_274,function(_275){
if(_273){
return;
}
if(_275.getAttribute("type")=3D=3D"file"){
_273=3Dtrue;
}
});
return _273;
};
dojo.io.formHasFile=3Dfunction(_276){
return dojo.io.checkChildrenForFile(_276);
};
dojo.io.updateNode=3Dfunction(node,_278){
node=3Ddojo.byId(node);
var args=3D_278;
if(dojo.lang.isString(_278)){
args=3D{url:_278};
}
args.mimetype=3D"text/html";
args.load=3Dfunction(t,d,e){
while(node.firstChild){
dojo.dom.destroyNode(node.firstChild);
}
node.innerHTML=3Dd;
};
dojo.io.bind(args);
};
dojo.io.formFilter=3Dfunction(node){
var type=3D(node.type||"").toLowerCase();
return =
!node.disabled&&node.name&&!dojo.lang.inArray(["file","submit","image","r=
eset","button"],type);
};
dojo.io.encodeForm=3Dfunction(_27f,_280,_281){
if((!_27f)||(!_27f.tagName)||(!_27f.tagName.toLowerCase()=3D=3D"form")){
dojo.raise("Attempted to encode a non-form element.");
}
if(!_281){
_281=3Ddojo.io.formFilter;
}
var =
enc=3D/utf/i.test(_280||"")?encodeURIComponent:dojo.string.encodeAscii;
var _283=3D[];
for(var i=3D0;i<_27f.elements.length;i++){
var elm=3D_27f.elements[i];
if(!elm||elm.tagName.toLowerCase()=3D=3D"fieldset"||!_281(elm)){
continue;
}
var name=3Denc(elm.name);
var type=3Delm.type.toLowerCase();
if(type=3D=3D"select-multiple"){
for(var j=3D0;j<elm.options.length;j++){
if(elm.options[j].selected){
_283.push(name+"=3D"+enc(elm.options[j].value));
}
}
}else{
if(dojo.lang.inArray(["radio","checkbox"],type)){
if(elm.checked){
_283.push(name+"=3D"+enc(elm.value));
}
}else{
_283.push(name+"=3D"+enc(elm.value));
}
}
}
var _289=3D_27f.getElementsByTagName("input");
for(var i=3D0;i<_289.length;i++){
var _28a=3D_289[i];
if(_28a.type.toLowerCase()=3D=3D"image"&&_28a.form=3D=3D_27f&&_281(_28a))=
{
var name=3Denc(_28a.name);
_283.push(name+"=3D"+enc(_28a.value));
_283.push(name+".x=3D0");
_283.push(name+".y=3D0");
}
}
return _283.join("&")+"&";
};
dojo.io.FormBind=3Dfunction(args){
this.bindArgs=3D{};
if(args&&args.formNode){
this.init(args);
}else{
if(args){
this.init({formNode:args});
}
}
};
dojo.lang.extend(dojo.io.FormBind,{form:null,bindArgs:null,clickedButton:=
null,init:function(args){
var form=3Ddojo.byId(args.formNode);
if(!form||!form.tagName||form.tagName.toLowerCase()!=3D"form"){
throw new Error("FormBind: Couldn't apply, invalid form");
}else{
if(this.form=3D=3Dform){
return;
}else{
if(this.form){
throw new Error("FormBind: Already applied to a form");
}
}
}
dojo.lang.mixin(this.bindArgs,args);
this.form=3Dform;
this.connect(form,"onsubmit","submit");
for(var i=3D0;i<form.elements.length;i++){
var node=3Dform.elements[i];
if(node&&node.type&&dojo.lang.inArray(["submit","button"],node.type.toLow=
erCase())){
this.connect(node,"onclick","click");
}
}
var _290=3Dform.getElementsByTagName("input");
for(var i=3D0;i<_290.length;i++){
var _291=3D_290[i];
if(_291.type.toLowerCase()=3D=3D"image"&&_291.form=3D=3Dform){
this.connect(_291,"onclick","click");
}
}
},onSubmit:function(form){
return true;
},submit:function(e){
e.preventDefault();
if(this.onSubmit(this.form)){
dojo.io.bind(dojo.lang.mixin(this.bindArgs,{formFilter:dojo.lang.hitch(th=
is,"formFilter")}));
}
},click:function(e){
var node=3De.currentTarget;
if(node.disabled){
return;
}
this.clickedButton=3Dnode;
},formFilter:function(node){
var type=3D(node.type||"").toLowerCase();
var _298=3Dfalse;
if(node.disabled||!node.name){
_298=3Dfalse;
}else{
if(dojo.lang.inArray(["submit","button","image"],type)){
if(!this.clickedButton){
this.clickedButton=3Dnode;
}
_298=3Dnode=3D=3Dthis.clickedButton;
}else{
_298=3D!dojo.lang.inArray(["file","submit","reset","button"],type);
}
}
return _298;
},connect:function(_299,_29a,_29b){
if(dojo.evalObjPath("dojo.event.connect")){
dojo.event.connect(_299,_29a,this,_29b);
}else{
var fcn=3Ddojo.lang.hitch(this,_29b);
_299[_29a]=3Dfunction(e){
if(!e){
e=3Dwindow.event;
}
if(!e.currentTarget){
e.currentTarget=3De.srcElement;
}
if(!e.preventDefault){
e.preventDefault=3Dfunction(){
window.event.returnValue=3Dfalse;
};
}
fcn(e);
};
}
}});
dojo.io.XMLHTTPTransport=3Dnew function(){
var _29e=3Dthis;
var _29f=3D{};
this.useCache=3Dfalse;
this.preventCache=3Dfalse;
function getCacheKey(url,_2a1,_2a2){
return url+"|"+_2a1+"|"+_2a2.toLowerCase();
}
function addToCache(url,_2a4,_2a5,http){
_29f[getCacheKey(url,_2a4,_2a5)]=3Dhttp;
}
function getFromCache(url,_2a8,_2a9){
return _29f[getCacheKey(url,_2a8,_2a9)];
}
this.clearCache=3Dfunction(){
_29f=3D{};
};
function doLoad(_2aa,http,url,_2ad,_2ae){
if(((http.status>=3D200)&&(http.status<300))||(http.status=3D=3D304)||(ht=
tp.status=3D=3D1223)||(location.protocol=3D=3D"file:"&&(http.status=3D=3D=
0||http.status=3D=3Dundefined))||(location.protocol=3D=3D"chrome:"&&(http=
.status=3D=3D0||http.status=3D=3Dundefined))){
var ret;
if(_2aa.method.toLowerCase()=3D=3D"head"){
var _2b0=3Dhttp.getAllResponseHeaders();
ret=3D{};
ret.toString=3Dfunction(){
return _2b0;
};
var _2b1=3D_2b0.split(/[\r\n]+/g);
for(var i=3D0;i<_2b1.length;i++){
var pair=3D_2b1[i].match(/^([^:]+)\s*:\s*(.+)$/i);
if(pair){
ret[pair[1]]=3Dpair[2];
}
}
}else{
if(_2aa.mimetype=3D=3D"text/javascript"){
try{
ret=3Ddj_eval(http.responseText);
}
catch(e){
dojo.debug(e);
dojo.debug(http.responseText);
ret=3Dnull;
}
}else{
if(_2aa.mimetype.substr(0,9)=3D=3D"text/json"||_2aa.mimetype.substr(0,16)=
=3D=3D"application/json"){
try{
ret=3Ddj_eval("("+_2aa.jsonFilter(http.responseText)+")");
}
catch(e){
dojo.debug(e);
dojo.debug(http.responseText);
ret=3Dfalse;
}
}else{
if((_2aa.mimetype=3D=3D"application/xml")||(_2aa.mimetype=3D=3D"text/xml"=
)){
ret=3Dhttp.responseXML;
if(!ret||typeof =
ret=3D=3D"string"||!http.getResponseHeader("Content-Type")){
ret=3Ddojo.dom.createDocumentFromText(http.responseText);
}
}else{
ret=3Dhttp.responseText;
}
}
}
}
if(_2ae){
addToCache(url,_2ad,_2aa.method,http);
}
_2aa[(typeof =
_2aa.load=3D=3D"function")?"load":"handle"]("load",ret,http,_2aa);
}else{
var _2b4=3Dnew dojo.io.Error("XMLHttpTransport Error: "+http.status+" =
"+http.statusText);
_2aa[(typeof =
_2aa.error=3D=3D"function")?"error":"handle"]("error",_2b4,http,_2aa);
}
}
function setHeaders(http,_2b6){
if(_2b6["headers"]){
for(var _2b7 in _2b6["headers"]){
if(_2b7.toLowerCase()=3D=3D"content-type"&&!_2b6["contentType"]){
_2b6["contentType"]=3D_2b6["headers"][_2b7];
}else{
http.setRequestHeader(_2b7,_2b6["headers"][_2b7]);
}
}
}
}
this.inFlight=3D[];
this.inFlightTimer=3Dnull;
this.startWatchingInFlight=3Dfunction(){
if(!this.inFlightTimer){
this.inFlightTimer=3DsetTimeout("dojo.io.XMLHTTPTransport.watchInFlight()=
;",10);
}
};
this.watchInFlight=3Dfunction(){
var now=3Dnull;
if(!dojo.hostenv._blockAsync&&!_29e._blockAsync){
for(var x=3Dthis.inFlight.length-1;x>=3D0;x--){
try{
var tif=3Dthis.inFlight[x];
if(!tif||tif.http._aborted||!tif.http.readyState){
this.inFlight.splice(x,1);
continue;
}
if(4=3D=3Dtif.http.readyState){
this.inFlight.splice(x,1);
doLoad(tif.req,tif.http,tif.url,tif.query,tif.useCache);
}else{
if(tif.startTime){
if(!now){
now=3D(new Date()).getTime();
}
if(tif.startTime+(tif.req.timeoutSeconds*1000)<now){
if(typeof tif.http.abort=3D=3D"function"){
tif.http.abort();
}
this.inFlight.splice(x,1);
tif.req[(typeof =
tif.req.timeout=3D=3D"function")?"timeout":"handle"]("timeout",null,tif.h=
ttp,tif.req);
}
}
}
}
catch(e){
try{
var _2bb=3Dnew dojo.io.Error("XMLHttpTransport.watchInFlight Error: =
"+e);
tif.req[(typeof =
tif.req.error=3D=3D"function")?"error":"handle"]("error",_2bb,tif.http,ti=
f.req);
}
catch(e2){
dojo.debug("XMLHttpTransport error callback failed: "+e2);
}
}
}
}
clearTimeout(this.inFlightTimer);
if(this.inFlight.length=3D=3D0){
this.inFlightTimer=3Dnull;
return;
}
this.inFlightTimer=3DsetTimeout("dojo.io.XMLHTTPTransport.watchInFlight()=
;",10);
};
var _2bc=3Ddojo.hostenv.getXmlhttpObject()?true:false;
this.canHandle=3Dfunction(_2bd){
var mlc=3D_2bd["mimetype"].toLowerCase()||"";
return =
_2bc&&((dojo.lang.inArray(["text/plain","text/html","application/xml","te=
xt/xml","text/javascript"],mlc))||(mlc.substr(0,9)=3D=3D"text/json"||mlc.=
substr(0,16)=3D=3D"application/json"))&&!(_2bd["formNode"]&&dojo.io.formH=
asFile(_2bd["formNode"]));
};
this.multipartBoundary=3D"45309FFF-BD65-4d50-99C9-36986896A96F";
this.bind=3Dfunction(_2bf){
if(!_2bf["url"]){
if(!_2bf["formNode"]&&(_2bf["backButton"]||_2bf["back"]||_2bf["changeUrl"=
]||_2bf["watchForURL"])&&(!djConfig.preventBackButtonFix)){
dojo.deprecated("Using dojo.io.XMLHTTPTransport.bind() to add to browser =
history without doing an IO request","Use =
dojo.undo.browser.addToHistory() instead.","0.4");
dojo.undo.browser.addToHistory(_2bf);
return true;
}
}
var url=3D_2bf.url;
var _2c1=3D"";
if(_2bf["formNode"]){
var ta=3D_2bf.formNode.getAttribute("action");
if((ta)&&(!_2bf["url"])){
url=3Dta;
}
var tp=3D_2bf.formNode.getAttribute("method");
if((tp)&&(!_2bf["method"])){
_2bf.method=3Dtp;
}
_2c1+=3Ddojo.io.encodeForm(_2bf.formNode,_2bf.encoding,_2bf["formFilter"]=
);
}
if(url.indexOf("#")>-1){
dojo.debug("Warning: dojo.io.bind: stripping hash values from =
url:",url);
url=3Durl.split("#")[0];
}
if(_2bf["file"]){
_2bf.method=3D"post";
}
if(!_2bf["method"]){
_2bf.method=3D"get";
}
if(_2bf.method.toLowerCase()=3D=3D"get"){
_2bf.multipart=3Dfalse;
}else{
if(_2bf["file"]){
_2bf.multipart=3Dtrue;
}else{
if(!_2bf["multipart"]){
_2bf.multipart=3Dfalse;
}
}
}
if(_2bf["backButton"]||_2bf["back"]||_2bf["changeUrl"]){
dojo.undo.browser.addToHistory(_2bf);
}
var _2c4=3D_2bf["content"]||{};
if(_2bf.sendTransport){
_2c4["dojo.transport"]=3D"xmlhttp";
}
do{
if(_2bf.postContent){
_2c1=3D_2bf.postContent;
break;
}
if(_2c4){
_2c1+=3Ddojo.io.argsFromMap(_2c4,_2bf.encoding);
}
if(_2bf.method.toLowerCase()=3D=3D"get"||!_2bf.multipart){
break;
}
var t=3D[];
if(_2c1.length){
var q=3D_2c1.split("&");
for(var i=3D0;i<q.length;++i){
if(q[i].length){
var p=3Dq[i].split("=3D");
t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; =
name=3D\""+p[0]+"\"","",p[1]);
}
}
}
if(_2bf.file){
if(dojo.lang.isArray(_2bf.file)){
for(var i=3D0;i<_2bf.file.length;++i){
var o=3D_2bf.file[i];
t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; =
name=3D\""+o.name+"\"; filename=3D\""+("fileName" in =
o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in =
o?o.contentType:"application/octet-stream"),"",o.content);
}
}else{
var o=3D_2bf.file;
t.push("--"+this.multipartBoundary,"Content-Disposition: form-data; =
name=3D\""+o.name+"\"; filename=3D\""+("fileName" in =
o?o.fileName:o.name)+"\"","Content-Type: "+("contentType" in =
o?o.contentType:"application/octet-stream"),"",o.content);
}
}
if(t.length){
t.push("--"+this.multipartBoundary+"--","");
_2c1=3Dt.join("\r\n");
}
}while(false);
var _2ca=3D_2bf["sync"]?false:true;
var =
_2cb=3D_2bf["preventCache"]||(this.preventCache=3D=3Dtrue&&_2bf["preventC=
ache"]!=3Dfalse);
var =
_2cc=3D_2bf["useCache"]=3D=3Dtrue||(this.useCache=3D=3Dtrue&&_2bf["useCac=
he"]!=3Dfalse);
if(!_2cb&&_2cc){
var _2cd=3DgetFromCache(url,_2c1,_2bf.method);
if(_2cd){
doLoad(_2bf,_2cd,url,_2c1,false);
return;
}
}
var http=3Ddojo.hostenv.getXmlhttpObject(_2bf);
var _2cf=3Dfalse;
if(_2ca){
var =
_2d0=3Dthis.inFlight.push({"req":_2bf,"http":http,"url":url,"query":_2c1,=
"useCache":_2cc,"startTime":_2bf.timeoutSeconds?(new =
Date()).getTime():0});
this.startWatchingInFlight();
}else{
_29e._blockAsync=3Dtrue;
}
if(_2bf.method.toLowerCase()=3D=3D"post"){
if(!_2bf.user){
http.open("POST",url,_2ca);
}else{
http.open("POST",url,_2ca,_2bf.user,_2bf.password);
}
setHeaders(http,_2bf);
http.setRequestHeader("Content-Type",_2bf.multipart?("multipart/form-data=
; =
boundary=3D"+this.multipartBoundary):(_2bf.contentType||"application/x-ww=
w-form-urlencoded"));
try{
http.send(_2c1);
}
catch(e){
if(typeof http.abort=3D=3D"function"){
http.abort();
}
doLoad(_2bf,{status:404},url,_2c1,_2cc);
}
}else{
var _2d1=3Durl;
if(_2c1!=3D""){
_2d1+=3D(_2d1.indexOf("?")>-1?"&":"?")+_2c1;
}
if(_2cb){
_2d1+=3D(dojo.string.endsWithAny(_2d1,"?","&")?"":(_2d1.indexOf("?")>-1?"=
&":"?"))+"dojo.preventCache=3D"+new Date().valueOf();
}
if(!_2bf.user){
http.open(_2bf.method.toUpperCase(),_2d1,_2ca);
}else{
http.open(_2bf.method.toUpperCase(),_2d1,_2ca,_2bf.user,_2bf.password);
}
setHeaders(http,_2bf);
try{
http.send(null);
}
catch(e){
if(typeof http.abort=3D=3D"function"){
http.abort();
}
doLoad(_2bf,{status:404},url,_2c1,_2cc);
}
}
if(!_2ca){
doLoad(_2bf,http,url,_2c1,_2cc);
_29e._blockAsync=3Dfalse;
}
_2bf.abort=3Dfunction(){
try{
http._aborted=3Dtrue;
}
catch(e){
}
return http.abort();
};
return;
};
dojo.io.transports.addTransport("XMLHTTPTransport");
};
}
dojo.provide("dojo.io.cookie");
dojo.io.cookie.setCookie=3Dfunction(name,_2d3,days,path,_2d6,_2d7){
var _2d8=3D-1;
if((typeof days=3D=3D"number")&&(days>=3D0)){
var d=3Dnew Date();
d.setTime(d.getTime()+(days*24*60*60*1000));
_2d8=3Dd.toGMTString();
}
_2d3=3Descape(_2d3);
document.cookie=3Dname+"=3D"+_2d3+";"+(_2d8!=3D-1?" =
expires=3D"+_2d8+";":"")+(path?"path=3D"+path:"")+(_2d6?"; =
domain=3D"+_2d6:"")+(_2d7?"; secure":"");
};
dojo.io.cookie.set=3Ddojo.io.cookie.setCookie;
dojo.io.cookie.getCookie=3Dfunction(name){
var idx=3Ddocument.cookie.lastIndexOf(name+"=3D");
if(idx=3D=3D-1){
return null;
}
var _2dc=3Ddocument.cookie.substring(idx+name.length+1);
var end=3D_2dc.indexOf(";");
if(end=3D=3D-1){
end=3D_2dc.length;
}
_2dc=3D_2dc.substring(0,end);
_2dc=3Dunescape(_2dc);
return _2dc;
};
dojo.io.cookie.get=3Ddojo.io.cookie.getCookie;
dojo.io.cookie.deleteCookie=3Dfunction(name){
dojo.io.cookie.setCookie(name,"-",0);
};
dojo.io.cookie.setObjectCookie=3Dfunction(name,obj,days,path,_2e3,_2e4,_2=
e5){
if(arguments.length=3D=3D5){
_2e5=3D_2e3;
_2e3=3Dnull;
_2e4=3Dnull;
}
var _2e6=3D[],_2e7,_2e8=3D"";
if(!_2e5){
_2e7=3Ddojo.io.cookie.getObjectCookie(name);
}
if(days>=3D0){
if(!_2e7){
_2e7=3D{};
}
for(var prop in obj){
if(obj[prop]=3D=3Dnull){
delete _2e7[prop];
}else{
if((typeof obj[prop]=3D=3D"string")||(typeof obj[prop]=3D=3D"number")){
_2e7[prop]=3Dobj[prop];
}
}
}
prop=3Dnull;
for(var prop in _2e7){
_2e6.push(escape(prop)+"=3D"+escape(_2e7[prop]));
}
_2e8=3D_2e6.join("&");
}
dojo.io.cookie.setCookie(name,_2e8,days,path,_2e3,_2e4);
};
dojo.io.cookie.getObjectCookie=3Dfunction(name){
var _2eb=3Dnull,_2ec=3Ddojo.io.cookie.getCookie(name);
if(_2ec){
_2eb=3D{};
var _2ed=3D_2ec.split("&");
for(var i=3D0;i<_2ed.length;i++){
var pair=3D_2ed[i].split("=3D");
var _2f0=3Dpair[1];
if(isNaN(_2f0)){
_2f0=3Dunescape(pair[1]);
}
_2eb[unescape(pair[0])]=3D_2f0;
}
}
return _2eb;
};
dojo.io.cookie.isSupported=3Dfunction(){
if(typeof navigator.cookieEnabled!=3D"boolean"){
dojo.io.cookie.setCookie("__TestingYourBrowserForCookieSupport__","Cookie=
sAllowed",90,null);
var =
_2f1=3Ddojo.io.cookie.getCookie("__TestingYourBrowserForCookieSupport__")=
;
navigator.cookieEnabled=3D(_2f1=3D=3D"CookiesAllowed");
if(navigator.cookieEnabled){
this.deleteCookie("__TestingYourBrowserForCookieSupport__");
}
}
return navigator.cookieEnabled;
};
if(!dojo.io.cookies){
dojo.io.cookies=3Ddojo.io.cookie;
}
dojo.kwCompoundRequire({common:["dojo.io.common"],rhino:["dojo.io.RhinoIO=
"],browser:["dojo.io.BrowserIO","dojo.io.cookie"],dashboard:["dojo.io.Bro=
wserIO","dojo.io.cookie"]});
dojo.provide("dojo.io.*");
dojo.provide("dojo.event.common");
dojo.event=3Dnew function(){
this._canTimeout=3Ddojo.lang.isFunction(dj_global["setTimeout"])||dojo.la=
ng.isAlien(dj_global["setTimeout"]);
function interpolateArgs(args,_2f3){
var dl=3Ddojo.lang;
var =
ao=3D{srcObj:dj_global,srcFunc:null,adviceObj:dj_global,adviceFunc:null,a=
roundObj:null,aroundFunc:null,adviceType:(args.length>2)?args[0]:"after",=
precedence:"last",once:false,delay:null,rate:0,adviceMsg:false,maxCalls:-=
1};
switch(args.length){
case 0:
return;
case 1:
return;
case 2:
ao.srcFunc=3Dargs[0];
ao.adviceFunc=3Dargs[1];
break;
case 3:
if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isString(args[2]))=
){
ao.adviceType=3D"after";
ao.srcObj=3Dargs[0];
ao.srcFunc=3Dargs[1];
ao.adviceFunc=3Dargs[2];
}else{
if((dl.isString(args[1]))&&(dl.isString(args[2]))){
ao.srcFunc=3Dargs[1];
ao.adviceFunc=3Dargs[2];
}else{
if((dl.isObject(args[0]))&&(dl.isString(args[1]))&&(dl.isFunction(args[2]=
))){
ao.adviceType=3D"after";
ao.srcObj=3Dargs[0];
ao.srcFunc=3Dargs[1];
var _2f6=3Ddl.nameAnonFunc(args[2],ao.adviceObj,_2f3);
ao.adviceFunc=3D_2f6;
}else{
if((dl.isFunction(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]=
))){
ao.adviceType=3D"after";
ao.srcObj=3Ddj_global;
var _2f6=3Ddl.nameAnonFunc(args[0],ao.srcObj,_2f3);
ao.srcFunc=3D_2f6;
ao.adviceObj=3Dargs[1];
ao.adviceFunc=3Dargs[2];
}
}
}
}
break;
case 4:
if((dl.isObject(args[0]))&&(dl.isObject(args[2]))){
ao.adviceType=3D"after";
ao.srcObj=3Dargs[0];
ao.srcFunc=3Dargs[1];
ao.adviceObj=3Dargs[2];
ao.adviceFunc=3Dargs[3];
}else{
if((dl.isString(args[0]))&&(dl.isString(args[1]))&&(dl.isObject(args[2]))=
){
ao.adviceType=3Dargs[0];
ao.srcObj=3Ddj_global;
ao.srcFunc=3Dargs[1];
ao.adviceObj=3Dargs[2];
ao.adviceFunc=3Dargs[3];
}else{
if((dl.isString(args[0]))&&(dl.isFunction(args[1]))&&(dl.isObject(args[2]=
))){
ao.adviceType=3Dargs[0];
ao.srcObj=3Ddj_global;
var _2f6=3Ddl.nameAnonFunc(args[1],dj_global,_2f3);
ao.srcFunc=3D_2f6;
ao.adviceObj=3Dargs[2];
ao.adviceFunc=3Dargs[3];
}else{
if((dl.isString(args[0]))&&(dl.isObject(args[1]))&&(dl.isString(args[2]))=
&&(dl.isFunction(args[3]))){
ao.srcObj=3Dargs[1];
ao.srcFunc=3Dargs[2];
var _2f6=3Ddl.nameAnonFunc(args[3],dj_global,_2f3);
ao.adviceObj=3Ddj_global;
ao.adviceFunc=3D_2f6;
}else{
if(dl.isObject(args[1])){
ao.srcObj=3Dargs[1];
ao.srcFunc=3Dargs[2];
ao.adviceObj=3Ddj_global;
ao.adviceFunc=3Dargs[3];
}else{
if(dl.isObject(args[2])){
ao.srcObj=3Ddj_global;
ao.srcFunc=3Dargs[1];
ao.adviceObj=3Dargs[2];
ao.adviceFunc=3Dargs[3];
}else{
ao.srcObj=3Dao.adviceObj=3Dao.aroundObj=3Ddj_global;
ao.srcFunc=3Dargs[1];
ao.adviceFunc=3Dargs[2];
ao.aroundFunc=3Dargs[3];
}
}
}
}
}
}
break;
case 6:
ao.srcObj=3Dargs[1];
ao.srcFunc=3Dargs[2];
ao.adviceObj=3Dargs[3];
ao.adviceFunc=3Dargs[4];
ao.aroundFunc=3Dargs[5];
ao.aroundObj=3Ddj_global;
break;
default:
ao.srcObj=3Dargs[1];
ao.srcFunc=3Dargs[2];
ao.adviceObj=3Dargs[3];
ao.adviceFunc=3Dargs[4];
ao.aroundObj=3Dargs[5];
ao.aroundFunc=3Dargs[6];
ao.once=3Dargs[7];
ao.delay=3Dargs[8];
ao.rate=3Dargs[9];
ao.adviceMsg=3Dargs[10];
ao.maxCalls=3D(!isNaN(parseInt(args[11])))?args[11]:-1;
break;
}
if(dl.isFunction(ao.aroundFunc)){
var _2f6=3Ddl.nameAnonFunc(ao.aroundFunc,ao.aroundObj,_2f3);
ao.aroundFunc=3D_2f6;
}
if(dl.isFunction(ao.srcFunc)){
ao.srcFunc=3Ddl.getNameInObj(ao.srcObj,ao.srcFunc);
}
if(dl.isFunction(ao.adviceFunc)){
ao.adviceFunc=3Ddl.getNameInObj(ao.adviceObj,ao.adviceFunc);
}
if((ao.aroundObj)&&(dl.isFunction(ao.aroundFunc))){
ao.aroundFunc=3Ddl.getNameInObj(ao.aroundObj,ao.aroundFunc);
}
if(!ao.srcObj){
dojo.raise("bad srcObj for srcFunc: "+ao.srcFunc);
}
if(!ao.adviceObj){
dojo.raise("bad adviceObj for adviceFunc: "+ao.adviceFunc);
}
if(!ao.adviceFunc){
dojo.debug("bad adviceFunc for srcFunc: "+ao.srcFunc);
dojo.debugShallow(ao);
}
return ao;
}
this.connect=3Dfunction(){
if(arguments.length=3D=3D1){
var ao=3Darguments[0];
}else{
var ao=3DinterpolateArgs(arguments,true);
}
if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=3D=3D"onkey"=
)){
if(dojo.render.html.ie){
ao.srcFunc=3D"onkeydown";
this.connect(ao);
}
ao.srcFunc=3D"onkeypress";
}
if(dojo.lang.isArray(ao.srcObj)&&ao.srcObj!=3D""){
var _2f8=3D{};
for(var x in ao){
_2f8[x]=3Dao[x];
}
var mjps=3D[];
dojo.lang.forEach(ao.srcObj,function(src){
if((dojo.render.html.capable)&&(dojo.lang.isString(src))){
src=3Ddojo.byId(src);
}
_2f8.srcObj=3Dsrc;
mjps.push(dojo.event.connect.call(dojo.event,_2f8));
});
return mjps;
}
var mjp=3Ddojo.event.MethodJoinPoint.getForMethod(ao.srcObj,ao.srcFunc);
if(ao.adviceFunc){
var =
mjp2=3Ddojo.event.MethodJoinPoint.getForMethod(ao.adviceObj,ao.adviceFunc=
);
}
mjp.kwAddAdvice(ao);
return mjp;
};
this.log=3Dfunction(a1,a2){
var _300;
if((arguments.length=3D=3D1)&&(typeof a1=3D=3D"object")){
_300=3Da1;
}else{
_300=3D{srcObj:a1,srcFunc:a2};
}
_300.adviceFunc=3Dfunction(){
var _301=3D[];
for(var x=3D0;x<arguments.length;x++){
_301.push(arguments[x]);
}
dojo.debug("("+_300.srcObj+")."+_300.srcFunc,":",_301.join(", "));
};
this.kwConnect(_300);
};
this.connectBefore=3Dfunction(){
var args=3D["before"];
for(var i=3D0;i<arguments.length;i++){
args.push(arguments[i]);
}
return this.connect.apply(this,args);
};
this.connectAround=3Dfunction(){
var args=3D["around"];
for(var i=3D0;i<arguments.length;i++){
args.push(arguments[i]);
}
return this.connect.apply(this,args);
};
this.connectOnce=3Dfunction(){
var ao=3DinterpolateArgs(arguments,true);
ao.once=3Dtrue;
return this.connect(ao);
};
this.connectRunOnce=3Dfunction(){
var ao=3DinterpolateArgs(arguments,true);
ao.maxCalls=3D1;
return this.connect(ao);
};
this._kwConnectImpl=3Dfunction(_309,_30a){
var fn=3D(_30a)?"disconnect":"connect";
if(typeof _309["srcFunc"]=3D=3D"function"){
_309.srcObj=3D_309["srcObj"]||dj_global;
var _30c=3Ddojo.lang.nameAnonFunc(_309.srcFunc,_309.srcObj,true);
_309.srcFunc=3D_30c;
}
if(typeof _309["adviceFunc"]=3D=3D"function"){
_309.adviceObj=3D_309["adviceObj"]||dj_global;
var _30c=3Ddojo.lang.nameAnonFunc(_309.adviceFunc,_309.adviceObj,true);
_309.adviceFunc=3D_30c;
}
_309.srcObj=3D_309["srcObj"]||dj_global;
_309.adviceObj=3D_309["adviceObj"]||_309["targetObj"]||dj_global;
_309.adviceFunc=3D_309["adviceFunc"]||_309["targetFunc"];
return dojo.event[fn](_309);
};
this.kwConnect=3Dfunction(_30d){
return this._kwConnectImpl(_30d,false);
};
this.disconnect=3Dfunction(){
if(arguments.length=3D=3D1){
var ao=3Darguments[0];
}else{
var ao=3DinterpolateArgs(arguments,true);
}
if(!ao.adviceFunc){
return;
}
if(dojo.lang.isString(ao.srcFunc)&&(ao.srcFunc.toLowerCase()=3D=3D"onkey"=
)){
if(dojo.render.html.ie){
ao.srcFunc=3D"onkeydown";
this.disconnect(ao);
}
ao.srcFunc=3D"onkeypress";
}
if(!ao.srcObj[ao.srcFunc]){
return null;
}
var =
mjp=3Ddojo.event.MethodJoinPoint.getForMethod(ao.srcObj,ao.srcFunc,true);=

mjp.removeAdvice(ao.adviceObj,ao.adviceFunc,ao.adviceType,ao.once);
return mjp;
};
this.kwDisconnect=3Dfunction(_310){
return this._kwConnectImpl(_310,true);
};
};
dojo.event.MethodInvocation=3Dfunction(_311,obj,args){
this.jp_=3D_311;
this.object=3Dobj;
this.args=3D[];
for(var x=3D0;x<args.length;x++){
this.args[x]=3Dargs[x];
}
this.around_index=3D-1;
};
dojo.event.MethodInvocation.prototype.proceed=3Dfunction(){
this.around_index++;
if(this.around_index>=3Dthis.jp_.around.length){
return =
this.jp_.object[this.jp_.methodname].apply(this.jp_.object,this.args);
}else{
var ti=3Dthis.jp_.around[this.around_index];
var mobj=3Dti[0]||dj_global;
var meth=3Dti[1];
return mobj[meth].call(mobj,this);
}
};
dojo.event.MethodJoinPoint=3Dfunction(obj,_319){
this.object=3Dobj||dj_global;
this.methodname=3D_319;
this.methodfunc=3Dthis.object[_319];
this.squelch=3Dfalse;
};
dojo.event.MethodJoinPoint.getForMethod=3Dfunction(obj,_31b){
if(!obj){
obj=3Ddj_global;
}
var ofn=3Dobj[_31b];
if(!ofn){
ofn=3Dobj[_31b]=3Dfunction(){
};
if(!obj[_31b]){
dojo.raise("Cannot set do-nothing method on that object "+_31b);
}
}else{
if((typeof =
ofn!=3D"function")&&(!dojo.lang.isFunction(ofn))&&(!dojo.lang.isAlien(ofn=
))){
return null;
}
}
var _31d=3D_31b+"$joinpoint";
var _31e=3D_31b+"$joinpoint$method";
var _31f=3Dobj[_31d];
if(!_31f){
var _320=3Dfalse;
if(dojo.event["browser"]){
if((obj["attachEvent"])||(obj["nodeType"])||(obj["addEventListener"])){
_320=3Dtrue;
dojo.event.browser.addClobberNodeAttrs(obj,[_31d,_31e,_31b]);
}
}
var _321=3Dofn.length;
obj[_31e]=3Dofn;
_31f=3Dobj[_31d]=3Dnew dojo.event.MethodJoinPoint(obj,_31e);
if(!_320){
obj[_31b]=3Dfunction(){
return _31f.run.apply(_31f,arguments);
};
}else{
obj[_31b]=3Dfunction(){
var args=3D[];
if(!arguments.length){
var evt=3Dnull;
try{
if(obj.ownerDocument){
evt=3Dobj.ownerDocument.parentWindow.event;
}else{
if(obj.documentElement){
evt=3Dobj.documentElement.ownerDocument.parentWindow.event;
}else{
if(obj.event){
evt=3Dobj.event;
}else{
evt=3Dwindow.event;
}
}
}
}
catch(e){
evt=3Dwindow.event;
}
if(evt){
args.push(dojo.event.browser.fixEvent(evt,this));
}
}else{
for(var x=3D0;x<arguments.length;x++){
if((x=3D=3D0)&&(dojo.event.browser.isEvent(arguments[x]))){
args.push(dojo.event.browser.fixEvent(arguments[x],this));
}else{
args.push(arguments[x]);
}
}
}
return _31f.run.apply(_31f,args);
};
}
obj[_31b].__preJoinArity=3D_321;
}
return _31f;
};
dojo.lang.extend(dojo.event.MethodJoinPoint,{squelch:false,unintercept:fu=
nction(){
this.object[this.methodname]=3Dthis.methodfunc;
this.before=3D[];
this.after=3D[];
this.around=3D[];
},disconnect:dojo.lang.forward("unintercept"),run:function(){
var obj=3Dthis.object||dj_global;
var args=3Darguments;
var _327=3D[];
for(var x=3D0;x<args.length;x++){
_327[x]=3Dargs[x];
}
var _329=3Dfunction(marr){
if(!marr){
dojo.debug("Null argument to unrollAdvice()");
return;
}
var _32b=3Dmarr[0]||dj_global;
var _32c=3Dmarr[1];
if(!_32b[_32c]){
dojo.raise("function \""+_32c+"\" does not exist on \""+_32b+"\"");
}
var _32d=3Dmarr[2]||dj_global;
var _32e=3Dmarr[3];
var msg=3Dmarr[6];
var _330=3Dmarr[7];
if(_330>-1){
if(_330=3D=3D0){
return;
}
marr[7]--;
}
var _331;
var to=3D{args:[],jp_:this,object:obj,proceed:function(){
return _32b[_32c].apply(_32b,to.args);
}};
to.args=3D_327;
var _333=3DparseInt(marr[4]);
var _334=3D((!isNaN(_333))&&(marr[4]!=3D=3Dnull)&&(typeof =
marr[4]!=3D"undefined"));
if(marr[5]){
var rate=3DparseInt(marr[5]);
var cur=3Dnew Date();
var _337=3Dfalse;
if((marr["last"])&&((cur-marr.last)<=3Drate)){
if(dojo.event._canTimeout){
if(marr["delayTimer"]){
clearTimeout(marr.delayTimer);
}
var tod=3DparseInt(rate*2);
var mcpy=3Ddojo.lang.shallowCopy(marr);
marr.delayTimer=3DsetTimeout(function(){
mcpy[5]=3D0;
_329(mcpy);
},tod);
}
return;
}else{
marr.last=3Dcur;
}
}
if(_32e){
_32d[_32e].call(_32d,to);
}else{
if((_334)&&((dojo.render.html)||(dojo.render.svg))){
dj_global["setTimeout"](function(){
if(msg){
_32b[_32c].call(_32b,to);
}else{
_32b[_32c].apply(_32b,args);
}
},_333);
}else{
if(msg){
_32b[_32c].call(_32b,to);
}else{
_32b[_32c].apply(_32b,args);
}
}
}
};
var _33a=3Dfunction(){
if(this.squelch){
try{
return _329.apply(this,arguments);
}
catch(e){
dojo.debug(e);
}
}else{
return _329.apply(this,arguments);
}
};
if((this["before"])&&(this.before.length>0)){
dojo.lang.forEach(this.before.concat(new Array()),_33a);
}
var _33b;
try{
if((this["around"])&&(this.around.length>0)){
var mi=3Dnew dojo.event.MethodInvocation(this,obj,args);
_33b=3Dmi.proceed();
}else{
if(this.methodfunc){
_33b=3Dthis.object[this.methodname].apply(this.object,args);
}
}
}
catch(e){
if(!this.squelch){
dojo.debug(e,"when calling",this.methodname,"on",this.object,"with =
arguments",args);
dojo.raise(e);
}
}
if((this["after"])&&(this.after.length>0)){
dojo.lang.forEach(this.after.concat(new Array()),_33a);
}
return (this.methodfunc)?_33b:null;
},getArr:function(kind){
var type=3D"after";
if((typeof kind=3D=3D"string")&&(kind.indexOf("before")!=3D-1)){
type=3D"before";
}else{
if(kind=3D=3D"around"){
type=3D"around";
}
}
if(!this[type]){
this[type]=3D[];
}
return this[type];
},kwAddAdvice:function(args){
this.addAdvice(args["adviceObj"],args["adviceFunc"],args["aroundObj"],arg=
s["aroundFunc"],args["adviceType"],args["precedence"],args["once"],args["=
delay"],args["rate"],args["adviceMsg"],args["maxCalls"]);
},addAdvice:function(_340,_341,_342,_343,_344,_345,once,_347,rate,_349,_3=
4a){
var arr=3Dthis.getArr(_344);
if(!arr){
dojo.raise("bad this: "+this);
}
var ao=3D[_340,_341,_342,_343,_347,rate,_349,_34a];
if(once){
if(this.hasAdvice(_340,_341,_344,arr)>=3D0){
return;
}
}
if(_345=3D=3D"first"){
arr.unshift(ao);
}else{
arr.push(ao);
}
},hasAdvice:function(_34d,_34e,_34f,arr){
if(!arr){
arr=3Dthis.getArr(_34f);
}
var ind=3D-1;
for(var x=3D0;x<arr.length;x++){
var aao=3D(typeof _34e=3D=3D"object")?(new =
String(_34e)).toString():_34e;
var a1o=3D(typeof arr[x][1]=3D=3D"object")?(new =
String(arr[x][1])).toString():arr[x][1];
if((arr[x][0]=3D=3D_34d)&&(a1o=3D=3Daao)){
ind=3Dx;
}
}
return ind;
},removeAdvice:function(_355,_356,_357,once){
var arr=3Dthis.getArr(_357);
var ind=3Dthis.hasAdvice(_355,_356,_357,arr);
if(ind=3D=3D-1){
return false;
}
while(ind!=3D-1){
arr.splice(ind,1);
if(once){
break;
}
ind=3Dthis.hasAdvice(_355,_356,_357,arr);
}
return true;
}});
dojo.provide("dojo.event.topic");
dojo.event.topic=3Dnew function(){
this.topics=3D{};
this.getTopic=3Dfunction(_35b){
if(!this.topics[_35b]){
this.topics[_35b]=3Dnew this.TopicImpl(_35b);
}
return this.topics[_35b];
};
this.registerPublisher=3Dfunction(_35c,obj,_35e){
var _35c=3Dthis.getTopic(_35c);
_35c.registerPublisher(obj,_35e);
};
this.subscribe=3Dfunction(_35f,obj,_361){
var _35f=3Dthis.getTopic(_35f);
_35f.subscribe(obj,_361);
};
this.unsubscribe=3Dfunction(_362,obj,_364){
var _362=3Dthis.getTopic(_362);
_362.unsubscribe(obj,_364);
};
this.destroy=3Dfunction(_365){
this.getTopic(_365).destroy();
delete this.topics[_365];
};
this.publishApply=3Dfunction(_366,args){
var _366=3Dthis.getTopic(_366);
_366.sendMessage.apply(_366,args);
};
this.publish=3Dfunction(_368,_369){
var _368=3Dthis.getTopic(_368);
var args=3D[];
for(var x=3D1;x<arguments.length;x++){
args.push(arguments[x]);
}
_368.sendMessage.apply(_368,args);
};
};
dojo.event.topic.TopicImpl=3Dfunction(_36c){
this.topicName=3D_36c;
this.subscribe=3Dfunction(_36d,_36e){
var tf=3D_36e||_36d;
var to=3D(!_36e)?dj_global:_36d;
return =
dojo.event.kwConnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,advi=
ceFunc:tf});
};
this.unsubscribe=3Dfunction(_371,_372){
var tf=3D(!_372)?_371:_372;
var to=3D(!_372)?null:_371;
return =
dojo.event.kwDisconnect({srcObj:this,srcFunc:"sendMessage",adviceObj:to,a=
dviceFunc:tf});
};
this._getJoinPoint=3Dfunction(){
return dojo.event.MethodJoinPoint.getForMethod(this,"sendMessage");
};
this.setSquelch=3Dfunction(_375){
this._getJoinPoint().squelch=3D_375;
};
this.destroy=3Dfunction(){
this._getJoinPoint().disconnect();
};
this.registerPublisher=3Dfunction(_376,_377){
dojo.event.connect(_376,_377,this,"sendMessage");
};
this.sendMessage=3Dfunction(_378){
};
};
dojo.provide("dojo.event.browser");
dojo._ie_clobber=3Dnew function(){
this.clobberNodes=3D[];
function nukeProp(node,prop){
try{
node[prop]=3Dnull;
}
catch(e){
}
try{
delete node[prop];
}
catch(e){
}
try{
node.removeAttribute(prop);
}
catch(e){
}
}
this.clobber=3Dfunction(_37b){
var na;
var tna;
if(_37b){
tna=3D_37b.all||_37b.getElementsByTagName("*");
na=3D[_37b];
for(var x=3D0;x<tna.length;x++){
if(tna[x]["__doClobber__"]){
na.push(tna[x]);
}
}
}else{
try{
window.onload=3Dnull;
}
catch(e){
}
na=3D(this.clobberNodes.length)?this.clobberNodes:document.all;
}
tna=3Dnull;
var _37f=3D{};
for(var i=3Dna.length-1;i>=3D0;i=3Di-1){
var el=3Dna[i];
try{
if(el&&el["__clobberAttrs__"]){
for(var j=3D0;j<el.__clobberAttrs__.length;j++){
nukeProp(el,el.__clobberAttrs__[j]);
}
nukeProp(el,"__clobberAttrs__");
nukeProp(el,"__doClobber__");
}
}
catch(e){
}
}
na=3Dnull;
};
};
if(dojo.render.html.ie){
dojo.addOnUnload(function(){
dojo._ie_clobber.clobber();
try{
if((dojo["widget"])&&(dojo.widget["manager"])){
dojo.widget.manager.destroyAll();
}
}
catch(e){
}
if(dojo.widget){
for(var name in dojo.widget._templateCache){
if(dojo.widget._templateCache[name].node){
dojo.dom.destroyNode(dojo.widget._templateCache[name].node);
dojo.widget._templateCache[name].node=3Dnull;
delete dojo.widget._templateCache[name].node;
}
}
}
try{
window.onload=3Dnull;
}
catch(e){
}
try{
window.onunload=3Dnull;
}
catch(e){
}
dojo._ie_clobber.clobberNodes=3D[];
});
}
dojo.event.browser=3Dnew function(){
var _384=3D0;
this.normalizedEventName=3Dfunction(_385){
switch(_385){
case "CheckboxStateChange":
case "DOMAttrModified":
case "DOMMenuItemActive":
case "DOMMenuItemInactive":
case "DOMMouseScroll":
case "DOMNodeInserted":
case "DOMNodeRemoved":
case "RadioStateChange":
return _385;
break;
default:
var lcn=3D_385.toLowerCase();
return (lcn.indexOf("on")=3D=3D0)?lcn.substr(2):lcn;
break;
}
};
this.clean=3Dfunction(node){
if(dojo.render.html.ie){
dojo._ie_clobber.clobber(node);
}
};
this.addClobberNode=3Dfunction(node){
if(!dojo.render.html.ie){
return;
}
if(!node["__doClobber__"]){
node.__doClobber__=3Dtrue;
dojo._ie_clobber.clobberNodes.push(node);
node.__clobberAttrs__=3D[];
}
};
this.addClobberNodeAttrs=3Dfunction(node,_38a){
if(!dojo.render.html.ie){
return;
}
this.addClobberNode(node);
for(var x=3D0;x<_38a.length;x++){
node.__clobberAttrs__.push(_38a[x]);
}
};
this.removeListener=3Dfunction(node,_38d,fp,_38f){
if(!_38f){
var _38f=3Dfalse;
}
_38d=3Ddojo.event.browser.normalizedEventName(_38d);
if(_38d=3D=3D"key"){
if(dojo.render.html.ie){
this.removeListener(node,"onkeydown",fp,_38f);
}
_38d=3D"keypress";
}
if(node.removeEventListener){
node.removeEventListener(_38d,fp,_38f);
}
};
this.addListener=3Dfunction(node,_391,fp,_393,_394){
if(!node){
return;
}
if(!_393){
var _393=3Dfalse;
}
_391=3Ddojo.event.browser.normalizedEventName(_391);
if(_391=3D=3D"key"){
if(dojo.render.html.ie){
this.addListener(node,"onkeydown",fp,_393,_394);
}
_391=3D"keypress";
}
if(!_394){
var _395=3Dfunction(evt){
if(!evt){
evt=3Dwindow.event;
}
var ret=3Dfp(dojo.event.browser.fixEvent(evt,this));
if(_393){
dojo.event.browser.stopEvent(evt);
}
return ret;
};
}else{
_395=3Dfp;
}
if(node.addEventListener){
node.addEventListener(_391,_395,_393);
return _395;
}else{
_391=3D"on"+_391;
if(typeof node[_391]=3D=3D"function"){
var _398=3Dnode[_391];
node[_391]=3Dfunction(e){
_398(e);
return _395(e);
};
}else{
node[_391]=3D_395;
}
if(dojo.render.html.ie){
this.addClobberNodeAttrs(node,[_391]);
}
return _395;
}
};
this.isEvent=3Dfunction(obj){
return (typeof obj!=3D"undefined")&&(obj)&&(typeof =
Event!=3D"undefined")&&(obj.eventPhase);
};
this.currentEvent=3Dnull;
this.callListener=3Dfunction(_39b,_39c){
if(typeof _39b!=3D"function"){
dojo.raise("listener not a function: "+_39b);
}
dojo.event.browser.currentEvent.currentTarget=3D_39c;
return _39b.call(_39c,dojo.event.browser.currentEvent);
};
this._stopPropagation=3Dfunction(){
dojo.event.browser.currentEvent.cancelBubble=3Dtrue;
};
this._preventDefault=3Dfunction(){
dojo.event.browser.currentEvent.returnValue=3Dfalse;
};
this.keys=3D{KEY_BACKSPACE:8,KEY_TAB:9,KEY_CLEAR:12,KEY_ENTER:13,KEY_SHIF=
T:16,KEY_CTRL:17,KEY_ALT:18,KEY_PAUSE:19,KEY_CAPS_LOCK:20,KEY_ESCAPE:27,K=
EY_SPACE:32,KEY_PAGE_UP:33,KEY_PAGE_DOWN:34,KEY_END:35,KEY_HOME:36,KEY_LE=
FT_ARROW:37,KEY_UP_ARROW:38,KEY_RIGHT_ARROW:39,KEY_DOWN_ARROW:40,KEY_INSE=
RT:45,KEY_DELETE:46,KEY_HELP:47,KEY_LEFT_WINDOW:91,KEY_RIGHT_WINDOW:92,KE=
Y_SELECT:93,KEY_NUMPAD_0:96,KEY_NUMPAD_1:97,KEY_NUMPAD_2:98,KEY_NUMPAD_3:=
99,KEY_NUMPAD_4:100,KEY_NUMPAD_5:101,KEY_NUMPAD_6:102,KEY_NUMPAD_7:103,KE=
Y_NUMPAD_8:104,KEY_NUMPAD_9:105,KEY_NUMPAD_MULTIPLY:106,KEY_NUMPAD_PLUS:1=
07,KEY_NUMPAD_ENTER:108,KEY_NUMPAD_MINUS:109,KEY_NUMPAD_PERIOD:110,KEY_NU=
MPAD_DIVIDE:111,KEY_F1:112,KEY_F2:113,KEY_F3:114,KEY_F4:115,KEY_F5:116,KE=
Y_F6:117,KEY_F7:118,KEY_F8:119,KEY_F9:120,KEY_F10:121,KEY_F11:122,KEY_F12=
:123,KEY_F13:124,KEY_F14:125,KEY_F15:126,KEY_NUM_LOCK:144,KEY_SCROLL_LOCK=
:145};
this.revKeys=3D[];
for(var key in this.keys){
this.revKeys[this.keys[key]]=3Dkey;
}
this.fixEvent=3Dfunction(evt,_39f){
if(!evt){
if(window["event"]){
evt=3Dwindow.event;
}
}
if((evt["type"])&&(evt["type"].indexOf("key")=3D=3D0)){
evt.keys=3Dthis.revKeys;
for(var key in this.keys){
evt[key]=3Dthis.keys[key];
}
if(evt["type"]=3D=3D"keydown"&&dojo.render.html.ie){
switch(evt.keyCode){
case evt.KEY_SHIFT:
case evt.KEY_CTRL:
case evt.KEY_ALT:
case evt.KEY_CAPS_LOCK:
case evt.KEY_LEFT_WINDOW:
case evt.KEY_RIGHT_WINDOW:
case evt.KEY_SELECT:
case evt.KEY_NUM_LOCK:
case evt.KEY_SCROLL_LOCK:
case evt.KEY_NUMPAD_0:
case evt.KEY_NUMPAD_1:
case evt.KEY_NUMPAD_2:
case evt.KEY_NUMPAD_3:
case evt.KEY_NUMPAD_4:
case evt.KEY_NUMPAD_5:
case evt.KEY_NUMPAD_6:
case evt.KEY_NUMPAD_7:
case evt.KEY_NUMPAD_8:
case evt.KEY_NUMPAD_9:
case evt.KEY_NUMPAD_PERIOD:
break;
case evt.KEY_NUMPAD_MULTIPLY:
case evt.KEY_NUMPAD_PLUS:
case evt.KEY_NUMPAD_ENTER:
case evt.KEY_NUMPAD_MINUS:
case evt.KEY_NUMPAD_DIVIDE:
break;
case evt.KEY_PAUSE:
case evt.KEY_TAB:
case evt.KEY_BACKSPACE:
case evt.KEY_ENTER:
case evt.KEY_ESCAPE:
case evt.KEY_PAGE_UP:
case evt.KEY_PAGE_DOWN:
case evt.KEY_END:
case evt.KEY_HOME:
case evt.KEY_LEFT_ARROW:
case evt.KEY_UP_ARROW:
case evt.KEY_RIGHT_ARROW:
case evt.KEY_DOWN_ARROW:
case evt.KEY_INSERT:
case evt.KEY_DELETE:
case evt.KEY_F1:
case evt.KEY_F2:
case evt.KEY_F3:
case evt.KEY_F4:
case evt.KEY_F5:
case evt.KEY_F6:
case evt.KEY_F7:
case evt.KEY_F8:
case evt.KEY_F9:
case evt.KEY_F10:
case evt.KEY_F11:
case evt.KEY_F12:
case evt.KEY_F12:
case evt.KEY_F13:
case evt.KEY_F14:
case evt.KEY_F15:
case evt.KEY_CLEAR:
case evt.KEY_HELP:
evt.key=3Devt.keyCode;
break;
default:
if(evt.ctrlKey||evt.altKey){
var _3a1=3Devt.keyCode;
if(_3a1>=3D65&&_3a1<=3D90&&evt.shiftKey=3D=3Dfalse){
_3a1+=3D32;
}
if(_3a1>=3D1&&_3a1<=3D26&&evt.ctrlKey){
_3a1+=3D96;
}
evt.key=3DString.fromCharCode(_3a1);
}
}
}else{
if(evt["type"]=3D=3D"keypress"){
if(dojo.render.html.opera){
if(evt.which=3D=3D0){
evt.key=3Devt.keyCode;
}else{
if(evt.which>0){
switch(evt.which){
case evt.KEY_SHIFT:
case evt.KEY_CTRL:
case evt.KEY_ALT:
case evt.KEY_CAPS_LOCK:
case evt.KEY_NUM_LOCK:
case evt.KEY_SCROLL_LOCK:
break;
case evt.KEY_PAUSE:
case evt.KEY_TAB:
case evt.KEY_BACKSPACE:
case evt.KEY_ENTER:
case evt.KEY_ESCAPE:
evt.key=3Devt.which;
break;
default:
var _3a1=3Devt.which;
if((evt.ctrlKey||evt.altKey||evt.metaKey)&&(evt.which>=3D65&&evt.which<=3D=
90&&evt.shiftKey=3D=3Dfalse)){
_3a1+=3D32;
}
evt.key=3DString.fromCharCode(_3a1);
}
}
}
}else{
if(dojo.render.html.ie){
if(!evt.ctrlKey&&!evt.altKey&&evt.keyCode>=3Devt.KEY_SPACE){
evt.key=3DString.fromCharCode(evt.keyCode);
}
}else{
if(dojo.render.html.safari){
switch(evt.keyCode){
case 25:
evt.key=3Devt.KEY_TAB;
evt.shift=3Dtrue;
break;
case 63232:
evt.key=3Devt.KEY_UP_ARROW;
break;
case 63233:
evt.key=3Devt.KEY_DOWN_ARROW;
break;
case 63234:
evt.key=3Devt.KEY_LEFT_ARROW;
break;
case 63235:
evt.key=3Devt.KEY_RIGHT_ARROW;
break;
case 63236:
evt.key=3Devt.KEY_F1;
break;
case 63237:
evt.key=3Devt.KEY_F2;
break;
case 63238:
evt.key=3Devt.KEY_F3;
break;
case 63239:
evt.key=3Devt.KEY_F4;
break;
case 63240:
evt.key=3Devt.KEY_F5;
break;
case 63241:
evt.key=3Devt.KEY_F6;
break;
case 63242:
evt.key=3Devt.KEY_F7;
break;
case 63243:
evt.key=3Devt.KEY_F8;
break;
case 63244:
evt.key=3Devt.KEY_F9;
break;
case 63245:
evt.key=3Devt.KEY_F10;
break;
case 63246:
evt.key=3Devt.KEY_F11;
break;
case 63247:
evt.key=3Devt.KEY_F12;
break;
case 63250:
evt.key=3Devt.KEY_PAUSE;
break;
case 63272:
evt.key=3Devt.KEY_DELETE;
break;
case 63273:
evt.key=3Devt.KEY_HOME;
break;
case 63275:
evt.key=3Devt.KEY_END;
break;
case 63276:
evt.key=3Devt.KEY_PAGE_UP;
break;
case 63277:
evt.key=3Devt.KEY_PAGE_DOWN;
break;
case 63302:
evt.key=3Devt.KEY_INSERT;
break;
case 63248:
case 63249:
case 63289:
break;
default:
evt.key=3Devt.charCode>=3Devt.KEY_SPACE?String.fromCharCode(evt.charCode)=
:evt.keyCode;
}
}else{
evt.key=3Devt.charCode>0?String.fromCharCode(evt.charCode):evt.keyCode;
}
}
}
}
}
}
if(dojo.render.html.ie){
if(!evt.target){
evt.target=3Devt.srcElement;
}
if(!evt.currentTarget){
evt.currentTarget=3D(_39f?_39f:evt.srcElement);
}
if(!evt.layerX){
evt.layerX=3Devt.offsetX;
}
if(!evt.layerY){
evt.layerY=3Devt.offsetY;
}
var =
doc=3D(evt.srcElement&&evt.srcElement.ownerDocument)?evt.srcElement.owner=
Document:document;
var =
_3a3=3D((dojo.render.html.ie55)||(doc["compatMode"]=3D=3D"BackCompat"))?d=
oc.body:doc.documentElement;
if(!evt.pageX){
evt.pageX=3Devt.clientX+(_3a3.scrollLeft||0);
}
if(!evt.pageY){
evt.pageY=3Devt.clientY+(_3a3.scrollTop||0);
}
if(evt.type=3D=3D"mouseover"){
evt.relatedTarget=3Devt.fromElement;
}
if(evt.type=3D=3D"mouseout"){
evt.relatedTarget=3Devt.toElement;
}
this.currentEvent=3Devt;
evt.callListener=3Dthis.callListener;
evt.stopPropagation=3Dthis._stopPropagation;
evt.preventDefault=3Dthis._preventDefault;
}
return evt;
};
this.stopEvent=3Dfunction(evt){
if(window.event){
evt.cancelBubble=3Dtrue;
evt.returnValue=3Dfalse;
}else{
evt.preventDefault();
evt.stopPropagation();
}
};
};
dojo.kwCompoundRequire({common:["dojo.event.common","dojo.event.topic"],b=
rowser:["dojo.event.browser"],dashboard:["dojo.event.browser"]});
dojo.provide("dojo.event.*");
dojo.provide("dojo.gfx.color");
dojo.gfx.color.Color=3Dfunction(r,g,b,a){
if(dojo.lang.isArray(r)){
this.r=3Dr[0];
this.g=3Dr[1];
this.b=3Dr[2];
this.a=3Dr[3]||1;
}else{
if(dojo.lang.isString(r)){
var rgb=3Ddojo.gfx.color.extractRGB(r);
this.r=3Drgb[0];
this.g=3Drgb[1];
this.b=3Drgb[2];
this.a=3Dg||1;
}else{
if(r instanceof dojo.gfx.color.Color){
this.r=3Dr.r;
this.b=3Dr.b;
this.g=3Dr.g;
this.a=3Dr.a;
}else{
this.r=3Dr;
this.g=3Dg;
this.b=3Db;
this.a=3Da;
}
}
}
};
dojo.gfx.color.Color.fromArray=3Dfunction(arr){
return new dojo.gfx.color.Color(arr[0],arr[1],arr[2],arr[3]);
};
dojo.extend(dojo.gfx.color.Color,{toRgb:function(_3ab){
if(_3ab){
return this.toRgba();
}else{
return [this.r,this.g,this.b];
}
},toRgba:function(){
return [this.r,this.g,this.b,this.a];
},toHex:function(){
return dojo.gfx.color.rgb2hex(this.toRgb());
},toCss:function(){
return "rgb("+this.toRgb().join()+")";
},toString:function(){
return this.toHex();
},blend:function(_3ac,_3ad){
var rgb=3Dnull;
if(dojo.lang.isArray(_3ac)){
rgb=3D_3ac;
}else{
if(_3ac instanceof dojo.gfx.color.Color){
rgb=3D_3ac.toRgb();
}else{
rgb=3Dnew dojo.gfx.color.Color(_3ac).toRgb();
}
}
return dojo.gfx.color.blend(this.toRgb(),rgb,_3ad);
}});
dojo.gfx.color.named=3D{white:[255,255,255],black:[0,0,0],red:[255,0,0],g=
reen:[0,255,0],lime:[0,255,0],blue:[0,0,255],navy:[0,0,128],gray:[128,128=
,128],silver:[192,192,192]};
dojo.gfx.color.blend=3Dfunction(a,b,_3b1){
if(typeof a=3D=3D"string"){
return dojo.gfx.color.blendHex(a,b,_3b1);
}
if(!_3b1){
_3b1=3D0;
}
_3b1=3DMath.min(Math.max(-1,_3b1),1);
_3b1=3D((_3b1+1)/2);
var c=3D[];
for(var x=3D0;x<3;x++){
c[x]=3DparseInt(b[x]+((a[x]-b[x])*_3b1));
}
return c;
};
dojo.gfx.color.blendHex=3Dfunction(a,b,_3b6){
return =
dojo.gfx.color.rgb2hex(dojo.gfx.color.blend(dojo.gfx.color.hex2rgb(a),doj=
o.gfx.color.hex2rgb(b),_3b6));
};
dojo.gfx.color.extractRGB=3Dfunction(_3b7){
var hex=3D"0123456789abcdef";
_3b7=3D_3b7.toLowerCase();
if(_3b7.indexOf("rgb")=3D=3D0){
var _3b9=3D_3b7.match(/rgba*\((\d+), *(\d+), *(\d+)/i);
var ret=3D_3b9.splice(1,3);
return ret;
}else{
var _3bb=3Ddojo.gfx.color.hex2rgb(_3b7);
if(_3bb){
return _3bb;
}else{
return dojo.gfx.color.named[_3b7]||[255,255,255];
}
}
};
dojo.gfx.color.hex2rgb=3Dfunction(hex){
var _3bd=3D"0123456789ABCDEF";
var rgb=3Dnew Array(3);
if(hex.indexOf("#")=3D=3D0){
hex=3Dhex.substring(1);
}
hex=3Dhex.toUpperCase();
if(hex.replace(new RegExp("["+_3bd+"]","g"),"")!=3D""){
return null;
}
if(hex.length=3D=3D3){
rgb[0]=3Dhex.charAt(0)+hex.charAt(0);
rgb[1]=3Dhex.charAt(1)+hex.charAt(1);
rgb[2]=3Dhex.charAt(2)+hex.charAt(2);
}else{
rgb[0]=3Dhex.substring(0,2);
rgb[1]=3Dhex.substring(2,4);
rgb[2]=3Dhex.substring(4);
}
for(var i=3D0;i<rgb.length;i++){
rgb[i]=3D_3bd.indexOf(rgb[i].charAt(0))*16+_3bd.indexOf(rgb[i].charAt(1))=
;
}
return rgb;
};
dojo.gfx.color.rgb2hex=3Dfunction(r,g,b){
if(dojo.lang.isArray(r)){
g=3Dr[1]||0;
b=3Dr[2]||0;
r=3Dr[0]||0;
}
var ret=3Ddojo.lang.map([r,g,b],function(x){
x=3Dnew Number(x);
var s=3Dx.toString(16);
while(s.length<2){
s=3D"0"+s;
}
return s;
});
ret.unshift("#");
return ret.join("");
};
dojo.provide("dojo.lfx.Animation");
dojo.lfx.Line=3Dfunction(_3c6,end){
this.start=3D_3c6;
this.end=3Dend;
if(dojo.lang.isArray(_3c6)){
var diff=3D[];
dojo.lang.forEach(this.start,function(s,i){
diff[i]=3Dthis.end[i]-s;
},this);
this.getValue=3Dfunction(n){
var res=3D[];
dojo.lang.forEach(this.start,function(s,i){
res[i]=3D(diff[i]*n)+s;
},this);
return res;
};
}else{
var diff=3Dend-_3c6;
this.getValue=3Dfunction(n){
return (diff*n)+this.start;
};
}
};
if((dojo.render.html.khtml)&&(!dojo.render.html.safari)){
dojo.lfx.easeDefault=3Dfunction(n){
return =
(parseFloat("0.5")+((Math.sin((n+parseFloat("1.5"))*Math.PI))/2));
};
}else{
dojo.lfx.easeDefault=3Dfunction(n){
return (0.5+((Math.sin((n+1.5)*Math.PI))/2));
};
}
dojo.lfx.easeIn=3Dfunction(n){
return Math.pow(n,3);
};
dojo.lfx.easeOut=3Dfunction(n){
return (1-Math.pow(1-n,3));
};
dojo.lfx.easeInOut=3Dfunction(n){
return ((3*Math.pow(n,2))-(2*Math.pow(n,3)));
};
dojo.lfx.IAnimation=3Dfunction(){
};
dojo.lang.extend(dojo.lfx.IAnimation,{curve:null,duration:1000,easing:nul=
l,repeatCount:0,rate:10,handler:null,beforeBegin:null,onBegin:null,onAnim=
ate:null,onEnd:null,onPlay:null,onPause:null,onStop:null,play:null,pause:=
null,stop:null,connect:function(evt,_3d6,_3d7){
if(!_3d7){
_3d7=3D_3d6;
_3d6=3Dthis;
}
_3d7=3Ddojo.lang.hitch(_3d6,_3d7);
var _3d8=3Dthis[evt]||function(){
};
this[evt]=3Dfunction(){
var ret=3D_3d8.apply(this,arguments);
_3d7.apply(this,arguments);
return ret;
};
return this;
},fire:function(evt,args){
if(this[evt]){
this[evt].apply(this,(args||[]));
}
return this;
},repeat:function(_3dc){
this.repeatCount=3D_3dc;
return this;
},_active:false,_paused:false});
dojo.lfx.Animation=3Dfunction(_3dd,_3de,_3df,_3e0,_3e1,rate){
dojo.lfx.IAnimation.call(this);
if(dojo.lang.isNumber(_3dd)||(!_3dd&&_3de.getValue)){
rate=3D_3e1;
_3e1=3D_3e0;
_3e0=3D_3df;
_3df=3D_3de;
_3de=3D_3dd;
_3dd=3Dnull;
}else{
if(_3dd.getValue||dojo.lang.isArray(_3dd)){
rate=3D_3e0;
_3e1=3D_3df;
_3e0=3D_3de;
_3df=3D_3dd;
_3de=3Dnull;
_3dd=3Dnull;
}
}
if(dojo.lang.isArray(_3df)){
this.curve=3Dnew dojo.lfx.Line(_3df[0],_3df[1]);
}else{
this.curve=3D_3df;
}
if(_3de!=3Dnull&&_3de>0){
this.duration=3D_3de;
}
if(_3e1){
this.repeatCount=3D_3e1;
}
if(rate){
this.rate=3Drate;
}
if(_3dd){
dojo.lang.forEach(["handler","beforeBegin","onBegin","onEnd","onPlay","on=
Stop","onAnimate"],function(item){
if(_3dd[item]){
this.connect(item,_3dd[item]);
}
},this);
}
if(_3e0&&dojo.lang.isFunction(_3e0)){
this.easing=3D_3e0;
}
};
dojo.inherits(dojo.lfx.Animation,dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Animation,{_startTime:null,_endTime:null,_timer=
:null,_percent:0,_startRepeatCount:0,play:function(_3e4,_3e5){
if(_3e5){
clearTimeout(this._timer);
this._active=3Dfalse;
this._paused=3Dfalse;
this._percent=3D0;
}else{
if(this._active&&!this._paused){
return this;
}
}
this.fire("handler",["beforeBegin"]);
this.fire("beforeBegin");
if(_3e4>0){
setTimeout(dojo.lang.hitch(this,function(){
this.play(null,_3e5);
}),_3e4);
return this;
}
this._startTime=3Dnew Date().valueOf();
if(this._paused){
this._startTime-=3D(this.duration*this._percent/100);
}
this._endTime=3Dthis._startTime+this.duration;
this._active=3Dtrue;
this._paused=3Dfalse;
var step=3Dthis._percent/100;
var _3e7=3Dthis.curve.getValue(step);
if(this._percent=3D=3D0){
if(!this._startRepeatCount){
this._startRepeatCount=3Dthis.repeatCount;
}
this.fire("handler",["begin",_3e7]);
this.fire("onBegin",[_3e7]);
}
this.fire("handler",["play",_3e7]);
this.fire("onPlay",[_3e7]);
this._cycle();
return this;
},pause:function(){
clearTimeout(this._timer);
if(!this._active){
return this;
}
this._paused=3Dtrue;
var _3e8=3Dthis.curve.getValue(this._percent/100);
this.fire("handler",["pause",_3e8]);
this.fire("onPause",[_3e8]);
return this;
},gotoPercent:function(pct,_3ea){
clearTimeout(this._timer);
this._active=3Dtrue;
this._paused=3Dtrue;
this._percent=3Dpct;
if(_3ea){
this.play();
}
return this;
},stop:function(_3eb){
clearTimeout(this._timer);
var step=3Dthis._percent/100;
if(_3eb){
step=3D1;
}
var _3ed=3Dthis.curve.getValue(step);
this.fire("handler",["stop",_3ed]);
this.fire("onStop",[_3ed]);
this._active=3Dfalse;
this._paused=3Dfalse;
return this;
},status:function(){
if(this._active){
return this._paused?"paused":"playing";
}else{
return "stopped";
}
return this;
},_cycle:function(){
clearTimeout(this._timer);
if(this._active){
var curr=3Dnew Date().valueOf();
var step=3D(curr-this._startTime)/(this._endTime-this._startTime);
if(step>=3D1){
step=3D1;
this._percent=3D100;
}else{
this._percent=3Dstep*100;
}
if((this.easing)&&(dojo.lang.isFunction(this.easing))){
step=3Dthis.easing(step);
}
var _3f0=3Dthis.curve.getValue(step);
this.fire("handler",["animate",_3f0]);
this.fire("onAnimate",[_3f0]);
if(step<1){
this._timer=3DsetTimeout(dojo.lang.hitch(this,"_cycle"),this.rate);
}else{
this._active=3Dfalse;
this.fire("handler",["end"]);
this.fire("onEnd");
if(this.repeatCount>0){
this.repeatCount--;
this.play(null,true);
}else{
if(this.repeatCount=3D=3D-1){
this.play(null,true);
}else{
if(this._startRepeatCount){
this.repeatCount=3Dthis._startRepeatCount;
this._startRepeatCount=3D0;
}
}
}
}
}
return this;
}});
dojo.lfx.Combine=3Dfunction(_3f1){
dojo.lfx.IAnimation.call(this);
this._anims=3D[];
this._animsEnded=3D0;
var _3f2=3Darguments;
if(_3f2.length=3D=3D1&&(dojo.lang.isArray(_3f2[0])||dojo.lang.isArrayLike=
(_3f2[0]))){
_3f2=3D_3f2[0];
}
dojo.lang.forEach(_3f2,function(anim){
this._anims.push(anim);
anim.connect("onEnd",dojo.lang.hitch(this,"_onAnimsEnded"));
},this);
};
dojo.inherits(dojo.lfx.Combine,dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Combine,{_animsEnded:0,play:function(_3f4,_3f5)=
{
if(!this._anims.length){
return this;
}
this.fire("beforeBegin");
if(_3f4>0){
setTimeout(dojo.lang.hitch(this,function(){
this.play(null,_3f5);
}),_3f4);
return this;
}
if(_3f5||this._anims[0].percent=3D=3D0){
this.fire("onBegin");
}
this.fire("onPlay");
this._animsCall("play",null,_3f5);
return this;
},pause:function(){
this.fire("onPause");
this._animsCall("pause");
return this;
},stop:function(_3f6){
this.fire("onStop");
this._animsCall("stop",_3f6);
return this;
},_onAnimsEnded:function(){
this._animsEnded++;
if(this._animsEnded>=3Dthis._anims.length){
this.fire("onEnd");
}
return this;
},_animsCall:function(_3f7){
var args=3D[];
if(arguments.length>1){
for(var i=3D1;i<arguments.length;i++){
args.push(arguments[i]);
}
}
var _3fa=3Dthis;
dojo.lang.forEach(this._anims,function(anim){
anim[_3f7](args);
},_3fa);
return this;
}});
dojo.lfx.Chain=3Dfunction(_3fc){
dojo.lfx.IAnimation.call(this);
this._anims=3D[];
this._currAnim=3D-1;
var _3fd=3Darguments;
if(_3fd.length=3D=3D1&&(dojo.lang.isArray(_3fd[0])||dojo.lang.isArrayLike=
(_3fd[0]))){
_3fd=3D_3fd[0];
}
var _3fe=3Dthis;
dojo.lang.forEach(_3fd,function(anim,i,_401){
this._anims.push(anim);
if(i<_401.length-1){
anim.connect("onEnd",dojo.lang.hitch(this,"_playNext"));
}else{
anim.connect("onEnd",dojo.lang.hitch(this,function(){
this.fire("onEnd");
}));
}
},this);
};
dojo.inherits(dojo.lfx.Chain,dojo.lfx.IAnimation);
dojo.lang.extend(dojo.lfx.Chain,{_currAnim:-1,play:function(_402,_403){
if(!this._anims.length){
return this;
}
if(_403||!this._anims[this._currAnim]){
this._currAnim=3D0;
}
var _404=3Dthis._anims[this._currAnim];
this.fire("beforeBegin");
if(_402>0){
setTimeout(dojo.lang.hitch(this,function(){
this.play(null,_403);
}),_402);
return this;
}
if(_404){
if(this._currAnim=3D=3D0){
this.fire("handler",["begin",this._currAnim]);
this.fire("onBegin",[this._currAnim]);
}
this.fire("onPlay",[this._currAnim]);
_404.play(null,_403);
}
return this;
},pause:function(){
if(this._anims[this._currAnim]){
this._anims[this._currAnim].pause();
this.fire("onPause",[this._currAnim]);
}
return this;
},playPause:function(){
if(this._anims.length=3D=3D0){
return this;
}
if(this._currAnim=3D=3D-1){
this._currAnim=3D0;
}
var _405=3Dthis._anims[this._currAnim];
if(_405){
if(!_405._active||_405._paused){
this.play();
}else{
this.pause();
}
}
return this;
},stop:function(){
var _406=3Dthis._anims[this._currAnim];
if(_406){
_406.stop();
this.fire("onStop",[this._currAnim]);
}
return _406;
},_playNext:function(){
if(this._currAnim=3D=3D-1||this._anims.length=3D=3D0){
return this;
}
this._currAnim++;
if(this._anims[this._currAnim]){
this._anims[this._currAnim].play(null,true);
}
return this;
}});
dojo.lfx.combine=3Dfunction(_407){
var _408=3Darguments;
if(dojo.lang.isArray(arguments[0])){
_408=3Darguments[0];
}
if(_408.length=3D=3D1){
return _408[0];
}
return new dojo.lfx.Combine(_408);
};
dojo.lfx.chain=3Dfunction(_409){
var _40a=3Darguments;
if(dojo.lang.isArray(arguments[0])){
_40a=3Darguments[0];
}
if(_40a.length=3D=3D1){
return _40a[0];
}
return new dojo.lfx.Chain(_40a);
};
dojo.provide("dojo.html.common");
dojo.lang.mixin(dojo.html,dojo.dom);
dojo.html.body=3Dfunction(){
dojo.deprecated("dojo.html.body() moved to dojo.body()","0.5");
return dojo.body();
};
dojo.html.getEventTarget=3Dfunction(evt){
if(!evt){
evt=3Ddojo.global().event||{};
}
var t=3D(evt.srcElement?evt.srcElement:(evt.target?evt.target:null));
while((t)&&(t.nodeType!=3D1)){
t=3Dt.parentNode;
}
return t;
};
dojo.html.getViewport=3Dfunction(){
var _40d=3Ddojo.global();
var _40e=3Ddojo.doc();
var w=3D0;
var h=3D0;
if(dojo.render.html.mozilla){
w=3D_40e.documentElement.clientWidth;
h=3D_40d.innerHeight;
}else{
if(!dojo.render.html.opera&&_40d.innerWidth){
w=3D_40d.innerWidth;
h=3D_40d.innerHeight;
}else{
if(!dojo.render.html.opera&&dojo.exists(_40e,"documentElement.clientWidth=
")){
var w2=3D_40e.documentElement.clientWidth;
if(!w||w2&&w2<w){
w=3Dw2;
}
h=3D_40e.documentElement.clientHeight;
}else{
if(dojo.body().clientWidth){
w=3Ddojo.body().clientWidth;
h=3Ddojo.body().clientHeight;
}
}
}
}
return {width:w,height:h};
};
dojo.html.getScroll=3Dfunction(){
var _412=3Ddojo.global();
var _413=3Ddojo.doc();
var =
top=3D_412.pageYOffset||_413.documentElement.scrollTop||dojo.body().scrol=
lTop||0;
var =
left=3D_412.pageXOffset||_413.documentElement.scrollLeft||dojo.body().scr=
ollLeft||0;
return {top:top,left:left,offset:{x:left,y:top}};
};
dojo.html.getParentByType=3Dfunction(node,type){
var _418=3Ddojo.doc();
var _419=3Ddojo.byId(node);
type=3Dtype.toLowerCase();
while((_419)&&(_419.nodeName.toLowerCase()!=3Dtype)){
if(_419=3D=3D(_418["body"]||_418["documentElement"])){
return null;
}
_419=3D_419.parentNode;
}
return _419;
};
dojo.html.getAttribute=3Dfunction(node,attr){
node=3Ddojo.byId(node);
if((!node)||(!node.getAttribute)){
return null;
}
var ta=3Dtypeof attr=3D=3D"string"?attr:new String(attr);
var v=3Dnode.getAttribute(ta.toUpperCase());
if((v)&&(typeof v=3D=3D"string")&&(v!=3D"")){
return v;
}
if(v&&v.value){
return v.value;
}
if((node.getAttributeNode)&&(node.getAttributeNode(ta))){
return (node.getAttributeNode(ta)).value;
}else{
if(node.getAttribute(ta)){
return node.getAttribute(ta);
}else{
if(node.getAttribute(ta.toLowerCase())){
return node.getAttribute(ta.toLowerCase());
}
}
}
return null;
};
dojo.html.hasAttribute=3Dfunction(node,attr){
return dojo.html.getAttribute(dojo.byId(node),attr)?true:false;
};
dojo.html.getCursorPosition=3Dfunction(e){
e=3De||dojo.global().event;
var _421=3D{x:0,y:0};
if(e.pageX||e.pageY){
_421.x=3De.pageX;
_421.y=3De.pageY;
}else{
var de=3Ddojo.doc().documentElement;
var db=3Ddojo.body();
_421.x=3De.clientX+((de||db)["scrollLeft"])-((de||db)["clientLeft"]);
_421.y=3De.clientY+((de||db)["scrollTop"])-((de||db)["clientTop"]);
}
return _421;
};
dojo.html.isTag=3Dfunction(node){
node=3Ddojo.byId(node);
if(node&&node.tagName){
for(var i=3D1;i<arguments.length;i++){
if(node.tagName.toLowerCase()=3D=3DString(arguments[i]).toLowerCase()){
return String(arguments[i]).toLowerCase();
}
}
}
return "";
};
if(dojo.render.html.ie&&!dojo.render.html.ie70){
if(window.location.href.substr(0,6).toLowerCase()!=3D"https:"){
(function(){
var _426=3Ddojo.doc().createElement("script");
_426.src=3D"javascript:'dojo.html.createExternalElement=3Dfunction(doc, =
tag){ return doc.createElement(tag); }'";
dojo.doc().getElementsByTagName("head")[0].appendChild(_426);
})();
}
}else{
dojo.html.createExternalElement=3Dfunction(doc,tag){
return doc.createElement(tag);
};
}
dojo.html._callDeprecated=3Dfunction(_429,_42a,args,_42c,_42d){
dojo.deprecated("dojo.html."+_429,"replaced by =
dojo.html."+_42a+"("+(_42c?"node, {"+_42c+": =
"+_42c+"}":"")+")"+(_42d?"."+_42d:""),"0.5");
var _42e=3D[];
if(_42c){
var _42f=3D{};
_42f[_42c]=3Dargs[1];
_42e.push(args[0]);
_42e.push(_42f);
}else{
_42e=3Dargs;
}
var ret=3Ddojo.html[_42a].apply(dojo.html,args);
if(_42d){
return ret[_42d];
}else{
return ret;
}
};
dojo.html.getViewportWidth=3Dfunction(){
return =
dojo.html._callDeprecated("getViewportWidth","getViewport",arguments,null=
,"width");
};
dojo.html.getViewportHeight=3Dfunction(){
return =
dojo.html._callDeprecated("getViewportHeight","getViewport",arguments,nul=
l,"height");
};
dojo.html.getViewportSize=3Dfunction(){
return =
dojo.html._callDeprecated("getViewportSize","getViewport",arguments);
};
dojo.html.getScrollTop=3Dfunction(){
return =
dojo.html._callDeprecated("getScrollTop","getScroll",arguments,null,"top"=
);
};
dojo.html.getScrollLeft=3Dfunction(){
return =
dojo.html._callDeprecated("getScrollLeft","getScroll",arguments,null,"lef=
t");
};
dojo.html.getScrollOffset=3Dfunction(){
return =
dojo.html._callDeprecated("getScrollOffset","getScroll",arguments,null,"o=
ffset");
};
dojo.provide("dojo.uri.Uri");
dojo.uri=3Dnew function(){
this.dojoUri=3Dfunction(uri){
return new dojo.uri.Uri(dojo.hostenv.getBaseScriptUri(),uri);
};
this.moduleUri=3Dfunction(_432,uri){
var loc=3Ddojo.hostenv.getModuleSymbols(_432).join("/");
if(!loc){
return null;
}
if(loc.lastIndexOf("/")!=3Dloc.length-1){
loc+=3D"/";
}
var _435=3Dloc.indexOf(":");
var _436=3Dloc.indexOf("/");
if(loc.charAt(0)!=3D"/"&&(_435=3D=3D-1||_435>_436)){
loc=3Ddojo.hostenv.getBaseScriptUri()+loc;
}
return new dojo.uri.Uri(loc,uri);
};
this.Uri=3Dfunction(){
var uri=3Darguments[0];
for(var i=3D1;i<arguments.length;i++){
if(!arguments[i]){
continue;
}
var _439=3Dnew dojo.uri.Uri(arguments[i].toString());
var _43a=3Dnew dojo.uri.Uri(uri.toString());
if((_439.path=3D=3D"")&&(_439.scheme=3D=3Dnull)&&(_439.authority=3D=3Dnul=
l)&&(_439.query=3D=3Dnull)){
if(_439.fragment!=3Dnull){
_43a.fragment=3D_439.fragment;
}
_439=3D_43a;
}else{
if(_439.scheme=3D=3Dnull){
_439.scheme=3D_43a.scheme;
if(_439.authority=3D=3Dnull){
_439.authority=3D_43a.authority;
if(_439.path.charAt(0)!=3D"/"){
var =
path=3D_43a.path.substring(0,_43a.path.lastIndexOf("/")+1)+_439.path;
var segs=3Dpath.split("/");
for(var j=3D0;j<segs.length;j++){
if(segs[j]=3D=3D"."){
if(j=3D=3Dsegs.length-1){
segs[j]=3D"";
}else{
segs.splice(j,1);
j--;
}
}else{
if(j>0&&!(j=3D=3D1&&segs[0]=3D=3D"")&&segs[j]=3D=3D".."&&segs[j-1]!=3D"..=
"){
if(j=3D=3Dsegs.length-1){
segs.splice(j,1);
segs[j-1]=3D"";
}else{
segs.splice(j-1,2);
j-=3D2;
}
}
}
}
_439.path=3Dsegs.join("/");
}
}
}
}
uri=3D"";
if(_439.scheme!=3Dnull){
uri+=3D_439.scheme+":";
}
if(_439.authority!=3Dnull){
uri+=3D"//"+_439.authority;
}
uri+=3D_439.path;
if(_439.query!=3Dnull){
uri+=3D"?"+_439.query;
}
if(_439.fragment!=3Dnull){
uri+=3D"#"+_439.fragment;
}
}
this.uri=3Duri.toString();
var =
_43e=3D"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";
var r=3Dthis.uri.match(new RegExp(_43e));
this.scheme=3Dr[2]||(r[1]?"":null);
this.authority=3Dr[4]||(r[3]?"":null);
this.path=3Dr[5];
this.query=3Dr[7]||(r[6]?"":null);
this.fragment=3Dr[9]||(r[8]?"":null);
if(this.authority!=3Dnull){
_43e=3D"^((([^:]+:)?([^@]+))@)?([^:]*)(:([0-9]+))?$";
r=3Dthis.authority.match(new RegExp(_43e));
this.user=3Dr[3]||null;
this.password=3Dr[4]||null;
this.host=3Dr[5];
this.port=3Dr[7]||null;
}
this.toString=3Dfunction(){
return this.uri;
};
};
};
dojo.provide("dojo.html.style");
dojo.html.getClass=3Dfunction(node){
node=3Ddojo.byId(node);
if(!node){
return "";
}
var cs=3D"";
if(node.className){
cs=3Dnode.className;
}else{
if(dojo.html.hasAttribute(node,"class")){
cs=3Ddojo.html.getAttribute(node,"class");
}
}
return cs.replace(/^\s+|\s+$/g,"");
};
dojo.html.getClasses=3Dfunction(node){
var c=3Ddojo.html.getClass(node);
return (c=3D=3D"")?[]:c.split(/\s+/g);
};
dojo.html.hasClass=3Dfunction(node,_445){
return (new =
RegExp("(^|\\s+)"+_445+"(\\s+|$)")).test(dojo.html.getClass(node));
};
dojo.html.prependClass=3Dfunction(node,_447){
_447+=3D" "+dojo.html.getClass(node);
return dojo.html.setClass(node,_447);
};
dojo.html.addClass=3Dfunction(node,_449){
if(dojo.html.hasClass(node,_449)){
return false;
}
_449=3D(dojo.html.getClass(node)+" "+_449).replace(/^\s+|\s+$/g,"");
return dojo.html.setClass(node,_449);
};
dojo.html.setClass=3Dfunction(node,_44b){
node=3Ddojo.byId(node);
var cs=3Dnew String(_44b);
try{
if(typeof node.className=3D=3D"string"){
node.className=3Dcs;
}else{
if(node.setAttribute){
node.setAttribute("class",_44b);
node.className=3Dcs;
}else{
return false;
}
}
}
catch(e){
dojo.debug("dojo.html.setClass() failed",e);
}
return true;
};
dojo.html.removeClass=3Dfunction(node,_44e,_44f){
try{
if(!_44f){
var _450=3Ddojo.html.getClass(node).replace(new =
RegExp("(^|\\s+)"+_44e+"(\\s+|$)"),"$1$2");
}else{
var _450=3Ddojo.html.getClass(node).replace(_44e,"");
}
dojo.html.setClass(node,_450);
}
catch(e){
dojo.debug("dojo.html.removeClass() failed",e);
}
return true;
};
dojo.html.replaceClass=3Dfunction(node,_452,_453){
dojo.html.removeClass(node,_453);
dojo.html.addClass(node,_452);
};
dojo.html.classMatchType=3D{ContainsAll:0,ContainsAny:1,IsOnly:2};
dojo.html.getElementsByClass=3Dfunction(_454,_455,_456,_457,_458){
_458=3Dfalse;
var _459=3Ddojo.doc();
_455=3Ddojo.byId(_455)||_459;
var _45a=3D_454.split(/\s+/g);
var _45b=3D[];
if(_457!=3D1&&_457!=3D2){
_457=3D0;
}
var _45c=3Dnew RegExp("(\\s|^)(("+_45a.join(")|(")+"))(\\s|$)");
var _45d=3D_45a.join(" ").length;
var _45e=3D[];
if(!_458&&_459.evaluate){
var _45f=3D".//"+(_456||"*")+"[contains(";
if(_457!=3Ddojo.html.classMatchType.ContainsAny){
_45f+=3D"concat(' ',@class,' '), ' "+_45a.join(" ') and =
contains(concat(' ',@class,' '), ' ")+" ')";
if(_457=3D=3D2){
_45f+=3D" and string-length(@class)=3D"+_45d+"]";
}else{
_45f+=3D"]";
}
}else{
_45f+=3D"concat(' ',@class,' '), ' "+_45a.join(" ') or contains(concat(' =
',@class,' '), ' ")+" ')]";
}
var _460=3D_459.evaluate(_45f,_455,null,XPathResult.ANY_TYPE,null);
var _461=3D_460.iterateNext();
while(_461){
try{
_45e.push(_461);
_461=3D_460.iterateNext();
}
catch(e){
break;
}
}
return _45e;
}else{
if(!_456){
_456=3D"*";
}
_45e=3D_455.getElementsByTagName(_456);
var node,i=3D0;
outer:
while(node=3D_45e[i++]){
var _464=3Ddojo.html.getClasses(node);
if(_464.length=3D=3D0){
continue outer;
}
var _465=3D0;
for(var j=3D0;j<_464.length;j++){
if(_45c.test(_464[j])){
if(_457=3D=3Ddojo.html.classMatchType.ContainsAny){
_45b.push(node);
continue outer;
}else{
_465++;
}
}else{
if(_457=3D=3Ddojo.html.classMatchType.IsOnly){
continue outer;
}
}
}
if(_465=3D=3D_45a.length){
if((_457=3D=3Ddojo.html.classMatchType.IsOnly)&&(_465=3D=3D_464.length)){=

_45b.push(node);
}else{
if(_457=3D=3Ddojo.html.classMatchType.ContainsAll){
_45b.push(node);
}
}
}
}
return _45b;
}
};
dojo.html.getElementsByClassName=3Ddojo.html.getElementsByClass;
dojo.html.toCamelCase=3Dfunction(_467){
var arr=3D_467.split("-"),cc=3Darr[0];
for(var i=3D1;i<arr.length;i++){
cc+=3Darr[i].charAt(0).toUpperCase()+arr[i].substring(1);
}
return cc;
};
dojo.html.toSelectorCase=3Dfunction(_46b){
return _46b.replace(/([A-Z])/g,"-$1").toLowerCase();
};
if(dojo.render.html.ie){
dojo.html.getComputedStyle=3Dfunction(node,_46d,_46e){
node=3Ddojo.byId(node);
if(!node||!node.currentStyle){
return _46e;
}
return node.currentStyle[dojo.html.toCamelCase(_46d)];
};
dojo.html.getComputedStyles=3Dfunction(node){
return node.currentStyle;
};
}else{
dojo.html.getComputedStyle=3Dfunction(node,_471,_472){
node=3Ddojo.byId(node);
if(!node||!node.style){
return _472;
}
var s=3Ddocument.defaultView.getComputedStyle(node,null);
return (s&&s[dojo.html.toCamelCase(_471)])||"";
};
dojo.html.getComputedStyles=3Dfunction(node){
return document.defaultView.getComputedStyle(node,null);
};
}
dojo.html.getStyleProperty=3Dfunction(node,_476){
node=3Ddojo.byId(node);
return =
(node&&node.style?node.style[dojo.html.toCamelCase(_476)]:undefined);
};
dojo.html.getStyle=3Dfunction(node,_478){
var _479=3Ddojo.html.getStyleProperty(node,_478);
return (_479?_479:dojo.html.getComputedStyle(node,_478));
};
dojo.html.setStyle=3Dfunction(node,_47b,_47c){
node=3Ddojo.byId(node);
if(node&&node.style){
var _47d=3Ddojo.html.toCamelCase(_47b);
node.style[_47d]=3D_47c;
}
};
dojo.html.setStyleText=3Dfunction(_47e,text){
try{
_47e.style.cssText=3Dtext;
}
catch(e){
_47e.setAttribute("style",text);
}
};
dojo.html.copyStyle=3Dfunction(_480,_481){
if(!_481.style.cssText){
_480.setAttribute("style",_481.getAttribute("style"));
}else{
_480.style.cssText=3D_481.style.cssText;
}
dojo.html.addClass(_480,dojo.html.getClass(_481));
};
dojo.html.getUnitValue=3Dfunction(node,_483,_484){
var s=3Ddojo.html.getComputedStyle(node,_483);
if((!s)||((s=3D=3D"auto")&&(_484))){
return {value:0,units:"px"};
}
var _486=3Ds.match(/(\-?[\d.]+)([a-z%]*)/i);
if(!_486){
return dojo.html.getUnitValue.bad;
}
return {value:Number(_486[1]),units:_486[2].toLowerCase()};
};
dojo.html.getUnitValue.bad=3D{value:NaN,units:""};
if(dojo.render.html.ie){
dojo.html.toPixelValue=3Dfunction(_487,_488){
if(!_488){
return 0;
}
if(_488.slice(-2)=3D=3D"px"){
return parseFloat(_488);
}
var _489=3D0;
with(_487){
var _48a=3Dstyle.left;
var _48b=3DruntimeStyle.left;
runtimeStyle.left=3DcurrentStyle.left;
try{
style.left=3D_488||0;
_489=3Dstyle.pixelLeft;
style.left=3D_48a;
runtimeStyle.left=3D_48b;
}
catch(e){
}
}
return _489;
};
}else{
dojo.html.toPixelValue=3Dfunction(_48c,_48d){
return (_48d&&(_48d.slice(-2)=3D=3D"px")?parseFloat(_48d):0);
};
}
dojo.html.getPixelValue=3Dfunction(node,_48f,_490){
return =
dojo.html.toPixelValue(node,dojo.html.getComputedStyle(node,_48f));
};
dojo.html.setPositivePixelValue=3Dfunction(node,_492,_493){
if(isNaN(_493)){
return false;
}
node.style[_492]=3DMath.max(0,_493)+"px";
return true;
};
dojo.html.styleSheet=3Dnull;
dojo.html.insertCssRule=3Dfunction(_494,_495,_496){
if(!dojo.html.styleSheet){
if(document.createStyleSheet){
dojo.html.styleSheet=3Ddocument.createStyleSheet();
}else{
if(document.styleSheets[0]){
dojo.html.styleSheet=3Ddocument.styleSheets[0];
}else{
return null;
}
}
}
if(arguments.length<3){
if(dojo.html.styleSheet.cssRules){
_496=3Ddojo.html.styleSheet.cssRules.length;
}else{
if(dojo.html.styleSheet.rules){
_496=3Ddojo.html.styleSheet.rules.length;
}else{
return null;
}
}
}
if(dojo.html.styleSheet.insertRule){
var rule=3D_494+" { "+_495+" }";
return dojo.html.styleSheet.insertRule(rule,_496);
}else{
if(dojo.html.styleSheet.addRule){
return dojo.html.styleSheet.addRule(_494,_495,_496);
}else{
return null;
}
}
};
dojo.html.removeCssRule=3Dfunction(_498){
if(!dojo.html.styleSheet){
dojo.debug("no stylesheet defined for removing rules");
return false;
}
if(dojo.render.html.ie){
if(!_498){
_498=3Ddojo.html.styleSheet.rules.length;
dojo.html.styleSheet.removeRule(_498);
}
}else{
if(document.styleSheets[0]){
if(!_498){
_498=3Ddojo.html.styleSheet.cssRules.length;
}
dojo.html.styleSheet.deleteRule(_498);
}
}
return true;
};
dojo.html._insertedCssFiles=3D[];
dojo.html.insertCssFile=3Dfunction(URI,doc,_49b,_49c){
if(!URI){
return;
}
if(!doc){
doc=3Ddocument;
}
var _49d=3Ddojo.hostenv.getText(URI,false,_49c);
if(_49d=3D=3D=3Dnull){
return;
}
_49d=3Ddojo.html.fixPathsInCssText(_49d,URI);
if(_49b){
var idx=3D-1,node,ent=3Ddojo.html._insertedCssFiles;
for(var i=3D0;i<ent.length;i++){
if((ent[i].doc=3D=3Ddoc)&&(ent[i].cssText=3D=3D_49d)){
idx=3Di;
node=3Dent[i].nodeRef;
break;
}
}
if(node){
var _4a2=3Ddoc.getElementsByTagName("style");
for(var i=3D0;i<_4a2.length;i++){
if(_4a2[i]=3D=3Dnode){
return;
}
}
dojo.html._insertedCssFiles.shift(idx,1);
}
}
var _4a3=3Ddojo.html.insertCssText(_49d,doc);
dojo.html._insertedCssFiles.push({"doc":doc,"cssText":_49d,"nodeRef":_4a3=
});
if(_4a3&&djConfig.isDebug){
_4a3.setAttribute("dbgHref",URI);
}
return _4a3;
};
dojo.html.insertCssText=3Dfunction(_4a4,doc,URI){
if(!_4a4){
return;
}
if(!doc){
doc=3Ddocument;
}
if(URI){
_4a4=3Ddojo.html.fixPathsInCssText(_4a4,URI);
}
var _4a7=3Ddoc.createElement("style");
_4a7.setAttribute("type","text/css");
var head=3Ddoc.getElementsByTagName("head")[0];
if(!head){
dojo.debug("No head tag in document, aborting styles");
return;
}else{
head.appendChild(_4a7);
}
if(_4a7.styleSheet){
var _4a9=3Dfunction(){
try{
_4a7.styleSheet.cssText=3D_4a4;
}
catch(e){
dojo.debug(e);
}
};
if(_4a7.styleSheet.disabled){
setTimeout(_4a9,10);
}else{
_4a9();
}
}else{
var _4aa=3Ddoc.createTextNode(_4a4);
_4a7.appendChild(_4aa);
}
return _4a7;
};
dojo.html.fixPathsInCssText=3Dfunction(_4ab,URI){
if(!_4ab||!URI){
return;
}
var =
_4ad,str=3D"",url=3D"",_4b0=3D"[\\t\\s\\w\\(\\)\\/\\.\\\\'\"-:#=3D&?~]+";=

var _4b1=3Dnew RegExp("url\\(\\s*("+_4b0+")\\s*\\)");
var _4b2=3D/(file|https?|ftps?):\/\//;
regexTrim=3Dnew RegExp("^[\\s]*(['\"]?)("+_4b0+")\\1[\\s]*?$");
if(dojo.render.html.ie55||dojo.render.html.ie60){
var _4b3=3Dnew =
RegExp("AlphaImageLoader\\((.*)src=3D['\"]("+_4b0+")['\"]");
while(_4ad=3D_4b3.exec(_4ab)){
url=3D_4ad[2].replace(regexTrim,"$2");
if(!_4b2.exec(url)){
url=3D(new dojo.uri.Uri(URI,url).toString());
}
str+=3D_4ab.substring(0,_4ad.index)+"AlphaImageLoader("+_4ad[1]+"src=3D'"=
+url+"'";
_4ab=3D_4ab.substr(_4ad.index+_4ad[0].length);
}
_4ab=3Dstr+_4ab;
str=3D"";
}
while(_4ad=3D_4b1.exec(_4ab)){
url=3D_4ad[1].replace(regexTrim,"$2");
if(!_4b2.exec(url)){
url=3D(new dojo.uri.Uri(URI,url).toString());
}
str+=3D_4ab.substring(0,_4ad.index)+"url("+url+")";
_4ab=3D_4ab.substr(_4ad.index+_4ad[0].length);
}
return str+_4ab;
};
dojo.html.setActiveStyleSheet=3Dfunction(_4b4){
var i=3D0,a,els=3Ddojo.doc().getElementsByTagName("link");
while(a=3Dels[i++]){
if(a.getAttribute("rel").indexOf("style")!=3D-1&&a.getAttribute("title"))=
{
a.disabled=3Dtrue;
if(a.getAttribute("title")=3D=3D_4b4){
a.disabled=3Dfalse;
}
}
}
};
dojo.html.getActiveStyleSheet=3Dfunction(){
var i=3D0,a,els=3Ddojo.doc().getElementsByTagName("link");
while(a=3Dels[i++]){
if(a.getAttribute("rel").indexOf("style")!=3D-1&&a.getAttribute("title")&=
&!a.disabled){
return a.getAttribute("title");
}
}
return null;
};
dojo.html.getPreferredStyleSheet=3Dfunction(){
var i=3D0,a,els=3Ddojo.doc().getElementsByTagName("link");
while(a=3Dels[i++]){
if(a.getAttribute("rel").indexOf("style")!=3D-1&&a.getAttribute("rel").in=
dexOf("alt")=3D=3D-1&&a.getAttribute("title")){
return a.getAttribute("title");
}
}
return null;
};
dojo.html.applyBrowserClass=3Dfunction(node){
var drh=3Ddojo.render.html;
var =
_4c0=3D{dj_ie:drh.ie,dj_ie55:drh.ie55,dj_ie6:drh.ie60,dj_ie7:drh.ie70,dj_=
iequirks:drh.ie&&drh.quirks,dj_opera:drh.opera,dj_opera8:drh.opera&&(Math=
.floor(dojo.render.version)=3D=3D8),dj_opera9:drh.opera&&(Math.floor(dojo=
.render.version)=3D=3D9),dj_khtml:drh.khtml,dj_safari:drh.safari,dj_gecko=
:drh.mozilla};
for(var p in _4c0){
if(_4c0[p]){
dojo.html.addClass(node,p);
}
}
};
dojo.provide("dojo.html.display");
dojo.html._toggle=3Dfunction(node,_4c3,_4c4){
node=3Ddojo.byId(node);
_4c4(node,!_4c3(node));
return _4c3(node);
};
dojo.html.show=3Dfunction(node){
node=3Ddojo.byId(node);
if(dojo.html.getStyleProperty(node,"display")=3D=3D"none"){
dojo.html.setStyle(node,"display",(node.dojoDisplayCache||""));
node.dojoDisplayCache=3Dundefined;
}
};
dojo.html.hide=3Dfunction(node){
node=3Ddojo.byId(node);
if(typeof node["dojoDisplayCache"]=3D=3D"undefined"){
var d=3Ddojo.html.getStyleProperty(node,"display");
if(d!=3D"none"){
node.dojoDisplayCache=3Dd;
}
}
dojo.html.setStyle(node,"display","none");
};
dojo.html.setShowing=3Dfunction(node,_4c9){
dojo.html[(_4c9?"show":"hide")](node);
};
dojo.html.isShowing=3Dfunction(node){
return (dojo.html.getStyleProperty(node,"display")!=3D"none");
};
dojo.html.toggleShowing=3Dfunction(node){
return dojo.html._toggle(node,dojo.html.isShowing,dojo.html.setShowing);
};
dojo.html.displayMap=3D{tr:"",td:"",th:"",img:"inline",span:"inline",inpu=
t:"inline",button:"inline"};
dojo.html.suggestDisplayByTagName=3Dfunction(node){
node=3Ddojo.byId(node);
if(node&&node.tagName){
var tag=3Dnode.tagName.toLowerCase();
return (tag in dojo.html.displayMap?dojo.html.displayMap[tag]:"block");
}
};
dojo.html.setDisplay=3Dfunction(node,_4cf){
dojo.html.setStyle(node,"display",((_4cf instanceof String||typeof =
_4cf=3D=3D"string")?_4cf:(_4cf?dojo.html.suggestDisplayByTagName(node):"n=
one")));
};
dojo.html.isDisplayed=3Dfunction(node){
return (dojo.html.getComputedStyle(node,"display")!=3D"none");
};
dojo.html.toggleDisplay=3Dfunction(node){
return =
dojo.html._toggle(node,dojo.html.isDisplayed,dojo.html.setDisplay);
};
dojo.html.setVisibility=3Dfunction(node,_4d3){
dojo.html.setStyle(node,"visibility",((_4d3 instanceof String||typeof =
_4d3=3D=3D"string")?_4d3:(_4d3?"visible":"hidden")));
};
dojo.html.isVisible=3Dfunction(node){
return (dojo.html.getComputedStyle(node,"visibility")!=3D"hidden");
};
dojo.html.toggleVisibility=3Dfunction(node){
return =
dojo.html._toggle(node,dojo.html.isVisible,dojo.html.setVisibility);
};
dojo.html.setOpacity=3Dfunction(node,_4d7,_4d8){
node=3Ddojo.byId(node);
var h=3Ddojo.render.html;
if(!_4d8){
if(_4d7>=3D1){
if(h.ie){
dojo.html.clearOpacity(node);
return;
}else{
_4d7=3D0.999999;
}
}else{
if(_4d7<0){
_4d7=3D0;
}
}
}
if(h.ie){
if(node.nodeName.toLowerCase()=3D=3D"tr"){
var tds=3Dnode.getElementsByTagName("td");
for(var x=3D0;x<tds.length;x++){
tds[x].style.filter=3D"Alpha(Opacity=3D"+_4d7*100+")";
}
}
node.style.filter=3D"Alpha(Opacity=3D"+_4d7*100+")";
}else{
if(h.moz){
node.style.opacity=3D_4d7;
node.style.MozOpacity=3D_4d7;
}else{
if(h.safari){
node.style.opacity=3D_4d7;
node.style.KhtmlOpacity=3D_4d7;
}else{
node.style.opacity=3D_4d7;
}
}
}
};
dojo.html.clearOpacity=3Dfunction(node){
node=3Ddojo.byId(node);
var ns=3Dnode.style;
var h=3Ddojo.render.html;
if(h.ie){
try{
if(node.filters&&node.filters.alpha){
ns.filter=3D"";
}
}
catch(e){
}
}else{
if(h.moz){
ns.opacity=3D1;
ns.MozOpacity=3D1;
}else{
if(h.safari){
ns.opacity=3D1;
ns.KhtmlOpacity=3D1;
}else{
ns.opacity=3D1;
}
}
}
};
dojo.html.getOpacity=3Dfunction(node){
node=3Ddojo.byId(node);
var h=3Ddojo.render.html;
if(h.ie){
var opac=3D(node.filters&&node.filters.alpha&&typeof =
node.filters.alpha.opacity=3D=3D"number"?node.filters.alpha.opacity:100)/=
100;
}else{
var =
opac=3Dnode.style.opacity||node.style.MozOpacity||node.style.KhtmlOpacity=
||1;
}
return opac>=3D0.999999?1:Number(opac);
};
dojo.provide("dojo.html.color");
dojo.html.getBackgroundColor=3Dfunction(node){
node=3Ddojo.byId(node);
var _4e3;
do{
_4e3=3Ddojo.html.getStyle(node,"background-color");
if(_4e3.toLowerCase()=3D=3D"rgba(0, 0, 0, 0)"){
_4e3=3D"transparent";
}
if(node=3D=3Ddocument.getElementsByTagName("body")[0]){
node=3Dnull;
break;
}
node=3Dnode.parentNode;
}while(node&&dojo.lang.inArray(["transparent",""],_4e3));
if(_4e3=3D=3D"transparent"){
_4e3=3D[255,255,255,0];
}else{
_4e3=3Ddojo.gfx.color.extractRGB(_4e3);
}
return _4e3;
};
dojo.provide("dojo.html.layout");
dojo.html.sumAncestorProperties=3Dfunction(node,prop){
node=3Ddojo.byId(node);
if(!node){
return 0;
}
var _4e6=3D0;
while(node){
if(dojo.html.getComputedStyle(node,"position")=3D=3D"fixed"){
return 0;
}
var val=3Dnode[prop];
if(val){
_4e6+=3Dval-0;
if(node=3D=3Ddojo.body()){
break;
}
}
node=3Dnode.parentNode;
}
return _4e6;
};
dojo.html.setStyleAttributes=3Dfunction(node,_4e9){
node=3Ddojo.byId(node);
var _4ea=3D_4e9.replace(/(;)?\s*$/,"").split(";");
for(var i=3D0;i<_4ea.length;i++){
var _4ec=3D_4ea[i].split(":");
var name=3D_4ec[0].replace(/\s*$/,"").replace(/^\s*/,"").toLowerCase();
var _4ee=3D_4ec[1].replace(/\s*$/,"").replace(/^\s*/,"");
switch(name){
case "opacity":
dojo.html.setOpacity(node,_4ee);
break;
case "content-height":
dojo.html.setContentBox(node,{height:_4ee});
break;
case "content-width":
dojo.html.setContentBox(node,{width:_4ee});
break;
case "outer-height":
dojo.html.setMarginBox(node,{height:_4ee});
break;
case "outer-width":
dojo.html.setMarginBox(node,{width:_4ee});
break;
default:
node.style[dojo.html.toCamelCase(name)]=3D_4ee;
}
}
};
dojo.html.boxSizing=3D{MARGIN_BOX:"margin-box",BORDER_BOX:"border-box",PA=
DDING_BOX:"padding-box",CONTENT_BOX:"content-box"};
dojo.html.getAbsolutePosition=3Ddojo.html.abs=3Dfunction(node,_4f0,_4f1){=

node=3Ddojo.byId(node,node.ownerDocument);
var ret=3D{x:0,y:0};
var bs=3Ddojo.html.boxSizing;
if(!_4f1){
_4f1=3Dbs.CONTENT_BOX;
}
var _4f4=3D2;
var _4f5;
switch(_4f1){
case bs.MARGIN_BOX:
_4f5=3D3;
break;
case bs.BORDER_BOX:
_4f5=3D2;
break;
case bs.PADDING_BOX:
default:
_4f5=3D1;
break;
case bs.CONTENT_BOX:
_4f5=3D0;
break;
}
var h=3Ddojo.render.html;
var db=3Ddocument["body"]||document["documentElement"];
if(h.ie){
with(node.getBoundingClientRect()){
ret.x=3Dleft-2;
ret.y=3Dtop-2;
}
}else{
if(document.getBoxObjectFor){
_4f4=3D1;
try{
var bo=3Ddocument.getBoxObjectFor(node);
ret.x=3Dbo.x-dojo.html.sumAncestorProperties(node,"scrollLeft");
ret.y=3Dbo.y-dojo.html.sumAncestorProperties(node,"scrollTop");
}
catch(e){
}
}else{
if(node["offsetParent"]){
var _4f9;
if((h.safari)&&(node.style.getPropertyValue("position")=3D=3D"absolute")&=
&(node.parentNode=3D=3Ddb)){
_4f9=3Ddb;
}else{
_4f9=3Ddb.parentNode;
}
if(node.parentNode!=3Ddb){
var nd=3Dnode;
if(dojo.render.html.opera){
nd=3Ddb;
}
ret.x-=3Ddojo.html.sumAncestorProperties(nd,"scrollLeft");
ret.y-=3Ddojo.html.sumAncestorProperties(nd,"scrollTop");
}
var _4fb=3Dnode;
do{
var n=3D_4fb["offsetLeft"];
if(!h.opera||n>0){
ret.x+=3DisNaN(n)?0:n;
}
var m=3D_4fb["offsetTop"];
ret.y+=3DisNaN(m)?0:m;
_4fb=3D_4fb.offsetParent;
}while((_4fb!=3D_4f9)&&(_4fb!=3Dnull));
}else{
if(node["x"]&&node["y"]){
ret.x+=3DisNaN(node.x)?0:node.x;
ret.y+=3DisNaN(node.y)?0:node.y;
}
}
}
}
if(_4f0){
var _4fe=3Ddojo.html.getScroll();
ret.y+=3D_4fe.top;
ret.x+=3D_4fe.left;
}
var =
_4ff=3D[dojo.html.getPaddingExtent,dojo.html.getBorderExtent,dojo.html.ge=
tMarginExtent];
if(_4f4>_4f5){
for(var i=3D_4f5;i<_4f4;++i){
ret.y+=3D_4ff[i](node,"top");
ret.x+=3D_4ff[i](node,"left");
}
}else{
if(_4f4<_4f5){
for(var i=3D_4f5;i>_4f4;--i){
ret.y-=3D_4ff[i-1](node,"top");
ret.x-=3D_4ff[i-1](node,"left");
}
}
}
ret.top=3Dret.y;
ret.left=3Dret.x;
return ret;
};
dojo.html.isPositionAbsolute=3Dfunction(node){
return (dojo.html.getComputedStyle(node,"position")=3D=3D"absolute");
};
dojo.html._sumPixelValues=3Dfunction(node,_503,_504){
var _505=3D0;
for(var x=3D0;x<_503.length;x++){
_505+=3Ddojo.html.getPixelValue(node,_503[x],_504);
}
return _505;
};
dojo.html.getMargin=3Dfunction(node){
return =
{width:dojo.html._sumPixelValues(node,["margin-left","margin-right"],(doj=
o.html.getComputedStyle(node,"position")=3D=3D"absolute")),height:dojo.ht=
ml._sumPixelValues(node,["margin-top","margin-bottom"],(dojo.html.getComp=
utedStyle(node,"position")=3D=3D"absolute"))};
};
dojo.html.getBorder=3Dfunction(node){
return =
{width:dojo.html.getBorderExtent(node,"left")+dojo.html.getBorderExtent(n=
ode,"right"),height:dojo.html.getBorderExtent(node,"top")+dojo.html.getBo=
rderExtent(node,"bottom")};
};
dojo.html.getBorderExtent=3Dfunction(node,side){
return =
(dojo.html.getStyle(node,"border-"+side+"-style")=3D=3D"none"?0:dojo.html=
.getPixelValue(node,"border-"+side+"-width"));
};
dojo.html.getMarginExtent=3Dfunction(node,side){
return =
dojo.html._sumPixelValues(node,["margin-"+side],dojo.html.isPositionAbsol=
ute(node));
};
dojo.html.getPaddingExtent=3Dfunction(node,side){
return dojo.html._sumPixelValues(node,["padding-"+side],true);
};
dojo.html.getPadding=3Dfunction(node){
return =
{width:dojo.html._sumPixelValues(node,["padding-left","padding-right"],tr=
ue),height:dojo.html._sumPixelValues(node,["padding-top","padding-bottom"=
],true)};
};
dojo.html.getPadBorder=3Dfunction(node){
var pad=3Ddojo.html.getPadding(node);
var _512=3Ddojo.html.getBorder(node);
return {width:pad.width+_512.width,height:pad.height+_512.height};
};
dojo.html.getBoxSizing=3Dfunction(node){
var h=3Ddojo.render.html;
var bs=3Ddojo.html.boxSizing;
if(((h.ie)||(h.opera))&&node.nodeName.toLowerCase()!=3D"img"){
var cm=3Ddocument["compatMode"];
if((cm=3D=3D"BackCompat")||(cm=3D=3D"QuirksMode")){
return bs.BORDER_BOX;
}else{
return bs.CONTENT_BOX;
}
}else{
if(arguments.length=3D=3D0){
node=3Ddocument.documentElement;
}
var _517;
if(!h.ie){
_517=3Ddojo.html.getStyle(node,"-moz-box-sizing");
if(!_517){
_517=3Ddojo.html.getStyle(node,"box-sizing");
}
}
return (_517?_517:bs.CONTENT_BOX);
}
};
dojo.html.isBorderBox=3Dfunction(node){
return =
(dojo.html.getBoxSizing(node)=3D=3Ddojo.html.boxSizing.BORDER_BOX);
};
dojo.html.getBorderBox=3Dfunction(node){
node=3Ddojo.byId(node);
return {width:node.offsetWidth,height:node.offsetHeight};
};
dojo.html.getPaddingBox=3Dfunction(node){
var box=3Ddojo.html.getBorderBox(node);
var _51c=3Ddojo.html.getBorder(node);
return {width:box.width-_51c.width,height:box.height-_51c.height};
};
dojo.html.getContentBox=3Dfunction(node){
node=3Ddojo.byId(node);
var _51e=3Ddojo.html.getPadBorder(node);
return =
{width:node.offsetWidth-_51e.width,height:node.offsetHeight-_51e.height};=

};
dojo.html.setContentBox=3Dfunction(node,args){
node=3Ddojo.byId(node);
var _521=3D0;
var _522=3D0;
var isbb=3Ddojo.html.isBorderBox(node);
var _524=3D(isbb?dojo.html.getPadBorder(node):{width:0,height:0});
var ret=3D{};
if(typeof args.width!=3D"undefined"){
_521=3Dargs.width+_524.width;
ret.width=3Ddojo.html.setPositivePixelValue(node,"width",_521);
}
if(typeof args.height!=3D"undefined"){
_522=3Dargs.height+_524.height;
ret.height=3Ddojo.html.setPositivePixelValue(node,"height",_522);
}
return ret;
};
dojo.html.getMarginBox=3Dfunction(node){
var _527=3Ddojo.html.getBorderBox(node);
var _528=3Ddojo.html.getMargin(node);
return {width:_527.width+_528.width,height:_527.height+_528.height};
};
dojo.html.setMarginBox=3Dfunction(node,args){
node=3Ddojo.byId(node);
var _52b=3D0;
var _52c=3D0;
var isbb=3Ddojo.html.isBorderBox(node);
var _52e=3D(!isbb?dojo.html.getPadBorder(node):{width:0,height:0});
var _52f=3Ddojo.html.getMargin(node);
var ret=3D{};
if(typeof args.width!=3D"undefined"){
_52b=3Dargs.width-_52e.width;
_52b-=3D_52f.width;
ret.width=3Ddojo.html.setPositivePixelValue(node,"width",_52b);
}
if(typeof args.height!=3D"undefined"){
_52c=3Dargs.height-_52e.height;
_52c-=3D_52f.height;
ret.height=3Ddojo.html.setPositivePixelValue(node,"height",_52c);
}
return ret;
};
dojo.html.getElementBox=3Dfunction(node,type){
var bs=3Ddojo.html.boxSizing;
switch(type){
case bs.MARGIN_BOX:
return dojo.html.getMarginBox(node);
case bs.BORDER_BOX:
return dojo.html.getBorderBox(node);
case bs.PADDING_BOX:
return dojo.html.getPaddingBox(node);
case bs.CONTENT_BOX:
default:
return dojo.html.getContentBox(node);
}
};
dojo.html.toCoordinateObject=3Ddojo.html.toCoordinateArray=3Dfunction(_53=
4,_535,_536){
if(_534 instanceof Array||typeof _534=3D=3D"array"){
dojo.deprecated("dojo.html.toCoordinateArray","use =
dojo.html.toCoordinateObject({left: , top: , width: , height: }) =
instead","0.5");
while(_534.length<4){
_534.push(0);
}
while(_534.length>4){
_534.pop();
}
var ret=3D{left:_534[0],top:_534[1],width:_534[2],height:_534[3]};
}else{
if(!_534.nodeType&&!(_534 instanceof String||typeof =
_534=3D=3D"string")&&("width" in _534||"height" in _534||"left" in =
_534||"x" in _534||"top" in _534||"y" in _534)){
var =
ret=3D{left:_534.left||_534.x||0,top:_534.top||_534.y||0,width:_534.width=
||0,height:_534.height||0};
}else{
var node=3Ddojo.byId(_534);
var pos=3Ddojo.html.abs(node,_535,_536);
var _53a=3Ddojo.html.getMarginBox(node);
var =
ret=3D{left:pos.left,top:pos.top,width:_53a.width,height:_53a.height};
}
}
ret.x=3Dret.left;
ret.y=3Dret.top;
return ret;
};
dojo.html.setMarginBoxWidth=3Ddojo.html.setOuterWidth=3Dfunction(node,_53=
c){
return =
dojo.html._callDeprecated("setMarginBoxWidth","setMarginBox",arguments,"w=
idth");
};
dojo.html.setMarginBoxHeight=3Ddojo.html.setOuterHeight=3Dfunction(){
return =
dojo.html._callDeprecated("setMarginBoxHeight","setMarginBox",arguments,"=
height");
};
dojo.html.getMarginBoxWidth=3Ddojo.html.getOuterWidth=3Dfunction(){
return =
dojo.html._callDeprecated("getMarginBoxWidth","getMarginBox",arguments,nu=
ll,"width");
};
dojo.html.getMarginBoxHeight=3Ddojo.html.getOuterHeight=3Dfunction(){
return =
dojo.html._callDeprecated("getMarginBoxHeight","getMarginBox",arguments,n=
ull,"height");
};
dojo.html.getTotalOffset=3Dfunction(node,type,_53f){
return =
dojo.html._callDeprecated("getTotalOffset","getAbsolutePosition",argument=
s,null,type);
};
dojo.html.getAbsoluteX=3Dfunction(node,_541){
return =
dojo.html._callDeprecated("getAbsoluteX","getAbsolutePosition",arguments,=
null,"x");
};
dojo.html.getAbsoluteY=3Dfunction(node,_543){
return =
dojo.html._callDeprecated("getAbsoluteY","getAbsolutePosition",arguments,=
null,"y");
};
dojo.html.totalOffsetLeft=3Dfunction(node,_545){
return =
dojo.html._callDeprecated("totalOffsetLeft","getAbsolutePosition",argumen=
ts,null,"left");
};
dojo.html.totalOffsetTop=3Dfunction(node,_547){
return =
dojo.html._callDeprecated("totalOffsetTop","getAbsolutePosition",argument=
s,null,"top");
};
dojo.html.getMarginWidth=3Dfunction(node){
return =
dojo.html._callDeprecated("getMarginWidth","getMargin",arguments,null,"wi=
dth");
};
dojo.html.getMarginHeight=3Dfunction(node){
return =
dojo.html._callDeprecated("getMarginHeight","getMargin",arguments,null,"h=
eight");
};
dojo.html.getBorderWidth=3Dfunction(node){
return =
dojo.html._callDeprecated("getBorderWidth","getBorder",arguments,null,"wi=
dth");
};
dojo.html.getBorderHeight=3Dfunction(node){
return =
dojo.html._callDeprecated("getBorderHeight","getBorder",arguments,null,"h=
eight");
};
dojo.html.getPaddingWidth=3Dfunction(node){
return =
dojo.html._callDeprecated("getPaddingWidth","getPadding",arguments,null,"=
width");
};
dojo.html.getPaddingHeight=3Dfunction(node){
return =
dojo.html._callDeprecated("getPaddingHeight","getPadding",arguments,null,=
"height");
};
dojo.html.getPadBorderWidth=3Dfunction(node){
return =
dojo.html._callDeprecated("getPadBorderWidth","getPadBorder",arguments,nu=
ll,"width");
};
dojo.html.getPadBorderHeight=3Dfunction(node){
return =
dojo.html._callDeprecated("getPadBorderHeight","getPadBorder",arguments,n=
ull,"height");
};
dojo.html.getBorderBoxWidth=3Ddojo.html.getInnerWidth=3Dfunction(){
return =
dojo.html._callDeprecated("getBorderBoxWidth","getBorderBox",arguments,nu=
ll,"width");
};
dojo.html.getBorderBoxHeight=3Ddojo.html.getInnerHeight=3Dfunction(){
return =
dojo.html._callDeprecated("getBorderBoxHeight","getBorderBox",arguments,n=
ull,"height");
};
dojo.html.getContentBoxWidth=3Ddojo.html.getContentWidth=3Dfunction(){
return =
dojo.html._callDeprecated("getContentBoxWidth","getContentBox",arguments,=
null,"width");
};
dojo.html.getContentBoxHeight=3Ddojo.html.getContentHeight=3Dfunction(){
return =
dojo.html._callDeprecated("getContentBoxHeight","getContentBox",arguments=
,null,"height");
};
dojo.html.setContentBoxWidth=3Ddojo.html.setContentWidth=3Dfunction(node,=
_551){
return =
dojo.html._callDeprecated("setContentBoxWidth","setContentBox",arguments,=
"width");
};
dojo.html.setContentBoxHeight=3Ddojo.html.setContentHeight=3Dfunction(nod=
e,_553){
return =
dojo.html._callDeprecated("setContentBoxHeight","setContentBox",arguments=
,"height");
};
dojo.provide("dojo.lfx.html");
dojo.lfx.html._byId=3Dfunction(_554){
if(!_554){
return [];
}
if(dojo.lang.isArrayLike(_554)){
if(!_554.alreadyChecked){
var n=3D[];
dojo.lang.forEach(_554,function(node){
n.push(dojo.byId(node));
});
n.alreadyChecked=3Dtrue;
return n;
}else{
return _554;
}
}else{
var n=3D[];
n.push(dojo.byId(_554));
n.alreadyChecked=3Dtrue;
return n;
}
};
dojo.lfx.html.propertyAnimation=3Dfunction(_557,_558,_559,_55a,_55b){
_557=3Ddojo.lfx.html._byId(_557);
var =
_55c=3D{"propertyMap":_558,"nodes":_557,"duration":_559,"easing":_55a||do=
jo.lfx.easeDefault};
var _55d=3Dfunction(args){
if(args.nodes.length=3D=3D1){
var pm=3Dargs.propertyMap;
if(!dojo.lang.isArray(args.propertyMap)){
var parr=3D[];
for(var _561 in pm){
pm[_561].property=3D_561;
parr.push(pm[_561]);
}
pm=3Dargs.propertyMap=3Dparr;
}
dojo.lang.forEach(pm,function(prop){
if(dj_undef("start",prop)){
if(prop.property!=3D"opacity"){
prop.start=3DparseInt(dojo.html.getComputedStyle(args.nodes[0],prop.prope=
rty));
}else{
prop.start=3Ddojo.html.getOpacity(args.nodes[0]);
}
}
});
}
};
var _563=3Dfunction(_564){
var _565=3D[];
dojo.lang.forEach(_564,function(c){
_565.push(Math.round(c));
});
return _565;
};
var _567=3Dfunction(n,_569){
n=3Ddojo.byId(n);
if(!n||!n.style){
return;
}
for(var s in _569){
try{
if(s=3D=3D"opacity"){
dojo.html.setOpacity(n,_569[s]);
}else{
n.style[s]=3D_569[s];
}
}
catch(e){
dojo.debug(e);
}
}
};
var _56b=3Dfunction(_56c){
this._properties=3D_56c;
this.diffs=3Dnew Array(_56c.length);
dojo.lang.forEach(_56c,function(prop,i){
if(dojo.lang.isFunction(prop.start)){
prop.start=3Dprop.start(prop,i);
}
if(dojo.lang.isFunction(prop.end)){
prop.end=3Dprop.end(prop,i);
}
if(dojo.lang.isArray(prop.start)){
this.diffs[i]=3Dnull;
}else{
if(prop.start instanceof dojo.gfx.color.Color){
prop.startRgb=3Dprop.start.toRgb();
prop.endRgb=3Dprop.end.toRgb();
}else{
this.diffs[i]=3Dprop.end-prop.start;
}
}
},this);
this.getValue=3Dfunction(n){
var ret=3D{};
dojo.lang.forEach(this._properties,function(prop,i){
var _573=3Dnull;
if(dojo.lang.isArray(prop.start)){
}else{
if(prop.start instanceof dojo.gfx.color.Color){
_573=3D(prop.units||"rgb")+"(";
for(var j=3D0;j<prop.startRgb.length;j++){
_573+=3DMath.round(((prop.endRgb[j]-prop.startRgb[j])*n)+prop.startRgb[j]=
)+(j<prop.startRgb.length-1?",":"");
}
_573+=3D")";
}else{
_573=3D((this.diffs[i])*n)+prop.start+(prop.property!=3D"opacity"?prop.un=
its||"px":"");
}
}
ret[dojo.html.toCamelCase(prop.property)]=3D_573;
},this);
return ret;
};
};
var anim=3Dnew dojo.lfx.Animation({beforeBegin:function(){
_55d(_55c);
anim.curve=3Dnew _56b(_55c.propertyMap);
},onAnimate:function(_576){
dojo.lang.forEach(_55c.nodes,function(node){
_567(node,_576);
});
}},_55c.duration,null,_55c.easing);
if(_55b){
for(var x in _55b){
if(dojo.lang.isFunction(_55b[x])){
anim.connect(x,anim,_55b[x]);
}
}
}
return anim;
};
dojo.lfx.html._makeFadeable=3Dfunction(_579){
var _57a=3Dfunction(node){
if(dojo.render.html.ie){
if((node.style.zoom.length=3D=3D0)&&(dojo.html.getStyle(node,"zoom")=3D=3D=
"normal")){
node.style.zoom=3D"1";
}
if((node.style.width.length=3D=3D0)&&(dojo.html.getStyle(node,"width")=3D=
=3D"auto")){
node.style.width=3D"auto";
}
}
};
if(dojo.lang.isArrayLike(_579)){
dojo.lang.forEach(_579,_57a);
}else{
_57a(_579);
}
};
dojo.lfx.html.fade=3Dfunction(_57c,_57d,_57e,_57f,_580){
_57c=3Ddojo.lfx.html._byId(_57c);
var _581=3D{property:"opacity"};
if(!dj_undef("start",_57d)){
_581.start=3D_57d.start;
}else{
_581.start=3Dfunction(){
return dojo.html.getOpacity(_57c[0]);
};
}
if(!dj_undef("end",_57d)){
_581.end=3D_57d.end;
}else{
dojo.raise("dojo.lfx.html.fade needs an end value");
}
var anim=3Ddojo.lfx.propertyAnimation(_57c,[_581],_57e,_57f);
anim.connect("beforeBegin",function(){
dojo.lfx.html._makeFadeable(_57c);
});
if(_580){
anim.connect("onEnd",function(){
_580(_57c,anim);
});
}
return anim;
};
dojo.lfx.html.fadeIn=3Dfunction(_583,_584,_585,_586){
return dojo.lfx.html.fade(_583,{end:1},_584,_585,_586);
};
dojo.lfx.html.fadeOut=3Dfunction(_587,_588,_589,_58a){
return dojo.lfx.html.fade(_587,{end:0},_588,_589,_58a);
};
dojo.lfx.html.fadeShow=3Dfunction(_58b,_58c,_58d,_58e){
_58b=3Ddojo.lfx.html._byId(_58b);
dojo.lang.forEach(_58b,function(node){
dojo.html.setOpacity(node,0);
});
var anim=3Ddojo.lfx.html.fadeIn(_58b,_58c,_58d,_58e);
anim.connect("beforeBegin",function(){
if(dojo.lang.isArrayLike(_58b)){
dojo.lang.forEach(_58b,dojo.html.show);
}else{
dojo.html.show(_58b);
}
});
return anim;
};
dojo.lfx.html.fadeHide=3Dfunction(_591,_592,_593,_594){
var anim=3Ddojo.lfx.html.fadeOut(_591,_592,_593,function(){
if(dojo.lang.isArrayLike(_591)){
dojo.lang.forEach(_591,dojo.html.hide);
}else{
dojo.html.hide(_591);
}
if(_594){
_594(_591,anim);
}
});
return anim;
};
dojo.lfx.html.wipeIn=3Dfunction(_596,_597,_598,_599){
_596=3Ddojo.lfx.html._byId(_596);
var _59a=3D[];
dojo.lang.forEach(_596,function(node){
var _59c=3D{};
var _59d,_59e,_59f;
with(node.style){
_59d=3Dtop;
_59e=3Dleft;
_59f=3Dposition;
top=3D"-9999px";
left=3D"-9999px";
position=3D"absolute";
display=3D"";
}
var _5a0=3Ddojo.html.getBorderBox(node).height;
with(node.style){
top=3D_59d;
left=3D_59e;
position=3D_59f;
display=3D"none";
}
var =
anim=3Ddojo.lfx.propertyAnimation(node,{"height":{start:1,end:function(){=

return _5a0;
}}},_597,_598);
anim.connect("beforeBegin",function(){
_59c.overflow=3Dnode.style.overflow;
_59c.height=3Dnode.style.height;
with(node.style){
overflow=3D"hidden";
height=3D"1px";
}
dojo.html.show(node);
});
anim.connect("onEnd",function(){
with(node.style){
overflow=3D_59c.overflow;
height=3D_59c.height;
}
if(_599){
_599(node,anim);
}
});
_59a.push(anim);
});
return dojo.lfx.combine(_59a);
};
dojo.lfx.html.wipeOut=3Dfunction(_5a2,_5a3,_5a4,_5a5){
_5a2=3Ddojo.lfx.html._byId(_5a2);
var _5a6=3D[];
dojo.lang.forEach(_5a2,function(node){
var _5a8=3D{};
var anim=3Ddojo.lfx.propertyAnimation(node,{"height":{start:function(){
return dojo.html.getContentBox(node).height;
},end:1}},_5a3,_5a4,{"beforeBegin":function(){
_5a8.overflow=3Dnode.style.overflow;
_5a8.height=3Dnode.style.height;
with(node.style){
overflow=3D"hidden";
}
dojo.html.show(node);
},"onEnd":function(){
dojo.html.hide(node);
with(node.style){
overflow=3D_5a8.overflow;
height=3D_5a8.height;
}
if(_5a5){
_5a5(node,anim);
}
}});
_5a6.push(anim);
});
return dojo.lfx.combine(_5a6);
};
dojo.lfx.html.slideTo=3Dfunction(_5aa,_5ab,_5ac,_5ad,_5ae){
_5aa=3Ddojo.lfx.html._byId(_5aa);
var _5af=3D[];
var _5b0=3Ddojo.html.getComputedStyle;
if(dojo.lang.isArray(_5ab)){
dojo.deprecated("dojo.lfx.html.slideTo(node, array)","use =
dojo.lfx.html.slideTo(node, {top: value, left: value});","0.5");
_5ab=3D{top:_5ab[0],left:_5ab[1]};
}
dojo.lang.forEach(_5aa,function(node){
var top=3Dnull;
var left=3Dnull;
var init=3D(function(){
var _5b5=3Dnode;
return function(){
var pos=3D_5b0(_5b5,"position");
top=3D(pos=3D=3D"absolute"?node.offsetTop:parseInt(_5b0(node,"top"))||0);=

left=3D(pos=3D=3D"absolute"?node.offsetLeft:parseInt(_5b0(node,"left"))||=
0);
if(!dojo.lang.inArray(["absolute","relative"],pos)){
var ret=3Ddojo.html.abs(_5b5,true);
dojo.html.setStyleAttributes(_5b5,"position:absolute;top:"+ret.y+"px;left=
:"+ret.x+"px;");
top=3Dret.y;
left=3Dret.x;
}
};
})();
init();
var =
anim=3Ddojo.lfx.propertyAnimation(node,{"top":{start:top,end:(_5ab.top||0=
)},"left":{start:left,end:(_5ab.left||0)}},_5ac,_5ad,{"beforeBegin":init}=
);
if(_5ae){
anim.connect("onEnd",function(){
_5ae(_5aa,anim);
});
}
_5af.push(anim);
});
return dojo.lfx.combine(_5af);
};
dojo.lfx.html.slideBy=3Dfunction(_5b9,_5ba,_5bb,_5bc,_5bd){
_5b9=3Ddojo.lfx.html._byId(_5b9);
var _5be=3D[];
var _5bf=3Ddojo.html.getComputedStyle;
if(dojo.lang.isArray(_5ba)){
dojo.deprecated("dojo.lfx.html.slideBy(node, array)","use =
dojo.lfx.html.slideBy(node, {top: value, left: value});","0.5");
_5ba=3D{top:_5ba[0],left:_5ba[1]};
}
dojo.lang.forEach(_5b9,function(node){
var top=3Dnull;
var left=3Dnull;
var init=3D(function(){
var _5c4=3Dnode;
return function(){
var pos=3D_5bf(_5c4,"position");
top=3D(pos=3D=3D"absolute"?node.offsetTop:parseInt(_5bf(node,"top"))||0);=

left=3D(pos=3D=3D"absolute"?node.offsetLeft:parseInt(_5bf(node,"left"))||=
0);
if(!dojo.lang.inArray(["absolute","relative"],pos)){
var ret=3Ddojo.html.abs(_5c4,true);
dojo.html.setStyleAttributes(_5c4,"position:absolute;top:"+ret.y+"px;left=
:"+ret.x+"px;");
top=3Dret.y;
left=3Dret.x;
}
};
})();
init();
var =
anim=3Ddojo.lfx.propertyAnimation(node,{"top":{start:top,end:top+(_5ba.to=
p||0)},"left":{start:left,end:left+(_5ba.left||0)}},_5bb,_5bc).connect("b=
eforeBegin",init);
if(_5bd){
anim.connect("onEnd",function(){
_5bd(_5b9,anim);
});
}
_5be.push(anim);
});
return dojo.lfx.combine(_5be);
};
dojo.lfx.html.explode=3Dfunction(_5c8,_5c9,_5ca,_5cb,_5cc){
var h=3Ddojo.html;
_5c8=3Ddojo.byId(_5c8);
_5c9=3Ddojo.byId(_5c9);
var _5ce=3Dh.toCoordinateObject(_5c8,true);
var _5cf=3Ddocument.createElement("div");
h.copyStyle(_5cf,_5c9);
if(_5c9.explodeClassName){
_5cf.className=3D_5c9.explodeClassName;
}
with(_5cf.style){
position=3D"absolute";
display=3D"none";
var _5d0=3Dh.getStyle(_5c8,"background-color");
backgroundColor=3D_5d0?_5d0.toLowerCase():"transparent";
backgroundColor=3D(backgroundColor=3D=3D"transparent")?"rgb(221, 221, =
221)":backgroundColor;
}
dojo.body().appendChild(_5cf);
with(_5c9.style){
visibility=3D"hidden";
display=3D"block";
}
var _5d1=3Dh.toCoordinateObject(_5c9,true);
with(_5c9.style){
display=3D"none";
visibility=3D"visible";
}
var _5d2=3D{opacity:{start:0.5,end:1}};
dojo.lang.forEach(["height","width","top","left"],function(type){
_5d2[type]=3D{start:_5ce[type],end:_5d1[type]};
});
var anim=3Dnew =
dojo.lfx.propertyAnimation(_5cf,_5d2,_5ca,_5cb,{"beforeBegin":function(){=

h.setDisplay(_5cf,"block");
},"onEnd":function(){
h.setDisplay(_5c9,"block");
_5cf.parentNode.removeChild(_5cf);
}});
if(_5cc){
anim.connect("onEnd",function(){
_5cc(_5c9,anim);
});
}
return anim;
};
dojo.lfx.html.implode=3Dfunction(_5d5,end,_5d7,_5d8,_5d9){
var h=3Ddojo.html;
_5d5=3Ddojo.byId(_5d5);
end=3Ddojo.byId(end);
var _5db=3Ddojo.html.toCoordinateObject(_5d5,true);
var _5dc=3Ddojo.html.toCoordinateObject(end,true);
var _5dd=3Ddocument.createElement("div");
dojo.html.copyStyle(_5dd,_5d5);
if(_5d5.explodeClassName){
_5dd.className=3D_5d5.explodeClassName;
}
dojo.html.setOpacity(_5dd,0.3);
with(_5dd.style){
position=3D"absolute";
display=3D"none";
backgroundColor=3Dh.getStyle(_5d5,"background-color").toLowerCase();
}
dojo.body().appendChild(_5dd);
var _5de=3D{opacity:{start:1,end:0.5}};
dojo.lang.forEach(["height","width","top","left"],function(type){
_5de[type]=3D{start:_5db[type],end:_5dc[type]};
});
var anim=3Dnew =
dojo.lfx.propertyAnimation(_5dd,_5de,_5d7,_5d8,{"beforeBegin":function(){=

dojo.html.hide(_5d5);
dojo.html.show(_5dd);
},"onEnd":function(){
_5dd.parentNode.removeChild(_5dd);
}});
if(_5d9){
anim.connect("onEnd",function(){
_5d9(_5d5,anim);
});
}
return anim;
};
dojo.lfx.html.highlight=3Dfunction(_5e1,_5e2,_5e3,_5e4,_5e5){
_5e1=3Ddojo.lfx.html._byId(_5e1);
var _5e6=3D[];
dojo.lang.forEach(_5e1,function(node){
var _5e8=3Ddojo.html.getBackgroundColor(node);
var bg=3Ddojo.html.getStyle(node,"background-color").toLowerCase();
var _5ea=3Ddojo.html.getStyle(node,"background-image");
var _5eb=3D(bg=3D=3D"transparent"||bg=3D=3D"rgba(0, 0, 0, 0)");
while(_5e8.length>3){
_5e8.pop();
}
var rgb=3Dnew dojo.gfx.color.Color(_5e2);
var _5ed=3Dnew dojo.gfx.color.Color(_5e8);
var =
anim=3Ddojo.lfx.propertyAnimation(node,{"background-color":{start:rgb,end=
:_5ed}},_5e3,_5e4,{"beforeBegin":function(){
if(_5ea){
node.style.backgroundImage=3D"none";
}
node.style.backgroundColor=3D"rgb("+rgb.toRgb().join(",")+")";
},"onEnd":function(){
if(_5ea){
node.style.backgroundImage=3D_5ea;
}
if(_5eb){
node.style.backgroundColor=3D"transparent";
}
if(_5e5){
_5e5(node,anim);
}
}});
_5e6.push(anim);
});
return dojo.lfx.combine(_5e6);
};
dojo.lfx.html.unhighlight=3Dfunction(_5ef,_5f0,_5f1,_5f2,_5f3){
_5ef=3Ddojo.lfx.html._byId(_5ef);
var _5f4=3D[];
dojo.lang.forEach(_5ef,function(node){
var _5f6=3Dnew dojo.gfx.color.Color(dojo.html.getBackgroundColor(node));
var rgb=3Dnew dojo.gfx.color.Color(_5f0);
var _5f8=3Ddojo.html.getStyle(node,"background-image");
var =
anim=3Ddojo.lfx.propertyAnimation(node,{"background-color":{start:_5f6,en=
d:rgb}},_5f1,_5f2,{"beforeBegin":function(){
if(_5f8){
node.style.backgroundImage=3D"none";
}
node.style.backgroundColor=3D"rgb("+_5f6.toRgb().join(",")+")";
},"onEnd":function(){
if(_5f3){
_5f3(node,anim);
}
}});
_5f4.push(anim);
});
return dojo.lfx.combine(_5f4);
};
dojo.lang.mixin(dojo.lfx,dojo.lfx.html);
dojo.kwCompoundRequire({browser:["dojo.lfx.html"],dashboard:["dojo.lfx.ht=
ml"]});
dojo.provide("dojo.lfx.*");


------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/modal-message.js

/************************************************************************=
************************************=0A=
*	DHTML modal dialog box=0A=
*=0A=
*	Created:						August, 26th, 2006=0A=
*	@class Purpose of class:		Display a modal dialog box on the screen.=0A=
*			=0A=
*	Css files used by this script:	modal-message.css=0A=
*=0A=
*	Demos of this class:			demo-modal-message-1.html=0A=
*=0A=
* 	Update log:=0A=
*=0A=
*************************************************************************=
***********************************/=0A=
=0A=
=0A=
/**=0A=
* @constructor=0A=
*/=0A=
=0A=
DHTML_modalMessage =3D function()=0A=
{=0A=
	var url;								// url of modal message=0A=
	var htmlOfModalMessage;					// html of modal message=0A=
	=0A=
	var divs_transparentDiv;				// Transparent div covering page content=0A=
	var divs_content;						// Modal message div.=0A=
	var iframe;								// Iframe used in ie=0A=
	var layoutCss;							// Name of css file;=0A=
	var width;								// Width of message box=0A=
	var height;								// Height of message box=0A=
	=0A=
	var existingBodyOverFlowStyle;			// Existing body overflow css=0A=
	var dynContentObj;						// Reference to dynamic content object=0A=
	var cssClassOfMessageBox;				// Alternative css class of message box - =
in case you want a different appearance on one of them=0A=
	var shadowDivVisible;					// Shadow div visible ? =0A=
	var shadowOffset; 						// X and Y offset of shadow(pixels from content =
box)=0A=
	var MSIE;=0A=
		=0A=
	this.url =3D '';							// Default url is blank=0A=
	this.htmlOfModalMessage =3D '';			// Default message is blank=0A=
	this.layoutCss =3D 'modal-message.css';	// Default CSS file=0A=
	this.height =3D 200;						// Default height of modal message=0A=
	this.width =3D 400;						// Default width of modal message=0A=
	this.cssClassOfMessageBox =3D false;		// Default alternative css class =
for the message box=0A=
	this.shadowDivVisible =3D true;			// Shadow div is visible by default=0A=
	this.shadowOffset =3D 5;					// Default shadow offset.=0A=
	this.MSIE =3D false;=0A=
	if(navigator.userAgent.indexOf('MSIE')>=3D0) this.MSIE =3D true;=0A=
	=0A=
=0A=
}=0A=
=0A=
DHTML_modalMessage.prototype =3D {=0A=
	// {{{ setSource(urlOfSource)=0A=
    /**=0A=
     *	Set source of the modal dialog box=0A=
     * 	=0A=
     *=0A=
     * @public	=0A=
     */		=0A=
	setSource : function(urlOfSource)=0A=
	{=0A=
		this.url =3D urlOfSource;=0A=
		=0A=
	}	=0A=
	// }}}	=0A=
	,=0A=
	// {{{ setHtmlContent(newHtmlContent)=0A=
    /**=0A=
     *	Setting static HTML content for the modal dialog box.=0A=
     * 	=0A=
     *	@param String newHtmlContent =3D Static HTML content of box=0A=
     *=0A=
     * @public	=0A=
     */		=0A=
	setHtmlContent : function(newHtmlContent)=0A=
	{=0A=
		this.htmlOfModalMessage =3D newHtmlContent;=0A=
		=0A=
	}=0A=
	// }}}		=0A=
	,=0A=
	// {{{ setSize(width,height)=0A=
    /**=0A=
     *	Set the size of the modal dialog box=0A=
     * 	=0A=
     *	@param int width =3D width of box=0A=
     *	@param int height =3D height of box=0A=
     *=0A=
     * @public	=0A=
     */		=0A=
	setSize : function(width,height)=0A=
	{=0A=
		if(width)this.width =3D width;=0A=
		if(height)this.height =3D height;		=0A=
	}=0A=
	// }}}		=0A=
	,		=0A=
	// {{{ setCssClassMessageBox(newCssClass)=0A=
    /**=0A=
     *	Assign the message box to a new css class.(in case you wants a =
different appearance on one of them)=0A=
     * 	=0A=
     *	@param String newCssClass =3D Name of new css class (Pass false =
if you want to change back to default)=0A=
     *=0A=
     * @public	=0A=
     */		=0A=
	setCssClassMessageBox : function(newCssClass)=0A=
	{=0A=
		this.cssClassOfMessageBox =3D newCssClass;=0A=
		if(this.divs_content){=0A=
			if(this.cssClassOfMessageBox)=0A=
				this.divs_content.className=3Dthis.cssClassOfMessageBox;=0A=
			else=0A=
				this.divs_content.className=3D'modalDialog_contentDiv';	=0A=
		}=0A=
					=0A=
	}=0A=
	// }}}		=0A=
	,	=0A=
	// {{{ setShadowOffset(newShadowOffset)=0A=
    /**=0A=
     *	Specify the size of shadow=0A=
     * 	=0A=
     *	@param Int newShadowOffset =3D Offset of shadow div(in pixels =
from message box - x and y)=0A=
     *=0A=
     * @public	=0A=
     */		=0A=
	setShadowOffset : function(newShadowOffset)=0A=
	{=0A=
		this.shadowOffset =3D newShadowOffset=0A=
					=0A=
	}=0A=
	// }}}		=0A=
	,	=0A=
	// {{{ display()=0A=
    /**=0A=
     *	Display the modal dialog box=0A=
     * 	=0A=
     *=0A=
     * @public	=0A=
     */		=0A=
	display : function()=0A=
	{=0A=
		if(!this.divs_transparentDiv){=0A=
			this.__createDivs();=0A=
		}	=0A=
		=0A=
		// Redisplaying divs=0A=
		this.divs_transparentDiv.style.display=3D'block';=0A=
		this.divs_content.style.display=3D'block';=0A=
		this.divs_shadow.style.display=3D'block';		=0A=
		if(this.MSIE)this.iframe.style.display=3D'block';	=0A=
		this.__resizeDivs();=0A=
		=0A=
		/* Call the __resizeDivs method twice in case the css file has =
changed. The first execution of this method may not catch these changes =
*/=0A=
		window.refToThisModalBoxObj =3D this;		=0A=
		setTimeout('window.refToThisModalBoxObj.__resizeDivs()',150);=0A=
		=0A=
		this.__insertContent();	// Calling method which inserts content into =
the message div.=0A=
	}=0A=
	// }}}		=0A=
	,=0A=
	// {{{ ()=0A=
    /**=0A=
     *	Display the modal dialog box=0A=
     * 	=0A=
     *=0A=
     * @public	=0A=
     */		=0A=
	setShadowDivVisible : function(visible)=0A=
	{=0A=
		this.shadowDivVisible =3D visible;=0A=
	}=0A=
	// }}}	=0A=
	,=0A=
	// {{{ close()=0A=
    /**=0A=
     *	Close the modal dialog box=0A=
     * 	=0A=
     *=0A=
     * @public	=0A=
     */		=0A=
	close : function()=0A=
	{=0A=
		//document.documentElement.style.overflow =3D '';	// Setting the CSS =
overflow attribute of the <html> tag back to default.=0A=
		=0A=
		/* Hiding divs */=0A=
		this.divs_transparentDiv.style.display=3D'none';=0A=
		this.divs_content.style.display=3D'none';=0A=
		this.divs_shadow.style.display=3D'none';=0A=
		if(this.MSIE)this.iframe.style.display=3D'none';=0A=
		=0A=
	}	=0A=
	// }}}	=0A=
	,=0A=
	// {{{ __addEvent()=0A=
    /**=0A=
     *	Add event=0A=
     * 	=0A=
     *=0A=
     * @private	=0A=
     */		=0A=
	addEvent : function(whichObject,eventType,functionName,suffix)=0A=
	{ =0A=
	  if(!suffix)suffix =3D '';=0A=
	  if(whichObject.attachEvent){ =0A=
	    whichObject['e'+eventType+functionName+suffix] =3D functionName; =0A=
	    whichObject[eventType+functionName+suffix] =3D =
function(){whichObject['e'+eventType+functionName+suffix]( window.event =
);} =0A=
	    whichObject.attachEvent( 'on'+eventType, =
whichObject[eventType+functionName+suffix] ); =0A=
	  } else =0A=
	    whichObject.addEventListener(eventType,functionName,false); 	    =0A=
	} =0A=
	// }}}	=0A=
	,=0A=
	// {{{ __createDivs()=0A=
    /**=0A=
     *	Create the divs for the modal dialog box=0A=
     * 	=0A=
     *=0A=
     * @private	=0A=
     */		=0A=
	__createDivs : function()=0A=
	{=0A=
		// Creating transparent div=0A=
		this.divs_transparentDiv =3D document.createElement('DIV');=0A=
		this.divs_transparentDiv.className=3D'modalDialog_transparentDivs';=0A=
		this.divs_transparentDiv.style.left =3D '0px';=0A=
		this.divs_transparentDiv.style.top =3D '0px';=0A=
		=0A=
		document.body.appendChild(this.divs_transparentDiv);=0A=
		// Creating content div=0A=
		this.divs_content =3D document.createElement('DIV');=0A=
		this.divs_content.className =3D 'modalDialog_contentDiv';=0A=
		this.divs_content.id =3D 'DHTMLSuite_modalBox_contentDiv';=0A=
		this.divs_content.style.zIndex =3D 100000;=0A=
		=0A=
		if(this.MSIE){=0A=
			this.iframe =3D document.createElement('<IFRAME src=3D"about:blank" =
frameborder=3D0>');=0A=
			this.iframe.style.zIndex =3D 90000;=0A=
			this.iframe.style.position =3D 'absolute';=0A=
			document.body.appendChild(this.iframe);	=0A=
		}=0A=
			=0A=
		document.body.appendChild(this.divs_content);=0A=
		// Creating shadow div=0A=
		this.divs_shadow =3D document.createElement('DIV');=0A=
		this.divs_shadow.className =3D 'modalDialog_contentDiv_shadow';=0A=
		this.divs_shadow.style.zIndex =3D 95000;=0A=
		document.body.appendChild(this.divs_shadow);=0A=
		window.refToModMessage =3D this;=0A=
		this.addEvent(window,'scroll',function(e){ =
window.refToModMessage.__repositionTransparentDiv() });=0A=
		this.addEvent(window,'resize',function(e){ =
window.refToModMessage.__repositionTransparentDiv() });=0A=
		=0A=
=0A=
	}=0A=
	// }}}=0A=
	,=0A=
	// {{{ __getBrowserSize()=0A=
    /**=0A=
     *	Get browser size=0A=
     * 	=0A=
     *=0A=
     * @private	=0A=
     */		=0A=
	__getBrowserSize : function()=0A=
	{=0A=
    	var bodyWidth =3D document.documentElement.clientWidth;=0A=
    	var bodyHeight =3D document.documentElement.clientHeight;=0A=
    	=0A=
		var bodyWidth, bodyHeight; =0A=
		if (self.innerHeight){ // all except Explorer =0A=
		 =0A=
		   bodyWidth =3D self.innerWidth; =0A=
		   bodyHeight =3D self.innerHeight; =0A=
		}  else if (document.documentElement && =
document.documentElement.clientHeight) {=0A=
		   // Explorer 6 Strict Mode 		 =0A=
		   bodyWidth =3D document.documentElement.clientWidth; =0A=
		   bodyHeight =3D document.documentElement.clientHeight; =0A=
		} else if (document.body) {// other Explorers 		 =0A=
		   bodyWidth =3D document.body.clientWidth; =0A=
		   bodyHeight =3D document.body.clientHeight; =0A=
		} =0A=
		return [bodyWidth,bodyHeight];		=0A=
		=0A=
	}=0A=
	// }}}	=0A=
	,=0A=
	// {{{ __resizeDivs()=0A=
    /**=0A=
     *	Resize the message divs=0A=
     * 	=0A=
     *=0A=
     * @private	=0A=
     */	=0A=
    __resizeDivs : function()=0A=
    {=0A=
    	=0A=
    	var topOffset =3D =
Math.max(document.body.scrollTop,document.documentElement.scrollTop);=0A=
=0A=
		if(this.cssClassOfMessageBox)=0A=
			this.divs_content.className=3Dthis.cssClassOfMessageBox;=0A=
		else=0A=
			this.divs_content.className=3D'modalDialog_contentDiv';	=0A=
			    	=0A=
    	if(!this.divs_transparentDiv)return;=0A=
    	=0A=
    	// Preserve scroll position=0A=
    	var st =3D =
Math.max(document.body.scrollTop,document.documentElement.scrollTop);=0A=
    	var sl =3D =
Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);=0A=
    	=0A=
    	window.scrollTo(sl,st);=0A=
    	setTimeout('window.scrollTo(' + sl + ',' + st + ');',10);=0A=
=0A=
    	this.__repositionTransparentDiv();=0A=
    	=0A=
=0A=
		var brSize =3D this.__getBrowserSize();=0A=
		var bodyWidth =3D brSize[0];=0A=
		var bodyHeight =3D brSize[1];=0A=
    	=0A=
    	// Setting width and height of content div=0A=
      	this.divs_content.style.width =3D this.width + 'px';=0A=
    	this.divs_content.style.height=3D this.height + 'px';  	=0A=
    	=0A=
    	// Creating temporary width variables since the actual width of the =
content div could be larger than this.width and this.height(i.e. padding =
and border)=0A=
    	var tmpWidth =3D this.divs_content.offsetWidth;	=0A=
    	var tmpHeight =3D this.divs_content.offsetHeight;=0A=
    	=0A=
    	=0A=
    	// Setting width and height of left transparent div=0A=
    	=0A=
    	=0A=
=0A=
    	=0A=
    	=0A=
		=0A=
    	this.divs_content.style.left =3D Math.ceil((bodyWidth - tmpWidth) / =
2) + 'px';;=0A=
    	this.divs_content.style.top =3D (Math.ceil((bodyHeight - tmpHeight) =
/ 2) +  topOffset) + 'px';=0A=
    	=0A=
 		if(this.MSIE){=0A=
 			this.iframe.style.left =3D this.divs_content.style.left;=0A=
 			this.iframe.style.top =3D this.divs_content.style.top;=0A=
 			this.iframe.style.width =3D this.divs_content.style.width;=0A=
 			this.iframe.style.height =3D this.divs_content.style.height;=0A=
 		}=0A=
 		=0A=
    	this.divs_shadow.style.left =3D =
(this.divs_content.style.left.replace('px','')/1 + this.shadowOffset) + =
'px';=0A=
    	this.divs_shadow.style.top =3D =
(this.divs_content.style.top.replace('px','')/1 + this.shadowOffset) + =
'px';=0A=
    	this.divs_shadow.style.height =3D tmpHeight + 'px';=0A=
    	this.divs_shadow.style.width =3D tmpWidth + 'px';=0A=
    	=0A=
    	=0A=
    	=0A=
    	if(!this.shadowDivVisible)this.divs_shadow.style.display=3D'none';	=
// Hiding shadow if it has been disabled=0A=
    	=0A=
    	=0A=
    }=0A=
    // }}}	=0A=
    ,=0A=
	// {{{ __insertContent()=0A=
    /**=0A=
     *	Insert content into the content div=0A=
     * 	=0A=
     *=0A=
     * @private	=0A=
     */	    =0A=
    __repositionTransparentDiv : function()=0A=
    {=0A=
    	this.divs_transparentDiv.style.top =3D =
Math.max(document.body.scrollTop,document.documentElement.scrollTop) + =
'px';=0A=
    	this.divs_transparentDiv.style.left =3D =
Math.max(document.body.scrollLeft,document.documentElement.scrollLeft) + =
'px';=0A=
		var brSize =3D this.__getBrowserSize();=0A=
		var bodyWidth =3D brSize[0];=0A=
		var bodyHeight =3D brSize[1];=0A=
    	this.divs_transparentDiv.style.width =3D bodyWidth + 'px';=0A=
    	this.divs_transparentDiv.style.height =3D bodyHeight + 'px';		=0A=
		   	=0A=
    }=0A=
	// }}}	=0A=
	,=0A=
	// {{{ __insertContent()=0A=
    /**=0A=
     *	Insert content into the content div=0A=
     * 	=0A=
     *=0A=
     * @private	=0A=
     */	=0A=
    __insertContent : function()=0A=
    {=0A=
		if(this.url){	// url specified - load content dynamically=0A=
			new Ajax.Updater('DHTMLSuite_modalBox_contentDiv', this.url);=0A=
			//ajax_loadContent('DHTMLSuite_modalBox_contentDiv',this.url);=0A=
		}else{	// no url set, put static content inside the message box=0A=
			this.divs_content.innerHTML =3D this.htmlOfModalMessage;	=0A=
		}=0A=
    }		=0A=
}=0A=
=0A=
messageObj =3D new DHTML_modalMessage();	// We only create one object of =
this class=0A=
messageObj.setShadowOffset(5);	// Large shadow=0A=
=0A=
=0A=
function displayMessage(url,wi,hi)=0A=
{=0A=
	=0A=
	messageObj.setSource(url);=0A=
	messageObj.setCssClassMessageBox(false);=0A=
	messageObj.setSize(wi,hi);=0A=
	messageObj.setShadowDivVisible(true);	// Enable shadow for these boxes=0A=
	messageObj.display();=0A=
}=0A=
=0A=
function displayStaticMessage(messageContent,cssClass,wi,hi)=0A=
{=0A=
	messageObj.setHtmlContent(messageContent);=0A=
	messageObj.setSize(wi,hi);=0A=
	messageObj.setCssClassMessageBox(cssClass);=0A=
	messageObj.setSource(false);	// no html source since we want to use a =
static message here.=0A=
	messageObj.setShadowDivVisible(false);	// Disable shadow for these =
boxes	=0A=
	messageObj.display();=0A=
	=0A=
	=0A=
}=0A=
=0A=
function closeMessage()=0A=
{=0A=
	messageObj.close();	=0A=
}
------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/greybox/AJS.js

AJS=3D{BASE_URL:"",drag_obj:null,drag_elm:null,_drop_zones:[],_cur_pos:nu=
ll,getScrollTop:function(){=0A=
var t;=0A=
if(document.documentElement&&document.documentElement.scrollTop){=0A=
t=3Ddocument.documentElement.scrollTop;=0A=
}else{=0A=
if(document.body){=0A=
t=3Ddocument.body.scrollTop;=0A=
}=0A=
}=0A=
return t;=0A=
},addClass:function(){=0A=
var _2=3DAJS.forceArray(arguments);=0A=
var _3=3D_2.pop();=0A=
var _4=3Dfunction(o){=0A=
if(!new RegExp("(^|\\s)"+_3+"(\\s|$)").test(o.className)){=0A=
o.className+=3D(o.className?" ":"")+_3;=0A=
}=0A=
};=0A=
AJS.map(_2,function(_6){=0A=
_4(_6);=0A=
});=0A=
},setStyle:function(){=0A=
var _7=3DAJS.forceArray(arguments);=0A=
var _8=3D_7.pop();=0A=
var _9=3D_7.pop();=0A=
AJS.map(_7,function(_a){=0A=
_a.style[_9]=3DAJS.getCssDim(_8);=0A=
});=0A=
},extend:function(_b){=0A=
var _c=3Dnew this("no_init");=0A=
for(k in _b){=0A=
var _d=3D_c[k];=0A=
var _e=3D_b[k];=0A=
if(_d&&_d!=3D_e&&typeof _e=3D=3D"function"){=0A=
_e=3Dthis._parentize(_e,_d);=0A=
}=0A=
_c[k]=3D_e;=0A=
}=0A=
return new AJS.Class(_c);=0A=
},log:function(o){=0A=
if(window.console){=0A=
console.log(o);=0A=
}else{=0A=
var div=3DAJS.$("ajs_logger");=0A=
if(!div){=0A=
div=3DAJS.DIV({id:"ajs_logger","style":"color: green; position: =
absolute; left: 0"});=0A=
div.style.top=3DAJS.getScrollTop()+"px";=0A=
AJS.ACN(AJS.getBody(),div);=0A=
}=0A=
AJS.setHTML(div,""+o);=0A=
}=0A=
},setHeight:function(){=0A=
var _11=3DAJS.forceArray(arguments);=0A=
_11.splice(_11.length-1,0,"height");=0A=
AJS.setStyle.apply(null,_11);=0A=
},_getRealScope:function(fn,_13){=0A=
_13=3DAJS.$A(_13);=0A=
var _14=3Dfn._cscope||window;=0A=
return function(){=0A=
var _15=3DAJS.$FA(arguments).concat(_13);=0A=
return fn.apply(_14,_15);=0A=
};=0A=
},documentInsert:function(elm){=0A=
if(typeof (elm)=3D=3D"string"){=0A=
elm=3DAJS.HTML2DOM(elm);=0A=
}=0A=
document.write("<span id=3D\"dummy_holder\"></span>");=0A=
AJS.swapDOM(AJS.$("dummy_holder"),elm);=0A=
},getWindowSize:function(doc){=0A=
doc=3Ddoc||document;=0A=
var _18,_19;=0A=
if(self.innerHeight){=0A=
_18=3Dself.innerWidth;=0A=
_19=3Dself.innerHeight;=0A=
}else{=0A=
if(doc.documentElement&&doc.documentElement.clientHeight){=0A=
_18=3Ddoc.documentElement.clientWidth;=0A=
_19=3Ddoc.documentElement.clientHeight;=0A=
}else{=0A=
if(doc.body){=0A=
_18=3Ddoc.body.clientWidth;=0A=
_19=3Ddoc.body.clientHeight;=0A=
}=0A=
}=0A=
}=0A=
return {"w":_18,"h":_19};=0A=
},flattenList:function(_1a){=0A=
var r=3D[];=0A=
var _1c=3Dfunction(r,l){=0A=
AJS.map(l,function(o){=0A=
if(o=3D=3Dnull){=0A=
}else{=0A=
if(AJS.isArray(o)){=0A=
_1c(r,o);=0A=
}else{=0A=
r.push(o);=0A=
}=0A=
}=0A=
});=0A=
};=0A=
_1c(r,_1a);=0A=
return r;=0A=
},isFunction:function(obj){=0A=
return (typeof obj=3D=3D"function");=0A=
},setEventKey:function(e){=0A=
e.key=3De.keyCode?e.keyCode:e.charCode;=0A=
if(window.event){=0A=
e.ctrl=3Dwindow.event.ctrlKey;=0A=
e.shift=3Dwindow.event.shiftKey;=0A=
}else{=0A=
e.ctrl=3De.ctrlKey;=0A=
e.shift=3De.shiftKey;=0A=
}=0A=
switch(e.key){=0A=
case 63232:=0A=
e.key=3D38;=0A=
break;=0A=
case 63233:=0A=
e.key=3D40;=0A=
break;=0A=
case 63235:=0A=
e.key=3D39;=0A=
break;=0A=
case 63234:=0A=
e.key=3D37;=0A=
break;=0A=
}=0A=
},removeElement:function(){=0A=
var _22=3DAJS.forceArray(arguments);=0A=
AJS.map(_22,function(elm){=0A=
AJS.swapDOM(elm,null);=0A=
});=0A=
},_unloadListeners:function(){=0A=
if(AJS.listeners){=0A=
AJS.map(AJS.listeners,function(elm,_25,fn){=0A=
AJS.REV(elm,_25,fn);=0A=
});=0A=
}=0A=
AJS.listeners=3D[];=0A=
},join:function(_27,_28){=0A=
try{=0A=
return _28.join(_27);=0A=
}=0A=
catch(e){=0A=
var r=3D_28[0]||"";=0A=
AJS.map(_28,function(elm){=0A=
r+=3D_27+elm;=0A=
},1);=0A=
return r+"";=0A=
}=0A=
},getIndex:function(elm,_2c,_2d){=0A=
for(var i=3D0;i<_2c.length;i++){=0A=
if(_2d&&_2d(_2c[i])||elm=3D=3D_2c[i]){=0A=
return i;=0A=
}=0A=
}=0A=
return -1;=0A=
},isIn:function(elm,_30){=0A=
var i=3DAJS.getIndex(elm,_30);=0A=
if(i!=3D-1){=0A=
return true;=0A=
}else{=0A=
return false;=0A=
}=0A=
},isArray:function(obj){=0A=
return obj instanceof Array;=0A=
},setLeft:function(){=0A=
var _33=3DAJS.forceArray(arguments);=0A=
_33.splice(_33.length-1,0,"left");=0A=
AJS.setStyle.apply(null,_33);=0A=
},appendChildNodes:function(elm){=0A=
if(arguments.length>=3D2){=0A=
AJS.map(arguments,function(n){=0A=
if(AJS.isString(n)){=0A=
n=3DAJS.TN(n);=0A=
}=0A=
if(AJS.isDefined(n)){=0A=
elm.appendChild(n);=0A=
}=0A=
},1);=0A=
}=0A=
return elm;=0A=
},getElementsByTagAndClassName:function(_36,_37,_38,_39){=0A=
var _3a=3D[];=0A=
if(!AJS.isDefined(_38)){=0A=
_38=3Ddocument;=0A=
}=0A=
if(!AJS.isDefined(_36)){=0A=
_36=3D"*";=0A=
}=0A=
var els=3D_38.getElementsByTagName(_36);=0A=
var _3c=3Dels.length;=0A=
var _3d=3Dnew RegExp("(^|\\s)"+_37+"(\\s|$)");=0A=
for(i=3D0,j=3D0;i<_3c;i++){=0A=
if(_3d.test(els[i].className)||_37=3D=3Dnull){=0A=
_3a[j]=3Dels[i];=0A=
j++;=0A=
}=0A=
}=0A=
if(_39){=0A=
return _3a[0];=0A=
}else{=0A=
return _3a;=0A=
}=0A=
},isOpera:function(){=0A=
return (navigator.userAgent.toLowerCase().indexOf("opera")!=3D-1);=0A=
},isString:function(obj){=0A=
return (typeof obj=3D=3D"string");=0A=
},hideElement:function(elm){=0A=
var _40=3DAJS.forceArray(arguments);=0A=
AJS.map(_40,function(elm){=0A=
elm.style.display=3D"none";=0A=
});=0A=
},setOpacity:function(elm,p){=0A=
elm.style.opacity=3Dp;=0A=
elm.style.filter=3D"alpha(opacity=3D"+p*100+")";=0A=
},insertBefore:function(elm,_45){=0A=
_45.parentNode.insertBefore(elm,_45);=0A=
return elm;=0A=
},setWidth:function(){=0A=
var _46=3DAJS.forceArray(arguments);=0A=
_46.splice(_46.length-1,0,"width");=0A=
AJS.setStyle.apply(null,_46);=0A=
},createArray:function(v){=0A=
if(AJS.isArray(v)&&!AJS.isString(v)){=0A=
return v;=0A=
}else{=0A=
if(!v){=0A=
return [];=0A=
}else{=0A=
return [v];=0A=
}=0A=
}=0A=
},isDict:function(o){=0A=
var _49=3DString(o);=0A=
return _49.indexOf(" Object")!=3D-1;=0A=
},isMozilla:function(){=0A=
return =
(navigator.userAgent.toLowerCase().indexOf("gecko")!=3D-1&&navigator.prod=
uctSub>=3D20030210);=0A=
},removeEventListener:function(elm,_4b,fn,_4d){=0A=
var _4e=3D"ajsl_"+_4b+fn;=0A=
if(!_4d){=0A=
_4d=3Dfalse;=0A=
}=0A=
fn=3Delm[_4e]||fn;=0A=
if(elm["on"+_4b]=3D=3Dfn){=0A=
elm["on"+_4b]=3Delm[_4e+"old"];=0A=
}=0A=
if(elm.removeEventListener){=0A=
elm.removeEventListener(_4b,fn,_4d);=0A=
if(AJS.isOpera()){=0A=
elm.removeEventListener(_4b,fn,!_4d);=0A=
}=0A=
}else{=0A=
if(elm.detachEvent){=0A=
elm.detachEvent("on"+_4b,fn);=0A=
}=0A=
}=0A=
},callLater:function(fn,_50){=0A=
var _51=3Dfunction(){=0A=
fn();=0A=
};=0A=
window.setTimeout(_51,_50);=0A=
},setTop:function(){=0A=
var _52=3DAJS.forceArray(arguments);=0A=
_52.splice(_52.length-1,0,"top");=0A=
AJS.setStyle.apply(null,_52);=0A=
},_createDomShortcuts:function(){=0A=
var =
_53=3D["ul","li","td","tr","th","tbody","table","input","span","b","a","d=
iv","img","button","h1","h2","h3","h4","h5","h6","br","textarea","form","=
p","select","option","optgroup","iframe","script","center","dl","dt","dd"=
,"small","pre","i"];=0A=
var _54=3Dfunction(elm){=0A=
AJS[elm.toUpperCase()]=3Dfunction(){=0A=
return AJS.createDOM.apply(null,[elm,arguments]);=0A=
};=0A=
};=0A=
AJS.map(_53,_54);=0A=
AJS.TN=3Dfunction(_56){=0A=
return document.createTextNode(_56);=0A=
};=0A=
},addCallback:function(fn){=0A=
this.callbacks.unshift(fn);=0A=
},bindMethods:function(_58){=0A=
for(var k in _58){=0A=
var _5a=3D_58[k];=0A=
if(typeof (_5a)=3D=3D"function"){=0A=
_58[k]=3DAJS.$b(_5a,_58);=0A=
}=0A=
}=0A=
},partial:function(fn){=0A=
var _5c=3DAJS.$FA(arguments);=0A=
_5c.shift();=0A=
return function(){=0A=
_5c=3D_5c.concat(AJS.$FA(arguments));=0A=
return fn.apply(window,_5c);=0A=
};=0A=
},isNumber:function(obj){=0A=
return (typeof obj=3D=3D"number");=0A=
},getCssDim:function(dim){=0A=
if(AJS.isString(dim)){=0A=
return dim;=0A=
}else{=0A=
return dim+"px";=0A=
}=0A=
},isIe:function(){=0A=
return =
(navigator.userAgent.toLowerCase().indexOf("msie")!=3D-1&&navigator.userA=
gent.toLowerCase().indexOf("opera")=3D=3D-1);=0A=
},removeClass:function(){=0A=
var _5f=3DAJS.forceArray(arguments);=0A=
var cls=3D_5f.pop();=0A=
var _61=3Dfunction(o){=0A=
o.className=3Do.className.replace(new RegExp("\\s?"+cls,"g"),"");=0A=
};=0A=
AJS.map(_5f,function(elm){=0A=
_61(elm);=0A=
});=0A=
},setHTML:function(elm,_65){=0A=
elm.innerHTML=3D_65;=0A=
return elm;=0A=
},map:function(_66,fn,_68,_69){=0A=
var i=3D0,l=3D_66.length;=0A=
if(_68){=0A=
i=3D_68;=0A=
}=0A=
if(_69){=0A=
l=3D_69;=0A=
}=0A=
for(i;i<l;i++){=0A=
var val=3Dfn(_66[i],i);=0A=
if(val!=3Dundefined){=0A=
return val;=0A=
}=0A=
}=0A=
},addEventListener:function(elm,_6e,fn,_70,_71){=0A=
var _72=3D"ajsl_"+_6e+fn;=0A=
if(!_71){=0A=
_71=3Dfalse;=0A=
}=0A=
AJS.listeners=3DAJS.$A(AJS.listeners);=0A=
if(AJS.isIn(_6e,["keypress","keydown","keyup","click"])){=0A=
var _73=3Dfn;=0A=
fn=3Dfunction(e){=0A=
AJS.setEventKey(e);=0A=
return _73.apply(window,arguments);=0A=
};=0A=
}=0A=
var _75=3DAJS.isIn(_6e,["submit","load","scroll","resize"]);=0A=
var _76=3DAJS.$A(elm);=0A=
AJS.map(_76,function(_77){=0A=
if(_70){=0A=
var _78=3Dfn;=0A=
fn=3Dfunction(e){=0A=
AJS.REV(_77,_6e,fn);=0A=
return _78.apply(window,arguments);=0A=
};=0A=
}=0A=
if(_75){=0A=
var _7a=3D_77["on"+_6e];=0A=
var _7b=3Dfunction(){=0A=
if(_7a){=0A=
fn(arguments);=0A=
return _7a(arguments);=0A=
}else{=0A=
return fn(arguments);=0A=
}=0A=
};=0A=
_77[_72]=3D_7b;=0A=
_77[_72+"old"]=3D_7a;=0A=
elm["on"+_6e]=3D_7b;=0A=
}else{=0A=
_77[_72]=3Dfn;=0A=
if(_77.attachEvent){=0A=
_77.attachEvent("on"+_6e,fn);=0A=
}else{=0A=
if(_77.addEventListener){=0A=
_77.addEventListener(_6e,fn,_71);=0A=
}=0A=
}=0A=
AJS.listeners.push([_77,_6e,fn]);=0A=
}=0A=
});=0A=
},preloadImages:function(){=0A=
AJS.AEV(window,"load",AJS.$p(function(_7c){=0A=
AJS.map(_7c,function(src){=0A=
var pic=3Dnew Image();=0A=
pic.src=3Dsrc;=0A=
});=0A=
},arguments));=0A=
},forceArray:function(_7f){=0A=
var r=3D[];=0A=
AJS.map(_7f,function(elm){=0A=
r.push(elm);=0A=
});=0A=
return r;=0A=
},update:function(l1,l2){=0A=
for(var i in l2){=0A=
l1[i]=3Dl2[i];=0A=
}=0A=
return l1;=0A=
},getBody:function(){=0A=
return AJS.$bytc("body")[0];=0A=
},HTML2DOM:function(_85,_86){=0A=
var d=3DAJS.DIV();=0A=
d.innerHTML=3D_85;=0A=
if(_86){=0A=
return d.childNodes[0];=0A=
}else{=0A=
return d;=0A=
}=0A=
},getElement:function(id){=0A=
if(AJS.isString(id)||AJS.isNumber(id)){=0A=
return document.getElementById(id);=0A=
}else{=0A=
return id;=0A=
}=0A=
},showElement:function(){=0A=
var _89=3DAJS.forceArray(arguments);=0A=
AJS.map(_89,function(elm){=0A=
elm.style.display=3D"";=0A=
});=0A=
},bind:function(fn,_8c,_8d){=0A=
fn._cscope=3D_8c;=0A=
return AJS._getRealScope(fn,_8d);=0A=
},createDOM:function(_8e,_8f){=0A=
var i=3D0,_91;=0A=
var elm=3Ddocument.createElement(_8e);=0A=
var _93=3D_8f[0];=0A=
if(AJS.isDict(_8f[i])){=0A=
for(k in _93){=0A=
_91=3D_93[k];=0A=
if(k=3D=3D"style"||k=3D=3D"s"){=0A=
elm.style.cssText=3D_91;=0A=
}else{=0A=
if(k=3D=3D"c"||k=3D=3D"class"||k=3D=3D"className"){=0A=
elm.className=3D_91;=0A=
}else{=0A=
elm.setAttribute(k,_91);=0A=
}=0A=
}=0A=
}=0A=
i++;=0A=
}=0A=
if(_93=3D=3Dnull){=0A=
i=3D1;=0A=
}=0A=
for(var j=3Di;j<_8f.length;j++){=0A=
var _91=3D_8f[j];=0A=
if(_91){=0A=
var _95=3Dtypeof (_91);=0A=
if(_95=3D=3D"string"||_95=3D=3D"number"){=0A=
_91=3DAJS.TN(_91);=0A=
}=0A=
elm.appendChild(_91);=0A=
}=0A=
}=0A=
return elm;=0A=
},swapDOM:function(_96,src){=0A=
_96=3DAJS.getElement(_96);=0A=
var _98=3D_96.parentNode;=0A=
if(src){=0A=
src=3DAJS.getElement(src);=0A=
_98.replaceChild(src,_96);=0A=
}else{=0A=
_98.removeChild(_96);=0A=
}=0A=
return src;=0A=
},isDefined:function(o){=0A=
return (o!=3D"undefined"&&o!=3Dnull);=0A=
}};=0A=
AJS.$=3DAJS.getElement;=0A=
AJS.$$=3DAJS.getElements;=0A=
AJS.$f=3DAJS.getFormElement;=0A=
AJS.$p=3DAJS.partial;=0A=
AJS.$b=3DAJS.bind;=0A=
AJS.$A=3DAJS.createArray;=0A=
AJS.DI=3DAJS.documentInsert;=0A=
AJS.ACN=3DAJS.appendChildNodes;=0A=
AJS.RCN=3DAJS.replaceChildNodes;=0A=
AJS.AEV=3DAJS.addEventListener;=0A=
AJS.REV=3DAJS.removeEventListener;=0A=
AJS.$bytc=3DAJS.getElementsByTagAndClassName;=0A=
AJS.$AP=3DAJS.absolutePosition;=0A=
AJS.$FA=3DAJS.forceArray;=0A=
AJS.addEventListener(window,"unload",AJS._unloadListeners);=0A=
AJS._createDomShortcuts();=0A=
AJS.Class=3Dfunction(_9a){=0A=
var fn=3Dfunction(){=0A=
if(arguments[0]!=3D"no_init"){=0A=
return this.init.apply(this,arguments);=0A=
}=0A=
};=0A=
fn.prototype=3D_9a;=0A=
AJS.update(fn,AJS.Class.prototype);=0A=
return fn;=0A=
};=0A=
AJS.Class.prototype=3D{extend:function(_9c){=0A=
var _9d=3Dnew this("no_init");=0A=
for(k in _9c){=0A=
var _9e=3D_9d[k];=0A=
var cur=3D_9c[k];=0A=
if(_9e&&_9e!=3Dcur&&typeof cur=3D=3D"function"){=0A=
cur=3Dthis._parentize(cur,_9e);=0A=
}=0A=
_9d[k]=3Dcur;=0A=
}=0A=
return new AJS.Class(_9d);=0A=
},implement:function(_a0){=0A=
AJS.update(this.prototype,_a0);=0A=
},_parentize:function(cur,_a2){=0A=
return function(){=0A=
this.parent=3D_a2;=0A=
return cur.apply(this,arguments);=0A=
};=0A=
}};=0A=
script_loaded=3Dtrue;=0A=
=0A=
=0A=
script_loaded=3Dtrue;
------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/greybox/AJS_fx.js

AJS.fx=3D{_shades:{0:"ffffff",1:"ffffee",2:"ffffdd",3:"ffffcc",4:"ffffbb"=
,5:"ffffaa",6:"ffff99"},highlight:function(_1,_2){=0A=
var _3=3Dnew AJS.fx.Base();=0A=
_3.elm=3DAJS.$(_1);=0A=
_3.options.duration=3D600;=0A=
_3.setOptions(_2);=0A=
AJS.update(_3,{increase:function(){=0A=
if(this.now=3D=3D7){=0A=
_1.style.backgroundColor=3D"#fff";=0A=
}else{=0A=
_1.style.backgroundColor=3D"#"+AJS.fx._shades[Math.floor(this.now)];=0A=
}=0A=
}});=0A=
return _3.custom(6,0);=0A=
},fadeIn:function(_4,_5){=0A=
_5=3D_5||{};=0A=
if(!_5.from){=0A=
_5.from=3D0;=0A=
AJS.setOpacity(_4,0);=0A=
}=0A=
if(!_5.to){=0A=
_5.to=3D1;=0A=
}=0A=
var s=3Dnew AJS.fx.Style(_4,"opacity",_5);=0A=
return s.custom(_5.from,_5.to);=0A=
},fadeOut:function(_7,_8){=0A=
_8=3D_8||{};=0A=
if(!_8.from){=0A=
_8.from=3D1;=0A=
}=0A=
if(!_8.to){=0A=
_8.to=3D0;=0A=
}=0A=
_8.duration=3D300;=0A=
var s=3Dnew AJS.fx.Style(_7,"opacity",_8);=0A=
return s.custom(_8.from,_8.to);=0A=
},setWidth:function(_a,_b){=0A=
var s=3Dnew AJS.fx.Style(_a,"width",_b);=0A=
return s.custom(_b.from,_b.to);=0A=
},setHeight:function(_d,_e){=0A=
var s=3Dnew AJS.fx.Style(_d,"height",_e);=0A=
return s.custom(_e.from,_e.to);=0A=
}};=0A=
AJS.fx.Base=3Dnew AJS.Class({init:function(_10){=0A=
this.options=3D{onStart:function(){=0A=
},onComplete:function(){=0A=
},transition:AJS.fx.Transitions.sineInOut,duration:500,wait:true,fps:50};=0A=
AJS.update(this.options,_10);=0A=
AJS.bindMethods(this);=0A=
},setOptions:function(_11){=0A=
AJS.update(this.options,_11);=0A=
},step:function(){=0A=
var _12=3Dnew Date().getTime();=0A=
if(_12<this.time+this.options.duration){=0A=
this.cTime=3D_12-this.time;=0A=
this.setNow();=0A=
}else{=0A=
setTimeout(AJS.$b(this.options.onComplete,this,[this.elm]),10);=0A=
this.clearTimer();=0A=
this.now=3Dthis.to;=0A=
}=0A=
this.increase();=0A=
},setNow:function(){=0A=
this.now=3Dthis.compute(this.from,this.to);=0A=
},compute:function(_13,to){=0A=
var _15=3Dto-_13;=0A=
return this.options.transition(this.cTime,_13,_15,this.options.duration);=0A=
},clearTimer:function(){=0A=
clearInterval(this.timer);=0A=
this.timer=3Dnull;=0A=
return this;=0A=
},_start:function(_16,to){=0A=
if(!this.options.wait){=0A=
this.clearTimer();=0A=
}=0A=
if(this.timer){=0A=
return;=0A=
}=0A=
setTimeout(AJS.$p(this.options.onStart,this.elm),10);=0A=
this.from=3D_16;=0A=
this.to=3Dto;=0A=
this.time=3Dnew Date().getTime();=0A=
this.timer=3DsetInterval(this.step,Math.round(1000/this.options.fps));=0A=
return this;=0A=
},custom:function(_18,to){=0A=
return this._start(_18,to);=0A=
},set:function(to){=0A=
this.now=3Dto;=0A=
this.increase();=0A=
return this;=0A=
},setStyle:function(elm,_1c,val){=0A=
if(this.property=3D=3D"opacity"){=0A=
AJS.setOpacity(elm,val);=0A=
}else{=0A=
AJS.setStyle(elm,_1c,val);=0A=
}=0A=
}});=0A=
AJS.fx.Style=3DAJS.fx.Base.extend({init:function(elm,_1f,_20){=0A=
this.parent();=0A=
this.elm=3Delm;=0A=
this.setOptions(_20);=0A=
this.property=3D_1f;=0A=
},increase:function(){=0A=
this.setStyle(this.elm,this.property,this.now);=0A=
}});=0A=
AJS.fx.Styles=3DAJS.fx.Base.extend({init:function(elm,_22){=0A=
this.parent();=0A=
this.elm=3DAJS.$(elm);=0A=
this.setOptions(_22);=0A=
this.now=3D{};=0A=
},setNow:function(){=0A=
for(p in this.from){=0A=
this.now[p]=3Dthis.compute(this.from[p],this.to[p]);=0A=
}=0A=
},custom:function(obj){=0A=
if(this.timer&&this.options.wait){=0A=
return;=0A=
}=0A=
var _24=3D{};=0A=
var to=3D{};=0A=
for(p in obj){=0A=
_24[p]=3Dobj[p][0];=0A=
to[p]=3Dobj[p][1];=0A=
}=0A=
return this._start(_24,to);=0A=
},increase:function(){=0A=
for(var p in this.now){=0A=
this.setStyle(this.elm,p,this.now[p]);=0A=
}=0A=
}});=0A=
AJS.fx.Transitions=3D{linear:function(t,b,c,d){=0A=
return c*t/d+b;=0A=
},sineInOut:function(t,b,c,d){=0A=
return -c/2*(Math.cos(Math.PI*t/d)-1)+b;=0A=
}};=0A=
script_loaded=3Dtrue;=0A=
=0A=
=0A=
script_loaded=3Dtrue;
------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/javascript/greybox/gb_scripts.js

var GB_CURRENT=3Dnull;=0A=
GB_hide=3Dfunction(cb){=0A=
GB_CURRENT.hide(cb);=0A=
};=0A=
GreyBox=3Dnew AJS.Class({init:function(_2){=0A=
this.use_fx=3DAJS.fx;=0A=
this.type=3D"page";=0A=
this.overlay_click_close=3Dfalse;=0A=
this.salt=3D0;=0A=
this.root_dir=3DGB_ROOT_DIR;=0A=
this.callback_fns=3D[];=0A=
this.reload_on_close=3Dfalse;=0A=
this.src_loader=3Dthis.root_dir+"loader_frame.html";=0A=
var _3=3Dwindow.location.hostname.indexOf("www");=0A=
var _4=3Dthis.src_loader.indexOf("www");=0A=
if(_3!=3D-1&&_4=3D=3D-1){=0A=
this.src_loader=3Dthis.src_loader.replace("://","://www.");=0A=
}=0A=
if(_3=3D=3D-1&&_4!=3D-1){=0A=
this.src_loader=3Dthis.src_loader.replace("://www.","://");=0A=
}=0A=
this.show_loading=3Dtrue;=0A=
AJS.update(this,_2);=0A=
},addCallback:function(fn){=0A=
if(fn){=0A=
this.callback_fns.push(fn);=0A=
}=0A=
},show:function(_6){=0A=
GB_CURRENT=3Dthis;=0A=
this.url=3D_6;=0A=
var _7=3D[AJS.$bytc("object"),AJS.$bytc("select")];=0A=
AJS.map(AJS.flattenList(_7),function(_8){=0A=
_8.style.visibility=3D"hidden";=0A=
});=0A=
this.createElements();=0A=
return false;=0A=
},hide:function(cb){=0A=
var me=3Dthis;=0A=
AJS.callLater(function(){=0A=
var _b=3Dme.callback_fns;=0A=
if(_b!=3D[]){=0A=
AJS.map(_b,function(fn){=0A=
fn();=0A=
});=0A=
}=0A=
me.onHide();=0A=
if(me.use_fx){=0A=
var _d=3Dme.overlay;=0A=
AJS.fx.fadeOut(me.overlay,{onComplete:function(){=0A=
AJS.removeElement(_d);=0A=
_d=3Dnull;=0A=
},duration:300});=0A=
AJS.removeElement(me.g_window);=0A=
}else{=0A=
AJS.removeElement(me.g_window,me.overlay);=0A=
}=0A=
me.removeFrame();=0A=
AJS.REV(window,"scroll",_GB_setOverlayDimension);=0A=
AJS.REV(window,"resize",_GB_update);=0A=
var _e=3D[AJS.$bytc("object"),AJS.$bytc("select")];=0A=
AJS.map(AJS.flattenList(_e),function(_f){=0A=
_f.style.visibility=3D"visible";=0A=
});=0A=
GB_CURRENT=3Dnull;=0A=
if(me.reload_on_close){=0A=
window.location.reload();=0A=
}=0A=
if(AJS.isFunction(cb)){=0A=
cb();=0A=
}=0A=
},10);=0A=
},update:function(){=0A=
this.setOverlayDimension();=0A=
this.setFrameSize();=0A=
this.setWindowPosition();=0A=
},createElements:function(){=0A=
this.initOverlay();=0A=
this.g_window=3DAJS.DIV({"id":"GB_window"});=0A=
AJS.hideElement(this.g_window);=0A=
AJS.getBody().insertBefore(this.g_window,this.overlay.nextSibling);=0A=
this.initFrame();=0A=
this.initHook();=0A=
this.update();=0A=
var me=3Dthis;=0A=
if(this.use_fx){=0A=
AJS.fx.fadeIn(this.overlay,{duration:300,to:0.7,onComplete:function(){=0A=
me.onShow();=0A=
AJS.showElement(me.g_window);=0A=
me.startLoading();=0A=
}});=0A=
}else{=0A=
AJS.setOpacity(this.overlay,0.7);=0A=
AJS.showElement(this.g_window);=0A=
this.onShow();=0A=
this.startLoading();=0A=
}=0A=
AJS.AEV(window,"scroll",_GB_setOverlayDimension);=0A=
AJS.AEV(window,"resize",_GB_update);=0A=
},removeFrame:function(){=0A=
try{=0A=
AJS.removeElement(this.iframe);=0A=
}=0A=
catch(e){=0A=
}=0A=
this.iframe=3Dnull;=0A=
},startLoading:function(){=0A=
this.iframe.src=3Dthis.src_loader+"?s=3D"+this.salt++;=0A=
AJS.showElement(this.iframe);=0A=
},setOverlayDimension:function(){=0A=
var _11=3DAJS.getWindowSize();=0A=
if(AJS.isMozilla()||AJS.isOpera()){=0A=
AJS.setWidth(this.overlay,"100%");=0A=
}else{=0A=
AJS.setWidth(this.overlay,_11.w);=0A=
}=0A=
var =
_12=3DMath.max(AJS.getScrollTop()+_11.h,AJS.getScrollTop()+this.height);=0A=
if(_12<AJS.getScrollTop()){=0A=
AJS.setHeight(this.overlay,_12);=0A=
}else{=0A=
AJS.setHeight(this.overlay,AJS.getScrollTop()+_11.h);=0A=
}=0A=
},initOverlay:function(){=0A=
this.overlay=3DAJS.DIV({"id":"GB_overlay"});=0A=
if(this.overlay_click_close){=0A=
AJS.AEV(this.overlay,"click",GB_hide);=0A=
}=0A=
AJS.setOpacity(this.overlay,0);=0A=
AJS.getBody().insertBefore(this.overlay,AJS.getBody().firstChild);=0A=
},initFrame:function(){=0A=
if(!this.iframe){=0A=
var d=3D{"name":"GB_frame","class":"GB_frame","frameBorder":0};=0A=
if(AJS.isIe()){=0A=
d.src=3D"javascript:false;document.write(\"\");";=0A=
}=0A=
this.iframe=3DAJS.IFRAME(d);=0A=
this.middle_cnt=3DAJS.DIV({"class":"content"},this.iframe);=0A=
this.top_cnt=3DAJS.DIV();=0A=
this.bottom_cnt=3DAJS.DIV();=0A=
AJS.ACN(this.g_window,this.top_cnt,this.middle_cnt,this.bottom_cnt);=0A=
}=0A=
},onHide:function(){=0A=
},onShow:function(){=0A=
},setFrameSize:function(){=0A=
},setWindowPosition:function(){=0A=
},initHook:function(){=0A=
}});=0A=
_GB_update=3Dfunction(){=0A=
if(GB_CURRENT){=0A=
GB_CURRENT.update();=0A=
}=0A=
};=0A=
_GB_setOverlayDimension=3Dfunction(){=0A=
if(GB_CURRENT){=0A=
GB_CURRENT.setOverlayDimension();=0A=
}=0A=
};=0A=
AJS.preloadImages(GB_ROOT_DIR+"indicator.gif");=0A=
script_loaded=3Dtrue;=0A=
var GB_SETS=3D{};=0A=
function decoGreyboxLinks(){=0A=
var as=3DAJS.$bytc("a");=0A=
AJS.map(as,function(a){=0A=
if(a.getAttribute("href")&&a.getAttribute("rel")){=0A=
var rel=3Da.getAttribute("rel");=0A=
if(rel.indexOf("gb_")=3D=3D0){=0A=
var _17=3Drel.match(/\w+/)[0];=0A=
var _18=3Drel.match(/\[(.*)\]/)[1];=0A=
var _19=3D0;=0A=
var _1a=3D{"caption":a.title||"","url":a.href};=0A=
if(_17=3D=3D"gb_pageset"||_17=3D=3D"gb_imageset"){=0A=
if(!GB_SETS[_18]){=0A=
GB_SETS[_18]=3D[];=0A=
}=0A=
GB_SETS[_18].push(_1a);=0A=
_19=3DGB_SETS[_18].length;=0A=
}=0A=
if(_17=3D=3D"gb_pageset"){=0A=
a.onclick=3Dfunction(){=0A=
GB_showFullScreenSet(GB_SETS[_18],_19);=0A=
return false;=0A=
};=0A=
}=0A=
if(_17=3D=3D"gb_imageset"){=0A=
a.onclick=3Dfunction(){=0A=
GB_showImageSet(GB_SETS[_18],_19);=0A=
return false;=0A=
};=0A=
}=0A=
if(_17=3D=3D"gb_image"){=0A=
a.onclick=3Dfunction(){=0A=
GB_showImage(_1a.caption,_1a.url);=0A=
return false;=0A=
};=0A=
}=0A=
if(_17=3D=3D"gb_page"){=0A=
a.onclick=3Dfunction(){=0A=
var sp=3D_18.split(/, ?/);=0A=
GB_show(_1a.caption,_1a.url,parseInt(sp[1]),parseInt(sp[0]));=0A=
return false;=0A=
};=0A=
}=0A=
if(_17=3D=3D"gb_page_fs"){=0A=
a.onclick=3Dfunction(){=0A=
GB_showFullScreen(_1a.caption,_1a.url);=0A=
return false;=0A=
};=0A=
}=0A=
if(_17=3D=3D"gb_page_center"){=0A=
a.onclick=3Dfunction(){=0A=
var sp=3D_18.split(/, ?/);=0A=
GB_showCenter(_1a.caption,_1a.url,parseInt(sp[1]),parseInt(sp[0]));=0A=
return false;=0A=
};=0A=
}=0A=
}=0A=
}=0A=
});=0A=
}=0A=
AJS.AEV(window,"load",decoGreyboxLinks);=0A=
GB_showImage=3Dfunction(_1d,url,_1f){=0A=
var =
_20=3D{width:300,height:300,type:"image",fullscreen:false,center_win:true=
,caption:_1d,callback_fn:_1f};=0A=
var win=3Dnew GB_Gallery(_20);=0A=
return win.show(url);=0A=
};=0A=
GB_showPage=3Dfunction(_22,url,_24){=0A=
var =
_25=3D{type:"page",caption:_22,callback_fn:_24,fullscreen:true,center_win=
:false};=0A=
var win=3Dnew GB_Gallery(_25);=0A=
return win.show(url);=0A=
};=0A=
GB_Gallery=3DGreyBox.extend({init:function(_27){=0A=
this.parent({});=0A=
this.img_close=3Dthis.root_dir+"g_close.gif";=0A=
AJS.update(this,_27);=0A=
this.addCallback(this.callback_fn);=0A=
},initHook:function(){=0A=
AJS.addClass(this.g_window,"GB_Gallery");=0A=
var _28=3DAJS.DIV({"class":"inner"});=0A=
this.header=3DAJS.DIV({"class":"GB_header"},_28);=0A=
AJS.setOpacity(this.header,0);=0A=
AJS.getBody().insertBefore(this.header,this.overlay.nextSibling);=0A=
var =
_29=3DAJS.TD({"id":"GB_caption","class":"caption","width":"40%"},this.cap=
tion);=0A=
var _2a=3DAJS.TD({"id":"GB_middle","class":"middle","width":"20%"});=0A=
var _2b=3DAJS.IMG({"src":this.img_close});=0A=
AJS.AEV(_2b,"click",GB_hide);=0A=
var _2c=3DAJS.TD({"class":"close","width":"40%"},_2b);=0A=
var _2d=3DAJS.TBODY(AJS.TR(_29,_2a,_2c));=0A=
var _2e=3DAJS.TABLE({"cellspacing":"0","cellpadding":0,"border":0},_2d);=0A=
AJS.ACN(_28,_2e);=0A=
if(this.fullscreen){=0A=
AJS.AEV(window,"scroll",AJS.$b(this.setWindowPosition,this));=0A=
}else{=0A=
AJS.AEV(window,"scroll",AJS.$b(this._setHeaderPos,this));=0A=
}=0A=
},setFrameSize:function(){=0A=
var _2f=3Dthis.overlay.offsetWidth;=0A=
var _30=3DAJS.getWindowSize();=0A=
if(this.fullscreen){=0A=
this.width=3D_2f-40;=0A=
this.height=3D_30.h-80;=0A=
}=0A=
AJS.setWidth(this.iframe,this.width);=0A=
AJS.setHeight(this.iframe,this.height);=0A=
AJS.setWidth(this.header,_2f);=0A=
},_setHeaderPos:function(){=0A=
AJS.setTop(this.header,AJS.getScrollTop()+10);=0A=
},setWindowPosition:function(){=0A=
var _31=3Dthis.overlay.offsetWidth;=0A=
var _32=3DAJS.getWindowSize();=0A=
AJS.setLeft(this.g_window,((_31-50-this.width)/2));=0A=
var _33=3DAJS.getScrollTop()+55;=0A=
if(!this.center_win){=0A=
AJS.setTop(this.g_window,_33);=0A=
}else{=0A=
var fl=3D((_32.h-this.height)/2)+20+AJS.getScrollTop();=0A=
if(fl<0){=0A=
fl=3D0;=0A=
}=0A=
if(_33>fl){=0A=
fl=3D_33;=0A=
}=0A=
AJS.setTop(this.g_window,fl);=0A=
}=0A=
this._setHeaderPos();=0A=
},onHide:function(){=0A=
AJS.removeElement(this.header);=0A=
AJS.removeClass(this.g_window,"GB_Gallery");=0A=
},onShow:function(){=0A=
if(this.use_fx){=0A=
AJS.fx.fadeIn(this.header,{to:1});=0A=
}else{=0A=
AJS.setOpacity(this.header,1);=0A=
}=0A=
}});=0A=
AJS.preloadImages(GB_ROOT_DIR+"g_close.gif");=0A=
GB_showFullScreenSet=3Dfunction(set,_36,_37){=0A=
var _38=3D{type:"page",fullscreen:true,center_win:false};=0A=
var _39=3Dnew GB_Sets(_38,set);=0A=
_39.addCallback(_37);=0A=
_39.showSet(_36-1);=0A=
return false;=0A=
};=0A=
GB_showImageSet=3Dfunction(set,_3b,_3c){=0A=
var =
_3d=3D{type:"image",fullscreen:false,center_win:true,width:300,height:300=
};=0A=
var _3e=3Dnew GB_Sets(_3d,set);=0A=
_3e.addCallback(_3c);=0A=
_3e.showSet(_3b-1);=0A=
return false;=0A=
};=0A=
GB_Sets=3DGB_Gallery.extend({init:function(_3f,set){=0A=
this.parent(_3f);=0A=
if(!this.img_next){=0A=
this.img_next=3Dthis.root_dir+"next.gif";=0A=
}=0A=
if(!this.img_prev){=0A=
this.img_prev=3Dthis.root_dir+"prev.gif";=0A=
}=0A=
this.current_set=3Dset;=0A=
},showSet:function(_41){=0A=
this.current_index=3D_41;=0A=
var _42=3Dthis.current_set[this.current_index];=0A=
this.show(_42.url);=0A=
this._setCaption(_42.caption);=0A=
this.btn_prev=3DAJS.IMG({"class":"left",src:this.img_prev});=0A=
this.btn_next=3DAJS.IMG({"class":"right",src:this.img_next});=0A=
AJS.AEV(this.btn_prev,"click",AJS.$b(this.switchPrev,this));=0A=
AJS.AEV(this.btn_next,"click",AJS.$b(this.switchNext,this));=0A=
GB_STATUS=3DAJS.SPAN({"class":"GB_navStatus"});=0A=
AJS.ACN(AJS.$("GB_middle"),this.btn_prev,GB_STATUS,this.btn_next);=0A=
this.updateStatus();=0A=
},updateStatus:function(){=0A=
AJS.setHTML(GB_STATUS,(this.current_index+1)+" / =
"+this.current_set.length);=0A=
if(this.current_index=3D=3D0){=0A=
AJS.addClass(this.btn_prev,"disabled");=0A=
}else{=0A=
AJS.removeClass(this.btn_prev,"disabled");=0A=
}=0A=
if(this.current_index=3D=3Dthis.current_set.length-1){=0A=
AJS.addClass(this.btn_next,"disabled");=0A=
}else{=0A=
AJS.removeClass(this.btn_next,"disabled");=0A=
}=0A=
},_setCaption:function(_43){=0A=
AJS.setHTML(AJS.$("GB_caption"),_43);=0A=
},updateFrame:function(){=0A=
var _44=3Dthis.current_set[this.current_index];=0A=
this._setCaption(_44.caption);=0A=
this.url=3D_44.url;=0A=
this.startLoading();=0A=
},switchPrev:function(){=0A=
if(this.current_index!=3D0){=0A=
this.current_index--;=0A=
this.updateFrame();=0A=
this.updateStatus();=0A=
}=0A=
},switchNext:function(){=0A=
if(this.current_index!=3Dthis.current_set.length-1){=0A=
this.current_index++;=0A=
this.updateFrame();=0A=
this.updateStatus();=0A=
}=0A=
}});=0A=
AJS.AEV(window,"load",function(){=0A=
AJS.preloadImages(GB_ROOT_DIR+"next.gif",GB_ROOT_DIR+"prev.gif");=0A=
});=0A=
GB_show=3Dfunction(_45,url,_47,_48,_49){=0A=
var =
_4a=3D{caption:_45,height:_47||500,width:_48||500,fullscreen:false,callba=
ck_fn:_49};=0A=
var win=3Dnew GB_Window(_4a);=0A=
return win.show(url);=0A=
};=0A=
GB_showCenter=3Dfunction(_4c,url,_4e,_4f,_50){=0A=
var =
_51=3D{caption:_4c,center_win:true,height:_4e||500,width:_4f||500,fullscr=
een:false,callback_fn:_50};=0A=
var win=3Dnew GB_Window(_51);=0A=
return win.show(url);=0A=
};=0A=
GB_showFullScreen=3Dfunction(_53,url,_55){=0A=
var _56=3D{caption:_53,fullscreen:true,callback_fn:_55};=0A=
var win=3Dnew GB_Window(_56);=0A=
return win.show(url);=0A=
};=0A=
GB_Window=3DGreyBox.extend({init:function(_58){=0A=
this.parent({});=0A=
this.img_header=3Dthis.root_dir+"header_bg.gif";=0A=
this.img_close=3Dthis.root_dir+"w_close.gif";=0A=
this.show_close_img=3Dtrue;=0A=
AJS.update(this,_58);=0A=
this.addCallback(this.callback_fn);=0A=
},initHook:function(){=0A=
AJS.addClass(this.g_window,"GB_Window");=0A=
this.header=3DAJS.TABLE({"class":"header"});=0A=
this.header.style.backgroundImage=3D"url("+this.img_header+")";=0A=
var _59=3DAJS.TD({"class":"caption"},this.caption);=0A=
var _5a=3DAJS.TD({"class":"close"});=0A=
if(this.show_close_img){=0A=
var _5b=3DAJS.IMG({"src":this.img_close});=0A=
var _5c=3DAJS.SPAN("Close");=0A=
var btn=3DAJS.DIV(_5b,_5c);=0A=
AJS.AEV([_5b,_5c],"mouseover",function(){=0A=
AJS.addClass(_5c,"on");=0A=
});=0A=
AJS.AEV([_5b,_5c],"mouseout",function(){=0A=
AJS.removeClass(_5c,"on");=0A=
});=0A=
AJS.AEV([_5b,_5c],"mousedown",function(){=0A=
AJS.addClass(_5c,"click");=0A=
});=0A=
AJS.AEV([_5b,_5c],"mouseup",function(){=0A=
AJS.removeClass(_5c,"click");=0A=
});=0A=
AJS.AEV([_5b,_5c],"click",GB_hide);=0A=
AJS.ACN(_5a,btn);=0A=
}=0A=
tbody_header=3DAJS.TBODY();=0A=
AJS.ACN(tbody_header,AJS.TR(_59,_5a));=0A=
AJS.ACN(this.header,tbody_header);=0A=
AJS.ACN(this.top_cnt,this.header);=0A=
if(this.fullscreen){=0A=
AJS.AEV(window,"scroll",AJS.$b(this.setWindowPosition,this));=0A=
}=0A=
},setFrameSize:function(){=0A=
if(this.fullscreen){=0A=
var _5e=3DAJS.getWindowSize();=0A=
overlay_h=3D_5e.h;=0A=
this.width=3DMath.round(this.overlay.offsetWidth-(this.overlay.offsetWidt=
h/100)*10);=0A=
this.height=3DMath.round(overlay_h-(overlay_h/100)*10);=0A=
}=0A=
AJS.setWidth(this.header,this.width+6);=0A=
AJS.setWidth(this.iframe,this.width);=0A=
AJS.setHeight(this.iframe,this.height);=0A=
},setWindowPosition:function(){=0A=
var _5f=3DAJS.getWindowSize();=0A=
AJS.setLeft(this.g_window,((_5f.w-this.width)/2)-13);=0A=
if(!this.center_win){=0A=
AJS.setTop(this.g_window,AJS.getScrollTop());=0A=
}else{=0A=
var fl=3D((_5f.h-this.height)/2)-20+AJS.getScrollTop();=0A=
if(fl<0){=0A=
fl=3D0;=0A=
}=0A=
AJS.setTop(this.g_window,fl);=0A=
}=0A=
}});=0A=
AJS.preloadImages(GB_ROOT_DIR+"w_close.gif",GB_ROOT_DIR+"header_bg.gif");=0A=
=0A=
=0A=
script_loaded=3Dtrue;
------=_NextPart_000_0000_01C8E727.3F930680
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://bike.shimano.com/publish/flash/flowplayer/js/swfobject.js

/**
 * 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"<embed type=3D\"application/x-shockwave-flash\" =
src=3D\""+this.getAttribute("swf")+"\" =
width=3D\""+this.getAttribute("width")+"\" =
height=3D\""+this.getAttribute("height")+"\"";
_19+=3D" id=3D\""+this.getAttribute("id")+"\" =
name=3D\""+this.getAttribute("id")+"\" ";
var _1a=3Dthis.getParams();
for(var key in _1a){_19+=3D[key]+"=3D\""+_1a[key]+"\" ";}
var _1c=3Dthis.getVariablePairs().join("&");
if(_1c.length>0){_19+=3D"flashvars=3D\""+_1c+"\"";}_19+=3D"/>";
}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplaye=
rType","ActiveX");}
_19=3D"<object id=3D\""+this.getAttribute("id")+"\" =
classid=3D\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" =
width=3D\""+this.getAttribute("width")+"\" =
height=3D\""+this.getAttribute("height")+"\">";
_19+=3D"<param name=3D\"movie\" value=3D\""+this.getAttribute("swf")+"\" =
/>";
var _1d=3Dthis.getParams();
for(var key in _1d){_19+=3D"<param name=3D\""+key+"\" =
value=3D\""+_1d[key]+"\" />";}
var _1f=3Dthis.getVariablePairs().join("&");
if(_1f.length>0){_19+=3D"<param name=3D\"flashvars\" value=3D\""+_1f+"\" =
/>";}_19+=3D"</object>";}
return _19;
},write:function(_20){
if(this.getAttribute("useExpressInstall")){
var _21=3Dnew deconcept.PlayerVersion([6,0,65]);
if(this.installedVer.versionIsValid(_21)&&!this.installedVer.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.major<fv.major){return false;}
if(this.major>fv.major){return true;}
if(this.minor<fv.minor){return false;}
if(this.minor>fv.minor){return true;}
if(this.rev<fv.rev){
return false;
}return true;};
deconcept.util=3D{getRequestParameter:function(_29){
var q=3Ddocument.location.search||document.location.hash;
if(q){var _2b=3Dq.substring(1).split("&");
for(var i=3D0;i<_2b.length;i++){
if(_2b[i].substring(0,_2b[i].indexOf("=3D"))=3D=3D_29){
return _2b[i].substring((_2b[i].indexOf("=3D")+1));}}}
return "";}};
deconcept.SWFObjectUtil.cleanupSWFs=3Dfunction(){if(window.opera||!docume=
nt.all){return;}
var _2d=3Ddocument.getElementsByTagName("OBJECT");
for(var i=3D0;i<_2d.length;i++){_2d[i].style.display=3D"none";for(var x =
in _2d[i]){
if(typeof _2d[i][x]=3D=3D"function"){_2d[i][x]=3Dfunction(){};}}}};
deconcept.SWFObjectUtil.prepUnload=3Dfunction(){__flash_unloadHandler=3Df=
unction(){};
__flash_savedUnloadHandler=3Dfunction(){};
if(typeof window.onunload=3D=3D"function"){
var _30=3Dwindow.onunload;
window.onunload=3Dfunction(){
deconcept.SWFObjectUtil.cleanupSWFs();_30();};
}else{window.onunload=3Ddeconcept.SWFObjectUtil.cleanupSWFs;}};
if(typeof window.onbeforeunload=3D=3D"function"){
var oldBeforeUnload=3Dwindow.onbeforeunload;
window.onbeforeunload=3Dfunction(){
deconcept.SWFObjectUtil.prepUnload();
oldBeforeUnload();};
}else{window.onbeforeunload=3Ddeconcept.SWFObjectUtil.prepUnload;}
if(Array.prototype.push=3D=3Dnull){
Array.prototype.push=3Dfunction(_31){
this[this.length]=3D_31;
return this.length;};}
var getQueryParamValue=3Ddeconcept.util.getRequestParameter;
var FlashObject=3Ddeconcept.SWFObject;
var SWFObject=3Ddeconcept.SWFObject;

------=_NextPart_000_0000_01C8E727.3F930680--
