From: <Saved by Windows Internet Explorer 7>
Subject: =?Windows-1252?Q?Con_total_normalidad_transcurren_elecciones_en_Ecuador_|?=
	=?Windows-1252?Q?_26_de_Abril_de_2009_|_DiarioCoLatino.com_-_M=E1s_de_un_?=
	=?Windows-1252?Q?Siglo_de_Credibilidad?=
Date: Sun, 26 Apr 2009 13:52:59 -0500
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C9C676.4F71ABE0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/es/20090425/internacionales/66148/

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Con total =
normalidad transcurren elecciones en Ecuador | 26 de Abril de 2009 | =
DiarioCoLatino.com - M=C3=A1s de un Siglo de Credibilidad</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dutf-8">
<META content=3D"MSHTML 6.00.6000.16762" name=3DGENERATOR>
<META=20
content=3D"colatino, co latino, latino, diario, periodico, newspaper, =
prensa, press, noticia, news, internacional, international, world, =
nacional, national, nation, el salvador, salvador, centroam=C3=A9rica, =
centroamerica, central america, centro am=C3=A9rica, centro america, =
informaci=C3=B3n general"=20
name=3Dkeywords>
<META content=3D"Diario Co Latino" name=3DOrigen>
<META=20
content=3D"Encuentre noticias de =C3=BAltima hora, v=C3=ADdeos, audios, =
m=C3=BAsica, multimedia, opini=C3=B3n, internacional, econom=C3=ADa, =
deportes, tecnolog=C3=ADa, cine, viajes y mucho m=C3=A1s, en el =
principal peri=C3=B3dico en espa=C3=B1ol del mundo"=20
name=3DDescription>
<META content=3D"Sociedad Cooperativa de Empleados de Diario Co Latino =
de R. L."=20
name=3DAuthor>
<META content=3D"San Salvador, El Salvador. Centroam=C3=A9rica." =
name=3DLocality>
<META content=3Des name=3Dlang><!--
<meta http-equiv=3D"Refresh" content=3D"1800; =
url=3Dhttp://www.diariocolatino.com/" />
--><LINK=20
href=3D"http://www.diariocolatino.com/look/yui/reset-fonts-grids/reset-fo=
nts-grids.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://www.diariocolatino.com/look/style.css" type=3Dtext/css=20
rel=3Dstylesheet><LINK href=3D"images/favicon.ico" rel=3D"shortcut =
icon">
<SCRIPT language=3DJavaScript=20
src=3D"http://www.diariocolatino.com/look/scripts/cal.js"></SCRIPT>

<SCRIPT language=3DJavaScript>=0A=
	var cal =3D new CalendarPopup();=0A=
	cal.addDisabledDates('2009-04-25',null); =0A=
	cal.addDisabledDates(null,'2002-12-15'); =0A=
	cal.showYearNavigation();=0A=
</SCRIPT>
<LINK title=3D"DiarioCoLatino.com - M=C3=A1s de un Siglo de =
Credibilidad."=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66148/?=
tpl=3D465"=20
type=3Dapplication/rss+xml rel=3Dalternate>
<SCRIPT language=3DJavaScript>
<!--
        function openWindow() {
        var load =3D window.open('send-article-form.php?titulo=3DCon =
total normalidad transcurren elecciones en =
Ecuador&resumenArticulo=3D&uriArticulo=3Dhttp://www.diariocolatino.com/es=
/20090425/internacionales/66148/','','scrollbars=3Dyes,height=3D480,width=
=3D455,resizable=3Dno,toolbar=3Dno,location=3Dno,status=3Dno,menubar=3Dno=
');
        }
-->
</SCRIPT>
</HEAD>
<BODY id=3Dyahoo-com><!-- Estadisticas para el articulo : -->
<SCRIPT src=3D"http://www.google-analytics.com/urchin.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>
_uacct =3D "UA-1634477-2";
urchinTracker();
</SCRIPT>
<!-- Estadisticas acumulativas para la seccion y ID del Articulo: -->
<SCRIPT type=3Dtext/javascript>
        _uacct =3D "UA-1634477-2";
        urchinTracker('/secciones/Internacionales/');
    </SCRIPT>
<!-- -------------------------------------------- -->
<DIV class=3Dyui-t7 id=3Ddoc><!-- doc:750px centered (good for 800x600) =
; yui-t7: One full-width column -->
<DIV id=3Dhd><A name=3Dtop></A>
<DIV style=3D"MARGIN-TOP: 1em" align=3Dright>
<TABLE border=3D0>
  <TBODY>
  <TR vAlign=3Dtop>
    <TD><A href=3D"http://www.diariocolatino.com/?tpl=3D35">Archivo</A> =
</TD>
    <TD>&nbsp;&nbsp;&nbsp;</TD>
    <TD>|&nbsp;&nbsp;&nbsp;<A=20
      =
href=3D"http://www.diariocolatino.com/?tpl=3D486">B=C3=BAsqueda</A> <!-- =
SiteSearch Google=20
<form method=3D"get" action=3D"http://www.google.com.sv/custom" =
target=3D"google_window">
<table border=3D"0" bgcolor=3D"#ffffff">
<tr valign=3D"top"><td nowrap=3D"nowrap" valign=3D"top" align=3D"left" =
height=3D"32">

</td>
<td nowrap=3D"nowrap">
<input type=3D"hidden" name=3D"domains" =
value=3D"www.diariocolatino.com"></input>
<input type=3D"text" name=3D"q" size=3D"20" maxlength=3D"255" =
value=3D"Buscar..." id=3D"sbi"></input>
<input type=3D"image" name=3D"sa" src=3D"images/small_submit.gif" =
alt=3D"Ir!" title=3D"Ir a Edici=C3=B3n!" id=3D"sbb"></input>
</td></tr>
<tr>
<td>&nbsp;</td>
<td nowrap=3D"nowrap">
<table>
<tr>
<td>
<input type=3D"hidden" name=3D"sitesearch" =
value=3D"www.diariocolatino.com" id=3D"ss1"></input>
</td>
</tr>
</table>
<input type=3D"hidden" name=3D"client" =
value=3D"pub-2160597601152538"></input>
<input type=3D"hidden" name=3D"forid" value=3D"1"></input>
<input type=3D"hidden" name=3D"channel" value=3D"3114218593"></input>
<input type=3D"hidden" name=3D"ie" value=3D"UTF-8"></input>
<input type=3D"hidden" name=3D"oe" value=3D"UTF-8"></input>
<input type=3D"hidden" name=3D"safe" value=3D"active"></input>
<input type=3D"hidden" name=3D"flav" value=3D"0000"></input>
<input type=3D"hidden" name=3D"sig" value=3D"6uhVbXR-Cgl6y-hN"></input>
<input type=3D"hidden" name=3D"cof" =
value=3D"GALT:#E9382F;GL:1;DIV:#CCCCCC;VLC:7E3939;AH:center;BGC:FFFFFF;LB=
GC:FFFFFF;ALC:E9382F;LC:E9382F;T:000000;GFNT:7E3939;GIMP:7E3939;LH:50;LW:=
282;L:http://www.diariocolatino.com/look/images/logo.png;S:http://;FORID:=
1"></input>
<input type=3D"hidden" name=3D"hl" value=3D"es"></input>
</td></tr></table>
</form>
 SiteSearch Google --></TD></TR></TBODY></TABLE><BR></DIV>
<DIV class=3Dbanner_h>
<DIV class=3Dtop_flash>
<SCRIPT type=3Dtext/javascript><!--
google_ad_client =3D "pub-2160597601152538";
google_ad_width =3D 728;
google_ad_height =3D 90;
google_ad_format =3D "728x90_as";
google_ad_type =3D "text";
//2007-06-21: diariocolatino.com
google_ad_channel =3D "0746588374";
google_color_border =3D "F2F3F5";
google_color_bg =3D "F2F3F5";
google_color_link =3D "CC0000";
google_color_text =3D "666666";
google_color_url =3D "555555";
//-->
</SCRIPT>

<SCRIPT src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"=20
type=3Dtext/javascript>
</SCRIPT>
</DIV></DIV><!-- Standard reset, fonts and grids --><LINK=20
href=3D"http://www.diariocolatino.com/look/yui/menu/assets/menu.css" =
type=3Dtext/css=20
rel=3Dstylesheet>
<SCRIPT src=3D"http://www.diariocolatino.com/look/yui/yahoo/yahoo.js"=20
type=3Dtext/javascript></SCRIPT>
<!-- Dependency source files -->
<SCRIPT src=3D"http://www.diariocolatino.com/look/yui/event/event.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.diariocolatino.com/look/yui/dom/dom.js"=20
type=3Dtext/javascript></SCRIPT>
<!-- Container source file -->
<SCRIPT =
src=3D"http://www.diariocolatino.com/look/yui/container/container_core.js=
"=20
type=3Dtext/javascript></SCRIPT>
<!-- Menu source file -->
<SCRIPT src=3D"http://www.diariocolatino.com/look/yui/menu/menu.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>

            YAHOO.example.onMenuBarReady =3D function() {

                // Instantiate and render the menu bar

                var oMenuBar =3D new =
YAHOO.widget.MenuBar("menuCoLatino", { autosubmenudisplay:true, =
hidedelay:750, lazyload:true });

                oMenuBar.render();

            };


            // Initialize and render the menu bar when it is available =
in the DOM

            YAHOO.util.Event.onContentReady("menuCoLatino", =
YAHOO.example.onMenuBarReady);

        </SCRIPT>

<DIV class=3Dheader>
<DIV align=3Dleft><A href=3D"http://www.diariocolatino.com/"><IMG=20
alt=3DDiarioCoLatino.com =
src=3D"http://www.diariocolatino.com/look/images/logo.png"=20
border=3D0></A> </DIV>
<DIV class=3Dheader_timedate>El Salvador, <B>Domingo</B>&nbsp;26 de =
Abril de=20
2009<BR><B><FONT color=3D#666666>=C3=9Altima actualizaci=C3=B3n =
:</FONT>&nbsp;<FONT=20
color=3Dred>26/10:24&nbsp;h.</FONT></B> </DIV></DIV>
<DIV class=3Dyuimenubar id=3DmenuCoLatino>
<DIV class=3Dbd>
<UL class=3Dfirst-of-type>
  <LI class=3D"yuimenubaritem first-of-type"><A class=3Dnav=20
  href=3D"http://www.diariocolatino.com/">Inicio</A> </LI>
  <LI class=3Dyuimenubaritem><A class=3Dnav=20
  =
href=3D"http://www.diariocolatino.com/es/20090425/nacionales/">Nacionales=
</A>=20
  </LI>
  <LI class=3Dyuimenubaritem><A class=3Dnav=20
  =
href=3D"http://www.diariocolatino.com/es/20090425/opiniones/">Opiniones</=
A>=20
</LI>
  <LI class=3Dyuimenubaritem><A class=3Dnav=20
  =
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/">Inter=
nacionales</A>=20
  </LI>
  <LI class=3Dyuimenubaritem><A class=3Dnav=20
  =
href=3D"http://www.diariocolatino.com/es/20090425/deportes/">Deportes</A>=
 </LI>
  <LI class=3Dyuimenubaritem><A>Especiales</A>=20
  <DIV class=3Dyuimenu id=3Despeciales>
  <DIV class=3Dbd>
  <UL>
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/articulos/">Art=C3=ADcu=
los</A>=20
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    href=3D"http://www.diariocolatino.com/es/20090425/civico/">Centro =
C=C3=ADvico=20
    Democr=C3=A1tico</A>=20
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/contraportada/">Contrap=
ortada</A>=20

    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/municipalismo/">Municip=
alismo</A>=20

    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/trazosculturales/">Traz=
os=20
    Culturales</A>=20
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/reportajes/">Reportajes=
</A>=20
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/universitaria/">Univers=
itaria</A>=20

    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/proyecto_cultural_sur_v=
ancouver/">Proyecto=20
    Cultural Sur Vancouver</A>=20
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    href=3D"http://www.diariocolatino.com/es/20090425/260/">Sociales</A> =

  </LI></UL></DIV></DIV></LI>
  <LI class=3Dyuimenubaritem><A>Suplementos</A>=20
  <DIV class=3Dyuimenu id=3Dsuplementos>
  <DIV class=3Dbd>
  <UL>
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/deportivo/">Deportivo</=
A>=20
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/amigos/">Amigos</A>=20
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    href=3D"http://www.diariocolatino.com/es/20090425/tresmil/">Tres Mil =
|=20
    3000</A>=20
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/perspectivas/">Perspect=
ivas</A>=20

    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/aula_abierta/">Aula=20
    Abierta</A>=20
    <LI class=3Dyuimenuitem><A class=3Dnav=20
    =
href=3D"http://www.diariocolatino.com/es/20090425/ecologico/">Ecol=C3=B3g=
ico</A>=20
    </LI></UL></DIV></DIV></LI></UL></DIV></DIV>
<DIV id=3Dnav2>
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%" border=3D0>
  <TBODY>
  <TR>
    <TD><!-- INICIO CLIMA -->
      <DIV>
      <TABLE border=3D0>
        <TBODY>
        <TR>
          <TD><STRONG>San Salvador&nbsp;27&nbsp;=C2=B0C</STRONG></TD>
          <TD><IMG height=3D31 =
src=3D"http://l.yimg.com/a/i/us/we/52/28.gif"=20
            width=3D31=20
    border=3D0>&nbsp;</TD></TR></TBODY></TABLE></DIV><!-- FIN CLIMA =
--></TD>
    <TD align=3Dright><A href=3D"http://www.diariocolatino.com/enfotos"=20
      target=3D_blank>En Fotos</A> | <A=20
      =
href=3D"http://www.diariocolatino.com/es/20070814/articulos/46016">Qui=C3=
=A9nes=20
      Somos</A> | <A=20
      =
href=3D"http://www.diariocolatino.com/es/20070814/articulos/46020">Suscri=
pciones</A>=20
      | <!--<a href=3D"#">Blogs</a> | --><A=20
      =
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66148/?=
tpl=3D472"><IMG=20
      title=3D"Ediciones en pdf" alt=3D"Ediciones en pdf"=20
      =
src=3D"http://www.diariocolatino.com/look/images/ico_version_pdf.gif"=20
      border=3D0></A> | <A=20
      =
href=3D"http://feedproxy.google.com/DiarioCoLatino?format=3Dxml"><IMG=20
      title=3Drss alt=3Drss=20
      src=3D"http://www.diariocolatino.com/look/images/ico-rss.gif"=20
      border=3D0></A>&nbsp;<A title=3D"=C2=BFQu=C3=A9 es RSS?"=20
      =
onclick=3D"window.open('http://www.diariocolatino.com/look/rss_ayuda.html=
',&#13;&#10;              'RSS | DiarioCoLatino.com','resizable=3Dyes, =
scrollbars=3Dyes, status=3Dno, menubar=3Dno, width=3D400, =
height=3D500');return false;"=20
      href=3D"http://www.diariocolatino.com/look/rss_ayuda.html"=20
      target=3D_blank>(?)</A><!-- | --> <!--<a href=3D"#">S=C3=B3lo =
texto</a> | --><!--<a href=3D"#">Escr=C3=ADbanos</a> | --><!--<a =
href=3D"#">Publicidad</a> | --><!--<a href=3D"#">Ayuda</a> |=20
<a href=3D"#"><img src=3D"images/sitemap.gif" border=3D"0" alt=3D"Mapa =
del Sitio" title=3D"Mapa del =
Sitio"/></a>--></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV id=3Dbd>
<DIV id=3Dyui-main>
<DIV class=3Dyui-b>
<DIV class=3Dyui-gc><!-- 2/3 - 1/3 -->
<DIV class=3D"yui-u first"><!-- Start Mini Bread-Crum  -->
<H4><A =
href=3D"http://www.diariocolatino.com/">Portada</A>&nbsp;&gt;&nbsp;<A=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/">Inter=
nacionales</A>=20
</H4><!-- End Mini Bread-Crum  -->
<P><FONT color=3D#cc0000 size=3D+1>Domingo, 26 de Abril de 2009 / 10:24 =
h</FONT></P>
<H2>Con total normalidad transcurren elecciones en Ecuador</H2>
<DIV align=3Dright>
<P><A href=3D"javascript:openWindow()"><IMG title=3Denviar alt=3D"Enviar =
a Un Amigo"=20
src=3D"http://www.diariocolatino.com/look/images/ico_send.gif" =
border=3D0></A>&nbsp;=20
<A=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66148/?=
tpl=3D71"=20
target=3D_blank><IMG title=3D"Versi=C3=B3n para Imprimir" =
alt=3D"Versi=C3=B3n para Imprimir"=20
src=3D"http://www.diariocolatino.com/look/images/ico_print.gif" =
border=3D0>=20
</A></P></DIV><!-- The Article Body START -->
<DIV id=3DarticleBody>
<P>
<H1 class=3Darial22AzulOscuroTitulo><SPAN class=3Darial10boldGrisOscuro=20
style=3D"MARGIN-RIGHT: 10px"><FONT color=3D#606060=20
size=3D1>TeleSUR&nbsp;</FONT></SPAN></H1>
<H1><FONT face=3D"Arial, Helvetica, sans-serif" size=3D2>Las elecciones =
generales=20
celebradas este domingo en Ecuador, se han desarrollado desde tempranas =
horas de=20
la ma=C3=B1ana con total normalidad y transparencia, jornada en la que =
m=C3=A1s de 10=20
millones de ciudadanos asisten a las urnas democr=C3=A1ticamente.<BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">El presidente del =
Consejo=20
Nacional Electoral (CNE) de Ecuador, Omar Simon, destac=C3=B3 que el =
</SPAN><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">proceso se=20
produce&nbsp;"justamente en el a=C3=B1o del bicentenario de la =
Independencia" y acot=C3=B3=20
que la de este domingo es "otra gesta c=C3=ADvica, esta vez en las =
urnas, relevando a=20
todas las autoridades de elecci=C3=B3n popular".</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">El jefe de Estado =
Rafael Correa,=20
ejerci=C3=B3 su derecho al voto antes de las 9:00 GMT (Hora local). Una =
vez ejercido=20
el voto convoc=C3=B3&nbsp;al pueblo elector a acudir a las urnas de =
forma masiva y=20
democr=C3=A1tica.</SPAN><BR style=3D"FONT-FAMILY: =
Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">"Todos a acudir a las =
urnas=20
(...) en nuestras manos est=C3=A1 volver al pasado o continuar con el =
cambio",=20
expres=C3=B3 Correa en unas cortas declaraciones tras su acto =
electoral.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Al ser cuestionado =
sobre si=20
estaba seguro de su victoria en estas elecciones, Rafael =
Correa&nbsp;dijo que =C3=A9l=20
nunca da "por seguro nada" y que la decisi=C3=B3n est=C3=A1 en "manos de =
Dios y del pueblo=20
ecuatoriano".</SPAN><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR><BR>El presidente =
del=20
Legislativo, Fernando Cordero, vot=C3=B3 en horas de la ma=C3=B1ana en =
la ciudad de=20
Cuenca, provincia de Azuay, y critic=C3=B3 los se=C3=B1alamientos de =
candidato opositor,=20
Lucio Guti=C3=A9rrez, quien se equivoc=C3=B3 e intent=C3=B3 sufragar en =
una mesa equivocada=20
"por despistado" y quiso hablar de fraude.<BR><BR>"A esa gente no hay =
que=20
creerle. Si no es capaz de descubrir donde tiene que votar, no le crean =
nada,=20
eso =C3=A9l, mentiroso", sostuvo Cordero en declaraciones a la=20
prensa.<BR><BR></SPAN></FONT><FONT face=3D"Arial, Helvetica, sans-serif" =

size=3D2><SPAN style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Lucio=20
Guti=C3=A9rrez,&nbsp;vot=C3=B3 a las 07H30 locales (12H00 GMT), en la =
mesa n=C3=BAmero 170 del=20
colegio 24 de mayo, al norte de Quito.</SPAN></FONT><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><FONT=20
face=3D"Arial, Helvetica, sans-serif" size=3D2><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"></SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">En todo Ecuador se han =
instalado=20
m=C3=A1s de 44 mil juntas de recepci=C3=B3n de votos o mesas =
electorales, en una jornada=20
de votaciones que se extender=C3=A1 hasta las cinco de la tarde (22H00=20
GMT).</SPAN><BR style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Si ninguno de los ocho =

candidatos presidenciales obtiene este domingo la mayor=C3=ADa de los =
votos que=20
establece la ley para ser designado en el cargo, se celebrar=C3=ADa una =
segunda ronda=20
el pr=C3=B3ximo 14 de junio, entre los dos aspirantes m=C3=A1s =
votados.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">El Consejo Nacional =
Electoral=20
(CNE) estima que alrededor de las 5 de la tarde (Hora local), cierren =
todas las=20
mesas de votaci=C3=B3n para continuar con el proceso de las Juntas =
Intermedias de=20
Escrutinio (JIE) a nivel regional y nacional en 23 de las 24 provincias=20
ecuatorianas.</SPAN><BR style=3D"FONT-FAMILY: =
Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Las JIE son los =
organismos=20
encargados en cada provincia de recolectar los datos de cada centro de =
votaci=C3=B3n=20
y enviarla luego a la autoridad central.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">El representante de la =
Misi=C3=B3n de=20
Observadores internacionales de la Organizaci=C3=B3n de Estados =
Americanos (OEA),=20
Jos=C3=A9 Ribeiro declar=C3=B3 que ya se tiene un primer informe de las =
primeras=20
votaciones en el exterior como Australia y Suiza.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Ribeiro =
se=C3=B1al=C3=B3 que algunos=20
miembros de la Comisi=C3=B3n de la OEA se encuentran en Ecuador desde =
principios de=20
abril, tiempo en el que realizaron un largo recorridio de la=20
situaci=C3=B3n.</SPAN><BR style=3D"FONT-FAMILY: =
Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">La mayor=C3=ADa se han =
desplegado en=20
diversos puntos del pa=C3=ADs para seguir la jornada electoral =
nacional.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-WEIGHT: bold; FONT-FAMILY: =
Arial,Helvetica,sans-serif">Isla Pun=C3=A1 no=20
inici=C3=B3 jornada</SPAN><BR style=3D"FONT-FAMILY: =
Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">El general Patricio =
C=C3=A1rdenas,=20
jefe de Operaciones del Comando Conjunto de las Fuerzas Armadas de =
Ecuador, dijo=20
que el proceso electoral se ha desarrollado con normalidad a =
excepci=C3=B3n de la=20
Isla Pun=C3=A1 (sur del pa=C3=ADs) donde no iniciaron la jornada =
electoral.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Residentes de la zona =
tomaron,=20
como medida de protesta "dos recintos electorales y el material (para =
las=20
votaciones) no ha podido ser depositado en ese lugar", se=C3=B1al=C3=B3 =
C=C3=A1rdenas al canal=20
Ecuavisa.</SPAN><BR style=3D"FONT-FAMILY: =
Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Indic=C3=B3 =
adem=C3=A1s que ha coordinado=20
con las autoridades civiles y electorales de la provincia de Guayas para =
asumir=20
los mecanismos que permitan el normal desenvolvimiento del proceso de=20
votaci=C3=B3n.</SPAN><BR style=3D"FONT-FAMILY: =
Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">C=C3=A1rdenas dijo que =
podr=C3=ADan tomar=20
otros lugares de la Isla de Pun=C3=A1 para que los electores de esa zona =
ejerzan su=20
derecho al voto.</SPAN><BR style=3D"FONT-FAMILY: =
Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">La autoridad =
confirm=C3=B3 que a=20
excepci=C3=B3n de esa localidad, en todo el territorio ecuatoriano la =
situaci=C3=B3n se ha=20
presentado con total normalidad y las Fuerzas Armadas han cumplido con =
el=20
traslado del material electoral a todas als 44 mil mesas de =
votaci=C3=B3n en todo el=20
pa=C3=ADs.</SPAN><BR style=3D"FONT-FAMILY: =
Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">"Est=C3=A1 todo el =
personal listo con=20
su dispositivo" de seguridad de los colegios de votaci=C3=B3n y custodia =
del material=20
electoral, a=C3=B1adi=C3=B3 el jefe militar, al precisar que son =
m=C3=A1s de 38 mil los=20
efectivos cumpliendo con esa tarea.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-WEIGHT: bold; FONT-FAMILY: =
Arial,Helvetica,sans-serif">"Absoluta=20
normalidad" en el exterior</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Los c=C3=B3nsules =
ecuatorianos en el=20
extranjero manifestaron que la jornada de este domingo se est=C3=A1 =
efectuando con=20
"absoluta normalidad" y sin incidentes de gravedad.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Dora Aguirre, del =
Movimiento=20
PA=C3=8DS que lidera el presidente Correa, se mostr=C3=B3 satisfecha por =
el desarrollo de=20
la jornada y por la participaci=C3=B3n, Asimismo expres=C3=B3 que no =
ten=C3=ADa constancia de=20
ninguna irragularidad y agreg=C3=B3 que se est=C3=A1 realizando un voto =
"exigente y=20
consciente".</SPAN><BR style=3D"FONT-FAMILY: =
Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">En rueda de prensa en =
el Palacio=20
de Vistalegre en Madrid, el c=C3=B3nsul de Ecuador en la capital de =
Espa=C3=B1a, Gustavo=20
Mateus, tambi=C3=A9n subray=C3=B3 la normalidad del proceso =
electoral.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif">Hasta las 12:00 horas =
(10:00=20
horas GMT) de los 36 mil 545 ecuatorianos que pueden votar en Madrid, lo =
hab=C3=ADan=20
hecho 4 mil 300, un 11,7 por ciento del electorado, seg=C3=BAn datos =
aportados por el=20
encargado de negocios de la Embajada de Ecuador.</SPAN><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><BR=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"></FONT><SPAN=20
style=3D"FONT-FAMILY: Arial,Helvetica,sans-serif"><FONT=20
face=3D"Arial, Helvetica, sans-serif" size=3D2>Tanto en Murcia, como en =
Barcelona,=20
Valencia y Palma de Mallorca sus respectivos c=C3=B3nsules coincidieron =
en destacar=20
la "normalidad democr=C3=A1tica" del proceso electoral y la =
celebraci=C3=B3n de la "fiesta=20
de la democracia para la comunidad ecuatoriana".<BR><BR=20
style=3D"FONT-WEIGHT: bold"><SPAN style=3D"FONT-WEIGHT: bold">"Proyectos =
derechistas=20
son retorno al pasado"</SPAN><BR><BR>Edgardo Ram=C3=ADrez, =
Internacionalista, expres=C3=B3=20
este domingo en exclusiva para TeleSUR, que "los proyectos de la derecha =

representados por Noboa y el ex presidente Lucio Guti=C3=A9rrez, =
mantienen un=20
discurso de cambio pero ser=C3=ADan retornar al pasado y a los Tratados =
de Libre=20
Comercio".<BR><BR>En cuanto al voto de j=C3=B3venes y presos sin =
sentencia, el=20
internacionalista opin=C3=B3&nbsp; que en la medida que permitan mayor =
participaci=C3=B3n=20
del pueblo, se van a fortalecer y a legitimar los procesos =
pol=C3=ADticos que est=C3=A1n=20
ocurriendo en el pa=C3=ADs.<BR><BR>"En este caso que se ha hecho posible =
la=20
participaci=C3=B3n de los presos y los adolescentes, grupos =
hist=C3=B3ricamente excluidos,=20
hacen de este un proceso transparente creado en un escenario de =
igualdad", dijo.=20
<BR><BR>Afirm=C3=B3 que la presencia de Observadores Internacionales de =
la OEA, la=20
Uni=C3=B3n Europea y diversas ONG hacen que estos comicios trasciendan =
como un=20
"proceso limpio y transparente para el pueblo de Ecuador".<BR><BR>Por =
otro lado,=20
enfatiz=C3=B3 que los movimientos ind=C3=ADgenas est=C3=A1n reforzando =
su presencia en las=20
luchas pol=C3=ADticas a finales del siglo XX, hay una mayor presencia de =
estos grupos=20
porque se han elevado los niveles de conciencia de los grupos=20
abor=C3=ADgenes".<BR><BR><SPAN style=3D"FONT-WEIGHT: =
bold">Ind=C3=ADgenas por la revoluci=C3=B3n=20
agraria</SPAN><BR><BR>El dirgiente ind=C3=ADgena, Humberto Cholango, =
manifest=C3=B3 que el=20
deseo y la necesidad que vive su comunidad es restaurar un Estado de =
justicia en=20
Ecuador y decir "basta de injerencia y profundizar este proceso de=20
cambio".<BR><BR>Se=C3=B1al=C3=B3 que para ellos es importante el proceso =
de revoluci=C3=B3n=20
agraria y la institucion del Estado ecuatoriano para la pluralidad=20
nacional.<BR><BR>"Somos consecuentes con los sectores m=C3=A1s pobres =
del pa=C3=ADs, nada=20
nos va a alejar de este proceso de cambio tenemos que encaminarnos para =
que no=20
sigamos siendo agredidos por las potencias extranjeras", enfatiz=C3=B3 =
el l=C3=ADder=20
ind=C3=ADgena.<BR></FONT></SPAN></H1>
<P></P></DIV><!-- The Article Body END --></DIV><!-- =
###################################Columna =
Derecha############################# -->
<DIV class=3Dyui-u>
<H3>Internacionales</H3>
<P><FONT color=3D#cc0000>26/10:24 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66148/"=
>Con=20
total normalidad transcurren elecciones en Ecuador</A></P>
<P><FONT color=3D#cc0000>26/10:15 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66147/"=
>Suspenden=20
actividades tribunalicias y cierran zool=C3=B3gicos en D.F. por gripe =
porcina</A></P>
<P><FONT color=3D#cc0000>25/09:26 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66128/"=
>Nueve=20
pa=C3=ADses se suman a alerta por gripe porcina</A></P>
<P><FONT color=3D#cc0000>25/09:20 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66127/"=
>Ecuador=20
va ma=C3=B1ana domingo a las urnas con Correa como gran favorito</A></P>
<P><FONT color=3D#cc0000>25/09:17 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66126/"=
>Clinton=20
llega en visita sorpresa a Irak para abordar retirada</A></P>
<P><FONT color=3D#cc0000>25/09:13 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66123/"=
>M=C3=A9xico=20
aceptar=C3=A1 ante CIDH "negligencia" en muertas de Ciudad =
Ju=C3=A1rez</A></P>
<P><FONT color=3D#cc0000>25/09:03 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090425/internacionales/66121/"=
>Hace=20
erupci=C3=B3n volc=C3=A1n del sur de Colombia, en frontera con =
Ecuador</A></P><!-- 40 =3D Editorial -->
<H3>Editorial</H3><BR><!-- 40 =3D Editorial -->
<P><A =
href=3D"http://www.diariocolatino.com/es/20090424/editorial/66074/">De =
los=20
incidentes en la V Cumbre de las Am=C3=A9ricas</A><BR>En nuestro =
editorial del lunes=20
pasado anunciamos que posteriormente abordar=C3=ADamos el tema de la V =
Cumbre de las=20
Am=C3=A9ricas, celebrada entre el 17 y 19 del presente mes, en Trinidad =
y Tobago.=20
Sobre todo, de la negativa de los pa=C3=ADses miembros del ALBA a =
suscribir la=20
Declaraci=C3=B3n Final.<A=20
href=3D"http://www.diariocolatino.com/es/20090424/editorial/66074/"><IMG =

src=3D"http://www.diariocolatino.com/look/images/bullet2.gif" =
border=3D0></A></P><!-- 50 =3D Opiniones -->
<H3>Opiniones</H3><BR><!-- 50 =3D Opiniones -->
<P>=C2=BB&nbsp;<FONT color=3D#cc0000>24/09:39 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090424/opiniones/66073/">Confi=
guremos=20
una pol=C3=ADtica cultural en El Salvador</A>&nbsp;&nbsp;<B>Ram=C3=B3n =
D. Rivas</B></P>
<P>=C2=BB&nbsp;<FONT color=3D#cc0000>24/09:39 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090424/opiniones/66072/">La =
Cumbre y la=20
mentira</A>&nbsp;&nbsp;<B>Fidel Castro Ruz</B></P>
<P>=C2=BB&nbsp;<FONT color=3D#cc0000>23/09:30 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090423/opiniones/66033/">Desem=
pleo,=20
violencia, depresi=C3=B3n y suicidio: jinetes apocal=C3=ADpticos de la =
crisis=20
financiera</A>&nbsp;&nbsp;<B>Jos=C3=A9 Guillermo M=C3=A1rtir =
Hidalgo</B></P>
<P>=C2=BB&nbsp;<FONT color=3D#cc0000>23/09:30 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090423/opiniones/66034/">Obama=
 env=C3=ADa=20
una mala se=C3=B1al</A>&nbsp;&nbsp;<B>Victor Hugo Mata Tobar</B></P>
<P>=C2=BB&nbsp;<FONT color=3D#cc0000>23/09:30 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090423/opiniones/66037/">De =
aqu=C3=AD al=20
final de la crisis</A>&nbsp;&nbsp;<B></B></P>
<P>=C2=BB&nbsp;<FONT color=3D#cc0000>23/09:30 | </FONT><A=20
href=3D"http://www.diariocolatino.com/es/20090423/opiniones/66036/">Gran =

expectativa ante llegada del nuevo gobierno</A>&nbsp;&nbsp;<B>Iv=C3=A1n =
C.=20
Montecinos</B></P><BR><BR><!--
							<h3>Publicidad</h3>
						--><!-- publicidad start -->
<DIV align=3Dcenter>
<P>publicidad</P>
<SCRIPT type=3Dtext/javascript><!--
							google_ad_client =3D "pub-2160597601152538";
							google_ad_width =3D 120;
							google_ad_height =3D 600;
							google_ad_format =3D "120x600_as";
							google_ad_type =3D "text_image";
							//2007-07-23: diariocolatino.com
							google_ad_channel =3D "0746588374";
							google_color_border =3D "F2F3F5";
							google_color_bg =3D "F2F3F5";
							google_color_link =3D "CC0000";
							google_color_text =3D "666666";
							google_color_url =3D "555555";
							google_ui_features =3D "rc:10";
							//-->
							</SCRIPT>

<SCRIPT src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"=20
type=3Dtext/javascript>
	</SCRIPT>
</DIV><!-- publicidad end --><BR><BR></DIV></DIV></DIV>
<DIV class=3Dseparador></DIV></DIV><!-- Fin de yui-main --></DIV><!-- =
Fin de yui bd -->
<DIV id=3Dft><BR><BR>
<DIV class=3Dbanner_h>
<DIV align=3Dcenter>
<SCRIPT type=3Dtext/javascript><!--
google_ad_client =3D "pub-2160597601152538";
google_ad_width =3D 728;
google_ad_height =3D 90;
google_ad_format =3D "728x90_as";
google_ad_type =3D "text_image";
//2007-06-21: diariocolatino.com
google_ad_channel =3D "0746588374";
google_color_border =3D "F2F3F5";
google_color_bg =3D "F2F3F5";
google_color_link =3D "CC0000";
google_color_text =3D "666666";
google_color_url =3D "555555";
//-->
</SCRIPT>

<SCRIPT src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"=20
type=3Dtext/javascript>
</SCRIPT>
</DIV></DIV><BR>
<DIV class=3Dfooter><B>=C2=A9 1890-2009 Diario Co Latino | Todos los =
derechos=20
reservados.</B> <BR>Publicaci=C3=B3n de la Sociedad Cooperativa de =
Empleados de=20
Diario Latino de R. L. <BR>23 Avenida Sur No. 225. San Salvador. El =
Salvador=20
C.A. <BR>Tel.: (503) 2222-1009 ; (503) 2271-1303 <BR>Fax: (503) =
2271-0822 <BR>--=20
<BR><IMG =
src=3D"http://www.diariocolatino.com/look/images/info_mail.png">=20
<BR></DIV>
<DIV class=3Dseparador_rojo><BR clear=3Dall></DIV>
<SCRIPT src=3D"http://www.google-analytics.com/urchin.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>
_uacct =3D "UA-1634477-2";
urchinTracker();
</SCRIPT>
</DIV></DIV></BODY></HTML>

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.diariocolatino.com/look/images/logo.png

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
gmuuYh9oS/D1+NfYdF4eROOMEQTZg/mhEMkrrypRACoX/CN97EYWAdMu3djgAw8nNvvHdmAWkqAU
jOe43iZEJKsoR2ZkZ2acHmC6bpESGFQ+6CcNOYiVHkaCfoDtKxbdS0O/OnSV1qsMDapIjPJm+vfl
oilZCAnyee/YNm7RlrkPkxmMmXEV34CiH4ji1RpErYLlmRQ6pKQJScusAAIsarDhjBnVbTKakm1i
RBgDfD5rRnc7fpxfYcyM4QkG7OfO+wp2sAuPEmutHRsk6SRcwOxSKeN5nWLTwRMOMzWMmTE+gY59
ijeQuSi1cysdywlmOoDCYbKGMTMGKWjMcEIrZ2sRhV729XXQwn3ahvn9MdbhchC0R+I0aOfDFM+l
OOsohXMp3NIJPa5KqyyF517wZGooobVWxomfS5EbWYvOl0WB8CZ4xccCXeh2mP65FLppoOuKg5Ko
353nr84ucjvMA10K3ZAlsAqAm3JABIFM6dtCNx2Aeyqt8ogmFc9bQFZcdzAEkDlUzhHl4PTyZpqY
y6AtnQJ3WRYkTZjjiXVtGyUdJr8uhaQGdVqhNx3BBtiPEwGu68wE7X3GDYIMg+6aM2baKSLvz0hf
rhdEE9acwOZ2U7S0jBX2WU1LOgpe+9i1oZ8BDXk0mU0bOnsqnOARcGHqLjsBKvV8hAjQD53gsA33
zoqEfsmGCte7wPLnkJlHb6ZNWF5KQ2BMdA4WdkBQg8oTeRG/e9+eDgBdIULaWsOjqPzufdPFbYqU
O4WBxhp+g/rufR8lWC8lRbBP6RgVFRkOv5nnKw+77U7ObBQ5NAYPPwXKPAivHZuGELV1rraCQJaG
zxuFdi0fJn4vpWjolAcPV0kegM0iBd5vS9FoOrQojo3VjAAbNzu22I1tKdvqGvfT55whPW436vfh
EuF/n/+sIMf+x+03t1/RPx9un9/eraix9u8+f//hj9++++xz/OsX9N3/SX/7kf683h63/7r9/Paf
t69uv6V///Z2v/3b7fXTu8++op/6C/reH27/TV9/2vzuT8jmv9ym23z73e3/3T5LaLXf3f6w/s5f
3v73zW3+TDfX/fb2k39JvznR579bf/v/3L6lr/0t3gz9melpwu1vycqDfl7Rf0n6M9M/f0t//6Cf
czeR/lj6R9HXgr4X0lefmk/9q+aZ/+/tT7ffl1H+2U08+dm/o9H9dxndn91M87N/3fzsuzSH/0Vf
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
KhvuBf98yfWndZLVJ5k4v0LwQCiI5p7locSNCGKj6EpKq2N+xTCdpc95N+YHD/Xvr/+PnOPFj3oL
I7SdOYt7rmsGaEHm17+VWSZZGTdO/9NVNvzu+VMYQP5jRuXBvBmDxEzyUnp9bkAqGCZkXk8/v2KX
nxtGvZk0+bxrQP5+//9PfvKTn/zkJz/5yU9+8pOf/OQnP/nJT37yk5/85Cc/+clPfvKTn/zkJz/5
yU9+8pOf/OQnP/nJT37yk5/85Cc/+clPfvKTn/zkJz/5yU9+8pOf/OQnP/nJT37yk5/85Cc/+clP
fvKTn/zkJz/5yU9+8pOf/OQnP/nJT37yk5/85Cc/+clPfvKTn/zkJz/5yU9+8pOf/OQnP/nJT37y
k5/85Cc/+clPfvKTn/zkJz9Zlv8HTXeqGjfn8JQAAAPPbWtCVPrOyv4EGzUgAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4
nO3Y0ZGjMAyA4S2BEiiBEighJfDkZ0qghJSQElJCSqAESqADLp6xJopOtiHs3c7N/Q/fw+0aIVm2
8d7Xtm1fAPBNmhDC9DQ+/XQu+PuGZ9/Xp47+/5cmev/Pap9965XG6WNnxnhxcj+Xd8j3oU3smMa8
Q3hjbT618V5sGadj2XF6LtrKO0p12jn25vmSno0uKjc9v1ptv+l4YyFnGbslNzOuSWd7/N2ciTHs
+F2TxHyWzNhG5RFzlmcfTr1XlVOf5mxO8WuxL2bMXcXvCvWOhTtOrU49x7r3XRo3qx71qea7edec
nr9W9tps4o3pudzcyPu8/Ia0JrY0xntenvXOgNXJ164xbTOx2vTv1azhyeSk531vbB3LrgdvP5TO
v1qdvYqpeyVrzZ4HrdN/mefSGp8zNd7Mu23/9frU8a/p37n+y/r1zg4956Op+0iPHk58m9Og1svZ
/suZKeMldqn/tTq9/tf2lT2nav2XnFfn90Ol/73a53Judan2Uv+nNEZqs/N/Vb9b1Fwe6dHk1KVz
8vbK2f7r/kT6nuDFrtXp9V/2funMOtL/e8j3qQ/1/rfhfc3LeZbrf6vqXAq56bkprfda/zfnZ0ta
t6WYn/Y/kvM09upS6H+tTq//3nl7pv8P571H+m9jyHty/Z/UnMjaW8wY+a614XW+6DP1SP8X52eS
U+lOdKb/+v67Fvpfq3Pv/o/njF1ze/rfhPI9bW//dZ5ylnv9l7tWr3i9tffloVBDrkdSt+6xzUnu
722hR7n+2xxtbp2qLRe7VueR739uv+X6H3sxmh54+e3pfzSH9++pl88Qfv/We/XENWzvtqV5tPMs
cz+bOLk5Kt0D5IyyZ09p/9t+5vKu1en1Rt/X2x215fo/qZpumRrje7x7oZxXN5VDfFb/H4Q+22Wt
rGnN5c492Q9z2rdDeH0nvL+hm/D+N8g9PSffIfs3s+S0htf/cyyZGvVzMg/y3RpN7EuKY+/eMre5
/pfqbMPrDr2l2PJOObdn9exDza/eo4vaC1KzzLn9Xi4mlxizC/m5+VP0+uidPfIT5C7/yXzk8j9b
Z6P2lj1XP/Xd8QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEL8AGYD8677yJ30AAANxbWtCVPrO
yv4EFETgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAB4nO3Y243aQBQA0C2BEiiBElLClsCXvynBJVACJVACJVACJbgDgqUZ
7d3RHWNQsoqU83G0sT0e34c92Pm43+8fAAD813bDMPxKtOM2nXG98dn5+4ex/N2Wc7bl39mcu2be
NTH0xmyTGLPcl64Rz81izfLYrMhhbf6ZXu2z3HpzHB/H7g/XMm7enkqv2tjvxaGMHcv2Uox1zBjq
cQjXm7c/w9zzvs9yfGrqsCaGdsy+zHVJahpzXzp/Kj7DuGsZcwz7Yh5t77P5s/lOZf/54daMaS0d
b/t66Iyr9buE46ckt1nsUc2lHRMdQk7Zdes8v0JN2lre3oihHbMt29PwfS3Ics/Oz2K5hPs6Po9t
Hpl2/t58t+Q+aa/Vxt7LbXqh/zGPWK8Y9zb87d3nU5JnPF6fx6xuvVquiWGpvvFefLX/UzLf3+x/
ja99BuLz3faol1uvD89qENeNGPexM1+1X1mLXt1qfkvPdi+GrL41zynZt9T/ubb1t2j/w/2P88Xf
rm2Jpa4PvfX1T/Q/xnMP17s96f84vNf/Y8hrn5y7Joal/t+Tfb3cT8PX+9Cpec5+uv9tLvEZm+Nr
3zey/q9ZJ9oYYw9iLJ9P+n8IsffehbI8N6H/2W/bmhiW+n9L9j1b/7M6v9r/WIN3+l97tyn3Ys0/
61OW29r3hKwfvbjrmpQ9p9swx9I7bFa3Xdgeh+XeZDEs1Tf+nqztf/Ycvtr/bB1d+/sfv0/qd091
Su7rLLfe92RWg3Pnnsri3iU9auc+J8fj3Fnd4nodY18TQ3aP1Dpukms8638d9+7zv2l6uKb/dR1s
v4HbWsfnLFvves99rcs55DaW7XMz1xxLXGvOZWy993rflvV+ncKc8zzxvW07fH3D17Wi1rh+E19L
DZ7FkMV5LDUYm97H3Ot7RHb+KcQfv1duYcy8v83jWLbHMvaSzD8OX98wdb5r2X8Zvr9z1HX/Ony/
H+I9dy3js74urb8/YTes/38tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAODf9Bs7iszNywZ8MwAAAPZta0JU+s7K/gQWajAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHic
7dixDcMgFEVRRsgIGcWjpKLOCBnBI3gEj5YNCEhBcu2G4p3i9Ej3I9AvrbUCAECMrda6+gyss/f+
3+5jDmIdvX3rdjMQafv3H55mINLs/9Y/0uzvH5Bp9n/pH+f6/j/0j3O6+7FG+8EeCAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAO35eeCl8+hVK
aAAADtdta0JU+s7K/gQbICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHic7Z2NkRwpDIUdiBNxIA7EiTgQB+JEHMhe6eo+
17tnSUDPz/5Yr2pqZ7tpEBII0IOel5fBYDAYDAaDwWAwGAwGg8HgP/z69evl58+ff3ziOveq5+Jz
pawAZfj3wf9R6fmK/jN8//795dOnT3984jr3Mnz58uXfzy6+ffv2O++wN2UE9PtHRtT7tJ6Vnk/1
vwI20f6u9l/1Ufp2laaT1+3f+Z1dVPKs5ARdGr1epcuuZ+28ez5wauereuvsH+Vr33W5tG97HpoP
eQWq/q95ZfWO+58/f/73e+gt0v348eP3vXiGuqgvC0Q6vR7pM0T+nibyiLy5F2WrXkgX1/V56qBp
Iy9PRx30evyNz6r/x9+vX7/+fu4KOvtzTWXR8iNNlM8zWZ8jPfcy+7sMUZ7bCJvH39CZponvjFtc
cz1FGp3zOLR9RT6kRxfIqelU7vigC9qyyh3XVB+qZy2f8X3X/vrMFaz8f1Zm1v/pf528gcz+6m+o
U1Z37Bx6Vn3RLuKDL9A+qH6BPFZydrpAPsohP/cVVZ39+ZDPy98Z/+8xF7jF/ug8+iP17uSl/pX9
fR3iwLbYPf5GWyB//vd+hqz0UdqLQvOhTpku8LcuK+2RuV5lf2TU5738TG8rW1zFLfanHWu77+QN
ZPZXf4fvzfoofd39j+o27nHd/SS+I7M/etA2lulC06nNaRfI7/bHP/JM/OUZzTeuIeMz7E9fUX3Q
nwF19e/qbxnfHJoemelb+j2epQ90a6XIi/v4TcD/kcbvISd9LwP1xodkutByMvnJX8dD+of/77Ko
/DqXqfTpuh0MBoPBYDAYDDo495fdf83yb8E9uIQrOC3zNH3F257CY+XEpVjPZHGBe2JV/urZFZ/W
cZiPwqnOrui44m3vIavGtqtnKs6q8h9VXHq3/Fv5tEdB5dY9E16nK3J18fx7tetMVuXV/P4J51Wl
Pyn/Vj6t0pPzhs4p+h4F53iQhXycA1nprNKBxhW7Zx5pf/TjnFzFeWncXmPmVfrT8m/h0yo9EaML
wLPC8yHzyv7E7VQWlbPTWaUDtT9yZvJn/v/KHpoT+1ecl3PWyr1WHNlu+dT1Kp9W2R/uWPkj5RQ9
/8xGyNz9f6oDz6uSf5crW6Eaq+BG9H7FeQVIq1xMl363/Fv5tM5P0oejjGgP9DWe3bW/jhme9lQH
p/a/Fepv4BqUd698U2YXrvvcwdOflH8rn9bpKbO3zjsZF7TszEYB5RaztDs6eA3769jJx/fiKS+I
T1POC3my61X6k/Jv4dMy3s5lA8opVmUzJ3eulOeRZ0dnmY4970r+rl6DwWAwGAwGg8EKxL6I+ZyC
dSBrmFUsqksTc9sd/uce2JE1gG4eWeauLPcG52JYd3sMfwXiH6y/d9Ym3fr1mfsZM65R15SB+E6s
8FFldtcfCY9dB6ivxre69q9nY0iv+sue5xnuab2d94p77pf0zEGmM57p9El/8ziGx2iz8nfyymTM
0nXXd8vI9LiDVRxJ9+RX53GUg/A4re7V1+dJoz4HnSuXo/FA5eyUD3CZ9BxRxZ/h88hHY/5al6r8
nfJcxqrM6vqOvMQbVcYTrOzfnbcEXczS+S/4Ou3/6MrPM2TnO8mrOmdCOchSnY3I9O98R1d+lZfu
13cZqzKr6zvyZno8QcePkd+KZ+zsX+l/52wR+fqnyxd50P2Oz9L+nsXis/I9r52zhFWZ1fUdeTM9
niAb/5Vb9DZf7fu52v8zXVX9X8vu7O8c9Kr/a95d/6/mf13/17KrMqvrO/Leav+Aji0+huGfdHzp
+CuXaTX+q9xu/4Ce4avOn2e6Ws1ZfDz1MU55xax8RTf+a/qqzOr6jrz3sD/1rtb/ei9rm9zXPuQ8
ms//PY3OkX1On83luxiBzoX5ngEZ/D7ldeVXea1krMqsrq/SZHocDAaDwWAwGAwq6NxcP1c4wEej
ksvXHx8Bz+ICWbv7HszVOoL90s9EFWer9mO+ZzyLC8z2MiuyuIDu2dX9/yfrV7UVsTa9nnFu2J97
ngdy6HXnIne4PNJUa/TOLpke9FygcqSVvm7lG0/g++/VPlXsj5gTfmOHI1Q/o/Erruueefbve7xR
+cIsjyxenXFGHS9Yxft2OLou1qlnE+HXM33tyLjiAk9Q+X/sjwx+biXjaFUH3kc0Dqfn+Chf+4Vz
bnxXfVRnJnheY+v0kyxG7f2Ftsf5FbDD0a24DvKr9LUr44oLPMHK/yMrfS/jVXc4Qs5SaF/Pyu/k
0Xy7MzMhD22Wclw3VTmMberfKHvF0Z1wnZm+dmXc5QJ30Olb+6z6eK/rDkeo77XM+r+O313/37E/
Zzv1LOdu39K9A9pvdzi6Xa6z0teV/q/P32J/9//I7uM/+sdPVum8Pfm4Wtlf887G/x37oyO/dmX8
P+HodrnOTl9Xxv+ds44VqvW/ct5ZTIDr2m87jhD5sJ/OMbNnsjlwVl6VR7V+PplbX+HodrhOT7dT
9x0ZnxUzGAwGg8FgMBi8f8Dn6NrvUbiSt75b4x7vvtfYwAl2ZX9PXBRrXjgA1pSPqAN2PAHrWmJ6
uq+y2wdcAY7hFBpP7HCljq8FYha+biR+FvB9rL4Ox2/oepUzGPHRmA1tS+ML6KvjdlXGzv5dXrtp
tE66D97luFcdQfa7I7T3eI7rlKvpApHmat/KdMT17BwLcQuNszoHo7/PRT3QDXol1oXfcfkpQ2Px
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
GKSLdBCuTnXf6tOpHX4CooX3kSJCfhzHx3aCzfEoSZIkSZL03+fn5/Hj42O61P6/IO/jnmnfI/1H
qvvZbDbT5XA4HN/e3r7Wf/O9cx+V11uq2G+32+/yuHX6j5bx3+12P5ZSn3Xfrxh/6v4rxH9mv99/
1QGeBdSN+l77qBd8r331yfG1n22zNOszj5ml1c+tdfKQ8SG9Wsgf+RilOVLHVZrV/ll/5vjXveVC
LHr/z/H0i8Qi+8l8ftQ+ji9859xS16rv9VnnzJ5FmR+uR9+U65m3TD+XOmZWB7Jc6rqvEP++UHaz
+L+/v3+/I1I+nNPbY6aRsaBOsL/SYp36x/E9rfqs2PBeRno99nlOpkl96rIu5zPw2eM/M4t/tp3+
nMylEMMqx6o32aeSh9qe6afcxrUyfqN6nO279lf6xLDWZ88AjiOPvP/ktmexJv6JMuN5SzvPdwPK
njLMdp1tk7aX7wajviLfR7P9Zx+Sscq8ZH5n97u0PItbxZ9YEttsaz2d/l7Q+5Psa7PtzZ5HeR9c
r9eH7M8zTfqcXiZ9yTz95t9Bl7pV/EuVUb4DVtn29/Yea+pJxoH3CdKiTnHOOfHP4+iTuBZp9vwt
edbnvyRJkl7TveZ5M92/Mpf82+Q4yD3KsH4bzX7X9N9Tl1p7vo7fYw41ZjIbs14j49/HNvJ3/ug3
/9JYCOMmff0RMp+jdsR/PGbbl9IbfZ9da5bWqF1z7GzMaZbnSzFflnN/XJcxj1ynvnBOjrNnHcm5
V9YZw2Vb9gnM3azZ38s685njibWN8WbGmvq4Uu3v91jbMq0su/rMmLFwrfyOfkxhvJLtpMtc91Ke
r9HjkvVt1P4Za6OsmY/vRn1/HZfzuLXQRhjnW7P/1H1Rftnn9f825DwEmMuozxyrzLLKNPu1RuXb
/xPBMaPto/iP8nyN/vw/J/55/Oz9IcuJdeZm+CSe+Z+MNfvPva/+zMs5AWI9uqeMQS+f/D67Vu4b
zTOxPdsz3/Paozxf6xbx7/MoFRPylOuFvo7+k76M+rx2/zn3xT76Df5HQBlTv8Cztse/9zk5R3kq
/vx/Iq9R+vYe/1mer3Uq/vlspxx6O8l7Lb1/ytgQL47lOXar/afKPfdRlrxf53OYPpxjKecsa+Y6
iWfOUZ7KB/+tJYbUnSxT5sxG8R/l+Zp3Qebb8p4ydrTtvFfKY9RXcWym16/X49nbwZr97Fu6r9zH
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
BPow/g9SGDukm3L3VQAAAABJRU5ErkJggg==

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://l.yimg.com/a/i/us/we/52/28.gif

R0lGODlhNAA0APf/AP/////+8+ns9Ix0MPvJM93d3c++VNrDVKurwtPUyry9vfzoef771crN2+zq
zO3t7dPV5OLi4tOMGvr6+Zubs/L0+4iHoujcjrKzxdTU05d4TY6QW///lsPExZOTk+fm08LE1N7h
6r7B0vz2qOHk7ri3o6xvFX9mMGZna7q8zfy9Ju7x+K2tqrS1s1VVV3x5aoWFlaqqmp+htcvMzPWb
G///sKOku/vphJKSrNrd5by90fT3/Pn7/f//hdXTp4yMjfz2tvf5/fykG9jWhXl5if/+dv/8zLa2
kHR0dPzXVJucmp+ft6mpv8fK3M3R3Pb29uPm8Y2ITP/+6p6bd8rJufrnZ9ve63h1WISEg8+eJru2
g+61O/39febp8rO1yfPIRqKjo/Hx8aikV3NNFKqHKpWBO5eWjqOijNnZbdba5KSWTOrkmunNWaCX
Xernq+yiJI6KdbmrSdbZ29fVlcjIbf3+aevrev/XQnx8fv33xPXxxP/94P//+eXXYvr8/uvXdL++
tLe5y+zu+PStI9PUdPnslr2MJv39/ebq7UZGRvDcdWlmUZyak86rM7i0aP3+/8TG2cO7iZ2cqrO1
vcXI1a+wxf//vqiheNfa6r2+dWttd+3VW///is/S4snM0vLy6f/xj4WAbJ2cuJSWZcbHydzczoeJ
jcvO4MfJmHNqS9TTvtLV35dwIJeYnufoZcvLxri5uf7+/n5+QFA8Fa+vsumrN/X05PjaYfHz96Wm
qfH09paWsPz9/+zsscnIqKOktM/RYnBwcoeGiJGRpaipq6+yu6amwpmYs/T08tPW6PT1ifGtMbe2
zTk5N1ZFFlRPNmtlPHpsUF9fYJJaFbx+In5/gLuAFLWQN+a4MvS8PruuVK6zWsOyUJKCaZCRdaWg
YbClb8GcQN62Q8e8eL/Cff/iW9vHYMfHc/v2c/X1e/b6foCAhpCPjpiXl5GUm6GUiI6NpJ2doKeo
ur/ClsLEgebmiPLrsb+/v+Hh1vHv3dLP4ujo6Pn46OPn+Pj48////yH/C0FET0JFOklSMS4wAt7t
ACH5BAEAAP8ALAAAAAA0ADQAAAj/AP8JHEiwoMGBvHgdXMiwocOCsXjFekixYsMIBRRa3MjxnocH
HENWBISlgMiTDGOVMjMD5cmJCP99wleihUaCMF0yLHDvCS8+AQI40OPDjJQAfBQG6BBhYU6HTwtm
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

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.diariocolatino.com/look/images/ico_version_pdf.gif

R0lGODlhIwAMAOYAANUIA/RvisNEV9caOP7Fus0hL/U9We6slMVWUuIJHNBvafp+dv/a4fcDKf8A
APQnNvu9wPxzYftLPP6Tie4CEM4bId1QYe9qa/9mZuwLK/8zM+NBP/NMQ/zX0fSuuPs5UegBE/wb
I+KImPMcB/xiWtkjMPmXpttnWvkqMP/u4u1OYP1mSdsECfhvf8heYPcbA/+Gg+0vO/AaGO9refQR
GNxcUfqFjvmpov1ugP/MzPc9QPkjLfU1NPaRn/q5tesQCv5VbP5RSv3m1PkEFt1BT/Zpet91eek3
NfpcUediW+UaHvrw7vpGL9J0dPaJdcdRZ8AVDf9mZvsZJ/gCD/y/zv7m5P6ppt9cauZqcvxBUvEf
LPJ2bPGGlv+ZmegSCvIYDvIeN/vKxe5ISP6FlPYRFOoqKfypm/+prO0IC/IDFt8RBPcwQ/5tdPLa
2Og0Uf2MhPV2i/1YVMxmZu40Qv+5rfxxbP9TVf9jbv5CQfFzfuFtbepjZ/a6oshTXPYHAv///yH5
BAUUAH8ALAAAAAAjAAwAAAf/gEseJh43JocmPVxwjAEzeZBFki0teY95W1szMwEiSyKDJjY4QKVZ
WR9rqQ8PO647UrGxNLQ0Q0MZBX1cPiZdMAt1JEgTdHQTHBxmPmcLYmVdVlY3On4vL37ZNAUIXFYT
b28RK0hIYVVhKXxbKQxUSz5EHVVUZ2t+I/kjPz8lfTa/YLCJEyRIFggM+oTp8CYFlxh0UuzJ0WED
mFq0vqChMOAJnDE47tyxYyeLASpVRDCAkCeFDQpOhGwhIOSAkxBTaN2iwPFJHhjC4gg9FWYJvT0X
Uoxp0PACBCFhzMjISSNNGgogOuZZMC6IBDxr1hCocuGDFgxLuLiBUEUFFSpzlcCQ+UKXwg81LAq4
2DJuhQQmTFzRPBKLxJI2RW9syJEjQwYa+36g8aIGQAUXdTAUxKNBQwgUE8xoiBXkDAQ6C3iUmQAj
I5rXaFioUVOhj4osOnSsQcH7wZEjYMA80MKqjIzjSpTQ+OLFi5IECQBAgVJBQBUsWPRgN9KEuxwL
FlyId3GihnkLV67USLKhAJErCuIbqRIIADs=

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.diariocolatino.com/look/images/ico-rss.gif

R0lGODlhIAAMAPcAANVRI+2aavGaE/GgOfbk3+iIFPznuvetG/3edPvHS+qHEuiPLvvGCPm6QONz
HPrVafrbpumLJ++cLOZ5MPe1QuWSY/7XIuiIIP7aTffTnuKITveuK++aHt9qIvXAWOZmLP3ijel5
KP703vS+b//xw/jMjfSMJ/GaQvK0XP/vm/m8D+t8G/OMI+2MFvacKv/nYP/MAOd1KPabE//67Pzk
rfKiIPrpz//MZve8T9taK//ug+yRP/anK/KwTfK2aPeMGfKrOP7QD+V/Hvry8P7lkeyOVvi0IuiR
H+NvI/m2KvzYWu+MKfeoEOuUL/aVKO+FIt9lKf7QB/iuIuZzL+eGJ//2vvvLKPvNc/nJcfrJXfSW
IPKXC/3uyvKnKfSkTNZRJ/vcm++VF/7mef7bUvK1YPemIPaeIfeaMfjGSv724/SoO//ui+d0H+Bt
KPelMv//8PKWKPvDEeeVTuNrKvvUiP/zpfWvP/erN+98L++cGPamG++PIPOqNO51LvrAH+x8I+yZ
NOaGJO+WI+6CJ+eDGfe3Sv/cIP+MIf/YA/SSGvizNPjFY+t2Ff+MKfjEVf/XBfzbkvSdFfbEef7w
vv/4wvSWL/zYdf3v195SIfGkOe6OE/7ge//Wa/a/X+t7KO+cSv/xX/zlsu6UUe+UEP7pnf/nVfWx
ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHADMALAAAAAAgAAwA
AAj/AGcQ0BBigsGDCBMqRIinwhACOwQJChOmhkWLUjIe2GgkiUcjGzfqyUPShZwiiXzYyICCA4eL
GHEsWtTggBEjjrDgKCNAzQgUEo7A6dOCDJc0b0LZEXBRzwYRM9LMuMKEzoxLl7r0SHNpho8CEaYI
kkC2U5UqhSKVWbuBBBY9kCa1xbIFSBgwNBQAanIhrCZJMyBkggMihZtEZszwIJVFjyUiZUCA4KNJ
06I6PQgRChRoyp5PJSZR8sJCzA0WqF0gQCBm0x0BPB7ocLRnjwcdDxYIoTJlECNGSyytqaSolBsn
TlyMadAAA4snT1YMeAGEjYMFStB0aDNlxQkDphJhhGigxZAR5C4sSGFhwc+fPX/YWOiCBAkmKVa+
5OjzRA2oBE/EEYQTMMRRSSUuRHHAIJEgkocKUUTBABJ5PMJAFIToF8AhT8iQCAtm6OHEWi6UaIYW
0NX23h5IQNGBEEJ08MUXHwwhSiMmIKejE2f06IQJQA7iiScxzGHkHFDkoGQOH1QQEAA7

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.diariocolatino.com/look/images/ico_send.gif

R0lGODlhFwATAMQAAExNTZ6+8oyn1fD0+nt7e6krK9fj98zMzJe04a2ur5mZmf///6zJ9uzx+/j6
+9vn/9nZ2fX3+dzn+P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUU
ABMALAAAAAAXABMAAAWI4CSOZGmeaKquI0S8MCDPM2S+zMPk/KPrBMDtAUAYj0gEgOgoEXRFBkJK
VeYATdJzwYhOvwDGgunUcb3SMJesfXDPYLH4EanbI0v5WSZ3SAYRBXd4bgwEenIHdwWCdksyAQuR
kwsGgYyYjgQCAg+dn54Ni411EDSnCgoJCRAQgYMssbKztLUlIQA7

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.diariocolatino.com/look/images/ico_print.gif

R0lGODlhFwATALMAAExMTNvb24GJynD/THBwcJS3/////7e3t5mZmdvn/5mr0f///wAAAAAAAAAA
AAAAACH5BAUUAAsALAAAAAAXABMAAAR0cEmEiL1W6q2R+SAoEFzpHWiKGmO5eWHcuhJhBEeg599M
27GQzwUw5FK4AAtAkxSDIiYN8YQuSaVCgkLBXACE4USbKJvP5YL01fV+AXDsC00fmNcaQkLLL/j/
BQoKeB1tXnCIhDWAjH6CinlviYhNlZaXlxEAOw==

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.diariocolatino.com/look/images/bullet2.gif

R0lGODlhDAAJAJEAAKIAGvv7+////wAAACH5BAAAAAAALAAAAAAMAAkAAAIYlI8Zy6wrHAKQhgSo
yHfm/XkXh1UQ4jAFADs=

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.diariocolatino.com/look/images/info_mail.png

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
6y8AAAAASUVORK5CYII=

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/look/yui/reset-fonts-grids/reset-fonts-grids.css

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
}
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
}
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
}
OL {
	LIST-STYLE-TYPE: none
}
UL {
	LIST-STYLE-TYPE: none
}
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
}
ACRONYM {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
BODY {
	FONT: small arial,helvetica,clean,sans-serif
}
TABLE {
=09
}
SELECT {
	FONT: 99% arial,helvetica,clean,sans-serif
}
INPUT {
	FONT: 99% arial,helvetica,clean,sans-serif
}
TEXTAREA {
	FONT: 99% arial,helvetica,clean,sans-serif
}
PRE {
	FONT: 100% monospace
}
CODE {
	FONT: 100% monospace
}
BODY * {
	LINE-HEIGHT: 1.22em
}
BODY {
	TEXT-ALIGN: center
}
#ft {
	CLEAR: both
}
#doc {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
#doc2 {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
#doc3 {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
.yui-t1 {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
.yui-t2 {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
.yui-t3 {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
.yui-t4 {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
.yui-t5 {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
.yui-t6 {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
.yui-t7 {
	MIN-WIDTH: 750px; MARGIN: auto; WIDTH: 56.3em; TEXT-ALIGN: left
}
#doc2 {
	MIN-WIDTH: 950px; WIDTH: 71.31em
}
#doc3 {
	MARGIN: auto 10px; WIDTH: auto
}
.yui-b {
	POSITION: relative
}
.yui-b {
	_position: static
}
#yui-main .yui-b {
	POSITION: static
}
#yui-main {
	WIDTH: 100%
}
.yui-t1 #yui-main {
	FLOAT: right; MARGIN-LEFT: -25em
}
.yui-t2 #yui-main {
	FLOAT: right; MARGIN-LEFT: -25em
}
.yui-t3 #yui-main {
	FLOAT: right; MARGIN-LEFT: -25em
}
.yui-t4 #yui-main {
	FLOAT: left; MARGIN-RIGHT: -25em
}
.yui-t5 #yui-main {
	FLOAT: left; MARGIN-RIGHT: -25em
}
.yui-t6 #yui-main {
	FLOAT: left; MARGIN-RIGHT: -25em
}
.yui-t1 .yui-b {
	FLOAT: left; WIDTH: 12.01em
}
.yui-t1 #yui-main .yui-b {
	MARGIN-LEFT: 13.01em
}
.yui-t2 .yui-b {
	FLOAT: left; WIDTH: 13.51em
}
.yui-t2 #yui-main .yui-b {
	MARGIN-LEFT: 14.51em
}
.yui-t3 .yui-b {
	FLOAT: left; WIDTH: 22.52em
}
.yui-t3 #yui-main .yui-b {
	MARGIN-LEFT: 23.52em
}
.yui-t4 .yui-b {
	FLOAT: right; WIDTH: 13.51em
}
.yui-t4 #yui-main .yui-b {
	MARGIN-RIGHT: 14.51em
}
.yui-t5 .yui-b {
	FLOAT: right; WIDTH: 18.01em
}
.yui-t5 #yui-main .yui-b {
	MARGIN-RIGHT: 19.01em
}
.yui-t6 .yui-b {
	FLOAT: right; WIDTH: 22.52em
}
.yui-t6 #yui-main .yui-b {
	MARGIN-RIGHT: 23.52em
}
.yui-t7 #yui-main .yui-b {
	DISPLAY: block; MARGIN: 0px 0px 1em
}
#yui-main .yui-b {
	FLOAT: none; WIDTH: auto
}
.yui-g .yui-u {
	DISPLAY: inline; FLOAT: right
}
.yui-g .yui-g {
	DISPLAY: inline; FLOAT: right
}
.yui-gc .yui-u {
	DISPLAY: inline; FLOAT: right
}
.yui-gc .yui-g .yui-u {
	DISPLAY: inline; FLOAT: right
}
.yui-ge .yui-u {
	DISPLAY: inline; FLOAT: right
}
.yui-gf .yui-u {
	DISPLAY: inline; FLOAT: right
}
.yui-g DIV.first {
	FLOAT: left
}
.yui-gc DIV.first {
	FLOAT: left
}
.yui-gc DIV.first DIV.first {
	FLOAT: left
}
.yui-gd DIV.first {
	FLOAT: left
}
.yui-ge DIV.first {
	FLOAT: left
}
.yui-gf DIV.first {
	FLOAT: left
}
.yui-g .yui-u {
	WIDTH: 49.1%
}
.yui-g .yui-g {
	WIDTH: 49.1%
}
.yui-g .yui-g .yui-u {
	WIDTH: 48.1%
}
.yui-gc .yui-g .yui-u {
	WIDTH: 48.1%
}
.yui-gb .yui-u {
	FLOAT: left; MARGIN-LEFT: 1.89%; WIDTH: 32%
}
.yui-gc .yui-u {
	FLOAT: left; MARGIN-LEFT: 1.89%; WIDTH: 32%
}
.yui-gd .yui-u {
	FLOAT: left; MARGIN-LEFT: 1.89%; WIDTH: 32%
}
.yui-gb DIV.first {
	MARGIN-LEFT: 0px
}
.yui-gc DIV.first {
	MARGIN-LEFT: 0px
}
.yui-gd DIV.first {
	MARGIN-LEFT: 0px
}
.yui-gc DIV.first {
	WIDTH: 66%
}
.yui-gd .yui-u {
	WIDTH: 66%
}
.yui-gd DIV.first {
	WIDTH: 32%
}
.yui-ge .yui-u {
	WIDTH: 24%
}
.yui-ge DIV.first {
	WIDTH: 74.2%
}
.yui-gf .yui-u {
	WIDTH: 74.2%
}
.yui-gf DIV.first {
	WIDTH: 24%
}
.yui-ge DIV.first {
	WIDTH: 74.2%
}
#bd:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
.yui-g:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
.yui-gb:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
.yui-gc:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
.yui-gd:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
.yui-ge:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
.yui-gf:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
#bd {
	ZOOM: 1
}
.yui-g {
	ZOOM: 1
}
.yui-gb {
	ZOOM: 1
}
.yui-gc {
	ZOOM: 1
}
.yui-gd {
	ZOOM: 1
}
.yui-ge {
	ZOOM: 1
}
.yui-gf {
	ZOOM: 1
}

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/look/style.css

BODY {
	BACKGROUND: url(images/page_shadow.png) repeat-y center 50%; FONT: 100% =
"Lucida Grande", verdana, arial, helvetica, sans-serif; COLOR: #222222
}
IMG.pic {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid
}
.banner_h {
	BACKGROUND: url(images/publi_top.gif) #f2f3f5 no-repeat left center
}
.top_flash {
	MARGIN-LEFT: 13px; PADDING-TOP: 5px; HEIGHT: 100px; TEXT-ALIGN: center
}
.header {
	PADDING-TOP: 15px; HEIGHT: 70px; TEXT-ALIGN: left
}
.header_timedate {
	PADDING-RIGHT: 20px; MARGIN-TOP: -55px; FLOAT: right; FONT: 77% =
Palatino, "Times New Roman", Times, serif; COLOR: #000000; TEXT-ALIGN: =
right
}
#nav {
	PADDING-LEFT: 10px; FONT-WEIGHT: bold; BACKGROUND-IMAGE: =
url(images/bg_header_px.png); COLOR: #ffffff; PADDING-TOP: 7px; =
BACKGROUND-REPEAT: repeat-x; HEIGHT: 20px; BACKGROUND-COLOR: #cc0000; =
TEXT-ALIGN: left
}
#nav A {
	FONT-WEIGHT: bold; FONT-SIZE: 100%; COLOR: #ffffff; TEXT-DECORATION: =
none
}
A:link A:visited {
	FONT-WEIGHT: bold; FONT-SIZE: 100%; COLOR: #ffffff; TEXT-DECORATION: =
none
}
#nav A:hover {
	COLOR: #ffffff; TEXT-DECORATION: underline
}
#nav2 {
	BORDER-TOP: #999999 1px solid; FONT-WEIGHT: bold; COLOR: #666666; =
BORDER-BOTTOM: #999999 1px solid
}
#nav2 TD {
	COLOR: #666666
}
#nav2 A {
	FONT-WEIGHT: normal; COLOR: #666666; TEXT-DECORATION: none
}
A:link A:visited {
	FONT-WEIGHT: normal; COLOR: #666666; TEXT-DECORATION: none
}
#nav2 A:hover {
	FONT-WEIGHT: normal; COLOR: #666666; TEXT-DECORATION: underline
}
.img-main {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; MARGIN: =
4px; BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid
}
#midcol {
	BORDER-TOP: #cccccc 1px dashed; BACKGROUND-IMAGE: =
url(images/bg_sidebar.gif); BORDER-BOTTOM: #cccccc 1px dashed; =
BACKGROUND-REPEAT: repeat-y
}
.footer {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; FONT-SIZE: 12px; =
BACKGROUND-IMAGE: url(images/red_dots_underline.png); PADDING-BOTTOM: =
15px; COLOR: #3c3c3c; PADDING-TOP: 15px; BACKGROUND-REPEAT: repeat-x; =
BACKGROUND-COLOR: #eeeeee
}
.separador {
	BORDER-TOP: #cccccc 1px solid; MARGIN: 5px
}
.separador_ltl {
	MARGIN: 5px; BORDER-BOTTOM: #cccccc 1px dashed
}
.separador_rojo {
	MARGIN-TOP: 0px; BACKGROUND-IMAGE: url(images/red_dots_underline.png); =
BACKGROUND-REPEAT: repeat-x
}
H1 {
	MARGIN: 1em; FONT: bold 200% Palatino, "Times New Roman", Times, serif; =
COLOR: #006699
}
H2 {
	MARGIN-TOP: 3px; MARGIN-BOTTOM: 0px; FONT: 150% Palatino, "Times New =
Roman", Times, serif; COLOR: #006699
}
H3 {
	BACKGROUND-POSITION: 0px 16px; MARGIN-TOP: 1em; FONT-WEIGHT: bold; =
BACKGROUND-IMAGE: url(images/red_dots_underline.png); TEXT-TRANSFORM: =
uppercase; COLOR: #000000; BACKGROUND-REPEAT: repeat-x
}
H4 {
	FONT-WEIGHT: bold
}
P {
	PADDING-BOTTOM: 1em
}
B {
	FONT-SIZE: 85%
}
.mid {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; PADDING-BOTTOM: 0px; =
PADDING-TOP: 1em
}
A {
	FONT-WEIGHT: bold; FONT-SIZE: 85%; COLOR: #496e92; TEXT-DECORATION: =
none
}
A:link A:visited {
	FONT-WEIGHT: bold; FONT-SIZE: 85%; COLOR: #496e92; TEXT-DECORATION: =
none
}
A:hover {
	COLOR: #db071e; TEXT-DECORATION: underline
}
UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LIST-STYLE-IMAGE: =
url(images/bullet2.gif); PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 2em; =
LINE-HEIGHT: 1.5em; PADDING-TOP: 0px
}
.archivo_left_column {
	PADDING-RIGHT: 20px; FLOAT: left; WIDTH: 525px; COLOR: #3c3c3c
}
.archivo_right_column {
	PADDING-LEFT: 14px; FLOAT: left; WIDTH: 350px; COLOR: #3c3c3c; =
PADDING-TOP: 14px
}
.archivo_left_column UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LIST-STYLE-IMAGE: =
url(images/bullet2.gif); PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 15px; =
LINE-HEIGHT: 1.5em; PADDING-TOP: 10px
}
.archivo_left_column LI {
	PADDING-BOTTOM: 10px
}
.archivo_left_column H3 {
	PADDING-RIGHT: 20px; MARGIN-TOP: 20px; PADDING-LEFT: 20px; FONT-SIZE: =
13px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px
}
#readmore {
	COLOR: #db071e
}
UL.blue {
	FONT-SIZE: 12px; LIST-STYLE-IMAGE: url(images/bullet2.gif); =
LIST-STYLE-TYPE: disc
}
#wrapper {
	MARGIN-LEFT: 25px; TEXT-ALIGN: center
}
.col {
	FLOAT: left; MARGIN: 0px 15px; WIDTH: 325px; TEXT-ALIGN: left
}
.col UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LIST-STYLE-IMAGE: =
url(images/bullet2.gif); PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 15px; =
LINE-HEIGHT: 1.5em; PADDING-TOP: 0px
}
.col LI {
	PADDING-BOTTOM: 10px
}
.col H3 {
	PADDING-RIGHT: 10px; MARGIN-TOP: 20px; PADDING-LEFT: 10px; FONT-SIZE: =
13px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px
}
.colbig {
	FLOAT: left; MARGIN: 0px 15px; WIDTH: 550px; TEXT-ALIGN: left
}
.colbig UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LIST-STYLE-IMAGE: =
url(images/bullet2.gif); PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 15px; =
LINE-HEIGHT: 1.5em; PADDING-TOP: 10px
}
.colbig LI {
	PADDING-BOTTOM: 10px
}
.colbig H3 {
	PADDING-RIGHT: 20px; MARGIN-TOP: 20px; PADDING-LEFT: 20px; FONT-SIZE: =
13px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px
}
.colfull {
	FLOAT: left; WIDTH: 950px; TEXT-ALIGN: left
}
.colfull UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LIST-STYLE-IMAGE: =
url(images/bullet2.gif); PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 15px; =
LINE-HEIGHT: 1.5em; PADDING-TOP: 10px
}
.colfull LI {
	PADDING-BOTTOM: 10px
}
.colfull H3 {
	PADDING-RIGHT: 20px; MARGIN-TOP: 3px; PADDING-LEFT: 20px; FONT-SIZE: =
13px; PADDING-BOTTOM: 3px; PADDING-TOP: 3px
}
#section H3 {
	COLOR: #ffffff; BACKGROUND-COLOR: #cc0000
}
#cajaSuplementos {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
2px; WIDTH: 100%; PADDING-TOP: 0px; TEXT-ALIGN: center
}
#cajaSuplementosf1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px =
0px; WIDTH: 100%; PADDING-TOP: 0px
}
#cajaSuplementosf1izq {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
0px; MARGIN: 2px 0px; WIDTH: 23%; PADDING-TOP: 0px; TEXT-ALIGN: center
}
#cajaSuplementosf1der {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FLOAT: right; PADDING-BOTTOM: =
5px; MARGIN: 2px 0px; WIDTH: 74%; PADDING-TOP: 5px; TEXT-ALIGN: left
}
#supTitular {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; WIDTH: 100%; PADDING-TOP: 0px; BORDER-BOTTOM: #cccccc 1px solid
}
.supTitularBajada {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-WEIGHT: =
normal; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 99%; =
COLOR: #000000; PADDING-TOP: 0px; FONT-FAMILY: Arial, Tahoma, =
Helvetica,Verdana; TEXT-ALIGN: left
}
#supTitularIzq {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FLOAT: left; PADDING-BOTTOM: =
2px; MARGIN: 0px; WIDTH: 49%; PADDING-TOP: 2px; TEXT-ALIGN: left
}
#supTitularDer {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FLOAT: right; PADDING-BOTTOM: =
2px; MARGIN: 0px; WIDTH: 49%; PADDING-TOP: 2px; TEXT-ALIGN: left
}
#cajaSuplementos H1 {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 22px; PADDING-BOTTOM: =
2px; MARGIN: 0px; COLOR: #000000; PADDING-TOP: 2px; FONT-FAMILY: =
Georgia, Arial, Helvetica,Verdana
}
#cajaSuplementos H3 {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-WEIGHT: normal; FONT-SIZE: =
14px; BACKGROUND-IMAGE: none; PADDING-BOTTOM: 4px; MARGIN: 0px; =
TEXT-TRANSFORM: none; COLOR: #000000; PADDING-TOP: 4px; FONT-FAMILY: =
Georgia, Arial, Helvetica,Verdana
}
#cajaSuplementos H5 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: =
20px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #666666; PADDING-TOP: =
0px; FONT-FAMILY: Georgia, Arial, Helvetica,Verdana
}
#cajaSuplementos P {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: normal; FONT-SIZE: =
12px; PADDING-BOTTOM: 2px; MARGIN: 0px; PADDING-TOP: 2px; FONT-FAMILY: =
Arial, Helvetica,Verdana
}
#cajaSuplementos UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 0px 30px; PADDING-TOP: 0px
}
#cajaSuplementos LI {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-WEIGHT: normal; FONT-SIZE: =
12px; PADDING-BOTTOM: 2px; MARGIN: 0px; COLOR: #000000; PADDING-TOP: =
2px; FONT-FAMILY: Arial, Helvetica,Verdana; LIST-STYLE-TYPE: square
}
.cajaSuplementosFecha {
	FONT-WEIGHT: normal; FONT-SIZE: 9px; COLOR: #c00000; FONT-FAMILY: =
Tahoma, Verdana, Arial, Helvetica
}
.cajaSuplPag {
	FONT-WEIGHT: bold; FONT-SIZE: 9px; TEXT-TRANSFORM: uppercase; COLOR: =
#c00000; FONT-FAMILY: Tahoma, Verdana, Arial, Helvetica
}
.url {
	FONT-SIZE: 12px; COLOR: #800000
}

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/look/yui/menu/assets/menu.css

DIV.yuimenu {
	BORDER-RIGHT: #c4c4be 1px solid; PADDING-RIGHT: 1px; BORDER-TOP: =
#c4c4be 1px solid; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; BORDER-LEFT: =
#c4c4be 1px solid; PADDING-TOP: 1px; BORDER-BOTTOM: #c4c4be 1px solid; =
BACKGROUND-COLOR: #cc0000
}
DIV.yuimenu DIV.yuimenu {
	VISIBILITY: hidden; POSITION: absolute
}
DIV.yuimenubar DIV.yuimenu {
	VISIBILITY: hidden; POSITION: absolute
}
DIV.yuimenubar {
	BACKGROUND-IMAGE: url(bg_header_px.png); BACKGROUND-COLOR: #cc0000
}
DIV.yuimenubar DIV.bd {
	WIDTH: 100%
}
DIV.yuimenubar DIV.bd:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
'.'
}
DIV.yuimenu H6 {
	BORDER-RIGHT: #c4c4be 1px solid; BORDER-TOP: #c4c4be 1px solid; =
FONT-WEIGHT: normal; FONT-SIZE: 100%; MARGIN: 0px; BORDER-LEFT: #c4c4be =
1px solid; COLOR: #b9b9b9; BORDER-BOTTOM: #c4c4be 1px solid
}
DIV.yuimenubar H6 {
	BORDER-RIGHT: #c4c4be 1px solid; BORDER-TOP: #c4c4be 1px solid; =
FONT-WEIGHT: normal; FONT-SIZE: 100%; MARGIN: 0px; BORDER-LEFT: #c4c4be =
1px solid; COLOR: #b9b9b9; BORDER-BOTTOM: #c4c4be 1px solid
}
DIV.yuimenubar H6 {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 12px; DISPLAY: inline; =
PADDING-LEFT: 12px; BORDER-LEFT-WIDTH: 0px; FLOAT: left; =
BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 4px; PADDING-TOP: 4px; =
BORDER-RIGHT-WIDTH: 1px
}
DIV.yuimenu H6 {
	BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 10px; DISPLAY: block; =
PADDING-LEFT: 10px; BORDER-LEFT-WIDTH: 0px; FLOAT: none; =
BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 5px; =
BORDER-RIGHT-WIDTH: 0px
}
DIV.yuimenubar UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV.yuimenu UL {
	BORDER-RIGHT: #c4c4be 0px solid; PADDING-RIGHT: 0px; BORDER-TOP: =
#c4c4be 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; MARGIN: 0px; =
BORDER-LEFT: #c4c4be 0px solid; PADDING-TOP: 10px; BORDER-BOTTOM: =
#c4c4be 0px solid; LIST-STYLE-TYPE: none
}
DIV.yuimenu UL.first-of-type {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
DIV.yuimenu UL.hastitle {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
DIV.yuimenu H6.first-of-type {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
DIV.yuimenu DIV.topscrollbar {
	BACKGROUND-IMAGE: url(map.gif); BACKGROUND-REPEAT: no-repeat; HEIGHT: =
16px
}
DIV.yuimenu DIV.bottomscrollbar {
	BACKGROUND-IMAGE: url(map.gif); BACKGROUND-REPEAT: no-repeat; HEIGHT: =
16px
}
DIV.yuimenu DIV.topscrollbar {
	BACKGROUND-POSITION: center -72px; BACKGROUND-IMAGE: url(map.gif)
}
DIV.yuimenu DIV.topscrollbar_disabled {
	BACKGROUND-POSITION: center -88px; BACKGROUND-IMAGE: url(map.gif)
}
DIV.yuimenu DIV.bottomscrollbar {
	BACKGROUND-POSITION: center -104px; BACKGROUND-IMAGE: url(map.gif)
}
DIV.yuimenu DIV.bottomscrollbar_disabled {
	BACKGROUND-POSITION: center -120px; BACKGROUND-IMAGE: url(map.gif)
}
DIV.yuimenu LI {
	FONT-SIZE: 85%; CURSOR: hand; WHITE-SPACE: nowrap; TEXT-ALIGN: left
}
DIV.yuimenubar LI {
	FONT-SIZE: 85%; CURSOR: hand; WHITE-SPACE: nowrap; TEXT-ALIGN: left
}
DIV.yuimenu LI.yuimenuitem {
	PADDING-RIGHT: 24px; PADDING-LEFT: 24px; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px
}
DIV.yuimenu LI LI {
	FONT-SIZE: 100%
}
DIV.yuimenubar LI LI {
	FONT-SIZE: 100%
}
DIV.yuimenu LI.hashelptext EM.helptext {
	MARGIN: 0px 0px 0px 40px; FONT-STYLE: normal
}
DIV.yuimenu LI A {
	FONT-WEIGHT: bold; COLOR: #ffffff; ZOOM: 1; TEXT-DECORATION: underline
}
DIV.yuimenubar LI A {
	FONT-WEIGHT: bold; COLOR: #ffffff; ZOOM: 1; TEXT-DECORATION: underline
}
DIV.yuimenu LI.hassubmenu {
	TEXT-ALIGN: right
}
DIV.yuimenu LI.hashelptext {
	TEXT-ALIGN: right
}
DIV.yuimenu LI.hassubmenu A.hassubmenu {
	DISPLAY: inline; FLOAT: left; TEXT-ALIGN: left
}
DIV.yuimenu LI.hashelptext A.hashelptext {
	DISPLAY: inline; FLOAT: left; TEXT-ALIGN: left
}
DIV.visible.yuimenu LI.hassubmenu A.hassubmenu {
	FLOAT: left
}
DIV.visible.yuimenu LI.hashelptext A.hashelptext {
	FLOAT: left
}
DIV.yuimenu LI.selected {
	BACKGROUND-COLOR: #ff0000
}
DIV.yuimenubar LI.selected {
	BACKGROUND-COLOR: #ff0000
}
DIV.yuimenu LI.selected A.selected {
	TEXT-DECORATION: underline
}
DIV.yuimenubar LI.selected A.selected {
	TEXT-DECORATION: underline
}
DIV.yuimenu LI.selected A.selected {
	COLOR: #fff
}
DIV.yuimenu LI.selected EM.selected {
	COLOR: #fff
}
DIV.yuimenubar LI.selected A.selected {
	COLOR: #fff
}
DIV.yuimenu LI.disabled {
	CURSOR: default
}
DIV.yuimenubar LI.disabled {
	CURSOR: default
}
DIV.yuimenu LI.disabled A.disabled {
	CURSOR: default; COLOR: #b9b9b9
}
DIV.yuimenu LI.disabled EM.disabled {
	CURSOR: default; COLOR: #b9b9b9
}
DIV.yuimenubar LI.disabled A.disabled {
	CURSOR: default; COLOR: #b9b9b9
}
DIV.yuimenubar LI.yuimenubaritem {
	BORDER-RIGHT: #c4c4be 0px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#c4c4be 0px solid; DISPLAY: inline; PADDING-LEFT: 5px; FLOAT: left; =
PADDING-BOTTOM: 4px; MARGIN: 0px; BORDER-LEFT: #c4c4be 1px solid; =
PADDING-TOP: 4px; BORDER-BOTTOM: #c4c4be 0px solid
}
DIV.yuimenubar LI.first-of-type.yuimenubaritem {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
DIV.yuimenu LI.hassubmenu EM.submenuindicator {
	DISPLAY: inline-block; BACKGROUND-IMAGE: url(map.gif); FONT: 0px/0 =
arial; VERTICAL-ALIGN: middle; OVERFLOW: hidden; WIDTH: 8px; =
TEXT-INDENT: 9px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 8px
}
DIV.yuimenubar LI.hassubmenu EM.submenuindicator {
	DISPLAY: inline-block; BACKGROUND-IMAGE: url(map.gif); FONT: 0px/0 =
arial; VERTICAL-ALIGN: middle; OVERFLOW: hidden; WIDTH: 8px; =
TEXT-INDENT: 9px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 8px
}
DIV.yuimenubar LI.hassubmenu EM.submenuindicator {
	BACKGROUND-POSITION: 0px -24px; MARGIN: 0px 0px 0px 10px
}
DIV.yuimenubar LI.hassubmenu EM.selected.submenuindicator {
	BACKGROUND-POSITION: 0px -32px
}
DIV.yuimenubar LI.hassubmenu EM.disabled.submenuindicator {
	BACKGROUND-POSITION: 0px -40px
}
DIV.yuimenu LI.hassubmenu EM.submenuindicator {
	BACKGROUND-POSITION: 0px 0px; MARGIN: 0px -16px 0px 10px
}
DIV.yuimenu LI.hassubmenu EM.selected.submenuindicator {
	BACKGROUND-POSITION: 0px -8px
}
DIV.yuimenu LI.hassubmenu EM.disabled.submenuindicator {
	BACKGROUND-POSITION: 0px -16px
}
DIV.yuimenu LI.checked {
	POSITION: relative
}
DIV.yuimenu LI.checked EM.checkedindicator {
	BACKGROUND-POSITION: 0px -48px; LEFT: 6px; BACKGROUND-IMAGE: =
url(map.gif); OVERFLOW: hidden; WIDTH: 8px; TEXT-INDENT: 9px; =
BACKGROUND-REPEAT: no-repeat; POSITION: absolute; TOP: 0.5em; HEIGHT: =
8px; _left: -16px
}
DIV.yuimenu LI.checked EM.selected.checkedindicator {
	BACKGROUND-POSITION: 0px -56px
}
DIV.yuimenu LI.checked EM.disabled.checkedindicator {
	BACKGROUND-POSITION: 0px -64px
}

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/look/scripts/cal.js

// =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download.=20
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

/* SOURCE FILE: AnchorPosition.js */
function getAnchorPosition(anchorname){var useWindow=3Dfalse;var =
coordinates=3Dnew Object();var x=3D0,y=3D0;var use_gebi=3Dfalse, =
use_css=3Dfalse, =
use_layers=3Dfalse;if(document.getElementById){use_gebi=3Dtrue;}else =
if(document.all){use_css=3Dtrue;}else =
if(document.layers){use_layers=3Dtrue;}if(use_gebi && =
document.all){x=3DAnchorPosition_getPageOffsetLeft(document.all[anchornam=
e]);y=3DAnchorPosition_getPageOffsetTop(document.all[anchorname]);}else =
if(use_gebi){var =
o=3Ddocument.getElementById(anchorname);x=3DAnchorPosition_getPageOffsetL=
eft(o);y=3DAnchorPosition_getPageOffsetTop(o);}else =
if(use_css){x=3DAnchorPosition_getPageOffsetLeft(document.all[anchorname]=
);y=3DAnchorPosition_getPageOffsetTop(document.all[anchorname]);}else =
if(use_layers){var found=3D0;for(var =
i=3D0;i<document.anchors.length;i++){if(document.anchors[i].name=3D=3Danc=
horname){found=3D1;break;}}if(found=3D=3D0){coordinates.x=3D0;coordinates=
.y=3D0;return =
coordinates;}x=3Ddocument.anchors[i].x;y=3Ddocument.anchors[i].y;}else{co=
ordinates.x=3D0;coordinates.y=3D0;return =
coordinates;}coordinates.x=3Dx;coordinates.y=3Dy;return coordinates;}
function getAnchorWindowPosition(anchorname){var =
coordinates=3DgetAnchorPosition(anchorname);var x=3D0;var =
y=3D0;if(document.getElementById){if(isNaN(window.screenX)){x=3Dcoordinat=
es.x-document.body.scrollLeft+window.screenLeft;y=3Dcoordinates.y-documen=
t.body.scrollTop+window.screenTop;}else{x=3Dcoordinates.x+window.screenX+=
(window.outerWidth-window.innerWidth)-window.pageXOffset;y=3Dcoordinates.=
y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYO=
ffset;}}else =
if(document.all){x=3Dcoordinates.x-document.body.scrollLeft+window.screen=
Left;y=3Dcoordinates.y-document.body.scrollTop+window.screenTop;}else =
if(document.layers){x=3Dcoordinates.x+window.screenX+(window.outerWidth-w=
indow.innerWidth)-window.pageXOffset;y=3Dcoordinates.y+window.screenY+(wi=
ndow.outerHeight-24-window.innerHeight)-window.pageYOffset;}coordinates.x=
=3Dx;coordinates.y=3Dy;return coordinates;}
function AnchorPosition_getPageOffsetLeft(el){var =
ol=3Del.offsetLeft;while((el=3Del.offsetParent) !=3D null){ol +=3D =
el.offsetLeft;}return ol;}
function AnchorPosition_getWindowOffsetLeft(el){return =
AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;}
function AnchorPosition_getPageOffsetTop(el){var =
ot=3Del.offsetTop;while((el=3Del.offsetParent) !=3D null){ot +=3D =
el.offsetTop;}return ot;}
function AnchorPosition_getWindowOffsetTop(el){return =
AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;}

/* SOURCE FILE: date.js */
var MONTH_NAMES=3Dnew =
Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','=
Septiembre','Octubre','Noviembre','Diciembre','Ene','Feb','Mar','Abr','Ma=
y','Jun','Jul','Ago','Sep','Oct','Nov','Dec');var DAY_NAMES=3Dnew =
Array('Domingo','Lunes','Martes','Mi=E9rcoles','Jueves','Viernes','S=E1ba=
do','D','L','M','Mi','J','V','S');
function LZ(x){return(x<0||x>9?"":"0")+x}
function isDate(val,format){var =
date=3DgetDateFromFormat(val,format);if(date=3D=3D0){return =
false;}return true;}
function compareDates(date1,dateformat1,date2,dateformat2){var =
d1=3DgetDateFromFormat(date1,dateformat1);var =
d2=3DgetDateFromFormat(date2,dateformat2);if(d1=3D=3D0 || =
d2=3D=3D0){return -1;}else if(d1 > d2){return 1;}return 0;}
function formatDate(date,format){format=3Dformat+"";var result=3D"";var =
i_format=3D0;var c=3D"";var token=3D"";var y=3Ddate.getYear()+"";var =
M=3Ddate.getMonth()+1;var d=3Ddate.getDate();var E=3Ddate.getDay();var =
H=3Ddate.getHours();var m=3Ddate.getMinutes();var =
s=3Ddate.getSeconds();var =
yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;var value=3Dnew =
Object();if(y.length < =
4){y=3D""+(y-0+1900);}value["y"]=3D""+y;value["yyyy"]=3Dy;value["yy"]=3Dy=
.substring(2,4);value["M"]=3DM;value["MM"]=3DLZ(M);value["MMM"]=3DMONTH_N=
AMES[M-1];value["NNN"]=3DMONTH_NAMES[M+11];value["d"]=3Dd;value["dd"]=3DL=
Z(d);value["E"]=3DDAY_NAMES[E+7];value["EE"]=3DDAY_NAMES[E];value["H"]=3D=
H;value["HH"]=3DLZ(H);if(H=3D=3D0){value["h"]=3D12;}else =
if(H>12){value["h"]=3DH-12;}else{value["h"]=3DH;}value["hh"]=3DLZ(value["=
h"]);if(H>11){value["K"]=3DH-12;}else{value["K"]=3DH;}value["k"]=3DH+1;va=
lue["KK"]=3DLZ(value["K"]);value["kk"]=3DLZ(value["k"]);if(H > =
11){value["a"]=3D"PM";}else{value["a"]=3D"AM";}value["m"]=3Dm;value["mm"]=
=3DLZ(m);value["s"]=3Ds;value["ss"]=3DLZ(s);while(i_format < =
format.length){c=3Dformat.charAt(i_format);token=3D"";while((format.charA=
t(i_format)=3D=3Dc) &&(i_format < format.length)){token +=3D =
format.charAt(i_format++);}if(value[token] !=3D null){result=3Dresult + =
value[token];}else{result=3Dresult + token;}}return result;}
function _isInteger(val){var digits=3D"1234567890";for(var i=3D0;i < =
val.length;i++){if(digits.indexOf(val.charAt(i))=3D=3D-1){return =
false;}}return true;}
function _getInt(str,i,minlength,maxlength){for(var =
x=3Dmaxlength;x>=3Dminlength;x--){var =
token=3Dstr.substring(i,i+x);if(token.length < minlength){return =
null;}if(_isInteger(token)){return token;}}return null;}
function =
getDateFromFormat(val,format){val=3Dval+"";format=3Dformat+"";var =
i_val=3D0;var i_format=3D0;var c=3D"";var token=3D"";var token2=3D"";var =
x,y;var now=3Dnew Date();var year=3Dnow.getYear();var =
month=3Dnow.getMonth()+1;var date=3D1;var hh=3Dnow.getHours();var =
mm=3Dnow.getMinutes();var ss=3Dnow.getSeconds();var =
ampm=3D"";while(i_format < =
format.length){c=3Dformat.charAt(i_format);token=3D"";while((format.charA=
t(i_format)=3D=3Dc) &&(i_format < format.length)){token +=3D =
format.charAt(i_format++);}if(token=3D=3D"yyyy" || token=3D=3D"yy" || =
token=3D=3D"y"){if(token=3D=3D"yyyy"){x=3D4;y=3D4;}if(token=3D=3D"yy"){x=3D=
2;y=3D2;}if(token=3D=3D"y"){x=3D2;y=3D4;}year=3D_getInt(val,i_val,x,y);if=
(year=3D=3Dnull){return 0;}i_val +=3D =
year.length;if(year.length=3D=3D2){if(year > =
70){year=3D1900+(year-0);}else{year=3D2000+(year-0);}}}else =
if(token=3D=3D"MMM"||token=3D=3D"NNN"){month=3D0;for(var =
i=3D0;i<MONTH_NAMES.length;i++){var =
month_name=3DMONTH_NAMES[i];if(val.substring(i_val,i_val+month_name.lengt=
h).toLowerCase()=3D=3Dmonth_name.toLowerCase()){if(token=3D=3D"MMM"||(tok=
en=3D=3D"NNN"&&i>11)){month=3Di+1;if(month>12){month -=3D 12;}i_val +=3D =
month_name.length;break;}}}if((month < 1)||(month>12)){return 0;}}else =
if(token=3D=3D"EE"||token=3D=3D"E"){for(var =
i=3D0;i<DAY_NAMES.length;i++){var =
day_name=3DDAY_NAMES[i];if(val.substring(i_val,i_val+day_name.length).toL=
owerCase()=3D=3Dday_name.toLowerCase()){i_val +=3D =
day_name.length;break;}}}else =
if(token=3D=3D"MM"||token=3D=3D"M"){month=3D_getInt(val,i_val,token.lengt=
h,2);if(month=3D=3Dnull||(month<1)||(month>12)){return =
0;}i_val+=3Dmonth.length;}else =
if(token=3D=3D"dd"||token=3D=3D"d"){date=3D_getInt(val,i_val,token.length=
,2);if(date=3D=3Dnull||(date<1)||(date>31)){return =
0;}i_val+=3Ddate.length;}else =
if(token=3D=3D"hh"||token=3D=3D"h"){hh=3D_getInt(val,i_val,token.length,2=
);if(hh=3D=3Dnull||(hh<1)||(hh>12)){return 0;}i_val+=3Dhh.length;}else =
if(token=3D=3D"HH"||token=3D=3D"H"){hh=3D_getInt(val,i_val,token.length,2=
);if(hh=3D=3Dnull||(hh<0)||(hh>23)){return 0;}i_val+=3Dhh.length;}else =
if(token=3D=3D"KK"||token=3D=3D"K"){hh=3D_getInt(val,i_val,token.length,2=
);if(hh=3D=3Dnull||(hh<0)||(hh>11)){return 0;}i_val+=3Dhh.length;}else =
if(token=3D=3D"kk"||token=3D=3D"k"){hh=3D_getInt(val,i_val,token.length,2=
);if(hh=3D=3Dnull||(hh<1)||(hh>24)){return =
0;}i_val+=3Dhh.length;hh--;}else =
if(token=3D=3D"mm"||token=3D=3D"m"){mm=3D_getInt(val,i_val,token.length,2=
);if(mm=3D=3Dnull||(mm<0)||(mm>59)){return 0;}i_val+=3Dmm.length;}else =
if(token=3D=3D"ss"||token=3D=3D"s"){ss=3D_getInt(val,i_val,token.length,2=
);if(ss=3D=3Dnull||(ss<0)||(ss>59)){return 0;}i_val+=3Dss.length;}else =
if(token=3D=3D"a"){if(val.substring(i_val,i_val+2).toLowerCase()=3D=3D"am=
"){ampm=3D"AM";}else =
if(val.substring(i_val,i_val+2).toLowerCase()=3D=3D"pm"){ampm=3D"PM";}els=
e{return =
0;}i_val+=3D2;}else{if(val.substring(i_val,i_val+token.length)!=3Dtoken){=
return 0;}else{i_val+=3Dtoken.length;}}}if(i_val !=3D val.length){return =
0;}if(month=3D=3D2){if( ((year%4=3D=3D0)&&(year%100 !=3D 0) ) =
||(year%400=3D=3D0) ){if(date > 29){return 0;}}else{if(date > 28){return =
0;}}}if((month=3D=3D4)||(month=3D=3D6)||(month=3D=3D9)||(month=3D=3D11)){=
if(date > 30){return 0;}}if(hh<12 && ampm=3D=3D"PM"){hh=3Dhh-0+12;}else =
if(hh>11 && ampm=3D=3D"AM"){hh-=3D12;}var newdate=3Dnew =
Date(year,month-1,date,hh,mm,ss);return newdate.getTime();}
function parseDate(val){var =
preferEuro=3D(arguments.length=3D=3D2)?arguments[1]:false;generalFormats=3D=
new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM =
d');monthFirst=3Dnew =
Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');dateFirst =3Dnew =
Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');var checkList=3Dnew =
Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'mo=
nthFirst':'dateFirst');var d=3Dnull;for(var =
i=3D0;i<checkList.length;i++){var l=3Dwindow[checkList[i]];for(var =
j=3D0;j<l.length;j++){d=3DgetDateFromFormat(val,l[j]);if(d!=3D0){return =
new Date(d);}}}return null;}

/* SOURCE FILE: PopupWindow.js */
function PopupWindow_getXYPosition(anchorname){var =
coordinates;if(this.type =3D=3D "WINDOW"){coordinates =3D =
getAnchorWindowPosition(anchorname);}else{coordinates =3D =
getAnchorPosition(anchorname);}this.x =3D coordinates.x;this.y =3D =
coordinates.y;}
function PopupWindow_setSize(width,height){this.width =3D =
width;this.height =3D height;}
function PopupWindow_populate(contents){this.contents =3D =
contents;this.populated =3D false;}
function PopupWindow_setUrl(url){this.url =3D url;}
function PopupWindow_setWindowProperties(props){this.windowProperties =
=3D props;}
function PopupWindow_refresh(){if(this.divName !=3D =
null){if(this.use_gebi){document.getElementById(this.divName).innerHTML =
=3D this.contents;}else =
if(this.use_css){document.all[this.divName].innerHTML =3D =
this.contents;}else if(this.use_layers){var d =3D =
document.layers[this.divName];d.document.open();d.document.writeln(this.c=
ontents);d.document.close();}}else{if(this.popupWindow !=3D null && =
!this.popupWindow.closed){if(this.url!=3D""){this.popupWindow.location.hr=
ef=3Dthis.url;}else{this.popupWindow.document.open();this.popupWindow.doc=
ument.writeln(this.contents);this.popupWindow.document.close();}this.popu=
pWindow.focus();}}}
function =
PopupWindow_showPopup(anchorname){this.getXYPosition(anchorname);this.x =
+=3D this.offsetX;this.y +=3D this.offsetY;if(!this.populated =
&&(this.contents !=3D "")){this.populated =3D =
true;this.refresh();}if(this.divName !=3D =
null){if(this.use_gebi){document.getElementById(this.divName).style.left =
=3D this.x + "px";document.getElementById(this.divName).style.top =3D =
this.y + "px";document.getElementById(this.divName).style.visibility =3D =
"visible";}else if(this.use_css){document.all[this.divName].style.left =
=3D this.x;document.all[this.divName].style.top =3D =
this.y;document.all[this.divName].style.visibility =3D "visible";}else =
if(this.use_layers){document.layers[this.divName].left =3D =
this.x;document.layers[this.divName].top =3D =
this.y;document.layers[this.divName].visibility =3D =
"visible";}}else{if(this.popupWindow =3D=3D null || =
this.popupWindow.closed){if(this.x<0){this.x=3D0;}if(this.y<0){this.y=3D0=
;}if(screen && screen.availHeight){if((this.y + this.height) > =
screen.availHeight){this.y =3D screen.availHeight - =
this.height;}}if(screen && screen.availWidth){if((this.x + this.width) > =
screen.availWidth){this.x =3D screen.availWidth - this.width;}}var =
avoidAboutBlank =3D window.opera ||( document.layers && =
!navigator.mimeTypes['*']) || navigator.vendor =3D=3D 'KDE' ||( =
document.childNodes && !document.all && =
!navigator.taintEnabled);this.popupWindow =3D =
window.open(avoidAboutBlank?"":"about:blank","window_"+anchorname,this.wi=
ndowProperties+",width=3D"+this.width+",height=3D"+this.height+",screenX=3D=
"+this.x+",left=3D"+this.x+",screenY=3D"+this.y+",top=3D"+this.y+"");}thi=
s.refresh();}}
function PopupWindow_hidePopup(){if(this.divName !=3D =
null){if(this.use_gebi){document.getElementById(this.divName).style.visib=
ility =3D "hidden";}else =
if(this.use_css){document.all[this.divName].style.visibility =3D =
"hidden";}else =
if(this.use_layers){document.layers[this.divName].visibility =3D =
"hidden";}}else{if(this.popupWindow && =
!this.popupWindow.closed){this.popupWindow.close();this.popupWindow =3D =
null;}}}
function PopupWindow_isClicked(e){if(this.divName !=3D =
null){if(this.use_layers){var clickX =3D e.pageX;var clickY =3D =
e.pageY;var t =3D document.layers[this.divName];if((clickX > t.left) =
&&(clickX < t.left+t.clip.width) &&(clickY > t.top) &&(clickY < =
t.top+t.clip.height)){return true;}else{return false;}}else =
if(document.all){var t =3D window.event.srcElement;while(t.parentElement =
!=3D null){if(t.id=3D=3Dthis.divName){return true;}t =3D =
t.parentElement;}return false;}else if(this.use_gebi && e){var t =3D =
e.originalTarget;while(t.parentNode !=3D =
null){if(t.id=3D=3Dthis.divName){return true;}t =3D t.parentNode;}return =
false;}return false;}return false;}
function PopupWindow_hideIfNotClicked(e){if(this.autoHideEnabled && =
!this.isClicked(e)){this.hidePopup();}}
function PopupWindow_autoHide(){this.autoHideEnabled =3D true;}
function PopupWindow_hidePopupWindows(e){for(var =
i=3D0;i<popupWindowObjects.length;i++){if(popupWindowObjects[i] !=3D =
null){var p =3D popupWindowObjects[i];p.hideIfNotClicked(e);}}}
function =
PopupWindow_attachListener(){if(document.layers){document.captureEvents(E=
vent.MOUSEUP);}window.popupWindowOldEventListener =3D =
document.onmouseup;if(window.popupWindowOldEventListener !=3D =
null){document.onmouseup =3D new =
Function("window.popupWindowOldEventListener();PopupWindow_hidePopupWindo=
ws();");}else{document.onmouseup =3D PopupWindow_hidePopupWindows;}}
function =
PopupWindow(){if(!window.popupWindowIndex){window.popupWindowIndex =3D =
0;}if(!window.popupWindowObjects){window.popupWindowObjects =3D new =
Array();}if(!window.listenerAttached){window.listenerAttached =3D =
true;PopupWindow_attachListener();}this.index =3D =
popupWindowIndex++;popupWindowObjects[this.index] =3D this;this.divName =
=3D null;this.popupWindow =3D =
null;this.width=3D0;this.height=3D0;this.populated =3D =
false;this.visible =3D false;this.autoHideEnabled =3D =
false;this.contents =3D =
"";this.url=3D"";this.windowProperties=3D"toolbar=3Dno,location=3Dno,stat=
us=3Dno,menubar=3Dno,scrollbars=3Dauto,resizable,alwaysRaised,dependent,t=
itlebar=3Dno";if(arguments.length>0){this.type=3D"DIV";this.divName =3D =
arguments[0];}else{this.type=3D"WINDOW";}this.use_gebi =3D =
false;this.use_css =3D false;this.use_layers =3D =
false;if(document.getElementById){this.use_gebi =3D true;}else =
if(document.all){this.use_css =3D true;}else =
if(document.layers){this.use_layers =3D true;}else{this.type =3D =
"WINDOW";}this.offsetX =3D 0;this.offsetY =3D 0;this.getXYPosition =3D =
PopupWindow_getXYPosition;this.populate =3D =
PopupWindow_populate;this.setUrl =3D =
PopupWindow_setUrl;this.setWindowProperties =3D =
PopupWindow_setWindowProperties;this.refresh =3D =
PopupWindow_refresh;this.showPopup =3D =
PopupWindow_showPopup;this.hidePopup =3D =
PopupWindow_hidePopup;this.setSize =3D =
PopupWindow_setSize;this.isClicked =3D =
PopupWindow_isClicked;this.autoHide =3D =
PopupWindow_autoHide;this.hideIfNotClicked =3D =
PopupWindow_hideIfNotClicked;}


/* SOURCE FILE: CalendarPopup.js */

function CalendarPopup(){var c;if(arguments.length>0){c =3D new =
PopupWindow(arguments[0]);}else{c =3D new =
PopupWindow();c.setSize(150,175);}c.offsetX =3D -152;c.offsetY =3D =
25;c.autoHide();c.monthNames =3D new =
Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','=
Septiembre','Octubre','Noviembre','Diciembre');c.monthAbbreviations =3D =
new =
Array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','=
Dic');c.dayHeaders =3D new =
Array('D','L','M','Mi','J','V','S');c.returnFunction =3D =
"CP_tmpReturnFunction";c.returnMonthFunction =3D =
"CP_tmpReturnMonthFunction";c.returnQuarterFunction =3D =
"CP_tmpReturnQuarterFunction";c.returnYearFunction =3D =
"CP_tmpReturnYearFunction";c.weekStartDay =3D 0;c.isShowYearNavigation =
=3D false;c.displayType =3D "date";c.disabledWeekDays =3D new =
Object();c.disabledDatesExpression =3D "";c.yearSelectStartOffset =3D =
2;c.currentDate =3D =
null;c.todayText=3D"Hoy";c.cssPrefix=3D"";c.isShowNavigationDropdowns=3Df=
alse;c.isShowYearNavigationInput=3Dfalse;window.CP_calendarObject =3D =
null;window.CP_targetInput =3D null;window.CP_dateFormat =3D =
"MM/dd/yyyy";c.copyMonthNamesToWindow =3D =
CP_copyMonthNamesToWindow;c.setReturnFunction =3D =
CP_setReturnFunction;c.setReturnMonthFunction =3D =
CP_setReturnMonthFunction;c.setReturnQuarterFunction =3D =
CP_setReturnQuarterFunction;c.setReturnYearFunction =3D =
CP_setReturnYearFunction;c.setMonthNames =3D =
CP_setMonthNames;c.setMonthAbbreviations =3D =
CP_setMonthAbbreviations;c.setDayHeaders =3D =
CP_setDayHeaders;c.setWeekStartDay =3D =
CP_setWeekStartDay;c.setDisplayType =3D =
CP_setDisplayType;c.setDisabledWeekDays =3D =
CP_setDisabledWeekDays;c.addDisabledDates =3D =
CP_addDisabledDates;c.setYearSelectStartOffset =3D =
CP_setYearSelectStartOffset;c.setTodayText =3D =
CP_setTodayText;c.showYearNavigation =3D =
CP_showYearNavigation;c.showCalendar =3D CP_showCalendar;c.hideCalendar =
=3D CP_hideCalendar;c.getStyles =3D getCalendarStyles;c.refreshCalendar =
=3D CP_refreshCalendar;c.getCalendar =3D CP_getCalendar;c.select =3D =
CP_select;c.setCssPrefix =3D CP_setCssPrefix;c.showNavigationDropdowns =
=3D CP_showNavigationDropdowns;c.showYearNavigationInput =3D =
CP_showYearNavigationInput;c.copyMonthNamesToWindow();return c;}
function =
CP_copyMonthNamesToWindow(){if(typeof(window.MONTH_NAMES)!=3D"undefined" =
&& window.MONTH_NAMES!=3Dnull){window.MONTH_NAMES =3D new =
Array();for(var =
i=3D0;i<this.monthNames.length;i++){window.MONTH_NAMES[window.MONTH_NAMES=
.length] =3D this.monthNames[i];}for(var =
i=3D0;i<this.monthAbbreviations.length;i++){window.MONTH_NAMES[window.MON=
TH_NAMES.length] =3D this.monthAbbreviations[i];}}}
function =
CP_tmpReturnFunction(y,m,d){if(window.CP_targetInput!=3Dnull){var dt =3D =
new =
Date(y,m-1,d,0,0,0);if(window.CP_calendarObject!=3Dnull){window.CP_calend=
arObject.copyMonthNamesToWindow();}window.CP_targetInput.value =3D =
formatDate(dt,window.CP_dateFormat);}else{alert('Use setReturnFunction() =
to define which function will get the clicked results!');}}
function CP_tmpReturnMonthFunction(y,m){alert('Use =
setReturnMonthFunction() to define which function will get the clicked =
results!\nYou clicked: year=3D'+y+' , month=3D'+m);}
function CP_tmpReturnQuarterFunction(y,q){alert('Use =
setReturnQuarterFunction() to define which function will get the clicked =
results!\nYou clicked: year=3D'+y+' , quarter=3D'+q);}
function CP_tmpReturnYearFunction(y){alert('Use setReturnYearFunction() =
to define which function will get the clicked results!\nYou clicked: =
year=3D'+y);}
function CP_setReturnFunction(name){this.returnFunction =3D name;}
function CP_setReturnMonthFunction(name){this.returnMonthFunction =3D =
name;}
function CP_setReturnQuarterFunction(name){this.returnQuarterFunction =
=3D name;}
function CP_setReturnYearFunction(name){this.returnYearFunction =3D =
name;}
function CP_setMonthNames(){for(var =
i=3D0;i<arguments.length;i++){this.monthNames[i] =3D =
arguments[i];}this.copyMonthNamesToWindow();}
function CP_setMonthAbbreviations(){for(var =
i=3D0;i<arguments.length;i++){this.monthAbbreviations[i] =3D =
arguments[i];}this.copyMonthNamesToWindow();}
function CP_setDayHeaders(){for(var =
i=3D0;i<arguments.length;i++){this.dayHeaders[i] =3D arguments[i];}}
function CP_setWeekStartDay(day){this.weekStartDay =3D day;}
function CP_showYearNavigation(){this.isShowYearNavigation =
=3D(arguments.length>0)?arguments[0]:true;}
function =
CP_setDisplayType(type){if(type!=3D"date"&&type!=3D"week-end"&&type!=3D"m=
onth"&&type!=3D"quarter"&&type!=3D"year"){alert("Invalid display type! =
Must be one of: date,week-end,month,quarter,year");return =
false;}this.displayType=3Dtype;}
function =
CP_setYearSelectStartOffset(num){this.yearSelectStartOffset=3Dnum;}
function CP_setDisabledWeekDays(){this.disabledWeekDays =3D new =
Object();for(var =
i=3D0;i<arguments.length;i++){this.disabledWeekDays[arguments[i]] =3D =
true;}}
function CP_addDisabledDates(start, =
end){if(arguments.length=3D=3D1){end=3Dstart;}if(start=3D=3Dnull && =
end=3D=3Dnull){return;}if(this.disabledDatesExpression!=3D""){this.disabl=
edDatesExpression+=3D "||";}if(start!=3Dnull){start =3D =
parseDate(start);start=3D""+start.getFullYear()+LZ(start.getMonth()+1)+LZ=
(start.getDate());}if(end!=3Dnull){end=3DparseDate(end);end=3D""+end.getF=
ullYear()+LZ(end.getMonth()+1)+LZ(end.getDate());}if(start=3D=3Dnull){thi=
s.disabledDatesExpression+=3D"(ds<=3D"+end+")";}else if(end  =
=3D=3Dnull){this.disabledDatesExpression+=3D"(ds>=3D"+start+")";}else{thi=
s.disabledDatesExpression+=3D"(ds>=3D"+start+"&&ds<=3D"+end+")";}}
function CP_setTodayText(text){this.todayText =3D text;}
function CP_setCssPrefix(val){this.cssPrefix =3D val;}
function CP_showNavigationDropdowns(){this.isShowNavigationDropdowns =
=3D(arguments.length>0)?arguments[0]:true;}
function CP_showYearNavigationInput(){this.isShowYearNavigationInput =
=3D(arguments.length>0)?arguments[0]:true;}
function CP_hideCalendar(){if(arguments.length > =
0){window.popupWindowObjects[arguments[0]].hidePopup();}else{this.hidePop=
up();}}
function CP_refreshCalendar(index){var calObject =3D =
window.popupWindowObjects[index];if(arguments.length>1){calObject.populat=
e(calObject.getCalendar(arguments[1],arguments[2],arguments[3],arguments[=
4],arguments[5]));}else{calObject.populate(calObject.getCalendar());}calO=
bject.refresh();}
function =
CP_showCalendar(anchorname){if(arguments.length>1){if(arguments[1]=3D=3Dn=
ull||arguments[1]=3D=3D""){this.currentDate=3Dnew =
Date();}else{this.currentDate=3Dnew =
Date(parseDate(arguments[1]));}}this.populate(this.getCalendar());this.sh=
owPopup(anchorname);}
function CP_select(inputobj, linkname, format){var =
selectedDate=3D(arguments.length>3)?arguments[3]:null;if(!window.getDateF=
romFormat){alert("calendar.select: To use this method you must also =
include 'date.js' for date =
formatting");return;}if(this.displayType!=3D"date"&&this.displayType!=3D"=
week-end"){alert("calendar.select: This function can only be used with =
displayType 'date' or 'week-end'");return;}if(inputobj.type!=3D"text" && =
inputobj.type!=3D"hidden" && =
inputobj.type!=3D"textarea"){alert("calendar.select: Input object passed =
is not a valid form input =
object");window.CP_targetInput=3Dnull;return;}if(inputobj.disabled){retur=
n;}window.CP_targetInput =3D inputobj;window.CP_calendarObject =3D =
this;this.currentDate=3Dnull;var time=3D0;if(selectedDate!=3Dnull){time =
=3D getDateFromFormat(selectedDate,format)}else =
if(inputobj.value!=3D""){time =3D =
getDateFromFormat(inputobj.value,format);}if(selectedDate!=3Dnull || =
inputobj.value!=3D""){if(time=3D=3D0){this.currentDate=3Dnull;}else{this.=
currentDate=3Dnew Date(time);}}window.CP_dateFormat =3D =
format;this.showCalendar(linkname);}
function getCalendarStyles(){var result =3D "";var p =3D =
"";if(this!=3Dnull && typeof(this.cssPrefix)!=3D"undefined" && =
this.cssPrefix!=3Dnull && =
this.cssPrefix!=3D""){p=3Dthis.cssPrefix;}result +=3D "<STYLE>\n";result =
+=3D =
"."+p+"cpYearNavigation,."+p+"cpMonthNavigation{background-color:#C0C0C0;=
text-align:center;vertical-align:center;text-decoration:none;color:#00000=
0;font-weight:bold;}\n";result +=3D "."+p+"cpDayColumnHeader, =
."+p+"cpYearNavigation,."+p+"cpMonthNavigation,."+p+"cpCurrentMonthDate,.=
"+p+"cpCurrentMonthDateDisabled,."+p+"cpOtherMonthDate,."+p+"cpOtherMonth=
DateDisabled,."+p+"cpCurrentDate,."+p+"cpCurrentDateDisabled,."+p+"cpToda=
yText,."+p+"cpTodayTextDisabled,."+p+"cpText{font-family:arial;font-size:=
8pt;}\n";result +=3D =
"TD."+p+"cpDayColumnHeader{text-align:right;border:solid thin =
#C0C0C0;border-width:0px 0px 1px 0px;}\n";result +=3D =
"."+p+"cpCurrentMonthDate, ."+p+"cpOtherMonthDate, =
."+p+"cpCurrentDate{text-align:right;text-decoration:none;}\n";result =
+=3D "."+p+"cpCurrentMonthDateDisabled, ."+p+"cpOtherMonthDateDisabled, =
."+p+"cpCurrentDateDisabled{color:#D0D0D0;text-align:right;text-decoratio=
n:line-through;}\n";result +=3D "."+p+"cpCurrentMonthDate, =
.cpCurrentDate{color:#000000;}\n";result +=3D =
"."+p+"cpOtherMonthDate{color:#808080;}\n";result +=3D =
"TD."+p+"cpCurrentDate{color:white;background-color: =
#C0C0C0;border-width:1px;border:solid thin #800000;}\n";result +=3D =
"TD."+p+"cpCurrentDateDisabled{border-width:1px;border:solid thin =
#FFAAAA;}\n";result +=3D "TD."+p+"cpTodayText, =
TD."+p+"cpTodayTextDisabled{border:solid thin #C0C0C0;border-width:1px =
0px 0px 0px;}\n";result +=3D "A."+p+"cpTodayText, =
SPAN."+p+"cpTodayTextDisabled{height:20px;}\n";result +=3D =
"A."+p+"cpTodayText{color:black;}\n";result +=3D =
"."+p+"cpTodayTextDisabled{color:#D0D0D0;}\n";result +=3D =
"."+p+"cpBorder{border:solid thin #808080;}\n";result +=3D =
"</STYLE>\n";return result;}
function CP_getCalendar(){var now =3D new Date();if(this.type =3D=3D =
"WINDOW"){var windowref =3D "window.opener.";}else{var windowref =3D =
"";}var result =3D "";if(this.type =3D=3D "WINDOW"){result +=3D =
"<HTML><HEAD><TITLE>Calendar</TITLE>"+this.getStyles()+"</HEAD><BODY =
MARGINWIDTH=3D0 MARGINHEIGHT=3D0 TOPMARGIN=3D0 RIGHTMARGIN=3D0 =
LEFTMARGIN=3D0>\n";result +=3D '<CENTER><TABLE WIDTH=3D100% BORDER=3D0 =
BORDERWIDTH=3D0 CELLSPACING=3D0 CELLPADDING=3D0>\n';}else{result +=3D =
'<TABLE CLASS=3D"'+this.cssPrefix+'cpBorder" WIDTH=3D144 BORDER=3D1 =
BORDERWIDTH=3D1 CELLSPACING=3D0 CELLPADDING=3D1>\n';result +=3D '<TR><TD =
ALIGN=3DCENTER>\n';result +=3D =
'<CENTER>\n';}if(this.displayType=3D=3D"date" || =
this.displayType=3D=3D"week-end"){if(this.currentDate=3D=3Dnull){this.cur=
rentDate =3D now;}if(arguments.length > 0){var month =3D =
arguments[0];}else{var month =3D =
this.currentDate.getMonth()+1;}if(arguments.length > 1 && arguments[1]>0 =
&& arguments[1]-0=3D=3Darguments[1]){var year =3D arguments[1];}else{var =
year =3D this.currentDate.getFullYear();}var daysinmonth=3D new =
Array(0,31,28,31,30,31,30,31,31,30,31,30,31);if( ((year%4 =3D=3D =
0)&&(year%100 !=3D 0) ) ||(year%400 =3D=3D 0) ){daysinmonth[2] =3D =
29;}var current_month =3D new Date(year,month-1,1);var display_year =3D =
year;var display_month =3D month;var display_date =3D 1;var weekday=3D =
current_month.getDay();var offset =3D 0;offset =3D(weekday >=3D =
this.weekStartDay) ? weekday-this.weekStartDay : =
7-this.weekStartDay+weekday ;if(offset > =
0){display_month--;if(display_month < 1){display_month =3D =
12;display_year--;}display_date =3D =
daysinmonth[display_month]-offset+1;}var next_month =3D month+1;var =
next_month_year =3D year;if(next_month > =
12){next_month=3D1;next_month_year++;}var last_month =3D month-1;var =
last_month_year =3D year;if(last_month < =
1){last_month=3D12;last_month_year--;}var =
date_class;if(this.type!=3D"WINDOW"){result +=3D "<TABLE WIDTH=3D144 =
BORDER=3D0 BORDERWIDTH=3D0 CELLSPACING=3D0 CELLPADDING=3D0>";}result =
+=3D '<TR>\n';var refresh =3D windowref+'CP_refreshCalendar';var =
refreshLink =3D 'javascript:' + =
refresh;if(this.isShowNavigationDropdowns){result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" WIDTH=3D"78" =
COLSPAN=3D"3"><select CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" =
name=3D"cpMonth" =
onChange=3D"'+refresh+'('+this.index+',this.options[this.selectedIndex].v=
alue-0,'+(year-0)+');">';for( var =
monthCounter=3D1;monthCounter<=3D12;monthCounter++){var selected =
=3D(monthCounter=3D=3Dmonth) ? 'SELECTED' : '';result +=3D '<option =
value=3D"'+monthCounter+'" =
'+selected+'>'+this.monthNames[monthCounter-1]+'</option>';}result +=3D =
'</select></TD>';result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" =
WIDTH=3D"10">&nbsp;</TD>';result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" WIDTH=3D"56" =
COLSPAN=3D"3"><select CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
name=3D"cpYear" =
onChange=3D"'+refresh+'('+this.index+','+month+',this.options[this.select=
edIndex].value-0);">';for( var =
yearCounter=3Dyear-this.yearSelectStartOffset;yearCounter<=3Dyear+this.ye=
arSelectStartOffset;yearCounter++){var selected =
=3D(yearCounter=3D=3Dyear) ? 'SELECTED' : '';result +=3D '<option =
value=3D"'+yearCounter+'" '+selected+'>'+yearCounter+'</option>';}result =
+=3D '</select></TD>';}else{if(this.isShowYearNavigation){result +=3D =
'<TD CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" WIDTH=3D"10"><A =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" =
HREF=3D"'+refreshLink+'('+this.index+','+last_month+','+last_month_year+'=
);">&lt;</A></TD>';result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" WIDTH=3D"58"><SPAN =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation">'+this.monthNames[month-1]+=
'</SPAN></TD>';result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" WIDTH=3D"10"><A =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" =
HREF=3D"'+refreshLink+'('+this.index+','+next_month+','+next_month_year+'=
);">&gt;</A></TD>';result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" =
WIDTH=3D"10">&nbsp;</TD>';result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" WIDTH=3D"10"><A =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
HREF=3D"'+refreshLink+'('+this.index+','+month+','+(year-1)+');">&lt;</A>=
</TD>';if(this.isShowYearNavigationInput){result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" WIDTH=3D"36"><INPUT =
NAME=3D"cpYear" CLASS=3D"'+this.cssPrefix+'cpYearNavigation" SIZE=3D"4" =
MAXLENGTH=3D"4" VALUE=3D"'+year+'" =
onBlur=3D"'+refresh+'('+this.index+','+month+',this.value-0);"></TD>';}el=
se{result +=3D '<TD CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
WIDTH=3D"36"><SPAN =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation">'+year+'</SPAN></TD>';}resul=
t +=3D '<TD CLASS=3D"'+this.cssPrefix+'cpYearNavigation" WIDTH=3D"10"><A =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
HREF=3D"'+refreshLink+'('+this.index+','+month+','+(year+1)+');">&gt;</A>=
</TD>';}else{result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" WIDTH=3D"22"><A =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" =
HREF=3D"'+refreshLink+'('+this.index+','+last_month+','+last_month_year+'=
);">&lt;&lt;</A></TD>\n';result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" WIDTH=3D"100"><SPAN =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation">'+this.monthNames[month-1]+=
' '+year+'</SPAN></TD>\n';result +=3D '<TD =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" WIDTH=3D"22"><A =
CLASS=3D"'+this.cssPrefix+'cpMonthNavigation" =
HREF=3D"'+refreshLink+'('+this.index+','+next_month+','+next_month_year+'=
);">&gt;&gt;</A></TD>\n';}}result +=3D '</TR></TABLE>\n';result +=3D =
'<TABLE WIDTH=3D120 BORDER=3D0 CELLSPACING=3D0 CELLPADDING=3D1 =
ALIGN=3DCENTER>\n';result +=3D '<TR>\n';for(var j=3D0;j<7;j++){result =
+=3D '<TD CLASS=3D"'+this.cssPrefix+'cpDayColumnHeader" =
WIDTH=3D"14%"><SPAN =
CLASS=3D"'+this.cssPrefix+'cpDayColumnHeader">'+this.dayHeaders[(this.wee=
kStartDay+j)%7]+'</TD>\n';}result +=3D '</TR>\n';for(var =
row=3D1;row<=3D6;row++){result +=3D '<TR>\n';for(var =
col=3D1;col<=3D7;col++){var =
disabled=3Dfalse;if(this.disabledDatesExpression!=3D""){var =
ds=3D""+display_year+LZ(display_month)+LZ(display_date);eval("disabled=3D=
("+this.disabledDatesExpression+")");}var dateClass =3D =
"";if((display_month =3D=3D this.currentDate.getMonth()+1) =
&&(display_date=3D=3Dthis.currentDate.getDate()) =
&&(display_year=3D=3Dthis.currentDate.getFullYear())){dateClass =3D =
"cpCurrentDate";}else if(display_month =3D=3D month){dateClass =3D =
"cpCurrentMonthDate";}else{dateClass =3D "cpOtherMonthDate";}if(disabled =
|| this.disabledWeekDays[col-1]){result +=3D '	<TD =
CLASS=3D"'+this.cssPrefix+dateClass+'"><SPAN =
CLASS=3D"'+this.cssPrefix+dateClass+'Disabled">'+display_date+'</SPAN></T=
D>\n';}else{var selected_date =3D display_date;var selected_month =3D =
display_month;var selected_year =3D =
display_year;if(this.displayType=3D=3D"week-end"){var d =3D new =
Date(selected_year,selected_month-1,selected_date,0,0,0,0);d.setDate(d.ge=
tDate() +(7-col));selected_year =3D d.getYear();if(selected_year < =
1000){selected_year +=3D 1900;}selected_month =3D =
d.getMonth()+1;selected_date =3D d.getDate();}result +=3D '	<TD =
CLASS=3D"'+this.cssPrefix+dateClass+'"><A =
HREF=3D"javascript:'+windowref+this.returnFunction+'('+selected_year+','+=
selected_month+','+selected_date+');'+windowref+'CP_hideCalendar(\''+this=
.index+'\');" =
CLASS=3D"'+this.cssPrefix+dateClass+'">'+display_date+'</A></TD>\n';}disp=
lay_date++;if(display_date > =
daysinmonth[display_month]){display_date=3D1;display_month++;}if(display_=
month > 12){display_month=3D1;display_year++;}}result +=3D '</TR>';}var =
current_weekday =3D now.getDay() - this.weekStartDay;if(current_weekday =
< 0){current_weekday +=3D 7;}result +=3D '<TR>\n';result +=3D '	<TD =
COLSPAN=3D7 ALIGN=3DCENTER =
CLASS=3D"'+this.cssPrefix+'cpTodayText">\n';if(this.disabledDatesExpressi=
on!=3D""){var =
ds=3D""+now.getFullYear()+LZ(now.getMonth()+1)+LZ(now.getDate());eval("di=
sabled=3D("+this.disabledDatesExpression+")");}if(disabled || =
this.disabledWeekDays[current_weekday+1]){result +=3D '		<SPAN =
CLASS=3D"'+this.cssPrefix+'cpTodayTextDisabled">'+this.todayText+'</SPAN>=
\n';}else{result +=3D '		<A CLASS=3D"'+this.cssPrefix+'cpTodayText" =
HREF=3D"javascript:'+windowref+this.returnFunction+'(\''+now.getFullYear(=
)+'\',\''+(now.getMonth()+1)+'\',\''+now.getDate()+'\');'+windowref+'CP_h=
ideCalendar(\''+this.index+'\');">'+this.todayText+'</A>\n';}result +=3D =
'		<BR>\n';result +=3D '	=
</TD></TR></TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=3D=3D=
"month" || this.displayType=3D=3D"quarter" || =
this.displayType=3D=3D"year"){if(arguments.length > 0){var year =3D =
arguments[0];}else{if(this.displayType=3D=3D"year"){var year =3D =
now.getFullYear()-this.yearSelectStartOffset;}else{var year =3D =
now.getFullYear();}}if(this.displayType!=3D"year" && =
this.isShowYearNavigation){result +=3D "<TABLE WIDTH=3D144 BORDER=3D0 =
BORDERWIDTH=3D0 CELLSPACING=3D0 CELLPADDING=3D0>";result +=3D =
'<TR>\n';result +=3D '	<TD CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
WIDTH=3D"22"><A CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
HREF=3D"javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year=
-1)+');">&lt;&lt;</A></TD>\n';result +=3D '	<TD =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
WIDTH=3D"100">'+year+'</TD>\n';result +=3D '	<TD =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" WIDTH=3D"22"><A =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
HREF=3D"javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year=
+1)+');">&gt;&gt;</A></TD>\n';result +=3D =
'</TR></TABLE>\n';}}if(this.displayType=3D=3D"month"){result +=3D =
'<TABLE WIDTH=3D120 BORDER=3D0 CELLSPACING=3D1 CELLPADDING=3D0 =
ALIGN=3DCENTER>\n';for(var i=3D0;i<4;i++){result +=3D '<TR>';for(var =
j=3D0;j<3;j++){var monthindex =3D((i*3)+j);result +=3D '<TD WIDTH=3D33% =
ALIGN=3DCENTER><A CLASS=3D"'+this.cssPrefix+'cpText" =
HREF=3D"javascript:'+windowref+this.returnMonthFunction+'('+year+','+(mon=
thindex+1)+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" =
CLASS=3D"'+date_class+'">'+this.monthAbbreviations[monthindex]+'</A></TD>=
';}result +=3D '</TR>';}result +=3D =
'</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=3D=3D"quarte=
r"){result +=3D '<BR><TABLE WIDTH=3D120 BORDER=3D1 CELLSPACING=3D0 =
CELLPADDING=3D0 ALIGN=3DCENTER>\n';for(var i=3D0;i<2;i++){result +=3D =
'<TR>';for(var j=3D0;j<2;j++){var quarter =3D((i*2)+j+1);result +=3D =
'<TD WIDTH=3D50% ALIGN=3DCENTER><BR><A =
CLASS=3D"'+this.cssPrefix+'cpText" =
HREF=3D"javascript:'+windowref+this.returnQuarterFunction+'('+year+','+qu=
arter+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" =
CLASS=3D"'+date_class+'">Q'+quarter+'</A><BR><BR></TD>';}result +=3D =
'</TR>';}result +=3D =
'</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=3D=3D"year")=
{var yearColumnSize =3D 4;result +=3D "<TABLE WIDTH=3D144 BORDER=3D0 =
BORDERWIDTH=3D0 CELLSPACING=3D0 CELLPADDING=3D0>";result +=3D =
'<TR>\n';result +=3D '	<TD CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
WIDTH=3D"50%"><A CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
HREF=3D"javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year=
-(yearColumnSize*2))+');">&lt;&lt;</A></TD>\n';result +=3D '	<TD =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" WIDTH=3D"50%"><A =
CLASS=3D"'+this.cssPrefix+'cpYearNavigation" =
HREF=3D"javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year=
+(yearColumnSize*2))+');">&gt;&gt;</A></TD>\n';result +=3D =
'</TR></TABLE>\n';result +=3D '<TABLE WIDTH=3D120 BORDER=3D0 =
CELLSPACING=3D1 CELLPADDING=3D0 ALIGN=3DCENTER>\n';for(var =
i=3D0;i<yearColumnSize;i++){for(var j=3D0;j<2;j++){var currentyear =3D =
year+(j*yearColumnSize)+i;result +=3D '<TD WIDTH=3D50% ALIGN=3DCENTER><A =
CLASS=3D"'+this.cssPrefix+'cpText" =
HREF=3D"javascript:'+windowref+this.returnYearFunction+'('+currentyear+')=
;'+windowref+'CP_hideCalendar(\''+this.index+'\');" =
CLASS=3D"'+date_class+'">'+currentyear+'</A></TD>';}result +=3D =
'</TR>';}result +=3D =
'</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.type =3D=3D =
"WINDOW"){result +=3D "</BODY></HTML>\n";}return result;}


------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.google-analytics.com/urchin.js

//-- Google Analytics Urchin Module=0A=
//-- Copyright 2007 Google, All Rights Reserved.=0A=
=0A=
//-- Urchin On Demand Settings ONLY=0A=
var _uacct=3D"";			// set up the Urchin Account=0A=
var _userv=3D1;			// service mode (0=3Dlocal,1=3Dremote,2=3Dboth)=0A=
=0A=
//-- UTM User Settings=0A=
var _ufsc=3D1;			// set client info flag (1=3Don|0=3Doff)=0A=
var _udn=3D"auto";		// (auto|none|domain) set the domain name for cookies=0A=
var _uhash=3D"on";		// (on|off) unique domain hash for cookies=0A=
var _utimeout=3D"1800";   	// set the inactive session timeout in seconds=0A=
var _ugifpath=3D"/__utm.gif";	// set the web path to the __utm.gif file=0A=
var _utsp=3D"|";			// transaction field separator=0A=
var _uflash=3D1;			// set flash version detect option (1=3Don|0=3Doff)=0A=
var _utitle=3D1;			// set the document title detect option =
(1=3Don|0=3Doff)=0A=
var _ulink=3D0;			// enable linker functionality (1=3Don|0=3Doff)=0A=
var _uanchor=3D0;			// enable use of anchors for campaign =
(1=3Don|0=3Doff)=0A=
var _utcp=3D"/";			// the cookie path for tracking=0A=
var _usample=3D100;		// The sampling % of visitors to track (1-100).=0A=
=0A=
//-- UTM Campaign Tracking Settings=0A=
var _uctm=3D1;			// set campaign tracking module (1=3Don|0=3Doff)=0A=
var _ucto=3D"15768000";		// set timeout in seconds (6 month default)=0A=
var _uccn=3D"utm_campaign";	// name=0A=
var _ucmd=3D"utm_medium";		// medium (cpc|cpm|link|email|organic)=0A=
var _ucsr=3D"utm_source";		// source=0A=
var _uctr=3D"utm_term";		// term/keyword=0A=
var _ucct=3D"utm_content";	// content=0A=
var _ucid=3D"utm_id";		// id number=0A=
var _ucno=3D"utm_nooverride";	// don't override=0A=
=0A=
//-- Auto/Organic Sources and Keywords=0A=
var _uOsr=3Dnew Array();=0A=
var _uOkw=3Dnew Array();=0A=
_uOsr[0]=3D"google";	_uOkw[0]=3D"q";=0A=
_uOsr[1]=3D"yahoo";	_uOkw[1]=3D"p";=0A=
_uOsr[2]=3D"msn";		_uOkw[2]=3D"q";=0A=
_uOsr[3]=3D"aol";		_uOkw[3]=3D"query";=0A=
_uOsr[4]=3D"aol";		_uOkw[4]=3D"encquery";=0A=
_uOsr[5]=3D"lycos";	_uOkw[5]=3D"query";=0A=
_uOsr[6]=3D"ask";		_uOkw[6]=3D"q";=0A=
_uOsr[7]=3D"altavista";	_uOkw[7]=3D"q";=0A=
_uOsr[8]=3D"netscape";	_uOkw[8]=3D"query";=0A=
_uOsr[9]=3D"cnn";	_uOkw[9]=3D"query";=0A=
_uOsr[10]=3D"looksmart";	_uOkw[10]=3D"qt";=0A=
_uOsr[11]=3D"about";	_uOkw[11]=3D"terms";=0A=
_uOsr[12]=3D"mamma";	_uOkw[12]=3D"query";=0A=
_uOsr[13]=3D"alltheweb";	_uOkw[13]=3D"q";=0A=
_uOsr[14]=3D"gigablast";	_uOkw[14]=3D"q";=0A=
_uOsr[15]=3D"voila";	_uOkw[15]=3D"rdata";=0A=
_uOsr[16]=3D"virgilio";	_uOkw[16]=3D"qs";=0A=
_uOsr[17]=3D"live";	_uOkw[17]=3D"q";=0A=
_uOsr[18]=3D"baidu";	_uOkw[18]=3D"wd";=0A=
_uOsr[19]=3D"alice";	_uOkw[19]=3D"qs";=0A=
_uOsr[20]=3D"yandex";	_uOkw[20]=3D"text";=0A=
_uOsr[21]=3D"najdi";	_uOkw[21]=3D"q";=0A=
_uOsr[22]=3D"aol";	_uOkw[22]=3D"q";=0A=
_uOsr[23]=3D"club-internet"; _uOkw[23]=3D"query";=0A=
_uOsr[24]=3D"mama";	_uOkw[24]=3D"query";=0A=
_uOsr[25]=3D"seznam";	_uOkw[25]=3D"q";=0A=
_uOsr[26]=3D"search";	_uOkw[26]=3D"q";=0A=
_uOsr[27]=3D"wp";	_uOkw[27]=3D"szukaj";=0A=
_uOsr[28]=3D"onet";	_uOkw[28]=3D"qt";=0A=
_uOsr[29]=3D"netsprint";	_uOkw[29]=3D"q";=0A=
_uOsr[30]=3D"google.interia";	_uOkw[30]=3D"q";=0A=
_uOsr[31]=3D"szukacz";	_uOkw[31]=3D"q";=0A=
_uOsr[32]=3D"yam";	_uOkw[32]=3D"k";=0A=
_uOsr[33]=3D"pchome";	_uOkw[33]=3D"q";=0A=
_uOsr[34]=3D"kvasir";	_uOkw[34]=3D"searchExpr";=0A=
_uOsr[35]=3D"sesam";	_uOkw[35]=3D"q";=0A=
_uOsr[36]=3D"ozu"; _uOkw[36]=3D"q";=0A=
_uOsr[37]=3D"terra"; _uOkw[37]=3D"query";=0A=
_uOsr[38]=3D"nostrum"; _uOkw[38]=3D"query";=0A=
_uOsr[39]=3D"mynet"; _uOkw[39]=3D"q";=0A=
_uOsr[40]=3D"ekolay"; _uOkw[40]=3D"q";=0A=
_uOsr[41]=3D"search.ilse"; _uOkw[41]=3D"search_for";=0A=
=0A=
//-- Auto/Organic Keywords to Ignore=0A=
var _uOno=3Dnew Array();=0A=
//_uOno[0]=3D"urchin";=0A=
//_uOno[1]=3D"urchin.com";=0A=
//_uOno[2]=3D"www.urchin.com";=0A=
=0A=
//-- Referral domains to Ignore=0A=
var _uRno=3Dnew Array();=0A=
//_uRno[0]=3D".urchin.com";=0A=
=0A=
//-- **** Don't modify below this point ***=0A=
var =
_uff,_udh,_udt,_ubl=3D0,_udo=3D"",_uu,_ufns=3D0,_uns=3D0,_ur=3D"-",_ufno=3D=
0,_ust=3D0,_ubd=3Ddocument,_udl=3D_ubd.location,_udlh=3D"",_uwv=3D"1.3";=0A=
var _ugifpath2=3D"http://www.google-analytics.com/__utm.gif";=0A=
if (_udl.hash) _udlh=3D_udl.href.substring(_udl.href.indexOf('#'));=0A=
if (_udl.protocol=3D=3D"https:") =
_ugifpath2=3D"https://ssl.google-analytics.com/__utm.gif";=0A=
if (!_utcp || _utcp=3D=3D"") _utcp=3D"/";=0A=
function urchinTracker(page) {=0A=
 if (_udl.protocol=3D=3D"file:") return;=0A=
 if (_uff && (!page || page=3D=3D"")) return;=0A=
 var a,b,c,xx,v,z,k,x=3D"",s=3D"",f=3D0,nv=3D0;=0A=
 var nx=3D" expires=3D"+_uNx()+";";=0A=
 var dc=3D_ubd.cookie;=0A=
 _udh=3D_uDomain();=0A=
 if (!_uVG()) return;=0A=
 _uu=3DMath.round(Math.random()*2147483647);=0A=
 _udt=3Dnew Date();=0A=
 _ust=3DMath.round(_udt.getTime()/1000);=0A=
 a=3Ddc.indexOf("__utma=3D"+_udh+".");=0A=
 b=3Ddc.indexOf("__utmb=3D"+_udh);=0A=
 c=3Ddc.indexOf("__utmc=3D"+_udh);=0A=
 if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A=
 if (_utimeout && _utimeout!=3D"") {=0A=
  x=3Dnew Date(_udt.getTime()+(_utimeout*1000));=0A=
  x=3D" expires=3D"+x.toGMTString()+";";=0A=
 }=0A=
 if (_ulink) {=0A=
  if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A=
  s+=3D_udl.search;=0A=
  if(s && s!=3D"" && s.indexOf("__utma=3D")>=3D0) {=0A=
   if (!(_uIN(a=3D_uGC(s,"__utma=3D","&")))) a=3D"-";=0A=
   if (!(_uIN(b=3D_uGC(s,"__utmb=3D","&")))) b=3D"-";=0A=
   if (!(_uIN(c=3D_uGC(s,"__utmc=3D","&")))) c=3D"-";=0A=
   v=3D_uGC(s,"__utmv=3D","&");=0A=
   z=3D_uGC(s,"__utmz=3D","&");=0A=
   k=3D_uGC(s,"__utmk=3D","&");=0A=
   xx=3D_uGC(s,"__utmx=3D","&");=0A=
   if ((k*1) !=3D ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) =
{_ubl=3D1;a=3D"-";b=3D"-";c=3D"-";xx=3D"-";z=3D"-";v=3D"-";}=0A=
   if (a!=3D"-" && b!=3D"-" && c!=3D"-") f=3D1;=0A=
   else if(a!=3D"-") f=3D2;=0A=
  }=0A=
 }=0A=
 if(f=3D=3D1) {=0A=
  _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A=
  _ubd.cookie=3D"__utmb=3D"+b+"; path=3D"+_utcp+";"+x+_udo;=0A=
  _ubd.cookie=3D"__utmc=3D"+c+"; path=3D"+_utcp+";"+_udo;=0A=
 } else if (f=3D=3D2) {=0A=
  a=3D_uFixA(s,"&",_ust);=0A=
  _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A=
  _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A=
  _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A=
  _ufns=3D1;=0A=
 } else if (a>=3D0 && b>=3D0 && c>=3D0) {=0A=
   b =3D _uGC(dc,"__utmb=3D"+_udh,";");=0A=
   b =3D ("-" =3D=3D b) ? _udh : b;  =0A=
  _ubd.cookie=3D"__utmb=3D"+b+"; path=3D"+_utcp+";"+x+_udo;=0A=
 } else {=0A=
  if (a>=3D0) a=3D_uFixA(_ubd.cookie,";",_ust);=0A=
  else {=0A=
   a=3D_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1";=0A=
   nv=3D1;=0A=
  }=0A=
  _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A=
  _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A=
  _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A=
  _ufns=3D1;=0A=
 }=0A=
 if (_ulink && xx && xx!=3D"" && xx!=3D"-") {=0A=
   xx=3D_uUES(xx);=0A=
   if (xx.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmx=3D"+xx+"; =
path=3D"+_utcp+";"+nx+_udo;=0A=
 }=0A=
 if (_ulink && v && v!=3D"" && v!=3D"-") {=0A=
  v=3D_uUES(v);=0A=
  if (v.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmv=3D"+v+"; =
path=3D"+_utcp+";"+nx+_udo;=0A=
 }=0A=
 var wc=3Dwindow;=0A=
 var c=3D_ubd.cookie;=0A=
 if(wc && wc.gaGlobal && wc.gaGlobal.dh=3D=3D_udh){=0A=
  var g=3Dwc.gaGlobal;=0A=
  var ua=3Dc.split("__utma=3D"+_udh+".")[1].split(";")[0].split(".");=0A=
  if(g.sid)ua[3]=3Dg.sid;=0A=
  if(nv>0){=0A=
   ua[2]=3Dua[3];=0A=
   if(g.vid){=0A=
    var v=3Dg.vid.split(".");=0A=
    ua[0]=3Dv[0];=0A=
    ua[1]=3Dv[1];=0A=
   }=0A=
  }=0A=
  _ubd.cookie=3D"__utma=3D"+_udh+"."+ua.join(".")+"; =
path=3D"+_utcp+";"+nx+_udo;=0A=
 }=0A=
 _uInfo(page);=0A=
 _ufns=3D0;=0A=
 _ufno=3D0;=0A=
 if (!page || page=3D=3D"") _uff=3D1;=0A=
}=0A=
function _uGH() {=0A=
 var hid;=0A=
 var wc=3Dwindow;=0A=
 if (wc && wc.gaGlobal && wc.gaGlobal.hid) {=0A=
  hid=3Dwc.gaGlobal.hid;=0A=
 } else {=0A=
  hid=3DMath.round(Math.random()*0x7fffffff);=0A=
  if (!wc.gaGlobal) wc.gaGlobal=3D{};=0A=
  wc.gaGlobal.hid=3Dhid;=0A=
 }=0A=
 return hid;=0A=
}=0A=
function _uInfo(page) {=0A=
 var p,s=3D"",dm=3D"",pg=3D_udl.pathname+_udl.search;=0A=
 if (page && page!=3D"") pg=3D_uES(page,1);=0A=
 _ur=3D_ubd.referrer;=0A=
 if (!_ur || _ur=3D=3D"") { _ur=3D"-"; }=0A=
 else {=0A=
  dm=3D_ubd.domain;=0A=
  if(_utcp && _utcp!=3D"/") dm+=3D_utcp;=0A=
  p=3D_ur.indexOf(dm);=0A=
  if ((p>=3D0) && (p<=3D8)) { _ur=3D"0"; }=0A=
  if (_ur.indexOf("[")=3D=3D0 && =
_ur.lastIndexOf("]")=3D=3D(_ur.length-1)) { _ur=3D"-"; }=0A=
 }=0A=
 s+=3D"&utmn=3D"+_uu;=0A=
 if (_ufsc) s+=3D_uBInfo();=0A=
 if (_uctm) s+=3D_uCInfo();=0A=
 if (_utitle && _ubd.title && _ubd.title!=3D"") =
s+=3D"&utmdt=3D"+_uES(_ubd.title);=0A=
 if (_udl.hostname && _udl.hostname!=3D"") =
s+=3D"&utmhn=3D"+_uES(_udl.hostname);=0A=
 if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A=
 s+=3D"&utmhid=3D"+_uGH();=0A=
 s+=3D"&utmr=3D"+_ur;=0A=
 s+=3D"&utmp=3D"+pg;=0A=
 if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A=
  var i=3Dnew Image(1,1);=0A=
  i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A=
  i.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
 if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A=
  var i2=3Dnew Image(1,1);=0A=
  =
i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+=
_uGCS();=0A=
  i2.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
 return;=0A=
}=0A=
function _uVoid() { return; }=0A=
function _uCInfo() {=0A=
 if (!_ucto || _ucto=3D=3D"") { _ucto=3D"15768000"; }=0A=
 if (!_uVG()) return;=0A=
 var =
c=3D"",t=3D"-",t2=3D"-",t3=3D"-",o=3D0,cs=3D0,cn=3D0,i=3D0,z=3D"-",s=3D""=
;=0A=
 if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A=
 s+=3D_udl.search;=0A=
 var x=3Dnew Date(_udt.getTime()+(_ucto*1000));=0A=
 var dc=3D_ubd.cookie;=0A=
 x=3D" expires=3D"+x.toGMTString()+";";=0A=
 if (_ulink && !_ubl) {=0A=
  z=3D_uUES(_uGC(s,"__utmz=3D","&"));=0A=
  if (z!=3D"-" && z.indexOf(";")=3D=3D-1) { =
_ubd.cookie=3D"__utmz=3D"+z+"; path=3D"+_utcp+";"+x+_udo; return ""; }=0A=
 }=0A=
 z=3Ddc.indexOf("__utmz=3D"+_udh+".");=0A=
 if (z>-1) { z=3D_uGC(dc,"__utmz=3D"+_udh+".",";"); }=0A=
 else { z=3D"-"; }=0A=
 t=3D_uGC(s,_ucid+"=3D","&");=0A=
 t2=3D_uGC(s,_ucsr+"=3D","&");=0A=
 t3=3D_uGC(s,"gclid=3D","&");=0A=
 if ((t!=3D"-" && t!=3D"") || (t2!=3D"-" && t2!=3D"") || (t3!=3D"-" && =
t3!=3D"")) {=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"utmcid=3D"+_uEC(t);=0A=
  if (t2!=3D"-" && t2!=3D"") { if (c !=3D "") c+=3D"|"; =
c+=3D"utmcsr=3D"+_uEC(t2); }=0A=
  if (t3!=3D"-" && t3!=3D"") { if (c !=3D "") c+=3D"|"; =
c+=3D"utmgclid=3D"+_uEC(t3); }=0A=
  t=3D_uGC(s,_uccn+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmccn=3D"+_uEC(t);=0A=
  else c+=3D"|utmccn=3D(not+set)";=0A=
  t=3D_uGC(s,_ucmd+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmcmd=3D"+_uEC(t);=0A=
  else  c+=3D"|utmcmd=3D(not+set)";=0A=
  t=3D_uGC(s,_uctr+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmctr=3D"+_uEC(t);=0A=
  else { t=3D_uOrg(1); if (t!=3D"-" && t!=3D"") =
c+=3D"|utmctr=3D"+_uEC(t); }=0A=
  t=3D_uGC(s,_ucct+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmcct=3D"+_uEC(t);=0A=
  t=3D_uGC(s,_ucno+"=3D","&");=0A=
  if (t=3D=3D"1") o=3D1;=0A=
  if (z!=3D"-" && o=3D=3D1) return "";=0A=
 }=0A=
 if (c=3D=3D"-" || c=3D=3D"") { c=3D_uOrg(); if (z!=3D"-" && =
_ufno=3D=3D1)  return ""; }=0A=
 if (c=3D=3D"-" || c=3D=3D"") { if (_ufns=3D=3D1)  c=3D_uRef(); if =
(z!=3D"-" && _ufno=3D=3D1)  return ""; }=0A=
 if (c=3D=3D"-" || c=3D=3D"") {=0A=
  if (z=3D=3D"-" && _ufns=3D=3D1) { =
c=3D"utmccn=3D(direct)|utmcsr=3D(direct)|utmcmd=3D(none)"; }=0A=
  if (c=3D=3D"-" || c=3D=3D"") return "";=0A=
 }=0A=
 if (z!=3D"-") {=0A=
  i=3Dz.indexOf(".");=0A=
  if (i>-1) i=3Dz.indexOf(".",i+1);=0A=
  if (i>-1) i=3Dz.indexOf(".",i+1);=0A=
  if (i>-1) i=3Dz.indexOf(".",i+1);=0A=
  t=3Dz.substring(i+1,z.length);=0A=
  if (t.toLowerCase()=3D=3Dc.toLowerCase()) cs=3D1;=0A=
  t=3Dz.substring(0,i);=0A=
  if ((i=3Dt.lastIndexOf(".")) > -1) {=0A=
   t=3Dt.substring(i+1,t.length);=0A=
   cn=3D(t*1);=0A=
  }=0A=
 }=0A=
 if (cs=3D=3D0 || _ufns=3D=3D1) {=0A=
  t=3D_uGC(dc,"__utma=3D"+_udh+".",";");=0A=
  if ((i=3Dt.lastIndexOf(".")) > 9) {=0A=
   _uns=3Dt.substring(i+1,t.length);=0A=
   _uns=3D(_uns*1);=0A=
  }=0A=
  cn++;=0A=
  if (_uns=3D=3D0) _uns=3D1;=0A=
  _ubd.cookie=3D"__utmz=3D"+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; =
path=3D"+_utcp+"; "+x+_udo;=0A=
 }=0A=
 if (cs=3D=3D0 || _ufns=3D=3D1) return "&utmcn=3D1";=0A=
 else return "&utmcr=3D1";=0A=
}=0A=
function _uRef() {=0A=
 if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A=
 var i=3D0,h,k,n;=0A=
 if ((i=3D_ur.indexOf("://"))<0 || _uGCse()) return "";=0A=
 h=3D_ur.substring(i+3,_ur.length);=0A=
 if (h.indexOf("/") > -1) {=0A=
  k=3Dh.substring(h.indexOf("/"),h.length);=0A=
  if (k.indexOf("?") > -1) k=3Dk.substring(0,k.indexOf("?"));=0A=
  h=3Dh.substring(0,h.indexOf("/"));=0A=
 }=0A=
 h=3Dh.toLowerCase();=0A=
 n=3Dh;=0A=
 if ((i=3Dn.indexOf(":")) > -1) n=3Dn.substring(0,i);=0A=
 for (var ii=3D0;ii<_uRno.length;ii++) {=0A=
  if ((i=3Dn.indexOf(_uRno[ii].toLowerCase())) > -1 && =
n.length=3D=3D(i+_uRno[ii].length)) { _ufno=3D1; break; }=0A=
 }=0A=
 if (h.indexOf("www.")=3D=3D0) h=3Dh.substring(4,h.length);=0A=
 return =
"utmccn=3D(referral)|utmcsr=3D"+_uEC(h)+"|"+"utmcct=3D"+_uEC(k)+"|utmcmd=3D=
referral";=0A=
}=0A=
function _uOrg(t) {=0A=
 if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A=
 var i=3D0,h,k;=0A=
 if ((i=3D_ur.indexOf("://"))<0 || _uGCse()) return "";=0A=
 h=3D_ur.substring(i+3,_ur.length);=0A=
 if (h.indexOf("/") > -1) {=0A=
  h=3Dh.substring(0,h.indexOf("/"));=0A=
 }=0A=
 for (var ii=3D0;ii<_uOsr.length;ii++) {=0A=
  if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) {=0A=
   if ((i=3D_ur.indexOf("?"+_uOkw[ii]+"=3D")) > -1 || =
(i=3D_ur.indexOf("&"+_uOkw[ii]+"=3D")) > -1) {=0A=
    k=3D_ur.substring(i+_uOkw[ii].length+2,_ur.length);=0A=
    if ((i=3Dk.indexOf("&")) > -1) k=3Dk.substring(0,i);=0A=
    for (var yy=3D0;yy<_uOno.length;yy++) {=0A=
     if (_uOno[yy].toLowerCase()=3D=3Dk.toLowerCase()) { _ufno=3D1; =
break; }=0A=
    }=0A=
    if (t) return _uEC(k);=0A=
    else return =
"utmccn=3D(organic)|utmcsr=3D"+_uEC(_uOsr[ii])+"|"+"utmctr=3D"+_uEC(k)+"|=
utmcmd=3Dorganic";=0A=
   }=0A=
  }=0A=
 }=0A=
 return "";=0A=
}=0A=
function _uGCse() {=0A=
 var h,p;=0A=
 h=3Dp=3D_ur.split("://")[1];=0A=
 if(h.indexOf("/")>-1) {=0A=
  h=3Dh.split("/")[0];=0A=
  p=3Dp.substring(p.indexOf("/")+1,p.length);=0A=
 }=0A=
 if(p.indexOf("?")>-1) {=0A=
  p=3Dp.split("?")[0];=0A=
 }=0A=
 if(h.toLowerCase().indexOf("google")>-1) {=0A=
  if(_ur.indexOf("?q=3D")>-1 || _ur.indexOf("&q=3D")>-1) {=0A=
   if (p.toLowerCase().indexOf("cse")>-1) {=0A=
    return true;=0A=
   }=0A=
  }=0A=
 }=0A=
}=0A=
function _uBInfo() {=0A=
 var sr=3D"-",sc=3D"-",ul=3D"-",fl=3D"-",cs=3D"-",je=3D1;=0A=
 var n=3Dnavigator;=0A=
 if (self.screen) {=0A=
  sr=3Dscreen.width+"x"+screen.height;=0A=
  sc=3Dscreen.colorDepth+"-bit";=0A=
 } else if (self.java) {=0A=
  var j=3Djava.awt.Toolkit.getDefaultToolkit();=0A=
  var s=3Dj.getScreenSize();=0A=
  sr=3Ds.width+"x"+s.height;=0A=
 }=0A=
 if (n.language) { ul=3Dn.language.toLowerCase(); }=0A=
 else if (n.browserLanguage) { ul=3Dn.browserLanguage.toLowerCase(); }=0A=
 je=3Dn.javaEnabled()?1:0;=0A=
 if (_uflash) fl=3D_uFlash();=0A=
 if (_ubd.characterSet) cs=3D_uES(_ubd.characterSet);=0A=
 else if (_ubd.charset) cs=3D_uES(_ubd.charset);=0A=
 return =
"&utmcs=3D"+cs+"&utmsr=3D"+sr+"&utmsc=3D"+sc+"&utmul=3D"+ul+"&utmje=3D"+j=
e+"&utmfl=3D"+fl;=0A=
}=0A=
function __utmSetTrans() {=0A=
 var e;=0A=
 if (_ubd.getElementById) e=3D_ubd.getElementById("utmtrans");=0A=
 else if (_ubd.utmform && _ubd.utmform.utmtrans) =
e=3D_ubd.utmform.utmtrans;=0A=
 if (!e) return;=0A=
 var l=3De.value.split("UTM:");=0A=
 var i,i2,c;=0A=
 if (_userv=3D=3D0 || _userv=3D=3D2) i=3Dnew Array();=0A=
 if (_userv=3D=3D1 || _userv=3D=3D2) { i2=3Dnew Array(); c=3D_uGCS(); }=0A=
=0A=
 for (var ii=3D0;ii<l.length;ii++) {=0A=
  l[ii]=3D_uTrim(l[ii]);=0A=
  if (l[ii].charAt(0)!=3D'T' && l[ii].charAt(0)!=3D'I') continue;=0A=
  var r=3DMath.round(Math.random()*2147483647);=0A=
  if (!_utsp || _utsp=3D=3D"") _utsp=3D"|";=0A=
  var f=3Dl[ii].split(_utsp),s=3D"";=0A=
  if (f[0].charAt(0)=3D=3D'T') {=0A=
   s=3D"&utmt=3Dtran"+"&utmn=3D"+r;=0A=
   f[1]=3D_uTrim(f[1]); if(f[1]&&f[1]!=3D"") =
s+=3D"&utmtid=3D"+_uES(f[1]);=0A=
   f[2]=3D_uTrim(f[2]); if(f[2]&&f[2]!=3D"") =
s+=3D"&utmtst=3D"+_uES(f[2]);=0A=
   f[3]=3D_uTrim(f[3]); if(f[3]&&f[3]!=3D"") =
s+=3D"&utmtto=3D"+_uES(f[3]);=0A=
   f[4]=3D_uTrim(f[4]); if(f[4]&&f[4]!=3D"") =
s+=3D"&utmttx=3D"+_uES(f[4]);=0A=
   f[5]=3D_uTrim(f[5]); if(f[5]&&f[5]!=3D"") =
s+=3D"&utmtsp=3D"+_uES(f[5]);=0A=
   f[6]=3D_uTrim(f[6]); if(f[6]&&f[6]!=3D"") =
s+=3D"&utmtci=3D"+_uES(f[6]);=0A=
   f[7]=3D_uTrim(f[7]); if(f[7]&&f[7]!=3D"") =
s+=3D"&utmtrg=3D"+_uES(f[7]);=0A=
   f[8]=3D_uTrim(f[8]); if(f[8]&&f[8]!=3D"") =
s+=3D"&utmtco=3D"+_uES(f[8]);=0A=
  } else {=0A=
   s=3D"&utmt=3Ditem"+"&utmn=3D"+r;=0A=
   f[1]=3D_uTrim(f[1]); if(f[1]&&f[1]!=3D"") =
s+=3D"&utmtid=3D"+_uES(f[1]);=0A=
   f[2]=3D_uTrim(f[2]); if(f[2]&&f[2]!=3D"") =
s+=3D"&utmipc=3D"+_uES(f[2]);=0A=
   f[3]=3D_uTrim(f[3]); if(f[3]&&f[3]!=3D"") =
s+=3D"&utmipn=3D"+_uES(f[3]);=0A=
   f[4]=3D_uTrim(f[4]); if(f[4]&&f[4]!=3D"") =
s+=3D"&utmiva=3D"+_uES(f[4]);=0A=
   f[5]=3D_uTrim(f[5]); if(f[5]&&f[5]!=3D"") =
s+=3D"&utmipr=3D"+_uES(f[5]);=0A=
   f[6]=3D_uTrim(f[6]); if(f[6]&&f[6]!=3D"") =
s+=3D"&utmiqt=3D"+_uES(f[6]);=0A=
  }=0A=
  if (_udl.hostname && _udl.hostname!=3D"") =
s+=3D"&utmhn=3D"+_uES(_udl.hostname);=0A=
  if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A=
=0A=
  if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A=
   i[ii]=3Dnew Image(1,1);=0A=
   i[ii].src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A=
   i[ii].onload=3Dfunction() { _uVoid(); }=0A=
  }=0A=
  if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A=
   i2[ii]=3Dnew Image(1,1);=0A=
   =
i2[ii].src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D=
"+c;=0A=
   i2[ii].onload=3Dfunction() { _uVoid(); }=0A=
  }=0A=
 }=0A=
 return;=0A=
}=0A=
function _uFlash() {=0A=
 var f=3D"-",n=3Dnavigator;=0A=
 if (n.plugins && n.plugins.length) {=0A=
  for (var ii=3D0;ii<n.plugins.length;ii++) {=0A=
   if (n.plugins[ii].name.indexOf('Shockwave Flash')!=3D-1) {=0A=
    f=3Dn.plugins[ii].description.split('Shockwave Flash ')[1];=0A=
    break;=0A=
   }=0A=
  }=0A=
 } else {=0A=
  var fl;=0A=
  try {=0A=
   fl =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");=0A=
   f =3D fl.GetVariable("$version");=0A=
  } catch(e) {}=0A=
  if (f =3D=3D "-") {=0A=
   try {=0A=
    fl =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");=0A=
    f =3D "WIN 6,0,21,0";=0A=
    fl.AllowScriptAccess =3D "always";=0A=
    f =3D fl.GetVariable("$version");=0A=
   } catch(e) {}=0A=
  }=0A=
  if (f =3D=3D "-") {=0A=
   try {=0A=
    fl =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash");=0A=
    f =3D fl.GetVariable("$version");=0A=
   } catch(e) {}=0A=
  }=0A=
  if (f !=3D "-") {=0A=
   f =3D f.split(" ")[1].split(",");=0A=
   f =3D f[0] + "." + f[1] + " r" + f[2];=0A=
  }=0A=
 }=0A=
 return f;=0A=
}=0A=
function __utmLinkerUrl(l,h) {=0A=
 var p,k,a=3D"-",b=3D"-",c=3D"-",x=3D"-",z=3D"-",v=3D"-";=0A=
 var dc=3D_ubd.cookie;=0A=
 var iq =3D l.indexOf("?");=0A=
 var ih =3D l.indexOf("#");=0A=
 var url=3Dl;=0A=
 if (dc) {=0A=
  a=3D_uES(_uGC(dc,"__utma=3D"+_udh+".",";"));=0A=
  b=3D_uES(_uGC(dc,"__utmb=3D"+_udh,";"));=0A=
  c=3D_uES(_uGC(dc,"__utmc=3D"+_udh,";"));=0A=
  x=3D_uES(_uGC(dc,"__utmx=3D"+_udh,";"));=0A=
  z=3D_uES(_uGC(dc,"__utmz=3D"+_udh+".",";"));=0A=
  v=3D_uES(_uGC(dc,"__utmv=3D"+_udh+".",";"));=0A=
  k=3D(_uHash(a+b+c+x+z+v)*1)+(_udh*1);=0A=
  =
p=3D"__utma=3D"+a+"&__utmb=3D"+b+"&__utmc=3D"+c+"&__utmx=3D"+x+"&__utmz=3D=
"+z+"&__utmv=3D"+v+"&__utmk=3D"+k;=0A=
 }=0A=
 if (p) {=0A=
  if (h && ih>-1) return;=0A=
  if (h) { url=3Dl+"#"+p; }=0A=
  else {=0A=
   if (iq=3D=3D-1 && ih=3D=3D-1) url=3Dl+"?"+p;=0A=
   else if (ih=3D=3D-1) url=3Dl+"&"+p;=0A=
   else if (iq=3D=3D-1) url=3Dl.substring(0,ih-1)+"?"+p+l.substring(ih);=0A=
   else url=3Dl.substring(0,ih-1)+"&"+p+l.substring(ih);=0A=
  }=0A=
 }=0A=
 return url;=0A=
}=0A=
function __utmLinker(l,h) {=0A=
 if (!_ulink || !l || l=3D=3D"") return;=0A=
 _udl.href=3D__utmLinkerUrl(l,h);=0A=
}=0A=
function __utmLinkPost(f,h) {=0A=
 if (!_ulink || !f || !f.action) return;=0A=
 f.action=3D__utmLinkerUrl(f.action, h);=0A=
 return;=0A=
}=0A=
function __utmSetVar(v) {=0A=
 if (!v || v=3D=3D"") return;=0A=
 if (!_udo || _udo =3D=3D "") {=0A=
  _udh=3D_uDomain();=0A=
  if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A=
 }=0A=
 if (!_uVG()) return;=0A=
 var r=3DMath.round(Math.random() * 2147483647);=0A=
 _ubd.cookie=3D"__utmv=3D"+_udh+"."+_uES(v)+"; path=3D"+_utcp+"; =
expires=3D"+_uNx()+";"+_udo;=0A=
 var s=3D"&utmt=3Dvar&utmn=3D"+r;=0A=
 if (_usample && _usample !=3D 100) s+=3D"&utmsp=3D"+_uES(_usample);=0A=
 if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A=
  var i=3Dnew Image(1,1);=0A=
  i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A=
  i.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
 if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A=
  var i2=3Dnew Image(1,1);=0A=
  =
i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+=
_uGCS();=0A=
  i2.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
}=0A=
function _uGCS() {=0A=
 var t,c=3D"",dc=3D_ubd.cookie;=0A=
 if ((t=3D_uGC(dc,"__utma=3D"+_udh+".",";"))!=3D"-") =
c+=3D_uES("__utma=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmx=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmx=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmz=3D"+_udh+".",";"))!=3D"-") =
c+=3D_uES("__utmz=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmv=3D"+_udh+".",";"))!=3D"-") =
c+=3D_uES("__utmv=3D"+t+";");=0A=
 if (c.charAt(c.length-1)=3D=3D"+") c=3Dc.substring(0,c.length-1);=0A=
 return c;=0A=
}=0A=
function _uGC(l,n,s) {=0A=
 if (!l || l=3D=3D"" || !n || n=3D=3D"" || !s || s=3D=3D"") return "-";=0A=
 var i,i2,i3,c=3D"-";=0A=
 i=3Dl.indexOf(n);=0A=
 i3=3Dn.indexOf("=3D")+1;=0A=
 if (i > -1) {=0A=
  i2=3Dl.indexOf(s,i); if (i2 < 0) { i2=3Dl.length; }=0A=
  c=3Dl.substring((i+i3),i2);=0A=
 }=0A=
 return c;=0A=
}=0A=
function _uDomain() {=0A=
 if (!_udn || _udn=3D=3D"" || _udn=3D=3D"none") { _udn=3D""; return 1; }=0A=
 if (_udn=3D=3D"auto") {=0A=
  var d=3D_ubd.domain;=0A=
  if (d.substring(0,4)=3D=3D"www.") {=0A=
   d=3Dd.substring(4,d.length);=0A=
  }=0A=
  _udn=3Dd;=0A=
 }=0A=
 _udn =3D _udn.toLowerCase(); =0A=
 if (_uhash=3D=3D"off") return 1;=0A=
 return _uHash(_udn);=0A=
}=0A=
function _uHash(d) {=0A=
 if (!d || d=3D=3D"") return 1;=0A=
 var h=3D0,g=3D0;=0A=
 for (var i=3Dd.length-1;i>=3D0;i--) {=0A=
  var c=3DparseInt(d.charCodeAt(i));=0A=
  h=3D((h << 6) & 0xfffffff) + c + (c << 14);=0A=
  if ((g=3Dh & 0xfe00000)!=3D0) h=3D(h ^ (g >> 21));=0A=
 }=0A=
 return h;=0A=
}=0A=
function _uFixA(c,s,t) {=0A=
 if (!c || c=3D=3D"" || !s || s=3D=3D"" || !t || t=3D=3D"") return "-";=0A=
 var a=3D_uGC(c,"__utma=3D"+_udh+".",s);=0A=
 var lt=3D0,i=3D0;=0A=
 if ((i=3Da.lastIndexOf(".")) > 9) {=0A=
  _uns=3Da.substring(i+1,a.length);=0A=
  _uns=3D(_uns*1)+1;=0A=
  a=3Da.substring(0,i);=0A=
  if ((i=3Da.lastIndexOf(".")) > 7) {=0A=
   lt=3Da.substring(i+1,a.length);=0A=
   a=3Da.substring(0,i);=0A=
  }=0A=
  if ((i=3Da.lastIndexOf(".")) > 5) {=0A=
   a=3Da.substring(0,i);=0A=
  }=0A=
  a+=3D"."+lt+"."+t+"."+_uns;=0A=
 }=0A=
 return a;=0A=
}=0A=
function _uTrim(s) {=0A=
  if (!s || s=3D=3D"") return "";=0A=
  while ((s.charAt(0)=3D=3D' ') || (s.charAt(0)=3D=3D'\n') || =
(s.charAt(0,1)=3D=3D'\r')) s=3Ds.substring(1,s.length);=0A=
  while ((s.charAt(s.length-1)=3D=3D' ') || =
(s.charAt(s.length-1)=3D=3D'\n') || (s.charAt(s.length-1)=3D=3D'\r')) =
s=3Ds.substring(0,s.length-1);=0A=
  return s;=0A=
}=0A=
function _uEC(s) {=0A=
  var n=3D"";=0A=
  if (!s || s=3D=3D"") return "";=0A=
  for (var i=3D0;i<s.length;i++) {if (s.charAt(i)=3D=3D" ") n+=3D"+"; =
else n+=3Ds.charAt(i);}=0A=
  return n;=0A=
}=0A=
function __utmVisitorCode(f) {=0A=
 var r=3D0,t=3D0,i=3D0,i2=3D0,m=3D31;=0A=
 var a=3D_uGC(_ubd.cookie,"__utma=3D"+_udh+".",";");=0A=
 if ((i=3Da.indexOf(".",0))<0) return;=0A=
 if ((i2=3Da.indexOf(".",i+1))>0) r=3Da.substring(i+1,i2); else return =
"";  =0A=
 if ((i=3Da.indexOf(".",i2+1))>0) t=3Da.substring(i2+1,i); else return =
"";  =0A=
 if (f) {=0A=
  return r;=0A=
 } else {=0A=
  var c=3Dnew =
Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T'=
,'U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9');=0A=
  return =
c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r=
&7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5=
&m]+c[t&m];=0A=
 }=0A=
}=0A=
function _uIN(n) {=0A=
 if (!n) return false;=0A=
 for (var i=3D0;i<n.length;i++) {=0A=
  var c=3Dn.charAt(i);=0A=
  if ((c<"0" || c>"9") && (c!=3D".")) return false;=0A=
 }=0A=
 return true;=0A=
}=0A=
function _uES(s,u) {=0A=
 if (typeof(encodeURIComponent) =3D=3D 'function') {=0A=
  if (u) return encodeURI(s);=0A=
  else return encodeURIComponent(s);=0A=
 } else {=0A=
  return escape(s);=0A=
 }=0A=
}=0A=
function _uUES(s) {=0A=
 if (typeof(decodeURIComponent) =3D=3D 'function') {=0A=
  return decodeURIComponent(s);=0A=
 } else {=0A=
  return unescape(s);=0A=
 }=0A=
}=0A=
function _uVG() {=0A=
 if((_udn.indexOf("www.google.") =3D=3D 0 || _udn.indexOf(".google.") =
=3D=3D 0 || _udn.indexOf("google.") =3D=3D 0) && _utcp=3D=3D'/' && =
_udn.indexOf("google.org")=3D=3D-1) {=0A=
  return false;=0A=
 }=0A=
 return true;=0A=
}=0A=
function _uSP() {=0A=
 var s=3D100;=0A=
 if (_usample) s=3D_usample;=0A=
 if(s>=3D100 || s<=3D0) return true;=0A=
 return ((__utmVisitorCode(1)%10000)<(s*100));=0A=
}=0A=
function urchinPathCopy(p){=0A=
 var d=3Ddocument,nx,tx,sx,i,c,cs,t,h,o;=0A=
 cs=3Dnew Array("a","b","c","v","x","z");=0A=
 h=3D_uDomain(); if (_udn && _udn!=3D"") o=3D" domain=3D"+_udn+";";=0A=
 nx=3D_uNx()+";";=0A=
 tx=3Dnew Date(); tx.setTime(tx.getTime()+(_utimeout*1000));=0A=
 tx=3Dtx.toGMTString()+";";=0A=
 sx=3Dnew Date(); sx.setTime(sx.getTime()+(_ucto*1000));=0A=
 sx=3Dsx.toGMTString()+";";=0A=
 for (i=3D0;i<6;i++){=0A=
  t=3D" expires=3D";=0A=
  if (i=3D=3D1) t+=3Dtx; else if (i=3D=3D2) t=3D""; else if (i=3D=3D5) =
t+=3Dsx; else t+=3Dnx;=0A=
  c=3D_uGC(d.cookie,"__utm"+cs[i]+"=3D"+h,";");=0A=
  if (c!=3D"-") d.cookie=3D"__utm"+cs[i]+"=3D"+c+"; path=3D"+p+";"+t+o;=0A=
 }=0A=
}=0A=
function _uCO() {=0A=
 if (!_utk || _utk=3D=3D"" || _utk.length<10) return;=0A=
 var d=3D'www.google.com';=0A=
 if (_utk.charAt(0)=3D=3D'!') d=3D'analytics.corp.google.com';=0A=
 _ubd.cookie=3D"GASO=3D"+_utk+"; path=3D"+_utcp+";"+_udo;=0A=
 var sc=3Ddocument.createElement('script');=0A=
 sc.type=3D'text/javascript';=0A=
 sc.id=3D"_gasojs";=0A=
 =
sc.src=3D'https://'+d+'/analytics/reporting/overlay_js?gaso=3D'+_utk+'&'+=
Math.random();=0A=
 document.getElementsByTagName('head')[0].appendChild(sc);  =0A=
}=0A=
function _uGT() {=0A=
 var h=3Dlocation.hash, a;=0A=
 if (h && h!=3D"" && h.indexOf("#gaso=3D")=3D=3D0) {=0A=
  a=3D_uGC(h,"gaso=3D","&");=0A=
 } else {=0A=
  a=3D_uGC(_ubd.cookie,"GASO=3D",";");=0A=
 }=0A=
 return a;=0A=
}=0A=
var _utk=3D_uGT();=0A=
if (_utk && _utk!=3D"" && _utk.length>10 && _utk.indexOf("=3D")=3D=3D-1) =
{=0A=
 if (window.addEventListener) {=0A=
  window.addEventListener('load', _uCO, false); =0A=
 } else if (window.attachEvent) { =0A=
  window.attachEvent('onload', _uCO);=0A=
 }=0A=
}=0A=
=0A=
function _uNx() {=0A=
  return (new Date((new Date()).getTime()+63072000000)).toGMTString();=0A=
}=0A=

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js

(function(){=0A=
var g=3Dfalse,l=3Dnull,m=3Dtrue,n=3D(new Date).getTime();function =
aa(a,b){var c=3DparseFloat(a);return isNaN(c)||c>1||c<0?b:c}function =
o(a,b){var c=3D/^([\w-]+\.)+[\w-]{2,}(\:[0-9]+)?$/;return =
c.test(a)?a:b};var =
ba=3D"pagead2.googlesyndication.com",ca=3D"googleads.g.doubleclick.net",d=
a=3D"partner.googleadservices.com",ea=3Do("pagead2.googlesyndication.com"=
,ba),fa=3Do("googleads.g.doubleclick.net",ca),ga=3Do("pagead2.googlesyndi=
cation.com",ba),ka=3Do("partner.googleadservices.com",da);var =
la=3D{google_ad_channel:"channel",google_ad_host:"host",google_ad_host_ch=
annel:"h_ch",google_ad_host_tier_id:"ht_id",google_ad_region:"region",goo=
gle_ad_section:"region",google_ad_type:"ad_type",google_adtest:"adtest",g=
oogle_allow_expandable_ads:"ea",google_alternate_ad_url:"alternate_ad_url=
",google_alternate_color:"alt_color",google_bid:"bid",google_city:"gcs",g=
oogle_color_bg:"color_bg",google_color_border:"color_border",google_color=
_line:"color_line",google_color_link:"color_link",google_color_text:"colo=
r_text",=0A=
google_color_url:"color_url",google_contents:"contents",google_country:"g=
l",google_cust_age:"cust_age",google_cust_ch:"cust_ch",google_cust_gender=
:"cust_gender",google_cust_id:"cust_id",google_cust_interests:"cust_inter=
ests",google_cust_job:"cust_job",google_cust_l:"cust_l",google_cust_lh:"c=
ust_lh",google_cust_u_url:"cust_u_url",google_disable_video_autoplay:"dis=
able_video_autoplay",google_ed:"ed",google_encoding:"oe",google_feedback:=
"feedback_link",google_flash_version:"flash",google_font_face:"f",=0A=
google_gl:"gl",google_hints:"hints",google_kw:"kw",google_kw_type:"kw_typ=
e",google_language:"hl",google_page_url:"url",google_referrer_url:"ref",g=
oogle_region:"gr",google_reuse_colors:"reuse_colors",google_safe:"adsafe"=
,google_tag_info:"gut",google_targeting:"targeting",google_ui_features:"u=
i",google_ui_version:"uiv",google_video_doc_id:"video_doc_id",google_vide=
o_product_type:"video_product_type"},ma=3D{google_ad_format:"format",goog=
le_ad_output:"output",google_ad_callback:"callback",google_ad_override:"g=
oogle_ad_override",=0A=
google_ad_slot:"slotname",google_analytics_uacct:"ga_wpids",google_correl=
ator:"correlator",google_cpa_choice:"cpa_choice",google_ctr_threshold:"ct=
r_t",google_image_size:"image_size",google_last_modified_time:"lmt",googl=
e_max_num_ads:"num_ads",google_max_radlink_len:"max_radlink_len",google_n=
um_radlinks:"num_radlinks",google_num_radlinks_per_unit:"num_radlinks_per=
_unit",google_only_ads_with_video:"only_ads_with_video",google_page_locat=
ion:"loc",google_rl_dest_url:"rl_dest_url",google_rl_filtering:"rl_filter=
ing",=0A=
google_rl_mode:"rl_mode",google_rt:"rt",google_skip:"skip"},na=3D{google_=
only_pyv_ads:"pyv"};function p(a){return =
la[a]||ma[a]||na[a]||l};document.URL.indexOf("?google_debug")>0||document=
.URL.indexOf("&google_debug")>0;function =
q(){this.b=3Dthis.n();this.g=3Dg;if(!this.b)this.g=3Dthis.h()}q.prototype=
.e=3D"__gads=3D";q.prototype.c=3D"GoogleAdServingTest=3D";q.prototype.l=3D=
function(){return =
this.b};q.prototype.setCookieInfo=3Dfunction(a){this.a=3Da._cookies_[0];i=
f(this.a!=3Dl){this.b=3Dthis.a._value_;this.o()}};q.prototype.j=3Dfunctio=
n(a){var b=3D(new Date).valueOf(),c=3Dnew Date;c.setTime(b+a);return =
c};var =
oa=3D"http://"+ka+"/gampad/cookie.js?callback=3D_GA_googleCookieHelper.se=
tCookieInfo";=0A=
q.prototype.i=3Dfunction(a){if(!(this.b||!this.g)){var =
b=3D"script",c=3Ddocument.domain,d=3Doa+"&client=3D"+r(a)+"&domain=3D"+r(=
c);document.write("<"+b+' =
src=3D"'+d+'"></'+b+">")}};q.prototype.h=3Dfunction(){document.cookie=3Dt=
his.c+"Good";var a=3Dthis.f(this.c),b=3Da=3D=3D"Good";if(b){var =
c=3Dthis.j(-1);document.cookie=3Dthis.c+"; =
expires=3D"+c.toGMTString()}return b};q.prototype.n=3Dfunction(){var =
a=3Dthis.f(this.e);return a};=0A=
q.prototype.f=3Dfunction(a){var =
b=3Ddocument.cookie,c=3Db.indexOf(a),d=3D"";if(c!=3D-1){var =
e=3Dc+a.length,f=3Db.indexOf(";",e);if(f=3D=3D-1)f=3Db.length;d=3Db.subst=
ring(e,f)}return =
d};q.prototype.o=3Dfunction(){if(!(this.a=3D=3Dl))if(this.b){var a=3Dnew =
Date;a.setTime(1000*this.a._expires_);var =
b=3Dthis.a._domain_,c=3Dthis.e+this.b+"; expires=3D"+a.toGMTString()+"; =
path=3D"+this.a._path_+"; domain=3D."+b;document.cookie=3Dc}};=0A=
function pa(){if(navigator.plugins&&navigator.mimeTypes.length){var =
a=3Dnavigator.plugins["Shockwave Flash"];if(a&&a.description)return =
a.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")}else =
if(navigator.userAgent&&navigator.userAgent.indexOf("Windows =
CE")>=3D0){for(var b=3D3,c=3D1;c;)try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+(b+1));b++}catch(d){c=3Dl}=
return b.toString()}else if(qa()){c=3Dl;try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(e){b=3D0;try{c=3Dn=
ew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");=0A=
b=3D6;c.AllowScriptAccess=3D"always"}catch(f){if(b=3D=3D6)return =
b.toString()}try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(i){}}if(c){b=3Dc.Get=
Variable("$version").split(" ")[1];return =
b.replace(/,/g,".")}}return"0"};function ra(a,b){try{return =
a.top.document.URL=3D=3Db.URL}catch(c){}return g}function =
sa(a,b,c,d){var =
e=3Dc||a.google_ad_width,f=3Dd||a.google_ad_height;if(ra(a,b))return =
g;var i=3Db.documentElement;if(e&&f){var =
j=3D1,h=3D1;if(a.innerHeight){j=3Da.innerWidth;h=3Da.innerHeight}else =
if(i&&i.clientHeight){j=3Di.clientWidth;h=3Di.clientHeight}else =
if(b.body){j=3Db.body.clientWidth;h=3Db.body.clientHeight}if(h>2*f||j>2*e=
)return g}return m}function ta(a,b){for(var c in b)a["google_"+c]=3Db[c]}=0A=
function ua(a,b){if(!b)return a.URL;return a.referrer}function =
va(a,b){if(!b&&a.google_referrer_url=3D=3Dl)return"0";else =
if(b&&a.google_referrer_url=3D=3Dl)return"1";else =
if(!b&&a.google_referrer_url!=3Dl)return"2";else =
if(b&&a.google_referrer_url!=3Dl)return"3";return"4"}function =
wa(a,b,c,d){a.page_url=3Dua(c,d);a.page_location=3Dl}function =
xa(a,b,c,d){a.page_url=3Db.google_page_url;a.page_location=3Dua(c,d)||"EM=
PTY"}=0A=
function ya(a,b){var =
c=3D{},d=3Dsa(a,b,a.google_ad_width,a.google_ad_height);c.iframing=3Dva(a=
,d);a.google_page_url?xa(c,a,b,d):wa(c,a,b,d);c.last_modified_time=3Db.UR=
L=3D=3Dc.page_url?Date.parse(b.lastModified)/1000:l;c.referrer_url=3Dd?a.=
google_referrer_url:a.google_page_url&&a.google_referrer_url?a.google_ref=
errer_url:b.referrer;return c}function za(a){var =
b=3D{},c=3Da.URL.substring(a.URL.lastIndexOf("http"));b.iframing=3Dl;b.pa=
ge_url=3Dc;b.page_location=3Da.URL;b.last_modified_time=3Dl;b.referrer_ur=
l=3Dc;return b}=0A=
function Aa(a,b){var c=3DBa(a,b);ta(a,c)}function Ba(a,b){var c;return =
c=3Da.google_page_url=3D=3Dl&&Ca[b.domain]?za(b):ya(a,b)}var =
Ca=3D{};Ca["ad.yieldmanager.com"]=3Dm;var w=3Dthis,x=3Dfunction(a){var =
b=3Dtypeof a;if(b=3D=3D"object")if(a){if(a instanceof Array||!(a =
instanceof Object)&&Object.prototype.toString.call(a)=3D=3D"[object =
Array]")return"array";if(Object.prototype.toString.call(a)=3D=3D"[object =
Function]")return"function"}else return"null";else =
if(b=3D=3D"function"&&typeof =
a.call=3D=3D"undefined")return"object";return b};var =
Da=3Dfunction(a){var b=3Dx(a);return =
b=3D=3D"array"||b=3D=3D"object"&&typeof a.length=3D=3D"number"};var =
Ea=3Dfunction(a){var b=3Dx(a);return =
b=3D=3D"object"||b=3D=3D"array"||b=3D=3D"function"};=0A=
Math.floor(Math.random()*2147483648).toString(36);var =
Fa=3Dfunction(a){var =
b=3Dx(a);if(b=3D=3D"object"||b=3D=3D"array"){if(a.clone)return =
a.clone.call(a);var c=3Db=3D=3D"array"?[]:{};for(var d in =
a)c[d]=3DFa(a[d]);return c}return =
a},Ga=3DDate.now||function(){return(new Date).getTime()};var =
Ha=3Dfunction(a,b,c){if(a.forEach)a.forEach(b,c);else =
if(Array.forEach)Array.forEach(a,b,c);else for(var =
d=3Da.length,e=3Dtypeof a=3D=3D"string"?a.split(""):a,f=3D0;f<d;f++)f in =
e&&b.call(c,e[f],f,a)},Ia=3Dfunction(a){if(x(a)=3D=3D"array")return =
a.concat();else{for(var =
b=3D[],c=3D0,d=3Da.length;c<d;c++)b[c]=3Da[c];return b}};var =
y=3Dfunction(a,b){this.x=3Dtypeof a!=3D"undefined"?a:0;this.y=3Dtypeof =
b!=3D"undefined"?b:0};y.prototype.clone=3Dfunction(){return new =
y(this.x,this.y)};y.prototype.toString=3Dfunction(){return"("+this.x+", =
"+this.y+")"};var =
z=3Dfunction(a,b){this.width=3Da;this.height=3Db};z.prototype.clone=3Dfun=
ction(){return new =
z(this.width,this.height)};z.prototype.toString=3Dfunction(){return"("+th=
is.width+" x =
"+this.height+")"};z.prototype.ceil=3Dfunction(){this.width=3DMath.ceil(t=
his.width);this.height=3DMath.ceil(this.height);return =
this};z.prototype.floor=3Dfunction(){this.width=3DMath.floor(this.width);=
this.height=3DMath.floor(this.height);return this};=0A=
z.prototype.round=3Dfunction(){this.width=3DMath.round(this.width);this.h=
eight=3DMath.round(this.height);return =
this};z.prototype.scale=3Dfunction(a){this.width*=3Da;this.height*=3Da;re=
turn this};var Ja=3Dfunction(a,b,c){for(var d in =
a)b.call(c,a[d],d,a)};var Ka=3Dfunction(a){return =
a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Qa=3Dfunction(a,b){if(b)return =
a.replace(La,"&amp;").replace(Ma,"&lt;").replace(Na,"&gt;").replace(Oa,"&=
quot;");else{if(!Pa.test(a))return =
a;if(a.indexOf("&")!=3D-1)a=3Da.replace(La,"&amp;");if(a.indexOf("<")!=3D=
-1)a=3Da.replace(Ma,"&lt;");if(a.indexOf(">")!=3D-1)a=3Da.replace(Na,"&gt=
;");if(a.indexOf('"')!=3D-1)a=3Da.replace(Oa,"&quot;");return =
a}},La=3D/&/g,Ma=3D/</g,Na=3D/>/g,Oa=3D/\"/g,Pa=3D/[&<>\"]/,Ra=3Dfunction=
(a,b){for(var c=3Db.length,d=3D0;d<c;d++){var e=3Dc=3D=3D=0A=
1?b:b.charAt(d);if(a.charAt(0)=3D=3De&&a.charAt(a.length-1)=3D=3De)return=
 a.substring(1,a.length-1)}return a};=0A=
var Sa=3Dfunction(a,b){for(var =
c=3D0,d=3DKa(String(a)).split("."),e=3DKa(String(b)).split("."),f=3DMath.=
max(d.length,e.length),i=3D0;c=3D=3D0&&i<f;i++){var =
j=3Dd[i]||"",h=3De[i]||"",k=3Dnew RegExp("(\\d*)(\\D*)","g"),A=3Dnew =
RegExp("(\\d*)(\\D*)","g");do{var =
u=3Dk.exec(j)||["","",""],v=3DA.exec(h)||["","",""];if(u[0].length=3D=3D0=
&&v[0].length=3D=3D0)break;var =
s=3Du[1].length=3D=3D0?0:parseInt(u[1],10),G=3Dv[1].length=3D=3D0?0:parse=
Int(v[1],10);c=3DB(s,G)||B(u[2].length=3D=3D0,v[2].length=3D=3D0)||B(u[2]=
,v[2])}while(c=3D=3D0)}return c},B=3Dfunction(a,b){if(a<=0A=
b)return-1;else if(a>b)return 1;return 0};Ga();var =
C,D,E,F,Ta,Ua,Va,Wa,Xa,Ya=3Dfunction(){return =
w.navigator?w.navigator.userAgent:l};var =
Za=3Dfunction(){Ua=3DTa=3DF=3DE=3DD=3DC=3Dg;var a;if(a=3DYa()){var =
b=3Dw.navigator;C=3Da.indexOf("Opera")=3D=3D0;D=3D!C&&a.indexOf("MSIE")!=3D=
-1;F=3D(E=3D!C&&a.indexOf("WebKit")!=3D-1)&&a.indexOf("Mobile")!=3D-1;Ua=3D=
(Ta=3D!C&&!E&&b.product=3D=3D"Gecko")&&b.vendor=3D=3D"Camino"}};Za();=0A=
var H=3DC,I=3DD,J=3DTa,K=3DE,$a=3DF,ab=3Dfunction(){var =
a=3Dw.navigator;return =
a&&a.platform||""},bb=3Dab(),db=3Dfunction(){Va=3Dbb.indexOf("Mac")!=3D-1=
;Wa=3Dbb.indexOf("Win")!=3D-1;Xa=3Dbb.indexOf("Linux")!=3D-1};db();var =
gb=3DVa,hb=3DWa,ib=3DXa,jb=3Dfunction(){var a=3D"",b;if(H&&w.opera){var =
c=3Dw.opera.version;a=3Dtypeof =
c=3D=3D"function"?c():c}else{if(J)b=3D/rv\:([^\);]+)(\)|;)/;else =
if(I)b=3D/MSIE\s+([^\);]+)(\)|;)/;else =
if(K)b=3D/WebKit\/(\S+)/;if(b){var =
d=3Db.exec(Ya());a=3Dd?d[1]:""}}return a},kb=3Djb();=0A=
var lb=3D{},L=3Dfunction(a){return lb[a]||(lb[a]=3DSa(kb,a)>=3D0)};var =
mb;var nb=3Dfunction(a){return a?new M(N(a)):mb||(mb=3Dnew M)};=0A=
var ob=3Dfunction(a){return typeof =
a=3D=3D"string"?document.getElementById(a):a},pb=3Dob,rb=3Dfunction(a,b){=
Ja(b,function(c,d){if(d=3D=3D"style")a.style.cssText=3Dc;else =
if(d=3D=3D"class")a.className=3Dc;else =
if(d=3D=3D"for")a.htmlFor=3Dc;else if(d in =
qb)a.setAttribute(qb[d],c);else =
a[d]=3Dc})},qb=3D{cellpadding:"cellPadding",cellspacing:"cellSpacing",col=
span:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"w=
idth",usemap:"useMap",frameborder:"frameBorder",type:"type"},sb=3Dfunctio=
n(a){var b=3Da||w||window,c=3Db.document;=0A=
if(K&&!L("500")&&!$a){if(typeof =
b.innerHeight=3D=3D"undefined")b=3Dwindow;var =
d=3Db.innerHeight,e=3Db.document.documentElement.scrollHeight;if(b=3D=3Db=
.top)if(e<d)d-=3D15;return new z(b.innerWidth,d)}var =
f=3Dc.compatMode=3D=3D"CSS1Compat"&&(!H||H&&L("9.50"))?c.documentElement:=
c.body;return new z(f.clientWidth,f.clientHeight)},tb=3Dfunction(a){var =
b=3D!K&&a.compatMode=3D=3D"CSS1Compat"?a.documentElement:a.body;return =
new y(b.scrollLeft,b.scrollTop)};=0A=
var vb=3Dfunction(){return =
ub(document,arguments)},ub=3Dfunction(a,b){var =
c=3Db[0],d=3Db[1];if(I&&d&&(d.name||d.type)){var =
e=3D["<",c];d.name&&e.push(' =
name=3D"',Qa(d.name),'"');if(d.type){e.push(' =
type=3D"',Qa(d.type),'"');d=3DFa(d);delete =
d.type}e.push(">");c=3De.join("")}var =
f=3Da.createElement(c);d&&rb(f,d);if(b.length>2){function =
i(k){if(k)f.appendChild(typeof =
k=3D=3D"string"?a.createTextNode(k):k)}for(var j=3D2;j<b.length;j++){var =
h=3Db[j];Da(h)&&!(Ea(h)&&h.nodeType>0)?Ha(wb(h)?Ia(h):h,i):i(h)}}return =
f};=0A=
var xb=3Dfunction(a,b){a.appendChild(b)},yb=3Dfunction(a){return =
a&&a.parentNode?a.parentNode.removeChild(a):l},zb=3Dfunction(a,b){var =
c=3Db.parentNode;c&&c.replaceChild(a,b)};=0A=
var Ab=3DK&&Sa(kb,"521")<=3D0,Bb=3Dfunction(a,b){if(typeof =
a.contains!=3D"undefined"&&!Ab&&b.nodeType=3D=3D1)return =
a=3D=3Db||a.contains(b);if(typeof =
a.compareDocumentPosition!=3D"undefined")return =
a=3D=3Db||Boolean(a.compareDocumentPosition(b)&16);for(;b&&a!=3Db;)b=3Db.=
parentNode;return b=3D=3Da},N=3Dfunction(a){return =
a.nodeType=3D=3D9?a:a.ownerDocument||a.document},wb=3Dfunction(a){if(a&&t=
ypeof a.length=3D=3D"number")if(Ea(a))return typeof =
a.item=3D=3D"function"||typeof a.item=3D=3D"string";else =
if(x(a)=3D=3D"function")return typeof a.item=3D=3D"function";=0A=
return =
g},M=3Dfunction(a){this.d=3Da||w.document||document};M.prototype.createEl=
ement=3Dfunction(a){return =
this.d.createElement(a)};M.prototype.createTextNode=3Dfunction(a){return =
this.d.createTextNode(a)};M.prototype.m=3Dfunction(){return =
this.d.compatMode=3D=3D"CSS1Compat"};M.prototype.k=3Dfunction(){return =
tb(this.d)};M.prototype.appendChild=3Dxb;M.prototype.removeNode=3Dyb;M.pr=
ototype.replaceNode=3Dzb;M.prototype.contains=3DBb;var =
Cb,Db,Eb,Fb,Gb,Hb,Ib=3Dfunction(){Hb=3DGb=3DFb=3DEb=3DDb=3DCb=3Dg;var =
a=3DYa();if(a)if(a.indexOf("Firefox")!=3D-1)Cb=3Dm;else =
if(a.indexOf("Camino")!=3D-1)Db=3Dm;else =
if(a.indexOf("iPhone")!=3D-1||a.indexOf("iPod")!=3D-1)Eb=3Dm;else =
if(a.indexOf("Android")!=3D-1)Fb=3Dm;else =
if(a.indexOf("Chrome")!=3D-1)Gb=3Dm;else =
if(a.indexOf("Safari")!=3D-1)Hb=3Dm};Ib();var Jb=3Dfunction(a,b){var =
c=3DN(a);if(c.defaultView&&c.defaultView.getComputedStyle){var =
d=3Dc.defaultView.getComputedStyle(a,"");if(d)return d[b]}return l};var =
O=3Dfunction(a,b){return =
Jb(a,b)||(a.currentStyle?a.currentStyle[b]:l)||a.style[b]};=0A=
var Kb=3Dfunction(a){var =
b;b=3Da?a.nodeType=3D=3D9?a:N(a):document;if(I&&!nb(b).m())return =
b.body;return b.documentElement},Lb=3Dfunction(a){var =
b=3Da.getBoundingClientRect();if(I){var =
c=3Da.ownerDocument;b.left-=3Dc.documentElement.clientLeft+c.body.clientL=
eft;b.top-=3Dc.documentElement.clientTop+c.body.clientTop}return =
b},Mb=3Dfunction(a){if(I)return a.offsetParent;for(var =
b=3DN(a),c=3DO(a,"position"),d=3Dc=3D=3D"fixed"||c=3D=3D"absolute",e=3Da.=
parentNode;e&&e!=3Db;e=3De.parentNode){c=3DO(e,"position");d=3Dd&&c=3D=3D=
"static"&&e!=3Db.documentElement&&=0A=
e!=3Db.body;if(!d&&(e.scrollWidth>e.clientWidth||e.scrollHeight>e.clientH=
eight||c=3D=3D"fixed"||c=3D=3D"absolute"))return e}return =
l},Nb=3Dfunction(a){var =
b,c=3DN(a),d=3DO(a,"position"),e=3DJ&&c.getBoxObjectFor&&!a.getBoundingCl=
ientRect&&d=3D=3D"absolute"&&(b=3Dc.getBoxObjectFor(a))&&(b.screenX<0||b.=
screenY<0),f=3Dnew y(0,0),i=3DKb(c);if(a=3D=3Di)return =
f;if(a.getBoundingClientRect){b=3DLb(a);var =
j=3Dnb(c).k();f.x=3Db.left+j.x;f.y=3Db.top+j.y}else =
if(c.getBoxObjectFor&&!e){b=3Dc.getBoxObjectFor(a);var =
h=3Dc.getBoxObjectFor(i);f.x=3Db.screenX-=0A=
h.screenX;f.y=3Db.screenY-h.screenY}else{var =
k=3Da;do{f.x+=3Dk.offsetLeft;f.y+=3Dk.offsetTop;if(k!=3Da){f.x+=3Dk.clien=
tLeft||0;f.y+=3Dk.clientTop||0}if(K&&O(k,"position")=3D=3D"fixed"){f.x+=3D=
c.body.scrollLeft;f.y+=3Dc.body.scrollTop;break}k=3Dk.offsetParent}while(=
k&&k!=3Da);if(H||K&&d=3D=3D"absolute")f.y-=3Dc.body.offsetTop;for(k=3Da;(=
k=3DMb(k))&&k!=3Dc.body;){f.x-=3Dk.scrollLeft;if(!H||k.tagName!=3D"TR")f.=
y-=3Dk.scrollTop}}return f};J&&L("1.9");=0A=
var Ob=3Dfunction(a,b,c,d){if(/^\d+px?$/.test(b))return =
parseInt(b,10);else{var =
e=3Da.style[c],f=3Da.runtimeStyle[c];a.runtimeStyle[c]=3Da.currentStyle[c=
];a.style[c]=3Db;var =
i=3Da.style[d];a.style[c]=3De;a.runtimeStyle[c]=3Df;return =
i}},Pb=3Dfunction(a){var b=3DN(a),c=3D"";if(b.createTextRange){var =
d=3Db.body.createTextRange();d.moveToElementText(a);c=3Dd.queryCommandVal=
ue("FontName")}if(!c){c=3DO(a,"fontFamily");if(H&&ib)c=3Dc.replace(/ =
\[[^\]]*\]/,"")}var e=3Dc.split(",");if(e.length>1)c=3De[0];return =
Ra(c,"\"'")},Qb=3Dfunction(a){var b=3D=0A=
a.match(/[^\d]+$/);return =
b&&b[0]||l},Rb=3D{cm:1,"in":1,mm:1,pc:1,pt:1},Sb=3D{em:1,ex:1},Tb=3Dfunct=
ion(a){var b=3DO(a,"fontSize"),c=3DQb(b);if(b&&"px"=3D=3Dc)return =
parseInt(b,10);if(I)if(c in Rb)return Ob(a,b,"left","pixelLeft");else =
if(a.parentNode&&a.parentNode.nodeType=3D=3D1&&c in Sb){var =
d=3Da.parentNode,e=3DO(d,"fontSize");return =
Ob(d,b=3D=3De?"1em":b,"left","pixelLeft")}var =
f=3Dvb("span",{style:"visibility:hidden;position:absolute;line-height:0;p=
adding:0;margin:0;border:0;height:1em;"});xb(a,f);b=3Df.offsetHeight;yb(f=
);=0A=
return b};var P=3Ddocument,Q=3Dnavigator,R=3Dwindow;=0A=
function Ub(){var a=3DP.cookie,b=3DMath.round((new =
Date).getTime()/1000),c=3DR.google_analytics_domain_name,d=3Dtypeof =
c=3D=3D"undefined"?Vb("auto"):Vb(c),e=3Da.indexOf("__utma=3D"+d+".")>-1,f=
=3Da.indexOf("__utmb=3D"+d)>-1,i=3Da.indexOf("__utmc=3D"+d)>-1,j,h=3D{};i=
f(e){j=3Da.split("__utma=3D"+d+".")[1].split(";")[0].split(".");h.sid=3Df=
&&i?j[3]+"":R&&R.gaGlobal&&R.gaGlobal.sid?R.gaGlobal.sid:b+"";h.vid=3Dj[0=
]+"."+j[1];h.from_cookie=3Dm}else{h.sid=3DR&&R.gaGlobal&&R.gaGlobal.sid?R=
.gaGlobal.sid:b+"";h.vid=3DR&&R.gaGlobal&&R.gaGlobal.vid?=0A=
R.gaGlobal.vid:(Wb()^Xb()&2147483647)+"."+b;h.from_cookie=3Dg}h.dh=3Dd;h.=
hid=3DR&&R.gaGlobal&&R.gaGlobal.hid?R.gaGlobal.hid:Wb();return =
R.gaGlobal=3Dh}function Wb(){return Math.round(Math.random()*2147483647)}=0A=
function Xb(){var =
a=3DP.cookie?P.cookie:"",b=3DR.history.length,c,d,e=3D[Q.appName,Q.versio=
n,Q.language?Q.language:Q.browserLanguage,Q.platform,Q.userAgent,Q.javaEn=
abled()?1:0].join("");if(R.screen)e+=3DR.screen.width+"x"+R.screen.height=
+R.screen.colorDepth;else =
if(R.java){d=3Djava.awt.Toolkit.getDefaultToolkit().getScreenSize();e+=3D=
d.screen.width+"x"+d.screen.height}e+=3Da;e+=3DP.referrer?P.referrer:"";f=
or(c=3De.length;b>0;)e+=3Db--^c++;return Yb(e)}=0A=
function Yb(a){var =
b=3D1,c=3D0,d,e;if(!(a=3D=3Dundefined||a=3D=3D"")){b=3D0;for(d=3Da.length=
-1;d>=3D0;d--){e=3Da.charCodeAt(d);b=3D(b<<6&268435455)+e+(e<<14);c=3Db&2=
66338304;b=3Dc!=3D0?b^c>>21:b}}return b}function =
Vb(a){if(!a||a=3D=3D""||a=3D=3D"none")return =
1;if("auto"=3D=3Da){a=3DP.domain;if("www."=3D=3Da.substring(0,4))a=3Da.su=
bstring(4,a.length)}return Yb(a.toLowerCase())};var S=3D"";function =
Zb(a){if(a){if(S!=3D"")S+=3D",";S+=3Da}}var $b=3Dg;function ac(a,b){var =
c=3D"script";($b=3Dbc(a,b))||(a.google_allow_expandable_ads=3Dg);var =
d=3D!cc();$b&&d&&b.write("<"+c+' =
src=3D"http://'+ea+'/pagead/expansion_embed.js"></'+c+">");var =
e=3Ddc(a,b,aa("1",0.01)),f=3Dd||e;f&&qa()?b.write("<"+c+' =
src=3D"http://'+ea+'/pagead/render_ads.js"></'+c+">"):b.write("<"+c+">win=
dow.google_render_ad();</"+c+">")}function T(a){return =
a!=3Dl?'"'+a+'"':'""'}=0A=
function r(a){return typeof =
encodeURIComponent=3D=3D"function"?encodeURIComponent(a):escape(a)}functi=
on U(a,b){if(a&&b)window.google_ad_url+=3D"&"+a+"=3D"+b}function =
V(a){var b=3Dwindow,c=3Dp(a),d=3Db[a];U(c,d)}function =
W(a,b){b!=3Dl&&U(a,r(b))}function X(a){var =
b=3Dwindow,c=3Dp(a),d=3Db[a];W(c,d)}function Y(a,b){var =
c=3Dwindow,d=3Dp(a),e=3Dc[a];if(d&&e&&typeof =
e=3D=3D"object")e=3De[b%e.length];U(d,e)}=0A=
function ec(a){var b=3Da.screen,c=3Dnavigator.javaEnabled(),d=3D-(new =
Date).getTimezoneOffset();if(b){U("u_h",b.height);U("u_w",b.width);U("u_a=
h",b.availHeight);U("u_aw",b.availWidth);U("u_cd",b.colorDepth)}U("u_tz",=
d);U("u_his",history.length);U("u_java",c);navigator.plugins&&U("u_nplug"=
,navigator.plugins.length);navigator.mimeTypes&&U("u_nmime",navigator.mim=
eTypes.length)}=0A=
function =
fc(a){if(a.google_enable_first_party_cookie){if(a._GA_googleCookieHelper=3D=
=3Dl)a._GA_googleCookieHelper=3Dnew =
q;if(!a._google_cookie_fetched){a._google_cookie_fetched=3Dm;a._GA_google=
CookieHelper.i(gc(a.google_ad_client))}}}function =
gc(a){if(a){a=3Da.toLowerCase();if(a.substring(0,3)!=3D"ca-")a=3D"ca-"+a}=
return a}function =
hc(a){if(a){a=3Da.toLowerCase();if(a.substring(0,9)!=3D"dist-aff-")a=3D"d=
ist-aff-"+a}return a}function ic(a){var =
b=3D"google_unique_id";if(a[b])++a[b];else a[b]=3D1;return a[b]}=0A=
function jc(){var =
a=3DI&&L("6")&&!L("8"),b=3DJ&&L("1.8.1"),c=3DK&&L("525");if(hb&&(a||b||c)=
)return m;else if(gb&&(c||b))return m;else if(ib&&b)return m;return =
g}function cc(){return typeof =
ExpandableAdSlotFactory=3D=3D"function"&&typeof =
ExpandableAdSlotFactory.createIframe=3D=3D"function"}function =
bc(a,b){if(a.google_allow_expandable_ads=3D=3D=3Dg||!b.body||a.google_ad_=
output!=3D"html"||sa(a,b)||kc(a)||Z(a.google_ad_format)||isNaN(a.google_a=
d_height)||isNaN(a.google_ad_width)||!jc())return g;return m}=0A=
function lc(){var =
a=3DMath.random(),b=3Daa("0.01",0);if(a<b)return"68120011";if(a<2*b)retur=
n"68120021";if(a<3*b)return"68120031";if(a<4*b)return"68120041";return""}=0A=
function mc(a,b,c,d){var =
e=3Dic(a);c=3Dc.substring(0,1992);c=3Dc.replace(/%\w?$/,"");var =
f=3D"script";if((a.google_ad_output=3D=3D"js"||a.google_ad_output=3D=3D"j=
son_html")&&(a.google_ad_request_done||a.google_radlink_request_done))b.w=
rite("<"+f+' language=3D"JavaScript1.1" =
src=3D'+T($(c))+"></"+f+">");else =
if(a.google_ad_output=3D=3D"html")if($b&&cc()){var =
i=3Da.google_container_id||d||l;a["google_expandable_ad_slot"+e]=3DExpand=
ableAdSlotFactory.createIframe("google_ads_frame"+e,$(c),a.google_ad_widt=
h,a.google_ad_height,i)}else{var j=3D=0A=
'<iframe name=3D"google_ads_frame" width=3D'+T(a.google_ad_width)+" =
height=3D"+T(a.google_ad_height)+" =
frameborder=3D"+T(a.google_ad_frameborder)+" src=3D"+T($(c))+' =
marginwidth=3D"0" marginheight=3D"0" vspace=3D"0" hspace=3D"0" =
allowtransparency=3D"true" =
scrolling=3D"no"></iframe>';a.google_container_id?nc(a.google_container_i=
d,b,j):b.write(j)}else =
a.google_ad_output=3D=3D"textlink"&&b.write("<"+f+' =
language=3D"JavaScript1.1" src=3D'+T($(c))+"></"+f+">")}function =
oc(a,b,c){if(!a)return g;if(!b)return m;return c}=0A=
function pc(a){for(var b in la)a[b]=3Dl;for(b in =
ma)b=3D=3D"google_correlator"||(a[b]=3Dl);for(b in =
na)a[b]=3Dl;a.google_allow_expandable_ads=3Dl;a.google_container_id=3Dl;a=
.google_tag_info=3Dl}function kc(a){if(a.google_ad_format)return =
a.google_ad_format.indexOf("_0ads")>0;return =
a.google_ad_output!=3D"html"&&a.google_num_radlinks>0}function =
Z(a){return!!a&&a.indexOf("_sdo")!=3D-1}=0A=
function qc(a,b){var =
c=3Dl,d=3Dwindow,e=3Ddocument,f=3Dn,i=3Dd.google_ad_format,j=3Drc(d),h;if=
(d.google_cpa_choice!=3Dc){d.google_ad_url=3Dj+"/cpa/ads?";h=3Descape(gc(=
d.google_ad_client));d.google_ad_region=3D"_google_cpa_region_";V("google=
_cpa_choice");if(typeof =
e.characterSet!=3D"undefined")W("oe",e.characterSet);else typeof =
e.charset!=3D"undefined"&&W("oe",e.charset)}else =
if(Z(i)){d.google_ad_url=3Dj+"/pagead/sdo?";h=3Descape(hc(d.google_ad_cli=
ent))}else{d.google_ad_url=3Dj+"/pagead/ads?";h=3Descape(gc(d.google_ad_c=
lient))}d.google_ad_url+=3D=0A=
"client=3D"+h;V("google_ad_host");V("google_ad_host_tier_id");var =
k=3Dd.google_num_slots_by_client,A=3Dd.google_num_slots_by_channel,u=3Dd.=
google_prev_ad_formats_by_region,v=3Dd.google_prev_ad_slotnames_by_region=
;if(d.google_ad_region=3D=3Dc&&d.google_ad_section!=3Dc)d.google_ad_regio=
n=3Dd.google_ad_section;var =
s=3Dd.google_ad_region=3D=3Dc?"":d.google_ad_region;if(Z(i)){d.google_num=
_sdo_slots=3Dd.google_num_sdo_slots?d.google_num_sdo_slots+1:1;if(d.googl=
e_num_sdo_slots>4)return g}else =
if(kc(d)){d.google_num_0ad_slots=3Dd.google_num_0ad_slots?=0A=
d.google_num_0ad_slots+1:1;if(d.google_num_0ad_slots>3)return g}else =
if(d.google_cpa_choice=3D=3Dc){d.google_num_ad_slots=3Dd.google_num_ad_sl=
ots?d.google_num_ad_slots+1:1;if(d.google_num_slots_to_rotate){u[s]=3Dc;v=
[s]=3Dc;if(d.google_num_slot_to_show=3D=3Dc)d.google_num_slot_to_show=3Df=
%d.google_num_slots_to_rotate+1;if(d.google_num_slot_to_show!=3Dd.google_=
num_ad_slots)return g}else if(d.google_num_ad_slots>6&&s=3D=3D"")return =
g}U("dt",n);V("google_language");d.google_country?V("google_country"):V("=
google_gl");V("google_region");=0A=
X("google_city");X("google_hints");V("google_safe");V("google_encoding");=
V("google_last_modified_time");X("google_alternate_ad_url");V("google_alt=
ernate_color");V("google_skip");V("google_targeting");var =
G=3Dd.google_ad_client;if(k[G])k[G]+=3D1;else{k[G]=3D1;k.length+=3D1}if(u=
[s])if(!Z(i)){W("prev_fmts",u[s].toLowerCase());k.length>1&&U("slot",k[G]=
)}v[s]&&W("prev_slotnames",v[s].toLowerCase());if(oc(i,d.google_ad_slot,d=
.google_override_format)){W("format",i.toLowerCase());Z(i)||(u[s]=3Du[s]?=
u[s]+","+i:i)}else if(d.google_ad_slot)v[s]=3D=0A=
v[s]?v[s]+","+d.google_ad_slot:d.google_ad_slot;V("google_max_num_ads");U=
("output",d.google_ad_output);V("google_adtest");V("google_ad_callback");=
V("google_ad_slot");X("google_correlator");d.google_new_domain_checked=3D=
=3D1&&d.google_new_domain_enabled=3D=3D0&&U("dblk",1);if(d.google_ad_chan=
nel){X("google_ad_channel");for(var =
cb=3D"",eb=3Dd.google_ad_channel.split(sc),ha=3D0;ha<eb.length;ha++){var =
ia=3Deb[ha];if(A[ia])cb+=3Dia+"+";else =
A[ia]=3D1}W("pv_ch",cb)}if(d.google_ad_host_channel){X("google_ad_host_ch=
annel");=0A=
var =
yc=3Dtc(d.google_ad_host_channel,d.google_viewed_host_channels);W("pv_h_c=
h",yc)}d.google_enable_first_party_cookie&&W("cookie",d._GA_googleCookieH=
elper.l());X("google_page_url");Y("google_color_bg",f);Y("google_color_te=
xt",f);Y("google_color_link",f);Y("google_color_url",f);Y("google_color_b=
order",f);Y("google_color_line",f);d.google_reuse_colors?U("reuse_colors"=
,1):U("reuse_colors",0);V("google_font_face");V("google_kw_type");X("goog=
le_kw");X("google_contents");V("google_num_radlinks");V("google_max_radli=
nk_len");=0A=
V("google_rl_filtering");V("google_rl_mode");V("google_rt");X("google_rl_=
dest_url");V("google_num_radlinks_per_unit");V("google_ad_type");V("googl=
e_image_size");V("google_ad_region");W("eid",S);var =
fb=3Dd.google_allow_expandable_ads;if(fb!=3Dl)fb?U("ea","1"):U("ea","0");=
V("google_feedback");X("google_referrer_url");X("google_page_location");U=
("frm",d.google_iframing);V("google_bid");V("google_ctr_threshold");V("go=
ogle_cust_age");V("google_cust_gender");V("google_cust_interests");V("goo=
gle_cust_id");V("google_cust_job");=0A=
V("google_cust_u_url");V("google_cust_l");V("google_cust_lh");V("google_c=
ust_ch");V("google_ed");V("google_video_doc_id");V("google_video_product_=
type");X("google_ui_features");X("google_ui_version");X("google_tag_info"=
);X("google_only_ads_with_video");X("google_only_pyv_ads");X("google_disa=
ble_video_autoplay");if(a){W("ff",Pb(a));W("fs",Tb(a));var =
t;if(b)if(typeof =
a.getBoundingClientRect=3D=3D"function"){t=3Da.getBoundingClientRect();t.=
x=3Dt.left;t.y=3Dt.top}else{t=3D{};t.x=3D"-252738";t.y=3D"-252738"}else =
try{t=3D=0A=
Nb(a)}catch(Ec){t=3D{};t.x=3D"-252738";t.y=3D"-252738"}var =
ja=3Dsb();if(t&&ja){W("biw",ja.width);W("bih",ja.height);W("adx",t.x);W("=
ady",t.y)}}Ub();U("ga_vid",d.gaGlobal.vid);U("ga_sid",d.gaGlobal.sid);U("=
ga_hid",d.gaGlobal.hid);U("ga_fc",d.gaGlobal.from_cookie);X("google_analy=
tics_uacct");V("google_ad_override");V("google_flash_version");ec(d);retu=
rn m}=0A=
function tc(a,b){for(var =
c=3Da.split("|"),d=3D-1,e=3D[],f=3D0;f<c.length;f++){var =
i=3Dc[f].split(sc);b[f]||(b[f]=3D{});for(var =
j=3D"",h=3D0;h<i.length;h++){var =
k=3Di[h];if(!(k=3D=3D""))if(b[f][k])j+=3D"+"+k;else =
b[f][k]=3D1}j=3Dj.slice(1);e[f]=3Dj;if(j!=3D"")d=3Df}var =
A=3D"";if(d>-1){for(f=3D0;f<d;f++)A+=3De[f]+"|";A+=3De[d]}return A}=0A=
function uc(){var a=3Dwindow,b=3Ddocument;fc(a);var c=3Dlc();Zb(c);var =
d,e=3Dg,f=3Dg,i=3Dg;switch(c){case "68120031":i=3Dm;case =
"68120021":f=3Dm;case "68120041":e=3Dm}if(e){var =
j=3D"google_temp_span";d=3Da.google_container_id&&pb(a.google_container_i=
d)||pb(j);if(!d&&!a.google_container_id){b.write("<span =
id=3D"+j+"></span>");d=3Dpb(j)}}var =
h=3Dg;h=3Df?qc(d,i):qc();d&&d.id=3D=3Dj&&yb(d);if(h){mc(a,b,a.google_ad_u=
rl);pc(a)}}function $(a){var b=3D(new =
Date).getTime()-n,c=3D"&dtd=3D"+(b<1000?b:"M");return a+c}function =
vc(){uc();return m}=0A=
function wc(a){var =
b=3Dwindow,c=3Dl,d=3Db.onerror;b.onerror=3Da;if(b.google_ad_frameborder=3D=
=3Dc)b.google_ad_frameborder=3D0;if(b.google_ad_output=3D=3Dc)b.google_ad=
_output=3D"html";if(Z(b.google_ad_format)){var =
e=3Db.google_ad_format.match(/^(\d+)x(\d+)_.*/);if(e){b.google_ad_width=3D=
parseInt(e[1],10);b.google_ad_height=3DparseInt(e[2],10);b.google_ad_outp=
ut=3D"html"}}if(b.google_ad_format=3D=3Dc&&b.google_ad_output=3D=3D"html"=
)b.google_ad_format=3Db.google_ad_width+"x"+b.google_ad_height;Aa(b,docum=
ent);if(b.google_num_slots_by_channel=3D=3D=0A=
c)b.google_num_slots_by_channel=3D[];if(b.google_viewed_host_channels=3D=3D=
c)b.google_viewed_host_channels=3D[];if(b.google_num_slots_by_client=3D=3D=
c)b.google_num_slots_by_client=3D[];if(b.google_prev_ad_formats_by_region=
=3D=3Dc)b.google_prev_ad_formats_by_region=3D[];if(b.google_prev_ad_slotn=
ames_by_region=3D=3Dc)b.google_prev_ad_slotnames_by_region=3D[];if(b.goog=
le_correlator=3D=3Dc)b.google_correlator=3Dn;if(b.google_adslot_loaded=3D=
=3Dc)b.google_adslot_loaded=3D{};if(b.google_adContentsBySlot=3D=3Dc)b.go=
ogle_adContentsBySlot=3D{};if(b.google_flash_version=3D=3D=0A=
c)b.google_flash_version=3Dpa();if(b.google_new_domain_checked=3D=3Dc)b.g=
oogle_new_domain_checked=3D0;if(b.google_new_domain_enabled=3D=3Dc)b.goog=
le_new_domain_enabled=3D0;b.onerror=3Dd}function xc(a){if(a in zc)return =
zc[a];return =
zc[a]=3Dnavigator.userAgent.toLowerCase().indexOf(a)!=3D-1}var =
zc=3D{};function qa(){return xc("msie")&&!window.opera}=0A=
function Ac(a){for(var =
b=3D{},c=3Da.split("?"),d=3Dc[c.length-1].split("&"),e=3D0;e<d.length;e++=
){var =
f=3Dd[e].split("=3D");if(f[0])try{b[f[0].toLowerCase()]=3Df.length>1?wind=
ow.decodeURIComponent?decodeURIComponent(f[1].replace(/\+/g," =
")):unescape(f[1]):""}catch(i){}}return b}function Bc(){var =
a=3Dwindow,b=3DAc(document.URL);if(b.google_ad_override){a.google_ad_over=
ride=3Db.google_ad_override;a.google_adtest=3D"on"}}=0A=
function nc(a,b,c){if(a){var =
d=3Db.getElementById(a);if(d&&c&&c.length!=3D""){d.style.visibility=3D"vi=
sible";d.innerHTML=3Dc}}}var sc=3D/[+, =
]/;window.google_render_ad=3Duc;var =
Cc=3D{google:1,googlegroups:1,gmail:1,googlemail:1,googleimages:1,googlep=
rint:1};function Dc(a){var =
b=3Da.google_page_location||a.google_page_url;if(!b)return =
g;b=3Db.toString();if(b.indexOf("http://")=3D=3D0)b=3Db.substring(7,b.len=
gth);else =
if(b.indexOf("https://")=3D=3D0)b=3Db.substring(8,b.length);var =
c=3Db.indexOf("/");if(c=3D=3D-1)c=3Db.length;var =
d=3Db.substring(0,c),e=3Dd.split("."),f=3Dg;if(e.length>=3D3)f=3De[e.leng=
th-3]in Cc;if(e.length>=3D2)f=3Df||e[e.length-2]in Cc;return f}=0A=
function dc(a,b,c){if(Dc(a)){a.google_new_domain_checked=3D1;return =
g}if(a.google_new_domain_checked=3D=3D0){var =
d=3DMath.random();if(d<=3Dc){var =
e=3D"http://"+fa+"/pagead/test_domain.js",f=3D"script";b.write("<"+f+' =
src=3D"'+e+'"></'+f+">");a.google_new_domain_checked=3D1;return =
m}}return g}function =
rc(a){if(!Dc(a)&&a.google_new_domain_enabled=3D=3D1)return"http://"+fa;re=
turn"http://"+ga};Bc();wc(vc);ac(window,document);=0A=
})()=0A=

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/look/yui/yahoo/yahoo.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.2.2=0A=
*/=0A=
/**=0A=
 * The YAHOO object is the single global object used by YUI Library.  It=0A=
 * contains utility function for setting up namespaces, inheritance, and=0A=
 * logging.  YAHOO.util, YAHOO.widget, and YAHOO.example are namespaces=0A=
 * created automatically for and used by the library.=0A=
 * @module yahoo=0A=
 * @title  YAHOO Global=0A=
 */=0A=
=0A=
/**=0A=
 * YAHOO_config is not included part of the library.  Instead it is an =
object=0A=
 * that can be defined by the implementer immediately before including =
the=0A=
 * YUI library.  The properties included in this object will be used to=0A=
 * configure global properties needed as soon as the library begins to =
load.=0A=
 * @class YAHOO_config=0A=
 * @static=0A=
 */=0A=
=0A=
/**=0A=
 * A reference to a function that will be executed every time a YAHOO =
module=0A=
 * is loaded.  As parameter, this function will receive the version=0A=
 * information for the module. See <a href=3D"YAHOO.env.html#getVersion">=0A=
 * YAHOO.env.getVersion</a> for the description of the version data =
structure.=0A=
 * @property listener=0A=
 * @static=0A=
 */=0A=
if (typeof YAHOO =3D=3D "undefined") {=0A=
    /**=0A=
     * The YAHOO global namespace object.  If YAHOO is already defined, =
the=0A=
     * existing YAHOO object will not be overwritten so that defined=0A=
     * namespaces are preserved.=0A=
     * @class YAHOO=0A=
     * @static=0A=
     */=0A=
    var YAHOO =3D {};=0A=
}=0A=
=0A=
/**=0A=
 * Returns the namespace specified and creates it if it doesn't exist=0A=
 * <pre>=0A=
 * YAHOO.namespace("property.package");=0A=
 * YAHOO.namespace("YAHOO.property.package");=0A=
 * </pre>=0A=
 * Either of the above would create YAHOO.property, then=0A=
 * YAHOO.property.package=0A=
 *=0A=
 * Be careful when naming packages. Reserved words may work in some =
browsers=0A=
 * and not others. For instance, the following will fail in Safari:=0A=
 * <pre>=0A=
 * YAHOO.namespace("really.long.nested.namespace");=0A=
 * </pre>=0A=
 * This fails because "long" is a future reserved word in ECMAScript=0A=
 *=0A=
 * @method namespace=0A=
 * @static=0A=
 * @param  {String*} arguments 1-n namespaces to create =0A=
 * @return {Object}  A reference to the last namespace object created=0A=
 */=0A=
YAHOO.namespace =3D function() {=0A=
    var a=3Darguments, o=3Dnull, i, j, d;=0A=
    for (i=3D0; i<a.length; i=3Di+1) {=0A=
        d=3Da[i].split(".");=0A=
        o=3DYAHOO;=0A=
=0A=
        // YAHOO is implied, so it is ignored if it is included=0A=
        for (j=3D(d[0] =3D=3D "YAHOO") ? 1 : 0; j<d.length; j=3Dj+1) {=0A=
            o[d[j]]=3Do[d[j]] || {};=0A=
            o=3Do[d[j]];=0A=
        }=0A=
    }=0A=
=0A=
    return o;=0A=
};=0A=
=0A=
/**=0A=
 * Uses YAHOO.widget.Logger to output a log message, if the widget is=0A=
 * available.=0A=
 *=0A=
 * @method log=0A=
 * @static=0A=
 * @param  {String}  msg  The message to log.=0A=
 * @param  {String}  cat  The log category for the message.  Default=0A=
 *                        categories are "info", "warn", "error", time".=0A=
 *                        Custom categories can be used as well. (opt)=0A=
 * @param  {String}  src  The source of the the message (opt)=0A=
 * @return {Boolean}      True if the log operation was successful.=0A=
 */=0A=
YAHOO.log =3D function(msg, cat, src) {=0A=
    var l=3DYAHOO.widget.Logger;=0A=
    if(l && l.log) {=0A=
        return l.log(msg, cat, src);=0A=
    } else {=0A=
        return false;=0A=
    }=0A=
};=0A=
=0A=
=0A=
/**=0A=
 * Initializes the global by creating the default namespaces and applying=0A=
 * any new configuration information that is detected.=0A=
 * @method init=0A=
 * @static=0A=
 */=0A=
YAHOO.init =3D function() {=0A=
    this.namespace("util", "widget", "example");=0A=
    if (typeof YAHOO_config !=3D "undefined") {=0A=
        var =
l=3DYAHOO_config.listener,ls=3DYAHOO.env.listeners,unique=3Dtrue,i;=0A=
        if (l) {=0A=
            // if YAHOO is loaded multiple times we need to check to see =
if=0A=
            // this is a new config object.  If it is, add the new =
component=0A=
            // load listener to the stack=0A=
            for (i=3D0;i<ls.length;i=3Di+1) {=0A=
                if (ls[i]=3D=3Dl) {=0A=
                    unique=3Dfalse;=0A=
                    break;=0A=
                }=0A=
            }=0A=
            if (unique) {=0A=
                ls.push(l);=0A=
            }=0A=
        }=0A=
    }=0A=
};=0A=
=0A=
/**=0A=
 * Registers a module with the YAHOO object=0A=
 * @method register=0A=
 * @static=0A=
 * @param {String}   name    the name of the module (event, slider, etc)=0A=
 * @param {Function} mainClass a reference to class in the module.  This=0A=
 *                             class will be tagged with the version info=0A=
 *                             so that it will be possible to identify =
the=0A=
 *                             version that is in use when multiple =
versions=0A=
 *                             have loaded=0A=
 * @param {Object}   data      metadata object for the module.  =
Currently it=0A=
 *                             is expected to contain a "version" =
property=0A=
 *                             and a "build" property at minimum.=0A=
 */=0A=
YAHOO.register =3D function(name, mainClass, data) {=0A=
    var mods =3D YAHOO.env.modules;=0A=
    if (!mods[name]) {=0A=
        mods[name] =3D { versions:[], builds:[] };=0A=
    }=0A=
    var =
m=3Dmods[name],v=3Ddata.version,b=3Ddata.build,ls=3DYAHOO.env.listeners;=0A=
    m.name =3D name;=0A=
    m.version =3D v;=0A=
    m.build =3D b;=0A=
    m.versions.push(v);=0A=
    m.builds.push(b);=0A=
    m.mainClass =3D mainClass;=0A=
    // fire the module load listeners=0A=
    for (var i=3D0;i<ls.length;i=3Di+1) {=0A=
        ls[i](m);=0A=
    }=0A=
    // label the main class=0A=
    if (mainClass) {=0A=
        mainClass.VERSION =3D v;=0A=
        mainClass.BUILD =3D b;=0A=
    } else {=0A=
        YAHOO.log("mainClass is undefined for module " + name, "warn");=0A=
    }=0A=
};=0A=
=0A=
/**=0A=
 * YAHOO.env is used to keep track of what is known about the YUI =
library and=0A=
 * the browsing environment=0A=
 * @class YAHOO.env=0A=
 * @type Object=0A=
 * @static=0A=
 */=0A=
YAHOO.env =3D YAHOO.env || {=0A=
    /**=0A=
     * Keeps the version info for all YUI modules that have reported =
themselves=0A=
     * @property modules=0A=
     * @type Object[]=0A=
     */=0A=
    modules: [],=0A=
    =0A=
    /**=0A=
     * List of functions that should be executed every time a YUI module=0A=
     * reports itself.=0A=
     * @property listeners=0A=
     * @type Function[]=0A=
     */=0A=
    listeners: [],=0A=
    =0A=
    /**=0A=
     * Returns the version data for the specified module:=0A=
     *      <dl>=0A=
     *      <dt>name:</dt>      <dd>The name of the module</dd>=0A=
     *      <dt>version:</dt>   <dd>The version in use</dd>=0A=
     *      <dt>build:</dt>     <dd>The build number in use</dd>=0A=
     *      <dt>versions:</dt>  <dd>All versions that were =
registered</dd>=0A=
     *      <dt>builds:</dt>    <dd>All builds that were registered.</dd>=0A=
     *      <dt>mainClass:</dt> <dd>An object that was was stamped with =
the=0A=
     *                 current version and build. If =0A=
     *                 mainClass.VERSION !=3D version or mainClass.BUILD =
!=3D build,=0A=
     *                 multiple versions of pieces of the library have =
been=0A=
     *                 loaded, potentially causing issues.</dd>=0A=
     *       </dl>=0A=
     *=0A=
     * @method getVersion=0A=
     * @static=0A=
     * @param {String}  name the name of the module (event, slider, etc)=0A=
     * @return {Object} The version info=0A=
     */=0A=
    getVersion: function(name) {=0A=
        return YAHOO.env.modules[name] || null;=0A=
    }=0A=
};=0A=
=0A=
/**=0A=
 * Provides the language utilites and extensions used by the library=0A=
 * @class YAHOO.lang=0A=
 */=0A=
YAHOO.lang =3D {=0A=
    /**=0A=
     * Determines whether or not the provided object is an array=0A=
     * @method isArray=0A=
     * @param {any} obj The object being testing=0A=
     * @return Boolean=0A=
     */=0A=
    isArray: function(obj) { // frames lose type, so test constructor =
string=0A=
        if (obj && obj.constructor && =0A=
                   obj.constructor.toString().indexOf('Array') > -1) {=0A=
            return true;=0A=
        } else {=0A=
            return YAHOO.lang.isObject(obj) && obj.constructor =3D=3D =
Array;=0A=
        }=0A=
    },=0A=
=0A=
    /**=0A=
     * Determines whether or not the provided object is a boolean=0A=
     * @method isBoolean=0A=
     * @param {any} obj The object being testing=0A=
     * @return Boolean=0A=
     */=0A=
    isBoolean: function(obj) {=0A=
        return typeof obj =3D=3D 'boolean';=0A=
    },=0A=
    =0A=
    /**=0A=
     * Determines whether or not the provided object is a function=0A=
     * @method isFunction=0A=
     * @param {any} obj The object being testing=0A=
     * @return Boolean=0A=
     */=0A=
    isFunction: function(obj) {=0A=
        return typeof obj =3D=3D 'function';=0A=
    },=0A=
        =0A=
    /**=0A=
     * Determines whether or not the provided object is null=0A=
     * @method isNull=0A=
     * @param {any} obj The object being testing=0A=
     * @return Boolean=0A=
     */=0A=
    isNull: function(obj) {=0A=
        return obj =3D=3D=3D null;=0A=
    },=0A=
        =0A=
    /**=0A=
     * Determines whether or not the provided object is a legal number=0A=
     * @method isNumber=0A=
     * @param {any} obj The object being testing=0A=
     * @return Boolean=0A=
     */=0A=
    isNumber: function(obj) {=0A=
        return typeof obj =3D=3D 'number' && isFinite(obj);=0A=
    },=0A=
      =0A=
    /**=0A=
     * Determines whether or not the provided object is of type object=0A=
     * or function=0A=
     * @method isObject=0A=
     * @param {any} obj The object being testing=0A=
     * @return Boolean=0A=
     */  =0A=
    isObject: function(obj) {=0A=
        return obj && (typeof obj =3D=3D 'object' || =
YAHOO.lang.isFunction(obj));=0A=
    },=0A=
        =0A=
    /**=0A=
     * Determines whether or not the provided object is a string=0A=
     * @method isString=0A=
     * @param {any} obj The object being testing=0A=
     * @return Boolean=0A=
     */=0A=
    isString: function(obj) {=0A=
        return typeof obj =3D=3D 'string';=0A=
    },=0A=
        =0A=
    /**=0A=
     * Determines whether or not the provided object is undefined=0A=
     * @method isUndefined=0A=
     * @param {any} obj The object being testing=0A=
     * @return Boolean=0A=
     */=0A=
    isUndefined: function(obj) {=0A=
        return typeof obj =3D=3D 'undefined';=0A=
    },=0A=
    =0A=
    /**=0A=
     * Determines whether or not the property was added=0A=
     * to the object instance.  Returns false if the property is not =
present=0A=
     * in the object, or was inherited from the prototype.=0A=
     * This abstraction is provided to enable hasOwnProperty for Safari =
1.3.x.=0A=
     * There is a discrepancy between YAHOO.lang.hasOwnProperty and=0A=
     * Object.prototype.hasOwnProperty when the property is a primitive =
added to=0A=
     * both the instance AND prototype with the same value:=0A=
     * <pre>=0A=
     * var A =3D function() {};=0A=
     * A.prototype.foo =3D 'foo';=0A=
     * var a =3D new A();=0A=
     * a.foo =3D 'foo';=0A=
     * alert(a.hasOwnProperty('foo')); // true=0A=
     * alert(YAHOO.lang.hasOwnProperty(a, 'foo')); // false when using =
fallback=0A=
     * </pre>=0A=
     * @method hasOwnProperty=0A=
     * @param {any} obj The object being testing=0A=
     * @return Boolean=0A=
     */=0A=
    hasOwnProperty: function(obj, prop) {=0A=
        if (Object.prototype.hasOwnProperty) {=0A=
            return obj.hasOwnProperty(prop);=0A=
        }=0A=
        =0A=
        return !YAHOO.lang.isUndefined(obj[prop]) && =0A=
                obj.constructor.prototype[prop] !=3D=3D obj[prop];=0A=
    },=0A=
        =0A=
    /**=0A=
     * Utility to set up the prototype, constructor and superclass =
properties to=0A=
     * support an inheritance strategy that can chain constructors and =
methods.=0A=
     *=0A=
     * @method extend=0A=
     * @static=0A=
     * @param {Function} subc   the object to modify=0A=
     * @param {Function} superc the object to inherit=0A=
     * @param {Object} overrides  additional properties/methods to add =
to the=0A=
     *                              subclass prototype.  These will =
override the=0A=
     *                              matching items obtained from the =
superclass =0A=
     *                              if present.=0A=
     */=0A=
    extend: function(subc, superc, overrides) {=0A=
        if (!superc||!subc) {=0A=
            throw new Error("YAHOO.lang.extend failed, please check that =
" +=0A=
                            "all dependencies are included.");=0A=
        }=0A=
        var F =3D function() {};=0A=
        F.prototype=3Dsuperc.prototype;=0A=
        subc.prototype=3Dnew F();=0A=
        subc.prototype.constructor=3Dsubc;=0A=
        subc.superclass=3Dsuperc.prototype;=0A=
        if (superc.prototype.constructor =3D=3D =
Object.prototype.constructor) {=0A=
            superc.prototype.constructor=3Dsuperc;=0A=
        }=0A=
    =0A=
        if (overrides) {=0A=
            for (var i in overrides) {=0A=
                subc.prototype[i]=3Doverrides[i];=0A=
            }=0A=
        }=0A=
    },=0A=
    =0A=
    /**=0A=
     * Applies all prototype properties in the supplier to the receiver =
if the=0A=
     * receiver does not have these properties yet.  Optionally, one or =
more=0A=
     * methods/properties can be specified (as additional parameters).  =
This=0A=
     * option will overwrite the property if receiver has it already.=0A=
     *=0A=
     * @method augment=0A=
     * @static=0A=
     * @param {Function} r  the object to receive the augmentation=0A=
     * @param {Function} s  the object that supplies the properties to =
augment=0A=
     * @param {String*}  arguments zero or more properties methods to =
augment the=0A=
     *                             receiver with.  If none specified, =
everything=0A=
     *                             in the supplier will be used unless =
it would=0A=
     *                             overwrite an existing property in the =
receiver=0A=
     */=0A=
    augment: function(r, s) {=0A=
        if (!s||!r) {=0A=
            throw new Error("YAHOO.lang.augment failed, please check =
that " +=0A=
                            "all dependencies are included.");=0A=
        }=0A=
        var rp=3Dr.prototype, sp=3Ds.prototype, a=3Darguments, i, p;=0A=
        if (a[2]) {=0A=
            for (i=3D2; i<a.length; i=3Di+1) {=0A=
                rp[a[i]] =3D sp[a[i]];=0A=
            }=0A=
        } else {=0A=
            for (p in sp) { =0A=
                if (!rp[p]) {=0A=
                    rp[p] =3D sp[p];=0A=
                }=0A=
            }=0A=
        }=0A=
    }=0A=
};=0A=
=0A=
YAHOO.init();=0A=
=0A=
/*=0A=
 * An alias for <a href=3D"YAHOO.lang.html">YAHOO.lang</a>=0A=
 * @class YAHOO.util.Lang=0A=
 */=0A=
YAHOO.util.Lang =3D YAHOO.lang;=0A=
=0A=
/**=0A=
 * An alias for <a =
href=3D"YAHOO.lang.html#augment">YAHOO.lang.augment</a>=0A=
 * @for YAHOO=0A=
 * @method augment=0A=
 * @static=0A=
 * @param {Function} r  the object to receive the augmentation=0A=
 * @param {Function} s  the object that supplies the properties to =
augment=0A=
 * @param {String*}  arguments zero or more properties methods to =
augment the=0A=
 *                             receiver with.  If none specified, =
everything=0A=
 *                             in the supplier will be used unless it =
would=0A=
 *                             overwrite an existing property in the =
receiver=0A=
 */=0A=
YAHOO.augment =3D YAHOO.lang.augment;=0A=
       =0A=
/**=0A=
 * An alias for <a href=3D"YAHOO.lang.html#extend">YAHOO.lang.extend</a>=0A=
 * @method extend=0A=
 * @static=0A=
 * @param {Function} subc   the object to modify=0A=
 * @param {Function} superc the object to inherit=0A=
 * @param {Object} overrides  additional properties/methods to add to the=0A=
 *                              subclass prototype.  These will override =
the=0A=
 *                              matching items obtained from the =
superclass =0A=
 *                              if present.=0A=
 */=0A=
YAHOO.extend =3D YAHOO.lang.extend;=0A=
=0A=
YAHOO.register("yahoo", YAHOO, {version: "2.2.2", build: "204"});=0A=

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/look/yui/event/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.2.2=0A=
*/=0A=
=0A=
/**=0A=
 * The CustomEvent class lets you define events for your application=0A=
 * that can be subscribed to by one or more independent component.=0A=
 *=0A=
 * @param {String}  type The type of event, which is passed to the =
callback=0A=
 *                  when the event fires=0A=
 * @param {Object}  oScope The context the event will fire from.  "this" =
will=0A=
 *                  refer to this object in the callback.  Default =
value: =0A=
 *                  the window object.  The listener can override this.=0A=
 * @param {boolean} silent pass true to prevent the event from writing to=0A=
 *                  the debugsystem=0A=
 * @param {int}     signature the signature that the custom event =
subscriber=0A=
 *                  will receive. YAHOO.util.CustomEvent.LIST or =0A=
 *                  YAHOO.util.CustomEvent.FLAT.  The default is=0A=
 *                  YAHOO.util.CustomEvent.LIST.=0A=
 * @namespace YAHOO.util=0A=
 * @class CustomEvent=0A=
 * @constructor=0A=
 */=0A=
YAHOO.util.CustomEvent =3D function(type, oScope, silent, signature) {=0A=
=0A=
    /**=0A=
     * The type of event, returned to subscribers when the event fires=0A=
     * @property type=0A=
     * @type string=0A=
     */=0A=
    this.type =3D type;=0A=
=0A=
    /**=0A=
     * The scope the the event will fire from by default.  Defaults to =
the window =0A=
     * obj=0A=
     * @property scope=0A=
     * @type object=0A=
     */=0A=
    this.scope =3D oScope || window;=0A=
=0A=
    /**=0A=
     * By default all custom events are logged in the debug build, set =
silent=0A=
     * to true to disable debug outpu for this event.=0A=
     * @property silent=0A=
     * @type boolean=0A=
     */=0A=
    this.silent =3D silent;=0A=
=0A=
    /**=0A=
     * Custom events support two styles of arguments provided to the =
event=0A=
     * subscribers.  =0A=
     * <ul>=0A=
     * <li>YAHOO.util.CustomEvent.LIST: =0A=
     *   <ul>=0A=
     *   <li>param1: event name</li>=0A=
     *   <li>param2: array of arguments sent to fire</li>=0A=
     *   <li>param3: <optional> a custom object supplied by the =
subscriber</li>=0A=
     *   </ul>=0A=
     * </li>=0A=
     * <li>YAHOO.util.CustomEvent.FLAT=0A=
     *   <ul>=0A=
     *   <li>param1: the first argument passed to fire.  If you need to=0A=
     *           pass multiple parameters, use and array or object =
literal</li>=0A=
     *   <li>param2: <optional> a custom object supplied by the =
subscriber</li>=0A=
     *   </ul>=0A=
     * </li>=0A=
     * </ul>=0A=
     *   @property signature=0A=
     *   @type int=0A=
     */=0A=
    this.signature =3D signature || YAHOO.util.CustomEvent.LIST;=0A=
=0A=
    /**=0A=
     * The subscribers to this event=0A=
     * @property subscribers=0A=
     * @type Subscriber[]=0A=
     */=0A=
    this.subscribers =3D [];=0A=
=0A=
    if (!this.silent) {=0A=
    }=0A=
=0A=
    var onsubscribeType =3D "_YUICEOnSubscribe";=0A=
=0A=
    // Only add subscribe events for events that are not generated by =0A=
    // CustomEvent=0A=
    if (type !=3D=3D onsubscribeType) {=0A=
=0A=
        /**=0A=
         * Custom events provide a custom event that fires whenever =
there is=0A=
         * a new subscriber to the event.  This provides an opportunity =
to=0A=
         * handle the case where there is a non-repeating event that has=0A=
         * already fired has a new subscriber.  =0A=
         *=0A=
         * @event subscribeEvent=0A=
         * @type YAHOO.util.CustomEvent=0A=
         * @param {Function} fn The function to execute=0A=
         * @param {Object}   obj An object to be passed along when the =
event =0A=
         *                       fires=0A=
         * @param {boolean|Object}  override If true, the obj passed in =
becomes =0A=
         *                                   the execution scope of the =
listener.=0A=
         *                                   if an object, that object =
becomes the=0A=
         *                                   the execution scope.=0A=
         */=0A=
        this.subscribeEvent =3D =0A=
                new YAHOO.util.CustomEvent(onsubscribeType, this, true);=0A=
=0A=
    } =0A=
};=0A=
=0A=
/**=0A=
 * Subscriber listener sigature constant.  The LIST type returns three=0A=
 * parameters: the event type, the array of args passed to fire, and=0A=
 * the optional custom object=0A=
 * @property YAHOO.util.CustomEvent.LIST=0A=
 * @static=0A=
 * @type int=0A=
 */=0A=
YAHOO.util.CustomEvent.LIST =3D 0;=0A=
=0A=
/**=0A=
 * Subscriber listener sigature constant.  The FLAT type returns two=0A=
 * parameters: the first argument passed to fire and the optional =0A=
 * custom object=0A=
 * @property YAHOO.util.CustomEvent.FLAT=0A=
 * @static=0A=
 * @type int=0A=
 */=0A=
YAHOO.util.CustomEvent.FLAT =3D 1;=0A=
=0A=
YAHOO.util.CustomEvent.prototype =3D {=0A=
=0A=
    /**=0A=
     * Subscribes the caller to this event=0A=
     * @method subscribe=0A=
     * @param {Function} fn        The function to execute=0A=
     * @param {Object}   obj       An object to be passed along when the =
event =0A=
     *                             fires=0A=
     * @param {boolean|Object}  override If true, the obj passed in =
becomes =0A=
     *                                   the execution scope of the =
listener.=0A=
     *                                   if an object, that object =
becomes the=0A=
     *                                   the execution scope.=0A=
     */=0A=
    subscribe: function(fn, obj, override) {=0A=
=0A=
        if (!fn) {=0A=
throw new Error("Invalid callback for subscriber to '" + this.type + =
"'");=0A=
        }=0A=
=0A=
        if (this.subscribeEvent) {=0A=
            this.subscribeEvent.fire(fn, obj, override);=0A=
        }=0A=
=0A=
        this.subscribers.push( new YAHOO.util.Subscriber(fn, obj, =
override) );=0A=
    },=0A=
=0A=
    /**=0A=
     * Unsubscribes subscribers.=0A=
     * @method unsubscribe=0A=
     * @param {Function} fn  The subscribed function to remove, if not =
supplied=0A=
     *                       all will be removed=0A=
     * @param {Object}   obj  The custom object passed to subscribe.  =
This is=0A=
     *                        optional, but if supplied will be used to=0A=
     *                        disambiguate multiple listeners that are =
the same=0A=
     *                        (e.g., you subscribe many object using a =
function=0A=
     *                        that lives on the prototype)=0A=
     * @return {boolean} True if the subscriber was found and detached.=0A=
     */=0A=
    unsubscribe: function(fn, obj) {=0A=
=0A=
        if (!fn) {=0A=
            return this.unsubscribeAll();=0A=
        }=0A=
=0A=
        var found =3D false;=0A=
        for (var i=3D0, len=3Dthis.subscribers.length; i<len; ++i) {=0A=
            var s =3D this.subscribers[i];=0A=
            if (s && s.contains(fn, obj)) {=0A=
                this._delete(i);=0A=
                found =3D true;=0A=
            }=0A=
        }=0A=
=0A=
        return found;=0A=
    },=0A=
=0A=
    /**=0A=
     * Notifies the subscribers.  The callback functions will be executed=0A=
     * from the scope specified when the event was created, and with the =0A=
     * following parameters:=0A=
     *   <ul>=0A=
     *   <li>The type of event</li>=0A=
     *   <li>All of the arguments fire() was executed with as an =
array</li>=0A=
     *   <li>The custom object (if any) that was passed into the =
subscribe() =0A=
     *       method</li>=0A=
     *   </ul>=0A=
     * @method fire =0A=
     * @param {Object*} arguments an arbitrary set of parameters to pass =
to =0A=
     *                            the handler.=0A=
     * @return {boolean} false if one of the subscribers returned false, =0A=
     *                   true otherwise=0A=
     */=0A=
    fire: function() {=0A=
        var len=3Dthis.subscribers.length;=0A=
        if (!len && this.silent) {=0A=
            return true;=0A=
        }=0A=
=0A=
        var args=3D[], ret=3Dtrue, i;=0A=
=0A=
        for (i=3D0; i<arguments.length; ++i) {=0A=
            args.push(arguments[i]);=0A=
        }=0A=
=0A=
        var argslength =3D args.length;=0A=
=0A=
        if (!this.silent) {=0A=
        }=0A=
=0A=
        for (i=3D0; i<len; ++i) {=0A=
            var s =3D this.subscribers[i];=0A=
            if (s) {=0A=
                if (!this.silent) {=0A=
                }=0A=
=0A=
                var scope =3D s.getScope(this.scope);=0A=
=0A=
                if (this.signature =3D=3D YAHOO.util.CustomEvent.FLAT) {=0A=
                    var param =3D null;=0A=
                    if (args.length > 0) {=0A=
                        param =3D args[0];=0A=
                    }=0A=
                    ret =3D s.fn.call(scope, param, s.obj);=0A=
                } else {=0A=
                    ret =3D s.fn.call(scope, this.type, args, s.obj);=0A=
                }=0A=
                if (false =3D=3D=3D ret) {=0A=
                    if (!this.silent) {=0A=
                    }=0A=
=0A=
                    //break;=0A=
                    return false;=0A=
                }=0A=
            }=0A=
        }=0A=
=0A=
        return true;=0A=
    },=0A=
=0A=
    /**=0A=
     * Removes all listeners=0A=
     * @method unsubscribeAll=0A=
     * @return {int} The number of listeners unsubscribed=0A=
     */=0A=
    unsubscribeAll: function() {=0A=
        for (var i=3D0, len=3Dthis.subscribers.length; i<len; ++i) {=0A=
            this._delete(len - 1 - i);=0A=
        }=0A=
=0A=
        return i;=0A=
    },=0A=
=0A=
    /**=0A=
     * @method _delete=0A=
     * @private=0A=
     */=0A=
    _delete: function(index) {=0A=
        var s =3D this.subscribers[index];=0A=
        if (s) {=0A=
            delete s.fn;=0A=
            delete s.obj;=0A=
        }=0A=
=0A=
        // delete this.subscribers[index];=0A=
        this.subscribers.splice(index, 1);=0A=
    },=0A=
=0A=
    /**=0A=
     * @method toString=0A=
     */=0A=
    toString: function() {=0A=
         return "CustomEvent: " + "'" + this.type  + "', " + =0A=
             "scope: " + this.scope;=0A=
=0A=
    }=0A=
};=0A=
=0A=
/////////////////////////////////////////////////////////////////////=0A=
=0A=
/**=0A=
 * Stores the subscriber information to be used when the event fires.=0A=
 * @param {Function} fn       The function to execute=0A=
 * @param {Object}   obj      An object to be passed along when the =
event fires=0A=
 * @param {boolean}  override If true, the obj passed in becomes the =
execution=0A=
 *                            scope of the listener=0A=
 * @class Subscriber=0A=
 * @constructor=0A=
 */=0A=
YAHOO.util.Subscriber =3D function(fn, obj, override) {=0A=
=0A=
    /**=0A=
     * The callback that will be execute when the event fires=0A=
     * @property fn=0A=
     * @type function=0A=
     */=0A=
    this.fn =3D fn;=0A=
=0A=
    /**=0A=
     * An optional custom object that will passed to the callback when=0A=
     * the event fires=0A=
     * @property obj=0A=
     * @type object=0A=
     */=0A=
    this.obj =3D obj || null;=0A=
=0A=
    /**=0A=
     * The default execution scope for the event listener is defined =
when the=0A=
     * event is created (usually the object which contains the event).=0A=
     * By setting override to true, the execution scope becomes the =
custom=0A=
     * object passed in by the subscriber.  If override is an object, =
that =0A=
     * object becomes the scope.=0A=
     * @property override=0A=
     * @type boolean|object=0A=
     */=0A=
    this.override =3D override;=0A=
=0A=
};=0A=
=0A=
/**=0A=
 * Returns the execution scope for this listener.  If override was set =
to true=0A=
 * the custom obj will be the scope.  If override is an object, that is =
the=0A=
 * scope, otherwise the default scope will be used.=0A=
 * @method getScope=0A=
 * @param {Object} defaultScope the scope to use if this listener does =
not=0A=
 *                              override it.=0A=
 */=0A=
YAHOO.util.Subscriber.prototype.getScope =3D function(defaultScope) {=0A=
    if (this.override) {=0A=
        if (this.override =3D=3D=3D true) {=0A=
            return this.obj;=0A=
        } else {=0A=
            return this.override;=0A=
        }=0A=
    }=0A=
    return defaultScope;=0A=
};=0A=
=0A=
/**=0A=
 * Returns true if the fn and obj match this objects properties.=0A=
 * Used by the unsubscribe method to match the right subscriber.=0A=
 *=0A=
 * @method contains=0A=
 * @param {Function} fn the function to execute=0A=
 * @param {Object} obj an object to be passed along when the event fires=0A=
 * @return {boolean} true if the supplied arguments match this =0A=
 *                   subscriber's signature.=0A=
 */=0A=
YAHOO.util.Subscriber.prototype.contains =3D function(fn, obj) {=0A=
    if (obj) {=0A=
        return (this.fn =3D=3D fn && this.obj =3D=3D obj);=0A=
    } else {=0A=
        return (this.fn =3D=3D fn);=0A=
    }=0A=
};=0A=
=0A=
/**=0A=
 * @method toString=0A=
 */=0A=
YAHOO.util.Subscriber.prototype.toString =3D function() {=0A=
    return "Subscriber { obj: " + (this.obj || "")  + =0A=
           ", override: " +  (this.override || "no") + " }";=0A=
};=0A=
=0A=
/**=0A=
 * The Event Utility provides utilities for managing DOM Events and tools=0A=
 * for building event systems=0A=
 *=0A=
 * @module event=0A=
 * @title Event Utility=0A=
 * @namespace YAHOO.util=0A=
 * @requires yahoo=0A=
 */=0A=
=0A=
// The first instance of Event will win if it is loaded more than once.=0A=
// @TODO this needs to be changed so that only the state data that needs =
to=0A=
// be preserved is kept, while methods are overwritten/added as needed.=0A=
// This means that the module pattern can't be used.=0A=
if (!YAHOO.util.Event) {=0A=
=0A=
/**=0A=
 * The event utility provides functions to add and remove event =
listeners,=0A=
 * event cleansing.  It also tries to automatically remove listeners it=0A=
 * registers during the unload event.=0A=
 *=0A=
 * @class Event=0A=
 * @static=0A=
 */=0A=
    YAHOO.util.Event =3D function() {=0A=
=0A=
        /**=0A=
         * True after the onload event has fired=0A=
         * @property loadComplete=0A=
         * @type boolean=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var loadComplete =3D  false;=0A=
=0A=
        /**=0A=
         * True when the document is initially usable=0A=
         * @property DOMReady=0A=
         * @type boolean=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var DOMReady =3D false;=0A=
=0A=
        /**=0A=
         * Cache of wrapped listeners=0A=
         * @property listeners=0A=
         * @type array=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var listeners =3D [];=0A=
=0A=
        /**=0A=
         * User-defined unload function that will be fired before all =
events=0A=
         * are detached=0A=
         * @property unloadListeners=0A=
         * @type array=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var unloadListeners =3D [];=0A=
=0A=
        /**=0A=
         * Cache of DOM0 event handlers to work around issues with DOM2 =
events=0A=
         * in Safari=0A=
         * @property legacyEvents=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var legacyEvents =3D [];=0A=
=0A=
        /**=0A=
         * Listener stack for DOM0 events=0A=
         * @property legacyHandlers=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var legacyHandlers =3D [];=0A=
=0A=
        /**=0A=
         * The number of times to poll after window.onload.  This number =
is=0A=
         * increased if additional late-bound handlers are requested =
after=0A=
         * the page load.=0A=
         * @property retryCount=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var retryCount =3D 0;=0A=
=0A=
        /**=0A=
         * onAvailable listeners=0A=
         * @property onAvailStack=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var onAvailStack =3D [];=0A=
=0A=
        /**=0A=
         * Lookup table for legacy events=0A=
         * @property legacyMap=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var legacyMap =3D [];=0A=
=0A=
        /**=0A=
         * Counter for auto id generation=0A=
         * @property counter=0A=
         * @static=0A=
         * @private=0A=
         */=0A=
        var counter =3D 0;=0A=
        =0A=
        /**=0A=
         * addListener/removeListener can throw errors in unexpected =
scenarios.=0A=
         * These errors are suppressed, the method returns false, and =
this property=0A=
         * is set=0A=
         * @property lastError=0A=
         * @type Error=0A=
         */=0A=
        var lastError =3D null;=0A=
=0A=
        return {=0A=
=0A=
            /**=0A=
             * The number of times we should look for elements that are =
not=0A=
             * in the DOM at the time the event is requested after the =
document=0A=
             * has been loaded.  The default is 200@amp;50 ms, so it =
will poll=0A=
             * for 10 seconds or until all outstanding handlers are bound=0A=
             * (whichever comes first).=0A=
             * @property POLL_RETRYS=0A=
             * @type int=0A=
             * @static=0A=
             * @final=0A=
             */=0A=
            POLL_RETRYS: 200,=0A=
=0A=
            /**=0A=
             * The poll interval in milliseconds=0A=
             * @property POLL_INTERVAL=0A=
             * @type int=0A=
             * @static=0A=
             * @final=0A=
             */=0A=
            POLL_INTERVAL: 10,=0A=
=0A=
            /**=0A=
             * Element to bind, int constant=0A=
             * @property EL=0A=
             * @type int=0A=
             * @static=0A=
             * @final=0A=
             */=0A=
            EL: 0,=0A=
=0A=
            /**=0A=
             * Type of event, int constant=0A=
             * @property TYPE=0A=
             * @type int=0A=
             * @static=0A=
             * @final=0A=
             */=0A=
            TYPE: 1,=0A=
=0A=
            /**=0A=
             * Function to execute, int constant=0A=
             * @property FN=0A=
             * @type int=0A=
             * @static=0A=
             * @final=0A=
             */=0A=
            FN: 2,=0A=
=0A=
            /**=0A=
             * Function wrapped for scope correction and cleanup, int =
constant=0A=
             * @property WFN=0A=
             * @type int=0A=
             * @static=0A=
             * @final=0A=
             */=0A=
            WFN: 3,=0A=
=0A=
            /**=0A=
             * Object passed in by the user that will be returned as a =0A=
             * parameter to the callback, int constant=0A=
             * @property OBJ=0A=
             * @type int=0A=
             * @static=0A=
             * @final=0A=
             */=0A=
            OBJ: 3,=0A=
=0A=
            /**=0A=
             * Adjusted scope, either the element we are registering the =
event=0A=
             * on or the custom object passed in by the listener, int =
constant=0A=
             * @property ADJ_SCOPE=0A=
             * @type int=0A=
             * @static=0A=
             * @final=0A=
             */=0A=
            ADJ_SCOPE: 4,=0A=
=0A=
            /**=0A=
             * Safari detection is necessary to work around the =
preventDefault=0A=
             * bug that makes it so you can't cancel a href click from =
the =0A=
             * handler.  Since this function has been used outside of =
this=0A=
             * utility, it was changed to detect all KHTML browser to be =
more=0A=
             * friendly towards the non-Safari browsers that share the =
engine.=0A=
             * Internally, the preventDefault bug detection now uses the=0A=
             * webkit property.=0A=
             * @property isSafari=0A=
             * @private=0A=
             * @static=0A=
             * @deprecated=0A=
             */=0A=
            isSafari: (/KHTML/gi).test(navigator.userAgent),=0A=
            =0A=
            /**=0A=
             * If WebKit is detected, we keep track of the version =
number of=0A=
             * the engine.  The webkit property will contain a string =
with=0A=
             * the webkit version number if webkit is detected, null=0A=
             * otherwise.=0A=
             * Safari 1.3.2 (312.6): 312.8.1 <-- currently the latest=0A=
             *                       available on Mac OSX 10.3.=0A=
             * Safari 2.0.2: 416 <-- hasOwnProperty introduced=0A=
             * Safari 2.0.4: 418 <-- preventDefault fixed (I believe)=0A=
             * Safari 2.0.4 (419.3): 418.9.1 <-- current release=0A=
             *=0A=
             * http://developer.apple.com/internet/safari/uamatrix.html=0A=
             * @property webkit=0A=
             * @type string=0A=
             * @static=0A=
             */=0A=
            webkit: function() {=0A=
                var v=3Dnavigator.userAgent.match(/AppleWebKit\/([^ =
]*)/);=0A=
                if (v&&v[1]) {=0A=
                    return v[1];=0A=
                }=0A=
                return null;=0A=
            }(),=0A=
            =0A=
            /**=0A=
             * IE detection needed to properly calculate pageX and =
pageY.  =0A=
             * capabilities checking didn't seem to work because another =0A=
             * browser that does not provide the properties have the =
values =0A=
             * calculated in a different manner than IE.=0A=
             * @property isIE=0A=
             * @private=0A=
             * @static=0A=
             */=0A=
            isIE: (!this.webkit && !navigator.userAgent.match(/opera/gi) =
&& =0A=
                    navigator.userAgent.match(/msie/gi)),=0A=
=0A=
            /**=0A=
             * poll handle=0A=
             * @property _interval=0A=
             * @private=0A=
             */=0A=
            _interval: null,=0A=
=0A=
            /**=0A=
             * @method startInterval=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            startInterval: function() {=0A=
                if (!this._interval) {=0A=
                    var self =3D this;=0A=
                    var callback =3D function() { =
self._tryPreloadAttach(); };=0A=
                    this._interval =3D setInterval(callback, =
this.POLL_INTERVAL);=0A=
                }=0A=
            },=0A=
=0A=
            /**=0A=
             * Executes the supplied callback when the item with the =
supplied=0A=
             * id is found.  This is meant to be used to execute =
behavior as=0A=
             * soon as possible as the page loads.  If you use this =
after the=0A=
             * initial page load it will poll for a fixed time for the =
element.=0A=
             * The number of times it will poll and the frequency are=0A=
             * configurable.  By default it will poll for 10 seconds.=0A=
             *=0A=
             * @method onAvailable=0A=
             *=0A=
             * @param {string}   p_id the id of the element to look for.=0A=
             * @param {function} p_fn what to execute when the element =
is found.=0A=
             * @param {object}   p_obj an optional object to be passed =
back as=0A=
             *                   a parameter to p_fn.=0A=
             * @param {boolean}  p_override If set to true, p_fn will =
execute=0A=
             *                   in the scope of p_obj=0A=
             *=0A=
             * @static=0A=
             */=0A=
            onAvailable: function(p_id, p_fn, p_obj, p_override) {=0A=
                onAvailStack.push( { id:         p_id, =0A=
                                     fn:         p_fn, =0A=
                                     obj:        p_obj, =0A=
                                     override:   p_override, =0A=
                                     checkReady: false    } );=0A=
                retryCount =3D this.POLL_RETRYS;=0A=
                this.startInterval();=0A=
            },=0A=
=0A=
            /**=0A=
             * Executes the supplied callback when the DOM is first =
usable.=0A=
             *=0A=
             * @method onDOMReady=0A=
             *=0A=
             * @param {function} p_fn what to execute when the element =
is found.=0A=
             * @param {object}   p_obj an optional object to be passed =
back as=0A=
             *                   a parameter to p_fn.=0A=
             * @param {boolean}  p_scope If set to true, p_fn will =
execute=0A=
             *                   in the scope of p_obj, if set to an =
object it=0A=
             *                   will execute in the scope of that object=0A=
             *=0A=
             * @static=0A=
             */=0A=
            onDOMReady: function(p_fn, p_obj, p_override) {=0A=
                this.DOMReadyEvent.subscribe(p_fn, p_obj, p_override);=0A=
            },=0A=
=0A=
            /**=0A=
             * Works the same way as onAvailable, but additionally =
checks the=0A=
             * state of sibling elements to determine if the content of =
the=0A=
             * available element is safe to modify.=0A=
             *=0A=
             * @method onContentReady=0A=
             *=0A=
             * @param {string}   p_id the id of the element to look for.=0A=
             * @param {function} p_fn what to execute when the element =
is ready.=0A=
             * @param {object}   p_obj an optional object to be passed =
back as=0A=
             *                   a parameter to p_fn.=0A=
             * @param {boolean}  p_override If set to true, p_fn will =
execute=0A=
             *                   in the scope of p_obj=0A=
             *=0A=
             * @static=0A=
             */=0A=
            onContentReady: function(p_id, p_fn, p_obj, p_override) {=0A=
                onAvailStack.push( { id:         p_id, =0A=
                                     fn:         p_fn, =0A=
                                     obj:        p_obj, =0A=
                                     override:   p_override,=0A=
                                     checkReady: true      } );=0A=
=0A=
                retryCount =3D this.POLL_RETRYS;=0A=
                this.startInterval();=0A=
            },=0A=
=0A=
            /**=0A=
             * Appends an event handler=0A=
             *=0A=
             * @method addListener=0A=
             *=0A=
             * @param {Object}   el        The html element to assign =
the =0A=
             *                             event to=0A=
             * @param {String}   sType     The type of event to append=0A=
             * @param {Function} fn        The method the event invokes=0A=
             * @param {Object}   obj    An arbitrary object that will be =0A=
             *                             passed as a parameter to the =
handler=0A=
             * @param {boolean}  override  If true, the obj passed in =
becomes=0A=
             *                             the execution scope of the =
listener=0A=
             * @return {boolean} True if the action was successful or =
defered,=0A=
             *                        false if one or more of the =
elements =0A=
             *                        could not have the listener =
attached,=0A=
             *                        or if the operation throws an =
exception.=0A=
             * @static=0A=
             */=0A=
            addListener: function(el, sType, fn, obj, override) {=0A=
=0A=
=0A=
                if (!fn || !fn.call) {=0A=
                    return false;=0A=
                }=0A=
=0A=
                // The el argument can be an array of elements or =
element ids.=0A=
                if ( this._isValidCollection(el)) {=0A=
                    var ok =3D true;=0A=
                    for (var i=3D0,len=3Del.length; i<len; ++i) {=0A=
                        ok =3D this.on(el[i], =0A=
                                       sType, =0A=
                                       fn, =0A=
                                       obj, =0A=
                                       override) && ok;=0A=
                    }=0A=
                    return ok;=0A=
=0A=
                } else if (typeof el =3D=3D "string") {=0A=
                    var oEl =3D this.getEl(el);=0A=
                    // If the el argument is a string, we assume it is =0A=
                    // actually the id of the element.  If the page is =
loaded=0A=
                    // we convert el to the actual element, otherwise we =0A=
                    // defer attaching the event until onload event fires=0A=
=0A=
                    // check to see if we need to delay hooking up the =
event =0A=
                    // until after the page loads.=0A=
                    if (oEl) {=0A=
                        el =3D oEl;=0A=
                    } else {=0A=
                        // defer adding the event until the element is =
available=0A=
                        this.onAvailable(el, function() {=0A=
                           YAHOO.util.Event.on(el, sType, fn, obj, =
override);=0A=
                        });=0A=
=0A=
                        return true;=0A=
                    }=0A=
                }=0A=
=0A=
                // Element should be an html element or an array if we =
get =0A=
                // here.=0A=
                if (!el) {=0A=
                    return false;=0A=
                }=0A=
=0A=
                // we need to make sure we fire registered unload events =0A=
                // prior to automatically unhooking them.  So we hang on =
to =0A=
                // these instead of attaching them to the window and =
fire the=0A=
                // handles explicitly during our one unload event.=0A=
                if ("unload" =3D=3D sType && obj !=3D=3D this) {=0A=
                    unloadListeners[unloadListeners.length] =3D=0A=
                            [el, sType, fn, obj, override];=0A=
                    return true;=0A=
                }=0A=
=0A=
=0A=
                // if the user chooses to override the scope, we use the =
custom=0A=
                // object passed in, otherwise the executing scope will =
be the=0A=
                // HTML element that the event is registered on=0A=
                var scope =3D el;=0A=
                if (override) {=0A=
                    if (override =3D=3D=3D true) {=0A=
                        scope =3D obj;=0A=
                    } else {=0A=
                        scope =3D override;=0A=
                    }=0A=
                }=0A=
=0A=
                // wrap the function so we can return the obj object when=0A=
                // the event fires;=0A=
                var wrappedFn =3D function(e) {=0A=
                        return fn.call(scope, =
YAHOO.util.Event.getEvent(e), =0A=
                                obj);=0A=
                    };=0A=
=0A=
                var li =3D [el, sType, fn, wrappedFn, scope];=0A=
                var index =3D listeners.length;=0A=
                // cache the listener so we can try to automatically =
unload=0A=
                listeners[index] =3D li;=0A=
=0A=
                if (this.useLegacyEvent(el, sType)) {=0A=
                    var legacyIndex =3D this.getLegacyIndex(el, sType);=0A=
=0A=
                    // Add a new dom0 wrapper if one is not detected for =
this=0A=
                    // element=0A=
                    if ( legacyIndex =3D=3D -1 || =0A=
                                el !=3D legacyEvents[legacyIndex][0] ) {=0A=
=0A=
                        legacyIndex =3D legacyEvents.length;=0A=
                        legacyMap[el.id + sType] =3D legacyIndex;=0A=
=0A=
                        // cache the signature for the DOM0 event, and =0A=
                        // include the existing handler for the event, =
if any=0A=
                        legacyEvents[legacyIndex] =3D =0A=
                            [el, sType, el["on" + sType]];=0A=
                        legacyHandlers[legacyIndex] =3D [];=0A=
=0A=
                        el["on" + sType] =3D =0A=
                            function(e) {=0A=
                                YAHOO.util.Event.fireLegacyEvent(=0A=
                                    YAHOO.util.Event.getEvent(e), =
legacyIndex);=0A=
                            };=0A=
                    }=0A=
=0A=
                    // add a reference to the wrapped listener to our =
custom=0A=
                    // stack of events=0A=
                    //legacyHandlers[legacyIndex].push(index);=0A=
                    legacyHandlers[legacyIndex].push(li);=0A=
=0A=
                } else {=0A=
                    try {=0A=
                        this._simpleAdd(el, sType, wrappedFn, false);=0A=
                    } catch(ex) {=0A=
                        // handle an error trying to attach an event.  =
If it fails=0A=
                        // we need to clean up the cache=0A=
                        this.lastError =3D ex;=0A=
                        this.removeListener(el, sType, fn);=0A=
                        return false;=0A=
                    }=0A=
                }=0A=
=0A=
                return true;=0A=
                =0A=
            },=0A=
=0A=
            /**=0A=
             * When using legacy events, the handler is routed to this =
object=0A=
             * so we can fire our custom listener stack.=0A=
             * @method fireLegacyEvent=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            fireLegacyEvent: function(e, legacyIndex) {=0A=
                var ok=3Dtrue,le,lh,li,scope,ret;=0A=
                =0A=
                lh =3D legacyHandlers[legacyIndex];=0A=
                for (var i=3D0,len=3Dlh.length; i<len; ++i) {=0A=
                    li =3D lh[i];=0A=
                    if ( li && li[this.WFN] ) {=0A=
                        scope =3D li[this.ADJ_SCOPE];=0A=
                        ret =3D li[this.WFN].call(scope, e);=0A=
                        ok =3D (ok && ret);=0A=
                    }=0A=
                }=0A=
=0A=
                // Fire the original handler if we replaced one.  We =
fire this=0A=
                // after the other events to keep =
stopPropagation/preventDefault=0A=
                // that happened in the DOM0 handler from touching our =
DOM2=0A=
                // substitute=0A=
                le =3D legacyEvents[legacyIndex];=0A=
                if (le && le[2]) {=0A=
                    le[2](e);=0A=
                }=0A=
                =0A=
                return ok;=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns the legacy event index that matches the supplied =0A=
             * signature=0A=
             * @method getLegacyIndex=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            getLegacyIndex: function(el, sType) {=0A=
                var key =3D this.generateId(el) + sType;=0A=
                if (typeof legacyMap[key] =3D=3D "undefined") { =0A=
                    return -1;=0A=
                } else {=0A=
                    return legacyMap[key];=0A=
                }=0A=
            },=0A=
=0A=
            /**=0A=
             * Logic that determines when we should automatically use =
legacy=0A=
             * events instead of DOM2 events.  Currently this is limited =
to old=0A=
             * Safari browsers with a broken preventDefault=0A=
             * @method useLegacyEvent=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            useLegacyEvent: function(el, sType) {=0A=
                if (this.webkit && ("click"=3D=3DsType || =
"dblclick"=3D=3DsType)) {=0A=
                    var v =3D parseInt(this.webkit, 10);=0A=
                    if (!isNaN(v) && v<418) {=0A=
                        return true;=0A=
                    }=0A=
                }=0A=
                return false;=0A=
            },=0A=
                    =0A=
            /**=0A=
             * Removes an event handler=0A=
             *=0A=
             * @method removeListener=0A=
             *=0A=
             * @param {Object} el the html element or the id of the =
element to =0A=
             * assign the event to.=0A=
             * @param {String} sType the type of event to remove.=0A=
             * @param {Function} fn the method the event invokes.  If fn =
is=0A=
             * undefined, then all event handlers for the type of event =
are =0A=
             * removed.=0A=
             * @return {boolean} true if the unbind was successful, =
false =0A=
             * otherwise.=0A=
             * @static=0A=
             */=0A=
            removeListener: function(el, sType, fn) {=0A=
                var i, len;=0A=
=0A=
                // The el argument can be a string=0A=
                if (typeof el =3D=3D "string") {=0A=
                    el =3D this.getEl(el);=0A=
                // The el argument can be an array of elements or =
element ids.=0A=
                } else if ( this._isValidCollection(el)) {=0A=
                    var ok =3D true;=0A=
                    for (i=3D0,len=3Del.length; i<len; ++i) {=0A=
                        ok =3D ( this.removeListener(el[i], sType, fn) =
&& ok );=0A=
                    }=0A=
                    return ok;=0A=
                }=0A=
=0A=
                if (!fn || !fn.call) {=0A=
                    //return false;=0A=
                    return this.purgeElement(el, false, sType);=0A=
                }=0A=
=0A=
=0A=
                if ("unload" =3D=3D sType) {=0A=
=0A=
                    for (i=3D0, len=3DunloadListeners.length; i<len; =
i++) {=0A=
                        var li =3D unloadListeners[i];=0A=
                        if (li && =0A=
                            li[0] =3D=3D el && =0A=
                            li[1] =3D=3D sType && =0A=
                            li[2] =3D=3D fn) {=0A=
                                unloadListeners.splice(i, 1);=0A=
                                return true;=0A=
                        }=0A=
                    }=0A=
=0A=
                    return false;=0A=
                }=0A=
=0A=
                var cacheItem =3D null;=0A=
=0A=
                // The index is a hidden parameter; needed to remove it =
from=0A=
                // the method signature because it was tempting users to=0A=
                // try and take advantage of it, which is not possible.=0A=
                var index =3D arguments[3];=0A=
  =0A=
                if ("undefined" =3D=3D typeof index) {=0A=
                    index =3D this._getCacheIndex(el, sType, fn);=0A=
                }=0A=
=0A=
                if (index >=3D 0) {=0A=
                    cacheItem =3D listeners[index];=0A=
                }=0A=
=0A=
                if (!el || !cacheItem) {=0A=
                    return false;=0A=
                }=0A=
=0A=
=0A=
                if (this.useLegacyEvent(el, sType)) {=0A=
                    var legacyIndex =3D this.getLegacyIndex(el, sType);=0A=
                    var llist =3D legacyHandlers[legacyIndex];=0A=
                    if (llist) {=0A=
                        for (i=3D0, len=3Dllist.length; i<len; ++i) {=0A=
                            li =3D llist[i];=0A=
                            if (li && =0A=
                                li[this.EL] =3D=3D el && =0A=
                                li[this.TYPE] =3D=3D sType && =0A=
                                li[this.FN] =3D=3D fn) {=0A=
                                    llist.splice(i, 1);=0A=
                                    break;=0A=
                            }=0A=
                        }=0A=
                    }=0A=
=0A=
                } else {=0A=
                    try {=0A=
                        this._simpleRemove(el, sType, =
cacheItem[this.WFN], false);=0A=
                    } catch(ex) {=0A=
                        this.lastError =3D ex;=0A=
                        return false;=0A=
                    }=0A=
                }=0A=
=0A=
                // removed the wrapped handler=0A=
                delete listeners[index][this.WFN];=0A=
                delete listeners[index][this.FN];=0A=
                listeners.splice(index, 1);=0A=
=0A=
                return true;=0A=
=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns the event's target element=0A=
             * @method getTarget=0A=
             * @param {Event} ev the event=0A=
             * @param {boolean} resolveTextNode when set to true the =
target's=0A=
             *                  parent will be returned if the target is =
a =0A=
             *                  text node.  @deprecated, the text node is=0A=
             *                  now resolved automatically=0A=
             * @return {HTMLElement} the event's target=0A=
             * @static=0A=
             */=0A=
            getTarget: function(ev, resolveTextNode) {=0A=
                var t =3D ev.target || ev.srcElement;=0A=
                return this.resolveTextNode(t);=0A=
            },=0A=
=0A=
            /**=0A=
             * In some cases, some browsers will return a text node =
inside=0A=
             * the actual element that was targeted.  This normalizes the=0A=
             * return value for getTarget and getRelatedTarget.=0A=
             * @method resolveTextNode=0A=
             * @param {HTMLElement} node node to resolve=0A=
             * @return {HTMLElement} the normized node=0A=
             * @static=0A=
             */=0A=
            resolveTextNode: function(node) {=0A=
                // if (node && node.nodeName && =0A=
                        // "#TEXT" =3D=3D node.nodeName.toUpperCase()) {=0A=
                if (node && 3 =3D=3D node.nodeType) {=0A=
                    return node.parentNode;=0A=
                } else {=0A=
                    return node;=0A=
                }=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns the event's pageX=0A=
             * @method getPageX=0A=
             * @param {Event} ev the event=0A=
             * @return {int} the event's pageX=0A=
             * @static=0A=
             */=0A=
            getPageX: function(ev) {=0A=
                var x =3D ev.pageX;=0A=
                if (!x && 0 !=3D=3D x) {=0A=
                    x =3D ev.clientX || 0;=0A=
=0A=
                    if ( this.isIE ) {=0A=
                        x +=3D this._getScrollLeft();=0A=
                    }=0A=
                }=0A=
=0A=
                return x;=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns the event's pageY=0A=
             * @method getPageY=0A=
             * @param {Event} ev the event=0A=
             * @return {int} the event's pageY=0A=
             * @static=0A=
             */=0A=
            getPageY: function(ev) {=0A=
                var y =3D ev.pageY;=0A=
                if (!y && 0 !=3D=3D y) {=0A=
                    y =3D ev.clientY || 0;=0A=
=0A=
                    if ( this.isIE ) {=0A=
                        y +=3D this._getScrollTop();=0A=
                    }=0A=
                }=0A=
=0A=
=0A=
                return y;=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns the pageX and pageY properties as an indexed =
array.=0A=
             * @method getXY=0A=
             * @param {Event} ev the event=0A=
             * @return {[x, y]} the pageX and pageY properties of the =
event=0A=
             * @static=0A=
             */=0A=
            getXY: function(ev) {=0A=
                return [this.getPageX(ev), this.getPageY(ev)];=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns the event's related target =0A=
             * @method getRelatedTarget=0A=
             * @param {Event} ev the event=0A=
             * @return {HTMLElement} the event's relatedTarget=0A=
             * @static=0A=
             */=0A=
            getRelatedTarget: function(ev) {=0A=
                var t =3D ev.relatedTarget;=0A=
                if (!t) {=0A=
                    if (ev.type =3D=3D "mouseout") {=0A=
                        t =3D ev.toElement;=0A=
                    } else if (ev.type =3D=3D "mouseover") {=0A=
                        t =3D ev.fromElement;=0A=
                    }=0A=
                }=0A=
=0A=
                return this.resolveTextNode(t);=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns the time of the event.  If the time is not =
included, the=0A=
             * event is modified using the current time.=0A=
             * @method getTime=0A=
             * @param {Event} ev the event=0A=
             * @return {Date} the time of the event=0A=
             * @static=0A=
             */=0A=
            getTime: function(ev) {=0A=
                if (!ev.time) {=0A=
                    var t =3D new Date().getTime();=0A=
                    try {=0A=
                        ev.time =3D t;=0A=
                    } catch(ex) { =0A=
                        this.lastError =3D ex;=0A=
                        return t;=0A=
                    }=0A=
                }=0A=
=0A=
                return ev.time;=0A=
            },=0A=
=0A=
            /**=0A=
             * Convenience method for stopPropagation + preventDefault=0A=
             * @method stopEvent=0A=
             * @param {Event} ev the event=0A=
             * @static=0A=
             */=0A=
            stopEvent: function(ev) {=0A=
                this.stopPropagation(ev);=0A=
                this.preventDefault(ev);=0A=
            },=0A=
=0A=
            /**=0A=
             * Stops event propagation=0A=
             * @method stopPropagation=0A=
             * @param {Event} ev the event=0A=
             * @static=0A=
             */=0A=
            stopPropagation: function(ev) {=0A=
                if (ev.stopPropagation) {=0A=
                    ev.stopPropagation();=0A=
                } else {=0A=
                    ev.cancelBubble =3D true;=0A=
                }=0A=
            },=0A=
=0A=
            /**=0A=
             * Prevents the default behavior of the event=0A=
             * @method preventDefault=0A=
             * @param {Event} ev the event=0A=
             * @static=0A=
             */=0A=
            preventDefault: function(ev) {=0A=
                if (ev.preventDefault) {=0A=
                    ev.preventDefault();=0A=
                } else {=0A=
                    ev.returnValue =3D false;=0A=
                }=0A=
            },=0A=
             =0A=
            /**=0A=
             * Finds the event in the window object, the caller's =
arguments, or=0A=
             * in the arguments of another method in the callstack.  =
This is=0A=
             * executed automatically for events registered through the =
event=0A=
             * manager, so the implementer should not normally need to =
execute=0A=
             * this function at all.=0A=
             * @method getEvent=0A=
             * @param {Event} e the event parameter from the handler=0A=
             * @return {Event} the event =0A=
             * @static=0A=
             */=0A=
            getEvent: function(e) {=0A=
                var ev =3D e || window.event;=0A=
=0A=
                if (!ev) {=0A=
                    var c =3D this.getEvent.caller;=0A=
                    while (c) {=0A=
                        ev =3D c.arguments[0];=0A=
                        if (ev && Event =3D=3D ev.constructor) {=0A=
                            break;=0A=
                        }=0A=
                        c =3D c.caller;=0A=
                    }=0A=
                }=0A=
=0A=
                return ev;=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns the charcode for an event=0A=
             * @method getCharCode=0A=
             * @param {Event} ev the event=0A=
             * @return {int} the event's charCode=0A=
             * @static=0A=
             */=0A=
            getCharCode: function(ev) {=0A=
                return ev.charCode || ev.keyCode || 0;=0A=
            },=0A=
=0A=
            /**=0A=
             * Locating the saved event handler data by function ref=0A=
             *=0A=
             * @method _getCacheIndex=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _getCacheIndex: function(el, sType, fn) {=0A=
                for (var i=3D0,len=3Dlisteners.length; i<len; ++i) {=0A=
                    var li =3D listeners[i];=0A=
                    if ( li                 && =0A=
                         li[this.FN] =3D=3D fn  && =0A=
                         li[this.EL] =3D=3D el  && =0A=
                         li[this.TYPE] =3D=3D sType ) {=0A=
                        return i;=0A=
                    }=0A=
                }=0A=
=0A=
                return -1;=0A=
            },=0A=
=0A=
            /**=0A=
             * Generates an unique ID for the element if it does not =
already =0A=
             * have one.=0A=
             * @method generateId=0A=
             * @param el the element to create the id for=0A=
             * @return {string} the resulting id of the element=0A=
             * @static=0A=
             */=0A=
            generateId: function(el) {=0A=
                var id =3D el.id;=0A=
=0A=
                if (!id) {=0A=
                    id =3D "yuievtautoid-" + counter;=0A=
                    ++counter;=0A=
                    el.id =3D id;=0A=
                }=0A=
=0A=
                return id;=0A=
            },=0A=
=0A=
=0A=
            /**=0A=
             * We want to be able to use getElementsByTagName as a =
collection=0A=
             * to attach a group of events to.  Unfortunately, different =0A=
             * browsers return different types of collections.  This =
function=0A=
             * tests to determine if the object is array-like.  It will =
also =0A=
             * fail if the object is an array, but is empty.=0A=
             * @method _isValidCollection=0A=
             * @param o the object to test=0A=
             * @return {boolean} true if the object is array-like and =
populated=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _isValidCollection: function(o) {=0A=
                return ( o                    && // o is something=0A=
                         o.length             && // o is indexed=0A=
                         typeof o !=3D "string" && // o is not a string=0A=
                         !o.tagName           && // o is not an HTML =
element=0A=
                         !o.alert             && // o is not a window=0A=
                         typeof o[0] !=3D "undefined" );=0A=
=0A=
            },=0A=
=0A=
            /**=0A=
             * @private=0A=
             * @property elCache=0A=
             * DOM element cache=0A=
             * @static=0A=
             * @deprecated Elements are not cached any longer=0A=
             */=0A=
            elCache: {},=0A=
=0A=
            /**=0A=
             * We cache elements bound by id because when the unload =
event =0A=
             * fires, we can no longer use document.getElementById=0A=
             * @method getEl=0A=
             * @static=0A=
             * @private=0A=
             * @deprecated Elements are not cached any longer=0A=
             */=0A=
            getEl: function(id) {=0A=
                return document.getElementById(id);=0A=
            },=0A=
=0A=
            /**=0A=
             * Clears the element cache=0A=
             * @deprecated Elements are not cached any longer=0A=
             * @method clearCache=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            clearCache: function() { },=0A=
=0A=
            /**=0A=
             * Custom event the fires when the dom is initially usable=0A=
             * @event DOMReadyEvent=0A=
             */=0A=
            DOMReadyEvent: new YAHOO.util.CustomEvent("DOMReady", this),=0A=
=0A=
            /**=0A=
             * hook up any deferred listeners=0A=
             * @method _load=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _load: function(e) {=0A=
                if (!loadComplete) {=0A=
                    loadComplete =3D true;=0A=
                    var EU =3D YAHOO.util.Event;=0A=
=0A=
                    // just in case DOMReady did not go off for some =
reason=0A=
                    EU._ready();=0A=
=0A=
                    // Remove the listener to assist with the IE memory =
issue, but not=0A=
                    // for other browsers because FF 1.0x does not like =
it.=0A=
                    if (this.isIE) {=0A=
                        EU._simpleRemove(window, "load", EU._load);=0A=
                    }=0A=
                }=0A=
            },=0A=
=0A=
            /**=0A=
             * Fires the DOMReady event listeners the first time the =
document is=0A=
             * usable.=0A=
             * @method _ready=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _ready: function(e) {=0A=
                if (!DOMReady) {=0A=
                    DOMReady=3Dtrue;=0A=
                    var EU =3D YAHOO.util.Event;=0A=
=0A=
                    // Fire the content ready custom event=0A=
                    EU.DOMReadyEvent.fire();=0A=
=0A=
                    // Remove the DOMContentLoaded (FF/Opera)=0A=
                    EU._simpleRemove(document, "DOMContentLoaded", =
EU._ready);=0A=
                }=0A=
            },=0A=
=0A=
            /**=0A=
             * Polling function that runs before the onload event fires, =0A=
             * attempting to attach to DOM Nodes as soon as they are =0A=
             * available=0A=
             * @method _tryPreloadAttach=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _tryPreloadAttach: function() {=0A=
=0A=
                if (this.locked) {=0A=
                    return false;=0A=
                }=0A=
=0A=
=0A=
                if (this.isIE && !DOMReady) {=0A=
                    return false;=0A=
                }=0A=
=0A=
                this.locked =3D true;=0A=
=0A=
=0A=
                // keep trying until after the page is loaded.  We need =
to =0A=
                // check the page load state prior to trying to bind the =0A=
                // elements so that we can be certain all elements have =
been =0A=
                // tested appropriately=0A=
                var tryAgain =3D !loadComplete;=0A=
                if (!tryAgain) {=0A=
                    tryAgain =3D (retryCount > 0);=0A=
                }=0A=
=0A=
                // onAvailable=0A=
                var notAvail =3D [];=0A=
=0A=
                var executeItem =3D function (el, item) {=0A=
                    var scope =3D el;=0A=
                    if (item.override) {=0A=
                        if (item.override =3D=3D=3D true) {=0A=
                            scope =3D item.obj;=0A=
                        } else {=0A=
                            scope =3D item.override;=0A=
                        }=0A=
                    }=0A=
                    item.fn.call(scope, item.obj);=0A=
                };=0A=
=0A=
                var i,len,item,el;=0A=
=0A=
                // onAvailable=0A=
                for (i=3D0,len=3DonAvailStack.length; i<len; ++i) {=0A=
                    item =3D onAvailStack[i];=0A=
                    if (item && !item.checkReady) {=0A=
                        el =3D this.getEl(item.id);=0A=
                        if (el) {=0A=
                            executeItem(el, item);=0A=
                            onAvailStack[i] =3D null;=0A=
                        } else {=0A=
                            notAvail.push(item);=0A=
                        }=0A=
                    }=0A=
                }=0A=
=0A=
                // onContentReady=0A=
                for (i=3D0,len=3DonAvailStack.length; i<len; ++i) {=0A=
                    item =3D onAvailStack[i];=0A=
                    if (item && item.checkReady) {=0A=
                        el =3D this.getEl(item.id);=0A=
=0A=
                        if (el) {=0A=
                            // The element is available, but not =
necessarily ready=0A=
                            // @todo should we test =
parentNode.nextSibling?=0A=
                            if (loadComplete || el.nextSibling) {=0A=
                                executeItem(el, item);=0A=
                                onAvailStack[i] =3D null;=0A=
                            }=0A=
                        } else {=0A=
                            notAvail.push(item);=0A=
                        }=0A=
                    }=0A=
                }=0A=
=0A=
                retryCount =3D (notAvail.length =3D=3D=3D 0) ? 0 : =
retryCount - 1;=0A=
=0A=
                if (tryAgain) {=0A=
                    // we may need to strip the nulled out items here=0A=
                    this.startInterval();=0A=
                } else {=0A=
                    clearInterval(this._interval);=0A=
                    this._interval =3D null;=0A=
                }=0A=
=0A=
                this.locked =3D false;=0A=
=0A=
                return true;=0A=
=0A=
            },=0A=
=0A=
            /**=0A=
             * Removes all listeners attached to the given element via =
addListener.=0A=
             * Optionally, the node's children can also be purged.=0A=
             * Optionally, you can specify a specific type of event to =
remove.=0A=
             * @method purgeElement=0A=
             * @param {HTMLElement} el the element to purge=0A=
             * @param {boolean} recurse recursively purge this element's =
children=0A=
             * as well.  Use with caution.=0A=
             * @param {string} sType optional type of listener to purge. =
If=0A=
             * left out, all listeners will be removed=0A=
             * @static=0A=
             */=0A=
            purgeElement: function(el, recurse, sType) {=0A=
                var elListeners =3D this.getListeners(el, sType);=0A=
                if (elListeners) {=0A=
                    for (var i=3D0,len=3DelListeners.length; i<len ; =
++i) {=0A=
                        var l =3D elListeners[i];=0A=
                        // can't use the index on the changing collection=0A=
                        //this.removeListener(el, l.type, l.fn, l.index);=0A=
                        this.removeListener(el, l.type, l.fn);=0A=
                    }=0A=
                }=0A=
=0A=
                if (recurse && el && el.childNodes) {=0A=
                    for (i=3D0,len=3Del.childNodes.length; i<len ; ++i) {=0A=
                        this.purgeElement(el.childNodes[i], recurse, =
sType);=0A=
                    }=0A=
                }=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns all listeners attached to the given element via =
addListener.=0A=
             * Optionally, you can specify a specific type of event to =
return.=0A=
             * @method getListeners=0A=
             * @param el {HTMLElement} the element to inspect =0A=
             * @param sType {string} optional type of listener to =
return. If=0A=
             * left out, all listeners will be returned=0A=
             * @return {Object} the listener. Contains the following =
fields:=0A=
             * &nbsp;&nbsp;type:   (string)   the type of event=0A=
             * &nbsp;&nbsp;fn:     (function) the callback supplied to =
addListener=0A=
             * &nbsp;&nbsp;obj:    (object)   the custom object supplied =
to addListener=0A=
             * &nbsp;&nbsp;adjust: (boolean)  whether or not to adjust =
the default scope=0A=
             * &nbsp;&nbsp;index:  (int)      its position in the Event =
util listener cache=0A=
             * @static=0A=
             */           =0A=
            getListeners: function(el, sType) {=0A=
                var results=3D[], searchLists;=0A=
                if (!sType) {=0A=
                    searchLists =3D [listeners, unloadListeners];=0A=
                } else if (sType =3D=3D "unload") {=0A=
                    searchLists =3D [unloadListeners];=0A=
                } else {=0A=
                    searchLists =3D [listeners];=0A=
                }=0A=
=0A=
                for (var j=3D0;j<searchLists.length; ++j) {=0A=
                    var searchList =3D searchLists[j];=0A=
                    if (searchList && searchList.length > 0) {=0A=
                        for (var i=3D0,len=3DsearchList.length; i<len ; =
++i) {=0A=
                            var l =3D searchList[i];=0A=
                            if ( l  && l[this.EL] =3D=3D=3D el && =0A=
                                    (!sType || sType =3D=3D=3D =
l[this.TYPE]) ) {=0A=
                                results.push({=0A=
                                    type:   l[this.TYPE],=0A=
                                    fn:     l[this.FN],=0A=
                                    obj:    l[this.OBJ],=0A=
                                    adjust: l[this.ADJ_SCOPE],=0A=
                                    index:  i=0A=
                                });=0A=
                            }=0A=
                        }=0A=
                    }=0A=
                }=0A=
=0A=
                return (results.length) ? results : null;=0A=
            },=0A=
=0A=
            /**=0A=
             * Removes all listeners registered by pe.event.  Called =0A=
             * automatically during the unload event.=0A=
             * @method _unload=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _unload: function(e) {=0A=
=0A=
                var EU =3D YAHOO.util.Event, i, j, l, len, index;=0A=
=0A=
                for (i=3D0,len=3DunloadListeners.length; i<len; ++i) {=0A=
                    l =3D unloadListeners[i];=0A=
                    if (l) {=0A=
                        var scope =3D window;=0A=
                        if (l[EU.ADJ_SCOPE]) {=0A=
                            if (l[EU.ADJ_SCOPE] =3D=3D=3D true) {=0A=
                                scope =3D l[EU.OBJ];=0A=
                            } else {=0A=
                                scope =3D l[EU.ADJ_SCOPE];=0A=
                            }=0A=
                        }=0A=
                        l[EU.FN].call(scope, EU.getEvent(e), l[EU.OBJ] );=0A=
                        unloadListeners[i] =3D null;=0A=
                        l=3Dnull;=0A=
                        scope=3Dnull;=0A=
                    }=0A=
                }=0A=
=0A=
                unloadListeners =3D null;=0A=
=0A=
                if (listeners && listeners.length > 0) {=0A=
                    j =3D listeners.length;=0A=
                    while (j) {=0A=
                        index =3D j-1;=0A=
                        l =3D listeners[index];=0A=
                        if (l) {=0A=
                            EU.removeListener(l[EU.EL], l[EU.TYPE], =0A=
                                    l[EU.FN], index);=0A=
                        } =0A=
                        j =3D j - 1;=0A=
                    }=0A=
                    l=3Dnull;=0A=
=0A=
                    EU.clearCache();=0A=
                }=0A=
=0A=
                for (i=3D0,len=3DlegacyEvents.length; i<len; ++i) {=0A=
                    // dereference the element=0A=
                    //delete legacyEvents[i][0];=0A=
                    legacyEvents[i][0] =3D null;=0A=
=0A=
                    // delete the array item=0A=
                    //delete legacyEvents[i];=0A=
                    legacyEvents[i] =3D null;=0A=
                }=0A=
=0A=
                legacyEvents =3D null;=0A=
=0A=
                EU._simpleRemove(window, "unload", EU._unload);=0A=
=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns scrollLeft=0A=
             * @method _getScrollLeft=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _getScrollLeft: function() {=0A=
                return this._getScroll()[1];=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns scrollTop=0A=
             * @method _getScrollTop=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _getScrollTop: function() {=0A=
                return this._getScroll()[0];=0A=
            },=0A=
=0A=
            /**=0A=
             * Returns the scrollTop and scrollLeft.  Used to calculate =
the =0A=
             * pageX and pageY in Internet Explorer=0A=
             * @method _getScroll=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _getScroll: function() {=0A=
                var dd =3D document.documentElement, db =3D =
document.body;=0A=
                if (dd && (dd.scrollTop || dd.scrollLeft)) {=0A=
                    return [dd.scrollTop, dd.scrollLeft];=0A=
                } else if (db) {=0A=
                    return [db.scrollTop, db.scrollLeft];=0A=
                } else {=0A=
                    return [0, 0];=0A=
                }=0A=
            },=0A=
            =0A=
            /**=0A=
             * Used by old versions of CustomEvent, restored for =
backwards=0A=
             * compatibility=0A=
             * @method regCE=0A=
             * @private=0A=
             */=0A=
            regCE: function() {=0A=
                // does nothing=0A=
            },=0A=
=0A=
            /**=0A=
             * Adds a DOM event directly without the caching, cleanup, =
scope adj, etc=0A=
             *=0A=
             * @method _simpleAdd=0A=
             * @param {HTMLElement} el      the element to bind the =
handler to=0A=
             * @param {string}      sType   the type of event handler=0A=
             * @param {function}    fn      the callback to invoke=0A=
             * @param {boolen}      capture capture or bubble phase=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _simpleAdd: function () {=0A=
                if (window.addEventListener) {=0A=
                    return function(el, sType, fn, capture) {=0A=
                        el.addEventListener(sType, fn, (capture));=0A=
                    };=0A=
                } else if (window.attachEvent) {=0A=
                    return function(el, sType, fn, capture) {=0A=
                        el.attachEvent("on" + sType, fn);=0A=
                    };=0A=
                } else {=0A=
                    return function(){};=0A=
                }=0A=
            }(),=0A=
=0A=
            /**=0A=
             * Basic remove listener=0A=
             *=0A=
             * @method _simpleRemove=0A=
             * @param {HTMLElement} el      the element to bind the =
handler to=0A=
             * @param {string}      sType   the type of event handler=0A=
             * @param {function}    fn      the callback to invoke=0A=
             * @param {boolen}      capture capture or bubble phase=0A=
             * @static=0A=
             * @private=0A=
             */=0A=
            _simpleRemove: function() {=0A=
                if (window.removeEventListener) {=0A=
                    return function (el, sType, fn, capture) {=0A=
                        el.removeEventListener(sType, fn, (capture));=0A=
                    };=0A=
                } else if (window.detachEvent) {=0A=
                    return function (el, sType, fn) {=0A=
                        el.detachEvent("on" + sType, fn);=0A=
                    };=0A=
                } else {=0A=
                    return function(){};=0A=
                }=0A=
            }()=0A=
        };=0A=
=0A=
    }();=0A=
=0A=
    (function() {=0A=
        var EU =3D YAHOO.util.Event;=0A=
=0A=
        /**=0A=
         * YAHOO.util.Event.on is an alias for addListener=0A=
         * @method on=0A=
         * @see addListener=0A=
         * @static=0A=
         */=0A=
        EU.on =3D EU.addListener;=0A=
=0A=
        /////////////////////////////////////////////////////////////=0A=
        // DOMReady=0A=
        // based on work by: Dean Edwards/John Resig/Matthias Miller =0A=
=0A=
        // Internet Explorer: use the readyState of a defered script.=0A=
        // This isolates what appears to be a safe moment to manipulate=0A=
        // the DOM prior to when the document's readyState suggests=0A=
        // it is safe to do so.=0A=
        if (EU.isIE) {=0A=
	=0A=
            document.write(=0A=
'<scr' + 'ipt id=3D"_yui_eu_dr" defer=3D"true" src=3D"//:"></script>');=0A=
        =0A=
            var el =3D document.getElementById("_yui_eu_dr");=0A=
            el.onreadystatechange =3D function() {=0A=
                if ("complete" =3D=3D this.readyState) {=0A=
                    this.parentNode.removeChild(this);=0A=
                    YAHOO.util.Event._ready();=0A=
                }=0A=
            };=0A=
=0A=
            el=3Dnull;=0A=
=0A=
            // Process onAvailable/onContentReady items when when the =0A=
            // DOM is ready.=0A=
            YAHOO.util.Event.onDOMReady(=0A=
                    YAHOO.util.Event._tryPreloadAttach,=0A=
                    YAHOO.util.Event, true);=0A=
        =0A=
        // Safari: The document's readyState in Safari currently will=0A=
        // change to loaded/complete before images are loaded.=0A=
        } else if (EU.webkit) {=0A=
=0A=
            EU._drwatch =3D setInterval(function(){=0A=
                var rs=3Ddocument.readyState;=0A=
                if ("loaded" =3D=3D rs || "complete" =3D=3D rs) {=0A=
                    clearInterval(EU._drwatch);=0A=
                    EU._drwatch =3D null;=0A=
                    EU._ready();=0A=
                }=0A=
            }, EU.POLL_INTERVAL); =0A=
=0A=
        // FireFox and Opera: These browsers provide a event for this=0A=
        // moment.=0A=
        } else {=0A=
=0A=
            EU._simpleAdd(document, "DOMContentLoaded", EU._ready);=0A=
=0A=
        }=0A=
        /////////////////////////////////////////////////////////////=0A=
=0A=
        EU._simpleAdd(window, "load", EU._load);=0A=
        EU._simpleAdd(window, "unload", EU._unload);=0A=
        EU._tryPreloadAttach();=0A=
    })();=0A=
}=0A=
/**=0A=
 * EventProvider is designed to be used with YAHOO.augment to wrap =0A=
 * CustomEvents in an interface that allows events to be subscribed to =0A=
 * and fired by name.  This makes it possible for implementing code to=0A=
 * subscribe to an event that either has not been created yet, or will=0A=
 * not be created at all.=0A=
 *=0A=
 * @Class EventProvider=0A=
 */=0A=
YAHOO.util.EventProvider =3D function() { };=0A=
=0A=
YAHOO.util.EventProvider.prototype =3D {=0A=
=0A=
    /**=0A=
     * Private storage of custom events=0A=
     * @property __yui_events=0A=
     * @type Object[]=0A=
     * @private=0A=
     */=0A=
    __yui_events: null,=0A=
=0A=
    /**=0A=
     * Private storage of custom event subscribers=0A=
     * @property __yui_subscribers=0A=
     * @type Object[]=0A=
     * @private=0A=
     */=0A=
    __yui_subscribers: null,=0A=
    =0A=
    /**=0A=
     * Subscribe to a CustomEvent by event type=0A=
     *=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=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(p_type, p_fn, p_obj, p_override) {=0A=
=0A=
        this.__yui_events =3D this.__yui_events || {};=0A=
        var ce =3D this.__yui_events[p_type];=0A=
=0A=
        if (ce) {=0A=
            ce.subscribe(p_fn, p_obj, p_override);=0A=
        } else {=0A=
            this.__yui_subscribers =3D this.__yui_subscribers || {};=0A=
            var subs =3D this.__yui_subscribers;=0A=
            if (!subs[p_type]) {=0A=
                subs[p_type] =3D [];=0A=
            }=0A=
            subs[p_type].push(=0A=
                { fn: p_fn, obj: p_obj, override: p_override } );=0A=
        }=0A=
    },=0A=
=0A=
    /**=0A=
     * Unsubscribes one or more listeners the from the specified event=0A=
     * @method unsubscribe=0A=
     * @param p_type {string}   The type, or name of the event=0A=
     * @param p_fn   {Function} The subscribed function to unsubscribe, =
if not=0A=
     *                          supplied, all subscribers will be =
removed.=0A=
     * @param p_obj  {Object}   The custom object passed to subscribe.  =
This is=0A=
     *                        optional, but if supplied will be used to=0A=
     *                        disambiguate multiple listeners that are =
the same=0A=
     *                        (e.g., you subscribe many object using a =
function=0A=
     *                        that lives on the prototype)=0A=
     * @return {boolean} true if the subscriber was found and detached.=0A=
     */=0A=
    unsubscribe: function(p_type, p_fn, p_obj) {=0A=
        this.__yui_events =3D this.__yui_events || {};=0A=
        var ce =3D this.__yui_events[p_type];=0A=
        if (ce) {=0A=
            return ce.unsubscribe(p_fn, p_obj);=0A=
        } else {=0A=
            return false;=0A=
        }=0A=
    },=0A=
    =0A=
    /**=0A=
     * Removes all listeners from the specified event=0A=
     * @method unsubscribeAll=0A=
     * @param p_type {string}   The type, or name of the event=0A=
     */=0A=
    unsubscribeAll: function(p_type) {=0A=
        return this.unsubscribe(p_type);=0A=
    },=0A=
=0A=
    /**=0A=
     * Creates a new custom event of the specified type.  If a custom =
event=0A=
     * by that name already exists, it will not be re-created.  In either=0A=
     * case the custom event is returned. =0A=
     *=0A=
     * @method createEvent=0A=
     *=0A=
     * @param p_type {string} the type, or name of the event=0A=
     * @param p_config {object} optional config params.  Valid =
properties are:=0A=
     *=0A=
     *  <ul>=0A=
     *    <li>=0A=
     *      scope: defines the default execution scope.  If not defined=0A=
     *      the default scope will be this instance.=0A=
     *    </li>=0A=
     *    <li>=0A=
     *      silent: if true, the custom event will not generate log =
messages.=0A=
     *      This is false by default.=0A=
     *    </li>=0A=
     *    <li>=0A=
     *      onSubscribeCallback: specifies a callback to execute when the=0A=
     *      event has a new subscriber.  This will fire immediately for=0A=
     *      each queued subscriber if any exist prior to the creation of=0A=
     *      the event.=0A=
     *    </li>=0A=
     *  </ul>=0A=
     *=0A=
     *  @return {CustomEvent} the custom event=0A=
     *=0A=
     */=0A=
    createEvent: function(p_type, p_config) {=0A=
=0A=
        this.__yui_events =3D this.__yui_events || {};=0A=
        var opts =3D p_config || {};=0A=
        var events =3D this.__yui_events;=0A=
=0A=
        if (events[p_type]) {=0A=
        } else {=0A=
=0A=
            var scope  =3D opts.scope  || this;=0A=
            var silent =3D opts.silent || null;=0A=
=0A=
            var ce =3D new YAHOO.util.CustomEvent(p_type, scope, silent,=0A=
                    YAHOO.util.CustomEvent.FLAT);=0A=
            events[p_type] =3D ce;=0A=
=0A=
            if (opts.onSubscribeCallback) {=0A=
                ce.subscribeEvent.subscribe(opts.onSubscribeCallback);=0A=
            }=0A=
=0A=
            this.__yui_subscribers =3D this.__yui_subscribers || {};=0A=
            var qs =3D this.__yui_subscribers[p_type];=0A=
=0A=
            if (qs) {=0A=
                for (var i=3D0; i<qs.length; ++i) {=0A=
                    ce.subscribe(qs[i].fn, qs[i].obj, qs[i].override);=0A=
                }=0A=
            }=0A=
        }=0A=
=0A=
        return events[p_type];=0A=
    },=0A=
=0A=
=0A=
   /**=0A=
     * Fire a custom event by name.  The callback functions will be =
executed=0A=
     * from the scope specified when the event was created, and with the =0A=
     * following parameters:=0A=
     *   <ul>=0A=
     *   <li>The first argument fire() was executed with</li>=0A=
     *   <li>The custom object (if any) that was passed into the =
subscribe() =0A=
     *       method</li>=0A=
     *   </ul>=0A=
     * @method fireEvent=0A=
     * @param p_type    {string}  the type, or name of the event=0A=
     * @param arguments {Object*} an arbitrary set of parameters to pass =
to =0A=
     *                            the handler.=0A=
     * @return {boolean} the return value from CustomEvent.fire, or null =
if =0A=
     *                   the custom event does not exist.=0A=
     */=0A=
    fireEvent: function(p_type, arg1, arg2, etc) {=0A=
=0A=
        this.__yui_events =3D this.__yui_events || {};=0A=
        var ce =3D this.__yui_events[p_type];=0A=
=0A=
        if (ce) {=0A=
            var args =3D [];=0A=
            for (var i=3D1; i<arguments.length; ++i) {=0A=
                args.push(arguments[i]);=0A=
            }=0A=
            return ce.fire.apply(ce, args);=0A=
        } else {=0A=
            return null;=0A=
        }=0A=
    },=0A=
=0A=
    /**=0A=
     * Returns true if the custom event of the provided type has been =
created=0A=
     * with createEvent.=0A=
     * @method hasEvent=0A=
     * @param type {string} the type, or name of the event=0A=
     */=0A=
    hasEvent: function(type) {=0A=
        if (this.__yui_events) {=0A=
            if (this.__yui_events[type]) {=0A=
                return true;=0A=
            }=0A=
        }=0A=
        return false;=0A=
    }=0A=
=0A=
};=0A=
=0A=
/**=0A=
* KeyListener is a utility that provides an easy interface for listening =
for=0A=
* keydown/keyup events fired against DOM elements.=0A=
* @namespace YAHOO.util=0A=
* @class KeyListener=0A=
* @constructor=0A=
* @param {HTMLElement} attachTo The element or element ID to which the =
key =0A=
*                               event should be attached=0A=
* @param {String}      attachTo The element or element ID to which the =
key=0A=
*                               event should be attached=0A=
* @param {Object}      keyData  The object literal representing the =
key(s) =0A=
*                               to detect. Possible attributes are =0A=
*                               shift(boolean), alt(boolean), =
ctrl(boolean) =0A=
*                               and keys(either an int or an array of =
ints =0A=
*                               representing keycodes).=0A=
* @param {Function}    handler  The CustomEvent handler to fire when the =0A=
*                               key event is detected=0A=
* @param {Object}      handler  An object literal representing the =
handler. =0A=
* @param {String}      event    Optional. The event (keydown or keyup) =
to =0A=
*                               listen for. Defaults automatically to =
keydown.=0A=
*/=0A=
YAHOO.util.KeyListener =3D function(attachTo, keyData, handler, event) {=0A=
    if (!attachTo) {=0A=
    } else if (!keyData) {=0A=
    } else if (!handler) {=0A=
    } =0A=
    =0A=
    if (!event) {=0A=
        event =3D YAHOO.util.KeyListener.KEYDOWN;=0A=
    }=0A=
=0A=
    /**=0A=
    * The CustomEvent fired internally when a key is pressed=0A=
    * @event keyEvent=0A=
    * @private=0A=
    * @param {Object} keyData The object literal representing the key(s) =
to =0A=
    *                         detect. Possible attributes are =
shift(boolean), =0A=
    *                         alt(boolean), ctrl(boolean) and =
keys(either an =0A=
    *                         int or an array of ints representing =
keycodes).=0A=
    */=0A=
    var keyEvent =3D new YAHOO.util.CustomEvent("keyPressed");=0A=
    =0A=
    /**=0A=
    * The CustomEvent fired when the KeyListener is enabled via the =
enable() =0A=
    * function=0A=
    * @event enabledEvent=0A=
    * @param {Object} keyData The object literal representing the key(s) =
to =0A=
    *                         detect. Possible attributes are =
shift(boolean), =0A=
    *                         alt(boolean), ctrl(boolean) and =
keys(either an =0A=
    *                         int or an array of ints representing =
keycodes).=0A=
    */=0A=
    this.enabledEvent =3D new YAHOO.util.CustomEvent("enabled");=0A=
=0A=
    /**=0A=
    * The CustomEvent fired when the KeyListener is disabled via the =0A=
    * disable() function=0A=
    * @event disabledEvent=0A=
    * @param {Object} keyData The object literal representing the key(s) =
to =0A=
    *                         detect. Possible attributes are =
shift(boolean), =0A=
    *                         alt(boolean), ctrl(boolean) and =
keys(either an =0A=
    *                         int or an array of ints representing =
keycodes).=0A=
    */=0A=
    this.disabledEvent =3D new YAHOO.util.CustomEvent("disabled");=0A=
=0A=
    if (typeof attachTo =3D=3D 'string') {=0A=
        attachTo =3D document.getElementById(attachTo);=0A=
    }=0A=
=0A=
    if (typeof handler =3D=3D 'function') {=0A=
        keyEvent.subscribe(handler);=0A=
    } else {=0A=
        keyEvent.subscribe(handler.fn, handler.scope, =
handler.correctScope);=0A=
    }=0A=
=0A=
    /**=0A=
    * Handles the key event when a key is pressed.=0A=
    * @method handleKeyPress=0A=
    * @param {DOMEvent} e   The keypress DOM event=0A=
    * @param {Object}   obj The DOM event scope object=0A=
    * @private=0A=
    */=0A=
    function handleKeyPress(e, obj) {=0A=
        if (! keyData.shift) {  =0A=
            keyData.shift =3D false; =0A=
        }=0A=
        if (! keyData.alt) {    =0A=
            keyData.alt =3D false;=0A=
        }=0A=
        if (! keyData.ctrl) {=0A=
            keyData.ctrl =3D false;=0A=
        }=0A=
=0A=
        // check held down modifying keys first=0A=
        if (e.shiftKey =3D=3D keyData.shift && =0A=
            e.altKey   =3D=3D keyData.alt &&=0A=
            e.ctrlKey  =3D=3D keyData.ctrl) { // if we pass this, all =
modifiers match=0A=
            =0A=
            var dataItem;=0A=
            var keyPressed;=0A=
=0A=
            if (keyData.keys instanceof Array) {=0A=
                for (var i=3D0;i<keyData.keys.length;i++) {=0A=
                    dataItem =3D keyData.keys[i];=0A=
=0A=
                    if (dataItem =3D=3D e.charCode ) {=0A=
                        keyEvent.fire(e.charCode, e);=0A=
                        break;=0A=
                    } else if (dataItem =3D=3D e.keyCode) {=0A=
                        keyEvent.fire(e.keyCode, e);=0A=
                        break;=0A=
                    }=0A=
                }=0A=
            } else {=0A=
                dataItem =3D keyData.keys;=0A=
                if (dataItem =3D=3D e.charCode ) {=0A=
                    keyEvent.fire(e.charCode, e);=0A=
                } else if (dataItem =3D=3D e.keyCode) {=0A=
                    keyEvent.fire(e.keyCode, e);=0A=
                }=0A=
            }=0A=
        }=0A=
    }=0A=
=0A=
    /**=0A=
    * Enables the KeyListener by attaching the DOM event listeners to =
the =0A=
    * target DOM element=0A=
    * @method enable=0A=
    */=0A=
    this.enable =3D function() {=0A=
        if (! this.enabled) {=0A=
            YAHOO.util.Event.addListener(attachTo, event, =
handleKeyPress);=0A=
            this.enabledEvent.fire(keyData);=0A=
        }=0A=
        /**=0A=
        * Boolean indicating the enabled/disabled state of the Tooltip=0A=
        * @property enabled=0A=
        * @type Boolean=0A=
        */=0A=
        this.enabled =3D true;=0A=
    };=0A=
=0A=
    /**=0A=
    * Disables the KeyListener by removing the DOM event listeners from =
the =0A=
    * target DOM element=0A=
    * @method disable=0A=
    */=0A=
    this.disable =3D function() {=0A=
        if (this.enabled) {=0A=
            YAHOO.util.Event.removeListener(attachTo, event, =
handleKeyPress);=0A=
            this.disabledEvent.fire(keyData);=0A=
        }=0A=
        this.enabled =3D false;=0A=
    };=0A=
=0A=
    /**=0A=
    * Returns a String representation of the object.=0A=
    * @method toString=0A=
    * @return {String}  The string representation of the KeyListener=0A=
    */ =0A=
    this.toString =3D function() {=0A=
        return "KeyListener [" + keyData.keys + "] " + attachTo.tagName =
+ =0A=
                (attachTo.id ? "[" + attachTo.id + "]" : "");=0A=
    };=0A=
=0A=
};=0A=
=0A=
/**=0A=
* Constant representing the DOM "keydown" event.=0A=
* @property YAHOO.util.KeyListener.KEYDOWN=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.util.KeyListener.KEYDOWN =3D "keydown";=0A=
=0A=
/**=0A=
* Constant representing the DOM "keyup" event.=0A=
* @property YAHOO.util.KeyListener.KEYUP=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.util.KeyListener.KEYUP =3D "keyup";=0A=
YAHOO.register("event", YAHOO.util.Event, {version: "2.2.2", build: =
"204"});=0A=

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/look/yui/dom/dom.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.2.2=0A=
*/=0A=
/**=0A=
 * The dom module provides helper methods for manipulating Dom elements.=0A=
 * @module dom=0A=
 *=0A=
 */=0A=
=0A=
(function() {=0A=
    var Y =3D YAHOO.util,     // internal shorthand=0A=
        getStyle,           // for load time browser branching=0A=
        setStyle,           // ditto=0A=
        id_counter =3D 0,     // for use with generateId=0A=
        propertyCache =3D {}; // for faster hyphen converts=0A=
    =0A=
    // brower detection=0A=
    var ua =3D navigator.userAgent.toLowerCase(),=0A=
        isOpera =3D (ua.indexOf('opera') > -1),=0A=
        isSafari =3D (ua.indexOf('safari') > -1),=0A=
        isGecko =3D (!isOpera && !isSafari && ua.indexOf('gecko') > -1),=0A=
        isIE =3D (!isOpera && ua.indexOf('msie') > -1); =0A=
    =0A=
    // regex cache=0A=
    var patterns =3D {=0A=
        HYPHEN: /(-[a-z])/i, // to normalize get/setStyle=0A=
        ROOT_TAG: /body|html/i // body for quirks mode, html for =
standards=0A=
    };=0A=
=0A=
    var toCamel =3D function(property) {=0A=
        if ( !patterns.HYPHEN.test(property) ) {=0A=
            return property; // no hyphens=0A=
        }=0A=
        =0A=
        if (propertyCache[property]) { // already converted=0A=
            return propertyCache[property];=0A=
        }=0A=
       =0A=
        var converted =3D property;=0A=
 =0A=
        while( patterns.HYPHEN.exec(converted) ) {=0A=
            converted =3D converted.replace(RegExp.$1,=0A=
                    RegExp.$1.substr(1).toUpperCase());=0A=
        }=0A=
        =0A=
        propertyCache[property] =3D converted;=0A=
        return converted;=0A=
        //return property.replace(/-([a-z])/gi, function(m0, m1) {return =
m1.toUpperCase()}) // cant use function as 2nd arg yet due to safari bug=0A=
    };=0A=
    =0A=
    // branching at load instead of runtime=0A=
    if (document.defaultView && document.defaultView.getComputedStyle) { =
// W3C DOM method=0A=
        getStyle =3D function(el, property) {=0A=
            var value =3D null;=0A=
            =0A=
            if (property =3D=3D 'float') { // fix reserved word=0A=
                property =3D 'cssFloat';=0A=
            }=0A=
=0A=
            var computed =3D document.defaultView.getComputedStyle(el, =
'');=0A=
            if (computed) { // test computed before touching for safari=0A=
                value =3D computed[toCamel(property)];=0A=
            }=0A=
            =0A=
            return el.style[property] || value;=0A=
        };=0A=
    } else if (document.documentElement.currentStyle && isIE) { // IE =
method=0A=
        getStyle =3D function(el, property) {                         =0A=
            switch( toCamel(property) ) {=0A=
                case 'opacity' :// IE opacity uses filter=0A=
                    var val =3D 100;=0A=
                    try { // will error if no DXImageTransform=0A=
                        val =3D =
el.filters['DXImageTransform.Microsoft.Alpha'].opacity;=0A=
=0A=
                    } catch(e) {=0A=
                        try { // make sure its in the document=0A=
                            val =3D el.filters('alpha').opacity;=0A=
                        } catch(e) {=0A=
                        }=0A=
                    }=0A=
                    return val / 100;=0A=
                    break;=0A=
                case 'float': // fix reserved word=0A=
                    property =3D 'styleFloat'; // fall through=0A=
                default: =0A=
                    // test currentStyle before touching=0A=
                    var value =3D el.currentStyle ? =
el.currentStyle[property] : null;=0A=
                    return ( el.style[property] || value );=0A=
            }=0A=
        };=0A=
    } else { // default to inline only=0A=
        getStyle =3D function(el, property) { return el.style[property]; =
};=0A=
    }=0A=
    =0A=
    if (isIE) {=0A=
        setStyle =3D function(el, property, val) {=0A=
            switch (property) {=0A=
                case 'opacity':=0A=
                    if ( YAHOO.lang.isString(el.style.filter) ) { // in =
case not appended=0A=
                        el.style.filter =3D 'alpha(opacity=3D' + val * =
100 + ')';=0A=
                        =0A=
                        if (!el.currentStyle || =
!el.currentStyle.hasLayout) {=0A=
                            el.style.zoom =3D 1; // when no layout or =
cant tell=0A=
                        }=0A=
                    }=0A=
                    break;=0A=
                case 'float':=0A=
                    property =3D 'styleFloat';=0A=
                default:=0A=
                el.style[property] =3D val;=0A=
            }=0A=
        };=0A=
    } else {=0A=
        setStyle =3D function(el, property, val) {=0A=
            if (property =3D=3D 'float') {=0A=
                property =3D 'cssFloat';=0A=
            }=0A=
            el.style[property] =3D val;=0A=
        };=0A=
    }=0A=
    =0A=
    /**=0A=
     * Provides helper methods for DOM elements.=0A=
     * @namespace YAHOO.util=0A=
     * @class Dom=0A=
     */=0A=
    YAHOO.util.Dom =3D {=0A=
        /**=0A=
         * Returns an HTMLElement reference.=0A=
         * @method get=0A=
         * @param {String | HTMLElement |Array} el Accepts a string to =
use as an ID for getting a DOM reference, an actual DOM reference, or an =
Array of IDs and/or HTMLElements.=0A=
         * @return {HTMLElement | Array} A DOM reference to an HTML =
element or an array of HTMLElements.=0A=
         */=0A=
        get: function(el) {=0A=
            if ( YAHOO.lang.isString(el) ) { // ID =0A=
                return document.getElementById(el);=0A=
            }=0A=
            =0A=
            if ( YAHOO.lang.isArray(el) ) { // Array of IDs and/or =
HTMLElements=0A=
                var c =3D [];=0A=
                for (var i =3D 0, len =3D el.length; i < len; ++i) {=0A=
                    c[c.length] =3D Y.Dom.get(el[i]);=0A=
                }=0A=
                =0A=
                return c;=0A=
            }=0A=
=0A=
            if (el) { // assuming HTMLElement or HTMLCollection, just =
pass back =0A=
                return el;=0A=
            }=0A=
=0A=
            return null; // el is likely null or undefined =0A=
        },=0A=
    =0A=
        /**=0A=
         * Normalizes currentStyle and ComputedStyle.=0A=
         * @method getStyle=0A=
         * @param {String | HTMLElement |Array} el Accepts a string to =
use as an ID, an actual DOM reference, or an Array of IDs and/or =
HTMLElements.=0A=
         * @param {String} property The style property whose value is =
returned.=0A=
         * @return {String | Array} The current value of the style =
property for the element(s).=0A=
         */=0A=
        getStyle: function(el, property) {=0A=
            property =3D toCamel(property);=0A=
            =0A=
            var f =3D function(element) {=0A=
                return getStyle(element, property);=0A=
            };=0A=
            =0A=
            return Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
    =0A=
        /**=0A=
         * Wrapper for setting style properties of HTMLElements.  =
Normalizes "opacity" across modern browsers.=0A=
         * @method setStyle=0A=
         * @param {String | HTMLElement | Array} el Accepts a string to =
use as an ID, an actual DOM reference, or an Array of IDs and/or =
HTMLElements.=0A=
         * @param {String} property The style property to be set.=0A=
         * @param {String} val The value to apply to the given property.=0A=
         */=0A=
        setStyle: function(el, property, val) {=0A=
            property =3D toCamel(property);=0A=
            =0A=
            var f =3D function(element) {=0A=
                setStyle(element, property, val);=0A=
                =0A=
            };=0A=
            =0A=
            Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Gets the current position of an element based on page =
coordinates.  Element must be part of the DOM tree to have page =
coordinates (display:none or elements not appended return false).=0A=
         * @method getXY=0A=
         * @param {String | HTMLElement | Array} el Accepts a string to =
use as an ID, an actual DOM reference, or an Array of IDs and/or =
HTMLElements=0A=
         * @return {Array} The XY position of the element(s)=0A=
         */=0A=
        getXY: function(el) {=0A=
            var f =3D function(el) {=0A=
    =0A=
            // has to be part of document to have pageXY=0A=
                if ( (el.parentNode =3D=3D=3D null || el.offsetParent =
=3D=3D=3D null ||=0A=
                        this.getStyle(el, 'display') =3D=3D 'none') && =
el !=3D document.body) {=0A=
                    return false;=0A=
                }=0A=
                =0A=
                var parentNode =3D null;=0A=
                var pos =3D [];=0A=
                var box;=0A=
                =0A=
                if (el.getBoundingClientRect) { // IE=0A=
                    box =3D el.getBoundingClientRect();=0A=
                    var doc =3D document;=0A=
                    if ( !this.inDocument(el) && parent.document !=3D =
document) {// might be in a frame, need to get its scroll=0A=
                        doc =3D parent.document;=0A=
=0A=
                        if ( !this.isAncestor(doc.documentElement, el) ) =
{=0A=
                            return false;                      =0A=
                        }=0A=
=0A=
                    }=0A=
=0A=
                    var scrollTop =3D =
Math.max(doc.documentElement.scrollTop, doc.body.scrollTop);=0A=
                    var scrollLeft =3D =
Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft);=0A=
                    =0A=
                    return [box.left + scrollLeft, box.top + scrollTop];=0A=
                }=0A=
                else { // safari, opera, & gecko=0A=
                    pos =3D [el.offsetLeft, el.offsetTop];=0A=
                    parentNode =3D el.offsetParent;=0A=
=0A=
                    // safari: if el is abs or any parent is abs, =
subtract body offsets=0A=
                    var hasAbs =3D this.getStyle(el, 'position') =3D=3D =
'absolute';=0A=
=0A=
                    if (parentNode !=3D el) {=0A=
                        while (parentNode) {=0A=
                            pos[0] +=3D parentNode.offsetLeft;=0A=
                            pos[1] +=3D parentNode.offsetTop;=0A=
                            if (isSafari && !hasAbs && =0A=
                                    this.getStyle(parentNode,'position') =
=3D=3D 'absolute' ) {=0A=
                                hasAbs =3D true; // we need to offset if =
any parent is absolutely positioned=0A=
                            }=0A=
                            parentNode =3D parentNode.offsetParent;=0A=
                        }=0A=
                    }=0A=
=0A=
                    if (isSafari && hasAbs) { //safari doubles in this =
case=0A=
                        pos[0] -=3D document.body.offsetLeft;=0A=
                        pos[1] -=3D document.body.offsetTop;=0A=
                    } =0A=
                }=0A=
                =0A=
                parentNode =3D el.parentNode;=0A=
=0A=
                // account for any scrolled ancestors=0A=
                while ( parentNode.tagName && =
!patterns.ROOT_TAG.test(parentNode.tagName) ) =0A=
                {=0A=
                   // work around opera inline scrollLeft/Top bug=0A=
                   if (Y.Dom.getStyle(parentNode, 'display') !=3D =
'inline') { =0A=
                        pos[0] -=3D parentNode.scrollLeft;=0A=
                        pos[1] -=3D parentNode.scrollTop;=0A=
                    }=0A=
                    =0A=
                    parentNode =3D parentNode.parentNode; =0A=
                }=0A=
        =0A=
                =0A=
                return pos;=0A=
            };=0A=
            =0A=
            return Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Gets the current X position of an element based on page =
coordinates.  The element must be part of the DOM tree to have page =
coordinates (display:none or elements not appended return false).=0A=
         * @method getX=0A=
         * @param {String | HTMLElement | Array} el Accepts a string to =
use as an ID, an actual DOM reference, or an Array of IDs and/or =
HTMLElements=0A=
         * @return {String | Array} The X position of the element(s)=0A=
         */=0A=
        getX: function(el) {=0A=
            var f =3D function(el) {=0A=
                return Y.Dom.getXY(el)[0];=0A=
            };=0A=
            =0A=
            return Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Gets the current Y position of an element based on page =
coordinates.  Element must be part of the DOM tree to have page =
coordinates (display:none or elements not appended return false).=0A=
         * @method getY=0A=
         * @param {String | HTMLElement | Array} el Accepts a string to =
use as an ID, an actual DOM reference, or an Array of IDs and/or =
HTMLElements=0A=
         * @return {String | Array} The Y position of the element(s)=0A=
         */=0A=
        getY: function(el) {=0A=
            var f =3D function(el) {=0A=
                return Y.Dom.getXY(el)[1];=0A=
            };=0A=
            =0A=
            return Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Set the position of an html element in page coordinates, =
regardless of how the element is positioned.=0A=
         * The element(s) must be part of the DOM tree to have page =
coordinates (display:none or elements not appended return false).=0A=
         * @method setXY=0A=
         * @param {String | HTMLElement | Array} el Accepts a string to =
use as an ID, an actual DOM reference, or an Array of IDs and/or =
HTMLElements=0A=
         * @param {Array} pos Contains X & Y values for new position =
(coordinates are page-based)=0A=
         * @param {Boolean} noRetry By default we try and set the =
position a second time if the first fails=0A=
         */=0A=
        setXY: function(el, pos, noRetry) {=0A=
            var f =3D function(el) {=0A=
                var style_pos =3D this.getStyle(el, 'position');=0A=
                if (style_pos =3D=3D 'static') { // default to relative=0A=
                    this.setStyle(el, 'position', 'relative');=0A=
                    style_pos =3D 'relative';=0A=
                }=0A=
=0A=
                var pageXY =3D this.getXY(el);=0A=
                if (pageXY =3D=3D=3D false) { // has to be part of doc =
to have pageXY=0A=
                    return false; =0A=
                }=0A=
                =0A=
                var delta =3D [ // assuming pixels; if not we will have =
to retry=0A=
                    parseInt( this.getStyle(el, 'left'), 10 ),=0A=
                    parseInt( this.getStyle(el, 'top'), 10 )=0A=
                ];=0A=
            =0A=
                if ( isNaN(delta[0]) ) {// in case of 'auto'=0A=
                    delta[0] =3D (style_pos =3D=3D 'relative') ? 0 : =
el.offsetLeft;=0A=
                } =0A=
                if ( isNaN(delta[1]) ) { // in case of 'auto'=0A=
                    delta[1] =3D (style_pos =3D=3D 'relative') ? 0 : =
el.offsetTop;=0A=
                } =0A=
        =0A=
                if (pos[0] !=3D=3D null) { el.style.left =3D pos[0] - =
pageXY[0] + delta[0] + 'px'; }=0A=
                if (pos[1] !=3D=3D null) { el.style.top =3D pos[1] - =
pageXY[1] + delta[1] + 'px'; }=0A=
              =0A=
                if (!noRetry) {=0A=
                    var newXY =3D this.getXY(el);=0A=
=0A=
                    // if retry is true, try one more time if we miss =0A=
                   if ( (pos[0] !=3D=3D null && newXY[0] !=3D pos[0]) || =0A=
                        (pos[1] !=3D=3D null && newXY[1] !=3D pos[1]) ) {=0A=
                       this.setXY(el, pos, true);=0A=
                   }=0A=
                }        =0A=
        =0A=
            };=0A=
            =0A=
            Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Set the X position of an html element in page coordinates, =
regardless of how the element is positioned.=0A=
         * The element must be part of the DOM tree to have page =
coordinates (display:none or elements not appended return false).=0A=
         * @method setX=0A=
         * @param {String | HTMLElement | Array} el Accepts a string to =
use as an ID, an actual DOM reference, or an Array of IDs and/or =
HTMLElements.=0A=
         * @param {Int} x The value to use as the X coordinate for the =
element(s).=0A=
         */=0A=
        setX: function(el, x) {=0A=
            Y.Dom.setXY(el, [x, null]);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Set the Y position of an html element in page coordinates, =
regardless of how the element is positioned.=0A=
         * The element must be part of the DOM tree to have page =
coordinates (display:none or elements not appended return false).=0A=
         * @method setY=0A=
         * @param {String | HTMLElement | Array} el Accepts a string to =
use as an ID, an actual DOM reference, or an Array of IDs and/or =
HTMLElements.=0A=
         * @param {Int} x To use as the Y coordinate for the element(s).=0A=
         */=0A=
        setY: function(el, y) {=0A=
            Y.Dom.setXY(el, [null, y]);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Returns the region position of the given element.=0A=
         * The element must be part of the DOM tree to have a region =
(display:none or elements not appended return false).=0A=
         * @method getRegion=0A=
         * @param {String | HTMLElement | Array} el Accepts a string to =
use as an ID, an actual DOM reference, or an Array of IDs and/or =
HTMLElements.=0A=
         * @return {Region | Array} A Region or array of Region =
instances containing "top, left, bottom, right" member data.=0A=
         */=0A=
        getRegion: function(el) {=0A=
            var f =3D function(el) {=0A=
                var region =3D new Y.Region.getRegion(el);=0A=
                return region;=0A=
            };=0A=
            =0A=
            return Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Returns the width of the client (viewport).=0A=
         * @method getClientWidth=0A=
         * @deprecated Now using getViewportWidth.  This interface left =
intact for back compat.=0A=
         * @return {Int} The width of the viewable area of the page.=0A=
         */=0A=
        getClientWidth: function() {=0A=
            return Y.Dom.getViewportWidth();=0A=
        },=0A=
        =0A=
        /**=0A=
         * Returns the height of the client (viewport).=0A=
         * @method getClientHeight=0A=
         * @deprecated Now using getViewportHeight.  This interface left =
intact for back compat.=0A=
         * @return {Int} The height of the viewable area of the page.=0A=
         */=0A=
        getClientHeight: function() {=0A=
            return Y.Dom.getViewportHeight();=0A=
        },=0A=
=0A=
        /**=0A=
         * Returns a array of HTMLElements with the given class.=0A=
         * For optimized performance, include a tag and/or root node =
when possible.=0A=
         * @method getElementsByClassName=0A=
         * @param {String} className The class name to match against=0A=
         * @param {String} tag (optional) The tag name of the elements =
being collected=0A=
         * @param {String | HTMLElement} root (optional) The HTMLElement =
or an ID to use as the starting point =0A=
         * @return {Array} An array of elements that have the given =
class name=0A=
         */=0A=
        getElementsByClassName: function(className, tag, root) {=0A=
            var method =3D function(el) { return Y.Dom.hasClass(el, =
className); };=0A=
            return Y.Dom.getElementsBy(method, tag, root);=0A=
        },=0A=
=0A=
        /**=0A=
         * Determines whether an HTMLElement has the given className.=0A=
         * @method hasClass=0A=
         * @param {String | HTMLElement | Array} el The element or =
collection to test=0A=
         * @param {String} className the class name to search for=0A=
         * @return {Boolean | Array} A boolean value or array of boolean =
values=0A=
         */=0A=
        hasClass: function(el, className) {=0A=
            var re =3D new RegExp('(?:^|\\s+)' + className + =
'(?:\\s+|$)');=0A=
            =0A=
            var f =3D function(el) {=0A=
                return re.test(el.className);=0A=
            };=0A=
            =0A=
            return Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
    =0A=
        /**=0A=
         * Adds a class name to a given element or collection of =
elements.=0A=
         * @method addClass         =0A=
         * @param {String | HTMLElement | Array} el The element or =
collection to add the class to=0A=
         * @param {String} className the class name to add to the class =
attribute=0A=
         */=0A=
        addClass: function(el, className) {=0A=
            var f =3D function(el) {=0A=
                if (this.hasClass(el, className)) { return; } // already =
present=0A=
                =0A=
                =0A=
                el.className =3D [el.className, className].join(' ');=0A=
            };=0A=
            =0A=
            Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
    =0A=
        /**=0A=
         * Removes a class name from a given element or collection of =
elements.=0A=
         * @method removeClass         =0A=
         * @param {String | HTMLElement | Array} el The element or =
collection to remove the class from=0A=
         * @param {String} className the class name to remove from the =
class attribute=0A=
         */=0A=
        removeClass: function(el, className) {=0A=
            var re =3D new RegExp('(?:^|\\s+)' + className + =
'(?:\\s+|$)', 'g');=0A=
=0A=
            var f =3D function(el) {=0A=
                if (!this.hasClass(el, className)) {=0A=
                    return; // not present=0A=
                }                 =0A=
=0A=
                =0A=
                var c =3D el.className;=0A=
                el.className =3D c.replace(re, ' ');=0A=
                if ( this.hasClass(el, className) ) { // in case of =
multiple adjacent=0A=
                    this.removeClass(el, className);=0A=
                }=0A=
                =0A=
            };=0A=
            =0A=
            Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Replace a class with another class for a given element or =
collection of elements.=0A=
         * If no oldClassName is present, the newClassName is simply =
added.=0A=
         * @method replaceClass  =0A=
         * @param {String | HTMLElement | Array} el The element or =
collection to remove the class from=0A=
         * @param {String} oldClassName the class name to be replaced=0A=
         * @param {String} newClassName the class name that will be =
replacing the old class name=0A=
         */=0A=
        replaceClass: function(el, oldClassName, newClassName) {=0A=
            if (oldClassName =3D=3D=3D newClassName) { // avoid infinite =
loop=0A=
                return false;=0A=
            }=0A=
            =0A=
            var re =3D new RegExp('(?:^|\\s+)' + oldClassName + =
'(?:\\s+|$)', 'g');=0A=
=0A=
            var f =3D function(el) {=0A=
            =0A=
                if ( !this.hasClass(el, oldClassName) ) {=0A=
                    this.addClass(el, newClassName); // just add it if =
nothing to replace=0A=
                    return; // note return=0A=
                }=0A=
            =0A=
                el.className =3D el.className.replace(re, ' ' + =
newClassName + ' ');=0A=
=0A=
                if ( this.hasClass(el, oldClassName) ) { // in case of =
multiple adjacent=0A=
                    this.replaceClass(el, oldClassName, newClassName);=0A=
                }=0A=
            };=0A=
            =0A=
            Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Generates a unique ID=0A=
         * @method generateId  =0A=
         * @param {String | HTMLElement | Array} el (optional) An =
optional element array of elements to add an ID to (no ID is added if =
one is already present).=0A=
         * @param {String} prefix (optional) an optional prefix to use =
(defaults to "yui-gen").=0A=
         * @return {String | Array} The generated ID, or array of =
generated IDs (or original ID if already present on an element)=0A=
         */=0A=
        generateId: function(el, prefix) {=0A=
            prefix =3D prefix || 'yui-gen';=0A=
            el =3D el || {};=0A=
            =0A=
            var f =3D function(el) {=0A=
                if (el) {=0A=
                    el =3D Y.Dom.get(el);=0A=
                } else {=0A=
                    el =3D {}; // just generating ID in this case=0A=
                }=0A=
                =0A=
                if (!el.id) {=0A=
                    el.id =3D prefix + id_counter++; =0A=
                } // dont override existing=0A=
                =0A=
                =0A=
                return el.id;=0A=
            };=0A=
            =0A=
            return Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Determines whether an HTMLElement is an ancestor of another =
HTML element in the DOM hierarchy.=0A=
         * @method isAncestor=0A=
         * @param {String | HTMLElement} haystack The possible ancestor=0A=
         * @param {String | HTMLElement} needle The possible descendent=0A=
         * @return {Boolean} Whether or not the haystack is an ancestor =
of needle=0A=
         */=0A=
        isAncestor: function(haystack, needle) {=0A=
            haystack =3D Y.Dom.get(haystack);=0A=
            if (!haystack || !needle) { return false; }=0A=
            =0A=
            var f =3D function(needle) {=0A=
                if (haystack.contains && !isSafari) { // safari =
"contains" is broken=0A=
                    return haystack.contains(needle);=0A=
                }=0A=
                else if ( haystack.compareDocumentPosition ) {=0A=
                    return !!(haystack.compareDocumentPosition(needle) & =
16);=0A=
                }=0A=
                else { // loop up and test each parent=0A=
                    var parent =3D needle.parentNode;=0A=
                    =0A=
                    while (parent) {=0A=
                        if (parent =3D=3D haystack) {=0A=
                            return true;=0A=
                        }=0A=
                        else if (!parent.tagName || =
parent.tagName.toUpperCase() =3D=3D 'HTML') {=0A=
                            return false;=0A=
                        }=0A=
                        =0A=
                        parent =3D parent.parentNode;=0A=
                    }=0A=
                    return false;=0A=
                }     =0A=
            };=0A=
            =0A=
            return Y.Dom.batch(needle, f, Y.Dom, true);      =0A=
        },=0A=
        =0A=
        /**=0A=
         * Determines whether an HTMLElement is present in the current =
document.=0A=
         * @method inDocument         =0A=
         * @param {String | HTMLElement} el The element to search for=0A=
         * @return {Boolean} Whether or not the element is present in =
the current document=0A=
         */=0A=
        inDocument: function(el) {=0A=
            var f =3D function(el) {=0A=
                return this.isAncestor(document.documentElement, el);=0A=
            };=0A=
            =0A=
            return Y.Dom.batch(el, f, Y.Dom, true);=0A=
        },=0A=
        =0A=
        /**=0A=
         * Returns a array of HTMLElements that pass the test applied by =
supplied boolean method.=0A=
         * For optimized performance, include a tag and/or root node =
when possible.=0A=
         * @method getElementsBy=0A=
         * @param {Function} method - A boolean method for testing =
elements which receives the element as its only argument.=0A=
=0A=
         * @param {String} tag (optional) The tag name of the elements =
being collected=0A=
         * @param {String | HTMLElement} root (optional) The HTMLElement =
or an ID to use as the starting point =0A=
         * @return {Array} Array of HTMLElements=0A=
         */=0A=
        getElementsBy: function(method, tag, root) {=0A=
            tag =3D tag || '*';=0A=
            =0A=
            var nodes =3D [];=0A=
            =0A=
            if (root) {=0A=
                root =3D Y.Dom.get(root);=0A=
                if (!root) { // if no root node, then no children=0A=
                    return nodes;=0A=
                }=0A=
            } else {=0A=
                root =3D document;=0A=
            }=0A=
            =0A=
            var elements =3D root.getElementsByTagName(tag);=0A=
            =0A=
            if ( !elements.length && (tag =3D=3D '*' && root.all) ) {=0A=
                elements =3D root.all; // IE < 6=0A=
            }=0A=
            =0A=
            for (var i =3D 0, len =3D elements.length; i < len; ++i) {=0A=
                if ( method(elements[i]) ) { nodes[nodes.length] =3D =
elements[i]; }=0A=
            }=0A=
=0A=
            =0A=
            return nodes;=0A=
        },=0A=
        =0A=
        /**=0A=
         * Returns an array of elements that have had the supplied =
method applied.=0A=
         * The method is called with the element(s) as the first arg, =
and the optional param as the second ( method(el, o) ).=0A=
         * @method batch=0A=
         * @param {String | HTMLElement | Array} el (optional) An =
element or array of elements to apply the method to=0A=
         * @param {Function} method The method to apply to the element(s)=0A=
         * @param {Any} o (optional) An optional arg that is passed to =
the supplied method=0A=
         * @param {Boolean} override (optional) Whether or not to =
override the scope of "method" with "o"=0A=
         * @return {HTMLElement | Array} The element(s) with the method =
applied=0A=
         */=0A=
        batch: function(el, method, o, override) {=0A=
            var id =3D el;=0A=
            el =3D Y.Dom.get(el);=0A=
            =0A=
            var scope =3D (override) ? o : window;=0A=
            =0A=
            if (!el || el.tagName || !el.length) { // is null or not a =
collection (tagName for SELECT and others that can be both an element =
and a collection)=0A=
                if (!el) {=0A=
                    return false;=0A=
                }=0A=
                return method.call(scope, el, o);=0A=
            } =0A=
            =0A=
            var collection =3D [];=0A=
            =0A=
            for (var i =3D 0, len =3D el.length; i < len; ++i) {=0A=
                if (!el[i]) {=0A=
                    id =3D el[i];=0A=
                }=0A=
                collection[collection.length] =3D method.call(scope, =
el[i], o);=0A=
            }=0A=
            =0A=
            return collection;=0A=
        },=0A=
        =0A=
        /**=0A=
         * Returns the height of the document.=0A=
         * @method getDocumentHeight=0A=
         * @return {Int} The height of the actual document (which =
includes the body and its margin).=0A=
         */=0A=
        getDocumentHeight: function() {=0A=
            var scrollHeight =3D (document.compatMode !=3D 'CSS1Compat') =
? document.body.scrollHeight : document.documentElement.scrollHeight;=0A=
=0A=
            var h =3D Math.max(scrollHeight, Y.Dom.getViewportHeight());=0A=
            return h;=0A=
        },=0A=
        =0A=
        /**=0A=
         * Returns the width of the document.=0A=
         * @method getDocumentWidth=0A=
         * @return {Int} The width of the actual document (which =
includes the body and its margin).=0A=
         */=0A=
        getDocumentWidth: function() {=0A=
            var scrollWidth =3D (document.compatMode !=3D 'CSS1Compat') =
? document.body.scrollWidth : document.documentElement.scrollWidth;=0A=
            var w =3D Math.max(scrollWidth, Y.Dom.getViewportWidth());=0A=
            return w;=0A=
        },=0A=
=0A=
        /**=0A=
         * Returns the current height of the viewport.=0A=
         * @method getViewportHeight=0A=
         * @return {Int} The height of the viewable area of the page =
(excludes scrollbars).=0A=
         */=0A=
        getViewportHeight: function() {=0A=
            var height =3D self.innerHeight; // Safari, Opera=0A=
            var mode =3D document.compatMode;=0A=
        =0A=
            if ( (mode || isIE) && !isOpera ) { // IE, Gecko=0A=
                height =3D (mode =3D=3D 'CSS1Compat') ?=0A=
                        document.documentElement.clientHeight : // =
Standards=0A=
                        document.body.clientHeight; // Quirks=0A=
            }=0A=
        =0A=
            return height;=0A=
        },=0A=
        =0A=
        /**=0A=
         * Returns the current width of the viewport.=0A=
         * @method getViewportWidth=0A=
         * @return {Int} The width of the viewable area of the page =
(excludes scrollbars).=0A=
         */=0A=
        =0A=
        getViewportWidth: function() {=0A=
            var width =3D self.innerWidth;  // Safari=0A=
            var mode =3D document.compatMode;=0A=
            =0A=
            if (mode || isIE) { // IE, Gecko, Opera=0A=
                width =3D (mode =3D=3D 'CSS1Compat') ?=0A=
                        document.documentElement.clientWidth : // =
Standards=0A=
                        document.body.clientWidth; // Quirks=0A=
            }=0A=
            return width;=0A=
        }=0A=
    };=0A=
})();=0A=
/**=0A=
 * A region is a representation of an object on a grid.  It is defined=0A=
 * by the top, right, bottom, left extents, so is rectangular by =
default.  If =0A=
 * other shapes are required, this class could be extended to support it.=0A=
 * @namespace YAHOO.util=0A=
 * @class Region=0A=
 * @param {Int} t the top extent=0A=
 * @param {Int} r the right extent=0A=
 * @param {Int} b the bottom extent=0A=
 * @param {Int} l the left extent=0A=
 * @constructor=0A=
 */=0A=
YAHOO.util.Region =3D function(t, r, b, l) {=0A=
=0A=
    /**=0A=
     * The region's top extent=0A=
     * @property top=0A=
     * @type Int=0A=
     */=0A=
    this.top =3D t;=0A=
    =0A=
    /**=0A=
     * The region's top extent as index, for symmetry with set/getXY=0A=
     * @property 1=0A=
     * @type Int=0A=
     */=0A=
    this[1] =3D t;=0A=
=0A=
    /**=0A=
     * The region's right extent=0A=
     * @property right=0A=
     * @type int=0A=
     */=0A=
    this.right =3D r;=0A=
=0A=
    /**=0A=
     * The region's bottom extent=0A=
     * @property bottom=0A=
     * @type Int=0A=
     */=0A=
    this.bottom =3D b;=0A=
=0A=
    /**=0A=
     * The region's left extent=0A=
     * @property left=0A=
     * @type Int=0A=
     */=0A=
    this.left =3D l;=0A=
    =0A=
    /**=0A=
     * The region's left extent as index, for symmetry with set/getXY=0A=
     * @property 0=0A=
     * @type Int=0A=
     */=0A=
    this[0] =3D l;=0A=
};=0A=
=0A=
/**=0A=
 * Returns true if this region contains the region passed in=0A=
 * @method contains=0A=
 * @param  {Region}  region The region to evaluate=0A=
 * @return {Boolean}        True if the region is contained with this =
region, =0A=
 *                          else false=0A=
 */=0A=
YAHOO.util.Region.prototype.contains =3D function(region) {=0A=
    return ( region.left   >=3D this.left   && =0A=
             region.right  <=3D this.right  && =0A=
             region.top    >=3D this.top    && =0A=
             region.bottom <=3D this.bottom    );=0A=
=0A=
};=0A=
=0A=
/**=0A=
 * Returns the area of the region=0A=
 * @method getArea=0A=
 * @return {Int} the region's area=0A=
 */=0A=
YAHOO.util.Region.prototype.getArea =3D function() {=0A=
    return ( (this.bottom - this.top) * (this.right - this.left) );=0A=
};=0A=
=0A=
/**=0A=
 * Returns the region where the passed in region overlaps with this one=0A=
 * @method intersect=0A=
 * @param  {Region} region The region that intersects=0A=
 * @return {Region}        The overlap region, or null if there is no =
overlap=0A=
 */=0A=
YAHOO.util.Region.prototype.intersect =3D function(region) {=0A=
    var t =3D Math.max( this.top,    region.top    );=0A=
    var r =3D Math.min( this.right,  region.right  );=0A=
    var b =3D Math.min( this.bottom, region.bottom );=0A=
    var l =3D Math.max( this.left,   region.left   );=0A=
    =0A=
    if (b >=3D t && r >=3D l) {=0A=
        return new YAHOO.util.Region(t, r, b, l);=0A=
    } else {=0A=
        return null;=0A=
    }=0A=
};=0A=
=0A=
/**=0A=
 * Returns the region representing the smallest region that can contain =
both=0A=
 * the passed in region and this region.=0A=
 * @method union=0A=
 * @param  {Region} region The region that to create the union with=0A=
 * @return {Region}        The union region=0A=
 */=0A=
YAHOO.util.Region.prototype.union =3D function(region) {=0A=
    var t =3D Math.min( this.top,    region.top    );=0A=
    var r =3D Math.max( this.right,  region.right  );=0A=
    var b =3D Math.max( this.bottom, region.bottom );=0A=
    var l =3D Math.min( this.left,   region.left   );=0A=
=0A=
    return new YAHOO.util.Region(t, r, b, l);=0A=
};=0A=
=0A=
/**=0A=
 * toString=0A=
 * @method toString=0A=
 * @return string the region properties=0A=
 */=0A=
YAHOO.util.Region.prototype.toString =3D function() {=0A=
    return ( "Region {"    +=0A=
             "top: "       + this.top    + =0A=
             ", right: "   + this.right  + =0A=
             ", bottom: "  + this.bottom + =0A=
             ", left: "    + this.left   + =0A=
             "}" );=0A=
};=0A=
=0A=
/**=0A=
 * Returns a region that is occupied by the DOM element=0A=
 * @method getRegion=0A=
 * @param  {HTMLElement} el The element=0A=
 * @return {Region}         The region that the element occupies=0A=
 * @static=0A=
 */=0A=
YAHOO.util.Region.getRegion =3D function(el) {=0A=
    var p =3D YAHOO.util.Dom.getXY(el);=0A=
=0A=
    var t =3D p[1];=0A=
    var r =3D p[0] + el.offsetWidth;=0A=
    var b =3D p[1] + el.offsetHeight;=0A=
    var l =3D p[0];=0A=
=0A=
    return new YAHOO.util.Region(t, r, b, l);=0A=
};=0A=
=0A=
/////////////////////////////////////////////////////////////////////////=
////=0A=
=0A=
=0A=
/**=0A=
 * A point is a region that is special in that it represents a single =
point on =0A=
 * the grid.=0A=
 * @namespace YAHOO.util=0A=
 * @class Point=0A=
 * @param {Int} x The X position of the point=0A=
 * @param {Int} y The Y position of the point=0A=
 * @constructor=0A=
 * @extends YAHOO.util.Region=0A=
 */=0A=
YAHOO.util.Point =3D function(x, y) {=0A=
   if (x instanceof Array) { // accept output from Dom.getXY=0A=
      y =3D x[1];=0A=
      x =3D x[0];=0A=
   }=0A=
   =0A=
    /**=0A=
     * The X position of the point, which is also the right, left and =
index zero (for Dom.getXY symmetry)=0A=
     * @property x=0A=
     * @type Int=0A=
     */=0A=
=0A=
    this.x =3D this.right =3D this.left =3D this[0] =3D x;=0A=
     =0A=
    /**=0A=
     * The Y position of the point, which is also the top, bottom and =
index one (for Dom.getXY symmetry)=0A=
     * @property y=0A=
     * @type Int=0A=
     */=0A=
    this.y =3D this.top =3D this.bottom =3D this[1] =3D y;=0A=
};=0A=
=0A=
YAHOO.util.Point.prototype =3D new YAHOO.util.Region();=0A=
=0A=
YAHOO.register("dom", YAHOO.util.Dom, {version: "2.2.2", build: "204"});=0A=

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/look/yui/container/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.2.2=0A=
*/=0A=
/**=0A=
* Config is a utility used within an Object to allow the implementer to =
maintain a list of local configuration properties and listen for changes =
to those properties dynamically using CustomEvent. The initial values =
are also maintained so that the configuration can be reset at any given =
point 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=
	if (owner) {=0A=
		this.init(owner);=0A=
	}=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=
YAHOO.util.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=
YAHOO.util.Config.BOOLEAN_TYPE =3D "boolean";=0A=
=0A=
YAHOO.util.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 being =
executed=0A=
	* @property queueInProgress=0A=
	* @type Boolean=0A=
	*/=0A=
	queueInProgress : false,=0A=
=0A=
	/**=0A=
	* Maintains the local collection of configuration property objects and =
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 =
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 =
(setProperty is called without the silent flag=0A=
	* @event configChangedEvent=0A=
	*/=0A=
	configChangedEvent : null,=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 YAHOO.util.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 =
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 new YAHOO.util.CustomEvent(key, this.owner);=0A=
		propertyObject.key =3D key;=0A=
=0A=
		if (propertyObject.handler) {=0A=
			propertyObject.event.subscribe(propertyObject.handler, 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 =
the Config Object.=0A=
	* @method getConfig=0A=
	* @return {Object} The current config, represented in a key-value map=0A=
	*/=0A=
	getConfig : function() {=0A=
		var cfg =3D {};=0A=
			=0A=
		for (var prop in this.config) {=0A=
			var 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=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D this.config[key];=0A=
		if (property && property.event) {=0A=
			if (this.initialConfig[key] && =
!YAHOO.lang.isUndefined(this.initialConfig[key]))	{=0A=
				this.setProperty(key, this.initialConfig[key]);=0A=
			}=0A=
			return true;=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Sets the value of a property. If the silent property is passed as =
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, =
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=
		key =3D key.toLowerCase();=0A=
=0A=
		if (this.queueInProgress && ! silent) {=0A=
			this.queueProperty(key,value); // Currently running through a =
queue... =0A=
			return true;=0A=
		} else {=0A=
			var property =3D this.config[key];=0A=
			if (property && property.event) {=0A=
				if (property.validator && ! property.validator(value)) { // validator=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 =
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 it =
failed.=0A=
	*/	=0A=
	queueProperty : function(key, value) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D this.config[key];=0A=
							=0A=
		if (property && property.event) {=0A=
			if (!YAHOO.lang.isUndefined(value) && property.validator && ! =
property.validator(value)) { // validator=0A=
				return false;=0A=
			} else {=0A=
=0A=
				if (!YAHOO.lang.isUndefined(value)) {=0A=
					property.value =3D value;=0A=
				} else {=0A=
					value =3D property.value;=0A=
				}=0A=
=0A=
				var foundDuplicate =3D false;=0A=
				var iLen =3D this.eventQueue.length;=0A=
				for (var i=3D0; i < iLen; i++) {=0A=
					var queueItem =3D this.eventQueue[i];=0A=
=0A=
					if (queueItem) {=0A=
						var queueItemKey =3D queueItem[0];=0A=
						var queueItemValue =3D queueItem[1];=0A=
						=0A=
						if (queueItemKey =3D=3D key) {=0A=
							// found a dupe... push to end of queue, null current item, and =
break=0A=
							this.eventQueue[i] =3D null;=0A=
							this.eventQueue.push([key, (!YAHOO.lang.isUndefined(value) ? =
value : queueItemValue)]);=0A=
							foundDuplicate =3D true;=0A=
							break;=0A=
						}=0A=
					}=0A=
				}=0A=
				=0A=
				if (! foundDuplicate && !YAHOO.lang.isUndefined(value)) { // this is =
a refire, or a new property in the queue=0A=
					this.eventQueue.push([key, value]);=0A=
				}=0A=
			}=0A=
=0A=
			if (property.supercedes) {=0A=
				var sLen =3D property.supercedes.length;=0A=
				for (var s=3D0; s < sLen; s++) {=0A=
					var supercedesCheck =3D property.supercedes[s];=0A=
					var qLen =3D this.eventQueue.length;=0A=
					for (var q=3D0; q < qLen; q++) {=0A=
						var queueItemCheck =3D this.eventQueue[q];=0A=
=0A=
						if (queueItemCheck) {=0A=
							var queueItemCheckKey =3D queueItemCheck[0];=0A=
							var queueItemCheckValue =3D queueItemCheck[1];=0A=
							=0A=
							if ( queueItemCheckKey =3D=3D supercedesCheck.toLowerCase() ) {=0A=
								this.eventQueue.push([queueItemCheckKey, queueItemCheckValue]);=0A=
								this.eventQueue[q] =3D null;=0A=
								break;=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=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D this.config[key];=0A=
		if (property && property.event && =
!YAHOO.lang.isUndefined(property.value)) {=0A=
			if (this.queueInProgress) {=0A=
				this.queueProperty(key);=0A=
			} else {=0A=
				this.fireEvent(key, property.value);=0A=
			}=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Applies a key-value Object literal to the configuration, replacing =
any existing values, and queueing the property events.=0A=
	* Although the values will be set, fireQueue() must be called for their =
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 be =
set to the userConfig passed in, so that calling a reset will reset the =
properties to the passed values.=0A=
	*/=0A=
	applyConfig : function(userConfig, init) {=0A=
		if (init) {=0A=
			this.initialConfig =3D userConfig;=0A=
		}=0A=
		for (var prop in userConfig) {=0A=
			this.queueProperty(prop, userConfig[prop]);=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Refires the events for all configuration properties using their =
current values.=0A=
	* @method refresh=0A=
	*/=0A=
	refresh : function() {=0A=
		for (var 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=
		this.queueInProgress =3D true;=0A=
		for (var i=3D0;i<this.eventQueue.length;i++) {=0A=
			var queueItem =3D this.eventQueue[i];=0A=
			if (queueItem) {=0A=
				var key =3D queueItem[0];=0A=
				var value =3D queueItem[1];=0A=
				=0A=
				var property =3D this.config[key];=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 given =
property. =0A=
	* @method subscribeToConfigEvent=0A=
	* @param {String}	key			The property name=0A=
	* @param {Function}	handler		The handler function to use subscribe to =
the property's event=0A=
	* @param {Object}	obj			The Object to use for scoping the event handler =
(see CustomEvent documentation)=0A=
	* @param {Boolean}	override	Optional. If true, will override "this" =
within the handler to map to the scope Object passed into the method.=0A=
	* @return {Boolean}				True, if the subscription was successful, =
otherwise false.=0A=
	*/	=0A=
	subscribeToConfigEvent : function(key, handler, obj, override) {=0A=
		var property =3D this.config[key.toLowerCase()];=0A=
		if (property && property.event) {=0A=
			if (! YAHOO.util.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=
	* Unsubscribes an external handler from the change event for any given =
property. =0A=
	* @method unsubscribeFromConfigEvent=0A=
	* @param {String}	key			The property name=0A=
	* @param {Function}	handler		The handler function to use subscribe to =
the property's event=0A=
	* @param {Object}	obj			The Object to use for scoping the event handler =
(see CustomEvent documentation)=0A=
	* @return {Boolean}				True, if the unsubscription was successful, =
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 =
CustomEvent queue=0A=
	* @method outputEventQueue=0A=
	* @return {String}	The string list of CustomEvents currently queued for =
execution=0A=
	*/=0A=
	outputEventQueue : function() {=0A=
		var output =3D "";=0A=
		for (var q=3D0;q<this.eventQueue.length;q++) {=0A=
			var 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=
=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 Object =
belongs=0A=
*/=0A=
YAHOO.util.Config.prototype.init =3D function(owner) {=0A=
	this.owner =3D owner;=0A=
	this.configChangedEvent =3D new =
YAHOO.util.CustomEvent(YAHOO.util.CONFIG_CHANGED_EVENT, this);=0A=
	this.queueInProgress =3D false;=0A=
	this.config =3D {};=0A=
	this.initialConfig =3D {};=0A=
	this.eventQueue =3D [];=0A=
};=0A=
=0A=
/**=0A=
* Checks to determine if a particular function/Object pair are already =
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 =
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 to the CustomEvent passed in=0A=
*/=0A=
YAHOO.util.Config.alreadySubscribed =3D function(evt, fn, obj) {=0A=
	for (var e=3D0;e<evt.subscribers.length;e++) {=0A=
		var subsc =3D evt.subscribers[e];=0A=
		if (subsc && subsc.obj =3D=3D obj && subsc.fn =3D=3D fn) {=0A=
			return true;=0A=
		}=0A=
	}=0A=
	return false;=0A=
};=0A=
/**=0A=
*  The Container family of components is designed to enable developers =
to create different kinds of content-containing modules on the web. =
Module and Overlay are the most basic containers, and they can be used =
directly or extended to build custom containers. Also part of the =
Container family are four UI controls that extend Module and Overlay: =
Tooltip, Panel, Dialog, and SimpleDialog.=0A=
* @module container=0A=
* @title Container=0A=
* @requires yahoo,dom,event,dragdrop,animation=0A=
*/=0A=
=0A=
/**=0A=
* Module is a JavaScript representation of the Standard Module Format. =
Standard Module Format is a simple standard for markup containers where =
child nodes representing the header, body, and footer of the content are =
denoted using the CSS classes "hd", "bd", and "ft" respectively. Module =
is the base class for all other classes in the YUI 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 =
the configuration that should be set for this module. See configuration =
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=
/**=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=
YAHOO.widget.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=
YAHOO.widget.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=
YAHOO.widget.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=
YAHOO.widget.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=
YAHOO.widget.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=
YAHOO.widget.Module.CSS_FOOTER =3D "ft";=0A=
=0A=
/**=0A=
* Constant representing the url for the "src" attribute of the iframe =
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=
YAHOO.widget.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 size =
detection.=0A=
* @event YAHOO.widget.Module.textResizeEvent=0A=
*/=0A=
YAHOO.widget.Module.textResizeEvent =3D new =
YAHOO.util.CustomEvent("textResize");=0A=
=0A=
/**=0A=
* Constant representing the name of the Module's events=0A=
* @property YAHOO.widget.Module._EVENT_TYPES=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.Module._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 YAHOO.widget.Module._DEFAULT_CONFIG=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.Module._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=
};=0A=
=0A=
=0A=
YAHOO.widget.Module.prototype =3D {=0A=
=0A=
	/**=0A=
	* The class's constructor function=0A=
	* @property contructor=0A=
	* @type Function=0A=
	*/=0A=
	constructor : YAHOO.widget.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=
	* The String representing the image root=0A=
	* @property imageRoot=0A=
	* @type String=0A=
	*/=0A=
	imageRoot : YAHOO.widget.Module.IMG_ROOT,=0A=
=0A=
	/**=0A=
	* Initializes the custom events for Module which are fired =
automatically at appropriate times by the Module class.=0A=
	* @method initEvents=0A=
	*/=0A=
	initEvents : function() {=0A=
=0A=
        var EVENT_TYPES =3D YAHOO.widget.Module._EVENT_TYPES;=0A=
=0A=
		/**=0A=
		* CustomEvent fired prior to class initalization.=0A=
		* @event beforeInitEvent=0A=
		* @param {class} classRef	class reference of the initializing class, =
such as this.beforeInitEvent.fire(YAHOO.widget.Module)=0A=
		*/=0A=
		this.beforeInitEvent =3D new =
YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_INIT, this);=0A=
=0A=
		/**=0A=
		* CustomEvent fired after class initalization.=0A=
		* @event initEvent=0A=
		* @param {class} classRef	class reference of the initializing class, =
such as this.beforeInitEvent.fire(YAHOO.widget.Module)=0A=
		*/		=0A=
		this.initEvent =3D new YAHOO.util.CustomEvent(EVENT_TYPES.INIT, this);=0A=
=0A=
		/**=0A=
		* CustomEvent fired when the Module is appended to the DOM=0A=
		* @event appendEvent=0A=
		*/=0A=
		this.appendEvent =3D new YAHOO.util.CustomEvent(EVENT_TYPES.APPEND, =
this);=0A=
=0A=
		/**=0A=
		* CustomEvent fired before the Module is rendered=0A=
		* @event beforeRenderEvent=0A=
		*/=0A=
		this.beforeRenderEvent =3D new =
YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_RENDER, this);=0A=
=0A=
		/**=0A=
		* CustomEvent fired after the Module is rendered=0A=
		* @event renderEvent=0A=
		*/=0A=
		this.renderEvent =3D new YAHOO.util.CustomEvent(EVENT_TYPES.RENDER, =
this);=0A=
	=0A=
		/**=0A=
		* CustomEvent fired when the header content of the Module is modified=0A=
		* @event changeHeaderEvent=0A=
		* @param {String/HTMLElement} content	String/element representing the =
new header content=0A=
		*/=0A=
		this.changeHeaderEvent =3D new =
YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_HEADER, this);=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 the =
new body content=0A=
		*/		=0A=
		this.changeBodyEvent =3D new =
YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_BODY, this);=0A=
		=0A=
		/**=0A=
		* CustomEvent fired when the footer content of the Module is modified=0A=
		* @event changeFooterEvent=0A=
		* @param {String/HTMLElement} content	String/element representing the =
new footer content=0A=
		*/=0A=
		this.changeFooterEvent =3D new =
YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_FOOTER, this);=0A=
=0A=
		/**=0A=
		* CustomEvent fired when the content of the Module is modified=0A=
		* @event changeContentEvent=0A=
		*/=0A=
		this.changeContentEvent =3D new =
YAHOO.util.CustomEvent(EVENT_TYPES.CHANGE_CONTENT, this);=0A=
=0A=
		/**=0A=
		* CustomEvent fired when the Module is destroyed=0A=
		* @event destroyEvent=0A=
		*/=0A=
		this.destroyEvent =3D new YAHOO.util.CustomEvent(EVENT_TYPES.DESTORY, =
this);=0A=
		=0A=
		/**=0A=
		* CustomEvent fired before the Module is shown=0A=
		* @event beforeShowEvent=0A=
		*/=0A=
		this.beforeShowEvent =3D new =
YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_SHOW, this);=0A=
=0A=
		/**=0A=
		* CustomEvent fired after the Module is shown=0A=
		* @event showEvent=0A=
		*/=0A=
		this.showEvent =3D new YAHOO.util.CustomEvent(EVENT_TYPES.SHOW, this);=0A=
=0A=
		/**=0A=
		* CustomEvent fired before the Module is hidden=0A=
		* @event beforeHideEvent=0A=
		*/=0A=
		this.beforeHideEvent =3D new =
YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_HIDE, this);=0A=
=0A=
		/**=0A=
		* CustomEvent fired after the Module is hidden=0A=
		* @event hideEvent=0A=
		*/=0A=
		this.hideEvent =3D new YAHOO.util.CustomEvent(EVENT_TYPES.HIDE, this);=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=
					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 current user-agent browser=0A=
	* @property browser=0A=
	* @type String=0A=
	*/=0A=
	browser : function() {=0A=
			var ua =3D navigator.userAgent.toLowerCase();=0A=
				  if (ua.indexOf('opera')!=3D-1) { // Opera (check first in case of =
spoof)=0A=
					 return 'opera';=0A=
				  } else if (ua.indexOf('msie 7')!=3D-1) { // IE7=0A=
					 return 'ie7';=0A=
				  } else if (ua.indexOf('msie') !=3D-1) { // IE=0A=
					 return 'ie';=0A=
				  } else if (ua.indexOf('safari')!=3D-1) { // Safari (check before =
Gecko because it includes "like Gecko")=0A=
					 return 'safari';=0A=
				  } else if (ua.indexOf('gecko') !=3D -1) { // Gecko=0A=
					 return 'gecko';=0A=
				  } else {=0A=
					 return false;=0A=
				  }=0A=
			}(),=0A=
=0A=
	/**=0A=
	* Boolean representing whether or not the current browsing context is =
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 =
automatically at appropriate times by the Module class.=0A=
	*/=0A=
	initDefaultConfig : function() {=0A=
		// Add properties //=0A=
=0A=
    	var DEFAULT_CONFIG =3D YAHOO.widget.Module._DEFAULT_CONFIG;=0A=
=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(=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=
		* Object or array of objects representing the ContainerEffect classes =
that are active for animating the container.=0A=
		* @config effect=0A=
		* @type Object=0A=
		* @default null=0A=
		*/=0A=
		this.cfg.addProperty(=0A=
                    DEFAULT_CONFIG.EFFECT.key, =0A=
                    {=0A=
                        suppressEvent: =
DEFAULT_CONFIG.EFFECT.suppressEvent, =0A=
                        supercedes: DEFAULT_CONFIG.EFFECT.supercedes=0A=
                    }=0A=
                );=0A=
=0A=
		/**=0A=
		* Specifies whether to create a special proxy iframe to monitor for =
user font resizing in the document=0A=
		* @config monitorresize=0A=
		* @type Boolean=0A=
		* @default true=0A=
		*/=0A=
		this.cfg.addProperty(=0A=
		          DEFAULT_CONFIG.MONITOR_RESIZE.key,=0A=
		          {=0A=
		              handler: this.configMonitorResize,=0A=
		              value: DEFAULT_CONFIG.MONITOR_RESIZE.value=0A=
                  }=0A=
              );=0A=
		=0A=
	},=0A=
=0A=
	/**=0A=
	* The Module class's initialization method, which is executed for =
Module and all of its subclasses. This method is automatically called by =
the constructor, and  sets up all DOM references for pre-existing =
markup, and creates required markup if it is not 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 =
containing the configuration that should be set for this module. See =
configuration documentation for more details.=0A=
	*/=0A=
	init : function(el, userConfig) {=0A=
=0A=
		this.initEvents();=0A=
=0A=
		this.beforeInitEvent.fire(YAHOO.widget.Module);=0A=
=0A=
		/**=0A=
		* The Module's Config object used for monitoring configuration =
properties.=0A=
		* @property cfg=0A=
		* @type YAHOO.util.Config=0A=
		*/=0A=
		this.cfg =3D new YAHOO.util.Config(this);=0A=
=0A=
		if (this.isSecure) {=0A=
			this.imageRoot =3D YAHOO.widget.Module.IMG_ROOT_SSL;=0A=
		}=0A=
=0A=
		if (typeof el =3D=3D "string") {=0A=
			var elId =3D el;=0A=
=0A=
			el =3D document.getElementById(el);=0A=
			if (! el) {=0A=
				el =3D document.createElement("div");=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=
		var childNodes =3D this.element.childNodes;=0A=
=0A=
		if (childNodes) {=0A=
			for (var i=3D0;i<childNodes.length;i++) {=0A=
				var child =3D childNodes[i];=0A=
				switch (child.className) {=0A=
					case YAHOO.widget.Module.CSS_HEADER:=0A=
						this.header =3D child;=0A=
						break;=0A=
					case YAHOO.widget.Module.CSS_BODY:=0A=
						this.body =3D child;=0A=
						break;=0A=
					case YAHOO.widget.Module.CSS_FOOTER:=0A=
						this.footer =3D child;=0A=
						break;=0A=
				}=0A=
			}=0A=
		}=0A=
=0A=
		this.initDefaultConfig();=0A=
=0A=
		YAHOO.util.Dom.addClass(this.element, YAHOO.widget.Module.CSS_MODULE);=0A=
=0A=
		if (userConfig) {=0A=
			this.cfg.applyConfig(userConfig, true);=0A=
		}=0A=
=0A=
		// Subscribe to the fireQueue() method of Config so that any queued =
configuration changes are=0A=
		// excecuted upon render of the Module=0A=
		if (! YAHOO.util.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(YAHOO.widget.Module);=0A=
	},=0A=
=0A=
	/**=0A=
	* Initialized an empty IFRAME that is placed out of the visible area =
that can be used to detect text resize.=0A=
	* @method initResizeMonitor=0A=
	*/=0A=
	initResizeMonitor : function() {=0A=
=0A=
        if(this.browser !=3D "opera") {=0A=
=0A=
            var resizeMonitor =3D =
document.getElementById("_yuiResizeMonitor");=0A=
=0A=
            if (! resizeMonitor) {=0A=
=0A=
                resizeMonitor =3D document.createElement("iframe");=0A=
=0A=
                var bIE =3D (this.browser.indexOf("ie") =3D=3D=3D 0);=0A=
=0A=
                if(this.isSecure && =
YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL && bIE) {=0A=
                   resizeMonitor.src =3D =
YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL;=0A=
                }=0A=
=0A=
                resizeMonitor.id =3D "_yuiResizeMonitor";=0A=
                resizeMonitor.style.visibility =3D "hidden";=0A=
=0A=
                document.body.appendChild(resizeMonitor);=0A=
=0A=
                resizeMonitor.style.width =3D "10em";=0A=
                resizeMonitor.style.height =3D "10em";=0A=
                resizeMonitor.style.position =3D "absolute";=0A=
=0A=
                var nLeft =3D -1 * resizeMonitor.offsetWidth;=0A=
                var nTop =3D -1 * resizeMonitor.offsetHeight;=0A=
=0A=
                resizeMonitor.style.top =3D nTop + "px";=0A=
                resizeMonitor.style.left =3D nLeft + "px";=0A=
                resizeMonitor.style.borderStyle =3D "none";=0A=
                resizeMonitor.style.borderWidth =3D "0";=0A=
                YAHOO.util.Dom.setStyle(resizeMonitor, "opacity", "0");=0A=
=0A=
                resizeMonitor.style.visibility =3D "visible";=0A=
=0A=
                if(!bIE) {=0A=
=0A=
                    var doc =3D resizeMonitor.contentWindow.document;=0A=
=0A=
                    doc.open();=0A=
                    doc.close();=0A=
=0A=
                }=0A=
            }=0A=
=0A=
			var fireTextResize =3D function() {=0A=
				YAHOO.widget.Module.textResizeEvent.fire();=0A=
			};=0A=
=0A=
            if(resizeMonitor && resizeMonitor.contentWindow) {=0A=
                this.resizeMonitor =3D resizeMonitor;=0A=
=0A=
				YAHOO.widget.Module.textResizeEvent.subscribe(this.onDomResize, =
this, true);=0A=
=0A=
				if (! YAHOO.widget.Module.textResizeInitialized) {=0A=
					if (! =
YAHOO.util.Event.addListener(this.resizeMonitor.contentWindow, "resize", =
fireTextResize)) {=0A=
						// This will fail in IE if document.domain has changed, so we must =
change the listener to=0A=
						// use the resizeMonitor element instead=0A=
						YAHOO.util.Event.addListener(this.resizeMonitor, "resize", =
fireTextResize);=0A=
					}=0A=
					YAHOO.widget.Module.textResizeInitialized =3D true;=0A=
				}=0A=
            }=0A=
=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 =
the passed element to the header. If no header is present, one will be =
automatically created.=0A=
	* @method setHeader=0A=
	* @param {String}	headerContent	The HTML used to set the header =
<em>OR</em>=0A=
	* @param {HTMLElement}	headerContent	The HTMLElement to append to the =
header=0A=
	*/=0A=
	setHeader : function(headerContent) {=0A=
		if (! this.header) {=0A=
			this.header =3D document.createElement("div");=0A=
			this.header.className =3D YAHOO.widget.Module.CSS_HEADER;=0A=
		}=0A=
=0A=
		if (typeof headerContent =3D=3D "string") {=0A=
			this.header.innerHTML =3D headerContent;=0A=
		} else {=0A=
			this.header.innerHTML =3D "";=0A=
			this.header.appendChild(headerContent);=0A=
		}=0A=
=0A=
		this.changeHeaderEvent.fire(headerContent);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Appends the passed element to the header. If no header is present, =
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=
		if (! this.header) {=0A=
			this.header =3D document.createElement("div");=0A=
			this.header.className =3D YAHOO.widget.Module.CSS_HEADER;=0A=
		}=0A=
=0A=
		this.header.appendChild(element);=0A=
		this.changeHeaderEvent.fire(element);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Sets the Module's body content to the HTML specified, or appends the =
passed element to the body. If no body is present, one will be =
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=
		if (! this.body) {=0A=
			this.body =3D document.createElement("div");=0A=
			this.body.className =3D YAHOO.widget.Module.CSS_BODY;=0A=
		}=0A=
=0A=
		if (typeof bodyContent =3D=3D "string")=0A=
		{=0A=
			this.body.innerHTML =3D bodyContent;=0A=
		} else {=0A=
			this.body.innerHTML =3D "";=0A=
			this.body.appendChild(bodyContent);=0A=
		}=0A=
=0A=
		this.changeBodyEvent.fire(bodyContent);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Appends the passed element to the body. If no body is present, one =
will be automatically created.=0A=
	* @method appendToBody=0A=
	* @param {HTMLElement}	element	The element to append to the body=0A=
	*/=0A=
	appendToBody : function(element) {=0A=
		if (! this.body) {=0A=
			this.body =3D document.createElement("div");=0A=
			this.body.className =3D YAHOO.widget.Module.CSS_BODY;=0A=
		}=0A=
=0A=
		this.body.appendChild(element);=0A=
		this.changeBodyEvent.fire(element);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Sets the Module's footer content to the HTML specified, or appends =
the passed element to the footer. If no footer is present, one will be =
automatically created.=0A=
	* @method setFooter=0A=
	* @param {String}	footerContent	The HTML used to set the footer =
<em>OR</em>=0A=
	* @param {HTMLElement}	footerContent	The HTMLElement to append to the =
footer=0A=
	*/=0A=
	setFooter : function(footerContent) {=0A=
		if (! this.footer) {=0A=
			this.footer =3D document.createElement("div");=0A=
			this.footer.className =3D YAHOO.widget.Module.CSS_FOOTER;=0A=
		}=0A=
=0A=
		if (typeof footerContent =3D=3D "string") {=0A=
			this.footer.innerHTML =3D footerContent;=0A=
		} else {=0A=
			this.footer.innerHTML =3D "";=0A=
			this.footer.appendChild(footerContent);=0A=
		}=0A=
=0A=
		this.changeFooterEvent.fire(footerContent);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Appends the passed element to the footer. If no footer is present, =
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=
		if (! this.footer) {=0A=
			this.footer =3D document.createElement("div");=0A=
			this.footer.className =3D YAHOO.widget.Module.CSS_FOOTER;=0A=
		}=0A=
=0A=
		this.footer.appendChild(element);=0A=
		this.changeFooterEvent.fire(element);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Renders the Module by inserting the elements that are not already in =
the main Module into their correct places. Optionally appends the Module =
to the specified node prior to the render's execution. NOTE: For Modules =
without existing markup, the appendToNode argument is REQUIRED. If this =
argument is ommitted and the current element is not present in the =
document, the function will return false, indicating that the render was =
a failure.=0A=
	* @method render=0A=
	* @param {String}	appendToNode	The element id to which the Module =
should be appended to prior to rendering <em>OR</em>=0A=
	* @param {HTMLElement}	appendToNode	The element to which the Module =
should be appended to prior to rendering=0A=
	* @param {HTMLElement}	moduleElement	OPTIONAL. The element that =
represents the actual Standard Module container.=0A=
	* @return {Boolean} Success or failure of the render=0A=
	*/=0A=
	render : function(appendToNode, moduleElement) {=0A=
		this.beforeRenderEvent.fire();=0A=
=0A=
		if (! moduleElement) {=0A=
			moduleElement =3D this.element;=0A=
		}=0A=
=0A=
		var me =3D this;=0A=
		var appendTo =3D function(element) {=0A=
			if (typeof element =3D=3D "string") {=0A=
				element =3D document.getElementById(element);=0A=
			}=0A=
=0A=
			if (element) {=0A=
				element.appendChild(me.element);=0A=
				me.appendEvent.fire();=0A=
			}=0A=
		};=0A=
=0A=
		if (appendToNode) {=0A=
			appendTo(appendToNode);=0A=
		} else { // No node was passed in. If the element is not pre-marked =
up, this fails=0A=
			if (! YAHOO.util.Dom.inDocument(this.element)) {=0A=
				return false;=0A=
			}=0A=
		}=0A=
=0A=
		// Need to get everything into the DOM if it isn't already=0A=
=0A=
		if (this.header && ! YAHOO.util.Dom.inDocument(this.header)) {=0A=
			// There is a header, but it's not in the DOM yet... need to add it=0A=
			var firstChild =3D moduleElement.firstChild;=0A=
			if (firstChild) { // Insert before first child if exists=0A=
				moduleElement.insertBefore(this.header, firstChild);=0A=
			} else { // Append to empty body because there are no children=0A=
				moduleElement.appendChild(this.header);=0A=
			}=0A=
		}=0A=
=0A=
		if (this.body && ! YAHOO.util.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 && YAHOO.util.Dom.isAncestor(this.moduleElement, =
this.footer)) { // Insert before footer if exists in DOM=0A=
				moduleElement.insertBefore(this.body, this.footer);=0A=
			} else { // Append to element because there is no footer=0A=
				moduleElement.appendChild(this.body);=0A=
			}=0A=
		}=0A=
=0A=
		if (this.footer && ! YAHOO.util.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 =
to null.=0A=
	* @method destroy=0A=
	*/=0A=
	destroy : function() {=0A=
		var parent;=0A=
=0A=
		if (this.element) {=0A=
			YAHOO.util.Event.purgeElement(this.element, true);=0A=
			parent =3D this.element.parentNode;=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=
		for (var e in this) {=0A=
			if (e instanceof YAHOO.util.CustomEvent) {=0A=
				e.unsubscribeAll();=0A=
			}=0A=
		}=0A=
=0A=
		YAHOO.widget.Module.textResizeEvent.unsubscribe(this.onDomResize, =
this);=0A=
=0A=
		this.destroyEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Shows the Module element by setting the visible configuration =
property to true. Also fires two events: beforeShowEvent prior to 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 =
property to false. Also fires two events: beforeHideEvent prior to 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=
	/**=0A=
	* Default event handler for changing the visibility property of a =
Module. By default, this is achieved by switching the "display" style =
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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
	* @param {Object} obj	The scope object. For configuration handlers, =
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=
			YAHOO.util.Dom.setStyle(this.element, "display", "block");=0A=
			this.showEvent.fire();=0A=
		} else {=0A=
			this.beforeHideEvent.fire();=0A=
			YAHOO.util.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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
	* @param {Object} obj	The scope object. For configuration handlers, =
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=
			YAHOO.widget.Module.textResizeEvent.unsubscribe(this.onDomResize, =
this, true);=0A=
			this.resizeMonitor =3D null;=0A=
		}=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=
YAHOO.widget.Module.prototype.toString =3D function() {=0A=
	return "Module " + this.id;=0A=
};=0A=
/**=0A=
* Overlay is a Module that is absolutely positioned above the page flow. =
It has convenience methods for positioning and sizing, as well as =
options for controlling zIndex and constraining the Overlay's position =
to the current visible viewport. Overlay also contains a dynamicly =
generated IFRAME which is placed beneath it for Internet Explorer 6 and =
5.x so that it will be 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 =
10/23/2006the configuration that should be set for this Overlay. See =
configuration 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=
YAHOO.extend(YAHOO.widget.Overlay, YAHOO.widget.Module);=0A=
=0A=
/**=0A=
* Constant representing the name of the Overlay's events=0A=
* @property YAHOO.widget.Overlay._EVENT_TYPES=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.Overlay._EVENT_TYPES =3D {=0A=
=0A=
    "BEFORE_MOVE": "beforeMove",=0A=
    "MOVE": "move"=0A=
=0A=
};=0A=
=0A=
/**=0A=
* Constant representing the Overlay's configuration properties=0A=
* @property YAHOO.widget.Overlay._DEFAULT_CONFIG=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.Overlay._DEFAULT_CONFIG =3D {=0A=
=0A=
    "X": { =0A=
        key: "x", =0A=
        validator:YAHOO.lang.isNumber, =0A=
        suppressEvent:true, supercedes:["iframe"] =0A=
    },=0A=
=0A=
    "Y": { =0A=
        key: "y", =0A=
        validator:YAHOO.lang.isNumber, =0A=
        suppressEvent:true, 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:YAHOO.lang.isBoolean, =0A=
        supercedes:["iframe","visible"] =0A=
    },=0A=
=0A=
    "WIDTH": { =0A=
        key: "width", =0A=
        suppressEvent:true, =0A=
        supercedes:["iframe"] =0A=
    }, =0A=
=0A=
    "HEIGHT": { =0A=
        key: "height", =0A=
        suppressEvent:true, =0A=
        supercedes:["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:YAHOO.lang.isBoolean, =0A=
        supercedes:["iframe","x","y","xy"] =0A=
    }, =0A=
=0A=
    "IFRAME": { =0A=
        key: "iframe", =0A=
        value:(YAHOO.widget.Module.prototype.browser =3D=3D "ie" ? true =
: false), =0A=
        validator:YAHOO.lang.isBoolean, =0A=
        supercedes:["zIndex"] =0A=
    }=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=
YAHOO.widget.Overlay.IFRAME_SRC =3D "javascript:false;";=0A=
=0A=
/**=0A=
* Constant representing the top left corner of an element, used for =
configuring the context element alignment=0A=
* @property YAHOO.widget.Overlay.TOP_LEFT=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Overlay.TOP_LEFT =3D "tl";=0A=
=0A=
/**=0A=
* Constant representing the top right corner of an element, used for =
configuring the context element alignment=0A=
* @property YAHOO.widget.Overlay.TOP_RIGHT=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Overlay.TOP_RIGHT =3D "tr";=0A=
=0A=
/**=0A=
* Constant representing the top bottom left corner of an element, used =
for configuring the context element alignment=0A=
* @property YAHOO.widget.Overlay.BOTTOM_LEFT=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Overlay.BOTTOM_LEFT =3D "bl";=0A=
=0A=
/**=0A=
* Constant representing the bottom right corner of an element, used for =
configuring the context element alignment=0A=
* @property YAHOO.widget.Overlay.BOTTOM_RIGHT=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.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=
YAHOO.widget.Overlay.CSS_OVERLAY =3D "yui-overlay";=0A=
=0A=
/**=0A=
* The Overlay initialization method, which is executed for Overlay and =
all of its subclasses. This method is automatically called by the =
constructor, and  sets up all DOM references for pre-existing markup, =
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 containing =
the configuration that should be set for this Overlay. See configuration =
documentation for more details.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.init =3D function(el, userConfig) {=0A=
	YAHOO.widget.Overlay.superclass.init.call(this, el/*, userConfig*/);  =
// Note that we don't pass the user config in here yet because we only =
want it executed once, at the lowest subclass level=0A=
=0A=
	this.beforeInitEvent.fire(YAHOO.widget.Overlay);=0A=
=0A=
	YAHOO.util.Dom.addClass(this.element, YAHOO.widget.Overlay.CSS_OVERLAY);=0A=
=0A=
	if (userConfig) {=0A=
		this.cfg.applyConfig(userConfig, true);=0A=
	}=0A=
=0A=
	if (this.platform =3D=3D "mac" && this.browser =3D=3D "gecko") {=0A=
		if (! =
YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showMacGeckoScrol=
lbars,this)) {=0A=
			this.showEvent.subscribe(this.showMacGeckoScrollbars,this,true);=0A=
		}=0A=
		if (! =
YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideMacGeckoScrol=
lbars,this)) {=0A=
			this.hideEvent.subscribe(this.hideMacGeckoScrollbars,this,true);=0A=
		}=0A=
	}=0A=
=0A=
	this.initEvent.fire(YAHOO.widget.Overlay);=0A=
=0A=
};=0A=
=0A=
/**=0A=
* Initializes the custom events for Overlay which are fired =
automatically at appropriate times by the Overlay class.=0A=
* @method initEvents=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.initEvents =3D function() {=0A=
	YAHOO.widget.Overlay.superclass.initEvents.call(this);=0A=
=0A=
    var EVENT_TYPES =3D YAHOO.widget.Overlay._EVENT_TYPES;=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 new =
YAHOO.util.CustomEvent(EVENT_TYPES.BEFORE_MOVE, this);=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 new YAHOO.util.CustomEvent(EVENT_TYPES.MOVE, this);=0A=
};=0A=
=0A=
/**=0A=
* Initializes the class's configurable properties which can be changed =
using the Overlay's Config object (cfg).=0A=
* @method initDefaultConfig=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.initDefaultConfig =3D function() {=0A=
	YAHOO.widget.Overlay.superclass.initDefaultConfig.call(this);=0A=
=0A=
=0A=
	// Add overlay config properties //=0A=
=0A=
    var DEFAULT_CONFIG =3D YAHOO.widget.Overlay._DEFAULT_CONFIG;=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(=0A=
	           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(=0A=
	           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(=0A=
	           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. The =
format is: [id or element, element corner, context corner]. For example, =
setting this property to ["img1", "tl", "bl"] would align the Overlay's =
top left corner to the context element's bottom left corner.=0A=
	* @config context=0A=
	* @type Array=0A=
	* @default null=0A=
	*/=0A=
	this.cfg.addProperty(=0A=
	           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 the viewport.=0A=
	* @config fixedcenter=0A=
	* @type Boolean=0A=
	* @default false=0A=
	*/=0A=
	this.cfg.addProperty(=0A=
               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(=0A=
	           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(=0A=
	           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(=0A=
	           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 out of =
the viewport.=0A=
	* @config constraintoviewport=0A=
	* @type Boolean=0A=
	* @default false=0A=
	*/=0A=
	this.cfg.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=
	* True if the Overlay should have an IFRAME shim (for correcting the =
select z-index bug in IE6 and below).=0A=
	* @config iframe=0A=
	* @type Boolean=0A=
	* @default true for IE6 and below, false for all others=0A=
	*/=0A=
	this.cfg.addProperty(=0A=
	           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=
/**=0A=
* Moves the Overlay to the specified position. This function is =
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=
YAHOO.widget.Overlay.prototype.moveTo =3D function(x, y) {=0A=
	this.cfg.setProperty("xy",[x,y]);=0A=
};=0A=
=0A=
/**=0A=
* Adds a special CSS class to the Overlay when Mac/Gecko is in use, to =
work around a Gecko bug where=0A=
* scrollbars cannot be hidden. See =
https://bugzilla.mozilla.org/show_bug.cgi?id=3D187435=0A=
* @method hideMacGeckoScrollbars=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.hideMacGeckoScrollbars =3D function() {=0A=
	YAHOO.util.Dom.removeClass(this.element, "show-scrollbars");=0A=
	YAHOO.util.Dom.addClass(this.element, "hide-scrollbars");=0A=
};=0A=
=0A=
/**=0A=
* Removes a special CSS class from the Overlay when Mac/Gecko is in use, =
to work around a Gecko bug where=0A=
* scrollbars cannot be hidden. See =
https://bugzilla.mozilla.org/show_bug.cgi?id=3D187435=0A=
* @method showMacGeckoScrollbars=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.showMacGeckoScrollbars =3D function() {=0A=
	YAHOO.util.Dom.removeClass(this.element, "hide-scrollbars");=0A=
	YAHOO.util.Dom.addClass(this.element, "show-scrollbars");=0A=
};=0A=
=0A=
// BEGIN BUILT-IN PROPERTY EVENT HANDLERS //=0A=
=0A=
/**=0A=
* The default event handler fired when the "visible" property is =
changed. This method is responsible for firing showEvent 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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configVisible =3D function(type, args, =
obj) {=0A=
	var visible =3D args[0];=0A=
	var currentVis =3D YAHOO.util.Dom.getStyle(this.element, "visibility");=0A=
=0A=
	if (currentVis =3D=3D "inherit") {=0A=
		var e =3D this.element.parentNode;=0A=
		while (e.nodeType !=3D 9 && e.nodeType !=3D 11) {=0A=
			currentVis =3D YAHOO.util.Dom.getStyle(e, "visibility");=0A=
			if (currentVis !=3D "inherit") { break; }=0A=
			e =3D e.parentNode;=0A=
		}=0A=
		if (currentVis =3D=3D "inherit") {=0A=
			currentVis =3D "visible";=0A=
		}=0A=
	}=0A=
=0A=
	var effect =3D this.cfg.getProperty("effect");=0A=
=0A=
	var effectInstances =3D [];=0A=
	if (effect) {=0A=
		if (effect instanceof Array) {=0A=
			for (var i=3D0;i<effect.length;i++) {=0A=
				var eff =3D effect[i];=0A=
				effectInstances[effectInstances.length] =3D eff.effect(this, =
eff.duration);=0A=
			}=0A=
		} else {=0A=
			effectInstances[effectInstances.length] =3D effect.effect(this, =
effect.duration);=0A=
		}=0A=
	}=0A=
=0A=
	var isMacGecko =3D (this.platform =3D=3D "mac" && this.browser =3D=3D =
"gecko");=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=
					for (var j=3D0;j<effectInstances.length;j++) {=0A=
						var ei =3D effectInstances[j];=0A=
						if (j =3D=3D=3D 0 && ! =
YAHOO.util.Config.alreadySubscribed(ei.animateInCompleteEvent,this.showEv=
ent.fire,this.showEvent)) {=0A=
							=
ei.animateInCompleteEvent.subscribe(this.showEvent.fire,this.showEvent,tr=
ue); // Delegate showEvent until end of animateInComplete=0A=
						}=0A=
						ei.animateIn();=0A=
					}=0A=
				}=0A=
			}=0A=
		} else { // Show=0A=
			if (currentVis !=3D "visible" || currentVis =3D=3D=3D "") {=0A=
				this.beforeShowEvent.fire();=0A=
				YAHOO.util.Dom.setStyle(this.element, "visibility", "visible");=0A=
				this.cfg.refireEvent("iframe");=0A=
				this.showEvent.fire();=0A=
			}=0A=
		}=0A=
=0A=
	} else { // Hide=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=
				for (var k=3D0;k<effectInstances.length;k++) {=0A=
					var h =3D effectInstances[k];=0A=
					if (k =3D=3D=3D 0 && ! =
YAHOO.util.Config.alreadySubscribed(h.animateOutCompleteEvent,this.hideEv=
ent.fire,this.hideEvent)) {=0A=
						=
h.animateOutCompleteEvent.subscribe(this.hideEvent.fire,this.hideEvent,tr=
ue); // Delegate hideEvent until end of animateOutComplete=0A=
					}=0A=
					h.animateOut();=0A=
				}=0A=
			} else if (currentVis =3D=3D=3D "") {=0A=
				YAHOO.util.Dom.setStyle(this.element, "visibility", "hidden");=0A=
			}=0A=
		} else { // Simple hide=0A=
			if (currentVis =3D=3D "visible" || currentVis =3D=3D=3D "") {=0A=
				this.beforeHideEvent.fire();=0A=
				YAHOO.util.Dom.setStyle(this.element, "visibility", "hidden");=0A=
				this.cfg.refireEvent("iframe");=0A=
				this.hideEvent.fire();=0A=
			}=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* Center event handler used for centering on scroll/resize, but only if =
the Overlay is visible=0A=
* @method doCenterOnDOMEvent=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.doCenterOnDOMEvent =3D function() {=0A=
	if (this.cfg.getProperty("visible")) {=0A=
		this.center();=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "fixedcenter" property 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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configFixedCenter =3D function(type, =
args, obj) {=0A=
	var val =3D args[0];=0A=
=0A=
	if (val) {=0A=
		this.center();=0A=
=0A=
		if (! YAHOO.util.Config.alreadySubscribed(this.beforeShowEvent, =
this.center, this)) {=0A=
			this.beforeShowEvent.subscribe(this.center, this, true);=0A=
		}=0A=
=0A=
		if (! =
YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEven=
t, this.doCenterOnDOMEvent, this)) {=0A=
			=
YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.doCenterOnDOMEvent,=
 this, true);=0A=
		}=0A=
=0A=
		if (! =
YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowScrollEven=
t, this.doCenterOnDOMEvent, this)) {=0A=
			YAHOO.widget.Overlay.windowScrollEvent.subscribe( =
this.doCenterOnDOMEvent, this, true);=0A=
		}=0A=
	} else {=0A=
		=
YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEven=
t, this);=0A=
		=
YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEven=
t, 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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configHeight =3D function(type, args, =
obj) {=0A=
	var height =3D args[0];=0A=
	var el =3D this.element;=0A=
	YAHOO.util.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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configWidth =3D function(type, args, obj) =
{=0A=
	var width =3D args[0];=0A=
	var el =3D this.element;=0A=
	YAHOO.util.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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configzIndex =3D function(type, args, =
obj) {=0A=
	var zIndex =3D args[0];=0A=
=0A=
	var el =3D this.element;=0A=
=0A=
	if (! zIndex) {=0A=
		zIndex =3D YAHOO.util.Dom.getStyle(el, "zIndex");=0A=
		if (! zIndex || isNaN(zIndex)) {=0A=
			zIndex =3D 0;=0A=
		}=0A=
	}=0A=
=0A=
	if (this.iframe) {=0A=
		if (zIndex <=3D 0) {=0A=
			zIndex =3D 1;=0A=
		}=0A=
		YAHOO.util.Dom.setStyle(this.iframe, "zIndex", (zIndex-1));=0A=
	}=0A=
=0A=
	YAHOO.util.Dom.setStyle(el, "zIndex", zIndex);=0A=
	this.cfg.setProperty("zIndex", zIndex, true);=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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configXY =3D function(type, args, obj) {=0A=
	var pos =3D args[0];=0A=
	var x =3D pos[0];=0A=
	var 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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configX =3D function(type, args, obj) {=0A=
	var x =3D args[0];=0A=
	var 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=
	YAHOO.util.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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configY =3D function(type, args, obj) {=0A=
	var x =3D this.cfg.getProperty("x");=0A=
	var 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=
	YAHOO.util.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=
YAHOO.widget.Overlay.prototype.showIframe =3D function() {=0A=
	if (this.iframe) {=0A=
		this.iframe.style.display =3D "block";=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* Hides the iframe shim, if it has been enabled=0A=
* @method hideIframe=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.hideIframe =3D function() {=0A=
	if (this.iframe) {=0A=
		this.iframe.style.display =3D "none";=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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configIframe =3D function(type, args, =
obj) {=0A=
=0A=
	var val =3D args[0];=0A=
=0A=
	if (val) { // IFRAME shim is enabled=0A=
=0A=
		if (! YAHOO.util.Config.alreadySubscribed(this.showEvent, =
this.showIframe, this)) {=0A=
			this.showEvent.subscribe(this.showIframe, this, true);=0A=
		}=0A=
		if (! YAHOO.util.Config.alreadySubscribed(this.hideEvent, =
this.hideIframe, this)) {=0A=
			this.hideEvent.subscribe(this.hideIframe, this, true);=0A=
		}=0A=
=0A=
		var x =3D this.cfg.getProperty("x");=0A=
		var y =3D this.cfg.getProperty("y");=0A=
=0A=
		if (! x || ! y) {=0A=
			this.syncPosition();=0A=
			x =3D this.cfg.getProperty("x");=0A=
			y =3D this.cfg.getProperty("y");=0A=
		}=0A=
=0A=
=0A=
		if (! isNaN(x) && ! isNaN(y)) {=0A=
			if (! this.iframe) {=0A=
				this.iframe =3D document.createElement("iframe");=0A=
				if (this.isSecure) {=0A=
					this.iframe.src =3D YAHOO.widget.Overlay.IFRAME_SRC;=0A=
				}=0A=
=0A=
				var parent =3D this.element.parentNode;=0A=
				if (parent) {=0A=
					parent.appendChild(this.iframe);=0A=
				} else {=0A=
					document.body.appendChild(this.iframe);=0A=
				}=0A=
=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "position", "absolute");=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "border", "none");=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "margin", "0");=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "padding", "0");=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "opacity", "0");=0A=
				if (this.cfg.getProperty("visible")) {=0A=
					this.showIframe();=0A=
				} else {=0A=
					this.hideIframe();=0A=
				}=0A=
			}=0A=
=0A=
			var iframeDisplay =3D YAHOO.util.Dom.getStyle(this.iframe, "display");=0A=
=0A=
			if (iframeDisplay =3D=3D "none") {=0A=
				this.iframe.style.display =3D "block";=0A=
			}=0A=
=0A=
			YAHOO.util.Dom.setXY(this.iframe, [x,y]);=0A=
=0A=
			var width =3D this.element.clientWidth;=0A=
			var height =3D this.element.clientHeight;=0A=
=0A=
			YAHOO.util.Dom.setStyle(this.iframe, "width", (width+2) + "px");=0A=
			YAHOO.util.Dom.setStyle(this.iframe, "height", (height+2) + "px");=0A=
=0A=
			if (iframeDisplay =3D=3D "none") {=0A=
				this.iframe.style.display =3D "none";=0A=
			}=0A=
		}=0A=
	} else {=0A=
		if (this.iframe) {=0A=
			this.iframe.style.display =3D "none";=0A=
		}=0A=
		this.showEvent.unsubscribe(this.showIframe, this);=0A=
		this.hideEvent.unsubscribe(this.hideIframe, this);=0A=
	}=0A=
};=0A=
=0A=
=0A=
/**=0A=
* The default event handler fired when the "constraintoviewport" =
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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configConstrainToViewport =3D =
function(type, args, obj) {=0A=
	var val =3D args[0];=0A=
	if (val) {=0A=
		if (! YAHOO.util.Config.alreadySubscribed(this.beforeMoveEvent, =
this.enforceConstraints, this)) {=0A=
			this.beforeMoveEvent.subscribe(this.enforceConstraints, this, true);=0A=
		}=0A=
	} else {=0A=
		this.beforeMoveEvent.unsubscribe(this.enforceConstraints, this);=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "context" property 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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configContext =3D function(type, args, =
obj) {=0A=
	var contextArgs =3D args[0];=0A=
=0A=
	if (contextArgs) {=0A=
		var contextEl =3D contextArgs[0];=0A=
		var elementMagnetCorner =3D contextArgs[1];=0A=
		var contextMagnetCorner =3D contextArgs[2];=0A=
=0A=
		if (contextEl) {=0A=
			if (typeof contextEl =3D=3D "string") {=0A=
				this.cfg.setProperty("context", =
[document.getElementById(contextEl),elementMagnetCorner,contextMagnetCorn=
er], true);=0A=
			}=0A=
=0A=
			if (elementMagnetCorner && contextMagnetCorner) {=0A=
				this.align(elementMagnetCorner, contextMagnetCorner);=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 =
points (represented by the constants TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, =
and BOTTOM_RIGHT.=0A=
* @method align=0A=
* @param {String} elementAlign		The String representing the corner of =
the Overlay that should be aligned to the context element=0A=
* @param {String} contextAlign		The corner of the context element that =
the elementAlign corner should stick to.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.align =3D function(elementAlign, =
contextAlign) {=0A=
	var contextArgs =3D this.cfg.getProperty("context");=0A=
	if (contextArgs) {=0A=
		var context =3D contextArgs[0];=0A=
=0A=
		var element =3D this.element;=0A=
		var 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=
			var contextRegion =3D YAHOO.util.Dom.getRegion(context);=0A=
=0A=
			var doAlign =3D function(v,h) {=0A=
				switch (elementAlign) {=0A=
					case YAHOO.widget.Overlay.TOP_LEFT:=0A=
						me.moveTo(h,v);=0A=
						break;=0A=
					case YAHOO.widget.Overlay.TOP_RIGHT:=0A=
						me.moveTo(h-element.offsetWidth,v);=0A=
						break;=0A=
					case YAHOO.widget.Overlay.BOTTOM_LEFT:=0A=
						me.moveTo(h,v-element.offsetHeight);=0A=
						break;=0A=
					case YAHOO.widget.Overlay.BOTTOM_RIGHT:=0A=
						me.moveTo(h-element.offsetWidth,v-element.offsetHeight);=0A=
						break;=0A=
				}=0A=
			};=0A=
=0A=
			switch (contextAlign) {=0A=
				case YAHOO.widget.Overlay.TOP_LEFT:=0A=
					doAlign(contextRegion.top, contextRegion.left);=0A=
					break;=0A=
				case YAHOO.widget.Overlay.TOP_RIGHT:=0A=
					doAlign(contextRegion.top, contextRegion.right);=0A=
					break;=0A=
				case YAHOO.widget.Overlay.BOTTOM_LEFT:=0A=
					doAlign(contextRegion.bottom, contextRegion.left);=0A=
					break;=0A=
				case YAHOO.widget.Overlay.BOTTOM_RIGHT:=0A=
					doAlign(contextRegion.bottom, contextRegion.right);=0A=
					break;=0A=
			}=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* The default event handler executed when the moveEvent is fired, if the =
"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 =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.enforceConstraints =3D function(type, =
args, obj) {=0A=
	var pos =3D args[0];=0A=
=0A=
	var x =3D pos[0];=0A=
	var y =3D pos[1];=0A=
=0A=
	var offsetHeight =3D this.element.offsetHeight;=0A=
	var offsetWidth =3D this.element.offsetWidth;=0A=
=0A=
	var viewPortWidth =3D YAHOO.util.Dom.getViewportWidth();=0A=
	var viewPortHeight =3D YAHOO.util.Dom.getViewportHeight();=0A=
=0A=
	var scrollX =3D document.documentElement.scrollLeft || =
document.body.scrollLeft;=0A=
	var scrollY =3D document.documentElement.scrollTop || =
document.body.scrollTop;=0A=
=0A=
	var topConstraint =3D scrollY + 10;=0A=
	var leftConstraint =3D scrollX + 10;=0A=
	var bottomConstraint =3D scrollY + viewPortHeight - offsetHeight - 10;=0A=
	var rightConstraint =3D scrollX + viewPortWidth - offsetWidth - 10;=0A=
=0A=
	if (x < leftConstraint) {=0A=
		x =3D leftConstraint;=0A=
	} else if (x > rightConstraint) {=0A=
		x =3D rightConstraint;=0A=
	}=0A=
=0A=
	if (y < topConstraint) {=0A=
		y =3D topConstraint;=0A=
	} else if (y > bottomConstraint) {=0A=
		y =3D bottomConstraint;=0A=
	}=0A=
=0A=
	this.cfg.setProperty("x", x, true);=0A=
	this.cfg.setProperty("y", y, true);=0A=
	this.cfg.setProperty("xy", [x,y], true);=0A=
};=0A=
=0A=
/**=0A=
* Centers the container in the viewport.=0A=
* @method center=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.center =3D function() {=0A=
	var scrollX =3D document.documentElement.scrollLeft || =
document.body.scrollLeft;=0A=
	var scrollY =3D document.documentElement.scrollTop || =
document.body.scrollTop;=0A=
=0A=
	var viewPortWidth =3D YAHOO.util.Dom.getClientWidth();=0A=
	var viewPortHeight =3D YAHOO.util.Dom.getClientHeight();=0A=
=0A=
	var elementWidth =3D this.element.offsetWidth;=0A=
	var elementHeight =3D this.element.offsetHeight;=0A=
=0A=
	var x =3D (viewPortWidth / 2) - (elementWidth / 2) + scrollX;=0A=
	var y =3D (viewPortHeight / 2) - (elementHeight / 2) + scrollY;=0A=
=0A=
	this.cfg.setProperty("xy", [parseInt(x, 10), parseInt(y, 10)]);=0A=
=0A=
	this.cfg.refireEvent("iframe");=0A=
};=0A=
=0A=
/**=0A=
* Synchronizes the Panel's "xy", "x", and "y" properties with the =
Panel's position in the DOM. This is primarily used to update position =
information during drag & drop.=0A=
* @method syncPosition=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.syncPosition =3D function() {=0A=
	var pos =3D YAHOO.util.Dom.getXY(this.element);=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=
* 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=
YAHOO.widget.Overlay.prototype.onDomResize =3D function(e, obj) {=0A=
	YAHOO.widget.Overlay.superclass.onDomResize.call(this, e, obj);=0A=
	var me =3D this;=0A=
	setTimeout(function() {=0A=
		me.syncPosition();=0A=
		me.cfg.refireEvent("iframe");=0A=
		me.cfg.refireEvent("context");=0A=
	}, 0);=0A=
};=0A=
=0A=
/**=0A=
* Removes the Overlay element from the DOM and sets all child elements =
to null.=0A=
* @method destroy=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.destroy =3D function() {=0A=
	if (this.iframe) {=0A=
		this.iframe.parentNode.removeChild(this.iframe);=0A=
	}=0A=
=0A=
	this.iframe =3D null;=0A=
=0A=
	=
YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEven=
t, this);=0A=
	=
YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEven=
t, this);=0A=
=0A=
	YAHOO.widget.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=
YAHOO.widget.Overlay.prototype.toString =3D function() {=0A=
	return "Overlay " + this.id;=0A=
};=0A=
=0A=
/**=0A=
* A singleton CustomEvent used for reacting to the DOM event for window =
scroll=0A=
* @event YAHOO.widget.Overlay.windowScrollEvent=0A=
*/=0A=
YAHOO.widget.Overlay.windowScrollEvent =3D new =
YAHOO.util.CustomEvent("windowScroll");=0A=
=0A=
/**=0A=
* A singleton CustomEvent used for reacting to the DOM event for window =
resize=0A=
* @event YAHOO.widget.Overlay.windowResizeEvent=0A=
*/=0A=
YAHOO.widget.Overlay.windowResizeEvent =3D new =
YAHOO.util.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=
YAHOO.widget.Overlay.windowScrollHandler =3D function(e) {=0A=
	if (YAHOO.widget.Module.prototype.browser =3D=3D "ie" || =
YAHOO.widget.Module.prototype.browser =3D=3D "ie7") {=0A=
		if (! window.scrollEnd) {=0A=
			window.scrollEnd =3D -1;=0A=
		}=0A=
		clearTimeout(window.scrollEnd);=0A=
		window.scrollEnd =3D setTimeout(function() { =
YAHOO.widget.Overlay.windowScrollEvent.fire(); }, 1);=0A=
	} else {=0A=
		YAHOO.widget.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=
YAHOO.widget.Overlay.windowResizeHandler =3D function(e) {=0A=
	if (YAHOO.widget.Module.prototype.browser =3D=3D "ie" || =
YAHOO.widget.Module.prototype.browser =3D=3D "ie7") {=0A=
		if (! window.resizeEnd) {=0A=
			window.resizeEnd =3D -1;=0A=
		}=0A=
		clearTimeout(window.resizeEnd);=0A=
		window.resizeEnd =3D setTimeout(function() { =
YAHOO.widget.Overlay.windowResizeEvent.fire(); }, 100);=0A=
	} else {=0A=
		YAHOO.widget.Overlay.windowResizeEvent.fire();=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* A boolean that indicated whether the window resize and scroll events =
have already been subscribed to.=0A=
* @property YAHOO.widget.Overlay._initialized=0A=
* @private=0A=
* @type Boolean=0A=
*/=0A=
YAHOO.widget.Overlay._initialized =3D null;=0A=
=0A=
if (YAHOO.widget.Overlay._initialized =3D=3D=3D null) {=0A=
	YAHOO.util.Event.addListener(window, "scroll", =
YAHOO.widget.Overlay.windowScrollHandler);=0A=
	YAHOO.util.Event.addListener(window, "resize", =
YAHOO.widget.Overlay.windowResizeHandler);=0A=
=0A=
	YAHOO.widget.Overlay._initialized =3D true;=0A=
}=0A=
/**=0A=
* OverlayManager is used for maintaining the focus status of multiple =
Overlays.* @namespace YAHOO.widget=0A=
* @namespace YAHOO.widget=0A=
* @class OverlayManager=0A=
* @constructor=0A=
* @param {Array}	overlays	Optional. A collection of Overlays to register =
with the manager.=0A=
* @param {Object}	userConfig		The object literal representing the user =
configuration of the OverlayManager=0A=
*/=0A=
YAHOO.widget.OverlayManager =3D function(userConfig) {=0A=
	this.init(userConfig);=0A=
};=0A=
=0A=
/**=0A=
* The CSS class representing a focused Overlay=0A=
* @property YAHOO.widget.OverlayManager.CSS_FOCUSED=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.OverlayManager.CSS_FOCUSED =3D "focused";=0A=
=0A=
YAHOO.widget.OverlayManager.prototype =3D {=0A=
	/**=0A=
	* The class's constructor function=0A=
	* @property contructor=0A=
	* @type Function=0A=
	*/=0A=
	constructor : YAHOO.widget.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=
		* The collection of registered Overlays in use by 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=
	* Initializes the OverlayManager=0A=
	* @method init=0A=
	* @param {YAHOO.widget.Overlay[]}	overlays	Optional. A collection of =
Overlays to register with the manager.=0A=
	* @param {Object}	userConfig		The object literal representing the user =
configuration of the OverlayManager=0A=
	*/=0A=
	init : function(userConfig) {=0A=
		/**=0A=
		* The OverlayManager's Config object used for monitoring configuration =
properties.=0A=
		* @property cfg=0A=
		* @type YAHOO.util.Config=0A=
		*/=0A=
		this.cfg =3D new YAHOO.util.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 {YAHOO.widget.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 {YAHOO.widget.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=
=0A=
			var o =3D this.find(overlay);=0A=
=0A=
			if (o) {=0A=
=0A=
                if (activeOverlay !=3D o) {=0A=
=0A=
                    if(activeOverlay) {=0A=
    =0A=
                        activeOverlay.blur();=0A=
    =0A=
                    }=0A=
    =0A=
                    activeOverlay =3D o;=0A=
    =0A=
                    YAHOO.util.Dom.addClass(activeOverlay.element, =
YAHOO.widget.OverlayManager.CSS_FOCUSED);=0A=
    =0A=
                    this.overlays.sort(this.compareZIndexDesc);=0A=
    =0A=
                    var topZIndex =3D =
YAHOO.util.Dom.getStyle(this.overlays[0].element, "zIndex");=0A=
    =0A=
                    if (! isNaN(topZIndex) && this.overlays[0] !=3D =
overlay) {=0A=
    =0A=
                        activeOverlay.cfg.setProperty("zIndex", =
(parseInt(topZIndex, 10) + 2));=0A=
    =0A=
                    }=0A=
    =0A=
                    this.overlays.sort(this.compareZIndexDesc);=0A=
    =0A=
                    o.focusEvent.fire();=0A=
                =0A=
                }=0A=
=0A=
			}=0A=
=0A=
		};=0A=
=0A=
		/**=0A=
		* Removes the specified Overlay from the manager=0A=
		* @method remove=0A=
		* @param {YAHOO.widget.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=
			if (o) {=0A=
				var originalZ =3D YAHOO.util.Dom.getStyle(o.element, "zIndex");=0A=
				o.cfg.setProperty("zIndex", -1000, true);=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 (o.element) {=0A=
=0A=
        			YAHOO.util.Event.removeListener(o.element, =
this.cfg.getProperty("focusevent"), this._onOverlayElementFocus);=0A=
=0A=
                }=0A=
=0A=
				o.cfg.setProperty("zIndex", originalZ, true);=0A=
				o.cfg.setProperty("manager", null);=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=
			for (var o=3D0;o<this.overlays.length;o++) {=0A=
                this.overlays[o].blur();=0A=
			}=0A=
		};=0A=
=0A=
=0A=
        this._onOverlayBlur =3D function(p_sType, p_aArgs) {=0A=
            activeOverlay =3D null;=0A=
        };=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 object =
passed =0A=
    * back by the event utility (YAHOO.util.Event).=0A=
    */=0A=
    _onOverlayElementFocus: function(p_oEvent) {=0A=
    =0A=
        var oTarget =3D YAHOO.util.Event.getTarget(p_oEvent),=0A=
            oClose =3D this.close;=0A=
=0A=
        =0A=
        if (=0A=
            oClose && =0A=
            (=0A=
                oTarget =3D=3D oClose ||  =0A=
                YAHOO.util.Dom.isAncestor(oClose, oTarget)=0A=
            )=0A=
        ) {=0A=
        =0A=
            this.blur();=0A=
        =0A=
        }=0A=
        else {=0A=
        =0A=
            this.focus();=0A=
        =0A=
        }=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 =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    * @param {YAHOO.widget.Overlay} p_oOverlay Object representing the =
menu that =0A=
    * fired the event.=0A=
    */=0A=
    _onOverlayDestroy: function(p_sType, p_aArgs, p_oOverlay) {=0A=
=0A=
        this.remove(p_oOverlay);=0A=
    =0A=
    },=0A=
=0A=
	/**=0A=
	* Registers an Overlay or an array of Overlays with the manager. Upon =
registration, the Overlay receives functions for focus and blur, along =
with CustomEvents for each.=0A=
	* @method register=0A=
	* @param {YAHOO.widget.Overlay}	overlay		An Overlay to register with =
the manager.=0A=
	* @param {YAHOO.widget.Overlay[]}	overlay		An array of Overlays to =
register with the manager.=0A=
	* @return	{Boolean}	True if any Overlays are registered.=0A=
	*/=0A=
	register : function(overlay) {=0A=
		if (overlay instanceof YAHOO.widget.Overlay) {=0A=
			overlay.cfg.addProperty("manager", { value:this } );=0A=
=0A=
			overlay.focusEvent =3D new YAHOO.util.CustomEvent("focus", overlay);=0A=
			overlay.blurEvent =3D new YAHOO.util.CustomEvent("blur", overlay);=0A=
=0A=
			var mgr=3Dthis;=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=
                    YAHOO.util.Dom.removeClass(this.element, =
YAHOO.widget.OverlayManager.CSS_FOCUSED);=0A=
                    this.blurEvent.fire();=0A=
				}=0A=
			};=0A=
=0A=
            overlay.blurEvent.subscribe(mgr._onOverlayBlur);=0A=
=0A=
            overlay.hideEvent.subscribe(overlay.blur);=0A=
            =0A=
            overlay.destroyEvent.subscribe(this._onOverlayDestroy, =
overlay, this);=0A=
=0A=
			YAHOO.util.Event.addListener(overlay.element, =
this.cfg.getProperty("focusevent"), this._onOverlayElementFocus, null, =
overlay);=0A=
=0A=
			var zIndex =3D YAHOO.util.Dom.getStyle(overlay.element, "zIndex");=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=
			return true;=0A=
		} else if (overlay instanceof Array) {=0A=
			var regcount =3D 0;=0A=
			for (var i=3D0;i<overlay.length;i++) {=0A=
				if (this.register(overlay[i])) {=0A=
					regcount++;=0A=
				}=0A=
			}=0A=
			if (regcount > 0) {=0A=
				return true;=0A=
			}=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Attempts to locate an Overlay by instance or ID.=0A=
	* @method find=0A=
	* @param {YAHOO.widget.Overlay}	overlay		An Overlay to locate within =
the manager=0A=
	* @param {String}	overlay		An Overlay id to locate within the manager=0A=
	* @return	{YAHOO.widget.Overlay}	The requested Overlay, if found, or =
null if it cannot be located.=0A=
	*/=0A=
	find : function(overlay) {=0A=
		if (overlay instanceof YAHOO.widget.Overlay) {=0A=
			for (var o=3D0;o<this.overlays.length;o++) {=0A=
				if (this.overlays[o] =3D=3D overlay) {=0A=
					return this.overlays[o];=0A=
				}=0A=
			}=0A=
		} else if (typeof overlay =3D=3D "string") {=0A=
			for (var p=3D0;p<this.overlays.length;p++) {=0A=
				if (this.overlays[p].id =3D=3D overlay) {=0A=
					return this.overlays[p];=0A=
				}=0A=
			}=0A=
		}=0A=
		return null;=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 =
fall in the stacking order.=0A=
	*/=0A=
	compareZIndexDesc : function(o1, o2) {=0A=
		var zIndex1 =3D o1.cfg.getProperty("zIndex");=0A=
		var zIndex2 =3D o2.cfg.getProperty("zIndex");=0A=
=0A=
		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=
		for (var o=3D0;o<this.overlays.length;o++) {=0A=
			this.overlays[o].show();=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Hides all Overlays in the manager.=0A=
	* @method hideAll=0A=
	*/=0A=
	hideAll : function() {=0A=
		for (var o=3D0;o<this.overlays.length;o++) {=0A=
			this.overlays[o].hide();=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=
* ContainerEffect encapsulates animation transitions that are executed =
when 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 =
should be associated with=0A=
* @param {Object}	attrIn		The object literal representing the animation =
arguments to be used for the animate-in transition. The arguments for =
this literal are: attributes(object, see YAHOO.util.Anim for =
description), duration(Number), and method(i.e. =
YAHOO.util.Easing.easeIn).=0A=
* @param {Object}	attrOut		The object literal representing the animation =
arguments to be used for the animate-out transition. The arguments for =
this literal are: attributes(object, see YAHOO.util.Anim for =
description), duration(Number), and method(i.e. =
YAHOO.util.Easing.easeIn).=0A=
* @param {HTMLElement}	targetElement	Optional. The target element that =
should be animated during the transition. Defaults to overlay.element.=0A=
* @param {class}	Optional. The animation class to instantiate. Defaults =
to YAHOO.util.Anim. Other options include YAHOO.util.Motion.=0A=
*/=0A=
YAHOO.widget.ContainerEffect =3D function(overlay, attrIn, attrOut, =
targetElement, animClass) {=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=
	* The animation attributes to use when transitioning into view=0A=
	* @property attrIn=0A=
	* @type Object=0A=
	*/=0A=
	this.attrIn =3D attrIn;=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=
	* The target element to be animated=0A=
	* @property targetElement=0A=
	* @type HTMLElement=0A=
	*/=0A=
	this.targetElement =3D targetElement || overlay.element;=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=
* Initializes the animation classes and events.=0A=
* @method init=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.init =3D function() {=0A=
	this.beforeAnimateInEvent =3D new =
YAHOO.util.CustomEvent("beforeAnimateIn", this);=0A=
	this.beforeAnimateOutEvent =3D new =
YAHOO.util.CustomEvent("beforeAnimateOut", this);=0A=
=0A=
	this.animateInCompleteEvent =3D new =
YAHOO.util.CustomEvent("animateInComplete", this);=0A=
	this.animateOutCompleteEvent =3D new =
YAHOO.util.CustomEvent("animateOutComplete", this);=0A=
=0A=
	this.animIn =3D new this.animClass(this.targetElement, =
this.attrIn.attributes, this.attrIn.duration, this.attrIn.method);=0A=
	this.animIn.onStart.subscribe(this.handleStartAnimateIn, this);=0A=
	this.animIn.onTween.subscribe(this.handleTweenAnimateIn, this);=0A=
	this.animIn.onComplete.subscribe(this.handleCompleteAnimateIn, this);=0A=
=0A=
	this.animOut =3D new this.animClass(this.targetElement, =
this.attrOut.attributes, this.attrOut.duration, this.attrOut.method);=0A=
	this.animOut.onStart.subscribe(this.handleStartAnimateOut, this);=0A=
	this.animOut.onTween.subscribe(this.handleTweenAnimateOut, this);=0A=
	this.animOut.onComplete.subscribe(this.handleCompleteAnimateOut, this);=0A=
};=0A=
=0A=
/**=0A=
* Triggers the in-animation.=0A=
* @method animateIn=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.animateIn =3D function() {=0A=
	this.beforeAnimateInEvent.fire();=0A=
	this.animIn.animate();=0A=
};=0A=
=0A=
/**=0A=
* Triggers the out-animation.=0A=
* @method animateOut=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.animateOut =3D 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=
YAHOO.widget.ContainerEffect.prototype.handleStartAnimateIn =3D =
function(type, args, obj) { };=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=
YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateIn =3D =
function(type, args, obj) { };=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=
YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateIn =3D =
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=
YAHOO.widget.ContainerEffect.prototype.handleStartAnimateOut =3D =
function(type, args, obj) { };=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=
YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateOut =3D =
function(type, args, obj) { };=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=
YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateOut =3D =
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=
YAHOO.widget.ContainerEffect.prototype.toString =3D function() {=0A=
	var output =3D "ContainerEffect";=0A=
	if (this.overlay) {=0A=
		output +=3D " [" + this.overlay.toString() + "]";=0A=
	}=0A=
	return output;=0A=
};=0A=
=0A=
/**=0A=
* A pre-configured ContainerEffect instance that can be used for fading =
an overlay in and out.=0A=
* @method FADE=0A=
* @static=0A=
* @param {Overlay}	overlay	The Overlay object to animate=0A=
* @param {Number}	dur	The duration of the animation=0A=
* @return {ContainerEffect}	The configured ContainerEffect object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.FADE =3D function(overlay, dur) {=0A=
	var fade =3D new YAHOO.widget.ContainerEffect(overlay, { =
attributes:{opacity: {from:0, to:1}}, duration:dur, =
method:YAHOO.util.Easing.easeIn }, { attributes:{opacity: {to:0}}, =
duration:dur, method:YAHOO.util.Easing.easeOut}, overlay.element );=0A=
=0A=
	fade.handleStartAnimateIn =3D function(type,args,obj) {=0A=
		YAHOO.util.Dom.addClass(obj.overlay.element, "hide-select");=0A=
=0A=
		if (! obj.overlay.underlay) {=0A=
			obj.overlay.cfg.refireEvent("underlay");=0A=
		}=0A=
=0A=
		if (obj.overlay.underlay) {=0A=
			obj.initialUnderlayOpacity =3D =
YAHOO.util.Dom.getStyle(obj.overlay.underlay, "opacity");=0A=
			obj.overlay.underlay.style.filter =3D null;=0A=
		}=0A=
=0A=
		YAHOO.util.Dom.setStyle(obj.overlay.element, "visibility", "visible");=0A=
		YAHOO.util.Dom.setStyle(obj.overlay.element, "opacity", 0);=0A=
	};=0A=
=0A=
	fade.handleCompleteAnimateIn =3D function(type,args,obj) {=0A=
		YAHOO.util.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=
		if (obj.overlay.underlay) {=0A=
			YAHOO.util.Dom.setStyle(obj.overlay.underlay, "opacity", =
obj.initialUnderlayOpacity);=0A=
		}=0A=
=0A=
		obj.overlay.cfg.refireEvent("iframe");=0A=
		obj.animateInCompleteEvent.fire();=0A=
	};=0A=
=0A=
	fade.handleStartAnimateOut =3D function(type, args, obj) {=0A=
		YAHOO.util.Dom.addClass(obj.overlay.element, "hide-select");=0A=
=0A=
		if (obj.overlay.underlay) {=0A=
			obj.overlay.underlay.style.filter =3D null;=0A=
		}=0A=
	};=0A=
=0A=
	fade.handleCompleteAnimateOut =3D  function(type, args, obj) {=0A=
		YAHOO.util.Dom.removeClass(obj.overlay.element, "hide-select");=0A=
		if (obj.overlay.element.style.filter) {=0A=
			obj.overlay.element.style.filter =3D null;=0A=
		}=0A=
		YAHOO.util.Dom.setStyle(obj.overlay.element, "visibility", "hidden");=0A=
		YAHOO.util.Dom.setStyle(obj.overlay.element, "opacity", 1);=0A=
=0A=
		obj.overlay.cfg.refireEvent("iframe");=0A=
=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 overlay in and out.=0A=
* @method SLIDE=0A=
* @static=0A=
* @param {Overlay}	overlay	The Overlay object to animate=0A=
* @param {Number}	dur	The duration of the animation=0A=
* @return {ContainerEffect}	The configured ContainerEffect object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.SLIDE =3D function(overlay, dur) {=0A=
	var x =3D overlay.cfg.getProperty("x") || =
YAHOO.util.Dom.getX(overlay.element);=0A=
	var y =3D overlay.cfg.getProperty("y") || =
YAHOO.util.Dom.getY(overlay.element);=0A=
=0A=
	var clientWidth =3D YAHOO.util.Dom.getClientWidth();=0A=
	var offsetWidth =3D overlay.element.offsetWidth;=0A=
=0A=
	var slide =3D new YAHOO.widget.ContainerEffect(overlay, {=0A=
															attributes:{ points: { to:[x, y] } },=0A=
															duration:dur,=0A=
															method:YAHOO.util.Easing.easeIn=0A=
														},=0A=
														{=0A=
															attributes:{ points: { to:[(clientWidth+25), y] } },=0A=
															duration:dur,=0A=
															method:YAHOO.util.Easing.easeOut=0A=
														},=0A=
														overlay.element,=0A=
														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=
=0A=
		var pos =3D YAHOO.util.Dom.getXY(obj.overlay.element);=0A=
=0A=
		var currentX =3D pos[0];=0A=
		var currentY =3D pos[1];=0A=
=0A=
		if (YAHOO.util.Dom.getStyle(obj.overlay.element, "visibility") =3D=3D =
"hidden" && currentX < x) {=0A=
			YAHOO.util.Dom.setStyle(obj.overlay.element, "visibility", "visible");=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=
		var vw =3D YAHOO.util.Dom.getViewportWidth();=0A=
=0A=
		var pos =3D YAHOO.util.Dom.getXY(obj.overlay.element);=0A=
=0A=
		var yso =3D pos[1];=0A=
=0A=
		var currentTo =3D obj.animOut.attributes.points.to;=0A=
		obj.animOut.attributes.points.to =3D [(vw+25), yso];=0A=
	};=0A=
=0A=
	slide.handleTweenAnimateOut =3D function(type, args, obj) {=0A=
		var pos =3D YAHOO.util.Dom.getXY(obj.overlay.element);=0A=
=0A=
		var xto =3D pos[0];=0A=
		var 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=
		YAHOO.util.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=
YAHOO.register("container_core", YAHOO.widget.Module, {version: "2.2.2", =
build: "204"});=0A=

------=_NextPart_000_0000_01C9C676.4F71ABE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.diariocolatino.com/look/yui/menu/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.2.2=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>Screen-reader accessibility.</li>=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 for =0A=
* 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 menu items =0A=
=0A=
        m_oItems =3D {},=0A=
=0A=
=0A=
        // Collection of visible menus=0A=
    =0A=
        m_oVisibleMenus =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=
    // Private methods=0A=
=0A=
=0A=
    /**=0A=
    * @method addItem=0A=
    * @description Adds an item to the collection of known menu items.=0A=
    * @private=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object specifying the =
MenuItem =0A=
    * instance to be added.=0A=
    */=0A=
    function addItem(p_oItem) {=0A=
=0A=
        var sId =3D p_oItem.id;=0A=
=0A=
        if(p_oItem && m_oItems[sId] !=3D p_oItem) {=0A=
    =0A=
            m_oItems[sId] =3D p_oItem;=0A=
=0A=
            p_oItem.destroyEvent.subscribe(onItemDestroy);=0A=
=0A=
=0A=
        }=0A=
    =0A=
    }=0A=
=0A=
=0A=
    /**=0A=
    * @method removeItem=0A=
    * @description Removes an item from the collection of known menu =
items.=0A=
    * @private=0A=
    * @param {YAHOO.widget.MenuItem} p_oItem Object specifying the =
MenuItem =0A=
    * instance to be removed.=0A=
    */=0A=
    function removeItem(p_oItem) {=0A=
    =0A=
        var sId =3D p_oItem.id;=0A=
=0A=
        if(sId && m_oItems[sId]) {=0A=
=0A=
            delete m_oItems[sId];=0A=
=0A=
=0A=
        }=0A=
    =0A=
    }=0A=
=0A=
=0A=
    /**=0A=
    * @method getMenuRootElement=0A=
    * @description Finds the root DIV node of a menu or the root LI node =
of a =0A=
    * menu item.=0A=
    * @private=0A=
    * @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
    * one-html.html#ID-58190037">HTMLElement</a>} p_oElement Object =
specifying =0A=
    * 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=
                        && =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 =
DOM-based =0A=
    * events.  This listens for events against the document object.  If =
the =0A=
    * target of a given event is a member of a menu or menu item's DOM, =
the =0A=
    * instance's corresponding Custom Event is fired.=0A=
    * @private=0A=
    * @param {Event} p_oEvent Object representing the DOM event object =
passed =0A=
    * 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=
=0A=
        // See if the target of the event was a menu, or a menu item=0A=
=0A=
            oElement =3D getMenuRootElement(oTarget),=0A=
            oMenuItem,=0A=
            oMenu; =0A=
=0A=
=0A=
        if(oElement) {=0A=
=0A=
            var sTagName =3D oElement.tagName.toUpperCase();=0A=
    =0A=
            if(sTagName =3D=3D "LI") {=0A=
        =0A=
                var 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=
            var 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 (p_oEvent.type =3D=3D "keyup" || p_oEvent.type =3D=3D =
"mousedown") {=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_oMenus) {=0A=
    =0A=
                if(YAHOO.lang.hasOwnProperty(m_oMenus,i)) {=0A=
    =0A=
                    oMenu =3D m_oMenus[i];=0A=
    =0A=
                    if(=0A=
                        oMenu.cfg.getProperty("clicktohide") && =0A=
                        oMenu.cfg.getProperty("position") =3D=3D =
"dynamic"=0A=
                    ) {=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 =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    */=0A=
    function onMenuDestroy(p_sType, p_aArgs) {=0A=
=0A=
        if(m_oMenus[this.id]) {=0A=
=0A=
            delete m_oMenus[this.id];=0A=
=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 =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event 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 =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    */=0A=
    function onMenuBlur(p_sType, p_aArgs) {=0A=
=0A=
        m_oFocusedMenuItem =3D null;=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 =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    */=0A=
    function onItemDestroy(p_sType, p_aArgs) {=0A=
=0A=
        var sId =3D this.id;=0A=
=0A=
        if(sId && m_oItems[sId]) {=0A=
=0A=
            delete m_oItems[sId];=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    /**=0A=
    * @method onMenuVisibleConfigChange=0A=
    * @description Event handler for when the "visible" configuration =
property =0A=
    * of a Menu instance changes.=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=
    function onMenuVisibleConfigChange(p_sType, p_aArgs) {=0A=
=0A=
        var bVisible =3D p_aArgs[0];=0A=
        =0A=
        if(bVisible) {=0A=
=0A=
            m_oVisibleMenus[this.id] =3D this;=0A=
            =0A=
        =0A=
        }=0A=
        else if(m_oVisibleMenus[this.id]) {=0A=
        =0A=
            delete m_oVisibleMenus[this.id];=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 =
that =0A=
    * was fired.=0A=
    * @param {Array} p_aArgs Array of arguments sent when the event was =
fired.=0A=
    */=0A=
    function onItemAdded(p_sType, p_aArgs) {=0A=
    =0A=
        addItem(p_aArgs[0]);=0A=
    =0A=
    }=0A=
    =0A=
=0A=
    /**=0A=
    * @method onItemRemoved=0A=
    * @description "itemremoved" event handler for a Menu instance.=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=
    function onItemRemoved(p_sType, p_aArgs) {=0A=
=0A=
        removeItem(p_aArgs[0]);=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=
            if(p_oMenu && p_oMenu.id && !m_oMenus[p_oMenu.id]) {=0A=
    =0A=
                m_oMenus[p_oMenu.id] =3D p_oMenu;=0A=
            =0A=
        =0A=
                if(!m_bInitializedEventHandlers) {=0A=
        =0A=
                    var 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.destroyEvent.subscribe(onMenuDestroy);=0A=
                =0A=
                p_oMenu.cfg.subscribeToConfigEvent(=0A=
                    "visible", =0A=
                    onMenuVisibleConfigChange=0A=
                );=0A=
        =0A=
                p_oMenu.itemAddedEvent.subscribe(onItemAdded);=0A=
                p_oMenu.itemRemovedEvent.subscribe(onItemRemoved);=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=
            if(p_oMenu && m_oMenus[p_oMenu.id]) {=0A=
    =0A=
                delete m_oMenus[p_oMenu.id];=0A=
    =0A=
    =0A=
            }=0A=
    =0A=
        },=0A=
    =0A=
    =0A=
        /**=0A=
        * @method hideVisible=0A=
        * @description Hides all visible, dynamically positioned menus.=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.cfg.getProperty("position") =3D=3D =
"dynamic") {=0A=
    =0A=
                        oMenu.hide();=0A=
    =0A=
                    }=0A=
    =0A=
                }=0A=
    =0A=
            }        =0A=
        =0A=
        },=0A=
=0A=
=0A=
        /**=0A=
        * @method getMenus=0A=
        * @description Returns an array 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 menu to=0A=
        * be retrieved.=0A=
        * @return {YAHOO.widget.Menu}=0A=
        */=0A=
        getMenu: function(p_sId) {=0A=
    =0A=
            if(m_oMenus[p_sId]) {=0A=
            =0A=
                return m_oMenus[p_sId];=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 =
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=
/**=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=
(function() {=0A=
=0A=
var Dom =3D YAHOO.util.Dom,=0A=
    Event =3D YAHOO.util.Event,=0A=
    CustomEvent =3D YAHOO.util.CustomEvent,=0A=
    Lang =3D YAHOO.lang;=0A=
=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(=0A=
        this, =0A=
        p_oElement, =0A=
        p_oConfig=0A=
    );=0A=
=0A=
};=0A=
=0A=
=0A=
/**=0A=
* Constant representing the name of the Menu's events=0A=
* @property YAHOO.widget.Menu._EVENT_TYPES=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.Menu._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=
/**=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=
YAHOO.widget.Menu._checkPosition =3D function(p_sPosition) {=0A=
=0A=
    if(typeof p_sPosition =3D=3D "string") {=0A=
=0A=
        var sPosition =3D p_sPosition.toLowerCase();=0A=
=0A=
        return ("dynamic,static".indexOf(sPosition) !=3D -1);=0A=
=0A=
    }=0A=
=0A=
};=0A=
=0A=
=0A=
=0A=
/**=0A=
* Constant representing the Menu's configuration properties=0A=
* @property YAHOO.widget.Menu._DEFAULT_CONFIG=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.Menu._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: YAHOO.widget.Menu._checkPosition, =0A=
        supercedes: ["visible"] =0A=
    }, =0A=
=0A=
    "SUBMENU_ALIGNMENT": { =0A=
        key: "submenualignment", =0A=
        value: ["tl","tr"]=0A=
    },=0A=
=0A=
    "AUTO_SUBMENU_DISPLAY": { =0A=
        key: "autosubmenudisplay", =0A=
        value: true, =0A=
        validator: Lang.isBoolean =0A=
    }, =0A=
=0A=
    "SHOW_DELAY": { =0A=
        key: "showdelay", =0A=
        value: 250, =0A=
        validator: Lang.isNumber =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=
    }, =0A=
=0A=
    "CLICK_TO_HIDE": { =0A=
        key: "clicktohide", =0A=
        value: true, =0A=
        validator: Lang.isBoolean=0A=
    },=0A=
=0A=
    "CONTAINER": { =0A=
        key: "container"=0A=
    }, =0A=
=0A=
    "MAX_HEIGHT": { =0A=
        key: "maxheight", =0A=
        value: 0, =0A=
        validator: Lang.isNumber=0A=
    }, =0A=
=0A=
    "CLASS_NAME": { =0A=
        key: "classname", =0A=
        value: null, =0A=
        validator: Lang.isString=0A=
    }=0A=
=0A=
};=0A=
=0A=
=0A=
YAHOO.lang.extend(YAHOO.widget.Menu, YAHOO.widget.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=
// 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 _nMaxHeight=0A=
* @description The original value of the "maxheight" configuration =
property =0A=
* as set by the user.=0A=
* @default -1=0A=
* @private=0A=
* @type Number=0A=
*/=0A=
_nMaxHeight: -1,=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=
                YAHOO.widget.Menu.superclass.init.call(this, oElement);=0A=
=0A=
                this.beforeInitEvent.fire(YAHOO.widget.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=
                YAHOO.widget.Menu.superclass.init.call(this, =
Dom.generateId());=0A=
=0A=
                this.beforeInitEvent.fire(YAHOO.widget.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=
        YAHOO.widget.Menu.superclass.init.call(this, p_oElement);=0A=
=0A=
        this.beforeInitEvent.fire(YAHOO.widget.Menu);=0A=
=0A=
=0A=
=0A=
    }=0A=
=0A=
=0A=
    if(this.element) {=0A=
=0A=
        var oEl =3D this.element;=0A=
=0A=
        Dom.addClass(oEl, this.CSS_CLASS_NAME);=0A=
=0A=
=0A=
        // Subscribe to Custom Events=0A=
=0A=
        this.initEvent.subscribe(this._onInit, this, true);=0A=
        this.beforeRenderEvent.subscribe(this._onBeforeRender, this, =
true);=0A=
        this.renderEvent.subscribe(this._onRender);=0A=
        this.beforeShowEvent.subscribe(this._onBeforeShow, this, true);=0A=
        this.showEvent.subscribe(this._onShow, this, true);=0A=
        this.beforeHideEvent.subscribe(this._onBeforeHide, this, true);=0A=
        this.hideEvent.subscribe(this._onHide, this, true);=0A=
        this.mouseOverEvent.subscribe(this._onMouseOver, this, true);=0A=
        this.mouseOutEvent.subscribe(this._onMouseOut, this, true);=0A=
        this.clickEvent.subscribe(this._onClick, this, true);=0A=
        this.keyDownEvent.subscribe(this._onKeyDown, this, true);=0A=
        this.keyPressEvent.subscribe(this._onKeyPress, this, true);=0A=
=0A=
        YAHOO.widget.Module.textResizeEvent.subscribe(=0A=
            this._onTextResize, =0A=
            this, =0A=
            true=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=
        YAHOO.widget.MenuManager.addMenu(this);=0A=
        =0A=
=0A=
        this.initEvent.fire(YAHOO.widget.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 oNode;=0A=
=0A=
    if(this.srcElement.tagName.toUpperCase() =3D=3D "DIV") {=0A=
=0A=
        /*=0A=
            Populate the collection of item groups and item=0A=
            group titles=0A=
        */=0A=
=0A=
        oNode =3D this.body.firstChild;=0A=
=0A=
        var nGroup =3D 0,=0A=
            sGroupTitleTagName =3D =
this.GROUP_TITLE_TAG_NAME.toUpperCase();=0A=
=0A=
        do {=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=
    oNode =3D null;=0A=
=0A=
=0A=
    if(this.srcElement.tagName) {=0A=
=0A=
        var sSrcElementTagName =3D this.srcElement.tagName.toUpperCase();=0A=
=0A=
=0A=
        switch(sSrcElementTagName) {=0A=
    =0A=
            case "DIV":=0A=
    =0A=
                if(this._aListElements.length > 0) {=0A=
    =0A=
    =0A=
                    var i =3D this._aListElements.length - 1;=0A=
    =0A=
                    do {=0A=
    =0A=
                        oNode =3D this._aListElements[i].firstChild;=0A=
        =0A=
    =0A=
                        do {=0A=
        =0A=
                            if(=0A=
                                oNode && =0A=
                                oNode.tagName && =0A=
                                oNode.tagName.toUpperCase() =3D=3D "LI"=0A=
                            ) {=0A=
        =0A=
=0A=
                                this.addItem(=0A=
                                        new this.ITEM_TYPE(=0A=
                                            oNode, =0A=
                                            { parent: this }=0A=
                                        ), =0A=
                                        i=0A=
                                    );=0A=
    =0A=
                            }=0A=
                =0A=
                        }=0A=
                        while((oNode =3D oNode.nextSibling));=0A=
                =0A=
                    }=0A=
                    while(i--);=0A=
    =0A=
                }=0A=
    =0A=
            break;=0A=
    =0A=
            case "SELECT":=0A=
    =0A=
    =0A=
                oNode =3D this.srcElement.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=
* @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(=0A=
            oItem && =0A=
            !oItem.cfg.getProperty("disabled") && =0A=
            oItem.element.style.display !=3D "none"=0A=
        ) {=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=
=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=
        var nGroupIndex =3D typeof p_nGroupIndex =3D=3D "number" ? =
p_nGroupIndex : 0,=0A=
            aGroup =3D this._getItemGroup(nGroupIndex),=0A=
            oGroupItem;=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=
            var 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(=0A=
                    bAppend && =0A=
                    (=0A=
                        !oGroupItem.element.parentNode || =0A=
                        oGroupItem.element.parentNode.nodeType =3D=3D 11=0A=
                    )=0A=
                ) {=0A=
        =0A=
                    this._aListElements[nGroupIndex].appendChild(=0A=
                        oGroupItem.element=0A=
                    );=0A=
    =0A=
                }=0A=
                else {=0A=
  =0A=
                    function getNextItemSibling(p_aArray, p_nStartIndex) =
{=0A=
                =0A=
                            return (=0A=
                                    p_aArray[p_nStartIndex] || =0A=
                                    getNextItemSibling(=0A=
                                        p_aArray, =0A=
                                        (p_nStartIndex+1)=0A=
                                    )=0A=
                                );=0A=
=0A=
                    }=0A=
    =0A=
    =0A=
                    var oNextItemSibling =3D =0A=
                            getNextItemSibling(aGroup, (p_nItemIndex+1));=0A=
    =0A=
                    if(=0A=
                        oNextItemSibling && =0A=
                        (=0A=
                            !oGroupItem.element.parentNode || =0A=
                            oGroupItem.element.parentNode.nodeType =
=3D=3D 11=0A=
                        )=0A=
                    ) {=0A=
            =0A=
                        this._aListElements[nGroupIndex].insertBefore(=0A=
                                oGroupItem.element, =0A=
                                oNextItemSibling.element=0A=
                            );=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=
=0A=
                return oGroupItem;=0A=
    =0A=
            }=0A=
=0A=
        }=0A=
        else {=0A=
    =0A=
            var nItemIndex =3D aGroup.length;=0A=
    =0A=
            aGroup[nItemIndex] =3D oItem;=0A=
=0A=
            oGroupItem =3D aGroup[nItemIndex];=0A=
    =0A=
=0A=
            if(oGroupItem) {=0A=
    =0A=
                if(=0A=
                    !Dom.isAncestor(=0A=
                        this._aListElements[nGroupIndex], =0A=
                        oGroupItem.element=0A=
                    )=0A=
                ) {=0A=
    =0A=
                    this._aListElements[nGroupIndex].appendChild(=0A=
                        oGroupItem.element=0A=
                    );=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=
=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=
=0A=
    if(aGroup) {=0A=
=0A=
        var 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=
                var 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=
=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=
=0A=
    if(aGroup) {=0A=
=0A=
        var nItems =3D aGroup.length,=0A=
            nItemIndex =3D -1;=0A=
    =0A=
        if(nItems > 0) {=0A=
    =0A=
            var 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(=0A=
                            p_nGroupIndex, =0A=
                            nItemIndex=0A=
                        );=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=
=0A=
    if(nItems > 0) {=0A=
=0A=
        var i =3D nItems - 1,=0A=
            oItem,=0A=
            oLI;=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=
    if(!this._aItemGroups[p_nIndex]) {=0A=
=0A=
        this._aItemGroups[p_nIndex] =3D [];=0A=
=0A=
        var 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(=0A=
                this._onParentMenuConfigChange, =0A=
                oSubmenu, =0A=
                true=0A=
            );=0A=
=0A=
        this.renderEvent.subscribe(=0A=
                this._onParentMenuRender,=0A=
                oSubmenu, =0A=
                true=0A=
            );=0A=
=0A=
        oSubmenu.beforeShowEvent.subscribe(=0A=
                this._onSubmenuBeforeShow, =0A=
                oSubmenu, =0A=
                true=0A=
            );=0A=
=0A=
        oSubmenu.showEvent.subscribe(this._onSubmenuShow, null, p_oItem);=0A=
        oSubmenu.hideEvent.subscribe(this._onSubmenuHide, null, p_oItem);=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.cfg.configChangedEvent.subscribe(=0A=
        this._onMenuItemConfigChange,=0A=
        p_oItem,=0A=
        this=0A=
    );=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _getOffsetWidth=0A=
* @description Returns the offset width of the menu's =0A=
* <code>&#60;div&#62;</code> element.=0A=
* @private=0A=
*/=0A=
_getOffsetWidth: function() {=0A=
=0A=
    var oClone =3D this.element.cloneNode(true);=0A=
=0A=
    Dom.setStyle(oClone, "width", "");=0A=
=0A=
    document.body.appendChild(oClone);=0A=
=0A=
    var sWidth =3D oClone.offsetWidth;=0A=
=0A=
    document.body.removeChild(oClone);=0A=
=0A=
    return sWidth;=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _setWidth=0A=
* @description Sets the width of the menu's root =
<code>&#60;div&#62;</code> =0A=
* element to its offsetWidth.=0A=
* @private=0A=
*/=0A=
_setWidth: function() {=0A=
=0A=
    var sWidth;=0A=
=0A=
    if (this.element.parentNode.tagName.toUpperCase() =3D=3D "BODY") {=0A=
=0A=
        if (this.browser =3D=3D "opera") {=0A=
=0A=
            sWidth =3D this._getOffsetWidth();=0A=
        =0A=
        }=0A=
        else {=0A=
=0A=
            Dom.setStyle(this.element, "width", "auto");=0A=
            =0A=
            sWidth =3D this.element.offsetWidth;=0A=
        =0A=
        }=0A=
=0A=
    }=0A=
    else {=0A=
    =0A=
        sWidth =3D this._getOffsetWidth();=0A=
    =0A=
    }=0A=
=0A=
    this.cfg.setProperty("width", (sWidth + "px"));=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onWidthChange=0A=
* @description Change event handler for the the menu's "width" =
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=
_onWidthChange: function(p_sType, p_aArgs) {=0A=
=0A=
    var sWidth =3D p_aArgs[0];=0A=
    =0A=
    if (sWidth && !this._hasSetWidthHandlers) {=0A=
=0A=
        this.itemAddedEvent.subscribe(this._setWidth);=0A=
        this.itemRemovedEvent.subscribe(this._setWidth);=0A=
=0A=
        this._hasSetWidthHandlers =3D true;=0A=
=0A=
    }=0A=
    else if (this._hasSetWidthHandlers) {=0A=
=0A=
        this.itemAddedEvent.unsubscribe(this._setWidth);=0A=
        this.itemRemovedEvent.unsubscribe(this._setWidth);=0A=
=0A=
        this._hasSetWidthHandlers =3D false;=0A=
=0A=
    }=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.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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onMouseOver: function(p_sType, p_aArgs, p_oMenu) {=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=
=0A=
=0A=
    if(=0A=
        !this._bHandledMouseOverEvent && =0A=
        (oTarget =3D=3D this.element || Dom.isAncestor(this.element, =
oTarget))=0A=
    ) {=0A=
=0A=
        // Menu mouseover logic=0A=
=0A=
        this._nCurrentMouseX =3D 0;=0A=
=0A=
        Event.on(=0A=
                this.element, =0A=
                "mousemove", =0A=
                this._onMouseMove, =0A=
                this, =0A=
                true=0A=
            );=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=
            var 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(=0A=
        oItem && !oItem.handledMouseOverEvent && =0A=
        !oItem.cfg.getProperty("disabled") && =0A=
        (oTarget =3D=3D oItem.element || Dom.isAncestor(oItem.element, =
oTarget))=0A=
    ) {=0A=
=0A=
        // Menu Item mouseover logic=0A=
=0A=
        var 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=
        var oActiveItem =3D this.activeItem;=0A=
    =0A=
        if(oActiveItem) {=0A=
    =0A=
            oActiveItem.cfg.setProperty("selected", false);=0A=
    =0A=
        }=0A=
=0A=
=0A=
        var 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=
            var 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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onMouseOut: function(p_sType, p_aArgs, p_oMenu) {=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=
=0A=
=0A=
    if(oItem && !oItem.cfg.getProperty("disabled")) {=0A=
=0A=
        var oItemCfg =3D oItem.cfg,=0A=
            oSubmenu =3D oItemCfg.getProperty("submenu");=0A=
=0A=
=0A=
        if(=0A=
            oSubmenu && =0A=
            (=0A=
                oRelatedTarget =3D=3D oSubmenu.element ||=0A=
                Dom.isAncestor(oSubmenu.element, oRelatedTarget)=0A=
            )=0A=
        ) {=0A=
=0A=
            bMovingToSubmenu =3D true;=0A=
=0A=
        }=0A=
=0A=
=0A=
        if( =0A=
            !oItem.handledMouseOutEvent && =0A=
            (=0A=
                (=0A=
                    oRelatedTarget !=3D oItem.element &&  =0A=
                    !Dom.isAncestor(oItem.element, oRelatedTarget)=0A=
                ) || bMovingToSubmenu=0A=
            )=0A=
        ) {=0A=
=0A=
            // Menu Item mouseout logic=0A=
=0A=
            if(!bMovingToSubmenu) {=0A=
=0A=
                oItem.cfg.setProperty("selected", false);=0A=
=0A=
=0A=
                if(oSubmenu) {=0A=
=0A=
                    var nSubmenuHideDelay =3D =0A=
                            this.cfg.getProperty("submenuhidedelay"),=0A=
=0A=
                        nShowDelay =3D this.cfg.getProperty("showdelay");=0A=
=0A=
                    if(=0A=
                        !(this instanceof YAHOO.widget.MenuBar) && =0A=
                        nSubmenuHideDelay > 0 && =0A=
                        nShowDelay >=3D nSubmenuHideDelay=0A=
                    ) {=0A=
=0A=
                        this._execSubmenuHideDelay(=0A=
                                oSubmenu, =0A=
                                Event.getPageX(oEvent),=0A=
                                nSubmenuHideDelay=0A=
                            );=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(=0A=
        !this._bHandledMouseOutEvent && =0A=
        (=0A=
            (=0A=
                oRelatedTarget !=3D this.element &&  =0A=
                !Dom.isAncestor(this.element, oRelatedTarget)=0A=
            ) =0A=
            || bMovingToSubmenu=0A=
        )=0A=
    ) {=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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onClick: function(p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var oEvent =3D p_aArgs[0],=0A=
        oItem =3D p_aArgs[1],=0A=
        oTarget =3D Event.getTarget(oEvent);=0A=
=0A=
    if(oItem && !oItem.cfg.getProperty("disabled")) {=0A=
=0A=
        var oItemCfg =3D oItem.cfg,=0A=
            oSubmenu =3D oItemCfg.getProperty("submenu");=0A=
=0A=
=0A=
        /*=0A=
            ACCESSIBILITY FEATURE FOR SCREEN READERS: =0A=
            Expand/collapse the submenu when the user clicks =0A=
            on the submenu indicator image.=0A=
        */        =0A=
=0A=
        if(oTarget =3D=3D oItem.submenuIndicator && oSubmenu) {=0A=
=0A=
            if(oSubmenu.cfg.getProperty("visible")) {=0A=
=0A=
                oSubmenu.hide();=0A=
                =0A=
                oSubmenu.parent.focus();=0A=
    =0A=
            }=0A=
            else {=0A=
=0A=
                this.clearActiveItem();=0A=
=0A=
                oItem.cfg.setProperty("selected", true);=0A=
=0A=
                oSubmenu.show();=0A=
                =0A=
                oSubmenu.setInitialFocus();=0A=
    =0A=
            }=0A=
    =0A=
        }=0A=
        else {=0A=
=0A=
            var sURL =3D oItemCfg.getProperty("url"),=0A=
                bCurrentPageURL =3D (sURL.substr((sURL.length-1),1) =
=3D=3D "#"),=0A=
                sTarget =3D oItemCfg.getProperty("target"),=0A=
                bHasTarget =3D (sTarget && sTarget.length > 0);=0A=
=0A=
            /*=0A=
                Prevent the browser from following links =0A=
                equal to "#"=0A=
            */=0A=
            =0A=
            if(=0A=
                oTarget.tagName.toUpperCase() =3D=3D "A" && =0A=
                bCurrentPageURL && !bHasTarget=0A=
            ) {=0A=
=0A=
                Event.preventDefault(oEvent);=0A=
=0A=
                oItem.focus();=0A=
            =0A=
            }=0A=
=0A=
            if(=0A=
                oTarget.tagName.toUpperCase() !=3D "A" && =0A=
                !bCurrentPageURL && !bHasTarget=0A=
            ) {=0A=
                =0A=
                /*=0A=
                    Follow the URL of the item regardless of =0A=
                    whether or not the user clicked specifically=0A=
                    on the anchor element.=0A=
                */=0A=
    =0A=
                document.location =3D sURL;=0A=
        =0A=
            }=0A=
=0A=
=0A=
            /*=0A=
                If the item doesn't navigate to a URL and it doesn't have=0A=
                a submenu, then collapse the menu tree.=0A=
            */=0A=
=0A=
            if(bCurrentPageURL && !oSubmenu) {=0A=
    =0A=
                var oRoot =3D this.getRoot();=0A=
                =0A=
                if(oRoot.cfg.getProperty("position") =3D=3D "static") {=0A=
    =0A=
                    oRoot.clearActiveItem();=0A=
    =0A=
                }=0A=
                else if(oRoot.cfg.getProperty("clicktohide")) {=0A=
=0A=
                    oRoot.hide();=0A=
                =0A=
                }=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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onKeyDown: function(p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var oEvent =3D p_aArgs[0],=0A=
        oItem =3D p_aArgs[1],=0A=
        me =3D this,=0A=
        oSubmenu;=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=
        var oItemCfg =3D oItem.cfg,=0A=
            oParentItem =3D this.parent,=0A=
            oRoot,=0A=
            oNextItem;=0A=
=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=
                        var oBody =3D this.body;=0A=
=0A=
                        oBody.scrollTop =3D =0A=
=0A=
                            (=0A=
                                oNextItem.element.offsetTop + =0A=
                                oNextItem.element.offsetHeight=0A=
                            ) - oBody.offsetHeight;=0A=
=0A=
=0A=
                        var nScrollTop =3D oBody.scrollTop,=0A=
                            nScrollTarget =3D =0A=
                                oBody.scrollHeight - oBody.offsetHeight;=0A=
=0A=
                        if(nScrollTop =3D=3D=3D 0) {=0A=
=0A=
                            this._disableScrollHeader();=0A=
                            this._enableScrollFooter();=0A=
=0A=
                        }=0A=
                        else if(nScrollTop =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=
                    var 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=
* @param {YAHOO.widget.Menu} p_oMenu The Menu instance that fired the =
event.=0A=
*/=0A=
_onKeyPress: function(p_sType, p_aArgs, p_oMenu) {=0A=
    =0A=
    var oEvent =3D p_aArgs[0];=0A=
=0A=
=0A=
    if(oEvent.keyCode =3D=3D 40 || oEvent.keyCode =3D=3D 38) {=0A=
=0A=
        YAHOO.util.Event.preventDefault(oEvent);=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onTextResize=0A=
* @description "textresize" 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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onTextResize: function(p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    if(this.browser =3D=3D "gecko" && !this._handleResize) {=0A=
=0A=
        this._handleResize =3D true;=0A=
        return;=0A=
    =0A=
    }=0A=
=0A=
=0A=
    var oConfig =3D this.cfg;=0A=
=0A=
    if(oConfig.getProperty("position") =3D=3D "dynamic") {=0A=
=0A=
        oConfig.setProperty("width", (this._getOffsetWidth() + "px"));=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=
        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 + 1);=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 - 1);=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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onInit: function(p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    this.cfg.subscribeToConfigEvent("width", this._onWidthChange);=0A=
    this.cfg.subscribeToConfigEvent("visible", this._onVisibleChange);=0A=
=0A=
    if(=0A=
        (=0A=
            (this.parent && !this.lazyLoad) || =0A=
            (!this.parent && this.cfg.getProperty("position") =3D=3D =
"static") ||=0A=
            (=0A=
                !this.parent && =0A=
                !this.lazyLoad && =0A=
                this.cfg.getProperty("position") =3D=3D "dynamic"=0A=
            ) =0A=
        ) && =0A=
        this.getItemGroups().length =3D=3D=3D 0=0A=
    ) {=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(this.lazyLoad) {=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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onBeforeRender: function(p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var oConfig =3D this.cfg,=0A=
        oEl =3D this.element,=0A=
        nListElements =3D this._aListElements.length;=0A=
=0A=
=0A=
    if(nListElements > 0) {=0A=
=0A=
        var i =3D 0,=0A=
            bFirstList =3D true,=0A=
            oUL,=0A=
            oGroupTitle;=0A=
=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 (=0A=
        this.cfg.getProperty("position") =3D=3D "dynamic" && =0A=
        !this.cfg.getProperty("width")=0A=
    ) {=0A=
=0A=
        this._setWidth();=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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =0A=
* fired the event.=0A=
*/=0A=
_onBeforeShow: function(p_sType, p_aArgs, p_oMenu) {=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(=0A=
                this.parent && this.parent.parent && =0A=
                this.parent.parent.srcElement && =0A=
                this.parent.parent.srcElement.tagName.toUpperCase() =
=3D=3D "SELECT"=0A=
            ) {=0A=
=0A=
                var nOptions =3D this.itemData.length;=0A=
    =0A=
                for(var 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=
        var 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=
                this.cfg.refireEvent("xy");=0A=
=0A=
            }                =0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    if(this.cfg.getProperty("position") =3D=3D "dynamic") {=0A=
=0A=
        var nViewportHeight =3D Dom.getViewportHeight();=0A=
=0A=
=0A=
        if(this.parent && this.parent.parent instanceof =
YAHOO.widget.MenuBar) {=0A=
           =0A=
            var 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=
            var nMaxHeight =3D this.cfg.getProperty("maxheight");=0A=
=0A=
            /*=0A=
                Cache the original value for the "maxheight" =
configuration  =0A=
                property so that we can set it back when the menu is =
hidden.=0A=
            */=0A=
    =0A=
            this._nMaxHeight =3D nMaxHeight;=0A=
=0A=
            this.cfg.setProperty("maxheight", (nViewportHeight - 20));=0A=
        =0A=
        }=0A=
    =0A=
    =0A=
        if(this.cfg.getProperty("maxheight") > 0) {=0A=
    =0A=
            var oBody =3D this.body;=0A=
    =0A=
            if(oBody.scrollTop > 0) {=0A=
    =0A=
                oBody.scrollTop =3D 0;=0A=
    =0A=
            }=0A=
=0A=
            this._disableScrollHeader();=0A=
            this._enableScrollFooter();=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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =
fired =0A=
* the event.=0A=
*/=0A=
_onShow: function(p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var oParent =3D this.parent;=0A=
    =0A=
    if(oParent) {=0A=
=0A=
        var oParentMenu =3D oParent.parent,=0A=
            aParentAlignment =3D =
oParentMenu.cfg.getProperty("submenualignment"),=0A=
            aAlignment =3D this.cfg.getProperty("submenualignment");=0A=
=0A=
=0A=
        if(=0A=
            (aParentAlignment[0] !=3D aAlignment[0]) &&=0A=
            (aParentAlignment[1] !=3D aAlignment[1])=0A=
        ) {=0A=
=0A=
            this.cfg.setProperty(=0A=
                "submenualignment", =0A=
                [ aParentAlignment[0], aParentAlignment[1] ]=0A=
            );=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if(=0A=
            !oParentMenu.cfg.getProperty("autosubmenudisplay") && =0A=
            oParentMenu.cfg.getProperty("position") =3D=3D "static"=0A=
        ) {=0A=
=0A=
            oParentMenu.cfg.setProperty("autosubmenudisplay", true);=0A=
=0A=
=0A=
            function disableAutoSubmenuDisplay(p_oEvent) {=0A=
=0A=
                if(=0A=
                    p_oEvent.type =3D=3D "mousedown" || =0A=
                    (p_oEvent.type =3D=3D "keydown" && p_oEvent.keyCode =
=3D=3D 27)=0A=
                ) {=0A=
=0A=
                    /*  =0A=
                        Set the "autosubmenudisplay" to "false" if the =
user=0A=
                        clicks outside the menu bar.=0A=
                    */=0A=
=0A=
                    var oTarget =3D Event.getTarget(p_oEvent);=0A=
=0A=
                    if(=0A=
                        oTarget !=3D oParentMenu.element || =0A=
                        !YAHOO.util.Dom.isAncestor(oParentMenu.element, =
oTarget)=0A=
                    ) {=0A=
=0A=
                        oParentMenu.cfg.setProperty(=0A=
                            "autosubmenudisplay", =0A=
                            false=0A=
                        );=0A=
=0A=
                        Event.removeListener(=0A=
                                document, =0A=
                                "mousedown", =0A=
                                disableAutoSubmenuDisplay=0A=
                            );=0A=
=0A=
                        Event.removeListener(=0A=
                                document, =0A=
                                "keydown", =0A=
                                disableAutoSubmenuDisplay=0A=
                            );=0A=
=0A=
                    }=0A=
                =0A=
                }=0A=
=0A=
            }=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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =
fired =0A=
* the event.=0A=
*/=0A=
_onBeforeHide: function(p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    var oActiveItem =3D this.activeItem;=0A=
=0A=
    if(oActiveItem) {=0A=
=0A=
        var oConfig =3D oActiveItem.cfg;=0A=
=0A=
        oConfig.setProperty("selected", false);=0A=
=0A=
        var oSubmenu =3D oConfig.getProperty("submenu");=0A=
=0A=
        if(oSubmenu) {=0A=
=0A=
            oSubmenu.hide();=0A=
=0A=
        }=0A=
=0A=
    }=0A=
=0A=
    if (this =3D=3D this.getRoot()) {=0A=
=0A=
        this.blur();=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onHide=0A=
* @description "hide" 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=
* @param {YAHOO.widget.Menu} p_oMenu Object representing the menu that =
fired =0A=
* the event.=0A=
*/=0A=
_onHide: function(p_sType, p_aArgs, p_oMenu) {=0A=
=0A=
    if(this._nMaxHeight !=3D -1) {=0A=
=0A=
        this.cfg.setProperty("maxheight", this._nMaxHeight);=0A=
=0A=
        this._nMaxHeight =3D -1;=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=
=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 oParentMenu =3D p_oSubmenu.parent.parent,=0A=
=0A=
        oConfig =3D {=0A=
=0A=
            constraintoviewport: =0A=
                oParentMenu.cfg.getProperty("constraintoviewport"),=0A=
=0A=
            xy: [0,0],=0A=
                =0A=
            clicktohide: oParentMenu.cfg.getProperty("clicktohide"),=0A=
                =0A=
            effect: oParentMenu.cfg.getProperty("effect"),=0A=
=0A=
            showdelay: oParentMenu.cfg.getProperty("showdelay"),=0A=
            =0A=
            hidedelay: oParentMenu.cfg.getProperty("hidedelay"),=0A=
=0A=
            submenuhidedelay: =
oParentMenu.cfg.getProperty("submenuhidedelay"),=0A=
=0A=
            classname: oParentMenu.cfg.getProperty("classname")=0A=
=0A=
        };=0A=
=0A=
=0A=
    /*=0A=
        Only sync the "iframe" configuration property if the parent=0A=
        menu's "position" configuration is the same.=0A=
    */=0A=
=0A=
    if(=0A=
        this.cfg.getProperty("position") =3D=3D =0A=
        oParentMenu.cfg.getProperty("position")=0A=
    ) {=0A=
=0A=
        oConfig.iframe =3D oParentMenu.cfg.getProperty("iframe");=0A=
    =0A=
    }=0A=
               =0A=
=0A=
    p_oSubmenu.cfg.applyConfig(oConfig);=0A=
=0A=
=0A=
    if(!this.lazyLoad) {=0A=
=0A=
        var 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=
* @param {YAHOO.widget.Menu} p_oSubmenu Object representing the submenu =
that =0A=
* subscribed to the event.=0A=
*/=0A=
_onSubmenuBeforeShow: function(p_sType, p_aArgs, p_oSubmenu) {=0A=
    =0A=
    var oParent =3D this.parent,=0A=
        aAlignment =3D =
oParent.parent.cfg.getProperty("submenualignment");=0A=
=0A=
    this.cfg.setProperty(=0A=
        "context", =0A=
        [oParent.element, aAlignment[0], aAlignment[1]]=0A=
    );=0A=
=0A=
=0A=
    var nScrollTop =3D oParent.parent.body.scrollTop;=0A=
=0A=
    if(=0A=
        (this.browser =3D=3D "gecko" || this.browser =3D=3D "safari") =0A=
        && nScrollTop > 0=0A=
    ) {=0A=
=0A=
         this.cfg.setProperty("y", (this.cfg.getProperty("y") - =
nScrollTop));=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onSubmenuShow=0A=
* @description "show" 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=
_onSubmenuShow: function(p_sType, p_aArgs) {=0A=
    =0A=
    this.submenuIndicator.firstChild.nodeValue =3D =0A=
        this.EXPANDED_SUBMENU_INDICATOR_TEXT;=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onSubmenuHide=0A=
* @description "hide" 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=
_onSubmenuHide: function(p_sType, p_aArgs) {=0A=
    =0A=
    this.submenuIndicator.firstChild.nodeValue =3D=0A=
        this.COLLAPSED_SUBMENU_INDICATOR_TEXT;=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 _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=
=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=
            var oSubmenu =3D p_aArgs[0][1];=0A=
=0A=
            if(oSubmenu) {=0A=
=0A=
                this._configureSubmenu(p_oItem);=0A=
=0A=
            }=0A=
=0A=
        break;=0A=
=0A=
        case "text":=0A=
        case "helptext":=0A=
=0A=
            /*=0A=
                A change to an item's "text" or "helptext"=0A=
                configuration properties requires the width of the parent=0A=
                menu to be recalculated.=0A=
            */=0A=
=0A=
            if(this.element.style.width) {=0A=
    =0A=
                var sWidth =3D this._getOffsetWidth() + "px";=0A=
=0A=
                Dom.setStyle(this.element, "width", sWidth);=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=
    if(this.parent && !(this.parent.parent instanceof =
YAHOO.widget.MenuBar)) {=0A=
    =0A=
        var oConfig =3D this.cfg,=0A=
            pos =3D args[0],=0A=
            =0A=
            x =3D pos[0],=0A=
            y =3D pos[1],=0A=
            =0A=
            offsetHeight =3D this.element.offsetHeight,=0A=
            offsetWidth =3D this.element.offsetWidth,=0A=
            =0A=
            viewPortWidth =3D YAHOO.util.Dom.getViewportWidth(),=0A=
            viewPortHeight =3D YAHOO.util.Dom.getViewportHeight(),=0A=
            =0A=
            scrollX =3D Math.max(=0A=
                    document.documentElement.scrollLeft, =0A=
                    document.body.scrollLeft=0A=
                ),=0A=
            =0A=
            scrollY =3D Math.max(=0A=
                    document.documentElement.scrollTop, =0A=
                    document.body.scrollTop=0A=
                ),=0A=
            =0A=
            nPadding =3D (=0A=
                            this.parent && =0A=
                            this.parent.parent instanceof =
YAHOO.widget.MenuBar=0A=
                        ) ? 0 : 10,=0A=
            =0A=
            topConstraint =3D scrollY + nPadding,=0A=
            leftConstraint =3D scrollX + nPadding,=0A=
            bottomConstraint =3D =0A=
                scrollY + viewPortHeight - offsetHeight - nPadding,=0A=
            rightConstraint =3D scrollX + viewPortWidth - offsetWidth - =
nPadding,=0A=
            =0A=
            aContext =3D oConfig.getProperty("context"),=0A=
            oContextElement =3D aContext ? aContext[0] : null;=0A=
    =0A=
    =0A=
        if (x < 10) {=0A=
    =0A=
            x =3D leftConstraint;=0A=
    =0A=
        } else if ((x + offsetWidth) > viewPortWidth) {=0A=
    =0A=
            if(=0A=
                oContextElement &&=0A=
                ((x - oContextElement.offsetWidth) > offsetWidth)=0A=
            ) {=0A=
    =0A=
                x =3D (x - (oContextElement.offsetWidth + offsetWidth));=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                x =3D rightConstraint;=0A=
    =0A=
            }=0A=
    =0A=
        }=0A=
    =0A=
        if (y < 10) {=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=
        oConfig.setProperty("x", x, true);=0A=
        oConfig.setProperty("y", y, true);=0A=
        oConfig.setProperty("xy", [x,y], true);=0A=
    =0A=
    }=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=
    if(this.cfg.getProperty("position") =3D=3D "dynamic") {=0A=
=0A=
        YAHOO.widget.Menu.superclass.configVisible.call(=0A=
            this, =0A=
            p_sType, =0A=
            p_aArgs, =0A=
            p_oMenu=0A=
        );=0A=
=0A=
    }=0A=
    else {=0A=
=0A=
        var bVisible =3D p_aArgs[0],=0A=
    	    sDisplay =3D Dom.getStyle(this.element, "display");=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 sCSSPosition =3D p_aArgs[0] =3D=3D "static" ? "static" : =
"absolute",=0A=
        oCfg =3D this.cfg;=0A=
=0A=
    Dom.setStyle(this.element, "position", sCSSPosition);=0A=
=0A=
=0A=
    if(sCSSPosition =3D=3D "static") {=0A=
=0A=
        /*=0A=
            Remove the iframe for statically positioned menus since it =
will =0A=
            intercept mouse events.=0A=
        */=0A=
=0A=
        oCfg.setProperty("iframe", false);=0A=
=0A=
=0A=
        // Statically positioned menus are visible by default=0A=
        =0A=
        Dom.setStyle(this.element, "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(this.element, "visibility", "hidden");=0A=
    =0A=
    }=0A=
=0A=
=0A=
    if(sCSSPosition =3D=3D "absolute") {=0A=
=0A=
        var 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=
        YAHOO.widget.Menu.superclass.configIframe.call(=0A=
            this, =0A=
            p_sType, =0A=
            p_aArgs, =0A=
            p_oMenu=0A=
        );=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, this);=0A=
            oMouseOverEvent.subscribe(this._cancelHideDelay, this, true);=0A=
            oKeyDownEvent.subscribe(this._cancelHideDelay, this, true);=0A=
=0A=
            this._bHideDelayEventHandlersAssigned =3D true;=0A=
        =0A=
        }=0A=
=0A=
    }=0A=
    else {=0A=
=0A=
        oMouseOutEvent.unsubscribe(this._execHideDelay, this);=0A=
        oMouseOverEvent.unsubscribe(this._cancelHideDelay, this);=0A=
        oKeyDownEvent.unsubscribe(this._cancelHideDelay, this);=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(=0A=
                "container", =0A=
                document.getElementById(oElement), =0A=
                true=0A=
            );=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=
        oBody =3D this.body;=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=
    Dom.setStyle(oBody, "height", "auto");=0A=
    Dom.setStyle(oBody, "overflow", "visible");    =0A=
=0A=
    var oHeader =3D this.header,=0A=
        oFooter =3D this.footer,=0A=
        fnMouseOver =3D this._onScrollTargetMouseOver,=0A=
        fnMouseOut =3D this._onScrollTargetMouseOut;=0A=
=0A=
=0A=
    if((nMaxHeight > 0) && (oBody.offsetHeight > nMaxHeight)) {=0A=
=0A=
        if(!this.cfg.getProperty("width")) {=0A=
=0A=
            this._setWidth();=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=
            this.element.insertBefore(oHeader, oBody);=0A=
            this.element.appendChild(oFooter);=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=
        }=0A=
=0A=
        var nHeight =3D =0A=
=0A=
                (=0A=
                    nMaxHeight - =0A=
                    (this.footer.offsetHeight + this.header.offsetHeight)=0A=
                );=0A=
=0A=
        Dom.setStyle(oBody, "height", (nHeight + "px"));=0A=
        Dom.setStyle(oBody, "overflow", "hidden");=0A=
=0A=
    }=0A=
    else if(oHeader && oFooter) {=0A=
=0A=
        Dom.setStyle(oBody, "height", "auto");=0A=
        Dom.setStyle(oBody, "overflow", "visible");=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=
        this.element.removeChild(oHeader);=0A=
        this.element.removeChild(oFooter);=0A=
    =0A=
        this.header =3D null;=0A=
        this.footer =3D null;=0A=
    =0A=
    }=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=
// Public methods=0A=
=0A=
=0A=
=0A=
/**=0A=
* @method initEvents=0A=
* @description Initializes the custom events for the menu.=0A=
*/=0A=
initEvents: function() {=0A=
=0A=
	YAHOO.widget.Menu.superclass.initEvents.call(this);=0A=
=0A=
    // Create custom events=0A=
=0A=
    var EVENT_TYPES =3D YAHOO.widget.Menu._EVENT_TYPES;=0A=
=0A=
    this.mouseOverEvent =3D new CustomEvent(EVENT_TYPES.MOUSE_OVER, =
this);=0A=
    this.mouseOutEvent =3D new CustomEvent(EVENT_TYPES.MOUSE_OUT, this);=0A=
    this.mouseDownEvent =3D new CustomEvent(EVENT_TYPES.MOUSE_DOWN, =
this);=0A=
    this.mouseUpEvent =3D new CustomEvent(EVENT_TYPES.MOUSE_UP, this);=0A=
    this.clickEvent =3D new CustomEvent(EVENT_TYPES.CLICK, this);=0A=
    this.keyPressEvent =3D new CustomEvent(EVENT_TYPES.KEY_PRESS, this);=0A=
    this.keyDownEvent =3D new CustomEvent(EVENT_TYPES.KEY_DOWN, this);=0A=
    this.keyUpEvent =3D new CustomEvent(EVENT_TYPES.KEY_UP, this);=0A=
    this.focusEvent =3D new CustomEvent(EVENT_TYPES.FOCUS, this);=0A=
    this.blurEvent =3D new CustomEvent(EVENT_TYPES.BLUR, this);=0A=
    this.itemAddedEvent =3D new CustomEvent(EVENT_TYPES.ITEM_ADDED, =
this);=0A=
    this.itemRemovedEvent =3D new CustomEvent(EVENT_TYPES.ITEM_REMOVED, =
this);=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=
=0A=
    if(oItem) {=0A=
=0A=
        var 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=
    if(typeof p_sGroupTitle =3D=3D "string" && p_sGroupTitle.length > 0) =
{=0A=
=0A=
        var 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=
        var i =3D this._aGroupTitleElements.length - 1,=0A=
            nFirstIndex;=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(=0A=
                this._aGroupTitleElements[nFirstIndex], =0A=
                "first-of-type"=0A=
            );=0A=
=0A=
        }=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=
    if(Lang.isArray(p_aItems)) {=0A=
=0A=
        var nItems =3D p_aItems.length,=0A=
            aItems =3D [],=0A=
            oItem;=0A=
=0A=
=0A=
        for(var 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=
    if(typeof p_oObject !=3D "undefined") {=0A=
=0A=
        var oItem;=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 =3D aGroups.length;=0A=
=0A=
    return (=0A=
                (nGroups =3D=3D 1) ? aGroups[0] : =0A=
                    (Array.prototype.concat.apply([], aGroups))=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=
    if(typeof p_nItemIndex =3D=3D "number") {=0A=
=0A=
        var 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 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=
=0A=
=0A=
    if(nItems > 0) {=0A=
=0A=
        var i =3D nItems - 1,=0A=
            oItem,=0A=
            oSubmenu;=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, =0A=
                                oSubmenu=0A=
                            );=0A=
=0A=
                    this.renderEvent.unsubscribe(=0A=
                                        this._onParentMenuRender, =0A=
                                        oSubmenu=0A=
                                    );=0A=
=0A=
                }=0A=
=0A=
                oItem.destroy();=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=
=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 DOM event listeners=0A=
=0A=
    Event.purgeElement(this.element);=0A=
=0A=
=0A=
    // Remove Custom Event 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.itemAddedEvent.unsubscribeAll();=0A=
    this.itemRemovedEvent.unsubscribeAll();=0A=
    this.cfg.unsubscribeFromConfigEvent("width", this._onWidthChange);=0A=
    this.cfg.unsubscribeFromConfigEvent("visible", =
this._onVisibleChange);=0A=
=0A=
    if (this._hasSetWidthHandlers) {=0A=
=0A=
        this.itemAddedEvent.unsubscribe(this._setWidth);=0A=
        this.itemRemovedEvent.unsubscribe(this._setWidth);=0A=
=0A=
        this._hasSetWidthHandlers =3D false;=0A=
=0A=
    }=0A=
=0A=
    YAHOO.widget.Module.textResizeEvent.unsubscribe(this._onTextResize, =
this);=0A=
=0A=
=0A=
    // Remove all items=0A=
=0A=
    this.clearContent();=0A=
=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=
    YAHOO.widget.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=
=0A=
    if(oActiveItem) {=0A=
=0A=
        var oConfig =3D oActiveItem.cfg;=0A=
=0A=
        if(p_bBlur) {=0A=
=0A=
            oActiveItem.blur();=0A=
        =0A=
        }=0A=
=0A=
        oConfig.setProperty("selected", false);=0A=
=0A=
        var 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=
    if (this.hasFocus()) {=0A=
    =0A=
        var oItem =3D YAHOO.widget.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 (YAHOO.widget.MenuManager.getFocusedMenu() =3D=3D =
this.getRoot());=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=
    YAHOO.widget.Menu.superclass.initDefaultConfig.call(this);=0A=
=0A=
    var oConfig =3D this.cfg,=0A=
        DEFAULT_CONFIG =3D YAHOO.widget.Menu._DEFAULT_CONFIG;=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.=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=
        }=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=
       } =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.=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=
       } =0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config hidedelay=0A=
    * @description Number indicating the time (in milliseconds) that =
should =0A=
    * expire before the menu is hidden.=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=
    * @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=
       } =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.=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=
        }=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=
       } =0A=
   );=0A=
=0A=
=0A=
    /**=0A=
    * @config maxheight=0A=
    * @description Defines the maximum height (in pixels) for a menu =
before the=0A=
    * contents of the body are scrolled.=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=
       } =0A=
    );=0A=
=0A=
=0A=
    /**=0A=
    * @config classname=0A=
    * @description CSS class to be applied to the menu's root =0A=
    * <code>&#60;div&#62;</code> element.  The specified class(es) are =0A=
    * appended in addition to the default class as specified by the =
menu's=0A=
    * 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=
        }=0A=
    );=0A=
=0A=
}=0A=
=0A=
}); // END YAHOO.lang.extend=0A=
=0A=
})();=0A=
=0A=
=0A=
=0A=
(function() {=0A=
=0A=
var Dom =3D YAHOO.util.Dom,=0A=
    Module =3D YAHOO.widget.Module,=0A=
    Menu =3D YAHOO.widget.Menu,=0A=
    CustomEvent =3D YAHOO.util.CustomEvent,=0A=
    Lang =3D YAHOO.lang;=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=
/**=0A=
* Constant representing the name of the MenuItem's events=0A=
* @property YAHOO.widget.MenuItem._EVENT_TYPES=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.MenuItem._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=
/**=0A=
* Constant representing the MenuItem's configuration properties=0A=
* @property YAHOO.widget.MenuItem._DEFAULT_CONFIG=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.MenuItem._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=
    },=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=
    }, =0A=
=0A=
    "STRONG_EMPHASIS": { =0A=
        key: "strongemphasis", =0A=
        value: false, =0A=
        validator: Lang.isBoolean, =0A=
        suppressEvent: true =0A=
    },=0A=
=0A=
    "CHECKED": { =0A=
        key: "checked", =0A=
        value: false, =0A=
        validator: Lang.isBoolean, =0A=
        suppressEvent: true, =0A=
        supercedes:["disabled"]=0A=
    }, =0A=
=0A=
    "DISABLED": { =0A=
        key: "disabled", =0A=
        value: false, =0A=
        validator: Lang.isBoolean, =0A=
        suppressEvent: true=0A=
    },=0A=
=0A=
    "SELECTED": { =0A=
        key: "selected", =0A=
        value: false, =0A=
        validator: Lang.isBoolean, =0A=
        suppressEvent: true=0A=
    },=0A=
=0A=
    "SUBMENU": { =0A=
        key: "submenu"=0A=
    },=0A=
=0A=
    "ONCLICK": { =0A=
        key: "onclick"=0A=
    },=0A=
=0A=
    "CLASS_NAME": { =0A=
        key: "classname", =0A=
        value: null, =0A=
        validator: Lang.isString=0A=
    }=0A=
=0A=
};=0A=
=0A=
=0A=
YAHOO.widget.MenuItem.prototype =3D {=0A=
=0A=
    // Constants=0A=
=0A=
=0A=
    /**=0A=
    * @property COLLAPSED_SUBMENU_INDICATOR_TEXT=0A=
    * @description String representing the text for the =
<code>&#60;em&#62;</code>=0A=
    * element used for the submenu arrow indicator.=0A=
    * @default "Submenu collapsed.  Click to expand submenu."=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    COLLAPSED_SUBMENU_INDICATOR_TEXT: =0A=
        "Submenu collapsed.  Click to expand submenu.",=0A=
=0A=
=0A=
    /**=0A=
    * @property EXPANDED_SUBMENU_INDICATOR_TEXT=0A=
    * @description String representing the text for the submenu arrow =
indicator =0A=
    * element (<code>&#60;em&#62;</code>) when the submenu is visible.=0A=
    * @default "Submenu expanded.  Click to collapse submenu."=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    EXPANDED_SUBMENU_INDICATOR_TEXT: =0A=
        "Submenu expanded.  Click to collapse submenu.",=0A=
=0A=
=0A=
    /**=0A=
    * @property DISABLED_SUBMENU_INDICATOR_TEXT=0A=
    * @description String representing the text for the submenu arrow =
indicator =0A=
    * element (<code>&#60;em&#62;</code>) when the menu item is disabled.=0A=
    * @default "Submenu collapsed.  (Item disabled.)."=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    DISABLED_SUBMENU_INDICATOR_TEXT: "Submenu collapsed.  (Item =
disabled.)",=0A=
=0A=
=0A=
    /**=0A=
    * @property CHECKED_TEXT=0A=
    * @description String representing the text to be used for the =
checked =0A=
    * indicator element (<code>&#60;em&#62;</code>).=0A=
    * @default "Checked."=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    CHECKED_TEXT: "Menu item checked.",=0A=
    =0A=
    =0A=
    /**=0A=
    * @property DISABLED_CHECKED_TEXT=0A=
    * @description String representing the text to be used for the =
checked =0A=
    * indicator element (<code>&#60;em&#62;</code>) when the menu item =0A=
    * is disabled.=0A=
    * @default "Checked. (Item disabled.)"=0A=
    * @final=0A=
    * @type String=0A=
    */=0A=
    DISABLED_CHECKED_TEXT: "Checked. (Item disabled.)",=0A=
=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 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 _oText=0A=
    * @description Object reference to the menu item's text node.=0A=
    * @default null=0A=
    * @private=0A=
    * @type TextNode=0A=
    */=0A=
    _oText: 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 _oCheckedIndicator=0A=
    * @description Object reference to the menu item's checkmark image.=0A=
    * @default <a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
    * level-one-html.html#ID-58190037">HTMLElement</a>=0A=
    * @private=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>=0A=
    */=0A=
    _oCheckedIndicator: 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: YAHOO.widget.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 submenuIndicator=0A=
    * @description Object reference to the <code>&#60;em&#62;</code> =
element =0A=
    * used to create the submenu indicator for 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-58190037">HTMLElement</a>=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>=0A=
    */=0A=
    submenuIndicator: null,=0A=
=0A=
=0A=
	/**=0A=
    * @property browser=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 oConfig =3D this.cfg;=0A=
=0A=
=0A=
        if(Lang.isString(p_oObject)) {=0A=
=0A=
            this._createRootNodeStructure();=0A=
=0A=
            oConfig.setProperty("text", p_oObject);=0A=
=0A=
        }=0A=
        else if(this._checkDOMNode(p_oObject)) {=0A=
=0A=
            switch(p_oObject.tagName.toUpperCase()) {=0A=
=0A=
                case "OPTION":=0A=
=0A=
                    this._createRootNodeStructure();=0A=
=0A=
                    oConfig.setProperty("text", p_oObject.text);=0A=
=0A=
                    this.srcElement =3D p_oObject;=0A=
=0A=
                break;=0A=
=0A=
                case "OPTGROUP":=0A=
=0A=
                    this._createRootNodeStructure();=0A=
=0A=
                    oConfig.setProperty("text", p_oObject.label);=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=
                    var oAnchor =3D this._getFirstElement(p_oObject, =
"A"),=0A=
                        sURL =3D "#",=0A=
                        sTarget,=0A=
                        sText;=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=
                        if(oAnchor.innerText) {=0A=
                =0A=
                            sText =3D oAnchor.innerText;=0A=
                =0A=
                        }=0A=
                        else {=0A=
                =0A=
                            var oRange =3D =
oAnchor.ownerDocument.createRange();=0A=
                =0A=
                            oRange.selectNodeContents(oAnchor);=0A=
                =0A=
                            sText =3D oRange.toString();             =0A=
                =0A=
                        }=0A=
=0A=
                    }=0A=
                    else {=0A=
=0A=
                        var oText =3D p_oObject.firstChild;=0A=
=0A=
                        sText =3D oText.nodeValue;=0A=
=0A=
                        oAnchor =3D document.createElement("a");=0A=
                        =0A=
                        oAnchor.setAttribute("href", sURL);=0A=
=0A=
                        p_oObject.replaceChild(oAnchor, oText);=0A=
                        =0A=
                        oAnchor.appendChild(oText);=0A=
=0A=
                    }=0A=
=0A=
=0A=
                    this.srcElement =3D p_oObject;=0A=
                    this.element =3D p_oObject;=0A=
                    this._oAnchor =3D oAnchor;=0A=
    =0A=
=0A=
                    // Check if emphasis has been applied to the MenuItem=0A=
=0A=
                    var oEmphasisNode =3D this._getFirstElement(oAnchor),=0A=
                        bEmphasis =3D false,=0A=
                        bStrongEmphasis =3D false;=0A=
=0A=
                    if(oEmphasisNode) {=0A=
=0A=
                        // Set a reference to the text node =0A=
=0A=
                        this._oText =3D oEmphasisNode.firstChild;=0A=
=0A=
                        switch(oEmphasisNode.tagName.toUpperCase()) {=0A=
=0A=
                            case "EM":=0A=
=0A=
                                bEmphasis =3D true;=0A=
=0A=
                            break;=0A=
=0A=
                            case "STRONG":=0A=
=0A=
                                bStrongEmphasis =3D true;=0A=
=0A=
                            break;=0A=
=0A=
                        }=0A=
=0A=
                    }=0A=
                    else {=0A=
=0A=
                        // Set a reference to the text node =0A=
=0A=
                        this._oText =3D oAnchor.firstChild;=0A=
=0A=
                    }=0A=
=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=
                    oConfig.setProperty("emphasis", bEmphasis, true);=0A=
                    oConfig.setProperty(=0A=
                        "strongemphasis", =0A=
                        bStrongEmphasis, =0A=
                        true=0A=
                    );=0A=
=0A=
                    this._initSubTree();=0A=
=0A=
                break;=0A=
=0A=
            }            =0A=
=0A=
        }=0A=
=0A=
=0A=
        if(this.element) {=0A=
=0A=
            var sId =3D 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=
=0A=
=0A=
            // Create custom events=0A=
=0A=
            var EVENT_TYPES =3D YAHOO.widget.MenuItem._EVENT_TYPES;=0A=
=0A=
            this.mouseOverEvent =3D new =
CustomEvent(EVENT_TYPES.MOUSE_OVER, this);=0A=
            this.mouseOutEvent =3D new =
CustomEvent(EVENT_TYPES.MOUSE_OUT, this);=0A=
            this.mouseDownEvent =3D new =
CustomEvent(EVENT_TYPES.MOUSE_DOWN, this);=0A=
            this.mouseUpEvent =3D new CustomEvent(EVENT_TYPES.MOUSE_UP, =
this);=0A=
            this.clickEvent =3D new CustomEvent(EVENT_TYPES.CLICK, this);=0A=
            this.keyPressEvent =3D new =
CustomEvent(EVENT_TYPES.KEY_PRESS, this);=0A=
            this.keyDownEvent =3D new CustomEvent(EVENT_TYPES.KEY_DOWN, =
this);=0A=
            this.keyUpEvent =3D new CustomEvent(EVENT_TYPES.KEY_UP, =
this);=0A=
            this.focusEvent =3D new CustomEvent(EVENT_TYPES.FOCUS, this);=0A=
            this.blurEvent =3D new CustomEvent(EVENT_TYPES.BLUR, this);=0A=
            this.destroyEvent =3D new CustomEvent(EVENT_TYPES.DESTROY, =
this);=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 _getFirstElement=0A=
    * @description Returns an HTML element's first HTML element node.=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=
    * reference specifying the element to be evaluated.=0A=
    * @param {String} p_sTagName Optional. String specifying the tagname =
of =0A=
    * the element to be retrieved.=0A=
    * @return {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
    * level-one-html.html#ID-58190037">HTMLElement</a>}=0A=
    */=0A=
    _getFirstElement: function(p_oElement, p_sTagName) {=0A=
    =0A=
        var oFirstChild =3D p_oElement.firstChild,=0A=
            oElement;=0A=
    =0A=
        if(oFirstChild) {=0A=
    =0A=
            if(oFirstChild.nodeType =3D=3D 1) {=0A=
    =0A=
                oElement =3D oFirstChild;=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                var oNextSibling =3D oFirstChild.nextSibling;=0A=
    =0A=
                if(oNextSibling && oNextSibling.nodeType =3D=3D 1) {=0A=
                =0A=
                    oElement =3D oNextSibling;=0A=
                =0A=
                }=0A=
    =0A=
            }=0A=
    =0A=
        }=0A=
=0A=
=0A=
        if(p_sTagName) {=0A=
=0A=
            return (oElement && oElement.tagName.toUpperCase() =3D=3D =
p_sTagName) ? =0A=
                oElement : false;=0A=
=0A=
        }=0A=
        =0A=
        return oElement;=0A=
=0A=
    },    =0A=
=0A=
=0A=
    /**=0A=
    * @method _checkDOMNode=0A=
    * @description Determines if an object is an HTML element.=0A=
    * @private=0A=
    * @param {Object} p_oObject Object to be evaluated.=0A=
    * @return {Boolean}=0A=
    */=0A=
    _checkDOMNode: function(p_oObject) {=0A=
=0A=
        return (p_oObject && p_oObject.tagName);=0A=
=0A=
    },=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 oTemplate =3D YAHOO.widget.MenuItem._MenuItemTemplate;=0A=
=0A=
        if(!oTemplate) {=0A=
=0A=
            oTemplate =3D document.createElement("li");=0A=
            oTemplate.innerHTML =3D "<a href=3D\"#\">s</a>";=0A=
=0A=
            YAHOO.widget.MenuItem._MenuItemTemplate =3D oTemplate;=0A=
=0A=
        }=0A=
=0A=
        this.element =3D oTemplate.cloneNode(true);=0A=
        this._oAnchor =3D this.element.firstChild;=0A=
        this._oText =3D this._oAnchor.firstChild;=0A=
=0A=
        this.element.appendChild(this._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=
=0A=
=0A=
        if(oSrcEl.childNodes.length > 0) {=0A=
=0A=
            if(=0A=
                this.parent.lazyLoad && =0A=
                this.parent.srcElement && =0A=
                this.parent.srcElement.tagName.toUpperCase() =3D=3D =
"SELECT"=0A=
            ) {=0A=
=0A=
                oConfig.setProperty(=0A=
                        "submenu", =0A=
                        { id: Dom.generateId(), itemdata: =
oSrcEl.childNodes }=0A=
                    );=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                var 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=
                var nOptions =3D aOptions.length;=0A=
    =0A=
                if(nOptions > 0) {=0A=
    =0A=
                    var oMenu =3D new =
this.SUBMENU_TYPE(Dom.generateId());=0A=
                    =0A=
                    oConfig.setProperty("submenu", oMenu);=0A=
    =0A=
                    for(var 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=
=0A=
=0A=
        if(this._oText) {=0A=
=0A=
            this._oText.nodeValue =3D sText;=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=
        var me =3D this,=0A=
            oHelpText =3D p_aArgs[0],=0A=
            oEl =3D this.element,=0A=
            oConfig =3D this.cfg,=0A=
            aNodes =3D [oEl, this._oAnchor],=0A=
            oSubmenuIndicator =3D this.submenuIndicator;=0A=
=0A=
=0A=
        function initHelpText() {=0A=
=0A=
            Dom.addClass(aNodes, "hashelptext");=0A=
=0A=
            if(oConfig.getProperty("disabled")) {=0A=
=0A=
                oConfig.refireEvent("disabled");=0A=
=0A=
            }=0A=
=0A=
            if(oConfig.getProperty("selected")) {=0A=
=0A=
                oConfig.refireEvent("selected");=0A=
=0A=
            }                =0A=
=0A=
        }=0A=
=0A=
=0A=
        function removeHelpText() {=0A=
=0A=
            Dom.removeClass(aNodes, "hashelptext");=0A=
=0A=
            oEl.removeChild(me._oHelpTextEM);=0A=
            me._oHelpTextEM =3D null;=0A=
=0A=
        }=0A=
=0A=
=0A=
        if(this._checkDOMNode(oHelpText)) {=0A=
=0A=
            oHelpText.className =3D "helptext";=0A=
=0A=
            if(this._oHelpTextEM) {=0A=
            =0A=
                this._oHelpTextEM.parentNode.replaceChild(=0A=
                    oHelpText, =0A=
                    this._oHelpTextEM=0A=
                );=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                this._oHelpTextEM =3D oHelpText;=0A=
=0A=
                oEl.insertBefore(this._oHelpTextEM, oSubmenuIndicator);=0A=
=0A=
            }=0A=
=0A=
            initHelpText();=0A=
=0A=
        }=0A=
        else if(Lang.isString(oHelpText)) {=0A=
=0A=
            if(oHelpText.length =3D=3D=3D 0) {=0A=
=0A=
                removeHelpText();=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                if(!this._oHelpTextEM) {=0A=
=0A=
                    this._oHelpTextEM =3D document.createElement("em");=0A=
                    this._oHelpTextEM.className =3D "helptext";=0A=
=0A=
                    oEl.insertBefore(this._oHelpTextEM, =
oSubmenuIndicator);=0A=
=0A=
                }=0A=
=0A=
                this._oHelpTextEM.innerHTML =3D oHelpText;=0A=
=0A=
                initHelpText();=0A=
=0A=
            }=0A=
=0A=
        }=0A=
        else if(!oHelpText && this._oHelpTextEM) {=0A=
=0A=
            removeHelpText();=0A=
=0A=
        }=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=
        this._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=
            oAnchor =3D this._oAnchor,=0A=
            oText =3D this._oText,=0A=
            oConfig =3D this.cfg,=0A=
            oEM;=0A=
=0A=
=0A=
        if(bEmphasis && oConfig.getProperty("strongemphasis")) {=0A=
=0A=
            oConfig.setProperty("strongemphasis", false);=0A=
=0A=
        }=0A=
=0A=
=0A=
        if(oAnchor) {=0A=
=0A=
            if(bEmphasis) {=0A=
=0A=
                oEM =3D document.createElement("em");=0A=
                oEM.appendChild(oText);=0A=
=0A=
                oAnchor.appendChild(oEM);=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                oEM =3D this._getFirstElement(oAnchor, "EM");=0A=
=0A=
                if(oEM) {=0A=
=0A=
                    oAnchor.removeChild(oEM);=0A=
                    oAnchor.appendChild(oText);=0A=
=0A=
                }=0A=
=0A=
            }=0A=
=0A=
        }=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=
            oAnchor =3D this._oAnchor,=0A=
            oText =3D this._oText,=0A=
            oConfig =3D this.cfg,=0A=
            oStrong;=0A=
=0A=
        if(bStrongEmphasis && oConfig.getProperty("emphasis")) {=0A=
=0A=
            oConfig.setProperty("emphasis", false);=0A=
=0A=
        }=0A=
=0A=
        if(oAnchor) {=0A=
=0A=
            if(bStrongEmphasis) {=0A=
=0A=
                oStrong =3D document.createElement("strong");=0A=
                oStrong.appendChild(oText);=0A=
=0A=
                oAnchor.appendChild(oStrong);=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                oStrong =3D this._getFirstElement(oAnchor, "STRONG");=0A=
=0A=
                if(oStrong) {=0A=
=0A=
                    oAnchor.removeChild(oStrong);=0A=
                    oAnchor.appendChild(oText);=0A=
=0A=
                }=0A=
=0A=
            }=0A=
=0A=
        }=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=
            oEl =3D this.element,=0A=
            oConfig =3D this.cfg,=0A=
            oEM;=0A=
=0A=
=0A=
        if(bChecked) {=0A=
=0A=
            var oTemplate =3D =
YAHOO.widget.MenuItem._CheckedIndicatorTemplate;=0A=
=0A=
            if(!oTemplate) {=0A=
=0A=
                oTemplate =3D document.createElement("em");=0A=
                oTemplate.innerHTML =3D this.CHECKED_TEXT;=0A=
                oTemplate.className =3D "checkedindicator";=0A=
=0A=
                YAHOO.widget.MenuItem._CheckedIndicatorTemplate =3D =
oTemplate;=0A=
=0A=
            }=0A=
=0A=
            oEM =3D oTemplate.cloneNode(true);=0A=
=0A=
            var oSubmenu =3D this.cfg.getProperty("submenu");=0A=
=0A=
            if(oSubmenu && oSubmenu.element) {=0A=
=0A=
                oEl.insertBefore(oEM, oSubmenu.element);=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                oEl.appendChild(oEM);=0A=
=0A=
            }=0A=
=0A=
=0A=
            Dom.addClass(oEl, "checked");=0A=
=0A=
            this._oCheckedIndicator =3D oEM;=0A=
=0A=
            if(oConfig.getProperty("disabled")) {=0A=
=0A=
                oConfig.refireEvent("disabled");=0A=
=0A=
            }=0A=
=0A=
            if(oConfig.getProperty("selected")) {=0A=
=0A=
                oConfig.refireEvent("selected");=0A=
=0A=
            }=0A=
        =0A=
        }=0A=
        else {=0A=
=0A=
            oEM =3D this._oCheckedIndicator;=0A=
=0A=
            Dom.removeClass(oEl, "checked");=0A=
=0A=
            if(oEM) {=0A=
=0A=
                oEl.removeChild(oEM);=0A=
=0A=
            }=0A=
=0A=
            this._oCheckedIndicator =3D null;=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=
            oAnchor =3D this._oAnchor,=0A=
            aNodes =3D [this.element, oAnchor],=0A=
            oHelpText =3D this._oHelpTextEM,=0A=
            oCheckedIndicator =3D this._oCheckedIndicator,=0A=
            oSubmenuIndicator =3D this.submenuIndicator,=0A=
            i =3D 1;=0A=
=0A=
=0A=
        if(oHelpText) {=0A=
=0A=
            i++;=0A=
            aNodes[i] =3D oHelpText;=0A=
=0A=
        }=0A=
=0A=
=0A=
        if(oCheckedIndicator) {=0A=
            =0A=
            oCheckedIndicator.firstChild.nodeValue =3D bDisabled ? =0A=
                this.DISABLED_CHECKED_TEXT : =0A=
                this.CHECKED_TEXT;=0A=
=0A=
            i++;=0A=
            aNodes[i] =3D oCheckedIndicator;=0A=
            =0A=
        }    =0A=
=0A=
=0A=
        if(oSubmenuIndicator) {=0A=
=0A=
            oSubmenuIndicator.firstChild.nodeValue =3D bDisabled ? =0A=
                this.DISABLED_SUBMENU_INDICATOR_TEXT : =0A=
                this.COLLAPSED_SUBMENU_INDICATOR_TEXT;=0A=
=0A=
            i++;=0A=
            aNodes[i] =3D oSubmenuIndicator;=0A=
        =0A=
        }=0A=
=0A=
=0A=
        if(bDisabled) {=0A=
=0A=
            if(oConfig.getProperty("selected")) {=0A=
=0A=
                oConfig.setProperty("selected", false);=0A=
=0A=
            }=0A=
=0A=
            oAnchor.removeAttribute("href");=0A=
=0A=
            Dom.addClass(aNodes, "disabled");=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            oAnchor.setAttribute("href", oConfig.getProperty("url"));=0A=
=0A=
            Dom.removeClass(aNodes, "disabled");=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=
        if(!this.cfg.getProperty("disabled")) {=0A=
=0A=
            var bSelected =3D p_aArgs[0],=0A=
                oHelpText =3D this._oHelpTextEM,=0A=
                oSubmenuIndicator =3D this.submenuIndicator,=0A=
                oCheckedIndicator =3D this._oCheckedIndicator,=0A=
                aNodes =3D [this.element, this._oAnchor],=0A=
                i =3D 1;=0A=
=0A=
=0A=
            if(oHelpText) {=0A=
    =0A=
                i++;=0A=
                aNodes[i] =3D oHelpText;=0A=
    =0A=
            }=0A=
            =0A=
=0A=
            if(oSubmenuIndicator) {=0A=
=0A=
                i++;=0A=
                aNodes[i] =3D oSubmenuIndicator;=0A=
=0A=
            }=0A=
=0A=
=0A=
            if(oCheckedIndicator) {=0A=
=0A=
                i++;=0A=
                aNodes[i] =3D oCheckedIndicator;=0A=
            =0A=
            }=0A=
=0A=
=0A=
            if(bSelected) {=0A=
    =0A=
                Dom.addClass(aNodes, "selected");=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                Dom.removeClass(aNodes, "selected");=0A=
    =0A=
            }=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 oEl =3D this.element,=0A=
            oSubmenu =3D p_aArgs[0],=0A=
            oSubmenuIndicator =3D this.submenuIndicator,=0A=
            oConfig =3D this.cfg,=0A=
            aNodes =3D [this.element, this._oAnchor],=0A=
            bLazyLoad =3D this.parent && this.parent.lazyLoad,=0A=
            oMenu;=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(=0A=
                typeof oSubmenu =3D=3D "object" && =0A=
                oSubmenu.id && =0A=
                !oSubmenu.nodeType=0A=
            ) {=0A=
=0A=
                var 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=
                this.cfg.setProperty("submenu", oMenu, true);=0A=
=0A=
            }=0A=
            else {=0A=
=0A=
                oMenu =3D new this.SUBMENU_TYPE(=0A=
                                oSubmenu,=0A=
                                { lazyload: bLazyLoad, parent: this }    =
            =0A=
                            );=0A=
=0A=
=0A=
                // Set the value of the property to the Menu instance=0A=
                =0A=
                this.cfg.setProperty("submenu", oMenu, true);=0A=
=0A=
            }=0A=
=0A=
=0A=
            if(oMenu) {=0A=
=0A=
                this._oSubmenu =3D oMenu;=0A=
=0A=
=0A=
                if(!oSubmenuIndicator) { =0A=
=0A=
                    var oTemplate =3D =0A=
                            =
YAHOO.widget.MenuItem._oSubmenuIndicatorTemplate;=0A=
=0A=
                    if(!oTemplate) {=0A=
                   =0A=
                        oTemplate =3D document.createElement("em");=0A=
                        oTemplate.innerHTML =3D  =0A=
                            this.COLLAPSED_SUBMENU_INDICATOR_TEXT;=0A=
                        oTemplate.className =3D "submenuindicator";=0A=
                        =0A=
                        YAHOO.widget.MenuItem._oSubmenuIndicatorTemplate =
=3D =0A=
                            oTemplate;=0A=
=0A=
                    }=0A=
=0A=
=0A=
                    oSubmenuIndicator =3D oTemplate.cloneNode(true);=0A=
=0A=
=0A=
                    if(oMenu.element.parentNode =3D=3D oEl) {=0A=
=0A=
                        if(this.browser =3D=3D "opera") {=0A=
=0A=
                            oEl.appendChild(oSubmenuIndicator);=0A=
                            =0A=
                            oMenu.renderEvent.subscribe(function() {=0A=
=0A=
                                =
oSubmenuIndicator.parentNode.insertBefore(=0A=
                                                            =
oSubmenuIndicator, =0A=
                                                            oMenu.element=0A=
                                                        );=0A=
                            =0A=
                            });=0A=
                =0A=
                        }=0A=
                        else {=0A=
=0A=
                            oEl.insertBefore(oSubmenuIndicator, =
oMenu.element);=0A=
                        =0A=
                        }=0A=
                =0A=
                    }=0A=
                    else {=0A=
=0A=
                        oEl.appendChild(oSubmenuIndicator);=0A=
                    =0A=
                    }=0A=
=0A=
                    this.submenuIndicator =3D oSubmenuIndicator;=0A=
=0A=
                }=0A=
=0A=
=0A=
                Dom.addClass(aNodes, "hassubmenu");=0A=
=0A=
=0A=
                if(oConfig.getProperty("disabled")) {=0A=
=0A=
                    oConfig.refireEvent("disabled");=0A=
=0A=
                }=0A=
=0A=
                if(oConfig.getProperty("selected")) {=0A=
=0A=
                    oConfig.refireEvent("selected");=0A=
=0A=
                }                =0A=
            =0A=
            }=0A=
=0A=
        }=0A=
        else {=0A=
=0A=
            Dom.removeClass(aNodes, "hassubmenu");=0A=
=0A=
            if(oSubmenuIndicator) {=0A=
=0A=
                oEl.removeChild(oSubmenuIndicator);=0A=
=0A=
            }=0A=
=0A=
            if(this._oSubmenu) {=0A=
=0A=
                this._oSubmenu.destroy();=0A=
=0A=
            }=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(=0A=
            this._oOnclickAttributeValue && =0A=
            (this._oOnclickAttributeValue !=3D oObject)=0A=
        ) {=0A=
=0A=
            this.clickEvent.unsubscribe(=0A=
                                this._oOnclickAttributeValue.fn, =0A=
                                this._oOnclickAttributeValue.obj=0A=
                            );=0A=
=0A=
            this._oOnclickAttributeValue =3D null;=0A=
=0A=
        }=0A=
=0A=
=0A=
        if(=0A=
            !this._oOnclickAttributeValue && =0A=
            typeof oObject =3D=3D "object" && =0A=
            typeof oObject.fn =3D=3D "function"=0A=
        ) {=0A=
=0A=
            this.clickEvent.subscribe(=0A=
                    oObject.fn, =0A=
                    (oObject.obj || this), =0A=
                    oObject.scope=0A=
                );=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=
            DEFAULT_CONFIG =3D YAHOO.widget.MenuItem._DEFAULT_CONFIG;=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 nenu item.=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=
            { handler: this.configHelpText }=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.  When building a menu from existing =
HTML the =0A=
        * value of this property will be interpreted from the menu's =
markup.=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=
            }=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.  When building a menu from =
existing =0A=
        * HTML the value of this property will be interpreted from the=0A=
        * menu's markup.=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=
            }=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=
            { handler: this.configSubmenu }=0A=
        );=0A=
=0A=
=0A=
        /**=0A=
        * @config onclick=0A=
        * @description Object literal representing the code to be =
executed when =0A=
        * the button 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=
            { handler: this.configOnClick }=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=
            }=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=
        if(this.parent instanceof Menu) {=0A=
=0A=
            var nGroupIndex =3D this.groupIndex;=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=
    =0A=
            var aItemGroups =3D this.parent.getItemGroups(),=0A=
                oNextItem;=0A=
    =0A=
    =0A=
            if(this.index < (aItemGroups[nGroupIndex].length - 1)) {=0A=
    =0A=
                oNextItem =3D getNextArrayItem(=0A=
                        aItemGroups[nGroupIndex], =0A=
                        (this.index+1)=0A=
                    );=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                var nNextGroupIndex;=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=
                var 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 (=0A=
                oNextItem.cfg.getProperty("disabled") || =0A=
                oNextItem.element.style.display =3D=3D "none"=0A=
            ) ? =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=
       if(this.parent instanceof Menu) {=0A=
=0A=
            var nGroupIndex =3D this.groupIndex;=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] ? =0A=
                    p_nStartIndex : =0A=
                    getFirstItemIndex(p_aArray, (p_nStartIndex+1));=0A=
    =0A=
            }=0A=
    =0A=
            var aItemGroups =3D this.parent.getItemGroups(),=0A=
                oPreviousItem;=0A=
    =0A=
            if(=0A=
                this.index > getFirstItemIndex(aItemGroups[nGroupIndex], =
0)=0A=
            ) {=0A=
    =0A=
                oPreviousItem =3D =0A=
                    getPreviousArrayItem(=0A=
                        aItemGroups[nGroupIndex], =0A=
                        (this.index-1)=0A=
                    );=0A=
    =0A=
            }=0A=
            else {=0A=
    =0A=
                var nPreviousGroupIndex;=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=
                var aPreviousGroup =3D =0A=
                        getPreviousArrayItem(aItemGroups, =
nPreviousGroupIndex);=0A=
    =0A=
                oPreviousItem =3D =0A=
                    getPreviousArrayItem(=0A=
                        aPreviousGroup, =0A=
                        (aPreviousGroup.length - 1)=0A=
                    );=0A=
    =0A=
            }=0A=
=0A=
            return (=0A=
                oPreviousItem.cfg.getProperty("disabled") || =0A=
                oPreviousItem.element.style.display =3D=3D "none"=0A=
            ) ? =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 (=0A=
                    (me.browser =3D=3D "ie" || me.browser =3D=3D "ie7") =
&& =0A=
                    !document.hasFocus()=0A=
                ) {=0A=
                =0A=
                    return;=0A=
                =0A=
                }=0A=
=0A=
                oAnchor.focus();=0A=
=0A=
            }=0A=
            catch(e) {=0A=
            =0A=
            }=0A=
=0A=
        }=0A=
=0A=
=0A=
        if(=0A=
            !this.cfg.getProperty("disabled") && =0A=
            oParent && =0A=
            oParent.cfg.getProperty("visible") && =0A=
            this.element.style.display !=3D "none"=0A=
        ) {=0A=
=0A=
            if(oActiveItem) {=0A=
=0A=
                oActiveItem.blur();=0A=
=0A=
            }=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=
            this.focusEvent.fire();=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(=0A=
            !this.cfg.getProperty("disabled") && =0A=
            oParent && =0A=
            Dom.getStyle(oParent.element, "visibility") =3D=3D "visible"=0A=
        ) {=0A=
=0A=
            this._oAnchor.blur();=0A=
=0A=
            this.blurEvent.fire();=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=
=0A=
        if(oEl) {=0A=
=0A=
=0A=
            // If the item has a submenu, destroy it first=0A=
=0A=
            var 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=
            var 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=
=0A=
        if(this.cfg && this.cfg.getProperty("text")) {=0A=
    =0A=
            sReturnVal +=3D (": " + this.cfg.getProperty("text"));=0A=
    =0A=
        }=0A=
=0A=
        return sReturnVal;=0A=
    =0A=
    }=0A=
=0A=
};=0A=
=0A=
})();=0A=
=0A=
=0A=
=0A=
/**=0A=
* Creates a list of options or commands which are made visible in =
response to =0A=
* an HTML element's "contextmenu" event ("mousedown" for Opera).=0A=
*=0A=
* @param {String} p_oElement String specifying the id attribute of the =0A=
* <code>&#60;div&#62;</code> element of the context 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 =
for the =0A=
* context menu.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-=0A=
* html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object =
specifying the =0A=
* <code>&#60;div&#62;</code> element of the context menu.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-=0A=
* html.html#ID-94282980">HTMLSelectElement</a>} p_oElement Object =
specifying =0A=
* the <code>&#60;select&#62;</code> element to be used as the data =
source for =0A=
* the context menu.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the context menu. See configuration class =
documentation =0A=
* for more details.=0A=
* @class ContextMenu=0A=
* @constructor=0A=
* @extends YAHOO.widget.Menu=0A=
* @namespace YAHOO.widget=0A=
*/=0A=
YAHOO.widget.ContextMenu =3D function(p_oElement, p_oConfig) {=0A=
=0A=
    YAHOO.widget.ContextMenu.superclass.constructor.call(=0A=
            this, =0A=
            p_oElement,=0A=
            p_oConfig=0A=
        );=0A=
=0A=
};=0A=
=0A=
=0A=
/**=0A=
* Constant representing the name of the ContextMenu's events=0A=
* @property YAHOO.widget.ContextMenu._EVENT_TYPES=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.ContextMenu._EVENT_TYPES =3D {=0A=
=0A=
    "TRIGGER_CONTEXT_MENU": "triggerContextMenu",=0A=
=0A=
    "CONTEXT_MENU": (=0A=
                        (YAHOO.widget.Module.prototype.browser =3D=3D =
"opera" ? =0A=
                            "mousedown" : "contextmenu")=0A=
                    ),=0A=
    "CLICK": "click"=0A=
=0A=
};=0A=
=0A=
=0A=
/**=0A=
* Constant representing the ContextMenu's configuration properties=0A=
* @property YAHOO.widget.ContextMenu._DEFAULT_CONFIG=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.ContextMenu._DEFAULT_CONFIG =3D {=0A=
=0A=
    "TRIGGER": { =0A=
        key: "trigger" =0A=
    }=0A=
=0A=
};=0A=
=0A=
=0A=
YAHOO.lang.extend(YAHOO.widget.ContextMenu, YAHOO.widget.Menu, {=0A=
=0A=
=0A=
=0A=
// Private properties=0A=
=0A=
=0A=
/**=0A=
* @property _oTrigger=0A=
* @description Object reference to the current value of the "trigger" =0A=
* configuration property.=0A=
* @default null=0A=
* @private=0A=
* @type String|<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/leve=0A=
* l-one-html.html#ID-58190037">HTMLElement</a>|Array=0A=
*/=0A=
_oTrigger: null,=0A=
=0A=
=0A=
/**=0A=
* @property _bCancelled=0A=
* @description Boolean indicating if the display of the context menu =
should =0A=
* be cancelled.=0A=
* @default false=0A=
* @private=0A=
* @type Boolean=0A=
*/=0A=
_bCancelled: false,=0A=
=0A=
=0A=
=0A=
// Public properties=0A=
=0A=
=0A=
/**=0A=
* @property contextEventTarget=0A=
* @description Object reference for the HTML element that was the target =
of the=0A=
* "contextmenu" DOM event ("mousedown" for Opera) that triggered the =
display of =0A=
* the context menu.=0A=
* @default null=0A=
* @type <a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-=0A=
* html.html#ID-58190037">HTMLElement</a>=0A=
*/=0A=
contextEventTarget: null,=0A=
=0A=
=0A=
=0A=
// Events=0A=
=0A=
=0A=
/**=0A=
* @event triggerContextMenuEvent=0A=
* @description Custom Event wrapper for the "contextmenu" DOM event =0A=
* ("mousedown" for Opera) fired by the element(s) that trigger the =
display of =0A=
* the context menu.=0A=
*/=0A=
triggerContextMenuEvent: null,=0A=
=0A=
=0A=
=0A=
/**=0A=
* @method init=0A=
* @description The ContextMenu class's initialization method. This =
method is =0A=
* automatically called by the constructor, and sets up all DOM =
references for =0A=
* pre-existing markup, and creates required markup if it is not already =
present.=0A=
* @param {String} p_oElement String specifying the id attribute of the =0A=
* <code>&#60;div&#62;</code> element of the context 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 =
for =0A=
* the context menu.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-=0A=
* html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object =
specifying the =0A=
* <code>&#60;div&#62;</code> element of the context menu.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-one-=0A=
* html.html#ID-94282980">HTMLSelectElement</a>} p_oElement Object =
specifying =0A=
* the <code>&#60;select&#62;</code> element to be used as the data =
source for =0A=
* the context menu.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the context menu. See configuration class =
documentation =0A=
* for more details.=0A=
*/=0A=
init: function(p_oElement, p_oConfig) {=0A=
=0A=
    if(!this.ITEM_TYPE) {=0A=
=0A=
        this.ITEM_TYPE =3D YAHOO.widget.ContextMenuItem;=0A=
=0A=
    }=0A=
=0A=
=0A=
    // Call the init of the superclass (YAHOO.widget.Menu)=0A=
=0A=
    YAHOO.widget.ContextMenu.superclass.init.call(this, p_oElement);=0A=
=0A=
=0A=
    this.beforeInitEvent.fire(YAHOO.widget.ContextMenu);=0A=
=0A=
=0A=
    if(p_oConfig) {=0A=
=0A=
        this.cfg.applyConfig(p_oConfig, true);=0A=
=0A=
    }=0A=
    =0A=
    =0A=
    this.initEvent.fire(YAHOO.widget.ContextMenu);=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method initEvents=0A=
* @description Initializes the custom events for the context menu.=0A=
*/=0A=
initEvents: function() {=0A=
=0A=
	YAHOO.widget.ContextMenu.superclass.initEvents.call(this);=0A=
=0A=
    // Create custom events=0A=
=0A=
    this.triggerContextMenuEvent =3D =0A=
=0A=
            new YAHOO.util.CustomEvent(=0A=
                    =
YAHOO.widget.ContextMenu._EVENT_TYPES.TRIGGER_CONTEXT_MENU, =0A=
                    this=0A=
                );=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method cancel=0A=
* @description Cancels the display of the context menu.=0A=
*/=0A=
cancel: function() {=0A=
=0A=
    this._bCancelled =3D true;=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Private methods=0A=
=0A=
=0A=
/**=0A=
* @method _removeEventHandlers=0A=
* @description Removes all of the DOM event handlers from the HTML =
element(s) =0A=
* whose "context menu" event ("click" for Opera) trigger the display of =0A=
* the context menu.=0A=
* @private=0A=
*/=0A=
_removeEventHandlers: function() {=0A=
=0A=
    var Event =3D YAHOO.util.Event,=0A=
        oTrigger =3D this._oTrigger;=0A=
=0A=
=0A=
    // Remove the event handlers from the trigger(s)=0A=
=0A=
    if (oTrigger) {=0A=
=0A=
        Event.removeListener(=0A=
            oTrigger, =0A=
            YAHOO.widget.ContextMenu._EVENT_TYPES.CONTEXT_MENU, =0A=
            this._onTriggerContextMenu=0A=
        );    =0A=
        =0A=
        if(this.browser =3D=3D "opera") {=0A=
        =0A=
            Event.removeListener(=0A=
                oTrigger, =0A=
                YAHOO.widget.ContextMenu._EVENT_TYPES.CLICK, =0A=
                this._onTriggerClick=0A=
            );=0A=
    =0A=
        }=0A=
=0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Private event handlers=0A=
=0A=
=0A=
/**=0A=
* @method _onTriggerClick=0A=
* @description "click" event handler for the HTML element(s) identified =
as the =0A=
* "trigger" for the context menu.  Used to cancel default behaviors in =
Opera.=0A=
* @private=0A=
* @param {Event} p_oEvent Object representing the DOM event object =
passed back =0A=
* by the event utility (YAHOO.util.Event).=0A=
* @param {YAHOO.widget.ContextMenu} p_oMenu Object representing the =
context =0A=
* menu that is handling the event.=0A=
*/=0A=
_onTriggerClick: function(p_oEvent, p_oMenu) {=0A=
=0A=
    if(p_oEvent.ctrlKey) {=0A=
    =0A=
        YAHOO.util.Event.stopEvent(p_oEvent);=0A=
=0A=
    }=0A=
    =0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onTriggerContextMenu=0A=
* @description "contextmenu" event handler ("mousedown" for Opera) for =
the HTML =0A=
* element(s) that trigger the display of the context menu.=0A=
* @private=0A=
* @param {Event} p_oEvent Object representing the DOM event object =
passed back =0A=
* by the event utility (YAHOO.util.Event).=0A=
* @param {YAHOO.widget.ContextMenu} p_oMenu Object representing the =
context =0A=
* menu that is handling the event.=0A=
*/=0A=
_onTriggerContextMenu: function(p_oEvent, p_oMenu) {=0A=
=0A=
    var Event =3D YAHOO.util.Event;=0A=
=0A=
    if(p_oEvent.type =3D=3D "mousedown" && !p_oEvent.ctrlKey) {=0A=
=0A=
        return;=0A=
=0A=
    }=0A=
=0A=
=0A=
    /*=0A=
        Prevent the browser's default context menu from appearing and =0A=
        stop the propagation of the "contextmenu" event so that =0A=
        other ContextMenu instances are not displayed.=0A=
    */=0A=
=0A=
    Event.stopEvent(p_oEvent);=0A=
=0A=
=0A=
    // Hide any other ContextMenu instances that might be visible=0A=
=0A=
    YAHOO.widget.MenuManager.hideVisible();=0A=
=0A=
=0A=
    this.contextEventTarget =3D Event.getTarget(p_oEvent);=0A=
=0A=
    this.triggerContextMenuEvent.fire(p_oEvent);=0A=
=0A=
=0A=
    if(!this._bCancelled) {=0A=
=0A=
        // Position and display the context menu=0A=
    =0A=
        this.cfg.setProperty("xy", Event.getXY(p_oEvent));=0A=
=0A=
        this.show();=0A=
=0A=
    }=0A=
=0A=
    this._bCancelled =3D false;=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Public methods=0A=
=0A=
=0A=
/**=0A=
* @method toString=0A=
* @description Returns a string representing the context menu.=0A=
* @return {String}=0A=
*/=0A=
toString: function() {=0A=
=0A=
    var sReturnVal =3D "ContextMenu",=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 initDefaultConfig=0A=
* @description Initializes the class's configurable properties which can =
be =0A=
* changed using the context menu's Config object ("cfg").=0A=
*/=0A=
initDefaultConfig: function() {=0A=
=0A=
    YAHOO.widget.ContextMenu.superclass.initDefaultConfig.call(this);=0A=
=0A=
    /**=0A=
    * @config trigger=0A=
    * @description The HTML element(s) whose "contextmenu" event =
("mousedown" =0A=
    * for Opera) trigger the display of the context menu.  Can be a =
string =0A=
    * representing the id attribute of the HTML element, an object =
reference =0A=
    * for the HTML element, or an array of strings or HTML element =
references.=0A=
    * @default null=0A=
    * @type String|<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/=0A=
    * level-one-html.html#ID-58190037">HTMLElement</a>|Array=0A=
    */=0A=
    this.cfg.addProperty(=0A=
        YAHOO.widget.ContextMenu._DEFAULT_CONFIG.TRIGGER.key, =0A=
        { handler: this.configTrigger }=0A=
    );=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method destroy=0A=
* @description Removes the context menu's <code>&#60;div&#62;</code> =
element =0A=
* (and accompanying child nodes) from the document.=0A=
*/=0A=
destroy: function() {=0A=
=0A=
    // Remove the DOM event handlers from the current trigger(s)=0A=
=0A=
    this._removeEventHandlers();=0A=
    =0A=
=0A=
    // Continue with the superclass implementation of this method=0A=
=0A=
    YAHOO.widget.ContextMenu.superclass.destroy.call(this);=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Public event handlers for configuration properties=0A=
=0A=
=0A=
/**=0A=
* @method configTrigger=0A=
* @description Event handler for when the value of the "trigger" =
configuration =0A=
* property 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.ContextMenu} p_oMenu Object representing the =
context =0A=
* menu that fired the event.=0A=
*/=0A=
configTrigger: function(p_sType, p_aArgs, p_oMenu) {=0A=
    =0A=
    var Event =3D YAHOO.util.Event,=0A=
        oTrigger =3D p_aArgs[0];=0A=
=0A=
    if(oTrigger) {=0A=
=0A=
        /*=0A=
            If there is a current "trigger" - remove the event handlers =0A=
            from that element(s) before assigning new ones=0A=
        */=0A=
=0A=
        if(this._oTrigger) {=0A=
        =0A=
            this._removeEventHandlers();=0A=
=0A=
        }=0A=
=0A=
        this._oTrigger =3D oTrigger;=0A=
=0A=
=0A=
        /*=0A=
            Listen for the "mousedown" event in Opera b/c it does not =0A=
            support the "contextmenu" event=0A=
        */ =0A=
  =0A=
        Event.on(=0A=
            oTrigger, =0A=
            YAHOO.widget.ContextMenu._EVENT_TYPES.CONTEXT_MENU, =0A=
            this._onTriggerContextMenu,=0A=
            this,=0A=
            true=0A=
        );=0A=
=0A=
=0A=
        /*=0A=
            Assign a "click" event handler to the trigger element(s) for=0A=
            Opera to prevent default browser behaviors.=0A=
        */=0A=
=0A=
        if(this.browser =3D=3D "opera") {=0A=
        =0A=
            Event.on(=0A=
                oTrigger, =0A=
                YAHOO.widget.ContextMenu._EVENT_TYPES.CLICK, =0A=
                this._onTriggerClick,=0A=
                this,=0A=
                true=0A=
            );=0A=
=0A=
        }=0A=
=0A=
    }=0A=
    else {=0A=
   =0A=
        this._removeEventHandlers();=0A=
    =0A=
    }=0A=
    =0A=
}=0A=
=0A=
}); // END YAHOO.lang.extend=0A=
=0A=
=0A=
=0A=
/**=0A=
* Creates an item for a context menu.=0A=
* =0A=
* @param {String} p_oObject String specifying the text of the context =
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 the =0A=
* <code>&#60;li&#62;</code> element of the context 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 context =0A=
* 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 =
specifying =0A=
* the <code>&#60;option&#62;</code> element of the context menu item.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the context menu item. See configuration class =0A=
* documentation for more details.=0A=
* @class ContextMenuItem=0A=
* @constructor=0A=
* @extends YAHOO.widget.MenuItem=0A=
*/=0A=
YAHOO.widget.ContextMenuItem =3D function(p_oObject, p_oConfig) {=0A=
=0A=
    YAHOO.widget.ContextMenuItem.superclass.constructor.call(=0A=
        this, =0A=
        p_oObject, =0A=
        p_oConfig=0A=
    );=0A=
=0A=
};=0A=
=0A=
YAHOO.lang.extend(YAHOO.widget.ContextMenuItem, YAHOO.widget.MenuItem, {=0A=
=0A=
=0A=
/**=0A=
* @method init=0A=
* @description The ContextMenuItem class's initialization method. This =
method =0A=
* is 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 context =
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 the =0A=
* <code>&#60;li&#62;</code> element of the context 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 context =0A=
* 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 =
specifying =0A=
* the <code>&#60;option&#62;</code> element of the context menu item.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the context menu item. See configuration class =0A=
* documentation for more details.=0A=
*/=0A=
init: function(p_oObject, p_oConfig) {=0A=
    =0A=
    if(!this.SUBMENU_TYPE) {=0A=
=0A=
        this.SUBMENU_TYPE =3D YAHOO.widget.ContextMenu;=0A=
=0A=
    }=0A=
=0A=
=0A=
    /* =0A=
        Call the init of the superclass (YAHOO.widget.MenuItem)=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=
    YAHOO.widget.ContextMenuItem.superclass.init.call(this, p_oObject);=0A=
=0A=
    var oConfig =3D this.cfg;=0A=
=0A=
    if(p_oConfig) {=0A=
=0A=
        oConfig.applyConfig(p_oConfig, true);=0A=
=0A=
    }=0A=
=0A=
    oConfig.fireQueue();=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Public methods=0A=
=0A=
=0A=
/**=0A=
* @method toString=0A=
* @description Returns a string representing the context menu item.=0A=
* @return {String}=0A=
*/=0A=
toString: function() {=0A=
=0A=
    var sReturnVal =3D "ContextMenuItem";=0A=
=0A=
    if(this.cfg && this.cfg.getProperty("text")) {=0A=
=0A=
        sReturnVal +=3D (": " + this.cfg.getProperty("text"));=0A=
=0A=
    }=0A=
=0A=
    return sReturnVal;=0A=
=0A=
}=0A=
    =0A=
}); // END YAHOO.lang.extend=0A=
=0A=
=0A=
=0A=
/**=0A=
* Horizontal collection of items, each of which can contain a submenu.=0A=
* =0A=
* @param {String} p_oElement String specifying the id attribute of the =0A=
* <code>&#60;div&#62;</code> element of the menu bar.=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 =
for the =0A=
* menu bar.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
* one-html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object =
specifying =0A=
* the <code>&#60;div&#62;</code> element of the menu bar.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
* one-html.html#ID-94282980">HTMLSelectElement</a>} p_oElement Object =0A=
* specifying the <code>&#60;select&#62;</code> element to be used as the =
data =0A=
* source for the menu bar.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the menu bar. See configuration class documentation =
for=0A=
* more details.=0A=
* @class Menubar=0A=
* @constructor=0A=
* @extends YAHOO.widget.Menu=0A=
* @namespace YAHOO.widget=0A=
*/=0A=
YAHOO.widget.MenuBar =3D function(p_oElement, p_oConfig) {=0A=
=0A=
    YAHOO.widget.MenuBar.superclass.constructor.call(=0A=
            this, =0A=
            p_oElement,=0A=
            p_oConfig=0A=
        );=0A=
=0A=
};=0A=
=0A=
=0A=
/**=0A=
* Constant representing the MenuBar's configuration properties=0A=
* @property YAHOO.widget.MenuBar._DEFAULT_CONFIG=0A=
* @private=0A=
* @final=0A=
* @type Object=0A=
*/=0A=
YAHOO.widget.MenuBar._DEFAULT_CONFIG =3D {=0A=
=0A=
    "POSITION": { =0A=
        key: "position", =0A=
        value: "static", =0A=
        validator: YAHOO.widget.Menu._checkPosition, =0A=
        supercedes: ["visible"] =0A=
    }, =0A=
=0A=
    "SUBMENU_ALIGNMENT": { =0A=
        key: "submenualignment", =0A=
        value: ["tl","bl"] =0A=
    },=0A=
=0A=
    "AUTO_SUBMENU_DISPLAY": { =0A=
        key: "autosubmenudisplay", =0A=
        value: false, =0A=
        validator: YAHOO.lang.isBoolean =0A=
    }=0A=
=0A=
};=0A=
=0A=
=0A=
=0A=
YAHOO.lang.extend(YAHOO.widget.MenuBar, YAHOO.widget.Menu, {=0A=
=0A=
/**=0A=
* @method init=0A=
* @description The MenuBar class's initialization method. This method is =0A=
* automatically called by the constructor, and sets up all DOM =
references for =0A=
* pre-existing markup, and creates required markup if it is not already =
present.=0A=
* @param {String} p_oElement String specifying the id attribute of the =0A=
* <code>&#60;div&#62;</code> element of the menu bar.=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 =
for the =0A=
* menu bar.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
* one-html.html#ID-22445964">HTMLDivElement</a>} p_oElement Object =
specifying =0A=
* the <code>&#60;div&#62;</code> element of the menu bar.=0A=
* @param {<a =
href=3D"http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/level-=0A=
* one-html.html#ID-94282980">HTMLSelectElement</a>} p_oElement Object =0A=
* specifying the <code>&#60;select&#62;</code> element to be used as the =
data =0A=
* source for the menu bar.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the menu bar. See configuration class documentation =
for=0A=
* more details.=0A=
*/=0A=
init: function(p_oElement, p_oConfig) {=0A=
=0A=
    if(!this.ITEM_TYPE) {=0A=
=0A=
        this.ITEM_TYPE =3D YAHOO.widget.MenuBarItem;=0A=
=0A=
    }=0A=
=0A=
=0A=
    // Call the init of the superclass (YAHOO.widget.Menu)=0A=
=0A=
    YAHOO.widget.MenuBar.superclass.init.call(this, p_oElement);=0A=
=0A=
=0A=
    this.beforeInitEvent.fire(YAHOO.widget.MenuBar);=0A=
=0A=
=0A=
    if(p_oConfig) {=0A=
=0A=
        this.cfg.applyConfig(p_oConfig, true);=0A=
=0A=
    }=0A=
=0A=
    this.initEvent.fire(YAHOO.widget.MenuBar);=0A=
=0A=
},=0A=
=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 menu =0A=
* bar's <code>&#60;div&#62;</code> element.=0A=
* @default "yuimenubar"=0A=
* @final=0A=
* @type String=0A=
*/=0A=
CSS_CLASS_NAME: "yuimenubar",=0A=
=0A=
=0A=
=0A=
// Protected event handlers=0A=
=0A=
=0A=
/**=0A=
* @method _onKeyDown=0A=
* @description "keydown" Custom Event handler for the menu bar.=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.MenuBar} p_oMenuBar Object representing the menu =
bar =0A=
* that fired the event.=0A=
*/=0A=
_onKeyDown: function(p_sType, p_aArgs, p_oMenuBar) {=0A=
=0A=
    var Event =3D YAHOO.util.Event,=0A=
        oEvent =3D p_aArgs[0],=0A=
        oItem =3D p_aArgs[1],=0A=
        oSubmenu;=0A=
=0A=
=0A=
    if(oItem && !oItem.cfg.getProperty("disabled")) {=0A=
=0A=
        var oItemCfg =3D oItem.cfg;=0A=
=0A=
        switch(oEvent.keyCode) {=0A=
    =0A=
            case 37:    // Left arrow=0A=
            case 39:    // Right arrow=0A=
    =0A=
                if(=0A=
                    oItem =3D=3D this.activeItem && =0A=
                    !oItemCfg.getProperty("selected")=0A=
                ) {=0A=
    =0A=
                    oItemCfg.setProperty("selected", true);=0A=
    =0A=
                }=0A=
                else {=0A=
    =0A=
                    var oNextItem =3D (oEvent.keyCode =3D=3D 37) ? =0A=
                            oItem.getPreviousEnabledSibling() : =0A=
                            oItem.getNextEnabledSibling();=0A=
            =0A=
                    if(oNextItem) {=0A=
    =0A=
                        this.clearActiveItem();=0A=
    =0A=
                        oNextItem.cfg.setProperty("selected", true);=0A=
    =0A=
    =0A=
                        if(this.cfg.getProperty("autosubmenudisplay")) {=0A=
                        =0A=
                            oSubmenu =3D =
oNextItem.cfg.getProperty("submenu");=0A=
                            =0A=
                            if(oSubmenu) {=0A=
                        =0A=
                                oSubmenu.show();=0A=
                            =0A=
                            }=0A=
                =0A=
                        }           =0A=
    =0A=
                        oNextItem.focus();=0A=
    =0A=
                    }=0A=
    =0A=
                }=0A=
    =0A=
                Event.preventDefault(oEvent);=0A=
    =0A=
            break;=0A=
    =0A=
            case 40:    // Down arrow=0A=
    =0A=
                if(this.activeItem !=3D oItem) {=0A=
    =0A=
                    this.clearActiveItem();=0A=
    =0A=
                    oItemCfg.setProperty("selected", true);=0A=
                    oItem.focus();=0A=
                =0A=
                }=0A=
    =0A=
                oSubmenu =3D oItemCfg.getProperty("submenu");=0A=
    =0A=
                if(oSubmenu) {=0A=
    =0A=
                    if(oSubmenu.cfg.getProperty("visible")) {=0A=
    =0A=
                        oSubmenu.setInitialSelection();=0A=
                        oSubmenu.setInitialFocus();=0A=
                    =0A=
                    }=0A=
                    else {=0A=
    =0A=
                        oSubmenu.show();=0A=
                    =0A=
                    }=0A=
    =0A=
                }=0A=
    =0A=
                Event.preventDefault(oEvent);=0A=
    =0A=
            break;=0A=
    =0A=
        }=0A=
=0A=
    }=0A=
=0A=
=0A=
    if(oEvent.keyCode =3D=3D 27 && this.activeItem) { // Esc key=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.cfg.setProperty("selected", false);=0A=
            this.activeItem.blur();=0A=
    =0A=
        }=0A=
=0A=
        Event.preventDefault(oEvent);=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
/**=0A=
* @method _onClick=0A=
* @description "click" event handler for the menu bar.=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=
* @param {YAHOO.widget.MenuBar} p_oMenuBar Object representing the menu =
bar =0A=
* that fired the event.=0A=
*/=0A=
_onClick: function(p_sType, p_aArgs, p_oMenuBar) {=0A=
=0A=
    YAHOO.widget.MenuBar.superclass._onClick.call(=0A=
        this, =0A=
        p_sType, =0A=
        p_aArgs, =0A=
        p_oMenuBar=0A=
    );=0A=
=0A=
=0A=
    var oItem =3D p_aArgs[1];=0A=
    =0A=
    if(oItem && !oItem.cfg.getProperty("disabled")) {=0A=
=0A=
         var Event =3D YAHOO.util.Event,=0A=
             Dom =3D YAHOO.util.Dom,=0A=
    =0A=
             oEvent =3D p_aArgs[0],=0A=
             oTarget =3D Event.getTarget(oEvent),=0A=
    =0A=
             oActiveItem =3D this.activeItem,=0A=
             oConfig =3D this.cfg;=0A=
=0A=
=0A=
        // Hide any other submenus that might be visible=0A=
    =0A=
        if(oActiveItem && oActiveItem !=3D oItem) {=0A=
    =0A=
            this.clearActiveItem();=0A=
    =0A=
        }=0A=
=0A=
    =0A=
        oItem.cfg.setProperty("selected", true);=0A=
    =0A=
=0A=
        // Show the submenu for the item=0A=
    =0A=
        var oSubmenu =3D oItem.cfg.getProperty("submenu");=0A=
=0A=
=0A=
        if(oSubmenu && oTarget !=3D oItem.submenuIndicator) {=0A=
        =0A=
            if(oSubmenu.cfg.getProperty("visible")) {=0A=
            =0A=
                oSubmenu.hide();=0A=
            =0A=
            }=0A=
            else {=0A=
            =0A=
                oSubmenu.show();                    =0A=
            =0A=
            }=0A=
        =0A=
        }=0A=
    =0A=
    }=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Public methods=0A=
=0A=
=0A=
/**=0A=
* @method toString=0A=
* @description Returns a string representing the menu bar.=0A=
* @return {String}=0A=
*/=0A=
toString: function() {=0A=
=0A=
    var sReturnVal =3D "MenuBar",=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=
* @description Initializes the class's configurable properties which can =
be=0A=
* changed using the menu bar's Config object ("cfg").=0A=
* @method initDefaultConfig=0A=
*/=0A=
initDefaultConfig: function() {=0A=
=0A=
    YAHOO.widget.MenuBar.superclass.initDefaultConfig.call(this);=0A=
=0A=
    var oConfig =3D this.cfg,=0A=
        DEFAULT_CONFIG =3D YAHOO.widget.MenuBar._DEFAULT_CONFIG;=0A=
=0A=
	// Add configuration properties=0A=
=0A=
=0A=
    /*=0A=
        Set the default value for the "position" configuration property=0A=
        to "static" by re-adding the property.=0A=
    */=0A=
=0A=
=0A=
    /**=0A=
    * @config position=0A=
    * @description String indicating how a menu bar should be positioned =
on the =0A=
    * screen.  Possible values are "static" and "dynamic."  Static menu =
bars =0A=
    * are visible by default and reside in the normal flow of the =
document =0A=
    * (CSS position: static).  Dynamic menu bars are hidden by default, =
reside=0A=
    * out of the normal flow of the document (CSS position: absolute), =
and can =0A=
    * overlay other elements on the screen.=0A=
    * @default static=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=
        Set the default value for the "submenualignment" configuration =
property=0A=
        to ["tl","bl"] by re-adding the property.=0A=
    */=0A=
=0A=
    /**=0A=
    * @config submenualignment=0A=
    * @description Array defining how submenus should be aligned to =
their =0A=
    * parent menu bar item. The format is: [itemCorner, submenuCorner].=0A=
    * @default ["tl","bl"]=0A=
    * @type Array=0A=
    */=0A=
    oConfig.addProperty(=0A=
        DEFAULT_CONFIG.SUBMENU_ALIGNMENT.key, =0A=
        {=0A=
            value: DEFAULT_CONFIG.SUBMENU_ALIGNMENT.value=0A=
        }=0A=
    );=0A=
=0A=
=0A=
    /*=0A=
        Change the default value for the "autosubmenudisplay" =
configuration =0A=
        property to "false" by re-adding the property.=0A=
    */=0A=
=0A=
    /**=0A=
    * @config autosubmenudisplay=0A=
    * @description Boolean indicating if submenus are automatically made =0A=
    * visible when the user mouses over the menu bar's items.=0A=
    * @default false=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=
       } =0A=
    );=0A=
=0A=
}=0A=
 =0A=
}); // END YAHOO.lang.extend=0A=
=0A=
=0A=
=0A=
/**=0A=
* Creates an item for a menu bar.=0A=
* =0A=
* @param {String} p_oObject String specifying the text of the menu bar =
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 the =0A=
* <code>&#60;li&#62;</code> element of the menu bar 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 bar =
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 =
specifying =0A=
* the <code>&#60;option&#62;</code> element of the menu bar item.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the menu bar item. See configuration class =
documentation =0A=
* for more details.=0A=
* @class MenuBarItem=0A=
* @constructor=0A=
* @extends YAHOO.widget.MenuItem=0A=
*/=0A=
YAHOO.widget.MenuBarItem =3D function(p_oObject, p_oConfig) {=0A=
=0A=
    YAHOO.widget.MenuBarItem.superclass.constructor.call(=0A=
        this, =0A=
        p_oObject, =0A=
        p_oConfig=0A=
    );=0A=
=0A=
};=0A=
=0A=
YAHOO.lang.extend(YAHOO.widget.MenuBarItem, YAHOO.widget.MenuItem, {=0A=
=0A=
=0A=
/**=0A=
* @method init=0A=
* @description The MenuBarItem class's initialization method. This =
method is =0A=
* automatically called by the constructor, and sets up all DOM =
references for =0A=
* pre-existing markup, and creates required markup if it is not already =
present.=0A=
* @param {String} p_oObject String specifying the text of the menu bar =
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 the =0A=
* <code>&#60;li&#62;</code> element of the menu bar 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 bar =
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 =
specifying =0A=
* the <code>&#60;option&#62;</code> element of the menu bar item.=0A=
* @param {Object} p_oConfig Optional. Object literal specifying the =0A=
* configuration for the menu bar item. See configuration class =
documentation =0A=
* for more details.=0A=
*/=0A=
init: function(p_oObject, p_oConfig) {=0A=
=0A=
    if(!this.SUBMENU_TYPE) {=0A=
=0A=
        this.SUBMENU_TYPE =3D YAHOO.widget.Menu;=0A=
=0A=
    }=0A=
=0A=
=0A=
    /* =0A=
        Call the init of the superclass (YAHOO.widget.MenuItem)=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=
    YAHOO.widget.MenuBarItem.superclass.init.call(this, p_oObject);  =0A=
=0A=
=0A=
    var oConfig =3D this.cfg;=0A=
=0A=
    if(p_oConfig) {=0A=
=0A=
        oConfig.applyConfig(p_oConfig, true);=0A=
=0A=
    }=0A=
=0A=
    oConfig.fireQueue();=0A=
=0A=
},=0A=
=0A=
=0A=
=0A=
// Constants=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 bar item.=0A=
* @default "yuimenubaritem"=0A=
* @final=0A=
* @type String=0A=
*/=0A=
CSS_CLASS_NAME: "yuimenubaritem",=0A=
=0A=
=0A=
=0A=
// Public methods=0A=
=0A=
=0A=
/**=0A=
* @method toString=0A=
* @description Returns a string representing the menu bar item.=0A=
* @return {String}=0A=
*/=0A=
toString: function() {=0A=
=0A=
    var sReturnVal =3D "MenuBarItem";=0A=
=0A=
    if(this.cfg && this.cfg.getProperty("text")) {=0A=
=0A=
        sReturnVal +=3D (": " + this.cfg.getProperty("text"));=0A=
=0A=
    }=0A=
=0A=
    return sReturnVal;=0A=
=0A=
}=0A=
    =0A=
}); // END YAHOO.lang.extend=0A=
YAHOO.register("menu", YAHOO.widget.Menu, {version: "2.2.2", build: =
"204"});=0A=

------=_NextPart_000_0000_01C9C676.4F71ABE0--

