From: <Saved by Windows Internet Explorer 7>
Subject: Dallas County Schools: Smart Teaching TAKS Materials
Date: Mon, 5 Jan 2009 13:10:55 -0600
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C96F37.0B054930"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.dcschools.com/index.php?id=91

<!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>Dallas County =
Schools: Smart Teaching TAKS Materials</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1"><!-- =0A=
	This website is powered by TYPO3 - inspiring people to share!=0A=
	TYPO3 is a free open source Content Management Framework initially =
created by Kasper Skaarhoj and licensed under GNU/GPL.=0A=
	TYPO3 is copyright 1998-2006 of Kasper Skaarhoj. Extensions are =
copyright of their respective owners.=0A=
	Information and contribution at http://typo3.com/ and http://typo3.org/=0A=
--><LINK=20
href=3D"http://www.dcschools.com/typo3temp/stylesheet_fe0e09058c.css"=20
type=3Dtext/css rel=3Dstylesheet>
<META content=3D"MSHTML 6.00.6000.16705" name=3DGENERATOR>
<SCRIPT =
src=3D"http://www.dcschools.com/typo3temp/javascript_757c080409.js"=20
type=3Dtext/javascript></SCRIPT>
<LINK =
href=3D"http://www.dcschools.com/fileadmin/templates/css/reset.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://www.dcschools.com/fileadmin/templates/css/menu-core.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://www.dcschools.com/fileadmin/templates/css/styles.css" =
type=3Dtext/css=20
rel=3Dstylesheet>
<SCRIPT =
src=3D"http://www.dcschools.com/fileadmin/templates/js/yahoo-dom-event.js=
"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://www.dcschools.com/fileadmin/templates/js/container_core.js"=
=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.dcschools.com/fileadmin/templates/js/menu.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>
	YAHOO.util.Event.onContentReady("topnav", function () {
		var oMenuBar =3D new YAHOO.widget.MenuBar("topnav", =
{autosubmenudisplay: true, hidedelay: 750, lazyload: true });
		oMenuBar.render();
	});
	YAHOO.util.Event.onContentReady("headersearch", function () {
		var oElement =3D document.getElementById("headersearch");=20
		function fnCallback(e) { this.value=3D"" }=20
		YAHOO.util.Event.addListener(oElement, "click", fnCallback);=20
	});
</SCRIPT>
</HEAD>
<BODY>
<DIV id=3Dshell>
<DIV id=3Dcontainer>
<DIV id=3Dheader>
<DIV id=3Ddcslogo><A href=3D"http://www.dcschools.com/"><IMG =
height=3D118 alt=3D""=20
src=3D"http://www.dcschools.com/fileadmin/templates/images/header_logo.jp=
g"=20
width=3D336></A></DIV>
<DIV id=3Dsearchform><A=20
href=3D"http://www.dcschools.com/index.php?id=3D10">DIRECTORY</A> | <A=20
href=3D"http://www.dcschools.com/index.php?id=3D165">SITEMAP</A>=20
<FORM name=3Dtx_indexedsearch action=3Dindex.php?id=3D162 =
method=3Dpost><INPUT=20
type=3Dhidden value=3D0 name=3Dtx_indexedsearch[_sections]> <INPUT =
type=3Dhidden value=3D_=20
name=3Dtx_indexedsearch[_freeIndexUid]> <INPUT type=3Dhidden value=3D0=20
name=3Dtx_indexedsearch[pointer]> <INPUT type=3Dhidden =
name=3Dtx_indexedsearch[ext]>=20
<INPUT type=3Dhidden value=3D1 name=3Dtx_indexedsearch[type]> <INPUT =
type=3Dhidden=20
value=3D0 name=3Dtx_indexedsearch[defOp]> <INPUT type=3Dhidden =
value=3D-1=20
name=3Dtx_indexedsearch[media]> <INPUT type=3Dhidden value=3Drank_flag=20
name=3Dtx_indexedsearch[order]> <INPUT type=3Dhidden value=3Dflat=20
name=3Dtx_indexedsearch[group]> <INPUT type=3Dhidden value=3D-1=20
name=3Dtx_indexedsearch[lang]> <INPUT type=3Dhidden value=3D0=20
name=3Dtx_indexedsearch[desc]> <INPUT type=3Dhidden value=3D10=20
name=3Dtx_indexedsearch[results]> <INPUT=20
class=3D"tx-indexedsearch-searchbox-sword sword" id=3Dheadersearch=20
value=3D"Search For..." name=3Dtx_indexedsearch[sword]> =
</FORM></DIV></DIV>
<DIV class=3D"yuimenubar yuimenubarnav" id=3Dtopnav>
<DIV class=3Dbd>
<UL class=3Dfirst-of-type>
  <LI class=3Dyuimenubaritem><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D188">Home</A></LI>
  <LI class=3Dyuimenubaritem><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D7">About DCS</A>
  <DIV class=3Dyuimenu>
  <DIV class=3Dbd>
  <UL class=3Ddropmenu>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D322">About DCS Main =
Page</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    =
href=3D"http://www.dcschools.com/index.php?id=3D158">Administration</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D167">Awards</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D24">Bidding =
Opportunities</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D13">Calendar</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D12">Contact</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D11">Crisis =
Management Plan</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D10">Directory</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D16">Disclosures</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D20">FAQ</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D21">History</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D15">News</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D284">Public =
Notices</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D3">Services</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    =
href=3D"http://www.dcschools.com/index.php?id=3D260">Superintendent</A>
    <LI class=3Dyuimenuitemlast><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D25">Vendor=20
  Questions</A></LI></UL></DIV></DIV></LI>
  <LI class=3Dyuimenubaritem><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D159">Board</A>
  <DIV class=3Dyuimenu>
  <DIV class=3Dbd>
  <UL class=3Ddropmenu>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D323">Board Main =
Page</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D310">Board =
Policy</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D34">Board Member =
List</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D36">Board Meeting =
Schedule</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D37">Board =
Committees</A>
    <LI class=3Dyuimenuitemlast><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D169">Board Agendas / =

    Minutes</A></LI></UL></DIV></DIV></LI>
  <LI class=3Dyuimenubaritem><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D316">Divisions</A>
  <DIV class=3Dyuimenu>
  <DIV class=3Dbd>
  <UL class=3Ddropmenu>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D317">Instructional =
Media</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D318">Psychology</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D319">Technology</A>
    <LI class=3Dyuimenuitemlast><A onfocus=3DblurLink(this);=20
    =
href=3D"http://www.dcschools.com/index.php?id=3D320">Transportation</A></=
LI></UL></DIV></DIV></LI>
  <LI class=3Dyuimenubaritem><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D6">Departments</A>
  <DIV class=3Dyuimenu>
  <DIV class=3Dbd>
  <UL class=3Ddropmenu>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D324">Departments =
Main Page</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D67">Business</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    =
href=3D"http://www.dcschools.com/index.php?id=3D74">Communications</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D225">Facilities =
Management</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D68">Fleet =
Maintenance</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D69">Human =
Resources</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D112">Instructional =
Media</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D71">Internal =
Audit</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D113">Psychological =
Services</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D75">Risk / Emergency =

    Management</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    =
href=3D"http://www.dcschools.com/index.php?id=3D157">Superintendent</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D114">Technology</A>
    <LI class=3Dyuimenuitemlast><A onfocus=3DblurLink(this);=20
    =
href=3D"http://www.dcschools.com/index.php?id=3D77">Transportation</A></L=
I></UL></DIV></DIV></LI>
  <LI class=3Dyuimenubaritem><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D4">Service Centers</A>
  <DIV class=3Dyuimenu>
  <DIV class=3Dbd>
  <UL class=3Ddropmenu>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D325">Service Centers =
Main=20
    Page</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    =
href=3D"http://www.dcschools.com/index.php?id=3D101">Carrollton/Farmers=20
    Branch</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D102">Coppell</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D104">Irving</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D105">Kleberg</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D106">Lawnview</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D107">North =
Beckley</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D108">North =
Dallas</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D109">Pat Raney</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D110">Richardson</A>
    <LI class=3Dyuimenuitemlast><A onfocus=3DblurLink(this);=20
    =
href=3D"http://www.dcschools.com/index.php?id=3D111">Shields</A></LI></UL=
></DIV></DIV></LI>
  <LI class=3Dyuimenubaritem><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D160">Jobs</A>
  <DIV class=3Dyuimenu>
  <DIV class=3Dbd>
  <UL class=3Ddropmenu>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D326">Jobs Main =
Page</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D26">Bus Driver</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D27">Bus Monitor</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D28">Fleet =
Maintenance=20
    Technician</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D33">Fleet =
Maintenance General=20
    Service</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D286">Help Desk =
Manager</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D285">Network =
Security Engineer=20
    </A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D29">Systems =
Analyst/Programmer =96=20
    Mid Level Developer</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D311">Technology =
Operations=20
    Manager</A>
    <LI class=3Dyuimenuitemlast><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D280">Transportation =
Area=20
    Director</A></LI></UL></DIV></DIV></LI>
  <LI class=3Dyuimenubaritem><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D262">Employee Info</A>
  <DIV class=3Dyuimenu>
  <DIV class=3Dbd>
  <UL class=3Ddropmenu>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D327">Employee Info =
Main Page</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D172">2008-2009 =
Voluntary=20
    Benefits</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D173">Survivor =
Benefits</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D174">Forms</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D232">Types of =
Leave</A>
    <LI class=3Dyuimenuitem><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D271">Bus Driver =
Certification=20
    Classes</A>
    <LI class=3Dyuimenuitemlast><A onfocus=3DblurLink(this);=20
    =
href=3D"http://www.dcschools.com/index.php?id=3D176">Links</A></LI></UL><=
/DIV></DIV></LI></UL></DIV></DIV>
<DIV id=3Dcontent>
<DIV id=3Dleftcolumn>
<DIV id=3Dsectionheader><A=20
href=3D"http://www.dcschools.com/index.php?id=3D6">Departments</A></DIV>
<UL id=3Dleftnav>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D324">Departments Main =
Page</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D67">Business</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D74">Communications</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D225">Facilities =
Management</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D68">Fleet =
Maintenance</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D69">Human =
Resources</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D112">Instructional =
Media</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D71">Internal Audit</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D113">Psychological =
Services</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D75">Risk / Emergency=20
Management</A>
  <LI><A onfocus=3DblurLink(this);=20
  =
href=3D"http://www.dcschools.com/index.php?id=3D157">Superintendent</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D114">Technology</A>
  <UL id=3Dleftnav2>
    <LI><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D191">A.S.N</A>
    <LI><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D190">Basic =
Netiquette Rules</A>
    <LI><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D224">Information</A>
    <LI><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D195">Acceptable Use=20
    Procedures</A>
    <LI><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D196">Online PC =
Training</A>
    <LI><A onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D197">Pilot =
Program</A>
    <LI><A class=3Dactive onfocus=3DblurLink(this);=20
    href=3D"http://www.dcschools.com/index.php?id=3D91">Smart Teaching =
TAKS=20
    Materials</A></LI></UL>
  <LI><A onfocus=3DblurLink(this);=20
  =
href=3D"http://www.dcschools.com/index.php?id=3D77">Transportation</A></L=
I></UL></DIV>
<DIV id=3Dbreadcrumb><A onfocus=3DblurLink(this);=20
href=3D"http://www.dcschools.com/index.php?id=3D1">Home</A><SPAN=20
class=3Dbcgt>&gt;</SPAN><A onfocus=3DblurLink(this);=20
href=3D"http://www.dcschools.com/index.php?id=3D6">Departments</A><SPAN=20
class=3Dbcgt>&gt;</SPAN><A onfocus=3DblurLink(this);=20
href=3D"http://www.dcschools.com/index.php?id=3D114">Technology</A><SPAN =

class=3Dbcgt>&gt;</SPAN><A onfocus=3DblurLink(this);=20
href=3D"http://www.dcschools.com/index.php?id=3D91">Smart Teaching TAKS=20
Materials</A></DIV>
<DIV id=3Drightcolumn><!--TYPO3SEARCH_begin--><!--  CONTENT ELEMENT, =
uid:267/text [begin] --><A=20
id=3Dc267></A><!--  Header: [begin] -->
<DIV class=3D"csc-header csc-header-n1">
<H1 class=3Dcsc-firstHeader>Smart Teaching TAKS Materials</H1></DIV><!-- =
 Header: [end] --><!--  Text: [begin] -->
<P class=3Dbodytext>Hello, and welcome to Smart Teaching. Dallas County =
schools=20
and its partner school districts (Carrollton-Farmers Branch, Garland, =
Highland=20
Park, and Richardson) have developed these materials to assist you in =
better=20
understanding the Texas Assessment of Knowledge and Skills (TAKS) test. =
</P>
<P class=3Dbodytext>Our team has analyzed every question on the 2003, =
2004, and=20
2006 released tests so that you can easily see:</P>
<OL type=3D1>
  <LI>Detailed analysis of every TAKS items
  <LI>Why are correct answers correct?
  <LI>What kinds of distracters/incorrect answers were used? How did =
students=20
  think/compute that caused them to answer incorrectly?
  <LI>What information will help teachers focus their instruction more=20
  specifically?</LI></OL>
<P class=3Dbodytext>Please view the <A class=3Ddownload=20
href=3D"http://www.dcschools.com/fileadmin/Smart_Teaching_Introduction.wm=
v">introductory=20
video</A> (11 minutes 26 seconds) about the Smart Teaching materials. =
</P>
<P class=3Dbodytext>Additional copies may be purchased for $15 per CD. =
To order,=20
e-mail <A href=3D"mailto:rlanders@dcschools.com">Robin Landers</A> or =
call=20
214-944-4500. </P>
<P class=3Dbodytext>We at Dallas County Schools believe that educating =
children=20
must be a partnership. We hope that you will find these materials =
helpful as you=20
teach, re-teach, and prepare your students to be successful in the =
rigors of=20
TAKS assessment.</P><!--  Text: [end] --><!--  CONTENT ELEMENT, =
uid:267/text [end] --><!--  CONTENT ELEMENT, uid:262/text [begin] --><A=20
id=3Dc262></A><!--  Text: [begin] -->
<TABLE class=3Dcontenttable=20
style=3D"BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; =
BORDER-LEFT: black 1pt solid; BORDER-BOTTOM: black 1pt solid"=20
cellSpacing=3D0 cellPadding=3D0 width=3D"100%" border=3D0>
  <TBODY>
  <TR>
    <TD vAlign=3Dcenter rowSpan=3D2>
      <P class=3Dbodytext><STRONG>File Name (Size)</STRONG></P></TD>
    <TD align=3Dmiddle colSpan=3D3>
      <P class=3Dbodytext><STRONG>Estimated Download =
Times</STRONG></P></TD></TR>
  <TR>
    <TD align=3Dmiddle>
      <P class=3Dbodytext><STRONG>Modem</STRONG></P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext><STRONG>Cable / DSL</STRONG></P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext><STRONG>LAN</STRONG></P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_03__2003-200=
6_.pdf"=20
      target=3D_blank>Math - Grade 03 (2003-2006).pdf</A> (1.98 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>5 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>32 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>11 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_04__2003-200=
6_.pdf"=20
      target=3D_blank>Math - Grade 04 (2003-2006).pdf</A> (1.7 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>4 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>27 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>9 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_05__2003-200=
6_.pdf"=20
      target=3D_blank>Math - Grade 05 (2003-2006).pdf</A> (3.75 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>10 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>1 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>20 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_06__2003-200=
6_.pdf"=20
      target=3D_blank>Math - Grade 06 (2003-2006).pdf</A> (2.1 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>5 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>34 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>11 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_07__2003-200=
6_.pdf"=20
      target=3D_blank>Math - Grade 07 (2003-2006).pdf</A> (2.46 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>6 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>39 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>13 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_08__2003-200=
6_.pdf"=20
      target=3D_blank>Math - Grade 08 (2003-2006).pdf</A> (2.14 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>5 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>34 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>11 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_09__2004-200=
6_.pdf"=20
      target=3D_blank>Math - Grade 09 (2004-2006).pdf</A><A =
class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_09__2004-200=
6_.pdf"=20
      target=3D_blank> </A>(1.34 MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>3 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>22 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>7 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_09-11__2003_=
.pdf"=20
      target=3D_blank>Math - Grade 09-11 (2003).pdf</A> (0.79 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>2 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>13 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>4 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_10__2004-200=
6_.pdf"=20
      target=3D_blank>Math - Grade 10 (2004-2006).pdf</A> (1.43 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>4 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>23 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>8 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Math_-_Grade_11__2004-200=
6_.pdf"=20
      target=3D_blank>Math - Grade 11 (2004-2006).pdf</A> (2.46 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>6 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>40 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>13 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Grades_03-06__200=
3-2006_.pdf"=20
      target=3D_blank>Reading Grades 03-06 (2003-2006).pdf</A> (3.15 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>8 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>50 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>17 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Grades_06-08__200=
3-2006_.pdf"=20
      target=3D_blank>Reading Grades 06-08 (2003-2006).pdf</A> (1.78 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>5 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>28 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>10 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Grades_09-11__200=
3-2006_.pdf"=20
      target=3D_blank>Reading Grades 09-11 (2003-2006).pdf</A> (1.86 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>5 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>30 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>10 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Grades_09-11_SAO_=
_2003-2006_.pdf"=20
      target=3D_blank>Reading Grades 09-11 SAO (2003-2006).pdf</A> (34.3 =

MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>88 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>9 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>3 min</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Passages_-_Grades=
_03-06__2006_.pdf"=20
      target=3D_blank>Reading Passages - Grades 03-06 (2006).pdf</A> =
(3.15=20
    MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>8 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>50 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>17 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Passages_-_Grades=
_03-08__2003_.pdf"=20
      target=3D_blank>Reading Passages - Grades 03-08 (2003).pdf</A> =
(0.44=20
    MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>1 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>7 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>2 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Passages_-_Grades=
_03-08__2004_.pdf"=20
      target=3D_blank>Reading Passages - Grades 03-08 (2004).pdf</A><A=20
      class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Passages_-_Grades=
_03-08__2004_.pdf"=20
      target=3D_blank> </A>(4.37 MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>11 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>1 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>24 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Passages_-_Grades=
_06-08__2006_.pdf"=20
      target=3D_blank>Reading Passages - Grades 06-08 (2006).pdf</A> =
(1.23=20
    MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>3 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>20 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>7 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Passages_-_Grades=
_09-11__2003_.pdf"=20
      target=3D_blank>Reading Passages - Grades 09-11 (2003).pdf</A> =
(1.46=20
    MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>4 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>23 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>8 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Passages_-_Grades=
_09-11__2004_.pdf"=20
      target=3D_blank>Reading Passages - Grades 09-11 (2004).pdf</A> =
(0.62=20
    MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>2 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>10 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>4 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Reading_Passages_-_Grades=
_09-11__2006_.pdf"=20
      target=3D_blank>Reading Passages - Grades 09-11 (2006).pdf</A> =
(1.67=20
    MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>4 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>26 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>9 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Science_-_Grade_05__2003-=
2006_.pdf"=20
      target=3D_blank>Science - Grade 05 (2003-2006).pdf</A> (2.39 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>6 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>38 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>13 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Science_-_Grade_08__2006_=
.pdf"=20
      target=3D_blank>Science - Grade 08 (2006).pdf</A> (1.19 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>3 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>19 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>7 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Science_-_Grade_10__2003-=
2006_.pdf"=20
      target=3D_blank>Science - Grade 10 (2003-2006).pdf</A> (2.67 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>7 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>43 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>14 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Science_-_Grade_11__2003-=
2006_.pdf"=20
      target=3D_blank>Science - Grade 11 (2003-2006).pdf</A> (2.68 =
MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>7 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>43 sec</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>14 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Social_Studies_-_Grade_08=
__2003-2006_.pdf"=20
      target=3D_blank>Social Studies - Grade 08 (2003-2006).pdf</A> =
(7.89=20
    MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>20 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>2 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>43 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Social_Studies_-_Grade_10=
__2003-2006_.pdf"=20
      target=3D_blank>Social Studies - Grade 10 (2003-2006).pdf</A> =
(9.08=20
    MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>23 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>2 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>50 sec</P></TD></TR>
  <TR>
    <TD>
      <P class=3Dbodytext><A class=3Ddownload=20
      =
href=3D"http://www.dcschools.com/fileadmin/pdfs/Social_Studies_-_Grade_11=
__2003-2006_.pdf"=20
      target=3D_blank>Social Studies - Grade 11 (2003-2006).pdf</A> =
(7.98=20
    MB)</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>20 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>2 min</P></TD>
    <TD align=3Dmiddle>
      <P class=3Dbodytext>44 sec</P></TD></TR></TBODY></TABLE>
<P class=3Dbodytext>Download speeds are estimates. Actual speed may =
vary. </P>
<P class=3Dbodytext>&nbsp;</P><!--  Text: [end] --><!--  CONTENT =
ELEMENT, uid:262/text [end] --><!--TYPO3SEARCH_end--></DIV>
<DIV id=3Dminheight></DIV>
<DIV id=3Dfooter>
<UL>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D188">Home</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D7">About DCS</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D159">Board</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D316">Divisions</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D6">Departments</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D4">Service Centers</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D160">Jobs</A>
  <LI><A onfocus=3DblurLink(this);=20
  href=3D"http://www.dcschools.com/index.php?id=3D262">Employee =
Info</A></LI></UL>
<P>=A9 2008 Dallas County Schools</P></DIV></DIV></DIV>
<DIV id=3Dleftshadow></DIV>
<DIV id=3Drightshadow></DIV></DIV></BODY></HTML>

------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.dcschools.com/fileadmin/templates/images/header_logo.jpg

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAARgAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQABAMDAwMDBAMDBAYEAwQGBwUEBAUHCAYGBwYGCAoICQkJCQgKCgwMDAwMCgwMDQ0MDBERERER
FBQUFBQUFBQUFAEEBQUIBwgPCgoPFA4ODhQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgAdgFQAwERAAIRAQMRAf/EALIAAAEEAwEBAAAAAAAAAAAA
AAEAAgMFBAYHCAkBAAIDAQEBAAAAAAAAAAAAAAABAgMFBAYHEAABAwMDAwIDBAgEBAMJAAABAgME
ABEFIRIGMRMHQSJRYRRxgTIVkaGxQmIjFgjBcqIzUpJzJPCDo4JDszQltWYXOBEAAgEDAgIGCQMC
BQUAAAAAAAECEQMEIRIxUUFhcSITBfCBkaGxwdEyFOFCUnIj0jMVNQbxYlM0Jf/aAAwDAQACEQMR
AD8A9hePPHeB8e4KPjsZGb/MS2j8xyO0d6Q8B7lFRuQm5O1F7JFK5cc3VlVu2oKiNwqotFQAqAFT
ANAxGkIQNMAnpQMQ60gCelSAYDrSoIeLUAAkfCkMQpiFQACaABSAIoARpgCgBUgFQALUAGgBUAKg
BUAKgBUAKgBXoAV6AqK9ACvQFQCgA0gFQAr0AK9ACvQAqYAuaYBFACoAVACpAEGmAiaAG31oAfem
AwK1ooFTzpwTzF+cf3A5/AOyN2Dzkb6fCi90d3Elewov0DqC859tq2buLTGUumL19Zh2suuW4dEl
p6vRnopJv0rHNscpVhSYVAkk0qBUfTGNJ1tSAVIBC9OgBuaAFegAUAKkAqAFQAqAFQAqAFQAL0AK
9AAvSAVABpiACb0xhpCDSGKgBUAC4pgLSgAaUAK/woEKmMNMBXNABpAG1AxhNqBDgQalQQ1emopU
ASVEimBrHkDLOYbimSfjqKZr7ZjRFDQh18FO4fNIur7q6ca3vuJHNk3Nlts8DcnXM4RzfB53G+yb
jSzNY9AVMvFW0/JVrH5V7OxaVy3KL4M8DmZDtXoyXFa+8+iGCy0TO4aBm4Ct8HIx2pcdXqW3kBab
/Ox1rw84OEnF8Uz6Fauq5BTXBqpnKVc2+FVlhIgWFAwqPoKQxopAPAH30DG0yIqAAVUAIGkMV6AF
c0AGkAqABegBXNAAoAVACoAVAANABBoAA0NMAkm+lIQrmnQAg0qDFe9ADSQDToJjSuigC3UUCoUm
gBX+dMQr/OgBwNA0OvSGG9tKYEZFzemIbusaBEn4k/KmMjSbKsaANG5+k5F5iANWo47ix6b19P0D
9tbGDCicuZh+YXKyUeR5E854sM8nx6ALXhg/+quvV4GsX2nhPN5UuLs+Z6B/tc5UcjwWRxmUu8vj
7xSyD1MSUVON/oX3E/IWrznnWPsuqa4S+KPV/wDHMrxLDtvjB+5+jO5tpv7j91YB6tDyu1wOtJhU
CbqqIEg00pjFe1AyMroEDdekRqK9IBaUxoNABBpDCTSGNuaYCuaAFc0AK5oAVzQArmgBXNAApAAm
1MTYgaYh1IYqYCoANICIq1piBe9AVFekIck0AC9SGKgBwNhSGHdRQBbqYCCgTQASm/20wGbig2PS
gQn1JbaU+o2S2CpR+QFzTSbdERk6KrNDkyBKddkL/E4oq+wHoPur0sI7YpcjytybnJy5nmjz32/6
txt+n0I/+M5W95f9j7TyXnH+ZHs+YPCnKI/GPIGNSpztwcv/APTZdzZN3yO0o620cCNfQE1X5pY8
Ww+cdfT1FvkuUrGTHlPuv18Pee1lLDaQkdfQV4E+pgbSVXJ6VGg0SmyR8BQAzua6UgATfWkAzrTo
AbGigBAFFBBvbpQMRNAwA0APGtJjQDQAKQCoAVACoEKmACTQAL/GlQBEi2nWmAAaYh9xSGK4oAVx
QAr0UERnqadBA0ooAqKAIUUANMYaAHA0AjEymTgYbHyMrlHhHx8RBdkyFAlLbY6qVtBNh1J9BrUo
xcnRcRSkoqr4Gjr84+KkhKk8jbWFkBPbjynL3/yMmuj8S7yOb8u1zMpjyvwiWr/tJzj6f3VJjvpB
/wCdCTUlh3eRB5trmWLXPcK4AW0vrB+Ddv2kVL8K51EXnW+sbJ59iGkKvFlrt0IQ2B+typLBnzRB
59vkzU855ThyI6sXHivsKkEJL7xQEhIN7e0n8XSumzhuEqt8Dmv5qnBxS4lSM+jt/irRoZZ55855
QPcnx6wekMD/ANVdbWBpF9p5fzdVuLs+ZzVqa+680iKVGSpSQzsJCt99LW9b1oSkkteBiwhJtJcT
3VxjyyxMxcH84gSDlgy2mctrtqaL4SAtSLqSbE3I0rwVzBe57Xp0H1i1nrYt671Ne021rnuKcBIj
ykD0KkI/wWaoeFPqOheYW+TI3ufYFqxfL6Pjdsm36Cag8K51D/OtvmVz/l3x9D3GblFxwn1VFkqv
/wAjaqj+Hd5E1mWufxI2vOHih1TLaOSMhx9SW2ULZkIUpajYJAU0Dcn0pfiXf4k/zLK/cb+FBQCh
cAgEAgpOvxBsRXMdRwXkGZ5/H884fxzD5pOY47mMa5lnLQ8UuQyoKlfymlrhEbB2UgFaVK+JPWtq
3C08V3XBbk6cZdXX1mFcuXllq0pvbJV4R6/+3qLvnbflrgmJlcu47yX+qcfjEKk5HBZmFEbdXFb9
zimX4DUY7kpBNlI+f8Jpx/AvSUJR2t8Gm/g6l2R+RZi5xlvS4ppcO1UN54NzfE884hA5hjrsQpja
lutOkbmHGiUOoWdB7FJPu9RrXHkY8rVxwfFHdj343ramuDJcycVyji+RbhZFTsNxpY+sxUxbLiVt
DeNj8VaVJIIFwFajQ3BIqMFK3NVWvWvkxz23IOj06n80easc5Om/2lP51zJ5BvLwnZLzctibIZWt
S8h21B7YsB1JSTo5e3Ua16CSSz9tFR06FyPORbfl+6rqq9L/AJe89JcHkJb4FxuRIcCUJxEFbrri
gAB9M2SpSj+2vPZC/uyS/k/iejx3/ai3/FfAuoWRg5OOmXjpTMyKq4S/HcS62SOtlIJFUyi4ujVC
+MlJVTqiFvN4Z7IKxLWSiuZVFyuCl9tUhIHW7YVuFrfCm7ckq0dCKuRb21VeQM5msfxzDTs9lnez
jccw5JlOdSG2klRsPUm1gPU07dtzkoriwuXFbi5S4I5fwmZzzy1jRy7JZaRxHiU1SvyTDYoMfXOs
IUUh+TKfacI3EHahpKdNbkddK/G1jPYkpyXFvh2JGZjyu5Md7eyL4Jce1v6FrEwHPeLc6wv0vIsh
yDg2TEpjKxckiO89DfbjqdYdD7bbag2pSNnyUQNdw21SuWrlqVYqM1SlK6666Fit3rd2NJOUHWta
aaaam+yc3hocxrHzMjFj5B//AGIrrzbby7/8KFKCj9wrhVuTVUnQ7ncinRtVMiTLiREpXLfbYSoh
KVOrSgFRNgAVEa1FRb4EnJLiNfmRIym0SX22VvKCGkuLSgrUohICQSLkkgAChJvggckuIXZURl1p
h55tuQ/u7LS1JStewblbUk3NhqbU0m9R7kiCDl8Tkm3XsdOjy2WCUPOR3UOpQpN7hRQSARbW9SlC
UeKoQjOMuDTNU4T5Qw3NX+RIjJTCj4LJu4pDsh5G6QWEpKnQnTakqJCdTcC+l7DpyMWVpRrruVew
5sfMjdcqabXTtNw/MYIa7/1TXYKtgd3p2brXte9r1ybXyOveuZK0+zIQHWHEutnotBCk6fMUqUJJ
1H0AMvqaZEF6AASKYBSdKQwb6kIXcoAeFiwqIw7kkWOoPUUDPMfmP+2xbzr3L/ExEDKAl6bx1BCI
z56lcYH2IX8Wz7D+7tOit3E8wX2XdVz+p5zN8tlrOxo/49D7Dh/GfKWZ4/JMHP4wPrYWWn0WMWSh
aTZQUlQIuCLbdqa9H+JGSrFnlP8AUp23Sa+TO+cR8rcDzCUNLmHGyVWHanp7Qv8A9QFTf6VVyTxL
keivYdtrzGzPpo+s6DIbiyIwfjrQ6ysXQ4ghSVD4gjQ1yUaNFNNVRzjlEdASv5U0M0NfK3IpVHfX
70aA36j40x0OSeS82MhmYroVfbH2/wCtRrTxJUi+0wvMYVmuwtfG2HS5ITlZSbrOkZJ9Enqr7T6f
Kq8m/XuotwcTb33x6D0nxqMgpRpWezXNvmZLBYOKH8vOYhNkXSX3EoKrf8IJufupxhKXBVKrl2Ft
Vk0jknMvNnE4aVs4WO9lXxezgH07H/M4N/8AoruhgzfHQy7vm1qP21l7jjTvIee+Sc01gONQh9bL
VZuLDRdQT6qccWTtSn95ftAq25atWY7pPRFVrKv5E1GC1fI9W+F/7fsJ44Q1n+QKTmudLF1TV3Wz
EKhqiOF631sXT7j6bRe/lMvPd3ux0j8e09rg+XRs96fenz5dn1O0Ke1NhWaa1TgnInL/AN2XEVf/
AI06P9WQrbt/+jP+r/CYV1//AEIf0f4jr/MsxBwnEs5lsmpIgRIMh18KtZSQ2r269So+0D1JtWVZ
g53IpcWzWv3FG3KT4JM8x+NMThMR454KecZCa6xkcjOyGN4NHYVK/N+4EIY3sJGqGyjvDufyzuF+
tehypylen4aWiScuG31+7mebxIRjZt+I3q21Dju5ae/kbT4sKsZ5S8q4SJilcexbkGHPGBKmlCO6
7GSskBhSmklXdKilskC4Tf21zZfesWpN7nVqvrOrD7t+7FLaqJ05adWhrmC//jTJf+f/APc010XP
9xXp+057f+2v0/cb7llcVGJ8W/1PPlz0jGMGDwSIx9YjKyBDb2OONCwIZ/EC6dn2e6/BDxN13Ykt
fv4bdfn1HfPw9tre29NILXdp8uvQpfEjMyPzPzFxvEx/6VYcbjPwcepxsox8qUw7ZYLClNpsVJUQ
2SBYAH2irsxp27Mm9/HXnRlOEmrl6EVs4UXJtFT4/m4njOa4f498m8Vd41zTEzirj/JoqWyzkXnS
tBQt8AlXe7u1dlKBVa+w2FW5MZXIzuWpbotax5erqKsaUbcoWr0Nk4vuy5+vr9KHWf7h4M3I+GuV
x8elS5CWGJCgm9+zGlMvPHT0DaFXrL8tko5EG/TQ1fM4uWNNL0o0WPhTKQct4o4hIx6klpnGRobo
RbR+I2GHQbeu9CjVedBxvzrzfvLMCaljwa5JezQs/I3LEcM4Zmc4l5pvIsQ5K8Y28pIDstthx1CA
CRuPsKikegNVY1nxbkY9FVXsqWZV7wrcpdNHTtoc18VeP+Kc38Nx5PIIrOVzHKmpEnL5uSgPTVy1
uuIC+6r3gs2CUWUALfM1o5mTctZFIuihSi6KfqZuHjW72NWSq51q+mv6HEvzORyjwxwbO51pMnPY
rmUXBxcu8lKpa8ellx9LZdPuKApW2xP7tbOxW8mcY8HByp0V4GNvdzGtyl9yuKNemnE7H55xOKa5
14pzTUJlvLyOUQGJE5LaUvuNIfZKULWBdQSegPSsny+cvCuxrpsehr+YwirtqVNd619aK/nHEOPZ
T+5fjMWXEvHy+Gkv5RtDjjaZKmkSEAObFC6SlKUqT0UBZVxU8e9OOFJp/bJU6uBXkWISzYpr7ouv
XxJcHxbj3HP7jcpxbD45iPxjNcX72Sw2xKoTqu+lBuyoFFrJ6W9VfE0rl2c8NTk+9Gej6Qt2YQzH
CK7soaroKvw5424Xy7E+S8ZlcJBWv+oMlj4MwxWVPw2ikJQI69u5sNk3SEEAVbm5Ny3K21J/anx4
9pXg4tq7G6nFfdJLTh2FXwtMbPeLkeEchCio5WxyNeCmoDTZcaZYWqTInDT8aWEOsod6k7fjrbfr
C/46b27d3yS9utCuxSdj8dpbt+35uXsqqnqLE4jF4HHsYnDQ2oGNip2MRY6A22lPyA9T1J9a83Oc
pvdJ1Z6aEIwW2KojNvUCZEpWpqREaVUCBuoGOSrSkMbuqREG6gY8G4oGg6/CkMIBPpRQDknlnwbg
/IyHMpDCMZy1tP8AKyCR/Lf2iwRISPxD0Cx7k/MaVr4PmE8d0eseX0MDzPyiGWqruz58+08l5Tjm
Y4bl3cJyOGuHPYOqF6pWg9FtqGikm2ihXt7N6F2G6Dqj5pfx7mPc2XFRoc3yXK4Zfdws9+Eeqksu
KShR/iTfar7xU5W4yXeVSMb84OsG0ZSvMXICgs5dpqenoXUjsOn5naCk/wDKK4LmHD9uhsWPNLn7
lu9xr8vl+LycnepSoyj+66LC/wDmFx+ms+ePOPWblrMtz6u0psqzClZKPJlPtpgNNAqVuBCzuNki
3X52qdtyUWktSu9GMppyfdSLnG89h4pR+jYVJUPwXPbR+wn9VOGLJ8XQhez4RXdVS2V5V5fNHajz
BjmOmyINirf9Q3Xf7CK0beLbXFVMG/5jelwe1dRjt5AySt+a6uRIc1U66orWT8SVEk12bacDNU66
y1Zd8K8Z8j8mZYwcGz2oDSh9dlHQRHYSfiR+JZ/dQnU/IXI48vMt48ay49C5ndgeX3cudILTpfQv
Tkey/Hvi/jfjbFiBgmAqW6B9dknQDIkLHqpXokH8KBoPtua8LlZc8iVZepcj6fhYFvFhthx6X0s3
PYquKhokKkLudKkQOJ8r8dS2uewPJOX8ixsHmYjRhYwPQ47LAjfzCWrPSP5lw6vceuulrC2vayV4
TtK25J6vV/Qxr2M/FV2VxRa0Wi+psH9AR+ctRZXL+VOcuwTSw6zjYaY8TEvONm4U6mPvW7tNvat4
p/hqj8h2qqEdj58X7+HsOj8ZXknOe9clRR93H2j/ACX43TyiRguT4nPq4rmuI956DkER0SWEMKSn
elbKlITtAR8bWuCDSxcnw1KLjvU+geXi+I4zUtjh0mjcR4c1yblPIOY8F8nvTp8thnH8kfcxjDyH
pCUACxIaQEBCQEpaT7bC61ag9t694cIwuW6Jax1OKzY8S5Kdu7VvSXd9PcXEXwTmYvjt/wAYM8xS
ONSFKUtRxiDJAU8HykL+otYrH/Df51TLPi73i7O92/oXR8ukrPg7+7/T6+ZnZTwpmpv9JZKBzBWO
5Xw5sw8dl2sehaFwi0lrtuR1PFJVtCgVbrEKIKelq450VvThWM+Kr09tCyeBJ7Gp0lDROnR2VIm/
Akk5vkuTl8znyIfLoBhZ6MqLES7IfLKmu73AjahCSrchtttNtAVEaF/6gtsUoKsHVasS8ue6Tc3S
ao9EWivGmXkucdneQOWIzOL4W8MnCUiAIL7kiMm7b0t8yHgvtgX9iEbjqq9V/lRW5W4bXPTjX2Ki
LfxJPa7s9yhrwp7XV/I2/jPNuI88ayCeNT28tFhKEacpCF9rc6knZdxICwU9dtxXJdsXLNNypU67
WRbvV2OtOJp2L8R5Tg8+XJ8X8j/JsRNc78jjeTinJY0OnQlna8w61cdbLN/uFuueZG6krsdzX7k6
P5pnHDClZbdmW1P9rVV8U0ZsfxtmsvyeNybyDnms4iFHkx4ODiQvoscyZrZZdWUrffW4otqUi61d
DUHlRjBwtx21prWr09SJrElKandluonRUotfWyvwfiXkfEMXkOL8P5iYHEZq3Vx4cvHiZMgpfJLi
Ysn6htIvfTuMrsddSTU7mZC5JTnCsl10T7VT5ldvCnai4QnSL6qtdjr8ifkPg3jWV8bQvHGIfdw8
bFvNzcbkUAPPImt77vOAlG9Su4vdZSeulgAKVrPnG87sta6NdXIld8vhKwrUe7TVPr5lPmfCXKuS
r4/O5J5Elzc1x+YidFlox8ZhlCmdqm9jCTt37khSnHe5foEgXq6Gdbt7lG2kpKnF/H6UKbmBcubX
O424uvBfD61LaZ4r5BL59ifIL3LQvI4eOYMZleNb2rjrCwvuFDyAVq3qO5KUgHom2lVRy4K07ezS
TrxLXhzd1Xd+sVTh+pOnxnmD5Q//AGZ/UiPqex+X/l30Ce3+Xd3udrf3777ady3XXbbSl+VHwPC2
9da9PsH+JLx/F3dVKdHt94ziHijKcM5XmstiuVvo4zm57mVkcfERgn6h0kqSZLhcVs1sdiEqIA93
qS9lxuwinDvRVK1+QWMOVq5KSn3ZOtKL4lf4+45gsp5T5z5LxaErjuOtYSI+LFtyRGab+teb9LFY
S3uHUpXrrVmRdlGxC0+36FeNahK/cur+n2cfTtOu3rKNYRNAmQKIuTTI1G3FOgVBuFFAqFKtKBg3
GmIO80DJUK0pDQ7eKBh3DrQBCp5tJNzr8qkKpqnOeGcd8gYlWLzkbctAJiTW7JkR1n95tVvW2qTc
H1FdeNk3LEt0X6uZn5uFayobZrsfSjxh5D8V8w4LlkY+RGXPgyio4/Ix0EtupTa+4a9tQuLpUfsJ
Gte0x/MLd6Na0fSj5xl+UX7FzbTcnwa9NDW2/H2dkp3ytsZJ6p/3F/oGn+qo3MyPRqdFjyyf7mkY
03i+PwTK5c9svJbFypw3BPoAnQa/OuN3pzdEayxrVqNXqUkWJ+fY+U4EJbkIdJjJSAEpG0ezT0P7
daslLw5IphDxoN9NdPoUKEPsuKQpJStBKVJULEEaEV3RMmaXBlnHlFFtwI/WK6IyOCduvA7t4a8L
ZjyI21yDKKXA4aFkCQm3elltRStLIN7JBBSpwiwOguQbZed5nGx3Y6z+Haa/lnks8l7592HvfZ9T
2VgsZieNYxjDYWG3CxsYbWmGhb7Som5Uo+qlG59a8XcuSuS3SdWz6NZtQswUIKiRapkNqtrY/Oqq
F9R+6/rQMiUo3NSInnLBcr47h/OXN4HlLsR8pPVGa4vOySUmMnGpSsJabW5dDYWFJKugUrcD7tK3
blqcsaDtcF91OZ5+3ehHKmr3F0215HX+JcWwXj3GZn6CS1H47Lmv5lpBCWY8Nl5lvuICt23thTan
AdAAq3QXrLvXZXpKv3JU7TVs2o2Yyo+63XsKRfmfjyZmLQnD5xWEzMhmJj+Rfl6k4xxyQoIa961J
cCVk+1XasrqLirfwp0esariq6lX58KrSVJcJU09PUc54JznH8P5b5TZOLyeayDvIX5Ax2EhrmSAy
ndudXYpQhN9BuWCo/hB1rvyLDuW7WqitvFuhnY+QrVy7o5PdwiqnW+M+TuH8o4i7ziFNMXAxC4me
uYOy5GWyAVodTdQCgFJNkk3uLVl3cW5bueG1q+XSa1rLt3LfiJ6LjXoKlzzdxqJHg5XK4rMYvi+T
WhuFySbEQ3j193/bUra6p5tCxqlTrKQRr0qf4E22k4uS/anr9PeV/wCoQSTkpKL/AHNafX2o2fk/
OsBxRmAqetyTNyzgYxGOgo+olTHCAbMoBAIAIJUpQSPU1z2rE7lacFxb4I6b2RC3SvF8EuLK7B+U
MHl+RniE+FP4/wAoLX1MfF5dptpx9gXutlbLjzSwLG4S5fQ6aG1lzFlGG9NSjzRVbzIynsacZcn6
NHOPDOXxuAyfmbMZV9MXGQOTZCRJfV+FDTbjyibC5Og0A1PpXfmwc42Yri4Iz8CcYSvSeiU38zom
D8o4zN5jG4deGy2LOajOTMNNyDDLcaW00kLVsLbzi0q2HfsdQhW30rhuYrjFyqntdHTo9xoW8uM5
KO2S3Kqr0+/4m8b01xnaLcKQC3CgBu7WmIClaUCAk60xVMbKQI2Yxk3Ey9/0k9h2LILSy25230FC
tq06pNjoR0pxk4yTXQKcVOLi+kreIcVw/COOweL4JC0YyAlSWe6oLcUXFqcUpSgBclSielWXrsrs
3OXFldizGzBQjwRdkiqS4BVrQBCpWpqSIDd3zpgN3CkA5KhagCPuGpkg7/iaQVJEupA60qAIvXoo
A0uE630ooMiCVLUfQX61IiZDaUI16n4mkSOXeSkDNZmJCT7mYLRJHoHHiCf9KU1r4caRb5mLnTrJ
Lkak7xhAbJKAABcmu6pnHmPyZnGczlVwscQcVDUUoWOjrg0K/s9E/p9a2bFjZGr4s81lZniTpH7U
P8a4r6xuRcXCXrW/9kVx5S7yNXAdYPtNm5944d+h/qbGtXLIH5i0kXOwaB0D+H975a+hq3Eu67X6
jk8ysOniR9f1OZfQm3Stbaeb8Q9h/wBo/IxI4fleLvr/AJ2Jmd5gH0jzU3CR/wCYhw/fXkPObO24
pfyXwPoP/HMjfZlB/tfufoz0I60hevQ/EVgHqjEU242b9U/EUyA5LhSbg0DqQ/VK3G+oqVBVOeSI
fAPNmOymL5DjG3Z2Dny8XIQVATYrsd1SEuNupCVpS6lKXE/unod1q7k7uK04vSST6mZ8lZy01Jax
bXWv+p5/knlGO8NeRuLQ5r+W4rxvOs4+BLJJ3QWn/wCe2FJP4AQ0pQToNx9K21slkW5tUlKNfWYL
3xxrkE6xjKi7K6/I9PYryZwOXxyBnouZhtYuUlpuM0HEBxLjlkpYDKfd3AfbsCb/ACrz08a6puLT
r6ano4ZVpwUlJU9NDSvCzqDy/wAr7SCr+pHL2Ov74/aDXXmr+3a/pOPB/wAy7/UcPzEbJSfEXlFG
MSosR+auv5BpF/8A5VK0gmw9Er7aj8AL+la8HFX7Vf4adpjTUnj3af8Ak17Du/lzMcfzH9v+VykV
TRw8/GxV45IO5O9bjXZQn13JVYW9CNaxcOE45aT4pupuZtyEsRtcGlT5HNcS3luK+UfDT3MdzEP+
mkYyM4+nalmetl9HaVuJs4A4y2T8xWhPbcsXtnHdX1afqZ0N1u/Z38NlPXr+hufmSO5kfLniSLh7
qzkae/MlFq25GNacjrdLltQlSUOBN9PxCuTCe2xdcuFKevU7M5bsiyo8a19WhrXEVcdVjPOLHKnH
WuPzOTyYc2QwLraTMlqYS6PSzalpWo6gAE2PSr72/dY2fcoJ+xHPYcNt9T+1za9roWvE3ufeM+fc
V8dcknReV8TyyJI41k1NgToaYbBuL6kAIISbqV7Ve1QAKarvK1ftSuxThJU3LodS2y72Pdham1OL
rtfSqI9Bb6wqG9UW+igqi30UAbupgEqNAqgCzegjUfvv6UiVRXoHUVxQJsG4UUCpjLWNxqdCFRhV
8qYVBupEWx6VgCig0yAuVOhKo0rooKpIlYtSZJMkSN32Uh1JRtT060hjFOgXJNh8alQRiuy9/tQS
E/tqSiJs0Vkon5CRLOoccJSf4Ron9QFbluO2KR5u7LdNs5v5r5ijFY1XF8S5bIS0f9+6g6tMKH4B
8FLHX+H7a1sKxue58Eef8zytkdkeL49h5antpBNbEjzUHqdH8OMBcaWojT6mwP2ITWLl/cuw9b5b
/lvtPR+DhMOs9t1CVtrTtWhQBBBFiCD1BrgqabVTg/lDxuOH5IyISScHNJXDJ17auqmif4f3b9R9
9b+LkeJGj4o8dnYfgyqvtfD6GX/brnPybyQnGKVZjNRnYtvTutDvoP22QpI/zVxeb2t1mv8AF/oa
H/H7+zJ2/wA1T5nspiZayHDceiq8VtPpSkZW4HUG4NImMWhKvkaBMwHEKQo3Fx8amip1NOyHjLgm
Uyj+blYdsZWWLSpUdx6Kt2/XudhaAq9td3WuqOTdjHanocksW1KW5x1fq+BsWOwuGxeKTg8dAjxs
OlBaEBptKWChYsoFAFjuud1+vrVEpylLc3qdMYRjHalRcjXsV4n8b4Se7k8XxuHGnPJWgvJSolAc
BCu0FKIbJBIu2E6VdPLvTVHJ0OeGHZg6qKqZeI8ccFwLkt7D4RiE7PZXGmLZK0qdad/EFHd6/HrU
Z5N2dN0q0LIYtqFdsaVJuP8Aj/hPGH5L2AwseCqa2piWGwopdaWQSlaVEg3t6io3Mi5c+51oO3jW
rddsUqjYHivx5i5jc2BgIzTjLpkR2veuM08de40wpRaQoehQgW9KJZd2So5P06+JGGJZi6qK9Org
XfION4HlWPViuRY9nJY8qDgZkJCglaeiknqlQv8AiSQaot3ZW3WLoy65bhcVJKqK7E8B4hhG5iMZ
i22V5BkxZkhS3HZDjBFu2XnFKc226AKsKsnkXJ0q+BCGPbhWi4+nEwIXibxxjkykQ+ORGm5zamZj
e1SkOtq6haVKIOuoJGh1FTlmXpUrJ6Faw7Ma0itTN4/4+4bxaSJuDxLcaYlvsNyFKcfdbZ69ttTy
llCP4UWFQuZFy4qSehO1j27brFamy1znRUVAVFegKjdwpkQKWNtAxiF60xEgWKjQYd+lADd/zpoG
LfTFUx1qFz8fnUiqowrH20AALpgOSsUqAjD7tWUJhCiaKATIKbC+ppNEkShYqNCQVPJQLk/YKKBU
rX5JcWb9L6CrEitswc5OTicBOybh2qQ2Us/9Rw7En9KhVluO6aRXdltg2cgzvkKJw7ALyCilyc4C
3Ajk/jdI6n+FPVX6PUV6GzZdyVOg8nl5KsQr09B5zl5jI52ct15TkzJTnbkAFbjjrh6BKdSSTYAV
6JbYLkkeKblclrq2de4L/btNnOsZTn+6JEVtcbwzarSFg6jvLT/tg/8ACn3fHaawMvzVLu2tev6H
rPL/ACGTpK9ov49Pr5fHsPSkninG2ePM4aNjY8fHw0f9qyw2Gw0T1KCkAgnqT6+t680r09+6urPa
uxbUNqSSRrDeHl4xKno95ENv8Sh+NI/iA9PmK0oX1LR6MybmNKOq1RXcmi4zlOCk4bI/7L6fY4LF
bTg/CtPzB/T0rstXHbluRnX7MbsHGXSeSTJyPj3nMKTKTaXhJzMn2/hdbacC7p+KVpH663ZuN600
v3I8lajPGvpvjFpn0CWpl5lqbEWHIkhCXWnE6goWNySPkQa+f9TPrGjVVwCzLU0QPxJ+FDQ0zOS8
lwXSbio0J1IFL9xqVCJzJrOZaA9HjOPlydKkRVfXKdL0KRDkyFgONpOrKrEIUiwFhp8a5lJos2pm
c7zPNNFSE4+OtbsuZDh/9wG0n8uWtLhcU720jdtG2xOm42NrVJ3HyFtQZHO8jEXMcegMqisKmtNI
Q8e4Vwo4ke5RTtAUDbT9dDuNdAKJA9yrMzg23/KYgSmsihDrfcbW6mOwhSHEFYStGqzb10vSc2/e
SSQYHMsrAxsCC9FbkZF5uC3Fd71kKEmM46C6p0oG/wDkqH4tSdKW9pUBxVS3jczyr+SahuQY6GXZ
TUAqRILiw9Ix31ySFJRtKU22XF79R81udfTkG3Qgx3MMr9Ni9sdp6I5Fwj0h959SpB/OXVR/RsJK
kLTuPS4+3RKT09XvBxLHjPJ5vJHZaXIqWYLbYIdbUsKDi3HEFrdYAqSlvcVoNvcLVKEtwnGhreFz
8vFY1vKzVuu98rix1yZy3WnluTxHDi0OFRbSyNu5SfQ662qEXRVJNVHtcym4LGzS6pmY40MvLSpb
yzdcGW2kNJKyo7Sh7266W+FG6i9ottS5f5qpKJchlURMdiSqA2064v6gvpeQzu2IQq6SVEpA6jab
jdpPcR2lSzzPJ5NuQ+VNsxfpsPIQ0y5tcQuZJWh6y9qtw9tiCOnw1qKk37iW1IyJfkGdHiLmNwWn
EOtzFxW+6re2YMhDCg9ZJtu37tOh9uvWm5i2FzAmyeQQp0WaTEkRJhivLhOLRuDCkOe1ftUApJ2n
161Nd5EXRGmsTclFaxGRiyXpEoycylxEuVIcZW1DVIS2CkqUPalAANvmaq1VH2k30l0rmmSsZLUK
OiEU49KVuPK3BzJlASV2RYIRuJUb61Zvfw95BRIJHkCbFTMS7EYDsNqQoq7igh1yLKTHVsuL2IVu
+R0+dRdwltI8tyvJZJnLw4rKWWISnQJKHXW1JcjS0MoSpxIse6Lqsm9k6KFJybqCReu5XIzuP5MF
1jH5WO85CQ+FqDHdC0pQdxG5O7cE39DrU6tpkNKlND5hMYdZxUWC4ZodfVNayEtB7IadQhaEPOKu
4kBe5KtSNARr7YqfQSa0JHuX5iPj0ZeVBYEFyU7Esw4464goU40hRBQkHe4hKB/mH2VPe0qlexVo
RJ5ROZykvFvhlucuQGkLfeP0qCiEy+oJOwHUq6f5lfKje609OA9ulTPwXJZGZnyWfpm24LSn223g
8hThcjOhpXsCiqyr7gSlNhbrcU4yqyMo0RsiV/CrSsww4KsJD+7QMkQ7pSGmJclKdBqqig6kJe3G
5OtOgqjWU71lavw30HxoYkcq/uA5ajB4fF44rCBKeXJfI9GYybWI+BU4Lf5a7cOFZVOLOuKMNTzl
hcBzXzJm+/jY6msOwoMia/dMVhHUi/76z1KUXPS9hXo3ft40deJ414t3NuVS7vPoR6z8beIuK+PG
G5EZr6/kJRZ/LSEguXI1DSdQ2nW3t1PqTXnMrNuX9HpHketwfK7OKqpVlz+nI2t5/uTCb6bgB92l
ciWhot6lvKVujOJ/hNVpalj4FXiXtj5R6LT+yrJrQrg9Ss5RxNmew5LxihFnD3FP/ul/aB0PzH6K
vtZDjo9Uc1/GjLVaM8p+YsLLdsMhGVGzMYEx1KGjzV7lKVDRQvqLdD9tbmNkJdjPN5uG5qtO8j0j
4D5N/U/ifAPPK3yoDRxckHqFQlFpF/mWwg/fWHm29t6XXr7T0Pl1zfjxr0aew3mQhTKtydWz0+Vc
qO1qg1EhSDdJ19RToR3UJkSUOE20PqKKEt1THGMxQQ40mFHDTygt5AaRtWtJ3BShbUg63NR2rkPc
wpxeIDJjCBGEcud4tdlvZ3bAb9trbtOvWltXIe5mHkeN4afFkx0xmor0lLiTKYabS8lTydq1JVtP
uI6n1qLgmg3NMx8ZxbE49h1p6OzKU+53Xd0dlDQV2w17G0JCU3SNfU+ppRtpDcmywRhsKErQMdFC
HAlLiQw2ApKLbQRt1AtpUtq5C3MlVhcI4pa142Kta1BxalMNklYvZRJTqRc61BwXIsqwIwHH0AhO
KhpBsTaO0OnT930o2LkG5lfguI4/BOrfQr6h5bJjFxbbSFKaUree6W0p7i1H8S13/WbxjbSG5VLJ
rCYNgOBjGxGu8gtO7GGk721WJSqydQbdDUti5EW2BWEwym0tfQRS0gqUhBYb2grFlEDbpcCxp7Vy
FViXisYru74UdfeSlD12kHehFtqVaagWFgelPahVZG5iMM6NruOirSBtAWy2Rt3FdtU9NxKvto2r
kLcwrxeJc7odgx1h+xf3NIV3CnpuuNbW0vS2rkFWSR4kOIlxEWM2wh1RW6lptKApR0JUEgXJ+dNJ
IW4xk4TCISEpxsVKRvskMNgDuJ2r6J/eAsfiKW1cg3Me1iMSwlxLGPjNJeT23ghltIWgfuqAGo+R
o2oW5kisXjHkNNvQY622AQwlbSFJQFdQkEaXt6UOKFuKeJwjCsznJsptE0qW+4228yybfUr3qC1B
AUsJIsjcfaPsBqtW1Uk7jLxGPxrTL0duGwiPIJVIaS2gIcKupWm1lX+dWURXuYPy/GhLCBDYCYpK
oye0izSj1KNPafsooh1ZjIhY+K2Y8aKyzHCg52m20oRvSQQraABcEA3ppJEdzMdeMxSy6pcKOVPL
DrxLSCVrTchStNSLmxNG1BvZKhiI085IaZQh963edSkBa7dNxAubfOnQW5mQhYoFUrw6K6NpOo4O
iig6gMm2if00UCpH3ftooFSZn3ncr8I/XSY0TBwA6dKVCRzDnHjCHzvljGV5NKLuBgsttRsQwVI7
ykqK1F9ehCbq/CjU6e70rss33bj3ePM4MjGV6XefdXRz7Te8Lj4UBliDj47cXHxUhLMZhAbbQkdA
lKQAK55yb1fE6oRUdEqJF6t4IbUu/QE1SkXNlNHXvkIv1Kr6Va+BSnqXziwW1D4g1Si5lBGf7Uht
foFa1e1oUJ6mxlYIIPQ6VRQvNSz3H8RnYz2KzUVEqKTdIWPck+ikKFilVj1Bq+MmtUc04p6Mq/Fv
BR4/OcgQpv1GDyEhudFYcFnmn1ILb26w2kKCGrEW6HSp37viUrxRDGsq25U4PX1nQVLSoFJ1Brlo
dZXPJLSvik9DVi1KpaGMHSFXBsb1ZQhUzGZW6yVfi+NQcSakZG8VChKoCukMbv8AhQFRyXNRRQdT
ISsH11qJKo64pBUW4UCqAqHpQFRb/jQIQctRQBFYPWgQ0gehtTCgw7x0N6CNBm9Q63H3UCF3PnRQ
Ahe4X6n40gCF/E0CqIufOigqjVLpEmzFWv3E3qRAiLnzooA3fQA5Lg+NFBGACv4V1aFgFdz4afdS
0Ab7vUfsoAKb392goGZiSqw2jT06VAkNUXBcpTc+g0oArVl3crePdfWrCvUsYH+0duqr+7/CoSJx
JJpc+mXYfC/2Uo0qN8Cvg3+qb+3/AAqcuBWuJfHdtNx6VSXGum+82+OldBzmxtlzto3iyrC4Pxqh
0LjCn7d4I/3Laj5elSiQkRRi8HgWkkn1GnSpOlBRLQlfwqstInbbD3Pw00QkVp0UQNRfQ1cUj07q
ixmW2XbC6bj0qDoTVR5Kr9NaiMb7qBhG+4pATDffQa/dSJEiS76puPtFRGP1oAB3en+FAge75/qp
jEL/APi1IA6/CgQrq+FACB+VAtR3ttrSFqRL7P2GnqJkdhb2m4oI6jCVX0FAtRXPw1oFqD3UD1Md
d7mgRF91MNQa+lAmOTegR//Z

------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.dcschools.com/typo3temp/stylesheet_fe0e09058c.css

.tx-indexedsearch .tx-indexedsearch-browsebox LI {
	DISPLAY: inline; MARGIN-RIGHT: 5px
}
.tx-indexedsearch .tx-indexedsearch-searchbox =
INPUT.tx-indexedsearch-searchbox-button {
	WIDTH: 100px
}
.tx-indexedsearch .tx-indexedsearch-searchbox =
INPUT.tx-indexedsearch-searchbox-sword {
	WIDTH: 150px
}
.tx-indexedsearch .tx-indexedsearch-whatis {
	MARGIN-TOP: 10px; MARGIN-BOTTOM: 5px
}
.tx-indexedsearch .tx-indexedsearch-whatis .tx-indexedsearch-sw {
	FONT-WEIGHT: bold; FONT-STYLE: italic
}
.tx-indexedsearch .tx-indexedsearch-noresults {
	FONT-WEIGHT: bold; TEXT-ALIGN: center
}
.tx-indexedsearch .tx-indexedsearch-res TD.tx-indexedsearch-descr {
	FONT-STYLE: italic
}
.tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-descr =
.tx-indexedsearch-redMarkup {
	COLOR: red
}
.tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-info {
	BACKGROUND: #eeeeee
}
.tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-secHead {
	MARGIN-TOP: 20px; MARGIN-BOTTOM: 5px
}
.tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-secHead H2 {
	MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
.tx-indexedsearch .tx-indexedsearch-res .tx-indexedsearch-secHead TD {
	BACKGROUND: #cccccc; VERTICAL-ALIGN: middle
}
.tx-indexedsearch .tx-indexedsearch-res .noResume {
	COLOR: #666666
}
.tx-indexedsearch .tx-indexedsearch-category {
	FONT-WEIGHT: bold; FONT-SIZE: 16px; BACKGROUND: #cccccc
}
.tx-indexedsearch .res-tmpl-css {
	CLEAR: both; MARGIN-BOTTOM: 1em
}
.tx-indexedsearch .searchbox-tmpl-css LABEL {
	FLOAT: left; WIDTH: 10em; MARGIN-RIGHT: 1em
}
.tx-indexedsearch .result-count-tmpl-css {
	MARGIN-TOP: -1.2em; FONT-WEIGHT: normal; FLOAT: right; LETTER-SPACING: =
0px
}
.tx-indexedsearch .percent-tmpl-css {
	MARGIN-TOP: -1.2em; FONT-WEIGHT: normal; FLOAT: right; LETTER-SPACING: =
0px
}
.tx-indexedsearch .info-tmpl-css DT {
	FLOAT: left
}
.tx-indexedsearch DL.info-tmpl-css DD {
	FLOAT: left
}
.tx-indexedsearch .info-tmpl-css DD.item-mtime {
	FLOAT: none
}
.tx-indexedsearch .info-tmpl-css DD.item-path {
	FLOAT: none
}
.tx-thmailformplus-pi1 H2 {
	MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px
}
.tx-slideshow-pi1 {
	TEXT-ALIGN: center
}
DIV.csc-textpic-caption-c .csc-textpic-caption {
	TEXT-ALIGN: center
}
DIV.csc-textpic-caption-r .csc-textpic-caption {
	TEXT-ALIGN: right
}
DIV.csc-textpic-caption-l .csc-textpic-caption {
	TEXT-ALIGN: left
}
DIV.csc-textpic DIV.csc-textpic-imagecolumn {
	DISPLAY: inline; FLOAT: left
}
DIV.csc-textpic-border DIV.csc-textpic-imagewrap .csc-textpic-image IMG =
{
	BORDER-RIGHT: black 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: black =
2px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: black =
2px solid; PADDING-TOP: 0px; BORDER-BOTTOM: black 2px solid
}
DIV.csc-textpic-imagewrap {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
DIV.csc-textpic IMG {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
DIV.csc-textpic DIV.csc-textpic-imagewrap DIV.csc-textpic-image {
	FLOAT: left
}
DIV.csc-textpic DIV.csc-textpic-imagewrap UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV.csc-textpic DIV.csc-textpic-imagewrap UL LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image {
	FLOAT: left
}
DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DT {
	FLOAT: none
}
DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD {
	FLOAT: none
}
DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image DD IMG {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
DL.csc-textpic-image {
	MARGIN: 0px
}
DL.csc-textpic-image DT {
	DISPLAY: inline; MARGIN: 0px
}
DL.csc-textpic-image DD {
	MARGIN: 0px
}
DIV.csc-textpic-clear {
	CLEAR: both
}
DIV.csc-textpic-left DIV.csc-textpic-imagewrap .csc-textpic-image {
	DISPLAY: inline; MARGIN-RIGHT: 10px
}
DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap =
.csc-textpic-image {
	DISPLAY: inline; MARGIN-RIGHT: 10px
}
DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap .csc-textpic-image =
{
	DISPLAY: inline; MARGIN-RIGHT: 10px
}
DIV.csc-textpic-right DIV.csc-textpic-imagewrap .csc-textpic-image {
	DISPLAY: inline; MARGIN-LEFT: 10px
}
DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap =
.csc-textpic-image {
	DISPLAY: inline; MARGIN-LEFT: 10px
}
DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap =
.csc-textpic-image {
	DISPLAY: inline; MARGIN-LEFT: 10px
}
DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image {
	DISPLAY: inline; MARGIN-LEFT: 10px
}
DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image =
.csc-textpic-caption {
	MARGIN: 0px
}
DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image IMG {
	MARGIN: 0px
}
DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-image {
	MARGIN-BOTTOM: 5px
}
DIV.csc-textpic-equalheight DIV.csc-textpic-imagerow {
	DISPLAY: block; MARGIN-BOTTOM: 5px
}
DIV.csc-textpic DIV.csc-textpic-imagerow {
	CLEAR: both
}
DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-firstcol {
	MARGIN-LEFT: 0px! important
}
DIV.csc-textpic DIV.csc-textpic-imagewrap .csc-textpic-lastcol {
	MARGIN-RIGHT: 0px! important
}
DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap {
	MARGIN-RIGHT: 10px! important
}
DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap {
	MARGIN-RIGHT: 10px! important
}
DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap {
	MARGIN-LEFT: 10px! important
}
DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap {
	MARGIN-LEFT: 10px! important
}
DIV.csc-textpic-above DIV.csc-textpic-text {
	CLEAR: both
}
DIV.csc-textpic-center {
	TEXT-ALIGN: center
}
DIV.csc-textpic-center DIV.csc-textpic-imagewrap {
	MARGIN: 0px auto
}
DIV.csc-textpic-center DIV.csc-textpic-imagewrap .csc-textpic-image {
	TEXT-ALIGN: left
}
DIV.csc-textpic-center DIV.csc-textpic-text {
	TEXT-ALIGN: left
}
DIV.csc-textpic-right DIV.csc-textpic-imagewrap {
	FLOAT: right
}
DIV.csc-textpic-right DIV.csc-textpic-text {
	CLEAR: right
}
DIV.csc-textpic-left DIV.csc-textpic-imagewrap {
	FLOAT: left
}
DIV.csc-textpic-left DIV.csc-textpic-text {
	CLEAR: left
}
DIV.csc-textpic-intext-left DIV.csc-textpic-imagewrap {
	FLOAT: left
}
DIV.csc-textpic-intext-right DIV.csc-textpic-imagewrap {
	FLOAT: right
}
DIV.csc-textpic-intext-right-nowrap DIV.csc-textpic-imagewrap {
	CLEAR: both; FLOAT: right
}
* HTML DIV.csc-textpic-intext-right-nowrap .csc-textpic-text {
	HEIGHT: 1%
}
DIV.csc-textpic-intext-left-nowrap DIV.csc-textpic-imagewrap {
	CLEAR: both; FLOAT: left
}
* HTML DIV.csc-textpic-intext-left-nowrap .csc-textpic-text {
	HEIGHT: 1%
}

------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.dcschools.com/fileadmin/templates/css/reset.css

BODY {
	BACKGROUND: #fff; COLOR: #000
}
BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DIV {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
OL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
H1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
H4 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
H5 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
H6 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
PRE {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
CODE {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
FORM {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
FIELDSET {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
LEGEND {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
INPUT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
TEXTAREA {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
BLOCKQUOTE {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
TH {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
TABLE {
	BORDER-COLLAPSE: collapse; border-spacing: 0
}
FIELDSET {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
IMG {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
ADDRESS {
	FONT-WEIGHT: normal; FONT-STYLE: normal
}
CAPTION {
	FONT-WEIGHT: normal; FONT-STYLE: normal
}
CITE {
	FONT-WEIGHT: normal; FONT-STYLE: normal
}
CODE {
	FONT-WEIGHT: normal; FONT-STYLE: normal
}
DFN {
	FONT-WEIGHT: normal; FONT-STYLE: normal
}
EM {
	FONT-WEIGHT: normal; FONT-STYLE: normal
}
STRONG {
	FONT-WEIGHT: normal; FONT-STYLE: normal
}
TH {
	FONT-WEIGHT: normal; FONT-STYLE: normal
}
VAR {
	FONT-WEIGHT: normal; FONT-STYLE: normal
}
CAPTION {
	TEXT-ALIGN: left
}
TH {
	TEXT-ALIGN: left
}
H1 {
	FONT-WEIGHT: normal; FONT-SIZE: 100%
}
H2 {
	FONT-WEIGHT: normal; FONT-SIZE: 100%
}
H3 {
	FONT-WEIGHT: normal; FONT-SIZE: 100%
}
H4 {
	FONT-WEIGHT: normal; FONT-SIZE: 100%
}
H5 {
	FONT-WEIGHT: normal; FONT-SIZE: 100%
}
H6 {
	FONT-WEIGHT: normal; FONT-SIZE: 100%
}
Q:unknown {
	content: ''
}
Q:unknown {
	content: ''
}
ABBR {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px; FONT-VARIANT: normal
}
ACRONYM {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px; FONT-VARIANT: normal
}
SUP {
	VERTICAL-ALIGN: text-top
}
SUB {
	VERTICAL-ALIGN: text-top
}
SUB {
	VERTICAL-ALIGN: text-bottom
}
INPUT {
	FONT-FAMILY: inherit
}
TEXTAREA {
	FONT-FAMILY: inherit
}
SELECT {
	FONT-FAMILY: inherit
}

------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.dcschools.com/fileadmin/templates/css/menu-core.css

.yuimenubar {
	VISIBILITY: visible; POSITION: static
}
.yuimenu .yuimenu {
	LEFT: -10000px; VISIBILITY: hidden; POSITION: absolute; TOP: -10000px
}
.yuimenubar .yuimenu {
	LEFT: -10000px; VISIBILITY: hidden; POSITION: absolute; TOP: -10000px
}
.yuimenubar LI {
	LIST-STYLE-TYPE: none
}
.yuimenu LI {
	LIST-STYLE-TYPE: none
}
.yuimenubar UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.yuimenu UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.yuimenubar LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.yuimenu LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.yuimenu H6 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.yuimenubar H6 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.yuimenuitemlabel {
	WHITE-SPACE: nowrap; TEXT-ALIGN: left
}
.yuimenubaritemlabel {
	WHITE-SPACE: nowrap; TEXT-ALIGN: left
}
.yuimenubar UL {
	ZOOM: 1
}
.yuimenubar .yuimenu UL {
	Z-INDEX: 20; ZOOM: normal
}
.yuimenubar > .bd > UL:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; LINE-HEIGHT: 0; =
HEIGHT: 0px; content: "."
}
.yuimenubaritem {
	FLOAT: left
}
.yuimenubaritemlabel {
	DISPLAY: block
}
.yuimenuitemlabel {
	DISPLAY: block
}
.yuimenuitemlabel .helptext {
	DISPLAY: block; MARGIN: -1em 0px 0px 10em; FONT-STYLE: normal
}
.yui-menu-shadow {
	Z-INDEX: -1; VISIBILITY: hidden; POSITION: absolute
}
.yui-skin-sam .yui-menu-shadow-visible {
	RIGHT: -3px; LEFT: -3px; VISIBILITY: visible; BOTTOM: -3px; TOP: 2px
}
.hide-scrollbars * {
	OVERFLOW: hidden
}
.hide-scrollbars SELECT {
	DISPLAY: none
}
.show-scrollbars.yuimenu {
	OVERFLOW: visible
}
.show-scrollbars.yuimenubar {
	OVERFLOW: visible
}
.hide-scrollbars.yuimenu .yui-menu-shadow {
	OVERFLOW: hidden
}
.hide-scrollbars.yuimenubar .yui-menu-shadow {
	OVERFLOW: hidden
}
.show-scrollbars.yuimenu .yui-menu-shadow {
	OVERFLOW: auto
}
.show-scrollbars.yuimenubar .yui-menu-shadow {
	OVERFLOW: auto
}

------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.dcschools.com/fileadmin/templates/css/styles.css

BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND-IMAGE: =
url(../images/pagebg.jpg); PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-TOP: 0px; BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #002b58
}
#shell {
	MARGIN: 0px auto; WIDTH: 919px; POSITION: relative
}
#leftshadow {
	LEFT: 0px; BACKGROUND-IMAGE: url(../images/leftshadow.jpg); WIDTH: =
60px; BACKGROUND-REPEAT: no-repeat; POSITION: absolute; TOP: 0px; =
HEIGHT: 750px; BACKGROUND-COLOR: #002b58
}
#rightshadow {
	RIGHT: 0px; BACKGROUND-IMAGE: url(../images/rightshadow.jpg); WIDTH: =
60px; BACKGROUND-REPEAT: no-repeat; POSITION: absolute; TOP: 0px; =
HEIGHT: 750px; BACKGROUND-COLOR: #002b58
}
H1 {
	FONT-SIZE: 138.5%
}
H2 {
	FONT-SIZE: 123.1%
}
H3 {
	FONT-SIZE: 108%
}
H1 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 0.5em; COLOR: #575757; =
FONT-FAMILY: Georgia, "Times New Roman", Times, serif
}
H2 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 0.5em; COLOR: #575757; =
FONT-FAMILY: Georgia, "Times New Roman", Times, serif
}
H3 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 0.5em; COLOR: #575757; =
FONT-FAMILY: Georgia, "Times New Roman", Times, serif
}
H4 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 0.5em; COLOR: #575757; =
FONT-FAMILY: Georgia, "Times New Roman", Times, serif
}
H5 {
	FONT-WEIGHT: bold
}
H6 {
	FONT-WEIGHT: bold
}
STRONG {
	FONT-WEIGHT: bold
}
ABBR {
	CURSOR: help; BORDER-BOTTOM: #000 1px dotted
}
ACRONYM {
	CURSOR: help; BORDER-BOTTOM: #000 1px dotted
}
EM {
	FONT-STYLE: italic
}
BLOCKQUOTE {
	MARGIN: 1em
}
UL {
	MARGIN: 1em
}
OL {
	MARGIN: 1em
}
DL {
	MARGIN: 1em
}
OL {
	MARGIN-LEFT: 2em
}
UL {
	MARGIN-LEFT: 2em
}
DL {
	MARGIN-LEFT: 2em
}
OL LI {
	LIST-STYLE-POSITION: outside; LIST-STYLE-TYPE: decimal
}
UL LI {
=09
}
DL DD {
	MARGIN-LEFT: 1em
}
TH {
	BORDER-RIGHT: #8b6636 1px solid; PADDING-RIGHT: 0.5em; BORDER-TOP: =
#8b6636 1px solid; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0.5em; =
BORDER-LEFT: #8b6636 1px solid; PADDING-TOP: 0.5em; BORDER-BOTTOM: =
#8b6636 1px solid
}
TD {
	BORDER-RIGHT: #8b6636 1px solid; PADDING-RIGHT: 0.5em; BORDER-TOP: =
#8b6636 1px solid; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0.5em; =
BORDER-LEFT: #8b6636 1px solid; PADDING-TOP: 0.5em; BORDER-BOTTOM: =
#8b6636 1px solid
}
TH {
	FONT-WEIGHT: bold; TEXT-ALIGN: center
}
CAPTION {
	MARGIN-BOTTOM: 0.5em; TEXT-ALIGN: center
}
P {
	MARGIN-BOTTOM: 1em
}
FIELDSET {
	MARGIN-BOTTOM: 1em
}
TABLE {
	MARGIN-BOTTOM: 1em
}
PRE {
	MARGIN-BOTTOM: 1em
}
P {
	FONT-SIZE: 13px; COLOR: #575757; LINE-HEIGHT: 150%; FONT-FAMILY: Arial, =
Helvetica, sans-serif
}
LI {
	FONT-SIZE: 13px; COLOR: #575757; LINE-HEIGHT: 150%; FONT-FAMILY: Arial, =
Helvetica, sans-serif
}
TD {
	FONT-SIZE: 13px; COLOR: #575757; LINE-HEIGHT: 150%; FONT-FAMILY: Arial, =
Helvetica, sans-serif
}
A {
	COLOR: #002b58
}
A:visited {
=09
}
INPUT[type=3Dtext] {
	WIDTH: 11.9em
}
INPUT[type=3Dpassword] {
	WIDTH: 11.9em
}
TEXTAREA {
	WIDTH: 11.9em
}
#header {
	BACKGROUND: url(../images/headerbg_nologo.jpg) no-repeat; POSITION: =
relative; HEIGHT: 120px
}
#dcslogo {
	LEFT: 0px; WIDTH: 336px; POSITION: absolute; TOP: 2px; HEIGHT: 120px
}
#searchform {
	FONT-SIZE: 11px; RIGHT: 20px; BACKGROUND: url(../images/searchbg.gif) =
no-repeat right top; WIDTH: 360px; COLOR: #686868; PADDING-TOP: 10px; =
FONT-FAMILY: Arial, Helvetica, sans-serif; POSITION: absolute; TOP: =
20px; HEIGHT: 30px
}
#searchform A {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; COLOR: =
#686868; PADDING-TOP: 0px; TEXT-DECORATION: none
}
#searchform .tx-indexedsearch-searchbox-sword {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; FONT-SIZE: 13px; RIGHT: 8px; PADDING-BOTTOM: 0px; MARGIN: 0px; =
BORDER-LEFT: 0px; WIDTH: 165px; COLOR: #575757; PADDING-TOP: 0px; =
BORDER-BOTTOM: 0px; FONT-FAMILY: Arial, Helvetica, sans-serif; POSITION: =
absolute; TOP: 7px; HEIGHT: 18px
}
#container {
	Z-INDEX: 2; LEFT: 60px; WIDTH: 799px; POSITION: absolute; =
BACKGROUND-COLOR: #f9f8f0
}
#content {
	BACKGROUND-IMAGE: url(../images/contentbg_01.gif); WIDTH: 799px; =
BACKGROUND-REPEAT: repeat-x; BACKGROUND-COLOR: #f9f8f0
}
#minheight {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: right; =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 1px; PADDING-TOP: 0px; HEIGHT: =
750px
}
#leftcolumn {
	BORDER-RIGHT: #f2e7d1 1px solid; PADDING-RIGHT: 0px; DISPLAY: inline; =
PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: 10px; MARGIN: 30px 20px =
0px 0px; WIDTH: 210px; PADDING-TOP: 0px
}
#rightcolumn {
	FLOAT: left; MARGIN: 20px 0px; WIDTH: 530px
}
#homecolumn #leftcolumn {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: left; =
PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 30px; WIDTH: 236px; =
PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none
}
#homecolumn #centercolumn {
	DISPLAY: inline; FLOAT: left; MARGIN: 0px 0px 20px 30px; WIDTH: 236px
}
#homecolumn #rightcolumn {
	DISPLAY: inline; FLOAT: right; MARGIN: 0px 30px 30px 0px; WIDTH: 220px
}
#homefooter {
	CLEAR: both; BORDER-TOP: #dccaad 1px solid; FONT-SIZE: 13px; MARGIN: =
0px 30px; COLOR: #dccaad; PADDING-TOP: 20px; FONT-FAMILY: Arial, =
Helvetica, sans-serif; HEIGHT: 33px; TEXT-ALIGN: right
}
#homefooter A {
	COLOR: #71a6b4; TEXT-DECORATION: none
}
#footer {
	CLEAR: both; BACKGROUND: url(../images/footerbg.gif) repeat-x; WIDTH: =
799px; COLOR: #898989; PADDING-TOP: 7px; HEIGHT: 53px; TEXT-ALIGN: =
center
}
#footer UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#footer LI {
	DISPLAY: inline; MARGIN: 0px 5px; LIST-STYLE-TYPE: none
}
#footer LI A {
	COLOR: #898989; TEXT-DECORATION: none
}
#breadcrumb {
	DISPLAY: inline; FONT-SIZE: 13px; FLOAT: left; MARGIN: 30px 0px 0px; =
WIDTH: 530px; FONT-FAMILY: Arial, Helvetica, sans-serif
}
#breadcrumb A {
	COLOR: #065587
}
.bcgt {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; COLOR: =
#8a8a8a; PADDING-TOP: 0px
}
#centercontent {
	MIN-HEIGHT: 264px; BACKGROUND: url(../images/homecenterbg.gif) #c3d6e2 =
repeat-x 50% top; BORDER-BOTTOM: #e5dbca 1px solid; POSITION: relative; =
HEIGHT: 264px
}
#programcontent {
	PADDING-RIGHT: 0px; BORDER-TOP: #f9f8f0 1px solid; PADDING-LEFT: 20px; =
BACKGROUND: url(../images/programbg.gif) repeat-x; PADDING-BOTTOM: 15px; =
PADDING-TOP: 15px; HEIGHT: 70px
}
.programicons {
	DISPLAY: inline; FLOAT: left; MARGIN: 0px 20px 0px 0px
}
#topnav {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; Z-INDEX: 4; BACKGROUND: =
url(../images/topnavbg.gif) no-repeat; PADDING-BOTTOM: 0px; WIDTH: =
779px; PADDING-TOP: 0px; HEIGHT: 33px
}
#topnav LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; Z-INDEX: 10; =
PADDING-BOTTOM: 0px; COLOR: #575757; LINE-HEIGHT: 100%; PADDING-TOP: =
0px; FONT-FAMILY: Arial, Helvetica, sans-serif
}
#topnav LI.yuimenubaritem {
	BACKGROUND-POSITION: left 50%; BACKGROUND-IMAGE: =
url(../images/menusep.gif); BACKGROUND-REPEAT: no-repeat
}
#topnav LI.first-of-type {
	BACKGROUND-IMAGE: none
}
#topnav LI A {
	PADDING-RIGHT: 12px; PADDING-LEFT: 12px; PADDING-BOTTOM: 10px; =
TEXT-TRANSFORM: uppercase; COLOR: #ffffff; PADDING-TOP: 10px; =
TEXT-DECORATION: none
}
#topnav LI A:hover {
	BACKGROUND-IMAGE: url(../images/navhoverbg.gif); BACKGROUND-REPEAT: =
repeat-x
}
#topnav LI A.yuimenuitemlabel {
	PADDING-RIGHT: 6px; PADDING-LEFT: 6px; FONT-SIZE: 12px; PADDING-BOTTOM: =
6px; MARGIN: 4px 5px; TEXT-TRANSFORM: none; COLOR: #686868; PADDING-TOP: =
6px; BORDER-BOTTOM: #686868 1px dotted; BACKGROUND-COLOR: #ffffff
}
#topnav LI A.yuimenuitemlabel:hover {
	BACKGROUND-IMAGE: none; COLOR: #8b6636; BACKGROUND-COLOR: #f3f0e6
}
#topnav LI.yuimenuitemlast A.yuimenuitemlabel {
	BORDER-BOTTOM-STYLE: none
}
.dropmenu {
	BORDER-RIGHT: #686868 1px solid; PADDING-RIGHT: 6px; BORDER-TOP: =
#686868 1px solid; PADDING-LEFT: 6px; PADDING-BOTTOM: 0px; BORDER-LEFT: =
#686868 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #686868 1px solid; =
BACKGROUND-COLOR: #ffffff
}
#sectionheader {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; MARGIN: 0px =
0px 0px 15px; PADDING-TOP: 2px
}
#sectionheader A {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: normal; FONT-SIZE: =
22px; PADDING-BOTTOM: 2px; COLOR: #575757; PADDING-TOP: 2px; =
FONT-FAMILY: Georgia, "Times New Roman", Times, serif; TEXT-DECORATION: =
none
}
#sectionheader A:hover {
	BACKGROUND-COLOR: #f5edde
}
#leftnav {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
10px 10px 0px 25px; PADDING-TOP: 0px
}
#leftnav2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 5px =
0px 0px 10px; PADDING-TOP: 0px
}
#leftnav LI {
	FONT-WEIGHT: normal; FONT-SIZE: 14px; MARGIN: 0px 0px 5px; FONT-FAMILY: =
Georgia, "Times New Roman", Times, serif; LIST-STYLE-TYPE: none
}
#leftnav LI A {
	PADDING-BOTTOM: 2px; COLOR: #575757; BORDER-BOTTOM: #f2e7d1 1px solid; =
TEXT-DECORATION: none
}
#leftnav LI A:hover {
	COLOR: #8b6636
}
#leftnav LI A.active {
	COLOR: #8b6636
}
#centercolumn UL {
	PADDING-LEFT: 0px; MARGIN-LEFT: 0px
}
#centercolumn UL LI {
	PADDING-RIGHT: 0px; BACKGROUND-POSITION: 0px 3px; PADDING-LEFT: 20px; =
BACKGROUND-IMAGE: url(../images/homeservicesbullet.gif); PADDING-BOTTOM: =
10px; PADDING-TOP: 0px; BACKGROUND-REPEAT: no-repeat; LIST-STYLE-TYPE: =
none
}
#centercolumn LI A {
	FONT-WEIGHT: normal; FONT-SIZE: 14px; COLOR: #71a6b4; FONT-FAMILY: =
Georgia, "Times New Roman", Times, serif; TEXT-DECORATION: none
}
.news-latest-item P {
	MARGIN: 0px 0px 4px
}
UL.csc-sitemap {
	PADDING-LEFT: 0px; MARGIN-LEFT: 0px
}
.csc-sitemap UL {
	MARGIN-TOP: 0px
}
.csc-sitemap LI {
	LIST-STYLE-TYPE: none
}
.curvedboxheader {
	BACKGROUND-IMAGE: url(../images/curvedboxtop.gif); MARGIN: 10px 0px =
0px; WIDTH: 510px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 17px
}
.curvedboxbody {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; MARGIN: =
0px; WIDTH: 480px; PADDING-TOP: 0px; BACKGROUND-COLOR: #eee6d5
}
.curvedboxbody P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; MARGIN: =
0px; PADDING-TOP: 0px
}
.curvedboxbody UL {
	MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 10px
}
.curvedboxfooter {
	BACKGROUND-IMAGE: url(../images/curvedboxbot.gif); MARGIN: 0px 0px =
10px; WIDTH: 510px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 17px
}
.directorytable {
	WIDTH: 530px
}
.directorytable TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
BORDER-TOP-STYLE: none; PADDING-TOP: 3px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.directorysearch TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
BORDER-TOP-STYLE: none; PADDING-TOP: 3px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.tx-dcsdirectory-pi1-listrow-header TD {
	FONT-WEIGHT: bold
}
.tx-dcsdirectory-pi1-listrow-odd {
	BACKGROUND-COLOR: #eee6d5
}
.tx-thmailformplus-pi1 TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
BORDER-TOP-STYLE: none; PADDING-TOP: 3px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.boardmeetingteaser {
	BACKGROUND-IMAGE: url(../images/homecalbgsm.gif); WIDTH: 220px; =
BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 100px
}
.nextmeeting {
	FONT-SIZE: 13px; LEFT: 15px; COLOR: #7b7b7b; FONT-STYLE: italic; =
FONT-FAMILY: Georgia, Times, serif; POSITION: absolute; TOP: 15px
}
.meetingdate {
	FONT-SIZE: 13px; LEFT: 55px; COLOR: #7f3f00; LINE-HEIGHT: 18px; =
FONT-FAMILY: Arial, Helvetica, sans-serif; POSITION: absolute; TOP: 34px
}
.meetinglink {
	LEFT: 15px; POSITION: absolute; TOP: 74px
}
.meetinglink A {
	FONT-SIZE: 11px; COLOR: #71a6b4; FONT-FAMILY: Ariel, Helvetica, =
sans-serif
}
FIELDSET.csc-mailform {
	MARGIN-TOP: 15px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
FIELDSET.csc-mailform LABEL {
	FLOAT: left; WIDTH: 150px; COLOR: #575757
}
DIV.csc-mailform-field {
	MARGIN-BOTTOM: 25px
}
FIELDSET.csc-mailform INPUT {
	WIDTH: 300px
}
FIELDSET.csc-mailform TEXTAREA {
	WIDTH: 300px; HEIGHT: 100px
}
FIELDSET.csc-mailform .csc-mailform-check {
	WIDTH: 15px; HEIGHT: 15px
}
FIELDSET.csc-mailform .csc-mailform-radio {
	MARGIN-TOP: 10px; WIDTH: 15px
}
FIELDSET.csc-mailform LEGEND {
	DISPLAY: none
}
FIELDSET .csc-mailform-radio LABEL {
	DISPLAY: inline; FLOAT: none; MARGIN-BOTTOM: 15px; MARGIN-LEFT: 10px; =
MARGIN-RIGHT: 10px; WHITE-SPACE: nowrap
}
FIELDSET.csc-mailform INPUT.csc-mailform-submit {
	WIDTH: auto
}
#submission DIV {
	MARGIN-BOTTOM: 25px
}
#submission LABEL {
	FLOAT: left; WIDTH: 150px
}
#submission .input-text {
	WIDTH: 300px
}
#submission TEXTAREA {
	WIDTH: 300px; HEIGHT: 100px
}
#submission #submit {
	MARGIN-LEFT: 150px
}
#submission .required {
	COLOR: red
}
#three_sections {
	WIDTH: 243px
}
#three_sections .sect HR {
	CLEAR: both; BORDER-TOP: #f3ebe0 1px solid; FONT-SIZE: 1px; =
LINE-HEIGHT: 1px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; =
HEIGHT: 1px; BORDER-BOTTOM-STYLE: none
}
#three_sections .sect .sect_text {
	FLOAT: right; MARGIN: 7px 5px; WIDTH: 184px
}
#three_sections .sect IMG {
	FLOAT: left; MARGIN: 13px 3px 13px 7px
}
#three_sections .sect .sect_text A {
	FONT-WEIGHT: bold; COLOR: #1c5c7e; TEXT-DECORATION: none
}
#three_sections .sect .sect_text .title {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; FONT-FAMILY: helvetica, arial, =
sans-serif
}
#three_sections .sect .sect_text P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px =
0px 4px; PADDING-TOP: 0px
}
FIELDSET.csc-mailform {
	MARGIN-TOP: 15px; FONT-SIZE: 12px; MARGIN-LEFT: 20px; BORDER-TOP-STYLE: =
none; FONT-FAMILY: Arial,Helvetica,sans-serif; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
FIELDSET.csc-mailform LABEL {
	FONT-SIZE: 13px; FLOAT: left; WIDTH: 340px; COLOR: #575757; =
FONT-FAMILY: Arial,Helvetica,sans-serif
}
DIV.csc-mailform-field {
	MARGIN-BOTTOM: 10px
}
FIELDSET.csc-mailform INPUT {
	MARGIN-TOP: 1px; MIN-HEIGHT: 16px; WIDTH: 260px
}
FIELDSET.csc-mailform SELECT {
	MARGIN-TOP: 5px; WIDTH: 260px
}
FIELDSET.csc-mailform TEXTAREA {
	MARGIN-TOP: 1px; WIDTH: 350px; HEIGHT: 200px
}
FIELDSET.csc-mailform .csc-mailform-check {
	WIDTH: 15px; HEIGHT: 15px
}
FIELDSET.csc-mailform .csc-mailform-radio {
	MARGIN-TOP: 10px; WIDTH: 15px
}
FIELDSET.csc-mailform LEGEND {
	DISPLAY: none
}
FIELDSET .csc-mailform-radio LABEL {
	DISPLAY: inline; FLOAT: none; MARGIN-BOTTOM: 15px; MARGIN-LEFT: 10px; =
MARGIN-RIGHT: 10px; WHITE-SPACE: nowrap
}
FIELDSET.csc-mailform INPUT.csc-mailform-submit {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 13px; PADDING-BOTTOM: =
5px; WIDTH: auto; COLOR: #ffffff; PADDING-TOP: 5px; FONT-FAMILY: =
Arial,Helvetica,sans-serif; BACKGROUND-COLOR: #002b58
}

------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.dcschools.com/typo3temp/javascript_757c080409.js

=0A=
		var browserName =3D navigator.appName;=0A=
		var browserVer =3D parseInt(navigator.appVersion);=0A=
		var version =3D "";=0A=
		var msie4 =3D (browserName =3D=3D "Microsoft Internet Explorer" && =
browserVer >=3D 4);=0A=
		if ((browserName =3D=3D "Netscape" && browserVer >=3D 3) || msie4 || =
browserName=3D=3D"Konqueror" || browserName=3D=3D"Opera") {version =3D =
"n3";} else {version =3D "n2";}=0A=
			// Blurring links:=0A=
		function blurLink(theObject)	{	//=0A=
			if (msie4)	{theObject.blur();}=0A=
		}=0A=
		
------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.dcschools.com/fileadmin/templates/js/yahoo-dom-event.js

/*=0A=
Copyright (c) 2007, Yahoo! Inc. All rights reserved.=0A=
Code licensed under the BSD License:=0A=
http://developer.yahoo.net/yui/license.txt=0A=
version: 2.4.1=0A=
*/=0A=
if(typeof YAHOO=3D=3D"undefined"||!YAHOO){var =
YAHOO=3D{};}YAHOO.namespace=3Dfunction(){var =
A=3Darguments,E=3Dnull,C,B,D;for(C=3D0;C<A.length;C=3DC+1){D=3DA[C].split=
(".");E=3DYAHOO;for(B=3D(D[0]=3D=3D"YAHOO")?1:0;B<D.length;B=3DB+1){E[D[B=
]]=3DE[D[B]]||{};E=3DE[D[B]];}}return =
E;};YAHOO.log=3Dfunction(D,A,C){var =
B=3DYAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return =
false;}};YAHOO.register=3Dfunction(A,E,D){var =
I=3DYAHOO.env.modules;if(!I[A]){I[A]=3D{versions:[],builds:[]};}var =
B=3DI[A],H=3DD.version,G=3DD.build,F=3DYAHOO.env.listeners;B.name=3DA;B.v=
ersion=3DH;B.build=3DG;B.versions.push(H);B.builds.push(G);B.mainClass=3D=
E;for(var =
C=3D0;C<F.length;C=3DC+1){F[C](B);}if(E){E.VERSION=3DH;E.BUILD=3DG;}else{=
YAHOO.log("mainClass is undefined for module =
"+A,"warn");}};YAHOO.env=3DYAHOO.env||{modules:[],listeners:[]};YAHOO.env=
.getVersion=3Dfunction(A){return =
YAHOO.env.modules[A]||null;};YAHOO.env.ua=3Dfunction(){var =
C=3D{ie:0,opera:0,gecko:0,webkit:0,mobile:null};var =
B=3Dnavigator.userAgent,A;if((/KHTML/).test(B)){C.webkit=3D1;}A=3DB.match=
(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=3DparseFloat(A[1]);if(/ =
Mobile\//.test(B)){C.mobile=3D"Apple";}else{A=3DB.match(/NokiaN[^\/]*/);i=
f(A){C.mobile=3DA[0];}}}if(!C.webkit){A=3DB.match(/Opera[\s\/]([^\s]*)/);=
if(A&&A[1]){C.opera=3DparseFloat(A[1]);A=3DB.match(/Opera =
Mini[^;]*/);if(A){C.mobile=3DA[0];}}else{A=3DB.match(/MSIE\s([^;]*)/);if(=
A&&A[1]){C.ie=3DparseFloat(A[1]);}else{A=3DB.match(/Gecko\/([^\s]*)/);if(=
A){C.gecko=3D1;A=3DB.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=3DparseFl=
oat(A[1]);}}}}}return =
C;}();(function(){YAHOO.namespace("util","widget","example");if("undefine=
d"!=3D=3Dtypeof YAHOO_config){var =
B=3DYAHOO_config.listener,A=3DYAHOO.env.listeners,D=3Dtrue,C;if(B){for(C=3D=
0;C<A.length;C=3DC+1){if(A[C]=3D=3DB){D=3Dfalse;break;}}if(D){A.push(B);}=
}}})();YAHOO.lang=3DYAHOO.lang||{isArray:function(B){if(B){var =
A=3DYAHOO.lang;return =
A.isNumber(B.length)&&A.isFunction(B.splice);}return =
false;},isBoolean:function(A){return typeof =
A=3D=3D=3D"boolean";},isFunction:function(A){return typeof =
A=3D=3D=3D"function";},isNull:function(A){return =
A=3D=3D=3Dnull;},isNumber:function(A){return typeof =
A=3D=3D=3D"number"&&isFinite(A);},isObject:function(A){return(A&&(typeof =
A=3D=3D=3D"object"||YAHOO.lang.isFunction(A)))||false;},isString:function=
(A){return typeof A=3D=3D=3D"string";},isUndefined:function(A){return =
typeof =
A=3D=3D=3D"undefined";},hasOwnProperty:function(A,B){if(Object.prototype.=
hasOwnProperty){return A.hasOwnProperty(B);}return =
!YAHOO.lang.isUndefined(A[B])&&A.constructor.prototype[B]!=3D=3DA[B];},_I=
EEnumFix:function(C,B){if(YAHOO.env.ua.ie){var =
E=3D["toString","valueOf"],A;for(A=3D0;A<E.length;A=3DA+1){var =
F=3DE[A],D=3DB[F];if(YAHOO.lang.isFunction(D)&&D!=3DObject.prototype[F]){=
C[F]=3DD;}}}},extend:function(D,E,C){if(!E||!D){throw new =
Error("YAHOO.lang.extend failed, please check that all dependencies are =
included.");}var =
B=3Dfunction(){};B.prototype=3DE.prototype;D.prototype=3Dnew =
B();D.prototype.constructor=3DD;D.superclass=3DE.prototype;if(E.prototype=
.constructor=3D=3DObject.prototype.constructor){E.prototype.constructor=3D=
E;}if(C){for(var A in =
C){D.prototype[A]=3DC[A];}YAHOO.lang._IEEnumFix(D.prototype,C);}},augment=
Object:function(E,D){if(!D||!E){throw new Error("Absorb failed, verify =
dependencies.");}var =
A=3Darguments,C,F,B=3DA[2];if(B&&B!=3D=3Dtrue){for(C=3D2;C<A.length;C=3DC=
+1){E[A[C]]=3DD[A[C]];}}else{for(F in =
D){if(B||!E[F]){E[F]=3DD[F];}}YAHOO.lang._IEEnumFix(E,D);}},augmentProto:=
function(D,C){if(!C||!D){throw new Error("Augment failed, verify =
dependencies.");}var A=3D[D.prototype,C.prototype];for(var =
B=3D2;B<arguments.length;B=3DB+1){A.push(arguments[B]);}YAHOO.lang.augmen=
tObject.apply(this,A);},dump:function(A,G){var =
C=3DYAHOO.lang,D,F,I=3D[],J=3D"{...}",B=3D"f(){...}",H=3D", ",E=3D" =3D> =
";if(!C.isObject(A)){return A+"";}else{if(A instanceof Date||("nodeType" =
in A&&"tagName" in A)){return A;}else{if(C.isFunction(A)){return =
B;}}}G=3D(C.isNumber(G))?G:3;if(C.isArray(A)){I.push("[");for(D=3D0,F=3DA=
.length;D<F;D=3DD+1){if(C.isObject(A[D])){I.push((G>0)?C.dump(A[D],G-1):J=
);}else{I.push(A[D]);}I.push(H);}if(I.length>1){I.pop();}I.push("]");}els=
e{I.push("{");for(D in =
A){if(C.hasOwnProperty(A,D)){I.push(D+E);if(C.isObject(A[D])){I.push((G>0=
)?C.dump(A[D],G-1):J);}else{I.push(A[D]);}I.push(H);}}if(I.length>1){I.po=
p();}I.push("}");}return I.join("");},substitute:function(Q,B,J){var =
G,F,E,M,N,P,D=3DYAHOO.lang,L=3D[],C,H=3D"dump",K=3D" =
",A=3D"{",O=3D"}";for(;;){G=3DQ.lastIndexOf(A);if(G<0){break;}F=3DQ.index=
Of(O,G);if(G+1>=3DF){break;}C=3DQ.substring(G+1,F);M=3DC;P=3Dnull;E=3DM.i=
ndexOf(K);if(E>-1){P=3DM.substring(E+1);M=3DM.substring(0,E);}N=3DB[M];if=
(J){N=3DJ(M,N,P);}if(D.isObject(N)){if(D.isArray(N)){N=3DD.dump(N,parseIn=
t(P,10));}else{P=3DP||"";var =
I=3DP.indexOf(H);if(I>-1){P=3DP.substring(4);}if(N.toString=3D=3D=3DObjec=
t.prototype.toString||I>-1){N=3DD.dump(N,parseInt(P,10));}else{N=3DN.toSt=
ring();}}}else{if(!D.isString(N)&&!D.isNumber(N)){N=3D"~-"+L.length+"-~";=
L[L.length]=3DC;}}Q=3DQ.substring(0,G)+N+Q.substring(F+1);}for(G=3DL.leng=
th-1;G>=3D0;G=3DG-1){Q=3DQ.replace(new =
RegExp("~-"+G+"-~"),"{"+L[G]+"}","g");}return =
Q;},trim:function(A){try{return =
A.replace(/^\s+|\s+$/g,"");}catch(B){return A;}},merge:function(){var =
D=3D{},B=3Darguments;for(var =
C=3D0,A=3DB.length;C<A;C=3DC+1){YAHOO.lang.augmentObject(D,B[C],true);}re=
turn D;},later:function(H,B,I,D,E){H=3DH||0;B=3DB||{};var =
C=3DI,G=3DD,F,A;if(YAHOO.lang.isString(I)){C=3DB[I];}if(!C){throw new =
TypeError("method =
undefined");}if(!YAHOO.lang.isArray(G)){G=3D[D];}F=3Dfunction(){C.apply(B=
,G);};A=3D(E)?setInterval(F,H):setTimeout(F,H);return{interval:E,cancel:f=
unction(){if(this.interval){clearInterval(A);}else{clearTimeout(A);}}};},=
isValue:function(B){var =
A=3DYAHOO.lang;return(A.isObject(B)||A.isString(B)||A.isNumber(B)||A.isBo=
olean(B));}};YAHOO.util.Lang=3DYAHOO.lang;YAHOO.lang.augment=3DYAHOO.lang=
.augmentProto;YAHOO.augment=3DYAHOO.lang.augmentProto;YAHOO.extend=3DYAHO=
O.lang.extend;YAHOO.register("yahoo",YAHOO,{version:"2.4.1",build:"742"})=
;(function(){var =
B=3DYAHOO.util,L,J,H=3D0,K=3D{},F=3D{},N=3Dwindow.document;var =
C=3DYAHOO.env.ua.opera,M=3DYAHOO.env.ua.webkit,A=3DYAHOO.env.ua.gecko,G=3D=
YAHOO.env.ua.ie;var E=3D{HYPHEN:/(-[a-z])/i,ROOT_TAG:/^body|html$/i};var =
O=3Dfunction(Q){if(!E.HYPHEN.test(Q)){return Q;}if(K[Q]){return =
K[Q];}var =
R=3DQ;while(E.HYPHEN.exec(R)){R=3DR.replace(RegExp.$1,RegExp.$1.substr(1)=
.toUpperCase());}K[Q]=3DR;return R;};var P=3Dfunction(R){var =
Q=3DF[R];if(!Q){Q=3Dnew =
RegExp("(?:^|\\s+)"+R+"(?:\\s+|$)");F[R]=3DQ;}return =
Q;};if(N.defaultView&&N.defaultView.getComputedStyle){L=3Dfunction(Q,T){v=
ar S=3Dnull;if(T=3D=3D"float"){T=3D"cssFloat";}var =
R=3DN.defaultView.getComputedStyle(Q,"");if(R){S=3DR[O(T)];}return =
Q.style[T]||S;};}else{if(N.documentElement.currentStyle&&G){L=3Dfunction(=
Q,S){switch(O(S)){case"opacity":var =
U=3D100;try{U=3DQ.filters["DXImageTransform.Microsoft.Alpha"].opacity;}ca=
tch(T){try{U=3DQ.filters("alpha").opacity;}catch(T){}}return =
U/100;case"float":S=3D"styleFloat";default:var =
R=3DQ.currentStyle?Q.currentStyle[S]:null;return(Q.style[S]||R);}};}else{=
L=3Dfunction(Q,R){return =
Q.style[R];};}}if(G){J=3Dfunction(Q,R,S){switch(R){case"opacity":if(YAHOO=
.lang.isString(Q.style.filter)){Q.style.filter=3D"alpha(opacity=3D"+S*100=
+")";if(!Q.currentStyle||!Q.currentStyle.hasLayout){Q.style.zoom=3D1;}}br=
eak;case"float":R=3D"styleFloat";default:Q.style[R]=3DS;}};}else{J=3Dfunc=
tion(Q,R,S){if(R=3D=3D"float"){R=3D"cssFloat";}Q.style[R]=3DS;};}var =
D=3Dfunction(Q,R){return =
Q&&Q.nodeType=3D=3D1&&(!R||R(Q));};YAHOO.util.Dom=3D{get:function(S){if(S=
&&(S.tagName||S.item)){return S;}if(YAHOO.lang.isString(S)||!S){return =
N.getElementById(S);}if(S.length!=3D=3Dundefined){var T=3D[];for(var =
R=3D0,Q=3DS.length;R<Q;++R){T[T.length]=3DB.Dom.get(S[R]);}return =
T;}return S;},getStyle:function(Q,S){S=3DO(S);var R=3Dfunction(T){return =
L(T,S);};return =
B.Dom.batch(Q,R,B.Dom,true);},setStyle:function(Q,S,T){S=3DO(S);var =
R=3Dfunction(U){J(U,S,T);};B.Dom.batch(Q,R,B.Dom,true);},getXY:function(Q=
){var =
R=3Dfunction(S){if((S.parentNode=3D=3D=3Dnull||S.offsetParent=3D=3D=3Dnul=
l||this.getStyle(S,"display")=3D=3D"none")&&S!=3DS.ownerDocument.body){re=
turn false;}return I(S);};return =
B.Dom.batch(Q,R,B.Dom,true);},getX:function(Q){var =
R=3Dfunction(S){return B.Dom.getXY(S)[0];};return =
B.Dom.batch(Q,R,B.Dom,true);},getY:function(Q){var =
R=3Dfunction(S){return B.Dom.getXY(S)[1];};return =
B.Dom.batch(Q,R,B.Dom,true);},setXY:function(Q,T,S){var =
R=3Dfunction(W){var =
V=3Dthis.getStyle(W,"position");if(V=3D=3D"static"){this.setStyle(W,"posi=
tion","relative");V=3D"relative";}var =
Y=3Dthis.getXY(W);if(Y=3D=3D=3Dfalse){return false;}var =
X=3D[parseInt(this.getStyle(W,"left"),10),parseInt(this.getStyle(W,"top")=
,10)];if(isNaN(X[0])){X[0]=3D(V=3D=3D"relative")?0:W.offsetLeft;}if(isNaN=
(X[1])){X[1]=3D(V=3D=3D"relative")?0:W.offsetTop;}if(T[0]!=3D=3Dnull){W.s=
tyle.left=3DT[0]-Y[0]+X[0]+"px";}if(T[1]!=3D=3Dnull){W.style.top=3DT[1]-Y=
[1]+X[1]+"px";}if(!S){var =
U=3Dthis.getXY(W);if((T[0]!=3D=3Dnull&&U[0]!=3DT[0])||(T[1]!=3D=3Dnull&&U=
[1]!=3DT[1])){this.setXY(W,T,true);}}};B.Dom.batch(Q,R,B.Dom,true);},setX=
:function(R,Q){B.Dom.setXY(R,[Q,null]);},setY:function(Q,R){B.Dom.setXY(Q=
,[null,R]);},getRegion:function(Q){var =
R=3Dfunction(S){if((S.parentNode=3D=3D=3Dnull||S.offsetParent=3D=3D=3Dnul=
l||this.getStyle(S,"display")=3D=3D"none")&&S!=3DN.body){return =
false;}var T=3DB.Region.getRegion(S);return T;};return =
B.Dom.batch(Q,R,B.Dom,true);},getClientWidth:function(){return =
B.Dom.getViewportWidth();},getClientHeight:function(){return =
B.Dom.getViewportHeight();},getElementsByClassName:function(U,Y,V,W){Y=3D=
Y||"*";V=3D(V)?B.Dom.get(V):null||N;if(!V){return[];}var =
R=3D[],Q=3DV.getElementsByTagName(Y),X=3DP(U);for(var =
S=3D0,T=3DQ.length;S<T;++S){if(X.test(Q[S].className)){R[R.length]=3DQ[S]=
;if(W){W.call(Q[S],Q[S]);}}}return R;},hasClass:function(S,R){var =
Q=3DP(R);var T=3Dfunction(U){return Q.test(U.className);};return =
B.Dom.batch(S,T,B.Dom,true);},addClass:function(R,Q){var =
S=3Dfunction(T){if(this.hasClass(T,Q)){return =
false;}T.className=3DYAHOO.lang.trim([T.className,Q].join(" "));return =
true;};return =
B.Dom.batch(R,S,B.Dom,true);},removeClass:function(S,R){var Q=3DP(R);var =
T=3Dfunction(U){if(!this.hasClass(U,R)){return false;}var =
V=3DU.className;U.className=3DV.replace(Q," =
");if(this.hasClass(U,R)){this.removeClass(U,R);}U.className=3DYAHOO.lang=
.trim(U.className);return true;};return =
B.Dom.batch(S,T,B.Dom,true);},replaceClass:function(T,R,Q){if(!Q||R=3D=3D=
=3DQ){return false;}var S=3DP(R);var =
U=3Dfunction(V){if(!this.hasClass(V,R)){this.addClass(V,Q);return =
true;}V.className=3DV.className.replace(S," "+Q+" =
");if(this.hasClass(V,R)){this.replaceClass(V,R,Q);}V.className=3DYAHOO.l=
ang.trim(V.className);return true;};return =
B.Dom.batch(T,U,B.Dom,true);},generateId:function(Q,S){S=3DS||"yui-gen";v=
ar R=3Dfunction(T){if(T&&T.id){return T.id;}var =
U=3DS+H++;if(T){T.id=3DU;}return U;};return =
B.Dom.batch(Q,R,B.Dom,true)||R.apply(B.Dom,arguments);},isAncestor:functi=
on(Q,R){Q=3DB.Dom.get(Q);R=3DB.Dom.get(R);if(!Q||!R){return =
false;}if(Q.contains&&R.nodeType&&!M){return =
Q.contains(R);}else{if(Q.compareDocumentPosition&&R.nodeType){return =
!!(Q.compareDocumentPosition(R)&16);}else{if(R.nodeType){return =
!!this.getAncestorBy(R,function(S){return S=3D=3DQ;});}}}return =
false;},inDocument:function(Q){return =
this.isAncestor(N.documentElement,Q);},getElementsBy:function(X,R,S,U){R=3D=
R||"*";S=3D(S)?B.Dom.get(S):null||N;if(!S){return[];}var =
T=3D[],W=3DS.getElementsByTagName(R);for(var =
V=3D0,Q=3DW.length;V<Q;++V){if(X(W[V])){T[T.length]=3DW[V];if(U){U(W[V]);=
}}}return =
T;},batch:function(U,X,W,S){U=3D(U&&(U.tagName||U.item))?U:B.Dom.get(U);i=
f(!U||!X){return false;}var =
T=3D(S)?W:window;if(U.tagName||U.length=3D=3D=3Dundefined){return =
X.call(T,U,W);}var V=3D[];for(var =
R=3D0,Q=3DU.length;R<Q;++R){V[V.length]=3DX.call(T,U[R],W);}return =
V;},getDocumentHeight:function(){var =
R=3D(N.compatMode!=3D"CSS1Compat")?N.body.scrollHeight:N.documentElement.=
scrollHeight;var Q=3DMath.max(R,B.Dom.getViewportHeight());return =
Q;},getDocumentWidth:function(){var =
R=3D(N.compatMode!=3D"CSS1Compat")?N.body.scrollWidth:N.documentElement.s=
crollWidth;var Q=3DMath.max(R,B.Dom.getViewportWidth());return =
Q;},getViewportHeight:function(){var Q=3Dself.innerHeight;var =
R=3DN.compatMode;if((R||G)&&!C){Q=3D(R=3D=3D"CSS1Compat")?N.documentEleme=
nt.clientHeight:N.body.clientHeight;=0A=
}return Q;},getViewportWidth:function(){var Q=3Dself.innerWidth;var =
R=3DN.compatMode;if(R||G){Q=3D(R=3D=3D"CSS1Compat")?N.documentElement.cli=
entWidth:N.body.clientWidth;}return =
Q;},getAncestorBy:function(Q,R){while(Q=3DQ.parentNode){if(D(Q,R)){return=
 Q;}}return =
null;},getAncestorByClassName:function(R,Q){R=3DB.Dom.get(R);if(!R){retur=
n null;}var S=3Dfunction(T){return B.Dom.hasClass(T,Q);};return =
B.Dom.getAncestorBy(R,S);},getAncestorByTagName:function(R,Q){R=3DB.Dom.g=
et(R);if(!R){return null;}var S=3Dfunction(T){return =
T.tagName&&T.tagName.toUpperCase()=3D=3DQ.toUpperCase();};return =
B.Dom.getAncestorBy(R,S);},getPreviousSiblingBy:function(Q,R){while(Q){Q=3D=
Q.previousSibling;if(D(Q,R)){return Q;}}return =
null;},getPreviousSibling:function(Q){Q=3DB.Dom.get(Q);if(!Q){return =
null;}return =
B.Dom.getPreviousSiblingBy(Q);},getNextSiblingBy:function(Q,R){while(Q){Q=
=3DQ.nextSibling;if(D(Q,R)){return Q;}}return =
null;},getNextSibling:function(Q){Q=3DB.Dom.get(Q);if(!Q){return =
null;}return =
B.Dom.getNextSiblingBy(Q);},getFirstChildBy:function(Q,S){var =
R=3D(D(Q.firstChild,S))?Q.firstChild:null;return =
R||B.Dom.getNextSiblingBy(Q.firstChild,S);},getFirstChild:function(Q,R){Q=
=3DB.Dom.get(Q);if(!Q){return null;}return =
B.Dom.getFirstChildBy(Q);},getLastChildBy:function(Q,S){if(!Q){return =
null;}var R=3D(D(Q.lastChild,S))?Q.lastChild:null;return =
R||B.Dom.getPreviousSiblingBy(Q.lastChild,S);},getLastChild:function(Q){Q=
=3DB.Dom.get(Q);return =
B.Dom.getLastChildBy(Q);},getChildrenBy:function(R,T){var =
S=3DB.Dom.getFirstChildBy(R,T);var =
Q=3DS?[S]:[];B.Dom.getNextSiblingBy(S,function(U){if(!T||T(U)){Q[Q.length=
]=3DU;}return false;});return =
Q;},getChildren:function(Q){Q=3DB.Dom.get(Q);if(!Q){}return =
B.Dom.getChildrenBy(Q);},getDocumentScrollLeft:function(Q){Q=3DQ||N;retur=
n =
Math.max(Q.documentElement.scrollLeft,Q.body.scrollLeft);},getDocumentScr=
ollTop:function(Q){Q=3DQ||N;return =
Math.max(Q.documentElement.scrollTop,Q.body.scrollTop);},insertBefore:fun=
ction(R,Q){R=3DB.Dom.get(R);Q=3DB.Dom.get(Q);if(!R||!Q||!Q.parentNode){re=
turn null;}return =
Q.parentNode.insertBefore(R,Q);},insertAfter:function(R,Q){R=3DB.Dom.get(=
R);Q=3DB.Dom.get(Q);if(!R||!Q||!Q.parentNode){return =
null;}if(Q.nextSibling){return =
Q.parentNode.insertBefore(R,Q.nextSibling);}else{return =
Q.parentNode.appendChild(R);}},getClientRegion:function(){var =
S=3DB.Dom.getDocumentScrollTop(),R=3DB.Dom.getDocumentScrollLeft(),T=3DB.=
Dom.getViewportWidth()+R,Q=3DB.Dom.getViewportHeight()+S;return new =
B.Region(S,T,Q,R);}};var =
I=3Dfunction(){if(N.documentElement.getBoundingClientRect){return =
function(R){var S=3DR.getBoundingClientRect();var =
Q=3DR.ownerDocument;return[S.left+B.Dom.getDocumentScrollLeft(Q),S.top+B.=
Dom.getDocumentScrollTop(Q)];};}else{return function(S){var =
T=3D[S.offsetLeft,S.offsetTop];var R=3DS.offsetParent;var =
Q=3D(M&&B.Dom.getStyle(S,"position")=3D=3D"absolute"&&S.offsetParent=3D=3D=
S.ownerDocument.body);if(R!=3DS){while(R){T[0]+=3DR.offsetLeft;T[1]+=3DR.=
offsetTop;if(!Q&&M&&B.Dom.getStyle(R,"position")=3D=3D"absolute"){Q=3Dtru=
e;}R=3DR.offsetParent;}}if(Q){T[0]-=3DS.ownerDocument.body.offsetLeft;T[1=
]-=3DS.ownerDocument.body.offsetTop;}R=3DS.parentNode;while(R.tagName&&!E=
.ROOT_TAG.test(R.tagName)){if(B.Dom.getStyle(R,"display").search(/^inline=
|table-row.*$/i)){T[0]-=3DR.scrollLeft;T[1]-=3DR.scrollTop;}R=3DR.parentN=
ode;}return =
T;};}}();})();YAHOO.util.Region=3Dfunction(C,D,A,B){this.top=3DC;this[1]=3D=
C;this.right=3DD;this.bottom=3DA;this.left=3DB;this[0]=3DB;};YAHOO.util.R=
egion.prototype.contains=3Dfunction(A){return(A.left>=3Dthis.left&&A.righ=
t<=3Dthis.right&&A.top>=3Dthis.top&&A.bottom<=3Dthis.bottom);};YAHOO.util=
.Region.prototype.getArea=3Dfunction(){return((this.bottom-this.top)*(thi=
s.right-this.left));};YAHOO.util.Region.prototype.intersect=3Dfunction(E)=
{var C=3DMath.max(this.top,E.top);var =
D=3DMath.min(this.right,E.right);var =
A=3DMath.min(this.bottom,E.bottom);var =
B=3DMath.max(this.left,E.left);if(A>=3DC&&D>=3DB){return new =
YAHOO.util.Region(C,D,A,B);}else{return =
null;}};YAHOO.util.Region.prototype.union=3Dfunction(E){var =
C=3DMath.min(this.top,E.top);var D=3DMath.max(this.right,E.right);var =
A=3DMath.max(this.bottom,E.bottom);var =
B=3DMath.min(this.left,E.left);return new =
YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=3Dfunct=
ion(){return("Region {top: "+this.top+", right: "+this.right+", bottom: =
"+this.bottom+", left: =
"+this.left+"}");};YAHOO.util.Region.getRegion=3Dfunction(D){var =
F=3DYAHOO.util.Dom.getXY(D);var C=3DF[1];var E=3DF[0]+D.offsetWidth;var =
A=3DF[1]+D.offsetHeight;var B=3DF[0];return new =
YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=3Dfunction(A,B){if(YAHOO.la=
ng.isArray(A)){B=3DA[1];A=3DA[0];}this.x=3Dthis.right=3Dthis.left=3Dthis[=
0]=3DA;this.y=3Dthis.top=3Dthis.bottom=3Dthis[1]=3DB;};YAHOO.util.Point.p=
rototype=3Dnew =
YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.4.1",=
build:"742"});YAHOO.util.CustomEvent=3Dfunction(D,B,C,A){this.type=3DD;th=
is.scope=3DB||window;this.silent=3DC;this.signature=3DA||YAHOO.util.Custo=
mEvent.LIST;this.subscribers=3D[];if(!this.silent){}var =
E=3D"_YUICEOnSubscribe";if(D!=3D=3DE){this.subscribeEvent=3Dnew =
YAHOO.util.CustomEvent(E,this,true);}this.lastError=3Dnull;};YAHOO.util.C=
ustomEvent.LIST=3D0;YAHOO.util.CustomEvent.FLAT=3D1;YAHOO.util.CustomEven=
t.prototype=3D{subscribe:function(B,C,A){if(!B){throw new Error("Invalid =
callback for subscriber to =
'"+this.type+"'");}if(this.subscribeEvent){this.subscribeEvent.fire(B,C,A=
);}this.subscribers.push(new =
YAHOO.util.Subscriber(B,C,A));},unsubscribe:function(D,F){if(!D){return =
this.unsubscribeAll();}var E=3Dfalse;for(var =
B=3D0,A=3Dthis.subscribers.length;B<A;++B){var =
C=3Dthis.subscribers[B];if(C&&C.contains(D,F)){this._delete(B);E=3Dtrue;}=
}return E;},fire:function(){var =
D=3Dthis.subscribers.length;if(!D&&this.silent){return true;}var =
H=3D[],F=3Dtrue,C,I=3Dfalse;for(C=3D0;C<arguments.length;++C){H.push(argu=
ments[C]);}if(!this.silent){}for(C=3D0;C<D;++C){var =
L=3Dthis.subscribers[C];if(!L){I=3Dtrue;}else{if(!this.silent){}var =
K=3DL.getScope(this.scope);if(this.signature=3D=3DYAHOO.util.CustomEvent.=
FLAT){var =
A=3Dnull;if(H.length>0){A=3DH[0];}try{F=3DL.fn.call(K,A,L.obj);}catch(E){=
this.lastError=3DE;}}else{try{F=3DL.fn.call(K,this.type,H,L.obj);}catch(G=
){this.lastError=3DG;}}if(false=3D=3D=3DF){if(!this.silent){}return =
false;}}}if(I){var =
J=3D[],B=3Dthis.subscribers;for(C=3D0,D=3DB.length;C<D;C=3DC+1){J.push(B[=
C]);}this.subscribers=3DJ;}return =
true;},unsubscribeAll:function(){for(var =
B=3D0,A=3Dthis.subscribers.length;B<A;++B){this._delete(A-1-B);}this.subs=
cribers=3D[];return B;},_delete:function(A){var =
B=3Dthis.subscribers[A];if(B){delete B.fn;delete =
B.obj;}this.subscribers[A]=3Dnull;},toString:function(){return"CustomEven=
t: '"+this.type+"', scope: =
"+this.scope;}};YAHOO.util.Subscriber=3Dfunction(B,C,A){this.fn=3DB;this.=
obj=3DYAHOO.lang.isUndefined(C)?null:C;this.override=3DA;};YAHOO.util.Sub=
scriber.prototype.getScope=3Dfunction(A){if(this.override){if(this.overri=
de=3D=3D=3Dtrue){return this.obj;}else{return this.override;}}return =
A;};YAHOO.util.Subscriber.prototype.contains=3Dfunction(A,B){if(B){return=
(this.fn=3D=3DA&&this.obj=3D=3DB);}else{return(this.fn=3D=3DA);}};YAHOO.u=
til.Subscriber.prototype.toString=3Dfunction(){return"Subscriber { obj: =
"+this.obj+", override: "+(this.override||"no")+" =
}";};if(!YAHOO.util.Event){YAHOO.util.Event=3Dfunction(){var =
H=3Dfalse;var I=3D[];var J=3D[];var G=3D[];var E=3D[];var C=3D0;var =
F=3D[];var B=3D[];var A=3D0;var =
D=3D{63232:38,63233:40,63234:37,63235:39,63276:33,63277:34,25:9};return{P=
OLL_RETRYS:4000,POLL_INTERVAL:10,EL:0,TYPE:1,FN:2,WFN:3,UNLOAD_OBJ:3,ADJ_=
SCOPE:4,OBJ:5,OVERRIDE:6,lastError:null,isSafari:YAHOO.env.ua.webkit,webk=
it:YAHOO.env.ua.webkit,isIE:YAHOO.env.ua.ie,_interval:null,_dri:null,DOMR=
eady:false,startInterval:function(){if(!this._interval){var K=3Dthis;var =
L=3Dfunction(){K._tryPreloadAttach();};this._interval=3DsetInterval(L,thi=
s.POLL_INTERVAL);}},onAvailable:function(P,M,Q,O,N){var =
K=3D(YAHOO.lang.isString(P))?[P]:P;for(var =
L=3D0;L<K.length;L=3DL+1){F.push({id:K[L],fn:M,obj:Q,override:O,checkRead=
y:N});}C=3Dthis.POLL_RETRYS;this.startInterval();},onContentReady:functio=
n(M,K,N,L){this.onAvailable(M,K,N,L,true);},onDOMReady:function(K,M,L){if=
(this.DOMReady){setTimeout(function(){var =
N=3Dwindow;if(L){if(L=3D=3D=3Dtrue){N=3DM;}else{N=3DL;}}K.call(N,"DOMRead=
y",[],M);},0);}else{this.DOMReadyEvent.subscribe(K,M,L);}},addListener:fu=
nction(M,K,V,Q,L){if(!V||!V.call){return =
false;}if(this._isValidCollection(M)){var W=3Dtrue;for(var =
R=3D0,T=3DM.length;R<T;++R){W=3Dthis.on(M[R],K,V,Q,L)&&W;}return =
W;}else{if(YAHOO.lang.isString(M)){var =
P=3Dthis.getEl(M);if(P){M=3DP;}else{this.onAvailable(M,function(){YAHOO.u=
til.Event.on(M,K,V,Q,L);});return true;}}}if(!M){return =
false;}if("unload"=3D=3DK&&Q!=3D=3Dthis){J[J.length]=3D[M,K,V,Q,L];return=
 true;}var Y=3DM;if(L){if(L=3D=3D=3Dtrue){Y=3DQ;}else{Y=3DL;}}var =
N=3Dfunction(Z){return V.call(Y,YAHOO.util.Event.getEvent(Z,M),Q);};var =
X=3D[M,K,V,N,Y,Q,L];var =
S=3DI.length;I[S]=3DX;if(this.useLegacyEvent(M,K)){var =
O=3Dthis.getLegacyIndex(M,K);if(O=3D=3D-1||M!=3DG[O][0]){O=3DG.length;B[M=
.id+K]=3DO;G[O]=3D[M,K,M["on"+K]];E[O]=3D[];M["on"+K]=3Dfunction(Z){YAHOO=
.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(Z),O);};}E[O].push(=
X);}else{try{this._simpleAdd(M,K,N,false);}catch(U){this.lastError=3DU;th=
is.removeListener(M,K,V);return false;}}return =
true;},fireLegacyEvent:function(O,M){var =
Q=3Dtrue,K,S,R,T,P;S=3DE[M];for(var =
L=3D0,N=3DS.length;L<N;++L){R=3DS[L];if(R&&R[this.WFN]){T=3DR[this.ADJ_SC=
OPE];P=3DR[this.WFN].call(T,O);Q=3D(Q&&P);}}K=3DG[M];if(K&&K[2]){K[2](O);=
}return Q;},getLegacyIndex:function(L,M){var =
K=3Dthis.generateId(L)+M;if(typeof B[K]=3D=3D"undefined"){return =
-1;}else{return =
B[K];}},useLegacyEvent:function(L,M){if(this.webkit&&("click"=3D=3DM||"db=
lclick"=3D=3DM)){var =
K=3DparseInt(this.webkit,10);if(!isNaN(K)&&K<418){return true;}}return =
false;},removeListener:function(L,K,T){var O,R,V;if(typeof =
L=3D=3D"string"){L=3Dthis.getEl(L);}else{if(this._isValidCollection(L)){v=
ar =
U=3Dtrue;for(O=3D0,R=3DL.length;O<R;++O){U=3D(this.removeListener(L[O],K,=
T)&&U);}return U;}}if(!T||!T.call){return =
this.purgeElement(L,false,K);}if("unload"=3D=3DK){for(O=3D0,R=3DJ.length;=
O<R;O++){V=3DJ[O];if(V&&V[0]=3D=3DL&&V[1]=3D=3DK&&V[2]=3D=3DT){J[O]=3Dnul=
l;return true;}}return false;}var P=3Dnull;var =
Q=3Darguments[3];if("undefined"=3D=3D=3Dtypeof =
Q){Q=3Dthis._getCacheIndex(L,K,T);}if(Q>=3D0){P=3DI[Q];}if(!L||!P){return=
 false;}if(this.useLegacyEvent(L,K)){var =
N=3Dthis.getLegacyIndex(L,K);var =
M=3DE[N];if(M){for(O=3D0,R=3DM.length;O<R;++O){V=3DM[O];if(V&&V[this.EL]=3D=
=3DL&&V[this.TYPE]=3D=3DK&&V[this.FN]=3D=3DT){M[O]=3Dnull;break;}}}}else{=
try{this._simpleRemove(L,K,P[this.WFN],false);}catch(S){this.lastError=3D=
S;return false;}}delete I[Q][this.WFN];delete =
I[Q][this.FN];I[Q]=3Dnull;return true;},getTarget:function(M,L){var =
K=3DM.target||M.srcElement;return =
this.resolveTextNode(K);},resolveTextNode:function(K){if(K&&3=3D=3DK.node=
Type){return K.parentNode;}else{return K;}},getPageX:function(L){var =
K=3DL.pageX;if(!K&&0!=3D=3DK){K=3DL.clientX||0;if(this.isIE){K+=3Dthis._g=
etScrollLeft();}}return K;},getPageY:function(K){var =
L=3DK.pageY;if(!L&&0!=3D=3DL){L=3DK.clientY||0;if(this.isIE){L+=3Dthis._g=
etScrollTop();}}return =
L;},getXY:function(K){return[this.getPageX(K),this.getPageY(K)];=0A=
},getRelatedTarget:function(L){var =
K=3DL.relatedTarget;if(!K){if(L.type=3D=3D"mouseout"){K=3DL.toElement;}el=
se{if(L.type=3D=3D"mouseover"){K=3DL.fromElement;}}}return =
this.resolveTextNode(K);},getTime:function(M){if(!M.time){var L=3Dnew =
Date().getTime();try{M.time=3DL;}catch(K){this.lastError=3DK;return =
L;}}return =
M.time;},stopEvent:function(K){this.stopPropagation(K);this.preventDefaul=
t(K);},stopPropagation:function(K){if(K.stopPropagation){K.stopPropagatio=
n();}else{K.cancelBubble=3Dtrue;}},preventDefault:function(K){if(K.preven=
tDefault){K.preventDefault();}else{K.returnValue=3Dfalse;}},getEvent:func=
tion(M,K){var L=3DM||window.event;if(!L){var =
N=3Dthis.getEvent.caller;while(N){L=3DN.arguments[0];if(L&&Event=3D=3DL.c=
onstructor){break;}N=3DN.caller;}}return L;},getCharCode:function(L){var =
K=3DL.keyCode||L.charCode||0;if(YAHOO.env.ua.webkit&&(K in =
D)){K=3DD[K];}return K;},_getCacheIndex:function(O,P,N){for(var =
M=3D0,L=3DI.length;M<L;++M){var =
K=3DI[M];if(K&&K[this.FN]=3D=3DN&&K[this.EL]=3D=3DO&&K[this.TYPE]=3D=3DP)=
{return M;}}return -1;},generateId:function(K){var =
L=3DK.id;if(!L){L=3D"yuievtautoid-"+A;++A;K.id=3DL;}return =
L;},_isValidCollection:function(L){try{return(L&&typeof =
L!=3D=3D"string"&&L.length&&!L.tagName&&!L.alert&&typeof =
L[0]!=3D=3D"undefined");}catch(K){return =
false;}},elCache:{},getEl:function(K){return(typeof =
K=3D=3D=3D"string")?document.getElementById(K):K;},clearCache:function(){=
},DOMReadyEvent:new =
YAHOO.util.CustomEvent("DOMReady",this),_load:function(L){if(!H){H=3Dtrue=
;var =
K=3DYAHOO.util.Event;K._ready();K._tryPreloadAttach();}},_ready:function(=
L){var =
K=3DYAHOO.util.Event;if(!K.DOMReady){K.DOMReady=3Dtrue;K.DOMReadyEvent.fi=
re();K._simpleRemove(document,"DOMContentLoaded",K._ready);}},_tryPreload=
Attach:function(){if(this.locked){return =
false;}if(this.isIE){if(!this.DOMReady){this.startInterval();return =
false;}}this.locked=3Dtrue;var P=3D!H;if(!P){P=3D(C>0);}var O=3D[];var =
Q=3Dfunction(S,T){var =
R=3DS;if(T.override){if(T.override=3D=3D=3Dtrue){R=3DT.obj;}else{R=3DT.ov=
erride;}}T.fn.call(R,T.obj);};var =
L,K,N,M;for(L=3D0,K=3DF.length;L<K;++L){N=3DF[L];if(N&&!N.checkReady){M=3D=
this.getEl(N.id);if(M){Q(M,N);F[L]=3Dnull;}else{O.push(N);}}}for(L=3D0,K=3D=
F.length;L<K;++L){N=3DF[L];if(N&&N.checkReady){M=3Dthis.getEl(N.id);if(M)=
{if(H||M.nextSibling){Q(M,N);F[L]=3Dnull;}}else{O.push(N);}}}C=3D(O.lengt=
h=3D=3D=3D0)?0:C-1;if(P){this.startInterval();}else{clearInterval(this._i=
nterval);this._interval=3Dnull;}this.locked=3Dfalse;return =
true;},purgeElement:function(O,P,R){var =
M=3D(YAHOO.lang.isString(O))?this.getEl(O):O;var =
Q=3Dthis.getListeners(M,R),N,K;if(Q){for(N=3D0,K=3DQ.length;N<K;++N){var =
L=3DQ[N];this.removeListener(M,L.type,L.fn,L.index);}}if(P&&M&&M.childNod=
es){for(N=3D0,K=3DM.childNodes.length;N<K;++N){this.purgeElement(M.childN=
odes[N],P,R);}}},getListeners:function(M,K){var =
P=3D[],L;if(!K){L=3D[I,J];}else{if(K=3D=3D=3D"unload"){L=3D[J];}else{L=3D=
[I];}}var R=3D(YAHOO.lang.isString(M))?this.getEl(M):M;for(var =
O=3D0;O<L.length;O=3DO+1){var T=3DL[O];if(T&&T.length>0){for(var =
Q=3D0,S=3DT.length;Q<S;++Q){var =
N=3DT[Q];if(N&&N[this.EL]=3D=3D=3DR&&(!K||K=3D=3D=3DN[this.TYPE])){P.push=
({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.OVERRIDE]=
,scope:N[this.ADJ_SCOPE],index:Q});}}}}return(P.length)?P:null;},_unload:=
function(R){var =
Q=3DYAHOO.util.Event,O,N,L,K,M;for(O=3D0,K=3DJ.length;O<K;++O){L=3DJ[O];i=
f(L){var =
P=3Dwindow;if(L[Q.ADJ_SCOPE]){if(L[Q.ADJ_SCOPE]=3D=3D=3Dtrue){P=3DL[Q.UNL=
OAD_OBJ];}else{P=3DL[Q.ADJ_SCOPE];}}L[Q.FN].call(P,Q.getEvent(R,L[Q.EL]),=
L[Q.UNLOAD_OBJ]);J[O]=3Dnull;L=3Dnull;P=3Dnull;}}J=3Dnull;if(YAHOO.env.ua=
.ie&&I&&I.length>0){N=3DI.length;while(N){M=3DN-1;L=3DI[M];if(L){Q.remove=
Listener(L[Q.EL],L[Q.TYPE],L[Q.FN],M);}N--;}L=3Dnull;}G=3Dnull;Q._simpleR=
emove(window,"unload",Q._unload);},_getScrollLeft:function(){return =
this._getScroll()[1];},_getScrollTop:function(){return =
this._getScroll()[0];},_getScroll:function(){var =
K=3Ddocument.documentElement,L=3Ddocument.body;if(K&&(K.scrollTop||K.scro=
llLeft)){return[K.scrollTop,K.scrollLeft];}else{if(L){return[L.scrollTop,=
L.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:functio=
n(){if(window.addEventListener){return =
function(M,N,L,K){M.addEventListener(N,L,(K));};}else{if(window.attachEve=
nt){return function(M,N,L,K){M.attachEvent("on"+N,L);};}else{return =
function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener=
){return =
function(M,N,L,K){M.removeEventListener(N,L,(K));};}else{if(window.detach=
Event){return function(L,M,K){L.detachEvent("on"+M,K);};}else{return =
function(){};}}}()};}();(function(){var =
A=3DYAHOO.util.Event;A.on=3DA.addListener;if(A.isIE){YAHOO.util.Event.onD=
OMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);A._dri=3D=
setInterval(function(){var =
C=3Ddocument.createElement("p");try{C.doScroll("left");clearInterval(A._d=
ri);A._dri=3Dnull;A._ready();C=3Dnull;}catch(B){C=3Dnull;}},A.POLL_INTERV=
AL);}else{if(A.webkit){A._dri=3DsetInterval(function(){var =
B=3Ddocument.readyState;if("loaded"=3D=3DB||"complete"=3D=3DB){clearInter=
val(A._dri);A._dri=3Dnull;A._ready();}},A.POLL_INTERVAL);}else{A._simpleA=
dd(document,"DOMContentLoaded",A._ready);}}A._simpleAdd(window,"load",A._=
load);A._simpleAdd(window,"unload",A._unload);A._tryPreloadAttach();})();=
}YAHOO.util.EventProvider=3Dfunction(){};YAHOO.util.EventProvider.prototy=
pe=3D{__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E=
){this.__yui_events=3Dthis.__yui_events||{};var =
D=3Dthis.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscr=
ibers=3Dthis.__yui_subscribers||{};var =
B=3Dthis.__yui_subscribers;if(!B[A]){B[A]=3D[];}B[A].push({fn:C,obj:F,ove=
rride:E});}},unsubscribe:function(C,E,G){this.__yui_events=3Dthis.__yui_e=
vents||{};var A=3Dthis.__yui_events;if(C){var F=3DA[C];if(F){return =
F.unsubscribe(E,G);}}else{var B=3Dtrue;for(var D in =
A){if(YAHOO.lang.hasOwnProperty(A,D)){B=3DB&&A[D].unsubscribe(E,G);}}retu=
rn B;}return false;},unsubscribeAll:function(A){return =
this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=3Dthis.=
__yui_events||{};var A=3DD||{};var =
I=3Dthis.__yui_events;if(I[G]){}else{var H=3DA.scope||this;var =
E=3D(A.silent);var B=3Dnew =
YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=3DB;if(A.o=
nSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}th=
is.__yui_subscribers=3Dthis.__yui_subscribers||{};=0A=
var F=3Dthis.__yui_subscribers[G];if(F){for(var =
C=3D0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].override);}}}retu=
rn =
I[G];},fireEvent:function(E,D,A,C){this.__yui_events=3Dthis.__yui_events|=
|{};var G=3Dthis.__yui_events[E];if(!G){return null;}var B=3D[];for(var =
F=3D1;F<arguments.length;++F){B.push(arguments[F]);}return =
G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__=
yui_events[A]){return true;}}return =
false;}};YAHOO.util.KeyListener=3Dfunction(A,F,B,C){if(!A){}else{if(!F){}=
else{if(!B){}}}if(!C){C=3DYAHOO.util.KeyListener.KEYDOWN;}var D=3Dnew =
YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=3Dnew =
YAHOO.util.CustomEvent("enabled");this.disabledEvent=3Dnew =
YAHOO.util.CustomEvent("disabled");if(typeof =
A=3D=3D"string"){A=3Ddocument.getElementById(A);}if(typeof =
B=3D=3D"function"){D.subscribe(B);}else{D.subscribe(B.fn,B.scope,B.correc=
tScope);}function =
E(J,I){if(!F.shift){F.shift=3Dfalse;}if(!F.alt){F.alt=3Dfalse;}if(!F.ctrl=
){F.ctrl=3Dfalse;}if(J.shiftKey=3D=3DF.shift&&J.altKey=3D=3DF.alt&&J.ctrl=
Key=3D=3DF.ctrl){var G;if(F.keys instanceof Array){for(var =
H=3D0;H<F.keys.length;H++){G=3DF.keys[H];if(G=3D=3DJ.charCode){D.fire(J.c=
harCode,J);break;}else{if(G=3D=3DJ.keyCode){D.fire(J.keyCode,J);break;}}}=
}else{G=3DF.keys;if(G=3D=3DJ.charCode){D.fire(J.charCode,J);}else{if(G=3D=
=3DJ.keyCode){D.fire(J.keyCode,J);}}}}}this.enable=3Dfunction(){if(!this.=
enabled){YAHOO.util.Event.addListener(A,C,E);this.enabledEvent.fire(F);}t=
his.enabled=3Dtrue;};this.disable=3Dfunction(){if(this.enabled){YAHOO.uti=
l.Event.removeListener(A,C,E);this.disabledEvent.fire(F);}this.enabled=3D=
false;};this.toString=3Dfunction(){return"KeyListener ["+F.keys+"] =
"+A.tagName+(A.id?"["+A.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN=3D"=
keydown";YAHOO.util.KeyListener.KEYUP=3D"keyup";YAHOO.util.KeyListener.KE=
Y=3D{ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35=
,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PA=
GE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:=
32,TAB:9,UP:38};YAHOO.register("event",YAHOO.util.Event,{version:"2.4.1",=
build:"742"});YAHOO.register("yahoo-dom-event", YAHOO, {version: =
"2.4.1", build: "742"});=0A=

------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.dcschools.com/fileadmin/templates/js/container_core.js

/*=0A=
Copyright (c) 2007, Yahoo! Inc. All rights reserved.=0A=
Code licensed under the BSD License:=0A=
http://developer.yahoo.net/yui/license.txt=0A=
version: 2.4.1=0A=
*/=0A=
(function () {=0A=
=0A=
    /**=0A=
    * Config is a utility used within an Object to allow the implementer =
to=0A=
    * maintain a list of local configuration properties and listen for =
changes =0A=
    * to those properties dynamically using CustomEvent. The initial =
values are =0A=
    * also maintained so that the configuration can be reset at any =
given point =0A=
    * to its initial state.=0A=
    * @namespace YAHOO.util=0A=
    * @class Config=0A=
    * @constructor=0A=
    * @param {Object} owner The owner Object to which this Config Object =
belongs=0A=
    */=0A=
    YAHOO.util.Config =3D function (owner) {=0A=
=0A=
        if (owner) {=0A=
            this.init(owner);=0A=
        }=0A=
=0A=
=0A=
    };=0A=
=0A=
=0A=
    var Lang =3D YAHOO.lang,=0A=
        CustomEvent =3D YAHOO.util.CustomEvent,=0A=
        Config =3D YAHOO.util.Config;=0A=
=0A=
=0A=
    /**=0A=
     * Constant representing the CustomEvent type for the config changed =
event.=0A=
     * @property YAHOO.util.Config.CONFIG_CHANGED_EVENT=0A=
     * @private=0A=
     * @static=0A=
     * @final=0A=
     */=0A=
    Config.CONFIG_CHANGED_EVENT =3D "configChanged";=0A=
    =0A=
    /**=0A=
     * Constant representing the boolean type string=0A=
     * @property YAHOO.util.Config.BOOLEAN_TYPE=0A=
     * @private=0A=
     * @static=0A=
     * @final=0A=
     */=0A=
    Config.BOOLEAN_TYPE =3D "boolean";=0A=
    =0A=
    Config.prototype =3D {=0A=
     =0A=
        /**=0A=
        * Object reference to the owner of this Config Object=0A=
        * @property owner=0A=
        * @type Object=0A=
        */=0A=
        owner: null,=0A=
        =0A=
        /**=0A=
        * Boolean flag that specifies whether a queue is currently =0A=
        * being executed=0A=
        * @property queueInProgress=0A=
        * @type Boolean=0A=
        */=0A=
        queueInProgress: false,=0A=
        =0A=
        /**=0A=
        * Maintains the local collection of configuration property =
objects and =0A=
        * their specified values=0A=
        * @property config=0A=
        * @private=0A=
        * @type Object=0A=
        */ =0A=
        config: null,=0A=
        =0A=
        /**=0A=
        * Maintains the local collection of configuration property =
objects as =0A=
        * they were initially applied.=0A=
        * This object is used when resetting a property.=0A=
        * @property initialConfig=0A=
        * @private=0A=
        * @type Object=0A=
        */ =0A=
        initialConfig: null,=0A=
        =0A=
        /**=0A=
        * Maintains the local, normalized CustomEvent queue=0A=
        * @property eventQueue=0A=
        * @private=0A=
        * @type Object=0A=
        */ =0A=
        eventQueue: null,=0A=
        =0A=
        /**=0A=
        * Custom Event, notifying subscribers when Config properties are =
set =0A=
        * (setProperty is called without the silent flag=0A=
        * @event configChangedEvent=0A=
        */=0A=
        configChangedEvent: null,=0A=
    =0A=
        /**=0A=
        * Initializes the configuration Object and all of its local =
members.=0A=
        * @method init=0A=
        * @param {Object} owner The owner Object to which this Config =0A=
        * Object belongs=0A=
        */=0A=
        init: function (owner) {=0A=
    =0A=
            this.owner =3D owner;=0A=
    =0A=
            this.configChangedEvent =3D =0A=
                this.createEvent(Config.CONFIG_CHANGED_EVENT);=0A=
    =0A=
            this.configChangedEvent.signature =3D CustomEvent.LIST;=0A=
            this.queueInProgress =3D false;=0A=
            this.config =3D {};=0A=
            this.initialConfig =3D {};=0A=
            this.eventQueue =3D [];=0A=
        =0A=
        },=0A=
        =0A=
        /**=0A=
        * Validates that the value passed in is a Boolean.=0A=
        * @method checkBoolean=0A=
        * @param {Object} val The value to validate=0A=
        * @return {Boolean} true, if the value is valid=0A=
        */ =0A=
        checkBoolean: function (val) {=0A=
            return (typeof val =3D=3D Config.BOOLEAN_TYPE);=0A=
        },=0A=
        =0A=
        /**=0A=
        * Validates that the value passed in is a number.=0A=
        * @method checkNumber=0A=
        * @param {Object} val The value to validate=0A=
        * @return {Boolean} true, if the value is valid=0A=
        */=0A=
        checkNumber: function (val) {=0A=
            return (!isNaN(val));=0A=
        },=0A=
        =0A=
        /**=0A=
        * Fires a configuration property event using the specified =
value. =0A=
        * @method fireEvent=0A=
        * @private=0A=
        * @param {String} key The configuration property's name=0A=
        * @param {value} Object The value of the correct type for the =
property=0A=
        */ =0A=
        fireEvent: function ( key, value ) {=0A=
            var property =3D this.config[key];=0A=
        =0A=
            if (property && property.event) {=0A=
                property.event.fire(value);=0A=
            } =0A=
        },=0A=
        =0A=
        /**=0A=
        * Adds a property to the Config Object's private config hash.=0A=
        * @method addProperty=0A=
        * @param {String} key The configuration property's name=0A=
        * @param {Object} propertyObject The Object containing all of =
this =0A=
        * property's arguments=0A=
        */=0A=
        addProperty: function ( key, propertyObject ) {=0A=
            key =3D key.toLowerCase();=0A=
        =0A=
            this.config[key] =3D propertyObject;=0A=
        =0A=
            propertyObject.event =3D this.createEvent(key, { scope: =
this.owner });=0A=
            propertyObject.event.signature =3D CustomEvent.LIST;=0A=
            =0A=
            =0A=
            propertyObject.key =3D key;=0A=
        =0A=
            if (propertyObject.handler) {=0A=
                propertyObject.event.subscribe(propertyObject.handler, =0A=
                    this.owner);=0A=
            }=0A=
        =0A=
            this.setProperty(key, propertyObject.value, true);=0A=
            =0A=
            if (! propertyObject.suppressEvent) {=0A=
                this.queueProperty(key, propertyObject.value);=0A=
            }=0A=
            =0A=
        },=0A=
        =0A=
        /**=0A=
        * Returns a key-value configuration map of the values currently =
set in  =0A=
        * the Config Object.=0A=
        * @method getConfig=0A=
        * @return {Object} The current config, represented in a =
key-value map=0A=
        */=0A=
        getConfig: function () {=0A=
        =0A=
            var cfg =3D {},=0A=
                prop,=0A=
                property;=0A=
                =0A=
            for (prop in this.config) {=0A=
                property =3D this.config[prop];=0A=
                if (property && property.event) {=0A=
                    cfg[prop] =3D property.value;=0A=
                }=0A=
            }=0A=
            =0A=
            return cfg;=0A=
        },=0A=
        =0A=
        /**=0A=
        * Returns the value of specified property.=0A=
        * @method getProperty=0A=
        * @param {String} key The name of the property=0A=
        * @return {Object}  The value of the specified property=0A=
        */=0A=
        getProperty: function (key) {=0A=
            var property =3D this.config[key.toLowerCase()];=0A=
            if (property && property.event) {=0A=
                return property.value;=0A=
            } else {=0A=
                return undefined;=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Resets the specified property's value to its initial value.=0A=
        * @method resetProperty=0A=
        * @param {String} key The name of the property=0A=
        * @return {Boolean} True is the property was reset, false if not=0A=
        */=0A=
        resetProperty: function (key) {=0A=
    =0A=
            key =3D key.toLowerCase();=0A=
        =0A=
            var property =3D this.config[key];=0A=
    =0A=
            if (property && property.event) {=0A=
    =0A=
                if (this.initialConfig[key] && =0A=
                    !Lang.isUndefined(this.initialConfig[key])) {=0A=
    =0A=
                    this.setProperty(key, this.initialConfig[key]);=0A=
=0A=
                    return true;=0A=
    =0A=
                }=0A=
    =0A=
            } else {=0A=
    =0A=
                return false;=0A=
            }=0A=
    =0A=
        },=0A=
        =0A=
        /**=0A=
        * Sets the value of a property. If the silent property is passed =
as =0A=
        * true, the property's event will not be fired.=0A=
        * @method setProperty=0A=
        * @param {String} key The name of the property=0A=
        * @param {String} value The value to set the property to=0A=
        * @param {Boolean} silent Whether the value should be set =
silently, =0A=
        * without firing the property event.=0A=
        * @return {Boolean} True, if the set was successful, false if it =
failed.=0A=
        */=0A=
        setProperty: function (key, value, silent) {=0A=
        =0A=
            var property;=0A=
        =0A=
            key =3D key.toLowerCase();=0A=
        =0A=
            if (this.queueInProgress && ! silent) {=0A=
                // Currently running through a queue... =0A=
                this.queueProperty(key,value);=0A=
                return true;=0A=
    =0A=
            } else {=0A=
                property =3D this.config[key];=0A=
                if (property && property.event) {=0A=
                    if (property.validator && =
!property.validator(value)) {=0A=
                        return false;=0A=
                    } else {=0A=
                        property.value =3D value;=0A=
                        if (! silent) {=0A=
                            this.fireEvent(key, value);=0A=
                            this.configChangedEvent.fire([key, value]);=0A=
                        }=0A=
                        return true;=0A=
                    }=0A=
                } else {=0A=
                    return false;=0A=
                }=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Sets the value of a property and queues its event to execute. =
If the =0A=
        * event is already scheduled to execute, it is=0A=
        * moved from its current position to the end of the queue.=0A=
        * @method queueProperty=0A=
        * @param {String} key The name of the property=0A=
        * @param {String} value The value to set the property to=0A=
        * @return {Boolean}  true, if the set was successful, false if =0A=
        * it failed.=0A=
        */ =0A=
        queueProperty: function (key, value) {=0A=
        =0A=
            key =3D key.toLowerCase();=0A=
        =0A=
            var property =3D this.config[key],=0A=
                foundDuplicate =3D false,=0A=
                iLen,=0A=
                queueItem,=0A=
                queueItemKey,=0A=
                queueItemValue,=0A=
                sLen,=0A=
                supercedesCheck,=0A=
                qLen,=0A=
                queueItemCheck,=0A=
                queueItemCheckKey,=0A=
                queueItemCheckValue,=0A=
                i,=0A=
                s,=0A=
                q;=0A=
                                =0A=
            if (property && property.event) {=0A=
    =0A=
                if (!Lang.isUndefined(value) && property.validator && =0A=
                    !property.validator(value)) { // validator=0A=
                    return false;=0A=
                } else {=0A=
        =0A=
                    if (!Lang.isUndefined(value)) {=0A=
                        property.value =3D value;=0A=
                    } else {=0A=
                        value =3D property.value;=0A=
                    }=0A=
        =0A=
                    foundDuplicate =3D false;=0A=
                    iLen =3D this.eventQueue.length;=0A=
        =0A=
                    for (i =3D 0; i < iLen; i++) {=0A=
                        queueItem =3D this.eventQueue[i];=0A=
        =0A=
                        if (queueItem) {=0A=
                            queueItemKey =3D queueItem[0];=0A=
                            queueItemValue =3D queueItem[1];=0A=
=0A=
                            if (queueItemKey =3D=3D key) {=0A=
    =0A=
                                /*=0A=
                                    found a dupe... push to end of =
queue, null =0A=
                                    current item, and break=0A=
                                */=0A=
    =0A=
                                this.eventQueue[i] =3D null;=0A=
    =0A=
                                this.eventQueue.push(=0A=
                                    [key, (!Lang.isUndefined(value) ? =0A=
                                    value : queueItemValue)]);=0A=
    =0A=
                                foundDuplicate =3D true;=0A=
                                break;=0A=
                            }=0A=
                        }=0A=
                    }=0A=
                    =0A=
                    // this is a refire, or a new property in the queue=0A=
    =0A=
                    if (! foundDuplicate && !Lang.isUndefined(value)) { =0A=
                        this.eventQueue.push([key, value]);=0A=
                    }=0A=
                }=0A=
        =0A=
                if (property.supercedes) {=0A=
=0A=
                    sLen =3D property.supercedes.length;=0A=
=0A=
                    for (s =3D 0; s < sLen; s++) {=0A=
=0A=
                        supercedesCheck =3D property.supercedes[s];=0A=
                        qLen =3D this.eventQueue.length;=0A=
=0A=
                        for (q =3D 0; q < qLen; q++) {=0A=
                            queueItemCheck =3D this.eventQueue[q];=0A=
=0A=
                            if (queueItemCheck) {=0A=
                                queueItemCheckKey =3D queueItemCheck[0];=0A=
                                queueItemCheckValue =3D =
queueItemCheck[1];=0A=
=0A=
                                if (queueItemCheckKey =3D=3D =0A=
                                    supercedesCheck.toLowerCase() ) {=0A=
=0A=
                                    =
this.eventQueue.push([queueItemCheckKey, =0A=
                                        queueItemCheckValue]);=0A=
=0A=
                                    this.eventQueue[q] =3D null;=0A=
                                    break;=0A=
=0A=
                                }=0A=
                            }=0A=
                        }=0A=
                    }=0A=
                }=0A=
=0A=
=0A=
                return true;=0A=
            } else {=0A=
                return false;=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Fires the event for a property using the property's current =
value.=0A=
        * @method refireEvent=0A=
        * @param {String} key The name of the property=0A=
        */=0A=
        refireEvent: function (key) {=0A=
    =0A=
            key =3D key.toLowerCase();=0A=
        =0A=
            var property =3D this.config[key];=0A=
    =0A=
            if (property && property.event && =0A=
    =0A=
                !Lang.isUndefined(property.value)) {=0A=
    =0A=
                if (this.queueInProgress) {=0A=
    =0A=
                    this.queueProperty(key);=0A=
    =0A=
                } else {=0A=
    =0A=
                    this.fireEvent(key, property.value);=0A=
    =0A=
                }=0A=
    =0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Applies a key-value Object literal to the configuration, =
replacing  =0A=
        * any existing values, and queueing the property events.=0A=
        * Although the values will be set, fireQueue() must be called =
for their =0A=
        * associated events to execute.=0A=
        * @method applyConfig=0A=
        * @param {Object} userConfig The configuration Object literal=0A=
        * @param {Boolean} init  When set to true, the initialConfig =
will =0A=
        * be set to the userConfig passed in, so that calling a reset =
will =0A=
        * reset the properties to the passed values.=0A=
        */=0A=
        applyConfig: function (userConfig, init) {=0A=
        =0A=
            var sKey,=0A=
                oConfig;=0A=
=0A=
            if (init) {=0A=
                oConfig =3D {};=0A=
                for (sKey in userConfig) {=0A=
                    if (Lang.hasOwnProperty(userConfig, sKey)) {=0A=
                        oConfig[sKey.toLowerCase()] =3D userConfig[sKey];=0A=
                    }=0A=
                }=0A=
                this.initialConfig =3D oConfig;=0A=
            }=0A=
=0A=
            for (sKey in userConfig) {=0A=
                if (Lang.hasOwnProperty(userConfig, sKey)) {=0A=
                    this.queueProperty(sKey, userConfig[sKey]);=0A=
                }=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Refires the events for all configuration properties using =
their =0A=
        * current values.=0A=
        * @method refresh=0A=
        */=0A=
        refresh: function () {=0A=
        =0A=
            var prop;=0A=
        =0A=
            for (prop in this.config) {=0A=
                this.refireEvent(prop);=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Fires the normalized list of queued property change events=0A=
        * @method fireQueue=0A=
        */=0A=
        fireQueue: function () {=0A=
        =0A=
            var i, =0A=
                queueItem,=0A=
                key,=0A=
                value,=0A=
                property;=0A=
        =0A=
            this.queueInProgress =3D true;=0A=
            for (i =3D 0;i < this.eventQueue.length; i++) {=0A=
                queueItem =3D this.eventQueue[i];=0A=
                if (queueItem) {=0A=
        =0A=
                    key =3D queueItem[0];=0A=
                    value =3D queueItem[1];=0A=
                    property =3D this.config[key];=0A=
        =0A=
                    property.value =3D value;=0A=
        =0A=
                    this.fireEvent(key,value);=0A=
                }=0A=
            }=0A=
            =0A=
            this.queueInProgress =3D false;=0A=
            this.eventQueue =3D [];=0A=
        },=0A=
        =0A=
        /**=0A=
        * Subscribes an external handler to the change event for any =0A=
        * given property. =0A=
        * @method subscribeToConfigEvent=0A=
        * @param {String} key The property name=0A=
        * @param {Function} handler The handler function to use =
subscribe to =0A=
        * the property's event=0A=
        * @param {Object} obj The Object to use for scoping the event =
handler =0A=
        * (see CustomEvent documentation)=0A=
        * @param {Boolean} override Optional. If true, will override =
"this"  =0A=
        * within the handler to map to the scope Object passed into the =
method.=0A=
        * @return {Boolean} True, if the subscription was successful, =0A=
        * otherwise false.=0A=
        */ =0A=
        subscribeToConfigEvent: function (key, handler, obj, override) {=0A=
    =0A=
            var property =3D this.config[key.toLowerCase()];=0A=
    =0A=
            if (property && property.event) {=0A=
                if (!Config.alreadySubscribed(property.event, handler, =
obj)) {=0A=
                    property.event.subscribe(handler, obj, override);=0A=
                }=0A=
                return true;=0A=
            } else {=0A=
                return false;=0A=
            }=0A=
    =0A=
        },=0A=
        =0A=
        /**=0A=
        * Unsubscribes an external handler from the change event for any =0A=
        * given property. =0A=
        * @method unsubscribeFromConfigEvent=0A=
        * @param {String} key The property name=0A=
        * @param {Function} handler The handler function to use =
subscribe to =0A=
        * the property's event=0A=
        * @param {Object} obj The Object to use for scoping the event =0A=
        * handler (see CustomEvent documentation)=0A=
        * @return {Boolean} True, if the unsubscription was successful, =0A=
        * otherwise false.=0A=
        */=0A=
        unsubscribeFromConfigEvent: function (key, handler, obj) {=0A=
            var property =3D this.config[key.toLowerCase()];=0A=
            if (property && property.event) {=0A=
                return property.event.unsubscribe(handler, obj);=0A=
            } else {=0A=
                return false;=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Returns a string representation of the Config object=0A=
        * @method toString=0A=
        * @return {String} The Config object in string format.=0A=
        */=0A=
        toString: function () {=0A=
            var output =3D "Config";=0A=
            if (this.owner) {=0A=
                output +=3D " [" + this.owner.toString() + "]";=0A=
            }=0A=
            return output;=0A=
        },=0A=
        =0A=
        /**=0A=
        * Returns a string representation of the Config object's current =0A=
        * CustomEvent queue=0A=
        * @method outputEventQueue=0A=
        * @return {String} The string list of CustomEvents currently =
queued =0A=
        * for execution=0A=
        */=0A=
        outputEventQueue: function () {=0A=
=0A=
            var output =3D "",=0A=
                queueItem,=0A=
                q,=0A=
                nQueue =3D this.eventQueue.length;=0A=
              =0A=
            for (q =3D 0; q < nQueue; q++) {=0A=
                queueItem =3D this.eventQueue[q];=0A=
                if (queueItem) {=0A=
                    output +=3D queueItem[0] + "=3D" + queueItem[1] + ", =
";=0A=
                }=0A=
            }=0A=
            return output;=0A=
        },=0A=
=0A=
        /**=0A=
        * Sets all properties to null, unsubscribes all listeners from =
each =0A=
        * property's change event and all listeners from the =
configChangedEvent.=0A=
        * @method destroy=0A=
        */=0A=
        destroy: function () {=0A=
=0A=
            var oConfig =3D this.config,=0A=
                sProperty,=0A=
                oProperty;=0A=
=0A=
=0A=
            for (sProperty in oConfig) {=0A=
            =0A=
                if (Lang.hasOwnProperty(oConfig, sProperty)) {=0A=
=0A=
                    oProperty =3D oConfig[sProperty];=0A=
=0A=
                    oProperty.event.unsubscribeAll();=0A=
                    oProperty.event =3D null;=0A=
=0A=
                }=0A=
            =0A=
            }=0A=
            =0A=
            this.configChangedEvent.unsubscribeAll();=0A=
            =0A=
            this.configChangedEvent =3D null;=0A=
            this.owner =3D null;=0A=
            this.config =3D null;=0A=
            this.initialConfig =3D null;=0A=
            this.eventQueue =3D null;=0A=
        =0A=
        }=0A=
=0A=
    };=0A=
    =0A=
    =0A=
    =0A=
    /**=0A=
    * Checks to determine if a particular function/Object pair are =
already =0A=
    * subscribed to the specified CustomEvent=0A=
    * @method YAHOO.util.Config.alreadySubscribed=0A=
    * @static=0A=
    * @param {YAHOO.util.CustomEvent} evt The CustomEvent for which to =
check =0A=
    * the subscriptions=0A=
    * @param {Function} fn The function to look for in the subscribers =
list=0A=
    * @param {Object} obj The execution scope Object for the subscription=0A=
    * @return {Boolean} true, if the function/Object pair is already =
subscribed =0A=
    * to the CustomEvent passed in=0A=
    */=0A=
    Config.alreadySubscribed =3D function (evt, fn, obj) {=0A=
    =0A=
        var nSubscribers =3D evt.subscribers.length,=0A=
            subsc,=0A=
            i;=0A=
=0A=
        if (nSubscribers > 0) {=0A=
            i =3D nSubscribers - 1;=0A=
            do {=0A=
                subsc =3D evt.subscribers[i];=0A=
                if (subsc && subsc.obj =3D=3D obj && subsc.fn =3D=3D fn) =
{=0A=
                    return true;=0A=
                }=0A=
            }=0A=
            while (i--);=0A=
        }=0A=
=0A=
        return false;=0A=
=0A=
    };=0A=
=0A=
    YAHOO.lang.augmentProto(Config, YAHOO.util.EventProvider);=0A=
=0A=
}());=0A=
=0A=
(function () {=0A=
=0A=
    /**=0A=
    * The Container family of components is designed to enable =
developers to =0A=
    * create different kinds of content-containing modules on the web. =
Module =0A=
    * and Overlay are the most basic containers, and they can be used =
directly =0A=
    * or extended to build custom containers. Also part of the Container =
family =0A=
    * are four UI controls that extend Module and Overlay: Tooltip, =
Panel, =0A=
    * Dialog, and SimpleDialog.=0A=
    * @module container=0A=
    * @title Container=0A=
    * @requires yahoo, dom, event =0A=
    * @optional dragdrop, animation, button=0A=
    */=0A=
    =0A=
    /**=0A=
    * Module is a JavaScript representation of the Standard Module =
Format. =0A=
    * Standard Module Format is a simple standard for markup containers =
where =0A=
    * child nodes representing the header, body, and footer of the =
content are =0A=
    * denoted using the CSS classes "hd", "bd", and "ft" respectively. =0A=
    * Module is the base class for all other classes in the YUI =0A=
    * Container package.=0A=
    * @namespace YAHOO.widget=0A=
    * @class Module=0A=
    * @constructor=0A=
    * @param {String} el The element ID representing the Module =
<em>OR</em>=0A=
    * @param {HTMLElement} el The element representing the Module=0A=
    * @param {Object} userConfig The configuration Object literal =
containing =0A=
    * the configuration that should be set for this module. See =
configuration =0A=
    * documentation for more details.=0A=
    */=0A=
    YAHOO.widget.Module =3D function (el, userConfig) {=0A=
        if (el) {=0A=
            this.init(el, userConfig);=0A=
        } else {=0A=
        }=0A=
    };=0A=
=0A=
    var Dom =3D YAHOO.util.Dom,=0A=
        Config =3D YAHOO.util.Config,=0A=
        Event =3D YAHOO.util.Event,=0A=
        CustomEvent =3D YAHOO.util.CustomEvent,=0A=
        Module =3D YAHOO.widget.Module,=0A=
=0A=
        m_oModuleTemplate,=0A=
        m_oHeaderTemplate,=0A=
        m_oBodyTemplate,=0A=
        m_oFooterTemplate,=0A=
=0A=
        /**=0A=
        * Constant representing the name of the Module's events=0A=
        * @property EVENT_TYPES=0A=
        * @private=0A=
        * @final=0A=
        * @type Object=0A=
        */=0A=
        EVENT_TYPES =3D {=0A=
        =0A=
            "BEFORE_INIT": "beforeInit",=0A=
            "INIT": "init",=0A=
            "APPEND": "append",=0A=
            "BEFORE_RENDER": "beforeRender",=0A=
            "RENDER": "render",=0A=
            "CHANGE_HEADER": "changeHeader",=0A=
            "CHANGE_BODY": "changeBody",=0A=
            "CHANGE_FOOTER": "changeFooter",=0A=
            "CHANGE_CONTENT": "changeContent",=0A=
            "DESTORY": "destroy",=0A=
            "BEFORE_SHOW": "beforeShow",=0A=
            "SHOW": "show",=0A=
            "BEFORE_HIDE": "beforeHide",=0A=
            "HIDE": "hide"=0A=
        =0A=
        },=0A=
            =0A=
        /**=0A=
        * Constant representing the Module's configuration properties=0A=
        * @property DEFAULT_CONFIG=0A=
        * @private=0A=
        * @final=0A=
        * @type Object=0A=
        */=0A=
        DEFAULT_CONFIG =3D {=0A=
        =0A=
            "VISIBLE": { =0A=
                key: "visible", =0A=
                value: true, =0A=
                validator: YAHOO.lang.isBoolean =0A=
            },=0A=
        =0A=
            "EFFECT": { =0A=
                key: "effect", =0A=
                suppressEvent: true, =0A=
                supercedes: ["visible"] =0A=
            },=0A=
=0A=
            "MONITOR_RESIZE": { =0A=
                key: "monitorresize", =0A=
                value: true  =0A=
            },=0A=
=0A=
            "APPEND_TO_DOCUMENT_BODY": { =0A=
                key: "appendtodocumentbody", =0A=
                value: false=0A=
            }=0A=
        };=0A=
    =0A=
    /**=0A=
    * Constant representing the prefix path to use for non-secure images=0A=
    * @property YAHOO.widget.Module.IMG_ROOT=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Module.IMG_ROOT =3D null;=0A=
    =0A=
    /**=0A=
    * Constant representing the prefix path to use for securely served =
images=0A=
    * @property YAHOO.widget.Module.IMG_ROOT_SSL=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Module.IMG_ROOT_SSL =3D null;=0A=
    =0A=
    /**=0A=
    * Constant for the default CSS class name that represents a Module=0A=
    * @property YAHOO.widget.Module.CSS_MODULE=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Module.CSS_MODULE =3D "yui-module";=0A=
    =0A=
    /**=0A=
    * Constant representing the module header=0A=
    * @property YAHOO.widget.Module.CSS_HEADER=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Module.CSS_HEADER =3D "hd";=0A=
    =0A=
    /**=0A=
    * Constant representing the module body=0A=
    * @property YAHOO.widget.Module.CSS_BODY=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Module.CSS_BODY =3D "bd";=0A=
    =0A=
    /**=0A=
    * Constant representing the module footer=0A=
    * @property YAHOO.widget.Module.CSS_FOOTER=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Module.CSS_FOOTER =3D "ft";=0A=
    =0A=
    /**=0A=
    * Constant representing the url for the "src" attribute of the =
iframe =0A=
    * used to monitor changes to the browser's base font size=0A=
    * @property YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Module.RESIZE_MONITOR_SECURE_URL =3D "javascript:false;";=0A=
    =0A=
    /**=0A=
    * Singleton CustomEvent fired when the font size is changed in the =
browser.=0A=
    * Opera's "zoom" functionality currently does not support text =0A=
    * size detection.=0A=
    * @event YAHOO.widget.Module.textResizeEvent=0A=
    */=0A=
    Module.textResizeEvent =3D new CustomEvent("textResize");=0A=
=0A=
    function createModuleTemplate() {=0A=
=0A=
        if (!m_oModuleTemplate) {=0A=
            m_oModuleTemplate =3D document.createElement("div");=0A=
            =0A=
            m_oModuleTemplate.innerHTML =3D ("<div class=3D\"" + =0A=
                Module.CSS_HEADER + "\"></div>" + "<div class=3D\"" + =0A=
                Module.CSS_BODY + "\"></div><div class=3D\"" + =0A=
                Module.CSS_FOOTER + "\"></div>");=0A=
=0A=
            m_oHeaderTemplate =3D m_oModuleTemplate.firstChild;=0A=
            m_oBodyTemplate =3D m_oHeaderTemplate.nextSibling;=0A=
            m_oFooterTemplate =3D m_oBodyTemplate.nextSibling;=0A=
        }=0A=
=0A=
        return m_oModuleTemplate;=0A=
    }=0A=
=0A=
    function createHeader() {=0A=
        if (!m_oHeaderTemplate) {=0A=
            createModuleTemplate();=0A=
        }=0A=
        return (m_oHeaderTemplate.cloneNode(false));=0A=
    }=0A=
=0A=
    function createBody() {=0A=
        if (!m_oBodyTemplate) {=0A=
            createModuleTemplate();=0A=
        }=0A=
        return (m_oBodyTemplate.cloneNode(false));=0A=
    }=0A=
=0A=
    function createFooter() {=0A=
        if (!m_oFooterTemplate) {=0A=
            createModuleTemplate();=0A=
        }=0A=
        return (m_oFooterTemplate.cloneNode(false));=0A=
    }=0A=
=0A=
    Module.prototype =3D {=0A=
=0A=
        /**=0A=
        * The class's constructor function=0A=
        * @property contructor=0A=
        * @type Function=0A=
        */=0A=
        constructor: Module,=0A=
        =0A=
        /**=0A=
        * The main module element that contains the header, body, and =
footer=0A=
        * @property element=0A=
        * @type HTMLElement=0A=
        */=0A=
        element: null,=0A=
=0A=
        /**=0A=
        * The header element, denoted with CSS class "hd"=0A=
        * @property header=0A=
        * @type HTMLElement=0A=
        */=0A=
        header: null,=0A=
=0A=
        /**=0A=
        * The body element, denoted with CSS class "bd"=0A=
        * @property body=0A=
        * @type HTMLElement=0A=
        */=0A=
        body: null,=0A=
=0A=
        /**=0A=
        * The footer element, denoted with CSS class "ft"=0A=
        * @property footer=0A=
        * @type HTMLElement=0A=
        */=0A=
        footer: null,=0A=
=0A=
        /**=0A=
        * The id of the element=0A=
        * @property id=0A=
        * @type String=0A=
        */=0A=
        id: null,=0A=
=0A=
        /**=0A=
        * A string representing the root path for all images created by=0A=
        * a Module instance.=0A=
        * @deprecated It is recommend that any images for a Module be =
applied=0A=
        * via CSS using the "background-image" property.=0A=
        * @property imageRoot=0A=
        * @type String=0A=
        */=0A=
        imageRoot: Module.IMG_ROOT,=0A=
=0A=
        /**=0A=
        * Initializes the custom events for Module which are fired =0A=
        * automatically at appropriate times by the Module class.=0A=
        * @method initEvents=0A=
        */=0A=
        initEvents: function () {=0A=
=0A=
            var SIGNATURE =3D CustomEvent.LIST;=0A=
=0A=
            /**=0A=
            * CustomEvent fired prior to class initalization.=0A=
            * @event beforeInitEvent=0A=
            * @param {class} classRef class reference of the =
initializing =0A=
            * class, such as this.beforeInitEvent.fire(Module)=0A=
            */=0A=
            this.beforeInitEvent =3D =
this.createEvent(EVENT_TYPES.BEFORE_INIT);=0A=
            this.beforeInitEvent.signature =3D SIGNATURE;=0A=
=0A=
            /**=0A=
            * CustomEvent fired after class initalization.=0A=
            * @event initEvent=0A=
            * @param {class} classRef class reference of the =
initializing =0A=
            * class, such as this.beforeInitEvent.fire(Module)=0A=
            */  =0A=
            this.initEvent =3D this.createEvent(EVENT_TYPES.INIT);=0A=
            this.initEvent.signature =3D SIGNATURE;=0A=
=0A=
            /**=0A=
            * CustomEvent fired when the Module is appended to the DOM=0A=
            * @event appendEvent=0A=
            */=0A=
            this.appendEvent =3D this.createEvent(EVENT_TYPES.APPEND);=0A=
            this.appendEvent.signature =3D SIGNATURE;=0A=
=0A=
            /**=0A=
            * CustomEvent fired before the Module is rendered=0A=
            * @event beforeRenderEvent=0A=
            */=0A=
            this.beforeRenderEvent =3D =
this.createEvent(EVENT_TYPES.BEFORE_RENDER);=0A=
            this.beforeRenderEvent.signature =3D SIGNATURE;=0A=
        =0A=
            /**=0A=
            * CustomEvent fired after the Module is rendered=0A=
            * @event renderEvent=0A=
            */=0A=
            this.renderEvent =3D this.createEvent(EVENT_TYPES.RENDER);=0A=
            this.renderEvent.signature =3D SIGNATURE;=0A=
        =0A=
            /**=0A=
            * CustomEvent fired when the header content of the Module =0A=
            * is modified=0A=
            * @event changeHeaderEvent=0A=
            * @param {String/HTMLElement} content String/element =
representing =0A=
            * the new header content=0A=
            */=0A=
            this.changeHeaderEvent =3D =
this.createEvent(EVENT_TYPES.CHANGE_HEADER);=0A=
            this.changeHeaderEvent.signature =3D SIGNATURE;=0A=
            =0A=
            /**=0A=
            * CustomEvent fired when the body content of the Module is =
modified=0A=
            * @event changeBodyEvent=0A=
            * @param {String/HTMLElement} content String/element =
representing =0A=
            * the new body content=0A=
            */  =0A=
            this.changeBodyEvent =3D =
this.createEvent(EVENT_TYPES.CHANGE_BODY);=0A=
            this.changeBodyEvent.signature =3D SIGNATURE;=0A=
            =0A=
            /**=0A=
            * CustomEvent fired when the footer content of the Module =0A=
            * is modified=0A=
            * @event changeFooterEvent=0A=
            * @param {String/HTMLElement} content String/element =
representing =0A=
            * the new footer content=0A=
            */=0A=
            this.changeFooterEvent =3D =
this.createEvent(EVENT_TYPES.CHANGE_FOOTER);=0A=
            this.changeFooterEvent.signature =3D SIGNATURE;=0A=
        =0A=
            /**=0A=
            * CustomEvent fired when the content of the Module is =
modified=0A=
            * @event changeContentEvent=0A=
            */=0A=
            this.changeContentEvent =3D =
this.createEvent(EVENT_TYPES.CHANGE_CONTENT);=0A=
            this.changeContentEvent.signature =3D SIGNATURE;=0A=
=0A=
            /**=0A=
            * CustomEvent fired when the Module is destroyed=0A=
            * @event destroyEvent=0A=
            */=0A=
            this.destroyEvent =3D this.createEvent(EVENT_TYPES.DESTORY);=0A=
            this.destroyEvent.signature =3D SIGNATURE;=0A=
=0A=
            /**=0A=
            * CustomEvent fired before the Module is shown=0A=
            * @event beforeShowEvent=0A=
            */=0A=
            this.beforeShowEvent =3D =
this.createEvent(EVENT_TYPES.BEFORE_SHOW);=0A=
            this.beforeShowEvent.signature =3D SIGNATURE;=0A=
=0A=
            /**=0A=
            * CustomEvent fired after the Module is shown=0A=
            * @event showEvent=0A=
            */=0A=
            this.showEvent =3D this.createEvent(EVENT_TYPES.SHOW);=0A=
            this.showEvent.signature =3D SIGNATURE;=0A=
=0A=
            /**=0A=
            * CustomEvent fired before the Module is hidden=0A=
            * @event beforeHideEvent=0A=
            */=0A=
            this.beforeHideEvent =3D =
this.createEvent(EVENT_TYPES.BEFORE_HIDE);=0A=
            this.beforeHideEvent.signature =3D SIGNATURE;=0A=
=0A=
            /**=0A=
            * CustomEvent fired after the Module is hidden=0A=
            * @event hideEvent=0A=
            */=0A=
            this.hideEvent =3D this.createEvent(EVENT_TYPES.HIDE);=0A=
            this.hideEvent.signature =3D SIGNATURE;=0A=
        }, =0A=
=0A=
        /**=0A=
        * String representing the current user-agent platform=0A=
        * @property platform=0A=
        * @type String=0A=
        */=0A=
        platform: function () {=0A=
            var ua =3D navigator.userAgent.toLowerCase();=0A=
=0A=
            if (ua.indexOf("windows") !=3D -1 || ua.indexOf("win32") =
!=3D -1) {=0A=
                return "windows";=0A=
            } else if (ua.indexOf("macintosh") !=3D -1) {=0A=
                return "mac";=0A=
            } else {=0A=
                return false;=0A=
            }=0A=
        }(),=0A=
        =0A=
        /**=0A=
        * String representing the user-agent of the browser=0A=
        * @deprecated Use YAHOO.env.ua=0A=
        * @property browser=0A=
        * @type String=0A=
        */=0A=
        browser: function () {=0A=
            var ua =3D navigator.userAgent.toLowerCase();=0A=
            /*=0A=
                 Check Opera first in case of spoof and check Safari =
before=0A=
                 Gecko since Safari's user agent string includes "like =
Gecko"=0A=
            */=0A=
            if (ua.indexOf('opera') !=3D -1) { =0A=
                return 'opera';=0A=
            } else if (ua.indexOf('msie 7') !=3D -1) {=0A=
                return 'ie7';=0A=
            } else if (ua.indexOf('msie') !=3D -1) {=0A=
                return 'ie';=0A=
            } else if (ua.indexOf('safari') !=3D -1) { =0A=
                return 'safari';=0A=
            } else if (ua.indexOf('gecko') !=3D -1) {=0A=
                return 'gecko';=0A=
            } else {=0A=
                return false;=0A=
            }=0A=
        }(),=0A=
        =0A=
        /**=0A=
        * Boolean representing whether or not the current browsing =
context is =0A=
        * secure (https)=0A=
        * @property isSecure=0A=
        * @type Boolean=0A=
        */=0A=
        isSecure: function () {=0A=
            if (window.location.href.toLowerCase().indexOf("https") =
=3D=3D=3D 0) {=0A=
                return true;=0A=
            } else {=0A=
                return false;=0A=
            }=0A=
        }(),=0A=
        =0A=
        /**=0A=
        * Initializes the custom events for Module which are fired =0A=
        * automatically at appropriate times by the Module class.=0A=
        */=0A=
        initDefaultConfig: function () {=0A=
            // Add properties //=0A=
            /**=0A=
            * Specifies whether the Module is visible on the page.=0A=
            * @config visible=0A=
            * @type Boolean=0A=
            * @default true=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.VISIBLE.key, {=0A=
                handler: this.configVisible, =0A=
                value: DEFAULT_CONFIG.VISIBLE.value, =0A=
                validator: DEFAULT_CONFIG.VISIBLE.validator=0A=
            });=0A=
=0A=
            /**=0A=
            * Object or array of objects representing the =
ContainerEffect =0A=
            * classes that are active for animating the container.=0A=
            * @config effect=0A=
            * @type Object=0A=
            * @default null=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.EFFECT.key, {=0A=
                suppressEvent: DEFAULT_CONFIG.EFFECT.suppressEvent, =0A=
                supercedes: DEFAULT_CONFIG.EFFECT.supercedes=0A=
            });=0A=
=0A=
            /**=0A=
            * Specifies whether to create a special proxy iframe to =
monitor =0A=
            * for user font resizing in the document=0A=
            * @config monitorresize=0A=
            * @type Boolean=0A=
            * @default true=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.MONITOR_RESIZE.key, {=0A=
                handler: this.configMonitorResize,=0A=
                value: DEFAULT_CONFIG.MONITOR_RESIZE.value=0A=
            });=0A=
=0A=
            /**=0A=
            * Specifies if the module should be rendered as the first =
child =0A=
            * of document.body or appended as the last child when render =
is called=0A=
            * with document.body as the "appendToNode".=0A=
            * <p>=0A=
            * Appending to the body while the DOM is still being =
constructed can =0A=
            * lead to Operation Aborted errors in IE hence this flag is =
set to =0A=
            * false by default.=0A=
            * </p>=0A=
            * =0A=
            * @config appendtodocumentbody=0A=
            * @type Boolean=0A=
            * @default false=0A=
            */=0A=
            =
this.cfg.addProperty(DEFAULT_CONFIG.APPEND_TO_DOCUMENT_BODY.key, {=0A=
                value: DEFAULT_CONFIG.APPEND_TO_DOCUMENT_BODY.value=0A=
            });=0A=
        },=0A=
=0A=
        /**=0A=
        * The Module class's initialization method, which is executed for=0A=
        * Module and all of its subclasses. This method is automatically =0A=
        * called by the constructor, and  sets up all DOM references for =0A=
        * pre-existing markup, and creates required markup if it is not =0A=
        * already present.=0A=
        * @method init=0A=
        * @param {String} el The element ID representing the Module =
<em>OR</em>=0A=
        * @param {HTMLElement} el The element representing the Module=0A=
        * @param {Object} userConfig The configuration Object literal =0A=
        * containing the configuration that should be set for this =
module. =0A=
        * See configuration documentation for more details.=0A=
        */=0A=
        init: function (el, userConfig) {=0A=
=0A=
            var elId, child;=0A=
=0A=
            this.initEvents();=0A=
            this.beforeInitEvent.fire(Module);=0A=
=0A=
            /**=0A=
            * The Module's Config object used for monitoring =0A=
            * configuration properties.=0A=
            * @property cfg=0A=
            * @type YAHOO.util.Config=0A=
            */=0A=
            this.cfg =3D new Config(this);=0A=
=0A=
            if (this.isSecure) {=0A=
                this.imageRoot =3D Module.IMG_ROOT_SSL;=0A=
            }=0A=
=0A=
            if (typeof el =3D=3D "string") {=0A=
                elId =3D el;=0A=
                el =3D document.getElementById(el);=0A=
                if (! el) {=0A=
                    el =3D (createModuleTemplate()).cloneNode(false);=0A=
                    el.id =3D elId;=0A=
                }=0A=
            }=0A=
=0A=
            this.element =3D el;=0A=
=0A=
            if (el.id) {=0A=
                this.id =3D el.id;=0A=
            }=0A=
=0A=
            child =3D this.element.firstChild;=0A=
=0A=
            if (child) {=0A=
                var fndHd =3D false, fndBd =3D false, fndFt =3D false;=0A=
                do {=0A=
                    // We're looking for elements=0A=
                    if (1 =3D=3D child.nodeType) {=0A=
                        if (!fndHd && Dom.hasClass(child, =
Module.CSS_HEADER)) {=0A=
                            this.header =3D child;=0A=
                            fndHd =3D true;=0A=
                        } else if (!fndBd && Dom.hasClass(child, =
Module.CSS_BODY)) {=0A=
                            this.body =3D child;=0A=
                            fndBd =3D true;=0A=
                        } else if (!fndFt && Dom.hasClass(child, =
Module.CSS_FOOTER)){=0A=
                            this.footer =3D child;=0A=
                            fndFt =3D true;=0A=
                        }=0A=
                    }=0A=
                } while ((child =3D child.nextSibling));=0A=
            }=0A=
=0A=
            this.initDefaultConfig();=0A=
=0A=
            Dom.addClass(this.element, Module.CSS_MODULE);=0A=
=0A=
            if (userConfig) {=0A=
                this.cfg.applyConfig(userConfig, true);=0A=
            }=0A=
=0A=
            /*=0A=
                Subscribe to the fireQueue() method of Config so that =
any =0A=
                queued configuration changes are excecuted upon render =
of =0A=
                the Module=0A=
            */ =0A=
=0A=
            if (!Config.alreadySubscribed(this.renderEvent, =
this.cfg.fireQueue, this.cfg)) {=0A=
                this.renderEvent.subscribe(this.cfg.fireQueue, this.cfg, =
true);=0A=
            }=0A=
=0A=
            this.initEvent.fire(Module);=0A=
        },=0A=
=0A=
        /**=0A=
        * Initialized an empty IFRAME that is placed out of the visible =
area =0A=
        * that can be used to detect text resize.=0A=
        * @method initResizeMonitor=0A=
        */=0A=
        initResizeMonitor: function () {=0A=
=0A=
            var oDoc, =0A=
                oIFrame, =0A=
                sHTML;=0A=
=0A=
            function fireTextResize() {=0A=
                Module.textResizeEvent.fire();=0A=
            }=0A=
=0A=
            if (!YAHOO.env.ua.opera) {=0A=
                oIFrame =3D Dom.get("_yuiResizeMonitor");=0A=
=0A=
                if (!oIFrame) {=0A=
                    oIFrame =3D document.createElement("iframe");=0A=
=0A=
                    if (this.isSecure && =
Module.RESIZE_MONITOR_SECURE_URL && YAHOO.env.ua.ie) {=0A=
                        oIFrame.src =3D Module.RESIZE_MONITOR_SECURE_URL;=0A=
                    }=0A=
=0A=
                    /*=0A=
                        Need to set the iframe document for Gecko=0A=
                        to fire resize events on the iframe =
contentWindow.=0A=
                     */=0A=
                    if (YAHOO.env.ua.gecko) {=0A=
                         sHTML =3D ["<html><head><script ",=0A=
                                  "type=3D\"text/javascript\">",=0A=
                                  =
"window.onresize=3Dfunction(){window.parent.",=0A=
                                  "YAHOO.widget.Module.textResizeEvent.",=0A=
                                  "fire();}", =0A=
                                  "<\/script></head>",=0A=
                                  "<body></body></html>"].join('');=0A=
=0A=
                        oIFrame.src =3D =
"data:text/html;charset=3Dutf-8," +=0A=
                            encodeURIComponent(sHTML);=0A=
                    }=0A=
=0A=
                    oIFrame.id =3D "_yuiResizeMonitor";=0A=
                    /*=0A=
                        Need to set "position" property before inserting =
the =0A=
                        iframe into the document or Safari's status bar =
will =0A=
                        forever indicate the iframe is loading =0A=
                        (See SourceForge bug #1723064)=0A=
                    */=0A=
                    oIFrame.style.position =3D "absolute";=0A=
                    oIFrame.style.visibility =3D "hidden";=0A=
=0A=
                    var fc =3D document.body.firstChild;=0A=
                    if (fc) {=0A=
                        document.body.insertBefore(oIFrame, fc);=0A=
                    } else {=0A=
                        document.body.appendChild(oIFrame);=0A=
                    }=0A=
=0A=
                    oIFrame.style.width =3D "10em";=0A=
                    oIFrame.style.height =3D "10em";=0A=
                    oIFrame.style.top =3D (-1 * oIFrame.offsetHeight) + =
"px";=0A=
                    oIFrame.style.left =3D (-1 * oIFrame.offsetWidth) + =
"px";=0A=
                    oIFrame.style.borderWidth =3D "0";=0A=
                    oIFrame.style.visibility =3D "visible";=0A=
=0A=
                    /*=0A=
                       Don't open/close the document for Gecko like we =
used to, since it=0A=
                       leads to duplicate cookies. (See SourceForge bug =
#1721755)=0A=
                    */=0A=
                    if (YAHOO.env.ua.webkit) {=0A=
                        oDoc =3D oIFrame.contentWindow.document;=0A=
                        oDoc.open();=0A=
                        oDoc.close();=0A=
                    }=0A=
                }=0A=
=0A=
                if (oIFrame && oIFrame.contentWindow) {=0A=
                    Module.textResizeEvent.subscribe(this.onDomResize, =
this, true);=0A=
=0A=
                    if (!Module.textResizeInitialized) {=0A=
                         // We already handle gecko using the iframe's =
document content=0A=
                        if (!YAHOO.env.ua.gecko) {=0A=
                            if (!Event.on(oIFrame.contentWindow, =
"resize", fireTextResize)) {=0A=
                                /*=0A=
                                     This will fail in IE if =
document.domain has =0A=
                                     changed, so we must change the =
listener to =0A=
                                     use the oIFrame element instead=0A=
                                */=0A=
                                Event.on(oIFrame, "resize", =
fireTextResize);=0A=
                            }=0A=
                        }=0A=
                        Module.textResizeInitialized =3D true;=0A=
                    }=0A=
                    this.resizeMonitor =3D oIFrame;=0A=
                }=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Event handler fired when the resize monitor element is resized.=0A=
        * @method onDomResize=0A=
        * @param {DOMEvent} e The DOM resize event=0A=
        * @param {Object} obj The scope object passed to the handler=0A=
        */=0A=
        onDomResize: function (e, obj) {=0A=
        =0A=
            var nLeft =3D -1 * this.resizeMonitor.offsetWidth,=0A=
                nTop =3D -1 * this.resizeMonitor.offsetHeight;=0A=
        =0A=
            this.resizeMonitor.style.top =3D nTop + "px";=0A=
            this.resizeMonitor.style.left =3D  nLeft + "px";=0A=
=0A=
        },=0A=
        =0A=
        /**=0A=
        * Sets the Module's header content to the HTML specified, or =
appends =0A=
        * the passed element to the header. If no header is present, one =
will =0A=
        * be automatically created.=0A=
        * @method setHeader=0A=
        * @param {String} headerContent The HTML used to set the header =0A=
        * <em>OR</em>=0A=
        * @param {HTMLElement} headerContent The HTMLElement to append =
to =0A=
        * the header=0A=
        */=0A=
        setHeader: function (headerContent) {=0A=
=0A=
            var oHeader =3D this.header || (this.header =3D =
createHeader());=0A=
        =0A=
            if (typeof headerContent =3D=3D "string") {=0A=
=0A=
                oHeader.innerHTML =3D headerContent;=0A=
=0A=
            } else {=0A=
=0A=
                oHeader.innerHTML =3D "";=0A=
                oHeader.appendChild(headerContent);=0A=
=0A=
            }=0A=
        =0A=
            this.changeHeaderEvent.fire(headerContent);=0A=
            this.changeContentEvent.fire();=0A=
=0A=
        },=0A=
        =0A=
        /**=0A=
        * Appends the passed element to the header. If no header is =
present, =0A=
        * one will be automatically created.=0A=
        * @method appendToHeader=0A=
        * @param {HTMLElement} element The element to append to the =
header=0A=
        */=0A=
        appendToHeader: function (element) {=0A=
=0A=
            var oHeader =3D this.header || (this.header =3D =
createHeader());=0A=
        =0A=
            oHeader.appendChild(element);=0A=
=0A=
            this.changeHeaderEvent.fire(element);=0A=
            this.changeContentEvent.fire();=0A=
=0A=
        },=0A=
        =0A=
        /**=0A=
        * Sets the Module's body content to the HTML specified, or =
appends the=0A=
        * passed element to the body. If no body is present, one will be =0A=
        * automatically created.=0A=
        * @method setBody=0A=
        * @param {String} bodyContent The HTML used to set the body =
<em>OR</em>=0A=
        * @param {HTMLElement} bodyContent The HTMLElement to append to =
the body=0A=
        */=0A=
        setBody: function (bodyContent) {=0A=
=0A=
            var oBody =3D this.body || (this.body =3D createBody());=0A=
        =0A=
            if (typeof bodyContent =3D=3D "string") {=0A=
=0A=
                oBody.innerHTML =3D bodyContent;=0A=
=0A=
            } else {=0A=
=0A=
                oBody.innerHTML =3D "";=0A=
                oBody.appendChild(bodyContent);=0A=
=0A=
            }=0A=
        =0A=
            this.changeBodyEvent.fire(bodyContent);=0A=
            this.changeContentEvent.fire();=0A=
=0A=
        },=0A=
        =0A=
        /**=0A=
        * Appends the passed element to the body. If no body is present, =
one =0A=
        * will be automatically created.=0A=
        * @method appendToBody=0A=
        * @param {HTMLElement} element The element to append to the body=0A=
        */=0A=
        appendToBody: function (element) {=0A=
=0A=
            var oBody =3D this.body || (this.body =3D createBody());=0A=
        =0A=
            oBody.appendChild(element);=0A=
=0A=
            this.changeBodyEvent.fire(element);=0A=
            this.changeContentEvent.fire();=0A=
=0A=
        },=0A=
        =0A=
        /**=0A=
        * Sets the Module's footer content to the HTML specified, or =
appends =0A=
        * the passed element to the footer. If no footer is present, one =
will =0A=
        * be automatically created.=0A=
        * @method setFooter=0A=
        * @param {String} footerContent The HTML used to set the footer =0A=
        * <em>OR</em>=0A=
        * @param {HTMLElement} footerContent The HTMLElement to append =
to =0A=
        * the footer=0A=
        */=0A=
        setFooter: function (footerContent) {=0A=
=0A=
            var oFooter =3D this.footer || (this.footer =3D =
createFooter());=0A=
        =0A=
            if (typeof footerContent =3D=3D "string") {=0A=
=0A=
                oFooter.innerHTML =3D footerContent;=0A=
=0A=
            } else {=0A=
=0A=
                oFooter.innerHTML =3D "";=0A=
                oFooter.appendChild(footerContent);=0A=
=0A=
            }=0A=
        =0A=
            this.changeFooterEvent.fire(footerContent);=0A=
            this.changeContentEvent.fire();=0A=
=0A=
        },=0A=
        =0A=
        /**=0A=
        * Appends the passed element to the footer. If no footer is =
present, =0A=
        * one will be automatically created.=0A=
        * @method appendToFooter=0A=
        * @param {HTMLElement} element The element to append to the =
footer=0A=
        */=0A=
        appendToFooter: function (element) {=0A=
=0A=
            var oFooter =3D this.footer || (this.footer =3D =
createFooter());=0A=
        =0A=
            oFooter.appendChild(element);=0A=
=0A=
            this.changeFooterEvent.fire(element);=0A=
            this.changeContentEvent.fire();=0A=
=0A=
        },=0A=
        =0A=
        /**=0A=
        * Renders the Module by inserting the elements that are not =
already =0A=
        * in the main Module into their correct places. Optionally =
appends =0A=
        * the Module to the specified node prior to the render's =
execution. =0A=
        * <p>=0A=
        * For Modules without existing markup, the appendToNode argument =0A=
        * is REQUIRED. If this argument is ommitted and the current =
element is =0A=
        * not present in the document, the function will return false, =0A=
        * indicating that the render was a failure.=0A=
        * </p>=0A=
        * <p>=0A=
        * NOTE: As of 2.3.1, if the appendToNode is the document's body =
element=0A=
        * then the module is rendered as the first child of the body =
element, =0A=
        * and not appended to it, to avoid Operation Aborted errors in =
IE when =0A=
        * rendering the module before window's load event is fired. You =
can =0A=
        * use the appendtodocumentbody configuration property to change =
this =0A=
        * to append to document.body if required.=0A=
        * </p>=0A=
        * @method render=0A=
        * @param {String} appendToNode The element id to which the =
Module =0A=
        * should be appended to prior to rendering <em>OR</em>=0A=
        * @param {HTMLElement} appendToNode The element to which the =
Module =0A=
        * should be appended to prior to rendering=0A=
        * @param {HTMLElement} moduleElement OPTIONAL. The element that =0A=
        * represents the actual Standard Module container.=0A=
        * @return {Boolean} Success or failure of the render=0A=
        */=0A=
        render: function (appendToNode, moduleElement) {=0A=
=0A=
            var me =3D this,=0A=
                firstChild;=0A=
=0A=
            function appendTo(parentNode) {=0A=
                if (typeof parentNode =3D=3D "string") {=0A=
                    parentNode =3D document.getElementById(parentNode);=0A=
                }=0A=
=0A=
                if (parentNode) {=0A=
                    me._addToParent(parentNode, me.element);=0A=
                    me.appendEvent.fire();=0A=
                }=0A=
            }=0A=
=0A=
            this.beforeRenderEvent.fire();=0A=
=0A=
            if (! moduleElement) {=0A=
                moduleElement =3D this.element;=0A=
            }=0A=
=0A=
            if (appendToNode) {=0A=
                appendTo(appendToNode);=0A=
            } else { =0A=
                // No node was passed in. If the element is not already =
in the Dom, this fails=0A=
                if (! Dom.inDocument(this.element)) {=0A=
                    return false;=0A=
                }=0A=
            }=0A=
=0A=
            // Need to get everything into the DOM if it isn't already=0A=
            if (this.header && ! Dom.inDocument(this.header)) {=0A=
                // There is a header, but it's not in the DOM yet. Need =
to add it.=0A=
                firstChild =3D moduleElement.firstChild;=0A=
                if (firstChild) {=0A=
                    moduleElement.insertBefore(this.header, firstChild);=0A=
                } else {=0A=
                    moduleElement.appendChild(this.header);=0A=
                }=0A=
            }=0A=
=0A=
            if (this.body && ! Dom.inDocument(this.body)) {=0A=
                // There is a body, but it's not in the DOM yet. Need to =
add it.		=0A=
                if (this.footer && Dom.isAncestor(this.moduleElement, =
this.footer)) {=0A=
                    moduleElement.insertBefore(this.body, this.footer);=0A=
                } else {=0A=
                    moduleElement.appendChild(this.body);=0A=
                }=0A=
            }=0A=
=0A=
            if (this.footer && ! Dom.inDocument(this.footer)) {=0A=
                // There is a footer, but it's not in the DOM yet. Need =
to add it.=0A=
                moduleElement.appendChild(this.footer);=0A=
            }=0A=
=0A=
            this.renderEvent.fire();=0A=
            return true;=0A=
        },=0A=
=0A=
        /**=0A=
        * Removes the Module element from the DOM and sets all child =
elements =0A=
        * to null.=0A=
        * @method destroy=0A=
        */=0A=
        destroy: function () {=0A=
=0A=
            var parent,=0A=
                e;=0A=
=0A=
            if (this.element) {=0A=
                Event.purgeElement(this.element, true);=0A=
                parent =3D this.element.parentNode;=0A=
            }=0A=
=0A=
            if (parent) {=0A=
                parent.removeChild(this.element);=0A=
            }=0A=
        =0A=
            this.element =3D null;=0A=
            this.header =3D null;=0A=
            this.body =3D null;=0A=
            this.footer =3D null;=0A=
=0A=
            Module.textResizeEvent.unsubscribe(this.onDomResize, this);=0A=
=0A=
            this.cfg.destroy();=0A=
            this.cfg =3D null;=0A=
=0A=
            this.destroyEvent.fire();=0A=
        =0A=
            for (e in this) {=0A=
                if (e instanceof CustomEvent) {=0A=
                    e.unsubscribeAll();=0A=
                }=0A=
            }=0A=
=0A=
        },=0A=
        =0A=
        /**=0A=
        * Shows the Module element by setting the visible configuration =0A=
        * property to true. Also fires two events: beforeShowEvent prior =
to =0A=
        * the visibility change, and showEvent after.=0A=
        * @method show=0A=
        */=0A=
        show: function () {=0A=
            this.cfg.setProperty("visible", true);=0A=
        },=0A=
        =0A=
        /**=0A=
        * Hides the Module element by setting the visible configuration =0A=
        * property to false. Also fires two events: beforeHideEvent =
prior to =0A=
        * the visibility change, and hideEvent after.=0A=
        * @method hide=0A=
        */=0A=
        hide: function () {=0A=
            this.cfg.setProperty("visible", false);=0A=
        },=0A=
        =0A=
        // BUILT-IN EVENT HANDLERS FOR MODULE //=0A=
        /**=0A=
        * Default event handler for changing the visibility property of =
a =0A=
        * Module. By default, this is achieved by switching the =
"display" style =0A=
        * between "block" and "none".=0A=
        * This method is responsible for firing showEvent and hideEvent.=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        * @method configVisible=0A=
        */=0A=
        configVisible: function (type, args, obj) {=0A=
            var visible =3D args[0];=0A=
            if (visible) {=0A=
                this.beforeShowEvent.fire();=0A=
                Dom.setStyle(this.element, "display", "block");=0A=
                this.showEvent.fire();=0A=
            } else {=0A=
                this.beforeHideEvent.fire();=0A=
                Dom.setStyle(this.element, "display", "none");=0A=
                this.hideEvent.fire();=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Default event handler for the "monitorresize" configuration =
property=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        * @method configMonitorResize=0A=
        */=0A=
        configMonitorResize: function (type, args, obj) {=0A=
            var monitor =3D args[0];=0A=
            if (monitor) {=0A=
                this.initResizeMonitor();=0A=
            } else {=0A=
                Module.textResizeEvent.unsubscribe(this.onDomResize, =
this, true);=0A=
                this.resizeMonitor =3D null;=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
         * This method is a protected helper, used when constructing the =
DOM structure for the module =0A=
         * to account for situations which may cause Operation Aborted =
errors in IE. It should not =0A=
         * be used for general DOM construction.=0A=
         * <p>=0A=
         * If the parentNode is not document.body, the element is =
appended as the last element.=0A=
         * </p>=0A=
         * <p>=0A=
         * If the parentNode is document.body the element is added as =
the first child to help=0A=
         * prevent Operation Aborted errors in IE.=0A=
         * </p>=0A=
         *=0A=
         * @param {parentNode} The HTML element to which the element =
will be added=0A=
         * @param {element} The HTML element to be added to parentNode's =
children=0A=
         * @method _addToParent=0A=
         * @protected=0A=
         */=0A=
        _addToParent: function(parentNode, element) {=0A=
            if (!this.cfg.getProperty("appendtodocumentbody") && =
parentNode =3D=3D=3D document.body && parentNode.firstChild) {=0A=
                parentNode.insertBefore(element, parentNode.firstChild);=0A=
            } else {=0A=
                parentNode.appendChild(element);=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Returns a String representation of the Object.=0A=
        * @method toString=0A=
        * @return {String} The string representation of the Module=0A=
        */=0A=
        toString: function () {=0A=
            return "Module " + this.id;=0A=
        }=0A=
    };=0A=
=0A=
    YAHOO.lang.augmentProto(Module, YAHOO.util.EventProvider);=0A=
=0A=
}());=0A=
=0A=
(function () {=0A=
=0A=
    /**=0A=
    * Overlay is a Module that is absolutely positioned above the page =
flow. It =0A=
    * has convenience methods for positioning and sizing, as well as =
options for =0A=
    * controlling zIndex and constraining the Overlay's position to the =
current =0A=
    * visible viewport. Overlay also contains a dynamicly generated =
IFRAME which =0A=
    * is placed beneath it for Internet Explorer 6 and 5.x so that it =
will be =0A=
    * properly rendered above SELECT elements.=0A=
    * @namespace YAHOO.widget=0A=
    * @class Overlay=0A=
    * @extends YAHOO.widget.Module=0A=
    * @param {String} el The element ID representing the Overlay =
<em>OR</em>=0A=
    * @param {HTMLElement} el The element representing the Overlay=0A=
    * @param {Object} userConfig The configuration object literal =
containing =0A=
    * the configuration that should be set for this Overlay. See =
configuration =0A=
    * documentation for more details.=0A=
    * @constructor=0A=
    */=0A=
    YAHOO.widget.Overlay =3D function (el, userConfig) {=0A=
        YAHOO.widget.Overlay.superclass.constructor.call(this, el, =
userConfig);=0A=
    };=0A=
=0A=
    var Lang =3D YAHOO.lang,=0A=
        CustomEvent =3D YAHOO.util.CustomEvent,=0A=
        Module =3D YAHOO.widget.Module,=0A=
        Event =3D YAHOO.util.Event,=0A=
        Dom =3D YAHOO.util.Dom,=0A=
        Config =3D YAHOO.util.Config,=0A=
        Overlay =3D YAHOO.widget.Overlay,=0A=
=0A=
        m_oIFrameTemplate,=0A=
=0A=
        /**=0A=
        * Constant representing the name of the Overlay's events=0A=
        * @property EVENT_TYPES=0A=
        * @private=0A=
        * @final=0A=
        * @type Object=0A=
        */=0A=
        EVENT_TYPES =3D {=0A=
            "BEFORE_MOVE": "beforeMove",=0A=
            "MOVE": "move"=0A=
        },=0A=
=0A=
        /**=0A=
        * Constant representing the Overlay's configuration properties=0A=
        * @property DEFAULT_CONFIG=0A=
        * @private=0A=
        * @final=0A=
        * @type Object=0A=
        */=0A=
        DEFAULT_CONFIG =3D {=0A=
=0A=
            "X": { =0A=
                key: "x", =0A=
                validator: Lang.isNumber, =0A=
                suppressEvent: true, =0A=
                supercedes: ["iframe"]=0A=
            },=0A=
=0A=
            "Y": { =0A=
                key: "y", =0A=
                validator: Lang.isNumber, =0A=
                suppressEvent: true, =0A=
                supercedes: ["iframe"]=0A=
            },=0A=
=0A=
            "XY": { =0A=
                key: "xy", =0A=
                suppressEvent: true, =0A=
                supercedes: ["iframe"] =0A=
            },=0A=
=0A=
            "CONTEXT": { =0A=
                key: "context", =0A=
                suppressEvent: true, =0A=
                supercedes: ["iframe"] =0A=
            },=0A=
=0A=
            "FIXED_CENTER": { =0A=
                key: "fixedcenter", =0A=
                value: false, =0A=
                validator: Lang.isBoolean, =0A=
                supercedes: ["iframe", "visible"] =0A=
            },=0A=
=0A=
            "WIDTH": { =0A=
                key: "width", =0A=
                suppressEvent: true, =0A=
                supercedes: ["context", "fixedcenter", "iframe"] =0A=
            }, =0A=
=0A=
            "HEIGHT": { =0A=
                key: "height", =0A=
                suppressEvent: true, =0A=
                supercedes: ["context", "fixedcenter", "iframe"] =0A=
            }, =0A=
=0A=
            "ZINDEX": { =0A=
                key: "zindex", =0A=
                value: null =0A=
            }, =0A=
=0A=
            "CONSTRAIN_TO_VIEWPORT": { =0A=
                key: "constraintoviewport", =0A=
                value: false, =0A=
                validator: Lang.isBoolean, =0A=
                supercedes: ["iframe", "x", "y", "xy"]=0A=
            }, =0A=
=0A=
            "IFRAME": { =0A=
                key: "iframe", =0A=
                value: (YAHOO.env.ua.ie =3D=3D 6 ? true : false), =0A=
                validator: Lang.isBoolean, =0A=
                supercedes: ["zindex"] =0A=
            }=0A=
        };=0A=
=0A=
    /**=0A=
    * The URL that will be placed in the iframe=0A=
    * @property YAHOO.widget.Overlay.IFRAME_SRC=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Overlay.IFRAME_SRC =3D "javascript:false;";=0A=
=0A=
    /**=0A=
    * Number representing how much the iframe shim should be offset from =
each =0A=
    * side of an Overlay instance, in pixels.=0A=
    * @property YAHOO.widget.Overlay.IFRAME_SRC=0A=
    * @default 3=0A=
    * @static=0A=
    * @final=0A=
    * @type Number=0A=
    */=0A=
    Overlay.IFRAME_OFFSET =3D 3;=0A=
=0A=
    /**=0A=
    * Number representing the minimum distance an Overlay instance =
should be =0A=
    * positioned relative to the boundaries of the browser's viewport, =
in pixels.=0A=
    * @property YAHOO.widget.Overlay.VIEWPORT_OFFSET=0A=
    * @default 10=0A=
    * @static=0A=
    * @final=0A=
    * @type Number=0A=
    */=0A=
    Overlay.VIEWPORT_OFFSET =3D 10;=0A=
=0A=
    /**=0A=
    * Constant representing the top left corner of an element, used for =0A=
    * configuring the context element alignment=0A=
    * @property YAHOO.widget.Overlay.TOP_LEFT=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Overlay.TOP_LEFT =3D "tl";=0A=
=0A=
    /**=0A=
    * Constant representing the top right corner of an element, used for =0A=
    * configuring the context element alignment=0A=
    * @property YAHOO.widget.Overlay.TOP_RIGHT=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Overlay.TOP_RIGHT =3D "tr";=0A=
=0A=
    /**=0A=
    * Constant representing the top bottom left corner of an element, =
used for =0A=
    * configuring the context element alignment=0A=
    * @property YAHOO.widget.Overlay.BOTTOM_LEFT=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Overlay.BOTTOM_LEFT =3D "bl";=0A=
=0A=
    /**=0A=
    * Constant representing the bottom right corner of an element, used =
for =0A=
    * configuring the context element alignment=0A=
    * @property YAHOO.widget.Overlay.BOTTOM_RIGHT=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Overlay.BOTTOM_RIGHT =3D "br";=0A=
=0A=
    /**=0A=
    * Constant representing the default CSS class used for an Overlay=0A=
    * @property YAHOO.widget.Overlay.CSS_OVERLAY=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    Overlay.CSS_OVERLAY =3D "yui-overlay";=0A=
=0A=
    /**=0A=
    * A singleton CustomEvent used for reacting to the DOM event for =0A=
    * window scroll=0A=
    * @event YAHOO.widget.Overlay.windowScrollEvent=0A=
    */=0A=
    Overlay.windowScrollEvent =3D new CustomEvent("windowScroll");=0A=
=0A=
    /**=0A=
    * A singleton CustomEvent used for reacting to the DOM event for=0A=
    * window resize=0A=
    * @event YAHOO.widget.Overlay.windowResizeEvent=0A=
    */=0A=
    Overlay.windowResizeEvent =3D new CustomEvent("windowResize");=0A=
=0A=
    /**=0A=
    * The DOM event handler used to fire the CustomEvent for window =
scroll=0A=
    * @method YAHOO.widget.Overlay.windowScrollHandler=0A=
    * @static=0A=
    * @param {DOMEvent} e The DOM scroll event=0A=
    */=0A=
    Overlay.windowScrollHandler =3D function (e) {=0A=
=0A=
        if (YAHOO.env.ua.ie) {=0A=
=0A=
            if (! window.scrollEnd) {=0A=
                window.scrollEnd =3D -1;=0A=
            }=0A=
=0A=
            clearTimeout(window.scrollEnd);=0A=
    =0A=
            window.scrollEnd =3D setTimeout(function () { =0A=
                Overlay.windowScrollEvent.fire(); =0A=
            }, 1);=0A=
    =0A=
        } else {=0A=
            Overlay.windowScrollEvent.fire();=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
    * The DOM event handler used to fire the CustomEvent for window =
resize=0A=
    * @method YAHOO.widget.Overlay.windowResizeHandler=0A=
    * @static=0A=
    * @param {DOMEvent} e The DOM resize event=0A=
    */=0A=
    Overlay.windowResizeHandler =3D function (e) {=0A=
=0A=
        if (YAHOO.env.ua.ie) {=0A=
            if (! window.resizeEnd) {=0A=
                window.resizeEnd =3D -1;=0A=
            }=0A=
=0A=
            clearTimeout(window.resizeEnd);=0A=
=0A=
            window.resizeEnd =3D setTimeout(function () {=0A=
                Overlay.windowResizeEvent.fire(); =0A=
            }, 100);=0A=
        } else {=0A=
            Overlay.windowResizeEvent.fire();=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
    * A boolean that indicated whether the window resize and scroll =
events have =0A=
    * already been subscribed to.=0A=
    * @property YAHOO.widget.Overlay._initialized=0A=
    * @private=0A=
    * @type Boolean=0A=
    */=0A=
    Overlay._initialized =3D null;=0A=
=0A=
    if (Overlay._initialized =3D=3D=3D null) {=0A=
        Event.on(window, "scroll", Overlay.windowScrollHandler);=0A=
        Event.on(window, "resize", Overlay.windowResizeHandler);=0A=
    =0A=
        Overlay._initialized =3D true;=0A=
    }=0A=
=0A=
    YAHOO.extend(Overlay, Module, {=0A=
=0A=
        /**=0A=
        * The Overlay initialization method, which is executed for =
Overlay and  =0A=
        * all of its subclasses. This method is automatically called by =
the =0A=
        * constructor, and  sets up all DOM references for pre-existing =
markup, =0A=
        * and creates required markup if it is not already present.=0A=
        * @method init=0A=
        * @param {String} el The element ID representing the Overlay =
<em>OR</em>=0A=
        * @param {HTMLElement} el The element representing the Overlay=0A=
        * @param {Object} userConfig The configuration object literal =0A=
        * containing the configuration that should be set for this =
Overlay. =0A=
        * See configuration documentation for more details.=0A=
        */=0A=
        init: function (el, userConfig) {=0A=
    =0A=
            /*=0A=
                 Note that we don't pass the user config in here yet =
because we=0A=
                 only want it executed once, at the lowest subclass level=0A=
            */=0A=
    =0A=
            Overlay.superclass.init.call(this, el/*, userConfig*/);  =0A=
=0A=
            this.beforeInitEvent.fire(Overlay);=0A=
            =0A=
            Dom.addClass(this.element, Overlay.CSS_OVERLAY);=0A=
            =0A=
            if (userConfig) {=0A=
                this.cfg.applyConfig(userConfig, true);=0A=
            }=0A=
=0A=
            if (this.platform =3D=3D "mac" && YAHOO.env.ua.gecko) {=0A=
=0A=
                if (! Config.alreadySubscribed(this.showEvent,=0A=
                    this.showMacGeckoScrollbars, this)) {=0A=
=0A=
                    =
this.showEvent.subscribe(this.showMacGeckoScrollbars, =0A=
                        this, true);=0A=
=0A=
                }=0A=
=0A=
                if (! Config.alreadySubscribed(this.hideEvent, =0A=
                    this.hideMacGeckoScrollbars, this)) {=0A=
=0A=
                    =
this.hideEvent.subscribe(this.hideMacGeckoScrollbars, =0A=
                        this, true);=0A=
=0A=
                }=0A=
            }=0A=
=0A=
            this.initEvent.fire(Overlay);=0A=
        },=0A=
        =0A=
        /**=0A=
        * Initializes the custom events for Overlay which are fired  =0A=
        * automatically at appropriate times by the Overlay class.=0A=
        * @method initEvents=0A=
        */=0A=
        initEvents: function () {=0A=
    =0A=
            Overlay.superclass.initEvents.call(this);=0A=
            =0A=
            var SIGNATURE =3D CustomEvent.LIST;=0A=
            =0A=
            /**=0A=
            * CustomEvent fired before the Overlay is moved.=0A=
            * @event beforeMoveEvent=0A=
            * @param {Number} x x coordinate=0A=
            * @param {Number} y y coordinate=0A=
            */=0A=
            this.beforeMoveEvent =3D =
this.createEvent(EVENT_TYPES.BEFORE_MOVE);=0A=
            this.beforeMoveEvent.signature =3D SIGNATURE;=0A=
            =0A=
            /**=0A=
            * CustomEvent fired after the Overlay is moved.=0A=
            * @event moveEvent=0A=
            * @param {Number} x x coordinate=0A=
            * @param {Number} y y coordinate=0A=
            */=0A=
            this.moveEvent =3D this.createEvent(EVENT_TYPES.MOVE);=0A=
            this.moveEvent.signature =3D SIGNATURE;=0A=
        =0A=
        },=0A=
        =0A=
        /**=0A=
        * Initializes the class's configurable properties which can be =
changed =0A=
        * using the Overlay's Config object (cfg).=0A=
        * @method initDefaultConfig=0A=
        */=0A=
        initDefaultConfig: function () {=0A=
    =0A=
            Overlay.superclass.initDefaultConfig.call(this);=0A=
            =0A=
            =0A=
            // Add overlay config properties //=0A=
            =0A=
            /**=0A=
            * The absolute x-coordinate position of the Overlay=0A=
            * @config x=0A=
            * @type Number=0A=
            * @default null=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.X.key, { =0A=
    =0A=
                handler: this.configX, =0A=
                validator: DEFAULT_CONFIG.X.validator, =0A=
                suppressEvent: DEFAULT_CONFIG.X.suppressEvent, =0A=
                supercedes: DEFAULT_CONFIG.X.supercedes=0A=
    =0A=
            });=0A=
    =0A=
            /**=0A=
            * The absolute y-coordinate position of the Overlay=0A=
            * @config y=0A=
            * @type Number=0A=
            * @default null=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.Y.key, {=0A=
    =0A=
                handler: this.configY, =0A=
                validator: DEFAULT_CONFIG.Y.validator, =0A=
                suppressEvent: DEFAULT_CONFIG.Y.suppressEvent, =0A=
                supercedes: DEFAULT_CONFIG.Y.supercedes=0A=
    =0A=
            });=0A=
    =0A=
            /**=0A=
            * An array with the absolute x and y positions of the Overlay=0A=
            * @config xy=0A=
            * @type Number[]=0A=
            * @default null=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.XY.key, {=0A=
            =0A=
                handler: this.configXY, =0A=
                suppressEvent: DEFAULT_CONFIG.XY.suppressEvent, =0A=
                supercedes: DEFAULT_CONFIG.XY.supercedes=0A=
            =0A=
            });=0A=
    =0A=
            /**=0A=
            * The array of context arguments for context-sensitive =
positioning.  =0A=
            * The format is: [id or element, element corner, context =
corner]. =0A=
            * For example, setting this property to ["img1", "tl", "bl"] =
would =0A=
            * align the Overlay's top left corner to the context =
element's =0A=
            * bottom left corner.=0A=
            * @config context=0A=
            * @type Array=0A=
            * @default null=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.CONTEXT.key, {=0A=
            =0A=
                handler: this.configContext, =0A=
                suppressEvent: DEFAULT_CONFIG.CONTEXT.suppressEvent, =0A=
                supercedes: DEFAULT_CONFIG.CONTEXT.supercedes=0A=
            =0A=
            });=0A=
=0A=
            /**=0A=
            * True if the Overlay should be anchored to the center of =0A=
            * the viewport.=0A=
            * @config fixedcenter=0A=
            * @type Boolean=0A=
            * @default false=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.FIXED_CENTER.key, {=0A=
            =0A=
                handler: this.configFixedCenter,=0A=
                value: DEFAULT_CONFIG.FIXED_CENTER.value, =0A=
                validator: DEFAULT_CONFIG.FIXED_CENTER.validator, =0A=
                supercedes: DEFAULT_CONFIG.FIXED_CENTER.supercedes=0A=
            =0A=
            });=0A=
    =0A=
            /**=0A=
            * CSS width of the Overlay.=0A=
            * @config width=0A=
            * @type String=0A=
            * @default null=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.WIDTH.key, {=0A=
=0A=
                handler: this.configWidth, =0A=
                suppressEvent: DEFAULT_CONFIG.WIDTH.suppressEvent, =0A=
                supercedes: DEFAULT_CONFIG.WIDTH.supercedes=0A=
=0A=
            });=0A=
=0A=
            /**=0A=
            * CSS height of the Overlay.=0A=
            * @config height=0A=
            * @type String=0A=
            * @default null=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.HEIGHT.key, {=0A=
=0A=
                handler: this.configHeight, =0A=
                suppressEvent: DEFAULT_CONFIG.HEIGHT.suppressEvent, =0A=
                supercedes: DEFAULT_CONFIG.HEIGHT.supercedes=0A=
            =0A=
            });=0A=
=0A=
            /**=0A=
            * CSS z-index of the Overlay.=0A=
            * @config zIndex=0A=
            * @type Number=0A=
            * @default null=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.ZINDEX.key, {=0A=
=0A=
                handler: this.configzIndex,=0A=
                value: DEFAULT_CONFIG.ZINDEX.value=0A=
=0A=
            });=0A=
            =0A=
            /**=0A=
            * True if the Overlay should be prevented from being =
positioned =0A=
            * out of the viewport.=0A=
            * @config constraintoviewport=0A=
            * @type Boolean=0A=
            * @default false=0A=
            */=0A=
            =
this.cfg.addProperty(DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.key, {=0A=
=0A=
                handler: this.configConstrainToViewport, =0A=
                value: DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.value, =0A=
                validator: =
DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.validator, =0A=
                supercedes: =
DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.supercedes=0A=
=0A=
            });=0A=
            =0A=
            /**=0A=
            * @config iframe=0A=
            * @description Boolean indicating whether or not the Overlay =
should =0A=
            * have an IFRAME shim; used to prevent SELECT elements from =0A=
            * poking through an Overlay instance in IE6.  When set to =
"true", =0A=
            * the iframe shim is created when the Overlay instance is =
intially=0A=
            * made visible.=0A=
            * @type Boolean=0A=
            * @default true for IE6 and below, false for all other =
browsers.=0A=
            */=0A=
            this.cfg.addProperty(DEFAULT_CONFIG.IFRAME.key, {=0A=
=0A=
                handler: this.configIframe, =0A=
                value: DEFAULT_CONFIG.IFRAME.value, =0A=
                validator: DEFAULT_CONFIG.IFRAME.validator, =0A=
                supercedes: DEFAULT_CONFIG.IFRAME.supercedes=0A=
=0A=
            });=0A=
        },=0A=
=0A=
        /**=0A=
        * Moves the Overlay to the specified position. This function is  =0A=
        * identical to calling this.cfg.setProperty("xy", [x,y]);=0A=
        * @method moveTo=0A=
        * @param {Number} x The Overlay's new x position=0A=
        * @param {Number} y The Overlay's new y position=0A=
        */=0A=
        moveTo: function (x, y) {=0A=
            this.cfg.setProperty("xy", [x, y]);=0A=
        },=0A=
=0A=
        /**=0A=
        * Adds a CSS class ("hide-scrollbars") and removes a CSS class =0A=
        * ("show-scrollbars") to the Overlay to fix a bug in Gecko on =
Mac OS X =0A=
        * (https://bugzilla.mozilla.org/show_bug.cgi?id=3D187435)=0A=
        * @method hideMacGeckoScrollbars=0A=
        */=0A=
        hideMacGeckoScrollbars: function () {=0A=
    =0A=
            Dom.removeClass(this.element, "show-scrollbars");=0A=
            Dom.addClass(this.element, "hide-scrollbars");=0A=
    =0A=
        },=0A=
=0A=
        /**=0A=
        * Adds a CSS class ("show-scrollbars") and removes a CSS class =0A=
        * ("hide-scrollbars") to the Overlay to fix a bug in Gecko on =
Mac OS X =0A=
        * (https://bugzilla.mozilla.org/show_bug.cgi?id=3D187435)=0A=
        * @method showMacGeckoScrollbars=0A=
        */=0A=
        showMacGeckoScrollbars: function () {=0A=
    =0A=
            Dom.removeClass(this.element, "hide-scrollbars");=0A=
            Dom.addClass(this.element, "show-scrollbars");=0A=
    =0A=
        },=0A=
=0A=
        // BEGIN BUILT-IN PROPERTY EVENT HANDLERS //=0A=
        /**=0A=
        * The default event handler fired when the "visible" property is =0A=
        * changed.  This method is responsible for firing showEvent=0A=
        * and hideEvent.=0A=
        * @method configVisible=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration=0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configVisible: function (type, args, obj) {=0A=
=0A=
            var visible =3D args[0],=0A=
                currentVis =3D Dom.getStyle(this.element, "visibility"),=0A=
                effect =3D this.cfg.getProperty("effect"),=0A=
                effectInstances =3D [],=0A=
                isMacGecko =3D (this.platform =3D=3D "mac" && =
YAHOO.env.ua.gecko),=0A=
                alreadySubscribed =3D Config.alreadySubscribed,=0A=
                eff, ei, e, i, j, k, h,=0A=
                nEffects,=0A=
                nEffectInstances;=0A=
=0A=
            if (currentVis =3D=3D "inherit") {=0A=
                e =3D this.element.parentNode;=0A=
=0A=
                while (e.nodeType !=3D 9 && e.nodeType !=3D 11) {=0A=
                    currentVis =3D Dom.getStyle(e, "visibility");=0A=
=0A=
                    if (currentVis !=3D "inherit") { =0A=
                        break; =0A=
                    }=0A=
=0A=
                    e =3D e.parentNode;=0A=
                }=0A=
=0A=
                if (currentVis =3D=3D "inherit") {=0A=
                    currentVis =3D "visible";=0A=
                }=0A=
            }=0A=
=0A=
            if (effect) {=0A=
                if (effect instanceof Array) {=0A=
                    nEffects =3D effect.length;=0A=
=0A=
                    for (i =3D 0; i < nEffects; i++) {=0A=
                        eff =3D effect[i];=0A=
                        effectInstances[effectInstances.length] =3D =0A=
                            eff.effect(this, eff.duration);=0A=
=0A=
                    }=0A=
                } else {=0A=
                    effectInstances[effectInstances.length] =3D =0A=
                        effect.effect(this, effect.duration);=0A=
                }=0A=
            }=0A=
=0A=
=0A=
            if (visible) { // Show=0A=
                if (isMacGecko) {=0A=
                    this.showMacGeckoScrollbars();=0A=
                }=0A=
=0A=
                if (effect) { // Animate in=0A=
                    if (visible) { // Animate in if not showing=0A=
                        if (currentVis !=3D "visible" || currentVis =
=3D=3D=3D "") {=0A=
                            this.beforeShowEvent.fire();=0A=
                            nEffectInstances =3D effectInstances.length;=0A=
=0A=
                            for (j =3D 0; j < nEffectInstances; j++) {=0A=
                                ei =3D effectInstances[j];=0A=
                                if (j =3D=3D=3D 0 && !alreadySubscribed(=0A=
                                        ei.animateInCompleteEvent, =0A=
                                        this.showEvent.fire, =
this.showEvent)) {=0A=
=0A=
                                    /*=0A=
                                         Delegate showEvent until end =0A=
                                         of animateInComplete=0A=
                                    */=0A=
=0A=
                                    ei.animateInCompleteEvent.subscribe(=0A=
                                     this.showEvent.fire, =
this.showEvent, true);=0A=
                                }=0A=
                                ei.animateIn();=0A=
                            }=0A=
                        }=0A=
                    }=0A=
                } else { // Show=0A=
                    if (currentVis !=3D "visible" || currentVis =
=3D=3D=3D "") {=0A=
                        this.beforeShowEvent.fire();=0A=
=0A=
                        Dom.setStyle(this.element, "visibility", =
"visible");=0A=
=0A=
                        this.cfg.refireEvent("iframe");=0A=
                        this.showEvent.fire();=0A=
                    }=0A=
                }=0A=
            } else { // Hide=0A=
=0A=
                if (isMacGecko) {=0A=
                    this.hideMacGeckoScrollbars();=0A=
                }=0A=
                    =0A=
                if (effect) { // Animate out if showing=0A=
                    if (currentVis =3D=3D "visible") {=0A=
                        this.beforeHideEvent.fire();=0A=
=0A=
                        nEffectInstances =3D effectInstances.length;=0A=
                        for (k =3D 0; k < nEffectInstances; k++) {=0A=
                            h =3D effectInstances[k];=0A=
    =0A=
                            if (k =3D=3D=3D 0 && !alreadySubscribed(=0A=
                                h.animateOutCompleteEvent, =
this.hideEvent.fire, =0A=
                                this.hideEvent)) {=0A=
    =0A=
                                /*=0A=
                                     Delegate hideEvent until end =0A=
                                     of animateOutComplete=0A=
                                */=0A=
    =0A=
                                h.animateOutCompleteEvent.subscribe(=0A=
                                    this.hideEvent.fire, this.hideEvent, =
true);=0A=
    =0A=
                            }=0A=
                            h.animateOut();=0A=
                        }=0A=
=0A=
                    } else if (currentVis =3D=3D=3D "") {=0A=
                        Dom.setStyle(this.element, "visibility", =
"hidden");=0A=
                    }=0A=
=0A=
                } else { // Simple hide=0A=
=0A=
                    if (currentVis =3D=3D "visible" || currentVis =
=3D=3D=3D "") {=0A=
                        this.beforeHideEvent.fire();=0A=
                        Dom.setStyle(this.element, "visibility", =
"hidden");=0A=
                        this.hideEvent.fire();=0A=
                    }=0A=
                }=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Center event handler used for centering on scroll/resize, but =
only if =0A=
        * the Overlay is visible=0A=
        * @method doCenterOnDOMEvent=0A=
        */=0A=
        doCenterOnDOMEvent: function () {=0A=
            if (this.cfg.getProperty("visible")) {=0A=
                this.center();=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * The default event handler fired when the "fixedcenter" =
property =0A=
        * is changed.=0A=
        * @method configFixedCenter=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configFixedCenter: function (type, args, obj) {=0A=
=0A=
            var val =3D args[0],=0A=
                alreadySubscribed =3D Config.alreadySubscribed,=0A=
                windowResizeEvent =3D Overlay.windowResizeEvent,=0A=
                windowScrollEvent =3D Overlay.windowScrollEvent;=0A=
=0A=
            if (val) {=0A=
                this.center();=0A=
=0A=
                if (!alreadySubscribed(this.beforeShowEvent, =
this.center, this)) {=0A=
                    this.beforeShowEvent.subscribe(this.center);=0A=
                }=0A=
=0A=
                if (!alreadySubscribed(windowResizeEvent, =
this.doCenterOnDOMEvent, this)) {=0A=
                    windowResizeEvent.subscribe(this.doCenterOnDOMEvent, =
this, true);=0A=
                }=0A=
=0A=
                if (!alreadySubscribed(windowScrollEvent, =
this.doCenterOnDOMEvent, this)) {=0A=
                    windowScrollEvent.subscribe(this.doCenterOnDOMEvent, =
this, true);=0A=
                }=0A=
=0A=
            } else {=0A=
                this.beforeShowEvent.unsubscribe(this.center);=0A=
=0A=
                windowResizeEvent.unsubscribe(this.doCenterOnDOMEvent, =
this);=0A=
                windowScrollEvent.unsubscribe(this.doCenterOnDOMEvent, =
this);=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * The default event handler fired when the "height" property is =
changed.=0A=
        * @method configHeight=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configHeight: function (type, args, obj) {=0A=
    =0A=
            var height =3D args[0],=0A=
                el =3D this.element;=0A=
=0A=
            Dom.setStyle(el, "height", height);=0A=
            this.cfg.refireEvent("iframe");=0A=
        },=0A=
=0A=
        /**=0A=
        * The default event handler fired when the "width" property is =
changed.=0A=
        * @method configWidth=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configWidth: function (type, args, obj) {=0A=
=0A=
            var width =3D args[0],=0A=
                el =3D this.element;=0A=
    =0A=
            Dom.setStyle(el, "width", width);=0A=
            this.cfg.refireEvent("iframe");=0A=
        },=0A=
        =0A=
        /**=0A=
        * The default event handler fired when the "zIndex" property is =
changed.=0A=
        * @method configzIndex=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configzIndex: function (type, args, obj) {=0A=
=0A=
            var zIndex =3D args[0],=0A=
                el =3D this.element;=0A=
=0A=
            if (! zIndex) {=0A=
                zIndex =3D Dom.getStyle(el, "zIndex");=0A=
                if (! zIndex || isNaN(zIndex)) {=0A=
                    zIndex =3D 0;=0A=
                }=0A=
            }=0A=
=0A=
            if (this.iframe || this.cfg.getProperty("iframe") =3D=3D=3D =
true) {=0A=
                if (zIndex <=3D 0) {=0A=
                    zIndex =3D 1;=0A=
                }=0A=
            }=0A=
=0A=
            Dom.setStyle(el, "zIndex", zIndex);=0A=
            this.cfg.setProperty("zIndex", zIndex, true);=0A=
=0A=
            if (this.iframe) {=0A=
                this.stackIframe();=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * The default event handler fired when the "xy" property is =
changed.=0A=
        * @method configXY=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configXY: function (type, args, obj) {=0A=
=0A=
            var pos =3D args[0],=0A=
                x =3D pos[0],=0A=
                y =3D pos[1];=0A=
=0A=
            this.cfg.setProperty("x", x);=0A=
            this.cfg.setProperty("y", y);=0A=
=0A=
            this.beforeMoveEvent.fire([x, y]);=0A=
=0A=
            x =3D this.cfg.getProperty("x");=0A=
            y =3D this.cfg.getProperty("y");=0A=
=0A=
=0A=
            this.cfg.refireEvent("iframe");=0A=
            this.moveEvent.fire([x, y]);=0A=
        },=0A=
=0A=
        /**=0A=
        * The default event handler fired when the "x" property is =
changed.=0A=
        * @method configX=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configX: function (type, args, obj) {=0A=
=0A=
            var x =3D args[0],=0A=
                y =3D this.cfg.getProperty("y");=0A=
=0A=
            this.cfg.setProperty("x", x, true);=0A=
            this.cfg.setProperty("y", y, true);=0A=
=0A=
            this.beforeMoveEvent.fire([x, y]);=0A=
=0A=
            x =3D this.cfg.getProperty("x");=0A=
            y =3D this.cfg.getProperty("y");=0A=
            =0A=
            Dom.setX(this.element, x, true);=0A=
            =0A=
            this.cfg.setProperty("xy", [x, y], true);=0A=
           =0A=
            this.cfg.refireEvent("iframe");=0A=
            this.moveEvent.fire([x, y]);=0A=
        },=0A=
=0A=
        /**=0A=
        * The default event handler fired when the "y" property is =
changed.=0A=
        * @method configY=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configY: function (type, args, obj) {=0A=
=0A=
            var x =3D this.cfg.getProperty("x"),=0A=
                y =3D args[0];=0A=
=0A=
            this.cfg.setProperty("x", x, true);=0A=
            this.cfg.setProperty("y", y, true);=0A=
=0A=
            this.beforeMoveEvent.fire([x, y]);=0A=
=0A=
            x =3D this.cfg.getProperty("x");=0A=
            y =3D this.cfg.getProperty("y");=0A=
=0A=
            Dom.setY(this.element, y, true);=0A=
=0A=
            this.cfg.setProperty("xy", [x, y], true);=0A=
=0A=
            this.cfg.refireEvent("iframe");=0A=
            this.moveEvent.fire([x, y]);=0A=
        },=0A=
        =0A=
        /**=0A=
        * Shows the iframe shim, if it has been enabled.=0A=
        * @method showIframe=0A=
        */=0A=
        showIframe: function () {=0A=
=0A=
            var oIFrame =3D this.iframe,=0A=
                oParentNode;=0A=
=0A=
            if (oIFrame) {=0A=
                oParentNode =3D this.element.parentNode;=0A=
=0A=
                if (oParentNode !=3D oIFrame.parentNode) {=0A=
                    this._addToParent(oParentNode, oIFrame);=0A=
                }=0A=
                oIFrame.style.display =3D "block";=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Hides the iframe shim, if it has been enabled.=0A=
        * @method hideIframe=0A=
        */=0A=
        hideIframe: function () {=0A=
            if (this.iframe) {=0A=
                this.iframe.style.display =3D "none";=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Syncronizes the size and position of iframe shim to that of =
its =0A=
        * corresponding Overlay instance.=0A=
        * @method syncIframe=0A=
        */=0A=
        syncIframe: function () {=0A=
=0A=
            var oIFrame =3D this.iframe,=0A=
                oElement =3D this.element,=0A=
                nOffset =3D Overlay.IFRAME_OFFSET,=0A=
                nDimensionOffset =3D (nOffset * 2),=0A=
                aXY;=0A=
=0A=
            if (oIFrame) {=0A=
                // Size <iframe>=0A=
                oIFrame.style.width =3D (oElement.offsetWidth + =
nDimensionOffset + "px");=0A=
                oIFrame.style.height =3D (oElement.offsetHeight + =
nDimensionOffset + "px");=0A=
=0A=
                // Position <iframe>=0A=
                aXY =3D this.cfg.getProperty("xy");=0A=
=0A=
                if (!Lang.isArray(aXY) || (isNaN(aXY[0]) || =
isNaN(aXY[1]))) {=0A=
                    this.syncPosition();=0A=
                    aXY =3D this.cfg.getProperty("xy");=0A=
                }=0A=
                Dom.setXY(oIFrame, [(aXY[0] - nOffset), (aXY[1] - =
nOffset)]);=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
         * Sets the zindex of the iframe shim, if it exists, based on =
the zindex of=0A=
         * the Overlay element. The zindex of the iframe is set to be =
one less =0A=
         * than the Overlay element's zindex.=0A=
         * =0A=
         * <p>NOTE: This method will not bump up the zindex of the =
Overlay element=0A=
         * to ensure that the iframe shim has a non-negative zindex.=0A=
         * If you require the iframe zindex to be 0 or higher, the =
zindex of =0A=
         * the Overlay element should be set to a value greater than 0, =
before =0A=
         * this method is called.=0A=
         * </p>=0A=
         * @method stackIframe=0A=
         */=0A=
        stackIframe: function () {=0A=
            if (this.iframe) {=0A=
                var overlayZ =3D Dom.getStyle(this.element, "zIndex");=0A=
                if (!YAHOO.lang.isUndefined(overlayZ) && =
!isNaN(overlayZ)) {=0A=
                    Dom.setStyle(this.iframe, "zIndex", (overlayZ - 1));=0A=
                }=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * The default event handler fired when the "iframe" property is =
changed.=0A=
        * @method configIframe=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configIframe: function (type, args, obj) {=0A=
=0A=
            var bIFrame =3D args[0];=0A=
=0A=
            function createIFrame() {=0A=
=0A=
                var oIFrame =3D this.iframe,=0A=
                    oElement =3D this.element,=0A=
                    oParent;=0A=
=0A=
                if (!oIFrame) {=0A=
                    if (!m_oIFrameTemplate) {=0A=
                        m_oIFrameTemplate =3D =
document.createElement("iframe");=0A=
=0A=
                        if (this.isSecure) {=0A=
                            m_oIFrameTemplate.src =3D Overlay.IFRAME_SRC;=0A=
                        }=0A=
=0A=
                        /*=0A=
                            Set the opacity of the <iframe> to 0 so that =
it =0A=
                            doesn't modify the opacity of any =
transparent =0A=
                            elements that may be on top of it (like a =
shadow).=0A=
                        */=0A=
=0A=
                        if (YAHOO.env.ua.ie) {=0A=
                            m_oIFrameTemplate.style.filter =3D =
"alpha(opacity=3D0)";=0A=
                            /*=0A=
                                 Need to set the "frameBorder" property =
to 0 =0A=
                                 supress the default <iframe> border in =
IE.  =0A=
                                 Setting the CSS "border" property alone =0A=
                                 doesn't supress it.=0A=
                            */=0A=
                            m_oIFrameTemplate.frameBorder =3D 0;=0A=
                        }=0A=
                        else {=0A=
                            m_oIFrameTemplate.style.opacity =3D "0";=0A=
                        }=0A=
=0A=
                        m_oIFrameTemplate.style.position =3D "absolute";=0A=
                        m_oIFrameTemplate.style.border =3D "none";=0A=
                        m_oIFrameTemplate.style.margin =3D "0";=0A=
                        m_oIFrameTemplate.style.padding =3D "0";=0A=
                        m_oIFrameTemplate.style.display =3D "none";=0A=
                    }=0A=
=0A=
                    oIFrame =3D m_oIFrameTemplate.cloneNode(false);=0A=
                    oParent =3D oElement.parentNode;=0A=
=0A=
                    var parentNode =3D oParent || document.body;=0A=
=0A=
                    this._addToParent(parentNode, oIFrame);=0A=
                    this.iframe =3D oIFrame;=0A=
                }=0A=
=0A=
                /*=0A=
                     Show the <iframe> before positioning it since the =
"setXY" =0A=
                     method of DOM requires the element be in the =
document =0A=
                     and visible.=0A=
                */=0A=
                this.showIframe();=0A=
=0A=
                /*=0A=
                     Syncronize the size and position of the <iframe> to =
that =0A=
                     of the Overlay.=0A=
                */=0A=
                this.syncIframe();=0A=
                this.stackIframe();=0A=
=0A=
                // Add event listeners to update the <iframe> when =
necessary=0A=
                if (!this._hasIframeEventListeners) {=0A=
                    this.showEvent.subscribe(this.showIframe);=0A=
                    this.hideEvent.subscribe(this.hideIframe);=0A=
                    this.changeContentEvent.subscribe(this.syncIframe);=0A=
=0A=
                    this._hasIframeEventListeners =3D true;=0A=
                }=0A=
            }=0A=
=0A=
            function onBeforeShow() {=0A=
                createIFrame.call(this);=0A=
                this.beforeShowEvent.unsubscribe(onBeforeShow);=0A=
                this._iframeDeferred =3D false;=0A=
            }=0A=
=0A=
            if (bIFrame) { // <iframe> shim is enabled=0A=
=0A=
                if (this.cfg.getProperty("visible")) {=0A=
                    createIFrame.call(this);=0A=
                } else {=0A=
                    if (!this._iframeDeferred) {=0A=
                        this.beforeShowEvent.subscribe(onBeforeShow);=0A=
                        this._iframeDeferred =3D true;=0A=
                    }=0A=
                }=0A=
=0A=
            } else {    // <iframe> shim is disabled=0A=
                this.hideIframe();=0A=
=0A=
                if (this._hasIframeEventListeners) {=0A=
                    this.showEvent.unsubscribe(this.showIframe);=0A=
                    this.hideEvent.unsubscribe(this.hideIframe);=0A=
                    this.changeContentEvent.unsubscribe(this.syncIframe);=0A=
=0A=
                    this._hasIframeEventListeners =3D false;=0A=
                }=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * The default event handler fired when the "constraintoviewport" =0A=
        * property is changed.=0A=
        * @method configConstrainToViewport=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for =0A=
        * the property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configConstrainToViewport: function (type, args, obj) {=0A=
=0A=
            function constrainBeforeShow() {=0A=
                if (YAHOO.lang.isUndefined(this.cfg.getProperty("xy"))) {=0A=
                    // Set CFG XY based on DOM XY=0A=
                    this.syncPosition();=0A=
                }=0A=
                var x =3D this.cfg.getProperty("x");=0A=
                var y =3D this.cfg.getProperty("y");=0A=
=0A=
                // Account for XY being set silently (no moveTo =
fired/called)=0A=
                var cXY =3D this.getConstrainedXY(x, y);=0A=
                if (cXY[0] !=3D=3D x || cXY[1] !=3D=3D y) {=0A=
                    this.moveTo(cXY[0], cXY[1]);=0A=
                }=0A=
            }=0A=
=0A=
            var val =3D args[0];=0A=
=0A=
            if (val) {=0A=
                if (! Config.alreadySubscribed(this.beforeMoveEvent, =
this.enforceConstraints, this)) {=0A=
                    =
this.beforeMoveEvent.subscribe(this.enforceConstraints, this, true);=0A=
                }=0A=
=0A=
                if (! Config.alreadySubscribed(this.beforeShowEvent, =
constrainBeforeShow)) {=0A=
                    this.beforeShowEvent.subscribe(constrainBeforeShow);=0A=
                }=0A=
            } else {=0A=
                this.beforeShowEvent.unsubscribe(constrainBeforeShow);=0A=
                =
this.beforeMoveEvent.unsubscribe(this.enforceConstraints, this);=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * The default event handler fired when the "context" property =0A=
        * is changed.=0A=
        * @method configContext=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        configContext: function (type, args, obj) {=0A=
    =0A=
            var contextArgs =3D args[0],=0A=
                contextEl,=0A=
                elementMagnetCorner,=0A=
                contextMagnetCorner;=0A=
            =0A=
            if (contextArgs) {=0A=
            =0A=
                contextEl =3D contextArgs[0];=0A=
                elementMagnetCorner =3D contextArgs[1];=0A=
                contextMagnetCorner =3D contextArgs[2];=0A=
                =0A=
                if (contextEl) {=0A=
    =0A=
                    if (typeof contextEl =3D=3D "string") {=0A=
=0A=
                        this.cfg.setProperty("context", =0A=
                            [document.getElementById(contextEl), =0A=
                                elementMagnetCorner, =
contextMagnetCorner], =0A=
                                true);=0A=
=0A=
                    }=0A=
                    =0A=
                    if (elementMagnetCorner && contextMagnetCorner) {=0A=
=0A=
                        this.align(elementMagnetCorner, =
contextMagnetCorner);=0A=
=0A=
                    }=0A=
=0A=
                }=0A=
=0A=
            }=0A=
=0A=
        },=0A=
=0A=
        // END BUILT-IN PROPERTY EVENT HANDLERS //=0A=
=0A=
        /**=0A=
        * Aligns the Overlay to its context element using the specified =
corner =0A=
        * points (represented by the constants TOP_LEFT, TOP_RIGHT, =
BOTTOM_LEFT, =0A=
        * and BOTTOM_RIGHT.=0A=
        * @method align=0A=
        * @param {String} elementAlign  The String representing the =
corner of =0A=
        * the Overlay that should be aligned to the context element=0A=
        * @param {String} contextAlign  The corner of the context =
element =0A=
        * that the elementAlign corner should stick to.=0A=
        */=0A=
        align: function (elementAlign, contextAlign) {=0A=
=0A=
            var contextArgs =3D this.cfg.getProperty("context"),=0A=
                me =3D this,=0A=
                context,=0A=
                element,=0A=
                contextRegion;=0A=
=0A=
            function doAlign(v, h) {=0A=
    =0A=
                switch (elementAlign) {=0A=
    =0A=
                case Overlay.TOP_LEFT:=0A=
                    me.moveTo(h, v);=0A=
                    break;=0A=
    =0A=
                case Overlay.TOP_RIGHT:=0A=
                    me.moveTo((h - element.offsetWidth), v);=0A=
                    break;=0A=
    =0A=
                case Overlay.BOTTOM_LEFT:=0A=
                    me.moveTo(h, (v - element.offsetHeight));=0A=
                    break;=0A=
    =0A=
                case Overlay.BOTTOM_RIGHT:=0A=
                    me.moveTo((h - element.offsetWidth), =0A=
                        (v - element.offsetHeight));=0A=
                    break;=0A=
                }=0A=
            }=0A=
    =0A=
    =0A=
            if (contextArgs) {=0A=
            =0A=
                context =3D contextArgs[0];=0A=
                element =3D this.element;=0A=
                me =3D this;=0A=
                =0A=
                if (! elementAlign) {=0A=
                    elementAlign =3D contextArgs[1];=0A=
                }=0A=
                =0A=
                if (! contextAlign) {=0A=
                    contextAlign =3D contextArgs[2];=0A=
                }=0A=
                =0A=
                if (element && context) {=0A=
                    contextRegion =3D Dom.getRegion(context);=0A=
=0A=
                    switch (contextAlign) {=0A=
    =0A=
                    case Overlay.TOP_LEFT:=0A=
                        doAlign(contextRegion.top, contextRegion.left);=0A=
                        break;=0A=
    =0A=
                    case Overlay.TOP_RIGHT:=0A=
                        doAlign(contextRegion.top, contextRegion.right);=0A=
                        break;=0A=
    =0A=
                    case Overlay.BOTTOM_LEFT:=0A=
                        doAlign(contextRegion.bottom, =
contextRegion.left);=0A=
                        break;=0A=
    =0A=
                    case Overlay.BOTTOM_RIGHT:=0A=
                        doAlign(contextRegion.bottom, =
contextRegion.right);=0A=
                        break;=0A=
                    }=0A=
    =0A=
                }=0A=
    =0A=
            }=0A=
            =0A=
        },=0A=
=0A=
        /**=0A=
        * The default event handler executed when the moveEvent is =
fired, if the =0A=
        * "constraintoviewport" is set to true.=0A=
        * @method enforceConstraints=0A=
        * @param {String} type The CustomEvent type (usually the =
property name)=0A=
        * @param {Object[]} args The CustomEvent arguments. For =
configuration =0A=
        * handlers, args[0] will equal the newly applied value for the =
property.=0A=
        * @param {Object} obj The scope object. For configuration =
handlers, =0A=
        * this will usually equal the owner.=0A=
        */=0A=
        enforceConstraints: function (type, args, obj) {=0A=
            var pos =3D args[0];=0A=
            var cXY =3D this.getConstrainedXY(pos[0], pos[1]);=0A=
            this.cfg.setProperty("x", cXY[0], true);=0A=
            this.cfg.setProperty("y", cXY[1], true);=0A=
            this.cfg.setProperty("xy", cXY, true);=0A=
        },=0A=
=0A=
        /**=0A=
         * Given x, y coordinate values, returns the calculated =
coordinates required to =0A=
         * position the Overlay if it is to be constrained to the =
viewport, based on the =0A=
         * current element size, viewport dimensions and scroll values.=0A=
         *=0A=
         * @param {Number} x The X coordinate value to be constrained=0A=
         * @param {Number} y The Y coordinate value to be constrained=0A=
         * @return {Array} The constrained x and y coordinates at index =
0 and 1 respectively;=0A=
         */=0A=
        getConstrainedXY: function(x, y) {=0A=
=0A=
            var nViewportOffset =3D Overlay.VIEWPORT_OFFSET,=0A=
                viewPortWidth =3D Dom.getViewportWidth(),=0A=
                viewPortHeight =3D Dom.getViewportHeight(),=0A=
                offsetHeight =3D this.element.offsetHeight,=0A=
                offsetWidth =3D this.element.offsetWidth,=0A=
                scrollX =3D Dom.getDocumentScrollLeft(),=0A=
                scrollY =3D Dom.getDocumentScrollTop();=0A=
=0A=
            var xNew =3D x;=0A=
            var yNew =3D y;=0A=
=0A=
            if (offsetWidth + nViewportOffset < viewPortWidth) {=0A=
=0A=
                var leftConstraint =3D scrollX + nViewportOffset;=0A=
                var rightConstraint =3D scrollX + viewPortWidth - =
offsetWidth - nViewportOffset;=0A=
=0A=
                if (x < leftConstraint) {=0A=
                    xNew =3D leftConstraint;=0A=
                } else if (x > rightConstraint) {=0A=
                    xNew =3D rightConstraint;=0A=
                }=0A=
            } else {=0A=
                xNew =3D nViewportOffset + scrollX;=0A=
            }=0A=
=0A=
            if (offsetHeight + nViewportOffset < viewPortHeight) {=0A=
=0A=
                var topConstraint =3D scrollY + nViewportOffset;=0A=
                var bottomConstraint =3D scrollY + viewPortHeight - =
offsetHeight - nViewportOffset;=0A=
=0A=
                if (y < topConstraint) {=0A=
                    yNew  =3D topConstraint;=0A=
                } else if (y  > bottomConstraint) {=0A=
                    yNew  =3D bottomConstraint;=0A=
                }=0A=
            } else {=0A=
                yNew =3D nViewportOffset + scrollY;=0A=
            }=0A=
=0A=
            return [xNew, yNew];=0A=
        },=0A=
=0A=
        /**=0A=
        * Centers the container in the viewport.=0A=
        * @method center=0A=
        */=0A=
        center: function () {=0A=
=0A=
            var nViewportOffset =3D Overlay.VIEWPORT_OFFSET,=0A=
                elementWidth =3D this.element.offsetWidth,=0A=
                elementHeight =3D this.element.offsetHeight,=0A=
                viewPortWidth =3D Dom.getViewportWidth(),=0A=
                viewPortHeight =3D Dom.getViewportHeight(),=0A=
                x,=0A=
                y;=0A=
=0A=
            if (elementWidth < viewPortWidth) {=0A=
                x =3D (viewPortWidth / 2) - (elementWidth / 2) + =
Dom.getDocumentScrollLeft();=0A=
            } else {=0A=
                x =3D nViewportOffset + Dom.getDocumentScrollLeft();=0A=
            }=0A=
=0A=
            if (elementHeight < viewPortHeight) {=0A=
                y =3D (viewPortHeight / 2) - (elementHeight / 2) + =
Dom.getDocumentScrollTop();=0A=
            } else {=0A=
                y =3D nViewportOffset + Dom.getDocumentScrollTop();=0A=
            }=0A=
=0A=
            this.cfg.setProperty("xy", [parseInt(x, 10), parseInt(y, =
10)]);=0A=
            this.cfg.refireEvent("iframe");=0A=
        },=0A=
=0A=
        /**=0A=
        * Synchronizes the Panel's "xy", "x", and "y" properties with =
the =0A=
        * Panel's position in the DOM. This is primarily used to update  =0A=
        * position information during drag & drop.=0A=
        * @method syncPosition=0A=
        */=0A=
        syncPosition: function () {=0A=
=0A=
            var pos =3D Dom.getXY(this.element);=0A=
=0A=
            this.cfg.setProperty("x", pos[0], true);=0A=
            this.cfg.setProperty("y", pos[1], true);=0A=
            this.cfg.setProperty("xy", pos, true);=0A=
=0A=
        },=0A=
=0A=
        /**=0A=
        * Event handler fired when the resize monitor element is resized.=0A=
        * @method onDomResize=0A=
        * @param {DOMEvent} e The resize DOM event=0A=
        * @param {Object} obj The scope object=0A=
        */=0A=
        onDomResize: function (e, obj) {=0A=
=0A=
            var me =3D this;=0A=
=0A=
            Overlay.superclass.onDomResize.call(this, e, obj);=0A=
=0A=
            setTimeout(function () {=0A=
                me.syncPosition();=0A=
                me.cfg.refireEvent("iframe");=0A=
                me.cfg.refireEvent("context");=0A=
            }, 0);=0A=
    =0A=
        },=0A=
=0A=
        /**=0A=
        * Places the Overlay on top of all other instances of =0A=
        * YAHOO.widget.Overlay.=0A=
        * @method bringToTop=0A=
        */=0A=
        bringToTop: function () {=0A=
=0A=
            var aOverlays =3D [],=0A=
                oElement =3D this.element;=0A=
=0A=
            function compareZIndexDesc(p_oOverlay1, p_oOverlay2) {=0A=
=0A=
                var sZIndex1 =3D Dom.getStyle(p_oOverlay1, "zIndex"),=0A=
                    sZIndex2 =3D Dom.getStyle(p_oOverlay2, "zIndex"),=0A=
=0A=
                    nZIndex1 =3D (!sZIndex1 || isNaN(sZIndex1)) ? 0 : =
parseInt(sZIndex1, 10),=0A=
                    nZIndex2 =3D (!sZIndex2 || isNaN(sZIndex2)) ? 0 : =
parseInt(sZIndex2, 10);=0A=
=0A=
                if (nZIndex1 > nZIndex2) {=0A=
                    return -1;=0A=
                } else if (nZIndex1 < nZIndex2) {=0A=
                    return 1;=0A=
                } else {=0A=
                    return 0;=0A=
                }=0A=
            }=0A=
=0A=
            function isOverlayElement(p_oElement) {=0A=
=0A=
                var oOverlay =3D Dom.hasClass(p_oElement, =
Overlay.CSS_OVERLAY),=0A=
                    Panel =3D YAHOO.widget.Panel;=0A=
=0A=
                if (oOverlay && !Dom.isAncestor(oElement, oOverlay)) {=0A=
                    if (Panel && Dom.hasClass(p_oElement, =
Panel.CSS_PANEL)) {=0A=
                        aOverlays[aOverlays.length] =3D =
p_oElement.parentNode;=0A=
                    } else {=0A=
                        aOverlays[aOverlays.length] =3D p_oElement;=0A=
                    }=0A=
                }=0A=
            }=0A=
=0A=
            Dom.getElementsBy(isOverlayElement, "DIV", document.body);=0A=
=0A=
            aOverlays.sort(compareZIndexDesc);=0A=
=0A=
            var oTopOverlay =3D aOverlays[0],=0A=
                nTopZIndex;=0A=
=0A=
            if (oTopOverlay) {=0A=
                nTopZIndex =3D Dom.getStyle(oTopOverlay, "zIndex");=0A=
=0A=
                if (!isNaN(nTopZIndex)) {=0A=
                    var bRequiresBump =3D false;=0A=
=0A=
                    if (oTopOverlay !=3D oElement) {=0A=
                        bRequiresBump =3D true;=0A=
                    } else if (aOverlays.length > 1) {=0A=
                        var nNextZIndex =3D Dom.getStyle(aOverlays[1], =
"zIndex");=0A=
                        // Don't rely on DOM order to stack if 2 =
overlays are at the same zindex.=0A=
                        if (!isNaN(nNextZIndex) && (nTopZIndex =3D=3D =
nNextZIndex)) {=0A=
                            bRequiresBump =3D true;=0A=
                        }=0A=
                    }=0A=
                    if (bRequiresBump) {=0A=
                        this.cfg.setProperty("zindex", =
(parseInt(nTopZIndex, 10) + 2));=0A=
                    }=0A=
                }=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Removes the Overlay element from the DOM and sets all child =0A=
        * elements to null.=0A=
        * @method destroy=0A=
        */=0A=
        destroy: function () {=0A=
=0A=
            if (this.iframe) {=0A=
                this.iframe.parentNode.removeChild(this.iframe);=0A=
            }=0A=
=0A=
            this.iframe =3D null;=0A=
        =0A=
            Overlay.windowResizeEvent.unsubscribe(=0A=
                this.doCenterOnDOMEvent, this);=0A=
    =0A=
            Overlay.windowScrollEvent.unsubscribe(=0A=
                this.doCenterOnDOMEvent, this);=0A=
        =0A=
            Overlay.superclass.destroy.call(this);=0A=
        },=0A=
        =0A=
        /**=0A=
        * Returns a String representation of the object.=0A=
        * @method toString=0A=
        * @return {String} The string representation of the Overlay.=0A=
        */=0A=
        toString: function () {=0A=
            return "Overlay " + this.id;=0A=
        }=0A=
=0A=
    });=0A=
}());=0A=
=0A=
(function () {=0A=
    =0A=
    /**=0A=
    * OverlayManager is used for maintaining the focus status of =0A=
    * multiple Overlays.=0A=
    * @namespace YAHOO.widget=0A=
    * @namespace YAHOO.widget=0A=
    * @class OverlayManager=0A=
    * @constructor=0A=
    * @param {Array} overlays Optional. A collection of Overlays to =
register =0A=
    * with the manager.=0A=
    * @param {Object} userConfig  The object literal representing the =
user =0A=
    * configuration of the OverlayManager=0A=
    */=0A=
    YAHOO.widget.OverlayManager =3D function (userConfig) {=0A=
        this.init(userConfig);=0A=
    };=0A=
=0A=
    var Overlay =3D YAHOO.widget.Overlay,=0A=
        Event =3D YAHOO.util.Event,=0A=
        Dom =3D YAHOO.util.Dom,=0A=
        Config =3D YAHOO.util.Config,=0A=
        CustomEvent =3D YAHOO.util.CustomEvent,=0A=
        OverlayManager =3D YAHOO.widget.OverlayManager;=0A=
    =0A=
    /**=0A=
    * The CSS class representing a focused Overlay=0A=
    * @property OverlayManager.CSS_FOCUSED=0A=
    * @static=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    OverlayManager.CSS_FOCUSED =3D "focused";=0A=
    =0A=
    OverlayManager.prototype =3D {=0A=
    =0A=
        /**=0A=
        * The class's constructor function=0A=
        * @property contructor=0A=
        * @type Function=0A=
        */=0A=
        constructor: OverlayManager,=0A=
        =0A=
        /**=0A=
        * The array of Overlays that are currently registered=0A=
        * @property overlays=0A=
        * @type YAHOO.widget.Overlay[]=0A=
        */=0A=
        overlays: null,=0A=
        =0A=
        /**=0A=
        * Initializes the default configuration of the OverlayManager=0A=
        * @method initDefaultConfig=0A=
        */=0A=
        initDefaultConfig: function () {=0A=
        =0A=
            /**=0A=
            * The collection of registered Overlays in use by =0A=
            * the OverlayManager=0A=
            * @config overlays=0A=
            * @type YAHOO.widget.Overlay[]=0A=
            * @default null=0A=
            */=0A=
            this.cfg.addProperty("overlays", { suppressEvent: true } );=0A=
        =0A=
            /**=0A=
            * The default DOM event that should be used to focus an =
Overlay=0A=
            * @config focusevent=0A=
            * @type String=0A=
            * @default "mousedown"=0A=
            */=0A=
            this.cfg.addProperty("focusevent", { value: "mousedown" } );=0A=
=0A=
        },=0A=
=0A=
        /**=0A=
        * Initializes the OverlayManager=0A=
        * @method init=0A=
        * @param {Overlay[]} overlays Optional. A collection of Overlays =
to =0A=
        * register with the manager.=0A=
        * @param {Object} userConfig  The object literal representing =
the user =0A=
        * configuration of the OverlayManager=0A=
        */=0A=
        init: function (userConfig) {=0A=
=0A=
            /**=0A=
            * The OverlayManager's Config object used for monitoring =0A=
            * configuration properties.=0A=
            * @property cfg=0A=
            * @type Config=0A=
            */=0A=
            this.cfg =3D new Config(this);=0A=
=0A=
            this.initDefaultConfig();=0A=
=0A=
            if (userConfig) {=0A=
                this.cfg.applyConfig(userConfig, true);=0A=
            }=0A=
            this.cfg.fireQueue();=0A=
=0A=
            /**=0A=
            * The currently activated Overlay=0A=
            * @property activeOverlay=0A=
            * @private=0A=
            * @type YAHOO.widget.Overlay=0A=
            */=0A=
            var activeOverlay =3D null;=0A=
=0A=
            /**=0A=
            * Returns the currently focused Overlay=0A=
            * @method getActive=0A=
            * @return {Overlay} The currently focused Overlay=0A=
            */=0A=
            this.getActive =3D function () {=0A=
                return activeOverlay;=0A=
            };=0A=
=0A=
            /**=0A=
            * Focuses the specified Overlay=0A=
            * @method focus=0A=
            * @param {Overlay} overlay The Overlay to focus=0A=
            * @param {String} overlay The id of the Overlay to focus=0A=
            */=0A=
            this.focus =3D function (overlay) {=0A=
                var o =3D this.find(overlay);=0A=
                if (o) {=0A=
                    if (activeOverlay !=3D o) {=0A=
                        if (activeOverlay) {=0A=
                            activeOverlay.blur();=0A=
                        }=0A=
                        this.bringToTop(o);=0A=
=0A=
                        activeOverlay =3D o;=0A=
=0A=
                        Dom.addClass(activeOverlay.element, =0A=
                            OverlayManager.CSS_FOCUSED);=0A=
=0A=
                        o.focusEvent.fire();=0A=
                    }=0A=
                }=0A=
            };=0A=
        =0A=
            /**=0A=
            * Removes the specified Overlay from the manager=0A=
            * @method remove=0A=
            * @param {Overlay} overlay The Overlay to remove=0A=
            * @param {String} overlay The id of the Overlay to remove=0A=
            */=0A=
            this.remove =3D function (overlay) {=0A=
                var o =3D this.find(overlay), =0A=
                        originalZ;=0A=
                if (o) {=0A=
                    if (activeOverlay =3D=3D o) {=0A=
                        activeOverlay =3D null;=0A=
                    }=0A=
=0A=
                    var bDestroyed =3D (o.element =3D=3D=3D null && =
o.cfg =3D=3D=3D null) ? true : false;=0A=
=0A=
                    if (!bDestroyed) {=0A=
                        // Set it's zindex so that it's sorted to the =
end.=0A=
                        originalZ =3D Dom.getStyle(o.element, "zIndex");=0A=
                        o.cfg.setProperty("zIndex", -1000, true);=0A=
                    }=0A=
=0A=
                    this.overlays.sort(this.compareZIndexDesc);=0A=
                    this.overlays =3D this.overlays.slice(0, =
(this.overlays.length - 1));=0A=
=0A=
                    o.hideEvent.unsubscribe(o.blur);=0A=
                    o.destroyEvent.unsubscribe(this._onOverlayDestroy, =
o);=0A=
=0A=
                    if (!bDestroyed) {=0A=
                        Event.removeListener(o.element, =0A=
                                    this.cfg.getProperty("focusevent"), =0A=
                                    this._onOverlayElementFocus);=0A=
=0A=
                        o.cfg.setProperty("zIndex", originalZ, true);=0A=
                        o.cfg.setProperty("manager", null);=0A=
                    }=0A=
=0A=
                    o.focusEvent.unsubscribeAll();=0A=
                    o.blurEvent.unsubscribeAll();=0A=
=0A=
                    o.focusEvent =3D null;=0A=
                    o.blurEvent =3D null;=0A=
=0A=
                    o.focus =3D null;=0A=
                    o.blur =3D null;=0A=
                }=0A=
            };=0A=
=0A=
            /**=0A=
            * Removes focus from all registered Overlays in the manager=0A=
            * @method blurAll=0A=
            */=0A=
            this.blurAll =3D function () {=0A=
    =0A=
                var nOverlays =3D this.overlays.length,=0A=
                    i;=0A=
=0A=
                if (nOverlays > 0) {=0A=
                    i =3D nOverlays - 1;=0A=
=0A=
                    do {=0A=
                        this.overlays[i].blur();=0A=
                    }=0A=
                    while(i--);=0A=
                }=0A=
            };=0A=
        =0A=
            this._onOverlayBlur =3D function (p_sType, p_aArgs) {=0A=
                activeOverlay =3D null;=0A=
            };=0A=
        =0A=
            var overlays =3D this.cfg.getProperty("overlays");=0A=
        =0A=
            if (! this.overlays) {=0A=
                this.overlays =3D [];=0A=
            }=0A=
        =0A=
            if (overlays) {=0A=
                this.register(overlays);=0A=
                this.overlays.sort(this.compareZIndexDesc);=0A=
            }=0A=
        },=0A=
        =0A=
        =0A=
        /**=0A=
        * @method _onOverlayElementFocus=0A=
        * @description Event handler for the DOM event that is used to =
focus =0A=
        * the Overlay instance as specified by the "focusevent" =0A=
        * configuration property.=0A=
        * @private=0A=
        * @param {Event} p_oEvent Object representing the DOM event =0A=
        * object passed back by the event utility (Event).=0A=
        */=0A=
        _onOverlayElementFocus: function (p_oEvent) {=0A=
        =0A=
            var oTarget =3D Event.getTarget(p_oEvent),=0A=
                oClose =3D this.close;=0A=
            =0A=
            if (oClose && (oTarget =3D=3D oClose || =
Dom.isAncestor(oClose, oTarget))) {=0A=
                this.blur();=0A=
            } else {=0A=
                this.focus();=0A=
            }=0A=
        },=0A=
        =0A=
        =0A=
        /**=0A=
        * @method _onOverlayDestroy=0A=
        * @description "destroy" event handler for the Overlay.=0A=
        * @private=0A=
        * @param {String} p_sType String representing the name of the =
event  =0A=
        * that was fired.=0A=
        * @param {Array} p_aArgs Array of arguments sent when the event =0A=
        * was fired.=0A=
        * @param {Overlay} p_oOverlay Object representing the menu that =0A=
        * fired the event.=0A=
        */=0A=
        _onOverlayDestroy: function (p_sType, p_aArgs, p_oOverlay) {=0A=
            this.remove(p_oOverlay);=0A=
        },=0A=
        =0A=
        /**=0A=
        * Registers an Overlay or an array of Overlays with the manager. =
Upon =0A=
        * registration, the Overlay receives functions for focus and =
blur, =0A=
        * along with CustomEvents for each.=0A=
        * @method register=0A=
        * @param {Overlay} overlay  An Overlay to register with the =
manager.=0A=
        * @param {Overlay[]} overlay  An array of Overlays to register =
with =0A=
        * the manager.=0A=
        * @return {Boolean} True if any Overlays are registered.=0A=
        */=0A=
        register: function (overlay) {=0A=
        =0A=
            var mgr =3D this,=0A=
                zIndex,=0A=
                regcount,=0A=
                i,=0A=
                nOverlays;=0A=
        =0A=
            if (overlay instanceof Overlay) {=0A=
=0A=
                overlay.cfg.addProperty("manager", { value: this } );=0A=
=0A=
                overlay.focusEvent =3D overlay.createEvent("focus");=0A=
                overlay.focusEvent.signature =3D CustomEvent.LIST;=0A=
=0A=
                overlay.blurEvent =3D overlay.createEvent("blur");=0A=
                overlay.blurEvent.signature =3D CustomEvent.LIST;=0A=
        =0A=
                overlay.focus =3D function () {=0A=
                    mgr.focus(this);=0A=
                };=0A=
        =0A=
                overlay.blur =3D function () {=0A=
                    if (mgr.getActive() =3D=3D this) {=0A=
                        Dom.removeClass(this.element, =
OverlayManager.CSS_FOCUSED);=0A=
                        this.blurEvent.fire();=0A=
                    }=0A=
                };=0A=
        =0A=
                overlay.blurEvent.subscribe(mgr._onOverlayBlur);=0A=
                overlay.hideEvent.subscribe(overlay.blur);=0A=
                =0A=
                overlay.destroyEvent.subscribe(this._onOverlayDestroy, =
overlay, this);=0A=
        =0A=
                Event.on(overlay.element, =
this.cfg.getProperty("focusevent"), =0A=
                            this._onOverlayElementFocus, null, overlay);=0A=
        =0A=
                zIndex =3D Dom.getStyle(overlay.element, "zIndex");=0A=
=0A=
                if (!isNaN(zIndex)) {=0A=
                    overlay.cfg.setProperty("zIndex", parseInt(zIndex, =
10));=0A=
                } else {=0A=
                    overlay.cfg.setProperty("zIndex", 0);=0A=
                }=0A=
=0A=
                this.overlays.push(overlay);=0A=
                this.bringToTop(overlay);=0A=
=0A=
                return true;=0A=
=0A=
            } else if (overlay instanceof Array) {=0A=
=0A=
                regcount =3D 0;=0A=
                nOverlays =3D overlay.length;=0A=
=0A=
                for (i =3D 0; i < nOverlays; i++) {=0A=
                    if (this.register(overlay[i])) {=0A=
                        regcount++;=0A=
                    }=0A=
                }=0A=
=0A=
                if (regcount > 0) {=0A=
                    return true;=0A=
                }=0A=
            } else {=0A=
                return false;=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Places the specified Overlay instance on top of all other =0A=
        * Overlay instances.=0A=
        * @method bringToTop=0A=
        * @param {YAHOO.widget.Overlay} p_oOverlay Object representing =
an =0A=
        * Overlay instance.=0A=
        * @param {String} p_oOverlay String representing the id of an =0A=
        * Overlay instance.=0A=
        */        =0A=
        bringToTop: function (p_oOverlay) {=0A=
=0A=
            var oOverlay =3D this.find(p_oOverlay),=0A=
                nTopZIndex,=0A=
                oTopOverlay,=0A=
                aOverlays;=0A=
=0A=
            if (oOverlay) {=0A=
=0A=
                aOverlays =3D this.overlays;=0A=
                aOverlays.sort(this.compareZIndexDesc);=0A=
=0A=
                oTopOverlay =3D aOverlays[0];=0A=
=0A=
                if (oTopOverlay) {=0A=
                    nTopZIndex =3D Dom.getStyle(oTopOverlay.element, =
"zIndex");=0A=
=0A=
                    if (!isNaN(nTopZIndex)) {=0A=
=0A=
                        var bRequiresBump =3D false;=0A=
=0A=
                        if (oTopOverlay !=3D=3D oOverlay) {=0A=
                            bRequiresBump =3D true;=0A=
                        } else if (aOverlays.length > 1) {=0A=
                            var nNextZIndex =3D =
Dom.getStyle(aOverlays[1].element, "zIndex");=0A=
                            // Don't rely on DOM order to stack if 2 =
overlays are at the same zindex.=0A=
                            if (!isNaN(nNextZIndex) && (nTopZIndex =
=3D=3D nNextZIndex)) {=0A=
                                bRequiresBump =3D true;=0A=
                            }=0A=
                        }=0A=
=0A=
                        if (bRequiresBump) {=0A=
                            oOverlay.cfg.setProperty("zindex", =
(parseInt(nTopZIndex, 10) + 2));=0A=
                        }=0A=
                    }=0A=
                    aOverlays.sort(this.compareZIndexDesc);=0A=
                }=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Attempts to locate an Overlay by instance or ID.=0A=
        * @method find=0A=
        * @param {Overlay} overlay  An Overlay to locate within the =
manager=0A=
        * @param {String} overlay  An Overlay id to locate within the =
manager=0A=
        * @return {Overlay} The requested Overlay, if found, or null if =
it =0A=
        * cannot be located.=0A=
        */=0A=
        find: function (overlay) {=0A=
=0A=
            var aOverlays =3D this.overlays,=0A=
                nOverlays =3D aOverlays.length,=0A=
                i;=0A=
=0A=
            if (nOverlays > 0) {=0A=
                i =3D nOverlays - 1;=0A=
=0A=
                if (overlay instanceof Overlay) {=0A=
                    do {=0A=
                        if (aOverlays[i] =3D=3D overlay) {=0A=
                            return aOverlays[i];=0A=
                        }=0A=
                    }=0A=
                    while(i--);=0A=
=0A=
                } else if (typeof overlay =3D=3D "string") {=0A=
                    do {=0A=
                        if (aOverlays[i].id =3D=3D overlay) {=0A=
                            return aOverlays[i];=0A=
                        }=0A=
                    }=0A=
                    while(i--);=0A=
                }=0A=
                return null;=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Used for sorting the manager's Overlays by z-index.=0A=
        * @method compareZIndexDesc=0A=
        * @private=0A=
        * @return {Number} 0, 1, or -1, depending on where the Overlay =
should =0A=
        * fall in the stacking order.=0A=
        */=0A=
        compareZIndexDesc: function (o1, o2) {=0A=
=0A=
            var zIndex1 =3D (o1.cfg) ? o1.cfg.getProperty("zIndex") : =
null, // Sort invalid (destroyed)=0A=
                zIndex2 =3D (o2.cfg) ? o2.cfg.getProperty("zIndex") : =
null; // objects at bottom.=0A=
=0A=
            if (zIndex1 =3D=3D=3D null && zIndex2 =3D=3D=3D null) {=0A=
                return 0;=0A=
            } else if (zIndex1 =3D=3D=3D null){=0A=
                return 1;=0A=
            } else if (zIndex2 =3D=3D=3D null) {=0A=
                return -1;=0A=
            } else if (zIndex1 > zIndex2) {=0A=
                return -1;=0A=
            } else if (zIndex1 < zIndex2) {=0A=
                return 1;=0A=
            } else {=0A=
                return 0;=0A=
            }=0A=
        },=0A=
        =0A=
        /**=0A=
        * Shows all Overlays in the manager.=0A=
        * @method showAll=0A=
        */=0A=
        showAll: function () {=0A=
        =0A=
            var aOverlays =3D this.overlays,=0A=
                nOverlays =3D aOverlays.length,=0A=
                i;=0A=
=0A=
            if (nOverlays > 0) {=0A=
                i =3D nOverlays - 1;=0A=
                do {=0A=
                    aOverlays[i].show();=0A=
                }=0A=
                while(i--);=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Hides all Overlays in the manager.=0A=
        * @method hideAll=0A=
        */=0A=
        hideAll: function () {=0A=
        =0A=
            var aOverlays =3D this.overlays,=0A=
                nOverlays =3D aOverlays.length,=0A=
                i;=0A=
=0A=
            if (nOverlays > 0) {=0A=
                i =3D nOverlays - 1;=0A=
                do {=0A=
                    aOverlays[i].hide();=0A=
                }=0A=
                while(i--);=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
        * Returns a string representation of the object.=0A=
        * @method toString=0A=
        * @return {String} The string representation of the =
OverlayManager=0A=
        */=0A=
        toString: function () {=0A=
            return "OverlayManager";=0A=
        }=0A=
    };=0A=
=0A=
}());=0A=
=0A=
(function () {=0A=
=0A=
    /**=0A=
    * ContainerEffect encapsulates animation transitions that are =
executed when =0A=
    * an Overlay is shown or hidden.=0A=
    * @namespace YAHOO.widget=0A=
    * @class ContainerEffect=0A=
    * @constructor=0A=
    * @param {YAHOO.widget.Overlay} overlay The Overlay that the =
animation =0A=
    * should be associated with=0A=
    * @param {Object} attrIn The object literal representing the =
animation =0A=
    * arguments to be used for the animate-in transition. The arguments =
for =0A=
    * this literal are: attributes(object, see YAHOO.util.Anim for =
description), =0A=
    * duration(Number), and method(i.e. Easing.easeIn).=0A=
    * @param {Object} attrOut The object literal representing the =
animation =0A=
    * arguments to be used for the animate-out transition. The arguments =
for  =0A=
    * this literal are: attributes(object, see YAHOO.util.Anim for =
description), =0A=
    * duration(Number), and method(i.e. Easing.easeIn).=0A=
    * @param {HTMLElement} targetElement Optional. The target element =
that  =0A=
    * should be animated during the transition. Defaults to =
overlay.element.=0A=
    * @param {class} Optional. The animation class to instantiate. =
Defaults to =0A=
    * YAHOO.util.Anim. Other options include YAHOO.util.Motion.=0A=
    */=0A=
    YAHOO.widget.ContainerEffect =3D =0A=
    =0A=
        function (overlay, attrIn, attrOut, targetElement, animClass) {=0A=
    =0A=
        if (!animClass) {=0A=
            animClass =3D YAHOO.util.Anim;=0A=
        }=0A=
        =0A=
        /**=0A=
        * The overlay to animate=0A=
        * @property overlay=0A=
        * @type YAHOO.widget.Overlay=0A=
        */=0A=
        this.overlay =3D overlay;=0A=
    =0A=
        /**=0A=
        * The animation attributes to use when transitioning into view=0A=
        * @property attrIn=0A=
        * @type Object=0A=
        */=0A=
        this.attrIn =3D attrIn;=0A=
    =0A=
        /**=0A=
        * The animation attributes to use when transitioning out of view=0A=
        * @property attrOut=0A=
        * @type Object=0A=
        */=0A=
        this.attrOut =3D attrOut;=0A=
    =0A=
        /**=0A=
        * The target element to be animated=0A=
        * @property targetElement=0A=
        * @type HTMLElement=0A=
        */=0A=
        this.targetElement =3D targetElement || overlay.element;=0A=
    =0A=
        /**=0A=
        * The animation class to use for animating the overlay=0A=
        * @property animClass=0A=
        * @type class=0A=
        */=0A=
        this.animClass =3D animClass;=0A=
    =0A=
    };=0A=
=0A=
=0A=
    var Dom =3D YAHOO.util.Dom,=0A=
        CustomEvent =3D YAHOO.util.CustomEvent,=0A=
        Easing =3D YAHOO.util.Easing,=0A=
        ContainerEffect =3D YAHOO.widget.ContainerEffect;=0A=
=0A=
=0A=
    /**=0A=
    * A pre-configured ContainerEffect instance that can be used for =
fading =0A=
    * an overlay in and out.=0A=
    * @method FADE=0A=
    * @static=0A=
    * @param {YAHOO.widget.Overlay} overlay The Overlay object to animate=0A=
    * @param {Number} dur The duration of the animation=0A=
    * @return {YAHOO.widget.ContainerEffect} The configured =
ContainerEffect object=0A=
    */=0A=
    ContainerEffect.FADE =3D function (overlay, dur) {=0A=
=0A=
        var fin =3D {=0A=
            attributes: {opacity:{from:0, to:1}},=0A=
            duration: dur,=0A=
            method: Easing.easeIn=0A=
        };=0A=
=0A=
        var fout =3D {=0A=
            attributes: {opacity:{to:0}},=0A=
            duration: dur,=0A=
            method: Easing.easeOut=0A=
        };=0A=
=0A=
        var fade =3D new ContainerEffect(overlay, fin, fout, =
overlay.element);=0A=
=0A=
        fade.handleUnderlayStart =3D function() {=0A=
            var underlay =3D this.overlay.underlay;=0A=
            if (underlay && YAHOO.env.ua.ie) {=0A=
                var hasFilters =3D (underlay.filters && =
underlay.filters.length > 0);=0A=
                if(hasFilters) {=0A=
                    Dom.addClass(overlay.element, "yui-effect-fade");=0A=
                }=0A=
            }=0A=
        };=0A=
=0A=
        fade.handleUnderlayComplete =3D function() {=0A=
            var underlay =3D this.overlay.underlay;=0A=
            if (underlay && YAHOO.env.ua.ie) {=0A=
                Dom.removeClass(overlay.element, "yui-effect-fade");=0A=
            }=0A=
        };=0A=
=0A=
        fade.handleStartAnimateIn =3D function (type,args,obj) {=0A=
            Dom.addClass(obj.overlay.element, "hide-select");=0A=
=0A=
            if (!obj.overlay.underlay) {=0A=
                obj.overlay.cfg.refireEvent("underlay");=0A=
            }=0A=
=0A=
            obj.handleUnderlayStart();=0A=
=0A=
            Dom.setStyle(obj.overlay.element, "visibility", "visible");=0A=
            Dom.setStyle(obj.overlay.element, "opacity", 0);=0A=
        };=0A=
=0A=
        fade.handleCompleteAnimateIn =3D function (type,args,obj) {=0A=
            Dom.removeClass(obj.overlay.element, "hide-select");=0A=
=0A=
            if (obj.overlay.element.style.filter) {=0A=
                obj.overlay.element.style.filter =3D null;=0A=
            }=0A=
=0A=
            obj.handleUnderlayComplete();=0A=
=0A=
            obj.overlay.cfg.refireEvent("iframe");=0A=
            obj.animateInCompleteEvent.fire();=0A=
        };=0A=
=0A=
        fade.handleStartAnimateOut =3D function (type, args, obj) {=0A=
            Dom.addClass(obj.overlay.element, "hide-select");=0A=
            obj.handleUnderlayStart();=0A=
        };=0A=
=0A=
        fade.handleCompleteAnimateOut =3D  function (type, args, obj) {=0A=
            Dom.removeClass(obj.overlay.element, "hide-select");=0A=
            if (obj.overlay.element.style.filter) {=0A=
                obj.overlay.element.style.filter =3D null;=0A=
            }=0A=
            Dom.setStyle(obj.overlay.element, "visibility", "hidden");=0A=
            Dom.setStyle(obj.overlay.element, "opacity", 1);=0A=
=0A=
            obj.handleUnderlayComplete();=0A=
=0A=
            obj.overlay.cfg.refireEvent("iframe");=0A=
            obj.animateOutCompleteEvent.fire();=0A=
        };=0A=
=0A=
        fade.init();=0A=
        return fade;=0A=
    };=0A=
    =0A=
    =0A=
    /**=0A=
    * A pre-configured ContainerEffect instance that can be used for =
sliding an =0A=
    * overlay in and out.=0A=
    * @method SLIDE=0A=
    * @static=0A=
    * @param {YAHOO.widget.Overlay} overlay The Overlay object to animate=0A=
    * @param {Number} dur The duration of the animation=0A=
    * @return {YAHOO.widget.ContainerEffect} The configured =
ContainerEffect object=0A=
    */=0A=
    ContainerEffect.SLIDE =3D function (overlay, dur) {=0A=
    =0A=
        var x =3D overlay.cfg.getProperty("x") || =
Dom.getX(overlay.element),=0A=
    =0A=
            y =3D overlay.cfg.getProperty("y") || =
Dom.getY(overlay.element),=0A=
    =0A=
            clientWidth =3D Dom.getClientWidth(),=0A=
    =0A=
            offsetWidth =3D overlay.element.offsetWidth,=0A=
    =0A=
            slide =3D new ContainerEffect(overlay, =0A=
            =0A=
            { attributes: { points: { to: [x, y] } },=0A=
                duration: dur,=0A=
                method: Easing.easeIn },=0A=
    =0A=
            { attributes: { points: { to: [(clientWidth + 25), y] } },=0A=
                duration: dur,=0A=
                method: Easing.easeOut },=0A=
    =0A=
            overlay.element, YAHOO.util.Motion);=0A=
        =0A=
        =0A=
        slide.handleStartAnimateIn =3D function (type,args,obj) {=0A=
            obj.overlay.element.style.left =3D ((-25) - offsetWidth) + =
"px";=0A=
            obj.overlay.element.style.top  =3D y + "px";=0A=
        };=0A=
        =0A=
        slide.handleTweenAnimateIn =3D function (type, args, obj) {=0A=
        =0A=
            var pos =3D Dom.getXY(obj.overlay.element),=0A=
                currentX =3D pos[0],=0A=
                currentY =3D pos[1];=0A=
        =0A=
            if (Dom.getStyle(obj.overlay.element, "visibility") =3D=3D =0A=
                "hidden" && currentX < x) {=0A=
=0A=
                Dom.setStyle(obj.overlay.element, "visibility", =
"visible");=0A=
=0A=
            }=0A=
        =0A=
            obj.overlay.cfg.setProperty("xy", [currentX, currentY], =
true);=0A=
            obj.overlay.cfg.refireEvent("iframe");=0A=
        };=0A=
        =0A=
        slide.handleCompleteAnimateIn =3D function (type, args, obj) {=0A=
            obj.overlay.cfg.setProperty("xy", [x, y], true);=0A=
            obj.startX =3D x;=0A=
            obj.startY =3D y;=0A=
            obj.overlay.cfg.refireEvent("iframe");=0A=
            obj.animateInCompleteEvent.fire();=0A=
        };=0A=
        =0A=
        slide.handleStartAnimateOut =3D function (type, args, obj) {=0A=
    =0A=
            var vw =3D Dom.getViewportWidth(),=0A=
                pos =3D Dom.getXY(obj.overlay.element),=0A=
                yso =3D pos[1];=0A=
    =0A=
            obj.animOut.attributes.points.to =3D [(vw + 25), yso];=0A=
        };=0A=
        =0A=
        slide.handleTweenAnimateOut =3D function (type, args, obj) {=0A=
    =0A=
            var pos =3D Dom.getXY(obj.overlay.element),=0A=
                xto =3D pos[0],=0A=
                yto =3D pos[1];=0A=
        =0A=
            obj.overlay.cfg.setProperty("xy", [xto, yto], true);=0A=
            obj.overlay.cfg.refireEvent("iframe");=0A=
        };=0A=
        =0A=
        slide.handleCompleteAnimateOut =3D function (type, args, obj) {=0A=
            Dom.setStyle(obj.overlay.element, "visibility", "hidden");=0A=
        =0A=
            obj.overlay.cfg.setProperty("xy", [x, y]);=0A=
            obj.animateOutCompleteEvent.fire();=0A=
        };=0A=
        =0A=
        slide.init();=0A=
        return slide;=0A=
    };=0A=
    =0A=
    ContainerEffect.prototype =3D {=0A=
    =0A=
        /**=0A=
        * Initializes the animation classes and events.=0A=
        * @method init=0A=
        */=0A=
        init: function () {=0A=
=0A=
            this.beforeAnimateInEvent =3D =
this.createEvent("beforeAnimateIn");=0A=
            this.beforeAnimateInEvent.signature =3D CustomEvent.LIST;=0A=
            =0A=
            this.beforeAnimateOutEvent =3D =
this.createEvent("beforeAnimateOut");=0A=
            this.beforeAnimateOutEvent.signature =3D CustomEvent.LIST;=0A=
        =0A=
            this.animateInCompleteEvent =3D =
this.createEvent("animateInComplete");=0A=
            this.animateInCompleteEvent.signature =3D CustomEvent.LIST;=0A=
        =0A=
            this.animateOutCompleteEvent =3D =0A=
                this.createEvent("animateOutComplete");=0A=
            this.animateOutCompleteEvent.signature =3D CustomEvent.LIST;=0A=
        =0A=
            this.animIn =3D new this.animClass(this.targetElement, =0A=
                this.attrIn.attributes, this.attrIn.duration, =0A=
                this.attrIn.method);=0A=
=0A=
            this.animIn.onStart.subscribe(this.handleStartAnimateIn, =
this);=0A=
            this.animIn.onTween.subscribe(this.handleTweenAnimateIn, =
this);=0A=
=0A=
            =
this.animIn.onComplete.subscribe(this.handleCompleteAnimateIn, =0A=
                this);=0A=
        =0A=
            this.animOut =3D new this.animClass(this.targetElement, =0A=
                this.attrOut.attributes, this.attrOut.duration, =0A=
                this.attrOut.method);=0A=
=0A=
            this.animOut.onStart.subscribe(this.handleStartAnimateOut, =
this);=0A=
            this.animOut.onTween.subscribe(this.handleTweenAnimateOut, =
this);=0A=
            =
this.animOut.onComplete.subscribe(this.handleCompleteAnimateOut, =0A=
                this);=0A=
=0A=
        },=0A=
        =0A=
        /**=0A=
        * Triggers the in-animation.=0A=
        * @method animateIn=0A=
        */=0A=
        animateIn: function () {=0A=
            this.beforeAnimateInEvent.fire();=0A=
            this.animIn.animate();=0A=
        },=0A=
        =0A=
        /**=0A=
        * Triggers the out-animation.=0A=
        * @method animateOut=0A=
        */=0A=
        animateOut: function () {=0A=
            this.beforeAnimateOutEvent.fire();=0A=
            this.animOut.animate();=0A=
        },=0A=
        =0A=
        /**=0A=
        * The default onStart handler for the in-animation.=0A=
        * @method handleStartAnimateIn=0A=
        * @param {String} type The CustomEvent type=0A=
        * @param {Object[]} args The CustomEvent arguments=0A=
        * @param {Object} obj The scope object=0A=
        */=0A=
        handleStartAnimateIn: function (type, args, obj) { },=0A=
    =0A=
        /**=0A=
        * The default onTween handler for the in-animation.=0A=
        * @method handleTweenAnimateIn=0A=
        * @param {String} type The CustomEvent type=0A=
        * @param {Object[]} args The CustomEvent arguments=0A=
        * @param {Object} obj The scope object=0A=
        */=0A=
        handleTweenAnimateIn: function (type, args, obj) { },=0A=
    =0A=
        /**=0A=
        * The default onComplete handler for the in-animation.=0A=
        * @method handleCompleteAnimateIn=0A=
        * @param {String} type The CustomEvent type=0A=
        * @param {Object[]} args The CustomEvent arguments=0A=
        * @param {Object} obj The scope object=0A=
        */=0A=
        handleCompleteAnimateIn: function (type, args, obj) { },=0A=
        =0A=
        /**=0A=
        * The default onStart handler for the out-animation.=0A=
        * @method handleStartAnimateOut=0A=
        * @param {String} type The CustomEvent type=0A=
        * @param {Object[]} args The CustomEvent arguments=0A=
        * @param {Object} obj The scope object=0A=
        */=0A=
        handleStartAnimateOut: function (type, args, obj) { },=0A=
    =0A=
        /**=0A=
        * The default onTween handler for the out-animation.=0A=
        * @method handleTweenAnimateOut=0A=
        * @param {String} type The CustomEvent type=0A=
        * @param {Object[]} args The CustomEvent arguments=0A=
        * @param {Object} obj The scope object=0A=
        */=0A=
        handleTweenAnimateOut: function (type, args, obj) { },=0A=
    =0A=
        /**=0A=
        * The default onComplete handler for the out-animation.=0A=
        * @method handleCompleteAnimateOut=0A=
        * @param {String} type The CustomEvent type=0A=
        * @param {Object[]} args The CustomEvent arguments=0A=
        * @param {Object} obj The scope object=0A=
        */=0A=
        handleCompleteAnimateOut: function (type, args, obj) { },=0A=
        =0A=
        /**=0A=
        * Returns a string representation of the object.=0A=
        * @method toString=0A=
        * @return {String} The string representation of the =
ContainerEffect=0A=
        */=0A=
        toString: function () {=0A=
            var output =3D "ContainerEffect";=0A=
            if (this.overlay) {=0A=
                output +=3D " [" + this.overlay.toString() + "]";=0A=
            }=0A=
            return output;=0A=
        }=0A=
    =0A=
    };=0A=
=0A=
    YAHOO.lang.augmentProto(ContainerEffect, YAHOO.util.EventProvider);=0A=
=0A=
})();=0A=
=0A=
YAHOO.register("containercore", YAHOO.widget.Module, {version: "2.4.1", =
build: "742"});=0A=

------=_NextPart_000_0000_01C96F37.0B054930
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.dcschools.com/fileadmin/templates/js/menu.js

/*=0A=
Copyright (c) 2007, Yahoo! Inc. All rights reserved.=0A=
Code licensed under the BSD License:=0A=
http://developer.yahoo.net/yui/license.txt=0A=
version: 2.4.1=0A=
*/=0A=
=0A=
=0A=
/**=0A=
* @module menu=0A=
* @description <p>The Menu family of components features a collection of =0A=
* controls that make it easy to add menus to your website or web =
application.  =0A=
* With the Menu Controls you can create website fly-out menus, =
customized =0A=
* context menus, or application-style menu bars with just a small amount =
of =0A=
* scripting.</p><p>The Menu family of controls features:</p>=0A=
* <ul>=0A=
*    <li>Keyboard and mouse navigation.</li>=0A=
*    <li>A rich event model that provides access to all of a menu's =0A=
*    interesting moments.</li>=0A=
*    <li>Support for =0A=
*    <a =
href=3D"http://en.wikipedia.org/wiki/Progressive_Enhancement">Progressive=0A=
*    Enhancement</a>; Menus can be created from simple, =0A=
*    semantic markup on the page or purely through JavaScript.</li>=0A=
* </ul>=0A=
* @title Menu=0A=
* @namespace YAHOO.widget=0A=
* @requires Event, Dom, Container=0A=
*/=0A=
(function () {=0A=
=0A=
    var Dom =3D YAHOO.util.Dom,=0A=
        Event =3D YAHOO.util.Event;=0A=
=0A=
=0A=
    /**=0A=
    * Singleton that manages a collection of all menus and menu items.  =
Listens =0A=
    * for DOM events at the document level and dispatches the events to =
the =0A=
    * corresponding menu or menu item.=0A=
    *=0A=
    * @namespace YAHOO.widget=0A=
    * @class MenuManager=0A=
    * @static=0A=
    */=0A=
    YAHOO.widget.MenuManager =3D function () {=0A=
    =0A=
        // Private member variables=0A=
    =0A=
    =0A=
        // Flag indicating if the DOM event handlers have been attached=0A=
    =0A=
        var m_bInitializedEventHandlers =3D false,=0A=
    =0A=
    =0A=
        // Collection of menus=0A=
=0A=
        m_oMenus =3D {},=0A=
=0A=
=0A=
        // Collection of visible menus=0A=
    =0A=
        m_oVisibleMenus =3D {},=0A=
    =0A=
    =0A=
        //  Collection of menu items =0A=
=0A=
        m_oItems =3D {},=0A=
=0A=
=0A=
        // Map of DOM event types to their equivalent CustomEvent types=0A=
        =0A=
        m_oEventTypes =3D {=0A=
            "click": "clickEvent",=0A=
            "mousedown": "mouseDownEvent",=0A=
            "mouseup": "mouseUpEvent",=0A=
            "mouseover": "mouseOverEvent",=0A=
            "mouseout": "mouseOutEvent",=0A=
            "keydown": "keyDownEvent",=0A=
            "keyup": "keyUpEvent",=0A=
            "keypress": "keyPressEvent"=0A=
        },=0A=
    =0A=
    =0A=
        m_oFocusedMenuItem =3D null;=0A=
    =0A=
    =0A=
    =0A=
    =0A=
    =0A=
        // Private methods=0A=
    =0A=
    =0A=
        /**=0A=
        * @method getMenuRootElement=0A=
        * @description Finds the root DIV node of a menu or the root LI =
node of =0A=
        * a menu item.=0A=
        * @private=0A=
        * @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
        * level-one-html.html#ID-58190037">HTMLElement</a>} p_oElement =
Object =0A=
        * specifying an HTML element.=0A=
        */=0A=
        function getMenuRootElement(p_oElement) {=0A=
        =0A=
            var oParentNode;=0A=
    =0A=
            if (p_oElement && p_oElement.tagName) {=0A=
            =0A=
                switch (p_oElement.tagName.toUpperCase()) {=0A=
                        =0A=
                case "DIV":=0A=
    =0A=
                    oParentNode =3D p_oElement.parentNode;=0A=
    =0A=
                    // Check if the DIV is the inner "body" node of a =
menu=0A=
=0A=
                    if (=0A=
                        (=0A=
                            Dom.hasClass(p_oElement, "hd") ||=0A=
                            Dom.hasClass(p_oElement, "bd") ||=0A=
                            Dom.hasClass(p_oElement, "ft")=0A=
                        ) && =0A=
                        oParentNode && =0A=
                        oParentNode.tagName && =0A=
                        oParentNode.tagName.toUpperCase() =3D=3D "DIV") =0A=
                    {=0A=
                    =0A=
                        return oParentNode;=0A=
                    =0A=
                    }=0A=
                    else {=0A=
                    =0A=
                        return p_oElement;=0A=
                    =0A=
                    }=0A=
                =0A=
                    break;=0A=
=0A=
                case "LI":=0A=
    =0A=
                    return p_oElement;=0A=
=0A=
                default:=0A=
    =0A=
                    oParentNode =3D p_oElement.parentNode;=0A=
    =0A=
                    if (oParentNode) {=0A=
                    =0A=
                        return getMenuRootElement(oParentNode);=0A=
                    =0A=
                    }=0A=
                =0A=
                    break;=0A=
                =0A=
                }=0A=
    =0A=
            }=0A=
            =0A=
        }=0A=
    =0A=
    =0A=
    =0A=
        // Private event handlers=0A=
    =0A=
    =0A=
        /**=0A=
        * @method onDOMEvent=0A=
        * @description Generic, global event handler for all of a menu's =0A=
        * DOM-based events.  This listens for events against the =
document =0A=
        * object.  If the target of a given event is a member of a menu =
or =0A=
        * menu item's DOM, the instance's corresponding Custom Event is =
fired.=0A=
        * @private=0A=
        * @param {Event} p_oEvent Object representing the DOM event =
object  =0A=
        * passed back by the event utility (YAHOO.util.Event).=0A=
        */=0A=
        function onDOMEvent(p_oEvent) {=0A=
    =0A=
            // Get the target node of the DOM event=0A=
        =0A=
            var oTarget =3D Event.getTarget(p_oEvent),=0A=
                =0A=
            // See if the target of the event was a menu, or a menu item=0A=
    =0A=
            oElement =3D getMenuRootElement(oTarget),=0A=
            sCustomEventType,=0A=
            sTagName,=0A=
            sId,=0A=
            oMenuItem,=0A=
            oMenu; =0A=
    =0A=
    =0A=
            if (oElement) {=0A=
    =0A=
                sTagName =3D oElement.tagName.toUpperCase();=0A=
        =0A=
                if (sTagName =3D=3D "LI") {=0A=
            =0A=
                    sId =3D oElement.id;=0A=
            =0A=
                    if (sId && m_oItems[sId]) {=0A=
            =0A=
                        oMenuItem =3D m_oItems[sId];=0A=
                        oMenu =3D oMenuItem.parent;=0A=
            =0A=
                    }=0A=
                =0A=
                }=0A=
                else if (sTagName =3D=3D "DIV") {=0A=
                =0A=
                    if (oElement.id) {=0A=
                    =0A=
                        oMenu =3D m_oMenus[oElement.id];=0A=
                    =0A=
                    }=0A=
                =0A=
                }=0A=
    =0A=
            }=0A=
    =0A=
    =0A=
            if (oMenu) {=0A=
    =0A=
                sCustomEventType =3D m_oEventTypes[p_oEvent.type];=0A=
    =0A=
    =0A=
                // Fire the Custom Event that corresponds the current =
DOM event    =0A=
        =0A=
                if (oMenuItem && !oMenuItem.cfg.getProperty("disabled")) =
{=0A=
    =0A=
                    oMenuItem[sCustomEventType].fire(p_oEvent);          =
         =0A=
    =0A=
    =0A=
                    if (=0A=
                            p_oEvent.type =3D=3D "keyup" || =0A=
                            p_oEvent.type =3D=3D "mousedown") =0A=
                    {=0A=
    =0A=
                        if (m_oFocusedMenuItem !=3D oMenuItem) {=0A=
                        =0A=
                            if (m_oFocusedMenuItem) {=0A=
    =0A=
                                m_oFocusedMenuItem.blurEvent.fire();=0A=
                            =0A=
                            }=0A=
    =0A=
                            oMenuItem.focusEvent.fire();=0A=
                        =0A=
                        }=0A=
                    =0A=
                    }=0A=
    =0A=
                }=0A=
        =0A=
                oMenu[sCustomEventType].fire(p_oEvent, oMenuItem);=0A=
            =0A=
            }=0A=
            else if (p_oEvent.type =3D=3D "mousedown") {=0A=
    =0A=
                if (m_oFocusedMenuItem) {=0A=
    =0A=
                    m_oFocusedMenuItem.blurEvent.fire();=0A=
    =0A=
                    m_oFocusedMenuItem =3D null;=0A=
    =0A=
                }=0A=
    =0A=
    =0A=
                /*=0A=
                    If the target of the event wasn't a menu, hide all =0A=
                    dynamically positioned menus=0A=
                */=0A=
                =0A=
                for (var i in m_oVisibleMenus) {=0A=
        =0A=
                    if (YAHOO.lang.hasOwnProperty(m_oVisibleMenus, i)) {=0A=
        =0A=
                        oMenu =3D m_oVisibleMenus[i];=0A=
        =0A=
                        if (oMenu.cfg.getProperty("clicktohide") && =0A=
                            !(oMenu instanceof YAHOO.widget.MenuBar) && =0A=
                            oMenu.cfg.getProperty("position") =3D=3D =
"dynamic") {=0A=
        =0A=
                            oMenu.hide();=0A=
        =0A=
                        }=0A=
                        else {=0A=
    =0A=
                            oMenu.clearActiveItem(true);=0A=
        =0A=
                        }=0A=
        =0A=
                    }=0A=
        =0A=
                } =0A=
    =0A=
            }=0A=
            else if (p_oEvent.type =3D=3D "keyup") { =0A=
    =0A=
                if (m_oFocusedMenuItem) {=0A=
    =0A=
                    m_oFocusedMenuItem.blurEvent.fire();=0A=
    =0A=
                    m_oFocusedMenuItem =3D null;=0A=
    =0A=
                }=0A=
    =0A=
            }=0A=
    =0A=
        }=0A=
    =0A=
    =0A=
        /**=0A=
        * @method onMenuDestroy=0A=
        * @description "destroy" event handler for a menu.=0A=
        * @private=0A=
        * @param {String} p_sType String representing the name of the =
event =0A=
        * that was fired.=0A=
        * @param {Array} p_aArgs Array of arguments sent when the event =0A=
        * was fired.=0A=
        * @param {YAHOO.widget.Menu} p_oMenu The menu that fired the =
event.=0A=
        */=0A=
        function onMenuDestroy(p_sType, p_aArgs, p_oMenu) {=0A=
    =0A=
            if (m_oMenus[p_oMenu.id]) {=0A=
    =0A=
                this.removeMenu(p_oMenu);=0A=
    =0A=
            }=0A=
    =0A=
        }=0A=
    =0A=
    =0A=
        /**=0A=
        * @method onMenuFocus=0A=
        * @description "focus" event handler for a MenuItem instance.=0A=
        * @private=0A=
        * @param {String} p_sType String representing the name of the =
event =0A=
        * that was fired.=0A=
        * @param {Array} p_aArgs Array of arguments sent when the event =0A=
        * was fired.=0A=
        */=0A=
        function onMenuFocus(p_sType, p_aArgs) {=0A=
    =0A=
            var oItem =3D p_aArgs[0];=0A=
    =0A=
            if (oItem) {=0A=
    =0A=
                m_oFocusedMenuItem =3D oItem;=0A=
            =0A=
            }=0A=
    =0A=
        }=0A=
    =0A=
    =0A=
        /**=0A=
        * @method onMenuBlur=0A=
        * @description "blur" event handler for a MenuItem instance.=0A=
        * @private=0A=
        * @param {String} p_sType String representing the name of the =
event  =0A=
        * that was fired.=0A=
        * @param {Array} p_aArgs Array of arguments sent when the event =0A=
        * was fired.=0A=
        */=0A=
        function onMenuBlur(p_sType, p_aArgs) {=0A=
    =0A=
            m_oFocusedMenuItem =3D null;=0A=
    =0A=
        }=0A=
    =0A=
    =0A=
    =0A=
        /**=0A=
        * @method onMenuVisibleConfigChange=0A=
        * @description Event handler for when the "visible" =
configuration  =0A=
        * property of a Menu instance changes.=0A=
        * @private=0A=
        * @param {String} p_sType String representing the name of the =
event  =0A=
        * that was fired.=0A=
        * @param {Array} p_aArgs Array of arguments sent when the event =0A=
        * was fired.=0A=
        */=0A=
        function onMenuVisibleConfigChange(p_sType, p_aArgs) {=0A=
    =0A=
            var bVisible =3D p_aArgs[0],=0A=
                sId =3D this.id;=0A=
            =0A=
            if (bVisible) {=0A=
    =0A=
                m_oVisibleMenus[sId] =3D this;=0A=
                =0A=
            =0A=
            }=0A=
            else if (m_oVisibleMenus[sId]) {=0A=
            =0A=
                delete m_oVisibleMenus[sId];=0A=
                =0A=
            =0A=
            }=0A=
        =0A=
        }=0A=
    =0A=
    =0A=
        /**=0A=
        * @method onItemDestroy=0A=
        * @description "destroy" event handler for a MenuItem instance.=0A=
        * @private=0A=
        * @param {String} p_sType String representing the name of the =
event  =0A=
        * that was fired.=0A=
        * @param {Array} p_aArgs Array of arguments sent when the event =0A=
        * was fired.=0A=
        */=0A=
        function onItemDestroy(p_sType, p_aArgs) {=0A=
    =0A=
            removeItem(this);=0A=
    =0A=
        }=0A=
=0A=
    =0A=
        function removeItem(p_oMenuItem) {=0A=
=0A=
            var sId =3D p_oMenuItem.id;=0A=
    =0A=
            if (sId && m_oItems[sId]) {=0A=
    =0A=
                if (m_oFocusedMenuItem =3D=3D p_oMenuItem) {=0A=
    =0A=
                    m_oFocusedMenuItem =3D null;=0A=
    =0A=
                }=0A=
    =0A=
                delete m_oItems[sId];=0A=
                =0A=
                p_oMenuItem.destroyEvent.unsubscribe(onItemDestroy);=0A=
    =0A=
    =0A=
            }=0A=
=0A=
        }=0A=
    =0A=
    =0A=
        /**=0A=
        * @method onItemAdded=0A=
        * @description "itemadded" event handler for a Menu instance.=0A=
        * @private=0A=
        * @param {String} p_sType String representing the name of the =
event  =0A=
        * that was fired.=0A=
        * @param {Array} p_aArgs Array of arguments sent when the event =0A=
        * was fired.=0A=
        */=0A=
        function onItemAdded(p_sType, p_aArgs) {=0A=
    =0A=
            var oItem =3D p_aArgs[0],=0A=
                sId;=0A=
    =0A=
            if (oItem instanceof YAHOO.widget.MenuItem) { =0A=
    =0A=
                sId =3D oItem.id;=0A=
        =0A=
                if (!m_oItems[sId]) {=0A=
            =0A=
                    m_oItems[sId] =3D oItem;=0A=
        =0A=
                    oItem.destroyEvent.subscribe(onItemDestroy);=0A=
        =0A=
        =0A=
                }=0A=
    =0A=
            }=0A=
        =0A=
        }=0A=
    =0A=
    =0A=
        return {=0A=
    =0A=
            // Privileged methods=0A=
    =0A=
    =0A=
            /**=0A=
            * @method addMenu=0A=
            * @description Adds a menu to the collection of known menus.=0A=
            * @param {YAHOO.widget.Menu} p_oMenu Object specifying the =
Menu  =0A=
            * instance to be added.=0A=
            */=0A=
            addMenu: function (p_oMenu) {=0A=
    =0A=
                var oDoc;=0A=
    =0A=
                if (p_oMenu instanceof YAHOO.widget.Menu && p_oMenu.id =
&& =0A=
                    !m_oMenus[p_oMenu.id]) {=0A=
        =0A=
                    m_oMenus[p_oMenu.id] =3D p_oMenu;=0A=
                =0A=
            =0A=
                    if (!m_bInitializedEventHandlers) {=0A=
            =0A=
                        oDoc =3D document;=0A=
                =0A=
                        Event.on(oDoc, "mouseover", onDOMEvent, this, =
true);=0A=
                        Event.on(oDoc, "mouseout", onDOMEvent, this, =
true);=0A=
                        Event.on(oDoc, "mousedown", onDOMEvent, this, =
true);=0A=
                        Event.on(oDoc, "mouseup", onDOMEvent, this, =
true);=0A=
                        Event.on(oDoc, "click", onDOMEvent, this, true);=0A=
                        Event.on(oDoc, "keydown", onDOMEvent, this, =
true);=0A=
                        Event.on(oDoc, "keyup", onDOMEvent, this, true);=0A=
                        Event.on(oDoc, "keypress", onDOMEvent, this, =
true);=0A=
    =0A=
    =0A=
                        m_bInitializedEventHandlers =3D true;=0A=
                        =0A=
            =0A=
                    }=0A=
            =0A=
                    p_oMenu.cfg.subscribeToConfigEvent("visible", =0A=
                        onMenuVisibleConfigChange);=0A=
=0A=
                    p_oMenu.destroyEvent.subscribe(onMenuDestroy, =
p_oMenu, =0A=
                                            this);=0A=
            =0A=
                    p_oMenu.itemAddedEvent.subscribe(onItemAdded);=0A=
                    p_oMenu.focusEvent.subscribe(onMenuFocus);=0A=
                    p_oMenu.blurEvent.subscribe(onMenuBlur);=0A=
        =0A=
        =0A=
                }=0A=
        =0A=
            },=0A=
    =0A=
        =0A=
            /**=0A=
            * @method removeMenu=0A=
            * @description Removes a menu from the collection of known =
menus.=0A=
            * @param {YAHOO.widget.Menu} p_oMenu Object specifying the =
Menu  =0A=
            * instance to be removed.=0A=
            */=0A=
            removeMenu: function (p_oMenu) {=0A=
    =0A=
                var sId,=0A=
                    aItems,=0A=
                    i;=0A=
        =0A=
                if (p_oMenu) {=0A=
    =0A=
                    sId =3D p_oMenu.id;=0A=
        =0A=
                    if (m_oMenus[sId] =3D=3D p_oMenu) {=0A=
=0A=
                        // Unregister each menu item=0A=
=0A=
                        aItems =3D p_oMenu.getItems();=0A=
=0A=
                        if (aItems && aItems.length > 0) {=0A=
=0A=
                            i =3D aItems.length - 1;=0A=
=0A=
                            do {=0A=
=0A=
                                removeItem(aItems[i]);=0A=
=0A=
                            }=0A=
                            while (i--);=0A=
=0A=
                        }=0A=
=0A=
=0A=
                        // Unregister the menu=0A=
=0A=
                        delete m_oMenus[sId];=0A=
            =0A=
        =0A=
=0A=
                        /*=0A=
                             Unregister the menu from the collection of =0A=
                             visible menus=0A=
                        */=0A=
=0A=
                        if (m_oVisibleMenus[sId] =3D=3D p_oMenu) {=0A=
            =0A=
                            delete m_oVisibleMenus[sId];=0A=
                            =0A=
       =0A=
                        }=0A=
=0A=
=0A=
                        // Unsubscribe event listeners=0A=
=0A=
                        if (p_oMenu.cfg) {=0A=
=0A=
                            =
p_oMenu.cfg.unsubscribeFromConfigEvent("visible", =0A=
                                onMenuVisibleConfigChange);=0A=
                            =0A=
                        }=0A=
=0A=
                        p_oMenu.destroyEvent.unsubscribe(onMenuDestroy, =0A=
                            p_oMenu);=0A=
                =0A=
                        p_oMenu.itemAddedEvent.unsubscribe(onItemAdded);=0A=
                        p_oMenu.focusEvent.unsubscribe(onMenuFocus);=0A=
                        p_oMenu.blurEvent.unsubscribe(onMenuBlur);=0A=
=0A=
                    }=0A=
                =0A=
                }=0A=
    =0A=
            },=0A=
        =0A=
        =0A=
            /**=0A=
            * @method hideVisible=0A=
            * @description Hides all visible, dynamically positioned =
menus =0A=
            * (excluding instances of YAHOO.widget.MenuBar).=0A=
            */=0A=
            hideVisible: function () {=0A=
        =0A=
                var oMenu;=0A=
        =0A=
                for (var i in m_oVisibleMenus) {=0A=
        =0A=
                    if (YAHOO.lang.hasOwnProperty(m_oVisibleMenus, i)) {=0A=
        =0A=
                        oMenu =3D m_oVisibleMenus[i];=0A=
        =0A=
                        if (!(oMenu instanceof YAHOO.widget.MenuBar) && =0A=
                            oMenu.cfg.getProperty("position") =3D=3D =
"dynamic") {=0A=
        =0A=
                            oMenu.hide();=0A=
        =0A=
                        }=0A=
        =0A=
                    }=0A=
        =0A=
                }        =0A=
    =0A=
            },=0A=
=0A=
=0A=
            /**=0A=
            * @method getVisible=0A=
            * @description Returns a collection of all visible menus =
registered=0A=
            * with the menu manger.=0A=
            * @return {Array}=0A=
            */=0A=
            getVisible: function () {=0A=
            =0A=
                return m_oVisibleMenus;=0A=
            =0A=
            },=0A=
=0A=
    =0A=
            /**=0A=
            * @method getMenus=0A=
            * @description Returns a collection of all menus registered =
with the =0A=
            * menu manger.=0A=
            * @return {Array}=0A=
            */=0A=
            getMenus: function () {=0A=
    =0A=
                return m_oMenus;=0A=
            =0A=
            },=0A=
    =0A=
    =0A=
            /**=0A=
            * @method getMenu=0A=
            * @description Returns a menu with the specified id.=0A=
            * @param {String} p_sId String specifying the id of the =0A=
            * <code>&#60;div&#62;</code> element representing the menu to=0A=
            * be retrieved.=0A=
            * @return {YAHOO.widget.Menu}=0A=
            */=0A=
            getMenu: function (p_sId) {=0A=
    =0A=
                var oMenu =3D m_oMenus[p_sId];=0A=
        =0A=
                if (oMenu) {=0A=
                =0A=
                    return oMenu;=0A=
                =0A=
                }=0A=
            =0A=
            },=0A=
    =0A=
    =0A=
            /**=0A=
            * @method getMenuItem=0A=
            * @description Returns a menu item with the specified id.=0A=
            * @param {String} p_sId String specifying the id of the =0A=
            * <code>&#60;li&#62;</code> element representing the menu =
item to=0A=
            * be retrieved.=0A=
            * @return {YAHOO.widget.MenuItem}=0A=
            */=0A=
            getMenuItem: function (p_sId) {=0A=
    =0A=
                var oItem =3D m_oItems[p_sId];=0A=
        =0A=
                if (oItem) {=0A=
                =0A=
                    return oItem;=0A=
                =0A=
                }=0A=
            =0A=
            },=0A=
=0A=
=0A=
            /**=0A=
            * @method getMenuItemGroup=0A=
            * @description Returns an array of menu item instances whose =0A=
            * corresponding <code>&#60;li&#62;</code> elements are child =0A=
            * nodes of the <code>&#60;ul&#62;</code> element with the =0A=
            * specified id.=0A=
            * @param {String} p_sId String specifying the id of the =0A=
            * <code>&#60;ul&#62;</code> element representing the group =
of =0A=
            * menu items to be retrieved.=0A=
            * @return {Array}=0A=
            */=0A=
            getMenuItemGroup: function (p_sId) {=0A=
=0A=
                var oUL =3D Dom.get(p_sId),=0A=
                    aItems,=0A=
                    oNode,=0A=
                    oItem,=0A=
                    sId;=0A=
    =0A=
=0A=
                if (oUL && oUL.tagName && =0A=
                    oUL.tagName.toUpperCase() =3D=3D "UL") {=0A=
=0A=
                    oNode =3D oUL.firstChild;=0A=
=0A=
                    if (oNode) {=0A=
=0A=
                        aItems =3D [];=0A=
                        =0A=
                        do {=0A=
=0A=
                            sId =3D oNode.id;=0A=
=0A=
                            if (sId) {=0A=
                            =0A=
                                oItem =3D this.getMenuItem(sId);=0A=
                                =0A=
                                if (oItem) {=0A=
                                =0A=
                                    aItems[aItems.length] =3D oItem;=0A=
                                =0A=
                                }=0A=
                            =0A=
                            }=0A=
                        =0A=
                        }=0A=
                        while ((oNode =3D oNode.nextSibling));=0A=
=0A=
=0A=
                        if (aItems.length > 0) {=0A=
=0A=
                            return aItems;=0A=
                        =0A=
                        }=0A=
=0A=
                    }=0A=
                =0A=
                }=0A=
            =0A=
            },=0A=
=0A=
    =0A=
            /**=0A=
            * @method getFocusedMenuItem=0A=
            * @description Returns a reference to the menu item that =
currently =0A=
            * has focus.=0A=
            * @return {YAHOO.widget.MenuItem}=0A=
            */=0A=
            getFocusedMenuItem: function () {=0A=
    =0A=
                return m_oFocusedMenuItem;=0A=
    =0A=
            },=0A=
    =0A=
    =0A=
            /**=0A=
            * @method getFocusedMenu=0A=
            * @description Returns a reference to the menu that =
currently =0A=
            * has focus.=0A=
            * @return {YAHOO.widget.Menu}=0A=
            */=0A=
            getFocusedMenu: function () {=0A=
    =0A=
                if (m_oFocusedMenuItem) {=0A=
    =0A=
                    return (m_oFocusedMenuItem.parent.getRoot());=0A=
                =0A=
                }=0A=
    =0A=
            },=0A=
    =0A=
        =0A=
            /**=0A=
            * @method toString=0A=
            * @description Returns a string representing the menu =
manager.=0A=
            * @return {String}=0A=
            */=0A=
            toString: function () {=0A=
            =0A=
                return "MenuManager";=0A=
            =0A=
            }=0A=
    =0A=
        };=0A=
    =0A=
    }();=0A=
=0A=
})();=0A=
=0A=
=0A=
=0A=
(function () {=0A=
=0A=
=0A=
/**=0A=
* The Menu class creates a container that holds a vertical list =
representing =0A=
* a set of options or commands.  Menu is the base class for all =0A=
* menu containers. =0A=
* @param {String} p_oElement String specifying the id attribute of the =0A=
* <code>&#60;div&#62;</code> element of the menu.=0A=
* @param {String} p_oElement String specifying the id attribute of the =0A=
* <code>&#60;select&#62;</code> element to be used as the data source =0A=
* for the menu.=0A=
* @param {<a href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
* level-one-html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object =0A=
* specifying the <code>&#60;div&#62;</code> element of the menu.=0A=
* @param {<a href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
* level-one-html.html#ID-94282980">HTMLSelectElement</a>} p_oElement =0A=
* Object specifying the <code>&#60;select&#62;</code> element to be used =
as =0A=
* the data source for the menu.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the menu. See configuration class documentation for =0A=
* more details.=0A=
* @namespace YAHOO.widget=0A=
* @class Menu=0A=
* @constructor=0A=
* @extends YAHOO.widget.Overlay=0A=
*/=0A=
YAHOO.widget.Menu =3D function (p_oElement, p_oConfig) {=0A=
=0A=
    if (p_oConfig) {=0A=
=0A=
        this.parent =3D p_oConfig.parent;=0A=
        this.lazyLoad =3D p_oConfig.lazyLoad || p_oConfig.lazyload;=0A=
        this.itemData =3D p_oConfig.itemData || p_oConfig.itemdata;=0A=
=0A=
    }=0A=
=0A=
=0A=
    YAHOO.widget.Menu.superclass.constructor.call(this, p_oElement, =
p_oConfig);=0A=
=0A=
};=0A=
=0A=
=0A=
=0A=
/**=0A=
* @method checkPosition=0A=
* @description Checks to make sure that the value of the "position" =
property =0A=
* is one of the supported strings. Returns true if the position is =
supported.=0A=
* @private=0A=
* @param {Object} p_sPosition String specifying the position of the menu.=0A=
* @return {Boolean}=0A=
*/=0A=
function checkPosition(p_sPosition) {=0A=
=0A=
    if (typeof p_sPosition =3D=3D "string") {=0A=
=0A=
        return ("dynamic,static".indexOf((p_sPosition.toLowerCase())) =
!=3D -1);=0A=
=0A=
    }=0A=
=0A=
}=0A=
=0A=
=0A=
var Dom =3D YAHOO.util.Dom,=0A=
    Event =3D YAHOO.util.Event,=0A=
    Module =3D YAHOO.widget.Module,=0A=
    Overlay =3D YAHOO.widget.Overlay,=0A=
    Menu =3D YAHOO.widget.Menu,=0A=
    MenuManager =3D YAHOO.widget.MenuManager,=0A=
    CustomEvent =3D YAHOO.util.CustomEvent,=0A=
    Lang =3D YAHOO.lang,=0A=
    UA =3D YAHOO.env.ua,=0A=
    =0A=
    m_oShadowTemplate,=0A=
=0A=
    /**=0A=
    * Constant representing the name of the Menu's events=0A=
    * @property EVENT_TYPES=0A=
    * @private=0A=
    * @final=0A=
    * @type Object=0A=
    */=0A=
    EVENT_TYPES =3D {=0A=
    =0A=
        "MOUSE_OVER": "mouseover",=0A=
        "MOUSE_OUT": "mouseout",=0A=
        "MOUSE_DOWN": "mousedown",=0A=
        "MOUSE_UP": "mouseup",=0A=
        "CLICK": "click",=0A=
        "KEY_PRESS": "keypress",=0A=
        "KEY_DOWN": "keydown",=0A=
        "KEY_UP": "keyup",=0A=
        "FOCUS": "focus",=0A=
        "BLUR": "blur",=0A=
        "ITEM_ADDED": "itemAdded",=0A=
        "ITEM_REMOVED": "itemRemoved"=0A=
    =0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * Constant representing the Menu's configuration properties=0A=
    * @property DEFAULT_CONFIG=0A=
    * @private=0A=
    * @final=0A=
    * @type Object=0A=
    */=0A=
    DEFAULT_CONFIG =3D {=0A=
=0A=
        "VISIBLE": { =0A=
            key: "visible", =0A=
            value: false, =0A=
            validator: Lang.isBoolean=0A=
        }, =0A=
    =0A=
        "CONSTRAIN_TO_VIEWPORT": {=0A=
            key: "constraintoviewport", =0A=
            value: true, =0A=
            validator: Lang.isBoolean, =0A=
            supercedes: ["iframe","x","y","xy"]=0A=
        }, =0A=
    =0A=
        "POSITION": { =0A=
            key: "position", =0A=
            value: "dynamic", =0A=
            validator: checkPosition, =0A=
            supercedes: ["visible", "iframe"]=0A=
        }, =0A=
    =0A=
        "SUBMENU_ALIGNMENT": { =0A=
            key: "submenualignment", =0A=
            value: ["tl","tr"],=0A=
            suppressEvent: true=0A=
        },=0A=
    =0A=
        "AUTO_SUBMENU_DISPLAY": { =0A=
            key: "autosubmenudisplay", =0A=
            value: true, =0A=
            validator: Lang.isBoolean,=0A=
            suppressEvent: true=0A=
        }, =0A=
    =0A=
        "SHOW_DELAY": { =0A=
            key: "showdelay", =0A=
            value: 250, =0A=
            validator: Lang.isNumber, =0A=
            suppressEvent: true=0A=
        }, =0A=
    =0A=
        "HIDE_DELAY": { =0A=
            key: "hidedelay", =0A=
            value: 0, =0A=
            validator: Lang.isNumber, =0A=
            suppressEvent: true=0A=
        }, =0A=
    =0A=
        "SUBMENU_HIDE_DELAY": { =0A=
            key: "submenuhidedelay", =0A=
            value: 250, =0A=
            validator: Lang.isNumber,=0A=
            suppressEvent: true=0A=
        }, =0A=
    =0A=
        "CLICK_TO_HIDE": { =0A=
            key: "clicktohide", =0A=
            value: true, =0A=
            validator: Lang.isBoolean,=0A=
            suppressEvent: true=0A=
        },=0A=
    =0A=
        "CONTAINER": { =0A=
            key: "container",=0A=
            suppressEvent: true=0A=
        }, =0A=
=0A=
        "SCROLL_INCREMENT": { =0A=
            key: "scrollincrement", =0A=
            value: 1, =0A=
            validator: Lang.isNumber,=0A=
            supercedes: ["maxheight"],=0A=
            suppressEvent: true=0A=
        },=0A=
=0A=
        "MIN_SCROLL_HEIGHT": { =0A=
            key: "minscrollheight", =0A=
            value: 90, =0A=
            validator: Lang.isNumber,=0A=
            supercedes: ["maxheight"],=0A=
            suppressEvent: true=0A=
        },    =0A=
    =0A=
        "MAX_HEIGHT": { =0A=
            key: "maxheight", =0A=
            value: 0, =0A=
            validator: Lang.isNumber,=0A=
            supercedes: ["iframe"],=0A=
            suppressEvent: true=0A=
        }, =0A=
    =0A=
        "CLASS_NAME": { =0A=
            key: "classname", =0A=
            value: null, =0A=
            validator: Lang.isString,=0A=
            suppressEvent: true=0A=
        }, =0A=
    =0A=
        "DISABLED": { =0A=
            key: "disabled", =0A=
            value: false, =0A=
            validator: Lang.isBoolean,=0A=
            suppressEvent: true=0A=
        }=0A=
    =0A=
    };=0A=
=0A=
=0A=
=0A=
YAHOO.lang.extend(Menu, Overlay, {=0A=
=0A=
=0A=
// Constants=0A=
=0A=
=0A=
/**=0A=
* @property CSS_CLASS_NAME=0A=
* @description String representing the CSS class(es) to be applied to =
the =0A=
* menu's <code>&#60;div&#62;</code> element.=0A=
* @default "yuimenu"=0A=
* @final=0A=
* @type String=0A=
*/=0A=
CSS_CLASS_NAME: "yuimenu",=0A=
=0A=
=0A=
/**=0A=
* @property ITEM_TYPE=0A=
* @description Object representing the type of menu item to instantiate =
and =0A=
* add when parsing the child nodes (either <code>&#60;li&#62;</code> =
element, =0A=
* <code>&#60;optgroup&#62;</code> element or =
<code>&#60;option&#62;</code>) =0A=
* of the menu's source HTML element.=0A=
* @default YAHOO.widget.MenuItem=0A=
* @final=0A=
* @type YAHOO.widget.MenuItem=0A=
*/=0A=
ITEM_TYPE: null,=0A=
=0A=
=0A=
/**=0A=
* @property GROUP_TITLE_TAG_NAME=0A=
* @description String representing the tagname of the HTML element used =
to =0A=
* title the menu's item groups.=0A=
* @default H6=0A=
* @final=0A=
* @type String=0A=
*/=0A=
GROUP_TITLE_TAG_NAME: "h6",=0A=
=0A=
=0A=
/**=0A=
* @property OFF_SCREEN_POSITION=0A=
* @description Array representing the default x and y position that a =
menu =0A=
* should have when it is positioned outside the viewport by the =0A=
* "poistionOffScreen" method.=0A=
* @default [-10000, -10000]=0A=
* @final=0A=
* @type Array=0A=
*/=0A=
OFF_SCREEN_POSITION: [-10000, -10000],=0A=
=0A=
=0A=
// Private properties=0A=
=0A=
=0A=
/** =0A=
* @property _nHideDelayId=0A=
* @description Number representing the time-out setting used to cancel =
the =0A=
* hiding of a menu.=0A=
* @default null=0A=
* @private=0A=
* @type Number=0A=
*/=0A=
_nHideDelayId: null,=0A=
=0A=
=0A=
/** =0A=
* @property _nShowDelayId=0A=
* @description Number representing the time-out setting used to cancel =
the =0A=
* showing of a menu.=0A=
* @default null=0A=
* @private=0A=
* @type Number=0A=
*/=0A=
_nShowDelayId: null,=0A=
=0A=
=0A=
/** =0A=
* @property _nSubmenuHideDelayId=0A=
* @description Number representing the time-out setting used to cancel =
the =0A=
* hiding of a submenu.=0A=
* @default null=0A=
* @private=0A=
* @type Number=0A=
*/=0A=
_nSubmenuHideDelayId: null,=0A=
=0A=
=0A=
/** =0A=
* @property _nBodyScrollId=0A=
* @description Number representing the time-out setting used to cancel =
the =0A=
* scrolling of the menu's body element.=0A=
* @default null=0A=
* @private=0A=
* @type Number=0A=
*/=0A=
_nBodyScrollId: null,=0A=
=0A=
=0A=
/** =0A=
* @property _bHideDelayEventHandlersAssigned=0A=
* @description Boolean indicating if the "mouseover" and "mouseout" =
event =0A=
* handlers used for hiding the menu via a call to "window.setTimeout" =
have =0A=
* already been assigned.=0A=
* @default false=0A=
* @private=0A=
* @type Boolean=0A=
*/=0A=
_bHideDelayEventHandlersAssigned: false,=0A=
=0A=
=0A=
/**=0A=
* @property _bHandledMouseOverEvent=0A=
* @description Boolean indicating the current state of the menu's =0A=
* "mouseover" event.=0A=
* @default false=0A=
* @private=0A=
* @type Boolean=0A=
*/=0A=
_bHandledMouseOverEvent: false,=0A=
=0A=
=0A=
/**=0A=
* @property _bHandledMouseOutEvent=0A=
* @description Boolean indicating the current state of the menu's=0A=
* "mouseout" event.=0A=
* @default false=0A=
* @private=0A=
* @type Boolean=0A=
*/=0A=
_bHandledMouseOutEvent: false,=0A=
=0A=
=0A=
/**=0A=
* @property _aGroupTitleElements=0A=
* @description Array of HTML element used to title groups of menu items.=0A=
* @default []=0A=
* @private=0A=
* @type Array=0A=
*/=0A=
_aGroupTitleElements: null,=0A=
=0A=
=0A=
/**=0A=
* @property _aItemGroups=0A=
* @description Multi-dimensional Array representing the menu items as =
they=0A=
* are grouped in the menu.=0A=
* @default []=0A=
* @private=0A=
* @type Array=0A=
*/=0A=
_aItemGroups: null,=0A=
=0A=
=0A=
/**=0A=
* @property _aListElements=0A=
* @description Array of <code>&#60;ul&#62;</code> elements, each of =
which is =0A=
* the parent node for each item's <code>&#60;li&#62;</code> element.=0A=
* @default []=0A=
* @private=0A=
* @type Array=0A=
*/=0A=
_aListElements: null,=0A=
=0A=
=0A=
/**=0A=
* @property _nCurrentMouseX=0A=
* @description The current x coordinate of the mouse inside the area of =0A=
* the menu.=0A=
* @default 0=0A=
* @private=0A=
* @type Number=0A=
*/=0A=
_nCurrentMouseX: 0,=0A=
=0A=
=0A=
/**=0A=
* @property _bStopMouseEventHandlers=0A=
* @description Stops "mouseover," "mouseout," and "mousemove" event =
handlers =0A=
* from executing.=0A=
* @default false=0A=
* @private=0A=
* @type Boolean=0A=
*/=0A=
_bStopMouseEventHandlers: false,=0A=
=0A=
=0A=
/**=0A=
* @property _sClassName=0A=
* @description The current value of the "classname" configuration =
attribute.=0A=
* @default null=0A=
* @private=0A=
* @type String=0A=
*/=0A=
_sClassName: null,=0A=
=0A=
=0A=
=0A=
// Public properties=0A=
=0A=
=0A=
/**=0A=
* @property lazyLoad=0A=
* @description Boolean indicating if the menu's "lazy load" feature is =0A=
* enabled.  If set to "true," initialization and rendering of the menu's =0A=
* items will be deferred until the first time it is made visible.  This =0A=
* property should be set via the constructor using the configuration =0A=
* object literal.=0A=
* @default false=0A=
* @type Boolean=0A=
*/=0A=
lazyLoad: false,=0A=
=0A=
=0A=
/**=0A=
* @property itemData=0A=
* @description Array of items to be added to the menu.  The array can =
contain =0A=
* strings representing the text for each item to be created, object =
literals =0A=
* representing the menu item configuration properties, or MenuItem =
instances.  =0A=
* This property should be set via the constructor using the =
configuration =0A=
* object literal.=0A=
* @default null=0A=
* @type Array=0A=
*/=0A=
itemData: null,=0A=
=0A=
=0A=
/**=0A=
* @property activeItem=0A=
* @description Object reference to the item in the menu that has is =
selected.=0A=
* @default null=0A=
* @type YAHOO.widget.MenuItem=0A=
*/=0A=
activeItem: null,=0A=
=0A=
=0A=
/**=0A=
* @property parent=0A=
* @description Object reference to the menu's parent menu or menu item.  =0A=
* This property can be set via the constructor using the configuration =0A=
* object literal.=0A=
* @default null=0A=
* @type YAHOO.widget.MenuItem=0A=
*/=0A=
parent: null,=0A=
=0A=
=0A=
/**=0A=
* @property srcElement=0A=
* @description Object reference to the HTML element (either =0A=
* <code>&#60;select&#62;</code> or <code>&#60;div&#62;</code>) used to =0A=
* create the menu.=0A=
* @default null=0A=
* @type <a href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
* level-one-html.html#ID-94282980">HTMLSelectElement</a>|<a =0A=
* =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.=0A=
* html#ID-22445964">HTMLDivElement</a>=0A=
*/=0A=
srcElement: null,=0A=
=0A=
=0A=
=0A=
// Events=0A=
=0A=
=0A=
/**=0A=
* @event mouseOverEvent=0A=
* @description Fires when the mouse has entered the menu.  Passes back =0A=
* the DOM Event object as an argument.=0A=
*/=0A=
mouseOverEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @event mouseOutEvent=0A=
* @description Fires when the mouse has left the menu.  Passes back the =
DOM =0A=
* Event object as an argument.=0A=
* @type YAHOO.util.CustomEvent=0A=
*/=0A=
mouseOutEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @event mouseDownEvent=0A=
* @description Fires when the user mouses down on the menu.  Passes back =
the =0A=
* DOM Event object as an argument.=0A=
* @type YAHOO.util.CustomEvent=0A=
*/=0A=
mouseDownEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @event mouseUpEvent=0A=
* @description Fires when the user releases a mouse button while the =
mouse is =0A=
* over the menu.  Passes back the DOM Event object as an argument.=0A=
* @type YAHOO.util.CustomEvent=0A=
*/=0A=
mouseUpEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @event clickEvent=0A=
* @description Fires when the user clicks the on the menu.  Passes back =
the =0A=
* DOM Event object as an argument.=0A=
* @type YAHOO.util.CustomEvent=0A=
*/=0A=
clickEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @event keyPressEvent=0A=
* @description Fires when the user presses an alphanumeric key when one =
of the=0A=
* menu's items has focus.  Passes back the DOM Event object as an =
argument.=0A=
* @type YAHOO.util.CustomEvent=0A=
*/=0A=
keyPressEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @event keyDownEvent=0A=
* @description Fires when the user presses a key when one of the menu's =
items =0A=
* has focus.  Passes back the DOM Event object as an argument.=0A=
* @type YAHOO.util.CustomEvent=0A=
*/=0A=
keyDownEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @event keyUpEvent=0A=
* @description Fires when the user releases a key when one of the menu's =
items =0A=
* has focus.  Passes back the DOM Event object as an argument.=0A=
* @type YAHOO.util.CustomEvent=0A=
*/=0A=
keyUpEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @event itemAddedEvent=0A=
* @description Fires when an item is added to the menu.=0A=
* @type YAHOO.util.CustomEvent=0A=
*/=0A=
itemAddedEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @event itemRemovedEvent=0A=
* @description Fires when an item is removed to the menu.=0A=
* @type YAHOO.util.CustomEvent=0A=
*/=0A=
itemRemovedEvent: null,=0A=
=0A=
=0A=
/**=0A=
* @method init=0A=
* @description The Menu class's initialization method. This method is =0A=
* automatically called by the constructor, and sets up all DOM =
references =0A=
* for pre-existing markup, and creates required markup if it is not =0A=
* already present.=0A=
* @param {String} p_oElement String specifying the id attribute of the =0A=
* <code>&#60;div&#62;</code> element of the menu.=0A=
* @param {String} p_oElement String specifying the id attribute of the =0A=
* <code>&#60;select&#62;</code> element to be used as the data source =0A=
* for the menu.=0A=
* @param {<a href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
* level-one-html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object =0A=
* specifying the <code>&#60;div&#62;</code> element of the menu.=0A=
* @param {<a href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
* level-one-html.html#ID-94282980">HTMLSelectElement</a>} p_oElement =0A=
* Object specifying the <code>&#60;select&#62;</code> element to be used =
as =0A=
* the data source for the menu.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the menu. See configuration class documentation for =0A=
* more details.=0A=
*/=0A=
init: function (p_oElement, p_oConfig) {=0A=
=0A=
    this._aItemGroups =3D [];=0A=
    this._aListElements =3D [];=0A=
    this._aGroupTitleElements =3D [];=0A=
=0A=
    if (!this.ITEM_TYPE) {=0A=
=0A=
        this.ITEM_TYPE =3D YAHOO.widget.MenuItem;=0A=
=0A=
    }=0A=
=0A=
=0A=
    var oElement;=0A=
=0A=
    if (typeof p_oElement =3D=3D "string") {=0A=
=0A=
        oElement =3D document.getElementById(p_oElement);=0A=
=0A=
    }=0A=
    else if (p_oElement.tagName) {=0A=
=0A=
        oElement =3D p_oElement;=0A=
=0A=
    }=0A=
=0A=
=0A=
    if (oElement && oElement.tagName) {=0A=
=0A=
        switch(oElement.tagName.toUpperCase()) {=0A=
    =0A=
            case "DIV":=0A=
=0A=
                this.srcElement =3D oElement;=0A=
=0A=
                if (!oElement.id) {=0A=
=0A=
                    oElement.setAttribute("id", Dom.generateId());=0A=
=0A=
                }=0A=
=0A=
=0A=
                /* =0A=
                    Note: we don't pass the user config in here yet =0A=
                    because we only want it executed once, at the lowest =0A=
                    subclass level.=0A=
                */ =0A=
            =0A=
                Menu.superclass.init.call(this, oElement);=0A=
=0A=
                this.beforeInitEvent.fire(Menu);=0A=
=0A=
=0A=
    =0A=
            break;=0A=
    =0A=
            case "SELECT":=0A=
    =0A=
                this.srcElement =3D oElement;=0A=
=0A=
    =0A=
                /*=0A=
                    The source element is not something that we can use =0A=
                    outright, so we need to create a new Overlay=0A=
=0A=
                    Note: we don't pass the user config in here yet =0A=
                    because we only want it executed once, at the lowest =0A=
                    subclass level.=0A=
                */ =0A=
=0A=
                Menu.superclass.init.call(this, Dom.generateId());=0A=
=0A=
                this.beforeInitEvent.fire(Menu);=0A=
=0A=
=0A=
=0A=
            break;=0A=
=0A=
        }=0A=
=0A=
    }=0A=
    else {=0A=
=0A=
        /* =0A=
            Note: we don't pass the user config in here yet =0A=
            because we only want it executed once, at the lowest =0A=
            subclass level.=0A=
        */ =0A=
    =0A=
        Menu.superclass.init.call(this, p_oElement);=0A=
=0A=
        this.beforeInitEvent.fire(Menu);=0A=
=0A=
=0A=
=0A=
    }=0A=
=0A=
=0A=
    if (this.element) {=0A=
=0A=
        Dom.addClass(this.element, this.CSS_CLASS_NAME);=0A=
=0A=
=0A=
        // Subscribe to Custom Events=0A=
=0A=
        this.initEvent.subscribe(this._onInit);=0A=
        this.beforeRenderEvent.subscribe(this._onBeforeRender);=0A=
        this.renderEvent.subscribe(this._onRender);=0A=
        this.renderEvent.subscribe(this.onRender);=0A=
        this.beforeShowEvent.subscribe(this._onBeforeShow);=0A=
        this.hideEvent.subscribe(this.positionOffScreen);=0A=
        this.showEvent.subscribe(this._onShow);=0A=
        this.beforeHideEvent.subscribe(this._onBeforeHide);=0A=
        this.mouseOverEvent.subscribe(this._onMouseOver);=0A=
        this.mouseOutEvent.subscribe(this._onMouseOut);=0A=
        this.clickEvent.subscribe(this._onClick);=0A=
        this.keyDownEvent.subscribe(this._onKeyDown);=0A=
        this.keyPressEvent.subscribe(this._onKeyPress);=0A=
        =0A=
=0A=
        if (UA.gecko || UA.webkit) {=0A=
=0A=
            this.cfg.subscribeToConfigEvent("y", this._onYChange);=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (p_oConfig) {=0A=
    =0A=
            this.cfg.applyConfig(p_oConfig, true);=0A=
    =0A=
        }=0A=
=0A=
=0A=
        // Register the Menu instance with the MenuManager=0A=
=0A=
        MenuManager.addMenu(this);=0A=
        =0A=
=0A=
        this.initEvent.fire(Menu);=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Private methods=0A=
=0A=
=0A=
/**=0A=
* @method _initSubTree=0A=
* @description Iterates the childNodes of the source element to find =
nodes =0A=
* used to instantiate menu and menu items.=0A=
* @private=0A=
*/=0A=
_initSubTree: function () {=0A=
=0A=
    var oSrcElement =3D this.srcElement,=0A=
        sSrcElementTagName,=0A=
        nGroup,=0A=
        sGroupTitleTagName,=0A=
        oNode,=0A=
        aListElements,=0A=
        nListElements,=0A=
        i;=0A=
=0A=
=0A=
    if (oSrcElement) {=0A=
    =0A=
        sSrcElementTagName =3D =0A=
            (oSrcElement.tagName && oSrcElement.tagName.toUpperCase());=0A=
=0A=
=0A=
        if (sSrcElementTagName =3D=3D "DIV") {=0A=
    =0A=
            //  Populate the collection of item groups and item group =
titles=0A=
    =0A=
            oNode =3D this.body.firstChild;=0A=
    =0A=
=0A=
            if (oNode) {=0A=
    =0A=
                nGroup =3D 0;=0A=
                sGroupTitleTagName =3D =
this.GROUP_TITLE_TAG_NAME.toUpperCase();=0A=
        =0A=
                do {=0A=
        =0A=
=0A=
                    if (oNode && oNode.tagName) {=0A=
        =0A=
                        switch (oNode.tagName.toUpperCase()) {=0A=
        =0A=
                            case sGroupTitleTagName:=0A=
                            =0A=
                                this._aGroupTitleElements[nGroup] =3D =
oNode;=0A=
        =0A=
                            break;=0A=
        =0A=
                            case "UL":=0A=
        =0A=
                                this._aListElements[nGroup] =3D oNode;=0A=
                                this._aItemGroups[nGroup] =3D [];=0A=
                                nGroup++;=0A=
        =0A=
                            break;=0A=
        =0A=
                        }=0A=
                    =0A=
                    }=0A=
        =0A=
                }=0A=
                while ((oNode =3D oNode.nextSibling));=0A=
        =0A=
        =0A=
                /*=0A=
                    Apply the "first-of-type" class to the first UL to =
mimic =0A=
                    the "first-of-type" CSS3 psuedo class.=0A=
                */=0A=
        =0A=
                if (this._aListElements[0]) {=0A=
        =0A=
                    Dom.addClass(this._aListElements[0], =
"first-of-type");=0A=
        =0A=
                }=0A=
            =0A=
            }=0A=
    =0A=
        }=0A=
    =0A=
    =0A=
        oNode =3D null;=0A=
    =0A=
    =0A=
=0A=
        if (sSrcElementTagName) {=0A=
    =0A=
            switch (sSrcElementTagName) {=0A=
        =0A=
                case "DIV":=0A=
=0A=
                    aListElements =3D this._aListElements;=0A=
                    nListElements =3D aListElements.length;=0A=
        =0A=
                    if (nListElements > 0) {=0A=
        =0A=
        =0A=
                        i =3D nListElements - 1;=0A=
        =0A=
                        do {=0A=
        =0A=
                            oNode =3D aListElements[i].firstChild;=0A=
            =0A=
                            if (oNode) {=0A=
=0A=
            =0A=
                                do {=0A=
                =0A=
                                    if (oNode && oNode.tagName && =0A=
                                        oNode.tagName.toUpperCase() =
=3D=3D "LI") {=0A=
                =0A=
        =0A=
                                        this.addItem(new =
this.ITEM_TYPE(oNode, =0A=
                                                    { parent: this }), =
i);=0A=
            =0A=
                                    }=0A=
                        =0A=
                                }=0A=
                                while ((oNode =3D oNode.nextSibling));=0A=
                            =0A=
                            }=0A=
                    =0A=
                        }=0A=
                        while (i--);=0A=
        =0A=
                    }=0A=
        =0A=
                break;=0A=
        =0A=
                case "SELECT":=0A=
        =0A=
        =0A=
                    oNode =3D oSrcElement.firstChild;=0A=
        =0A=
                    do {=0A=
        =0A=
                        if (oNode && oNode.tagName) {=0A=
                        =0A=
                            switch (oNode.tagName.toUpperCase()) {=0A=
            =0A=
                                case "OPTGROUP":=0A=
                                case "OPTION":=0A=
            =0A=
            =0A=
                                    this.addItem(=0A=
                                            new this.ITEM_TYPE(=0A=
                                                    oNode, =0A=
                                                    { parent: this }=0A=
                                                )=0A=
                                            );=0A=
            =0A=
                                break;=0A=
            =0A=
                            }=0A=
    =0A=
                        }=0A=
        =0A=
                    }=0A=
                    while ((oNode =3D oNode.nextSibling));=0A=
        =0A=
                break;=0A=
        =0A=
            }=0A=
    =0A=
        }    =0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _getFirstEnabledItem=0A=
* @description Returns the first enabled item in the menu.=0A=
* @return {YAHOO.widget.MenuItem}=0A=
* @private=0A=
*/=0A=
_getFirstEnabledItem: function () {=0A=
=0A=
    var aItems =3D this.getItems(),=0A=
        nItems =3D aItems.length,=0A=
        oItem;=0A=
    =0A=
    for(var i=3D0; i<nItems; i++) {=0A=
=0A=
        oItem =3D aItems[i];=0A=
=0A=
        if (oItem && !oItem.cfg.getProperty("disabled") && =0A=
            oItem.element.style.display !=3D "none") {=0A=
=0A=
            return oItem;=0A=
=0A=
        }=0A=
    =0A=
    }=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _addItemToGroup=0A=
* @description Adds a menu item to a group.=0A=
* @private=0A=
* @param {Number} p_nGroupIndex Number indicating the group to which the =0A=
* item belongs.=0A=
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the =
MenuItem =0A=
* instance to be added to the menu.=0A=
* @param {String} p_oItem String specifying the text of the item to be =
added =0A=
* to the menu.=0A=
* @param {Object} p_oItem Object literal containing a set of menu item =0A=
* configuration properties.=0A=
* @param {Number} p_nItemIndex Optional. Number indicating the index at =0A=
* which the menu item should be added.=0A=
* @return {YAHOO.widget.MenuItem}=0A=
*/=0A=
_addItemToGroup: function (p_nGroupIndex, p_oItem, p_nItemIndex) {=0A=
=0A=
    var oItem,=0A=
        nGroupIndex,=0A=
        aGroup,=0A=
        oGroupItem,=0A=
        bAppend,=0A=
        oNextItemSibling,=0A=
        nItemIndex;=0A=
=0A=
    function getNextItemSibling(p_aArray, p_nStartIndex) {=0A=
=0A=
        return (p_aArray[p_nStartIndex] || getNextItemSibling(p_aArray, =0A=
                (p_nStartIndex+1)));=0A=
=0A=
    }=0A=
=0A=
    if (p_oItem instanceof this.ITEM_TYPE) {=0A=
=0A=
        oItem =3D p_oItem;=0A=
        oItem.parent =3D this;=0A=
=0A=
    }=0A=
    else if (typeof p_oItem =3D=3D "string") {=0A=
=0A=
        oItem =3D new this.ITEM_TYPE(p_oItem, { parent: this });=0A=
    =0A=
    }=0A=
    else if (typeof p_oItem =3D=3D "object") {=0A=
=0A=
        p_oItem.parent =3D this;=0A=
=0A=
        oItem =3D new this.ITEM_TYPE(p_oItem.text, p_oItem);=0A=
=0A=
    }=0A=
=0A=
=0A=
    if (oItem) {=0A=
=0A=
        if (oItem.cfg.getProperty("selected")) {=0A=
=0A=
            this.activeItem =3D oItem;=0A=
        =0A=
        }=0A=
=0A=
=0A=
        nGroupIndex =3D typeof p_nGroupIndex =3D=3D "number" ? =
p_nGroupIndex : 0;=0A=
        aGroup =3D this._getItemGroup(nGroupIndex);=0A=
=0A=
=0A=
=0A=
        if (!aGroup) {=0A=
=0A=
            aGroup =3D this._createItemGroup(nGroupIndex);=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (typeof p_nItemIndex =3D=3D "number") {=0A=
=0A=
            bAppend =3D (p_nItemIndex >=3D aGroup.length);            =0A=
=0A=
=0A=
            if (aGroup[p_nItemIndex]) {=0A=
    =0A=
                aGroup.splice(p_nItemIndex, 0, oItem);=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                aGroup[p_nItemIndex] =3D oItem;=0A=
    =0A=
            }=0A=
=0A=
=0A=
            oGroupItem =3D aGroup[p_nItemIndex];=0A=
=0A=
            if (oGroupItem) {=0A=
=0A=
                if (bAppend && (!oGroupItem.element.parentNode || =0A=
                        oGroupItem.element.parentNode.nodeType =3D=3D =
11)) {=0A=
        =0A=
                    this._aListElements[nGroupIndex].appendChild(=0A=
                        oGroupItem.element);=0A=
    =0A=
                }=0A=
                else {=0A=
    =0A=
                    oNextItemSibling =3D getNextItemSibling(aGroup, =0A=
                        (p_nItemIndex+1));=0A=
    =0A=
                    if (oNextItemSibling && =
(!oGroupItem.element.parentNode || =0A=
                            oGroupItem.element.parentNode.nodeType =
=3D=3D 11)) {=0A=
            =0A=
                        this._aListElements[nGroupIndex].insertBefore(=0A=
                                oGroupItem.element, =0A=
                                oNextItemSibling.element);=0A=
        =0A=
                    }=0A=
    =0A=
                }=0A=
    =0A=
=0A=
                oGroupItem.parent =3D this;=0A=
        =0A=
                this._subscribeToItemEvents(oGroupItem);=0A=
    =0A=
                this._configureSubmenu(oGroupItem);=0A=
                =0A=
                this._updateItemProperties(nGroupIndex);=0A=
        =0A=
=0A=
                this.itemAddedEvent.fire(oGroupItem);=0A=
                this.changeContentEvent.fire();=0A=
=0A=
                return oGroupItem;=0A=
    =0A=
            }=0A=
=0A=
        }=0A=
        else {=0A=
    =0A=
            nItemIndex =3D aGroup.length;=0A=
    =0A=
            aGroup[nItemIndex] =3D oItem;=0A=
=0A=
            oGroupItem =3D aGroup[nItemIndex];=0A=
    =0A=
=0A=
            if (oGroupItem) {=0A=
    =0A=
                if (!Dom.isAncestor(this._aListElements[nGroupIndex], =0A=
                        oGroupItem.element)) {=0A=
    =0A=
                    this._aListElements[nGroupIndex].appendChild(=0A=
                        oGroupItem.element);=0A=
    =0A=
                }=0A=
    =0A=
                oGroupItem.element.setAttribute("groupindex", =
nGroupIndex);=0A=
                oGroupItem.element.setAttribute("index", nItemIndex);=0A=
        =0A=
                oGroupItem.parent =3D this;=0A=
    =0A=
                oGroupItem.index =3D nItemIndex;=0A=
                oGroupItem.groupIndex =3D nGroupIndex;=0A=
        =0A=
                this._subscribeToItemEvents(oGroupItem);=0A=
    =0A=
                this._configureSubmenu(oGroupItem);=0A=
    =0A=
                if (nItemIndex =3D=3D=3D 0) {=0A=
        =0A=
                    Dom.addClass(oGroupItem.element, "first-of-type");=0A=
        =0A=
                }=0A=
=0A=
        =0A=
=0A=
                this.itemAddedEvent.fire(oGroupItem);=0A=
                this.changeContentEvent.fire();=0A=
=0A=
                return oGroupItem;=0A=
    =0A=
            }=0A=
    =0A=
        }=0A=
=0A=
    }=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _removeItemFromGroupByIndex=0A=
* @description Removes a menu item from a group by index.  Returns the =
menu =0A=
* item that was removed.=0A=
* @private=0A=
* @param {Number} p_nGroupIndex Number indicating the group to which the =
menu =0A=
* item belongs.=0A=
* @param {Number} p_nItemIndex Number indicating the index of the menu =
item =0A=
* to be removed.=0A=
* @return {YAHOO.widget.MenuItem}=0A=
*/=0A=
_removeItemFromGroupByIndex: function (p_nGroupIndex, p_nItemIndex) {=0A=
=0A=
    var nGroupIndex =3D typeof p_nGroupIndex =3D=3D "number" ? =
p_nGroupIndex : 0,=0A=
        aGroup =3D this._getItemGroup(nGroupIndex),=0A=
        aArray,=0A=
        oItem,=0A=
        oUL;=0A=
=0A=
    if (aGroup) {=0A=
=0A=
        aArray =3D aGroup.splice(p_nItemIndex, 1);=0A=
        oItem =3D aArray[0];=0A=
    =0A=
        if (oItem) {=0A=
    =0A=
            // Update the index and className properties of each member  =
      =0A=
            =0A=
            this._updateItemProperties(nGroupIndex);=0A=
    =0A=
            if (aGroup.length =3D=3D=3D 0) {=0A=
    =0A=
                // Remove the UL=0A=
    =0A=
                oUL =3D this._aListElements[nGroupIndex];=0A=
    =0A=
                if (this.body && oUL) {=0A=
    =0A=
                    this.body.removeChild(oUL);=0A=
    =0A=
                }=0A=
    =0A=
                // Remove the group from the array of items=0A=
    =0A=
                this._aItemGroups.splice(nGroupIndex, 1);=0A=
    =0A=
    =0A=
                // Remove the UL from the array of ULs=0A=
    =0A=
                this._aListElements.splice(nGroupIndex, 1);=0A=
    =0A=
    =0A=
                /*=0A=
                     Assign the "first-of-type" class to the new first =
UL =0A=
                     in the collection=0A=
                */=0A=
    =0A=
                oUL =3D this._aListElements[0];=0A=
    =0A=
                if (oUL) {=0A=
    =0A=
                    Dom.addClass(oUL, "first-of-type");=0A=
    =0A=
                }            =0A=
    =0A=
            }=0A=
    =0A=
=0A=
            this.itemRemovedEvent.fire(oItem);=0A=
            this.changeContentEvent.fire();=0A=
=0A=
=0A=
            // Return a reference to the item that was removed=0A=
        =0A=
            return oItem;=0A=
    =0A=
        }=0A=
=0A=
    }=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _removeItemFromGroupByValue=0A=
* @description Removes a menu item from a group by reference.  Returns =
the =0A=
* menu item that was removed.=0A=
* @private=0A=
* @param {Number} p_nGroupIndex Number indicating the group to which the=0A=
* menu item belongs.=0A=
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the =
MenuItem =0A=
* instance to be removed.=0A=
* @return {YAHOO.widget.MenuItem}=0A=
*/    =0A=
_removeItemFromGroupByValue: function (p_nGroupIndex, p_oItem) {=0A=
=0A=
    var aGroup =3D this._getItemGroup(p_nGroupIndex),=0A=
        nItems,=0A=
        nItemIndex,=0A=
        i;=0A=
=0A=
    if (aGroup) {=0A=
=0A=
        nItems =3D aGroup.length;=0A=
        nItemIndex =3D -1;=0A=
    =0A=
        if (nItems > 0) {=0A=
    =0A=
            i =3D nItems-1;=0A=
        =0A=
            do {=0A=
        =0A=
                if (aGroup[i] =3D=3D p_oItem) {=0A=
        =0A=
                    nItemIndex =3D i;=0A=
                    break;    =0A=
        =0A=
                }=0A=
        =0A=
            }=0A=
            while(i--);=0A=
        =0A=
            if (nItemIndex > -1) {=0A=
        =0A=
                return (this._removeItemFromGroupByIndex(p_nGroupIndex, =0A=
                            nItemIndex));=0A=
        =0A=
            }=0A=
    =0A=
        }=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _updateItemProperties=0A=
* @description Updates the "index," "groupindex," and "className" =
properties =0A=
* of the menu items in the specified group. =0A=
* @private=0A=
* @param {Number} p_nGroupIndex Number indicating the group of items to =
update.=0A=
*/=0A=
_updateItemProperties: function (p_nGroupIndex) {=0A=
=0A=
    var aGroup =3D this._getItemGroup(p_nGroupIndex),=0A=
        nItems =3D aGroup.length,=0A=
        oItem,=0A=
        oLI,=0A=
        i;=0A=
=0A=
=0A=
    if (nItems > 0) {=0A=
=0A=
        i =3D nItems - 1;=0A=
=0A=
        // Update the index and className properties of each member=0A=
    =0A=
        do {=0A=
=0A=
            oItem =3D aGroup[i];=0A=
=0A=
            if (oItem) {=0A=
    =0A=
                oLI =3D oItem.element;=0A=
=0A=
                oItem.index =3D i;=0A=
                oItem.groupIndex =3D p_nGroupIndex;=0A=
=0A=
                oLI.setAttribute("groupindex", p_nGroupIndex);=0A=
                oLI.setAttribute("index", i);=0A=
=0A=
                Dom.removeClass(oLI, "first-of-type");=0A=
=0A=
            }=0A=
    =0A=
        }=0A=
        while(i--);=0A=
=0A=
=0A=
        if (oLI) {=0A=
=0A=
            Dom.addClass(oLI, "first-of-type");=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _createItemGroup=0A=
* @description Creates a new menu item group (array) and its associated =0A=
* <code>&#60;ul&#62;</code> element. Returns an aray of menu item groups.=0A=
* @private=0A=
* @param {Number} p_nIndex Number indicating the group to create.=0A=
* @return {Array}=0A=
*/=0A=
_createItemGroup: function (p_nIndex) {=0A=
=0A=
    var oUL;=0A=
=0A=
    if (!this._aItemGroups[p_nIndex]) {=0A=
=0A=
        this._aItemGroups[p_nIndex] =3D [];=0A=
=0A=
        oUL =3D document.createElement("ul");=0A=
=0A=
        this._aListElements[p_nIndex] =3D oUL;=0A=
=0A=
        return this._aItemGroups[p_nIndex];=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _getItemGroup=0A=
* @description Returns the menu item group at the specified index.=0A=
* @private=0A=
* @param {Number} p_nIndex Number indicating the index of the menu item =
group =0A=
* to be retrieved.=0A=
* @return {Array}=0A=
*/=0A=
_getItemGroup: function (p_nIndex) {=0A=
=0A=
    var nIndex =3D ((typeof p_nIndex =3D=3D "number") ? p_nIndex : 0);=0A=
=0A=
    return this._aItemGroups[nIndex];=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _configureSubmenu=0A=
* @description Subscribes the menu item's submenu to its parent menu's =
events.=0A=
* @private=0A=
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the =
MenuItem =0A=
* instance with the submenu to be configured.=0A=
*/=0A=
_configureSubmenu: function (p_oItem) {=0A=
=0A=
    var oSubmenu =3D p_oItem.cfg.getProperty("submenu");=0A=
=0A=
    if (oSubmenu) {=0A=
            =0A=
        /*=0A=
            Listen for configuration changes to the parent menu =0A=
            so they they can be applied to the submenu.=0A=
        */=0A=
=0A=
        =
this.cfg.configChangedEvent.subscribe(this._onParentMenuConfigChange, =0A=
                oSubmenu, true);=0A=
=0A=
        this.renderEvent.subscribe(this._onParentMenuRender, oSubmenu, =
true);=0A=
=0A=
        oSubmenu.beforeShowEvent.subscribe(this._onSubmenuBeforeShow);=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
=0A=
/**=0A=
* @method _subscribeToItemEvents=0A=
* @description Subscribes a menu to a menu item's event.=0A=
* @private=0A=
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the =
MenuItem =0A=
* instance whose events should be subscribed to.=0A=
*/=0A=
_subscribeToItemEvents: function (p_oItem) {=0A=
=0A=
    p_oItem.focusEvent.subscribe(this._onMenuItemFocus);=0A=
=0A=
    p_oItem.blurEvent.subscribe(this._onMenuItemBlur);=0A=
=0A=
    p_oItem.destroyEvent.subscribe(this._onMenuItemDestroy, p_oItem, =
this);=0A=
=0A=
    =
p_oItem.cfg.configChangedEvent.subscribe(this._onMenuItemConfigChange,=0A=
        p_oItem, this);=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onVisibleChange=0A=
* @description Change event handler for the the menu's "visible" =
configuration=0A=
* property.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onVisibleChange: function (p_sType, p_aArgs) {=0A=
=0A=
    var bVisible =3D p_aArgs[0];=0A=
    =0A=
    if (bVisible) {=0A=
=0A=
        Dom.addClass(this.element, "visible");=0A=
=0A=
    }=0A=
    else {=0A=
=0A=
        Dom.removeClass(this.element, "visible");=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _cancelHideDelay=0A=
* @description Cancels the call to "hideMenu."=0A=
* @private=0A=
*/=0A=
_cancelHideDelay: function () {=0A=
=0A=
    var oRoot =3D this.getRoot();=0A=
=0A=
    if (oRoot._nHideDelayId) {=0A=
=0A=
        window.clearTimeout(oRoot._nHideDelayId);=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _execHideDelay=0A=
* @description Hides the menu after the number of milliseconds specified =
by =0A=
* the "hidedelay" configuration property.=0A=
* @private=0A=
*/=0A=
_execHideDelay: function () {=0A=
=0A=
    this._cancelHideDelay();=0A=
=0A=
    var oRoot =3D this.getRoot(),=0A=
        me =3D this;=0A=
=0A=
    function hideMenu() {=0A=
    =0A=
        if (oRoot.activeItem) {=0A=
=0A=
            oRoot.clearActiveItem();=0A=
=0A=
        }=0A=
=0A=
        if (oRoot =3D=3D me && !(me instanceof YAHOO.widget.MenuBar) && =0A=
            me.cfg.getProperty("position") =3D=3D "dynamic") {=0A=
=0A=
            me.hide();=0A=
        =0A=
        }=0A=
    =0A=
    }=0A=
=0A=
=0A=
    oRoot._nHideDelayId =3D =0A=
        window.setTimeout(hideMenu, oRoot.cfg.getProperty("hidedelay"));=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _cancelShowDelay=0A=
* @description Cancels the call to the "showMenu."=0A=
* @private=0A=
*/=0A=
_cancelShowDelay: function () {=0A=
=0A=
    var oRoot =3D this.getRoot();=0A=
=0A=
    if (oRoot._nShowDelayId) {=0A=
=0A=
        window.clearTimeout(oRoot._nShowDelayId);=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _execShowDelay=0A=
* @description Shows the menu after the number of milliseconds specified =
by =0A=
* the "showdelay" configuration property have ellapsed.=0A=
* @private=0A=
* @param {YAHOO.widget.Menu} p_oMenu Object specifying the menu that =
should =0A=
* be made visible.=0A=
*/=0A=
_execShowDelay: function (p_oMenu) {=0A=
=0A=
    var oRoot =3D this.getRoot();=0A=
=0A=
    function showMenu() {=0A=
=0A=
        if (p_oMenu.parent.cfg.getProperty("selected")) {=0A=
=0A=
            p_oMenu.show();=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    oRoot._nShowDelayId =3D =0A=
        window.setTimeout(showMenu, oRoot.cfg.getProperty("showdelay"));=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _execSubmenuHideDelay=0A=
* @description Hides a submenu after the number of milliseconds =
specified by =0A=
* the "submenuhidedelay" configuration property have ellapsed.=0A=
* @private=0A=
* @param {YAHOO.widget.Menu} p_oSubmenu Object specifying the submenu =
that  =0A=
* should be hidden.=0A=
* @param {Number} p_nMouseX The x coordinate of the mouse when it left =0A=
* the specified submenu's parent menu item.=0A=
* @param {Number} p_nHideDelay The number of milliseconds that should =
ellapse=0A=
* before the submenu is hidden.=0A=
*/=0A=
_execSubmenuHideDelay: function (p_oSubmenu, p_nMouseX, p_nHideDelay) {=0A=
=0A=
    var me =3D this;=0A=
=0A=
    p_oSubmenu._nSubmenuHideDelayId =3D window.setTimeout(function () {=0A=
=0A=
        if (me._nCurrentMouseX > (p_nMouseX + 10)) {=0A=
=0A=
            p_oSubmenu._nSubmenuHideDelayId =3D =
window.setTimeout(function () {=0A=
        =0A=
                p_oSubmenu.hide();=0A=
=0A=
            }, p_nHideDelay);=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            p_oSubmenu.hide();=0A=
        =0A=
        }=0A=
=0A=
    }, 50);=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Protected methods=0A=
=0A=
=0A=
/**=0A=
* @method _disableScrollHeader=0A=
* @description Disables the header used for scrolling the body of the =
menu.=0A=
* @protected=0A=
*/=0A=
_disableScrollHeader: function () {=0A=
=0A=
    if (!this._bHeaderDisabled) {=0A=
=0A=
        Dom.addClass(this.header, "topscrollbar_disabled");=0A=
        this._bHeaderDisabled =3D true;=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _disableScrollFooter=0A=
* @description Disables the footer used for scrolling the body of the =
menu.=0A=
* @protected=0A=
*/=0A=
_disableScrollFooter: function () {=0A=
=0A=
    if (!this._bFooterDisabled) {=0A=
=0A=
        Dom.addClass(this.footer, "bottomscrollbar_disabled");=0A=
        this._bFooterDisabled =3D true;=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _enableScrollHeader=0A=
* @description Enables the header used for scrolling the body of the =
menu.=0A=
* @protected=0A=
*/=0A=
_enableScrollHeader: function () {=0A=
=0A=
    if (this._bHeaderDisabled) {=0A=
=0A=
        Dom.removeClass(this.header, "topscrollbar_disabled");=0A=
        this._bHeaderDisabled =3D false;=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _enableScrollFooter=0A=
* @description Enables the footer used for scrolling the body of the =
menu.=0A=
* @protected=0A=
*/=0A=
_enableScrollFooter: function () {=0A=
=0A=
    if (this._bFooterDisabled) {=0A=
=0A=
        Dom.removeClass(this.footer, "bottomscrollbar_disabled");=0A=
        this._bFooterDisabled =3D false;=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onMouseOver=0A=
* @description "mouseover" event handler for the menu.=0A=
* @protected=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onMouseOver: function (p_sType, p_aArgs) {=0A=
=0A=
    if (this._bStopMouseEventHandlers) {=0A=
    =0A=
        return false;=0A=
    =0A=
    }=0A=
=0A=
=0A=
    var oEvent =3D p_aArgs[0],=0A=
        oItem =3D p_aArgs[1],=0A=
        oTarget =3D Event.getTarget(oEvent),=0A=
        oParentMenu,=0A=
        nShowDelay,=0A=
        bShowDelay,=0A=
        oActiveItem,=0A=
        oItemCfg,=0A=
        oSubmenu;=0A=
=0A=
=0A=
    if (!this._bHandledMouseOverEvent && (oTarget =3D=3D this.element || =0A=
        Dom.isAncestor(this.element, oTarget))) {=0A=
=0A=
        // Menu mouseover logic=0A=
=0A=
        this._nCurrentMouseX =3D 0;=0A=
=0A=
        Event.on(this.element, "mousemove", this._onMouseMove, this, =
true);=0A=
=0A=
=0A=
        this.clearActiveItem();=0A=
=0A=
=0A=
        if (this.parent && this._nSubmenuHideDelayId) {=0A=
=0A=
            window.clearTimeout(this._nSubmenuHideDelayId);=0A=
=0A=
            this.parent.cfg.setProperty("selected", true);=0A=
=0A=
            oParentMenu =3D this.parent.parent;=0A=
=0A=
            oParentMenu._bHandledMouseOutEvent =3D true;=0A=
            oParentMenu._bHandledMouseOverEvent =3D false;=0A=
=0A=
        }=0A=
=0A=
=0A=
        this._bHandledMouseOverEvent =3D true;=0A=
        this._bHandledMouseOutEvent =3D false;=0A=
    =0A=
    }=0A=
=0A=
=0A=
    if (oItem && !oItem.handledMouseOverEvent && =0A=
        !oItem.cfg.getProperty("disabled") && =0A=
        (oTarget =3D=3D oItem.element || Dom.isAncestor(oItem.element, =
oTarget))) {=0A=
=0A=
        // Menu Item mouseover logic=0A=
=0A=
        nShowDelay =3D this.cfg.getProperty("showdelay");=0A=
        bShowDelay =3D (nShowDelay > 0);=0A=
=0A=
=0A=
        if (bShowDelay) {=0A=
        =0A=
            this._cancelShowDelay();=0A=
        =0A=
        }=0A=
=0A=
=0A=
        oActiveItem =3D this.activeItem;=0A=
    =0A=
        if (oActiveItem) {=0A=
    =0A=
            oActiveItem.cfg.setProperty("selected", false);=0A=
    =0A=
        }=0A=
=0A=
=0A=
        oItemCfg =3D oItem.cfg;=0A=
    =0A=
        // Select and focus the current menu item=0A=
    =0A=
        oItemCfg.setProperty("selected", true);=0A=
=0A=
=0A=
        if (this.hasFocus()) {=0A=
        =0A=
            oItem.focus();=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if (this.cfg.getProperty("autosubmenudisplay")) {=0A=
=0A=
            // Show the submenu this menu item=0A=
=0A=
            oSubmenu =3D oItemCfg.getProperty("submenu");=0A=
        =0A=
            if (oSubmenu) {=0A=
        =0A=
                if (bShowDelay) {=0A=
=0A=
                    this._execShowDelay(oSubmenu);=0A=
        =0A=
                }=0A=
                else {=0A=
=0A=
                    oSubmenu.show();=0A=
=0A=
                }=0A=
=0A=
            }=0A=
=0A=
        }                        =0A=
=0A=
        oItem.handledMouseOverEvent =3D true;=0A=
        oItem.handledMouseOutEvent =3D false;=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onMouseOut=0A=
* @description "mouseout" event handler for the menu.=0A=
* @protected=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onMouseOut: function (p_sType, p_aArgs) {=0A=
=0A=
    if (this._bStopMouseEventHandlers) {=0A=
    =0A=
        return false;=0A=
    =0A=
    }=0A=
=0A=
=0A=
    var oEvent =3D p_aArgs[0],=0A=
        oItem =3D p_aArgs[1],=0A=
        oRelatedTarget =3D Event.getRelatedTarget(oEvent),=0A=
        bMovingToSubmenu =3D false,=0A=
        oItemCfg,=0A=
        oSubmenu,=0A=
        nSubmenuHideDelay,=0A=
        nShowDelay;=0A=
=0A=
=0A=
    if (oItem && !oItem.cfg.getProperty("disabled")) {=0A=
=0A=
        oItemCfg =3D oItem.cfg;=0A=
        oSubmenu =3D oItemCfg.getProperty("submenu");=0A=
=0A=
=0A=
        if (oSubmenu && (oRelatedTarget =3D=3D oSubmenu.element ||=0A=
                Dom.isAncestor(oSubmenu.element, oRelatedTarget))) {=0A=
=0A=
            bMovingToSubmenu =3D true;=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (!oItem.handledMouseOutEvent && ((oRelatedTarget !=3D =
oItem.element &&  =0A=
            !Dom.isAncestor(oItem.element, oRelatedTarget)) || =0A=
            bMovingToSubmenu)) {=0A=
=0A=
            // Menu Item mouseout logic=0A=
=0A=
            if (!bMovingToSubmenu) {=0A=
=0A=
                oItem.cfg.setProperty("selected", false);=0A=
=0A=
=0A=
                if (oSubmenu) {=0A=
=0A=
                    nSubmenuHideDelay =3D =0A=
                        this.cfg.getProperty("submenuhidedelay");=0A=
=0A=
                    nShowDelay =3D this.cfg.getProperty("showdelay");=0A=
=0A=
                    if (!(this instanceof YAHOO.widget.MenuBar) && =0A=
                        nSubmenuHideDelay > 0 && =0A=
                        nShowDelay >=3D nSubmenuHideDelay) {=0A=
=0A=
                        this._execSubmenuHideDelay(oSubmenu, =0A=
                                Event.getPageX(oEvent),=0A=
                                nSubmenuHideDelay);=0A=
=0A=
                    }=0A=
                    else {=0A=
=0A=
                        oSubmenu.hide();=0A=
=0A=
                    }=0A=
=0A=
                }=0A=
=0A=
            }=0A=
=0A=
=0A=
            oItem.handledMouseOutEvent =3D true;=0A=
            oItem.handledMouseOverEvent =3D false;=0A=
    =0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    if (!this._bHandledMouseOutEvent && ((oRelatedTarget !=3D =
this.element &&  =0A=
        !Dom.isAncestor(this.element, oRelatedTarget)) || =
bMovingToSubmenu)) {=0A=
=0A=
        // Menu mouseout logic=0A=
=0A=
        Event.removeListener(this.element, "mousemove", =
this._onMouseMove);=0A=
=0A=
        this._nCurrentMouseX =3D Event.getPageX(oEvent);=0A=
=0A=
        this._bHandledMouseOutEvent =3D true;=0A=
        this._bHandledMouseOverEvent =3D false;=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onMouseMove=0A=
* @description "click" event handler for the menu.=0A=
* @protected=0A=
* @param {Event} p_oEvent Object representing the DOM event object =
passed =0A=
* back by the event utility (YAHOO.util.Event).=0A=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onMouseMove: function (p_oEvent, p_oMenu) {=0A=
=0A=
    if (this._bStopMouseEventHandlers) {=0A=
    =0A=
        return false;=0A=
    =0A=
    }=0A=
=0A=
    this._nCurrentMouseX =3D Event.getPageX(p_oEvent);=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onClick=0A=
* @description "click" event handler for the menu.=0A=
* @protected=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onClick: function (p_sType, p_aArgs) {=0A=
=0A=
    var oEvent =3D p_aArgs[0],=0A=
        oItem =3D p_aArgs[1],=0A=
        oSubmenu,=0A=
        bInMenuAnchor =3D false,=0A=
        oRoot,=0A=
        sId,=0A=
        sURL,=0A=
        nHashPos,=0A=
        nLen;=0A=
=0A=
=0A=
    if (oItem && !oItem.cfg.getProperty("disabled")) {=0A=
=0A=
        oSubmenu =3D oItem.cfg.getProperty("submenu");=0A=
=0A=
        =0A=
        /*=0A=
             Check if the URL of the anchor is pointing to an element =
that is =0A=
             a child of the menu.=0A=
        */=0A=
        =0A=
        sURL =3D oItem.cfg.getProperty("url");=0A=
=0A=
        =0A=
        if (sURL) {=0A=
=0A=
            nHashPos =3D sURL.indexOf("#");=0A=
=0A=
            nLen =3D sURL.length;=0A=
=0A=
=0A=
            if (nHashPos !=3D -1) {=0A=
=0A=
                sURL =3D sURL.substr(nHashPos, nLen);=0A=
    =0A=
                nLen =3D sURL.length;=0A=
=0A=
=0A=
                if (nLen > 1) {=0A=
=0A=
                    sId =3D sURL.substr(1, nLen);=0A=
=0A=
                    bInMenuAnchor =3D Dom.isAncestor(this.element, sId);=0A=
                    =0A=
                }=0A=
                else if (nLen =3D=3D=3D 1) {=0A=
=0A=
                    bInMenuAnchor =3D true;=0A=
                =0A=
                }=0A=
=0A=
            }=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if (bInMenuAnchor && !oItem.cfg.getProperty("target")) {=0A=
=0A=
            Event.preventDefault(oEvent);=0A=
=0A=
            oItem.focus();=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if (!oSubmenu) {=0A=
=0A=
            oRoot =3D this.getRoot();=0A=
            =0A=
            if (oRoot instanceof YAHOO.widget.MenuBar || =0A=
                oRoot.cfg.getProperty("position") =3D=3D "static") {=0A=
=0A=
                oRoot.clearActiveItem();=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                oRoot.hide();=0A=
            =0A=
            }=0A=
=0A=
        }=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onKeyDown=0A=
* @description "keydown" event handler for the menu.=0A=
* @protected=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onKeyDown: function (p_sType, p_aArgs) {=0A=
=0A=
    var oEvent =3D p_aArgs[0],=0A=
        oItem =3D p_aArgs[1],=0A=
        me =3D this,=0A=
        oSubmenu,=0A=
        oItemCfg,=0A=
        oParentItem,=0A=
        oRoot,=0A=
        oNextItem,=0A=
        oBody,=0A=
        nBodyScrollTop,=0A=
        nBodyOffsetHeight,=0A=
        aItems,=0A=
        nItems,=0A=
        nNextItemOffsetTop,=0A=
        nScrollTarget,=0A=
        oParentMenu;=0A=
=0A=
=0A=
    /*=0A=
        This function is called to prevent a bug in Firefox.  In Firefox,=0A=
        moving a DOM element into a stationary mouse pointer will cause =
the =0A=
        browser to fire mouse events.  This can result in the menu mouse=0A=
        event handlers being called uncessarily, especially when menus =
are =0A=
        moved into a stationary mouse pointer as a result of a =0A=
        key event handler.=0A=
    */=0A=
    function stopMouseEventHandlers() {=0A=
=0A=
        me._bStopMouseEventHandlers =3D true;=0A=
        =0A=
        window.setTimeout(function () {=0A=
        =0A=
            me._bStopMouseEventHandlers =3D false;=0A=
        =0A=
        }, 10);=0A=
=0A=
    }=0A=
=0A=
=0A=
    if (oItem && !oItem.cfg.getProperty("disabled")) {=0A=
=0A=
        oItemCfg =3D oItem.cfg;=0A=
        oParentItem =3D this.parent;=0A=
=0A=
        switch(oEvent.keyCode) {=0A=
    =0A=
            case 38:    // Up arrow=0A=
            case 40:    // Down arrow=0A=
    =0A=
                oNextItem =3D (oEvent.keyCode =3D=3D 38) ? =0A=
                    oItem.getPreviousEnabledSibling() : =0A=
                    oItem.getNextEnabledSibling();=0A=
        =0A=
                if (oNextItem) {=0A=
=0A=
                    this.clearActiveItem();=0A=
=0A=
                    oNextItem.cfg.setProperty("selected", true);=0A=
                    oNextItem.focus();=0A=
=0A=
=0A=
                    if (this.cfg.getProperty("maxheight") > 0) {=0A=
=0A=
                        oBody =3D this.body;=0A=
                        nBodyScrollTop =3D oBody.scrollTop;=0A=
                        nBodyOffsetHeight =3D oBody.offsetHeight;=0A=
                        aItems =3D this.getItems();=0A=
                        nItems =3D aItems.length - 1;=0A=
                        nNextItemOffsetTop =3D =
oNextItem.element.offsetTop;=0A=
=0A=
=0A=
                        if (oEvent.keyCode =3D=3D 40 ) {    // Down=0A=
                       =0A=
                            if (nNextItemOffsetTop >=3D =
(nBodyOffsetHeight + nBodyScrollTop)) {=0A=
=0A=
                                oBody.scrollTop =3D nNextItemOffsetTop - =
nBodyOffsetHeight;=0A=
=0A=
                            }=0A=
                            else if (nNextItemOffsetTop <=3D =
nBodyScrollTop) {=0A=
                            =0A=
                                oBody.scrollTop =3D 0;=0A=
                            =0A=
                            }=0A=
=0A=
=0A=
                            if (oNextItem =3D=3D aItems[nItems]) {=0A=
=0A=
                                oBody.scrollTop =3D =
oNextItem.element.offsetTop;=0A=
=0A=
                            }=0A=
=0A=
                        }=0A=
                        else {  // Up=0A=
=0A=
                            if (nNextItemOffsetTop <=3D nBodyScrollTop) {=0A=
=0A=
                                oBody.scrollTop =3D nNextItemOffsetTop - =
oNextItem.element.offsetHeight;=0A=
                            =0A=
                            }=0A=
                            else if (nNextItemOffsetTop >=3D =
(nBodyScrollTop + nBodyOffsetHeight)) {=0A=
                            =0A=
                                oBody.scrollTop =3D nNextItemOffsetTop;=0A=
                            =0A=
                            }=0A=
=0A=
=0A=
                            if (oNextItem =3D=3D aItems[0]) {=0A=
                            =0A=
                                oBody.scrollTop =3D 0;=0A=
                            =0A=
                            }=0A=
=0A=
                        }=0A=
=0A=
=0A=
                        nBodyScrollTop =3D oBody.scrollTop;=0A=
                        nScrollTarget =3D oBody.scrollHeight - =
oBody.offsetHeight;=0A=
=0A=
                        if (nBodyScrollTop =3D=3D=3D 0) {=0A=
=0A=
                            this._disableScrollHeader();=0A=
                            this._enableScrollFooter();=0A=
=0A=
                        }=0A=
                        else if (nBodyScrollTop =3D=3D nScrollTarget) {=0A=
=0A=
                             this._enableScrollHeader();=0A=
                             this._disableScrollFooter();=0A=
=0A=
                        }=0A=
                        else {=0A=
=0A=
                            this._enableScrollHeader();=0A=
                            this._enableScrollFooter();=0A=
=0A=
                        }=0A=
=0A=
                    }=0A=
=0A=
                }=0A=
=0A=
    =0A=
                Event.preventDefault(oEvent);=0A=
=0A=
                stopMouseEventHandlers();=0A=
    =0A=
            break;=0A=
            =0A=
    =0A=
            case 39:    // Right arrow=0A=
    =0A=
                oSubmenu =3D oItemCfg.getProperty("submenu");=0A=
    =0A=
                if (oSubmenu) {=0A=
    =0A=
                    if (!oItemCfg.getProperty("selected")) {=0A=
        =0A=
                        oItemCfg.setProperty("selected", true);=0A=
        =0A=
                    }=0A=
    =0A=
                    oSubmenu.show();=0A=
                    oSubmenu.setInitialFocus();=0A=
                    oSubmenu.setInitialSelection();=0A=
    =0A=
                }=0A=
                else {=0A=
    =0A=
                    oRoot =3D this.getRoot();=0A=
                    =0A=
                    if (oRoot instanceof YAHOO.widget.MenuBar) {=0A=
    =0A=
                        oNextItem =3D =
oRoot.activeItem.getNextEnabledSibling();=0A=
    =0A=
                        if (oNextItem) {=0A=
                        =0A=
                            oRoot.clearActiveItem();=0A=
    =0A=
                            oNextItem.cfg.setProperty("selected", true);=0A=
    =0A=
                            oSubmenu =3D =
oNextItem.cfg.getProperty("submenu");=0A=
    =0A=
                            if (oSubmenu) {=0A=
    =0A=
                                oSubmenu.show();=0A=
                            =0A=
                            }=0A=
    =0A=
                            oNextItem.focus();=0A=
                        =0A=
                        }=0A=
                    =0A=
                    }=0A=
                =0A=
                }=0A=
    =0A=
    =0A=
                Event.preventDefault(oEvent);=0A=
=0A=
                stopMouseEventHandlers();=0A=
=0A=
            break;=0A=
    =0A=
    =0A=
            case 37:    // Left arrow=0A=
    =0A=
                if (oParentItem) {=0A=
    =0A=
                    oParentMenu =3D oParentItem.parent;=0A=
    =0A=
                    if (oParentMenu instanceof YAHOO.widget.MenuBar) {=0A=
    =0A=
                        oNextItem =3D =0A=
                            =
oParentMenu.activeItem.getPreviousEnabledSibling();=0A=
    =0A=
                        if (oNextItem) {=0A=
                        =0A=
                            oParentMenu.clearActiveItem();=0A=
    =0A=
                            oNextItem.cfg.setProperty("selected", true);=0A=
    =0A=
                            oSubmenu =3D =
oNextItem.cfg.getProperty("submenu");=0A=
    =0A=
                            if (oSubmenu) {=0A=
                            =0A=
                                oSubmenu.show();=0A=
                            =0A=
                            }=0A=
    =0A=
                            oNextItem.focus();=0A=
                        =0A=
                        } =0A=
                    =0A=
                    }=0A=
                    else {=0A=
    =0A=
                        this.hide();=0A=
    =0A=
                        oParentItem.focus();=0A=
                    =0A=
                    }=0A=
    =0A=
                }=0A=
    =0A=
                Event.preventDefault(oEvent);=0A=
=0A=
                stopMouseEventHandlers();=0A=
=0A=
            break;        =0A=
    =0A=
        }=0A=
=0A=
=0A=
    }=0A=
=0A=
=0A=
    if (oEvent.keyCode =3D=3D 27) { // Esc key=0A=
=0A=
        if (this.cfg.getProperty("position") =3D=3D "dynamic") {=0A=
        =0A=
            this.hide();=0A=
=0A=
            if (this.parent) {=0A=
=0A=
                this.parent.focus();=0A=
            =0A=
            }=0A=
=0A=
        }=0A=
        else if (this.activeItem) {=0A=
=0A=
            oSubmenu =3D this.activeItem.cfg.getProperty("submenu");=0A=
=0A=
            if (oSubmenu && oSubmenu.cfg.getProperty("visible")) {=0A=
            =0A=
                oSubmenu.hide();=0A=
                this.activeItem.focus();=0A=
            =0A=
            }=0A=
            else {=0A=
=0A=
                this.activeItem.blur();=0A=
                this.activeItem.cfg.setProperty("selected", false);=0A=
        =0A=
            }=0A=
        =0A=
        }=0A=
=0A=
=0A=
        Event.preventDefault(oEvent);=0A=
    =0A=
    }=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onKeyPress=0A=
* @description "keypress" event handler for a Menu instance.=0A=
* @protected=0A=
* @param {String} p_sType The name of the event that was fired.=0A=
* @param {Array} p_aArgs Collection of arguments sent when the event =0A=
* was fired.=0A=
*/=0A=
_onKeyPress: function (p_sType, p_aArgs) {=0A=
    =0A=
    var oEvent =3D p_aArgs[0];=0A=
=0A=
=0A=
    if (oEvent.keyCode =3D=3D 40 || oEvent.keyCode =3D=3D 38) {=0A=
=0A=
        Event.preventDefault(oEvent);=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onYChange=0A=
* @description "y" event handler for a Menu instance.=0A=
* @protected=0A=
* @param {String} p_sType The name of the event that was fired.=0A=
* @param {Array} p_aArgs Collection of arguments sent when the event =0A=
* was fired.=0A=
*/=0A=
_onYChange: function (p_sType, p_aArgs) {=0A=
=0A=
    var oParent =3D this.parent,=0A=
        nScrollTop,=0A=
        oIFrame,=0A=
        nY;=0A=
=0A=
=0A=
    if (oParent) {=0A=
=0A=
        nScrollTop =3D oParent.parent.body.scrollTop;=0A=
=0A=
=0A=
        if (nScrollTop > 0) {=0A=
    =0A=
            nY =3D (this.cfg.getProperty("y") - nScrollTop);=0A=
            =0A=
            Dom.setY(this.element, nY);=0A=
=0A=
            oIFrame =3D this.iframe;            =0A=
    =0A=
=0A=
            if (oIFrame) {=0A=
    =0A=
                Dom.setY(oIFrame, nY);=0A=
    =0A=
            }=0A=
            =0A=
            this.cfg.setProperty("y", nY, true);=0A=
        =0A=
        }=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onScrollTargetMouseOver=0A=
* @description "mouseover" event handler for the menu's "header" and =
"footer" =0A=
* elements.  Used to scroll the body of the menu up and down when the =0A=
* menu's "maxheight" configuration property is set to a value greater =
than 0.=0A=
* @protected=0A=
* @param {Event} p_oEvent Object representing the DOM event object =
passed =0A=
* back by the event utility (YAHOO.util.Event).=0A=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onScrollTargetMouseOver: function (p_oEvent, p_oMenu) {=0A=
=0A=
    this._cancelHideDelay();=0A=
=0A=
    var oTarget =3D Event.getTarget(p_oEvent),=0A=
        oBody =3D this.body,=0A=
        me =3D this,=0A=
        nScrollIncrement =3D this.cfg.getProperty("scrollincrement"),=0A=
        nScrollTarget,=0A=
        fnScrollFunction;=0A=
=0A=
=0A=
    function scrollBodyDown() {=0A=
=0A=
        var nScrollTop =3D oBody.scrollTop;=0A=
=0A=
=0A=
        if (nScrollTop < nScrollTarget) {=0A=
=0A=
            oBody.scrollTop =3D (nScrollTop + nScrollIncrement);=0A=
=0A=
            me._enableScrollHeader();=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            oBody.scrollTop =3D nScrollTarget;=0A=
            =0A=
            window.clearInterval(me._nBodyScrollId);=0A=
=0A=
            me._disableScrollFooter();=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    function scrollBodyUp() {=0A=
=0A=
        var nScrollTop =3D oBody.scrollTop;=0A=
=0A=
=0A=
        if (nScrollTop > 0) {=0A=
=0A=
            oBody.scrollTop =3D (nScrollTop - nScrollIncrement);=0A=
=0A=
            me._enableScrollFooter();=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            oBody.scrollTop =3D 0;=0A=
            =0A=
            window.clearInterval(me._nBodyScrollId);=0A=
=0A=
            me._disableScrollHeader();=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
    =0A=
    if (Dom.hasClass(oTarget, "hd")) {=0A=
=0A=
        fnScrollFunction =3D scrollBodyUp;=0A=
    =0A=
    }=0A=
    else {=0A=
=0A=
        nScrollTarget =3D oBody.scrollHeight - oBody.offsetHeight;=0A=
=0A=
        fnScrollFunction =3D scrollBodyDown;=0A=
    =0A=
    }=0A=
=0A=
=0A=
    this._nBodyScrollId =3D window.setInterval(fnScrollFunction, 10);=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onScrollTargetMouseOut=0A=
* @description "mouseout" event handler for the menu's "header" and =
"footer" =0A=
* elements.  Used to stop scrolling the body of the menu up and down =
when the =0A=
* menu's "maxheight" configuration property is set to a value greater =
than 0.=0A=
* @protected=0A=
* @param {Event} p_oEvent Object representing the DOM event object =
passed =0A=
* back by the event utility (YAHOO.util.Event).=0A=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onScrollTargetMouseOut: function (p_oEvent, p_oMenu) {=0A=
=0A=
    window.clearInterval(this._nBodyScrollId);=0A=
=0A=
    this._cancelHideDelay();=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Private methods=0A=
=0A=
=0A=
/**=0A=
* @method _onInit=0A=
* @description "init" event handler for the menu.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onInit: function (p_sType, p_aArgs) {=0A=
=0A=
    this.cfg.subscribeToConfigEvent("visible", this._onVisibleChange);=0A=
=0A=
    var bRootMenu =3D !this.parent,=0A=
        bLazyLoad =3D this.lazyLoad;=0A=
=0A=
=0A=
    /*=0A=
        Automatically initialize a menu's subtree if:=0A=
=0A=
        1) This is the root menu and lazyload is off=0A=
        =0A=
        2) This is the root menu, lazyload is on, but the menu is =0A=
           already visible=0A=
=0A=
        3) This menu is a submenu and lazyload is off=0A=
    */=0A=
=0A=
=0A=
=0A=
    if (((bRootMenu && !bLazyLoad) || =0A=
        (bRootMenu && (this.cfg.getProperty("visible") || =0A=
        this.cfg.getProperty("position") =3D=3D "static")) || =0A=
        (!bRootMenu && !bLazyLoad)) && this.getItemGroups().length =
=3D=3D=3D 0) {=0A=
=0A=
        if (this.srcElement) {=0A=
=0A=
            this._initSubTree();=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if (this.itemData) {=0A=
=0A=
            this.addItems(this.itemData);=0A=
=0A=
        }=0A=
    =0A=
    }=0A=
    else if (bLazyLoad) {=0A=
=0A=
        this.cfg.fireQueue();=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onBeforeRender=0A=
* @description "beforerender" event handler for the menu.  Appends all =
of the =0A=
* <code>&#60;ul&#62;</code>, <code>&#60;li&#62;</code> and their =
accompanying =0A=
* title elements to the body element of the menu.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onBeforeRender: function (p_sType, p_aArgs) {=0A=
=0A=
    var oEl =3D this.element,=0A=
        nListElements =3D this._aListElements.length,=0A=
        bFirstList =3D true,=0A=
        i =3D 0,=0A=
        oUL,=0A=
        oGroupTitle;=0A=
=0A=
    if (nListElements > 0) {=0A=
=0A=
        do {=0A=
=0A=
            oUL =3D this._aListElements[i];=0A=
=0A=
            if (oUL) {=0A=
=0A=
                if (bFirstList) {=0A=
        =0A=
                    Dom.addClass(oUL, "first-of-type");=0A=
                    bFirstList =3D false;=0A=
        =0A=
                }=0A=
=0A=
=0A=
                if (!Dom.isAncestor(oEl, oUL)) {=0A=
=0A=
                    this.appendToBody(oUL);=0A=
=0A=
                }=0A=
=0A=
=0A=
                oGroupTitle =3D this._aGroupTitleElements[i];=0A=
=0A=
                if (oGroupTitle) {=0A=
=0A=
                    if (!Dom.isAncestor(oEl, oGroupTitle)) {=0A=
=0A=
                        oUL.parentNode.insertBefore(oGroupTitle, oUL);=0A=
=0A=
                    }=0A=
=0A=
=0A=
                    Dom.addClass(oUL, "hastitle");=0A=
=0A=
                }=0A=
=0A=
            }=0A=
=0A=
            i++;=0A=
=0A=
        }=0A=
        while(i < nListElements);=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onRender=0A=
* @description "render" event handler for the menu.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onRender: function (p_sType, p_aArgs) {=0A=
=0A=
    if (this.cfg.getProperty("position") =3D=3D "dynamic") { =0A=
=0A=
        if (!this.cfg.getProperty("visible")) {=0A=
=0A=
            this.positionOffScreen();=0A=
=0A=
        }=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
/**=0A=
* @method _onBeforeShow=0A=
* @description "beforeshow" event handler for the menu.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onBeforeShow: function (p_sType, p_aArgs) {=0A=
=0A=
    var nOptions,=0A=
        n,=0A=
        nViewportHeight,=0A=
        oRegion,=0A=
        oSrcElement;=0A=
=0A=
=0A=
    if (this.lazyLoad && this.getItemGroups().length =3D=3D=3D 0) {=0A=
=0A=
        if (this.srcElement) {=0A=
        =0A=
            this._initSubTree();=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (this.itemData) {=0A=
=0A=
            if (this.parent && this.parent.parent && =0A=
                this.parent.parent.srcElement && =0A=
                this.parent.parent.srcElement.tagName.toUpperCase() =
=3D=3D =0A=
                "SELECT") {=0A=
=0A=
                nOptions =3D this.itemData.length;=0A=
    =0A=
                for(n=3D0; n<nOptions; n++) {=0A=
=0A=
                    if (this.itemData[n].tagName) {=0A=
=0A=
                        this.addItem((new =
this.ITEM_TYPE(this.itemData[n])));=0A=
    =0A=
                    }=0A=
    =0A=
                }=0A=
            =0A=
            }=0A=
            else {=0A=
=0A=
                this.addItems(this.itemData);=0A=
            =0A=
            }=0A=
        =0A=
        }=0A=
=0A=
=0A=
        oSrcElement =3D this.srcElement;=0A=
=0A=
        if (oSrcElement) {=0A=
=0A=
            if (oSrcElement.tagName.toUpperCase() =3D=3D "SELECT") {=0A=
=0A=
                if (Dom.inDocument(oSrcElement)) {=0A=
=0A=
                    this.render(oSrcElement.parentNode);=0A=
                =0A=
                }=0A=
                else {=0A=
                =0A=
                    this.render(this.cfg.getProperty("container"));=0A=
                =0A=
                }=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                this.render();=0A=
=0A=
            }=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            if (this.parent) {=0A=
=0A=
                this.render(this.parent.element);            =0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                this.render(this.cfg.getProperty("container"));=0A=
=0A=
            }                =0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    var nMaxHeight =3D this.cfg.getProperty("maxheight"),=0A=
        nMinScrollHeight =3D this.cfg.getProperty("minscrollheight"),=0A=
        bDynamicPos =3D this.cfg.getProperty("position") =3D=3D =
"dynamic";=0A=
=0A=
=0A=
    if (!this.parent && bDynamicPos) {=0A=
=0A=
        this.cfg.refireEvent("xy");=0A=
   =0A=
    }=0A=
=0A=
=0A=
    function clearMaxHeight() {=0A=
    =0A=
        this.cfg.setProperty("maxheight", 0);=0A=
    =0A=
        this.hideEvent.unsubscribe(clearMaxHeight);=0A=
    =0A=
    }=0A=
=0A=
=0A=
    if (!(this instanceof YAHOO.widget.MenuBar) && bDynamicPos) {=0A=
=0A=
=0A=
        if (nMaxHeight =3D=3D=3D 0) {=0A=
=0A=
            nViewportHeight =3D Dom.getViewportHeight();=0A=
    =0A=
    =0A=
            if (this.parent && =0A=
                this.parent.parent instanceof YAHOO.widget.MenuBar) {=0A=
               =0A=
                oRegion =3D =
YAHOO.util.Region.getRegion(this.parent.element);=0A=
                =0A=
                nViewportHeight =3D (nViewportHeight - oRegion.bottom);=0A=
    =0A=
            }=0A=
    =0A=
    =0A=
            if (this.element.offsetHeight >=3D nViewportHeight) {=0A=
    =0A=
                nMaxHeight =3D (nViewportHeight - =
(Overlay.VIEWPORT_OFFSET * 2));=0A=
=0A=
                if (nMaxHeight < nMinScrollHeight) {=0A=
=0A=
                    nMaxHeight =3D nMinScrollHeight;=0A=
                =0A=
                }=0A=
=0A=
                this.cfg.setProperty("maxheight", nMaxHeight);=0A=
=0A=
                this.hideEvent.subscribe(clearMaxHeight);=0A=
=0A=
            }=0A=
        =0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onShow=0A=
* @description "show" event handler for the menu.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onShow: function (p_sType, p_aArgs) {=0A=
=0A=
    var oParent =3D this.parent,=0A=
        oParentMenu,=0A=
        aParentAlignment,=0A=
        aAlignment;=0A=
=0A=
=0A=
    function disableAutoSubmenuDisplay(p_oEvent) {=0A=
=0A=
        var oTarget;=0A=
=0A=
        if (p_oEvent.type =3D=3D "mousedown" || (p_oEvent.type =3D=3D =
"keydown" && =0A=
            p_oEvent.keyCode =3D=3D 27)) {=0A=
=0A=
            /*  =0A=
                Set the "autosubmenudisplay" to "false" if the user=0A=
                clicks outside the menu bar.=0A=
            */=0A=
=0A=
            oTarget =3D Event.getTarget(p_oEvent);=0A=
=0A=
            if (oTarget !=3D oParentMenu.element || =0A=
                !Dom.isAncestor(oParentMenu.element, oTarget)) {=0A=
=0A=
                oParentMenu.cfg.setProperty("autosubmenudisplay", false);=0A=
=0A=
                Event.removeListener(document, "mousedown", =0A=
                        disableAutoSubmenuDisplay);=0A=
=0A=
                Event.removeListener(document, "keydown", =0A=
                        disableAutoSubmenuDisplay);=0A=
=0A=
            }=0A=
        =0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    if (oParent) {=0A=
=0A=
        oParentMenu =3D oParent.parent;=0A=
        aParentAlignment =3D =
oParentMenu.cfg.getProperty("submenualignment");=0A=
        aAlignment =3D this.cfg.getProperty("submenualignment");=0A=
=0A=
=0A=
        if ((aParentAlignment[0] !=3D aAlignment[0]) &&=0A=
            (aParentAlignment[1] !=3D aAlignment[1])) {=0A=
=0A=
            this.cfg.setProperty("submenualignment", =0A=
                [aParentAlignment[0], aParentAlignment[1]]);=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if (!oParentMenu.cfg.getProperty("autosubmenudisplay") && =0A=
            (oParentMenu instanceof YAHOO.widget.MenuBar || =0A=
            oParentMenu.cfg.getProperty("position") =3D=3D "static")) {=0A=
=0A=
            oParentMenu.cfg.setProperty("autosubmenudisplay", true);=0A=
=0A=
            Event.on(document, "mousedown", disableAutoSubmenuDisplay);  =
                           =0A=
            Event.on(document, "keydown", disableAutoSubmenuDisplay);=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onBeforeHide=0A=
* @description "beforehide" event handler for the menu.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onBeforeHide: function (p_sType, p_aArgs) {=0A=
=0A=
    var oActiveItem =3D this.activeItem,=0A=
        oConfig,=0A=
        oSubmenu;=0A=
=0A=
    if (oActiveItem) {=0A=
=0A=
        oConfig =3D oActiveItem.cfg;=0A=
=0A=
        oConfig.setProperty("selected", false);=0A=
=0A=
        oSubmenu =3D oConfig.getProperty("submenu");=0A=
=0A=
        if (oSubmenu) {=0A=
=0A=
            oSubmenu.hide();=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
    if (this.getRoot() =3D=3D this) {=0A=
=0A=
        this.blur();=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onParentMenuConfigChange=0A=
* @description "configchange" event handler for a submenu.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu =
that =0A=
* subscribed to the event.=0A=
*/=0A=
_onParentMenuConfigChange: function (p_sType, p_aArgs, p_oSubmenu) {=0A=
    =0A=
    var sPropertyName =3D p_aArgs[0][0],=0A=
        oPropertyValue =3D p_aArgs[0][1];=0A=
=0A=
    switch(sPropertyName) {=0A=
=0A=
        case "iframe":=0A=
        case "constraintoviewport":=0A=
        case "hidedelay":=0A=
        case "showdelay":=0A=
        case "submenuhidedelay":=0A=
        case "clicktohide":=0A=
        case "effect":=0A=
        case "classname":=0A=
        case "scrollincrement":=0A=
        case "minscrollheight":=0A=
=0A=
            p_oSubmenu.cfg.setProperty(sPropertyName, oPropertyValue);=0A=
                =0A=
        break;        =0A=
        =0A=
    }=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onParentMenuRender=0A=
* @description "render" event handler for a submenu.  Renders a  =0A=
* submenu in response to the firing of its parent's "render" event.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu =
that =0A=
* subscribed to the event.=0A=
*/=0A=
_onParentMenuRender: function (p_sType, p_aArgs, p_oSubmenu) {=0A=
=0A=
    var oParentCfg =3D p_oSubmenu.parent.parent.cfg,=0A=
=0A=
        oConfig =3D {=0A=
=0A=
            constraintoviewport: =
oParentCfg.getProperty("constraintoviewport"),=0A=
=0A=
            xy: [0,0],=0A=
=0A=
            clicktohide: oParentCfg.getProperty("clicktohide"),=0A=
                =0A=
            effect: oParentCfg.getProperty("effect"),=0A=
=0A=
            showdelay: oParentCfg.getProperty("showdelay"),=0A=
            =0A=
            hidedelay: oParentCfg.getProperty("hidedelay"),=0A=
=0A=
            submenuhidedelay: oParentCfg.getProperty("submenuhidedelay"),=0A=
=0A=
            classname: oParentCfg.getProperty("classname"),=0A=
            =0A=
            scrollincrement: oParentCfg.getProperty("scrollincrement"),=0A=
            =0A=
            minscrollheight: oParentCfg.getProperty("minscrollheight"),=0A=
            =0A=
            iframe: oParentCfg.getProperty("iframe")=0A=
=0A=
        },=0A=
        =0A=
        oLI;=0A=
=0A=
=0A=
    p_oSubmenu.cfg.applyConfig(oConfig);=0A=
=0A=
=0A=
    if (!this.lazyLoad) {=0A=
=0A=
        oLI =3D this.parent.element;=0A=
=0A=
        if (this.element.parentNode =3D=3D oLI) {=0A=
    =0A=
            this.render();=0A=
    =0A=
        }=0A=
        else {=0A=
=0A=
            this.render(oLI);=0A=
    =0A=
        }=0A=
=0A=
    }=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onSubmenuBeforeShow=0A=
* @description "beforeshow" event handler for a submenu.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onSubmenuBeforeShow: function (p_sType, p_aArgs) {=0A=
=0A=
    var oParent =3D this.parent,=0A=
        aAlignment =3D =
oParent.parent.cfg.getProperty("submenualignment");=0A=
=0A=
=0A=
    if (!this.cfg.getProperty("context")) {=0A=
    =0A=
        this.cfg.setProperty("context", =0A=
            [oParent.element, aAlignment[0], aAlignment[1]]);=0A=
=0A=
    }=0A=
    else {=0A=
=0A=
        this.align();=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onMenuItemFocus=0A=
* @description "focus" event handler for the menu's items.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onMenuItemFocus: function (p_sType, p_aArgs) {=0A=
=0A=
    this.parent.focusEvent.fire(this);=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onMenuItemBlur=0A=
* @description "blur" event handler for the menu's items.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event =0A=
* that was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
_onMenuItemBlur: function (p_sType, p_aArgs) {=0A=
=0A=
    this.parent.blurEvent.fire(this);=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onMenuItemDestroy=0A=
* @description "destroy" event handler for the menu's items.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event =0A=
* that was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu =
item =0A=
* that fired the event.=0A=
*/=0A=
_onMenuItemDestroy: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
    this._removeItemFromGroupByValue(p_oItem.groupIndex, p_oItem);=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onMenuItemConfigChange=0A=
* @description "configchange" event handler for the menu's items.=0A=
* @private=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.MenuItem} p_oItem Object representing the menu =
item =0A=
* that fired the event.=0A=
*/=0A=
_onMenuItemConfigChange: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
    var sPropertyName =3D p_aArgs[0][0],=0A=
        oPropertyValue =3D p_aArgs[0][1],=0A=
        oSubmenu;=0A=
=0A=
=0A=
    switch(sPropertyName) {=0A=
=0A=
        case "selected":=0A=
=0A=
            if (oPropertyValue =3D=3D=3D true) {=0A=
=0A=
                this.activeItem =3D p_oItem;=0A=
            =0A=
            }=0A=
=0A=
        break;=0A=
=0A=
        case "submenu":=0A=
=0A=
            oSubmenu =3D p_aArgs[0][1];=0A=
=0A=
            if (oSubmenu) {=0A=
=0A=
                this._configureSubmenu(p_oItem);=0A=
=0A=
            }=0A=
=0A=
        break;=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Public event handlers for configuration properties=0A=
=0A=
=0A=
/**=0A=
* @method enforceConstraints=0A=
* @description The default event handler executed when the moveEvent is =
fired,  =0A=
* if the "constraintoviewport" configuration property is set to true.=0A=
* @param {String} type The name of the event that was fired.=0A=
* @param {Array} args Collection of arguments sent when the =0A=
* event was fired.=0A=
* @param {Array} obj Array containing the current Menu instance =0A=
* and the item that fired the event.=0A=
*/=0A=
enforceConstraints: function (type, args, obj) {=0A=
=0A=
    var oParentMenuItem =3D this.parent,=0A=
        nViewportOffset =3D Overlay.VIEWPORT_OFFSET,=0A=
        oElement =3D this.element,=0A=
        oConfig =3D this.cfg,=0A=
        pos =3D args[0],=0A=
        offsetHeight =3D oElement.offsetHeight,=0A=
        offsetWidth =3D oElement.offsetWidth,=0A=
        viewPortWidth =3D Dom.getViewportWidth(),=0A=
        viewPortHeight =3D Dom.getViewportHeight(),=0A=
        nPadding =3D (oParentMenuItem && =0A=
            oParentMenuItem.parent instanceof YAHOO.widget.MenuBar) ? =0A=
            0 : nViewportOffset,=0A=
        aContext =3D oConfig.getProperty("context"),=0A=
        oContextElement =3D aContext ? aContext[0] : null,=0A=
        topConstraint,=0A=
        leftConstraint,=0A=
        bottomConstraint,=0A=
        rightConstraint,=0A=
        scrollX,=0A=
        scrollY,=0A=
        x,=0A=
        y;=0A=
    =0A=
=0A=
    if (offsetWidth < viewPortWidth) {=0A=
=0A=
        x =3D pos[0];=0A=
        scrollX =3D Dom.getDocumentScrollLeft();=0A=
        leftConstraint =3D scrollX + nPadding;=0A=
        rightConstraint =3D scrollX + viewPortWidth - offsetWidth - =
nPadding;=0A=
=0A=
        if (x < nViewportOffset) {=0A=
    =0A=
            x =3D leftConstraint;=0A=
    =0A=
        } else if ((x + offsetWidth) > viewPortWidth) {=0A=
    =0A=
            if(oContextElement &&=0A=
                ((x - oContextElement.offsetWidth) > offsetWidth)) {=0A=
    =0A=
                if (oParentMenuItem && =0A=
                    oParentMenuItem.parent instanceof =
YAHOO.widget.MenuBar) {=0A=
    =0A=
                    x =3D (x - (offsetWidth - =
oContextElement.offsetWidth));=0A=
    =0A=
                }=0A=
                else {=0A=
    =0A=
                    x =3D (x - (oContextElement.offsetWidth + =
offsetWidth));=0A=
    =0A=
                }=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                x =3D rightConstraint;=0A=
    =0A=
            }=0A=
    =0A=
        }=0A=
    =0A=
    }=0A=
=0A=
=0A=
    if (offsetHeight < viewPortHeight) {=0A=
=0A=
        y =3D pos[1];=0A=
        scrollY =3D Dom.getDocumentScrollTop();=0A=
        topConstraint =3D scrollY + nPadding;=0A=
        bottomConstraint =3D scrollY + viewPortHeight - offsetHeight - =
nPadding;=0A=
=0A=
=0A=
=0A=
        if (y < nViewportOffset) {=0A=
    =0A=
            y =3D topConstraint;=0A=
    =0A=
        } else if (y > bottomConstraint) {=0A=
    =0A=
            if (oContextElement && (y > offsetHeight)) {=0A=
    =0A=
                y =3D ((y + oContextElement.offsetHeight) - =
offsetHeight);=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                y =3D bottomConstraint;=0A=
                =0A=
=0A=
    =0A=
            }=0A=
    =0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    oConfig.setProperty("x", x, true);=0A=
    oConfig.setProperty("y", y, true);=0A=
    oConfig.setProperty("xy", [x,y], true);=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method configVisible=0A=
* @description Event handler for when the "visible" configuration =
property =0A=
* the menu changes.=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
configVisible: function (p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var bVisible,=0A=
        sDisplay;=0A=
=0A=
    if (this.cfg.getProperty("position") =3D=3D "dynamic") {=0A=
=0A=
        Menu.superclass.configVisible.call(this, p_sType, p_aArgs, =
p_oMenu);=0A=
=0A=
    }=0A=
    else {=0A=
=0A=
        bVisible =3D p_aArgs[0];=0A=
        sDisplay =3D Dom.getStyle(this.element, "display");=0A=
=0A=
        Dom.setStyle(this.element, "visibility", "visible");=0A=
=0A=
        if (bVisible) {=0A=
=0A=
            if (sDisplay !=3D "block") {=0A=
                this.beforeShowEvent.fire();=0A=
                Dom.setStyle(this.element, "display", "block");=0A=
                this.showEvent.fire();=0A=
            }=0A=
        =0A=
        }=0A=
        else {=0A=
=0A=
			if (sDisplay =3D=3D "block") {=0A=
				this.beforeHideEvent.fire();=0A=
				Dom.setStyle(this.element, "display", "none");=0A=
				this.hideEvent.fire();=0A=
			}=0A=
        =0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method configPosition=0A=
* @description Event handler for when the "position" configuration =
property =0A=
* of the menu changes.=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
configPosition: function (p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var oElement =3D this.element,=0A=
        sCSSPosition =3D p_aArgs[0] =3D=3D "static" ? "static" : =
"absolute",=0A=
        oCfg =3D this.cfg,=0A=
        nZIndex;=0A=
=0A=
=0A=
    Dom.setStyle(oElement, "position", sCSSPosition);=0A=
=0A=
=0A=
    if (sCSSPosition =3D=3D "static") {=0A=
=0A=
        // Statically positioned menus are visible by default=0A=
        =0A=
        Dom.setStyle(oElement, "display", "block");=0A=
=0A=
        oCfg.setProperty("visible", true);=0A=
=0A=
    }=0A=
    else {=0A=
=0A=
        /*=0A=
            Even though the "visible" property is queued to =0A=
            "false" by default, we need to set the "visibility" property =
to =0A=
            "hidden" since Overlay's "configVisible" implementation =
checks the =0A=
            element's "visibility" style property before deciding =
whether =0A=
            or not to show an Overlay instance.=0A=
        */=0A=
=0A=
        Dom.setStyle(oElement, "visibility", "hidden");=0A=
    =0A=
    }=0A=
=0A=
=0A=
    if (sCSSPosition =3D=3D "absolute") {=0A=
=0A=
        nZIndex =3D oCfg.getProperty("zindex");=0A=
=0A=
        if (!nZIndex || nZIndex =3D=3D=3D 0) {=0A=
=0A=
            nZIndex =3D this.parent ? =0A=
                (this.parent.parent.cfg.getProperty("zindex") + 1) : 1;=0A=
=0A=
            oCfg.setProperty("zindex", nZIndex);=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method configIframe=0A=
* @description Event handler for when the "iframe" configuration =
property of =0A=
* the menu changes.=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
configIframe: function (p_sType, p_aArgs, p_oMenu) {    =0A=
=0A=
    if (this.cfg.getProperty("position") =3D=3D "dynamic") {=0A=
=0A=
        Menu.superclass.configIframe.call(this, p_sType, p_aArgs, =
p_oMenu);=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method configHideDelay=0A=
* @description Event handler for when the "hidedelay" configuration =
property =0A=
* of the menu changes.=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
configHideDelay: function (p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var nHideDelay =3D p_aArgs[0],=0A=
        oMouseOutEvent =3D this.mouseOutEvent,=0A=
        oMouseOverEvent =3D this.mouseOverEvent,=0A=
        oKeyDownEvent =3D this.keyDownEvent;=0A=
=0A=
    if (nHideDelay > 0) {=0A=
=0A=
        /*=0A=
            Only assign event handlers once. This way the user change =0A=
            the value for the hidedelay as many times as they want.=0A=
        */=0A=
=0A=
        if (!this._bHideDelayEventHandlersAssigned) {=0A=
=0A=
            oMouseOutEvent.subscribe(this._execHideDelay);=0A=
            oMouseOverEvent.subscribe(this._cancelHideDelay);=0A=
            oKeyDownEvent.subscribe(this._cancelHideDelay);=0A=
=0A=
            this._bHideDelayEventHandlersAssigned =3D true;=0A=
        =0A=
        }=0A=
=0A=
    }=0A=
    else {=0A=
=0A=
        oMouseOutEvent.unsubscribe(this._execHideDelay);=0A=
        oMouseOverEvent.unsubscribe(this._cancelHideDelay);=0A=
        oKeyDownEvent.unsubscribe(this._cancelHideDelay);=0A=
=0A=
        this._bHideDelayEventHandlersAssigned =3D false;=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method configContainer=0A=
* @description Event handler for when the "container" configuration =
property =0A=
* of the menu changes.=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
configContainer: function (p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
	var oElement =3D p_aArgs[0];=0A=
=0A=
	if (typeof oElement =3D=3D 'string') {=0A=
=0A=
        this.cfg.setProperty("container", =
document.getElementById(oElement), =0A=
                true);=0A=
=0A=
	}=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _setMaxHeight=0A=
* @description "renderEvent" handler used to defer the setting of the =0A=
* "maxheight" configuration property until the menu is rendered in lazy =0A=
* load scenarios.=0A=
* @param {String} p_sType The name of the event that was fired.=0A=
* @param {Array} p_aArgs Collection of arguments sent when the event =0A=
* was fired.=0A=
* @param {Number} p_nMaxHeight Number representing the value to set for =
the =0A=
* "maxheight" configuration property.=0A=
* @private=0A=
*/=0A=
_setMaxHeight: function (p_sType, p_aArgs, p_nMaxHeight) {=0A=
=0A=
    this.cfg.setProperty("maxheight", p_nMaxHeight);=0A=
    this.renderEvent.unsubscribe(this._setMaxHeight);=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method configMaxHeight=0A=
* @description Event handler for when the "maxheight" configuration =
property of =0A=
* a Menu changes.=0A=
* @param {String} p_sType The name of the event that was fired.=0A=
* @param {Array} p_aArgs Collection of arguments sent when the event =0A=
* was fired.=0A=
* @param {YAHOO.widget.Menu} p_oMenu The Menu instance fired=0A=
* the event.=0A=
*/=0A=
configMaxHeight: function (p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var nMaxHeight =3D p_aArgs[0],=0A=
        oElement =3D this.element,=0A=
        oBody =3D this.body,=0A=
        oHeader =3D this.header,=0A=
        oFooter =3D this.footer,=0A=
        fnMouseOver =3D this._onScrollTargetMouseOver,=0A=
        fnMouseOut =3D this._onScrollTargetMouseOut,=0A=
        nMinScrollHeight =3D this.cfg.getProperty("minscrollheight"),=0A=
        nHeight,=0A=
        nOffsetWidth;=0A=
=0A=
=0A=
    if (nMaxHeight !=3D=3D 0 && nMaxHeight < nMinScrollHeight) {=0A=
    =0A=
        nMaxHeight =3D nMinScrollHeight;=0A=
    =0A=
    }=0A=
=0A=
=0A=
    if (this.lazyLoad && !oBody) {=0A=
=0A=
        this.renderEvent.unsubscribe(this._setMaxHeight);=0A=
    =0A=
        if (nMaxHeight > 0) {=0A=
=0A=
            this.renderEvent.subscribe(this._setMaxHeight, nMaxHeight, =
this);=0A=
=0A=
        }=0A=
=0A=
        return;=0A=
    =0A=
    }=0A=
=0A=
=0A=
    Dom.setStyle(oBody, "height", "");=0A=
    Dom.removeClass(oBody, "yui-menu-body-scrolled");=0A=
=0A=
=0A=
    /*=0A=
        There is a bug in gecko-based browsers where an element whose =0A=
        "position" property is set to "absolute" and "overflow" property =
is set =0A=
        to "hidden" will not render at the correct width when its =0A=
        offsetParent's "position" property is also set to "absolute."  =
It is =0A=
        possible to work around this bug by specifying a value for the =
width =0A=
        property in addition to overflow.=0A=
    */=0A=
=0A=
    if (UA.gecko && this.parent && this.parent.parent && =0A=
        this.parent.parent.cfg.getProperty("position") =3D=3D "dynamic" =
&& =0A=
        !this.cfg.getProperty("width")) {=0A=
=0A=
        nOffsetWidth =3D oElement.offsetWidth;=0A=
=0A=
        /*=0A=
            Measuring the difference of the offsetWidth before and after=0A=
            setting the "width" style attribute allows us to compute the =0A=
            about of padding and borders applied to the element, which =
in =0A=
            turn allows us to set the "width" property correctly.=0A=
        */=0A=
        =0A=
        oElement.style.width =3D nOffsetWidth + "px";=0A=
        oElement.style.width =3D =0A=
                (nOffsetWidth - (oElement.offsetWidth - nOffsetWidth)) + =
"px";=0A=
=0A=
    }=0A=
=0A=
=0A=
    if (!oHeader && !oFooter) {=0A=
=0A=
        this.setHeader("&#32;");=0A=
        this.setFooter("&#32;");=0A=
=0A=
        oHeader =3D this.header;=0A=
        oFooter =3D this.footer;=0A=
=0A=
        Dom.addClass(oHeader, "topscrollbar");=0A=
        Dom.addClass(oFooter, "bottomscrollbar");=0A=
        =0A=
        oElement.insertBefore(oHeader, oBody);=0A=
        oElement.appendChild(oFooter);=0A=
    =0A=
    }=0A=
=0A=
=0A=
    nHeight =3D (nMaxHeight - (oHeader.offsetHeight + =
oHeader.offsetHeight));=0A=
=0A=
=0A=
=0A=
    if (nHeight > 0 && (oBody.offsetHeight > nMaxHeight)) {=0A=
=0A=
        Dom.addClass(oBody, "yui-menu-body-scrolled");=0A=
        Dom.setStyle(oBody, "height", (nHeight + "px"));=0A=
=0A=
        Event.on(oHeader, "mouseover", fnMouseOver, this, true);=0A=
        Event.on(oHeader, "mouseout", fnMouseOut, this, true);=0A=
        Event.on(oFooter, "mouseover", fnMouseOver, this, true);=0A=
        Event.on(oFooter, "mouseout", fnMouseOut, this, true);=0A=
=0A=
        this._disableScrollHeader();=0A=
        this._enableScrollFooter();=0A=
=0A=
    }=0A=
    else if (oHeader && oFooter) {=0A=
=0A=
        this._enableScrollHeader();=0A=
        this._enableScrollFooter();=0A=
=0A=
        Event.removeListener(oHeader, "mouseover", fnMouseOver);=0A=
        Event.removeListener(oHeader, "mouseout", fnMouseOut);=0A=
        Event.removeListener(oFooter, "mouseover", fnMouseOver);=0A=
        Event.removeListener(oFooter, "mouseout", fnMouseOut);=0A=
=0A=
        oElement.removeChild(oHeader);=0A=
        oElement.removeChild(oFooter);=0A=
=0A=
        this.header =3D null;=0A=
        this.footer =3D null;=0A=
    =0A=
    }=0A=
=0A=
    this.cfg.refireEvent("iframe");=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method configClassName=0A=
* @description Event handler for when the "classname" configuration =
property of =0A=
* a menu changes.=0A=
* @param {String} p_sType The name of the event that was fired.=0A=
* @param {Array} p_aArgs Collection of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.Menu} p_oMenu The Menu instance fired the event.=0A=
*/=0A=
configClassName: function (p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var sClassName =3D p_aArgs[0];=0A=
=0A=
    if (this._sClassName) {=0A=
=0A=
        Dom.removeClass(this.element, this._sClassName);=0A=
=0A=
    }=0A=
=0A=
    Dom.addClass(this.element, sClassName);=0A=
    this._sClassName =3D sClassName;=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onItemAdded=0A=
* @description "itemadded" event handler for a Menu instance.=0A=
* @private=0A=
* @param {String} p_sType The name of the event that was fired.=0A=
* @param {Array} p_aArgs Collection of arguments sent when the event =0A=
* was fired.=0A=
*/=0A=
_onItemAdded: function (p_sType, p_aArgs) {=0A=
=0A=
    var oItem =3D p_aArgs[0];=0A=
    =0A=
    if (oItem) {=0A=
=0A=
        oItem.cfg.setProperty("disabled", true);=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method configDisabled=0A=
* @description Event handler for when the "disabled" configuration =
property of =0A=
* a menu changes.=0A=
* @param {String} p_sType The name of the event that was fired.=0A=
* @param {Array} p_aArgs Collection of arguments sent when the event was =
fired.=0A=
* @param {YAHOO.widget.Menu} p_oMenu The Menu instance fired the event.=0A=
*/=0A=
configDisabled: function (p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var bDisabled =3D p_aArgs[0],=0A=
        aItems =3D this.getItems(),=0A=
        nItems,=0A=
        i;=0A=
=0A=
    if (Lang.isArray(aItems)) {=0A=
=0A=
        nItems =3D aItems.length;=0A=
    =0A=
        if (nItems > 0) {=0A=
        =0A=
            i =3D nItems - 1;=0A=
    =0A=
            do {=0A=
    =0A=
                aItems[i].cfg.setProperty("disabled", bDisabled);=0A=
            =0A=
            }=0A=
            while (i--);=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if (bDisabled) {=0A=
=0A=
            this.clearActiveItem(true);=0A=
=0A=
            Dom.addClass(this.element, "disabled");=0A=
=0A=
            this.itemAddedEvent.subscribe(this._onItemAdded);=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            Dom.removeClass(this.element, "disabled");=0A=
=0A=
            this.itemAddedEvent.unsubscribe(this._onItemAdded);=0A=
=0A=
        }=0A=
        =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method onRender=0A=
* @description "render" event handler for the menu.=0A=
* @param {String} p_sType String representing the name of the event that =0A=
* was fired.=0A=
* @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
*/=0A=
onRender: function (p_sType, p_aArgs) {=0A=
=0A=
    function sizeShadow() {=0A=
=0A=
        var oElement =3D this.element,=0A=
            oShadow =3D this._shadow;=0A=
    =0A=
        if (oShadow && oElement) {=0A=
=0A=
            oShadow.style.width =3D (oElement.offsetWidth + 6) + "px";=0A=
            oShadow.style.height =3D (oElement.offsetHeight + 1) + "px";=0A=
            =0A=
        }=0A=
    =0A=
    }=0A=
=0A=
=0A=
    function replaceShadow() {=0A=
=0A=
        this.element.appendChild(this._shadow);=0A=
=0A=
    }=0A=
=0A=
=0A=
    function addShadowVisibleClass() {=0A=
    =0A=
        Dom.addClass(this._shadow, "yui-menu-shadow-visible");=0A=
    =0A=
    }=0A=
    =0A=
=0A=
    function removeShadowVisibleClass() {=0A=
=0A=
        Dom.removeClass(this._shadow, "yui-menu-shadow-visible");=0A=
    =0A=
    }=0A=
=0A=
=0A=
    function createShadow() {=0A=
=0A=
        var oShadow =3D this._shadow,=0A=
            oElement,=0A=
            me;=0A=
=0A=
        if (!oShadow) {=0A=
=0A=
            oElement =3D this.element;=0A=
            me =3D this;=0A=
=0A=
            if (!m_oShadowTemplate) {=0A=
=0A=
                m_oShadowTemplate =3D document.createElement("div");=0A=
                m_oShadowTemplate.className =3D =0A=
                    "yui-menu-shadow yui-menu-shadow-visible";=0A=
            =0A=
            }=0A=
=0A=
            oShadow =3D m_oShadowTemplate.cloneNode(false);=0A=
=0A=
            oElement.appendChild(oShadow);=0A=
            =0A=
            this._shadow =3D oShadow;=0A=
=0A=
            this.beforeShowEvent.subscribe(addShadowVisibleClass);=0A=
            this.beforeHideEvent.subscribe(removeShadowVisibleClass);=0A=
=0A=
            if (UA.ie) {=0A=
        =0A=
                /*=0A=
                     Need to call sizeShadow & syncIframe via setTimeout =
for =0A=
                     IE 7 Quirks Mode and IE 6 Standards Mode and Quirks =
Mode =0A=
                     or the shadow and iframe shim will not be sized and =0A=
                     positioned properly.=0A=
                */=0A=
        =0A=
                window.setTimeout(function () { =0A=
        =0A=
                    sizeShadow.call(me); =0A=
                    me.syncIframe();=0A=
        =0A=
                }, 0);=0A=
=0A=
                this.cfg.subscribeToConfigEvent("width", sizeShadow);=0A=
                this.cfg.subscribeToConfigEvent("height", sizeShadow);=0A=
                this.cfg.subscribeToConfigEvent("maxheight", sizeShadow);=0A=
                this.changeContentEvent.subscribe(sizeShadow);=0A=
=0A=
                Module.textResizeEvent.subscribe(sizeShadow, me, true);=0A=
                =0A=
                this.destroyEvent.subscribe(function () {=0A=
                =0A=
                    Module.textResizeEvent.unsubscribe(sizeShadow, me);=0A=
                =0A=
                });=0A=
        =0A=
            }=0A=
=0A=
            this.cfg.subscribeToConfigEvent("maxheight", replaceShadow);=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    function onBeforeShow() {=0A=
    =0A=
        createShadow.call(this);=0A=
=0A=
        this.beforeShowEvent.unsubscribe(onBeforeShow);=0A=
    =0A=
    }=0A=
=0A=
=0A=
    if (this.cfg.getProperty("position") =3D=3D "dynamic") {=0A=
=0A=
        if (this.cfg.getProperty("visible")) {=0A=
=0A=
            createShadow.call(this);=0A=
        =0A=
        }=0A=
        else {=0A=
=0A=
            this.beforeShowEvent.subscribe(onBeforeShow);=0A=
        =0A=
        }=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
// Public methods=0A=
=0A=
=0A=
/**=0A=
* @method initEvents=0A=
* @description Initializes the custom events for the menu.=0A=
*/=0A=
initEvents: function () {=0A=
=0A=
	Menu.superclass.initEvents.call(this);=0A=
=0A=
    // Create custom events=0A=
=0A=
    var SIGNATURE =3D CustomEvent.LIST;=0A=
=0A=
    this.mouseOverEvent =3D this.createEvent(EVENT_TYPES.MOUSE_OVER);=0A=
    this.mouseOverEvent.signature =3D SIGNATURE;=0A=
=0A=
    this.mouseOutEvent =3D this.createEvent(EVENT_TYPES.MOUSE_OUT);=0A=
    this.mouseOutEvent.signature =3D SIGNATURE;=0A=
    =0A=
    this.mouseDownEvent =3D this.createEvent(EVENT_TYPES.MOUSE_DOWN);=0A=
    this.mouseDownEvent.signature =3D SIGNATURE;=0A=
=0A=
    this.mouseUpEvent =3D this.createEvent(EVENT_TYPES.MOUSE_UP);=0A=
    this.mouseUpEvent.signature =3D SIGNATURE;=0A=
    =0A=
    this.clickEvent =3D this.createEvent(EVENT_TYPES.CLICK);=0A=
    this.clickEvent.signature =3D SIGNATURE;=0A=
    =0A=
    this.keyPressEvent =3D this.createEvent(EVENT_TYPES.KEY_PRESS);=0A=
    this.keyPressEvent.signature =3D SIGNATURE;=0A=
    =0A=
    this.keyDownEvent =3D this.createEvent(EVENT_TYPES.KEY_DOWN);=0A=
    this.keyDownEvent.signature =3D SIGNATURE;=0A=
    =0A=
    this.keyUpEvent =3D this.createEvent(EVENT_TYPES.KEY_UP);=0A=
    this.keyUpEvent.signature =3D SIGNATURE;=0A=
    =0A=
    this.focusEvent =3D this.createEvent(EVENT_TYPES.FOCUS);=0A=
    this.focusEvent.signature =3D SIGNATURE;=0A=
    =0A=
    this.blurEvent =3D this.createEvent(EVENT_TYPES.BLUR);=0A=
    this.blurEvent.signature =3D SIGNATURE;=0A=
    =0A=
    this.itemAddedEvent =3D this.createEvent(EVENT_TYPES.ITEM_ADDED);=0A=
    this.itemAddedEvent.signature =3D SIGNATURE;=0A=
    =0A=
    this.itemRemovedEvent =3D this.createEvent(EVENT_TYPES.ITEM_REMOVED);=0A=
    this.itemRemovedEvent.signature =3D SIGNATURE;=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method positionOffScreen=0A=
* @description Positions the menu outside of the boundaries of the =
browser's =0A=
* viewport.  Called automatically when a menu is hidden to ensure that =0A=
* it doesn't force the browser to render uncessary scrollbars.=0A=
*/=0A=
positionOffScreen: function () {=0A=
=0A=
    var oIFrame =3D this.iframe,=0A=
        aPos =3D this.OFF_SCREEN_POSITION;=0A=
=0A=
    Dom.setXY(this.element, aPos);=0A=
    =0A=
    if (oIFrame) {=0A=
=0A=
        Dom.setXY(oIFrame, aPos);=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method getRoot=0A=
* @description Finds the menu's root menu.=0A=
*/=0A=
getRoot: function () {=0A=
=0A=
    var oItem =3D this.parent,=0A=
        oParentMenu;=0A=
=0A=
    if (oItem) {=0A=
=0A=
        oParentMenu =3D oItem.parent;=0A=
=0A=
        return oParentMenu ? oParentMenu.getRoot() : this;=0A=
=0A=
    }=0A=
    else {=0A=
    =0A=
        return this;=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method toString=0A=
* @description Returns a string representing the menu.=0A=
* @return {String}=0A=
*/=0A=
toString: function () {=0A=
=0A=
    var sReturnVal =3D "Menu",=0A=
        sId =3D this.id;=0A=
=0A=
    if (sId) {=0A=
=0A=
        sReturnVal +=3D (" " + sId);=0A=
    =0A=
    }=0A=
=0A=
    return sReturnVal;=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method setItemGroupTitle=0A=
* @description Sets the title of a group of menu items.=0A=
* @param {String} p_sGroupTitle String specifying the title of the group.=0A=
* @param {Number} p_nGroupIndex Optional. Number specifying the group to =
which=0A=
* the title belongs.=0A=
*/=0A=
setItemGroupTitle: function (p_sGroupTitle, p_nGroupIndex) {=0A=
=0A=
    var nGroupIndex,=0A=
        oTitle,=0A=
        i,=0A=
        nFirstIndex;=0A=
        =0A=
    if (typeof p_sGroupTitle =3D=3D "string" && p_sGroupTitle.length > =
0) {=0A=
=0A=
        nGroupIndex =3D typeof p_nGroupIndex =3D=3D "number" ? =
p_nGroupIndex : 0;=0A=
        oTitle =3D this._aGroupTitleElements[nGroupIndex];=0A=
=0A=
=0A=
        if (oTitle) {=0A=
=0A=
            oTitle.innerHTML =3D p_sGroupTitle;=0A=
            =0A=
        }=0A=
        else {=0A=
=0A=
            oTitle =3D document.createElement(this.GROUP_TITLE_TAG_NAME);=0A=
                    =0A=
            oTitle.innerHTML =3D p_sGroupTitle;=0A=
=0A=
            this._aGroupTitleElements[nGroupIndex] =3D oTitle;=0A=
=0A=
        }=0A=
=0A=
=0A=
        i =3D this._aGroupTitleElements.length - 1;=0A=
=0A=
        do {=0A=
=0A=
            if (this._aGroupTitleElements[i]) {=0A=
=0A=
                Dom.removeClass(this._aGroupTitleElements[i], =
"first-of-type");=0A=
=0A=
                nFirstIndex =3D i;=0A=
=0A=
            }=0A=
=0A=
        }=0A=
        while(i--);=0A=
=0A=
=0A=
        if (nFirstIndex !=3D=3D null) {=0A=
=0A=
            Dom.addClass(this._aGroupTitleElements[nFirstIndex], =0A=
                "first-of-type");=0A=
=0A=
        }=0A=
=0A=
        this.changeContentEvent.fire();=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
/**=0A=
* @method addItem=0A=
* @description Appends an item to the menu.=0A=
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the =
MenuItem =0A=
* instance to be added to the menu.=0A=
* @param {String} p_oItem String specifying the text of the item to be =
added =0A=
* to the menu.=0A=
* @param {Object} p_oItem Object literal containing a set of menu item =0A=
* configuration properties.=0A=
* @param {Number} p_nGroupIndex Optional. Number indicating the group to=0A=
* which the item belongs.=0A=
* @return {YAHOO.widget.MenuItem}=0A=
*/=0A=
addItem: function (p_oItem, p_nGroupIndex) {=0A=
=0A=
    if (p_oItem) {=0A=
=0A=
        return this._addItemToGroup(p_nGroupIndex, p_oItem);=0A=
        =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method addItems=0A=
* @description Adds an array of items to the menu.=0A=
* @param {Array} p_aItems Array of items to be added to the menu.  The =
array =0A=
* can contain strings specifying the text for each item to be created, =
object=0A=
* literals specifying each of the menu item configuration properties, =0A=
* or MenuItem instances.=0A=
* @param {Number} p_nGroupIndex Optional. Number specifying the group to =0A=
* which the items belongs.=0A=
* @return {Array}=0A=
*/=0A=
addItems: function (p_aItems, p_nGroupIndex) {=0A=
=0A=
    var nItems,=0A=
        aItems,=0A=
        oItem,=0A=
        i;=0A=
=0A=
    if (Lang.isArray(p_aItems)) {=0A=
=0A=
        nItems =3D p_aItems.length;=0A=
        aItems =3D [];=0A=
=0A=
        for(i=3D0; i<nItems; i++) {=0A=
=0A=
            oItem =3D p_aItems[i];=0A=
=0A=
            if (oItem) {=0A=
=0A=
                if (Lang.isArray(oItem)) {=0A=
    =0A=
                    aItems[aItems.length] =3D this.addItems(oItem, i);=0A=
    =0A=
                }=0A=
                else {=0A=
    =0A=
                    aItems[aItems.length] =3D =0A=
                        this._addItemToGroup(p_nGroupIndex, oItem);=0A=
                =0A=
                }=0A=
=0A=
            }=0A=
    =0A=
        }=0A=
=0A=
=0A=
        if (aItems.length) {=0A=
        =0A=
            return aItems;=0A=
        =0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method insertItem=0A=
* @description Inserts an item into the menu at the specified index.=0A=
* @param {YAHOO.widget.MenuItem} p_oItem Object reference for the =
MenuItem =0A=
* instance to be added to the menu.=0A=
* @param {String} p_oItem String specifying the text of the item to be =
added =0A=
* to the menu.=0A=
* @param {Object} p_oItem Object literal containing a set of menu item =0A=
* configuration properties.=0A=
* @param {Number} p_nItemIndex Number indicating the ordinal position at =
which=0A=
* the item should be added.=0A=
* @param {Number} p_nGroupIndex Optional. Number indicating the group to =
which =0A=
* the item belongs.=0A=
* @return {YAHOO.widget.MenuItem}=0A=
*/=0A=
insertItem: function (p_oItem, p_nItemIndex, p_nGroupIndex) {=0A=
    =0A=
    if (p_oItem) {=0A=
=0A=
        return this._addItemToGroup(p_nGroupIndex, p_oItem, =
p_nItemIndex);=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method removeItem=0A=
* @description Removes the specified item from the menu.=0A=
* @param {YAHOO.widget.MenuItem} p_oObject Object reference for the =
MenuItem =0A=
* instance to be removed from the menu.=0A=
* @param {Number} p_oObject Number specifying the index of the item =0A=
* to be removed.=0A=
* @param {Number} p_nGroupIndex Optional. Number specifying the group to =0A=
* which the item belongs.=0A=
* @return {YAHOO.widget.MenuItem}=0A=
*/=0A=
removeItem: function (p_oObject, p_nGroupIndex) {=0A=
=0A=
    var oItem;=0A=
    =0A=
    if (typeof p_oObject !=3D "undefined") {=0A=
=0A=
        if (p_oObject instanceof YAHOO.widget.MenuItem) {=0A=
=0A=
            oItem =3D this._removeItemFromGroupByValue(p_nGroupIndex, =
p_oObject);           =0A=
=0A=
        }=0A=
        else if (typeof p_oObject =3D=3D "number") {=0A=
=0A=
            oItem =3D this._removeItemFromGroupByIndex(p_nGroupIndex, =
p_oObject);=0A=
=0A=
        }=0A=
=0A=
        if (oItem) {=0A=
=0A=
            oItem.destroy();=0A=
=0A=
=0A=
            return oItem;=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method getItems=0A=
* @description Returns an array of all of the items in the menu.=0A=
* @return {Array}=0A=
*/=0A=
getItems: function () {=0A=
=0A=
    var aGroups =3D this._aItemGroups,=0A=
        nGroups,=0A=
        aItems =3D [];=0A=
=0A=
    if (Lang.isArray(aGroups)) {=0A=
=0A=
        nGroups =3D aGroups.length;=0A=
=0A=
        return ((nGroups =3D=3D 1) ? aGroups[0] : =0A=
                    (Array.prototype.concat.apply(aItems, aGroups)));=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method getItemGroups=0A=
* @description Multi-dimensional Array representing the menu items as =
they =0A=
* are grouped in the menu.=0A=
* @return {Array}=0A=
*/        =0A=
getItemGroups: function () {=0A=
=0A=
    return this._aItemGroups;=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method getItem=0A=
* @description Returns the item at the specified index.=0A=
* @param {Number} p_nItemIndex Number indicating the ordinal position of =
the =0A=
* item to be retrieved.=0A=
* @param {Number} p_nGroupIndex Optional. Number indicating the group to =
which =0A=
* the item belongs.=0A=
* @return {YAHOO.widget.MenuItem}=0A=
*/=0A=
getItem: function (p_nItemIndex, p_nGroupIndex) {=0A=
    =0A=
    var aGroup;=0A=
    =0A=
    if (typeof p_nItemIndex =3D=3D "number") {=0A=
=0A=
        aGroup =3D this._getItemGroup(p_nGroupIndex);=0A=
=0A=
        if (aGroup) {=0A=
=0A=
            return aGroup[p_nItemIndex];=0A=
        =0A=
        }=0A=
=0A=
    }=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method getSubmenus=0A=
* @description Returns an array of all of the submenus that are =
immediate =0A=
* children of the menu.=0A=
* @return {Array}=0A=
*/=0A=
getSubmenus: function () {=0A=
=0A=
    var aItems =3D this.getItems(),=0A=
        nItems =3D aItems.length,=0A=
        aSubmenus,=0A=
        oSubmenu,=0A=
        oItem,=0A=
        i;=0A=
=0A=
=0A=
    if (nItems > 0) {=0A=
        =0A=
        aSubmenus =3D [];=0A=
=0A=
        for(i=3D0; i<nItems; i++) {=0A=
=0A=
            oItem =3D aItems[i];=0A=
            =0A=
            if (oItem) {=0A=
=0A=
                oSubmenu =3D oItem.cfg.getProperty("submenu");=0A=
                =0A=
                if (oSubmenu) {=0A=
=0A=
                    aSubmenus[aSubmenus.length] =3D oSubmenu;=0A=
=0A=
                }=0A=
            =0A=
            }=0A=
        =0A=
        }=0A=
    =0A=
    }=0A=
=0A=
    return aSubmenus;=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method clearContent=0A=
* @description Removes all of the content from the menu, including the =
menu =0A=
* items, group titles, header and footer.=0A=
*/=0A=
clearContent: function () {=0A=
=0A=
    var aItems =3D this.getItems(),=0A=
        nItems =3D aItems.length,=0A=
        oElement =3D this.element,=0A=
        oBody =3D this.body,=0A=
        oHeader =3D this.header,=0A=
        oFooter =3D this.footer,=0A=
        oItem,=0A=
        oSubmenu,=0A=
        i;=0A=
=0A=
=0A=
    if (nItems > 0) {=0A=
=0A=
        i =3D nItems - 1;=0A=
=0A=
        do {=0A=
=0A=
            oItem =3D aItems[i];=0A=
=0A=
            if (oItem) {=0A=
=0A=
                oSubmenu =3D oItem.cfg.getProperty("submenu");=0A=
=0A=
                if (oSubmenu) {=0A=
=0A=
                    this.cfg.configChangedEvent.unsubscribe(=0A=
                        this._onParentMenuConfigChange, oSubmenu);=0A=
=0A=
                    =
this.renderEvent.unsubscribe(this._onParentMenuRender, =0A=
                        oSubmenu);=0A=
=0A=
                }=0A=
                =0A=
                this.removeItem(oItem);=0A=
=0A=
            }=0A=
        =0A=
        }=0A=
        while(i--);=0A=
=0A=
    }=0A=
=0A=
=0A=
    if (oHeader) {=0A=
=0A=
        Event.purgeElement(oHeader);=0A=
        oElement.removeChild(oHeader);=0A=
=0A=
    }=0A=
    =0A=
=0A=
    if (oFooter) {=0A=
=0A=
        Event.purgeElement(oFooter);=0A=
        oElement.removeChild(oFooter);=0A=
    }=0A=
=0A=
=0A=
    if (oBody) {=0A=
=0A=
        Event.purgeElement(oBody);=0A=
=0A=
        oBody.innerHTML =3D "";=0A=
=0A=
    }=0A=
=0A=
    this.activeItem =3D null;=0A=
=0A=
    this._aItemGroups =3D [];=0A=
    this._aListElements =3D [];=0A=
    this._aGroupTitleElements =3D [];=0A=
=0A=
    this.cfg.setProperty("width", null);=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method destroy=0A=
* @description Removes the menu's <code>&#60;div&#62;</code> element =0A=
* (and accompanying child nodes) from the document.=0A=
*/=0A=
destroy: function () {=0A=
=0A=
    // Remove all items=0A=
=0A=
    this.clearContent();=0A=
=0A=
    this._aItemGroups =3D null;=0A=
    this._aListElements =3D null;=0A=
    this._aGroupTitleElements =3D null;=0A=
=0A=
=0A=
    // Continue with the superclass implementation of this method=0A=
=0A=
    Menu.superclass.destroy.call(this);=0A=
    =0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method setInitialFocus=0A=
* @description Sets focus to the menu's first enabled item.=0A=
*/=0A=
setInitialFocus: function () {=0A=
=0A=
    var oItem =3D this._getFirstEnabledItem();=0A=
    =0A=
    if (oItem) {=0A=
=0A=
        oItem.focus();=0A=
=0A=
    }=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method setInitialSelection=0A=
* @description Sets the "selected" configuration property of the menu's =
first =0A=
* enabled item to "true."=0A=
*/=0A=
setInitialSelection: function () {=0A=
=0A=
    var oItem =3D this._getFirstEnabledItem();=0A=
    =0A=
    if (oItem) {=0A=
    =0A=
        oItem.cfg.setProperty("selected", true);=0A=
    }        =0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method clearActiveItem=0A=
* @description Sets the "selected" configuration property of the menu's =
active=0A=
* item to "false" and hides the item's submenu.=0A=
* @param {Boolean} p_bBlur Boolean indicating if the menu's active item =0A=
* should be blurred.  =0A=
*/=0A=
clearActiveItem: function (p_bBlur) {=0A=
=0A=
    if (this.cfg.getProperty("showdelay") > 0) {=0A=
    =0A=
        this._cancelShowDelay();=0A=
    =0A=
    }=0A=
=0A=
=0A=
    var oActiveItem =3D this.activeItem,=0A=
        oConfig,=0A=
        oSubmenu;=0A=
=0A=
    if (oActiveItem) {=0A=
=0A=
        oConfig =3D oActiveItem.cfg;=0A=
=0A=
        if (p_bBlur) {=0A=
=0A=
            oActiveItem.blur();=0A=
        =0A=
        }=0A=
=0A=
        oConfig.setProperty("selected", false);=0A=
=0A=
        oSubmenu =3D oConfig.getProperty("submenu");=0A=
=0A=
        if (oSubmenu) {=0A=
=0A=
            oSubmenu.hide();=0A=
=0A=
        }=0A=
=0A=
        this.activeItem =3D null;            =0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method focus=0A=
* @description Causes the menu to receive focus and fires the "focus" =
event.=0A=
*/=0A=
focus: function () {=0A=
=0A=
    if (!this.hasFocus()) {=0A=
=0A=
        this.setInitialFocus();=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method blur=0A=
* @description Causes the menu to lose focus and fires the "blur" event.=0A=
*/    =0A=
blur: function () {=0A=
=0A=
    var oItem;=0A=
=0A=
    if (this.hasFocus()) {=0A=
    =0A=
        oItem =3D MenuManager.getFocusedMenuItem();=0A=
        =0A=
        if (oItem) {=0A=
=0A=
            oItem.blur();=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method hasFocus=0A=
* @description Returns a boolean indicating whether or not the menu has =
focus.=0A=
* @return {Boolean}=0A=
*/=0A=
hasFocus: function () {=0A=
=0A=
    return (MenuManager.getFocusedMenu() =3D=3D this.getRoot());=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* Adds the specified CustomEvent subscriber to the menu and each of =0A=
* its submenus.=0A=
* @method subscribe=0A=
* @param p_type     {string}   the type, or name of the event=0A=
* @param p_fn       {function} the function to exectute when the event =
fires=0A=
* @param p_obj      {Object}   An object to be passed along when the =
event =0A=
*                              fires=0A=
* @param p_override {boolean}  If true, the obj passed in becomes the =0A=
*                              execution scope of the listener=0A=
*/=0A=
subscribe: function () {=0A=
=0A=
    function onItemAdded(p_sType, p_aArgs, p_oObject) {=0A=
=0A=
        var oItem =3D p_aArgs[0],=0A=
            oSubmenu =3D oItem.cfg.getProperty("submenu");=0A=
=0A=
        if (oSubmenu) {=0A=
=0A=
            oSubmenu.subscribe.apply(oSubmenu, p_oObject);=0A=
=0A=
        }=0A=
    =0A=
    }=0A=
=0A=
=0A=
    function onSubmenuAdded(p_sType, p_aArgs, p_oObject) { =0A=
    =0A=
        var oSubmenu =3D this.cfg.getProperty("submenu");=0A=
        =0A=
        if (oSubmenu) {=0A=
=0A=
            oSubmenu.subscribe.apply(oSubmenu, p_oObject);=0A=
        =0A=
        }=0A=
    =0A=
    }=0A=
=0A=
=0A=
    Menu.superclass.subscribe.apply(this, arguments);=0A=
    Menu.superclass.subscribe.call(this, "itemAdded", onItemAdded, =
arguments);=0A=
=0A=
=0A=
    var aItems =3D this.getItems(),=0A=
        nItems,=0A=
        oItem,=0A=
        oSubmenu,=0A=
        i;=0A=
        =0A=
=0A=
    if (aItems) {=0A=
=0A=
        nItems =3D aItems.length;=0A=
        =0A=
        if (nItems > 0) {=0A=
        =0A=
            i =3D nItems - 1;=0A=
            =0A=
            do {=0A=
=0A=
                oItem =3D aItems[i];=0A=
                =0A=
                oSubmenu =3D oItem.cfg.getProperty("submenu");=0A=
                =0A=
                if (oSubmenu) {=0A=
                =0A=
                    oSubmenu.subscribe.apply(oSubmenu, arguments);=0A=
                =0A=
                }=0A=
                else {=0A=
                =0A=
                    oItem.cfg.subscribeToConfigEvent("submenu", =
onSubmenuAdded, arguments);=0A=
                =0A=
                }=0A=
=0A=
            }=0A=
            while (i--);=0A=
        =0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @description Initializes the class's configurable properties which can =
be=0A=
* changed using the menu's Config object ("cfg").=0A=
* @method initDefaultConfig=0A=
*/=0A=
initDefaultConfig: function () {=0A=
=0A=
    Menu.superclass.initDefaultConfig.call(this);=0A=
=0A=
    var oConfig =3D this.cfg;=0A=
=0A=
=0A=
    // Module documentation overrides=0A=
=0A=
    /**=0A=
    * @config effect=0A=
    * @description Object or array of objects representing the =
ContainerEffect =0A=
    * classes that are active for animating the container.  When set =
this =0A=
    * property is automatically applied to all submenus.=0A=
    * @type Object=0A=
    * @default null=0A=
    */=0A=
=0A=
    // Overlay documentation overrides=0A=
=0A=
=0A=
    /**=0A=
    * @config x=0A=
    * @description Number representing the absolute x-coordinate =
position of =0A=
    * the Menu.  This property is only applied when the "position" =0A=
    * configuration property is set to dynamic.=0A=
    * @type Number=0A=
    * @default null=0A=
    */=0A=
    =0A=
=0A=
    /**=0A=
    * @config y=0A=
    * @description Number representing the absolute y-coordinate =
position of =0A=
    * the Menu.  This property is only applied when the "position" =0A=
    * configuration property is set to dynamic.=0A=
    * @type Number=0A=
    * @default null=0A=
    */=0A=
=0A=
=0A=
    /**=0A=
    * @description Array of the absolute x and y positions of the Menu.  =
This =0A=
    * property is only applied when the "position" configuration =
property is =0A=
    * set to dynamic.=0A=
    * @config xy=0A=
    * @type Number[]=0A=
    * @default null=0A=
    */=0A=
    =0A=
=0A=
    /**=0A=
    * @config context=0A=
    * @description Array of context arguments for context-sensitive =
positioning.  =0A=
    * The format is: [id or element, element corner, context corner]. =0A=
    * For example, setting this property to ["img1", "tl", "bl"] would =0A=
    * align the Mnu's top left corner to the context element's =0A=
    * bottom left corner.  This property is only applied when the =
"position" =0A=
    * configuration property is set to dynamic.=0A=
    * @type Array=0A=
    * @default null=0A=
    */=0A=
    =0A=
    =0A=
    /**=0A=
    * @config fixedcenter=0A=
    * @description Boolean indicating if the Menu should be anchored to =
the =0A=
    * center of the viewport.  This property is only applied when the =0A=
    * "position" configuration property is set to dynamic.=0A=
    * @type Boolean=0A=
    * @default false=0A=
    */=0A=
=0A=
    =0A=
    /**=0A=
    * @config zindex=0A=
    * @description Number representing the CSS z-index of the Menu.  =
This =0A=
    * property is only applied when the "position" configuration =
property is =0A=
    * set to dynamic.=0A=
    * @type Number=0A=
    * @default null=0A=
    */=0A=
    =0A=
    =0A=
    /**=0A=
    * @config iframe=0A=
    * @description Boolean indicating whether or not the Menu should =0A=
    * have an IFRAME shim; used to prevent SELECT elements from =0A=
    * poking through an Overlay instance in IE6.  When set to "true", =0A=
    * the iframe shim is created when the Menu instance is intially=0A=
    * made visible.  This property is only applied when the "position" =0A=
    * configuration property is set to dynamic and is automatically =
applied =0A=
    * to all submenus.=0A=
    * @type Boolean=0A=
    * @default true for IE6 and below, false for all other browsers.=0A=
    */=0A=
=0A=
=0A=
	// Add configuration attributes=0A=
=0A=
    /*=0A=
        Change the default value for the "visible" configuration =0A=
        property to "false" by re-adding the property.=0A=
    */=0A=
=0A=
    /**=0A=
    * @config visible=0A=
    * @description Boolean indicating whether or not the menu is =
visible.  If =0A=
    * the menu's "position" configuration property is set to "dynamic" =
(the =0A=
    * default), this property toggles the menu's =
<code>&#60;div&#62;</code> =0A=
    * element's "visibility" style property between "visible" (true) or =0A=
    * "hidden" (false).  If the menu's "position" configuration property =
is =0A=
    * set to "static" this property toggles the menu's =0A=
    * <code>&#60;div&#62;</code> element's "display" style property =0A=
    * between "block" (true) or "none" (false).=0A=
    * @default false=0A=
    * @type Boolean=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.VISIBLE.key, =0A=
        {=0A=
            handler: this.configVisible, =0A=
            value: DEFAULT_CONFIG.VISIBLE.value, =0A=
            validator: DEFAULT_CONFIG.VISIBLE.validator=0A=
         }=0A=
     );=0A=
=0A=
=0A=
    /*=0A=
        Change the default value for the "constraintoviewport" =
configuration =0A=
        property to "true" by re-adding the property.=0A=
    */=0A=
=0A=
    /**=0A=
    * @config constraintoviewport=0A=
    * @description Boolean indicating if the menu will try to remain =
inside =0A=
    * the boundaries of the size of viewport.  This property is only =
applied =0A=
    * when the "position" configuration property is set to dynamic and =
is =0A=
    * automatically applied to all submenus.=0A=
    * @default true=0A=
    * @type Boolean=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.key, =0A=
        {=0A=
            handler: this.configConstrainToViewport, =0A=
            value: DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.value, =0A=
            validator: DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.validator, =0A=
            supercedes: DEFAULT_CONFIG.CONSTRAIN_TO_VIEWPORT.supercedes =0A=
        } =0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config position=0A=
    * @description String indicating how a menu should be positioned on =
the =0A=
    * screen.  Possible values are "static" and "dynamic."  Static menus =
are =0A=
    * visible by default and reside in the normal flow of the document =0A=
    * (CSS position: static).  Dynamic menus are hidden by default, =
reside =0A=
    * out of the normal flow of the document (CSS position: absolute), =
and =0A=
    * can overlay other elements on the screen.=0A=
    * @default dynamic=0A=
    * @type String=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.POSITION.key, =0A=
        {=0A=
            handler: this.configPosition,=0A=
            value: DEFAULT_CONFIG.POSITION.value, =0A=
            validator: DEFAULT_CONFIG.POSITION.validator,=0A=
            supercedes: DEFAULT_CONFIG.POSITION.supercedes=0A=
        }=0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config submenualignment=0A=
    * @description Array defining how submenus should be aligned to =
their =0A=
    * parent menu item. The format is: [itemCorner, submenuCorner]. By =
default=0A=
    * a submenu's top left corner is aligned to its parent menu item's =
top =0A=
    * right corner.=0A=
    * @default ["tl","tr"]=0A=
    * @type Array=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.SUBMENU_ALIGNMENT.key, =0A=
        { =0A=
            value: DEFAULT_CONFIG.SUBMENU_ALIGNMENT.value,=0A=
            suppressEvent: DEFAULT_CONFIG.SUBMENU_ALIGNMENT.suppressEvent=0A=
        }=0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config autosubmenudisplay=0A=
    * @description Boolean indicating if submenus are automatically made =0A=
    * visible when the user mouses over the menu's items.=0A=
    * @default true=0A=
    * @type Boolean=0A=
    */=0A=
	oConfig.addProperty(=0A=
	   DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.key, =0A=
	   { =0A=
	       value: DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.value, =0A=
	       validator: DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.validator,=0A=
	       suppressEvent: DEFAULT_CONFIG.AUTO_SUBMENU_DISPLAY.suppressEvent=0A=
       } =0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config showdelay=0A=
    * @description Number indicating the time (in milliseconds) that =
should =0A=
    * expire before a submenu is made visible when the user mouses over =0A=
    * the menu's items.  This property is only applied when the =
"position" =0A=
    * configuration property is set to dynamic and is automatically =
applied =0A=
    * to all submenus.=0A=
    * @default 250=0A=
    * @type Number=0A=
    */=0A=
	oConfig.addProperty(=0A=
	   DEFAULT_CONFIG.SHOW_DELAY.key, =0A=
	   { =0A=
	       value: DEFAULT_CONFIG.SHOW_DELAY.value, =0A=
	       validator: DEFAULT_CONFIG.SHOW_DELAY.validator,=0A=
	       suppressEvent: DEFAULT_CONFIG.SHOW_DELAY.suppressEvent=0A=
       } =0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config hidedelay=0A=
    * @description Number indicating the time (in milliseconds) that =
should =0A=
    * expire before the menu is hidden.  This property is only applied =
when =0A=
    * the "position" configuration property is set to dynamic and is =0A=
    * automatically applied to all submenus.=0A=
    * @default 0=0A=
    * @type Number=0A=
    */=0A=
	oConfig.addProperty(=0A=
	   DEFAULT_CONFIG.HIDE_DELAY.key, =0A=
	   { =0A=
	       handler: this.configHideDelay,=0A=
	       value: DEFAULT_CONFIG.HIDE_DELAY.value, =0A=
	       validator: DEFAULT_CONFIG.HIDE_DELAY.validator, =0A=
	       suppressEvent: DEFAULT_CONFIG.HIDE_DELAY.suppressEvent=0A=
       } =0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config submenuhidedelay=0A=
    * @description Number indicating the time (in milliseconds) that =
should =0A=
    * expire before a submenu is hidden when the user mouses out of a =
menu item =0A=
    * heading in the direction of a submenu.  The value must be greater =
than or =0A=
    * equal to the value specified for the "showdelay" configuration =
property.=0A=
    * This property is only applied when the "position" configuration =
property =0A=
    * is set to dynamic and is automatically applied to all submenus.=0A=
    * @default 250=0A=
    * @type Number=0A=
    */=0A=
	oConfig.addProperty(=0A=
	   DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.key, =0A=
	   { =0A=
	       value: DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.value, =0A=
	       validator: DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.validator,=0A=
	       suppressEvent: DEFAULT_CONFIG.SUBMENU_HIDE_DELAY.suppressEvent=0A=
       } =0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config clicktohide=0A=
    * @description Boolean indicating if the menu will automatically be =0A=
    * hidden if the user clicks outside of it.  This property is only =0A=
    * applied when the "position" configuration property is set to =
dynamic =0A=
    * and is automatically applied to all submenus.=0A=
    * @default true=0A=
    * @type Boolean=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.CLICK_TO_HIDE.key,=0A=
        {=0A=
            value: DEFAULT_CONFIG.CLICK_TO_HIDE.value,=0A=
            validator: DEFAULT_CONFIG.CLICK_TO_HIDE.validator,=0A=
            suppressEvent: DEFAULT_CONFIG.CLICK_TO_HIDE.suppressEvent=0A=
        }=0A=
    );=0A=
=0A=
=0A=
	/**=0A=
	* @config container=0A=
	* @description HTML element reference or string specifying the id =0A=
	* attribute of the HTML element that the menu's markup should be =0A=
	* rendered into.=0A=
	* @type <a href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
	* level-one-html.html#ID-58190037">HTMLElement</a>|String=0A=
	* @default document.body=0A=
	*/=0A=
	oConfig.addProperty(=0A=
	   DEFAULT_CONFIG.CONTAINER.key, =0A=
	   { =0A=
	       handler: this.configContainer,=0A=
	       value: document.body,=0A=
           suppressEvent: DEFAULT_CONFIG.CONTAINER.suppressEvent=0A=
       } =0A=
   );=0A=
=0A=
=0A=
    /**=0A=
    * @config scrollincrement=0A=
    * @description Number used to control the scroll speed of a menu.  =
Used to =0A=
    * increment the "scrollTop" property of the menu's body by when a =
menu's =0A=
    * content is scrolling.  When set this property is automatically =
applied =0A=
    * to all submenus.=0A=
    * @default 1=0A=
    * @type Number=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.SCROLL_INCREMENT.key, =0A=
        { =0A=
            value: DEFAULT_CONFIG.SCROLL_INCREMENT.value, =0A=
            validator: DEFAULT_CONFIG.SCROLL_INCREMENT.validator,=0A=
            supercedes: DEFAULT_CONFIG.SCROLL_INCREMENT.supercedes,=0A=
            suppressEvent: DEFAULT_CONFIG.SCROLL_INCREMENT.suppressEvent=0A=
        }=0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config minscrollheight=0A=
    * @description Number defining the minimum threshold for the =
"maxheight" =0A=
    * configuration property.  When set this property is automatically =
applied =0A=
    * to all submenus.=0A=
    * @default 90=0A=
    * @type Number=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.key, =0A=
        { =0A=
            value: DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.value, =0A=
            validator: DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.validator,=0A=
            supercedes: DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.supercedes,=0A=
            suppressEvent: DEFAULT_CONFIG.MIN_SCROLL_HEIGHT.suppressEvent=0A=
        }=0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config maxheight=0A=
    * @description Number defining the maximum height (in pixels) for a =
menu's =0A=
    * body element (<code>&#60;div class=3D"bd"&#60;</code>).  Once a =
menu's body =0A=
    * exceeds this height, the contents of the body are scrolled to =
maintain =0A=
    * this value.  This value cannot be set lower than the value of the =0A=
    * "minscrollheight" configuration property.=0A=
    * @default 0=0A=
    * @type Number=0A=
    */=0A=
    oConfig.addProperty(=0A=
       DEFAULT_CONFIG.MAX_HEIGHT.key, =0A=
       {=0A=
            handler: this.configMaxHeight,=0A=
            value: DEFAULT_CONFIG.MAX_HEIGHT.value,=0A=
            validator: DEFAULT_CONFIG.MAX_HEIGHT.validator,=0A=
            suppressEvent: DEFAULT_CONFIG.MAX_HEIGHT.suppressEvent,=0A=
            supercedes: DEFAULT_CONFIG.MAX_HEIGHT.supercedes            =0A=
       } =0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config classname=0A=
    * @description String representing the CSS class to be applied to =
the =0A=
    * menu's root <code>&#60;div&#62;</code> element.  The specified =
class(es)  =0A=
    * are appended in addition to the default class as specified by the =
menu's=0A=
    * CSS_CLASS_NAME constant. When set this property is automatically =0A=
    * applied to all submenus.=0A=
    * @default null=0A=
    * @type String=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.CLASS_NAME.key, =0A=
        { =0A=
            handler: this.configClassName,=0A=
            value: DEFAULT_CONFIG.CLASS_NAME.value, =0A=
            validator: DEFAULT_CONFIG.CLASS_NAME.validator,=0A=
            supercedes: DEFAULT_CONFIG.CLASS_NAME.supercedes      =0A=
        }=0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config disabled=0A=
    * @description Boolean indicating if the menu should be disabled.  =0A=
    * Disabling a menu disables each of its items.  (Disabled menu items =
are =0A=
    * dimmed and will not respond to user input or fire events.)  =
Disabled=0A=
    * menus have a corresponding "disabled" CSS class applied to their =
root=0A=
    * <code>&#60;div&#62;</code> element.=0A=
    * @default false=0A=
    * @type Boolean=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.DISABLED.key, =0A=
        { =0A=
            handler: this.configDisabled,=0A=
            value: DEFAULT_CONFIG.DISABLED.value, =0A=
            validator: DEFAULT_CONFIG.DISABLED.validator,=0A=
            suppressEvent: DEFAULT_CONFIG.DISABLED.suppressEvent=0A=
        }=0A=
    );=0A=
=0A=
}=0A=
=0A=
}); // END YAHOO.lang.extend=0A=
=0A=
})();=0A=
=0A=
=0A=
=0A=
(function () {=0A=
=0A=
=0A=
/**=0A=
* Creates an item for a menu.=0A=
* =0A=
* @param {String} p_oObject String specifying the text of the menu item.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
* one-html.html#ID-74680021">HTMLLIElement</a>} p_oObject Object =
specifying =0A=
* the <code>&#60;li&#62;</code> element of the menu item.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
* one-html.html#ID-38450247">HTMLOptGroupElement</a>} p_oObject Object =0A=
* specifying the <code>&#60;optgroup&#62;</code> element of the menu =
item.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
* one-html.html#ID-70901257">HTMLOptionElement</a>} p_oObject Object =0A=
* specifying the <code>&#60;option&#62;</code> element of the menu item.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the menu item. See configuration class documentation =0A=
* for more details.=0A=
* @class MenuItem=0A=
* @constructor=0A=
*/=0A=
YAHOO.widget.MenuItem =3D function (p_oObject, p_oConfig) {=0A=
=0A=
    if (p_oObject) {=0A=
=0A=
        if (p_oConfig) {=0A=
    =0A=
            this.parent =3D p_oConfig.parent;=0A=
            this.value =3D p_oConfig.value;=0A=
            this.id =3D p_oConfig.id;=0A=
=0A=
        }=0A=
=0A=
        this.init(p_oObject, p_oConfig);=0A=
=0A=
    }=0A=
=0A=
};=0A=
=0A=
=0A=
var Dom =3D YAHOO.util.Dom,=0A=
    Module =3D YAHOO.widget.Module,=0A=
    Menu =3D YAHOO.widget.Menu,=0A=
    MenuItem =3D YAHOO.widget.MenuItem,=0A=
    CustomEvent =3D YAHOO.util.CustomEvent,=0A=
    Lang =3D YAHOO.lang,=0A=
=0A=
    m_oMenuItemTemplate,=0A=
=0A=
    /**=0A=
    * Constant representing the name of the MenuItem's events=0A=
    * @property EVENT_TYPES=0A=
    * @private=0A=
    * @final=0A=
    * @type Object=0A=
    */=0A=
    EVENT_TYPES =3D {=0A=
    =0A=
        "MOUSE_OVER": "mouseover",=0A=
        "MOUSE_OUT": "mouseout",=0A=
        "MOUSE_DOWN": "mousedown",=0A=
        "MOUSE_UP": "mouseup",=0A=
        "CLICK": "click",=0A=
        "KEY_PRESS": "keypress",=0A=
        "KEY_DOWN": "keydown",=0A=
        "KEY_UP": "keyup",=0A=
        "ITEM_ADDED": "itemAdded",=0A=
        "ITEM_REMOVED": "itemRemoved",=0A=
        "FOCUS": "focus",=0A=
        "BLUR": "blur",=0A=
        "DESTROY": "destroy"=0A=
    =0A=
    },=0A=
=0A=
    /**=0A=
    * Constant representing the MenuItem's configuration properties=0A=
    * @property DEFAULT_CONFIG=0A=
    * @private=0A=
    * @final=0A=
    * @type Object=0A=
    */=0A=
    DEFAULT_CONFIG =3D {=0A=
    =0A=
        "TEXT": { =0A=
            key: "text", =0A=
            value: "", =0A=
            validator: Lang.isString, =0A=
            suppressEvent: true =0A=
        }, =0A=
    =0A=
        "HELP_TEXT": { =0A=
            key: "helptext",=0A=
            supercedes: ["text"], =0A=
            suppressEvent: true =0A=
        },=0A=
    =0A=
        "URL": { =0A=
            key: "url", =0A=
            value: "#", =0A=
            suppressEvent: true =0A=
        }, =0A=
    =0A=
        "TARGET": { =0A=
            key: "target", =0A=
            suppressEvent: true =0A=
        }, =0A=
    =0A=
        "EMPHASIS": { =0A=
            key: "emphasis", =0A=
            value: false, =0A=
            validator: Lang.isBoolean, =0A=
            suppressEvent: true, =0A=
            supercedes: ["text"]=0A=
        }, =0A=
    =0A=
        "STRONG_EMPHASIS": { =0A=
            key: "strongemphasis", =0A=
            value: false, =0A=
            validator: Lang.isBoolean, =0A=
            suppressEvent: true,=0A=
            supercedes: ["text"]=0A=
        },=0A=
    =0A=
        "CHECKED": { =0A=
            key: "checked", =0A=
            value: false, =0A=
            validator: Lang.isBoolean, =0A=
            suppressEvent: true, =0A=
            supercedes: ["disabled", "selected"]=0A=
        }, =0A=
=0A=
        "SUBMENU": { =0A=
            key: "submenu",=0A=
            suppressEvent: true,=0A=
            supercedes: ["disabled", "selected"]=0A=
        },=0A=
    =0A=
        "DISABLED": { =0A=
            key: "disabled", =0A=
            value: false, =0A=
            validator: Lang.isBoolean, =0A=
            suppressEvent: true,=0A=
            supercedes: ["text", "selected"]=0A=
        },=0A=
    =0A=
        "SELECTED": { =0A=
            key: "selected", =0A=
            value: false, =0A=
            validator: Lang.isBoolean, =0A=
            suppressEvent: true=0A=
        },=0A=
    =0A=
        "ONCLICK": { =0A=
            key: "onclick",=0A=
            suppressEvent: true=0A=
        },=0A=
    =0A=
        "CLASS_NAME": { =0A=
            key: "classname", =0A=
            value: null, =0A=
            validator: Lang.isString,=0A=
            suppressEvent: true=0A=
        }=0A=
    =0A=
    };=0A=
=0A=
=0A=
MenuItem.prototype =3D {=0A=
=0A=
    /**=0A=
    * @property CSS_CLASS_NAME=0A=
    * @description String representing the CSS class(es) to be applied =
to the =0A=
    * <code>&#60;li&#62;</code> element of the menu item.=0A=
    * @default "yuimenuitem"=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    CSS_CLASS_NAME: "yuimenuitem",=0A=
=0A=
=0A=
    /**=0A=
    * @property CSS_LABEL_CLASS_NAME=0A=
    * @description String representing the CSS class(es) to be applied =
to the =0A=
    * menu item's <code>&#60;a&#62;</code> element.=0A=
    * @default "yuimenuitemlabel"=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    CSS_LABEL_CLASS_NAME: "yuimenuitemlabel",=0A=
=0A=
=0A=
    /**=0A=
    * @property SUBMENU_TYPE=0A=
    * @description Object representing the type of menu to instantiate =
and =0A=
    * add when parsing the child nodes of the menu item's source HTML =
element.=0A=
    * @final=0A=
    * @type YAHOO.widget.Menu=0A=
    */=0A=
    SUBMENU_TYPE: null,=0A=
=0A=
=0A=
=0A=
    // Private member variables=0A=
    =0A=
=0A=
    /**=0A=
    * @property _oAnchor=0A=
    * @description Object reference to the menu item's =0A=
    * <code>&#60;a&#62;</code> element.=0A=
    * @default null =0A=
    * @private=0A=
    * @type <a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
    * one-html.html#ID-48250443">HTMLAnchorElement</a>=0A=
    */=0A=
    _oAnchor: null,=0A=
    =0A=
    =0A=
    /**=0A=
    * @property _oHelpTextEM=0A=
    * @description Object reference to the menu item's help text =0A=
    * <code>&#60;em&#62;</code> element.=0A=
    * @default null=0A=
    * @private=0A=
    * @type <a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
    * one-html.html#ID-58190037">HTMLElement</a>=0A=
    */=0A=
    _oHelpTextEM: null,=0A=
    =0A=
    =0A=
    /**=0A=
    * @property _oSubmenu=0A=
    * @description Object reference to the menu item's submenu.=0A=
    * @default null=0A=
    * @private=0A=
    * @type YAHOO.widget.Menu=0A=
    */=0A=
    _oSubmenu: null,=0A=
=0A=
=0A=
    /** =0A=
    * @property _oOnclickAttributeValue=0A=
    * @description Object reference to the menu item's current value for =
the =0A=
    * "onclick" configuration attribute.=0A=
    * @default null=0A=
    * @private=0A=
    * @type Object=0A=
    */=0A=
    _oOnclickAttributeValue: null,=0A=
=0A=
=0A=
    /**=0A=
    * @property _sClassName=0A=
    * @description The current value of the "classname" configuration =
attribute.=0A=
    * @default null=0A=
    * @private=0A=
    * @type String=0A=
    */=0A=
    _sClassName: null,=0A=
=0A=
=0A=
=0A=
    // Public properties=0A=
=0A=
=0A=
	/**=0A=
    * @property constructor=0A=
	* @description Object reference to the menu item's constructor function.=0A=
    * @default YAHOO.widget.MenuItem=0A=
	* @type YAHOO.widget.MenuItem=0A=
	*/=0A=
	constructor: MenuItem,=0A=
=0A=
=0A=
    /**=0A=
    * @property index=0A=
    * @description Number indicating the ordinal position of the menu =
item in =0A=
    * its group.=0A=
    * @default null=0A=
    * @type Number=0A=
    */=0A=
    index: null,=0A=
=0A=
=0A=
    /**=0A=
    * @property groupIndex=0A=
    * @description Number indicating the index of the group to which the =
menu =0A=
    * item belongs.=0A=
    * @default null=0A=
    * @type Number=0A=
    */=0A=
    groupIndex: null,=0A=
=0A=
=0A=
    /**=0A=
    * @property parent=0A=
    * @description Object reference to the menu item's parent menu.=0A=
    * @default null=0A=
    * @type YAHOO.widget.Menu=0A=
    */=0A=
    parent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @property element=0A=
    * @description Object reference to the menu item's =0A=
    * <code>&#60;li&#62;</code> element.=0A=
    * @default <a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level=0A=
    * -one-html.html#ID-74680021">HTMLLIElement</a>=0A=
    * @type <a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
    * one-html.html#ID-74680021">HTMLLIElement</a>=0A=
    */=0A=
    element: null,=0A=
=0A=
=0A=
    /**=0A=
    * @property srcElement=0A=
    * @description Object reference to the HTML element (either =0A=
    * <code>&#60;li&#62;</code>, <code>&#60;optgroup&#62;</code> or =0A=
    * <code>&#60;option&#62;</code>) used create the menu item.=0A=
    * @default <a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
    * level-one-html.html#ID-74680021">HTMLLIElement</a>|<a =
href=3D"http://www.=0A=
    * =
w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-38450247"=0A=
    * >HTMLOptGroupElement</a>|<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-=0A=
    * =
Level-1-20000929/level-one-html.html#ID-70901257">HTMLOptionElement</a>=0A=
    * @type <a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
    * one-html.html#ID-74680021">HTMLLIElement</a>|<a =
href=3D"http://www.w3.=0A=
    * =
org/TR/2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-38450247">=0A=
    * HTMLOptGroupElement</a>|<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-=0A=
    * =
Level-1-20000929/level-one-html.html#ID-70901257">HTMLOptionElement</a>=0A=
    */=0A=
    srcElement: null,=0A=
=0A=
=0A=
    /**=0A=
    * @property value=0A=
    * @description Object reference to the menu item's value.=0A=
    * @default null=0A=
    * @type Object=0A=
    */=0A=
    value: null,=0A=
=0A=
=0A=
	/**=0A=
    * @property browser=0A=
    * @deprecated Use YAHOO.env.ua=0A=
	* @description String representing the browser.=0A=
	* @type String=0A=
	*/=0A=
	browser: Module.prototype.browser,=0A=
=0A=
=0A=
    /**=0A=
    * @property id=0A=
    * @description Id of the menu item's root <code>&#60;li&#62;</code> =0A=
    * element.  This property should be set via the constructor using =
the =0A=
    * configuration object literal.  If an id is not specified, then one =
will =0A=
    * be created using the "generateId" method of the Dom utility.=0A=
    * @default null=0A=
    * @type String=0A=
    */=0A=
    id: null,=0A=
=0A=
=0A=
=0A=
    // Events=0A=
=0A=
=0A=
    /**=0A=
    * @event destroyEvent=0A=
    * @description Fires when the menu item's <code>&#60;li&#62;</code> =0A=
    * element is removed from its parent <code>&#60;ul&#62;</code> =
element.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    destroyEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event mouseOverEvent=0A=
    * @description Fires when the mouse has entered the menu item.  =
Passes =0A=
    * back the DOM Event object as an argument.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    mouseOverEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event mouseOutEvent=0A=
    * @description Fires when the mouse has left the menu item.  Passes =
back =0A=
    * the DOM Event object as an argument.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    mouseOutEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event mouseDownEvent=0A=
    * @description Fires when the user mouses down on the menu item.  =
Passes =0A=
    * back the DOM Event object as an argument.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    mouseDownEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event mouseUpEvent=0A=
    * @description Fires when the user releases a mouse button while the =
mouse =0A=
    * is over the menu item.  Passes back the DOM Event object as an =
argument.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    mouseUpEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event clickEvent=0A=
    * @description Fires when the user clicks the on the menu item.  =
Passes =0A=
    * back the DOM Event object as an argument.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    clickEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event keyPressEvent=0A=
    * @description Fires when the user presses an alphanumeric key when =
the =0A=
    * menu item has focus.  Passes back the DOM Event object as an =
argument.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    keyPressEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event keyDownEvent=0A=
    * @description Fires when the user presses a key when the menu item =
has =0A=
    * focus.  Passes back the DOM Event object as an argument.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    keyDownEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event keyUpEvent=0A=
    * @description Fires when the user releases a key when the menu item =
has =0A=
    * focus.  Passes back the DOM Event object as an argument.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    keyUpEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event focusEvent=0A=
    * @description Fires when the menu item receives focus.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    focusEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @event blurEvent=0A=
    * @description Fires when the menu item loses the input focus.=0A=
    * @type YAHOO.util.CustomEvent=0A=
    */=0A=
    blurEvent: null,=0A=
=0A=
=0A=
    /**=0A=
    * @method init=0A=
    * @description The MenuItem class's initialization method. This =
method is =0A=
    * automatically called by the constructor, and sets up all DOM =
references =0A=
    * for pre-existing markup, and creates required markup if it is not =0A=
    * already present.=0A=
    * @param {String} p_oObject String specifying the text of the menu =
item.=0A=
    * @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
    * one-html.html#ID-74680021">HTMLLIElement</a>} p_oObject Object =
specifying =0A=
    * the <code>&#60;li&#62;</code> element of the menu item.=0A=
    * @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
    * one-html.html#ID-38450247">HTMLOptGroupElement</a>} p_oObject =
Object =0A=
    * specifying the <code>&#60;optgroup&#62;</code> element of the menu =
item.=0A=
    * @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
    * one-html.html#ID-70901257">HTMLOptionElement</a>} p_oObject Object =0A=
    * specifying the <code>&#60;option&#62;</code> element of the menu =
item.=0A=
    * @param {Object} p_oConfig Optional. Object literal specifying the =0A=
    * configuration for the menu item. See configuration class =
documentation =0A=
    * for more details.=0A=
    */=0A=
    init: function (p_oObject, p_oConfig) {=0A=
=0A=
=0A=
        if (!this.SUBMENU_TYPE) {=0A=
    =0A=
            this.SUBMENU_TYPE =3D Menu;=0A=
    =0A=
        }=0A=
=0A=
=0A=
        // Create the config object=0A=
=0A=
        this.cfg =3D new YAHOO.util.Config(this);=0A=
=0A=
        this.initDefaultConfig();=0A=
=0A=
        var SIGNATURE =3D CustomEvent.LIST,=0A=
            oConfig =3D this.cfg,=0A=
            sURL =3D "#",=0A=
            oAnchor,=0A=
            sTarget,=0A=
            sText,=0A=
            sId;=0A=
=0A=
=0A=
        if (Lang.isString(p_oObject)) {=0A=
=0A=
            this._createRootNodeStructure();=0A=
=0A=
            oConfig.queueProperty("text", p_oObject);=0A=
=0A=
        }=0A=
        else if (p_oObject && p_oObject.tagName) {=0A=
=0A=
            switch(p_oObject.tagName.toUpperCase()) {=0A=
=0A=
                case "OPTION":=0A=
=0A=
                    this._createRootNodeStructure();=0A=
=0A=
                    oConfig.queueProperty("text", p_oObject.text);=0A=
                    oConfig.queueProperty("disabled", =
p_oObject.disabled);=0A=
=0A=
                    this.value =3D p_oObject.value;=0A=
=0A=
                    this.srcElement =3D p_oObject;=0A=
=0A=
                break;=0A=
=0A=
                case "OPTGROUP":=0A=
=0A=
                    this._createRootNodeStructure();=0A=
=0A=
                    oConfig.queueProperty("text", p_oObject.label);=0A=
                    oConfig.queueProperty("disabled", =
p_oObject.disabled);=0A=
=0A=
                    this.srcElement =3D p_oObject;=0A=
=0A=
                    this._initSubTree();=0A=
=0A=
                break;=0A=
=0A=
                case "LI":=0A=
=0A=
                    // Get the anchor node (if it exists)=0A=
                    =0A=
                    oAnchor =3D Dom.getFirstChild(p_oObject);=0A=
=0A=
=0A=
                    // Capture the "text" and/or the "URL"=0A=
=0A=
                    if (oAnchor) {=0A=
=0A=
                        sURL =3D oAnchor.getAttribute("href");=0A=
                        sTarget =3D oAnchor.getAttribute("target");=0A=
=0A=
                        sText =3D oAnchor.innerHTML;=0A=
=0A=
                    }=0A=
=0A=
                    this.srcElement =3D p_oObject;=0A=
                    this.element =3D p_oObject;=0A=
                    this._oAnchor =3D oAnchor;=0A=
=0A=
                    /*=0A=
                        Set these properties silently to sync up the =0A=
                        configuration object without making changes to =
the =0A=
                        element's DOM=0A=
                    */ =0A=
=0A=
                    oConfig.setProperty("text", sText, true);=0A=
                    oConfig.setProperty("url", sURL, true);=0A=
                    oConfig.setProperty("target", sTarget, true);=0A=
=0A=
                    this._initSubTree();=0A=
=0A=
                break;=0A=
=0A=
            }            =0A=
=0A=
        }=0A=
=0A=
=0A=
        if (this.element) {=0A=
=0A=
            sId =3D (this.srcElement || this.element).id;=0A=
=0A=
            if (!sId) {=0A=
=0A=
                sId =3D this.id || Dom.generateId();=0A=
=0A=
                this.element.id =3D sId;=0A=
=0A=
            }=0A=
=0A=
            this.id =3D sId;=0A=
=0A=
=0A=
            Dom.addClass(this.element, this.CSS_CLASS_NAME);=0A=
            Dom.addClass(this._oAnchor, this.CSS_LABEL_CLASS_NAME);=0A=
=0A=
=0A=
            // Create custom events=0A=
=0A=
            this.mouseOverEvent =3D =
this.createEvent(EVENT_TYPES.MOUSE_OVER);=0A=
            this.mouseOverEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.mouseOutEvent =3D =
this.createEvent(EVENT_TYPES.MOUSE_OUT);=0A=
            this.mouseOutEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.mouseDownEvent =3D =
this.createEvent(EVENT_TYPES.MOUSE_DOWN);=0A=
            this.mouseDownEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.mouseUpEvent =3D this.createEvent(EVENT_TYPES.MOUSE_UP);=0A=
            this.mouseUpEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.clickEvent =3D this.createEvent(EVENT_TYPES.CLICK);=0A=
            this.clickEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.keyPressEvent =3D =
this.createEvent(EVENT_TYPES.KEY_PRESS);=0A=
            this.keyPressEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.keyDownEvent =3D this.createEvent(EVENT_TYPES.KEY_DOWN);=0A=
            this.keyDownEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.keyUpEvent =3D this.createEvent(EVENT_TYPES.KEY_UP);=0A=
            this.keyUpEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.focusEvent =3D this.createEvent(EVENT_TYPES.FOCUS);=0A=
            this.focusEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.blurEvent =3D this.createEvent(EVENT_TYPES.BLUR);=0A=
            this.blurEvent.signature =3D SIGNATURE;=0A=
=0A=
            this.destroyEvent =3D this.createEvent(EVENT_TYPES.DESTROY);=0A=
            this.destroyEvent.signature =3D SIGNATURE;=0A=
=0A=
            if (p_oConfig) {=0A=
    =0A=
                oConfig.applyConfig(p_oConfig);=0A=
    =0A=
            }        =0A=
=0A=
            oConfig.fireQueue();=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
=0A=
    // Private methods=0A=
=0A=
=0A=
    /**=0A=
    * @method _createRootNodeStructure=0A=
    * @description Creates the core DOM structure for the menu item.=0A=
    * @private=0A=
    */=0A=
    _createRootNodeStructure: function () {=0A=
=0A=
        var oElement,=0A=
            oAnchor;=0A=
=0A=
        if (!m_oMenuItemTemplate) {=0A=
=0A=
            m_oMenuItemTemplate =3D document.createElement("li");=0A=
            m_oMenuItemTemplate.innerHTML =3D "<a href=3D\"#\"></a>";=0A=
=0A=
        }=0A=
=0A=
        oElement =3D m_oMenuItemTemplate.cloneNode(true);=0A=
        oElement.className =3D this.CSS_CLASS_NAME;=0A=
=0A=
        oAnchor =3D oElement.firstChild;=0A=
        oAnchor.className =3D this.CSS_LABEL_CLASS_NAME;=0A=
        =0A=
        this.element =3D oElement;=0A=
        this._oAnchor =3D oAnchor;=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method _initSubTree=0A=
    * @description Iterates the source element's childNodes collection =
and uses =0A=
    * the child nodes to instantiate other menus.=0A=
    * @private=0A=
    */=0A=
    _initSubTree: function () {=0A=
=0A=
        var oSrcEl =3D this.srcElement,=0A=
            oConfig =3D this.cfg,=0A=
            oNode,=0A=
            aOptions,=0A=
            nOptions,=0A=
            oMenu,=0A=
            n;=0A=
=0A=
=0A=
        if (oSrcEl.childNodes.length > 0) {=0A=
=0A=
            if (this.parent.lazyLoad && this.parent.srcElement && =0A=
                this.parent.srcElement.tagName.toUpperCase() =3D=3D =
"SELECT") {=0A=
=0A=
                oConfig.setProperty(=0A=
                        "submenu", =0A=
                        { id: Dom.generateId(), itemdata: =
oSrcEl.childNodes }=0A=
                    );=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                oNode =3D oSrcEl.firstChild;=0A=
                aOptions =3D [];=0A=
    =0A=
                do {=0A=
    =0A=
                    if (oNode && oNode.tagName) {=0A=
    =0A=
                        switch(oNode.tagName.toUpperCase()) {=0A=
                =0A=
                            case "DIV":=0A=
                =0A=
                                oConfig.setProperty("submenu", oNode);=0A=
                =0A=
                            break;=0A=
         =0A=
                            case "OPTION":=0A=
        =0A=
                                aOptions[aOptions.length] =3D oNode;=0A=
        =0A=
                            break;=0A=
               =0A=
                        }=0A=
                    =0A=
                    }=0A=
                =0A=
                }        =0A=
                while((oNode =3D oNode.nextSibling));=0A=
    =0A=
    =0A=
                nOptions =3D aOptions.length;=0A=
    =0A=
                if (nOptions > 0) {=0A=
    =0A=
                    oMenu =3D new this.SUBMENU_TYPE(Dom.generateId());=0A=
                    =0A=
                    oConfig.setProperty("submenu", oMenu);=0A=
    =0A=
                    for(n=3D0; n<nOptions; n++) {=0A=
        =0A=
                        oMenu.addItem((new =
oMenu.ITEM_TYPE(aOptions[n])));=0A=
        =0A=
                    }=0A=
        =0A=
                }=0A=
            =0A=
            }=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
=0A=
    // Event handlers for configuration properties=0A=
=0A=
=0A=
    /**=0A=
    * @method configText=0A=
    * @description Event handler for when the "text" configuration =
property of =0A=
    * the menu item changes.=0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */=0A=
    configText: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var sText =3D p_aArgs[0],=0A=
            oConfig =3D this.cfg,=0A=
            oAnchor =3D this._oAnchor,=0A=
            sHelpText =3D oConfig.getProperty("helptext"),=0A=
            sHelpTextHTML =3D "",=0A=
            sEmphasisStartTag =3D "",=0A=
            sEmphasisEndTag =3D "";=0A=
=0A=
=0A=
        if (sText) {=0A=
=0A=
=0A=
            if (sHelpText) {=0A=
                    =0A=
                sHelpTextHTML =3D "<em class=3D\"helptext\">" + =
sHelpText + "</em>";=0A=
            =0A=
            }=0A=
=0A=
=0A=
            if (oConfig.getProperty("emphasis")) {=0A=
=0A=
                sEmphasisStartTag =3D "<em>";=0A=
                sEmphasisEndTag =3D "</em>";=0A=
=0A=
            }=0A=
=0A=
=0A=
            if (oConfig.getProperty("strongemphasis")) {=0A=
=0A=
                sEmphasisStartTag =3D "<strong>";=0A=
                sEmphasisEndTag =3D "</strong>";=0A=
            =0A=
            }=0A=
=0A=
=0A=
            oAnchor.innerHTML =3D (sEmphasisStartTag + sText + =0A=
                sEmphasisEndTag + sHelpTextHTML);=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configHelpText=0A=
    * @description Event handler for when the "helptext" configuration =
property =0A=
    * of the menu item changes.=0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */    =0A=
    configHelpText: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        this.cfg.refireEvent("text");=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configURL=0A=
    * @description Event handler for when the "url" configuration =
property of =0A=
    * the menu item changes.=0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */    =0A=
    configURL: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var sURL =3D p_aArgs[0];=0A=
=0A=
        if (!sURL) {=0A=
=0A=
            sURL =3D "#";=0A=
=0A=
        }=0A=
=0A=
        var oAnchor =3D this._oAnchor;=0A=
=0A=
        if (YAHOO.env.ua.opera) {=0A=
=0A=
            oAnchor.removeAttribute("href");=0A=
        =0A=
        }=0A=
=0A=
        oAnchor.setAttribute("href", sURL);=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configTarget=0A=
    * @description Event handler for when the "target" configuration =
property =0A=
    * of the menu item changes.  =0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */    =0A=
    configTarget: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var sTarget =3D p_aArgs[0],=0A=
            oAnchor =3D this._oAnchor;=0A=
=0A=
        if (sTarget && sTarget.length > 0) {=0A=
=0A=
            oAnchor.setAttribute("target", sTarget);=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            oAnchor.removeAttribute("target");=0A=
        =0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configEmphasis=0A=
    * @description Event handler for when the "emphasis" configuration =
property=0A=
    * of the menu item changes.=0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */    =0A=
    configEmphasis: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var bEmphasis =3D p_aArgs[0],=0A=
            oConfig =3D this.cfg;=0A=
=0A=
=0A=
        if (bEmphasis && oConfig.getProperty("strongemphasis")) {=0A=
=0A=
            oConfig.setProperty("strongemphasis", false);=0A=
=0A=
        }=0A=
=0A=
=0A=
        oConfig.refireEvent("text");=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configStrongEmphasis=0A=
    * @description Event handler for when the "strongemphasis" =
configuration =0A=
    * property of the menu item changes.=0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */    =0A=
    configStrongEmphasis: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var bStrongEmphasis =3D p_aArgs[0],=0A=
            oConfig =3D this.cfg;=0A=
=0A=
=0A=
        if (bStrongEmphasis && oConfig.getProperty("emphasis")) {=0A=
=0A=
            oConfig.setProperty("emphasis", false);=0A=
=0A=
        }=0A=
=0A=
        oConfig.refireEvent("text");=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configChecked=0A=
    * @description Event handler for when the "checked" configuration =
property =0A=
    * of the menu item changes. =0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */    =0A=
    configChecked: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var bChecked =3D p_aArgs[0],=0A=
            oElement =3D this.element,=0A=
            oAnchor =3D this._oAnchor,=0A=
            oConfig =3D this.cfg,=0A=
            sState =3D "-checked",=0A=
            sClassName =3D this.CSS_CLASS_NAME + sState,=0A=
            sLabelClassName =3D this.CSS_LABEL_CLASS_NAME + sState;=0A=
=0A=
=0A=
        if (bChecked) {=0A=
=0A=
            Dom.addClass(oElement, sClassName);=0A=
            Dom.addClass(oAnchor, sLabelClassName);=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            Dom.removeClass(oElement, sClassName);=0A=
            Dom.removeClass(oAnchor, sLabelClassName);=0A=
        =0A=
        }=0A=
=0A=
=0A=
        oConfig.refireEvent("text");=0A=
=0A=
=0A=
        if (oConfig.getProperty("disabled")) {=0A=
=0A=
            oConfig.refireEvent("disabled");=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (oConfig.getProperty("selected")) {=0A=
=0A=
            oConfig.refireEvent("selected");=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
=0A=
    /**=0A=
    * @method configDisabled=0A=
    * @description Event handler for when the "disabled" configuration =
property =0A=
    * of the menu item changes. =0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */    =0A=
    configDisabled: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var bDisabled =3D p_aArgs[0],=0A=
            oConfig =3D this.cfg,=0A=
            oSubmenu =3D oConfig.getProperty("submenu"),=0A=
            bChecked =3D oConfig.getProperty("checked"),=0A=
            oElement =3D this.element,=0A=
            oAnchor =3D this._oAnchor,=0A=
            sState =3D "-disabled",=0A=
            sCheckedState =3D "-checked" + sState,=0A=
            sSubmenuState =3D "-hassubmenu" + sState,=0A=
            sClassName =3D this.CSS_CLASS_NAME + sState,=0A=
            sLabelClassName =3D this.CSS_LABEL_CLASS_NAME + sState,=0A=
            sCheckedClassName =3D this.CSS_CLASS_NAME + sCheckedState,=0A=
            sLabelCheckedClassName =3D this.CSS_LABEL_CLASS_NAME + =
sCheckedState,=0A=
            sSubmenuClassName =3D this.CSS_CLASS_NAME + sSubmenuState,=0A=
            sLabelSubmenuClassName =3D this.CSS_LABEL_CLASS_NAME + =
sSubmenuState;=0A=
=0A=
=0A=
        if (bDisabled) {=0A=
=0A=
            if (oConfig.getProperty("selected")) {=0A=
=0A=
                oConfig.setProperty("selected", false);=0A=
=0A=
            }=0A=
=0A=
            Dom.addClass(oElement, sClassName);=0A=
            Dom.addClass(oAnchor, sLabelClassName);=0A=
=0A=
=0A=
            if (oSubmenu) {=0A=
=0A=
                Dom.addClass(oElement, sSubmenuClassName);=0A=
                Dom.addClass(oAnchor, sLabelSubmenuClassName);=0A=
            =0A=
            }=0A=
            =0A=
=0A=
            if (bChecked) {=0A=
=0A=
                Dom.addClass(oElement, sCheckedClassName);=0A=
                Dom.addClass(oAnchor, sLabelCheckedClassName);=0A=
=0A=
            }=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            Dom.removeClass(oElement, sClassName);=0A=
            Dom.removeClass(oAnchor, sLabelClassName);=0A=
=0A=
=0A=
            if (oSubmenu) {=0A=
=0A=
                Dom.removeClass(oElement, sSubmenuClassName);=0A=
                Dom.removeClass(oAnchor, sLabelSubmenuClassName);=0A=
            =0A=
            }=0A=
            =0A=
=0A=
            if (bChecked) {=0A=
=0A=
                Dom.removeClass(oElement, sCheckedClassName);=0A=
                Dom.removeClass(oAnchor, sLabelCheckedClassName);=0A=
=0A=
            }=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configSelected=0A=
    * @description Event handler for when the "selected" configuration =
property =0A=
    * of the menu item changes. =0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */    =0A=
    configSelected: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var oConfig =3D this.cfg,=0A=
            bSelected =3D p_aArgs[0],=0A=
            oElement =3D this.element,=0A=
            oAnchor =3D this._oAnchor,=0A=
            bChecked =3D oConfig.getProperty("checked"),=0A=
            oSubmenu =3D oConfig.getProperty("submenu"),=0A=
            sState =3D "-selected",=0A=
            sCheckedState =3D "-checked" + sState,=0A=
            sSubmenuState =3D "-hassubmenu" + sState,=0A=
            sClassName =3D this.CSS_CLASS_NAME + sState,=0A=
            sLabelClassName =3D this.CSS_LABEL_CLASS_NAME + sState,=0A=
            sCheckedClassName =3D this.CSS_CLASS_NAME + sCheckedState,=0A=
            sLabelCheckedClassName =3D this.CSS_LABEL_CLASS_NAME + =
sCheckedState,=0A=
            sSubmenuClassName =3D this.CSS_CLASS_NAME + sSubmenuState,=0A=
            sLabelSubmenuClassName =3D this.CSS_LABEL_CLASS_NAME + =
sSubmenuState;=0A=
=0A=
=0A=
        if (YAHOO.env.ua.opera) {=0A=
=0A=
            oAnchor.blur();=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if (bSelected && !oConfig.getProperty("disabled")) {=0A=
=0A=
            Dom.addClass(oElement, sClassName);=0A=
            Dom.addClass(oAnchor, sLabelClassName);=0A=
=0A=
=0A=
            if (oSubmenu) {=0A=
=0A=
                Dom.addClass(oElement, sSubmenuClassName);=0A=
                Dom.addClass(oAnchor, sLabelSubmenuClassName);=0A=
            =0A=
            }=0A=
=0A=
=0A=
            if (bChecked) {=0A=
=0A=
                Dom.addClass(oElement, sCheckedClassName);=0A=
                Dom.addClass(oAnchor, sLabelCheckedClassName);=0A=
=0A=
            }=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            Dom.removeClass(oElement, sClassName);=0A=
            Dom.removeClass(oAnchor, sLabelClassName);=0A=
=0A=
=0A=
            if (oSubmenu) {=0A=
=0A=
                Dom.removeClass(oElement, sSubmenuClassName);=0A=
                Dom.removeClass(oAnchor, sLabelSubmenuClassName);=0A=
            =0A=
            }=0A=
=0A=
        =0A=
            if (bChecked) {=0A=
=0A=
                Dom.removeClass(oElement, sCheckedClassName);=0A=
                Dom.removeClass(oAnchor, sLabelCheckedClassName);=0A=
=0A=
            }=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (this.hasFocus() && YAHOO.env.ua.opera) {=0A=
        =0A=
            oAnchor.focus();=0A=
        =0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method _onSubmenuBeforeHide=0A=
    * @description "beforehide" Custom Event handler for a submenu.=0A=
    * @private=0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    */=0A=
    _onSubmenuBeforeHide: function (p_sType, p_aArgs) {=0A=
=0A=
        var oItem =3D this.parent,=0A=
            oMenu;=0A=
=0A=
        function onHide() {=0A=
=0A=
            oItem._oAnchor.blur();=0A=
            oMenu.beforeHideEvent.unsubscribe(onHide);=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if (oItem.hasFocus()) {=0A=
=0A=
            oMenu =3D oItem.parent;=0A=
=0A=
            oMenu.beforeHideEvent.subscribe(onHide);=0A=
        =0A=
        }=0A=
    =0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configSubmenu=0A=
    * @description Event handler for when the "submenu" configuration =
property =0A=
    * of the menu item changes. =0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */=0A=
    configSubmenu: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var oSubmenu =3D p_aArgs[0],=0A=
            oConfig =3D this.cfg,=0A=
            oElement =3D this.element,=0A=
            oAnchor =3D this._oAnchor,=0A=
            bLazyLoad =3D this.parent && this.parent.lazyLoad,=0A=
            sState =3D "-hassubmenu",=0A=
            sClassName =3D this.CSS_CLASS_NAME + sState,=0A=
            sLabelClassName =3D this.CSS_LABEL_CLASS_NAME + sState,=0A=
            oMenu,=0A=
            sSubmenuId,=0A=
            oSubmenuConfig;=0A=
=0A=
=0A=
        if (oSubmenu) {=0A=
=0A=
            if (oSubmenu instanceof Menu) {=0A=
=0A=
                oMenu =3D oSubmenu;=0A=
                oMenu.parent =3D this;=0A=
                oMenu.lazyLoad =3D bLazyLoad;=0A=
=0A=
            }=0A=
            else if (typeof oSubmenu =3D=3D "object" && oSubmenu.id && =0A=
                !oSubmenu.nodeType) {=0A=
=0A=
                sSubmenuId =3D oSubmenu.id;=0A=
                oSubmenuConfig =3D oSubmenu;=0A=
=0A=
                oSubmenuConfig.lazyload =3D bLazyLoad;=0A=
                oSubmenuConfig.parent =3D this;=0A=
=0A=
                oMenu =3D new this.SUBMENU_TYPE(sSubmenuId, =
oSubmenuConfig);=0A=
=0A=
=0A=
                // Set the value of the property to the Menu instance=0A=
=0A=
                oConfig.setProperty("submenu", oMenu, true);=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                oMenu =3D new this.SUBMENU_TYPE(oSubmenu,=0A=
                                { lazyload: bLazyLoad, parent: this });=0A=
=0A=
=0A=
                // Set the value of the property to the Menu instance=0A=
                =0A=
                oConfig.setProperty("submenu", oMenu, true);=0A=
=0A=
            }=0A=
=0A=
=0A=
            if (oMenu) {=0A=
=0A=
                Dom.addClass(oElement, sClassName);=0A=
                Dom.addClass(oAnchor, sLabelClassName);=0A=
=0A=
                this._oSubmenu =3D oMenu;=0A=
=0A=
                if (YAHOO.env.ua.opera) {=0A=
                =0A=
                    =
oMenu.beforeHideEvent.subscribe(this._onSubmenuBeforeHide);              =
 =0A=
                =0A=
                }=0A=
            =0A=
            }=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            Dom.removeClass(oElement, sClassName);=0A=
            Dom.removeClass(oAnchor, sLabelClassName);=0A=
=0A=
            if (this._oSubmenu) {=0A=
=0A=
                this._oSubmenu.destroy();=0A=
=0A=
            }=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (oConfig.getProperty("disabled")) {=0A=
=0A=
            oConfig.refireEvent("disabled");=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (oConfig.getProperty("selected")) {=0A=
=0A=
            oConfig.refireEvent("selected");=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configOnClick=0A=
    * @description Event handler for when the "onclick" configuration =
property =0A=
    * of the menu item changes. =0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */=0A=
    configOnClick: function (p_sType, p_aArgs, p_oItem) {=0A=
=0A=
        var oObject =3D p_aArgs[0];=0A=
=0A=
        /*=0A=
            Remove any existing listeners if a "click" event handler has =0A=
            already been specified.=0A=
        */=0A=
=0A=
        if (this._oOnclickAttributeValue && =0A=
            (this._oOnclickAttributeValue !=3D oObject)) {=0A=
=0A=
            this.clickEvent.unsubscribe(this._oOnclickAttributeValue.fn, =0A=
                                this._oOnclickAttributeValue.obj);=0A=
=0A=
            this._oOnclickAttributeValue =3D null;=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (!this._oOnclickAttributeValue && typeof oObject =3D=3D =
"object" && =0A=
            typeof oObject.fn =3D=3D "function") {=0A=
            =0A=
            this.clickEvent.subscribe(oObject.fn, =0A=
                ((!YAHOO.lang.isUndefined(oObject.obj)) ? oObject.obj : =
this), =0A=
                oObject.scope);=0A=
=0A=
            this._oOnclickAttributeValue =3D oObject;=0A=
=0A=
        }=0A=
    =0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method configClassName=0A=
    * @description Event handler for when the "classname" configuration =0A=
    * property of a menu item changes.=0A=
    * @param {String} p_sType String representing the name of the event =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object representing the =
menu item=0A=
    * that fired the event.=0A=
    */=0A=
    configClassName: function (p_sType, p_aArgs, p_oItem) {=0A=
    =0A=
        var sClassName =3D p_aArgs[0];=0A=
    =0A=
        if (this._sClassName) {=0A=
    =0A=
            Dom.removeClass(this.element, this._sClassName);=0A=
    =0A=
        }=0A=
    =0A=
        Dom.addClass(this.element, sClassName);=0A=
        this._sClassName =3D sClassName;=0A=
    =0A=
    },=0A=
=0A=
=0A=
=0A=
    // Public methods=0A=
=0A=
=0A=
	/**=0A=
    * @method initDefaultConfig=0A=
	* @description Initializes an item's configurable properties.=0A=
	*/=0A=
	initDefaultConfig : function () {=0A=
=0A=
        var oConfig =3D this.cfg;=0A=
=0A=
=0A=
        // Define the configuration attributes=0A=
=0A=
        /**=0A=
        * @config text=0A=
        * @description String specifying the text label for the menu =
item.  =0A=
        * When building a menu from existing HTML the value of this =
property=0A=
        * will be interpreted from the menu's markup.=0A=
        * @default ""=0A=
        * @type String=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.TEXT.key, =0A=
            { =0A=
                handler: this.configText, =0A=
                value: DEFAULT_CONFIG.TEXT.value, =0A=
                validator: DEFAULT_CONFIG.TEXT.validator, =0A=
                suppressEvent: DEFAULT_CONFIG.TEXT.suppressEvent =0A=
            }=0A=
        );=0A=
        =0A=
=0A=
        /**=0A=
        * @config helptext=0A=
        * @description String specifying additional instructional text =
to =0A=
        * accompany the text for the menu item.=0A=
        * @deprecated Use "text" configuration property to add help text =
markup.  =0A=
        * For example: <code>oMenuItem.cfg.setProperty("text", "Copy =
&#60;em =0A=
        * class=3D\"helptext\"&#62;Ctrl + C&#60;/em&#60;");</code>=0A=
        * @default null=0A=
        * @type String|<a href=3D"http://www.w3.org/TR/=0A=
        * 2000/WD-DOM-Level-1-20000929/level-one-html.html#ID-58190037">=0A=
        * HTMLElement</a>=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.HELP_TEXT.key,=0A=
            {=0A=
                handler: this.configHelpText, =0A=
                supercedes: DEFAULT_CONFIG.HELP_TEXT.supercedes,=0A=
                suppressEvent: DEFAULT_CONFIG.HELP_TEXT.suppressEvent =0A=
            }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config url=0A=
        * @description String specifying the URL for the menu item's =
anchor's =0A=
        * "href" attribute.  When building a menu from existing HTML the =
value =0A=
        * of this property will be interpreted from the menu's markup.=0A=
        * @default "#"=0A=
        * @type String=0A=
        */        =0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.URL.key, =0A=
            {=0A=
                handler: this.configURL, =0A=
                value: DEFAULT_CONFIG.URL.value, =0A=
                suppressEvent: DEFAULT_CONFIG.URL.suppressEvent=0A=
            }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config target=0A=
        * @description String specifying the value for the "target" =
attribute =0A=
        * of the menu item's anchor element. <strong>Specifying a target =
will =0A=
        * require the user to click directly on the menu item's anchor =
node in=0A=
        * order to cause the browser to navigate to the specified =
URL.</strong> =0A=
        * When building a menu from existing HTML the value of this =
property =0A=
        * will be interpreted from the menu's markup.=0A=
        * @default null=0A=
        * @type String=0A=
        */        =0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.TARGET.key, =0A=
            {=0A=
                handler: this.configTarget, =0A=
                suppressEvent: DEFAULT_CONFIG.TARGET.suppressEvent=0A=
            }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config emphasis=0A=
        * @description Boolean indicating if the text of the menu item =
will be =0A=
        * rendered with emphasis.=0A=
        * @deprecated Use "text" configuration property to add emphasis. =
 =0A=
        * For example: <code>oMenuItem.cfg.setProperty("text", =
"&#60;em&#62;Some =0A=
        * Text&#60;/em&#60;");</code>=0A=
        * @default false=0A=
        * @type Boolean=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.EMPHASIS.key, =0A=
            { =0A=
                handler: this.configEmphasis, =0A=
                value: DEFAULT_CONFIG.EMPHASIS.value, =0A=
                validator: DEFAULT_CONFIG.EMPHASIS.validator, =0A=
                suppressEvent: DEFAULT_CONFIG.EMPHASIS.suppressEvent,=0A=
                supercedes: DEFAULT_CONFIG.EMPHASIS.supercedes=0A=
            }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config strongemphasis=0A=
        * @description Boolean indicating if the text of the menu item =
will be =0A=
        * rendered with strong emphasis.=0A=
        * @deprecated Use "text" configuration property to add strong =
emphasis.  =0A=
        * For example: <code>oMenuItem.cfg.setProperty("text", =
"&#60;strong&#62; =0A=
        * Some Text&#60;/strong&#60;");</code>=0A=
        * @default false=0A=
        * @type Boolean=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.STRONG_EMPHASIS.key,=0A=
            {=0A=
                handler: this.configStrongEmphasis,=0A=
                value: DEFAULT_CONFIG.STRONG_EMPHASIS.value,=0A=
                validator: DEFAULT_CONFIG.STRONG_EMPHASIS.validator,=0A=
                suppressEvent: =
DEFAULT_CONFIG.STRONG_EMPHASIS.suppressEvent,=0A=
                supercedes: DEFAULT_CONFIG.STRONG_EMPHASIS.supercedes=0A=
            }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config checked=0A=
        * @description Boolean indicating if the menu item should be =
rendered =0A=
        * with a checkmark.=0A=
        * @default false=0A=
        * @type Boolean=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.CHECKED.key, =0A=
            {=0A=
                handler: this.configChecked, =0A=
                value: DEFAULT_CONFIG.CHECKED.value, =0A=
                validator: DEFAULT_CONFIG.CHECKED.validator, =0A=
                suppressEvent: DEFAULT_CONFIG.CHECKED.suppressEvent,=0A=
                supercedes: DEFAULT_CONFIG.CHECKED.supercedes=0A=
            } =0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config disabled=0A=
        * @description Boolean indicating if the menu item should be =
disabled.  =0A=
        * (Disabled menu items are  dimmed and will not respond to user =
input =0A=
        * or fire events.)=0A=
        * @default false=0A=
        * @type Boolean=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.DISABLED.key,=0A=
            {=0A=
                handler: this.configDisabled,=0A=
                value: DEFAULT_CONFIG.DISABLED.value,=0A=
                validator: DEFAULT_CONFIG.DISABLED.validator,=0A=
                suppressEvent: DEFAULT_CONFIG.DISABLED.suppressEvent=0A=
            }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config selected=0A=
        * @description Boolean indicating if the menu item should =0A=
        * be highlighted.=0A=
        * @default false=0A=
        * @type Boolean=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.SELECTED.key,=0A=
            {=0A=
                handler: this.configSelected,=0A=
                value: DEFAULT_CONFIG.SELECTED.value,=0A=
                validator: DEFAULT_CONFIG.SELECTED.validator,=0A=
                suppressEvent: DEFAULT_CONFIG.SELECTED.suppressEvent=0A=
            }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config submenu=0A=
        * @description Object specifying the submenu to be appended to =
the =0A=
        * menu item.  The value can be one of the following: =
<ul><li>Object =0A=
        * specifying a Menu instance.</li><li>Object literal specifying =
the=0A=
        * menu to be created.  Format: <code>{ id: [menu id], itemdata: =0A=
        * [<a href=3D"YAHOO.widget.Menu.html#itemData">array of values =
for =0A=
        * items</a>] }</code>.</li><li>String specifying the id =
attribute =0A=
        * of the <code>&#60;div&#62;</code> element of the menu.</li><li>=0A=
        * Object specifying the <code>&#60;div&#62;</code> element of =
the =0A=
        * menu.</li></ul>=0A=
        * @default null=0A=
        * @type Menu|String|Object|<a href=3D"http://www.w3.org/TR/2000/=0A=
        * WD-DOM-Level-1-20000929/level-one-html.html#ID-58190037">=0A=
        * HTMLElement</a>=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.SUBMENU.key, =0A=
            {=0A=
                handler: this.configSubmenu, =0A=
                supercedes: DEFAULT_CONFIG.SUBMENU.supercedes,=0A=
                suppressEvent: DEFAULT_CONFIG.SUBMENU.suppressEvent=0A=
            }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config onclick=0A=
        * @description Object literal representing the code to be =
executed when =0A=
        * the item is clicked.  Format:<br> <code> {<br> =0A=
        * <strong>fn:</strong> Function,   &#47;&#47; The handler to =
call when =0A=
        * the event fires.<br> <strong>obj:</strong> Object, &#47;&#47; =
An =0A=
        * object to  pass back to the handler.<br> =
<strong>scope:</strong> =0A=
        * Object &#47;&#47; The object to use for the scope of the =
handler.=0A=
        * <br> } </code>=0A=
        * @type Object=0A=
        * @default null=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.ONCLICK.key, =0A=
            {=0A=
                handler: this.configOnClick, =0A=
                suppressEvent: DEFAULT_CONFIG.ONCLICK.suppressEvent =0A=
            }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config classname=0A=
        * @description CSS class to be applied to the menu item's root =0A=
        * <code>&#60;li&#62;</code> element.  The specified class(es) =
are =0A=
        * appended in addition to the default class as specified by the =
menu =0A=
        * item's CSS_CLASS_NAME constant.=0A=
        * @default null=0A=
        * @type String=0A=
        */=0A=
        oConfig.addProperty(=0A=
            DEFAULT_CONFIG.CLASS_NAME.key, =0A=
            { =0A=
                handler: this.configClassName,=0A=
                value: DEFAULT_CONFIG.CLASS_NAME.value, =0A=
                validator: DEFAULT_CONFIG.CLASS_NAME.validator,=0A=
                suppressEvent: DEFAULT_CONFIG.CLASS_NAME.suppressEvent =0A=
            }=0A=
        );=0A=
=0A=
	},=0A=
=0A=
=0A=
    /**=0A=
    * @method getNextEnabledSibling=0A=
    * @description Finds the menu item's next enabled sibling.=0A=
    * @return YAHOO.widget.MenuItem=0A=
    */=0A=
    getNextEnabledSibling: function () {=0A=
=0A=
        var nGroupIndex,=0A=
            aItemGroups,=0A=
            oNextItem,=0A=
            nNextGroupIndex,=0A=
            aNextGroup;=0A=
=0A=
        function getNextArrayItem(p_aArray, p_nStartIndex) {=0A=
=0A=
            return p_aArray[p_nStartIndex] || =0A=
                getNextArrayItem(p_aArray, (p_nStartIndex+1));=0A=
=0A=
        }=0A=
=0A=
        if (this.parent instanceof Menu) {=0A=
=0A=
            nGroupIndex =3D this.groupIndex;=0A=
    =0A=
            aItemGroups =3D this.parent.getItemGroups();=0A=
    =0A=
            if (this.index < (aItemGroups[nGroupIndex].length - 1)) {=0A=
    =0A=
                oNextItem =3D getNextArrayItem(aItemGroups[nGroupIndex], =0A=
                        (this.index+1));=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                if (nGroupIndex < (aItemGroups.length - 1)) {=0A=
    =0A=
                    nNextGroupIndex =3D nGroupIndex + 1;=0A=
    =0A=
                }=0A=
                else {=0A=
    =0A=
                    nNextGroupIndex =3D 0;=0A=
    =0A=
                }=0A=
    =0A=
                aNextGroup =3D getNextArrayItem(aItemGroups, =
nNextGroupIndex);=0A=
    =0A=
                // Retrieve the first menu item in the next group=0A=
    =0A=
                oNextItem =3D getNextArrayItem(aNextGroup, 0);=0A=
    =0A=
            }=0A=
    =0A=
            return (oNextItem.cfg.getProperty("disabled") || =0A=
                oNextItem.element.style.display =3D=3D "none") ? =0A=
                oNextItem.getNextEnabledSibling() : oNextItem;=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method getPreviousEnabledSibling=0A=
    * @description Finds the menu item's previous enabled sibling.=0A=
    * @return {YAHOO.widget.MenuItem}=0A=
    */=0A=
    getPreviousEnabledSibling: function () {=0A=
=0A=
        var nGroupIndex,=0A=
            aItemGroups,=0A=
            oPreviousItem,=0A=
            nPreviousGroupIndex,=0A=
            aPreviousGroup;=0A=
=0A=
        function getPreviousArrayItem(p_aArray, p_nStartIndex) {=0A=
=0A=
            return p_aArray[p_nStartIndex] ||  =0A=
                getPreviousArrayItem(p_aArray, (p_nStartIndex-1));=0A=
=0A=
        }=0A=
=0A=
        function getFirstItemIndex(p_aArray, p_nStartIndex) {=0A=
=0A=
            return p_aArray[p_nStartIndex] ? p_nStartIndex : =0A=
                getFirstItemIndex(p_aArray, (p_nStartIndex+1));=0A=
=0A=
        }=0A=
=0A=
       if (this.parent instanceof Menu) {=0A=
=0A=
            nGroupIndex =3D this.groupIndex;=0A=
            aItemGroups =3D this.parent.getItemGroups();=0A=
=0A=
    =0A=
            if (this.index > getFirstItemIndex(aItemGroups[nGroupIndex], =
0)) {=0A=
    =0A=
                oPreviousItem =3D =
getPreviousArrayItem(aItemGroups[nGroupIndex], =0A=
                        (this.index-1));=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                if (nGroupIndex > getFirstItemIndex(aItemGroups, 0)) {=0A=
    =0A=
                    nPreviousGroupIndex =3D nGroupIndex - 1;=0A=
    =0A=
                }=0A=
                else {=0A=
    =0A=
                    nPreviousGroupIndex =3D aItemGroups.length - 1;=0A=
    =0A=
                }=0A=
    =0A=
                aPreviousGroup =3D getPreviousArrayItem(aItemGroups, =0A=
                    nPreviousGroupIndex);=0A=
    =0A=
                oPreviousItem =3D getPreviousArrayItem(aPreviousGroup, =0A=
                        (aPreviousGroup.length - 1));=0A=
    =0A=
            }=0A=
=0A=
            return (oPreviousItem.cfg.getProperty("disabled") || =0A=
                oPreviousItem.element.style.display =3D=3D "none") ? =0A=
                oPreviousItem.getPreviousEnabledSibling() : =
oPreviousItem;=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method focus=0A=
    * @description Causes the menu item to receive the focus and fires =
the =0A=
    * focus event.=0A=
    */=0A=
    focus: function () {=0A=
=0A=
        var oParent =3D this.parent,=0A=
            oAnchor =3D this._oAnchor,=0A=
            oActiveItem =3D oParent.activeItem,=0A=
            me =3D this;=0A=
=0A=
=0A=
        function setFocus() {=0A=
=0A=
            try {=0A=
=0A=
                if (YAHOO.env.ua.ie && !document.hasFocus()) {=0A=
                =0A=
                    return;=0A=
                =0A=
                }=0A=
=0A=
                if (oActiveItem) {=0A=
    =0A=
                    oActiveItem.blurEvent.fire();=0A=
    =0A=
                }=0A=
=0A=
                oAnchor.focus();=0A=
                =0A=
                me.focusEvent.fire();=0A=
=0A=
            }=0A=
            catch(e) {=0A=
            =0A=
            }=0A=
=0A=
        }=0A=
=0A=
=0A=
        if (!this.cfg.getProperty("disabled") && oParent && =0A=
            oParent.cfg.getProperty("visible") && =0A=
            this.element.style.display !=3D "none") {=0A=
=0A=
=0A=
            /*=0A=
                Setting focus via a timer fixes a race condition in =
Firefox, IE =0A=
                and Opera where the browser viewport jumps as it trys to =0A=
                position and focus the menu.=0A=
            */=0A=
=0A=
            window.setTimeout(setFocus, 0);=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method blur=0A=
    * @description Causes the menu item to lose focus and fires the =0A=
    * blur event.=0A=
    */    =0A=
    blur: function () {=0A=
=0A=
        var oParent =3D this.parent;=0A=
=0A=
        if (!this.cfg.getProperty("disabled") && oParent && =0A=
            oParent.cfg.getProperty("visible")) {=0A=
=0A=
=0A=
            var me =3D this;=0A=
            =0A=
            window.setTimeout(function () {=0A=
=0A=
                try {=0A=
    =0A=
                    me._oAnchor.blur();=0A=
                    me.blurEvent.fire();    =0A=
=0A=
                } =0A=
                catch (e) {=0A=
                =0A=
                }=0A=
                =0A=
            }, 0);=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method hasFocus=0A=
    * @description Returns a boolean indicating whether or not the menu =
item=0A=
    * has focus.=0A=
    * @return {Boolean}=0A=
    */=0A=
    hasFocus: function () {=0A=
    =0A=
        return (YAHOO.widget.MenuManager.getFocusedMenuItem() =3D=3D =
this);=0A=
    =0A=
    },=0A=
=0A=
=0A=
	/**=0A=
    * @method destroy=0A=
	* @description Removes the menu item's <code>&#60;li&#62;</code> =
element =0A=
	* from its parent <code>&#60;ul&#62;</code> element.=0A=
	*/=0A=
    destroy: function () {=0A=
=0A=
        var oEl =3D this.element,=0A=
            oSubmenu,=0A=
            oParentNode;=0A=
=0A=
        if (oEl) {=0A=
=0A=
=0A=
            // If the item has a submenu, destroy it first=0A=
=0A=
            oSubmenu =3D this.cfg.getProperty("submenu");=0A=
=0A=
            if (oSubmenu) {=0A=
            =0A=
                oSubmenu.destroy();=0A=
            =0A=
            }=0A=
=0A=
=0A=
            // Remove CustomEvent listeners=0A=
    =0A=
            this.mouseOverEvent.unsubscribeAll();=0A=
            this.mouseOutEvent.unsubscribeAll();=0A=
            this.mouseDownEvent.unsubscribeAll();=0A=
            this.mouseUpEvent.unsubscribeAll();=0A=
            this.clickEvent.unsubscribeAll();=0A=
            this.keyPressEvent.unsubscribeAll();=0A=
            this.keyDownEvent.unsubscribeAll();=0A=
            this.keyUpEvent.unsubscribeAll();=0A=
            this.focusEvent.unsubscribeAll();=0A=
            this.blurEvent.unsubscribeAll();=0A=
            this.cfg.configChangedEvent.unsubscribeAll();=0A=
=0A=
=0A=
            // Remove the element from the parent node=0A=
=0A=
            oParentNode =3D oEl.parentNode;=0A=
=0A=
            if (oParentNode) {=0A=
=0A=
                oParentNode.removeChild(oEl);=0A=
=0A=
                this.destroyEvent.fire();=0A=
=0A=
            }=0A=
=0A=
            this.destroyEvent.unsubscribeAll();=0A=
=0A=
        }=0A=
=0A=
    },=0A=
=0A=
=0A=
    /**=0A=
    * @method toString=0A=
    * @description Returns a string representing the menu item.=0A=
    * @return {String}=0A=
    */=0A=
    toString: function () {=0A=
=0A=
        var sReturnVal =3D "MenuItem",=0A=
            sId =3D this.id;=0A=
=0A=
        if (sId) {=0A=
    =0A=
            sReturnVal +=3D (" " + 
