From: "Guardado por Microsoft Internet Explorer 7"
Subject: =?Windows-1252?Q?Custodia_compartida_._Ram=F3n_Irigoyen?=
Date: Thu, 29 May 2008 09:33:28 +0200
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0103_01C8C16F.0D96DAE0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6000.16545

This is a multi-part message in MIME format.

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Custodia compartida . Ram=F3n Irigoyen</TITLE>
<META content=3D"Custodia compartida. Ram=F3n Irigoyen" name=3Dtitle>
<META content=3D" CUSTODIA COMPARTIDA " name=3Dkeywords>
<META=20
content=3D"La separaci=F3n amistosa, cuando el amor se ha ido a criar =
malvas, es el primer deber que ha de imponerse una pareja. Cuando hay =
hijos que compartir y bienes que repartir, el divorcio o la separaci=F3n =
de las parejas que no est=E1n casadas suele conllevar, con frecuencia, =
en los dos miembros de la pareja, arrebatos de c=F3lera que dificultan =
mucho el entendimiento pac=EDfico. En esos momentos se demuestra de =
verdad qui=E9n est=E1 sentimentalmente bien educado e imponi=E9ndose a =
la furia y a la ira decide, no solo no hacer da=F1o al otro miembro de =
la pareja, sino incluso desde el dolor de la separaci=F3n, ayudarle a =
soportar el trance del mejor modo posible."=20
name=3Ddescription>
<META http-equiv=3Dcontent-type content=3Dtext/xml;charset=3DISO-8859-1>
<META content=3D"all | index | follow" name=3Drobots>
<META http-equiv=3Drefresh content=3D900>
<META content=3D"La Voz de Galicia" name=3Dauthor>
<META content=3DCanalvoz name=3Dorganization>
<META content=3D"A Coru=F1a, Galicia, Espa=F1a, U.E." name=3Dlocality>
<META content=3Des name=3Dlang>
<META http-equiv=3Dexpires content=3D0>
<META http-equiv=3Dlast-modified content=3D0>
<META http-equiv=3Dcache-control content=3D"no-cache, must-revalidate">
<META http-equiv=3Dpragma content=3Dno-cache><LINK title=3DOpini=F3n=20
href=3D"/opinion/index.xml" type=3Dapplication/rss+xml rel=3Dalternate>
<STYLE type=3Dtext/css>@import url( =
/ficheros/35C4A72D0A80E0AB015CD9C02FAF6B75/LVDG_estilos_publicidad.css =
);
@import url( /ficheros/018559E20A80B1A2007834EB7A15FD5A/LVDG_pie.css );
@import url( =
/ficheros/BC6E26530A80E0AB01A4181C30ACA8D9/LVDG_estilos_cliche_seccion.cs=
s );
@import url( /ficheros/1202835993967578199/LVDG_estilos_cliches.css );
@import url( =
/ficheros/1205422036720533891/LVDG_estilos_generales_130308.css );
@import url( =
/ficheros/4914AF6D0A80B1A100E6A73D7E2305B3/LVDG_estilos_capa_transparente=
.css );
@import url( =
/ficheros/76E596D70A80B1A100AE997B308D7528/LVDG_estilos_localizador.css =
);
@import url( =
/ficheros/0A4C9CFB0A80E0AB00FE0FD9F02D7131/LVDG_estilos_humor.css );
@import url( =
/ficheros/099AA52B0A80E0AB00FE0FD9C9198E25/LVDG_estilos_opinion.css );
@import url( =
/ficheros/B2CC47C00A80E0AB00B113C7912EC5AE/LVDG_estilos_piezas_opiniones.=
css );
@import url( /ficheros/1191926985177370/LVDG_estilos_enviar_noticia.css =
);
@import url( =
/ficheros/1205422220475162240/LVDG_estilos_sector_cabecero_mini_130308.cs=
s );
@import url( =
/ficheros/76D3865F0A80B1A100AE997B485F3286/LVDG_estilos_detalle.css );
@import url( =
/ficheros/A20A9B030A80E0AB007BFC04A7AF50C3/LVDG_estilos_utnot.css );
@import url( =
/ficheros/1A15C6B50A80B1A10170C7A32D238343/LVDG_estilos_detalle_opinion.c=
ss );
@import url( =
/ficheros/76E596D70A80B1A100AE997B308D7528/LVDG_estilos_localizador.css =
);
@import url( =
/ficheros/B2CB05AB0A80E0AB00B113C752A3F9E8/LVDG_estilos_envia_opinion.css=
 );
@import url( =
/ficheros/4914AF6D0A80B1A100E6A73D7E2305B3/LVDG_estilos_capa_transparente=
.css );
</STYLE>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/558124BE0A80E0AB012F41A585B4=
5977/LVDG_script.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/8CC01D870A80B1A20163C85B0702=
5780/Traduccion_Idioma.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1207566307869166180/banneryw=
ol.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/D9494AAE0A80B1A1006261C96634=
ABEC/script_ventana.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/93D696360A80E09D0176E9C0E8D2=
FCCA/LVDG_fechasUtil.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/CEC5A24A0A80B1A101301D480042=
16CC/LVDG_seovoz.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1189597585708264/LVDG_AjaxJD=
om.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1189597630143481/LVDG_AjaxXp=
ath.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1189597715663939/LVDG_Lector=
XML.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/290D96910A80B1A1008F337B78D9=
049E/LVDG_validaciones_opinas.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1189597743995408/LVDG_Lector=
XSLT.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1192035251129886921/LVDG_val=
idaciones_envio_noticia.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1189597562672697/LVDG_AjaxMi=
sc.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/518EE9620A80B197011F7B3D4E9A=
130D/LVDG_banners.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1200937757704715300/LVDG_uti=
les.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1197640683627484864/LVDG_vot=
acion.js"=20
type=3Dtext/javascript>//</SCRIPT>

<SCRIPT=20
src=3D"http://www.lavozdegalicia.es/ficheros/1189597663711607/LVDG_AjaXSL=
T.js"=20
type=3Dtext/javascript>//</SCRIPT>

<META content=3D"MSHTML 6.00.6000.16448" name=3DGENERATOR></HEAD>
<BODY>
<DIV class=3D"maq detopi01">
<DIV class=3Dinterst>
<SCRIPT=20
type=3Dtext/javascript>configuracionOAS('vocento.lavozdegalicia/opinion')=
;</SCRIPT>

<SCRIPT type=3Dtext/javascript>OAS_AD('megabanner');</SCRIPT>

<DIV class=3Dinterst>
<DIV class=3Dno>pub</DIV>
<DIV class=3Dizq>
<DIV class=3Dno>LVDG_PUBLICIDAD:12:sec.opinion</DIV></DIV></DIV></DIV>
<DIV class=3D"sct cab" id=3Dcabecero>
<DIV class=3D"area auto">
<DIV class=3D"menu serv">
<DIV class=3D"izq idiom"><STRONG class=3Dno>Elegir idioma:</STRONG>
<SCRIPT language=3Djavascript>if (idioma()) document.write('<a =
class=3D"pestana" href=3D"javascript:CrearCookie(\'idioma_session\', =
\'es\');window.location=3Dgal2es(window.location)">Edici=F3n en =
castellano</a>');=0A=
					else document.write('<a class=3D"pestana" =
href=3D"javascript:CrearCookie(\'idioma_session\',\'ga\');traducir();">Ed=
ici=F3n en galego</a>');</SCRIPT>
 </DIV>
<DIV class=3D"der ed_imp"><STRONG>Edici=F3n Impresa:</STRONG> <A=20
href=3D"http://www.lavozdegalicia.es/VentaPDF/">Diario en PDF</A> | <A=20
href=3D"http://www.lavozdegalicia.es/VentaPDF/">Hemeroteca</A> =
</DIV></DIV>
<DIV class=3Dpanel><A class=3Dcabecera=20
href=3D"http://www.lavozdegalicia.es/portada/index.htm" tilte=3D"Ir a =
Portada"><IMG=20
alt=3D"portada de La Voz de Galicia"=20
src=3D"http://media.lavozdegalicia.es/default/2008/03/13/0012120541370171=
1217121/Foto/cabecera_mini.gif">=20
</A>
<DIV class=3D"area der">
<H2 class=3Dno>Buscador de contenidos</H2>
<FORM class=3Dbusca id=3DfrmQuery name=3DfrmQuery action=3D# =
method=3Dpost=20
target=3D_self><INPUT id=3Dquery type=3Dhidden name=3Dquery> <INPUT =
id=3DrbFilter=20
type=3Dhidden value=3D0 name=3DrbFilter> <INPUT id=3DrbFilter =
type=3Dhidden value=3D0=20
name=3DrbDonde> <INPUT id=3Dtxt_busqueda type=3Dhidden =
name=3Dtxt_busqueda> <INPUT=20
type=3Dhidden value=3D0 name=3Dpag>=20
<FIELDSET><INPUT class=3Dbrd id=3Dbuscador_txt name=3Dbuscador_txt> =
</FIELDSET>=20
<FIELDSET><LEGEND class=3Dno>Elige:</LEGEND><LABEL for=3Dbuscavoz><SPAN=20
class=3Dno>Buscar en el</SPAN> Peri=F3dico <INPUT id=3Dbuscavoz =
type=3Dradio CHECKED=20
value=3D0 name=3Ddonde> </LABEL><LABEL class=3Dnostrum =
for=3Dnostrum><SPAN=20
class=3Dno>Buscar en la</SPAN> Web <INPUT id=3Dnostrum type=3Dradio =
value=3D1=20
name=3Ddonde> </LABEL><INPUT class=3Dboton onclick=3DgoToBuscador() =
type=3Dbutton value=3Dbuscar>=20
</FIELDSET> </FORM>
<FORM id=3DfrmGoogle name=3DfrmGoogle action=3D# method=3Dget =
target=3D_self><INPUT id=3Dsbi=20
type=3Dhidden name=3Dq> <INPUT type=3Dhidden =
value=3Dpub-6836842800889267 name=3Dclient>=20
<INPUT type=3Dhidden value=3D1 name=3Dforid> <INPUT type=3Dhidden =
value=3DISO-8859-1=20
name=3Die> <INPUT type=3Dhidden value=3DISO-8859-1 name=3Doe> <INPUT =
type=3Dhidden=20
value=3Dactive name=3Dsafe> <INPUT type=3Dhidden=20
value=3DGALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBG=
C:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:11=20
name=3Dcof> <INPUT type=3Dhidden value=3Des name=3Dhl> =
</FORM></DIV></DIV>
<SCRIPT languaje=3D"javascript">function goToBuscador() {=0A=
				if (document.getElementById('buscavoz').checked) {=0A=
					=
document.frmQuery.action=3D'http://www.lavozdegalicia.es/SSEE/buscavoz/re=
sultados.jsp';=0A=
					=
document.getElementById('query').value=3Ddocument.getElementById('buscado=
r_txt').value;=0A=
					document.form_cab_buscavoz.submit();=0A=
				} else {=0A=
					=
document.frmGoogle.action=3D'http://www.lavozdegalicia.es/buscawebg/index=
.htm';=0A=
					=
document.getElementById('sbi').value=3Ddocument.getElementById('buscador_=
txt').value;=0A=
					document.frmGoogle.submit()=0A=
				}=0A=
			}</SCRIPT>
</DIV>
<DIV class=3Dindx>
<H2 class=3Dno>Indice de contenidos</H2>
<UL class=3Dmenu>
  <LI class=3D"inl mg_inf">
  <H3 class=3Dno>actualidad</H3>
  <UL class=3Dinl>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    href=3D"http://www.lavozdegalicia.es/portada/index.htm">Portada</A> =
</H4>
    <UL class=3D"sub no">
      <LI class=3Dfin =
xmlns:xml=3D"http://www.w3.org/XML/1998/namespace"><A=20
      href=3D"http://www.lavozdegalicia.es/24horas/index.htm">24 =
Horas</A>=20
      <LI class=3Dfin><A =
href=3D"http://www.lavozdegalicia.es/lomas/index.htm"=20
      xmlns:xml=3D"http://www.w3.org/XML/1998/namespace">Lo m=E1s =
visto</A>=20
      <LI class=3Dfin><A =
href=3D"http://www.lavozdegalicia.es/fotos/index.htm"=20
      xmlns:xml=3D"http://www.w3.org/XML/1998/namespace">Fotos</A>=20
      <LI class=3Dfin><A =
href=3D"http://www.lavozdegalicia.es/videos/index.htm"=20
      xmlns:xml=3D"http://www.w3.org/XML/1998/namespace">V=EDdeos</A>=20
      <LI class=3Dfin><A =
href=3D"http://www.lavozdegalicia.es/tiempo/index.htm"=20
      xmlns:xml=3D"http://www.w3.org/XML/1998/namespace">El Tiempo</A>=20
      <LI class=3Dfin><A =
href=3D"http://www.lavozdegalicia.es/hemeroteca/index.htm"=20
      xmlns:xml=3D"http://www.w3.org/XML/1998/namespace">Hemeroteca =
web</A>=20
      <LI class=3Dfin><A =
href=3D"http://www.lavozdegalicia.es/mapaweb/index.htm"=20
      xmlns:xml=3D"http://www.w3.org/XML/1998/namespace">Mapa web</A> =
</LI></UL>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    href=3D"http://www.lavozdegalicia.es/galicia/index.htm">Galicia</A> =
</H4>
    <UL class=3D"sub no">
      <LI class=3Dfin><A =
href=3D"http://www.lavozdegalicia.es/coruna/index.htm">A=20
      Coru=F1a</A>=20
      <LI class=3Dfin><A =
href=3D"http://www.lavozdegalicia.es/amarina/index.htm">A=20
      Mari=F1a</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/arousa/index.htm">Arousa</A>=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/barbanza/index.htm">Barbanza</A>=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/carballo/index.htm">Carballo</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/deza/index.htm">Deza</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/ferrol/index.htm">Ferrol</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/lemos/index.htm">Lemos</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/lugo/index.htm">Lugo</A>=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/ourense/index.htm">Ourense</A>=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/pontevedra/index.htm">Pontevedra</A>=
=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/santiago/index.htm">Santiago</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/vigo/index.htm">Vigo</A>=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/lavozdelaemigracion/index.htm">Emigr=
aci=F3n</A>=20
      </LI></UL>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    =
href=3D"http://www.lavozdegalicia.es/deportes/index.htm">Deportes</A> =
</H4>
    <UL class=3D"sub no">
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/deportes/liga/index.htm">Liga</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/formula1/index.htm">F=F3rmula =
1</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/motos/index.htm">MotoGP</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/motor/index.htm">Motor</A> =
</LI></UL>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    =
href=3D"http://www.lavozdegalicia.es/sociedad/index.htm">Sociedad</A> =
</H4>
    <UL class=3D"sub no">
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/cultura/index.htm">Cultura</A>=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/genteytelevision/index.htm">Gente</A=
>=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/tendencias/index.htm">Tendencias</A>=
=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/tecnologia/index.htm">Tecnolog=EDa</=
A>=20
      <LI class=3Dfin><A href=3D"http://lavozdegalicia.canal-si.com/"=20
      target=3D_blank>Canal Si</A>=20
      <LI class=3Dfin><A href=3D"http://lavozdegalicia.laguiatv.com/"=20
      target=3D_blank>La Gu=EDa TV</A>=20
      <LI class=3Dfin><A href=3D"http://lavozdegalicia.hoymujer.com/"=20
      target=3D_blank>Hoy mujer</A>=20
      <LI class=3Dfin><A =
href=3D"http://lavozdegalicia.xlsemanal.com/web/home.php"=20
      target=3D_blank>XLSemanal</A> </LI></UL>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    href=3D"http://www.lavozdegalicia.es/dinero/index.htm">Dinero</A> =
</H4>
    <UL class=3D"sub no">
      <LI class=3Dfin><A =
href=3D"http://bolsa.lavozdegalicia.es/index.asp">Bolsa</A>=20
      </LI></UL>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    href=3D"http://www.lavozdegalicia.es/espana/index.htm">Espa=F1a</A> =
</H4>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    href=3D"http://www.lavozdegalicia.es/mundo/index.htm">Mundo</A> =
</H4>
    <LI class=3Ditem>
    <H4><A class=3D"pestana off"=20
    =
href=3D"http://www.lavozdegalicia.es/opinion/index.htm">Opini=F3n</A> =
</H4>
    <UL class=3Dsub>
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/cartasdirector/index.htm">Cartas al =

      Director</A> </LI></UL>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    =
href=3D"http://www.lavozdegalicia.es/participa/index.htm">Participa</A> =
</H4>
    <UL class=3D"sub no">
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/SSEE/encuentros/index.jsp">Encuentro=
s</A>=20

      <LI class=3Dfin><A=20
      href=3D"http://chat.lavoz.es:8090/chat/world/html/index.html"=20
      target=3D_blank>Chat</A>=20
      <LI class=3Dfin><A=20
      =
href=3D"http://www.lavozdegalicia.es/cuentalotu/index.htm">Cu=E9ntalo =
t=FA</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://www.lavozdegalicia.es/relatos/index.htm">Relatos de =
Ver=E1n</A>=20
      </LI></UL>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    href=3D"http://www.lavozdegalicia.es/blogs/index.htm">Blogs</A> =
</H4>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    href=3D"http://ocio.lavozdegalicia.es/inicio/index.htm">Ocio</A> =
</H4>
    <UL class=3D"sub no">
      <LI class=3Dfin><A =
href=3D"http://ocio.lavozdegalicia.es/se_cine/index.htm"=20
      target=3D_blank>Cine</A>=20
      <LI class=3Dfin><A =
href=3D"http://ocio.lavozdegalicia.es/se_musica/index.htm"=20
      target=3D_blank>M=FAsica</A>=20
      <LI class=3Dfin><A=20
      href=3D"http://ocio.lavozdegalicia.es/se_escapate/index.htm"=20
      target=3D_blank>Esc=E1pate</A>=20
      <LI class=3Dfin><A =
href=3D"http://ocio.lavozdegalicia.es/se_arte/index.htm"=20
      target=3D_blank>Arte</A> </LI></UL></LI></UL>
  <LI class=3D"inl mg_util">
  <H3 class=3Dno>utilidades</H3>
  <UL class=3Dinl>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    =
href=3D"http://www.lavozdegalicia.es/servicios/index.htm">Servicios</A> =
</H4>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    =
href=3D"http://www.lavozdegalicia.es/clasificados/index.htm">Clasificados=
</A>=20
    </H4>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    =
href=3D"http://www.lavozdegalicia.es/infocanales/index.htm">Canales</A> =
</H4>
    <LI class=3Ditem>
    <H4><A class=3Dpestana=20
    href=3D"http://www.lavozdegalicia.es/edicionimpresa/index.htm">Ed. =
Impresa</A>=20
    </H4></LI></UL></LI></UL></DIV></DIV>
<DIV class=3D"sct brd det" id=3Ddetalle>
<DIV class=3D"area izq a660">
<DIV class=3D"area auto">
<DIV class=3D"not opi">
<H1 class=3Dtitulo><EM class=3D"titulillo brd">al d=EDa <SPAN>:</SPAN> =
</EM>Custodia=20
compartida </H1>
<DL class=3Dlocalizador>
  <SCRIPT language=3Djavascript>var d =3D new =
Date(1212012000000);</SCRIPT>

  <DT class=3Dno>Fecha de publicaci=F3n:=20
  <DD class=3Dfecha>
  <SCRIPT language=3Djavascript>document.write(formatLong(d, 'EEEE d =
\'de\' MMMM \'de\' yyyy', 'es'));=0A=
				//document.write(d.getDate() + "/" + (parseInt(d.getMonth())+1) + =
"/" + d.getFullYear());</SCRIPT>
  </DD></DL>
<UL class=3D"utnot nomr">
  <LI class=3Dvotnot id=3Dvotacion title=3D"Valora del 0 al 5 esta =
noticia">Valoraci=F3n=20
  <SPAN class=3Dno>de la noticia</SPAN> <A class=3Dstar id=3Dstar0=20
  =
onclick=3D"javascript:votar('0003_6858737','6F43844A0A80B198009B6976337B3=
445', this.rel);return(false);"=20
  =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"=20
  rel=3D1><SPAN>1</SPAN> </A><SPAN>,</SPAN> <A class=3Dstar id=3Dstar1=20
  =
onclick=3D"javascript:votar('0003_6858737','6F43844A0A80B198009B6976337B3=
445', this.rel);return(false);"=20
  =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"=20
  rel=3D2><SPAN>2</SPAN> </A><SPAN>,</SPAN> <A class=3Dstar id=3Dstar2=20
  =
onclick=3D"javascript:votar('0003_6858737','6F43844A0A80B198009B6976337B3=
445', this.rel);return(false);"=20
  =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"=20
  rel=3D3><SPAN>3</SPAN> </A><SPAN>,</SPAN> <A class=3Dstar id=3Dstar3=20
  =
onclick=3D"javascript:votar('0003_6858737','6F43844A0A80B198009B6976337B3=
445', this.rel);return(false);"=20
  =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"=20
  rel=3D4><SPAN>4</SPAN> </A><SPAN>,</SPAN> <A class=3Dstar id=3Dstar4=20
  =
onclick=3D"javascript:votar('0003_6858737','6F43844A0A80B198009B6976337B3=
445', this.rel);return(false);"=20
  =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"=20
  rel=3D5><SPAN>5</SPAN> </A><SPAN>,</SPAN> <EM id=3DnumeroVotos=20
  title=3D"Votaciones realizadas">()</EM>
  <SCRIPT =
language=3Djavascript>obtener_votacion('0003_6858737','6F43844A0A80B19800=
9B6976337B3445');</SCRIPT>
   </LI>
  <LI class=3Dno id=3DenviandoVotacion>Env=EDando datos... Espere, por =
favor. </LI>
  <LI class=3Dno id=3DvotacionEnviada>&nbsp;Gracias. </LI>
  <LI class=3D"servnot vote">
  <UL class=3Dinl>
    <LI class=3Dnobrd><A class=3D"serv tmenos" title=3D"Reducir el =
tama=F1o del texto"=20
    =
onclick=3D"javascript:disminuyeParrafo('texto','cambioTamano');return(fal=
se);"=20
    =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"><EM>-</EM>=20
    </A></LI>
    <LI><A class=3D"serv tmas" title=3D"Aumentar el tama=F1o del texto"=20
    =
onclick=3D"javascript:aumentaParrafo('texto','cambioTamano');return(false=
);"=20
    =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"><EM>+</EM>=20
    </A></LI>
    <LI><A class=3D"serv env"=20
    =
onclick=3D"javascript:document.getElementById('enviar_popup').className=3D=
''"=20
    =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"><SPAN=20
    class=3Dno>Enviar</SPAN> </A></LI>
    <LI><A class=3D"serv imp"=20
    =
href=3D"http://www.lavozdegalicia.es/SSEE/print.jsp?idContenido=3D0003_68=
58737&amp;idSeccion=3DB67FBB760A80B198004568F8C381B8F1"><SPAN=20
    class=3Dno>Imprimir</SPAN> </A></LI>
    <LI><A class=3D"ser vol" href=3D"javascript:history.back()"><SPAN=20
    class=3Dno>Volver</SPAN> </A></LI></UL></LI></UL>
<DIV id=3DcambioTamano>
<P class=3Dtexto>La separaci=F3n amistosa, cuando el amor se ha ido a =
criar malvas,=20
es el primer deber que ha de imponerse una pareja. Cuando hay hijos que=20
compartir y bienes que repartir, el divorcio o la separaci=F3n de las =
parejas que=20
no est=E1n casadas suele conllevar, con frecuencia, en los dos miembros =
de la=20
pareja, arrebatos de c=F3lera que dificultan mucho el entendimiento =
pac=EDfico. En=20
esos momentos se demuestra de verdad qui=E9n est=E1 sentimentalmente =
bien educado e=20
imponi=E9ndose a la furia y a la ira decide, no solo no hacer da=F1o al =
otro miembro=20
de la pareja, sino incluso desde el dolor de la separaci=F3n, ayudarle a =
soportar=20
el trance del mejor modo posible.</P>
<P class=3Dtexto>Cuando hay hijos, el deber de los padres es extremar el =
amor a=20
los hijos y darles la seguridad de que, desde una custodia compartida, =
el padre=20
y la madre, y aunque sea desde dos domicilios, los hijos van a tener en =
los=20
padres un apoyo pleno. En el 97% de las separaciones, los tribunales =
otorgan la=20
custodia a las madres.</P>
<P class=3Dtexto>Para nuestro C=F3digo Civil, la custodia compartida es =
una=20
eventualidad excepcional. Un juez espa=F1ol no otorga una custodia =
compartida=20
salvo que la avale el fiscal con un informe favorable, y si, por =
ejemplo, el=20
caso se est=E1 juzgando en Arag=F3n, el fiscal har=E1 bien en reforzar =
la=20
argumentaci=F3n de su informe cant=E1ndole al juez una jota. En Suecia, =
en cambio,=20
los jueces otorgan la custodia compartida en el 90% de los casos. La =
justicia,=20
en Espa=F1a, en el terreno de las sentencias de familia, est=E1 =
todav=EDa en=20
mantillas.</P></DIV>
<UL class=3D"utnot nomr">
  <LI class=3Dcomnot>Compartir <SPAN class=3Dno>la noticia en:</SPAN> <A =

  class=3D"ico del_ico"=20
  =
href=3D"http://del.icio.us/post?title=3D&amp;url=3Dhttp://www.lavozdegali=
cia.es/opinion/2008/05/29/0003_6858737.htm"><SPAN=20
  class=3Dno>del.icio.us</SPAN> </A><SPAN>,</SPAN> <A class=3D"ico =
tech_ico"=20
  =
href=3D"http://www.technorati.com/search/http://www.lavozdegalicia.es/opi=
nion/2008/05/29/0003_6858737.htm"><SPAN=20
  class=3Dno>technorati</SPAN> </A><SPAN>,</SPAN> <A class=3D"ico =
yahoo_ico"=20
  =
href=3D"http://myweb2.search.yahoo.com/myresults/bookmarklet?u=3Dhttp://w=
ww.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm"><SPAN=20
  class=3Dno>yahoo</SPAN> </A><SPAN>,</SPAN> <A class=3D"ico digg_ico"=20
  =
href=3D"http://www.digg.com/submit?url=3Dhttp://www.lavozdegalicia.es/opi=
nion/2008/05/29/0003_6858737.htm"><SPAN=20
  class=3Dno>digg</SPAN> </A><SPAN>,</SPAN> <A class=3D"ico meneame_ico" =

  =
href=3D"http://meneame.net/submit.php?url=3Dhttp://www.lavozdegalicia.es/=
opinion/2008/05/29/0003_6858737.htm"><SPAN=20
  class=3Dno>men=E9ame</SPAN> </A><SPAN>,</SPAN> <A class=3D"ico =
chuza_ico"=20
  =
href=3D"http://chuza.org/submit.php?url=3Dhttp://www.lavozdegalicia.es/op=
inion/2008/05/29/0003_6858737.htm"><SPAN=20
  class=3Dno>chuza</SPAN> </A><SPAN>,</SPAN> <EM><A=20
  =
onclick=3D"javascript:document.getElementById('compartir_popup').classNam=
e=3D''"=20
  =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
">=BFC=F3mo=20
  compartir?</A> </EM></LI>
  <LI class=3D"servnot vote">
  <UL class=3Dinl>
    <LI class=3Dnobrd><A class=3D"serv tmenos" title=3D"Reducir el =
tama=F1o del texto"=20
    =
onclick=3D"javascript:disminuyeParrafo('texto','cambioTamano');return(fal=
se);"=20
    =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"><EM>-</EM>=20
    </A></LI>
    <LI><A class=3D"serv tmas" title=3D"Aumentar el tama=F1o del texto"=20
    =
onclick=3D"javascript:aumentaParrafo('texto','cambioTamano');return(false=
);"=20
    =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"><EM>+</EM>=20
    </A></LI>
    <LI><A class=3D"serv env"=20
    =
onclick=3D"javascript:document.getElementById('enviar_popup').className=3D=
''"=20
    =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"><SPAN=20
    class=3Dno>Enviar</SPAN> </A></LI>
    <LI><A class=3D"serv imp"=20
    =
href=3D"http://www.lavozdegalicia.es/SSEE/print.jsp?idContenido=3D0003_68=
58737&amp;idSeccion=3DB67FBB760A80B198004568F8C381B8F1"><SPAN=20
    class=3Dno>Imprimir</SPAN> </A></LI>
    <LI><A class=3D"ser vol" href=3D"javascript:history.back()"><SPAN=20
    class=3Dno>Volver</SPAN> </A></LI></UL></LI></UL>
<DIV class=3Dno id=3Denviar_popup>
<DIV class=3D"area auto  ftrans"></DIV>
<DIV class=3Dporter>
<DIV class=3Dspok>
<DIV class=3Darrstr>
<H2 class=3D"area auto"><EM class=3D"blq  izq">ENVIAR NOTICIA</EM> <A=20
class=3D"boton der cerrar"=20
onclick=3D"javascript:document.getElementById('enviar_popup').className=3D=
'no'"=20
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
">&nbsp;</A>=20
</H2></DIV>
<DIV class=3D"caja brd contrans">
<DIV class=3Dnoticia>
<H2 class=3Dtitulo><EM class=3Dtitulillo>al d=EDa</EM> Custodia =
compartida </H2></DIV>
<FORM id=3Denvio_noticia name=3Denvio_noticia_amigo=20
onsubmit=3D"return validaEnviar(this)"=20
action=3Dhttp://www.lavozdegalicia.es/SSEE/enviarNoticia.jsp =
method=3Dpost><EM=20
class=3Dder>* Campos obligatorios</EM>=20
<FIELDSET><LEGEND>Enviar a:</LEGEND><LABEL for=3Dpara><EM>*</EM> Uno o =
varios=20
correos electr=F3nicos separados por punto y coma: <TEXTAREA =
class=3D"brd  t620" id=3Dpara name=3Dpara rows=3D5>&nbsp;</TEXTAREA>=20
</LABEL></FIELDSET>=20
<FIELDSET><LEGEND>Tus datos:</LEGEND><LABEL class=3D"area izq"=20
for=3Dcorreo><EM>*</EM> Tu correo: <INPUT class=3D"brd  t223" =
id=3Dcorreo maxLength=3D30=20
name=3Dcorreo> </LABEL><LABEL class=3D"area der" for=3Dnombre><EM>*</EM> =
Tu nombre:=20
<INPUT class=3D"brd  t148" id=3Dnombre maxLength=3D50 name=3Dnombre> =
</LABEL></FIELDSET>=20
<INPUT class=3D"boton  der" type=3Dsubmit value=3DEnviar name=3Denviar> =
<INPUT=20
type=3Dhidden value=3D0003_6858737 name=3Dref> <INPUT type=3Dhidden=20
value=3Dhttp://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm =
name=3Durl>=20
<INPUT type=3Dhidden value=3D6F43844A0A80B198009B6976337B3445 =
name=3Ddominio>=20
</FORM></DIV></DIV></DIV></DIV>
<DIV class=3Dno id=3Denviar_ok_popup>
<DIV class=3D"area auto  ftrans"></DIV>
<DIV class=3Dporter>
<DIV class=3Dspok>
<DIV class=3Darrstr>
<H2 class=3D"area auto"><EM class=3D"blq  izq">ENVIAR NOTICIA</EM> <A=20
class=3D"boton der cerrar"=20
onclick=3D"javascript:document.getElementById('enviar_popup').className=3D=
'no'"=20
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
">&nbsp;</A>=20
</H2></DIV>
<DIV class=3D"caja brd contrans">
<H3>Su env=EDo se ha realizado correctamente</H3>
<P>En breve los contactos recibir=E1n en su correo electr=F3nico un =
enlace a la=20
noticia</P>
<P><STRONG>Gracias por usar nuestros servicios</STRONG> </P>
<P><A class=3D"boton der"=20
onclick=3D"javascript:document.getElementById('enviar_ok_popup').classNam=
e=3D'no'"=20
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
">Cerrar</A>=20
</P></DIV></DIV></DIV></DIV>
<DIV class=3Dno id=3Denviar_error_popup>
<DIV class=3D"area auto  ftrans"></DIV>
<DIV class=3Dporter>
<DIV class=3Dspok>
<DIV class=3Darrstr>
<H2 class=3D"area auto"><EM class=3D"blq  izq">ENVIAR NOTICIA</EM> <A=20
class=3D"boton der cerrar"=20
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
">&nbsp;</A>=20
</H2></DIV>
<DIV class=3D"caja brd contrans">
<H3>Se ha producido un error <BR>No se ha podido realizar el env=EDo =
</H3>
<P>Revise sus datos y <A=20
onclick=3D"javascript:document.getElementById('enviar_popup').className=3D=
'';javascript:document.getElementById('enviar_error_popup').className=3D'=
no'"=20
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
">vuelva=20
a intentarlo</A> </P>
<P>Si se vuelve a producir un error, es posible que el servicio est=E1=20
moment=E1neamente no disponible. Int=E9ntelo m=E1s tarde.</P>
<P><STRONG>Disculpe las molestias. Gracias por usar nuestros =
servicios</STRONG>=20
</P>
<P><A class=3D"boton der"=20
onclick=3D"javascript:document.getElementById('enviar_error_popup').class=
Name=3D'no'"=20
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
">Cerrar</A>=20
</P></DIV></DIV></DIV></DIV>
<SCRIPT languaje=3D"javascript">var params =3D window.location.search;=0A=
			var okParamIni =3D params.indexOf("ok=3D");=0A=
			var okParamFin =3D okParamIni+4;=0A=
			var okParam =3D "";=0A=
			if (okParamIni > -1) {=0A=
				okParam =3D params.substring(okParamIni+3,okParamFin);=0A=
			}=0A=
			if (okParam=3D=3D"1")=0A=
				document.getElementById('enviar_ok_popup').className=3D''=0A=
			if (okParam=3D=3D"0")=0A=
				=
document.getElementById('enviar_error_popup').className=3D''</SCRIPT>
</DIV>
<SCRIPT =
type=3Dtext/javascript>seovoz("6F43844A0A80B198009B6976337B3445","0003","=
Custodia =
compartida","0003_6858737","B67FBB760A80B198004568F8C381B8F1");</SCRIPT>
</DIV></DIV>
<DIV class=3D"area der a330">
<DIV class=3D"img i316"><SPAN class=3Dbrd><IMG alt=3D"Ram=F3n Irigoyen"=20
src=3D"http://www.lavozdegalicia.es/img/opinion_fotos/ramon_irigoyen.jpg"=
>=20
</SPAN></DIV>
<DIV class=3Dno>LVDG_PUBLICIDAD:robapaginas:sec.opinion</DIV>
<DIV class=3D"area pub" id=3Dp03>
<DIV class=3D"mod p03">
<SCRIPT=20
type=3Dtext/javascript>configuracionOAS('vocento.lavozdegalicia/opinion')=
;</SCRIPT>

<SCRIPT type=3Dtext/javascript>OAS_AD('robapaginas');</SCRIPT>
</DIV></DIV>
<SCRIPT type=3Dtext/javascript>muestra('p03');</SCRIPT>

<DIV class=3Dno>LVDG_PUBLICIDAD_EXTERNOS:08A</DIV>
<DIV class=3Dno>LVDG_PUBLICIDAD_EXTERNOS:08B</DIV>
<DIV class=3Dno>LVDG_PUBLICIDAD_EXTERNOS:08C</DIV>
<DIV class=3Dno>LVDG_PUBLICIDAD_EXTERNOS:08D</DIV>
<DIV class=3Dno>LVDG_PUBLICIDAD_EXTERNOS:08E</DIV></DIV></DIV>
<DIV class=3D"sct pie">
<DIV class=3D"area auto">
<DIV class=3D"area izq pub">
<DIV class=3Dno>LVDG_PUBLICIDAD:10:sec.opinion</DIV></DIV>
<DIV class=3D"area der pub">
<DIV class=3Dno>LVDG_PUBLICIDAD:11:sec.opinion</DIV></DIV></DIV>
<DIV class=3D"area auto">
<DIV class=3D"caja enlaces">
<DIV class=3D"area izq a660">
<DIV class=3Dmnmenu>
<H5 class=3Dno>Otros enlaces de inter=E9s:</H5>
<UL>
  <LI class=3Dltit>
  <H6>Webs del grupo</H6>
  <UL class=3Dsubl>
    <LI><A href=3D"http://www.radiovoz.com/">RadioVoz</A>=20
    <LI><A href=3D"http://www.vozaudiovisual.es/">Voz Audiovisual</A>=20
    <LI><A href=3D"http://www.sondaxe.es/">Sondaxe</A>=20
    <LI><A href=3D"http://www.canalvoz.com/">Canalvoz</A>=20
    <LI><A href=3D"http://www.voznatura.com/home/index.php">Voz =
Natura</A>=20
    <LI><A=20
    =
href=3D"http://www.fundacionsantiagoreyfernandezlatorre.com/">Fundaci=F3n=
</A>=20
    <LI><A href=3D"http://www.prensaescuela.es/web/home/home.php">Prensa =

    Escuela</A>=20
    <LI><A href=3D"http://www.escuelademedios.com/">Escuela de =
Medios</A> </LI></UL>
  <LI class=3Dltit>
  <H6>Tarifas web</H6>
  <UL class=3Dsubl>
    <LI><A =
href=3D"http://www.lavozdegalicia.es/tarifas/tarifasdigital.pdf"=20
    target=3D_blank>Consulta</A> </LI></UL>
  <LI class=3Dltit>
  <H6>Contacte con nosotros</H6>
  <UL class=3Dsubl>
    <LI><A href=3D"mailto:webvoz@lavoz.es">webvoz@lavoz.es</A>=20
</LI></UL></LI></UL></DIV></DIV>
<DIV class=3D"area der a157">
<UL class=3Dlegal>
  <LI><A href=3D"http://www.lavozdegalicia.es/estaticos/avisolegal.pdf"=20
  target=3D_blank>Aviso legal</A>=20
  <LI><A =
href=3D"http://www.lavozdegalicia.es/estaticos/privacidad08.pdf"=20
  target=3D_blank>Pol=EDtica de privacidad</A>=20
  <LI><A =
href=3D"http://www.lavozdegalicia.es/estaticos/condicionesgenerales.pdf" =

  target=3D_blank>Condiciones generales</A>=20
  <LI><A href=3D"http://www.lavozdegalicia.es/rss/">RSS</A>=20
</LI></UL></DIV></DIV></DIV>
<DIV class=3D"area auto copy">
<DIV class=3D"area izq a495">
<DIV class=3Dcaja><A=20
href=3D"http://www.confianzaonline.org/codigoetico/codigoetico.php"=20
target=3D_blank><IMG=20
alt=3D"Confianza oline. Enlace a m=E1s informaci=F3n sobre el =
certificado"=20
src=3D"http://media.lavozdegalicia.es/img/logos/lg_confianza.gif"></A> =
<STRONG>=A9=20
Copyright LA VOZ DE GALICIA S.A.<BR>Pol=EDgono de Sab=F3n, Arteixo, A =
CORU=D1A=20
(Espa=F1a)</STRONG><BR>R.M. de A Coru=F1a: tomo 2438 del Archivo, =
Secci=F3n General,=20
folio 114 vto., hoja C-2141. CIF: A-15000649. </DIV></DIV>
<DIV class=3D"area der a495">
<UL class=3Dcomercial>
  <LI><EM>Comercializa publicidad local: </EM><A class=3Dcvoz_ico=20
  =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"><SPAN=20
  class=3Dno>canal voz</SPAN></A> </LI>
  <LI><EM>Comercializa publicidad nacional: </EM><A =
class=3Dcmvocento_ico=20
  =
href=3D"http://www.lavozdegalicia.es/opinion/2008/05/29/0003_6858737.htm#=
"><SPAN=20
  class=3Dno>cmvocento</SPAN></A> </LI></UL></DIV></DIV></DIV></DIV><!-- =
Condiciones generales --><!-- Politica privacidad --><!-- Aviso legal =
--><!-- Como compartir -->
<SCRIPT type=3Dtext/javascript>var =
IVW=3D"http://lavozdegalicia.ojdinteractiva.com/cgi-bin/ivw/CP/opinion" =
+ idiom;
document.write("<img src=3D\""+IVW+"?r=3D"+escape(document.referrer)+"\" =
width=3D\"1\" height=3D\"1\" name=3D\"ojd\" alt=3D\"ojd\"\/>");</SCRIPT>
<NOSCRIPT><IMG height=3D1 alt=3Dojd=20
src=3D"http://lavozdegalicia.ojdinteractiva.com/cgi-bin/ivw/CP/opinion" =
width=3D1=20
name=3Dojd> </NOSCRIPT><IMG id=3Dojd height=3D1 alt=3Dojd=20
src=3D"http://media.lavozdegalicia.es/img/empty.gif" width=3D1 =
name=3Dojd>
<SCRIPT type=3Dtext/javascript>var _rsCI=3D"es-lavozgal";
			var _rsCG=3D"0";
			var _rsDN=3D"//secure-uk.imrworldwide.com/";</SCRIPT>

<SCRIPT src=3D"http://secure-uk.imrworldwide.com/v53.js"=20
type=3Dtext/javascript>//</SCRIPT>
 <NOSCRIPT>
<DIV><IMG alt=3D""=20
src=3D"http://secure-uk.imrworldwide.com/cgi-bin/m?ci=3Des-lavozgal&amp;c=
g=3D0&amp;cc=3D1">=20
</DIV></NOSCRIPT><!--OK--></BODY></HTML>

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://media.lavozdegalicia.es/default/2008/03/13/00121205413701711217121/Foto/cabecera_mini.gif

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
hmZ4hmiYhmq4hmzYhm74hj8YBAA7

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.lavozdegalicia.es/img/opinion_fotos/ramon_irigoyen.jpg

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwM
DAwMEAwODxAPDgwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAB9ATwDAREA
AhEBAxEB/8QAHAABAAEFAQEAAAAAAAAAAAAAAAUCAwQGBwgB/8QAUhAAAQMDAQQGAwsGCQsFAAAA
AQIDBAAFERIGEyExBxQiQVFhIzJxFUJSVHKBk6Ox0tMIM0NzkaEWJGKCkrKzw9ElNTdEY3SDosHC
4RcnNDZT/8QAGQEBAQEBAQEAAAAAAAAAAAAAAAECAwQF/8QAKhEBAAICAgEDAgYDAQAAAAAAAAEC
AxEhMRIEMkFCURMiYXGB8CORsdH/2gAMAwEAAhEDEQA/APVNAoFAoFAoFAoFBo3Sb0vbK7AQdU9f
W7u8nMGzMH07p5ZPMNo8Vq+bPKixDzffvyjulW+S1SbfNTYICCQmLDYRI7IPNx51KiT3cMDyrlN3
WuNqty6SOky5KE6Rf7tuGuyndOus8R3+i0J5+VZ/EdPwm4dH/wCVNtbbJrEW/KVd7YjSh3ehIkhs
cCpLmE5WOfpCc+IzXSJcpq9a2S92u+WqNdrVITKt8tGth9HIjkQRzBBBBB4g8DW3JnUCgUCgUCgU
CgUCgUCgUCgUCgUCgUCgUCgUCgUCgg9fy/pn/v1hTX8v6Z/79A1/L+mf+/QNfy/pn/v0DX8v6Z/7
9A1/L+mf+/QNfy/pn/v0DX8v6Z/79BC7ZbTRtmtlbpfZBVot8dbyUqkPJ1rA9GjOvmteEig8ndH2
xlw202oXKv770ktne3V5xRLrz6uIQVnjpQMDFcMt9Pbgx+T0Za9irFHjCKxCZaY98jQMV5nt2r2i
2VhO29DDcdDba1p4JAx2ONJSsvOHTRsILNe2LpDaHU56i2WxwCXUjP7xXfFf4ef1OPfLrP5Ml+kL
g3OyPSStmOlmTDY3q0lO81Je0hCk9nKUZ8zXoh4ru5a/l/TP/fquZr+X9M/9+ga/l/TP/foGv5f0
z/36C25Jbb06i52jhPpZB4/MugrLgAJJWAOZ3z/4lBbMtpPFRdSn4RckAft18KbFSpCEnGXCeeA7
IP2LoPqXQpIUC5g8R6Z/79BT1pvJwXVaeel2QfsXQOst4Scudrikb2Rn9mvNATJbUopBc1DjpLsg
HHzroDchtzOgudk4PpZA4j2roPokILhbBc1jiRvZH268UDrCNSk5dykZPpZHL+nQG30OoC0KWUnk
d8/9+go66xhZ1OYb4LIdkcMfz6bFzfJ0awVlOM5Dz5/76CjrbWpCcu5c4o9JJ+/TY+mU3nGXOenI
dkEZ5c9fjQUrmsoOFF3npHpJPPw9amxcQ8lYyN587sgfaugNvocTqQpZT475/u4fDoKTKbzjLnPT
kOyCM8uevxoLmv5f0z/36Br+X9M/9+gooFAoFAoFAoFBxX8pq+ss2ix2Ja1IFwmdZkY9UsxRyV7X
HEkeyo1WEH0Qz7HZrOty4z2Ir0l519anlhJUM4z7BjFePJPL6eDp2SHIjOxWpMZ5MlhxOtLrPf7K
jrLWNo9tNpIC1Oo2TlPWqP68/WkkDPrbv1sedSYZrMI/bCywNsNk3AQMP+nYWOBbdTyI+ypEtWjh
59bn3zZts3C2yVszWVqTvGVFB0eqRrHHScV7Ky+fkrqXpboS6T/4d7NqceZcRcLaQxOeIAbWs50k
cc6tIyrhzro80ui0QoFBjy/Wj/rR/VNSR8nnDQPvULSpwfyAeNJFyQUdWcJ4pKT8+fD20FlqO+kI
KHNLmhKXEKGocBw7xQXWluuRNWAlwggY5Z5AjyoPkAoMRsJ4aRpWPBQ55+ekClB0z3Ar36E7r2Jz
qH7TQfXk6pkfTzRqKvkkY/eaBD4Ie/WufbSB9QR15wd5bSR+1VBUPzzp7tKR8/aP/WgxWlKYVuk/
p0hTPkr33+NRVaEhKJSRyCv+wVUfVfxRR+Kr/wCRR/6Gin6eJ8hf2Joj4pL0dtSmlhxsHIbUOPE8
goefLhRVc39B+uTSUXX1EI0p9ZZ0jH7z+ygsx8tSVtFOhDnbbHDnyUP+tBSpL0dtSmlhxsHIbUOP
E8goefLhRWZVQoL3VX/i731P4tXQdVf+LvfU/i00HVX/AIu99T+LTQdVf+LvfU/i00HVX/i731P4
tNB1V/4u99T+LTQdVf8Ai731P4tNB1V/4u99T+LTQ5h029EcjbWDHle6K7Mxa2X1ylutMrQpGAsF
St+nQEaDk8eFTSxLk/RTbITcU3F62ou0mRoZtipP5pIQCrHvscRnl3148nb6mD2u1WWZcG5b8dUV
uFIbhtPvw2zqQ065ngg8PCsOuuP5X3dnrvdH2p7V0eiFhSt/GQQW3wR2QsEH1TWogvlis6ZD1jZj
W5SeA3+daANIClc1J8M99ZmGIvtxK99GcO27D7Q7T3eWdEJTvUGQrQh1Wvg2o8/SHA4V0o55bVj9
3beiiTYLvsHarrs7afc+BKa7UWOloBDraih1BJW2pWlwK7RHHn317NPmNu6q/wDF3vqfxaaDqr/x
d76n8Wmg6q/8Xe+p/FpoUrgrXjXEcVjlkMn+9qaBEBSM6Ijic88Bgf3tND4m3qScpiOD2Bn8Wmh9
VAUo5VEcJ5ZIZ5fS00Kuqv8Axd76n8WroUG3lStRiOFXecM5/tamh9MBakhJiulI5DDPD62mh9TD
dSMJjOj2Bn8WmhR7lp+JL/osfiU0KnICnMa4jiscshk/3tNAIKwjQIroR8HDOP7Wmh9EJwYAiugJ
9Xgzw+tpoU+5x4/xNztet2WOPt9LTQqMN0p0mM6U8sYZx/a00PnUFZCuqOak+qcMcPraaAQFBWoR
HAeecM8/paaBcFa8a4rqscshk/3tND6YThUFGK6VJ5HDOR9bTQ+GCtSgoxXSpPJRDOR9bTQCAoK1
CI4Dzzhnn9LTQq6q/wDF3vqfxaug6q/8Xe+p/FpoTNaQoFAoFAoFAoLM2HGnQ34UpAdjSW1Mvtq5
KQ4NKgfaDQeZujG2v7KbV7SbE3FDqWrRP65ai9guKju5DTgUngQpPH215M/b6HpuaunWtcWFfbl1
xxSH5jDa2Ugai4gDHDHgeFcq15eq/UJ6xSkjUy766Sd3449vfW68OObnpYvcs7jCvWzzrEtY6vNf
5Q22Fncs0DZOA86u5xZipN3a7SW08PRJJPZJIWDwrtih5s9/h3v8ma2yYHQ5ZUvoLZkKkSGwoEEt
uvKKFcfhjtDyNemHjl1OqhQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQKBQahtts
REu0mPforYRfbegtpdHAvRidSo6/EZ7SM8leRNc8lNu2DL4S0O5O3NN4Ydhbpa30+ledPZS0R2MY
8RXi2+vh8PqbDbmriVFyTJQ56u7Q2jGCPOm2cnj9K3fH1LcZaA9dzh7E8TRmJcV222VsA2yZ2l2n
dKdky8yxdmGx6Valq0pCSOOkJwpzT2tOcV3wvP6inHk9YW5MBFvjJt4bEBLSBEDGN1udI3e708NO
nGMV6nzmRQKBQKBQKBQKBQa1N25jwri1bpNsnJmvgKZZCWFlQJI4FLxHdWJyL4rtw2uFva3820XB
lj3z2hlaU+at26rApN9GktbbnBucNEyE6Ho7nJQ4cRzBB4g1qJ2jKqhQKBQKBQKCI/hNBXfk2WOh
yRIAJkutjLTOAThxXcTjFZ8udLpL1pCgUCgUCgUCgUCgUCgUCgUHJ+kKXa9mtooq3HD1e6ZS4ANQ
juKV2NZzqSl9WoI4cwRXkzxqdvpek3as/oyxd3TD0tsYWfVcPDHj51yl20qhWx+SoyX1cxu21eAP
rEVa1Hn/AKa9pGL1f27JbT/kqzqKSofpJR4OK89AOPbXrpXTx+pvv8qe6Nvyg7jsdEj2C9RVXOzM
DEZxtWJLDfHsp1dlxAPqhRBHjjAro8j0Jsb0mbFbYMhVkuKHJGnUuC76KSjlnLSsEgZxqTlOe+iN
poFAoFAoFAoFBoO0/wDpLsP6tP8AXcrjb3Q3HTadortbINskddUlW8bU2iLzW8VDAbSnmdWcV0tL
MIro3ss61bPaZqS09JdL+5VzQkpSkBQ7idOazirqFtKTl7Q6HX2IEJ+4vRjpkbnSlCFY1aStwpyc
HknPnWvJNKNndqoN737TbbkaZFOmTEfGlaf/ABnh40rfZMKL5tlarNIbYloka3VBAUGilvu47xeh
BAzx0k1LXiCIYVw6QIcNW99z5j1tBwbkhrDJzyKCrGoZ4Z/ZmpORfFlTNs4KWkKtseRd1rQlwoht
lehKxlO8PvCR73n5VZv/ACmmTs5tPbb/ABlvQ9SVtHS8w4MLQTyzjIwccKtbbJhXd7xEjuJtwDr0
+Ug7qNFxvtHIualFKUAfCUR5UmSIRMW+WzZ/dQplrds8Z9fo5Cih1pSz3uOoUs6j4q+ys+Wv0XSV
vu0kCysF+U2+tAAUSy0taeJwMucGwc9xVWrW0kQj39uI/VmX4FvmXFLiEuOmO3qS1qSFaVrGU6wD
xA5VPNfFI7PbSW2/QzKhFQ0K0OtOABaD3ZAJHEciDVrbaTCUrSFAoFAoFAoFAoLb77Edhx99xLTD
SSt11ZCUpSkZKlE8AAKDhO2v5WGzkFTsPZOEu8SknSic9lmJnHrJH51wA92E57jQci2h6Zuk++Ic
kXC/O2uF63V7f/FUjhjSFI9KrP8AKWaKdEwfu9y2gRdUyZDN5YYUNRLj7qmFEJUFr9ZQxx8BXm9R
p9L0E+MTL0js3s8IVujpnSDPcCQUqVwGjmngM6sDAzWa1dJsiOlXa5Wzuyzz0Y6LjNPVLd5OKHac
/wCGniPOusQxNtQ8xBrBOTnGe13nzPme+ur5yLuiFB0uk4bASkVRZYaUrjnl76ojrWxfT/t5s9Gb
iSXE3mEg8ETSpTyU5yQl8EK459+FYojvnRz0y7MbbHqjWu33oJ1Ktz/NQAypTTnqrA8OCu/GKqN+
oFAoFAoFBoO0/wDpLsP6tP8AXcrjb3Q3HTDvduc2L2jav8BnVaJJ0SWEgej1+slPgDzRj2cuctHj
O/gjl0SHLjTIrUqMsOMPJC21jvBrvEsICFfpFxlTGtnobO4ZcxIuL5KGlve+0oQklw4xxJH2ViLb
6a0ibCiUjpPuokuIceMJJWppBbR+gxhJU4eXnWK+9Z6VdKKErTZUKGpKpeFA8iDimX4SrZdqUIVs
zdQoAgRHzjzDZI/YRXS3SQjOjZCE7GwSlIBWXisjvO+WMn5hWcXtW3aN2RSEbd7SoRwQSFFPdkqz
n9pNZp7pJ6fNj5Ak7c7Suv8A/wApCt0147ptZRw/oIpT3ST0nNuoTUvZS4pc/RNF5CvBTXaGPbjF
byRwlWsSnn3eh0Kf9cNtoGfgIlBKP+QCuf0NfLcdlkIRszaghISOqMHA4cVNgk/OTXWnTMta2DSl
vanaptA0oEkYSOX5x2sY+5as3murBQKBQKBQKBQKDz7+Vdt47EtsLYuC5h65/wAauePiyFYbRxHv
3E54HPZHjQedYcJuNEVLkJ4JGcf4VFWokS4bR32NAaRqU66lDTXdlZwOHz5pLdK7l6J2ZhWq13yV
borO8hxIK7Gw7w7Uk4dmLSfEuKAPkK8Gad2fXjB/jjX3dMtCDEtLcJ1wKVGThkjiVJJwE59p4V2r
1pi0c7h526ZtqlX3bFUKMrVCsQMZvHHMg9p8/wA3gmu1YePPfc6aWhSVt5PAnmnvro8yMvq8tNJA
xqVgfNQX4zI6uhA4FWSfId9EZ8OMjd748jwaT5f+aCb2Nusiz7ZWe4MHS7Hkt5HihStLiePigmg9
t0ZKBQKBQDnHDnQaHeLTtNM2pt933EVpcMJSmNvnF6wFKJ7e6GM6vCuU1ne2ttudie6VqXGusdCQ
+kpfYSveJAzwIWUo48jnHA101tlrOxdp2gsr78EOMzLOXCWlFakuNjPrAaCO0Oac86xSsx+zUyxt
nLVtPYZMm328x37U48XEyHQtS284TkpTp1HSnln5xUrWYJmGVAst2h7aybo0tE5mSylpanXChwD0
ZUrCW9HDRwTVis72b4Nt7VfLrIhpYajtsRHt60446vU4eHApS32ePmaXrMkSl717uyrE/HTDYQ9K
ZeafzIUUtBSdIUCGsr4HOMCtTvSLGxEK7W6zsW6W0zuGAvRJbdUoqKnCrGgoTj1jxzUpExBLBt1p
vUHa66XBhtiQxNIBSp1Ta0DI4/m1A+ypFZidrsvFinwdp0X6xlDkp4aZsBZ0h1PAHSocidIPHvGf
Kk153Btl3Zi8XuCIEyOLVCfUnrjm9S66Ug50I0DSNRHrE/NVmJlHza61T5Gz6rNbWGUQi20gPOOq
BbDSwQkICF54JHHVS1eNESkdmW7kxao8Say231Zlpppxpwr3gQnTqIKEaeXnVqShLDab1btp7tJQ
2w/FuD+pfpFIW2jWo5xuyCcK5Z+es1rMSsy3GujJQKBQKBQKBQKDxr0xyWbv0s36Yh7rDEZxuIzz
wkx2kNuIHseSr56iub3656wqKg4aQr0yhzKk8kj56o6Z0K7PPRUydqHm8vseityPhzX09nH6tJya
45bPZ6bH8ur2eC2Liz1aOktKLbjyQQpHWGvXdxz9MtRzXkrzZ9Clp1qdaj/bL232kGyeyU29pWFT
1HqloB/STXBgKA+A1xI8xmvTSHmzZP7/AH7vMgbKEaCStfrOunmpSuK1HzUok13fPlXGdy4RzAoy
jbpl+4x2hyT2qImFxsNNxx+cf4H9WOKqqs/QkIA8OAoLVq/z9A/3lr+sKD3ZRkoFAoFAoMV9GZjS
vCg+ylKX6Bvv9Y0F5llLTYQn5zQWmWlMFQA1IUcgjnQUtpHXlLAxlNB9mp1bvyVQXnhllY/kn7KC
iGNMZA9v20FDCcSnj40FLLf8cdWefdQXpIBYWD4UFlYKrfg88D9xoMhkYZbH8kfZQWIycSHz4mgy
qBQKBQKBQKBQa10j7axtiti7ntG+3vupNjcsA41uuKCG0knkNSu0e4ZoPFkV1zqaH5BKnVpLz61e
sVrytRJ8c1Gmr2iJIutzaSw2X1lYW2yPfuuqw0j51EVd6IruXpm0RWbZBh2yOS8bcgsJ3fDfzHDm
S586yUjwGa+flu+vjwTP/rbbNHdjtqSFhc6e4WmCjkloY3ih8+UimGnz8umSI3qOnHumfab3X2sT
aoi9Vq2dHV2QPVVLUPTr/mg6R517Kw+XntO3PVA5wn1jyHnW3BkIhuhA09kDiSfGisSJDLl/dK+A
ZQn7xP7DVRmNzUrLstZ0oUcazyS0OQHmTxoEZ56c4CkbuKnx5qoM23JA2gtuOXWW/wCsKD3PRkoF
BE7TRUuWiXIDr7L0aO8tlbDzrOFBGQSG1JCuI98DWbdLCD6N0PTLMi5TJcqTK3rgBdkPKRgDTjd6
tB+cVjF0tm5V1ZW1Iy4lXhQQmzNmv1v66bpcevKed1R+fZT3nj6urh2BwTjhWKxMdrKeScito+YU
M47/ABoPiUYUVHmaD442V48BQfVJWRpzw8aAEFIwnl50BtvSSTzNB90drUOffQfFpK+B4DvoC0ZR
pHKgBK0pAH76A23pye886CugUCgUCgUCgoeeZYZW88tLTLSStxxZCUpSkZJJPAACg8V9Oe3tx212
rkpYkqXs1EcSxbI4Ud2rB0qfLfetZJ0q+DiitO2lldWte7HAv4bT5D33/LUG3dFFlTASm4LA62rH
V0++SVnSVD5KTgVxz2+Hs9Nj+XbrJFiGSd12WFILKnF49Gjk6U47+PA14tbe2Mnlwybxf4+z2yl2
2tIALbQhWNC+/T6JvPyl9r5q9lOXLLPjGvh5nW452luKK3nFFbiz75azqUo+ZJzXd82ZXYKe1vHO
fkKDJlzG0MvPkEpZbK/LI5UETAbcZtUl55Xp5OC4v9bxP7qqPiWm33At/WphBww0lJKcDhqUeWao
nYy292EtDHkRioMqzxHZe09pjR06nnpTKGwfhFxKR9tB7doyUCgj9of8wXL/AHV/+zNS3SwgOi3/
AOpI/XO/bXPF0tkW+5tG3t97lRbo84lyPkOSNJS0FJyV7psNtqUPe9nnzqc+Wl+E/Ytl7nbTcW3b
u+8iWW1MyMhTyCnVr4Oh1HHI4/ZW610zMsDo3mz5KLsJkp2UpmToSt1RVwGeWeXsFZxStly3XFe0
G0N4iyXVs261KSw3GbWprWvK0qcWtBSo+ocJzjHdmrE7k6Rcpq727bONZLPdXo8K4Nb0BeJQaKQ4
SEh7Vw7Hj31mdxbUL8Jvae9XKyWiHEZf63eZzgjsyXEpT2j6zmhI08MgAftz36tOo/VIhlubIw3Y
4DkqYqaBwn9ZeDgV8JI1aB7AMVfBNojZG8zZ7tx2bvTilzIBIEpta2VuNoVpzqRoUMHHHPEHj55p
O+JWYYmyJlMbXXK0XOdKlOR8OwFOSXSktjxTqCVFSVpOCO41Kd6lZ6TF8hKm7SQIcaXKYUUqlXHc
yXkJ3CMIQkICtI1r4dnB4GtWjlIUbSXt6LcLXs7Be6u7Nxvpa1altsJ4dlTmrK16SNSs/tNLW+CI
Y+1VtTa7M9dLRMfZuEUocUtUhx3egHBDiXVKSrgc8ql41HBCjaa5zpWw6b9Fmvw3CyyosMlKUalu
JQvtad5w1HGFUtP5dkdrsDZuXe7FbpFxustCzHaU0iMvQgDQMKXkKUtZ5qJPspFdwbU9H1yuinrt
Z7jIMpy1vaG5CySpQKlA5J44yjIz40xz8Fm5V1ZKBQKCzJmw4u66y+hnfuJZZ3ignW4v1UJzzUe4
UGFcNpbFb5KI0uYht9Zxo5lOe9eM6Bx5qo60wXtG4hItututpcbUFtrGpC0nIIPeDRymHl38o3pN
uFx2hXsnaZaV2SElPugmM5gvSfWKFqHrBsY7PLVnPEcCuMluMTHKMk6taipWcaef7KKsIQq9X1oJ
SVx2PUaPDPHh87iv3VJtpdbl17Z2zGFBai74uXB5anJD55JWeOAPgtjgK8lPfuX0KRqHVbJsulbL
BKyh2QnGTxw2fAeOKlKvTF/GrmvT7tEh69W/ZWNgQbIgSJRHe8saWUe1CO0a9NXz/Udfu5MtwLeD
afWV3/BT/ia28u0xFb3bAxw8iKqsW8j/ACW7k/nlNox49qiMW9IQ3CbbUsp37ycnwxQVxUKQkYJI
TwzQZ7KgCDQbd0ZD/wBz9nD/ALf/ALTVJevajJQKCP2iIGz9zJOB1V7j/wAM1LdLDX+itSTsokAg
lL7gUPA8Dx+Y1zxdLZjak/8AqzjIz1TGPPRn7Kn1nw3muzLRujBST7t4IP8AG88PA5xXHF8tWYcl
y2x9tn+qXIWecUFdxdfCDHXnSUpSlentnOSdQ8u+k68vsvwnYS9m25y5ybwzPvD2G0ul5oq0/wD5
NtoIAT34Az51uNfyyjek6NM6ra71GTq9zXda04zgL0qCj5AtgfPWcsfK1bjAuESfCamxXA5HeTrS
v7QfAjkR3V0iWWqbJxDO2ovW0SU4hPnqsRfc6lJSFrT5ejGD/hXOncy1K1t3H9yLlatqIyCeqOBi
Wkd7Ss/MOBUnPmKZOOSqf2aSZIlXpYIVc16mAcjEVrsscD8IZX/OrdfuktX2/Zah7VWe8zWEyLXg
RpKVo1oGFKPaGCDwcyB5Vzyd7aq2hFq2N6r11EO3dVA1dZDbG7x468YrpqrPKP2+XHVsHLVH07ha
WCzp4DSXkEYHsrOT2rXtL7MEfwatP+5sf2Sa1XpJazsOR/C7aoZ4mRkD2OOf41inctWbzXVgoFBS
4vQgqxnHJI5k+AoOcXdq7Lubj8laV3ggob0HKIrSsHcRchPaIwXHDxUeHAAAZjvU9y+j6XFX3T04
/t70iIgGVEsaUTrm25uX572pbHW1f6syhOVyZGe7kDzNbtZ7b+o1HHX96c1kXTpagMLeRtC/cHZr
DirtZ4jrr3VmPfJmRgA2ynipJSMd4rlMvl2jfM9ruzbUDbS3rZt0B+13yOCesIBctcnT7wqXhcdw
nlxINXkrinJ1HTTLtJcgTH2HklEhGWXIyuBS7qwQryrbzy3Lo7tCjNLgAeVb9EiQvuVMf7LDfsbT
28eyvL6rJqNPX6THFp5dd2WgsyZqYzitXplArUcdhs9tXznhXlpd9i2CYjydPcusO3ldwlqDcK3M
LkvqPINoz9mK9cPJlrxp5MuM+depk7aCbneXF9ckIVz7Z7HzJTgV6IfKt2woaSp1Kz63fRhsC2Sl
lKuVFR121LgslIyQ8Me2qiN2zK1ojx0kJPZUD50JZNmlamg04cOIHM8vb7KCWSw2ScHSR3UG5dE0
RqR0n7OtOALSlx10Z49pplbiT8xRQl61oyUCgwrlabZPSDNitSFNg7suoSvTnnjOfCpMDGtuz9kj
qTIZgR2n050uIaQlQyMHBAHMGnjBta/grs51nT7mRdGM43KP8KnjC7STtugPQxCdjtrhpCUiOpIK
MI9UaeXDHCtaRhW7Z+yx5G/Zgx2nmj6NxDSEqHdwIA7qnjBtq2zkSDtYqXd72wlb4eVHaYxjdIQE
kJOACo9rmrPliudY8uZanhRtzsfs1D2eelxGdzMQptMfQfXUpYGjT38MnxqZKRpay3GKmU3ZYjEv
tytw23Jz2sr0ALz45NdY6YYrOxmzTRUoQUZX+cR2t2f+HnR+6p4Qu0rH7A3GAA3wRjgNPdwrSIXb
EIlwmbIOL11dS2B8Ftshx1z+aE8PMisX+ywm4yUtspaSAkNDQEjlgcv3VtFm4NNyW+qOIS407+cQ
sBSSPMGgjY2w+y8d3fNQG97zCldrB8QlWUj9lZ8IXbMulmtcxO+lxGZDyAEpcdbSs4zy4g+NWYhN
rlstdugNnqcZqPvQC5ukBGrHLOMeNIgYzdisyrg5LVBYMlLm8D27Rr15zq1YznPfTxg2lqoUCgid
o7v1CJpaOJb2QycZ049ZXzA8POtVrt6PTYfO3PUOD9K+30WxwvcVuf1S63VtS5EpJJeZicQst/7d
/BS3n21q9/F9DLeOunOLdHiWMo3TXVNoZiVIW0+y7uLBaXUjU6vepz1hwHVvTwKjzrzvLa22yWfZ
i3yrcypDUgbOPvKECICRcL/IcVnrMx1JytpWOwjljtcq34w74cce63Ff+rk3Z/pPd2gi2+bEVs5a
EfmhGZD8VpOOG9LWR5ca4Xz2iXsrn3H5Z4bGnozkPXW1352Pbb1NgKyHkBUZTqcEbp1Ct4hYxyye
FX8XfbN/w7e/i3w2qB0cbFoZGvZ521qdcL77LGeys9+psnNeXJXbj5+PFdSkomxGysOL1a0QXmXE
ji69kkgnJzvOJ4mrFIjon1eX6paj0qWC7u7DXUQFJYQ0wXLgjtHfxWyFLZSfeatPOutO0zZfKvLz
2/dFPtJSWVoyM8/HjXrfKZtuXGjrS5JWGkYyCeAz3cagpavURKstPa1n1k4P7u6g+yJEZxte7Klj
1iygEqCh4DzoiHlyETt486zuX2wnS26D2Ep7/wBvPwqo+wELYfZmKg6sa0JCVHjnmoA+sD3Gg2Bh
5l9oblRAScIJGFIV8Bef3UV2T8nSzxpW00y6u4U9Ai6GkqGSlby9JWD3EJQR89CXoejJQKD4r1TQ
UsjCMUHw/ndXlQV6hQUNDGrzNBFfwaiJuD86G89b5Ug5fXHKdLnmptxLjefPTms+K7Vt2KKJzcuU
67OktfmnJBSQg+KEIShsHzCc08TaSdTqAPhWkXKDFkQ0ymJLK1KQiQ2poqQcKAWMZSePGkiNsOyt
utDqnGVuyHtG6D8he8WGxyQngAE+QFZrTSzKa5Lz4860ilxGVpVQfVJwngTnu4mg+KBLWDzoKkYC
QPAUFLY7az40FygUCg43t3tFctntr4NsnrTeG7iw++y+pIjutojBJ3a93lDmSs8QlNbrL6Hpsuq6
eSZ+1l6um07m1Lzo905bqnU6khxtCQMJa0LyChKOziuM2289rTMtz6PtqrntHeF7MTwhMa8OiRdZ
bIUiQ/Fho7EDXk6Y50gaQOXCrDeL80/s27bjaq5o2nTuVdXNrQly37jsbrscNIOrjjhnwrhnvO30
6x5Vdp2Vau8rYyz3O5XR2XdLgC87KCQ1wUewgoGUkIHDzrM9beXH7piOIhkpdZM/q8hhBeb/ANZZ
9CpWPEDUK5w3zrbZOoyYpbW1MXpeHBBA7PDuPCt+Onl84niYhgvTHzMw6QotJ5pGnP21mXatIQ+3
KgdgNpHcceoOp/pAf411xOeV5ddt7O5T8kfZXeHlktjaFsusKGWvg1UQd0gohTkbtR0r7vCjMpWy
qPWNHiniaLCu+w0ORnJSTokxU60ODvHek+RqkoyKcRHko7DTjKJSEfAUpeFpHkqiM+aA04JLY0qV
2XB3LQD6qvtHgaDvH5MyiZt7zxKm2ePsUqhLvdGSgUCgUCgUCgUCgUDAoFAwKBigUDAoFAxQKBQK
D//Z

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://media.lavozdegalicia.es/img/logos/lg_confianza.gif

R0lGODlhIAAiAPcAABgAcez20azROmytAFmfAK6N049nu9zqr0UAoe7X/3uzAKyPzNDD4sTbeeTu
vXNDqezl85vEIkgHj8Gs2bnWYfD/j6p1+qWFxrHRSv////H135K/ANvL7l8lnH9Ss0IAiNTkm7uO
/6Z0773pQcu53/r3/1ESlHg7x5df6pXBEdjzkfD/sywAgLKYzd7H/Yq5AFkcmrWV4WYvovz/36OA
z6LHLdjM5+b5rsLabanZH8Kxy7mi0556xJPCAXSvAM/+VWqnAMat5cu45PLp/4BB1ejwxVQXluv/
sM/ii///8XZHrObZ+X68AGMppToAh73Ya///tMjvXOL/eZx7vce03U0Ok+Xc7vT62/Xy+IRTxIdc
tqXFKbbUVdvO6CUAeseZ/9bF3loZlP3l/1sgm7Sa0pfCGfb55WOlANfootbB8MKr3JPTAPP62eHx
q/zz/429AOrd/IO1AEsJkfbt/3xMrqeJyN/U6MnmdOb6s3iwAKjLN72W+K6TzP//5q3NQoFQu4NK
zenxyoHEAL/ZcaTQIrbUWPH22GsxpUEAi2Ipnu/p9t7T7TEAgbyk1M6839bH5ZHABZ3FKzwAiZRt
vnNBqufX/8ev67ab0FgelysAfX9SrlyiAPDe/7vWZJPNAPjk//j/3NHD5L2t3q5/+JfCEFcXoer9
rsXec6vWLc+46///+f//vYlet5nEG/f/5tzqqL+X/QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAAAgACIA
AAj/AN8oGECwoMGDCBPmEYijyKuHECNKnCjRAZKBgTJo3Mixo8ePGQi+AkmyZAZDQICM/LiAh8mP
KFV+LJHJy6KXHWOu7EgJkRFEODnq9FiCUQcZEqpoBNEAiaqSQztOYCRDxhgWYkYQGHAmD9SUOzca
QFS1CqCQLzZsAKKHZFSOlCRU/SBiFZA3eBW8cQvWIx25MqqcSDIg7Vo/fGV2rOOkagegP86k9PRV
MUcrLBJpRpQlAxQpFdx8Shx2o5EqVRN9KCXiiwUELBSBfMuRSibNmjF92I1JDiLZHmlzpMMId9Xj
gZ08Ct4XpBJGMJAfhwHgAXPLHy84YSTBiHcJjCQt/4CZss3LUJPGqJ8UiiSolCtCfMBkwgiM01Wq
GJHBvoR/KlqMYUJ9MAwoCRF9pHREBjvsAMEjE9igiCJWLLLIDiQ8YmEXXUBgoSMTdGgHJwkCsUIC
jVCRQSMkUAEBGRm86MgijmRQRwYXaBQKFqxotEMGbKRkCgoauZiBInXU8YgVF1DBgCN2WLfDAgzY
kAEDGSygSQYzwDeKHVgw0EgJlsQAwRAe0JDBEpMUoAYNamTwRxAxcMABDy3AUuINGfBxSQap7JHG
RpVUopELGsEx2hyV6BCEEBpV8h52GUQhCBMZ9KBCBgIQksEdnXiCRwCo5LBGHxxd0dxGQMQBBBcR
xGfRyRM1ZIDEICm8QAGsbQm1qkY+DLBJA61ocIYfrSCBQSGkBLKJHpCUkdOvJ0VQSAaDZHAACCDU
0IAD2aIBAhKRaOArpUElVkS6QQGhABJmGCLvvPTWa2+9Zhyw0EAp9evvvwAHvFBAADs=

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://lavozdegalicia.ojdinteractiva.com/cgi-bin/ivw/CP/opinion

R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://media.lavozdegalicia.es/img/empty.gif

R0lGODlhAQABAJEAAP///////////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://secure-uk.imrworldwide.com/cgi-bin/m?ci=es-lavozgal&cg=0&cc=1

R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOwA=

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/35C4A72D0A80E0AB015CD9C02FAF6B75/LVDG_estilos_publicidad.css

.interst {
	MARGIN-LEFT: auto; WIDTH: 990px; MARGIN-RIGHT: auto
}
.pub {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/pub.gif) no-repeat =
3px center
}
.mod OBJECT {
	DISPLAY: block! important
}
.a660 .pub {
	WIDTH: 100%
}
DIV > .pub {
	WIDTH: auto! important
}
.a330 .pub {
	PADDING-LEFT: 7px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/pub.gif) no-repeat 7px center
}
.a330 .a200 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 7px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; PADDING-TOP: 11px
}
.mod {
	CLEAR: both; BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; =
PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 7px 0px 7px 11px; =
BORDER-LEFT: 0px; COLOR: #000; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
.p01 {
	WIDTH: 728px; HEIGHT: 90px
}
.p05 {
	WIDTH: 728px; HEIGHT: 90px
}
.p15 {
	OVERFLOW: hidden; WIDTH: 728px; HEIGHT: 50px
}
.p02 {
	WIDTH: 240px; HEIGHT: 90px
}
.p06 {
	WIDTH: 240px; HEIGHT: 90px
}
.m01 {
	WIDTH: 640px; HEIGHT: 50px
}
.m04 {
	WIDTH: 640px; HEIGHT: 50px
}
.m02 {
	WIDTH: 220px; HEIGHT: 90px
}
.p03 {
	WIDTH: 300px
}
.m03 {
=09
}
.m05 {
	WIDTH: 300px; HEIGHT: 90px
}
.m07 {
	WIDTH: 140px; HEIGHT: 140px
}
.p04 {
=09
}
.pubpie {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x =
left bottom
}
.a209 {
	WIDTH: 209px
}
.pubtext {
	MARGIN-RIGHT: 7px! important
}
.enlcs {
	BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BACKGROUND-IMAGE: none! important; =
BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; =
BORDER-RIGHT-WIDTH: 0px
}
.tienda {
	BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BACKGROUND-IMAGE: none! important; =
BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; =
BORDER-RIGHT-WIDTH: 0px
}
.enlcs {
	MARGIN: 7px
}
.enlcs H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; =
PADDING-TOP: 7px
}
.pubcont H2 {
	FONT-WEIGHT: normal; FONT-SIZE: 11px; TEXT-TRANSFORM: uppercase; COLOR: =
#666
}
.pubcont H2 A {
	TEXT-TRANSFORM: none
}
.pubcont H2 .mini {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
FONT-WEIGHT: normal! important; FONT-SIZE: 10px; PADDING-BOTTOM: 0px! =
important; MARGIN: 0px; TEXT-TRANSFORM: none; PADDING-TOP: 0px! =
important
}
.pubcont UL {
	BORDER-TOP-WIDTH: 1px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x left bottom; =
PADDING-BOTTOM: 6px
}
.pubcont .auto {
	BORDER-TOP-WIDTH: 1px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x left bottom; =
PADDING-BOTTOM: 6px
}
.pubcont UL {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; =
PADDING-TOP: 7px
}
.pubcont LI {
	MARGIN-BOTTOM: 7px; FONT: 11px arial, geneva, verdana, helvetica, =
sans-serif; LIST-STYLE-TYPE: none
}
.pubcont LI A {
	DISPLAY: block; TEXT-TRANSFORM: uppercase; COLOR: #c00
}
.pubcont .url {
	FONT-WEIGHT: bolder; TEXT-TRANSFORM: none; COLOR: #134d86
}
.pubcont SPAN.der {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; FONT-WEIGHT: bolder; =
PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.publicidad .cliche {
	FONT-SIZE: 12px; MARGIN: 0px 7px 0px 12px; FONT-FAMILY: georgia, times =
new roman, serif
}
.publicidad .titulillo {
	FONT-SIZE: 11px
}
.publicidad .titulo {
	FONT-WEIGHT: normal; FONT-SIZE: 11px
}
.a330 .publicidad .p04 {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/pubh.gif) no-repeat =
center top; MARGIN: 0px 0px 0px 3px; PADDING-TOP: 10px
}
.a330 .publicidad > .p04 {
	MARGIN: 0px 0px 0px 7px
}
.a330 .publicidad .caja {
	MARGIN-TOP: 0px; MARGIN-LEFT: 0px
}
.a330 .publicidad .mono .img {
	CLEAR: none; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: right; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; BACKGROUND-COLOR: =
#cc0
}
.a330 .publicidad .cxg {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/logos/lg_cxg.gif) no-repeat left =
top; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 30px
}
.a330 .publicidad .cxg A {
	PADDING-RIGHT: 2px; DISPLAY: block; PADDING-LEFT: 2px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x center top; =
PADDING-BOTTOM: 2px; PADDING-TOP: 2px
}
.miva {
	MARGIN-TOP: 17px; MARGIN-BOTTOM: 10px
}
.miva TABLE {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px! important; BORDER-TOP: 0px; =
PADDING-LEFT: 0px! important; PADDING-BOTTOM: 0px! important; MARGIN: =
0px; BORDER-LEFT: 0px; WIDTH: 100%! important; PADDING-TOP: 0px! =
important; BORDER-BOTTOM: 0px
}
.miva TABLE TD {
	PADDING-RIGHT: 4px! important; BORDER-TOP: #ccc 1px solid; =
PADDING-LEFT: 4px! important; PADDING-BOTTOM: 4px! important; FONT: 10px =
"Trebuchet MS", Arial, Verdana; TEXT-TRANSFORM: uppercase! important; =
PADDING-TOP: 4px! important; BORDER-BOTTOM: #ccc 1px solid; =
BACKGROUND-COLOR: #ffffea! important
}
.miva TABLE.mivadd TD {
	BORDER-RIGHT: 0px; BORDER-TOP: 0px; FONT: 12px Arial, Verdana; =
TEXT-TRANSFORM: none! important; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px; =
BACKGROUND-COLOR: #fff! important
}
.miva A.mivadescription {
	COLOR: #134d86! important
}
.miva TABLE.mivadd {
	WIDTH: 100%! important
}
.miva A.mivadir {
	FONT: 10px "Trebuchet MS", Arial, Verdana; COLOR: #134d86; =
TEXT-DECORATION: underline
}
.miva A.mivadir:hover {
	COLOR: #cc3333
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/018559E20A80B1A2007834EB7A15FD5A/LVDG_pie.css

.a157 {
	WIDTH: 157px
}
.pie {
	PADDING-BOTTOM: 40px
}
.enlaces {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 0px
}
.enlaces .mnmenu {
	MARGIN-TOP: 7px; COLOR: #666
}
.mnmenu UL {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: =
inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; =
BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px; LIST-STYLE-TYPE: =
none
}
.mnmenu UL LI.ltit {
	DISPLAY: block; FONT-SIZE: 10px
}
.mnmenu LI.ltit H6 {
	DISPLAY: inline; FONT-WEIGHT: bolder; FONT-SIZE: 10px
}
.mnmenu UL.subl LI {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FONT-WEIGHT: =
normal; FONT-SIZE: 10px; PADDING-BOTTOM: 0px; MARGIN: 2px 4px 0px; =
LINE-HEIGHT: 16px; PADDING-TOP: 0px
}
.mnmenu A {
	TEXT-DECORATION: underline
}
.legal LI {
	LIST-STYLE-TYPE: none; TEXT-ALIGN: right
}
.legal A {
	FONT-WEIGHT: bolder; FONT-SIZE: 10px; TEXT-DECORATION: underline
}
.legal .enlc_rss {
	PADDING-RIGHT: 25px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/icos/rss_ico.gif) no-repeat right =
2px
}
.enlaces H2 .boton {
	MARGIN-TOP: 10px; FONT-SIZE: 10px
}
.copy {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x =
left top; COLOR: #000
}
.copy .a495 .caja IMG {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FLOAT: left; PADDING-BOTTOM: =
4px; PADDING-TOP: 4px
}
.derechos {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x =
left top; FONT: 10px trebuchet ms, lucida grande, tahoma, arial, geneva, =
verdana, helvetica, sans-serif; COLOR: #666
}
.pie UL.comercial {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: right; PADDING-BOTTOM: =
0px; MARGIN: 4px 0px 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.pie UL.comercial LI {
	CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; =
FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 10px/10px =
"trebuchet ms", "lucida grande", tahoma, arial, geneva, verdana, =
helvetica, sans-serif; PADDING-TOP: 0px; HEIGHT: 18px; TEXT-ALIGN: right
}
UL.comercial LI EM {
	CLEAR: left; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; =
FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 3px 0px 0px; WIDTH: 435px; =
PADDING-TOP: 0px; FONT-STYLE: normal; TEXT-ALIGN: right
}
UL.comercial > EM {
	WIDTH: 450px
}
UL.comercial LI A {
	CLEAR: right; FLOAT: right
}
.cmvocento_ico {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/icos/cmvocento.gif) =
no-repeat left top; WIDTH: 60px; HEIGHT: 18px
}
.cvoz_ico {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/icos/cvoz.gif) =
no-repeat left top; WIDTH: 60px; HEIGHT: 18px
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/BC6E26530A80E0AB01A4181C30ACA8D9/LVDG_estilos_cliche_seccion.css

.clisec {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x left bottom; =
PADDING-BOTTOM: 4px; MARGIN: 7px; WIDTH: 100%; PADDING-TOP: 21px; =
POSITION: relative; TEXT-ALIGN: left
}
* > .clisec {
	WIDTH: auto
}
.clisec H1 {
	DISPLAY: inline; FONT: 25px Georgia, "Times New Roman", Times, serif; =
TEXT-TRANSFORM: uppercase; COLOR: #666
}
.utsec {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; RIGHT: 7px; PADDING-BOTTOM: 0px; =
MARGIN: 0px; BOTTOM: 7px; PADDING-TOP: 0px; POSITION: absolute
}
.utsec LI {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.utsec A {
	PADDING-RIGHT: 0px; BACKGROUND-POSITION: 6px center; PADDING-LEFT: =
27px; FONT-SIZE: 13px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; =
BACKGROUND-REPEAT: no-repeat
}
.vol {
	BACKGROUND-IMAGE: url(http://media.lavozdegalicia.es/img/icos/vol.gif)
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1202835993967578199/LVDG_estilos_cliches.css

.elecciones {
	BACKGROUND: =
url(http://media.lavozdegalicia.es/img/cliches/elecciones.gif) =
no-repeat; WIDTH: 225px; HEIGHT: 35px
}
.elecciones SMALL {
	VISIBILITY: hidden
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1205422036720533891/LVDG_estilos_generales_130308.css

BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #fff; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-FAMILY: =
trebuchet ms, lucida grande, tahoma, arial, geneva, verdana, helvetica, =
sans-serif; TEXT-ALIGN: center
}
.maq {
	CLEAR: both; FONT-SIZE: 11px; MARGIN: 0px auto; WIDTH: 992px
}
* > .maq {
	WIDTH: 990px
}
* {
	LINE-HEIGHT: 120%
}
* {
	BORDER-RIGHT: #cfcac0 0px solid; BORDER-TOP: #cfcac0 0px solid; =
BORDER-LEFT: #cfcac0 0px solid; BORDER-BOTTOM: #cfcac0 0px solid
}
A {
	COLOR: #134d86; TEXT-DECORATION: none
}
A:hover {
	TEXT-DECORATION: underline
}
FORM {
	CLEAR: none; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; =
FONT-SIZE: 12px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-TOP: 0px
}
FIELDSET {
	CLEAR: none; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; =
FONT-SIZE: 12px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-TOP: 0px
}
LEGEND {
	CLEAR: none; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; =
FONT-SIZE: 12px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-TOP: 0px
}
SELECT {
	CLEAR: none; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; =
FONT-SIZE: 12px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-TOP: 0px
}
INPUT {
	CLEAR: none; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; =
FONT-SIZE: 12px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-TOP: 0px
}
LABEL {
	CLEAR: none; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; =
FONT-SIZE: 12px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-TOP: 0px
}
LABEL {
	FONT-SIZE: 11px
}
INPUT {
	VERTICAL-ALIGN: middle
}
SELECT {
	VERTICAL-ALIGN: middle
}
INPUT.brd {
	BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: =
1px; VERTICAL-ALIGN: middle; POSITION: relative; BORDER-RIGHT-WIDTH: 1px
}
* > INPUT.brd {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px
}
* INPUT[type=3D'radio'] {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
DIV {
	CLEAR: none; WIDTH: auto; TEXT-ALIGN: left
}
DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
UL {
	CLEAR: left; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 20px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
UL LI {
	FONT-SIZE: 13px; LINE-HEIGHT: 16px
}
OL LI {
	FONT-SIZE: 12px; COLOR: #000; LINE-HEIGHT: 14px; LIST-STYLE-TYPE: =
decimal
}
OL {
	PADDING-LEFT: 0px; MARGIN-LEFT: 24px
}
* > OL {
	PADDING-LEFT: 21px; MARGIN-LEFT: 0px
}
DIV:unknown {
	CLEAR: both; DISPLAY: block; OVERFLOW: hidden; LINE-HEIGHT: 0; content: =
" "
}
DIV:unknown {
	CLEAR: both; DISPLAY: block; OVERFLOW: hidden; LINE-HEIGHT: 0; content: =
" "
}
UL:unknown {
	CLEAR: both; DISPLAY: block; OVERFLOW: hidden; LINE-HEIGHT: 0; content: =
" "
}
UL:unknown {
	CLEAR: both; DISPLAY: block; OVERFLOW: hidden; LINE-HEIGHT: 0; content: =
" "
}
DL:unknown {
	CLEAR: both; DISPLAY: block; OVERFLOW: hidden; LINE-HEIGHT: 0; content: =
" "
}
DL:unknown {
	CLEAR: both; DISPLAY: block; OVERFLOW: hidden; LINE-HEIGHT: 0; content: =
" "
}
H1 {
	DISPLAY: none
}
H2 {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
H3 {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
H4 {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
H5 {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
H6 {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
H2 {
	FONT-SIZE: 21px
}
H3 {
	FONT-SIZE: 17px
}
H4 {
	FONT-SIZE: 14px
}
H5 {
	FONT-SIZE: 12px
}
.sct {
	CLEAR: both; BORDER-TOP: medium none; MARGIN: 0px; WIDTH: 100%; =
PADDING-TOP: 1px
}
.area {
=09
}
.auto {
	WIDTH: 100%
}
* > .auto {
	WIDTH: auto
}
.a50pct {
	WIDTH: 50%
}
.a990 {
	WIDTH: 990px
}
.a660 {
	WIDTH: 660px
}
.a495 {
	WIDTH: 495px
}
.a330 {
	WIDTH: 330px
}
.a247 {
	WIDTH: 247px
}
.a165 {
	WIDTH: 165px
}
.a418 {
	WIDTH: 418px
}
.a242 {
	WIDTH: 242px
}
.a253 {
	WIDTH: 253px
}
.a216 {
	WIDTH: 216px
}
.a209 {
	WIDTH: 209px
}
.a162 {
	WIDTH: 162px
}
.a157 {
	WIDTH: 157px
}
.a153 {
	WIDTH: 153px
}
.a200 {
	WIDTH: 200px
}
.a123 {
	WIDTH: 123px
}
.a235 {
	WIDTH: 235px
}
.a167 {
	WIDTH: 167px
}
.a825 {
	WIDTH: 825px
}
.a143 {
	WIDTH: 143px
}
.brd {
	BORDER-TOP-WIDTH: 1px; BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: =
1px; BORDER-RIGHT-WIDTH: 1px
}
.fnd {
	BACKGROUND: no-repeat right bottom
}
.izq {
	FLOAT: left
}
.der {
	FLOAT: right
}
.absizq {
	DISPLAY: block; Z-INDEX: 1; LEFT: 7px; POSITION: absolute; TOP: 7px
}
.absder {
	DISPLAY: block; Z-INDEX: 1; RIGHT: 7px; POSITION: absolute; TOP: 7px
}
.mrg7 {
	MARGIN: 7px
}
.pdg7 {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; =
PADDING-TOP: 7px
}
.nomr {
	MARGIN: 0px
}
.nopd {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; PADDING-TOP: 0px! important
}
.inl {
	CLEAR: none; BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; =
PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; =
PADDING-TOP: 0px; BORDER-BOTTOM: 0px; LIST-STYLE-TYPE: none; POSITION: =
relative; TEXT-ALIGN: left
}
.blq {
	CLEAR: none; BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; =
PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; =
PADDING-TOP: 0px; BORDER-BOTTOM: 0px; LIST-STYLE-TYPE: none; POSITION: =
relative; TEXT-ALIGN: left
}
.inl {
	DISPLAY: inline
}
.blq {
	DISPLAY: block
}
.inl:unknown {
	DISPLAY: none
}
.inl:unknown {
	DISPLAY: none
}
.blq:unknown {
	DISPLAY: none
}
.blq:unknown {
	DISPLAY: none
}
.no {
	DISPLAY: none
}
.nov {
	DISPLAY: block; VISIBILITY: hidden; FONT: 0px/0px Arial
}
.act .a660 {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y =
right top
}
.act .a660 .noticias {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y =
410px top
}
.not {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x =
left top
}
.crp {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y =
658px top
}
.col2 {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y =
50% top
}
.f_clr {
	BACKGROUND-COLOR: #f8f8f8
}
.caja {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; OVERFLOW: =
hidden; WIDTH: 100%; PADDING-TOP: 7px
}
* > .caja {
	WIDTH: auto
}
.izq .brd {
	MARGIN: 7px 0px 7px 7px
}
.der .brd {
	MARGIN: 7px 7px 7px 0px
}
.menu {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
.menu UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.menu DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.menu DT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.menu DD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
* .pestana {
	BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 5px; PADDING-LEFT: 5px; =
BORDER-LEFT-WIDTH: 1px; BORDER-LEFT-COLOR: #bbb5a6; BACKGROUND: #f4f5f7; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-BOTTOM-COLOR: #bbb5a6; PADDING-BOTTOM: =
0px; MARGIN: 0px; TEXT-TRANSFORM: uppercase; COLOR: #fff; =
BORDER-TOP-COLOR: #bbb5a6; PADDING-TOP: 0px; POSITION: relative; =
BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; BORDER-RIGHT-COLOR: =
#bbb5a6
}
* .off {
	COLOR: #000; BACKGROUND-COLOR: #fff; TEXT-DECORATION: none
}
* .pestana:hover {
	COLOR: #000; BACKGROUND-COLOR: #fff; TEXT-DECORATION: none
}
* A.pestana:hover {
	BACKGROUND-COLOR: #ff6
}
.boton {
	BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 6px; DISPLAY: inline; =
PADDING-LEFT: 6px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 1px; =
FONT-SIZE: 11px; BORDER-LEFT-COLOR: #dcd6c2; BORDER-BOTTOM-WIDTH: 1px; =
BORDER-BOTTOM-COLOR: #8c8266; PADDING-BOTTOM: 2px; CURSOR: pointer; =
COLOR: #134d86; BORDER-TOP-COLOR: #dcd6c2; LINE-HEIGHT: 17px; =
PADDING-TOP: 2px; POSITION: relative; BACKGROUND-COLOR: #fff; =
TEXT-ALIGN: center; BORDER-RIGHT-WIDTH: 1px; TEXT-DECORATION: none; =
BORDER-RIGHT-COLOR: #8c8266
}
.boton:hover {
	COLOR: #c00; TEXT-DECORATION: none
}
.boton:active {
	BORDER-LEFT-COLOR: #8c8266; BORDER-BOTTOM-COLOR: #dcd6c2; =
BORDER-TOP-COLOR: #8c8266; BORDER-RIGHT-COLOR: #dcd6c2
}
INPUT.boton {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
VERTICAL-ALIGN: middle; CURSOR: pointer; PADDING-TOP: 0px
}
INPUT[class=3D'boton'] {
	PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px
}
.mas {
	CLEAR: right; DISPLAY: block; FLOAT: right; MARGIN: 0px 7px 7px; =
TEXT-ALIGN: right
}
* .nav {
	CLEAR: none; MARGIN: 7px 0px 0px; POSITION: relative; TEXT-ALIGN: right
}
* .nav .boton {
	CLEAR: none; TEXT-TRANSFORM: capitalize; BACKGROUND-REPEAT: no-repeat; =
POSITION: relative; HEIGHT: 15px
}
* .nav .ant {
	BACKGROUND-POSITION: left center; PADDING-LEFT: 14px; BACKGROUND-IMAGE: =
url(http://media.lavozdegalicia.es/img/ant.gif)
}
* .nav .sig {
	PADDING-RIGHT: 14px; BACKGROUND-POSITION: right center; =
BACKGROUND-IMAGE: url(http://media.lavozdegalicia.es/img/sig.gif)
}
* .nav .ant {
	BACKGROUND-COLOR: #134d86
}
* .nav .sig {
	BACKGROUND-COLOR: #134d86
}
* .nav .sig:hover {
	BACKGROUND-COLOR: #c00
}
* .nav .ant:hover {
	BACKGROUND-COLOR: #c00
}
.a242 .brd .nav {
	PADDING-RIGHT: 7px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
* > .a242 .brd .nav {
	MARGIN: 0px 0px 7px
}
.cliche {
	CLEAR: left; DISPLAY: block; FONT-WEIGHT: normal; TEXT-TRANSFORM: =
uppercase; FONT-FAMILY: palatino, georgia, times new roman, serif
}
.rot {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 7px; DISPLAY: block; =
PADDING-LEFT: 7px; BORDER-LEFT-WIDTH: 0px; BORDER-LEFT-COLOR: #cfcac0; =
BACKGROUND: #f9f9f7; BORDER-BOTTOM-WIDTH: 1px; BORDER-BOTTOM-COLOR: =
#cfcac0; PADDING-BOTTOM: 0px; FONT: 16px palatino, georgia, times new =
roman, serif; OVERFLOW: hidden; TEXT-TRANSFORM: uppercase; WIDTH: 100%; =
BORDER-TOP-COLOR: #cfcac0; PADDING-TOP: 0px; TEXT-ALIGN: left; =
BORDER-RIGHT-WIDTH: 0px; BORDER-RIGHT-COLOR: #cfcac0
}
* > .rot {
	WIDTH: auto
}
.rot .mini {
	FONT: 10px trebuchet ms, lucida grande, tahoma, arial, geneva, verdana, =
helvetica, sans-serif; TEXT-TRANSFORM: none; COLOR: #a2a2a1; =
PADDING-TOP: 4px
}
.cliche {
	MARGIN: 0px 0px 2px
}
.subcl {
	MARGIN: 0px 0px 2px
}
.cintillo {
	MARGIN: 0px 0px 2px
}
.titulillo {
	MARGIN: 0px 0px 2px
}
.titulo {
	MARGIN: 0px 0px 2px
}
.entradilla {
	MARGIN: 0px 0px 2px
}
.autor {
	MARGIN: 0px 0px 2px
}
.ante {
	MARGIN: 0px 0px 2px
}
.fecha {
	MARGIN: 0px 0px 2px
}
.subcl {
	MARGIN-TOP: -6px; FONT-SIZE: 11px; MARGIN-BOTTOM: 14px; TEXT-TRANSFORM: =
uppercase; POSITION: relative
}
.titulillo {
	DISPLAY: block; FONT-WEIGHT: normal; FONT-SIZE: 16px; TEXT-TRANSFORM: =
uppercase; COLOR: #c00; FONT-STYLE: normal; FONT-FAMILY: georgia, times =
new roman, serif
}
.cargo {
	DISPLAY: block; FONT-WEIGHT: bolder; FONT-SIZE: 11px; COLOR: #9a8f7a; =
FONT-STYLE: normal; FONT-FAMILY: georgia, times new roman, serif
}
.cintillo {
	BACKGROUND-POSITION: left top; DISPLAY: block; MARGIN-BOTTOM: 3px; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 35px
}
.titulillo SPAN {
	DISPLAY: none
}
.cintillo SPAN {
	DISPLAY: none
}
.cargo SPAN {
	DISPLAY: none
}
.titulo {
	FONT-WEIGHT: normal; FONT-SIZE: 17px
}
.prime .titulo {
	FONT-WEIGHT: normal; FONT-SIZE: 21px
}
.entradilla {
	FONT-WEIGHT: normal; FONT-SIZE: 14px; MARGIN-BOTTOM: 7px; COLOR: #666; =
FONT-FAMILY: georgia, times new roman, serif
}
.entradilla:unknown {
	DISPLAY: none; content: ""
}
.entradilla:unknown {
	DISPLAY: none; content: ""
}
.fecha {
	MARGIN-TOP: -2px; FONT-SIZE: 11px; BORDER-BOTTOM-WIDTH: 1px
}
.autor {
	DISPLAY: block; FONT-WEIGHT: bolder; TEXT-TRANSFORM: capitalize; =
FONT-STYLE: normal
}
.not {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
7px; MARGIN: 0px 7px; WIDTH: 100%; PADDING-TOP: 12px; POSITION: relative
}
* > .not {
	WIDTH: auto
}
.not .rot {
	BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 4px; PADDING-LEFT: 4px; =
BORDER-LEFT-WIDTH: 1px; BORDER-LEFT-COLOR: #ccc; BACKGROUND: #eceae6; =
BORDER-BOTTOM-WIDTH: 1px; BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: =
4px; MARGIN: 0px 1px; FONT: bolder 13px georgia, times new roman, serif; =
COLOR: #c00; BORDER-TOP-COLOR: #ccc; PADDING-TOP: 4px; TEXT-ALIGN: =
center; BORDER-RIGHT-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc
}
.rel LI {
	MARGIN-TOP: 0px; LIST-STYLE-IMAGE: =
url(http://media.lavozdegalicia.es/img/f_dot_rel.gif); MARGIN-BOTTOM: =
4px; COLOR: #000; FONT-FAMILY: georgia, times new roman, serif
}
.not UL:unknown {
	DISPLAY: none
}
.not UL:unknown {
	DISPLAY: none
}
.not UL LI:unknown {
	DISPLAY: none
}
.not UL LI:unknown {
	DISPLAY: none
}
.ico {
	PADDING-LEFT: 4px
}
* > .ico {
	PADDING-LEFT: 0px; MARGIN-LEFT: 4px
}
.op {
	LIST-STYLE-IMAGE: url(http://media.lavozdegalicia.es/img/icos/op.gif)! =
important
}
.op EM {
	COLOR: #cc0000
}
.dc {
	LIST-STYLE-IMAGE: url(http://media.lavozdegalicia.es/img/icos/dc.gif)! =
important
}
.ft {
	LIST-STYLE-IMAGE: url(http://media.lavozdegalicia.es/img/icos/ft.gif)! =
important
}
.vd {
	LIST-STYLE-IMAGE: url(http://media.lavozdegalicia.es/img/icos/vd.gif)! =
important
}
.pdf {
	LIST-STYLE-IMAGE: url(http://media.lavozdegalicia.es/img/icos/pdf.gif)! =
important
}
.a418 .not {
	MARGIN-RIGHT: 14px
}
.gran {
	BACKGROUND-IMAGE: none; BACKGROUND-COLOR: #fff
}
.gran .titulo {
	FONT-WEIGHT: normal; FONT-SIZE: 29px
}
.gran .entradilla {
	FONT-SIZE: 16px; COLOR: #000
}
.a418 .titulo {
	FONT-WEIGHT: normal; FONT-SIZE: 21px
}
.a418 .entradlla {
	FONT-SIZE: 12px
}
.a418 .prime .titulo {
	FONT-SIZE: 29px
}
.a253 .titulo {
	FONT-WEIGHT: bolder; FONT-SIZE: 14px
}
.a209 .titulo {
	FONT-WEIGHT: bolder; FONT-SIZE: 14px
}
.a165 .titulillo {
	FONT-WEIGHT: normal; FONT-SIZE: 10px
}
.a165 .titulo {
	FONT-SIZE: 11px
}
.a242 .not {
	MARGIN-LEFT: 0px; MARGIN-RIGHT: 7px
}
.a242 .brd .not {
	MARGIN-LEFT: 7px
}
IMG {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: block; =
PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; =
PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
.img {
	CLEAR: none; OVERFLOW: hidden; POSITION: relative; TEXT-ALIGN: left
}
.img .brd {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 1px; DISPLAY: block; =
PADDING-LEFT: 1px; BORDER-LEFT-WIDTH: 0px; Z-INDEX: 100; =
BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: =
1px; POSITION: relative; BORDER-RIGHT-WIDTH: 0px
}
* > .der .brd {
	MARGIN-LEFT: 3px
}
* > .izq .brd {
	MARGIN-RIGHT: 3px
}
.img .relimg {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
7px; MARGIN: 0px 3px; PADDING-TOP: 0px
}
.img .autor {
	CLEAR: right; FLOAT: right; MARGIN: 0px; FONT: 9px georgia, times new =
roman, serif; OVERFLOW: hidden; TEXT-TRANSFORM: capitalize; WIDTH: 30%; =
TEXT-ALIGN: right
}
.img .piefoto {
	CLEAR: left; FLOAT: left; WIDTH: 68%
}
.i642 IMG {
	WIDTH: 642px
}
.i459 IMG {
	WIDTH: 459px
}
.i395 IMG {
	WIDTH: 395px
}
.i390 IMG {
	WIDTH: 390px
}
.i316 IMG {
	WIDTH: 316px
}
.i306 IMG {
	WIDTH: 300px
}
.i300 IMG {
	WIDTH: 300px
}
.i231 IMG {
	WIDTH: 231px
}
.i154 IMG {
	WIDTH: 154px
}
.i149 IMG {
	WIDTH: 149px
}
.i146 IMG {
	WIDTH: 146px
}
.i143 IMG {
	WIDTH: 143px
}
.i124 IMG {
	WIDTH: 124px
}
.i100 IMG {
	WIDTH: 100px
}
.i75 IMG {
	WIDTH: 75px
}
.i63 IMG {
	WIDTH: 63px
}
.i45 IMG {
	WIDTH: 45px
}
.i35 IMG {
	WIDTH: 35px
}
.a510 {
	WIDTH: 510px
}
.a400 {
	WIDTH: 400px
}
.a310 {
	WIDTH: 310px
}
.a150 {
	WIDTH: 150px
}
.notv04 .titulo {
	CLEAR: both
}
.not .img {
	CLEAR: both
}
.not .der {
	CLEAR: right
}
.not .izq {
	CLEAR: left
}
.not .i231 {
	WIDTH: 233px
}
.not .i316 {
	WIDTH: 316px
}
.nopd .prime {
	BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium =
none; BORDER-BOTTOM: medium none
}
.nopd .prime .titulillo {
	FONT-WEIGHT: normal; COLOR: #000
}
.nopd .img .lrg {
	MARGIN: 0px 0px 1px; WIDTH: 100%
}
.nopd H2.cliche {
	COLOR: #c00
}
.nopd H2.cliche {
	FONT-SIZE: 17px; MARGIN: 2px 7px
}
.a165 H2.cliche {
	MARGIN: 2px 0px
}
.nopd .subcl {
	MARGIN-LEFT: 7px; MARGIN-RIGHT: 7px
}
.mdt {
	MARGIN-RIGHT: 7px
}
.a660 .md7 {
	MARGIN-RIGHT: 7px
}
.mi7 {
	MARGIN-LEFT: 7px
}
.a660 .mi7 {
	MARGIN-LEFT: 7px
}
.pd7 {
	PADDING-RIGHT: 7px
}
.pi7 {
	PADDING-LEFT: 7px
}
.a242 .brd .not {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px 7px; PADDING-TOP: =
0px
}
.a242 .brd .rel {
	MARGIN-TOP: 0px; PADDING-TOP: 0px
}
.a242 .brd .nav {
	MARGIN: 7px 0px
}
.a330 .caja {
	MARGIN-LEFT: 7px
}
.a330 .brd {
	MARGIN-LEFT: 7px
}
.a323 .caja {
	MARGIN-LEFT: 7px
}
.a323 .brd {
	MARGIN-LEFT: 7px
}
.a330 .cliche {
	FONT-SIZE: 17px; COLOR: #666
}
.a330 .brd {
	BACKGROUND: #fff
}
.a330 .brd .auto {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.a330 .brd .i75 .brd {
	MARGIN: 0px
}
.cint_idnot_184 {
	BACKGROUND-IMAGE: =
url(http://media.lavozdegalicia.es/img/cintillos/cint_idnot_184.jpg)
}
.links {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; BACKGROUND: =
#eceae6; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 100%; PADDING-TOP: =
0px; LIST-STYLE-TYPE: none; POSITION: relative
}
* > .links {
	WIDTH: auto
}
.links LI {
	PADDING-RIGHT: 0px; DISPLAY: block! important; PADDING-LEFT: 7px; =
FLOAT: left; PADDING-BOTTOM: 4px; MARGIN: 0px; WIDTH: 151px; =
PADDING-TOP: 4px; LIST-STYLE-TYPE: none; POSITION: relative
}
.links > LI {
	WIDTH: 144px
}
.links EM {
	DISPLAY: inline! important; FONT-WEIGHT: bolder; COLOR: #c00; =
FONT-STYLE: normal
}
.subcliche {
	TEXT-TRANSFORM: uppercase; BACKGROUND-COLOR: #fff
}
H3.subcliche {
	PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; FONT: =
24px/28px palatino, georgia, times new roman, serif; COLOR: #666; =
MARGIN-RIGHT: 3px; PADDING-TOP: 6px
}
H3.cliche {
	PADDING-TOP: 7px
}
H4.subcliche {
	MARGIN: 6px; FONT: 18px/22px palatino, georgia, times new roman, serif; =
COLOR: #000
}
H5.subcliche {
	MARGIN: 6px; FONT: bold 14px/18px trebuchet ms, lucida grande, tahoma, =
arial, geneva, verdana, helvetica, sans-serif
}
.rvoz {
	COLOR: #c00! important
}
.caja .subcliche {
	PADDING-LEFT: 0px
}
.col3 .a253 .subcliche {
	MARGIN-LEFT: 17px
}
.col3 .a418 H4.subcliche {
	PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; MARGIN: 0px =
8px; PADDING-TOP: 6px
}
.col2c12 .a418 .subcliche {
	MARGIN-LEFT: 14px
}
.col3 .a253 .caja .subcliche {
	MARGIN-LEFT: 0px
}
.g {
	MARGIN-LEFT: 7px
}
.clear {
	CLEAR: both; DISPLAY: block; FONT-SIZE: 1px; LINE-HEIGHT: 1px
}
.a330 .galego {
	BORDER-RIGHT: #fff 0.8em solid; PADDING-RIGHT: 0px! important; =
BORDER-TOP: #fff 0.8em solid; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px; BORDER-LEFT: #fff 0.8em =
solid; PADDING-TOP: 0px! important; BORDER-BOTTOM: #fff 0.8em solid; =
BACKGROUND-COLOR: #eceae6
}
.a330 .galego H4 {
	BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; =
BORDER-LEFT-WIDTH: 1px; BORDER-LEFT-COLOR: #ccc; BORDER-BOTTOM-WIDTH: =
0px; BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 0.1em; COLOR: #cc0000; =
BORDER-TOP-COLOR: #ccc; PADDING-TOP: 0.3em; LETTER-SPACING: normal; =
BORDER-RIGHT-WIDTH: 1px; BORDER-RIGHT-COLOR: #ccc
}
.a330 .galego H4 EM {
	PADDING-LEFT: 0.2em; COLOR: #369; FONT-STYLE: normal
}
.a330 .galego P {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; =
BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; PADDING-BOTTOM: 0.5em; =
MARGIN: 0px; PADDING-TOP: 0.5em; BORDER-RIGHT-WIDTH: 1px
}
.der .video {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.a253 .video {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.actualidad .a242 .video {
	PADDING-LEFT: 7px
}
.actualidad .a253 .video {
	PADDING-LEFT: 7px
}
.a242 .video OBJECT {
	WIDTH: 234px; HEIGHT: 194px
}
.a253 .video OBJECT {
	WIDTH: 234px; HEIGHT: 194px
}
.a242 .nopd .video {
	PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; =
PADDING-TOP: 1px
}
.a242 .nopd .video OBJECT {
	WIDTH: 231px; HEIGHT: 192px
}
.a165 .video {
	MARGIN-BOTTOM: 7px
}
.a165 .video OBJECT {
	WIDTH: 160px; HEIGHT: 133px
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/4914AF6D0A80B1A100E6A73D7E2305B3/LVDG_estilos_capa_transparente.css

.ftrans {
	DISPLAY: block; Z-INDEX: 5000; BACKGROUND: none transparent scroll =
repeat 0% 0%; FILTER: alpha(opacity=3D60); LEFT: 0px; WIDTH: 100%; =
POSITION: absolute; TOP: 0px; HEIGHT: 1200%; opacity: 0.6; -moz-opacity: =
0.6
}
* > .ftrans {
	POSITION: fixed; HEIGHT: 100%
}
.porter {
	Z-INDEX: 5001; LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 0px; =
TEXT-ALIGN: center
}
* > .porter {
	POSITION: fixed
}
.spok {
	BORDER-RIGHT: #ccc 4px solid; BORDER-TOP: #ccc 4px solid; Z-INDEX: =
5002; MARGIN: 4% auto; BORDER-LEFT: #ccc 4px solid; WIDTH: 440px; =
BORDER-BOTTOM: #ccc 4px solid; BACKGROUND-COLOR: #fff
}
.arrstr {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
#ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid
}
.arrstr H2 {
	PADDING-RIGHT: 2px; PADDING-LEFT: 7px; PADDING-BOTTOM: 4px; MARGIN: =
0px; FONT: bolder 15px georgia, times new roman, serif; OVERFLOW: =
hidden; TEXT-TRANSFORM: capitalize; COLOR: #666; PADDING-TOP: 4px
}
.arrstr EM {
	FONT-STYLE: normal
}
.arrstr H2 .cerrar {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 1px; =
RIGHT: 4px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_aspa.gif) no-repeat center =
center; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 11px; =
LINE-HEIGHT: 1px; PADDING-TOP: 0px; POSITION: absolute; TOP: 4px; =
HEIGHT: 11px
}
.contrans {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; FONT: =
12px/17px arial, tahoma, geneva, helvetica, sans-serif; OVERFLOW: auto; =
MAX-HEIGHT: 400px; PADDING-TOP: 7px; HEIGHT: auto
}
.contrans H3 {
	FONT-SIZE: 13px
}
.contrans UL {
	FONT: 12px/17px arial, tahoma, geneva, helvetica, sans-serif
}
.contrans LI {
	FONT: 12px/17px arial, tahoma, geneva, helvetica, sans-serif
}
.contrans DL {
	MARGIN-TOP: 14px
}
.contrans DD {
	MARGIN-TOP: 4px; MARGIN-BOTTOM: 14px
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/76E596D70A80B1A100AE997B308D7528/LVDG_estilos_localizador.css

.a660 DL.localizador {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 7px =
0px; COLOR: #000; PADDING-TOP: 0px
}
.a660 DL.localizador DT.si {
	DISPLAY: inline; LIST-STYLE-TYPE: none
}
.a660 DL.localizador DD {
	DISPLAY: inline; LIST-STYLE-TYPE: none
}
.a660 DL.localizador DD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 6px; FONT-SIZE: 11px; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 0px 6px; BORDER-LEFT: #000 1px solid; LINE-HEIGHT: =
11px; PADDING-TOP: 0px; FONT-FAMILY: georgia, times new roman, serif
}
.a660 DL.localizador DT.si {
	FONT-WEIGHT: bolder
}
.a660 DL.localizador DD.firma {
	FONT-WEIGHT: bolder
}
.a660 DL.localizador DD.autor {
	FONT-WEIGHT: bolder
}
.a660 DL.localizador DD.firma {
	PADDING-LEFT: 0px; MARGIN-LEFT: 0px; BORDER-LEFT: 0px
}
.a660 DL.localizador DD.autor {
	PADDING-LEFT: 0px; MARGIN-LEFT: 0px; BORDER-LEFT: 0px
}
.a660 DL.localizador .firma EM {
	FONT-WEIGHT: normal; COLOR: #666; FONT-STYLE: normal
}
.a660 DL.localizador .firma {
	TEXT-TRANSFORM: capitalize
}
.a660 DL.localizador .localizacion {
	TEXT-TRANSFORM: capitalize
}
.a660 DL.localizador .localizacion {
	BORDER-RIGHT: #000 0px solid; PADDING-RIGHT: 0px; BORDER-TOP: #000 0px =
solid; PADDING-LEFT: 6px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 6px; =
BORDER-LEFT: #000 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #000 0px =
solid
}
.a660 DL.localizador .fecha {
	BORDER-RIGHT: #000 0px solid; PADDING-RIGHT: 0px; BORDER-TOP: #000 0px =
solid; PADDING-LEFT: 6px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 6px; =
BORDER-LEFT: #000 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #000 0px =
solid
}
.a660 DL.localizador DD A {
	TEXT-DECORATION: underline
}
.a660 DL.localizador DD.trackback A {
	COLOR: #c00
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/0A4C9CFB0A80E0AB00FE0FD9F02D7131/LVDG_estilos_humor.css

.humor {
	BORDER-RIGHT: 0px double; PADDING-RIGHT: 0px; BORDER-TOP: 3px double; =
PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; BORDER-LEFT: 0px double; =
PADDING-TOP: 7px; BORDER-BOTTOM: 3px double
}
.humor H2.cliche {
	FONT-SIZE: 16px
}
.humor .ctlg {
	MARGIN-RIGHT: 0px
}
.humor .img .brd {
	PADDING-BOTTOM: 7px
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/099AA52B0A80E0AB00FE0FD9C9198E25/LVDG_estilos_opinion.css

.act .noticias {
	BORDER-BOTTOM-WIDTH: 1px
}
.noticias .not {
	BACKGROUND-POSITION: left top
}
.noticias .not .titulo {
	MARGIN-TOP: 7px; FONT-WEIGHT: normal; FONT-SIZE: 20px; FONT-STYLE: =
italic
}
.noticias .not .titulo A {
	DISPLAY: block; MARGIN: 7px 0px
}
.noticias H2.cliche {
	FONT: 16px palatino, georgia, times new roman, serif; COLOR: #000
}
.noticias .a418 H2.cliche {
	MARGIN-LEFT: 7px
}
.noticias .a418 {
	OVERFLOW: hidden
}
.noticias .not .firma {
	MARGIN: 0px; FONT: 12px georgia, times new roman, serif; =
TEXT-TRANSFORM: uppercase; COLOR: #988f78
}
.noticias .img .brd {
	MARGIN-BOTTOM: 14px; MARGIN-RIGHT: 14px
}
.noticias .a242 .not {
	OVERFLOW: hidden; WIDTH: 100%
}
* > .noticias .a242 .not {
	WIDTH: auto
}
.noticias .a242 .not .titulo {
	FONT-SIZE: 18px
}
.links {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; BACKGROUND: #eceae6; =
PADDING-BOTTOM: 0px; MARGIN: 90px 0px 0px; PADDING-TOP: 0px; TEXT-ALIGN: =
left
}
.links LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: =
0px; MARGIN: 0px; COLOR: #134d86; PADDING-TOP: 0px; LIST-STYLE-TYPE: =
none
}
.links LI A {
	FONT-WEIGHT: bolder; COLOR: #c00; FONT-STYLE: normal
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/B2CC47C00A80E0AB00B113C7912EC5AE/LVDG_estilos_piezas_opiniones.css

.a660 .coment {
	FONT-FAMILY: georgia, times new roman, serif
}
.a660 .coment LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; FONT: 11px =
trebuchet ms, lucida grande, tahoma, arial, geneva, verdana, helvetica, =
sans-serif; MARGIN-LEFT: 7px; COLOR: #000; PADDING-TOP: 7px; =
LIST-STYLE-TYPE: none
}
.a660 .coment LI * {
	FONT-FAMILY: georgia, times new roman, serif
}
.a660 .coment H4 {
	FONT-SIZE: 18px
}
.a660 .coment H3 {
	FONT-SIZE: 12px; COLOR: #660; POSITION: relative
}
.a660 .coment H3 EM {
	FONT-WEIGHT: normal; LEFT: -37px; WIDTH: 30px; FONT-STYLE: normal; =
POSITION: absolute; TEXT-ALIGN: right
}
.a660 .coment .localizador {
	MARGIN-TOP: 4px; FONT-SIZE: 11px
}
.a660 .coment P {
	FONT-SIZE: 12px; MARGIN: 4px 0px; COLOR: #666; LINE-HEIGHT: 150%
}
.a660 .coment P A {
	TEXT-DECORATION: underline
}
.a660 .coment P A:hover {
	COLOR: #cc0000
}
.a660 .coment A.opina {
	PADDING-LEFT: 24px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/icos/op.gif) no-repeat 4px 0px; =
FONT: 11px trebuchet ms, lucida grande, tahoma, arial, geneva, verdana, =
helvetica, sans-serif
}
.a660 .coment .navopi {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x left top; =
PADDING-BOTTOM: 0px; MARGIN: 7px 0px; PADDING-TOP: 0px; POSITION: =
relative; TEXT-ALIGN: left
}
.a660 .coment .sup {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x =
left bottom
}
.a660 .coment .navopi {
	FONT: 12px trebuchet ms, lucida grande, tahoma, arial, geneva, verdana, =
helvetica, sans-serif
}
.a660 .coment .navopi H2.cliche {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: =
0px; FONT: 21px georgia, times new roman, serif; PADDING-TOP: 5px
}
.a660 .coment .navopi .nav {
	DISPLAY: block; RIGHT: 0px; POSITION: absolute; TOP: -7px
}
* > .a660 .coment .navopi .nav {
	TOP: 0px
}
.a660 .coment .navopi P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; FONT: 15px/15px georgia, times new roman, serif; COLOR: #333; =
PADDING-TOP: 5px
}
.a660 .coment .navopi P EM {
	FONT-WEIGHT: bolder; COLOR: #c00; FONT-STYLE: normal
}
.a660 .coment .navopi .nav .boton {
	TEXT-TRANSFORM: capitalize
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1191926985177370/LVDG_estilos_enviar_noticia.css

.contrans .noticia {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; =
PADDING-TOP: 7px; BACKGROUND-COLOR: #f8f2eb
}
.contrans .noticia .titulo {
	FONT-WEIGHT: bolder; FONT-SIZE: 13px
}
.contrans .noticia .titulo EM {
	FONT-SIZE: 11px
}
.contrans .noticia .entradilla {
	FONT-SIZE: 11px
}
#enviar_popup FORM {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; MARGIN: 0px =
7px; WIDTH: 100%; PADDING-TOP: 7px; POSITION: relative
}
* > #enviar_popup FORM {
	WIDTH: auto
}
#enviar_popup FIELDSET {
	CLEAR: both; DISPLAY: block; PADDING-BOTTOM: 14px; POSITION: relative
}
#enviar_popup LEGEND {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; LEFT: -7px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: bolder 13px georgia, times new =
roman, times, serif; PADDING-TOP: 0px; POSITION: relative
}
* > #enviar_popup LEGEND {
	LEFT: 0px
}
#enviar_popup LABEL {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; FONT: 12px trebuchet ms, tahoma, geneva, helvetica, sans serif; =
WIDTH: auto; PADDING-TOP: 3px
}
#enviar_popup INPUT {
	CLEAR: both; DISPLAY: block; FONT-SIZE: 12px; MARGIN: 0px
}
#enviar_popup TEXTAREA {
	CLEAR: both; DISPLAY: block; FONT-SIZE: 12px; MARGIN: 0px
}
* > #enviar_popup INPUT {
	MARGIN: 5px 0px 0px
}
* > #enviar_popup TEXTAREA {
	MARGIN: 5px 0px 0px
}
.t223 {
	WIDTH: 223px
}
.t148 {
	WIDTH: 148px
}
#enviar_popup FORM EM {
	COLOR: #c00; FONT-STYLE: normal
}
#enviar_popup EM.der {
	FONT-SIZE: 10px; RIGHT: 0px; POSITION: absolute; TOP: 4px
}
#enviar_popup TEXTAREA {
	WIDTH: 100%; HEIGHT: 43px
}
#enviar_ok_popup H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; MARGIN: 0px =
7px; FONT: bolder 14px georgia, times new roman, times, serif; COLOR: =
#c00; PADDING-TOP: 7px
}
#enviar_ok_popup P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; MARGIN: 0px =
7px; FONT: 13px/19px trebuchet ms, tahoma, geneva, helvetica, sans =
serif; PADDING-TOP: 7px
}
#enviar_error_popup H3 {
	BORDER-RIGHT: #e3e2dd 1px solid; PADDING-RIGHT: 7px; BORDER-TOP: =
#e3e2dd 1px solid; DISPLAY: block; PADDING-LEFT: 70px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/icos/error_enviar.gif) #ffc =
no-repeat 14px 14px; PADDING-BOTTOM: 14px; MARGIN: 21px 7px 14px; FONT: =
bolder 14px/21px georgia, times new roman, times, serif; BORDER-LEFT: =
#e3e2dd 1px solid; COLOR: #c00; PADDING-TOP: 7px; BORDER-BOTTOM: #e3e2dd =
1px solid
}
#enviar_error_popup P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; MARGIN: 0px =
7px; FONT: 13px/19px trebuchet ms, tahoma, geneva, helvetica, sans =
serif; PADDING-TOP: 7px
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1205422220475162240/LVDG_estilos_sector_cabecero_mini_130308.css

.cab {
	BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN-BOTTOM: 0px; BORDER-LEFT: =
0px; BORDER-BOTTOM: 0px
}
* > .cab {
	WIDTH: 992px
}
.cab .serv {
	CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; =
FONT-SIZE: 11px; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 100%; =
PADDING-TOP: 14px
}
.cab serv .idiom {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.cab .serv .idiom .pestana {
	BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 7px; MARGIN-TOP: 13px; DISPLAY: =
block; PADDING-LEFT: 7px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 1px; =
BACKGROUND: #fff; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 4px; =
TEXT-TRANSFORM: none; COLOR: #134d86; PADDING-TOP: 4px; =
BORDER-RIGHT-WIDTH: 1px
}
.cab .serv .idiom .pestana:hover {
	TEXT-DECORATION: underline
}
.cab .serv .ed_imp {
	PADDING-RIGHT: 100px; FONT-SIZE: 10px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_verimp.gif) no-repeat right =
top; LINE-HEIGHT: 10px; PADDING-TOP: 22px
}
.cab .serv .ed_imp STRONG {
	FONT-WEIGHT: normal; TEXT-TRANSFORM: uppercase; COLOR: #666
}
.cab .serv .ed_imp A {
	FONT-WEIGHT: bolder; MARGIN: 0px 3px
}
.panel {
	BORDER-TOP-WIDTH: 1px; CLEAR: both; BORDER-LEFT-WIDTH: 1px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_rayas.gif) #fff repeat-x left =
top; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; WIDTH: 100%; POSITION: =
relative; HEIGHT: 65px; TEXT-ALIGN: left; BORDER-RIGHT-WIDTH: 1px
}
* > .panel {
	WIDTH: auto
}
.cabecera {
	CLEAR: none; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 20px; =
FLOAT: left; PADDING-BOTTOM: 0px; CURSOR: pointer; PADDING-TOP: 10px
}
* > .cabecera {
=09
}
.panel .hoy {
	CLEAR: none; PADDING-RIGHT: 220px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; WIDTH: auto; PADDING-TOP: 15px; FONT-FAMILY: georgia, times new =
roman, serif; TEXT-ALIGN: right
}
.panel .hoy STRONG {
	CLEAR: both; DISPLAY: block
}
.panel .hoy SPAN.hora {
	CLEAR: both; DISPLAY: block
}
.panel .hoy .hora {
	COLOR: #666; FONT-FAMILY: trebuchet ms, lucida grande, geneva, tahoma, =
arial, helvetica, sans-serif
}
.panel .hoy .hora EM {
	FONT-WEIGHT: bolder; COLOR: #ba1617; FONT-STYLE: normal
}
.busca {
	RIGHT: 14px; WIDTH: 180px; POSITION: absolute; TOP: 14px
}
.busca FIELDSET {
	DISPLAY: block
}
.busca .nostrum {
	PADDING-RIGHT: 44px; MARGIN-LEFT: 6px
}
.busca .google {
	PADDING-RIGHT: 44px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/logos/lg_google.gif) no-repeat =
right top; PADDING-BOTTOM: 0px; MARGIN-LEFT: 6px
}
.busca INPUT.brd {
	MARGIN: 0px 0px 4px; WIDTH: 120px
}
.busca .boton {
	RIGHT: 0px; POSITION: absolute; TOP: 0px
}
.indx {
	BORDER-LEFT-COLOR: #bbb5a6; BORDER-BOTTOM-COLOR: #bbb5a6; =
BORDER-TOP-COLOR: #bbb5a6; BORDER-RIGHT-COLOR: #bbb5a6
}
.indx * {
	BORDER-LEFT-COLOR: #bbb5a6; BORDER-BOTTOM-COLOR: #bbb5a6; =
BORDER-TOP-COLOR: #bbb5a6; BORDER-RIGHT-COLOR: #bbb5a6
}
.indx {
	BORDER-TOP-WIDTH: 0px; CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; =
PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 1px; FONT-SIZE: 11px; =
BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 7px; MARGIN: 0px; PADDING-TOP: =
0px; POSITION: relative; BORDER-RIGHT-WIDTH: 1px
}
.indx H4 {
	DISPLAY: inline; FONT-WEIGHT: normal; FONT-SIZE: 13px; LINE-HEIGHT: =
20px
}
.indx > H4 {
	LINE-HEIGHT: 21px
}
.indx UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.indx LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.indx .menu {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_cabecero_gris.gif) =
repeat-x left top; WIDTH: 100%
}
.indx LI {
	DISPLAY: inline
}
.indx .inl {
	DISPLAY: inline
}
.indx .mg_inf {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 1px; =
BACKGROUND: url(http://media.lavozdegalicia.es/img/f_cabecero_rojo.gif) =
repeat-x right top; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
* > .indx .mg_inf {
	BACKGROUND-POSITION: right top
}
.indx .mg_soc {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; BACKGROUND-COLOR: #036
}
.indx .mg_util {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 1px
}
.indx .item {
	PADDING-RIGHT: 1px; DISPLAY: inline; PADDING-LEFT: 1px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
.indx .pestana {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 3px; DISPLAY: inline; =
PADDING-LEFT: 3px; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 13px; BACKGROUND: =
none transparent scroll repeat 0% 0%; BORDER-BOTTOM-WIDTH: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 19px; PADDING-TOP: 0px; =
BORDER-RIGHT-WIDTH: 0px
}
.indx .off {
	BACKGROUND: #fff; PADDING-BOTTOM: 1px
}
.indx .sub {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; =
BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) #fff =
repeat-x left bottom; FLOAT: left; PADDING-BOTTOM: 9px; WIDTH: 100%; =
PADDING-TOP: 7px
}
.indx .sub LI A {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 0px; COLOR: =
#000; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 1px
}
.indx .sub .fin A {
	BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: =
0px
}
.indx .sub LI > A {
	BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: =
0px
}
.indx .sub LI:unknown {
	content: "|"
}
.indx .sub LI.fin:unknown {
	content: ""
}
.indx .mg_inf A.pestana:hover {
	BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_cabecero_rojo_pulsado.gif) =
repeat-x right center; COLOR: #fff
}
.indx .mg_util A.pestana:hover {
	BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_cabecero_gris_pulsado.gif) =
repeat-x right center; COLOR: #fff
}
.indx .mg_inf A.off:hover {
	BACKGROUND: #fff; COLOR: #000; TEXT-DECORATION: underline
}
.indx .mg_util A.off:hover {
	BACKGROUND: #fff; COLOR: #000; TEXT-DECORATION: underline
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/76D3865F0A80B1A100AE997B485F3286/LVDG_estilos_detalle.css

.det {
	BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot_det.gif) =
repeat-y 660px 2px
}
.det .auto .not {
	BACKGROUND: none transparent scroll repeat 0% 0%
}
.a330 .relacionados {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_dot.gif) #fff repeat-x left =
bottom; PADDING-BOTTOM: 7px; MARGIN: 0px 0px 7px; PADDING-TOP: 7px
}
.a330 .relacionados .img .brd {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.a330 .relacionados .img .relimg {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 7px
}
.a330 .relacionados H2.rot {
	BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 7px; PADDING-LEFT: 7px; =
BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; PADDING-BOTTOM: 3px; =
MARGIN: 7px 0px; FONT: bolder 15px georgia, times new roman, serif; =
TEXT-TRANSFORM: none; COLOR: #666; PADDING-TOP: 3px; BORDER-RIGHT-WIDTH: =
1px
}
.det H1.titulo {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 37px; =
PADDING-BOTTOM: 7px; PADDING-TOP: 7px
}
.det H1.titulo EM.titulillo {
	FONT-SIZE: 18px
}
.det H1.titulo EM.cargo {
	FONT-WEIGHT: bolder; FONT-SIZE: 16px; COLOR: #9a8f7a
}
.det .texto {
	FONT: 16px/145% Verdana, Arial, Helvetica, sans-serif; OVERFLOW: =
hidden; WIDTH: 100%
}
#texto P {
	FONT: 16px/145% Verdana, Arial, Helvetica, sans-serif; OVERFLOW: =
hidden; WIDTH: 100%
}
.texto1 P {
	FONT-SIZE: 16px! important
}
.texto2 P {
	FONT-SIZE: 18px! important
}
.texto3 P {
	FONT-SIZE: 22px! important
}
.texto4 P {
	FONT-SIZE: 24px! important
}
.det .entradilla {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 19px; PADDING-BOTTOM: =
14px; LINE-HEIGHT: 120%; PADDING-TOP: 0px
}
.det .texto A {
	TEXT-DECORATION: underline
}
.det .texto A:hover {
	COLOR: #c00
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/A20A9B030A80E0AB007BFC04A7AF50C3/LVDG_estilos_utnot.css

.utnot {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
url(/img/f_dot.gif) repeat-x left top; PADDING-BOTTOM: 2px; MARGIN: 16px =
0px 0px; OVERFLOW: hidden; PADDING-TOP: 2px; LIST-STYLE-TYPE: none; =
POSITION: relative; HEIGHT: 30px
}
* > .utnot {
	HEIGHT: 26px
}
.utnot LI {
	CLEAR: none; FLOAT: left
}
.utnot SPAN {
	DISPLAY: none
}
.utnot EM {
	FONT-SIZE: 11px; COLOR: #c00; FONT-STYLE: normal
}
.opnot {
	PADDING-RIGHT: 7px; MARGIN-TOP: 4px; DISPLAY: inline; LINE-HEIGHT: =
20px; MARGIN-RIGHT: 7px
}
.opnot A {
	BACKGROUND-POSITION: 2px 50%; PADDING-LEFT: 20px; BACKGROUND-IMAGE: =
url(/img/icos/op.gif); BACKGROUND-REPEAT: no-repeat
}
.votnot {
	DISPLAY: inline; LINE-HEIGHT: 30px
}
.votnot DL {
	DISPLAY: inline
}
.votnot DT {
	DISPLAY: inline
}
.votnot DD {
	DISPLAY: inline
}
.star {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: url(/img/star.gif) =
no-repeat; PADDING-BOTTOM: 0px; MARGIN: 4px 2px 0px 0px; WIDTH: 16px; =
PADDING-TOP: 0px; POSITION: relative; HEIGHT: 16px
}
* > .star {
	MARGIN: 0px
}
.on {
	BACKGROUND-IMAGE: url(/img/star_on.gif)
}
.star:active {
	BACKGROUND-IMAGE: url(/img/star_on.gif)
}
.star:hover {
	BACKGROUND-IMAGE: url(/img/star_ov.gif)
}
.utnot .servnot {
	DISPLAY: block; FLOAT: right
}
.utnot .servnot .inl EM {
	VISIBILITY: hidden
}
.servnot {
	RIGHT: -7px; POSITION: absolute; TOP: 7px; TEXT-ALIGN: right
}
.utnot .servnot LI {
	BACKGROUND: url(/img/f_dot.gif) #fff repeat-y right top
}
.utnot .servnot LI.nobrd {
	BACKGROUND: none transparent scroll repeat 0% 0%
}
.servnot A {
	CLEAR: none; PADDING-RIGHT: 7px; BACKGROUND-POSITION: left center; =
DISPLAY: inline; PADDING-LEFT: 20px; FONT-SIZE: 13px; PADDING-BOTTOM: =
0px; MARGIN: 0px 7px; WIDTH: auto; LINE-HEIGHT: 20px; PADDING-TOP: 0px; =
BACKGROUND-REPEAT: no-repeat
}
.vote A {
	CLEAR: none; PADDING-RIGHT: 0px; DISPLAY: block! important; =
PADDING-LEFT: 0px; FONT-SIZE: 13px; FLOAT: left; PADDING-BOTTOM: 0px; =
MARGIN: 0px 3px; WIDTH: 20px; LINE-HEIGHT: 20px; PADDING-TOP: 0px; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 18px
}
.vote A:hover {
	TEXT-DECORATION: none! important
}
A.imp {
	BACKGROUND-IMAGE: url(/img/icos/imp.gif)
}
A.vol {
	BACKGROUND-IMAGE: url(/img/icos/vol.gif)
}
A.env {
	BACKGROUND-IMAGE: url(/img/icos/en.gif)
}
A.tmenos {
	MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px
}
A.tmas {
	MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px
}
A.tmenos {
	BACKGROUND-IMAGE: url(/img/icos/texto_menos.gif)
}
A.tmas {
	PADDING-RIGHT: 7px; BACKGROUND-IMAGE: url(/img/icos/texto_mas.gif)
}
.comnot {
	FONT-SIZE: 11px; LINE-HEIGHT: 30px
}
.comnot A.ico {
	BACKGROUND-POSITION: left bottom; WIDTH: 27px; BACKGROUND-REPEAT: =
no-repeat; HEIGHT: 24px
}
.comnot > A.ico {
	PADDING-LEFT: 27px; MARGIN: 0px
}
.del_ico {
	BACKGROUND-IMAGE: url(/img/icos/delicious.gif)
}
.tech_ico {
	BACKGROUND-IMAGE: url(/img/icos/technorati.gif)
}
.yahoo_ico {
	BACKGROUND-IMAGE: url(/img/icos/yahoo.gif)
}
.digg_ico {
	BACKGROUND-IMAGE: url(/img/icos/digg.gif)
}
.meneame_ico {
	BACKGROUND-IMAGE: url(/img/icos/meneame.gif)
}
.chuza_ico {
	BACKGROUND-IMAGE: url(/img/icos/chuza.gif)
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1A15C6B50A80B1A10170C7A32D238343/LVDG_estilos_detalle_opinion.css

.opi H1.titulo {
	FONT-SIZE: 35px; FONT-STYLE: italic; TEXT-ALIGN: center
}
.opi .titulillo {
	BORDER-RIGHT: 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: 1px solid; =
PADDING-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 0px 0px 7px; FONT: 19px =
Georgia, "Times New Roman", Times, serif; TEXT-TRANSFORM: none! =
important; BORDER-LEFT: 1px solid; COLOR: #666600; PADDING-TOP: 4px; =
BORDER-BOTTOM: 1px solid; POSITION: relative
}
.opi .texto {
	FONT: 14px/20px Georgia, "Times New Roman", Times, serif
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/76E596D70A80B1A100AE997B308D7528/LVDG_estilos_localizador.css

.a660 DL.localizador {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 7px =
0px; COLOR: #000; PADDING-TOP: 0px
}
.a660 DL.localizador DT.si {
	DISPLAY: inline; LIST-STYLE-TYPE: none
}
.a660 DL.localizador DD {
	DISPLAY: inline; LIST-STYLE-TYPE: none
}
.a660 DL.localizador DD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 6px; FONT-SIZE: 11px; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 0px 6px; BORDER-LEFT: #000 1px solid; LINE-HEIGHT: =
11px; PADDING-TOP: 0px; FONT-FAMILY: georgia, times new roman, serif
}
.a660 DL.localizador DT.si {
	FONT-WEIGHT: bolder
}
.a660 DL.localizador DD.firma {
	FONT-WEIGHT: bolder
}
.a660 DL.localizador DD.autor {
	FONT-WEIGHT: bolder
}
.a660 DL.localizador DD.firma {
	PADDING-LEFT: 0px; MARGIN-LEFT: 0px; BORDER-LEFT: 0px
}
.a660 DL.localizador DD.autor {
	PADDING-LEFT: 0px; MARGIN-LEFT: 0px; BORDER-LEFT: 0px
}
.a660 DL.localizador .firma EM {
	FONT-WEIGHT: normal; COLOR: #666; FONT-STYLE: normal
}
.a660 DL.localizador .firma {
	TEXT-TRANSFORM: capitalize
}
.a660 DL.localizador .localizacion {
	TEXT-TRANSFORM: capitalize
}
.a660 DL.localizador .localizacion {
	BORDER-RIGHT: #000 0px solid; PADDING-RIGHT: 0px; BORDER-TOP: #000 0px =
solid; PADDING-LEFT: 6px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 6px; =
BORDER-LEFT: #000 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #000 0px =
solid
}
.a660 DL.localizador .fecha {
	BORDER-RIGHT: #000 0px solid; PADDING-RIGHT: 0px; BORDER-TOP: #000 0px =
solid; PADDING-LEFT: 6px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 6px; =
BORDER-LEFT: #000 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #000 0px =
solid
}
.a660 DL.localizador DD A {
	TEXT-DECORATION: underline
}
.a660 DL.localizador DD.trackback A {
	COLOR: #c00
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/B2CB05AB0A80E0AB00B113C752A3F9E8/LVDG_estilos_envia_opinion.css

.a660 .coment {
	FONT-FAMILY: trebuchet, tahoma, andale mono, geneva, arial, helvetica, =
sans-serif
}
.a660 .coment H2.cliche {
	FONT: 17px georgia, times new roman, serif; COLOR: #666
}
.a660 .coment .mini {
	FONT: 11px trebuchet, tahoma, andale mono, geneva, arial, helvetica, =
sans-serif; COLOR: #c00; TEXT-ALIGN: right
}
.a660 .coment FORM {
	CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; =
BACKGROUND: #f8f8f8; PADDING-BOTTOM: 0px; MARGIN: 7px 0px; WIDTH: 100%; =
PADDING-TOP: 12px; FONT-FAMILY: trebuchet, tahoma, andale mono, geneva, =
arial, helvetica, sans-serif
}
.bluegray {
	BACKGROUND: #f8f8f8
}
.a660 .coment > FORM {
	WIDTH: auto
}
.a660 .coment FIELDSET {
	CLEAR: both; DISPLAY: block
}
.auto .a660 .coment INPUT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.auto .a660 .coment TEXTAREA {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.a660 .coment FIELDSET LABEL {
	FLOAT: left; MARGIN: 4px
}
.a660 .coment FIELDSET LABEL EM {
	PADDING-RIGHT: 4px; DISPLAY: block; PADDING-LEFT: 4px; FONT-WEIGHT: =
bolder; PADDING-BOTTOM: 4px; PADDING-TOP: 4px; FONT-STYLE: normal
}
.a660 .coment FIELDSET LABEL EM SPAN {
	COLOR: #c00
}
.a660 .coment FIELDSET INPUT {
	CLEAR: left; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 13px trebuchet ms, lucida =
grande, tahoma, arial, geneva, verdana, helvetica, sans-serif; =
PADDING-TOP: 0px
}
.a660 .coment FIELDSET TEXTAREA {
	CLEAR: left; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 13px trebuchet ms, lucida =
grande, tahoma, arial, geneva, verdana, helvetica, sans-serif; =
PADDING-TOP: 0px
}
.t260 {
	WIDTH: 260px
}
.t170 {
	WIDTH: 170px
}
.t620 {
	WIDTH: 620px
}
.a660 .coment FIELDSET P {
	CLEAR: both; PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: =
8px; PADDING-TOP: 8px
}
.a660 .coment FIELDSET P A {
	CLEAR: both; DISPLAY: block
}
.a660 .coment .boton {
	CLEAR: right; MARGIN-TOP: 4px
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/4914AF6D0A80B1A100E6A73D7E2305B3/LVDG_estilos_capa_transparente.css

.ftrans {
	DISPLAY: block; Z-INDEX: 5000; BACKGROUND: none transparent scroll =
repeat 0% 0%; FILTER: alpha(opacity=3D60); LEFT: 0px; WIDTH: 100%; =
POSITION: absolute; TOP: 0px; HEIGHT: 1200%; opacity: 0.6; -moz-opacity: =
0.6
}
* > .ftrans {
	POSITION: fixed; HEIGHT: 100%
}
.porter {
	Z-INDEX: 5001; LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 0px; =
TEXT-ALIGN: center
}
* > .porter {
	POSITION: fixed
}
.spok {
	BORDER-RIGHT: #ccc 4px solid; BORDER-TOP: #ccc 4px solid; Z-INDEX: =
5002; MARGIN: 4% auto; BORDER-LEFT: #ccc 4px solid; WIDTH: 440px; =
BORDER-BOTTOM: #ccc 4px solid; BACKGROUND-COLOR: #fff
}
.arrstr {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
#ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid
}
.arrstr H2 {
	PADDING-RIGHT: 2px; PADDING-LEFT: 7px; PADDING-BOTTOM: 4px; MARGIN: =
0px; FONT: bolder 15px georgia, times new roman, serif; OVERFLOW: =
hidden; TEXT-TRANSFORM: capitalize; COLOR: #666; PADDING-TOP: 4px
}
.arrstr EM {
	FONT-STYLE: normal
}
.arrstr H2 .cerrar {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 1px; =
RIGHT: 4px; BACKGROUND: =
url(http://media.lavozdegalicia.es/img/f_aspa.gif) no-repeat center =
center; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; WIDTH: 11px; =
LINE-HEIGHT: 1px; PADDING-TOP: 0px; POSITION: absolute; TOP: 4px; =
HEIGHT: 11px
}
.contrans {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; FONT: =
12px/17px arial, tahoma, geneva, helvetica, sans-serif; OVERFLOW: auto; =
MAX-HEIGHT: 400px; PADDING-TOP: 7px; HEIGHT: auto
}
.contrans H3 {
	FONT-SIZE: 13px
}
.contrans UL {
	FONT: 12px/17px arial, tahoma, geneva, helvetica, sans-serif
}
.contrans LI {
	FONT: 12px/17px arial, tahoma, geneva, helvetica, sans-serif
}
.contrans DL {
	MARGIN-TOP: 14px
}
.contrans DD {
	MARGIN-TOP: 4px; MARGIN-BOTTOM: 14px
}

------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/558124BE0A80E0AB012F41A585B45977/LVDG_script.js

var G_SECCIONADO=3Dfalse;=0A=
function ObjetoListaInteractiva(){=0A=
=0A=
	this.list =3D new Array();=0A=
=0A=
	this.listaNombres =3D new Array();=0A=
=0A=
	this.listaCombos =3D new Array();=0A=
=0A=
	this.listaPestanas =3D new Array();=0A=
	=0A=
	this.listaEnlaces =3D new Array();=0A=
=0A=
	this.elementosVisibles =3D1;=0A=
=0A=
	this.posicion=3D0;=0A=
=0A=
	this.modoOff=3D"";=0A=
=0A=
	this.modoOn=3D"";=0A=
=0A=
	this.modoPestanaOff=3D"";=0A=
=0A=
	this.modoPestanaOn=3D"";=0A=
=0A=
	this.anadir=3Danadir;=0A=
=0A=
	this.mostrarAnterior=3DmostrarAnterior;=0A=
=0A=
	this.mostrarSiguiente=3DmostrarSiguiente;=0A=
=0A=
	this.mostrarPaginaAnterior=3DmostrarPaginaAnterior;=0A=
=0A=
	this.mostrarPaginaSiguiente=3DmostrarPaginaSiguiente;=0A=
=0A=
	this.borrarTodos=3DborrarTodos;=0A=
=0A=
	this.setElementosVisibles=3DsetElementosVisibles;=0A=
=0A=
	this.getElementosVisibles=3DgetElementosVisibles;=0A=
=0A=
	this.setModoOn=3DsetModoOn;=0A=
=0A=
	this.getModoOn=3DgetModoOn;=0A=
=0A=
	this.setModoOff=3DsetModoOff;=0A=
=0A=
	this.getModoOff=3DgetModoOff;=0A=
=0A=
	this.setModoPestanaOn=3DsetModoPestanaOn;=0A=
=0A=
	this.getModoPestanaOn=3DgetModoPestanaOn;=0A=
=0A=
	this.setModoPestanaOff=3DsetModoPestanaOff;=0A=
=0A=
	this.getModoPestanaOff=3DgetModoPestanaOff;=0A=
=0A=
	this.hacerInvisible=3DhacerInvisible;=0A=
=0A=
	this.hacerVisible=3DhacerVisible;=0A=
=0A=
	this.init=3Dinit;=0A=
	=0A=
	this.init2=3Dinit2;=0A=
=0A=
	this.setNombre=3DsetNombre;=0A=
=0A=
	this.getNombre=3DgetNombre;=0A=
=0A=
	this.ocultarTodos=3DocultarTodos;=0A=
=0A=
	this.insertOption=3DinsertOption;=0A=
=0A=
	this.anadirCombo=3DanadirCombo;=0A=
=0A=
	this.mostrarCombo=3DmostrarCombo;=0A=
=0A=
	this.mostrarPestana=3DmostrarPestana;=0A=
=0A=
	this.anadirPestanas=3DanadirPestanas;=0A=
=0A=
	this.getPosicion=3DgetPosicion;=0A=
	=0A=
	this.mostrarCapa=3DmostrarCapa;=0A=
	this.mostrarAleatorio=3DmostrarAleatorio;=0A=
=0A=
	this.setEnlace=3DsetEnlace;=0A=
=0A=
	this.getEnlace=3DgetEnlace;=0A=
	=0A=
	this.enlaceSeccion=3DenlaceSeccion;=0A=
	=0A=
	this.enlaceSeccionCategoria=3DenlaceSeccionCategoria;=0A=
	=0A=
	this.pasas=3Dpasas;=0A=
	=0A=
	this.llamarOJD=3DllamarOJD;=0A=
	=0A=
	this.getIdentificador=3DgetIdentificador;=0A=
}=0A=
=0A=
//Devuelve el objeto por ID=0A=
=0A=
	function getObject(id) {=0A=
		if( window.mmIsOpera ) return(document.getElementById(id));=0A=
		if (document.all) return(document.all[id]);=0A=
		if (document.getElementById) return(document.getElementById(id));=0A=
		return(false);=0A=
	}=0A=
=0A=
//devuelve la posici=F3n en la que se encuentra el objeto=0A=
=0A=
//Esta funci=F3n se utiliza para mostrar el n=FAmero de foto que se =
est=E1 mostrando en un album=0A=
=0A=
function getPosicion(){=0A=
=0A=
	//sumamos uno a la posici=F3n, porque empieza en 0.=0A=
=0A=
	return this.posicion+1;=0A=
=0A=
}=0A=
=0A=
//devuelve el id del objeto en funci=F3n de la posici=F3n que ocupa=0A=
function getIdentificador(posicion){=0A=
	//restamos 1 a la posicion, porque empieza en 0 y pediremos del 1 al n=0A=
	//actualizamos la posicion que estamos mostramos=0A=
	this.posicion=3Dposicion-1;=0A=
	return this.list[posicion-1];=0A=
	=0A=
=0A=
}=0A=
=0A=
function anadirCombo(select){=0A=
=0A=
		this.listaCombos.push(select);=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function anadirPestanas(pestana){=0A=
=0A=
		this.listaPestanas.push(pestana);=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function insertOption()=0A=
=0A=
{=0A=
=0A=
=0A=
=0A=
	for (var i =3D 0; i < this.list.length; i++) {=0A=
=0A=
			=0A=
=0A=
	  for (var j =3D 0; j < this.listaCombos.length; j++) {=0A=
=0A=
		  var y=3Ddocument.createElement('option');=0A=
=0A=
		  y.text=3Dthis.getNombre(this.list[i]);=0A=
=0A=
		  y.value=3Dthis.list[i];=0A=
=0A=
		  var x=3Ddocument.getElementById(this.listaCombos[j]);=0A=
=0A=
		  try=0A=
=0A=
		  {=0A=
=0A=
		    x.add(y,null); // standards compliant=0A=
=0A=
		  }=0A=
=0A=
		  catch(ex)=0A=
=0A=
		  {=0A=
=0A=
		    x.add(y); // IE only=0A=
=0A=
		  }=0A=
=0A=
		}=0A=
=0A=
	}=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function mostrarPestana(id){=0A=
=0A=
	this.ocultarTodos();=0A=
=0A=
	this.hacerVisible(id);=0A=
=0A=
	//Recorremos las pestanas para ponerlas en modo off=0A=
=0A=
	for (var i =3D 0; i < this.listaPestanas.length; i++) {=0A=
=0A=
		=
document.getElementById(this.listaPestanas[i]).className=3Dthis.getModoPe=
stanaOff();=0A=
=0A=
	}=0A=
=0A=
	//Ponemos la seleccionada en modo On=0A=
=0A=
	=
document.getElementById("pestana"+id).className=3Dthis.getModoPestanaOn()=
;=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function mostrarCombo(id){=0A=
=0A=
		var x=3Ddocument.getElementById(id);=0A=
=0A=
		//Si el seleccionado es el 0 no hacemos nada=0A=
=0A=
		if (x.selectedIndex=3D=3D0){=0A=
=0A=
			return;=0A=
=0A=
		}=0A=
=0A=
		this.ocultarTodos();=0A=
=0A=
		//situamos la posicion, ser=E1 la seleccionada -1=0A=
=0A=
		this.posicion=3Dx.selectedIndex-1;=0A=
=0A=
		this.hacerVisible(x.options[x.selectedIndex].value);=0A=
=0A=
		//Recorremos los combos para seleccionar el indice seleccionado=0A=
=0A=
		for (var i =3D 0; i < this.listaCombos.length; i++) {=0A=
=0A=
			var combos=3Ddocument.getElementById(this.listaCombos[i]);=0A=
=0A=
			combos.options[x.selectedIndex].selected=3Dtrue;=0A=
=0A=
		}=0A=
=0A=
}=0A=
=0A=
function llamarOJD(seccion){=0A=
	var seccionado=3D"0"=0A=
	url =3D =
"http://lavozdegalicia.ojdinteractiva.com/cgi-bin/ivw/CP/"+seccion+"?r=3D=
"+escape(document.referrer);=0A=
	if (document.getElementById("ojd")!=3Dnull){=0A=
		document.getElementById("ojd").src=3Durl;=0A=
		if (G_SECCIONADO){=0A=
			seccionado=3Dseccion;=0A=
		}=0A=
		=
document.getElementById("ojd").src=3D"//secure-uk.imrworldwide.com/cgi-bi=
n/m?ci=3Des-lavozgal&cg=3D"+ seccionado +"&cc=3D1";=0A=
	}=0A=
}	=0A=
=0A=
=0A=
function anadir(id){=0A=
=0A=
		this.list.push(id);=0A=
=0A=
}=0A=
=0A=
	=0A=
=0A=
function setNombre(id, nombre){=0A=
=0A=
		this.listaNombres[id]=3Dnombre;=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function getNombre(id){=0A=
=0A=
		return(this.listaNombres[id]);=0A=
=0A=
}=0A=
=0A=
function setEnlace(id, enlace){=0A=
=0A=
		this.listaEnlaces[id]=3Denlace;=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function getEnlace(id){=0A=
=0A=
		return(this.listaEnlaces[id]);=0A=
=0A=
}=0A=
=0A=
function ocultarTodos(){=0A=
=0A=
		for (var i =3D 0; i < this.list.length; i++) {=0A=
=0A=
			this.hacerInvisible(this.list[i]);=0A=
=0A=
		}=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function mostrarPaginaAnterior(){=0A=
=0A=
	for (var i =3D 0; i < this.getElementosVisibles(); i++) {=0A=
=0A=
		this.mostrarAnterior();=0A=
=0A=
	}=0A=
=0A=
}=0A=
=0A=
function mostrarPaginaSiguiente(){=0A=
=0A=
	for (var i =3D 0; i < this.getElementosVisibles(); i++) {=0A=
=0A=
		this.mostrarSiguiente();=0A=
=0A=
	}=0A=
=0A=
=0A=
=0A=
}=0A=
=0A=
function mostrarAnterior(){=0A=
=0A=
	if (this.list.length=3D=3D1)	{=0A=
=0A=
		return;=0A=
=0A=
	}=0A=
=0A=
	if (this.list[this.posicion-1]!=3Dnull){=0A=
=0A=
		this.hacerVisible(this.list[this.posicion-1]);=0A=
=0A=
		=
this.hacerInvisible(this.list[this.posicion+(this.getElementosVisibles()-=
1)]);=0A=
=0A=
		this.posicion=3Dthis.posicion-1;=0A=
=0A=
	}=0A=
=0A=
	else{=0A=
=0A=
		//Si el salto es de uno, mostramos el ultimo =0A=
=0A=
		if (this.getElementosVisibles()=3D=3D1){=0A=
=0A=
			this.hacerVisible(this.list[this.list.length-1]);=0A=
=0A=
			this.hacerInvisible(this.list[this.posicion]);=0A=
=0A=
			this.posicion=3Dthis.list.length-1;=0A=
=0A=
		}=0A=
=0A=
	}=0A=
=0A=
			=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function mostrarSiguiente(){=0A=
=0A=
	if (this.list.length=3D=3D1)	{=0A=
=0A=
		return;=0A=
=0A=
	}=0A=
=0A=
	if (this.list[this.posicion+this.getElementosVisibles()]!=3Dnull){=0A=
=0A=
		=
this.hacerVisible(this.list[this.posicion+this.getElementosVisibles()]);=0A=
=0A=
		this.hacerInvisible(this.list[this.posicion]);=0A=
=0A=
		this.posicion=3Dthis.posicion+1;=0A=
=0A=
	}=0A=
=0A=
	else{=0A=
=0A=
		//Si el salto es de uno, empezamos de nuevo=0A=
=0A=
		if (this.getElementosVisibles()=3D=3D1){=0A=
=0A=
			this.hacerVisible(this.list[0]);=0A=
=0A=
			this.hacerInvisible(this.list[this.posicion]);=0A=
=0A=
			this.posicion=3D0;=0A=
=0A=
		}=0A=
=0A=
	}=0A=
=0A=
}=0A=
=0A=
function pasas(direccion, url){=0A=
	var seccionado=3D"0"=0A=
	if (document.getElementById("ojd")!=3Dnull){=0A=
		document.getElementById("ojd").src=3Durl;=0A=
		if (G_SECCIONADO){=0A=
			seccionado=3DtratarUrl(url);=0A=
		}=0A=
		=
document.getElementById("ojd").src=3D"//secure-uk.imrworldwide.com/cgi-bi=
n/m?ci=3Des-lavozgal&cg=3D" + seccionado + "&cc=3D1";=0A=
	}=0A=
	if (direccion=3D=3D"1"){=0A=
		this.mostrarSiguiente();=0A=
	}else {=0A=
		this.mostrarAnterior();=0A=
	}=0A=
}=0A=
=0A=
=0A=
function tratarUrl(m_url){=0A=
	var rdo=3Dm_url;=0A=
	var =
pos1=3Dm_url.indexOf("http://lavozdegalicia.ojdinteractiva.com/cgi-bin/iv=
w/CP/");=0A=
	var pos2 =3D m_url.indexOf("?r=3D");=0A=
	if (pos1!=3D-1) {=0A=
		rdo=3Dm_url.substring(56,pos2);=0A=
	}	=0A=
	return rdo;=0A=
}=0A=
=0A=
=0A=
function borrarTodos(){=0A=
=0A=
	for (var i =3D 0; i <=3D this.list.length; i++) {=0A=
=0A=
		this.list.pop();=0A=
=0A=
	}=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function setElementosVisibles(numero){=0A=
=0A=
	this.elementosVisibles=3Dnumero;=0A=
=0A=
}=0A=
=0A=
function getElementosVisibles(){=0A=
=0A=
	return this.elementosVisibles;=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function setModoOn(clase){=0A=
=0A=
	this.modoOn=3Dclase;=0A=
=0A=
}=0A=
=0A=
function getModoOn(){=0A=
=0A=
	return this.modoOn;=0A=
=0A=
}=0A=
=0A=
function setModoOff(clase){=0A=
=0A=
	return this.modoOff=3Dclase;=0A=
=0A=
}=0A=
=0A=
function getModoOff(){=0A=
=0A=
	return this.modoOff;=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function setModoPestanaOn(clase){=0A=
=0A=
	this.modoPestanaOn=3Dclase;=0A=
=0A=
}=0A=
=0A=
function getModoPestanaOn(){=0A=
=0A=
	return this.modoPestanaOn;=0A=
=0A=
}=0A=
=0A=
function setModoPestanaOff(clase){=0A=
=0A=
	return this.modoPestanaOff=3Dclase;=0A=
=0A=
}=0A=
=0A=
function getModoPestanaOff(){=0A=
=0A=
	return this.modoPestanaOff;=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function init(){=0A=
=0A=
	//hacemos visible el numero de elementos visibles configurados=0A=
=0A=
	for (var i =3D 0; i < this.getElementosVisibles(); i++) {=0A=
=0A=
		this.hacerVisible(this.list[i]);=0A=
=0A=
	}=0A=
=0A=
	//Si tienes pestanas ponemos la primera como seleccionada=0A=
=0A=
	if (this.listaPestanas.length!=3D0){=0A=
=0A=
		=
document.getElementById(this.listaPestanas[0]).className=3Dthis.getModoPe=
stanaOn();=0A=
=0A=
	}=0A=
=0A=
	this.insertOption();=0A=
=0A=
}=0A=
=0A=
=0A=
function init2(){=0A=
=0A=
	//hacemos visible el numero de elementos visibles configurados=0A=
=0A=
	for (var i =3D 0; i < this.getElementosVisibles(); i++) {=0A=
=0A=
		document.getElementById(this.list[i]).className=3Dthis.getModoOn();=0A=
=0A=
	}=0A=
=0A=
	//Si tienes pestanas ponemos la primera como seleccionada=0A=
=0A=
	if (this.listaPestanas.length!=3D0){=0A=
=0A=
		=
document.getElementById(this.listaPestanas[0]).className=3Dthis.getModoPe=
stanaOn();=0A=
=0A=
	}=0A=
=0A=
	this.insertOption();=0A=
=0A=
}=0A=
=0A=
function hacerInvisible(id){=0A=
=0A=
		document.getElementById(id).className=3Dthis.getModoOff();=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function hacerVisible(id){=0A=
		capa =3D document.getElementById(id);=0A=
		cnjIMG =3D capa.getElementsByTagName('img');=0A=
		for (var i=3D0; i<cnjIMG.length; i++) {=0A=
			if (cnjIMG[i].attributes.getNamedItem('longdesc')!=3Dnull){=0A=
				if =
(cnjIMG[i].attributes.getNamedItem('longdesc').value=3D=3D"cambiar"){=0A=
					cnjIMG[i].src=3DcnjIMG[i].attributes.getNamedItem('id').value;=0A=
				}=0A=
	        }=0A=
		}=0A=
		document.getElementById(id).className=3Dthis.getModoOn();=0A=
}=0A=
=0A=
function mostrarCapa(id){=0A=
=0A=
	this.ocultarTodos();=0A=
=0A=
	this.hacerVisible(id);=0A=
=0A=
}=0A=
=0A=
function mostrarAleatorio (){=0A=
	var tope=3Dthis.list.length;=0A=
	var VerElemento=3DMath.floor(Math.random()*tope);=0A=
	this.hacerInvisible(this.list[this.posicion]);=0A=
	this.hacerVisible(this.list[VerElemento]);=0A=
	this.posicion=3DVerElemento;=0A=
}=0A=
=0A=
function enlaceSeccion(id){=0A=
		=0A=
		var x=3Ddocument.getElementById(id);=0A=
=0A=
		//Si el seleccionado es el 0 no hacemos nada=0A=
=0A=
		if (x.selectedIndex=3D=3D0){=0A=
=0A=
			return;=0A=
=0A=
		}=0A=
=0A=
		var idSeleccionado =3D x.options[x.selectedIndex].value;=0A=
=0A=
		this.enlaceSeccionCategoria(idSeleccionado);=0A=
}=0A=
=0A=
function enlaceSeccionCategoria(id){=0A=
		=0A=
		var enlace =3D this.getEnlace(id);=0A=
		=0A=
		if (enlace!=3Dnull){=0A=
			document.location.href=3Denlace;=0A=
		}=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/8CC01D870A80B1A20163C85B07025780/Traduccion_Idioma.js

function es2gal(url){=0A=
		var loc =3D window.location.toString();=0A=
		if (loc.indexOf("idioma=3Dgalego") !=3D -1){=0A=
			if (url.indexOf("?")!=3D-1) url +=3D "&idioma=3Dgalego";=0A=
			else url +=3D "?idioma=3Dgalego";=0A=
		}=0A=
		return url;=0A=
	}=0A=
	=0A=
	function gal2es(url){=0A=
	 	var loc =3D window.location.toString();=0A=
		if (loc.indexOf("&idioma=3Dgalego") !=3D -1){=0A=
			url =3D replaceAll(loc,"&idioma=3Dgalego","");=0A=
		}=0A=
		if (loc.indexOf("?idioma=3Dgalego&") !=3D -1){=0A=
			url =3D replaceAll(loc,"?idioma=3Dgalego&","?");=0A=
		}=0A=
		if (loc.indexOf("?idioma=3Dgalego") !=3D -1){=0A=
			url =3D replaceAll(loc,"?idioma=3Dgalego","");=0A=
		}=0A=
		return url;=0A=
	}=0A=
	=0A=
	var gl;=0A=
	var idiom;=0A=
	idiom=3D"";=0A=
	function idioma(){=0A=
		var rdo;=0A=
		rdo=3Dfalse;=0A=
		var loc=3Ddocument.location.toString();=0A=
			if(loc.indexOf("idioma=3Dgalego")!=3D-1){=0A=
				rdo=3Dtrue;=0A=
				idiom=3D"_ga";=0A=
			}=0A=
		return rdo;=0A=
	}=0A=
	=0A=
	function traducir(){=0A=
		var loc=3D window.location.toString();=0A=
		if (loc.indexOf("?")!=3D-1) loc +=3D "&idioma=3Dgalego";=0A=
		else loc +=3D "?idioma=3Dgalego";=0A=
=0A=
		window.location=3Dloc;=0A=
	}=0A=
=0A=
	function replaceAll( str, from, to ) {=0A=
	    var idx =3D str.indexOf( from );=0A=
=0A=
	    while ( idx > -1 ) {=0A=
		str =3D str.replace( from, to );=0A=
		idx =3D str.indexOf( from );=0A=
=0A=
	    }=0A=
	    return str;=0A=
	}=0A=
	=0A=
function CrearCookie(Nombre, Valor) {=0A=
	var Dia =3D new Date();=0A=
	Dia.setDate(Dia.getDate() + 365); //caduca en un a=F1o=0A=
	document.cookie =3D Nombre + "=3D" + Valor + "; expires=3D" + =
Dia.toGMTString() + "; path=3D/";=0A=
}=0A=
=0A=
function LeerCookie(NombreDeCookie) {=0A=
	var NumDeCookies =3D document.cookie.length;=0A=
	var NombreParaCookie =3D NombreDeCookie + "=3D";=0A=
	var LongDeCookie =3D NombreParaCookie.length;=0A=
	var x =3D 0;=0A=
	while (x <=3D NumDeCookies) {=0A=
		var y =3D (x + LongDeCookie);=0A=
		if (document.cookie.substring(x, y) =3D=3D NombreParaCookie)=0A=
		return (ExtraeValorDeCookie(y));=0A=
		x =3D document.cookie.indexOf(" ", x) + 1;=0A=
		if (x =3D=3D 0)=0A=
		break;=0A=
	}=0A=
	var vacio=3D"?";=0A=
	return (vacio);=0A=
}=0A=
=0A=
function lee_idioma(){=0A=
	var idiomasession=3DLeerCookie("idioma_session");=0A=
//alert(idiomasession);=0A=
	if(idiomasession=3D=3D"ga"){=0A=
		if(!idioma()){=0A=
			traducir();=0A=
		}=0A=
	}else if(idiomasession=3D=3D"es"){=0A=
		if(idioma()){=0A=
			window.location=3Dgal2es(window.location);=0A=
		}=0A=
	}=0A=
=0A=
}=0A=
=0A=
function ExtraeValorDeCookie(val) {=0A=
	var FinalDeCookie;=0A=
	if ((FinalDeCookie =3D document.cookie.indexOf(";", val)) =3D=3D -1) {=0A=
		FinalDeCookie =3D document.cookie.length;=0A=
	}=0A=
	return unescape(document.cookie.substring(val,FinalDeCookie));=0A=
}=0A=
=0A=
lee_idioma();
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1207566307869166180/bannerywol.js

function writePromowebftJS(){	=0A=
var strPromowebft=3D'';=0A=
strPromowebft+=3D '<div style=3D"position: relative;">';=0A=
strPromowebft+=3D '<div id=3D"OuterDivID" style=3D"height:180px;width: =
750px; overflow: hidden; top: -90px; left: 0px; position: absolute;">';=0A=
strPromowebft+=3D '<div id=3D"ContainerDivID" style=3D"height:180px;">';=0A=
strPromowebft+=3D'<object =
classid=3D"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" =
codebase=3D"http:\/\/fpdownload.macromedia.com\/pub\/shockwave\/cabs\/fla=
sh\/swflash.cab#version=3D8,0,0,0" id=3D"banner_01" width=3D"1024" =
height=3D"500" align=3D"middle">';=0A=
strPromowebft+=3D'<param name=3D"allowScriptAccess" value=3D"always" =
\/>';=0A=
strPromowebft+=3D'<param name=3D"movie" =
value=3D"http:\/\/www.promowebsite.net\/promowebsite\/marcos\/expandible\=
/ywol_ex_btm_750x90.swf" \/>';=0A=
strPromowebft+=3D'<param name=3D"quality" value=3D"best" \/>';=0A=
strPromowebft+=3D'<param name=3D"wmode" value=3D"transparent" \/>';=0A=
strPromowebft+=3D'<param name=3D"bgcolor" value=3D"#666666" \/>';=0A=
strPromowebft+=3D'<embed =
src=3D"http:\/\/www.promowebsite.net\/promowebsite\/marcos\/expandible\/y=
wol_ex_btm_750x90.swf" quality=3D"best" wmode=3D"transparent" =
bgcolor=3D"#666666" width=3D"1024" height=3D"500" swliveconnect=3Dtrue =
id=3D"banner_01" name=3D"banner_01" align=3D"middle" =
allowscriptaccess=3D"always" type=3D"application\/x-shockwave-flash" =
pluginspage=3D"http:\/\/www.macromedia.com\/go\/getflashplayer" \/>';=0A=
strPromowebft+=3D'<\/object>';=0A=
strPromowebft+=3D'<\/div>';=0A=
strPromowebft+=3D'<\/div>';=0A=
strPromowebft+=3D'<\/div>';=0A=
document.getElementById("Promowebft").innerHTML +=3D strPromowebft;=0A=
}=0A=
=0A=
window.onload =3D writePromowebftJS;=0A=
=0A=
=0A=
var isInternetExplorer =3D navigator.appName.indexOf("Microsoft") !=3D =
-1;=0A=
// Handle all the FSCommand in a Flash movie.=0A=
function banner_01_DoFSCommand(command, args) {=0A=
	var banner_01Obj =3D isInternetExplorer ? document.all.banner_01 : =
document.banner_01;=0A=
=0A=
	if (command =3D=3D "clipexpand") {=0A=
	   document.getElementById(args).style.clip=3D =
"rect(0px,750px,500px,0px)";=0A=
	  //document.getElementById(args).style.width =3D "755px";=0A=
	  //document.getElementById(args).style.height =3D "192px";=0A=
	  //document.getElementById(args).style.top =3D "-96px";=0A=
	  //alert("clipexpand");=0A=
	}=0A=
	if (command =3D=3D "clipcolapse") {=0A=
	  	 document.getElementById(args).style.clip=3D =
"rect(90px,750px,500px,0px)";=0A=
	    // document.getElementById(args).style.height =3D "192px";=0A=
		// document.getElementById(args).style.top =3D "-96px";=0A=
		// document.getElementById(args).style.width =3D "755px";=0A=
		//alert("clipcolapse");=0A=
		=0A=
	}=0A=
}=0A=
// Hook for Internet Explorer.=0A=
if (navigator.appName && navigator.appName.indexOf("Microsoft") !=3D -1 =
&& navigator.userAgent.indexOf("Windows") !=3D -1 && =
navigator.userAgent.indexOf("Windows 3.1") =3D=3D -1) {=0A=
	document.write('<script language=3D\"VBScript\"\>\n');=0A=
	document.write('On Error Resume Next\n');=0A=
	document.write('Sub banner_01_FSCommand(ByVal command, ByVal args)\n');=0A=
	document.write('	Call banner_01_DoFSCommand(command, args)\n');=0A=
	document.write('End Sub\n');=0A=
	document.write('</script\>\n');=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/D9494AAE0A80B1A1006261C96634ABEC/script_ventana.js

function windowOpener16(theURL,winName,features) {=0A=
		window.open(theURL,winName,features);=0A=
	}=0A=
=0A=
// Abrir Clasificados=0A=
=0A=
	function abrir_clasificados() {=0A=
		if(navigator.appname=3D=3D"Netscape Navigator") {				=0A=
			=
windowOpener16("https://caixa.lavoz.es/iAnuncios/jsp/valida.jsp?origen=3D=
a&publicacion=3D001&ancho=3D"+screen.width,"Clasificados","screenX=3D0, =
screenY=3D0, titlebar=3Dno");=0A=
		} else {=0A=
			=
windowOpener16("https://caixa.lavoz.es/iAnuncios/jsp/valida.jsp?origen=3D=
a&publicacion=3D001&ancho=3D"+screen.width,"Clasificados","left=3D0, =
top=3D0, titlebar=3Dfalse, scrollbars");=0A=
		}=0A=
	}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/93D696360A80E09D0176E9C0E8D2FCCA/LVDG_fechasUtil.js

/**=0A=
=0A=
<doc:module date=3D"2001-06-12">=0A=
=0A=
   <doc:module>exslt:date-time</doc:module>=0A=
=0A=
   <doc:name>dates</doc:name>=0A=
=0A=
   <doc:version>2.0</doc:version>=0A=
=0A=
   <doc:language>exslt:javascript</doc:language>=0A=
=0A=
   <doc:meta>=0A=
=0A=
      <doc:author email=3D"chris@bayes.co.uk" =
url=3D"http://www.bayes.co.uk">Chris Bayes</doc:author>=0A=
=0A=
      <doc:summary>Implementation of EXSLT - Dates =
(http://www.exslt.org/date)</doc:summary>=0A=
=0A=
      <doc:todo>_validDuration is not 100%</doc:todo>=0A=
=0A=
      <doc:todo>All timezone code.</doc:todo>=0A=
=0A=
   </doc:meta>=0A=
=0A=
</doc:module>=0A=
=0A=
**/=0A=
=0A=
var gsSuppliedFormat =3D "";=0A=
=0A=
var gsLang =3D "en";=0A=
=0A=
var gaLang =3D new Array();=0A=
=0A=
// en =0A=
=0A=
gaLang["en"] =3D new Array();=0A=
=0A=
gaLang["en"]["months"] =3D new Array("January", "February", "March", =
"April", "May", "June", "July", "August", "September", "October", =
"November", "December");=0A=
=0A=
gaLang["en"]["shortMonths"] =3D new Array("Jan", "Feb", "Mar", "Apr", =
"May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");=0A=
=0A=
gaLang["en"]["days"] =3D new Array("Sunday", "Monday", "Tuesday", =
"Wednesday", "Thursday", "Friday", "Saturday");=0A=
=0A=
gaLang["en"]["shortDays"] =3D new Array("Sun", "Mon", "Tue", "Wed", =
"Thu", "Fri", "Sat");=0A=
=0A=
// es =0A=
=0A=
gaLang["es"] =3D new Array();=0A=
=0A=
gaLang["es"]["months"] =3D new Array("enero", "febrero", "marzo", =
"abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", =
"noviembre", "diciembre");=0A=
=0A=
gaLang["es"]["shortMonths"] =3D new Array("Ene", "Feb", "Mar", "Abr", =
"May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic");=0A=
=0A=
gaLang["es"]["days"] =3D new Array("Domingo", "Lunes", "Martes", =
"Mi=E9rcoles", "Jueves", "Viernes", "S=E1bado");=0A=
=0A=
gaLang["es"]["shortDays"] =3D new Array("Dom", "Lun", "Mar", "Mie", =
"Jue", "Vie", "Sab");=0A=
=0A=
// ga =0A=
=0A=
gaLang["ga"] =3D new Array();=0A=
=0A=
gaLang["ga"]["months"] =3D new Array("xaneiro", "febreiro", "marzo", =
"abril", "maio", "xu=F1o", "xullo", "agosto", "setembro", "outubro", =
"novembro", "diciembre");=0A=
=0A=
gaLang["ga"]["shortMonths"] =3D new Array("Xan", "Feb", "Mar", "Abr", =
"Mai", "Ju=F1", "xul", "Ago", "Set", "Out", "Nov", "Dec");=0A=
=0A=
gaLang["ga"]["days"] =3D new Array("Domingo", "Luns", "Martes", =
"M=E9rcores", "Xoves", "Venres", "S=E1bado");=0A=
=0A=
gaLang["ga"]["shortDays"] =3D new Array("Dom", "Lun", "Mar", "Mer", =
"Xov", "Ven", "Sab");=0A=
=0A=
=0A=
=0A=
var gaDayNames =3D new Array();=0A=
=0A=
gaDayNames["sunday"] =3D 0;gaDayNames["monday"] =3D =
1;gaDayNames["tuesday"] =3D 2;gaDayNames["wednesday"] =3D =
3;gaDayNames["thursday"] =3D 4;gaDayNames["friday"] =3D =
5;gaDayNames["saturday"] =3D 6;=0A=
=0A=
var gaMonthCnt =3D new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, =
31);=0A=
=0A=
var gaMonthCntL =3D new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, =
30, 31);=0A=
=0A=
function _isLeap(y){return ( ((y%4=3D=3D0)&(y%100!=3D0))|(y%400=3D=3D0) =
);}=0A=
=0A=
function _dayOfWeek(y,d){return ( =
((y-1)+Math.floor((y-1)/4)-Math.floor((y-1)/100)+Math.floor((y-1)/400)+d)=
%7);}=0A=
=0A=
function _dayInYear(y,m,d){return (m=3D=3D0?d:eval( =
(_isLeap(y)?gaMonthCntL.slice(0,m).join("+"):gaMonthCnt.slice(0,m).join("=
+")) )+(d*1) );}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>add</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"no"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"duration" type=3D"string" default=3D"''" =
optional=3D"no"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function add(){//=0A=
=0A=
	var d1,d2;=0A=
=0A=
	if (((d1 =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
		 (d1 =3D _validDate(arguments[0], "xs:date")) ||=0A=
=0A=
		 (d1 =3D _validDate(arguments[0], "xs:gYearMonth")) ||=0A=
=0A=
		 (d1 =3D _validDate(arguments[0], "xs:gYear"))=0A=
=0A=
		) && =0A=
=0A=
		(d2 =3D _validDuration(arguments[1])))=0A=
=0A=
		return _formatDate(d2.addDate(d1), gsSuppliedFormat);=0A=
=0A=
	return '';=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>addDuration</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"duration" type=3D"string" default=3D"''" =
optional=3D"no"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"duration" type=3D"string" default=3D"''" =
optional=3D"no"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function addDuration(duration1, duration2){=0A=
=0A=
	if ((d1 =3D _validDuration(duration1)) && (d2 =3D =
_validDuration(duration2))){=0A=
=0A=
		var d1mnth =3D d1.years *12 + d1.months;=0A=
=0A=
		var d1secs =3D d1.days*86400 + d1.hours*3600 + d1.minutes*60 + =
(d1.seconds+'.'+d1.fraction)*1;=0A=
=0A=
		var d2mnth =3D d2.years *12 + d2.months;=0A=
=0A=
		var d2secs =3D d2.days*86400 + d2.hours*3600 + d2.minutes*60 + =
(d2.seconds+'.'+d2.fraction)*1;=0A=
=0A=
		var mnthdiff =3D (d1.pm+d1mnth)*1 + (d2.pm+d2mnth)*1;=0A=
=0A=
		var secsdiff =3D (d1.pm+d1secs)*1 + (d2.pm+d2secs)*1;=0A=
=0A=
		if ((mnthdiff < 0 && secsdiff > 0) || (mnthdiff > 0 && secsdiff < 0))=0A=
=0A=
			return '';=0A=
=0A=
		var secs =3D secsdiff % 60;=0A=
=0A=
		var pm =3D (mnthdiff<0||secsdiff<0?'-':'');=0A=
=0A=
		mnthdiff =3D Math.abs(mnthdiff);=0A=
=0A=
		secsdiff =3D Math.abs(secsdiff);=0A=
=0A=
		return _formatDuration(new Duration(pm, 0, mnthdiff, =
Math.floor(secsdiff/86400), Math.floor((secsdiff%86400)/3600), =
Math.floor((secsdiff%3600)/60), Math.floor(secs), Math.floor(secs%1)));=0A=
=0A=
	}=0A=
=0A=
	return '';=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>date</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function date(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date"))=0A=
=0A=
			)=0A=
=0A=
			return _formatDate(oDate, "xs:date");=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else=0A=
=0A=
		return _formatDate(new Date(), "xs:date");=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>dateTime</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args />=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function dateTime(){//must be UTC/Z=0A=
=0A=
	if (arguments.length > 0)=0A=
=0A=
		dateTime_invalidArgument.error;=0A=
=0A=
	var oDate =3D new Date();=0A=
=0A=
	return _formatDate(oDate, "xs:dateTime");=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>dayAbbreviation</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"context" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function dayAbbreviation(){=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
		    (oDate =3D _validDate(arguments[0], "xs:date"))=0A=
=0A=
		   )=0A=
=0A=
			return _dayAbbreviation(oDate.getDay(), arguments[1], arguments[2]);=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else=0A=
=0A=
		return _dayAbbreviation(new Date().getDay(), arguments[1], =
arguments[2]);=0A=
=0A=
}=0A=
=0A=
function _dayAbbreviation(num, dfName, ctx){=0A=
=0A=
	if (ctx !=3D null){=0A=
=0A=
		var nodes =3D ctx.nextNode.selectNodes(=0A=
=0A=
			"//*[local-name()=3D'date-format' and =
namespace-uri()=3D'http://exslt.org/dates-and-times' and @name=3D'" + =
dfName +"' ]" +=0A=
=0A=
			"/*[local-name()=3D'days' and =
namespace-uri()=3D'http://exslt.org/dates-and-times']" +=0A=
=0A=
			"/*[local-name()=3D'day' and =
namespace-uri()=3D'http://exslt.org/dates-and-times']/@abbr");=0A=
=0A=
		if (nodes !=3D null)=0A=
=0A=
			return nodes[num].nodeValue;=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else{ //we could try local=0A=
=0A=
		return gaLang[gsLang]["shortDays"][num*1];=0A=
=0A=
	}=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>dayInMonth</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function dayInMonth(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gMonthDay")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gDay"))=0A=
=0A=
		    )=0A=
=0A=
			return oDate.getDate();=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN=0A=
=0A=
	}else=0A=
=0A=
		return new Date().getDate();=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>dayInWeek</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"context" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function dayInWeek(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
		    (oDate =3D _validDate(arguments[0], "xs:date"))=0A=
=0A=
		   )=0A=
=0A=
			return _dayInWeek(oDate, arguments[1], arguments[2]);=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return _dayInWeek(new Date(), arguments[1], arguments[2]);=0A=
=0A=
}=0A=
=0A=
function _dayInWeek(oDate, dfName, ctx){=0A=
=0A=
	var fdow =3D 0;=0A=
=0A=
	if (ctx !=3D null){=0A=
=0A=
		var nodes =3D ctx.nextNode.selectSingleNode(=0A=
=0A=
			"//*[local-name()=3D'date-format' and =
namespace-uri()=3D'http://exslt.org/dates-and-times' and @name=3D'" + =
dfName +"' ]" +=0A=
=0A=
			"/@first-day-of-week");=0A=
=0A=
		if (nodes !=3D null)=0A=
=0A=
			fdow =3D gaDayNames[nodes.nodeValue];=0A=
=0A=
	}=0A=
=0A=
	return =
(oDate.getDay()-fdow<0?oDate.getDay()-fdow+7:oDate.getDay()-fdow);=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>dayInYear</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function dayInYear(){=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date"))=0A=
=0A=
			)=0A=
=0A=
			return _dayInYear(oDate.getFullYear(), oDate.getMonth(), =
oDate.getDate());=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else{=0A=
=0A=
		var oDate =3D new Date()=0A=
=0A=
		return _dayInYear(oDate.getFullYear(), oDate.getMonth(), =
oDate.getDate());=0A=
=0A=
	}=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>dayName</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"context" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function dayName(){=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
		    (oDate =3D _validDate(arguments[0], "xs:date"))=0A=
=0A=
		   )=0A=
=0A=
			return _dayName(oDate.getDay(), arguments[1], arguments[2]);=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else=0A=
=0A=
		return _dayName(new Date().getDay(), arguments[1], arguments[2]);=0A=
=0A=
}=0A=
=0A=
function _dayName(num, dfName, ctx){=0A=
=0A=
	if (ctx !=3D null){=0A=
=0A=
		var nodes =3D ctx.nextNode.selectNodes(=0A=
=0A=
			"//*[local-name()=3D'date-format' and =
namespace-uri()=3D'http://exslt.org/dates-and-times' and @name=3D'" + =
dfName +"' ]" +=0A=
=0A=
			"/*[local-name()=3D'days' and =
namespace-uri()=3D'http://exslt.org/dates-and-times']" +=0A=
=0A=
			"/*[local-name()=3D'day' and =
namespace-uri()=3D'http://exslt.org/dates-and-times']/text()");=0A=
=0A=
		if (nodes !=3D null)=0A=
=0A=
			return nodes[num].nodeValue;=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else=0A=
=0A=
		return gaLang[gsLang]["days"][num*1];=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>dayOfWeekInMonth</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"context" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function dayOfWeekInMonth(){=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date"))=0A=
=0A=
			)=0A=
=0A=
			return _dayOfWeekInMonth(oDate, arguments[1], arguments[2]);=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return _dayOfWeekInMonth(new Date(), arguments[1], arguments[2]);	=0A=
=0A=
}=0A=
=0A=
function _dayOfWeekInMonth(oDate, dfName, ctx){=0A=
=0A=
	var fdow =3D 0;=0A=
=0A=
	if (ctx !=3D null){=0A=
=0A=
		var nodes =3D ctx.nextNode.selectSingleNode(=0A=
=0A=
			"//*[local-name()=3D'date-format' and =
namespace-uri()=3D'http://exslt.org/dates-and-times' and @name=3D'" + =
dfName +"' ]" +=0A=
=0A=
			"/@first-day-of-week");=0A=
=0A=
		if (nodes !=3D null)=0A=
=0A=
			fdow =3D gaDayNames[nodes.nodeValue];=0A=
=0A=
	}=0A=
=0A=
	if (fdow > (oDate.getDay()-1))=0A=
=0A=
		return Math.floor((oDate.getDate())/7)+1;=0A=
=0A=
	else=0A=
=0A=
		return Math.floor((oDate.getDate())/7) + 1;=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>difference</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function difference(){=0A=
=0A=
	if (((d1 =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
		 (d1 =3D _validDate(arguments[0], "xs:date")) ||=0A=
=0A=
		 (d1 =3D _validDate(arguments[0], "xs:gYearMonth")) ||=0A=
=0A=
		 (d1 =3D _validDate(arguments[0], "xs:gYear"))=0A=
=0A=
		) &&=0A=
=0A=
		((d2 =3D _validDate(arguments[1], "xs:dateTime")) ||=0A=
=0A=
		 (d2 =3D _validDate(arguments[1], "xs:date")) ||=0A=
=0A=
		 (d2 =3D _validDate(arguments[1], "xs:gYearMonth")) ||=0A=
=0A=
		 (d2 =3D _validDate(arguments[1], "xs:gYear"))=0A=
=0A=
		 )=0A=
=0A=
		){// truncation=0A=
=0A=
		var diffMil =3D d2.valueOf() - d1.valueOf();=0A=
=0A=
		return _formatDuration(diffMil);=0A=
=0A=
	}=0A=
=0A=
	return Number.NaN;=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>duration</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"seconds" type=3D"number" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function duration(){=0A=
=0A=
	var oDate;=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var nN =3D new Number(arguments[0]);=0A=
=0A=
		if (isNaN(nN))=0A=
=0A=
			return '';=0A=
=0A=
		else=0A=
=0A=
			return _formatDuration(arguments[0] * 1000);=0A=
=0A=
	}else=0A=
=0A=
		return _formatDuration(seconds() * 1000);=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>formatDate</doc:name>=0A=
=0A=
	<doc:version>1.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"no"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"format" type=3D"string" default=3D"''" =
optional=3D"no"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"no"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"document" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function formatDate(date, format, dateF, ctx){=0A=
=0A=
	//Si en la url tenemos el idioma, lo cambiamos=0A=
	if (idioma()){=0A=
		dateF =3D "ga";=0A=
	}=0A=
	var oDate;=0A=
=0A=
	var re;=0A=
=0A=
	var retString =3D "";=0A=
=0A=
	if ((oDate =3D _validDate(date, "xs:dateTime")) ||=0A=
=0A=
		(oDate =3D _validDate(date, "xs:date")) ||=0A=
=0A=
		(oDate =3D _validDate(date, "xs:time")) ||=0A=
=0A=
		(oDate =3D _validDate(date, "xs:gYearMonth")) ||=0A=
=0A=
		(oDate =3D _validDate(date, "xs:gYear")) ||=0A=
=0A=
		(oDate =3D _validDate(date, "xs:gMonthDay")) ||=0A=
=0A=
		(oDate =3D _validDate(date, "xs:gMonth")) ||=0A=
=0A=
		(oDate =3D _validDate(date, "xs:gDay"))=0A=
=0A=
		){=0A=
=0A=
		for (var i=3D0; i < format.length;){=0A=
=0A=
			var s =3D i;=0A=
=0A=
					=0A=
=0A=
			switch(format.substr(i, 1)){=0A=
=0A=
				case "G"://        era designator          (Text)              AD=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"G"){i++;}=0A=
=0A=
					if (oDate.getFullYear() < 0){=0A=
=0A=
						retString +=3D "BC";=0A=
=0A=
					}else{=0A=
=0A=
						retString +=3D "AD";=0A=
=0A=
					}=0A=
=0A=
					break;=0A=
=0A=
				case "y"://        year                    (Number)            1996=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"y"){i++;}=0A=
=0A=
					if (i-s > 2){=0A=
=0A=
						retString +=3D oDate.getFullYear();=0A=
=0A=
					}else{=0A=
=0A=
						retString +=3D oDate.getFullYear().toString().substring(4-(i-s));=0A=
=0A=
					}=0A=
=0A=
					break;=0A=
=0A=
				case "M"://        month in year           (Text &amp; Number)     =
July &amp; 07=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"M"){i++;}=0A=
=0A=
					if (i-s <=3D 2){=0A=
=0A=
						retString +=3D pad(oDate.getMonth()+1);=0A=
=0A=
					}else{=0A=
=0A=
						retString +=3D _monthName(oDate.getMonth(), dateF, ctx);=0A=
=0A=
					}=0A=
=0A=
					break;=0A=
=0A=
				case "d"://        day in month            (Number)            10=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"d"){i++;}=0A=
=0A=
					retString +=3D pad(oDate.getDate());=0A=
=0A=
					break;=0A=
=0A=
				case "h"://        hour in am/pm (1~12)    (Number)            12=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"h"){i++;}=0A=
=0A=
					if (oDate.getHours() > 12){=0A=
=0A=
						retString +=3D pad(oDate.getHours()-12);=0A=
=0A=
					}else{=0A=
=0A=
						retString +=3D pad(oDate.getHours());=0A=
=0A=
					}=0A=
=0A=
					break;=0A=
=0A=
				case "H"://        hour in day (0~23)      (Number)            0=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"H"){i++;}=0A=
=0A=
					retString +=3D oDate.getHours();=0A=
=0A=
					break;=0A=
=0A=
				case "m"://        minute in hour          (Number)            30=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"m"){i++;}=0A=
=0A=
					retString +=3D pad(oDate.getMinutes());=0A=
=0A=
					break;=0A=
=0A=
				case "s"://        second in minute        (Number)            55=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"s"){i++;}=0A=
=0A=
					retString +=3D pad(oDate.getSeconds());=0A=
=0A=
					break;=0A=
=0A=
				case "S"://        millisecond             (Number)            978=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"S"){i++;}=0A=
=0A=
					retString +=3D oDate.getMilliseconds();=0A=
=0A=
					break;=0A=
=0A=
				case "E"://        day in week             (Text)              =
Tuesday=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"E"){i++;}if (i-s <=3D 3){=0A=
=0A=
						retString +=3D gaLang[dateF]["shortDays"][dayInWeek(date, dateF, =
ctx)];=0A=
=0A=
					}else{=0A=
=0A=
						retString +=3D gaLang[dateF]["days"][dayInWeek(date, dateF, ctx)];=0A=
=0A=
					}=0A=
=0A=
					break;=0A=
=0A=
				case "D"://        day in year             (Number)            189=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"D"){i++;}=0A=
=0A=
					retString +=3D _dayInYear(oDate.getFullYear(), oDate.getMonths(), =
oDate.getDate());=0A=
=0A=
					break;=0A=
=0A=
				case "F"://        day of week in month    (Number)            2 =
(2nd Wed in July)=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"F"){i++;}=0A=
=0A=
					retString +=3D dayOfWeekInMonth(oDate, dateF, ctx);=0A=
=0A=
					break;=0A=
=0A=
				case "w"://        week in year            (Number)            27=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"w"){i++;}=0A=
=0A=
					retString +=3D weekInYear(oDate, dateF, ctx);=0A=
=0A=
					break;=0A=
=0A=
				case "W"://        week in month           (Number)            2=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"W"){i++;}=0A=
=0A=
					retString +=3D weekInMonth(oDate, dateF, ctx);=0A=
=0A=
					break;=0A=
=0A=
				case "a"://        am/pm marker            (Text)              PM=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"a"){i++;}=0A=
=0A=
					if (oDate.getHours() > 12 ){=0A=
=0A=
						retString +=3D "PM"=0A=
=0A=
					}else{=0A=
=0A=
						retString +=3D "AM"=0A=
=0A=
					}=0A=
=0A=
					break;=0A=
=0A=
				case "k"://        hour in day (1~24)      (Number)            24=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"k"){i++;}=0A=
=0A=
					retString +=3D oDate.getHours();=0A=
=0A=
					break;=0A=
=0A=
				case "K"://        hour in am/pm (0~11)    (Number)            0=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"K"){i++;}=0A=
=0A=
					if (oDate.getHours() > 12){=0A=
=0A=
						retString +=3D oDate.getHours()-12;=0A=
=0A=
					}else{=0A=
=0A=
						retString +=3D oDate.getHours();=0A=
=0A=
					}=0A=
=0A=
					break;=0A=
=0A=
				case "z"://        time zone               (Text)              =
Pacific Standard Time=0A=
=0A=
				=0A=
=0A=
				=0A=
=0A=
				=0A=
=0A=
					while (format.substr(i, 1)=3D=3D"z"){i++;}=0A=
=0A=
					var tzo =3D oDate.getTimezoneOffset();=0A=
=0A=
					retString +=3D (tzo < 0?"-":"+") + pad(Math.abs(tzo / 60)) + ":" + =
pad(tzo % 60);=0A=
=0A=
 					break;=0A=
=0A=
 				case "'"://        escape for text         (Delimiter)=0A=
=0A=
 					if (format.substr(i+1, 1) =3D=3D "'"){=0A=
=0A=
 						i++;=0A=
=0A=
 						while (format.substr(i, 1)=3D=3D"'"){i++;}=0A=
=0A=
 						retString +=3D "'";=0A=
=0A=
 					}else{=0A=
=0A=
 						i++;=0A=
=0A=
 						while (format.substr(i, 1)!=3D"'" && i <=3D =
format.length){retString +=3D format.substr(i++, 1);}=0A=
=0A=
 						if (i >=3D format.length)return '';=0A=
=0A=
 						i++;=0A=
=0A=
 					}=0A=
=0A=
 					break;=0A=
=0A=
				default:=0A=
=0A=
					retString +=3D format.substr(i, 1);=0A=
=0A=
					i++;=0A=
=0A=
					break;=0A=
=0A=
			}=0A=
=0A=
		}=0A=
=0A=
	}=0A=
=0A=
	return retString;=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>hourInDay</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function hourInDay(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
		    (oDate =3D _validDate(arguments[0], "xs:time"))=0A=
=0A=
		   )=0A=
=0A=
			return oDate.getHours();=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return new Date().getHours();=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>leapYear</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"boolean" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function leapYear(){=0A=
=0A=
	if (arguments.length > 0 && arguments[0] !=3D ''){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYearMonth")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYear"))=0A=
=0A=
		    )=0A=
=0A=
			return (_isLeap(oDate.getFullYear())?true:false);=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return (_isLeap(new Date().getFullYear())?true:false);=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>minuteInHour</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function minuteInHour(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
		    (oDate =3D _validDate(arguments[0], "xs:time"))=0A=
=0A=
		   )=0A=
=0A=
			return oDate.getMinutes();=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return new Date().getMinutes();=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>monthAbbreviation</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"context" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function monthAbbreviation(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYearMonth")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gMonthDay"))=0A=
=0A=
		    )=0A=
=0A=
			return _monthAbbreviation(oDate.getMonth(), arguments[1], =
arguments[2]);=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else=0A=
=0A=
		return _monthAbbreviation(new Date().getMonth(), arguments[1], =
arguments[2]);=0A=
=0A=
}=0A=
=0A=
function _monthAbbreviation(num, dfName, ctx){//=0A=
=0A=
	if (ctx !=3D null){=0A=
=0A=
		var nodes =3D ctx.nextNode.selectNodes(=0A=
=0A=
			"//*[local-name()=3D'date-format' and =
namespace-uri()=3D'http://exslt.org/dates-and-times' and @name=3D'" + =
dfName +"' ]" +=0A=
=0A=
			"/*[local-name()=3D'months' and =
namespace-uri()=3D'http://exslt.org/dates-and-times']" +=0A=
=0A=
			"/*[local-name()=3D'month' and =
namespace-uri()=3D'http://exslt.org/dates-and-times']/@abbr");=0A=
=0A=
		if (nodes !=3D null)=0A=
=0A=
			return nodes[num].nodeValue;=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else{ //we could try local=0A=
=0A=
		return gaLang[gsLang]["shortMonths"][num*1];=0A=
=0A=
	}=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>monthInYear</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function monthInYear(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYearMonth")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gMonthDay")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYear"))=0A=
=0A=
		    )=0A=
=0A=
			return oDate.getMonth()+1;=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return new Date().getMonth()+1;=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>monthName</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"context" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function monthName(){//=0A=
=0A=
	if (arguments.length > 0){// && arguments[0] !=3D ''=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYearMonth")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gMonthDay"))=0A=
=0A=
		    )=0A=
=0A=
			return _monthName(oDate.getMonth(), arguments[1], arguments[2]);=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else=0A=
=0A=
		return _monthName(new Date().getMonth(), arguments[1],  arguments[2]);=0A=
=0A=
}=0A=
=0A=
function _monthName(num, dfName, ctx){//=0A=
=0A=
	if (ctx !=3D null){=0A=
=0A=
		var nodes =3D ctx.nextNode.selectNodes(=0A=
=0A=
			"//*[local-name()=3D'date-format' and =
namespace-uri()=3D'http://exslt.org/dates-and-times' and @name=3D'" + =
dfName +"' ]" +=0A=
=0A=
			"/*[local-name()=3D'months' and =
namespace-uri()=3D'http://exslt.org/dates-and-times']" +=0A=
=0A=
			"/*[local-name()=3D'month' and =
namespace-uri()=3D'http://exslt.org/dates-and-times']/text()");=0A=
=0A=
		if (nodes !=3D null)=0A=
=0A=
			return nodes[num].nodeValue;=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else=0A=
=0A=
		return gaLang[dfName]["months"][num*1];=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>parseDate</doc:name>=0A=
=0A=
	<doc:version>1.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"input-format" type=3D"string" default=3D"''" =
optional=3D"no"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"document" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function parseDate(date, inFormat, dfName, ctx){//0001=0A=
=0A=
	var oDate;=0A=
=0A=
	if (inFormat =3D=3D ""){=0A=
=0A=
		if ((oDate =3D _validDate(date, "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(date, "xs:date")) ||=0A=
=0A=
			(oDate =3D _validDate(date, "xs:time")) ||=0A=
=0A=
			(oDate =3D _validDate(date, "xs:gYearMonth")) ||=0A=
=0A=
			(oDate =3D _validDate(date, "xs:gYear")) ||=0A=
=0A=
			(oDate =3D _validDate(date, "xs:gMonthDay")) ||=0A=
=0A=
			(oDate =3D _validDate(date, "xs:gMonth")) ||=0A=
=0A=
			(oDate =3D _validDate(date, "xs:gDay"))=0A=
=0A=
			){=0A=
=0A=
			return _formatDate(oDate, "xs:dateTime");=0A=
=0A=
		}=0A=
=0A=
	}else{=0A=
=0A=
		if (oDate =3D _validDate(date, inFormat))=0A=
=0A=
         return _formatDate(oDate, dfName);=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>secondInMinute</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function secondInMinute(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
		    (oDate =3D _validDate(arguments[0], "xs:time"))=0A=
=0A=
		   )=0A=
=0A=
			return oDate.getSeconds();=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return new Date().getSeconds();=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>seconds</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function seconds(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYearMonth")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYear"))=0A=
=0A=
			)=0A=
=0A=
			return oDate.valueOf()/1000;=0A=
=0A=
		else =0A=
=0A=
			if (oDate =3D _validDuration(arguments[0]))=0A=
=0A=
				return oDate.Seconds();=0A=
=0A=
			else=0A=
=0A=
				return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return Math.floor(new Date().valueOf()/1000);//current local date/time=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>sum</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"durations" type=3D"node-set" default=3D"''" =
optional=3D"no"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function sum(ctx){=0A=
=0A=
	var sDate =3D "P0S";=0A=
=0A=
	if (typeof(ctx) =3D=3D "object"){=0A=
=0A=
		if (ctx.length){=0A=
=0A=
			for (var i=3D0; i < ctx.length; i++){=0A=
=0A=
				ctxN  =3D ctx.item(i);=0A=
=0A=
				if (ctxN.nodeType =3D=3D 1){=0A=
=0A=
					if (!(sDate =3D addDuration(sDate, _wander(ctxN))))=0A=
=0A=
						return '';=0A=
=0A=
				}=0A=
=0A=
				if (ctxN.nodeType =3D=3D 2){=0A=
=0A=
					if (!(sDate =3D addDuration(sDate, ctxN.nodeValue)))=0A=
=0A=
						return '';=0A=
=0A=
				}=0A=
=0A=
			}=0A=
=0A=
		}else{=0A=
=0A=
			if (!(sDate =3D addDuration(sDate, ctx.nodeValue)))=0A=
=0A=
					return '';=0A=
=0A=
		}=0A=
=0A=
	}else{=0A=
=0A=
		return '';=0A=
=0A=
	}=0A=
=0A=
	return sDate;=0A=
=0A=
}=0A=
=0A=
function   _wander(ctx){=0A=
=0A=
	var sDate =3D "P0S";=0A=
=0A=
	for (var i=3D0; i < ctx.childNodes.length; i++){=0A=
=0A=
		ctxN =3D ctx.childNodes[i];=0A=
=0A=
		switch(ctxN.nodeType){=0A=
=0A=
			case 1:=0A=
=0A=
				if (!(sDate =3D addDuration(sDate, _wander(ctxN))))=0A=
=0A=
						return '';=0A=
=0A=
				break;=0A=
=0A=
			case 3:=0A=
=0A=
				if (!(sDate =3D addDuration(sDate, ctxN.nodeValue)))=0A=
=0A=
						return '';=0A=
=0A=
				break;=0A=
=0A=
			default:=0A=
=0A=
				break;=0A=
=0A=
		}=0A=
=0A=
	}=0A=
=0A=
	return sDate;=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>time</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"string" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function time(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime"))||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:time"))=0A=
=0A=
		)=0A=
=0A=
			return _formatDate(oDate, "xs:time");=0A=
=0A=
		else=0A=
=0A=
			return '';=0A=
=0A=
	}else=0A=
=0A=
		return _formatDate(new Date(), "xs:time");=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>weekInMonth</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"context" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function weekInMonth(){=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date"))=0A=
=0A=
			)=0A=
=0A=
			return _weekInMonth(oDate, arguments[1], arguments[2]);=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return _weekInMonth(new Date(), arguments[1], arguments[2]);	=0A=
=0A=
}=0A=
=0A=
function _weekInMonth(oDate, dfName, ctx){=0A=
=0A=
	var fdow =3D 0;=0A=
=0A=
	if (ctx !=3D null){=0A=
=0A=
		var nodes =3D ctx.nextNode.selectSingleNode(=0A=
=0A=
			"//*[local-name()=3D'date-format' and =
namespace-uri()=3D'http://exslt.org/dates-and-times' and @name=3D'" + =
dfName +"' ]" +=0A=
=0A=
			"/@first-day-of-week");=0A=
=0A=
		if (nodes !=3D null)=0A=
=0A=
			fdow =3D gaDayNames[nodes.nodeValue];=0A=
=0A=
	}=0A=
=0A=
	var f =3D new Date(oDate);=0A=
=0A=
	f.setDate(1)=0A=
=0A=
	var fd =3D f.getDay()-1;=0A=
=0A=
	var dt =3D oDate.getDate() + fd - fdow;=0A=
=0A=
	return Math.floor((dt)/7)+1;=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>weekInYear</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"date-format" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
		<doc:arg name=3D"context" type=3D"context" default=3D"null" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function weekInYear(){=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date"))=0A=
=0A=
			)=0A=
=0A=
			return _weekInYear(oDate, arguments[1], arguments[2]);=0A=
=0A=
	}else =0A=
=0A=
		return _weekInYear(new Date());=0A=
=0A=
	return '';=0A=
=0A=
}=0A=
=0A=
function _weekInYear(oDate, dfName, ctx){=0A=
=0A=
	var fdow =3D 0;=0A=
=0A=
	if (ctx !=3D null){=0A=
=0A=
		var nodes =3D ctx.nextNode.selectSingleNode(=0A=
=0A=
			"//*[local-name()=3D'date-format' and =
namespace-uri()=3D'http://exslt.org/dates-and-times' and @name=3D'" + =
dfName +"' ]" +=0A=
=0A=
			"/@first-day-of-week");=0A=
=0A=
		if (nodes !=3D null)=0A=
=0A=
			fdow =3D gaDayNames[nodes.nodeValue];=0A=
=0A=
		return Math.ceil(_dayInYear(oDate.getFullYear(), oDate.getMonth(), =
oDate.getDate()+(7-fdow)) / 7);=0A=
=0A=
	}else=0A=
=0A=
		return Math.ceil(_dayInYear(oDate.getFullYear(), oDate.getMonth(), =
oDate.getDate()) / 7);=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
<doc:function date=3D"2001-06-12">=0A=
=0A=
	<doc:name>year</doc:name>=0A=
=0A=
	<doc:version>2.0</doc:version>=0A=
=0A=
	<doc:return type=3D"number" />=0A=
=0A=
	<doc:args>=0A=
=0A=
		<doc:arg name=3D"date" type=3D"string" default=3D"''" =
optional=3D"yes"></doc:arg>=0A=
=0A=
	</doc:args>=0A=
=0A=
</doc:function>=0A=
=0A=
**/=0A=
=0A=
function year(){//=0A=
=0A=
	if (arguments.length > 0){=0A=
=0A=
		var oDate;=0A=
=0A=
		if ((oDate =3D _validDate(arguments[0], "xs:dateTime")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:date")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYearMonth")) ||=0A=
=0A=
			(oDate =3D _validDate(arguments[0], "xs:gYear"))=0A=
=0A=
		    )=0A=
=0A=
			return oDate.getFullYear();=0A=
=0A=
		else=0A=
=0A=
			return Number.NaN;=0A=
=0A=
	}else=0A=
=0A=
		return new Date().getFullYear();=0A=
=0A=
}=0A=
=0A=
/**=0A=
=0A=
Private functions.=0A=
=0A=
**/=0A=
=0A=
function _validDate(date, format){=0A=
=0A=
	var parts;=0A=
=0A=
	var oDate =3D new Date(-62135596800000); // Mon Jan 1 00:00:00 UTC 1=0A=
=0A=
	switch(format){=0A=
=0A=
		case "xs:dateTime": //(CCYY-MM-DDThh:mm:ss)=0A=
=0A=
			var re =3D new =
RegExp("^([0-9]{4})-([0-9]{2})-([0-9]{2})(T([0-9]{2})(:([0-9]{2})(:([0-9]=
{2}))?)?)?(Z)?([\+\-][0-9]{2}:[0-9]{2})?$");=0A=
=0A=
			if (parts=3Dre.exec(date)){=0A=
=0A=
				if (parts[10] =3D=3D "Z"){=0A=
=0A=
					oDate.setFullYear(parts[1], parts[2]-1, parts[3]);=0A=
=0A=
					oDate.setHours(parts[5], parts[7], parts[9]);=0A=
=0A=
					oDate.setMinutes(oDate.getMinutes()-oDate.getTimezoneOffset());=0A=
=0A=
					gsSuppliedFormat =3D "xs:dateTime";=0A=
=0A=
					return oDate;=0A=
=0A=
				}else{=0A=
=0A=
					oDate.setFullYear(parts[1], parts[2]-1, parts[3]);=0A=
=0A=
					oDate.setHours(parts[5], parts[7], parts[9]);=0A=
=0A=
					gsSuppliedFormat =3D "xs:dateTime";=0A=
=0A=
					return oDate;=0A=
=0A=
				}=0A=
=0A=
			}=0A=
=0A=
			break;=0A=
=0A=
		case "xs:date": //(CCYY-MM-DD) =0A=
=0A=
			var re =3D new RegExp("^([0-9]{4})-([0-9]{2})-([0-9]{2})$");=0A=
=0A=
			if (parts=3Dre.exec(date)){=0A=
=0A=
				oDate.setFullYear(parts[1], parts[2]-1, parts[3]);=0A=
=0A=
				gsSuppliedFormat =3D "xs:date";=0A=
=0A=
				return oDate;=0A=
=0A=
			}=0A=
=0A=
			break;=0A=
=0A=
		case "xs:time": //(hh:mm:ss)=0A=
=0A=
			var re =3D new RegExp("^([0-9]{2})(:([0-9]{2})(:([0-9]{2}))?)?(Z)?$");=0A=
=0A=
			if (parts=3Dre.exec(date)){=0A=
=0A=
				if (parts[9] =3D=3D "Z"){=0A=
=0A=
					oDate.setHours(parts[1], parts[3], parts[5]);=0A=
=0A=
					oDate.setMinutes(oDate.getMinutes()-oDate.getTimezoneOffset());=0A=
=0A=
					gsSuppliedFormat =3D "xs:time";=0A=
=0A=
					return oDate;=0A=
=0A=
				}else{=0A=
=0A=
					oDate.setHours(parts[1], parts[3], parts[5]);=0A=
=0A=
					gsSuppliedFormat =3D "xs:time";=0A=
=0A=
					return oDate;=0A=
=0A=
				}=0A=
=0A=
			}=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gYearMonth": //(CCYY-MM)=0A=
=0A=
			var re =3D new RegExp("^([0-9]{4})-([0-9]{2})$");=0A=
=0A=
			if (parts=3Dre.exec(date)){=0A=
=0A=
				oDate.setFullYear(parts[1], parts[2]-1);=0A=
=0A=
				gsSuppliedFormat =3D "xs:gYearMonth";=0A=
=0A=
				return oDate;=0A=
=0A=
			}=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gYear": //(CCYY)=0A=
=0A=
			var re =3D new RegExp("^([0-9]{4})$");=0A=
=0A=
			if (parts=3Dre.exec(date)){=0A=
=0A=
				oDate.setFullYear(parts[1]);=0A=
=0A=
				gsSuppliedFormat =3D "xs:gYear";=0A=
=0A=
				return oDate;=0A=
=0A=
			}=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gMonthDay": //(^--MM-DD)=0A=
=0A=
			var re =3D new RegExp("--([0-9]{2})-([0-9]{2})");=0A=
=0A=
			if (parts=3Dre.exec(date)){=0A=
=0A=
				oDate.setMonth(parts[1]-1, parts[2]);=0A=
=0A=
				gsSuppliedFormat =3D "xs:gMonthDay";=0A=
=0A=
				return oDate;=0A=
=0A=
			}=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gMonth": //(--MM--)=0A=
=0A=
			var re =3D new RegExp("^--([0-9]{2})--$");=0A=
=0A=
			if (parts=3Dre.exec(date)){=0A=
=0A=
				oDate.setMonth(parts[1]-1);=0A=
=0A=
				gsSuppliedFormat =3D "xs:gMonth";=0A=
=0A=
				return oDate;=0A=
=0A=
			}=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gDay": //(---DD)=0A=
=0A=
			var re =3D new RegExp("^---([0-9]{2})$");=0A=
=0A=
			if (parts=3Dre.exec(date)){=0A=
=0A=
				oDate.setDate(parts[1]);=0A=
=0A=
				gsSuppliedFormat =3D "xs:gDay";=0A=
=0A=
				return oDate;=0A=
=0A=
			}=0A=
=0A=
			break;=0A=
=0A=
		default:=0A=
=0A=
			// format string =0A=
=0A=
			var Z =3D "";=0A=
=0A=
			for (var i=3D0,j=3D0; i < format.length & oDate.toString() !=3D =
"NaN";){=0A=
=0A=
				var s =3D j;=0A=
=0A=
				switch(format.substr(i, 1)){=0A=
=0A=
					case "G"://        era designator          (Text)              AD=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"G"){i++;j++;}=0A=
=0A=
						j++;=0A=
=0A=
						if (date.substr(s,j-s) =3D=3D "BC" || date.substr(s,j-s) =3D=3D =
"bc"){=0A=
=0A=
							oDate.setFullYear(-oDate.getFullYear);=0A=
=0A=
						}=0A=
=0A=
						break;=0A=
=0A=
					case "y"://        year                    (Number)            1996=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"y"){i++;j++;}=0A=
=0A=
						oDate.setYear(date.substr(s,j-s));=0A=
=0A=
						break;=0A=
=0A=
					case "M"://        month in year           (Text &amp; Number)     =
July &amp; 07=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"M"){i++;j++;}=0A=
=0A=
						if (i-s <=3D 2){=0A=
=0A=
							oDate.setMonth(date.substr(s,j-s)-1);=0A=
=0A=
						}else{=0A=
=0A=
							oDate.setMonth(_monthNumber(date.substr(s,j-s)));=0A=
=0A=
						}=0A=
=0A=
						break;=0A=
=0A=
					case "d"://        day in month            (Number)            10=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"d"){i++;j++;}=0A=
=0A=
						oDate.setDate(date.substr(s,j-s));=0A=
=0A=
						break;=0A=
=0A=
					case "h"://        hour in am/pm (1~12)    (Number)            12=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"h"){i++;j++;}=0A=
=0A=
						oDate.setHours(date.substr(s,j-s));=0A=
=0A=
						break;=0A=
=0A=
					case "H"://        hour in day (0~23)      (Number)            0=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"H"){i++;j++;}=0A=
=0A=
						oDate.setHours(date.substr(s,j-s));=0A=
=0A=
						break;=0A=
=0A=
					case "m"://        minute in hour          (Number)            30=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"m"){i++;j++;}=0A=
=0A=
						oDate.setMinutes(date.substr(s,j-s));=0A=
=0A=
						break;=0A=
=0A=
					case "s"://        second in minute        (Number)            55=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"s"){i++;j++;}=0A=
=0A=
						oDate.setSeconds(date.substr(s,j-s));=0A=
=0A=
						break;=0A=
=0A=
					case "S"://        millisecond             (Number)            978=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"S"){i++;j++;}=0A=
=0A=
						oDate.setMilliseconds(date.substr(s,j-s));=0A=
=0A=
						break;=0A=
=0A=
					case "E"://        day in week             (Text)              =
Tuesday=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"E"){i++;j++;}=0A=
=0A=
						while (format.substr(i+1, 1)!=3Ddate.substr(j, 1)){j++;}=0A=
=0A=
						break;=0A=
=0A=
					case "D"://        day in year             (Number)            189=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"D"){i++;j++;}=0A=
=0A=
						while (format.substr(i+1, 1)!=3Ddate.substr(j, 1)){j++;}=0A=
=0A=
						break;=0A=
=0A=
					case "F"://        day of week in month    (Number)            2 =
(2nd Wed in July)=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"F"){i++;j++;}=0A=
=0A=
						break;=0A=
=0A=
					case "w"://        week in year            (Number)            27=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"w"){i++;j++;}=0A=
=0A=
						while (format.substr(i+1, 1)!=3Ddate.substr(j, 1)){j++;}=0A=
=0A=
						break;=0A=
=0A=
					case "W"://        week in month           (Number)            2=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"W"){i++;j++;}=0A=
=0A=
						while (format.substr(i+1, 1)!=3Ddate.substr(j, 1)){j++;}=0A=
=0A=
						break;=0A=
=0A=
					case "a"://        am/pm marker            (Text)              PM=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"a"){i++;j++;}=0A=
=0A=
						j++;=0A=
=0A=
						if (date.substr(s,j-s) =3D=3D "PM" || date.substr(s,j-s) =3D=3D =
"pm")=0A=
=0A=
							oDate.setHours(oDate.getHours()+12);=0A=
=0A=
						break;=0A=
=0A=
					case "k"://        hour in day (1~24)      (Number)            24=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"k"){i++;j++;}=0A=
=0A=
						oDate.setHours(date.substr(s,j-s));=0A=
=0A=
						break;=0A=
=0A=
					case "K"://        hour in am/pm (0~11)    (Number)            0=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"K"){i++;j++;}=0A=
=0A=
						oDate.setHours(date.substr(s,j-s));=0A=
=0A=
						break;=0A=
=0A=
					case "z"://        time zone               (Text)              =
Pacific Standard Time=0A=
=0A=
						while (format.substr(i, 1)=3D=3D"z"){i++;j++;}=0A=
=0A=
						while (format.substr(i+1, 1)!=3Ddate.substr(j, 1)){j++;}=0A=
=0A=
						//oDate.setMinutes(oDate.getMinutes() - oDate.getTimezoneOffset());=0A=
=0A=
						Z =3D date.substr(s,j-s);=0A=
=0A=
 						break;=0A=
=0A=
 					case "'"://        escape for text         (Delimiter)=0A=
=0A=
 						if (format.substr(i+1, 1) =3D=3D "'"){=0A=
=0A=
 							i+=3D2;=0A=
=0A=
 						}else{=0A=
=0A=
 							i++;=0A=
=0A=
 							while (format.substr(i, 1)!=3D"'"){i++;j++;}=0A=
=0A=
 							i++;=0A=
=0A=
 						}=0A=
=0A=
 						break;=0A=
=0A=
					default:=0A=
=0A=
						if (format.substr(i, 1) !=3D date.substr(j, 1)){=0A=
=0A=
							return false;=0A=
=0A=
						}=0A=
=0A=
						i++;j++;=0A=
=0A=
						break;=0A=
=0A=
				}=0A=
=0A=
			}=0A=
=0A=
			if (j < date.length)=0A=
=0A=
				return false;=0A=
=0A=
			if (oDate.toString() !=3D "NaN"){=0A=
=0A=
				if (Z !=3D ""){=0A=
=0A=
					var re =3D new RegExp("([\+\-][0-9]{2})?:([0-9]{2})?");=0A=
=0A=
					if (parts=3Dre.exec(Z)){=0A=
=0A=
						// check GMT/BST=0A=
=0A=
						var tzo =3D parts[1]*60 + parts[2];=0A=
=0A=
						//if (tzo !=3D new Date().getTimezoneOffset()){=0A=
=0A=
						//	oDate.setMinutes(oDate.getMinutes() - =
(oDate.getTimezoneOffset() - tzo))=0A=
=0A=
						//}=0A=
=0A=
					}=0A=
=0A=
				}=0A=
=0A=
				gsSuppliedFormat =3D "custom";=0A=
=0A=
				return oDate;=0A=
=0A=
			}=0A=
=0A=
			break;=0A=
=0A=
	}=0A=
=0A=
	return false;=0A=
=0A=
}=0A=
=0A=
function _formatDate(oDate, format){=0A=
=0A=
	if (oDate =3D=3D Number.NaN)return Number.NaN;=0A=
=0A=
	switch(format){=0A=
=0A=
		case "xs:dateTime": //(CCYY-MM-DDThh:mm:ss)=0A=
=0A=
			var tzo =3D oDate.getTimezoneOffset(); =0A=
=0A=
			return oDate.getFullYear() + "-" + pad(oDate.getMonth()+1) + "-" + =
pad(oDate.getDate()) + "T" +=0A=
=0A=
				   pad(oDate.getHours()) + ":" + pad(oDate.getMinutes()) + ":" + =
pad(oDate.getSeconds()) + (tzo < 0?"-":"+") + pad(Math.abs(tzo/60)) + =
":" + pad(tzo % 60);=0A=
=0A=
			break;=0A=
=0A=
		case "xs:date": //(CCYY-MM-DD) =0A=
=0A=
			return oDate.getFullYear() + "-" + pad(oDate.getMonth()+1) + "-" + =
pad(oDate.getDate());=0A=
=0A=
			break;=0A=
=0A=
		case "xs:time": //(hh:mm:ss)=0A=
=0A=
			var tzo =3D oDate.getTimezoneOffset(); =0A=
=0A=
			return pad(oDate.getHours()) + ":" + pad(oDate.getMinutes()) + ":" + =
pad(oDate.getSeconds()) + (tzo < 0?"-":"+") + pad(Math.abs(tzo/60)) + =
":" + pad(tzo % 60);=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gYearMonth": //(CCYY-MM)=0A=
=0A=
			return oDate.getFullYear() + "-" + pad(oDate.getMonth()+1);=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gYear": //(CCYY)=0A=
=0A=
			return oDate.getFullYear();=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gMonthDay": //(--MM-DD)=0A=
=0A=
			return pad(oDate.getMonth() + 1) + "-" + pad(oDate.getDate());=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gMonth": //(--MM--)=0A=
=0A=
			return pad(oDate.getMonth()+1);=0A=
=0A=
			break;=0A=
=0A=
		case "xs:gDay": //(---DD)=0A=
=0A=
			return pad(oDate.getDate());=0A=
=0A=
			break;=0A=
=0A=
	}=0A=
=0A=
	return false;=0A=
=0A=
}=0A=
=0A=
function pad(v){=0A=
=0A=
	return (v<10?"0"+v:v);=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function _validDuration(d){=0A=
=0A=
        var parts;=0A=
=0A=
        var re =3D new =
RegExp("^([\-])?P(([0-9]+)Y)?(([0-9]+)M)?(([0-9]+)D)?((T)?(([0-9]+)H)?(([=
0-9]+)M)?((([0-9]+)(\.([0-9]+))?)S)?)?$");=0A=
=0A=
        if (parts =3D re.exec(d)){=0A=
=0A=
                if ((/T$/.exec(d)) || (parts[9] =3D=3D "T" && =
parts[11]+parts[13]+parts[16]+parts[18]=3D=3D ""))// ~(:+(|) duh!!!=0A=
=0A=
                        return Number.NaN;=0A=
=0A=
                return new Duration(parts[1], parts[3], parts[5], =
parts[7], parts[11], parts[13], parts[16], parts[18]);=0A=
=0A=
        }=0A=
=0A=
        return Number.NaN;=0A=
=0A=
}=0A=
=0A=
=0A=
=0A=
function Duration(pm, years, months, days, hours, minutes, seconds, =
fraction){=0A=
=0A=
	this.pm =3D pm;=0A=
=0A=
	this.years =3D years*1;=0A=
=0A=
	this.months =3D months*1;=0A=
=0A=
	this.days =3D days*1;=0A=
=0A=
	this.hours =3D hours*1;=0A=
=0A=
	this.minutes =3D minutes*1;=0A=
=0A=
	this.seconds =3D seconds*1;=0A=
=0A=
	this.fraction =3D fraction*1;=0A=
=0A=
	this.milliseconds =3D eval('0.'+fraction) * 100;=0A=
=0A=
	this.mask =3D ((this.years?1:0)<<6) + ((this.months?1:0)<<5) + =
((this.days?1:0)<<4) + ((this.hours?1:0)<<3) + ((this.minutes?1:0)<<2) + =
((this.seconds?1:0)<<1) + (this.milliseconds?1:0);=0A=
=0A=
	this.addDate =3D =
function(d){d.setFullYear(eval(this.pm+this.years)+d.getFullYear(),eval(t=
his.pm+this.months)+d.getMonth(),eval(this.pm+this.days)+d.getDate());d.s=
etHours(eval(this.pm+this.hours)+d.getHours(),eval(this.pm+this.minutes)+=
d.getMinutes(),eval(this.pm+this.seconds)+d.getSeconds());d.setMillisecon=
ds(eval(this.pm+this.milliseconds));return d;}=0A=
=0A=
	this.Seconds =3D function(){if (this.years || this.months)return =
Number.NaN;return this.days*giDayMill + this.hours*giHourMill + =
this.minutes*giMinMill + this.seconds*giSecMill;}=0A=
=0A=
}=0A=
=0A=
var giYearMill =3D 31536000000;=0A=
=0A=
var giMonthMill =3D 2592000000;=0A=
=0A=
var giDayMill =3D 86400000;=0A=
=0A=
var giHourMill =3D 3600000;=0A=
=0A=
var giMinMill =3D 60000;=0A=
=0A=
var giSecMill =3D 1000;=0A=
=0A=
function _formatDuration(du){=0A=
=0A=
	if (typeof(du) =3D=3D "object"){=0A=
=0A=
		var pm =3D du.pm;=0A=
=0A=
		var y =3D du.years;=0A=
=0A=
		var m =3D du.months;=0A=
=0A=
		var d =3D du.days;=0A=
=0A=
		var h =3D du.hours;=0A=
=0A=
		var n =3D du.minutes;=0A=
=0A=
		var s =3D du.seconds + du.milliseconds/1000;=0A=
=0A=
		=0A=
=0A=
		if (y+m+d+h+n+s =3D=3D 0)=0A=
=0A=
			return 'P0S';=0A=
=0A=
		return pm + "P" + =0A=
=0A=
				(y!=3D0?y + "Y":'') + =0A=
=0A=
				(m!=3D0?m + "M":'') + =0A=
=0A=
				(d!=3D0?d + "D":'') + =0A=
=0A=
				(h+n+s!=3D0?"T":'') +=0A=
=0A=
				(h!=3D0?h + "H":'') + =0A=
=0A=
				(n!=3D0?n + "M":'') + =0A=
=0A=
				(s!=3D0?s + "S":'');=0A=
=0A=
	}else{=0A=
=0A=
		var pm =3D (du<0?'-':'');=0A=
=0A=
		du =3D Math.abs(du);=0A=
=0A=
		var d =3D Math.floor((du) / giDayMill);=0A=
=0A=
		var h =3D Math.floor((du % giDayMill) / giHourMill);=0A=
=0A=
		var n =3D Math.floor((du % giHourMill) / giMinMill);=0A=
=0A=
		var s =3D Math.floor((du % giMinMill) / giSecMill) + (du % =
giSecMill)/1000;=0A=
=0A=
		return pm + "P" + =0A=
=0A=
				(d!=3D0?d + "D":'') + =0A=
=0A=
				(h+n+s!=3D0?"T":'') +=0A=
=0A=
				(h!=3D0?h + "H":'') + =0A=
=0A=
				(n!=3D0?n + "M":'') + =0A=
=0A=
				(s!=3D0?s + "S":'');=0A=
=0A=
	}=0A=
=0A=
}=0A=
=0A=
=0A=
function formatLong(_long, format, dateF, ctx){=0A=
	var d =3D new Date(_long);=0A=
	var smo =3D d.getMonth()+1;=0A=
	if (smo<10)=0A=
		smo =3D "0"+smo;=0A=
	var sd =3D d.getDate();=0A=
	if (d.getDate()<10)=0A=
		sd =3D "0"+sd;=0A=
	var sh =3D d.getHours();=0A=
	if (d.getHours()<10)=0A=
		sh =3D "0"+sh;=0A=
	var sm =3D d.getMinutes();=0A=
	if (d.getMinutes()<10)=0A=
		sm =3D "0"+sm;=0A=
	var ss =3D d.getSeconds();=0A=
	if (d.getSeconds()<10)=0A=
		ss =3D "0"+ss;=0A=
	var sf =3D d.getFullYear()+"-"+smo+"-"+sd+"T"+sh+":"+sm+":"+ss+"+00:00";=0A=
	=0A=
	return formatDate(sf, format, dateF, ctx);=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/CEC5A24A0A80B1A101301D48004216CC/LVDG_seovoz.js

var =
base64s=3D"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789=
+/";=0A=
=0A=
function encode(decStr){=0A=
=0A=
  var bits, dual, i =3D 0, encOut =3D '';=0A=
  while(decStr.length >=3D i + 3){=0A=
    bits =3D=0A=
    (decStr.charCodeAt(i++) & 0xff) <<16 |=0A=
    (decStr.charCodeAt(i++) & 0xff) <<8  |=0A=
     decStr.charCodeAt(i++) & 0xff;=0A=
    encOut +=3D=0A=
     base64s.charAt((bits & 0x00fc0000) >>18) +=0A=
     base64s.charAt((bits & 0x0003f000) >>12) +=0A=
     base64s.charAt((bits & 0x00000fc0) >> 6) +=0A=
     base64s.charAt((bits & 0x0000003f));=0A=
    }=0A=
  if(decStr.length -i > 0 && decStr.length -i < 3){=0A=
    dual =3D Boolean(decStr.length -i -1);=0A=
    bits =3D=0A=
     ((decStr.charCodeAt(i++) & 0xff) <<16) |=0A=
     (dual ? (decStr.charCodeAt(i) & 0xff) <<8 : 0);=0A=
    encOut +=3D=0A=
      base64s.charAt((bits & 0x00fc0000) >>18) +=0A=
      base64s.charAt((bits & 0x0003f000) >>12) +=0A=
      (dual ? base64s.charAt((bits & 0x00000fc0) >>6) : '=3D') +=0A=
      '=3D';=0A=
    }=0A=
  return encOut=0A=
  }=0A=
=0A=
=0A=
function seovoz(dominio,grupo,titulo,identificador,seccion){=0A=
	document.write("      <img alt=3D\"\" =
src=3D\"http://seovoz.lavozdegalicia.es/pixel.php?");=0A=
	document.write("h=3D");=0A=
	document.write(encode(document.domain));=0A=
	document.write("&u=3D");=0A=
	document.write(encode(document.URL));=0A=
	document.write("&r=3D");=0A=
	document.write(encode(document.referrer));=0A=
	if(dominio){=0A=
		document.write("&d=3D");=0A=
		document.write(encode(dominio));=0A=
	}=0A=
        if(grupo){=0A=
                document.write("&g=3D");=0A=
                document.write(encode(grupo));=0A=
        }=0A=
        if(titulo){=0A=
                document.write("&t=3D");=0A=
                document.write(encode(titulo));=0A=
        }=0A=
	if(identificador){=0A=
		document.write("&i=3D");=0A=
		document.write(encode(identificador));=0A=
	}=0A=
        if(seccion){=0A=
                document.write("&s=3D");=0A=
                document.write(encode(seccion));=0A=
        }=0A=
	document.write("&random=3D");=0A=
	document.write(Math.floor(Math.random()*100000));=0A=
	document.write('\" ');=0A=
	document.write(" width=3D\"1\" height=3D\"1\" ");=0A=
	document.write("/>\r\n");=0A=
=0A=
	return true;=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1189597585708264/LVDG_AjaxJDom.js

//Estas variables estaban antes en AJAXMisc, se cambiaron por el orden =
de inclusion de los JS.=0A=
//=0A=
// Based on=0A=
// =
<http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-195=
0641247>=0A=
var DOM_ELEMENT_NODE =3D 1;=0A=
var DOM_ATTRIBUTE_NODE =3D 2;=0A=
var DOM_TEXT_NODE =3D 3;=0A=
var DOM_CDATA_SECTION_NODE =3D 4;=0A=
var DOM_ENTITY_REFERENCE_NODE =3D 5;=0A=
var DOM_ENTITY_NODE =3D 6;=0A=
var DOM_PROCESSING_INSTRUCTION_NODE =3D 7;=0A=
var DOM_COMMENT_NODE =3D 8;=0A=
var DOM_DOCUMENT_NODE =3D 9;=0A=
var DOM_DOCUMENT_TYPE_NODE =3D 10;=0A=
var DOM_DOCUMENT_FRAGMENT_NODE =3D 11;=0A=
var DOM_NOTATION_NODE =3D 12;=0A=
=0A=
=0A=
var xpathdebug =3D false; // trace xpath parsing=0A=
var xsltdebug =3D false; // trace xslt processing=0A=
// hasta aqui AJAXMisc=0A=
=0A=
// Copyright 2005 Google Inc.=0A=
// All Rights Reserved=0A=
//=0A=
// An XML parse and a minimal DOM implementation that just supportes=0A=
// the subset of the W3C DOM that is used in the XSLT implementation.=0A=
//=0A=
// References: =0A=
//=0A=
// [DOM] W3C DOM Level 3 Core Specification=0A=
//       <http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/>.=0A=
//=0A=
// =0A=
// Author: Steffen Meschkat <mesch@google.com>=0A=
=0A=
// NOTE: The split() method in IE omits empty result strings. This is=0A=
// utterly annoying. So we don't use it here.=0A=
=0A=
// Resolve entities in XML text fragments. According to the DOM=0A=
// specification, the DOM is supposed to resolve entity references at=0A=
// the API level. I.e. no entity references are passed through the=0A=
// API. See "Entities and the DOM core", p.12, DOM 2 Core=0A=
// Spec. However, different browsers actually pass very different=0A=
// values at the API.=0A=
//=0A=
function xmlResolveEntities(s) {=0A=
=0A=
  var parts =3D stringSplit(s, '&');=0A=
=0A=
  var ret =3D parts[0];=0A=
  for (var i =3D 1; i < parts.length; ++i) {=0A=
    var rp =3D stringSplit(parts[i], ';');=0A=
    if (rp.length =3D=3D 1) {=0A=
      // no entity reference: just a & but no ;=0A=
      ret +=3D parts[i];=0A=
      continue;=0A=
    }=0A=
    =0A=
    var ch;=0A=
    switch (rp[0]) {=0A=
      case 'lt': =0A=
        ch =3D '<';=0A=
        break;=0A=
      case 'gt': =0A=
        ch =3D '>';=0A=
        break;=0A=
      case 'amp': =0A=
        ch =3D '&';=0A=
        break;=0A=
      case 'quot': =0A=
        ch =3D '"';=0A=
        break;=0A=
      case 'apos': =0A=
        ch =3D '\'';=0A=
        break;=0A=
      case 'nbsp': =0A=
        ch =3D String.fromCharCode(160);=0A=
        break;=0A=
      default:=0A=
        // Cool trick: let the DOM do the entity decoding. We assign=0A=
        // the entity text through non-W3C DOM properties and read it=0A=
        // through the W3C DOM. W3C DOM access is specified to resolve=0A=
        // entities. =0A=
        var span =3D window.document.createElement('span');=0A=
        span.innerHTML =3D '&' + rp[0] + '; ';=0A=
        ch =3D span.childNodes[0].nodeValue.charAt(0);=0A=
    }=0A=
    ret +=3D ch + rp[1];=0A=
  }=0A=
=0A=
  return ret;=0A=
}=0A=
=0A=
=0A=
// Parses the given XML string with our custom, JavaScript XML parser. =
Written=0A=
// by Steffen Meschkat (mesch@google.com).=0A=
function xmlParse(xml) {=0A=
  Timer.start('xmlparse');=0A=
  var regex_empty =3D /\/$/;=0A=
=0A=
  // See also <http://www.w3.org/TR/REC-xml/#sec-common-syn> for=0A=
  // allowed chars in a tag and attribute name. TODO(mesch): the=0A=
  // following is still not completely correct.=0A=
=0A=
  var regex_tagname =3D /^([\w:-]*)/;=0A=
  var regex_attribute =3D /([\w:-]+)\s?=3D\s?('([^\']*)'|"([^\"]*)")/g;=0A=
=0A=
  var xmldoc =3D new XDocument();=0A=
  var root =3D xmldoc;=0A=
=0A=
  // For the record: in Safari, we would create native DOM nodes, but=0A=
  // in Opera that is not possible, because the DOM only allows HTML=0A=
  // element nodes to be created, so we have to do our own DOM nodes.=0A=
=0A=
  // xmldoc =3D document.implementation.createDocument('','',null);=0A=
  // root =3D xmldoc; // .createDocumentFragment();=0A=
  // NOTE(mesch): using the DocumentFragment instead of the Document=0A=
  // crashes my Safari 1.2.4 (v125.12).=0A=
  var stack =3D [];=0A=
=0A=
  var parent =3D root;=0A=
  stack.push(parent);=0A=
=0A=
  var x =3D stringSplit(xml, '<');=0A=
  for (var i =3D 1; i < x.length; ++i) {=0A=
    var xx =3D stringSplit(x[i], '>');=0A=
    var tag =3D xx[0];=0A=
    var text =3D xmlResolveEntities(xx[1] || '');=0A=
=0A=
    if (tag.charAt(0) =3D=3D '/') {=0A=
      stack.pop();=0A=
      parent =3D stack[stack.length-1];=0A=
=0A=
    } else if (tag.charAt(0) =3D=3D '?') {=0A=
      // Ignore XML declaration and processing instructions=0A=
    } else if (tag.charAt(0) =3D=3D '!') {=0A=
      // Ignore notation and comments=0A=
    } else {=0A=
      var empty =3D tag.match(regex_empty);=0A=
      var tagname =3D regex_tagname.exec(tag)[1];=0A=
      var node =3D xmldoc.createElement(tagname);=0A=
=0A=
      var att;=0A=
      while (att =3D regex_attribute.exec(tag)) {=0A=
        var val =3D xmlResolveEntities(att[3] || att[4] || '');=0A=
        node.setAttribute(att[1], val);=0A=
      }=0A=
      =0A=
      if (empty) {=0A=
        parent.appendChild(node);=0A=
      } else {=0A=
        parent.appendChild(node);=0A=
        parent =3D node;=0A=
        stack.push(node);=0A=
      }=0A=
    }=0A=
=0A=
    if (text && parent !=3D root) {=0A=
      parent.appendChild(xmldoc.createTextNode(text));=0A=
    }=0A=
  }=0A=
=0A=
  Timer.end('xmlparse');=0A=
  return root;=0A=
}=0A=
=0A=
=0A=
// Our W3C DOM Node implementation. Note we call it XNode because we=0A=
// can't define the identifier Node. We do this mostly for Opera,=0A=
// where we can't reuse the HTML DOM for parsing our own XML, and for=0A=
// Safari, where it is too expensive to have the template processor=0A=
// operate on native DOM nodes.=0A=
function XNode(type, name, value, owner) {=0A=
  this.attributes =3D [];=0A=
  this.childNodes =3D [];=0A=
=0A=
  XNode.init.call(this, type, name, value, owner);=0A=
}=0A=
=0A=
// Don't call as method, use apply() or call().=0A=
XNode.init =3D function(type, name, value, owner) {=0A=
  this.nodeType =3D type - 0;=0A=
  this.nodeName =3D '' + name;=0A=
  this.nodeValue =3D '' + value;=0A=
  this.ownerDocument =3D owner;=0A=
=0A=
  this.firstChild =3D null;=0A=
  this.lastChild =3D null;=0A=
  this.nextSibling =3D null;=0A=
  this.previousSibling =3D null;=0A=
  this.parentNode =3D null;=0A=
}=0A=
=0A=
XNode.unused_ =3D [];=0A=
=0A=
XNode.recycle =3D function(node) {=0A=
  if (!node) {=0A=
    return;=0A=
  }=0A=
=0A=
  if (node.constructor =3D=3D XDocument) {=0A=
    XNode.recycle(node.documentElement);=0A=
    return;=0A=
  }=0A=
=0A=
  if (node.constructor !=3D this) {=0A=
    return;=0A=
  }=0A=
=0A=
  XNode.unused_.push(node);=0A=
  for (var a =3D 0; a < node.attributes.length; ++a) {=0A=
    XNode.recycle(node.attributes[a]);=0A=
  }=0A=
  for (var c =3D 0; c < node.childNodes.length; ++c) {=0A=
    XNode.recycle(node.childNodes[c]);=0A=
  }=0A=
  node.attributes.length =3D 0;=0A=
  node.childNodes.length =3D 0;=0A=
  XNode.init.call(node, 0, '', '', null);=0A=
}=0A=
=0A=
XNode.create =3D function(type, name, value, owner) {=0A=
  if (XNode.unused_.length > 0) {=0A=
    var node =3D XNode.unused_.pop();=0A=
    XNode.init.call(node, type, name, value, owner);=0A=
    return node;=0A=
  } else {=0A=
    return new XNode(type, name, value, owner);=0A=
  }=0A=
}=0A=
=0A=
XNode.prototype.appendChild =3D function(node) {=0A=
  // firstChild=0A=
  if (this.childNodes.length =3D=3D 0) {=0A=
    this.firstChild =3D node;=0A=
  }=0A=
=0A=
  // previousSibling=0A=
  node.previousSibling =3D this.lastChild;=0A=
=0A=
  // nextSibling=0A=
  node.nextSibling =3D null;=0A=
  if (this.lastChild) {=0A=
    this.lastChild.nextSibling =3D node;=0A=
  }=0A=
=0A=
  // parentNode=0A=
  node.parentNode =3D this;=0A=
=0A=
  // lastChild=0A=
  this.lastChild =3D node;=0A=
=0A=
  // childNodes=0A=
  this.childNodes.push(node);=0A=
}=0A=
=0A=
=0A=
XNode.prototype.replaceChild =3D function(newNode, oldNode) {=0A=
  if (oldNode =3D=3D newNode) {=0A=
    return;=0A=
  }=0A=
=0A=
  for (var i =3D 0; i < this.childNodes.length; ++i) {=0A=
    if (this.childNodes[i] =3D=3D oldNode) {=0A=
      this.childNodes[i] =3D newNode;=0A=
      =0A=
      var p =3D oldNode.parentNode;=0A=
      oldNode.parentNode =3D null;=0A=
      newNode.parentNode =3D p;=0A=
      =0A=
      p =3D oldNode.previousSibling;=0A=
      oldNode.previousSibling =3D null;=0A=
      newNode.previousSibling =3D p;=0A=
      if (newNode.previousSibling) {=0A=
        newNode.previousSibling.nextSibling =3D newNode;=0A=
      }=0A=
      =0A=
      p =3D oldNode.nextSibling;=0A=
      oldNode.nextSibling =3D null;=0A=
      newNode.nextSibling =3D p;=0A=
      if (newNode.nextSibling) {=0A=
        newNode.nextSibling.previousSibling =3D newNode;=0A=
      }=0A=
=0A=
      if (this.firstChild =3D=3D oldNode) {=0A=
        this.firstChild =3D newNode;=0A=
      }=0A=
=0A=
      if (this.lastChild =3D=3D oldNode) {=0A=
        this.lastChild =3D newNode;=0A=
      }=0A=
=0A=
      break;=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
XNode.prototype.insertBefore =3D function(newNode, oldNode) {=0A=
  if (oldNode =3D=3D newNode) {=0A=
    return;=0A=
  }=0A=
=0A=
  if (oldNode.parentNode !=3D this) {=0A=
    return;=0A=
  }=0A=
=0A=
  if (newNode.parentNode) {=0A=
    newNode.parentNode.removeChild(newNode);=0A=
  }=0A=
=0A=
  var newChildren =3D [];=0A=
  for (var i =3D 0; i < this.childNodes.length; ++i) {=0A=
    var c =3D this.childNodes[i];=0A=
    if (c =3D=3D oldNode) {=0A=
      newChildren.push(newNode);=0A=
=0A=
      newNode.parentNode =3D this;=0A=
=0A=
      newNode.previousSibling =3D oldNode.previousSibling;=0A=
      oldNode.previousSibling =3D newNode;=0A=
      if (newNode.previousSibling) {=0A=
        newNode.previousSibling.nextSibling =3D newNode;=0A=
      }=0A=
      =0A=
      newNode.nextSibling =3D oldNode;=0A=
=0A=
      if (this.firstChild =3D=3D oldNode) {=0A=
        this.firstChild =3D newNode;=0A=
      }=0A=
    }=0A=
    newChildren.push(c);=0A=
  }=0A=
  this.childNodes =3D newChildren;=0A=
}=0A=
=0A=
XNode.prototype.removeChild =3D function(node) {=0A=
  var newChildren =3D [];=0A=
  for (var i =3D 0; i < this.childNodes.length; ++i) {=0A=
    var c =3D this.childNodes[i];=0A=
    if (c !=3D node) {=0A=
      newChildren.push(c);=0A=
    } else {=0A=
      if (c.previousSibling) {=0A=
        c.previousSibling.nextSibling =3D c.nextSibling;=0A=
      }=0A=
      if (c.nextSibling) {=0A=
        c.nextSibling.previousSibling =3D c.previousSibling;=0A=
      }=0A=
      if (this.firstChild =3D=3D c) {=0A=
        this.firstChild =3D c.nextSibling;=0A=
      }=0A=
      if (this.lastChild =3D=3D c) {=0A=
        this.lastChild =3D c.previousSibling;=0A=
      }=0A=
    }=0A=
  }=0A=
  this.childNodes =3D newChildren;=0A=
}=0A=
=0A=
=0A=
XNode.prototype.hasAttributes =3D function() {=0A=
  return this.attributes.length > 0;=0A=
}=0A=
=0A=
=0A=
XNode.prototype.setAttribute =3D function(name, value) {=0A=
  for (var i =3D 0; i < this.attributes.length; ++i) {=0A=
    if (this.attributes[i].nodeName =3D=3D name) {=0A=
      this.attributes[i].nodeValue =3D '' + value;=0A=
      return;=0A=
    }=0A=
  }=0A=
  this.attributes.push(new XNode(DOM_ATTRIBUTE_NODE, name, value));=0A=
}=0A=
=0A=
=0A=
XNode.prototype.getAttribute =3D function(name) {=0A=
  for (var i =3D 0; i < this.attributes.length; ++i) {=0A=
    if (this.attributes[i].nodeName =3D=3D name) {=0A=
      return this.attributes[i].nodeValue;=0A=
    }=0A=
  }=0A=
  return null;=0A=
}=0A=
=0A=
XNode.prototype.removeAttribute =3D function(name) {=0A=
  var a =3D [];=0A=
  for (var i =3D 0; i < this.attributes.length; ++i) {=0A=
    if (this.attributes[i].nodeName !=3D name) {=0A=
      a.push(this.attributes[i]);=0A=
    }=0A=
  }=0A=
  this.attributes =3D a;=0A=
}=0A=
=0A=
=0A=
function XDocument() {=0A=
  XNode.call(this, DOM_DOCUMENT_NODE, '#document', null, this);=0A=
  this.documentElement =3D null;=0A=
}=0A=
=0A=
XDocument.prototype =3D new XNode(DOM_DOCUMENT_NODE, '#document');=0A=
=0A=
XDocument.prototype.clear =3D function() {=0A=
  XNode.recycle(this.documentElement);=0A=
  this.documentElement =3D null;=0A=
}=0A=
=0A=
XDocument.prototype.appendChild =3D function(node) {=0A=
  XNode.prototype.appendChild.call(this, node);=0A=
  this.documentElement =3D this.childNodes[0];=0A=
}=0A=
=0A=
XDocument.prototype.createElement =3D function(name) {=0A=
  return XNode.create(DOM_ELEMENT_NODE, name, null, this);=0A=
}=0A=
=0A=
XDocument.prototype.createDocumentFragment =3D function() {=0A=
  return XNode.create(DOM_DOCUMENT_FRAGMENT_NODE, '#document-fragment',=0A=
                    null, this);=0A=
}=0A=
=0A=
XDocument.prototype.createTextNode =3D function(value) {=0A=
  return XNode.create(DOM_TEXT_NODE, '#text', value, this);=0A=
}=0A=
=0A=
XDocument.prototype.createAttribute =3D function(name) {=0A=
  return XNode.create(DOM_ATTRIBUTE_NODE, name, null, this);=0A=
}=0A=
=0A=
XDocument.prototype.createComment =3D function(data) {=0A=
  return XNode.create(DOM_COMMENT_NODE, '#comment', data, this);=0A=
}=0A=
=0A=
XNode.prototype.getElementsByTagName =3D function(name, list) {=0A=
  if (!list) {=0A=
    list =3D [];=0A=
  }=0A=
=0A=
  if (this.nodeName =3D=3D name) {=0A=
    list.push(this);=0A=
  }=0A=
=0A=
  for (var i =3D 0; i < this.childNodes.length; ++i) {=0A=
    this.childNodes[i].getElementsByTagName(name, list);=0A=
  }=0A=
=0A=
  return list;=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1189597630143481/LVDG_AjaxXpath.js

// Copyright 2005 Google Inc.=0A=
// All Rights Reserved=0A=
//=0A=
// An XPath parser and evaluator written in JavaScript. The=0A=
// implementation is complete except for functions handling=0A=
// namespaces.=0A=
//=0A=
// Reference: [XPATH] XPath Specification=0A=
// <http://www.w3.org/TR/1999/REC-xpath-19991116>.=0A=
//=0A=
//=0A=
// The API of the parser has several parts:=0A=
//=0A=
// 1. The parser function xpathParse() that takes a string and returns=0A=
// an expession object.=0A=
//=0A=
// 2. The expression object that has an evaluate() method to evaluate the=0A=
// XPath expression it represents. (It is actually a hierarchy of=0A=
// objects that resembles the parse tree, but an application will call=0A=
// evaluate() only on the top node of this hierarchy.)=0A=
//=0A=
// 3. The context object that is passed as an argument to the evaluate()=0A=
// method, which represents the DOM context in which the expression is=0A=
// evaluated.=0A=
//=0A=
// 4. The value object that is returned from evaluate() and represents=0A=
// values of the different types that are defined by XPath (number,=0A=
// string, boolean, and node-set), and allows to convert between them.=0A=
//=0A=
// These parts are near the top of the file, the functions and data=0A=
// that are used internally follow after them.=0A=
//=0A=
//=0A=
// TODO(mesch): add jsdoc comments. Use more coherent naming.=0A=
//=0A=
//=0A=
// Author: Steffen Meschkat <mesch@google.com>=0A=
=0A=
=0A=
// The entry point for the parser.=0A=
//=0A=
// @param expr a string that contains an XPath expression.=0A=
// @return an expression object that can be evaluated with an=0A=
// expression context.=0A=
=0A=
function xpathParse(expr) {=0A=
  if (xpathdebug) {=0A=
    Log.write('XPath parse ' + expr);=0A=
  }=0A=
  xpathParseInit();=0A=
=0A=
  var cached =3D xpathCacheLookup(expr);=0A=
  if (cached) {=0A=
    if (xpathdebug) {=0A=
      Log.write(' ... cached');=0A=
    }=0A=
    return cached;=0A=
  }=0A=
=0A=
  // Optimize for a few common cases: simple attribute node tests=0A=
  // (@id), simple element node tests (page), variable references=0A=
  // ($address), numbers (4), multi-step path expressions where each=0A=
  // step is a plain element node test=0A=
  // (page/overlay/locations/location).=0A=
  =0A=
  if (expr.match(/^(\$|@)?\w+$/i)) {=0A=
    var ret =3D makeSimpleExpr(expr);=0A=
    xpathParseCache[expr] =3D ret;=0A=
    if (xpathdebug) {=0A=
      Log.write(' ... simple');=0A=
    }=0A=
    return ret;=0A=
  }=0A=
=0A=
  if (expr.match(/^\w+(\/\w+)*$/i)) {=0A=
    var ret =3D makeSimpleExpr2(expr);=0A=
    xpathParseCache[expr] =3D ret;=0A=
    if (xpathdebug) {=0A=
      Log.write(' ... simple 2');=0A=
    }=0A=
    return ret;=0A=
  }=0A=
=0A=
  var cachekey =3D expr; // expr is modified during parse=0A=
  if (xpathdebug) {=0A=
    Timer.start('XPath parse', cachekey);=0A=
  }=0A=
=0A=
  var stack =3D [];=0A=
  var ahead =3D null;=0A=
  var previous =3D null;=0A=
  var done =3D false;=0A=
=0A=
  var parse_count =3D 0;=0A=
  var lexer_count =3D 0;=0A=
  var reduce_count =3D 0;=0A=
  =0A=
  while (!done) {=0A=
    parse_count++;=0A=
    expr =3D expr.replace(/^\s*/, '');=0A=
    previous =3D ahead;=0A=
    ahead =3D null;=0A=
=0A=
    var rule =3D null;=0A=
    var match =3D '';=0A=
    for (var i =3D 0; i < xpathTokenRules.length; ++i) {=0A=
      var result =3D xpathTokenRules[i].re.exec(expr);=0A=
      lexer_count++;=0A=
      if (result && result.length > 0 && result[0].length > =
match.length) {=0A=
        rule =3D xpathTokenRules[i];=0A=
        match =3D result[0];=0A=
        break;=0A=
      }=0A=
    }=0A=
=0A=
    // Special case: allow operator keywords to be element and=0A=
    // variable names.=0A=
=0A=
    // NOTE(mesch): The parser resolves conflicts by looking ahead,=0A=
    // and this is the only case where we look back to=0A=
    // disambiguate. So this is indeed something different, and=0A=
    // looking back is usually done in the lexer (via states in the=0A=
    // general case, called "start conditions" in flex(1)). Also,the=0A=
    // conflict resolution in the parser is not as robust as it could=0A=
    // be, so I'd like to keep as much off the parser as possible (all=0A=
    // these precedence values should be computed from the grammar=0A=
    // rules and possibly associativity declarations, as in bison(1),=0A=
    // and not explicitly set.=0A=
=0A=
    if (rule &&=0A=
        (rule =3D=3D TOK_DIV || =0A=
         rule =3D=3D TOK_MOD ||=0A=
         rule =3D=3D TOK_AND || =0A=
         rule =3D=3D TOK_OR) &&=0A=
        (!previous || =0A=
         previous.tag =3D=3D TOK_AT || =0A=
         previous.tag =3D=3D TOK_DSLASH || =0A=
         previous.tag =3D=3D TOK_SLASH ||=0A=
         previous.tag =3D=3D TOK_AXIS || =0A=
         previous.tag =3D=3D TOK_DOLLAR)) {=0A=
      rule =3D TOK_QNAME;=0A=
    }=0A=
=0A=
    if (rule) {=0A=
      expr =3D expr.substr(match.length);=0A=
      if (xpathdebug) {=0A=
        Log.write('token: ' + match + ' -- ' + rule.label);=0A=
      }=0A=
      ahead =3D {=0A=
        tag: rule,=0A=
        match: match,=0A=
        prec: rule.prec ?  rule.prec : 0, // || 0 is removed by the =
compiler=0A=
        expr: makeTokenExpr(match)=0A=
      };=0A=
=0A=
    } else {=0A=
      if (xpathdebug) {=0A=
        Log.write('DONE');=0A=
      }=0A=
      done =3D true;=0A=
    }=0A=
=0A=
    while (xpathReduce(stack, ahead)) {=0A=
      reduce_count++;=0A=
      if (xpathdebug) {=0A=
        Log.write('stack: ' + stackToString(stack));=0A=
      }=0A=
    }=0A=
  }=0A=
=0A=
  if (xpathdebug) {=0A=
    Log.write(stackToString(stack));=0A=
  }=0A=
=0A=
  if (stack.length !=3D 1) {=0A=
    throw 'XPath parse error ' + cachekey + ':\n' + stackToString(stack);=0A=
  }=0A=
=0A=
  var result =3D stack[0].expr;=0A=
  xpathParseCache[cachekey] =3D result;=0A=
=0A=
  if (xpathdebug) {=0A=
    Timer.end('XPath parse', cachekey);=0A=
  }=0A=
=0A=
  if (xpathdebug) {=0A=
    Log.write('XPath parse: ' + parse_count + ' / ' + =0A=
              lexer_count + ' / ' + reduce_count);=0A=
  }=0A=
=0A=
  return result;=0A=
}=0A=
=0A=
var xpathParseCache =3D {};=0A=
=0A=
function xpathCacheLookup(expr) {=0A=
  return xpathParseCache[expr];=0A=
}=0A=
=0A=
function xpathReduce(stack, ahead) {=0A=
  var cand =3D null;=0A=
=0A=
  if (stack.length > 0) {=0A=
    var top =3D stack[stack.length-1];=0A=
    var ruleset =3D xpathRules[top.tag.key];=0A=
=0A=
    if (ruleset) {=0A=
      for (var i =3D 0; i < ruleset.length; ++i) {=0A=
        var rule =3D ruleset[i];=0A=
        var match =3D xpathMatchStack(stack, rule[1]);=0A=
        if (match.length) {=0A=
          cand =3D {=0A=
            tag: rule[0],=0A=
            rule: rule,=0A=
            match: match=0A=
          };=0A=
          cand.prec =3D xpathGrammarPrecedence(cand);=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
  }=0A=
=0A=
  var ret;=0A=
  if (cand && (!ahead || cand.prec > ahead.prec || =0A=
               (ahead.tag.left && cand.prec >=3D ahead.prec))) {=0A=
    for (var i =3D 0; i < cand.match.matchlength; ++i) {=0A=
      stack.pop();=0A=
    }=0A=
=0A=
    if (xpathdebug) {=0A=
      Log.write('reduce ' + cand.tag.label + ' ' + cand.prec +=0A=
                ' ahead ' + (ahead ? ahead.tag.label + ' ' + ahead.prec =
+ =0A=
                             (ahead.tag.left ? ' left' : '')=0A=
                             : ' none '));=0A=
    }=0A=
=0A=
    var matchexpr =3D mapExpr(cand.match, function(m) { return m.expr; =
});=0A=
    cand.expr =3D cand.rule[3].apply(null, matchexpr);=0A=
=0A=
    stack.push(cand);=0A=
    ret =3D true;=0A=
=0A=
  } else {=0A=
    if (ahead) {=0A=
      if (xpathdebug) {=0A=
        Log.write('shift ' + ahead.tag.label + ' ' + ahead.prec + =0A=
                  (ahead.tag.left ? ' left' : '') +=0A=
                  ' over ' + (cand ? cand.tag.label + ' ' + =0A=
                              cand.prec : ' none'));=0A=
      }=0A=
      stack.push(ahead);=0A=
    }=0A=
    ret =3D false;=0A=
  }=0A=
  return ret;=0A=
}=0A=
=0A=
function xpathMatchStack(stack, pattern) {=0A=
=0A=
  // NOTE(mesch): The stack matches for variable cardinality are=0A=
  // greedy but don't do backtracking. This would be an issue only=0A=
  // with rules of the form A* A, i.e. with an element with variable=0A=
  // cardinality followed by the same element. Since that doesn't=0A=
  // occur in the grammar at hand, all matches on the stack are=0A=
  // unambiguous.=0A=
=0A=
  var S =3D stack.length;=0A=
  var P =3D pattern.length;=0A=
  var p, s;=0A=
  var match =3D [];=0A=
  match.matchlength =3D 0;=0A=
  var ds =3D 0;=0A=
  for (p =3D P - 1, s =3D S - 1; p >=3D 0 && s >=3D 0; --p, s -=3D ds) {=0A=
    ds =3D 0;=0A=
    var qmatch =3D [];=0A=
    if (pattern[p] =3D=3D Q_MM) {=0A=
      p -=3D 1;=0A=
      match.push(qmatch);=0A=
      while (s - ds >=3D 0 && stack[s - ds].tag =3D=3D pattern[p]) {=0A=
        qmatch.push(stack[s - ds]);=0A=
        ds +=3D 1;=0A=
        match.matchlength +=3D 1;=0A=
      }=0A=
=0A=
    } else if (pattern[p] =3D=3D Q_01) {=0A=
      p -=3D 1;=0A=
      match.push(qmatch);=0A=
      while (s - ds >=3D 0 && ds < 2 && stack[s - ds].tag =3D=3D =
pattern[p]) {=0A=
        qmatch.push(stack[s - ds]);=0A=
        ds +=3D 1;=0A=
        match.matchlength +=3D 1;=0A=
      }=0A=
=0A=
    } else if (pattern[p] =3D=3D Q_1M) {=0A=
      p -=3D 1;=0A=
      match.push(qmatch);=0A=
      if (stack[s].tag =3D=3D pattern[p]) {=0A=
        while (s - ds >=3D 0 && stack[s - ds].tag =3D=3D pattern[p]) {=0A=
          qmatch.push(stack[s - ds]);=0A=
          ds +=3D 1;=0A=
          match.matchlength +=3D 1;=0A=
        }=0A=
      } else {=0A=
        return [];=0A=
      }=0A=
=0A=
    } else if (stack[s].tag =3D=3D pattern[p]) {=0A=
      match.push(stack[s]);=0A=
      ds +=3D 1;=0A=
      match.matchlength +=3D 1;=0A=
=0A=
    } else {=0A=
      return [];=0A=
    }=0A=
=0A=
    reverseInplace(qmatch);=0A=
    qmatch.expr =3D mapExpr(qmatch, function(m) { return m.expr; });=0A=
  }=0A=
=0A=
  reverseInplace(match);=0A=
=0A=
  if (p =3D=3D -1) {=0A=
    return match;=0A=
=0A=
  } else {=0A=
    return [];=0A=
  }=0A=
}=0A=
=0A=
function xpathTokenPrecedence(tag) {=0A=
  return tag.prec || 2;=0A=
}=0A=
=0A=
function xpathGrammarPrecedence(frame) {=0A=
  var ret =3D 0;=0A=
=0A=
  if (frame.rule) { /* normal reduce */=0A=
    if (frame.rule.length >=3D 3 && frame.rule[2] >=3D 0) {=0A=
      ret =3D frame.rule[2];=0A=
=0A=
    } else {=0A=
      for (var i =3D 0; i < frame.rule[1].length; ++i) {=0A=
        var p =3D xpathTokenPrecedence(frame.rule[1][i]);=0A=
        ret =3D Math.max(ret, p);=0A=
      }=0A=
    }=0A=
  } else if (frame.tag) { /* TOKEN match */=0A=
    ret =3D xpathTokenPrecedence(frame.tag);=0A=
=0A=
  } else if (frame.length) { /* Q_ match */=0A=
    for (var j =3D 0; j < frame.length; ++j) {=0A=
      var p =3D xpathGrammarPrecedence(frame[j]);=0A=
      ret =3D Math.max(ret, p);=0A=
    }=0A=
  }=0A=
=0A=
  return ret;=0A=
}=0A=
=0A=
function stackToString(stack) {=0A=
  var ret =3D '';=0A=
  for (var i =3D 0; i < stack.length; ++i) {=0A=
    if (ret) {=0A=
      ret +=3D '\n';=0A=
    }=0A=
    ret +=3D stack[i].tag.label;=0A=
  }=0A=
  return ret;=0A=
}=0A=
=0A=
=0A=
// XPath expression evaluation context. An XPath context consists of a=0A=
// DOM node, a list of DOM nodes that contains this node, a number=0A=
// that represents the position of the single node in the list, and a=0A=
// current set of variable bindings. (See XPath spec.)=0A=
//=0A=
// The interface of the expression context:=0A=
//=0A=
//   Constructor -- gets the node, its position, the node set it=0A=
//   belongs to, and a parent context as arguments. The parent context=0A=
//   is used to implement scoping rules for variables: if a variable=0A=
//   is not found in the current context, it is looked for in the=0A=
//   parent context, recursively. Except for node, all arguments have=0A=
//   default values: default position is 0, default node set is the=0A=
//   set that contains only the node, and the default parent is null.=0A=
//=0A=
//     Notice that position starts at 0 at the outside interface;=0A=
//     inside XPath expressions this shows up as position()=3D1.=0A=
//=0A=
//   clone() -- creates a new context with the current context as=0A=
//   parent. If passed as argument to clone(), the new context has a=0A=
//   different node, position, or node set. What is not passed is=0A=
//   inherited from the cloned context.=0A=
//=0A=
//   setVariable(name, expr) -- binds given XPath expression to the=0A=
//   name.=0A=
//=0A=
//   getVariable(name) -- what the name says.=0A=
//=0A=
//   setNode(node, position) -- sets the context to the new node and=0A=
//   its corresponding position. Needed to implement scoping rules for=0A=
//   variables in XPath. (A variable is visible to all subsequent=0A=
//   siblings, not only to its children.)=0A=
=0A=
function ExprContext(node, position, nodelist, parent) {=0A=
  this.node =3D node;=0A=
  this.position =3D position || 0;=0A=
  this.nodelist =3D nodelist || [ node ];=0A=
  this.variables =3D {};=0A=
  this.parent =3D parent || null;=0A=
  this.root =3D parent ? parent.root : node.ownerDocument;=0A=
}=0A=
=0A=
ExprContext.prototype.clone =3D function(node, position, nodelist) {=0A=
  return new=0A=
  ExprContext(node || this.node,=0A=
              typeof position !=3D 'undefined' ? position : =
this.position,=0A=
              nodelist || this.nodelist, this);=0A=
};=0A=
=0A=
ExprContext.prototype.setVariable =3D function(name, value) {=0A=
  this.variables[name] =3D value;=0A=
};=0A=
=0A=
ExprContext.prototype.getVariable =3D function(name) {=0A=
  if (typeof this.variables[name] !=3D 'undefined') {=0A=
    return this.variables[name];=0A=
=0A=
  } else if (this.parent) {=0A=
    return this.parent.getVariable(name);=0A=
=0A=
  } else {=0A=
    return null;=0A=
  }=0A=
}=0A=
=0A=
ExprContext.prototype.setNode =3D function(node, position) {=0A=
  this.node =3D node;=0A=
  this.position =3D position;=0A=
}=0A=
=0A=
=0A=
// XPath expression values. They are what XPath expressions evaluate=0A=
// to. Strangely, the different value types are not specified in the=0A=
// XPath syntax, but only in the semantics, so they don't show up as=0A=
// nonterminals in the grammar. Yet, some expressions are required to=0A=
// evaluate to particular types, and not every type can be coerced=0A=
// into every other type. Although the types of XPath values are=0A=
// similar to the types present in JavaScript, the type coercion rules=0A=
// are a bit peculiar, so we explicitly model XPath types instead of=0A=
// mapping them onto JavaScript types. (See XPath spec.)=0A=
//=0A=
// The four types are:=0A=
//=0A=
//   StringValue=0A=
//=0A=
//   NumberValue=0A=
//=0A=
//   BooleanValue=0A=
//=0A=
//   NodeSetValue=0A=
//=0A=
// The common interface of the value classes consists of methods that=0A=
// implement the XPath type coercion rules:=0A=
//=0A=
//   stringValue() -- returns the value as a JavaScript String,=0A=
//=0A=
//   numberValue() -- returns the value as a JavaScript Number,=0A=
//=0A=
//   booleanValue() -- returns the value as a JavaScript Boolean,=0A=
//=0A=
//   nodeSetValue() -- returns the value as a JavaScript Array of DOM=0A=
//   Node objects.=0A=
//=0A=
=0A=
function StringValue(value) {=0A=
  this.value =3D value;=0A=
  this.type =3D 'string';=0A=
}=0A=
=0A=
StringValue.prototype.stringValue =3D function() {=0A=
  return this.value;=0A=
}=0A=
=0A=
StringValue.prototype.booleanValue =3D function() {=0A=
  return this.value.length > 0;=0A=
}=0A=
=0A=
StringValue.prototype.numberValue =3D function() {=0A=
  return this.value - 0;=0A=
}=0A=
=0A=
StringValue.prototype.nodeSetValue =3D function() {=0A=
  throw this + ' ' + Error().stack;=0A=
}=0A=
=0A=
function BooleanValue(value) {=0A=
  this.value =3D value;=0A=
  this.type =3D 'boolean';=0A=
}=0A=
=0A=
BooleanValue.prototype.stringValue =3D function() {=0A=
  return '' + this.value;=0A=
}=0A=
=0A=
BooleanValue.prototype.booleanValue =3D function() {=0A=
  return this.value;=0A=
}=0A=
=0A=
BooleanValue.prototype.numberValue =3D function() {=0A=
  return this.value ? 1 : 0;=0A=
}=0A=
=0A=
BooleanValue.prototype.nodeSetValue =3D function() {=0A=
  throw this + ' ' + Error().stack;=0A=
}=0A=
=0A=
function NumberValue(value) {=0A=
  this.value =3D value;=0A=
  this.type =3D 'number';=0A=
}=0A=
=0A=
NumberValue.prototype.stringValue =3D function() {=0A=
  return '' + this.value;=0A=
}=0A=
=0A=
NumberValue.prototype.booleanValue =3D function() {=0A=
  return !!this.value;=0A=
}=0A=
=0A=
NumberValue.prototype.numberValue =3D function() {=0A=
  return this.value - 0;=0A=
}=0A=
=0A=
NumberValue.prototype.nodeSetValue =3D function() {=0A=
  throw this + ' ' + Error().stack;=0A=
}=0A=
=0A=
function NodeSetValue(value) {=0A=
  this.value =3D value;=0A=
  this.type =3D 'node-set';=0A=
}=0A=
=0A=
NodeSetValue.prototype.stringValue =3D function() {=0A=
  if (this.value.length =3D=3D 0) {=0A=
    return '';=0A=
  } else {=0A=
    return xmlValue(this.value[0]);=0A=
  }=0A=
}=0A=
=0A=
NodeSetValue.prototype.booleanValue =3D function() {=0A=
  return this.value.length > 0;=0A=
}=0A=
=0A=
NodeSetValue.prototype.numberValue =3D function() {=0A=
  return this.stringValue() - 0;=0A=
}=0A=
=0A=
NodeSetValue.prototype.nodeSetValue =3D function() {=0A=
  return this.value;=0A=
};=0A=
=0A=
// XPath expressions. They are used as nodes in the parse tree and=0A=
// possess an evaluate() method to compute an XPath value given an XPath=0A=
// context. Expressions are returned from the parser. Teh set of=0A=
// expression classes closely mirrors the set of non terminal symbols=0A=
// in the grammar. Every non trivial nonterminal symbol has a=0A=
// corresponding expression class.=0A=
//=0A=
// The common expression interface consists of the following methods:=0A=
//=0A=
// evaluate(context) -- evaluates the expression, returns a value.=0A=
//=0A=
// toString() -- returns the XPath text representation of the=0A=
// expression (defined in xsltdebug.js).=0A=
//=0A=
// parseTree(indent) -- returns a parse tree representation of the=0A=
// expression (defined in xsltdebug.js).=0A=
=0A=
function TokenExpr(m) {=0A=
  this.value =3D m;=0A=
}=0A=
=0A=
TokenExpr.prototype.evaluate =3D function() {=0A=
  return new StringValue(this.value);=0A=
};=0A=
=0A=
function LocationExpr() {=0A=
  this.absolute =3D false;=0A=
  this.steps =3D [];=0A=
}=0A=
=0A=
LocationExpr.prototype.appendStep =3D function(s) {=0A=
  this.steps.push(s);=0A=
}=0A=
=0A=
LocationExpr.prototype.prependStep =3D function(s) {=0A=
  var steps0 =3D this.steps;=0A=
  this.steps =3D [ s ];=0A=
  for (var i =3D 0; i < steps0.length; ++i) {=0A=
    this.steps.push(steps0[i]);=0A=
  }=0A=
};=0A=
=0A=
LocationExpr.prototype.evaluate =3D function(ctx) {=0A=
  var start;=0A=
  if (this.absolute) {=0A=
    start =3D ctx.root;=0A=
=0A=
  } else {=0A=
    start =3D ctx.node;=0A=
  }=0A=
=0A=
  var nodes =3D [];=0A=
  xPathStep(nodes, this.steps, 0, start, ctx);=0A=
  return new NodeSetValue(nodes);=0A=
};=0A=
=0A=
function xPathStep(nodes, steps, step, input, ctx) {=0A=
  var s =3D steps[step];=0A=
  var ctx2 =3D ctx.clone(input);=0A=
  var nodelist =3D s.evaluate(ctx2).nodeSetValue();=0A=
=0A=
  for (var i =3D 0; i < nodelist.length; ++i) {=0A=
    if (step =3D=3D steps.length - 1) {=0A=
      nodes.push(nodelist[i]);=0A=
    } else {=0A=
      xPathStep(nodes, steps, step + 1, nodelist[i], ctx);=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
function StepExpr(axis, nodetest, predicate) {=0A=
  this.axis =3D axis;=0A=
  this.nodetest =3D nodetest;=0A=
  this.predicate =3D predicate || [];=0A=
}=0A=
=0A=
StepExpr.prototype.appendPredicate =3D function(p) {=0A=
  this.predicate.push(p);=0A=
}=0A=
=0A=
StepExpr.prototype.evaluate =3D function(ctx) {=0A=
  var input =3D ctx.node;=0A=
  var nodelist =3D [];=0A=
=0A=
  // NOTE(mesch): When this was a switch() statement, it didn't work=0A=
  // in Safari/2.0. Not sure why though; it resulted in the JavaScript=0A=
  // console output "undefined" (without any line number or so).=0A=
=0A=
  if (this.axis =3D=3D  xpathAxis.ANCESTOR_OR_SELF) {=0A=
    nodelist.push(input);=0A=
    for (var n =3D input.parentNode; n; n =3D input.parentNode) {=0A=
      nodelist.push(n);=0A=
    }=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.ANCESTOR) {=0A=
    for (var n =3D input.parentNode; n; n =3D input.parentNode) {=0A=
      nodelist.push(n);=0A=
    }=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.ATTRIBUTE) {=0A=
    copyArray(nodelist, input.attributes);=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.CHILD) {=0A=
    copyArray(nodelist, input.childNodes);=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.DESCENDANT_OR_SELF) {=0A=
    nodelist.push(input);=0A=
    xpathCollectDescendants(nodelist, input);=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.DESCENDANT) {=0A=
    xpathCollectDescendants(nodelist, input);=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.FOLLOWING) {=0A=
    for (var n =3D input.parentNode; n; n =3D n.parentNode) {=0A=
      for (var nn =3D n.nextSibling; nn; nn =3D nn.nextSibling) {=0A=
        nodelist.push(nn);=0A=
        xpathCollectDescendants(nodelist, nn);=0A=
      }=0A=
    }=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.FOLLOWING_SIBLING) {=0A=
    for (var n =3D input.nextSibling; n; n =3D input.nextSibling) {=0A=
      nodelist.push(n);=0A=
    }=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.NAMESPACE) {=0A=
    alert('not implemented: axis namespace');=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.PARENT) {=0A=
    if (input.parentNode) {=0A=
      nodelist.push(input.parentNode);=0A=
    }=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.PRECEDING) {=0A=
    for (var n =3D input.parentNode; n; n =3D n.parentNode) {=0A=
      for (var nn =3D n.previousSibling; nn; nn =3D nn.previousSibling) {=0A=
        nodelist.push(nn);=0A=
        xpathCollectDescendantsReverse(nodelist, nn);=0A=
      }=0A=
    }=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.PRECEDING_SIBLING) {=0A=
    for (var n =3D input.previousSibling; n; n =3D =
input.previousSibling) {=0A=
      nodelist.push(n);=0A=
    }=0A=
=0A=
  } else if (this.axis =3D=3D xpathAxis.SELF) {=0A=
    nodelist.push(input);=0A=
=0A=
  } else {=0A=
    throw 'ERROR -- NO SUCH AXIS: ' + this.axis;=0A=
  }=0A=
=0A=
  // process node test=0A=
  var nodelist0 =3D nodelist;=0A=
  nodelist =3D [];=0A=
  for (var i =3D 0; i < nodelist0.length; ++i) {=0A=
    var n =3D nodelist0[i];=0A=
    if (this.nodetest.evaluate(ctx.clone(n, i, =
nodelist0)).booleanValue()) {=0A=
      nodelist.push(n);=0A=
    }=0A=
  }=0A=
=0A=
  // process predicates=0A=
  for (var i =3D 0; i < this.predicate.length; ++i) {=0A=
    var nodelist0 =3D nodelist;=0A=
    nodelist =3D [];=0A=
    for (var ii =3D 0; ii < nodelist0.length; ++ii) {=0A=
      var n =3D nodelist0[ii];=0A=
      if (this.predicate[i].evaluate(ctx.clone(n, ii, =
nodelist0)).booleanValue()) {=0A=
        nodelist.push(n);=0A=
      }=0A=
    }=0A=
  }=0A=
=0A=
  return new NodeSetValue(nodelist);=0A=
};=0A=
=0A=
function NodeTestAny() {=0A=
  this.value =3D new BooleanValue(true);=0A=
}=0A=
=0A=
NodeTestAny.prototype.evaluate =3D function(ctx) {=0A=
  return this.value;=0A=
};=0A=
=0A=
function NodeTestElement() {}=0A=
=0A=
NodeTestElement.prototype.evaluate =3D function(ctx) {=0A=
  return new BooleanValue(ctx.node.nodeType =3D=3D DOM_ELEMENT_NODE);=0A=
}=0A=
=0A=
function NodeTestText() {}=0A=
=0A=
NodeTestText.prototype.evaluate =3D function(ctx) {=0A=
  return new BooleanValue(ctx.node.nodeType =3D=3D DOM_TEXT_NODE);=0A=
}=0A=
=0A=
function NodeTestComment() {}=0A=
=0A=
NodeTestComment.prototype.evaluate =3D function(ctx) {=0A=
  return new BooleanValue(ctx.node.nodeType =3D=3D DOM_COMMENT_NODE);=0A=
}=0A=
=0A=
function NodeTestPI(target) {=0A=
  this.target =3D target;=0A=
}=0A=
=0A=
NodeTestPI.prototype.evaluate =3D function(ctx) {=0A=
  return new=0A=
  BooleanValue(ctx.node.nodeType =3D=3D DOM_PROCESSING_INSTRUCTION_NODE =
&&=0A=
               (!this.target || ctx.node.nodeName =3D=3D this.target));=0A=
}=0A=
=0A=
function NodeTestNC(nsprefix) {=0A=
  this.regex =3D new RegExp("^" + nsprefix + ":");=0A=
  this.nsprefix =3D nsprefix;=0A=
}=0A=
=0A=
NodeTestNC.prototype.evaluate =3D function(ctx) {=0A=
  var n =3D ctx.node;=0A=
  return new BooleanValue(this.regex.match(n.nodeName));=0A=
}=0A=
=0A=
function NodeTestName(name) {=0A=
  this.name =3D name;=0A=
}=0A=
=0A=
NodeTestName.prototype.evaluate =3D function(ctx) {=0A=
  var n =3D ctx.node;=0A=
  return new BooleanValue(n.nodeName =3D=3D this.name);=0A=
}=0A=
=0A=
function PredicateExpr(expr) {=0A=
  this.expr =3D expr;=0A=
}=0A=
=0A=
PredicateExpr.prototype.evaluate =3D function(ctx) {=0A=
  var v =3D this.expr.evaluate(ctx);=0A=
  if (v.type =3D=3D 'number') {=0A=
    // NOTE(mesch): Internally, position is represented starting with=0A=
    // 0, however in XPath position starts with 1. See functions=0A=
    // position() and last().=0A=
    return new BooleanValue(ctx.position =3D=3D v.numberValue() - 1);=0A=
  } else {=0A=
    return new BooleanValue(v.booleanValue());=0A=
  }=0A=
};=0A=
=0A=
function FunctionCallExpr(name) {=0A=
  this.name =3D name;=0A=
  this.args =3D [];=0A=
}=0A=
=0A=
FunctionCallExpr.prototype.appendArg =3D function(arg) {=0A=
  this.args.push(arg);=0A=
};=0A=
=0A=
FunctionCallExpr.prototype.evaluate =3D function(ctx) {=0A=
  var fn =3D '' + this.name.value;=0A=
  var f =3D this.xpathfunctions[fn];=0A=
  if (f) {=0A=
    return f.call(this, ctx);=0A=
  } else {=0A=
    Log.write('XPath NO SUCH FUNCTION ' + fn);=0A=
    return new BooleanValue(false);=0A=
  }=0A=
};=0A=
=0A=
FunctionCallExpr.prototype.xpathfunctions =3D {=0A=
  'last': function(ctx) {=0A=
    assert(this.args.length =3D=3D 0);=0A=
    // NOTE(mesch): XPath position starts at 1.=0A=
    return new NumberValue(ctx.nodelist.length);=0A=
  },=0A=
=0A=
  'position': function(ctx) {=0A=
    assert(this.args.length =3D=3D 0);=0A=
    // NOTE(mesch): XPath position starts at 1.=0A=
    return new NumberValue(ctx.position + 1);=0A=
  },=0A=
=0A=
  'count': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1);=0A=
    var v =3D this.args[0].evaluate(ctx);=0A=
    return new NumberValue(v.nodeSetValue().length);=0A=
  },=0A=
=0A=
  'id': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1);=0A=
    var e =3D this.args.evaluate(ctx);=0A=
    var ret =3D [];=0A=
    var ids;=0A=
    if (e.type =3D=3D 'node-set') {=0A=
      ids =3D [];=0A=
      for (var i =3D 0; i < e.length; ++i) {=0A=
        var v =3D xmlValue(e[i]).split(/\s+/);=0A=
        for (var ii =3D 0; ii < v.length; ++ii) {=0A=
          ids.push(v[ii]);=0A=
        }=0A=
      }=0A=
    } else {=0A=
      ids =3D e.split(/\s+/);=0A=
    }=0A=
    var d =3D ctx.node.ownerDocument;=0A=
    for (var i =3D 0; i < ids.length; ++i) {=0A=
      var n =3D d.getElementById(ids[i]);=0A=
      if (n) {=0A=
        ret.push(n);=0A=
      }=0A=
    }=0A=
    return new NodeSetValue(ret);=0A=
  },=0A=
=0A=
  'local-name': function(ctx) {=0A=
    alert('not implmented yet: XPath function local-name()');=0A=
  },=0A=
=0A=
  'namespace-uri': function(ctx) {=0A=
    alert('not implmented yet: XPath function namespace-uri()');=0A=
  },=0A=
=0A=
  'name': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1 || this.args.length =3D=3D 0);=0A=
    var n;=0A=
    if (this.args.length =3D=3D 0) {=0A=
      n =3D [ ctx.node ];=0A=
    } else {=0A=
      n =3D this.args[0].evaluate(ctx).nodeSetValue();=0A=
    }=0A=
=0A=
    if (n.length =3D=3D 0) {=0A=
      return new StringValue('');=0A=
    } else {=0A=
      return new StringValue(n[0].nodeName);=0A=
    }=0A=
  },=0A=
=0A=
  'string':  function(ctx) {=0A=
    assert(this.args.length =3D=3D 1 || this.args.length =3D=3D 0);=0A=
    if (this.args.length =3D=3D 0) {=0A=
      return new StringValue(new NodeSetValue([ ctx.node =
]).stringValue());=0A=
    } else {=0A=
      return new StringValue(this.args[0].evaluate(ctx).stringValue());=0A=
    }=0A=
  },=0A=
=0A=
  'concat': function(ctx) {=0A=
    var ret =3D '';=0A=
    for (var i =3D 0; i < this.args.length; ++i) {=0A=
      ret +=3D this.args[i].evaluate(ctx).stringValue();=0A=
    }=0A=
    return new StringValue(ret);=0A=
  },=0A=
=0A=
  'starts-with': function(ctx) {=0A=
    assert(this.args.length =3D=3D 2);=0A=
    var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A=
    var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A=
    return new BooleanValue(s0.indexOf(s1) =3D=3D 0);=0A=
  },=0A=
=0A=
  'contains': function(ctx) {=0A=
    assert(this.args.length =3D=3D 2);=0A=
    var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A=
    var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A=
    return new BooleanValue(s0.indexOf(s1) !=3D -1);=0A=
  },=0A=
=0A=
  'substring-before': function(ctx) {=0A=
    assert(this.args.length =3D=3D 2);=0A=
    var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A=
    var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A=
    var i =3D s0.indexOf(s1);=0A=
    var ret;=0A=
    if (i =3D=3D -1) {=0A=
      ret =3D '';=0A=
    } else {=0A=
      ret =3D s0.substr(0,i);=0A=
    }=0A=
    return new StringValue(ret);=0A=
  },=0A=
=0A=
  'substring-after': function(ctx) {=0A=
    assert(this.args.length =3D=3D 2);=0A=
    var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A=
    var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A=
    var i =3D s0.indexOf(s1);=0A=
    var ret;=0A=
    if (i =3D=3D -1) {=0A=
      ret =3D '';=0A=
    } else {=0A=
      ret =3D s0.substr(i + s1.length);=0A=
    }=0A=
    return new StringValue(ret);=0A=
  },=0A=
=0A=
  'substring': function(ctx) {=0A=
    // NOTE: XPath defines the position of the first character in a=0A=
    // string to be 1, in JavaScript this is 0 ([XPATH] Section 4.2).=0A=
    assert(this.args.length =3D=3D 2 || this.args.length =3D=3D 3);=0A=
    var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A=
    var s1 =3D this.args[1].evaluate(ctx).numberValue();=0A=
    var ret;=0A=
    if (this.args.length =3D=3D 2) {=0A=
      var i1 =3D Math.max(0, Math.round(s1) - 1);=0A=
      ret =3D s0.substr(i1);=0A=
=0A=
    } else {=0A=
      var s2 =3D this.args[2].evaluate(ctx).numberValue();=0A=
      var i0 =3D Math.round(s1) - 1;=0A=
      var i1 =3D Math.max(0, i0);=0A=
      var i2 =3D Math.round(s2) - Math.max(0, -i0);=0A=
      ret =3D s0.substr(i1, i2);=0A=
    }=0A=
    return new StringValue(ret);=0A=
  },=0A=
=0A=
  'string-length': function(ctx) {=0A=
    var s;=0A=
    if (this.args.length > 0) {=0A=
      s =3D this.args[0].evaluate(ctx).stringValue();=0A=
    } else {=0A=
      s =3D new NodeSetValue([ ctx.node ]).stringValue();=0A=
    }=0A=
    return new NumberValue(s.length);=0A=
  },=0A=
=0A=
  'normalize-space': function(ctx) {=0A=
    var s;=0A=
    if (this.args.length > 0) {=0A=
      s =3D this.args[0].evaluate(ctx).stringValue();=0A=
    } else {=0A=
      s =3D new NodeSetValue([ ctx.node ]).stringValue();=0A=
    }=0A=
    s =3D s.replace(/^\s*/,'').replace(/\s*$/,'').replace(/\s+/g, ' ');=0A=
    return new StringValue(s);=0A=
  },=0A=
=0A=
  'translate': function(ctx) {=0A=
    assert(this.args.length =3D=3D 3);=0A=
    var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A=
    var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A=
    var s2 =3D this.args[2].evaluate(ctx).stringValue();=0A=
=0A=
    for (var i =3D 0; i < s1.length; ++i) {=0A=
      s0 =3D s0.replace(new RegExp(s1.charAt(i), 'g'), s2.charAt(i));=0A=
    }=0A=
    return new StringValue(s0);=0A=
  },=0A=
=0A=
  'boolean': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1);=0A=
    return new BooleanValue(this.args[0].evaluate(ctx).booleanValue());=0A=
  },=0A=
=0A=
  'not': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1);=0A=
    var ret =3D !this.args[0].evaluate(ctx).booleanValue();=0A=
    return new BooleanValue(ret);=0A=
  },=0A=
=0A=
  'true': function(ctx) {=0A=
    assert(this.args.length =3D=3D 0);=0A=
    return new BooleanValue(true);=0A=
  },=0A=
=0A=
  'false': function(ctx) {=0A=
    assert(this.args.length =3D=3D 0);=0A=
    return new BooleanValue(false);=0A=
  },=0A=
=0A=
  'lang': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1);=0A=
    var lang =3D this.args[0].evaluate(ctx).stringValue();=0A=
    var xmllang;=0A=
    var n =3D ctx.node;=0A=
    while (n && n !=3D n.parentNode /* just in case ... */) {=0A=
      xmllang =3D n.getAttribute('xml:lang');=0A=
      if (xmllang) {=0A=
        break;=0A=
      }=0A=
      n =3D n.parentNode;=0A=
    }=0A=
    if (!xmllang) {=0A=
      return new BooleanValue(false);=0A=
    } else {=0A=
      var re =3D new RegExp('^' + lang + '$', 'i');=0A=
      return new BooleanValue(xmllang.match(re) ||=0A=
                              xmllang.replace(/_.*$/,'').match(re));=0A=
    }=0A=
  },=0A=
=0A=
  'number': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1 || this.args.length =3D=3D 0);=0A=
=0A=
    if (this.args.length =3D=3D 1) {=0A=
      return new NumberValue(this.args[0].evaluate(ctx).numberValue());=0A=
    } else {=0A=
      return new NumberValue(new NodeSetValue([ ctx.node =
]).numberValue());=0A=
    }=0A=
  },=0A=
=0A=
  'sum': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1);=0A=
    var n =3D this.args[0].evaluate(ctx).nodeSetValue();=0A=
    var sum =3D 0;=0A=
    for (var i =3D 0; i < n.length; ++i) {=0A=
      sum +=3D xmlValue(n[i]) - 0;=0A=
    }=0A=
    return new NumberValue(sum);=0A=
  },=0A=
=0A=
  'floor': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1);=0A=
    var num =3D this.args[0].evaluate(ctx).numberValue();=0A=
    return new NumberValue(Math.floor(num));=0A=
  },=0A=
=0A=
  'ceiling': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1);=0A=
    var num =3D this.args[0].evaluate(ctx).numberValue();=0A=
    return new NumberValue(Math.ceil(num));=0A=
  },=0A=
=0A=
  'round': function(ctx) {=0A=
    assert(this.args.length =3D=3D 1);=0A=
    var num =3D this.args[0].evaluate(ctx).numberValue();=0A=
    return new NumberValue(Math.round(num));=0A=
  },=0A=
=0A=
  // TODO(mesch): The following functions are custom. There is a=0A=
  // standard that defines how to add functions, which should be=0A=
  // applied here.=0A=
=0A=
  'ext-join': function(ctx) {=0A=
    assert(this.args.length =3D=3D 2);=0A=
    var nodes =3D this.args[0].evaluate(ctx).nodeSetValue();=0A=
    var delim =3D this.args[1].evaluate(ctx).stringValue();=0A=
    var ret =3D '';=0A=
    for (var i =3D 0; i < nodes.length; ++i) {=0A=
      if (ret) {=0A=
        ret +=3D delim;=0A=
      }=0A=
      ret +=3D xmlValue(nodes[i]);=0A=
    }=0A=
    return new StringValue(ret);=0A=
  },=0A=
=0A=
  // ext-if() evaluates and returns its second argument, if the=0A=
  // boolean value of its first argument is true, otherwise it=0A=
  // evaluates and returns its third argument.=0A=
=0A=
  'ext-if': function(ctx) {=0A=
    assert(this.args.length =3D=3D 3);=0A=
    if (this.args[0].evaluate(ctx).booleanValue()) {=0A=
      return this.args[1].evaluate(ctx);=0A=
    } else {=0A=
      return this.args[2].evaluate(ctx);=0A=
    }=0A=
  },=0A=
=0A=
  'ext-sprintf': function(ctx) {=0A=
    assert(this.args.length >=3D 1);=0A=
    var args =3D [];=0A=
    for (var i =3D 0; i < this.args.length; ++i) {=0A=
      args.push(this.args[i].evaluate(ctx).stringValue());=0A=
    }=0A=
    return new StringValue(sprintf.apply(null, args));=0A=
  },=0A=
=0A=
  // ext-cardinal() evaluates its single argument as a number, and=0A=
  // returns the current node that many times. It can be used in the=0A=
  // select attribute to iterate over an integer range.=0A=
  =0A=
  'ext-cardinal': function(ctx) {=0A=
    assert(this.args.length >=3D 1);=0A=
    var c =3D this.args[0].evaluate(ctx).numberValue();=0A=
    var ret =3D [];=0A=
    for (var i =3D 0; i < c; ++i) {=0A=
      ret.push(ctx.node);=0A=
    }=0A=
    return new NodeSetValue(ret);=0A=
  }=0A=
};=0A=
=0A=
function UnionExpr(expr1, expr2) {=0A=
  this.expr1 =3D expr1;=0A=
  this.expr2 =3D expr2;=0A=
}=0A=
=0A=
UnionExpr.prototype.evaluate =3D function(ctx) {=0A=
  var nodes1 =3D this.expr1.evaluate(ctx).nodeSetValue();=0A=
  var nodes2 =3D this.expr2.evaluate(ctx).nodeSetValue();=0A=
  var I1 =3D nodes1.length;=0A=
  for (var i2 =3D 0; i2 < nodes2.length; ++i2) {=0A=
    for (var i1 =3D 0; i1 < I1; ++i1) {=0A=
      if (nodes1[i1] =3D=3D nodes2[i2]) {=0A=
        // break inner loop and continue outer loop, labels confuse=0A=
        // the js compiler, so we don't use them here.=0A=
        i1 =3D I1;=0A=
      }=0A=
    }=0A=
    nodes1.push(nodes2[i2]);=0A=
  }=0A=
  return new NodeSetValue(nodes2);=0A=
};=0A=
=0A=
function PathExpr(filter, rel) {=0A=
  this.filter =3D filter;=0A=
  this.rel =3D rel;=0A=
}=0A=
=0A=
PathExpr.prototype.evaluate =3D function(ctx) {=0A=
  var nodes =3D this.filter.evaluate(ctx).nodeSetValue();=0A=
  var nodes1 =3D [];=0A=
  for (var i =3D 0; i < nodes.length; ++i) {=0A=
    var nodes0 =3D this.rel.evaluate(ctx.clone(nodes[i], i, =
nodes)).nodeSetValue();=0A=
    for (var ii =3D 0; ii < nodes0.length; ++ii) {=0A=
      nodes1.push(nodes0[ii]);=0A=
    }=0A=
  }=0A=
  return new NodeSetValue(nodes1);=0A=
};=0A=
=0A=
function FilterExpr(expr, predicate) {=0A=
  this.expr =3D expr;=0A=
  this.predicate =3D predicate;=0A=
}=0A=
=0A=
FilterExpr.prototype.evaluate =3D function(ctx) {=0A=
  var nodes =3D this.expr.evaluate(ctx).nodeSetValue();=0A=
  for (var i =3D 0; i < this.predicate.length; ++i) {=0A=
    var nodes0 =3D nodes;=0A=
    nodes =3D [];=0A=
    for (var j =3D 0; j < nodes0.length; ++j) {=0A=
      var n =3D nodes0[j];=0A=
      if (this.predicate[i].evaluate(ctx.clone(n, j, =
nodes0)).booleanValue()) {=0A=
        nodes.push(n);=0A=
      }=0A=
    }=0A=
  }=0A=
=0A=
  return new NodeSetValue(nodes);=0A=
}=0A=
=0A=
function UnaryMinusExpr(expr) {=0A=
  this.expr =3D expr;=0A=
}=0A=
=0A=
UnaryMinusExpr.prototype.evaluate =3D function(ctx) {=0A=
  return new NumberValue(-this.expr.evaluate(ctx).numberValue());=0A=
};=0A=
=0A=
function BinaryExpr(expr1, op, expr2) {=0A=
  this.expr1 =3D expr1;=0A=
  this.expr2 =3D expr2;=0A=
  this.op =3D op;=0A=
}=0A=
=0A=
BinaryExpr.prototype.evaluate =3D function(ctx) {=0A=
  var ret;=0A=
  switch (this.op.value) {=0A=
    case 'or':=0A=
      ret =3D new BooleanValue(this.expr1.evaluate(ctx).booleanValue() ||=0A=
                             this.expr2.evaluate(ctx).booleanValue());=0A=
      break;=0A=
=0A=
    case 'and':=0A=
      ret =3D new BooleanValue(this.expr1.evaluate(ctx).booleanValue() &&=0A=
                             this.expr2.evaluate(ctx).booleanValue());=0A=
      break;=0A=
=0A=
    case '+':=0A=
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() +=0A=
                            this.expr2.evaluate(ctx).numberValue());=0A=
      break;=0A=
=0A=
    case '-':=0A=
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() -=0A=
                            this.expr2.evaluate(ctx).numberValue());=0A=
      break;=0A=
=0A=
    case '*':=0A=
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() *=0A=
                            this.expr2.evaluate(ctx).numberValue());=0A=
      break;=0A=
=0A=
    case 'mod':=0A=
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() %=0A=
                            this.expr2.evaluate(ctx).numberValue());=0A=
      break;=0A=
=0A=
    case 'div':=0A=
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() /=0A=
                            this.expr2.evaluate(ctx).numberValue());=0A=
      break;=0A=
=0A=
    case '=3D':=0A=
      ret =3D this.compare(ctx, function(x1, x2) { return x1 =3D=3D x2; =
});=0A=
      break;=0A=
=0A=
    case '!=3D':=0A=
      ret =3D this.compare(ctx, function(x1, x2) { return x1 !=3D x2; });=0A=
      break;=0A=
=0A=
    case '<':=0A=
      ret =3D this.compare(ctx, function(x1, x2) { return x1 < x2; });=0A=
      break;=0A=
=0A=
    case '<=3D':=0A=
      ret =3D this.compare(ctx, function(x1, x2) { return x1 <=3D x2; });=0A=
      break;=0A=
=0A=
    case '>':=0A=
      ret =3D this.compare(ctx, function(x1, x2) { return x1 > x2; });=0A=
      break;=0A=
=0A=
    case '>=3D':=0A=
      ret =3D this.compare(ctx, function(x1, x2) { return x1 >=3D x2; });=0A=
      break;=0A=
=0A=
    default:=0A=
      alert('BinaryExpr.evaluate: ' + this.op.value);=0A=
  }=0A=
  return ret;=0A=
};=0A=
=0A=
BinaryExpr.prototype.compare =3D function(ctx, cmp) {=0A=
  var v1 =3D this.expr1.evaluate(ctx);=0A=
  var v2 =3D this.expr2.evaluate(ctx);=0A=
=0A=
  var ret;=0A=
  if (v1.type =3D=3D 'node-set' && v2.type =3D=3D 'node-set') {=0A=
    var n1 =3D v1.nodeSetValue();=0A=
    var n2 =3D v2.nodeSetValue();=0A=
    ret =3D false;=0A=
    for (var i1 =3D 0; i1 < n1.length; ++i1) {=0A=
      for (var i2 =3D 0; i2 < n2.length; ++i2) {=0A=
        if (cmp(xmlValue(n1[i1]), xmlValue(n2[i2]))) {=0A=
          ret =3D true;=0A=
          // Break outer loop. Labels confuse the jscompiler and we=0A=
          // don't use them.=0A=
          i2 =3D n2.length;=0A=
          i1 =3D n1.length;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
  } else if (v1.type =3D=3D 'node-set' || v2.type =3D=3D 'node-set') {=0A=
=0A=
    if (v1.type =3D=3D 'number') {=0A=
      var s =3D v1.numberValue();=0A=
      var n =3D v2.nodeSetValue();=0A=
=0A=
      ret =3D false;=0A=
      for (var i =3D 0;  i < n.length; ++i) {=0A=
        var nn =3D xmlValue(n[i]) - 0;=0A=
        if (cmp(s, nn)) {=0A=
          ret =3D true;=0A=
          break;=0A=
        }=0A=
      }=0A=
=0A=
    } else if (v2.type =3D=3D 'number') {=0A=
      var n =3D v1.nodeSetValue();=0A=
      var s =3D v2.numberValue();=0A=
=0A=
      ret =3D false;=0A=
      for (var i =3D 0;  i < n.length; ++i) {=0A=
        var nn =3D xmlValue(n[i]) - 0;=0A=
        if (cmp(nn, s)) {=0A=
          ret =3D true;=0A=
          break;=0A=
        }=0A=
      }=0A=
=0A=
    } else if (v1.type =3D=3D 'string') {=0A=
      var s =3D v1.stringValue();=0A=
      var n =3D v2.nodeSetValue();=0A=
=0A=
      ret =3D false;=0A=
      for (var i =3D 0;  i < n.length; ++i) {=0A=
        var nn =3D xmlValue(n[i]);=0A=
        if (cmp(s, nn)) {=0A=
          ret =3D true;=0A=
          break;=0A=
        }=0A=
      }=0A=
=0A=
    } else if (v2.type =3D=3D 'string') {=0A=
      var n =3D v1.nodeSetValue();=0A=
      var s =3D v2.stringValue();=0A=
=0A=
      ret =3D false;=0A=
      for (var i =3D 0;  i < n.length; ++i) {=0A=
        var nn =3D xmlValue(n[i]);=0A=
        if (cmp(nn, s)) {=0A=
          ret =3D true;=0A=
          break;=0A=
        }=0A=
      }=0A=
=0A=
    } else {=0A=
      ret =3D cmp(v1.booleanValue(), v2.booleanValue());=0A=
    }=0A=
=0A=
  } else if (v1.type =3D=3D 'boolean' || v2.type =3D=3D 'boolean') {=0A=
    ret =3D cmp(v1.booleanValue(), v2.booleanValue());=0A=
=0A=
  } else if (v1.type =3D=3D 'number' || v2.type =3D=3D 'number') {=0A=
    ret =3D cmp(v1.numberValue(), v2.numberValue());=0A=
=0A=
  } else {=0A=
    ret =3D cmp(v1.stringValue(), v2.stringValue());=0A=
  }=0A=
=0A=
  return new BooleanValue(ret);=0A=
}=0A=
=0A=
function LiteralExpr(value) {=0A=
  this.value =3D value;=0A=
}=0A=
=0A=
LiteralExpr.prototype.evaluate =3D function(ctx) {=0A=
  return new StringValue(this.value);=0A=
};=0A=
=0A=
function NumberExpr(value) {=0A=
  this.value =3D value;=0A=
}=0A=
=0A=
NumberExpr.prototype.evaluate =3D function(ctx) {=0A=
  return new NumberValue(this.value);=0A=
};=0A=
=0A=
function VariableExpr(name) {=0A=
  this.name =3D name;=0A=
}=0A=
=0A=
VariableExpr.prototype.evaluate =3D function(ctx) {=0A=
  return ctx.getVariable(this.name);=0A=
}=0A=
=0A=
// Factory functions for semantic values (i.e. Expressions) of the=0A=
// productions in the grammar. When a production is matched to reduce=0A=
// the current parse state stack, the function is called with the=0A=
// semantic values of the matched elements as arguments, and returns=0A=
// another semantic value. The semantic value is a node of the parse=0A=
// tree, an expression object with an evaluate() method that evaluates =
the=0A=
// expression in an actual context. These factory functions are used=0A=
// in the specification of the grammar rules, below.=0A=
=0A=
function makeTokenExpr(m) {=0A=
  return new TokenExpr(m);=0A=
}=0A=
=0A=
function passExpr(e) {=0A=
  return e;=0A=
}=0A=
=0A=
function makeLocationExpr1(slash, rel) {=0A=
  rel.absolute =3D true;=0A=
  return rel;=0A=
}=0A=
=0A=
function makeLocationExpr2(dslash, rel) {=0A=
  rel.absolute =3D true;=0A=
  rel.prependStep(makeAbbrevStep(dslash.value));=0A=
  return rel;=0A=
}=0A=
=0A=
function makeLocationExpr3(slash) {=0A=
  var ret =3D new LocationExpr();=0A=
  ret.appendStep(makeAbbrevStep('.'));=0A=
  ret.absolute =3D true;=0A=
  return ret;=0A=
}=0A=
=0A=
function makeLocationExpr4(dslash) {=0A=
  var ret =3D new LocationExpr();=0A=
  ret.absolute =3D true;=0A=
  ret.appendStep(makeAbbrevStep(dslash.value));=0A=
  return ret;=0A=
}=0A=
=0A=
function makeLocationExpr5(step) {=0A=
  var ret =3D new LocationExpr();=0A=
  ret.appendStep(step);=0A=
  return ret;=0A=
}=0A=
=0A=
function makeLocationExpr6(rel, slash, step) {=0A=
  rel.appendStep(step);=0A=
  return rel;=0A=
}=0A=
=0A=
function makeLocationExpr7(rel, dslash, step) {=0A=
  rel.appendStep(makeAbbrevStep(dslash.value));=0A=
  return rel;=0A=
}=0A=
=0A=
function makeStepExpr1(dot) {=0A=
  return makeAbbrevStep(dot.value);=0A=
}=0A=
=0A=
function makeStepExpr2(ddot) {=0A=
  return makeAbbrevStep(ddot.value);=0A=
}=0A=
=0A=
function makeStepExpr3(axisname, axis, nodetest) {=0A=
  return new StepExpr(axisname.value, nodetest);=0A=
}=0A=
=0A=
function makeStepExpr4(at, nodetest) {=0A=
  return new StepExpr('attribute', nodetest);=0A=
}=0A=
=0A=
function makeStepExpr5(nodetest) {=0A=
  return new StepExpr('child', nodetest);=0A=
}=0A=
=0A=
function makeStepExpr6(step, predicate) {=0A=
  step.appendPredicate(predicate);=0A=
  return step;=0A=
}=0A=
=0A=
function makeAbbrevStep(abbrev) {=0A=
  switch (abbrev) {=0A=
  case '//':=0A=
    return new StepExpr('descendant-or-self', new NodeTestAny);=0A=
=0A=
  case '.':=0A=
    return new StepExpr('self', new NodeTestAny);=0A=
=0A=
  case '..':=0A=
    return new StepExpr('parent', new NodeTestAny);=0A=
  }=0A=
}=0A=
=0A=
function makeNodeTestExpr1(asterisk) {=0A=
  return new NodeTestElement;=0A=
}=0A=
=0A=
function makeNodeTestExpr2(ncname, colon, asterisk) {=0A=
  return new NodeTestNC(ncname.value);=0A=
}=0A=
=0A=
function makeNodeTestExpr3(qname) {=0A=
  return new NodeTestName(qname.value);=0A=
}=0A=
=0A=
function makeNodeTestExpr4(typeo, parenc) {=0A=
  var type =3D typeo.value.replace(/\s*\($/, '');=0A=
  switch(type) {=0A=
  case 'node':=0A=
    return new NodeTestAny;=0A=
=0A=
  case 'text':=0A=
    return new NodeTestText;=0A=
=0A=
  case 'comment':=0A=
    return new NodeTestComment;=0A=
=0A=
  case 'processing-instruction':=0A=
    return new NodeTestPI;=0A=
  }=0A=
}=0A=
=0A=
function makeNodeTestExpr5(typeo, target, parenc) {=0A=
  var type =3D typeo.replace(/\s*\($/, '');=0A=
  if (type !=3D 'processing-instruction') {=0A=
    throw type + ' ' + Error().stack;=0A=
  }=0A=
  return new NodeTestPI(target.value);=0A=
}=0A=
=0A=
function makePredicateExpr(pareno, expr, parenc) {=0A=
  return new PredicateExpr(expr);=0A=
}=0A=
=0A=
function makePrimaryExpr(pareno, expr, parenc) {=0A=
  return expr;=0A=
}=0A=
=0A=
function makeFunctionCallExpr1(name, pareno, parenc) {=0A=
  return new FunctionCallExpr(name);=0A=
}=0A=
=0A=
function makeFunctionCallExpr2(name, pareno, arg1, args, parenc) {=0A=
  var ret =3D new FunctionCallExpr(name);=0A=
  ret.appendArg(arg1);=0A=
  for (var i =3D 0; i < args.length; ++i) {=0A=
    ret.appendArg(args[i]);=0A=
  }=0A=
  return ret;=0A=
}=0A=
=0A=
function makeArgumentExpr(comma, expr) {=0A=
  return expr;=0A=
}=0A=
=0A=
function makeUnionExpr(expr1, pipe, expr2) {=0A=
  return new UnionExpr(expr1, expr2);=0A=
}=0A=
=0A=
function makePathExpr1(filter, slash, rel) {=0A=
  return new PathExpr(filter, rel);=0A=
}=0A=
=0A=
function makePathExpr2(filter, dslash, rel) {=0A=
  rel.prependStep(makeAbbrevStep(dslash.value));=0A=
  return new PathExpr(filter, rel);=0A=
}=0A=
=0A=
function makeFilterExpr(expr, predicates) {=0A=
  if (predicates.length > 0) {=0A=
    return new FilterExpr(expr, predicates);=0A=
  } else {=0A=
    return expr;=0A=
  }=0A=
}=0A=
=0A=
function makeUnaryMinusExpr(minus, expr) {=0A=
  return new UnaryMinusExpr(expr);=0A=
}=0A=
=0A=
function makeBinaryExpr(expr1, op, expr2) {=0A=
  return new BinaryExpr(expr1, op, expr2);=0A=
}=0A=
=0A=
function makeLiteralExpr(token) {=0A=
  // remove quotes from the parsed value:=0A=
  var value =3D token.value.substring(1, token.value.length - 1);=0A=
  return new LiteralExpr(value);=0A=
}=0A=
=0A=
function makeNumberExpr(token) {=0A=
  return new NumberExpr(token.value);=0A=
}=0A=
=0A=
function makeVariableReference(dollar, name) {=0A=
  return new VariableExpr(name.value);=0A=
}=0A=
=0A=
// Used before parsing for optimization of common simple cases. See=0A=
// the begin of xpathParse() for which they are.=0A=
function makeSimpleExpr(expr) {=0A=
  if (expr.charAt(0) =3D=3D '$') {=0A=
    return new VariableExpr(expr.substr(1));=0A=
  } else if (expr.charAt(0) =3D=3D '@') {=0A=
    var a =3D new NodeTestName(expr.substr(1));=0A=
    var b =3D new StepExpr('attribute', a);=0A=
    var c =3D new LocationExpr();=0A=
    c.appendStep(b);=0A=
    return c;=0A=
  } else if (expr.match(/^[0-9]+$/)) {=0A=
    return new NumberExpr(expr);=0A=
  } else {=0A=
    var a =3D new NodeTestName(expr);=0A=
    var b =3D new StepExpr('child', a);=0A=
    var c =3D new LocationExpr();=0A=
    c.appendStep(b);=0A=
    return c;=0A=
  }=0A=
}=0A=
=0A=
function makeSimpleExpr2(expr) {=0A=
  var steps =3D expr.split('/');=0A=
  var c =3D new LocationExpr();=0A=
  for (var i in steps) {=0A=
    var a =3D new NodeTestName(steps[i]);=0A=
    var b =3D new StepExpr('child', a);=0A=
    c.appendStep(b);=0A=
  }=0A=
  return c;=0A=
}=0A=
=0A=
// The axes of XPath expressions.=0A=
=0A=
var xpathAxis =3D {=0A=
  ANCESTOR_OR_SELF: 'ancestor-or-self',=0A=
  ANCESTOR: 'ancestor',=0A=
  ATTRIBUTE: 'attribute',=0A=
  CHILD: 'child',=0A=
  DESCENDANT_OR_SELF: 'descendant-or-self',=0A=
  DESCENDANT: 'descendant',=0A=
  FOLLOWING_SIBLING: 'following-sibling',=0A=
  FOLLOWING: 'following',=0A=
  NAMESPACE: 'namespace',=0A=
  PARENT: 'parent',=0A=
  PRECEDING_SIBLING: 'preceding-sibling',=0A=
  PRECEDING: 'preceding',=0A=
  SELF: 'self'=0A=
};=0A=
=0A=
var xpathAxesRe =3D [=0A=
    xpathAxis.ANCESTOR_OR_SELF,=0A=
    xpathAxis.ANCESTOR,=0A=
    xpathAxis.ATTRIBUTE,=0A=
    xpathAxis.CHILD,=0A=
    xpathAxis.DESCENDANT_OR_SELF,=0A=
    xpathAxis.DESCENDANT,=0A=
    xpathAxis.FOLLOWING_SIBLING,=0A=
    xpathAxis.FOLLOWING,=0A=
    xpathAxis.NAMESPACE,=0A=
    xpathAxis.PARENT,=0A=
    xpathAxis.PRECEDING_SIBLING,=0A=
    xpathAxis.PRECEDING,=0A=
    xpathAxis.SELF=0A=
].join('|');=0A=
=0A=
=0A=
// The tokens of the language. The label property is just used for=0A=
// generating debug output. The prec property is the precedence used=0A=
// for shift/reduce resolution. Default precedence is 0 as a lookahead=0A=
// token and 2 on the stack. TODO(mesch): this is certainly not=0A=
// necessary and too complicated. Simplify this!=0A=
=0A=
// NOTE: tabular formatting is the big exception, but here it should=0A=
// be OK.=0A=
=0A=
var TOK_PIPE =3D   { label: "|",   prec:   17, re: new RegExp("^\\|") };=0A=
var TOK_DSLASH =3D { label: "//",  prec:   19, re: new RegExp("^//")  };=0A=
var TOK_SLASH =3D  { label: "/",   prec:   30, re: new RegExp("^/")   };=0A=
var TOK_AXIS =3D   { label: "::",  prec:   20, re: new RegExp("^::")  };=0A=
var TOK_COLON =3D  { label: ":",   prec: 1000, re: new RegExp("^:")  };=0A=
var TOK_AXISNAME =3D { label: "[axis]", re: new RegExp('^(' + =
xpathAxesRe + ')') };=0A=
var TOK_PARENO =3D { label: "(",   prec:   34, re: new RegExp("^\\(") };=0A=
var TOK_PARENC =3D { label: ")",               re: new RegExp("^\\)") };=0A=
var TOK_DDOT =3D   { label: "..",  prec:   34, re: new RegExp("^\\.\\.") =
};=0A=
var TOK_DOT =3D    { label: ".",   prec:   34, re: new RegExp("^\\.") };=0A=
var TOK_AT =3D     { label: "@",   prec:   34, re: new RegExp("^@")   };=0A=
=0A=
var TOK_COMMA =3D  { label: ",",               re: new RegExp("^,") };=0A=
=0A=
var TOK_OR =3D     { label: "or",  prec:   10, re: new RegExp("^or\\b") =
};=0A=
var TOK_AND =3D    { label: "and", prec:   11, re: new RegExp("^and\\b") =
};=0A=
var TOK_EQ =3D     { label: "=3D",   prec:   12, re: new RegExp("^=3D")  =
 };=0A=
var TOK_NEQ =3D    { label: "!=3D",  prec:   12, re: new RegExp("^!=3D") =
 };=0A=
var TOK_GE =3D     { label: ">=3D",  prec:   13, re: new RegExp("^>=3D") =
 };=0A=
var TOK_GT =3D     { label: ">",   prec:   13, re: new RegExp("^>")   };=0A=
var TOK_LE =3D     { label: "<=3D",  prec:   13, re: new RegExp("^<=3D") =
 };=0A=
var TOK_LT =3D     { label: "<",   prec:   13, re: new RegExp("^<")   };=0A=
var TOK_PLUS =3D   { label: "+",   prec:   14, re: new RegExp("^\\+"), =
left: true };=0A=
var TOK_MINUS =3D  { label: "-",   prec:   14, re: new RegExp("^\\-"), =
left: true };=0A=
var TOK_DIV =3D    { label: "div", prec:   15, re: new =
RegExp("^div\\b"), left: true };=0A=
var TOK_MOD =3D    { label: "mod", prec:   15, re: new =
RegExp("^mod\\b"), left: true };=0A=
=0A=
var TOK_BRACKO =3D { label: "[",   prec:   32, re: new RegExp("^\\[") };=0A=
var TOK_BRACKC =3D { label: "]",               re: new RegExp("^\\]") };=0A=
var TOK_DOLLAR =3D { label: "$",               re: new RegExp("^\\$") };=0A=
=0A=
var TOK_NCNAME =3D { label: "[ncname]", re: new =
RegExp('^[a-z][-\\w]*','i') };=0A=
=0A=
var TOK_ASTERISK =3D { label: "*", prec: 15, re: new RegExp("^\\*"), =
left: true };=0A=
var TOK_LITERALQ =3D { label: "[litq]", prec: 20, re: new =
RegExp("^'[^\\']*'") };=0A=
var TOK_LITERALQQ =3D {=0A=
  label: "[litqq]",=0A=
  prec: 20,=0A=
  re: new RegExp('^"[^\\"]*"')=0A=
};=0A=
=0A=
var TOK_NUMBER  =3D {=0A=
  label: "[number]",=0A=
  prec: 35,=0A=
  re: new RegExp('^\\d+(\\.\\d*)?') };=0A=
=0A=
var TOK_QNAME =3D {=0A=
  label: "[qname]",=0A=
  re: new RegExp('^([a-z][-\\w]*:)?[a-z][-\\w]*','i')=0A=
};=0A=
=0A=
var TOK_NODEO =3D {=0A=
  label: "[nodetest-start]",=0A=
  re: new RegExp('^(processing-instruction|comment|text|node)\\(')=0A=
};=0A=
=0A=
// The table of the tokens of our grammar, used by the lexer: first=0A=
// column the tag, second column a regexp to recognize it in the=0A=
// input, third column the precedence of the token, fourth column a=0A=
// factory function for the semantic value of the token.=0A=
//=0A=
// NOTE: order of this list is important, because the first match=0A=
// counts. Cf. DDOT and DOT, and AXIS and COLON.=0A=
=0A=
var xpathTokenRules =3D [=0A=
    TOK_DSLASH,=0A=
    TOK_SLASH,=0A=
    TOK_DDOT,=0A=
    TOK_DOT,=0A=
    TOK_AXIS,=0A=
    TOK_COLON,=0A=
    TOK_AXISNAME,=0A=
    TOK_NODEO,=0A=
    TOK_PARENO,=0A=
    TOK_PARENC,=0A=
    TOK_BRACKO,=0A=
    TOK_BRACKC,=0A=
    TOK_AT,=0A=
    TOK_COMMA,=0A=
    TOK_OR,=0A=
    TOK_AND,=0A=
    TOK_NEQ,=0A=
    TOK_EQ,=0A=
    TOK_GE,=0A=
    TOK_GT,=0A=
    TOK_LE,=0A=
    TOK_LT,=0A=
    TOK_PLUS,=0A=
    TOK_MINUS,=0A=
    TOK_ASTERISK,=0A=
    TOK_PIPE,=0A=
    TOK_MOD,=0A=
    TOK_DIV,=0A=
    TOK_LITERALQ,=0A=
    TOK_LITERALQQ,=0A=
    TOK_NUMBER,=0A=
    TOK_QNAME,=0A=
    TOK_NCNAME,=0A=
    TOK_DOLLAR=0A=
];=0A=
=0A=
// All the nonterminals of the grammar. The nonterminal objects are=0A=
// identified by object identity; the labels are used in the debug=0A=
// output only.=0A=
var XPathLocationPath =3D { label: "LocationPath" };=0A=
var XPathRelativeLocationPath =3D { label: "RelativeLocationPath" };=0A=
var XPathAbsoluteLocationPath =3D { label: "AbsoluteLocationPath" };=0A=
var XPathStep =3D { label: "Step" };=0A=
var XPathNodeTest =3D { label: "NodeTest" };=0A=
var XPathPredicate =3D { label: "Predicate" };=0A=
var XPathLiteral =3D { label: "Literal" };=0A=
var XPathExpr =3D { label: "Expr" };=0A=
var XPathPrimaryExpr =3D { label: "PrimaryExpr" };=0A=
var XPathVariableReference =3D { label: "Variablereference" };=0A=
var XPathNumber =3D { label: "Number" };=0A=
var XPathFunctionCall =3D { label: "FunctionCall" };=0A=
var XPathArgumentRemainder =3D { label: "ArgumentRemainder" };=0A=
var XPathPathExpr =3D { label: "PathExpr" };=0A=
var XPathUnionExpr =3D { label: "UnionExpr" };=0A=
var XPathFilterExpr =3D { label: "FilterExpr" };=0A=
var XPathDigits =3D { label: "Digits" };=0A=
=0A=
var xpathNonTerminals =3D [=0A=
    XPathLocationPath,=0A=
    XPathRelativeLocationPath,=0A=
    XPathAbsoluteLocationPath,=0A=
    XPathStep,=0A=
    XPathNodeTest,=0A=
    XPathPredicate,=0A=
    XPathLiteral,=0A=
    XPathExpr,=0A=
    XPathPrimaryExpr,=0A=
    XPathVariableReference,=0A=
    XPathNumber,=0A=
    XPathFunctionCall,=0A=
    XPathArgumentRemainder,=0A=
    XPathPathExpr,=0A=
    XPathUnionExpr,=0A=
    XPathFilterExpr,=0A=
    XPathDigits=0A=
];=0A=
=0A=
// Quantifiers that are used in the productions of the grammar.=0A=
var Q_01 =3D { label: "?" };=0A=
var Q_MM =3D { label: "*" };=0A=
var Q_1M =3D { label: "+" };=0A=
=0A=
// Tag for left associativity (right assoc is implied by undefined).=0A=
var ASSOC_LEFT =3D true;=0A=
=0A=
// The productions of the grammar. Columns of the table:=0A=
//=0A=
// - target nonterminal,=0A=
// - pattern,=0A=
// - precedence,=0A=
// - semantic value factory=0A=
//=0A=
// The semantic value factory is a function that receives parse tree=0A=
// nodes from the stack frames of the matched symbols as arguments and=0A=
// returns an a node of the parse tree. The node is stored in the top=0A=
// stack frame along with the target object of the rule. The node in=0A=
// the parse tree is an expression object that has an evaluate() method=0A=
// and thus evaluates XPath expressions.=0A=
//=0A=
// The precedence is used to decide between reducing and shifting by=0A=
// comparing the precendence of the rule that is candidate for=0A=
// reducing with the precedence of the look ahead token. Precedence of=0A=
// -1 means that the precedence of the tokens in the pattern is used=0A=
// instead. TODO: It shouldn't be necessary to explicitly assign=0A=
// precedences to rules.=0A=
=0A=
var xpathGrammarRules =3D=0A=
  [=0A=
   [ XPathLocationPath, [ XPathRelativeLocationPath ], 18,=0A=
     passExpr ],=0A=
   [ XPathLocationPath, [ XPathAbsoluteLocationPath ], 18,=0A=
     passExpr ],=0A=
=0A=
   [ XPathAbsoluteLocationPath, [ TOK_SLASH, XPathRelativeLocationPath =
], 18, =0A=
     makeLocationExpr1 ],=0A=
   [ XPathAbsoluteLocationPath, [ TOK_DSLASH, XPathRelativeLocationPath =
], 18,=0A=
     makeLocationExpr2 ],=0A=
=0A=
   [ XPathAbsoluteLocationPath, [ TOK_SLASH ], 0,=0A=
     makeLocationExpr3 ],=0A=
   [ XPathAbsoluteLocationPath, [ TOK_DSLASH ], 0,=0A=
     makeLocationExpr4 ],=0A=
=0A=
   [ XPathRelativeLocationPath, [ XPathStep ], 31,=0A=
     makeLocationExpr5 ],=0A=
   [ XPathRelativeLocationPath,=0A=
     [ XPathRelativeLocationPath, TOK_SLASH, XPathStep ], 31,=0A=
     makeLocationExpr6 ],=0A=
   [ XPathRelativeLocationPath,=0A=
     [ XPathRelativeLocationPath, TOK_DSLASH, XPathStep ], 31,=0A=
     makeLocationExpr7 ],=0A=
=0A=
   [ XPathStep, [ TOK_DOT ], 33,=0A=
     makeStepExpr1 ],=0A=
   [ XPathStep, [ TOK_DDOT ], 33,=0A=
     makeStepExpr2 ],=0A=
   [ XPathStep,=0A=
     [ TOK_AXISNAME, TOK_AXIS, XPathNodeTest ], 33,=0A=
     makeStepExpr3 ],=0A=
   [ XPathStep, [ TOK_AT, XPathNodeTest ], 33,=0A=
     makeStepExpr4 ],=0A=
   [ XPathStep, [ XPathNodeTest ], 33,=0A=
     makeStepExpr5 ],=0A=
   [ XPathStep, [ XPathStep, XPathPredicate ], 33,=0A=
     makeStepExpr6 ],=0A=
=0A=
   [ XPathNodeTest, [ TOK_ASTERISK ], 33,=0A=
     makeNodeTestExpr1 ],=0A=
   [ XPathNodeTest, [ TOK_NCNAME, TOK_COLON, TOK_ASTERISK ], 33,=0A=
     makeNodeTestExpr2 ],=0A=
   [ XPathNodeTest, [ TOK_QNAME ], 33,=0A=
     makeNodeTestExpr3 ],=0A=
   [ XPathNodeTest, [ TOK_NODEO, TOK_PARENC ], 33,=0A=
     makeNodeTestExpr4 ],=0A=
   [ XPathNodeTest, [ TOK_NODEO, XPathLiteral, TOK_PARENC ], 33,=0A=
     makeNodeTestExpr5 ],=0A=
=0A=
   [ XPathPredicate, [ TOK_BRACKO, XPathExpr, TOK_BRACKC ], 33,=0A=
     makePredicateExpr ],=0A=
=0A=
   [ XPathPrimaryExpr, [ XPathVariableReference ], 33,=0A=
     passExpr ],=0A=
   [ XPathPrimaryExpr, [ TOK_PARENO, XPathExpr, TOK_PARENC ], 33,=0A=
     makePrimaryExpr ],=0A=
   [ XPathPrimaryExpr, [ XPathLiteral ], 30,=0A=
     passExpr ],=0A=
   [ XPathPrimaryExpr, [ XPathNumber ], 30,=0A=
     passExpr ],=0A=
   [ XPathPrimaryExpr, [ XPathFunctionCall ], 30,=0A=
     passExpr ],=0A=
=0A=
   [ XPathFunctionCall, [ TOK_QNAME, TOK_PARENO, TOK_PARENC ], -1,=0A=
     makeFunctionCallExpr1 ],=0A=
   [ XPathFunctionCall,=0A=
     [ TOK_QNAME, TOK_PARENO, XPathExpr, XPathArgumentRemainder, Q_MM,=0A=
       TOK_PARENC ], -1,=0A=
     makeFunctionCallExpr2 ],=0A=
   [ XPathArgumentRemainder, [ TOK_COMMA, XPathExpr ], -1,=0A=
     makeArgumentExpr ],=0A=
=0A=
   [ XPathUnionExpr, [ XPathPathExpr ], 20,=0A=
     passExpr ],=0A=
   [ XPathUnionExpr, [ XPathUnionExpr, TOK_PIPE, XPathPathExpr ], 20,=0A=
     makeUnionExpr ],=0A=
=0A=
   [ XPathPathExpr, [ XPathLocationPath ], 20, =0A=
     passExpr ], =0A=
   [ XPathPathExpr, [ XPathFilterExpr ], 19, =0A=
     passExpr ], =0A=
   [ XPathPathExpr, =0A=
     [ XPathFilterExpr, TOK_SLASH, XPathRelativeLocationPath ], 20,=0A=
     makePathExpr1 ],=0A=
   [ XPathPathExpr,=0A=
     [ XPathFilterExpr, TOK_DSLASH, XPathRelativeLocationPath ], 20,=0A=
     makePathExpr2 ],=0A=
=0A=
   [ XPathFilterExpr, [ XPathPrimaryExpr, XPathPredicate, Q_MM ], 20,=0A=
     makeFilterExpr ], =0A=
=0A=
   [ XPathExpr, [ XPathPrimaryExpr ], 16,=0A=
     passExpr ],=0A=
   [ XPathExpr, [ XPathUnionExpr ], 16,=0A=
     passExpr ],=0A=
=0A=
   [ XPathExpr, [ TOK_MINUS, XPathExpr ], -1,=0A=
     makeUnaryMinusExpr ],=0A=
=0A=
   [ XPathExpr, [ XPathExpr, TOK_OR, XPathExpr ], -1,=0A=
     makeBinaryExpr ],=0A=
   [ XPathExpr, [ XPathExpr, TOK_AND, XPathExpr ], -1,=0A=
     makeBinaryExpr ],=0A=
=0A=
   [ XPathExpr, [ XPathExpr, TOK_EQ, XPathExpr ], -1,=0A=
     makeBinaryExpr ],=0A=
   [ XPathExpr, [ XPathExpr, TOK_NEQ, XPathExpr ], -1,=0A=
     makeBinaryExpr ],=0A=
=0A=
   [ XPathExpr, [ XPathExpr, TOK_LT, XPathExpr ], -1,=0A=
     makeBinaryExpr ],=0A=
   [ XPathExpr, [ XPathExpr, TOK_LE, XPathExpr ], -1,=0A=
     makeBinaryExpr ],=0A=
   [ XPathExpr, [ XPathExpr, TOK_GT, XPathExpr ], -1,=0A=
     makeBinaryExpr ],=0A=
   [ XPathExpr, [ XPathExpr, TOK_GE, XPathExpr ], -1,=0A=
     makeBinaryExpr ],=0A=
=0A=
   [ XPathExpr, [ XPathExpr, TOK_PLUS, XPathExpr ], -1,=0A=
     makeBinaryExpr, ASSOC_LEFT ],=0A=
   [ XPathExpr, [ XPathExpr, TOK_MINUS, XPathExpr ], -1,=0A=
     makeBinaryExpr, ASSOC_LEFT ],=0A=
=0A=
   [ XPathExpr, [ XPathExpr, TOK_ASTERISK, XPathExpr ], -1,=0A=
     makeBinaryExpr, ASSOC_LEFT ],=0A=
   [ XPathExpr, [ XPathExpr, TOK_DIV, XPathExpr ], -1,=0A=
     makeBinaryExpr, ASSOC_LEFT ],=0A=
   [ XPathExpr, [ XPathExpr, TOK_MOD, XPathExpr ], -1,=0A=
     makeBinaryExpr, ASSOC_LEFT ],=0A=
=0A=
   [ XPathLiteral, [ TOK_LITERALQ ], -1,=0A=
     makeLiteralExpr ],=0A=
   [ XPathLiteral, [ TOK_LITERALQQ ], -1,=0A=
     makeLiteralExpr ],=0A=
=0A=
   [ XPathNumber, [ TOK_NUMBER ], -1,=0A=
     makeNumberExpr ],=0A=
=0A=
   [ XPathVariableReference, [ TOK_DOLLAR, TOK_QNAME ], 200,=0A=
     makeVariableReference ]=0A=
   ];=0A=
=0A=
// That function computes some optimizations of the above data=0A=
// structures and will be called right here. It merely takes the=0A=
// counter variables out of the global scope.=0A=
=0A=
var xpathRules =3D [];=0A=
=0A=
function xpathParseInit() {=0A=
  if (xpathRules.length) {=0A=
    return;=0A=
  }=0A=
=0A=
  // Some simple optimizations for the xpath expression parser: sort=0A=
  // grammar rules descending by length, so that the longest match is=0A=
  // first found.=0A=
=0A=
  xpathGrammarRules.sort(function(a,b) {=0A=
    var la =3D a[1].length;=0A=
    var lb =3D b[1].length;=0A=
    if (la < lb) {=0A=
      return 1;=0A=
    } else if (la > lb) {=0A=
      return -1;=0A=
    } else {=0A=
      return 0;=0A=
    }=0A=
  });=0A=
=0A=
  var k =3D 1;=0A=
  for (var i =3D 0; i < xpathNonTerminals.length; ++i) {=0A=
    xpathNonTerminals[i].key =3D k++;=0A=
  }=0A=
=0A=
  for (i =3D 0; i < xpathTokenRules.length; ++i) {=0A=
    xpathTokenRules[i].key =3D k++;=0A=
  }=0A=
=0A=
  if (xpathdebug) {=0A=
    Log.write('XPath parse INIT: ' + k + ' rules');=0A=
  }=0A=
=0A=
  // Another slight optimization: sort the rules into bins according=0A=
  // to the last element (observing quantifiers), so we can restrict=0A=
  // the match against the stack to the subest of rules that match the=0A=
  // top of the stack.=0A=
  //=0A=
  // TODO(mesch): What we actually want is to compute states as in=0A=
  // bison, so that we don't have to do any explicit and iterated=0A=
  // match against the stack.=0A=
=0A=
  function push_(array, position, element) {=0A=
    if (!array[position]) {=0A=
      array[position] =3D [];=0A=
    }=0A=
    array[position].push(element);=0A=
  }=0A=
=0A=
  for (i =3D 0; i < xpathGrammarRules.length; ++i) {=0A=
    var rule =3D xpathGrammarRules[i];=0A=
    var pattern =3D rule[1];=0A=
=0A=
    for (var j =3D pattern.length - 1; j >=3D 0; --j) {=0A=
      if (pattern[j] =3D=3D Q_1M) {=0A=
        push_(xpathRules, pattern[j-1].key, rule);=0A=
        break;=0A=
        =0A=
      } else if (pattern[j] =3D=3D Q_MM || pattern[j] =3D=3D Q_01) {=0A=
        push_(xpathRules, pattern[j-1].key, rule);=0A=
        --j;=0A=
=0A=
      } else {=0A=
        push_(xpathRules, pattern[j].key, rule);=0A=
        break;=0A=
      }=0A=
    }=0A=
  }=0A=
=0A=
  if (xpathdebug) {=0A=
    Log.write('XPath parse INIT: ' + xpathRules.length + ' rule bins');=0A=
  }=0A=
  var sum =3D 0;=0A=
  mapExec(xpathRules, function(i) {=0A=
    if (i) {=0A=
      sum +=3D i.length;=0A=
    }=0A=
  });=0A=
  =0A=
  if (xpathdebug) {=0A=
    Log.write('XPath parse INIT: ' + (sum / xpathRules.length) + ' =
average bin size');=0A=
  }=0A=
}=0A=
=0A=
// Local utility functions that are used by the lexer or parser.=0A=
=0A=
function xpathCollectDescendants(nodelist, node) {=0A=
  for (var n =3D node.firstChild; n; n =3D n.nextSibling) {=0A=
    nodelist.push(n);=0A=
    arguments.callee(nodelist, n);=0A=
  }=0A=
}=0A=
=0A=
function xpathCollectDescendantsReverse(nodelist, node) {=0A=
  for (var n =3D node.lastChild; n; n =3D n.previousSibling) {=0A=
    nodelist.push(n);=0A=
    arguments.callee(nodelist, n);=0A=
  }=0A=
}=0A=
=0A=
=0A=
// The entry point for the library: match an expression against a DOM=0A=
// node. Returns an XPath value.=0A=
function xpathDomEval(expr, node) {=0A=
  var expr1 =3D xpathParse(expr);=0A=
  var ret =3D expr1.evaluate(new ExprContext(node));=0A=
  return ret;=0A=
}=0A=
=0A=
// Utility function to sort a list of nodes. Used by xsltSort() and=0A=
// nxslSelect().=0A=
function xpathSort(input, sort) {=0A=
  if (sort.length =3D=3D 0) {=0A=
    return;=0A=
  }=0A=
=0A=
  var sortlist =3D [];=0A=
=0A=
  for (var i =3D 0; i < input.nodelist.length; ++i) {=0A=
    var node =3D input.nodelist[i];=0A=
    var sortitem =3D { node: node, key: [] };=0A=
    var context =3D input.clone(node, 0, [ node ]);=0A=
    =0A=
    for (var j =3D 0; j < sort.length; ++j) {=0A=
      var s =3D sort[j];=0A=
      var value =3D s.expr.evaluate(context);=0A=
=0A=
      var evalue;=0A=
      if (s.type =3D=3D 'text') {=0A=
        evalue =3D value.stringValue();=0A=
      } else if (s.type =3D=3D 'number') {=0A=
        evalue =3D value.numberValue();=0A=
      }=0A=
      sortitem.key.push({ value: evalue, order: s.order });=0A=
    }=0A=
=0A=
    // Make the sort stable by adding a lowest priority sort by=0A=
    // id. This is very convenient and furthermore required by the=0A=
    // spec ([XSLT] - Section 10 Sorting).=0A=
    sortitem.key.push({ value: i, order: 'ascending' });=0A=
=0A=
    sortlist.push(sortitem);=0A=
  }=0A=
=0A=
  sortlist.sort(xpathSortByKey);=0A=
=0A=
  var nodes =3D [];=0A=
  for (var i =3D 0; i < sortlist.length; ++i) {=0A=
    nodes.push(sortlist[i].node);=0A=
  }=0A=
  input.nodelist =3D nodes;=0A=
  input.setNode(nodes[0], 0);=0A=
}=0A=
=0A=
=0A=
// Sorts by all order criteria defined. According to the JavaScript=0A=
// spec ([ECMA] Section 11.8.5), the compare operators compare strings=0A=
// as strings and numbers as numbers.=0A=
//=0A=
// NOTE: In browsers which do not follow the spec, this breaks only in=0A=
// the case that numbers should be sorted as strings, which is very=0A=
// uncommon.=0A=
=0A=
function xpathSortByKey(v1, v2) {=0A=
  // NOTE: Sort key vectors of different length never occur in=0A=
  // xsltSort.=0A=
=0A=
  for (var i =3D 0; i < v1.key.length; ++i) {=0A=
    var o =3D v1.key[i].order =3D=3D 'descending' ? -1 : 1;=0A=
    if (v1.key[i].value > v2.key[i].value) {=0A=
      return +1 * o;=0A=
    } else if (v1.key[i].value < v2.key[i].value) {=0A=
      return -1 * o;=0A=
    }=0A=
  }=0A=
=0A=
  return 0;=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1189597715663939/LVDG_LectorXML.js

LectorXML.xml=3D'';=0A=
=0A=
	function LectorXML(url){=0A=
	    if ((url!=3Dundefined)&&(url!=3D'')) {=0A=
		    this.xml =3D loadCall(url);=0A=
	     }=0A=
	};=0A=
	=0A=
	LectorXML.setXML=3Dfunction(xml){=0A=
		this.xml=3Dxml;=0A=
	};=0A=
=0A=
=0A=
	  function loadCall(url) {=0A=
	    // branch for native XMLHttpRequest object=0A=
	    if (window.XMLHttpRequest) {=0A=
	        req =3D new XMLHttpRequest();=0A=
	        req.onreadystatechange =3D processReqChange;=0A=
	        req.open("GET", url, false); // the third parameter - true - =
specified ASYNCHRONOUS processing i.e. not waiting for the response!=0A=
	        req.send(null);=0A=
	        return req.responseText;=0A=
	    // branch for IE/Windows ActiveX version=0A=
	    } else if (window.ActiveXObject) {=0A=
	        req =3D new ActiveXObject("Microsoft.XMLHTTP");=0A=
	        if (req) {=0A=
	            req.onreadystatechange =3D processReqChange;=0A=
	            req.open("GET", url, false); // the third parameter - true =
- specified ASYNCHRONOUS processing i.e. not waiting for the response!=0A=
	            req.send();=0A=
	        	return req.responseText;=0A=
	        }=0A=
	    }=0A=
	  }   =0A=
		       =0A=
	  function processReqChange()  {=0A=
	    // only if req shows "complete"=0A=
	    if (req.readyState =3D=3D 4) {=0A=
	      // only if "OK"=0A=
	      if (req.status =3D=3D 200) {=0A=
	          xmldoc=3Dreq.responseXML;=0A=
	          //_xml=3Dreq.responseText;=0A=
	      }=0A=
	      else {=0A=
	        alert("Error: can not get the content ("+ req.statusText +")");=0A=
	      }    =0A=
	    }=0A=
	  }
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/290D96910A80B1A1008F337B78D9049E/LVDG_validaciones_opinas.js

function FormValidator(formulario)=0A=
{=0A=
	var autor =3D formulario.Autor;=0A=
=0A=
	if (autor.value=3D=3D"")=0A=
	{=0A=
		alert("Introduzca su nombre")=0A=
		autor.focus();=0A=
		return (false);=0A=
	}=0A=
	=0A=
	var ciudad =3D formulario.Poblacion;=0A=
	=0A=
	if (ciudad.value=3D=3D"")=0A=
	{=0A=
		alert("Introduzca su ciudad")=0A=
		ciudad.focus();=0A=
		return (false);=0A=
	}=0A=
	=0A=
	var correo =3D formulario.correo;=0A=
	=0A=
	if (correo.value=3D=3D"")=0A=
	{=0A=
		alert("Introduzca su direcci=F3n de correo el=E9ctronico")=0A=
		correo.focus();=0A=
		return (false);=0A=
	}=0A=
	=0A=
	 =0A=
	var at =3D correo.value.indexOf("@")=0A=
	var dot =3D correo.value.lastIndexOf(".")=0A=
	var correoLength =3D correo.value.length=0A=
	=0A=
	if (at<1 || dot-at<2 || correoLength-dot=3D=3D1)=0A=
	{=0A=
       alert("El formato de la direcci=F3n de correo electr=F3nio =
introducida no es correcto");=0A=
       correo.focus();=0A=
       correo.select();=0A=
       return (false);=0A=
=0A=
	}=0A=
		=0A=
	var titulo =3D formulario.Titulo;=0A=
	=0A=
	if (titulo.value=3D=3D"")=0A=
	{=0A=
		alert("Introduzca el t=EDtulo de su comentario")=0A=
		titulo.focus();=0A=
		return (false);=0A=
	}=0A=
	=0A=
	var texto =3D formulario.Texto;=0A=
	var textoLength =3D texto.value.length=0A=
	=0A=
	=0A=
	if (textoLength<=3D1)=0A=
	{=0A=
		alert("Introduzca el texto de su comentario")=0A=
		texto.focus();=0A=
		return (false);=0A=
	}=0A=
	else if (textoLength>3500)=0A=
	{=0A=
		alert("Su comentario no debe exceder los 3000 caracteres")=0A=
		texto.focus();=0A=
		return (false);=0A=
	}=0A=
	=0A=
return true;=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1189597743995408/LVDG_LectorXSLT.js

LectorXSLT.ruta=3D'';=0A=
LectorXSLT.xslt=3D'';=0A=
=0A=
function LectorXSLT(ruta){=0A=
	this.ruta=3Druta;=0A=
	if ((ruta!=3Dundefined) && (ruta!=3D''))=0A=
		this.xslt =3D loadXSLT(ruta);=0A=
	else=0A=
		this.xslt =3D '<xsl:stylesheet version=3D"1.0" =
xmlns:xsl=3D"http://www.w3.org/1999/XSL/Transform"><xsl:template =
match=3D"/"><xsl:copy-of select=3D"/"/></xsl:template></xsl:stylesheet>';=0A=
};=0A=
=0A=
LectorXSLT.getXSLT=3Dfunction(){=0A=
	return this.xslt;=0A=
};=0A=
=0A=
LectorXSLT.setXSLT=3Dfunction(xslt){=0A=
	this.xslt =3D xslt;=0A=
};=0A=
=0A=
LectorXSLT.getRuta=3Dfunction(){=0A=
	return this.ruta;=0A=
};=0A=
=0A=
LectorXSLT.setRuta=3Dfunction(ruta){=0A=
	this.ruta =3D ruta;=0A=
};=0A=
=0A=
=0A=
	  function loadXSLT(url) {=0A=
	    // branch for native XMLHttpRequest object=0A=
	    if (window.XMLHttpRequest) {=0A=
	        req =3D new XMLHttpRequest();=0A=
	        req.onreadystatechange =3D processReqChange;=0A=
	        req.open("GET", url, false); // the third parameter - true - =
specified ASYNCHRONOUS processing i.e. not waiting for the response!=0A=
	        req.send(null);=0A=
	        return req.responseText;=0A=
	    // branch for IE/Windows ActiveX version=0A=
	    } else if (window.ActiveXObject) {=0A=
	        req =3D new ActiveXObject("Microsoft.XMLHTTP");=0A=
	        if (req) {=0A=
	            req.onreadystatechange =3D processReqChange;=0A=
	            req.open("GET", url, false); // the third parameter - true =
- specified ASYNCHRONOUS processing i.e. not waiting for the response!=0A=
	            req.send();=0A=
	        	return req.responseText;=0A=
	        }=0A=
	    }=0A=
	  }
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1192035251129886921/LVDG_validaciones_envio_noticia.js

function validaEnviar(formulario)=0A=
{=0A=
	var para =3D formulario.para;=0A=
	if (para.value=3D=3D"")=0A=
	{=0A=
		alert("Introduzca destinatario del correo")=0A=
		para.focus();=0A=
		return (false);=0A=
	}=0A=
	=0A=
	var paraSeparados =3D para.value.split(";");=0A=
	=0A=
	for(i=3D0;i<paraSeparados.length;i++){=0A=
		var at =3D paraSeparados[i].indexOf("@")=0A=
		var dot =3D paraSeparados[i].lastIndexOf(".")=0A=
		var correoLength =3D paraSeparados[i].length=0A=
		=0A=
		if (at<1 || dot-at<2 || correoLength-dot=3D=3D1)=0A=
		{=0A=
	       alert("El formato de la direcci=F3n de correo electr=F3nico =
introducida no es correcto");=0A=
	       para.focus();=0A=
	       para.select();=0A=
	       return (false);=0A=
=0A=
		}=0A=
	} =0A=
	=0A=
	var correo =3D formulario.correo;=0A=
	=0A=
	if (correo.value=3D=3D"")=0A=
	{=0A=
		alert("Introduzca su direcci=F3n de correo el=E9ctronico")=0A=
		correo.focus();=0A=
		return (false);=0A=
	}=0A=
	=0A=
	 =0A=
	var at =3D correo.value.indexOf("@")=0A=
	var dot =3D correo.value.lastIndexOf(".")=0A=
	var correoLength =3D correo.value.length=0A=
	=0A=
	if (at<1 || dot-at<2 || correoLength-dot=3D=3D1)=0A=
	{=0A=
       alert("El formato de la direcci=F3n de correo electr=F3nio =
introducida no es correcto");=0A=
       correo.focus();=0A=
       correo.select();=0A=
       return (false);=0A=
=0A=
	}=0A=
		=0A=
	var nombre =3D formulario.nombre;=0A=
	=0A=
	if (nombre.value=3D=3D"")=0A=
	{=0A=
		alert("Introduzca su nombre")=0A=
		nombre.focus();=0A=
		return (false);=0A=
	}=0A=
=0A=
	=0A=
return true;=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1189597562672697/LVDG_AjaxMisc.js

// Copyright 2005 Google Inc.=0A=
// All Rights Reserved=0A=
//=0A=
// Miscellania that support the ajaxslt implementation.=0A=
//=0A=
// Author: Steffen Meschkat <mesch@google.com>=0A=
//=0A=
=0A=
function el(i) {=0A=
  return document.getElementById(i);=0A=
}=0A=
=0A=
function px(x) {=0A=
  return x + 'px';=0A=
}=0A=
=0A=
// Split a string s at all occurrences of character c. This is like=0A=
// the split() method of the string object, but IE omits empty=0A=
// strings, which violates the invariant (s.split(x).join(x) =3D=3D s).=0A=
function stringSplit(s, c) {=0A=
  var a =3D s.indexOf(c);=0A=
  if (a =3D=3D -1) {=0A=
    return [ s ];=0A=
  }=0A=
  =0A=
  var parts =3D [];=0A=
  parts.push(s.substr(0,a));=0A=
  while (a !=3D -1) {=0A=
    var a1 =3D s.indexOf(c, a + 1);=0A=
    if (a1 !=3D -1) {=0A=
      parts.push(s.substr(a + 1, a1 - a - 1));=0A=
    } else {=0A=
      parts.push(s.substr(a + 1));=0A=
    } =0A=
    a =3D a1;=0A=
  }=0A=
=0A=
  return parts;=0A=
}=0A=
=0A=
// Returns the text value if a node; for nodes without children this=0A=
// is the nodeValue, for nodes with children this is the concatenation=0A=
// of the value of all children.=0A=
function xmlValue(node) {=0A=
  if (!node) {=0A=
    return '';=0A=
  }=0A=
=0A=
  var ret =3D '';=0A=
  if (node.nodeType =3D=3D DOM_TEXT_NODE ||=0A=
      node.nodeType =3D=3D DOM_CDATA_SECTION_NODE ||=0A=
      node.nodeType =3D=3D DOM_ATTRIBUTE_NODE) {=0A=
    ret +=3D node.nodeValue;=0A=
=0A=
  } else if (node.nodeType =3D=3D DOM_ELEMENT_NODE ||=0A=
             node.nodeType =3D=3D DOM_DOCUMENT_NODE ||=0A=
             node.nodeType =3D=3D DOM_DOCUMENT_FRAGMENT_NODE) {=0A=
    for (var i =3D 0; i < node.childNodes.length; ++i) {=0A=
      ret +=3D arguments.callee(node.childNodes[i]);=0A=
    }=0A=
  }=0A=
  return ret;=0A=
}=0A=
=0A=
// Returns the representation of a node as XML text.=0A=
function xmlText(node) {=0A=
  var ret =3D '';=0A=
  if (node.nodeType =3D=3D DOM_TEXT_NODE) {=0A=
    ret +=3D xmlEscapeText(node.nodeValue);=0A=
    =0A=
  } else if (node.nodeType =3D=3D DOM_ELEMENT_NODE) {=0A=
    ret +=3D '<' + node.nodeName;=0A=
    for (var i =3D 0; i < node.attributes.length; ++i) {=0A=
      var a =3D node.attributes[i];=0A=
      if (a && a.nodeName && a.nodeValue) {=0A=
        ret +=3D ' ' + a.nodeName;=0A=
        ret +=3D '=3D"' + xmlEscapeAttr(a.nodeValue) + '"';=0A=
      }=0A=
    }=0A=
=0A=
    if (node.childNodes.length =3D=3D 0) {=0A=
      ret +=3D '/>';=0A=
=0A=
    } else {=0A=
      ret +=3D '>';=0A=
      for (var i =3D 0; i < node.childNodes.length; ++i) {=0A=
        ret +=3D arguments.callee(node.childNodes[i]);=0A=
      }=0A=
      ret +=3D '</' + node.nodeName + '>';=0A=
    }=0A=
    =0A=
  } else if (node.nodeType =3D=3D DOM_DOCUMENT_NODE || =0A=
             node.nodeType =3D=3D DOM_DOCUMENT_FRAGMENT_NODE) {=0A=
    for (var i =3D 0; i < node.childNodes.length; ++i) {=0A=
      ret +=3D arguments.callee(node.childNodes[i]);=0A=
    }=0A=
  }=0A=
  =0A=
  return ret;=0A=
}=0A=
=0A=
// Applies the given function to each element of the array.=0A=
function mapExec(array, func) {=0A=
  for (var i =3D 0; i < array.length; ++i) {=0A=
    func(array[i]);=0A=
  }=0A=
}=0A=
=0A=
// Returns an array that contains the return value of the given=0A=
// function applied to every element of the input array.=0A=
function mapExpr(array, func) {=0A=
  var ret =3D [];=0A=
  for (var i =3D 0; i < array.length; ++i) {=0A=
    ret.push(func(array[i]));=0A=
  }=0A=
  return ret;=0A=
};=0A=
=0A=
// Reverses the given array in place.=0A=
function reverseInplace(array) {=0A=
  for (var i =3D 0; i < array.length / 2; ++i) {=0A=
    var h =3D array[i];=0A=
    var ii =3D array.length - i - 1;=0A=
    array[i] =3D array[ii];=0A=
    array[ii] =3D h;=0A=
  }=0A=
}=0A=
=0A=
// Shallow-copies an array.=0A=
function copyArray(dst, src) { =0A=
  for (var i =3D 0; i < src.length; ++i) {=0A=
    dst.push(src[i]);=0A=
  }=0A=
}=0A=
=0A=
function assert(b) {=0A=
  if (!b) {=0A=
    throw 'assertion failed';=0A=
  }=0A=
}=0A=
=0A=
// Escape XML special markup chracters: tag delimiter < > and entity=0A=
// reference start delimiter &. The escaped string can be used in XML=0A=
// text portions (i.e. between tags).=0A=
function xmlEscapeText(s) {=0A=
  return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, =
'&gt;');=0A=
}=0A=
=0A=
// Escape XML special markup characters: tag delimiter < > entity=0A=
// reference start delimiter & and quotes ". The escaped string can be=0A=
// used in double quoted XML attribute value portions (i.e. in=0A=
// attributes within start tags).=0A=
function xmlEscapeAttr(s) {=0A=
  return xmlEscapeText(s).replace(/\"/g, '&quot;');=0A=
}=0A=
=0A=
// Escape markup in XML text, but don't touch entity references. The=0A=
// escaped string can be used as XML text (i.e. between tags).=0A=
function xmlEscapeTags(s) {=0A=
  return s.replace(/</g, '&lt;').replace(/>/g, '&gt;');=0A=
}=0A=
=0A=
// An implementation of the debug log. =0A=
=0A=
var logging__ =3D true;=0A=
=0A=
function Log() {};=0A=
=0A=
Log.lines =3D [];=0A=
=0A=
Log.write =3D function(s) {=0A=
  if (logging__) {=0A=
    this.lines.push(xmlEscapeText(s));=0A=
    this.show();=0A=
  }=0A=
};=0A=
=0A=
// Writes the given XML with every tag on a new line.=0A=
Log.writeXML =3D function(xml) {=0A=
  if (logging__) {=0A=
    var s0 =3D xml.replace(/</g, '\n<');=0A=
    var s1 =3D xmlEscapeText(s0);=0A=
    var s2 =3D s1.replace(/\s*\n(\s|\n)*/g, '<br/>');=0A=
    this.lines.push(s2);=0A=
    this.show();=0A=
  }=0A=
}=0A=
=0A=
// Writes without any escaping=0A=
Log.writeRaw =3D function(s) {=0A=
  if (logging__) {=0A=
    this.lines.push(s);=0A=
    this.show();=0A=
  }=0A=
}=0A=
=0A=
Log.clear =3D function() {=0A=
  if (logging__) {=0A=
    var l =3D this.div();=0A=
    l.innerHTML =3D '';=0A=
    this.lines =3D [];=0A=
  }=0A=
}=0A=
=0A=
Log.show =3D function() {=0A=
  var l =3D this.div();=0A=
  l.innerHTML +=3D this.lines.join('<br/>') + '<br/>';=0A=
  this.lines =3D [];=0A=
  l.scrollTop =3D l.scrollHeight;=0A=
}=0A=
=0A=
Log.div =3D function() {=0A=
  var l =3D document.getElementById('log');=0A=
  if (!l) {=0A=
    l =3D document.createElement('div');=0A=
    l.id =3D 'log';=0A=
    l.style.position =3D 'absolute';=0A=
    l.style.right =3D '5px';=0A=
    l.style.top =3D '5px';=0A=
    l.style.width =3D '250px';=0A=
    l.style.height =3D '150px';=0A=
    l.style.overflow =3D 'auto';=0A=
    l.style.backgroundColor =3D '#f0f0f0';=0A=
    l.style.border =3D '1px solid gray';=0A=
    l.style.fontSize =3D '10px';=0A=
    l.style.padding =3D '5px';=0A=
    document.body.appendChild(l);=0A=
  }=0A=
  return l;=0A=
}=0A=
=0A=
=0A=
function Timer() {}=0A=
Timer.start =3D function() {}=0A=
Timer.end =3D function() {}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/518EE9620A80B197011F7B3D4E9A130D/LVDG_banners.js

//var server_name=3D"ads.lavozdegalicia.es";=0A=
var server_name=3D"publicidadinternet.lavozdegalicia.es";=0A=
var server_name_external=3D"http://ad.es.doubleclick.net/adj/";=0A=
var OAS_url;=0A=
var v_tile;=0A=
=0A=
function bannerInterno(zoneId) {=0A=
=0A=
	if (!document.phpAds_used) document.phpAds_used =3D ',';=0A=
	document.write ("<" + "script type=3D'text/javascript' src=3D'");=0A=
	document.write ("http://"+server_name+"/adjs.php?n=3Dadda1f64");=0A=
	document.write ("&what=3Dzone:"+zoneId+"&amp;target=3D_blank");=0A=
	document.write ("&exclude=3D" + document.phpAds_used);=0A=
	document.write ("'><" + "/script>");=0A=
=0A=
}=0A=
=0A=
var llamada =3D true;=0A=
=0A=
function OAS_AD(pos) {=0A=
		var m_OAS_url=3DOAS_url;=0A=
		if (pos=3D=3D"megabanner"){=0A=
		  	var size=3D'728x90,468x60';=0A=
           	m_OAS_url+=3D';dcopt=3Dist';=0A=
           	=0A=
		}else if (pos=3D=3D"robapaginas"){=0A=
		  	var size=3D'300x300,300x250,200x200';=0A=
=0A=
		}else if (pos=3D=3D"pastilla_superior"){=0A=
		  	var size=3D'240x90';=0A=
=0A=
		}else if (pos=3D=3D"ventana"){=0A=
		  	var size=3D'300x140';=0A=
=0A=
		}else if (pos=3D=3D"skyscraper"){=0A=
		  	var size=3D'120x600,200x600';=0A=
=0A=
		}else if (pos=3D=3D"megabanner_inf"){=0A=
		  	var size=3D'728x90,468x60';=0A=
=0A=
		}else if (pos=3D=3D"pastilla_inferior"){=0A=
		  	var size=3D'240x45';=0A=
=0A=
         }else if (pos=3D=3D"cintillo_superior"){=0A=
		  	var size=3D'640x30';=0A=
               var str_source =3D "/portada"; =
///www\.lavozdegalicia\.es/;=0A=
               var str_replace_with =3D "/cintillo.portada";=0A=
               m_OAS_url =3D =
m_OAS_url.replace(str_source,str_replace_with);	=0A=
		}else{=0A=
		  var size=3D'0';=0A=
		}=0A=
=0A=
=0A=
if(typeof(v_randomnumber)=3D=3D"undefined"){=0A=
var v_randomnumber=3DMath.floor(Math.random()*10000000000)}=0A=
=0A=
if(typeof(v_tile)=3D=3D"undefined"){v_tile=3D1}else{v_tile++}=0A=
document.write('<scr'+'ipt =
src=3D"'+m_OAS_url+';pos=3D'+pos+';tile=3D'+v_tile+';sz=3D'+size+';ord=3D=
'+v_randomnumber+'?"><\/scr'+'ipt>');=0A=
=0A=
}=0A=
// para compatiblidad de segmentacion antigua =
[replace[segmentacion-vieja, por nuevo]=0A=
function configuracionOAS(segmentacion) {=0A=
var str_source =3D /www\.lavozdegalicia\.es/;=0A=
var str_replace_with =3D "vocento.lavozdegalicia";=0A=
   if (segmentacion.indexOf('www.lavozdegalicia')!=3D-1)=0A=
	      segmentacion =3D =
segmentacion.replace(str_source,str_replace_with);		=0A=
	if (llamada){ =0A=
		OAS_url =3D server_name_external + segmentacion;=0A=
	}=0A=
	llamada =3D false;=0A=
}=0A=
=0A=
	function muestra(banner) {=0A=
		var caja=3D getObject(banner)=0A=
		if (caja) {=0A=
			var contenido=3Dcaja.innerHTML;=0A=
			if (contenido!=3Dnull && contenido!=3D"" && =
!(contenido.indexOf('/default/empty.gif') !=3D -1) && =
!(contenido.indexOf('-grey.gif') !=3D -1)) {=0A=
				caja.style.display =3D "block";=0A=
			} else {=0A=
				caja.innerHTML =3D "";=0A=
				caja.style.display =3D "none";=0A=
			}=0A=
		}=0A=
	}=0A=
=0A=
function phpads_deliverActiveX(content)=0A=
{=0A=
	document.write(content);	=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1200937757704715300/LVDG_utiles.js

// Aumentar y disminuir parrafos=0A=
=0A=
var tamanoParrafoDefecto =3D 16;=0A=
var tamanoParrafo =3D tamanoParrafoDefecto;=0A=
var tamanoParrafoMinimo =3D 16;=0A=
var tamanoParrafoMaximo =3D 24;=0A=
var cambioTamano;=0A=
=0A=
function aumentaParrafo(estilo, id) {=0A=
    if (tamanoParrafo < tamanoParrafoMaximo) {=0A=
		tamanoParrafo +=3D 2;=0A=
		cambioTamano =3D document.getElementById(id);=0A=
=0A=
		var parrafos =3D cambioTamano.getElementsByTagName('p');=0A=
		for (var i=3D0; i<parrafos.length; i++) {=0A=
			if (parrafos[i].className=3D=3Destilo){=0A=
				parrafos[i].style.fontSize=3DtamanoParrafo;=0A=
			}=0A=
		}=0A=
    }=0A=
}=0A=
=0A=
function disminuyeParrafo(estilo, id) {=0A=
    if (tamanoParrafo > tamanoParrafoMinimo) {=0A=
		tamanoParrafo -=3D 2;=0A=
		cambioTamano =3D document.getElementById(id);=0A=
		=0A=
		var parrafos =3D cambioTamano.getElementsByTagName('p');=0A=
		for (var i=3D0; i<parrafos.length; i++) {=0A=
			if (parrafos[i].className=3D=3Destilo){=0A=
				parrafos[i].style.fontSize=3DtamanoParrafo;=0A=
			}=0A=
		}=0A=
    }=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1197640683627484864/LVDG_votacion.js

function obtener_votacion(id_noticia, dominio){=0A=
	var lectorXML =3D new =
LectorXML('/votacion/pixel_votos.php?codigo=3D'+id_noticia+'&dominio=3D'+=
dominio);=0A=
	var xml =3D lectorXML.xml;=0A=
	pintarResultados(xml, id_noticia);=0A=
}=0A=
=0A=
function votar(id_noticia, dominio, voto){=0A=
	//modificado 16/04/08 puede haber 2 noticias en una pagina, se a=F1ade =
id, para paginas antiguas se deja sin id=0A=
	if (document.getElementById('votacion'+id_noticia)!=3Dnull){=0A=
		document.getElementById('votacion'+id_noticia).className=3D"no";=0A=
	}else{=0A=
		document.getElementById('votacion').className=3D"no";=0A=
	}=0A=
	if (document.getElementById('enviandoVotacion'+id_noticia)!=3Dnull){=0A=
		=
document.getElementById('enviandoVotacion'+id_noticia).className=3D"votno=
t";=0A=
	}else{=0A=
		document.getElementById('enviandoVotacion').className=3D"votnot";=0A=
	}=0A=
	//hacemos la petici=F3n=0A=
	var lectorXML =3D new =
LectorXML('/votacion/pixel_vota.php?codigo=3D'+id_noticia+'&dominio=3D'+d=
ominio+'&voto=3D'+voto);=0A=
	//recogemos datos y pintamos=0A=
	var xml =3D lectorXML.xml;=0A=
	pintarResultados(xml,id_noticia);=0A=
	=0A=
	if (document.getElementById('enviandoVotacion'+id_noticia)!=3Dnull){=0A=
		=
document.getElementById('enviandoVotacion'+id_noticia).className=3D"no";=0A=
	}else{=0A=
		document.getElementById('enviandoVotacion').className=3D"no";=0A=
	}=0A=
	if (document.getElementById('votacion'+id_noticia)!=3Dnull){=0A=
		document.getElementById('votacion'+id_noticia).className=3D"votnot";=0A=
	}else{=0A=
		document.getElementById('votacion').className=3D"votnot";=0A=
	}=0A=
	if (document.getElementById('votacionEnviada'+id_noticia)!=3Dnull){=0A=
		=
document.getElementById('votacionEnviada'+id_noticia).className=3D"votnot=
";=0A=
	}else{=0A=
		document.getElementById('votacionEnviada').className=3D"votnot";=0A=
	}=0A=
	//Deshabilitamos el envio de votos=0A=
	for (i=3D0;i<5;i++){=0A=
		if (document.getElementById('star'+id_noticia+i)!=3Dnull){=0A=
			document.getElementById('star'+id_noticia+i).onclick=3Dnada;=0A=
		}else{=0A=
			document.getElementById('star'+i).onclick=3Dnada;=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
//funci=F3n para que una vez se haya realizado la votaci=F3n, no se =
pueda votar=0A=
function nada(){=0A=
return false;=0A=
//nada=0A=
}=0A=
=0A=
//Recoge los datos y pinta las estrellas y el n=FAmero de votos=0A=
function pintarResultados(xml, id_noticia){=0A=
	if (xml!=3Dnull){=0A=
		xmldoc =3D xmlParse(xml);=0A=
		if (xmldoc!=3Dnull && =
xmldoc.getElementsByTagName("RESULTADO")[0]!=3Dnull){=0A=
			// Obtiene los datos del XML=0A=
			var =
valoracionEnviada=3Dxmldoc.getElementsByTagName("ENVIADA")[0].firstChild.=
nodeValue;;=0A=
			var =
valoracionMedia=3Dxmldoc.getElementsByTagName("MEDIA")[0].firstChild.node=
Value;=0A=
			var =
numeroVotos=3Dxmldoc.getElementsByTagName("NUMEROVOTOS")[0].firstChild.no=
deValue;=0A=
			for (i=3D0;i<5;i++){=0A=
				if (valoracionMedia>i){=0A=
					if (document.getElementById('star'+id_noticia+i)!=3Dnull){=0A=
						document.getElementById('star'+id_noticia+i).className=3D"star on";=0A=
					}else{=0A=
						document.getElementById('star'+i).className=3D"star on";=0A=
					}=0A=
				}else{=0A=
					if (document.getElementById('star'+id_noticia+i)!=3Dnull){=0A=
						document.getElementById('star'+id_noticia+i).className=3D"star";=0A=
					}else{=0A=
						document.getElementById('star'+i).className=3D"star";=0A=
					}=0A=
				}=0A=
			}=0A=
			if (document.getElementById('numeroVotos'+id_noticia)!=3Dnull){=0A=
				=
document.getElementById('numeroVotos'+id_noticia).innerHTML=3D"("+numeroV=
otos+" votos)";=0A=
			}else{=0A=
				document.getElementById('numeroVotos').innerHTML=3D"("+numeroVotos+" =
votos)";=0A=
			}=0A=
		}=0A=
	}=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.lavozdegalicia.es/ficheros/1189597663711607/LVDG_AjaXSLT.js

// Copyright 2005 Google Inc.=0A=
// All Rights Reserved=0A=
//=0A=
//=0A=
// An XSL-T processor written in JavaScript. The implementation is NOT=0A=
// complete; some xsl element are left out.=0A=
//=0A=
// References:=0A=
//=0A=
// [XSLT] XSL-T Specification=0A=
// <http://www.w3.org/TR/1999/REC-xslt-19991116>.=0A=
//=0A=
// [ECMA] ECMAScript Language Specification=0A=
// =
<http://www.ecma-international.org/publications/standards/Ecma-262.htm>.=0A=
//=0A=
// The XSL processor API has one entry point, the function=0A=
// xsltProcessContext(). It receives as arguments the starting point in =
the=0A=
// input document as an XPath expression context, the DOM root node of=0A=
// the XSL-T stylesheet, and a DOM node that receives the output.=0A=
//=0A=
// NOTE: Actually, XSL-T processing according to the specification is=0A=
// defined as operation on text documents, not as operation on DOM=0A=
// trees. So, strictly speaking, this implementation is not an XSL-T=0A=
// processor, but the processing engine that needs to be complemented=0A=
// by an XML parser and serializer in order to be complete. Those two=0A=
// are found in the file xml.js.=0A=
//=0A=
//=0A=
// TODO(mesch): add jsdoc comments. Use more coherent naming. Finish=0A=
// remaining XSLT features.=0A=
//=0A=
//=0A=
// Author: Steffen Meschkat <mesch@google.com>=0A=
=0A=
=0A=
// The exported entry point of the XSL-T processor, as explained=0A=
// above.=0A=
//=0A=
// @param xmlDoc The input document root, as DOM node.=0A=
// @param template The stylesheet document root, as DOM node.=0A=
// @return the processed document, as XML text in a string.=0A=
=0A=
function xsltProcess(xmlDoc, stylesheet) {=0A=
  if (xsltdebug) {=0A=
    Log.write('XML STYLESHEET:');=0A=
    Log.writeXML(xmlText(stylesheet));=0A=
    Log.write('XML INPUT:');=0A=
    Log.writeXML(xmlText(xmlDoc));=0A=
  }=0A=
=0A=
  var output =3D (new XDocument).createDocumentFragment();=0A=
  xsltProcessContext(new ExprContext(xmlDoc), stylesheet, output);=0A=
=0A=
  var ret =3D xmlText(output);=0A=
=0A=
  if (xsltdebug) {=0A=
    Log.write('HTML OUTPUT:');=0A=
    Log.writeXML(ret);=0A=
  }=0A=
=0A=
  return ret;=0A=
}=0A=
=0A=
// The main entry point of the XSL-T processor, as explained above.=0A=
//=0A=
// @param input The input document root, as XPath ExprContext.=0A=
// @param template The stylesheet document root, as DOM node.=0A=
// @param the root of the generated output, as DOM node.=0A=
=0A=
function xsltProcessContext(input, template, output) {=0A=
=0A=
  var nodename =3D template.nodeName.split(/:/);=0A=
  if (nodename.length =3D=3D 1 || nodename[0] !=3D 'xsl') {=0A=
    xsltPassThrough(input, template, output);=0A=
=0A=
  } else {=0A=
    switch(nodename[1]) {=0A=
    case 'apply-imports':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'apply-templates':=0A=
      var select =3D xmlGetAttribute(template, 'select');=0A=
      var nodes;=0A=
      if (select) {=0A=
        nodes =3D xpathEval(select,input).nodeSetValue();=0A=
      } else {=0A=
        nodes =3D input.node.childNodes;=0A=
      }=0A=
=0A=
      var sortContext =3D input.clone(nodes[0], 0, nodes);=0A=
      xsltWithParam(sortContext, template);=0A=
      xsltSort(sortContext, template);=0A=
=0A=
      var mode =3D xmlGetAttribute(template, 'mode');=0A=
      var top =3D template.ownerDocument.documentElement;=0A=
      for (var i =3D 0; i < top.childNodes.length; ++i) {=0A=
        var c =3D top.childNodes[i];=0A=
        if (c.nodeType =3D=3D DOM_ELEMENT_NODE &&=0A=
            c.nodeName =3D=3D 'xsl:template' &&=0A=
            c.getAttribute('mode') =3D=3D mode) {=0A=
          for (var j =3D 0; j < sortContext.nodelist.length; ++j) {=0A=
            var nj =3D sortContext.nodelist[j];=0A=
            xsltProcessContext(sortContext.clone(nj, j), c, output);=0A=
          }=0A=
        }=0A=
      }=0A=
      break;=0A=
=0A=
    case 'attribute':=0A=
      var nameexpr =3D xmlGetAttribute(template, 'name');=0A=
      var name =3D xsltAttributeValue(nameexpr, input);=0A=
      var node =3D output.ownerDocument.createDocumentFragment();=0A=
      xsltChildNodes(input, template, node);=0A=
      var value =3D xmlValue(node);=0A=
      output.setAttribute(name, value);=0A=
      break;=0A=
=0A=
    case 'attribute-set':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'call-template':=0A=
      var name =3D xmlGetAttribute(template, 'name');=0A=
      var top =3D template.ownerDocument.documentElement;=0A=
=0A=
      var paramContext =3D input.clone();=0A=
      xsltWithParam(paramContext, template);=0A=
=0A=
      for (var i =3D 0; i < top.childNodes.length; ++i) {=0A=
        var c =3D top.childNodes[i];=0A=
        if (c.nodeType =3D=3D DOM_ELEMENT_NODE &&=0A=
            c.nodeName =3D=3D 'xsl:template' &&=0A=
            c.getAttribute('name') =3D=3D name) {=0A=
          xsltChildNodes(paramContext, c, output);=0A=
          break;=0A=
        }=0A=
      }=0A=
      break;=0A=
=0A=
    case 'choose':=0A=
      xsltChoose(input, template, output);=0A=
      break;=0A=
=0A=
    case 'comment':=0A=
      var node =3D output.ownerDocument.createDocumentFragment();=0A=
      xsltChildNodes(input, template, node);=0A=
      var commentData =3D xmlValue(node);=0A=
      var commentNode =3D =
output.ownerDocument.createComment(commentData);=0A=
      output.appendChild(commentNode);=0A=
      break;=0A=
=0A=
    case 'copy':=0A=
      if (input.node.nodeType =3D=3D DOM_ELEMENT_NODE) {=0A=
        var node =3D =
output.ownerDocument.createElement(input.node.nodeName);=0A=
        output.appendChild(node);=0A=
        xsltChildNodes(input, template, node);=0A=
=0A=
      } else if (input.node.nodeType =3D=3D DOM_ATTRIBUTE_NODE) {=0A=
        var node =3D =
output.ownerDocument.createAttribute(input.node.nodeName);=0A=
        node.nodeValue =3D input.node.nodeValue;=0A=
        output.setAttribute(node);=0A=
      }=0A=
      break;=0A=
=0A=
    case 'copy-of':=0A=
      var select =3D xmlGetAttribute(template, 'select');=0A=
      var value =3D xpathEval(select, input);=0A=
      if (value.type =3D=3D 'node-set') {=0A=
        var nodes =3D value.nodeSetValue();=0A=
        for (var i =3D 0; i < nodes.length; ++i) {=0A=
          xsltCopyOf(output, nodes[i]);=0A=
        }=0A=
=0A=
      } else {=0A=
        var node =3D =
output.ownerDocument.createTextNode(value.stringValue());=0A=
        output.appendChild(node);=0A=
      }=0A=
      break;=0A=
=0A=
    case 'decimal-format':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'element':=0A=
      var nameexpr =3D xmlGetAttribute(template, 'name');=0A=
      var name =3D xsltAttributeValue(nameexpr, input);=0A=
      var node =3D output.ownerDocument.createElement(name);=0A=
      output.appendChild(node);=0A=
      xsltChildNodes(input, template, node);=0A=
      break;=0A=
=0A=
    case 'fallback':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'for-each':=0A=
      var sortContext =3D input.clone();=0A=
      xsltSort(sortContext, template);=0A=
      xsltForEach(sortContext, template, output);=0A=
      break;=0A=
=0A=
    case 'if':=0A=
      var test =3D xmlGetAttribute(template, 'test');=0A=
      if (xpathEval(test, input).booleanValue()) {=0A=
        xsltChildNodes(input, template, output);=0A=
      }=0A=
      break;=0A=
=0A=
    case 'import':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'include':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'key':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'message':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'namespace-alias':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'number':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'otherwise':=0A=
      alert('error if here: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'output':=0A=
      // Ignored. -- Since we operate on the DOM, and all further use=0A=
      // of the output of the XSL transformation is determined by the=0A=
      // browser that we run in, this parameter is not applicable to=0A=
      // this implementation.=0A=
      break;=0A=
=0A=
    case 'preserve-space':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'processing-instruction':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'sort':=0A=
      // just ignore -- was handled by xsltSort()=0A=
      break;=0A=
=0A=
    case 'strip-space':=0A=
      alert('not implemented: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'stylesheet':=0A=
    case 'transform':=0A=
      xsltChildNodes(input, template, output);=0A=
      break;=0A=
=0A=
    case 'template':=0A=
      var match =3D xmlGetAttribute(template, 'match');=0A=
      if (match && xpathMatch(match, input)) {=0A=
        xsltChildNodes(input, template, output);=0A=
      }=0A=
      break;=0A=
=0A=
    case 'text':=0A=
      var text =3D xmlValue(template);=0A=
      var node =3D output.ownerDocument.createTextNode(text);=0A=
      output.appendChild(node);=0A=
      break;=0A=
=0A=
    case 'value-of':=0A=
      var select =3D xmlGetAttribute(template, 'select');=0A=
      var value =3D xpathEval(select, input).stringValue();=0A=
      var node =3D output.ownerDocument.createTextNode(value);=0A=
      output.appendChild(node);=0A=
      break;=0A=
=0A=
    case 'param':=0A=
      xsltVariable(input, template, false);=0A=
      break;=0A=
=0A=
    case 'variable':=0A=
      xsltVariable(input, template, true);=0A=
      break;=0A=
=0A=
    case 'when':=0A=
      alert('error if here: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    case 'with-param':=0A=
      alert('error if here: ' + nodename[1]);=0A=
      break;=0A=
=0A=
    default:=0A=
      alert('error if here: ' + nodename[1]);=0A=
      break;=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
=0A=
// Sets parameters defined by xsl:with-param child nodes of the=0A=
// current template node, in the current input context. This happens=0A=
// before the operation specified by the current template node is=0A=
// executed.=0A=
=0A=
function xsltWithParam(input, template) {=0A=
  for (var i =3D 0; i < template.childNodes.length; ++i) {=0A=
    var c =3D template.childNodes[i];=0A=
    if (c.nodeType =3D=3D DOM_ELEMENT_NODE && c.nodeName =3D=3D =
'xsl:with-param') {=0A=
      xsltVariable(input, c, true);=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
=0A=
// Orders the current node list in the input context according to the=0A=
// sort order specified by xsl:sort child nodes of the current=0A=
// template node. This happens before the operation specified by the=0A=
// current template node is executed.=0A=
//=0A=
// TODO(mesch): case-order is not implemented.=0A=
//=0A=
// NOTE: this was tested using driving directions, as follows:=0A=
//=0A=
// <xsl:apply-templates select=3D"segments/segment">=0A=
//  <xsl:sort select=3D"substring-before(@distance,'&#160;')"=0A=
//            order=3D"descending" data-type=3D"number"/>=0A=
//  <xsl:sort select=3D"node()"/>=0A=
// </xsl:apply-templates>=0A=
// =0A=
// TODO(mesch): write a unit test.=0A=
=0A=
function xsltSort(input, template) {=0A=
  var sort =3D [];=0A=
  for (var i =3D 0; i < template.childNodes.length; ++i) {=0A=
    var c =3D template.childNodes[i];=0A=
    if (c.nodeType =3D=3D DOM_ELEMENT_NODE && c.nodeName =3D=3D =
'xsl:sort') {=0A=
      var select =3D xmlGetAttribute(c, 'select');=0A=
      var expr =3D xpathParse(select);=0A=
      var type =3D xmlGetAttribute(c, 'data-type') || 'text';=0A=
      var order =3D xmlGetAttribute(c, 'order') || 'ascending';=0A=
      sort.push({ expr: expr, type: type, order: order });=0A=
    }=0A=
  }=0A=
=0A=
  xpathSort(input, sort);=0A=
}=0A=
=0A=
=0A=
// Evaluates a variable or parameter and set it in the current input=0A=
// context. Implements xsl:variable, xsl:param, and xsl:with-param.=0A=
//=0A=
// @param override flag that defines if the value computed here=0A=
// overrides the one already in the input context if that is the=0A=
// case. I.e. decides if this is a default value or a local=0A=
// value. xsl:variable and xsl:with-param override; xsl:param doesn't.=0A=
=0A=
function xsltVariable(input, template, override) {=0A=
  var name =3D xmlGetAttribute(template, 'name');=0A=
  var select =3D xmlGetAttribute(template, 'select');=0A=
=0A=
  var value;=0A=
=0A=
  if (template.childNodes.length > 0) {=0A=
    var root =3D input.node.ownerDocument.createDocumentFragment();=0A=
    xsltChildNodes(input, template, root);=0A=
    value =3D new NodeSetValue([root]);=0A=
=0A=
  } else if (select) {=0A=
    value =3D xpathEval(select, input);=0A=
=0A=
  } else {=0A=
    value =3D new StringValue('');=0A=
  }=0A=
=0A=
  if (override || !input.getVariable(name)) {=0A=
    input.setVariable(name, value);=0A=
  }=0A=
}=0A=
=0A=
=0A=
// Implements xsl:chose and its child nodes xsl:when and=0A=
// xsl:otherwise.=0A=
=0A=
function xsltChoose(input, template, output) {=0A=
  for (var i =3D 0; i < template.childNodes.length; ++i) {=0A=
    var childNode =3D template.childNodes[i];=0A=
    if (childNode.nodeType !=3D DOM_ELEMENT_NODE) {=0A=
      continue;=0A=
=0A=
    } else if (childNode.nodeName =3D=3D 'xsl:when') {=0A=
      var test =3D xmlGetAttribute(childNode, 'test');=0A=
      if (xpathEval(test, input).booleanValue()) {=0A=
        xsltChildNodes(input, childNode, output);=0A=
        break;=0A=
      }=0A=
=0A=
    } else if (childNode.nodeName =3D=3D 'xsl:otherwise') {=0A=
      xsltChildNodes(input, childNode, output);=0A=
      break;=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
=0A=
// Implements xsl:for-each.=0A=
=0A=
function xsltForEach(input, template, output) {=0A=
  var select =3D xmlGetAttribute(template, 'select');=0A=
  var nodes =3D xpathEval(select, input).nodeSetValue();=0A=
  for (var i =3D 0; i < nodes.length; ++i) {=0A=
    var context =3D input.clone(nodes[i], i, nodes);=0A=
    xsltChildNodes(context, template, output);=0A=
  }=0A=
}=0A=
=0A=
=0A=
// Traverses the template node tree. Calls the main processing=0A=
// function with the current input context for every child node of the=0A=
// current template node.=0A=
=0A=
function xsltChildNodes(input, template, output) {=0A=
  // Clone input context to keep variables declared here local to the=0A=
  // siblings of the children.=0A=
  var context =3D input.clone();=0A=
  for (var i =3D 0; i < template.childNodes.length; ++i) {=0A=
    xsltProcessContext(context, template.childNodes[i], output);=0A=
  }=0A=
}=0A=
=0A=
=0A=
// Passes template text to the output. The current template node does=0A=
// not specify an XSL-T operation and therefore is appended to the=0A=
// output with all its attributes. Then continues traversing the=0A=
// template node tree.=0A=
=0A=
function xsltPassThrough(input, template, output) {=0A=
  if (template.nodeType =3D=3D DOM_TEXT_NODE) {=0A=
    if (xsltPassText(template)) {=0A=
      var node =3D =
output.ownerDocument.createTextNode(template.nodeValue);=0A=
      output.appendChild(node);=0A=
    }=0A=
=0A=
  } else if (template.nodeType =3D=3D DOM_ELEMENT_NODE) {=0A=
    var node =3D output.ownerDocument.createElement(template.nodeName);=0A=
    for (var i =3D 0; i < template.attributes.length; ++i) {=0A=
      var a =3D template.attributes[i];=0A=
      if (a) {=0A=
        var name =3D a.nodeName;=0A=
        var value =3D xsltAttributeValue(a.nodeValue, input);=0A=
        node.setAttribute(name, value);=0A=
      }=0A=
    }=0A=
    output.appendChild(node);=0A=
    xsltChildNodes(input, template, node);=0A=
=0A=
  } else {=0A=
    // This applies also to the DOCUMENT_NODE of the XSL stylesheet,=0A=
    // so we don't have to treat it specially.=0A=
    xsltChildNodes(input, template, output);=0A=
  }=0A=
}=0A=
=0A=
// Determines if a text node in the XSLT template document is to be=0A=
// stripped according to XSLT whitespace stipping rules.=0A=
//=0A=
// See [XSLT], section 3.4.=0A=
//=0A=
// TODO(mesch): Whitespace stripping on the input document is=0A=
// currently not implemented.=0A=
=0A=
function xsltPassText(template) {=0A=
  if (!template.nodeValue.match(/^\s*$/)) {=0A=
    return true;=0A=
  }=0A=
=0A=
  var element =3D template.parentNode;=0A=
  if (element.nodeName =3D=3D 'xsl:text') {=0A=
    return true;=0A=
  }=0A=
=0A=
  while (element && element.nodeType =3D=3D DOM_ELEMENT_NODE) {=0A=
    var xmlspace =3D element.getAttribute('xml:space');=0A=
    if (xmlspace) {=0A=
      if (xmlspace =3D=3D 'default') {=0A=
        return false;=0A=
      } else if (xmlspace =3D=3D 'preserve') {=0A=
        return true;=0A=
      }=0A=
    }=0A=
=0A=
    element =3D element.parentNode;=0A=
  }=0A=
=0A=
  return false;=0A=
}=0A=
=0A=
// Evaluates an XSL-T attribute value template. Attribute value=0A=
// templates are attributes on XSL-T elements that contain XPath=0A=
// expressions in braces {}. The XSL-T expressions are evaluated in=0A=
// the current input context. NOTE(mesch): We are using stringSplit()=0A=
// instead of string.split() for IE compatibility, see comment on=0A=
// stringSplit().=0A=
=0A=
function xsltAttributeValue(value, context) {=0A=
  var parts =3D stringSplit(value, '{');=0A=
  if (parts.length =3D=3D 1) {=0A=
    return value;=0A=
  }=0A=
=0A=
  var ret =3D '';=0A=
  for (var i =3D 0; i < parts.length; ++i) {=0A=
    var rp =3D stringSplit(parts[i], '}');=0A=
    if (rp.length !=3D 2) {=0A=
      // first literal part of the value=0A=
      ret +=3D parts[i];=0A=
      continue;=0A=
    }=0A=
=0A=
    var val =3D xpathEval(rp[0], context).stringValue();=0A=
    ret +=3D val + rp[1];=0A=
  }=0A=
=0A=
  return ret;=0A=
}=0A=
=0A=
=0A=
// Wrapper function to access attribute values of template element=0A=
// nodes. Currently this calls xmlResolveEntities because in some DOM=0A=
// implementations the return value of node.getAttributeValue()=0A=
// contains unresolved XML entities, although the DOM spec requires=0A=
// that entity references are resolved by te DOM.=0A=
=0A=
function xmlGetAttribute(node, name) {=0A=
  // TODO(mesch): This should not be necessary if the DOM is working=0A=
  // correctly. The DOM is responsible for resolving entities, not the=0A=
  // application.=0A=
  var value =3D node.getAttribute(name);=0A=
  if (value) {=0A=
    return xmlResolveEntities(value);=0A=
  } else {=0A=
    return value;=0A=
  }=0A=
};=0A=
=0A=
=0A=
// Implements xsl:copy-of for node-set values of the select=0A=
// expression. Recurses down the source node tree, which is part of=0A=
// the input document.=0A=
//=0A=
// @param dst the node being copied to, part of output document,=0A=
// @param src the node being copied, part in input document,=0A=
=0A=
function xsltCopyOf(dst, src) {=0A=
  if (src.nodeType =3D=3D DOM_TEXT_NODE) {=0A=
    var node =3D dst.ownerDocument.createTextNode(src.nodeValue);=0A=
    dst.appendChild(node);=0A=
=0A=
  } else if (src.nodeType =3D=3D DOM_ATTRIBUTE_NODE) {=0A=
    dst.setAttribute(src.nodeName, src.nodeValue);=0A=
=0A=
  } else if (src.nodeType =3D=3D DOM_ELEMENT_NODE) {=0A=
    var node =3D dst.ownerDocument.createElement(src.nodeName);=0A=
    dst.appendChild(node);=0A=
=0A=
    // Recursion is implemented by the function calling itself via=0A=
    // arguments.callee, independent of its name. Very convenient for=0A=
    // renaming the function.=0A=
=0A=
    for (var i =3D 0; i < src.attributes.length; ++i) {=0A=
      arguments.callee(node, src.attributes[i]);=0A=
    }=0A=
=0A=
    for (var i =3D 0; i < src.childNodes.length; ++i) {=0A=
      arguments.callee(node, src.childNodes[i]);=0A=
    }=0A=
=0A=
  } else if (src.nodeType =3D=3D DOM_DOCUMENT_FRAGMENT_NODE ||=0A=
             src.nodeType =3D=3D DOM_DOCUMENT_NODE) {=0A=
    for (var i =3D 0; i < src.childNodes.length; ++i) {=0A=
      arguments.callee(dst, src.childNodes[i]);=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
=0A=
// Evaluates an XPath expression in the current input context as a=0A=
// match (see [XSLT] section 5.2, paragraph 1).=0A=
=0A=
function xpathMatch(match, context) {=0A=
  var expr =3D xpathParse(match);=0A=
=0A=
  var ret;=0A=
  // Shortcut for the most common case.=0A=
  if (expr.steps && !expr.absolute && expr.steps.length =3D=3D 1 &&=0A=
      expr.steps[0].axis =3D=3D 'child' && =
expr.steps[0].predicate.length =3D=3D 0) {=0A=
    ret =3D expr.steps[0].nodetest.evaluate(context).booleanValue();=0A=
=0A=
  } else {=0A=
=0A=
    ret =3D false;=0A=
    var node =3D context.node;=0A=
=0A=
    while (!ret && node) {=0A=
      var result =3D =
expr.evaluate(context.clone(node,0,[node])).nodeSetValue();=0A=
      for (var i =3D 0; i < result.length; ++i) {=0A=
        if (result[i] =3D=3D context.node) {=0A=
          ret =3D true;=0A=
          break;=0A=
        }=0A=
      }=0A=
      node =3D node.parentNode;=0A=
    }=0A=
  }=0A=
=0A=
  return ret;=0A=
}=0A=
=0A=
=0A=
// Parses and then evaluates the given XPath expression in the given=0A=
// input context. Notice that parsed xpath expressions are cached.=0A=
=0A=
function xpathEval(select, context) {=0A=
  var expr =3D xpathParse(select);=0A=
  var ret =3D expr.evaluate(context);=0A=
  return ret;=0A=
}
------=_NextPart_000_0103_01C8C16F.0D96DAE0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://secure-uk.imrworldwide.com/v53.js

// Netratings SiteCensus v53.js=0A=
// COPYRIGHT 2007 Nielsen//Netratings=0A=
=0A=
function random()=0A=
{=0A=
    random.seed =3D (random.seed*random.a + random.c) % random.m;=0A=
    return random.seed / random.m;=0A=
}=0A=
random.m=3D714025;=0A=
random.a=3D4096;=0A=
random.c=3D150889;=0A=
random.seed =3D (new Date()).getTime()%random.m;=0A=
=0A=
function _rsEH(){}=0A=
window.onerror=3D_rsEH;=0A=
=0A=
var _rsLP=3Dlocation.protocol.indexOf('https')>-1?'https:':'http:';=0A=
var _rsND=3D_rsLP+_rsDN;=0A=
var _rsRD=3D(new Date()).getTime();=0A=
if (typeof(_rsCC)=3D=3D"undefined") {var _rsCC=3D1;}=0A=
if (typeof(_rsDT)=3D=3D"undefined") {var _rsDT=3D0;}=0A=
if (typeof(_rsSE)=3D=3D"undefined") {var _rsSE=3D0;}=0A=
if (typeof(_rsSV)=3D=3D"undefined") {var _rsSV=3D"";}=0A=
if (typeof(_rsSM)=3D=3D"undefined") {var _rsSM=3D0;}=0A=
if (typeof(_rsSS)=3D=3D"undefined") {var _rsSS=3D1;}=0A=
if (typeof(_rsUT)=3D=3D"undefined") {var _rsUT=3D0;}=0A=
if (typeof(_rsMP)=3D=3D"undefined") {var _rsMP=3D1;}=0A=
if (typeof(_rsIP)=3D=3D"undefined") {var _rsIP=3D0;}=0A=
if (typeof(_rsCG)=3D=3D"undefined") {var _rsCG=3D0;}=0A=
if (typeof(_rsTC)=3D=3D"undefined") {var _rsTC=3D500;}=0A=
if (typeof(_rsSI)=3D=3D"undefined") {var =
_rsSI=3Descape(window.location);}=0A=
if (typeof(_rsCL)=3D=3D"undefined") {var _rsCL=3D0;}=0A=
if (typeof(_rsCU)=3D=3D"undefined") {var _rsCU=3Dwindow.location;}=0A=
if (typeof(_rsPLfl)=3D=3D"undefined") {var _rsPLfl=3D1; }=0A=
if (typeof(_rsPLqt)=3D=3D"undefined") {var _rsPLqt=3D0; }=0A=
if (typeof(_rsPLre)=3D=3D"undefined") {var _rsPLre=3D0; }=0A=
if (typeof(_rsPLwm)=3D=3D"undefined") {var _rsPLwm=3D0; }=0A=
if (typeof(_rsPLjj)=3D=3D"undefined") {var _rsPLjj=3D0; }=0A=
if (typeof(_rsPLac)=3D=3D"undefined") {var _rsPLac=3D0; }=0A=
if (typeof(_rsC0)=3D=3D"undefined") {var _rsC0;}=0A=
if (typeof(_rsC1)=3D=3D"undefined") {var _rsC1;}=0A=
if (typeof(_rsC2)=3D=3D"undefined") {var _rsC2;}=0A=
if (typeof(_rsC3)=3D=3D"undefined") {var _rsC3;}=0A=
if (typeof(_rsC4)=3D=3D"undefined") {var _rsC4;}=0A=
if (typeof(_rsC5)=3D=3D"undefined") {var _rsC5;}=0A=
if (typeof(_rsC6)=3D=3D"undefined") {var _rsC6;}=0A=
if (typeof(_rsC7)=3D=3D"undefined") {var _rsC7;}=0A=
if (typeof(_rsC8)=3D=3D"undefined") {var _rsC8;}=0A=
if (typeof(_rsC9)=3D=3D"undefined") {var _rsC9;}=0A=
=0A=
function _rsPause(_rsMillis) {=0A=
	var _rsDate =3D new Date();=0A=
	var _rsCurrDate;=0A=
	=0A=
	do { =0A=
		_rsCurrDate =3D new Date(); =0A=
	} while(_rsCurrDate - _rsDate < _rsMillis);=0A=
} =0A=
=0A=
function _rsRecordFactory(_rsClickUrl, _rsNewCG) {=0A=
	var _rsSrc =3D _rsND + 'cgi-bin/m?rnd=3D' + (new Date()).getTime();=0A=
	_rsSrc +=3D '&ci=3D' + _rsCI;=0A=
	_rsSrc +=3D '&cg=3D' + escape(_rsNewCG);=0A=
	_rsSrc +=3D '&cc=3D0';=0A=
	_rsSrc +=3D '&si=3D' + _rsCI + '-ctgw-' + escape(_rsClickUrl);=0A=
	_rsSrc +=3D '&rp=3D' + escape(window.location);=0A=
	if(_rsSrc.length > 2048)	{=0A=
		_rsSrc =3D _rsSrc.substring(0, 2048);=0A=
	}=0A=
	return _rsSrc;=0A=
}=0A=
=0A=
function _rsEvent(_rsClickUrl) {=0A=
	var _rsNewCG =3D _rsEvent.arguments.length > 1 ? _rsEvent.arguments[1] =
: _rsCG;=0A=
	(new Image(1,1)).src =3D _rsRecordFactory(_rsClickUrl, _rsNewCG);=0A=
}=0A=
=0A=
function _rsLinkTrack(_rsClickUrl) {=0A=
=0A=
        var _rsNewCG =3D _rsLinkTrack.arguments.length > 1 ? =
_rsLinkTrack.arguments[1] : _rsCG;=0A=
        var _rsClickImg =3D new Image(1,1);=0A=
        _rsClickImg.src =3D _rsRecordFactory(_rsClickUrl, _rsNewCG);=0A=
        _rsPause(_rsTC);=0A=
}=0A=
=0A=
var _rsClickDst;=0A=
function _rsClick(_rsClickUrl) {=0A=
        var _rsNewCG =3D _rsClick.arguments.length > 1 ? =
_rsClick.arguments[1] : _rsCG;=0A=
        var _rsClickImg =3D new Image(1,1);=0A=
        _rsClickImg.src =3D _rsRecordFactory(_rsClickUrl, _rsNewCG);=0A=
        _rsClickDst =3D _rsClickUrl;=0A=
        setTimeout("window.location =3D _rsClickDst", _rsTC);=0A=
}=0A=
=0A=
function _rsVerInfo(str, ct) {=0A=
	var p =3D 0;=0A=
	for(var i=3D0;i<ct&&p>=3D0;i++) { p =3D str.indexOf('.', p+1); }=0A=
	if(p>0) {=0A=
		var v =3D str.charAt(p-1);=0A=
		return v.match(/\d+/g) ? v : 0;=0A=
	} else {=0A=
		return 0;=0A=
	}=0A=
}=0A=
=0A=
function _rsPluginDetect() {=0A=
        var _rsPlugins =3D [];=0A=
	var _rsMT =3D navigator.mimeTypes; // -1 indicates unknown=0A=
	if(_rsMT && _rsMT.length > 0) {=0A=
		var k;=0A=
		if(_rsPLfl=3D=3D1) {=0A=
		        _rsPlugins['FL']=3D-1;=0A=
			k =3D 'application/x-shockwave-flash';=0A=
			if(_rsMT[k] && _rsMT[k].enabledPlugin) {=0A=
				_rsPlugins['FL'] =3D _rsVerInfo(_rsMT[k].enabledPlugin.description, =
1);=0A=
			}=0A=
		}=0A=
		if(_rsPLqt=3D=3D1) {=0A=
			_rsPlugins['QT']=3D-1;=0A=
			k =3D 'video/quicktime';=0A=
			if(_rsMT[k] && _rsMT[k].enabledPlugin) {=0A=
				_rsPlugins['QT'] =3D _rsVerInfo(_rsMT[k].enabledPlugin.name, 1);=0A=
			}=0A=
		}=0A=
		if(_rsPLre=3D=3D1) {=0A=
			_rsPlugins['RE']=3D-1;=0A=
			k =3D 'audio/x-pn-realaudio-plugin';=0A=
			if(_rsMT[k] && _rsMT[k].enabledPlugin) {=0A=
				_rsPlugins['RE'] =3D 0;=0A=
			}=0A=
		}=0A=
		if(_rsPLwm=3D=3D1) {=0A=
			_rsPlugins['QT']=3D-1;=0A=
			var rt =3D true;=0A=
			if(window.GeckoActiveXObject) {=0A=
				try {=0A=
					var p =3D new GeckoActiveXObject("WMPlayer.OCX.7");=0A=
					_rsPlugins['WM'] =3D _rsVerInfo(p.versionInfo, 1);=0A=
					rt =3D false;=0A=
				} catch(e) {}=0A=
			} =0A=
			if(rt) {=0A=
				k =3D 'application/x-mplayer2';=0A=
				if(_rsMT[k] && _rsMT[k].enabledPlugin) {=0A=
					_rsPlugins['WM'] =3D 0;=0A=
				}=0A=
			}=0A=
			=0A=
		}=0A=
		if(_rsPLjj=3D=3D1) {=0A=
			_rsPlugins['JJ']=3D-1;=0A=
			k =3D 'application/x-java-applet';=0A=
			if(_rsMT[k] && _rsMT[k].enabledPlugin) {=0A=
				var v =3D _rsVerInfo(_rsMT[k].enabledPlugin.description, 2);=0A=
				_rsPlugins['JJ'] =3D (v =3D=3D 0 ? v : '1.'+v);=0A=
			}=0A=
		}=0A=
		if(_rsPLac=3D=3D1) {=0A=
			_rsPlugins['AC']=3D-1;=0A=
			k =3D 'application/pdf';=0A=
			if(_rsMT[k] && _rsMT[k].enabledPlugin) {=0A=
				_rsPlugins['AC'] =3D 0;=0A=
			}=0A=
		}=0A=
	} else if(window.ActiveXObject) {=0A=
		var _rsP;=0A=
=0A=
		if(_rsPLfl=3D=3D1) {=0A=
			_rsPlugins['FL']=3D-1;=0A=
			for(var i=3D9;i>0;i--) {=0A=
				try {=0A=
					_rsP =3D new ActiveXObject('ShockwaveFlash.ShockwaveFlash.'+i);=0A=
					if(_rsP !=3D null) { _rsPlugins['FL'] =3D i; break; }=0A=
				} catch(e) {}=0A=
			}=0A=
		}=0A=
		if(_rsPLqt=3D=3D1) {=0A=
			_rsPlugins['QT']=3D-1;=0A=
			try {=0A=
				_rsP =3D new ActiveXObject('QuickTimeCheckObject.QuickTimeCheck.1');=0A=
				if(_rsP !=3D null) { _rsPlugins['QT'] =3D =
parseInt(_rsP.QuickTimeVersion.toString(16).substring(0,1)); }=0A=
			} catch(e) {}=0A=
		}=0A=
		if(_rsPLre=3D=3D1) {=0A=
			_rsPlugins['RE']=3D-1;=0A=
			try {=0A=
				_rsP =3D new ActiveXObject('rmocx.RealPlayer G2 Control.1');=0A=
				if(_rsP !=3D null) { _rsPlugins['RE'] =3D 0; }=0A=
			} catch(e) {}=0A=
		}=0A=
		if(_rsPLwm=3D=3D1) {=0A=
			_rsPlugins['WM']=3D-1;=0A=
			try {=0A=
				_rsP =3D new ActiveXObject('WMPlayer.OCX.7');=0A=
				if(_rsP !=3D null) { _rsPlugins['WM'] =3D =
_rsVerInfo(_rsP.versionInfo, 1); }=0A=
			} catch(e) {}=0A=
		}=0A=
		if(_rsPLjj=3D=3D1) {=0A=
			_rsPlugins['JJ']=3D-1;=0A=
			try {=0A=
				_rsP =3D new ActiveXObject('JavaPlugin');=0A=
				if(_rsP !=3D null) { _rsPlugins['JJ'] =3D 0; }=0A=
			} catch(e) {}=0A=
		}=0A=
		if(_rsPLac=3D=3D1) {=0A=
			_rsPlugins['AC']=3D-1;=0A=
			var rt =3D true;=0A=
			try {=0A=
				_rsP =3D new ActiveXObject('AcroPDF.PDF.1');=0A=
				if(_rsP !=3D null) { _rsPlugins['AC'] =3D =
_rsVerInfo(_rsP.GetVersions(), 1); rt =3D false; }=0A=
			} catch(e) {}=0A=
			if(rt) {=0A=
				for(var i=3D6;i>2;i--) {=0A=
					try {=0A=
						_rsP =3D new ActiveXObject('PDF.PdfCtrl.'+i);=0A=
						if(_rsP !=3D null) { _rsPlugins['AC'] =3D i; break; }=0A=
					} catch(e) {}=0A=
				}=0A=
			}=0A=
		}=0A=
	}=0A=
	return _rsPlugins;=0A=
}=0A=
=0A=
function rsCi()=0A=
{=0A=
	var _rsUA=3Dnavigator.appName+" "+navigator.appVersion;=0A=
	var _rsRUA=3Dnavigator.userAgent;=0A=
	var _rsWS=3Dwindow.screen;=0A=
	var _rsBV=3Dnavigator.appVersion.substring(0, 1);=0A=
	var _rsNN=3D(_rsUA.indexOf('Netscape'));=0A=
	var _rsMC=3D(_rsUA.indexOf('Mac'));=0A=
	var _rsIE=3D(_rsUA.indexOf('MSIE'));=0A=
	var _rsOP=3D(_rsRUA.indexOf('Opera'));=0A=
	var _rsIEV=3D(parseInt(_rsUA.substr(_rsIE+5)));=0A=
	var _rsRP=3Descape(document.referrer);=0A=
	var _rsSR;=0A=
	var _rsCD;=0A=
	var _rsLG;=0A=
	var _rsJE;=0A=
	var _rsCK;=0A=
	var _rsTZ;=0A=
	var _rsCT;=0A=
	var _rsHP;=0A=
	var _rsTL;=0A=
	var _rsSW;=0A=
	var _rsSH;=0A=
	var _rsFL;=0A=
	var _rsQT;=0A=
	var _rsRE;=0A=
	var _rsWM;=0A=
	var _rsJJ;=0A=
	var _rsAC;=0A=
	if (_rsMP=3D=3D0) {return;}=0A=
        _rsJE=3D(navigator.javaEnabled()=3D=3Dtrue)?"y":"n";=0A=
        if (_rsDT=3D=3D1) {=0A=
		_rsTL=3Descape(document.title);=0A=
	}=0A=
	if((_rsIE>0)||((_rsNN!=3D-1)&&(_rsBV >=3D5))) {=0A=
		_rsCK=3D(navigator.cookieEnabled=3D=3Dtrue)?"y":"n";=0A=
	}=0A=
	if((_rsIE>=3D0)&&(_rsIEV>=3D5)&&(_rsMC=3D=3D-1)&&(_rsOP=3D=3D-1)) {=0A=
		document.body.addBehavior("#default#clientCaps");=0A=
		_rsCT=3Ddocument.body.connectionType;=0A=
		document.body.addBehavior("#default#homePage");=0A=
		_rsHP=3D(document.body.isHomePage(location.href))?"y":"n";=0A=
	}=0A=
	var _rsD =3D new Date();=0A=
	_rsTZ =3D _rsD.getTimezoneOffset()/-60;=0A=
	if((typeof(_rsWS)!=3D"undefined")&&(_rsWS!=3Dnull)) {=0A=
		_rsSW=3D_rsWS.width;=0A=
		_rsSH=3D_rsWS.height;=0A=
		_rsCD=3D_rsWS.colorDepth;=0A=
		_rsSR=3D_rsSW+'x'+_rsSH;=0A=
		if((_rsNN!=3D-1)&&(_rsBV >=3D4)) {=0A=
			_rsCD=3D_rsWS.pixelDepth;=0A=
		}=0A=
	}=0A=
	if((_rsNN!=3D-1)&&(_rsBV >=3D4)||(_rsOP>=3D0)) {=0A=
		_rsLG=3Dnavigator.language;=0A=
	}=0A=
	if((_rsIE!=3D-1)&&(_rsBV >=3D4)&&(_rsOP=3D=3D-1)) {=0A=
		_rsLG=3Dnavigator.userLanguage;=0A=
	}=0A=
	var _rsPlugins =3D _rsPluginDetect();=0A=
	var _rsPR=3D"";=0A=
	_rsPR=3D'<img src=3D"';=0A=
	_rsPR=3D_rsPR+_rsND+'cgi-bin/m?rnd=3D'+(new Date()).getTime();=0A=
	_rsPR=3D_rsPR+'&ci=3D'+_rsCI;=0A=
	_rsPR=3D_rsPR+'&cg=3D'+escape(_rsCG);=0A=
	_rsPR=3D_rsPR+'&cc=3D'+_rsCC;=0A=
	if (_rsSR!=3Dnull) {_rsPR=3D_rsPR+'&sr=3D'+_rsSR;}=0A=
	if (_rsCD!=3Dnull) {_rsPR=3D_rsPR+'&cd=3D'+_rsCD;}=0A=
	if (_rsLG!=3Dnull) {_rsPR=3D_rsPR+'&lg=3D'+_rsLG;}=0A=
	if (_rsJE!=3Dnull) {_rsPR=3D_rsPR+'&je=3D'+_rsJE;}=0A=
	if (_rsCK!=3Dnull) {_rsPR=3D_rsPR+'&ck=3D'+_rsCK;}=0A=
	if (_rsTZ!=3Dnull) {_rsPR=3D_rsPR+'&tz=3D'+_rsTZ;}=0A=
	if (_rsCT!=3Dnull) {_rsPR=3D_rsPR+'&ct=3D'+_rsCT;}=0A=
	if (_rsHP!=3Dnull) {_rsPR=3D_rsPR+'&hp=3D'+_rsHP;}=0A=
	if (_rsTL!=3Dnull) {_rsPR=3D_rsPR+'&tl=3D'+_rsTL;}=0A=
	if (_rsUT=3D=3D1) {=0A=
	   if (_rsC0!=3Dnull) {_rsPR=3D_rsPR+'&c0=3D'+escape(_rsC0);}=0A=
	   if (_rsC1!=3Dnull) {_rsPR=3D_rsPR+'&c1=3D'+escape(_rsC1);}=0A=
	   if (_rsC2!=3Dnull) {_rsPR=3D_rsPR+'&c2=3D'+escape(_rsC2);}=0A=
	   if (_rsC3!=3Dnull) {_rsPR=3D_rsPR+'&c3=3D'+escape(_rsC3);}=0A=
	   if (_rsC4!=3Dnull) {_rsPR=3D_rsPR+'&c4=3D'+escape(_rsC4);}=0A=
	   if (_rsC5!=3Dnull) {_rsPR=3D_rsPR+'&c5=3D'+escape(_rsC5);}=0A=
	   if (_rsC6!=3Dnull) {_rsPR=3D_rsPR+'&c6=3D'+escape(_rsC6);}=0A=
	   if (_rsC7!=3Dnull) {_rsPR=3D_rsPR+'&c7=3D'+escape(_rsC7);}=0A=
	   if (_rsC8!=3Dnull) {_rsPR=3D_rsPR+'&c8=3D'+escape(_rsC8);}=0A=
	   if (_rsC9!=3Dnull) {_rsPR=3D_rsPR+'&c9=3D'+escape(_rsC9);}=0A=
	}=0A=
	if (_rsPlugins['FL']!=3Dnull) {_rsPR=3D_rsPR+'&fl=3D'+_rsPlugins['FL'];}=0A=
	if (_rsPlugins['QT']!=3Dnull) {_rsPR=3D_rsPR+'&qt=3D'+_rsPlugins['QT'];}=0A=
	if (_rsPlugins['RE']!=3Dnull) {_rsPR=3D_rsPR+'&re=3D'+_rsPlugins['RE'];}=0A=
	if (_rsPlugins['WM']!=3Dnull) {_rsPR=3D_rsPR+'&wm=3D'+_rsPlugins['WM'];}=0A=
	if (_rsPlugins['JJ']!=3Dnull) {_rsPR=3D_rsPR+'&jj=3D'+_rsPlugins['JJ'];}=0A=
	if (_rsPlugins['AC']!=3Dnull) {_rsPR=3D_rsPR+'&ac=3D'+_rsPlugins['AC'];}=0A=
	_rsPR=3D_rsPR+'&si=3D'+_rsSI;=0A=
	_rsPR=3D_rsPR+'&rp=3D'+_rsRP;=0A=
	if (_rsIP=3D=3D1) {_rsPR=3D_rsPR+'" style=3D"display:none';}=0A=
	_rsPR=3D_rsPR+'" width=3D"1" height=3D"1" alt=3D""/>';=0A=
	document.write(_rsPR);=0A=
}=0A=
=0A=
function _rsCLSendIt(_rsSrc, _rsDest, _rsTargetType, _rsClickName, =
_rsClickValue) {=0A=
	var _rsCLData =3D _rsND+'cgi-bin/m?rnd=3D'+(new Date()).getTime();=0A=
	_rsCLData  =3D _rsCLData+'&ci=3D'+_rsCI;=0A=
	_rsCLData  =3D _rsCLData+'&cg=3D'+escape(_rsCG);=0A=
	_rsCLData  =3D _rsCLData+'&cc=3D0';=0A=
	_rsCLData =3D _rsCLData+'&si=3D'+_rsCI+'-ctpo-'+escape(_rsDest);=0A=
	_rsCLData =3D _rsCLData+'&rp=3D'+escape(_rsSrc);=0A=
	_rsCLData =3D _rsCLData+'&tt=3D'+escape(_rsTargetType);=0A=
	_rsCLData =3D _rsCLData+'&cn=3D'+escape(_rsClickName);=0A=
	_rsCLData =3D _rsCLData+'&cv=3D'+escape(_rsClickValue);=0A=
	if(_rsCLData.length > 2048)	{=0A=
		_rsCLData =3D _rsCLData.substring(0, 2048);=0A=
	}=0A=
	var _rsPx =3D new Image(1,1);=0A=
	_rsPx.src =3D _rsCLData;=0A=
	_rsPause(_rsTC);=0A=
}=0A=
function _rsCLSendALink(_rsALink) {=0A=
	var _rsName =3D _rsALink.innerHTML.toLowerCase().indexOf('img') > -1 ? =
'image' : 'text';=0A=
	_rsCLSendIt(_rsCU, _rsALink.href, _rsALink.tagName.toLowerCase(), =
_rsName, _rsALink.innerHTML);=0A=
}=0A=
function _rsCLSendForm(_rsInput) {=0A=
	if(_rsInput.form =3D=3D undefined || _rsInput.form.action =3D=3D =
undefined) {=0A=
		return;=0A=
	}=0A=
=0A=
        if (_rsInput.type =3D=3D 'image') {=0A=
                var _rsValue =3D _rsInput.src;=0A=
        }=0A=
        else if (_rsInput.tagName =3D=3D 'BUTTON') {=0A=
                var _rsValue =3D =
_rsInput.innerHTML.replace(/^\s+|\s+$/g, '').replace(/\s+/g, ' ');=0A=
                if (_rsValue =3D=3D "") _rsValue =3D _rsInput.value;=0A=
        }=0A=
        else {=0A=
            var _rsValue =3D _rsInput.value;=0A=
        }=0A=
=0A=
	_rsCLSendIt(_rsCU, _rsInput.form.action, =
_rsInput.form.tagName.toLowerCase(), _rsInput.type.toLowerCase(), =
_rsValue);=0A=
}=0A=
function _rsCLCatchIt(e) {=0A=
	var _rsCurr =3D e ? e.target : window.event.srcElement;=0A=
	if ((_rsCurr.tagName =3D=3D 'INPUT' || _rsCurr.tagName =3D=3D 'BUTTON')=0A=
		&& (_rsCurr.type =3D=3D 'image' || _rsCurr.type =3D=3D 'submit' || =
_rsCurr.type =3D=3D 'button')) {=0A=
		_rsCLSendForm(_rsCurr);=0A=
	}=0A=
	else=0A=
	{=0A=
		do {=0A=
			if ((_rsCurr.tagName =3D=3D 'A') && (_rsCurr.href.length > 0)) {=0A=
				_rsCLSendALink(_rsCurr);=0A=
				break;=0A=
			}=0A=
			_rsCurr =3D _rsCurr.parentNode;=0A=
		} while (_rsCurr !=3D null && _rsCurr.tagName !=3D 'BODY')=0A=
	}=0A=
}=0A=
=0A=
function _rsCLRegisterIt() {=0A=
	if(!document.getElementById) {=0A=
		return;=0A=
	}=0A=
	var _rsOld =3D document.body.onclick;=0A=
	if(_rsOld) {=0A=
		document.body.onclick =3D function () {=0A=
			_rsCLCatchIt();=0A=
			_rsOld();=0A=
		}=0A=
	}=0A=
	else {=0A=
		document.body.onclick =3D _rsCLCatchIt;=0A=
	}=0A=
}=0A=
=0A=
// main=0A=
if((_rsSE)&&(random() <=3D _rsSM)) {=0A=
        var _rsIM=3D'<scr'+'ipt language=3D"JavaScript" =
type=3D"text/javascript" =
src=3D"'+_rsND+'cgi-bin/j?ci=3D'+_rsCI+'&ss=3D'+_rsSS+'&cc=3D'+_rsCC+'&rd=
=3D'+_rsRD+'&se=3D'+_rsSE+'&sv=3D'+_rsSV+'"><\/scr'+'ipt>';=0A=
    document.write(_rsIM);=0A=
}=0A=
else {=0A=
    rsCi();=0A=
}=0A=
if(_rsCL=3D=3D1) {=0A=
	_rsCLRegisterIt();=0A=
}=0A=

------=_NextPart_000_0103_01C8C16F.0D96DAE0--

