From: <Saved by Windows Internet Explorer 8>
Subject: The Higher Learning Commission Action Project Directory
Date: Fri, 17 Sep 2010 11:37:01 -0500
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0001_01CB565C.A52582B0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5994

This is a multi-part message in MIME format.

------=_NextPart_000_0001_01CB565C.A52582B0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/project_versions/2767

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML lang=3Den xml:lang=3D"en" =
xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>The Higher Learning =
Commission Action Project Directory</TITLE>
<META content=3Dtext/html;charset=3DUTF-8 http-equiv=3Dcontent-type>
<SCRIPT type=3Dtext/javascript=20
src=3D"http://apd.hlcommission.org/javascripts/prototype.js?1284589638"><=
/SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://apd.hlcommission.org/javascripts/effects.js?1284589638"></S=
CRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://apd.hlcommission.org/javascripts/dragdrop.js?1284589638"></=
SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://apd.hlcommission.org/javascripts/controls.js?1284589638"></=
SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://apd.hlcommission.org/javascripts/application.js?1284589638"=
></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://apd.hlcommission.org/javascripts/tiny_mce/tiny_mce.js?12845=
89638"></SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
//<![CDATA[=0A=
tinyMCE.init({=0A=
browsers : "msie,gecko",=0A=
editor_selector : 'mceEditor',=0A=
gecko_spellcheck : true,=0A=
height : '250',=0A=
language : 'en',=0A=
mode : 'textareas',=0A=
paste_auto_cleanup_on_paste : true,=0A=
plugins : "paste,spellchecker",=0A=
spellchecker_languages : '+English=3Den',=0A=
spellchecker_rpc_url : '/spelling/check',=0A=
theme : 'advanced',=0A=
theme_advanced_buttons1 : =
"bold,italic,underline,separator,bullist,numlist,separator,indent,outdent=
,separator,undo,redo,spellchecker",=0A=
theme_advanced_buttons2 : "",=0A=
theme_advanced_buttons3 : "",=0A=
theme_advanced_resize_horizontal : true,=0A=
theme_advanced_resizing : true,=0A=
theme_advanced_toolbar_align : 'center',=0A=
theme_advanced_toolbar_location : 'top',=0A=
width : '100%'=0A=
=0A=
});=0A=
//]]>=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://apd.hlcommission.org/javascripts/datepicker.js?1284589638">=
</SCRIPT>
<LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://apd.hlcommission.org/stylesheets/datepicker.css?1284589638=
"=20
media=3Dscreen><LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://apd.hlcommission.org/stylesheets/scaffold.css?1284589638" =

media=3Dall><LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://apd.hlcommission.org/stylesheets/main.css?1284589638"=20
media=3Dall><LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://apd.hlcommission.org/stylesheets/print.css?1284589638" =
media=3Dprint>
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18939"></HEAD>
<BODY>
<DIV id=3Dheader class=3Dpage-header>
<H2><SPAN class=3Duser-links>Cindy Heider | <A=20
href=3D"http://apd.hlcommission.org/people/161/edit">Profile</A> | <A=20
href=3D"http://apd.hlcommission.org/logout">Log-out</A> | <A=20
href=3D"https://content.springcm.com/content/DownloadDocuments.ashx?Selec=
tion=3DDocument,19736610;&amp;accountId=3D5968">HELP</A>=20
</SPAN><SPAN class=3Dsite-title><SPAN class=3Dstrong>The Higher Learning =

Commission</SPAN> Action Project Directory</SPAN> </H2>
<DIV class=3Dbreadcrumbs>
<P><A href=3D"http://apd.hlcommission.org/orgs/120">&lt;- Back to =
DASHBOARD</A>=20
</P></DIV>
<DIV class=3Dproject-title><SPAN class=3Dorg-name>Missouri Western State =

University:</SPAN> <SPAN class=3Dproject-name>Expansion of Available =
Courses=20
Offered by Distance Learning Technologies</SPAN> </DIV>
<DIV id=3Dtabs class=3Dtabs>
<UL>
  <LI>
  <LI><A class=3Dcurrent title=3D"Project Detail"=20
  =
href=3D"http://apd.hlcommission.org/project_versions/2767">PROJECT</A></L=
I>
  <LI><A title=3DUpdate=20
  =
href=3D"http://apd.hlcommission.org/project_versions/show_update/2767">UP=
DATE</A></LI>
  <LI><A title=3DReview=20
  =
href=3D"http://apd.hlcommission.org/project_versions/show_review/2767">RE=
VIEW</A></LI></UL></DIV></DIV>
<DIV id=3Dcontent>
<DIV id=3Dside-bar class=3Dl-side-bar>
<DIV id=3Dsection_action class=3Daction-box>
<DIV class=3Daction-button>
<H3>Reviewed</H3></DIV>
<DIV class=3Dtext>This project has been reviewed.</DIV></DIV>
<DIV class=3Dversion-list>
<H3>VERSIONS</H3>
<UL>
  <LI id=3Dproject_version_3586 class=3Dproject_version><SPAN=20
  class=3D"status draft">&nbsp;</SPAN> <A=20
  href=3D"http://apd.hlcommission.org/project_versions/3586">VERSION =
2.0</A> </LI>
  <LI id=3Dproject_version_2767 class=3Dproject_version><SPAN=20
  class=3D"status reviewed">&nbsp;</SPAN> <A class=3Dcurrent-version=20
  href=3D"http://apd.hlcommission.org/project_versions/2767">VERSION =
1.0</A>=20
</LI></UL></DIV></DIV>
<DIV id=3Dmain class=3D"main-2-col project">
<DIV class=3Dheader><SPAN class=3D"status reviewed">REVIEWED</SPAN> =
<SPAN=20
class=3Dversion>VERSION 1.0</SPAN> </DIV>
<DIV id=3Dproject_details class=3Ddetails>
<H3>Project Details </H3>
<TABLE id=3Dproject_detail_table>
  <TBODY>
  <TR>
    <TD class=3Dlabel-left>Title</TD>
    <TD>Expansion of Available Courses Offered by Distance Learning=20
      Technologies</TD>
    <TD class=3Dlabel-right>Status</TD>
    <TD class=3Dvalues-right>DRAFT</TD></TR>
  <TR>
    <TD class=3Dlabel-left>Category</TD>
    <TD>1-Helping Students Learn</TD>
    <TD class=3Dlabel-right>Updated</TD>
    <TD class=3Dvalues-right>08-03-2010 </TD></TR>
  <TR>
    <TD class=3Dlabel-left>Timeline</TD>
    <TD>&nbsp;</TD>
    <TD class=3Dlabel-right>Reviewed</TD>
    <TD class=3Dvalues-right>09-13-2010 </TD></TR>
  <TR>
    <TD colSpan=3D2>
      <DIV class=3Ddate-label>Planned Project Kickoff</DIV>
      <DIV class=3Ddates>08-01-2009</DIV></TD>
    <TD class=3Dlabel-right>Created</TD>
    <TD class=3Dvalues-right>11-24-2009</TD></TR>
  <TR>
    <TD colSpan=3D2>
      <DIV class=3Ddate-label>Target Completion</DIV>
      <DIV class=3Ddates>07-30-2012</DIV></TD>
    <TD class=3Dlabel-right>Last Modified</TD>
    <TD class=3Dvalues-right>09-17-2010</TD></TR></TBODY></TABLE></DIV>
<DIV class=3Dsection-items>
<UL id=3Dsection_item_52471 class=3Dsection_item>
  <LI class=3Dquestion>
  <DIV class=3Dlabel>1:</DIV>
  <DIV class=3Ddetail>Describe this Action Project's goal in 100 words =
or=20
  fewer:</DIV></LI>
  <LI id=3Ditem_52471 class=3Danswer>
  <DIV class=3Dlabel>A: </DIV>
  <DIV class=3Ddetail>The purposes of the AQIP Action Project are to: =
=E2=80=A2provide=20
  funds to facilitate the development of online courses having at least =
100=20
  additional online courses by Fall 2012; =E2=80=A2increase service to =
the region as=20
  evidenced by enrollment of new undergraduate and graduate students in =
online=20
  courses and other courses using distance learning (DL) technologies;=20
  =E2=80=A2institutionalize the offering of DL courses through the =
Western Institute;=20
  =E2=80=A2institutionalize a profit center model to underwrite =
development of=20
  additional DL courses; =E2=80=A2institutionalize the evaluation of =
educational=20
  outcomes of DL courses and the match between these courses and =
community=20
  needs. </DIV></LI>
  <LI style=3D"DISPLAY: none" id=3Ditem_52471_edit></LI></UL>
<UL id=3Dsection_item_52472 class=3Dsection_item>
  <LI class=3Dquestion>
  <DIV class=3Dlabel>2:</DIV>
  <DIV class=3Ddetail>Describe briefly your institution's reasons for =
taking on=20
  this Action Project now -- why the project and its goals are high =
among your=20
  current priorities:</DIV></LI>
  <LI id=3Ditem_52472 class=3Danswer>
  <DIV class=3Dlabel>A: </DIV>
  <DIV class=3Ddetail>
  <P>Our reason for this Action Project is to focus on students as =
individuals =E2=80=93=20
  recognizing differential opportunities to access traditionally offered =
college=20
  coursework; to offer opportunities to students at all stages of life =
=E2=80=93=20
  including those who are full-time workers or who have other full-time=20
  responsibilities; and to lead in the educational, economic, cultural =
and=20
  social development of the citizens of the region, Western needs to =
develop=20
  online and other DL offerings to serve time-bound, place-bound, and=20
  financially-restricted potential students. This is increasingly true =
given=20
  current and near-term projected trends in the national and global =
economy that=20
  limit the ability of potential students to engage in traditionally =
scheduled=20
  college coursework, and that make the possession of a college degree =
more=20
  critical to employment with family-sustaining wages.</P></DIV></LI>
  <LI style=3D"DISPLAY: none" id=3Ditem_52472_edit></LI></UL>
<UL id=3Dsection_item_52473 class=3Dsection_item>
  <LI class=3Dquestion>
  <DIV class=3Dlabel>3:</DIV>
  <DIV class=3Ddetail>List the organizational areas -- institutional =
departments,=20
  programs, divisions, or units -- most affected by or involved in this =
Action=20
  Project:</DIV></LI>
  <LI id=3Ditem_52473 class=3Danswer>
  <DIV class=3Dlabel>A: </DIV>
  <DIV class=3Ddetail>The academic units, departments, or organizations =
that will=20
  be directly or indirectly affected or involved in this Action Project =
include:=20
  1) All academic departments will be impacted by this Action Project as =
faculty=20
  develop additional online courses. This will impact the scheduling of =
courses=20
  and faculty workload; 2) The Instructional Media Center will be highly =

  impacted due to the online training provided to faculty; 3) The =
Western=20
  Institute, Missouri Western=E2=80=99s outreach program, will be =
impacted by scheduling=20
  of courses, tracking of enrollment and management of resources (e.g., =
faculty=20
  pay, hardware &amp; software for the project); and most importantly, =
4) the=20
  growing Western student body will be impacted by the increasing =
availability=20
  of online courses, providing additional opportunities for learning and =
degree=20
  completion. </DIV></LI>
  <LI style=3D"DISPLAY: none" id=3Ditem_52473_edit></LI></UL>
<UL id=3Dsection_item_52474 class=3Dsection_item>
  <LI class=3Dquestion>
  <DIV class=3Dlabel>4:</DIV>
  <DIV class=3Ddetail>Name and describe briefly the key organizational =
process(es)=20
  that you expect this Action Project to change or improve:</DIV></LI>
  <LI id=3Ditem_52474 class=3Danswer>
  <DIV class=3Dlabel>A: </DIV>
  <DIV class=3Ddetail>The increasing range and number of available =
online courses=20
  will change the scheduling and advisement processes, as students will =
have=20
  additional opportunities for more flexibility in scheduling, leading =
to higher=20
  average course loads and perhaps more focused course loads. There will =
be=20
  fewer occasions where students find available courses to not be the =
courses=20
  they need or desire. </DIV></LI>
  <LI style=3D"DISPLAY: none" id=3Ditem_52474_edit></LI></UL>
<UL id=3Dsection_item_52475 class=3Dsection_item>
  <LI class=3Dquestion>
  <DIV class=3Dlabel>5:</DIV>
  <DIV class=3Ddetail>Explain the rationale for the length of time =
planned for=20
  this Action Project (from kickoff to target completion):</DIV></LI>
  <LI id=3Ditem_52475 class=3Danswer>
  <DIV class=3Dlabel>A: </DIV>
  <DIV class=3Ddetail>Western currently has limited online courses =
although many=20
  faculty are interested in developing online courses. Building on this =
interest=20
  requires the opportunity for faculty training, for exchange among the =
faculty=20
  regarding development ideas and enthusiasm for online courses, =
marketing of=20
  online courses to existing and new students, the establishment of a =
new=20
  process for course evaluation appropriate for online courses, changes =
to=20
  processes such as scheduling and advisement, and other changes to the =
campus=20
  culture and infrastructure. A three year period will allow for the =
above=20
  changes and move online coursework at Western from being a limited =
part of the=20
  educational venture to being a vibrant sector. </DIV></LI>
  <LI style=3D"DISPLAY: none" id=3Ditem_52475_edit></LI></UL>
<UL id=3Dsection_item_52476 class=3Dsection_item>
  <LI class=3Dquestion>
  <DIV class=3Dlabel>6:</DIV>
  <DIV class=3Ddetail>Describe how you plan to monitor how successfully =
your=20
  efforts on this Action Project are progressing:</DIV></LI>
  <LI id=3Ditem_52476 class=3Danswer>
  <DIV class=3Dlabel>A: </DIV>
  <DIV class=3Ddetail>Each term there will be a report on the number and =

  distribution of online (and other DL-based) courses developed, the =
number of=20
  courses offered, and the individual and collective enrollments in DL =
courses.=20
  Success will also be measured by student satisfaction and learning =
outcomes,=20
  as measured through a new assessment instrument. </DIV></LI>
  <LI style=3D"DISPLAY: none" id=3Ditem_52476_edit></LI></UL>
<UL id=3Dsection_item_52477 class=3Dsection_item>
  <LI class=3Dquestion>
  <DIV class=3Dlabel>7:</DIV>
  <DIV class=3Ddetail>Describe the overall "outcome" measures or =
indicators that=20
  will tell you whether this Action Project has been a success or =
failure in=20
  achieving its goals:</DIV></LI>
  <LI id=3Ditem_52477 class=3Danswer>
  <DIV class=3Dlabel>A: </DIV>
  <DIV class=3Ddetail>Measures of Success: 1. Term to term increase in =
the=20
  inventory of DL courses. 2. Term to term increase in the scheduling of =
DL=20
  courses. 3. Term to term increase in the enrollment in DL courses. 4. =
Term to=20
  term increase in the percentage of enrollments represented by DL =
courses. 5.=20
  Annual increases in institutional enrollment. 6. Continued =
satisfaction by=20
  faculty in the DL process, as measured by annual surveys of =
participating=20
  faculty members. 7. Student satisfaction and perceived learning =
outcomes as=20
  measured by course evaluations. </DIV></LI>
  <LI style=3D"DISPLAY: none" id=3Ditem_52477_edit></LI></UL>
<UL id=3Dsection_item_52478 class=3Dsection_item>
  <LI class=3Dquestion>
  <DIV class=3Dlabel>8:</DIV>
  <DIV class=3Ddetail>Other information (e.g., publicity, sponsor or =
champion,=20
  etc):</DIV></LI>
  <LI id=3Ditem_52478 class=3Danswer>
  <DIV class=3Dlabel>A: </DIV>
  <DIV class=3Ddetail>The primary "champions" for this project are the =
MWSU=20
  President and the Western Institute Dean. The President has a vision =
of=20
  serving the region through the University's expansion of distance =
learning=20
  opportunities. This is one of his major goals and has been clearly =
articulated=20
  to the campus (e.g., in annual opening addresses, in faculty meetings, =
in=20
  Board meetings, in institutional documents, etc.). The Western =
Institute Dean=20
  serves as the project leader and is a strong advocate for and =
facilitator of=20
  distance learning. </DIV></LI>
  <LI style=3D"DISPLAY: none" =
id=3Ditem_52478_edit></LI></UL></DIV></DIV></DIV>
<DIV id=3Dfooter></DIV>
<SCRIPT type=3Dtext/javascript>=0A=
var gaJsHost =3D (("https:" =3D=3D document.location.protocol) ? =
"https://ssl." : "http://www.");=0A=
document.write(unescape("%3Cscript src=3D'" + gaJsHost + =
"google-analytics.com/ga.js' type=3D'text/javascript'%3E%3C/script%3E"));=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
try {=0A=
var pageTracker =3D _gat._getTracker("UA-3403563-11");=0A=
pageTracker._trackPageview();=0A=
} catch(err) {}</SCRIPT>
</BODY></HTML>

------=_NextPart_000_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/stylesheets/datepicker.css?1284589638

DIV.datePicker {
	Z-INDEX: 9999; POSITION: absolute; MIN-WIDTH: 24em; TEXT-ALIGN: center; =
WIDTH: 24em; FONT: 900 0.8em/0.8em Verdana, Sans-Serif; BACKGROUND: none =
transparent scroll repeat 0% 0%; -moz-user-select: none; =
-khtml-user-select: none
}
DIV.staticDP {
	POSITION: relative; TOP: 5px; LEFT: 0px
}
IFRAME.iehack {
	Z-INDEX: 9998; BORDER-BOTTOM: 0px; POSITION: absolute; BORDER-LEFT: =
0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; DISPLAY: none; BACKGROUND: #fff; BORDER-TOP: 0px; BORDER-RIGHT: =
0px; PADDING-TOP: 0px
}
A.date-picker-control:link {
	BORDER-BOTTOM: 0px; MIN-WIDTH: 16px; BORDER-LEFT: 0px; PADDING-BOTTOM: =
0px; LINE-HEIGHT: 1; MARGIN: 0px 0px 0px 4px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; BACKGROUND: url(/images/datepicker/cal.gif) =
no-repeat 50% 50%; VISIBILITY: visible; VERTICAL-ALIGN: middle; =
BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: =
none; PADDING-TOP: 0px
}
A.date-picker-control:visited {
	BORDER-BOTTOM: 0px; MIN-WIDTH: 16px; BORDER-LEFT: 0px; PADDING-BOTTOM: =
0px; LINE-HEIGHT: 1; MARGIN: 0px 0px 0px 4px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; BACKGROUND: url(/images/datepicker/cal.gif) =
no-repeat 50% 50%; VISIBILITY: visible; VERTICAL-ALIGN: middle; =
BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: =
none; PADDING-TOP: 0px
}
A.date-picker-control:hover {
	BORDER-BOTTOM: 0px; MIN-WIDTH: 16px; BORDER-LEFT: 0px; PADDING-BOTTOM: =
0px; LINE-HEIGHT: 1; MARGIN: 0px 0px 0px 4px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; BACKGROUND: url(/images/datepicker/cal.gif) =
no-repeat 50% 50%; VISIBILITY: visible; VERTICAL-ALIGN: middle; =
BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: =
none; PADDING-TOP: 0px
}
A.date-picker-control:active {
	BORDER-BOTTOM: 0px; MIN-WIDTH: 16px; BORDER-LEFT: 0px; PADDING-BOTTOM: =
0px; LINE-HEIGHT: 1; MARGIN: 0px 0px 0px 4px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; BACKGROUND: url(/images/datepicker/cal.gif) =
no-repeat 50% 50%; VISIBILITY: visible; VERTICAL-ALIGN: middle; =
BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: =
none; PADDING-TOP: 0px
}
A.date-picker-control:focus {
	BORDER-BOTTOM: 0px; MIN-WIDTH: 16px; BORDER-LEFT: 0px; PADDING-BOTTOM: =
0px; LINE-HEIGHT: 1; MARGIN: 0px 0px 0px 4px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; BACKGROUND: url(/images/datepicker/cal.gif) =
no-repeat 50% 50%; VISIBILITY: visible; VERTICAL-ALIGN: middle; =
BORDER-TOP: 0px; CURSOR: pointer; BORDER-RIGHT: 0px; TEXT-DECORATION: =
none; PADDING-TOP: 0px
}
* HTML A.date-picker-control {
	WIDTH: 16px
}
A.date-picker-control {
	DISPLAY: inline-block
}
A.date-picker-control SPAN {
	MARGIN: auto 0px; WIDTH: 16px; DISPLAY: block; HEIGHT: 16px
}
DIV.datePicker TH SPAN {
	TEXT-ALIGN: center; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1em; =
BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; DISPLAY: inline; FONT-FAMILY: georgia, times new roman, palatino, =
times, bookman, serif; BACKGROUND: none transparent scroll repeat 0% 0%; =
BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; COLOR: #000; =
BORDER-LEFT-WIDTH: 0px; CURSOR: pointer; FONT-WEIGHT: bold; PADDING-TOP: =
0px
}
DIV.datePicker TH SPAN.month-display {
	TEXT-TRANSFORM: uppercase; FONT: 1.2em Verdana, Sans-Serif; =
LETTER-SPACING: 1px; CURSOR: default
}
DIV.datePicker TH SPAN.year-display {
	TEXT-TRANSFORM: uppercase; FONT: 1.2em Verdana, Sans-Serif; =
LETTER-SPACING: 1px; CURSOR: default
}
DIV.datePicker TH SPAN.prev-but {
	FONT-SIZE: 1.8em; CURSOR: pointer !important
}
DIV.datePicker TH SPAN.next-but {
	FONT-SIZE: 1.8em; CURSOR: pointer !important
}
DIV.datePicker TH SPAN.today-but {
	TEXT-ALIGN: center; TEXT-TRANSFORM: uppercase; MARGIN: 0px auto; WIDTH: =
100%; FONT: 1em/1.6em Verdana, Sans-Serif; CURSOR: pointer !important; =
TEXT-DECORATION: none
}
DIV.datePicker THEAD TH SPAN.fd-disabled {
	COLOR: #aaa; CURSOR: default !important
}
DIV.datePicker TH SPAN.fd-day-header {
	TEXT-ALIGN: center; TEXT-TRANSFORM: lowercase; MARGIN: 0px auto; WIDTH: =
2em; FONT: 900 1em/1.4em Verdana, Sans-Serif; HEIGHT: 1.4em; =
TEXT-DECORATION: none
}
DIV.datePicker TABLE {
	BORDER-BOTTOM: #ccc 1px solid; POSITION: relative; TEXT-ALIGN: center; =
BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-LEFT: 0px; BORDER-SPACING: 2px; WIDTH: 100%; PADDING-RIGHT: 0px; =
BORDER-COLLAPSE: separate; BACKGROUND: =
url(/images/datepicker/gradient-e5e5e5-ffffff.gif) #fff repeat-x 0px =
-20px; TABLE-LAYOUT: fixed; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: =
#ccc 1px solid; PADDING-TOP: 0px
}
DIV.datePicker TABLE TD {
	BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc =
1px solid; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.2em; OUTLINE-STYLE: none; =
OUTLINE-COLOR: invert; PADDING-LEFT: 0px; OUTLINE-WIDTH: medium; WIDTH: =
3em; PADDING-RIGHT: 0px; BACKGROUND: =
url(/images/datepicker/gradient-e5e5e5-ffffff.gif) #fff repeat-x 0px =
-40px; HEIGHT: 3em !important; VERTICAL-ALIGN: middle; BORDER-TOP: #ccc =
1px solid; CURSOR: pointer; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: =
0px
}
DIV.datePicker TABLE TH {
	BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; =
PADDING-BOTTOM: 0px; LINE-HEIGHT: 1em; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; COLOR: #222; VERTICAL-ALIGN: middle; BORDER-TOP: 0px; FONT-WEIGHT: =
bold; BORDER-RIGHT: 0px; PADDING-TOP: 0px
}
DIV.datePicker TABLE TD.date-picker-unused {
	BORDER-BOTTOM-COLOR: #dcdcdc; PADDING-BOTTOM: 0px; BORDER-TOP-COLOR: =
#dcdcdc; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BACKGROUND: =
url(/images/datepicker/backstripes.gif) #fff; BORDER-RIGHT-COLOR: =
#dcdcdc; BORDER-LEFT-COLOR: #dcdcdc; CURSOR: default !important; =
PADDING-TOP: 0px
}
DIV.datePicker TABLE THEAD TH.date-picker-title {
	PADDING-BOTTOM: 0.4em; PADDING-LEFT: 0px; WIDTH: auto; PADDING-RIGHT: =
0px; HEIGHT: auto; PADDING-TOP: 0.4em
}
DIV.datePicker TABLE TH.date-picker-day-header {
	TEXT-TRANSFORM: lowercase; WIDTH: 3em
}
DIV.datePicker TABLE TH.date-picker-day-header SPAN {
	DISPLAY: block
}
DIV.datePicker TABLE TD.date-picker-today {
	BACKGROUND: url(/images/datepicker/bullet2.gif) #fff no-repeat 0px 0px; =
COLOR: rgb(100,100,100) !important
}
DIV.datePicker TABLE TD.date-picker-selected-date {
	BORDER-BOTTOM-COLOR: #333 !important; BORDER-TOP-COLOR: #333 =
!important; COLOR: #333 !important; BORDER-RIGHT-COLOR: #333 !important; =
BORDER-LEFT-COLOR: #333 !important
}
TD.date-picker-highlight {
	COLOR: #a86666
}
DIV.datePicker TABLE TD.out-of-range {
	FONT-STYLE: oblique; BACKGROUND: #fcfcfc; COLOR: #ccc !important; =
CURSOR: default !important
}
DIV.datePicker TABLE TD.day-disabled {
	BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #aaa =
!important; CURSOR: default !important
}
DIV.datePicker TABLE TBODY TD.date-picker-hover {
	BORDER-BOTTOM-COLOR: rgb(100,130,170); BORDER-TOP-COLOR: =
rgb(100,130,170); BACKGROUND: url(/images/datepicker/bg_header.jpg) #fff =
no-repeat 0px 0px; COLOR: rgb(100,130,170); BORDER-RIGHT-COLOR: =
rgb(100,130,170); BORDER-LEFT-COLOR: rgb(100,130,170); CURSOR: pointer
}
* HTML DIV.datePicker TABLE TD {
	BACKGROUND-IMAGE: none
}
* HTML DIV.datePicker TABLE TD.date-picker-unused {
	BACKGROUND: #f2f2f2
}

------=_NextPart_000_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/stylesheets/scaffold.css?1284589638

BODY {
	BACKGROUND-COLOR: #fff; COLOR: #333
}
BODY {
	LINE-HEIGHT: 18px; FONT-FAMILY: verdana, arial, helvetica, sans-serif; =
FONT-SIZE: 13px
}
P {
	LINE-HEIGHT: 18px; FONT-FAMILY: verdana, arial, helvetica, sans-serif; =
FONT-SIZE: 13px
}
OL {
	LINE-HEIGHT: 18px; FONT-FAMILY: verdana, arial, helvetica, sans-serif; =
FONT-SIZE: 13px
}
UL {
	LINE-HEIGHT: 18px; FONT-FAMILY: verdana, arial, helvetica, sans-serif; =
FONT-SIZE: 13px
}
TD {
	LINE-HEIGHT: 18px; FONT-FAMILY: verdana, arial, helvetica, sans-serif; =
FONT-SIZE: 13px
}
PRE {
	PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eee; PADDING-LEFT: 10px; =
PADDING-RIGHT: 10px; FONT-SIZE: 11px; PADDING-TOP: 10px
}
A {
	COLOR: #000
}
A:visited {
	COLOR: #666
}
A:hover {
	BACKGROUND-COLOR: #000; COLOR: #fff
}
.fieldWithErrors {
	PADDING-BOTTOM: 2px; BACKGROUND-COLOR: red; PADDING-LEFT: 2px; =
PADDING-RIGHT: 2px; DISPLAY: table; PADDING-TOP: 2px
}
#errorExplanation {
	BORDER-BOTTOM: red 2px solid; BORDER-LEFT: red 2px solid; =
PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 7px; =
WIDTH: 400px; PADDING-RIGHT: 7px; MARGIN-BOTTOM: 20px; BORDER-TOP: red =
2px solid; BORDER-RIGHT: red 2px solid; PADDING-TOP: 7px
}
#errorExplanation H2 {
	TEXT-ALIGN: left; PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #c00; MARGIN: =
-7px; PADDING-LEFT: 15px; PADDING-RIGHT: 5px; COLOR: #fff; FONT-SIZE: =
12px; FONT-WEIGHT: bold; PADDING-TOP: 5px
}
#errorExplanation P {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
MARGIN-BOTTOM: 0px; COLOR: #333; PADDING-TOP: 5px
}
#errorExplanation UL LI {
	LIST-STYLE-TYPE: square; FONT-SIZE: 12px
}

------=_NextPart_000_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/stylesheets/main.css?1284589638

HTML {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
BODY {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
DIV {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
DL {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
DT {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
DD {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
UL {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
OL {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
LI {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
H1 {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
H2 {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
H3 {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
H4 {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
H5 {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
H6 {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
PRE {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
FORM {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
FIELDSET {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
INPUT {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
P {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
BLOCKQUOTE {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
TH {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
TD {
	PADDING-BOTTOM: 0pt; MARGIN: 0pt; PADDING-LEFT: 0pt; PADDING-RIGHT: =
0pt; PADDING-TOP: 0pt
}
BODY {
	PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #b9b9b9; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.page-header {
	BORDER-BOTTOM: #003366 1px solid; PADDING-BOTTOM: 0px; =
BACKGROUND-COLOR: #d0d5ff; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; =
PADDING-RIGHT: 0px; FONT-FAMILY: "Lucida Grande", arial, sans-serif; =
LETTER-SPACING: 0px; PADDING-TOP: 0px
}
.page-header H2 {
	MARGIN: 0px 10px; PADDING-TOP: 10px
}
.page-header .site-title {
	POSITION: relative; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 0px; FONT-SIZE: 16px; FONT-WEIGHT: normal; PADDING-TOP: =
10px
}
.page-header .user-links {
	POSITION: relative; TEXT-ALIGN: right; PADDING-BOTTOM: 0px; =
PADDING-LEFT: 0px; WIDTH: 300px; PADDING-RIGHT: 0px; FLOAT: right; =
FONT-SIZE: 12px; FONT-WEIGHT: normal; MARGIN-RIGHT: 20px; PADDING-TOP: =
0px
}
.page-header .strong {
	FONT-WEIGHT: bold
}
.page-header .breadcrumbs {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 15px; PADDING-RIGHT: 5px; =
PADDING-TOP: 5px
}
.page-header .project-title {
	PADDING-BOTTOM: 5px; MARGIN: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: =
5px; COLOR: #255190; FONT-SIZE: 20px; FONT-WEIGHT: normal; PADDING-TOP: =
0px
}
.page-header .project-title .project-name {
	COLOR: #5d7d4a; FONT-SIZE: 16px; FONT-WEIGHT: normal
}
.page-header .tabs {
	PADDING-BOTTOM: 0px; MARGIN: 0px 50px 0px 15px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; HEIGHT: 30px; PADDING-TOP: 0px
}
.page-header .tabs UL {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; PADDING-TOP: 0px
}
.page-header .tabs LI {
	BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: =
0px; LIST-STYLE-TYPE: none; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
DISPLAY: inline; MARGIN-LEFT: 5px; BORDER-TOP: medium none; =
LIST-STYLE-IMAGE: none; BORDER-RIGHT: medium none; PADDING-TOP: 0px
}
.page-header .tabs A:link {
	BORDER-BOTTOM: #000 1px solid; PADDING-BOTTOM: 8px; BACKGROUND-COLOR: =
#b9b9b9; MARGIN: 0px 7px 0px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: =
20px; FLOAT: left; COLOR: #000; FONT-SIZE: 12px; FONT-WEIGHT: normal; =
TEXT-DECORATION: none; PADDING-TOP: 4px
}
.page-header .tabs A:visited {
	BORDER-BOTTOM: #000 1px solid; PADDING-BOTTOM: 8px; BACKGROUND-COLOR: =
#b9b9b9; MARGIN: 0px 7px 0px 0px; PADDING-LEFT: 20px; PADDING-RIGHT: =
20px; FLOAT: left; COLOR: #000; FONT-SIZE: 12px; FONT-WEIGHT: normal; =
TEXT-DECORATION: none; PADDING-TOP: 4px
}
.page-header .tabs A:hover {
	COLOR: #fff
}
.page-header .tabs A.current {
	BORDER-BOTTOM: #b9b9b9 1px solid; FONT-WEIGHT: bold
}
.tabs {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: =
30px; PADDING-TOP: 6px
}
.login {
	PADDING-BOTTOM: 20px; BACKGROUND-COLOR: #fff; MARGIN: 12px; =
PADDING-LEFT: 20px; PADDING-RIGHT: 20px; PADDING-TOP: 20px
}
.login .header {
	PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 20px; =
PADDING-RIGHT: 0px; PADDING-TOP: 10px
}
.login .header {
	FONT-WEIGHT: normal
}
.login .header .strong {
	FONT-WEIGHT: bold
}
.login .header H1 {
	FONT-SIZE: 18px; FONT-WEIGHT: normal
}
.login .header H2 {
	MARGIN: 10px 0px; COLOR: #255190; FONT-SIZE: 16px
}
.login .dialog {
	BORDER-BOTTOM: silver 4px solid; BORDER-LEFT: silver 4px solid; =
PADDING-BOTTOM: 20px; BACKGROUND-COLOR: #f5f5f5; MARGIN: 20px auto 50px; =
PADDING-LEFT: 20px; WIDTH: 400px; PADDING-RIGHT: 20px; BORDER-TOP: =
silver 4px solid; BORDER-RIGHT: silver 4px solid; PADDING-TOP: 20px
}
.login .dialog .notice {
	BACKGROUND-COLOR: #e2f9e3; MARGIN-BOTTOM: 10px
}
.login .dialog .error {
	MARGIN-BOTTOM: 10px
}
.login .dialog .alert {
	MARGIN-BOTTOM: 10px
}
.login .dialog H2 {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT-SIZE: =
12px; PADDING-TOP: 5px
}
.login .dialog INPUT {
	PADDING-BOTTOM: 2px; MARGIN: 5px 0px; PADDING-LEFT: 2px; PADDING-RIGHT: =
2px; FONT-SIZE: 14px; PADDING-TOP: 2px
}
.login .help {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 10px
}
.login .help UL {
	LIST-STYLE-TYPE: none; LIST-STYLE-IMAGE: none
}
.auth-required {
	MARGIN-BOTTOM: 10px; COLOR: red; FONT-WEIGHT: bold
}
.content {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; =
PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fff; MARGIN: 12px; =
PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #000 1px solid; =
BORDER-RIGHT: #000 1px solid; PADDING-TOP: 10px
}
.main-2-col {
	BACKGROUND-COLOR: #fff; MARGIN: 10px 0px 10px 10px; WIDTH: 75%; FLOAT: =
left
}
.l-side-bar {
	MARGIN: 10px 10px 10px 5px; WIDTH: 22%; FLOAT: right
}
.dashboard-content {
	MARGIN: 10px 10px 20px
}
.dashboard-content H3 {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; =
PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
BACKGROUND: #ddd; HEIGHT: 20px; FONT-SIZE: 14px; BORDER-TOP: #000 1px =
solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 5px
}
.dashboard-content UL {
	PADDING-BOTTOM: 5px; LIST-STYLE-TYPE: none; PADDING-LEFT: 0px; =
PADDING-RIGHT: 5px; PADDING-TOP: 5px
}
.dashboard-content UL LI {
	PADDING-BOTTOM: 5px; MARGIN: 10px 5px 15px 0px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 5px; FONT-SIZE: 14px; PADDING-TOP: 5px
}
.dashboard-content TABLE {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: =
5px; PADDING-TOP: 5px
}
.dashboard-content TH {
	TEXT-ALIGN: left; PADDING-RIGHT: 10px; FONT-SIZE: 12px
}
.dashboard-content TD {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 5px; =
VERTICAL-ALIGN: middle; PADDING-TOP: 5px
}
.dashboard-content TD.col1 {
	WIDTH: 100px
}
.dashboard-content TD.col3 {
	WIDTH: 20px
}
.dashboard-content TD.col4 {
	WIDTH: 50px
}
.dashboard-content TD.col5 {
	WIDTH: 120px
}
.border_bottom TD {
	BORDER-BOTTOM: #efefef 1px solid
}
.notifications {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: =
#000 1px solid; BORDER-RIGHT: #000 1px solid
}
.notifications H3 {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: medium none; BORDER-TOP: =
medium none; BORDER-RIGHT: medium none
}
.status {
	BORDER-BOTTOM: #000 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #000 =
1px solid; PADDING-BOTTOM: 5px; MARGIN: 5px 10px 0px 0px; PADDING-LEFT: =
5px; WIDTH: 80px; PADDING-RIGHT: 5px; FLOAT: left; FONT-SIZE: 12px; =
BORDER-TOP: #000 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #000 1px =
solid; PADDING-TOP: 5px
}
.draft {
	BACKGROUND-COLOR: #ff5f00
}
.active {
	BACKGROUND-COLOR: lightblue
}
.inupdate {
	BACKGROUND-COLOR: #05d2ff
}
.inreview {
	BACKGROUND-COLOR: yellow
}
.reviewed {
	BACKGROUND-COLOR: #02ff05
}
.completed {
	BACKGROUND-COLOR: #ddd; FONT-WEIGHT: normal
}
.canceled {
	BACKGROUND-COLOR: #ddd; FONT-WEIGHT: normal
}
.project .header {
	BACKGROUND-COLOR: #fff6bf; HEIGHT: 50px
}
.project .header .status {
	BORDER-BOTTOM: #000 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #000 =
1px solid; PADDING-BOTTOM: 5px; MARGIN: 10px 10px 10px 20px; =
PADDING-LEFT: 5px; WIDTH: 80px; PADDING-RIGHT: 5px; FLOAT: left; =
FONT-SIZE: 12px; BORDER-TOP: #000 1px solid; FONT-WEIGHT: bold; =
BORDER-RIGHT: #000 1px solid; PADDING-TOP: 5px
}
.project .header .version {
	PADDING-BOTTOM: 5px; MARGIN: 10px 20px 10px 2px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; FLOAT: right; FONT-SIZE: 14px; FONT-WEIGHT: bold; =
PADDING-TOP: 5px
}
.project .header .print {
	PADDING-BOTTOM: 5px; MARGIN: 10px 2px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; FLOAT: right; PADDING-TOP: 5px
}
.project .content {
	MARGIN: 10px 10px 20px
}
.project .content H3 {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; =
PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
BACKGROUND: #b9b9b9; FONT-SIZE: 14px; BORDER-TOP: #000 1px solid; =
FONT-WEIGHT: bold; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 5px
}
.project .content UL {
	PADDING-BOTTOM: 5px; LIST-STYLE-TYPE: none; PADDING-LEFT: 0px; =
PADDING-RIGHT: 5px; PADDING-TOP: 5px
}
.project .content UL LI {
	PADDING-BOTTOM: 5px; MARGIN: 10px 5px 15px 0px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 5px; FONT-SIZE: 14px; PADDING-TOP: 5px
}
.project .details {
	BORDER-BOTTOM: silver 1px solid; BORDER-LEFT: silver 1px solid; MARGIN: =
15px 20px 20px; MIN-HEIGHT: 100px; BORDER-TOP: silver 1px solid; =
BORDER-RIGHT: silver 1px solid
}
.project .details H3 {
	BORDER-BOTTOM: silver 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: =
5px; PADDING-RIGHT: 5px; BACKGROUND: #ddd; FONT-SIZE: 14px; FONT-WEIGHT: =
bold; PADDING-TOP: 5px
}
.edit-link A:link {
	BORDER-BOTTOM: #aaa 2px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa =
2px solid; PADDING-BOTTOM: 1px; MARGIN: -3px 10px 0px 0px; PADDING-LEFT: =
1px; WIDTH: 80px; PADDING-RIGHT: 1px; DISPLAY: block; BACKGROUND: =
url(/images/app/application_form_edit.png) lightyellow no-repeat 5px =
2px; FLOAT: right; FONT-SIZE: 12px; BORDER-TOP: #aaa 2px solid; =
FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 2px solid; TEXT-DECORATION: none; =
PADDING-TOP: 1px
}
.edit-link A:visited {
	BORDER-BOTTOM: #aaa 2px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa =
2px solid; PADDING-BOTTOM: 1px; MARGIN: -3px 10px 0px 0px; PADDING-LEFT: =
1px; WIDTH: 80px; PADDING-RIGHT: 1px; DISPLAY: block; BACKGROUND: =
url(/images/app/application_form_edit.png) lightyellow no-repeat 5px =
2px; FLOAT: right; FONT-SIZE: 12px; BORDER-TOP: #aaa 2px solid; =
FONT-WEIGHT: bold; BORDER-RIGHT: #aaa 2px solid; TEXT-DECORATION: none; =
PADDING-TOP: 1px
}
.edit-link A:hover {
	BACKGROUND-COLOR: #255190; COLOR: #fff
}
.float-left {
	FLOAT: left; MARGIN-RIGHT: 20px
}
.new-link A:link {
	BORDER-BOTTOM: #aaa 2px solid; TEXT-ALIGN: right; BORDER-LEFT: #aaa 2px =
solid; PADDING-BOTTOM: 1px; MARGIN: -2px 10px 0px 0px; PADDING-LEFT: =
10px; WIDTH: 130px; PADDING-RIGHT: 10px; DISPLAY: block; BACKGROUND: =
url(/images/app/add.png) lightyellow no-repeat 5px 2px; FLOAT: left; =
COLOR: #000; FONT-SIZE: 12px; BORDER-TOP: #aaa 2px solid; FONT-WEIGHT: =
bold; BORDER-RIGHT: #aaa 2px solid; TEXT-DECORATION: none; PADDING-TOP: =
1px
}
.new-link A:visited {
	BORDER-BOTTOM: #aaa 2px solid; TEXT-ALIGN: right; BORDER-LEFT: #aaa 2px =
solid; PADDING-BOTTOM: 1px; MARGIN: -2px 10px 0px 0px; PADDING-LEFT: =
10px; WIDTH: 130px; PADDING-RIGHT: 10px; DISPLAY: block; BACKGROUND: =
url(/images/app/add.png) lightyellow no-repeat 5px 2px; FLOAT: left; =
COLOR: #000; FONT-SIZE: 12px; BORDER-TOP: #aaa 2px solid; FONT-WEIGHT: =
bold; BORDER-RIGHT: #aaa 2px solid; TEXT-DECORATION: none; PADDING-TOP: =
1px
}
.new-link A:hover {
	BACKGROUND-COLOR: #255190; COLOR: #fff
}
.project .details TABLE {
	MARGIN: 2px 10px 10px; WIDTH: 98%
}
.project .details TR {
	VERTICAL-ALIGN: top
}
.project .details TR TD {
	FONT-SIZE: 11px
}
.project .details .label-left {
	TEXT-ALIGN: left; WIDTH: 60px; FONT-WEIGHT: bold
}
.project .details .label-right {
	TEXT-ALIGN: right; WIDTH: 100px; PADDING-RIGHT: 5px; FONT-WEIGHT: bold
}
.project .details .date-label {
	TEXT-ALIGN: right; WIDTH: 160px; PADDING-RIGHT: 10px; FLOAT: left; =
FONT-WEIGHT: bold
}
.project .details .values-right {
	WIDTH: 100px
}
.project .details .project-edit-form {
	MARGIN: 5px
}
.project .details .project-edit-form P {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
PADDING-TOP: 5px
}
.project .details .project-edit-buttons {
	PADDING-BOTTOM: 10px; MARGIN: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: =
10px; PADDING-TOP: 10px
}
.project .outcome-question {
	MARGIN: 15px 20px 20px
}
.project .outcome-question P {
	MARGIN-BOTTOM: 10px
}
.project .section-items {
	MARGIN: 15px 20px 20px; MIN-HEIGHT: 100px
}
.project .section-items UL {
	BORDER-BOTTOM: #ddd 1px solid; BORDER-LEFT: #ddd 1px solid; =
PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; MARGIN-BOTTOM: 20px; BORDER-TOP: #ddd 1px solid; =
BORDER-RIGHT: #ddd 1px solid; PADDING-TOP: 0px
}
.project .section-items .question {
	BORDER-BOTTOM: #ddd 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: =
#eee; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-RIGHT: silver 1px =
solid; PADDING-TOP: 10px
}
.project .section-items .answer {
	BORDER-BOTTOM: silver 1px solid; PADDING-BOTTOM: 10px; =
BACKGROUND-COLOR: #fff; MIN-HEIGHT: 40px; PADDING-LEFT: 10px; =
PADDING-RIGHT: 10px; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 10px
}
.section_item {
	PAGE-BREAK-INSIDE: avoid
}
.answer .detail UL {
	BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: =
0px; LIST-STYLE-TYPE: disc; MARGIN: 5px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none; =
PADDING-TOP: 0px
}
.project .section-items .comment {
	BORDER-BOTTOM: silver 1px solid; PADDING-BOTTOM: 10px; =
BACKGROUND-COLOR: #fff; MIN-HEIGHT: 40px; PADDING-LEFT: 10px; =
PADDING-RIGHT: 10px; COLOR: darkred; BORDER-RIGHT: silver 1px solid; =
PADDING-TOP: 10px
}
.section-items .label {
	WIDTH: 40px; FONT-FAMILY: "Lucida Grande", arial, sans-serif; FLOAT: =
left; FONT-SIZE: 24px; FONT-WEIGHT: normal
}
.section-items .label .item-edit SPAN {
	BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa =
1px solid; PADDING-BOTTOM: 1px; BACKGROUND-COLOR: #255190; MARGIN: 5px =
10px 0px 0px; PADDING-LEFT: 1px; WIDTH: 30px; PADDING-RIGHT: 1px; =
DISPLAY: block; FLOAT: right; HEIGHT: 18px; COLOR: #fff; FONT-SIZE: =
12px; BORDER-TOP: #aaa 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa =
1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px
}
.section-items .label .item-edit A:link {
	BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa =
1px solid; PADDING-BOTTOM: 1px; MARGIN: 5px 10px 0px 0px; PADDING-LEFT: =
1px; WIDTH: 30px; PADDING-RIGHT: 1px; DISPLAY: block; BACKGROUND: =
lightyellow; FLOAT: right; HEIGHT: 18px; COLOR: darkred; FONT-SIZE: =
12px; BORDER-TOP: #aaa 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa =
1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px
}
.section-items .label .item-edit A:visited {
	BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa =
1px solid; PADDING-BOTTOM: 1px; MARGIN: 5px 10px 0px 0px; PADDING-LEFT: =
1px; WIDTH: 30px; PADDING-RIGHT: 1px; DISPLAY: block; BACKGROUND: =
lightyellow; FLOAT: right; HEIGHT: 18px; COLOR: darkred; FONT-SIZE: =
12px; BORDER-TOP: #aaa 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa =
1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px
}
.section-items .label .item-edit A:hover {
	BACKGROUND-COLOR: #255190; COLOR: #fff
}
.section-items .label .comment-edit A:link {
	BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa =
1px solid; PADDING-BOTTOM: 1px; MARGIN: 0px 10px 3px 0px; PADDING-LEFT: =
1px; WIDTH: 30px; PADDING-RIGHT: 1px; DISPLAY: block; BACKGROUND: =
lightyellow; FLOAT: right; HEIGHT: 18px; COLOR: darkred; FONT-SIZE: =
12px; BORDER-TOP: #aaa 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa =
1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px
}
.section-items .label .comment-edit A:visited {
	BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #aaa =
1px solid; PADDING-BOTTOM: 1px; MARGIN: 0px 10px 3px 0px; PADDING-LEFT: =
1px; WIDTH: 30px; PADDING-RIGHT: 1px; DISPLAY: block; BACKGROUND: =
lightyellow; FLOAT: right; HEIGHT: 18px; COLOR: darkred; FONT-SIZE: =
12px; BORDER-TOP: #aaa 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #aaa =
1px solid; TEXT-DECORATION: none; PADDING-TOP: 1px
}
.section-items .label .comment-edit A:hover {
	BACKGROUND-COLOR: #255190; COLOR: #fff
}
.section-items .detail {
	MARGIN-LEFT: 40px
}
.section-items .detail .item-edit-first {
	TEXT-ALIGN: center; FONT-STYLE: italic; FONT-SIZE: 14px
}
.section-items .detail OL {
	MARGIN-LEFT: 40px
}
.section-items .detail UL {
	MARGIN-LEFT: 40px
}
.action-box {
	PADDING-BOTTOM: 12px; BACKGROUND-COLOR: #fff6bf; PADDING-LEFT: 12px; =
PADDING-RIGHT: 12px; MARGIN-BOTTOM: 20px; PADDING-TOP: 12px
}
.action-box .action-button {
	BORDER-BOTTOM: darkgrey 2px solid; TEXT-ALIGN: center; BORDER-LEFT: =
darkgrey 2px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #ccc; =
PADDING-LEFT: 2px; WIDTH: 150px; PADDING-RIGHT: 2px; MARGIN-LEFT: auto; =
FONT-SIZE: 11px; BORDER-TOP: darkgrey 2px solid; FONT-WEIGHT: bold; =
MARGIN-RIGHT: auto; BORDER-RIGHT: darkgrey 2px solid; PADDING-TOP: 2px
}
.action-box .confirmation-buttons {
	TEXT-ALIGN: center
}
.action-box .text {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; =
PADDING-TOP: 10px
}
.version-list H3 {
	TEXT-ALIGN: center; PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #d0d5ff; =
PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT-SIZE: 12px; FONT-WEIGHT: =
bold; PADDING-TOP: 5px
}
.version-list UL {
	LIST-STYLE-TYPE: none
}
.version-list LI {
	MARGIN: 10px 0px
}
.version-list .status {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; =
PADDING-BOTTOM: 0px; MARGIN: 3px 10px 10px 0px; PADDING-LEFT: 0px; =
WIDTH: 35px; PADDING-RIGHT: 0px; FLOAT: left; HEIGHT: 12px; BORDER-TOP: =
#000 1px solid; BORDER-RIGHT: #000 1px solid; PADDING-TOP: 0px
}
.version-list .current-version {
	FONT-WEIGHT: bold
}
.project-detail-message {
	PADDING-BOTTOM: 15px; MARGIN: 20px 30px 30px; PADDING-LEFT: 15px; =
PADDING-RIGHT: 15px; HEIGHT: 300px; PADDING-TOP: 10px
}
.project-detail-message P {
	PADDING-BOTTOM: 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
PADDING-TOP: 10px
}
.error {
	BORDER-BOTTOM: #900 1px solid; BORDER-LEFT: #900 1px solid; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #f0a8a8; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; BORDER-TOP: #900 1px solid; BORDER-RIGHT: #900 1px =
solid; PADDING-TOP: 5px
}
.error .head {
	COLOR: darkred
}
.error DIV {
	COLOR: red
}
.notice {
	BORDER-BOTTOM: #26722d 1px solid; BORDER-LEFT: #26722d 1px solid; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #a4e7a0; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; MARGIN-BOTTOM: 10px; COLOR: green; BORDER-TOP: =
#26722d 1px solid; BORDER-RIGHT: #26722d 1px solid; PADDING-TOP: 5px
}
.notice .head {
	TEXT-ALIGN: center; MARGIN-BOTTOM: 5px; COLOR: #000; FONT-WEIGHT: bold
}
.item-save {
	BORDER-BOTTOM: silver 1px solid; BORDER-LEFT: silver 1px solid; =
PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
BORDER-TOP: medium none; BORDER-RIGHT: silver 1px solid; PADDING-TOP: =
10px
}
.locked {
	FONT-STYLE: italic; COLOR: grey
}
.errorExplanation {
	MARGIN: 10px 0px 0px 20px
}
.errorExplanation UL {
	LIST-STYLE-TYPE: none
}
.errorExplanation LI {
	MARGIN-LEFT: 20px
}
.notifications TABLE {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
PADDING-TOP: 2px
}
.notifications TD {
	PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; COLOR: =
#255190; FONT-SIZE: 11px; VERTICAL-ALIGN: top; PADDING-TOP: 2px
}
.notifications TH {
	MARGIN-BOTTOM: 2px; COLOR: #255190; FONT-SIZE: 12px; FONT-WEIGHT: bold
}
.notification .title {
	MARGIN-BOTTOM: 2px; FONT-SIZE: 12px; FONT-WEIGHT: bold
}
.notification .date {
	TEXT-ALIGN: right; WIDTH: 80px; FONT-SIZE: 12px; FONT-WEIGHT: bold
}
.notification P {
	MARGIN: 0px 0px 5px; FONT-SIZE: 11px
}

------=_NextPart_000_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/stylesheets/print.css?1284589638

BODY {
	PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.page-header {
	BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; PADDING-BOTTOM: =
0px; BACKGROUND-COLOR: #fff; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: =
100%; PADDING-RIGHT: 0px; FONT-FAMILY: Lucida Grande , arial, =
sans-serif; LETTER-SPACING: 0px; BORDER-TOP: medium none; BORDER-RIGHT: =
medium none; PADDING-TOP: 0px
}
.page-header H2 {
	MARGIN: 0px 10px 10px 0px; PADDING-TOP: 10px
}
.page-header .site-title {
	POSITION: relative; PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; FONT-SIZE: 16px; FONT-WEIGHT: normal; PADDING-TOP: =
10px
}
.page-header .project-title {
	PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
5px; COLOR: #000; FONT-SIZE: 16px; FONT-WEIGHT: normal; PADDING-TOP: 0px
}
.page-header .project-title .project-name {
	COLOR: #000; FONT-SIZE: 16px; FONT-WEIGHT: normal
}
.org-name {
	PADDING-LEFT: 0px; MARGIN-RIGHT: 0px
}
.page-header .user-links {
	DISPLAY: none
}
.page-header .breadcrumbs {
	DISPLAY: none
}
.page-header .tabs {
	DISPLAY: none
}
.l-side-bar {
	DISPLAY: none
}
.main-2-col {
	BACKGROUND-COLOR: #fff; MARGIN: 0px; WIDTH: 100%; FLOAT: left
}
.project .header {
	DISPLAY: none
}
.project .details {
	BORDER-BOTTOM: silver 1px solid; BORDER-LEFT: silver 1px solid; MARGIN: =
5px 0px 10px; MIN-HEIGHT: 100px; BORDER-TOP: silver 1px solid; =
BORDER-RIGHT: silver 1px solid
}
.project .details H3 {
	FONT-SIZE: 12px
}
.project .details TR TD {
	FONT-SIZE: 10px
}
.project .section H3 {
	BORDER-BOTTOM: silver 1px solid; PADDING-BOTTOM: 10px; MARGIN-TOP: =
20px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; MARGIN-BOTTOM: 10px; =
FONT-SIZE: 14px; BORDER-TOP: silver 1px solid; PADDING-TOP: 10px
}
.project .section-items {
	MARGIN: 5px 0px 2px; MIN-HEIGHT: 0px
}
.project .section-items UL {
	MARGIN-BOTTOM: 10px
}
.project .section-items .question {
	PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; PADDING-RIGHT: 5px; =
FONT-WEIGHT: bold; BORDER-RIGHT: medium none; PADDING-TOP: 5px
}
.project .section-items .answer {
	BORDER-BOTTOM: medium none; MIN-HEIGHT: 20px; BORDER-RIGHT: medium none
}
.section-items .detail {
	MARGIN-LEFT: 30px; FONT-SIZE: 11px
}
.section-items .detail P {
	FONT-SIZE: 11px
}
OL {
	FONT-SIZE: 11px
}
UL {
	FONT-SIZE: 11px
}
.section-items .label {
	WIDTH: 30px; FONT-SIZE: 18px
}
.section {
	PAGE-BREAK-AFTER: always
}
.section-item {
	PAGE-BREAK-INSIDE: avoid
}
.edit-link {
	DISPLAY: none
}
.item-edit {
	DISPLAY: none
}
.item-edit-first {
	DISPLAY: none
}

------=_NextPart_000_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/javascripts/prototype.js?1284589638

/*  Prototype JavaScript framework, version 1.6.0.3=0A=
 *  (c) 2005-2008 Sam Stephenson=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *  For details, see the Prototype web site: http://www.prototypejs.org/=0A=
 *=0A=
 =
*------------------------------------------------------------------------=
--*/=0A=
=0A=
var Prototype =3D {=0A=
  Version: '1.6.0.3',=0A=
=0A=
  Browser: {=0A=
    IE:     !!(window.attachEvent &&=0A=
      navigator.userAgent.indexOf('Opera') =3D=3D=3D -1),=0A=
    Opera:  navigator.userAgent.indexOf('Opera') > -1,=0A=
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A=
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 &&=0A=
      navigator.userAgent.indexOf('KHTML') =3D=3D=3D -1,=0A=
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A=
  },=0A=
=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate,=0A=
    SelectorsAPI: !!document.querySelector,=0A=
    ElementExtensions: !!window.HTMLElement,=0A=
    SpecificElementExtensions:=0A=
      document.createElement('div')['__proto__'] &&=0A=
      document.createElement('div')['__proto__'] !=3D=3D=0A=
        document.createElement('form')['__proto__']=0A=
  },=0A=
=0A=
  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',=0A=
  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A=
=0A=
  emptyFunction: function() { },=0A=
  K: function(x) { return x }=0A=
};=0A=
=0A=
if (Prototype.Browser.MobileSafari)=0A=
  Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A=
=0A=
=0A=
/* Based on Alex Arnell's inheritance implementation. */=0A=
var Class =3D {=0A=
  create: function() {=0A=
    var parent =3D null, properties =3D $A(arguments);=0A=
    if (Object.isFunction(properties[0]))=0A=
      parent =3D properties.shift();=0A=
=0A=
    function klass() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
=0A=
    Object.extend(klass, Class.Methods);=0A=
    klass.superclass =3D parent;=0A=
    klass.subclasses =3D [];=0A=
=0A=
    if (parent) {=0A=
      var subclass =3D function() { };=0A=
      subclass.prototype =3D parent.prototype;=0A=
      klass.prototype =3D new subclass;=0A=
      parent.subclasses.push(klass);=0A=
    }=0A=
=0A=
    for (var i =3D 0; i < properties.length; i++)=0A=
      klass.addMethods(properties[i]);=0A=
=0A=
    if (!klass.prototype.initialize)=0A=
      klass.prototype.initialize =3D Prototype.emptyFunction;=0A=
=0A=
    klass.prototype.constructor =3D klass;=0A=
=0A=
    return klass;=0A=
  }=0A=
};=0A=
=0A=
Class.Methods =3D {=0A=
  addMethods: function(source) {=0A=
    var ancestor   =3D this.superclass && this.superclass.prototype;=0A=
    var properties =3D Object.keys(source);=0A=
=0A=
    if (!Object.keys({ toString: true }).length)=0A=
      properties.push("toString", "valueOf");=0A=
=0A=
    for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A=
      var property =3D properties[i], value =3D source[property];=0A=
      if (ancestor && Object.isFunction(value) &&=0A=
          value.argumentNames().first() =3D=3D "$super") {=0A=
        var method =3D value;=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=
=0A=
var Abstract =3D { };=0A=
=0A=
Object.extend =3D function(destination, source) {=0A=
  for (var property in source)=0A=
    destination[property] =3D source[property];=0A=
  return destination;=0A=
};=0A=
=0A=
Object.extend(Object, {=0A=
  inspect: function(object) {=0A=
    try {=0A=
      if (Object.isUndefined(object)) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : String(object);=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  },=0A=
=0A=
  toJSON: function(object) {=0A=
    var type =3D typeof object;=0A=
    switch (type) {=0A=
      case 'undefined':=0A=
      case 'function':=0A=
      case 'unknown': return;=0A=
      case 'boolean': return object.toString();=0A=
    }=0A=
=0A=
    if (object =3D=3D=3D null) return 'null';=0A=
    if (object.toJSON) return object.toJSON();=0A=
    if (Object.isElement(object)) return;=0A=
=0A=
    var results =3D [];=0A=
    for (var property in object) {=0A=
      var value =3D Object.toJSON(object[property]);=0A=
      if (!Object.isUndefined(value))=0A=
        results.push(property.toJSON() + ': ' + value);=0A=
    }=0A=
=0A=
    return '{' + results.join(', ') + '}';=0A=
  },=0A=
=0A=
  toQueryString: function(object) {=0A=
    return $H(object).toQueryString();=0A=
  },=0A=
=0A=
  toHTML: function(object) {=0A=
    return object && object.toHTML ? object.toHTML() : =
String.interpret(object);=0A=
  },=0A=
=0A=
  keys: function(object) {=0A=
    var keys =3D [];=0A=
    for (var property in object)=0A=
      keys.push(property);=0A=
    return keys;=0A=
  },=0A=
=0A=
  values: function(object) {=0A=
    var values =3D [];=0A=
    for (var property in object)=0A=
      values.push(object[property]);=0A=
    return values;=0A=
  },=0A=
=0A=
  clone: function(object) {=0A=
    return Object.extend({ }, object);=0A=
  },=0A=
=0A=
  isElement: function(object) {=0A=
    return !!(object && object.nodeType =3D=3D 1);=0A=
  },=0A=
=0A=
  isArray: function(object) {=0A=
    return object !=3D null && typeof object =3D=3D "object" &&=0A=
      'splice' in object && 'join' in object;=0A=
  },=0A=
=0A=
  isHash: function(object) {=0A=
    return object instanceof Hash;=0A=
  },=0A=
=0A=
  isFunction: function(object) {=0A=
    return typeof object =3D=3D "function";=0A=
  },=0A=
=0A=
  isString: function(object) {=0A=
    return typeof object =3D=3D "string";=0A=
  },=0A=
=0A=
  isNumber: function(object) {=0A=
    return typeof object =3D=3D "number";=0A=
  },=0A=
=0A=
  isUndefined: function(object) {=0A=
    return typeof object =3D=3D "undefined";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Function.prototype, {=0A=
  argumentNames: function() {=0A=
    var names =3D =
this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1]=0A=
      .replace(/\s+/g, '').split(',');=0A=
    return names.length =3D=3D 1 && !names[0] ? [] : names;=0A=
  },=0A=
=0A=
  bind: function() {=0A=
    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return =
this;=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function() {=0A=
      return __method.apply(object, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  bindAsEventListener: function() {=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function(event) {=0A=
      return __method.apply(object, [event || =
window.event].concat(args));=0A=
    }=0A=
  },=0A=
=0A=
  curry: function() {=0A=
    if (!arguments.length) return this;=0A=
    var __method =3D this, args =3D $A(arguments);=0A=
    return function() {=0A=
      return __method.apply(this, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  delay: function() {=0A=
    var __method =3D this, args =3D $A(arguments), timeout =3D =
args.shift() * 1000;=0A=
    return window.setTimeout(function() {=0A=
      return __method.apply(__method, args);=0A=
    }, timeout);=0A=
  },=0A=
=0A=
  defer: function() {=0A=
    var args =3D [0.01].concat($A(arguments));=0A=
    return this.delay.apply(this, args);=0A=
  },=0A=
=0A=
  wrap: function(wrapper) {=0A=
    var __method =3D this;=0A=
    return function() {=0A=
      return wrapper.apply(this, =
[__method.bind(this)].concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  methodize: function() {=0A=
    if (this._methodized) return this._methodized;=0A=
    var __method =3D this;=0A=
    return this._methodized =3D function() {=0A=
      return __method.apply(null, [this].concat($A(arguments)));=0A=
    };=0A=
  }=0A=
});=0A=
=0A=
Date.prototype.toJSON =3D function() {=0A=
  return '"' + this.getUTCFullYear() + '-' +=0A=
    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A=
    this.getUTCDate().toPaddedString(2) + 'T' +=0A=
    this.getUTCHours().toPaddedString(2) + ':' +=0A=
    this.getUTCMinutes().toPaddedString(2) + ':' +=0A=
    this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A=
};=0A=
=0A=
var Try =3D {=0A=
  these: function() {=0A=
    var returnValue;=0A=
=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var lambda =3D arguments[i];=0A=
      try {=0A=
        returnValue =3D lambda();=0A=
        break;=0A=
      } catch (e) { }=0A=
    }=0A=
=0A=
    return returnValue;=0A=
  }=0A=
};=0A=
=0A=
RegExp.prototype.match =3D RegExp.prototype.test;=0A=
=0A=
RegExp.escape =3D function(str) {=0A=
  return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var PeriodicalExecuter =3D Class.create({=0A=
  initialize: function(callback, frequency) {=0A=
    this.callback =3D callback;=0A=
    this.frequency =3D frequency;=0A=
    this.currentlyExecuting =3D false;=0A=
=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    this.timer =3D setInterval(this.onTimerEvent.bind(this), =
this.frequency * 1000);=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    this.callback(this);=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    if (!this.timer) return;=0A=
    clearInterval(this.timer);=0A=
    this.timer =3D null;=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    if (!this.currentlyExecuting) {=0A=
      try {=0A=
        this.currentlyExecuting =3D true;=0A=
        this.execute();=0A=
      } finally {=0A=
        this.currentlyExecuting =3D false;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
Object.extend(String, {=0A=
  interpret: function(value) {=0A=
    return value =3D=3D null ? '' : String(value);=0A=
  },=0A=
  specialChar: {=0A=
    '\b': '\\b',=0A=
    '\t': '\\t',=0A=
    '\n': '\\n',=0A=
    '\f': '\\f',=0A=
    '\r': '\\r',=0A=
    '\\': '\\\\'=0A=
  }=0A=
});=0A=
=0A=
Object.extend(String.prototype, {=0A=
  gsub: function(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D arguments.callee.prepareReplacement(replacement);=0A=
=0A=
    while (source.length > 0) {=0A=
      if (match =3D source.match(pattern)) {=0A=
        result +=3D source.slice(0, match.index);=0A=
        result +=3D String.interpret(replacement(match));=0A=
        source  =3D source.slice(match.index + match[0].length);=0A=
      } else {=0A=
        result +=3D source, source =3D '';=0A=
      }=0A=
    }=0A=
    return result;=0A=
  },=0A=
=0A=
  sub: function(pattern, replacement, count) {=0A=
    replacement =3D this.gsub.prepareReplacement(replacement);=0A=
    count =3D Object.isUndefined(count) ? 1 : count;=0A=
=0A=
    return this.gsub(pattern, function(match) {=0A=
      if (--count < 0) return match[0];=0A=
      return replacement(match);=0A=
    });=0A=
  },=0A=
=0A=
  scan: function(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return String(this);=0A=
  },=0A=
=0A=
  truncate: function(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : =
String(this);=0A=
  },=0A=
=0A=
  strip: function() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  },=0A=
=0A=
  stripTags: function() {=0A=
    return this.replace(/<\/?[^>]+>/gi, '');=0A=
  },=0A=
=0A=
  stripScripts: function() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  },=0A=
=0A=
  extractScripts: function() {=0A=
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A=
    var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A=
    return (this.match(matchAll) || []).map(function(scriptTag) {=0A=
      return (scriptTag.match(matchOne) || ['', ''])[1];=0A=
    });=0A=
  },=0A=
=0A=
  evalScripts: function() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  },=0A=
=0A=
  escapeHTML: function() {=0A=
    var self =3D arguments.callee;=0A=
    self.text.data =3D this;=0A=
    return self.div.innerHTML;=0A=
  },=0A=
=0A=
  unescapeHTML: function() {=0A=
    var div =3D new Element('div');=0A=
    div.innerHTML =3D this.stripTags();=0A=
    return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A=
      $A(div.childNodes).inject('', function(memo, node) { return =
memo+node.nodeValue }) :=0A=
      div.childNodes[0].nodeValue) : '';=0A=
  },=0A=
=0A=
  toQueryParams: function(separator) {=0A=
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A=
    if (!match) return { };=0A=
=0A=
    return match[1].split(separator || '&').inject({ }, function(hash, =
pair) {=0A=
      if ((pair =3D pair.split('=3D'))[0]) {=0A=
        var key =3D decodeURIComponent(pair.shift());=0A=
        var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A=
        if (value !=3D undefined) value =3D decodeURIComponent(value);=0A=
=0A=
        if (key in hash) {=0A=
          if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A=
          hash[key].push(value);=0A=
        }=0A=
        else hash[key] =3D value;=0A=
      }=0A=
      return hash;=0A=
    });=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.split('');=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  },=0A=
=0A=
  times: function(count) {=0A=
    return count < 1 ? '' : new Array(count + 1).join(this);=0A=
  },=0A=
=0A=
  camelize: function() {=0A=
    var parts =3D this.split('-'), len =3D parts.length;=0A=
    if (len =3D=3D 1) return parts[0];=0A=
=0A=
    var camelized =3D this.charAt(0) =3D=3D '-'=0A=
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A=
      : parts[0];=0A=
=0A=
    for (var i =3D 1; i < len; i++)=0A=
      camelized +=3D parts[i].charAt(0).toUpperCase() + =
parts[i].substring(1);=0A=
=0A=
    return camelized;=0A=
  },=0A=
=0A=
  capitalize: function() {=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  },=0A=
=0A=
  underscore: function() {=0A=
    return this.gsub(/::/, =
'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{=
1}_#{2}').gsub(/-/,'_').toLowerCase();=0A=
  },=0A=
=0A=
  dasherize: function() {=0A=
    return this.gsub(/_/,'-');=0A=
  },=0A=
=0A=
  inspect: function(useDoubleQuotes) {=0A=
    var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A=
      var character =3D String.specialChar[match[0]];=0A=
      return character ? character : '\\u00' + =
match[0].charCodeAt().toPaddedString(2, 16);=0A=
    });=0A=
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';=0A=
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return this.inspect(true);=0A=
  },=0A=
=0A=
  unfilterJSON: function(filter) {=0A=
    return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A=
  },=0A=
=0A=
  isJSON: function() {=0A=
    var str =3D this;=0A=
    if (str.blank()) return false;=0A=
    str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A=
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A=
  },=0A=
=0A=
  evalJSON: function(sanitize) {=0A=
    var json =3D this.unfilterJSON();=0A=
    try {=0A=
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A=
    } catch (e) { }=0A=
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A=
  },=0A=
=0A=
  include: function(pattern) {=0A=
    return this.indexOf(pattern) > -1;=0A=
  },=0A=
=0A=
  startsWith: function(pattern) {=0A=
    return this.indexOf(pattern) =3D=3D=3D 0;=0A=
  },=0A=
=0A=
  endsWith: function(pattern) {=0A=
    var d =3D this.length - pattern.length;=0A=
    return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A=
  },=0A=
=0A=
  empty: function() {=0A=
    return this =3D=3D '';=0A=
  },=0A=
=0A=
  blank: function() {=0A=
    return /^\s*$/.test(this);=0A=
  },=0A=
=0A=
  interpolate: function(object, pattern) {=0A=
    return new Template(this, pattern).evaluate(object);=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.WebKit || Prototype.Browser.IE) =
Object.extend(String.prototype, {=0A=
  escapeHTML: function() {=0A=
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');=0A=
  },=0A=
  unescapeHTML: function() {=0A=
    return =
this.stripTags().replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;=
/g,'>');=0A=
  }=0A=
});=0A=
=0A=
String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A=
  if (Object.isFunction(replacement)) return replacement;=0A=
  var template =3D new Template(replacement);=0A=
  return function(match) { return template.evaluate(match) };=0A=
};=0A=
=0A=
String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A=
=0A=
Object.extend(String.prototype.escapeHTML, {=0A=
  div:  document.createElement('div'),=0A=
  text: document.createTextNode('')=0A=
});=0A=
=0A=
String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.t=
ext);=0A=
=0A=
var Template =3D Class.create({=0A=
  initialize: function(template, pattern) {=0A=
    this.template =3D template.toString();=0A=
    this.pattern =3D pattern || Template.Pattern;=0A=
  },=0A=
=0A=
  evaluate: function(object) {=0A=
    if (Object.isFunction(object.toTemplateReplacements))=0A=
      object =3D object.toTemplateReplacements();=0A=
=0A=
    return this.template.gsub(this.pattern, function(match) {=0A=
      if (object =3D=3D null) return '';=0A=
=0A=
      var before =3D match[1] || '';=0A=
      if (before =3D=3D '\\') return match[2];=0A=
=0A=
      var ctx =3D object, expr =3D match[3];=0A=
      var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A=
      match =3D pattern.exec(expr);=0A=
      if (match =3D=3D null) return before;=0A=
=0A=
      while (match !=3D null) {=0A=
        var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', =
']') : match[1];=0A=
        ctx =3D ctx[comp];=0A=
        if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A=
        expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : =
match[0].length);=0A=
        match =3D pattern.exec(expr);=0A=
      }=0A=
=0A=
      return before + String.interpret(ctx);=0A=
    });=0A=
  }=0A=
});=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
=0A=
var $break =3D { };=0A=
=0A=
var Enumerable =3D {=0A=
  each: function(iterator, context) {=0A=
    var index =3D 0;=0A=
    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=
  eachSlice: function(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=
  all: function(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=
  any: function(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=
  collect: function(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=
  detect: function(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=
  findAll: function(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=
  grep: function(filter, iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var results =3D [];=0A=
=0A=
    if (Object.isString(filter))=0A=
      filter =3D new RegExp(filter);=0A=
=0A=
    this.each(function(value, index) {=0A=
      if (filter.match(value))=0A=
        results.push(iterator.call(context, value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  include: function(object) {=0A=
    if (Object.isFunction(this.indexOf))=0A=
      if (this.indexOf(object) !=3D -1) return true;=0A=
=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  },=0A=
=0A=
  inGroupsOf: function(number, fillWith) {=0A=
    fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  },=0A=
=0A=
  inject: function(memo, iterator, context) {=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator.call(context, memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  },=0A=
=0A=
  invoke: function(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.map(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  },=0A=
=0A=
  max: function(iterator, context) {=0A=
    iterator =3D iterator || 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=
  min: function(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=
  partition: function(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=
  pluck: function(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  reject: function(iterator, context) {=0A=
    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=
  sortBy: function(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=
  toArray: function() {=0A=
    return this.map();=0A=
  },=0A=
=0A=
  zip: function() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (Object.isFunction(args.last()))=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      return iterator(collections.pluck(index));=0A=
    });=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.toArray().length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Enumerable, {=0A=
  map:     Enumerable.collect,=0A=
  find:    Enumerable.detect,=0A=
  select:  Enumerable.findAll,=0A=
  filter:  Enumerable.findAll,=0A=
  member:  Enumerable.include,=0A=
  entries: Enumerable.toArray,=0A=
  every:   Enumerable.all,=0A=
  some:    Enumerable.any=0A=
});=0A=
function $A(iterable) {=0A=
  if (!iterable) return [];=0A=
  if (iterable.toArray) return iterable.toArray();=0A=
  var length =3D iterable.length || 0, results =3D new Array(length);=0A=
  while (length--) results[length] =3D iterable[length];=0A=
  return results;=0A=
}=0A=
=0A=
if (Prototype.Browser.WebKit) {=0A=
  $A =3D function(iterable) {=0A=
    if (!iterable) return [];=0A=
    // In Safari, only use the `toArray` method if it's not a NodeList.=0A=
    // A NodeList is a function, has an function `item` property, and a =
numeric=0A=
    // `length` property. Adapted from Google Doctype.=0A=
    if (!(typeof iterable =3D=3D=3D 'function' && typeof iterable.length =
=3D=3D=3D=0A=
        'number' && typeof iterable.item =3D=3D=3D 'function') && =
iterable.toArray)=0A=
      return iterable.toArray();=0A=
    var length =3D iterable.length || 0, results =3D new Array(length);=0A=
    while (length--) results[length] =3D iterable[length];=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
Array.from =3D $A;=0A=
=0A=
Object.extend(Array.prototype, Enumerable);=0A=
=0A=
if (!Array.prototype._reverse) Array.prototype._reverse =3D =
Array.prototype.reverse;=0A=
=0A=
Object.extend(Array.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      iterator(this[i]);=0A=
  },=0A=
=0A=
  clear: function() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  },=0A=
=0A=
  first: function() {=0A=
    return this[0];=0A=
  },=0A=
=0A=
  last: function() {=0A=
    return this[this.length - 1];=0A=
  },=0A=
=0A=
  compact: function() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  },=0A=
=0A=
  flatten: function() {=0A=
    return this.inject([], function(array, value) {=0A=
      return array.concat(Object.isArray(value) ?=0A=
        value.flatten() : [value]);=0A=
    });=0A=
  },=0A=
=0A=
  without: function() {=0A=
    var values =3D $A(arguments);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  },=0A=
=0A=
  reverse: function(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  },=0A=
=0A=
  reduce: function() {=0A=
    return this.length > 1 ? this : this[0];=0A=
  },=0A=
=0A=
  uniq: function(sorted) {=0A=
    return this.inject([], function(array, value, index) {=0A=
      if (0 =3D=3D index || (sorted ? array.last() !=3D value : =
!array.include(value)))=0A=
        array.push(value);=0A=
      return array;=0A=
    });=0A=
  },=0A=
=0A=
  intersect: function(array) {=0A=
    return this.uniq().findAll(function(item) {=0A=
      return array.detect(function(value) { return item =3D=3D=3D value =
});=0A=
    });=0A=
  },=0A=
=0A=
  clone: function() {=0A=
    return [].concat(this);=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    var results =3D [];=0A=
    this.each(function(object) {=0A=
      var value =3D Object.toJSON(object);=0A=
      if (!Object.isUndefined(value)) results.push(value);=0A=
    });=0A=
    return '[' + results.join(', ') + ']';=0A=
  }=0A=
});=0A=
=0A=
// use native browser JS 1.6 implementation if available=0A=
if (Object.isFunction(Array.prototype.forEach))=0A=
  Array.prototype._each =3D Array.prototype.forEach;=0A=
=0A=
if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, =
i) {=0A=
  i || (i =3D 0);=0A=
  var length =3D this.length;=0A=
  if (i < 0) i =3D length + i;=0A=
  for (; i < length; i++)=0A=
    if (this[i] =3D=3D=3D item) return i;=0A=
  return -1;=0A=
};=0A=
=0A=
if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D =
function(item, i) {=0A=
  i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A=
  var n =3D this.slice(0, i).reverse().indexOf(item);=0A=
  return (n < 0) ? n : i - n - 1;=0A=
};=0A=
=0A=
Array.prototype.toArray =3D Array.prototype.clone;=0A=
=0A=
function $w(string) {=0A=
  if (!Object.isString(string)) return [];=0A=
  string =3D string.strip();=0A=
  return string ? string.split(/\s+/) : [];=0A=
}=0A=
=0A=
if (Prototype.Browser.Opera){=0A=
  Array.prototype.concat =3D function() {=0A=
    var array =3D [];=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++) =
array.push(this[i]);=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      if (Object.isArray(arguments[i])) {=0A=
        for (var j =3D 0, arrayLength =3D arguments[i].length; j < =
arrayLength; j++)=0A=
          array.push(arguments[i][j]);=0A=
      } else {=0A=
        array.push(arguments[i]);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  };=0A=
}=0A=
Object.extend(Number.prototype, {=0A=
  toColorPart: function() {=0A=
    return this.toPaddedString(2, 16);=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this + 1;=0A=
  },=0A=
=0A=
  times: function(iterator, context) {=0A=
    $R(0, this, true).each(iterator, context);=0A=
    return this;=0A=
  },=0A=
=0A=
  toPaddedString: function(length, radix) {=0A=
    var string =3D this.toString(radix || 10);=0A=
    return '0'.times(length - string.length) + string;=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return isFinite(this) ? this.toString() : 'null';=0A=
  }=0A=
});=0A=
=0A=
$w('abs round ceil floor').each(function(method){=0A=
  Number.prototype[method] =3D Math[method].methodize();=0A=
});=0A=
function $H(object) {=0A=
  return new Hash(object);=0A=
};=0A=
=0A=
var Hash =3D Class.create(Enumerable, (function() {=0A=
=0A=
  function toQueryPair(key, value) {=0A=
    if (Object.isUndefined(value)) return key;=0A=
    return key + '=3D' + encodeURIComponent(String.interpret(value));=0A=
  }=0A=
=0A=
  return {=0A=
    initialize: function(object) {=0A=
      this._object =3D Object.isHash(object) ? object.toObject() : =
Object.clone(object);=0A=
    },=0A=
=0A=
    _each: function(iterator) {=0A=
      for (var key in this._object) {=0A=
        var value =3D this._object[key], pair =3D [key, value];=0A=
        pair.key =3D key;=0A=
        pair.value =3D value;=0A=
        iterator(pair);=0A=
      }=0A=
    },=0A=
=0A=
    set: function(key, value) {=0A=
      return this._object[key] =3D value;=0A=
    },=0A=
=0A=
    get: function(key) {=0A=
      // simulating poorly supported hasOwnProperty=0A=
      if (this._object[key] !=3D=3D Object.prototype[key])=0A=
        return this._object[key];=0A=
    },=0A=
=0A=
    unset: function(key) {=0A=
      var value =3D this._object[key];=0A=
      delete this._object[key];=0A=
      return value;=0A=
    },=0A=
=0A=
    toObject: function() {=0A=
      return Object.clone(this._object);=0A=
    },=0A=
=0A=
    keys: function() {=0A=
      return this.pluck('key');=0A=
    },=0A=
=0A=
    values: function() {=0A=
      return this.pluck('value');=0A=
    },=0A=
=0A=
    index: function(value) {=0A=
      var match =3D this.detect(function(pair) {=0A=
        return pair.value =3D=3D=3D value;=0A=
      });=0A=
      return match && match.key;=0A=
    },=0A=
=0A=
    merge: function(object) {=0A=
      return this.clone().update(object);=0A=
    },=0A=
=0A=
    update: function(object) {=0A=
      return new Hash(object).inject(this, function(result, pair) {=0A=
        result.set(pair.key, pair.value);=0A=
        return result;=0A=
      });=0A=
    },=0A=
=0A=
    toQueryString: function() {=0A=
      return this.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=
    inspect: function() {=0A=
      return '#<Hash:{' + this.map(function(pair) {=0A=
        return pair.map(Object.inspect).join(': ');=0A=
      }).join(', ') + '}>';=0A=
    },=0A=
=0A=
    toJSON: function() {=0A=
      return Object.toJSON(this.toObject());=0A=
    },=0A=
=0A=
    clone: function() {=0A=
      return new Hash(this);=0A=
    }=0A=
  }=0A=
})());=0A=
=0A=
Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;=0A=
Hash.from =3D $H;=0A=
var ObjectRange =3D Class.create(Enumerable, {=0A=
  initialize: function(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  },=0A=
=0A=
  include: function(value) {=0A=
    if (value < this.start)=0A=
      return false;=0A=
    if (this.exclusive)=0A=
      return value < this.end;=0A=
    return value <=3D this.end;=0A=
  }=0A=
});=0A=
=0A=
var $R =3D function(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
};=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new XMLHttpRequest()},=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
};=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responder) {=0A=
    if (!this.include(responder))=0A=
      this.responders.push(responder);=0A=
  },=0A=
=0A=
  unregister: function(responder) {=0A=
    this.responders =3D this.responders.without(responder);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (Object.isFunction(responder[callback])) {=0A=
        try {=0A=
          responder[callback].apply(responder, [request, transport, =
json]);=0A=
        } catch (e) { }=0A=
      }=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Ajax.Responders, Enumerable);=0A=
=0A=
Ajax.Responders.register({=0A=
  onCreate:   function() { Ajax.activeRequestCount++ },=0A=
  onComplete: function() { Ajax.activeRequestCount-- }=0A=
});=0A=
=0A=
Ajax.Base =3D Class.create({=0A=
  initialize: function(options) {=0A=
    this.options =3D {=0A=
      method:       'post',=0A=
      asynchronous: true,=0A=
      contentType:  'application/x-www-form-urlencoded',=0A=
      encoding:     'UTF-8',=0A=
      parameters:   '',=0A=
      evalJSON:     true,=0A=
      evalJS:       true=0A=
    };=0A=
    Object.extend(this.options, options || { });=0A=
=0A=
    this.options.method =3D this.options.method.toLowerCase();=0A=
=0A=
    if (Object.isString(this.options.parameters))=0A=
      this.options.parameters =3D =
this.options.parameters.toQueryParams();=0A=
    else if (Object.isHash(this.options.parameters))=0A=
      this.options.parameters =3D this.options.parameters.toObject();=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request =3D Class.create(Ajax.Base, {=0A=
  _complete: false,=0A=
=0A=
  initialize: function($super, url, options) {=0A=
    $super(options);=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    this.url =3D url;=0A=
    this.method =3D this.options.method;=0A=
    var params =3D Object.clone(this.options.parameters);=0A=
=0A=
    if (!['get', 'post'].include(this.method)) {=0A=
      // simulate other verbs over post=0A=
      params['_method'] =3D this.method;=0A=
      this.method =3D 'post';=0A=
    }=0A=
=0A=
    this.parameters =3D params;=0A=
=0A=
    if (params =3D Object.toQueryString(params)) {=0A=
      // when GET, append parameters to URL=0A=
      if (this.method =3D=3D 'get')=0A=
        this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A=
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A=
        params +=3D '&_=3D';=0A=
    }=0A=
=0A=
    try {=0A=
      var response =3D new Ajax.Response(this);=0A=
      if (this.options.onCreate) this.options.onCreate(response);=0A=
      Ajax.Responders.dispatch('onCreate', this, response);=0A=
=0A=
      this.transport.open(this.method.toUpperCase(), this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous) =
this.respondToReadyState.bind(this).defer(1);=0A=
=0A=
      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
      this.setRequestHeaders();=0A=
=0A=
      this.body =3D this.method =3D=3D 'post' ? (this.options.postBody =
|| params) : null;=0A=
      this.transport.send(this.body);=0A=
=0A=
      /* Force Firefox to handle ready state 4 for synchronous requests =
*/=0A=
      if (!this.options.asynchronous && this.transport.overrideMimeType)=0A=
        this.onStateChange();=0A=
=0A=
    }=0A=
    catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var headers =3D {=0A=
      'X-Requested-With': 'XMLHttpRequest',=0A=
      'X-Prototype-Version': Prototype.Version,=0A=
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'=0A=
    };=0A=
=0A=
    if (this.method =3D=3D 'post') {=0A=
      headers['Content-type'] =3D this.options.contentType +=0A=
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');=0A=
=0A=
      /* Force "Connection: close" for older Mozilla browsers to work=0A=
       * around a bug where XMLHttpRequest sends an incorrect=0A=
       * Content-length header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType &&=0A=
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)=0A=
            headers['Connection'] =3D 'close';=0A=
    }=0A=
=0A=
    // user-defined headers=0A=
    if (typeof this.options.requestHeaders =3D=3D 'object') {=0A=
      var extras =3D this.options.requestHeaders;=0A=
=0A=
      if (Object.isFunction(extras.push))=0A=
        for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A=
          headers[extras[i]] =3D extras[i+1];=0A=
      else=0A=
        $H(extras).each(function(pair) { headers[pair.key] =3D =
pair.value });=0A=
    }=0A=
=0A=
    for (var name in headers)=0A=
      this.transport.setRequestHeader(name, headers[name]);=0A=
  },=0A=
=0A=
  success: function() {=0A=
    var status =3D this.getStatus();=0A=
    return !status || (status >=3D 200 && status < 300);=0A=
  },=0A=
=0A=
  getStatus: function() {=0A=
    try {=0A=
      return this.transport.status || 0;=0A=
    } catch (e) { return 0 }=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var state =3D Ajax.Request.Events[readyState], response =3D new =
Ajax.Response(this);=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      try {=0A=
        this._complete =3D true;=0A=
        (this.options['on' + response.status]=0A=
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A=
         || Prototype.emptyFunction)(response, response.headerJSON);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      var contentType =3D response.getHeader('Content-type');=0A=
      if (this.options.evalJS =3D=3D 'force'=0A=
          || (this.options.evalJS && this.isSameOrigin() && contentType=0A=
          && =
contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s=
*$/i)))=0A=
        this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + state] || Prototype.emptyFunction)(response, =
response.headerJSON);=0A=
      Ajax.Responders.dispatch('on' + state, this, response, =
response.headerJSON);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      // avoid memory leak in MSIE: clean up=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  isSameOrigin: function() {=0A=
    var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A=
    return !m || (m[0] =3D=3D =
'#{protocol}//#{domain}#{port}'.interpolate({=0A=
      protocol: location.protocol,=0A=
      domain: document.domain,=0A=
      port: location.port ? ':' + location.port : ''=0A=
    }));=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name) || null;=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval((this.transport.responseText || '').unfilterJSON());=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  dispatchException: function(exception) {=0A=
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);=0A=
    Ajax.Responders.dispatch('onException', this, exception);=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
Ajax.Response =3D Class.create({=0A=
  initialize: function(request){=0A=
    this.request =3D request;=0A=
    var transport  =3D this.transport  =3D request.transport,=0A=
        readyState =3D this.readyState =3D transport.readyState;=0A=
=0A=
    if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) =
{=0A=
      this.status       =3D this.getStatus();=0A=
      this.statusText   =3D this.getStatusText();=0A=
      this.responseText =3D String.interpret(transport.responseText);=0A=
      this.headerJSON   =3D this._getHeaderJSON();=0A=
    }=0A=
=0A=
    if(readyState =3D=3D 4) {=0A=
      var xml =3D transport.responseXML;=0A=
      this.responseXML  =3D Object.isUndefined(xml) ? null : xml;=0A=
      this.responseJSON =3D this._getResponseJSON();=0A=
    }=0A=
  },=0A=
=0A=
  status:      0,=0A=
  statusText: '',=0A=
=0A=
  getStatus: Ajax.Request.prototype.getStatus,=0A=
=0A=
  getStatusText: function() {=0A=
    try {=0A=
      return this.transport.statusText || '';=0A=
    } catch (e) { return '' }=0A=
  },=0A=
=0A=
  getHeader: Ajax.Request.prototype.getHeader,=0A=
=0A=
  getAllHeaders: function() {=0A=
    try {=0A=
      return this.getAllResponseHeaders();=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  getResponseHeader: function(name) {=0A=
    return this.transport.getResponseHeader(name);=0A=
  },=0A=
=0A=
  getAllResponseHeaders: function() {=0A=
    return this.transport.getAllResponseHeaders();=0A=
  },=0A=
=0A=
  _getHeaderJSON: function() {=0A=
    var json =3D this.getHeader('X-JSON');=0A=
    if (!json) return null;=0A=
    json =3D decodeURIComponent(escape(json));=0A=
    try {=0A=
      return json.evalJSON(this.request.options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  _getResponseJSON: function() {=0A=
    var options =3D this.request.options;=0A=
    if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A=
      !(this.getHeader('Content-type') || =
'').include('application/json')) ||=0A=
        this.responseText.blank())=0A=
          return null;=0A=
    try {=0A=
      return this.responseText.evalJSON(options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.Updater =3D Class.create(Ajax.Request, {=0A=
  initialize: function($super, container, url, options) {=0A=
    this.container =3D {=0A=
      success: (container.success || container),=0A=
      failure: (container.failure || (container.success ? null : =
container))=0A=
    };=0A=
=0A=
    options =3D Object.clone(options);=0A=
    var onComplete =3D options.onComplete;=0A=
    options.onComplete =3D (function(response, json) {=0A=
      this.updateContent(response.responseText);=0A=
      if (Object.isFunction(onComplete)) onComplete(response, json);=0A=
    }).bind(this);=0A=
=0A=
    $super(url, options);=0A=
  },=0A=
=0A=
  updateContent: function(responseText) {=0A=
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'],=0A=
        options =3D this.options;=0A=
=0A=
    if (!options.evalScripts) responseText =3D =
responseText.stripScripts();=0A=
=0A=
    if (receiver =3D $(receiver)) {=0A=
      if (options.insertion) {=0A=
        if (Object.isString(options.insertion)) {=0A=
          var insertion =3D { }; insertion[options.insertion] =3D =
responseText;=0A=
          receiver.insert(insertion);=0A=
        }=0A=
        else options.insertion(receiver, responseText);=0A=
      }=0A=
      else receiver.update(responseText);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A=
  initialize: function($super, container, url, options) {=0A=
    $super(options);=0A=
    this.onComplete =3D this.options.onComplete;=0A=
=0A=
    this.frequency =3D (this.options.frequency || 2);=0A=
    this.decay =3D (this.options.decay || 1);=0A=
=0A=
    this.updater =3D { };=0A=
    this.container =3D container;=0A=
    this.url =3D url;=0A=
=0A=
    this.start();=0A=
  },=0A=
=0A=
  start: function() {=0A=
    this.options.onComplete =3D this.updateComplete.bind(this);=0A=
    this.onTimerEvent();=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    this.updater.options.onComplete =3D undefined;=0A=
    clearTimeout(this.timer);=0A=
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A=
  },=0A=
=0A=
  updateComplete: function(response) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (response.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D response.responseText;=0A=
    }=0A=
    this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * =
this.frequency);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
function $(element) {=0A=
  if (arguments.length > 1) {=0A=
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)=0A=
      elements.push($(arguments[i]));=0A=
    return elements;=0A=
  }=0A=
  if (Object.isString(element))=0A=
    element =3D document.getElementById(element);=0A=
  return Element.extend(element);=0A=
}=0A=
=0A=
if (Prototype.BrowserFeatures.XPath) {=0A=
  document._getElementsByXPath =3D function(expression, parentElement) {=0A=
    var results =3D [];=0A=
    var query =3D document.evaluate(expression, $(parentElement) || =
document,=0A=
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
    for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A=
      results.push(Element.extend(query.snapshotItem(i)));=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!window.Node) var Node =3D { };=0A=
=0A=
if (!Node.ELEMENT_NODE) {=0A=
  // DOM level 2 ECMAScript Language Binding=0A=
  Object.extend(Node, {=0A=
    ELEMENT_NODE: 1,=0A=
    ATTRIBUTE_NODE: 2,=0A=
    TEXT_NODE: 3,=0A=
    CDATA_SECTION_NODE: 4,=0A=
    ENTITY_REFERENCE_NODE: 5,=0A=
    ENTITY_NODE: 6,=0A=
    PROCESSING_INSTRUCTION_NODE: 7,=0A=
    COMMENT_NODE: 8,=0A=
    DOCUMENT_NODE: 9,=0A=
    DOCUMENT_TYPE_NODE: 10,=0A=
    DOCUMENT_FRAGMENT_NODE: 11,=0A=
    NOTATION_NODE: 12=0A=
  });=0A=
}=0A=
=0A=
(function() {=0A=
  var element =3D this.Element;=0A=
  this.Element =3D function(tagName, attributes) {=0A=
    attributes =3D attributes || { };=0A=
    tagName =3D tagName.toLowerCase();=0A=
    var cache =3D Element.cache;=0A=
    if (Prototype.Browser.IE && attributes.name) {=0A=
      tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A=
      delete attributes.name;=0A=
      return Element.writeAttribute(document.createElement(tagName), =
attributes);=0A=
    }=0A=
    if (!cache[tagName]) cache[tagName] =3D =
Element.extend(document.createElement(tagName));=0A=
    return Element.writeAttribute(cache[tagName].cloneNode(false), =
attributes);=0A=
  };=0A=
  Object.extend(this.Element, element || { });=0A=
  if (element) this.Element.prototype =3D element.prototype;=0A=
}).call(window);=0A=
=0A=
Element.cache =3D { };=0A=
=0A=
Element.Methods =3D {=0A=
  visible: function(element) {=0A=
    return $(element).style.display !=3D 'none';=0A=
  },=0A=
=0A=
  toggle: function(element) {=0A=
    element =3D $(element);=0A=
    Element[Element.visible(element) ? 'hide' : 'show'](element);=0A=
    return element;=0A=
  },=0A=
=0A=
  hide: function(element) {=0A=
    element =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(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
    content =3D Object.toHTML(content);=0A=
    element.innerHTML =3D content.stripScripts();=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  },=0A=
=0A=
  replace: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    else if (!Object.isElement(content)) {=0A=
      content =3D Object.toHTML(content);=0A=
      var range =3D element.ownerDocument.createRange();=0A=
      range.selectNode(element);=0A=
      content.evalScripts.bind(content).defer();=0A=
      content =3D range.createContextualFragment(content.stripScripts());=0A=
    }=0A=
    element.parentNode.replaceChild(content, element);=0A=
    return element;=0A=
  },=0A=
=0A=
  insert: function(element, insertions) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A=
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))=0A=
          insertions =3D {bottom:insertions};=0A=
=0A=
    var content, insert, tagName, childNodes;=0A=
=0A=
    for (var position in insertions) {=0A=
      content  =3D insertions[position];=0A=
      position =3D position.toLowerCase();=0A=
      insert =3D Element._insertionTranslations[position];=0A=
=0A=
      if (content && content.toElement) content =3D content.toElement();=0A=
      if (Object.isElement(content)) {=0A=
        insert(element, content);=0A=
        continue;=0A=
      }=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A=
        ? element.parentNode : element).tagName.toUpperCase();=0A=
=0A=
      childNodes =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
=0A=
      if (position =3D=3D 'top' || position =3D=3D 'after') =
childNodes.reverse();=0A=
      childNodes.each(insert.curry(element));=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  wrap: function(element, wrapper, attributes) {=0A=
    element =3D $(element);=0A=
    if (Object.isElement(wrapper))=0A=
      $(wrapper).writeAttribute(attributes || { });=0A=
    else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, =
attributes);=0A=
    else wrapper =3D new Element('div', wrapper);=0A=
    if (element.parentNode)=0A=
      element.parentNode.replaceChild(wrapper, element);=0A=
    wrapper.appendChild(element);=0A=
    return wrapper;=0A=
  },=0A=
=0A=
  inspect: function(element) {=0A=
    element =3D $(element);=0A=
    var result =3D '<' + element.tagName.toLowerCase();=0A=
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A=
      var property =3D pair.first(), attribute =3D pair.last();=0A=
      var value =3D (element[property] || '').toString();=0A=
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);=0A=
    });=0A=
    return result + '>';=0A=
  },=0A=
=0A=
  recursivelyCollect: function(element, property) {=0A=
    element =3D $(element);=0A=
    var elements =3D [];=0A=
    while (element =3D element[property])=0A=
      if (element.nodeType =3D=3D 1)=0A=
        elements.push(Element.extend(element));=0A=
    return elements;=0A=
  },=0A=
=0A=
  ancestors: function(element) {=0A=
    return $(element).recursivelyCollect('parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return $(element).select("*");=0A=
  },=0A=
=0A=
  firstDescendant: function(element) {=0A=
    element =3D $(element).firstChild;=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    return $(element);=0A=
  },=0A=
=0A=
  immediateDescendants: function(element) {=0A=
    if (!(element =3D $(element).firstChild)) return [];=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    if (element) return [element].concat($(element).nextSiblings());=0A=
    return [];=0A=
  },=0A=
=0A=
  previousSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return =
element.previousSiblings().reverse().concat(element.nextSiblings());=0A=
  },=0A=
=0A=
  match: function(element, selector) {=0A=
    if (Object.isString(selector))=0A=
      selector =3D new Selector(selector);=0A=
    return selector.match($(element));=0A=
  },=0A=
=0A=
  up: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return $(element.parentNode);=0A=
    var ancestors =3D element.ancestors();=0A=
    return Object.isNumber(expression) ? ancestors[expression] :=0A=
      Selector.findElement(ancestors, expression, index);=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return element.firstDescendant();=0A=
    return Object.isNumber(expression) ? =
element.descendants()[expression] :=0A=
      Element.select(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();=0A=
    return Object.isNumber(expression) ? previousSiblings[expression] :=0A=
      Selector.findElement(previousSiblings, expression, index);=0A=
  },=0A=
=0A=
  next: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.nextElementSibling(element));=0A=
    var nextSiblings =3D element.nextSiblings();=0A=
    return Object.isNumber(expression) ? nextSiblings[expression] :=0A=
      Selector.findElement(nextSiblings, expression, index);=0A=
  },=0A=
=0A=
  select: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element, args);=0A=
  },=0A=
=0A=
  adjacent: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element.parentNode, =
args).without(element);=0A=
  },=0A=
=0A=
  identify: function(element) {=0A=
    element =3D $(element);=0A=
    var id =3D element.readAttribute('id'), self =3D arguments.callee;=0A=
    if (id) return id;=0A=
    do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));=0A=
    element.writeAttribute('id', id);=0A=
    return id;=0A=
  },=0A=
=0A=
  readAttribute: function(element, name) {=0A=
    element =3D $(element);=0A=
    if (Prototype.Browser.IE) {=0A=
      var t =3D Element._attributeTranslations.read;=0A=
      if (t.values[name]) return t.values[name](element, name);=0A=
      if (t.names[name]) name =3D t.names[name];=0A=
      if (name.include(':')) {=0A=
        return (!element.attributes || !element.attributes[name]) ? null =
:=0A=
         element.attributes[name].value;=0A=
      }=0A=
    }=0A=
    return element.getAttribute(name);=0A=
  },=0A=
=0A=
  writeAttribute: function(element, name, value) {=0A=
    element =3D $(element);=0A=
    var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A=
=0A=
    if (typeof name =3D=3D 'object') attributes =3D name;=0A=
    else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A=
=0A=
    for (var attr in attributes) {=0A=
      name =3D t.names[attr] || attr;=0A=
      value =3D attributes[attr];=0A=
      if (t.values[attr]) name =3D t.values[attr](element, value);=0A=
      if (value =3D=3D=3D false || value =3D=3D=3D null)=0A=
        element.removeAttribute(name);=0A=
      else if (value =3D=3D=3D true)=0A=
        element.setAttribute(name, name);=0A=
      else element.setAttribute(name, value);=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    return $(element).getDimensions().height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return $(element).getDimensions().width;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var elementClassName =3D element.className;=0A=
    return (elementClassName.length > 0 && (elementClassName =3D=3D =
className ||=0A=
      new RegExp("(^|\\s)" + className + =
"(\\s|$)").test(elementClassName)));=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    if (!element.hasClassName(className))=0A=
      element.className +=3D (element.className ? ' ' : '') + className;=0A=
    return element;=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    element.className =3D element.className.replace(=0A=
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A=
    return element;=0A=
  },=0A=
=0A=
  toggleClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return element[element.hasClassName(className) ?=0A=
      'removeClassName' : 'addClassName'](className);=0A=
  },=0A=
=0A=
  // removes whitespace-only text node children=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    var node =3D element.firstChild;=0A=
    while (node) {=0A=
      var nextNode =3D node.nextSibling;=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        element.removeChild(node);=0A=
      node =3D nextNode;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.blank();=0A=
  },=0A=
=0A=
  descendantOf: function(element, ancestor) {=0A=
    element =3D $(element), ancestor =3D $(ancestor);=0A=
=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();=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('display');=0A=
    if (display !=3D 'none' && display !=3D null) // Safari bug=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=0A=
    // All *Width and *Height properties give 0 on elements with display =
none,=0A=
    // so enable the element temporarily=0A=
    var els =3D element.style;=0A=
    var originalVisibility =3D els.visibility;=0A=
    var originalPosition =3D els.position;=0A=
    var originalDisplay =3D els.display;=0A=
    els.visibility =3D 'hidden';=0A=
    els.position =3D 'absolute';=0A=
    els.display =3D 'block';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D originalDisplay;=0A=
    els.position =3D originalPosition;=0A=
    els.visibility =3D originalVisibility;=0A=
    return {width: originalWidth, height: originalHeight};=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      // Opera returns the offset relative to the positioning context, =
when an=0A=
      // element is position relative but top and left have not been =
defined=0A=
      if (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('position') =3D=3D 'absolute') return element;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    var offsets =3D element.positionedOffset();=0A=
    var top     =3D offsets[1];=0A=
    var left    =3D offsets[0];=0A=
    var width   =3D element.clientWidth;=0A=
    var height  =3D element.clientHeight;=0A=
=0A=
    element._originalLeft   =3D left - parseFloat(element.style.left  || =
0);=0A=
    element._originalTop    =3D top  - parseFloat(element.style.top || =
0);=0A=
    element._originalWidth  =3D element.style.width;=0A=
    element._originalHeight =3D element.style.height;=0A=
=0A=
    element.style.position =3D 'absolute';=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.width  =3D width + 'px';=0A=
    element.style.height =3D height + 'px';=0A=
    return element;=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.getStyle('position') =3D=3D 'relative') return element;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    element.style.position =3D 'relative';=0A=
    var top  =3D parseFloat(element.style.top  || 0) - =
(element._originalTop || 0);=0A=
    var left =3D parseFloat(element.style.left || 0) - =
(element._originalLeft || 0);=0A=
=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.height =3D element._originalHeight;=0A=
    element.style.width  =3D element._originalWidth;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeScrollOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.scrollTop  || 0;=0A=
      valueL +=3D element.scrollLeft || 0;=0A=
      element =3D element.parentNode;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  getOffsetParent: function(element) {=0A=
    if (element.offsetParent) return $(element.offsetParent);=0A=
    if (element =3D=3D document.body) return $(element);=0A=
=0A=
    while ((element =3D element.parentNode) && element !=3D =
document.body)=0A=
      if (Element.getStyle(element, 'position') !=3D 'static')=0A=
        return $(element);=0A=
=0A=
    return $(document.body);=0A=
  },=0A=
=0A=
  viewportOffset: function(forElement) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
=0A=
      // Safari fix=0A=
      if (element.offsetParent =3D=3D document.body &&=0A=
        Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A=
=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      if (!Prototype.Browser.Opera || (element.tagName && =
(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=
    // find page position of source=0A=
    source =3D $(source);=0A=
    var p =3D source.viewportOffset();=0A=
=0A=
    // find coordinate system to use=0A=
    element =3D $(element);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    // delta [0,0] will do fine with position: fixed elements,=0A=
    // position:absolute needs offsetParent deltas=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A=
      parent =3D element.getOffsetParent();=0A=
      delta =3D parent.viewportOffset();=0A=
    }=0A=
=0A=
    // correct by body offsets (fixes Safari)=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    // set position=0A=
    if (options.setLeft)   element.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if (options.setTop)    element.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if (options.setWidth)  element.style.width =3D source.offsetWidth + =
'px';=0A=
    if (options.setHeight) element.style.height =3D source.offsetHeight =
+ 'px';=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.identify.counter =3D 1;=0A=
=0A=
Object.extend(Element.Methods, {=0A=
  getElementsBySelector: Element.Methods.select,=0A=
  childElements: Element.Methods.immediateDescendants=0A=
});=0A=
=0A=
Element._attributeTranslations =3D {=0A=
  write: {=0A=
    names: {=0A=
      className: 'class',=0A=
      htmlFor:   'for'=0A=
    },=0A=
    values: { }=0A=
  }=0A=
};=0A=
=0A=
if (Prototype.Browser.Opera) {=0A=
  Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A=
    function(proceed, element, style) {=0A=
      switch (style) {=0A=
        case 'left': case 'top': case 'right': case 'bottom':=0A=
          if (proceed(element, 'position') =3D=3D=3D 'static') return =
null;=0A=
        case 'height': case 'width':=0A=
          // returns '0px' for hidden elements; we want it to return null=0A=
          if (!Element.visible(element)) return null;=0A=
=0A=
          // returns the border-box dimensions rather than the =
content-box=0A=
          // dimensions, so we subtract padding and borders from the =
value=0A=
          var dim =3D parseInt(proceed(element, style), 10);=0A=
=0A=
          if (dim !=3D=3D element['offset' + style.capitalize()])=0A=
            return dim + 'px';=0A=
=0A=
          var properties;=0A=
          if (style =3D=3D=3D 'height') {=0A=
            properties =3D ['border-top-width', 'padding-top',=0A=
             'padding-bottom', 'border-bottom-width'];=0A=
          }=0A=
          else {=0A=
            properties =3D ['border-left-width', 'padding-left',=0A=
             'padding-right', 'border-right-width'];=0A=
          }=0A=
          return properties.inject(dim, function(memo, property) {=0A=
            var val =3D proceed(element, property);=0A=
            return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A=
          }) + 'px';=0A=
        default: return proceed(element, style);=0A=
      }=0A=
    }=0A=
  );=0A=
=0A=
  Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A=
    function(proceed, element, attribute) {=0A=
      if (attribute =3D=3D=3D 'title') return element.title;=0A=
      return proceed(element, attribute);=0A=
    }=0A=
  );=0A=
}=0A=
=0A=
else if (Prototype.Browser.IE) {=0A=
  // IE doesn't report offsets correctly for static elements, so we =
change them=0A=
  // to "relative" to get the values, then change them back.=0A=
  Element.Methods.getOffsetParent =3D =
Element.Methods.getOffsetParent.wrap(=0A=
    function(proceed, element) {=0A=
      element =3D $(element);=0A=
      // IE throws an error if element is not in document=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=
        // Trigger hasLayout on the offset parent so that IE6 reports=0A=
        // accurate offsetTop and offsetLeft values for position: fixed.=0A=
        var offsetParent =3D element.getOffsetParent();=0A=
        if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D =
'fixed')=0A=
          offsetParent.setStyle({ zoom: 1 });=0A=
        element.setStyle({ position: 'relative' });=0A=
        var value =3D proceed(element);=0A=
        element.setStyle({ position: position });=0A=
        return value;=0A=
      }=0A=
    );=0A=
  });=0A=
=0A=
  Element.Methods.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 {=0A=
    read: {=0A=
      names: {=0A=
        'class': 'className',=0A=
        'for':   'htmlFor'=0A=
      },=0A=
      values: {=0A=
        _getAttr: function(element, attribute) {=0A=
          return element.getAttribute(attribute, 2);=0A=
        },=0A=
        _getAttrNode: function(element, attribute) {=0A=
          var node =3D element.getAttributeNode(attribute);=0A=
          return node ? node.value : "";=0A=
        },=0A=
        _getEv: function(element, attribute) {=0A=
          attribute =3D element.getAttribute(attribute);=0A=
          return attribute ? attribute.toString().slice(23, -2) : null;=0A=
        },=0A=
        _flag: function(element, attribute) {=0A=
          return $(element).hasAttribute(attribute) ? attribute : null;=0A=
        },=0A=
        style: function(element) {=0A=
          return element.style.cssText.toLowerCase();=0A=
        },=0A=
        title: function(element) {=0A=
          return element.title;=0A=
        }=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.write =3D {=0A=
    names: Object.extend({=0A=
      cellpadding: 'cellPadding',=0A=
      cellspacing: 'cellSpacing'=0A=
    }, Element._attributeTranslations.read.names),=0A=
    values: {=0A=
      checked: function(element, value) {=0A=
        element.checked =3D !!value;=0A=
      },=0A=
=0A=
      style: function(element, value) {=0A=
        element.style.cssText =3D value ? value : '';=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.has =3D {};=0A=
=0A=
  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A=
      'encType maxLength readOnly longDesc =
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._getAttr,=0A=
      src:         v._getAttr,=0A=
      type:        v._getAttr,=0A=
      action:      v._getAttrNode,=0A=
      disabled:    v._flag,=0A=
      checked:     v._flag,=0A=
      readonly:    v._flag,=0A=
      multiple:    v._flag,=0A=
      onload:      v._getEv,=0A=
      onunload:    v._getEv,=0A=
      onclick:     v._getEv,=0A=
      ondblclick:  v._getEv,=0A=
      onmousedown: v._getEv,=0A=
      onmouseup:   v._getEv,=0A=
      onmouseover: v._getEv,=0A=
      onmousemove: v._getEv,=0A=
      onmouseout:  v._getEv,=0A=
      onfocus:     v._getEv,=0A=
      onblur:      v._getEv,=0A=
      onkeypress:  v._getEv,=0A=
      onkeydown:   v._getEv,=0A=
      onkeyup:     v._getEv,=0A=
      onsubmit:    v._getEv,=0A=
      onreset:     v._getEv,=0A=
      onselect:    v._getEv,=0A=
      onchange:    v._getEv=0A=
    });=0A=
  })(Element._attributeTranslations.read.values);=0A=
}=0A=
=0A=
else if (Prototype.Browser.Gecko && =
/rv:1\.8\.0/.test(navigator.userAgent)) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A=
      (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
else if (Prototype.Browser.WebKit) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
=0A=
    if (value =3D=3D 1)=0A=
      if(element.tagName.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=
  // Safari returns margins on body which is incorrect if the child is =
absolutely=0A=
  // positioned.  For performance reasons, redefine =
Element#cumulativeOffset for=0A=
  // KHTML/WebKit only.=0A=
  Element.Methods.cumulativeOffset =3D function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      if (element.offsetParent =3D=3D document.body)=0A=
        if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;=0A=
=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  };=0A=
}=0A=
=0A=
if (Prototype.Browser.IE || Prototype.Browser.Opera) {=0A=
  // IE and Opera are missing .innerHTML support for TABLE-related and =
SELECT elements=0A=
  Element.Methods.update =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var tagName =3D element.tagName.toUpperCase();=0A=
=0A=
    if (tagName in Element._insertionTranslations.tags) {=0A=
      $A(element.childNodes).each(function(node) { =
element.removeChild(node) });=0A=
      Element._getContentFromAnonymousElement(tagName, =
content.stripScripts())=0A=
        .each(function(node) { element.appendChild(node) });=0A=
    }=0A=
    else element.innerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
if ('outerHTML' in document.createElement('div')) {=0A=
  Element.Methods.replace =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) {=0A=
      element.parentNode.replaceChild(content, element);=0A=
      return element;=0A=
    }=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var parent =3D element.parentNode, tagName =3D =
parent.tagName.toUpperCase();=0A=
=0A=
    if (Element._insertionTranslations.tags[tagName]) {=0A=
      var nextSibling =3D element.next();=0A=
      var fragments =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
      parent.removeChild(element);=0A=
      if (nextSibling)=0A=
        fragments.each(function(node) { parent.insertBefore(node, =
nextSibling) });=0A=
      else=0A=
        fragments.each(function(node) { parent.appendChild(node) });=0A=
    }=0A=
    else element.outerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
Element._returnOffset =3D function(l, t) {=0A=
  var result =3D [l, t];=0A=
  result.left =3D l;=0A=
  result.top =3D t;=0A=
  return result;=0A=
};=0A=
=0A=
Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A=
  var div =3D new Element('div'), t =3D =
Element._insertionTranslations.tags[tagName];=0A=
  if (t) {=0A=
    div.innerHTML =3D t[0] + html + t[1];=0A=
    t[2].times(function() { div =3D div.firstChild });=0A=
  } else div.innerHTML =3D html;=0A=
  return $A(div.childNodes);=0A=
};=0A=
=0A=
Element._insertionTranslations =3D {=0A=
  before: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element);=0A=
  },=0A=
  top: function(element, node) {=0A=
    element.insertBefore(node, element.firstChild);=0A=
  },=0A=
  bottom: function(element, node) {=0A=
    element.appendChild(node);=0A=
  },=0A=
  after: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element.nextSibling);=0A=
  },=0A=
  tags: {=0A=
    TABLE:  ['<table>',                '</table>',                   1],=0A=
    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],=0A=
    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],=0A=
    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],=0A=
    SELECT: ['<select>',               '</select>',                  1]=0A=
  }=0A=
};=0A=
=0A=
(function() {=0A=
  Object.extend(this.tags, {=0A=
    THEAD: this.tags.TBODY,=0A=
    TFOOT: this.tags.TBODY,=0A=
    TH:    this.tags.TD=0A=
  });=0A=
}).call(Element._insertionTranslations);=0A=
=0A=
Element.Methods.Simulated =3D {=0A=
  hasAttribute: function(element, attribute) {=0A=
    attribute =3D Element._attributeTranslations.has[attribute] || =
attribute;=0A=
    var node =3D $(element).getAttributeNode(attribute);=0A=
    return !!(node && node.specified);=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.ByTag =3D { };=0A=
=0A=
Object.extend(Element, Element.Methods);=0A=
=0A=
if (!Prototype.BrowserFeatures.ElementExtensions &&=0A=
    document.createElement('div')['__proto__']) {=0A=
  window.HTMLElement =3D { };=0A=
  window.HTMLElement.prototype =3D =
document.createElement('div')['__proto__'];=0A=
  Prototype.BrowserFeatures.ElementExtensions =3D true;=0A=
}=0A=
=0A=
Element.extend =3D (function() {=0A=
  if (Prototype.BrowserFeatures.SpecificElementExtensions)=0A=
    return Prototype.K;=0A=
=0A=
  var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A=
=0A=
  var extend =3D Object.extend(function(element) {=0A=
    if (!element || element._extendedByPrototype ||=0A=
        element.nodeType !=3D 1 || element =3D=3D window) return element;=0A=
=0A=
    var methods =3D Object.clone(Methods),=0A=
      tagName =3D element.tagName.toUpperCase(), property, value;=0A=
=0A=
    // extend methods for specific tags=0A=
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A=
=0A=
    for (property in methods) {=0A=
      value =3D methods[property];=0A=
      if (Object.isFunction(value) && !(property in element))=0A=
        element[property] =3D value.methodize();=0A=
    }=0A=
=0A=
    element._extendedByPrototype =3D Prototype.emptyFunction;=0A=
    return element;=0A=
=0A=
  }, {=0A=
    refresh: function() {=0A=
      // extend methods for all tags (Safari doesn't need this)=0A=
      if (!Prototype.BrowserFeatures.ElementExtensions) {=0A=
        Object.extend(Methods, Element.Methods);=0A=
        Object.extend(Methods, Element.Methods.Simulated);=0A=
      }=0A=
    }=0A=
  });=0A=
=0A=
  extend.refresh();=0A=
  return extend;=0A=
})();=0A=
=0A=
Element.hasAttribute =3D function(element, attribute) {=0A=
  if (element.hasAttribute) return element.hasAttribute(attribute);=0A=
  return Element.Methods.Simulated.hasAttribute(element, attribute);=0A=
};=0A=
=0A=
Element.addMethods =3D function(methods) {=0A=
  var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A=
=0A=
  if (!methods) {=0A=
    Object.extend(Form, Form.Methods);=0A=
    Object.extend(Form.Element, Form.Element.Methods);=0A=
    Object.extend(Element.Methods.ByTag, {=0A=
      "FORM":     Object.clone(Form.Methods),=0A=
      "INPUT":    Object.clone(Form.Element.Methods),=0A=
      "SELECT":   Object.clone(Form.Element.Methods),=0A=
      "TEXTAREA": Object.clone(Form.Element.Methods)=0A=
    });=0A=
  }=0A=
=0A=
  if (arguments.length =3D=3D 2) {=0A=
    var tagName =3D methods;=0A=
    methods =3D arguments[1];=0A=
  }=0A=
=0A=
  if (!tagName) Object.extend(Element.Methods, methods || { });=0A=
  else {=0A=
    if (Object.isArray(tagName)) tagName.each(extend);=0A=
    else extend(tagName);=0A=
  }=0A=
=0A=
  function extend(tagName) {=0A=
    tagName =3D tagName.toUpperCase();=0A=
    if (!Element.Methods.ByTag[tagName])=0A=
      Element.Methods.ByTag[tagName] =3D { };=0A=
    Object.extend(Element.Methods.ByTag[tagName], methods);=0A=
  }=0A=
=0A=
  function copy(methods, destination, onlyIfAbsent) {=0A=
    onlyIfAbsent =3D onlyIfAbsent || false;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (!Object.isFunction(value)) continue;=0A=
      if (!onlyIfAbsent || !(property in destination))=0A=
        destination[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  function findDOMClass(tagName) {=0A=
    var klass;=0A=
    var trans =3D {=0A=
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A=
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": =
"DList",=0A=
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": =
"Heading",=0A=
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A=
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", =
"CAPTION":=0A=
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A=
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", =
"TR":=0A=
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A=
      "FrameSet", "IFRAME": "IFrame"=0A=
    };=0A=
    if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
=0A=
    window[klass] =3D { };=0A=
    window[klass].prototype =3D =
document.createElement(tagName)['__proto__'];=0A=
    return window[klass];=0A=
  }=0A=
=0A=
  if (F.ElementExtensions) {=0A=
    copy(Element.Methods, HTMLElement.prototype);=0A=
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A=
  }=0A=
=0A=
  if (F.SpecificElementExtensions) {=0A=
    for (var tag in Element.Methods.ByTag) {=0A=
      var klass =3D findDOMClass(tag);=0A=
      if (Object.isUndefined(klass)) continue;=0A=
      copy(T[tag], klass.prototype);=0A=
    }=0A=
  }=0A=
=0A=
  Object.extend(Element, Element.Methods);=0A=
  delete Element.ByTag;=0A=
=0A=
  if (Element.extend.refresh) Element.extend.refresh();=0A=
  Element.cache =3D { };=0A=
};=0A=
=0A=
document.viewport =3D {=0A=
  getDimensions: function() {=0A=
    var dimensions =3D { }, B =3D Prototype.Browser;=0A=
    $w('width height').each(function(d) {=0A=
      var D =3D d.capitalize();=0A=
      if (B.WebKit && !document.evaluate) {=0A=
        // Safari <3.0 needs self.innerWidth/Height=0A=
        dimensions[d] =3D self['inner' + D];=0A=
      } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) {=0A=
        // Opera <9.5 needs document.body.clientWidth/Height=0A=
        dimensions[d] =3D document.body['client' + D]=0A=
      } else {=0A=
        dimensions[d] =3D document.documentElement['client' + D];=0A=
      }=0A=
    });=0A=
    return dimensions;=0A=
  },=0A=
=0A=
  getWidth: function() {=0A=
    return this.getDimensions().width;=0A=
  },=0A=
=0A=
  getHeight: function() {=0A=
    return this.getDimensions().height;=0A=
  },=0A=
=0A=
  getScrollOffsets: function() {=0A=
    return Element._returnOffset(=0A=
      window.pageXOffset || document.documentElement.scrollLeft || =
document.body.scrollLeft,=0A=
      window.pageYOffset || document.documentElement.scrollTop || =
document.body.scrollTop);=0A=
  }=0A=
};=0A=
/* Portions of the Selector class are derived from Jack Slocum'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=
    if (!Prototype.BrowserFeatures.XPath) return false;=0A=
=0A=
    var e =3D this.expression;=0A=
=0A=
    // Safari 3 chokes on :*-of-type and :empty=0A=
    if (Prototype.Browser.WebKit &&=0A=
     (e.include("-of-type") || e.include(":empty")))=0A=
      return false;=0A=
=0A=
    // XPath can't do namespaced attributes, nor can it read=0A=
    // the "checked" property from DOM nodes=0A=
    if ((/(\[[\w-]*?:|:checked)/).test(e))=0A=
      return false;=0A=
=0A=
    return true;=0A=
  },=0A=
=0A=
  shouldUseSelectorsAPI: function() {=0A=
    if (!Prototype.BrowserFeatures.SelectorsAPI) return false;=0A=
=0A=
    if (!Selector._div) Selector._div =3D new Element('div');=0A=
=0A=
    // Make sure the browser treats the selector as valid. Test on an=0A=
    // isolated element to minimize cost of this check.=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;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.matcher =3D Selector._cache[e];=0A=
      return;=0A=
    }=0A=
=0A=
    this.matcher =3D ["this.matcher =3D function(root) {",=0A=
                    "var r =3D root, h =3D Selector.handlers, c =3D =
false, n;"];=0A=
=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :=0A=
            new Template(c[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.matcher.push("return h.unique(n);\n}");=0A=
    eval(this.matcher.join('\n'));=0A=
    Selector._cache[this.expression] =3D this.matcher;=0A=
  },=0A=
=0A=
  compileXPathMatcher: function() {=0A=
    var e =3D this.expression, ps =3D Selector.patterns,=0A=
        x =3D Selector.xpath, le, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.xpath =3D Selector._cache[e]; return;=0A=
    }=0A=
=0A=
    this.matcher =3D ['.//*'];=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        if (m =3D e.match(ps[i])) {=0A=
          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :=0A=
            new Template(x[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.xpath =3D this.matcher.join('');=0A=
    Selector._cache[this.expression] =3D this.xpath;=0A=
  },=0A=
=0A=
  findElements: function(root) {=0A=
    root =3D root || document;=0A=
    var e =3D this.expression, results;=0A=
=0A=
    switch (this.mode) {=0A=
      case 'selectorsAPI':=0A=
        // querySelectorAll queries document-wide, then filters to =
descendants=0A=
        // of the context element. That's not what we want.=0A=
        // Add an explicit context to the selector if necessary.=0A=
        if (root !=3D=3D document) {=0A=
          var oldId =3D root.id, id =3D $(root).identify();=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;=0A=
=0A=
    while (e && le !=3D=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          // use the Selector.assertions methods unless the selector=0A=
          // is too complex.=0A=
          if (as[i]) {=0A=
            this.tokens.push([i, Object.clone(m)]);=0A=
            e =3D e.replace(m[0], '');=0A=
          } else {=0A=
            // reluctantly do a document-wide search=0A=
            // and look for a match in the array=0A=
            return this.findElements(document).include(element);=0A=
          }=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    var match =3D true, name, matches;=0A=
    for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A=
      name =3D token[0], matches =3D token[1];=0A=
      if (!Selector.assertions[name](element, matches)) {=0A=
        match =3D false; break;=0A=
      }=0A=
    }=0A=
=0A=
    return match;=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.expression;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return "#<Selector:" + this.expression.inspect() + ">";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Selector, {=0A=
  _cache: { },=0A=
=0A=
  xpath: {=0A=
    descendant:   "//*",=0A=
    child:        "/*",=0A=
    adjacent:     "/following-sibling::*[1]",=0A=
    laterSibling: '/following-sibling::*',=0A=
    tagName:      function(m) {=0A=
      if (m[1] =3D=3D '*') return '';=0A=
      return "[local-name()=3D'" + m[1].toLowerCase() +=0A=
             "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A=
    },=0A=
    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A=
    id:           "[@id=3D'#{1}']",=0A=
    attrPresence: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      return new Template("[@#{1}]").evaluate(m);=0A=
    },=0A=
    attr: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      m[3] =3D m[5] || m[6];=0A=
      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      var h =3D Selector.xpath.pseudos[m[1]];=0A=
      if (!h) return '';=0A=
      if (Object.isFunction(h)) return h(m);=0A=
      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A=
    },=0A=
    operators: {=0A=
      '=3D':  "[@#{1}=3D'#{3}']",=0A=
      '!=3D': "[@#{1}!=3D'#{3}']",=0A=
      '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A=
      '$=3D': "[substring(@#{1}, (string-length(@#{1}) - =
string-length('#{3}') + 1))=3D'#{3}']",=0A=
      '*=3D': "[contains(@#{1}, '#{3}')]",=0A=
      '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A=
      '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A=
    },=0A=
    pseudos: {=0A=
      'first-child': '[not(preceding-sibling::*)]',=0A=
      'last-child':  '[not(following-sibling::*)]',=0A=
      'only-child':  '[not(preceding-sibling::* or =
following-sibling::*)]',=0A=
      'empty':       "[count(*) =3D 0 and (count(text()) =3D 0)]",=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;=0A=
=0A=
        var exclusion =3D [];=0A=
        while (e && le !=3D e && (/\S/).test(e)) {=0A=
          le =3D e;=0A=
          for (var i in p) {=0A=
            if (m =3D e.match(p[i])) {=0A=
              v =3D Object.isFunction(x[i]) ? x[i](m) : new =
Template(x[i]).evaluate(m);=0A=
              exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A=
              e =3D e.replace(m[0], '');=0A=
              break;=0A=
            }=0A=
          }=0A=
        }=0A=
        return "[not(" + exclusion.join(" and ") + ")]";=0A=
      },=0A=
      'nth-child':      function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-last-child': function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-of-type':    function(m) {=0A=
        return Selector.xpath.pseudos.nth("position() ", m);=0A=
      },=0A=
      'nth-last-of-type': function(m) {=0A=
        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", =
m);=0A=
      },=0A=
      'first-of-type':  function(m) {=0A=
        m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A=
      },=0A=
      'last-of-type':   function(m) {=0A=
        m[6] =3D "1"; return =
Selector.xpath.pseudos['nth-last-of-type'](m);=0A=
      },=0A=
      'only-of-type':   function(m) {=0A=
        var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + =
p['last-of-type'](m);=0A=
      },=0A=
      nth: function(fragment, m) {=0A=
        var mm, formula =3D m[6], predicate;=0A=
        if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
        if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
        if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A=
          return '[' + fragment + "=3D " + mm[1] + ']';=0A=
        if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A=
          if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A=
          var a =3D mm[1] ? Number(mm[1]) : 1;=0A=
          var b =3D mm[2] ? Number(mm[2]) : 0;=0A=
          predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A=
          "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A=
          return new Template(predicate).evaluate({=0A=
            fragment: fragment, a: a, b: b });=0A=
        }=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  criteria: {=0A=
    tagName:      'n =3D h.tagName(n, r, "#{1}", c);      c =3D false;',=0A=
    className:    'n =3D h.className(n, r, "#{1}", c);    c =3D false;',=0A=
    id:           'n =3D h.id(n, r, "#{1}", c);           c =3D false;',=0A=
    attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;',=0A=
    attr: function(m) {=0A=
      m[3] =3D (m[5] || m[6]);=0A=
      return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", =
c); c =3D false;').evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A=
      return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    descendant:   'c =3D "descendant";',=0A=
    child:        'c =3D "child";',=0A=
    adjacent:     'c =3D "adjacent";',=0A=
    laterSibling: 'c =3D "laterSibling";'=0A=
  },=0A=
=0A=
  patterns: {=0A=
    // combinators must be listed first=0A=
    // (and descendant needs to be last combinator)=0A=
    laterSibling: /^\s*~\s*/,=0A=
    child:        /^\s*>\s*/,=0A=
    adjacent:     /^\s*\+\s*/,=0A=
    descendant:   /^\s/,=0A=
=0A=
    // selectors follow=0A=
    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,=0A=
    id:           /^#([\w\-\*]+)(\b|$)/,=0A=
    className:    /^\.([\w\-\*]+)(\b|$)/,=0A=
    pseudo:=0A=
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis=
)abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/,=0A=
    attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/,=0A=
    attr:         =
/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^=
\]]*?)))?\]/=0A=
  },=0A=
=0A=
  // for Selector.match and Element#match=0A=
  assertions: {=0A=
    tagName: function(element, matches) {=0A=
      return matches[1].toUpperCase() =3D=3D =
element.tagName.toUpperCase();=0A=
    },=0A=
=0A=
    className: function(element, matches) {=0A=
      return Element.hasClassName(element, matches[1]);=0A=
    },=0A=
=0A=
    id: function(element, matches) {=0A=
      return element.id =3D=3D=3D matches[1];=0A=
    },=0A=
=0A=
    attrPresence: function(element, matches) {=0A=
      return Element.hasAttribute(element, matches[1]);=0A=
    },=0A=
=0A=
    attr: function(element, matches) {=0A=
      var nodeValue =3D Element.readAttribute(element, matches[1]);=0A=
      return nodeValue && Selector.operators[matches[2]](nodeValue, =
matches[5] || matches[6]);=0A=
    }=0A=
  },=0A=
=0A=
  handlers: {=0A=
    // UTILITY FUNCTIONS=0A=
    // joins two collections=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    // marks an array of nodes for counting=0A=
    mark: function(nodes) {=0A=
      var _true =3D Prototype.emptyFunction;=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._countedByPrototype =3D _true;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    unmark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._countedByPrototype =3D undefined;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    // mark each child node with its position (for nth calls)=0A=
    // "ofType" flag indicates whether we're indexing for nth-of-type=0A=
    // rather than nth-child=0A=
    index: function(parentNode, reverse, ofType) {=0A=
      parentNode._countedByPrototype =3D Prototype.emptyFunction;=0A=
      if (reverse) {=0A=
        for (var nodes =3D parentNode.childNodes, i =3D nodes.length - =
1, j =3D 1; i >=3D 0; i--) {=0A=
          var node =3D nodes[i];=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || =
node._countedByPrototype)) node.nodeIndex =3D j++;=0A=
        }=0A=
      } else {=0A=
        for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node =
=3D nodes[i]; i++)=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || =
node._countedByPrototype)) node.nodeIndex =3D j++;=0A=
      }=0A=
    },=0A=
=0A=
    // filters out duplicates and extends all nodes=0A=
    unique: function(nodes) {=0A=
      if (nodes.length =3D=3D 0) return nodes;=0A=
      var results =3D [], n;=0A=
      for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A=
        if (!(n =3D nodes[i])._countedByPrototype) {=0A=
          n._countedByPrototype =3D Prototype.emptyFunction;=0A=
          results.push(Element.extend(n));=0A=
        }=0A=
      return Selector.handlers.unmark(results);=0A=
    },=0A=
=0A=
    // COMBINATOR FUNCTIONS=0A=
    descendant: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, node.getElementsByTagName('*'));=0A=
      return results;=0A=
    },=0A=
=0A=
    child: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A=
          if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') =
results.push(child);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    adjacent: function(nodes) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        var next =3D this.nextElementSibling(node);=0A=
        if (next) results.push(next);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    laterSibling: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, Element.nextSiblings(node));=0A=
      return results;=0A=
    },=0A=
=0A=
    nextElementSibling: function(node) {=0A=
      while (node =3D node.nextSibling)=0A=
        if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    previousElementSibling: function(node) {=0A=
      while (node =3D node.previousSibling)=0A=
        if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    // TOKEN FUNCTIONS=0A=
    tagName: function(nodes, root, tagName, combinator) {=0A=
      var uTagName =3D tagName.toUpperCase();=0A=
      var results =3D [], h =3D Selector.handlers;=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          // fastlane for ordinary descendant combinators=0A=
          if (combinator =3D=3D "descendant") {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              h.concat(results, node.getElementsByTagName(tagName));=0A=
            return results;=0A=
          } else nodes =3D this[combinator](nodes);=0A=
          if (tagName =3D=3D "*") return nodes;=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName.toUpperCase() =3D=3D=3D uTagName) =
results.push(node);=0A=
        return results;=0A=
      } else return root.getElementsByTagName(tagName);=0A=
    },=0A=
=0A=
    id: function(nodes, root, id, combinator) {=0A=
      var targetNode =3D $(id), h =3D Selector.handlers;=0A=
      if (!targetNode) return [];=0A=
      if (!nodes && root =3D=3D document) return [targetNode];=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          if (combinator =3D=3D 'child') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (targetNode.parentNode =3D=3D node) return [targetNode];=0A=
          } else if (combinator =3D=3D 'descendant') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Element.descendantOf(targetNode, node)) return =
[targetNode];=0A=
          } else if (combinator =3D=3D 'adjacent') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Selector.handlers.previousElementSibling(targetNode) =
=3D=3D node)=0A=
                return [targetNode];=0A=
          } else nodes =3D h[combinator](nodes);=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node =3D=3D targetNode) return [targetNode];=0A=
        return [];=0A=
      }=0A=
      return (targetNode && Element.descendantOf(targetNode, root)) ? =
[targetNode] : [];=0A=
    },=0A=
=0A=
    className: function(nodes, root, className, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      return Selector.handlers.byClassName(nodes, root, className);=0A=
    },=0A=
=0A=
    byClassName: function(nodes, root, className) {=0A=
      if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A=
      var needle =3D ' ' + className + ' ';=0A=
      for (var i =3D 0, results =3D [], node, nodeClassName; node =3D =
nodes[i]; i++) {=0A=
        nodeClassName =3D node.className;=0A=
        if (nodeClassName.length =3D=3D 0) continue;=0A=
        if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' =
').include(needle))=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    attrPresence: function(nodes, root, attr, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      var results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        if (Element.hasAttribute(node, attr)) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    attr: function(nodes, root, attr, value, operator, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      var handler =3D Selector.operators[operator], results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        var nodeValue =3D Element.readAttribute(node, attr);=0A=
        if (nodeValue =3D=3D=3D null) continue;=0A=
        if (handler(nodeValue, value)) results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    pseudo: function(nodes, name, value, root, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      return Selector.pseudos[name](nodes, value, root);=0A=
    }=0A=
  },=0A=
=0A=
  pseudos: {=0A=
    'first-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.previousElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'last-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.nextElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'only-child': function(nodes, value, root) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!h.previousElementSibling(node) && =
!h.nextElementSibling(node))=0A=
          results.push(node);=0A=
      return results;=0A=
    },=0A=
    'nth-child':        function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root);=0A=
    },=0A=
    'nth-last-child':   function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true);=0A=
    },=0A=
    'nth-of-type':      function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, false, true);=0A=
    },=0A=
    'nth-last-of-type': function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true, true);=0A=
    },=0A=
    'first-of-type':    function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, false, true);=0A=
    },=0A=
    'last-of-type':     function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, true, true);=0A=
    },=0A=
    'only-of-type':     function(nodes, formula, root) {=0A=
      var p =3D Selector.pseudos;=0A=
      return p['last-of-type'](p['first-of-type'](nodes, formula, root), =
formula, root);=0A=
    },=0A=
=0A=
    // handles the an+b logic=0A=
    getIndices: function(a, b, total) {=0A=
      if (a =3D=3D 0) return b > 0 ? [b] : [];=0A=
      return $R(1, total).inject([], function(memo, i) {=0A=
        if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A=
        return memo;=0A=
      });=0A=
    },=0A=
=0A=
    // handles nth(-last)-child, nth(-last)-of-type, and =
(first|last)-of-type=0A=
    nth: function(nodes, formula, root, reverse, ofType) {=0A=
      if (nodes.length =3D=3D 0) return [];=0A=
      if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
      if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
      var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A=
      h.mark(nodes);=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        if (!node.parentNode._countedByPrototype) {=0A=
          h.index(node.parentNode, reverse, ofType);=0A=
          indexed.push(node.parentNode);=0A=
        }=0A=
      }=0A=
      if (formula.match(/^\d+$/)) { // just a number=0A=
        formula =3D Number(formula);=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.nodeIndex =3D=3D formula) results.push(node);=0A=
      } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // =
an+b=0A=
        if (m[1] =3D=3D "-") m[1] =3D -1;=0A=
        var a =3D m[1] ? Number(m[1]) : 1;=0A=
        var b =3D m[2] ? Number(m[2]) : 0;=0A=
        var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A=
        for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; =
i++) {=0A=
          for (var j =3D 0; j < l; j++)=0A=
            if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A=
        }=0A=
      }=0A=
      h.unmark(nodes);=0A=
      h.unmark(indexed);=0A=
      return results;=0A=
    },=0A=
=0A=
    'empty': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        // IE treats comments as element nodes=0A=
        if (node.tagName =3D=3D '!' || node.firstChild) 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.endsWith(v); },=0A=
    '*=3D': function(nv, v) { return nv.include(v); },=0A=
    '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + =
' '); },=0A=
    '|=3D': function(nv, v) { return ('-' + (nv || "").toUpperCase() +=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=
    // IE returns comment nodes on getElementsByTagName("*").=0A=
    // Filter them out.=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        if (node.tagName !=3D=3D "!") a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    // IE improperly serializes _countedByPrototype in (inner|outer)HTML.=0A=
    unmark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node.removeAttribute('_countedByPrototype');=0A=
      return nodes;=0A=
    }=0A=
  });=0A=
}=0A=
=0A=
function $$() {=0A=
  return Selector.findChildElements(document, $A(arguments));=0A=
}=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    $(form).reset();=0A=
    return form;=0A=
  },=0A=
=0A=
  serializeElements: function(elements, options) {=0A=
    if (typeof options !=3D 'object') options =3D { hash: !!options };=0A=
    else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A=
    var key, value, submitted =3D false, submit =3D options.submit;=0A=
=0A=
    var data =3D elements.inject({ }, function(result, element) {=0A=
      if (!element.disabled && element.name) {=0A=
        key =3D element.name; value =3D $(element).getValue();=0A=
        if (value !=3D null && element.type !=3D '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=
            // a key is already present; construct an array of values=0A=
            if (!Object.isArray(result[key])) result[key] =3D =
[result[key]];=0A=
            result[key].push(value);=0A=
          }=0A=
          else result[key] =3D value;=0A=
        }=0A=
      }=0A=
      return result;=0A=
    });=0A=
=0A=
    return options.hash ? data : Object.toQueryString(data);=0A=
  }=0A=
};=0A=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form, options) {=0A=
    return Form.serializeElements(Form.getElements(form), options);=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    return $A($(form).getElementsByTagName('*')).inject([],=0A=
      function(elements, child) {=0A=
        if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A=
          elements.push(Element.extend(child));=0A=
        return elements;=0A=
      }=0A=
    );=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name) return $A(inputs).map(Element.extend);=0A=
=0A=
    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))=0A=
        continue;=0A=
      matchingInputs.push(Element.extend(input));=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('disable');=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('enable');=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    var elements =3D $(form).getElements().findAll(function(element) {=0A=
      return 'hidden' !=3D element.type && !element.disabled;=0A=
    });=0A=
    var firstByIndex =3D elements.findAll(function(element) {=0A=
      return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A=
    }).sortBy(function(element) { return element.tabIndex }).first();=0A=
=0A=
    return firstByIndex ? firstByIndex : elements.find(function(element) =
{=0A=
      return ['input', 'select', =
'textarea'].include(element.tagName.toLowerCase());=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    form =3D $(form);=0A=
    form.findFirstElement().activate();=0A=
    return form;=0A=
  },=0A=
=0A=
  request: function(form, options) {=0A=
    form =3D $(form), options =3D Object.clone(options || { });=0A=
=0A=
    var params =3D options.parameters, action =3D =
form.readAttribute('action') || '';=0A=
    if (action.blank()) action =3D window.location.href;=0A=
    options.parameters =3D form.serialize(true);=0A=
=0A=
    if (params) {=0A=
      if (Object.isString(params)) params =3D params.toQueryParams();=0A=
      Object.extend(options.parameters, params);=0A=
    }=0A=
=0A=
    if (form.hasAttribute('method') && !options.method)=0A=
      options.method =3D form.method;=0A=
=0A=
    return new Ajax.Request(action, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element =3D {=0A=
  focus: function(element) {=0A=
    $(element).focus();=0A=
    return element;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    $(element).select();=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Form.Element.Methods =3D {=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element.disabled && element.name) {=0A=
      var value =3D element.getValue();=0A=
      if (value !=3D undefined) {=0A=
        var pair =3D { };=0A=
        pair[element.name] =3D value;=0A=
        return Object.toQueryString(pair);=0A=
      }=0A=
    }=0A=
    return '';=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    return Form.Element.Serializers[method](element);=0A=
  },=0A=
=0A=
  setValue: function(element, value) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    Form.Element.Serializers[method](element, value);=0A=
    return element;=0A=
  },=0A=
=0A=
  clear: function(element) {=0A=
    $(element).value =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  present: function(element) {=0A=
    return $(element).value !=3D '';=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    try {=0A=
      element.focus();=0A=
      if (element.select && (element.tagName.toLowerCase() !=3D 'input' =
||=0A=
          !['button', 'reset', 'submit'].include(element.type)))=0A=
        element.select();=0A=
    } catch (e) { }=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D true;=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D false;=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Field =3D Form.Element;=0A=
var $F =3D Form.Element.Methods.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element.Serializers =3D {=0A=
  input: function(element, value) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return Form.Element.Serializers.inputSelector(element, value);=0A=
      default:=0A=
        return Form.Element.Serializers.textarea(element, value);=0A=
    }=0A=
  },=0A=
=0A=
  inputSelector: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.checked ? =
element.value : null;=0A=
    else element.checked =3D !!value;=0A=
  },=0A=
=0A=
  textarea: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.value;=0A=
    else element.value =3D value;=0A=
  },=0A=
=0A=
  select: function(element, 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=
    // extend element because hasAttribute may not be native=0A=
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A=
  initialize: function($super, element, frequency, callback) {=0A=
    $super(callback, frequency);=0A=
    this.element   =3D $(element);=0A=
    this.lastValue =3D this.getValue();=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    var value =3D this.getValue();=0A=
    if (Object.isString(this.lastValue) && Object.isString(value) ?=0A=
        this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value)) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D Class.create({=0A=
  initialize: function(element, callback) {=0A=
    this.element  =3D $(element);=0A=
    this.callback =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A=
      this.registerFormCallbacks();=0A=
    else=0A=
      this.registerCallback(this.element);=0A=
  },=0A=
=0A=
  onElementEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  },=0A=
=0A=
  registerFormCallbacks: function() {=0A=
    Form.getElements(this.element).each(this.registerCallback, this);=0A=
  },=0A=
=0A=
  registerCallback: function(element) {=0A=
    if (element.type) {=0A=
      switch (element.type.toLowerCase()) {=0A=
        case 'checkbox':=0A=
        case 'radio':=0A=
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
        default:=0A=
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
if (!window.Event) var Event =3D { };=0A=
=0A=
Object.extend(Event, {=0A=
  KEY_BACKSPACE: 8,=0A=
  KEY_TAB:       9,=0A=
  KEY_RETURN:   13,=0A=
  KEY_ESC:      27,=0A=
  KEY_LEFT:     37,=0A=
  KEY_UP:       38,=0A=
  KEY_RIGHT:    39,=0A=
  KEY_DOWN:     40,=0A=
  KEY_DELETE:   46,=0A=
  KEY_HOME:     36,=0A=
  KEY_END:      35,=0A=
  KEY_PAGEUP:   33,=0A=
  KEY_PAGEDOWN: 34,=0A=
  KEY_INSERT:   45,=0A=
=0A=
  cache: { },=0A=
=0A=
  relatedTarget: function(event) {=0A=
    var element;=0A=
    switch(event.type) {=0A=
      case 'mouseover': element =3D event.fromElement; break;=0A=
      case 'mouseout':  element =3D event.toElement;   break;=0A=
      default: return null;=0A=
    }=0A=
    return Element.extend(element);=0A=
  }=0A=
});=0A=
=0A=
Event.Methods =3D (function() {=0A=
  var isButton;=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A=
    isButton =3D function(event, code) {=0A=
      return event.button =3D=3D buttonMap[code];=0A=
    };=0A=
=0A=
  } else if (Prototype.Browser.WebKit) {=0A=
    isButton =3D function(event, code) {=0A=
      switch (code) {=0A=
        case 0: return event.which =3D=3D 1 && !event.metaKey;=0A=
        case 1: return event.which =3D=3D 1 && event.metaKey;=0A=
        default: return false;=0A=
      }=0A=
    };=0A=
=0A=
  } else {=0A=
    isButton =3D function(event, code) {=0A=
      return event.which ? (event.which =3D=3D=3D code + 1) : =
(event.button =3D=3D=3D code);=0A=
    };=0A=
  }=0A=
=0A=
  return {=0A=
    isLeftClick:   function(event) { return isButton(event, 0) },=0A=
    isMiddleClick: function(event) { return isButton(event, 1) },=0A=
    isRightClick:  function(event) { return isButton(event, 2) },=0A=
=0A=
    element: function(event) {=0A=
      event =3D Event.extend(event);=0A=
=0A=
      var node          =3D event.target,=0A=
          type          =3D event.type,=0A=
          currentTarget =3D event.currentTarget;=0A=
=0A=
      if (currentTarget && currentTarget.tagName) {=0A=
        // Firefox screws up the "click" event when moving between radio =
buttons=0A=
        // via arrow keys. It also screws up the "load" and "error" =
events on images,=0A=
        // reporting the document as the target instead of the original =
image.=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=
      if (node.nodeType =3D=3D Node.TEXT_NODE) node =3D node.parentNode;=0A=
      return Element.extend(node);=0A=
    },=0A=
=0A=
    findElement: function(event, expression) {=0A=
      var element =3D Event.element(event);=0A=
      if (!expression) return element;=0A=
      var elements =3D [element].concat(element.ancestors());=0A=
      return Selector.findElement(elements, expression, 0);=0A=
    },=0A=
=0A=
    pointer: function(event) {=0A=
      var docElement =3D document.documentElement,=0A=
      body =3D document.body || { scrollLeft: 0, scrollTop: 0 };=0A=
      return {=0A=
        x: event.pageX || (event.clientX +=0A=
          (docElement.scrollLeft || body.scrollLeft) -=0A=
          (docElement.clientLeft || 0)),=0A=
        y: event.pageY || (event.clientY +=0A=
          (docElement.scrollTop || body.scrollTop) -=0A=
          (docElement.clientTop || 0))=0A=
      };=0A=
    },=0A=
=0A=
    pointerX: function(event) { return Event.pointer(event).x },=0A=
    pointerY: function(event) { return Event.pointer(event).y },=0A=
=0A=
    stop: function(event) {=0A=
      Event.extend(event);=0A=
      event.preventDefault();=0A=
      event.stopPropagation();=0A=
      event.stopped =3D true;=0A=
    }=0A=
  };=0A=
})();=0A=
=0A=
Event.extend =3D (function() {=0A=
  var methods =3D Object.keys(Event.Methods).inject({ }, function(m, =
name) {=0A=
    m[name] =3D Event.Methods[name].methodize();=0A=
    return m;=0A=
  });=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    Object.extend(methods, {=0A=
      stopPropagation: function() { this.cancelBubble =3D true },=0A=
      preventDefault:  function() { this.returnValue =3D false },=0A=
      inspect: function() { return "[object Event]" }=0A=
    });=0A=
=0A=
    return function(event) {=0A=
      if (!event) return false;=0A=
      if (event._extendedByPrototype) return event;=0A=
=0A=
      event._extendedByPrototype =3D Prototype.emptyFunction;=0A=
      var pointer =3D Event.pointer(event);=0A=
      Object.extend(event, {=0A=
        target: event.srcElement,=0A=
        relatedTarget: Event.relatedTarget(event),=0A=
        pageX:  pointer.x,=0A=
        pageY:  pointer.y=0A=
      });=0A=
      return Object.extend(event, methods);=0A=
    };=0A=
=0A=
  } else {=0A=
    Event.prototype =3D Event.prototype || =
document.createEvent("HTMLEvents")['__proto__'];=0A=
    Object.extend(Event.prototype, methods);=0A=
    return Prototype.K;=0A=
  }=0A=
})();=0A=
=0A=
Object.extend(Event, (function() {=0A=
  var cache =3D Event.cache;=0A=
=0A=
  function getEventID(element) {=0A=
    if (element._prototypeEventID) return element._prototypeEventID[0];=0A=
    arguments.callee.id =3D arguments.callee.id || 1;=0A=
    return element._prototypeEventID =3D [++arguments.callee.id];=0A=
  }=0A=
=0A=
  function getDOMEventName(eventName) {=0A=
    if (eventName && eventName.include(':')) return "dataavailable";=0A=
    return eventName;=0A=
  }=0A=
=0A=
  function getCacheForID(id) {=0A=
    return cache[id] =3D cache[id] || { };=0A=
  }=0A=
=0A=
  function getWrappersForEventName(id, eventName) {=0A=
    var c =3D getCacheForID(id);=0A=
    return c[eventName] =3D c[eventName] || [];=0A=
  }=0A=
=0A=
  function createWrapper(element, eventName, handler) {=0A=
    var id =3D getEventID(element);=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    if (c.pluck("handler").include(handler)) return false;=0A=
=0A=
    var wrapper =3D function(event) {=0A=
      if (!Event || !Event.extend ||=0A=
        (event.eventName && event.eventName !=3D eventName))=0A=
          return false;=0A=
=0A=
      Event.extend(event);=0A=
      handler.call(element, event);=0A=
    };=0A=
=0A=
    wrapper.handler =3D handler;=0A=
    c.push(wrapper);=0A=
    return wrapper;=0A=
  }=0A=
=0A=
  function findWrapper(id, eventName, handler) {=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    return c.find(function(wrapper) { return wrapper.handler =3D=3D =
handler });=0A=
  }=0A=
=0A=
  function destroyWrapper(id, eventName, handler) {=0A=
    var c =3D getCacheForID(id);=0A=
    if (!c[eventName]) return false;=0A=
    c[eventName] =3D c[eventName].without(findWrapper(id, eventName, =
handler));=0A=
  }=0A=
=0A=
  function destroyCache() {=0A=
    for (var id in cache)=0A=
      for (var eventName in cache[id])=0A=
        cache[id][eventName] =3D null;=0A=
  }=0A=
=0A=
=0A=
  // Internet Explorer needs to remove event handlers on page unload=0A=
  // in order to avoid memory leaks.=0A=
  if (window.attachEvent) {=0A=
    window.attachEvent("onunload", destroyCache);=0A=
  }=0A=
=0A=
  // Safari has a dummy event handler on page unload so that it won't=0A=
  // use its bfcache. Safari <=3D 3.1 has an issue with restoring the =
"document"=0A=
  // object when page is returned to via the back button using its =
bfcache.=0A=
  if (Prototype.Browser.WebKit) {=0A=
    window.addEventListener('unload', Prototype.emptyFunction, false);=0A=
  }=0A=
=0A=
  return {=0A=
    observe: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var name =3D getDOMEventName(eventName);=0A=
=0A=
      var wrapper =3D createWrapper(element, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.addEventListener) {=0A=
        element.addEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.attachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    stopObserving: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var id =3D getEventID(element), name =3D =
getDOMEventName(eventName);=0A=
=0A=
      if (!handler && eventName) {=0A=
        getWrappersForEventName(id, eventName).each(function(wrapper) {=0A=
          element.stopObserving(eventName, wrapper.handler);=0A=
        });=0A=
        return element;=0A=
=0A=
      } else if (!eventName) {=0A=
        Object.keys(getCacheForID(id)).each(function(eventName) {=0A=
          element.stopObserving(eventName);=0A=
        });=0A=
        return element;=0A=
      }=0A=
=0A=
      var wrapper =3D findWrapper(id, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.removeEventListener) {=0A=
        element.removeEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.detachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      destroyWrapper(id, eventName, handler);=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    fire: function(element, eventName, memo) {=0A=
      element =3D $(element);=0A=
      if (element =3D=3D document && document.createEvent && =
!element.dispatchEvent)=0A=
        element =3D document.documentElement;=0A=
=0A=
      var event;=0A=
      if (document.createEvent) {=0A=
        event =3D document.createEvent("HTMLEvents");=0A=
        event.initEvent("dataavailable", true, true);=0A=
      } else {=0A=
        event =3D document.createEventObject();=0A=
        event.eventType =3D "ondataavailable";=0A=
      }=0A=
=0A=
      event.eventName =3D eventName;=0A=
      event.memo =3D memo || { };=0A=
=0A=
      if (document.createEvent) {=0A=
        element.dispatchEvent(event);=0A=
      } else {=0A=
        element.fireEvent(event.eventType, event);=0A=
      }=0A=
=0A=
      return Event.extend(event);=0A=
    }=0A=
  };=0A=
})());=0A=
=0A=
Object.extend(Event, Event.Methods);=0A=
=0A=
Element.addMethods({=0A=
  fire:          Event.fire,=0A=
  observe:       Event.observe,=0A=
  stopObserving: Event.stopObserving=0A=
});=0A=
=0A=
Object.extend(document, {=0A=
  fire:          Element.Methods.fire.methodize(),=0A=
  observe:       Element.Methods.observe.methodize(),=0A=
  stopObserving: Element.Methods.stopObserving.methodize(),=0A=
  loaded:        false=0A=
});=0A=
=0A=
(function() {=0A=
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A=
     Matthias Miller, Dean Edwards and John Resig. */=0A=
=0A=
  var timer;=0A=
=0A=
  function fireContentLoadedEvent() {=0A=
    if (document.loaded) return;=0A=
    if (timer) window.clearInterval(timer);=0A=
    document.fire("dom:loaded");=0A=
    document.loaded =3D true;=0A=
  }=0A=
=0A=
  if (document.addEventListener) {=0A=
    if (Prototype.Browser.WebKit) {=0A=
      timer =3D window.setInterval(function() {=0A=
        if (/loaded|complete/.test(document.readyState))=0A=
          fireContentLoadedEvent();=0A=
      }, 0);=0A=
=0A=
      Event.observe(window, "load", fireContentLoadedEvent);=0A=
=0A=
    } else {=0A=
      document.addEventListener("DOMContentLoaded",=0A=
        fireContentLoadedEvent, false);=0A=
    }=0A=
=0A=
  } else {=0A=
    document.write("<script id=3D__onDOMContentLoaded defer =
src=3D//:><\/script>");=0A=
    $("__onDOMContentLoaded").onreadystatechange =3D function() {=0A=
      if (this.readyState =3D=3D "complete") {=0A=
        this.onreadystatechange =3D null;=0A=
        fireContentLoadedEvent();=0A=
      }=0A=
    };=0A=
  }=0A=
})();=0A=
/*------------------------------- DEPRECATED =
-------------------------------*/=0A=
=0A=
Hash.toQueryString =3D Object.toQueryString;=0A=
=0A=
var Toggle =3D { display: Element.toggle };=0A=
=0A=
Element.Methods.childOf =3D Element.Methods.descendantOf;=0A=
=0A=
var Insertion =3D {=0A=
  Before: function(element, content) {=0A=
    return Element.insert(element, {before:content});=0A=
  },=0A=
=0A=
  Top: function(element, content) {=0A=
    return Element.insert(element, {top:content});=0A=
  },=0A=
=0A=
  Bottom: function(element, content) {=0A=
    return Element.insert(element, {bottom:content});=0A=
  },=0A=
=0A=
  After: function(element, content) {=0A=
    return Element.insert(element, {after:content});=0A=
  }=0A=
};=0A=
=0A=
var $continue =3D new Error('"throw $continue" is deprecated, use =
"return" instead');=0A=
=0A=
// This should be moved to script.aculo.us; notice the deprecated methods=0A=
// further below, that map to the newer Element methods.=0A=
var Position =3D {=0A=
  // set to true if needed, warning: firefox performance problems=0A=
  // NOT neeeded for page scrolling, only if draggable contained in=0A=
  // scrollable elements=0A=
  includeScrollOffsets: false,=0A=
=0A=
  // must be called before calling withinIncludingScrolloffset, every =
time the=0A=
  // page is scrolled=0A=
  prepare: function() {=0A=
    this.deltaX =3D  window.pageXOffset=0A=
                || document.documentElement.scrollLeft=0A=
                || document.body.scrollLeft=0A=
                || 0;=0A=
    this.deltaY =3D  window.pageYOffset=0A=
                || document.documentElement.scrollTop=0A=
                || document.body.scrollTop=0A=
                || 0;=0A=
  },=0A=
=0A=
  // caches x/y coordinate pair to use with overlap=0A=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (y >=3D this.offset[1] &&=0A=
            y <  this.offset[1] + element.offsetHeight &&=0A=
            x >=3D this.offset[0] &&=0A=
            x <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  withinIncludingScrolloffsets: function(element, x, y) {=0A=
    var offsetcache =3D Element.cumulativeScrollOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  // within must be called directly before=0A=
  overlap: function(mode, element) {=0A=
    if (!mode) return 0;=0A=
    if (mode =3D=3D 'vertical')=0A=
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A=
        element.offsetHeight;=0A=
    if (mode =3D=3D 'horizontal')=0A=
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A=
        element.offsetWidth;=0A=
  },=0A=
=0A=
  // Deprecation layer -- use newer Element methods now (1.5.2).=0A=
=0A=
  cumulativeOffset: Element.Methods.cumulativeOffset,=0A=
=0A=
  positionedOffset: Element.Methods.positionedOffset,=0A=
=0A=
  absolutize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.absolutize(element);=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.relativize(element);=0A=
  },=0A=
=0A=
  realOffset: Element.Methods.cumulativeScrollOffset,=0A=
=0A=
  offsetParent: Element.Methods.getOffsetParent,=0A=
=0A=
  page: Element.Methods.viewportOffset,=0A=
=0A=
  clone: function(source, target, options) {=0A=
    options =3D options || { };=0A=
    return Element.clonePosition(target, source, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!document.getElementsByClassName) document.getElementsByClassName =
=3D function(instanceMethods){=0A=
  function iter(name) {=0A=
    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' =
" + name + " ')]";=0A=
  }=0A=
=0A=
  instanceMethods.getElementsByClassName =3D =
Prototype.BrowserFeatures.XPath ?=0A=
  function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') =
: iter(className);=0A=
    return cond ? document._getElementsByXPath('.//*' + cond, element) : =
[];=0A=
  } : function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var elements =3D [], classNames =3D (/\s/.test(className) ? =
$w(className) : null);=0A=
    if (!classNames && !className) return elements;=0A=
=0A=
    var nodes =3D $(element).getElementsByTagName('*');=0A=
    className =3D ' ' + className + ' ';=0A=
=0A=
    for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A=
      if (child.className && (cn =3D ' ' + child.className + ' ') && =
(cn.include(className) ||=0A=
          (classNames && classNames.all(function(name) {=0A=
            return !name.toString().blank() && cn.include(' ' + name + ' =
');=0A=
          }))))=0A=
        elements.push(Element.extend(child));=0A=
    }=0A=
    return elements;=0A=
  };=0A=
=0A=
  return function(className, parentElement) {=0A=
    return $(parentElement || =
document.body).getElementsByClassName(className);=0A=
  };=0A=
}(Element.Methods);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.ClassNames =3D Class.create();=0A=
Element.ClassNames.prototype =3D {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    this.element.className.split(/\s+/).select(function(name) {=0A=
      return name.length > 0;=0A=
    })._each(iterator);=0A=
  },=0A=
=0A=
  set: function(className) {=0A=
    this.element.className =3D className;=0A=
  },=0A=
=0A=
  add: function(classNameToAdd) {=0A=
    if (this.include(classNameToAdd)) return;=0A=
    this.set($A(this).concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set($A(this).without(classNameToRemove).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return $A(this).join(' ');=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.ClassNames.prototype, Enumerable);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.addMethods();
------=_NextPart_000_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/javascripts/effects.js?1284589638

// Copyright (c) 2005-2008 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) {=0A=
    element =3D $(element);=0A=
    effect =3D (effect || 'appear').toLowerCase();=0A=
    var options =3D Object.extend({=0A=
      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }=0A=
    }, arguments[2] || { });=0A=
    Effect[element.visible() ?=0A=
      Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, =
options);=0A=
  }=0A=
};=0A=
=0A=
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=
    function codeForEvent(options,eventName){=0A=
      return (=0A=
        (options[eventName+'Internal'] ? =
'this.options.'+eventName+'Internal(this);' : '') +=0A=
        (options[eventName] ? 'this.options.'+eventName+'(this);' : '')=0A=
      );=0A=
    }=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_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/javascripts/dragdrop.js?1284589638

// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
//           (c) 2005-2008 Sammi Williams =
(http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)=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 Position.cumulativeOffset(this.element);=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 Position.cumulativeOffset(this.element);=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.id] =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 Position.cumulativeOffset(dropon);=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_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/javascripts/controls.js?1284589638

// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
//           (c) 2005-2008 Ivan Krstic =
(http://blogs.law.harvard.edu/ivan)=0A=
//           (c) 2005-2008 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_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/javascripts/application.js?1284589638

// Place your application-specific JavaScript functions and classes here=0A=
// This file is automatically included by javascript_include_tag =
:defaults=0A=

------=_NextPart_000_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/javascripts/tiny_mce/tiny_mce.js?1284589638

var =
tinymce=3D{majorVersion:"3",minorVersion:"2.4.1",releaseDate:"2009-05-25"=
,_init:function(){var =
o=3Dthis,k=3Ddocument,l=3Dwindow,j=3Dnavigator,b=3Dj.userAgent,h,a,g,f,e,=
m;o.isOpera=3Dl.opera&&opera.buildNumber;o.isWebKit=3D/WebKit/.test(b);o.=
isIE=3D!o.isWebKit&&!o.isOpera&&(/MSIE/gi).test(b)&&(/Explorer/gi).test(j=
.appName);o.isIE6=3Do.isIE&&/MSIE =
[56]/.test(b);o.isGecko=3D!o.isWebKit&&/Gecko/.test(b);o.isMac=3Db.indexO=
f("Mac")!=3D-1;o.isAir=3D/adobeair/i.test(b);if(l.tinyMCEPreInit){o.suffi=
x=3DtinyMCEPreInit.suffix;o.baseURL=3DtinyMCEPreInit.base;o.query=3DtinyM=
CEPreInit.query;return}o.suffix=3D"";a=3Dk.getElementsByTagName("base");f=
or(h=3D0;h<a.length;h++){if(m=3Da[h].href){if(/^https?:\/\/[^\/]+$/.test(=
m)){m+=3D"/"}f=3Dm?m.match(/.*\//)[0]:""}}function =
c(d){if(d.src&&/tiny_mce(|_dev|_src|_gzip|_jquery|_prototype).js/.test(d.=
src)){if(/_(src|dev)\.js/g.test(d.src)){o.suffix=3D"_src"}if((e=3Dd.src.i=
ndexOf("?"))!=3D-1){o.query=3Dd.src.substring(e+1)}o.baseURL=3Dd.src.subs=
tring(0,d.src.lastIndexOf("/"));if(f&&o.baseURL.indexOf("://")=3D=3D-1){o=
.baseURL=3Df+o.baseURL}return o.baseURL}return =
null}a=3Dk.getElementsByTagName("script");for(h=3D0;h<a.length;h++){if(c(=
a[h])){return}}g=3Dk.getElementsByTagName("head")[0];if(g){a=3Dg.getEleme=
ntsByTagName("script");for(h=3D0;h<a.length;h++){if(c(a[h])){return}}}ret=
urn},is:function(b,a){var c=3Dtypeof(b);if(!a){return =
c!=3D"undefined"}if(a=3D=3D"array"&&(b.hasOwnProperty&&b instanceof =
Array)){return true}return c=3D=3Da},each:function(d,a,c){var =
e,b;if(!d){return =
0}c=3Dc||d;if(typeof(d.length)!=3D"undefined"){for(e=3D0,b=3Dd.length;e<b=
;e++){if(a.call(c,d[e],e,d)=3D=3D=3Dfalse){return 0}}}else{for(e in =
d){if(d.hasOwnProperty(e)){if(a.call(c,d[e],e,d)=3D=3D=3Dfalse){return =
0}}}}return 1},map:function(b,c){var =
d=3D[];tinymce.each(b,function(a){d.push(c(a))});return =
d},grep:function(b,c){var =
d=3D[];tinymce.each(b,function(a){if(!c||c(a)){d.push(a)}});return =
d},inArray:function(c,d){var =
e,b;if(c){for(e=3D0,b=3Dc.length;e<b;e++){if(c[e]=3D=3D=3Dd){return =
e}}}return -1},extend:function(f,d){var =
c,b=3Darguments;for(c=3D1;c<b.length;c++){d=3Db[c];tinymce.each(d,functio=
n(a,e){if(typeof(a)!=3D=3D"undefined"){f[e]=3Da}})}return =
f},trim:function(a){return(a?""+a:"").replace(/^\s*|\s*$/g,"")},create:fu=
nction(j,a){var i=3Dthis,b,e,f,g,d,h=3D0;j=3D/^((static) =
)?([\w.]+)(:([\w.]+))?/.exec(j);f=3Dj[3].match(/(^|\.)(\w+)$/i)[2];e=3Di.=
createNS(j[3].replace(/\.\w+$/,""));if(e[f]){return}if(j[2]=3D=3D"static"=
){e[f]=3Da;if(this.onCreate){this.onCreate(j[2],j[3],e[f])}return}if(!a[f=
]){a[f]=3Dfunction(){};h=3D1}e[f]=3Da[f];i.extend(e[f].prototype,a);if(j[=
5]){b=3Di.resolve(j[5]).prototype;g=3Dj[5].match(/\.(\w+)$/i)[1];d=3De[f]=
;if(h){e[f]=3Dfunction(){return =
b[g].apply(this,arguments)}}else{e[f]=3Dfunction(){this.parent=3Db[g];ret=
urn =
d.apply(this,arguments)}}e[f].prototype[f]=3De[f];i.each(b,function(c,k){=
e[f].prototype[k]=3Db[k]});i.each(a,function(c,k){if(b[k]){e[f].prototype=
[k]=3Dfunction(){this.parent=3Db[k];return =
c.apply(this,arguments)}}else{if(k!=3Df){e[f].prototype[k]=3Dc}}})}i.each=
(a["static"],function(c,k){e[f][k]=3Dc});if(this.onCreate){this.onCreate(=
j[2],j[3],e[f].prototype)}},walk:function(c,b,d,a){a=3Da||this;if(c){if(d=
){c=3Dc[d]}tinymce.each(c,function(f,e){if(b.call(a,f,e,d)=3D=3D=3Dfalse)=
{return false}tinymce.walk(f,b,d,a)})}},createNS:function(d,c){var =
b,a;c=3Dc||window;d=3Dd.split(".");for(b=3D0;b<d.length;b++){a=3Dd[b];if(=
!c[a]){c[a]=3D{}}c=3Dc[a]}return c},resolve:function(d,c){var =
b,a;c=3Dc||window;d=3Dd.split(".");for(b=3D0,a=3Dd.length;b<a;b++){c=3Dc[=
d[b]];if(!c){break}}return c},addUnload:function(e,d){var =
c=3Dthis,a=3Dwindow;e=3D{func:e,scope:d||this};if(!c.unloads){function =
b(){var f=3Dc.unloads,h,i;if(f){for(i in =
f){h=3Df[i];if(h&&h.func){h.func.call(h.scope,1)}}if(a.detachEvent){a.det=
achEvent("onbeforeunload",g);a.detachEvent("onunload",b)}else{if(a.remove=
EventListener){a.removeEventListener("unload",b,false)}}c.unloads=3Dh=3Df=
=3Da=3Db=3D0;if(window.CollectGarbage){window.CollectGarbage()}}}function=
 g(){var h=3Ddocument;if(h.readyState=3D=3D"interactive"){function =
f(){h.detachEvent("onstop",f);if(b){b()}h=3D0}if(h){h.attachEvent("onstop=
",f)}window.setTimeout(function(){if(h){h.detachEvent("onstop",f)}},0)}}i=
f(a.attachEvent){a.attachEvent("onunload",b);a.attachEvent("onbeforeunloa=
d",g)}else{if(a.addEventListener){a.addEventListener("unload",b,false)}}c=
.unloads=3D[e]}else{c.unloads.push(e)}return =
e},removeUnload:function(c){var =
a=3Dthis.unloads,b=3Dnull;tinymce.each(a,function(e,d){if(e&&e.func=3D=3D=
c){a.splice(d,1);b=3Dc;return false}});return =
b},explode:function(a,b){return =
a?tinymce.map(a.split(b||","),tinymce.trim):a},_addVer:function(b){var =
a;if(!this.query){return =
b}a=3D(b.indexOf("?")=3D=3D-1?"?":"&")+this.query;if(b.indexOf("#")=3D=3D=
-1){return b+a}return =
b.replace("#",a+"#")}};window.tinymce=3Dtinymce;tinymce._init();tinymce.c=
reate("tinymce.util.Dispatcher",{scope:null,listeners:null,Dispatcher:fun=
ction(a){this.scope=3Da||this;this.listeners=3D[]},add:function(a,b){this=
.listeners.push({cb:a,scope:b||this.scope});return =
a},addToTop:function(a,b){this.listeners.unshift({cb:a,scope:b||this.scop=
e});return a},remove:function(a){var =
b=3Dthis.listeners,c=3Dnull;tinymce.each(b,function(e,d){if(a=3D=3De.cb){=
c=3Da;b.splice(d,1);return false}});return c},dispatch:function(){var =
f,d=3Darguments,e,b=3Dthis.listeners,g;for(e=3D0;e<b.length;e++){g=3Db[e]=
;f=3Dg.cb.apply(g.scope,d);if(f=3D=3D=3Dfalse){break}}return =
f}});(function(){var =
a=3Dtinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var=
 =
f=3Dthis,h,d,c;g=3Df.settings=3Dg||{};if(/^(mailto|tel|news|javascript|ab=
out):/i.test(e)||/^\s*#/.test(e)){f.source=3De;return}if(e.indexOf("/")=3D=
=3D=3D0&&e.indexOf("//")!=3D=3D0){e=3D(g.base_uri?g.base_uri.protocol||"h=
ttp":"http")+"://mce_host"+e}if(e.indexOf(":/")=3D=3D=3D-1&&e.indexOf("//=
")!=3D=3D0){e=3D(g.base_uri.protocol||"http")+"://mce_host"+f.toAbsPath(g=
.base_uri.path,e)}e=3De.replace(/@@/g,"(mce_at)");e=3D/^(?:(?![^:@]+:[^:@=
\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::=
(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(=
?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","use=
rInfo","user","password","host","port","relative","path","directory","fil=
e","query","anchor"],function(b,j){var =
k=3De[j];if(k){k=3Dk.replace(/\(mce_at\)/g,"@@")}f[b]=3Dk});if(c=3Dg.base=
_uri){if(!f.protocol){f.protocol=3Dc.protocol}if(!f.userInfo){f.userInfo=3D=
c.userInfo}if(!f.port&&f.host=3D=3D"mce_host"){f.port=3Dc.port}if(!f.host=
||f.host=3D=3D"mce_host"){f.host=3Dc.host}f.source=3D""}},setPath:functio=
n(c){var =
b=3Dthis;c=3D/^(.*?)\/?(\w+)?$/.exec(c);b.path=3Dc[0];b.directory=3Dc[1];=
b.file=3Dc[2];b.source=3D"";b.getURI()},toRelative:function(b){var =
c=3Dthis,d;if(b=3D=3D=3D"./"){return b}b=3Dnew =
tinymce.util.URI(b,{base_uri:c});if((b.host!=3D"mce_host"&&c.host!=3Db.ho=
st&&b.host)||c.port!=3Db.port||c.protocol!=3Db.protocol){return =
b.getURI()}d=3Dc.toRelPath(c.path,b.path);if(b.query){d+=3D"?"+b.query}if=
(b.anchor){d+=3D"#"+b.anchor}return d},toAbsolute:function(b,c){var =
b=3Dnew tinymce.util.URI(b,{base_uri:this});return =
b.getURI(this.host=3D=3Db.host?c:0)},toRelPath:function(g,h){var =
c,f=3D0,d=3D"",e,b;g=3Dg.substring(0,g.lastIndexOf("/"));g=3Dg.split("/")=
;c=3Dh.split("/");if(g.length>=3Dc.length){for(e=3D0,b=3Dg.length;e<b;e++=
){if(e>=3Dc.length||g[e]!=3Dc[e]){f=3De+1;break}}}if(g.length<c.length){f=
or(e=3D0,b=3Dc.length;e<b;e++){if(e>=3Dg.length||g[e]!=3Dc[e]){f=3De+1;br=
eak}}}if(f=3D=3D1){return =
h}for(e=3D0,b=3Dg.length-(f-1);e<b;e++){d+=3D"../"}for(e=3Df-1,b=3Dc.leng=
th;e<b;e++){if(e!=3Df-1){d+=3D"/"+c[e]}else{d+=3Dc[e]}}return =
d},toAbsPath:function(e,f){var =
c,b=3D0,g=3D[],d;d=3D/\/$/.test(f)?"/":"";e=3De.split("/");f=3Df.split("/=
");a(e,function(h){if(h){g.push(h)}});e=3Dg;for(c=3Df.length-1,g=3D[];c>=3D=
0;c--){if(f[c].length=3D=3D0||f[c]=3D=3D"."){continue}if(f[c]=3D=3D".."){=
b++;continue}if(b>0){b--;continue}g.push(f[c])}c=3De.length-b;if(c<=3D0){=
return"/"+g.reverse().join("/")+d}return"/"+e.slice(0,c).join("/")+"/"+g.=
reverse().join("/")+d},getURI:function(d){var =
c,b=3Dthis;if(!b.source||d){c=3D"";if(!d){if(b.protocol){c+=3Db.protocol+=
"://"}if(b.userInfo){c+=3Db.userInfo+"@"}if(b.host){c+=3Db.host}if(b.port=
){c+=3D":"+b.port}}if(b.path){c+=3Db.path}if(b.query){c+=3D"?"+b.query}if=
(b.anchor){c+=3D"#"+b.anchor}b.source=3Dc}return =
b.source}})})();(function(){var a=3Dtinymce.each;tinymce.create("static =
tinymce.util.Cookie",{getHash:function(d){var =
b=3Dthis.get(d),c;if(b){a(b.split("&"),function(e){e=3De.split("=3D");c=3D=
c||{};c[unescape(e[0])]=3Dunescape(e[1])})}return =
c},setHash:function(j,b,g,f,i,c){var =
h=3D"";a(b,function(e,d){h+=3D(!h?"":"&")+escape(d)+"=3D"+escape(e)});thi=
s.set(j,h,g,f,i,c)},get:function(i){var =
h=3Ddocument.cookie,g,f=3Di+"=3D",d;if(!h){return}d=3Dh.indexOf("; =
"+f);if(d=3D=3D-1){d=3Dh.indexOf(f);if(d!=3D0){return =
null}}else{d+=3D2}g=3Dh.indexOf(";",d);if(g=3D=3D-1){g=3Dh.length}return =
unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.c=
ookie=3Di+"=3D"+escape(b)+((g)?"; =
expires=3D"+g.toGMTString():"")+((f)?"; path=3D"+escape(f):"")+((h)?"; =
domain=3D"+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=3Dnew =
Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();tinymce.cr=
eate("static tinymce.util.JSON",{serialize:function(e){var =
c,a,d=3Dtinymce.util.JSON.serialize,b;if(e=3D=3Dnull){return"null"}b=3Dty=
peof =
e;if(b=3D=3D"string"){a=3D"\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+e.replace=
(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(g,f){c=3Da.indexOf(f);if(c+1){r=
eturn"\\"+a.charAt(c+1)}g=3Df.charCodeAt().toString(16);return"\\u"+"0000=
".substring(g.length)+g})+'"'}if(b=3D=3D"object"){if(e.hasOwnProperty&&e =
instanceof =
Array){for(c=3D0,a=3D"[";c<e.length;c++){a+=3D(c>0?",":"")+d(e[c])}return=
 a+"]"}a=3D"{";for(c in e){a+=3Dtypeof =
e[c]!=3D"function"?(a.length>1?',"':'"')+c+'":'+d(e[c]):""}return =
a+"}"}return""+e},parse:function(s){try{return =
eval("("+s+")")}catch(ex){}}});tinymce.create("static =
tinymce.util.XHR",{send:function(g){var =
a,e,b=3Dwindow,h=3D0;g.scope=3Dg.scope||this;g.success_scope=3Dg.success_=
scope||g.scope;g.error_scope=3Dg.error_scope||g.scope;g.async=3Dg.async=3D=
=3D=3Dfalse?false:true;g.data=3Dg.data||"";function =
d(i){a=3D0;try{a=3Dnew ActiveXObject(i)}catch(c){}return =
a}a=3Db.XMLHttpRequest?new =
XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.o=
verrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.dat=
a?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Con=
tent-Type",g.content_type)}a.send(g.data);function =
f(){if(!g.async||a.readyState=3D=3D4||h++>10000){if(g.success&&h<10000&&a=
.status=3D=3D200){g.success.call(g.success_scope,""+a.responseText,a,g)}e=
lse{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",=
a,g)}}a=3Dnull}else{b.setTimeout(f,10)}}if(!g.async){return =
f()}e=3Db.setTimeout(f,10)}}});(function(){var =
c=3Dtinymce.extend,b=3Dtinymce.util.JSON,a=3Dtinymce.util.XHR;tinymce.cre=
ate("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=3Dc=
({},d);this.count=3D0},send:function(f){var =
e=3Df.error,d=3Df.success;f=3Dc(this.settings,f);f.success=3Dfunction(h,g=
){h=3Db.parse(h);if(typeof(h)=3D=3D"undefined"){h=3D{error:"JSON Parse =
error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call=
(f.success_scope||f.scope,h.result)}};f.error=3Dfunction(h,g){e.call(f.er=
ror_scope||f.scope,h,g)};f.data=3Db.serialize({id:f.id||"c"+(this.count++=
),method:f.method,params:f.params});f.content_type=3D"application/json";a=
.send(f)},"static":{sendRPC:function(d){return new =
tinymce.util.JSONRequest().send(d)}}})}());(function(c){var =
e=3Dc.each,b=3Dc.is;var =
d=3Dc.isWebKit,a=3Dc.isIE;c.create("tinymce.dom.DOMUtils",{doc:null,root:=
null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderW=
idth)$/,props:{"for":"htmlFor","class":"className",className:"className",=
checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"rea=
dOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"}=
,DOMUtils:function(i,g){var =
f=3Dthis;f.doc=3Di;f.win=3Dwindow;f.files=3D{};f.cssFlicker=3Dfalse;f.cou=
nter=3D0;f.boxModel=3D!c.isIE||i.compatMode=3D=3D"CSS1Compat";f.stdMode=3D=
i.documentMode=3D=3D=3D8;f.settings=3Dg=3Dc.extend({keep_values:false,hex=
_colors:1,process_html:1},g);if(c.isIE6){try{i.execCommand("BackgroundIma=
geCache",false,true)}catch(h){f.cssFlicker=3Dtrue}}c.addUnload(f.destroy,=
f)},getRoot:function(){var =
f=3Dthis,g=3Df.settings;return(g&&f.get(g.root_element))||f.doc.body},get=
ViewPort:function(g){var =
h,f;g=3D!g?this.win:g;h=3Dg.document;f=3Dthis.boxModel?h.documentElement:=
h.body;return{x:g.pageXOffset||f.scrollLeft,y:g.pageYOffset||f.scrollTop,=
w:g.innerWidth||f.clientWidth,h:g.innerHeight||f.clientHeight}},getRect:f=
unction(i){var =
h,f=3Dthis,g;i=3Df.get(i);h=3Df.getPos(i);g=3Df.getSize(i);return{x:h.x,y=
:h.y,w:g.w,h:g.h}},getSize:function(j){var =
g=3Dthis,f,i;j=3Dg.get(j);f=3Dg.getStyle(j,"width");i=3Dg.getStyle(j,"hei=
ght");if(f.indexOf("px")=3D=3D=3D-1){f=3D0}if(i.indexOf("px")=3D=3D=3D-1)=
{i=3D0}return{w:parseInt(f)||j.offsetWidth||j.clientWidth,h:parseInt(i)||=
j.offsetHeight||j.clientHeight}},is:function(g,f){return =
c.dom.Sizzle.matches(f,g.nodeType?[g]:g).length>0},getParent:function(i,h=
,g){return =
this.getParents(i,h,g,false)},getParents:function(p,k,i,m){var =
h=3Dthis,g,j=3Dh.settings,l=3D[];p=3Dh.get(p);m=3Dm=3D=3D=3Dundefined;if(=
j.strict_root){i=3Di||h.getRoot()}if(b(k,"string")){g=3Dk;if(k=3D=3D=3D"*=
"){k=3Dfunction(f){return f.nodeType=3D=3D1}}else{k=3Dfunction(f){return =
h.is(f,g)}}}while(p){if(p=3D=3Di||!p.nodeType||p.nodeType=3D=3D=3D9){brea=
k}if(!k||k(p)){if(m){l.push(p)}else{return p}}p=3Dp.parentNode}return =
m?l:null},get:function(f){var =
g;if(f&&this.doc&&typeof(f)=3D=3D"string"){g=3Df;f=3Dthis.doc.getElementB=
yId(f);if(f&&f.id!=3D=3Dg){return =
this.doc.getElementsByName(g)[1]}}return f},select:function(h,g){var =
f=3Dthis;return =
c.dom.Sizzle(h,f.get(g)||f.get(f.settings.root_element)||f.doc,[])},add:f=
unction(j,l,f,i,k){var g=3Dthis;return this.run(j,function(n){var =
m,h;m=3Db(l,"string")?g.doc.createElement(l):l;g.setAttribs(m,f);if(i){if=
(i.nodeType){m.appendChild(i)}else{g.setHTML(m,i)}}return =
!k?n.appendChild(m):m})},create:function(i,f,g){return =
this.add(this.doc.createElement(i),i,f,g,1)},createHTML:function(m,f,j){v=
ar l=3D"",i=3Dthis,g;l+=3D"<"+m;for(g in =
f){if(f.hasOwnProperty(g)){l+=3D" =
"+g+'=3D"'+i.encode(f[g])+'"'}}if(c.is(j)){return =
l+">"+j+"</"+m+">"}return l+" />"},remove:function(h,f){var =
g=3Dthis;return this.run(h,function(m){var =
l,k,j;l=3Dm.parentNode;if(!l){return =
null}if(f){for(j=3Dm.childNodes.length-1;j>=3D0;j--){g.insertAfter(m.chil=
dNodes[j],m)}}if(g.fixPsuedoLeaks){l=3Dm.cloneNode(true);f=3D"IELeakGarba=
geBin";k=3Dg.get(f)||g.add(g.doc.body,"div",{id:f,style:"display:none"});=
k.appendChild(m);k.innerHTML=3D"";return l}return =
l.removeChild(m)})},setStyle:function(i,f,g){var h=3Dthis;return =
h.run(i,function(l){var =
k,j;k=3Dl.style;f=3Df.replace(/-(\D)/g,function(n,m){return =
m.toUpperCase()});if(h.pixelStyles.test(f)&&(c.is(g,"number")||/^[\-0-9\.=
]+$/.test(g))){g+=3D"px"}switch(f){case"opacity":if(a){k.filter=3Dg=3D=3D=
=3D""?"":"alpha(opacity=3D"+(g*100)+")";if(!i.currentStyle||!i.currentSty=
le.hasLayout){k.display=3D"inline-block"}}k[f]=3Dk["-moz-opacity"]=3Dk["-=
khtml-opacity"]=3Dg||"";break;case"float":a?k.styleFloat=3Dg:k.cssFloat=3D=
g;break;default:k[f]=3Dg||""}if(h.settings.update_styles){h.setAttrib(l,"=
mce_style")}})},getStyle:function(i,f,h){i=3Dthis.get(i);if(!i){return =
false}if(this.doc.defaultView&&h){f=3Df.replace(/[A-Z]/g,function(j){retu=
rn"-"+j});try{return =
this.doc.defaultView.getComputedStyle(i,null).getPropertyValue(f)}catch(g=
){return null}}f=3Df.replace(/-(\D)/g,function(k,j){return =
j.toUpperCase()});if(f=3D=3D"float"){f=3Da?"styleFloat":"cssFloat"}if(i.c=
urrentStyle&&h){return i.currentStyle[f]}return =
i.style[f]},setStyles:function(i,j){var =
g=3Dthis,h=3Dg.settings,f;f=3Dh.update_styles;h.update_styles=3D0;e(j,fun=
ction(k,l){g.setStyle(i,l,k)});h.update_styles=3Df;if(h.update_styles){g.=
setAttrib(i,h.cssText)}},setAttrib:function(h,i,f){var =
g=3Dthis;if(!h||!i){return}if(g.settings.strict){i=3Di.toLowerCase()}retu=
rn this.run(h,function(k){var =
j=3Dg.settings;switch(i){case"style":if(!b(f,"string")){e(f,function(l,m)=
{g.setStyle(k,m,l)});return}if(j.keep_values){if(f&&!g._isRes(f)){k.setAt=
tribute("mce_style",f,2)}else{k.removeAttribute("mce_style",2)}}k.style.c=
ssText=3Df;break;case"class":k.className=3Df||"";break;case"src":case"hre=
f":if(j.keep_values){if(j.url_converter){f=3Dj.url_converter.call(j.url_c=
onverter_scope||g,f,i,k)}g.setAttrib(k,"mce_"+i,f,2)}break;case"shape":k.=
setAttribute("mce_style",f);break}if(b(f)&&f!=3D=3Dnull&&f.length!=3D=3D0=
){k.setAttribute(i,""+f,2)}else{k.removeAttribute(i,2)}})},setAttribs:fun=
ction(g,h){var f=3Dthis;return =
this.run(g,function(i){e(h,function(j,k){f.setAttrib(i,k,j)})})},getAttri=
b:function(i,j,h){var =
f,g=3Dthis;i=3Dg.get(i);if(!i||i.nodeType!=3D=3D1){return =
false}if(!b(h)){h=3D""}if(/^(src|href|style|coords|shape)$/.test(j)){f=3D=
i.getAttribute("mce_"+j);if(f){return =
f}}if(a&&g.props[j]){f=3Di[g.props[j]];f=3Df&&f.nodeValue?f.nodeValue:f}i=
f(!f){f=3Di.getAttribute(j,2)}if(j=3D=3D=3D"style"){f=3Df||i.style.cssTex=
t;if(f){f=3Dg.serializeStyle(g.parseStyle(f));if(g.settings.keep_values&&=
!g._isRes(f)){i.setAttribute("mce_style",f)}}}if(d&&j=3D=3D=3D"class"&&f)=
{f=3Df.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(a){switch(j){case"rows=
pan":case"colspan":if(f=3D=3D=3D1){f=3D""}break;case"size":if(f=3D=3D=3D"=
+0"||f=3D=3D=3D20||f=3D=3D=3D0){f=3D""}break;case"width":case"height":cas=
e"vspace":case"checked":case"disabled":case"readonly":if(f=3D=3D=3D0){f=3D=
""}break;case"hspace":if(f=3D=3D=3D-1){f=3D""}break;case"maxlength":case"=
tabindex":if(f=3D=3D=3D32768||f=3D=3D=3D2147483647||f=3D=3D=3D"32768"){f=3D=
""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(f=3D=3D=
=3D65535){return j}return =
h;case"shape":f=3Df.toLowerCase();break;default:if(j.indexOf("on")=3D=3D=3D=
0&&f){f=3D(""+f).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1")}}}=
return(f!=3D=3Dundefined&&f!=3D=3Dnull&&f!=3D=3D"")?""+f:h},getPos:functi=
on(m,i){var =
g=3Dthis,f=3D0,l=3D0,j,k=3Dg.doc,h;m=3Dg.get(m);i=3Di||k.body;if(m){if(a&=
&!g.stdMode){m=3Dm.getBoundingClientRect();j=3Dg.boxModel?k.documentEleme=
nt:k.body;f=3Dg.getStyle(g.select("html")[0],"borderWidth");f=3D(f=3D=3D"=
medium"||g.boxModel&&!g.isIE6)&&2||f;m.top+=3Dg.win.self!=3Dg.win.top?2:0=
;return{x:m.left+j.scrollLeft-f,y:m.top+j.scrollTop-f}}h=3Dm;while(h&&h!=3D=
i&&h.nodeType){f+=3Dh.offsetLeft||0;l+=3Dh.offsetTop||0;h=3Dh.offsetParen=
t}h=3Dm.parentNode;while(h&&h!=3Di&&h.nodeType){f-=3Dh.scrollLeft||0;l-=3D=
h.scrollTop||0;h=3Dh.parentNode}}return{x:f,y:l}},parseStyle:function(h){=
var i=3Dthis,j=3Di.settings,k=3D{};if(!h){return k}function f(w,q,v){var =
o,u,m,n;o=3Dk[w+"-top"+q];if(!o){return}u=3Dk[w+"-right"+q];if(o!=3Du){re=
turn}m=3Dk[w+"-bottom"+q];if(u!=3Dm){return}n=3Dk[w+"-left"+q];if(m!=3Dn)=
{return}k[v]=3Dn;delete k[w+"-top"+q];delete k[w+"-right"+q];delete =
k[w+"-bottom"+q];delete k[w+"-left"+q]}function g(n,m,l,p){var =
o;o=3Dk[m];if(!o){return}o=3Dk[l];if(!o){return}o=3Dk[p];if(!o){return}k[=
n]=3Dk[m]+" "+k[l]+" "+k[p];delete k[m];delete k[l];delete =
k[p]}h=3Dh.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");e(h.split(";"),fun=
ction(m){var =
l,n=3D[];if(m){m=3Dm.replace(/_MCE_SEMI_/g,";");m=3Dm.replace(/url\([^\)]=
+\)/g,function(o){n.push(o);return"url("+n.length+")"});m=3Dm.split(":");=
l=3Dc.trim(m[1]);l=3Dl.replace(/url\(([^\)]+)\)/g,function(p,o){return =
n[parseInt(o)-1]});l=3Dl.replace(/rgb\([^\)]+\)/g,function(o){return =
i.toHex(o)});if(j.url_converter){l=3Dl.replace(/url\([\'\"]?([^\)\'\"]+)[=
\'\"]?\)/g,function(o,p){return"url("+j.url_converter.call(j.url_converte=
r_scope||i,i.decode(p),"style",null)+")"})}k[c.trim(m[0]).toLowerCase()]=3D=
l}});f("border","","border");f("border","-width","border-width");f("borde=
r","-color","border-color");f("border","-style","border-style");f("paddin=
g","","padding");f("margin","","margin");g("border","border-width","borde=
r-style","border-color");if(a){if(k.border=3D=3D"medium =
none"){k.border=3D""}}return k},serializeStyle:function(g){var =
f=3D"";e(g,function(i,h){if(h&&i){if(c.isGecko&&h.indexOf("-moz-")=3D=3D=3D=
0){return}switch(h){case"color":case"background-color":i=3Di.toLowerCase(=
);break}f+=3D(f?" ":"")+h+": "+i+";"}});return =
f},loadCSS:function(f){var =
h=3Dthis,i=3Dh.doc,g;if(!f){f=3D""}g=3Dh.select("head")[0];e(f.split(",")=
,function(j){var =
k;if(h.files[j]){return}h.files[j]=3Dtrue;k=3Dh.create("link",{rel:"style=
sheet",href:c._addVer(j)});if(a&&i.documentMode){k.onload=3Dfunction(){i.=
recalc();k.onload=3Dnull}}g.appendChild(k)})},addClass:function(f,g){retu=
rn this.run(f,function(h){var i;if(!g){return =
0}if(this.hasClass(h,g)){return =
h.className}i=3Dthis.removeClass(h,g);return h.className=3D(i!=3D""?(i+" =
"):"")+g})},removeClass:function(h,i){var f=3Dthis,g;return =
f.run(h,function(k){var j;if(f.hasClass(k,i)){if(!g){g=3Dnew =
RegExp("(^|\\s+)"+i+"(\\s+|$)","g")}j=3Dk.className.replace(g," =
");return k.className=3Dc.trim(j!=3D" "?j:"")}return =
k.className})},hasClass:function(g,f){g=3Dthis.get(g);if(!g||!f){return =
false}return(" "+g.className+" ").indexOf(" "+f+" =
")!=3D=3D-1},show:function(f){return =
this.setStyle(f,"display","block")},hide:function(f){return =
this.setStyle(f,"display","none")},isHidden:function(f){f=3Dthis.get(f);r=
eturn =
!f||f.style.display=3D=3D"none"||this.getStyle(f,"display")=3D=3D"none"},=
uniqueId:function(f){return(!f?"mce_":f)+(this.counter++)},setHTML:functi=
on(i,g){var f=3Dthis;return this.run(i,function(m){var =
h,k,j,q,l,h;g=3Df.processHTML(g);if(a){function =
o(){try{m.innerHTML=3D"<br =
/>"+g;m.removeChild(m.firstChild)}catch(n){while(m.firstChild){m.firstChi=
ld.removeNode()}h=3Df.create("div");h.innerHTML=3D"<br =
/>"+g;e(h.childNodes,function(r,p){if(p){m.appendChild(r)}})}}if(f.settin=
gs.fix_ie_paragraphs){g=3Dg.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>=
/gi,'<p$1 =
mce_keep=3D"true">&nbsp;</p>')}o();if(f.settings.fix_ie_paragraphs){j=3Dm=
.getElementsByTagName("p");for(k=3Dj.length-1,h=3D0;k>=3D0;k--){q=3Dj[k];=
if(!q.hasChildNodes()){if(!q.mce_keep){h=3D1;break}q.removeAttribute("mce=
_keep")}}}if(h){g=3Dg.replace(/<p ([^>]+)>|<p>/g,'<div $1 =
mce_tmp=3D"1">');g=3Dg.replace(/<\/p>/g,"</div>");o();if(f.settings.fix_i=
e_paragraphs){j=3Dm.getElementsByTagName("DIV");for(k=3Dj.length-1;k>=3D0=
;k--){q=3Dj[k];if(q.mce_tmp){l=3Df.doc.createElement("p");q.cloneNode(fal=
se).outerHTML.replace(/([a-z0-9\-_]+)=3D/gi,function(p,n){var =
r;if(n!=3D=3D"mce_tmp"){r=3Dq.getAttribute(n);if(!r&&n=3D=3D=3D"class"){r=
=3Dq.className}l.setAttribute(n,r)}});for(h=3D0;h<q.childNodes.length;h++=
){l.appendChild(q.childNodes[h].cloneNode(true))}q.swapNode(l)}}}}}else{m=
.innerHTML=3Dg}return g})},processHTML:function(j){var =
g=3Dthis,i=3Dg.settings;if(!i.process_html){return =
j}if(c.isGecko){j=3Dj.replace(/<(\/?)strong>|<strong( =
[^>]+)>/gi,"<$1b$2>");j=3Dj.replace(/<(\/?)em>|<em( =
[^>]+)>/gi,"<$1i$2>")}else{if(a){j=3Dj.replace(/&apos;/g,"&#39;");j=3Dj.r=
eplace(/\s+(disabled|checked|readonly|selected)\s*=3D\s*[\"\']?(false|0)[=
\"\']?/gi,"")}}j=3Dj.replace(/<a( =
)([^>]+)\/>|<a\/>/gi,"<a$1$2></a>");if(i.keep_values){if(/<script|style/.=
test(j)){function =
f(h){h=3Dh.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n");h=3Dh.replace(/^[\r\n=
]*|[\r\n]*$/g,"");h=3Dh.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--=
|<!\[CDATA\[)[\r\n]*/g,"");h=3Dh.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\=
]>|-->|\]\]-->)\s*$/g,"");return =
h}j=3Dj.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g,function(h,l,k){i=
f(!l){l=3D' =
type=3D"text/javascript"'}l=3Dl.replace(/(type|language)=3D\"?/,"$&mce-")=
;l=3Dl.replace(/src=3D\"([^\"]+)\"?/,function(m,n){if(i.url_converter){n=3D=
g.encode(i.url_converter.call(i.url_converter_scope||g,g.decode(n),"src",=
"script"))}return'mce_src=3D"'+n+'"'});if(c.trim(k)){k=3D"<!--\n"+f(k)+"\=
n// =
-->"}return"<mce:script"+l+">"+k+"</mce:script>"});j=3Dj.replace(/<style(=
[^>]+|)>([\s\S]*?)<\/style>/g,function(h,l,k){if(k){k=3D"<!--\n"+f(k)+"\n=
-->"}return"<mce:style"+l+">"+k+"</mce:style><style "+l+' =
mce_bogus=3D"1">'+k+"</style>"})}j=3Dj.replace(/<!\[CDATA\[([\s\S]+)\]\]>=
/g,"<!--[CDATA[$1]]-->");j=3Dj.replace(/<([\w:]+) =
[^>]*(src|href|style|shape|coords)[^>]*>/gi,function(h,l){function =
k(o,n,q){var p=3Dq;if(h.indexOf("mce_"+n)!=3D-1){return =
o}if(n=3D=3D"style"){if(g._isRes(q)){return =
o}if(i.hex_colors){p=3Dp.replace(/rgb\([^\)]+\)/g,function(m){return =
g.toHex(m)})}if(i.url_converter){p=3Dp.replace(/url\([\'\"]?([^\)\'\"]+)\=
)/g,function(m,r){return"url("+g.encode(i.url_converter.call(i.url_conver=
ter_scope||g,g.decode(r),n,l))+")"})}}else{if(n!=3D"coords"&&n!=3D"shape"=
){if(i.url_converter){p=3Dg.encode(i.url_converter.call(i.url_converter_s=
cope||g,g.decode(q),n,l))}}}return" "+n+'=3D"'+q+'" =
mce_'+n+'=3D"'+p+'"'}h=3Dh.replace(/ =
(src|href|style|coords|shape)=3D[\"]([^\"]+)[\"]/gi,k);h=3Dh.replace(/ =
(src|href|style|coords|shape)=3D[\']([^\']+)[\']/gi,k);return =
h.replace(/ (src|href|style|coords|shape)=3D([^\s\"\'>]+)/gi,k)})}return =
j},getOuterHTML:function(f){var g;f=3Dthis.get(f);if(!f){return =
null}if(f.outerHTML!=3D=3Dundefined){return =
f.outerHTML}g=3D(f.ownerDocument||this.doc).createElement("body");g.appen=
dChild(f.cloneNode(true));return =
g.innerHTML},setOuterHTML:function(i,g,j){var f=3Dthis;return =
this.run(i,function(h){var =
l,k;h=3Df.get(h);j=3Dj||h.ownerDocument||f.doc;if(a&&h.nodeType=3D=3D1){h=
.outerHTML=3Dg}else{k=3Dj.createElement("body");k.innerHTML=3Dg;l=3Dk.las=
tChild;while(l){f.insertAfter(l.cloneNode(true),h);l=3Dl.previousSibling}=
f.remove(h)}})},decode:function(g){var =
h,i,f;if(/&[^;]+;/.test(g)){h=3Dthis.doc.createElement("div");h.innerHTML=
=3Dg;i=3Dh.firstChild;f=3D"";if(i){do{f+=3Di.nodeValue}while(i.nextSiblin=
g)}return f||g}return g},encode:function(f){return =
f?(""+f).replace(/[<>&\"]/g,function(h,g){switch(h){case"&":return"&amp;"=
;case'"':return"&quot;";case"<":return"&lt;";case">":return"&gt;"}return =
h}):f},insertAfter:function(h,g){var f=3Dthis;g=3Df.get(g);return =
this.run(h,function(k){var =
j,i;j=3Dg.parentNode;i=3Dg.nextSibling;if(i){j.insertBefore(k,i)}else{j.a=
ppendChild(k)}return =
k})},isBlock:function(f){if(f.nodeType&&f.nodeType!=3D=3D1){return =
false}f=3Df.nodeName||f;return/^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|L=
I|OL|UL|TR|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NO=
FRAMES|MENU|ISINDEX|SAMP)$/.test(f)},replace:function(i,h,f){var =
g=3Dthis;if(b(h,"array")){i=3Di.cloneNode(true)}return =
g.run(h,function(j){if(f){e(j.childNodes,function(k){i.appendChild(k.clon=
eNode(true))})}if(g.fixPsuedoLeaks&&j.nodeType=3D=3D=3D1){j.parentNode.in=
sertBefore(i,j);g.remove(j);return i}return =
j.parentNode.replaceChild(i,j)})},findCommonAncestor:function(h,f){var =
i=3Dh,g;while(i){g=3Df;while(g&&i!=3Dg){g=3Dg.parentNode}if(i=3D=3Dg){bre=
ak}i=3Di.parentNode}if(!i&&h.ownerDocument){return =
h.ownerDocument.documentElement}return i},toHex:function(f){var =
h=3D/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*=
$/i.exec(f);function g(i){i=3DparseInt(i).toString(16);return =
i.length>1?i:"0"+i}if(h){f=3D"#"+g(h[1])+g(h[2])+g(h[3]);return f}return =
f},getClasses:function(){var =
l=3Dthis,g=3D[],k,m=3D{},n=3Dl.settings.class_filter,j;if(l.classes){retu=
rn l.classes}function =
o(f){e(f.imports,function(i){o(i)});e(f.cssRules||f.rules,function(i){swi=
tch(i.type||1){case =
1:if(i.selectorText){e(i.selectorText.split(","),function(p){p=3Dp.replac=
e(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(p)||!/\.[\w\-]+$/.test(p)){retur=
n}j=3Dp;p=3Dp.replace(/.*\.([a-z0-9_\-]+).*/i,"$1");if(n&&!(p=3Dn(p,j))){=
return}if(!m[p]){g.push({"class":p});m[p]=3D1}})}break;case =
3:o(i.styleSheet);break}})}try{e(l.doc.styleSheets,o)}catch(h){}if(g.leng=
th>0){l.classes=3Dg}return g},run:function(j,i,h){var =
g=3Dthis,k;if(g.doc&&typeof(j)=3D=3D=3D"string"){j=3Dg.get(j)}if(!j){retu=
rn =
false}h=3Dh||this;if(!j.nodeType&&(j.length||j.length=3D=3D=3D0)){k=3D[];=
e(j,function(l,f){if(l){if(typeof(l)=3D=3D"string"){l=3Dg.doc.getElementB=
yId(l)}k.push(i.call(h,l,f))}});return k}return =
i.call(h,j)},getAttribs:function(g){var =
f;g=3Dthis.get(g);if(!g){return[]}if(a){f=3D[];if(g.nodeName=3D=3D"OBJECT=
"){return =
g.attributes}g.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=3D/gi=
,function(i,h){f.push({specified:1,nodeName:h})});return f}return =
g.attributes},destroy:function(g){var =
f=3Dthis;if(f.events){f.events.destroy()}f.win=3Df.doc=3Df.root=3Df.event=
s=3Dnull;if(!g){c.removeUnload(f.destroy)}},createRng:function(){var =
f=3Dthis.doc;return f.createRange?f.createRange():new =
c.dom.Range(this)},split:function(l,k,o){var =
p=3Dthis,f=3Dp.createRng(),m,j,n;function =
g(r,q){r=3Dr[q];if(r&&r[q]&&r[q].nodeType=3D=3D1&&i(r[q])){p.remove(r[q])=
}}function =
i(q){q=3Dp.getOuterHTML(q);q=3Dq.replace(/<(img|hr|table)/gi,"-");q=3Dq.r=
eplace(/<[^>]+>/g,"");return q.replace(/[ =
\t\r\n]+|&nbsp;|&#160;/g,"")=3D=3D""}function h(r){var =
q=3D0;while(r.previousSibling){q++;r=3Dr.previousSibling}return =
q}if(l&&k){f.setStart(l.parentNode,h(l));f.setEnd(k.parentNode,h(k));m=3D=
f.extractContents();f=3Dp.createRng();f.setStart(k.parentNode,h(k)+1);f.s=
etEnd(l.parentNode,h(l)+1);j=3Df.extractContents();n=3Dl.parentNode;g(m,"=
lastChild");if(!i(m)){n.insertBefore(m,l)}if(o){n.replaceChild(o,k)}else{=
n.insertBefore(k,l)}g(j,"firstChild");if(!i(j)){n.insertBefore(j,l)}p.rem=
ove(l);return o||k}},bind:function(j,f,i,h){var =
g=3Dthis;if(!g.events){g.events=3Dnew c.dom.EventUtils()}return =
g.events.add(j,f,i,h||this)},unbind:function(i,f,h){var =
g=3Dthis;if(!g.events){g.events=3Dnew c.dom.EventUtils()}return =
g.events.remove(i,f,h)},_isRes:function(f){return/^(top|left|bottom|right=
|width|height)/i.test(f)||/;\s*(top|left|bottom|right|width|height)/i.tes=
t(f)}});c.DOM=3Dnew =
c.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(f){var =
h=3D0,c=3D1,e=3D2,d=3Dtinymce.extend;function g(m,k){var =
j,l;if(m.parentNode!=3Dk){return =
-1}for(l=3Dk.firstChild,j=3D0;l!=3Dm;l=3Dl.nextSibling){j++}return =
j}function b(k){var =
j=3D0;while(k.previousSibling){j++;k=3Dk.previousSibling}return =
j}function i(j,k){var l;if(j.nodeType=3D=3D3){return j}if(k<0){return =
j}l=3Dj.firstChild;while(l!=3Dnull&&k>0){--k;l=3Dl.nextSibling}if(l!=3Dnu=
ll){return l}return j}function a(k){var =
j=3Dk.doc;d(this,{dom:k,startContainer:j,startOffset:0,endContainer:j,end=
Offset:0,collapsed:true,commonAncestorContainer:j,START_TO_START:0,START_=
TO_END:1,END_TO_END:2,END_TO_START:3})}d(a.prototype,{setStart:function(k=
,j){this._setEndPoint(true,k,j)},setEnd:function(k,j){this._setEndPoint(f=
alse,k,j)},setStartBefore:function(j){this.setStart(j.parentNode,b(j))},s=
etStartAfter:function(j){this.setStart(j.parentNode,b(j)+1)},setEndBefore=
:function(j){this.setEnd(j.parentNode,b(j))},setEndAfter:function(j){this=
.setEnd(j.parentNode,b(j)+1)},collapse:function(k){var =
j=3Dthis;if(k){j.endContainer=3Dj.startContainer;j.endOffset=3Dj.startOff=
set}else{j.startContainer=3Dj.endContainer;j.startOffset=3Dj.endOffset}j.=
collapsed=3Dtrue},selectNode:function(j){this.setStartBefore(j);this.setE=
ndAfter(j)},selectNodeContents:function(j){this.setStart(j,0);this.setEnd=
(j,j.nodeType=3D=3D=3D1?j.childNodes.length:j.nodeValue.length)},compareB=
oundaryPoints:function(m,n){var =
l=3Dthis,p=3Dl.startContainer,o=3Dl.startOffset,k=3Dl.endContainer,j=3Dl.=
endOffset;if(m=3D=3D=3D0){return =
l._compareBoundaryPoints(p,o,p,o)}if(m=3D=3D=3D1){return =
l._compareBoundaryPoints(p,o,k,j)}if(m=3D=3D=3D2){return =
l._compareBoundaryPoints(k,j,k,j)}if(m=3D=3D=3D3){return =
l._compareBoundaryPoints(k,j,p,o)}},deleteContents:function(){this._trave=
rse(e)},extractContents:function(){return =
this._traverse(h)},cloneContents:function(){return =
this._traverse(c)},insertNode:function(m){var =
j=3Dthis,l,k;if(m.nodeType=3D=3D=3D3||m.nodeType=3D=3D=3D4){l=3Dj.startCo=
ntainer.splitText(j.startOffset);j.startContainer.parentNode.insertBefore=
(m,l)}else{if(j.startContainer.childNodes.length>0){k=3Dj.startContainer.=
childNodes[j.startOffset]}j.startContainer.insertBefore(m,k)}},surroundCo=
ntents:function(l){var =
j=3Dthis,k=3Dj.extractContents();j.insertNode(l);l.appendChild(k);j.selec=
tNode(l)},cloneRange:function(){var j=3Dthis;return d(new =
a(j.dom),{startContainer:j.startContainer,startOffset:j.startOffset,endCo=
ntainer:j.endContainer,endOffset:j.endOffset,collapsed:j.collapsed,common=
AncestorContainer:j.commonAncestorContainer})},_isCollapsed:function(){re=
turn(this.startContainer=3D=3Dthis.endContainer&&this.startOffset=3D=3Dth=
is.endOffset)},_compareBoundaryPoints:function(m,p,k,o){var =
q,l,j,r,t,s;if(m=3D=3Dk){if(p=3D=3Do){return 0}else{if(p<o){return =
-1}else{return =
1}}}q=3Dk;while(q&&q.parentNode!=3Dm){q=3Dq.parentNode}if(q){l=3D0;j=3Dm.=
firstChild;while(j!=3Dq&&l<p){l++;j=3Dj.nextSibling}if(p<=3Dl){return =
-1}else{return =
1}}q=3Dm;while(q&&q.parentNode!=3Dk){q=3Dq.parentNode}if(q){l=3D0;j=3Dk.f=
irstChild;while(j!=3Dq&&l<o){l++;j=3Dj.nextSibling}if(l<o){return =
-1}else{return =
1}}r=3Dthis.dom.findCommonAncestor(m,k);t=3Dm;while(t&&t.parentNode!=3Dr)=
{t=3Dt.parentNode}if(!t){t=3Dr}s=3Dk;while(s&&s.parentNode!=3Dr){s=3Ds.pa=
rentNode}if(!s){s=3Dr}if(t=3D=3Ds){return =
0}j=3Dr.firstChild;while(j){if(j=3D=3Dt){return -1}if(j=3D=3Ds){return =
1}j=3Dj.nextSibling}},_setEndPoint:function(k,q,p){var =
l=3Dthis,j,m;if(k){l.startContainer=3Dq;l.startOffset=3Dp}else{l.endConta=
iner=3Dq;l.endOffset=3Dp}j=3Dl.endContainer;while(j.parentNode){j=3Dj.par=
entNode}m=3Dl.startContainer;while(m.parentNode){m=3Dm.parentNode}if(m!=3D=
j){l.collapse(k)}else{if(l._compareBoundaryPoints(l.startContainer,l.star=
tOffset,l.endContainer,l.endOffset)>0){l.collapse(k)}}l.collapsed=3Dl._is=
Collapsed();l.commonAncestorContainer=3Dl.dom.findCommonAncestor(l.startC=
ontainer,l.endContainer)},_traverse:function(r){var =
s=3Dthis,q,m=3D0,v=3D0,k,o,l,n,j,u;if(s.startContainer=3D=3Ds.endContaine=
r){return =
s._traverseSameContainer(r)}for(q=3Ds.endContainer,k=3Dq.parentNode;k!=3D=
null;q=3Dk,k=3Dk.parentNode){if(k=3D=3Ds.startContainer){return =
s._traverseCommonStartContainer(q,r)}++m}for(q=3Ds.startContainer,k=3Dq.p=
arentNode;k!=3Dnull;q=3Dk,k=3Dk.parentNode){if(k=3D=3Ds.endContainer){ret=
urn =
s._traverseCommonEndContainer(q,r)}++v}o=3Dv-m;l=3Ds.startContainer;while=
(o>0){l=3Dl.parentNode;o--}n=3Ds.endContainer;while(o<0){n=3Dn.parentNode=
;o++}for(j=3Dl.parentNode,u=3Dn.parentNode;j!=3Du;j=3Dj.parentNode,u=3Du.=
parentNode){l=3Dj;n=3Du}return =
s._traverseCommonAncestors(l,n,r)},_traverseSameContainer:function(o){var=
 =
r=3Dthis,q,u,j,k,l,p,m;if(o!=3De){q=3Dr.dom.doc.createDocumentFragment()}=
if(r.startOffset=3D=3Dr.endOffset){return =
q}if(r.startContainer.nodeType=3D=3D3){u=3Dr.startContainer.nodeValue;j=3D=
u.substring(r.startOffset,r.endOffset);if(o!=3Dc){r.startContainer.delete=
Data(r.startOffset,r.endOffset-r.startOffset);r.collapse(true)}if(o=3D=3D=
e){return null}q.appendChild(r.dom.doc.createTextNode(j));return =
q}k=3Di(r.startContainer,r.startOffset);l=3Dr.endOffset-r.startOffset;whi=
le(l>0){p=3Dk.nextSibling;m=3Dr._traverseFullySelected(k,o);if(q){q.appen=
dChild(m)}--l;k=3Dp}if(o!=3Dc){r.collapse(true)}return =
q},_traverseCommonStartContainer:function(j,p){var =
s=3Dthis,r,k,l,m,q,o;if(p!=3De){r=3Ds.dom.doc.createDocumentFragment()}k=3D=
s._traverseRightBoundary(j,p);if(r){r.appendChild(k)}l=3Dg(j,s.startConta=
iner);m=3Dl-s.startOffset;if(m<=3D0){if(p!=3Dc){s.setEndBefore(j);s.colla=
pse(false)}return =
r}k=3Dj.previousSibling;while(m>0){q=3Dk.previousSibling;o=3Ds._traverseF=
ullySelected(k,p);if(r){r.insertBefore(o,r.firstChild)}--m;k=3Dq}if(p!=3D=
c){s.setEndBefore(j);s.collapse(false)}return =
r},_traverseCommonEndContainer:function(m,p){var =
s=3Dthis,r,o,j,k,q,l;if(p!=3De){r=3Ds.dom.doc.createDocumentFragment()}j=3D=
s._traverseLeftBoundary(m,p);if(r){r.appendChild(j)}o=3Dg(m,s.endContaine=
r);++o;k=3Ds.endOffset-o;j=3Dm.nextSibling;while(k>0){q=3Dj.nextSibling;l=
=3Ds._traverseFullySelected(j,p);if(r){r.appendChild(l)}--k;j=3Dq}if(p!=3D=
c){s.setStartAfter(m);s.collapse(true)}return =
r},_traverseCommonAncestors:function(p,j,s){var =
w=3Dthis,l,v,o,q,r,k,u,m;if(s!=3De){v=3Dw.dom.doc.createDocumentFragment(=
)}l=3Dw._traverseLeftBoundary(p,s);if(v){v.appendChild(l)}o=3Dp.parentNod=
e;q=3Dg(p,o);r=3Dg(j,o);++q;k=3Dr-q;u=3Dp.nextSibling;while(k>0){m=3Du.ne=
xtSibling;l=3Dw._traverseFullySelected(u,s);if(v){v.appendChild(l)}u=3Dm;=
--k}l=3Dw._traverseRightBoundary(j,s);if(v){v.appendChild(l)}if(s!=3Dc){w=
.setStartAfter(p);w.collapse(true)}return =
v},_traverseRightBoundary:function(p,q){var =
s=3Dthis,l=3Di(s.endContainer,s.endOffset-1),r,o,n,j,k;var =
m=3Dl!=3Ds.endContainer;if(l=3D=3Dp){return =
s._traverseNode(l,m,false,q)}r=3Dl.parentNode;o=3Ds._traverseNode(r,false=
,false,q);while(r!=3Dnull){while(l!=3Dnull){n=3Dl.previousSibling;j=3Ds._=
traverseNode(l,m,false,q);if(q!=3De){o.insertBefore(j,o.firstChild)}m=3Dt=
rue;l=3Dn}if(r=3D=3Dp){return =
o}l=3Dr.previousSibling;r=3Dr.parentNode;k=3Ds._traverseNode(r,false,fals=
e,q);if(q!=3De){k.appendChild(o)}o=3Dk}return =
null},_traverseLeftBoundary:function(p,q){var =
s=3Dthis,m=3Di(s.startContainer,s.startOffset);var =
n=3Dm!=3Ds.startContainer,r,o,l,j,k;if(m=3D=3Dp){return =
s._traverseNode(m,n,true,q)}r=3Dm.parentNode;o=3Ds._traverseNode(r,false,=
true,q);while(r!=3Dnull){while(m!=3Dnull){l=3Dm.nextSibling;j=3Ds._traver=
seNode(m,n,true,q);if(q!=3De){o.appendChild(j)}n=3Dtrue;m=3Dl}if(r=3D=3Dp=
){return =
o}m=3Dr.nextSibling;r=3Dr.parentNode;k=3Ds._traverseNode(r,false,true,q);=
if(q!=3De){k.appendChild(o)}o=3Dk}return =
null},_traverseNode:function(j,o,r,s){var =
u=3Dthis,m,l,p,k,q;if(o){return =
u._traverseFullySelected(j,s)}if(j.nodeType=3D=3D3){m=3Dj.nodeValue;if(r)=
{k=3Du.startOffset;l=3Dm.substring(k);p=3Dm.substring(0,k)}else{k=3Du.end=
Offset;l=3Dm.substring(0,k);p=3Dm.substring(k)}if(s!=3Dc){j.nodeValue=3Dp=
}if(s=3D=3De){return null}q=3Dj.cloneNode(false);q.nodeValue=3Dl;return =
q}if(s=3D=3De){return null}return =
j.cloneNode(false)},_traverseFullySelected:function(l,k){var =
j=3Dthis;if(k!=3De){return =
k=3D=3Dc?l.cloneNode(true):l}l.parentNode.removeChild(l);return =
null}});f.Range=3Da})(tinymce.dom);(function(){function a(e){var =
d=3Dthis,h=3D"\uFEFF",b,g;function =
c(j,i){if(j&&i){if(j.item&&i.item&&j.item(0)=3D=3D=3Di.item(0)){return =
1}if(j.isEqual&&i.isEqual&&i.isEqual(j)){return 1}}return 0}function =
f(){var m=3De.dom,j=3De.getRng(),s=3Dm.createRng(),p,k,n,q,o,l;function =
i(v){var =
t=3Dv.parentNode.childNodes,u;for(u=3Dt.length-1;u>=3D0;u--){if(t[u]=3D=3D=
v){return u}}return -1}function r(v){var =
t=3Dj.duplicate(),B,y,u,w,x=3D0,z=3D0,A,C;t.collapse(v);B=3Dt.parentEleme=
nt();t.pasteHTML(h);u=3DB.childNodes;for(y=3D0;y<u.length;y++){w=3Du[y];i=
f(y>0&&(w.nodeType!=3D=3D3||u[y-1].nodeType!=3D=3D3)){z++}if(w.nodeType=3D=
=3D=3D3){A=3Dw.nodeValue.indexOf(h);if(A!=3D=3D-1){x+=3DA;break}x+=3Dw.no=
deValue.length}else{x=3D0}}t.moveStart("character",-1);t.text=3D"";return=
{index:z,offset:x,parent:B}}n=3Dj.item?j.item(0):j.parentElement();if(n.o=
wnerDocument!=3Dm.doc){return =
s}if(j.item||!n.hasChildNodes()){s.setStart(n.parentNode,i(n));s.setEnd(s=
.startContainer,s.startOffset+1);return =
s}l=3De.isCollapsed();p=3Dr(true);k=3Dr(false);p.parent.normalize();k.par=
ent.normalize();q=3Dp.parent.childNodes[Math.min(p.index,p.parent.childNo=
des.length-1)];if(q.nodeType!=3D3){s.setStart(p.parent,p.index)}else{s.se=
tStart(p.parent.childNodes[p.index],p.offset)}o=3Dk.parent.childNodes[Mat=
h.min(k.index,k.parent.childNodes.length-1)];if(o.nodeType!=3D3){if(!l){k=
.index++}s.setEnd(k.parent,k.index)}else{s.setEnd(k.parent.childNodes[k.i=
ndex],k.offset)}if(!l){q=3Ds.startContainer;if(q.nodeType=3D=3D1){s.setSt=
art(q,Math.min(s.startOffset,q.childNodes.length))}o=3Ds.endContainer;if(=
o.nodeType=3D=3D1){s.setEnd(o,Math.min(s.endOffset,o.childNodes.length))}=
}d.addRange(s);return s}this.addRange=3Dfunction(j){var =
o,m=3De.dom.doc.body,p,k,q,l,n,i;q=3Dj.startContainer;l=3Dj.startOffset;n=
=3Dj.endContainer;i=3Dj.endOffset;o=3Dm.createTextRange();q=3Dq.nodeType=3D=
=3D1?q.childNodes[Math.min(l,q.childNodes.length-1)]:q;n=3Dn.nodeType=3D=3D=
1?n.childNodes[Math.min(l=3D=3Di?i:i-1,n.childNodes.length-1)]:n;if(q=3D=3D=
n&&q.nodeType=3D=3D1){if(/^(IMG|TABLE)$/.test(q.nodeName)&&l!=3Di){o=3Dm.=
createControlRange();o.addElement(q)}else{o=3Dm.createTextRange();if(!q.h=
asChildNodes()&&q.canHaveHTML){q.innerHTML=3Dh}o.moveToElementText(q);if(=
q.innerHTML=3D=3Dh){o.collapse(true);q.removeChild(q.firstChild)}}if(l=3D=
=3Di){o.collapse(i<=3Dj.endContainer.childNodes.length-1)}o.select();retu=
rn}function r(t,v){var u,s,w;if(t.nodeType!=3D3){return =
-1}u=3Dt.nodeValue;s=3Dm.createTextRange();t.nodeValue=3Du.substring(0,v)=
+h+u.substring(v);s.moveToElementText(t.parentNode);s.findText(h);w=3DMat=
h.abs(s.moveStart("character",-1048575));t.nodeValue=3Du;return =
w}if(j.collapsed){pos=3Dr(q,l);o=3Dm.createTextRange();o.move("character"=
,pos);o.select();return}else{if(q=3D=3Dn&&q.nodeType=3D=3D3){p=3Dr(q,l);o=
.move("character",p);o.moveEnd("character",i-l);o.select();return}p=3Dr(q=
,l);k=3Dr(n,i);o=3Dm.createTextRange();if(p=3D=3D-1){o.moveToElementText(=
q);p=3D0}else{o.move("character",p)}tmpRng=3Dm.createTextRange();if(k=3D=3D=
-1){tmpRng.moveToElementText(n)}else{tmpRng.move("character",k)}o.setEndP=
oint("EndToEnd",tmpRng);o.select();return}};this.getRangeAt=3Dfunction(){=
if(!b||!c(g,e.getRng())){b=3Df();g=3De.getRng()}return =
b};this.destroy=3Dfunction(){g=3Db=3Dnull}}tinymce.dom.TridentSelection=3D=
a})();(function(){var =
p=3D/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]=
'"]+)+\]|\\.|[^ =
>+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,i=3D0,d=3DObject.prototype.toString,n=3D=
false;var b=3Dfunction(D,t,A,v){A=3DA||[];var =
e=3Dt=3Dt||document;if(t.nodeType!=3D=3D1&&t.nodeType!=3D=3D9){return[]}i=
f(!D||typeof D!=3D=3D"string"){return A}var =
B=3D[],C,y,G,F,z,s,r=3Dtrue,w=3Do(t);p.lastIndex=3D0;while((C=3Dp.exec(D)=
)!=3D=3Dnull){B.push(C[1]);if(C[2]){s=3DRegExp.rightContext;break}}if(B.l=
ength>1&&j.exec(D)){if(B.length=3D=3D=3D2&&f.relative[B[0]]){y=3Dg(B[0]+B=
[1],t)}else{y=3Df.relative[B[0]]?[t]:b(B.shift(),t);while(B.length){D=3DB=
.shift();if(f.relative[D]){D+=3DB.shift()}y=3Dg(D,y)}}}else{if(!v&&B.leng=
th>1&&t.nodeType=3D=3D=3D9&&!w&&f.match.ID.test(B[0])&&!f.match.ID.test(B=
[B.length-1])){var =
H=3Db.find(B.shift(),t,w);t=3DH.expr?b.filter(H.expr,H.set)[0]:H.set[0]}i=
f(t){var =
H=3Dv?{expr:B.pop(),set:a(v)}:b.find(B.pop(),B.length=3D=3D=3D1&&(B[0]=3D=
=3D=3D"~"||B[0]=3D=3D=3D"+")&&t.parentNode?t.parentNode:t,w);y=3DH.expr?b=
.filter(H.expr,H.set):H.set;if(B.length>0){G=3Da(y)}else{r=3Dfalse}while(=
B.length){var =
u=3DB.pop(),x=3Du;if(!f.relative[u]){u=3D""}else{x=3DB.pop()}if(x=3D=3Dnu=
ll){x=3Dt}f.relative[u](G,x,w)}}else{G=3DB=3D[]}}if(!G){G=3Dy}if(!G){thro=
w"Syntax error, unrecognized expression: =
"+(u||D)}if(d.call(G)=3D=3D=3D"[object =
Array]"){if(!r){A.push.apply(A,G)}else{if(t&&t.nodeType=3D=3D=3D1){for(va=
r =
E=3D0;G[E]!=3Dnull;E++){if(G[E]&&(G[E]=3D=3D=3Dtrue||G[E].nodeType=3D=3D=3D=
1&&h(t,G[E]))){A.push(y[E])}}}else{for(var =
E=3D0;G[E]!=3Dnull;E++){if(G[E]&&G[E].nodeType=3D=3D=3D1){A.push(y[E])}}}=
}}else{a(G,A)}if(s){b(s,e,A,v);b.uniqueSort(A)}return =
A};b.uniqueSort=3Dfunction(r){if(c){n=3Dfalse;r.sort(c);if(n){for(var =
e=3D1;e<r.length;e++){if(r[e]=3D=3D=3Dr[e-1]){r.splice(e--,1)}}}}};b.matc=
hes=3Dfunction(e,r){return =
b(e,null,null,r)};b.find=3Dfunction(x,e,y){var =
w,u;if(!x){return[]}for(var t=3D0,s=3Df.order.length;t<s;t++){var =
v=3Df.order[t],u;if((u=3Df.match[v].exec(x))){var =
r=3DRegExp.leftContext;if(r.substr(r.length-1)!=3D=3D"\\"){u[1]=3D(u[1]||=
"").replace(/\\/g,"");w=3Df.find[v](u,e,y);if(w!=3Dnull){x=3Dx.replace(f.=
match[v],"");break}}}}if(!w){w=3De.getElementsByTagName("*")}return{set:w=
,expr:x}};b.filter=3Dfunction(A,z,D,t){var =
s=3DA,F=3D[],x=3Dz,v,e,w=3Dz&&z[0]&&o(z[0]);while(A&&z.length){for(var y =
in f.filter){if((v=3Df.match[y].exec(A))!=3Dnull){var =
r=3Df.filter[y],E,C;e=3Dfalse;if(x=3D=3DF){F=3D[]}if(f.preFilter[y]){v=3D=
f.preFilter[y](v,x,D,F,t,w);if(!v){e=3DE=3Dtrue}else{if(v=3D=3D=3Dtrue){c=
ontinue}}}if(v){for(var =
u=3D0;(C=3Dx[u])!=3Dnull;u++){if(C){E=3Dr(C,v,u,x);var =
B=3Dt^!!E;if(D&&E!=3Dnull){if(B){e=3Dtrue}else{x[u]=3Dfalse}}else{if(B){F=
.push(C);e=3Dtrue}}}}}if(E!=3D=3Dundefined){if(!D){x=3DF}A=3DA.replace(f.=
match[y],"");if(!e){return[]}break}}}if(A=3D=3Ds){if(e=3D=3Dnull){throw"S=
yntax error, unrecognized expression: "+A}else{break}}s=3DA}return =
x};var =
f=3Db.selectors=3D{order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\u=
FFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=3D[=
'"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFF=
F_-]|\\.)+)\s*(?:(\S?=3D)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\u=
FFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+=
-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=3D[^-]=
|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^=
\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHan=
dle:{href:function(e){return =
e.getAttribute("href")}},relative:{"+":function(x,e,w){var u=3Dtypeof =
e=3D=3D=3D"string",y=3Du&&!/\W/.test(e),v=3Du&&!y;if(y&&!w){e=3De.toUpper=
Case()}for(var =
t=3D0,s=3Dx.length,r;t<s;t++){if((r=3Dx[t])){while((r=3Dr.previousSibling=
)&&r.nodeType!=3D=3D1){}x[t]=3Dv||r&&r.nodeName=3D=3D=3De?r||false:r=3D=3D=
=3De}}if(v){b.filter(e,x,true)}},">":function(w,r,x){var u=3Dtypeof =
r=3D=3D=3D"string";if(u&&!/\W/.test(r)){r=3Dx?r:r.toUpperCase();for(var =
s=3D0,e=3Dw.length;s<e;s++){var v=3Dw[s];if(v){var =
t=3Dv.parentNode;w[s]=3Dt.nodeName=3D=3D=3Dr?t:false}}}else{for(var =
s=3D0,e=3Dw.length;s<e;s++){var =
v=3Dw[s];if(v){w[s]=3Du?v.parentNode:v.parentNode=3D=3D=3Dr}}if(u){b.filt=
er(r,w,true)}}},"":function(t,r,v){var =
s=3Di++,e=3Dq;if(!r.match(/\W/)){var =
u=3Dr=3Dv?r:r.toUpperCase();e=3Dm}e("parentNode",r,s,t,u,v)},"~":function=
(t,r,v){var s=3Di++,e=3Dq;if(typeof =
r=3D=3D=3D"string"&&!r.match(/\W/)){var =
u=3Dr=3Dv?r:r.toUpperCase();e=3Dm}e("previousSibling",r,s,t,u,v)}},find:{=
ID:function(r,s,t){if(typeof s.getElementById!=3D=3D"undefined"&&!t){var =
e=3Ds.getElementById(r[1]);return =
e?[e]:[]}},NAME:function(s,v,w){if(typeof =
v.getElementsByName!=3D=3D"undefined"){var =
r=3D[],u=3Dv.getElementsByName(s[1]);for(var =
t=3D0,e=3Du.length;t<e;t++){if(u[t].getAttribute("name")=3D=3D=3Ds[1]){r.=
push(u[t])}}return r.length=3D=3D=3D0?null:r}},TAG:function(e,r){return =
r.getElementsByTagName(e[1])}},preFilter:{CLASS:function(t,r,s,e,w,x){t=3D=
" "+t[1].replace(/\\/g,"")+" ";if(x){return t}for(var =
u=3D0,v;(v=3Dr[u])!=3Dnull;u++){if(v){if(w^(v.className&&(" =
"+v.className+" =
").indexOf(t)>=3D0)){if(!s){e.push(v)}}else{if(s){r[u]=3Dfalse}}}}return =
false},ID:function(e){return =
e[1].replace(/\\/g,"")},TAG:function(r,e){for(var =
s=3D0;e[s]=3D=3D=3Dfalse;s++){}return =
e[s]&&o(e[s])?r[1]:r[1].toUpperCase()},CHILD:function(e){if(e[1]=3D=3D"nt=
h"){var =
r=3D/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]=3D=3D"even"&&"2n"||e[2]=3D=3D"od=
d"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=3D(r[1]+(r[2]||1))-0=
;e[3]=3Dr[3]-0}e[0]=3Di++;return e},ATTR:function(u,r,s,e,v,w){var =
t=3Du[1].replace(/\\/g,"");if(!w&&f.attrMap[t]){u[1]=3Df.attrMap[t]}if(u[=
2]=3D=3D=3D"~=3D"){u[4]=3D" "+u[4]+" "}return =
u},PSEUDO:function(u,r,s,e,v){if(u[1]=3D=3D=3D"not"){if(u[3].match(p).len=
gth>1||/^\w/.test(u[3])){u[3]=3Db(u[3],null,null,r)}else{var =
t=3Db.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return =
false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return =
true}}return u},POS:function(e){e.unshift(true);return =
e}},filters:{enabled:function(e){return =
e.disabled=3D=3D=3Dfalse&&e.type!=3D=3D"hidden"},disabled:function(e){ret=
urn e.disabled=3D=3D=3Dtrue},checked:function(e){return =
e.checked=3D=3D=3Dtrue},selected:function(e){e.parentNode.selectedIndex;r=
eturn e.selected=3D=3D=3Dtrue},parent:function(e){return =
!!e.firstChild},empty:function(e){return =
!e.firstChild},has:function(s,r,e){return =
!!b(e[3],s).length},header:function(e){return/h\d/i.test(e.nodeName)},tex=
t:function(e){return"text"=3D=3D=3De.type},radio:function(e){return"radio=
"=3D=3D=3De.type},checkbox:function(e){return"checkbox"=3D=3D=3De.type},f=
ile:function(e){return"file"=3D=3D=3De.type},password:function(e){return"=
password"=3D=3D=3De.type},submit:function(e){return"submit"=3D=3D=3De.typ=
e},image:function(e){return"image"=3D=3D=3De.type},reset:function(e){retu=
rn"reset"=3D=3D=3De.type},button:function(e){return"button"=3D=3D=3De.typ=
e||e.nodeName.toUpperCase()=3D=3D=3D"BUTTON"},input:function(e){return/in=
put|select|textarea|button/i.test(e.nodeName)}},setFilters:{first:functio=
n(r,e){return e=3D=3D=3D0},last:function(s,r,e,t){return =
r=3D=3D=3Dt.length-1},even:function(r,e){return =
e%2=3D=3D=3D0},odd:function(r,e){return =
e%2=3D=3D=3D1},lt:function(s,r,e){return =
r<e[3]-0},gt:function(s,r,e){return r>e[3]-0},nth:function(s,r,e){return =
e[3]-0=3D=3Dr},eq:function(s,r,e){return =
e[3]-0=3D=3Dr}},filter:{PSEUDO:function(w,s,t,x){var =
r=3Ds[1],u=3Df.filters[r];if(u){return =
u(w,t,s,x)}else{if(r=3D=3D=3D"contains"){return(w.textContent||w.innerTex=
t||"").indexOf(s[3])>=3D0}else{if(r=3D=3D=3D"not"){var v=3Ds[3];for(var =
t=3D0,e=3Dv.length;t<e;t++){if(v[t]=3D=3D=3Dw){return false}}return =
true}}}},CHILD:function(e,t){var =
w=3Dt[1],r=3De;switch(w){case"only":case"first":while(r=3Dr.previousSibli=
ng){if(r.nodeType=3D=3D=3D1){return false}}if(w=3D=3D"first"){return =
true}r=3De;case"last":while(r=3Dr.nextSibling){if(r.nodeType=3D=3D=3D1){r=
eturn false}}return true;case"nth":var =
s=3Dt[2],z=3Dt[3];if(s=3D=3D1&&z=3D=3D0){return true}var =
v=3Dt[0],y=3De.parentNode;if(y&&(y.sizcache!=3D=3Dv||!e.nodeIndex)){var =
u=3D0;for(r=3Dy.firstChild;r;r=3Dr.nextSibling){if(r.nodeType=3D=3D=3D1){=
r.nodeIndex=3D++u}}y.sizcache=3Dv}var =
x=3De.nodeIndex-z;if(s=3D=3D0){return =
x=3D=3D0}else{return(x%s=3D=3D0&&x/s>=3D0)}}},ID:function(r,e){return =
r.nodeType=3D=3D=3D1&&r.getAttribute("id")=3D=3D=3De},TAG:function(r,e){r=
eturn(e=3D=3D=3D"*"&&r.nodeType=3D=3D=3D1)||r.nodeName=3D=3D=3De},CLASS:f=
unction(r,e){return(" "+(r.className||r.getAttribute("class"))+" =
").indexOf(e)>-1},ATTR:function(v,t){var =
s=3Dt[1],e=3Df.attrHandle[s]?f.attrHandle[s](v):v[s]!=3Dnull?v[s]:v.getAt=
tribute(s),w=3De+"",u=3Dt[2],r=3Dt[4];return =
e=3D=3Dnull?u=3D=3D=3D"!=3D":u=3D=3D=3D"=3D"?w=3D=3D=3Dr:u=3D=3D=3D"*=3D"=
?w.indexOf(r)>=3D0:u=3D=3D=3D"~=3D"?(" "+w+" =
").indexOf(r)>=3D0:!r?w&&e!=3D=3Dfalse:u=3D=3D=3D"!=3D"?w!=3Dr:u=3D=3D=3D=
"^=3D"?w.indexOf(r)=3D=3D=3D0:u=3D=3D=3D"$=3D"?w.substr(w.length-r.length=
)=3D=3D=3Dr:u=3D=3D=3D"|=3D"?w=3D=3D=3Dr||w.substr(0,r.length+1)=3D=3D=3D=
r+"-":false},POS:function(u,r,s,v){var =
e=3Dr[2],t=3Df.setFilters[e];if(t){return t(u,s,r,v)}}}};var =
j=3Df.match.POS;for(var l in f.match){f.match[l]=3Dnew =
RegExp(f.match[l].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var =
a=3Dfunction(r,e){r=3DArray.prototype.slice.call(r);if(e){e.push.apply(e,=
r);return e}return =
r};try{Array.prototype.slice.call(document.documentElement.childNodes)}ca=
tch(k){a=3Dfunction(u,t){var r=3Dt||[];if(d.call(u)=3D=3D=3D"[object =
Array]"){Array.prototype.push.apply(r,u)}else{if(typeof =
u.length=3D=3D=3D"number"){for(var =
s=3D0,e=3Du.length;s<e;s++){r.push(u[s])}}else{for(var =
s=3D0;u[s];s++){r.push(u[s])}}}return r}}var =
c;if(document.documentElement.compareDocumentPosition){c=3Dfunction(r,e){=
var =
s=3Dr.compareDocumentPosition(e)&4?-1:r=3D=3D=3De?0:1;if(s=3D=3D=3D0){n=3D=
true}return s}}else{if("sourceIndex" in =
document.documentElement){c=3Dfunction(r,e){var =
s=3Dr.sourceIndex-e.sourceIndex;if(s=3D=3D=3D0){n=3Dtrue}return =
s}}else{if(document.createRange){c=3Dfunction(t,r){var =
s=3Dt.ownerDocument.createRange(),e=3Dr.ownerDocument.createRange();s.set=
Start(t,0);s.setEnd(t,0);e.setStart(r,0);e.setEnd(r,0);var =
u=3Ds.compareBoundaryPoints(Range.START_TO_END,e);if(u=3D=3D=3D0){n=3Dtru=
e}return u}}}}(function(){var =
r=3Ddocument.createElement("div"),s=3D"script"+(new =
Date).getTime();r.innerHTML=3D"<a name=3D'"+s+"'/>";var =
e=3Ddocument.documentElement;e.insertBefore(r,e.firstChild);if(!!document=
.getElementById(s)){f.find.ID=3Dfunction(u,v,w){if(typeof =
v.getElementById!=3D=3D"undefined"&&!w){var =
t=3Dv.getElementById(u[1]);return t?t.id=3D=3D=3Du[1]||typeof =
t.getAttributeNode!=3D=3D"undefined"&&t.getAttributeNode("id").nodeValue=3D=
=3D=3Du[1]?[t]:undefined:[]}};f.filter.ID=3Dfunction(v,t){var u=3Dtypeof =
v.getAttributeNode!=3D=3D"undefined"&&v.getAttributeNode("id");return =
v.nodeType=3D=3D=3D1&&u&&u.nodeValue=3D=3D=3Dt}}e.removeChild(r)})();(fun=
ction(){var =
e=3Ddocument.createElement("div");e.appendChild(document.createComment(""=
));if(e.getElementsByTagName("*").length>0){f.find.TAG=3Dfunction(r,v){va=
r u=3Dv.getElementsByTagName(r[1]);if(r[1]=3D=3D=3D"*"){var =
t=3D[];for(var =
s=3D0;u[s];s++){if(u[s].nodeType=3D=3D=3D1){t.push(u[s])}}u=3Dt}return =
u}}e.innerHTML=3D"<a href=3D'#'></a>";if(e.firstChild&&typeof =
e.firstChild.getAttribute!=3D=3D"undefined"&&e.firstChild.getAttribute("h=
ref")!=3D=3D"#"){f.attrHandle.href=3Dfunction(r){return =
r.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){=
var e=3Db,s=3Ddocument.createElement("div");s.innerHTML=3D"<p =
class=3D'TEST'></p>";if(s.querySelectorAll&&s.querySelectorAll(".TEST").l=
ength=3D=3D=3D0){return}b=3Dfunction(w,v,t,u){v=3Dv||document;if(!u&&v.no=
deType=3D=3D=3D9&&!o(v)){try{return =
a(v.querySelectorAll(w),t)}catch(x){}}return e(w,v,t,u)};for(var r in =
e){b[r]=3De[r]}})()}if(document.getElementsByClassName&&document.document=
Element.getElementsByClassName){(function(){var =
e=3Ddocument.createElement("div");e.innerHTML=3D"<div class=3D'test =
e'></div><div =
class=3D'test'></div>";if(e.getElementsByClassName("e").length=3D=3D=3D0)=
{return}e.lastChild.className=3D"e";if(e.getElementsByClassName("e").leng=
th=3D=3D=3D1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=3Dfunction(=
r,s,t){if(typeof s.getElementsByClassName!=3D=3D"undefined"&&!t){return =
s.getElementsByClassName(r[1])}}})()}function m(r,w,v,A,x,z){var =
y=3Dr=3D=3D"previousSibling"&&!z;for(var t=3D0,s=3DA.length;t<s;t++){var =
e=3DA[t];if(e){if(y&&e.nodeType=3D=3D=3D1){e.sizcache=3Dv;e.sizset=3Dt}e=3D=
e[r];var =
u=3Dfalse;while(e){if(e.sizcache=3D=3D=3Dv){u=3DA[e.sizset];break}if(e.no=
deType=3D=3D=3D1&&!z){e.sizcache=3Dv;e.sizset=3Dt}if(e.nodeName=3D=3D=3Dw=
){u=3De;break}e=3De[r]}A[t]=3Du}}}function q(r,w,v,A,x,z){var =
y=3Dr=3D=3D"previousSibling"&&!z;for(var t=3D0,s=3DA.length;t<s;t++){var =
e=3DA[t];if(e){if(y&&e.nodeType=3D=3D=3D1){e.sizcache=3Dv;e.sizset=3Dt}e=3D=
e[r];var =
u=3Dfalse;while(e){if(e.sizcache=3D=3D=3Dv){u=3DA[e.sizset];break}if(e.no=
deType=3D=3D=3D1){if(!z){e.sizcache=3Dv;e.sizset=3Dt}if(typeof =
w!=3D=3D"string"){if(e=3D=3D=3Dw){u=3Dtrue;break}}else{if(b.filter(w,[e])=
.length>0){u=3De;break}}}e=3De[r]}A[t]=3Du}}}var =
h=3Ddocument.compareDocumentPosition?function(r,e){return =
r.compareDocumentPosition(e)&16}:function(r,e){return =
r!=3D=3De&&(r.contains?r.contains(e):true)};var o=3Dfunction(e){return =
e.nodeType=3D=3D=3D9&&e.documentElement.nodeName!=3D=3D"HTML"||!!e.ownerD=
ocument&&e.ownerDocument.documentElement.nodeName!=3D=3D"HTML"};var =
g=3Dfunction(e,x){var =
t=3D[],u=3D"",v,s=3Dx.nodeType?[x]:x;while((v=3Df.match.PSEUDO.exec(e))){=
u+=3Dv[0];e=3De.replace(f.match.PSEUDO,"")}e=3Df.relative[e]?e+"*":e;for(=
var w=3D0,r=3Ds.length;w<r;w++){b(e,s[w],t)}return =
b.filter(u,t)};window.tinymce.dom.Sizzle=3Db})();(function(d){var =
f=3Dd.each,c=3Dd.DOM,b=3Dd.isIE,e=3Dd.isWebKit,a;d.create("tinymce.dom.Ev=
entUtils",{EventUtils:function(){this.inits=3D[];this.events=3D[]},add:fu=
nction(m,p,l,j){var g,h=3Dthis,i=3Dh.events,k;if(p instanceof =
Array){k=3D[];f(p,function(o){k.push(h.add(m,o,l,j))});return =
k}if(m&&m.hasOwnProperty&&m instanceof =
Array){k=3D[];f(m,function(n){n=3Dc.get(n);k.push(h.add(n,p,l,j))});retur=
n =
k}m=3Dc.get(m);if(!m){return}g=3Dfunction(n){if(h.disabled){return}n=3Dn|=
|window.event;if(n&&b){if(!n.target){n.target=3Dn.srcElement}if(!n.preven=
tDefault){n.preventDefault=3Dfunction(){n.returnValue=3Dfalse}}if(!n.stop=
Propagation){n.stopPropagation=3Dfunction(){n.cancelBubble=3Dtrue}}}if(!j=
){return l(n)}return =
l.call(j,n)};if(p=3D=3D"unload"){d.unloads.unshift({func:g});return =
g}if(p=3D=3D"init"){if(h.domLoaded){g()}else{h.inits.push(g)}return =
g}i.push({obj:m,name:p,func:l,cfunc:g,scope:j});h._add(m,p,g);return =
l},remove:function(l,m,k){var =
h=3Dthis,g=3Dh.events,i=3Dfalse,j;if(l&&l.hasOwnProperty&&l instanceof =
Array){j=3D[];f(l,function(n){n=3Dc.get(n);j.push(h.remove(n,m,k))});retu=
rn =
j}l=3Dc.get(l);f(g,function(o,n){if(o.obj=3D=3Dl&&o.name=3D=3Dm&&(!k||(o.=
func=3D=3Dk||o.cfunc=3D=3Dk))){g.splice(n,1);h._remove(l,m,o.cfunc);i=3Dt=
rue;return false}});return i},clear:function(l){var =
j=3Dthis,g=3Dj.events,h,k;if(l){l=3Dc.get(l);for(h=3Dg.length-1;h>=3D0;h-=
-){k=3Dg[h];if(k.obj=3D=3D=3Dl){j._remove(k.obj,k.name,k.cfunc);k.obj=3Dk=
.cfunc=3Dnull;g.splice(h,1)}}}},cancel:function(g){if(!g){return =
false}this.stop(g);return =
this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation=
()}else{g.cancelBubble=3Dtrue}return =
false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g=
.returnValue=3Dfalse}return false},destroy:function(){var =
g=3Dthis;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=3D=
j.cfunc=3Dnull});g.events=3D[];g=3Dnull},_add:function(h,i,g){if(h.attach=
Event){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventList=
ener(i,g,false)}else{h["on"+i]=3Dg}}},_remove:function(i,j,h){if(i){try{i=
f(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i=
.removeEventListener(j,h,false)}else{i["on"+j]=3Dnull}}}catch(g){}}},_pag=
eInit:function(h){var =
g=3Dthis;if(g.domLoaded){return}g.domLoaded=3Dtrue;f(g.inits,function(i){=
i()});g.inits=3D[]},_wait:function(i){var =
g=3Dthis,h=3Di.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=3D=
1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){=
if(h.readyState=3D=3D=3D"complete"){h.detachEvent("onreadystatechange",ar=
guments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i=3D=3Di=
.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("=
left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}=
}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pa=
geInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})}});a=3Dd.dom.Eve=
nt=3Dnew =
d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})=
(tinymce);(function(a){var =
b=3Da.each;a.create("tinymce.dom.Element",{Element:function(g,e){var =
c=3Dthis,f,d;e=3De||{};c.id=3Dg;c.dom=3Df=3De.dom||a.DOM;c.settings=3De;i=
f(!a.isIE){d=3Dc.dom.get(c.id)}b(["getPos","getRect","getParent","add","s=
etStyle","getStyle","setStyles","setAttrib","setAttribs","getAttrib","add=
Class","removeClass","hasClass","getOuterHTML","setOuterHTML","remove","s=
how","hide","isHidden","setHTML","get"],function(h){c[h]=3Dfunction(){var=
 =
j=3D[g],k;for(k=3D0;k<arguments.length;k++){j.push(arguments[k])}j=3Df[h]=
.apply(f,j);c.update(h);return j}})},on:function(e,d,c){return =
a.dom.Event.add(this.id,e,d,c)},getXY:function(){return{x:parseInt(this.g=
etStyle("left")),y:parseInt(this.getStyle("top"))}},getSize:function(){va=
r =
c=3Dthis.dom.get(this.id);return{w:parseInt(this.getStyle("width")||c.cli=
entWidth),h:parseInt(this.getStyle("height")||c.clientHeight)}},moveTo:fu=
nction(c,d){this.setStyles({left:c,top:d})},moveBy:function(c,e){var =
d=3Dthis.getXY();this.moveTo(d.x+c,d.y+e)},resizeTo:function(c,d){this.se=
tStyles({width:c,height:d})},resizeBy:function(c,e){var =
d=3Dthis.getSize();this.resizeTo(d.w+c,d.h+e)},update:function(d){var =
e=3Dthis,c,f=3De.dom;if(a.isIE6&&e.settings.blocker){d=3Dd||"";if(d.index=
Of("get")=3D=3D=3D0||d.indexOf("has")=3D=3D=3D0||d.indexOf("is")=3D=3D=3D=
0){return}if(d=3D=3D"remove"){f.remove(e.blocker);return}if(!e.blocker){e=
.blocker=3Df.uniqueId();c=3Df.add(e.settings.container||f.getRoot(),"ifra=
me",{id:e.blocker,style:"position:absolute;",frameBorder:0,src:'javascrip=
t:""'});f.setStyle(c,"opacity",0)}else{c=3Df.get(e.blocker)}f.setStyle(c,=
"left",e.getStyle("left",1));f.setStyle(c,"top",e.getStyle("top",1));f.se=
tStyle(c,"width",e.getStyle("width",1));f.setStyle(c,"height",e.getStyle(=
"height",1));f.setStyle(c,"display",e.getStyle("display",1));f.setStyle(c=
,"zIndex",parseInt(e.getStyle("zIndex",1)||0)-1)}}})})(tinymce);(function=
(c){function e(f){return f.replace(/[\n\r]+/g,"")}var =
b=3Dc.is,a=3Dc.isIE,d=3Dc.each;c.create("tinymce.dom.Selection",{Selectio=
n:function(i,h,g){var =
f=3Dthis;f.dom=3Di;f.win=3Dh;f.serializer=3Dg;d(["onBeforeSetContent","on=
BeforeGetContent","onSetContent","onGetContent"],function(j){f[j]=3Dnew =
c.util.Dispatcher(f)});if(!f.win.getSelection){f.tridentSel=3Dnew =
c.dom.TridentSelection(f)}c.addUnload(f.destroy,f)},getContent:function(g=
){var =
f=3Dthis,h=3Df.getRng(),l=3Df.dom.create("body"),j=3Df.getSel(),i,k,m;g=3D=
g||{};i=3Dk=3D"";g.get=3Dtrue;g.format=3Dg.format||"html";f.onBeforeGetCo=
ntent.dispatch(f,g);if(g.format=3D=3D"text"){return =
f.isCollapsed()?"":(h.text||(j.toString?j.toString():""))}if(h.cloneConte=
nts){m=3Dh.cloneContents();if(m){l.appendChild(m)}}else{if(b(h.item)||b(h=
.htmlText)){l.innerHTML=3Dh.item?h.item(0).outerHTML:h.htmlText}else{l.in=
nerHTML=3Dh.toString()}}if(/^\s/.test(l.innerHTML)){i=3D" =
"}if(/\s+$/.test(l.innerHTML)){k=3D" =
"}g.getInner=3Dtrue;g.content=3Df.isCollapsed()?"":i+f.serializer.seriali=
ze(l,g)+k;f.onGetContent.dispatch(f,g);return =
g.content},setContent:function(i,g){var =
f=3Dthis,j=3Df.getRng(),l,k=3Df.win.document;g=3Dg||{format:"html"};g.set=
=3Dtrue;i=3Dg.content=3Df.dom.processHTML(i);f.onBeforeSetContent.dispatc=
h(f,g);i=3Dg.content;if(j.insertNode){i+=3D'<span =
id=3D"__caret">_</span>';j.deleteContents();j.insertNode(f.getRng().creat=
eContextualFragment(i));l=3Df.dom.get("__caret");j=3Dk.createRange();j.se=
tStartBefore(l);j.setEndAfter(l);f.setRng(j);f.dom.remove("__caret")}else=
{if(j.item){k.execCommand("Delete",false,null);j=3Df.getRng()}j.pasteHTML=
(i)}f.onSetContent.dispatch(f,g)},getStart:function(){var =
f=3Dthis,g=3Df.getRng(),h;if(a){if(g.item){return =
g.item(0)}g=3Dg.duplicate();g.collapse(1);h=3Dg.parentElement();if(h&&h.n=
odeName=3D=3D"BODY"){return h.firstChild}return =
h}else{h=3Dg.startContainer;if(h.nodeName=3D=3D"BODY"){return =
h.firstChild}return f.dom.getParent(h,"*")}},getEnd:function(){var =
f=3Dthis,g=3Df.getRng(),h;if(a){if(g.item){return =
g.item(0)}g=3Dg.duplicate();g.collapse(0);h=3Dg.parentElement();if(h&&h.n=
odeName=3D=3D"BODY"){return h.lastChild}return =
h}else{h=3Dg.endContainer;if(h.nodeName=3D=3D"BODY"){return =
h.lastChild}return f.dom.getParent(h,"*")}},getBookmark:function(x){var =
j=3Dthis,m=3Dj.getRng(),f,n,l,u=3Dj.dom.getViewPort(j.win),v,p,z,o,w=3D-1=
6777215,k,h=3Dj.dom.getRoot(),g=3D0,i=3D0,y;n=3Du.x;l=3Du.y;if(x=3D=3D"si=
mple"){return{rng:m,scrollX:n,scrollY:l}}if(a){if(m.item){v=3Dm.item(0);d=
(j.dom.select(v.nodeName),function(s,r){if(v=3D=3Ds){p=3Dr;return =
false}});return{tag:v.nodeName,index:p,scrollX:n,scrollY:l}}f=3Dj.dom.doc=
.body.createTextRange();f.moveToElementText(h);f.collapse(true);z=3DMath.=
abs(f.move("character",w));f=3Dm.duplicate();f.collapse(true);p=3DMath.ab=
s(f.move("character",w));f=3Dm.duplicate();f.collapse(false);o=3DMath.abs=
(f.move("character",w))-p;return{start:p-z,length:o,scrollX:n,scrollY:l}}=
v=3Dj.getNode();k=3Dj.getSel();if(!k){return =
null}if(v&&v.nodeName=3D=3D"IMG"){return{scrollX:n,scrollY:l}}function =
q(A,D,t){var =
s=3Dj.dom.doc.createTreeWalker(A,NodeFilter.SHOW_TEXT,null,false),E,B=3D0=
,C=3D{};while((E=3Ds.nextNode())!=3Dnull){if(E=3D=3DD){C.start=3DB}if(E=3D=
=3Dt){C.end=3DB;return C}B+=3De(E.nodeValue||"").length}return =
null}if(k.anchorNode=3D=3Dk.focusNode&&k.anchorOffset=3D=3Dk.focusOffset)=
{v=3Dq(h,k.anchorNode,k.focusNode);if(!v){return{scrollX:n,scrollY:l}}e(k=
.anchorNode.nodeValue||"").replace(/^\s+/,function(r){g=3Dr.length});retu=
rn{start:Math.max(v.start+k.anchorOffset-g,0),end:Math.max(v.end+k.focusO=
ffset-g,0),scrollX:n,scrollY:l,beg:k.anchorOffset-g=3D=3D0}}else{v=3Dq(h,=
m.startContainer,m.endContainer);if(!v){return{scrollX:n,scrollY:l}}retur=
n{start:Math.max(v.start+m.startOffset-g,0),end:Math.max(v.end+m.endOffse=
t-i,0),scrollX:n,scrollY:l,beg:m.startOffset-g=3D=3D0}}},moveToBookmark:f=
unction(n){var =
o=3Dthis,g=3Do.getRng(),p=3Do.getSel(),j=3Do.dom.getRoot(),m,h,k;function=
 i(q,t,D){var =
B=3Do.dom.doc.createTreeWalker(q,NodeFilter.SHOW_TEXT,null,false),x,s=3D0=
,A=3D{},u,C,z,y;while((x=3DB.nextNode())!=3Dnull){z=3Dy=3D0;k=3Dx.nodeVal=
ue||"";h=3De(k).length;s+=3Dh;if(s>=3Dt&&!A.startNode){u=3Dt-(s-h);if(n.b=
eg&&u>=3Dh){continue}A.startNode=3Dx;A.startOffset=3Du+y}if(s>=3DD){A.end=
Node=3Dx;A.endOffset=3DD-(s-h)+y;return A}}return null}if(!n){return =
false}o.win.scrollTo(n.scrollX,n.scrollY);if(a){if(g=3Dn.rng){try{g.selec=
t()}catch(l){}return =
true}o.win.focus();if(n.tag){g=3Dj.createControlRange();d(o.dom.select(n.=
tag),function(r,q){if(q=3D=3Dn.index){g.addElement(r)}})}else{try{if(n.st=
art<0){return =
true}g=3Dp.createRange();g.moveToElementText(j);g.collapse(true);g.moveSt=
art("character",n.start);g.moveEnd("character",n.length)}catch(f){return =
true}}try{g.select()}catch(l){}return true}if(!p){return =
false}if(n.rng){p.removeAllRanges();p.addRange(n.rng)}else{if(b(n.start)&=
&b(n.end)){try{m=3Di(j,n.start,n.end);if(m){g=3Do.dom.doc.createRange();g=
.setStart(m.startNode,m.startOffset);g.setEnd(m.endNode,m.endOffset);p.re=
moveAllRanges();p.addRange(g)}if(!c.isOpera){o.win.focus()}}catch(l){}}}}=
,select:function(g,l){var =
p=3Dthis,f=3Dp.getRng(),q=3Dp.getSel(),o,m,k,j=3Dp.win.document;function =
h(u,t){var =
s,r;if(u){s=3Dj.createTreeWalker(u,NodeFilter.SHOW_TEXT,null,false);while=
(u=3Ds.nextNode()){r=3Du;if(c.trim(u.nodeValue).length!=3D0){if(t){return=
 u}else{r=3Du}}}}return =
r}if(a){try{o=3Dj.body;if(/^(IMG|TABLE)$/.test(g.nodeName)){f=3Do.createC=
ontrolRange();f.addElement(g)}else{f=3Do.createTextRange();f.moveToElemen=
tText(g)}f.select()}catch(i){}}else{if(l){m=3Dh(g,1)||p.dom.select("br:fi=
rst",g)[0];k=3Dh(g,0)||p.dom.select("br:last",g)[0];if(m&&k){f=3Dj.create=
Range();if(m.nodeName=3D=3D"BR"){f.setStartBefore(m)}else{f.setStart(m,0)=
}if(k.nodeName=3D=3D"BR"){f.setEndBefore(k)}else{f.setEnd(k,k.nodeValue.l=
ength)}}else{f.selectNode(g)}}else{f.selectNode(g)}p.setRng(f)}return =
g},isCollapsed:function(){var =
f=3Dthis,h=3Df.getRng(),g=3Df.getSel();if(!h||h.item){return =
false}return =
!g||h.boundingWidth=3D=3D0||h.collapsed},collapse:function(f){var =
g=3Dthis,h=3Dg.getRng(),i;if(h.item){i=3Dh.item(0);h=3Dthis.win.document.=
body.createTextRange();h.moveToElementText(i)}h.collapse(!!f);g.setRng(h)=
},getSel:function(){var g=3Dthis,f=3Dthis.win;return =
f.getSelection?f.getSelection():f.document.selection},getRng:function(j){=
var g=3Dthis,h,i;if(j&&g.tridentSel){return =
g.tridentSel.getRangeAt(0)}try{if(h=3Dg.getSel()){i=3Dh.rangeCount>0?h.ge=
tRangeAt(0):(h.createRange?h.createRange():g.win.document.createRange())}=
}catch(f){}if(!i){i=3Da?g.win.document.body.createTextRange():g.win.docum=
ent.createRange()}return i},setRng:function(i){var =
h,g=3Dthis;if(!g.tridentSel){h=3Dg.getSel();if(h){h.removeAllRanges();h.a=
ddRange(i)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.s=
elect()}catch(f){}}},setNode:function(g){var =
f=3Dthis;f.setContent(f.dom.getOuterHTML(g));return =
g},getNode:function(){var =
f=3Dthis,h=3Df.getRng(),g=3Df.getSel(),i;if(!a){if(!h){return =
f.dom.getRoot()}i=3Dh.commonAncestorContainer;if(!h.collapsed){if(c.isWeb=
Kit&&g.anchorNode&&g.anchorNode.nodeType=3D=3D1){return =
g.anchorNode.childNodes[g.anchorOffset]}if(h.startContainer=3D=3Dh.endCon=
tainer){if(h.startOffset-h.endOffset<2){if(h.startContainer.hasChildNodes=
()){i=3Dh.startContainer.childNodes[h.startOffset]}}}}return =
f.dom.getParent(i,"*")}return =
h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(g,f){var =
i=3Dthis,j=3Di.dom,m,h,l,k=3D[];m=3Dj.getParent(g||i.getStart(),j.isBlock=
);h=3Dj.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=3D=
h){l=3Dm;while((l=3Dl.nextSibling)&&l!=3Dh){if(j.isBlock(l)){k.push(l)}}}=
if(h&&m!=3Dh){k.push(h)}return k},destroy:function(g){var =
f=3Dthis;f.win=3Dnull;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.re=
moveUnload(f.destroy)}}})})(tinymce);(function(a){a.create("tinymce.dom.X=
MLWriter",{node:null,XMLWriter:function(c){function b(){var =
e=3Ddocument.implementation;if(!e||!e.createDocument){try{return new =
ActiveXObject("MSXML2.DOMDocument")}catch(d){}try{return new =
ActiveXObject("Microsoft.XmlDom")}catch(d){}}else{return =
e.createDocument("","",null)}}this.doc=3Db();this.valid=3Da.isOpera||a.is=
WebKit;this.reset()},reset:function(){var =
b=3Dthis,c=3Db.doc;if(c.firstChild){c.removeChild(c.firstChild)}b.node=3D=
c.appendChild(c.createElement("html"))},writeStartElement:function(c){var=
 =
b=3Dthis;b.node=3Db.node.appendChild(b.doc.createElement(c))},writeAttrib=
ute:function(c,b){if(this.valid){b=3Db.replace(/>/g,"%MCGT%")}this.node.s=
etAttribute(c,b)},writeEndElement:function(){this.node=3Dthis.node.parent=
Node},writeFullEndElement:function(){var =
b=3Dthis,c=3Db.node;c.appendChild(b.doc.createTextNode(""));b.node=3Dc.pa=
rentNode},writeText:function(b){if(this.valid){b=3Db.replace(/>/g,"%MCGT%=
")}this.node.appendChild(this.doc.createTextNode(b))},writeCDATA:function=
(b){this.node.appendChild(this.doc.createCDATASection(b))},writeComment:f=
unction(b){if(a.isIE){b=3Db.replace(/^\-|\-$/g," =
")}this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g," =
")))},getContent:function(){var b;b=3Dthis.doc.xml||new =
XMLSerializer().serializeToString(this.doc);b=3Db.replace(/<\?[^?]+\?>|<h=
tml>|<\/html>|<html\/>|<!DOCTYPE[^>]+>/g,"");b=3Db.replace(/ ?\/>/g," =
/>");if(this.valid){b=3Db.replace(/\%MCGT%/g,"&gt;")}return =
b}})})(tinymce);(function(a){a.create("tinymce.dom.StringWriter",{str:nul=
l,tags:null,count:0,settings:null,indent:null,StringWriter:function(b){th=
is.settings=3Da.extend({indent_char:" =
",indentation:0},b);this.reset()},reset:function(){this.indent=3D"";this.=
str=3D"";this.tags=3D[];this.count=3D0},writeStartElement:function(b){thi=
s._writeAttributesEnd();this.writeRaw("<"+b);this.tags.push(b);this.inAtt=
r=3Dtrue;this.count++;this.elementCount=3Dthis.count},writeAttribute:func=
tion(d,b){var c=3Dthis;c.writeRaw(" =
"+c.encode(d)+'=3D"'+c.encode(b)+'"')},writeEndElement:function(){var =
b;if(this.tags.length>0){b=3Dthis.tags.pop();if(this._writeAttributesEnd(=
1)){this.writeRaw("</"+b+">")}if(this.settings.indentation>0){this.writeR=
aw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._w=
riteAttributesEnd();this.writeRaw("</"+this.tags.pop()+">");if(this.setti=
ngs.indentation>0){this.writeRaw("\n")}}},writeText:function(b){this._wri=
teAttributesEnd();this.writeRaw(this.encode(b));this.count++},writeCDATA:=
function(b){this._writeAttributesEnd();this.writeRaw("<![CDATA["+b+"]]>")=
;this.count++},writeComment:function(b){this._writeAttributesEnd();this.w=
riteRaw("<!-- =
"+b+"-->");this.count++},writeRaw:function(b){this.str+=3Db},encode:funct=
ion(b){return =
b.replace(/[<>&"]/g,function(c){switch(c){case"<":return"&lt;";case">":re=
turn"&gt;";case"&":return"&amp;";case'"':return"&quot;"}return =
c})},getContent:function(){return =
this.str},_writeAttributesEnd:function(b){if(!this.inAttr){return}this.in=
Attr=3Dfalse;if(b&&this.elementCount=3D=3Dthis.count){this.writeRaw(" =
/>");return false}this.writeRaw(">");return =
true}})})(tinymce);(function(e){var =
g=3De.extend,f=3De.each,b=3De.util.Dispatcher,d=3De.isIE,a=3De.isGecko;fu=
nction c(h){return =
h.replace(/([?+*])/g,".$1")}e.create("tinymce.dom.Serializer",{Serializer=
:function(j){var i=3Dthis;i.key=3D0;i.onPreProcess=3Dnew =
b(i);i.onPostProcess=3Dnew b(i);try{i.writer=3Dnew =
e.dom.XMLWriter()}catch(h){i.writer=3Dnew =
e.dom.StringWriter()}i.settings=3Dj=3Dg({dom:e.DOM,valid_nodes:0,node_fil=
ter:0,attr_filter:0,invalid_attrs:/^(mce_|_moz_)/,closed:/^(br|hr|input|m=
eta|img|link|param|area)$/,entity_encoding:"named",entities:"160,nbsp,161=
,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,=
169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,=
plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedi=
l,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest=
,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,=
199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute=
,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,21=
3,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,22=
0,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227=
,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234=
,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntil=
de,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,osl=
ash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yum=
l,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,91=
9,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Om=
icron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Ps=
i,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,9=
51,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,o=
micron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,96=
7,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hel=
lip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,84=
76,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8=
596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,870=
4,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,=
8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,87=
34,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4=
,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,su=
b,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp=
,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,r=
ang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,=
oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,em=
sp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash=
,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,d=
agger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",bool_att=
rs:/(checked|disabled|readonly|selected|nowrap)/,valid_elements:"*[*]",ex=
tended_valid_elements:0,valid_child_elements:0,invalid_elements:0,fix_tab=
le_elements:1,fix_list_elements:true,fix_content_duplication:true,convert=
_fonts_to_spans:false,font_size_classes:0,font_size_style_values:0,apply_=
source_formatting:0,indent_mode:"simple",indent_char:"\t",indent_levels:1=
,remove_linebreaks:1,remove_redundant_brs:1,element_format:"xhtml"},j);i.=
dom=3Dj.dom;if(j.remove_redundant_brs){i.onPostProcess.add(function(k,l){=
l.content=3Dl.content.replace(/(<br =
\/>\s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^<br =
\/>\s*<\//.test(n)){return"</"+o+">"}return =
n})})}if(j.element_format=3D=3D"html"){i.onPostProcess.add(function(k,l){=
l.content=3Dl.content.replace(/<([^>]+) =
\/>/g,"<$1>")})}if(j.fix_list_elements){i.onPreProcess.add(function(v,s){=
var l,y,w=3D["ol","ul"],u,t,q,k=3D/^(OL|UL)$/,z;function m(r,x){var =
o=3Dx.split(","),p;while((r=3Dr.previousSibling)!=3Dnull){for(p=3D0;p<o.l=
ength;p++){if(r.nodeName=3D=3Do[p]){return r}}}return =
null}for(y=3D0;y<w.length;y++){l=3Di.dom.select(w[y],s.node);for(u=3D0;u<=
l.length;u++){t=3Dl[u];q=3Dt.parentNode;if(k.test(q.nodeName)){z=3Dm(t,"L=
I");if(!z){z=3Di.dom.create("li");z.innerHTML=3D"&nbsp;";z.appendChild(t)=
;q.insertBefore(z,q.firstChild)}else{z.appendChild(t)}}}}})}if(j.fix_tabl=
e_elements){i.onPreProcess.add(function(k,l){f(i.dom.select("p =
table",l.node),function(m){i.dom.split(i.dom.getParent(m,"p"),m)})})}},se=
tEntities:function(p){var =
n=3Dthis,j,m,h=3D{},o=3D"",k;if(n.entityLookup){return}j=3Dp.split(",");f=
or(m=3D0;m<j.length;m+=3D2){k=3Dj[m];if(k=3D=3D34||k=3D=3D38||k=3D=3D60||=
k=3D=3D62){continue}h[String.fromCharCode(j[m])]=3Dj[m+1];k=3DparseInt(j[=
m]).toString(16);o+=3D"\\u"+"0000".substring(k.length)+k}if(!o){n.setting=
s.entity_encoding=3D"raw";return}n.entitiesRE=3Dnew =
RegExp("["+o+"]","g");n.entityLookup=3Dh},setValidChildRules:function(h){=
this.childRules=3Dnull;this.addValidChildRules(h)},addValidChildRules:fun=
ction(k){var =
j=3Dthis,l,h,i;if(!k){return}l=3D"A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG=
|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|=
#comment";h=3D"A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRI=
KE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|AC=
RONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment";i=3D"H[1=
-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|CAPTION|BLOCKQUOTE|CENTER|DL=
|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP";f(k.split("=
,"),function(n){var =
o=3Dn.split(/\[|\]/),m;n=3D"";f(o[1].split("|"),function(p){if(n){n+=3D"|=
"}switch(p){case"%itrans":p=3Dh;break;case"%itrans_na":p=3Dh.substring(2)=
;break;case"%istrict":p=3Dl;break;case"%istrict_na":p=3Dl.substring(2);br=
eak;case"%btrans":p=3Di;break;case"%bstrict":p=3Di;break}n+=3Dp});m=3Dnew=
 =
RegExp("^("+n.toLowerCase()+")$","i");f(o[0].split("/"),function(p){j.chi=
ldRules=3Dj.childRules||{};j.childRules[p]=3Dm})});k=3D"";f(j.childRules,=
function(n,m){if(k){k+=3D"|"}k+=3Dm});j.parentElementsRE=3Dnew =
RegExp("^("+k.toLowerCase()+")$","i")},setRules:function(i){var =
h=3Dthis;h._setup();h.rules=3D{};h.wildRules=3D[];h.validElements=3D{};re=
turn h.addRules(i)},addRules:function(i){var =
h=3Dthis,j;if(!i){return}h._setup();f(i.split(","),function(m){var =
q=3Dm.split(/\[|\]/),l=3Dq[0].split("/"),r,k,o,n=3D[];if(j){k=3De.extend(=
[],j.attribs)}if(q.length>1){f(q[1].split("|"),function(u){var =
p=3D{},t;k=3Dk||[];u=3Du.replace(/::/g,"~");u=3D/^([!\-])?([\w*.?~_\-]+|)=
([=3D:<])?(.+)?$/.exec(u);u[2]=3Du[2].replace(/~/g,":");if(u[1]=3D=3D"!")=
{r=3Dr||[];r.push(u[2])}if(u[1]=3D=3D"-"){for(t=3D0;t<k.length;t++){if(k[=
t].name=3D=3Du[2]){k.splice(t,1);return}}}switch(u[3]){case"=3D":p.defaul=
tVal=3Du[4]||"";break;case":":p.forcedVal=3Du[4];break;case"<":p.validVal=
s=3Du[4].split("?");break}if(/[*.?]/.test(u[2])){o=3Do||[];p.nameRE=3Dnew=
 =
RegExp("^"+c(u[2])+"$");o.push(p)}else{p.name=3Du[2];k.push(p)}n.push(u[2=
])})}f(l,function(v,u){var =
w=3Dv.charAt(0),t=3D1,p=3D{};if(j){if(j.noEmpty){p.noEmpty=3Dj.noEmpty}if=
(j.fullEnd){p.fullEnd=3Dj.fullEnd}if(j.padd){p.padd=3Dj.padd}}switch(w){c=
ase"-":p.noEmpty=3Dtrue;break;case"+":p.fullEnd=3Dtrue;break;case"#":p.pa=
dd=3Dtrue;break;default:t=3D0}l[u]=3Dv=3Dv.substring(t);h.validElements[v=
]=3D1;if(/[*.?]/.test(l[0])){p.nameRE=3Dnew =
RegExp("^"+c(l[0])+"$");h.wildRules=3Dh.wildRules||{};h.wildRules.push(p)=
}else{p.name=3Dl[0];if(l[0]=3D=3D"@"){j=3Dp}h.rules[v]=3Dp}p.attribs=3Dk;=
if(r){p.requiredAttribs=3Dr}if(o){v=3D"";f(n,function(s){if(v){v+=3D"|"}v=
+=3D"("+c(s)+")"});p.validAttribsRE=3Dnew =
RegExp("^"+v.toLowerCase()+"$");p.wildAttribs=3Do}})});i=3D"";f(h.validEl=
ements,function(m,l){if(i){i+=3D"|"}if(l!=3D"@"){i+=3Dl}});h.validElement=
sRE=3Dnew RegExp("^("+c(i.toLowerCase())+")$")},findRule:function(m){var =
j=3Dthis,l=3Dj.rules,h,k;j._setup();k=3Dl[m];if(k){return =
k}l=3Dj.wildRules;for(h=3D0;h<l.length;h++){if(l[h].nameRE.test(m)){retur=
n l[h]}}return null},findAttribRule:function(h,l){var =
j,k=3Dh.wildAttribs;for(j=3D0;j<k.length;j++){if(k[j].nameRE.test(l)){ret=
urn k[j]}}return null},serialize:function(l,k){var =
j,i=3Dthis;i._setup();k=3Dk||{};k.format=3Dk.format||"html";i.processObj=3D=
k;l=3Dl.cloneNode(true);i.key=3D""+(parseInt(i.key)+1);if(!k.no_events){k=
.node=3Dl;i.onPreProcess.dispatch(i,k)}i.writer.reset();i._serializeNode(=
l,k.getInner);k.content=3Di.writer.getContent();if(!k.no_events){i.onPost=
Process.dispatch(i,k)}i._postProcess(k);k.node=3Dnull;return =
e.trim(k.content)},_postProcess:function(n){var =
i=3Dthis,k=3Di.settings,j=3Dn.content,m=3D[],l;if(n.format=3D=3D"html"){l=
=3Di._protect({content:j,patterns:[{pattern:/(<script[^>]*>)(.*?)(<\/scri=
pt>)/g},{pattern:/(<style[^>]*>)(.*?)(<\/style>)/g},{pattern:/(<pre[^>]*>=
)(.*?)(<\/pre>)/g,encode:1},{pattern:/(<!--\[CDATA\[)(.*?)(\]\]-->)/g}]})=
;j=3Dl.content;if(k.entity_encoding!=3D=3D"raw"){j=3Di._encode(j)}if(!n.s=
et){j=3Dj.replace(/<p>\s+<\/p>|<p([^>]+)>\s+<\/p>/g,k.entity_encoding=3D=3D=
"numeric"?"<p$1>&#160;</p>":"<p$1>&nbsp;</p>");if(k.remove_linebreaks){j=3D=
j.replace(/\r?\n|\r/g," ");j=3Dj.replace(/(<[^>]+>)\s+/g,"$1 =
");j=3Dj.replace(/\s+(<\/[^>]+>)/g," =
$1");j=3Dj.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|h=
ead|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,"<$1 =
$2>");j=3Dj.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|=
head|html|title|meta|style|pre|script|link|object)>\s+/g,"<$1>");j=3Dj.re=
place(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html=
|title|meta|style|pre|script|link|object)>/g,"</$1>")}if(k.apply_source_f=
ormatting&&k.indent_mode=3D=3D"simple"){j=3Dj.replace(/<(\/?)(ul|hr|table=
|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\=
n");j=3Dj.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td=
|li|area)(|[^>]+)>/g,"\n<$1$2>");j=3Dj.replace(/<\/(p|h[1-6]|blockquote|d=
iv|title|style|pre|script|td|li)>\s*/g,"</$1>\n");j=3Dj.replace(/\n\n/g,"=
\n")}}j=3Di._unprotect(j,l);j=3Dj.replace(/<!--\[CDATA\[([\s\S]+)\]\]-->/=
g,"<![CDATA[$1]]>");j=3Dj.replace(/(type|language)=3D\"mce-/g,'$1=3D"');i=
f(k.entity_encoding=3D=3D"raw"){j=3Dj.replace(/<p>&nbsp;<\/p>|<p([^>]+)>&=
nbsp;<\/p>/g,"<p$1>\u00a0</p>")}}n.content=3Dj},_serializeNode:function(D=
,o){var =
z=3Dthis,A=3Dz.settings,x=3Dz.writer,q,j,u,F,E,G,B,h,y,k,r,C,p,m;if(!A.no=
de_filter||A.node_filter(D)){switch(D.nodeType){case =
1:if(D.hasAttribute?D.hasAttribute("mce_bogus"):D.getAttribute("mce_bogus=
")){return}p=3Dfalse;q=3DD.hasChildNodes();k=3DD.getAttribute("mce_name")=
||D.nodeName.toLowerCase();if(d){if(D.scopeName!=3D=3D"HTML"&&D.scopeName=
!=3D=3D"html"){k=3DD.scopeName+":"+k}}if(k.indexOf("mce:")=3D=3D=3D0){k=3D=
k.substring(4)}if(!z.validElementsRE||!z.validElementsRE.test(k)||(z.inva=
lidElementsRE&&z.invalidElementsRE.test(k))||o){p=3Dtrue;break}if(d){if(A=
.fix_content_duplication){if(D.mce_serialized=3D=3Dz.key){return}D.mce_se=
rialized=3Dz.key}if(k.charAt(0)=3D=3D"/"){k=3Dk.substring(1)}}else{if(a){=
if(D.nodeName=3D=3D=3D"BR"&&D.getAttribute("type")=3D=3D"_moz"){return}}}=
if(z.childRules){if(z.parentElementsRE.test(z.elementName)){if(!z.childRu=
les[z.elementName].test(k)){p=3Dtrue;break}}z.elementName=3Dk}r=3Dz.findR=
ule(k);k=3Dr.name||k;m=3DA.closed.test(k);if((!q&&r.noEmpty)||(d&&!k)){p=3D=
true;break}if(r.requiredAttribs){G=3Dr.requiredAttribs;for(F=3DG.length-1=
;F>=3D0;F--){if(this.dom.getAttrib(D,G[F])!=3D=3D""){break}}if(F=3D=3D-1)=
{p=3Dtrue;break}}x.writeStartElement(k);if(r.attribs){for(F=3D0,B=3Dr.att=
ribs,E=3DB.length;F<E;F++){G=3DB[F];y=3Dz._getAttrib(D,G);if(y!=3D=3Dnull=
){x.writeAttribute(G.name,y)}}}if(r.validAttribsRE){B=3Dz.dom.getAttribs(=
D);for(F=3DB.length-1;F>-1;F--){h=3DB[F];if(h.specified){G=3Dh.nodeName.t=
oLowerCase();if(A.invalid_attrs.test(G)||!r.validAttribsRE.test(G)){conti=
nue}C=3Dz.findAttribRule(r,G);y=3Dz._getAttrib(D,C,G);if(y!=3D=3Dnull){x.=
writeAttribute(G,y)}}}}if(k=3D=3D=3D"script"&&e.trim(D.innerHTML)){x.writ=
eText("// =
");x.writeCDATA(D.innerHTML.replace(/<!--|-->|<\[CDATA\[|\]\]>/g,""));q=3D=
false;break}if(r.padd){if(q&&(u=3DD.firstChild)&&u.nodeType=3D=3D=3D1&&D.=
childNodes.length=3D=3D=3D1){if(u.hasAttribute?u.hasAttribute("mce_bogus"=
):u.getAttribute("mce_bogus")){x.writeText("\u00a0")}}else{if(!q){x.write=
Text("\u00a0")}}}break;case =
3:if(z.childRules&&z.parentElementsRE.test(z.elementName)){if(!z.childRul=
es[z.elementName].test(D.nodeName)){return}}return =
x.writeText(D.nodeValue);case 4:return x.writeCDATA(D.nodeValue);case =
8:return =
x.writeComment(D.nodeValue)}}else{if(D.nodeType=3D=3D1){q=3DD.hasChildNod=
es()}}if(q&&!m){u=3DD.firstChild;while(u){z._serializeNode(u);z.elementNa=
me=3Dk;u=3Du.nextSibling}}if(!p){if(!m){x.writeFullEndElement()}else{x.wr=
iteEndElement()}}},_protect:function(j){var =
i=3Dthis;j.items=3Dj.items||[];function h(l){return =
l.replace(/[\r\n\\]/g,function(m){if(m=3D=3D=3D"\n"){return"\\n"}else{if(=
m=3D=3D=3D"\\"){return"\\\\"}}return"\\r"})}function k(l){return =
l.replace(/\\[\\rn]/g,function(m){if(m=3D=3D=3D"\\n"){return"\n"}else{if(=
m=3D=3D=3D"\\\\"){return"\\"}}return"\r"})}f(j.patterns,function(l){j.con=
tent=3Dk(h(j.content).replace(l.pattern,function(n,o,m,p){m=3Dk(m);if(l.e=
ncode){m=3Di._encode(m)}j.items.push(m);return =
o+"<!--mce:"+(j.items.length-1)+"-->"+p}))});return =
j},_unprotect:function(i,j){i=3Di.replace(/\<!--mce:([0-9]+)--\>/g,functi=
on(k,h){return j.items[parseInt(h)]});j.items=3D[];return =
i},_encode:function(m){var =
j=3Dthis,k=3Dj.settings,i;if(k.entity_encoding!=3D=3D"raw"){if(k.entity_e=
ncoding.indexOf("named")!=3D-1){j.setEntities(k.entities);i=3Dj.entityLoo=
kup;m=3Dm.replace(j.entitiesRE,function(h){var =
l;if(l=3Di[h]){h=3D"&"+l+";"}return =
h})}if(k.entity_encoding.indexOf("numeric")!=3D-1){m=3Dm.replace(/[\u007E=
-\uFFFF]/g,function(h){return"&#"+h.charCodeAt(0)+";"})}}return =
m},_setup:function(){var =
h=3Dthis,i=3Dthis.settings;if(h.done){return}h.done=3D1;h.setRules(i.vali=
d_elements);h.addRules(i.extended_valid_elements);h.addValidChildRules(i.=
valid_child_elements);if(i.invalid_elements){h.invalidElementsRE=3Dnew =
RegExp("^("+c(i.invalid_elements.replace(/,/g,"|").toLowerCase())+")$")}i=
f(i.attrib_value_filter){h.attribValueFilter=3Di.attribValueFilter}},_get=
Attrib:function(m,j,h){var =
l,k;h=3Dh||j.name;if(j.forcedVal&&(k=3Dj.forcedVal)){if(k=3D=3D=3D"{$uid}=
"){return this.dom.uniqueId()}return =
k}k=3Dthis.dom.getAttrib(m,h);if(this.settings.bool_attrs.test(h)&&k){k=3D=
(""+k).toLowerCase();if(k=3D=3D=3D"false"||k=3D=3D=3D"0"){return =
null}k=3Dh}switch(h){case"rowspan":case"colspan":if(k=3D=3D"1"){k=3D""}br=
eak}if(this.attribValueFilter){k=3Dthis.attribValueFilter(h,k,m)}if(j.val=
idVals){for(l=3Dj.validVals.length-1;l>=3D0;l--){if(k=3D=3Dj.validVals[l]=
){break}}if(l=3D=3D-1){return =
null}}if(k=3D=3D=3D""&&typeof(j.defaultVal)!=3D"undefined"){k=3Dj.default=
Val;if(k=3D=3D=3D"{$uid}"){return this.dom.uniqueId()}return =
k}else{if(h=3D=3D"class"&&this.processObj.get){k=3Dk.replace(/\s?mceItem\=
w+\s?/g,"")}}if(k=3D=3D=3D""){return null}return =
k}})})(tinymce);(function(tinymce){var =
each=3Dtinymce.each,Event=3Dtinymce.dom.Event;tinymce.create("tinymce.dom=
.ScriptLoader",{ScriptLoader:function(s){this.settings=3Ds||{};this.queue=
=3D[];this.lookup=3D{}},isDone:function(u){return =
this.lookup[u]?this.lookup[u].state=3D=3D2:0},markDone:function(u){this.l=
ookup[u]=3D{state:2,url:u}},add:function(u,cb,s,pr){var =
t=3Dthis,lo=3Dt.lookup,o;if(o=3Dlo[u]){if(cb&&o.state=3D=3D2){cb.call(s||=
this)}return =
o}o=3D{state:0,url:u,func:cb,scope:s||this};if(pr){t.queue.unshift(o)}els=
e{t.queue.push(o)}lo[u]=3Do;return o},load:function(u,cb,s){var =
t=3Dthis,o;if(o=3Dt.lookup[u]){if(cb&&o.state=3D=3D2){cb.call(s||t)}retur=
n o}function =
loadScript(u){if(Event.domLoaded||t.settings.strict_mode){tinymce.util.XH=
R.send({url:tinymce._addVer(u),error:t.settings.error,async:false,success=
:function(co){t.eval(co)}})}else{document.write('<script =
type=3D"text/javascript" =
src=3D"'+tinymce._addVer(u)+'"><\/script>')}}if(!tinymce.is(u,"string")){=
each(u,function(u){loadScript(u)});if(cb){cb.call(s||t)}}else{loadScript(=
u);if(cb){cb.call(s||t)}}},loadQueue:function(cb,s){var =
t=3Dthis;if(!t.queueLoading){t.queueLoading=3D1;t.queueCallbacks=3D[];t.l=
oadScripts(t.queue,function(){t.queueLoading=3D0;if(cb){cb.call(s||t)}eac=
h(t.queueCallbacks,function(o){o.func.call(o.scope)})})}else{if(cb){t.que=
ueCallbacks.push({func:cb,scope:s||t})}}},eval:function(co){var =
w=3Dwindow;if(!w.execScript){try{eval.call(w,co)}catch(ex){eval(co,w)}}el=
se{w.execScript(co)}},loadScripts:function(sc,cb,s){var =
t=3Dthis,lo=3Dt.lookup;function =
done(o){o.state=3D2;if(o.func){o.func.call(o.scope||t)}}function =
allDone(){var =
l;l=3Dsc.length;each(sc,function(o){o=3Dlo[o.url];if(o.state=3D=3D=3D2){d=
one(o);l--}else{load(o)}});if(l=3D=3D=3D0&&cb){cb.call(s||t);cb=3D0}}func=
tion =
load(o){if(o.state>0){return}o.state=3D1;tinymce.dom.ScriptLoader.loadScr=
ipt(o.url,function(){done(o);allDone()})}each(sc,function(o){var =
u=3Do.url;if(!lo[u]){lo[u]=3Do;t.queue.push(o)}else{o=3Dlo[u]}if(o.state>=
0){return}if(!Event.domLoaded&&!t.settings.strict_mode){var =
ix,ol=3D"";if(cb||o.func){o.state=3D1;ix=3Dtinymce.dom.ScriptLoader._addO=
nLoad(function(){done(o);allDone()});if(tinymce.isIE){ol=3D' =
onreadystatechange=3D"'}else{ol=3D' =
onload=3D"'}ol+=3D"tinymce.dom.ScriptLoader._onLoad(this,'"+u+"',"+ix+');=
"'}document.write('<script type=3D"text/javascript" =
src=3D"'+tinymce._addVer(u)+'"'+ol+"><\/script>");if(!o.func){done(o)}}el=
se{load(o)}});allDone()},"static":{_addOnLoad:function(f){var =
t=3Dthis;t._funcs=3Dt._funcs||[];t._funcs.push(f);return =
t._funcs.length-1},_onLoad:function(e,u,ix){if(!tinymce.isIE||e.readyStat=
e=3D=3D"complete"){this._funcs[ix].call(this)}},loadScript:function(u,cb)=
{var id=3Dtinymce.DOM.uniqueId(),e;function =
done(){Event.clear(id);tinymce.DOM.remove(id);if(cb){cb.call(document,u);=
cb=3D0}}if(tinymce.isIE){tinymce.util.XHR.send({url:tinymce._addVer(u),as=
ync:false,success:function(co){window.execScript(co);done()}})}else{e=3Dt=
inymce.DOM.create("script",{id:id,type:"text/javascript",src:tinymce._add=
Ver(u)});Event.add(e,"load",done);(document.getElementsByTagName("head")[=
0]||document.body).appendChild(e)}}}});tinymce.ScriptLoader=3Dnew =
tinymce.dom.ScriptLoader()})(tinymce);(function(c){var =
b=3Dc.DOM,a=3Dc.is;c.create("tinymce.ui.Control",{Control:function(e,d){t=
his.id=3De;this.settings=3Dd=3Dd||{};this.rendered=3Dfalse;this.onRender=3D=
new =
c.util.Dispatcher(this);this.classPrefix=3D"";this.scope=3Dd.scope||this;=
this.disabled=3D0;this.active=3D0},setDisabled:function(d){var =
f;if(d!=3Dthis.disabled){f=3Db.get(this.id);if(f&&this.settings.unavailab=
le_prefix){if(d){this.prevTitle=3Df.title;f.title=3Dthis.settings.unavail=
able_prefix+": =
"+f.title}else{f.title=3Dthis.prevTitle}}this.setState("Disabled",d);this=
.setState("Enabled",!d);this.disabled=3Dd}},isDisabled:function(){return =
this.disabled},setActive:function(d){if(d!=3Dthis.active){this.setState("=
Active",d);this.active=3Dd}},isActive:function(){return =
this.active},setState:function(f,d){var =
e=3Db.get(this.id);f=3Dthis.classPrefix+f;if(d){b.addClass(e,f)}else{b.re=
moveClass(e,f)}},isRendered:function(){return =
this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,t=
his.renderHTML())},postRender:function(){var =
e=3Dthis,d;if(a(e.disabled)){d=3De.disabled;e.disabled=3D-1;e.setDisabled=
(d)}if(a(e.active)){d=3De.active;e.active=3D-1;e.setActive(d)}},remove:fu=
nction(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event=
.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymc=
e.ui.Control",{Container:function(b,a){this.parent(b,a);this.controls=3D[=
];this.lookup=3D{}},add:function(a){this.lookup[a.id]=3Da;this.controls.p=
ush(a);return a},get:function(a){return =
this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control=
",{Separator:function(b,a){this.parent(b,a);this.classPrefix=3D"mceSepara=
tor"},renderHTML:function(){return =
tinymce.DOM.createHTML("span",{"class":this.classPrefix})}});(function(d)=
{var =
c=3Dd.is,b=3Dd.DOM,e=3Dd.each,a=3Dd.walk;d.create("tinymce.ui.MenuItem:ti=
nymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPref=
ix=3D"mceMenuItem"},setSelected:function(f){this.setState("Selected",f);t=
his.selected=3Df},isSelected:function(){return =
this.selected},postRender:function(){var =
f=3Dthis;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tin=
ymce);(function(d){var =
c=3Dd.is,b=3Dd.DOM,e=3Dd.each,a=3Dd.walk;d.create("tinymce.ui.Menu:tinymc=
e.ui.MenuItem",{Menu:function(h,g){var =
f=3Dthis;f.parent(h,g);f.items=3D{};f.collapsed=3Dfalse;f.menuCount=3D0;f=
.onAddItem=3Dnew d.util.Dispatcher(this)},expand:function(g){var =
f=3Dthis;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.col=
lapsed=3Dfalse},collapse:function(g){var =
f=3Dthis;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f=
.collapsed=3Dtrue},isCollapsed:function(){return =
this.collapsed},add:function(f){if(!f.settings){f=3Dnew =
d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);retur=
n this.items[f.id]=3Df},addSeparator:function(){return =
this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=3Dthis.=
createMenu(f)}this.menuCount++;return =
this.add(f)},hasMenus:function(){return =
this.menuCount!=3D=3D0},remove:function(f){delete =
this.items[f.id]},removeAll:function(){var =
f=3Dthis;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.=
destroy()},"items",f);f.items=3D{}},createMenu:function(g){var f=3Dnew =
d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,t=
his.onAddItem);return f}})})(tinymce);(function(e){var =
d=3De.is,c=3De.DOM,f=3De.each,a=3De.dom.Event,b=3De.dom.Element;e.create(=
"tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=3Dg||{};g=
.container=3Dg.container||c.doc.body;g.offset_x=3Dg.offset_x||0;g.offset_=
y=3Dg.offset_y||0;g.vp_offset_x=3Dg.vp_offset_x||0;g.vp_offset_y=3Dg.vp_o=
ffset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=3D" =
mceNoIcons"}this.parent(h,g);this.onShowMenu=3Dnew =
e.util.Dispatcher(this);this.onHideMenu=3Dnew =
e.util.Dispatcher(this);this.classPrefix=3D"mceMenu"},createMenu:function=
(j){var =
h=3Dthis,i=3Dh.settings,g;j.container=3Dj.container||i.container;j.parent=
=3Dh;j.constrain=3Dj.constrain||i.constrain;j["class"]=3Dj["class"]||i["c=
lass"];j.vp_offset_x=3Dj.vp_offset_x||i.vp_offset_x;j.vp_offset_y=3Dj.vp_=
offset_y||i.vp_offset_y;g=3Dnew =
e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,=
h.onAddItem);return g},update:function(){var =
i=3Dthis,j=3Di.settings,g=3Dc.get("menu_"+i.id+"_tbl"),l=3Dc.get("menu_"+=
i.id+"_co"),h,k;h=3Dj.max_width?Math.min(g.clientWidth,j.max_width):g.cli=
entWidth;k=3Dj.max_height?Math.min(g.clientHeight,j.max_height):g.clientH=
eight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.=
element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width=
",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_he=
ight){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var =
z=3Dthis,A=3Dz.settings,o,g=3Dc.getViewPort(),u,l,v,q,i=3D2,k,j,m=3Dz.cla=
ssPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=3Dc.a=
dd(z.settings.container,z.renderNode());f(z.items,function(h){h.postRende=
r()});z.element=3Dnew =
b("menu_"+z.id,{blocker:1,container:A.container})}else{o=3Dc.get("menu_"+=
z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.=
update();p+=3DA.offset_x||0;n+=3DA.offset_y||0;g.w-=3D4;g.h-=3D4;if(A.con=
strain){u=3Do.clientWidth-i;l=3Do.clientHeight-i;v=3Dg.x+g.w;q=3Dg.y+g.h;=
if((p+A.vp_offset_x+u)>v){p=3Dr?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n=
+A.vp_offset_y+l)>q){n=3DMath.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{=
left:p,top:n});z.element.update();z.isMenuVisible=3D1;z.mouseClickFunc=3D=
a.add(o,"click",function(s){var =
h;s=3Ds.target;if(s&&(s=3Dc.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub"=
)){h=3Dz.items[s.id];if(h.isDisabled()){return}k=3Dz;while(k){if(k.hideMe=
nu){k.hideMenu()}k=3Dk.settings.parent}if(h.settings.onclick){h.settings.=
onclick(s)}return =
a.cancel(s)}});if(z.hasMenus()){z.mouseOverFunc=3Da.add(o,"mouseover",fun=
ction(w){var =
h,t,s;w=3Dw.target;if(w&&(w=3Dc.getParent(w,"tr"))){h=3Dz.items[w.id];if(=
z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(w&&c.hasC=
lass(w,m+"ItemSub")){t=3Dc.getRect(w);h.showMenu((t.x+t.w-i),t.y-i,t.x);z=
.lastMenu=3Dh;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}z.onS=
howMenu.dispatch(z);if(A.keyboard_focus){a.add(o,"keydown",z._keyHandler,=
z);c.select("a","menu_"+z.id)[0].focus();z._focusIdx=3D0}},hideMenu:funct=
ion(j){var =
g=3Dthis,i=3Dc.get("menu_"+g.id),h;if(!g.isMenuVisible){return}a.remove(i=
,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remo=
ve(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=3D0;if(!j){g.coll=
apse(1)}if(g.element){g.element.hide()}if(h=3Dc.get(g.id)){c.removeClass(=
h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:fu=
nction(i){var =
g=3Dthis,h;i=3Dg.parent(i);if(g.isRendered&&(h=3Dc.get("menu_"+g.id))){g.=
_add(c.select("tbody",h)[0],i)}return =
i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(=
g){c.remove(g.id);this.destroy();return =
this.parent(g)},destroy:function(){var =
g=3Dthis,h=3Dc.get("menu_"+g.id);a.remove(h,"mouseover",g.mouseOverFunc);=
a.remove(h,"click",g.mouseClickFunc);if(g.element){g.element.remove()}c.r=
emove(h)},renderNode:function(){var =
i=3Dthis,j=3Di.settings,l,h,k,g;g=3Dc.create("div",{id:"menu_"+i.id,"clas=
s":j["class"],style:"position:absolute;left:0;top:0;z-index:200000"});k=3D=
c.add(g,"div",{id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" =
"+j["class"]:"")});i.element=3Dnew =
b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k=
,"span",{"class":i.classPrefix+"Line"})}l=3Dc.add(k,"table",{id:"menu_"+i=
.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=3Dc.add(l,"tbody");f(=
i.items,function(m){i._add(h,m)});i.rendered=3Dtrue;return =
g},_keyHandler:function(j){var i=3Dthis,h=3Dj.keyCode;function g(m){var =
k=3Di._focusIdx+m,l=3Dc.select("a","menu_"+i.id)[k];if(l){i._focusIdx=3Dk=
;l.focus()}}switch(h){case 38:g(-1);return;case 40:g(1);return;case =
13:return;case 27:return this.hideMenu()}},_add:function(j,h){var =
i,q=3Dh.settings,p,l,k,m=3Dthis.classPrefix,g;if(q.separator){l=3Dc.add(j=
,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemS=
eparator"});if(i=3Dl.previousSibling){c.addClass(i,"mceLast")}return}i=3D=
l=3Dc.add(j,"tr",{id:h.id,"class":m+"Item =
"+m+"ItemEnabled"});i=3Dk=3Dc.add(i,"td");i=3Dp=3Dc.add(i,"a",{href:"java=
script:;",onclick:"return false;",onmousedown:"return =
false;"});c.addClass(k,q["class"]);g=3Dc.add(i,"span",{"class":"mceIcon"+=
(q.icon?" =
mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=3Dc.a=
dd(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.setti=
ngs.title);if(h.settings.style){c.setAttrib(i,"style",h.settings.style)}i=
f(j.childNodes.length=3D=3D1){c.addClass(l,"mceFirst")}if((i=3Dl.previous=
Sibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.=
collapse){c.addClass(l,m+"ItemSub")}if(i=3Dl.previousSibling){c.removeCla=
ss(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var =
a=3Db.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:functio=
n(d,c){this.parent(d,c);this.classPrefix=3D"mceButton"},renderHTML:functi=
on(){var =
f=3Dthis.classPrefix,e=3Dthis.settings,d,c;c=3Da.encode(e.label||"");d=3D=
'<a id=3D"'+this.id+'" href=3D"javascript:;" class=3D"'+f+" "+f+"Enabled =
"+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown=3D"return false;" =
onclick=3D"return false;" =
title=3D"'+a.encode(e.title)+'">';if(e.image){d+=3D'<img =
class=3D"mceIcon" src=3D"'+e.image+'" />'+c+"</a>"}else{d+=3D'<span =
class=3D"mceIcon '+e["class"]+'"></span>'+(c?'<span =
class=3D"'+f+'Label">'+c+"</span>":"")+"</a>"}return =
d},postRender:function(){var =
c=3Dthis,d=3Dc.settings;b.dom.Event.add(c.id,"click",function(f){if(!c.is=
Disabled()){return =
d.onclick.call(d.scope,f)}})}})})(tinymce);(function(d){var =
c=3Dd.DOM,b=3Dd.dom.Event,e=3Dd.each,a=3Dd.util.Dispatcher;d.create("tiny=
mce.ui.ListBox:tinymce.ui.Control",{ListBox:function(h,g){var =
f=3Dthis;f.parent(h,g);f.items=3D[];f.onChange=3Dnew =
a(f);f.onPostRender=3Dnew a(f);f.onAdd=3Dnew a(f);f.onRenderMenu=3Dnew =
d.util.Dispatcher(this);f.classPrefix=3D"mceListBox"},select:function(h){=
var g=3Dthis,j,i;if(h=3D=3Dundefined){return =
g.selectByIndex(-1)}if(h&&h.call){i=3Dh}else{i=3Dfunction(f){return =
f=3D=3Dh}}if(h!=3Dg.selectedValue){e(g.items,function(k,f){if(i(k.value))=
{j=3D1;g.selectByIndex(f);return =
false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){var =
g=3Dthis,h,i;if(f!=3Dg.selectedIndex){h=3Dc.get(g.id+"_text");i=3Dg.items=
[f];if(i){g.selectedValue=3Di.value;g.selectedIndex=3Df;c.setHTML(h,c.enc=
ode(i.title));c.removeClass(h,"mceTitle")}else{c.setHTML(h,c.encode(g.set=
tings.title));c.addClass(h,"mceTitle");g.selectedValue=3Dg.selectedIndex=3D=
null}h=3D0}},add:function(i,f,h){var =
g=3Dthis;h=3Dh||{};h=3Dd.extend(h,{title:i,value:f});g.items.push(h);g.on=
Add.dispatch(g,h)},getLength:function(){return =
this.items.length},renderHTML:function(){var =
i=3D"",f=3Dthis,g=3Df.settings,j=3Df.classPrefix;i=3D'<table =
id=3D"'+f.id+'" cellpadding=3D"0" cellspacing=3D"0" class=3D"'+j+" =
"+j+"Enabled"+(g["class"]?(" =
"+g["class"]):"")+'"><tbody><tr>';i+=3D"<td>"+c.createHTML("a",{id:f.id+"=
_text",href:"javascript:;","class":"mceText",onclick:"return =
false;",onmousedown:"return =
false;"},c.encode(f.settings.title))+"</td>";i+=3D"<td>"+c.createHTML("a"=
,{id:f.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",oncli=
ck:"return false;",onmousedown:"return =
false;"},"<span></span>")+"</td>";i+=3D"</tr></tbody></table>";return =
i},showMenu:function(){var =
g=3Dthis,j,i,h=3Dc.get(this.id),f;if(g.isDisabled()||g.items.length=3D=3D=
0){return}if(g.menu&&g.menu.isMenuVisible){return =
g.hideMenu()}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=3Dtrue=
}j=3Dc.getPos(this.settings.menu_container);i=3Dc.getPos(h);f=3Dg.menu;f.=
settings.offset_x=3Di.x;f.settings.offset_y=3Di.y;f.settings.keyboard_foc=
us=3D!d.isOpera;if(g.oldID){f.items[g.oldID].setSelected(0)}e(g.items,fun=
ction(k){if(k.value=3D=3D=3Dg.selectedValue){f.items[k.id].setSelected(1)=
;g.oldID=3Dk.id}});f.showMenu(0,h.clientHeight);b.add(c.doc,"mousedown",g=
.hideMenu,g);c.addClass(g.id,g.classPrefix+"Selected")},hideMenu:function=
(g){var =
f=3Dthis;if(g&&g.type=3D=3D"mousedown"&&(g.target.id=3D=3Df.id+"_text"||g=
.target.id=3D=3Df.id+"_open")){return}if(!g||!c.getParent(g.target,".mceM=
enu")){c.removeClass(f.id,f.classPrefix+"Selected");b.remove(c.doc,"mouse=
down",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}},renderMenu:function()=
{var =
g=3Dthis,f;f=3Dg.settings.control_manager.createDropMenu(g.id+"_menu",{me=
nu_line:1,"class":g.classPrefix+"Menu =
mceNoIcons",max_width:150,max_height:150});f.onHideMenu.add(g.hideMenu,g)=
;f.add({title:g.settings.title,"class":"mceMenuItemTitle",onclick:functio=
n(){if(g.settings.onselect("")!=3D=3Dfalse){g.select("")}}});e(g.items,fu=
nction(h){h.id=3Dc.uniqueId();h.onclick=3Dfunction(){if(g.settings.onsele=
ct(h.value)!=3D=3Dfalse){g.select(h.value)}};f.add(h)});g.onRenderMenu.di=
spatch(g,f);g.menu=3Df},postRender:function(){var =
f=3Dthis,g=3Df.classPrefix;b.add(f.id,"click",f.showMenu,f);b.add(f.id+"_=
text","focus",function(h){if(!f._focused){f.keyDownHandler=3Db.add(f.id+"=
_text","keydown",function(l){var =
i=3D-1,j,k=3Dl.keyCode;e(f.items,function(m,n){if(f.selectedValue=3D=3Dm.=
value){i=3Dn}});if(k=3D=3D38){j=3Df.items[i-1]}else{if(k=3D=3D40){j=3Df.i=
tems[i+1]}else{if(k=3D=3D13){j=3Df.selectedValue;f.selectedValue=3Dnull;f=
.settings.onselect(j);return =
b.cancel(l)}}}if(j){f.hideMenu();f.select(j.value)}})}f._focused=3D1});b.=
add(f.id+"_text","blur",function(){b.remove(f.id+"_text","keydown",f.keyD=
ownHandler);f._focused=3D0});if(d.isIE6||!c.boxModel){b.add(f.id,"mouseov=
er",function(){if(!c.hasClass(f.id,g+"Disabled")){c.addClass(f.id,g+"Hove=
r")}});b.add(f.id,"mouseout",function(){if(!c.hasClass(f.id,g+"Disabled")=
){c.removeClass(f.id,g+"Hover")}})}f.onPostRender.dispatch(f,c.get(f.id))=
},destroy:function(){this.parent();b.clear(this.id+"_text")}})})(tinymce)=
;(function(d){var =
c=3Dd.DOM,b=3Dd.dom.Event,e=3Dd.each,a=3Dd.util.Dispatcher;d.create("tiny=
mce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(g,f){thi=
s.parent(g,f);this.classPrefix=3D"mceNativeListBox"},setDisabled:function=
(f){c.get(this.id).disabled=3Df},isDisabled:function(){return =
c.get(this.id).disabled},select:function(h){var =
g=3Dthis,j,i;if(h=3D=3Dundefined){return =
g.selectByIndex(-1)}if(h&&h.call){i=3Dh}else{i=3Dfunction(f){return =
f=3D=3Dh}}if(h!=3Dg.selectedValue){e(g.items,function(k,f){if(i(k.value))=
{j=3D1;g.selectByIndex(f);return =
false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(f){c.get(th=
is.id).selectedIndex=3Df+1;this.selectedValue=3Dthis.items[f]?this.items[=
f].value:null},add:function(j,g,f){var =
i,h=3Dthis;f=3Df||{};f.value=3Dg;if(h.isRendered()){c.add(c.get(this.id),=
"option",f,j)}i=3D{title:j,value:g,attribs:f};h.items.push(i);h.onAdd.dis=
patch(h,i)},getLength:function(){return =
c.get(this.id).options.length-1},renderHTML:function(){var =
g,f=3Dthis;g=3Dc.createHTML("option",{value:""},"-- "+f.settings.title+" =
--");e(f.items,function(h){g+=3Dc.createHTML("option",{value:h.value},h.t=
itle)});g=3Dc.createHTML("select",{id:f.id,"class":"mceNativeListBox"},g)=
;return g},postRender:function(){var =
g=3Dthis,h;g.rendered=3Dtrue;function f(j){var =
i=3Dg.items[j.target.selectedIndex-1];if(i&&(i=3Di.value)){g.onChange.dis=
patch(g,i);if(g.settings.onselect){g.settings.onselect(i)}}}b.add(g.id,"c=
hange",f);b.add(g.id,"keydown",function(j){var =
i;b.remove(g.id,"change",h);i=3Db.add(g.id,"blur",function(){b.add(g.id,"=
change",f);b.remove(g.id,"blur",i)});if(j.keyCode=3D=3D13||j.keyCode=3D=3D=
32){f(j);return =
b.cancel(j)}});g.onPostRender.dispatch(g,c.get(g.id))}})})(tinymce);(func=
tion(c){var =
b=3Dc.DOM,a=3Dc.dom.Event,d=3Dc.each;c.create("tinymce.ui.MenuButton:tiny=
mce.ui.Button",{MenuButton:function(f,e){this.parent(f,e);this.onRenderMe=
nu=3Dnew =
c.util.Dispatcher(this);e.menu_container=3De.menu_container||b.doc.body},=
showMenu:function(){var =
g=3Dthis,j,i,h=3Db.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRend=
ered){g.renderMenu();g.isMenuRendered=3Dtrue}if(g.isMenuVisible){return =
g.hideMenu()}j=3Db.getPos(g.settings.menu_container);i=3Db.getPos(h);f=3D=
g.menu;f.settings.offset_x=3Di.x;f.settings.offset_y=3Di.y;f.settings.vp_=
offset_x=3Di.x;f.settings.vp_offset_y=3Di.y;f.settings.keyboard_focus=3Dg=
._focused;f.showMenu(0,h.clientHeight);a.add(b.doc,"mousedown",g.hideMenu=
,g);g.setState("Selected",1);g.isMenuVisible=3D1},renderMenu:function(){v=
ar =
f=3Dthis,e;e=3Df.settings.control_manager.createDropMenu(f.id+"_menu",{me=
nu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHi=
deMenu.add(f.hideMenu,f);f.onRenderMenu.dispatch(f,e);f.menu=3De},hideMen=
u:function(g){var =
f=3Dthis;if(g&&g.type=3D=3D"mousedown"&&b.getParent(g.target,function(h){=
return =
h.id=3D=3D=3Df.id||h.id=3D=3D=3Df.id+"_open"})){return}if(!g||!b.getParen=
t(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedow=
n",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=3D0},postR=
ender:function(){var =
e=3Dthis,f=3De.settings;a.add(e.id,"click",function(){if(!e.isDisabled())=
{if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function=
(c){var =
b=3Dc.DOM,a=3Dc.dom.Event,d=3Dc.each;c.create("tinymce.ui.SplitButton:tin=
ymce.ui.MenuButton",{SplitButton:function(f,e){this.parent(f,e);this.clas=
sPrefix=3D"mceSplitButton"},renderHTML:function(){var =
i,f=3Dthis,g=3Df.settings,e;i=3D"<tbody><tr>";if(g.image){e=3Db.createHTM=
L("img ",{src:g.image,"class":"mceAction =
"+g["class"]})}else{e=3Db.createHTML("span",{"class":"mceAction =
"+g["class"]},"")}i+=3D"<td>"+b.createHTML("a",{id:f.id+"_action",href:"j=
avascript:;","class":"mceAction "+g["class"],onclick:"return =
false;",onmousedown:"return =
false;",title:g.title},e)+"</td>";e=3Db.createHTML("span",{"class":"mceOp=
en =
"+g["class"]});i+=3D"<td>"+b.createHTML("a",{id:f.id+"_open",href:"javasc=
ript:;","class":"mceOpen "+g["class"],onclick:"return =
false;",onmousedown:"return =
false;",title:g.title},e)+"</td>";i+=3D"</tr></tbody>";return =
b.createHTML("table",{id:f.id,"class":"mceSplitButton =
mceSplitButtonEnabled =
"+g["class"],cellpadding:"0",cellspacing:"0",onmousedown:"return =
false;",title:g.title},i)},postRender:function(){var =
e=3Dthis,f=3De.settings;if(f.onclick){a.add(e.id+"_action","click",functi=
on(){if(!e.isDisabled()){f.onclick(e.value)}})}a.add(e.id+"_open","click"=
,e.showMenu,e);a.add(e.id+"_open","focus",function(){e._focused=3D1});a.a=
dd(e.id+"_open","blur",function(){e._focused=3D0});if(c.isIE6||!b.boxMode=
l){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonD=
isabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout=
",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass=
(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clea=
r(this.id+"_action");a.clear(this.id+"_open")}})})(tinymce);(function(d){=
var =
c=3Dd.DOM,a=3Dd.dom.Event,b=3Dd.is,e=3Dd.each;d.create("tinymce.ui.ColorS=
plitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(h,g){var =
f=3Dthis;f.parent(h,g);f.settings=3Dg=3Dd.extend({colors:"000000,993300,3=
33300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,0080=
80,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,=
999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFC=
C99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color=
:"#888888"},f.settings);f.onShowMenu=3Dnew =
d.util.Dispatcher(f);f.onHideMenu=3Dnew =
d.util.Dispatcher(f);f.value=3Dg.default_color},showMenu:function(){var =
f=3Dthis,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.render=
Menu();f.isMenuRendered=3Dtrue}if(f.isMenuVisible){return =
f.hideMenu()}i=3Dc.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitB=
uttonSelected");h=3Dc.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.=
y+i.clientHeight,zIndex:200000});i=3D0;a.add(c.doc,"mousedown",f.hideMenu=
,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=3Da.add(f.id+"_=
menu","keydown",function(k){if(k.keyCode=3D=3D27){f.hideMenu()}});c.selec=
t("a",f.id+"_menu")[0].focus()}f.isMenuVisible=3D1},hideMenu:function(g){=
var =
f=3Dthis;if(g&&g.type=3D=3D"mousedown"&&c.getParent(g.target,function(h){=
return =
h.id=3D=3D=3Df.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSpl=
itButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.d=
oc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandle=
r);c.hide(f.id+"_menu")}f.onHideMenu.dispatch(f);f.isMenuVisible=3D0},ren=
derMenu:function(){var =
k=3Dthis,f,j=3D0,l=3Dk.settings,p,h,o,g;g=3Dc.add(l.menu_container,"div",=
{id:k.id+"_menu","class":l.menu_class+" =
"+l["class"],style:"position:absolute;left:0;top:-1000px;"});f=3Dc.add(g,=
"div",{"class":l["class"]+" =
mceSplitButtonMenu"});c.add(f,"span",{"class":"mceMenuLine"});p=3Dc.add(f=
,"table",{"class":"mceColorSplitMenu"});h=3Dc.add(p,"tbody");j=3D0;e(b(l.=
colors,"array")?l.colors:l.colors.split(","),function(i){i=3Di.replace(/^=
#/,"");if(!j--){o=3Dc.add(h,"tr");j=3Dl.grid_width-1}p=3Dc.add(o,"td");p=3D=
c.add(p,"a",{href:"javascript:;",style:{backgroundColor:"#"+i},mce_color:=
"#"+i})});if(l.more_colors_func){p=3Dc.add(h,"tr");p=3Dc.add(p,"td",{cols=
pan:l.grid_width,"class":"mceMoreColors"});p=3Dc.add(p,"a",{id:k.id+"_mor=
e",href:"javascript:;",onclick:"return =
false;","class":"mceMoreColors"},l.more_colors_title);a.add(p,"click",fun=
ction(i){l.more_colors_func.call(l.more_colors_scope||this);return =
a.cancel(i)})}c.addClass(f,"mceColorSplitMenu");a.add(k.id+"_menu","click=
",function(i){var =
m;i=3Di.target;if(i.nodeName=3D=3D"A"&&(m=3Di.getAttribute("mce_color")))=
{k.setColor(m)}return a.cancel(i)});return g},setColor:function(g){var =
f=3Dthis;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=3Dg;f.hi=
deMenu();f.settings.onselect(g)},postRender:function(){var =
f=3Dthis,g=3Df.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","cl=
ass":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.v=
alue)},destroy:function(){this.parent();a.clear(this.id+"_menu");a.clear(=
this.id+"_more");c.remove(this.id+"_menu")}})})(tinymce);tinymce.create("=
tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var =
l=3Dthis,e=3D"",g,j,b=3Dtinymce.DOM,m=3Dl.settings,d,a,f,k;k=3Dl.controls=
;for(d=3D0;d<k.length;d++){j=3Dk[d];a=3Dk[d-1];f=3Dk[d+1];if(d=3D=3D=3D0)=
{g=3D"mceToolbarStart";if(j.Button){g+=3D" =
mceToolbarStartButton"}else{if(j.SplitButton){g+=3D" =
mceToolbarStartSplitButton"}else{if(j.ListBox){g+=3D" =
mceToolbarStartListBox"}}}e+=3Db.createHTML("td",{"class":g},b.createHTML=
("span",null,"<!-- IE =
-->"))}if(a&&j.ListBox){if(a.Button||a.SplitButton){e+=3Db.createHTML("td=
",{"class":"mceToolbarEnd"},b.createHTML("span",null,"<!-- IE =
-->"))}}if(b.stdMode){e+=3D'<td style=3D"position: =
relative">'+j.renderHTML()+"</td>"}else{e+=3D"<td>"+j.renderHTML()+"</td>=
"}if(f&&j.ListBox){if(f.Button||f.SplitButton){e+=3Db.createHTML("td",{"c=
lass":"mceToolbarStart"},b.createHTML("span",null,"<!-- IE =
-->"))}}}g=3D"mceToolbarEnd";if(j.Button){g+=3D" =
mceToolbarEndButton"}else{if(j.SplitButton){g+=3D" =
mceToolbarEndSplitButton"}else{if(j.ListBox){g+=3D" =
mceToolbarEndListBox"}}}e+=3Db.createHTML("td",{"class":g},b.createHTML("=
span",null,"<!-- IE -->"));return =
b.createHTML("table",{id:l.id,"class":"mceToolbar"+(m["class"]?" =
"+m["class"]:""),cellpadding:"0",cellspacing:"0",align:l.settings.align||=
""},"<tbody><tr>"+e+"</tr></tbody>")}});(function(b){var =
a=3Db.util.Dispatcher,c=3Db.each;b.create("tinymce.AddOnManager",{items:[=
],urls:{},lookup:{},onAdd:new a(this),get:function(d){return =
this.lookup[d]},requireLangPack:function(f){var =
d,e=3Db.EditorManager.settings;if(e&&e.language){d=3Dthis.urls[f]+"/langs=
/"+e.language+".js";if(!b.dom.Event.domLoaded&&!e.strict_mode){b.ScriptLo=
ader.load(d)}else{b.ScriptLoader.add(d)}}},add:function(e,d){this.items.p=
ush(d);this.lookup[e]=3Dd;this.onAdd.dispatch(this,e,d);return =
d},load:function(h,e,d,g){var =
f=3Dthis;if(f.urls[h]){return}if(e.indexOf("/")!=3D0&&e.indexOf("://")=3D=
=3D-1){e=3Db.baseURL+"/"+e}f.urls[h]=3De.substring(0,e.lastIndexOf("/"));=
b.ScriptLoader.add(e,d,g)}});b.PluginManager=3Dnew =
b.AddOnManager();b.ThemeManager=3Dnew =
b.AddOnManager()}(tinymce));(function(f){var =
g=3Df.each,h=3Df.extend,e=3Df.DOM,a=3Df.dom.Event,c=3Df.ThemeManager,b=3D=
f.PluginManager,d=3Df.explode;f.create("static =
tinymce.EditorManager",{editors:{},i18n:{},activeEditor:null,preInit:func=
tion(){var =
i=3Dthis,j=3Dwindow.location;f.documentBaseURL=3Dj.href.replace(/[\?#].*$=
/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(f.documentBaseURL)){=
f.documentBaseURL+=3D"/"}f.baseURL=3Dnew =
f.util.URI(f.documentBaseURL).toAbsolute(f.baseURL);f.EditorManager.baseU=
RI=3Dnew =
f.util.URI(f.baseURL);if(document.domain&&j.hostname!=3Ddocument.domain){=
f.relaxedDomain=3Ddocument.domain}i.onBeforeUnload=3Dnew =
f.util.Dispatcher(i);a.add(window,"beforeunload",function(k){i.onBeforeUn=
load.dispatch(i,k)})},init:function(q){var =
p=3Dthis,l,k=3Df.ScriptLoader,o,n,i=3D[],m;function j(u,v,r){var =
t=3Du[v];if(!t){return}if(f.is(t,"string")){r=3Dt.replace(/\.\w+$/,"");r=3D=
r?f.resolve(r):0;t=3Df.resolve(t)}return =
t.apply(r||this,Array.prototype.slice.call(arguments,2))}q=3Dh({theme:"si=
mple",language:"en",strict_loading_mode:document.contentType=3D=3D"applic=
ation/xhtml+xml"},q);p.settings=3Dq;if(!a.domLoaded&&!q.strict_loading_mo=
de){if(q.language){k.add(f.baseURL+"/langs/"+q.language+".js")}if(q.theme=
&&q.theme.charAt(0)!=3D"-"&&!c.urls[q.theme]){c.load(q.theme,"themes/"+q.=
theme+"/editor_template"+f.suffix+".js")}if(q.plugins){l=3Dd(q.plugins);i=
f(f.inArray(l,"compat2x")!=3D-1){b.load("compat2x","plugins/compat2x/edit=
or_plugin"+f.suffix+".js")}g(l,function(r){if(r&&r.charAt(0)!=3D"-"&&!b.u=
rls[r]){if(!f.isWebKit&&r=3D=3D"safari"){return}b.load(r,"plugins/"+r+"/e=
ditor_plugin"+f.suffix+".js")}})}k.loadQueue()}a.add(document,"init",func=
tion(){var =
r,t;j(q,"onpageload");if(q.browsers){r=3Dfalse;g(d(q.browsers),function(u=
){switch(u){case"ie":case"msie":if(f.isIE){r=3Dtrue}break;case"gecko":if(=
f.isGecko){r=3Dtrue}break;case"safari":case"webkit":if(f.isWebKit){r=3Dtr=
ue}break;case"opera":if(f.isOpera){r=3Dtrue}break}});if(!r){return}}switc=
h(q.mode){case"exact":r=3Dq.elements||"";if(r.length>0){g(d(r),function(u=
){if(e.get(u)){m=3Dnew =
f.Editor(u,q);i.push(m);m.render(1)}else{o=3D0;g(document.forms,function(=
v){g(v.elements,function(w){if(w.name=3D=3D=3Du){u=3D"mce_editor_"+o;e.se=
tAttrib(w,"id",u);m=3Dnew =
f.Editor(u,q);i.push(m);m.render(1)}})})}})}break;case"textareas":case"sp=
ecific_textareas":function s(v,u){return =
u.constructor=3D=3D=3DRegExp?u.test(v.className):e.hasClass(v,u)}g(e.sele=
ct("textarea"),function(u){if(q.editor_deselector&&s(u,q.editor_deselecto=
r)){return}if(!q.editor_selector||s(u,q.editor_selector)){n=3De.get(u.nam=
e);if(!u.id&&!n){u.id=3Du.name}if(!u.id||p.get(u.id)){u.id=3De.uniqueId()=
}m=3Dnew =
f.Editor(u.id,q);i.push(m);m.render(1)}});break}if(q.oninit){r=3Dt=3D0;g(=
i,function(u){t++;if(!u.initialized){u.onInit.add(function(){r++;if(r=3D=3D=
t){j(q,"oninit")}})}else{r++}if(r=3D=3Dt){j(q,"oninit")}})}})},get:functi=
on(i){return this.editors[i]},getInstanceById:function(i){return =
this.get(i)},add:function(i){this.editors[i.id]=3Di;this._setActive(i);re=
turn i},remove:function(j){var i=3Dthis;if(!i.editors[j.id]){return =
null}delete =
i.editors[j.id];if(i.activeEditor=3D=3Dj){g(i.editors,function(k){i._setA=
ctive(k);return false})}j.destroy();return =
j},execCommand:function(o,m,l){var =
n=3Dthis,k=3Dn.get(l),i;switch(o){case"mceFocus":k.focus();return =
true;case"mceAddEditor":case"mceAddControl":if(!n.get(l)){new =
f.Editor(l,n.settings).render()}return =
true;case"mceAddFrameControl":i=3Dl.window;i.tinyMCE=3DtinyMCE;i.tinymce=3D=
f;f.DOM.doc=3Di.document;f.DOM.win=3Di;k=3Dnew =
f.Editor(l.element_id,l);k.render();if(f.isIE){function =
j(){k.destroy();i.detachEvent("onunload",j);i=3Di.tinyMCE=3Di.tinymce=3Dn=
ull}i.attachEvent("onunload",j)}l.page_window=3Dnull;return =
true;case"mceRemoveEditor":case"mceRemoveControl":if(k){k.remove()}return=
 =
true;case"mceToggleEditor":if(!k){n.execCommand("mceAddControl",0,l);retu=
rn true}if(k.isHidden()){k.show()}else{k.hide()}return =
true}if(n.activeEditor){return n.activeEditor.execCommand(o,m,l)}return =
false},execInstanceCommand:function(m,l,k,j){var =
i=3Dthis.get(m);if(i){return i.execCommand(l,k,j)}return =
false},triggerSave:function(){g(this.editors,function(i){i.save()})},addI=
18n:function(k,l){var =
i,j=3Dthis.i18n;if(!f.is(k,"string")){g(k,function(n,m){g(n,function(q,p)=
{g(q,function(s,r){if(p=3D=3D=3D"common"){j[m+"."+r]=3Ds}else{j[m+"."+p+"=
."+r]=3Ds}})})})}else{g(l,function(n,m){j[k+"."+m]=3Dn})}},_setActive:fun=
ction(i){this.selectedInstance=3Dthis.activeEditor=3Di}});f.EditorManager=
.preInit()})(tinymce);var =
tinyMCE=3Dwindow.tinyMCE=3Dtinymce.EditorManager;(function(n){var =
o=3Dn.DOM,k=3Dn.dom.Event,f=3Dn.extend,l=3Dn.util.Dispatcher;var =
j=3Dn.each,a=3Dn.isGecko,b=3Dn.isIE,e=3Dn.isWebKit;var =
d=3Dn.is,h=3Dn.ThemeManager,c=3Dn.PluginManager,i=3Dn.EditorManager;var =
p=3Dn.inArray,m=3Dn.grep,g=3Dn.explode;n.create("tinymce.Editor",{Editor:=
function(u,r){var =
q=3Dthis;q.id=3Dq.editorId=3Du;q.execCommands=3D{};q.queryStateCommands=3D=
{};q.queryValueCommands=3D{};q.plugins=3D{};j(["onPreInit","onBeforeRende=
rUI","onPostRender","onInit","onRemove","onActivate","onDeactivate","onCl=
ick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyU=
p","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProc=
ess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetCont=
ent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onCha=
nge","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid=
","onSetProgressState"],function(s){q[s]=3Dnew =
l(q)});q.settings=3Dr=3Df({id:u,language:"en",docs_language:"en",theme:"s=
imple",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"=
",document_base_url:n.documentBaseURL,add_form_submit_trigger:1,submit_pa=
tch:1,add_unload_trigger:1,convert_urls:1,relative_urls:1,remove_script_h=
ost:1,table_inline_editing:0,object_resizing:1,cleanup:1,accessibility_fo=
cus:1,custom_shortcuts:1,custom_undo_redo_keyboard_shortcuts:1,custom_und=
o_redo_restore_selection:1,custom_undo_redo:1,doctype:'<!DOCTYPE HTML =
PUBLIC "-//W3C//DTD HTML 4.01 =
Transitional//EN">',visual_table_class:"mceItemTable",visual:1,inline_sty=
les:true,convert_fonts_to_spans:true,font_size_style_values:"xx-small,x-s=
mall,small,medium,large,x-large,xx-large",apply_source_formatting:1,direc=
tionality:"ltr",forced_root_block:"p",valid_elements:"@[id|class|style|ti=
tle|dir<ltr?rtl|lang|xml::lang|onclick|ondblclick|onmousedown|onmouseup|o=
nmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],a[rel|rev=
|charset|hreflang|tabindex|accesskey|type|name|href|target|title|class|on=
focus|onblur],strong/b,em/i,strike,u,#p[align],-ol[type|compact],-ul[type=
|compact],-li,br,img[longdesc|usemap|src|border|alt=3D|title|hspace|vspac=
e|width|height|align],-sub,-sup,-blockquote[cite],-table[border=3D0|cells=
pacing|cellpadding|width|frame|rules|height|align|summary|bgcolor|backgro=
und|bordercolor],-tr[rowspan|width|height|align|valign|bgcolor|background=
|bordercolor],tbody,thead,tfoot,#td[colspan|rowspan|width|height|align|va=
lign|bgcolor|background|bordercolor|scope],#th[colspan|rowspan|width|heig=
ht|align|valign|scope],caption,-div,-span,-code,-pre,address,-h1,-h2,-h3,=
-h4,-h5,-h6,hr[size|noshade],-font[face|size|color],dd,dl,dt,cite,abbr,ac=
ronym,del[datetime|cite],ins[datetime|cite],object[classid|width|height|c=
odebase|*],param[name|value],embed[type|width|height|src|*],script[src|ty=
pe],map[name],area[shape|coords|href|alt|target],bdo,button,col[align|cha=
r|charoff|span|valign|width],colgroup[align|char|charoff|span|valign|widt=
h],dfn,fieldset,form[action|accept|accept-charset|enctype|method],input[a=
ccept|alt|checked|disabled|maxlength|name|readonly|size|src|type|value|ta=
bindex|accesskey],kbd,label[for],legend,noscript,optgroup[label|disabled]=
,option[disabled|label|selected|value],q[cite],samp,select[disabled|multi=
ple|name|size],small,textarea[cols|rows|disabled|name|readonly],tt,var,bi=
g",hidden_input:1,padd_empty_editor:1,render_ui:1,init_theme:1,force_p_ne=
wlines:1,indentation:"30px",keep_styles:1,fix_table_elements:1,removeform=
at_selector:"span,b,strong,em,i,font,u,strike"},r);q.documentBaseURI=3Dne=
w =
n.util.URI(r.document_base_url||n.documentBaseURL,{base_uri:tinyMCE.baseU=
RI});q.baseURI=3Di.baseURI;q.execCallback("setup",q)},render:function(u){=
var =
v=3Dthis,w=3Dv.settings,x=3Dv.id,q=3Dn.ScriptLoader;if(!k.domLoaded){k.ad=
d(document,"init",function(){v.render()});return}if(!u){w.strict_loading_=
mode=3D1;tinyMCE.settings=3Dw}if(!v.getElement()){return}if(w.strict_load=
ing_mode){q.settings.strict_mode=3Dw.strict_loading_mode;n.DOM.settings.s=
trict=3D1}if(!/TEXTAREA|INPUT/i.test(v.getElement().nodeName)&&w.hidden_i=
nput&&o.getParent(x,"form")){o.insertAfter(o.create("input",{type:"hidden=
",name:x}),x)}if(n.WindowManager){v.windowManager=3Dnew =
n.WindowManager(v)}if(w.encoding=3D=3D"xml"){v.onGetContent.add(function(=
s,t){if(t.save){t.content=3Do.encode(t.content)}})}if(w.add_form_submit_t=
rigger){v.onSubmit.addToTop(function(){if(v.initialized){v.save();v.isNot=
Dirty=3D1}})}if(w.add_unload_trigger){v._beforeUnload=3DtinyMCE.onBeforeU=
nload.add(function(){if(v.initialized&&!v.destroyed&&!v.isHidden()){v.sav=
e({format:"raw",no_events:true})}})}n.addUnload(v.destroy,v);if(w.submit_=
patch){v.onBeforeRenderUI.add(function(){var =
s=3Dv.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.su=
bmit.nodeType&&!s.submit.length){v.formElement=3Ds;s._mceOldSubmit=3Ds.su=
bmit;s.submit=3Dfunction(){i.triggerSave();v.isNotDirty=3D1;return =
v.formElement._mceOldSubmit(v.formElement)}}s=3Dnull})}function =
r(){if(w.language){q.add(n.baseURL+"/langs/"+w.language+".js")}if(w.theme=
&&w.theme.charAt(0)!=3D"-"&&!h.urls[w.theme]){h.load(w.theme,"themes/"+w.=
theme+"/editor_template"+n.suffix+".js")}j(g(w.plugins),function(s){if(s&=
&s.charAt(0)!=3D"-"&&!c.urls[s]){if(!e&&s=3D=3D"safari"){return}c.load(s,=
"plugins/"+s+"/editor_plugin"+n.suffix+".js")}});q.loadQueue(function(){i=
f(!v.removed){v.init()}})}if(w.plugins.indexOf("compat2x")!=3D-1){c.load(=
"compat2x","plugins/compat2x/editor_plugin"+n.suffix+".js");q.loadQueue(r=
)}else{r()}},init:function(){var =
v,F=3Dthis,G=3DF.settings,C,z,B=3DF.getElement(),r,q,D,y,A,E;i.add(F);if(=
G.theme){G.theme=3DG.theme.replace(/-/,"");r=3Dh.get(G.theme);F.theme=3Dn=
ew =
r();if(F.theme.init&&G.init_theme){F.theme.init(F,h.urls[G.theme]||n.docu=
mentBaseURL.replace(/\/$/,""))}}j(g(G.plugins.replace(/\-/g,"")),function=
(w){var =
H=3Dc.get(w),t=3Dc.urls[w]||n.documentBaseURL.replace(/\/$/,""),s;if(H){s=
=3Dnew =
H(F,t);F.plugins[w]=3Ds;if(s.init){s.init(F,t)}}});if(G.popup_css!=3D=3Df=
alse){if(G.popup_css){G.popup_css=3DF.documentBaseURI.toAbsolute(G.popup_=
css)}else{G.popup_css=3DF.baseURI.toAbsolute("themes/"+G.theme+"/skins/"+=
G.skin+"/dialog.css")}}if(G.popup_css_add){G.popup_css+=3D","+F.documentB=
aseURI.toAbsolute(G.popup_css_add)}F.controlManager=3Dnew =
n.ControlManager(F);F.undoManager=3Dnew =
n.UndoManager(F);F.undoManager.onAdd.add(function(t,s){if(!s.initial){ret=
urn =
F.onChange.dispatch(F,s,t)}});F.undoManager.onUndo.add(function(t,s){retu=
rn =
F.onUndo.dispatch(F,s,t)});F.undoManager.onRedo.add(function(t,s){return =
F.onRedo.dispatch(F,s,t)});if(G.custom_undo_redo){F.onExecCommand.add(fun=
ction(t,w,u,H,s){if(w!=3D"Undo"&&w!=3D"Redo"&&w!=3D"mceRepaint"&&(!s||!s.=
skip_undo)){F.undoManager.add()}})}F.onExecCommand.add(function(s,t){if(!=
/^(FontName|FontSize)$/.test(t)){F.nodeChanged()}});if(a){function =
x(s,t){if(!t||!t.initial){F.execCommand("mceRepaint")}}F.onUndo.add(x);F.=
onRedo.add(x);F.onSetContent.add(x)}F.onBeforeRenderUI.dispatch(F,F.contr=
olManager);if(G.render_ui){C=3DG.width||B.style.width||B.offsetWidth;z=3D=
G.height||B.style.height||B.offsetHeight;F.orgDisplay=3DB.style.display;E=
=3D/^[0-9\.]+(|px)$/i;if(E.test(""+C)){C=3DMath.max(parseInt(C)+(r.deltaW=
idth||0),100)}if(E.test(""+z)){z=3DMath.max(parseInt(z)+(r.deltaHeight||0=
),100)}r=3DF.theme.renderUI({targetNode:B,width:C,height:z,deltaWidth:G.d=
elta_width,deltaHeight:G.delta_height});F.editorContainer=3Dr.editorConta=
iner}o.setStyles(r.sizeContainer||r.editorContainer,{width:C,height:z});z=
=3D(r.iframeHeight||z)+(typeof(z)=3D=3D"number"?(r.deltaHeight||0):"");if=
(z<100){z=3D100}F.iframeHTML=3DG.doctype+'<html><head =
xmlns=3D"http://www.w3.org/1999/xhtml"><base =
href=3D"'+F.documentBaseURI.getURI()+'" />';F.iframeHTML+=3D'<meta =
http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8" =
/>';if(n.relaxedDomain){F.iframeHTML+=3D'<script =
type=3D"text/javascript">document.domain =3D =
"'+n.relaxedDomain+'";<\/script>'}y=3DG.body_id||"tinymce";if(y.indexOf("=
=3D")!=3D-1){y=3DF.getParam("body_id","","hash");y=3Dy[F.id]||y}A=3DG.bod=
y_class||"";if(A.indexOf("=3D")!=3D-1){A=3DF.getParam("body_class","","ha=
sh");A=3DA[F.id]||""}F.iframeHTML+=3D'</head><body id=3D"'+y+'" =
class=3D"mceContentBody =
'+A+'"></body></html>';if(n.relaxedDomain){if(b||(n.isOpera&&parseFloat(o=
pera.version())>=3D9.5)){D=3D'javascript:(function(){document.open();docu=
ment.domain=3D"'+document.domain+'";var ed =3D =
window.parent.tinyMCE.get("'+F.id+'");document.write(ed.iframeHTML);docum=
ent.close();ed.setupIframe();})()'}else{if(n.isOpera){D=3D'javascript:(fu=
nction(){document.open();document.domain=3D"'+document.domain+'";document=
.close();ed.setupIframe();})()'}}}v=3Do.add(r.iframeContainer,"iframe",{i=
d:F.id+"_ifr",src:D||'javascript:""',frameBorder:"0",style:{width:"100%",=
height:z}});F.contentAreaContainer=3Dr.iframeContainer;o.get(r.editorCont=
ainer).style.display=3DF.orgDisplay;o.get(F.id).style.display=3D"none";if=
(!b||!n.relaxedDomain){F.setupIframe()}B=3Dv=3Dr=3Dnull},setupIframe:func=
tion(){var =
z=3Dthis,A=3Dz.settings,u=3Do.get(z.id),v=3Dz.getDoc(),r,x;if(!b||!n.rela=
xedDomain){v.open();v.write(z.iframeHTML);v.close()}if(!b){try{if(!A.read=
only){v.designMode=3D"On"}}catch(w){}}if(b){x=3Dz.getBody();o.hide(x);if(=
!A.readonly){x.contentEditable=3Dtrue}o.show(x)}z.dom=3Dnew =
n.DOM.DOMUtils(z.getDoc(),{keep_values:true,url_converter:z.convertURL,ur=
l_converter_scope:z,hex_colors:A.force_hex_style_colors,class_filter:A.cl=
ass_filter,update_styles:1,fix_ie_paragraphs:1});z.serializer=3Dnew =
n.dom.Serializer({entity_encoding:A.entity_encoding,entities:A.entities,v=
alid_elements:A.verify_html=3D=3D=3Dfalse?"*[*]":A.valid_elements,extende=
d_valid_elements:A.extended_valid_elements,valid_child_elements:A.valid_c=
hild_elements,invalid_elements:A.invalid_elements,fix_table_elements:A.fi=
x_table_elements,fix_list_elements:A.fix_list_elements,fix_content_duplic=
ation:A.fix_content_duplication,convert_fonts_to_spans:A.convert_fonts_to=
_spans,font_size_classes:A.font_size_classes,font_size_style_values:A.fon=
t_size_style_values,apply_source_formatting:A.apply_source_formatting,rem=
ove_linebreaks:A.remove_linebreaks,element_format:A.element_format,dom:z.=
dom});z.selection=3Dnew =
n.dom.Selection(z.dom,z.getWin(),z.serializer);z.forceBlocks=3Dnew =
n.ForceBlocks(z,{forced_root_block:A.forced_root_block});z.editorCommands=
=3Dnew =
n.EditorCommands(z);z.serializer.onPreProcess.add(function(s,t){return =
z.onPreProcess.dispatch(z,t,s)});z.serializer.onPostProcess.add(function(=
s,t){return =
z.onPostProcess.dispatch(z,t,s)});z.onPreInit.dispatch(z);if(!A.gecko_spe=
llcheck){z.getBody().spellcheck=3D0}if(!A.readonly){z._addEvents()}z.cont=
rolManager.onPostRender.dispatch(z,z.controlManager);z.onPostRender.dispa=
tch(z);if(A.directionality){z.getBody().dir=3DA.directionality}if(A.nowra=
p){z.getBody().style.whiteSpace=3D"nowrap"}if(A.auto_resize){z.onNodeChan=
ge.add(z.resizeToContent,z)}if(A.custom_elements){function =
y(s,t){j(g(A.custom_elements),function(B){var =
C;if(B.indexOf("~")=3D=3D=3D0){B=3DB.substring(1);C=3D"span"}else{C=3D"di=
v"}t.content=3Dt.content.replace(new =
RegExp("<("+B+")([^>]*)>","g"),"<"+C+' =
mce_name=3D"$1"$2>');t.content=3Dt.content.replace(new =
RegExp("</("+B+")>","g"),"</"+C+">")})}z.onBeforeSetContent.add(y);z.onPo=
stProcess.add(function(s,t){if(t.set){y(s,t)}})}if(A.handle_node_change_c=
allback){z.onNodeChange.add(function(t,s,B){z.execCallback("handle_node_c=
hange_callback",z.id,B,-1,-1,true,z.selection.isCollapsed())})}if(A.save_=
callback){z.onSaveContent.add(function(s,B){var =
t=3Dz.execCallback("save_callback",z.id,B.content,z.getBody());if(t){B.co=
ntent=3Dt}})}if(A.onchange_callback){z.onChange.add(function(t,s){z.execC=
allback("onchange_callback",z,s)})}if(A.convert_newlines_to_brs){z.onBefo=
reSetContent.add(function(s,t){if(t.initial){t.content=3Dt.content.replac=
e(/\r?\n/g,"<br =
/>")}})}if(A.fix_nesting&&b){z.onBeforeSetContent.add(function(s,t){t.con=
tent=3Dz._fixNesting(t.content)})}if(A.preformatted){z.onPostProcess.add(=
function(s,t){t.content=3Dt.content.replace(/^\s*<pre.*?>/,"");t.content=3D=
t.content.replace(/<\/pre>\s*$/,"");if(t.set){t.content=3D'<pre =
class=3D"mceItemHidden">'+t.content+"</pre>"}})}if(A.verify_css_classes){=
z.serializer.attribValueFilter=3Dfunction(D,B){var =
C,t;if(D=3D=3D"class"){if(!z.classesRE){t=3Dz.dom.getClasses();if(t.lengt=
h>0){C=3D"";j(t,function(s){C+=3D(C?"|":"")+s["class"]});z.classesRE=3Dne=
w RegExp("("+C+")","gi")}}return =
!z.classesRE||/(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(B)||z.classesRE.tes=
t(B)?B:""}return =
B}}if(A.convert_fonts_to_spans){z._convertFonts()}if(A.inline_styles){z._=
convertInlineElements()}if(A.cleanup_callback){z.onBeforeSetContent.add(f=
unction(s,t){t.content=3Dz.execCallback("cleanup_callback","insert_to_edi=
tor",t.content,t)});z.onPreProcess.add(function(s,t){if(t.set){z.execCall=
back("cleanup_callback","insert_to_editor_dom",t.node,t)}if(t.get){z.exec=
Callback("cleanup_callback","get_from_editor_dom",t.node,t)}});z.onPostPr=
ocess.add(function(s,t){if(t.set){t.content=3Dz.execCallback("cleanup_cal=
lback","insert_to_editor",t.content,t)}if(t.get){t.content=3Dz.execCallba=
ck("cleanup_callback","get_from_editor",t.content,t)}})}if(A.save_callbac=
k){z.onGetContent.add(function(s,t){if(t.save){t.content=3Dz.execCallback=
("save_callback",z.id,t.content,z.getBody())}})}if(A.handle_event_callbac=
k){z.onEvent.add(function(s,t,B){if(z.execCallback("handle_event_callback=
",t,s,B)=3D=3D=3Dfalse){k.cancel(t)}})}z.onSetContent.add(function(){z.ad=
dVisual(z.getBody())});if(A.padd_empty_editor){z.onPostProcess.add(functi=
on(s,t){t.content=3Dt.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0=
|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}if(a){function =
q(s,t){j(s.dom.select("a"),function(C){var =
B=3DC.parentNode;if(s.dom.isBlock(B)&&B.lastChild=3D=3D=3DC){s.dom.add(B,=
"br",{mce_bogus:1})}})}z.onExecCommand.add(function(s,t){if(t=3D=3D=3D"Cr=
eateLink"){q(s)}});z.onSetContent.add(z.selection.onSetContent.add(q));if=
(!A.readonly){try{v.designMode=3D"Off";v.designMode=3D"On"}catch(w){}}}se=
tTimeout(function(){if(z.removed){return}z.load({initial:true,format:(A.c=
leanup_on_startup?"html":"raw")});z.startContent=3Dz.getContent({format:"=
raw"});z.undoManager.add({initial:true});z.initialized=3Dtrue;z.onInit.di=
spatch(z);z.execCallback("setupcontent_callback",z.id,z.getBody(),z.getDo=
c());z.execCallback("init_instance_callback",z);z.focus(true);z.nodeChang=
ed({initial:1});if(A.content_css){n.each(g(A.content_css),function(s){z.d=
om.loadCSS(z.documentBaseURI.toAbsolute(s))})}if(A.auto_focus){setTimeout=
(function(){var =
s=3Di.get(A.auto_focus);s.selection.select(s.getBody(),1);s.selection.col=
lapse(1);s.getWin().focus()},100)}},1);u=3Dnull},focus:function(r){var =
u,q=3Dthis,s=3Dq.settings.content_editable;if(!r){if(!s&&(!b||q.selection=
.getNode().ownerDocument!=3Dq.getDoc())){q.getWin().focus()}}if(i.activeE=
ditor!=3Dq){if((u=3Di.activeEditor)!=3Dnull){u.onDeactivate.dispatch(u,q)=
}q.onActivate.dispatch(q,u)}i._setActive(q)},execCallback:function(v){var=
 =
q=3Dthis,u=3Dq.settings[v],r;if(!u){return}if(q.callbackLookup&&(r=3Dq.ca=
llbackLookup[v])){u=3Dr.func;r=3Dr.scope}if(d(u,"string")){r=3Du.replace(=
/\.\w+$/,"");r=3Dr?n.resolve(r):0;u=3Dn.resolve(u);q.callbackLookup=3Dq.c=
allbackLookup||{};q.callbackLookup[v]=3D{func:u,scope:r}}return =
u.apply(r||q,Array.prototype.slice.call(arguments,1))},translate:function=
(q){var =
t=3Dthis.settings.language||"en",r=3Di.i18n;if(!q){return""}return =
r[t+"."+q]||q.replace(/{\#([^}]+)\}/g,function(u,s){return =
r[t+"."+s]||"{#"+s+"}"})},getLang:function(r,q){return =
i.i18n[(this.settings.language||"en")+"."+r]||(d(q)?q:"{#"+r+"}")},getPar=
am:function(w,s,q){var =
t=3Dn.trim,r=3Dd(this.settings[w])?this.settings[w]:s,u;if(q=3D=3D=3D"has=
h"){u=3D{};if(d(r,"string")){j(r.indexOf("=3D")>0?r.split(/[;,](?![^=3D;,=
]*(?:[;,]|$))/):r.split(","),function(x){x=3Dx.split("=3D");if(x.length>1=
){u[t(x[0])]=3Dt(x[1])}else{u[t(x[0])]=3Dt(x)}})}else{u=3Dr}return =
u}return r},nodeChanged:function(u){var =
q=3Dthis,r=3Dq.selection,v=3Dr.getNode()||q.getBody();if(q.initialized){q=
.onNodeChange.dispatch(q,u?u.controlManager||q.controlManager:q.controlMa=
nager,b&&v.ownerDocument!=3Dq.getDoc()?q.getBody():v,r.isCollapsed(),u)}}=
,addButton:function(u,r){var =
q=3Dthis;q.buttons=3Dq.buttons||{};q.buttons[u]=3Dr},addCommand:function(=
t,r,q){this.execCommands[t]=3D{func:r,scope:q||this}},addQueryStateHandle=
r:function(t,r,q){this.queryStateCommands[t]=3D{func:r,scope:q||this}},ad=
dQueryValueHandler:function(t,r,q){this.queryValueCommands[t]=3D{func:r,s=
cope:q||this}},addShortcut:function(s,v,q,u){var =
r=3Dthis,w;if(!r.settings.custom_shortcuts){return =
false}r.shortcuts=3Dr.shortcuts||{};if(d(q,"string")){w=3Dq;q=3Dfunction(=
){r.execCommand(w,false,null)}}if(d(q,"object")){w=3Dq;q=3Dfunction(){r.e=
xecCommand(w[0],w[1],w[2])}}j(g(s),function(t){var =
x=3D{func:q,scope:u||this,desc:v,alt:false,ctrl:false,shift:false};j(g(t,=
"+"),function(y){switch(y){case"alt":case"ctrl":case"shift":x[y]=3Dtrue;b=
reak;default:x.charCode=3Dy.charCodeAt(0);x.keyCode=3Dy.toUpperCase().cha=
rCodeAt(0)}});r.shortcuts[(x.ctrl?"ctrl":"")+","+(x.alt?"alt":"")+","+(x.=
shift?"shift":"")+","+x.keyCode]=3Dx});return =
true},execCommand:function(x,w,z,q){var =
u=3Dthis,v=3D0,y,r;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLev=
el|mceRepaint|SelectAll)$/.test(x)&&(!q||!q.skip_focus)){u.focus()}y=3D{}=
;u.onBeforeExecCommand.dispatch(u,x,w,z,y);if(y.terminate){return =
false}if(u.execCallback("execcommand_callback",u.id,u.selection.getNode()=
,x,w,z)){u.onExecCommand.dispatch(u,x,w,z,q);return =
true}if(y=3Du.execCommands[x]){r=3Dy.func.call(y.scope,w,z);if(r!=3D=3Dtr=
ue){u.onExecCommand.dispatch(u,x,w,z,q);return =
r}}j(u.plugins,function(s){if(s.execCommand&&s.execCommand(x,w,z)){u.onEx=
ecCommand.dispatch(u,x,w,z,q);v=3D1;return false}});if(v){return =
true}if(u.theme&&u.theme.execCommand&&u.theme.execCommand(x,w,z)){u.onExe=
cCommand.dispatch(u,x,w,z,q);return =
true}if(n.GlobalCommands.execCommand(u,x,w,z)){u.onExecCommand.dispatch(u=
,x,w,z,q);return =
true}if(u.editorCommands.execCommand(x,w,z)){u.onExecCommand.dispatch(u,x=
,w,z,q);return =
true}u.getDoc().execCommand(x,w,z);u.onExecCommand.dispatch(u,x,w,z,q)},q=
ueryCommandState:function(w){var =
r=3Dthis,v,u;if(r._isHidden()){return}if(v=3Dr.queryStateCommands[w]){u=3D=
v.func.call(v.scope);if(u!=3D=3Dtrue){return =
u}}v=3Dr.editorCommands.queryCommandState(w);if(v!=3D=3D-1){return =
v}try{return =
this.getDoc().queryCommandState(w)}catch(q){}},queryCommandValue:function=
(w){var =
r=3Dthis,v,u;if(r._isHidden()){return}if(v=3Dr.queryValueCommands[w]){u=3D=
v.func.call(v.scope);if(u!=3D=3Dtrue){return =
u}}v=3Dr.editorCommands.queryCommandValue(w);if(d(v)){return =
v}try{return =
this.getDoc().queryCommandValue(w)}catch(q){}},show:function(){var =
q=3Dthis;o.show(q.getContainer());o.hide(q.id);q.load()},hide:function(){=
var =
q=3Dthis,r=3Dq.getDoc();if(b&&r){r.execCommand("SelectAll")}q.save();o.hi=
de(q.getContainer());o.setStyle(q.id,"display",q.orgDisplay)},isHidden:fu=
nction(){return =
!o.isHidden(this.id)},setProgressState:function(q,r,s){this.onSetProgress=
State.dispatch(this,q,r,s);return q},resizeToContent:function(){var =
q=3Dthis;o.setStyle(q.id+"_ifr","height",q.getBody().scrollHeight)},load:=
function(u){var =
q=3Dthis,s=3Dq.getElement(),r;if(s){u=3Du||{};u.load=3Dtrue;r=3Dq.setCont=
ent(d(s.value)?s.value:s.innerHTML,u);u.element=3Ds;if(!u.no_events){q.on=
LoadContent.dispatch(q,u)}u.element=3Ds=3Dnull;return =
r}},save:function(v){var =
q=3Dthis,u=3Dq.getElement(),r,s;if(!u||!q.initialized){return}v=3Dv||{};v=
.save=3Dtrue;if(!v.no_events){q.undoManager.typing=3D0;q.undoManager.add(=
)}v.element=3Du;r=3Dv.content=3Dq.getContent(v);if(!v.no_events){q.onSave=
Content.dispatch(q,v)}r=3Dv.content;if(!/TEXTAREA|INPUT/i.test(u.nodeName=
)){u.innerHTML=3Dr;if(s=3Do.getParent(q.id,"form")){j(s.elements,function=
(t){if(t.name=3D=3Dq.id){t.value=3Dr;return =
false}})}}else{u.value=3Dr}v.element=3Du=3Dnull;return =
r},setContent:function(r,s){var =
q=3Dthis;s=3Ds||{};s.format=3Ds.format||"html";s.set=3Dtrue;s.content=3Dr=
;if(!s.no_events){q.onBeforeSetContent.dispatch(q,s)}if(!n.isIE&&(r.lengt=
h=3D=3D=3D0||/^\s+$/.test(r))){s.content=3Dq.dom.setHTML(q.getBody(),'<br=
 mce_bogus=3D"1" =
/>');s.format=3D"raw"}s.content=3Dq.dom.setHTML(q.getBody(),n.trim(s.cont=
ent));if(s.format!=3D"raw"&&q.settings.cleanup){s.getInner=3Dtrue;s.conte=
nt=3Dq.dom.setHTML(q.getBody(),q.serializer.serialize(q.getBody(),s))}if(=
!s.no_events){q.onSetContent.dispatch(q,s)}return =
s.content},getContent:function(s){var =
q=3Dthis,r;s=3Ds||{};s.format=3Ds.format||"html";s.get=3Dtrue;if(!s.no_ev=
ents){q.onBeforeGetContent.dispatch(q,s)}if(s.format!=3D"raw"&&q.settings=
.cleanup){s.getInner=3Dtrue;r=3Dq.serializer.serialize(q.getBody(),s)}els=
e{r=3Dq.getBody().innerHTML}r=3Dr.replace(/^\s*|\s*$/g,"");s.content=3Dr;=
if(!s.no_events){q.onGetContent.dispatch(q,s)}return =
s.content},isDirty:function(){var q=3Dthis;return =
n.trim(q.startContent)!=3Dn.trim(q.getContent({format:"raw",no_events:1})=
)&&!q.isNotDirty},getContainer:function(){var =
q=3Dthis;if(!q.container){q.container=3Do.get(q.editorContainer||q.id+"_p=
arent")}return q.container},getContentAreaContainer:function(){return =
this.contentAreaContainer},getElement:function(){return =
o.get(this.settings.content_element||this.id)},getWin:function(){var =
q=3Dthis,r;if(!q.contentWindow){r=3Do.get(q.id+"_ifr");if(r){q.contentWin=
dow=3Dr.contentWindow}}return q.contentWindow},getDoc:function(){var =
r=3Dthis,q;if(!r.contentDocument){q=3Dr.getWin();if(q){r.contentDocument=3D=
q.document}}return r.contentDocument},getBody:function(){return =
this.bodyElement||this.getDoc().body},convertURL:function(q,x,w){var =
r=3Dthis,v=3Dr.settings;if(v.urlconverter_callback){return =
r.execCallback("urlconverter_callback",q,w,true,x)}if(!v.convert_urls||(w=
&&w.nodeName=3D=3D"LINK")||q.indexOf("file:")=3D=3D=3D0){return =
q}if(v.relative_urls){return =
r.documentBaseURI.toRelative(q)}q=3Dr.documentBaseURI.toAbsolute(q,v.remo=
ve_script_host);return q},addVisual:function(u){var =
q=3Dthis,r=3Dq.settings;u=3Du||q.getBody();if(!d(q.hasVisual)){q.hasVisua=
l=3Dr.visual}j(q.dom.select("table,a",u),function(t){var =
s;switch(t.nodeName){case"TABLE":s=3Dq.dom.getAttrib(t,"border");if(!s||s=
=3D=3D"0"){if(q.hasVisual){q.dom.addClass(t,r.visual_table_class)}else{q.=
dom.removeClass(t,r.visual_table_class)}}return;case"A":s=3Dq.dom.getAttr=
ib(t,"name");if(s){if(q.hasVisual){q.dom.addClass(t,"mceItemAnchor")}else=
{q.dom.removeClass(t,"mceItemAnchor")}}return}});q.onVisualAid.dispatch(q=
,u,q.hasVisual)},remove:function(){var =
q=3Dthis,r=3Dq.getContainer();q.removed=3D1;q.hide();q.execCallback("remo=
ve_instance_callback",q);q.onRemove.dispatch(q);q.onExecCommand.listeners=
=3D[];i.remove(q);o.remove(r)},destroy:function(r){var =
q=3Dthis;if(q.destroyed){return}if(!r){n.removeUnload(q.destroy);tinyMCE.=
onBeforeUnload.remove(q._beforeUnload);if(q.theme&&q.theme.destroy){q.the=
me.destroy()}q.controlManager.destroy();q.selection.destroy();q.dom.destr=
oy();if(!q.settings.content_editable){k.clear(q.getWin());k.clear(q.getDo=
c())}k.clear(q.getBody());k.clear(q.formElement)}if(q.formElement){q.form=
Element.submit=3Dq.formElement._mceOldSubmit;q.formElement._mceOldSubmit=3D=
null}q.contentAreaContainer=3Dq.formElement=3Dq.container=3Dq.settings.co=
ntent_element=3Dq.bodyElement=3Dq.contentDocument=3Dq.contentWindow=3Dnul=
l;if(q.selection){q.selection=3Dq.selection.win=3Dq.selection.dom=3Dq.sel=
ection.dom.doc=3Dnull}q.destroyed=3D1},_addEvents:function(){var =
w=3Dthis,v,y=3Dw.settings,x=3D{mouseup:"onMouseUp",mousedown:"onMouseDown=
",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPres=
s",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick=
:"onDblClick",paste:"onPaste"};function u(t,A){var =
s=3Dt.type;if(w.removed){return}if(w.onEvent.dispatch(w,t,A)!=3D=3Dfalse)=
{w[x[t.fakeType||t.type]].dispatch(w,t,A)}}j(x,function(t,s){switch(s){ca=
se"contextmenu":if(n.isOpera){w.dom.bind(w.getBody(),"mousedown",function=
(A){if(A.ctrlKey){A.fakeType=3D"contextmenu";u(A)}})}else{w.dom.bind(w.ge=
tBody(),s,u)}break;case"paste":w.dom.bind(w.getBody(),s,function(A){u(A)}=
);break;case"submit":case"reset":w.dom.bind(w.getElement().form||o.getPar=
ent(w.id,"form"),s,u);break;default:w.dom.bind(y.content_editable?w.getBo=
dy():w.getDoc(),s,u)}});w.dom.bind(y.content_editable?w.getBody():(a?w.ge=
tDoc():w.getWin()),"focus",function(s){w.focus(true)});if(n.isGecko){w.do=
m.bind(w.getDoc(),"DOMNodeInserted",function(t){var =
s;t=3Dt.target;if(t.nodeType=3D=3D=3D1&&t.nodeName=3D=3D=3D"IMG"&&(s=3Dt.=
getAttribute("mce_src"))){t.src=3Dw.documentBaseURI.toAbsolute(s)}})}if(a=
){function q(){var =
B=3Dthis,D=3DB.getDoc(),C=3DB.settings;if(a&&!C.readonly){if(B._isHidden(=
)){try{if(!C.content_editable){D.designMode=3D"On"}}catch(A){}}try{D.exec=
Command("styleWithCSS",0,false)}catch(A){if(!B._isHidden()){try{D.execCom=
mand("useCSS",0,true)}catch(A){}}}if(!C.table_inline_editing){try{D.execC=
ommand("enableInlineTableEditing",false,false)}catch(A){}}if(!C.object_re=
sizing){try{D.execCommand("enableObjectResizing",false,false)}catch(A){}}=
}}w.onBeforeExecCommand.add(q);w.onMouseDown.add(q)}w.onMouseUp.add(w.nod=
eChanged);w.onClick.add(w.nodeChanged);w.onKeyUp.add(function(s,t){var =
A=3Dt.keyCode;if((A>=3D33&&A<=3D36)||(A>=3D37&&A<=3D40)||A=3D=3D13||A=3D=3D=
45||A=3D=3D46||A=3D=3D8||(n.isMac&&(A=3D=3D91||A=3D=3D93))||t.ctrlKey){w.=
nodeChanged()}});w.onReset.add(function(){w.setContent(w.startContent,{fo=
rmat:"raw"})});if(y.custom_shortcuts){if(y.custom_undo_redo_keyboard_shor=
tcuts){w.addShortcut("ctrl+z",w.getLang("undo_desc"),"Undo");w.addShortcu=
t("ctrl+y",w.getLang("redo_desc"),"Redo")}if(a){w.addShortcut("ctrl+b",w.=
getLang("bold_desc"),"Bold");w.addShortcut("ctrl+i",w.getLang("italic_des=
c"),"Italic");w.addShortcut("ctrl+u",w.getLang("underline_desc"),"Underli=
ne")}for(v=3D1;v<=3D6;v++){w.addShortcut("ctrl+"+v,"",["FormatBlock",fals=
e,"<h"+v+">"])}w.addShortcut("ctrl+7","",["FormatBlock",false,"<p>"]);w.a=
ddShortcut("ctrl+8","",["FormatBlock",false,"<div>"]);w.addShortcut("ctrl=
+9","",["FormatBlock",false,"<address>"]);function z(t){var =
s=3Dnull;if(!t.altKey&&!t.ctrlKey&&!t.metaKey){return =
s}j(w.shortcuts,function(A){if(n.isMac&&A.ctrl!=3Dt.metaKey){return}else{=
if(!n.isMac&&A.ctrl!=3Dt.ctrlKey){return}}if(A.alt!=3Dt.altKey){return}if=
(A.shift!=3Dt.shiftKey){return}if(t.keyCode=3D=3DA.keyCode||(t.charCode&&=
t.charCode=3D=3DA.charCode)){s=3DA;return false}});return =
s}w.onKeyUp.add(function(s,t){var A=3Dz(t);if(A){return =
k.cancel(t)}});w.onKeyPress.add(function(s,t){var A=3Dz(t);if(A){return =
k.cancel(t)}});w.onKeyDown.add(function(s,t){var =
A=3Dz(t);if(A){A.func.call(A.scope);return =
k.cancel(t)}})}if(n.isIE){w.dom.bind(w.getDoc(),"controlselect",function(=
A){var =
t=3Dw.resizeInfo,s;A=3DA.target;if(A.nodeName!=3D=3D"IMG"){return}if(t){w=
.dom.unbind(t.node,t.ev,t.cb)}if(!w.dom.hasClass(A,"mceItemNoResize")){ev=
=3D"resizeend";s=3Dw.dom.bind(A,ev,function(C){var =
B;C=3DC.target;if(B=3Dw.dom.getStyle(C,"width")){w.dom.setAttrib(C,"width=
",B.replace(/[^0-9%]+/g,""));w.dom.setStyle(C,"width","")}if(B=3Dw.dom.ge=
tStyle(C,"height")){w.dom.setAttrib(C,"height",B.replace(/[^0-9%]+/g,""))=
;w.dom.setStyle(C,"height","")}})}else{ev=3D"resizestart";s=3Dw.dom.bind(=
A,"resizestart",k.cancel,k)}t=3Dw.resizeInfo=3D{node:A,ev:ev,cb:s}});w.on=
KeyDown.add(function(s,t){switch(t.keyCode){case =
8:if(w.selection.getRng().item){w.selection.getRng().item(0).removeNode()=
;return =
k.cancel(t)}}})}if(n.isOpera){w.onClick.add(function(s,t){k.prevent(t)})}=
if(y.custom_undo_redo){function =
r(){w.undoManager.typing=3D0;w.undoManager.add()}if(n.isIE){w.dom.bind(w.=
getWin(),"blur",function(s){var =
t;if(w.selection){t=3Dw.selection.getNode();if(!w.removed&&t.ownerDocumen=
t&&t.ownerDocument!=3Dw.getDoc()){r()}}})}else{w.dom.bind(w.getDoc(),"blu=
r",function(){if(w.selection&&!w.removed){r()}})}w.onMouseDown.add(r);w.o=
nKeyUp.add(function(s,t){if((t.keyCode>=3D33&&t.keyCode<=3D36)||(t.keyCod=
e>=3D37&&t.keyCode<=3D40)||t.keyCode=3D=3D13||t.keyCode=3D=3D45||t.ctrlKe=
y){w.undoManager.typing=3D0;w.undoManager.add()}});w.onKeyDown.add(functi=
on(s,t){if((t.keyCode>=3D33&&t.keyCode<=3D36)||(t.keyCode>=3D37&&t.keyCod=
e<=3D40)||t.keyCode=3D=3D13||t.keyCode=3D=3D45){if(w.undoManager.typing){=
w.undoManager.add();w.undoManager.typing=3D0}return}if(!w.undoManager.typ=
ing){w.undoManager.add();w.undoManager.typing=3D1}})}},_convertInlineElem=
ents:function(){var z=3Dthis,B=3Dz.settings,r=3Dz.dom,y,w,u,A,q;function =
x(s,t){if(!B.inline_styles){return}if(t.get){j(z.dom.select("table,u,stri=
ke",t.node),function(v){switch(v.nodeName){case"TABLE":if(y=3Dr.getAttrib=
(v,"height")){r.setStyle(v,"height",y);r.setAttrib(v,"height","")}break;c=
ase"U":case"STRIKE":v.style.textDecoration=3Dv.nodeName=3D=3D"U"?"underli=
ne":"line-through";r.setAttrib(v,"mce_style","");r.setAttrib(v,"mce_name"=
,"span");break}})}else{if(t.set){j(z.dom.select("table,span",t.node).reve=
rse(),function(v){if(v.nodeName=3D=3D"TABLE"){if(y=3Dr.getStyle(v,"height=
")){r.setAttrib(v,"height",y.replace(/[^0-9%]+/g,""))}}else{if(v.style.te=
xtDecoration=3D=3D"underline"){u=3D"u"}else{if(v.style.textDecoration=3D=3D=
"line-through"){u=3D"strike"}else{u=3D""}}if(u){v.style.textDecoration=3D=
"";r.setAttrib(v,"mce_style","");w=3Dr.create(u,{style:r.getAttrib(v,"sty=
le")});r.replace(w,v,1)}}})}}}z.onPreProcess.add(x);if(!B.cleanup_on_star=
tup){z.onSetContent.add(function(s,t){if(t.initial){x(z,{node:z.getBody()=
,set:1})}})}},_convertFonts:function(){var =
w=3Dthis,x=3Dw.settings,z=3Dw.dom,v,r,q,u;if(!x.inline_styles){return}v=3D=
[8,10,12,14,18,24,36];r=3D["xx-small","x-small","small","medium","large",=
"x-large","xx-large"];if(q=3Dx.font_size_style_values){q=3Dg(q)}if(u=3Dx.=
font_size_classes){u=3Dg(u)}function y(B){var =
C,A,t,s;if(!x.inline_styles){return}t=3Dw.dom.select("font",B);for(s=3Dt.=
length-1;s>=3D0;s--){C=3Dt[s];A=3Dz.create("span",{style:z.getAttrib(C,"s=
tyle"),"class":z.getAttrib(C,"class")});z.setStyles(A,{fontFamily:z.getAt=
trib(C,"face"),color:z.getAttrib(C,"color"),backgroundColor:C.style.backg=
roundColor});if(C.size){if(q){z.setStyle(A,"fontSize",q[parseInt(C.size)-=
1])}else{z.setAttrib(A,"class",u[parseInt(C.size)-1])}}z.setAttrib(A,"mce=
_style","");z.replace(A,C,1)}}w.onPreProcess.add(function(s,t){if(t.get){=
y(t.node)}});w.onSetContent.add(function(s,t){if(t.initial){y(t.node)}})}=
,_isHidden:function(){var q;if(!a){return =
0}q=3Dthis.selection.getSel();return(!q||!q.rangeCount||q.rangeCount=3D=3D=
0)},_fixNesting:function(r){var =
t=3D[],q;r=3Dr.replace(/<(\/)?([^\s>]+)[^>]*?>/g,function(u,s,w){var =
v;if(s=3D=3D=3D"/"){if(!t.length){return""}if(w!=3D=3Dt[t.length-1].tag){=
for(q=3Dt.length-1;q>=3D0;q--){if(t[q].tag=3D=3D=3Dw){t[q].close=3D1;brea=
k}}return""}else{t.pop();if(t.length&&t[t.length-1].close){u=3Du+"</"+t[t=
.length-1].tag+">";t.pop()}}}else{if(/^(br|hr|input|meta|img|link|param)$=
/i.test(w)){return u}if(/\/>$/.test(u)){return u}t.push({tag:w})}return =
u});for(q=3Dt.length-1;q>=3D0;q--){r+=3D"</"+t[q].tag+">"}return =
r}})})(tinymce);(function(d){var =
f=3Dd.each,c=3Dd.isIE,a=3Dd.isGecko,b=3Dd.isOpera,e=3Dd.isWebKit;d.create=
("tinymce.EditorCommands",{EditorCommands:function(g){this.editor=3Dg},ex=
ecCommand:function(k,j,l){var =
h=3Dthis,g=3Dh.editor,i;switch(k){case"mceResetDesignMode":case"mceBeginU=
ndoLevel":return true;case"unlink":h.UnLink();return =
true;case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case"Justif=
yFull":h.mceJustify(k,k.substring(7).toLowerCase());return =
true;default:i=3Dthis[k];if(i){i.call(this,j,l);return true}}return =
false},Indent:function(){var =
g=3Dthis.editor,l=3Dg.dom,j=3Dg.selection,k,h,i;h=3Dg.settings.indentatio=
n;i=3D/[a-z%]+$/i.exec(h);h=3DparseInt(h);if(g.settings.inline_styles&&(!=
this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList()=
)){f(j.getSelectedBlocks(),function(m){l.setStyle(m,"paddingLeft",(parseI=
nt(m.style.paddingLeft||0)+h)+i)});return}g.getDoc().execCommand("Indent"=
,false,null);if(c){l.getParent(j.getNode(),function(m){if(m.nodeName=3D=3D=
"BLOCKQUOTE"){m.dir=3Dm.style.cssText=3D""}})}},Outdent:function(){var =
h=3Dthis.editor,m=3Dh.dom,k=3Dh.selection,l,g,i,j;i=3Dh.settings.indentat=
ion;j=3D/[a-z%]+$/i.exec(i);i=3DparseInt(i);if(h.settings.inline_styles&&=
(!this.queryStateInsertUnorderedList()&&!this.queryStateInsertOrderedList=
())){f(k.getSelectedBlocks(),function(n){g=3DMath.max(0,parseInt(n.style.=
paddingLeft||0)-i);m.setStyle(n,"paddingLeft",g?g+j:"")});return}h.getDoc=
().execCommand("Outdent",false,null)},mceSetContent:function(h,g){this.ed=
itor.setContent(g)},mceToggleVisualAid:function(){var =
g=3Dthis.editor;g.hasVisual=3D!g.hasVisual;g.addVisual()},mceReplaceConte=
nt:function(h,g){var =
i=3Dthis.editor.selection;i.setContent(g.replace(/\{\$selection\}/g,i.get=
Content({format:"text"})))},mceInsertLink:function(i,h){var =
g=3Dthis.editor,j=3Dg.selection,k=3Dg.dom.getParent(j.getNode(),"a");if(d=
.is(h,"string")){h=3D{href:h}}function =
l(m){f(h,function(o,n){g.dom.setAttrib(m,n,o)})}if(!k){g.execCommand("Cre=
ateLink",false,"javascript:mctmp(0);");f(g.dom.select("a[href=3Djavascrip=
t:mctmp(0);]"),function(m){l(m)})}else{if(h.href){l(k)}else{g.dom.remove(=
k,1)}}},UnLink:function(){var =
g=3Dthis.editor,h=3Dg.selection;if(h.isCollapsed()){h.select(h.getNode())=
}g.getDoc().execCommand("unlink",false,null);h.collapse(0)},FontName:func=
tion(i,h){var =
j=3Dthis,g=3Dj.editor,k=3Dg.selection,l;if(!h){if(k.isCollapsed()){k.sele=
ct(k.getNode())}}else{if(g.settings.convert_fonts_to_spans){j._applyInlin=
eStyle("span",{style:{fontFamily:h}})}else{g.getDoc().execCommand("FontNa=
me",false,h)}}},FontSize:function(j,i){var =
h=3Dthis.editor,l=3Dh.settings,k,g;if(l.convert_fonts_to_spans&&i>=3D1&&i=
<=3D7){g=3Dd.explode(l.font_size_style_values);k=3Dd.explode(l.font_size_=
classes);if(k){i=3Dk[i-1]||i}else{i=3Dg[i-1]||i}}if(i>=3D1&&i<=3D7){h.get=
Doc().execCommand("FontSize",false,i)}else{this._applyInlineStyle("span",=
{style:{fontSize:i}})}},queryCommandValue:function(h){var =
g=3Dthis["queryValue"+h];if(g){return g.call(this,h)}return =
false},queryCommandState:function(h){var =
g;switch(h){case"JustifyLeft":case"JustifyCenter":case"JustifyRight":case=
"JustifyFull":return =
this.queryStateJustify(h,h.substring(7).toLowerCase());default:if(g=3Dthi=
s["queryState"+h]){return g.call(this,h)}}return =
-1},_queryState:function(h){try{return =
this.editor.getDoc().queryCommandState(h)}catch(g){}},_queryVal:function(=
h){try{return =
this.editor.getDoc().queryCommandValue(h)}catch(g){}},queryValueFontSize:=
function(){var =
h=3Dthis.editor,g=3D0,i;if(i=3Dh.dom.getParent(h.selection.getNode(),"spa=
n")){g=3Di.style.fontSize}if(!g&&(b||e)){if(i=3Dh.dom.getParent(h.selecti=
on.getNode(),"font")){g=3Di.size}return g}return =
g||this._queryVal("FontSize")},queryValueFontName:function(){var =
h=3Dthis.editor,g=3D0,i;if(i=3Dh.dom.getParent(h.selection.getNode(),"fon=
t")){g=3Di.face}if(i=3Dh.dom.getParent(h.selection.getNode(),"span")){g=3D=
i.style.fontFamily.replace(/, =
/g,",").replace(/[\'\"]/g,"").toLowerCase()}if(!g){g=3Dthis._queryVal("Fo=
ntName")}return g},mceJustify:function(o,p){var =
k=3Dthis.editor,m=3Dk.selection,g=3Dm.getNode(),q=3Dg.nodeName,h,j,i=3Dk.=
dom,l;if(k.settings.inline_styles&&this.queryStateJustify(o,p)){l=3D1}h=3D=
i.getParent(g,k.dom.isBlock);if(q=3D=3D"IMG"){if(p=3D=3D"full"){return}if=
(l){if(p=3D=3D"center"){i.setStyle(h||g.parentNode,"textAlign","")}i.setS=
tyle(g,"float","");this.mceRepaint();return}if(p=3D=3D"center"){if(h&&/^(=
TD|TH)$/.test(h.nodeName)){h=3D0}if(!h||h.childNodes.length>1){j=3Di.crea=
te("p");j.appendChild(g.cloneNode(false));if(h){i.insertAfter(j,h)}else{i=
.insertAfter(j,g)}i.remove(g);g=3Dj.firstChild;h=3Dj}i.setStyle(h,"textAl=
ign",p);i.setStyle(g,"float","")}else{i.setStyle(g,"float",p);i.setStyle(=
h||g.parentNode,"textAlign","")}this.mceRepaint();return}if(k.settings.in=
line_styles&&k.settings.forced_root_block){if(l){p=3D""}f(m.getSelectedBl=
ocks(i.getParent(m.getStart(),i.isBlock),i.getParent(m.getEnd(),i.isBlock=
)),function(n){i.setAttrib(n,"align","");i.setStyle(n,"textAlign",p=3D=3D=
"full"?"justify":p)});return}else{if(!l){k.getDoc().execCommand(o,false,n=
ull)}}if(k.settings.inline_styles){if(l){i.getParent(k.selection.getNode(=
),function(r){if(r.style&&r.style.textAlign){i.setStyle(r,"textAlign","")=
}});return}f(i.select("*"),function(s){var =
r=3Ds.align;if(r){if(r=3D=3D"full"){r=3D"justify"}i.setStyle(s,"textAlign=
",r);i.setAttrib(s,"align","")}})}},mceSetCSSClass:function(h,g){this.mce=
SetStyleInfo(0,{command:"setattrib",name:"class",value:g})},getSelectedEl=
ement:function(){var =
w=3Dthis,o=3Dw.editor,n=3Do.dom,s=3Do.selection,h=3Ds.getRng(),l,k,u,p,j,=
g,q,i,x,v;if(s.isCollapsed()||h.item){return =
s.getNode()}v=3Do.settings.merge_styles_invalid_parents;if(d.is(v,"string=
")){v=3Dnew =
RegExp(v,"i")}if(c){l=3Dh.duplicate();l.collapse(true);u=3Dl.parentElemen=
t();k=3Dh.duplicate();k.collapse(false);p=3Dk.parentElement();if(u!=3Dp){=
l.move("character",1);u=3Dl.parentElement()}if(u=3D=3Dp){l=3Dh.duplicate(=
);l.moveToElementText(u);if(l.compareEndPoints("StartToStart",h)=3D=3D0&&=
l.compareEndPoints("EndToEnd",h)=3D=3D0){return =
v&&v.test(u.nodeName)?null:u}}}else{function m(r){return =
n.getParent(r,"*")}u=3Dh.startContainer;p=3Dh.endContainer;j=3Dh.startOff=
set;g=3Dh.endOffset;if(!h.collapsed){if(u=3D=3Dp){if(j-g<2){if(u.hasChild=
Nodes()){i=3Du.childNodes[j];return =
v&&v.test(i.nodeName)?null:i}}}}if(u.nodeType!=3D3||p.nodeType!=3D3){retu=
rn =
null}if(j=3D=3D0){i=3Dm(u);if(i&&i.firstChild!=3Du){i=3Dnull}}if(j=3D=3Du=
.nodeValue.length){q=3Du.nextSibling;if(q&&q.nodeType=3D=3D1){i=3Du.nextS=
ibling}}if(g=3D=3D0){q=3Dp.previousSibling;if(q&&q.nodeType=3D=3D1){x=3Dq=
}}if(g=3D=3Dp.nodeValue.length){x=3Dm(p);if(x&&x.lastChild!=3Dp){x=3Dnull=
}}if(i=3D=3Dx){return v&&i&&v.test(i.nodeName)?null:i}}return =
null},mceSetStyleInfo:function(n,m){var =
q=3Dthis,h=3Dq.editor,j=3Dh.getDoc(),g=3Dh.dom,i,k,r=3Dh.selection,p=3Dm.=
wrapper||"span",k=3Dr.getBookmark(),o;function =
l(t,s){if(t.nodeType=3D=3D1){switch(m.command){case"setattrib":return =
g.setAttrib(t,m.name,m.value);case"setstyle":return =
g.setStyle(t,m.name,m.value);case"removeformat":return =
g.setAttrib(t,"class","")}}}o=3Dh.settings.merge_styles_invalid_parents;i=
f(d.is(o,"string")){o=3Dnew =
RegExp(o,"i")}if((i=3Dq.getSelectedElement())&&!h.settings.force_span_wra=
ppers){l(i,1)}else{j.execCommand("FontName",false,"__");f(g.select("span,=
font"),function(u){var =
s,t;if(g.getAttrib(u,"face")=3D=3D"__"||u.style.fontFamily=3D=3D=3D"__"){=
s=3Dg.create(p,{mce_new:"1"});l(s);f(u.childNodes,function(v){s.appendChi=
ld(v.cloneNode(true))});g.replace(s,u)}})}f(g.select(p).reverse(),functio=
n(t){var =
s=3Dt.parentNode;if(!g.getAttrib(t,"mce_new")){s=3Dg.getParent(t,"*[mce_n=
ew]");if(s){g.remove(t,1)}}});f(g.select(p).reverse(),function(t){var =
s=3Dt.parentNode;if(!s||!g.getAttrib(t,"mce_new")){return}if(h.settings.f=
orce_span_wrappers&&s.nodeName!=3D"SPAN"){return}if(s.nodeName=3D=3Dp.toU=
pperCase()&&s.childNodes.length=3D=3D1){return =
g.remove(s,1)}if(t.nodeType=3D=3D1&&(!o||!o.test(s.nodeName))&&s.childNod=
es.length=3D=3D1){l(s);g.setAttrib(t,"class","")}});f(g.select(p).reverse=
(),function(s){if(g.getAttrib(s,"mce_new")||(g.getAttribs(s).length<=3D1&=
&s.className=3D=3D=3D"")){if(!g.getAttrib(s,"class")&&!g.getAttrib(s,"sty=
le")){return =
g.remove(s,1)}g.setAttrib(s,"mce_new","")}});r.moveToBookmark(k)},querySt=
ateJustify:function(k,h){var =
g=3Dthis.editor,j=3Dg.selection.getNode(),i=3Dg.dom;if(j&&j.nodeName=3D=3D=
"IMG"){if(i.getStyle(j,"float")=3D=3Dh){return 1}return =
j.parentNode.style.textAlign=3D=3Dh}j=3Di.getParent(g.selection.getStart(=
),function(l){return =
l.nodeType=3D=3D1&&l.style.textAlign});if(h=3D=3D"full"){h=3D"justify"}if=
(g.settings.inline_styles){return(j&&j.style.textAlign=3D=3Dh)}return =
this._queryState(k)},ForeColor:function(i,h){var =
g=3Dthis.editor;if(g.settings.convert_fonts_to_spans){this._applyInlineSt=
yle("span",{style:{color:h}});return}else{g.getDoc().execCommand("ForeCol=
or",false,h)}},HiliteColor:function(i,k){var =
h=3Dthis,g=3Dh.editor,j=3Dg.getDoc();if(g.settings.convert_fonts_to_spans=
){this._applyInlineStyle("span",{style:{backgroundColor:k}});return}funct=
ion =
l(n){if(!a){return}try{j.execCommand("styleWithCSS",0,n)}catch(m){j.execC=
ommand("useCSS",0,!n)}}if(a||b){l(true);j.execCommand("hilitecolor",false=
,k);l(false)}else{j.execCommand("BackColor",false,k)}},FormatBlock:functi=
on(n,h){var =
o=3Dthis,l=3Do.editor,p=3Dl.selection,j=3Dl.dom,g,k,m;function =
i(q){return/^(P|DIV|H[1-6]|ADDRESS|BLOCKQUOTE|PRE)$/.test(q.nodeName)}g=3D=
j.getParent(p.getNode(),function(q){return =
i(q)});if(g){if((c&&i(g.parentNode))||g.nodeName=3D=3D"DIV"){k=3Dl.dom.cr=
eate(h);f(j.getAttribs(g),function(q){j.setAttrib(k,q.nodeName,j.getAttri=
b(g,q.nodeName))});m=3Dp.getBookmark();j.replace(k,g,1);p.moveToBookmark(=
m);l.nodeChanged();return}}h=3Dl.settings.forced_root_block?(h||"<p>"):h;=
if(h.indexOf("<")=3D=3D-1){h=3D"<"+h+">"}if(d.isGecko){h=3Dh.replace(/<(d=
iv|blockquote|code|dt|dd|dl|samp)>/gi,"$1")}l.getDoc().execCommand("Forma=
tBlock",false,h)},mceCleanup:function(){var =
h=3Dthis.editor,i=3Dh.selection,g=3Di.getBookmark();h.setContent(h.getCon=
tent());i.moveToBookmark(g)},mceRemoveNode:function(j,k){var =
h=3Dthis.editor,i=3Dh.selection,g,l=3Dk||i.getNode();if(l=3D=3Dh.getBody(=
)){return}g=3Di.getBookmark();h.dom.remove(l,1);i.moveToBookmark(g);h.nod=
eChanged()},mceSelectNodeDepth:function(i,j){var =
g=3Dthis.editor,h=3Dg.selection,k=3D0;g.dom.getParent(h.getNode(),functio=
n(l){if(l.nodeType=3D=3D1&&k++=3D=3Dj){h.select(l);g.nodeChanged();return=
 =
false}},g.getBody())},mceSelectNode:function(h,g){this.editor.selection.s=
elect(g)},mceInsertContent:function(g,h){this.editor.selection.setContent=
(h)},mceInsertRawHTML:function(h,i){var =
g=3Dthis.editor;g.selection.setContent("tiny_mce_marker");g.setContent(g.=
getContent().replace(/tiny_mce_marker/g,i))},mceRepaint:function(){var =
i,g,j=3Dthis.editor;if(d.isGecko){try{i=3Dj.selection;g=3Di.getBookmark(t=
rue);if(i.getSel()){i.getSel().selectAllChildren(j.getBody())}i.collapse(=
true);i.moveToBookmark(g)}catch(h){}}},queryStateUnderline:function(){var=
 =
g=3Dthis.editor,h=3Dg.selection.getNode();if(h&&h.nodeName=3D=3D"A"){retu=
rn false}return =
this._queryState("Underline")},queryStateOutdent:function(){var =
g=3Dthis.editor,h;if(g.settings.inline_styles){if((h=3Dg.dom.getParent(g.=
selection.getStart(),g.dom.isBlock))&&parseInt(h.style.paddingLeft)>0){re=
turn =
true}if((h=3Dg.dom.getParent(g.selection.getEnd(),g.dom.isBlock))&&parseI=
nt(h.style.paddingLeft)>0){return true}}return =
this.queryStateInsertUnorderedList()||this.queryStateInsertOrderedList()|=
|(!g.settings.inline_styles&&!!g.dom.getParent(g.selection.getNode(),"BLO=
CKQUOTE"))},queryStateInsertUnorderedList:function(){return =
this.editor.dom.getParent(this.editor.selection.getNode(),"UL")},querySta=
teInsertOrderedList:function(){return =
this.editor.dom.getParent(this.editor.selection.getNode(),"OL")},querySta=
temceBlockQuote:function(){return =
!!this.editor.dom.getParent(this.editor.selection.getStart(),function(g){=
return =
g.nodeName=3D=3D=3D"BLOCKQUOTE"})},_applyInlineStyle:function(o,j,m){var =
q=3Dthis,n=3Dq.editor,l=3Dn.dom,i,p=3D{},k,r;o=3Do.toUpperCase();if(m&&m.=
check_classes&&j["class"]){m.check_classes.push(j["class"])}function =
h(){f(l.select(o).reverse(),function(t){var =
s=3D0;f(l.getAttribs(t),function(u){if(u.nodeName.substring(0,1)!=3D"_"&&=
l.getAttrib(t,u.nodeName)!=3D""){s++}});if(s=3D=3D0){l.remove(t,1)}})}fun=
ction g(){var =
s;f(l.select("span,font"),function(t){if(t.style.fontFamily=3D=3D"mceinli=
ne"||t.face=3D=3D"mceinline"){if(!s){s=3Dn.selection.getBookmark()}j._mce=
_new=3D"1";l.replace(l.create(o,j),t,1)}});f(l.select(o+"[_mce_new]"),fun=
ction(u){function =
t(v){if(v.nodeType=3D=3D1){f(j.style,function(x,w){l.setStyle(v,w,"")});i=
f(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(l.hasClass=
(v,w)){l.removeClass(v,w)}})}}}f(l.select(o,u),t);if(u.parentNode&&u.pare=
ntNode.nodeType=3D=3D1&&u.parentNode.childNodes.length=3D=3D1){t(u.parent=
Node)}l.getParent(u.parentNode,function(v){if(v.nodeType=3D=3D1){if(j.sty=
le){f(j.style,function(y,x){var =
w;if(!p[x]&&(w=3Dl.getStyle(v,x))){if(w=3D=3D=3Dy){l.setStyle(u,x,"")}p[x=
]=3D1}})}if(j["class"]&&v.className&&m){f(m.check_classes,function(w){if(=
l.hasClass(v,w)){l.removeClass(u,w)}})}}return =
false});u.removeAttribute("_mce_new")});h();n.selection.moveToBookmark(s)=
;return =
!!s}n.focus();n.getDoc().execCommand("FontName",false,"mceinline");g();if=
(k=3Dq._applyInlineStyle.keyhandler){n.onKeyUp.remove(k);n.onKeyPress.rem=
ove(k);n.onKeyDown.remove(k);n.onSetContent.remove(q._applyInlineStyle.ch=
andler)}if(n.selection.isCollapsed()){if(!c){f(l.getParents(n.selection.g=
etNode(),"span"),function(s){f(j.style,function(u,t){var =
w;if(w=3Dl.getStyle(s,t)){if(w=3D=3Du){l.setStyle(s,t,"");r=3D2;return =
false}r=3D1;return false}});if(r){return =
false}});if(r=3D=3D2){i=3Dn.selection.getBookmark();h();n.selection.moveT=
oBookmark(i);window.setTimeout(function(){n.nodeChanged()},1);return}}q._=
pendingStyles=3Dd.extend(q._pendingStyles||{},j.style);q._applyInlineStyl=
e.chandler=3Dn.onSetContent.add(function(){delete =
q._pendingStyles});q._applyInlineStyle.keyhandler=3Dk=3Dfunction(s){if(q.=
_pendingStyles){j.style=3Dq._pendingStyles;delete =
q._pendingStyles}if(g()){n.onKeyDown.remove(q._applyInlineStyle.keyhandle=
r);n.onKeyPress.remove(q._applyInlineStyle.keyhandler)}if(s.type=3D=3D"ke=
yup"){n.onKeyUp.remove(q._applyInlineStyle.keyhandler)}};n.onKeyDown.add(=
k);n.onKeyPress.add(k);n.onKeyUp.add(k)}else{q._pendingStyles=3D0}}})})(t=
inymce);(function(a){a.create("tinymce.UndoManager",{index:0,data:null,ty=
ping:0,UndoManager:function(c){var =
d=3Dthis,b=3Da.util.Dispatcher;d.editor=3Dc;d.data=3D[];d.onAdd=3Dnew =
b(this);d.onUndo=3Dnew b(this);d.onRedo=3Dnew =
b(this)},add:function(d){var =
g=3Dthis,f,e=3Dg.editor,c,h=3De.settings,j;d=3Dd||{};d.content=3Dd.conten=
t||e.getContent({format:"raw",no_events:1});d.content=3Dd.content.replace=
(/^\s*|\s*$/g,"");j=3Dg.data[g.index>0&&(g.index=3D=3D0||g.index=3D=3Dg.d=
ata.length)?g.index-1:g.index];if(!d.initial&&j&&d.content=3D=3Dj.content=
){return =
null}if(h.custom_undo_redo_levels){if(g.data.length>h.custom_undo_redo_le=
vels){for(f=3D0;f<g.data.length-1;f++){g.data[f]=3Dg.data[f+1]}g.data.len=
gth--;g.index=3Dg.data.length}}if(h.custom_undo_redo_restore_selection&&!=
d.initial){d.bookmark=3Dc=3Dd.bookmark||e.selection.getBookmark()}if(g.in=
dex<g.data.length){g.index++}if(g.data.length=3D=3D=3D0&&!d.initial){retu=
rn =
null}g.data.length=3Dg.index+1;g.data[g.index++]=3Dd;if(d.initial){g.inde=
x=3D0}if(g.data.length=3D=3D2&&g.data[0].initial){g.data[0].bookmark=3Dc}=
g.onAdd.dispatch(g,d);e.isNotDirty=3D0;return d},undo:function(){var =
e=3Dthis,c=3De.editor,b=3Db,d;if(e.typing){e.add();e.typing=3D0}if(e.inde=
x>0){if(e.index=3D=3De.data.length&&e.index>1){d=3De.index;e.typing=3D0;i=
f(!e.add()){e.index=3Dd}--e.index}b=3De.data[--e.index];c.setContent(b.co=
ntent,{format:"raw"});c.selection.moveToBookmark(b.bookmark);e.onUndo.dis=
patch(e,b)}return b},redo:function(){var =
d=3Dthis,c=3Dd.editor,b=3Dnull;if(d.index<d.data.length-1){b=3Dd.data[++d=
.index];c.setContent(b.content,{format:"raw"});c.selection.moveToBookmark=
(b.bookmark);d.onRedo.dispatch(d,b)}return b},clear:function(){var =
b=3Dthis;b.data=3D[];b.index=3D0;b.typing=3D0;b.add({initial:true})},hasU=
ndo:function(){return =
this.index!=3D0||this.typing},hasRedo:function(){return =
this.index<this.data.length-1}})})(tinymce);(function(e){var =
b,d,a,c,f,h;b=3De.dom.Event;d=3De.isIE;a=3De.isGecko;c=3De.isOpera;f=3De.=
each;h=3De.extend;function =
g(i){i=3Di.innerHTML;i=3Di.replace(/<(img|hr|table|input|select|textarea)=
[ \>]/gi,"-");i=3Di.replace(/<[^>]+>/g,"");return i.replace(/[ =
\t\r\n]+/g,"")=3D=3D""}e.create("tinymce.ForceBlocks",{ForceBlocks:functi=
on(j){var =
k=3Dthis,l=3Dj.settings,m;k.editor=3Dj;k.dom=3Dj.dom;m=3D(l.forced_root_b=
lock||"p").toLowerCase();l.element=3Dm.toUpperCase();j.onPreInit.add(k.se=
tup,k);k.reOpera=3Dnew =
RegExp("(\\u00a0|&#160;|&nbsp;)</"+m+">","gi");k.rePadd=3Dnew =
RegExp("<p( )([^>]+)><\\/p>|<p( )([^>]+)\\/>|<p( =
)([^>]+)>\\s+<\\/p>|<p><\\/p>|<p\\/>|<p>\\s+<\\/p>".replace(/p/g,m),"gi")=
;k.reNbsp2BR1=3Dnew RegExp("<p( =
)([^>]+)>[\\s\\u00a0]+<\\/p>|<p>[\\s\\u00a0]+<\\/p>".replace(/p/g,m),"gi"=
);k.reNbsp2BR2=3Dnew =
RegExp("<%p()([^>]+)>(&nbsp;|&#160;)<\\/%p>|<%p>(&nbsp;|&#160;)<\\/%p>".r=
eplace(/%p/g,m),"gi");k.reBR2Nbsp=3Dnew RegExp("<p( )([^>]+)>\\s*<br =
\\/>\\s*<\\/p>|<p>\\s*<br \\/>\\s*<\\/p>".replace(/p/g,m),"gi");function =
i(n,p){if(c){p.content=3Dp.content.replace(k.reOpera,"</"+m+">")}p.conten=
t=3Dp.content.replace(k.rePadd,"<"+m+"$1$2$3$4$5$6>\u00a0</"+m+">");if(!d=
&&!c&&p.set){p.content=3Dp.content.replace(k.reNbsp2BR1,"<"+m+"$1$2><br =
/></"+m+">");p.content=3Dp.content.replace(k.reNbsp2BR2,"<"+m+"$1$2><br =
/></"+m+">")}else{p.content=3Dp.content.replace(k.reBR2Nbsp,"<"+m+"$1$2>\=
u00a0</"+m+">")}}j.onBeforeSetContent.add(i);j.onPostProcess.add(i);if(l.=
forced_root_block){j.onInit.add(k.forceRoots,k);j.onSetContent.add(k.forc=
eRoots,k);j.onBeforeGetContent.add(k.forceRoots,k)}},setup:function(){var=
 =
j=3Dthis,i=3Dj.editor,k=3Di.settings;if(k.forced_root_block){i.onKeyUp.ad=
d(j.forceRoots,j);i.onPreProcess.add(j.forceRoots,j)}if(k.force_br_newlin=
es){if(d){i.onKeyPress.add(function(m,p){var =
q,o=3Dm.selection;if(p.keyCode=3D=3D13&&o.getNode().nodeName!=3D"LI"){o.s=
etContent('<br id=3D"__" /> =
',{format:"raw"});q=3Dm.dom.get("__");q.removeAttribute("id");o.select(q)=
;o.collapse();return =
b.cancel(p)}})}return}if(!d&&k.force_p_newlines){i.onKeyPress.add(functio=
n(m,n){if(n.keyCode=3D=3D13&&!n.shiftKey){if(!j.insertPara(n)){b.cancel(n=
)}}});if(a){i.onKeyDown.add(function(m,n){if((n.keyCode=3D=3D8||n.keyCode=
=3D=3D46)&&!n.shiftKey){j.backspaceDelete(n,n.keyCode=3D=3D8)}})}}functio=
n l(n,m){var =
o=3Di.dom.create(m);f(n.attributes,function(p){if(p.specified&&p.nodeValu=
e){o.setAttribute(p.nodeName.toLowerCase(),p.nodeValue)}});f(n.childNodes=
,function(p){o.appendChild(p.cloneNode(true))});n.parentNode.replaceChild=
(o,n);return =
o}i.onPreProcess.add(function(m,n){f(m.dom.select("p,h1,h2,h3,h4,h5,h6,di=
v",n.node),function(o){if(g(o)){f(m.dom.select("span,em,strong,b,i",n.nod=
e),function(p){if(!p.hasChildNodes()){p.appendChild(m.getDoc().createText=
Node("\u00a0"));return =
false}})}})});if(d){if(k.element!=3D"P"){i.onKeyPress.add(function(m,n){j=
.lastElm=3Dm.selection.getNode().nodeName});i.onKeyUp.add(function(o,q){v=
ar =
s,p=3Do.selection,r=3Dp.getNode(),m=3Do.getBody();if(m.childNodes.length=3D=
=3D=3D1&&r.nodeName=3D=3D"P"){r=3Dl(r,k.element);p.select(r);p.collapse()=
;o.nodeChanged()}else{if(q.keyCode=3D=3D13&&!q.shiftKey&&j.lastElm!=3D"P"=
){s=3Do.dom.getParent(r,"p");if(s){l(s,k.element);o.nodeChanged()}}}})}}}=
,find:function(o,k,l){var =
j=3Dthis.editor,i=3Dj.getDoc().createTreeWalker(o,4,null,false),m=3D-1;wh=
ile(o=3Di.nextNode()){m++;if(k=3D=3D0&&o=3D=3Dl){return =
m}if(k=3D=3D1&&m=3D=3Dl){return o}}return =
-1},forceRoots:function(p,D){var =
u=3Dthis,p=3Du.editor,H=3Dp.getBody(),E=3Dp.getDoc(),K=3Dp.selection,v=3D=
K.getSel(),w=3DK.getRng(),I=3D-2,o,B,j,k,F=3D-16777215;var =
G,l,J,A,x,m=3DH.childNodes,z,y,q;for(z=3Dm.length-1;z>=3D0;z--){G=3Dm[z];=
if(G.nodeType=3D=3D3||(!u.dom.isBlock(G)&&G.nodeType!=3D8)){if(!l){if(G.n=
odeType!=3D3||/[^\s]/g.test(G.nodeValue)){if(I=3D=3D-2&&w){if(!d){if(w.st=
artContainer.nodeType=3D=3D1&&(y=3Dw.startContainer.childNodes[w.startOff=
set])&&y.nodeType=3D=3D1){q=3Dy.getAttribute("id");y.setAttribute("id","_=
_mce")}else{if(p.dom.getParent(w.startContainer,function(i){return =
i=3D=3D=3DH})){B=3Dw.startOffset;j=3Dw.endOffset;I=3Du.find(H,0,w.startCo=
ntainer);o=3Du.find(H,0,w.endContainer)}}}else{k=3DE.body.createTextRange=
();k.moveToElementText(H);k.collapse(1);J=3Dk.move("character",F)*-1;k=3D=
w.duplicate();k.collapse(1);A=3Dk.move("character",F)*-1;k=3Dw.duplicate(=
);k.collapse(0);x=3D(k.move("character",F)*-1)-A;I=3DA-J;o=3Dx}}l=3Dp.dom=
.create(p.settings.forced_root_block);l.appendChild(G.cloneNode(1));G.par=
entNode.replaceChild(l,G)}}else{if(l.hasChildNodes()){l.insertBefore(G,l.=
firstChild)}else{l.appendChild(G)}}}else{l=3Dnull}}if(I!=3D-2){if(!d){l=3D=
H.getElementsByTagName(p.settings.element)[0];w=3DE.createRange();if(I!=3D=
-1){w.setStart(u.find(H,1,I),B)}else{w.setStart(l,0)}if(o!=3D-1){w.setEnd=
(u.find(H,1,o),j)}else{w.setEnd(l,0)}if(v){v.removeAllRanges();v.addRange=
(w)}}else{try{w=3Dv.createRange();w.moveToElementText(H);w.collapse(1);w.=
moveStart("character",I);w.moveEnd("character",o);w.select()}catch(C){}}}=
else{if(!d&&(y=3Dp.dom.get("__mce"))){if(q){y.setAttribute("id",q)}else{y=
.removeAttribute("id")}w=3DE.createRange();w.setStartBefore(y);w.setEndBe=
fore(y);K.setRng(w)}}},getParentBlock:function(j){var =
i=3Dthis.dom;return i.getParent(j,i.isBlock)},insertPara:function(M){var =
A=3Dthis,o=3DA.editor,I=3Do.dom,N=3Do.getDoc(),R=3Do.settings,B=3Do.selec=
tion.getSel(),C=3DB.getRangeAt(0),Q=3DN.body;var =
F,G,D,K,J,l,j,m,q,i,x,P,k,p,E,H=3DI.getViewPort(o.getWin()),w,z,v;F=3DN.c=
reateRange();F.setStart(B.anchorNode,B.anchorOffset);F.collapse(true);G=3D=
N.createRange();G.setStart(B.focusNode,B.focusOffset);G.collapse(true);D=3D=
F.compareBoundaryPoints(F.START_TO_END,G)<0;K=3DD?B.anchorNode:B.focusNod=
e;J=3DD?B.anchorOffset:B.focusOffset;l=3DD?B.focusNode:B.anchorNode;j=3DD=
?B.focusOffset:B.anchorOffset;if(K=3D=3D=3Dl&&/^(TD|TH)$/.test(K.nodeName=
)){if(K.firstChild.nodeName=3D=3D"BR"){I.remove(K.firstChild)}if(K.childN=
odes.length=3D=3D0){o.dom.add(K,R.element,null,"<br =
/>");P=3Do.dom.add(K,R.element,null,"<br =
/>")}else{E=3DK.innerHTML;K.innerHTML=3D"";o.dom.add(K,R.element,null,E);=
P=3Do.dom.add(K,R.element,null,"<br =
/>")}C=3DN.createRange();C.selectNodeContents(P);C.collapse(1);o.selectio=
n.setRng(C);return =
false}if(K=3D=3DQ&&l=3D=3DQ&&Q.firstChild&&o.dom.isBlock(Q.firstChild)){K=
=3Dl=3DK.firstChild;J=3Dj=3D0;F=3DN.createRange();F.setStart(K,0);G=3DN.c=
reateRange();G.setStart(l,0)}K=3DK.nodeName=3D=3D"HTML"?N.body:K;K=3DK.no=
deName=3D=3D"BODY"?K.firstChild:K;l=3Dl.nodeName=3D=3D"HTML"?N.body:l;l=3D=
l.nodeName=3D=3D"BODY"?l.firstChild:l;m=3DA.getParentBlock(K);q=3DA.getPa=
rentBlock(l);i=3Dm?m.nodeName:R.element;if(A.dom.getParent(m,"ol,ul,pre")=
){return =
true}if(m&&(m.nodeName=3D=3D"CAPTION"||/absolute|relative|fixed/gi.test(I=
.getStyle(m,"position",1)))){i=3DR.element;m=3Dnull}if(q&&(q.nodeName=3D=3D=
"CAPTION"||/absolute|relative|fixed/gi.test(I.getStyle(m,"position",1))))=
{i=3DR.element;q=3Dnull}if(/(TD|TABLE|TH|CAPTION)/.test(i)||(m&&i=3D=3D"D=
IV"&&/left|right/gi.test(I.getStyle(m,"float",1)))){i=3DR.element;m=3Dq=3D=
null}x=3D(m&&m.nodeName=3D=3Di)?m.cloneNode(0):o.dom.create(i);P=3D(q&&q.=
nodeName=3D=3Di)?q.cloneNode(0):o.dom.create(i);P.removeAttribute("id");i=
f(/^(H[1-6])$/.test(i)&&K.nodeValue&&J=3D=3DK.nodeValue.length){P=3Do.dom=
.create(R.element)}E=3Dk=3DK;do{if(E=3D=3DQ||E.nodeType=3D=3D9||A.dom.isB=
lock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.nodeName)){break}k=3DE}while((E=3D=
E.previousSibling?E.previousSibling:E.parentNode));E=3Dp=3Dl;do{if(E=3D=3D=
Q||E.nodeType=3D=3D9||A.dom.isBlock(E)||/(TD|TABLE|TH|CAPTION)/.test(E.no=
deName)){break}p=3DE}while((E=3DE.nextSibling?E.nextSibling:E.parentNode)=
);if(k.nodeName=3D=3Di){F.setStart(k,0)}else{F.setStartBefore(k)}F.setEnd=
(K,J);x.appendChild(F.cloneContents()||N.createTextNode(""));try{G.setEnd=
After(p)}catch(L){}G.setStart(l,j);P.appendChild(G.cloneContents()||N.cre=
ateTextNode(""));C=3DN.createRange();if(!k.previousSibling&&k.parentNode.=
nodeName=3D=3Di){C.setStartBefore(k.parentNode)}else{if(F.startContainer.=
nodeName=3D=3Di&&F.startOffset=3D=3D0){C.setStartBefore(F.startContainer)=
}else{C.setStart(F.startContainer,F.startOffset)}}if(!p.nextSibling&&p.pa=
rentNode.nodeName=3D=3Di){C.setEndAfter(p.parentNode)}else{C.setEnd(G.end=
Container,G.endOffset)}C.deleteContents();if(c){o.getWin().scrollTo(0,H.y=
)}if(x.firstChild&&x.firstChild.nodeName=3D=3Di){x.innerHTML=3Dx.firstChi=
ld.innerHTML}if(P.firstChild&&P.firstChild.nodeName=3D=3Di){P.innerHTML=3D=
P.firstChild.innerHTML}if(g(x)){x.innerHTML=3D"<br />"}function =
O(y,s){var =
r=3D[],T,S,t;y.innerHTML=3D"";if(R.keep_styles){S=3Ds;do{if(/^(SPAN|STRON=
G|B|EM|I|FONT|STRIKE|U)$/.test(S.nodeName)){T=3DS.cloneNode(false);I.setA=
ttrib(T,"id","");r.push(T)}}while(S=3DS.parentNode)}if(r.length>0){for(t=3D=
r.length-1,T=3Dy;t>=3D0;t--){T=3DT.appendChild(r[t])}r[0].innerHTML=3Dc?"=
&nbsp;":"<br />";return r[0]}else{y.innerHTML=3Dc?"&nbsp;":"<br =
/>"}}if(g(P)){v=3DO(P,l)}if(c&&parseFloat(opera.version())<9.5){C.insertN=
ode(x);C.insertNode(P)}else{C.insertNode(P);C.insertNode(x)}P.normalize()=
;x.normalize();function u(r){return =
N.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false).nextNode()||r}C=3DN=
.createRange();C.selectNodeContents(a?u(v||P):v||P);C.collapse(1);B.remov=
eAllRanges();B.addRange(C);w=3Do.dom.getPos(P).y;z=3DP.clientHeight;if(w<=
H.y||w+z>H.y+H.h){o.getWin().scrollTo(0,w<H.y?w:w-H.h+25)}return =
false},backspaceDelete:function(l,u){var =
x=3Dthis,k=3Dx.editor,p=3Dk.getBody(),j,m=3Dk.selection,i=3Dm.getRng(),o=3D=
i.startContainer,j,q,s;if(o&&k.dom.isBlock(o)&&!/^(TD|TH)$/.test(o.nodeNa=
me)&&u){if(o.childNodes.length=3D=3D0||(o.childNodes.length=3D=3D1&&o.fir=
stChild.nodeName=3D=3D"BR")){j=3Do;while((j=3Dj.previousSibling)&&!k.dom.=
isBlock(j)){}if(j){if(o!=3Dp.firstChild){q=3Dk.dom.doc.createTreeWalker(j=
,NodeFilter.SHOW_TEXT,null,false);while(s=3Dq.nextNode()){j=3Ds}i=3Dk.get=
Doc().createRange();i.setStart(j,j.nodeValue?j.nodeValue.length:0);i.setE=
nd(j,j.nodeValue?j.nodeValue.length:0);m.setRng(i);k.dom.remove(o)}return=
 b.cancel(l)}}}function v(n){var =
r;n=3Dn.target;if(n&&n.parentNode&&n.nodeName=3D=3D"BR"&&(j=3Dx.getParent=
Block(n))){r=3Dn.previousSibling;b.remove(p,"DOMNodeInserted",v);if(r&&r.=
nodeType=3D=3D3&&/\s+$/.test(r.nodeValue)){return}if(n.previousSibling||n=
.nextSibling){k.dom.remove(n)}}}b._add(p,"DOMNodeInserted",v);window.setT=
imeout(function(){b._remove(p,"DOMNodeInserted",v)},1)}})})(tinymce);(fun=
ction(c){var =
b=3Dc.DOM,a=3Dc.dom.Event,d=3Dc.each,e=3Dc.extend;c.create("tinymce.Contr=
olManager",{ControlManager:function(f,j){var =
h=3Dthis,g;j=3Dj||{};h.editor=3Df;h.controls=3D{};h.onAdd=3Dnew =
c.util.Dispatcher(h);h.onPostRender=3Dnew =
c.util.Dispatcher(h);h.prefix=3Dj.prefix||f.id+"_";h._cls=3D{};h.onPostRe=
nder.add(function(){d(h.controls,function(i){i.postRender()})})},get:func=
tion(f){return =
this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){v=
ar g=3Dnull;if(g=3Dthis.get(h)){g.setActive(f)}return =
g},setDisabled:function(h,f){var =
g=3Dnull;if(g=3Dthis.get(h)){g.setDisabled(f)}return =
g},add:function(g){var =
f=3Dthis;if(g){f.controls[g.id]=3Dg;f.onAdd.dispatch(g,f)}return =
g},createControl:function(i){var =
h,g=3Dthis,f=3Dg.editor;d(f.plugins,function(j){if(j.createControl){h=3Dj=
.createControl(i,g);if(h){return =
false}}});switch(i){case"|":case"separator":return =
g.createSeparator()}if(!h&&f.buttons&&(h=3Df.buttons[i])){return =
g.createButton(i,h)}return g.add(h)},createDropMenu:function(f,n,h){var =
m=3Dthis,i=3Dm.editor,j,g,k,l;n=3De({"class":"mceDropDown",constrain:i.se=
ttings.constrain_menus},n);n["class"]=3Dn["class"]+" =
"+i.getParam("skin")+"Skin";if(k=3Di.getParam("skin_variant")){n["class"]=
+=3D" =
"+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)=
}f=3Dm.prefix+f;l=3Dh||m._cls.dropmenu||c.ui.DropMenu;j=3Dm.controls[f]=3D=
new l(f,n);j.onAddItem.add(function(r,q){var =
p=3Dq.settings;p.title=3Di.getLang(p.title,p.title);if(!p.onclick){p.oncl=
ick=3Dfunction(o){i.execCommand(p.cmd,p.ui||false,p.value)}}});i.onRemove=
.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.fo=
cus();g=3Di.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){=
i.selection.moveToBookmark(g);g=3D0}})}return =
m.add(j)},createListBox:function(m,i,l){var =
h=3Dthis,g=3Dh.editor,j,k,f;if(h.get(m)){return =
null}i.title=3Dg.translate(i.title);i.scope=3Di.scope||g;if(!i.onselect){=
i.onselect=3Dfunction(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=3D=
e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=3D=
h.prefix+m;if(g.settings.use_native_selects){k=3Dnew =
c.ui.NativeListBox(m,i)}else{f=3Dl||h._cls.listbox||c.ui.ListBox;k=3Dnew =
f(m,i)}h.controls[m]=3Dk;if(c.isWebKit){k.onPostRender.add(function(p,o){=
a.add(o,"mousedown",function(){g.bookmark=3Dg.selection.getBookmark("simp=
le")});a.add(o,"focus",function(){g.selection.moveToBookmark(g.bookmark);=
g.bookmark=3Dnull})})}if(k.hideMenu){g.onMouseDown.add(k.hideMenu,k)}retu=
rn h.add(k)},createButton:function(m,i,l){var =
h=3Dthis,g=3Dh.editor,j,k,f;if(h.get(m)){return =
null}i.title=3Dg.translate(i.title);i.label=3Dg.translate(i.label);i.scop=
e=3Di.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=3Dfunction(){g.ex=
ecCommand(i.cmd,i.ui||false,i.value)}}i=3De({title:i.title,"class":"mce_"=
+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_m=
anager:h},i);m=3Dh.prefix+m;if(i.menu_button){f=3Dl||h._cls.menubutton||c=
.ui.MenuButton;k=3Dnew =
f(m,i);g.onMouseDown.add(k.hideMenu,k)}else{f=3Dh._cls.button||c.ui.Butto=
n;k=3Dnew f(m,i)}return =
h.add(k)},createMenuButton:function(h,f,g){f=3Df||{};f.menu_button=3D1;re=
turn this.createButton(h,f,g)},createSplitButton:function(m,i,l){var =
h=3Dthis,g=3Dh.editor,j,k,f;if(h.get(m)){return =
null}i.title=3Dg.translate(i.title);i.scope=3Di.scope||g;if(!i.onclick){i=
.onclick=3Dfunction(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i=
.onselect){i.onselect=3Dfunction(n){g.execCommand(i.cmd,i.ui||false,n||i.=
value)}}i=3De({title:i.title,"class":"mce_"+m,scope:i.scope,control_manag=
er:h},i);m=3Dh.prefix+m;f=3Dl||h._cls.splitbutton||c.ui.SplitButton;k=3Dh=
.add(new f(m,i));g.onMouseDown.add(k.hideMenu,k);return =
k},createColorSplitButton:function(f,n,h){var =
l=3Dthis,j=3Dl.editor,i,k,m,g;if(l.get(f)){return =
null}n.title=3Dj.translate(n.title);n.scope=3Dn.scope||j;if(!n.onclick){n=
.onclick=3Dfunction(o){if(c.isIE){g=3Dj.selection.getBookmark(1)}j.execCo=
mmand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=3Dfunctio=
n(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=3De({title:n.title,"c=
lass":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_co=
lors_title:j.getLang("more_colors")},n);f=3Dl.prefix+f;m=3Dh||l._cls.colo=
rsplitbutton||c.ui.ColorSplitButton;k=3Dnew =
m(f,n);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destro=
y()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=3Dj.selection.ge=
tBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookma=
rk(g);g=3D0}})}return l.add(k)},createToolbar:function(k,h,j){var =
i,g=3Dthis,f;k=3Dg.prefix+k;f=3Dj||g._cls.toolbar||c.ui.Toolbar;i=3Dnew =
f(k,h);if(g.get(k)){return null}return =
g.add(i)},createSeparator:function(g){var =
f=3Dg||this._cls.separator||c.ui.Separator;return new =
f()},setControlType:function(g,f){return =
this._cls[g.toLowerCase()]=3Df},destroy:function(){d(this.controls,functi=
on(f){f.destroy()});this.controls=3Dnull}})})(tinymce);(function(d){var =
a=3Dd.util.Dispatcher,e=3Dd.each,c=3Dd.isIE,b=3Dd.isOpera;d.create("tinym=
ce.WindowManager",{WindowManager:function(f){var =
g=3Dthis;g.editor=3Df;g.onOpen=3Dnew a(g);g.onClose=3Dnew =
a(g);g.params=3D{};g.features=3D{}},open:function(z,h){var =
v=3Dthis,k=3D"",n,m,i=3Dv.editor.settings.dialog_type=3D=3D"modal",q,o,j,=
g=3Dd.DOM.getViewPort(),r;z=3Dz||{};h=3Dh||{};o=3Db?g.w:screen.width;j=3D=
b?g.h:screen.height;z.name=3Dz.name||"mc_"+new =
Date().getTime();z.width=3DparseInt(z.width||320);z.height=3DparseInt(z.h=
eight||240);z.resizable=3Dtrue;z.left=3Dz.left||parseInt(o/2)-(z.width/2)=
;z.top=3Dz.top||parseInt(j/2)-(z.height/2);h.inline=3Dfalse;h.mce_width=3D=
z.width;h.mce_height=3Dz.height;h.mce_auto_focus=3Dz.auto_focus;if(i){if(=
c){z.center=3Dtrue;z.help=3Dfalse;z.dialogWidth=3Dz.width+"px";z.dialogHe=
ight=3Dz.height+"px";z.scroll=3Dz.scrollbars||false}}e(z,function(p,f){if=
(d.is(p,"boolean")){p=3Dp?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i)=
{k+=3D(k?";":"")+f+":"+p}else{k+=3D(k?",":"")+f+"=3D"+p}}});v.features=3D=
z;v.params=3Dh;v.onOpen.dispatch(v,z,h);r=3Dz.url||z.file;r=3Dd._addVer(r=
);try{if(c&&i){q=3D1;window.showModalDialog(r,window,k)}else{q=3Dwindow.o=
pen(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked")=
)}},close:function(f){f.close();this.onClose.dispatch(this)},createInstan=
ce:function(i,h,g,m,l,k){var j=3Dd.resolve(i);return new =
j(h,g,m,l,k)},confirm:function(h,f,i,g){g=3Dg||window;f.call(i||this,g.co=
nfirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){v=
ar =
i=3Dthis;g=3Dg||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.=
call(j||i)}},_decode:function(f){return =
d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Command=
Manager=3Dfunction(){var c=3D{},b=3D{},d=3D{};function =
e(i,h,g,f){if(typeof(h)=3D=3D"string"){h=3D[h]}a.each(h,function(j){i[j.t=
oLowerCase()]=3D{func:g,scope:f}})}a.extend(this,{add:function(h,g,f){e(c=
,h,g,f)},addQueryStateHandler:function(h,g,f){e(b,h,g,f)},addQueryValueHa=
ndler:function(h,g,f){e(d,h,g,f)},execCommand:function(g,j,i,h,f){if(j=3D=
c[j.toLowerCase()]){if(j.func.call(g||j.scope,i,h,f)!=3D=3Dfalse){return =
true}}},queryCommandValue:function(){if(cmd=3Dd[cmd.toLowerCase()]){retur=
n =
cmd.func.call(scope||cmd.scope,ui,value,args)}},queryCommandState:functio=
n(){if(cmd=3Db[cmd.toLowerCase()]){return =
cmd.func.call(scope||cmd.scope,ui,value,args)}}})};a.GlobalCommands=3Dnew=
 a.CommandManager()})(tinymce);(function(b){function a(i,d,h,m){var =
j,g,e,l,f;function k(p,o){do{if(p.parentNode=3D=3Do){return =
p}p=3Dp.parentNode}while(p)}function =
c(o){m(o);b.walk(o,m,"childNodes")}j=3Di.findCommonAncestor(d,h);e=3Dk(d,=
j)||d;l=3Dk(h,j)||h;for(g=3Dd;g&&g!=3De;g=3Dg.parentNode){for(f=3Dg.nextS=
ibling;f;f=3Df.nextSibling){c(f)}}if(e!=3Dl){for(g=3De.nextSibling;g&&g!=3D=
l;g=3Dg.nextSibling){c(g)}}else{c(e)}for(g=3Dh;g&&g!=3Dl;g=3Dg.parentNode=
){for(f=3Dg.previousSibling;f;f=3Df.previousSibling){c(f)}}}b.GlobalComma=
nds.add("RemoveFormat",function(){var =
m=3Dthis,l=3Dm.dom,u=3Dm.selection,d=3Du.getRng(1),e=3D[],h,f,j,q,g,o,c,i=
;function k(s){var =
r;l.getParent(s,function(v){if(l.is(v,m.getParam("removeformat_selector")=
)){r=3Dv}return l.isBlock(v)},m.getBody());return r}function =
p(r){if(l.is(r,m.getParam("removeformat_selector"))){e.push(r)}}function =
t(r){p(r);b.walk(r,p,"childNodes")}h=3Du.getBookmark();q=3Dd.startContain=
er;o=3Dd.endContainer;g=3Dd.startOffset;c=3Dd.endOffset;q=3Dq.nodeType=3D=
=3D1?q.childNodes[Math.min(g,q.childNodes.length-1)]:q;o=3Do.nodeType=3D=3D=
1?o.childNodes[Math.min(g=3D=3Dc?c:c-1,o.childNodes.length-1)]:o;if(q=3D=3D=
o){f=3Dk(q);if(q.nodeType=3D=3D3){if(f&&f.nodeType=3D=3D1){i=3Dq.splitTex=
t(g);i.splitText(c-g);l.split(f,i);u.moveToBookmark(h)}return}t(l.split(f=
,q)||q)}else{f=3Dk(q);j=3Dk(o);if(f){if(q.nodeType=3D=3D3){if(g=3D=3Dq.no=
deValue.length){q.nodeValue+=3D"\uFEFF"}q=3Dq.splitText(g)}}if(j){if(o.no=
deType=3D=3D3){o.splitText(c)}}if(f&&f=3D=3Dj){l.replace(l.create("span",=
{id:"__end"},o.cloneNode(true)),o)}if(f){f=3Dl.split(f,q)}else{f=3Dq}if(i=
=3Dl.get("__end")){o=3Di;j=3Dk(o)}if(j){j=3Dl.split(j,o)}else{j=3Do}a(l,f=
,j,p);if(q.nodeValue=3D=3D"\uFEFF"){q.nodeValue=3D""}t(o);t(q)}b.each(e,f=
unction(r){l.remove(r,1)});l.remove("__end",1);u.moveToBookmark(h)})})(ti=
nymce);(function(a){a.GlobalCommands.add("mceBlockQuote",function(){var =
j=3Dthis,o=3Dj.selection,f=3Dj.dom,l,k,e,d,p,c,m,h,b;function =
g(i){return f.getParent(i,function(q){return =
q.nodeName=3D=3D=3D"BLOCKQUOTE"})}l=3Df.getParent(o.getStart(),f.isBlock)=
;k=3Df.getParent(o.getEnd(),f.isBlock);if(p=3Dg(l)){if(l!=3Dk||l.childNod=
es.length>1||(l.childNodes.length=3D=3D1&&l.firstChild.nodeName!=3D"BR"))=
{d=3Do.getBookmark()}if(g(k)){m=3Dp.cloneNode(false);while(e=3Dk.nextSibl=
ing){m.appendChild(e.parentNode.removeChild(e))}}if(m){f.insertAfter(m,p)=
}b=3Do.getSelectedBlocks(l,k);for(h=3Db.length-1;h>=3D0;h--){f.insertAfte=
r(b[h],p)}if(/^\s*$/.test(p.innerHTML)){f.remove(p,1)}if(m&&/^\s*$/.test(=
m.innerHTML)){f.remove(m,1)}if(!d){if(!a.isIE){c=3Dj.getDoc().createRange=
();c.setStart(l,0);c.setEnd(l,0);o.setRng(c)}else{o.select(l);o.collapse(=
0);if(f.getParent(o.getStart(),f.isBlock)!=3Dl){c=3Do.getRng();c.move("ch=
aracter",-1);c.select()}}}else{j.selection.moveToBookmark(d)}return}if(a.=
isIE&&!l&&!k){j.getDoc().execCommand("Indent");e=3Dg(o.getNode());e.style=
.margin=3De.dir=3D"";return}if(!l||!k){return}if(l!=3Dk||l.childNodes.len=
gth>1||(l.childNodes.length=3D=3D1&&l.firstChild.nodeName!=3D"BR")){d=3Do=
.getBookmark()}a.each(o.getSelectedBlocks(g(o.getStart()),g(o.getEnd())),=
function(i){if(i.nodeName=3D=3D"BLOCKQUOTE"&&!p){p=3Di;return}if(!p){p=3D=
f.create("blockquote");i.parentNode.insertBefore(p,i)}if(i.nodeName=3D=3D=
"BLOCKQUOTE"&&p){e=3Di.firstChild;while(e){p.appendChild(e.cloneNode(true=
));e=3De.nextSibling}f.remove(i);return}p.appendChild(f.remove(i))});if(!=
d){if(!a.isIE){c=3Dj.getDoc().createRange();c.setStart(l,0);c.setEnd(l,0)=
;o.setRng(c)}else{o.select(l);o.collapse(1)}}else{o.moveToBookmark(d)}})}=
)(tinymce);(function(a){a.each(["Cut","Copy","Paste"],function(b){a.Globa=
lCommands.add(b,function(){var =
c=3Dthis,e=3Dc.getDoc();try{e.execCommand(b,false,null);if(!e.queryComman=
dSupported(b)){throw"Error"}}catch(d){c.windowManager.alert(c.getLang("cl=
ipboard_no_support"))}})})})(tinymce);(function(a){a.GlobalCommands.add("=
InsertHorizontalRule",function(){if(a.isOpera){return =
this.getDoc().execCommand("InsertHorizontalRule",false,"")}this.selection=
.setContent("<hr />")})})(tinymce);(function(){var =
a=3Dtinymce.GlobalCommands;a.add(["mceEndUndoLevel","mceAddUndoLevel"],fu=
nction(){this.undoManager.add()});a.add("Undo",function(){var =
b=3Dthis;if(b.settings.custom_undo_redo){b.undoManager.undo();b.nodeChang=
ed();return true}return false});a.add("Redo",function(){var =
b=3Dthis;if(b.settings.custom_undo_redo){b.undoManager.redo();b.nodeChang=
ed();return true}return false})})();
------=_NextPart_000_0001_01CB565C.A52582B0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://apd.hlcommission.org/javascripts/datepicker.js?1284589638

/*
        DatePicker v4.4 by frequency-decoder.com

        Released under a creative commons Attribution-ShareAlike 2.5 =
license (http://creativecommons.org/licenses/by-sa/2.5/)

        Please credit frequency-decoder in any derivative work - thanks.
       =20
        You are free:

        * to copy, distribute, display, and perform the work
        * to make derivative works
        * to make commercial use of the work

        Under the following conditions:

                by Attribution.
                --------------
                You must attribute the work in the manner specified by =
the author or licensor.

                sa
                --
                Share Alike. If you alter, transform, or build upon this =
work, you may distribute the resulting work only under a license =
identical to this one.

        * For any reuse or distribution, you must make clear to others =
the license terms of this work.
        * Any of these conditions can be waived if you get permission =
from the copyright holder.
*/
var datePickerController;

(function() {

// Detect the browser language
datePicker.languageinfo =3D navigator.language ? navigator.language : =
navigator.userLanguage;
datePicker.languageinfo =3D datePicker.languageinfo ? =
datePicker.languageinfo.toLowerCase().replace(/-[a-z]+$/, "") : 'en';

// Load the appropriate language file
var scriptFiles =3D =
document.getElementsByTagName('head')[0].getElementsByTagName('script');
var loc =3D scriptFiles[scriptFiles.length - 1].src.substr(0, =
scriptFiles[scriptFiles.length - 1].src.lastIndexOf("/")) + "/lang/" + =
datePicker.languageinfo + ".js";

var script  =3D document.createElement('script');
script.type =3D "text/javascript";
script.src  =3D loc;
script.setAttribute("charset", "utf-8");
/*@cc_on
/*@if(@_win32)
        var bases =3D document.getElementsByTagName('base');
        if (bases.length && bases[0].childNodes.length) {
                bases[0].appendChild(script);
        } else {
                =
document.getElementsByTagName('head')[0].appendChild(script);
        };
@else @*/
document.getElementsByTagName('head')[0].appendChild(script);
/*@end
@*/
script  =3D null;

// Defaults should the locale file not load
datePicker.months       =3D =
["January","February","March","April","May","June","July","August","Septe=
mber","October","November","December"];
datePicker.fullDay      =3D =
["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];=

datePicker.titles       =3D ["Previous month","Next month","Previous =
year","Next year", "Today", "Show Calendar"];

datePicker.getDaysPerMonth =3D function(nMonth, nYear) {
        nMonth =3D (nMonth + 12) % 12;
        return (((0 =3D=3D (nYear%4)) && ((0 !=3D (nYear%100)) || (0 =
=3D=3D (nYear%400)))) && nMonth =3D=3D 1) ? 29: =
[31,28,31,30,31,30,31,31,30,31,30,31][nMonth];
};

function datePicker(options) {

        this.defaults          =3D {};
        for(opt in options) { this[opt] =3D this.defaults[opt] =3D =
options[opt]; };
       =20
        this.date              =3D new Date();
        this.yearinc           =3D 1;
        this.timer             =3D null;
        this.pause             =3D 1000;
        this.timerSet          =3D false;
        this.fadeTimer         =3D null;
        this.interval          =3D new Date();
        this.firstDayOfWeek    =3D this.defaults.firstDayOfWeek =3D =
this.dayInc =3D this.monthInc =3D this.yearInc =3D this.opacity =3D =
this.opacityTo =3D 0;
        this.dateSet           =3D null;
        this.visible           =3D false;
        this.disabledDates     =3D [];
        this.enabledDates      =3D [];
        this.nbsp              =3D String.fromCharCode( 160 );
        var o =3D this;

        o.events =3D {
                onblur:function(e) {
                        o.removeKeyboardEvents();
                },
                onfocus:function(e) {
                        o.addKeyboardEvents();
                },
                onkeydown: function (e) {
                        o.stopTimer();
                        if(!o.visible) return false;

                        if(e =3D=3D null) e =3D =
document.parentWindow.event;
                        var kc =3D e.keyCode ? e.keyCode : e.charCode;

                        if( kc =3D=3D 13 ) {
                                // close (return)
                                var td =3D document.getElementById(o.id =
+ "-date-picker-hover");
                                if(!td || =
td.className.search(/out-of-range|day-disabled/) !=3D -1) return =
o.killEvent(e);
                                o.returnFormattedDate();
                                o.hide();
                                return o.killEvent(e);
                        } else if(kc =3D=3D 27) {
                                // close (esc)
                                o.hide();
                                return o.killEvent(e);
                        } else if(kc =3D=3D 32 || kc =3D=3D 0) {
                                // today (space)
                                o.date =3D  new Date();
                                o.updateTable();
                                return o.killEvent(e);
                        };

                        // Internet Explorer fires the keydown event =
faster than the JavaScript engine can
                        // update the interface. The following attempts =
to fix this.
                        /*@cc_on
                        @if(@_win32)
                                if(new Date().getTime() - =
o.interval.getTime() < 100) return o.killEvent(e);
                                o.interval =3D new Date();
                        @end
                        @*/

                        if ((kc > 49 && kc < 56) || (kc > 97 && kc < =
104)) {
                                if (kc > 96) kc -=3D (96-48);
                                kc -=3D 49;
                                o.firstDayOfWeek =3D (o.firstDayOfWeek + =
kc) % 7;
                                o.updateTable();
                                return o.killEvent(e);
                        };

                        if ( kc < 37 || kc > 40 ) return true;

                        var d =3D new Date( o.date ).valueOf();

                        if ( kc =3D=3D 37 ) {
                                // ctrl + left =3D previous month
                                if( e.ctrlKey ) {
                                        d =3D new Date( o.date );
                                        d.setDate( Math.min(d.getDate(), =
datePicker.getDaysPerMonth(d.getMonth() - 1,d.getFullYear())) );
                                        d.setMonth( d.getMonth() - 1 );
                                } else {
                                        d =3D new Date( =
o.date.getFullYear(), o.date.getMonth(), o.date.getDate() - 1 );
                                };
                        } else if ( kc =3D=3D 39 ) {
                                // ctrl + right =3D next month
                                if( e.ctrlKey ) {
                                        d =3D new Date( o.date );
                                        d.setDate( Math.min(d.getDate(), =
datePicker.getDaysPerMonth(d.getMonth() + 1,d.getFullYear())) );
                                        d.setMonth( d.getMonth() + 1 );
                                } else {
                                        d =3D new Date( =
o.date.getFullYear(), o.date.getMonth(), o.date.getDate() + 1 );
                                };
                        } else if ( kc =3D=3D 38 ) {
                                // ctrl + up =3D next year
                                if( e.ctrlKey ) {
                                        d =3D new Date( o.date );
                                        d.setDate( Math.min(d.getDate(), =
datePicker.getDaysPerMonth(d.getMonth(),d.getFullYear() + 1)) );
                                        d.setFullYear( d.getFullYear() + =
1 );
                                } else {
                                        d =3D new Date( =
o.date.getFullYear(), o.date.getMonth(), o.date.getDate() - 7 );
                                };
                        } else if ( kc =3D=3D 40 ) {
                                // ctrl + down =3D prev year
                                if( e.ctrlKey ) {
                                        d =3D new Date( o.date );
                                        d.setDate( Math.min(d.getDate(), =
datePicker.getDaysPerMonth(d.getMonth(),d.getFullYear() - 1)) );
                                        d.setFullYear( d.getFullYear() - =
1 );
                                } else {
                                        d =3D new Date( =
o.date.getFullYear(), o.date.getMonth(), o.date.getDate() + 7 );
                                };
                        };

                        var tmpDate =3D new Date(d);

                        if(o.outOfRange(tmpDate)) return o.killEvent(e);
                       =20
                        var cacheDate =3D new Date(o.date);
                        o.date =3D tmpDate;

                        if(cacheDate.getFullYear() !=3D =
o.date.getFullYear() || cacheDate.getMonth() !=3D o.date.getMonth()) =
o.updateTable();
                        else {
                                o.disableTodayButton();
                                var tds =3D =
o.table.getElementsByTagName('td');
                                var txt;
                                var start =3D o.date.getDate() - 6;
                                if(start < 0) start =3D 0;

                                for(var i =3D start, td; td =3D tds[i]; =
i++) {
                                        txt =3D =
Number(td.firstChild.nodeValue);
                                        if(isNaN(txt) || txt !=3D =
o.date.getDate()) continue;
                                        o.removeHighlight();
                                        td.id =3D o.id + =
"-date-picker-hover";
                                        td.className =3D =
td.className.replace(/date-picker-hover/g, "") + " date-picker-hover";
                                };
                        };
                        return o.killEvent(e);
                },
                gotoToday: function(e) {
                        o.date =3D new Date();
                        o.updateTable();
                        return o.killEvent(e);
                },
                onmousedown: function(e) {
                        if ( e =3D=3D null ) e =3D =
document.parentWindow.event;
                        var el =3D e.target !=3D null ? e.target : =
e.srcElement;

                        var found =3D false;
                        while(el.parentNode) {
                                if(el.id && (el.id =3D=3D "fd-"+o.id || =
el.id =3D=3D "fd-but-"+o.id)) {
                                        found =3D true;
                                        break;
                                };
                                try {
                                        el =3D el.parentNode;
                                } catch(err) {
                                        break;
                                };
                        };
                        if(found) return true;
                        o.stopTimer();
                        datePickerController.hideAll();
                },
                onmouseover: function(e) {
                        o.stopTimer();
                        var txt =3D this.firstChild.nodeValue;
                        if(this.className =3D=3D "out-of-range" || =
txt.search(/^[\d]+$/) =3D=3D -1) return;
                       =20
                        o.removeHighlight();
                       =20
                        this.id =3D o.id+"-date-picker-hover";
                        this.className =3D =
this.className.replace(/date-picker-hover/g, "") + " date-picker-hover";
                       =20
                        o.date.setDate(this.firstChild.nodeValue);
                        o.disableTodayButton();
                },
                onclick: function(e) {
                        if(o.opacity !=3D o.opacityTo || =
this.className.search(/out-of-range|day-disabled/) !=3D -1) return =
false;
                        if ( e =3D=3D null ) e =3D =
document.parentWindow.event;
                        var el =3D e.target !=3D null ? e.target : =
e.srcElement;
                        while ( el.nodeType !=3D 1 ) el =3D =
el.parentNode;
                        var d =3D new Date( o.date );
                        var txt =3D el.firstChild.data;
                        if(txt.search(/^[\d]+$/) =3D=3D -1) return;
                        var n =3D Number( txt );
                        if(isNaN(n)) { return true; };
                        d.setDate( n );
                        o.date =3D d;
                        o.returnFormattedDate();
                        if(!o.staticPos) o.hide();
                        o.stopTimer();
                        return o.killEvent(e);
                },
                incDec: function(e) {
                        if ( e =3D=3D null ) e =3D =
document.parentWindow.event;
                        var el =3D e.target !=3D null ? e.target : =
e.srcElement;

                        if(el && el.className && =
el.className.search('fd-disabled') !=3D -1) { return false; }
                        datePickerController.addEvent(document, =
"mouseup", o.events.clearTimer);
                        o.timerInc      =3D 800;
                        o.dayInc        =3D arguments[1];
                        o.yearInc       =3D arguments[2];
                        o.monthInc      =3D arguments[3];
                        o.timerSet      =3D true;

                        o.updateTable();
                        return true;
                },
                clearTimer: function(e) {
                        o.stopTimer();
                        o.timerInc      =3D 1000;
                        o.yearInc       =3D 0;
                        o.monthInc      =3D 0;
                        o.dayInc        =3D 0;
                        datePickerController.removeEvent(document, =
"mouseup", o.events.clearTimer);
                }
        };
        o.stopTimer =3D function() {
                o.timerSet =3D false;
                window.clearTimeout(o.timer);
        };
        o.removeHighlight =3D function() {
                if(document.getElementById(o.id+"-date-picker-hover")) {
                        =
document.getElementById(o.id+"-date-picker-hover").className =3D =
document.getElementById(o.id+"-date-picker-hover").className.replace("dat=
e-picker-hover", "");
                        =
document.getElementById(o.id+"-date-picker-hover").id =3D "";
                };
        };
        o.reset =3D function() {
                for(def in o.defaults) { o[def] =3D o.defaults[def]; };
        };
        o.setOpacity =3D function(op) {
                o.div.style.opacity =3D op/100;
                o.div.style.filter =3D 'alpha(opacity=3D' + op + ')';
                o.opacity =3D op;
        };
        o.fade =3D function() {
                window.clearTimeout(o.fadeTimer);
                o.fadeTimer =3D null;
                delete(o.fadeTimer);
               =20
                var diff =3D Math.round(o.opacity + ((o.opacityTo - =
o.opacity) / 4));

                o.setOpacity(diff);

                if(Math.abs(o.opacityTo - diff) > 3 && =
!o.noTransparency) {
                        o.fadeTimer =3D window.setTimeout(o.fade, 50);
                } else {
                        o.setOpacity(o.opacityTo);
                        if(o.opacityTo =3D=3D 0) {
                                o.div.style.display =3D "none";
                                o.visible =3D false;
                        } else {
                                o.visible =3D true;
                        };
                };
        };
        o.killEvent =3D function(e) {
                e =3D e || document.parentWindow.event;
               =20
                if(e.stopPropagation) {
                        e.stopPropagation();
                        e.preventDefault();
                };
               =20
                /*@cc_on
                @if(@_win32)
                e.cancelBubble =3D true;
                e.returnValue =3D false;
                @end
                @*/
                return false;
        };
        o.getElem =3D function() {
                return document.getElementById(o.id.replace(/^fd-/, '')) =
|| false;
        };
        o.setRangeLow =3D function(range) {
                =
if(String(range).search(/^(\d\d?\d\d)(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[0=
1])$/) =3D=3D -1) range =3D '';
                o.low =3D o.defaults.low =3D range;
                if(o.staticPos) o.updateTable(true);
        };
        o.setRangeHigh =3D function(range) {
                =
if(String(range).search(/^(\d\d?\d\d)(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[0=
1])$/) =3D=3D -1) range =3D '';
                o.high =3D o.defaults.high =3D range;
                if(o.staticPos) o.updateTable(true);
        };
        o.setDisabledDays =3D function(dayArray) {
                o.disableDays =3D o.defaults.disableDays =3D dayArray;
                if(o.staticPos) o.updateTable(true);
        };
        o.setDisabledDates =3D function(dateArray) {
                var fin =3D [];
                for(var i =3D dateArray.length; i-- ;) {
                        =
if(dateArray[i].match(/^(\d\d\d\d|\*\*\*\*)(0[1-9]|1[012]|\*\*)(0[1-9]|[1=
2][0-9]|3[01])$/) !=3D -1) fin[fin.length] =3D dateArray[i];
                };
                if(fin.length) {
                        o.disabledDates =3D fin;
                        o.enabledDates =3D [];
                        if(o.staticPos) o.updateTable(true);
                };
        };
        o.setEnabledDates =3D function(dateArray) {
                var fin =3D [];
                for(var i =3D dateArray.length; i-- ;) {
                        =
if(dateArray[i].match(/^(\d\d\d\d|\*\*\*\*)(0[1-9]|1[012]|\*\*)(0[1-9]|[1=
2][0-9]|3[01]|\*\*)$/) !=3D -1 && dateArray[i] !=3D "********") =
fin[fin.length] =3D dateArray[i];
                };
                if(fin.length) {
                        o.disabledDates =3D [];
                        o.enabledDates =3D fin;
                        if(o.staticPos) o.updateTable(true);
                };
        };
        o.getDisabledDates =3D function(y, m) {
                if(o.enabledDates.length) return o.getEnabledDates(y, =
m);
                var obj =3D {};
                var d =3D datePicker.getDaysPerMonth(m - 1, y);
                m =3D m < 10 ? "0" + String(m) : m;
                for(var i =3D o.disabledDates.length; i-- ;) {
                        var tmp =3D o.disabledDates[i].replace("****", =
y).replace("**", m);
                        if(tmp < Number(String(y)+m+"01") || tmp > =
Number(y+String(m)+d)) continue;
                        obj[tmp] =3D 1;
                };
                return obj;
        };
        o.getEnabledDates =3D function(y, m) {
                var obj =3D {};
                var d =3D datePicker.getDaysPerMonth(m - 1, y);
                m =3D m < 10 ? "0" + String(m) : m;
                var day,tmp,de,me,ye,disabled;
                for(var dd =3D 1; dd <=3D d; dd++) {
                        day =3D dd < 10 ? "0" + String(dd) : dd;
                        disabled =3D true;
                        for(var i =3D o.enabledDates.length; i-- ;) {
                                tmp =3D o.enabledDates[i];
                                ye  =3D =
String(o.enabledDates[i]).substr(0,4);
                                me  =3D =
String(o.enabledDates[i]).substr(4,2);
                                de  =3D =
String(o.enabledDates[i]).substr(6,2);

                                if(ye =3D=3D y && me =3D=3D m && de =
=3D=3D day) {
                                        disabled =3D false;
                                        break;
                                }
                               =20
                                if(ye =3D=3D "****" || me =3D=3D "**" || =
de =3D=3D "**") {
                                        if(ye =3D=3D "****") tmp =3D =
tmp.replace(/^\*\*\*\*/, y);
                                        if(me =3D=3D "**")   tmp =3D tmp =
=3D tmp.substr(0,4) + String(m) + tmp.substr(6,2);
                                        if(de =3D=3D "**")   tmp =3D =
tmp.replace(/\*\*/, day);

                                        if(tmp =3D=3D String(y + =
String(m) + day)) {
                                                disabled =3D false;
                                                break;
                                        };
                                };
                        };
                        if(disabled) obj[String(y + String(m) + day)] =
=3D 1;
                };
                return obj;
        };
        o.setFirstDayOfWeek =3D function(e) {
                if ( e =3D=3D null ) e =3D document.parentWindow.event;
                var elem =3D e.target !=3D null ? e.target : =
e.srcElement;
                if(elem.tagName.toLowerCase() !=3D "th") {
                        while(elem.tagName.toLowerCase() !=3D "th") elem =
=3D elem.parentNode;
                };
                var cnt =3D 0;
                while(elem.previousSibling) {
                        elem =3D elem.previousSibling;
                        if(elem.tagName.toLowerCase() =3D=3D "th") =
cnt++;
                };
                o.firstDayOfWeek =3D (o.firstDayOfWeek + cnt) % 7;
                o.updateTableHeaders();
                return o.killEvent(e);
        };
        o.truePosition =3D function(element) {
                var pos =3D o.cumulativeOffset(element);
                if(window.opera) { return pos; }
                var iebody      =3D (document.compatMode && =
document.compatMode !=3D "BackCompat")? document.documentElement : =
document.body;
                var dsocleft    =3D document.all ? iebody.scrollLeft : =
window.pageXOffset;
                var dsoctop     =3D document.all ? iebody.scrollTop  : =
window.pageYOffset;
                var posReal     =3D o.realOffset(element);
                return [pos[0] - posReal[0] + dsocleft, pos[1] - =
posReal[1] + dsoctop];
        };
        o.realOffset =3D function(element) {
                var t =3D 0, l =3D 0;
                do {
                        t +=3D element.scrollTop  || 0;
                        l +=3D element.scrollLeft || 0;
                        element =3D element.parentNode;
                } while (element);
                return [l, t];
        };
        o.cumulativeOffset =3D function(element) {
                var t =3D 0, l =3D 0;
                do {
                        t +=3D element.offsetTop  || 0;
                        l +=3D element.offsetLeft || 0;
                        element =3D element.offsetParent;
                } while (element);
                return [l, t];
        };
        o.resize =3D function() {
                if(!o.created || !o.getElem()) return;
               =20
                o.div.style.visibility =3D "hidden";
                if(!o.staticPos) { o.div.style.left =3D o.div.style.top =
=3D "0px"; }
                o.div.style.display =3D "block";
               =20
                var osh =3D o.div.offsetHeight;
                var osw =3D o.div.offsetWidth;
               =20
                o.div.style.visibility =3D "visible";
                o.div.style.display =3D "none";
               =20
                if(!o.staticPos) {
                        var elem          =3D =
document.getElementById('fd-but-' + o.id);
                        var pos           =3D o.truePosition(elem);
                        var trueBody      =3D (document.compatMode && =
document.compatMode!=3D"BackCompat") ? document.documentElement : =
document.body;
                        var scrollTop     =3D window.devicePixelRatio || =
window.opera ? 0 : trueBody.scrollTop;
                        var scrollLeft    =3D window.devicePixelRatio || =
window.opera ? 0 : trueBody.scrollLeft;

                        if(parseInt(trueBody.clientWidth+scrollLeft) < =
parseInt(osw+pos[0])) {
                                o.div.style.left =3D =
Math.abs(parseInt((trueBody.clientWidth+scrollLeft) - osw)) + "px";
                        } else {
                                o.div.style.left  =3D pos[0] + "px";
                        };

                        if(parseInt(trueBody.clientHeight+scrollTop) < =
parseInt(osh+pos[1]+elem.offsetHeight+2)) {
                                o.div.style.top   =3D =
Math.abs(parseInt(pos[1] - (osh + 2))) + "px";
                        } else {
                                o.div.style.top   =3D =
Math.abs(parseInt(pos[1] + elem.offsetHeight + 2)) + "px";
                        };
                };
                /*@cc_on
                @if(@_jscript_version <=3D 5.6)
                if(o.staticPos) return;
                o.iePopUp.style.top    =3D o.div.style.top;
                o.iePopUp.style.left   =3D o.div.style.left;
                o.iePopUp.style.width  =3D osw + "px";
                o.iePopUp.style.height =3D (osh - 2) + "px";
                @end
                @*/
        };
        o.equaliseDates =3D function() {
                var clearDayFound =3D false;
                var tmpDate;
                for(var i =3D o.low; i <=3D o.high; i++) {
                        tmpDate =3D String(i);
                        if(!o.disableDays[new Date(tmpDate.substr(0,4), =
tmpDate.substr(6,2), tmpDate.substr(4,2)).getDay() - 1]) {
                                clearDayFound =3D true;
                                break;
                        };
                };
                if(!clearDayFound) o.disableDays =3D =
o.defaults.disableDays =3D [0,0,0,0,0,0,0];
        };
        o.outOfRange =3D function(tmpDate) {
                if(!o.low && !o.high) return false;

                var level =3D false;
                if(!tmpDate) {
                        level =3D true;
                        tmpDate =3D o.date;
                };
               =20
                var d  =3D (tmpDate.getDate() < 10) ? "0" + =
tmpDate.getDate() : tmpDate.getDate();
                var m  =3D ((tmpDate.getMonth() + 1) < 10) ? "0" + =
(tmpDate.getMonth() + 1) : tmpDate.getMonth() + 1;
                var y  =3D tmpDate.getFullYear();
                var dt =3D String(y)+String(m)+String(d);

                if(o.low && parseInt(dt) < parseInt(o.low)) {
                        if(!level) return true;
                        o.date =3D new Date(o.low.substr(0,4), =
o.low.substr(4,2)-1, o.low.substr(6,2), 5, 0, 0);
                        return false;
                };
                if(o.high && parseInt(dt) > parseInt(o.high)) {
                        if(!level) return true;
                        o.date =3D new Date( o.high.substr(0,4), =
o.high.substr(4,2)-1, o.high.substr(6,2), 5, 0, 0);
                };
                return false;
        };
        o.createButton =3D function() {
                if(o.staticPos) { return; };
               =20
                var but;
               =20
                if(!document.getElementById("fd-but-" + o.id)) {
                        var inp =3D o.getElem();
                       =20
                        but =3D document.createElement('a');
                        but.href =3D "#";

                        var span =3D document.createElement('span');
                        =
span.appendChild(document.createTextNode(String.fromCharCode( 160 )));

                        but.className =3D "date-picker-control";
                        but.title =3D (typeof(fdLocale) =3D=3D "object" =
&& options.locale && fdLocale.titles.length > 5) ? fdLocale.titles[5] : =
"";

                        but.id =3D "fd-but-" + o.id;
                        but.appendChild(span);

                        if(inp.nextSibling) {
                                inp.parentNode.insertBefore(but, =
inp.nextSibling);
                        } else {
                                inp.parentNode.appendChild(but);
                        };
                } else {
                        but =3D document.getElementById("fd-but-" + =
o.id);
                };

                but.onclick =3D but.onpress =3D function(e) {
                        e =3D e || window.event;
                        var inpId =3D this.id.replace('fd-but-','');
                        try { var dp =3D =
datePickerController.getDatePicker(inpId); } catch(err) { return false; =
};

                        if(e.type =3D=3D "press") {
                                var kc =3D e.keyCode !=3D null ? =
e.keyCode : e.charCode;
                                if(kc !=3D 13) { return true; };
                                if(dp.visible) {
                                        hideAll();
                                        return false;
                                };
                        };

                        if(!dp.visible) {
                                datePickerController.hideAll(inpId);
                                dp.show();
                        } else {
                                datePickerController.hideAll();
                        };
                        return false;
                };
                but =3D null;
        },
        o.create =3D function() {
               =20
                function createTH(details) {
                        var th =3D document.createElement('th');
                        if(details.thClassName) th.className =3D =
details.thClassName;
                        if(details.colspan) {
                                /*@cc_on
                                /*@if (@_win32)
                                =
th.setAttribute('colSpan',details.colspan);
                                @else @*/
                                =
th.setAttribute('colspan',details.colspan);
                                /*@end
                                @*/
                        };
                        /*@cc_on
                        /*@if (@_win32)
                        th.unselectable =3D "on";
                        /*@end@*/
                        return th;
                };
               =20
                function createThAndButton(tr, obj) {
                        for(var i =3D 0, details; details =3D obj[i]; =
i++) {
                                var th =3D createTH(details);
                                tr.appendChild(th);
                                var but =3D =
document.createElement('span');
                                but.className =3D details.className;
                                but.id =3D o.id + details.id;
                                =
but.appendChild(document.createTextNode(details.text));
                                but.title =3D details.title || "";
                                if(details.onmousedown) but.onmousedown =
=3D details.onmousedown;
                                if(details.onclick)     but.onclick     =
=3D details.onclick;
                                if(details.onmouseout)  but.onmouseout  =
=3D details.onmouseout;
                                th.appendChild(but);
                        };
                };
               =20
                /*@cc_on
                @if(@_jscript_version <=3D 5.6)
                        if(!document.getElementById("iePopUpHack")) {
                                o.iePopUp =3D =
document.createElement('iframe');
                                o.iePopUp.src =3D =
"javascript:'<html></html>';";
                                =
o.iePopUp.setAttribute('className','iehack');
                                o.iePopUp.scrolling=3D"no";
                                o.iePopUp.frameBorder=3D"0";
                                o.iePopUp.name =3D o.iePopUp.id =3D =
"iePopUpHack";
                                document.body.appendChild(o.iePopUp);
                        } else {
                                o.iePopUp =3D =
document.getElementById("iePopUpHack");
                        };
                @end
                @*/
               =20
                if(typeof(fdLocale) =3D=3D "object" && o.locale) {
                        datePicker.titles  =3D fdLocale.titles;
                        datePicker.months  =3D fdLocale.months;
                        datePicker.fullDay =3D fdLocale.fullDay;
                        // Optional parameters
                        if(fdLocale.dayAbbr) datePicker.dayAbbr =3D =
fdLocale.dayAbbr;
                        if(fdLocale.firstDayOfWeek) o.firstDayOfWeek =3D =
o.defaults.firstDayOfWeek =3D fdLocale.firstDayOfWeek;
                };
               =20
                o.div =3D document.createElement('div');
                o.div.style.zIndex =3D 9999;
                o.div.id =3D "fd-"+o.id;
                o.div.className =3D "datePicker";
               =20
                if(!o.staticPos) {
                        =
document.getElementsByTagName('body')[0].appendChild(o.div);
                } else {
                        elem =3D o.getElem();
                        if(!elem) {
                                o.div =3D null;
                                return;
                        };
                        o.div.className +=3D " staticDP";
                        o.div.setAttribute("tabIndex", "0");
                        o.div.onfocus =3D o.events.onfocus;
                        o.div.onblur  =3D o.events.onblur;
                        elem.parentNode.insertBefore(o.div, =
elem.nextSibling);
                        if(o.hideInput && elem.type && elem.type =3D=3D =
"text") elem.setAttribute("type", "hidden");
                };
               =20
                //var nbsp =3D String.fromCharCode( 160 );
                var tr, row, col, tableHead, tableBody;

                o.table =3D document.createElement('table');
                o.div.appendChild( o.table );
               =20
                tableHead =3D document.createElement('thead');
                o.table.appendChild( tableHead );
               =20
                tr  =3D document.createElement('tr');
                tableHead.appendChild(tr);

                // Title Bar
                o.titleBar =3D =
createTH({thClassName:"date-picker-title", colspan:7});
                tr.appendChild( o.titleBar );
                tr =3D null;
               =20
                var span =3D document.createElement('span');
                span.className =3D "month-display";
                o.titleBar.appendChild(span);

                span =3D document.createElement('span');
                span.className =3D "year-display";
                o.titleBar.appendChild(span);

                span =3D null;
               =20
                tr  =3D document.createElement('tr');
                tableHead.appendChild(tr);

                createThAndButton(tr, [{className:"prev-but", =
id:"-prev-year-but", text:"\u00AB", title:datePicker.titles[2], =
onmousedown:function(e) { o.events.incDec(e,0,-1,0); }, =
onmouseout:o.events.clearTimer },{className:"prev-but", =
id:"-prev-month-but", text:"\u2039", title:datePicker.titles[0], =
onmousedown:function(e) { o.events.incDec(e,0,0,-1); }, =
onmouseout:o.events.clearTimer },{colspan:3, className:"today-but", =
id:"-today-but", text:datePicker.titles.length > 4 ? =
datePicker.titles[4] : "Today", =
onclick:o.events.gotoToday},{className:"next-but", id:"-next-month-but", =
text:"\u203A", title:datePicker.titles[1], onmousedown:function(e) { =
o.events.incDec(e,0,0,1); }, onmouseout:o.events.clearTimer =
},{className:"next-but", id:"-next-year-but", text:"\u00BB", =
title:datePicker.titles[3], onmousedown:function(e) { =
o.events.incDec(e,0,1,0); }, onmouseout:o.events.clearTimer }]);

                tableBody =3D document.createElement('tbody');
                o.table.appendChild( tableBody );

                for(var rows =3D 0; rows < 7; rows++) {
                        row =3D document.createElement('tr');

                        if(rows !=3D 0) tableBody.appendChild(row);
                        else          tableHead.appendChild(row);
                       =20
                        for(var cols =3D 0; cols < 7; cols++) {
                                col =3D (rows =3D=3D 0) ? =
document.createElement('th') : document.createElement('td');

                                row.appendChild(col);
                                if(rows !=3D 0) {
                                        =
col.appendChild(document.createTextNode(o.nbsp));
                                        col.onmouseover =3D =
o.events.onmouseover;
                                        col.onclick =3D =
o.events.onclick;
                                } else {
                                        col.className =3D =
"date-picker-day-header";
                                        col.scope =3D "col";
                                };
                                col =3D null;
                        };
                        row =3D null;
                };

                // Table headers
                var but;
                var ths =3D =
o.table.getElementsByTagName('thead')[0].getElementsByTagName('tr')[2].ge=
tElementsByTagName('th');
                for ( var y =3D 0; y < 7; y++ ) {
                        if(y > 0) {
                                but =3D document.createElement("span");
                                but.className =3D "fd-day-header";
                                but.onclick =3D ths[y].onclick =3D =
o.setFirstDayOfWeek;
                                =
but.appendChild(document.createTextNode(o.nbsp));
                                ths[y].appendChild(but);
                                but =3D null;
                        } else {
                                =
ths[y].appendChild(document.createTextNode(o.nbsp));
                        };
                };
               =20
                o.ths =3D =
o.table.getElementsByTagName('thead')[0].getElementsByTagName('tr')[2].ge=
tElementsByTagName('th');
                o.trs =3D =
o.table.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
               =20
                o.updateTableHeaders();
               =20
                tableBody =3D tableHead =3D tr =3D createThAndButton =3D =
createTH =3D null;

                if(o.low && o.high && (o.high - o.low < 7)) { =
o.equaliseDates(); };
               =20
                o.created =3D true;
               =20
                if(o.staticPos) {
                        var yyN =3D document.getElementById(o.id);
                        datePickerController.addEvent(yyN, "change", =
o.changeHandler);
                        if(o.splitDate) {
                                var mmN =3D =
document.getElementById(o.id+'-mm');
                                var ddN =3D =
document.getElementById(o.id+'-dd');
                                datePickerController.addEvent(mmN, =
"change", o.changeHandler);
                                datePickerController.addEvent(ddN, =
"change", o.changeHandler);
                        };
                       =20
                        o.show();
                } else {
                        o.createButton();
                        o.resize();
                        o.fade();
                };
        };
        o.changeHandler =3D function() {
                o.setDateFromInput();
                o.updateTable();
        };
        o.setDateFromInput =3D function() {
                function m2c(val) {
                        return String(val).length < 2 ? =
"00".substring(0, 2 - String(val).length) + String(val) : val;
                };

                o.dateSet =3D null;
               =20
                var elem =3D o.getElem();
                if(!elem) return;

                if(!o.splitDate) {
                        var date =3D =
datePickerController.dateFormat(elem.value, o.format.search(/m-d-y/i) =
!=3D -1);
                } else {
                        var mmN =3D document.getElementById(o.id+'-mm');
                        var ddN =3D document.getElementById(o.id+'-dd');
                        var tm =3D parseInt(mmN.tagName.toLowerCase() =
=3D=3D "input"  ? mmN.value  : mmN.options[mmN.selectedIndex].value, =
10);
                        var td =3D parseInt(ddN.tagName.toLowerCase() =
=3D=3D "input"  ? ddN.value  : ddN.options[ddN.selectedIndex].value, =
10);
                        var ty =3D parseInt(elem.tagName.toLowerCase() =
=3D=3D "input" ? elem.value : elem.options[elem.selectedIndex || =
0].value, 10);
                        var date =3D datePickerController.dateFormat(tm =
+ "/" + td + "/" + ty, true);
                };

                var badDate =3D false;
                if(!date) {
                        badDate =3D true;
                        date =3D String(new Date().getFullYear()) + =
m2c(new Date().getMonth()+1) + m2c(new Date().getDate());
                };

                var d,m,y;
                y =3D Number(date.substr(0, 4));
                m =3D Number(date.substr(4, 2)) - 1;
                d =3D Number(date.substr(6, 2));

                var dpm =3D datePicker.getDaysPerMonth(m, y);
                if(d > dpm) d =3D dpm;

                if(new Date(y, m, d) =3D=3D 'Invalid Date' || new =
Date(y, m, d) =3D=3D 'NaN') {
                        badDate =3D true;
                        o.date =3D new Date();
                        o.date.setHours(5);
                        return;
                };

                o.date =3D new Date(y, m, d);
                o.date.setHours(5);

                if(!badDate) o.dateSet =3D new Date(o.date);
                m2c =3D null;
        };
        o.setSelectIndex =3D function(elem, indx) {
                var len =3D elem.options.length;
                indx =3D Number(indx);
                for(var opt =3D 0; opt < len; opt++) {
                        if(elem.options[opt].value =3D=3D indx) {
                                elem.selectedIndex =3D opt;
                                return;
                        };
                };
        },
        o.returnFormattedDate =3D function() {

                var elem =3D o.getElem();
                if(!elem) return;
               =20
                var d                   =3D (o.date.getDate() < 10) ? =
"0" + o.date.getDate() : o.date.getDate();
                var m                   =3D ((o.date.getMonth() + 1) < =
10) ? "0" + (o.date.getMonth() + 1) : o.date.getMonth() + 1;
                var yyyy                =3D o.date.getFullYear();
                var disabledDates       =3D o.getDisabledDates(yyyy, m);
                var weekDay             =3D ( o.date.getDay() + 6 ) % 7;

                if(!(o.disableDays[weekDay] || String(yyyy)+m+d in =
disabledDates)) {

                        if(o.splitDate) {
                                var ddE =3D =
document.getElementById(o.id+"-dd");
                                var mmE =3D =
document.getElementById(o.id+"-mm");

                                if(ddE.tagName.toLowerCase() =3D=3D =
"input") { ddE.value =3D d; }
                                else { o.setSelectIndex(ddE, d); =
/*ddE.selectedIndex =3D d - 1;*/ };
                               =20
                                if(mmE.tagName.toLowerCase() =3D=3D =
"input") { mmE.value =3D m; }
                                else { o.setSelectIndex(mmE, m); =
/*mmE.selectedIndex =3D m - 1;*/ };
                               =20
                                if(elem.tagName.toLowerCase() =3D=3D =
"input") elem.value =3D yyyy;
                                else {
                                        o.setSelectIndex(elem, yyyy); /*
                                        for(var opt =3D 0; opt < =
elem.options.length; opt++) {
                                                =
if(elem.options[opt].value =3D=3D yyyy) {
                                                        =
elem.selectedIndex =3D opt;
                                                        break;
                                                };
                                        };
                                        */
                                };
                        } else {
                                elem.value =3D =
o.format.replace('y',yyyy).replace('m',m).replace('d',d).replace(/-/g,o.d=
ivider);
                        };
                        if(!elem.type || elem.type && elem.type !=3D =
"hidden"){ elem.focus(); }
                        if(o.staticPos) {
                                o.dateSet =3D new Date( o.date );
                                o.updateTable();
                        };
                       =20
                        // Programmatically fire the onchange event
                        if(document.createEvent) {
                                var onchangeEvent =3D =
document.createEvent('HTMLEvents');
                                onchangeEvent.initEvent('change', true, =
false);
                                elem.dispatchEvent(onchangeEvent);
                        } else if(document.createEventObject) {
                                elem.fireEvent('onchange');
                        };
                };
        };
        o.disableTodayButton =3D function() {
                var today =3D new Date();
                document.getElementById(o.id + "-today-but").className =
=3D document.getElementById(o.id + =
"-today-but").className.replace("fd-disabled", "");
                if(o.outOfRange(today) || (o.date.getDate() =3D=3D =
today.getDate() && o.date.getMonth() =3D=3D today.getMonth() && =
o.date.getFullYear() =3D=3D today.getFullYear())) {
                        document.getElementById(o.id + =
"-today-but").className +=3D " fd-disabled";
                        document.getElementById(o.id + =
"-today-but").onclick =3D null;
                } else {
                        document.getElementById(o.id + =
"-today-but").onclick =3D o.events.gotoToday;
                };
        };
        o.updateTableHeaders =3D function() {
                var d, but;
                var ths =3D o.ths;
                for ( var y =3D 0; y < 7; y++ ) {
                        d =3D (o.firstDayOfWeek + y) % 7;
                        ths[y].title =3D datePicker.fullDay[d];

                        if(y > 0) {
                                but =3D =
ths[y].getElementsByTagName("span")[0];
                                but.removeChild(but.firstChild);
                                =
but.appendChild(document.createTextNode(datePicker.dayAbbr ? =
datePicker.dayAbbr[d] : datePicker.fullDay[d].charAt(0)));
                                but.title =3D datePicker.fullDay[d];
                                but =3D null;
                        } else {
                                ths[y].removeChild(ths[y].firstChild);
                                =
ths[y].appendChild(document.createTextNode(datePicker.dayAbbr ? =
datePicker.dayAbbr[d] : datePicker.fullDay[d].charAt(0)));
                        };
                };
                o.updateTable();
        };

        o.updateTable =3D function(noCallback) {

                if(o.timerSet) {
                        var d =3D new Date(o.date);
                        d.setDate( Math.min(d.getDate()+o.dayInc, =
datePicker.getDaysPerMonth(d.getMonth()+o.monthInc,d.getFullYear()+o.year=
Inc)) );
                        d.setMonth( d.getMonth() + o.monthInc );
                        d.setFullYear( d.getFullYear() + o.yearInc );
                        o.date =3D d;
                };
               =20
                if(!noCallback && "onupdate" in datePickerController && =
typeof(datePickerController.onupdate) =3D=3D "function") =
datePickerController.onupdate(o);

                o.outOfRange();
                o.disableTodayButton();
               =20
                // Set the tmpDate to the second day of this month (to =
avoid daylight savings time madness on Windows)
                var tmpDate =3D new Date( o.date.getFullYear(), =
o.date.getMonth(), 2 );
                tmpDate.setHours(5);

                var tdm =3D tmpDate.getMonth();
                var tdy =3D tmpDate.getFullYear();

                // Do the disableDates for this year and month
                var disabledDates =3D =
o.getDisabledDates(o.date.getFullYear(), o.date.getMonth() + 1);

                var today =3D new Date();

                // Previous buttons out of range
                var b =3D document.getElementById(o.id + =
"-prev-year-but");
                b.className =3D b.className.replace("fd-disabled", "");
                if(o.outOfRange(new Date((tdy - 1), Number(tdm), =
datePicker.getDaysPerMonth(Number(tdm), tdy-1)))) {
                        b.className +=3D " fd-disabled";
                        if(o.yearInc =3D=3D -1) o.stopTimer();
                };

                b =3D document.getElementById(o.id + "-prev-month-but")
                b.className =3D b.className.replace("fd-disabled", "");
                if(o.outOfRange(new Date(tdy, (Number(tdm) - 1), =
datePicker.getDaysPerMonth(Number(tdm)-1, tdy)))) {
                        b.className +=3D " fd-disabled";
                        if(o.monthInc =3D=3D -1)  o.stopTimer();
                };

                // Next buttons out of range
                b=3D document.getElementById(o.id + "-next-year-but")
                b.className =3D b.className.replace("fd-disabled", "");
                if(o.outOfRange(new Date((tdy + 1), Number(tdm), 1))) {
                        b.className +=3D " fd-disabled";
                        if(o.yearInc =3D=3D 1)  o.stopTimer();
                };

                b =3D document.getElementById(o.id + "-next-month-but")
                b.className =3D b.className.replace("fd-disabled", "");
                if(o.outOfRange(new Date(tdy, Number(tdm) + 1, 1))) {
                        b.className +=3D " fd-disabled";
                        if(o.monthInc =3D=3D 1)  o.stopTimer();
                };

                b =3D null;
               =20
                var cd =3D o.date.getDate();
                var cm =3D o.date.getMonth();
                var cy =3D o.date.getFullYear();
               =20
                // Title Bar
                var span =3D o.titleBar.getElementsByTagName("span");
                while(span[0].firstChild) =
span[0].removeChild(span[0].firstChild);
                while(span[1].firstChild) =
span[1].removeChild(span[1].firstChild);
                =
span[0].appendChild(document.createTextNode(datePicker.months[cm] + =
o.nbsp));
                span[1].appendChild(document.createTextNode(cy));

                tmpDate.setDate( 1 );
                       =20
                var dt, cName, td, tds, i;
                var weekDay =3D ( tmpDate.getDay() + 6 ) % 7;
                var firstColIndex =3D (( (weekDay - o.firstDayOfWeek) + =
7 ) % 7) - 1;
                var dpm =3D datePicker.getDaysPerMonth(cm, cy);

                var todayD =3D today.getDate();
                var todayM =3D today.getMonth();
                var todayY =3D today.getFullYear();
               =20
                var c =3D "class";
                /*@cc_on
                @if(@_win32)
                c =3D "className";
                @end
                @*/

                var stub =3D String(tdy) + (String(tdm+1).length < 2 ? =
"0" + (tdm+1) : tdm+1);
               =20
                for(var row =3D 0; row < 6; row++) {

                        tds =3D o.trs[row].getElementsByTagName('td');

                        for(var col =3D 0; col < 7; col++) {
                       =20
                                td =3D tds[col];
                                td.removeChild(td.firstChild);

                                td.setAttribute("id", "");
                                td.setAttribute("title", "");

                                i =3D (row * 7) + col;
                       =20
                                if(i > firstColIndex && i <=3D =
(firstColIndex + dpm)) {
                                        dt =3D i - firstColIndex;

                                        tmpDate.setDate(dt);
                                        =
td.appendChild(document.createTextNode(dt));
                                       =20
                                        if(o.outOfRange(tmpDate)) {
                                                td.setAttribute(c, =
"out-of-range");
                                        } else {

                                                cName =3D [];
                                                weekDay =3D ( =
tmpDate.getDay() + 6 ) % 7;

                                                if(dt =3D=3D todayD && =
tdm =3D=3D todayM && tdy =3D=3D todayY) {
                                                        =
cName.push("date-picker-today");
                                                };

                                                if(o.dateSet !=3D null =
&& o.dateSet.getDate() =3D=3D dt && o.dateSet.getMonth() =3D=3D tdm && =
o.dateSet.getFullYear() =3D=3D tdy) {
                                                        =
cName.push("date-picker-selected-date");
                                                };
                                               =20
                                                =
if(o.disableDays[weekDay] || stub + String(dt < 10 ? "0" + dt : dt) in =
disabledDates) {
                                                        =
cName.push("day-disabled");
                                                } else =
if(o.highlightDays[weekDay]) {
                                                        =
cName.push("date-picker-highlight");
                                                };
                                               =20
                                                if(cd =3D=3D dt) {
                                                        =
td.setAttribute("id", o.id + "-date-picker-hover");
                                                        =
cName.push("date-picker-hover");
                                                };
                                               =20
                                                cName.push("dm-" + dt + =
'-' + (tdm + 1) + " " + " dmy-" + dt + '-' + (tdm + 1) + '-' + tdy);
                                                td.setAttribute(c, =
cName.join(' '));
                                                td.setAttribute("title", =
datePicker.months[cm] + o.nbsp + dt + "," + o.nbsp + cy);
                                        };
                                } else {
                                        =
td.appendChild(document.createTextNode(o.nbsp));
                                        td.setAttribute(c, =
"date-picker-unused");
                                };
                        };
                };

                if(o.timerSet) {
                        o.timerInc =3D 50 + Math.round(((o.timerInc - =
50) / 1.8));
                        o.timer =3D window.setTimeout(o.updateTable, =
o.timerInc);
                };
        };
        o.addKeyboardEvents =3D function() {
                datePickerController.addEvent(document, "keypress", =
o.events.onkeydown);
                /*@cc_on
                @if(@_win32)
                datePickerController.removeEvent(document, "keypress", =
o.events.onkeydown);
                datePickerController.addEvent(document, "keydown", =
o.events.onkeydown);
                @end
                @*/
                if(window.devicePixelRatio) {
                        datePickerController.removeEvent(document, =
"keypress", o.events.onkeydown);
                        datePickerController.addEvent(document, =
"keydown", o.events.onkeydown);
                };
        };
        o.removeKeyboardEvents =3Dfunction() {
                datePickerController.removeEvent(document, "keypress", =
o.events.onkeydown);
                datePickerController.removeEvent(document, "keydown",  =
o.events.onkeydown);
        };
        o.show =3D function() {
                var elem =3D o.getElem();
                if(!elem || o.visible || elem.disabled) return;

                o.reset();
                o.setDateFromInput();
                o.updateTable();
               =20
                if(!o.staticPos) o.resize();
               =20
                datePickerController.addEvent(o.staticPos ? o.table : =
document, "mousedown", o.events.onmousedown);

                if(!o.staticPos) { o.addKeyboardEvents(); };
               =20
                o.opacityTo =3D o.noTransparency ? 99 : 90;
                o.div.style.display =3D "block";
                /*@cc_on
                @if(@_jscript_version <=3D 5.6)
                if(!o.staticPos) o.iePopUp.style.display =3D "block";
                @end
                @*/

                o.fade();
                o.visible =3D true;
        };
        o.hide =3D function() {
                if(!o.visible) return;
                o.stopTimer();
                if(o.staticPos) return;
               =20
                datePickerController.removeEvent(document, "mousedown", =
o.events.onmousedown);
                datePickerController.removeEvent(document, "mouseup",  =
o.events.clearTimer);
                o.removeKeyboardEvents();
               =20
                /*@cc_on
                @if(@_jscript_version <=3D 5.6)
                o.iePopUp.style.display =3D "none";
                @end
                @*/
               =20
                o.opacityTo =3D 0;
                o.fade();
                o.visible =3D false;
                var elem =3D o.getElem();
                if(!elem.type || elem.type && elem.type !=3D "hidden") { =
elem.focus(); };
        };
        o.destroy =3D function() {
                // Cleanup for Internet Explorer
                datePickerController.removeEvent(o.staticPos ? o.table : =
document, "mousedown", o.events.onmousedown);
                datePickerController.removeEvent(document, "mouseup",   =
o.events.clearTimer);
                o.removeKeyboardEvents();

                if(o.staticPos) {
                        var yyN =3D document.getElementById(o.id);
                        datePickerController.removeEvent(yyN, "change", =
o.changeHandler);
                        if(o.splitDate) {
                                var mmN =3D =
document.getElementById(o.id+'-mm');
                                var ddN =3D =
document.getElementById(o.id+'-dd');

                                datePickerController.removeEvent(mmN, =
"change", o.changeHandler);
                                datePickerController.removeEvent(ddN, =
"change", o.changeHandler);
                        };
                        o.div.onfocus =3D o.div.onblur =3D null;
                };
               =20
                var ths =3D o.table.getElementsByTagName("th");
                for(var i =3D 0, th; th =3D ths[i]; i++) {
                        th.onmouseover =3D th.onmouseout =3D =
th.onmousedown =3D th.onclick =3D null;
                };
               =20
                var tds =3D o.table.getElementsByTagName("td");
                for(var i =3D 0, td; td =3D tds[i]; i++) {
                        td.onmouseover =3D td.onclick =3D null;
                };

                var butts =3D o.table.getElementsByTagName("span");
                for(var i =3D 0, butt; butt =3D butts[i]; i++) {
                        butt.onmousedown =3D butt.onclick =3D =
butt.onkeypress =3D null;
                };
               =20
                o.ths =3D o.trs =3D null;
               =20
                clearTimeout(o.fadeTimer);
                clearTimeout(o.timer);
                o.fadeTimer =3D o.timer =3D null;
               =20
                /*@cc_on
                @if(@_jscript_version <=3D 5.6)
                o.iePopUp =3D null;
                @end
                @*/
               =20
                if(!o.staticPos && =
document.getElementById(o.id.replace(/^fd-/, 'fd-but-'))) {
                        var butt =3D =
document.getElementById(o.id.replace(/^fd-/, 'fd-but-'));
                        butt.onclick =3D butt.onpress =3D null;
                };
               =20
                if(o.div && o.div.parentNode) {
                        o.div.parentNode.removeChild(o.div);
                };
               =20
                o.titleBar =3D o.table =3D o.div =3D null;
                o =3D null;
        };
        o.create();
};

datePickerController =3D function() {
        var datePickers =3D {};
        var uniqueId    =3D 0;
       =20
        var addEvent =3D function(obj, type, fn) {
                if( obj.attachEvent ) {
                        obj["e"+type+fn] =3D fn;
                        obj[type+fn] =3D function(){obj["e"+type+fn]( =
window.event );};
                        obj.attachEvent( "on"+type, obj[type+fn] );
                } else {
                        obj.addEventListener( type, fn, true );
                };
        };
        var removeEvent =3D function(obj, type, fn) {
                try {
                        if( obj.detachEvent ) {
                                obj.detachEvent( "on"+type, obj[type+fn] =
);
                                obj[type+fn] =3D null;
                        } else {
                                obj.removeEventListener( type, fn, true =
);
                        };
                } catch(err) {};
        };
        var hideAll =3D function(exception) {
                var dp;
                for(dp in datePickers) {
                        if(!datePickers[dp].created || =
datePickers[dp].staticPos) continue;
                        if(exception && exception =3D=3D =
datePickers[dp].id) { continue; };
                        if(document.getElementById(datePickers[dp].id))  =
{ datePickers[dp].hide(); };
                };
        };
        var cleanUp =3D function() {
                var dp;
                for(dp in datePickers) {
                        if(!document.getElementById(datePickers[dp].id)) =
{
                                if(!datePickers[dp].created) continue;
                                datePickers[dp].destroy();
                                datePickers[dp] =3D null;
                                delete datePickers[dp];
                        };
                };
        };
        var destroy =3D function() {
                for(dp in datePickers) {
                        if(!datePickers[dp].created) continue;
                        datePickers[dp].destroy();
                        datePickers[dp] =3D null;
                        delete datePickers[dp];
                };
                datePickers =3D null;
                /*@cc_on
                @if(@_jscript_version <=3D 5.6)
                        if(document.getElementById("iePopUpHack")) {
                                =
document.body.removeChild(document.getElementById("iePopUpHack"));
                        };
                @end
                @*/
                datePicker.script =3D null;
                removeEvent(window, 'load', =
datePickerController.create);
                removeEvent(window, 'unload', =
datePickerController.destroy);
        };
        var dateFormat =3D function(dateIn, favourMDY) {
                var dateTest =3D [
                        { regExp:/^(0?[1-9]|[12][0-9]|3[01])([- =
\/.])(0?[1-9]|1[012])([- \/.])((\d\d)?\d\d)$/, d:1, m:3, y:5 },  // dmy
                        { regExp:/^(0?[1-9]|1[012])([- =
\/.])(0?[1-9]|[12][0-9]|3[01])([- \/.])((\d\d)?\d\d)$/, d:3, m:1, y:5 }, =
 // mdy
                        { regExp:/^(\d\d\d\d)([- =
\/.])(0?[1-9]|1[012])([- \/.])(0?[1-9]|[12][0-9]|3[01])$/,    d:5, m:3, =
y:1 }   // ymd
                        ];

                var start;
                var cnt =3D 0;
                while(cnt < 3) {
                        start =3D (cnt + (favourMDY ? 4 : 3)) % 3;
                        if(dateIn.match(dateTest[start].regExp)) {
                                res =3D =
dateIn.match(dateTest[start].regExp);
                                y =3D res[dateTest[start].y];
                                m =3D res[dateTest[start].m];
                                d =3D res[dateTest[start].d];
                                if(m.length =3D=3D 1) m =3D "0" + m;
                                if(d.length =3D=3D 1) d =3D "0" + d;
                                if(y.length !=3D 4) y =3D (parseInt(y) < =
50) ? '20' + y : '19' + y;
                                return String(y)+m+d;
                        };
                        cnt++;
                };
                return 0;
        };
        var joinNodeLists =3D function() {
                if(!arguments.length) { return []; }
                var nodeList =3D [];
                for (var i =3D 0; i < arguments.length; i++) {
                        for (var j =3D 0, item; item =3D =
arguments[i][j]; j++) {
                                nodeList[nodeList.length] =3D item;
                        };
                };
                return nodeList;
        };
        var addDatePicker =3D function(inpId, options) {
                if(!(inpId in datePickers)) {
                        datePickers[inpId] =3D new datePicker(options);
                };
        };
        var getDatePicker =3D function(inpId) {
                if(!(inpId in datePickers)) { throw "No datePicker has =
been created for the form element with an id of '" + inpId.toString() + =
"'"; };
                return datePickers[inpId];
        };
        var grepRangeLimits =3D function(sel) {
                var range =3D [];
                for(var i =3D 0; i < sel.options.length; i++) {
                        if(sel.options[i].value.search(/^\d\d\d\d$/) =
=3D=3D -1) { continue; };
                        if(!range[0] || Number(sel.options[i].value) < =
range[0]) { range[0] =3D Number(sel.options[i].value); };
                        if(!range[1] || Number(sel.options[i].value) > =
range[1]) { range[1] =3D Number(sel.options[i].value); };
                };
                return range;
        };
        var create =3D function(inp) {
                if(!(typeof document.createElement !=3D "undefined" && =
typeof document.documentElement !=3D "undefined" && typeof =
document.documentElement.offsetWidth =3D=3D "number")) return;

                var inputs  =3D (inp && inp.tagName) ? [inp] : =
joinNodeLists(document.getElementsByTagName('input'), =
document.getElementsByTagName('select'));
                var regExp1 =3D /disable-days-([1-7]){1,6}/g;            =
 // the days to disable
                var regExp2 =3D /no-transparency/g;                      =
 // do not use transparency effects
                var regExp3 =3D /highlight-days-([1-7]){1,7}/g;          =
 // the days to highlight in red
                var regExp4 =3D /range-low-(\d\d\d\d-\d\d-\d\d)/g;       =
 // the lowest selectable date
                var regExp5 =3D /range-high-(\d\d\d\d-\d\d-\d\d)/g;      =
 // the highest selectable date
                var regExp6 =3D /format-(d-m-y|m-d-y|y-m-d)/g;           =
 // the input/output date format
                var regExp7 =3D /divider-(dot|slash|space|dash)/g;       =
 // the character used to divide the date
                var regExp8 =3D /no-locale/g;                            =
 // do not attempt to detect the browser language
                var regExp9 =3D /no-fade/g;                              =
 // always show the datepicker
                var regExp10 =3D /hide-input/g;                          =
 // hide the input
               =20
                for(var i=3D0, inp; inp =3D inputs[i]; i++) {
                        if(inp.className && =
(inp.className.search(regExp6) !=3D -1 || =
inp.className.search(/split-date/) !=3D -1) && =
((inp.tagName.toLowerCase() =3D=3D "input" && (inp.type =3D=3D "text" || =
inp.type =3D=3D "hidden")) || inp.tagName.toLowerCase() =3D=3D =
"select")) {

                                if(inp.id && =
document.getElementById('fd-'+inp.id)) { continue; };
                               =20
                                if(!inp.id) { inp.id =3D "fdDatePicker-" =
+ uniqueId++; };
                               =20
                                var options =3D {
                                        id:inp.id,
                                        low:"",
                                        high:"",
                                        divider:"/",
                                        format:"d-m-y",
                                        highlightDays:[0,0,0,0,0,1,1],
                                        disableDays:[0,0,0,0,0,0,0],
                                        =
locale:inp.className.search(regExp8) =3D=3D -1,
                                        splitDate:0,
                                        =
noTransparency:inp.className.search(regExp2) !=3D -1,
                                        =
staticPos:inp.className.search(regExp9) !=3D -1,
                                        =
hideInput:inp.className.search(regExp10) !=3D -1
                                };

                                if(!options.staticPos) {
                                        options.hideInput =3D false;
                                } else {
                                        options.noTransparency =3D true;
                                };
                               =20
                                // Split the date into three parts ?
                                if(inp.className.search(/split-date/) =
!=3D -1) {
                                        =
if(document.getElementById(inp.id+'-dd') && =
document.getElementById(inp.id+'-mm') && =
document.getElementById(inp.id+'-dd').tagName.search(/input|select/i) =
!=3D -1 && =
document.getElementById(inp.id+'-mm').tagName.search(/input|select/i) =
!=3D -1) {
                                                options.splitDate =3D 1;
                                        };
                                };
                               =20
                                // Date format(variations of d-m-y)
                                if(inp.className.search(regExp6) !=3D =
-1) {
                                        options.format =3D =
inp.className.match(regExp6)[0].replace('format-','');
                                };
                               =20
                                // What divider to use, a "/", "-", "." =
or " "
                                if(inp.className.search(regExp7) !=3D =
-1) {
                                        var dividers =3D { dot:".", =
space:" ", dash:"-", slash:"/" };
                                        options.divider =3D =
(inp.className.search(regExp7) !=3D -1 && =
inp.className.match(regExp7)[0].replace('divider-','') in dividers) ? =
dividers[inp.className.match(regExp7)[0].replace('divider-','')] : "/";
                                };

                                // The days to highlight
                                if(inp.className.search(regExp3) !=3D =
-1) {
                                        var tmp =3D =
inp.className.match(regExp3)[0].replace(/highlight-days-/, '');
                                        options.highlightDays =3D =
[0,0,0,0,0,0,0];
                                        for(var j =3D 0; j < tmp.length; =
j++) {
                                                =
options.highlightDays[tmp.charAt(j) - 1] =3D 1;
                                        };
                                };

                                // The days to disable
                                if(inp.className.search(regExp1) !=3D =
-1) {
                                        var tmp =3D =
inp.className.match(regExp1)[0].replace(/disable-days-/, '');
                                        options.disableDays =3D =
[0,0,0,0,0,0,0];
                                        for(var j =3D 0; j < tmp.length; =
j++) {
                                                =
options.disableDays[tmp.charAt(j) - 1] =3D 1;
                                        };
                                };

                                // The lower limit
                                =
if(inp.className.search(/range-low-today/i) !=3D -1) {
                                        options.low =3D =
datePickerController.dateFormat((new Date().getMonth() + 1) + "/" + new =
Date().getDate() + "/" + new Date().getFullYear(), true);
                                } else if(inp.className.search(regExp4) =
!=3D -1) {
                                        options.low =3D =
datePickerController.dateFormat(inp.className.match(regExp4)[0].replace(/=
range-low-/, ''), false);
                                        if(!options.low) {
                                                options.low =3D '';
                                        };
                                };

                                // The higher limit
                                =
if(inp.className.search(/range-high-today/i) !=3D -1 && =
inp.className.search(/range-low-today/i) =3D=3D -1) {
                                        options.high =3D =
datePickerController.dateFormat((new Date().getMonth() + 1) + "/" + new =
Date().getDate() + "/" + new Date().getFullYear(), true);
                                } else if(inp.className.search(regExp5) =
!=3D -1) {
                                        options.high =3D =
datePickerController.dateFormat(inp.className.match(regExp5)[0].replace(/=
range-high-/, ''), false);
                                        if(!options.high) {
                                                options.high =3D '';
                                        };
                                };

                                // Always round lower & higher limits if =
a selectList involved
                                if(inp.tagName.search(/select/i) !=3D =
-1) {
                                        var range =3D =
grepRangeLimits(inp);
                                        options.low  =3D options.low  ? =
range[0] + String(options.low).substr(4,4)  : =
datePickerController.dateFormat(range[0] + "/01/01");
                                        options.high =3D options.high ? =
range[1] + String(options.low).substr(4,4)  : =
datePickerController.dateFormat(range[1] + "/12/31");
                                };

                                addDatePicker(inp.id, options);
                        };
                };
        }
       =20
        return {
                addEvent:addEvent,
                removeEvent:removeEvent,
                create:create,
                destroy:destroy,
                cleanUp:cleanUp,
                addDatePicker:addDatePicker,
                getDatePicker:getDatePicker,
                dateFormat:dateFormat,
                datePickers:datePickers,
                hideAll:hideAll
        };
}();

})();

datePickerController.addEvent(window, 'load', =
datePickerController.create);
datePickerController.addEvent(window, 'unload', =
datePickerController.destroy);

------=_NextPart_000_0001_01CB565C.A52582B0--
