From: Subject: =?Windows-1252?Q?El_32%_de_los_turistas_que_visitan_rutas_del_vino_como_R?= =?Windows-1252?Q?=EDas_Baixas_son_familias_con_hijos?= Date: Wed, 7 Jan 2009 10:07:24 +0100 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0063_01C970AF.BCF12DC0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350 This is a multi-part message in MIME format. ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.lavozdegalicia.es/arousa/2009/01/06/0003_7442190.htm El 32% de los turistas que visitan rutas del vino = como R=EDas Baixas son familias con hijos // // // // // // // // // // // // // // // // // // =20
pub
LVDG_PUBLICIDAD_p01:megabanner
LVDG_PUBLICIDAD:12:edi.arousa
Elegir idioma: Rss =
Edici=F3n Impresa: Servicios | Diario en PDF | Hemeroteca =
Actualizado
=20
Elige:Buscar en = la tienda=20
=20

Indice de contenidos

El 32% de los turistas que visitan rutas del vino = como R=EDas=20 Baixas son familias con hijos

La mayor=EDa de los visitantes son de origen = nacional y pasan=20 tres d=EDas en la regi=F3n

Autor:=20
M. Alfonso
Fecha de publicaci=F3n:=20

La Asociaci=F3n Espa=F1ola de Ciudades del Vino = (Acev=EDn) ha hecho=20 p=FAblicos los datos de una encuesta destinada a conocer el perfil de = las personas=20 que visitan las rutas del vino de Espa=F1a, entre las que se incluye la = de R=EDas=20 Baixas. Llama la atenci=F3n que sean las familias con hijos las que = m=E1s utilicen=20 este destino tur=EDstico. Esto significa, concluyen en esta entidad, que = para los=20 padres visitar una bodega no es una actividad exclusiva de los = adultos.

Tras los resultados de esta encuesta, se concluye que = el=20 enoturismo es una actividad que se disfruta en grupo. Solo el 5% de los=20 visitante lo hace de forma individual. Por el contrario, el 32% de los = turistas=20 son familias con hijos. Esta circunstancia ha provocado que muchas = bodegas hayan=20 adaptado ya sus recorridos a los m=E1s peque=F1os. Adem=E1s, otro 25% = son familias,=20 aunque sin menores.

El recorrido por las rutas del vino es tambi=E9n una = actividad que=20 se realiza con amigos o compa=F1eros de trabajo y este tipo de grupos = constituye=20 ya el 24% de las visitas. Por =FAltimo, otro 14% lo hace aprovechando = viajes=20 organizados. En cuanto al n=FAmero de personas que componen estos grupos = la=20 mayor=EDa, un 32%, est=E1 formado por entre tres y cuatro = individuos.

En cuanto a la procedencia, los turistas del vino = llegan,=20 esencialmente, desde el territorio espa=F1ol. El 82% son de origen = nacional y solo=20 un 18% es extranjero. Por comunidades Madrid es la que mayor n=FAmero de = estos=20 turistas aporta, seguida de Barcelona y Zaragoza. Y por pa=EDses, los = visitantes=20 llegan desde el Reino Unido y Estados Unidos.

Otra caracter=EDstica de los enoturistas es que son = ellos mismos=20 los que organizan el viaje y solo 8% recurre a una agencia de viajes. = Otro 22%,=20 en cambio, busca informaci=F3n a trav=E9s de Internet. Los familiares y = amigos son=20 la principal fuente de informaci=F3n a la que acuden estos visitantes. = Adem=E1s,=20 tambi=E9n buscan opciones en Internet o en los medios de prensa escrita, = dada la=20 repercusi=F3n que estas actividades tienen en los medios de = comunicaci=F3n.

Recorrido por los vi=F1edos

A la hora de decidir qu=E9 tipo de actividades = realizar, los=20 turistas escogen, principalmente, el recorrido por las bodegas. = Tambi=E9n=20 disfrutan de la gastronom=EDa local y de las actividades culturales de = la zona,=20 adem=E1s de probar y comprar vinos. En cambio, curiosamente muy pocos = son los que=20 realizan recorridos por los vi=F1edos.

Un dato muy positivo es que m=E1s de la mitad de los = encuestados=20 est=E1n muy satisfechos con las visitas que realizan. De hecho, un 54% = puntuaron=20 con cinco puntos sobre cinco los servicios de los que disfrutaron. Es = m=E1s,=20 cuatro de cada diez ya hab=EDan visitado otra ruta. La inmensa mayor=EDa = hab=EDa=20 recorrido ya la de Rioja y la de R=EDas Baixas, que es una de las m=E1s = populares de=20 Espa=F1a.

ENVIAR NOTICIA  =20

El 32% de los turistas que visitan rutas del vino = como R=EDas=20 Baixas son familias con hijos

* Campos obligatorios=20
Enviar a:
=20
Tus datos:
=20 = =20 =20

ENVIAR NOTICIA  =20

Su env=EDo se ha realizado correctamente

En breve los contactos recibir=E1n en su correo electr=F3nico un = enlace a la=20 noticia

Gracias por usar nuestros servicios

Cerrar=20

ENVIAR NOTICIA  =20

Se ha producido un error
No se ha podido realizar el env=EDo =

Revise sus datos y vuelva a=20 intentarlo

Si se vuelve a producir un error, es posible que el servicio est=E1=20 moment=E1neamente no disponible. Int=E9ntelo m=E1s tarde.

Disculpe las molestias. Gracias por usar nuestros = servicios=20

Cerrar=20

LVDG_GOOGLE_ADSENSE:
=20
Americanos e ingleses son los principales = visitantes de las=20 rutas
Autor de la imagen: | M. = IRAGO=20

Relacionados de la noticia

  • = El=20 impacto del enoturismo en los hoteles y los restaurantes=20
  • = M=E1s de=20 un millar de encuestas en 19 regiones de Espa=F1a
 
LVDG_PUBLICIDAD:robapaginas:edi.arousa
Cargando
Cargando
LVDG_PUBLICIDAD_EXTERNOS:08A
LVDG_PUBLICIDAD_EXTERNOS:08B
LVDG_PUBLICIDAD_EXTERNOS:08C
LVDG_PUBLICIDAD_EXTERNOS:08D
LVDG_PUBLICIDAD_EXTERNOS:08E
LVDG_PUBLICIDAD:10:edi.arousa
Otros enlaces de inter=E9s:
= =A9=20 Copyright LA VOZ DE GALICIA S.A.
Pol=EDgono de Sab=F3n, Arteixo, A = CORU=D1A=20 (Espa=F1a)

R.M. de A Coru=F1a: tomo 2438 del Archivo, = Secci=F3n General,=20 folio 114 vto., hoja C-2141. CIF: A-15000649.
=20 ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://media.lavozdegalicia.es/img/empty.gif R0lGODlhAQABAJEAAP///////////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw== ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://publicidadinternet.lavozdegalicia.es/adview.php?what=zone:1361&target=_blank&n=adda1f64 R0lGODlhAQABAIAAAAQCBAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://media.lavozdegalicia.es/default/2007/07/05/01019574F7ABD4A6BC8300056042AA7E1337/imagen/cabecera_portada_g.gif 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 FkELxmZ8xmicxmq8xmzcxm5sBUEAADs= ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://media.lavozdegalicia.es/default/2009/01/06/0012_2492010/Foto/a6c4f1.jpg /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA0JCgsKCA0LCgsODg0PEyAVExISEyccHhcgLikxMC4p LSwzOko+MzZGNywtQFdBRkxOUlNSMj5aYVpQYEpRUk//2wBDAQ4ODhMREyYVFSZPNS01T09PT09P T09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0//wAARCAFIATwDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDFl6mq Mg6VoSjrVCX+tBJEw5FXii/2RE4Zi5kYMMcDpjn86pP1FaHXRUPznEp/3R0oArvlWHOeRRqQ3WrZ QsMjp3p9sqyT4cbhtbj3xwaZqGPsJZnIAOMikwRhoF80LE5BJ5SQcGtbSI389kSEK20kxuflP0Pr WWCWYAlZl9OhrW0hd8jLGGlAGTG5wy+4oQM1LtWj0e3laBYHdiI7hTmOUd0f0NUrdtmkyxh2jBnU mErnacHkHuO2KtajF5WmwJ5D27zZbDNmG4H/ALKwqvbsRowj8x8C5yY2HzR/L+oPShiC3MI8wzAY LYBNasa25RcYxj1rGRwsUmU3qW5wM4HuKvSu2nPGHRJInhRwqkErkZH/AOqoZZf2w9m/8epyhR0c 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 ------=_NextPart_000_0063_01C970AF.BCF12DC0 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_0063_01C970AF.BCF12DC0 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_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/1224233137514371993/LVDG_est_caja_agenda.css .a330 .agenda UL { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px; OVERFLOW: auto; PADDING-TOP: 0px; HEIGHT: 200px } .a330 .agenda UL LI { PADDING-RIGHT: 2%; DISPLAY: block; PADDING-LEFT: 2%; MIN-HEIGHT: 50px; = PADDING-BOTTOM: 2%; MARGIN: 0px; WIDTH: 95%; PADDING-TOP: 2%; = BORDER-BOTTOM: #ccc 1px solid; LIST-STYLE-TYPE: none } .a330 .agenda UL LI EM { FONT-WEIGHT: bolder; FONT-SIZE: 11px; TEXT-TRANSFORM: uppercase; COLOR: = #c00; FONT-STYLE: normal } .a330 .agenda UL LI IMG { FLOAT: right } .a330 .agenda .bt_more { BORDER-RIGHT: #b1d2f3 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #b1d2f3 1px solid; MARGIN-TOP: 8px; DISPLAY: block; PADDING-LEFT: 5px; = BACKGROUND: #f2f8fd; FLOAT: left; PADDING-BOTTOM: 4px; BORDER-LEFT: = #b1d2f3 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #b1d2f3 1px solid } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/1205422036720533891/LVDG_estilo_general_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 } UNKNOWN { 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 } UNKNOWN { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; = PADDING-TOP: 2px } UNKNOWN { 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 } UNKNOWN { 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% } UNKNOWN { 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 } UNKNOWN { 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 } UNKNOWN { 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 } UNKNOWN { 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 } UNKNOWN { 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 } .titulogrande { FONT-SIZE: 50px } .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 } UNKNOWN { 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 } UNKNOWN { 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 } UNKNOWN { MARGIN-LEFT: 3px } UNKNOWN { 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; FONT: 9px georgia, times new roman, serif; = 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 } .i298 IMG { WIDTH: 298px } .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 } UNKNOWN { 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 } UNKNOWN { 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 } .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 } UNKNOWN { 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 } .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% } UNKNOWN { 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 } UNKNOWN { 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 } .cajacg_portada { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; = PADDING-BOTTOM: 0px! important; WIDTH: 245px! important; PADDING-TOP: = 0px! important } .cajacg_portada UL { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 2px; MARGIN: = 0px; PADDING-TOP: 2px; LIST-STYLE-TYPE: none } .cajacg_portada UL LI { PADDING-BOTTOM: 2px; LINE-HEIGHT: 12px! important } .cajacg_portada A { FONT-SIZE: 11px! important } .cajacg_portada LI A { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_dot_rel.gif) no-repeat 0px 7px; = PADDING-BOTTOM: 0px; PADDING-TOP: 2px } .cajacg_publi { PADDING-RIGHT: 0px! important; BORDER-TOP: #ccc 1px solid; = PADDING-LEFT: 0px! important; BACKGROUND: #f9f9f7; FLOAT: left; = PADDING-BOTTOM: 2px! important; WIDTH: 243px; PADDING-TOP: 4px! = important } .m06 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; HEIGHT: 155px } .m06 H2 { PADDING-RIGHT: 7px; PADDING-LEFT: 7px; FONT-WEIGHT: normal; FONT-SIZE: = 10px; PADDING-BOTTOM: 3px; PADDING-TOP: 7px } .m06 DIV { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } .m06 DIV.caja { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px; WIDTH: 155px; PADDING-TOP: 0px } .m06 DIV.brd { BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: = #ccc 1px solid; WIDTH: 153px; BORDER-BOTTOM: #ccc 1px solid } .m06 DIV.xunta06 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px 0px 5px; OVERFLOW: hidden; WIDTH: 490px! important; = PADDING-TOP: 0px; HEIGHT: 125px } .m06 DIV.xunta08 { WIDTH: 245px! important } .m06 DIV.xunta06 DL DT { PADDING-BOTTOM: 2px } .m06 DIV.xunta06 DL DD { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_dot_rel.gif) no-repeat 0px 4px; = PADDING-BOTTOM: 2px; PADDING-TOP: 2px } .m06 DIV.brd { WIDTH: 488px } .m06 DIV.xunta06 DIV { MARGIN: 0px } .m06 DIV.xunta06 .caja { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 4px; WIDTH: 231px! important; PADDING-TOP: 0px } .m06 DIV.caja IMG { MARGIN: 7px } .m06 DIV.xunta06 DIV IMG { MARGIN: 0px 7px 7px } .ptrcn { MARGIN: 7px } .ptrcn .rot { BORDER-TOP-WIDTH: 1px! important; BACKGROUND-POSITION: 7px bottom; = BORDER-LEFT-WIDTH: 1px! important; BORDER-BOTTOM-WIDTH: 1px! important; = BACKGROUND-REPEAT: no-repeat; HEIGHT: 24px; BORDER-RIGHT-WIDTH: 1px! = important } .ptrcn LI { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x left bottom; = PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-TOP: 4px; LIST-STYLE-TYPE: = none } .ptrcn LI A { FONT-SIZE: 11px } .prtcoru .rot { BACKGROUND-IMAGE: = url(http://media.lavozdegalicia.es/img/logos/lg_prtcoru.gif) } .consorcio .rot { BACKGROUND-IMAGE: = url(http://media.lavozdegalicia.es/img/logos/lg_consorcio.gif) } .elecciones { BACKGROUND: = url(http://media.lavozdegalicia.es/img/cliches/elecciones.gif) = no-repeat; WIDTH: 225px; HEIGHT: 35px } .elecciones SMALL { VISIBILITY: hidden } .eleccionesestadosunidos { BACKGROUND: = url(http://media.lavozdegalicia.es/default/2008/10/08/0012122346281117815= 5552/Foto/clicheUSA.jpg) no-repeat; WIDTH: 225px; HEIGHT: 34px } .eleccionesestadosunidos SMALL { VISIBILITY: hidden } .olimpiadas { BACKGROUND: = url(http://media.lavozdegalicia.es/default/2008/08/01/0012121758040050846= 4168/Foto/cliche_olimpiadas.gif) no-repeat; WIDTH: 225px; HEIGHT: 34px } .olimpiadas SMALL { VISIBILITY: hidden } .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 } UNKNOWN { 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) } .fpbox A { FONT: 13px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/35C37CD60A80E0AB015CD9C0982DF020/LVDG_estilos_sector_participa.css .part .a660 { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y = right top } .part .a660 .g { MARGIN-TOP: 7px; FONT-SIZE: 25px; COLOR: #c00 } .part .participa { BACKGROUND: none transparent scroll repeat 0% 0%; OVERFLOW: hidden; = MARGIN-RIGHT: 7px } .part .decajas { WIDTH: 1000% } .part .decajas H2 { FONT-SIZE: 17px; COLOR: #666! important } .part .decajas H2 A { FONT-SIZE: 17px; COLOR: #666! important } .part .a165 { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y = right top } .part .a165 .titulo { FONT-WEIGHT: bolder; FONT-SIZE: 14px } .part .a165 .entradilla { FONT-SIZE: 12px } .part .decajas .caja { WIDTH: 100%; MARGIN-RIGHT: 7px } UNKNOWN { WIDTH: auto } FORM.debate FIELDSET { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = FLOAT: none; PADDING-BOTTOM: 14px; MARGIN: 0px; WIDTH: 100%; = PADDING-TOP: 0px } .debate LABEL { CLEAR: both; DISPLAY: block; FONT-SIZE: 14px; WIDTH: 100% } .debate .graf { CLEAR: both; DISPLAY: block; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_graf.gif) repeat-x right top; = MARGIN: 0px 0px 6px; WIDTH: 100%; POSITION: relative; HEIGHT: 15px; = TEXT-ALIGN: left } UNKNOWN { WIDTH: auto } .debate .graf SPAN { CLEAR: both; DISPLAY: block; FONT-SIZE: 10px; OVERFLOW: hidden; = LINE-HEIGHT: 1px; POSITION: relative; HEIGHT: 15px! important } .percent_1 { BACKGROUND: rgb(0,0,255); WIDTH: 100% } .percent_2 { BACKGROUND: rgb(51,0,255); WIDTH: 0% } .navpart { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x = left top } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/4C89F4C00A80E0AB015D8D75A69A82EB/LVDG_estilos_caja_clasificados.css .clasificados FIELDSET { CLEAR: both; BACKGROUND-POSITION: center top; DISPLAY: block; = BORDER-BOTTOM-WIDTH: 1px; MARGIN-BOTTOM: 10px; PADDING-BOTTOM: 14px; = WIDTH: 100%; PADDING-TOP: 48px; BACKGROUND-REPEAT: no-repeat; = TEXT-ALIGN: center } UNKNOWN { WIDTH: auto } .clasificados INPUT.brd { Z-INDEX: 1; WIDTH: 180px } .clasificados UL { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px; WIDTH: 100%; PADDING-TOP: 0px } UNKNOWN { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; MARGIN: = 0px 10px; PADDING-TOP: 0px } .clasificados UL LI { CLEAR: none; PADDING-LEFT: 10px; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_li.gif) no-repeat left center; = FLOAT: left; WIDTH: 49.9%; COLOR: #8c8266 } UNKNOWN { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; = LIST-STYLE-TYPE: square } .tvgtucoche { BACKGROUND-IMAGE: = url(http://media.lavozdegalicia.es/img/logos/lg_tvgtcoche.gif) } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/4C879A360A80E0AB015D8D7526830E6F/LVDG_estilos_caja_relnot.css .a330 .relnot { 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 .relnot .img .brd { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .a330 .relnot .img .relimg { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 7px } .a330 .relnot 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 } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/4C89595B0A80E0AB015D8D75C10D0DEE/LVDG_estilos_caja_ptrcn.css .ptrcn { MARGIN: 7px } .ptrcn .rot { BORDER-TOP-WIDTH: 1px! important; BACKGROUND-POSITION: 7px bottom; = BORDER-LEFT-WIDTH: 1px! important; BORDER-BOTTOM-WIDTH: 1px! important; = BACKGROUND-REPEAT: no-repeat; HEIGHT: 24px; BORDER-RIGHT-WIDTH: 1px! = important } .ptrcn LI { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x left bottom; = PADDING-BOTTOM: 4px; MARGIN: 0px; PADDING-TOP: 4px; LIST-STYLE-TYPE: = none } .ptrcn LI A { FONT-SIZE: 11px } .prtcoru .rot { BACKGROUND-IMAGE: = url(http://media.lavozdegalicia.es/img/logos/lg_prtcoru.gif) } .consorcio .rot { BACKGROUND-IMAGE: = url(http://media.lavozdegalicia.es/img/logos/lg_consorcio.gif) } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/327027100A80E0AB01A3E41FC713AF4D/LVDG_estilos_pieza_caja_catalogo.css .ctlg { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN-RIGHT: 7px; = PADDING-TOP: 20px; POSITION: relative } .ctlg H3 { CLEAR: none; BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; = DISPLAY: inline; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: = 0px; TEXT-ALIGN: left } .ctlg .pestana { BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 7px; PADDING-LEFT: 7px; = FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; = PADDING-BOTTOM: 2px; MARGIN: 0px 4px 0px 0px; TEXT-TRANSFORM: none; = COLOR: #000; PADDING-TOP: 4px; POSITION: relative; TOP: -3px; = BORDER-RIGHT-WIDTH: 1px } UNKNOWN { MARGIN: 0px; TOP: -3px } .ctlg .off { Z-INDEX: 100; BORDER-BOTTOM-COLOR: #fff } .ctlg .cliche { CLEAR: both; FLOAT: left; POSITION: relative } .ctlg .item { CLEAR: left; BACKGROUND: #fff; FLOAT: left; WIDTH: 100%; POSITION: = relative } .ctlg .cont { BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 7px; PADDING-LEFT: 7px; = BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; PADDING-BOTTOM: 7px; = MARGIN: 0px; WIDTH: 100%; PADDING-TOP: 7px; BORDER-RIGHT-WIDTH: 1px } UNKNOWN { WIDTH: auto } .ctlg .cont UL.ult { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; POSITION: = relative } .ctlg .no { DISPLAY: none! important } .ctlg .cont .ult LI { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 4px 0px 4px 36px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; = POSITION: relative } .ctlg .cont LI A { VISIBILITY: visible; TEXT-TRANSFORM: none; COLOR: #134d86 } .ctlg .cont .ult LI EM { DISPLAY: block; LEFT: -36px; FONT: bolder 11px arial, geneva, = helvetica, sans-serif; COLOR: #c33; POSITION: absolute; TOP: 2px } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Location: http://media.lavozdegalicia.es/ficheros/4C88D3620A80E0AB015D8D75B9C5111B/LVDG_estilos_caja_encuentros.css .encuentros .invitado { FONT-WEIGHT: bolder } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/4C86F55B0A80E0AB015D8D75E7DB9570/LVDG_estilos_caja_pasos.css .a330 .pasos { FONT-SIZE: 13px } .pasos P { BACKGROUND-POSITION: left top; PADDING-LEFT: 30px; BACKGROUND-REPEAT: = no-repeat } .pasos P STRONG { FONT-WEIGHT: normal; FONT-SIZE: 17px } .paso_01 { BACKGROUND-IMAGE: url(http://media.lavozdegalicia.es/img/paso_01.gif) } .paso_02 { BACKGROUND-IMAGE: url(http://media.lavozdegalicia.es/img/paso_02.gif) } .paso_03 { BACKGROUND-IMAGE: url(http://media.lavozdegalicia.es/img/paso_03.gif) } .pasos .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 } UNKNOWN { WIDTH: auto } .pasos .links LI { PADDING-RIGHT: 0px; DISPLAY: block! important; PADDING-LEFT: 7px; = FLOAT: left; PADDING-BOTTOM: 4px; MARGIN: 0px; WIDTH: 144px; = PADDING-TOP: 4px; LIST-STYLE-TYPE: none; POSITION: relative } .pasos .links EM { DISPLAY: inline! important; FONT-WEIGHT: bolder; COLOR: #c00; = FONT-STYLE: normal } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/DB579D200A80E0AB01A3AA2CAA225BF5/LVDG_estilos_edicion.css .ed01 .act .noticias { BORDER-BOTTOM-WIDTH: 1px } .ed01 .act .a242 .not .titulo { FONT-WEIGHT: normal; FONT-SIZE: 17px } .ed01 .act .info { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y = 487px top } .ed01 .act .info .a495 { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y = 240px top } .ed01 .act .info { BORDER-TOP-WIDTH: 1px } .ed01 .info .a495 .not { MARGIN-LEFT: 7px; MARGIN-RIGHT: 7px } .ed01 .info .a495 .a253 .not { MARGIN-RIGHT: 14px } .ed01 .info .a253 .titulo { FONT-WEIGHT: bolder; FONT-SIZE: 14px } .ed01 .info .a242 .not .titulo { FONT-WEIGHT: bolder; FONT-SIZE: 14px } .ed01 .info .titulo { FONT-WEIGHT: normal } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/BC6FCC230A80E0AB01A4181CC75C3517/LVDG_estilos_sector_info.css .actualidad { BORDER-RIGHT: 0px double; BORDER-TOP: 0px double; MARGIN: 7px 0px; = BORDER-LEFT: 0px double; BORDER-BOTTOM: 3px double } .actualidad .a495 { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y = 244px top } .actualidad .a242 DIV.not { MARGIN-LEFT: 7px } .actualidad .a242 .caja DIV.not { MARGIN-LEFT: 7px } .actualidad .g { FONT-SIZE: 27px; BACKGROUND: #fff; MARGIN: 0px 7px; COLOR: #666 } .actualidad .a165 .prim { MARGIN-RIGHT: 7px } .actualidad .a165 .prim H3.cliche { COLOR: #c33 } .actualidad .a165 .prim .titulo { FONT-SIZE: 18px } .info .a165 .debate { PADDING-LEFT: 0px; MARGIN-BOTTOM: 14px } .info .a165 .nopd .not { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; = MARGIN-LEFT: 0px; PADDING-TOP: 7px } .info .nots { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 14px; PADDING-TOP: 0px } .info .nots .ocio { MARGIN: 0px } .info .nots .not { MARGIN-LEFT: 0px } .info { BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium = none; BORDER-BOTTOM: medium none } .info .a660 { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y = right top } .auto { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 7px; MARGIN: 7px = 0px; PADDING-TOP: 7px } .img .relimg { MARGIN: 0px 3px } .info .sub_info { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x = left bottom } .info .sub_info .a418 { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y = 410px top; MARGIN: 7px 0px } .info .sub_info .a418 .auto { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y = 205px top } .info .sub_info .a242 { MARGIN: 7px 0px } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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 } UNKNOWN { 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_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/BD5D1E2B0A80E0AB00A56214B450D1B8/LVDG_estilos_votacion_graf.css .izq .votacion { WIDTH: 100%; MARGIN-RIGHT: 7px } UNKNOWN { WIDTH: auto } TABLE.rstd_dbt { BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: = 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 12px georgia, times new = roman, serif; BORDER-LEFT: 0px; WIDTH: 100%; PADDING-TOP: 0px; = BORDER-BOTTOM: 0px } .rstd_dbt CAPTION { FONT: 18px palatino, georgia, times new roman, serif; TEXT-TRANSFORM: = uppercase; COLOR: #666; TEXT-ALIGN: left } .rstd_dbt TH { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-WEIGHT: normal; = PADDING-BOTTOM: 4px; PADDING-TOP: 4px; TEXT-ALIGN: right } .rstd_dbt TD { BORDER-RIGHT: 0px; PADDING-RIGHT: 7px; BORDER-TOP: 0px; PADDING-LEFT: = 7px; PADDING-BOTTOM: 4px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: = 4px; BORDER-BOTTOM: 0px; TEXT-ALIGN: right } .rstd_dbt THEAD { FONT-SIZE: 11px; COLOR: #666 } .rstd_dbt TFOOT TD { FONT-WEIGHT: bolder } .rstd_dbt TBODY TR { BORDER-RIGHT: 0px; BORDER-TOP: 0px; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-x left bottom; = MARGIN: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px } .rstd_dbt .rep_grf { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: 40%; = PADDING-TOP: 6px; TEXT-ALIGN: left } .rstd_dbt .dats { PADDING-RIGHT: 0px; PADDING-LEFT: 14px; PADDING-BOTTOM: 2px; = PADDING-TOP: 2px } .rstd_dbt .b { FONT-WEIGHT: bolder } .rstd_dbt #total { BACKGROUND: none transparent scroll repeat 0% 0% } FORM.debate FIELDSET { CLEAR: both; PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; = FLOAT: none; PADDING-BOTTOM: 14px; MARGIN: 0px; WIDTH: 100%; = PADDING-TOP: 0px } .debate LABEL { CLEAR: both; DISPLAY: block; FONT-SIZE: 14px; WIDTH: 100% } .debate .graf { CLEAR: both; DISPLAY: block; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_graf.gif) repeat-x right top; = MARGIN: 0px 0px 6px; WIDTH: 100%; POSITION: relative; HEIGHT: 15px; = TEXT-ALIGN: left } UNKNOWN { WIDTH: auto } .debate .graf SPAN { CLEAR: both; DISPLAY: block; FONT-SIZE: 10px; OVERFLOW: hidden; = LINE-HEIGHT: 1px; POSITION: relative; HEIGHT: 15px! important } .percent_1 { BACKGROUND: rgb(51,0,204); WIDTH: 100% } .percent_2 { BACKGROUND: rgb(102,0,153); WIDTH: 90% } .percent_3 { BACKGROUND: rgb(153,0,102); WIDTH: 81% } .percent_4 { BACKGROUND: rgb(204,0,51); WIDTH: 72% } .percent_5 { BACKGROUND: rgb(255,0,0); WIDTH: 63% } .percent_6 { BACKGROUND: rgb(153,102,0); WIDTH: 54% } .percent_7 { BACKGROUND: rgb(102,153,0); WIDTH: 45% } .percent_8 { BACKGROUND: rgb(51,204,0); WIDTH: 36% } .percent_9 { BACKGROUND: rgb(0,255,0); WIDTH: 27% } .percent_10 { BACKGROUND: rgb(0,153,102); WIDTH: 18% } .percent_11 { BACKGROUND: rgb(0,102,153); WIDTH: 9% } .percent_12 { BACKGROUND: rgb(100,102,153); WIDTH: 9% } .percent_13 { BACKGROUND: rgb(0,150,193); WIDTH: 9% } .percent_14 { BACKGROUND: rgb(80,90,100); WIDTH: 9% } .percent_15 { BACKGROUND: rgb(100,200,100); WIDTH: 9% } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/327027100A80E0AB01A3E41FC713AF4D/LVDG_estilos_pieza_caja_catalogo.css .ctlg { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN-RIGHT: 7px; = PADDING-TOP: 20px; POSITION: relative } .ctlg H3 { CLEAR: none; BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; = DISPLAY: inline; PADDING-LEFT: 0px; FONT-SIZE: 11px; PADDING-BOTTOM: = 0px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: = 0px; TEXT-ALIGN: left } .ctlg .pestana { BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 7px; PADDING-LEFT: 7px; = FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; = PADDING-BOTTOM: 2px; MARGIN: 0px 4px 0px 0px; TEXT-TRANSFORM: none; = COLOR: #000; PADDING-TOP: 4px; POSITION: relative; TOP: -3px; = BORDER-RIGHT-WIDTH: 1px } UNKNOWN { MARGIN: 0px; TOP: -3px } .ctlg .off { Z-INDEX: 100; BORDER-BOTTOM-COLOR: #fff } .ctlg .cliche { CLEAR: both; FLOAT: left; POSITION: relative } .ctlg .item { CLEAR: left; BACKGROUND: #fff; FLOAT: left; WIDTH: 100%; POSITION: = relative } .ctlg .cont { BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 7px; PADDING-LEFT: 7px; = BORDER-LEFT-WIDTH: 1px; BORDER-BOTTOM-WIDTH: 1px; PADDING-BOTTOM: 7px; = MARGIN: 0px; WIDTH: 100%; PADDING-TOP: 7px; BORDER-RIGHT-WIDTH: 1px } UNKNOWN { WIDTH: auto } .ctlg .cont UL.ult { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; POSITION: = relative } .ctlg .no { DISPLAY: none! important } .ctlg .cont .ult LI { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 4px 0px 4px 36px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; = POSITION: relative } .ctlg .cont LI A { VISIBILITY: visible; TEXT-TRANSFORM: none; COLOR: #134d86 } .ctlg .cont .ult LI EM { DISPLAY: block; LEFT: -36px; FONT: bolder 11px arial, geneva, = helvetica, sans-serif; COLOR: #c33; POSITION: absolute; TOP: 2px } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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 } UNKNOWN { 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 } UNKNOWN { 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 } UNKNOWN { 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_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/A20BCDC70A80E0AB007BFC047CAE06CB/LVDG_estilos_detalle_noticia.css .det { BACKGROUND: url(http://media.lavozdegalicia.es/img/f_dot_det.gif) = repeat-y 660px 2px } .det H1.titulo { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 33px; = PADDING-BOTTOM: 7px; PADDING-TOP: 0px } .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: 14px } .a330 .relacionados .img .brd { MARGIN: 0px } .det .texto { FONT: 14px/20px Verdana, Arial, Helvetica, sans-serif } .det .texto A { TEXT-DECORATION: underline } .det .texto A:hover { COLOR: #c00 } .det .entradilla { FONT-SIZE: 19px; PADDING-TOP: 14px } .a660 .localizador { MARGIN-TOP: 4px; FONT-SIZE: 13px } .a660 .localizador DT.si { DISPLAY: inline; FONT: 11px georgia, times new roman, serif; COLOR: = #000 } .localizador DD { DISPLAY: inline; FONT: 11px georgia, times new roman, serif; COLOR: = #000 } .a660 .localizador DT.si { FONT-WEIGHT: bolder } .localizador DD.autor { FONT-WEIGHT: bolder } .a660 .localizador DD.fecha { BORDER-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 8px; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y left center; = FONT: 12px trebuchet ms, lucida grande, tahoma, arial, geneva, verdana, = helvetica, sans-serif; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px } .localizador DD.web { BORDER-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 8px; BACKGROUND: = url(http://media.lavozdegalicia.es/img/f_dot.gif) repeat-y left center; = FONT: 12px trebuchet ms, lucida grande, tahoma, arial, geneva, verdana, = helvetica, sans-serif; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px } .a660 .localizador DD A { TEXT-DECORATION: underline } .a660 .localizador DD.trackback A { COLOR: #cc0000 } .a660 .localizador DD.locali { TEXT-TRANSFORM: capitalize } .localizador DD.autor { TEXT-TRANSFORM: capitalize } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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 } UNKNOWN { 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 } UNKNOWN { 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 } UNKNOWN { 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_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/1227605703877153374/LVDG_estilos_cab_detalles_logoper.css .panel .izq { PADDING-TOP: 25px } .panel .izq { DISPLAY: none! important } .panel .busca { FLOAT: right; MARGIN-RIGHT: 6px } .panel .cabecera { PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; MARGIN: = 0px; PADDING-TOP: 8px } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/1226333546435564810/LVDG_caja_cabecero_portadas_051108.css .cab { BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN-BOTTOM: 0px; BORDER-LEFT: = 0px; BORDER-BOTTOM: 0px } UNKNOWN { WIDTH: 992px } #cabecero DIV.auto { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } .cab .serv { CLEAR: both; DISPLAY: block; FONT-SIZE: 11px; MARGIN: 0px; WIDTH: 100% } .cab .serv .idiom { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 0px } .cab .serv .idiom .pestana { BORDER-TOP-WIDTH: 1px; PADDING-RIGHT: 7px; DISPLAY: block; = PADDING-LEFT: 7px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; = BACKGROUND: #fff; FLOAT: left; 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: 70px; FONT-SIZE: 10px; BACKGROUND: = url(http://media.lavozdegalicia.es/default/2008/11/24/0012122752986383830= 7298/Foto/cliche_periodico.gif) no-repeat right top; LINE-HEIGHT: 22px } .cab .serv .ed_imp STRONG { FONT-WEIGHT: normal; COLOR: #666 } .cab .serv .ed_imp A { FONT-WEIGHT: bolder; MARGIN: 0px 3px } .panel { BORDER-TOP-WIDTH: 1px; CLEAR: both; BORDER-LEFT-WIDTH: 1px; = BORDER-LEFT-COLOR: #bbb5a6; BORDER-BOTTOM-WIDTH: 0px; = BORDER-BOTTOM-COLOR: #bbb5a6; MARGIN: 0px; WIDTH: 100%; = BORDER-TOP-COLOR: #bbb5a6; TEXT-ALIGN: left; BORDER-RIGHT-WIDTH: 1px; = BORDER-RIGHT-COLOR: #bbb5a6 } UNKNOWN { WIDTH: auto } .cabecera { CLEAR: none; PADDING-RIGHT: 58px; DISPLAY: block; PADDING-LEFT: 58px; = FLOAT: left; PADDING-BOTTOM: 10px; PADDING-TOP: 10px } .panel .izq { CLEAR: none; WIDTH: 220px; PADDING-TOP: 20px; FONT-FAMILY: georgia, = times new roman, serif; TEXT-ALIGN: right } .panel .izq SPAN { CLEAR: both; DISPLAY: block } .panel .izq STRONG { CLEAR: both; DISPLAY: block } .panel .izq SPAN { COLOR: #666; FONT-FAMILY: trebuchet ms, lucida grande, geneva, tahoma, = arial, helvetica, sans-serif } .panel .izq EM { FONT-WEIGHT: bolder; COLOR: #ba1617; FONT-STYLE: normal } .busca { FLOAT: left; PADDING-TOP: 10px } .busca .box_search { BACKGROUND: = url(http://media.lavozdegalicia.es/default/2008/11/07/0012122606366303375= 9223/Foto/bg_searchbox.gif) #fff repeat-x left top; WIDTH: 222px; = TEXT-ALIGN: center } .busca .box_search DIV { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: medium = none; DISPLAY: block; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; = BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px = solid } .busca .box_search DIV.no { DISPLAY: none; VISIBILITY: hidden } .busca .sel_fuente { BORDER-LEFT: #ccc 1px solid; WIDTH: 222px } .busca FIELDSET { DISPLAY: block; WIDTH: 240px } .busca FIELDSET LABEL { BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 7px; BORDER-TOP: #ccc 1px = solid; DISPLAY: block; PADDING-LEFT: 7px; FLOAT: left; PADDING-BOTTOM: = 7px; PADDING-TOP: 7px } .busca INPUT.no { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; WIDTH: 0px; PADDING-TOP: 0px; HEIGHT: 0px } .busca #pestanapgalegas_form { PADDING-RIGHT: 63px; BACKGROUND: = url(http://media.lavozdegalicia.es/default/2008/11/07/0012122606376473537= 4719/Foto/busq_pgalegas.gif) no-repeat right center } .busca .on { BACKGROUND: #ccc } .busca .on#pestanapgalegas_form { BACKGROUND: = url(http://media.lavozdegalicia.es/default/2008/11/07/0012122606380679925= 7491/Foto/busq_pgalegas_on.gif) #999 no-repeat right center; WIDTH: 47px } .busca INPUT.brd { BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; WIDTH: 153px; = BORDER-BOTTOM: 0px; HEIGHT: 19px } .busca INPUT.boton { BORDER-RIGHT: 0px; BORDER-TOP: 0px; BACKGROUND: = url(http://media.lavozdegalicia.es/default/2008/11/07/0012122606371926185= 8450/Foto/bg_searchbut.gif) repeat-x left top; BORDER-LEFT: 0px; COLOR: = #fff; BORDER-BOTTOM: 0px } UNKNOWN { HEIGHT: 19px } .indx .menu { BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 0px solid; FONT-SIZE: = 0px! important; BACKGROUND: #036; FLOAT: left; BORDER-LEFT: #ccc 1px = solid; WIDTH: 992px; BORDER-BOTTOM: #ccc 0px solid } UNKNOWN { WIDTH: 990px; PADDING-TOP: 0px } .item { PADDING-RIGHT: 0px! important; DISPLAY: inline; PADDING-LEFT: 0px! = important; PADDING-BOTTOM: 0px! important; MARGIN: 0px; PADDING-TOP: = 0px! important } .indx .item { TEXT-TRANSFORM: uppercase } UNKNOWN { MARGIN: 0px -4px 0px 0px } .indx H4 { PADDING-RIGHT: 1px! important; DISPLAY: inline; PADDING-LEFT: 1px! = important; FONT-WEIGHT: normal; FONT-SIZE: 13px; PADDING-BOTTOM: 0px! = important; PADDING-TOP: 0px! important } .item A { PADDING-RIGHT: 2px! important; PADDING-LEFT: 2px! important; = PADDING-BOTTOM: 0px! important; MARGIN: 0px; COLOR: #fff; LINE-HEIGHT: = 18px; PADDING-TOP: 0px! important } .sub { CLEAR: both; BACKGROUND: #fff; FLOAT: left; WIDTH: 100%; BORDER-BOTTOM: = #ccc 1px solid } .no { DISPLAY: none } .sub LI { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FLOAT: left; PADDING-BOTTOM: = 4px; TEXT-TRANSFORM: none; PADDING-TOP: 4px } .sub A { COLOR: #000 } .indx .mg_inf { BACKGROUND: #e00729 } .indx .mg_util { BACKGROUND: #666 } .indx .mg_clasifi { BACKGROUND: #036 } .indx .off { BORDER-RIGHT: 0px; BORDER-TOP: 0px; BACKGROUND: #fff; BORDER-LEFT: 0px; = COLOR: #000; BORDER-BOTTOM: 0px } .indx .off:hover { BACKGROUND: #fff; TEXT-DECORATION: underline } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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 } UNKNOWN { 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_0063_01C970AF.BCF12DC0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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 } UNKNOWN { POSITION: fixed; HEIGHT: 100% } .porter { Z-INDEX: 5001; LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 0px; = TEXT-ALIGN: center } UNKNOWN { 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; = PADDING-TOP: 7px; HEIGHT: auto; max-height: 400px } .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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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= // descomentar para hacer impactos en PIWIK=0A= piwik_log('', 3, 'http://piwik.lavozdegalicia.es/piwik.php');=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= function hacerInvisibleTodos(id){=0A= capa =3D document.getElementById(id);=0A= cnjIMG =3D capa.getElementsByTagName('img');=0A= for (var i=3D0; i -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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/1223634109863795575/LVDG_PIWIK_SCRIPT.js // Web analytics by Piwik - http://piwik.org=0A= // Copyleft 2007, All rights reversed.=0A= var _pk_use_title_as_name =3D 0;=0A= var _pk_install_tracker =3D 1;=0A= var _pk_tracker_pause =3D 500;=0A= var _pk_download_extensions =3D = "7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|phps|png|= ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip";=0A= =0A= // Beginning script=0A= function _pk_plug_normal(_pk_pl) {=0A= if (_pk_tm.indexOf(_pk_pl) !=3D -1 && = (navigator.mimeTypes[_pk_pl].enabledPlugin !=3D null)) =0A= return '1';=0A= return '0';=0A= }=0A= =0A= function _pk_plug_ie(_pk_pl)=0A= {=0A= pk_found =3D false;=0A= document.write('\n on error resume = next \n pk_found =3D IsObject(CreateObject("' + _pk_pl + '")) ');=0A= if(!_pk_action_name || _pk_action_name=3D=3D"") _pk_called=3D1;=0A= =0A= _pk_init_tracker(_pk_site, _pk_pkurl);=0A= }=0A= =0A= function _pk_add_event(elm, evType, fn, useCapture) =0A= {=0A= if (elm.addEventListener) { =0A= elm.addEventListener(evType, fn, useCapture); =0A= return true; =0A= } else if (elm.attachEvent) { =0A= var r =3D elm.attachEvent('on' + evType, fn); =0A= return r; =0A= } else {=0A= elm['on' + evType] =3D fn;=0A= }=0A= }=0A= =0A= var _pk_tracker_site, _pk_tracker_url;=0A= =0A= function _pk_init_tracker(_pk_site, _pk_pkurl) =0A= {=0A= if( typeof(piwik_install_tracker) !=3D "undefined" )=0A= _pk_install_tracker =3D piwik_install_tracker;=0A= if( typeof(piwik_tracker_pause) !=3D "undefined" )=0A= _pk_tracker_pause =3D piwik_tracker_pause;=0A= if( typeof(piwik_download_extensions) !=3D "undefined" )=0A= _pk_download_extensions =3D piwik_download_extensions;=0A= =0A= _pk_hosts_alias =3D ( typeof(piwik_hosts_alias) !=3D "undefined" ? = piwik_hosts_alias : new Array())=0A= _pk_hosts_alias.push(window.location.hostname);=0A= =0A= if( !_pk_install_tracker )=0A= return;=0A= =0A= _pk_tracker_site =3D _pk_site;=0A= _pk_tracker_url =3D _pk_pkurl;=0A= =0A= if (document.getElementsByTagName) {=0A= linksElements =3D document.getElementsByTagName('a')=0A= for (var i =3D 0; i < linksElements.length; i++) {=0A= if( linksElements[i].className !=3D 'piwik_ignore' )=0A= _pk_add_event(linksElements[i], 'mousedown', _pk_click, false);=0A= }=0A= }=0A= }=0A= =0A= function _pk_dummy() { return true; }=0A= =0A= function _pk_pause(_pk_time_msec) {=0A= var _pk_now =3D new Date();=0A= var _pk_expire =3D _pk_now.getTime() + _pk_time_msec;=0A= while(_pk_now.getTime() < _pk_expire)=0A= _pk_now =3D new Date();=0A= }=0A= =0A= // _pk_type only 'download' and 'link' types supported=0A= function piwik_track(url, _pk_site, _pk_url, _pk_type) =0A= {=0A= var _pk_image =3D new Image();=0A= _pk_image.onLoad =3D function() { _pk_dummy(); };=0A= _pk_image.src =3D _pk_url + '?idsite=3D' + _pk_site + '&' + _pk_type + = '=3D' + escape(url) + '&rand=3D' + Math.random() + '&redirect=3D0';=0A= _pk_pause(_pk_tracker_pause);=0A= }=0A= =0A= function _pk_is_site_hostname(_pk_hostname) {=0A= for(i =3D 0; i < _pk_hosts_alias.length; i++)=0A= if( _pk_hostname =3D=3D _pk_hosts_alias[i] ) =0A= return true;=0A= return false;=0A= }=0A= =0A= function _pk_click(e)=0A= {=0A= var source;=0A= =0A= if (typeof e =3D=3D 'undefined')=0A= var e =3D window.event;=0A= =0A= if (typeof e.target !=3D 'undefined') =0A= source =3D e.target;=0A= else if (typeof e.srcElement !=3D 'undefined')=0A= source =3D e.srcElement;=0A= else return true;=0A= =0A= while( source.tagName !=3D "A" )=0A= source =3D source.parentNode;=0A= =0A= if( typeof source.href =3D=3D 'undefined' )=0A= return true;=0A= =0A= var _pk_download =3D new RegExp('\\.(' + _pk_download_extensions + = ')$', 'i');=0A= var _pk_link_type;=0A= var _pk_not_site_hostname =3D !_pk_is_site_hostname(source.hostname);=0A= =0A= if( source.className =3D=3D "piwik_download" )=0A= _pk_link_type =3D 'download';=0A= else if( source.className =3D=3D "piwik_link" ) {=0A= _pk_link_type =3D 'link';=0A= _pk_not_site_hostname =3D 1;=0A= }=0A= else _pk_link_type =3D (_pk_download.test(source.href) ? 'download' : = 'link');=0A= =0A= if( _pk_not_site_hostname || _pk_link_type =3D=3D 'download' ) =0A= piwik_track(source.href, _pk_tracker_site, _pk_tracker_url, = _pk_link_type);=0A= =0A= return true;=0A= } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/93D696360A80E09D0176E9C0E8D2FCCA/LVDG_fechasUtil.js /**=0A= =0A= =0A= =0A= exslt:date-time=0A= =0A= dates=0A= =0A= 2.0=0A= =0A= exslt:javascript=0A= =0A= =0A= =0A= Chris Bayes=0A= =0A= Implementation of EXSLT - Dates = (http://www.exslt.org/date)=0A= =0A= _validDuration is not 100%=0A= =0A= All timezone code.=0A= =0A= =0A= =0A= =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= =0A= =0A= add=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= addDuration=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= date=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= dateTime=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= dayAbbreviation=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= dayInMonth=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= dayInWeek=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= dayInYear=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= dayName=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= dayOfWeekInMonth=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= difference=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= duration=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= formatDate=0A= =0A= 1.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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 & Number) = July & 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= =0A= =0A= hourInDay=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= leapYear=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= minuteInHour=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= monthAbbreviation=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= monthInYear=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= monthName=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= parseDate=0A= =0A= 1.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= secondInMinute=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= seconds=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= sum=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= time=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= weekInMonth=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= weekInYear=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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= =0A= =0A= year=0A= =0A= 2.0=0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =0A= =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 & Number) = July & 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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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(" 3D\"\"\r\n");=0A= =0A= return true;=0A= } ------=_NextPart_000_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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= // = =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= // .=0A= //=0A= // =0A= // Author: Steffen Meschkat =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 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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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= // .=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 =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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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 '';=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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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=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 '';=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, '&').replace(//g, = '>');=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, '"');=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, '>');=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(/');=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('
') + '
';=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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.lavozdegalicia.es/ficheros/1189597793386605/LVDG_ClienteRSS.js 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= =0A= function rss(tipo, url, xslt, idElemToDisplay) {=0A= parse_xslt(tipo, url, xslt, idElemToDisplay);=0A= }=0A= =0A= function parse_xslt(tipo, url, xslt, idElemToDisplay) {=0A= xsltdebug =3D false;=0A= xpathdebug =3D false;=0A= var lectorXML =3D new LectorXML(url);=0A= //alert('xml=3D'+lectorXML.xml);=0A= =0A= var html =3D '';=0A= if (xslt!=3D'') {=0A= var xml =3D xmlParse(lectorXML.xml);=0A= var lectorXSLT =3D new LectorXSLT(xslt);=0A= //alert('xslt=3D'+lectorXSLT.xslt);=0A= var xslt =3D xmlParse(lectorXSLT.xslt);=0A= html =3D xsltProcess(xml, xslt);=0A= } else {=0A= html =3D lectorXML.xml;=0A= }=0A= SetContainerHTML2(idElemToDisplay,html);=0A= =0A= }=0A= =0A= =0A= function SetContainerHTML2(id_contenedor,html){=0A= var scs=3Dhtml.extractScript(); //capturamos los scripts=0A= var mydiv =3D document.getElementById(id_contenedor);=0A= mydiv.innerHTML=3Dhtml.stripScript(); //eliminamos los scripts... = ya son innecesarios=0A= scs.evalScript(); =0A= }=0A= =0A= function SetContainerHTML(id_contenedor,responseText) {=0A= mydiv =3D document.getElementById(id_contenedor);=0A= mydiv.innerHTML =3D responseText;=0A= var elementos =3D mydiv.getElementsByTagName('script');=0A= for(i=3D0;i0) {=0A= nuevoScript.src =3D elemento.src;=0A= }=0A= elemento.parentNode.replaceChild(nuevoScript,elemento);=0A= }=0A= }=0A= =0A= // a=F1adido para ejecutar el script de ajax.=0A= var tagScript =3D '(?:)((\n|\r|.)*?)(?:<\/script>)';=0A= /**=0A= * Eval script fragment=0A= * @return String=0A= */=0A= String.prototype.evalScript =3D function()=0A= {=0A= return (this.match(new RegExp(tagScript, 'img')) || = []).evalScript();=0A= };=0A= /**=0A= * strip script fragment=0A= * @return String=0A= */=0A= String.prototype.stripScript =3D function()=0A= {=0A= return this.replace(new RegExp(tagScript, 'img'), '');=0A= };=0A= /**=0A= * extract script fragment=0A= * @return String=0A= */=0A= String.prototype.extractScript =3D function()=0A= {=0A= var matchAll =3D new RegExp(tagScript, 'img');=0A= return (this.match(matchAll) || []);=0A= };=0A= /**=0A= * Eval scripts=0A= * @return String=0A= */=0A= Array.prototype.evalScript =3D function(extracted)=0A= {=0A= var s=3Dthis.map(function(sr){=0A= var sc=3D(sr.match(new RegExp(tagScript, 'im')) = || ['', ''])[1];=0A= if(window.execScript){=0A= window.execScript(sc);=0A= }=0A= else=0A= {=0A= window.setTimeout(sc,0);=0A= }=0A= });=0A= return true;=0A= };=0A= /**=0A= * Map array elements=0A= * @param {Function} fun=0A= * @return Function=0A= */=0A= Array.prototype.map =3D function(fun)=0A= {=0A= if(typeof fun!=3D=3D"function"){return false;}=0A= var i =3D 0, l =3D this.length;=0A= for(i=3D0;i<" + "/script>");=0A= =0A= }=0A= =0A= =0A= function bannerInternoPalabra(zoneId, palabra) {=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=3Dcampaing=3D"+zoneId+","+palabra+"&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>');=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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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 tamanoParrafoMinimo) {=0A= tamanoParrafo -=3D 2;=0A= cambioTamano =3D document.getElementById(id);=0A= =0A= var parrafos =3D cambioTamano.getElementsByTagName('p');=0A= for (var i=3D0; ii){=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= }=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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://media.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= // .=0A= //=0A= // [ECMA] ECMAScript Language Specification=0A= // = .=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 =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= // =0A= // =0A= // =0A= // =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_0063_01C970AF.BCF12DC0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js (function(){=0A= var h=3Dfalse,j=3Dnull,m=3Dtrue,aa=3D(new Date).getTime();var = ba=3D{google_ad_channel:"channel",google_ad_host:"host",google_ad_host_ch= annel:"h_ch",google_ad_host_tier_id:"ht_id",google_ad_region:"region",goo= gle_ad_section:"region",google_ad_type:"ad_type",google_adtest:"adtest",g= oogle_allow_expandable_ads:"ea",google_alternate_ad_url:"alternate_ad_url= ",google_alternate_color:"alt_color",google_bid:"bid",google_city:"gcs",g= oogle_color_bg:"color_bg",google_color_border:"color_border",google_color= _line:"color_line",google_color_link:"color_link",google_color_text:"colo= r_text",=0A= google_color_url:"color_url",google_contents:"contents",google_country:"g= l",google_cust_age:"cust_age",google_cust_ch:"cust_ch",google_cust_gender= :"cust_gender",google_cust_id:"cust_id",google_cust_interests:"cust_inter= ests",google_cust_job:"cust_job",google_cust_l:"cust_l",google_cust_lh:"c= ust_lh",google_cust_u_url:"cust_u_url",google_disable_video_autoplay:"dis= able_video_autoplay",google_ed:"ed",google_encoding:"oe",google_feedback:= "feedback_link",google_flash_version:"flash",google_gl:"gl",google_hints:= "hints",=0A= google_kw:"kw",google_kw_type:"kw_type",google_language:"hl",google_page_= url:"url",google_referrer_url:"ref",google_region:"gr",google_reuse_color= s:"reuse_colors",google_safe:"adsafe",google_targeting:"targeting",google= _ui_features:"ui",google_ui_version:"uiv",google_tag_js_version:"gut",goo= gle_video_doc_id:"video_doc_id",google_video_product_type:"video_product_= type"},ca=3D{google_ad_format:"format",google_ad_output:"output",google_a= d_callback:"callback",google_ad_override:"google_ad_override",google_ad_s= lot:"slotname",=0A= google_analytics_uacct:"ga_wpids",google_correlator:"correlator",google_c= pa_choice:"cpa_choice",google_ctr_threshold:"ctr_t",google_image_size:"im= age_size",google_last_modified_time:"lmt",google_max_num_ads:"num_ads",go= ogle_max_radlink_len:"max_radlink_len",google_num_radlinks:"num_radlinks"= ,google_num_radlinks_per_unit:"num_radlinks_per_unit",google_only_ads_wit= h_video:"only_ads_with_video",google_page_location:"loc",google_rl_dest_u= rl:"rl_dest_url",google_rl_filtering:"rl_filtering",google_rl_mode:"rl_mo= de",=0A= google_rt:"rt",google_skip:"skip"};function = da(){}da.prototype.Hb=3Dfunction(){};da.prototype.Ib=3Dfunction(){};da.pr= ototype.Gb=3Dfunction(){};var n=3Dj;function ea(a){n&&n.Hb(a)}function = fa(a){n&&n.Ib(a)}function ga(a){n&&n.Gb(a)}function = r(){this.I=3Dthis.wb();this.qa=3Dh;if(!this.I){(this.qa=3Dthis.bb())||fa(= "Browser does not allow = cookies")}}r.prototype.ha=3D"__gads=3D";r.prototype.R=3D"GoogleAdServingT= est=3D";r.prototype.ib=3Dfunction(){return = this.I};r.prototype.setCookieInfo=3Dfunction(a){this.C=3Da._cookies_[0];i= f(this.C!=3Dj){this.I=3Dthis.C._value_;this.Fb()}};=0A= r.prototype.eb=3Dfunction(a){var b=3D(new Date).valueOf(),c=3Dnew = Date;c.setTime(b+a);return = c};r.prototype.db=3Dfunction(a){if(this.I!=3Dj||!this.qa)ea("Skipping = fetch cookie call");else{var = b=3D"script",c=3Ddocument.domain,d=3D"http://partner.googleadservices.com= /gampad/cookie.js?callback=3D_GA_googleCookieHelper.setCookieInfo&client=3D= "+ha(a)+"&domain=3D"+ha(c);ea("Issuing a fetch cookie call with "+d+"");document.write("<"+b+' = src=3D"'+d+'">")}};=0A= r.prototype.bb=3Dfunction(){document.cookie=3Dthis.R+"Good";var = a=3Dthis.Ea(this.R),b=3Da=3D=3D"Good";if(b){var = c=3Dthis.eb(-1);document.cookie=3Dthis.R+"; = expires=3D"+c.toGMTString()}return b};r.prototype.wb=3Dfunction(){var = a=3Dthis.Ea(this.ha);a!=3Dj?ea("Read first party cookie: "+a):fa("No = first party cookie found");return a};r.prototype.Ea=3Dfunction(a){var = b=3Ddocument.cookie,c=3Db.indexOf(a),d=3Dj;if(c!=3D-1){var = e=3Dc+a.length,f=3Db.indexOf(";",e);if(f=3D=3D-1)f=3Db.length;d=3Db.subst= ring(e,f)}return d};=0A= r.prototype.Fb=3Dfunction(){if(this.C=3D=3Dj)fa("Skipping cookie = creation: no cookie info");else if(this.I=3D=3Dj)ga("Skipping cookie = creation: no cookie value");else{var a=3Dnew = Date;a.setTime(1000*this.C._expires_);var = b=3Dthis.C._domain_,c=3Dthis.ha+this.I+"; expires=3D"+a.toGMTString()+"; = path=3D"+this.C._path_+"; domain=3D."+b;document.cookie=3Dc;ea("Written = cookie: "+c)}};function ia(a,b){var c;return a?(c=3DparseFloat(a))?c:b:b}=0A= function ja(){if(navigator.plugins&&navigator.mimeTypes.length){var = a=3Dnavigator.plugins["Shockwave Flash"];if(a&&a.description)return = a.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")}else = if(navigator.userAgent&&navigator.userAgent.indexOf("Windows = CE")>=3D0){var b=3D3,c=3D1;while(c)try{c=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash."+(b+1));b++}catch(d){c=3Dj}= return b.toString()}else if(ka()){var c=3Dj;try{c=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(d){var = b=3D0;try{c=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");=0A= b=3D6;c.AllowScriptAccess=3D"always"}catch(d){if(b=3D=3D6)return = b.toString()}try{c=3Dnew = ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(d){}}if(c!=3Dj){var = b=3Dc.GetVariable("$version").split(" ")[1];return = b.replace(/,/g,".")}}return"0"};var = la=3Dla||{},s=3Dthis,na=3Dfunction(a,b,c){var = d=3Da.split("."),e=3Dc||s,f;!(d[0]in e)&&e.execScript&&e.execScript("var = "+d[0]);while(d.length&&(f=3Dd.shift()))if(!d.length&&ma(b))e[f]=3Db;else= e=3De[f]?e[f]:(e[f]=3D{})},oa=3Dfunction(a,b){var = c=3Da.split("."),d=3Db||s;for(var e;e=3Dc.shift();)if(d[e])d=3Dd[e];else = return j;return d},t=3Dfunction(a){var b=3Dtypeof = a;if(b=3D=3D"object")if(a){if(typeof a.length=3D=3D"number"&&typeof = a.splice!=3D"undefined"&&!pa(a,"length"))return"array";if(typeof = a.call!=3D"undefined")return"function"}else return"null";=0A= else if(b=3D=3D"function"&&typeof = a.call=3D=3D"undefined")return"object";return b},qa=3Dfunction(a,b){if(b = in a)for(var c in = a)if(c=3D=3Db&&Object.prototype.hasOwnProperty.call(a,b))return m;return = h};if(Object.prototype.propertyIsEnumerable)var = pa=3Dfunction(a,b){return a instanceof = Object?Object.prototype.propertyIsEnumerable.call(a,b):qa(a,b)};else = pa=3Dqa;var ma=3Dfunction(a){return typeof a!=3D"undefined"};=0A= var ra=3Dfunction(a){var b=3Dt(a);return = b=3D=3D"array"||b=3D=3D"object"&&typeof = a.length=3D=3D"number"},sa=3Dfunction(a){return typeof = a=3D=3D"string"},ta=3Dfunction(a){return = t(a)=3D=3D"function"},ua=3Dfunction(a){var b=3Dt(a);return = b=3D=3D"object"||b=3D=3D"array"||b=3D=3D"function"},xa=3Dfunction(a){if(a= .hasOwnProperty&&a.hasOwnProperty(va)){var b=3Da[va];if(b)return = b}a[va]||(a[va]=3D++wa);return = a[va]},va=3D"closure_hashCode_",wa=3D0,ya=3Dfunction(a){var = b=3Dt(a);if(b=3D=3D"object"||b=3D=3D"array"){if(a.clone)return = a.clone();var c=3Db=3D=3D"array"?[]:{};for(var d in a)c[d]=3D=0A= ya(a[d]);return c}return a},u=3Dfunction(a,b){var = c=3Da.Jb;if(arguments.length>2){var = d=3DArray.prototype.slice.call(arguments,2);c&&d.unshift.apply(d,c);c=3Dd= }b=3Da.Lb||b;a=3Da.Kb||a;var e,f=3Db||s;e=3Dc?function(){var = g=3DArray.prototype.slice.call(arguments);g.unshift.apply(g,c);return = a.apply(f,g)}:function(){return = a.apply(f,arguments)};e.Jb=3Dc;e.Lb=3Db;e.Kb=3Da;return = e},za=3DDate.now||function(){return(new = Date).getTime()},Aa=3Dfunction(a,b,c){na(a,b,c)},v=3Dfunction(a,b){functi= on c(){}c.prototype=3Db.prototype;a.p=3Db.prototype;=0A= a.prototype=3Dnew c;a.prototype.constructor=3Da};var = Ba=3Dfunction(a,b,c){if(a.indexOf)return = a.indexOf(b,c);if(Array.indexOf)return Array.indexOf(a,b,c);var = d=3Dc=3D=3Dj?0:c<0?Math.max(0,a.length+c):c;for(var = e=3Dd;e")!=3D-1)a=3Da.replace(Ka,">= ;");if(a.indexOf('"')!=3D-1)a=3Da.replace(La,""");return = a}},Ia=3D/&/g,Ja=3D//g,La=3D/\"/g,Ma=3D/[&<>\"]/,Oa=3Dfunction= (a,b){var c=3Db.length;for(var d=3D0;db)return 1;return 0};var = Ra,Sa,Ta,Ua,Va,Wa,Xa,Ya,Za,$a,ab,bb=3Dfunction(){if(s.navigator)return = s.navigator.userAgent;return j},cb=3Dfunction(){var = a=3Dh,b=3Dh,c=3Dh,d=3Dh,e=3Dh,f=3Dh,g=3Dh,i=3Dh,k=3Dh,l=3D"",o=3Dbb();if(= o){var = p=3Ds.navigator;a=3Do.indexOf("Opera")=3D=3D0;b=3D!a&&o.indexOf("MSIE")!=3D= -1;k=3D(c=3D!a&&o.indexOf("WebKit")!=3D-1)&&o.indexOf("Mobile")!=3D-1;e=3D= (d=3D!a&&!c&&p.product=3D=3D"Gecko")&&p.vendor=3D=3D"Camino";var = q,x;if(s.opera&&typeof = s.opera.version=3D=3D"function")q=3Ds.opera.version();else{if(d)x=3D/rv\:= ([^\);]+)(\)|;)/;else if(b)x=3D/MSIE\s+([^\);]+)(\)|;)/;=0A= else = if(c)x=3D/WebKit\/(\S+)/;if(x){x.test(o);q=3DRegExp.$1}}l=3Dp.platform||"= ";f=3Dl.indexOf("Mac")!=3D-1;g=3Dl.indexOf("Win")!=3D-1;i=3Dl.indexOf("Li= nux")!=3D-1}Ra=3Da;Sa=3Db;Ta=3Dd;Ua=3De;Va=3Dc;Wa=3Dk;Xa=3Dq;Ya=3Dl;Za=3D= f;$a=3Dg;ab=3Di};cb();var db=3DRa,y=3DSa,jb=3DTa,z=3DVa,kb=3DWa;var = A=3Dfunction(a){return Qa(Xa,a)>=3D0};var lb;var = mb=3Dfunction(){lb||(lb=3Dnew B);return lb},ob=3Dfunction(a){return = a?new B(nb(a)):mb()};=0A= var pb=3Dfunction(a){return = sa(a)?document.getElementById(a):a},qb=3Dpb,sb=3Dfunction(a,b){Ga(b,funct= ion(c,d){if(d=3D=3D"style")a.style.cssText=3Dc;else = if(d=3D=3D"class")a.className=3Dc;else = if(d=3D=3D"for")a.htmlFor=3Dc;else if(d in = rb)a.setAttribute(rb[d],c);else = a[d]=3Dc})},rb=3D{cellpadding:"cellPadding",cellspacing:"cellSpacing",col= span:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"w= idth",usemap:"useMap",frameborder:"frameBorder",type:"type"},tb=3Dfunctio= n(a){var b=3Da||s||window,c=3Db.document;if(z&&!A("500")&&=0A= !kb){if(typeof b.innerHeight=3D=3D"undefined")b=3Dwindow;var = d=3Db.innerHeight,e=3Db.document.documentElement.scrollHeight;if(b=3D=3Db= .top)if(e");a=3Dc.join("")}var = d=3Dthis.createElement(a);b&&sb(d,b);if(arguments.length>2){function = e(i){if(i)this.appendChild(d,sa(i)?this.createTextNode(i):i)}for(var = f=3D2;f0)?Ca(zb(g)?Ea(g):g,e,this):e= .call(this,g)}}return d};B.prototype.createElement=3Dfunction(a){return = this.n.createElement(a)};=0A= B.prototype.createTextNode=3Dfunction(a){return = this.n.createTextNode(a)};B.prototype.gb=3Dfunction(){if(this.n.compatMod= e)return this.n.compatMode;if(z){var = a=3Dthis.Ua("div",{style:"position:absolute;width:0;height:0;width:1"}),b= =3Da.style.width=3D=3D"1px"?"BackCompat":"CSS1Compat";return = this.n.compatMode=3Db}return"BackCompat"};=0A= B.prototype.wa=3Dfunction(){var = a=3Dthis.n,b,c;if(!z&&a.compatMode=3D=3D"CSS1Compat"){b=3Da.documentEleme= nt.scrollLeft;c=3Da.documentElement.scrollTop}else{b=3Da.body.scrollLeft;= c=3Da.body.scrollTop}return new = Fa(b,c)};B.prototype.appendChild=3Dub;B.prototype.removeNode=3Dvb;B.proto= type.replaceNode=3Dwb;B.prototype.contains=3Dyb;var = Ab,Bb=3Dfunction(a,b){var = c=3Dnb(a);if(c.defaultView&&c.defaultView.getComputedStyle){var = d=3Dc.defaultView.getComputedStyle(a,"");if(d)return d[b]}return j};=0A= var Cb=3Dfunction(a){return = Bb(a,"position")||(a.currentStyle?a.currentStyle.position:j)||a.style.pos= ition},Db=3Dfunction(a){var = b;b=3Da?a.nodeType=3D=3D9?a:nb(a):mb().X();if(y&&b.compatMode!=3D"CSS1Com= pat")return b.body;return b.documentElement},Eb=3Dfunction(a){var = b=3Da.getBoundingClientRect();if(y){var = c=3Da.ownerDocument;b.left-=3Dc.documentElement.clientLeft+c.body.clientL= eft;b.top-=3Dc.documentElement.clientTop+c.body.clientTop}return = b},Fb=3Dfunction(a){var = b=3Dnb(a),c=3Djb&&b.getBoxObjectFor&&Cb(a)=3D=3D"absolute"&&(a.style.top=3D= =3D=0A= ""||a.style.left=3D=3D"");if(typeof = Ab=3D=3D"undefined")Ab=3DUa&&!A("1.8.0.11");var d=3Dnew = Fa(0,0),e=3DDb(b);if(a=3D=3De)return d;var = f=3Dj,g;if(a.getBoundingClientRect&&!c){g=3DEb(a);var = i=3Dob(b).wa();d.x=3Dg.left+i.x;d.y=3Dg.top+i.y}else = if(b.getBoxObjectFor&&!c&&!Ab){g=3Db.getBoxObjectFor(a);var = k=3Db.getBoxObjectFor(e);d.x=3Dg.screenX-k.screenX;d.y=3Dg.screenY-k.scre= enY}else{f=3Da;do{d.x+=3Df.offsetLeft;d.y+=3Df.offsetTop;if(f!=3Da){d.x+=3D= f.clientLeft||0;d.y+=3Df.clientTop||0}if(z&&Cb(f)=3D=3D"fixed"){d.x+=3Db.= body.scrollLeft;d.y+=3Db.body.scrollTop;=0A= break}f=3Df.offsetParent}while(f&&f!=3Da);if(db||z&&Cb(a)=3D=3D"absolute"= )d.y-=3Db.body.offsetTop;f=3Da.offsetParent;while(f&&f!=3Db.body){d.x-=3D= f.scrollLeft;if(!db||f.tagName!=3D"TR")d.y-=3Df.scrollTop;f=3Df.offsetPar= ent}}if(jb&&a.getBoundingClientRect){var = l=3DCb(a);if(l=3D=3D"static"||l=3D=3D"relative"){d.x=3DMath.floor(d.x);d.= y=3DMath.floor(d.y)}}return d},Gb=3Dfunction(a){var b=3Dnew = Fa;if(a.nodeType=3D=3D1)if(a.getBoundingClientRect){var = c=3DEb(a);b.x=3Dc.left;b.y=3Dc.top}else{var = d=3Dob(a).wa(),e=3DFb(a);b.x=3De.x-d.x;b.y=3De.y-d.y}else{b.x=3Da.clientX= ;=0A= b.y=3Da.clientY}return b},Hb=3Dfunction(a){var = b=3Dnb(a),c=3D"";if(b.createTextRange){var = d=3Db.body.createTextRange();d.moveToElementText(a);c=3Dd.queryCommandVal= ue("FontName")}if(!c){c=3DBb(a,"fontFamily")||(a.currentStyle?a.currentSt= yle.fontFamily:j)||a.style.fontFamily;if(db&&ab)c=3Dc.replace(/ = \[[^\]]*\]/,"")}var e=3Dc.split(",");if(e.length>1)c=3De[0];return = Oa(c,"\"'")};var Ib=3Ddocument,C=3Dnavigator,D=3Dwindow;=0A= function Jb(){var a=3DIb.cookie,b=3DMath.round((new = Date).getTime()/1000),c=3DD.google_analytics_domain_name,d=3Dtypeof = c=3D=3D"undefined"?Kb("auto"):Kb(c),e=3Da.indexOf("__utma=3D"+d+".")>-1,f= =3Da.indexOf("__utmb=3D"+d)>-1,g=3Da.indexOf("__utmc=3D"+d)>-1,i,k=3D{};i= f(e){i=3Da.split("__utma=3D"+d+".")[1].split(";")[0].split(".");k.sid=3Df= &&g?i[3]+"":D&&D.gaGlobal&&D.gaGlobal.sid?D.gaGlobal.sid:b+"";k.vid=3Di[0= ]+"."+i[1];k.from_cookie=3Dm}else{k.sid=3DD&&D.gaGlobal&&D.gaGlobal.sid?D= .gaGlobal.sid:b+"";k.vid=3DD&&D.gaGlobal&&D.gaGlobal.vid?=0A= D.gaGlobal.vid:(Lb()^Mb()&2147483647)+"."+b;k.from_cookie=3Dh}k.dh=3Dd;k.= hid=3DD&&D.gaGlobal&&D.gaGlobal.hid?D.gaGlobal.hid:Lb();return = D.gaGlobal=3Dk}function Lb(){return Math.round(Math.random()*2147483647)}=0A= function Mb(){var = a=3DIb.cookie?Ib.cookie:"",b=3DD.history.length,c,d,e=3D[C.appName,C.vers= ion,C.language?C.language:C.browserLanguage,C.platform,C.userAgent,C.java= Enabled()?1:0].join("");if(D.screen)e+=3DD.screen.width+"x"+D.screen.heig= ht+D.screen.colorDepth;else = if(D.java){d=3Djava.awt.Toolkit.getDefaultToolkit().getScreenSize();e+=3D= d.screen.width+"x"+d.screen.height}e+=3Da;e+=3DIb.referrer?Ib.referrer:""= ;c=3De.length;while(b>0)e+=3Db--^c++;return Nb(e)}=0A= function Nb(a){var = b=3D1,c=3D0,d,e;if(!(a=3D=3Dundefined||a=3D=3D"")){b=3D0;for(d=3Da.length= -1;d>=3D0;d--){e=3Da.charCodeAt(d);b=3D(b<<6&268435455)+e+(e<<14);c=3Db&2= 66338304;b=3Dc!=3D0?b^c>>21:b}}return b}function = Kb(a){if(!a||a=3D=3D""||a=3D=3D"none")return = 1;if("auto"=3D=3Da){a=3DIb.domain;if("www."=3D=3Da.substring(0,4))a=3Da.s= ubstring(4,a.length)}return Nb(a.toLowerCase())};var = E=3Dfunction(){};E.prototype.va=3Dh;E.prototype.dispose=3Dfunction(){if(!= this.va){this.va=3Dm;this.b()}};E.prototype.b=3Dfunction(){};var = Ob=3Dfunction(a){if(/^\s*$/.test(a))return h;var = b=3D/\\["\\\/bfnrtu]/g,c=3D/"[^"\\\n\r\u2028\u2029\x00-\x1f\x7f-\x9f]*"|t= rue|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,d=3D/(?:^|:|,)(?:[\s\u= 2028\u2029]*\[)+/g,e=3D/^[\],:{}\s\u2028\u2029]*$/;return = e.test(a.replace(b,"@").replace(c,"]").replace(d,""))},Pb=3Dfunction(a){S= tring(a);if(Ob(a))try{return eval("("+a+")")}catch(b){}throw = Error("Invalid JSON string: "+a);},Qb=3Dj,Rb=3Dfunction(a){Qb||(Qb=3Dnew = F);return Qb.serialize(a)},F=3Dfunction(){};=0A= F.prototype.serialize=3Dfunction(a){var b=3D[];this.fa(a,b);return = b.join("")};F.prototype.fa=3Dfunction(a,b){switch(typeof a){case = "string":this.Ha(a,b);break;case "number":this.Cb(a,b);break;case = "boolean":b.push(a);break;case "undefined":b.push("null");break;case = "object":if(a=3D=3Dj){b.push("null");break}if(t(a)=3D=3D"array"){this.Bb(= a,b);break}this.Db(a,b);break;case "function":break;default:throw = Error("Unknown type: "+typeof a);}};=0A= var = Sb=3D{'"':'\\"',"\\":"\\\\","/":"\\/","\u0008":"\\b","\u000c":"\\f","\n":= "\\n","\r":"\\r","\t":"\\t","\u000b":"\\u000b"};F.prototype.Ha=3Dfunction= (a,b){b.push('"',a.replace(/[\\\"\x00-\x1f\x80-\uffff]/g,function(c){if(c= in Sb)return Sb[c];var = d=3Dc.charCodeAt(0),e=3D"\\u";if(d<16)e+=3D"000";else = if(d<256)e+=3D"00";else if(d<4096)e+=3D"0";return = Sb[c]=3De+d.toString(16)}),'"')};F.prototype.Cb=3Dfunction(a,b){b.push(is= Finite(a)&&!isNaN(a)?a:"null")};=0A= F.prototype.Bb=3Dfunction(a,b){var c=3Da.length;b.push("[");var = d=3D"";for(var = e=3D0;e0)e+=3Dc.charAt(Math.floor(Math.random()*d));return = e},Tb=3D"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";= var I=3Dfunction(){};v(I,E);I.prototype.f=3D0;var = J=3Dfunction(a){this.a=3Da;this.P=3D[];this.Qb=3Du(this.$a,this)};v(J,I);= J.prototype.f=3D2;J.prototype.ba=3Dh;J.prototype.Eb=3D0;J.prototype.conne= ct=3Dfunction(){if(this.a.s()=3D=3D0){this.l=3Dthis.a.t;this.l.XPC_toOute= r=3Du(this.ya,this)}else this.ma()};=0A= J.prototype.ma=3Dfunction(){var = a=3Dm;try{if(!this.l)this.l=3Dwindow.frameElement;if(this.l&&this.l.XPC_t= oOuter){this.Ca=3Dthis.l.XPC_toOuter;this.l.XPC_toOuter.XPC_toInner=3Du(t= his.ya,this);a=3Dh;this.send("tp",G);this.a.m()}}catch(b){}if(a){if(!this= .Ma)this.Ma=3Du(this.ma,this);window.setTimeout(this.Ma,100)}};J.prototyp= e.H=3Dfunction(a){if(this.a.s()=3D=3D0&&!this.a.g()&&a=3D=3DG){this.Ca=3D= this.l.XPC_toOuter.XPC_toInner;this.a.m()}else throw Error("Got = unexpected transport message.");};=0A= J.prototype.ya=3Dfunction(a,b){if(!this.ba&&this.P.length=3D=3D0)this.a.j= (a,b);else{this.P.push({serviceName:a,payload:b});if(this.P.length=3D=3D1= )this.Eb=3Dwindow.setTimeout(this.Qb,1)}};J.prototype.$a=3Dfunction(){whi= le(this.P.length){var = a=3Dthis.P.shift();this.a.j(a.serviceName,a.payload)}};J.prototype.send=3D= function(a,b){this.ba=3Dm;this.Ca(a,b);this.ba=3Dh};J.prototype.b=3Dfunct= ion(){J.p.b.call(this);this.l=3Dthis.Ca=3Dj};var = K=3Dfunction(a){this.a=3Da;this.Q=3Dthis.a.c.ppu;this.Sb=3Dthis.a.c.lpu;t= his.da=3D[]},Vb,Wb;v(K,I);K.prototype.f=3D4;K.prototype.ea=3D0;K.prototyp= e.w=3Dh;K.prototype.Y=3Dh;var = Xb=3D"googlexpc";K.prototype.M=3Dfunction(){return = Xb+"_"+this.a.name+"_msg"};K.prototype.L=3Dfunction(){return = Xb+"_"+this.a.name+"_ack"};K.prototype.connect=3Dfunction(){if(!this.Y){t= his.Sa();this.Y=3Dm}this.Oa()};K.prototype.Sa=3Dfunction(){var = a=3Dthis.M();this.D=3Dthis.U(a);this.Aa=3Dwindow.frames[a];a=3Dthis.L();t= his.z=3Dthis.U(a);this.ia=3Dwindow.frames[a]};=0A= K.prototype.U=3Dfunction(a){var = b=3Dmb().createElement("iframe"),c=3Db.style;c.position=3D"absolute";c.to= p=3D"-10px";c.left=3D"10px";c.width=3D"1px";c.height=3D"1px";b.id=3Db.nam= e=3Da;b.src=3Dthis.Q+"#INITIAL";document.body.appendChild(b);return = b};K.prototype.la=3Dfunction(){var = a=3Dthis.a.h.frames,b=3Da.length;for(var c=3D0;cthis.ob)throw = Error("[goog.structs.SimplePool] Initial cannot be greater than = max");for(var b=3D0;b=3D0;p--){k.currentTarget=3Dl[p];f&=3DAc(l[p],d,m,= k)}for(var p=3D0;!k.F&&=0A= p=3Dc){var = d=3DDc.shift().iframeElement;vb(d)}Ec=3Dwindow.setTimeout(Gc,1000)},Gc=3D= function(){Fc()}}R.prototype.f=3D3;R.prototype.connect=3Dfunction(){this.= send("tp","SETUP")};R.prototype.H=3Dfunction(a){if(a=3D=3D"SETUP"){this.s= end("tp",G);this.a.m()}else a=3D=3DG&&this.a.m()};=0A= R.prototype.send=3Dfunction(a,b){if(y){var = c=3Ddocument.createElement("div");c.innerHTML=3D'';var = d=3Dc.childNodes[0];d.xpcOnload=3DHc}else{var = d=3Ddocument.createElement("iframe");z?Dc.push({timestamp:za(),iframeElem= ent:d}):tc(d,"load",Hc)}var = e=3Dd.style;e.visibility=3D"hidden";e.width=3Dd.style.height=3D"0px";e.po= sition=3D"absolute";var = f=3Dthis.Rb;f+=3D"#"+this.a.name;if(this.sb)f+=3D","+this.sb;f+=3D"|"+a+"= :"+encodeURIComponent(b);d.src=3Df;document.body.appendChild(d)};=0A= var = Hc=3Dfunction(){vb(this);this.xpcOnload=3Dj};window.xpcRelay=3Dfunction(a= ,b){var = c=3Db.indexOf(":"),d=3Db.substring(0,c),e=3Db.substring(c+1);H[a].j(d,dec= odeURIComponent(e))};R.prototype.b=3Dfunction(){R.p.b.call(this);z&&Fc(0)= };var = S=3Dfunction(a,b){this.a=3Da;this.aa=3Db||"*"};v(S,I);S.prototype.f=3D1;v= ar = Ic=3Dh,Kc=3Dfunction(){if(!Ic){tc(window.postMessage?window:document,"mes= sage",Jc,h,S);Ic=3Dm}},Jc=3Dfunction(a){var = b=3Da.fb().data,c=3Db.indexOf("|"),d=3Db.indexOf(":");if(c=3D=3D-1||d=3D=3D= -1)return h;var = e=3Db.substring(0,c),f=3Db.substring(c+1,d),g=3Db.substring(d+1),i=3DH[e]= ;if(i){i.j(f,g);return m}for(var k in H){var = l=3DH[k];if(l.s()=3D=3D1&&!l.g()&&f=3D=3D"tp"&&g=3D=3D"SETUP"){l.name=3De= ;H[e]=3Dl;H[k]=3Dj;l.j(f,g);return m}}return h};=0A= S.prototype.H=3Dfunction(a){switch(a){case = "SETUP":if(!this.Vb){this.Vb=3Dm;this.send("tp",G)}break;case = G:this.a.m();break}};S.prototype.connect=3Dfunction(){Kc();this.T()};S.pr= ototype.T=3Dfunction(){if(!this.a.g()){this.send("tp","SETUP");window.set= Timeout(u(this.T,this),100)}};S.prototype.send=3Dfunction(a,b){var = c=3Dthis.a.h;if(!!c){var = d=3Dc.postMessage?c:c.document;this.send=3Dfunction(e,f){d.postMessage(th= is.a.name+"|"+e+":"+f,this.aa)};this.send(a,b)}};=0A= S.prototype.b=3Dfunction(){S.p.b.call(this);vc(window.postMessage?window:= document,"message",Jc,h,S)};var = T=3Dfunction(a){this.a=3Da;this.Na=3Da.at||"";this.yb=3Da.rat||"";Lc();th= is[Mc]=3Dthis.N;this[Nc]=3Dthis.Ta};v(T,I);=0A= var = Oc=3D"GRPC____NIXVBS_wrapper",Pc=3D"GRPC____NIXVBS_get_wrapper",Mc=3D"GRP= C____NIXJS_handle_message",Nc=3D"GRPC____NIXJS_create_channel",Qc=3D"GRPC= ____NIXVBS_container",Lc=3Dfunction(){if(!window.nix_setup_complete){var = a=3D"Class "+Oc+"\n Private m_Transport\nPrivate m_Auth\nPublic Sub = SetTransport(transport)\nIf isEmpty(m_Transport) Then\nSet m_Transport = =3D transport\nEnd If\nEnd Sub\nPublic Sub SetAuth(auth)\nIf = isEmpty(m_Auth) Then\nm_Auth =3D auth\nEnd If\nEnd Sub\nPublic Function = GetAuthToken()\n GetAuthToken =3D m_Auth\nEnd Function\nPublic Sub = SendMessage(service, payload)\n Call m_Transport."+Mc+=0A= "(service, payload)\nEnd Sub\nPublic Sub CreateChannel(channel)\n Call = m_Transport."+Nc+"(channel)\nEnd Sub\nPublic Sub "+Qc+"()\n End Sub\nEnd = Class\n Function "+Pc+"(transport, auth)\nDim wrap\nSet wrap =3D New = "+Oc+"\nwrap.SetTransport transport\nwrap.SetAuth auth\nSet "+Pc+" =3D = wrap\nEnd = Function";try{window.execScript(a,"vbscript");window.nix_setup_complete=3D= m}catch(b){}}};T.prototype.f=3D6;T.prototype.u=3Dh;T.prototype.o=3Dj;T.pr= ototype.connect=3Dfunction(){this.a.s()=3D=3D0?this.ka():this.ja()};=0A= T.prototype.ka=3Dfunction(){if(!this.u){var = a=3Dthis.a.t;try{a.contentWindow.opener=3Dwindow[Pc](this,this.Na);this.u= =3Dm}catch(b){}this.u||window.setTimeout(u(this.ka,this),100)}};T.prototy= pe.ja=3Dfunction(){if(!this.u){try{var a=3Dwindow.opener;if(a&&Qc in = a){this.o=3Da;var = b=3Dthis.o.GetAuthToken();if(b!=3Dthis.yb)return;this.o.CreateChannel(win= dow[Pc](this,this.Na));this.u=3Dm;this.a.m()}}catch(c){return}this.u||win= dow.setTimeout(u(this.ja,this),100)}};=0A= T.prototype.Ta=3Dfunction(a){this.o=3Da;var = b=3Dthis.o.GetAuthToken();b!=3Dthis.yb||this.a.m()};T.prototype.N=3Dfunct= ion(a,b){function = c(){this.a.j(a,b)}window.setTimeout(u(c,this),1)};T.prototype.send=3Dfunc= tion(a,b){this.o.SendMessage(a,b)};T.prototype.b=3Dfunction(){T.p.b.call(= this);this.o=3Dj};var = U=3Dfunction(a){E.call(this);this.c=3Da;this.name=3Dthis.c.cn||Ub(10);thi= s.Ia=3D{};H[this.name]=3Dthis;tc(window,"unload",Rc)};v(U,E);U.prototype.= d=3Dj;U.prototype.ga=3D1;U.prototype.g=3Dfunction(){return = this.ga=3D=3D2};U.prototype.h=3Dj;U.prototype.t=3Dj;U.prototype.Ka=3Dfunc= tion(a){this.h=3Da};=0A= U.prototype.Wa=3Dfunction(){if(!this.d){if(!this.c.tp)if(ta(document.post= Message)||ta(window.postMessage))this.c.tp=3D1;else = if(jb)this.c.tp=3D2;else if(y&&this.c.pru)this.c.tp=3D3;else = if(y)this.c.tp=3D6;else = if(this.c.lpu&&this.c.ppu)this.c.tp=3D4;switch(this.c.tp){case = 1:this.d=3Dnew S(this,this.c.ph);break;case 6:this.d=3Dnew = T(this);break;case 2:this.d=3Dnew J(this);break;case 3:this.d=3Dnew = R(this);break;case 4:this.d=3Dnew K(this);break}if(!this.d)throw = Error("CrossPageChannel: No suitable transport found!");}};=0A= U.prototype.Za=3Dh;U.prototype.Ra=3Dh;U.prototype.connect=3Dfunction(a){t= his.Ob=3Da;if(this.Za)this.Ra=3Dm;else{if(this.c.ifrid)this.t=3Dsa(this.c= .ifrid)?document.getElementById(this.c.ifrid):this.c.ifrid;if(this.t){var= = b=3Dthis.t.contentWindow;b||(b=3Dwindow.frames[this.c.ifrid]);this.Ka(b)}= if(!this.h)if(window=3D=3Dtop)throw Error("CrossPageChannel: Can't = connect, peer window-object not set.");else = this.Ka(window.parent);this.Wa();this.d.connect()}};=0A= U.prototype.close=3Dfunction(){if(!!this.g()){this.ga=3D3;this.d.dispose(= );this.d=3Dj}};U.prototype.m=3Dfunction(){if(!this.g()){this.ga=3D2;this.= Ob()}};U.prototype.rb=3Dfunction(){this.close()};U.prototype.xb=3Dfunctio= n(a,b,c){this.Ia[a]=3D{name:a,callback:b,jsonEncoded:!!c}};U.prototype.se= nd=3Dfunction(a,b){if(!!this.g())if(this.h.closed)this.close();else{if(ua= (b))b=3DRb(b);this.d.send(a,b)}};U.prototype.j=3Dfunction(a,b){if(!a||a=3D= =3D"tp")this.d.H(b);else if(this.g()){var = c=3Dthis.Ia[a];if(c){if(c.jsonEncoded)try{b=3DPb(b)}catch(d){return}c.cal= lback(b)}}};=0A= U.prototype.s=3Dfunction(){return = window.parent=3D=3Dthis.h?1:0};U.prototype.b=3Dfunction(){U.p.b.call(this= );this.close();this.t=3Dthis.h=3Dj;delete this.Ia;H[this.name]=3Dj};var = Rc=3Dfunction(){for(var a in H){var b=3DH[a];b&&b.dispose()}};var = Sc=3Dfunction(a){var = b=3Da||document.location.protocol+"//"+document.location.host;return = b+"/robots.txt"};var = V=3Dfunction(a,b){this.B=3Da.width;this.A=3Da.height;this.Nb=3Db;this.aa=3D= this.hb(a.src,document);this.Z=3Dh;this.e=3Da;this.nb(this.jb())};V.proto= type.jb=3Dfunction(){var = a=3D{};a.ifrid=3Dthis.e.id;a.pu=3Dthis.e.src;a.ph=3Dthis.aa;a.cn=3Dthis.N= b;a.ppu=3DSc(this.aa);a.lpu=3DSc();return = a};V.prototype.nb=3Dfunction(a){this.a=3Dnew = U(a);this.a.xb("expandable_ad",u(this.N,this));this.a.connect(function(){= });window.setTimeout(u(this.lb,this),30000)};=0A= V.prototype.lb=3Dfunction(){if(this.a&&!this.a.g()){this.a.d.connect=3Dfu= nction(){};if(this.a.d.f=3D=3D1)this.a.d.T=3Dfunction(){};if(this.a.d.f=3D= =3D4)this.a.d.la=3Dfunction(){};this.a.d.dispose();this.a.dispose()}};V.p= rototype.hb=3Dfunction(a,b){var = c=3Da.indexOf("//"),d=3Dc>0,e=3Dd?a.substring(0,c):b.location.protocol,f=3D= d?a.substring(c+2):b.location.host,g=3Df.indexOf("/");if(g<0)g=3Df.indexO= f("?");if(d&&g>0)f=3Df.substring(0,g);return e+"//"+f};=0A= V.prototype.N=3Dfunction(a){var = b=3Da.split("_"),c=3Db[0];if(c=3D=3D"expand")this.mb(b);else = c=3D=3D"collapse"&&this.kb()};V.prototype.Fa=3Dfunction(a){this.a.send("e= xpandable_ad",a)};V.prototype.mb=3Dfunction(a){if(!this.Z){var = b,c;for(var d in a){var = e=3Da[d].charAt(0);if(e=3D=3D"w")b=3DparseInt(a[d].substring(1),10);else = if(e=3D=3D"h")c=3DparseInt(a[d].substring(1),10)}var = f=3Dthis.ab(b,c);this.cb(b,c,f);this.Fa("ok_expand_w"+b+"_h"+c+"_d"+f)}};=0A= V.prototype.kb=3Dfunction(){if(!!this.Z){this.Qa();this.Fa("ok_collapse_w= "+this.B+"_h"+this.A)}};V.prototype.Qa=3Dfunction(){this.e.style.width=3D= this.B+"px";this.e.style.height=3Dthis.A+"px";this.e.style.left=3D"0";thi= s.e.style.top=3D"0";this.e.style.zIndex=3Dj;this.e.parentNode.style.zInde= x=3Dj;this.Z=3Dh};=0A= V.prototype.cb=3Dfunction(a,b,c){this.e.style.position=3D"absolute";this.= e.style.width=3Da+"px";this.e.style.height=3Db+"px";this.e.style.zIndex=3D= 9999;this.e.parentNode.style.zIndex=3D9999;if(a>this.B&&(c=3D=3D0||c=3D=3D= 3))this.e.style.left=3D"-"+(a-this.B)+"px";if(b>this.A&&(c=3D=3D1||c=3D=3D= 0))this.e.style.top=3D"-"+(b-this.A)+"px";this.Z=3Dm};=0A= V.prototype.ab=3Dfunction(a,b){var = c=3DGb(this.e),d=3Dtb(window),e=3Da-this.B,f=3Db-this.A,g=3Dc.y,i=3Df>g,k= =3Dd.height-(c.y+this.A),l=3Di||k>=3Dg,o=3Dc.x,p=3De>o,q=3Dd.width-(c.x+t= his.B),x=3Dp||q>=3Do,M=3D0;if(l&&x)M=3D2;else if(l&&!x)M=3D3;else = if(!l&&x)M=3D1;else if(!l&&!x)M=3D0;return M};=0A= var = Tc=3Dfunction(){},Wc=3Dfunction(a,b,c,d,e){if(!a||!b||c<=3D0||d<=3D0)retu= rn j;var f=3DUb(10);b=3DUc(b,c,d,f);var g=3DVc(a,b,c,d,e);return new = V(g,f)},Uc=3Dfunction(a,b,c,d){var e=3Dmb().X();return = a+(a.indexOf("?")=3D=3D-1?"?":"&")+"w=3D"+b+"&h=3D"+c+"&xpc=3D"+d+"&p=3D"= +escape(e.location.protocol+"//"+e.location.host)},Vc=3Dfunction(a,b,c,d,= e){var f=3D'",g=3Dob(),i=3Dg.xa(e);if(i)i.innerHTML=3Df;= else g.X().write(f);return = g.xa(a)};Aa("ExpandableAdSlot",V);Aa("ExpandableAdSlotFactory",Tc);var = W=3D"",Xc=3Dh;function Yc(a){return a!=3Dj?'"'+a+'"':'""'}function = ha(a){return typeof = encodeURIComponent=3D=3D"function"?encodeURIComponent(a):escape(a)}functi= on X(a,b){if(a&&b)window.google_ad_url+=3D"&"+a+"=3D"+b}function = Y(a){var b=3Dwindow,c=3Dba[a]||ca[a]||j,d=3Db[a];X(c,d)}function = Z(a,b){b!=3Dj&&X(a,ha(b))}function $(a){var = b=3Dwindow,c=3Dba[a]||ca[a]||j,d=3Db[a];Z(c,d)}function Zc(a,b){var = c=3Dwindow,d=3Dba[a]||ca[a]||j,e=3Dc[a];if(d&&e&&typeof = e=3D=3D"object")e=3De[b%e.length];X(d,e)}=0A= function $c(a){var b=3Da.screen,c=3Dnavigator.javaEnabled(),d=3D-(new = Date).getTimezoneOffset();if(b){X("u_h",b.height);X("u_w",b.width);X("u_a= h",b.availHeight);X("u_aw",b.availWidth);X("u_cd",b.colorDepth)}X("u_tz",= d);X("u_his",history.length);X("u_java",c);navigator.plugins&&X("u_nplug"= ,navigator.plugins.length);navigator.mimeTypes&&X("u_nmime",navigator.mim= eTypes.length)}=0A= function = ad(a){if(!!a.google_enable_first_party_cookie){if(n=3D=3Dj)n=3Dnew = da;if(a._GA_googleCookieHelper=3D=3Dj)a._GA_googleCookieHelper=3Dnew = r;if(!a._google_cookie_fetched){a._google_cookie_fetched=3Dm;a._GA_google= CookieHelper.db(bd(a.google_ad_client))}}}function = bd(a){if(a){a=3Da.toLowerCase();if(a.substring(0,3)!=3D"ca-")a=3D"ca-"+a}= return a}function = cd(a){if(a){a=3Da.toLowerCase();if(a.substring(0,9)!=3D"dist-aff-")a=3D"d= ist-aff-"+a}return a}=0A= function dd(a){var b=3D"google_unique_id";if(a[b])++a[b];else = a[b]=3D1;return a[b]}function ed(){var = a=3Dy&&A("6")&&!A("8"),b=3Djb&&A("1.8.1"),c=3Dz&&A("525");if($a&&(a||b||c= ))return m;else if(Za&&(c||b))return m;else if(ab&&b)return m;return h}=0A= function fd(a,b){var = c=3Da.google_allow_expandable_ads;if(c!=3Dj&&c=3D=3Dh||!b.body||a.google_= ad_output!=3D"html"||gd(a,b)||hd(a)||id(a.google_ad_format)||typeof = a.google_ad_height!=3D"number"&&String(parseInt(a.google_ad_height,10))!=3D= a.google_ad_height||typeof = a.google_ad_width!=3D"number"&&String(parseInt(a.google_ad_width,10))!=3D= a.google_ad_width||!ed())return h;return m}=0A= function jd(){var = a=3DMath.random(),b=3D0,c=3Dia("0.03",0.03),d=3D2*c;if(a");else = if(a.google_ad_output=3D=3D"html")if(b.body&&(a.google_expandable_iframe|= |W.indexOf("30143020")!=3D-1)){var = g=3Da.google_container_id||d||j;a["google_expandable_ad_slot"+e]=3DWc("go= ogle_ads_frame"+e,pd(c),parseInt(a.google_ad_width,=0A= 10),parseInt(a.google_ad_height,10),g)}else{var i=3D'';if(Xc&&W.indexOf("30143022")!=3D-1)i=3D''+=0A= i+"";a.google_container_id?qd(a.google_container_id,b,i):b.write(i)= }else a.google_ad_output=3D=3D"textlink"&&b.write("<"+f+' = language=3D"JavaScript1.1" src=3D'+Yc(pd(c))+">");if(md){var = k=3Drd(a)+"/pagead/gen_204?id=3Difjs2&token=3D"+a.google_correlator+"&out= put=3D"+ha(a.google_ad_output)+"&url=3D"+ha(a.google_page_url);nd(a,k)}}=0A= function sd(a){for(var b in ba)a[b]=3Dj;for(var b in = ca)b=3D=3D"google_correlator"||(a[b]=3Dj);a.google_allow_expandable_ads=3D= j;a.google_container_id=3Dj;a.google_expandable_iframe=3Dj;a.googlen_tag_= js_version=3Dj}function hd(a){if(a.google_ad_format)return = a.google_ad_format.indexOf("_0ads")>0;return = a.google_ad_output!=3D"html"&&a.google_num_radlinks>0}function = id(a){return a&&a.indexOf("_sdo")!=3D-1}=0A= function td(a){var = b=3Dj,c=3Dwindow,d=3Ddocument,e=3Daa,f=3Dc.google_ad_format,g=3Drd(c),i;i= f(c.google_cpa_choice!=3Db){c.google_ad_url=3Dg+"/cpa/ads?";i=3Descape(bd= (c.google_ad_client));c.google_ad_region=3D"_google_cpa_region_";Y("googl= e_cpa_choice");if(typeof = d.characterSet!=3D"undefined")Z("oe",d.characterSet);else typeof = d.charset!=3D"undefined"&&Z("oe",d.charset)}else = if(id(f)){c.google_ad_url=3Dg+"/pagead/sdo?";i=3Descape(cd(c.google_ad_cl= ient))}else{c.google_ad_url=3Dg+"/pagead/ads?";i=3Descape(bd(c.google_ad_= client))}c.google_ad_url+=3D=0A= "client=3D"+i;Y("google_ad_host");Y("google_ad_host_tier_id");var = k=3Dc.google_num_slots_by_client,l=3Dc.google_num_slots_by_channel,o=3Dc.= google_prev_ad_formats_by_region,p=3Dc.google_prev_ad_slotnames_by_region= ;if(c.google_ad_region=3D=3Db&&c.google_ad_section!=3Db)c.google_ad_regio= n=3Dc.google_ad_section;var = q=3Dc.google_ad_region=3D=3Db?"":c.google_ad_region;if(id(f)){c.google_nu= m_sdo_slots=3Dc.google_num_sdo_slots?c.google_num_sdo_slots+1:1;if(c.goog= le_num_sdo_slots>4)return h}else = if(hd(c)){c.google_num_0ad_slots=3Dc.google_num_0ad_slots?=0A= c.google_num_0ad_slots+1:1;if(c.google_num_0ad_slots>3)return h}else = if(c.google_cpa_choice=3D=3Db){c.google_num_ad_slots=3Dc.google_num_ad_sl= ots?c.google_num_ad_slots+1:1;if(c.google_num_slots_to_rotate){o[q]=3Db;p= [q]=3Db;if(c.google_num_slot_to_show=3D=3Db)c.google_num_slot_to_show=3De= %c.google_num_slots_to_rotate+1;if(c.google_num_slot_to_show!=3Dc.google_= num_ad_slots)return h}else if(c.google_num_ad_slots>6&&q=3D=3D"")return = h}X("dt",aa);Y("google_language");c.google_country?Y("google_country"):Y(= "google_gl");Y("google_region");=0A= $("google_city");$("google_hints");Y("google_safe");Y("google_encoding");= Y("google_last_modified_time");$("google_alternate_ad_url");Y("google_alt= ernate_color");Y("google_skip");Y("google_targeting");var = x=3Dc.google_ad_client;if(k[x])k[x]+=3D1;else{k[x]=3D1;k.length+=3D1}if(o= [q])if(!id(f)){Z("prev_fmts",o[q].toLowerCase());k.length>1&&X("slot",k[x= ])}p[q]&&Z("prev_slotnames",p[q].toLowerCase());if(f&&!c.google_ad_slot){= Z("format",f.toLowerCase());id(f)||(o[q]=3Do[q]?o[q]+","+f:f)}if(c.google= _ad_slot)p[q]=3Dp[q]?=0A= p[q]+","+c.google_ad_slot:c.google_ad_slot;Y("google_max_num_ads");X("out= put",c.google_ad_output);Y("google_adtest");Y("google_ad_callback");Y("go= ogle_ad_slot");$("google_correlator");c.google_new_domain_checked=3D=3D1&= &c.google_new_domain_enabled=3D=3D0&&X("dblk",1);if(c.google_ad_channel){= $("google_ad_channel");var = M=3D"",jc=3Dc.google_ad_channel.split(ud);for(var = eb=3D0;eb-1){for(var f=3D0;f");d=3Dqb(e)}}var = f=3Dtd(d);d&&vb(d);if(!!f){od(a,b,a.google_ad_url);sd(a)}}function = pd(a){var b=3D(new = Date).getTime()-aa,c=3D"&dtd=3D"+(b<1000?b:"M");return a+c}function = xd(){wd();return m}=0A= function gd(a,b){if(a.top.location=3D=3Db.location)return h;var = c=3Db.documentElement;if(a.google_ad_width&&a.google_ad_height){var = d=3D1,e=3D1;if(a.innerHeight){d=3Da.innerWidth;e=3Da.innerHeight}else = if(c&&c.clientHeight){d=3Dc.clientWidth;e=3Dc.clientHeight}else = if(b.body){d=3Db.body.clientWidth;e=3Db.body.clientHeight}if(e>2*a.google= _ad_height||d>2*a.google_ad_width)return h}return m}=0A= function yd(a){var = b=3Dwindow,c=3Dj,d=3Db.onerror;b.onerror=3Da;if(b.google_ad_frameborder=3D= =3Dc)b.google_ad_frameborder=3D0;if(b.google_ad_output=3D=3Dc)b.google_ad= _output=3D"html";if(id(b.google_ad_format)){var = e=3Db.google_ad_format.match(/^(\d+)x(\d+)_.*/);if(e){b.google_ad_width=3D= parseInt(e[1],10);b.google_ad_height=3DparseInt(e[2],10);b.google_ad_outp= ut=3D"html"}}if(b.google_ad_format=3D=3Dc&&b.google_ad_output=3D=3D"html"= )b.google_ad_format=3Db.google_ad_width+"x"+b.google_ad_height;zd(b,docum= ent);if(b.google_num_slots_by_channel=3D=3D=0A= c)b.google_num_slots_by_channel=3D[];if(b.google_viewed_host_channels=3D=3D= c)b.google_viewed_host_channels=3D[];if(b.google_num_slots_by_client=3D=3D= c)b.google_num_slots_by_client=3D[];if(b.google_prev_ad_formats_by_region= =3D=3Dc)b.google_prev_ad_formats_by_region=3D[];if(b.google_prev_ad_slotn= ames_by_region=3D=3Dc)b.google_prev_ad_slotnames_by_region=3D[];if(b.goog= le_correlator=3D=3Dc)b.google_correlator=3Daa;if(b.google_adslot_loaded=3D= =3Dc)b.google_adslot_loaded=3D{};if(b.google_adContentsBySlot=3D=3Dc)b.go= ogle_adContentsBySlot=3D{};if(b.google_flash_version=3D=3D=0A= c)b.google_flash_version=3Dja();if(b.google_new_domain_checked=3D=3Dc)b.g= oogle_new_domain_checked=3D0;if(b.google_new_domain_enabled=3D=3Dc)b.goog= le_new_domain_enabled=3D0;b.onerror=3Dd}function Ad(a){if(a in Bd)return = Bd[a];return = Bd[a]=3Dnavigator.userAgent.toLowerCase().indexOf(a)!=3D-1}var = Bd=3D{};function ka(){return Ad("msie")&&!window.opera}=0A= function Dd(a){var = b=3D{},c=3Da.split("?"),d=3Dc[c.length-1].split("&");for(var = e=3D0;e1?wind= ow.decodeURIComponent?decodeURIComponent(f[1].replace(/\+/g," = ")):unescape(f[1]):""}catch(g){}}return b}function Ed(){var = a=3Dwindow,b=3DDd(document.URL);if(b.google_ad_override){a.google_ad_over= ride=3Db.google_ad_override;a.google_adtest=3D"on"}}function = Fd(a,b){for(var c in b)a["google_"+c]=3Db[c]}=0A= function Gd(a,b){if(!b)return a.location;return a.referrer}function = Hd(a,b){if(!b&&a.google_referrer_url=3D=3Dj)return"0";else = if(b&&a.google_referrer_url=3D=3Dj)return"1";else = if(!b&&a.google_referrer_url!=3Dj)return"2";else = if(b&&a.google_referrer_url!=3Dj)return"3";return"4"}function = Id(a,b,c,d){a.page_url=3DGd(c,d);a.page_location=3Dj}function = Jd(a,b,c,d){a.page_url=3Db.google_page_url;a.page_location=3DGd(c,d)||"EM= PTY"}=0A= function Kd(a,b){var = c=3D{},d=3Dgd(a,b);c.iframing=3DHd(a,d);!!a.google_page_url?Jd(c,a,b,d):I= d(c,a,b,d);c.last_modified_time=3Db.location=3D=3Dc.page_url?Date.parse(b= .lastModified)/1000:j;c.referrer_url=3Dd?a.google_referrer_url:a.google_p= age_url&&a.google_referrer_url?a.google_referrer_url:b.referrer;return = c}function Ld(a){var = b=3D{},c=3Da.URL.substring(a.URL.lastIndexOf("http"));b.iframing=3Dj;b.pa= ge_url=3Dc;b.page_location=3Da.location;b.last_modified_time=3Dj;b.referr= er_url=3Dc;return b}=0A= function zd(a,b){var = c;c=3Da.google_page_url=3D=3Dj&&Md[b.domain]?Ld(b):Kd(a,b);Fd(a,c)}functi= on qd(a,b,c){if(a){var = d=3Db.getElementById(a);if(d&&c&&c.length!=3D""){d.style.visibility=3D"vi= sible";d.innerHTML=3Dc}}}var Md=3D{};Md["ad.yieldmanager.com"]=3Dm;var = ud=3D/[+, ]/;window.google_render_ad=3Dwd;var = Nd=3D{google:1,googlegroups:1,gmail:1,googlemail:1,orkut:1,googleimages:1= ,googleprint:1};function Od(a){var = b=3Da.google_page_location||a.google_page_url;if(!b)return = h;b=3Db.toString();if(b.indexOf("http://")=3D=3D0)b=3Db.substring(7,b.len= gth);else = if(b.indexOf("https://")=3D=3D0)b=3Db.substring(8,b.length);var = c=3Db.indexOf("/");if(c=3D=3D-1)c=3Db.length;var = d=3Db.substring(0,c),e=3Dd.split("."),f=3Dh;if(e.length>=3D3)f=3De[e.leng= th-3]in Nd;if(e.length>=3D2)f=3Df||e[e.length-2]in Nd;return f}=0A= function Pd(a,b,c){if(Od(a)){a.google_new_domain_checked=3D1;return = h}if(a.google_new_domain_checked=3D=3D0){var = d=3DMath.random();if(d<=3Dc){var = e=3D"http://googleads.g.doubleclick.net/pagead/test_domain.js",f=3D"scrip= t";b.write("<"+f+' = src=3D"'+e+'">");a.google_new_domain_checked=3D1;return = m}}return h}function rd(a){var = b=3D"http://googleads.g.doubleclick.net",c=3D"http://pagead2.googlesyndic= ation.com";if(!Od(a)&&a.google_new_domain_enabled=3D=3D1)return b;return = c};function Qd(a,b){var = c=3D"script",d=3DPd(a,b,ia("1",0.01));d&&ka()?b.write("<"+c+' = src=3D"http://pagead2.googlesyndication.com/pagead/render_ads.js">"):b.write("<"+c+">window.google_render_ad();")}Ed();yd(xd);Qd(w= indow,document);=0A= })()=0A= ------=_NextPart_000_0063_01C970AF.BCF12DC0 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= var sp =3D 0;=0A= for(var i=3D0;i=3D0;i++) { sp=3Dp+1; p =3D str.indexOf('.', sp); = }=0A= if(p>0) {=0A= var v =3D str.substring(sp, p).match(/\d+$/);=0A= return v ? 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=3D14;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'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 (e) {=0A= _rsCLCatchIt(e);=0A= _rsOld(e);=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>';=0A= document.write(_rsIM);=0A= }=0A= else {=0A= rsCi();=0A= }=0A= if(_rsCL=3D=3D1) {=0A= _rsCLRegisterIt();=0A= }=0A= ------=_NextPart_000_0063_01C970AF.BCF12DC0--