From: <Saved by Windows Internet Explorer 7>
Subject: Unit Calendar 2010-2011 :: Center Grove Community School Corporation O'Neill, Andrea / Computer Applications Grades 6-8 / Grade 6 (Middle School Central)
Date: Fri, 12 Nov 2010 10:18:26 -0500
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_05B2_01CB8252.F1A1E800"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579

This is a multi-part message in MIME format.

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/View/UnitCalendar?SourceSiteID=&CurriculumMapID=722&YearID=2011

=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>Unit Calendar =
2010-2011 :: Center Grove Community School Corporation O'Neill, Andrea / =
Computer Applications Grades 6-8 / Grade 6 (Middle School =
Central)</TITLE>
<META http-equiv=3Dcontent-type =
content=3Dtext/html;charset=3Dutf-8><LINK=20
href=3D"http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/reset-fonts/=
reset-fonts.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/container/as=
sets/skins/sam/container.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://centergrove.rubiconatlas.org/c/css/reports.php?v=3DAtlas7.=
1.1b10709"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://centergrove.rubiconatlas.org/favicon.ico" rel=3D"SHORTCUT =
ICON">
<META content=3D"MSHTML 6.00.6000.17023" name=3DGENERATOR></HEAD>
<BODY class=3Dyui-skin-sam>
<FORM id=3Dpage_form method=3Dpost>
<DIV id=3DreportHeader>
<TABLE id=3DreportHeaderContent>
  <TBODY>
  <TR>
    <TD id=3DreportBack><A id=3DreportBackLink tabIndex=3D100=20
      href=3D'javascript:window.open("","_parent");window.close();'><IMG =
alt=3D""=20
      =
src=3D"http://centergrove.rubiconatlas.org/common_images/aardvark_bw.gif?=
v=3DAtlas7.1.1b10709"></A></TD>
    <TD>
      <DIV id=3DreportTitle>Unit Calendar 2010-2011</DIV>
      <DIV id=3DReportSubTitle>
      <DIV>Center Grove Community School Corporation<BR><A=20
      =
onclick=3D"YUIPopupFormProvider.ShowModalForm(window.MODAL_CONTENT['Conte=
ntKey_EmbeddedContent_Page_0'], {&quot;Header&quot;:&quot;Atlas Email =
Message&quot;,&quot;Footer&quot;:null,event:event,&quot;height&quot;:350,=
&quot;width&quot;:400} ); $('EmbeddedFrame_Page_0').src =3D =
'/c/plugins/email_form.php?Subject=3D&amp;ClientID=3D0&amp;To=3Doneila%40=
centergrove.k12.in.us&amp;ToName=3DO%27Neill%2C+Andrea&amp;EmailBody=3D&a=
mp;PopupID=3DEmbeddedFrame_Page_0&amp;'; return false;"=20
      tabIndex=3D100=20
      =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/View/=
UnitCalendar?SourceSiteID=3D&amp;CurriculumMapID=3D722&amp;YearID=3D2011#=
">O'Neill,=20
      Andrea</A> / <SPAN><A tabIndex=3D100=20
      =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/View/=
Map?YearID=3D2011&amp;SchoolID=3D1&amp;CourseType=3D&amp;strkeys=3D&amp;C=
urriculumMapID=3D722&amp;"=20
      target=3D_blank exemplar_export=3D"">Computer Applications Grades=20
      6-8</A></SPAN> / Grade 6 (Middle School =
Central)<BR></DIV></DIV></TD>
    <TD id=3DreportClose><A id=3DreportCloseLink tabIndex=3D100=20
      href=3D'javascript:window.open("","_parent");window.close();'><IMG =
alt=3D""=20
      =
src=3D"http://centergrove.rubiconatlas.org/images/school_logo_small.png?v=
=3DAtlas7.1.1b10709"></A></TD></TR></TBODY></TABLE></DIV>
<DIV id=3DAtlas_Browse_View_UnitCalendar>
<TABLE cellSpacing=3D5 cellPadding=3D0 width=3D"100%" bgColor=3D#ffffff =
border=3D0>
  <TBODY>
  <TR>
    <TD>
      <TABLE cellSpacing=3D5 cellPadding=3D0 width=3D"100%" border=3D0>
        <TBODY>
        <TR>
          <TD>
            <TABLE id=3DUnitCalendarContainer>
              <TBODY>
              <TR>
                <TD>
                  <TABLE class=3D"unitcal unitcalBrowse" id=3Dunits =
cellSpacing=3D0=20
                  cellPadding=3D0 border=3D0>
                    <TBODY>
                    <TR class=3Dmonths>
                      <TD>&nbsp;</TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle colSpan=3D5><B>Aug</B></TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle colSpan=3D4><B>Sep</B></TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle colSpan=3D3><B>Oct</B></TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle colSpan=3D5><B>Nov</B></TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle colSpan=3D2><B>Dec</B></TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle colSpan=3D5><B>Jan</B></TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle colSpan=3D4><B>Feb</B></TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle colSpan=3D4><B>Mar</B></TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle colSpan=3D2><B>Apr</B></TD>
                      <TD><IMG height=3D1 alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dmiddle =
colSpan=3D4><B>May</B></TD></TR>
                    <TR class=3Dweeks>
                      <TD class=3Dunit align=3Dleft><B>Unit:</B></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_54_1=20
                      align=3Dmiddle>1&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_55_2=20
                      align=3Dmiddle>2&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_56_3=20
                      align=3Dmiddle>3&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_9_4=20
                      align=3Dmiddle>4&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_57_5=20
                      align=3Dmiddle>5&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_58_6=20
                      align=3Dmiddle>6&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_59_7=20
                      align=3Dmiddle>7&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_10_8=20
                      align=3Dmiddle>8&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_60_9=20
                      align=3Dmiddle>9&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_61_10=20
                      align=3Dmiddle>10&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_62_11=20
                      align=3Dmiddle>11&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_11_12=20
                      align=3Dmiddle>12&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_63_13=20
                      align=3Dmiddle>13&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_64_14=20
                      align=3Dmiddle>14&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_65_15=20
                      align=3Dmiddle>15&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_66_16=20
                      align=3Dmiddle>16&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_12_17=20
                      align=3Dmiddle>17&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_67_18=20
                      align=3Dmiddle>18&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_68_19=20
                      align=3Dmiddle>19&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_1_20=20
                      align=3Dmiddle>20&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_69_21=20
                      align=3Dmiddle>21&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_70_22=20
                      align=3Dmiddle>22&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_71_23=20
                      align=3Dmiddle>23&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_2_24=20
                      align=3Dmiddle>24&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_72_25=20
                      align=3Dmiddle>25&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_73_26=20
                      align=3Dmiddle>26&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_74_27=20
                      align=3Dmiddle>27&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_3_28=20
                      align=3Dmiddle>28&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_75_29=20
                      align=3Dmiddle>29&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_76_30=20
                      align=3Dmiddle>30&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_77_31=20
                      align=3Dmiddle>31&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_78_32=20
                      align=3Dmiddle>32&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_4_33=20
                      align=3Dmiddle>33&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_79_34=20
                      align=3Dmiddle>34&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_80_35=20
                      align=3Dmiddle>35&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_5_36=20
                      align=3Dmiddle>36&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_81_37=20
                      align=3Dmiddle>37&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_82_38=20
                      align=3Dmiddle>38&nbsp;</TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41464>
                      <TD class=3Dunit id=3DUnitLabel_41464><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41464&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D54&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>KEYBOARDING</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751050=20
                        height=3D10 alt=3D"Week 1"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751051=20
                        height=3D10 alt=3D"Week 2"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751052=20
                        height=3D10 alt=3D"Week 3"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751053=20
                        height=3D10 alt=3D"Week 4"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751054=20
                        height=3D10 alt=3D"Week 5"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751055=20
                        height=3D10 alt=3D"Week 6"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751056=20
                        height=3D10 alt=3D"Week 7"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751057=20
                        height=3D10 alt=3D"Week 8"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751058=20
                        height=3D10 alt=3D"Week 9"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_12895751059=20
                        height=3D10 alt=3D"Week 10"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510510=20
                        height=3D10 alt=3D"Week 11"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510511=20
                        height=3D10 alt=3D"Week 12"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510512=20
                        height=3D10 alt=3D"Week 13"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510513=20
                        height=3D10 alt=3D"Week 14"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510514=20
                        height=3D10 alt=3D"Week 15"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510515=20
                        height=3D10 alt=3D"Week 16"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510516=20
                        height=3D10 alt=3D"Week 17"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510517=20
                        height=3D10 alt=3D"Week 18"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510518=20
                        height=3D10 alt=3D"Week 19"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41460>
                      <TD class=3Dunit id=3DUnitLabel_41460><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41460&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D54&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT WORD</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510519=20
                        height=3D10 alt=3D"Week 1"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510520=20
                        height=3D10 alt=3D"Week 2"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510521=20
                        height=3D10 alt=3D"Week 3"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510522=20
                        height=3D10 alt=3D"Week 4"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41453>
                      <TD class=3Dunit id=3DUnitLabel_41453><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41453&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D56&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>Hardware Vocabulary =
Terms</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510523=20
                        height=3D10 alt=3D"Week 3"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510524=20
                        height=3D10 alt=3D"Week 4"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41459>
                      <TD class=3Dunit id=3DUnitLabel_41459><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41459&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D56&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>INTERNET KNOWLEDGE, USE, &amp;=20
                      SAFETY</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510525=20
                        height=3D10 alt=3D"Week 3"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510526=20
                        height=3D10 alt=3D"Week 4"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41457>
                      <TD class=3Dunit id=3DUnitLabel_41457><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41457&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D57&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT POWERPOINT</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510527=20
                        height=3D10 alt=3D"Week 5"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510528=20
                        height=3D10 alt=3D"Week 6"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41454>
                      <TD class=3Dunit id=3DUnitLabel_41454><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41454&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D59&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT EXCEL</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510529=20
                        height=3D10 alt=3D"Week 7"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510530=20
                        height=3D10 alt=3D"Week 8"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510531=20
                        height=3D10 alt=3D"Week 9"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_51115>
                      <TD class=3Dunit id=3DUnitLabel_51115><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D51115&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D10&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT EXCEL TYPING RESULTS =
FOR 1st 9=20
                        Weeks</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510532=20
                        height=3D10 alt=3D"Week 8"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510533=20
                        height=3D10 alt=3D"Week 9"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41461>
                      <TD class=3Dunit id=3DUnitLabel_41461><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41461&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D61&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT EXCEL PART 2</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510534=20
                        height=3D10 alt=3D"Week 10"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510535=20
                        height=3D10 alt=3D"Week 11"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41462>
                      <TD class=3Dunit id=3DUnitLabel_41462><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41462&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D11&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT PUBLISHER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510536=20
                        height=3D10 alt=3D"Week 12"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510537=20
                        height=3D10 alt=3D"Week 13"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41456>
                      <TD class=3Dunit id=3DUnitLabel_41456><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41456&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D64&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>POWERPOINT -(REVIEW =
GAME)</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510538=20
                        height=3D10 alt=3D"Week 14"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510539=20
                        height=3D10 alt=3D"Week 15"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_51116>
                      <TD class=3Dunit id=3DUnitLabel_51116><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D51116&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D66&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT WORD FORMAL BUSINESS=20
                      LETTER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510540=20
                        height=3D10 alt=3D"Week 16"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_51111>
                      <TD class=3Dunit id=3DUnitLabel_51111><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D51111&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D12&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MOVIE MAKER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510541=20
                        height=3D10 alt=3D"Week 17"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510542=20
                        height=3D10 alt=3D"Week 18"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510543=20
                        height=3D10 alt=3D"Week 19"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41463>
                      <TD class=3Dunit id=3DUnitLabel_41463><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41463&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D68&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT EXCEL AND TYPING =
RESULTS</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510544=20
                        height=3D10 alt=3D"Week 19"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41466>
                      <TD class=3Dunit id=3DUnitLabel_41466><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41466&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D1&amp;SourceSiteID=3D&amp;Curriculum=
MapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>KEYBOARDING - 2ND =
SEMESTER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510545=20
                        height=3D10 alt=3D"Week 20"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510546=20
                        height=3D10 alt=3D"Week 21"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510547=20
                        height=3D10 alt=3D"Week 22"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510548=20
                        height=3D10 alt=3D"Week 23"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510549=20
                        height=3D10 alt=3D"Week 24"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510550=20
                        height=3D10 alt=3D"Week 25"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510551=20
                        height=3D10 alt=3D"Week 26"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510552=20
                        height=3D10 alt=3D"Week 27"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510553=20
                        height=3D10 alt=3D"Week 28"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510554=20
                        height=3D10 alt=3D"Week 29"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510555=20
                        height=3D10 alt=3D"Week 30"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510556=20
                        height=3D10 alt=3D"Week 31"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510557=20
                        height=3D10 alt=3D"Week 32"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510558=20
                        height=3D10 alt=3D"Week 33"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510559=20
                        height=3D10 alt=3D"Week 34"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510560=20
                        height=3D10 alt=3D"Week 35"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510561=20
                        height=3D10 alt=3D"Week 36"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510562=20
                        height=3D10 alt=3D"Week 37"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510563=20
                        height=3D10 alt=3D"Week 38"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41467>
                      <TD class=3Dunit id=3DUnitLabel_41467><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41467&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D1&amp;SourceSiteID=3D&amp;Curriculum=
MapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT WORD - 2ND =
SEMESTER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510564=20
                        height=3D10 alt=3D"Week 20"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510565=20
                        height=3D10 alt=3D"Week 21"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510566=20
                        height=3D10 alt=3D"Week 22"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41468>
                      <TD class=3Dunit id=3DUnitLabel_41468><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41468&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D71&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>PARTS OF A COMPUTER - 2ND =
SEMESTER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510567=20
                        height=3D10 alt=3D"Week 23"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41465>
                      <TD class=3Dunit id=3DUnitLabel_41465><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41465&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D71&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>INTERNET KNOWLEDGE, USE, &amp; =
SAFETY -2ND=20
                        SEM</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510568=20
                        height=3D10 alt=3D"Week 23"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510569=20
                        height=3D10 alt=3D"Week 24"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41469>
                      <TD class=3Dunit id=3DUnitLabel_41469><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41469&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D2&amp;SourceSiteID=3D&amp;Curriculum=
MapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT POWERPOINT - 2ND =
SEMESTER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510570=20
                        height=3D10 alt=3D"Week 24"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510571=20
                        height=3D10 alt=3D"Week 25"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41470>
                      <TD class=3Dunit id=3DUnitLabel_41470><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41470&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D73&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT EXCEL - 2ND =
SEMESTER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510572=20
                        height=3D10 alt=3D"Week 26"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510573=20
                        height=3D10 alt=3D"Week 27"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_51117>
                      <TD class=3Dunit id=3DUnitLabel_51117><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D51117&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D3&amp;SourceSiteID=3D&amp;Curriculum=
MapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>EXCEL TYPING CHART FOR 1st 9 =
Weeks -2nd=20
                        SEM</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510574=20
                        height=3D10 alt=3D"Week 28"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41472>
                      <TD class=3Dunit id=3DUnitLabel_41472><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41472&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D3&amp;SourceSiteID=3D&amp;Curriculum=
MapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT EXCEL PART 2 - SECOND=20
                        SEMESTER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510575=20
                        height=3D10 alt=3D"Week 28"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41473>
                      <TD class=3Dunit id=3DUnitLabel_41473><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41473&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D75&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT PUBLISHER - SECOND=20
                      SEMESTER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510576=20
                        height=3D10 alt=3D"Week 29"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510577=20
                        height=3D10 alt=3D"Week 30"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_51118>
                      <TD class=3Dunit id=3DUnitLabel_51118><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D51118&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D77&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>Microsoft Power Point =
Unit</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510578=20
                        height=3D10 alt=3D"Week 31"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510579=20
                        height=3D10 alt=3D"Week 32"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510580=20
                        height=3D10 alt=3D"Week 33"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510581=20
                        height=3D10 alt=3D"Week 34"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_51713>
                      <TD class=3Dunit id=3DUnitLabel_51713><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D51713&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D4&amp;SourceSiteID=3D&amp;Curriculum=
MapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>Create a Bibliography</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510582=20
                        height=3D10 alt=3D"Week 33"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_51711>
                      <TD class=3Dunit id=3DUnitLabel_51711><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D51711&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D80&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>Formal Business Letter</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510583=20
                        height=3D10 alt=3D"Week 35"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_51119>
                      <TD class=3Dunit id=3DUnitLabel_51119><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D51119&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D5&amp;SourceSiteID=3D&amp;Curriculum=
MapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MOVIEMAKER - 2nd SEM</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510584=20
                        height=3D10 alt=3D"Week 36"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510585=20
                        height=3D10 alt=3D"Week 37"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510586=20
                        height=3D10 alt=3D"Week 38"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD></TR>
                    <TR class=3DUnitRow id=3DUnitRow_41476>
                      <TD class=3Dunit id=3DUnitLabel_41476><A =
class=3Dblack=20
                        tabIndex=3D100=20
                        =
href=3D"http://centergrove.rubiconatlas.org/c/pi/v.php/Atlas/Browse/UnitM=
ap/View/Default?RestrictUnitName=3D1&amp;UnitID=3D41476&amp;YearID=3D2011=
&amp;SchoolID=3D1&amp;TimePeriodID=3D82&amp;SourceSiteID=3D&amp;Curriculu=
mMapID=3D722&amp;mode=3Dbrowse&amp;"=20
                        target=3D_blank>MICROSOFT EXCEL AND TYPING =
RESULTS - 2ND=20
                        SEMESTER</A></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright></TD>
                      <TD align=3Dright><IMG =
id=3DToolTipObject_128957510587=20
                        height=3D10 alt=3D"Week 38"=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif=
?v=3DAtlas7.1.1b10709"=20
                        width=3D"100%"></TD></TR>
                    <TR class=3D"weeks weeks-only">
                      <TD class=3Dunit align=3Dleft><B>&nbsp;</B></TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_54_39=20
                      align=3Dmiddle>1&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_55_40=20
                      align=3Dmiddle>2&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_56_41=20
                      align=3Dmiddle>3&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_9_42=20
                      align=3Dmiddle>4&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_57_43=20
                      align=3Dmiddle>5&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_58_44=20
                      align=3Dmiddle>6&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_59_45=20
                      align=3Dmiddle>7&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_10_46=20
                      align=3Dmiddle>8&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_60_47=20
                      align=3Dmiddle>9&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_61_48=20
                      align=3Dmiddle>10&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_62_49=20
                      align=3Dmiddle>11&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_11_50=20
                      align=3Dmiddle>12&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_63_51=20
                      align=3Dmiddle>13&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_64_52=20
                      align=3Dmiddle>14&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_65_53=20
                      align=3Dmiddle>15&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_66_54=20
                      align=3Dmiddle>16&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_12_55=20
                      align=3Dmiddle>17&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_67_56=20
                      align=3Dmiddle>18&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_68_57=20
                      align=3Dmiddle>19&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_1_58=20
                      align=3Dmiddle>20&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_69_59=20
                      align=3Dmiddle>21&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_70_60=20
                      align=3Dmiddle>22&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_71_61=20
                      align=3Dmiddle>23&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_2_62=20
                      align=3Dmiddle>24&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_72_63=20
                      align=3Dmiddle>25&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_73_64=20
                      align=3Dmiddle>26&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_74_65=20
                      align=3Dmiddle>27&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_3_66=20
                      align=3Dmiddle>28&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_75_67=20
                      align=3Dmiddle>29&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_76_68=20
                      align=3Dmiddle>30&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_77_69=20
                      align=3Dmiddle>31&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_78_70=20
                      align=3Dmiddle>32&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_4_71=20
                      align=3Dmiddle>33&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_79_72=20
                      align=3Dmiddle>34&nbsp;</TD>
                      <TD class=3Dprintmarker width=3D1 =
bgColor=3D#000><IMG height=3D1=20
                        alt=3D""=20
                        =
src=3D"http://centergrove.rubiconatlas.org/common_images/clear.gif?v=3DAt=
las7.1.1b10709"=20
                        width=3D1></TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_80_73=20
                      align=3Dmiddle>35&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_5_74=20
                      align=3Dmiddle>36&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_81_75=20
                      align=3Dmiddle>37&nbsp;</TD>
                      <TD class=3Dweeknum id=3Dtimeperiod_82_76=20
                      =
align=3Dmiddle>38&nbsp;</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABL=
E></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD>
      <TABLE>
        <TBODY></TBODY></TABLE></TD></TR>
  <TR>
    <TD>
      <DIV class=3Ddate align=3Dright>Last Updated: 10/07/2009=20
  11:57:47</DIV></TD></TR></TBODY></TABLE></DIV>
<DIV id=3Dcopyright>
<DIV id=3DAtlasVersion>Atlas Version 7.1.1</DIV>
<DIV>=C2=A9 <A id=3DRubiconLink tabIndex=3D100 =
href=3D"http://www.rubicon.com/"=20
target=3D_blank>Rubicon International</A> 2010. All rights =
reserved</DIV>
<DIV><A class=3Dsocial_media tabIndex=3D100=20
href=3D"http://www.facebook.com/RubiconInternational" =
target=3D_blank><IMG alt=3D""=20
src=3D"http://centergrove.rubiconatlas.org/common_images/facebook.png?v=3D=
Atlas7.1.1b10709"></A>&nbsp;<A=20
class=3Dsocial_media tabIndex=3D100 =
href=3D"http://twitter.com/RubiconAtlas"=20
target=3D_blank><IMG alt=3D""=20
src=3D"http://centergrove.rubiconatlas.org/common_images/twitter.png?v=3D=
Atlas7.1.1b10709"></A></DIV></DIV><INPUT=20
class=3DhiddenInput id=3DCatchLastField type=3Dhidden value=3D1=20
name=3DCatchLastField></FORM>
<DIV class=3DtoolTipUI id=3DToolTipContainer style=3D"DISPLAY: =
none"></DIV>
<SCRIPT type=3Dtext/javascript>//<![CDATA[=0A=
window.ATLAS_VERSION =3D 'Atlas7.1.1b10709';=0A=
//]]></SCRIPT>

<SCRIPT=20
src=3D"http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.j=
s"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/builder.j=
s"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/effects.j=
s"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/dragdrop.=
js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/controls.=
js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/slider.js=
"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/yahoo-dom-eve=
nt/yahoo-dom-event.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/container/con=
tainer-min.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/dragdrop/drag=
drop-min.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://centergrove.rubiconatlas.org/c/js/printstacktrace.js?v=3DAt=
las7.1.1b10709"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://centergrove.rubiconatlas.org/c/js/showhidebyclass.js?v=3DAt=
las7.1.1b10709"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://centergrove.rubiconatlas.org/c/js/standardFunctions.js?v=3D=
Atlas7.1.1b10709"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://centergrove.rubiconatlas.org/c/js/PersistentItem.js?v=3DAtl=
as7.1.1b10709"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://centergrove.rubiconatlas.org/c/js/UIToolTip.js?v=3DAtlas7.1=
.1b10709"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://centergrove.rubiconatlas.org/c/js/YUIPopupFormProvider.js?v=
=3DAtlas7.1.1b10709"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>//<![CDATA[=0A=
window.PageType=3D'Atlas';=0A=
=0A=
window.MODAL_CONTENT =3D {};=0A=
=0A=
window.MODAL_CONTENT['ContentKey_EmbeddedContent_Page_0'] =3D '<iframe =
frameborder=3D"0" height=3D"350" hspace=3D"0" =
id=3D"EmbeddedFrame_Page_0" marginheight=3D"0" marginwidth=3D"0" =
name=3D"EmbeddedFrame_Page_0" src=3D"/c/blank.html" style=3D" =
background: #E7E7FD" vspace=3D"0" width=3D"100%"></iframe>';=0A=
=0A=
window.MODAL_CONTENT['ContentKey_EmbeddedContent_Page_0'] =3D '<iframe =
frameborder=3D"0" height=3D"350" hspace=3D"0" =
id=3D"EmbeddedFrame_Page_0" marginheight=3D"0" marginwidth=3D"0" =
name=3D"EmbeddedFrame_Page_0" src=3D"/c/blank.html" style=3D" =
background: #E7E7FD" vspace=3D"0" width=3D"100%"></iframe>';=0A=
=0A=
=0A=
=0A=
=0A=
Event.observe(document, "dom:loaded", function DOMLoadedJavascript(){=0A=
=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51050", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51051", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51052", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51053", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51054", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51055", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51056", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51057", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51058", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
51059", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510510", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510511", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510512", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510513", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510514", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510515", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510516", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510517", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510518", 'KEYBOARDING (Week 1 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510519", 'MICROSOFT WORD (Week 1 - Week 4)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510520", 'MICROSOFT WORD (Week 1 - Week 4)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510521", 'MICROSOFT WORD (Week 1 - Week 4)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510522", 'MICROSOFT WORD (Week 1 - Week 4)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510523", 'Hardware Vocabulary Terms (Week 3 - Week 4)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510524", 'Hardware Vocabulary Terms (Week 3 - Week 4)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510525", 'INTERNET KNOWLEDGE, USE, & SAFETY (Week 3 - Week 4)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510526", 'INTERNET KNOWLEDGE, USE, & SAFETY (Week 3 - Week 4)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510527", 'MICROSOFT POWERPOINT (Week 5 - Week 6)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510528", 'MICROSOFT POWERPOINT (Week 5 - Week 6)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510529", 'MICROSOFT EXCEL (Week 7 - Week 9)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510530", 'MICROSOFT EXCEL (Week 7 - Week 9)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510531", 'MICROSOFT EXCEL (Week 7 - Week 9)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510532", 'MICROSOFT EXCEL TYPING RESULTS FOR 1st 9 Weeks (Week 8 - Week =
9)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510533", 'MICROSOFT EXCEL TYPING RESULTS FOR 1st 9 Weeks (Week 8 - Week =
9)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510534", 'MICROSOFT EXCEL  PART 2 (Week 10 - Week 11)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510535", 'MICROSOFT EXCEL  PART 2 (Week 10 - Week 11)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510536", 'MICROSOFT PUBLISHER (Week 12 - Week 13)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510537", 'MICROSOFT PUBLISHER (Week 12 - Week 13)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510538", 'POWERPOINT -(REVIEW GAME) (Week 14 - Week 15)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510539", 'POWERPOINT -(REVIEW GAME) (Week 14 - Week 15)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510540", 'MICROSOFT WORD FORMAL BUSINESS LETTER (Week 16 - Week 16)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510541", 'MOVIE MAKER (Week 17 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510542", 'MOVIE MAKER (Week 17 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510543", 'MOVIE MAKER (Week 17 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510544", 'MICROSOFT EXCEL AND TYPING RESULTS (Week 19 - Week 19)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510545", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510546", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510547", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510548", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510549", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510550", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510551", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510552", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510553", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510554", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510555", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510556", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510557", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510558", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510559", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510560", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510561", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510562", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510563", 'KEYBOARDING - 2ND SEMESTER (Week 20 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510564", 'MICROSOFT WORD - 2ND SEMESTER (Week 20 - Week 22)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510565", 'MICROSOFT WORD - 2ND SEMESTER (Week 20 - Week 22)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510566", 'MICROSOFT WORD - 2ND SEMESTER (Week 20 - Week 22)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510567", 'PARTS OF A COMPUTER -  2ND  SEMESTER (Week 23 - Week 23)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510568", 'INTERNET KNOWLEDGE, USE, & SAFETY -2ND SEM (Week 23 - Week =
24)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510569", 'INTERNET KNOWLEDGE, USE, & SAFETY -2ND SEM (Week 23 - Week =
24)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510570", 'MICROSOFT POWERPOINT - 2ND SEMESTER (Week 24 - Week 25)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510571", 'MICROSOFT POWERPOINT - 2ND SEMESTER (Week 24 - Week 25)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510572", 'MICROSOFT EXCEL - 2ND SEMESTER (Week 26 - Week 27)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510573", 'MICROSOFT EXCEL - 2ND SEMESTER (Week 26 - Week 27)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510574", 'EXCEL TYPING CHART FOR 1st 9 Weeks -2nd SEM (Week 28 - Week =
28)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510575", 'MICROSOFT EXCEL  PART 2 - SECOND SEMESTER (Week 28 - Week =
28)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510576", 'MICROSOFT PUBLISHER - SECOND SEMESTER (Week 29 - Week 30)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510577", 'MICROSOFT PUBLISHER - SECOND SEMESTER (Week 29 - Week 30)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510578", 'Microsoft Power Point Unit (Week 31 - Week 34)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510579", 'Microsoft Power Point Unit (Week 31 - Week 34)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510580", 'Microsoft Power Point Unit (Week 31 - Week 34)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510581", 'Microsoft Power Point Unit (Week 31 - Week 34)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510582", 'Create a Bibliography (Week 33 - Week 33)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510583", 'Formal Business Letter (Week 35 - Week 35)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510584", 'MOVIEMAKER - 2nd SEM (Week 36 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510585", 'MOVIEMAKER - 2nd SEM (Week 36 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510586", 'MOVIEMAKER - 2nd SEM (Week 36 - Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("ToolTipObject_128957=
510587", 'MICROSOFT EXCEL AND TYPING RESULTS - 2ND SEMESTER (Week 38 - =
Week 38)');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("reportBackLink", =
'Back');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("reportCloseLink", =
'Close');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_54_1", =
'Sat, Aug 7 - Sun, Aug 8');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_55_2", =
'Mon, Aug 9 - Sun, Aug 15');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_56_3", =
'Mon, Aug 16 - Sun, Aug 22');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_9_4", =
'Mon, Aug 23 - Sun, Aug 29');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_57_5", =
'Mon, Aug 30 - Sun, Sep 5');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_58_6", =
'Mon, Sep 6 - Sun, Sep 12');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_59_7", =
'Mon, Sep 13 - Sun, Sep 19');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_10_8", =
'Mon, Sep 20 - Sun, Sep 26');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_60_9", =
'Mon, Sep 27 - Sun, Oct 3');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_61_10", =
'Mon, Oct 4 - Sun, Oct 10');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_62_11", =
'Mon, Oct 11 - Sun, Oct 17');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_11_12", =
'Mon, Oct 18 - Sun, Oct 24');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_63_13", =
'Mon, Nov 1 - Sun, Nov 7');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_64_14", =
'Mon, Nov 8 - Sun, Nov 14');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_65_15", =
'Mon, Nov 15 - Sun, Nov 21');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_66_16", =
'Mon, Nov 22 - Sun, Nov 28');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_12_17", =
'Mon, Nov 29 - Sun, Dec 5');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_67_18", =
'Mon, Dec 6 - Sun, Dec 12');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_68_19", =
'Mon, Dec 13 - Sun, Dec 19');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_1_20", =
'Mon, Jan 3 - Sun, Jan 9');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_69_21", =
'Mon, Jan 10 - Sun, Jan 16');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_70_22", =
'Mon, Jan 17 - Sun, Jan 23');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_71_23", =
'Mon, Jan 24 - Sun, Jan 30');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_2_24", =
'Mon, Jan 31 - Sun, Feb 6');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_72_25", =
'Mon, Feb 7 - Sun, Feb 13');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_73_26", =
'Mon, Feb 14 - Sun, Feb 20');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_74_27", =
'Mon, Feb 21 - Sun, Feb 27');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_3_28", =
'Mon, Feb 28 - Sun, Mar 6');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_75_29", =
'Mon, Mar 7 - Sun, Mar 13');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_76_30", =
'Mon, Mar 14 - Sun, Mar 20');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_77_31", =
'Mon, Mar 21 - Sun, Mar 27');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_78_32", =
'Mon, Mar 28 - Sun, Apr 3');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_4_33", =
'Mon, Apr 4 - Sun, Apr 10');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_79_34", =
'Mon, Apr 11 - Sun, Apr 17');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_80_35", =
'Mon, May 2 - Sun, May 8');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_5_36", =
'Mon, May 9 - Sun, May 15');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_81_37", =
'Mon, May 16 - Sun, May 22');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_82_38", =
'Mon, May 23 - Sun, May 29');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_54_39", =
'Sat, Aug 7 - Sun, Aug 8');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_55_40", =
'Mon, Aug 9 - Sun, Aug 15');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_56_41", =
'Mon, Aug 16 - Sun, Aug 22');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_9_42", =
'Mon, Aug 23 - Sun, Aug 29');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_57_43", =
'Mon, Aug 30 - Sun, Sep 5');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_58_44", =
'Mon, Sep 6 - Sun, Sep 12');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_59_45", =
'Mon, Sep 13 - Sun, Sep 19');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_10_46", =
'Mon, Sep 20 - Sun, Sep 26');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_60_47", =
'Mon, Sep 27 - Sun, Oct 3');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_61_48", =
'Mon, Oct 4 - Sun, Oct 10');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_62_49", =
'Mon, Oct 11 - Sun, Oct 17');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_11_50", =
'Mon, Oct 18 - Sun, Oct 24');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_63_51", =
'Mon, Nov 1 - Sun, Nov 7');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_64_52", =
'Mon, Nov 8 - Sun, Nov 14');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_65_53", =
'Mon, Nov 15 - Sun, Nov 21');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_66_54", =
'Mon, Nov 22 - Sun, Nov 28');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_12_55", =
'Mon, Nov 29 - Sun, Dec 5');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_67_56", =
'Mon, Dec 6 - Sun, Dec 12');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_68_57", =
'Mon, Dec 13 - Sun, Dec 19');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_1_58", =
'Mon, Jan 3 - Sun, Jan 9');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_69_59", =
'Mon, Jan 10 - Sun, Jan 16');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_70_60", =
'Mon, Jan 17 - Sun, Jan 23');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_71_61", =
'Mon, Jan 24 - Sun, Jan 30');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_2_62", =
'Mon, Jan 31 - Sun, Feb 6');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_72_63", =
'Mon, Feb 7 - Sun, Feb 13');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_73_64", =
'Mon, Feb 14 - Sun, Feb 20');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_74_65", =
'Mon, Feb 21 - Sun, Feb 27');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_3_66", =
'Mon, Feb 28 - Sun, Mar 6');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_75_67", =
'Mon, Mar 7 - Sun, Mar 13');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_76_68", =
'Mon, Mar 14 - Sun, Mar 20');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_77_69", =
'Mon, Mar 21 - Sun, Mar 27');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_78_70", =
'Mon, Mar 28 - Sun, Apr 3');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_4_71", =
'Mon, Apr 4 - Sun, Apr 10');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_79_72", =
'Mon, Apr 11 - Sun, Apr 17');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_80_73", =
'Mon, May 2 - Sun, May 8');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_5_74", =
'Mon, May 9 - Sun, May 15');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_81_75", =
'Mon, May 16 - Sun, May 22');=0A=
ToolTipDelegate.GetInstance().RegisterKeyAndContent("timeperiod_82_76", =
'Mon, May 23 - Sun, May 29');=0A=
=0A=
});=0A=
//]]></SCRIPT>
</BODY></HTML>

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://centergrove.rubiconatlas.org/common_images/aardvark_bw.gif?v=Atlas7.1.1b10709

R0lGODlhOgBSAMQAAP///8HBwbW1taqqqrGxsZycnKGhobq6us3NzcXFxa2trbe3t9XV1aampvz8
/L29vezs7JKSktHR0fj4+JmZmfLy8snJyd3d3dnZ2YuLi+Li4vX19YSEhOnp6eXl5X19fSH5BAAA
AAAALAAAAAA6AFIAAAX/ICCOZGmeaKqubOu+cCzPqANhyXM8AeJttGAJYhEYKBFKQTkQMCZC2kVR
IAwMgxzBsIxwMoRO9HW5JgKPhSJwwWAQBkODm4kIKmPV5FAwKM48CgIKCBgMRnEKCwgNGQh5Jx1I
BFYCBA0CCAwDChIYVFkYFwEBAhwCkCQXHBxycXE9hwISDAwWoRK5CBIHGQMOMxoDBxoeFxAbHRER
cXNxDxe2BgIJDLu6ErsImgt2wDEBHAgVEBcXGgiDCgoNzsMSCe0GAdnb9tvwCwMFATILHGIAeMAw
YEEtCw8EDBowx9KAh4S2Wbi3LcEBARQ+YIhxIAKEbwk+gDlgwVCAAwsu/zaAiMBCDwswY8JsaSCD
SCAvHkRgUGHChAi+BjFL4MYlggBWCCSQYCGB06dOYzagwOoADDhhJjCocyBBt2UGHjC40PLB0qZQ
01pYUIDfgGV4XGiw+HFABgpm2XJBUqVQLaZnSAkWbLHAogP7LLywccGBhwwZCjzg8WpOgSQDEETL
FniyZx4JLhmI0KDAgBjAFtQxcOAA0j7NuLQj4MlaUx2tW5dqe/muxxgQKKxeQDzAPjmuWyuIMwsD
55PEFwQo3dbLhw+KYWytU0ChAJSlvwuY7LDPAlotAyz4rkBJF1YfCMRIwGFZAQWUCCQ0rPukJXYU
hMUAZ63xRgES8BkQw/8/y1DAyToECGBahAvwkBB+V5BWEgJnHHGgcBlw8EEEMRBQnxJYrIOfJStZ
QomK6zSQhACGIEDFgUCFOGKJdUTQ1kNAruOiQsQttM4+zHgS2mU5spLBgl+giAWQQEYowBUNKKIA
lTVRYMEo7TVZXwwWJOGKHFRWKeErA1BCpYwRQHPUATWxoiAMFwDVxCVpHkkAFVwEqsabwikQjUXW
yQdDBQNwMOGWMKpoRFtc9NHEAn+qWEAGBkRjQU0fPALOQ3E8mF9+dPJWKaUKnVpTAQzgUAAHEMig
ARJzrGhlq+u5x1tbFDRwkSWWdOkJpjM4EMEHFGxZJJFFBnDEr7yhJMD/et7VFIEFY9EQ0gdVUJhS
bjvwQW2w6rX2LBVeBPDRDBPYxMGK437mGkYGOngSbsOyM+tOcckgwXUNRLgDGghb+OGBDQjmGUpW
TGvcBVDMMAC4+Ck3GCkHLNzAUYPpcGVpERwzAAUQVBzDBHJkee0fg+WQxDILBCYYxAcWkAAAe2QQ
EAoCtKMASQx0gBMEsl0pHWEJCLBMBAQcZXMalywTADkeHPUuCoxUY1GE9HhQgQdKYJISD6RYoEAd
mTnlMKZXQGaQORogg9MJFUgnwtgSPEDJAWMFKkiFpDTNwcchXxSxHU3Tg4HRLHTwxzc8d8AAUoAv
ECAn1957CiCt/Ucd/wNBlIHANxBooEEHGhSx1MkpWplBuQptWRped9OwCQJAQCABGhJA4AEaGmBA
AKVZcmKFPAG6C4AD0JcwQQUBq+AAI87bIEGEHUzAiwYAVMAAYnEsEYdSF1TQwWa0xFqjBRLgQXkK
12PSmAgdXCkGAwt48DwEtkCDWfyCALRNxCUMaRECOrC+WrHAARJgSAI8AIwKtGYCDrDAAXI3ggpg
wG8P0IzqnNM06TAAGRiQjgMfeIEFZCkBGqiABghwAQBAAHAl2EAKC8IAD2jANhPBgAdSFr54CMB/
ixofJ7pCm+fZ4hsT0MABMMEADVygKdyq2wYo1wEXHmCFMRjbgEIjqv+xAcMBxnNC6rbxOA7y7AKX
SED1ggCBBWxEBFA0RAUcwABKSOBuDpieBxjwgIJgAINulMENVDaCQD6PEUILgG3O4CKxxGUCxxCC
DBlpAjh6DQ3W+s5SflACdMzxBRvQzBt/NoIJHAWDE9gAOSBAy56gYALcSpYGFlCrGUqgkbTE5S+D
8UUZuDIA0GPEHW24CFcOUwYOII4MNtADnv0uLnz8WAZFNQOLyMCCpAvfHvF4iJQtJQgJUaRBUEAO
G7IhCKRQpBNWIEVWgiM7MIDAPOnXNzdOAAIdgMApSUASdYYTBRs4w/w28LthCSAA9sQjAfD5Agty
E28B2NkIIEAKDFj/8Q2UAF8JOjCAg6IyABQ1ATWRubeMjlME/0zJHBEwACTC4Jh6yAEUIHi1E3xi
meG7Eg00cET6IWCD7gQqCTSgAJNGsIYzWOn8SpDCWmGgpyfYnkhtuIZEuqADBDDpSAVQw/ENdAOu
wckECmlTY/quqCeYwBlsSI1TSsBQeGSEBKa6GMvh8g4o8ACNAEDUBWiAclM4nQgk0DCvtgCXj6iA
DhLpgBbWsAKZ5FkfEbBT7A3UBWjMggj0GQBO4rGF4XQAZnlwWBs+oAFyDAIfGbIGCUwArA+gLAQS
wNkJGKexrnzIH4XgAKK2o6QiECxcpWcB2E7AA3xSyAAgalpoii8BWBTbaAAUYIHqVUA9odlIB5Ci
FA1UV7YYlB4GLDFcADCgAWLJBEypd95UkEC1/LMjR+nxEKjaFzXiK8V0GXGAz/73gZgsZJvaeuAZ
cLQTfG2whCdM4QrnIQQAOw==

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://centergrove.rubiconatlas.org/images/school_logo_small.png?v=Atlas7.1.1b10709

iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAACXBIWXMAAC4jAAAuIwF4pT92AAAM
ZklEQVR4Xu2bbXRU1bnHf3tmDpPMzTskMyQhZAJohBCICJhZgUjodRUoXhGKwgVswUXlXlv00mVd
twaXBFpvF6mgtwvKUmuFZZUrWATbDy6gSO5QrYpaStFEJiEvEIQkkKzJy5lz9v1wZg55mZkkXWXd
kuT3JWdmnr3POf/z7Gc/z94nto8+koxwc7D1ZzDC386IuDeREXFvIiPi3kT+ZnGF1GTLtRpeeXUb
WZnZTLltKhPuuAdFSRL9tR0uDFpcXffLtw+W4z11HK+3osdvHk8Rm0tfkolJOSMCM0hxVbVF/vcv
NvGnDyqYObuIbWXLSE9Lp9Xfxhv/8wpebwVbyh7huecOyhEPHoS4qtoiH14zm7HpGWzZsoecCTOx
CjtSWAVAXn6JLJmfjddbQU31Z0ycVNxfl0OeAYmrqi3yqaceAGBr2T5iHekCoHv54Yh14vEU4fVW
EGhvDtfNsKNfcYXU5FNPPcDFhnqe3/EGjlgn0Wo6d7ab8RNnRbEYPkQVV0hNvnXgJ3i9FWwr24Er
Ld8MA73RZCdebwXLH1zd7wO4FRFSk5HuPRJRxa2sqmB7eRnubDeFnvsjCgvQ2dGCO9vN4kVrotrd
ilRVnpAXav7CnOKVg5qoI4qrqi1y8+b1ACxduiqqN7b7G+TuPaUsXbqKnAkzw9oIqUl/eyNdXR3E
J7iwWBwDvsj/b5pOHuHSJyfx3/VNEpOSAON+gKiOFFHckydex1ftw53t5hvf+NeInbT7G+TTpatY
tGAZ95R8p49oQmqysqqCXbuf5WJDPb5qHx5PEVvL9snQxPiPzLWW87KutRaAixc+JzEpB1Vtkaf3
bkNMnsas2Ssihouw4uq6X777+7cAmDm7iPgEVzgzwMgStpbtwx6T1EfYqsoT8vC7r1FX68NTOI9p
0+aSkTGJU97fsntPKRt/8KL8R/bgdn+DPPrr/wQgZlI2Z4+/Qau/Tcqzn1HXWgsf1JLlnoLTWRC2
fVhxOztazOprWt4MI58NZ4gxLGId6T2+C1Vx28vLQlVbj1Bw76xl8t5pC5GdKtj8UrfZzb5Cww3A
Eug0+rPZexwDWDra0GITezwYq+qXor0NLX602V5Tbjw829fVEruDQEKa6D6se58zdI76+kr+6YPP
SHU5b5yk5iUAskMf330d59pBiNud+LiEQU1QQmpy5wvfZ/+be1n+4Goe+/dyc73Bdv2ylL8qwzbd
g56Vi+XsKQACBfOxvbcXdeEjUo+Jw35wB/qdJVg+OWZ0elsBfHkaxqQbtjVnUI+9zaj71soud4EA
Q1jFe8iw72YTM90jO+cux/7+frjSAIBc+Ii0XjqP9s4raBtfxH7mhNGuqREA1fMvoYciU11OEr5u
Ct0eX2kqE6wKX2kqAAvHd6ARnrDi1tdXmsfJo8eFM4nI0aO/DCuskJq0vbeXwHdL6UhIEwAxbc0y
4MpBix9tXMiep7Gs34p+Zwlqdj72tmYCrhwCqdki5svTUs/KNWybGlGme+CTY+AuQEhNKt5DBArm
m15piUs2bK40GOJdaaBj6SbjtxceR1u/FSUzG1S/BFBz7ybUh6Y4hJCabDp5hKquDkJZ+4eJDo5c
beZhTeXXUgcgOT6GSFl9WHEPv/saYBQEqakDF7eq8oT8cenjeDxFPYQNodZVoweHLABNjdiaGpGe
NACUkiXw4e8gxWmMlqZGiSvHNLdcOAfZ+UZfn3rh3/7L+D7QifqpF33uckPo6s9NG6VkCXpcMpZg
H1JYhZKZLTtj4tDvLEHxHkLPykVTHEIBaas5g5ZXHJqk5JGrzcwKhonRTdcomqIz4Qs7W4L93d46
SM+dljeD/W/uBWDUqJhwJn0QUjNTt0ULljHKFt8jTkthFcp0j+T9/QQmF0rsDkhxEnDlQECFMemG
95z7I+qxt2FqiRE62pohNdvoJMWJpaMNUpzGg/AeQp+7XGqKQ4y6b61U3t8PKU5jeKc4sZQsgS9P
o89digUY5TttXNKYdKSwCs2VI89ufpjb95zEGvRgPS4ZS0cbekycrGutpWiKDl8Yp091OfmKej6/
a7J5Xxem3EEJ4Qkr7mdnPg73dVQqqyrMNGtO8cqwcbqjeIWwXb9sTCSKnYArh1NfVVA4oYhAwXx0
m53OvGLsgAZorhyEakxk3GZMGiIYKrQx47BeqQ1NbHS5C8So4HKHlns3or0NAJl7NwRU1Ps2YK37
wrwOAD0mjtyfv0MgNtGY1FKcWC6cQ83OR5OdTJ73EJN5iKaP/pe61lqSpsylJC2dsVn5A3K6sOIu
XrSG/W/uxVft43prI72zgd60+xtMr33o22v7eC0YRUlA9VPfWEnz1Voq/niculofFxvqyXv5OLGO
NGG7flkGEtJEx1TDF7TYREGs0b5jakmfhxUIerSQmrQEOglNbgAojhuGSvCvK0d2zzCksIpQH1JY
zfMCWISD3Pz7AVDvuEdOVf3EKUk9so/+CCtufEKCeXzB95eIeRwYN/Z06Sqz4Jg+41t9vFZITZ48
8TovvbyTsekZZpq3/MHVbHj0GRyxTqzXL0vb6aNQMF8CWK7WG0O0rRk9LhnsQbE6/cZx8K8WP5pQ
jBVxydLS1tzT44N2MjYOpepjhCtHyrhkhNqJ5Wo9WubtppfT6UcmpSFaLhuf7Q4sV+vBXSAUJSli
bI1EWHFTUty4s934qn08v7OM30SoQq61nJevvLrNFGtsegYB1Y+iJPWwk8Iq5s//niz03E99fSVe
7z8DsHLFYzidBQKpSVvNGQIF87FcrTcFtQVTNUuK0xQ6lC7pWbnogCU2Ds2Vg/Lh7yArFwClqmdY
C7hyEJ1+1IkzEG3NWC+dN/q7cA7LhXPowXaWtma4dL5HW5oasY3OkIFghjMYwoqrKEliy5Y9cvPm
9fiqfbx14CcsXLhO2mMM0TSti08/PsLzO8sYm55hPggAW/fh2I0bxUalBGNLKCXFbf6m5t4tRctl
NFcOmk2BgIqWeXuPPnp7jmhvMwoMjFyZTj8yLhkNTM+Vih09Jg4A65VaZFwy6phxWAKdBCYXIpPS
IKCix8QZk6VNQbS3IRW7eax1z3AGQcQiYuKkYrFr1+/lhg0L2F5eZq6OdWfp0lUAbC8vA8BTOC9s
vA0hpCZ37X4W6JtRaIpDmFkB3IiT0Qg+SE1x9IyxQChWdyfQrX9NcdzIQoLn0mITg5+7x+vwzjIQ
olZoiUk54jevn5WVVRWE1ggAMse5WbniMVxp+Rw9+kvAyImL5vSNt935658P4/VW4M52M+Oubw6q
8rsV6bf8lcIqJk4q5j82FkmArkCr4XHCKoJeZzpqaJiHQ1Vb5Jaf/ggwYnO0xaChQr/ihgh5maIk
9Rj2WeOnRGhxg9AeXCguL1qwLOpi0FBhwOJGIpS2hYTrTVXlCblr97NkjnMDRkiYMrVwyIcE+DuI
mxB/YznunUMvsuSBTdJicQhd98uPPzzID55Yy7ayHTS3XAWMkJCa2jMLGKoMWtx2f4PsvjBuj0ky
t9S3l5fhPXUcT+E86T11nIsN9fxwUyn3lHyHPxx7FRg+IQEGIa6u++XOF75PXa2PJ58sN6s2i8Uh
nnvuoHzn0ItsLy/jYkM9Bw7sA+CJjaXMmr0CgJde3gkwbEICDFDckLB/+qCCR9Zt7DOsFSVJLHlg
kyya8y3ACBU2xWFmFY2Np6Wv2sfyB1cPm5AAAxT37YPl1NX6zNeYwu17WSwO0XsNIjT0K04eAWBB
yeJhExJgAOLqul96Tx3nySfLo74UEgld98sDB/bh8RRxx9TFg25/K9PvGzd/OPYqmePcpKS4By1M
qD3AhkefiW48BIkqbsu1Gn5c+jg/3FQadc0gEv72RrP9pIlFg344tzpRxU1KHI/HU0RWZuSyNhKq
2iLXrZuHO9vNwoXrhp2wMICYa1RW0V/b6U2o3B2bnmEuhg/W64cCUcWVwioWlCyWW376o4gL5r25
1nJebtiwgLHpGaF8WAxHYWEAnntb3r34qpfz1z8fNveUwqGqLT22cjY8+oyRXURsMfTpV1yLxSH2
vvae3Lx5PTNnH5aLF60hNXUco0bF0NXVwddfGy+phd51eGJjKXn5JUYoGICnD2X6FReMXYnnd7wh
f/azTaxeY+x/hXYlxqZnkDnOzbS8GcwpXmm+CDKcPTbEgMQFcDoLxM+3vycvXf6c5sYakp3jSYh3
EtpX6/7PJyMYDFhcMCY4p7Mg7Fb7iKf2ZVDijjA4RsS9iYyIexP5PyhJKZGWhbBQAAAAAElFTkSu
QmCC

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://centergrove.rubiconatlas.org/common_images/clear.gif?v=Atlas7.1.1b10709

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://centergrove.rubiconatlas.org/common_images/barchart_bar.gif?v=Atlas7.1.1b10709

R0lGODlhDAAKAMQAAAAAAP///5kzM5s4OJw6OqJJSaZTU6VTU7Fvb7FwcLZ8fMeoqNLDw9HDw9TJ
ydTKytjS0tnX19vb29ra2v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA
ABQALAAAAAAMAAoAAAUNoCCOZGmeaKqubOu+IQA7

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://centergrove.rubiconatlas.org/common_images/facebook.png?v=Atlas7.1.1b10709

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAANbY1E9YMgAAABl0RVh0
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALBSURBVHjaPFM9axRBGH7mndndy+3lkoii
BE1ARAWLFNHCws7Kzk4bO5G02tj4D+wsQhSxSScRKwVBtJKgBiwkSvQkiRgkMVFzl9zHzofPbM7c
3uwOu+88X++MuXv/5WRHDU5rg5MSAkIQQAJUAMB5EAfvFLrOQ6yGUg46SfnNLh07JFPmbzedZe1p
UQVCXOUFiheUJUIGZwtUM41T4zlG8hqUtlha2cXaeufc9+BnzU6vO2ZQQHyAU2TkJUHBsdAVDiM1
j2uXJ3D08AgBCcxfu7WIpW+7VJuNmXZ7t1BKQ1uJ5HCUbFxSPrvtNi5MHufiA5Qc0O720Gp7/Nru
YIdzkVCYokvZXKhYAPoMysMFC0+mWDSSV0rWqOzh3AI+LG5BUuYhCkWPZLYoGAwLGE4sU84g6BZn
KapCa9rtAzRbfG+b8DqFLQRiFMyfZgtpWoXWVEEkgYPreeR1we3rFzE6WqeaPZCpq+fZkYDpJ+8x
v7CGnOGazc0dslgOOlER1cP3DA7Sw+iRIQykCe27sqXD9VoJ9GN1Cz83tlGvprTgYgT0bvdYYtLO
91BsdHDn3nNcuTSBs2fGacDj0dxbNFZ/o7GyDc0MnCMxGFrZdr4oB1UkRhDxnr74hMby5n4Gr+a/
4PGzRTQ7RQkQ1xmJvjlCnx9sn3j64b8+WEWWmr4uhbyWoD6UwejYVQXNjWcSJqm0lO2Tkomi6Nfz
o7ZRlfSRWUyiWB8V0jQSzS5kvCsTFej+PlP9csBy7xv9HwBIkgRpHCkBgieAKDNQrWglCfZMlBsZ
8VD58jSRIfY3zphNJUuQVzJkmS5rUy3a1PJ0RqRyU8HGbRSFUouHjZaMwV4E8ZQCtYpCtZ5hgKdR
eQ9twgwVqlsDFfOZx/gGC0/EEyk+ZkBGk+H1mwbefVzmAoX1LY/hPAd3xlcbMBNU78E/AQYAXjAv
vd35stIAAAAASUVORK5CYII=

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://centergrove.rubiconatlas.org/common_images/twitter.png?v=Atlas7.1.1b10709

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oJDRI2L71k9HcAAAAZdEVYdENv
bW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAB7UlEQVQ4y42TPW8TQRCGn7vbC+ezY6MQDDQQ
gYQjQYEEiEgg3NHR0OZH0CNLCImfQctvoLXBQhS4ioQwjSEUYIJj/BU7tx9DcUeQY8CMtMVoZ169
++yM9/BN98xMxY2phBXP478jQrcjc1BVkyBuXFwNK3fLjoISlokIMNIejW5Y2R3HdTVFVW6fdmg0
WgIu5yJWg4CJtexMpvSNWRApBAF3yopnI7XpWxFyyjG0liv5HK8Hws0WNAfCtUKMFlk4fWPIKYcV
wXeAI72IfJ9aRwFQ6ygi38eI/PEIggOUE8E6wThZsOoBD9bXjnLthJeDIT1tsE5wIignYAEtwnF+
N1rz+ZMNw1Yxz4v9H1jACvgOwWa2lsXjjyElFWAk7XFkDpyAkfSL/imwoRkYD5P1OAFlAZNBPB5v
r/8WFWAvgVeDEVoEk0H0nUjmYFHgSzI/A6GfUjJZTwoRjhgIcEoJPZMW3t9RcwK1C46tYoHOt17G
IHNgsyd0E832Wf1XBk8/rVAOQ2w2UPbXN060TykIqPeHbJfXEBKef1XsG39O4NH5Q7qJx0mlGCcB
TsC71/z+/tLqSuXWuiVWjnMnQq7mY0oqWFwiY2mNDvg8dTT3AnbHh20VzYbVD65YfzcMN8HPSidL
NtIj9Gbt/GxU/QnlbDmCzoVEawAAAABJRU5ErkJggg==

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://centergrove.rubiconatlas.org/c/css/reports.php?v=Atlas7.1.1b10709

BODY {
	FONT-FAMILY: Verdana,arial,helvetica,clean,sans-serif
}
HTML {
	FONT-FAMILY: Verdana,arial,helvetica,clean,sans-serif
}
.link {
	CURSOR: pointer; TEXT-DECORATION: underline
}
.hidden {
	DISPLAY: none
}
.invisible {
	VISIBILITY: hidden
}
.Left {
	FLOAT: left
}
.Right {
	FLOAT: right
}
.description {
	FONT-SIZE: 85%
}
.pagebreak {
	FONT-SIZE: 1px; PAGE-BREAK-AFTER: always
}
.draggable {
	CURSOR: move
}
H1 {
	FONT-SIZE: 138.5%
}
H2 {
	FONT-SIZE: 123.1%
}
H3 {
	FONT-SIZE: 108%
}
H4 {
	FONT-SIZE: 100%
}
H1 {
	FONT-WEIGHT: bold
}
H2 {
	FONT-WEIGHT: bold
}
H3 {
	FONT-WEIGHT: bold
}
H4 {
	FONT-WEIGHT: bold
}
H5 {
	FONT-WEIGHT: bold
}
H6 {
	FONT-WEIGHT: bold
}
STRONG {
	FONT-WEIGHT: bold
}
DT {
	FONT-WEIGHT: bold
}
OPTGROUP {
	FONT-WEIGHT: normal
}
ABBR {
	CURSOR: help
}
ACRONYM {
	CURSOR: help
}
EM {
	FONT-STYLE: italic
}
DEL {
	TEXT-DECORATION: line-through
}
BLOCKQUOTE {
	MARGIN: 1em
}
UL {
	MARGIN: 1em
}
OL {
	MARGIN: 1em
}
DL {
	MARGIN: 1em
}
OL {
	MARGIN-LEFT: 2em
}
UL {
	MARGIN-LEFT: 2em
}
DL {
	MARGIN-LEFT: 2em
}
OL LI {
	LIST-STYLE-POSITION: outside; LIST-STYLE-TYPE: decimal
}
UL LI {
	LIST-STYLE-POSITION: outside; LIST-STYLE-TYPE: square
}
DL DD {
	MARGIN-LEFT: 1em
}
TH {
	FONT-WEIGHT: bold; TEXT-ALIGN: center
}
CAPTION {
	MARGIN-BOTTOM: 0.5em; TEXT-ALIGN: center
}
SUP {
	VERTICAL-ALIGN: super
}
SUB {
	VERTICAL-ALIGN: sub
}
BUTTON {
	PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; =
PADDING-TOP: 1px
}
INPUT[type=3D'checkbox'] {
	PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; =
PADDING-TOP: 1px
}
INPUT[type=3D'radio'] {
	PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; =
PADDING-TOP: 1px
}
INPUT[type=3D'reset'] {
	PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; =
PADDING-TOP: 1px
}
INPUT[type=3D'submit'] {
	PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; =
PADDING-TOP: 1px
}
.AtlasButtonWrapper {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; =
PADDING-TOP: 7px
}
.AtlasButton {
	BORDER-RIGHT: #000099 1px outset; PADDING-RIGHT: 6px; BORDER-TOP: =
#000099 1px outset; DISPLAY: inline-block; PADDING-LEFT: 6px; =
FONT-WEIGHT: bold; FONT-SIZE: 85%; BACKGROUND: =
url(/common_images/button_gradient.png?v=3DAtlas7.1.1b10709) #e7e7fd =
repeat-x; PADDING-BOTTOM: 0px; BORDER-LEFT: #000099 1px outset; CURSOR: =
pointer; COLOR: #000099; LINE-HEIGHT: 2; MARGIN-RIGHT: 4px; PADDING-TOP: =
0px; BORDER-BOTTOM: #000099 1px outset; WHITE-SPACE: nowrap; =
TEXT-DECORATION: none
}
.AtlasButton:hover {
	COLOR: #cc0000; BACKGROUND-COLOR: #ffffff
}
.AtlasButton:active {
	BORDER-RIGHT: #000099 1px inset; BORDER-TOP: #000099 1px inset; =
BACKGROUND: =
url(/common_images/button_gradient_hover.png?v=3DAtlas7.1.1b10709) =
#ffffff repeat-x; BORDER-LEFT: #000099 1px inset; BORDER-BOTTOM: #000099 =
1px inset
}
.AtlasButton IMG {
	VERTICAL-ALIGN: middle
}
.StackedButton {
	MARGIN-TOP: 4px
}
.disabledButton {
	BORDER-RIGHT: #000099 1px outset; BORDER-TOP: #000099 1px outset; =
BACKGROUND: url(/common_images/button_gradient.png?v=3DAtlas7.1.1b10709) =
#e7e7fd repeat-x; BORDER-LEFT: #000099 1px outset; CURSOR: default; =
COLOR: #000099; BORDER-BOTTOM: #000099 1px outset
}
.disabledButton:hover {
	BORDER-RIGHT: #000099 1px outset; BORDER-TOP: #000099 1px outset; =
BACKGROUND: url(/common_images/button_gradient.png?v=3DAtlas7.1.1b10709) =
#e7e7fd repeat-x; BORDER-LEFT: #000099 1px outset; CURSOR: default; =
COLOR: #000099; BORDER-BOTTOM: #000099 1px outset
}
.disabledButton:active {
	BORDER-RIGHT: #000099 1px outset; BORDER-TOP: #000099 1px outset; =
BACKGROUND: url(/common_images/button_gradient.png?v=3DAtlas7.1.1b10709) =
#e7e7fd repeat-x; BORDER-LEFT: #000099 1px outset; CURSOR: default; =
COLOR: #000099; BORDER-BOTTOM: #000099 1px outset
}
.selectedButton {
	BORDER-RIGHT: #000099 1px inset; BORDER-TOP: #000099 1px inset; =
BACKGROUND: =
url(/common_images/button_gradient_hover.png?v=3DAtlas7.1.1b10709) =
#e7e7fd repeat-x; BORDER-LEFT: #000099 1px inset; BORDER-BOTTOM: #000099 =
1px inset
}
.AtlasButtonShim {
	DISPLAY: inline-block
}
.yui-skin-sam .yui-ac-input {
	DISPLAY: block; POSITION: relative
}
.toolTipUI {
	BORDER-RIGHT: #d5d5d5 2px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#d5d5d5 2px solid; MIN-WIDTH: 100px; PADDING-LEFT: 5px; FONT-SIZE: 85%; =
Z-INDEX: 10000; FILTER: alpha(opacity=3D95); LEFT: 0px; MAX-WIDTH: =
300px; PADDING-BOTTOM: 5px; BORDER-LEFT: #d5d5d5 2px solid; COLOR: =
#000099; PADDING-TOP: 5px; BORDER-BOTTOM: #d5d5d5 2px solid; POSITION: =
absolute; TOP: 0px; BACKGROUND-COLOR: #e7e7fd; opacity: 0.95; =
KHTMLOpacity: 0.95; MozOpacity: 0.95
}
.hasContextMenu {
	CURSOR: pointer
}
.ContextMenu {
	BORDER-RIGHT: #d5d5d5 2px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#d5d5d5 2px solid; MIN-WIDTH: 150px; PADDING-LEFT: 3px; FONT-SIZE: 77%; =
Z-INDEX: 9979; PADDING-BOTTOM: 3px; BORDER-LEFT: #d5d5d5 2px solid; =
WIDTH: 150px; COLOR: #000099; PADDING-TOP: 3px; BORDER-BOTTOM: #d5d5d5 =
2px solid; POSITION: absolute; BACKGROUND-COLOR: #e7e7fd
}
.ContextMenu UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; ZOOM: 1
}
.ContextMenu LI {
	LIST-STYLE-TYPE: none
}
.ContextMenu LI.hovered {
	BACKGROUND-COLOR: #d5d5d5
}
.ContextMenu LI A {
	PADDING-RIGHT: 3px; DISPLAY: block; PADDING-LEFT: 3px; PADDING-BOTTOM: =
3px; COLOR: #000099; PADDING-TOP: 3px; TEXT-DECORATION: none
}
.ContextMenu LI .link {
	PADDING-RIGHT: 3px; DISPLAY: block; PADDING-LEFT: 3px; PADDING-BOTTOM: =
3px; COLOR: #000099; PADDING-TOP: 3px; TEXT-DECORATION: none
}
.ContextMenu LI IMG {
	VERTICAL-ALIGN: middle
}
.UIDynamicItemOption A {
	TEXT-DECORATION: none
}
.UIDynamicItemOption IMG {
	VERTICAL-ALIGN: middle
}
.yui-panel-container {
	Z-INDEX: 9990! important
}
.yui-skin-sam .yui-panel-container .yui-panel {
	BORDER-TOP-WIDTH: 2px; BORDER-LEFT-WIDTH: 2px; BORDER-BOTTOM-WIDTH: =
2px; BORDER-RIGHT-WIDTH: 2px
}
.yui-skin-sam .yui-panel-container .yui-panel .hd {
	PADDING-RIGHT: 40px; FONT-SIZE: 85%
}
.yui-skin-sam .yui-panel-container .yui-panel .bd {
	FONT-SIZE: 100%; OVERFLOW: auto; ZOOM: 1; POSITION: relative
}
.yui-skin-sam .yui-panel-container .yui-panel .ft {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
FONT-SIZE: 100%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; ZOOM: 1
}
.yui-skin-sam .yui-panel-container .yui-panel .ft .AtlasButtonWrapper {
	PADDING-RIGHT: 7px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 7px; =
PADDING-BOTTOM: 7px; OVERFLOW: hidden; PADDING-TOP: 7px
}
.ContainerForUICalendarButton {
	WHITE-SPACE: nowrap
}
.ContainerForUICalendarButton IMG {
	VERTICAL-ALIGN: middle; MARGIN-RIGHT: 2px
}
.ContainerForUICalendarButton INPUT {
	VERTICAL-ALIGN: middle
}
.yui-skin-sam .yui-calcontainer {
	FONT-SIZE: 93%
}
.yui-skin-sam .yui-calendar .calhead {
	COLOR: #000
}
.yui-skin-sam .yui-calendar .calnavleft {
	_background: transparent; _text-indent: 0
}
.yui-skin-sam .yui-calendar .calnavright {
	_background: transparent; _text-indent: 0
}
.yui-skin-sam .yui-calendar TD.selected.calcell A {
	COLOR: #ffffff; BACKGROUND-COLOR: #426fd9
}
.yui-skin-sam .yui-calendar TD.calcellhover.calcell A {
	COLOR: #000000; BACKGROUND-COLOR: #b3d4ff
}
.yui-skin-sam .yui-panel .bd {
	COLOR: #333333; BACKGROUND-COLOR: #e7e7fd
}
.yui-panel .bd TD {
	COLOR: #333333; BACKGROUND-COLOR: #e7e7fd
}
#LoadingModalForm {
	WIDTH: 120px
}
.Loading {
	HEIGHT: 64px
}
.Loading .Spinner {
	BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#999999 1px solid; PADDING-LEFT: 3px; LEFT: 50%; PADDING-BOTTOM: 3px; =
MARGIN: -20px 0px 0px -20px; BORDER-LEFT: #999999 1px solid; =
PADDING-TOP: 3px; BORDER-BOTTOM: #999999 1px solid; POSITION: absolute; =
TOP: 50%; BACKGROUND-COLOR: #ffffff
}
.Loading .Spinner IMG {
	WIDTH: 32px; HEIGHT: 32px
}
.debug {
	DISPLAY: none; WIDTH: 100%
}
#overDiv TABLE {
	BACKGROUND-COLOR: #000000
}
#overDiv TABLE TD {
	BACKGROUND-COLOR: #000000
}
#overDiv TABLE TABLE {
	COLOR: #000000; BACKGROUND-COLOR: #fffecd
}
#overDiv TABLE TABLE TD {
	COLOR: #000000; BACKGROUND-COLOR: #fffecd
}
B.red {
	COLOR: red
}
#ErrorMessages {
	BORDER-RIGHT: #cc0000 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: =
#cc0000 1px solid; PADDING-LEFT: 10px; FONT-WEIGHT: bold; BACKGROUND: =
#cecefc; MARGIN-BOTTOM: 8px; PADDING-BOTTOM: 10px; BORDER-LEFT: #cc0000 =
1px solid; COLOR: #cc0000; PADDING-TOP: 10px; BORDER-BOTTOM: #cc0000 1px =
solid
}
BODY {
	BACKGROUND: #ffffff; MARGIN: 8px; COLOR: #000000
}
HTML {
	BACKGROUND: #ffffff; MARGIN: 8px; COLOR: #000000
}
TABLE TR TD {
	VERTICAL-ALIGN: top
}
HR {
	BORDER-RIGHT: #cecefc 1px solid; BORDER-TOP: #cecefc 1px solid; =
BORDER-LEFT: #cecefc 1px solid; COLOR: #cecefc; BORDER-BOTTOM: #cecefc =
1px solid; HEIGHT: 1px
}
UL LI {
=09
}
#copyright {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 77%; PADDING-BOTTOM: =
5px; WIDTH: 100%; PADDING-TOP: 10px
}
#copyright A {
	FONT-WEIGHT: normal; BORDER-BOTTOM: #000000 1px dotted; =
TEXT-DECORATION: none
}
#copyright A:hover {
	BORDER-BOTTOM: 0px; TEXT-DECORATION: underline
}
#copyright #AtlasVersion {
	FLOAT: right
}
SPAN.highlight {
	FONT-WEIGHT: bold; COLOR: #c00
}
#reportHeader {
	WIDTH: 100%
}
#reportHeaderContent {
	WIDTH: 100%
}
#reportBack {
	PADDING-RIGHT: 10px; WIDTH: 1%
}
#reportClose {
	PADDING-LEFT: 10px; WIDTH: 1%
}
#reportTitle {
	FONT-WEIGHT: bold; FONT-SIZE: 123.1%; COLOR: #cc0000
}
.ReportHeading {
	FONT-WEIGHT: bold; FONT-SIZE: 123.1%; COLOR: #cc0000
}
#ReportSubTitle {
	FONT-WEIGHT: bold; COLOR: #000099; FONT-STYLE: italic
}
#ReportSubTitle SPAN.ReportSubSubTitle {
	FONT-WEIGHT: normal
}
#CourseDescriptionReport .SortSelection {
	TEXT-ALIGN: right
}
#CourseDescriptionReport .SectionDivider {
	BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#666666 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; PADDING-BOTTOM: =
3px; BORDER-LEFT: #666666 1px solid; PADDING-TOP: 3px; BORDER-BOTTOM: =
#666666 1px solid; BACKGROUND-COLOR: #eaeaea
}
.BorderedDiv {
	BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#666666 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: =
#666666 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #666666 1px solid
}
.IndentedDiv {
	MARGIN: 2px 10px
}
A {
	COLOR: #000000
}
A:hover {
	COLOR: #cc0000
}
TABLE.ReportDisplayTable {
	WIDTH: 100%
}
TABLE.ReportDisplayTable TH {
	VERTICAL-ALIGN: top
}
TABLE.ReportDisplayTable TD {
	VERTICAL-ALIGN: top
}
TABLE.ReportDisplayTable .displayTableHeader {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: =
100%; PADDING-BOTTOM: 5px; COLOR: #000099; PADDING-TOP: 5px; FONT-STYLE: =
italic; TEXT-ALIGN: left
}
TABLE.ReportDisplayTable .displayTableHeader A {
	COLOR: #000099
}
TABLE.ReportDisplayTable .displayTableHeader A:hover {
	COLOR: #cc0000
}
TABLE.ReportDisplayTable TD {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 85%; =
PADDING-BOTTOM: 10px; PADDING-TOP: 10px
}
TABLE.ReportDisplayTable TD.labelCell {
	FONT-WEIGHT: bold; FONT-SIZE: 100%; FONT-STYLE: italic
}
TABLE.ReportDisplayTable TD.labelCell P {
	MARGIN: 0px
}
TABLE.ReportDisplayTable TD.labelCell SMALL {
	FONT-WEIGHT: normal; FONT-SIZE: 77%; MARGIN: 0px; FONT-STYLE: normal
}
TABLE.ReportDisplayTable .StandardHeader {
	FONT-WEIGHT: bold
}
TABLE.ReportDisplayTable .UnitStandardAssessmentContainer {
	MARGIN-BOTTOM: 1em
}
TABLE.ReportDisplayTable .UnitStandardAssessmentHeader {
	FONT-WEIGHT: bold
}
TABLE.ReportDisplayTable .UnitStandardAssessment {
	PADDING-LEFT: 1em
}
TABLE.ReportDisplayTable .UnitStandardAssessmentDescription {
	PADDING-LEFT: 1em
}
.browseMapFooter {
	CLEAR: both; TEXT-ALIGN: right
}
TABLE#StandardsDetail {
	BORDER-COLLAPSE: separate
}
TABLE#StandardsDetail .ContentAreaLabel {
	FONT-WEIGHT: bold; COLOR: #000099
}
TABLE#StandardsDetail .ContentArea {
	FONT-WEIGHT: bold; COLOR: #000099
}
TABLE#StandardsDetail .ContentSubArea {
	FONT-WEIGHT: bold; COLOR: #000099
}
TABLE#StandardsDetail .StateStandardLevel {
	FONT-SIZE: 77%
}
TABLE#StandardsDetail .StateStandard {
	FONT-SIZE: 77%
}
TABLE#StandardsDetail TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px
}
TABLE#SchoolValuesDetail {
	BORDER-COLLAPSE: separate
}
TABLE#SchoolValuesDetail .SchoolValueType {
	FONT-SIZE: 77%
}
TABLE#SchoolValuesDetail .SchoolValue {
	FONT-SIZE: 77%
}
TABLE#SchoolValuesDetail TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px
}
TABLE#StandardsOverview .ContentSubArea {
	FONT-WEIGHT: bold; COLOR: #000099
}
TABLE#StandardsOverview SPAN.StateStandardLevel {
	FONT-WEIGHT: bold; FONT-SIZE: 77%
}
TABLE#StandardsOverview UL LI {
	FONT-SIZE: 77%
}
TABLE#StandardsOverview TD A {
	FONT-WEIGHT: bold; COLOR: #000099
}
#reportPageContainer {
	FONT-SIZE: 85%
}
#reportPageContainer DIV.level1 {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px; BACKGROUND-COLOR: #dedede
}
#reportPageContainer DIV.level2 {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px; FONT-STYLE: italic; BACKGROUND-COLOR: #efefef
}
#reportPageContainer DIV.level3 {
	PADDING-RIGHT: 5px; PADDING-LEFT: 25px; FONT-WEIGHT: bold; =
PADDING-BOTTOM: 5px; PADDING-TOP: 5px
}
#reportPageContainer DIV.level4 {
	PADDING-RIGHT: 5px; PADDING-LEFT: 45px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#reportPageContainer DIV.level5 {
	PADDING-RIGHT: 5px; PADDING-LEFT: 65px; FONT-SIZE: 77%; PADDING-BOTTOM: =
5px; PADDING-TOP: 5px; FONT-STYLE: italic
}
#reportPageContainer DIV.level6 {
	PADDING-RIGHT: 5px; PADDING-LEFT: 85px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
.Note {
	BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#999999 1px solid; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 3px; =
BORDER-LEFT: #999999 1px solid; PADDING-TOP: 3px; BORDER-BOTTOM: #999999 =
1px solid
}
#UnitCalendarContainer {
	BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; =
MARGIN-TOP: 5px; BORDER-LEFT: #000000 1px solid; WIDTH: 100%; =
BORDER-BOTTOM: #000000 1px solid
}
#UnitCalendarContainer TD {
=09
}
#units {
	WIDTH: 100%
}
#units TR TD {
	VERTICAL-ALIGN: middle; BORDER-BOTTOM: #e7e7fd 1px solid
}
#units TR.months TD {
	BORDER-BOTTOM: 0px
}
#units TR.weeks-only TD {
	BORDER-BOTTOM: 0px
}
#units TR TD.printmarker {
	BORDER-BOTTOM: 0px
}
#units .weeknum {
	FONT-WEIGHT: bold; FONT-SIZE: 77%; TEXT-ALIGN: center
}
#units TR.weeks TD.unit {
	PADDING-RIGHT: 4px; PADDING-LEFT: 8px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#units TR.UnitRow TD.unit {
	PADDING-RIGHT: 4px; PADDING-LEFT: 8px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 1px
}
#units TR.UnitRow TD.unit INPUT {
	VERTICAL-ALIGN: middle
}
#StandardsKey {
	BORDER-RIGHT: #000099 1px solid; BORDER-TOP: #000099 1px solid; =
MARGIN-TOP: 10px; MARGIN-BOTTOM: 10px; BORDER-LEFT: #000099 1px solid; =
BORDER-BOTTOM: #000099 1px solid; BACKGROUND-COLOR: #e7e7fd
}
#StandardsKey TD {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px
}
#StandardsKey TD.CA {
	FONT-WEIGHT: bold; FONT-SIZE: 108%; COLOR: #cc0000
}
#StandardsDrilldownTable TD.CA {
	FONT-WEIGHT: bold; FONT-SIZE: 108%; COLOR: #cc0000
}
#StandardsKey TD.CSA {
	FONT-WEIGHT: bold; FONT-SIZE: 100%; COLOR: #000099
}
#StandardsDrilldownTable TD.CSA {
	FONT-WEIGHT: bold; FONT-SIZE: 100%; COLOR: #000099
}
#StandardsKey TD.BL {
	FONT-SIZE: 100%; COLOR: #000099
}
#StandardsDrilldownTable TD.BL {
	FONT-SIZE: 100%; COLOR: #000099
}
#StandardsKey TD.SSL {
	FONT-WEIGHT: bold; FONT-SIZE: 85%
}
#StandardsDrilldownTable TD.SSL {
	FONT-WEIGHT: bold; FONT-SIZE: 85%
}
#StandardsKey TD.SS {
	FONT-SIZE: 77%
}
#StandardsDrilldownTable TD.SS {
	FONT-SIZE: 77%
}
#UnitMapContainer {
	WIDTH: 100%
}
#UnitMapContainer .main {
	BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; =
BORDER-LEFT: #999999 1px solid; WIDTH: 100%; BORDER-BOTTOM: #999999 1px =
solid
}
#UnitMapContainer .main .main {
	BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: =
0px
}
#UnitMapContainer .main .unitActionsBar {
	WIDTH: 100%; TEXT-ALIGN: right
}
#UnitMapContainer .main .CurriculumTable {
	WIDTH: 100%
}
#UnitMapContainer .main .bgmaptitle {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-SIZE: 108%; PADDING-BOTTOM: =
3px; COLOR: #000099; PADDING-TOP: 3px; BACKGROUND-COLOR: #e7e7fd; =
TEXT-ALIGN: center
}
#UnitMapContainer .main .CategorySectionHeader {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-SIZE: 108%; PADDING-BOTTOM: =
3px; COLOR: #eaeafa; PADDING-TOP: 3px; BACKGROUND-COLOR: #000099
}
#UnitMapContainer .main .CategoryDescription {
	PADDING-RIGHT: 8px; BORDER-TOP: #cecefc 1px solid; PADDING-LEFT: 8px; =
PADDING-BOTTOM: 3px; PADDING-TOP: 3px; BORDER-BOTTOM: #cecefc 1px solid; =
BACKGROUND-COLOR: #e7e7fd
}
#UnitMapContainer .main .CategoryName {
	PADDING-RIGHT: 8px; BORDER-TOP: #cecefc 1px solid; PADDING-LEFT: 8px; =
FONT-WEIGHT: bold; PADDING-BOTTOM: 3px; LINE-HEIGHT: 2; PADDING-TOP: =
3px; BORDER-BOTTOM: #cecefc 1px solid; BACKGROUND-COLOR: #e7e7fd
}
#UnitMapContainer .main .CategoryDescription .CategoryName {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
#UnitMapContainer .main .CustomTemplateExtraText {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 3px; MARGIN: =
0px; PADDING-TOP: 0px; BACKGROUND-COLOR: #e7e7fd
}
#UnitMapContainer .main .CustomTemplateExtraTextBefore {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 3px; BACKGROUND-COLOR: #e7e7fd
}
#UnitMapContainer .main .CustomTemplateExtraTextAfter {
	CLEAR: both; PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: =
3px; MARGIN: 0px; PADDING-TOP: 3px; BACKGROUND-COLOR: #e7e7fd
}
#UnitMapContainer .main .CategoryText {
	WIDTH: 100%
}
#UnitMapContainer .main .curriculum {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; =
PADDING-TOP: 8px
}
#UnitMapContainer .main .curriculum .SchoolValueOpportunityContainer {
	MARGIN-BOTTOM: 1em
}
#UnitMapContainer .main .curriculum .SchoolValueOpportunity {
	FONT-WEIGHT: bold
}
#UnitMapContainer .main .curriculum .SchoolValueOpportunityDescription {
	PADDING-LEFT: 1em
}
#UnitMapContainer .main .curriculum .SchoolValueType {
	FONT-WEIGHT: bold
}
#UnitMapContainer .main .curriculum .CourseSchoolValue {
	PADDING-LEFT: 1em
}
#UnitMapContainer .main .curriculum .SchoolValue {
	PADDING-LEFT: 1em
}
#UnitMapContainer .main .curriculum .StandardHeader {
	FONT-WEIGHT: bold
}
#UnitMapContainer .main .curriculum .UnitStandardAssessmentContainer {
	MARGIN-BOTTOM: 1em
}
#UnitMapContainer .main .curriculum .UnitStandardAssessmentHeader {
	FONT-WEIGHT: bold
}
#UnitMapContainer .main .curriculum .UnitStandardAssessment {
	PADDING-LEFT: 1em
}
#UnitMapContainer .main .curriculum .UnitStandardAssessmentDescription {
	PADDING-LEFT: 1em
}
#CustomUnitMapHeaderTable TD {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 93%; PADDING-BOTTOM: =
2px; PADDING-TOP: 2px
}
#CustomUnitMapHeaderTable TH {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; =
PADDING-BOTTOM: 2px; COLOR: #cc0000; PADDING-TOP: 2px; TEXT-ALIGN: left
}
.SubjectReportTable .Class {
	BACKGROUND-COLOR: #dedede
}
.SubjectReportTable .UnitTitle {
	BACKGROUND-COLOR: #efefef
}
.SubjectReportTable TD {
	FONT-SIZE: small
}
.pypstagecell {
	BORDER-RIGHT: #000000 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#000000 1px solid; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; BORDER-LEFT: =
#000000 1px solid; PADDING-TOP: 3px; BORDER-BOTTOM: #000000 1px solid
}

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js

/*  Prototype JavaScript framework, version 1.6.1=0A=
 *  (c) 2005-2009 Sam Stephenson=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *  For details, see the Prototype web site: http://www.prototypejs.org/=0A=
 *=0A=
 =
*------------------------------------------------------------------------=
--*/=0A=
=0A=
var Prototype =3D {=0A=
  Version: '1.6.1',=0A=
=0A=
  Browser: (function(){=0A=
    var ua =3D navigator.userAgent;=0A=
    var isOpera =3D Object.prototype.toString.call(window.opera) =3D=3D =
'[object Opera]';=0A=
    return {=0A=
      IE:             !!window.attachEvent && !isOpera,=0A=
      Opera:          isOpera,=0A=
      WebKit:         ua.indexOf('AppleWebKit/') > -1,=0A=
      Gecko:          ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') =
=3D=3D=3D -1,=0A=
      MobileSafari:   /Apple.*Mobile.*Safari/.test(ua)=0A=
    }=0A=
  })(),=0A=
=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate,=0A=
    SelectorsAPI: !!document.querySelector,=0A=
    ElementExtensions: (function() {=0A=
      var constructor =3D window.Element || window.HTMLElement;=0A=
      return !!(constructor && constructor.prototype);=0A=
    })(),=0A=
    SpecificElementExtensions: (function() {=0A=
      if (typeof window.HTMLDivElement !=3D=3D 'undefined')=0A=
        return true;=0A=
=0A=
      var div =3D document.createElement('div');=0A=
      var form =3D document.createElement('form');=0A=
      var isSupported =3D false;=0A=
=0A=
      if (div['__proto__'] && (div['__proto__'] !=3D=3D =
form['__proto__'])) {=0A=
        isSupported =3D true;=0A=
      }=0A=
=0A=
      div =3D form =3D null;=0A=
=0A=
      return isSupported;=0A=
    })()=0A=
  },=0A=
=0A=
  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',=0A=
  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A=
=0A=
  emptyFunction: function() { },=0A=
  K: function(x) { return x }=0A=
};=0A=
=0A=
if (Prototype.Browser.MobileSafari)=0A=
  Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A=
=0A=
=0A=
var Abstract =3D { };=0A=
=0A=
=0A=
var Try =3D {=0A=
  these: function() {=0A=
    var returnValue;=0A=
=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var lambda =3D arguments[i];=0A=
      try {=0A=
        returnValue =3D lambda();=0A=
        break;=0A=
      } catch (e) { }=0A=
    }=0A=
=0A=
    return returnValue;=0A=
  }=0A=
};=0A=
=0A=
/* Based on Alex Arnell's inheritance implementation. */=0A=
=0A=
var Class =3D (function() {=0A=
  function subclass() {};=0A=
  function create() {=0A=
    var parent =3D null, properties =3D $A(arguments);=0A=
    if (Object.isFunction(properties[0]))=0A=
      parent =3D properties.shift();=0A=
=0A=
    function klass() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
=0A=
    Object.extend(klass, Class.Methods);=0A=
    klass.superclass =3D parent;=0A=
    klass.subclasses =3D [];=0A=
=0A=
    if (parent) {=0A=
      subclass.prototype =3D parent.prototype;=0A=
      klass.prototype =3D new subclass;=0A=
      parent.subclasses.push(klass);=0A=
    }=0A=
=0A=
    for (var i =3D 0; i < properties.length; i++)=0A=
      klass.addMethods(properties[i]);=0A=
=0A=
    if (!klass.prototype.initialize)=0A=
      klass.prototype.initialize =3D Prototype.emptyFunction;=0A=
=0A=
    klass.prototype.constructor =3D klass;=0A=
    return klass;=0A=
  }=0A=
=0A=
  function addMethods(source) {=0A=
    var ancestor   =3D this.superclass && this.superclass.prototype;=0A=
    var properties =3D Object.keys(source);=0A=
=0A=
    if (!Object.keys({ toString: true }).length) {=0A=
      if (source.toString !=3D Object.prototype.toString)=0A=
        properties.push("toString");=0A=
      if (source.valueOf !=3D Object.prototype.valueOf)=0A=
        properties.push("valueOf");=0A=
    }=0A=
=0A=
    for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A=
      var property =3D properties[i], value =3D source[property];=0A=
      if (ancestor && Object.isFunction(value) &&=0A=
          value.argumentNames().first() =3D=3D "$super") {=0A=
        var method =3D value;=0A=
        value =3D (function(m) {=0A=
          return function() { return ancestor[m].apply(this, arguments); =
};=0A=
        })(property).wrap(method);=0A=
=0A=
        value.valueOf =3D method.valueOf.bind(method);=0A=
        value.toString =3D method.toString.bind(method);=0A=
      }=0A=
      this.prototype[property] =3D value;=0A=
    }=0A=
=0A=
    return this;=0A=
  }=0A=
=0A=
  return {=0A=
    create: create,=0A=
    Methods: {=0A=
      addMethods: addMethods=0A=
    }=0A=
  };=0A=
})();=0A=
(function() {=0A=
=0A=
  var _toString =3D Object.prototype.toString;=0A=
=0A=
  function extend(destination, source) {=0A=
    for (var property in source)=0A=
      destination[property] =3D source[property];=0A=
    return destination;=0A=
  }=0A=
=0A=
  function inspect(object) {=0A=
    try {=0A=
      if (isUndefined(object)) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : String(object);=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  }=0A=
=0A=
  function toJSON(object) {=0A=
    var type =3D typeof object;=0A=
    switch (type) {=0A=
      case 'undefined':=0A=
      case 'function':=0A=
      case 'unknown': return;=0A=
      case 'boolean': return object.toString();=0A=
    }=0A=
=0A=
    if (object =3D=3D=3D null) return 'null';=0A=
    if (object.toJSON) return object.toJSON();=0A=
    if (isElement(object)) return;=0A=
=0A=
    var results =3D [];=0A=
    for (var property in object) {=0A=
      var value =3D toJSON(object[property]);=0A=
      if (!isUndefined(value))=0A=
        results.push(property.toJSON() + ': ' + value);=0A=
    }=0A=
=0A=
    return '{' + results.join(', ') + '}';=0A=
  }=0A=
=0A=
  function toQueryString(object) {=0A=
    return $H(object).toQueryString();=0A=
  }=0A=
=0A=
  function toHTML(object) {=0A=
    return object && object.toHTML ? object.toHTML() : =
String.interpret(object);=0A=
  }=0A=
=0A=
  function keys(object) {=0A=
    var results =3D [];=0A=
    for (var property in object)=0A=
      results.push(property);=0A=
    return results;=0A=
  }=0A=
=0A=
  function values(object) {=0A=
    var results =3D [];=0A=
    for (var property in object)=0A=
      results.push(object[property]);=0A=
    return results;=0A=
  }=0A=
=0A=
  function clone(object) {=0A=
    return extend({ }, object);=0A=
  }=0A=
=0A=
  function isElement(object) {=0A=
    return !!(object && object.nodeType =3D=3D 1);=0A=
  }=0A=
=0A=
  function isArray(object) {=0A=
    return _toString.call(object) =3D=3D "[object Array]";=0A=
  }=0A=
=0A=
=0A=
  function isHash(object) {=0A=
    return object instanceof Hash;=0A=
  }=0A=
=0A=
  function isFunction(object) {=0A=
    return typeof object =3D=3D=3D "function";=0A=
  }=0A=
=0A=
  function isString(object) {=0A=
    return _toString.call(object) =3D=3D "[object String]";=0A=
  }=0A=
=0A=
  function isNumber(object) {=0A=
    return _toString.call(object) =3D=3D "[object Number]";=0A=
  }=0A=
=0A=
  function isUndefined(object) {=0A=
    return typeof object =3D=3D=3D "undefined";=0A=
  }=0A=
=0A=
  extend(Object, {=0A=
    extend:        extend,=0A=
    inspect:       inspect,=0A=
    toJSON:        toJSON,=0A=
    toQueryString: toQueryString,=0A=
    toHTML:        toHTML,=0A=
    keys:          keys,=0A=
    values:        values,=0A=
    clone:         clone,=0A=
    isElement:     isElement,=0A=
    isArray:       isArray,=0A=
    isHash:        isHash,=0A=
    isFunction:    isFunction,=0A=
    isString:      isString,=0A=
    isNumber:      isNumber,=0A=
    isUndefined:   isUndefined=0A=
  });=0A=
})();=0A=
Object.extend(Function.prototype, (function() {=0A=
  var slice =3D Array.prototype.slice;=0A=
=0A=
  function update(array, args) {=0A=
    var arrayLength =3D array.length, length =3D args.length;=0A=
    while (length--) array[arrayLength + length] =3D args[length];=0A=
    return array;=0A=
  }=0A=
=0A=
  function merge(array, args) {=0A=
    array =3D slice.call(array, 0);=0A=
    return update(array, args);=0A=
  }=0A=
=0A=
  function argumentNames() {=0A=
    var names =3D =
this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]=0A=
      .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')=0A=
      .replace(/\s+/g, '').split(',');=0A=
    return names.length =3D=3D 1 && !names[0] ? [] : names;=0A=
  }=0A=
=0A=
  function bind(context) {=0A=
    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return =
this;=0A=
    var __method =3D this, args =3D slice.call(arguments, 1);=0A=
    return function() {=0A=
      var a =3D merge(args, arguments);=0A=
      return __method.apply(context, a);=0A=
    }=0A=
  }=0A=
=0A=
  function bindAsEventListener(context) {=0A=
    var __method =3D this, args =3D slice.call(arguments, 1);=0A=
    return function(event) {=0A=
      var a =3D update([event || window.event], args);=0A=
      return __method.apply(context, a);=0A=
    }=0A=
  }=0A=
=0A=
  function curry() {=0A=
    if (!arguments.length) return this;=0A=
    var __method =3D this, args =3D slice.call(arguments, 0);=0A=
    return function() {=0A=
      var a =3D merge(args, arguments);=0A=
      return __method.apply(this, a);=0A=
    }=0A=
  }=0A=
=0A=
  function delay(timeout) {=0A=
    var __method =3D this, args =3D slice.call(arguments, 1);=0A=
    timeout =3D timeout * 1000=0A=
    return window.setTimeout(function() {=0A=
      return __method.apply(__method, args);=0A=
    }, timeout);=0A=
  }=0A=
=0A=
  function defer() {=0A=
    var args =3D update([0.01], arguments);=0A=
    return this.delay.apply(this, args);=0A=
  }=0A=
=0A=
  function wrap(wrapper) {=0A=
    var __method =3D this;=0A=
    return function() {=0A=
      var a =3D update([__method.bind(this)], arguments);=0A=
      return wrapper.apply(this, a);=0A=
    }=0A=
  }=0A=
=0A=
  function methodize() {=0A=
    if (this._methodized) return this._methodized;=0A=
    var __method =3D this;=0A=
    return this._methodized =3D function() {=0A=
      var a =3D update([this], arguments);=0A=
      return __method.apply(null, a);=0A=
    };=0A=
  }=0A=
=0A=
  return {=0A=
    argumentNames:       argumentNames,=0A=
    bind:                bind,=0A=
    bindAsEventListener: bindAsEventListener,=0A=
    curry:               curry,=0A=
    delay:               delay,=0A=
    defer:               defer,=0A=
    wrap:                wrap,=0A=
    methodize:           methodize=0A=
  }=0A=
})());=0A=
=0A=
=0A=
Date.prototype.toJSON =3D function() {=0A=
  return '"' + this.getUTCFullYear() + '-' +=0A=
    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A=
    this.getUTCDate().toPaddedString(2) + 'T' +=0A=
    this.getUTCHours().toPaddedString(2) + ':' +=0A=
    this.getUTCMinutes().toPaddedString(2) + ':' +=0A=
    this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A=
};=0A=
=0A=
=0A=
RegExp.prototype.match =3D RegExp.prototype.test;=0A=
=0A=
RegExp.escape =3D function(str) {=0A=
  return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A=
};=0A=
var PeriodicalExecuter =3D Class.create({=0A=
  initialize: function(callback, frequency) {=0A=
    this.callback =3D callback;=0A=
    this.frequency =3D frequency;=0A=
    this.currentlyExecuting =3D false;=0A=
=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    this.timer =3D setInterval(this.onTimerEvent.bind(this), =
this.frequency * 1000);=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    this.callback(this);=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    if (!this.timer) return;=0A=
    clearInterval(this.timer);=0A=
    this.timer =3D null;=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    if (!this.currentlyExecuting) {=0A=
      try {=0A=
        this.currentlyExecuting =3D true;=0A=
        this.execute();=0A=
        this.currentlyExecuting =3D false;=0A=
      } catch(e) {=0A=
        this.currentlyExecuting =3D false;=0A=
        throw e;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
Object.extend(String, {=0A=
  interpret: function(value) {=0A=
    return value =3D=3D null ? '' : String(value);=0A=
  },=0A=
  specialChar: {=0A=
    '\b': '\\b',=0A=
    '\t': '\\t',=0A=
    '\n': '\\n',=0A=
    '\f': '\\f',=0A=
    '\r': '\\r',=0A=
    '\\': '\\\\'=0A=
  }=0A=
});=0A=
=0A=
Object.extend(String.prototype, (function() {=0A=
=0A=
  function prepareReplacement(replacement) {=0A=
    if (Object.isFunction(replacement)) return replacement;=0A=
    var template =3D new Template(replacement);=0A=
    return function(match) { return template.evaluate(match) };=0A=
  }=0A=
=0A=
  function gsub(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D prepareReplacement(replacement);=0A=
=0A=
    if (Object.isString(pattern))=0A=
      pattern =3D RegExp.escape(pattern);=0A=
=0A=
    if (!(pattern.length || pattern.source)) {=0A=
      replacement =3D replacement('');=0A=
      return replacement + source.split('').join(replacement) + =
replacement;=0A=
    }=0A=
=0A=
    while (source.length > 0) {=0A=
      if (match =3D source.match(pattern)) {=0A=
        result +=3D source.slice(0, match.index);=0A=
        result +=3D String.interpret(replacement(match));=0A=
        source  =3D source.slice(match.index + match[0].length);=0A=
      } else {=0A=
        result +=3D source, source =3D '';=0A=
      }=0A=
    }=0A=
    return result;=0A=
  }=0A=
=0A=
  function sub(pattern, replacement, count) {=0A=
    replacement =3D prepareReplacement(replacement);=0A=
    count =3D Object.isUndefined(count) ? 1 : count;=0A=
=0A=
    return this.gsub(pattern, function(match) {=0A=
      if (--count < 0) return match[0];=0A=
      return replacement(match);=0A=
    });=0A=
  }=0A=
=0A=
  function scan(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return String(this);=0A=
  }=0A=
=0A=
  function truncate(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : =
String(this);=0A=
  }=0A=
=0A=
  function strip() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  }=0A=
=0A=
  function stripTags() {=0A=
    return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, =
'');=0A=
  }=0A=
=0A=
  function stripScripts() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  }=0A=
=0A=
  function extractScripts() {=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=
  function evalScripts() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  }=0A=
=0A=
  function escapeHTML() {=0A=
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');=0A=
  }=0A=
=0A=
  function unescapeHTML() {=0A=
    return =
this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;=
/g,'&');=0A=
  }=0A=
=0A=
=0A=
  function toQueryParams(separator) {=0A=
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A=
    if (!match) return { };=0A=
=0A=
    return match[1].split(separator || '&').inject({ }, function(hash, =
pair) {=0A=
      if ((pair =3D pair.split('=3D'))[0]) {=0A=
        var key =3D decodeURIComponent(pair.shift());=0A=
        var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A=
        if (value !=3D undefined) value =3D decodeURIComponent(value);=0A=
=0A=
        if (key in hash) {=0A=
          if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A=
          hash[key].push(value);=0A=
        }=0A=
        else hash[key] =3D value;=0A=
      }=0A=
      return hash;=0A=
    });=0A=
  }=0A=
=0A=
  function toArray() {=0A=
    return this.split('');=0A=
  }=0A=
=0A=
  function succ() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  }=0A=
=0A=
  function times(count) {=0A=
    return count < 1 ? '' : new Array(count + 1).join(this);=0A=
  }=0A=
=0A=
  function camelize() {=0A=
    var parts =3D this.split('-'), len =3D parts.length;=0A=
    if (len =3D=3D 1) return parts[0];=0A=
=0A=
    var camelized =3D this.charAt(0) =3D=3D '-'=0A=
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A=
      : parts[0];=0A=
=0A=
    for (var i =3D 1; i < len; i++)=0A=
      camelized +=3D parts[i].charAt(0).toUpperCase() + =
parts[i].substring(1);=0A=
=0A=
    return camelized;=0A=
  }=0A=
=0A=
  function capitalize() {=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  }=0A=
=0A=
  function underscore() {=0A=
    return this.replace(/::/g, '/')=0A=
               .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')=0A=
               .replace(/([a-z\d])([A-Z])/g, '$1_$2')=0A=
               .replace(/-/g, '_')=0A=
               .toLowerCase();=0A=
  }=0A=
=0A=
  function dasherize() {=0A=
    return this.replace(/_/g, '-');=0A=
  }=0A=
=0A=
  function inspect(useDoubleQuotes) {=0A=
    var escapedString =3D this.replace(/[\x00-\x1f\\]/g, =
function(character) {=0A=
      if (character in String.specialChar) {=0A=
        return String.specialChar[character];=0A=
      }=0A=
      return '\\u00' + character.charCodeAt().toPaddedString(2, 16);=0A=
    });=0A=
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';=0A=
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  }=0A=
=0A=
  function toJSON() {=0A=
    return this.inspect(true);=0A=
  }=0A=
=0A=
  function unfilterJSON(filter) {=0A=
    return this.replace(filter || Prototype.JSONFilter, '$1');=0A=
  }=0A=
=0A=
  function isJSON() {=0A=
    var str =3D this;=0A=
    if (str.blank()) return false;=0A=
    str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A=
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A=
  }=0A=
=0A=
  function evalJSON(sanitize) {=0A=
    var json =3D this.unfilterJSON();=0A=
    try {=0A=
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A=
    } catch (e) { }=0A=
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A=
  }=0A=
=0A=
  function include(pattern) {=0A=
    return this.indexOf(pattern) > -1;=0A=
  }=0A=
=0A=
  function startsWith(pattern) {=0A=
    return this.indexOf(pattern) =3D=3D=3D 0;=0A=
  }=0A=
=0A=
  function endsWith(pattern) {=0A=
    var d =3D this.length - pattern.length;=0A=
    return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A=
  }=0A=
=0A=
  function empty() {=0A=
    return this =3D=3D '';=0A=
  }=0A=
=0A=
  function blank() {=0A=
    return /^\s*$/.test(this);=0A=
  }=0A=
=0A=
  function interpolate(object, pattern) {=0A=
    return new Template(this, pattern).evaluate(object);=0A=
  }=0A=
=0A=
  return {=0A=
    gsub:           gsub,=0A=
    sub:            sub,=0A=
    scan:           scan,=0A=
    truncate:       truncate,=0A=
    strip:          String.prototype.trim ? String.prototype.trim : =
strip,=0A=
    stripTags:      stripTags,=0A=
    stripScripts:   stripScripts,=0A=
    extractScripts: extractScripts,=0A=
    evalScripts:    evalScripts,=0A=
    escapeHTML:     escapeHTML,=0A=
    unescapeHTML:   unescapeHTML,=0A=
    toQueryParams:  toQueryParams,=0A=
    parseQuery:     toQueryParams,=0A=
    toArray:        toArray,=0A=
    succ:           succ,=0A=
    times:          times,=0A=
    camelize:       camelize,=0A=
    capitalize:     capitalize,=0A=
    underscore:     underscore,=0A=
    dasherize:      dasherize,=0A=
    inspect:        inspect,=0A=
    toJSON:         toJSON,=0A=
    unfilterJSON:   unfilterJSON,=0A=
    isJSON:         isJSON,=0A=
    evalJSON:       evalJSON,=0A=
    include:        include,=0A=
    startsWith:     startsWith,=0A=
    endsWith:       endsWith,=0A=
    empty:          empty,=0A=
    blank:          blank,=0A=
    interpolate:    interpolate=0A=
  };=0A=
})());=0A=
=0A=
var Template =3D Class.create({=0A=
  initialize: function(template, pattern) {=0A=
    this.template =3D template.toString();=0A=
    this.pattern =3D pattern || Template.Pattern;=0A=
  },=0A=
=0A=
  evaluate: function(object) {=0A=
    if (object && Object.isFunction(object.toTemplateReplacements))=0A=
      object =3D object.toTemplateReplacements();=0A=
=0A=
    return this.template.gsub(this.pattern, function(match) {=0A=
      if (object =3D=3D null) return (match[1] + '');=0A=
=0A=
      var before =3D match[1] || '';=0A=
      if (before =3D=3D '\\') return match[2];=0A=
=0A=
      var ctx =3D object, expr =3D match[3];=0A=
      var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A=
      match =3D pattern.exec(expr);=0A=
      if (match =3D=3D null) return before;=0A=
=0A=
      while (match !=3D null) {=0A=
        var comp =3D match[1].startsWith('[') ? =
match[2].replace(/\\\\]/g, ']') : match[1];=0A=
        ctx =3D ctx[comp];=0A=
        if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A=
        expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : =
match[0].length);=0A=
        match =3D pattern.exec(expr);=0A=
      }=0A=
=0A=
      return before + String.interpret(ctx);=0A=
    });=0A=
  }=0A=
});=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
=0A=
var $break =3D { };=0A=
=0A=
var Enumerable =3D (function() {=0A=
  function each(iterator, context) {=0A=
    var index =3D 0;=0A=
    try {=0A=
      this._each(function(value) {=0A=
        iterator.call(context, value, index++);=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
    return this;=0A=
  }=0A=
=0A=
  function eachSlice(number, iterator, context) {=0A=
    var index =3D -number, slices =3D [], array =3D this.toArray();=0A=
    if (number < 1) return array;=0A=
    while ((index +=3D number) < array.length)=0A=
      slices.push(array.slice(index, index+number));=0A=
    return slices.collect(iterator, context);=0A=
  }=0A=
=0A=
  function all(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!iterator.call(context, value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function any(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result =3D false;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!iterator.call(context, value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function collect(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(iterator.call(context, value, index));=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function detect(iterator, context) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator.call(context, value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function findAll(iterator, context) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator.call(context, value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function grep(filter, iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var results =3D [];=0A=
=0A=
    if (Object.isString(filter))=0A=
      filter =3D new RegExp(RegExp.escape(filter));=0A=
=0A=
    this.each(function(value, index) {=0A=
      if (filter.match(value))=0A=
        results.push(iterator.call(context, value, index));=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function include(object) {=0A=
    if (Object.isFunction(this.indexOf))=0A=
      if (this.indexOf(object) !=3D -1) return true;=0A=
=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  }=0A=
=0A=
  function inGroupsOf(number, fillWith) {=0A=
    fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  }=0A=
=0A=
  function inject(memo, iterator, context) {=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator.call(context, memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  }=0A=
=0A=
  function invoke(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.map(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  }=0A=
=0A=
  function max(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator.call(context, value, index);=0A=
      if (result =3D=3D null || value >=3D result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function min(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator.call(context, value, index);=0A=
      if (result =3D=3D null || value < result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function partition(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      (iterator.call(context, value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  }=0A=
=0A=
  function pluck(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function reject(iterator, context) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator.call(context, value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function sortBy(iterator, context) {=0A=
    return this.map(function(value, index) {=0A=
      return {=0A=
        value: value,=0A=
        criteria: iterator.call(context, value, index)=0A=
      };=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=
  function toArray() {=0A=
    return this.map();=0A=
  }=0A=
=0A=
  function zip() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (Object.isFunction(args.last()))=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      return iterator(collections.pluck(index));=0A=
    });=0A=
  }=0A=
=0A=
  function size() {=0A=
    return this.toArray().length;=0A=
  }=0A=
=0A=
  function inspect() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
  return {=0A=
    each:       each,=0A=
    eachSlice:  eachSlice,=0A=
    all:        all,=0A=
    every:      all,=0A=
    any:        any,=0A=
    some:       any,=0A=
    collect:    collect,=0A=
    map:        collect,=0A=
    detect:     detect,=0A=
    findAll:    findAll,=0A=
    select:     findAll,=0A=
    filter:     findAll,=0A=
    grep:       grep,=0A=
    include:    include,=0A=
    member:     include,=0A=
    inGroupsOf: inGroupsOf,=0A=
    inject:     inject,=0A=
    invoke:     invoke,=0A=
    max:        max,=0A=
    min:        min,=0A=
    partition:  partition,=0A=
    pluck:      pluck,=0A=
    reject:     reject,=0A=
    sortBy:     sortBy,=0A=
    toArray:    toArray,=0A=
    entries:    toArray,=0A=
    zip:        zip,=0A=
    size:       size,=0A=
    inspect:    inspect,=0A=
    find:       detect=0A=
  };=0A=
})();=0A=
function $A(iterable) {=0A=
  if (!iterable) return [];=0A=
  if ('toArray' in Object(iterable)) return iterable.toArray();=0A=
  var length =3D iterable.length || 0, results =3D new Array(length);=0A=
  while (length--) results[length] =3D iterable[length];=0A=
  return results;=0A=
}=0A=
=0A=
function $w(string) {=0A=
  if (!Object.isString(string)) return [];=0A=
  string =3D string.strip();=0A=
  return string ? string.split(/\s+/) : [];=0A=
}=0A=
=0A=
Array.from =3D $A;=0A=
=0A=
=0A=
(function() {=0A=
  var arrayProto =3D Array.prototype,=0A=
      slice =3D arrayProto.slice,=0A=
      _each =3D arrayProto.forEach; // use native browser JS 1.6 =
implementation if available=0A=
=0A=
  function each(iterator) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      iterator(this[i]);=0A=
  }=0A=
  if (!_each) _each =3D each;=0A=
=0A=
  function clear() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  }=0A=
=0A=
  function first() {=0A=
    return this[0];=0A=
  }=0A=
=0A=
  function last() {=0A=
    return this[this.length - 1];=0A=
  }=0A=
=0A=
  function compact() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  }=0A=
=0A=
  function flatten() {=0A=
    return this.inject([], function(array, value) {=0A=
      if (Object.isArray(value))=0A=
        return array.concat(value.flatten());=0A=
      array.push(value);=0A=
      return array;=0A=
    });=0A=
  }=0A=
=0A=
  function without() {=0A=
    var values =3D slice.call(arguments, 0);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  }=0A=
=0A=
  function reverse(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  }=0A=
=0A=
  function uniq(sorted) {=0A=
    return this.inject([], function(array, value, index) {=0A=
      if (0 =3D=3D index || (sorted ? array.last() !=3D value : =
!array.include(value)))=0A=
        array.push(value);=0A=
      return array;=0A=
    });=0A=
  }=0A=
=0A=
  function intersect(array) {=0A=
    return this.uniq().findAll(function(item) {=0A=
      return array.detect(function(value) { return item =3D=3D=3D value =
});=0A=
    });=0A=
  }=0A=
=0A=
=0A=
  function clone() {=0A=
    return slice.call(this, 0);=0A=
  }=0A=
=0A=
  function size() {=0A=
    return this.length;=0A=
  }=0A=
=0A=
  function inspect() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  }=0A=
=0A=
  function toJSON() {=0A=
    var results =3D [];=0A=
    this.each(function(object) {=0A=
      var value =3D Object.toJSON(object);=0A=
      if (!Object.isUndefined(value)) results.push(value);=0A=
    });=0A=
    return '[' + results.join(', ') + ']';=0A=
  }=0A=
=0A=
  function indexOf(item, i) {=0A=
    i || (i =3D 0);=0A=
    var length =3D this.length;=0A=
    if (i < 0) i =3D length + i;=0A=
    for (; i < length; i++)=0A=
      if (this[i] =3D=3D=3D item) return i;=0A=
    return -1;=0A=
  }=0A=
=0A=
  function lastIndexOf(item, i) {=0A=
    i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A=
    var n =3D this.slice(0, i).reverse().indexOf(item);=0A=
    return (n < 0) ? n : i - n - 1;=0A=
  }=0A=
=0A=
  function concat() {=0A=
    var array =3D slice.call(this, 0), item;=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      item =3D arguments[i];=0A=
      if (Object.isArray(item) && !('callee' in item)) {=0A=
        for (var j =3D 0, arrayLength =3D item.length; j < arrayLength; =
j++)=0A=
          array.push(item[j]);=0A=
      } else {=0A=
        array.push(item);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  }=0A=
=0A=
  Object.extend(arrayProto, Enumerable);=0A=
=0A=
  if (!arrayProto._reverse)=0A=
    arrayProto._reverse =3D arrayProto.reverse;=0A=
=0A=
  Object.extend(arrayProto, {=0A=
    _each:     _each,=0A=
    clear:     clear,=0A=
    first:     first,=0A=
    last:      last,=0A=
    compact:   compact,=0A=
    flatten:   flatten,=0A=
    without:   without,=0A=
    reverse:   reverse,=0A=
    uniq:      uniq,=0A=
    intersect: intersect,=0A=
    clone:     clone,=0A=
    toArray:   clone,=0A=
    size:      size,=0A=
    inspect:   inspect,=0A=
    toJSON:    toJSON=0A=
  });=0A=
=0A=
  var CONCAT_ARGUMENTS_BUGGY =3D (function() {=0A=
    return [].concat(arguments)[0][0] !=3D=3D 1;=0A=
  })(1,2)=0A=
=0A=
  if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat =3D concat;=0A=
=0A=
  if (!arrayProto.indexOf) arrayProto.indexOf =3D indexOf;=0A=
  if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf =3D lastIndexOf;=0A=
})();=0A=
function $H(object) {=0A=
  return new Hash(object);=0A=
};=0A=
=0A=
var Hash =3D Class.create(Enumerable, (function() {=0A=
  function initialize(object) {=0A=
    this._object =3D Object.isHash(object) ? object.toObject() : =
Object.clone(object);=0A=
  }=0A=
=0A=
  function _each(iterator) {=0A=
    for (var key in this._object) {=0A=
      var value =3D this._object[key], pair =3D [key, value];=0A=
      pair.key =3D key;=0A=
      pair.value =3D value;=0A=
      iterator(pair);=0A=
    }=0A=
  }=0A=
=0A=
  function set(key, value) {=0A=
    return this._object[key] =3D value;=0A=
  }=0A=
=0A=
  function get(key) {=0A=
    if (this._object[key] !=3D=3D Object.prototype[key])=0A=
      return this._object[key];=0A=
  }=0A=
=0A=
  function unset(key) {=0A=
    var value =3D this._object[key];=0A=
    delete this._object[key];=0A=
    return value;=0A=
  }=0A=
=0A=
  function toObject() {=0A=
    return Object.clone(this._object);=0A=
  }=0A=
=0A=
  function keys() {=0A=
    return this.pluck('key');=0A=
  }=0A=
=0A=
  function values() {=0A=
    return this.pluck('value');=0A=
  }=0A=
=0A=
  function index(value) {=0A=
    var match =3D this.detect(function(pair) {=0A=
      return pair.value =3D=3D=3D value;=0A=
    });=0A=
    return match && match.key;=0A=
  }=0A=
=0A=
  function merge(object) {=0A=
    return this.clone().update(object);=0A=
  }=0A=
=0A=
  function update(object) {=0A=
    return new Hash(object).inject(this, function(result, pair) {=0A=
      result.set(pair.key, pair.value);=0A=
      return result;=0A=
    });=0A=
  }=0A=
=0A=
  function toQueryPair(key, value) {=0A=
    if (Object.isUndefined(value)) return key;=0A=
    return key + '=3D' + encodeURIComponent(String.interpret(value));=0A=
  }=0A=
=0A=
  function toQueryString() {=0A=
    return this.inject([], function(results, pair) {=0A=
      var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A=
=0A=
      if (values && typeof values =3D=3D 'object') {=0A=
        if (Object.isArray(values))=0A=
          return results.concat(values.map(toQueryPair.curry(key)));=0A=
      } else results.push(toQueryPair(key, values));=0A=
      return results;=0A=
    }).join('&');=0A=
  }=0A=
=0A=
  function inspect() {=0A=
    return '#<Hash:{' + this.map(function(pair) {=0A=
      return pair.map(Object.inspect).join(': ');=0A=
    }).join(', ') + '}>';=0A=
  }=0A=
=0A=
  function toJSON() {=0A=
    return Object.toJSON(this.toObject());=0A=
  }=0A=
=0A=
  function clone() {=0A=
    return new Hash(this);=0A=
  }=0A=
=0A=
  return {=0A=
    initialize:             initialize,=0A=
    _each:                  _each,=0A=
    set:                    set,=0A=
    get:                    get,=0A=
    unset:                  unset,=0A=
    toObject:               toObject,=0A=
    toTemplateReplacements: toObject,=0A=
    keys:                   keys,=0A=
    values:                 values,=0A=
    index:                  index,=0A=
    merge:                  merge,=0A=
    update:                 update,=0A=
    toQueryString:          toQueryString,=0A=
    inspect:                inspect,=0A=
    toJSON:                 toJSON,=0A=
    clone:                  clone=0A=
  };=0A=
})());=0A=
=0A=
Hash.from =3D $H;=0A=
Object.extend(Number.prototype, (function() {=0A=
  function toColorPart() {=0A=
    return this.toPaddedString(2, 16);=0A=
  }=0A=
=0A=
  function succ() {=0A=
    return this + 1;=0A=
  }=0A=
=0A=
  function times(iterator, context) {=0A=
    $R(0, this, true).each(iterator, context);=0A=
    return this;=0A=
  }=0A=
=0A=
  function toPaddedString(length, radix) {=0A=
    var string =3D this.toString(radix || 10);=0A=
    return '0'.times(length - string.length) + string;=0A=
  }=0A=
=0A=
  function toJSON() {=0A=
    return isFinite(this) ? this.toString() : 'null';=0A=
  }=0A=
=0A=
  function abs() {=0A=
    return Math.abs(this);=0A=
  }=0A=
=0A=
  function round() {=0A=
    return Math.round(this);=0A=
  }=0A=
=0A=
  function ceil() {=0A=
    return Math.ceil(this);=0A=
  }=0A=
=0A=
  function floor() {=0A=
    return Math.floor(this);=0A=
  }=0A=
=0A=
  return {=0A=
    toColorPart:    toColorPart,=0A=
    succ:           succ,=0A=
    times:          times,=0A=
    toPaddedString: toPaddedString,=0A=
    toJSON:         toJSON,=0A=
    abs:            abs,=0A=
    round:          round,=0A=
    ceil:           ceil,=0A=
    floor:          floor=0A=
  };=0A=
})());=0A=
=0A=
function $R(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
}=0A=
=0A=
var ObjectRange =3D Class.create(Enumerable, (function() {=0A=
  function initialize(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  }=0A=
=0A=
  function _each(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  }=0A=
=0A=
  function include(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=
  return {=0A=
    initialize: initialize,=0A=
    _each:      _each,=0A=
    include:    include=0A=
  };=0A=
})());=0A=
=0A=
=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new XMLHttpRequest()},=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
};=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responder) {=0A=
    if (!this.include(responder))=0A=
      this.responders.push(responder);=0A=
  },=0A=
=0A=
  unregister: function(responder) {=0A=
    this.responders =3D this.responders.without(responder);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (Object.isFunction(responder[callback])) {=0A=
        try {=0A=
          responder[callback].apply(responder, [request, transport, =
json]);=0A=
        } catch (e) { }=0A=
      }=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Ajax.Responders, Enumerable);=0A=
=0A=
Ajax.Responders.register({=0A=
  onCreate:   function() { Ajax.activeRequestCount++ },=0A=
  onComplete: function() { Ajax.activeRequestCount-- }=0A=
});=0A=
Ajax.Base =3D Class.create({=0A=
  initialize: function(options) {=0A=
    this.options =3D {=0A=
      method:       'post',=0A=
      asynchronous: true,=0A=
      contentType:  'application/x-www-form-urlencoded',=0A=
      encoding:     'UTF-8',=0A=
      parameters:   '',=0A=
      evalJSON:     true,=0A=
      evalJS:       true=0A=
    };=0A=
    Object.extend(this.options, options || { });=0A=
=0A=
    this.options.method =3D this.options.method.toLowerCase();=0A=
=0A=
    if (Object.isString(this.options.parameters))=0A=
      this.options.parameters =3D =
this.options.parameters.toQueryParams();=0A=
    else if (Object.isHash(this.options.parameters))=0A=
      this.options.parameters =3D this.options.parameters.toObject();=0A=
  }=0A=
});=0A=
Ajax.Request =3D Class.create(Ajax.Base, {=0A=
  _complete: false,=0A=
=0A=
  initialize: function($super, url, options) {=0A=
    $super(options);=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    this.url =3D url;=0A=
    this.method =3D this.options.method;=0A=
    var params =3D Object.clone(this.options.parameters);=0A=
=0A=
    if (!['get', 'post'].include(this.method)) {=0A=
      params['_method'] =3D this.method;=0A=
      this.method =3D 'post';=0A=
    }=0A=
=0A=
    this.parameters =3D params;=0A=
=0A=
    if (params =3D Object.toQueryString(params)) {=0A=
      if (this.method =3D=3D 'get')=0A=
        this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A=
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A=
        params +=3D '&_=3D';=0A=
    }=0A=
=0A=
    try {=0A=
      var response =3D new Ajax.Response(this);=0A=
      if (this.options.onCreate) this.options.onCreate(response);=0A=
      Ajax.Responders.dispatch('onCreate', this, response);=0A=
=0A=
      this.transport.open(this.method.toUpperCase(), this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous) =
this.respondToReadyState.bind(this).defer(1);=0A=
=0A=
      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
      this.setRequestHeaders();=0A=
=0A=
      this.body =3D this.method =3D=3D 'post' ? (this.options.postBody =
|| params) : null;=0A=
      this.transport.send(this.body);=0A=
=0A=
      /* Force Firefox to handle ready state 4 for synchronous requests =
*/=0A=
      if (!this.options.asynchronous && this.transport.overrideMimeType)=0A=
        this.onStateChange();=0A=
=0A=
    }=0A=
    catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var headers =3D {=0A=
      'X-Requested-With': 'XMLHttpRequest',=0A=
      'X-Prototype-Version': Prototype.Version,=0A=
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'=0A=
    };=0A=
=0A=
    if (this.method =3D=3D 'post') {=0A=
      headers['Content-type'] =3D this.options.contentType +=0A=
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');=0A=
=0A=
      /* Force "Connection: close" for older Mozilla browsers to work=0A=
       * around a bug where XMLHttpRequest sends an incorrect=0A=
       * Content-length header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType &&=0A=
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)=0A=
            headers['Connection'] =3D 'close';=0A=
    }=0A=
=0A=
    if (typeof this.options.requestHeaders =3D=3D 'object') {=0A=
      var extras =3D this.options.requestHeaders;=0A=
=0A=
      if (Object.isFunction(extras.push))=0A=
        for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A=
          headers[extras[i]] =3D extras[i+1];=0A=
      else=0A=
        $H(extras).each(function(pair) { headers[pair.key] =3D =
pair.value });=0A=
    }=0A=
=0A=
    for (var name in headers)=0A=
      this.transport.setRequestHeader(name, headers[name]);=0A=
  },=0A=
=0A=
  success: function() {=0A=
    var status =3D this.getStatus();=0A=
    return !status || (status >=3D 200 && status < 300);=0A=
  },=0A=
=0A=
  getStatus: function() {=0A=
    try {=0A=
      return this.transport.status || 0;=0A=
    } catch (e) { return 0 }=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var state =3D Ajax.Request.Events[readyState], response =3D new =
Ajax.Response(this);=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      try {=0A=
        this._complete =3D true;=0A=
        (this.options['on' + response.status]=0A=
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A=
         || Prototype.emptyFunction)(response, response.headerJSON);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      var contentType =3D response.getHeader('Content-type');=0A=
      if (this.options.evalJS =3D=3D 'force'=0A=
          || (this.options.evalJS && this.isSameOrigin() && contentType=0A=
          && =
contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s=
*$/i)))=0A=
        this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + state] || Prototype.emptyFunction)(response, =
response.headerJSON);=0A=
      Ajax.Responders.dispatch('on' + state, this, response, =
response.headerJSON);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  isSameOrigin: function() {=0A=
    var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A=
    return !m || (m[0] =3D=3D =
'#{protocol}//#{domain}#{port}'.interpolate({=0A=
      protocol: location.protocol,=0A=
      domain: document.domain,=0A=
      port: location.port ? ':' + location.port : ''=0A=
    }));=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name) || null;=0A=
    } catch (e) { return null; }=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval((this.transport.responseText || '').unfilterJSON());=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  dispatchException: function(exception) {=0A=
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);=0A=
    Ajax.Responders.dispatch('onException', this, exception);=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
Ajax.Response =3D Class.create({=0A=
  initialize: function(request){=0A=
    this.request =3D request;=0A=
    var transport  =3D this.transport  =3D request.transport,=0A=
        readyState =3D this.readyState =3D transport.readyState;=0A=
=0A=
    if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) =
{=0A=
      this.status       =3D this.getStatus();=0A=
      this.statusText   =3D this.getStatusText();=0A=
      this.responseText =3D String.interpret(transport.responseText);=0A=
      this.headerJSON   =3D this._getHeaderJSON();=0A=
    }=0A=
=0A=
    if(readyState =3D=3D 4) {=0A=
      var xml =3D transport.responseXML;=0A=
      this.responseXML  =3D Object.isUndefined(xml) ? null : xml;=0A=
      this.responseJSON =3D this._getResponseJSON();=0A=
    }=0A=
  },=0A=
=0A=
  status:      0,=0A=
=0A=
  statusText: '',=0A=
=0A=
  getStatus: Ajax.Request.prototype.getStatus,=0A=
=0A=
  getStatusText: function() {=0A=
    try {=0A=
      return this.transport.statusText || '';=0A=
    } catch (e) { return '' }=0A=
  },=0A=
=0A=
  getHeader: Ajax.Request.prototype.getHeader,=0A=
=0A=
  getAllHeaders: function() {=0A=
    try {=0A=
      return this.getAllResponseHeaders();=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  getResponseHeader: function(name) {=0A=
    return this.transport.getResponseHeader(name);=0A=
  },=0A=
=0A=
  getAllResponseHeaders: function() {=0A=
    return this.transport.getAllResponseHeaders();=0A=
  },=0A=
=0A=
  _getHeaderJSON: function() {=0A=
    var json =3D this.getHeader('X-JSON');=0A=
    if (!json) return null;=0A=
    json =3D decodeURIComponent(escape(json));=0A=
    try {=0A=
      return json.evalJSON(this.request.options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  _getResponseJSON: function() {=0A=
    var options =3D this.request.options;=0A=
    if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A=
      !(this.getHeader('Content-type') || =
'').include('application/json')) ||=0A=
        this.responseText.blank())=0A=
          return null;=0A=
    try {=0A=
      return this.responseText.evalJSON(options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.Updater =3D Class.create(Ajax.Request, {=0A=
  initialize: function($super, container, url, options) {=0A=
    this.container =3D {=0A=
      success: (container.success || container),=0A=
      failure: (container.failure || (container.success ? null : =
container))=0A=
    };=0A=
=0A=
    options =3D Object.clone(options);=0A=
    var onComplete =3D options.onComplete;=0A=
    options.onComplete =3D (function(response, json) {=0A=
      this.updateContent(response.responseText);=0A=
      if (Object.isFunction(onComplete)) onComplete(response, json);=0A=
    }).bind(this);=0A=
=0A=
    $super(url, options);=0A=
  },=0A=
=0A=
  updateContent: function(responseText) {=0A=
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'],=0A=
        options =3D this.options;=0A=
=0A=
    if (!options.evalScripts) responseText =3D =
responseText.stripScripts();=0A=
=0A=
    if (receiver =3D $(receiver)) {=0A=
      if (options.insertion) {=0A=
        if (Object.isString(options.insertion)) {=0A=
          var insertion =3D { }; insertion[options.insertion] =3D =
responseText;=0A=
          receiver.insert(insertion);=0A=
        }=0A=
        else options.insertion(receiver, responseText);=0A=
      }=0A=
      else receiver.update(responseText);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A=
  initialize: function($super, container, url, options) {=0A=
    $super(options);=0A=
    this.onComplete =3D this.options.onComplete;=0A=
=0A=
    this.frequency =3D (this.options.frequency || 2);=0A=
    this.decay =3D (this.options.decay || 1);=0A=
=0A=
    this.updater =3D { };=0A=
    this.container =3D container;=0A=
    this.url =3D url;=0A=
=0A=
    this.start();=0A=
  },=0A=
=0A=
  start: function() {=0A=
    this.options.onComplete =3D this.updateComplete.bind(this);=0A=
    this.onTimerEvent();=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    this.updater.options.onComplete =3D undefined;=0A=
    clearTimeout(this.timer);=0A=
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A=
  },=0A=
=0A=
  updateComplete: function(response) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (response.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D response.responseText;=0A=
    }=0A=
    this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * =
this.frequency);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
=0A=
=0A=
=0A=
function $(element) {=0A=
  if (arguments.length > 1) {=0A=
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)=0A=
      elements.push($(arguments[i]));=0A=
    return elements;=0A=
  }=0A=
  if (Object.isString(element))=0A=
    element =3D document.getElementById(element);=0A=
  return Element.extend(element);=0A=
}=0A=
=0A=
if (Prototype.BrowserFeatures.XPath) {=0A=
  document._getElementsByXPath =3D function(expression, parentElement) {=0A=
    var results =3D [];=0A=
    var query =3D document.evaluate(expression, $(parentElement) || =
document,=0A=
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
    for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A=
      results.push(Element.extend(query.snapshotItem(i)));=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!window.Node) var Node =3D { };=0A=
=0A=
if (!Node.ELEMENT_NODE) {=0A=
  Object.extend(Node, {=0A=
    ELEMENT_NODE: 1,=0A=
    ATTRIBUTE_NODE: 2,=0A=
    TEXT_NODE: 3,=0A=
    CDATA_SECTION_NODE: 4,=0A=
    ENTITY_REFERENCE_NODE: 5,=0A=
    ENTITY_NODE: 6,=0A=
    PROCESSING_INSTRUCTION_NODE: 7,=0A=
    COMMENT_NODE: 8,=0A=
    DOCUMENT_NODE: 9,=0A=
    DOCUMENT_TYPE_NODE: 10,=0A=
    DOCUMENT_FRAGMENT_NODE: 11,=0A=
    NOTATION_NODE: 12=0A=
  });=0A=
}=0A=
=0A=
=0A=
(function(global) {=0A=
=0A=
  var SETATTRIBUTE_IGNORES_NAME =3D (function(){=0A=
    var elForm =3D document.createElement("form");=0A=
    var elInput =3D document.createElement("input");=0A=
    var root =3D document.documentElement;=0A=
    elInput.setAttribute("name", "test");=0A=
    elForm.appendChild(elInput);=0A=
    root.appendChild(elForm);=0A=
    var isBuggy =3D elForm.elements=0A=
      ? (typeof elForm.elements.test =3D=3D "undefined")=0A=
      : null;=0A=
    root.removeChild(elForm);=0A=
    elForm =3D elInput =3D null;=0A=
    return isBuggy;=0A=
  })();=0A=
=0A=
  var element =3D global.Element;=0A=
  global.Element =3D function(tagName, attributes) {=0A=
    attributes =3D attributes || { };=0A=
    tagName =3D tagName.toLowerCase();=0A=
    var cache =3D Element.cache;=0A=
    if (SETATTRIBUTE_IGNORES_NAME && attributes.name) {=0A=
      tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A=
      delete attributes.name;=0A=
      return Element.writeAttribute(document.createElement(tagName), =
attributes);=0A=
    }=0A=
    if (!cache[tagName]) cache[tagName] =3D =
Element.extend(document.createElement(tagName));=0A=
    return Element.writeAttribute(cache[tagName].cloneNode(false), =
attributes);=0A=
  };=0A=
  Object.extend(global.Element, element || { });=0A=
  if (element) global.Element.prototype =3D element.prototype;=0A=
})(this);=0A=
=0A=
Element.cache =3D { };=0A=
Element.idCounter =3D 1;=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=
=0A=
  hide: function(element) {=0A=
    element =3D $(element);=0A=
    element.style.display =3D 'none';=0A=
    return element;=0A=
  },=0A=
=0A=
  show: function(element) {=0A=
    element =3D $(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(){=0A=
=0A=
    var SELECT_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A=
      var el =3D document.createElement("select"),=0A=
          isBuggy =3D true;=0A=
      el.innerHTML =3D "<option value=3D\"test\">test</option>";=0A=
      if (el.options && el.options[0]) {=0A=
        isBuggy =3D el.options[0].nodeName.toUpperCase() !=3D=3D =
"OPTION";=0A=
      }=0A=
      el =3D null;=0A=
      return isBuggy;=0A=
    })();=0A=
=0A=
    var TABLE_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A=
      try {=0A=
        var el =3D document.createElement("table");=0A=
        if (el && el.tBodies) {=0A=
          el.innerHTML =3D "<tbody><tr><td>test</td></tr></tbody>";=0A=
          var isBuggy =3D typeof el.tBodies[0] =3D=3D "undefined";=0A=
          el =3D null;=0A=
          return isBuggy;=0A=
        }=0A=
      } catch (e) {=0A=
        return true;=0A=
      }=0A=
    })();=0A=
=0A=
    var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING =3D (function () {=0A=
      var s =3D document.createElement("script"),=0A=
          isBuggy =3D false;=0A=
      try {=0A=
        s.appendChild(document.createTextNode(""));=0A=
        isBuggy =3D !s.firstChild ||=0A=
          s.firstChild && s.firstChild.nodeType !=3D=3D 3;=0A=
      } catch (e) {=0A=
        isBuggy =3D true;=0A=
      }=0A=
      s =3D null;=0A=
      return isBuggy;=0A=
    })();=0A=
=0A=
    function update(element, content) {=0A=
      element =3D $(element);=0A=
=0A=
      if (content && content.toElement)=0A=
        content =3D content.toElement();=0A=
=0A=
      if (Object.isElement(content))=0A=
        return element.update().insert(content);=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      var tagName =3D element.tagName.toUpperCase();=0A=
=0A=
      if (tagName =3D=3D=3D 'SCRIPT' && =
SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {=0A=
        element.text =3D content;=0A=
        return element;=0A=
      }=0A=
=0A=
      if (SELECT_ELEMENT_INNERHTML_BUGGY || =
TABLE_ELEMENT_INNERHTML_BUGGY) {=0A=
        if (tagName in Element._insertionTranslations.tags) {=0A=
          while (element.firstChild) {=0A=
            element.removeChild(element.firstChild);=0A=
          }=0A=
          Element._getContentFromAnonymousElement(tagName, =
content.stripScripts())=0A=
            .each(function(node) {=0A=
              element.appendChild(node)=0A=
            });=0A=
        }=0A=
        else {=0A=
          element.innerHTML =3D content.stripScripts();=0A=
        }=0A=
      }=0A=
      else {=0A=
        element.innerHTML =3D content.stripScripts();=0A=
      }=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
      return element;=0A=
    }=0A=
=0A=
    return update;=0A=
  })(),=0A=
=0A=
  replace: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    else if (!Object.isElement(content)) {=0A=
      content =3D Object.toHTML(content);=0A=
      var range =3D element.ownerDocument.createRange();=0A=
      range.selectNode(element);=0A=
      content.evalScripts.bind(content).defer();=0A=
      content =3D range.createContextualFragment(content.stripScripts());=0A=
    }=0A=
    element.parentNode.replaceChild(content, element);=0A=
    return element;=0A=
  },=0A=
=0A=
  insert: function(element, insertions) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A=
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))=0A=
          insertions =3D {bottom:insertions};=0A=
=0A=
    var content, insert, tagName, childNodes;=0A=
=0A=
    for (var position in insertions) {=0A=
      content  =3D insertions[position];=0A=
      position =3D position.toLowerCase();=0A=
      insert =3D Element._insertionTranslations[position];=0A=
=0A=
      if (content && content.toElement) content =3D content.toElement();=0A=
      if (Object.isElement(content)) {=0A=
        insert(element, content);=0A=
        continue;=0A=
      }=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A=
        ? element.parentNode : element).tagName.toUpperCase();=0A=
=0A=
      childNodes =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
=0A=
      if (position =3D=3D 'top' || position =3D=3D 'after') =
childNodes.reverse();=0A=
      childNodes.each(insert.curry(element));=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  wrap: function(element, wrapper, attributes) {=0A=
    element =3D $(element);=0A=
    if (Object.isElement(wrapper))=0A=
      $(wrapper).writeAttribute(attributes || { });=0A=
    else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, =
attributes);=0A=
    else wrapper =3D new Element('div', wrapper);=0A=
    if (element.parentNode)=0A=
      element.parentNode.replaceChild(wrapper, element);=0A=
    wrapper.appendChild(element);=0A=
    return wrapper;=0A=
  },=0A=
=0A=
  inspect: function(element) {=0A=
    element =3D $(element);=0A=
    var result =3D '<' + element.tagName.toLowerCase();=0A=
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A=
      var property =3D pair.first(), attribute =3D pair.last();=0A=
      var value =3D (element[property] || '').toString();=0A=
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);=0A=
    });=0A=
    return result + '>';=0A=
  },=0A=
=0A=
  recursivelyCollect: function(element, property) {=0A=
    element =3D $(element);=0A=
    var elements =3D [];=0A=
    while (element =3D element[property])=0A=
      if (element.nodeType =3D=3D 1)=0A=
        elements.push(Element.extend(element));=0A=
    return elements;=0A=
  },=0A=
=0A=
  ancestors: function(element) {=0A=
    return Element.recursivelyCollect(element, 'parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return Element.select(element, "*");=0A=
  },=0A=
=0A=
  firstDescendant: function(element) {=0A=
    element =3D $(element).firstChild;=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    return $(element);=0A=
  },=0A=
=0A=
  immediateDescendants: function(element) {=0A=
    if (!(element =3D $(element).firstChild)) return [];=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    if (element) return [element].concat($(element).nextSiblings());=0A=
    return [];=0A=
  },=0A=
=0A=
  previousSiblings: function(element) {=0A=
    return Element.recursivelyCollect(element, 'previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return Element.recursivelyCollect(element, 'nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return Element.previousSiblings(element).reverse()=0A=
      .concat(Element.nextSiblings(element));=0A=
  },=0A=
=0A=
  match: function(element, selector) {=0A=
    if (Object.isString(selector))=0A=
      selector =3D new Selector(selector);=0A=
    return selector.match($(element));=0A=
  },=0A=
=0A=
  up: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return $(element.parentNode);=0A=
    var ancestors =3D Element.ancestors(element);=0A=
    return Object.isNumber(expression) ? ancestors[expression] :=0A=
      Selector.findElement(ancestors, expression, index);=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
Element.firstDescendant(element);=0A=
    return Object.isNumber(expression) ? =
Element.descendants(element)[expression] :=0A=
      Element.select(element, expression)[index || 0];=0A=
  },=0A=
=0A=
  previous: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.previousElementSibling(element));=0A=
    var previousSiblings =3D Element.previousSiblings(element);=0A=
    return Object.isNumber(expression) ? previousSiblings[expression] :=0A=
      Selector.findElement(previousSiblings, expression, index);=0A=
  },=0A=
=0A=
  next: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.nextElementSibling(element));=0A=
    var nextSiblings =3D Element.nextSiblings(element);=0A=
    return Object.isNumber(expression) ? nextSiblings[expression] :=0A=
      Selector.findElement(nextSiblings, expression, index);=0A=
  },=0A=
=0A=
=0A=
  select: function(element) {=0A=
    var args =3D Array.prototype.slice.call(arguments, 1);=0A=
    return Selector.findChildElements(element, args);=0A=
  },=0A=
=0A=
  adjacent: function(element) {=0A=
    var args =3D Array.prototype.slice.call(arguments, 1);=0A=
    return Selector.findChildElements(element.parentNode, =
args).without(element);=0A=
  },=0A=
=0A=
  identify: function(element) {=0A=
    element =3D $(element);=0A=
    var id =3D Element.readAttribute(element, 'id');=0A=
    if (id) return id;=0A=
    do { id =3D 'anonymous_element_' + Element.idCounter++ } while =
($(id));=0A=
    Element.writeAttribute(element, 'id', id);=0A=
    return id;=0A=
  },=0A=
=0A=
  readAttribute: function(element, name) {=0A=
    element =3D $(element);=0A=
    if (Prototype.Browser.IE) {=0A=
      var t =3D Element._attributeTranslations.read;=0A=
      if (t.values[name]) return t.values[name](element, name);=0A=
      if (t.names[name]) name =3D t.names[name];=0A=
      if (name.include(':')) {=0A=
        return (!element.attributes || !element.attributes[name]) ? null =
:=0A=
         element.attributes[name].value;=0A=
      }=0A=
    }=0A=
    return element.getAttribute(name);=0A=
  },=0A=
=0A=
  writeAttribute: function(element, name, value) {=0A=
    element =3D $(element);=0A=
    var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A=
=0A=
    if (typeof name =3D=3D 'object') attributes =3D name;=0A=
    else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A=
=0A=
    for (var attr in attributes) {=0A=
      name =3D t.names[attr] || attr;=0A=
      value =3D attributes[attr];=0A=
      if (t.values[attr]) name =3D t.values[attr](element, value);=0A=
      if (value =3D=3D=3D false || value =3D=3D=3D null)=0A=
        element.removeAttribute(name);=0A=
      else if (value =3D=3D=3D true)=0A=
        element.setAttribute(name, name);=0A=
      else element.setAttribute(name, value);=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    return Element.getDimensions(element).height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return Element.getDimensions(element).width;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var elementClassName =3D element.className;=0A=
    return (elementClassName.length > 0 && (elementClassName =3D=3D =
className ||=0A=
      new RegExp("(^|\\s)" + className + =
"(\\s|$)").test(elementClassName)));=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    if (!Element.hasClassName(element, className))=0A=
      element.className +=3D (element.className ? ' ' : '') + className;=0A=
    return element;=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    element.className =3D element.className.replace(=0A=
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A=
    return element;=0A=
  },=0A=
=0A=
  toggleClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return Element[Element.hasClassName(element, className) ?=0A=
      'removeClassName' : 'addClassName'](element, className);=0A=
  },=0A=
=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    var node =3D element.firstChild;=0A=
    while (node) {=0A=
      var nextNode =3D node.nextSibling;=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        element.removeChild(node);=0A=
      node =3D nextNode;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.blank();=0A=
  },=0A=
=0A=
  descendantOf: function(element, ancestor) {=0A=
    element =3D $(element), ancestor =3D $(ancestor);=0A=
=0A=
    if (element.compareDocumentPosition)=0A=
      return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A=
=0A=
    if (ancestor.contains)=0A=
      return ancestor.contains(element) && ancestor !=3D=3D element;=0A=
=0A=
    while (element =3D element.parentNode)=0A=
      if (element =3D=3D ancestor) return true;=0A=
=0A=
    return false;=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.cumulativeOffset(element);=0A=
    window.scrollTo(pos[0], pos[1]);=0A=
    return element;=0A=
  },=0A=
=0A=
  getStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value || value =3D=3D 'auto') {=0A=
      var css =3D document.defaultView.getComputedStyle(element, null);=0A=
      value =3D css ? css[style] : null;=0A=
    }=0A=
    if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A=
    return value =3D=3D 'auto' ? null : value;=0A=
  },=0A=
=0A=
  getOpacity: function(element) {=0A=
    return $(element).getStyle('opacity');=0A=
  },=0A=
=0A=
  setStyle: function(element, styles) {=0A=
    element =3D $(element);=0A=
    var elementStyle =3D element.style, match;=0A=
    if (Object.isString(styles)) {=0A=
      element.style.cssText +=3D ';' + styles;=0A=
      return styles.include('opacity') ?=0A=
        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : =
element;=0A=
    }=0A=
    for (var property in styles)=0A=
      if (property =3D=3D 'opacity') =
element.setOpacity(styles[property]);=0A=
      else=0A=
        elementStyle[(property =3D=3D 'float' || property =3D=3D =
'cssFloat') ?=0A=
          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : =
'styleFloat') :=0A=
            property] =3D styles[property];=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  setOpacity: function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  },=0A=
=0A=
  getDimensions: function(element) {=0A=
    element =3D $(element);=0A=
    var display =3D Element.getStyle(element, 'display');=0A=
    if (display !=3D 'none' && display !=3D null) // Safari bug=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=0A=
    var els =3D element.style;=0A=
    var originalVisibility =3D els.visibility;=0A=
    var originalPosition =3D els.position;=0A=
    var originalDisplay =3D els.display;=0A=
    els.visibility =3D 'hidden';=0A=
    if (originalPosition !=3D 'fixed') // Switching fixed to absolute =
causes issues in Safari=0A=
      els.position =3D 'absolute';=0A=
    els.display =3D 'block';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D originalDisplay;=0A=
    els.position =3D originalPosition;=0A=
    els.visibility =3D originalVisibility;=0A=
    return {width: originalWidth, height: originalHeight};=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      if (Prototype.Browser.Opera) {=0A=
        element.style.top =3D 0;=0A=
        element.style.left =3D 0;=0A=
      }=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  undoPositioned: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._madePositioned) {=0A=
      element._madePositioned =3D undefined;=0A=
      element.style.position =3D=0A=
        element.style.top =3D=0A=
        element.style.left =3D=0A=
        element.style.bottom =3D=0A=
        element.style.right =3D '';=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  makeClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return element;=0A=
    element._overflow =3D Element.getStyle(element, 'overflow') || =
'auto';=0A=
    if (element._overflow !=3D=3D 'hidden')=0A=
      element.style.overflow =3D 'hidden';=0A=
    return element;=0A=
  },=0A=
=0A=
  undoClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element._overflow) return element;=0A=
    element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : =
element._overflow;=0A=
    element._overflow =3D null;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  positionedOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
      if (element) {=0A=
        if (element.tagName.toUpperCase() =3D=3D 'BODY') break;=0A=
        var p =3D Element.getStyle(element, 'position');=0A=
        if (p !=3D=3D 'static') break;=0A=
      }=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  absolutize: function(element) {=0A=
    element =3D $(element);=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') return =
element;=0A=
=0A=
    var offsets =3D Element.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=
    return element;=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    element =3D $(element);=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'relative') return =
element;=0A=
=0A=
    element.style.position =3D 'relative';=0A=
    var top  =3D parseFloat(element.style.top  || 0) - =
(element._originalTop || 0);=0A=
    var left =3D parseFloat(element.style.left || 0) - =
(element._originalLeft || 0);=0A=
=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.height =3D element._originalHeight;=0A=
    element.style.width  =3D element._originalWidth;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeScrollOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.scrollTop  || 0;=0A=
      valueL +=3D element.scrollLeft || 0;=0A=
      element =3D element.parentNode;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  getOffsetParent: function(element) {=0A=
    if (element.offsetParent) return $(element.offsetParent);=0A=
    if (element =3D=3D document.body) return $(element);=0A=
=0A=
    while ((element =3D element.parentNode) && element !=3D =
document.body)=0A=
      if (Element.getStyle(element, 'position') !=3D 'static')=0A=
        return $(element);=0A=
=0A=
    return $(document.body);=0A=
  },=0A=
=0A=
  viewportOffset: function(forElement) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
=0A=
      if (element.offsetParent =3D=3D document.body &&=0A=
        Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A=
=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      if (!Prototype.Browser.Opera || (element.tagName && =
(element.tagName.toUpperCase() =3D=3D 'BODY'))) {=0A=
        valueT -=3D element.scrollTop  || 0;=0A=
        valueL -=3D element.scrollLeft || 0;=0A=
      }=0A=
    } while (element =3D element.parentNode);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  clonePosition: function(element, source) {=0A=
    var options =3D Object.extend({=0A=
      setLeft:    true,=0A=
      setTop:     true,=0A=
      setWidth:   true,=0A=
      setHeight:  true,=0A=
      offsetTop:  0,=0A=
      offsetLeft: 0=0A=
    }, arguments[2] || { });=0A=
=0A=
    source =3D $(source);=0A=
    var p =3D Element.viewportOffset(source);=0A=
=0A=
    element =3D $(element);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A=
      parent =3D Element.getOffsetParent(element);=0A=
      delta =3D Element.viewportOffset(parent);=0A=
    }=0A=
=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    if (options.setLeft)   element.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if (options.setTop)    element.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if (options.setWidth)  element.style.width =3D source.offsetWidth + =
'px';=0A=
    if (options.setHeight) element.style.height =3D source.offsetHeight =
+ 'px';=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.Methods, {=0A=
  getElementsBySelector: Element.Methods.select,=0A=
=0A=
  childElements: Element.Methods.immediateDescendants=0A=
});=0A=
=0A=
Element._attributeTranslations =3D {=0A=
  write: {=0A=
    names: {=0A=
      className: 'class',=0A=
      htmlFor:   'for'=0A=
    },=0A=
    values: { }=0A=
  }=0A=
};=0A=
=0A=
if (Prototype.Browser.Opera) {=0A=
  Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A=
    function(proceed, element, style) {=0A=
      switch (style) {=0A=
        case 'left': case 'top': case 'right': case 'bottom':=0A=
          if (proceed(element, 'position') =3D=3D=3D 'static') return =
null;=0A=
        case 'height': case 'width':=0A=
          if (!Element.visible(element)) return null;=0A=
=0A=
          var dim =3D parseInt(proceed(element, style), 10);=0A=
=0A=
          if (dim !=3D=3D element['offset' + style.capitalize()])=0A=
            return dim + 'px';=0A=
=0A=
          var properties;=0A=
          if (style =3D=3D=3D 'height') {=0A=
            properties =3D ['border-top-width', 'padding-top',=0A=
             'padding-bottom', 'border-bottom-width'];=0A=
          }=0A=
          else {=0A=
            properties =3D ['border-left-width', 'padding-left',=0A=
             'padding-right', 'border-right-width'];=0A=
          }=0A=
          return properties.inject(dim, function(memo, property) {=0A=
            var val =3D proceed(element, property);=0A=
            return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A=
          }) + 'px';=0A=
        default: return proceed(element, style);=0A=
      }=0A=
    }=0A=
  );=0A=
=0A=
  Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A=
    function(proceed, element, attribute) {=0A=
      if (attribute =3D=3D=3D 'title') return element.title;=0A=
      return proceed(element, attribute);=0A=
    }=0A=
  );=0A=
}=0A=
=0A=
else if (Prototype.Browser.IE) {=0A=
  Element.Methods.getOffsetParent =3D =
Element.Methods.getOffsetParent.wrap(=0A=
    function(proceed, element) {=0A=
      element =3D $(element);=0A=
      try { element.offsetParent }=0A=
      catch(e) { return $(document.body) }=0A=
      var position =3D element.getStyle('position');=0A=
      if (position !=3D=3D 'static') return proceed(element);=0A=
      element.setStyle({ position: 'relative' });=0A=
      var value =3D proceed(element);=0A=
      element.setStyle({ position: position });=0A=
      return value;=0A=
    }=0A=
  );=0A=
=0A=
  $w('positionedOffset viewportOffset').each(function(method) {=0A=
    Element.Methods[method] =3D Element.Methods[method].wrap(=0A=
      function(proceed, element) {=0A=
        element =3D $(element);=0A=
        try { element.offsetParent }=0A=
        catch(e) { return Element._returnOffset(0,0) }=0A=
        var position =3D element.getStyle('position');=0A=
        if (position !=3D=3D 'static') return proceed(element);=0A=
        var offsetParent =3D element.getOffsetParent();=0A=
        if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D =
'fixed')=0A=
          offsetParent.setStyle({ zoom: 1 });=0A=
        element.setStyle({ position: 'relative' });=0A=
        var value =3D proceed(element);=0A=
        element.setStyle({ position: position });=0A=
        return value;=0A=
      }=0A=
    );=0A=
  });=0A=
=0A=
  Element.Methods.cumulativeOffset =3D =
Element.Methods.cumulativeOffset.wrap(=0A=
    function(proceed, element) {=0A=
      try { element.offsetParent }=0A=
      catch(e) { return Element._returnOffset(0,0) }=0A=
      return proceed(element);=0A=
    }=0A=
  );=0A=
=0A=
  Element.Methods.getStyle =3D function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? =
'styleFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value && element.currentStyle) value =3D =
element.currentStyle[style];=0A=
=0A=
    if (style =3D=3D 'opacity') {=0A=
      if (value =3D (element.getStyle('filter') || =
'').match(/alpha\(opacity=3D(.*)\)/))=0A=
        if (value[1]) return parseFloat(value[1]) / 100;=0A=
      return 1.0;=0A=
    }=0A=
=0A=
    if (value =3D=3D 'auto') {=0A=
      if ((style =3D=3D 'width' || style =3D=3D 'height') && =
(element.getStyle('display') !=3D 'none'))=0A=
        return element['offset' + style.capitalize()] + 'px';=0A=
      return null;=0A=
    }=0A=
    return value;=0A=
  };=0A=
=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    function stripAlpha(filter){=0A=
      return filter.replace(/alpha\([^\)]*\)/gi,'');=0A=
    }=0A=
    element =3D $(element);=0A=
    var currentStyle =3D element.currentStyle;=0A=
    if ((currentStyle && !currentStyle.hasLayout) ||=0A=
      (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A=
        element.style.zoom =3D 1;=0A=
=0A=
    var filter =3D element.getStyle('filter'), style =3D element.style;=0A=
    if (value =3D=3D 1 || value =3D=3D=3D '') {=0A=
      (filter =3D stripAlpha(filter)) ?=0A=
        style.filter =3D filter : style.removeAttribute('filter');=0A=
      return element;=0A=
    } else if (value < 0.00001) value =3D 0;=0A=
    style.filter =3D stripAlpha(filter) +=0A=
      'alpha(opacity=3D' + (value * 100) + ')';=0A=
    return element;=0A=
  };=0A=
=0A=
  Element._attributeTranslations =3D (function(){=0A=
=0A=
    var classProp =3D 'className';=0A=
    var forProp =3D 'for';=0A=
=0A=
    var el =3D document.createElement('div');=0A=
=0A=
    el.setAttribute(classProp, 'x');=0A=
=0A=
    if (el.className !=3D=3D 'x') {=0A=
      el.setAttribute('class', 'x');=0A=
      if (el.className =3D=3D=3D 'x') {=0A=
        classProp =3D 'class';=0A=
      }=0A=
    }=0A=
    el =3D null;=0A=
=0A=
    el =3D document.createElement('label');=0A=
    el.setAttribute(forProp, 'x');=0A=
    if (el.htmlFor !=3D=3D 'x') {=0A=
      el.setAttribute('htmlFor', 'x');=0A=
      if (el.htmlFor =3D=3D=3D 'x') {=0A=
        forProp =3D 'htmlFor';=0A=
      }=0A=
    }=0A=
    el =3D null;=0A=
=0A=
    return {=0A=
      read: {=0A=
        names: {=0A=
          'class':      classProp,=0A=
          'className':  classProp,=0A=
          'for':        forProp,=0A=
          'htmlFor':    forProp=0A=
        },=0A=
        values: {=0A=
          _getAttr: function(element, attribute) {=0A=
            return element.getAttribute(attribute);=0A=
          },=0A=
          _getAttr2: function(element, attribute) {=0A=
            return element.getAttribute(attribute, 2);=0A=
          },=0A=
          _getAttrNode: function(element, attribute) {=0A=
            var node =3D element.getAttributeNode(attribute);=0A=
            return node ? node.value : "";=0A=
          },=0A=
          _getEv: (function(){=0A=
=0A=
            var el =3D document.createElement('div');=0A=
            el.onclick =3D Prototype.emptyFunction;=0A=
            var value =3D el.getAttribute('onclick');=0A=
            var f;=0A=
=0A=
            if (String(value).indexOf('{') > -1) {=0A=
              f =3D function(element, attribute) {=0A=
                attribute =3D element.getAttribute(attribute);=0A=
                if (!attribute) return null;=0A=
                attribute =3D attribute.toString();=0A=
                attribute =3D attribute.split('{')[1];=0A=
                attribute =3D attribute.split('}')[0];=0A=
                return attribute.strip();=0A=
              };=0A=
            }=0A=
            else if (value =3D=3D=3D '') {=0A=
              f =3D function(element, attribute) {=0A=
                attribute =3D element.getAttribute(attribute);=0A=
                if (!attribute) return null;=0A=
                return attribute.strip();=0A=
              };=0A=
            }=0A=
            el =3D null;=0A=
            return f;=0A=
          })(),=0A=
          _flag: function(element, attribute) {=0A=
            return $(element).hasAttribute(attribute) ? attribute : null;=0A=
          },=0A=
          style: function(element) {=0A=
            return element.style.cssText.toLowerCase();=0A=
          },=0A=
          title: function(element) {=0A=
            return element.title;=0A=
          }=0A=
        }=0A=
      }=0A=
    }=0A=
  })();=0A=
=0A=
  Element._attributeTranslations.write =3D {=0A=
    names: Object.extend({=0A=
      cellpadding: 'cellPadding',=0A=
      cellspacing: 'cellSpacing'=0A=
    }, Element._attributeTranslations.read.names),=0A=
    values: {=0A=
      checked: function(element, value) {=0A=
        element.checked =3D !!value;=0A=
      },=0A=
=0A=
      style: function(element, value) {=0A=
        element.style.cssText =3D value ? value : '';=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.has =3D {};=0A=
=0A=
  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A=
      'encType maxLength readOnly longDesc =
frameBorder').each(function(attr) {=0A=
    Element._attributeTranslations.write.names[attr.toLowerCase()] =3D =
attr;=0A=
    Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A=
  });=0A=
=0A=
  (function(v) {=0A=
    Object.extend(v, {=0A=
      href:        v._getAttr2,=0A=
      src:         v._getAttr2,=0A=
      type:        v._getAttr,=0A=
      action:      v._getAttrNode,=0A=
      disabled:    v._flag,=0A=
      checked:     v._flag,=0A=
      readonly:    v._flag,=0A=
      multiple:    v._flag,=0A=
      onload:      v._getEv,=0A=
      onunload:    v._getEv,=0A=
      onclick:     v._getEv,=0A=
      ondblclick:  v._getEv,=0A=
      onmousedown: v._getEv,=0A=
      onmouseup:   v._getEv,=0A=
      onmouseover: v._getEv,=0A=
      onmousemove: v._getEv,=0A=
      onmouseout:  v._getEv,=0A=
      onfocus:     v._getEv,=0A=
      onblur:      v._getEv,=0A=
      onkeypress:  v._getEv,=0A=
      onkeydown:   v._getEv,=0A=
      onkeyup:     v._getEv,=0A=
      onsubmit:    v._getEv,=0A=
      onreset:     v._getEv,=0A=
      onselect:    v._getEv,=0A=
      onchange:    v._getEv=0A=
    });=0A=
  })(Element._attributeTranslations.read.values);=0A=
=0A=
  if (Prototype.BrowserFeatures.ElementExtensions) {=0A=
    (function() {=0A=
      function _descendants(element) {=0A=
        var nodes =3D element.getElementsByTagName('*'), results =3D [];=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName !=3D=3D "!") // Filter out comment nodes.=0A=
            results.push(node);=0A=
        return results;=0A=
      }=0A=
=0A=
      Element.Methods.down =3D function(element, expression, index) {=0A=
        element =3D $(element);=0A=
        if (arguments.length =3D=3D 1) return element.firstDescendant();=0A=
        return Object.isNumber(expression) ? =
_descendants(element)[expression] :=0A=
          Element.select(element, expression)[index || 0];=0A=
      }=0A=
    })();=0A=
  }=0A=
=0A=
}=0A=
=0A=
else if (Prototype.Browser.Gecko && =
/rv:1\.8\.0/.test(navigator.userAgent)) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A=
      (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
else if (Prototype.Browser.WebKit) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
=0A=
    if (value =3D=3D 1)=0A=
      if(element.tagName.toUpperCase() =3D=3D 'IMG' && element.width) {=0A=
        element.width++; element.width--;=0A=
      } else try {=0A=
        var n =3D document.createTextNode(' ');=0A=
        element.appendChild(n);=0A=
        element.removeChild(n);=0A=
      } catch (e) { }=0A=
=0A=
    return element;=0A=
  };=0A=
=0A=
  Element.Methods.cumulativeOffset =3D function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      if (element.offsetParent =3D=3D document.body)=0A=
        if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;=0A=
=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  };=0A=
}=0A=
=0A=
if ('outerHTML' in document.documentElement) {=0A=
  Element.Methods.replace =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) {=0A=
      element.parentNode.replaceChild(content, element);=0A=
      return element;=0A=
    }=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var parent =3D element.parentNode, tagName =3D =
parent.tagName.toUpperCase();=0A=
=0A=
    if (Element._insertionTranslations.tags[tagName]) {=0A=
      var nextSibling =3D element.next();=0A=
      var fragments =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
      parent.removeChild(element);=0A=
      if (nextSibling)=0A=
        fragments.each(function(node) { parent.insertBefore(node, =
nextSibling) });=0A=
      else=0A=
        fragments.each(function(node) { parent.appendChild(node) });=0A=
    }=0A=
    else element.outerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
Element._returnOffset =3D function(l, t) {=0A=
  var result =3D [l, t];=0A=
  result.left =3D l;=0A=
  result.top =3D t;=0A=
  return result;=0A=
};=0A=
=0A=
Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A=
  var div =3D new Element('div'), t =3D =
Element._insertionTranslations.tags[tagName];=0A=
  if (t) {=0A=
    div.innerHTML =3D t[0] + html + t[1];=0A=
    t[2].times(function() { div =3D div.firstChild });=0A=
  } else div.innerHTML =3D html;=0A=
  return $A(div.childNodes);=0A=
};=0A=
=0A=
Element._insertionTranslations =3D {=0A=
  before: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element);=0A=
  },=0A=
  top: function(element, node) {=0A=
    element.insertBefore(node, element.firstChild);=0A=
  },=0A=
  bottom: function(element, node) {=0A=
    element.appendChild(node);=0A=
  },=0A=
  after: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element.nextSibling);=0A=
  },=0A=
  tags: {=0A=
    TABLE:  ['<table>',                '</table>',                   1],=0A=
    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],=0A=
    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],=0A=
    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],=0A=
    SELECT: ['<select>',               '</select>',                  1]=0A=
  }=0A=
};=0A=
=0A=
(function() {=0A=
  var tags =3D Element._insertionTranslations.tags;=0A=
  Object.extend(tags, {=0A=
    THEAD: tags.TBODY,=0A=
    TFOOT: tags.TBODY,=0A=
    TH:    tags.TD=0A=
  });=0A=
})();=0A=
=0A=
Element.Methods.Simulated =3D {=0A=
  hasAttribute: function(element, attribute) {=0A=
    attribute =3D Element._attributeTranslations.has[attribute] || =
attribute;=0A=
    var node =3D $(element).getAttributeNode(attribute);=0A=
    return !!(node && node.specified);=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.ByTag =3D { };=0A=
=0A=
Object.extend(Element, Element.Methods);=0A=
=0A=
(function(div) {=0A=
=0A=
  if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) {=0A=
    window.HTMLElement =3D { };=0A=
    window.HTMLElement.prototype =3D div['__proto__'];=0A=
    Prototype.BrowserFeatures.ElementExtensions =3D true;=0A=
  }=0A=
=0A=
  div =3D null;=0A=
=0A=
})(document.createElement('div'))=0A=
=0A=
Element.extend =3D (function() {=0A=
=0A=
  function checkDeficiency(tagName) {=0A=
    if (typeof window.Element !=3D 'undefined') {=0A=
      var proto =3D window.Element.prototype;=0A=
      if (proto) {=0A=
        var id =3D '_' + (Math.random()+'').slice(2);=0A=
        var el =3D document.createElement(tagName);=0A=
        proto[id] =3D 'x';=0A=
        var isBuggy =3D (el[id] !=3D=3D 'x');=0A=
        delete proto[id];=0A=
        el =3D null;=0A=
        return isBuggy;=0A=
      }=0A=
    }=0A=
    return false;=0A=
  }=0A=
=0A=
  function extendElementWith(element, methods) {=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (Object.isFunction(value) && !(property in element))=0A=
        element[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY =3D checkDeficiency('object');=0A=
=0A=
  if (Prototype.BrowserFeatures.SpecificElementExtensions) {=0A=
    if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) {=0A=
      return function(element) {=0A=
        if (element && typeof element._extendedByPrototype =3D=3D =
'undefined') {=0A=
          var t =3D element.tagName;=0A=
          if (t && (/^(?:object|applet|embed)$/i.test(t))) {=0A=
            extendElementWith(element, Element.Methods);=0A=
            extendElementWith(element, Element.Methods.Simulated);=0A=
            extendElementWith(element, =
Element.Methods.ByTag[t.toUpperCase()]);=0A=
          }=0A=
        }=0A=
        return element;=0A=
      }=0A=
    }=0A=
    return Prototype.K;=0A=
  }=0A=
=0A=
  var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A=
=0A=
  var extend =3D Object.extend(function(element) {=0A=
    if (!element || typeof element._extendedByPrototype !=3D 'undefined' =
||=0A=
        element.nodeType !=3D 1 || element =3D=3D window) return element;=0A=
=0A=
    var methods =3D Object.clone(Methods),=0A=
        tagName =3D element.tagName.toUpperCase();=0A=
=0A=
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A=
=0A=
    extendElementWith(element, methods);=0A=
=0A=
    element._extendedByPrototype =3D Prototype.emptyFunction;=0A=
    return element;=0A=
=0A=
  }, {=0A=
    refresh: function() {=0A=
      if (!Prototype.BrowserFeatures.ElementExtensions) {=0A=
        Object.extend(Methods, Element.Methods);=0A=
        Object.extend(Methods, Element.Methods.Simulated);=0A=
      }=0A=
    }=0A=
  });=0A=
=0A=
  extend.refresh();=0A=
  return extend;=0A=
})();=0A=
=0A=
Element.hasAttribute =3D function(element, attribute) {=0A=
  if (element.hasAttribute) return element.hasAttribute(attribute);=0A=
  return Element.Methods.Simulated.hasAttribute(element, attribute);=0A=
};=0A=
=0A=
Element.addMethods =3D function(methods) {=0A=
  var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A=
=0A=
  if (!methods) {=0A=
    Object.extend(Form, Form.Methods);=0A=
    Object.extend(Form.Element, Form.Element.Methods);=0A=
    Object.extend(Element.Methods.ByTag, {=0A=
      "FORM":     Object.clone(Form.Methods),=0A=
      "INPUT":    Object.clone(Form.Element.Methods),=0A=
      "SELECT":   Object.clone(Form.Element.Methods),=0A=
      "TEXTAREA": Object.clone(Form.Element.Methods)=0A=
    });=0A=
  }=0A=
=0A=
  if (arguments.length =3D=3D 2) {=0A=
    var tagName =3D methods;=0A=
    methods =3D arguments[1];=0A=
  }=0A=
=0A=
  if (!tagName) Object.extend(Element.Methods, methods || { });=0A=
  else {=0A=
    if (Object.isArray(tagName)) tagName.each(extend);=0A=
    else extend(tagName);=0A=
  }=0A=
=0A=
  function extend(tagName) {=0A=
    tagName =3D tagName.toUpperCase();=0A=
    if (!Element.Methods.ByTag[tagName])=0A=
      Element.Methods.ByTag[tagName] =3D { };=0A=
    Object.extend(Element.Methods.ByTag[tagName], methods);=0A=
  }=0A=
=0A=
  function copy(methods, destination, onlyIfAbsent) {=0A=
    onlyIfAbsent =3D onlyIfAbsent || false;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (!Object.isFunction(value)) continue;=0A=
      if (!onlyIfAbsent || !(property in destination))=0A=
        destination[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  function findDOMClass(tagName) {=0A=
    var klass;=0A=
    var trans =3D {=0A=
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A=
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": =
"DList",=0A=
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": =
"Heading",=0A=
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A=
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", =
"CAPTION":=0A=
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A=
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", =
"TR":=0A=
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A=
      "FrameSet", "IFRAME": "IFrame"=0A=
    };=0A=
    if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
=0A=
    var element =3D document.createElement(tagName);=0A=
    var proto =3D element['__proto__'] || element.constructor.prototype;=0A=
    element =3D null;=0A=
    return proto;=0A=
  }=0A=
=0A=
  var elementPrototype =3D window.HTMLElement ? HTMLElement.prototype :=0A=
   Element.prototype;=0A=
=0A=
  if (F.ElementExtensions) {=0A=
    copy(Element.Methods, elementPrototype);=0A=
    copy(Element.Methods.Simulated, elementPrototype, true);=0A=
  }=0A=
=0A=
  if (F.SpecificElementExtensions) {=0A=
    for (var tag in Element.Methods.ByTag) {=0A=
      var klass =3D findDOMClass(tag);=0A=
      if (Object.isUndefined(klass)) continue;=0A=
      copy(T[tag], klass.prototype);=0A=
    }=0A=
  }=0A=
=0A=
  Object.extend(Element, Element.Methods);=0A=
  delete Element.ByTag;=0A=
=0A=
  if (Element.extend.refresh) Element.extend.refresh();=0A=
  Element.cache =3D { };=0A=
};=0A=
=0A=
=0A=
document.viewport =3D {=0A=
=0A=
  getDimensions: function() {=0A=
    return { width: this.getWidth(), height: this.getHeight() };=0A=
  },=0A=
=0A=
  getScrollOffsets: function() {=0A=
    return Element._returnOffset(=0A=
      window.pageXOffset || document.documentElement.scrollLeft || =
document.body.scrollLeft,=0A=
      window.pageYOffset || document.documentElement.scrollTop  || =
document.body.scrollTop);=0A=
  }=0A=
};=0A=
=0A=
(function(viewport) {=0A=
  var B =3D Prototype.Browser, doc =3D document, element, property =3D =
{};=0A=
=0A=
  function getRootElement() {=0A=
    if (B.WebKit && !doc.evaluate)=0A=
      return document;=0A=
=0A=
    if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)=0A=
      return document.body;=0A=
=0A=
    return document.documentElement;=0A=
  }=0A=
=0A=
  function define(D) {=0A=
    if (!element) element =3D getRootElement();=0A=
=0A=
    property[D] =3D 'client' + D;=0A=
=0A=
    viewport['get' + D] =3D function() { return element[property[D]] };=0A=
    return viewport['get' + D]();=0A=
  }=0A=
=0A=
  viewport.getWidth  =3D define.curry('Width');=0A=
=0A=
  viewport.getHeight =3D define.curry('Height');=0A=
})(document.viewport);=0A=
=0A=
=0A=
Element.Storage =3D {=0A=
  UID: 1=0A=
};=0A=
=0A=
Element.addMethods({=0A=
  getStorage: function(element) {=0A=
    if (!(element =3D $(element))) return;=0A=
=0A=
    var uid;=0A=
    if (element =3D=3D=3D window) {=0A=
      uid =3D 0;=0A=
    } else {=0A=
      if (typeof element._prototypeUID =3D=3D=3D "undefined")=0A=
        element._prototypeUID =3D [Element.Storage.UID++];=0A=
      uid =3D element._prototypeUID[0];=0A=
    }=0A=
=0A=
    if (!Element.Storage[uid])=0A=
      Element.Storage[uid] =3D $H();=0A=
=0A=
    return Element.Storage[uid];=0A=
  },=0A=
=0A=
  store: function(element, key, value) {=0A=
    if (!(element =3D $(element))) return;=0A=
=0A=
    if (arguments.length =3D=3D=3D 2) {=0A=
      Element.getStorage(element).update(key);=0A=
    } else {=0A=
      Element.getStorage(element).set(key, value);=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  retrieve: function(element, key, defaultValue) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var hash =3D Element.getStorage(element), value =3D hash.get(key);=0A=
=0A=
    if (Object.isUndefined(value)) {=0A=
      hash.set(key, defaultValue);=0A=
      value =3D defaultValue;=0A=
    }=0A=
=0A=
    return value;=0A=
  },=0A=
=0A=
  clone: function(element, deep) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var clone =3D element.cloneNode(deep);=0A=
    clone._prototypeUID =3D void 0;=0A=
    if (deep) {=0A=
      var descendants =3D Element.select(clone, '*'),=0A=
          i =3D descendants.length;=0A=
      while (i--) {=0A=
        descendants[i]._prototypeUID =3D void 0;=0A=
      }=0A=
    }=0A=
    return Element.extend(clone);=0A=
  }=0A=
});=0A=
/* Portions of the Selector class are derived from Jack Slocum's =
DomQuery,=0A=
 * part of YUI-Ext version 0.40, distributed under the terms of an =
MIT-style=0A=
 * license.  Please see http://www.yui-ext.com/ for more information. */=0A=
=0A=
var Selector =3D Class.create({=0A=
  initialize: function(expression) {=0A=
    this.expression =3D expression.strip();=0A=
=0A=
    if (this.shouldUseSelectorsAPI()) {=0A=
      this.mode =3D 'selectorsAPI';=0A=
    } else if (this.shouldUseXPath()) {=0A=
      this.mode =3D 'xpath';=0A=
      this.compileXPathMatcher();=0A=
    } else {=0A=
      this.mode =3D "normal";=0A=
      this.compileMatcher();=0A=
    }=0A=
=0A=
  },=0A=
=0A=
  shouldUseXPath: (function() {=0A=
=0A=
    var IS_DESCENDANT_SELECTOR_BUGGY =3D (function(){=0A=
      var isBuggy =3D false;=0A=
      if (document.evaluate && window.XPathResult) {=0A=
        var el =3D document.createElement('div');=0A=
        el.innerHTML =3D =
'<ul><li></li></ul><div><ul><li></li></ul></div>';=0A=
=0A=
        var xpath =3D ".//*[local-name()=3D'ul' or local-name()=3D'UL']" =
+=0A=
          "//*[local-name()=3D'li' or local-name()=3D'LI']";=0A=
=0A=
        var result =3D document.evaluate(xpath, el, null,=0A=
          XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
=0A=
        isBuggy =3D (result.snapshotLength !=3D=3D 2);=0A=
        el =3D null;=0A=
      }=0A=
      return isBuggy;=0A=
    })();=0A=
=0A=
    return function() {=0A=
      if (!Prototype.BrowserFeatures.XPath) return false;=0A=
=0A=
      var e =3D this.expression;=0A=
=0A=
      if (Prototype.Browser.WebKit &&=0A=
       (e.include("-of-type") || e.include(":empty")))=0A=
        return false;=0A=
=0A=
      if ((/(\[[\w-]*?:|:checked)/).test(e))=0A=
        return false;=0A=
=0A=
      if (IS_DESCENDANT_SELECTOR_BUGGY) return false;=0A=
=0A=
      return true;=0A=
    }=0A=
=0A=
  })(),=0A=
=0A=
  shouldUseSelectorsAPI: function() {=0A=
    if (!Prototype.BrowserFeatures.SelectorsAPI) return false;=0A=
=0A=
    if (Selector.CASE_INSENSITIVE_CLASS_NAMES) return false;=0A=
=0A=
    if (!Selector._div) Selector._div =3D new Element('div');=0A=
=0A=
    try {=0A=
      Selector._div.querySelector(this.expression);=0A=
    } catch(e) {=0A=
      return false;=0A=
    }=0A=
=0A=
    return true;=0A=
  },=0A=
=0A=
  compileMatcher: function() {=0A=
    var e =3D this.expression, ps =3D Selector.patterns, h =3D =
Selector.handlers,=0A=
        c =3D Selector.criteria, le, p, m, len =3D ps.length, name;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.matcher =3D Selector._cache[e];=0A=
      return;=0A=
    }=0A=
=0A=
    this.matcher =3D ["this.matcher =3D function(root) {",=0A=
                    "var r =3D root, h =3D Selector.handlers, c =3D =
false, n;"];=0A=
=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i =3D 0; i<len; i++) {=0A=
        p =3D ps[i].re;=0A=
        name =3D ps[i].name;=0A=
        if (m =3D e.match(p)) {=0A=
          this.matcher.push(Object.isFunction(c[name]) ? c[name](m) :=0A=
            new Template(c[name]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.matcher.push("return h.unique(n);\n}");=0A=
    eval(this.matcher.join('\n'));=0A=
    Selector._cache[this.expression] =3D this.matcher;=0A=
  },=0A=
=0A=
  compileXPathMatcher: function() {=0A=
    var e =3D this.expression, ps =3D Selector.patterns,=0A=
        x =3D Selector.xpath, le, m, len =3D ps.length, name;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.xpath =3D Selector._cache[e]; return;=0A=
    }=0A=
=0A=
    this.matcher =3D ['.//*'];=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i =3D 0; i<len; i++) {=0A=
        name =3D ps[i].name;=0A=
        if (m =3D e.match(ps[i].re)) {=0A=
          this.matcher.push(Object.isFunction(x[name]) ? x[name](m) :=0A=
            new Template(x[name]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.xpath =3D this.matcher.join('');=0A=
    Selector._cache[this.expression] =3D this.xpath;=0A=
  },=0A=
=0A=
  findElements: function(root) {=0A=
    root =3D root || document;=0A=
    var e =3D this.expression, results;=0A=
=0A=
    switch (this.mode) {=0A=
      case 'selectorsAPI':=0A=
        if (root !=3D=3D document) {=0A=
          var oldId =3D root.id, id =3D $(root).identify();=0A=
          id =3D id.replace(/([\.:])/g, "\\$1");=0A=
          e =3D "#" + id + " " + e;=0A=
        }=0A=
=0A=
        results =3D $A(root.querySelectorAll(e)).map(Element.extend);=0A=
        root.id =3D oldId;=0A=
=0A=
        return results;=0A=
      case 'xpath':=0A=
        return document._getElementsByXPath(this.xpath, root);=0A=
      default:=0A=
       return this.matcher(root);=0A=
    }=0A=
  },=0A=
=0A=
  match: function(element) {=0A=
    this.tokens =3D [];=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, as =3D =
Selector.assertions;=0A=
    var le, p, m, len =3D ps.length, name;=0A=
=0A=
    while (e && le !=3D=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i =3D 0; i<len; i++) {=0A=
        p =3D ps[i].re;=0A=
        name =3D ps[i].name;=0A=
        if (m =3D e.match(p)) {=0A=
          if (as[name]) {=0A=
            this.tokens.push([name, Object.clone(m)]);=0A=
            e =3D e.replace(m[0], '');=0A=
          } else {=0A=
            return this.findElements(document).include(element);=0A=
          }=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    var match =3D true, name, matches;=0A=
    for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A=
      name =3D token[0], matches =3D token[1];=0A=
      if (!Selector.assertions[name](element, matches)) {=0A=
        match =3D false; break;=0A=
      }=0A=
    }=0A=
=0A=
    return match;=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.expression;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return "#<Selector:" + this.expression.inspect() + ">";=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.BrowserFeatures.SelectorsAPI &&=0A=
 document.compatMode =3D=3D=3D 'BackCompat') {=0A=
  Selector.CASE_INSENSITIVE_CLASS_NAMES =3D (function(){=0A=
    var div =3D document.createElement('div'),=0A=
     span =3D document.createElement('span');=0A=
=0A=
    div.id =3D "prototype_test_id";=0A=
    span.className =3D 'Test';=0A=
    div.appendChild(span);=0A=
    var isIgnored =3D (div.querySelector('#prototype_test_id .test') =
!=3D=3D null);=0A=
    div =3D span =3D null;=0A=
    return isIgnored;=0A=
  })();=0A=
}=0A=
=0A=
Object.extend(Selector, {=0A=
  _cache: { },=0A=
=0A=
  xpath: {=0A=
    descendant:   "//*",=0A=
    child:        "/*",=0A=
    adjacent:     "/following-sibling::*[1]",=0A=
    laterSibling: '/following-sibling::*',=0A=
    tagName:      function(m) {=0A=
      if (m[1] =3D=3D '*') return '';=0A=
      return "[local-name()=3D'" + m[1].toLowerCase() +=0A=
             "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A=
    },=0A=
    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A=
    id:           "[@id=3D'#{1}']",=0A=
    attrPresence: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      return new Template("[@#{1}]").evaluate(m);=0A=
    },=0A=
    attr: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      m[3] =3D m[5] || m[6];=0A=
      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      var h =3D Selector.xpath.pseudos[m[1]];=0A=
      if (!h) return '';=0A=
      if (Object.isFunction(h)) return h(m);=0A=
      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A=
    },=0A=
    operators: {=0A=
      '=3D':  "[@#{1}=3D'#{3}']",=0A=
      '!=3D': "[@#{1}!=3D'#{3}']",=0A=
      '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A=
      '$=3D': "[substring(@#{1}, (string-length(@#{1}) - =
string-length('#{3}') + 1))=3D'#{3}']",=0A=
      '*=3D': "[contains(@#{1}, '#{3}')]",=0A=
      '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A=
      '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A=
    },=0A=
    pseudos: {=0A=
      'first-child': '[not(preceding-sibling::*)]',=0A=
      'last-child':  '[not(following-sibling::*)]',=0A=
      'only-child':  '[not(preceding-sibling::* or =
following-sibling::*)]',=0A=
      'empty':       "[count(*) =3D 0 and (count(text()) =3D 0)]",=0A=
      'checked':     "[@checked]",=0A=
      'disabled':    "[(@disabled) and (@type!=3D'hidden')]",=0A=
      'enabled':     "[not(@disabled) and (@type!=3D'hidden')]",=0A=
      'not': function(m) {=0A=
        var e =3D m[6], p =3D Selector.patterns,=0A=
            x =3D Selector.xpath, le, v, len =3D p.length, name;=0A=
=0A=
        var exclusion =3D [];=0A=
        while (e && le !=3D e && (/\S/).test(e)) {=0A=
          le =3D e;=0A=
          for (var i =3D 0; i<len; i++) {=0A=
            name =3D p[i].name=0A=
            if (m =3D e.match(p[i].re)) {=0A=
              v =3D Object.isFunction(x[name]) ? x[name](m) : new =
Template(x[name]).evaluate(m);=0A=
              exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A=
              e =3D e.replace(m[0], '');=0A=
              break;=0A=
            }=0A=
          }=0A=
        }=0A=
        return "[not(" + exclusion.join(" and ") + ")]";=0A=
      },=0A=
      'nth-child':      function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-last-child': function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-of-type':    function(m) {=0A=
        return Selector.xpath.pseudos.nth("position() ", m);=0A=
      },=0A=
      'nth-last-of-type': function(m) {=0A=
        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", =
m);=0A=
      },=0A=
      'first-of-type':  function(m) {=0A=
        m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A=
      },=0A=
      'last-of-type':   function(m) {=0A=
        m[6] =3D "1"; return =
Selector.xpath.pseudos['nth-last-of-type'](m);=0A=
      },=0A=
      'only-of-type':   function(m) {=0A=
        var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + =
p['last-of-type'](m);=0A=
      },=0A=
      nth: function(fragment, m) {=0A=
        var mm, formula =3D m[6], predicate;=0A=
        if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
        if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
        if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A=
          return '[' + fragment + "=3D " + mm[1] + ']';=0A=
        if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A=
          if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A=
          var a =3D mm[1] ? Number(mm[1]) : 1;=0A=
          var b =3D mm[2] ? Number(mm[2]) : 0;=0A=
          predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A=
          "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A=
          return new Template(predicate).evaluate({=0A=
            fragment: fragment, a: a, b: b });=0A=
        }=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  criteria: {=0A=
    tagName:      'n =3D h.tagName(n, r, "#{1}", c);      c =3D false;',=0A=
    className:    'n =3D h.className(n, r, "#{1}", c);    c =3D false;',=0A=
    id:           'n =3D h.id(n, r, "#{1}", c);           c =3D false;',=0A=
    attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;',=0A=
    attr: function(m) {=0A=
      m[3] =3D (m[5] || m[6]);=0A=
      return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", =
c); c =3D false;').evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A=
      return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    descendant:   'c =3D "descendant";',=0A=
    child:        'c =3D "child";',=0A=
    adjacent:     'c =3D "adjacent";',=0A=
    laterSibling: 'c =3D "laterSibling";'=0A=
  },=0A=
=0A=
  patterns: [=0A=
    { name: 'laterSibling', re: /^\s*~\s*/ },=0A=
    { name: 'child',        re: /^\s*>\s*/ },=0A=
    { name: 'adjacent',     re: /^\s*\+\s*/ },=0A=
    { name: 'descendant',   re: /^\s/ },=0A=
=0A=
    { name: 'tagName',      re: /^\s*(\*|[\w\-]+)(\b|$)?/ },=0A=
    { name: 'id',           re: /^#([\w\-\*]+)(\b|$)/ },=0A=
    { name: 'className',    re: /^\.([\w\-\*]+)(\b|$)/ },=0A=
    { name: 'pseudo',       re: =
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis=
)abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/ },=0A=
    { name: 'attrPresence', re: /^\[((?:[\w-]+:)?[\w-]+)\]/ },=0A=
    { name: 'attr',         re: =
/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^=
\]]*?)))?\]/ }=0A=
  ],=0A=
=0A=
  assertions: {=0A=
    tagName: function(element, matches) {=0A=
      return matches[1].toUpperCase() =3D=3D =
element.tagName.toUpperCase();=0A=
    },=0A=
=0A=
    className: function(element, matches) {=0A=
      return Element.hasClassName(element, matches[1]);=0A=
    },=0A=
=0A=
    id: function(element, matches) {=0A=
      return element.id =3D=3D=3D matches[1];=0A=
    },=0A=
=0A=
    attrPresence: function(element, matches) {=0A=
      return Element.hasAttribute(element, matches[1]);=0A=
    },=0A=
=0A=
    attr: function(element, matches) {=0A=
      var nodeValue =3D Element.readAttribute(element, matches[1]);=0A=
      return nodeValue && Selector.operators[matches[2]](nodeValue, =
matches[5] || matches[6]);=0A=
    }=0A=
  },=0A=
=0A=
  handlers: {=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    mark: function(nodes) {=0A=
      var _true =3D Prototype.emptyFunction;=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._countedByPrototype =3D _true;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    unmark: (function(){=0A=
=0A=
      var PROPERTIES_ATTRIBUTES_MAP =3D (function(){=0A=
        var el =3D document.createElement('div'),=0A=
            isBuggy =3D false,=0A=
            propName =3D '_countedByPrototype',=0A=
            value =3D 'x'=0A=
        el[propName] =3D value;=0A=
        isBuggy =3D (el.getAttribute(propName) =3D=3D=3D value);=0A=
        el =3D null;=0A=
        return isBuggy;=0A=
      })();=0A=
=0A=
      return PROPERTIES_ATTRIBUTES_MAP ?=0A=
        function(nodes) {=0A=
          for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
            node.removeAttribute('_countedByPrototype');=0A=
          return nodes;=0A=
        } :=0A=
        function(nodes) {=0A=
          for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
            node._countedByPrototype =3D void 0;=0A=
          return nodes;=0A=
        }=0A=
    })(),=0A=
=0A=
    index: function(parentNode, reverse, ofType) {=0A=
      parentNode._countedByPrototype =3D Prototype.emptyFunction;=0A=
      if (reverse) {=0A=
        for (var nodes =3D parentNode.childNodes, i =3D nodes.length - =
1, j =3D 1; i >=3D 0; i--) {=0A=
          var node =3D nodes[i];=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || =
node._countedByPrototype)) node.nodeIndex =3D j++;=0A=
        }=0A=
      } else {=0A=
        for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node =
=3D nodes[i]; i++)=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || =
node._countedByPrototype)) node.nodeIndex =3D j++;=0A=
      }=0A=
    },=0A=
=0A=
    unique: function(nodes) {=0A=
      if (nodes.length =3D=3D 0) return nodes;=0A=
      var results =3D [], n;=0A=
      for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A=
        if (typeof (n =3D nodes[i])._countedByPrototype =3D=3D =
'undefined') {=0A=
          n._countedByPrototype =3D Prototype.emptyFunction;=0A=
          results.push(Element.extend(n));=0A=
        }=0A=
      return Selector.handlers.unmark(results);=0A=
    },=0A=
=0A=
    descendant: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, node.getElementsByTagName('*'));=0A=
      return results;=0A=
    },=0A=
=0A=
    child: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A=
          if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') =
results.push(child);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    adjacent: function(nodes) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        var next =3D this.nextElementSibling(node);=0A=
        if (next) results.push(next);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    laterSibling: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, Element.nextSiblings(node));=0A=
      return results;=0A=
    },=0A=
=0A=
    nextElementSibling: function(node) {=0A=
      while (node =3D node.nextSibling)=0A=
        if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    previousElementSibling: function(node) {=0A=
      while (node =3D node.previousSibling)=0A=
        if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    tagName: function(nodes, root, tagName, combinator) {=0A=
      var uTagName =3D tagName.toUpperCase();=0A=
      var results =3D [], h =3D Selector.handlers;=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          if (combinator =3D=3D "descendant") {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              h.concat(results, node.getElementsByTagName(tagName));=0A=
            return results;=0A=
          } else nodes =3D this[combinator](nodes);=0A=
          if (tagName =3D=3D "*") return nodes;=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName.toUpperCase() =3D=3D=3D uTagName) =
results.push(node);=0A=
        return results;=0A=
      } else return root.getElementsByTagName(tagName);=0A=
    },=0A=
=0A=
    id: function(nodes, root, id, combinator) {=0A=
      var targetNode =3D $(id), h =3D Selector.handlers;=0A=
=0A=
      if (root =3D=3D document) {=0A=
        if (!targetNode) return [];=0A=
        if (!nodes) return [targetNode];=0A=
      } else {=0A=
        if (!root.sourceIndex || root.sourceIndex < 1) {=0A=
          var nodes =3D root.getElementsByTagName('*');=0A=
          for (var j =3D 0, node; node =3D nodes[j]; j++) {=0A=
            if (node.id =3D=3D=3D id) return [node];=0A=
          }=0A=
        }=0A=
      }=0A=
=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          if (combinator =3D=3D 'child') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (targetNode.parentNode =3D=3D node) return [targetNode];=0A=
          } else if (combinator =3D=3D 'descendant') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Element.descendantOf(targetNode, node)) return =
[targetNode];=0A=
          } else if (combinator =3D=3D 'adjacent') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Selector.handlers.previousElementSibling(targetNode) =
=3D=3D node)=0A=
                return [targetNode];=0A=
          } else nodes =3D h[combinator](nodes);=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node =3D=3D targetNode) return [targetNode];=0A=
        return [];=0A=
      }=0A=
      return (targetNode && Element.descendantOf(targetNode, root)) ? =
[targetNode] : [];=0A=
    },=0A=
=0A=
    className: function(nodes, root, className, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      return Selector.handlers.byClassName(nodes, root, className);=0A=
    },=0A=
=0A=
    byClassName: function(nodes, root, className) {=0A=
      if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A=
      var needle =3D ' ' + className + ' ';=0A=
      for (var i =3D 0, results =3D [], node, nodeClassName; node =3D =
nodes[i]; i++) {=0A=
        nodeClassName =3D node.className;=0A=
        if (nodeClassName.length =3D=3D 0) continue;=0A=
        if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' =
').include(needle))=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    attrPresence: function(nodes, root, attr, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      var results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        if (Element.hasAttribute(node, attr)) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    attr: function(nodes, root, attr, value, operator, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      var handler =3D Selector.operators[operator], results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        var nodeValue =3D Element.readAttribute(node, attr);=0A=
        if (nodeValue =3D=3D=3D null) continue;=0A=
        if (handler(nodeValue, value)) results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    pseudo: function(nodes, name, value, root, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      return Selector.pseudos[name](nodes, value, root);=0A=
    }=0A=
  },=0A=
=0A=
  pseudos: {=0A=
    'first-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.previousElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'last-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.nextElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'only-child': function(nodes, value, root) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!h.previousElementSibling(node) && =
!h.nextElementSibling(node))=0A=
          results.push(node);=0A=
      return results;=0A=
    },=0A=
    'nth-child':        function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root);=0A=
    },=0A=
    'nth-last-child':   function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true);=0A=
    },=0A=
    'nth-of-type':      function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, false, true);=0A=
    },=0A=
    'nth-last-of-type': function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true, true);=0A=
    },=0A=
    'first-of-type':    function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, false, true);=0A=
    },=0A=
    'last-of-type':     function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, true, true);=0A=
    },=0A=
    'only-of-type':     function(nodes, formula, root) {=0A=
      var p =3D Selector.pseudos;=0A=
      return p['last-of-type'](p['first-of-type'](nodes, formula, root), =
formula, root);=0A=
    },=0A=
=0A=
    getIndices: function(a, b, total) {=0A=
      if (a =3D=3D 0) return b > 0 ? [b] : [];=0A=
      return $R(1, total).inject([], function(memo, i) {=0A=
        if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A=
        return memo;=0A=
      });=0A=
    },=0A=
=0A=
    nth: function(nodes, formula, root, reverse, ofType) {=0A=
      if (nodes.length =3D=3D 0) return [];=0A=
      if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
      if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
      var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A=
      h.mark(nodes);=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        if (!node.parentNode._countedByPrototype) {=0A=
          h.index(node.parentNode, reverse, ofType);=0A=
          indexed.push(node.parentNode);=0A=
        }=0A=
      }=0A=
      if (formula.match(/^\d+$/)) { // just a number=0A=
        formula =3D Number(formula);=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.nodeIndex =3D=3D formula) results.push(node);=0A=
      } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // =
an+b=0A=
        if (m[1] =3D=3D "-") m[1] =3D -1;=0A=
        var a =3D m[1] ? Number(m[1]) : 1;=0A=
        var b =3D m[2] ? Number(m[2]) : 0;=0A=
        var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A=
        for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; =
i++) {=0A=
          for (var j =3D 0; j < l; j++)=0A=
            if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A=
        }=0A=
      }=0A=
      h.unmark(nodes);=0A=
      h.unmark(indexed);=0A=
      return results;=0A=
    },=0A=
=0A=
    'empty': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (node.tagName =3D=3D '!' || node.firstChild) continue;=0A=
        results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    'not': function(nodes, selector, root) {=0A=
      var h =3D Selector.handlers, selectorType, m;=0A=
      var exclusions =3D new Selector(selector).findElements(root);=0A=
      h.mark(exclusions);=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node._countedByPrototype) results.push(node);=0A=
      h.unmark(exclusions);=0A=
      return results;=0A=
    },=0A=
=0A=
    'enabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node.disabled && (!node.type || node.type !=3D=3D 'hidden'))=0A=
          results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'disabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'checked': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.checked) results.push(node);=0A=
      return results;=0A=
    }=0A=
  },=0A=
=0A=
  operators: {=0A=
    '=3D':  function(nv, v) { return nv =3D=3D v; },=0A=
    '!=3D': function(nv, v) { return nv !=3D v; },=0A=
    '^=3D': function(nv, v) { return nv =3D=3D v || nv && =
nv.startsWith(v); },=0A=
    '$=3D': function(nv, v) { return nv =3D=3D v || nv && =
nv.endsWith(v); },=0A=
    '*=3D': function(nv, v) { return nv =3D=3D v || nv && nv.include(v); =
},=0A=
    '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + =
' '); },=0A=
    '|=3D': function(nv, v) { return ('-' + (nv || "").toUpperCase() +=0A=
     '-').include('-' + (v || "").toUpperCase() + '-'); }=0A=
  },=0A=
=0A=
  split: function(expression) {=0A=
    var expressions =3D [];=0A=
    expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, =
function(m) {=0A=
      expressions.push(m[1].strip());=0A=
    });=0A=
    return expressions;=0A=
  },=0A=
=0A=
  matchElements: function(elements, expression) {=0A=
    var matches =3D $$(expression), h =3D Selector.handlers;=0A=
    h.mark(matches);=0A=
    for (var i =3D 0, results =3D [], element; element =3D elements[i]; =
i++)=0A=
      if (element._countedByPrototype) results.push(element);=0A=
    h.unmark(matches);=0A=
    return results;=0A=
  },=0A=
=0A=
  findElement: function(elements, expression, index) {=0A=
    if (Object.isNumber(expression)) {=0A=
      index =3D expression; expression =3D false;=0A=
    }=0A=
    return Selector.matchElements(elements, expression || '*')[index || =
0];=0A=
  },=0A=
=0A=
  findChildElements: function(element, expressions) {=0A=
    expressions =3D Selector.split(expressions.join(','));=0A=
    var results =3D [], h =3D Selector.handlers;=0A=
    for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A=
      selector =3D new Selector(expressions[i].strip());=0A=
      h.concat(results, selector.findElements(element));=0A=
    }=0A=
    return (l > 1) ? h.unique(results) : results;=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.IE) {=0A=
  Object.extend(Selector.handlers, {=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        if (node.tagName !=3D=3D "!") a.push(node);=0A=
      return a;=0A=
    }=0A=
  });=0A=
}=0A=
=0A=
function $$() {=0A=
  return Selector.findChildElements(document, $A(arguments));=0A=
}=0A=
=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    form =3D $(form);=0A=
    form.reset();=0A=
    return form;=0A=
  },=0A=
=0A=
  serializeElements: function(elements, options) {=0A=
    if (typeof options !=3D 'object') options =3D { hash: !!options };=0A=
    else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A=
    var key, value, submitted =3D false, submit =3D options.submit;=0A=
=0A=
    var data =3D elements.inject({ }, function(result, element) {=0A=
      if (!element.disabled && element.name) {=0A=
        key =3D element.name; value =3D $(element).getValue();=0A=
        if (value !=3D null && element.type !=3D 'file' && (element.type =
!=3D 'submit' || (!submitted &&=0A=
            submit !=3D=3D false && (!submit || key =3D=3D submit) && =
(submitted =3D true)))) {=0A=
          if (key in result) {=0A=
            if (!Object.isArray(result[key])) result[key] =3D =
[result[key]];=0A=
            result[key].push(value);=0A=
          }=0A=
          else result[key] =3D value;=0A=
        }=0A=
      }=0A=
      return result;=0A=
    });=0A=
=0A=
    return options.hash ? data : Object.toQueryString(data);=0A=
  }=0A=
};=0A=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form, options) {=0A=
    return Form.serializeElements(Form.getElements(form), options);=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    var elements =3D $(form).getElementsByTagName('*'),=0A=
        element,=0A=
        arr =3D [ ],=0A=
        serializers =3D Form.Element.Serializers;=0A=
    for (var i =3D 0; element =3D elements[i]; i++) {=0A=
      arr.push(element);=0A=
    }=0A=
    return arr.inject([], function(elements, child) {=0A=
      if (serializers[child.tagName.toLowerCase()])=0A=
        elements.push(Element.extend(child));=0A=
      return elements;=0A=
    })=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name) return $A(inputs).map(Element.extend);=0A=
=0A=
    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))=0A=
        continue;=0A=
      matchingInputs.push(Element.extend(input));=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('disable');=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('enable');=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    var elements =3D $(form).getElements().findAll(function(element) {=0A=
      return 'hidden' !=3D element.type && !element.disabled;=0A=
    });=0A=
    var firstByIndex =3D elements.findAll(function(element) {=0A=
      return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A=
    }).sortBy(function(element) { return element.tabIndex }).first();=0A=
=0A=
    return firstByIndex ? firstByIndex : elements.find(function(element) =
{=0A=
      return /^(?:input|select|textarea)$/i.test(element.tagName);=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    form =3D $(form);=0A=
    form.findFirstElement().activate();=0A=
    return form;=0A=
  },=0A=
=0A=
  request: function(form, options) {=0A=
    form =3D $(form), options =3D Object.clone(options || { });=0A=
=0A=
    var params =3D options.parameters, action =3D =
form.readAttribute('action') || '';=0A=
    if (action.blank()) action =3D window.location.href;=0A=
    options.parameters =3D form.serialize(true);=0A=
=0A=
    if (params) {=0A=
      if (Object.isString(params)) params =3D params.toQueryParams();=0A=
      Object.extend(options.parameters, params);=0A=
    }=0A=
=0A=
    if (form.hasAttribute('method') && !options.method)=0A=
      options.method =3D form.method;=0A=
=0A=
    return new Ajax.Request(action, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
=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=
=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element.disabled && element.name) {=0A=
      var value =3D element.getValue();=0A=
      if (value !=3D undefined) {=0A=
        var pair =3D { };=0A=
        pair[element.name] =3D value;=0A=
        return Object.toQueryString(pair);=0A=
      }=0A=
    }=0A=
    return '';=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    return Form.Element.Serializers[method](element);=0A=
  },=0A=
=0A=
  setValue: function(element, value) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    Form.Element.Serializers[method](element, value);=0A=
    return element;=0A=
  },=0A=
=0A=
  clear: function(element) {=0A=
    $(element).value =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  present: function(element) {=0A=
    return $(element).value !=3D '';=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    try {=0A=
      element.focus();=0A=
      if (element.select && (element.tagName.toLowerCase() !=3D 'input' =
||=0A=
          !(/^(?:button|reset|submit)$/i.test(element.type))))=0A=
        element.select();=0A=
    } catch (e) { }=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D true;=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D false;=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Field =3D Form.Element;=0A=
=0A=
var $F =3D Form.Element.Methods.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element.Serializers =3D {=0A=
  input: function(element, value) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return Form.Element.Serializers.inputSelector(element, value);=0A=
      default:=0A=
        return Form.Element.Serializers.textarea(element, value);=0A=
    }=0A=
  },=0A=
=0A=
  inputSelector: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.checked ? =
element.value : null;=0A=
    else element.checked =3D !!value;=0A=
  },=0A=
=0A=
  textarea: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.value;=0A=
    else element.value =3D value;=0A=
  },=0A=
=0A=
  select: function(element, value) {=0A=
    if (Object.isUndefined(value))=0A=
      return this[element.type =3D=3D 'select-one' ?=0A=
        'selectOne' : 'selectMany'](element);=0A=
    else {=0A=
      var opt, currentValue, single =3D !Object.isArray(value);=0A=
      for (var i =3D 0, length =3D element.length; i < length; i++) {=0A=
        opt =3D element.options[i];=0A=
        currentValue =3D this.optionValue(opt);=0A=
        if (single) {=0A=
          if (currentValue =3D=3D value) {=0A=
            opt.selected =3D true;=0A=
            return;=0A=
          }=0A=
        }=0A=
        else opt.selected =3D value.include(currentValue);=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  selectOne: function(element) {=0A=
    var index =3D element.selectedIndex;=0A=
    return index >=3D 0 ? this.optionValue(element.options[index]) : =
null;=0A=
  },=0A=
=0A=
  selectMany: function(element) {=0A=
    var values, length =3D element.length;=0A=
    if (!length) return null;=0A=
=0A=
    for (var i =3D 0, values =3D []; i < length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected) values.push(this.optionValue(opt));=0A=
    }=0A=
    return values;=0A=
  },=0A=
=0A=
  optionValue: function(opt) {=0A=
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
=0A=
Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A=
  initialize: function($super, element, frequency, callback) {=0A=
    $super(callback, frequency);=0A=
    this.element   =3D $(element);=0A=
    this.lastValue =3D this.getValue();=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    var value =3D this.getValue();=0A=
    if (Object.isString(this.lastValue) && Object.isString(value) ?=0A=
        this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value)) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D Class.create({=0A=
  initialize: function(element, callback) {=0A=
    this.element  =3D $(element);=0A=
    this.callback =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A=
      this.registerFormCallbacks();=0A=
    else=0A=
      this.registerCallback(this.element);=0A=
  },=0A=
=0A=
  onElementEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  },=0A=
=0A=
  registerFormCallbacks: function() {=0A=
    Form.getElements(this.element).each(this.registerCallback, this);=0A=
  },=0A=
=0A=
  registerCallback: function(element) {=0A=
    if (element.type) {=0A=
      switch (element.type.toLowerCase()) {=0A=
        case 'checkbox':=0A=
        case 'radio':=0A=
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
        default:=0A=
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
(function() {=0A=
=0A=
  var Event =3D {=0A=
    KEY_BACKSPACE: 8,=0A=
    KEY_TAB:       9,=0A=
    KEY_RETURN:   13,=0A=
    KEY_ESC:      27,=0A=
    KEY_LEFT:     37,=0A=
    KEY_UP:       38,=0A=
    KEY_RIGHT:    39,=0A=
    KEY_DOWN:     40,=0A=
    KEY_DELETE:   46,=0A=
    KEY_HOME:     36,=0A=
    KEY_END:      35,=0A=
    KEY_PAGEUP:   33,=0A=
    KEY_PAGEDOWN: 34,=0A=
    KEY_INSERT:   45,=0A=
=0A=
    cache: {}=0A=
  };=0A=
=0A=
  var docEl =3D document.documentElement;=0A=
  var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED =3D 'onmouseenter' in docEl=0A=
    && 'onmouseleave' in docEl;=0A=
=0A=
  var _isButton;=0A=
  if (Prototype.Browser.IE) {=0A=
    var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A=
    _isButton =3D function(event, code) {=0A=
      return event.button =3D=3D=3D buttonMap[code];=0A=
    };=0A=
  } else if (Prototype.Browser.WebKit) {=0A=
    _isButton =3D function(event, code) {=0A=
      switch (code) {=0A=
        case 0: return event.which =3D=3D 1 && !event.metaKey;=0A=
        case 1: return event.which =3D=3D 1 && event.metaKey;=0A=
        default: return false;=0A=
      }=0A=
    };=0A=
  } else {=0A=
    _isButton =3D function(event, code) {=0A=
      return event.which ? (event.which =3D=3D=3D code + 1) : =
(event.button =3D=3D=3D code);=0A=
    };=0A=
  }=0A=
=0A=
  function isLeftClick(event)   { return _isButton(event, 0) }=0A=
=0A=
  function isMiddleClick(event) { return _isButton(event, 1) }=0A=
=0A=
  function isRightClick(event)  { return _isButton(event, 2) }=0A=
=0A=
  function element(event) {=0A=
    event =3D Event.extend(event);=0A=
=0A=
    var node =3D event.target, type =3D event.type,=0A=
     currentTarget =3D event.currentTarget;=0A=
=0A=
    if (currentTarget && currentTarget.tagName) {=0A=
      if (type =3D=3D=3D 'load' || type =3D=3D=3D 'error' ||=0A=
        (type =3D=3D=3D 'click' && currentTarget.tagName.toLowerCase() =
=3D=3D=3D 'input'=0A=
          && currentTarget.type =3D=3D=3D 'radio'))=0A=
            node =3D currentTarget;=0A=
    }=0A=
=0A=
    if (node.nodeType =3D=3D Node.TEXT_NODE)=0A=
      node =3D node.parentNode;=0A=
=0A=
    return Element.extend(node);=0A=
  }=0A=
=0A=
  function findElement(event, expression) {=0A=
    var element =3D Event.element(event);=0A=
    if (!expression) return element;=0A=
    var elements =3D [element].concat(element.ancestors());=0A=
    return Selector.findElement(elements, expression, 0);=0A=
  }=0A=
=0A=
  function pointer(event) {=0A=
    return { x: pointerX(event), y: pointerY(event) };=0A=
  }=0A=
=0A=
  function pointerX(event) {=0A=
    var docElement =3D document.documentElement,=0A=
     body =3D document.body || { scrollLeft: 0 };=0A=
=0A=
    return event.pageX || (event.clientX +=0A=
      (docElement.scrollLeft || body.scrollLeft) -=0A=
      (docElement.clientLeft || 0));=0A=
  }=0A=
=0A=
  function pointerY(event) {=0A=
    var docElement =3D document.documentElement,=0A=
     body =3D document.body || { scrollTop: 0 };=0A=
=0A=
    return  event.pageY || (event.clientY +=0A=
       (docElement.scrollTop || body.scrollTop) -=0A=
       (docElement.clientTop || 0));=0A=
  }=0A=
=0A=
=0A=
  function stop(event) {=0A=
    Event.extend(event);=0A=
    event.preventDefault();=0A=
    event.stopPropagation();=0A=
=0A=
    event.stopped =3D true;=0A=
  }=0A=
=0A=
  Event.Methods =3D {=0A=
    isLeftClick: isLeftClick,=0A=
    isMiddleClick: isMiddleClick,=0A=
    isRightClick: isRightClick,=0A=
=0A=
    element: element,=0A=
    findElement: findElement,=0A=
=0A=
    pointer: pointer,=0A=
    pointerX: pointerX,=0A=
    pointerY: pointerY,=0A=
=0A=
    stop: stop=0A=
  };=0A=
=0A=
=0A=
  var methods =3D Object.keys(Event.Methods).inject({ }, function(m, =
name) {=0A=
    m[name] =3D Event.Methods[name].methodize();=0A=
    return m;=0A=
  });=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    function _relatedTarget(event) {=0A=
      var element;=0A=
      switch (event.type) {=0A=
        case 'mouseover': element =3D event.fromElement; break;=0A=
        case 'mouseout':  element =3D event.toElement;   break;=0A=
        default: return null;=0A=
      }=0A=
      return Element.extend(element);=0A=
    }=0A=
=0A=
    Object.extend(methods, {=0A=
      stopPropagation: function() { this.cancelBubble =3D true },=0A=
      preventDefault:  function() { this.returnValue =3D false },=0A=
      inspect: function() { return '[object Event]' }=0A=
    });=0A=
=0A=
    Event.extend =3D function(event, element) {=0A=
      if (!event) return false;=0A=
      if (event._extendedByPrototype) return event;=0A=
=0A=
      event._extendedByPrototype =3D Prototype.emptyFunction;=0A=
      var pointer =3D Event.pointer(event);=0A=
=0A=
      Object.extend(event, {=0A=
        target: event.srcElement || element,=0A=
        relatedTarget: _relatedTarget(event),=0A=
        pageX:  pointer.x,=0A=
        pageY:  pointer.y=0A=
      });=0A=
=0A=
      return Object.extend(event, methods);=0A=
    };=0A=
  } else {=0A=
    Event.prototype =3D window.Event.prototype || =
document.createEvent('HTMLEvents').__proto__;=0A=
    Object.extend(Event.prototype, methods);=0A=
    Event.extend =3D Prototype.K;=0A=
  }=0A=
=0A=
  function _createResponder(element, eventName, handler) {=0A=
    var registry =3D Element.retrieve(element, =
'prototype_event_registry');=0A=
=0A=
    if (Object.isUndefined(registry)) {=0A=
      CACHE.push(element);=0A=
      registry =3D Element.retrieve(element, 'prototype_event_registry', =
$H());=0A=
    }=0A=
=0A=
    var respondersForEvent =3D registry.get(eventName);=0A=
    if (Object.isUndefined(respondersForEvent)) {=0A=
      respondersForEvent =3D [];=0A=
      registry.set(eventName, respondersForEvent);=0A=
    }=0A=
=0A=
    if (respondersForEvent.pluck('handler').include(handler)) return =
false;=0A=
=0A=
    var responder;=0A=
    if (eventName.include(":")) {=0A=
      responder =3D function(event) {=0A=
        if (Object.isUndefined(event.eventName))=0A=
          return false;=0A=
=0A=
        if (event.eventName !=3D=3D eventName)=0A=
          return false;=0A=
=0A=
        Event.extend(event, element);=0A=
        handler.call(element, event);=0A=
      };=0A=
    } else {=0A=
      if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED &&=0A=
       (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D =
"mouseleave")) {=0A=
        if (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D =
"mouseleave") {=0A=
          responder =3D function(event) {=0A=
            Event.extend(event, element);=0A=
=0A=
            var parent =3D event.relatedTarget;=0A=
            while (parent && parent !=3D=3D element) {=0A=
              try { parent =3D parent.parentNode; }=0A=
              catch(e) { parent =3D element; }=0A=
            }=0A=
=0A=
            if (parent =3D=3D=3D element) return;=0A=
=0A=
            handler.call(element, event);=0A=
          };=0A=
        }=0A=
      } else {=0A=
        responder =3D function(event) {=0A=
          Event.extend(event, element);=0A=
          handler.call(element, event);=0A=
        };=0A=
      }=0A=
    }=0A=
=0A=
    responder.handler =3D handler;=0A=
    respondersForEvent.push(responder);=0A=
    return responder;=0A=
  }=0A=
=0A=
  function _destroyCache() {=0A=
    for (var i =3D 0, length =3D CACHE.length; i < length; i++) {=0A=
      Event.stopObserving(CACHE[i]);=0A=
      CACHE[i] =3D null;=0A=
    }=0A=
  }=0A=
=0A=
  var CACHE =3D [];=0A=
=0A=
  if (Prototype.Browser.IE)=0A=
    window.attachEvent('onunload', _destroyCache);=0A=
=0A=
  if (Prototype.Browser.WebKit)=0A=
    window.addEventListener('unload', Prototype.emptyFunction, false);=0A=
=0A=
=0A=
  var _getDOMEventName =3D Prototype.K;=0A=
=0A=
  if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) {=0A=
    _getDOMEventName =3D function(eventName) {=0A=
      var translations =3D { mouseenter: "mouseover", mouseleave: =
"mouseout" };=0A=
      return eventName in translations ? translations[eventName] : =
eventName;=0A=
    };=0A=
  }=0A=
=0A=
  function observe(element, eventName, handler) {=0A=
    element =3D $(element);=0A=
=0A=
    var responder =3D _createResponder(element, eventName, handler);=0A=
=0A=
    if (!responder) return element;=0A=
=0A=
    if (eventName.include(':')) {=0A=
      if (element.addEventListener)=0A=
        element.addEventListener("dataavailable", responder, false);=0A=
      else {=0A=
        element.attachEvent("ondataavailable", responder);=0A=
        element.attachEvent("onfilterchange", responder);=0A=
      }=0A=
    } else {=0A=
      var actualEventName =3D _getDOMEventName(eventName);=0A=
=0A=
      if (element.addEventListener)=0A=
        element.addEventListener(actualEventName, responder, false);=0A=
      else=0A=
        element.attachEvent("on" + actualEventName, responder);=0A=
    }=0A=
=0A=
    return element;=0A=
  }=0A=
=0A=
  function stopObserving(element, eventName, handler) {=0A=
    element =3D $(element);=0A=
=0A=
    var registry =3D Element.retrieve(element, =
'prototype_event_registry');=0A=
=0A=
    if (Object.isUndefined(registry)) return element;=0A=
=0A=
    if (eventName && !handler) {=0A=
      var responders =3D registry.get(eventName);=0A=
=0A=
      if (Object.isUndefined(responders)) return element;=0A=
=0A=
      responders.each( function(r) {=0A=
        Element.stopObserving(element, eventName, r.handler);=0A=
      });=0A=
      return element;=0A=
    } else if (!eventName) {=0A=
      registry.each( function(pair) {=0A=
        var eventName =3D pair.key, responders =3D pair.value;=0A=
=0A=
        responders.each( function(r) {=0A=
          Element.stopObserving(element, eventName, r.handler);=0A=
        });=0A=
      });=0A=
      return element;=0A=
    }=0A=
=0A=
    var responders =3D registry.get(eventName);=0A=
=0A=
    if (!responders) return;=0A=
=0A=
    var responder =3D responders.find( function(r) { return r.handler =
=3D=3D=3D handler; });=0A=
    if (!responder) return element;=0A=
=0A=
    var actualEventName =3D _getDOMEventName(eventName);=0A=
=0A=
    if (eventName.include(':')) {=0A=
      if (element.removeEventListener)=0A=
        element.removeEventListener("dataavailable", responder, false);=0A=
      else {=0A=
        element.detachEvent("ondataavailable", responder);=0A=
        element.detachEvent("onfilterchange",  responder);=0A=
      }=0A=
    } else {=0A=
      if (element.removeEventListener)=0A=
        element.removeEventListener(actualEventName, responder, false);=0A=
      else=0A=
        element.detachEvent('on' + actualEventName, responder);=0A=
    }=0A=
=0A=
    registry.set(eventName, responders.without(responder));=0A=
=0A=
    return element;=0A=
  }=0A=
=0A=
  function fire(element, eventName, memo, bubble) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isUndefined(bubble))=0A=
      bubble =3D true;=0A=
=0A=
    if (element =3D=3D document && document.createEvent && =
!element.dispatchEvent)=0A=
      element =3D document.documentElement;=0A=
=0A=
    var event;=0A=
    if (document.createEvent) {=0A=
      event =3D document.createEvent('HTMLEvents');=0A=
      event.initEvent('dataavailable', true, true);=0A=
    } else {=0A=
      event =3D document.createEventObject();=0A=
      event.eventType =3D bubble ? 'ondataavailable' : 'onfilterchange';=0A=
    }=0A=
=0A=
    event.eventName =3D eventName;=0A=
    event.memo =3D memo || { };=0A=
=0A=
    if (document.createEvent)=0A=
      element.dispatchEvent(event);=0A=
    else=0A=
      element.fireEvent(event.eventType, event);=0A=
=0A=
    return Event.extend(event);=0A=
  }=0A=
=0A=
=0A=
  Object.extend(Event, Event.Methods);=0A=
=0A=
  Object.extend(Event, {=0A=
    fire:          fire,=0A=
    observe:       observe,=0A=
    stopObserving: stopObserving=0A=
  });=0A=
=0A=
  Element.addMethods({=0A=
    fire:          fire,=0A=
=0A=
    observe:       observe,=0A=
=0A=
    stopObserving: stopObserving=0A=
  });=0A=
=0A=
  Object.extend(document, {=0A=
    fire:          fire.methodize(),=0A=
=0A=
    observe:       observe.methodize(),=0A=
=0A=
    stopObserving: stopObserving.methodize(),=0A=
=0A=
    loaded:        false=0A=
  });=0A=
=0A=
  if (window.Event) Object.extend(window.Event, Event);=0A=
  else window.Event =3D Event;=0A=
})();=0A=
=0A=
(function() {=0A=
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A=
     Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */=0A=
=0A=
  var timer;=0A=
=0A=
  function fireContentLoadedEvent() {=0A=
    if (document.loaded) return;=0A=
    if (timer) window.clearTimeout(timer);=0A=
    document.loaded =3D true;=0A=
    document.fire('dom:loaded');=0A=
  }=0A=
=0A=
  function checkReadyState() {=0A=
    if (document.readyState =3D=3D=3D 'complete') {=0A=
      document.stopObserving('readystatechange', checkReadyState);=0A=
      fireContentLoadedEvent();=0A=
    }=0A=
  }=0A=
=0A=
  function pollDoScroll() {=0A=
    try { document.documentElement.doScroll('left'); }=0A=
    catch(e) {=0A=
      timer =3D pollDoScroll.defer();=0A=
      return;=0A=
    }=0A=
    fireContentLoadedEvent();=0A=
  }=0A=
=0A=
  if (document.addEventListener) {=0A=
    document.addEventListener('DOMContentLoaded', =
fireContentLoadedEvent, false);=0A=
  } else {=0A=
    document.observe('readystatechange', checkReadyState);=0A=
    if (window =3D=3D top)=0A=
      timer =3D pollDoScroll.defer();=0A=
  }=0A=
=0A=
  Event.observe(window, 'load', fireContentLoadedEvent);=0A=
})();=0A=
=0A=
Element.addMethods();=0A=
=0A=
/*------------------------------- DEPRECATED =
-------------------------------*/=0A=
=0A=
Hash.toQueryString =3D Object.toQueryString;=0A=
=0A=
var Toggle =3D { display: Element.toggle };=0A=
=0A=
Element.Methods.childOf =3D Element.Methods.descendantOf;=0A=
=0A=
var Insertion =3D {=0A=
  Before: function(element, content) {=0A=
    return Element.insert(element, {before:content});=0A=
  },=0A=
=0A=
  Top: function(element, content) {=0A=
    return Element.insert(element, {top:content});=0A=
  },=0A=
=0A=
  Bottom: function(element, content) {=0A=
    return Element.insert(element, {bottom:content});=0A=
  },=0A=
=0A=
  After: function(element, content) {=0A=
    return Element.insert(element, {after:content});=0A=
  }=0A=
};=0A=
=0A=
var $continue =3D new Error('"throw $continue" is deprecated, use =
"return" instead');=0A=
=0A=
var Position =3D {=0A=
  includeScrollOffsets: false,=0A=
=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=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (y >=3D this.offset[1] &&=0A=
            y <  this.offset[1] + element.offsetHeight &&=0A=
            x >=3D this.offset[0] &&=0A=
            x <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  withinIncludingScrolloffsets: function(element, x, y) {=0A=
    var offsetcache =3D Element.cumulativeScrollOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  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=
=0A=
  cumulativeOffset: Element.Methods.cumulativeOffset,=0A=
=0A=
  positionedOffset: Element.Methods.positionedOffset,=0A=
=0A=
  absolutize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.absolutize(element);=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.relativize(element);=0A=
  },=0A=
=0A=
  realOffset: Element.Methods.cumulativeScrollOffset,=0A=
=0A=
  offsetParent: Element.Methods.getOffsetParent,=0A=
=0A=
  page: Element.Methods.viewportOffset,=0A=
=0A=
  clone: function(source, target, options) {=0A=
    options =3D options || { };=0A=
    return Element.clonePosition(target, source, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!document.getElementsByClassName) document.getElementsByClassName =
=3D function(instanceMethods){=0A=
  function iter(name) {=0A=
    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' =
" + name + " ')]";=0A=
  }=0A=
=0A=
  instanceMethods.getElementsByClassName =3D =
Prototype.BrowserFeatures.XPath ?=0A=
  function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') =
: iter(className);=0A=
    return cond ? document._getElementsByXPath('.//*' + cond, element) : =
[];=0A=
  } : function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var elements =3D [], classNames =3D (/\s/.test(className) ? =
$w(className) : null);=0A=
    if (!classNames && !className) return elements;=0A=
=0A=
    var nodes =3D $(element).getElementsByTagName('*');=0A=
    className =3D ' ' + className + ' ';=0A=
=0A=
    for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A=
      if (child.className && (cn =3D ' ' + child.className + ' ') && =
(cn.include(className) ||=0A=
          (classNames && classNames.all(function(name) {=0A=
            return !name.toString().blank() && cn.include(' ' + name + ' =
');=0A=
          }))))=0A=
        elements.push(Element.extend(child));=0A=
    }=0A=
    return elements;=0A=
  };=0A=
=0A=
  return function(className, parentElement) {=0A=
    return $(parentElement || =
document.body).getElementsByClassName(className);=0A=
  };=0A=
}(Element.Methods);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.ClassNames =3D Class.create();=0A=
Element.ClassNames.prototype =3D {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    this.element.className.split(/\s+/).select(function(name) {=0A=
      return name.length > 0;=0A=
    })._each(iterator);=0A=
  },=0A=
=0A=
  set: function(className) {=0A=
    this.element.className =3D className;=0A=
  },=0A=
=0A=
  add: function(classNameToAdd) {=0A=
    if (this.include(classNameToAdd)) return;=0A=
    this.set($A(this).concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set($A(this).without(classNameToRemove).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return $A(this).join(' ');=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.ClassNames.prototype, Enumerable);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/builder.js

// script.aculo.us builder.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009=0A=
=0A=
// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
//=0A=
// script.aculo.us is freely distributable under the terms of an =
MIT-style license.=0A=
// For details, see the script.aculo.us web site: http://script.aculo.us/=0A=
=0A=
var Builder =3D {=0A=
  NODEMAP: {=0A=
    AREA: 'map',=0A=
    CAPTION: 'table',=0A=
    COL: 'table',=0A=
    COLGROUP: 'table',=0A=
    LEGEND: 'fieldset',=0A=
    OPTGROUP: 'select',=0A=
    OPTION: 'select',=0A=
    PARAM: 'object',=0A=
    TBODY: 'table',=0A=
    TD: 'table',=0A=
    TFOOT: 'table',=0A=
    TH: 'table',=0A=
    THEAD: 'table',=0A=
    TR: 'table'=0A=
  },=0A=
  // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently =
broken,=0A=
  //       due to a Firefox bug=0A=
  node: function(elementName) {=0A=
    elementName =3D elementName.toUpperCase();=0A=
=0A=
    // try innerHTML approach=0A=
    var parentTag =3D this.NODEMAP[elementName] || 'div';=0A=
    var parentElement =3D document.createElement(parentTag);=0A=
    try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707=0A=
      parentElement.innerHTML =3D "<" + elementName + "></" + =
elementName + ">";=0A=
    } catch(e) {}=0A=
    var element =3D parentElement.firstChild || null;=0A=
=0A=
    // see if browser added wrapping tags=0A=
    if(element && (element.tagName.toUpperCase() !=3D elementName))=0A=
      element =3D element.getElementsByTagName(elementName)[0];=0A=
=0A=
    // fallback to createElement approach=0A=
    if(!element) element =3D document.createElement(elementName);=0A=
=0A=
    // abort if nothing could be created=0A=
    if(!element) return;=0A=
=0A=
    // attributes (or text)=0A=
    if(arguments[1])=0A=
      if(this._isStringOrNumber(arguments[1]) ||=0A=
        (arguments[1] instanceof Array) ||=0A=
        arguments[1].tagName) {=0A=
          this._children(element, arguments[1]);=0A=
        } else {=0A=
          var attrs =3D this._attributes(arguments[1]);=0A=
          if(attrs.length) {=0A=
            try { // prevent IE "feature": =
http://dev.rubyonrails.org/ticket/2707=0A=
              parentElement.innerHTML =3D "<" +elementName + " " +=0A=
                attrs + "></" + elementName + ">";=0A=
            } catch(e) {}=0A=
            element =3D parentElement.firstChild || null;=0A=
            // workaround firefox 1.0.X bug=0A=
            if(!element) {=0A=
              element =3D document.createElement(elementName);=0A=
              for(attr in arguments[1])=0A=
                element[attr =3D=3D 'class' ? 'className' : attr] =3D =
arguments[1][attr];=0A=
            }=0A=
            if(element.tagName.toUpperCase() !=3D elementName)=0A=
              element =3D =
parentElement.getElementsByTagName(elementName)[0];=0A=
          }=0A=
        }=0A=
=0A=
    // text, or array of children=0A=
    if(arguments[2])=0A=
      this._children(element, arguments[2]);=0A=
=0A=
     return $(element);=0A=
  },=0A=
  _text: function(text) {=0A=
     return document.createTextNode(text);=0A=
  },=0A=
=0A=
  ATTR_MAP: {=0A=
    'className': 'class',=0A=
    'htmlFor': 'for'=0A=
  },=0A=
=0A=
  _attributes: function(attributes) {=0A=
    var attrs =3D [];=0A=
    for(attribute in attributes)=0A=
      attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] =
: attribute) +=0A=
          '=3D"' + =
attributes[attribute].toString().escapeHTML().gsub(/"/,'&quot;') + '"');=0A=
    return attrs.join(" ");=0A=
  },=0A=
  _children: function(element, children) {=0A=
    if(children.tagName) {=0A=
      element.appendChild(children);=0A=
      return;=0A=
    }=0A=
    if(typeof children=3D=3D'object') { // array can hold nodes and text=0A=
      children.flatten().each( function(e) {=0A=
        if(typeof e=3D=3D'object')=0A=
          element.appendChild(e);=0A=
        else=0A=
          if(Builder._isStringOrNumber(e))=0A=
            element.appendChild(Builder._text(e));=0A=
      });=0A=
    } else=0A=
      if(Builder._isStringOrNumber(children))=0A=
        element.appendChild(Builder._text(children));=0A=
  },=0A=
  _isStringOrNumber: function(param) {=0A=
    return(typeof param=3D=3D'string' || typeof param=3D=3D'number');=0A=
  },=0A=
  build: function(html) {=0A=
    var element =3D this.node('div');=0A=
    $(element).update(html.strip());=0A=
    return element.down();=0A=
  },=0A=
  dump: function(scope) {=0A=
    if(typeof scope !=3D 'object' && typeof scope !=3D 'function') scope =
=3D window; //global scope=0A=
=0A=
    var tags =3D ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT =
BDO BIG BLOCKQUOTE BODY " +=0A=
      "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR =
DIV DL DT EM FIELDSET " +=0A=
      "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME =
IMG INPUT INS ISINDEX "+=0A=
      "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT =
OL OPTGROUP OPTION P "+=0A=
      "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE =
SUB SUP TABLE TBODY TD "+=0A=
      "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);=0A=
=0A=
    tags.each( function(tag){=0A=
      scope[tag] =3D function() {=0A=
        return Builder.node.apply(Builder, [tag].concat($A(arguments)));=0A=
      };=0A=
    });=0A=
  }=0A=
};
------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/effects.js

// script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009=0A=
=0A=
// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
// Contributors:=0A=
//  Justin Palmer (http://encytemedia.com/)=0A=
//  Mark Pilgrim (http://diveintomark.org/)=0A=
//  Martin Bialasinki=0A=
//=0A=
// script.aculo.us is freely distributable under the terms of an =
MIT-style license.=0A=
// For details, see the script.aculo.us web site: http://script.aculo.us/=0A=
=0A=
// converts rgb() and #xxx to #xxxxxx format,=0A=
// returns self (or first argument) if not convertable=0A=
String.prototype.parseColor =3D function() {=0A=
  var color =3D '#';=0A=
  if (this.slice(0,4) =3D=3D 'rgb(') {=0A=
    var cols =3D this.slice(4,this.length-1).split(',');=0A=
    var i=3D0; do { color +=3D parseInt(cols[i]).toColorPart() } while =
(++i<3);=0A=
  } else {=0A=
    if (this.slice(0,1) =3D=3D '#') {=0A=
      if (this.length=3D=3D4) for(var i=3D1;i<4;i++) color +=3D =
(this.charAt(i) + this.charAt(i)).toLowerCase();=0A=
      if (this.length=3D=3D7) color =3D this.toLowerCase();=0A=
    }=0A=
  }=0A=
  return (color.length=3D=3D7 ? color : (arguments[0] || this));=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.collectTextNodes =3D function(element) {=0A=
  return $A($(element).childNodes).collect( function(node) {=0A=
    return (node.nodeType=3D=3D3 ? node.nodeValue :=0A=
      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));=0A=
  }).flatten().join('');=0A=
};=0A=
=0A=
Element.collectTextNodesIgnoreClass =3D function(element, className) {=0A=
  return $A($(element).childNodes).collect( function(node) {=0A=
    return (node.nodeType=3D=3D3 ? node.nodeValue :=0A=
      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?=0A=
        Element.collectTextNodesIgnoreClass(node, className) : ''));=0A=
  }).flatten().join('');=0A=
};=0A=
=0A=
Element.setContentZoom =3D function(element, percent) {=0A=
  element =3D $(element);=0A=
  element.setStyle({fontSize: (percent/100) + 'em'});=0A=
  if (Prototype.Browser.WebKit) window.scrollBy(0,0);=0A=
  return element;=0A=
};=0A=
=0A=
Element.getInlineOpacity =3D function(element){=0A=
  return $(element).style.opacity || '';=0A=
};=0A=
=0A=
Element.forceRerendering =3D function(element) {=0A=
  try {=0A=
    element =3D $(element);=0A=
    var n =3D document.createTextNode(' ');=0A=
    element.appendChild(n);=0A=
    element.removeChild(n);=0A=
  } catch(e) { }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Effect =3D {=0A=
  _elementDoesNotExistError: {=0A=
    name: 'ElementDoesNotExistError',=0A=
    message: 'The specified DOM element does not exist, but is required =
for this effect to operate'=0A=
  },=0A=
  Transitions: {=0A=
    linear: Prototype.K,=0A=
    sinoidal: function(pos) {=0A=
      return (-Math.cos(pos*Math.PI)/2) + .5;=0A=
    },=0A=
    reverse: function(pos) {=0A=
      return 1-pos;=0A=
    },=0A=
    flicker: function(pos) {=0A=
      var pos =3D ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;=0A=
      return pos > 1 ? 1 : pos;=0A=
    },=0A=
    wobble: function(pos) {=0A=
      return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;=0A=
    },=0A=
    pulse: function(pos, pulses) {=0A=
      return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;=0A=
    },=0A=
    spring: function(pos) {=0A=
      return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));=0A=
    },=0A=
    none: function(pos) {=0A=
      return 0;=0A=
    },=0A=
    full: function(pos) {=0A=
      return 1;=0A=
    }=0A=
  },=0A=
  DefaultOptions: {=0A=
    duration:   1.0,   // seconds=0A=
    fps:        100,   // 100=3D assume 66fps max.=0A=
    sync:       false, // true for combining=0A=
    from:       0.0,=0A=
    to:         1.0,=0A=
    delay:      0.0,=0A=
    queue:      'parallel'=0A=
  },=0A=
  tagifyText: function(element) {=0A=
    var tagifyStyle =3D 'position:relative';=0A=
    if (Prototype.Browser.IE) tagifyStyle +=3D ';zoom:1';=0A=
=0A=
    element =3D $(element);=0A=
    $A(element.childNodes).each( function(child) {=0A=
      if (child.nodeType=3D=3D3) {=0A=
        child.nodeValue.toArray().each( function(character) {=0A=
          element.insertBefore(=0A=
            new Element('span', {style: tagifyStyle}).update(=0A=
              character =3D=3D ' ' ? String.fromCharCode(160) : =
character),=0A=
              child);=0A=
        });=0A=
        Element.remove(child);=0A=
      }=0A=
    });=0A=
  },=0A=
  multiple: function(element, effect) {=0A=
    var elements;=0A=
    if (((typeof element =3D=3D 'object') ||=0A=
        Object.isFunction(element)) &&=0A=
       (element.length))=0A=
      elements =3D element;=0A=
    else=0A=
      elements =3D $(element).childNodes;=0A=
=0A=
    var options =3D Object.extend({=0A=
      speed: 0.1,=0A=
      delay: 0.0=0A=
    }, arguments[2] || { });=0A=
    var masterDelay =3D options.delay;=0A=
=0A=
    $A(elements).each( function(element, index) {=0A=
      new effect(element, Object.extend(options, { delay: index * =
options.speed + masterDelay }));=0A=
    });=0A=
  },=0A=
  PAIRS: {=0A=
    'slide':  ['SlideDown','SlideUp'],=0A=
    'blind':  ['BlindDown','BlindUp'],=0A=
    'appear': ['Appear','Fade']=0A=
  },=0A=
  toggle: function(element, effect, options) {=0A=
    element =3D $(element);=0A=
    effect  =3D (effect || 'appear').toLowerCase();=0A=
    =0A=
    return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] =
](element, Object.extend({=0A=
      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }=0A=
    }, options || {}));=0A=
  }=0A=
};=0A=
=0A=
Effect.DefaultOptions.transition =3D Effect.Transitions.sinoidal;=0A=
=0A=
/* ------------- core effects ------------- */=0A=
=0A=
Effect.ScopedQueue =3D Class.create(Enumerable, {=0A=
  initialize: function() {=0A=
    this.effects  =3D [];=0A=
    this.interval =3D null;=0A=
  },=0A=
  _each: function(iterator) {=0A=
    this.effects._each(iterator);=0A=
  },=0A=
  add: function(effect) {=0A=
    var timestamp =3D new Date().getTime();=0A=
=0A=
    var position =3D Object.isString(effect.options.queue) ?=0A=
      effect.options.queue : effect.options.queue.position;=0A=
=0A=
    switch(position) {=0A=
      case 'front':=0A=
        // move unstarted effects after this effect=0A=
        this.effects.findAll(function(e){ return e.state=3D=3D'idle' =
}).each( function(e) {=0A=
            e.startOn  +=3D effect.finishOn;=0A=
            e.finishOn +=3D effect.finishOn;=0A=
          });=0A=
        break;=0A=
      case 'with-last':=0A=
        timestamp =3D this.effects.pluck('startOn').max() || timestamp;=0A=
        break;=0A=
      case 'end':=0A=
        // start effect after last queued effect has finished=0A=
        timestamp =3D this.effects.pluck('finishOn').max() || timestamp;=0A=
        break;=0A=
    }=0A=
=0A=
    effect.startOn  +=3D timestamp;=0A=
    effect.finishOn +=3D timestamp;=0A=
=0A=
    if (!effect.options.queue.limit || (this.effects.length < =
effect.options.queue.limit))=0A=
      this.effects.push(effect);=0A=
=0A=
    if (!this.interval)=0A=
      this.interval =3D setInterval(this.loop.bind(this), 15);=0A=
  },=0A=
  remove: function(effect) {=0A=
    this.effects =3D this.effects.reject(function(e) { return =
e=3D=3Deffect });=0A=
    if (this.effects.length =3D=3D 0) {=0A=
      clearInterval(this.interval);=0A=
      this.interval =3D null;=0A=
    }=0A=
  },=0A=
  loop: function() {=0A=
    var timePos =3D new Date().getTime();=0A=
    for(var i=3D0, len=3Dthis.effects.length;i<len;i++)=0A=
      this.effects[i] && this.effects[i].loop(timePos);=0A=
  }=0A=
});=0A=
=0A=
Effect.Queues =3D {=0A=
  instances: $H(),=0A=
  get: function(queueName) {=0A=
    if (!Object.isString(queueName)) return queueName;=0A=
=0A=
    return this.instances.get(queueName) ||=0A=
      this.instances.set(queueName, new Effect.ScopedQueue());=0A=
  }=0A=
};=0A=
Effect.Queue =3D Effect.Queues.get('global');=0A=
=0A=
Effect.Base =3D Class.create({=0A=
  position: null,=0A=
  start: function(options) {=0A=
    if (options && options.transition =3D=3D=3D false) =
options.transition =3D Effect.Transitions.linear;=0A=
    this.options      =3D Object.extend(Object.extend({ =
},Effect.DefaultOptions), options || { });=0A=
    this.currentFrame =3D 0;=0A=
    this.state        =3D 'idle';=0A=
    this.startOn      =3D this.options.delay*1000;=0A=
    this.finishOn     =3D this.startOn+(this.options.duration*1000);=0A=
    this.fromToDelta  =3D this.options.to-this.options.from;=0A=
    this.totalTime    =3D this.finishOn-this.startOn;=0A=
    this.totalFrames  =3D this.options.fps*this.options.duration;=0A=
=0A=
    this.render =3D (function() {=0A=
      function dispatch(effect, eventName) {=0A=
        if (effect.options[eventName + 'Internal'])=0A=
          effect.options[eventName + 'Internal'](effect);=0A=
        if (effect.options[eventName])=0A=
          effect.options[eventName](effect);=0A=
      }=0A=
=0A=
      return function(pos) {=0A=
        if (this.state =3D=3D=3D "idle") {=0A=
          this.state =3D "running";=0A=
          dispatch(this, 'beforeSetup');=0A=
          if (this.setup) this.setup();=0A=
          dispatch(this, 'afterSetup');=0A=
        }=0A=
        if (this.state =3D=3D=3D "running") {=0A=
          pos =3D (this.options.transition(pos) * this.fromToDelta) + =
this.options.from;=0A=
          this.position =3D pos;=0A=
          dispatch(this, 'beforeUpdate');=0A=
          if (this.update) this.update(pos);=0A=
          dispatch(this, 'afterUpdate');=0A=
        }=0A=
      };=0A=
    })();=0A=
=0A=
    this.event('beforeStart');=0A=
    if (!this.options.sync)=0A=
      Effect.Queues.get(Object.isString(this.options.queue) ?=0A=
        'global' : this.options.queue.scope).add(this);=0A=
  },=0A=
  loop: function(timePos) {=0A=
    if (timePos >=3D this.startOn) {=0A=
      if (timePos >=3D this.finishOn) {=0A=
        this.render(1.0);=0A=
        this.cancel();=0A=
        this.event('beforeFinish');=0A=
        if (this.finish) this.finish();=0A=
        this.event('afterFinish');=0A=
        return;=0A=
      }=0A=
      var pos   =3D (timePos - this.startOn) / this.totalTime,=0A=
          frame =3D (pos * this.totalFrames).round();=0A=
      if (frame > this.currentFrame) {=0A=
        this.render(pos);=0A=
        this.currentFrame =3D frame;=0A=
      }=0A=
    }=0A=
  },=0A=
  cancel: function() {=0A=
    if (!this.options.sync)=0A=
      Effect.Queues.get(Object.isString(this.options.queue) ?=0A=
        'global' : this.options.queue.scope).remove(this);=0A=
    this.state =3D 'finished';=0A=
  },=0A=
  event: function(eventName) {=0A=
    if (this.options[eventName + 'Internal']) this.options[eventName + =
'Internal'](this);=0A=
    if (this.options[eventName]) this.options[eventName](this);=0A=
  },=0A=
  inspect: function() {=0A=
    var data =3D $H();=0A=
    for(property in this)=0A=
      if (!Object.isFunction(this[property])) data.set(property, =
this[property]);=0A=
    return '#<Effect:' + data.inspect() + ',options:' + =
$H(this.options).inspect() + '>';=0A=
  }=0A=
});=0A=
=0A=
Effect.Parallel =3D Class.create(Effect.Base, {=0A=
  initialize: function(effects) {=0A=
    this.effects =3D effects || [];=0A=
    this.start(arguments[1]);=0A=
  },=0A=
  update: function(position) {=0A=
    this.effects.invoke('render', position);=0A=
  },=0A=
  finish: function(position) {=0A=
    this.effects.each( function(effect) {=0A=
      effect.render(1.0);=0A=
      effect.cancel();=0A=
      effect.event('beforeFinish');=0A=
      if (effect.finish) effect.finish(position);=0A=
      effect.event('afterFinish');=0A=
    });=0A=
  }=0A=
});=0A=
=0A=
Effect.Tween =3D Class.create(Effect.Base, {=0A=
  initialize: function(object, from, to) {=0A=
    object =3D Object.isString(object) ? $(object) : object;=0A=
    var args =3D $A(arguments), method =3D args.last(),=0A=
      options =3D args.length =3D=3D 5 ? args[3] : null;=0A=
    this.method =3D Object.isFunction(method) ? method.bind(object) :=0A=
      Object.isFunction(object[method]) ? object[method].bind(object) :=0A=
      function(value) { object[method] =3D value };=0A=
    this.start(Object.extend({ from: from, to: to }, options || { }));=0A=
  },=0A=
  update: function(position) {=0A=
    this.method(position);=0A=
  }=0A=
});=0A=
=0A=
Effect.Event =3D Class.create(Effect.Base, {=0A=
  initialize: function() {=0A=
    this.start(Object.extend({ duration: 0 }, arguments[0] || { }));=0A=
  },=0A=
  update: Prototype.emptyFunction=0A=
});=0A=
=0A=
Effect.Opacity =3D Class.create(Effect.Base, {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    // make this work on IE on elements without 'layout'=0A=
    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))=0A=
      this.element.setStyle({zoom: 1});=0A=
    var options =3D Object.extend({=0A=
      from: this.element.getOpacity() || 0.0,=0A=
      to:   1.0=0A=
    }, arguments[1] || { });=0A=
    this.start(options);=0A=
  },=0A=
  update: function(position) {=0A=
    this.element.setOpacity(position);=0A=
  }=0A=
});=0A=
=0A=
Effect.Move =3D Class.create(Effect.Base, {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    var options =3D Object.extend({=0A=
      x:    0,=0A=
      y:    0,=0A=
      mode: 'relative'=0A=
    }, arguments[1] || { });=0A=
    this.start(options);=0A=
  },=0A=
  setup: function() {=0A=
    this.element.makePositioned();=0A=
    this.originalLeft =3D parseFloat(this.element.getStyle('left') || =
'0');=0A=
    this.originalTop  =3D parseFloat(this.element.getStyle('top')  || =
'0');=0A=
    if (this.options.mode =3D=3D 'absolute') {=0A=
      this.options.x =3D this.options.x - this.originalLeft;=0A=
      this.options.y =3D this.options.y - this.originalTop;=0A=
    }=0A=
  },=0A=
  update: function(position) {=0A=
    this.element.setStyle({=0A=
      left: (this.options.x  * position + this.originalLeft).round() + =
'px',=0A=
      top:  (this.options.y  * position + this.originalTop).round()  + =
'px'=0A=
    });=0A=
  }=0A=
});=0A=
=0A=
// for backwards compatibility=0A=
Effect.MoveBy =3D function(element, toTop, toLeft) {=0A=
  return new Effect.Move(element,=0A=
    Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));=0A=
};=0A=
=0A=
Effect.Scale =3D Class.create(Effect.Base, {=0A=
  initialize: function(element, percent) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    var options =3D Object.extend({=0A=
      scaleX: true,=0A=
      scaleY: true,=0A=
      scaleContent: true,=0A=
      scaleFromCenter: false,=0A=
      scaleMode: 'box',        // 'box' or 'contents' or { } with =
provided values=0A=
      scaleFrom: 100.0,=0A=
      scaleTo:   percent=0A=
    }, arguments[2] || { });=0A=
    this.start(options);=0A=
  },=0A=
  setup: function() {=0A=
    this.restoreAfterFinish =3D this.options.restoreAfterFinish || false;=0A=
    this.elementPositioning =3D this.element.getStyle('position');=0A=
=0A=
    this.originalStyle =3D { };=0A=
    ['top','left','width','height','fontSize'].each( function(k) {=0A=
      this.originalStyle[k] =3D this.element.style[k];=0A=
    }.bind(this));=0A=
=0A=
    this.originalTop  =3D this.element.offsetTop;=0A=
    this.originalLeft =3D this.element.offsetLeft;=0A=
=0A=
    var fontSize =3D this.element.getStyle('font-size') || '100%';=0A=
    ['em','px','%','pt'].each( function(fontSizeType) {=0A=
      if (fontSize.indexOf(fontSizeType)>0) {=0A=
        this.fontSize     =3D parseFloat(fontSize);=0A=
        this.fontSizeType =3D fontSizeType;=0A=
      }=0A=
    }.bind(this));=0A=
=0A=
    this.factor =3D (this.options.scaleTo - this.options.scaleFrom)/100;=0A=
=0A=
    this.dims =3D null;=0A=
    if (this.options.scaleMode=3D=3D'box')=0A=
      this.dims =3D [this.element.offsetHeight, =
this.element.offsetWidth];=0A=
    if (/^content/.test(this.options.scaleMode))=0A=
      this.dims =3D [this.element.scrollHeight, =
this.element.scrollWidth];=0A=
    if (!this.dims)=0A=
      this.dims =3D [this.options.scaleMode.originalHeight,=0A=
                   this.options.scaleMode.originalWidth];=0A=
  },=0A=
  update: function(position) {=0A=
    var currentScale =3D (this.options.scaleFrom/100.0) + (this.factor * =
position);=0A=
    if (this.options.scaleContent && this.fontSize)=0A=
      this.element.setStyle({fontSize: this.fontSize * currentScale + =
this.fontSizeType });=0A=
    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * =
currentScale);=0A=
  },=0A=
  finish: function(position) {=0A=
    if (this.restoreAfterFinish) =
this.element.setStyle(this.originalStyle);=0A=
  },=0A=
  setDimensions: function(height, width) {=0A=
    var d =3D { };=0A=
    if (this.options.scaleX) d.width =3D width.round() + 'px';=0A=
    if (this.options.scaleY) d.height =3D height.round() + 'px';=0A=
    if (this.options.scaleFromCenter) {=0A=
      var topd  =3D (height - this.dims[0])/2;=0A=
      var leftd =3D (width  - this.dims[1])/2;=0A=
      if (this.elementPositioning =3D=3D 'absolute') {=0A=
        if (this.options.scaleY) d.top =3D this.originalTop-topd + 'px';=0A=
        if (this.options.scaleX) d.left =3D this.originalLeft-leftd + =
'px';=0A=
      } else {=0A=
        if (this.options.scaleY) d.top =3D -topd + 'px';=0A=
        if (this.options.scaleX) d.left =3D -leftd + 'px';=0A=
      }=0A=
    }=0A=
    this.element.setStyle(d);=0A=
  }=0A=
});=0A=
=0A=
Effect.Highlight =3D Class.create(Effect.Base, {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    var options =3D Object.extend({ startcolor: '#ffff99' }, =
arguments[1] || { });=0A=
    this.start(options);=0A=
  },=0A=
  setup: function() {=0A=
    // Prevent executing on elements not in the layout flow=0A=
    if (this.element.getStyle('display')=3D=3D'none') { this.cancel(); =
return; }=0A=
    // Disable background image during the effect=0A=
    this.oldStyle =3D { };=0A=
    if (!this.options.keepBackgroundImage) {=0A=
      this.oldStyle.backgroundImage =3D =
this.element.getStyle('background-image');=0A=
      this.element.setStyle({backgroundImage: 'none'});=0A=
    }=0A=
    if (!this.options.endcolor)=0A=
      this.options.endcolor =3D =
this.element.getStyle('background-color').parseColor('#ffffff');=0A=
    if (!this.options.restorecolor)=0A=
      this.options.restorecolor =3D =
this.element.getStyle('background-color');=0A=
    // init color calculations=0A=
    this._base  =3D $R(0,2).map(function(i){ return =
parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));=0A=
    this._delta =3D $R(0,2).map(function(i){ return =
parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] =
}.bind(this));=0A=
  },=0A=
  update: function(position) {=0A=
    this.element.setStyle({backgroundColor: =
$R(0,2).inject('#',function(m,v,i){=0A=
      return =
m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); =
}.bind(this)) });=0A=
  },=0A=
  finish: function() {=0A=
    this.element.setStyle(Object.extend(this.oldStyle, {=0A=
      backgroundColor: this.options.restorecolor=0A=
    }));=0A=
  }=0A=
});=0A=
=0A=
Effect.ScrollTo =3D function(element) {=0A=
  var options =3D arguments[1] || { },=0A=
  scrollOffsets =3D document.viewport.getScrollOffsets(),=0A=
  elementOffsets =3D $(element).cumulativeOffset();=0A=
=0A=
  if (options.offset) elementOffsets[1] +=3D options.offset;=0A=
=0A=
  return new Effect.Tween(null,=0A=
    scrollOffsets.top,=0A=
    elementOffsets[1],=0A=
    options,=0A=
    function(p){ scrollTo(scrollOffsets.left, p.round()); }=0A=
  );=0A=
};=0A=
=0A=
/* ------------- combination effects ------------- */=0A=
=0A=
Effect.Fade =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldOpacity =3D element.getInlineOpacity();=0A=
  var options =3D Object.extend({=0A=
    from: element.getOpacity() || 1.0,=0A=
    to:   0.0,=0A=
    afterFinishInternal: function(effect) {=0A=
      if (effect.options.to!=3D0) return;=0A=
      effect.element.hide().setStyle({opacity: oldOpacity});=0A=
    }=0A=
  }, arguments[1] || { });=0A=
  return new Effect.Opacity(element,options);=0A=
};=0A=
=0A=
Effect.Appear =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
  from: (element.getStyle('display') =3D=3D 'none' ? 0.0 : =
element.getOpacity() || 0.0),=0A=
  to:   1.0,=0A=
  // force Safari to render floated elements properly=0A=
  afterFinishInternal: function(effect) {=0A=
    effect.element.forceRerendering();=0A=
  },=0A=
  beforeSetup: function(effect) {=0A=
    effect.element.setOpacity(effect.options.from).show();=0A=
  }}, arguments[1] || { });=0A=
  return new Effect.Opacity(element,options);=0A=
};=0A=
=0A=
Effect.Puff =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D {=0A=
    opacity: element.getInlineOpacity(),=0A=
    position: element.getStyle('position'),=0A=
    top:  element.style.top,=0A=
    left: element.style.left,=0A=
    width: element.style.width,=0A=
    height: element.style.height=0A=
  };=0A=
  return new Effect.Parallel(=0A=
   [ new Effect.Scale(element, 200,=0A=
      { sync: true, scaleFromCenter: true, scaleContent: true, =
restoreAfterFinish: true }),=0A=
     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],=0A=
     Object.extend({ duration: 1.0,=0A=
      beforeSetupInternal: function(effect) {=0A=
        Position.absolutize(effect.effects[0].element);=0A=
      },=0A=
      afterFinishInternal: function(effect) {=0A=
         effect.effects[0].element.hide().setStyle(oldStyle); }=0A=
     }, arguments[1] || { })=0A=
   );=0A=
};=0A=
=0A=
Effect.BlindUp =3D function(element) {=0A=
  element =3D $(element);=0A=
  element.makeClipping();=0A=
  return new Effect.Scale(element, 0,=0A=
    Object.extend({ scaleContent: false,=0A=
      scaleX: false,=0A=
      restoreAfterFinish: true,=0A=
      afterFinishInternal: function(effect) {=0A=
        effect.element.hide().undoClipping();=0A=
      }=0A=
    }, arguments[1] || { })=0A=
  );=0A=
};=0A=
=0A=
Effect.BlindDown =3D function(element) {=0A=
  element =3D $(element);=0A=
  var elementDimensions =3D element.getDimensions();=0A=
  return new Effect.Scale(element, 100, Object.extend({=0A=
    scaleContent: false,=0A=
    scaleX: false,=0A=
    scaleFrom: 0,=0A=
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: =
elementDimensions.width},=0A=
    restoreAfterFinish: true,=0A=
    afterSetup: function(effect) {=0A=
      effect.element.makeClipping().setStyle({height: '0px'}).show();=0A=
    },=0A=
    afterFinishInternal: function(effect) {=0A=
      effect.element.undoClipping();=0A=
    }=0A=
  }, arguments[1] || { }));=0A=
};=0A=
=0A=
Effect.SwitchOff =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldOpacity =3D element.getInlineOpacity();=0A=
  return new Effect.Appear(element, Object.extend({=0A=
    duration: 0.4,=0A=
    from: 0,=0A=
    transition: Effect.Transitions.flicker,=0A=
    afterFinishInternal: function(effect) {=0A=
      new Effect.Scale(effect.element, 1, {=0A=
        duration: 0.3, scaleFromCenter: true,=0A=
        scaleX: false, scaleContent: false, restoreAfterFinish: true,=0A=
        beforeSetup: function(effect) {=0A=
          effect.element.makePositioned().makeClipping();=0A=
        },=0A=
        afterFinishInternal: function(effect) {=0A=
          =
effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: =
oldOpacity});=0A=
        }=0A=
      });=0A=
    }=0A=
  }, arguments[1] || { }));=0A=
};=0A=
=0A=
Effect.DropOut =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D {=0A=
    top: element.getStyle('top'),=0A=
    left: element.getStyle('left'),=0A=
    opacity: element.getInlineOpacity() };=0A=
  return new Effect.Parallel(=0A=
    [ new Effect.Move(element, {x: 0, y: 100, sync: true }),=0A=
      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],=0A=
    Object.extend(=0A=
      { duration: 0.5,=0A=
        beforeSetup: function(effect) {=0A=
          effect.effects[0].element.makePositioned();=0A=
        },=0A=
        afterFinishInternal: function(effect) {=0A=
          =
effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);=0A=
        }=0A=
      }, arguments[1] || { }));=0A=
};=0A=
=0A=
Effect.Shake =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
    distance: 20,=0A=
    duration: 0.5=0A=
  }, arguments[1] || {});=0A=
  var distance =3D parseFloat(options.distance);=0A=
  var split =3D parseFloat(options.duration) / 10.0;=0A=
  var oldStyle =3D {=0A=
    top: element.getStyle('top'),=0A=
    left: element.getStyle('left') };=0A=
    return new Effect.Move(element,=0A=
      { x:  distance, y: 0, duration: split, afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x: -distance, y: 0, duration: split, afterFinishInternal: =
function(effect) {=0A=
        effect.element.undoPositioned().setStyle(oldStyle);=0A=
  }}); }}); }}); }}); }}); }});=0A=
};=0A=
=0A=
Effect.SlideDown =3D function(element) {=0A=
  element =3D $(element).cleanWhitespace();=0A=
  // SlideDown need to have the content of the element wrapped in a =
container element with fixed height!=0A=
  var oldInnerBottom =3D element.down().getStyle('bottom');=0A=
  var elementDimensions =3D element.getDimensions();=0A=
  return new Effect.Scale(element, 100, Object.extend({=0A=
    scaleContent: false,=0A=
    scaleX: false,=0A=
    scaleFrom: window.opera ? 0 : 1,=0A=
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: =
elementDimensions.width},=0A=
    restoreAfterFinish: true,=0A=
    afterSetup: function(effect) {=0A=
      effect.element.makePositioned();=0A=
      effect.element.down().makePositioned();=0A=
      if (window.opera) effect.element.setStyle({top: ''});=0A=
      effect.element.makeClipping().setStyle({height: '0px'}).show();=0A=
    },=0A=
    afterUpdateInternal: function(effect) {=0A=
      effect.element.down().setStyle({bottom:=0A=
        (effect.dims[0] - effect.element.clientHeight) + 'px' });=0A=
    },=0A=
    afterFinishInternal: function(effect) {=0A=
      effect.element.undoClipping().undoPositioned();=0A=
      effect.element.down().undoPositioned().setStyle({bottom: =
oldInnerBottom}); }=0A=
    }, arguments[1] || { })=0A=
  );=0A=
};=0A=
=0A=
Effect.SlideUp =3D function(element) {=0A=
  element =3D $(element).cleanWhitespace();=0A=
  var oldInnerBottom =3D element.down().getStyle('bottom');=0A=
  var elementDimensions =3D element.getDimensions();=0A=
  return new Effect.Scale(element, window.opera ? 0 : 1,=0A=
   Object.extend({ scaleContent: false,=0A=
    scaleX: false,=0A=
    scaleMode: 'box',=0A=
    scaleFrom: 100,=0A=
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: =
elementDimensions.width},=0A=
    restoreAfterFinish: true,=0A=
    afterSetup: function(effect) {=0A=
      effect.element.makePositioned();=0A=
      effect.element.down().makePositioned();=0A=
      if (window.opera) effect.element.setStyle({top: ''});=0A=
      effect.element.makeClipping().show();=0A=
    },=0A=
    afterUpdateInternal: function(effect) {=0A=
      effect.element.down().setStyle({bottom:=0A=
        (effect.dims[0] - effect.element.clientHeight) + 'px' });=0A=
    },=0A=
    afterFinishInternal: function(effect) {=0A=
      effect.element.hide().undoClipping().undoPositioned();=0A=
      effect.element.down().undoPositioned().setStyle({bottom: =
oldInnerBottom});=0A=
    }=0A=
   }, arguments[1] || { })=0A=
  );=0A=
};=0A=
=0A=
// Bug in opera makes the TD containing this element expand for a =
instance after finish=0A=
Effect.Squish =3D function(element) {=0A=
  return new Effect.Scale(element, window.opera ? 1 : 0, {=0A=
    restoreAfterFinish: true,=0A=
    beforeSetup: function(effect) {=0A=
      effect.element.makeClipping();=0A=
    },=0A=
    afterFinishInternal: function(effect) {=0A=
      effect.element.hide().undoClipping();=0A=
    }=0A=
  });=0A=
};=0A=
=0A=
Effect.Grow =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
    direction: 'center',=0A=
    moveTransition: Effect.Transitions.sinoidal,=0A=
    scaleTransition: Effect.Transitions.sinoidal,=0A=
    opacityTransition: Effect.Transitions.full=0A=
  }, arguments[1] || { });=0A=
  var oldStyle =3D {=0A=
    top: element.style.top,=0A=
    left: element.style.left,=0A=
    height: element.style.height,=0A=
    width: element.style.width,=0A=
    opacity: element.getInlineOpacity() };=0A=
=0A=
  var dims =3D element.getDimensions();=0A=
  var initialMoveX, initialMoveY;=0A=
  var moveX, moveY;=0A=
=0A=
  switch (options.direction) {=0A=
    case 'top-left':=0A=
      initialMoveX =3D initialMoveY =3D moveX =3D moveY =3D 0;=0A=
      break;=0A=
    case 'top-right':=0A=
      initialMoveX =3D dims.width;=0A=
      initialMoveY =3D moveY =3D 0;=0A=
      moveX =3D -dims.width;=0A=
      break;=0A=
    case 'bottom-left':=0A=
      initialMoveX =3D moveX =3D 0;=0A=
      initialMoveY =3D dims.height;=0A=
      moveY =3D -dims.height;=0A=
      break;=0A=
    case 'bottom-right':=0A=
      initialMoveX =3D dims.width;=0A=
      initialMoveY =3D dims.height;=0A=
      moveX =3D -dims.width;=0A=
      moveY =3D -dims.height;=0A=
      break;=0A=
    case 'center':=0A=
      initialMoveX =3D dims.width / 2;=0A=
      initialMoveY =3D dims.height / 2;=0A=
      moveX =3D -dims.width / 2;=0A=
      moveY =3D -dims.height / 2;=0A=
      break;=0A=
  }=0A=
=0A=
  return new Effect.Move(element, {=0A=
    x: initialMoveX,=0A=
    y: initialMoveY,=0A=
    duration: 0.01,=0A=
    beforeSetup: function(effect) {=0A=
      effect.element.hide().makeClipping().makePositioned();=0A=
    },=0A=
    afterFinishInternal: function(effect) {=0A=
      new Effect.Parallel(=0A=
        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, =
from: 0.0, transition: options.opacityTransition }),=0A=
          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: =
true, transition: options.moveTransition }),=0A=
          new Effect.Scale(effect.element, 100, {=0A=
            scaleMode: { originalHeight: dims.height, originalWidth: =
dims.width },=0A=
            sync: true, scaleFrom: window.opera ? 1 : 0, transition: =
options.scaleTransition, restoreAfterFinish: true})=0A=
        ], Object.extend({=0A=
             beforeSetup: function(effect) {=0A=
               effect.effects[0].element.setStyle({height: =
'0px'}).show();=0A=
             },=0A=
             afterFinishInternal: function(effect) {=0A=
               =
effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldSty=
le);=0A=
             }=0A=
           }, options)=0A=
      );=0A=
    }=0A=
  });=0A=
};=0A=
=0A=
Effect.Shrink =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
    direction: 'center',=0A=
    moveTransition: Effect.Transitions.sinoidal,=0A=
    scaleTransition: Effect.Transitions.sinoidal,=0A=
    opacityTransition: Effect.Transitions.none=0A=
  }, arguments[1] || { });=0A=
  var oldStyle =3D {=0A=
    top: element.style.top,=0A=
    left: element.style.left,=0A=
    height: element.style.height,=0A=
    width: element.style.width,=0A=
    opacity: element.getInlineOpacity() };=0A=
=0A=
  var dims =3D element.getDimensions();=0A=
  var moveX, moveY;=0A=
=0A=
  switch (options.direction) {=0A=
    case 'top-left':=0A=
      moveX =3D moveY =3D 0;=0A=
      break;=0A=
    case 'top-right':=0A=
      moveX =3D dims.width;=0A=
      moveY =3D 0;=0A=
      break;=0A=
    case 'bottom-left':=0A=
      moveX =3D 0;=0A=
      moveY =3D dims.height;=0A=
      break;=0A=
    case 'bottom-right':=0A=
      moveX =3D dims.width;=0A=
      moveY =3D dims.height;=0A=
      break;=0A=
    case 'center':=0A=
      moveX =3D dims.width / 2;=0A=
      moveY =3D dims.height / 2;=0A=
      break;=0A=
  }=0A=
=0A=
  return new Effect.Parallel(=0A=
    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, =
transition: options.opacityTransition }),=0A=
      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, =
transition: options.scaleTransition, restoreAfterFinish: true}),=0A=
      new Effect.Move(element, { x: moveX, y: moveY, sync: true, =
transition: options.moveTransition })=0A=
    ], Object.extend({=0A=
         beforeStartInternal: function(effect) {=0A=
           effect.effects[0].element.makePositioned().makeClipping();=0A=
         },=0A=
         afterFinishInternal: function(effect) {=0A=
           =
effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle=
(oldStyle); }=0A=
       }, options)=0A=
  );=0A=
};=0A=
=0A=
Effect.Pulsate =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options    =3D arguments[1] || { },=0A=
    oldOpacity =3D element.getInlineOpacity(),=0A=
    transition =3D options.transition || Effect.Transitions.linear,=0A=
    reverser   =3D function(pos){=0A=
      return 1 - =
transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);=0A=
    };=0A=
=0A=
  return new Effect.Opacity(element,=0A=
    Object.extend(Object.extend({  duration: 2.0, from: 0,=0A=
      afterFinishInternal: function(effect) { =
effect.element.setStyle({opacity: oldOpacity}); }=0A=
    }, options), {transition: reverser}));=0A=
};=0A=
=0A=
Effect.Fold =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D {=0A=
    top: element.style.top,=0A=
    left: element.style.left,=0A=
    width: element.style.width,=0A=
    height: element.style.height };=0A=
  element.makeClipping();=0A=
  return new Effect.Scale(element, 5, Object.extend({=0A=
    scaleContent: false,=0A=
    scaleX: false,=0A=
    afterFinishInternal: function(effect) {=0A=
    new Effect.Scale(element, 1, {=0A=
      scaleContent: false,=0A=
      scaleY: false,=0A=
      afterFinishInternal: function(effect) {=0A=
        effect.element.hide().undoClipping().setStyle(oldStyle);=0A=
      } });=0A=
  }}, arguments[1] || { }));=0A=
};=0A=
=0A=
Effect.Morph =3D Class.create(Effect.Base, {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    var options =3D Object.extend({=0A=
      style: { }=0A=
    }, arguments[1] || { });=0A=
=0A=
    if (!Object.isString(options.style)) this.style =3D =
$H(options.style);=0A=
    else {=0A=
      if (options.style.include(':'))=0A=
        this.style =3D options.style.parseStyle();=0A=
      else {=0A=
        this.element.addClassName(options.style);=0A=
        this.style =3D $H(this.element.getStyles());=0A=
        this.element.removeClassName(options.style);=0A=
        var css =3D this.element.getStyles();=0A=
        this.style =3D this.style.reject(function(style) {=0A=
          return style.value =3D=3D css[style.key];=0A=
        });=0A=
        options.afterFinishInternal =3D function(effect) {=0A=
          effect.element.addClassName(effect.options.style);=0A=
          effect.transforms.each(function(transform) {=0A=
            effect.element.style[transform.style] =3D '';=0A=
          });=0A=
        };=0A=
      }=0A=
    }=0A=
    this.start(options);=0A=
  },=0A=
=0A=
  setup: function(){=0A=
    function parseColor(color){=0A=
      if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) =
color =3D '#ffffff';=0A=
      color =3D color.parseColor();=0A=
      return $R(0,2).map(function(i){=0A=
        return parseInt( color.slice(i*2+1,i*2+3), 16 );=0A=
      });=0A=
    }=0A=
    this.transforms =3D this.style.map(function(pair){=0A=
      var property =3D pair[0], value =3D pair[1], unit =3D null;=0A=
=0A=
      if (value.parseColor('#zzzzzz') !=3D '#zzzzzz') {=0A=
        value =3D value.parseColor();=0A=
        unit  =3D 'color';=0A=
      } else if (property =3D=3D 'opacity') {=0A=
        value =3D parseFloat(value);=0A=
        if (Prototype.Browser.IE && =
(!this.element.currentStyle.hasLayout))=0A=
          this.element.setStyle({zoom: 1});=0A=
      } else if (Element.CSS_LENGTH.test(value)) {=0A=
          var components =3D value.match(/^([\+\-]?[0-9\.]+)(.*)$/);=0A=
          value =3D parseFloat(components[1]);=0A=
          unit =3D (components.length =3D=3D 3) ? components[2] : null;=0A=
      }=0A=
=0A=
      var originalValue =3D this.element.getStyle(property);=0A=
      return {=0A=
        style: property.camelize(),=0A=
        originalValue: unit=3D=3D'color' ? parseColor(originalValue) : =
parseFloat(originalValue || 0),=0A=
        targetValue: unit=3D=3D'color' ? parseColor(value) : value,=0A=
        unit: unit=0A=
      };=0A=
    }.bind(this)).reject(function(transform){=0A=
      return (=0A=
        (transform.originalValue =3D=3D transform.targetValue) ||=0A=
        (=0A=
          transform.unit !=3D 'color' &&=0A=
          (isNaN(transform.originalValue) || =
isNaN(transform.targetValue))=0A=
        )=0A=
      );=0A=
    });=0A=
  },=0A=
  update: function(position) {=0A=
    var style =3D { }, transform, i =3D this.transforms.length;=0A=
    while(i--)=0A=
      style[(transform =3D this.transforms[i]).style] =3D=0A=
        transform.unit=3D=3D'color' ? '#'+=0A=
          (Math.round(transform.originalValue[0]+=0A=
            =
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorP=
art() +=0A=
          (Math.round(transform.originalValue[1]+=0A=
            =
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorP=
art() +=0A=
          (Math.round(transform.originalValue[2]+=0A=
            =
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorP=
art() :=0A=
        (transform.originalValue +=0A=
          (transform.targetValue - transform.originalValue) * =
position).toFixed(3) +=0A=
            (transform.unit =3D=3D=3D null ? '' : transform.unit);=0A=
    this.element.setStyle(style, true);=0A=
  }=0A=
});=0A=
=0A=
Effect.Transform =3D Class.create({=0A=
  initialize: function(tracks){=0A=
    this.tracks  =3D [];=0A=
    this.options =3D arguments[1] || { };=0A=
    this.addTracks(tracks);=0A=
  },=0A=
  addTracks: function(tracks){=0A=
    tracks.each(function(track){=0A=
      track =3D $H(track);=0A=
      var data =3D track.values().first();=0A=
      this.tracks.push($H({=0A=
        ids:     track.keys().first(),=0A=
        effect:  Effect.Morph,=0A=
        options: { style: data }=0A=
      }));=0A=
    }.bind(this));=0A=
    return this;=0A=
  },=0A=
  play: function(){=0A=
    return new Effect.Parallel(=0A=
      this.tracks.map(function(track){=0A=
        var ids =3D track.get('ids'), effect =3D track.get('effect'), =
options =3D track.get('options');=0A=
        var elements =3D [$(ids) || $$(ids)].flatten();=0A=
        return elements.map(function(e){ return new effect(e, =
Object.extend({ sync:true }, options)) });=0A=
      }).flatten(),=0A=
      this.options=0A=
    );=0A=
  }=0A=
});=0A=
=0A=
Element.CSS_PROPERTIES =3D $w(=0A=
  'backgroundColor backgroundPosition borderBottomColor =
borderBottomStyle ' +=0A=
  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +=0A=
  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +=0A=
  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +=0A=
  'fontSize fontWeight height left letterSpacing lineHeight ' +=0A=
  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight =
'+=0A=
  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +=0A=
  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +=0A=
  'right textIndent top width wordSpacing zIndex');=0A=
=0A=
Element.CSS_LENGTH =3D =
/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;=0A=
=0A=
String.__parseStyleElement =3D document.createElement('div');=0A=
String.prototype.parseStyle =3D function(){=0A=
  var style, styleRules =3D $H();=0A=
  if (Prototype.Browser.WebKit)=0A=
    style =3D new Element('div',{style:this}).style;=0A=
  else {=0A=
    String.__parseStyleElement.innerHTML =3D '<div style=3D"' + this + =
'"></div>';=0A=
    style =3D String.__parseStyleElement.childNodes[0].style;=0A=
  }=0A=
=0A=
  Element.CSS_PROPERTIES.each(function(property){=0A=
    if (style[property]) styleRules.set(property, style[property]);=0A=
  });=0A=
=0A=
  if (Prototype.Browser.IE && this.include('opacity'))=0A=
    styleRules.set('opacity', =
this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);=0A=
=0A=
  return styleRules;=0A=
};=0A=
=0A=
if (document.defaultView && document.defaultView.getComputedStyle) {=0A=
  Element.getStyles =3D function(element) {=0A=
    var css =3D document.defaultView.getComputedStyle($(element), null);=0A=
    return Element.CSS_PROPERTIES.inject({ }, function(styles, property) =
{=0A=
      styles[property] =3D css[property];=0A=
      return styles;=0A=
    });=0A=
  };=0A=
} else {=0A=
  Element.getStyles =3D function(element) {=0A=
    element =3D $(element);=0A=
    var css =3D element.currentStyle, styles;=0A=
    styles =3D Element.CSS_PROPERTIES.inject({ }, function(results, =
property) {=0A=
      results[property] =3D css[property];=0A=
      return results;=0A=
    });=0A=
    if (!styles.opacity) styles.opacity =3D element.getOpacity();=0A=
    return styles;=0A=
  };=0A=
}=0A=
=0A=
Effect.Methods =3D {=0A=
  morph: function(element, style) {=0A=
    element =3D $(element);=0A=
    new Effect.Morph(element, Object.extend({ style: style }, =
arguments[2] || { }));=0A=
    return element;=0A=
  },=0A=
  visualEffect: function(element, effect, options) {=0A=
    element =3D $(element);=0A=
    var s =3D effect.dasherize().camelize(), klass =3D =
s.charAt(0).toUpperCase() + s.substring(1);=0A=
    new Effect[klass](element, options);=0A=
    return element;=0A=
  },=0A=
  highlight: function(element, options) {=0A=
    element =3D $(element);=0A=
    new Effect.Highlight(element, options);=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+=0A=
  'pulsate shake puff squish switchOff dropOut').each(=0A=
  function(effect) {=0A=
    Effect.Methods[effect] =3D function(element, options){=0A=
      element =3D $(element);=0A=
      Effect[effect.charAt(0).toUpperCase() + =
effect.substring(1)](element, options);=0A=
      return element;=0A=
    };=0A=
  }=0A=
);=0A=
=0A=
$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes =
collectTextNodesIgnoreClass getStyles').each(=0A=
  function(f) { Effect.Methods[f] =3D Element[f]; }=0A=
);=0A=
=0A=
Element.addMethods(Effect.Methods);
------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/dragdrop.js

// script.aculo.us dragdrop.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009=0A=
=0A=
// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
//=0A=
// script.aculo.us is freely distributable under the terms of an =
MIT-style license.=0A=
// For details, see the script.aculo.us web site: http://script.aculo.us/=0A=
=0A=
if(Object.isUndefined(Effect))=0A=
  throw("dragdrop.js requires including script.aculo.us' effects.js =
library");=0A=
=0A=
var Droppables =3D {=0A=
  drops: [],=0A=
=0A=
  remove: function(element) {=0A=
    this.drops =3D this.drops.reject(function(d) { return =
d.element=3D=3D$(element) });=0A=
  },=0A=
=0A=
  add: function(element) {=0A=
    element =3D $(element);=0A=
    var options =3D Object.extend({=0A=
      greedy:     true,=0A=
      hoverclass: null,=0A=
      tree:       false=0A=
    }, arguments[1] || { });=0A=
=0A=
    // cache containers=0A=
    if(options.containment) {=0A=
      options._containers =3D [];=0A=
      var containment =3D options.containment;=0A=
      if(Object.isArray(containment)) {=0A=
        containment.each( function(c) { options._containers.push($(c)) =
});=0A=
      } else {=0A=
        options._containers.push($(containment));=0A=
      }=0A=
    }=0A=
=0A=
    if(options.accept) options.accept =3D [options.accept].flatten();=0A=
=0A=
    Element.makePositioned(element); // fix IE=0A=
    options.element =3D element;=0A=
=0A=
    this.drops.push(options);=0A=
  },=0A=
=0A=
  findDeepestChild: function(drops) {=0A=
    deepest =3D drops[0];=0A=
=0A=
    for (i =3D 1; i < drops.length; ++i)=0A=
      if (Element.isParent(drops[i].element, deepest.element))=0A=
        deepest =3D drops[i];=0A=
=0A=
    return deepest;=0A=
  },=0A=
=0A=
  isContained: function(element, drop) {=0A=
    var containmentNode;=0A=
    if(drop.tree) {=0A=
      containmentNode =3D element.treeNode;=0A=
    } else {=0A=
      containmentNode =3D element.parentNode;=0A=
    }=0A=
    return drop._containers.detect(function(c) { return containmentNode =
=3D=3D c });=0A=
  },=0A=
=0A=
  isAffected: function(point, element, drop) {=0A=
    return (=0A=
      (drop.element!=3Delement) &&=0A=
      ((!drop._containers) ||=0A=
        this.isContained(element, drop)) &&=0A=
      ((!drop.accept) ||=0A=
        (Element.classNames(element).detect(=0A=
          function(v) { return drop.accept.include(v) } ) )) &&=0A=
      Position.within(drop.element, point[0], point[1]) );=0A=
  },=0A=
=0A=
  deactivate: function(drop) {=0A=
    if(drop.hoverclass)=0A=
      Element.removeClassName(drop.element, drop.hoverclass);=0A=
    this.last_active =3D null;=0A=
  },=0A=
=0A=
  activate: function(drop) {=0A=
    if(drop.hoverclass)=0A=
      Element.addClassName(drop.element, drop.hoverclass);=0A=
    this.last_active =3D drop;=0A=
  },=0A=
=0A=
  show: function(point, element) {=0A=
    if(!this.drops.length) return;=0A=
    var drop, affected =3D [];=0A=
=0A=
    this.drops.each( function(drop) {=0A=
      if(Droppables.isAffected(point, element, drop))=0A=
        affected.push(drop);=0A=
    });=0A=
=0A=
    if(affected.length>0)=0A=
      drop =3D Droppables.findDeepestChild(affected);=0A=
=0A=
    if(this.last_active && this.last_active !=3D drop) =
this.deactivate(this.last_active);=0A=
    if (drop) {=0A=
      Position.within(drop.element, point[0], point[1]);=0A=
      if(drop.onHover)=0A=
        drop.onHover(element, drop.element, =
Position.overlap(drop.overlap, drop.element));=0A=
=0A=
      if (drop !=3D this.last_active) Droppables.activate(drop);=0A=
    }=0A=
  },=0A=
=0A=
  fire: function(event, element) {=0A=
    if(!this.last_active) return;=0A=
    Position.prepare();=0A=
=0A=
    if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], =
element, this.last_active))=0A=
      if (this.last_active.onDrop) {=0A=
        this.last_active.onDrop(element, this.last_active.element, =
event);=0A=
        return true;=0A=
      }=0A=
  },=0A=
=0A=
  reset: function() {=0A=
    if(this.last_active)=0A=
      this.deactivate(this.last_active);=0A=
  }=0A=
};=0A=
=0A=
var Draggables =3D {=0A=
  drags: [],=0A=
  observers: [],=0A=
=0A=
  register: function(draggable) {=0A=
    if(this.drags.length =3D=3D 0) {=0A=
      this.eventMouseUp   =3D this.endDrag.bindAsEventListener(this);=0A=
      this.eventMouseMove =3D this.updateDrag.bindAsEventListener(this);=0A=
      this.eventKeypress  =3D this.keyPress.bindAsEventListener(this);=0A=
=0A=
      Event.observe(document, "mouseup", this.eventMouseUp);=0A=
      Event.observe(document, "mousemove", this.eventMouseMove);=0A=
      Event.observe(document, "keypress", this.eventKeypress);=0A=
    }=0A=
    this.drags.push(draggable);=0A=
  },=0A=
=0A=
  unregister: function(draggable) {=0A=
    this.drags =3D this.drags.reject(function(d) { return =
d=3D=3Ddraggable });=0A=
    if(this.drags.length =3D=3D 0) {=0A=
      Event.stopObserving(document, "mouseup", this.eventMouseUp);=0A=
      Event.stopObserving(document, "mousemove", this.eventMouseMove);=0A=
      Event.stopObserving(document, "keypress", this.eventKeypress);=0A=
    }=0A=
  },=0A=
=0A=
  activate: function(draggable) {=0A=
    if(draggable.options.delay) {=0A=
      this._timeout =3D setTimeout(function() {=0A=
        Draggables._timeout =3D null;=0A=
        window.focus();=0A=
        Draggables.activeDraggable =3D draggable;=0A=
      }.bind(this), draggable.options.delay);=0A=
    } else {=0A=
      window.focus(); // allows keypress events if window isn't =
currently focused, fails for Safari=0A=
      this.activeDraggable =3D draggable;=0A=
    }=0A=
  },=0A=
=0A=
  deactivate: function() {=0A=
    this.activeDraggable =3D null;=0A=
  },=0A=
=0A=
  updateDrag: function(event) {=0A=
    if(!this.activeDraggable) return;=0A=
    var pointer =3D [Event.pointerX(event), Event.pointerY(event)];=0A=
    // Mozilla-based browsers fire successive mousemove events with=0A=
    // the same coordinates, prevent needless redrawing (moz bug?)=0A=
    if(this._lastPointer && (this._lastPointer.inspect() =3D=3D =
pointer.inspect())) return;=0A=
    this._lastPointer =3D pointer;=0A=
=0A=
    this.activeDraggable.updateDrag(event, pointer);=0A=
  },=0A=
=0A=
  endDrag: function(event) {=0A=
    if(this._timeout) {=0A=
      clearTimeout(this._timeout);=0A=
      this._timeout =3D null;=0A=
    }=0A=
    if(!this.activeDraggable) return;=0A=
    this._lastPointer =3D null;=0A=
    this.activeDraggable.endDrag(event);=0A=
    this.activeDraggable =3D null;=0A=
  },=0A=
=0A=
  keyPress: function(event) {=0A=
    if(this.activeDraggable)=0A=
      this.activeDraggable.keyPress(event);=0A=
  },=0A=
=0A=
  addObserver: function(observer) {=0A=
    this.observers.push(observer);=0A=
    this._cacheObserverCallbacks();=0A=
  },=0A=
=0A=
  removeObserver: function(element) {  // element instead of observer =
fixes mem leaks=0A=
    this.observers =3D this.observers.reject( function(o) { return =
o.element=3D=3Delement });=0A=
    this._cacheObserverCallbacks();=0A=
  },=0A=
=0A=
  notify: function(eventName, draggable, event) {  // 'onStart', =
'onEnd', 'onDrag'=0A=
    if(this[eventName+'Count'] > 0)=0A=
      this.observers.each( function(o) {=0A=
        if(o[eventName]) o[eventName](eventName, draggable, event);=0A=
      });=0A=
    if(draggable.options[eventName]) =
draggable.options[eventName](draggable, event);=0A=
  },=0A=
=0A=
  _cacheObserverCallbacks: function() {=0A=
    ['onStart','onEnd','onDrag'].each( function(eventName) {=0A=
      Draggables[eventName+'Count'] =3D Draggables.observers.select(=0A=
        function(o) { return o[eventName]; }=0A=
      ).length;=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Draggable =3D Class.create({=0A=
  initialize: function(element) {=0A=
    var defaults =3D {=0A=
      handle: false,=0A=
      reverteffect: function(element, top_offset, left_offset) {=0A=
        var dur =3D =
Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;=0A=
        new Effect.Move(element, { x: -left_offset, y: -top_offset, =
duration: dur,=0A=
          queue: {scope:'_draggable', position:'end'}=0A=
        });=0A=
      },=0A=
      endeffect: function(element) {=0A=
        var toOpacity =3D Object.isNumber(element._opacity) ? =
element._opacity : 1.0;=0A=
        new Effect.Opacity(element, {duration:0.2, from:0.7, =
to:toOpacity,=0A=
          queue: {scope:'_draggable', position:'end'},=0A=
          afterFinish: function(){=0A=
            Draggable._dragging[element] =3D false=0A=
          }=0A=
        });=0A=
      },=0A=
      zindex: 1000,=0A=
      revert: false,=0A=
      quiet: false,=0A=
      scroll: false,=0A=
      scrollSensitivity: 20,=0A=
      scrollSpeed: 15,=0A=
      snap: false,  // false, or xy or [x,y] or function(x,y){ return =
[x,y] }=0A=
      delay: 0=0A=
    };=0A=
=0A=
    if(!arguments[1] || Object.isUndefined(arguments[1].endeffect))=0A=
      Object.extend(defaults, {=0A=
        starteffect: function(element) {=0A=
          element._opacity =3D Element.getOpacity(element);=0A=
          Draggable._dragging[element] =3D true;=0A=
          new Effect.Opacity(element, {duration:0.2, =
from:element._opacity, to:0.7});=0A=
        }=0A=
      });=0A=
=0A=
    var options =3D Object.extend(defaults, arguments[1] || { });=0A=
=0A=
    this.element =3D $(element);=0A=
=0A=
    if(options.handle && Object.isString(options.handle))=0A=
      this.handle =3D this.element.down('.'+options.handle, 0);=0A=
=0A=
    if(!this.handle) this.handle =3D $(options.handle);=0A=
    if(!this.handle) this.handle =3D this.element;=0A=
=0A=
    if(options.scroll && !options.scroll.scrollTo && =
!options.scroll.outerHTML) {=0A=
      options.scroll =3D $(options.scroll);=0A=
      this._isScrollChild =3D Element.childOf(this.element, =
options.scroll);=0A=
    }=0A=
=0A=
    Element.makePositioned(this.element); // fix IE=0A=
=0A=
    this.options  =3D options;=0A=
    this.dragging =3D false;=0A=
=0A=
    this.eventMouseDown =3D this.initDrag.bindAsEventListener(this);=0A=
    Event.observe(this.handle, "mousedown", this.eventMouseDown);=0A=
=0A=
    Draggables.register(this);=0A=
  },=0A=
=0A=
  destroy: function() {=0A=
    Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);=0A=
    Draggables.unregister(this);=0A=
  },=0A=
=0A=
  currentDelta: function() {=0A=
    return([=0A=
      parseInt(Element.getStyle(this.element,'left') || '0'),=0A=
      parseInt(Element.getStyle(this.element,'top') || '0')]);=0A=
  },=0A=
=0A=
  initDrag: function(event) {=0A=
    if(!Object.isUndefined(Draggable._dragging[this.element]) &&=0A=
      Draggable._dragging[this.element]) return;=0A=
    if(Event.isLeftClick(event)) {=0A=
      // abort on form elements, fixes a Firefox issue=0A=
      var src =3D Event.element(event);=0A=
      if((tag_name =3D src.tagName.toUpperCase()) && (=0A=
        tag_name=3D=3D'INPUT' ||=0A=
        tag_name=3D=3D'SELECT' ||=0A=
        tag_name=3D=3D'OPTION' ||=0A=
        tag_name=3D=3D'BUTTON' ||=0A=
        tag_name=3D=3D'TEXTAREA')) return;=0A=
=0A=
      var pointer =3D [Event.pointerX(event), Event.pointerY(event)];=0A=
      var pos     =3D this.element.cumulativeOffset();=0A=
      this.offset =3D [0,1].map( function(i) { return (pointer[i] - =
pos[i]) });=0A=
=0A=
      Draggables.activate(this);=0A=
      Event.stop(event);=0A=
    }=0A=
  },=0A=
=0A=
  startDrag: function(event) {=0A=
    this.dragging =3D true;=0A=
    if(!this.delta)=0A=
      this.delta =3D this.currentDelta();=0A=
=0A=
    if(this.options.zindex) {=0A=
      this.originalZ =3D =
parseInt(Element.getStyle(this.element,'z-index') || 0);=0A=
      this.element.style.zIndex =3D this.options.zindex;=0A=
    }=0A=
=0A=
    if(this.options.ghosting) {=0A=
      this._clone =3D this.element.cloneNode(true);=0A=
      this._originallyAbsolute =3D (this.element.getStyle('position') =
=3D=3D 'absolute');=0A=
      if (!this._originallyAbsolute)=0A=
        Position.absolutize(this.element);=0A=
      this.element.parentNode.insertBefore(this._clone, this.element);=0A=
    }=0A=
=0A=
    if(this.options.scroll) {=0A=
      if (this.options.scroll =3D=3D window) {=0A=
        var where =3D this._getWindowScroll(this.options.scroll);=0A=
        this.originalScrollLeft =3D where.left;=0A=
        this.originalScrollTop =3D where.top;=0A=
      } else {=0A=
        this.originalScrollLeft =3D this.options.scroll.scrollLeft;=0A=
        this.originalScrollTop =3D this.options.scroll.scrollTop;=0A=
      }=0A=
    }=0A=
=0A=
    Draggables.notify('onStart', this, event);=0A=
=0A=
    if(this.options.starteffect) this.options.starteffect(this.element);=0A=
  },=0A=
=0A=
  updateDrag: function(event, pointer) {=0A=
    if(!this.dragging) this.startDrag(event);=0A=
=0A=
    if(!this.options.quiet){=0A=
      Position.prepare();=0A=
      Droppables.show(pointer, this.element);=0A=
    }=0A=
=0A=
    Draggables.notify('onDrag', this, event);=0A=
=0A=
    this.draw(pointer);=0A=
    if(this.options.change) this.options.change(this);=0A=
=0A=
    if(this.options.scroll) {=0A=
      this.stopScrolling();=0A=
=0A=
      var p;=0A=
      if (this.options.scroll =3D=3D window) {=0A=
        with(this._getWindowScroll(this.options.scroll)) { p =3D [ left, =
top, left+width, top+height ]; }=0A=
      } else {=0A=
        p =3D Position.page(this.options.scroll);=0A=
        p[0] +=3D this.options.scroll.scrollLeft + Position.deltaX;=0A=
        p[1] +=3D this.options.scroll.scrollTop + Position.deltaY;=0A=
        p.push(p[0]+this.options.scroll.offsetWidth);=0A=
        p.push(p[1]+this.options.scroll.offsetHeight);=0A=
      }=0A=
      var speed =3D [0,0];=0A=
      if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] =
=3D pointer[0]-(p[0]+this.options.scrollSensitivity);=0A=
      if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] =
=3D pointer[1]-(p[1]+this.options.scrollSensitivity);=0A=
      if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] =
=3D pointer[0]-(p[2]-this.options.scrollSensitivity);=0A=
      if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] =
=3D pointer[1]-(p[3]-this.options.scrollSensitivity);=0A=
      this.startScrolling(speed);=0A=
    }=0A=
=0A=
    // fix AppleWebKit rendering=0A=
    if(Prototype.Browser.WebKit) window.scrollBy(0,0);=0A=
=0A=
    Event.stop(event);=0A=
  },=0A=
=0A=
  finishDrag: function(event, success) {=0A=
    this.dragging =3D false;=0A=
=0A=
    if(this.options.quiet){=0A=
      Position.prepare();=0A=
      var pointer =3D [Event.pointerX(event), Event.pointerY(event)];=0A=
      Droppables.show(pointer, this.element);=0A=
    }=0A=
=0A=
    if(this.options.ghosting) {=0A=
      if (!this._originallyAbsolute)=0A=
        Position.relativize(this.element);=0A=
      delete this._originallyAbsolute;=0A=
      Element.remove(this._clone);=0A=
      this._clone =3D null;=0A=
    }=0A=
=0A=
    var dropped =3D false;=0A=
    if(success) {=0A=
      dropped =3D Droppables.fire(event, this.element);=0A=
      if (!dropped) dropped =3D false;=0A=
    }=0A=
    if(dropped && this.options.onDropped) =
this.options.onDropped(this.element);=0A=
    Draggables.notify('onEnd', this, event);=0A=
=0A=
    var revert =3D this.options.revert;=0A=
    if(revert && Object.isFunction(revert)) revert =3D =
revert(this.element);=0A=
=0A=
    var d =3D this.currentDelta();=0A=
    if(revert && this.options.reverteffect) {=0A=
      if (dropped =3D=3D 0 || revert !=3D 'failure')=0A=
        this.options.reverteffect(this.element,=0A=
          d[1]-this.delta[1], d[0]-this.delta[0]);=0A=
    } else {=0A=
      this.delta =3D d;=0A=
    }=0A=
=0A=
    if(this.options.zindex)=0A=
      this.element.style.zIndex =3D this.originalZ;=0A=
=0A=
    if(this.options.endeffect)=0A=
      this.options.endeffect(this.element);=0A=
=0A=
    Draggables.deactivate(this);=0A=
    Droppables.reset();=0A=
  },=0A=
=0A=
  keyPress: function(event) {=0A=
    if(event.keyCode!=3DEvent.KEY_ESC) return;=0A=
    this.finishDrag(event, false);=0A=
    Event.stop(event);=0A=
  },=0A=
=0A=
  endDrag: function(event) {=0A=
    if(!this.dragging) return;=0A=
    this.stopScrolling();=0A=
    this.finishDrag(event, true);=0A=
    Event.stop(event);=0A=
  },=0A=
=0A=
  draw: function(point) {=0A=
    var pos =3D this.element.cumulativeOffset();=0A=
    if(this.options.ghosting) {=0A=
      var r   =3D Position.realOffset(this.element);=0A=
      pos[0] +=3D r[0] - Position.deltaX; pos[1] +=3D r[1] - =
Position.deltaY;=0A=
    }=0A=
=0A=
    var d =3D this.currentDelta();=0A=
    pos[0] -=3D d[0]; pos[1] -=3D d[1];=0A=
=0A=
    if(this.options.scroll && (this.options.scroll !=3D window && =
this._isScrollChild)) {=0A=
      pos[0] -=3D this.options.scroll.scrollLeft-this.originalScrollLeft;=0A=
      pos[1] -=3D this.options.scroll.scrollTop-this.originalScrollTop;=0A=
    }=0A=
=0A=
    var p =3D [0,1].map(function(i){=0A=
      return (point[i]-pos[i]-this.offset[i])=0A=
    }.bind(this));=0A=
=0A=
    if(this.options.snap) {=0A=
      if(Object.isFunction(this.options.snap)) {=0A=
        p =3D this.options.snap(p[0],p[1],this);=0A=
      } else {=0A=
      if(Object.isArray(this.options.snap)) {=0A=
        p =3D p.map( function(v, i) {=0A=
          return (v/this.options.snap[i]).round()*this.options.snap[i] =
}.bind(this));=0A=
      } else {=0A=
        p =3D p.map( function(v) {=0A=
          return (v/this.options.snap).round()*this.options.snap =
}.bind(this));=0A=
      }=0A=
    }}=0A=
=0A=
    var style =3D this.element.style;=0A=
    if((!this.options.constraint) || =
(this.options.constraint=3D=3D'horizontal'))=0A=
      style.left =3D p[0] + "px";=0A=
    if((!this.options.constraint) || =
(this.options.constraint=3D=3D'vertical'))=0A=
      style.top  =3D p[1] + "px";=0A=
=0A=
    if(style.visibility=3D=3D"hidden") style.visibility =3D ""; // fix =
gecko rendering=0A=
  },=0A=
=0A=
  stopScrolling: function() {=0A=
    if(this.scrollInterval) {=0A=
      clearInterval(this.scrollInterval);=0A=
      this.scrollInterval =3D null;=0A=
      Draggables._lastScrollPointer =3D null;=0A=
    }=0A=
  },=0A=
=0A=
  startScrolling: function(speed) {=0A=
    if(!(speed[0] || speed[1])) return;=0A=
    this.scrollSpeed =3D =
[speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];=0A=
    this.lastScrolled =3D new Date();=0A=
    this.scrollInterval =3D setInterval(this.scroll.bind(this), 10);=0A=
  },=0A=
=0A=
  scroll: function() {=0A=
    var current =3D new Date();=0A=
    var delta =3D current - this.lastScrolled;=0A=
    this.lastScrolled =3D current;=0A=
    if(this.options.scroll =3D=3D window) {=0A=
      with (this._getWindowScroll(this.options.scroll)) {=0A=
        if (this.scrollSpeed[0] || this.scrollSpeed[1]) {=0A=
          var d =3D delta / 1000;=0A=
          this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], =
top + d*this.scrollSpeed[1] );=0A=
        }=0A=
      }=0A=
    } else {=0A=
      this.options.scroll.scrollLeft +=3D this.scrollSpeed[0] * delta / =
1000;=0A=
      this.options.scroll.scrollTop  +=3D this.scrollSpeed[1] * delta / =
1000;=0A=
    }=0A=
=0A=
    Position.prepare();=0A=
    Droppables.show(Draggables._lastPointer, this.element);=0A=
    Draggables.notify('onDrag', this);=0A=
    if (this._isScrollChild) {=0A=
      Draggables._lastScrollPointer =3D Draggables._lastScrollPointer || =
$A(Draggables._lastPointer);=0A=
      Draggables._lastScrollPointer[0] +=3D this.scrollSpeed[0] * delta =
/ 1000;=0A=
      Draggables._lastScrollPointer[1] +=3D this.scrollSpeed[1] * delta =
/ 1000;=0A=
      if (Draggables._lastScrollPointer[0] < 0)=0A=
        Draggables._lastScrollPointer[0] =3D 0;=0A=
      if (Draggables._lastScrollPointer[1] < 0)=0A=
        Draggables._lastScrollPointer[1] =3D 0;=0A=
      this.draw(Draggables._lastScrollPointer);=0A=
    }=0A=
=0A=
    if(this.options.change) this.options.change(this);=0A=
  },=0A=
=0A=
  _getWindowScroll: function(w) {=0A=
    var T, L, W, H;=0A=
    with (w.document) {=0A=
      if (w.document.documentElement && documentElement.scrollTop) {=0A=
        T =3D documentElement.scrollTop;=0A=
        L =3D documentElement.scrollLeft;=0A=
      } else if (w.document.body) {=0A=
        T =3D body.scrollTop;=0A=
        L =3D body.scrollLeft;=0A=
      }=0A=
      if (w.innerWidth) {=0A=
        W =3D w.innerWidth;=0A=
        H =3D w.innerHeight;=0A=
      } else if (w.document.documentElement && =
documentElement.clientWidth) {=0A=
        W =3D documentElement.clientWidth;=0A=
        H =3D documentElement.clientHeight;=0A=
      } else {=0A=
        W =3D body.offsetWidth;=0A=
        H =3D body.offsetHeight;=0A=
      }=0A=
    }=0A=
    return { top: T, left: L, width: W, height: H };=0A=
  }=0A=
});=0A=
=0A=
Draggable._dragging =3D { };=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var SortableObserver =3D Class.create({=0A=
  initialize: function(element, observer) {=0A=
    this.element   =3D $(element);=0A=
    this.observer  =3D observer;=0A=
    this.lastValue =3D Sortable.serialize(this.element);=0A=
  },=0A=
=0A=
  onStart: function() {=0A=
    this.lastValue =3D Sortable.serialize(this.element);=0A=
  },=0A=
=0A=
  onEnd: function() {=0A=
    Sortable.unmark();=0A=
    if(this.lastValue !=3D Sortable.serialize(this.element))=0A=
      this.observer(this.element)=0A=
  }=0A=
});=0A=
=0A=
var Sortable =3D {=0A=
  SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,=0A=
=0A=
  sortables: { },=0A=
=0A=
  _findRootElement: function(element) {=0A=
    while (element.tagName.toUpperCase() !=3D "BODY") {=0A=
      if(element.id && Sortable.sortables[element.id]) return element;=0A=
      element =3D element.parentNode;=0A=
    }=0A=
  },=0A=
=0A=
  options: function(element) {=0A=
    element =3D Sortable._findRootElement($(element));=0A=
    if(!element) return;=0A=
    return Sortable.sortables[element.id];=0A=
  },=0A=
=0A=
  destroy: function(element){=0A=
    element =3D $(element);=0A=
    var s =3D Sortable.sortables[element.id];=0A=
=0A=
    if(s) {=0A=
      Draggables.removeObserver(s.element);=0A=
      s.droppables.each(function(d){ Droppables.remove(d) });=0A=
      s.draggables.invoke('destroy');=0A=
=0A=
      delete Sortable.sortables[s.element.id];=0A=
    }=0A=
  },=0A=
=0A=
  create: function(element) {=0A=
    element =3D $(element);=0A=
    var options =3D Object.extend({=0A=
      element:     element,=0A=
      tag:         'li',       // assumes li children, override with =
tag: 'tagname'=0A=
      dropOnEmpty: false,=0A=
      tree:        false,=0A=
      treeTag:     'ul',=0A=
      overlap:     'vertical', // one of 'vertical', 'horizontal'=0A=
      constraint:  'vertical', // one of 'vertical', 'horizontal', false=0A=
      containment: element,    // also takes array of elements (or =
id's); or false=0A=
      handle:      false,      // or a CSS class=0A=
      only:        false,=0A=
      delay:       0,=0A=
      hoverclass:  null,=0A=
      ghosting:    false,=0A=
      quiet:       false,=0A=
      scroll:      false,=0A=
      scrollSensitivity: 20,=0A=
      scrollSpeed: 15,=0A=
      format:      this.SERIALIZE_RULE,=0A=
=0A=
      // these take arrays of elements or ids and can be=0A=
      // used for better initialization performance=0A=
      elements:    false,=0A=
      handles:     false,=0A=
=0A=
      onChange:    Prototype.emptyFunction,=0A=
      onUpdate:    Prototype.emptyFunction=0A=
    }, arguments[1] || { });=0A=
=0A=
    // clear any old sortable with same element=0A=
    this.destroy(element);=0A=
=0A=
    // build options for the draggables=0A=
    var options_for_draggable =3D {=0A=
      revert:      true,=0A=
      quiet:       options.quiet,=0A=
      scroll:      options.scroll,=0A=
      scrollSpeed: options.scrollSpeed,=0A=
      scrollSensitivity: options.scrollSensitivity,=0A=
      delay:       options.delay,=0A=
      ghosting:    options.ghosting,=0A=
      constraint:  options.constraint,=0A=
      handle:      options.handle };=0A=
=0A=
    if(options.starteffect)=0A=
      options_for_draggable.starteffect =3D options.starteffect;=0A=
=0A=
    if(options.reverteffect)=0A=
      options_for_draggable.reverteffect =3D options.reverteffect;=0A=
    else=0A=
      if(options.ghosting) options_for_draggable.reverteffect =3D =
function(element) {=0A=
        element.style.top  =3D 0;=0A=
        element.style.left =3D 0;=0A=
      };=0A=
=0A=
    if(options.endeffect)=0A=
      options_for_draggable.endeffect =3D options.endeffect;=0A=
=0A=
    if(options.zindex)=0A=
      options_for_draggable.zindex =3D options.zindex;=0A=
=0A=
    // build options for the droppables=0A=
    var options_for_droppable =3D {=0A=
      overlap:     options.overlap,=0A=
      containment: options.containment,=0A=
      tree:        options.tree,=0A=
      hoverclass:  options.hoverclass,=0A=
      onHover:     Sortable.onHover=0A=
    };=0A=
=0A=
    var options_for_tree =3D {=0A=
      onHover:      Sortable.onEmptyHover,=0A=
      overlap:      options.overlap,=0A=
      containment:  options.containment,=0A=
      hoverclass:   options.hoverclass=0A=
    };=0A=
=0A=
    // fix for gecko engine=0A=
    Element.cleanWhitespace(element);=0A=
=0A=
    options.draggables =3D [];=0A=
    options.droppables =3D [];=0A=
=0A=
    // drop on empty handling=0A=
    if(options.dropOnEmpty || options.tree) {=0A=
      Droppables.add(element, options_for_tree);=0A=
      options.droppables.push(element);=0A=
    }=0A=
=0A=
    (options.elements || this.findElements(element, options) || =
[]).each( function(e,i) {=0A=
      var handle =3D options.handles ? $(options.handles[i]) :=0A=
        (options.handle ? $(e).select('.' + options.handle)[0] : e);=0A=
      options.draggables.push(=0A=
        new Draggable(e, Object.extend(options_for_draggable, { handle: =
handle })));=0A=
      Droppables.add(e, options_for_droppable);=0A=
      if(options.tree) e.treeNode =3D element;=0A=
      options.droppables.push(e);=0A=
    });=0A=
=0A=
    if(options.tree) {=0A=
      (Sortable.findTreeElements(element, options) || []).each( =
function(e) {=0A=
        Droppables.add(e, options_for_tree);=0A=
        e.treeNode =3D element;=0A=
        options.droppables.push(e);=0A=
      });=0A=
    }=0A=
=0A=
    // keep reference=0A=
    this.sortables[element.identify()] =3D options;=0A=
=0A=
    // for onupdate=0A=
    Draggables.addObserver(new SortableObserver(element, =
options.onUpdate));=0A=
=0A=
  },=0A=
=0A=
  // return all suitable-for-sortable elements in a guaranteed order=0A=
  findElements: function(element, options) {=0A=
    return Element.findChildren(=0A=
      element, options.only, options.tree ? true : false, options.tag);=0A=
  },=0A=
=0A=
  findTreeElements: function(element, options) {=0A=
    return Element.findChildren(=0A=
      element, options.only, options.tree ? true : false, =
options.treeTag);=0A=
  },=0A=
=0A=
  onHover: function(element, dropon, overlap) {=0A=
    if(Element.isParent(dropon, element)) return;=0A=
=0A=
    if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {=0A=
      return;=0A=
    } else if(overlap>0.5) {=0A=
      Sortable.mark(dropon, 'before');=0A=
      if(dropon.previousSibling !=3D element) {=0A=
        var oldParentNode =3D element.parentNode;=0A=
        element.style.visibility =3D "hidden"; // fix gecko rendering=0A=
        dropon.parentNode.insertBefore(element, dropon);=0A=
        if(dropon.parentNode!=3DoldParentNode)=0A=
          Sortable.options(oldParentNode).onChange(element);=0A=
        Sortable.options(dropon.parentNode).onChange(element);=0A=
      }=0A=
    } else {=0A=
      Sortable.mark(dropon, 'after');=0A=
      var nextElement =3D dropon.nextSibling || null;=0A=
      if(nextElement !=3D element) {=0A=
        var oldParentNode =3D element.parentNode;=0A=
        element.style.visibility =3D "hidden"; // fix gecko rendering=0A=
        dropon.parentNode.insertBefore(element, nextElement);=0A=
        if(dropon.parentNode!=3DoldParentNode)=0A=
          Sortable.options(oldParentNode).onChange(element);=0A=
        Sortable.options(dropon.parentNode).onChange(element);=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  onEmptyHover: function(element, dropon, overlap) {=0A=
    var oldParentNode =3D element.parentNode;=0A=
    var droponOptions =3D Sortable.options(dropon);=0A=
=0A=
    if(!Element.isParent(dropon, element)) {=0A=
      var index;=0A=
=0A=
      var children =3D Sortable.findElements(dropon, {tag: =
droponOptions.tag, only: droponOptions.only});=0A=
      var child =3D null;=0A=
=0A=
      if(children) {=0A=
        var offset =3D Element.offsetSize(dropon, droponOptions.overlap) =
* (1.0 - overlap);=0A=
=0A=
        for (index =3D 0; index < children.length; index +=3D 1) {=0A=
          if (offset - Element.offsetSize (children[index], =
droponOptions.overlap) >=3D 0) {=0A=
            offset -=3D Element.offsetSize (children[index], =
droponOptions.overlap);=0A=
          } else if (offset - (Element.offsetSize (children[index], =
droponOptions.overlap) / 2) >=3D 0) {=0A=
            child =3D index + 1 < children.length ? children[index + 1] =
: null;=0A=
            break;=0A=
          } else {=0A=
            child =3D children[index];=0A=
            break;=0A=
          }=0A=
        }=0A=
      }=0A=
=0A=
      dropon.insertBefore(element, child);=0A=
=0A=
      Sortable.options(oldParentNode).onChange(element);=0A=
      droponOptions.onChange(element);=0A=
    }=0A=
  },=0A=
=0A=
  unmark: function() {=0A=
    if(Sortable._marker) Sortable._marker.hide();=0A=
  },=0A=
=0A=
  mark: function(dropon, position) {=0A=
    // mark on ghosting only=0A=
    var sortable =3D Sortable.options(dropon.parentNode);=0A=
    if(sortable && !sortable.ghosting) return;=0A=
=0A=
    if(!Sortable._marker) {=0A=
      Sortable._marker =3D=0A=
        ($('dropmarker') || =
Element.extend(document.createElement('DIV'))).=0A=
          =
hide().addClassName('dropmarker').setStyle({position:'absolute'});=0A=
      =
document.getElementsByTagName("body").item(0).appendChild(Sortable._marke=
r);=0A=
    }=0A=
    var offsets =3D dropon.cumulativeOffset();=0A=
    Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + =
'px'});=0A=
=0A=
    if(position=3D=3D'after')=0A=
      if(sortable.overlap =3D=3D 'horizontal')=0A=
        Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) =
+ 'px'});=0A=
      else=0A=
        Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) =
+ 'px'});=0A=
=0A=
    Sortable._marker.show();=0A=
  },=0A=
=0A=
  _tree: function(element, options, parent) {=0A=
    var children =3D Sortable.findElements(element, options) || [];=0A=
=0A=
    for (var i =3D 0; i < children.length; ++i) {=0A=
      var match =3D children[i].id.match(options.format);=0A=
=0A=
      if (!match) continue;=0A=
=0A=
      var child =3D {=0A=
        id: encodeURIComponent(match ? match[1] : null),=0A=
        element: element,=0A=
        parent: parent,=0A=
        children: [],=0A=
        position: parent.children.length,=0A=
        container: $(children[i]).down(options.treeTag)=0A=
      };=0A=
=0A=
      /* Get the element containing the children and recurse over it */=0A=
      if (child.container)=0A=
        this._tree(child.container, options, child);=0A=
=0A=
      parent.children.push (child);=0A=
    }=0A=
=0A=
    return parent;=0A=
  },=0A=
=0A=
  tree: function(element) {=0A=
    element =3D $(element);=0A=
    var sortableOptions =3D this.options(element);=0A=
    var options =3D Object.extend({=0A=
      tag: sortableOptions.tag,=0A=
      treeTag: sortableOptions.treeTag,=0A=
      only: sortableOptions.only,=0A=
      name: element.id,=0A=
      format: sortableOptions.format=0A=
    }, arguments[1] || { });=0A=
=0A=
    var root =3D {=0A=
      id: null,=0A=
      parent: null,=0A=
      children: [],=0A=
      container: element,=0A=
      position: 0=0A=
    };=0A=
=0A=
    return Sortable._tree(element, options, root);=0A=
  },=0A=
=0A=
  /* Construct a [i] index for a particular node */=0A=
  _constructIndex: function(node) {=0A=
    var index =3D '';=0A=
    do {=0A=
      if (node.id) index =3D '[' + node.position + ']' + index;=0A=
    } while ((node =3D node.parent) !=3D null);=0A=
    return index;=0A=
  },=0A=
=0A=
  sequence: function(element) {=0A=
    element =3D $(element);=0A=
    var options =3D Object.extend(this.options(element), arguments[1] || =
{ });=0A=
=0A=
    return $(this.findElements(element, options) || []).map( =
function(item) {=0A=
      return item.id.match(options.format) ? =
item.id.match(options.format)[1] : '';=0A=
    });=0A=
  },=0A=
=0A=
  setSequence: function(element, new_sequence) {=0A=
    element =3D $(element);=0A=
    var options =3D Object.extend(this.options(element), arguments[2] || =
{ });=0A=
=0A=
    var nodeMap =3D { };=0A=
    this.findElements(element, options).each( function(n) {=0A=
        if (n.id.match(options.format))=0A=
            nodeMap[n.id.match(options.format)[1]] =3D [n, n.parentNode];=0A=
        n.parentNode.removeChild(n);=0A=
    });=0A=
=0A=
    new_sequence.each(function(ident) {=0A=
      var n =3D nodeMap[ident];=0A=
      if (n) {=0A=
        n[1].appendChild(n[0]);=0A=
        delete nodeMap[ident];=0A=
      }=0A=
    });=0A=
  },=0A=
=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    var options =3D Object.extend(Sortable.options(element), =
arguments[1] || { });=0A=
    var name =3D encodeURIComponent(=0A=
      (arguments[1] && arguments[1].name) ? arguments[1].name : =
element.id);=0A=
=0A=
    if (options.tree) {=0A=
      return Sortable.tree(element, arguments[1]).children.map( function =
(item) {=0A=
        return [name + Sortable._constructIndex(item) + "[id]=3D" +=0A=
                =
encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));=0A=
      }).flatten().join('&');=0A=
    } else {=0A=
      return Sortable.sequence(element, arguments[1]).map( =
function(item) {=0A=
        return name + "[]=3D" + encodeURIComponent(item);=0A=
      }).join('&');=0A=
    }=0A=
  }=0A=
};=0A=
=0A=
// Returns true if child is contained within element=0A=
Element.isParent =3D function(child, element) {=0A=
  if (!child.parentNode || child =3D=3D element) return false;=0A=
  if (child.parentNode =3D=3D element) return true;=0A=
  return Element.isParent(child.parentNode, element);=0A=
};=0A=
=0A=
Element.findChildren =3D function(element, only, recursive, tagName) {=0A=
  if(!element.hasChildNodes()) return null;=0A=
  tagName =3D tagName.toUpperCase();=0A=
  if(only) only =3D [only].flatten();=0A=
  var elements =3D [];=0A=
  $A(element.childNodes).each( function(e) {=0A=
    if(e.tagName && e.tagName.toUpperCase()=3D=3DtagName &&=0A=
      (!only || (Element.classNames(e).detect(function(v) { return =
only.include(v) }))))=0A=
        elements.push(e);=0A=
    if(recursive) {=0A=
      var grandchildren =3D Element.findChildren(e, only, recursive, =
tagName);=0A=
      if(grandchildren) elements.push(grandchildren);=0A=
    }=0A=
  });=0A=
=0A=
  return (elements.length>0 ? elements.flatten() : []);=0A=
};=0A=
=0A=
Element.offsetSize =3D function (element, type) {=0A=
  return element['offset' + ((type=3D=3D'vertical' || =
type=3D=3D'height') ? 'Height' : 'Width')];=0A=
};
------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/controls.js

// script.aculo.us controls.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009=0A=
=0A=
// Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
//           (c) 2005-2009 Ivan Krstic =
(http://blogs.law.harvard.edu/ivan)=0A=
//           (c) 2005-2009 Jon Tirsen (http://www.tirsen.com)=0A=
// Contributors:=0A=
//  Richard Livsey=0A=
//  Rahul Bhargava=0A=
//  Rob Wills=0A=
//=0A=
// script.aculo.us is freely distributable under the terms of an =
MIT-style license.=0A=
// For details, see the script.aculo.us web site: http://script.aculo.us/=0A=
=0A=
// Autocompleter.Base handles all the autocompletion functionality=0A=
// that's independent of the data source for autocompletion. This=0A=
// includes drawing the autocompletion menu, observing keyboard=0A=
// and mouse events, and similar.=0A=
//=0A=
// Specific autocompleters need to provide, at the very least,=0A=
// a getUpdatedChoices function that will be invoked every time=0A=
// the text inside the monitored textbox changes. This method=0A=
// should get the text for which to provide autocompletion by=0A=
// invoking this.getToken(), NOT by directly accessing=0A=
// this.element.value. This is to allow incremental tokenized=0A=
// autocompletion. Specific auto-completion logic (AJAX, etc)=0A=
// belongs in getUpdatedChoices.=0A=
//=0A=
// Tokenized incremental autocompletion is enabled automatically=0A=
// when an autocompleter is instantiated with the 'tokens' option=0A=
// in the options parameter, e.g.:=0A=
// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });=0A=
// will incrementally autocomplete with a comma as the token.=0A=
// Additionally, ',' in the above example can be replaced with=0A=
// a token array, e.g. { tokens: [',', '\n'] } which=0A=
// enables autocompletion on multiple tokens. This is most=0A=
// useful when one of the tokens is \n (a newline), as it=0A=
// allows smart autocompletion after linebreaks.=0A=
=0A=
if(typeof Effect =3D=3D 'undefined')=0A=
  throw("controls.js requires including script.aculo.us' effects.js =
library");=0A=
=0A=
var Autocompleter =3D { };=0A=
Autocompleter.Base =3D Class.create({=0A=
  baseInitialize: function(element, update, options) {=0A=
    element          =3D $(element);=0A=
    this.element     =3D element;=0A=
    this.update      =3D $(update);=0A=
    this.hasFocus    =3D false;=0A=
    this.changed     =3D false;=0A=
    this.active      =3D false;=0A=
    this.index       =3D 0;=0A=
    this.entryCount  =3D 0;=0A=
    this.oldElementValue =3D this.element.value;=0A=
=0A=
    if(this.setOptions)=0A=
      this.setOptions(options);=0A=
    else=0A=
      this.options =3D options || { };=0A=
=0A=
    this.options.paramName    =3D this.options.paramName || =
this.element.name;=0A=
    this.options.tokens       =3D this.options.tokens || [];=0A=
    this.options.frequency    =3D this.options.frequency || 0.4;=0A=
    this.options.minChars     =3D this.options.minChars || 1;=0A=
    this.options.onShow       =3D this.options.onShow ||=0A=
      function(element, update){=0A=
        if(!update.style.position || =
update.style.position=3D=3D'absolute') {=0A=
          update.style.position =3D 'absolute';=0A=
          Position.clone(element, update, {=0A=
            setHeight: false,=0A=
            offsetTop: element.offsetHeight=0A=
          });=0A=
        }=0A=
        Effect.Appear(update,{duration:0.15});=0A=
      };=0A=
    this.options.onHide =3D this.options.onHide ||=0A=
      function(element, update){ new Effect.Fade(update,{duration:0.15}) =
};=0A=
=0A=
    if(typeof(this.options.tokens) =3D=3D 'string')=0A=
      this.options.tokens =3D new Array(this.options.tokens);=0A=
    // Force carriage returns as token delimiters anyway=0A=
    if (!this.options.tokens.include('\n'))=0A=
      this.options.tokens.push('\n');=0A=
=0A=
    this.observer =3D null;=0A=
=0A=
    this.element.setAttribute('autocomplete','off');=0A=
=0A=
    Element.hide(this.update);=0A=
=0A=
    Event.observe(this.element, 'blur', =
this.onBlur.bindAsEventListener(this));=0A=
    Event.observe(this.element, 'keydown', =
this.onKeyPress.bindAsEventListener(this));=0A=
  },=0A=
=0A=
  show: function() {=0A=
    if(Element.getStyle(this.update, 'display')=3D=3D'none') =
this.options.onShow(this.element, this.update);=0A=
    if(!this.iefix &&=0A=
      (Prototype.Browser.IE) &&=0A=
      (Element.getStyle(this.update, 'position')=3D=3D'absolute')) {=0A=
      new Insertion.After(this.update,=0A=
       '<iframe id=3D"' + this.update.id + '_iefix" '+=0A=
       =
'style=3D"display:none;position:absolute;filter:progid:DXImageTransform.M=
icrosoft.Alpha(opacity=3D0);" ' +=0A=
       'src=3D"javascript:false;" frameborder=3D"0" =
scrolling=3D"no"></iframe>');=0A=
      this.iefix =3D $(this.update.id+'_iefix');=0A=
    }=0A=
    if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);=0A=
  },=0A=
=0A=
  fixIEOverlapping: function() {=0A=
    Position.clone(this.update, this.iefix, =
{setTop:(!this.update.style.height)});=0A=
    this.iefix.style.zIndex =3D 1;=0A=
    this.update.style.zIndex =3D 2;=0A=
    Element.show(this.iefix);=0A=
  },=0A=
=0A=
  hide: function() {=0A=
    this.stopIndicator();=0A=
    if(Element.getStyle(this.update, 'display')!=3D'none') =
this.options.onHide(this.element, this.update);=0A=
    if(this.iefix) Element.hide(this.iefix);=0A=
  },=0A=
=0A=
  startIndicator: function() {=0A=
    if(this.options.indicator) Element.show(this.options.indicator);=0A=
  },=0A=
=0A=
  stopIndicator: function() {=0A=
    if(this.options.indicator) Element.hide(this.options.indicator);=0A=
  },=0A=
=0A=
  onKeyPress: function(event) {=0A=
    if(this.active)=0A=
      switch(event.keyCode) {=0A=
       case Event.KEY_TAB:=0A=
       case Event.KEY_RETURN:=0A=
         this.selectEntry();=0A=
         Event.stop(event);=0A=
       case Event.KEY_ESC:=0A=
         this.hide();=0A=
         this.active =3D false;=0A=
         Event.stop(event);=0A=
         return;=0A=
       case Event.KEY_LEFT:=0A=
       case Event.KEY_RIGHT:=0A=
         return;=0A=
       case Event.KEY_UP:=0A=
         this.markPrevious();=0A=
         this.render();=0A=
         Event.stop(event);=0A=
         return;=0A=
       case Event.KEY_DOWN:=0A=
         this.markNext();=0A=
         this.render();=0A=
         Event.stop(event);=0A=
         return;=0A=
      }=0A=
     else=0A=
       if(event.keyCode=3D=3DEvent.KEY_TAB || =
event.keyCode=3D=3DEvent.KEY_RETURN ||=0A=
         (Prototype.Browser.WebKit > 0 && event.keyCode =3D=3D 0)) =
return;=0A=
=0A=
    this.changed =3D true;=0A=
    this.hasFocus =3D true;=0A=
=0A=
    if(this.observer) clearTimeout(this.observer);=0A=
      this.observer =3D=0A=
        setTimeout(this.onObserverEvent.bind(this), =
this.options.frequency*1000);=0A=
  },=0A=
=0A=
  activate: function() {=0A=
    this.changed =3D false;=0A=
    this.hasFocus =3D true;=0A=
    this.getUpdatedChoices();=0A=
  },=0A=
=0A=
  onHover: function(event) {=0A=
    var element =3D Event.findElement(event, 'LI');=0A=
    if(this.index !=3D element.autocompleteIndex)=0A=
    {=0A=
        this.index =3D element.autocompleteIndex;=0A=
        this.render();=0A=
    }=0A=
    Event.stop(event);=0A=
  },=0A=
=0A=
  onClick: function(event) {=0A=
    var element =3D Event.findElement(event, 'LI');=0A=
    this.index =3D element.autocompleteIndex;=0A=
    this.selectEntry();=0A=
    this.hide();=0A=
  },=0A=
=0A=
  onBlur: function(event) {=0A=
    // needed to make click events working=0A=
    setTimeout(this.hide.bind(this), 250);=0A=
    this.hasFocus =3D false;=0A=
    this.active =3D false;=0A=
  },=0A=
=0A=
  render: function() {=0A=
    if(this.entryCount > 0) {=0A=
      for (var i =3D 0; i < this.entryCount; i++)=0A=
        this.index=3D=3Di ?=0A=
          Element.addClassName(this.getEntry(i),"selected") :=0A=
          Element.removeClassName(this.getEntry(i),"selected");=0A=
      if(this.hasFocus) {=0A=
        this.show();=0A=
        this.active =3D true;=0A=
      }=0A=
    } else {=0A=
      this.active =3D false;=0A=
      this.hide();=0A=
    }=0A=
  },=0A=
=0A=
  markPrevious: function() {=0A=
    if(this.index > 0) this.index--;=0A=
      else this.index =3D this.entryCount-1;=0A=
    this.getEntry(this.index).scrollIntoView(true);=0A=
  },=0A=
=0A=
  markNext: function() {=0A=
    if(this.index < this.entryCount-1) this.index++;=0A=
      else this.index =3D 0;=0A=
    this.getEntry(this.index).scrollIntoView(false);=0A=
  },=0A=
=0A=
  getEntry: function(index) {=0A=
    return this.update.firstChild.childNodes[index];=0A=
  },=0A=
=0A=
  getCurrentEntry: function() {=0A=
    return this.getEntry(this.index);=0A=
  },=0A=
=0A=
  selectEntry: function() {=0A=
    this.active =3D false;=0A=
    this.updateElement(this.getCurrentEntry());=0A=
  },=0A=
=0A=
  updateElement: function(selectedElement) {=0A=
    if (this.options.updateElement) {=0A=
      this.options.updateElement(selectedElement);=0A=
      return;=0A=
    }=0A=
    var value =3D '';=0A=
    if (this.options.select) {=0A=
      var nodes =3D $(selectedElement).select('.' + this.options.select) =
|| [];=0A=
      if(nodes.length>0) value =3D Element.collectTextNodes(nodes[0], =
this.options.select);=0A=
    } else=0A=
      value =3D Element.collectTextNodesIgnoreClass(selectedElement, =
'informal');=0A=
=0A=
    var bounds =3D this.getTokenBounds();=0A=
    if (bounds[0] !=3D -1) {=0A=
      var newValue =3D this.element.value.substr(0, bounds[0]);=0A=
      var whitespace =3D =
this.element.value.substr(bounds[0]).match(/^\s+/);=0A=
      if (whitespace)=0A=
        newValue +=3D whitespace[0];=0A=
      this.element.value =3D newValue + value + =
this.element.value.substr(bounds[1]);=0A=
    } else {=0A=
      this.element.value =3D value;=0A=
    }=0A=
    this.oldElementValue =3D this.element.value;=0A=
    this.element.focus();=0A=
=0A=
    if (this.options.afterUpdateElement)=0A=
      this.options.afterUpdateElement(this.element, selectedElement);=0A=
  },=0A=
=0A=
  updateChoices: function(choices) {=0A=
    if(!this.changed && this.hasFocus) {=0A=
      this.update.innerHTML =3D choices;=0A=
      Element.cleanWhitespace(this.update);=0A=
      Element.cleanWhitespace(this.update.down());=0A=
=0A=
      if(this.update.firstChild && this.update.down().childNodes) {=0A=
        this.entryCount =3D=0A=
          this.update.down().childNodes.length;=0A=
        for (var i =3D 0; i < this.entryCount; i++) {=0A=
          var entry =3D this.getEntry(i);=0A=
          entry.autocompleteIndex =3D i;=0A=
          this.addObservers(entry);=0A=
        }=0A=
      } else {=0A=
        this.entryCount =3D 0;=0A=
      }=0A=
=0A=
      this.stopIndicator();=0A=
      this.index =3D 0;=0A=
=0A=
      if(this.entryCount=3D=3D1 && this.options.autoSelect) {=0A=
        this.selectEntry();=0A=
        this.hide();=0A=
      } else {=0A=
        this.render();=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  addObservers: function(element) {=0A=
    Event.observe(element, "mouseover", =
this.onHover.bindAsEventListener(this));=0A=
    Event.observe(element, "click", =
this.onClick.bindAsEventListener(this));=0A=
  },=0A=
=0A=
  onObserverEvent: function() {=0A=
    this.changed =3D false;=0A=
    this.tokenBounds =3D null;=0A=
    if(this.getToken().length>=3Dthis.options.minChars) {=0A=
      this.getUpdatedChoices();=0A=
    } else {=0A=
      this.active =3D false;=0A=
      this.hide();=0A=
    }=0A=
    this.oldElementValue =3D this.element.value;=0A=
  },=0A=
=0A=
  getToken: function() {=0A=
    var bounds =3D this.getTokenBounds();=0A=
    return this.element.value.substring(bounds[0], bounds[1]).strip();=0A=
  },=0A=
=0A=
  getTokenBounds: function() {=0A=
    if (null !=3D this.tokenBounds) return this.tokenBounds;=0A=
    var value =3D this.element.value;=0A=
    if (value.strip().empty()) return [-1, 0];=0A=
    var diff =3D arguments.callee.getFirstDifferencePos(value, =
this.oldElementValue);=0A=
    var offset =3D (diff =3D=3D this.oldElementValue.length ? 1 : 0);=0A=
    var prevTokenPos =3D -1, nextTokenPos =3D value.length;=0A=
    var tp;=0A=
    for (var index =3D 0, l =3D this.options.tokens.length; index < l; =
++index) {=0A=
      tp =3D value.lastIndexOf(this.options.tokens[index], diff + offset =
- 1);=0A=
      if (tp > prevTokenPos) prevTokenPos =3D tp;=0A=
      tp =3D value.indexOf(this.options.tokens[index], diff + offset);=0A=
      if (-1 !=3D tp && tp < nextTokenPos) nextTokenPos =3D tp;=0A=
    }=0A=
    return (this.tokenBounds =3D [prevTokenPos + 1, nextTokenPos]);=0A=
  }=0A=
});=0A=
=0A=
Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos =3D =
function(newS, oldS) {=0A=
  var boundary =3D Math.min(newS.length, oldS.length);=0A=
  for (var index =3D 0; index < boundary; ++index)=0A=
    if (newS[index] !=3D oldS[index])=0A=
      return index;=0A=
  return boundary;=0A=
};=0A=
=0A=
Ajax.Autocompleter =3D Class.create(Autocompleter.Base, {=0A=
  initialize: function(element, update, url, options) {=0A=
    this.baseInitialize(element, update, options);=0A=
    this.options.asynchronous  =3D true;=0A=
    this.options.onComplete    =3D this.onComplete.bind(this);=0A=
    this.options.defaultParams =3D this.options.parameters || null;=0A=
    this.url                   =3D url;=0A=
  },=0A=
=0A=
  getUpdatedChoices: function() {=0A=
    this.startIndicator();=0A=
=0A=
    var entry =3D encodeURIComponent(this.options.paramName) + '=3D' +=0A=
      encodeURIComponent(this.getToken());=0A=
=0A=
    this.options.parameters =3D this.options.callback ?=0A=
      this.options.callback(this.element, entry) : entry;=0A=
=0A=
    if(this.options.defaultParams)=0A=
      this.options.parameters +=3D '&' + this.options.defaultParams;=0A=
=0A=
    new Ajax.Request(this.url, this.options);=0A=
  },=0A=
=0A=
  onComplete: function(request) {=0A=
    this.updateChoices(request.responseText);=0A=
  }=0A=
});=0A=
=0A=
// The local array autocompleter. Used when you'd prefer to=0A=
// inject an array of autocompletion options into the page, rather=0A=
// than sending out Ajax queries, which can be quite slow sometimes.=0A=
//=0A=
// The constructor takes four parameters. The first two are, as usual,=0A=
// the id of the monitored textbox, and id of the autocompletion menu.=0A=
// The third is the array you want to autocomplete from, and the fourth=0A=
// is the options block.=0A=
//=0A=
// Extra local autocompletion options:=0A=
// - choices - How many autocompletion choices to offer=0A=
//=0A=
// - partialSearch - If false, the autocompleter will match entered=0A=
//                    text only at the beginning of strings in the=0A=
//                    autocomplete array. Defaults to true, which will=0A=
//                    match text at the beginning of any *word* in the=0A=
//                    strings in the autocomplete array. If you want to=0A=
//                    search anywhere in the string, additionally set=0A=
//                    the option fullSearch to true (default: off).=0A=
//=0A=
// - fullSsearch - Search anywhere in autocomplete array strings.=0A=
//=0A=
// - partialChars - How many characters to enter before triggering=0A=
//                   a partial match (unlike minChars, which defines=0A=
//                   how many characters are required to do any match=0A=
//                   at all). Defaults to 2.=0A=
//=0A=
// - ignoreCase - Whether to ignore case when autocompleting.=0A=
//                 Defaults to true.=0A=
//=0A=
// It's possible to pass in a custom function as the 'selector'=0A=
// option, if you prefer to write your own autocompletion logic.=0A=
// In that case, the other options above will not apply unless=0A=
// you support them.=0A=
=0A=
Autocompleter.Local =3D Class.create(Autocompleter.Base, {=0A=
  initialize: function(element, update, array, options) {=0A=
    this.baseInitialize(element, update, options);=0A=
    this.options.array =3D array;=0A=
  },=0A=
=0A=
  getUpdatedChoices: function() {=0A=
    this.updateChoices(this.options.selector(this));=0A=
  },=0A=
=0A=
  setOptions: function(options) {=0A=
    this.options =3D Object.extend({=0A=
      choices: 10,=0A=
      partialSearch: true,=0A=
      partialChars: 2,=0A=
      ignoreCase: true,=0A=
      fullSearch: false,=0A=
      selector: function(instance) {=0A=
        var ret       =3D []; // Beginning matches=0A=
        var partial   =3D []; // Inside matches=0A=
        var entry     =3D instance.getToken();=0A=
        var count     =3D 0;=0A=
=0A=
        for (var i =3D 0; i < instance.options.array.length &&=0A=
          ret.length < instance.options.choices ; i++) {=0A=
=0A=
          var elem =3D instance.options.array[i];=0A=
          var foundPos =3D instance.options.ignoreCase ?=0A=
            elem.toLowerCase().indexOf(entry.toLowerCase()) :=0A=
            elem.indexOf(entry);=0A=
=0A=
          while (foundPos !=3D -1) {=0A=
            if (foundPos =3D=3D 0 && elem.length !=3D entry.length) {=0A=
              ret.push("<li><strong>" + elem.substr(0, entry.length) + =
"</strong>" +=0A=
                elem.substr(entry.length) + "</li>");=0A=
              break;=0A=
            } else if (entry.length >=3D instance.options.partialChars &&=0A=
              instance.options.partialSearch && foundPos !=3D -1) {=0A=
              if (instance.options.fullSearch || =
/\s/.test(elem.substr(foundPos-1,1))) {=0A=
                partial.push("<li>" + elem.substr(0, foundPos) + =
"<strong>" +=0A=
                  elem.substr(foundPos, entry.length) + "</strong>" + =
elem.substr(=0A=
                  foundPos + entry.length) + "</li>");=0A=
                break;=0A=
              }=0A=
            }=0A=
=0A=
            foundPos =3D instance.options.ignoreCase ?=0A=
              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + =
1) :=0A=
              elem.indexOf(entry, foundPos + 1);=0A=
=0A=
          }=0A=
        }=0A=
        if (partial.length)=0A=
          ret =3D ret.concat(partial.slice(0, instance.options.choices - =
ret.length));=0A=
        return "<ul>" + ret.join('') + "</ul>";=0A=
      }=0A=
    }, options || { });=0A=
  }=0A=
});=0A=
=0A=
// AJAX in-place editor and collection editor=0A=
// Full rewrite by Christophe Porteneuve <tdd@tddsworld.com> (April =
2007).=0A=
=0A=
// Use this if you notice weird scrolling problems on some browsers,=0A=
// the DOM might be a bit confused when this gets called so do this=0A=
// waits 1 ms (with setTimeout) until it does the activation=0A=
Field.scrollFreeActivate =3D function(field) {=0A=
  setTimeout(function() {=0A=
    Field.activate(field);=0A=
  }, 1);=0A=
};=0A=
=0A=
Ajax.InPlaceEditor =3D Class.create({=0A=
  initialize: function(element, url, options) {=0A=
    this.url =3D url;=0A=
    this.element =3D element =3D $(element);=0A=
    this.prepareOptions();=0A=
    this._controls =3D { };=0A=
    arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION =
LAYER!!!=0A=
    Object.extend(this.options, options || { });=0A=
    if (!this.options.formId && this.element.id) {=0A=
      this.options.formId =3D this.element.id + '-inplaceeditor';=0A=
      if ($(this.options.formId))=0A=
        this.options.formId =3D '';=0A=
    }=0A=
    if (this.options.externalControl)=0A=
      this.options.externalControl =3D $(this.options.externalControl);=0A=
    if (!this.options.externalControl)=0A=
      this.options.externalControlOnly =3D false;=0A=
    this._originalBackground =3D =
this.element.getStyle('background-color') || 'transparent';=0A=
    this.element.title =3D this.options.clickToEditText;=0A=
    this._boundCancelHandler =3D this.handleFormCancellation.bind(this);=0A=
    this._boundComplete =3D (this.options.onComplete || =
Prototype.emptyFunction).bind(this);=0A=
    this._boundFailureHandler =3D this.handleAJAXFailure.bind(this);=0A=
    this._boundSubmitHandler =3D this.handleFormSubmission.bind(this);=0A=
    this._boundWrapperHandler =3D this.wrapUp.bind(this);=0A=
    this.registerListeners();=0A=
  },=0A=
  checkForEscapeOrReturn: function(e) {=0A=
    if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;=0A=
    if (Event.KEY_ESC =3D=3D e.keyCode)=0A=
      this.handleFormCancellation(e);=0A=
    else if (Event.KEY_RETURN =3D=3D e.keyCode)=0A=
      this.handleFormSubmission(e);=0A=
  },=0A=
  createControl: function(mode, handler, extraClasses) {=0A=
    var control =3D this.options[mode + 'Control'];=0A=
    var text =3D this.options[mode + 'Text'];=0A=
    if ('button' =3D=3D control) {=0A=
      var btn =3D document.createElement('input');=0A=
      btn.type =3D 'submit';=0A=
      btn.value =3D text;=0A=
      btn.className =3D 'editor_' + mode + '_button';=0A=
      if ('cancel' =3D=3D mode)=0A=
        btn.onclick =3D this._boundCancelHandler;=0A=
      this._form.appendChild(btn);=0A=
      this._controls[mode] =3D btn;=0A=
    } else if ('link' =3D=3D control) {=0A=
      var link =3D document.createElement('a');=0A=
      link.href =3D '#';=0A=
      link.appendChild(document.createTextNode(text));=0A=
      link.onclick =3D 'cancel' =3D=3D mode ? this._boundCancelHandler : =
this._boundSubmitHandler;=0A=
      link.className =3D 'editor_' + mode + '_link';=0A=
      if (extraClasses)=0A=
        link.className +=3D ' ' + extraClasses;=0A=
      this._form.appendChild(link);=0A=
      this._controls[mode] =3D link;=0A=
    }=0A=
  },=0A=
  createEditField: function() {=0A=
    var text =3D (this.options.loadTextURL ? this.options.loadingText : =
this.getText());=0A=
    var fld;=0A=
    if (1 >=3D this.options.rows && !/\r|\n/.test(this.getText())) {=0A=
      fld =3D document.createElement('input');=0A=
      fld.type =3D 'text';=0A=
      var size =3D this.options.size || this.options.cols || 0;=0A=
      if (0 < size) fld.size =3D size;=0A=
    } else {=0A=
      fld =3D document.createElement('textarea');=0A=
      fld.rows =3D (1 >=3D this.options.rows ? this.options.autoRows : =
this.options.rows);=0A=
      fld.cols =3D this.options.cols || 40;=0A=
    }=0A=
    fld.name =3D this.options.paramName;=0A=
    fld.value =3D text; // No HTML breaks conversion anymore=0A=
    fld.className =3D 'editor_field';=0A=
    if (this.options.submitOnBlur)=0A=
      fld.onblur =3D this._boundSubmitHandler;=0A=
    this._controls.editor =3D fld;=0A=
    if (this.options.loadTextURL)=0A=
      this.loadExternalText();=0A=
    this._form.appendChild(this._controls.editor);=0A=
  },=0A=
  createForm: function() {=0A=
    var ipe =3D this;=0A=
    function addText(mode, condition) {=0A=
      var text =3D ipe.options['text' + mode + 'Controls'];=0A=
      if (!text || condition =3D=3D=3D false) return;=0A=
      ipe._form.appendChild(document.createTextNode(text));=0A=
    };=0A=
    this._form =3D $(document.createElement('form'));=0A=
    this._form.id =3D this.options.formId;=0A=
    this._form.addClassName(this.options.formClassName);=0A=
    this._form.onsubmit =3D this._boundSubmitHandler;=0A=
    this.createEditField();=0A=
    if ('textarea' =3D=3D this._controls.editor.tagName.toLowerCase())=0A=
      this._form.appendChild(document.createElement('br'));=0A=
    if (this.options.onFormCustomization)=0A=
      this.options.onFormCustomization(this, this._form);=0A=
    addText('Before', this.options.okControl || =
this.options.cancelControl);=0A=
    this.createControl('ok', this._boundSubmitHandler);=0A=
    addText('Between', this.options.okControl && =
this.options.cancelControl);=0A=
    this.createControl('cancel', this._boundCancelHandler, =
'editor_cancel');=0A=
    addText('After', this.options.okControl || =
this.options.cancelControl);=0A=
  },=0A=
  destroy: function() {=0A=
    if (this._oldInnerHTML)=0A=
      this.element.innerHTML =3D this._oldInnerHTML;=0A=
    this.leaveEditMode();=0A=
    this.unregisterListeners();=0A=
  },=0A=
  enterEditMode: function(e) {=0A=
    if (this._saving || this._editing) return;=0A=
    this._editing =3D true;=0A=
    this.triggerCallback('onEnterEditMode');=0A=
    if (this.options.externalControl)=0A=
      this.options.externalControl.hide();=0A=
    this.element.hide();=0A=
    this.createForm();=0A=
    this.element.parentNode.insertBefore(this._form, this.element);=0A=
    if (!this.options.loadTextURL)=0A=
      this.postProcessEditField();=0A=
    if (e) Event.stop(e);=0A=
  },=0A=
  enterHover: function(e) {=0A=
    if (this.options.hoverClassName)=0A=
      this.element.addClassName(this.options.hoverClassName);=0A=
    if (this._saving) return;=0A=
    this.triggerCallback('onEnterHover');=0A=
  },=0A=
  getText: function() {=0A=
    return this.element.innerHTML.unescapeHTML();=0A=
  },=0A=
  handleAJAXFailure: function(transport) {=0A=
    this.triggerCallback('onFailure', transport);=0A=
    if (this._oldInnerHTML) {=0A=
      this.element.innerHTML =3D this._oldInnerHTML;=0A=
      this._oldInnerHTML =3D null;=0A=
    }=0A=
  },=0A=
  handleFormCancellation: function(e) {=0A=
    this.wrapUp();=0A=
    if (e) Event.stop(e);=0A=
  },=0A=
  handleFormSubmission: function(e) {=0A=
    var form =3D this._form;=0A=
    var value =3D $F(this._controls.editor);=0A=
    this.prepareSubmission();=0A=
    var params =3D this.options.callback(form, value) || '';=0A=
    if (Object.isString(params))=0A=
      params =3D params.toQueryParams();=0A=
    params.editorId =3D this.element.id;=0A=
    if (this.options.htmlResponse) {=0A=
      var options =3D Object.extend({ evalScripts: true }, =
this.options.ajaxOptions);=0A=
      Object.extend(options, {=0A=
        parameters: params,=0A=
        onComplete: this._boundWrapperHandler,=0A=
        onFailure: this._boundFailureHandler=0A=
      });=0A=
      new Ajax.Updater({ success: this.element }, this.url, options);=0A=
    } else {=0A=
      var options =3D Object.extend({ method: 'get' }, =
this.options.ajaxOptions);=0A=
      Object.extend(options, {=0A=
        parameters: params,=0A=
        onComplete: this._boundWrapperHandler,=0A=
        onFailure: this._boundFailureHandler=0A=
      });=0A=
      new Ajax.Request(this.url, options);=0A=
    }=0A=
    if (e) Event.stop(e);=0A=
  },=0A=
  leaveEditMode: function() {=0A=
    this.element.removeClassName(this.options.savingClassName);=0A=
    this.removeForm();=0A=
    this.leaveHover();=0A=
    this.element.style.backgroundColor =3D this._originalBackground;=0A=
    this.element.show();=0A=
    if (this.options.externalControl)=0A=
      this.options.externalControl.show();=0A=
    this._saving =3D false;=0A=
    this._editing =3D false;=0A=
    this._oldInnerHTML =3D null;=0A=
    this.triggerCallback('onLeaveEditMode');=0A=
  },=0A=
  leaveHover: function(e) {=0A=
    if (this.options.hoverClassName)=0A=
      this.element.removeClassName(this.options.hoverClassName);=0A=
    if (this._saving) return;=0A=
    this.triggerCallback('onLeaveHover');=0A=
  },=0A=
  loadExternalText: function() {=0A=
    this._form.addClassName(this.options.loadingClassName);=0A=
    this._controls.editor.disabled =3D true;=0A=
    var options =3D Object.extend({ method: 'get' }, =
this.options.ajaxOptions);=0A=
    Object.extend(options, {=0A=
      parameters: 'editorId=3D' + encodeURIComponent(this.element.id),=0A=
      onComplete: Prototype.emptyFunction,=0A=
      onSuccess: function(transport) {=0A=
        this._form.removeClassName(this.options.loadingClassName);=0A=
        var text =3D transport.responseText;=0A=
        if (this.options.stripLoadedTextTags)=0A=
          text =3D text.stripTags();=0A=
        this._controls.editor.value =3D text;=0A=
        this._controls.editor.disabled =3D false;=0A=
        this.postProcessEditField();=0A=
      }.bind(this),=0A=
      onFailure: this._boundFailureHandler=0A=
    });=0A=
    new Ajax.Request(this.options.loadTextURL, options);=0A=
  },=0A=
  postProcessEditField: function() {=0A=
    var fpc =3D this.options.fieldPostCreation;=0A=
    if (fpc)=0A=
      $(this._controls.editor)['focus' =3D=3D fpc ? 'focus' : =
'activate']();=0A=
  },=0A=
  prepareOptions: function() {=0A=
    this.options =3D Object.clone(Ajax.InPlaceEditor.DefaultOptions);=0A=
    Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);=0A=
    [this._extraDefaultOptions].flatten().compact().each(function(defs) {=0A=
      Object.extend(this.options, defs);=0A=
    }.bind(this));=0A=
  },=0A=
  prepareSubmission: function() {=0A=
    this._saving =3D true;=0A=
    this.removeForm();=0A=
    this.leaveHover();=0A=
    this.showSaving();=0A=
  },=0A=
  registerListeners: function() {=0A=
    this._listeners =3D { };=0A=
    var listener;=0A=
    $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {=0A=
      listener =3D this[pair.value].bind(this);=0A=
      this._listeners[pair.key] =3D listener;=0A=
      if (!this.options.externalControlOnly)=0A=
        this.element.observe(pair.key, listener);=0A=
      if (this.options.externalControl)=0A=
        this.options.externalControl.observe(pair.key, listener);=0A=
    }.bind(this));=0A=
  },=0A=
  removeForm: function() {=0A=
    if (!this._form) return;=0A=
    this._form.remove();=0A=
    this._form =3D null;=0A=
    this._controls =3D { };=0A=
  },=0A=
  showSaving: function() {=0A=
    this._oldInnerHTML =3D this.element.innerHTML;=0A=
    this.element.innerHTML =3D this.options.savingText;=0A=
    this.element.addClassName(this.options.savingClassName);=0A=
    this.element.style.backgroundColor =3D this._originalBackground;=0A=
    this.element.show();=0A=
  },=0A=
  triggerCallback: function(cbName, arg) {=0A=
    if ('function' =3D=3D typeof this.options[cbName]) {=0A=
      this.options[cbName](this, arg);=0A=
    }=0A=
  },=0A=
  unregisterListeners: function() {=0A=
    $H(this._listeners).each(function(pair) {=0A=
      if (!this.options.externalControlOnly)=0A=
        this.element.stopObserving(pair.key, pair.value);=0A=
      if (this.options.externalControl)=0A=
        this.options.externalControl.stopObserving(pair.key, pair.value);=0A=
    }.bind(this));=0A=
  },=0A=
  wrapUp: function(transport) {=0A=
    this.leaveEditMode();=0A=
    // Can't use triggerCallback due to backward compatibility: requires=0A=
    // binding + direct element=0A=
    this._boundComplete(transport, this.element);=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Ajax.InPlaceEditor.prototype, {=0A=
  dispose: Ajax.InPlaceEditor.prototype.destroy=0A=
});=0A=
=0A=
Ajax.InPlaceCollectionEditor =3D Class.create(Ajax.InPlaceEditor, {=0A=
  initialize: function($super, element, url, options) {=0A=
    this._extraDefaultOptions =3D =
Ajax.InPlaceCollectionEditor.DefaultOptions;=0A=
    $super(element, url, options);=0A=
  },=0A=
=0A=
  createEditField: function() {=0A=
    var list =3D document.createElement('select');=0A=
    list.name =3D this.options.paramName;=0A=
    list.size =3D 1;=0A=
    this._controls.editor =3D list;=0A=
    this._collection =3D this.options.collection || [];=0A=
    if (this.options.loadCollectionURL)=0A=
      this.loadCollection();=0A=
    else=0A=
      this.checkForExternalText();=0A=
    this._form.appendChild(this._controls.editor);=0A=
  },=0A=
=0A=
  loadCollection: function() {=0A=
    this._form.addClassName(this.options.loadingClassName);=0A=
    this.showLoadingText(this.options.loadingCollectionText);=0A=
    var options =3D Object.extend({ method: 'get' }, =
this.options.ajaxOptions);=0A=
    Object.extend(options, {=0A=
      parameters: 'editorId=3D' + encodeURIComponent(this.element.id),=0A=
      onComplete: Prototype.emptyFunction,=0A=
      onSuccess: function(transport) {=0A=
        var js =3D transport.responseText.strip();=0A=
        if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check=0A=
          throw('Server returned an invalid collection representation.');=0A=
        this._collection =3D eval(js);=0A=
        this.checkForExternalText();=0A=
      }.bind(this),=0A=
      onFailure: this.onFailure=0A=
    });=0A=
    new Ajax.Request(this.options.loadCollectionURL, options);=0A=
  },=0A=
=0A=
  showLoadingText: function(text) {=0A=
    this._controls.editor.disabled =3D true;=0A=
    var tempOption =3D this._controls.editor.firstChild;=0A=
    if (!tempOption) {=0A=
      tempOption =3D document.createElement('option');=0A=
      tempOption.value =3D '';=0A=
      this._controls.editor.appendChild(tempOption);=0A=
      tempOption.selected =3D true;=0A=
    }=0A=
    tempOption.update((text || '').stripScripts().stripTags());=0A=
  },=0A=
=0A=
  checkForExternalText: function() {=0A=
    this._text =3D this.getText();=0A=
    if (this.options.loadTextURL)=0A=
      this.loadExternalText();=0A=
    else=0A=
      this.buildOptionList();=0A=
  },=0A=
=0A=
  loadExternalText: function() {=0A=
    this.showLoadingText(this.options.loadingText);=0A=
    var options =3D Object.extend({ method: 'get' }, =
this.options.ajaxOptions);=0A=
    Object.extend(options, {=0A=
      parameters: 'editorId=3D' + encodeURIComponent(this.element.id),=0A=
      onComplete: Prototype.emptyFunction,=0A=
      onSuccess: function(transport) {=0A=
        this._text =3D transport.responseText.strip();=0A=
        this.buildOptionList();=0A=
      }.bind(this),=0A=
      onFailure: this.onFailure=0A=
    });=0A=
    new Ajax.Request(this.options.loadTextURL, options);=0A=
  },=0A=
=0A=
  buildOptionList: function() {=0A=
    this._form.removeClassName(this.options.loadingClassName);=0A=
    this._collection =3D this._collection.map(function(entry) {=0A=
      return 2 =3D=3D=3D entry.length ? entry : [entry, entry].flatten();=0A=
    });=0A=
    var marker =3D ('value' in this.options) ? this.options.value : =
this._text;=0A=
    var textFound =3D this._collection.any(function(entry) {=0A=
      return entry[0] =3D=3D marker;=0A=
    }.bind(this));=0A=
    this._controls.editor.update('');=0A=
    var option;=0A=
    this._collection.each(function(entry, index) {=0A=
      option =3D document.createElement('option');=0A=
      option.value =3D entry[0];=0A=
      option.selected =3D textFound ? entry[0] =3D=3D marker : 0 =3D=3D =
index;=0A=
      option.appendChild(document.createTextNode(entry[1]));=0A=
      this._controls.editor.appendChild(option);=0A=
    }.bind(this));=0A=
    this._controls.editor.disabled =3D false;=0A=
    Field.scrollFreeActivate(this._controls.editor);=0A=
  }=0A=
});=0A=
=0A=
//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****=0A=
//**** This only  exists for a while,  in order to  let ****=0A=
//**** users adapt to  the new API.  Read up on the new ****=0A=
//**** API and convert your code to it ASAP!            ****=0A=
=0A=
Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions =3D =
function(options) {=0A=
  if (!options) return;=0A=
  function fallback(name, expr) {=0A=
    if (name in options || expr =3D=3D=3D undefined) return;=0A=
    options[name] =3D expr;=0A=
  };=0A=
  fallback('cancelControl', (options.cancelLink ? 'link' : =
(options.cancelButton ? 'button' :=0A=
    options.cancelLink =3D=3D options.cancelButton =3D=3D false ? false =
: undefined)));=0A=
  fallback('okControl', (options.okLink ? 'link' : (options.okButton ? =
'button' :=0A=
    options.okLink =3D=3D options.okButton =3D=3D false ? false : =
undefined)));=0A=
  fallback('highlightColor', options.highlightcolor);=0A=
  fallback('highlightEndColor', options.highlightendcolor);=0A=
};=0A=
=0A=
Object.extend(Ajax.InPlaceEditor, {=0A=
  DefaultOptions: {=0A=
    ajaxOptions: { },=0A=
    autoRows: 3,                                // Use when multi-line =
w/ rows =3D=3D 1=0A=
    cancelControl: 'link',                      // 'link'|'button'|false=0A=
    cancelText: 'cancel',=0A=
    clickToEditText: 'Click to edit',=0A=
    externalControl: null,                      // id|elt=0A=
    externalControlOnly: false,=0A=
    fieldPostCreation: 'activate',              // =
'activate'|'focus'|false=0A=
    formClassName: 'inplaceeditor-form',=0A=
    formId: null,                               // id|elt=0A=
    highlightColor: '#ffff99',=0A=
    highlightEndColor: '#ffffff',=0A=
    hoverClassName: '',=0A=
    htmlResponse: true,=0A=
    loadingClassName: 'inplaceeditor-loading',=0A=
    loadingText: 'Loading...',=0A=
    okControl: 'button',                        // 'link'|'button'|false=0A=
    okText: 'ok',=0A=
    paramName: 'value',=0A=
    rows: 1,                                    // If 1 and multi-line, =
uses autoRows=0A=
    savingClassName: 'inplaceeditor-saving',=0A=
    savingText: 'Saving...',=0A=
    size: 0,=0A=
    stripLoadedTextTags: false,=0A=
    submitOnBlur: false,=0A=
    textAfterControls: '',=0A=
    textBeforeControls: '',=0A=
    textBetweenControls: ''=0A=
  },=0A=
  DefaultCallbacks: {=0A=
    callback: function(form) {=0A=
      return Form.serialize(form);=0A=
    },=0A=
    onComplete: function(transport, element) {=0A=
      // For backward compatibility, this one is bound to the IPE, and =
passes=0A=
      // the element directly.  It was too often customized, so we don't =
break it.=0A=
      new Effect.Highlight(element, {=0A=
        startcolor: this.options.highlightColor, keepBackgroundImage: =
true });=0A=
    },=0A=
    onEnterEditMode: null,=0A=
    onEnterHover: function(ipe) {=0A=
      ipe.element.style.backgroundColor =3D ipe.options.highlightColor;=0A=
      if (ipe._effect)=0A=
        ipe._effect.cancel();=0A=
    },=0A=
    onFailure: function(transport, ipe) {=0A=
      alert('Error communication with the server: ' + =
transport.responseText.stripTags());=0A=
    },=0A=
    onFormCustomization: null, // Takes the IPE and its generated form, =
after editor, before controls.=0A=
    onLeaveEditMode: null,=0A=
    onLeaveHover: function(ipe) {=0A=
      ipe._effect =3D new Effect.Highlight(ipe.element, {=0A=
        startcolor: ipe.options.highlightColor, endcolor: =
ipe.options.highlightEndColor,=0A=
        restorecolor: ipe._originalBackground, keepBackgroundImage: true=0A=
      });=0A=
    }=0A=
  },=0A=
  Listeners: {=0A=
    click: 'enterEditMode',=0A=
    keydown: 'checkForEscapeOrReturn',=0A=
    mouseover: 'enterHover',=0A=
    mouseout: 'leaveHover'=0A=
  }=0A=
});=0A=
=0A=
Ajax.InPlaceCollectionEditor.DefaultOptions =3D {=0A=
  loadingCollectionText: 'Loading options...'=0A=
};=0A=
=0A=
// Delayed observer, like Form.Element.Observer,=0A=
// but waits for delay after last key input=0A=
// Ideal for live-search fields=0A=
=0A=
Form.Element.DelayedObserver =3D Class.create({=0A=
  initialize: function(element, delay, callback) {=0A=
    this.delay     =3D delay || 0.5;=0A=
    this.element   =3D $(element);=0A=
    this.callback  =3D callback;=0A=
    this.timer     =3D null;=0A=
    this.lastValue =3D $F(this.element);=0A=
    =
Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListen=
er(this));=0A=
  },=0A=
  delayedListener: function(event) {=0A=
    if(this.lastValue =3D=3D $F(this.element)) return;=0A=
    if(this.timer) clearTimeout(this.timer);=0A=
    this.timer =3D setTimeout(this.onTimerEvent.bind(this), this.delay * =
1000);=0A=
    this.lastValue =3D $F(this.element);=0A=
  },=0A=
  onTimerEvent: function() {=0A=
    this.timer =3D null;=0A=
    this.callback(this.element, $F(this.element));=0A=
  }=0A=
});
------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.3/slider.js

// script.aculo.us slider.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009=0A=
=0A=
// Copyright (c) 2005-2009 Marty Haught, Thomas Fuchs=0A=
//=0A=
// script.aculo.us is freely distributable under the terms of an =
MIT-style license.=0A=
// For details, see the script.aculo.us web site: http://script.aculo.us/=0A=
=0A=
if (!Control) var Control =3D { };=0A=
=0A=
// options:=0A=
//  axis: 'vertical', or 'horizontal' (default)=0A=
//=0A=
// callbacks:=0A=
//  onChange(value)=0A=
//  onSlide(value)=0A=
Control.Slider =3D Class.create({=0A=
  initialize: function(handle, track, options) {=0A=
    var slider =3D this;=0A=
=0A=
    if (Object.isArray(handle)) {=0A=
      this.handles =3D handle.collect( function(e) { return $(e) });=0A=
    } else {=0A=
      this.handles =3D [$(handle)];=0A=
    }=0A=
=0A=
    this.track   =3D $(track);=0A=
    this.options =3D options || { };=0A=
=0A=
    this.axis      =3D this.options.axis || 'horizontal';=0A=
    this.increment =3D this.options.increment || 1;=0A=
    this.step      =3D parseInt(this.options.step || '1');=0A=
    this.range     =3D this.options.range || $R(0,1);=0A=
=0A=
    this.value     =3D 0; // assure backwards compat=0A=
    this.values    =3D this.handles.map( function() { return 0 });=0A=
    this.spans     =3D this.options.spans ? =
this.options.spans.map(function(s){ return $(s) }) : false;=0A=
    this.options.startSpan =3D $(this.options.startSpan || null);=0A=
    this.options.endSpan   =3D $(this.options.endSpan || null);=0A=
=0A=
    this.restricted =3D this.options.restricted || false;=0A=
=0A=
    this.maximum   =3D this.options.maximum || this.range.end;=0A=
    this.minimum   =3D this.options.minimum || this.range.start;=0A=
=0A=
    // Will be used to align the handle onto the track, if necessary=0A=
    this.alignX =3D parseInt(this.options.alignX || '0');=0A=
    this.alignY =3D parseInt(this.options.alignY || '0');=0A=
=0A=
    this.trackLength =3D this.maximumOffset() - this.minimumOffset();=0A=
=0A=
    this.handleLength =3D this.isVertical() ?=0A=
      (this.handles[0].offsetHeight !=3D 0 ?=0A=
        this.handles[0].offsetHeight : =
this.handles[0].style.height.replace(/px$/,"")) :=0A=
      (this.handles[0].offsetWidth !=3D 0 ? this.handles[0].offsetWidth :=0A=
        this.handles[0].style.width.replace(/px$/,""));=0A=
=0A=
    this.active   =3D false;=0A=
    this.dragging =3D false;=0A=
    this.disabled =3D false;=0A=
=0A=
    if (this.options.disabled) this.setDisabled();=0A=
=0A=
    // Allowed values array=0A=
    this.allowedValues =3D this.options.values ? =
this.options.values.sortBy(Prototype.K) : false;=0A=
    if (this.allowedValues) {=0A=
      this.minimum =3D this.allowedValues.min();=0A=
      this.maximum =3D this.allowedValues.max();=0A=
    }=0A=
=0A=
    this.eventMouseDown =3D this.startDrag.bindAsEventListener(this);=0A=
    this.eventMouseUp   =3D this.endDrag.bindAsEventListener(this);=0A=
    this.eventMouseMove =3D this.update.bindAsEventListener(this);=0A=
=0A=
    // Initialize handles in reverse (make sure first handle is active)=0A=
    this.handles.each( function(h,i) {=0A=
      i =3D slider.handles.length-1-i;=0A=
      slider.setValue(parseFloat(=0A=
        (Object.isArray(slider.options.sliderValue) ?=0A=
          slider.options.sliderValue[i] : slider.options.sliderValue) ||=0A=
         slider.range.start), i);=0A=
      h.makePositioned().observe("mousedown", slider.eventMouseDown);=0A=
    });=0A=
=0A=
    this.track.observe("mousedown", this.eventMouseDown);=0A=
    document.observe("mouseup", this.eventMouseUp);=0A=
    document.observe("mousemove", this.eventMouseMove);=0A=
=0A=
    this.initialized =3D true;=0A=
  },=0A=
  dispose: function() {=0A=
    var slider =3D this;=0A=
    Event.stopObserving(this.track, "mousedown", this.eventMouseDown);=0A=
    Event.stopObserving(document, "mouseup", this.eventMouseUp);=0A=
    Event.stopObserving(document, "mousemove", this.eventMouseMove);=0A=
    this.handles.each( function(h) {=0A=
      Event.stopObserving(h, "mousedown", slider.eventMouseDown);=0A=
    });=0A=
  },=0A=
  setDisabled: function(){=0A=
    this.disabled =3D true;=0A=
  },=0A=
  setEnabled: function(){=0A=
    this.disabled =3D false;=0A=
  },=0A=
  getNearestValue: function(value){=0A=
    if (this.allowedValues){=0A=
      if (value >=3D this.allowedValues.max()) =
return(this.allowedValues.max());=0A=
      if (value <=3D this.allowedValues.min()) =
return(this.allowedValues.min());=0A=
=0A=
      var offset =3D Math.abs(this.allowedValues[0] - value);=0A=
      var newValue =3D this.allowedValues[0];=0A=
      this.allowedValues.each( function(v) {=0A=
        var currentOffset =3D Math.abs(v - value);=0A=
        if (currentOffset <=3D offset){=0A=
          newValue =3D v;=0A=
          offset =3D currentOffset;=0A=
        }=0A=
      });=0A=
      return newValue;=0A=
    }=0A=
    if (value > this.range.end) return this.range.end;=0A=
    if (value < this.range.start) return this.range.start;=0A=
    return value;=0A=
  },=0A=
  setValue: function(sliderValue, handleIdx){=0A=
    if (!this.active) {=0A=
      this.activeHandleIdx =3D handleIdx || 0;=0A=
      this.activeHandle    =3D this.handles[this.activeHandleIdx];=0A=
      this.updateStyles();=0A=
    }=0A=
    handleIdx =3D handleIdx || this.activeHandleIdx || 0;=0A=
    if (this.initialized && this.restricted) {=0A=
      if ((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))=0A=
        sliderValue =3D this.values[handleIdx-1];=0A=
      if ((handleIdx < (this.handles.length-1)) && =
(sliderValue>this.values[handleIdx+1]))=0A=
        sliderValue =3D this.values[handleIdx+1];=0A=
    }=0A=
    sliderValue =3D this.getNearestValue(sliderValue);=0A=
    this.values[handleIdx] =3D sliderValue;=0A=
    this.value =3D this.values[0]; // assure backwards compat=0A=
=0A=
    this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] =3D=0A=
      this.translateToPx(sliderValue);=0A=
=0A=
    this.drawSpans();=0A=
    if (!this.dragging || !this.event) this.updateFinished();=0A=
  },=0A=
  setValueBy: function(delta, handleIdx) {=0A=
    this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + =
delta,=0A=
      handleIdx || this.activeHandleIdx || 0);=0A=
  },=0A=
  translateToPx: function(value) {=0A=
    return Math.round(=0A=
      =
((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) =
*=0A=
      (value - this.range.start)) + "px";=0A=
  },=0A=
  translateToValue: function(offset) {=0A=
    return ((offset/(this.trackLength-this.handleLength) *=0A=
      (this.range.end-this.range.start)) + this.range.start);=0A=
  },=0A=
  getRange: function(range) {=0A=
    var v =3D this.values.sortBy(Prototype.K);=0A=
    range =3D range || 0;=0A=
    return $R(v[range],v[range+1]);=0A=
  },=0A=
  minimumOffset: function(){=0A=
    return(this.isVertical() ? this.alignY : this.alignX);=0A=
  },=0A=
  maximumOffset: function(){=0A=
    return(this.isVertical() ?=0A=
      (this.track.offsetHeight !=3D 0 ? this.track.offsetHeight :=0A=
        this.track.style.height.replace(/px$/,"")) - this.alignY :=0A=
      (this.track.offsetWidth !=3D 0 ? this.track.offsetWidth :=0A=
        this.track.style.width.replace(/px$/,"")) - this.alignX);=0A=
  },=0A=
  isVertical:  function(){=0A=
    return (this.axis =3D=3D 'vertical');=0A=
  },=0A=
  drawSpans: function() {=0A=
    var slider =3D this;=0A=
    if (this.spans)=0A=
      $R(0, this.spans.length-1).each(function(r) { =
slider.setSpan(slider.spans[r], slider.getRange(r)) });=0A=
    if (this.options.startSpan)=0A=
      this.setSpan(this.options.startSpan,=0A=
        $R(0, this.values.length>1 ? this.getRange(0).min() : this.value =
));=0A=
    if (this.options.endSpan)=0A=
      this.setSpan(this.options.endSpan,=0A=
        $R(this.values.length>1 ? =
this.getRange(this.spans.length-1).max() : this.value, this.maximum));=0A=
  },=0A=
  setSpan: function(span, range) {=0A=
    if (this.isVertical()) {=0A=
      span.style.top =3D this.translateToPx(range.start);=0A=
      span.style.height =3D this.translateToPx(range.end - range.start + =
this.range.start);=0A=
    } else {=0A=
      span.style.left =3D this.translateToPx(range.start);=0A=
      span.style.width =3D this.translateToPx(range.end - range.start + =
this.range.start);=0A=
    }=0A=
  },=0A=
  updateStyles: function() {=0A=
    this.handles.each( function(h){ Element.removeClassName(h, =
'selected') });=0A=
    Element.addClassName(this.activeHandle, 'selected');=0A=
  },=0A=
  startDrag: function(event) {=0A=
    if (Event.isLeftClick(event)) {=0A=
      if (!this.disabled){=0A=
        this.active =3D true;=0A=
=0A=
        var handle =3D Event.element(event);=0A=
        var pointer  =3D [Event.pointerX(event), Event.pointerY(event)];=0A=
        var track =3D handle;=0A=
        if (track=3D=3Dthis.track) {=0A=
          var offsets  =3D this.track.cumulativeOffset();=0A=
          this.event =3D event;=0A=
          this.setValue(this.translateToValue(=0A=
           (this.isVertical() ? pointer[1]-offsets[1] : =
pointer[0]-offsets[0])-(this.handleLength/2)=0A=
          ));=0A=
          var offsets  =3D this.activeHandle.cumulativeOffset();=0A=
          this.offsetX =3D (pointer[0] - offsets[0]);=0A=
          this.offsetY =3D (pointer[1] - offsets[1]);=0A=
        } else {=0A=
          // find the handle (prevents issues with Safari)=0A=
          while((this.handles.indexOf(handle) =3D=3D -1) && =
handle.parentNode)=0A=
            handle =3D handle.parentNode;=0A=
=0A=
          if (this.handles.indexOf(handle)!=3D-1) {=0A=
            this.activeHandle    =3D handle;=0A=
            this.activeHandleIdx =3D =
this.handles.indexOf(this.activeHandle);=0A=
            this.updateStyles();=0A=
=0A=
            var offsets  =3D this.activeHandle.cumulativeOffset();=0A=
            this.offsetX =3D (pointer[0] - offsets[0]);=0A=
            this.offsetY =3D (pointer[1] - offsets[1]);=0A=
          }=0A=
        }=0A=
      }=0A=
      Event.stop(event);=0A=
    }=0A=
  },=0A=
  update: function(event) {=0A=
   if (this.active) {=0A=
      if (!this.dragging) this.dragging =3D true;=0A=
      this.draw(event);=0A=
      if (Prototype.Browser.WebKit) window.scrollBy(0,0);=0A=
      Event.stop(event);=0A=
   }=0A=
  },=0A=
  draw: function(event) {=0A=
    var pointer =3D [Event.pointerX(event), Event.pointerY(event)];=0A=
    var offsets =3D this.track.cumulativeOffset();=0A=
    pointer[0] -=3D this.offsetX + offsets[0];=0A=
    pointer[1] -=3D this.offsetY + offsets[1];=0A=
    this.event =3D event;=0A=
    this.setValue(this.translateToValue( this.isVertical() ? pointer[1] =
: pointer[0] ));=0A=
    if (this.initialized && this.options.onSlide)=0A=
      this.options.onSlide(this.values.length>1 ? this.values : =
this.value, this);=0A=
  },=0A=
  endDrag: function(event) {=0A=
    if (this.active && this.dragging) {=0A=
      this.finishDrag(event, true);=0A=
      Event.stop(event);=0A=
    }=0A=
    this.active =3D false;=0A=
    this.dragging =3D false;=0A=
  },=0A=
  finishDrag: function(event, success) {=0A=
    this.active =3D false;=0A=
    this.dragging =3D false;=0A=
    this.updateFinished();=0A=
  },=0A=
  updateFinished: function() {=0A=
    if (this.initialized && this.options.onChange)=0A=
      this.options.onChange(this.values.length>1 ? this.values : =
this.value, this);=0A=
    this.event =3D null;=0A=
  }=0A=
});
------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/yahoo-dom-event/yahoo-dom-event.js

/*=0A=
Copyright (c) 2009, Yahoo! Inc. All rights reserved.=0A=
Code licensed under the BSD License:=0A=
http://developer.yahoo.net/yui/license.txt=0A=
version: 2.7.0=0A=
*/=0A=
if(typeof YAHOO=3D=3D"undefined"||!YAHOO){var =
YAHOO=3D{};}YAHOO.namespace=3Dfunction(){var =
A=3Darguments,E=3Dnull,C,B,D;for(C=3D0;C<A.length;C=3DC+1){D=3D(""+A[C]).=
split(".");E=3DYAHOO;for(B=3D(D[0]=3D=3D"YAHOO")?1:0;B<D.length;B=3DB+1){=
E[D[B]]=3DE[D[B]]||{};E=3DE[D[B]];}}return =
E;};YAHOO.log=3Dfunction(D,A,C){var =
B=3DYAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return =
false;}};YAHOO.register=3Dfunction(A,E,D){var =
I=3DYAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]=3D{versions:[],builds:[]};=
}B=3DI[A];H=3DD.version;G=3DD.build;F=3DYAHOO.env.listeners;B.name=3DA;B.=
version=3DH;B.build=3DG;B.versions.push(H);B.builds.push(G);B.mainClass=3D=
E;for(C=3D0;C<F.length;C=3DC+1){F[C](B);}if(E){E.VERSION=3DH;E.BUILD=3DG;=
}else{YAHOO.log("mainClass is undefined for module =
"+A,"warn");}};YAHOO.env=3DYAHOO.env||{modules:[],listeners:[]};YAHOO.env=
.getVersion=3Dfunction(A){return =
YAHOO.env.modules[A]||null;};YAHOO.env.ua=3Dfunction(){var =
C=3D{ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0,caja:0},B=3Dnavigato=
r.userAgent,A;if((/KHTML/).test(B)){C.webkit=3D1;}A=3DB.match(/AppleWebKi=
t\/([^\s]*)/);if(A&&A[1]){C.webkit=3DparseFloat(A[1]);if(/ =
Mobile\//.test(B)){C.mobile=3D"Apple";}else{A=3DB.match(/NokiaN[^\/]*/);i=
f(A){C.mobile=3DA[0];}}A=3DB.match(/AdobeAIR\/([^\s]*)/);if(A){C.air=3DA[=
0];}}if(!C.webkit){A=3DB.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=
=3DparseFloat(A[1]);A=3DB.match(/Opera =
Mini[^;]*/);if(A){C.mobile=3DA[0];}}else{A=3DB.match(/MSIE\s([^;]*)/);if(=
A&&A[1]){C.ie=3DparseFloat(A[1]);}else{A=3DB.match(/Gecko\/([^\s]*)/);if(=
A){C.gecko=3D1;A=3DB.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=3DparseFl=
oat(A[1]);}}}}}A=3DB.match(/Caja\/([^\s]*)/);if(A&&A[1]){C.caja=3DparseFl=
oat(A[1]);}return =
C;}();(function(){YAHOO.namespace("util","widget","example");if("undefine=
d"!=3D=3Dtypeof YAHOO_config){var =
B=3DYAHOO_config.listener,A=3DYAHOO.env.listeners,D=3Dtrue,C;if(B){for(C=3D=
0;C<A.length;C=3DC+1){if(A[C]=3D=3DB){D=3Dfalse;break;}}if(D){A.push(B);}=
}}})();YAHOO.lang=3DYAHOO.lang||{};(function(){var =
B=3DYAHOO.lang,F=3D"[object Array]",C=3D"[object =
Function]",A=3DObject.prototype,E=3D["toString","valueOf"],D=3D{isArray:f=
unction(G){return =
A.toString.apply(G)=3D=3D=3DF;},isBoolean:function(G){return typeof =
G=3D=3D=3D"boolean";},isFunction:function(G){return =
A.toString.apply(G)=3D=3D=3DC;},isNull:function(G){return =
G=3D=3D=3Dnull;},isNumber:function(G){return typeof =
G=3D=3D=3D"number"&&isFinite(G);},isObject:function(G){return(G&&(typeof =
G=3D=3D=3D"object"||B.isFunction(G)))||false;},isString:function(G){retur=
n typeof G=3D=3D=3D"string";},isUndefined:function(G){return typeof =
G=3D=3D=3D"undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(I,H){var =
G,K,J;for(G=3D0;G<E.length;G=3DG+1){K=3DE[G];J=3DH[K];if(B.isFunction(J)&=
&J!=3DA[K]){I[K]=3DJ;}}}:function(){},extend:function(J,K,I){if(!K||!J){t=
hrow new Error("extend failed, please check that "+"all dependencies are =
included.");}var =
H=3Dfunction(){},G;H.prototype=3DK.prototype;J.prototype=3Dnew =
H();J.prototype.constructor=3DJ;J.superclass=3DK.prototype;if(K.prototype=
.constructor=3D=3DA.constructor){K.prototype.constructor=3DK;}if(I){for(G=
 in =
I){if(B.hasOwnProperty(I,G)){J.prototype[G]=3DI[G];}}B._IEEnumFix(J.proto=
type,I);}},augmentObject:function(K,J){if(!J||!K){throw new =
Error("Absorb failed, verify dependencies.");}var =
G=3Darguments,I,L,H=3DG[2];if(H&&H!=3D=3Dtrue){for(I=3D2;I<G.length;I=3DI=
+1){K[G[I]]=3DJ[G[I]];}}else{for(L in J){if(H||!(L in =
K)){K[L]=3DJ[L];}}B._IEEnumFix(K,J);}},augmentProto:function(J,I){if(!I||=
!J){throw new Error("Augment failed, verify dependencies.");}var =
G=3D[J.prototype,I.prototype],H;for(H=3D2;H<arguments.length;H=3DH+1){G.p=
ush(arguments[H]);}B.augmentObject.apply(this,G);},dump:function(G,L){var=
 I,K,N=3D[],O=3D"{...}",H=3D"f(){...}",M=3D", ",J=3D" =3D> =
";if(!B.isObject(G)){return G+"";}else{if(G instanceof Date||("nodeType" =
in G&&"tagName" in G)){return G;}else{if(B.isFunction(G)){return =
H;}}}L=3D(B.isNumber(L))?L:3;if(B.isArray(G)){N.push("[");for(I=3D0,K=3DG=
.length;I<K;I=3DI+1){if(B.isObject(G[I])){N.push((L>0)?B.dump(G[I],L-1):O=
);}else{N.push(G[I]);}N.push(M);}if(N.length>1){N.pop();}N.push("]");}els=
e{N.push("{");for(I in =
G){if(B.hasOwnProperty(G,I)){N.push(I+J);if(B.isObject(G[I])){N.push((L>0=
)?B.dump(G[I],L-1):O);}else{N.push(G[I]);}N.push(M);}}if(N.length>1){N.po=
p();}N.push("}");}return N.join("");},substitute:function(V,H,O){var =
L,K,J,R,S,U,Q=3D[],I,M=3D"dump",P=3D" =
",G=3D"{",T=3D"}",N;for(;;){L=3DV.lastIndexOf(G);if(L<0){break;}K=3DV.ind=
exOf(T,L);if(L+1>=3DK){break;}I=3DV.substring(L+1,K);R=3DI;U=3Dnull;J=3DR=
.indexOf(P);if(J>-1){U=3DR.substring(J+1);R=3DR.substring(0,J);}S=3DH[R];=
if(O){S=3DO(R,S,U);}if(B.isObject(S)){if(B.isArray(S)){S=3DB.dump(S,parse=
Int(U,10));}else{U=3DU||"";N=3DU.indexOf(M);if(N>-1){U=3DU.substring(4);}=
if(S.toString=3D=3D=3DA.toString||N>-1){S=3DB.dump(S,parseInt(U,10));}els=
e{S=3DS.toString();}}}else{if(!B.isString(S)&&!B.isNumber(S)){S=3D"~-"+Q.=
length+"-~";Q[Q.length]=3DI;}}V=3DV.substring(0,L)+S+V.substring(K+1);}fo=
r(L=3DQ.length-1;L>=3D0;L=3DL-1){V=3DV.replace(new =
RegExp("~-"+L+"-~"),"{"+Q[L]+"}","g");}return =
V;},trim:function(G){try{return =
G.replace(/^\s+|\s+$/g,"");}catch(H){return G;}},merge:function(){var =
J=3D{},H=3Darguments,G=3DH.length,I;for(I=3D0;I<G;I=3DI+1){B.augmentObjec=
t(J,H[I],true);}return =
J;},later:function(N,H,O,J,K){N=3DN||0;H=3DH||{};var =
I=3DO,M=3DJ,L,G;if(B.isString(O)){I=3DH[O];}if(!I){throw new =
TypeError("method =
undefined");}if(!B.isArray(M)){M=3D[J];}L=3Dfunction(){I.apply(H,M);};G=3D=
(K)?setInterval(L,N):setTimeout(L,N);return{interval:K,cancel:function(){=
if(this.interval){clearInterval(G);}else{clearTimeout(G);}}};},isValue:fu=
nction(G){return(B.isObject(G)||B.isString(G)||B.isNumber(G)||B.isBoolean=
(G));}};B.hasOwnProperty=3D(A.hasOwnProperty)?function(G,H){return =
G&&G.hasOwnProperty(H);}:function(G,H){return =
!B.isUndefined(G[H])&&G.constructor.prototype[H]!=3D=3DG[H];};D.augmentOb=
ject(B,D,true);YAHOO.util.Lang=3DB;B.augment=3DB.augmentProto;YAHOO.augme=
nt=3DB.augmentProto;YAHOO.extend=3DB.extend;})();YAHOO.register("yahoo",Y=
AHOO,{version:"2.7.0",build:"1799"});(function(){YAHOO.env._id_counter=3D=
YAHOO.env._id_counter||0;var =
E=3DYAHOO.util,L=3DYAHOO.lang,m=3DYAHOO.env.ua,A=3DYAHOO.lang.trim,d=3D{}=
,h=3D{},N=3D/^t(?:able|d|h)$/i,X=3D/color$/i,K=3Dwindow.document,W=3DK.do=
cumentElement,e=3D"ownerDocument",n=3D"defaultView",v=3D"documentElement"=
,t=3D"compatMode",b=3D"offsetLeft",P=3D"offsetTop",u=3D"offsetParent",Z=3D=
"parentNode",l=3D"nodeType",C=3D"tagName",O=3D"scrollLeft",i=3D"scrollTop=
",Q=3D"getBoundingClientRect",w=3D"getComputedStyle",a=3D"currentStyle",M=
=3D"CSS1Compat",c=3D"BackCompat",g=3D"class",F=3D"className",J=3D"",B=3D"=
 ",s=3D"(?:^|\\s)",k=3D"(?=3D =
|$)",U=3D"g",p=3D"position",f=3D"fixed",V=3D"relative",j=3D"left",o=3D"to=
p",r=3D"medium",q=3D"borderLeftWidth",R=3D"borderTopWidth",D=3Dm.opera,I=3D=
m.webkit,H=3Dm.gecko,T=3Dm.ie;E.Dom=3D{CUSTOM_ATTRIBUTES:(!W.hasAttribute=
)?{"for":"htmlFor","class":F}:{"htmlFor":"for","className":g},get:functio=
n(y){var AA,Y,z,x,G;if(y){if(y[l]||y.item){return y;}if(typeof =
y=3D=3D=3D"string"){AA=3Dy;y=3DK.getElementById(y);if(y&&y.id=3D=3D=3DAA)=
{return =
y;}else{if(y&&K.all){y=3Dnull;Y=3DK.all[AA];for(x=3D0,G=3DY.length;x<G;++=
x){if(Y[x].id=3D=3D=3DAA){return Y[x];}}}}return =
y;}if(y.DOM_EVENTS){y=3Dy.get("element");}if("length" in =
y){z=3D[];for(x=3D0,G=3Dy.length;x<G;++x){z[z.length]=3DE.Dom.get(y[x]);}=
return z;}return y;}return =
null;},getComputedStyle:function(G,Y){if(window[w]){return =
G[e][n][w](G,null)[Y];}else{if(G[a]){return =
E.Dom.IE_ComputedStyle.get(G,Y);}}},getStyle:function(G,Y){return =
E.Dom.batch(G,E.Dom._getStyle,Y);},_getStyle:function(){if(window[w]){ret=
urn =
function(G,y){y=3D(y=3D=3D=3D"float")?y=3D"cssFloat":E.Dom._toCamel(y);va=
r x=3DG.style[y],Y;if(!x){Y=3DG[e][n][w](G,null);if(Y){x=3DY[y];}}return =
x;};}else{if(W[a]){return function(G,y){var =
x;switch(y){case"opacity":x=3D100;try{x=3DG.filters["DXImageTransform.Mic=
rosoft.Alpha"].opacity;}catch(z){try{x=3DG.filters("alpha").opacity;}catc=
h(Y){}}return =
x/100;case"float":y=3D"styleFloat";default:y=3DE.Dom._toCamel(y);x=3DG[a]=
?G[a][y]:null;return(G.style[y]||x);}};}}}(),setStyle:function(G,Y,x){E.D=
om.batch(G,E.Dom._setStyle,{prop:Y,val:x});},_setStyle:function(){if(T){r=
eturn function(Y,G){var =
x=3DE.Dom._toCamel(G.prop),y=3DG.val;if(Y){switch(x){case"opacity":if(L.i=
sString(Y.style.filter)){Y.style.filter=3D"alpha(opacity=3D"+y*100+")";if=
(!Y[a]||!Y[a].hasLayout){Y.style.zoom=3D1;}}break;case"float":x=3D"styleF=
loat";default:Y.style[x]=3Dy;}}else{}};}else{return function(Y,G){var =
x=3DE.Dom._toCamel(G.prop),y=3DG.val;if(Y){if(x=3D=3D"float"){x=3D"cssFlo=
at";}Y.style[x]=3Dy;}else{}};}}(),getXY:function(G){return =
E.Dom.batch(G,E.Dom._getXY);},_canPosition:function(G){return(E.Dom._getS=
tyle(G,"display")!=3D=3D"none"&&E.Dom._inDoc(G));},_getXY:function(){if(K=
[v][Q]){return function(y){var =
z,Y,AA,AF,AE,AD,AC,G,x,AB=3DMath.floor,AG=3Dfalse;if(E.Dom._canPosition(y=
)){AA=3Dy[Q]();AF=3Dy[e];z=3DE.Dom.getDocumentScrollLeft(AF);Y=3DE.Dom.ge=
tDocumentScrollTop(AF);AG=3D[AB(AA[j]),AB(AA[o])];if(T&&m.ie<8){AE=3D2;AD=
=3D2;AC=3DAF[t];G=3DS(AF[v],q);x=3DS(AF[v],R);if(m.ie=3D=3D=3D6){if(AC!=3D=
=3Dc){AE=3D0;AD=3D0;}}if((AC=3D=3Dc)){if(G!=3D=3Dr){AE=3DparseInt(G,10);}=
if(x!=3D=3Dr){AD=3DparseInt(x,10);}}AG[0]-=3DAE;AG[1]-=3DAD;}if((Y||z)){A=
G[0]+=3Dz;AG[1]+=3DY;}AG[0]=3DAB(AG[0]);AG[1]=3DAB(AG[1]);}else{}return =
AG;};}else{return function(y){var =
x,Y,AA,AB,AC,z=3Dfalse,G=3Dy;if(E.Dom._canPosition(y)){z=3D[y[b],y[P]];x=3D=
E.Dom.getDocumentScrollLeft(y[e]);Y=3DE.Dom.getDocumentScrollTop(y[e]);AC=
=3D((H||m.webkit>519)?true:false);while((G=3DG[u])){z[0]+=3DG[b];z[1]+=3D=
G[P];if(AC){z=3DE.Dom._calcBorders(G,z);}}if(E.Dom._getStyle(y,p)!=3D=3Df=
){G=3Dy;while((G=3DG[Z])&&G[C]){AA=3DG[i];AB=3DG[O];if(H&&(E.Dom._getStyl=
e(G,"overflow")!=3D=3D"visible")){z=3DE.Dom._calcBorders(G,z);}if(AA||AB)=
{z[0]-=3DAB;z[1]-=3DAA;}}z[0]+=3Dx;z[1]+=3DY;}else{if(D){z[0]-=3Dx;z[1]-=3D=
Y;}else{if(I||H){z[0]+=3Dx;z[1]+=3DY;}}}z[0]=3DMath.floor(z[0]);z[1]=3DMa=
th.floor(z[1]);}else{}return z;};}}(),getX:function(G){var =
Y=3Dfunction(x){return E.Dom.getXY(x)[0];};return =
E.Dom.batch(G,Y,E.Dom,true);},getY:function(G){var =
Y=3Dfunction(x){return E.Dom.getXY(x)[1];};return =
E.Dom.batch(G,Y,E.Dom,true);},setXY:function(G,x,Y){E.Dom.batch(G,E.Dom._=
setXY,{pos:x,noRetry:Y});},_setXY:function(G,z){var =
AA=3DE.Dom._getStyle(G,p),y=3DE.Dom.setStyle,AD=3Dz.pos,Y=3Dz.noRetry,AB=3D=
[parseInt(E.Dom.getComputedStyle(G,j),10),parseInt(E.Dom.getComputedStyle=
(G,o),10)],AC,x;if(AA=3D=3D"static"){AA=3DV;y(G,p,AA);}AC=3DE.Dom._getXY(=
G);if(!AD||AC=3D=3D=3Dfalse){return =
false;}if(isNaN(AB[0])){AB[0]=3D(AA=3D=3DV)?0:G[b];}if(isNaN(AB[1])){AB[1=
]=3D(AA=3D=3DV)?0:G[P];}if(AD[0]!=3D=3Dnull){y(G,j,AD[0]-AC[0]+AB[0]+"px"=
);}if(AD[1]!=3D=3Dnull){y(G,o,AD[1]-AC[1]+AB[1]+"px");}if(!Y){x=3DE.Dom._=
getXY(G);if((AD[0]!=3D=3Dnull&&x[0]!=3DAD[0])||(AD[1]!=3D=3Dnull&&x[1]!=3D=
AD[1])){E.Dom._setXY(G,{pos:AD,noRetry:true});}}},setX:function(Y,G){E.Do=
m.setXY(Y,[G,null]);},setY:function(G,Y){E.Dom.setXY(G,[null,Y]);},getReg=
ion:function(G){var Y=3Dfunction(x){var =
y=3Dfalse;if(E.Dom._canPosition(x)){y=3DE.Region.getRegion(x);}else{}retu=
rn y;};return =
E.Dom.batch(G,Y,E.Dom,true);},getClientWidth:function(){return =
E.Dom.getViewportWidth();},getClientHeight:function(){return =
E.Dom.getViewportHeight();},getElementsByClassName:function(AB,AF,AC,AE,x=
,AD){AB=3DL.trim(AB);AF=3DAF||"*";AC=3D(AC)?E.Dom.get(AC):null||K;if(!AC)=
{return[];}var =
Y=3D[],G=3DAC.getElementsByTagName(AF),z=3DE.Dom.hasClass;for(var =
y=3D0,AA=3DG.length;y<AA;++y){if(z(G[y],AB)){Y[Y.length]=3DG[y];}}if(AE){=
E.Dom.batch(Y,AE,x,AD);}return Y;},hasClass:function(Y,G){return =
E.Dom.batch(Y,E.Dom._hasClass,G);},_hasClass:function(x,Y){var =
G=3Dfalse,y;if(x&&Y){y=3DE.Dom.getAttribute(x,F)||J;if(Y.exec){G=3DY.test=
(y);}else{G=3DY&&(B+y+B).indexOf(B+Y+B)>-1;}}else{}return =
G;},addClass:function(Y,G){return =
E.Dom.batch(Y,E.Dom._addClass,G);},_addClass:function(x,Y){var =
G=3Dfalse,y;if(x&&Y){y=3DE.Dom.getAttribute(x,F)||J;if(!E.Dom._hasClass(x=
,Y)){E.Dom.setAttribute(x,F,A(y+B+Y));G=3Dtrue;}}else{}return =
G;},removeClass:function(Y,G){return =
E.Dom.batch(Y,E.Dom._removeClass,G);},_removeClass:function(y,x){var =
Y=3Dfalse,AA,z,G;if(y&&x){AA=3DE.Dom.getAttribute(y,F)||J;E.Dom.setAttrib=
ute(y,F,AA.replace(E.Dom._getClassRegex(x),J));z=3DE.Dom.getAttribute(y,F=
);if(AA!=3D=3Dz){E.Dom.setAttribute(y,F,A(z));Y=3Dtrue;if(E.Dom.getAttrib=
ute(y,F)=3D=3D=3D""){G=3D(y.hasAttribute&&y.hasAttribute(g))?g:F;y.remove=
Attribute(G);}}}else{}return Y;},replaceClass:function(x,Y,G){return =
E.Dom.batch(x,E.Dom._replaceClass,{from:Y,to:G});=0A=
},_replaceClass:function(y,x){var =
Y,AB,AA,G=3Dfalse,z;if(y&&x){AB=3Dx.from;AA=3Dx.to;if(!AA){G=3Dfalse;}els=
e{if(!AB){G=3DE.Dom._addClass(y,x.to);}else{if(AB!=3D=3DAA){z=3DE.Dom.get=
Attribute(y,F)||J;Y=3D(B+z.replace(E.Dom._getClassRegex(AB),B+AA)).split(=
E.Dom._getClassRegex(AA));Y.splice(1,0,B+AA);E.Dom.setAttribute(y,F,A(Y.j=
oin(J)));G=3Dtrue;}}}}else{}return =
G;},generateId:function(G,x){x=3Dx||"yui-gen";var =
Y=3Dfunction(y){if(y&&y.id){return y.id;}var =
z=3Dx+YAHOO.env._id_counter++;if(y){if(y[e].getElementById(z)){return =
E.Dom.generateId(y,z+x);}y.id=3Dz;}return z;};return =
E.Dom.batch(G,Y,E.Dom,true)||Y.apply(E.Dom,arguments);},isAncestor:functi=
on(Y,x){Y=3DE.Dom.get(Y);x=3DE.Dom.get(x);var =
G=3Dfalse;if((Y&&x)&&(Y[l]&&x[l])){if(Y.contains&&Y!=3D=3Dx){G=3DY.contai=
ns(x);}else{if(Y.compareDocumentPosition){G=3D!!(Y.compareDocumentPositio=
n(x)&16);}}}else{}return G;},inDocument:function(G,Y){return =
E.Dom._inDoc(E.Dom.get(G),Y);},_inDoc:function(Y,x){var =
G=3Dfalse;if(Y&&Y[C]){x=3Dx||Y[e];G=3DE.Dom.isAncestor(x[v],Y);}else{}ret=
urn =
G;},getElementsBy:function(Y,AF,AB,AD,y,AC,AE){AF=3DAF||"*";AB=3D(AB)?E.D=
om.get(AB):null||K;if(!AB){return[];}var =
x=3D[],G=3DAB.getElementsByTagName(AF);for(var =
z=3D0,AA=3DG.length;z<AA;++z){if(Y(G[z])){if(AE){x=3DG[z];break;}else{x[x=
.length]=3DG[z];}}}if(AD){E.Dom.batch(x,AD,y,AC);}return =
x;},getElementBy:function(x,G,Y){return =
E.Dom.getElementsBy(x,G,Y,null,null,null,true);},batch:function(x,AB,AA,z=
){var =
y=3D[],Y=3D(z)?AA:window;x=3D(x&&(x[C]||x.item))?x:E.Dom.get(x);if(x&&AB)=
{if(x[C]||x.length=3D=3D=3Dundefined){return AB.call(Y,x,AA);}for(var =
G=3D0;G<x.length;++G){y[y.length]=3DAB.call(Y,x[G],AA);}}else{return =
false;}return y;},getDocumentHeight:function(){var =
Y=3D(K[t]!=3DM||I)?K.body.scrollHeight:W.scrollHeight,G=3DMath.max(Y,E.Do=
m.getViewportHeight());return G;},getDocumentWidth:function(){var =
Y=3D(K[t]!=3DM||I)?K.body.scrollWidth:W.scrollWidth,G=3DMath.max(Y,E.Dom.=
getViewportWidth());return G;},getViewportHeight:function(){var =
G=3Dself.innerHeight,Y=3DK[t];if((Y||T)&&!D){G=3D(Y=3D=3DM)?W.clientHeigh=
t:K.body.clientHeight;}return G;},getViewportWidth:function(){var =
G=3Dself.innerWidth,Y=3DK[t];if(Y||T){G=3D(Y=3D=3DM)?W.clientWidth:K.body=
.clientWidth;}return =
G;},getAncestorBy:function(G,Y){while((G=3DG[Z])){if(E.Dom._testElement(G=
,Y)){return G;}}return =
null;},getAncestorByClassName:function(Y,G){Y=3DE.Dom.get(Y);if(!Y){retur=
n null;}var x=3Dfunction(y){return E.Dom.hasClass(y,G);};return =
E.Dom.getAncestorBy(Y,x);},getAncestorByTagName:function(Y,G){Y=3DE.Dom.g=
et(Y);if(!Y){return null;}var x=3Dfunction(y){return =
y[C]&&y[C].toUpperCase()=3D=3DG.toUpperCase();};return =
E.Dom.getAncestorBy(Y,x);},getPreviousSiblingBy:function(G,Y){while(G){G=3D=
G.previousSibling;if(E.Dom._testElement(G,Y)){return G;}}return =
null;},getPreviousSibling:function(G){G=3DE.Dom.get(G);if(!G){return =
null;}return =
E.Dom.getPreviousSiblingBy(G);},getNextSiblingBy:function(G,Y){while(G){G=
=3DG.nextSibling;if(E.Dom._testElement(G,Y)){return G;}}return =
null;},getNextSibling:function(G){G=3DE.Dom.get(G);if(!G){return =
null;}return =
E.Dom.getNextSiblingBy(G);},getFirstChildBy:function(G,x){var =
Y=3D(E.Dom._testElement(G.firstChild,x))?G.firstChild:null;return =
Y||E.Dom.getNextSiblingBy(G.firstChild,x);},getFirstChild:function(G,Y){G=
=3DE.Dom.get(G);if(!G){return null;}return =
E.Dom.getFirstChildBy(G);},getLastChildBy:function(G,x){if(!G){return =
null;}var =
Y=3D(E.Dom._testElement(G.lastChild,x))?G.lastChild:null;return =
Y||E.Dom.getPreviousSiblingBy(G.lastChild,x);},getLastChild:function(G){G=
=3DE.Dom.get(G);return =
E.Dom.getLastChildBy(G);},getChildrenBy:function(Y,y){var =
x=3DE.Dom.getFirstChildBy(Y,y),G=3Dx?[x]:[];E.Dom.getNextSiblingBy(x,func=
tion(z){if(!y||y(z)){G[G.length]=3Dz;}return false;});return =
G;},getChildren:function(G){G=3DE.Dom.get(G);if(!G){}return =
E.Dom.getChildrenBy(G);},getDocumentScrollLeft:function(G){G=3DG||K;retur=
n =
Math.max(G[v].scrollLeft,G.body.scrollLeft);},getDocumentScrollTop:functi=
on(G){G=3DG||K;return =
Math.max(G[v].scrollTop,G.body.scrollTop);},insertBefore:function(Y,G){Y=3D=
E.Dom.get(Y);G=3DE.Dom.get(G);if(!Y||!G||!G[Z]){return null;}return =
G[Z].insertBefore(Y,G);},insertAfter:function(Y,G){Y=3DE.Dom.get(Y);G=3DE=
.Dom.get(G);if(!Y||!G||!G[Z]){return null;}if(G.nextSibling){return =
G[Z].insertBefore(Y,G.nextSibling);}else{return =
G[Z].appendChild(Y);}},getClientRegion:function(){var =
x=3DE.Dom.getDocumentScrollTop(),Y=3DE.Dom.getDocumentScrollLeft(),y=3DE.=
Dom.getViewportWidth()+Y,G=3DE.Dom.getViewportHeight()+x;return new =
E.Region(x,y,G,Y);},setAttribute:function(Y,G,x){G=3DE.Dom.CUSTOM_ATTRIBU=
TES[G]||G;Y.setAttribute(G,x);},getAttribute:function(Y,G){G=3DE.Dom.CUST=
OM_ATTRIBUTES[G]||G;return Y.getAttribute(G);},_toCamel:function(Y){var =
x=3Dd;function G(y,z){return z.toUpperCase();}return =
x[Y]||(x[Y]=3DY.indexOf("-")=3D=3D=3D-1?Y:Y.replace(/-([a-z])/gi,G));},_g=
etClassRegex:function(Y){var =
G;if(Y!=3D=3Dundefined){if(Y.exec){G=3DY;}else{G=3Dh[Y];if(!G){Y=3DY.repl=
ace(E.Dom._patterns.CLASS_RE_TOKENS,"\\$1");G=3Dh[Y]=3Dnew =
RegExp(s+Y+k,U);}}}return =
G;},_patterns:{ROOT_TAG:/^body|html$/i,CLASS_RE_TOKENS:/([\.\(\)\^\$\*\+\=
?\|\[\]\{\}])/g},_testElement:function(G,Y){return =
G&&G[l]=3D=3D1&&(!Y||Y(G));},_calcBorders:function(x,y){var =
Y=3DparseInt(E.Dom[w](x,R),10)||0,G=3DparseInt(E.Dom[w](x,q),10)||0;if(H)=
{if(N.test(x[C])){Y=3D0;G=3D0;}}y[0]+=3DG;y[1]+=3DY;return y;}};var =
S=3DE.Dom[w];if(m.opera){E.Dom[w]=3Dfunction(Y,G){var =
x=3DS(Y,G);if(X.test(G)){x=3DE.Dom.Color.toRGB(x);}return =
x;};}if(m.webkit){E.Dom[w]=3Dfunction(Y,G){var =
x=3DS(Y,G);if(x=3D=3D=3D"rgba(0, 0, 0, 0)"){x=3D"transparent";}return =
x;};}})();YAHOO.util.Region=3Dfunction(C,D,A,B){this.top=3DC;this.y=3DC;t=
his[1]=3DC;this.right=3DD;this.bottom=3DA;this.left=3DB;this.x=3DB;this[0=
]=3DB;this.width=3Dthis.right-this.left;this.height=3Dthis.bottom-this.to=
p;};YAHOO.util.Region.prototype.contains=3Dfunction(A){return(A.left>=3Dt=
his.left&&A.right<=3Dthis.right&&A.top>=3Dthis.top&&A.bottom<=3Dthis.bott=
om);};YAHOO.util.Region.prototype.getArea=3Dfunction(){return((this.botto=
m-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.interse=
ct=3Dfunction(E){var =
C=3DMath.max(this.top,E.top),D=3DMath.min(this.right,E.right),A=3DMath.mi=
n(this.bottom,E.bottom),B=3DMath.max(this.left,E.left);if(A>=3DC&&D>=3DB)=
{return new YAHOO.util.Region(C,D,A,B);=0A=
}else{return null;}};YAHOO.util.Region.prototype.union=3Dfunction(E){var =
C=3DMath.min(this.top,E.top),D=3DMath.max(this.right,E.right),A=3DMath.ma=
x(this.bottom,E.bottom),B=3DMath.min(this.left,E.left);return new =
YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=3Dfunct=
ion(){return("Region {"+"top: "+this.top+", right: "+this.right+", =
bottom: "+this.bottom+", left: "+this.left+", height: "+this.height+", =
width: "+this.width+"}");};YAHOO.util.Region.getRegion=3Dfunction(D){var =
F=3DYAHOO.util.Dom.getXY(D),C=3DF[1],E=3DF[0]+D.offsetWidth,A=3DF[1]+D.of=
fsetHeight,B=3DF[0];return new =
YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=3Dfunction(A,B){if(YAHOO.la=
ng.isArray(A)){B=3DA[1];A=3DA[0];}YAHOO.util.Point.superclass.constructor=
.call(this,B,A,B,A);};YAHOO.extend(YAHOO.util.Point,YAHOO.util.Region);(f=
unction(){var =
B=3DYAHOO.util,A=3D"clientTop",F=3D"clientLeft",J=3D"parentNode",K=3D"rig=
ht",W=3D"hasLayout",I=3D"px",U=3D"opacity",L=3D"auto",D=3D"borderLeftWidt=
h",G=3D"borderTopWidth",P=3D"borderRightWidth",V=3D"borderBottomWidth",S=3D=
"visible",Q=3D"transparent",N=3D"height",E=3D"width",H=3D"style",T=3D"cur=
rentStyle",R=3D/^width|height$/,O=3D/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|v=
m|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i,M=3D{get:function(X,Z){v=
ar =
Y=3D"",a=3DX[T][Z];if(Z=3D=3D=3DU){Y=3DB.Dom.getStyle(X,U);}else{if(!a||(=
a.indexOf&&a.indexOf(I)>-1)){Y=3Da;}else{if(B.Dom.IE_COMPUTED[Z]){Y=3DB.D=
om.IE_COMPUTED[Z](X,Z);}else{if(O.test(a)){Y=3DB.Dom.IE.ComputedStyle.get=
Pixel(X,Z);}else{Y=3Da;}}}}return Y;},getOffset:function(Z,e){var =
b=3DZ[T][e],X=3De.charAt(0).toUpperCase()+e.substr(1),c=3D"offset"+X,Y=3D=
"pixel"+X,a=3D"",d;if(b=3D=3DL){d=3DZ[c];if(d=3D=3D=3Dundefined){a=3D0;}a=
=3Dd;if(R.test(e)){Z[H][e]=3Dd;if(Z[c]>d){a=3Dd-(Z[c]-d);}Z[H][e]=3DL;}}e=
lse{if(!Z[H][Y]&&!Z[H][e]){Z[H][e]=3Db;}a=3DZ[H][Y];}return =
a+I;},getBorderWidth:function(X,Z){var =
Y=3Dnull;if(!X[T][W]){X[H].zoom=3D1;}switch(Z){case =
G:Y=3DX[A];break;case =
V:Y=3DX.offsetHeight-X.clientHeight-X[A];break;case =
D:Y=3DX[F];break;case =
P:Y=3DX.offsetWidth-X.clientWidth-X[F];break;}return =
Y+I;},getPixel:function(Y,X){var =
a=3Dnull,b=3DY[T][K],Z=3DY[T][X];Y[H][K]=3DZ;a=3DY[H].pixelRight;Y[H][K]=3D=
b;return a+I;},getMargin:function(Y,X){var =
Z;if(Y[T][X]=3D=3DL){Z=3D0+I;}else{Z=3DB.Dom.IE.ComputedStyle.getPixel(Y,=
X);}return Z;},getVisibility:function(Y,X){var =
Z;while((Z=3DY[T])&&Z[X]=3D=3D"inherit"){Y=3DY[J];}return(Z)?Z[X]:S;},get=
Color:function(Y,X){return =
B.Dom.Color.toRGB(Y[T][X])||Q;},getBorderColor:function(Y,X){var =
Z=3DY[T],a=3DZ[X]||Z.color;return =
B.Dom.Color.toRGB(B.Dom.Color.toHex(a));}},C=3D{};C.top=3DC.right=3DC.bot=
tom=3DC.left=3DC[E]=3DC[N]=3DM.getOffset;C.color=3DM.getColor;C[G]=3DC[P]=
=3DC[V]=3DC[D]=3DM.getBorderWidth;C.marginTop=3DC.marginRight=3DC.marginB=
ottom=3DC.marginLeft=3DM.getMargin;C.visibility=3DM.getVisibility;C.borde=
rColor=3DC.borderTopColor=3DC.borderRightColor=3DC.borderBottomColor=3DC.=
borderLeftColor=3DM.getBorderColor;B.Dom.IE_COMPUTED=3DC;B.Dom.IE_Compute=
dStyle=3DM;})();(function(){var =
C=3D"toString",A=3DparseInt,B=3DRegExp,D=3DYAHOO.util;D.Dom.Color=3D{KEYW=
ORDS:{black:"000",silver:"c0c0c0",gray:"808080",white:"fff",maroon:"80000=
0",red:"f00",purple:"800080",fuchsia:"f0f",green:"008000",lime:"0f0",oliv=
e:"808000",yellow:"ff0",navy:"000080",blue:"00f",teal:"008080",aqua:"0ff"=
},re_RGB:/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i,re_hex:/^#?([=
0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i,re_hex3:/([0-9A-F])/gi,toRGB:fun=
ction(E){if(!D.Dom.Color.re_RGB.test(E)){E=3DD.Dom.Color.toHex(E);}if(D.D=
om.Color.re_hex.exec(E)){E=3D"rgb("+[A(B.$1,16),A(B.$2,16),A(B.$3,16)].jo=
in(", ")+")";}return =
E;},toHex:function(H){H=3DD.Dom.Color.KEYWORDS[H]||H;if(D.Dom.Color.re_RG=
B.exec(H)){var =
G=3D(B.$1.length=3D=3D=3D1)?"0"+B.$1:Number(B.$1),F=3D(B.$2.length=3D=3D=3D=
1)?"0"+B.$2:Number(B.$2),E=3D(B.$3.length=3D=3D=3D1)?"0"+B.$3:Number(B.$3=
);H=3D[G[C](16),F[C](16),E[C](16)].join("");}if(H.length<6){H=3DH.replace=
(D.Dom.Color.re_hex3,"$1$1");}if(H!=3D=3D"transparent"&&H.indexOf("#")<0)=
{H=3D"#"+H;}return =
H.toLowerCase();}};}());YAHOO.register("dom",YAHOO.util.Dom,{version:"2.7=
.0",build:"1799"});YAHOO.util.CustomEvent=3Dfunction(D,C,B,A){this.type=3D=
D;this.scope=3DC||window;this.silent=3DB;this.signature=3DA||YAHOO.util.C=
ustomEvent.LIST;this.subscribers=3D[];if(!this.silent){}var =
E=3D"_YUICEOnSubscribe";if(D!=3D=3DE){this.subscribeEvent=3Dnew =
YAHOO.util.CustomEvent(E,this,true);}this.lastError=3Dnull;};YAHOO.util.C=
ustomEvent.LIST=3D0;YAHOO.util.CustomEvent.FLAT=3D1;YAHOO.util.CustomEven=
t.prototype=3D{subscribe:function(A,B,C){if(!A){throw new Error("Invalid =
callback for subscriber to =
'"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(A,B,C=
);}this.subscribers.push(new =
YAHOO.util.Subscriber(A,B,C));},unsubscribe:function(D,F){if(!D){return =
this.unsubscribeAll();}var E=3Dfalse;for(var =
B=3D0,A=3Dthis.subscribers.length;B<A;++B){var =
C=3Dthis.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=3Dtrue;}=
}return E;},fire:function(){this.lastError=3Dnull;var =
K=3D[],E=3Dthis.subscribers.length;if(!E&&this.silent){return true;}var =
I=3D[].slice.call(arguments,0),G=3Dtrue,D,J=3Dfalse;if(!this.silent){}var=
 =
C=3Dthis.subscribers.slice(),A=3DYAHOO.util.Event.throwErrors;for(D=3D0;D=
<E;++D){var M=3DC[D];if(!M){J=3Dtrue;}else{if(!this.silent){}var =
L=3DM.getScope(this.scope);if(this.signature=3D=3DYAHOO.util.CustomEvent.=
FLAT){var =
B=3Dnull;if(I.length>0){B=3DI[0];}try{G=3DM.fn.call(L,B,M.obj);}catch(F){=
this.lastError=3DF;if(A){throw =
F;}}}else{try{G=3DM.fn.call(L,this.type,I,M.obj);}catch(H){this.lastError=
=3DH;if(A){throw =
H;}}}if(false=3D=3D=3DG){if(!this.silent){}break;}}}return(G!=3D=3Dfalse)=
;},unsubscribeAll:function(){var =
A=3Dthis.subscribers.length,B;for(B=3DA-1;B>-1;B--){this._delete(B);}this=
.subscribers=3D[];return A;},_delete:function(A){var =
B=3Dthis.subscribers[A];if(B){delete B.fn;delete =
B.obj;}this.subscribers.splice(A,1);},toString:function(){return"CustomEv=
ent: "+"'"+this.type+"', "+"context: =
"+this.scope;}};YAHOO.util.Subscriber=3Dfunction(A,B,C){this.fn=3DA;this.=
obj=3DYAHOO.lang.isUndefined(B)?null:B;this.overrideContext=3DC;};YAHOO.u=
til.Subscriber.prototype.getScope=3Dfunction(A){if(this.overrideContext){=
if(this.overrideContext=3D=3D=3Dtrue){return this.obj;}else{return =
this.overrideContext;}}return =
A;};YAHOO.util.Subscriber.prototype.contains=3Dfunction(A,B){if(B){return=
(this.fn=3D=3DA&&this.obj=3D=3DB);}else{return(this.fn=3D=3DA);}};YAHOO.u=
til.Subscriber.prototype.toString=3Dfunction(){return"Subscriber { obj: =
"+this.obj+", overrideContext: "+(this.overrideContext||"no")+" =
}";};if(!YAHOO.util.Event){YAHOO.util.Event=3Dfunction(){var =
H=3Dfalse;var I=3D[];var J=3D[];var G=3D[];var E=3D[];var C=3D0;var =
F=3D[];var B=3D[];var A=3D0;var =
D=3D{63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};var =
K=3DYAHOO.env.ua.ie?"focusin":"focus";var =
L=3DYAHOO.env.ua.ie?"focusout":"blur";return{POLL_RETRYS:2000,POLL_INTERV=
AL:20,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_SCOPE:4,OBJ:5,OVERRIDE:6,la=
stError:null,isSafari:YAHOO.env.ua.webkit,webkit:YAHOO.env.ua.webkit,isIE=
:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMReady:false,throwErrors:fals=
e,startInterval:function(){if(!this._interval){var M=3Dthis;var =
N=3Dfunction(){M._tryPreloadAttach();};this._interval=3DsetInterval(N,thi=
s.POLL_INTERVAL);}},onAvailable:function(S,O,Q,R,P){var =
M=3D(YAHOO.lang.isString(S))?[S]:S;for(var =
N=3D0;N<M.length;N=3DN+1){F.push({id:M[N],fn:O,obj:Q,overrideContext:R,ch=
eckReady:P});}C=3Dthis.POLL_RETRYS;this.startInterval();},onContentReady:=
function(P,M,N,O){this.onAvailable(P,M,N,O,true);},onDOMReady:function(M,=
N,O){if(this.DOMReady){setTimeout(function(){var =
P=3Dwindow;if(O){if(O=3D=3D=3Dtrue){P=3DN;}else{P=3DO;}}M.call(P,"DOMRead=
y",[],N);},0);}else{this.DOMReadyEvent.subscribe(M,N,O);}},_addListener:f=
unction(O,M,Y,S,W,b){if(!Y||!Y.call){return =
false;}if(this._isValidCollection(O)){var Z=3Dtrue;for(var =
T=3D0,V=3DO.length;T<V;++T){Z=3Dthis.on(O[T],M,Y,S,W)&&Z;}return =
Z;}else{if(YAHOO.lang.isString(O)){var =
R=3Dthis.getEl(O);if(R){O=3DR;}else{this.onAvailable(O,function(){YAHOO.u=
til.Event.on(O,M,Y,S,W);});return true;}}}if(!O){return =
false;}if("unload"=3D=3DM&&S!=3D=3Dthis){J[J.length]=3D[O,M,Y,S,W];return=
 true;}var N=3DO;if(W){if(W=3D=3D=3Dtrue){N=3DS;}else{N=3DW;}}var =
P=3Dfunction(c){return Y.call(N,YAHOO.util.Event.getEvent(c,O),S);};var =
a=3D[O,M,Y,P,N,S,W];var =
U=3DI.length;I[U]=3Da;if(this.useLegacyEvent(O,M)){var =
Q=3Dthis.getLegacyIndex(O,M);if(Q=3D=3D-1||O!=3DG[Q][0]){Q=3DG.length;B[O=
.id+M]=3DQ;G[Q]=3D[O,M,O["on"+M]];E[Q]=3D[];O["on"+M]=3Dfunction(c){YAHOO=
.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(c),Q);};}E[Q].push(=
a);}else{try{this._simpleAdd(O,M,P,b);}catch(X){this.lastError=3DX;this.r=
emoveListener(O,M,Y);return false;}}return =
true;},addListener:function(N,Q,M,O,P){return =
this._addListener(N,Q,M,O,P,false);},addFocusListener:function(N,M,O,P){r=
eturn =
this._addListener(N,K,M,O,P,true);},removeFocusListener:function(N,M){ret=
urn =
this.removeListener(N,K,M);},addBlurListener:function(N,M,O,P){return =
this._addListener(N,L,M,O,P,true);},removeBlurListener:function(N,M){retu=
rn this.removeListener(N,L,M);},fireLegacyEvent:function(R,P){var =
T=3Dtrue,M,V,U,N,S;V=3DE[P].slice();for(var =
O=3D0,Q=3DV.length;O<Q;++O){U=3DV[O];if(U&&U[this.WFN]){N=3DU[this.ADJ_SC=
OPE];S=3DU[this.WFN].call(N,R);T=3D(T&&S);}}M=3DG[P];if(M&&M[2]){M[2](R);=
}return T;},getLegacyIndex:function(N,O){var =
M=3Dthis.generateId(N)+O;if(typeof B[M]=3D=3D"undefined"){return =
-1;}else{return =
B[M];}},useLegacyEvent:function(M,N){return(this.webkit&&this.webkit<419&=
&("click"=3D=3DN||"dblclick"=3D=3DN));},removeListener:function(N,M,V){va=
r Q,T,X;if(typeof =
N=3D=3D"string"){N=3Dthis.getEl(N);}else{if(this._isValidCollection(N)){v=
ar =
W=3Dtrue;for(Q=3DN.length-1;Q>-1;Q--){W=3D(this.removeListener(N[Q],M,V)&=
&W);}return W;}}if(!V||!V.call){return =
this.purgeElement(N,false,M);}if("unload"=3D=3DM){for(Q=3DJ.length-1;Q>-1=
;Q--){X=3DJ[Q];if(X&&X[0]=3D=3DN&&X[1]=3D=3DM&&X[2]=3D=3DV){J.splice(Q,1)=
;return true;}}return false;}var R=3Dnull;var =
S=3Darguments[3];if("undefined"=3D=3D=3Dtypeof =
S){S=3Dthis._getCacheIndex(N,M,V);}if(S>=3D0){R=3DI[S];}if(!N||!R){return=
 false;}if(this.useLegacyEvent(N,M)){var =
P=3Dthis.getLegacyIndex(N,M);var =
O=3DE[P];if(O){for(Q=3D0,T=3DO.length;Q<T;++Q){X=3DO[Q];if(X&&X[this.EL]=3D=
=3DN&&X[this.TYPE]=3D=3DM&&X[this.FN]=3D=3DV){O.splice(Q,1);break;}}}}els=
e{try{this._simpleRemove(N,M,R[this.WFN],false);}catch(U){this.lastError=3D=
U;return false;}}delete I[S][this.WFN];delete I[S][this.FN];=0A=
I.splice(S,1);return true;},getTarget:function(O,N){var =
M=3DO.target||O.srcElement;return =
this.resolveTextNode(M);},resolveTextNode:function(N){try{if(N&&3=3D=3DN.=
nodeType){return N.parentNode;}}catch(M){}return =
N;},getPageX:function(N){var =
M=3DN.pageX;if(!M&&0!=3D=3DM){M=3DN.clientX||0;if(this.isIE){M+=3Dthis._g=
etScrollLeft();}}return M;},getPageY:function(M){var =
N=3DM.pageY;if(!N&&0!=3D=3DN){N=3DM.clientY||0;if(this.isIE){N+=3Dthis._g=
etScrollTop();}}return =
N;},getXY:function(M){return[this.getPageX(M),this.getPageY(M)];},getRela=
tedTarget:function(N){var =
M=3DN.relatedTarget;if(!M){if(N.type=3D=3D"mouseout"){M=3DN.toElement;}el=
se{if(N.type=3D=3D"mouseover"){M=3DN.fromElement;}}}return =
this.resolveTextNode(M);},getTime:function(O){if(!O.time){var N=3Dnew =
Date().getTime();try{O.time=3DN;}catch(M){this.lastError=3DM;return =
N;}}return =
O.time;},stopEvent:function(M){this.stopPropagation(M);this.preventDefaul=
t(M);},stopPropagation:function(M){if(M.stopPropagation){M.stopPropagatio=
n();}else{M.cancelBubble=3Dtrue;}},preventDefault:function(M){if(M.preven=
tDefault){M.preventDefault();}else{M.returnValue=3Dfalse;}},getEvent:func=
tion(O,M){var N=3DO||window.event;if(!N){var =
P=3Dthis.getEvent.caller;while(P){N=3DP.arguments[0];if(N&&Event=3D=3DN.c=
onstructor){break;}P=3DP.caller;}}return N;},getCharCode:function(N){var =
M=3DN.keyCode||N.charCode||0;if(YAHOO.env.ua.webkit&&(M in =
D)){M=3DD[M];}return M;},_getCacheIndex:function(Q,R,P){for(var =
O=3D0,N=3DI.length;O<N;O=3DO+1){var =
M=3DI[O];if(M&&M[this.FN]=3D=3DP&&M[this.EL]=3D=3DQ&&M[this.TYPE]=3D=3DR)=
{return O;}}return -1;},generateId:function(M){var =
N=3DM.id;if(!N){N=3D"yuievtautoid-"+A;++A;M.id=3DN;}return =
N;},_isValidCollection:function(N){try{return(N&&typeof =
N!=3D=3D"string"&&N.length&&!N.tagName&&!N.alert&&typeof =
N[0]!=3D=3D"undefined");}catch(M){return =
false;}},elCache:{},getEl:function(M){return(typeof =
M=3D=3D=3D"string")?document.getElementById(M):M;},clearCache:function(){=
},DOMReadyEvent:new =
YAHOO.util.CustomEvent("DOMReady",this),_load:function(N){if(!H){H=3Dtrue=
;var =
M=3DYAHOO.util.Event;M._ready();M._tryPreloadAttach();}},_ready:function(=
N){var =
M=3DYAHOO.util.Event;if(!M.DOMReady){M.DOMReady=3Dtrue;M.DOMReadyEvent.fi=
re();M._simpleRemove(document,"DOMContentLoaded",M._ready);}},_tryPreload=
Attach:function(){if(F.length=3D=3D=3D0){C=3D0;if(this._interval){clearIn=
terval(this._interval);this._interval=3Dnull;}return;}if(this.locked){ret=
urn;}if(this.isIE){if(!this.DOMReady){this.startInterval();return;}}this.=
locked=3Dtrue;var S=3D!H;if(!S){S=3D(C>0&&F.length>0);}var R=3D[];var =
T=3Dfunction(V,W){var =
U=3DV;if(W.overrideContext){if(W.overrideContext=3D=3D=3Dtrue){U=3DW.obj;=
}else{U=3DW.overrideContext;}}W.fn.call(U,W.obj);};var =
N,M,Q,P,O=3D[];for(N=3D0,M=3DF.length;N<M;N=3DN+1){Q=3DF[N];if(Q){P=3Dthi=
s.getEl(Q.id);if(P){if(Q.checkReady){if(H||P.nextSibling||!S){O.push(Q);F=
[N]=3Dnull;}}else{T(P,Q);F[N]=3Dnull;}}else{R.push(Q);}}}for(N=3D0,M=3DO.=
length;N<M;N=3DN+1){Q=3DO[N];T(this.getEl(Q.id),Q);}C--;if(S){for(N=3DF.l=
ength-1;N>-1;N--){Q=3DF[N];if(!Q||!Q.id){F.splice(N,1);}}this.startInterv=
al();}else{if(this._interval){clearInterval(this._interval);this._interva=
l=3Dnull;}}this.locked=3Dfalse;},purgeElement:function(Q,R,T){var =
O=3D(YAHOO.lang.isString(Q))?this.getEl(Q):Q;var =
S=3Dthis.getListeners(O,T),P,M;if(S){for(P=3DS.length-1;P>-1;P--){var =
N=3DS[P];this.removeListener(O,N.type,N.fn);}}if(R&&O&&O.childNodes){for(=
P=3D0,M=3DO.childNodes.length;P<M;++P){this.purgeElement(O.childNodes[P],=
R,T);}}},getListeners:function(O,M){var =
R=3D[],N;if(!M){N=3D[I,J];}else{if(M=3D=3D=3D"unload"){N=3D[J];}else{N=3D=
[I];}}var T=3D(YAHOO.lang.isString(O))?this.getEl(O):O;for(var =
Q=3D0;Q<N.length;Q=3DQ+1){var V=3DN[Q];if(V){for(var =
S=3D0,U=3DV.length;S<U;++S){var =
P=3DV[S];if(P&&P[this.EL]=3D=3D=3DT&&(!M||M=3D=3D=3DP[this.TYPE])){R.push=
({type:P[this.TYPE],fn:P[this.FN],obj:P[this.OBJ],adjust:P[this.OVERRIDE]=
,scope:P[this.ADJ_SCOPE],index:S});}}}}return(R.length)?R:null;},_unload:=
function(T){var =
N=3DYAHOO.util.Event,Q,P,O,S,R,U=3DJ.slice(),M;for(Q=3D0,S=3DJ.length;Q<S=
;++Q){O=3DU[Q];if(O){M=3Dwindow;if(O[N.ADJ_SCOPE]){if(O[N.ADJ_SCOPE]=3D=3D=
=3Dtrue){M=3DO[N.UNLOAD_OBJ];}else{M=3DO[N.ADJ_SCOPE];}}O[N.FN].call(M,N.=
getEvent(T,O[N.EL]),O[N.UNLOAD_OBJ]);U[Q]=3Dnull;}}O=3Dnull;M=3Dnull;J=3D=
null;if(I){for(P=3DI.length-1;P>-1;P--){O=3DI[P];if(O){N.removeListener(O=
[N.EL],O[N.TYPE],O[N.FN],P);}}O=3Dnull;}G=3Dnull;N._simpleRemove(window,"=
unload",N._unload);},_getScrollLeft:function(){return =
this._getScroll()[1];},_getScrollTop:function(){return =
this._getScroll()[0];},_getScroll:function(){var =
M=3Ddocument.documentElement,N=3Ddocument.body;if(M&&(M.scrollTop||M.scro=
llLeft)){return[M.scrollTop,M.scrollLeft];}else{if(N){return[N.scrollTop,=
N.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:functio=
n(){if(window.addEventListener){return =
function(O,P,N,M){O.addEventListener(P,N,(M));};}else{if(window.attachEve=
nt){return function(O,P,N,M){O.attachEvent("on"+P,N);};}else{return =
function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener=
){return =
function(O,P,N,M){O.removeEventListener(P,N,(M));};}else{if(window.detach=
Event){return function(N,O,M){N.detachEvent("on"+O,M);};}else{return =
function(){};}}}()};}();(function(){var =
EU=3DYAHOO.util.Event;EU.on=3DEU.addListener;EU.onFocus=3DEU.addFocusList=
ener;EU.onBlur=3DEU.addBlurListener;=0A=
/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */=0A=
if(EU.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttac=
h,YAHOO.util.Event,true);var =
n=3Ddocument.createElement("p");EU._dri=3DsetInterval(function(){try{n.do=
Scroll("left");clearInterval(EU._dri);EU._dri=3Dnull;EU._ready();n=3Dnull=
;}catch(ex){}},EU.POLL_INTERVAL);}else{if(EU.webkit&&EU.webkit<525){EU._d=
ri=3DsetInterval(function(){var =
rs=3Ddocument.readyState;if("loaded"=3D=3Drs||"complete"=3D=3Drs){clearIn=
terval(EU._dri);EU._dri=3Dnull;EU._ready();}},EU.POLL_INTERVAL);}else{EU.=
_simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,=
"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreload=
Attach();})();}YAHOO.util.EventProvider=3Dfunction(){};YAHOO.util.EventPr=
ovider.prototype=3D{__yui_events:null,__yui_subscribers:null,subscribe:fu=
nction(A,C,F,E){this.__yui_events=3Dthis.__yui_events||{};var =
D=3Dthis.__yui_events[A];if(D){D.subscribe(C,F,E);=0A=
}else{this.__yui_subscribers=3Dthis.__yui_subscribers||{};var =
B=3Dthis.__yui_subscribers;if(!B[A]){B[A]=3D[];}B[A].push({fn:C,obj:F,ove=
rrideContext:E});}},unsubscribe:function(C,E,G){this.__yui_events=3Dthis.=
__yui_events||{};var A=3Dthis.__yui_events;if(C){var =
F=3DA[C];if(F){return F.unsubscribe(E,G);}}else{var B=3Dtrue;for(var D =
in =
A){if(YAHOO.lang.hasOwnProperty(A,D)){B=3DB&&A[D].unsubscribe(E,G);}}retu=
rn B;}return false;},unsubscribeAll:function(A){return =
this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=3Dthis.=
__yui_events||{};var A=3DD||{};var =
I=3Dthis.__yui_events;if(I[G]){}else{var H=3DA.scope||this;var =
E=3D(A.silent);var B=3Dnew =
YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=3DB;if(A.o=
nSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}th=
is.__yui_subscribers=3Dthis.__yui_subscribers||{};var =
F=3Dthis.__yui_subscribers[G];if(F){for(var =
C=3D0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].overrideContext);=
}}}return =
I[G];},fireEvent:function(E,D,A,C){this.__yui_events=3Dthis.__yui_events|=
|{};var G=3Dthis.__yui_events[E];if(!G){return null;}var B=3D[];for(var =
F=3D1;F<arguments.length;++F){B.push(arguments[F]);}return =
G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__=
yui_events[A]){return true;}}return false;}};(function(){var =
A=3DYAHOO.util.Event,C=3DYAHOO.lang;YAHOO.util.KeyListener=3Dfunction(D,I=
,E,F){if(!D){}else{if(!I){}else{if(!E){}}}if(!F){F=3DYAHOO.util.KeyListen=
er.KEYDOWN;}var G=3Dnew =
YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=3Dnew =
YAHOO.util.CustomEvent("enabled");this.disabledEvent=3Dnew =
YAHOO.util.CustomEvent("disabled");if(C.isString(D)){D=3Ddocument.getElem=
entById(D);}if(C.isFunction(E)){G.subscribe(E);}else{G.subscribe(E.fn,E.s=
cope,E.correctScope);}function =
H(O,N){if(!I.shift){I.shift=3Dfalse;}if(!I.alt){I.alt=3Dfalse;}if(!I.ctrl=
){I.ctrl=3Dfalse;}if(O.shiftKey=3D=3DI.shift&&O.altKey=3D=3DI.alt&&O.ctrl=
Key=3D=3DI.ctrl){var J,M=3DI.keys,L;if(YAHOO.lang.isArray(M)){for(var =
K=3D0;K<M.length;K++){J=3DM[K];L=3DA.getCharCode(O);if(J=3D=3DL){G.fire(L=
,O);break;}}}else{L=3DA.getCharCode(O);if(M=3D=3DL){G.fire(L,O);}}}}this.=
enable=3Dfunction(){if(!this.enabled){A.on(D,F,H);this.enabledEvent.fire(=
I);}this.enabled=3Dtrue;};this.disable=3Dfunction(){if(this.enabled){A.re=
moveListener(D,F,H);this.disabledEvent.fire(I);}this.enabled=3Dfalse;};th=
is.toString=3Dfunction(){return"KeyListener ["+I.keys+"] =
"+D.tagName+(D.id?"["+D.id+"]":"");};};var =
B=3DYAHOO.util.KeyListener;B.KEYDOWN=3D"keydown";B.KEYUP=3D"keyup";B.KEY=3D=
{ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENT=
ER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_U=
P:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,T=
AB:9,UP:38};})();YAHOO.register("event",YAHOO.util.Event,{version:"2.7.0"=
,build:"1799"});YAHOO.register("yahoo-dom-event", YAHOO, {version: =
"2.7.0", build: "1799"});=0A=

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/container/container-min.js

/*=0A=
Copyright (c) 2009, Yahoo! Inc. All rights reserved.=0A=
Code licensed under the BSD License:=0A=
http://developer.yahoo.net/yui/license.txt=0A=
version: 2.7.0=0A=
*/=0A=
(function(){YAHOO.util.Config=3Dfunction(D){if(D){this.init(D);}};var =
B=3DYAHOO.lang,C=3DYAHOO.util.CustomEvent,A=3DYAHOO.util.Config;A.CONFIG_=
CHANGED_EVENT=3D"configChanged";A.BOOLEAN_TYPE=3D"boolean";A.prototype=3D=
{owner:null,queueInProgress:false,config:null,initialConfig:null,eventQue=
ue:null,configChangedEvent:null,init:function(D){this.owner=3DD;this.conf=
igChangedEvent=3Dthis.createEvent(A.CONFIG_CHANGED_EVENT);this.configChan=
gedEvent.signature=3DC.LIST;this.queueInProgress=3Dfalse;this.config=3D{}=
;this.initialConfig=3D{};this.eventQueue=3D[];},checkBoolean:function(D){=
return(typeof =
D=3D=3DA.BOOLEAN_TYPE);},checkNumber:function(D){return(!isNaN(D));},fire=
Event:function(D,F){var =
E=3Dthis.config[D];if(E&&E.event){E.event.fire(F);}},addProperty:function=
(E,D){E=3DE.toLowerCase();this.config[E]=3DD;D.event=3Dthis.createEvent(E=
,{scope:this.owner});D.event.signature=3DC.LIST;D.key=3DE;if(D.handler){D=
.event.subscribe(D.handler,this.owner);}this.setProperty(E,D.value,true);=
if(!D.suppressEvent){this.queueProperty(E,D.value);}},getConfig:function(=
){var D=3D{},F=3Dthis.config,G,E;for(G in =
F){if(B.hasOwnProperty(F,G)){E=3DF[G];if(E&&E.event){D[G]=3DE.value;}}}re=
turn D;},getProperty:function(D){var =
E=3Dthis.config[D.toLowerCase()];if(E&&E.event){return =
E.value;}else{return =
undefined;}},resetProperty:function(D){D=3DD.toLowerCase();var =
E=3Dthis.config[D];if(E&&E.event){if(this.initialConfig[D]&&!B.isUndefine=
d(this.initialConfig[D])){this.setProperty(D,this.initialConfig[D]);retur=
n true;}}else{return false;}},setProperty:function(E,G,D){var =
F;E=3DE.toLowerCase();if(this.queueInProgress&&!D){this.queueProperty(E,G=
);return =
true;}else{F=3Dthis.config[E];if(F&&F.event){if(F.validator&&!F.validator=
(G)){return =
false;}else{F.value=3DG;if(!D){this.fireEvent(E,G);this.configChangedEven=
t.fire([E,G]);}return true;}}else{return =
false;}}},queueProperty:function(S,P){S=3DS.toLowerCase();var =
R=3Dthis.config[S],K=3Dfalse,J,G,H,I,O,Q,F,M,N,D,L,T,E;if(R&&R.event){if(=
!B.isUndefined(P)&&R.validator&&!R.validator(P)){return =
false;}else{if(!B.isUndefined(P)){R.value=3DP;}else{P=3DR.value;}K=3Dfals=
e;J=3Dthis.eventQueue.length;for(L=3D0;L<J;L++){G=3Dthis.eventQueue[L];if=
(G){H=3DG[0];I=3DG[1];if(H=3D=3DS){this.eventQueue[L]=3Dnull;this.eventQu=
eue.push([S,(!B.isUndefined(P)?P:I)]);K=3Dtrue;break;}}}if(!K&&!B.isUndef=
ined(P)){this.eventQueue.push([S,P]);}}if(R.supercedes){O=3DR.supercedes.=
length;for(T=3D0;T<O;T++){Q=3DR.supercedes[T];F=3Dthis.eventQueue.length;=
for(E=3D0;E<F;E++){M=3Dthis.eventQueue[E];if(M){N=3DM[0];D=3DM[1];if(N=3D=
=3DQ.toLowerCase()){this.eventQueue.push([N,D]);this.eventQueue[E]=3Dnull=
;break;}}}}}return true;}else{return =
false;}},refireEvent:function(D){D=3DD.toLowerCase();var =
E=3Dthis.config[D];if(E&&E.event&&!B.isUndefined(E.value)){if(this.queueI=
nProgress){this.queueProperty(D);}else{this.fireEvent(D,E.value);}}},appl=
yConfig:function(D,G){var F,E;if(G){E=3D{};for(F in =
D){if(B.hasOwnProperty(D,F)){E[F.toLowerCase()]=3DD[F];}}this.initialConf=
ig=3DE;}for(F in =
D){if(B.hasOwnProperty(D,F)){this.queueProperty(F,D[F]);}}},refresh:funct=
ion(){var D;for(D in =
this.config){if(B.hasOwnProperty(this.config,D)){this.refireEvent(D);}}},=
fireQueue:function(){var =
E,H,D,G,F;this.queueInProgress=3Dtrue;for(E=3D0;E<this.eventQueue.length;=
E++){H=3Dthis.eventQueue[E];if(H){D=3DH[0];G=3DH[1];F=3Dthis.config[D];F.=
value=3DG;this.eventQueue[E]=3Dnull;this.fireEvent(D,G);}}this.queueInPro=
gress=3Dfalse;this.eventQueue=3D[];},subscribeToConfigEvent:function(E,F,=
H,D){var =
G=3Dthis.config[E.toLowerCase()];if(G&&G.event){if(!A.alreadySubscribed(G=
.event,F,H)){G.event.subscribe(F,H,D);}return true;}else{return =
false;}},unsubscribeFromConfigEvent:function(D,E,G){var =
F=3Dthis.config[D.toLowerCase()];if(F&&F.event){return =
F.event.unsubscribe(E,G);}else{return false;}},toString:function(){var =
D=3D"Config";if(this.owner){D+=3D" ["+this.owner.toString()+"]";}return =
D;},outputEventQueue:function(){var =
D=3D"",G,E,F=3Dthis.eventQueue.length;for(E=3D0;E<F;E++){G=3Dthis.eventQu=
eue[E];if(G){D+=3DG[0]+"=3D"+G[1]+", ";}}return =
D;},destroy:function(){var E=3Dthis.config,D,F;for(D in =
E){if(B.hasOwnProperty(E,D)){F=3DE[D];F.event.unsubscribeAll();F.event=3D=
null;}}this.configChangedEvent.unsubscribeAll();this.configChangedEvent=3D=
null;this.owner=3Dnull;this.config=3Dnull;this.initialConfig=3Dnull;this.=
eventQueue=3Dnull;}};A.alreadySubscribed=3Dfunction(E,H,I){var =
F=3DE.subscribers.length,D,G;if(F>0){G=3DF-1;do{D=3DE.subscribers[G];if(D=
&&D.obj=3D=3DI&&D.fn=3D=3DH){return true;}}while(G--);}return =
false;};YAHOO.lang.augmentProto(A,YAHOO.util.EventProvider);}());(functio=
n(){YAHOO.widget.Module=3Dfunction(R,Q){if(R){this.init(R,Q);}else{}};var=
 =
F=3DYAHOO.util.Dom,D=3DYAHOO.util.Config,N=3DYAHOO.util.Event,M=3DYAHOO.u=
til.CustomEvent,G=3DYAHOO.widget.Module,I=3DYAHOO.env.ua,H,P,O,E,A=3D{"BE=
FORE_INIT":"beforeInit","INIT":"init","APPEND":"append","BEFORE_RENDER":"=
beforeRender","RENDER":"render","CHANGE_HEADER":"changeHeader","CHANGE_BO=
DY":"changeBody","CHANGE_FOOTER":"changeFooter","CHANGE_CONTENT":"changeC=
ontent","DESTORY":"destroy","BEFORE_SHOW":"beforeShow","SHOW":"show","BEF=
ORE_HIDE":"beforeHide","HIDE":"hide"},J=3D{"VISIBLE":{key:"visible",value=
:true,validator:YAHOO.lang.isBoolean},"EFFECT":{key:"effect",suppressEven=
t:true,supercedes:["visible"]},"MONITOR_RESIZE":{key:"monitorresize",valu=
e:true},"APPEND_TO_DOCUMENT_BODY":{key:"appendtodocumentbody",value:false=
}};G.IMG_ROOT=3Dnull;G.IMG_ROOT_SSL=3Dnull;G.CSS_MODULE=3D"yui-module";G.=
CSS_HEADER=3D"hd";G.CSS_BODY=3D"bd";G.CSS_FOOTER=3D"ft";G.RESIZE_MONITOR_=
SECURE_URL=3D"javascript:false;";G.RESIZE_MONITOR_BUFFER=3D1;G.textResize=
Event=3Dnew M("textResize");G.forceDocumentRedraw=3Dfunction(){var =
Q=3Ddocument.documentElement;if(Q){Q.className+=3D" =
";Q.className=3DYAHOO.lang.trim(Q.className);}};function =
L(){if(!H){H=3Ddocument.createElement("div");H.innerHTML=3D('<div =
class=3D"'+G.CSS_HEADER+'"></div>'+'<div =
class=3D"'+G.CSS_BODY+'"></div><div =
class=3D"'+G.CSS_FOOTER+'"></div>');P=3DH.firstChild;O=3DP.nextSibling;E=3D=
O.nextSibling;}return H;}function =
K(){if(!P){L();}return(P.cloneNode(false));}function =
B(){if(!O){L();}return(O.cloneNode(false));}function =
C(){if(!E){L();}return(E.cloneNode(false));}G.prototype=3D{constructor:G,=
element:null,header:null,body:null,footer:null,id:null,imageRoot:G.IMG_RO=
OT,initEvents:function(){var Q=3DM.LIST;=0A=
this.beforeInitEvent=3Dthis.createEvent(A.BEFORE_INIT);this.beforeInitEve=
nt.signature=3DQ;this.initEvent=3Dthis.createEvent(A.INIT);this.initEvent=
.signature=3DQ;this.appendEvent=3Dthis.createEvent(A.APPEND);this.appendE=
vent.signature=3DQ;this.beforeRenderEvent=3Dthis.createEvent(A.BEFORE_REN=
DER);this.beforeRenderEvent.signature=3DQ;this.renderEvent=3Dthis.createE=
vent(A.RENDER);this.renderEvent.signature=3DQ;this.changeHeaderEvent=3Dth=
is.createEvent(A.CHANGE_HEADER);this.changeHeaderEvent.signature=3DQ;this=
.changeBodyEvent=3Dthis.createEvent(A.CHANGE_BODY);this.changeBodyEvent.s=
ignature=3DQ;this.changeFooterEvent=3Dthis.createEvent(A.CHANGE_FOOTER);t=
his.changeFooterEvent.signature=3DQ;this.changeContentEvent=3Dthis.create=
Event(A.CHANGE_CONTENT);this.changeContentEvent.signature=3DQ;this.destro=
yEvent=3Dthis.createEvent(A.DESTORY);this.destroyEvent.signature=3DQ;this=
.beforeShowEvent=3Dthis.createEvent(A.BEFORE_SHOW);this.beforeShowEvent.s=
ignature=3DQ;this.showEvent=3Dthis.createEvent(A.SHOW);this.showEvent.sig=
nature=3DQ;this.beforeHideEvent=3Dthis.createEvent(A.BEFORE_HIDE);this.be=
foreHideEvent.signature=3DQ;this.hideEvent=3Dthis.createEvent(A.HIDE);thi=
s.hideEvent.signature=3DQ;},platform:function(){var =
Q=3Dnavigator.userAgent.toLowerCase();if(Q.indexOf("windows")!=3D-1||Q.in=
dexOf("win32")!=3D-1){return"windows";}else{if(Q.indexOf("macintosh")!=3D=
-1){return"mac";}else{return false;}}}(),browser:function(){var =
Q=3Dnavigator.userAgent.toLowerCase();if(Q.indexOf("opera")!=3D-1){return=
"opera";}else{if(Q.indexOf("msie =
7")!=3D-1){return"ie7";}else{if(Q.indexOf("msie")!=3D-1){return"ie";}else=
{if(Q.indexOf("safari")!=3D-1){return"safari";}else{if(Q.indexOf("gecko")=
!=3D-1){return"gecko";}else{return =
false;}}}}}}(),isSecure:function(){if(window.location.href.toLowerCase().=
indexOf("https")=3D=3D=3D0){return true;}else{return =
false;}}(),initDefaultConfig:function(){this.cfg.addProperty(J.VISIBLE.ke=
y,{handler:this.configVisible,value:J.VISIBLE.value,validator:J.VISIBLE.v=
alidator});this.cfg.addProperty(J.EFFECT.key,{suppressEvent:J.EFFECT.supp=
ressEvent,supercedes:J.EFFECT.supercedes});this.cfg.addProperty(J.MONITOR=
_RESIZE.key,{handler:this.configMonitorResize,value:J.MONITOR_RESIZE.valu=
e});this.cfg.addProperty(J.APPEND_TO_DOCUMENT_BODY.key,{value:J.APPEND_TO=
_DOCUMENT_BODY.value});},init:function(V,U){var =
S,W;this.initEvents();this.beforeInitEvent.fire(G);this.cfg=3Dnew =
D(this);if(this.isSecure){this.imageRoot=3DG.IMG_ROOT_SSL;}if(typeof =
V=3D=3D"string"){S=3DV;V=3Ddocument.getElementById(V);if(!V){V=3D(L()).cl=
oneNode(false);V.id=3DS;}}this.id=3DF.generateId(V);this.element=3DV;W=3D=
this.element.firstChild;if(W){var =
R=3Dfalse,Q=3Dfalse,T=3Dfalse;do{if(1=3D=3DW.nodeType){if(!R&&F.hasClass(=
W,G.CSS_HEADER)){this.header=3DW;R=3Dtrue;}else{if(!Q&&F.hasClass(W,G.CSS=
_BODY)){this.body=3DW;Q=3Dtrue;}else{if(!T&&F.hasClass(W,G.CSS_FOOTER)){t=
his.footer=3DW;T=3Dtrue;}}}}}while((W=3DW.nextSibling));}this.initDefault=
Config();F.addClass(this.element,G.CSS_MODULE);if(U){this.cfg.applyConfig=
(U,true);}if(!D.alreadySubscribed(this.renderEvent,this.cfg.fireQueue,thi=
s.cfg)){this.renderEvent.subscribe(this.cfg.fireQueue,this.cfg,true);}thi=
s.initEvent.fire(G);},initResizeMonitor:function(){var =
R=3D(I.gecko&&this.platform=3D=3D"windows");if(R){var =
Q=3Dthis;setTimeout(function(){Q._initResizeMonitor();},0);}else{this._in=
itResizeMonitor();}},_initResizeMonitor:function(){var Q,S,U;function =
W(){G.textResizeEvent.fire();}if(!I.opera){S=3DF.get("_yuiResizeMonitor")=
;var =
V=3Dthis._supportsCWResize();if(!S){S=3Ddocument.createElement("iframe");=
if(this.isSecure&&G.RESIZE_MONITOR_SECURE_URL&&I.ie){S.src=3DG.RESIZE_MON=
ITOR_SECURE_URL;}if(!V){U=3D["<html><head><script =
",'type=3D"text/javascript">',"window.onresize=3Dfunction(){window.parent=
.","YAHOO.widget.Module.textResizeEvent.","fire();};<","/script></head>",=
"<body></body></html>"].join("");S.src=3D"data:text/html;charset=3Dutf-8,=
"+encodeURIComponent(U);}S.id=3D"_yuiResizeMonitor";S.title=3D"Text =
Resize =
Monitor";S.style.position=3D"absolute";S.style.visibility=3D"hidden";var =
R=3Ddocument.body,T=3DR.firstChild;if(T){R.insertBefore(S,T);}else{R.appe=
ndChild(S);}S.style.width=3D"2em";S.style.height=3D"2em";S.style.top=3D(-=
1*(S.offsetHeight+G.RESIZE_MONITOR_BUFFER))+"px";S.style.left=3D"0";S.sty=
le.borderWidth=3D"0";S.style.visibility=3D"visible";if(I.webkit){Q=3DS.co=
ntentWindow.document;Q.open();Q.close();}}if(S&&S.contentWindow){G.textRe=
sizeEvent.subscribe(this.onDomResize,this,true);if(!G.textResizeInitializ=
ed){if(V){if(!N.on(S.contentWindow,"resize",W)){N.on(S,"resize",W);}}G.te=
xtResizeInitialized=3Dtrue;}this.resizeMonitor=3DS;}}},_supportsCWResize:=
function(){var Q=3Dtrue;if(I.gecko&&I.gecko<=3D1.8){Q=3Dfalse;}return =
Q;},onDomResize:function(S,R){var =
Q=3D-1*(this.resizeMonitor.offsetHeight+G.RESIZE_MONITOR_BUFFER);this.res=
izeMonitor.style.top=3DQ+"px";this.resizeMonitor.style.left=3D"0";},setHe=
ader:function(R){var =
Q=3Dthis.header||(this.header=3DK());if(R.nodeName){Q.innerHTML=3D"";Q.ap=
pendChild(R);}else{Q.innerHTML=3DR;}this.changeHeaderEvent.fire(R);this.c=
hangeContentEvent.fire();},appendToHeader:function(R){var =
Q=3Dthis.header||(this.header=3DK());Q.appendChild(R);this.changeHeaderEv=
ent.fire(R);this.changeContentEvent.fire();},setBody:function(R){var =
Q=3Dthis.body||(this.body=3DB());if(R.nodeName){Q.innerHTML=3D"";Q.append=
Child(R);}else{Q.innerHTML=3DR;}this.changeBodyEvent.fire(R);this.changeC=
ontentEvent.fire();},appendToBody:function(R){var =
Q=3Dthis.body||(this.body=3DB());Q.appendChild(R);this.changeBodyEvent.fi=
re(R);this.changeContentEvent.fire();},setFooter:function(R){var =
Q=3Dthis.footer||(this.footer=3DC());if(R.nodeName){Q.innerHTML=3D"";Q.ap=
pendChild(R);}else{Q.innerHTML=3DR;}this.changeFooterEvent.fire(R);this.c=
hangeContentEvent.fire();},appendToFooter:function(R){var =
Q=3Dthis.footer||(this.footer=3DC());Q.appendChild(R);this.changeFooterEv=
ent.fire(R);this.changeContentEvent.fire();},render:function(S,Q){var =
T=3Dthis,U;function R(V){if(typeof =
V=3D=3D"string"){V=3Ddocument.getElementById(V);}if(V){T._addToParent(V,T=
.element);T.appendEvent.fire();}}this.beforeRenderEvent.fire();if(!Q){Q=3D=
this.element;}if(S){R(S);}else{if(!F.inDocument(this.element)){return =
false;}}if(this.header&&!F.inDocument(this.header)){U=3DQ.firstChild;=0A=
if(U){Q.insertBefore(this.header,U);}else{Q.appendChild(this.header);}}if=
(this.body&&!F.inDocument(this.body)){if(this.footer&&F.isAncestor(this.m=
oduleElement,this.footer)){Q.insertBefore(this.body,this.footer);}else{Q.=
appendChild(this.body);}}if(this.footer&&!F.inDocument(this.footer)){Q.ap=
pendChild(this.footer);}this.renderEvent.fire();return =
true;},destroy:function(){var =
Q;if(this.element){N.purgeElement(this.element,true);Q=3Dthis.element.par=
entNode;}if(Q){Q.removeChild(this.element);}this.element=3Dnull;this.head=
er=3Dnull;this.body=3Dnull;this.footer=3Dnull;G.textResizeEvent.unsubscri=
be(this.onDomResize,this);this.cfg.destroy();this.cfg=3Dnull;this.destroy=
Event.fire();},show:function(){this.cfg.setProperty("visible",true);},hid=
e:function(){this.cfg.setProperty("visible",false);},configVisible:functi=
on(R,Q,S){var =
T=3DQ[0];if(T){this.beforeShowEvent.fire();F.setStyle(this.element,"displ=
ay","block");this.showEvent.fire();}else{this.beforeHideEvent.fire();F.se=
tStyle(this.element,"display","none");this.hideEvent.fire();}},configMoni=
torResize:function(S,R,T){var =
Q=3DR[0];if(Q){this.initResizeMonitor();}else{G.textResizeEvent.unsubscri=
be(this.onDomResize,this,true);this.resizeMonitor=3Dnull;}},_addToParent:=
function(Q,R){if(!this.cfg.getProperty("appendtodocumentbody")&&Q=3D=3D=3D=
document.body&&Q.firstChild){Q.insertBefore(R,Q.firstChild);}else{Q.appen=
dChild(R);}},toString:function(){return"Module =
"+this.id;}};YAHOO.lang.augmentProto(G,YAHOO.util.EventProvider);}());(fu=
nction(){YAHOO.widget.Overlay=3Dfunction(P,O){YAHOO.widget.Overlay.superc=
lass.constructor.call(this,P,O);};var =
I=3DYAHOO.lang,M=3DYAHOO.util.CustomEvent,G=3DYAHOO.widget.Module,N=3DYAH=
OO.util.Event,F=3DYAHOO.util.Dom,D=3DYAHOO.util.Config,K=3DYAHOO.env.ua,B=
=3DYAHOO.widget.Overlay,H=3D"subscribe",E=3D"unsubscribe",C=3D"contained"=
,J,A=3D{"BEFORE_MOVE":"beforeMove","MOVE":"move"},L=3D{"X":{key:"x",valid=
ator:I.isNumber,suppressEvent:true,supercedes:["iframe"]},"Y":{key:"y",va=
lidator:I.isNumber,suppressEvent:true,supercedes:["iframe"]},"XY":{key:"x=
y",suppressEvent:true,supercedes:["iframe"]},"CONTEXT":{key:"context",sup=
pressEvent:true,supercedes:["iframe"]},"FIXED_CENTER":{key:"fixedcenter",=
value:false,supercedes:["iframe","visible"]},"WIDTH":{key:"width",suppres=
sEvent:true,supercedes:["context","fixedcenter","iframe"]},"HEIGHT":{key:=
"height",suppressEvent:true,supercedes:["context","fixedcenter","iframe"]=
},"AUTO_FILL_HEIGHT":{key:"autofillheight",supercedes:["height"],value:"b=
ody"},"ZINDEX":{key:"zindex",value:null},"CONSTRAIN_TO_VIEWPORT":{key:"co=
nstraintoviewport",value:false,validator:I.isBoolean,supercedes:["iframe"=
,"x","y","xy"]},"IFRAME":{key:"iframe",value:(K.ie=3D=3D6?true:false),val=
idator:I.isBoolean,supercedes:["zindex"]},"PREVENT_CONTEXT_OVERLAP":{key:=
"preventcontextoverlap",value:false,validator:I.isBoolean,supercedes:["co=
nstraintoviewport"]}};B.IFRAME_SRC=3D"javascript:false;";B.IFRAME_OFFSET=3D=
3;B.VIEWPORT_OFFSET=3D10;B.TOP_LEFT=3D"tl";B.TOP_RIGHT=3D"tr";B.BOTTOM_LE=
FT=3D"bl";B.BOTTOM_RIGHT=3D"br";B.CSS_OVERLAY=3D"yui-overlay";B.STD_MOD_R=
E=3D/^\s*?(body|footer|header)\s*?$/i;B.windowScrollEvent=3Dnew =
M("windowScroll");B.windowResizeEvent=3Dnew =
M("windowResize");B.windowScrollHandler=3Dfunction(P){var =
O=3DN.getTarget(P);if(!O||O=3D=3D=3Dwindow||O=3D=3D=3Dwindow.document){if=
(K.ie){if(!window.scrollEnd){window.scrollEnd=3D-1;}clearTimeout(window.s=
crollEnd);window.scrollEnd=3DsetTimeout(function(){B.windowScrollEvent.fi=
re();},1);}else{B.windowScrollEvent.fire();}}};B.windowResizeHandler=3Dfu=
nction(O){if(K.ie){if(!window.resizeEnd){window.resizeEnd=3D-1;}clearTime=
out(window.resizeEnd);window.resizeEnd=3DsetTimeout(function(){B.windowRe=
sizeEvent.fire();},100);}else{B.windowResizeEvent.fire();}};B._initialize=
d=3Dnull;if(B._initialized=3D=3D=3Dnull){N.on(window,"scroll",B.windowScr=
ollHandler);N.on(window,"resize",B.windowResizeHandler);B._initialized=3D=
true;}B._TRIGGER_MAP=3D{"windowScroll":B.windowScrollEvent,"windowResize"=
:B.windowResizeEvent,"textResize":G.textResizeEvent};YAHOO.extend(B,G,{CO=
NTEXT_TRIGGERS:[],init:function(P,O){B.superclass.init.call(this,P);this.=
beforeInitEvent.fire(B);F.addClass(this.element,B.CSS_OVERLAY);if(O){this=
.cfg.applyConfig(O,true);}if(this.platform=3D=3D"mac"&&K.gecko){if(!D.alr=
eadySubscribed(this.showEvent,this.showMacGeckoScrollbars,this)){this.sho=
wEvent.subscribe(this.showMacGeckoScrollbars,this,true);}if(!D.alreadySub=
scribed(this.hideEvent,this.hideMacGeckoScrollbars,this)){this.hideEvent.=
subscribe(this.hideMacGeckoScrollbars,this,true);}}this.initEvent.fire(B)=
;},initEvents:function(){B.superclass.initEvents.call(this);var =
O=3DM.LIST;this.beforeMoveEvent=3Dthis.createEvent(A.BEFORE_MOVE);this.be=
foreMoveEvent.signature=3DO;this.moveEvent=3Dthis.createEvent(A.MOVE);thi=
s.moveEvent.signature=3DO;},initDefaultConfig:function(){B.superclass.ini=
tDefaultConfig.call(this);var =
O=3Dthis.cfg;O.addProperty(L.X.key,{handler:this.configX,validator:L.X.va=
lidator,suppressEvent:L.X.suppressEvent,supercedes:L.X.supercedes});O.add=
Property(L.Y.key,{handler:this.configY,validator:L.Y.validator,suppressEv=
ent:L.Y.suppressEvent,supercedes:L.Y.supercedes});O.addProperty(L.XY.key,=
{handler:this.configXY,suppressEvent:L.XY.suppressEvent,supercedes:L.XY.s=
upercedes});O.addProperty(L.CONTEXT.key,{handler:this.configContext,suppr=
essEvent:L.CONTEXT.suppressEvent,supercedes:L.CONTEXT.supercedes});O.addP=
roperty(L.FIXED_CENTER.key,{handler:this.configFixedCenter,value:L.FIXED_=
CENTER.value,validator:L.FIXED_CENTER.validator,supercedes:L.FIXED_CENTER=
.supercedes});O.addProperty(L.WIDTH.key,{handler:this.configWidth,suppres=
sEvent:L.WIDTH.suppressEvent,supercedes:L.WIDTH.supercedes});O.addPropert=
y(L.HEIGHT.key,{handler:this.configHeight,suppressEvent:L.HEIGHT.suppress=
Event,supercedes:L.HEIGHT.supercedes});O.addProperty(L.AUTO_FILL_HEIGHT.k=
ey,{handler:this.configAutoFillHeight,value:L.AUTO_FILL_HEIGHT.value,vali=
dator:this._validateAutoFill,supercedes:L.AUTO_FILL_HEIGHT.supercedes});O=
.addProperty(L.ZINDEX.key,{handler:this.configzIndex,value:L.ZINDEX.value=
});O.addProperty(L.CONSTRAIN_TO_VIEWPORT.key,{handler:this.configConstrai=
nToViewport,value:L.CONSTRAIN_TO_VIEWPORT.value,validator:L.CONSTRAIN_TO_=
VIEWPORT.validator,supercedes:L.CONSTRAIN_TO_VIEWPORT.supercedes});=0A=
O.addProperty(L.IFRAME.key,{handler:this.configIframe,value:L.IFRAME.valu=
e,validator:L.IFRAME.validator,supercedes:L.IFRAME.supercedes});O.addProp=
erty(L.PREVENT_CONTEXT_OVERLAP.key,{value:L.PREVENT_CONTEXT_OVERLAP.value=
,validator:L.PREVENT_CONTEXT_OVERLAP.validator,supercedes:L.PREVENT_CONTE=
XT_OVERLAP.supercedes});},moveTo:function(O,P){this.cfg.setProperty("xy",=
[O,P]);},hideMacGeckoScrollbars:function(){F.replaceClass(this.element,"s=
how-scrollbars","hide-scrollbars");},showMacGeckoScrollbars:function(){F.=
replaceClass(this.element,"hide-scrollbars","show-scrollbars");},_setDomV=
isibility:function(O){F.setStyle(this.element,"visibility",(O)?"visible":=
"hidden");if(O){F.removeClass(this.element,"yui-overlay-hidden");}else{F.=
addClass(this.element,"yui-overlay-hidden");}},configVisible:function(R,O=
,X){var =
Q=3DO[0],S=3DF.getStyle(this.element,"visibility"),Y=3Dthis.cfg.getProper=
ty("effect"),V=3D[],U=3D(this.platform=3D=3D"mac"&&K.gecko),g=3DD.already=
Subscribed,W,P,f,c,b,a,d,Z,T;if(S=3D=3D"inherit"){f=3Dthis.element.parent=
Node;while(f.nodeType!=3D9&&f.nodeType!=3D11){S=3DF.getStyle(f,"visibilit=
y");if(S!=3D"inherit"){break;}f=3Df.parentNode;}if(S=3D=3D"inherit"){S=3D=
"visible";}}if(Y){if(Y instanceof =
Array){Z=3DY.length;for(c=3D0;c<Z;c++){W=3DY[c];V[V.length]=3DW.effect(th=
is,W.duration);}}else{V[V.length]=3DY.effect(this,Y.duration);}}if(Q){if(=
U){this.showMacGeckoScrollbars();}if(Y){if(Q){if(S!=3D"visible"||S=3D=3D=3D=
""){this.beforeShowEvent.fire();T=3DV.length;for(b=3D0;b<T;b++){P=3DV[b];=
if(b=3D=3D=3D0&&!g(P.animateInCompleteEvent,this.showEvent.fire,this.show=
Event)){P.animateInCompleteEvent.subscribe(this.showEvent.fire,this.showE=
vent,true);}P.animateIn();}}}}else{if(S!=3D"visible"||S=3D=3D=3D""){this.=
beforeShowEvent.fire();this._setDomVisibility(true);this.cfg.refireEvent(=
"iframe");this.showEvent.fire();}else{this._setDomVisibility(true);}}}els=
e{if(U){this.hideMacGeckoScrollbars();}if(Y){if(S=3D=3D"visible"){this.be=
foreHideEvent.fire();T=3DV.length;for(a=3D0;a<T;a++){d=3DV[a];if(a=3D=3D=3D=
0&&!g(d.animateOutCompleteEvent,this.hideEvent.fire,this.hideEvent)){d.an=
imateOutCompleteEvent.subscribe(this.hideEvent.fire,this.hideEvent,true);=
}d.animateOut();}}else{if(S=3D=3D=3D""){this._setDomVisibility(false);}}}=
else{if(S=3D=3D"visible"||S=3D=3D=3D""){this.beforeHideEvent.fire();this.=
_setDomVisibility(false);this.hideEvent.fire();}else{this._setDomVisibili=
ty(false);}}}},doCenterOnDOMEvent:function(){var =
O=3Dthis.cfg,P=3DO.getProperty("fixedcenter");if(O.getProperty("visible")=
){if(P&&(P!=3D=3DC||this.fitsInViewport())){this.center();}}},fitsInViewp=
ort:function(){var =
S=3DB.VIEWPORT_OFFSET,Q=3Dthis.element,T=3DQ.offsetWidth,R=3DQ.offsetHeig=
ht,O=3DF.getViewportWidth(),P=3DF.getViewportHeight();return((T+S<O)&&(R+=
S<P));},configFixedCenter:function(S,Q,T){var =
U=3DQ[0],P=3DD.alreadySubscribed,R=3DB.windowResizeEvent,O=3DB.windowScro=
llEvent;if(U){this.center();if(!P(this.beforeShowEvent,this.center)){this=
.beforeShowEvent.subscribe(this.center);}if(!P(R,this.doCenterOnDOMEvent,=
this)){R.subscribe(this.doCenterOnDOMEvent,this,true);}if(!P(O,this.doCen=
terOnDOMEvent,this)){O.subscribe(this.doCenterOnDOMEvent,this,true);}}els=
e{this.beforeShowEvent.unsubscribe(this.center);R.unsubscribe(this.doCent=
erOnDOMEvent,this);O.unsubscribe(this.doCenterOnDOMEvent,this);}},configH=
eight:function(R,P,S){var =
O=3DP[0],Q=3Dthis.element;F.setStyle(Q,"height",O);this.cfg.refireEvent("=
iframe");},configAutoFillHeight:function(T,S,P){var =
V=3DS[0],Q=3Dthis.cfg,U=3D"autofillheight",W=3D"height",R=3DQ.getProperty=
(U),O=3Dthis._autoFillOnHeightChange;Q.unsubscribeFromConfigEvent(W,O);G.=
textResizeEvent.unsubscribe(O);this.changeContentEvent.unsubscribe(O);if(=
R&&V!=3D=3DR&&this[R]){F.setStyle(this[R],W,"");}if(V){V=3DI.trim(V.toLow=
erCase());Q.subscribeToConfigEvent(W,O,this[V],this);G.textResizeEvent.su=
bscribe(O,this[V],this);this.changeContentEvent.subscribe(O,this[V],this)=
;Q.setProperty(U,V,true);}},configWidth:function(R,O,S){var =
Q=3DO[0],P=3Dthis.element;F.setStyle(P,"width",Q);this.cfg.refireEvent("i=
frame");},configzIndex:function(Q,O,R){var =
S=3DO[0],P=3Dthis.element;if(!S){S=3DF.getStyle(P,"zIndex");if(!S||isNaN(=
S)){S=3D0;}}if(this.iframe||this.cfg.getProperty("iframe")=3D=3D=3Dtrue){=
if(S<=3D0){S=3D1;}}F.setStyle(P,"zIndex",S);this.cfg.setProperty("zIndex"=
,S,true);if(this.iframe){this.stackIframe();}},configXY:function(Q,P,R){v=
ar =
T=3DP[0],O=3DT[0],S=3DT[1];this.cfg.setProperty("x",O);this.cfg.setProper=
ty("y",S);this.beforeMoveEvent.fire([O,S]);O=3Dthis.cfg.getProperty("x");=
S=3Dthis.cfg.getProperty("y");this.cfg.refireEvent("iframe");this.moveEve=
nt.fire([O,S]);},configX:function(Q,P,R){var =
O=3DP[0],S=3Dthis.cfg.getProperty("y");this.cfg.setProperty("x",O,true);t=
his.cfg.setProperty("y",S,true);this.beforeMoveEvent.fire([O,S]);O=3Dthis=
.cfg.getProperty("x");S=3Dthis.cfg.getProperty("y");F.setX(this.element,O=
,true);this.cfg.setProperty("xy",[O,S],true);this.cfg.refireEvent("iframe=
");this.moveEvent.fire([O,S]);},configY:function(Q,P,R){var =
O=3Dthis.cfg.getProperty("x"),S=3DP[0];this.cfg.setProperty("x",O,true);t=
his.cfg.setProperty("y",S,true);this.beforeMoveEvent.fire([O,S]);O=3Dthis=
.cfg.getProperty("x");S=3Dthis.cfg.getProperty("y");F.setY(this.element,S=
,true);this.cfg.setProperty("xy",[O,S],true);this.cfg.refireEvent("iframe=
");this.moveEvent.fire([O,S]);},showIframe:function(){var =
P=3Dthis.iframe,O;if(P){O=3Dthis.element.parentNode;if(O!=3DP.parentNode)=
{this._addToParent(O,P);}P.style.display=3D"block";}},hideIframe:function=
(){if(this.iframe){this.iframe.style.display=3D"none";}},syncIframe:funct=
ion(){var =
O=3Dthis.iframe,Q=3Dthis.element,S=3DB.IFRAME_OFFSET,P=3D(S*2),R;if(O){O.=
style.width=3D(Q.offsetWidth+P+"px");O.style.height=3D(Q.offsetHeight+P+"=
px");R=3Dthis.cfg.getProperty("xy");if(!I.isArray(R)||(isNaN(R[0])||isNaN=
(R[1]))){this.syncPosition();R=3Dthis.cfg.getProperty("xy");}F.setXY(O,[(=
R[0]-S),(R[1]-S)]);}},stackIframe:function(){if(this.iframe){var =
O=3DF.getStyle(this.element,"zIndex");if(!YAHOO.lang.isUndefined(O)&&!isN=
aN(O)){F.setStyle(this.iframe,"zIndex",(O-1));}}},configIframe:function(R=
,Q,S){var O=3DQ[0];function T(){var =
V=3Dthis.iframe,W=3Dthis.element,X;if(!V){if(!J){J=3Ddocument.createEleme=
nt("iframe");if(this.isSecure){J.src=3DB.IFRAME_SRC;}if(K.ie){J.style.fil=
ter=3D"alpha(opacity=3D0)";=0A=
J.frameBorder=3D0;}else{J.style.opacity=3D"0";}J.style.position=3D"absolu=
te";J.style.border=3D"none";J.style.margin=3D"0";J.style.padding=3D"0";J.=
style.display=3D"none";J.tabIndex=3D-1;}V=3DJ.cloneNode(false);X=3DW.pare=
ntNode;var =
U=3DX||document.body;this._addToParent(U,V);this.iframe=3DV;}this.showIfr=
ame();this.syncIframe();this.stackIframe();if(!this._hasIframeEventListen=
ers){this.showEvent.subscribe(this.showIframe);this.hideEvent.subscribe(t=
his.hideIframe);this.changeContentEvent.subscribe(this.syncIframe);this._=
hasIframeEventListeners=3Dtrue;}}function =
P(){T.call(this);this.beforeShowEvent.unsubscribe(P);this._iframeDeferred=
=3Dfalse;}if(O){if(this.cfg.getProperty("visible")){T.call(this);}else{if=
(!this._iframeDeferred){this.beforeShowEvent.subscribe(P);this._iframeDef=
erred=3Dtrue;}}}else{this.hideIframe();if(this._hasIframeEventListeners){=
this.showEvent.unsubscribe(this.showIframe);this.hideEvent.unsubscribe(th=
is.hideIframe);this.changeContentEvent.unsubscribe(this.syncIframe);this.=
_hasIframeEventListeners=3Dfalse;}}},_primeXYFromDOM:function(){if(YAHOO.=
lang.isUndefined(this.cfg.getProperty("xy"))){this.syncPosition();this.cf=
g.refireEvent("xy");this.beforeShowEvent.unsubscribe(this._primeXYFromDOM=
);}},configConstrainToViewport:function(P,O,Q){var =
R=3DO[0];if(R){if(!D.alreadySubscribed(this.beforeMoveEvent,this.enforceC=
onstraints,this)){this.beforeMoveEvent.subscribe(this.enforceConstraints,=
this,true);}if(!D.alreadySubscribed(this.beforeShowEvent,this._primeXYFro=
mDOM)){this.beforeShowEvent.subscribe(this._primeXYFromDOM);}}else{this.b=
eforeShowEvent.unsubscribe(this._primeXYFromDOM);this.beforeMoveEvent.uns=
ubscribe(this.enforceConstraints,this);}},configContext:function(T,S,P){v=
ar =
W=3DS[0],Q,O,U,R,V=3Dthis.CONTEXT_TRIGGERS;if(W){Q=3DW[0];O=3DW[1];U=3DW[=
2];R=3DW[3];if(V&&V.length>0){R=3D(R||[]).concat(V);}if(Q){if(typeof =
Q=3D=3D"string"){this.cfg.setProperty("context",[document.getElementById(=
Q),O,U,R],true);}if(O&&U){this.align(O,U);}if(this._contextTriggers){this=
._processTriggers(this._contextTriggers,E,this._alignOnTrigger);}if(R){th=
is._processTriggers(R,H,this._alignOnTrigger);this._contextTriggers=3DR;}=
}}},_alignOnTrigger:function(P,O){this.align();},_findTriggerCE:function(=
O){var P=3Dnull;if(O instanceof =
M){P=3DO;}else{if(B._TRIGGER_MAP[O]){P=3DB._TRIGGER_MAP[O];}}return =
P;},_processTriggers:function(S,U,R){var Q,T;for(var =
P=3D0,O=3DS.length;P<O;++P){Q=3DS[P];T=3Dthis._findTriggerCE(Q);if(T){T[U=
](R,this,true);}else{this[U](Q,R);}}},align:function(P,O){var =
U=3Dthis.cfg.getProperty("context"),T=3Dthis,S,R,V;function =
Q(W,X){switch(P){case B.TOP_LEFT:T.moveTo(X,W);break;case =
B.TOP_RIGHT:T.moveTo((X-R.offsetWidth),W);break;case =
B.BOTTOM_LEFT:T.moveTo(X,(W-R.offsetHeight));break;case =
B.BOTTOM_RIGHT:T.moveTo((X-R.offsetWidth),(W-R.offsetHeight));break;}}if(=
U){S=3DU[0];R=3Dthis.element;T=3Dthis;if(!P){P=3DU[1];}if(!O){O=3DU[2];}i=
f(R&&S){V=3DF.getRegion(S);switch(O){case =
B.TOP_LEFT:Q(V.top,V.left);break;case =
B.TOP_RIGHT:Q(V.top,V.right);break;case =
B.BOTTOM_LEFT:Q(V.bottom,V.left);break;case =
B.BOTTOM_RIGHT:Q(V.bottom,V.right);break;}}}},enforceConstraints:function=
(P,O,Q){var S=3DO[0];var =
R=3Dthis.getConstrainedXY(S[0],S[1]);this.cfg.setProperty("x",R[0],true);=
this.cfg.setProperty("y",R[1],true);this.cfg.setProperty("xy",R,true);},g=
etConstrainedX:function(V){var =
S=3Dthis,O=3DS.element,e=3DO.offsetWidth,c=3DB.VIEWPORT_OFFSET,h=3DF.getV=
iewportWidth(),d=3DF.getDocumentScrollLeft(),Y=3D(e+c<h),b=3Dthis.cfg.get=
Property("context"),Q,X,j,T=3Dfalse,f,W,g=3Dd+c,P=3Dd+h-e-c,i=3DV,U=3D{"t=
ltr":true,"blbr":true,"brbl":true,"trtl":true};var Z=3Dfunction(){var =
k;if((S.cfg.getProperty("x")-d)>X){k=3D(X-e);}else{k=3D(X+j);}S.cfg.setPr=
operty("x",(k+d),true);return k;};var =
R=3Dfunction(){if((S.cfg.getProperty("x")-d)>X){return(W-c);}else{return(=
f-c);}};var a=3Dfunction(){var =
k=3DR(),l;if(e>k){if(T){Z();}else{Z();T=3Dtrue;l=3Da();}}return =
l;};if(V<g||V>P){if(Y){if(this.cfg.getProperty("preventcontextoverlap")&&=
b&&U[(b[1]+b[2])]){Q=3Db[0];X=3DF.getX(Q)-d;j=3DQ.offsetWidth;f=3DX;W=3D(=
h-(X+j));a();i=3Dthis.cfg.getProperty("x");}else{if(V<g){i=3Dg;}else{if(V=
>P){i=3DP;}}}}else{i=3Dc+d;}}return i;},getConstrainedY:function(Z){var =
W=3Dthis,P=3DW.element,i=3DP.offsetHeight,h=3DB.VIEWPORT_OFFSET,d=3DF.get=
ViewportHeight(),g=3DF.getDocumentScrollTop(),e=3D(i+h<d),f=3Dthis.cfg.ge=
tProperty("context"),U,a,b,X=3Dfalse,V,Q,c=3Dg+h,S=3Dg+d-i-h,O=3DZ,Y=3D{"=
trbr":true,"tlbl":true,"bltl":true,"brtr":true};var T=3Dfunction(){var =
k;if((W.cfg.getProperty("y")-g)>a){k=3D(a-i);}else{k=3D(a+b);}W.cfg.setPr=
operty("y",(k+g),true);return k;};var =
R=3Dfunction(){if((W.cfg.getProperty("y")-g)>a){return(Q-h);}else{return(=
V-h);}};var j=3Dfunction(){var =
l=3DR(),k;if(i>l){if(X){T();}else{T();X=3Dtrue;k=3Dj();}}return =
k;};if(Z<c||Z>S){if(e){if(this.cfg.getProperty("preventcontextoverlap")&&=
f&&Y[(f[1]+f[2])]){U=3Df[0];b=3DU.offsetHeight;a=3D(F.getY(U)-g);V=3Da;Q=3D=
(d-(a+b));j();O=3DW.cfg.getProperty("y");}else{if(Z<c){O=3Dc;}else{if(Z>S=
){O=3DS;}}}}else{O=3Dh+g;}}return =
O;},getConstrainedXY:function(O,P){return[this.getConstrainedX(O),this.ge=
tConstrainedY(P)];},center:function(){var =
R=3DB.VIEWPORT_OFFSET,S=3Dthis.element.offsetWidth,Q=3Dthis.element.offse=
tHeight,P=3DF.getViewportWidth(),T=3DF.getViewportHeight(),O,U;if(S<P){O=3D=
(P/2)-(S/2)+F.getDocumentScrollLeft();}else{O=3DR+F.getDocumentScrollLeft=
();}if(Q<T){U=3D(T/2)-(Q/2)+F.getDocumentScrollTop();}else{U=3DR+F.getDoc=
umentScrollTop();}this.cfg.setProperty("xy",[parseInt(O,10),parseInt(U,10=
)]);this.cfg.refireEvent("iframe");if(K.webkit){this.forceContainerRedraw=
();}},syncPosition:function(){var =
O=3DF.getXY(this.element);this.cfg.setProperty("x",O[0],true);this.cfg.se=
tProperty("y",O[1],true);this.cfg.setProperty("xy",O,true);},onDomResize:=
function(Q,P){var =
O=3Dthis;B.superclass.onDomResize.call(this,Q,P);setTimeout(function(){O.=
syncPosition();O.cfg.refireEvent("iframe");O.cfg.refireEvent("context");}=
,0);},_getComputedHeight:(function(){if(document.defaultView&&document.de=
faultView.getComputedStyle){return function(P){var =
O=3Dnull;if(P.ownerDocument&&P.ownerDocument.defaultView){var =
Q=3DP.ownerDocument.defaultView.getComputedStyle(P,"");if(Q){O=3DparseInt=
(Q.height,10);}}return(I.isNumber(O))?O:null;};}else{return =
function(P){var O=3Dnull;=0A=
if(P.style.pixelHeight){O=3DP.style.pixelHeight;}return(I.isNumber(O))?O:=
null;};}})(),_validateAutoFillHeight:function(O){return(!O)||(I.isString(=
O)&&B.STD_MOD_RE.test(O));},_autoFillOnHeightChange:function(R,P,Q){var =
O=3Dthis.cfg.getProperty("height");if((O&&O!=3D=3D"auto")||(O=3D=3D=3D0))=
{this.fillHeight(Q);}},_getPreciseHeight:function(P){var =
O=3DP.offsetHeight;if(P.getBoundingClientRect){var =
Q=3DP.getBoundingClientRect();O=3DQ.bottom-Q.top;}return =
O;},fillHeight:function(R){if(R){var =
P=3Dthis.innerElement||this.element,O=3D[this.header,this.body,this.foote=
r],V,W=3D0,X=3D0,T=3D0,Q=3Dfalse;for(var =
U=3D0,S=3DO.length;U<S;U++){V=3DO[U];if(V){if(R!=3D=3DV){X+=3Dthis._getPr=
eciseHeight(V);}else{Q=3Dtrue;}}}if(Q){if(K.ie||K.opera){F.setStyle(R,"he=
ight",0+"px");}W=3Dthis._getComputedHeight(P);if(W=3D=3D=3Dnull){F.addCla=
ss(P,"yui-override-padding");W=3DP.clientHeight;F.removeClass(P,"yui-over=
ride-padding");}T=3DMath.max(W-X,0);F.setStyle(R,"height",T+"px");if(R.of=
fsetHeight!=3DT){T=3DMath.max(T-(R.offsetHeight-T),0);}F.setStyle(R,"heig=
ht",T+"px");}}},bringToTop:function(){var =
S=3D[],R=3Dthis.element;function V(Z,Y){var =
b=3DF.getStyle(Z,"zIndex"),a=3DF.getStyle(Y,"zIndex"),X=3D(!b||isNaN(b))?=
0:parseInt(b,10),W=3D(!a||isNaN(a))?0:parseInt(a,10);if(X>W){return =
-1;}else{if(X<W){return 1;}else{return 0;}}}function Q(Y){var =
X=3DF.hasClass(Y,B.CSS_OVERLAY),W=3DYAHOO.widget.Panel;if(X&&!F.isAncesto=
r(R,Y)){if(W&&F.hasClass(Y,W.CSS_PANEL)){S[S.length]=3DY.parentNode;}else=
{S[S.length]=3DY;}}}F.getElementsBy(Q,"DIV",document.body);S.sort(V);var =
O=3DS[0],U;if(O){U=3DF.getStyle(O,"zIndex");if(!isNaN(U)){var =
T=3Dfalse;if(O!=3DR){T=3Dtrue;}else{if(S.length>1){var =
P=3DF.getStyle(S[1],"zIndex");if(!isNaN(P)&&(U=3D=3DP)){T=3Dtrue;}}}if(T)=
{this.cfg.setProperty("zindex",(parseInt(U,10)+2));}}}},destroy:function(=
){if(this.iframe){this.iframe.parentNode.removeChild(this.iframe);}this.i=
frame=3Dnull;B.windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent,this=
);B.windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent,this);G.textRes=
izeEvent.unsubscribe(this._autoFillOnHeightChange);B.superclass.destroy.c=
all(this);},forceContainerRedraw:function(){var =
O=3Dthis;F.addClass(O.element,"yui-force-redraw");setTimeout(function(){F=
.removeClass(O.element,"yui-force-redraw");},0);},toString:function(){ret=
urn"Overlay =
"+this.id;}});}());(function(){YAHOO.widget.OverlayManager=3Dfunction(G){=
this.init(G);};var =
D=3DYAHOO.widget.Overlay,C=3DYAHOO.util.Event,E=3DYAHOO.util.Dom,B=3DYAHO=
O.util.Config,F=3DYAHOO.util.CustomEvent,A=3DYAHOO.widget.OverlayManager;=
A.CSS_FOCUSED=3D"focused";A.prototype=3D{constructor:A,overlays:null,init=
DefaultConfig:function(){this.cfg.addProperty("overlays",{suppressEvent:t=
rue});this.cfg.addProperty("focusevent",{value:"mousedown"});},init:funct=
ion(I){this.cfg=3Dnew =
B(this);this.initDefaultConfig();if(I){this.cfg.applyConfig(I,true);}this=
.cfg.fireQueue();var H=3Dnull;this.getActive=3Dfunction(){return =
H;};this.focus=3Dfunction(J){var =
K=3Dthis.find(J);if(K){K.focus();}};this.remove=3Dfunction(K){var =
M=3Dthis.find(K),J;if(M){if(H=3D=3DM){H=3Dnull;}var =
L=3D(M.element=3D=3D=3Dnull&&M.cfg=3D=3D=3Dnull)?true:false;if(!L){J=3DE.=
getStyle(M.element,"zIndex");M.cfg.setProperty("zIndex",-1000,true);}this=
.overlays.sort(this.compareZIndexDesc);this.overlays=3Dthis.overlays.slic=
e(0,(this.overlays.length-1));M.hideEvent.unsubscribe(M.blur);M.destroyEv=
ent.unsubscribe(this._onOverlayDestroy,M);M.focusEvent.unsubscribe(this._=
onOverlayFocusHandler,M);M.blurEvent.unsubscribe(this._onOverlayBlurHandl=
er,M);if(!L){C.removeListener(M.element,this.cfg.getProperty("focusevent"=
),this._onOverlayElementFocus);M.cfg.setProperty("zIndex",J,true);M.cfg.s=
etProperty("manager",null);}if(M.focusEvent._managed){M.focusEvent=3Dnull=
;}if(M.blurEvent._managed){M.blurEvent=3Dnull;}if(M.focus._managed){M.foc=
us=3Dnull;}if(M.blur._managed){M.blur=3Dnull;}}};this.blurAll=3Dfunction(=
){var =
K=3Dthis.overlays.length,J;if(K>0){J=3DK-1;do{this.overlays[J].blur();}wh=
ile(J--);}};this._manageBlur=3Dfunction(J){var =
K=3Dfalse;if(H=3D=3DJ){E.removeClass(H.element,A.CSS_FOCUSED);H=3Dnull;K=3D=
true;}return K;};this._manageFocus=3Dfunction(J){var =
K=3Dfalse;if(H!=3DJ){if(H){H.blur();}H=3DJ;this.bringToTop(H);E.addClass(=
H.element,A.CSS_FOCUSED);K=3Dtrue;}return K;};var =
G=3Dthis.cfg.getProperty("overlays");if(!this.overlays){this.overlays=3D[=
];}if(G){this.register(G);this.overlays.sort(this.compareZIndexDesc);}},_=
onOverlayElementFocus:function(I){var =
G=3DC.getTarget(I),H=3Dthis.close;if(H&&(G=3D=3DH||E.isAncestor(H,G))){th=
is.blur();}else{this.focus();}},_onOverlayDestroy:function(H,G,I){this.re=
move(I);},_onOverlayFocusHandler:function(H,G,I){this._manageFocus(I);},_=
onOverlayBlurHandler:function(H,G,I){this._manageBlur(I);},_bindFocus:fun=
ction(G){var =
H=3Dthis;if(!G.focusEvent){G.focusEvent=3DG.createEvent("focus");G.focusE=
vent.signature=3DF.LIST;G.focusEvent._managed=3Dtrue;}else{G.focusEvent.s=
ubscribe(H._onOverlayFocusHandler,G,H);}if(!G.focus){C.on(G.element,H.cfg=
.getProperty("focusevent"),H._onOverlayElementFocus,null,G);G.focus=3Dfun=
ction(){if(H._manageFocus(this)){if(this.cfg.getProperty("visible")&&this=
.focusFirst){this.focusFirst();}this.focusEvent.fire();}};G.focus._manage=
d=3Dtrue;}},_bindBlur:function(G){var =
H=3Dthis;if(!G.blurEvent){G.blurEvent=3DG.createEvent("blur");G.blurEvent=
.signature=3DF.LIST;G.focusEvent._managed=3Dtrue;}else{G.blurEvent.subscr=
ibe(H._onOverlayBlurHandler,G,H);}if(!G.blur){G.blur=3Dfunction(){if(H._m=
anageBlur(this)){this.blurEvent.fire();}};G.blur._managed=3Dtrue;}G.hideE=
vent.subscribe(G.blur);},_bindDestroy:function(G){var =
H=3Dthis;G.destroyEvent.subscribe(H._onOverlayDestroy,G,H);},_syncZIndex:=
function(G){var =
H=3DE.getStyle(G.element,"zIndex");if(!isNaN(H)){G.cfg.setProperty("zInde=
x",parseInt(H,10));}else{G.cfg.setProperty("zIndex",0);}},register:functi=
on(G){var J=3Dfalse,H,I;if(G instanceof =
D){G.cfg.addProperty("manager",{value:this});this._bindFocus(G);this._bin=
dBlur(G);this._bindDestroy(G);this._syncZIndex(G);this.overlays.push(G);t=
his.bringToTop(G);J=3Dtrue;}else{if(G instanceof =
Array){for(H=3D0,I=3DG.length;H<I;H++){J=3Dthis.register(G[H])||J;}}}retu=
rn J;},bringToTop:function(M){var =
I=3Dthis.find(M),L,G,J;if(I){J=3Dthis.overlays;J.sort(this.compareZIndexD=
esc);G=3DJ[0];if(G){L=3DE.getStyle(G.element,"zIndex");=0A=
if(!isNaN(L)){var =
K=3Dfalse;if(G!=3D=3DI){K=3Dtrue;}else{if(J.length>1){var =
H=3DE.getStyle(J[1].element,"zIndex");if(!isNaN(H)&&(L=3D=3DH)){K=3Dtrue;=
}}}if(K){I.cfg.setProperty("zindex",(parseInt(L,10)+2));}}J.sort(this.com=
pareZIndexDesc);}}},find:function(G){var K=3DG instanceof =
D,I=3Dthis.overlays,M=3DI.length,J=3Dnull,L,H;if(K||typeof =
G=3D=3D"string"){for(H=3DM-1;H>=3D0;H--){L=3DI[H];if((K&&(L=3D=3D=3DG))||=
(L.id=3D=3DG)){J=3DL;break;}}}return =
J;},compareZIndexDesc:function(J,I){var =
H=3D(J.cfg)?J.cfg.getProperty("zIndex"):null,G=3D(I.cfg)?I.cfg.getPropert=
y("zIndex"):null;if(H=3D=3D=3Dnull&&G=3D=3D=3Dnull){return =
0;}else{if(H=3D=3D=3Dnull){return 1;}else{if(G=3D=3D=3Dnull){return =
-1;}else{if(H>G){return -1;}else{if(H<G){return 1;}else{return =
0;}}}}}},showAll:function(){var =
H=3Dthis.overlays,I=3DH.length,G;for(G=3DI-1;G>=3D0;G--){H[G].show();}},h=
ideAll:function(){var =
H=3Dthis.overlays,I=3DH.length,G;for(G=3DI-1;G>=3D0;G--){H[G].hide();}},t=
oString:function(){return"OverlayManager";}};}());(function(){YAHOO.widge=
t.Tooltip=3Dfunction(P,O){YAHOO.widget.Tooltip.superclass.constructor.cal=
l(this,P,O);};var =
E=3DYAHOO.lang,N=3DYAHOO.util.Event,M=3DYAHOO.util.CustomEvent,C=3DYAHOO.=
util.Dom,J=3DYAHOO.widget.Tooltip,H=3DYAHOO.env.ua,G=3D(H.ie&&(H.ie<=3D6|=
|document.compatMode=3D=3D"BackCompat")),F,I=3D{"PREVENT_OVERLAP":{key:"p=
reventoverlap",value:true,validator:E.isBoolean,supercedes:["x","y","xy"]=
},"SHOW_DELAY":{key:"showdelay",value:200,validator:E.isNumber},"AUTO_DIS=
MISS_DELAY":{key:"autodismissdelay",value:5000,validator:E.isNumber},"HID=
E_DELAY":{key:"hidedelay",value:250,validator:E.isNumber},"TEXT":{key:"te=
xt",suppressEvent:true},"CONTAINER":{key:"container"},"DISABLED":{key:"di=
sabled",value:false,suppressEvent:true}},A=3D{"CONTEXT_MOUSE_OVER":"conte=
xtMouseOver","CONTEXT_MOUSE_OUT":"contextMouseOut","CONTEXT_TRIGGER":"con=
textTrigger"};J.CSS_TOOLTIP=3D"yui-tt";function K(Q,O){var =
P=3Dthis.cfg,R=3DP.getProperty("width");if(R=3D=3DO){P.setProperty("width=
",Q);}}function D(P,O){if("_originalWidth" in =
this){K.call(this,this._originalWidth,this._forcedWidth);}var =
Q=3Ddocument.body,U=3Dthis.cfg,T=3DU.getProperty("width"),R,S;if((!T||T=3D=
=3D"auto")&&(U.getProperty("container")!=3DQ||U.getProperty("x")>=3DC.get=
ViewportWidth()||U.getProperty("y")>=3DC.getViewportHeight())){S=3Dthis.e=
lement.cloneNode(true);S.style.visibility=3D"hidden";S.style.top=3D"0px";=
S.style.left=3D"0px";Q.appendChild(S);R=3D(S.offsetWidth+"px");Q.removeCh=
ild(S);S=3Dnull;U.setProperty("width",R);U.refireEvent("xy");this._origin=
alWidth=3DT||"";this._forcedWidth=3DR;}}function =
B(P,O,Q){this.render(Q);}function =
L(){N.onDOMReady(B,this.cfg.getProperty("container"),this);}YAHOO.extend(=
J,YAHOO.widget.Overlay,{init:function(P,O){J.superclass.init.call(this,P)=
;this.beforeInitEvent.fire(J);C.addClass(this.element,J.CSS_TOOLTIP);if(O=
){this.cfg.applyConfig(O,true);}this.cfg.queueProperty("visible",false);t=
his.cfg.queueProperty("constraintoviewport",true);this.setBody("");this.s=
ubscribe("changeContent",D);this.subscribe("init",L);this.subscribe("rend=
er",this.onRender);this.initEvent.fire(J);},initEvents:function(){J.super=
class.initEvents.call(this);var =
O=3DM.LIST;this.contextMouseOverEvent=3Dthis.createEvent(A.CONTEXT_MOUSE_=
OVER);this.contextMouseOverEvent.signature=3DO;this.contextMouseOutEvent=3D=
this.createEvent(A.CONTEXT_MOUSE_OUT);this.contextMouseOutEvent.signature=
=3DO;this.contextTriggerEvent=3Dthis.createEvent(A.CONTEXT_TRIGGER);this.=
contextTriggerEvent.signature=3DO;},initDefaultConfig:function(){J.superc=
lass.initDefaultConfig.call(this);this.cfg.addProperty(I.PREVENT_OVERLAP.=
key,{value:I.PREVENT_OVERLAP.value,validator:I.PREVENT_OVERLAP.validator,=
supercedes:I.PREVENT_OVERLAP.supercedes});this.cfg.addProperty(I.SHOW_DEL=
AY.key,{handler:this.configShowDelay,value:200,validator:I.SHOW_DELAY.val=
idator});this.cfg.addProperty(I.AUTO_DISMISS_DELAY.key,{handler:this.conf=
igAutoDismissDelay,value:I.AUTO_DISMISS_DELAY.value,validator:I.AUTO_DISM=
ISS_DELAY.validator});this.cfg.addProperty(I.HIDE_DELAY.key,{handler:this=
.configHideDelay,value:I.HIDE_DELAY.value,validator:I.HIDE_DELAY.validato=
r});this.cfg.addProperty(I.TEXT.key,{handler:this.configText,suppressEven=
t:I.TEXT.suppressEvent});this.cfg.addProperty(I.CONTAINER.key,{handler:th=
is.configContainer,value:document.body});this.cfg.addProperty(I.DISABLED.=
key,{handler:this.configContainer,value:I.DISABLED.value,supressEvent:I.D=
ISABLED.suppressEvent});},configText:function(P,O,Q){var =
R=3DO[0];if(R){this.setBody(R);}},configContainer:function(Q,P,R){var =
O=3DP[0];if(typeof =
O=3D=3D"string"){this.cfg.setProperty("container",document.getElementById=
(O),true);}},_removeEventListeners:function(){var =
R=3Dthis._context,O,Q,P;if(R){O=3DR.length;if(O>0){P=3DO-1;do{Q=3DR[P];N.=
removeListener(Q,"mouseover",this.onContextMouseOver);N.removeListener(Q,=
"mousemove",this.onContextMouseMove);N.removeListener(Q,"mouseout",this.o=
nContextMouseOut);}while(P--);}}},configContext:function(T,P,U){var =
S=3DP[0],V,O,R,Q;if(S){if(!(S instanceof Array)){if(typeof =
S=3D=3D"string"){this.cfg.setProperty("context",[document.getElementById(=
S)],true);}else{this.cfg.setProperty("context",[S],true);}S=3Dthis.cfg.ge=
tProperty("context");}this._removeEventListeners();this._context=3DS;V=3D=
this._context;if(V){O=3DV.length;if(O>0){Q=3DO-1;do{R=3DV[Q];N.on(R,"mous=
eover",this.onContextMouseOver,this);N.on(R,"mousemove",this.onContextMou=
seMove,this);N.on(R,"mouseout",this.onContextMouseOut,this);}while(Q--);}=
}}},onContextMouseMove:function(P,O){O.pageX=3DN.getPageX(P);O.pageY=3DN.=
getPageY(P);},onContextMouseOver:function(Q,P){var =
O=3Dthis;if(O.title){P._tempTitle=3DO.title;O.title=3D"";}if(P.fireEvent(=
"contextMouseOver",O,Q)!=3D=3Dfalse&&!P.cfg.getProperty("disabled")){if(P=
.hideProcId){clearTimeout(P.hideProcId);P.hideProcId=3Dnull;}N.on(O,"mous=
emove",P.onContextMouseMove,P);P.showProcId=3DP.doShow(Q,O);}},onContextM=
ouseOut:function(Q,P){var =
O=3Dthis;if(P._tempTitle){O.title=3DP._tempTitle;P._tempTitle=3Dnull;}if(=
P.showProcId){clearTimeout(P.showProcId);P.showProcId=3Dnull;}if(P.hidePr=
ocId){clearTimeout(P.hideProcId);P.hideProcId=3Dnull;}P.fireEvent("contex=
tMouseOut",O,Q);P.hideProcId=3DsetTimeout(function(){P.hide();},P.cfg.get=
Property("hidedelay"));},doShow:function(Q,O){var R=3D25,P=3Dthis;=0A=
if(H.opera&&O.tagName&&O.tagName.toUpperCase()=3D=3D"A"){R+=3D12;}return =
setTimeout(function(){var =
S=3DP.cfg.getProperty("text");if(P._tempTitle&&(S=3D=3D=3D""||YAHOO.lang.=
isUndefined(S)||YAHOO.lang.isNull(S))){P.setBody(P._tempTitle);}else{P.cf=
g.refireEvent("text");}P.moveTo(P.pageX,P.pageY+R);if(P.cfg.getProperty("=
preventoverlap")){P.preventOverlap(P.pageX,P.pageY);}N.removeListener(O,"=
mousemove",P.onContextMouseMove);P.contextTriggerEvent.fire(O);P.show();P=
.hideProcId=3DP.doHide();},this.cfg.getProperty("showdelay"));},doHide:fu=
nction(){var O=3Dthis;return =
setTimeout(function(){O.hide();},this.cfg.getProperty("autodismissdelay")=
);},preventOverlap:function(S,R){var =
O=3Dthis.element.offsetHeight,Q=3Dnew =
YAHOO.util.Point(S,R),P=3DC.getRegion(this.element);P.top-=3D5;P.left-=3D=
5;P.right+=3D5;P.bottom+=3D5;if(P.contains(Q)){this.cfg.setProperty("y",(=
R-O-5));}},onRender:function(S,R){function T(){var =
W=3Dthis.element,V=3Dthis.underlay;if(V){V.style.width=3D(W.offsetWidth+6=
)+"px";V.style.height=3D(W.offsetHeight+1)+"px";}}function =
P(){C.addClass(this.underlay,"yui-tt-shadow-visible");if(H.ie){this.force=
UnderlayRedraw();}}function =
O(){C.removeClass(this.underlay,"yui-tt-shadow-visible");}function =
U(){var =
X=3Dthis.underlay,W,V,Z,Y;if(!X){W=3Dthis.element;V=3DYAHOO.widget.Module=
;Z=3DH.ie;Y=3Dthis;if(!F){F=3Ddocument.createElement("div");F.className=3D=
"yui-tt-shadow";}X=3DF.cloneNode(false);W.appendChild(X);this.underlay=3D=
X;this._shadow=3Dthis.underlay;P.call(this);this.subscribe("beforeShow",P=
);this.subscribe("hide",O);if(G){window.setTimeout(function(){T.call(Y);}=
,0);this.cfg.subscribeToConfigEvent("width",T);this.cfg.subscribeToConfig=
Event("height",T);this.subscribe("changeContent",T);V.textResizeEvent.sub=
scribe(T,this,true);this.subscribe("destroy",function(){V.textResizeEvent=
.unsubscribe(T,this);});}}}function =
Q(){U.call(this);this.unsubscribe("beforeShow",Q);}if(this.cfg.getPropert=
y("visible")){U.call(this);}else{this.subscribe("beforeShow",Q);}},forceU=
nderlayRedraw:function(){var =
O=3Dthis;C.addClass(O.underlay,"yui-force-redraw");setTimeout(function(){=
C.removeClass(O.underlay,"yui-force-redraw");},0);},destroy:function(){th=
is._removeEventListeners();J.superclass.destroy.call(this);},toString:fun=
ction(){return"Tooltip =
"+this.id;}});}());(function(){YAHOO.widget.Panel=3Dfunction(V,U){YAHOO.w=
idget.Panel.superclass.constructor.call(this,V,U);};var S=3Dnull;var =
E=3DYAHOO.lang,F=3DYAHOO.util,A=3DF.Dom,T=3DF.Event,M=3DF.CustomEvent,K=3D=
YAHOO.util.KeyListener,I=3DF.Config,H=3DYAHOO.widget.Overlay,O=3DYAHOO.wi=
dget.Panel,L=3DYAHOO.env.ua,P=3D(L.ie&&(L.ie<=3D6||document.compatMode=3D=
=3D"BackCompat")),G,Q,C,D=3D{"SHOW_MASK":"showMask","HIDE_MASK":"hideMask=
","DRAG":"drag"},N=3D{"CLOSE":{key:"close",value:true,validator:E.isBoole=
an,supercedes:["visible"]},"DRAGGABLE":{key:"draggable",value:(F.DD?true:=
false),validator:E.isBoolean,supercedes:["visible"]},"DRAG_ONLY":{key:"dr=
agonly",value:false,validator:E.isBoolean,supercedes:["draggable"]},"UNDE=
RLAY":{key:"underlay",value:"shadow",supercedes:["visible"]},"MODAL":{key=
:"modal",value:false,validator:E.isBoolean,supercedes:["visible","zindex"=
]},"KEY_LISTENERS":{key:"keylisteners",suppressEvent:true,supercedes:["vi=
sible"]},"STRINGS":{key:"strings",supercedes:["close"],validator:E.isObje=
ct,value:{close:"Close"}}};O.CSS_PANEL=3D"yui-panel";O.CSS_PANEL_CONTAINE=
R=3D"yui-panel-container";O.FOCUSABLE=3D["a","button","select","textarea"=
,"input","iframe"];function =
J(V,U){if(!this.header&&this.cfg.getProperty("draggable")){this.setHeader=
("&#160;");}}function R(V,U,W){var =
Z=3DW[0],X=3DW[1],Y=3Dthis.cfg,a=3DY.getProperty("width");if(a=3D=3DX){Y.=
setProperty("width",Z);}this.unsubscribe("hide",R,W);}function =
B(V,U){var =
Y,X,W;if(P){Y=3Dthis.cfg;X=3DY.getProperty("width");if(!X||X=3D=3D"auto")=
{W=3D(this.element.offsetWidth+"px");Y.setProperty("width",W);this.subscr=
ibe("hide",R,[(X||""),W]);}}}YAHOO.extend(O,H,{init:function(V,U){O.super=
class.init.call(this,V);this.beforeInitEvent.fire(O);A.addClass(this.elem=
ent,O.CSS_PANEL);this.buildWrapper();if(U){this.cfg.applyConfig(U,true);}=
this.subscribe("showMask",this._addFocusHandlers);this.subscribe("hideMas=
k",this._removeFocusHandlers);this.subscribe("beforeRender",J);this.subsc=
ribe("render",function(){this.setFirstLastFocusable();this.subscribe("cha=
ngeContent",this.setFirstLastFocusable);});this.subscribe("show",this.foc=
usFirst);this.initEvent.fire(O);},_onElementFocus:function(Z){if(S=3D=3D=3D=
this){var =
Y=3DT.getTarget(Z),X=3Ddocument.documentElement,V=3D(Y!=3D=3DX&&Y!=3D=3Dw=
indow);if(V&&Y!=3D=3Dthis.element&&Y!=3D=3Dthis.mask&&!A.isAncestor(this.=
element,Y)){try{if(this.firstElement){this.firstElement.focus();}else{if(=
this._modalFocus){this._modalFocus.focus();}else{this.innerElement.focus(=
);}}}catch(W){try{if(V&&Y!=3D=3Ddocument.body){Y.blur();}}catch(U){}}}}},=
_addFocusHandlers:function(V,U){if(!this.firstElement){if(L.webkit||L.ope=
ra){if(!this._modalFocus){this._createHiddenFocusElement();}}else{this.in=
nerElement.tabIndex=3D0;}}this.setTabLoop(this.firstElement,this.lastElem=
ent);T.onFocus(document.documentElement,this._onElementFocus,this,true);S=
=3Dthis;},_createHiddenFocusElement:function(){var =
U=3Ddocument.createElement("button");U.style.height=3D"1px";U.style.width=
=3D"1px";U.style.position=3D"absolute";U.style.left=3D"-10000em";U.style.=
opacity=3D0;U.tabIndex=3D-1;this.innerElement.appendChild(U);this._modalF=
ocus=3DU;},_removeFocusHandlers:function(V,U){T.removeFocusListener(docum=
ent.documentElement,this._onElementFocus,this);if(S=3D=3Dthis){S=3Dnull;}=
},focusFirst:function(W,U,Y){var =
V=3Dthis.firstElement;if(U&&U[1]){T.stopEvent(U[1]);}if(V){try{V.focus();=
}catch(X){}}},focusLast:function(W,U,Y){var =
V=3Dthis.lastElement;if(U&&U[1]){T.stopEvent(U[1]);}if(V){try{V.focus();}=
catch(X){}}},setTabLoop:function(X,Z){var =
V=3Dthis.preventBackTab,W=3Dthis.preventTabOut,U=3Dthis.showEvent,Y=3Dthi=
s.hideEvent;if(V){V.disable();U.unsubscribe(V.enable,V);Y.unsubscribe(V.d=
isable,V);V=3Dthis.preventBackTab=3Dnull;}if(W){W.disable();U.unsubscribe=
(W.enable,W);Y.unsubscribe(W.disable,W);W=3Dthis.preventTabOut=3Dnull;}if=
(X){this.preventBackTab=3Dnew =
K(X,{shift:true,keys:9},{fn:this.focusLast,scope:this,correctScope:true})=
;V=3Dthis.preventBackTab;U.subscribe(V.enable,V,true);=0A=
Y.subscribe(V.disable,V,true);}if(Z){this.preventTabOut=3Dnew =
K(Z,{shift:false,keys:9},{fn:this.focusFirst,scope:this,correctScope:true=
});W=3Dthis.preventTabOut;U.subscribe(W.enable,W,true);Y.subscribe(W.disa=
ble,W,true);}},getFocusableElements:function(U){U=3DU||this.innerElement;=
var X=3D{};for(var =
W=3D0;W<O.FOCUSABLE.length;W++){X[O.FOCUSABLE[W]]=3Dtrue;}function =
V(Y){if(Y.focus&&Y.type!=3D=3D"hidden"&&!Y.disabled&&X[Y.tagName.toLowerC=
ase()]){return true;}return false;}return =
A.getElementsBy(V,null,U);},setFirstLastFocusable:function(){this.firstEl=
ement=3Dnull;this.lastElement=3Dnull;var =
U=3Dthis.getFocusableElements();this.focusableElements=3DU;if(U.length>0)=
{this.firstElement=3DU[0];this.lastElement=3DU[U.length-1];}if(this.cfg.g=
etProperty("modal")){this.setTabLoop(this.firstElement,this.lastElement);=
}},initEvents:function(){O.superclass.initEvents.call(this);var =
U=3DM.LIST;this.showMaskEvent=3Dthis.createEvent(D.SHOW_MASK);this.showMa=
skEvent.signature=3DU;this.hideMaskEvent=3Dthis.createEvent(D.HIDE_MASK);=
this.hideMaskEvent.signature=3DU;this.dragEvent=3Dthis.createEvent(D.DRAG=
);this.dragEvent.signature=3DU;},initDefaultConfig:function(){O.superclas=
s.initDefaultConfig.call(this);this.cfg.addProperty(N.CLOSE.key,{handler:=
this.configClose,value:N.CLOSE.value,validator:N.CLOSE.validator,superced=
es:N.CLOSE.supercedes});this.cfg.addProperty(N.DRAGGABLE.key,{handler:thi=
s.configDraggable,value:(F.DD)?true:false,validator:N.DRAGGABLE.validator=
,supercedes:N.DRAGGABLE.supercedes});this.cfg.addProperty(N.DRAG_ONLY.key=
,{value:N.DRAG_ONLY.value,validator:N.DRAG_ONLY.validator,supercedes:N.DR=
AG_ONLY.supercedes});this.cfg.addProperty(N.UNDERLAY.key,{handler:this.co=
nfigUnderlay,value:N.UNDERLAY.value,supercedes:N.UNDERLAY.supercedes});th=
is.cfg.addProperty(N.MODAL.key,{handler:this.configModal,value:N.MODAL.va=
lue,validator:N.MODAL.validator,supercedes:N.MODAL.supercedes});this.cfg.=
addProperty(N.KEY_LISTENERS.key,{handler:this.configKeyListeners,suppress=
Event:N.KEY_LISTENERS.suppressEvent,supercedes:N.KEY_LISTENERS.supercedes=
});this.cfg.addProperty(N.STRINGS.key,{value:N.STRINGS.value,handler:this=
.configStrings,validator:N.STRINGS.validator,supercedes:N.STRINGS.superce=
des});},configClose:function(X,V,Y){var =
Z=3DV[0],W=3Dthis.close,U=3Dthis.cfg.getProperty("strings");if(Z){if(!W){=
if(!C){C=3Ddocument.createElement("a");C.className=3D"container-close";C.=
href=3D"#";}W=3DC.cloneNode(true);this.innerElement.appendChild(W);W.inne=
rHTML=3D(U&&U.close)?U.close:"&#160;";T.on(W,"click",this._doClose,this,t=
rue);this.close=3DW;}else{W.style.display=3D"block";}}else{if(W){W.style.=
display=3D"none";}}},_doClose:function(U){T.preventDefault(U);this.hide()=
;},configDraggable:function(V,U,W){var =
X=3DU[0];if(X){if(!F.DD){this.cfg.setProperty("draggable",false);return;}=
if(this.header){A.setStyle(this.header,"cursor","move");this.registerDrag=
Drop();}this.subscribe("beforeShow",B);}else{if(this.dd){this.dd.unreg();=
}if(this.header){A.setStyle(this.header,"cursor","auto");}this.unsubscrib=
e("beforeShow",B);}},configUnderlay:function(d,c,Z){var =
b=3D(this.platform=3D=3D"mac"&&L.gecko),e=3Dc[0].toLowerCase(),V=3Dthis.u=
nderlay,W=3Dthis.element;function X(){var =
f=3Dfalse;if(!V){if(!Q){Q=3Ddocument.createElement("div");Q.className=3D"=
underlay";}V=3DQ.cloneNode(false);this.element.appendChild(V);this.underl=
ay=3DV;if(P){this.sizeUnderlay();this.cfg.subscribeToConfigEvent("width",=
this.sizeUnderlay);this.cfg.subscribeToConfigEvent("height",this.sizeUnde=
rlay);this.changeContentEvent.subscribe(this.sizeUnderlay);YAHOO.widget.M=
odule.textResizeEvent.subscribe(this.sizeUnderlay,this,true);}if(L.webkit=
&&L.webkit<420){this.changeContentEvent.subscribe(this.forceUnderlayRedra=
w);}f=3Dtrue;}}function a(){var =
f=3DX.call(this);if(!f&&P){this.sizeUnderlay();}this._underlayDeferred=3D=
false;this.beforeShowEvent.unsubscribe(a);}function =
Y(){if(this._underlayDeferred){this.beforeShowEvent.unsubscribe(a);this._=
underlayDeferred=3Dfalse;}if(V){this.cfg.unsubscribeFromConfigEvent("widt=
h",this.sizeUnderlay);this.cfg.unsubscribeFromConfigEvent("height",this.s=
izeUnderlay);this.changeContentEvent.unsubscribe(this.sizeUnderlay);this.=
changeContentEvent.unsubscribe(this.forceUnderlayRedraw);YAHOO.widget.Mod=
ule.textResizeEvent.unsubscribe(this.sizeUnderlay,this,true);this.element=
.removeChild(V);this.underlay=3Dnull;}}switch(e){case"shadow":A.removeCla=
ss(W,"matte");A.addClass(W,"shadow");break;case"matte":if(!b){Y.call(this=
);}A.removeClass(W,"shadow");A.addClass(W,"matte");break;default:if(!b){Y=
.call(this);}A.removeClass(W,"shadow");A.removeClass(W,"matte");break;}if=
((e=3D=3D"shadow")||(b&&!V)){if(this.cfg.getProperty("visible")){var =
U=3DX.call(this);if(!U&&P){this.sizeUnderlay();}}else{if(!this._underlayD=
eferred){this.beforeShowEvent.subscribe(a);this._underlayDeferred=3Dtrue;=
}}}},configModal:function(V,U,X){var =
W=3DU[0];if(W){if(!this._hasModalityEventListeners){this.subscribe("befor=
eShow",this.buildMask);this.subscribe("beforeShow",this.bringToTop);this.=
subscribe("beforeShow",this.showMask);this.subscribe("hide",this.hideMask=
);H.windowResizeEvent.subscribe(this.sizeMask,this,true);this._hasModalit=
yEventListeners=3Dtrue;}}else{if(this._hasModalityEventListeners){if(this=
.cfg.getProperty("visible")){this.hideMask();this.removeMask();}this.unsu=
bscribe("beforeShow",this.buildMask);this.unsubscribe("beforeShow",this.b=
ringToTop);this.unsubscribe("beforeShow",this.showMask);this.unsubscribe(=
"hide",this.hideMask);H.windowResizeEvent.unsubscribe(this.sizeMask,this)=
;this._hasModalityEventListeners=3Dfalse;}}},removeMask:function(){var =
V=3Dthis.mask,U;if(V){this.hideMask();U=3DV.parentNode;if(U){U.removeChil=
d(V);}this.mask=3Dnull;}},configKeyListeners:function(X,U,a){var =
W=3DU[0],Z,Y,V;if(W){if(W instanceof =
Array){Y=3DW.length;for(V=3D0;V<Y;V++){Z=3DW[V];if(!I.alreadySubscribed(t=
his.showEvent,Z.enable,Z)){this.showEvent.subscribe(Z.enable,Z,true);}if(=
!I.alreadySubscribed(this.hideEvent,Z.disable,Z)){this.hideEvent.subscrib=
e(Z.disable,Z,true);this.destroyEvent.subscribe(Z.disable,Z,true);}}}else=
{if(!I.alreadySubscribed(this.showEvent,W.enable,W)){this.showEvent.subsc=
ribe(W.enable,W,true);}if(!I.alreadySubscribed(this.hideEvent,W.disable,W=
)){this.hideEvent.subscribe(W.disable,W,true);=0A=
this.destroyEvent.subscribe(W.disable,W,true);}}}},configStrings:function=
(V,U,W){var =
X=3DE.merge(N.STRINGS.value,U[0]);this.cfg.setProperty(N.STRINGS.key,X,tr=
ue);},configHeight:function(X,V,Y){var =
U=3DV[0],W=3Dthis.innerElement;A.setStyle(W,"height",U);this.cfg.refireEv=
ent("iframe");},_autoFillOnHeightChange:function(X,V,W){O.superclass._aut=
oFillOnHeightChange.apply(this,arguments);if(P){var =
U=3Dthis;setTimeout(function(){U.sizeUnderlay();},0);}},configWidth:funct=
ion(X,U,Y){var =
W=3DU[0],V=3Dthis.innerElement;A.setStyle(V,"width",W);this.cfg.refireEve=
nt("iframe");},configzIndex:function(V,U,X){O.superclass.configzIndex.cal=
l(this,V,U,X);if(this.mask||this.cfg.getProperty("modal")=3D=3D=3Dtrue){v=
ar =
W=3DA.getStyle(this.element,"zIndex");if(!W||isNaN(W)){W=3D0;}if(W=3D=3D=3D=
0){this.cfg.setProperty("zIndex",1);}else{this.stackMask();}}},buildWrapp=
er:function(){var =
W=3Dthis.element.parentNode,U=3Dthis.element,V=3Ddocument.createElement("=
div");V.className=3DO.CSS_PANEL_CONTAINER;V.id=3DU.id+"_c";if(W){W.insert=
Before(V,U);}V.appendChild(U);this.element=3DV;this.innerElement=3DU;A.se=
tStyle(this.innerElement,"visibility","inherit");},sizeUnderlay:function(=
){var =
V=3Dthis.underlay,U;if(V){U=3Dthis.element;V.style.width=3DU.offsetWidth+=
"px";V.style.height=3DU.offsetHeight+"px";}},registerDragDrop:function(){=
var V=3Dthis;if(this.header){if(!F.DD){return;}var =
U=3D(this.cfg.getProperty("dragonly")=3D=3D=3Dtrue);this.dd=3Dnew =
F.DD(this.element.id,this.id,{dragOnly:U});if(!this.header.id){this.heade=
r.id=3Dthis.id+"_h";}this.dd.startDrag=3Dfunction(){var =
X,Z,W,c,b,a;if(YAHOO.env.ua.ie=3D=3D6){A.addClass(V.element,"drag");}if(V=
.cfg.getProperty("constraintoviewport")){var =
Y=3DH.VIEWPORT_OFFSET;X=3DV.element.offsetHeight;Z=3DV.element.offsetWidt=
h;W=3DA.getViewportWidth();c=3DA.getViewportHeight();b=3DA.getDocumentScr=
ollLeft();a=3DA.getDocumentScrollTop();if(X+Y<c){this.minY=3Da+Y;this.max=
Y=3Da+c-X-Y;}else{this.minY=3Da+Y;this.maxY=3Da+Y;}if(Z+Y<W){this.minX=3D=
b+Y;this.maxX=3Db+W-Z-Y;}else{this.minX=3Db+Y;this.maxX=3Db+Y;}this.const=
rainX=3Dtrue;this.constrainY=3Dtrue;}else{this.constrainX=3Dfalse;this.co=
nstrainY=3Dfalse;}V.dragEvent.fire("startDrag",arguments);};this.dd.onDra=
g=3Dfunction(){V.syncPosition();V.cfg.refireEvent("iframe");if(this.platf=
orm=3D=3D"mac"&&YAHOO.env.ua.gecko){this.showMacGeckoScrollbars();}V.drag=
Event.fire("onDrag",arguments);};this.dd.endDrag=3Dfunction(){if(YAHOO.en=
v.ua.ie=3D=3D6){A.removeClass(V.element,"drag");}V.dragEvent.fire("endDra=
g",arguments);V.moveEvent.fire(V.cfg.getProperty("xy"));};this.dd.setHand=
leElId(this.header.id);this.dd.addInvalidHandleType("INPUT");this.dd.addI=
nvalidHandleType("SELECT");this.dd.addInvalidHandleType("TEXTAREA");}},bu=
ildMask:function(){var =
U=3Dthis.mask;if(!U){if(!G){G=3Ddocument.createElement("div");G.className=
=3D"mask";G.innerHTML=3D"&#160;";}U=3DG.cloneNode(true);U.id=3Dthis.id+"_=
mask";document.body.insertBefore(U,document.body.firstChild);this.mask=3D=
U;if(YAHOO.env.ua.gecko&&this.platform=3D=3D"mac"){A.addClass(this.mask,"=
block-scrollbars");}this.stackMask();}},hideMask:function(){if(this.cfg.g=
etProperty("modal")&&this.mask){this.mask.style.display=3D"none";A.remove=
Class(document.body,"masked");this.hideMaskEvent.fire();}},showMask:funct=
ion(){if(this.cfg.getProperty("modal")&&this.mask){A.addClass(document.bo=
dy,"masked");this.sizeMask();this.mask.style.display=3D"block";this.showM=
askEvent.fire();}},sizeMask:function(){if(this.mask){var =
V=3Dthis.mask,W=3DA.getViewportWidth(),U=3DA.getViewportHeight();if(V.off=
setHeight>U){V.style.height=3DU+"px";}if(V.offsetWidth>W){V.style.width=3D=
W+"px";}V.style.height=3DA.getDocumentHeight()+"px";V.style.width=3DA.get=
DocumentWidth()+"px";}},stackMask:function(){if(this.mask){var =
U=3DA.getStyle(this.element,"zIndex");if(!YAHOO.lang.isUndefined(U)&&!isN=
aN(U)){A.setStyle(this.mask,"zIndex",U-1);}}},render:function(U){return =
O.superclass.render.call(this,U,this.innerElement);},destroy:function(){H=
.windowResizeEvent.unsubscribe(this.sizeMask,this);this.removeMask();if(t=
his.close){T.purgeElement(this.close);}O.superclass.destroy.call(this);},=
forceUnderlayRedraw:function(){var =
U=3Dthis.underlay;A.addClass(U,"yui-force-redraw");setTimeout(function(){=
A.removeClass(U,"yui-force-redraw");},0);},toString:function(){return"Pan=
el =
"+this.id;}});}());(function(){YAHOO.widget.Dialog=3Dfunction(J,I){YAHOO.=
widget.Dialog.superclass.constructor.call(this,J,I);};var =
B=3DYAHOO.util.Event,G=3DYAHOO.util.CustomEvent,E=3DYAHOO.util.Dom,A=3DYA=
HOO.widget.Dialog,F=3DYAHOO.lang,H=3D{"BEFORE_SUBMIT":"beforeSubmit","SUB=
MIT":"submit","MANUAL_SUBMIT":"manualSubmit","ASYNC_SUBMIT":"asyncSubmit"=
,"FORM_SUBMIT":"formSubmit","CANCEL":"cancel"},C=3D{"POST_METHOD":{key:"p=
ostmethod",value:"async"},"POST_DATA":{key:"postdata",value:null},"BUTTON=
S":{key:"buttons",value:"none",supercedes:["visible"]},"HIDEAFTERSUBMIT":=
{key:"hideaftersubmit",value:true}};A.CSS_DIALOG=3D"yui-dialog";function =
D(){var =
L=3Dthis._aButtons,J,K,I;if(F.isArray(L)){J=3DL.length;if(J>0){I=3DJ-1;do=
{K=3DL[I];if(YAHOO.widget.Button&&K instanceof =
YAHOO.widget.Button){K.destroy();}else{if(K.tagName.toUpperCase()=3D=3D"B=
UTTON"){B.purgeElement(K);B.purgeElement(K,false);}}}while(I--);}}}YAHOO.=
extend(A,YAHOO.widget.Panel,{form:null,initDefaultConfig:function(){A.sup=
erclass.initDefaultConfig.call(this);this.callback=3D{success:null,failur=
e:null,argument:null};this.cfg.addProperty(C.POST_METHOD.key,{handler:thi=
s.configPostMethod,value:C.POST_METHOD.value,validator:function(I){if(I!=3D=
"form"&&I!=3D"async"&&I!=3D"none"&&I!=3D"manual"){return =
false;}else{return =
true;}}});this.cfg.addProperty(C.POST_DATA.key,{value:C.POST_DATA.value})=
;this.cfg.addProperty(C.HIDEAFTERSUBMIT.key,{value:C.HIDEAFTERSUBMIT.valu=
e});this.cfg.addProperty(C.BUTTONS.key,{handler:this.configButtons,value:=
C.BUTTONS.value,supercedes:C.BUTTONS.supercedes});},initEvents:function()=
{A.superclass.initEvents.call(this);var =
I=3DG.LIST;this.beforeSubmitEvent=3Dthis.createEvent(H.BEFORE_SUBMIT);thi=
s.beforeSubmitEvent.signature=3DI;this.submitEvent=3Dthis.createEvent(H.S=
UBMIT);this.submitEvent.signature=3DI;this.manualSubmitEvent=3Dthis.creat=
eEvent(H.MANUAL_SUBMIT);this.manualSubmitEvent.signature=3DI;this.asyncSu=
bmitEvent=3Dthis.createEvent(H.ASYNC_SUBMIT);=0A=
this.asyncSubmitEvent.signature=3DI;this.formSubmitEvent=3Dthis.createEve=
nt(H.FORM_SUBMIT);this.formSubmitEvent.signature=3DI;this.cancelEvent=3Dt=
his.createEvent(H.CANCEL);this.cancelEvent.signature=3DI;},init:function(=
J,I){A.superclass.init.call(this,J);this.beforeInitEvent.fire(A);E.addCla=
ss(this.element,A.CSS_DIALOG);this.cfg.setProperty("visible",false);if(I)=
{this.cfg.applyConfig(I,true);}this.showEvent.subscribe(this.focusFirst,t=
his,true);this.beforeHideEvent.subscribe(this.blurButtons,this,true);this=
.subscribe("changeBody",this.registerForm);this.initEvent.fire(A);},doSub=
mit:function(){var =
P=3DYAHOO.util.Connect,Q=3Dthis.form,K=3Dfalse,N=3Dfalse,R,M,L,I;switch(t=
his.cfg.getProperty("postmethod")){case"async":R=3DQ.elements;M=3DR.lengt=
h;if(M>0){L=3DM-1;do{if(R[L].type=3D=3D"file"){K=3Dtrue;break;}}while(L--=
);}if(K&&YAHOO.env.ua.ie&&this.isSecure){N=3Dtrue;}I=3Dthis._getFormAttri=
butes(Q);P.setForm(Q,K,N);var J=3Dthis.cfg.getProperty("postdata");var =
O=3DP.asyncRequest(I.method,I.action,this.callback,J);this.asyncSubmitEve=
nt.fire(O);break;case"form":Q.submit();this.formSubmitEvent.fire();break;=
case"none":case"manual":this.manualSubmitEvent.fire();break;}},_getFormAt=
tributes:function(K){var =
I=3D{method:null,action:null};if(K){if(K.getAttributeNode){var =
J=3DK.getAttributeNode("action");var =
L=3DK.getAttributeNode("method");if(J){I.action=3DJ.value;}if(L){I.method=
=3DL.value;}}else{I.action=3DK.getAttribute("action");I.method=3DK.getAtt=
ribute("method");}}I.method=3D(F.isString(I.method)?I.method:"POST").toUp=
perCase();I.action=3DF.isString(I.action)?I.action:"";return =
I;},registerForm:function(){var =
I=3Dthis.element.getElementsByTagName("form")[0];if(this.form){if(this.fo=
rm=3D=3DI&&E.isAncestor(this.element,this.form)){return;}else{B.purgeElem=
ent(this.form);this.form=3Dnull;}}if(!I){I=3Ddocument.createElement("form=
");I.name=3D"frm_"+this.id;this.body.appendChild(I);}if(I){this.form=3DI;=
B.on(I,"submit",this._submitHandler,this,true);}},_submitHandler:function=
(I){B.stopEvent(I);this.submit();this.form.blur();},setTabLoop:function(I=
,J){I=3DI||this.firstButton;J=3Dthis.lastButton||J;A.superclass.setTabLoo=
p.call(this,I,J);},setFirstLastFocusable:function(){A.superclass.setFirst=
LastFocusable.call(this);var =
J,I,K,L=3Dthis.focusableElements;this.firstFormElement=3Dnull;this.lastFo=
rmElement=3Dnull;if(this.form&&L&&L.length>0){I=3DL.length;for(J=3D0;J<I;=
++J){K=3DL[J];if(this.form=3D=3D=3DK.form){this.firstFormElement=3DK;brea=
k;}}for(J=3DI-1;J>=3D0;--J){K=3DL[J];if(this.form=3D=3D=3DK.form){this.la=
stFormElement=3DK;break;}}}},configClose:function(J,I,K){A.superclass.con=
figClose.apply(this,arguments);},_doClose:function(I){B.preventDefault(I)=
;this.cancel();},configButtons:function(S,R,M){var =
N=3DYAHOO.widget.Button,U=3DR[0],K=3Dthis.innerElement,T,P,J,Q,O,I,L;D.ca=
ll(this);this._aButtons=3Dnull;if(F.isArray(U)){O=3Ddocument.createElemen=
t("span");O.className=3D"button-group";Q=3DU.length;this._aButtons=3D[];t=
his.defaultHtmlButton=3Dnull;for(L=3D0;L<Q;L++){T=3DU[L];if(N){J=3Dnew =
N({label:T.text});J.appendTo(O);P=3DJ.get("element");if(T.isDefault){J.ad=
dClass("default");this.defaultHtmlButton=3DP;}if(F.isFunction(T.handler))=
{J.set("onclick",{fn:T.handler,obj:this,scope:this});}else{if(F.isObject(=
T.handler)&&F.isFunction(T.handler.fn)){J.set("onclick",{fn:T.handler.fn,=
obj:((!F.isUndefined(T.handler.obj))?T.handler.obj:this),scope:(T.handler=
.scope||this)});}}this._aButtons[this._aButtons.length]=3DJ;}else{P=3Ddoc=
ument.createElement("button");P.setAttribute("type","button");if(T.isDefa=
ult){P.className=3D"default";this.defaultHtmlButton=3DP;}P.innerHTML=3DT.=
text;if(F.isFunction(T.handler)){B.on(P,"click",T.handler,this,true);}els=
e{if(F.isObject(T.handler)&&F.isFunction(T.handler.fn)){B.on(P,"click",T.=
handler.fn,((!F.isUndefined(T.handler.obj))?T.handler.obj:this),(T.handle=
r.scope||this));}}O.appendChild(P);this._aButtons[this._aButtons.length]=3D=
P;}T.htmlButton=3DP;if(L=3D=3D=3D0){this.firstButton=3DP;}if(L=3D=3D(Q-1)=
){this.lastButton=3DP;}}this.setFooter(O);I=3Dthis.footer;if(E.inDocument=
(this.element)&&!E.isAncestor(K,I)){K.appendChild(I);}this.buttonSpan=3DO=
;}else{O=3Dthis.buttonSpan;I=3Dthis.footer;if(O&&I){I.removeChild(O);this=
.buttonSpan=3Dnull;this.firstButton=3Dnull;this.lastButton=3Dnull;this.de=
faultHtmlButton=3Dnull;}}this.changeContentEvent.fire();},getButtons:func=
tion(){return this._aButtons||null;},focusFirst:function(K,I,M){var =
J=3Dthis.firstFormElement;if(I&&I[1]){B.stopEvent(I[1]);}if(J){try{J.focu=
s();}catch(L){}}else{if(this.defaultHtmlButton){this.focusDefaultButton()=
;}else{this.focusFirstButton();}}},focusLast:function(K,I,M){var =
N=3Dthis.cfg.getProperty("buttons"),J=3Dthis.lastFormElement;if(I&&I[1]){=
B.stopEvent(I[1]);}if(N&&F.isArray(N)){this.focusLastButton();}else{if(J)=
{try{J.focus();}catch(L){}}}},_getButton:function(J){var =
I=3DYAHOO.widget.Button;if(I&&J&&J.nodeName&&J.id){J=3DI.getButton(J.id)|=
|J;}return J;},focusDefaultButton:function(){var =
I=3Dthis._getButton(this.defaultHtmlButton);if(I){try{I.focus();}catch(J)=
{}}},blurButtons:function(){var =
N=3Dthis.cfg.getProperty("buttons"),K,M,J,I;if(N&&F.isArray(N)){K=3DN.len=
gth;if(K>0){I=3D(K-1);do{M=3DN[I];if(M){J=3Dthis._getButton(M.htmlButton)=
;if(J){try{J.blur();}catch(L){}}}}while(I--);}}},focusFirstButton:functio=
n(){var =
L=3Dthis.cfg.getProperty("buttons"),K,I;if(L&&F.isArray(L)){K=3DL[0];if(K=
){I=3Dthis._getButton(K.htmlButton);if(I){try{I.focus();}catch(J){}}}}},f=
ocusLastButton:function(){var =
M=3Dthis.cfg.getProperty("buttons"),J,L,I;if(M&&F.isArray(M)){J=3DM.lengt=
h;if(J>0){L=3DM[(J-1)];if(L){I=3Dthis._getButton(L.htmlButton);if(I){try{=
I.focus();}catch(K){}}}}}},configPostMethod:function(J,I,K){this.register=
Form();},validate:function(){return =
true;},submit:function(){if(this.validate()){this.beforeSubmitEvent.fire(=
);this.doSubmit();this.submitEvent.fire();if(this.cfg.getProperty("hideaf=
tersubmit")){this.hide();}return true;}else{return =
false;}},cancel:function(){this.cancelEvent.fire();this.hide();},getData:=
function(){var Y=3Dthis.form,K,R,U,M,S,P,O,J,V,L,W,Z,I,N,a,X,T;function =
Q(c){var =
b=3Dc.tagName.toUpperCase();return((b=3D=3D"INPUT"||b=3D=3D"TEXTAREA"||b=3D=
=3D"SELECT")&&c.name=3D=3DM);}if(Y){K=3DY.elements;R=3DK.length;U=3D{};fo=
r(X=3D0;X<R;X++){M=3DK[X].name;S=3DE.getElementsBy(Q,"*",Y);=0A=
P=3DS.length;if(P>0){if(P=3D=3D1){S=3DS[0];O=3DS.type;J=3DS.tagName.toUpp=
erCase();switch(J){case"INPUT":if(O=3D=3D"checkbox"){U[M]=3DS.checked;}el=
se{if(O!=3D"radio"){U[M]=3DS.value;}}break;case"TEXTAREA":U[M]=3DS.value;=
break;case"SELECT":V=3DS.options;L=3DV.length;W=3D[];for(T=3D0;T<L;T++){Z=
=3DV[T];if(Z.selected){I=3DZ.value;if(!I||I=3D=3D=3D""){I=3DZ.text;}W[W.l=
ength]=3DI;}}U[M]=3DW;break;}}else{O=3DS[0].type;switch(O){case"radio":fo=
r(T=3D0;T<P;T++){N=3DS[T];if(N.checked){U[M]=3DN.value;break;}}break;case=
"checkbox":W=3D[];for(T=3D0;T<P;T++){a=3DS[T];if(a.checked){W[W.length]=3D=
a.value;}}U[M]=3DW;break;}}}}}return =
U;},destroy:function(){D.call(this);this._aButtons=3Dnull;var =
I=3Dthis.element.getElementsByTagName("form"),J;if(I.length>0){J=3DI[0];i=
f(J){B.purgeElement(J);if(J.parentNode){J.parentNode.removeChild(J);}this=
.form=3Dnull;}}A.superclass.destroy.call(this);},toString:function(){retu=
rn"Dialog =
"+this.id;}});}());(function(){YAHOO.widget.SimpleDialog=3Dfunction(E,D){=
YAHOO.widget.SimpleDialog.superclass.constructor.call(this,E,D);};var =
C=3DYAHOO.util.Dom,B=3DYAHOO.widget.SimpleDialog,A=3D{"ICON":{key:"icon",=
value:"none",suppressEvent:true},"TEXT":{key:"text",value:"",suppressEven=
t:true,supercedes:["icon"]}};B.ICON_BLOCK=3D"blckicon";B.ICON_ALARM=3D"al=
rticon";B.ICON_HELP=3D"hlpicon";B.ICON_INFO=3D"infoicon";B.ICON_WARN=3D"w=
arnicon";B.ICON_TIP=3D"tipicon";B.ICON_CSS_CLASSNAME=3D"yui-icon";B.CSS_S=
IMPLEDIALOG=3D"yui-simple-dialog";YAHOO.extend(B,YAHOO.widget.Dialog,{ini=
tDefaultConfig:function(){B.superclass.initDefaultConfig.call(this);this.=
cfg.addProperty(A.ICON.key,{handler:this.configIcon,value:A.ICON.value,su=
ppressEvent:A.ICON.suppressEvent});this.cfg.addProperty(A.TEXT.key,{handl=
er:this.configText,value:A.TEXT.value,suppressEvent:A.TEXT.suppressEvent,=
supercedes:A.TEXT.supercedes});},init:function(E,D){B.superclass.init.cal=
l(this,E);this.beforeInitEvent.fire(B);C.addClass(this.element,B.CSS_SIMP=
LEDIALOG);this.cfg.queueProperty("postmethod","manual");if(D){this.cfg.ap=
plyConfig(D,true);}this.beforeRenderEvent.subscribe(function(){if(!this.b=
ody){this.setBody("");}},this,true);this.initEvent.fire(B);},registerForm=
:function(){B.superclass.registerForm.call(this);this.form.innerHTML+=3D'=
<input type=3D"hidden" name=3D"'+this.id+'" =
value=3D""/>';},configIcon:function(F,E,J){var =
K=3DE[0],D=3Dthis.body,I=3DB.ICON_CSS_CLASSNAME,H,G;if(K&&K!=3D"none"){H=3D=
C.getElementsByClassName(I,"*",D);if(H){G=3DH.parentNode;if(G){G.removeCh=
ild(H);H=3Dnull;}}if(K.indexOf(".")=3D=3D-1){H=3Ddocument.createElement("=
span");H.className=3D(I+" =
"+K);H.innerHTML=3D"&#160;";}else{H=3Ddocument.createElement("img");H.src=
=3D(this.imageRoot+K);H.className=3DI;}if(H){D.insertBefore(H,D.firstChil=
d);}}},configText:function(E,D,F){var =
G=3DD[0];if(G){this.setBody(G);this.cfg.refireEvent("icon");}},toString:f=
unction(){return"SimpleDialog =
"+this.id;}});}());(function(){YAHOO.widget.ContainerEffect=3Dfunction(E,=
H,G,D,F){if(!F){F=3DYAHOO.util.Anim;}this.overlay=3DE;this.attrIn=3DH;thi=
s.attrOut=3DG;this.targetElement=3DD||E.element;this.animClass=3DF;};var =
B=3DYAHOO.util.Dom,C=3DYAHOO.util.CustomEvent,A=3DYAHOO.widget.ContainerE=
ffect;A.FADE=3Dfunction(D,F){var =
G=3DYAHOO.util.Easing,I=3D{attributes:{opacity:{from:0,to:1}},duration:F,=
method:G.easeIn},E=3D{attributes:{opacity:{to:0}},duration:F,method:G.eas=
eOut},H=3Dnew A(D,I,E,D.element);H.handleUnderlayStart=3Dfunction(){var =
K=3Dthis.overlay.underlay;if(K&&YAHOO.env.ua.ie){var =
J=3D(K.filters&&K.filters.length>0);if(J){B.addClass(D.element,"yui-effec=
t-fade");}}};H.handleUnderlayComplete=3Dfunction(){var =
J=3Dthis.overlay.underlay;if(J&&YAHOO.env.ua.ie){B.removeClass(D.element,=
"yui-effect-fade");}};H.handleStartAnimateIn=3Dfunction(K,J,L){B.addClass=
(L.overlay.element,"hide-select");if(!L.overlay.underlay){L.overlay.cfg.r=
efireEvent("underlay");}L.handleUnderlayStart();L.overlay._setDomVisibili=
ty(true);B.setStyle(L.overlay.element,"opacity",0);};H.handleCompleteAnim=
ateIn=3Dfunction(K,J,L){B.removeClass(L.overlay.element,"hide-select");if=
(L.overlay.element.style.filter){L.overlay.element.style.filter=3Dnull;}L=
.handleUnderlayComplete();L.overlay.cfg.refireEvent("iframe");L.animateIn=
CompleteEvent.fire();};H.handleStartAnimateOut=3Dfunction(K,J,L){B.addCla=
ss(L.overlay.element,"hide-select");L.handleUnderlayStart();};H.handleCom=
pleteAnimateOut=3Dfunction(K,J,L){B.removeClass(L.overlay.element,"hide-s=
elect");if(L.overlay.element.style.filter){L.overlay.element.style.filter=
=3Dnull;}L.overlay._setDomVisibility(false);B.setStyle(L.overlay.element,=
"opacity",1);L.handleUnderlayComplete();L.overlay.cfg.refireEvent("iframe=
");L.animateOutCompleteEvent.fire();};H.init();return =
H;};A.SLIDE=3Dfunction(F,D){var =
I=3DYAHOO.util.Easing,L=3DF.cfg.getProperty("x")||B.getX(F.element),K=3DF=
.cfg.getProperty("y")||B.getY(F.element),M=3DB.getClientWidth(),H=3DF.ele=
ment.offsetWidth,J=3D{attributes:{points:{to:[L,K]}},duration:D,method:I.=
easeIn},E=3D{attributes:{points:{to:[(M+25),K]}},duration:D,method:I.ease=
Out},G=3Dnew =
A(F,J,E,F.element,YAHOO.util.Motion);G.handleStartAnimateIn=3Dfunction(O,=
N,P){P.overlay.element.style.left=3D((-25)-H)+"px";P.overlay.element.styl=
e.top=3DK+"px";};G.handleTweenAnimateIn=3Dfunction(Q,P,R){var =
S=3DB.getXY(R.overlay.element),O=3DS[0],N=3DS[1];if(B.getStyle(R.overlay.=
element,"visibility")=3D=3D"hidden"&&O<L){R.overlay._setDomVisibility(tru=
e);}R.overlay.cfg.setProperty("xy",[O,N],true);R.overlay.cfg.refireEvent(=
"iframe");};G.handleCompleteAnimateIn=3Dfunction(O,N,P){P.overlay.cfg.set=
Property("xy",[L,K],true);P.startX=3DL;P.startY=3DK;P.overlay.cfg.refireE=
vent("iframe");P.animateInCompleteEvent.fire();};G.handleStartAnimateOut=3D=
function(O,N,R){var =
P=3DB.getViewportWidth(),S=3DB.getXY(R.overlay.element),Q=3DS[1];R.animOu=
t.attributes.points.to=3D[(P+25),Q];};G.handleTweenAnimateOut=3Dfunction(=
P,O,Q){var =
S=3DB.getXY(Q.overlay.element),N=3DS[0],R=3DS[1];Q.overlay.cfg.setPropert=
y("xy",[N,R],true);Q.overlay.cfg.refireEvent("iframe");};G.handleComplete=
AnimateOut=3Dfunction(O,N,P){P.overlay._setDomVisibility(false);P.overlay=
.cfg.setProperty("xy",[L,K]);P.animateOutCompleteEvent.fire();};G.init();=
return =
G;};A.prototype=3D{init:function(){this.beforeAnimateInEvent=3Dthis.creat=
eEvent("beforeAnimateIn");this.beforeAnimateInEvent.signature=3DC.LIST;th=
is.beforeAnimateOutEvent=3Dthis.createEvent("beforeAnimateOut");=0A=
this.beforeAnimateOutEvent.signature=3DC.LIST;this.animateInCompleteEvent=
=3Dthis.createEvent("animateInComplete");this.animateInCompleteEvent.sign=
ature=3DC.LIST;this.animateOutCompleteEvent=3Dthis.createEvent("animateOu=
tComplete");this.animateOutCompleteEvent.signature=3DC.LIST;this.animIn=3D=
new =
this.animClass(this.targetElement,this.attrIn.attributes,this.attrIn.dura=
tion,this.attrIn.method);this.animIn.onStart.subscribe(this.handleStartAn=
imateIn,this);this.animIn.onTween.subscribe(this.handleTweenAnimateIn,thi=
s);this.animIn.onComplete.subscribe(this.handleCompleteAnimateIn,this);th=
is.animOut=3Dnew =
this.animClass(this.targetElement,this.attrOut.attributes,this.attrOut.du=
ration,this.attrOut.method);this.animOut.onStart.subscribe(this.handleSta=
rtAnimateOut,this);this.animOut.onTween.subscribe(this.handleTweenAnimate=
Out,this);this.animOut.onComplete.subscribe(this.handleCompleteAnimateOut=
,this);},animateIn:function(){this.beforeAnimateInEvent.fire();this.animI=
n.animate();},animateOut:function(){this.beforeAnimateOutEvent.fire();thi=
s.animOut.animate();},handleStartAnimateIn:function(E,D,F){},handleTweenA=
nimateIn:function(E,D,F){},handleCompleteAnimateIn:function(E,D,F){},hand=
leStartAnimateOut:function(E,D,F){},handleTweenAnimateOut:function(E,D,F)=
{},handleCompleteAnimateOut:function(E,D,F){},toString:function(){var =
D=3D"ContainerEffect";if(this.overlay){D+=3D" =
["+this.overlay.toString()+"]";}return =
D;}};YAHOO.lang.augmentProto(A,YAHOO.util.EventProvider);})();YAHOO.regis=
ter("container",YAHOO.widget.Module,{version:"2.7.0",build:"1799"});
------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ajax.googleapis.com/ajax/libs/yui/2.7.0/build/dragdrop/dragdrop-min.js

/*=0A=
Copyright (c) 2009, Yahoo! Inc. All rights reserved.=0A=
Code licensed under the BSD License:=0A=
http://developer.yahoo.net/yui/license.txt=0A=
version: 2.7.0=0A=
*/=0A=
if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=3Dfunction(){var =
A=3DYAHOO.util.Event,B=3DYAHOO.util.Dom;return{useShim:false,_shimActive:=
false,_shimState:false,_debugShim:false,_createShim:function(){var =
C=3Ddocument.createElement("div");C.id=3D"yui-ddm-shim";if(document.body.=
firstChild){document.body.insertBefore(C,document.body.firstChild);}else{=
document.body.appendChild(C);}C.style.display=3D"none";C.style.background=
Color=3D"red";C.style.position=3D"absolute";C.style.zIndex=3D"99999";B.se=
tStyle(C,"opacity","0");this._shim=3DC;A.on(C,"mouseup",this.handleMouseU=
p,this,true);A.on(C,"mousemove",this.handleMouseMove,this,true);A.on(wind=
ow,"scroll",this._sizeShim,this,true);},_sizeShim:function(){if(this._shi=
mActive){var =
C=3Dthis._shim;C.style.height=3DB.getDocumentHeight()+"px";C.style.width=3D=
B.getDocumentWidth()+"px";C.style.top=3D"0";C.style.left=3D"0";}},_activa=
teShim:function(){if(this.useShim){if(!this._shim){this._createShim();}th=
is._shimActive=3Dtrue;var =
C=3Dthis._shim,D=3D"0";if(this._debugShim){D=3D".5";}B.setStyle(C,"opacit=
y",D);this._sizeShim();C.style.display=3D"block";}},_deactivateShim:funct=
ion(){this._shim.style.display=3D"none";this._shimActive=3Dfalse;},_shim:=
null,ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,=
preventDefault:true,stopPropagation:true,initialized:false,locked:false,i=
nteractionInfo:null,init:function(){this.initialized=3Dtrue;},POINT:0,INT=
ERSECT:1,STRICT_INTERSECT:2,mode:0,_execOnAll:function(E,D){for(var F in =
this.ids){for(var C in this.ids[F]){var =
G=3Dthis.ids[F][C];if(!this.isTypeOfDD(G)){continue;}G[E].apply(G,D);}}},=
_onLoad:function(){this.init();A.on(document,"mouseup",this.handleMouseUp=
,this,true);A.on(document,"mousemove",this.handleMouseMove,this,true);A.o=
n(window,"unload",this._onUnload,this,true);A.on(window,"resize",this._on=
Resize,this,true);},_onResize:function(C){this._execOnAll("resetConstrain=
ts",[]);},lock:function(){this.locked=3Dtrue;},unlock:function(){this.loc=
ked=3Dfalse;},isLocked:function(){return =
this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTime=
Thresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,fromT=
imeout:false,regDragDrop:function(D,C){if(!this.initialized){this.init();=
}if(!this.ids[C]){this.ids[C]=3D{};}this.ids[C][D.id]=3DD;},removeDDFromG=
roup:function(E,C){if(!this.ids[C]){this.ids[C]=3D{};}var =
D=3Dthis.ids[C];if(D&&D[E.id]){delete =
D[E.id];}},_remove:function(E){for(var D in E.groups){if(D){var =
C=3Dthis.ids[D];if(C&&C[E.id]){delete C[E.id];}}}delete =
this.handleIds[E.id];},regHandle:function(D,C){if(!this.handleIds[D]){thi=
s.handleIds[D]=3D{};}this.handleIds[D][C]=3DC;},isDragDrop:function(C){re=
turn(this.getDDById(C))?true:false;},getRelated:function(H,D){var =
G=3D[];for(var F in H.groups){for(var E in this.ids[F]){var =
C=3Dthis.ids[F][E];if(!this.isTypeOfDD(C)){continue;}if(!D||C.isTarget){G=
[G.length]=3DC;}}}return G;},isLegalTarget:function(G,F){var =
D=3Dthis.getRelated(G,true);for(var =
E=3D0,C=3DD.length;E<C;++E){if(D[E].id=3D=3DF.id){return true;}}return =
false;},isTypeOfDD:function(C){return(C&&C.__ygDragDrop);},isHandle:funct=
ion(D,C){return(this.handleIds[D]&&this.handleIds[D][C]);},getDDById:func=
tion(D){for(var C in this.ids){if(this.ids[C][D]){return =
this.ids[C][D];}}return =
null;},handleMouseDown:function(E,D){this.currentTarget=3DYAHOO.util.Even=
t.getTarget(E);this.dragCurrent=3DD;var =
C=3DD.getEl();this.startX=3DYAHOO.util.Event.getPageX(E);this.startY=3DYA=
HOO.util.Event.getPageY(E);this.deltaX=3Dthis.startX-C.offsetLeft;this.de=
ltaY=3Dthis.startY-C.offsetTop;this.dragThreshMet=3Dfalse;this.clickTimeo=
ut=3DsetTimeout(function(){var =
F=3DYAHOO.util.DDM;F.startDrag(F.startX,F.startY);F.fromTimeout=3Dtrue;},=
this.clickTimeThresh);},startDrag:function(C,E){if(this.dragCurrent&&this=
.dragCurrent.useShim){this._shimState=3Dthis.useShim;this.useShim=3Dtrue;=
}this._activateShim();clearTimeout(this.clickTimeout);var =
D=3Dthis.dragCurrent;if(D&&D.events.b4StartDrag){D.b4StartDrag(C,E);D.fir=
eEvent("b4StartDragEvent",{x:C,y:E});}if(D&&D.events.startDrag){D.startDr=
ag(C,E);D.fireEvent("startDragEvent",{x:C,y:E});}this.dragThreshMet=3Dtru=
e;},handleMouseUp:function(C){if(this.dragCurrent){clearTimeout(this.clic=
kTimeout);if(this.dragThreshMet){if(this.fromTimeout){this.fromTimeout=3D=
false;this.handleMouseMove(C);}this.fromTimeout=3Dfalse;this.fireEvents(C=
,true);}else{}this.stopDrag(C);this.stopEvent(C);}},stopEvent:function(C)=
{if(this.stopPropagation){YAHOO.util.Event.stopPropagation(C);}if(this.pr=
eventDefault){YAHOO.util.Event.preventDefault(C);}},stopDrag:function(E,D=
){var =
C=3Dthis.dragCurrent;if(C&&!D){if(this.dragThreshMet){if(C.events.b4EndDr=
ag){C.b4EndDrag(E);C.fireEvent("b4EndDragEvent",{e:E});}if(C.events.endDr=
ag){C.endDrag(E);C.fireEvent("endDragEvent",{e:E});}}if(C.events.mouseUp)=
{C.onMouseUp(E);C.fireEvent("mouseUpEvent",{e:E});}}if(this._shimActive){=
this._deactivateShim();if(this.dragCurrent&&this.dragCurrent.useShim){thi=
s.useShim=3Dthis._shimState;this._shimState=3Dfalse;}}this.dragCurrent=3D=
null;this.dragOvers=3D{};},handleMouseMove:function(F){var =
C=3Dthis.dragCurrent;if(C){if(YAHOO.util.Event.isIE&&!F.button){this.stop=
Event(F);return =
this.handleMouseUp(F);}else{if(F.clientX<0||F.clientY<0){}}if(!this.dragT=
hreshMet){var E=3DMath.abs(this.startX-YAHOO.util.Event.getPageX(F));var =
D=3DMath.abs(this.startY-YAHOO.util.Event.getPageY(F));if(E>this.clickPix=
elThresh||D>this.clickPixelThresh){this.startDrag(this.startX,this.startY=
);}}if(this.dragThreshMet){if(C&&C.events.b4Drag){C.b4Drag(F);C.fireEvent=
("b4DragEvent",{e:F});}if(C&&C.events.drag){C.onDrag(F);C.fireEvent("drag=
Event",{e:F});}if(C){this.fireEvents(F,false);}}this.stopEvent(F);}},fire=
Events:function(V,L){var =
a=3Dthis.dragCurrent;if(!a||a.isLocked()||a.dragOnly){return;}var =
N=3DYAHOO.util.Event.getPageX(V),M=3DYAHOO.util.Event.getPageY(V),P=3Dnew=
 =
YAHOO.util.Point(N,M),K=3Da.getTargetCoord(P.x,P.y),F=3Da.getDragEl(),E=3D=
["out","over","drop","enter"],U=3Dnew =
YAHOO.util.Region(K.y,K.x+F.offsetWidth,K.y+F.offsetHeight,K.x),I=3D[],D=3D=
{},Q=3D[],c=3D{outEvts:[],overEvts:[],dropEvts:[],enterEvts:[]};for(var =
S in this.dragOvers){var =
d=3Dthis.dragOvers[S];if(!this.isTypeOfDD(d)){continue;=0A=
}if(!this.isOverTarget(P,d,this.mode,U)){c.outEvts.push(d);}I[S]=3Dtrue;d=
elete this.dragOvers[S];}for(var R in a.groups){if("string"!=3Dtypeof =
R){continue;}for(S in this.ids[R]){var =
G=3Dthis.ids[R][S];if(!this.isTypeOfDD(G)){continue;}if(G.isTarget&&!G.is=
Locked()&&G!=3Da){if(this.isOverTarget(P,G,this.mode,U)){D[R]=3Dtrue;if(L=
){c.dropEvts.push(G);}else{if(!I[G.id]){c.enterEvts.push(G);}else{c.overE=
vts.push(G);}this.dragOvers[G.id]=3DG;}}}}}this.interactionInfo=3D{out:c.=
outEvts,enter:c.enterEvts,over:c.overEvts,drop:c.dropEvts,point:P,dragged=
Region:U,sourceRegion:this.locationCache[a.id],validDrop:L};for(var C in =
D){Q.push(C);}if(L&&!c.dropEvts.length){this.interactionInfo.validDrop=3D=
false;if(a.events.invalidDrop){a.onInvalidDrop(V);a.fireEvent("invalidDro=
pEvent",{e:V});}}for(S=3D0;S<E.length;S++){var =
Y=3Dnull;if(c[E[S]+"Evts"]){Y=3Dc[E[S]+"Evts"];}if(Y&&Y.length){var =
H=3DE[S].charAt(0).toUpperCase()+E[S].substr(1),X=3D"onDrag"+H,J=3D"b4Dra=
g"+H,O=3D"drag"+H+"Event",W=3D"drag"+H;if(this.mode){if(a.events[J]){a[J]=
(V,Y,Q);a.fireEvent(J+"Event",{event:V,info:Y,group:Q});}if(a.events[W]){=
a[X](V,Y,Q);a.fireEvent(O,{event:V,info:Y,group:Q});}}else{for(var =
Z=3D0,T=3DY.length;Z<T;++Z){if(a.events[J]){a[J](V,Y[Z].id,Q[0]);a.fireEv=
ent(J+"Event",{event:V,info:Y[Z].id,group:Q[0]});}if(a.events[W]){a[X](V,=
Y[Z].id,Q[0]);a.fireEvent(O,{event:V,info:Y[Z].id,group:Q[0]});}}}}}},get=
BestMatch:function(E){var G=3Dnull;var =
D=3DE.length;if(D=3D=3D1){G=3DE[0];}else{for(var F=3D0;F<D;++F){var =
C=3DE[F];if(this.mode=3D=3Dthis.INTERSECT&&C.cursorIsOver){G=3DC;break;}e=
lse{if(!G||!G.overlap||(C.overlap&&G.overlap.getArea()<C.overlap.getArea(=
))){G=3DC;}}}}return G;},refreshCache:function(D){var =
F=3DD||this.ids;for(var C in F){if("string"!=3Dtypeof =
C){continue;}for(var E in this.ids[C]){var =
G=3Dthis.ids[C][E];if(this.isTypeOfDD(G)){var =
H=3Dthis.getLocation(G);if(H){this.locationCache[G.id]=3DH;}else{delete =
this.locationCache[G.id];}}}}},verifyEl:function(D){try{if(D){var =
C=3DD.offsetParent;if(C){return true;}}}catch(E){}return =
false;},getLocation:function(H){if(!this.isTypeOfDD(H)){return null;}var =
F=3DH.getEl(),K,E,D,M,L,N,C,J,G;try{K=3DYAHOO.util.Dom.getXY(F);}catch(I)=
{}if(!K){return =
null;}E=3DK[0];D=3DE+F.offsetWidth;M=3DK[1];L=3DM+F.offsetHeight;N=3DM-H.=
padding[0];C=3DD+H.padding[1];J=3DL+H.padding[2];G=3DE-H.padding[3];retur=
n new YAHOO.util.Region(N,C,J,G);},isOverTarget:function(K,C,E,F){var =
G=3Dthis.locationCache[C.id];if(!G||!this.useCache){G=3Dthis.getLocation(=
C);this.locationCache[C.id]=3DG;}if(!G){return =
false;}C.cursorIsOver=3DG.contains(K);var =
J=3Dthis.dragCurrent;if(!J||(!E&&!J.constrainX&&!J.constrainY)){return =
C.cursorIsOver;}C.overlap=3Dnull;if(!F){var =
H=3DJ.getTargetCoord(K.x,K.y);var D=3DJ.getDragEl();F=3Dnew =
YAHOO.util.Region(H.y,H.x+D.offsetWidth,H.y+D.offsetHeight,H.x);}var =
I=3DF.intersect(G);if(I){C.overlap=3DI;return(E)?true:C.cursorIsOver;}els=
e{return =
false;}},_onUnload:function(D,C){this.unregAll();},unregAll:function(){if=
(this.dragCurrent){this.stopDrag();this.dragCurrent=3Dnull;}this._execOnA=
ll("unreg",[]);this.ids=3D{};},elementCache:{},getElWrapper:function(D){v=
ar C=3Dthis.elementCache[D];if(!C||!C.el){C=3Dthis.elementCache[D]=3Dnew =
this.ElementWrapper(YAHOO.util.Dom.get(D));}return =
C;},getElement:function(C){return =
YAHOO.util.Dom.get(C);},getCss:function(D){var =
C=3DYAHOO.util.Dom.get(D);return(C)?C.style:null;},ElementWrapper:functio=
n(C){this.el=3DC||null;this.id=3Dthis.el&&C.id;this.css=3Dthis.el&&C.styl=
e;},getPosX:function(C){return =
YAHOO.util.Dom.getX(C);},getPosY:function(C){return =
YAHOO.util.Dom.getY(C);},swapNode:function(E,C){if(E.swapNode){E.swapNode=
(C);}else{var F=3DC.parentNode;var =
D=3DC.nextSibling;if(D=3D=3DE){F.insertBefore(E,C);}else{if(C=3D=3DE.next=
Sibling){F.insertBefore(C,E);}else{E.parentNode.replaceChild(C,E);F.inser=
tBefore(E,D);}}}},getScroll:function(){var =
E,C,F=3Ddocument.documentElement,D=3Ddocument.body;if(F&&(F.scrollTop||F.=
scrollLeft)){E=3DF.scrollTop;C=3DF.scrollLeft;}else{if(D){E=3DD.scrollTop=
;C=3DD.scrollLeft;}else{}}return{top:E,left:C};},getStyle:function(D,C){r=
eturn YAHOO.util.Dom.getStyle(D,C);},getScrollTop:function(){return =
this.getScroll().top;},getScrollLeft:function(){return =
this.getScroll().left;},moveToEl:function(C,E){var =
D=3DYAHOO.util.Dom.getXY(E);YAHOO.util.Dom.setXY(C,D);},getClientHeight:f=
unction(){return =
YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return =
YAHOO.util.Dom.getViewportWidth();},numericSort:function(D,C){return(D-C)=
;},_timeoutCount:0,_addListeners:function(){var =
C=3DYAHOO.util.DDM;if(YAHOO.util.Event&&document){C._onLoad();}else{if(C.=
_timeoutCount>2000){}else{setTimeout(C._addListeners,10);if(document&&doc=
ument.body){C._timeoutCount+=3D1;}}}},handleWasClicked:function(C,E){if(t=
his.isHandle(E,C.id)){return true;}else{var =
D=3DC.parentNode;while(D){if(this.isHandle(E,D.id)){return =
true;}else{D=3DD.parentNode;}}}return =
false;}};}();YAHOO.util.DDM=3DYAHOO.util.DragDropMgr;YAHOO.util.DDM._addL=
isteners();}(function(){var A=3DYAHOO.util.Event;var =
B=3DYAHOO.util.Dom;YAHOO.util.DragDrop=3Dfunction(E,C,D){if(E){this.init(=
E,C,D);}};YAHOO.util.DragDrop.prototype=3D{events:null,on:function(){this=
.subscribe.apply(this,arguments);},id:null,config:null,dragElId:null,hand=
leElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleCl=
asses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:functi=
on(){this.locked=3Dtrue;},unlock:function(){this.locked=3Dfalse;},isTarge=
t:true,padding:null,dragOnly:false,useShim:false,_domRef:null,__ygDragDro=
p:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,delt=
aX:0,deltaY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonO=
nly:true,available:false,hasOuterHandles:false,cursorIsOver:false,overlap=
:null,b4StartDrag:function(C,D){},startDrag:function(C,D){},b4Drag:functi=
on(C){},onDrag:function(C){},onDragEnter:function(C,D){},b4DragOver:funct=
ion(C){},onDragOver:function(C,D){},b4DragOut:function(C){},onDragOut:fun=
ction(C,D){},b4DragDrop:function(C){},onDragDrop:function(C,D){},onInvali=
dDrop:function(C){},b4EndDrag:function(C){},endDrag:function(C){},b4Mouse=
Down:function(C){},onMouseDown:function(C){},onMouseUp:function(C){},onAv=
ailable:function(){},getEl:function(){if(!this._domRef){this._domRef=3DB.=
get(this.id);=0A=
}return this._domRef;},getDragEl:function(){return =
B.get(this.dragElId);},init:function(F,C,D){this.initTarget(F,C,D);A.on(t=
his._domRef||this.id,"mousedown",this.handleMouseDown,this,true);for(var =
E in =
this.events){this.createEvent(E+"Event");}},initTarget:function(E,C,D){th=
is.config=3DD||{};this.events=3D{};this.DDM=3DYAHOO.util.DDM;this.groups=3D=
{};if(typeof =
E!=3D=3D"string"){this._domRef=3DE;E=3DB.generateId(E);}this.id=3DE;this.=
addToGroup((C)?C:"default");this.handleElId=3DE;A.onAvailable(E,this.hand=
leOnAvailable,this,true);this.setDragElId(E);this.invalidHandleTypes=3D{A=
:"A"};this.invalidHandleIds=3D{};this.invalidHandleClasses=3D[];this.appl=
yConfig();},applyConfig:function(){this.events=3D{mouseDown:true,b4MouseD=
own:true,mouseUp:true,b4StartDrag:true,startDrag:true,b4EndDrag:true,endD=
rag:true,drag:true,b4Drag:true,invalidDrop:true,b4DragOut:true,dragOut:tr=
ue,dragEnter:true,b4DragOver:true,dragOver:true,b4DragDrop:true,dragDrop:=
true};if(this.config.events){for(var C in =
this.config.events){if(this.config.events[C]=3D=3D=3Dfalse){this.events[C=
]=3Dfalse;}}}this.padding=3Dthis.config.padding||[0,0,0,0];this.isTarget=3D=
(this.config.isTarget!=3D=3Dfalse);this.maintainOffset=3D(this.config.mai=
ntainOffset);this.primaryButtonOnly=3D(this.config.primaryButtonOnly!=3D=3D=
false);this.dragOnly=3D((this.config.dragOnly=3D=3D=3Dtrue)?true:false);t=
his.useShim=3D((this.config.useShim=3D=3D=3Dtrue)?true:false);},handleOnA=
vailable:function(){this.available=3Dtrue;this.resetConstraints();this.on=
Available();},setPadding:function(E,C,F,D){if(!C&&0!=3D=3DC){this.padding=
=3D[E,E,E,E];}else{if(!F&&0!=3D=3DF){this.padding=3D[E,C,E,C];}else{this.=
padding=3D[E,C,F,D];}}},setInitPosition:function(F,E){var =
G=3Dthis.getEl();if(!this.DDM.verifyEl(G)){if(G&&G.style&&(G.style.displa=
y=3D=3D"none")){}else{}return;}var D=3DF||0;var C=3DE||0;var =
H=3DB.getXY(G);this.initPageX=3DH[0]-D;this.initPageY=3DH[1]-C;this.lastP=
ageX=3DH[0];this.lastPageY=3DH[1];this.setStartPosition(H);},setStartPosi=
tion:function(D){var =
C=3DD||B.getXY(this.getEl());this.deltaSetXY=3Dnull;this.startPageX=3DC[0=
];this.startPageY=3DC[1];},addToGroup:function(C){this.groups[C]=3Dtrue;t=
his.DDM.regDragDrop(this,C);},removeFromGroup:function(C){if(this.groups[=
C]){delete =
this.groups[C];}this.DDM.removeDDFromGroup(this,C);},setDragElId:function=
(C){this.dragElId=3DC;},setHandleElId:function(C){if(typeof =
C!=3D=3D"string"){C=3DB.generateId(C);}this.handleElId=3DC;this.DDM.regHa=
ndle(this.id,C);},setOuterHandleElId:function(C){if(typeof =
C!=3D=3D"string"){C=3DB.generateId(C);}A.on(C,"mousedown",this.handleMous=
eDown,this,true);this.setHandleElId(C);this.hasOuterHandles=3Dtrue;},unre=
g:function(){A.removeListener(this.id,"mousedown",this.handleMouseDown);t=
his._domRef=3Dnull;this.DDM._remove(this);},isLocked:function(){return(th=
is.DDM.isLocked()||this.locked);},handleMouseDown:function(J,I){var =
D=3DJ.which||J.button;if(this.primaryButtonOnly&&D>1){return;}if(this.isL=
ocked()){return;}var =
C=3Dthis.b4MouseDown(J),F=3Dtrue;if(this.events.b4MouseDown){F=3Dthis.fir=
eEvent("b4MouseDownEvent",J);}var =
E=3Dthis.onMouseDown(J),H=3Dtrue;if(this.events.mouseDown){H=3Dthis.fireE=
vent("mouseDownEvent",J);}if((C=3D=3D=3Dfalse)||(E=3D=3D=3Dfalse)||(F=3D=3D=
=3Dfalse)||(H=3D=3D=3Dfalse)){return;}this.DDM.refreshCache(this.groups);=
var G=3Dnew =
YAHOO.util.Point(A.getPageX(J),A.getPageY(J));if(!this.hasOuterHandles&&!=
this.DDM.isOverTarget(G,this)){}else{if(this.clickValidator(J)){this.setS=
tartPosition();this.DDM.handleMouseDown(J,this);this.DDM.stopEvent(J);}el=
se{}}},clickValidator:function(D){var =
C=3DYAHOO.util.Event.getTarget(D);return(this.isValidHandleChild(C)&&(thi=
s.id=3D=3Dthis.handleElId||this.DDM.handleWasClicked(C,this.id)));},getTa=
rgetCoord:function(E,D){var C=3DE-this.deltaX;var =
F=3DD-this.deltaY;if(this.constrainX){if(C<this.minX){C=3Dthis.minX;}if(C=
>this.maxX){C=3Dthis.maxX;}}if(this.constrainY){if(F<this.minY){F=3Dthis.=
minY;}if(F>this.maxY){F=3Dthis.maxY;}}C=3Dthis.getTick(C,this.xTicks);F=3D=
this.getTick(F,this.yTicks);return{x:C,y:F};},addInvalidHandleType:functi=
on(C){var =
D=3DC.toUpperCase();this.invalidHandleTypes[D]=3DD;},addInvalidHandleId:f=
unction(C){if(typeof =
C!=3D=3D"string"){C=3DB.generateId(C);}this.invalidHandleIds[C]=3DC;},add=
InvalidHandleClass:function(C){this.invalidHandleClasses.push(C);},remove=
InvalidHandleType:function(C){var D=3DC.toUpperCase();delete =
this.invalidHandleTypes[D];},removeInvalidHandleId:function(C){if(typeof =
C!=3D=3D"string"){C=3DB.generateId(C);}delete =
this.invalidHandleIds[C];},removeInvalidHandleClass:function(D){for(var =
E=3D0,C=3Dthis.invalidHandleClasses.length;E<C;++E){if(this.invalidHandle=
Classes[E]=3D=3DD){delete =
this.invalidHandleClasses[E];}}},isValidHandleChild:function(F){var =
E=3Dtrue;var =
H;try{H=3DF.nodeName.toUpperCase();}catch(G){H=3DF.nodeName;}E=3DE&&!this=
.invalidHandleTypes[H];E=3DE&&!this.invalidHandleIds[F.id];for(var =
D=3D0,C=3Dthis.invalidHandleClasses.length;E&&D<C;++D){E=3D!B.hasClass(F,=
this.invalidHandleClasses[D]);}return =
E;},setXTicks:function(F,C){this.xTicks=3D[];this.xTickSize=3DC;var =
E=3D{};for(var =
D=3Dthis.initPageX;D>=3Dthis.minX;D=3DD-C){if(!E[D]){this.xTicks[this.xTi=
cks.length]=3DD;E[D]=3Dtrue;}}for(D=3Dthis.initPageX;D<=3Dthis.maxX;D=3DD=
+C){if(!E[D]){this.xTicks[this.xTicks.length]=3DD;E[D]=3Dtrue;}}this.xTic=
ks.sort(this.DDM.numericSort);},setYTicks:function(F,C){this.yTicks=3D[];=
this.yTickSize=3DC;var E=3D{};for(var =
D=3Dthis.initPageY;D>=3Dthis.minY;D=3DD-C){if(!E[D]){this.yTicks[this.yTi=
cks.length]=3DD;E[D]=3Dtrue;}}for(D=3Dthis.initPageY;D<=3Dthis.maxY;D=3DD=
+C){if(!E[D]){this.yTicks[this.yTicks.length]=3DD;E[D]=3Dtrue;}}this.yTic=
ks.sort(this.DDM.numericSort);},setXConstraint:function(E,D,C){this.leftC=
onstraint=3DparseInt(E,10);this.rightConstraint=3DparseInt(D,10);this.min=
X=3Dthis.initPageX-this.leftConstraint;this.maxX=3Dthis.initPageX+this.ri=
ghtConstraint;if(C){this.setXTicks(this.initPageX,C);}this.constrainX=3Dt=
rue;},clearConstraints:function(){this.constrainX=3Dfalse;this.constrainY=
=3Dfalse;this.clearTicks();},clearTicks:function(){this.xTicks=3Dnull;thi=
s.yTicks=3Dnull;this.xTickSize=3D0;this.yTickSize=3D0;},setYConstraint:fu=
nction(C,E,D){this.topConstraint=3DparseInt(C,10);this.bottomConstraint=3D=
parseInt(E,10);this.minY=3Dthis.initPageY-this.topConstraint;this.maxY=3D=
this.initPageY+this.bottomConstraint;if(D){this.setYTicks(this.initPageY,=
D);=0A=
}this.constrainY=3Dtrue;},resetConstraints:function(){if(this.initPageX||=
this.initPageX=3D=3D=3D0){var =
D=3D(this.maintainOffset)?this.lastPageX-this.initPageX:0;var =
C=3D(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPos=
ition(D,C);}else{this.setInitPosition();}if(this.constrainX){this.setXCon=
straint(this.leftConstraint,this.rightConstraint,this.xTickSize);}if(this=
.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint=
,this.yTickSize);}},getTick:function(I,F){if(!F){return =
I;}else{if(F[0]>=3DI){return F[0];}else{for(var =
D=3D0,C=3DF.length;D<C;++D){var E=3DD+1;if(F[E]&&F[E]>=3DI){var =
H=3DI-F[D];var G=3DF[E]-I;return(G>H)?F[D]:F[E];}}return =
F[F.length-1];}}},toString:function(){return("DragDrop =
"+this.id);}};YAHOO.augment(YAHOO.util.DragDrop,YAHOO.util.EventProvider)=
;})();YAHOO.util.DD=3Dfunction(C,A,B){if(C){this.init(C,A,B);}};YAHOO.ext=
end(YAHOO.util.DD,YAHOO.util.DragDrop,{scroll:true,autoOffset:function(C,=
B){var A=3DC-this.startPageX;var =
D=3DB-this.startPageY;this.setDelta(A,D);},setDelta:function(B,A){this.de=
ltaX=3DB;this.deltaY=3DA;},setDragElPos:function(C,B){var =
A=3Dthis.getDragEl();this.alignElWithMouse(A,C,B);},alignElWithMouse:func=
tion(C,G,F){var E=3Dthis.getTargetCoord(G,F);if(!this.deltaSetXY){var =
H=3D[E.x,E.y];YAHOO.util.Dom.setXY(C,H);var =
D=3DparseInt(YAHOO.util.Dom.getStyle(C,"left"),10);var =
B=3DparseInt(YAHOO.util.Dom.getStyle(C,"top"),10);this.deltaSetXY=3D[D-E.=
x,B-E.y];}else{YAHOO.util.Dom.setStyle(C,"left",(E.x+this.deltaSetXY[0])+=
"px");YAHOO.util.Dom.setStyle(C,"top",(E.y+this.deltaSetXY[1])+"px");}thi=
s.cachePosition(E.x,E.y);var =
A=3Dthis;setTimeout(function(){A.autoScroll.call(A,E.x,E.y,C.offsetHeight=
,C.offsetWidth);},0);},cachePosition:function(B,A){if(B){this.lastPageX=3D=
B;this.lastPageY=3DA;}else{var =
C=3DYAHOO.util.Dom.getXY(this.getEl());this.lastPageX=3DC[0];this.lastPag=
eY=3DC[1];}},autoScroll:function(J,I,E,K){if(this.scroll){var =
L=3Dthis.DDM.getClientHeight();var B=3Dthis.DDM.getClientWidth();var =
N=3Dthis.DDM.getScrollTop();var D=3Dthis.DDM.getScrollLeft();var =
H=3DE+I;var M=3DK+J;var G=3D(L+N-I-this.deltaY);var =
F=3D(B+D-J-this.deltaX);var C=3D40;var =
A=3D(document.all)?80:30;if(H>L&&G<C){window.scrollTo(D,N+A);}if(I<N&&N>0=
&&I-N<C){window.scrollTo(D,N-A);}if(M>B&&F<C){window.scrollTo(D+A,N);}if(=
J<D&&D>0&&J-D<C){window.scrollTo(D-A,N);}}},applyConfig:function(){YAHOO.=
util.DD.superclass.applyConfig.call(this);this.scroll=3D(this.config.scro=
ll!=3D=3Dfalse);},b4MouseDown:function(A){this.setStartPosition();this.au=
toOffset(YAHOO.util.Event.getPageX(A),YAHOO.util.Event.getPageY(A));},b4D=
rag:function(A){this.setDragElPos(YAHOO.util.Event.getPageX(A),YAHOO.util=
.Event.getPageY(A));},toString:function(){return("DD =
"+this.id);}});YAHOO.util.DDProxy=3Dfunction(C,A,B){if(C){this.init(C,A,B=
);this.initFrame();}};YAHOO.util.DDProxy.dragElId=3D"ygddfdiv";YAHOO.exte=
nd(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:true,centerFrame:false,c=
reateFrame:function(){var =
B=3Dthis,A=3Ddocument.body;if(!A||!A.firstChild){setTimeout(function(){B.=
createFrame();},50);return;}var =
F=3Dthis.getDragEl(),E=3DYAHOO.util.Dom;if(!F){F=3Ddocument.createElement=
("div");F.id=3Dthis.dragElId;var =
D=3DF.style;D.position=3D"absolute";D.visibility=3D"hidden";D.cursor=3D"m=
ove";D.border=3D"2px solid =
#aaa";D.zIndex=3D999;D.height=3D"25px";D.width=3D"25px";var =
C=3Ddocument.createElement("div");E.setStyle(C,"height","100%");E.setStyl=
e(C,"width","100%");E.setStyle(C,"background-color","#ccc");E.setStyle(C,=
"opacity","0");F.appendChild(C);A.insertBefore(F,A.firstChild);}},initFra=
me:function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDPr=
oxy.superclass.applyConfig.call(this);this.resizeFrame=3D(this.config.res=
izeFrame!=3D=3Dfalse);this.centerFrame=3D(this.config.centerFrame);this.s=
etDragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame=
:function(E,D){var C=3Dthis.getEl();var A=3Dthis.getDragEl();var =
B=3DA.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.r=
ound(parseInt(B.width,10)/2),Math.round(parseInt(B.height,10)/2));}this.s=
etDragElPos(E,D);YAHOO.util.Dom.setStyle(A,"visibility","visible");},_res=
izeProxy:function(){if(this.resizeFrame){var H=3DYAHOO.util.Dom;var =
B=3Dthis.getEl();var C=3Dthis.getDragEl();var =
G=3DparseInt(H.getStyle(C,"borderTopWidth"),10);var =
I=3DparseInt(H.getStyle(C,"borderRightWidth"),10);var =
F=3DparseInt(H.getStyle(C,"borderBottomWidth"),10);var =
D=3DparseInt(H.getStyle(C,"borderLeftWidth"),10);if(isNaN(G)){G=3D0;}if(i=
sNaN(I)){I=3D0;}if(isNaN(F)){F=3D0;}if(isNaN(D)){D=3D0;}var =
E=3DMath.max(0,B.offsetWidth-I-D);var =
A=3DMath.max(0,B.offsetHeight-G-F);H.setStyle(C,"width",E+"px");H.setStyl=
e(C,"height",A+"px");}},b4MouseDown:function(B){this.setStartPosition();v=
ar A=3DYAHOO.util.Event.getPageX(B);var =
C=3DYAHOO.util.Event.getPageY(B);this.autoOffset(A,C);},b4StartDrag:funct=
ion(A,B){this.showFrame(A,B);},b4EndDrag:function(A){YAHOO.util.Dom.setSt=
yle(this.getDragEl(),"visibility","hidden");},endDrag:function(D){var =
C=3DYAHOO.util.Dom;var B=3Dthis.getEl();var =
A=3Dthis.getDragEl();C.setStyle(A,"visibility","");C.setStyle(B,"visibili=
ty","hidden");YAHOO.util.DDM.moveToEl(B,A);C.setStyle(A,"visibility","hid=
den");C.setStyle(B,"visibility","");},toString:function(){return("DDProxy=
 =
"+this.id);}});YAHOO.util.DDTarget=3Dfunction(C,A,B){if(C){this.initTarge=
t(C,A,B);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO.util.DragDrop,{toStrin=
g:function(){return("DDTarget =
"+this.id);}});YAHOO.register("dragdrop",YAHOO.util.DragDropMgr,{version:=
"2.7.0",build:"1799"});
------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://centergrove.rubiconatlas.org/c/js/printstacktrace.js?v=Atlas7.1.1b10709

// JR 7/6/2010 - Refactored printStackTrace into a single function using =
Prototype utilities=20
// for printing argument Objects in their entirety, when possible.
// Requires Prototype.js
//

// Domain Public by Eric Wendelin http://eriwen.com/ (2008)
//                  Luke Smith http://lucassmith.name/ (2008)
//                  Loic Dachary <loic@dachary.org> (2008)
//                  Johan Euphrosine <proppy@aminche.com> (2008)
//
// Information and discussions
// http://jspoker.pokersource.info/skin/test-printstacktrace.html
// http://eriwen.com/javascript/js-stack-trace/
// http://pastie.org/253058
// =
http://browsershots.org/http://jspoker.pokersource.info/skin/test-printst=
acktrace.html
//

// Software License Agreement (BSD License)
//
// Copyright (c) 2007, Parakey Inc.
// All rights reserved.
//
// Redistribution and use of this software in source and binary forms, =
with or without modification,
// are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above
//   copyright notice, this list of conditions and the
//   following disclaimer.
//
// * Redistributions in binary form must reproduce the above
//   copyright notice, this list of conditions and the
//   following disclaimer in the documentation and/or other
//   materials provided with the distribution.
//
// * Neither the name of Parakey Inc. nor the names of its
//   contributors may be used to endorse or promote products
//   derived from this software without specific prior
//   written permission of Parakey Inc.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS =
"AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED =
WARRANTIES OF MERCHANTABILITY AND
// FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL =
THE COPYRIGHT OWNER OR
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, =
EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE =
GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY =
THEORY OF LIABILITY, WHETHER
// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR =
OTHERWISE) ARISING IN ANY WAY OUT
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF =
SUCH DAMAGE.

function printStackTrace() {
	function stringifyArguments(args) {
        for (var i =3D 0; i < args.length; ++i) {
        	var argument =3D args[i];
        	try{
        		argument =3D Object.toJSON(argument);
        	}
        	catch(e){
        		argument =3D Object.inspect(argument);
        	}
        	args[i] =3D argument;
        }
        return args.join(',');
    }
	if(Prototype.Browser.Opera){
		return 'Opera not handled';
	}
	var curr =3D arguments.callee,
	ANON =3D "{anonymous}",
    fnRE  =3D /function\s*([\w\-$]+)?\s*\(/i,
    stack =3D [],j=3D0,fn,args;

	var maxStackSize =3D 10;
    while (curr && stack.length < maxStackSize) {
        fn =3D fnRE.test(curr.toString()) ? RegExp.$1 || ANON : ANON;
        args =3D Array.prototype.slice.call(curr['arguments']);
        stack[j++] =3D fn + '(' + stringifyArguments(args) + ')';
        curr =3D curr.caller;
    }
    return stack;
}

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://centergrove.rubiconatlas.org/c/js/showhidebyclass.js?v=Atlas7.1.1b10709

/*
 * JR 3/4/2010	Most of the functions in this file are one-liners built =
into Prototype.js that are more flexible and more performant.
 * 				Going forward, please use Prototype.js instead of this library.
 */

function getElementsByClass(sClass,node,tag) {
	var aElements=3Dnew Array();
	if (node=3D=3Dnull) node=3Ddocument;
	if (tag=3D=3Dnull) tag=3D'*';
	var els=3Dnode.getElementsByTagName(tag);
	var elsLen=3Dels.length;
	var pattern=3Dnew RegExp("(^|\\s)"+sClass+"(\\s|$)");
	for =
(i=3D0,j=3D0;i<elsLen;i++){if(pattern.test(els[i].className)){aElements[j=
]=3Dels[i];j++;}}
	return aElements;
}
function ShowByClass(s) {
	var x=3DgetElementsByClass(s);
	if (!x) return;
	for (var i=3D0;i<x.length;i++) {
		x[i].style.display=3D'block';
	}
}
function HideByClass(s) {
	var x=3DgetElementsByClass(s);
	if (!x) return;
	for (var i=3D0;i<x.length;i++) {
		x[i].style.display=3D'none';
	}
}
function ShowByID(s, sClass) {
	if (s.indexOf('showall')>-1) {
		ShowByClass(sClass);
	}
	else {
		var x=3Ddocument.getElementById(s);
		if (!x) return;
		x.style.display=3D'block';
	}
}
function ToggleByID(s) {
	var x=3Ddocument.getElementById(s);
	if (x.style.display=3D=3D'block') {
		sDisplay=3D'none';
		if (document.getElementById('ToggleButton'+s)) {
			document.getElementById('ToggleButton'+s).src =3D =
'/common_images/maximize.png?v=3D' + ATLAS_VERSION;
		}
	}
	else {
		sDisplay=3D'block';
		if (document.getElementById('ToggleButton'+s)) {
			document.getElementById('ToggleButton'+s).src =3D =
'/common_images/minimize.png?v=3D' + ATLAS_VERSION;
		}
	}
	x.style.display=3DsDisplay;
}

function HideByClassToggleByID(sClass, sID) {
	var x=3Ddocument.getElementById(sID);
	sDisplay=3Dx.style.display;
	var a=3DgetElementsByClass(sClass);
	for (var i=3D0;i<a.length;i++) {
		a[i].style.display=3D'none';
	}
	if (sDisplay=3D=3D'block') sDisplay=3D'none';
	else sDisplay=3D'block';
	x.style.display=3DsDisplay;
}

function HideByID(s) {
	var x=3Ddocument.getElementById(s);
	x.style.display=3D'none';
}

function DynamicSelectItem(id,fieldName,selectList,callback) {
	document.getElementById(id).name=3DfieldName+'[]';
	document.getElementById("div_"+id).style.display=3D"block";
	selectList.selectedIndex=3D0;
	if(typeof callback =3D=3D 'function'){
		callback(id,fieldName,selectList);
	}
}
function setClassById(id, newclass) {
	document.getElementById(id).className=3Dnewclass;
}
function DynamicUnSelectItem(id,fieldName,selectList,callback) {
	document.getElementById(id).name=3D"hidden_"+fieldName+"[]";
	document.getElementById("div_"+id).style.display=3D"none";
	if(typeof callback =3D=3D 'function'){
		callback(id,fieldName,selectList);
	}
}
function resetUIDynamicItemLists() {
	var hiddenDivs =3D =
document.getElementsByClassName('UIDynamicItemOption');
	for (i =3D 0;i<hiddenDivs.length;i++) {
		aInputs =3D hiddenDivs[i].getElementsByTagName("input");
		for (j=3D0;j<aInputs.length; j++) {
			if (aInputs[j].type =3D=3D "hidden") {
				aInputs[j].parentNode.removeChild(aInputs[j]);
			}
		}
	}
}

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://centergrove.rubiconatlas.org/c/js/standardFunctions.js?v=Atlas7.1.1b10709


/**
* The new and improved SubmitForm function
* Call this with options for the what you want the form to do
* possible options:
*  : form - the form object to be submitted
*  : target - a target like _blank or _self
*  : action - action URL for the submit
*  : confirm - a confirmation text string
*  : reset - true or false to reset hidden fields
*  : fields - a hash of key/value pairs for fields to be set on the form
*  : redirect - true if you want the form to redirect to the action =
parameter
*  : entype - encoding type
*/
function SubmitForm(options) {
	if(!options){
		options =3D [];
	}
	var frm;
	if(!options.form){
		frm =3D document.forms[0];
	}else{
		frm =3D options.form;
	}

	if(options.confirm && !confirm(options.confirm)){
		//bail if the confirmation returns false
		return;
	}

	if(options.reset){
		ResetHiddenFields();
	}
	if(options.fields){
		//used to return hidden fields to their original state in case the =
user hits 'back'
		var savedFields =3D {};
		for(var fieldName in options.fields){
			var val =3D options.fields[fieldName];
			var fieldObj =3D frm.elements[fieldName];
			if (fieldObj) {
				if (fieldObj.options) {
					var selected =3D false;
					for(var i =3D 0; i < fieldObj.length; i++) {
						if (fieldObj.options[i].value =3D=3D val) {
							fieldObj.selectedIndex =3D i;
							selected =3D true;
						}
					}
					if (!selected) {
						var option =3D  new Option('', val);
						fieldObj.options[fieldObj.length] =3D option;
						fieldObj.selectedIndex =3D fieldObj.length - 1;
					}
				}
				else {	//AE 10/15/08 add the following block to eliminate dynamic =
select list/autocomplete items
					if (typeof document.getElementsByName(fieldName+"[]") =3D=3D =
"object" && document.getElementsByName(fieldName+"[]") .length) {
						var inputs =3D document.getElementsByName(fieldName+"[]");
						for (var i=3D0; i< inputs.length; i++) {
							inputs[i].parentNode.remove(inputs[i]);
						}
						fieldObj =3D document.createElement("input");
						fieldObj.type =3D "hidden";
						fieldObj.name =3D fieldName+"[]";
						fieldObj.value =3D val;
						frm.appendChild(fieldObj);
						//store the reference to the field object to remove it after the =
submit
						savedFields[fieldName] =3D fieldObj;
					}
					else {
						savedFields[fieldName] =3D fieldObj.value;
						fieldObj.value =3D val;
					}
				}
			} else {
				if (Object.isArray(val) && (fieldName.endsWith('[]'))) {
					savedFields[fieldName] =3D [];
					val.each(function iterate(value,index) {
						fieldObj =3D document.createElement("input");
						fieldObj.type =3D "hidden";
						fieldObj.name =3D fieldName;
						fieldObj.value =3D value;
						frm.appendChild(fieldObj);
						//store the reference to the field object to remove it after the =
submit
						savedFields[fieldName][index] =3D fieldObj;
					});
				}
				else {
					fieldObj =3D document.createElement("input");
					fieldObj.type =3D "hidden";
					fieldObj.name =3D fieldName;
					fieldObj.value =3D val;
					frm.appendChild(fieldObj);
					//store the reference to the field object to remove it after the =
submit
					savedFields[fieldName] =3D fieldObj;
				}
			}
		}
	}
	if (typeof ogridEditor =3D=3D "undefined") {
		ogridEditor =3D false;
	}
	if(typeof frm.onsubmit =3D=3D "function" && !frm.onsubmit() &&  =
!ogridEditor){
		//bail if the onsubmit function returns false
		return;
	}

	if(typeof options.validate =3D=3D "function" && !options.validate()){
		//bail if the validate function returns false
		return;
	}
	if (options.enctype) {
		var oldEncType =3D frm.enctype;
		frm.enctype =3D options.enctype;
		frm.encoding =3D options.enctype; //stupid IE doesn't play well - we =
have to set the encoding field instead of enctype
	}
	if(options.target){
		var oldTarget =3D frm.target;
		frm.target =3D options.target;
	=09
		if( Prototype.Browser.WebKit ){	//JR 1/25/2010 - Fixes =
https://bugs.webkit.org/show_bug.cgi?id=3D28633
			options.action =3D ( options.action || window.location.href );
			if( ! /\?/.test(options.action) ){
				options.action +=3D '?';
			}
			options.action +=3D '&webkit=3D';
			if( window.WebKitSubmitFormSwitch ){
				options.action +=3D '1';
			}
			window.WebKitSubmitFormSwitch =3D ! window.WebKitSubmitFormSwitch;
		}
	}
=09
	if(options.action){
		if(options.redirect){
			frm.SaveAndGo.value =3D options.action;
		}else{
			var oldAction =3D frm.action;
			frm.action =3D options.action;
		}
	}
=09
	for (var i =3D 0; i<window.beforeSubmits.length; i++ ) {
		if (typeof window.beforeSubmits[i] =3D=3D "function") {
			window.beforeSubmits[i]();
		}
	}
=09
	frm.submit();
=09
	for (var i =3D 0; i<window.afterSubmits.length; i++ ) {
		if (typeof window.afterSubmits[i] =3D=3D "function") {
			window.afterSubmits[i]();
		}
	}
=09
	//restor targets and actions post submit
	if(options.target){
		frm.target =3D oldTarget;
	}
	if(options.action && !options.redirect){
		frm.action =3D oldAction;
	}
	if (options.enctype) {
		frm.enctype =3D oldEncType;
	}
	//restore saved field names post submit

	if(options.fields){
		for(var fieldName in savedFields){
			if(Object.isArray(savedFields[fieldName])){
				savedFields[fieldName].each(function clear(element) {
					element.value =3D "";
				});
			}
			else if(typeof savedFields[fieldName] =3D=3D "object"){
				//reset the value of a field created on the fly
				savedFields[fieldName].value =3D "";
			}else{
				frm.elements[fieldName].value =3D savedFields[fieldName];
			}
		}
	}
}

/**
 * JR 5/25/2010 - Before using this function, please consider using =
RenderView() or ControllerRequest()
 * @param options
 * @return
 */
function SubmitFormAjax(options) {
	options =3D options || {};
	var message =3D options.message || 'Saving...';
	var frm =3D options.form || document.forms[0];
	var action =3D options.action || window.location.href;
	var onSuccess =3D options.onSuccess || Prototype.emptyFunction;
=09
	if(options.confirm && !confirm(options.confirm)){
		//bail if the confirmation returns false
		return;
	}

	if(options.reset){
		ResetHiddenFields();
	}
=09
	if(typeof options.validate =3D=3D "function" && !options.validate()){
		//bail if the validate function returns false
		return;
	}
=09
	for(var i =3D 0; i<window.beforeSubmits.length; i++ ) {
		if(typeof window.beforeSubmits[i] =3D=3D "function") {
			window.beforeSubmits[i]();
		}
	}
=09
	if(typeof YUIPopupFormProvider !=3D 'undefined'){
		YUIPopupFormProvider.SetLoadingModalForm(message);
	}
	new Ajax.Request( action, {
		evalJS: false,
		evalJSON: false,
		parameters: Object.extend( Form.serialize(frm, true), options.fields =
|| {} ),
		onSuccess: function onSuccess_SubmitFormAjax(){
			onSuccess();
			if(typeof YUIPopupFormProvider !=3D 'undefined'){
				YUIPopupFormProvider.DisposeModalForm();
			}
		},
		onFailure: function onFailure_SubmitFormAjax(){
			if(typeof YUIPopupFormProvider !=3D 'undefined'){
				YUIPopupFormProvider.SetErrorModalForm();
			}
		},
		onException: function onException_SubmitFormAjax(){
			if(typeof YUIPopupFormProvider !=3D 'undefined'){
				YUIPopupFormProvider.SetErrorModalForm();
			}
		}
	} );
=09
	for(var i =3D 0; i<window.afterSubmits.length; i++ ) {
		if(typeof window.afterSubmits[i] =3D=3D "function") {
			window.afterSubmits[i]();
		}
	}
}

window.beforeSubmits =3D [];
window.afterSubmits =3D [];

/**
 * Override me!
 */
function ResetHiddenFields(){
=09
}

/**
 * Insert a hidden form variable (to be used by child document (e.g. =
iframe)
 * 	workaround for IE not correctly appending nodes into parents =
objects...
 * added by AE 4/13/09
 */
function InsertHiddenFormVariable(sName,vValue) {
		var oInput =3D document.createElement('input');
		oInput.type =3D 'hidden';
		oInput.value =3D vValue;
		oInput.name =3D sName;
		oInput.id =3D sName;
		document.forms[0].appendChild(oInput);
}
function getFormFieldValue(oField) {
	//alert(oField.name + \'=3D\' + oField.value);
	if((oField.type =3D=3D "checkbox" || oField.type =3D=3D "radio") && =
!oField.checked && typeof oField.value !=3D "undefined"){
		return "";
	}
	return oField.value;
}

function getFormFields() {
	sFields =3D "";
	for (var i =3D 0; i < document.forms[0].elements.length; i++) {
		oField =3D document.forms[0].elements[i];
		if(!oField.name){
			continue;
		}
		sValue =3D getFormFieldValue(oField);
		if (sValue !=3D "") {
			sFields +=3D encodeURIComponent(oField.name) + "=3D" + =
encodeURIComponent(sValue) + "&";
		}
	}
	//JG Added a variable so pages can see if they are from autosave or not
	sFields +=3D "AjaxAutosave=3D1";
	return sFields;
}

function openRelatedKeywordsWindow(url) {
	var f =3D document.forms[0].strKey1;
	if(f) {
		if(f.value && f.value.strip()) {
			YUIPopupFormProvider.ShowModalForm('<iframe =
src=3D"/c/maps/showRelatedKeywords.php?strkey1=3D' + =
encodeURIComponent(f.value.strip()) + '" frameborder=3D"0" =
height=3D"300" width=3D"100%"></iframe>', {
				Header: 'Related Keywords',
				Footer: '<div class=3D"AtlasButtonWrapper"><a class=3D"AtlasButton" =
href=3D"javascript:YUIPopupFormProvider.HideModalForm();">Done</a></div>'=
,
				height: 300,
				width: 400
			});
		}
		else {
			alert('Enter a term to look up related terms in the thesaurus');
			f.focus();
		}
	}
}

function ClusterOff(){
	document.forms[0].bClusterOff.value=3D1;
	SubmitForm();
}

function goSummary(sSummaryBy,iID,sNextSummary,sResults) {
	var f=3Ddocument.forms[0];
	ResetHiddenFields();
	f.results.value=3D'summary';
	if (sResults!=3D'') {
		f.results.value=3DsResults;
	}

	if (sNextSummary!=3D'') {
		f.SummaryBy.value=3DsNextSummary;
	}
	if (sSummaryBy!=3D0) {
		SubmitWithFilterItem(sSummaryBy,iID);
	}
} // goSummary


function goDrillDown(sSummaryBy,iID) {
	var f=3Ddocument.forms[0];
	ResetHiddenFields();
	switch(sSummaryBy) {
		case 'grade':
		f.SummaryBy.value=3D'subject';
		break;
		case 'subject':
		f.SummaryBy.value=3D'school';
		if (typeof(bIsPLC)!=3D'undefined') {
			f.SummaryBy.value=3D'grade';
		}
		break;
		case 'school':
		if (typeof(bIsPLC)!=3D'undefined') {
			f.SummaryBy.value=3D'grade'; // plc
		} else {
			f.SummaryBy.value=3D'teacher';
		}
		break;
		case 'teacher':
		f.SummaryBy.value=3D'grade';
		break;
		//default:
	}

	// all drilldowns !set
	// FIX: if (f.GradeID.value=3D=3D'' || f.SubjectID.value=3D=3D'' || =
f.SchoolID.value=3D=3D'') {
	if ( ! ((document.forms[0].elements["lstGrade[]"] && =
document.forms[0].elements["lstGrade[]"].value!=3D'') &&
	(document.forms[0].elements["lstSubject[]"] && =
document.forms[0].elements["lstSubject[]"].value!=3D'') &&
	(document.forms[0].elements["lstSchool[]"] && =
document.forms[0].elements["lstSchool[]"].value!=3D'')	)  ) {
		// advance thru previously set drill-down values
		if (f.SummaryBy.value=3D=3D'grade' && =
document.forms[0].elements["lstGrade[]"] && =
document.forms[0].elements["lstGrade[]"].value!=3D'') {
			f.SummaryBy.value=3D'subject';
		}
		if (f.SummaryBy.value=3D=3D'subject' && =
document.forms[0].elements["lstSubject[]"] && =
document.forms[0].elements["lstSubject[]"].value!=3D'') {
			f.SummaryBy.value=3D'school';
			//alert('now f.SB.v:'+f.SummaryBy.value);
		}
		if (f.SummaryBy.value=3D=3D'school' && =
document.forms[0].elements["lstSchool[]"] && =
document.forms[0].elements["lstSchool[]"].value!=3D'') {
			if (typeof(bIsPLC)!=3D'undefined') {
				f.SummaryBy.value=3D'grade'; // plc
			} else {
				f.SummaryBy.value=3D'teacher';
			}
		}
		if (f.SummaryBy.value=3D=3D'teacher' && =
document.forms[0].elements["lstTeacher[]"] && =
document.forms[0].elements["lstTeacher[]"].value!=3D'') {
			f.SummaryBy.value=3D'grade';
		}
		if (f.SummaryBy.value=3D=3D'grade' && =
document.forms[0].elements["lstGrade[]"] && =
document.forms[0].elements["lstGrade[]"].value!=3D'') {
			f.SummaryBy.value=3D'subject';
		}
		if (f.SummaryBy.value=3D=3D'subject' && =
document.forms[0].elements["lstSubject[]"] && =
document.forms[0].elements["lstSubject[]"].value!=3D'') {
			f.SummaryBy.value=3D'school';
		}
	} // all drilldowns !set
	f.results.value=3D'full';
	if (sSummaryBy!=3D0) {
		SubmitWithFilterItem(sSummaryBy,iID);
	}
	//f.Page.value=3D1;//AE this page var removed so remove this =
erroraneous call...
	//f.submit(); //AE SubmitWithFilterItem now submits form
}

function SubmitWithFilterItem(sSummaryBy,iID) {
	//AE: call UIDynamic selects instead of selectItem
	if ( sSummaryBy=3D=3D'grade' ) {
		//selectItem('FilterGrades_'+iID,'FilterGrades[]');
		SubmitForm({fields : { "FilterGrades" : [ iID] } } );
	}
	if ( sSummaryBy=3D=3D'school' ) {
		//selectItem('FilterSchools_'+iID,'FilterSchools[]');
		SubmitForm({fields : { "FilterSchools" : [ iID] } } );
	}
	if ( sSummaryBy=3D=3D'schooltype' ) {
		//selectItem('FilterSchoolTypes_'+iID,'FilterSchoolTypes[]');
		SubmitForm({fields : { "FilterSchoolTypes" : [ iID] } } );
	}
	if ( sSummaryBy=3D=3D'subject' ) {
		//selectItem('FilterSubjects_'+iID,'FilterSubjects[]');
		SubmitForm({fields : { "FilterSubjects" : [ iID] } } );
	}
	if ( sSummaryBy=3D=3D'site' ) {
		//selectItem('FilterSites_'+iID,'FilterSites[]');
		SubmitForm({fields : { "FilterSites" : [ iID] } } );
	}
	if ( sSummaryBy=3D=3D'teacher' ) {
		//selectItem('FilterTeachers_'+iID,'FilterTeachers[]');
		SubmitForm({fields : { "FilterTeachers" : [ iID] } } );
	}
}

function =
goReportGraph(sChartType,iSubjectID,iGradeID,iSchoolID,iTeacherID,sSummar=
yBy) {
	ResetHiddenFields();
	var f =3D document.forms[0];
	var sOldSummaryBy=3Df.SummaryBy.value;
	var sOldChartType=3Df.results.value;

	f.target=3D'_blank';
	f.results.value=3DsChartType;
	f.SubjectID.value=3DiSubjectID;
	f.GradeID.value=3DiGradeID;
	f.SchoolID.value=3DiSchoolID;
	//f.TeacherID.value=3DiTeacherID;
	f.SummaryBy.value=3DsSummaryBy;
	f.submit();
	//reset
	f.target=3D'_self';
	f.SummaryBy.value=3DsOldSummaryBy;
	f.results.value=3DsOldChartType;

	return false;
}

function getMouseXY(e){
	var posx =3D 0,posy =3D 0;
	if(e =3D=3D null){
		e =3D window.event;
	}
	if(e.pageX || e.pageY){
		posx =3D e.pageX;
		posy =3D e.pageY;
	} else if(e.clientX || e.clientY){
		if(document.documentElement.scrollTop){
			posx =3D e.clientX+document.documentElement.scrollLeft;
			posy =3D e.clientY+document.documentElement.scrollTop;
		} else{
			posx =3D e.clientX+document.body.scrollLeft;
			posy =3D e.clientY+document.body.scrollTop;
		}
	}
	return {x: posx, y: posy };
}

//returns the size of the client's screen
function getViewportXY() {
	var myWidth =3D 0, myHeight =3D 0;
	if( typeof( window.innerWidth ) =3D=3D 'number' ) {
		//Non-IE
		myWidth =3D window.innerWidth;
		myHeight =3D window.innerHeight;
	} else if( document.documentElement && ( =
document.documentElement.clientWidth || =
document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth =3D document.documentElement.clientWidth;
		myHeight =3D document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || =
document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth =3D document.body.clientWidth;
		myHeight =3D document.body.clientHeight;
	}
	return { x : myWidth, y : myHeight };
}

//returns how far the client has scrolled x and y for the page
function getScrollXY() {
	var scrOfX =3D 0, scrOfY =3D 0;
	if( typeof( window.pageYOffset ) =3D=3D 'number' ) {
		//Netscape compliant
		scrOfY =3D window.pageYOffset;
		scrOfX =3D window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || =
document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY =3D document.body.scrollTop;
		scrOfX =3D document.body.scrollLeft;
	} else if( document.documentElement && ( =
document.documentElement.scrollLeft || =
document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY =3D document.documentElement.scrollTop;
		scrOfX =3D document.documentElement.scrollLeft;
	}
	return {x :  scrOfX, y : scrOfY };
}

// sets the cursor selection inside a text input or textarea
function setSelection( oElement, iStart, iEnd ){
	if( ! iEnd ){
		iEnd =3D iStart;
	}
	if( oElement.setSelectionRange ){
		try{
			oElement.setSelectionRange( iStart, iEnd );
		}
		catch( e ){
			return false;
		}
		return true;
	}
	else if( oElement.createTextRange ){
		var range =3D oElement.createTextRange();
		range.collapse( true );
		range.moveEnd( 'character', iEnd );
		range.moveStart( 'character', iStart );
		range.select();
	=09
		return true;
	}
	else{
		return false;
	}
}

// inserts text inside a text input or textarea at the cursor location
function insertTextAtCursor( vElement, sText ){
	var oElement =3D vElement;
	if( typeof oElement =3D=3D 'string' ){
		oElement =3D document.getElementById( oElement );
	}
	if( sText ){
		if( oElement.selectionStart || oElement.selectionStart =3D=3D=3D 0 ){
			var iCursorPosition =3D oElement.selectionStart;
			var sCurrentText =3D oElement.value;
			if( sCurrentText.length ){
				var sBeforeText =3D sCurrentText.substring( 0, iCursorPosition );
				var sAfterText =3D sCurrentText.substring( iCursorPosition, =
sCurrentText.length );
				oElement.value =3D sBeforeText + sText + sAfterText;
			}
			else{
				oElement.value =3D sText;
			}
			setSelection( oElement, iCursorPosition + sText.length );
			oElement.focus();
		}
		else if( document.selection ){
			oElement.focus();
			var range =3D document.selection.createRange();
			range.text =3D sText;
		}
	}
}

function addClass(el, className){
	el.className +=3D ' ' + className;
}

function removeClass(el, className){
	el.className =3D el.className.replace(className+' ', '');
	el.className =3D el.className.replace(' '+className, '');
	el.className =3D el.className.replace(className, '');
}

function swapClass(el, add, remove){
	el.className =3D el.className.replace(remove, add);
}

//TR 11/18/08
// Wrapper function for replacing the innerHTML of an html tag with the =
reults of an AJAX call
function ReplaceInnerHTML(sContainerID, sURL, aParameters, =
sLoadingContent) {
	if (!sLoadingContent) {
		sLoadingContent =3D GetLoadingContent();
	}
    new Ajax.Updater(sContainerID,
    				 sURL,
    				 {
    					method: 'post',
    					parameters: aParameters,
    					onLoading:function(){
    						$(sContainerID).innerHTML =3D sLoadingContent;
    					}
    				 }
    				);=09
}
function GetLoadingContent(aAttributes) {
	aAttributes =3D Object.extend({
		'class': 'Loading'
	}, aAttributes || {});
	sAttributes =3D '';
	$H(aAttributes).each(function(attr){
		sAttributes +=3D ' ' + attr.key + '=3D"' + attr.value + '"';
	});
	return '<div'+sAttributes+'><div class=3D"Spinner"><img =
src=3D"/common_images/spinner.gif?v=3D' + ATLAS_VERSION + =
'"/></div></div>';=20
}
function log(sString) {
}
String.prototype.nl2br =3D function() {
	return this.replace( /\n/g, "<br />" );
};
String.prototype.br2nl =3D function() {
	return this.replace( /\<br ?\/?\>\n?/g, "\n" );
};
var aErrorEmailsSent =3D [];
/*
*	Custom Error handling for Javascript errors
*/
window.onerror =3D function onerror(msg, errURL, line) {
	// JR 4/22/2010 - only send one notification email per message per page
	for(var i =3D 0; i < aErrorEmailsSent.length; i++){
		if(aErrorEmailsSent[i] =3D=3D msg){
			return;
		}
	}
	aErrorEmailsSent.push(msg);
=09
	errURL =3D errURL || window.location.href;
=09
	if (typeof Ajax !=3D "undefined") {	//using prototype library
		var sStackTrace =3D printStackTrace();
		var sLogURL =3D '/c/error/jsError.php';
		var sForm =3D '';
		if (typeof document.forms[0] !=3D "undefined") {
			sForm =3D Form.serialize(document.forms[0]);
		}
		new Ajax.Request(sLogURL, {
			parameters: {'url': errURL, 'msg': msg, 'line': line, =
'formVariables': sForm, 'stack[]': sStackTrace}
		});
	}
};

//AE 3/10/09 moved this out of tabldnd.js, to allow drag and drop in =
embedded pages=20
var ATLAS_HANDLER_QUEUE =3D {
	onmousemoves: [],
	onmouseups: [],
	addHandler: function addHandler(sType, f) {
		switch (sType) {
			case 'onmousemove':
				=
ATLAS_HANDLER_QUEUE.onmousemoves[ATLAS_HANDLER_QUEUE.onmousemoves.length]=
 =3D f;
				break;
			case 'onmouseup':
				=
ATLAS_HANDLER_QUEUE.onmouseups[ATLAS_HANDLER_QUEUE.onmouseups.length] =
=3D f;
				break;
			default:
				throw "Can't handle a ".sType;
		}
	},
	init: function init() {
		document.onmousemove =3D function onmousemove(ev) {
			for (var i =3D 0; i < ATLAS_HANDLER_QUEUE.onmousemoves.length; i++) {
				f =3D ATLAS_HANDLER_QUEUE.onmousemoves[i];
				f(ev);
			}
		};
		document.onmouseup =3D function onmouseup(ev) {
			for (var i =3D 0; i < ATLAS_HANDLER_QUEUE.onmouseups.length; i++) {
				f =3D ATLAS_HANDLER_QUEUE.onmouseups[i];
				f(ev);
			}
		};
	}
};

ATLAS_HANDLER_QUEUE.init();

function EvalJavaScript( sJavaScript ){
	// JR 7/16/2009 - IE needs to use execScript to eval in global context
	try{
		if( window.execScript ){
			window.execScript( sJavaScript );
		}
		else{
			window.eval( sJavaScript );
		}
	}
	catch(e){
		window.onerror('EvalJavaScript: ' + e.message, e.lineNumber, =
sJavaScript);
	}
}

/**
 * Given the Name of a Form Element, this function returns the element's =
value from any form on the Page.
 * @param string sName
 * @return value
 */
function GetValue( sName ){
	if( sName ){
		var oElementByName =3D $(sName);
		if( oElementByName ){
			return $F( oElementByName );
		}
		var oElementByForm =3D $$('form').find( function( form ){
			return form[sName];
		} );
		if( oElementByForm && oElementByForm[sName] ){
			return $F( oElementByForm[sName] );
		}
	}
	return '';
}

/**
 * Toggle Check Boxes state.
 * @param string sCheckBoxesSelector CSS Selector for Check Boxes.
 * @return  boolean bChecked
 */
function toggleCheck( sCheckBoxesSelector ){
	var aCheckBoxes =3D $$( sCheckBoxesSelector );
	var bChecked =3D AllCheckBoxesChecked(sCheckBoxesSelector);
	aCheckBoxes.each( function( oCheckBox ){
		oCheckBox.checked =3D !bChecked;
	} );
	return bChecked;
}
/**
 * Check state of checkboxes
 * @param sCheckBoxesSelector
 * @return boolean
 *  returns true if all are checked
 * =20
 */
function AllCheckBoxesChecked(sCheckBoxesSelector) {
	var aCheckBoxes =3D $$( sCheckBoxesSelector );
	aChecked =3D aCheckBoxes.select(function( oCheckBox ){
		return oCheckBox.checked;
	});
	return ((aCheckBoxes.length > 0) &&(aCheckBoxes.length =3D=3D =
aChecked.length));
	/*return aCheckBoxes.find( function( oCheckBox ){
		return ! oCheckBox.checked;
	} ) ? true : false;*/=09
}
/**
 * Button to check all radio buttons and also uncheck all radio buttons
 * @param string sButtonName
 * @return string
 */
function checkAllButtons(sButtonName,sCheckBoxesSelector){
	var button =3D $(sButtonName);
	if(button){
		if(toggleCheck(sCheckBoxesSelector)){
			button.innerHTML =3D  "Check All";
		}else{
			button.innerHTML =3D 'Uncheck All';
		}
	}
}
function SetCheckAllButtonText(sButtonName,sCheckBoxesSelector) {
	var button =3D $(sButtonName);
	if (button) {
		if(AllCheckBoxesChecked(sCheckBoxesSelector)){
			button.innerHTML =3D 'Uncheck All';
		}else{
			button.innerHTML =3D  "Check All";
		}
	}
}

/**
 * Button to change the "checkall" button when the last box is =
checked/unchecked
 * @param string sButtonName
 * @param string SCheckBoxesSelector
 * @return string
 */
function changeCheckButton(sButtonName,sCheckBoxesSelector){
		var button =3D $(sButtonName);
		var aCheckBoxes =3D $$( sCheckBoxesSelector );
		var bChecked =3D aCheckBoxes.find( function( oCheckBox ){
			return !oCheckBox.checked;
		} ) ? true : false;
		if(button) {
			if(bChecked) {
				button.innerHTML =3D 'Check All';
			}else{
				button.innerHTML =3D 'Uncheck All';
			}
		}
		return bChecked;
	}=20

/**
 * check Check Boxes states.
 * @param string sCheckBoxesSelector CSS Selector for Check Boxes.
 * @return boolean bChecked
 */
function checkCheckBoxes( sCheckBoxesSelector ){
	var aCheckBoxes =3D $$( sCheckBoxesSelector );
	var bChecked =3D aCheckBoxes.find( function( oCheckBox ){
		return oCheckBox.checked;
	} ) ? true : false;
	if(!bChecked) {
		alert('Please check at least one item.');
	}
	return bChecked;
}=20

/**
 * pulling from page.php into here
*/
var autoSaveOnUnload =3D false;
function enableAutoSaveOnUnload(enable){
	autoSaveOnUnload =3D enable;
	return true;
}
function fieldChanged(e) {
	if (!autoSaveOnUnload) { /*AE 7/21/09 fix bug # 8660 Autosave doesnt =
save for non RTE site */
		enableAutoSaveOnUnload(true);
	}//AE 10/8/09 move the following if block outside the above if block - =
autosave wasnt working since this needs to happen after autosave on =
unload enabled
	if( typeof tinyMCE !=3D "undefined" && tinyMCE.activeEditor && =
tinyMCE.activeEditor.isDirty() && !(e && e.type=3D=3D"submit") && typeof =
customFieldChanged =3D=3D "function"){
		customFieldChanged();
	}
}


/**
 * UIIframeAutoResize utility
 */
function AutoResizeIFrame_onload( vIframe, iMinHeight, =
bFromReadyStateChange ){
	var oIframe =3D $( vIframe );
	iMinHeight =3D iMinHeight || 0;
=09
	if( oIframe ){
		var oIframeDocument =3D oIframe.contentDocument || =
oIframe.contentWindow.document;
		if( oIframeDocument ){
			if( ! bFromReadyStateChange ){
				// Reset the iframe's height
				SetIFrameHeight( oIframe, 0 );
			}
			try{
				// Find the height of the internal page [add a few pixels for the =
scrollbar]
				var iIframeHeight =3D oIframeDocument.getElementsByTagName( 'body' =
)[0].scrollHeight + 25;
			}
			catch(e){
				// Set a default value and move on gracefully.
				var iIframeHeight =3D 150;
			}
			iIframeHeight =3D Math.max( iMinHeight, iIframeHeight );
			SetIFrameHeight( oIframe, iIframeHeight );
		}
		else if( iMinHeight > 0 ){
			oIframe.height =3D iMinHeight;
		}
	}
}
function AutoResizeIFrame_onreadystatechange( vIframe, iMinHeight ){
	var oIframe =3D $( vIframe );
=09
	if( oIframe && oIframe.readyState =3D=3D 'complete' ){
		AutoResizeIFrame_onload.defer( oIframe, iMinHeight, true );
	}
}
function SetIFrameHeight( oIframe, iHeight ){
	Element.setStyle( oIframe, {
		height: iHeight + 'px'
	} );
	oIframe.height =3D iHeight;
}

/**
 * Stripe all rows inside a table's tbody with oddRow/evenRow.
 * @param var vTable table element
 */
function StripeTable( vTable ){
	var oTable =3D $( vTable );
	var className =3D [ 'oddRow', 'evenRow' ];
	Element.childElements( Element.down( oTable, 'tbody' ) ).each( =
function( tr, index ){
		Element.removeClassName( tr, className[(index+1)%2] );
		Element.addClassName( tr, className[index%2] );
	} );
}

/**
 * Determine whether an email address is valid or not.
 * @param string sEmail Email Address to validate
 * @param boolean bAlert Show javascript alerts?
 * @return boolean
 */
function IsValidEmail( sEmail, bAlert ){
	var emailFilter =3D /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	if( ! sEmail ){
		if( bAlert ){
			alert( "Please enter an email address." );
		}
		return false;
	}
	else if( ! emailFilter.test( sEmail ) ){=20
		if( bAlert ){
			alert( "Please enter a valid email address." );
		}
		return false;
	}
	return true;
}

/**
 * Get the View URL for a given class.
 * @param string View Class Name
 * @param object Query Parameters
 * @return string
 */
function GetViewUrl( sViewClass, aParameters ){
	sViewClass =3D sViewClass || 'View';
	aParameters =3D aParameters || {};
	var sReturn =3D '/c/pi/v.php/' + sViewClass.gsub('_', '/');
	if( Object.values(aParameters).length ){
		sReturn +=3D '?' + Object.toQueryString(aParameters);
	}
	return sReturn;
}

aBeforeUnloadCallbacks =3D [];
/**
 * Adds a function to call before the browser's unload event fires.
 * If fBeforeUnloadCallback returns a result, this result is prompted to =
the user before they leave the page.
 * @param function fBeforeUnloadCallback
 */
function AddOnBeforeUnload(fBeforeUnloadCallback){
	if(!aBeforeUnloadCallbacks.length){
		window.onbeforeunload =3D function onbeforeunload(){
			for(var i =3D 0, result; i < aBeforeUnloadCallbacks.length; i++){
				result =3D aBeforeUnloadCallbacks[i]();
				if(result){
					return result;
				}
			}
		};
	}
	if(typeof fBeforeUnloadCallback =3D=3D 'function'){
		aBeforeUnloadCallbacks.push(fBeforeUnloadCallback);
	}
}

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://centergrove.rubiconatlas.org/c/js/PersistentItem.js?v=Atlas7.1.1b10709


var RenderViewCache =3D {};
/**
 * This function Renders a View into a Content Element via Ajax.
 * @param String aObject The Content Object that is passed to the server =
as an argument. REQUIRED ATTRIBUTE: "Type"
 * @param var vContentElement DOM Element to render the View into.
 * @param Object Configuration options and callbacks.
 */
function RenderView( aObject, vContentElement, aOptions ){
	aOptions =3D Object.extend({
		CacheParameters: true,
		FormSourceElement: vContentElement,
		onLoadCallback: Prototype.emptyFunction
	}, aOptions || {});
=09
	if(Object.isString(aOptions.onLoadCallback)){
		try{
			eval('aOptions.onLoadCallback =3D ' + aOptions.onLoadCallback);
		}
		catch(e){
			aOptions.onLoadCallback =3D Prototype.emptyFunction;
		}
	}
=09
	aObject =3D Object.extend( {
		Type: 'View'
	}, aObject || {} );
=09
	RenderViewCache[aObject.Type] =3D Object.extend( {
		Loading: false,
		Parameters: {}
	}, RenderViewCache[aObject.Type] || {} );
	if(!aOptions.CacheParameters){
		RenderViewCache[aObject.Type].Parameters =3D {};
	}
=09
	var oContentElement =3D $( vContentElement );
	var oFormSourceElement =3D $( aOptions.FormSourceElement );
=09
	if( oContentElement && ! RenderViewCache[aObject.Type].Loading ){
		for( var i =3D 0; i < window.beforeSubmits.length; i++ ) {
			if( typeof window.beforeSubmits[i] =3D=3D "function" ){
				window.beforeSubmits[i]();
			}
		}
	=09
		if( oFormSourceElement ){
			RenderViewCache[aObject.Type].Parameters =3D Object.extend( =
RenderViewCache[aObject.Type].Parameters, Form.serializeElements( =
Form.getElements( oFormSourceElement ), true ) );
		}
	=09
		for( var i =3D 0; i < window.afterSubmits.length; i++ ) {
			if( typeof window.afterSubmits[i] =3D=3D "function" ){
				window.afterSubmits[i]();
			}
		}
	=09
		RenderViewCache[aObject.Type].Parameters =3D Object.extend( =
RenderViewCache[aObject.Type].Parameters, aObject );
		RenderViewCache[aObject.Type].Parameters.toJSON =3D undefined;	// The =
toJSON method on this object kills the next Object.toJSON call.
	=09
		RenderViewCache[aObject.Type].Loading =3D true;
	=09
		// Maintain height and positioning while new content is loading...
		Element.makePositioned( oContentElement );
		var oldHeight =3D oContentElement.style.height || '';
	=09
		var onComplete =3D function onCompleteRenderView( results ){
			// ...and reset for new content
			Element.undoPositioned( oContentElement );
			Element.setStyle( oContentElement, { height: oldHeight } );
		=09
			RenderViewCache[aObject.Type].Loading =3D false;
		=09
			if( results ){
				if( results.View ){
					oContentElement.innerHTML =3D results.View;
				}
				else if( !results.Redirect ){
					oContentElement.innerHTML =3D 'An error has occurred. The =
appropriate persons have been notified and are addressing the problem.';
					window.onerror('Error Loading Content', '', results);
				}
			=09
				aOptions.onLoadCallback( results );
			=09
				if( results.JavaScript ){
					EvalJavaScript( results.JavaScript );
					results.JavaScript =3D '';	// Consume JavaScript after eval so it =
won't get evaled twice.
				}
			}
		};
	=09
		var oRequest =3D new ServerRequest();
		oRequest.addAction( 'View', RenderViewCache[aObject.Type].Parameters, =
'', {} );
		oRequest.onComplete =3D onComplete;
		oRequest.execute();
	=09
		var currentHeight =3D Math.max( Element.getHeight( oContentElement ), =
64 );	// Leave enough room for Loading Content
		currentHeight =3D Math.min( document.viewport.getHeight(), =
currentHeight );	// Don't exceed document height (Bug #11033)
		Element.setStyle( oContentElement, {
			height: currentHeight + 'px'
		} );
		oContentElement.innerHTML =3D GetLoadingContent();
	}
}

function ControllerRequest( aObject, sMethod, aOptions ){
	aOptions =3D Object.extend({
		FormSourceElement: $('page_form'),
		onLoadCallback: Prototype.emptyFunction,
		Message: 'Loading...'
	}, aOptions || {});
=09
	aObject =3D Object.extend( {
		Type: 'Controller'
	}, aObject || {} );
=09
	sMethod =3D sMethod || '';
=09
	var oFormSourceElement =3D $( aOptions.FormSourceElement );
=09
	if( oFormSourceElement ){
		YUIPopupFormProvider.SetLoadingModalForm(aOptions.Message);
	=09
		for( var i =3D 0; i < window.beforeSubmits.length; i++ ) {
			if( typeof window.beforeSubmits[i] =3D=3D "function" ){
				window.beforeSubmits[i]();
			}
		}
	=09
		var oParameters =3D Form.serializeElements( Form.getElements( =
oFormSourceElement ), true );
	=09
		for( var i =3D 0; i < window.afterSubmits.length; i++ ) {
			if( typeof window.afterSubmits[i] =3D=3D "function" ){
				window.afterSubmits[i]();
			}
		}
	=09
		oParameters =3D Object.extend( oParameters, aObject );
		oParameters.toJSON =3D undefined;	// The toJSON method on this object =
kills the next Object.toJSON call.
	=09
		var onComplete =3D function onCompleteControllerRequest( results ){
			if( results ){
				if( results.Controller ){
					YUIPopupFormProvider.DisposeModalForm();
				}
				else if( !results.Redirect ){
					YUIPopupFormProvider.SetErrorModalForm('An error has occurred. The =
appropriate persons have been notified and are addressing the =
problem.');
					window.onerror('Error Loading Content', '', results);
				}
			=09
				aOptions.onLoadCallback( results );
			=09
				if( results.JavaScript ){
					EvalJavaScript( results.JavaScript );
					results.JavaScript =3D '';	// Consume JavaScript after eval so it =
won't get evaled twice.
				}
			}
		};
	=09
		var oRequest =3D new ServerRequest();
		oRequest.addAction( 'Controller', oParameters, sMethod, {} );
		oRequest.onComplete =3D onComplete;
		oRequest.execute();
	}
}

/**
 * JavaScript reflection of Persistent Item used for saving=20
 * JS items
 *=20
 */
var PersistentItemList =3D Class.create({
	Type: 'PersistentItemList',
	BaseDirectory: '/c/',
	//Filters: {},
	//IDs : [],
	initialize: function initializePersistentItemList(sType, aFields, =
sPrimaryKey) {
		this.Type =3D sType || '';
		this.PrimaryKey =3D sPrimaryKey ? sPrimaryKey : =
this.Type.replace('List', 'ID');
		this.Populate =3D true;
		this.SetValues =3D false;				//use to set properties on PIList objects
		for (var sField in aFields) {
			this[sField] =3D aFields[sField];=09
		}=09
		this.Filters =3D {};
		this.IDs =3D [];
	},
=09
	addFilter: function addFilter(sFilter, vValue) {
		this.Filters[sFilter] =3D vValue;
	},
=09
	addID: function addID(iID){
		this.IDs.push(iID);
	},
=09
	saveSortOrder: function saveSortOrder(aOptions, aParameters){
		var aOptions =3D aOptions || {};
		var aParameters =3D aParameters || {};
		this.Populate =3D false;
		var inputNamePrefix =3D "Sort"+this.PrimaryKey;
		if (aOptions.table && Object.isElement(aOptions.table) && =
aOptions.table.id) {
			var sortVars =3D $$('#'+aOptions.table.id+' =
input[name^=3D"'+inputNamePrefix+'"]');
		}
		else {
			var sortVars =3D $$('.'+this.Type+'Table =
input[name^=3D"'+inputNamePrefix+'"]');
		}
		for(var i =3D 0; i < sortVars.length; i++){
			this.addID(sortVars[i].value);
		}
		if (this.IDs.length) {
			var oRequest =3D new ServerRequest();
                        this.IDs =3D this.IDs.uniq();
			oRequest.addAction('SaveSort',this,'AjaxSaveSort',aParameters);
			if (typeof aOptions['complete'] =3D=3D 'function') {
				oRequest.onComplete =3D aOptions['complete'].bind(this);
			}
			oRequest.execute();
		}
		this.Populate =3D true;
	}
});

var Controller =3D Class.create({
	Type: 'Controller',
	initialize: function initializeController(sController) {
		this.Type =3D sController;
	}
});

var View =3D Class.create({
	Type: 'View',
	initialize: function initializeView(sView) {
		this.Type =3D sView;
	}
});

var PersistentItem =3D Class.create({
	Type: 'PersistentItem',
	initialize: function initializePersistentItem(aFields) {
		this.Populate =3D false;
		for (var sField in aFields) {
			this[sField] =3D aFields[sField];=09
		}
	},
=09
	Delete: function Delete(aOptions,aParameters) {
		aOptions =3D aOptions || {};
		aParameters =3D aParameters || [];
		var oRequest =3D new ServerRequest();
		oRequest.addAction('Delete',this,'AsyncDelete',aParameters);
		if (typeof aOptions['complete'] =3D=3D 'function') {
			oRequest.onComplete =3D aOptions['complete'].bind(this);
		}
		oRequest.execute();
	},
=09
	Save: function Save(aOptions, aParameters){
		aOptions =3D aOptions || {};
		aParameters =3D aParameters || [];
		var oRequest =3D new ServerRequest();
		oRequest.addAction('Save',this,'AsyncSave',aParameters);
		if (typeof aOptions['complete'] =3D=3D 'function') {
			oRequest.onComplete =3D aOptions['complete'].bind(this);
		}
		oRequest.execute();=09
	}
});

var ServerAction =3D Class.create({
	initialize: function initializeServerAction(oObject, sMethod, =
aParameters) {
		this.Object =3D oObject;
		this.Method =3D sMethod;
		this.Parameters =3D aParameters || {};
	}
});

var ServerRequest =3D Class.create({
	Actions: {},
	Results: {},
	BaseDirectory: '/c/',
=09
	initialize: function initializeServerRequest() {
		this.Actions =3D {};
		this.Results =3D {};
	},
=09
	onComplete: function onComplete(){
		return;
	},
=09
	onSuccess: function onSuccess(){
		return;
	},
=09
	addAction: function addAction(sName, oObject, sMethod, aParameters) {
		this.Actions[sName] =3D new ServerAction(oObject, sMethod, =
aParameters);
	},
=09
	execute: function execute(oController) {
		if (document.location.href.indexOf('/c/') > 0) {
			this.BaseDirectory =3D '/c/';
		}
		else {
			this.BaseDirectory =3D '/i/';
		}
		sURL =3D this.BaseDirectory + 'pi/handler.php';
	=09
		new Ajax.Request(sURL, {
			method: 'post',
			onFailure: (function(transport){
				var sData =3D transport.responseText;
				this.onFailure(sData);
			}).bind(this),
			onComplete: (function onCompleteServerRequest(transport) {
				var sData =3D transport.responseText;
				try{
					this.Results =3D sData.evalJSON();
				}
				catch(e){
					this.Results =3D sData;
				}
				this.Controller =3D oController;
				this.onComplete(this.Results);
				if(this.Results.JavaScript){
					EvalJavaScript( this.Results.JavaScript );
					this.Results.JavaScript =3D '';	// JR 09/04/2009 - Consume =
JavaScript after eval so it won't get evaled twice.
				}
			}).bind(this),
			parameters: { 'PageType': window.PageType, 'Actions': =
Object.toJSON(this.Actions) }
		});
	}
});

var Teacher =3D Class.create(PersistentItem, {
	Type: 'Teacher',
	initialize: function initializeTeacher($super, aFields) {
		$super(aFields);
	},
	displayEmailLink: function displayEmailLink() {
		alert(this.save());
	}
});

var TeacherList =3D Class.create(PersistentItemList, {
	Type: 'TeacherList',
	initialize: function initializeTeacherList($super, aFields) {
		$super(aFields);
	}
});

/**
 *  Below is the general code that drives editing of persistent items =
through
 *  asynchronous javascript.
 *=20
 */
TableDelegates =3D {};
EventHandlersCreatedForTableDelegates =3D false;
function InitDelegateListener(){
	//don't do this more than once - avoid duplicate event handlers
	if (!EventHandlersCreatedForTableDelegates) {
		Element.observe( document, 'click', function(e){
			if(Event.isLeftClick(e) || Prototype.Browser.IE){
				$H( TableDelegates ).find( function( DelegateHash ){
					if( typeof DelegateHash.value =3D=3D 'object' && =
DelegateHash.value.HandleClick(e) ){
						return true;
					}
				} );
			}
		} );
		Element.observe( document, 'keypress', function(e){
			$H( TableDelegates ).find( function( DelegateHash ){
				if( typeof DelegateHash.value =3D=3D 'object' && =
DelegateHash.value.HandleKeyPress(e) ){
					return true;
				}
			} );
		} );
		EventHandlersCreatedForTableDelegates =3D true;
	}
}
/**
 * Below is the general code that drives editing of persistent items =
through
 * asynchronous javascript.  There is a three level inheritance =
hierarchy.
 * The top level is the AjaxEditTableItem which extends our Persistent =
Item class.
 * Each AjaxEditTableItem instantiation acts as the controller between =
the server and one
 * row of the admin table (the row representing that item).=20
 * This object is considered abstract, and is not intended to be =
instantiated.  It
 * contains the general code for editing, saving, updating, deleting =
items from the list.
 *=20
 * The two concrete subclasses of AjaxEditTableItem are =
AjaxEditTableModalFormItem and AjaxEditTableFastEntryItem
 * They represent two distinctly different "styles" of editing.  The =
first uses a Modal window containing a form=20
 * to create and edit items.  The modal form is defined by the server =
and sent back through Ajax and added to the page.
 * The second type, AjaxEditTableFastEntryItem, is edited inline by =
clicking on the items in the row and editing their contents.
 * This type of editing generates fewer requests, requires less waiting =
for the user, but is only capable of handling items
 * that have just a basic textual field.  An example of where this is =
used is all the Standard Item objects in standards maintenance.
 *  =20
 * The Edit Table Items are all managed by a delegate class =
AjaxEditTableDelegate.  There is one instance of this per type of item =
on the page.
 * For example, on Standards Maintenance, if there are nested tables of =
Content Areas and Content Sub Areas on one page
 * there will be two delegates, one for each type. The delegates are the =
"first responders" to click events on the page and will detect and call
 * the appropriate methods on the individual items based on what was =
clicked.
 *=20
 * Subclassing Notes:=20
 * Many times it is not enough to use the default objects, so they are =
written to be easy extended by subclassing.
 * An example is in Standards Maintenance, since there is so much custom =
behavior and nested tables, all of those objects are handled
 * by subclasses of the AjaxEditTableFastEntryItem. In general when you =
create a subclass, you will subclass both the delegate and either
 * AjaxEditTableModalFormItem or AjaxEditTableFastEntryItem depending on =
the base style of editing you are working with.
 *=20
 * Examples of both types of subclass can be found in the code base, and =
subclass considerations are incorporated in the comments in line in the =
functions below.
 */
var AjaxEditTableDelegate =3D Class.create({
	//Available Options:
	//type : class type for the delegated object
	//isFastEntry : set true to enable fast entry mode for single entry =
text click objects=20
	//entryFields : an array of form variable ID names that are used to =
create new items
	//sortable : a boolean indicating if this item is sortable or not
	//editFormClass : for popup editing, a class name to put on the edit =
form to hook into extra styling
	initialize: function initializeAjaxEditTableDelegate(options){=09
		this.items =3D {};
		this.Type =3D options.type || '';
		this.PrimaryKey =3D options.primaryKey ? options.primaryKey : =
this.Type+'ID';
		this.SingletonDelegate =3D options.SingletonDelegate || false;
		this.isFastEntry =3D options.isFastEntry || false;
		this.addRowOnBottom =3D options.addRowOnBottom || false;
		this.sortable =3D options.sortable || false;
		this.editFormClass =3D options.editFormClass || false;
		this.striped =3D ( options.striped !=3D=3D false );	// JR 10/21/2009 - =
Default striped value to true, #TA368
		this.ItemLabel =3D options.ItemLabel || 'Item';
		this.deleteConfirmation =3D options.deleteConfirmation || '';
		this.ImportHeader =3D options.ImportHeader || 'Import';
		if(this.isFastEntry){
			this.fastEntryField =3D options.fastEntryField;
			this.AutoAddFastEntryEditingRow();
		}
	=09
		if(!this.editFormClass){
			this.editFormClass =3D this.Type + 'EditForm';
		}
	=09
		//register self
		if(TableDelegates[this.Type] && !this.SingletonDelegate){
			var delegateIndex =3D $R(1,9).find(function(index){	//TODO: Current =
limit of 10 delegates per type - need more?
				if(!TableDelegates[this.Type + '_' + index]){
					TableDelegates[this.Type + '_' + index] =3D this;
					return true;
				}
			}, this);
		}
		else{
			TableDelegates[this.Type] =3D this;		=09
		}
	=09
		//create all items
		$$("."+this.Type).each(function(itemElement){
			this.RegisterItemElement(itemElement);
		}, this);
		if (options.FieldsToSetFromHiddenFields) {
			this.FieldsToSetFromHiddenFields =3D =
options.FieldsToSetFromHiddenFields;
		}
	},
=09
	/**
	 * this function will insert the item into the set of
	 * items managed by the delegate.  In general,
	 * this method is not meant to be overriden. Instead
	 * for custom types of objects override CreateItem with your
	 * delegate sublcass
	 */
	RegisterItemElement: function RegisterItemElement(element, fromAjax){
		var itemObj =3D this.CreateItem({
			'element' : element,=20
			'Type' : this.Type,
			'PrimaryKey' : this.PrimaryKey,
			'addRowOnBottom' : this.addRowOnBottom
		}, fromAjax);
		if(this.isFastEntry){
			itemObj.fastEntryField =3D this.fastEntryField;
		}
		if(fromAjax && this.sortable){
			AjaxEditTableItem.MakeRowDraggable(itemObj.row );
		}
		this.items[element.id] =3D itemObj;
		//this.items.set(element.id, itemObj);
		return itemObj;
	},

	/**
	 * When you create a custom subclass of item
	 * the delegate needs to override this function so that
	 * the correct type of item is returned.  The default implementation
	 * works for both of the general concrete sub classes
	 */
	CreateItem: function CreateItem(options, fromAjax){
		if(this.isFastEntry){
			return new AjaxEditTableFastEntryItem(options);
		}
		else{
			return new AjaxEditTableModalFormItem(options);
		}=09
	},
=09
	AutoAddFastEntryEditingRow: function AutoAddFastEntryEditingRow(){
		$$('textarea.new'+this.Type).each(function(textarea){
			if(textarea.value !=3D ''){
				=
this.items[AjaxEditTableItem.GetItemIDFromTargetElement(textarea)].AddEdi=
tingRow();
				textarea.value =3D '';
			}
		}, this);
	=09
		this.AutoAddFastEntryEditingRow.bind(this).delay(.75);	// Keep =
executing every .75 seconds
	},
=09
	ItemDeleted: function ItemDeleted(item){
		//TODO remove the item from the array
		//this.items =3D this.items.unset(item.element.id);
		this.RowCountChanged(-1);
	},
=09
	/**
	 * @param int numRows The number of rows that have changed. Typically =
[-1, 0, 1]
	 */
	RowCountChanged: function RowCountChanged(numRows){
		$$('.'+this.Type+'ListTable').each(function(table){
			if(this.striped){
				StripeTable(table);
			}
			var footerElem =3D Element.next(table, '.displayTableFooter');
			if(footerElem){
				var totalRecordsElem =3D Element.down(footerElem, '.TotalRecords');
				if(totalRecordsElem){
					var TotalRecords =3D parseInt(totalRecordsElem.innerHTML,10);
					var netRows =3D TotalRecords + numRows;
					var PagingLinks =3D Element.select(footerElem, =
'.UIPagingButtonPrev, .UIPagingButtonNext');
					if (PagingLinks.length && parseInt(netRows, 10) =3D=3D=3D 0) {
						SubmitForm();
					}
					totalRecordsElem.innerHTML =3D netRows;
				}
			}
		}, this);
	},
=09
	/**
	 * Returns true if the element is contained within the table
	 * managed by the delegate.  Useful for verying origin and types of =
clicks
	 * that are received
	 */
	VerifyChildContent: function VerifyChildContent(element){
		var parentPreHeader =3D Element.up( element, '.displayTablePreHeader' =
);	//handle preheader clicks
		var parentTable =3D parentPreHeader ? Element.next( parentPreHeader, =
'table.ajaxAdminTable' ) : Element.up( element, 'table.ajaxAdminTable' =
);
		if( ! parentTable ){
			parentTable =3D parentPreHeader ? Element.next( parentPreHeader, =
'table' ) : Element.up( element, 'table' );
		}
		if( parentTable && parentTable.className ){
			if( Element.hasClassName( parentTable, '.*ListTable' ) && ! =
Element.hasClassName( parentTable, this.Type+'ListTable' ) ){
				return false;
			}
		}
		var EditForm =3D $('EditForm');
		if( EditForm && EditForm.className ){
			if( Element.hasClassName( EditForm, '.*EditForm' ) && ! =
Element.hasClassName( EditForm, this.Type+'EditForm' ) ){
				return false;
			}
		}
		return true;
	},
=09
	/**
	 * Front line for event handling in this system.  This is called
	 * from the page's click handler.  If true is returned then it =
signifies
	 * that the event was handled, if false is returned it signifies that =
the event
	 * was not relevant to this table.
	 *=20
	 * Subclass Note: to create special click handler's do not override =
this method
	 * in your subclasses, rather there is a more convenient =
CustomClickHandler method that is
	 * passed the element directly.  This is what should be overriden
	 */
	HandleClick: function HandleClick(e){
		var element =3D Event.element(e);
	=09
		if(!this.VerifyChildContent(element)){
			 return false;
		}
	=09
		//allow subclasses a chance to respond
		if(this.CustomClickHandler(e)){
			return true;
		}

		if (Element.hasClassName(element, 'cancelDelete')) {
			AjaxEditTableItem.deletingItem.CloseDeleteDialog();
			return true;
		}
		//JG should be specifc to Standards, please remove from parent class
		else if (Element.hasClassName(element, 'notify') ) {
			//AjaxEditTableItem.deletingItem.ForceDelete(true);
			return true;
		}
		//JG should be specific to Standards, please remove from parent class
		else if (Element.hasClassName(element, 'dontNotifyDelete') || =
Element.hasClassName(element, 'forceDelete')) {
			AjaxEditTableItem.deletingItem.ForceDelete(false);
			return true;
		}
		else if(Element.hasClassName(element, 'saveButton') && =
AjaxEditTableItem.editingItem){
			AjaxEditTableItem.editingItem.Save();
			return true;
		}
		else if(Element.hasClassName(element, 'cancelEdit') && =
AjaxEditTableItem.editingItem){
			AjaxEditTableItem.editingItem.CancelEdit();
			return true;
		}
		var EditItemElement =3D Element.up(element,'.EditItem');
	=09
		//JG 4/2/09 support for external add buttons
		if(Element.hasClassName(element, 'AddNewButton')){
			this.NewItem.Edit();
		}
		else if(element.hasClassName('Import')){
			this.NewItem.Import();
		}
		else if (typeof this.items[element.id] =3D=3D "object" && =
(!AjaxEditTableItem.editingItem || this.isFastEntry)) {
			this.items[element.id].Edit();
		}
		else if(EditItemElement && typeof this.items[EditItemElement.id] =
=3D=3D "object" && (!AjaxEditTableItem.editingItem || =
this.isFastEntry)){
			this.items[EditItemElement.id].Edit();
		}
		else if(Element.hasClassName(element, 'AddNew') || =
Element.hasClassName(element, 'editButton')){
			=
this.items[AjaxEditTableItem.GetItemIDFromTargetElement(element)].Edit();=

		}
		else if (Element.hasClassName(element, 'collapser')) {
			AjaxEditTableItem.ToggleCollapse(element);
		}
		else if (Element.hasClassName(element, 'expandAll')){
			var parentTable =3D =
AjaxEditTableItem.GetParentWithTagForChild('TABLE', element);
			Element.select(parentTable, =
'.collapser').each(AjaxEditTableItem.Expand);
		}
		else if(Element.hasClassName(element, 'collapseAll')){
			var parentTable =3D =
AjaxEditTableItem.GetParentWithTagForChild('TABLE', element);
			Element.select(parentTable, =
'.collapser').each(AjaxEditTableItem.Collapse);	=09
		}
		else if(Element.hasClassName(element, 'delete') || =
Element.hasClassName(element, 'deleteButton')) {
			if (!this.deleteConfirmation || confirm(this.deleteConfirmation)) {
				=
this.items[AjaxEditTableItem.GetItemIDFromTargetElement(element)].Attempt=
Delete();
			}
		}
		else{
			return false;
		}
		//stop the event from further bubbling
		e.stop();	=09
		return true;
	},
=09
	/**
	 * This method is intended to be overriden by subclasses
	 * to perform specific events.=20
	 *=20
	 * If this method returns true then no more events will be triggered
	 * from the click, indicating that it was handled by the subclass
	 */
	CustomClickHandler: function CustomClickHandler(event){
		return false;
	},=20
=09
	/**
	 * Front line for keypress event handling in this system.
	 *=20
	 * For performance, we only handle certain keycodes for now.
	 */
	HandleKeyPress: function HandleKeyPress(e){
		var element =3D Event.element(e);
		// Only handle certain keycodes!
		if( e.keyCode =3D=3D Event.KEY_RETURN ){
			if(!this.VerifyChildContent(element)){
				 return false;
			}
		=09
			//allow subclasses a chance to respond
			if(this.CustomKeyPressHandler(element)){
				return true;
			}

			if(Element.match(element, 'input[type=3D"text"]') && =
!Element.hasClassName(element, 'yui-ac-input') && =
AjaxEditTableItem.editingItem){
				AjaxEditTableItem.editingItem.Save();
			}
			else{
				return false;
			}
		=09
			//stop the event from further bubbling
			e.stop();	=09
			return true;
		}
	},
=09
	/**
	 * This method is intended to be overriden by subclasses
	 * to perform specific events.=20
	 *=20
	 * If this method returns true then no more events will be triggered
	 * from the keypress, indicating that it was handled by the subclass
	 */
	CustomKeyPressHandler: function CustomKeyPressHandler(element){
		return false;
	},=20
=09
	/**
	 * For use in nested tables with dragging.  It is necessary
	 * for the case when a new item is created in the parent table
	 * and therefor an uninitialized sub table is passed to the page in =
ajax
	 * this method is necessary to initialize the drag and drop sorting on =
that table
	 */
	InitSubTable: function InitSubTable(objectType, newTable){
		var itemObj =3D =
TableDelegates[objectType].RegisterItemElement(Element.down(newTable, =
'.'+objectType));
		var sortTableID =3D 'tableDnD_'+newTable.id;
		window[sortTableID] =3D new TableDnD();
		window[sortTableID].init(newTable, this.SaveSort.bind(this));			=09
	},

	GetParameters: function GetParameters(){
		var aParameters =3D {};
		if (this.FieldsToSetFromHiddenFields) {
			$A(this.FieldsToSetFromHiddenFields).each(function(field) {
				var fieldValue =3D GetValue(field);
				if( fieldValue ){
					aParameters[field] =3D fieldValue;
				}
			},this);
		}
		return aParameters;
	},
=09
	/**
	 * A general and simple function to save the sort order
	 * on the table. Called by the TableDND code when there
	 * has been a drag event.
	 */
	SaveSort: function SaveSort(table){
		var ItemList =3D new =
PersistentItemList(this.Type+'List',{},this.PrimaryKey);
		ItemList.saveSortOrder({'complete': =
this.AfterSaveSort.bind(this),'table': table}, this.GetParameters());
	},
=09
	AfterSaveSort: function AfterSaveSort(){
		// override me
	}
});

/**
 * Abstract super class for all Editing controllers.
 * There are a few important properties to consider here
 * the most significant is the idea of a 'newElement'.  This is a place =
holder
 * row that is responsible for generating and placing new items in the =
list.
 */
var AjaxEditTableItem =3D Class.create({
	initialize: function initializeAjaxEditTableItem(options) {
		this.Type =3D options.Type || '';
		this.PrimaryKey =3D options.PrimaryKey ? options.PrimaryKey : =
this.Type+'ID';
		this.addRowOnBottom =3D options.addRowOnBottom;
		this.element =3D options.element || '';
		if (this.element) { //ensure element isnt undefined - we might not =
have an element
			this.row =3D AjaxEditTableItem.GetRowForChildElement(this.element);
			//set the boolean if the row is dedicated for adding elements
			this.newElement =3D Element.hasClassName(this.row,'newItemRow');=20
		}
		//creates the item instance
		this.SetItem();
		this.SetState('display');
	},
=09
	SetItem: function SetItem(){
		this.Item =3D new PersistentItem();
		this.Item.Type =3D this.Type;
	},
=09
	/**
	 * Begins the edit poperation.
	 */
	Edit: function Edit(){
		if (!this.BeforeEdit()) {
			return;
		}
		this.CommitEditingChanges();
		AjaxEditTableItem.editingItem =3D this;
		this.SetState('editing');
	},
=09
	/**
	 * This method is responsible for returning wheither or not
	 * it is valid to begin editing a given object.  Right now it just =
checks
	 * the state to ensure that it is display. You can override this
	 * to ensure any other necessary editing preconditions
	 */
	BeforeEdit: function BeforeEdit() {
		if (this.state !=3D 'display') {
			return false;
		}
		return true;
	},
=09
	/**
	 * Cancels the editing operation. Override this
	 * depending on your concrete subclass.
	 */
	CancelEdit: function CancelEdit(){
		//implement in sub class
	},
=09
	/**
	 * A quick convenience function that will
	 * save any existing changes.
	 */
	CommitEditingChanges: function CommitEditingChanges() {
		if(AjaxEditTableItem.editingItem !=3D null){
			AjaxEditTableItem.editingItem.Save();
			AjaxEditTableItem.editingItem =3D null;
		}
	},
=09
	/**
	 * A funciton to provide flexability to return the "edit souce row"
	 * The Edit Source Row is the row that generated some sort of editing.  =
It is used
	 * as a DOM point of reference for inserting new rows that are coming =
back from the server
	 * so they are inserted into the correct position in the table
	 */
	GetEditSourceRow: function GetEditSourceRow(){
		return this.row;
	},
=09
	/**
	 * Called before the save operation is sent to the server to confirm =
that
	 * it is a valid operation.  Subclasses may override this for extra =
checks
	 * to ensure saving is valid.  The default implementation simply checks
	 * the current state to ensure it is not already in save mode, =
preventing
	 * double saves from occurring
	 */
	BeforeSave: function BeforeSave(){
		if(this.state =3D=3D 'saving'){
			return false;
		}
		return true;
	},
=09
	/**
	 * Saves this item.  This involves sending a request to the server
	 * Once the request returns, the AfterSave method is called
	 */
	Save: function Save(aParams, aOptions) {
		aParams =3D aParams || [];
		aOptions =3D aOptions || {};
	=09
		if(!this.BeforeSave(aOptions)){
			return;
		}
		this.SetState('saving');
		var oRequest =3D new ServerRequest();
		oRequest.addAction('Save', this.Item, (aOptions.Method || =
'AsyncSave'), aParams);
		// here we need to create a closure around the editingRow incase a new =
one is created while this request is still in process
		var EditSourceRow =3D this.GetEditSourceRow();
		if ('EditSourceRow' in aOptions) { //allow custom specification of =
edit row (e.g. when copying instead of updating)
			EditSourceRow =3D aOptions.EditSourceRow;
		}
		oRequest.onComplete =3D this.AfterSave.bind(this, EditSourceRow, =
aOptions); =20
		oRequest.execute();
	},
=09
	/**
	 * This method is called on the response of the save from the server.
	 * It is passed, most importantly, the new HTML for the row that was =
created or edited.
	 * Currently if there is no ID present in the same we assume there was =
an error=20
	 * TODO: we really need to actually return error text to have better =
descriptions
	 * for the user what problem occurred.
	 */
	AfterSave: function AfterSave(sourceEditRow, aOptions, results) {
		//Handle Error message (e.g. duplicate)	=09
		if (isNaN(parseInt(results.Save.ID))) {
			this.SaveFailure(sourceEditRow, results);
		}
		else{
			this.SaveSuccess(sourceEditRow, aOptions, results);
		}
	},
=09
	/**
	 * Called in the event that there was no ID returned from a save.
	 * Use this function for any special clean up when things don't go =
right
	 * This can happen most often on duplicates.
	 */
	SaveFailure: function SaveFailure(sourceEditRow, results){
		this.Display();
		alert(results.Save.stripTags());
	},
=09
	/**
	 * Returned when we are given a successful save and
	 * new HTML for an updated row element
	 */
	SaveSuccess: function SaveSuccess(sourceEditRow, aOptions, results){
		var itemObj =3D null;
		if( aOptions.DontInsertNewItemRow ){
			if( ! this.newElement ){
				this.AfterInsertNewItemRow( sourceEditRow );
				this.GetDelegate().RowCountChanged(-1);
			}
		}
		else{
			itemObj =3D this.InsertNewItemRow(sourceEditRow, =
results.Save.AdminRow);
		}
	=09
		if(!this.Display() && !this.GetDelegate().isFastEntry && itemObj ){
			// If we didn't Display, we're still editing. Reset editingItem and =
continue.
			AjaxEditTableItem.editingItem =3D itemObj;
			AjaxEditTableItem.editingItem.SetState('editing');
		}
	},=09
=09
	/**
	 * Begins the delete process. Since many classes will have potenintal
	 * warning methods around delete, we name this AttemptDelete.  It calls
	 * the Persistent Item's delete function without a force flag enabled
	 */
	AttemptDelete: function AttemptDelete() {
		if (AjaxEditTableItem.deletingItem !=3D null) {
			return;
		}
		this.BeforeEdit();
		this.SetState('deleting');	=09
		this.Item.Delete({'complete' : this.AfterAttemptDelete.bind(this) });
		AjaxEditTableItem.deletingItem =3D this;
	},=09
=09
	/**
	 * Response for the attempt delete.  This can either
	 * see that the delete is successful and do nothing
	 * or it can alert the user of any warning message that the
	 * attempted delete returned
	 */
	AfterAttemptDelete: function AfterAttemptDelete(Results) {
		if (Results.Delete) {
			if (Results.Delete.Result){
				if (Results.Delete.Result =3D=3D 'OK') {
					this.AfterDelete();
				}
				else {
					YUIPopupFormProvider.ShowModalForm(Results.Delete.Result, {
						FormID : this.EditFormID,
						height: 350,
						CloseCallback : this.CloseButtonHit.bind(this),
						Header : 'Delete Warning'
					});
				}
			}
			else if(Results.Delete.Body){
				YUIPopupFormProvider.ShowModalForm(Results.Delete.Body, {
					FormID : this.EditFormID,
					height: 350,
					CloseCallback : this.CloseButtonHit.bind(this),
					Header : Results.Delete.Header || 'Delete Warning',
					Footer: Results.Delete.Footer
				});
			}
		=09
		}
		this.Display();
	},
=09
	CloseDeleteDialog: function CloseDeleteDialog() {
		//this.dialog.hide();
		//this.dialog =3D null;
		YUIPopupFormProvider.DisposeModalForm();
		AjaxEditTableItem.deletingItem =3D null;	=09
		this.SetState('display');
	},=09
=09
	ForceDelete: function ForceDelete(bNotify) {
		//JG 3/25/09 in case you need BeforeDelete it would go here.
		this.CloseDeleteDialog();
		this.Item.Delete({},{'FORCE_DELETE': true, 'Notify': bNotify});
		this.AfterDelete();
	},
=09
	/**
	 * After delete cleans this item.  It means
	 * that this item is now deleted and dead
	 */
	AfterDelete: function AfterDelete(){
		if(this.row && this.row.parentNode){
			Element.remove(this.row);
		}
		this.row =3D null;
		AjaxEditTableItem.deletingItem =3D null;
		//TODO inform the delegate of the deletion to free up resources
		this.GetDelegate().ItemDeleted(this);
	},
=09
	/**
	 * sets the row back into 'display mode', meaning it is at its neutral =
state
	 */
	Display: function Display() {
		if(this.state =3D=3D 'display' || this.state =3D=3D 'saving' || =
this.state =3D=3D 'canceling'){
			if(AjaxEditTableItem.editingItem =3D=3D this){
				AjaxEditTableItem.editingItem =3D null;
			}
			this.SetState('display');
			return true;
		}
		else {
			return false;
		}
	},	=09
	//end CRUD
=09
	/**
	 * This inserts a row into the table, eitehr a new row or the =
replacement of an edited row
	 * this registers the item with the delegate for future interaction =
from the user
	 */
	InsertNewItemRow: function InsertNewItemRow(sourceEditRow, rowHTML){
		if( this.row && this.row.parentNode ){
			rowHTML =3D '<table><tbody>' + rowHTML + '</tbody></table>';
			var renderdiv =3D new Element('div');
			renderdiv.innerHTML =3D rowHTML;
			//        div       table      tbody      row=20
			var row =3D renderdiv.firstChild.firstChild.firstChild;
			this.InsertRowIntoTable(sourceEditRow, row);
			this.AfterInsertNewItemRow(sourceEditRow, row);
			var itemObj =3D this.RegisterNewElement(row);
			this.GetDelegate().RowCountChanged(this.newElement ? 1 : 0);
		=09
			return itemObj;
		}
	},
	InsertRowIntoTable: function InsertRowIntoTable(sourceEditRow,row) {
		if(this.addRowOnBottom){
			Element.insert(sourceEditRow, {before: row});
		}
		else{
			Element.insert(sourceEditRow, {after: row});
		}
	},=09
	/**
	 * Clean up after inserting the new row.  A hook for subclasses
	 * to do anything necessary.
	 */
	AfterInsertNewItemRow: function AfterInsertNewItemRow(sourceEditRow, =
newRow){
		if(sourceEditRow && sourceEditRow.parentNode){
			Element.remove(sourceEditRow);
		}
	},
=09
	RegisterNewElement: function RegisterNewElement(row){
		//implement sub-class
	},=09
	/**
	 * sets the state variable of this item
	 * The state controles not only its appearance=20
	 * (as the color of the row will reflect its state) but
	 * also its behavior, as certain operations aren't permitted in
	 * different states.
	 */
	SetState: function SetState(newState){
		this.state =3D newState;
		var row =3D this.GetEditSourceRow();
		if(!row){
			return;
		}
		if(this.state =3D=3D 'deleting'){
			Element.addClassName(row, 'deleting');//'#ffdcd9;
		}
		else if(this.state =3D=3D 'saving'){
			Element.addClassName(row, 'saving');//#e8f2ff;
		}
		else if(this.state =3D=3D 'editing'){
			Element.addClassName(row, 'editing');//#e8f2ff;
		}
		else{
			Element.removeClassName(row, 'deleting');
			Element.removeClassName(row, 'editing');
			Element.removeClassName(row, 'saving');	=09
		}=09
	},
	GetDelegate: function GetDelegate(){
		//TODO: This method doesn't find the correct Delegate if there is more =
than one defined [keyed as Type_1, Type_2, etc]
		return TableDelegates[this.Item.Type];
	},
	CloseButtonHit: function CloseButtonHit(){
		if (AjaxEditTableItem.editingItem) {
			AjaxEditTableItem.editingItem.SetState('canceling');
			AjaxEditTableItem.editingItem.Display();
		}
		else if (AjaxEditTableItem.deletingItem) {
			AjaxEditTableItem.deletingItem.SetState('canceling');
			AjaxEditTableItem.deletingItem.Display();
		}
	},
	/**
	 * Get Parameters used for saving
	 * @return JSON Object
	 */
	GetSaveParameters: function GetSaveParameters() {
		return {};
	}
});

var AjaxEditTableModalFormItem =3D Class.create(AjaxEditTableItem, {
	EditFormID: 'EditForm',
	EditFormWidth: null,	// Width via CSS
	EditFormHeight: null,	// Auto-height
	EditFormFocusElement: null,	// Auto-focus first element
=09
	initialize: function initializeAjaxEditTableModalFormItem($super, =
options){
		$super(options);
		//these items are shared in this context
		this.row =3D this.element;=20
		if(this.newElement){
			//This is a trick for external buttons in Poup forms
			//We use this row as an anchor but do not show it
			//instead we regers the position with the delegate so that
			//when the "add new" button is hit it has reference
			//to delgate the task to this instance
			this.row.hide();
			this.GetDelegate().NewItem =3D this;
			this.Populate =3D false;
		}
		else if(this.element){
			//the item ID is on the row element for modal items
			if (this.element && this.element.id) {
				var idParts =3D this.element.id.split('_');	// Type_row_ID
				this.Item[this.PrimaryKey] =3D idParts[2];=09
			}
		}
	},
=09
	Edit: function Edit($super, aOptions){
		aOptions =3D aOptions || {};
		//need to refactor this into ShouldEdit, BeforeEdit change
		if (this.state =3D=3D 'editing'){
			return;
		}
		$super(aOptions);
		if (this.state !=3D 'editing') {//kloogy check - confirms super::Edit =
was successful
			return;
		}
		var oParameters =3D aOptions.Parameters || { }; //AE 7/20/09 allow =
passing parameters
		YUIPopupFormProvider.ModalContentRequest(this.Item, (aOptions.Method ? =
aOptions.Method : 'GetEditForm'), {
			FormID : this.EditFormID,
			FormClass : this.GetDelegate().editFormClass,
			Header : this.GetEditFormTitle(),
			width: this.EditFormWidth,
			height: this.EditFormHeight,
			FocusElement: this.EditFormFocusElement,
			CloseCallback : this.CloseButtonHit.bind(this),
			Parameters: oParameters,
			ShowCallback: this.ShowEditFormCallback.bind(this)
		});=09
	},
	Import: function Import() {
		this.BeforeEdit();
		if(this.state =3D=3D 'editing'){
			return;
		}
		AjaxEditTableItem.editingItem =3D this;
		this.SetState('editing');
	=09
		YUIPopupFormProvider.ModalContentRequest(this.Item, 'GetImportForm',{
			FormID : 'EditForm',
			FormClass : 'ImportForm',
			Header : this.GetDelegate().ImportHeader
		});	=09
	},
	ShowEditFormCallback: function ShowEditFormCallback() {
		// override
	},
	BeforeEdit: function BeforeEdit($super) {
		Object.extend(this.Item, this.GetDelegate().GetParameters());
		return $super();
	},
	/**
	 * Allows customs subclasses to change the form title=20
	 * for editing
	 */
	GetEditFormTitle: function GetEditFormTitle(){
		//TODO change default in some intelligent way
		if(this.newElement){
			return 'Create '+this.GetDelegate().ItemLabel;
		}
		return 'Edit '+this.GetDelegate().ItemLabel;
	},
=09
	CancelEdit: function CancelEdit(){
		YUIPopupFormProvider.DisposeModalForm();
		this.CloseButtonHit();
	},
=09
	BeforeSave: function BeforeSave( aOptions ) {
		aOptions =3D Object.extend({
			DisposeModalForm: true
		}, aOptions || {});
	=09
		if(!this.ValidateForm()){
			return false;
		}
	=09
		Object.extend(this.Item, this.GetDelegate().GetParameters());
	=09
		if ($('editItemForm')) {
			var formObjects =3D Form.getElements('editItemForm'); //AE 5/19/09 =
changed from $('editItemForm).getElements() -
			var isRadioObjectValueFound =3D [];
			var isArrayObjectCreated =3D [];
			for(var i =3D 0; i < formObjects.length; i++){
				var formEl =3D formObjects[i];
				// skip this form object if it doesn't have a name,=20
				// or if its radio group value has already been found
				if( ! formEl.name || isRadioObjectValueFound[formEl.name] ){
					continue;
				}
				else if( formEl.type =3D=3D 'radio' ){	// handle radio objects =
separately
					var radioValue =3D Form.getInputs( 'editItemForm', 'radio', =
formEl.name ).find( function( radio ){
						return radio.checked;
					} ).value;
					isRadioObjectValueFound[formEl.name] =3D true;
					this.Item[formEl.name] =3D radioValue;
				=09
					continue;
				}
				else if( /\[\]$/.test( formEl.name ) ){	// handle array-like fields =
that look like "fieldName[]"
					var formArrayName =3D formEl.name.replace( /\[\]$/, '' );
				=09
					if( ! isArrayObjectCreated[formArrayName] ){
						isArrayObjectCreated[formArrayName] =3D true;
						this.Item[formArrayName] =3D [];
					}
					this.Item[formArrayName].push( formEl.getValue() );
				=09
					continue;
				}
				else{	// Otherwise, we know that this is a "normal" form field that =
can be accessed by name, so we get its value.
					this.Item[formEl.name] =3D formEl.getValue();
				}
			}
		}
		if(aOptions.DisposeModalForm){
			YUIPopupFormProvider.DisposeModalForm();
		}
		return true;
	},
=09
	SaveSuccess: function SaveSuccess($super, sourceEditRow, =
aOptions,results){
		$super(sourceEditRow, aOptions, results);
		if(this.newElement){
			//clean out the old saved item so it doesn't show up =20
			//when the form loads again
			this.SetItem();
		}
	},
=09
	ValidateForm: function ValidateForm(){
		var missingFields =3D false;
		if($('editItemForm')){
			//reset any previously missing fields
			$('editItemForm').select('.requiredFieldRow').each(function(row){
				Element.removeClassName(row, 'MissingField');
			});
			var requiredFields =3D $('editItemForm').select('.required');
			for(var i =3D 0; i < requiredFields.length; i++ ){
				var UIDynamicSelectListWrapper =3D =
Element.up(requiredFields[i],'.UIDynamicSelectListWrapper');
				if(UIDynamicSelectListWrapper) {
					if (Element.select(UIDynamicSelectListWrapper, =
'.UIDynamicItemOption').length) {
						continue;
					}
				}
			=09
				if($F(requiredFields[i]) =3D=3D=3D '') {
					missingFields =3D true;
					var parentContainer =3D =
AjaxEditTableItem.GetParentWithClassForChild('requiredFieldRow', =
requiredFields[i]);
					if(parentContainer){
						Element.addClassName(parentContainer, 'MissingField');
					}
				}
			}
		}
		if(missingFields){
			alert('Please complete all required fields');
		}
		return !missingFields;
	},
=09
	AfterInsertNewItemRow: function AfterInsertNewItemRow($super, =
sourceEditRow, newRow){
		if(!this.newElement){
			$super(sourceEditRow, newRow);
		}
		if(typeof supersleight !=3D 'undefined' && newRow){	// IE PNG Fix
			supersleight.run(newRow);
		}
	},
=09
	RegisterNewElement: function RegisterNewElement(row){
		return this.GetDelegate().RegisterItemElement(row, true);
	}
});

var AjaxEditTableModalFormItemWithLineItems =3D =
Class.create(AjaxEditTableModalFormItem, {
	initialize: function =
initializeAjaxEditTableModalFormItemWithLineItems($super,options) {
		$super(options);
		//keep a count of the number of line items.  -1 means unknown
		this.LineItemCount =3D -1;
	},
	EditLineItems: function EditLineItems(){
		if(this.state =3D=3D 'editing'){
			return;
		}
		AjaxEditTableItem.editingItem =3D this;
		this.SetState('editing');
	=09
		YUIPopupFormProvider.ModalContentRequest(this.Item, =
this.GetEditLineItemsMethod(),{
			FormID : this.EditFormID,
			FormClass : 'EditLineItems',
			Header : this.GetEditLineItemHeader(),
			width: this.EditFormWidth,
			height: this.EditFormHeight,
			FocusElement: 'SimpleLineItem',
			ShowCallback : this.ShowEditLineItem.bind(this),
			CloseCallback : this.EditLineItemsClosed.bind(this)
		});=09
	},
	ShowEditLineItem: function ShowEditLineItem(results){
		//make the simple item draggable
		new Draggable($('SimpleItemDragContainer'), {=20
			revert : true,
			zindex: 15000	// JR 08/12/2009 Set z-index higher than YUI Popup Form
		});

		new Draggable($('ContentAreaContainer'), {=20
			revert : true,
			zindex: 15000,
			onStart:this.ReselectSelectList.bind(this) //AE 5/19/08 fix bug # =
8405 - first option gets selected
		});
		new Draggable($('ContentSubAreaContainer'), {=20
			revert : true,
			zindex: 15000,
			onStart:this.ReselectSelectList.bind(this) //AE 5/19/08 fix bug # =
8405 - first option gets selected
		});
		this.StandardsSelectionController =3D new =
StandardsSelectionController(this);
		this.NewStandardsLoaded();
	=09
		//make the container a drop target
		Droppables.add($('FieldContainer'),{
			hoverclass : 'dropHover',
			accept : 'StandardSelectionItem',
			onDrop : this.CreateLineItem.bind(this)
		});
		//minus 1 for place holder
		this.LineItemCount =3D =
$('FieldContainerScroll').childElements().size() - 1;
		this.InitSortableLineItems();
	},
	ReselectSelectList: function ReselectSelectList(draggable) {		//AE =
5/19/08 this method fixes bug # 8405 - first option gets selected =
(allegedly due to superghosting)
		for (i=3D0; i< draggable.element.childNodes.length; i++) {
			childNode =3D draggable.element.childNodes[i];
			if (childNode.tagName =3D=3D 'SELECT') {
				$(childNode.name).value =3D $F(childNode); //set the value using the =
value from the cloned selectlist
			}
		}
		this.StandardsSelectionController.SetupObservers();
	},
	//delegate call from standards selection controller
	NewStandardsLoaded: function NewStandardsLoaded(){
		$('StandardItems').select('.StateStandardLevel, =
.StateStandard').each(function(obj){
			new Draggable(obj, {
				revert : true,
				zindex: 15000,
				onStart: (function(){
					//Element.setStyle('StandardItems', {overflow: 'visible'});
				}).bind(this),
				onEnd: (function(){
					//Element.setStyle('StandardItems', {overflow: 'auto'});
				}).bind(this)
			});
		});
	},
	InitSortableLineItems: function InitSortableLineItems(){
		Position.includeScrollOffsets =3D true;
		Sortable.create('FieldContainerScroll',{
			tag: 'div',
			only: 'FieldRow',
			scroll: 'FieldContainerScroll',
			onUpdate: this.SaveLineItemListSortOrder.bind(this)
		});
	},
	SaveLineItemListSortOrder: function SaveLineItemListSortOrder() {
		var ItemList =3D this.GetNewLineItemList();//new =
PersistentItemList('RubricFieldList');
		ItemList.saveSortOrder();
	},
	EditLineItemsClosed: function EditLineItemsClosed(){
		AjaxEditTableItem.editingItem =3D null;
		this.SetState('display');
	},
	CreateLineItem: function CreateLineItem(draggable){
		var saveItem =3D new PersistentItem();
		//saveItem.ClassEvaluationID =3D this.Item.ClassEvaluationID;
		saveItem =3D this.SetPrimaryKeyOnLineItem(saveItem);
		saveItem.Type =3D this.GetLineItemType();//'RubricField';
		//save simple
		var idParts =3D draggable.id.split('_');
		var containerID =3D idParts[0]; //superghost draggable.id should be in =
form: clone_[realid]
		if(containerID =3D=3D 'SimpleItemDragContainer'){
			var name =3D $F('SimpleLineItem');=20
			if(name =3D=3D ''){
				alert('Please enter a name for the Simple Objective'); //TODO: make =
method to get alert?
				return;
			}
			saveItem.Name =3D name;
		}
		else if(containerID =3D=3D 'ContentAreaContainer'){
			saveItem.ContentAreaID =3D $F('ContentAreaID');
		}
		else if(containerID =3D=3D 'ContentSubAreaContainer'){
			saveItem.ContentSubAreaID =3D $F('ContentSubAreaID');
		}
		//save standards based
		else{		=09
		=09
			var type =3D idParts[0];
			var id =3D idParts[1];
			saveItem[type+'ID'] =3D id;
		}
		saveItem.Save({ 'complete' : =
this.oncomplete_CreateLineItem.bind(this)});
	},
=09
	oncomplete_CreateLineItem: function oncomplete_CreateLineItem(results){
		$('SimpleLineItem').setValue('');
		$('DropPlaceholder').hide();
		$('FieldContainerScroll').insert(results.Save.AdminRow);
		$('FieldContainerScroll').scrollTop =3D =
$('FieldContainerScroll').scrollHeight;
		this.InitSortableLineItems();
		this.LineItemCount++;
		//recreate the drop target becasue it is larger now
	},
=09
	EditLineItem: function EditLineItem(fieldContainer){
		if(!fieldContainer.hasClassName('editing')){
			fieldContainer.addClassName('editing');
			var editItem =3D this.GetLineItemFromElement(fieldContainer);
			editItem.Populate =3D true;
			var oRequest =3D new ServerRequest();
			oRequest.addAction('EditLineItem', editItem, =
'Edit'+this.GetLineItemType());
			oRequest.onComplete =3D this.oncomplete_EditLineItem.bind(this, =
fieldContainer);
			oRequest.execute();=09
		}	=09
	},
	oncomplete_EditLineItem: function =
oncomplete_EditLineItem(fieldContainer, results){
		fieldContainer.update(results.EditLineItem);
	},
=09
	UpdateLineItem: function UpdateLineItem(fieldContainer){
		if(!fieldContainer.hasClassName('saving')){
			fieldContainer.addClassName('saving');
			var saveItem =3D this.GetLineItemFromElement(fieldContainer);
			saveItem.GradingSchemeID =3D =
$F(this.GetLineItemType()+'GradingScheme_' + saveItem.ID);
			saveItem.Name =3D $F('LineItemName_' + saveItem.ID);
			var oRequest =3D new ServerRequest();
			var aParams =3D [{ 'FieldsToUpdate' : [ 'GradingSchemeID', 'Name' ] =
}];
			oRequest.addAction('UpdateLineItem', saveItem, =
'Update'+this.GetLineItemType(), aParams);
			oRequest.onComplete =3D this.oncomplete_UpdateLineItem.bind(this, =
fieldContainer);
			oRequest.execute();=09
		}=09
	},
	oncomplete_UpdateLineItem: function =
oncomplete_UpdateLineItem(fieldContainer, results){
		fieldContainer.update(results.UpdateLineItem);
		fieldContainer.removeClassName('saving');
		fieldContainer.removeClassName('editing');
	},
=09
	DeleteLineItem: function DeleteLineItem(fieldContainer){
		if(!fieldContainer.hasClassName('deleting')){
			fieldContainer.addClassName('deleting');
			var deleteItem =3D this.GetLineItemFromElement(fieldContainer);
			deleteItem.Delete({ complete : =
this.oncomplete_DeleteLineItem.bind(this, fieldContainer)});
		}=09
		this.LineItemCount--;
	},
	oncomplete_DeleteLineItem: function =
oncomplete_DeleteLineItem(fieldContainer, results){
		Effect.Fade(fieldContainer, {
			duration: .25
		});
		setTimeout((function(){
			Element.remove(fieldContainer);
		}).bind(this), 1000);
	},
=09
	GetLineItemFromElement: function =
GetLineItemFromElement(fieldContainer){
		var field =3D new PersistentItem();
		field.Type =3D this.GetLineItemType();//'RubricField';
		field.ID =3D fieldContainer.id.split('_')[1];
		field =3D =
this.SetPrimaryKeyOnLineItem(field);//field.ClassEvaluationID =3D =
this.Item.ClassEvaluationID;
		return field;
	}
});


var AjaxEditTableFastEntryItem =3D Class.create(AjaxEditTableItem, {
	initialize: function initializeAjaxEditTableFastEntryItem($super, =
options){
		$super(options);
		if(this.newElement){
			//our input isn't created on click - we always have a textarea in the =
new standard box
			this.input =3D Element.down(this.element, 'textarea');
			//if the user tabs to the box we need to handle it like a click;
			Event.observe(this.input, 'focus', =
this.CommitEditingChanges.bind(this));
		}
	},
=09
	SetItem: function SetItem($super){
		$super();
		if(!this.newElement){
			this.Item[this.PrimaryKey] =3D this.element.id.split("_")[1];
		}	=09
	},
=09
	BeforeEdit: function BeforeEdit($super) {
		if(this.newElement){
			this.CommitEditingChanges();
			return false;
		}
		return $super();
	},
=09
	Edit: function Edit($super){
		if (this =3D=3D AjaxEditTableItem.editingItem) {
			return;
		}
		$super();
		if (this.state !=3D 'editing') {//kloogy check - confirms super::Edit =
was successful
			return;
		}
		this.valueBeforeEditing =3D this.element.innerHTML;
		this.input =3D new Element('textarea',{'rows' : 2, 'cols' : 40, =
'tabindex' : 50 } );	//in-line editing effect
		Element.insert(this.input, =
this.element.innerHTML.br2nl().stripTags());
		Element.update(this.element, this.input);
		this.saveControls =3D AjaxEditTableItem.CreateEditControls();
		Element.insert(this.element, this.saveControls);
=09
		//JG 1/6/09: we don't want this to fire on update, rather do it when =
another item is selected
		Element.observe(this.input,'keyup', function(){
			AjaxEditTableItem.AutoGrowTextArea(this.input);
		}.bind(this));
		this.input.activate();
		AjaxEditTableItem.AutoGrowTextArea(this.input);
		this.SetState('editing');=09
	},
=09
	CancelEdit: function CancelEdit($super) {
		this.SetState('canceling');=09
		if (this.newElement) {=09
			Element.remove(this.editingRow.row);
			this.editingRow =3D null;
		}
		else {
			Element.insert(this.element, this.valueBeforeEditing);
			if(this.saveControls !=3D null){
				Element.remove(this.saveControls);
				this.saveControls =3D null;
			}
			if(this.input !=3D null){
				Element.remove(this.input);
				this.input =3D null;
			}
		}
		this.Display();
	},
	AddEditingRow: function AddEditingRow(){
		this.CommitEditingChanges();
		AjaxEditTableItem.editingItem =3D this;
	=09
		var newRow =3D new Element('tr');		=09
		Element.insert(newRow,new Element('td' , {'class' : 'draggableCell' =
}).update('&nbsp'));
		var itemCell =3D new Element('td',{ 'class' : =
'adminDisplayTableCell'});
	=09
		var newDiv =3D new Element('div', {'class' : this.element.className =
});
		var newInput =3D new Element('textarea',{ 'rows' : 2, 'cols' : 40, =
'tabindex' : 50});
	=09
		//push any existing text into the new text area
		if (this.input !=3D null) {
			newInput.update(this.input.value);
			this.input.value =3D '';
		}
		newDiv.update(newInput);
		Element.insert(itemCell, newDiv);
		Element.insert(newRow, itemCell);
	=09
		var ActionTd =3D new Element('td' , {'class' : 'adminDisplayTableCell' =
});
		Element.insert(ActionTd,  '&nbsp;');
		Element.insert(newRow,ActionTd);
		this.saveControls =3D AjaxEditTableItem.CreateEditControls();
		Element.insert(newDiv, this.saveControls);=09
		this.editingRow =3D { row : newRow, input : newInput };
		if(this.addRowOnBottom){
			this.row.parentNode.insertBefore(this.editingRow.row, this.row);
		}
		else{
			this.row.parentNode.insertBefore(this.editingRow.row, =
this.row.nextSibling);		=09
		}

		this.editingRow.input.focus();
		//Safari/chrome: move to end of text area
		if(this.editingRow.input.setSelectionRange){ 		=09
			=
this.editingRow.input.setSelectionRange(this.editingRow.input.value.lengt=
h,this.editingRow.input.value.length);
		}
		//IE: move to end of text area
		else {
			var range =3D this.editingRow.input.createTextRange();
			range.moveStart( 'character', this.editingRow.input.value.length - 0 =
);
			range.moveEnd( 'character', 0 );
			range.select();
		}
		Element.observe(this.editingRow.input,'keyup',function(){=20
			AjaxEditTableItem.AutoGrowTextArea(this.editingRow.input);=20
		}.bind(this));
		this.SetState('editing');
	},
=09
	GetEditSourceRow: function GetEditSourceRow(){
		if(this.newElement){
			if(this.editingRow !=3D null){
				return this.editingRow.row;
			}
			else{
				return null;
			}
		}
		else{
			return this.row;
		}
	},
		=09
	BeforeSave: function BeforeSave(){
		var entryField =3D this.fastEntryField;
		if (this.newElement) {
			var newValue =3D this.editingRow.input.value;
			Form.Element.disable(this.editingRow.input);
		}
		else if(this.input !=3D null){		=09
			var newValue =3D this.input.value;
			Form.Element.disable(this.input);
		}
		else{
			var newValue =3D this.element.innerHTML;
		}
		//if the value hasn't changed, or is blank cancel the edit
		if(newValue =3D=3D this.valueBeforeEditing || newValue.length =3D=3D =
0){
			this.CancelEdit();
			return false;
		}
	=09
		this.Item[this.fastEntryField] =3D newValue;
		if(this.saveControls !=3D null){
			Element.remove(this.saveControls);
			this.saveControls =3D null;
		}
		return true;
	},
	Save: function Save($super, aParams) {
		var aParams =3D aParams || [{ 'FieldsToUpdate' : [ 'Name'] }];
		return $super(aParams);
	},
	SaveFailure: function SaveFailure($super, sourceEditRow, results){
		$super(sourceEditRow, results);
		if (this.newElement) {
			Element.remove(sourceEditRow);=09
		}
		else {
			this.CancelEdit();
		}
	},
=09
	SaveSuccess: function SaveSuccess($super, sourceEditRow, aOptions, =
results){
		//super call addes element andr removes editing row operation in the =
super class
		if(this.newElement){
			$super(sourceEditRow, aOptions,results);
		}
		//otherwise just update the value, no need to replace the whole row.
		//here we need the new results from the server return so as to clean =
html
		else{
			this.element.innerHTML =3D results.Save.Value;
			this.Display();
		}
	},
	InsertRowIntoTable: function InsertRowIntoTable($super, =
sourceEditRow,row) {
		var tbody =3D Element.up(sourceEditRow, 'tbody');
		Element.insert(tbody, {bottom: row});
	},
	RegisterNewElement: function RegisterNewElement(row){
		var newContents =3D Element.down(row, "." + this.Item.Type);
		return TableDelegates[this.Item.Type].RegisterItemElement(newContents, =
true);
	}
});

/**** STATIC METHODS *******/
//All these methods can be called as static methods, state independent
AjaxEditTableItem.editingItem =3D null;
AjaxEditTableItem.deletingItem =3D null;
AjaxEditTableModalFormItem.EditingDialog =3D null;

AjaxEditTableItem.GetItemIDFromTargetElement =3D function =
GetItemIDFromTargetElement(element){
	var tblRow =3D AjaxEditTableItem.GetRowForChildElement(element);
	var editItem =3D Element.down(tblRow, ".EditItem");
=09
	if(!editItem){
		return tblRow.id;
	}
	return editItem.id;
};


AjaxEditTableItem.GetParentWithTagForChild =3D function =
GetParentWithTagForChild(tag, child){
	var trgParent =3D child;
	while(trgParent && trgParent.tagName && trgParent.tagName.toUpperCase() =
!=3D tag.toUpperCase()){
		trgParent =3D trgParent.parentNode;	=09
	}
	return trgParent;=09
};

AjaxEditTableItem.GetParentWithClassForChild =3D function =
GetParentWithClassForChild(className, child){
	var trgParent =3D child;
	while(trgParent){
		if(trgParent.className && Element.hasClassName(trgParent, className)){
			return trgParent;
		}
		trgParent =3D trgParent.parentNode;	=09
	}
	return false;=09
=09
};

AjaxEditTableItem.GetRowForChildElement =3D function =
GetRowForChildElement(child){
	return AjaxEditTableItem.GetParentWithTagForChild('TR', child);
};

AjaxEditTableItem.CreateEditControls =3D function CreateEditControls(){		=

	var saveButton =3D new Element('span',  { 'class' : 'saveButton =
AtlasButton'}).update('Save');
	var cancelButton =3D new Element('span',  { 'class' : 'cancelEdit =
AtlasButton'}).update('Cancel');
	var saveContainer =3D new Element('div', { 'class' : 'saveEditItem =
AtlasButtonWrapper'} );
	saveContainer.insert(saveButton);
	saveContainer.insert(cancelButton);
	return saveContainer;
};


AjaxEditTableItem.ToggleCollapse =3D function ToggleCollapse(collapser){
	if (collapser.src.indexOf('/common_images/arrow_expanded.png') > -1) {
		AjaxEditTableItem.Collapse(collapser);
	}
	else {
		AjaxEditTableItem.Expand(collapser);
	}=09
};

AjaxEditTableItem.Expand =3D function Expand(collapser){
	Element.show(collapser.id.replace('collapser','SubTable'));
	collapser.src =3D '/common_images/arrow_expanded.png?v=3D' + =
ATLAS_VERSION;
};

AjaxEditTableItem.Collapse =3D function Collapse(collapser){
	Element.hide(collapser.id.replace('collapser','SubTable'));
	collapser.src =3D '/common_images/arrow_collapsed.png?v=3D' + =
ATLAS_VERSION;
};
//end collapse/expand functions

AjaxEditTableItem.AutoGrowTextArea =3D function =
AutoGrowTextArea(textarea) {
	// Source :  =
http://stackoverflow.com/questions/7477/autosizing-textarea
	textarea.rows =3D 1;
	$A(textarea.value.split("\n")).each( function(line) {
		textarea.rows +=3D Math.ceil( line.length / textarea.cols ); // take =
into account long lines
	} );
};

AjaxEditTableItem.MakeRowDraggable =3D function MakeRowDraggable(row){
	var parentTable =3D AjaxEditTableItem.GetParentWithTagForChild('TABLE', =
row);
	if(parentTable.id) {
		var tableSortObject =3D window['tableDnD_'+parentTable.id];
		tableSortObject.makeDraggable(row.firstChild);
	}
};

/**
 * Overrides Ajax.InPlaceEditor to provide...
 * - submit event stopping capability
 * - onFormReady callback
 * - AtlasButton links
 */
if( Ajax.InPlaceEditor ){	// Only if Ajax.InPlaceEditor has been =
included
	Ajax.AtlasInPlaceEditor =3D Class.create(Ajax.InPlaceEditor, {
		handleFormSubmission: function($super, e) {
			var form =3D this._form;
		    var value =3D $F(this._controls.editor);
			var params =3D this.options.callback(form, value);
			if( params !=3D=3D false ){
				$super(e);
			}
			else if(e){
				Event.stop(e);
			}
		},
		enterEditMode: function($super,e) {
			$super(e);
			this.triggerCallback('onFormReady',this._form);
		},
		createControl: function(mode, handler, extraClasses) {
			var text =3D this.options[mode + 'Text'];
			var link =3D document.createElement('a');
			link.href =3D '#';
			link.appendChild(document.createTextNode(text));
			link.onclick =3D 'cancel' =3D=3D mode ? this._boundCancelHandler : =
this._boundSubmitHandler;
			link.className =3D 'AtlasButton editor_' + mode + '_link';
			if (extraClasses){
				link.className +=3D ' ' + extraClasses;
			}
			this._form.appendChild(link);
			this._controls[mode] =3D link;
		}
	});
}

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://centergrove.rubiconatlas.org/c/js/UIToolTip.js?v=Atlas7.1.1b10709


/**
 * JG 5/13/2009 New ToolTip Structure
 * JR 11/4/2009 Refactored this class and added some utility methods for =
manipulating Tooltips via JavaScript
 *=20
 * involves a singleton delegate listenign to mouse events on the page
 * This allows us to register content dynamically with the delegate as =
AJAX calls may
 * contain tool tips.  it also allows for lazy rendering of tool tip =
text to keep the DOM clean
 */
var ToolTipDelegate =3D Class.create( {
	CLASS_HAS_TOOL_TIP: 'hasToolTip',
=09
	initialize: function initializeToolTipDelegate(){
		this.tips =3D new Hash();
		this.display =3D $('ToolTipContainer');
	},
=09
	GetContent: function GetContent( key ){
		return this.tips.get( key );
	},
	=09
	SetKeyAndContent: function SetKeyAndContent( key, content ){
		this.tips.set( key, content );
	},
	=09
	RegisterKeyAndContent: function RegisterKeyAndContent( key, content ){
		this.SetKeyAndContent( key, content );
		var element =3D $( key );
		if( element ){
			Element.addClassName( element, this.CLASS_HAS_TOOL_TIP );
		=09
			Element.observe( element, 'mouseover', this.ShowToolTip.bind( this ) =
);
			Element.observe( element, 'mousemove', this.TrackToolTip.bind( this ) =
);
			Element.observe( element, 'mouseout', this.HideToolTip.bind( this ) =
);
		}
	},
	=09
	ShowToolTip: function ShowToolTip( e ){
		var element =3D this.GetToolTipElement( e );=20
		if( element ){
			var tip =3D this.GetContent( element.id );
			if(typeof tip =3D=3D 'function'){
				tip =3D tip(e);
			}
			if( tip ){
				this.display.update( tip );
				this.PositionToolTip( e );
				this.display.show();
			}
		}
	},
=09
	TrackToolTip: function TrackToolTip( e ){
		var element =3D this.GetToolTipElement( e );=20
		if( element ){
			this.PositionToolTip( e );
		}
		else{
			this.HideToolTip( e );
		}
	},
=09
	HideToolTip: function HideToolTip( e ){
		this.display.hide();
	},
=09
	PositionToolTip: function PositionToolTip( e ){
		//fix if the tip moves off screen
		var tipTop =3D ( e.pointerY() + 10 );
		var tipLeft =3D ( e.pointerX() + 10 );
		var screenBottom =3D document.body.scrollTop + =
document.body.clientHeight;
		var tipBottom =3D tipTop + this.display.offsetHeight;
		var screenRight =3D document.body.scrollLeft + =
document.body.clientWidth;
		var tipRight =3D tipLeft + this.display.offsetWidth;	=09
		if( tipBottom > screenBottom ){
			tipTop =3D e.pointerY() - 10 - this.display.getHeight();
		}
		if( tipRight > screenRight ){
			tipLeft =3D e.pointerX() - 10 - this.display.getWidth();
		}
		this.display.setStyle( {
			left : tipLeft + 'px',
			top : tipTop + 'px'
		} );
	},

	GetToolTipElement: function GetToolTipElement( e ){
		var element =3D Event.element( e );
		return Element.hasClassName( element, this.CLASS_HAS_TOOL_TIP ) ? =
element : Element.up( element, '.' + this.CLASS_HAS_TOOL_TIP );
	}
} );

ToolTipDelegate.GetInstance =3D function ToolTipDelegateGetInstance(){
	if( ! ToolTipDelegate._Instance ){
		ToolTipDelegate._Instance =3D new ToolTipDelegate();
	}
	return ToolTipDelegate._Instance;
};

------=_NextPart_000_05B2_01CB8252.F1A1E800
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://centergrove.rubiconatlas.org/c/js/YUIPopupFormProvider.js?v=Atlas7.1.1b10709

/**
 * This page containsstatic methods to provide and manage a consistent =
interface to=20
 * YUI modal forms for the way we handle them
 *
 */
YUIPopupFormProvider =3D new Object();

YUIPopupFormProvider.Dialog =3D null;
YUIPopupFormProvider.CSSFileAdded =3D false;
/**
 * Creates a modal popup around a request to a persistentitem method
 */
YUIPopupFormProvider.ModalContentRequest =3D function =
ModalContentRequest(object, method, options){
	method =3D method || '';
	options =3D options || {};
	//GetLoadingContent - shows spinner ( see /c/js/StandardFunctions.js)=20
	YUIPopupFormProvider.ShowModalForm(GetLoadingContent(), options);
	if(typeof options.ShowCallback !=3D 'function'){
		options.ShowCallback =3D function(){};
	}
	var FailureCallback =3D function FailureCallback(results){
		YUIPopupFormProvider.SetErrorModalForm();
		window.onerror('ModalContentRequest FailureCallback', '', results);
	};
	var ShowCallback =3D options.ShowCallback.wrap( function =
ShowCallback(callback, results){
		var dialog =3D YUIPopupFormProvider.Dialog;
		if( results.ModalForm && typeof results.ModalForm =3D=3D 'string' ){
			dialog.setBody( results.ModalForm );
		}
		else if( results.ModalForm && results.ModalForm.Body ){
			dialog.setBody( results.ModalForm.Body );
			if( results.ModalForm.Footer ){
				dialog.setFooter( results.ModalForm.Footer );
				Element.show( dialog.footer );
			}
		}
		else if( !results.Redirect ){
			FailureCallback(results);
		}
	=09
		if( results.JavaScript ){
			EvalJavaScript( results.JavaScript );
			results.JavaScript =3D '';	// JR 09/04/2009 - Consume JavaScript =
after eval so it won't get evaled twice.
		}
	=09
		callback(results);
	=09
		if(typeof supersleight !=3D 'undefined'){	// IE PNG Fix
			supersleight.run(dialog.element);
		}
	=09
		YUIPopupFormProvider.InitializeModalForm( {
			FocusElement: options.FocusElement,
			Height: options.height
		} );
	});
	if(!options.Parameters){
		options.Parameters =3D {};
	}
	var oRequest =3D new ServerRequest();
	oRequest.addAction('ModalForm', object, method, options.Parameters);
	oRequest.onComplete =3D ShowCallback;
	oRequest.onFailure =3D FailureCallback;
	oRequest.execute();
};

/**
 * Shows a basic modal form with the given content,
 * This is without an ajax call.
 *=20
 */
YUIPopupFormProvider.ShowModalForm =3D function ShowModalForm(content, =
options){
	options =3D options || {};
=09
	if( ! content ){
		YUIPopupFormProvider.SetErrorModalForm();
		return;
	}
=09
	//harvest options, set defaults
	var FormID =3D options.FormID || 'ModalForm';
	var FormClass =3D options.FormClass || '';
	var Header =3D options.Header || '&nbsp;';
	var Footer =3D options.Footer || '';
=09
	if(typeof options.CloseCallback !=3D 'function'){
		options.CloseCallback =3D Prototype.emptyFunction;
	}
	var DialogCloseCallback =3D options.CloseCallback.wrap(function =
_CloseCallback(callback){
		callback();
		YUIPopupFormProvider.DisposeModalForm.defer();
	});
	if(options.DestroyOnHide =3D=3D=3D false){
		// JR 08/18/2009 - Remember content's parent so we can re-insert the =
content to its expected DOM position.
		if( content.up && content.up() ){
			YUIPopupFormProvider.ContentParent =3D content.up();
		}
		else{
			YUIPopupFormProvider.ContentParent =3D =
YUIPopupFormProvider.GetModalContainer();
		}
		// JR 08/17/2009 - If we don't want to destroy the Dialog's content, =
hide the content and append it to ModalContainer before destroying the =
Dialog so that it can be reused.
		DialogCloseCallback =3D DialogCloseCallback.wrap(function =
_DialogCloseCallback(callback){
			var content =3D $( YUIPopupFormProvider.Dialog.body ).down();
			content.hide();
			YUIPopupFormProvider.ContentParent.appendChild( content );
		=09
			callback();
		});
	}
=09
	//construct the form to display while loading
	if(!YUIPopupFormProvider.CSSFileAdded){
		YUIPopupFormProvider.CSSFileAdded =3D true;
		Element.addClassName(document.body,'yui-skin-sam'); //IE can't handle =
calling the method on the object :( have to use this syntax instead of =
document.body.addclassName()
	}
=09
	var ModalForm =3D new Element('div', {'id' : FormID, 'class' : =
FormClass });
	var config =3D {
		underlay: 'none',
		modal: true,=20
		fixedcenter: true,=20
		visible: false,=20
		draggable: true,
		close: true,
		constraintoviewport: true,
		keylisteners: [
			new YAHOO.util.KeyListener(document, {keys: 27}, {fn: =
YUIPopupFormProvider.HideModalForm})
		]
	};
	//AE 6/25/09 if we are in an iframe - use mouse location instead of =
center...(bug #=20
	//JR 9/8/2010 - This kills popups if we're in an iframe that doesn't =
belong to us. We shouldn't have nested Popups anymore, anyway.
	//if (window.parent && window.parent.location.href !=3D =
window.location.href) {
	//	config.fixedcenter =3D false;
	//	if (options.event) {
	//		config.x =3D Event.pointerX(options.event);
	//		config.y =3D Event.pointerY(options.event);
	//		scrollTo(config.x,config.y);		=09
	//	}
	//}
=09
	if(options.width){
		config.width =3D options.width;
	}
	if (options.draggable) {=20
		config.draggable =3D options.draggable;
	}
	config.draggable =3D true;
	YUIPopupFormProvider.Dialog =3D new YAHOO.widget.Panel(ModalForm, =
config);
=09
	// Set Content
	YUIPopupFormProvider.Dialog.setBody(content);
	if( content.show ){
		content.show();
	}
=09
	// Set Header
	var dialogIframe =3D Element.down( YUIPopupFormProvider.Dialog.body, =
'iframe' );
	if( dialogIframe ){
		YUIPopupFormProvider.Dialog.setHeader('Loading...');
		YUIPopupFormProvider.Dialog.bodyIframe =3D dialogIframe;
		Element.setStyle( YUIPopupFormProvider.Dialog.body, {
			padding: '0',
			overflow: 'visible'
		} );
		var onload_dialogIframe =3D ( function onload_dialogIframe(e){
			if( YUIPopupFormProvider.Dialog ){
				YUIPopupFormProvider.Dialog.setHeader(Header);
			}
		} ).bindAsEventListener();
		Event.observe( dialogIframe, 'load', onload_dialogIframe );
		Event.observe( dialogIframe, 'readystatechange', ( function =
onreadystatechange_dialogIframe(e){
			if( Event.element(e).readystate =3D=3D 'complete' ){
				onload_dialogIframe(e);
			}
		} ).bindAsEventListener() );
	}
	else{
		YUIPopupFormProvider.Dialog.setHeader(Header);
	}
=09
	// Set Footer
	YUIPopupFormProvider.Dialog.setFooter(Footer);
	if( ! Footer ){
		Element.hide( YUIPopupFormProvider.Dialog.footer );
	}
=09
	// Render form
	=
YUIPopupFormProvider.Dialog.render(YUIPopupFormProvider.GetModalContainer=
());
	if(YUIPopupFormProvider.Dialog.dd){
		YUIPopupFormProvider.Dialog.dd.useShim =3D true;
	}
	YUIPopupFormProvider.Dialog.hideEvent.subscribe(DialogCloseCallback);
=09
	if( options.width ){
		Element.setStyle( YUIPopupFormProvider.Dialog.innerElement, {
			width: options.width + 'px'
		} );
	}
	if( options.height ){
		YUIPopupFormProvider.Dialog.maxHeight =3D options.height;	// Cache max =
height for ResizeModalForm.
	}
=09
	YUIPopupFormProvider.InitializeModalForm( {
		FocusElement: options.FocusElement,
		Height: options.height
	} );
	YUIPopupFormProvider.Dialog.show();
};

YUIPopupFormProvider.DisposeModalForm =3D function DisposeModalForm(){
	if(YUIPopupFormProvider.Dialog !=3D null){
		var dialogIframe =3D Element.down( YUIPopupFormProvider.Dialog.body, =
'iframe' );
		if( dialogIframe ){
			Element.remove( dialogIframe );
			YUIPopupFormProvider.Dialog.bodyIframe =3D null;
		}
		YUIPopupFormProvider.Dialog.destroy();=20
		YUIPopupFormProvider.Dialog =3D null;
	=09
		ToolTipDelegate.GetInstance().HideToolTip();	// JR 8/6/2010 - Global =
fix for "overly persistent tooltips" in modal popup windows.
	}
};

YUIPopupFormProvider.HideModalForm =3D function HideModalForm(){
	if(YUIPopupFormProvider.Dialog !=3D null){
		YUIPopupFormProvider.Dialog.hide();
	}
};

//this can only be used after a hide
YUIPopupFormProvider.UnhideModalForm =3D function UnhideModalForm(){
	if(YUIPopupFormProvider.Dialog !=3D null){
		YUIPopupFormProvider.Dialog.show();
	}
};

YUIPopupFormProvider.SetErrorModalForm =3D function SetErrorModalForm( =
errorMessage ){
	errorMessage =3D errorMessage || 'An error has occurred. Please try =
again.';
	if( YUIPopupFormProvider.Dialog ){
		YUIPopupFormProvider.Dialog.setBody( errorMessage );
	}
	else {
		YUIPopupFormProvider.ShowModalForm( errorMessage );
	}
	YUIPopupFormProvider.Dialog.setHeader( 'Error' );
	YUIPopupFormProvider.Dialog.setFooter( '<div =
class=3D"AtlasButtonWrapper"><a class=3D"AtlasButton" =
href=3D"javascript:YUIPopupFormProvider.HideModalForm()">Close</a></div>'=
 );
	Element.show( YUIPopupFormProvider.Dialog.footer );
	YUIPopupFormProvider.ResizeModalForm();
};

YUIPopupFormProvider.SetLoadingModalForm =3D function =
SetLoadingModalForm( loadingMessage ){
	loadingMessage =3D loadingMessage || 'Loading...';
	if( YUIPopupFormProvider.Dialog ){
		YUIPopupFormProvider.Dialog.setBody( GetLoadingContent() );
	}
	else {
		YUIPopupFormProvider.ShowModalForm( GetLoadingContent(), {
			FormID: 'LoadingModalForm'
		} );
	}
	YUIPopupFormProvider.Dialog.setHeader( loadingMessage );
	YUIPopupFormProvider.ResizeModalForm();
};

/**
 * This provides the same basic functionality as Prototype's =
Ajax.Request, but shows a YUI Modal Dialog while content is loading.
 */
YUIPopupFormProvider.ModalAjaxRequest =3D function ModalAjaxRequest( =
url, options ){
	YUIPopupFormProvider.SetLoadingModalForm();
=09
	new Ajax.Request( url, Object.extend( {
		onSuccess: function(){
			YUIPopupFormProvider.DisposeModalForm();
		},
		onFailure: function(){
			YUIPopupFormProvider.SetErrorModalForm();
		},
		onException: function(){
			YUIPopupFormProvider.SetErrorModalForm();
		}
	}, options || {} ) );
};

YUIPopupFormProvider.GetModalContainer =3D function GetModalContainer(){
	if( ! YUIPopupFormProvider._ModalContainer ){
		YUIPopupFormProvider._ModalContainer =3D $('page_form') || =
document.body;
	}
	return YUIPopupFormProvider._ModalContainer;
};

YUIPopupFormProvider.InitializeModalForm =3D function =
InitializeModalForm( aOptions ){
	aOptions =3D Object.extend( {
		Height: 0,
		FocusElement: null
	}, aOptions || {} );
=09
	var dialog =3D YUIPopupFormProvider.Dialog;
	if( dialog ){
		//Element.setStyle( dialog.body, { height: '' } );	// Reset dimensions
		dialog.maxHeight =3D aOptions.Height || dialog.body.scrollHeight;	// =
Reset maxHeight
		//if(!Prototype.Browser.IE){
		//	dialog.maxHeight -=3D 20;	// Padding
		//}
		YUIPopupFormProvider.ResizeModalForm();
	=09
		if( aOptions.FocusElement ){
			var focusElement =3D $(aOptions.FocusElement);
			if( focusElement ){
				try{
					focusElement.focus();
				}
				catch(e){}
			}
		}
		else{
			dialog.focusFirst();		// Sets focus to the first element in the =
Panel.
		}
		dialog.body.scrollTop =3D 0;	// Scrolls to the top in case of long =
content.
	}
};

YUIPopupFormProvider.ResizeModalForm =3D function ResizeModalForm(){
	var dialog =3D YUIPopupFormProvider.Dialog;
	if( dialog && dialog.maxHeight ){
		var viewportXY =3D getViewportXY();
		var footerHeight =3D (dialog.footer && Element.visible(dialog.footer)) =
? Element.getHeight(dialog.footer) : 0;
		var maxWidth =3D 99999;	// Infinity
		if( dialog.bodyIframe ){
			Element.setStyle( dialog.bodyIframe, {
				height: Math.min( dialog.maxHeight, viewportXY.y - footerHeight - 60 =
) + 'px'	// Allow room for the header and scrollbar
			} );
			maxWidth =3D viewportXY.x - 30;	// Allow room for the scrollbar
		}
		else{
			Element.setStyle( dialog.body, {
				height: Math.min( dialog.maxHeight, viewportXY.y - footerHeight - 80 =
) + 'px'	// Allow room for the header, scrollbar and padding
			} );
			maxWidth =3D viewportXY.x - 50;	// Allow room for the scrollbar and =
padding
		}
		Element.setStyle( dialog.body, {
			width: (maxWidth < Element.getWidth(dialog.element)) ? (maxWidth + =
'px') : ''
		} );
		dialog.center();
	}
};

Event.observe( window, 'resize', YUIPopupFormProvider.ResizeModalForm );



------=_NextPart_000_05B2_01CB8252.F1A1E800--
