Friday, September 12, 2008

David y MacDonald's


Mi Blog sigue en estado de coma -no de comer, sino de suspensión- pero no resistí la tentación de publicar esta obra maestra: David después y antes de vivir un año en USA, con Big Macs, Coke y papas fritas.

Monday, August 4, 2008

CAMBIO DE BLOG

Una minitragedia informática destruyó este Blog en días pasados, por razones que ignoro. Algo pasó -a lo mejor fue un complot- que hizo trizas los textos acumulados y borró los mensajes que ustedes me envían, por lo que anuncio aquí la mudanza a otro Blog en los próximos días.

Por lo pronto, si quieres enviarme tus notas y observaciones sobre Diálogos Políticos remítelas a zapatafausto@hotmail.com y les daré respuesta inmediata.

Les confirmo, además, que este próximo viernes 8 serán mis invitados en Canal 34 los representantes en México de Barack Obama y John McCain. Estarán, por el Partido Demócrata, Susannah Glusker y Ralston Darlington y por el Partido Republicano Larry Rubin, a solas, pese a que le advertimos que enfrentará a dos aguerridos demócratas.

Nuestra entrevista será transmitida el viernes a las 22 horas por Canal 34, de Televisión Mexiquense y retransmitida el sábado 9 a partir de las 23 horas, vía Cablevisión y Sky. Espero sus opiniones y comentarios en lo que será para entonces mi nuevo Blog.

Sunday, July 27, 2008

La Indestructible Ingrid

El artículo de El País que quería mostrarles se "atoró" en el Blog -encontrarán enseguida lo que queda de él- pero las fotos se salvaron. Esta mujer es indestructible. La foto de la derecha corresponde a su cautiverio en la selva colombiana. La de la izquierda es Ingrid Betancourt en Paris: bella, sexy, combativa. Imparable, si se decide a regresar a Colombia y buscar la Presidencia.

Entre una foto y otra no median ni tres meses. Y entre su liberación y la foto en París la distancia es de semanas. Lean lo que sigue, publicado hoy en El País por Juan Jesús Aznares, que fue por años corresponsal en México. Habla el comandante guerrillero Raúl Reyes, abatido hace cinco meses:

"Esta señora es de temperamento volcánico, grosera y provocadora con los guerrilleros encargados de cuidarla". Pregunta el periodista a Ingrid: "¿Abusaron de usted sexualmente?". Respuesta: "Hay cosas que deben quedarse en la selva".

Ingrid es una fuerza de la naturaleza.

Saturday, July 26, 2008

Emailing: El huracán Ingrid sorprende al mundo

 
 

From: Subject: =?Windows-1252?Q?El_hurac=E1n_Ingrid_sorprende_al_mundo?= Date: Sat, 26 Jul 2008 18:04:04 -0500 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C8EF49.FDAEEDD0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C8EF49.FDAEEDD0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.elpais.com/articulo/internacional/huracan/Ingrid/sorprende/mundo/elpepuint/20080726elpepuint_7/Tes?print=1 glamour de Par=EDs, en los ambientes diplom=E1ticos que le = son propios desde sus a=F1os f=E1ciles y adolescentes en la residencia = de la calle Fox de sus padres: en el lujo si lo quisiera, entre el = refinamiento intelectual y las porcelanas chinas de la burgues=EDa = ilustrada. Aunque lejanamente, emparenta con la dinast=EDa Bettencourt, = una de las primeras fortunas de Francia y due=F1a del grupo de = cosm=E9ticos L'Or=E9al. Ahora, m=E1s de tres semanas despu=E9s de su = regreso a la vida, reflexiona sobre el futuro: "No s=E9 qu=E9 = har=E9; pero quiero ayudar"."=20 name=3DDescription>

Versi=F3n para=20 imprimir

 

El hurac=E1n Ingrid sorprende al mundo

Betancourt ha pasado de la selva a los Campos El=EDseos con un = 'glamour' que=20 los siete a=F1os de secuestro en manos de las FARC no le han robado. = Francia la=20 honra y se pone a sus pies

JUAN JES=DAS AZN=C1REZ 26/07/2008 =

Durante los frecuentes quebrantos emocionales del cautiverio, cuando = los=20 padecimientos y el desconsuelo hundieron su =E1nimo, Ingrid Betancourt = pens=F3 a=20 diario en el suicidio, seg=FAn propia confesi=F3n. La evocaci=F3n de su = madre y de sus=20 dos hijos, el convencimiento de que la necesitaban, impidieron que se = quitara la=20 vida en la prisi=F3n selv=E1tica de las Fuerzas Armadas Revolucionarias = de Colombia=20 (FARC), que la secuestr=F3 el 23 de febrero de 2002, cuando se adentr=F3 = imprudentemente en tierras de esa guerrilla. La impecable operaci=F3n = militar del=20 pasado 2 de julio la rescat=F3 del horror, junto a otros 13 = secuestrados. La=20 ma=F1ana de la liberaci=F3n, salt=F3 tan fuerte y tan alegremente en la = cubierta del=20 helic=F3ptero que la devolv=EDa a casa que la nave estuvo a punto de = capotar, seg=FAn=20 su festivo recordatorio. Ingrid, de 47 a=F1os, abandon=F3 la jungla y el = cuenco para=20 instalarse en el glamour de Par=EDs, en los ambientes = diplom=E1ticos que le=20 son propios desde sus a=F1os f=E1ciles y adolescentes en la residencia = de la calle=20 Fox de sus padres: en el lujo si lo quisiera, entre el refinamiento = intelectual=20 y las porcelanas chinas de la burgues=EDa ilustrada. Aunque lejanamente, = emparenta=20 con la dinast=EDa Bettencourt, una de las primeras fortunas de Francia y = due=F1a del=20 grupo de cosm=E9ticos L'Or=E9al. Ahora, m=E1s de tres semanas despu=E9s = de su regreso a=20 la vida, reflexiona sobre el futuro: "No s=E9 qu=E9 har=E9; pero quiero = ayudar".

La impetuosa efusividad de Ingrid Betancourt el d=EDa de la = liberaci=F3n, los=20 abrazos y botes, los atropellados agradecimientos, el incontrolable = llanto, la=20 catarsis emocional de la mujer retornada a la vida no sorprendieron a = los=20 militares que la acompa=F1aron en el vuelo hacia la libertad. La euforia = era=20 entendible porque el sufrimiento hab=EDa sido extremo. Durante los seis = a=F1os y=20 cinco meses de cautiverio, la ex candidata presidencial del Partido = Verde=20 Ox=EDgeno (izquierda) hab=EDa sido maltratada f=EDsica y = psicol=F3gicamente, reducida a=20 la condici=F3n de un animal encadenado. "Si quiere hacer sus = necesidades, h=E1galas=20 aqu=ED, enfrente de m=ED", la intimid=F3 un carcelero. El ensa=F1amiento = guerrillero y=20 la dolosa burricie de otros secuestrados, que quisieron violarla, la = pusieron a=20 prueba. Conoci=F3 las miserias de la condici=F3n humana, pero lo peor = fue el=20 fallecimiento de su adorado padre sin verla libre. "Aqu=ED vivimos = muertos",=20 escribi=F3 a su familia.

El pasado 30 de noviembre, las fotograf=EDas de la pieza m=E1s = valiosa de=20 las FARC dieron la vuelta al mundo. Cabizbaja, flaca, abatida, con una = melena de=20 a=F1os cubri=E9ndole el pecho, era la viva estampa de La = Dolorosa. No com=EDa,=20 ni quer=EDa hacerlo. Su madre, Yolanda Apulecio, temi=F3 que la muerte = le pareciera=20 una opci=F3n dulce porque los p=E1rpados entornados y tristes de su = hija, su l=FAgubre=20 ensimismamiento, parec=EDan convocarla. Pero Ingrid no muri=F3: apenas = una hepatitis=20 B y las secuelas de la malaria. Resucit=F3 l=FAcida y coherente, = arrebatada=20 m=EDsticamente, soltando adrenalina a chorros. Brinc=F3 en el = helic=F3ptero, brinc=F3 en=20 Bogot=E1 y brinca en Par=EDs, donde departe con presidentes, ex = presidentes,=20 diputados, diplom=E1ticos, periodistas, alcaldes o artistas. La mujer = acostumbrada=20 a la cuberter=EDa de plata y a la campanilla del servicio retom=F3 los = Campos=20 El=EDseos y el alto copete; rez=F3 en el santuario de Lourdes, recibe = ofertas=20 cinematogr=E1ficas y editoriales, y devora la vida. No descarta ser = presidenta de=20 Colombia.

"Ingrid Betancourt forma parte del grupo de l=EDderes que consideran = que, ellos=20 solos, son capaces de cambiar el mundo; el resto son complementos", dice = Eduardo=20 Ch=E1vez, que trabaj=F3 con la ex secuestrada, codo a codo, cuatro = a=F1os (1998-2002).=20 El torbellino franco-colombiano mantiene intactas su inteligencia = pol=EDtica y su=20 habilidad para construir mensajes. "Es una comunicadora por excelencia", = agrega=20 Ch=E1vez, director de una revista de ecolog=EDa. "No s=F3lo le presta = atenci=F3n al=20 lenguaje, sino tambi=E9n a los gestos, a los movimientos. Eso lo sabe = hacer muy=20 bien". La selva, opina, perfeccion=F3 sus capacidades porque tuvo mucho = tiempo=20 para pensar, estructurar y articular ideas. "La Ingrid de antes era de=20 reacciones m=E1s fogosas. Ahora piensa m=E1s en las consecuencias de sus = palabras".=20 Pero no hay falsedad en su discurso, inoculado por su padre, el = conservador=20 Gabriel Betancourt, que fue ministro de Educaci=F3n en el Gobierno del = general=20 Gustavo Rojas Pinillas (1953-1958) y embajador. "El Estado es para = servir y=20 defender a los pobres; los ricos ya tienen quien los defienda", le = repet=EDa a su=20 hija.

La noche de su llegada a la capital francesa, el pasado 4 de julio, a = bordo=20 de un avi=F3n del presidente franc=E9s, Nicolas Sarkozy, durmi=F3 en la = misma cama de=20 sus dos hijos, Melanie y Lorenzo, de 22 y 20 a=F1os. Necesitaba = sentirlos,=20 estrujarlos. "Me volteaba a la izquierda y abrazaba a uno; me volteaba a = la=20 derecha y abrazaba al otro". Siempre fue as=ED: apasionada, tozuda, = vitalista,=20 caprichosa a veces. Irrumpi=F3 en la pol=EDtica colombiana repartiendo = condones=20 contra el contagio de la corrupci=F3n, y denunciando en el = Congreso a los=20 diputados vinculados al cartel de Cali. La sacaron del hemiciclo casi a = rastras.=20 Su car=E1cter no parece haber cambiado mucho. Quiere comerse el mundo y = es l=F3gico=20 su apetito, seg=FAn explica Luc=EDa Nieto, psic=F3loga de la Fundaci=F3n = Pa=EDs Libre, que=20 apoya a las v=EDctimas del secuestro en Colombia. "Est=E1 en la etapa de = la euforia,=20 de aprovechar al m=E1ximo la alegr=EDa de sentirse en libertad. Esa = hiperactividad=20 es coherente con una mujer que tiene y ha tenido su liderazgo".

Un periodista espa=F1ol que la escuch=F3 en el telediario de las = nueve de la=20 noche de France 3 la encontr=F3 "como reci=E9n salida de la ducha, = arrolladora".=20 Incansable e iluminada, cautiv=F3 a Francia, cuya nacionalidad = adquiri=F3 al casarse=20 con el diplom=E1tico Patrice Delloye. Protagonista de la vida pol=EDtica = gala, ha=20 sido instrumentalizada por unos y otros, aunque a veces supo imponer su=20 voluntad. Sarkozy y su esposa, Carla Bruni, la recibieron en el = aeropuerto; el=20 El=EDseo le ofreci=F3 una recepci=F3n, y le impuso la Legi=F3n de Honor. = Su retrato=20 colgaba del Ayuntamiento. La multitud que la escuch=F3 junto al alcalde, = el=20 socialista Bertrand Delano=EB, compar=F3 su liberaci=F3n con la ca=EDda = del muro de=20 Berl=EDn.

Alojada en los lujosos hoteles Meurice, Raphael y Fouquet's, todos = grand=20 palace, Ingrid Betancourt se entrevist=F3 con el secretario general = de la ONU,=20 Ban Ki-moon; acudi=F3 al Senado, que la ovacion=F3; tambi=E9n los = diputados. Visit=F3 al=20 ex presidente Jacques Chirac, que le dijo: "Usted ha creado en torno a = su=20 persona la unanimidad del coraz=F3n y el esp=EDritu". Francia rendida a = sus pies,=20 enganchada. =BFPor qu=E9? El periodista Jacques Thomet, autor del libro = =BFHistoria=20 del coraz=F3n o raz=F3n de Estado?, sostiene que parte del inter=E9s = oficial=20 franc=E9s arranca de la supuesta relaci=F3n sentimental, amorosa, entre = la joven=20 alumna bogotana Ingrid y su profesor de Ciencias Pol=EDticas el a=F1o = 1981, el que=20 hab=EDa de ser titular de Exteriores y primer ministro Dominique de = Villepin. El=20 ex director de la agencia France Presse en Bogot=E1 (1999-2004), a=F1ade = que la=20 diplomacia antepuso intereses personales y da=F1=F3 las relaciones entre = Par=EDs y=20 Bogot=E1. En julio de 2003, un H=E9rcules C-130 despeg=F3 hacia Manaos = (Brasil) con 11=20 esp=EDas. Su misi=F3n: rescatar a Betancourt. La operaci=F3n, = descubierta, acab=F3 en=20 fiasco.

Cuando Nicolas Sarkozy entendi=F3 la rentabilidad del caso sigui=F3 = los pasos de=20 Chirac y Villepin y se implic=F3 abiertamente en la liberaci=F3n. Todo = acab=F3=20 felizmente, pero nada es igual despu=E9s de un secuestro tan atroz. = As=ED lo=20 entendi=F3 la Ingrid Betancourt cuando reuni=F3 a los suyos en el = almuerzo=20 parisiense del reencuentro: a su madre, ex Miss Colombia antes de = dedicarse a la=20 pol=EDtica, sus hijos; su hermana, Astrid; su primer marido, Fabrice = Delloye; una=20 t=EDa y varios sus primos. Les dijo que la quer=EDan al frente de las=20 concentraciones del pasado d=EDa 20 en Colombia contra los secuestros. = "Su familia=20 respondi=F3 que ten=EDan derecho a compartir sus decisiones m=E1s = importantes porque=20 hab=EDan sufrido y luchado mucho por su liberaci=F3n", revel=F3 una = fuente. Tem=EDan=20 represalias de las FARC. Betancourt se qued=F3 en Par=EDs y la = aplaudieron a rabiar=20 en el concierto de solidaridad de Trocadero.

Siempre le gust=F3 el estrellato. "Le encanta. Es una manera de ser. = Ingrid es=20 una persona muy extrovertida, maneja muy bien a los medios, se sabe = comunicar",=20 resume Clara Rojas, ex candidata a la vicepresidencia con Betancourt, = tambi=E9n=20 secuestrada el 22 de febrero de 2002. "Le gusta ser protagonista. = Entonces=20 cuenta su historia con todo ese =E9nfasis que le pone... Es respetable = su=20 actitud". Acabaron distanci=E1ndose al culparse mutuamente del fracaso = de una=20 fuga. "Vi=E9ndola como est=E1, y por las opiniones que est=E1 dando, = pienso que=20 volver=E1 a la pol=EDtica. Lo lleva en la sangre".

Clara, que tuvo un hijo con un guerrillero, acaricia una pulsera con = im=E1genes=20 de la Virgen. Ingrid y ella se aferraron a Dios cuando la postraci=F3n = era=20 profunda. Juntas rezaban el rosario y le=EDan la Biblia. El dilema de la = mujer=20 afincada cerca del Sena es elegir entre Francia y Colombia: entre dos = amores. Y=20 en esa decisi=F3n sus hijos cuentan mucho. "Ellos le tienen temor a lo = que es=20 Colombia y han vivido fuera del pa=EDs, pero Ingrid tiene una ra=EDz muy = honda en=20 Colombia". Ra=EDces, ambici=F3n pol=EDtica y temeraria determinaci=F3n. = Algo har=E1. No es=20 f=E1cil pararla. Tampoco el d=EDa de su viaje a la regi=F3n = desmilitarizada por el ex=20 presidente Andr=E9s Pastrana (1998-2002) para negociar la paz con las = FARC.

Las conversaciones fracasaron y las autoridades le pidieron que = desistiera,=20 que peligraba. No hizo caso, invocando su solidario compromiso con el = alcalde de=20 San Vicente, del Partido Verde Ox=EDgeno. No faltan quienes atribuyen a = aquel=20 safari oportunismo electoral: un breve secuestro la habr=EDa = catapultado en=20 la intenci=F3n de voto, por debajo del 1% entonces. Las cosas cambiaron = e Ingrid=20 apenas conoce l=EDmites. "Esta se=F1ora es de temperamento volc=E1nico; = es grosera y=20 provocadora con los guerrilleros encargados de cuidarla", escribi=F3 el=20 comandante guerrillero Ra=FAl Reyes, abatido hace cinco meses. = Carlos=20 Alonso Lucio, amigo de pupitre de la "grosera se=F1ora", la imagin=F3 = chocando con=20 sus carceleros como lo har=EDa un ajedrecista contra un boxeador.

El terrorismo de las FARC la tumb=F3 varias veces, pero siempre se = levant=F3=20 antes de acabar el conteo de protecci=F3n. La obligaron a marchar = descalza,=20 lastrada con cadenas colgadas del cuello; le racionaron el chusco, y se = burlaron=20 de su activismo de ni=F1ata rica. Cayeron sobre ella las siete plagas y = le=20 soplaron que su marido, Juan Carlos Leconte, de quien se ha distanciado, = se la=20 pegaba con una actriz mexicana. "=BFAbusaron de usted sexualmente?", le=20 preguntaron. "Hay cosas que deben quedarse en la selva", respondi=F3. = Pero no=20 todos quieren ocultar los vej=E1menes encajados por la cautiva m=E1s = famosa del=20 planeta. Varios compa=F1eros de secuestro embrutecidos intentaron = violarla, y el=20 ex senador Luis Eladio P=E9rez, liberado en enero, la defendi=F3 a = pu=F1etazos:=20 "Algunos guerrilleros llegaron a filmarla desnuda haciendo sus = necesidades y=20 luego se masturbaron mientras ve=EDan la grabaci=F3n".

La psic=F3loga Luc=EDa Nieto le recomienda desaceleraci=F3n y cautela = para recobrar=20 el equilibrio emocional y el sereno discernimiento. "Necesita un tiempo = de=20 elaboraci=F3n, de decantaci=F3n". Pero no es previsible el retiro = terap=E9utico de=20 Ingrid Betancourt, su alejamiento de las luminarias, porque, para ella,=20 ocuparse, recuperar el tiempo perdido, a dentelladas si es preciso, es = la mejor=20 forma de salir adelante.

=20

=A9 Diario EL PA=CDS S.L. - Miguel = Yuste 40 - 28037=20 Madrid [Espa=F1a]= - Tel. 91=20 337 8200

=A9 Prisacom=20 S.A. - Ribera del Sena, S/N - Edificio APOT - Madrid = [Espa=F1a] -=20 Tel. 91 353 7900

------=_NextPart_000_0000_01C8EF49.FDAEEDD0 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://prisacomelpaiscom.112.2o7.net/b/ss/prisacomelpaiscom/1/H.11--NS/0 R0lGODlhAgACAIAAAP///wAAACH5BAEAAAAALAAAAAACAAIAAAIChFEAOw== ------=_NextPart_000_0000_01C8EF49.FDAEEDD0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.elpais.com/im/tit_logo_int.gif R0lGODlhigAbANUAAPHx8enr7ufn593h6NfX19HX4dTU1MXO28nJybnE1Lq6uq26zq6urqGwx6ur q6ioqKSkpJamwZ2dnYqcun6StI6OjouLi3KIrX9/f2Z/p1p1oHBwcG5ubk5rmmJiYkJhk1NTU0RE RDY2NiYmJhgYGP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHACUALAAAAACKABsAAAb/wJJw SCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v+CwGGp4WMZgBnoLeHBGpPh6TucqFII6Vc1UxP+AcSAl gSQVR4VxIhV5QgRxHkQVhSUCG4AgEiOHRwkUHR8ZDQFDBxMNqBMHRQcXEyUHFB+hCUIDE6AZtVUC CpOGd3ceJIMKDpAKBEfGcRt3msRDvyTKjgrDJA4KJcMYdxUicZxEARcUAyULoA1CER0FQwUdEUMT sxeo6AmgCQ0UCQfUfVhwhE8TPyS2lcBTYsQgIeKWRBRyjAQCISFGwBkn5JcjEiGICAhhqEiADBmI DGgAL8LAIgs+0BNir8OqIQ1m3RSS4EOH/ysIFSbk9pBQSSUTF8bZhoDEhkshJclRKqKRED8cS+Qk aGTALCMBZqHT+uECq69FZsErYrDPUqXbKhRNiiTpsBF5MGRDeFHaVAFxRmBwUM2DhCIaPpAykjOl kQwf2JE1S+QAWiI6rSAMAeJtEbqISIgAASIcicMlRIwQEg6DVBJ+AYnYUC3e5SIXyh7JTTkn5VK3 hWRm+wThBnBDPx8V0ks5iArQJVRrCkIYidWxiVwLNEKhEMsfkPDerXvy2fBpP+ycErTEo7hzlytV nlXIpUIOsivNv7ACtqhChPXBWkW49BsRuc3k23lGDEdEW0u0R8g2HsTH0ST0HTGCCESQtOGBfn58 qN1UQyQmGYMNqifEgpUFV4KD7HnGnEND0HVJhkUc41psjXiklEUiiVZETgMWUUtu65XQ028sAoce ZioSx0QvegETzDDFVOTMNyQyQ4IHyTCngId49PLLBhBstxdCTmkjAUmcDEDKST6NUkIBFBB0UgaL lbBnn/ZoAJNYKs3ClRRsJhKNon/UGAgniSYUaSJ+OIABHIGNQ8GJDYAyCwUEaoXPAQ3gM8QALn26 CqqeiiLEApDVKaUeYCAQ5hIFHNCnEUnS6uuvwAYr7LDEFmvsscgmq+yyzDbr7LNjBAEAOw== ------=_NextPart_000_0000_01C8EF49.FDAEEDD0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.elpais.com/est.pl?id=20080726elpepuint_7.Tes&fp=20080727&te=impresion&to=noticia&a=elpepuint&k=1867724286.gif R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0000_01C8EF49.FDAEEDD0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.elpais.com/css/noticia_print.css?update=3200711151004 * { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } IMG { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } UL { LIST-STYLE-TYPE: none } * { WIDTH: auto } BODY { PADDING-RIGHT: 1em; PADDING-LEFT: 1em; FONT-SIZE: 0.6em; = PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .limpiar { CLEAR: both; FONT-WEIGHT: normal; FONT-SIZE: 1px; LINE-HEIGHT: 1px } .margen_n { MARGIN: 0px } .imp_noticia { PADDING-RIGHT: 12px; PADDING-LEFT: 22px; BACKGROUND: = url(http://www.elpais.com/im/utilidades/ico_imprimir.gif) no-repeat; = FLOAT: right; PADDING-BOTTOM: 3px; MARGIN: 7px 0px 0px; PADDING-TOP: 3px } .imp_noticia A { FONT: bold 110% Tahoma,Arial, Helvetica, sans-serif; COLOR: #134d86; = TEXT-DECORATION: none } .c_nivel_2 { HEIGHT: auto } .c_nivel_1_interior { BACKGROUND: url(/im/fnd_cabecera.gif) repeat-x left top; BORDER-BOTTOM: = #d9d9d9 1px solid; HEIGHT: 30px } .c_nivel_1_interior H2 { MARGIN-TOP: 3px; FLOAT: left; FONT: bold 170%/180% Arial, Helvetica, = sans-serif; VERTICAL-ALIGN: middle; COLOR: #191919; TEXT-ALIGN: left } .c_nivel_1_interior H2 IMG { VERTICAL-ALIGN: middle } #pie { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } #pie #copy { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } #pie #copy P { TEXT-ALIGN: center } .cabecera_noticia { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; COLOR: #464646; PADDING-TOP: 0.5cm; BACKGROUND-COLOR: #ffffff } .cabecera_noticia_reportaje { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; COLOR: #464646; PADDING-TOP: 0.5cm; BACKGROUND-COLOR: #ffffff } .cabecera_noticia_opinion { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; COLOR: #464646; PADDING-TOP: 0.5cm; BACKGROUND-COLOR: #ffffff } .cabecera_noticia_fweb { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; COLOR: #464646; PADDING-TOP: 0.5cm; BACKGROUND-COLOR: #ffffff } .cabecera_noticia_opinion H1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.2cm; FONT: = italic 29pt/31pt Georgia, "Times New Roman", Times, serif; COLOR: = #000000; PADDING-TOP: 0px; LETTER-SPACING: -1px } .cabecera_noticia H1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.2cm; FONT: = 23pt/25pt Georgia, "Times New Roman", Times, serif; COLOR: #000000; = PADDING-TOP: 0px; LETTER-SPACING: -1px } .cabecera_noticia_reportaje H1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.2cm; FONT: = 23pt/25pt Georgia, "Times New Roman", Times, serif; COLOR: #000000; = PADDING-TOP: 0px; LETTER-SPACING: -1px } .cabecera_noticia_fweb H1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.2cm; FONT: = 23pt/25pt Georgia, "Times New Roman", Times, serif; COLOR: #000000; = PADDING-TOP: 0px; LETTER-SPACING: -1px } .cabecera_noticia H2 { FONT: 11pt Arial, Helvetica, sans-serif } .cabecera_noticia H3 { FONT: 13pt Arial, Helvetica, sans-serif } .cabecera_noticia_reportaje H3 { FONT: 13pt Arial, Helvetica, sans-serif } .cabecera_noticia_opinion H3 { FONT: 13pt Arial, Helvetica, sans-serif } .cabecera_noticia_fweb H3 { FONT: 13pt Arial, Helvetica, sans-serif } .cabecera_noticia_reportaje { TEXT-ALIGN: center } .cabecera_noticia_opinion { TEXT-ALIGN: center } .cabecera_noticia_fweb { TEXT-ALIGN: center } .cabecera_noticia_reportaje H2 { FONT: italic 12pt Georgia, "Times New Roman", Times, serif } .cabecera_noticia_opinion H2 { FONT: italic 12pt Georgia, "Times New Roman", Times, serif } .cabecera_noticia_fweb H2 { FONT: 12pt Georgia, "Times New Roman", Times, serif } .cabecera_noticia_reportaje H2 STRONG { FONT-WEIGHT: normal; FONT-SIZE: 13pt } .cabecera_noticia_opinion H2 STRONG { FONT-WEIGHT: normal; FONT-SIZE: 13pt } .firma { MARGIN-TOP: 0.3cm; PADDING-BOTTOM: 0.05cm; BORDER-BOTTOM: #d1d1d1 1px = solid } .firma A { COLOR: #4c7094; TEXT-DECORATION: none } .firma A:hover { TEXT-DECORATION: underline } .firma P { FONT: 8pt Georgia, "Times New Roman", Times, serif; COLOR: #414141; = TEXT-ALIGN: left } .firma P STRONG { FONT-WEIGHT: bold; FONT-SIZE: 8pt } .firma P EM { FONT-SIZE: 8pt; FONT-STYLE: normal } .firma .nav_seccion { DISPLAY: block; MARGIN-RIGHT: 4px } .firma .nav_seccion P { MARGIN-TOP: 2px; FLOAT: left; FONT: 8pt Arial, Helvetica, sans-serif; = COLOR: #666666 } .borde_sup { BORDER-TOP: #d1d1d1 1px solid; FONT-WEIGHT: normal; FONT-SIZE: 1px; = LINE-HEIGHT: 1px; HEIGHT: 1px } .fe_errores { BORDER-RIGHT: #e1e0e0 1pt solid; PADDING-RIGHT: 0.3cm; BORDER-TOP: = #e1e0e0 1pt solid; PADDING-LEFT: 0.3cm; BACKGROUND: none transparent = scroll repeat 0% 0%; MARGIN-BOTTOM: 0.4cm; PADDING-BOTTOM: 0px; = BORDER-LEFT: #e1e0e0 1pt solid; PADDING-TOP: 0.3cm; BORDER-BOTTOM: = #e1e0e0 1pt solid } .fe_errores H3 { FONT-WEIGHT: bold; FONT-SIZE: 9pt; MARGIN-LEFT: 0px; COLOR: #000000; = TEXT-ALIGN: left } .fe_errores P { FONT: 12pt/14pt Georgia, "Times New Roman", Times, serif; COLOR: = #333333 } .contenido_noticia { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: = 0px; WIDTH: auto; PADDING-TOP: 0.2cm } .contenido_noticia P { MARGIN-BOTTOM: 13px; FONT: 10.5pt/13pt Georgia, "Times New Roman", = Times, serif; COLOR: #333333 } H4.ladillo { MARGIN-BOTTOM: 13px; FONT: bold 10.5pt/13pt Georgia, "Times New Roman", = Times, serif; COLOR: #333333 } .presentacion { BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN-BOTTOM: 15px; = PADDING-BOTTOM: 3px; BORDER-BOTTOM: #ccc 1px solid } .pie_noticia { BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN-BOTTOM: 15px; = PADDING-BOTTOM: 3px; BORDER-BOTTOM: #ccc 1px solid } .contenido_noticia .presentacion P { MARGIN-BOTTOM: 10px; FONT: italic 9pt Georgia, "Times New Roman", = Times, serif; COLOR: #333333 } .contenido_noticia .pie_noticia P { MARGIN-BOTTOM: 10px; FONT: italic 9pt Georgia, "Times New Roman", = Times, serif; COLOR: #333333 } .listado_despiece { PADDING-TOP: 0px } .listado_despiece UL { MARGIN-BOTTOM: 15px } .listado_hermanas UL { MARGIN-BOTTOM: 15px } .listado_despiece LI { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; = MARGIN-BOTTOM: 7px; FONT: 9pt Georgia, "Times New Roman", Times, serif } .listado_hermanas LI { PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; = MARGIN-BOTTOM: 7px; FONT: 9pt Georgia, "Times New Roman", Times, serif } .ficha { BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN-BOTTOM: 17px; = PADDING-BOTTOM: 7px; BORDER-BOTTOM: #ccc 1px solid } .tabla { BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN-BOTTOM: 17px; = PADDING-BOTTOM: 7px; BORDER-BOTTOM: #ccc 1px solid } .ficha H3 { MARGIN-BOTTOM: 9px; FONT: 13pt Georgia, "Times New Roman", Times, = serif; COLOR: #393939; BORDER-BOTTOM: #dddddd 1px solid; TEXT-ALIGN: = center } .ficha .separador_ficha { BORDER-TOP: #dddddd 1px solid; FONT-SIZE: 1px; MARGIN: 5px 0px 12px; = LINE-HEIGHT: 1px; HEIGHT: 1px } .contenido_noticia .ficha P { MARGIN-BOTTOM: 0.3cm; FONT: 9pt Arial, Helvetica, sans-serif; COLOR: = #757575 } .tabla { PADDING-BOTTOM: 1cm } .caja_despiece { PADDING-RIGHT: 13px; PADDING-LEFT: 13px; BACKGROUND: = url(/im/fnd_caja_despiece.gif) #f2f2f2 repeat-x left top; = PADDING-BOTTOM: 12px; MARGIN: 35px 0px 17px; WIDTH: auto; PADDING-TOP: = 21px; BORDER-BOTTOM: #dddddd 1px solid } .caja_despiece H3 { MARGIN-BOTTOM: 5px; FONT: 15pt/17pt Georgia, "Times New Roman", Times, = serif; COLOR: #333333 } .caja_despiece .mod_grafico_txt P { MARGIN-BOTTOM: 15px; FONT: 10pt/12pt Arial, Helvetica, sans-serif } #pie { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; Z-INDEX: 20; PADDING-BOTTOM: = 10px; MARGIN: 0px auto; WIDTH: 993px; PADDING-TOP: 0px; POSITION: = relative } #pie UL { LIST-STYLE-TYPE: none } #pie IMG { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-RIGHT-WIDTH: 0px } #pie A { COLOR: #555; TEXT-DECORATION: none } #pie A:hover { TEXT-DECORATION: underline } #pie #copy { CLEAR: both; PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: = 7px; PADDING-TOP: 7px } #pie #copy IMG.boton { FLOAT: right; MARGIN: 4px 0px 0px 7px; POSITION: relative } #pie #copy P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; FONT: 8pt/10pt Arial, Helvetica, sans-serif; COLOR: #666; = PADDING-TOP: 0px } #pie #copy A { FONT-SIZE: 8pt; COLOR: #666 } .tabla_datos { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; WIDTH: 7.5pt; COLOR: #666; BORDER-RIGHT-WIDTH: 0px } .tabla_datos CAPTION { MARGIN: 0px 0px 5px; FONT: 21pt Georgia, "Times New Roman", Times, = serif; COLOR: #333333; TEXT-ALIGN: left } .tabla_datos TH { PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 1px; FONT: = 9pt/11pt Arial, Helvetica, sans-serif; PADDING-TOP: 1px } .tabla_datos TD { PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 1px; FONT: = 9pt/11pt Arial, Helvetica, sans-serif; PADDING-TOP: 1px } .tabla_datos TH { FONT-WEIGHT: bold } .tabla_datos THEAD TH { FONT-WEIGHT: normal; BORDER-BOTTOM: #ccc 1px solid } .tabla_datos TFOOT TH { BORDER-TOP: #ccc 1px solid; COLOR: #333 } .tabla_datos TFOOT TD { BORDER-TOP: #ccc 1px solid; COLOR: #333 } .tabla_datos TFOOT TH { FONT-WEIGHT: normal } .tabla_datos TH { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; TEXT-ALIGN: right; BORDER-RIGHT-WIDTH: 0px } .tabla_datos TD { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; TEXT-ALIGN: right; BORDER-RIGHT-WIDTH: 0px } .tabla_datos .columna0 { TEXT-ALIGN: left } .estructura_2col { BORDER-RIGHT: #fff 1pt solid; BORDER-TOP: #fff 1pt solid; BACKGROUND: = none transparent scroll repeat 0% 0%; MARGIN: 0px; BORDER-LEFT: #fff 1pt = solid; WIDTH: auto; BORDER-BOTTOM: #fff 1pt solid } .margen_n { WIDTH: auto } .zona_superior { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; WIDTH: auto; BORDER-RIGHT-WIDTH: 0px } #pie { WIDTH: auto } .formatos_web { BORDER-TOP: #d1d1d1 1px solid; PADDING-TOP: 0.2cm } .formatos_web H3 { MARGIN-BOTTOM: 3px; FONT: bold 12pt/14pt Georgia, "Times New Roman", = Times, serif; COLOR: #333333 } .formatos_web A { COLOR: #333333; TEXT-DECORATION: none } .formatos_web P { =09 } ------=_NextPart_000_0000_01C8EF49.FDAEEDD0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.elpais.com/js/publi.js?update=200804021907 //=0A= var bPubli =3D true;=0A= var dUser =3D document.cookie.split("; ");=0A= =0A= for (var i=3D0;i $(array)=0A= var m =3D /^[^<]*(<(.|\s)+>)[^>]*$/.exec(a);=0A= if ( m )=0A= a =3D jQuery.clean( [ m[1] ] );=0A= =0A= // HANDLE: $(expr)=0A= else=0A= return new jQuery( c ).find( a );=0A= }=0A= =0A= return this.setArray(=0A= // HANDLE: $(array)=0A= a.constructor =3D=3D Array && a ||=0A= =0A= // HANDLE: $(arraylike)=0A= // Watch for when an array-like object is passed as the selector=0A= (a.jquery || a.length && a !=3D window && !a.nodeType && a[0] !=3D = undefined && a[0].nodeType) && jQuery.makeArray( a ) ||=0A= =0A= // HANDLE: $(*)=0A= [ a ] );=0A= },=0A= jquery: "1.1.3.1",=0A= =0A= size: function() {=0A= return this.length;=0A= },=0A= =0A= length: 0,=0A= =0A= get: function( num ) {=0A= return num =3D=3D undefined ?=0A= =0A= // Return a 'clean' array=0A= jQuery.makeArray( this ) :=0A= =0A= // Return just the object=0A= this[num];=0A= },=0A= pushStack: function( a ) {=0A= var ret =3D jQuery(a);=0A= ret.prevObject =3D this;=0A= return ret;=0A= },=0A= setArray: function( a ) {=0A= this.length =3D 0;=0A= [].push.apply( this, a );=0A= return this;=0A= },=0A= each: function( fn, args ) {=0A= return jQuery.each( this, fn, args );=0A= },=0A= index: function( obj ) {=0A= var pos =3D -1;=0A= this.each(function(i){=0A= if ( this =3D=3D obj ) pos =3D i;=0A= });=0A= return pos;=0A= },=0A= =0A= attr: function( key, value, type ) {=0A= var obj =3D key;=0A= =0A= // Look for the case where we're accessing a style value=0A= if ( key.constructor =3D=3D String )=0A= if ( value =3D=3D undefined )=0A= return this.length && jQuery[ type || "attr" ]( this[0], key ) || = undefined;=0A= else {=0A= obj =3D {};=0A= obj[ key ] =3D value;=0A= }=0A= =0A= // Check to see if we're setting style values=0A= return this.each(function(index){=0A= // Set all the styles=0A= for ( var prop in obj )=0A= jQuery.attr(=0A= type ? this.style : this,=0A= prop, jQuery.prop(this, obj[prop], type, index, prop)=0A= );=0A= });=0A= },=0A= =0A= css: function( key, value ) {=0A= return this.attr( key, value, "curCSS" );=0A= },=0A= =0A= text: function(e) {=0A= if ( typeof e =3D=3D "string" )=0A= return this.empty().append( document.createTextNode( e ) );=0A= =0A= var t =3D "";=0A= jQuery.each( e || this, function(){=0A= jQuery.each( this.childNodes, function(){=0A= if ( this.nodeType !=3D 8 )=0A= t +=3D this.nodeType !=3D 1 ?=0A= this.nodeValue : jQuery.fn.text([ this ]);=0A= });=0A= });=0A= return t;=0A= },=0A= =0A= wrap: function() {=0A= // The elements to wrap the target around=0A= var a, args =3D arguments;=0A= =0A= // Wrap each of the matched elements individually=0A= return this.each(function(){=0A= if ( !a )=0A= a =3D jQuery.clean(args, this.ownerDocument);=0A= =0A= // Clone the structure that we are using to wrap=0A= var b =3D a[0].cloneNode(true);=0A= =0A= // Insert it before the element to be wrapped=0A= this.parentNode.insertBefore( b, this );=0A= =0A= // Find the deepest point in the wrap structure=0A= while ( b.firstChild )=0A= b =3D b.firstChild;=0A= =0A= // Move the matched element to within the wrap structure=0A= b.appendChild( this );=0A= });=0A= },=0A= append: function() {=0A= return this.domManip(arguments, true, 1, function(a){=0A= this.appendChild( a );=0A= });=0A= },=0A= prepend: function() {=0A= return this.domManip(arguments, true, -1, function(a){=0A= this.insertBefore( a, this.firstChild );=0A= });=0A= },=0A= before: function() {=0A= return this.domManip(arguments, false, 1, function(a){=0A= this.parentNode.insertBefore( a, this );=0A= });=0A= },=0A= after: function() {=0A= return this.domManip(arguments, false, -1, function(a){=0A= this.parentNode.insertBefore( a, this.nextSibling );=0A= });=0A= },=0A= end: function() {=0A= return this.prevObject || jQuery([]);=0A= },=0A= find: function(t) {=0A= var data =3D jQuery.map(this, function(a){ return jQuery.find(t,a); });=0A= return this.pushStack( /[^+>] [^+>]/.test( t ) || t.indexOf("..") > -1 = ?=0A= jQuery.unique( data ) : data );=0A= },=0A= clone: function(deep) {=0A= // Need to remove events on the element and its descendants=0A= var $this =3D this.add(this.find("*"));=0A= $this.each(function() {=0A= this._$events =3D {};=0A= for (var type in this.$events)=0A= this._$events[type] =3D jQuery.extend({},this.$events[type]);=0A= }).unbind();=0A= =0A= // Do the clone=0A= var r =3D this.pushStack( jQuery.map( this, function(a){=0A= return a.cloneNode( deep !=3D undefined ? deep : true );=0A= }) );=0A= =0A= // Add the events back to the original and its descendants=0A= $this.each(function() {=0A= var events =3D this._$events;=0A= for (var type in events)=0A= for (var handler in events[type])=0A= jQuery.event.add(this, type, events[type][handler], = events[type][handler].data);=0A= this._$events =3D null;=0A= });=0A= =0A= // Return the cloned set=0A= return r;=0A= },=0A= =0A= filter: function(t) {=0A= return this.pushStack(=0A= jQuery.isFunction( t ) &&=0A= jQuery.grep(this, function(el, index){=0A= return t.apply(el, [index])=0A= }) ||=0A= =0A= jQuery.multiFilter(t,this) );=0A= },=0A= =0A= not: function(t) {=0A= return this.pushStack(=0A= t.constructor =3D=3D String &&=0A= jQuery.multiFilter(t, this, true) ||=0A= =0A= jQuery.grep(this, function(a) {=0A= return ( t.constructor =3D=3D Array || t.jquery )=0A= ? jQuery.inArray( a, t ) < 0=0A= : a !=3D t;=0A= })=0A= );=0A= },=0A= =0A= add: function(t) {=0A= return this.pushStack( jQuery.merge(=0A= this.get(),=0A= t.constructor =3D=3D String ?=0A= jQuery(t).get() :=0A= t.length !=3D undefined && (!t.nodeName || t.nodeName =3D=3D "FORM") = ?=0A= t : [t] )=0A= );=0A= },=0A= is: function(expr) {=0A= return expr ? jQuery.multiFilter(expr,this).length > 0 : false;=0A= },=0A= =0A= val: function( val ) {=0A= return val =3D=3D undefined ?=0A= ( this.length ? this[0].value : null ) :=0A= this.attr( "value", val );=0A= },=0A= =0A= html: function( val ) {=0A= return val =3D=3D undefined ?=0A= ( this.length ? this[0].innerHTML : null ) :=0A= this.empty().append( val );=0A= },=0A= domManip: function(args, table, dir, fn){=0A= var clone =3D this.length > 1, a; =0A= =0A= return this.each(function(){=0A= if ( !a ) {=0A= a =3D jQuery.clean(args, this.ownerDocument);=0A= if ( dir < 0 )=0A= a.reverse();=0A= }=0A= =0A= var obj =3D this;=0A= =0A= if ( table && jQuery.nodeName(this, "table") && jQuery.nodeName(a[0], = "tr") )=0A= obj =3D this.getElementsByTagName("tbody")[0] || = this.appendChild(document.createElement("tbody"));=0A= =0A= jQuery.each( a, function(){=0A= fn.apply( obj, [ clone ? this.cloneNode(true) : this ] );=0A= });=0A= =0A= });=0A= }=0A= };=0A= =0A= jQuery.extend =3D jQuery.fn.extend =3D function() {=0A= // copy reference to target object=0A= var target =3D arguments[0], a =3D 1;=0A= =0A= // extend jQuery itself if only one argument is passed=0A= if ( arguments.length =3D=3D 1 ) {=0A= target =3D this;=0A= a =3D 0;=0A= }=0A= var prop;=0A= while ( (prop =3D arguments[a++]) !=3D null )=0A= // Extend the base object=0A= for ( var i in prop ) target[i] =3D prop[i];=0A= =0A= // Return the modified object=0A= return target;=0A= };=0A= =0A= jQuery.extend({=0A= noConflict: function() {=0A= if ( jQuery._$ )=0A= $ =3D jQuery._$;=0A= return jQuery;=0A= },=0A= =0A= // This may seem like some crazy code, but trust me when I say that this=0A= // is the only cross-browser way to do this. --John=0A= isFunction: function( fn ) {=0A= return !!fn && typeof fn !=3D "string" && !fn.nodeName && =0A= fn.constructor !=3D Array && /function/i.test( fn + "" );=0A= },=0A= =0A= // check if an element is in a XML document=0A= isXMLDoc: function(elem) {=0A= return elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;=0A= },=0A= =0A= nodeName: function( elem, name ) {=0A= return elem.nodeName && elem.nodeName.toUpperCase() =3D=3D = name.toUpperCase();=0A= },=0A= // args is for internal usage only=0A= each: function( obj, fn, args ) {=0A= if ( obj.length =3D=3D undefined )=0A= for ( var i in obj )=0A= fn.apply( obj[i], args || [i, obj[i]] );=0A= else=0A= for ( var i =3D 0, ol =3D obj.length; i < ol; i++ )=0A= if ( fn.apply( obj[i], args || [i, obj[i]] ) =3D=3D=3D false ) break;=0A= return obj;=0A= },=0A= =0A= prop: function(elem, value, type, index, prop){=0A= // Handle executable functions=0A= if ( jQuery.isFunction( value ) )=0A= value =3D value.call( elem, [index] );=0A= =0A= // exclude the following css properties to add px=0A= var exclude =3D /z-?index|font-?weight|opacity|zoom|line-?height/i;=0A= =0A= // Handle passing in a number to a CSS property=0A= return value && value.constructor =3D=3D Number && type =3D=3D = "curCSS" && !exclude.test(prop) ?=0A= value + "px" :=0A= value;=0A= },=0A= =0A= className: {=0A= // internal only, use addClass("class")=0A= add: function( elem, c ){=0A= jQuery.each( c.split(/\s+/), function(i, cur){=0A= if ( !jQuery.className.has( elem.className, cur ) )=0A= elem.className +=3D ( elem.className ? " " : "" ) + cur;=0A= });=0A= },=0A= =0A= // internal only, use removeClass("class")=0A= remove: function( elem, c ){=0A= elem.className =3D c !=3D undefined ?=0A= jQuery.grep( elem.className.split(/\s+/), function(cur){=0A= return !jQuery.className.has( c, cur ); =0A= }).join(" ") : "";=0A= },=0A= =0A= // internal only, use is(".class")=0A= has: function( t, c ) {=0A= return jQuery.inArray( c, (t.className || t).toString().split(/\s+/) = ) > -1;=0A= }=0A= },=0A= swap: function(e,o,f) {=0A= for ( var i in o ) {=0A= e.style["old"+i] =3D e.style[i];=0A= e.style[i] =3D o[i];=0A= }=0A= f.apply( e, [] );=0A= for ( var i in o )=0A= e.style[i] =3D e.style["old"+i];=0A= },=0A= =0A= css: function(e,p) {=0A= if ( p =3D=3D "height" || p =3D=3D "width" ) {=0A= var old =3D {}, oHeight, oWidth, d =3D = ["Top","Bottom","Right","Left"];=0A= =0A= jQuery.each( d, function(){=0A= old["padding" + this] =3D 0;=0A= old["border" + this + "Width"] =3D 0;=0A= });=0A= =0A= jQuery.swap( e, old, function() {=0A= if ( jQuery(e).is(':visible') ) {=0A= oHeight =3D e.offsetHeight;=0A= oWidth =3D e.offsetWidth;=0A= } else {=0A= e =3D jQuery(e.cloneNode(true))=0A= .find(":radio").removeAttr("checked").end()=0A= .css({=0A= visibility: "hidden", position: "absolute", display: "block", = right: "0", left: "0"=0A= }).appendTo(e.parentNode)[0];=0A= =0A= var parPos =3D jQuery.css(e.parentNode,"position") || "static";=0A= if ( parPos =3D=3D "static" )=0A= e.parentNode.style.position =3D "relative";=0A= =0A= oHeight =3D e.clientHeight;=0A= oWidth =3D e.clientWidth;=0A= =0A= if ( parPos =3D=3D "static" )=0A= e.parentNode.style.position =3D "static";=0A= =0A= e.parentNode.removeChild(e);=0A= }=0A= });=0A= =0A= return p =3D=3D "height" ? oHeight : oWidth;=0A= }=0A= =0A= return jQuery.curCSS( e, p );=0A= },=0A= =0A= curCSS: function(elem, prop, force) {=0A= var ret;=0A= =0A= if (prop =3D=3D "opacity" && jQuery.browser.msie) {=0A= ret =3D jQuery.attr(elem.style, "opacity");=0A= return ret =3D=3D "" ? "1" : ret;=0A= }=0A= =0A= if (prop.match(/float/i))=0A= prop =3D jQuery.styleFloat;=0A= =0A= if (!force && elem.style[prop])=0A= ret =3D elem.style[prop];=0A= =0A= else if (document.defaultView && = document.defaultView.getComputedStyle) {=0A= =0A= if (prop.match(/float/i))=0A= prop =3D "float";=0A= =0A= prop =3D prop.replace(/([A-Z])/g,"-$1").toLowerCase();=0A= var cur =3D document.defaultView.getComputedStyle(elem, null);=0A= =0A= if ( cur )=0A= ret =3D cur.getPropertyValue(prop);=0A= else if ( prop =3D=3D "display" )=0A= ret =3D "none";=0A= else=0A= jQuery.swap(elem, { display: "block" }, function() {=0A= var c =3D document.defaultView.getComputedStyle(this, "");=0A= ret =3D c && c.getPropertyValue(prop) || "";=0A= });=0A= =0A= } else if (elem.currentStyle) {=0A= var newProp =3D prop.replace(/\-(\w)/g,function(m,c){return = c.toUpperCase();});=0A= ret =3D elem.currentStyle[prop] || elem.currentStyle[newProp];=0A= }=0A= =0A= return ret;=0A= },=0A= =0A= clean: function(a, doc) {=0A= var r =3D [];=0A= doc =3D doc || document;=0A= =0A= jQuery.each( a, function(i,arg){=0A= if ( !arg ) return;=0A= =0A= if ( arg.constructor =3D=3D Number )=0A= arg =3D arg.toString();=0A= =0A= // Convert html string into DOM nodes=0A= if ( typeof arg =3D=3D "string" ) {=0A= // Trim whitespace, otherwise indexOf won't work as expected=0A= var s =3D jQuery.trim(arg).toLowerCase(), div =3D = doc.createElement("div"), tb =3D [];=0A= =0A= var wrap =3D=0A= // option or optgroup=0A= !s.indexOf(" matched above=0A= (!s.indexOf(" from table fragments=0A= if ( jQuery.browser.msie ) {=0A= =0A= // String was a , *may* have spurious =0A= if ( !s.indexOf(" or =0A= else if ( wrap[1] =3D=3D "
" && s.indexOf("=3D 0 ; --n )=0A= if ( jQuery.nodeName(tb[n], "tbody") && !tb[n].childNodes.length )=0A= tb[n].parentNode.removeChild(tb[n]);=0A= =0A= }=0A= =0A= arg =3D jQuery.makeArray( div.childNodes );=0A= }=0A= =0A= if ( 0 =3D=3D=3D arg.length && (!jQuery.nodeName(arg, "form") && = !jQuery.nodeName(arg, "select")) )=0A= return;=0A= =0A= if ( arg[0] =3D=3D undefined || jQuery.nodeName(arg, "form") || = arg.options )=0A= r.push( arg );=0A= else=0A= r =3D jQuery.merge( r, arg );=0A= =0A= });=0A= =0A= return r;=0A= },=0A= =0A= attr: function(elem, name, value){=0A= var fix =3D jQuery.isXMLDoc(elem) ? {} : jQuery.props;=0A= =0A= // Certain attributes only work when accessed via the old DOM 0 way=0A= if ( fix[name] ) {=0A= if ( value !=3D undefined ) elem[fix[name]] =3D value;=0A= return elem[fix[name]];=0A= =0A= } else if ( value =3D=3D undefined && jQuery.browser.msie && = jQuery.nodeName(elem, "form") && (name =3D=3D "action" || name =3D=3D = "method") )=0A= return elem.getAttributeNode(name).nodeValue;=0A= =0A= // IE elem.getAttribute passes even for style=0A= else if ( elem.tagName ) {=0A= =0A= =0A= if ( value !=3D undefined ) elem.setAttribute( name, value );=0A= if ( jQuery.browser.msie && /href|src/.test(name) && = !jQuery.isXMLDoc(elem) ) =0A= return elem.getAttribute( name, 2 );=0A= return elem.getAttribute( name );=0A= =0A= // elem is actually elem.style ... set the style=0A= } else {=0A= // IE actually uses filters for opacity=0A= if ( name =3D=3D "opacity" && jQuery.browser.msie ) {=0A= if ( value !=3D undefined ) {=0A= // IE has trouble with opacity if it does not have layout=0A= // Force it by setting the zoom level=0A= elem.zoom =3D 1; =0A= =0A= // Set the alpha filter to set the opacity=0A= elem.filter =3D (elem.filter || "").replace(/alpha\([^)]*\)/,"") +=0A= (parseFloat(value).toString() =3D=3D "NaN" ? "" : = "alpha(opacity=3D" + value * 100 + ")");=0A= }=0A= =0A= return elem.filter ? =0A= (parseFloat( elem.filter.match(/opacity=3D([^)]*)/)[1] ) / = 100).toString() : "";=0A= }=0A= name =3D name.replace(/-([a-z])/ig,function(z,b){return = b.toUpperCase();});=0A= if ( value !=3D undefined ) elem[name] =3D value;=0A= return elem[name];=0A= }=0A= },=0A= trim: function(t){=0A= return t.replace(/^\s+|\s+$/g, "");=0A= },=0A= =0A= makeArray: function( a ) {=0A= var r =3D [];=0A= =0A= // Need to use typeof to fight Safari childNodes crashes=0A= if ( typeof a !=3D "array" )=0A= for ( var i =3D 0, al =3D a.length; i < al; i++ )=0A= r.push( a[i] );=0A= else=0A= r =3D a.slice( 0 );=0A= =0A= return r;=0A= },=0A= =0A= inArray: function( b, a ) {=0A= for ( var i =3D 0, al =3D a.length; i < al; i++ )=0A= if ( a[i] =3D=3D b )=0A= return i;=0A= return -1;=0A= },=0A= merge: function(first, second) {=0A= // We have to loop this way because IE & Opera overwrite the length=0A= // expando of getElementsByTagName=0A= for ( var i =3D 0; second[i]; i++ )=0A= first.push(second[i]);=0A= return first;=0A= },=0A= unique: function(first) {=0A= var r =3D [], num =3D jQuery.mergeNum++;=0A= =0A= for ( var i =3D 0, fl =3D first.length; i < fl; i++ )=0A= if ( num !=3D first[i].mergeNum ) {=0A= first[i].mergeNum =3D num;=0A= r.push(first[i]);=0A= }=0A= =0A= return r;=0A= },=0A= =0A= mergeNum: 0,=0A= grep: function(elems, fn, inv) {=0A= // If a string is passed in for the function, make a function=0A= // for it (a handy shortcut)=0A= if ( typeof fn =3D=3D "string" )=0A= fn =3D new Function("a","i","return " + fn);=0A= =0A= var result =3D [];=0A= =0A= // Go through the array, only saving the items=0A= // that pass the validator function=0A= for ( var i =3D 0, el =3D elems.length; i < el; i++ )=0A= if ( !inv && fn(elems[i],i) || inv && !fn(elems[i],i) )=0A= result.push( elems[i] );=0A= =0A= return result;=0A= },=0A= map: function(elems, fn) {=0A= // If a string is passed in for the function, make a function=0A= // for it (a handy shortcut)=0A= if ( typeof fn =3D=3D "string" )=0A= fn =3D new Function("a","return " + fn);=0A= =0A= var result =3D [];=0A= =0A= // Go through the array, translating each of the items to their=0A= // new value (or values).=0A= for ( var i =3D 0, el =3D elems.length; i < el; i++ ) {=0A= var val =3D fn(elems[i],i);=0A= =0A= if ( val !=3D=3D null && val !=3D undefined ) {=0A= if ( val.constructor !=3D Array ) val =3D [val];=0A= result =3D result.concat( val );=0A= }=0A= }=0A= =0A= return result;=0A= }=0A= });=0A= =0A= /*=0A= * Whether the W3C compliant box model is being used.=0A= *=0A= * @property=0A= * @name $.boxModel=0A= * @type Boolean=0A= * @cat JavaScript=0A= */=0A= new function() {=0A= var b =3D navigator.userAgent.toLowerCase();=0A= =0A= // Figure out what browser is being used=0A= jQuery.browser =3D {=0A= version: (b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],=0A= safari: /webkit/.test(b),=0A= opera: /opera/.test(b),=0A= msie: /msie/.test(b) && !/opera/.test(b),=0A= mozilla: /mozilla/.test(b) && !/(compatible|webkit)/.test(b)=0A= };=0A= =0A= // Check to see if the W3C box model is being used=0A= jQuery.boxModel =3D !jQuery.browser.msie || document.compatMode =3D=3D = "CSS1Compat";=0A= =0A= jQuery.styleFloat =3D jQuery.browser.msie ? "styleFloat" : "cssFloat",=0A= =0A= jQuery.props =3D {=0A= "for": "htmlFor",=0A= "class": "className",=0A= "float": jQuery.styleFloat,=0A= cssFloat: jQuery.styleFloat,=0A= styleFloat: jQuery.styleFloat,=0A= innerHTML: "innerHTML",=0A= className: "className",=0A= value: "value",=0A= disabled: "disabled",=0A= checked: "checked",=0A= readonly: "readOnly",=0A= selected: "selected",=0A= maxlength: "maxLength"=0A= };=0A= };=0A= =0A= jQuery.each({=0A= parent: "a.parentNode",=0A= parents: "jQuery.parents(a)",=0A= next: "jQuery.nth(a,2,'nextSibling')",=0A= prev: "jQuery.nth(a,2,'previousSibling')",=0A= siblings: "jQuery.sibling(a.parentNode.firstChild,a)",=0A= children: "jQuery.sibling(a.firstChild)"=0A= }, function(i,n){=0A= jQuery.fn[ i ] =3D function(a) {=0A= var ret =3D jQuery.map(this,n);=0A= if ( a && typeof a =3D=3D "string" )=0A= ret =3D jQuery.multiFilter(a,ret);=0A= return this.pushStack( ret );=0A= };=0A= });=0A= =0A= jQuery.each({=0A= appendTo: "append",=0A= prependTo: "prepend",=0A= insertBefore: "before",=0A= insertAfter: "after"=0A= }, function(i,n){=0A= jQuery.fn[ i ] =3D function(){=0A= var a =3D arguments;=0A= return this.each(function(){=0A= for ( var j =3D 0, al =3D a.length; j < al; j++ )=0A= jQuery(a[j])[n]( this );=0A= });=0A= };=0A= });=0A= =0A= jQuery.each( {=0A= removeAttr: function( key ) {=0A= jQuery.attr( this, key, "" );=0A= this.removeAttribute( key );=0A= },=0A= addClass: function(c){=0A= jQuery.className.add(this,c);=0A= },=0A= removeClass: function(c){=0A= jQuery.className.remove(this,c);=0A= },=0A= toggleClass: function( c ){=0A= jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" = ](this, c);=0A= },=0A= remove: function(a){=0A= if ( !a || jQuery.filter( a, [this] ).r.length )=0A= this.parentNode.removeChild( this );=0A= },=0A= empty: function() {=0A= while ( this.firstChild )=0A= this.removeChild( this.firstChild );=0A= }=0A= }, function(i,n){=0A= jQuery.fn[ i ] =3D function() {=0A= return this.each( n, arguments );=0A= };=0A= });=0A= =0A= jQuery.each( [ "eq", "lt", "gt", "contains" ], function(i,n){=0A= jQuery.fn[ n ] =3D function(num,fn) {=0A= return this.filter( ":" + n + "(" + num + ")", fn );=0A= };=0A= });=0A= =0A= jQuery.each( [ "height", "width" ], function(i,n){=0A= jQuery.fn[ n ] =3D function(h) {=0A= return h =3D=3D undefined ?=0A= ( this.length ? jQuery.css( this[0], n ) : null ) :=0A= this.css( n, h.constructor =3D=3D String ? h : h + "px" );=0A= };=0A= });=0A= jQuery.extend({=0A= expr: {=0A= "": "m[2]=3D=3D'*'||jQuery.nodeName(a,m[2])",=0A= "#": "a.getAttribute('id')=3D=3Dm[2]",=0A= ":": {=0A= // Position Checks=0A= lt: "i=3D 1 )=0A= t =3D t.substr(t.indexOf("/"),t.length);=0A= }=0A= =0A= // Initialize the search=0A= var ret =3D [context], done =3D [], last;=0A= =0A= // Continue while a selector expression exists, and while=0A= // we're no longer looping upon ourselves=0A= while ( t && last !=3D t ) {=0A= var r =3D [];=0A= last =3D t;=0A= =0A= t =3D jQuery.trim(t).replace( /^\/\//, "" );=0A= =0A= var foundToken =3D false;=0A= =0A= // An attempt at speeding up child selectors that=0A= // point to a specific element tag=0A= var re =3D new RegExp("^[/>]\\s*(" + jQuery.chars + "+)");=0A= var m =3D re.exec(t);=0A= =0A= if ( m ) {=0A= var nodeName =3D m[1].toUpperCase();=0A= =0A= // Perform our own iteration and filter=0A= for ( var i =3D 0; ret[i]; i++ )=0A= for ( var c =3D ret[i].firstChild; c; c =3D c.nextSibling )=0A= if ( c.nodeType =3D=3D 1 && (nodeName =3D=3D "*" || = c.nodeName.toUpperCase() =3D=3D nodeName.toUpperCase()) )=0A= r.push( c );=0A= =0A= ret =3D r;=0A= t =3D t.replace( re, "" );=0A= if ( t.indexOf(" ") =3D=3D 0 ) continue;=0A= foundToken =3D true;=0A= } else {=0A= re =3D /^((\/?\.\.)|([>\/+~]))\s*([a-z]*)/i;=0A= =0A= if ( (m =3D re.exec(t)) !=3D null ) {=0A= r =3D [];=0A= =0A= var nodeName =3D m[4], mergeNum =3D jQuery.mergeNum++;=0A= m =3D m[1];=0A= =0A= for ( var j =3D 0, rl =3D ret.length; j < rl; j++ )=0A= if ( m.indexOf("..") < 0 ) {=0A= var n =3D m =3D=3D "~" || m =3D=3D "+" ? ret[j].nextSibling : = ret[j].firstChild;=0A= for ( ; n; n =3D n.nextSibling )=0A= if ( n.nodeType =3D=3D 1 ) {=0A= if ( m =3D=3D "~" && n.mergeNum =3D=3D mergeNum ) break;=0A= =0A= if (!nodeName || n.nodeName.toUpperCase() =3D=3D = nodeName.toUpperCase() ) {=0A= if ( m =3D=3D "~" ) n.mergeNum =3D mergeNum;=0A= r.push( n );=0A= }=0A= =0A= if ( m =3D=3D "+" ) break;=0A= }=0A= } else=0A= r.push( ret[j].parentNode );=0A= =0A= ret =3D r;=0A= =0A= // And remove the token=0A= t =3D jQuery.trim( t.replace( re, "" ) );=0A= foundToken =3D true;=0A= }=0A= }=0A= =0A= // See if there's still an expression, and that we haven't already=0A= // matched a token=0A= if ( t && !foundToken ) {=0A= // Handle multiple expressions=0A= if ( !t.indexOf(",") ) {=0A= // Clean the result set=0A= if ( context =3D=3D ret[0] ) ret.shift();=0A= =0A= // Merge the result sets=0A= done =3D jQuery.merge( done, ret );=0A= =0A= // Reset the context=0A= r =3D ret =3D [context];=0A= =0A= // Touch up the selector string=0A= t =3D " " + t.substr(1,t.length);=0A= =0A= } else {=0A= // Optomize for the case nodeName#idName=0A= var re2 =3D new RegExp("^(" + jQuery.chars + "+)(#)(" + = jQuery.chars + "+)");=0A= var m =3D re2.exec(t);=0A= =0A= // Re-organize the results, so that they're consistent=0A= if ( m ) {=0A= m =3D [ 0, m[2], m[3], m[1] ];=0A= =0A= } else {=0A= // Otherwise, do a traditional filter check for=0A= // ID, class, and element selectors=0A= re2 =3D new RegExp("^([#.]?)(" + jQuery.chars + "*)");=0A= m =3D re2.exec(t);=0A= }=0A= =0A= m[2] =3D m[2].replace(/\\/g, "");=0A= =0A= var elem =3D ret[ret.length-1];=0A= =0A= // Try to do a global search by ID, where we can=0A= if ( m[1] =3D=3D "#" && elem && elem.getElementById ) {=0A= // Optimization for HTML document case=0A= var oid =3D elem.getElementById(m[2]);=0A= =0A= // Do a quick check for the existence of the actual ID attribute=0A= // to avoid selecting by the name attribute in IE=0A= // also check to insure id is a string to avoid selecting an = element with the name of 'id' inside a form=0A= if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && typeof = oid.id =3D=3D "string" && oid.id !=3D m[2] )=0A= oid =3D jQuery('[@id=3D"'+m[2]+'"]', elem)[0];=0A= =0A= // Do a quick check for node name (where applicable) so=0A= // that div#foo searches will be really fast=0A= ret =3D r =3D oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] = : [];=0A= } else {=0A= // We need to find all descendant elements=0A= for ( var i =3D 0; ret[i]; i++ ) {=0A= // Grab the tag name being searched for=0A= var tag =3D m[1] !=3D "" || m[0] =3D=3D "" ? "*" : m[2];=0A= =0A= // Handle IE7 being really dumb about s=0A= if ( tag =3D=3D "*" && ret[i].nodeName.toLowerCase() =3D=3D = "object" )=0A= tag =3D "param";=0A==0A= r =3D jQuery.merge( r, ret[i].getElementsByTagName( tag ));=0A= }=0A==0A= // It's faster to filter by class and be done with it=0A= if ( m[1] =3D=3D "." )=0A= r =3D jQuery.classFilter( r, m[2] );=0A==0A= // Same with ID filtering=0A= if ( m[1] =3D=3D "#" ) {=0A= var tmp =3D [];=0A==0A= // Try to find the element with the ID=0A= for ( var i =3D 0; r[i]; i++ )=0A= if ( r[i].getAttribute("id") =3D=3D m[2] ) {=0A= tmp =3D [ r[i] ];=0A= break;=0A= }=0A==0A= r =3D tmp;=0A= }=0A==0A= ret =3D r;=0A= }=0A==0A= t =3D t.replace( re2, "" );=0A= }=0A==0A= }=0A==0A= // If a selector string still exists=0A= if ( t ) {=0A= // Attempt to filter it=0A= var val =3D jQuery.filter(t,r);=0A= ret =3D r =3D val.r;=0A= t =3D jQuery.trim(val.t);=0A= }=0A= }=0A==0A= // An error occurred with the selector;=0A= // just return an empty set instead=0A= if ( t )=0A= ret =3D [];=0A==0A= // Remove the root context=0A= if ( ret && context =3D=3D ret[0] )=0A= ret.shift();=0A==0A= // And combine the results=0A= done =3D jQuery.merge( done, ret );=0A==0A= return done;=0A= },=0A==0A= classFilter: function(r,m,not){=0A= m =3D " " + m + " ";=0A= var tmp =3D [];=0A= for ( var i =3D 0; r[i]; i++ ) {=0A= var pass =3D (" " + r[i].className + " ").indexOf( m ) >=3D 0;=0A= if ( !not && pass || not && !pass )=0A= tmp.push( r[i] );=0A= }=0A= return tmp;=0A= },=0A==0A= filter: function(t,r,not) {=0A= var last;=0A==0A= // Look for common filter expressions=0A= while ( t && t !=3D last ) {=0A= last =3D t;=0A==0A= var p =3D jQuery.parse, m;=0A==0A= for ( var i =3D 0; p[i]; i++ ) {=0A= m =3D p[i].exec( t );=0A==0A= if ( m ) {=0A= // Remove what we just matched=0A= t =3D t.substring( m[0].length );=0A==0A= m[2] =3D m[2].replace(/\\/g, "");=0A= break;=0A= }=0A= }=0A==0A= if ( !m )=0A= break;=0A==0A= // :not() is a special case that can be optimized by=0A= // keeping it out of the expression list=0A= if ( m[1] =3D=3D ":" && m[2] =3D=3D "not" )=0A= r =3D jQuery.filter(m[3], r, true).r;=0A==0A= // We can get a big speed boost by filtering by class here=0A= else if ( m[1] =3D=3D "." )=0A= r =3D jQuery.classFilter(r, m[2], not);=0A==0A= else if ( m[1] =3D=3D "@" ) {=0A= var tmp =3D [], type =3D m[3];=0A= =0A= for ( var i =3D 0, rl =3D r.length; i < rl; i++ ) {=0A= var a =3D r[i], z =3D a[ jQuery.props[m[2]] || m[2] ];=0A= =0A= if ( z =3D=3D null || /href|src/.test(m[2]) )=0A= z =3D jQuery.attr(a,m[2]) || '';=0A==0A= if ( (type =3D=3D "" && !!z ||=0A= type =3D=3D "=3D" && z =3D=3D m[5] ||=0A= type =3D=3D "!=3D" && z !=3D m[5] ||=0A= type =3D=3D "^=3D" && z && !z.indexOf(m[5]) ||=0A= type =3D=3D "$=3D" && z.substr(z.length - m[5].length) =3D=3D =m[5] ||=0A= (type =3D=3D "*=3D" || type =3D=3D "~=3D") && z.indexOf(m[5]) =>=3D 0) ^ not )=0A= tmp.push( a );=0A= }=0A= =0A= r =3D tmp;=0A==0A= // We can get a speed boost by handling nth-child here=0A= } else if ( m[1] =3D=3D ":" && m[2] =3D=3D "nth-child" ) {=0A= var num =3D jQuery.mergeNum++, tmp =3D [],=0A= test =3D /(\d*)n\+?(\d*)/.exec(=0A= m[3] =3D=3D "even" && "2n" || m[3] =3D=3D "odd" && "2n+1" ||=0A= !/\D/.test(m[3]) && "n+" + m[3] || m[3]),=0A= first =3D (test[1] || 1) - 0, last =3D test[2] - 0;=0A==0A= for ( var i =3D 0, rl =3D r.length; i < rl; i++ ) {=0A= var node =3D r[i], parentNode =3D node.parentNode;=0A==0A= if ( num !=3D parentNode.mergeNum ) {=0A= var c =3D 1;=0A==0A= for ( var n =3D parentNode.firstChild; n; n =3D n.nextSibling )=0A= if ( n.nodeType =3D=3D 1 )=0A= n.nodeIndex =3D c++;=0A==0A= parentNode.mergeNum =3D num;=0A= }=0A==0A= var add =3D false;=0A==0A= if ( first =3D=3D 1 ) {=0A= if ( last =3D=3D 0 || node.nodeIndex =3D=3D last )=0A= add =3D true;=0A= } else if ( (node.nodeIndex + last) % first =3D=3D 0 )=0A= add =3D true;=0A==0A= if ( add ^ not )=0A= tmp.push( node );=0A= }=0A==0A= r =3D tmp;=0A==0A= // Otherwise, find the expression to execute=0A= } else {=0A= var f =3D jQuery.expr[m[1]];=0A= if ( typeof f !=3D "string" )=0A= f =3D jQuery.expr[m[1]][m[2]];=0A==0A= // Build a custom macro to enclose it=0A= eval("f =3D function(a,i){return " + f + "}");=0A==0A= // Execute it against the current filter=0A= r =3D jQuery.grep( r, f, not );=0A= }=0A= }=0A==0A= // Return an array of filtered elements (r)=0A= // and the modified expression string (t)=0A= return { r: r, t: t };=0A= },=0A= parents: function( elem ){=0A= var matched =3D [];=0A= var cur =3D elem.parentNode;=0A= while ( cur && cur !=3D document ) {=0A= matched.push( cur );=0A= cur =3D cur.parentNode;=0A= }=0A= return matched;=0A= },=0A= nth: function(cur,result,dir,elem){=0A= result =3D result || 1;=0A= var num =3D 0;=0A==0A= for ( ; cur; cur =3D cur[dir] )=0A= if ( cur.nodeType =3D=3D 1 && ++num =3D=3D result )=0A= break;=0A==0A= return cur;=0A= },=0A= sibling: function( n, elem ) {=0A= var r =3D [];=0A==0A= for ( ; n; n =3D n.nextSibling ) {=0A= if ( n.nodeType =3D=3D 1 && (!elem || n !=3D elem) )=0A= r.push( n );=0A= }=0A= =0A= return r;=0A= }=0A=});=0A=/*=0A= * A number of helper functions used for managing events.=0A= * Many of the ideas behind this code orignated from =0A= * Dean Edwards' addEvent library.=0A= */=0A=jQuery.event =3D {=0A==0A= // Bind an event to an element=0A= // Original by Dean Edwards=0A= add: function(element, type, handler, data) {=0A= // For whatever reason, IE has trouble passing the window object=0A= // around, causing it to be cloned in the process=0A= if ( jQuery.browser.msie && element.setInterval !=3D undefined )=0A= element =3D window;=0A= =0A= // Make sure that the function being executed has a unique ID=0A= if ( !handler.guid )=0A= handler.guid =3D this.guid++;=0A= =0A= // if data is passed, bind to handler =0A= if( data !=3D undefined ) { =0A= // Create temporary function pointer to original handler =0A= var fn =3D handler; =0A==0A= // Create unique handler function, wrapped around original handler =0A= handler =3D function() { =0A= // Pass arguments and context to original handler =0A= return fn.apply(this, arguments); =0A= };=0A==0A= // Store data in unique handler =0A= handler.data =3D data;=0A==0A= // Set the guid of unique handler to the same of original handler, so =it can be removed =0A= handler.guid =3D fn.guid;=0A= }=0A==0A= // Init the element's event structure=0A= if (!element.$events)=0A= element.$events =3D {};=0A= =0A= if (!element.$handle)=0A= element.$handle =3D function() {=0A= // returned undefined or false=0A= var val;=0A==0A= // Handle the second event of a trigger and when=0A= // an event is called after a page has unloaded=0A= if ( typeof jQuery =3D=3D "undefined" || jQuery.event.triggered )=0A= return val;=0A= =0A= val =3D jQuery.event.handle.apply(element, arguments);=0A= =0A= return val;=0A= };=0A==0A= // Get the current list of functions bound to this event=0A= var handlers =3D element.$events[type];=0A==0A= // Init the event handler queue=0A= if (!handlers) {=0A= handlers =3D element.$events[type] =3D {}; =0A= =0A= // And bind the global event handler to the element=0A= if (element.addEventListener)=0A= element.addEventListener(type, element.$handle, false);=0A= else=0A= element.attachEvent("on" + type, element.$handle);=0A= }=0A==0A= // Add the function to the element's handler list=0A= handlers[handler.guid] =3D handler;=0A==0A= // Remember the function in a global list (for triggering)=0A= if (!this.global[type])=0A= this.global[type] =3D [];=0A= // Only add the element to the global list once=0A= if (jQuery.inArray(element, this.global[type]) =3D=3D -1)=0A= this.global[type].push( element );=0A= },=0A==0A= guid: 1,=0A= global: {},=0A==0A= // Detach an event or set of events from an element=0A= remove: function(element, type, handler) {=0A= var events =3D element.$events, ret, index;=0A==0A= if ( events ) {=0A= // type is actually an event object here=0A= if ( type && type.type ) {=0A= handler =3D type.handler;=0A= type =3D type.type;=0A= }=0A= =0A= if ( !type ) {=0A= for ( type in events )=0A= this.remove( element, type );=0A==0A= } else if ( events[type] ) {=0A= // remove the given handler for the given type=0A= if ( handler )=0A= delete events[type][handler.guid];=0A= =0A= // remove all handlers for the given type=0A= else=0A= for ( handler in element.$events[type] )=0A= delete events[type][handler];=0A= =0A= // remove generic event handler if no more handlers exist=0A= for ( ret in events[type] ) break;=0A= if ( !ret ) {=0A= if (element.removeEventListener)=0A= element.removeEventListener(type, element.$handle, false);=0A= else=0A= element.detachEvent("on" + type, element.$handle);=0A= ret =3D null;=0A= delete events[type];=0A= =0A= // Remove element from the global event type cache=0A= while ( this.global[type] && ( (index =3D jQuery.inArray(element, = this.global[type])) >=3D 0 ) )=0A= delete this.global[type][index];=0A= }=0A= }=0A==0A= // Remove the expando if it's no longer used=0A= for ( ret in events ) break;=0A= if ( !ret )=0A= element.$handle =3D element.$events =3D null;=0A= }=0A= },=0A==0A= trigger: function(type, data, element) {=0A= // Clone the incoming data, if any=0A= data =3D jQuery.makeArray(data || []);=0A==0A= // Handle a global trigger=0A= if ( !element )=0A= jQuery.each( this.global[type] || [], function(){=0A= jQuery.event.trigger( type, data, this );=0A= });=0A==0A= // Handle triggering a single element=0A= else {=0A= var val, ret, fn =3D jQuery.isFunction( element[ type ] || null );=0A= =0A= // Pass along a fake event=0A= data.unshift( this.fix({ type: type, target: element }) );=0A==0A= // Trigger the event=0A= if ( jQuery.isFunction(element.$handle) && (val =3D =element.$handle.apply( element, data )) !=3D=3D false )=0A= this.triggered =3D true;=0A==0A= if ( fn && val !=3D=3D false && !jQuery.nodeName(element, 'a') )=0A= element[ type ]();=0A==0A= this.triggered =3D false;=0A= }=0A= },=0A==0A= handle: function(event) {=0A= // returned undefined or false=0A= var val;=0A==0A= // Empty object is for triggered events with no data=0A= event =3D jQuery.event.fix( event || window.event || {} ); =0A==0A= var c =3D this.$events && this.$events[event.type], args =3D =[].slice.call( arguments, 1 );=0A= args.unshift( event );=0A==0A= for ( var j in c ) {=0A= // Pass in a reference to the handler function itself=0A= // So that we can later remove it=0A= args[0].handler =3D c[j];=0A= args[0].data =3D c[j].data;=0A==0A= if ( c[j].apply( this, args ) =3D=3D=3D false ) {=0A= event.preventDefault();=0A= event.stopPropagation();=0A= val =3D false;=0A= }=0A= }=0A==0A= // Clean up added properties in IE to prevent memory leak=0A= if (jQuery.browser.msie)=0A= event.target =3D event.preventDefault =3D event.stopPropagation =3D=0A= event.handler =3D event.data =3D null;=0A==0A= return val;=0A= },=0A==0A= fix: function(event) {=0A= // store a copy of the original event object =0A= // and clone to set read-only properties=0A= var originalEvent =3D event;=0A= event =3D jQuery.extend({}, originalEvent);=0A= =0A= // add preventDefault and stopPropagation since =0A= // they will not work on the clone=0A= event.preventDefault =3D function() {=0A= // if preventDefault exists run it on the original event=0A= if (originalEvent.preventDefault)=0A= return originalEvent.preventDefault();=0A= // otherwise set the returnValue property of the original event to =false (IE)=0A= originalEvent.returnValue =3D false;=0A= };=0A= event.stopPropagation =3D function() {=0A= // if stopPropagation exists run it on the original event=0A= if (originalEvent.stopPropagation)=0A= return originalEvent.stopPropagation();=0A= // otherwise set the cancelBubble property of the original event to =true (IE)=0A= originalEvent.cancelBubble =3D true;=0A= };=0A= =0A= // Fix target property, if necessary=0A= if ( !event.target && event.srcElement )=0A= event.target =3D event.srcElement;=0A= =0A= // check if target is a textnode (safari)=0A= if (jQuery.browser.safari && event.target.nodeType =3D=3D 3)=0A= event.target =3D originalEvent.target.parentNode;=0A==0A= // Add relatedTarget, if necessary=0A= if ( !event.relatedTarget && event.fromElement )=0A= event.relatedTarget =3D event.fromElement =3D=3D event.target ? =event.toElement : event.fromElement;=0A==0A= // Calculate pageX/Y if missing and clientX/Y available=0A= if ( event.pageX =3D=3D null && event.clientX !=3D null ) {=0A= var e =3D document.documentElement, b =3D document.body;=0A= event.pageX =3D event.clientX + (e && e.scrollLeft || b.scrollLeft);=0A= event.pageY =3D event.clientY + (e && e.scrollTop || b.scrollTop);=0A= }=0A= =0A= // Add which for key events=0A= if ( !event.which && (event.charCode || event.keyCode) )=0A= event.which =3D event.charCode || event.keyCode;=0A= =0A= // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for =Macs)=0A= if ( !event.metaKey && event.ctrlKey )=0A= event.metaKey =3D event.ctrlKey;=0A==0A= // Add which for click: 1 =3D=3D left; 2 =3D=3D middle; 3 =3D=3D right=0A= // Note: button is not normalized, so don't use it=0A= if ( !event.which && event.button )=0A= event.which =3D (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( = event.button & 4 ? 2 : 0 ) ));=0A= =0A= return event;=0A= }=0A=};=0A==0A= jQuery.fn.extend({=0A= bind: function( type, data, fn ) {=0A= return type =3D=3D "unload" ? this.one(type, data, fn) : =this.each(function(){=0A= jQuery.event.add( this, type, fn || data, fn && data );=0A= });=0A= },=0A= one: function( type, data, fn ) {=0A= return this.each(function(){=0A= jQuery.event.add( this, type, function(event) {=0A= jQuery(this).unbind(event);=0A= return (fn || data).apply( this, arguments);=0A= }, fn && data);=0A= });=0A= },=0A= unbind: function( type, fn ) {=0A= return this.each(function(){=0A= jQuery.event.remove( this, type, fn );=0A= });=0A= },=0A= trigger: function( type, data ) {=0A= return this.each(function(){=0A= jQuery.event.trigger( type, data, this );=0A= });=0A= },=0A= toggle: function() {=0A= // Save reference to arguments for access in closure=0A= var a =3D arguments;=0A==0A= return this.click(function(e) {=0A= // Figure out which function to execute=0A= this.lastToggle =3D 0 =3D=3D this.lastToggle ? 1 : 0;=0A= =0A= // Make sure that clicks stop=0A= e.preventDefault();=0A= =0A= // and execute the function=0A= return a[this.lastToggle].apply( this, [e] ) || false;=0A= });=0A= },=0A= hover: function(f,g) {=0A= =0A= // A private function for handling mouse 'hovering'=0A= function handleHover(e) {=0A= // Check if mouse(over|out) are still within the same parent element=0A= var p =3D e.relatedTarget;=0A= =0A= // Traverse up the tree=0A= while ( p && p !=3D this ) try { p =3D p.parentNode } catch(e) { p ==3D this; };=0A= =0A= // If we actually just moused on to a sub-element, ignore it=0A= if ( p =3D=3D this ) return false;=0A= =0A= // Execute the right function=0A= return (e.type =3D=3D "mouseover" ? f : g).apply(this, [e]);=0A= }=0A= =0A= // Bind the function to the two event listeners=0A= return this.mouseover(handleHover).mouseout(handleHover);=0A= },=0A= ready: function(f) {=0A= // If the DOM is already ready=0A= if ( jQuery.isReady ){=0A= // Execute the function immediately=0A= f.apply( document, [jQuery] );=0A= } =0A= // Otherwise, remember the function for later=0A= else{=0A= // Add the function to the wait list=0A= jQuery.readyList.push( function() { return f.apply(this, [jQuery]) } =);=0A= }=0A= return this;=0A= }=0A=});=0A==0A=jQuery.extend({=0A= /*=0A= * All the code that makes DOM Ready work nicely.=0A= */=0A= isReady: false,=0A= readyList: [],=0A= =0A= // Handle when the DOM is ready=0A= ready: function() {=0A= // Make sure that the DOM is not already loaded=0A= if ( !jQuery.isReady ) {=0A= // Remember that the DOM is ready=0A= jQuery.isReady =3D true;=0A= =0A= // If there are functions bound, to execute=0A= if ( jQuery.readyList ) {=0A= // Execute all of them=0A= jQuery.each( jQuery.readyList, function(){=0A= this.apply( document );=0A= });=0A= =0A= // Reset the list of functions=0A= jQuery.readyList =3D null;=0A= }=0A= // Remove event listener to avoid memory leak=0A= if ( jQuery.browser.mozilla || jQuery.browser.opera )=0A= document.removeEventListener( "DOMContentLoaded", jQuery.ready, =false );=0A= =0A= // Remove script element used by IE hack=0A= if( !window.frames.length ) // don't remove if frames are present =(#1187)=0A= jQuery(window).load(function(){ jQuery("#__ie_init").remove(); });=0A= }=0A= }=0A=});=0A==0A=new function(){=0A==0A= jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +=0A= "mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + =0A= "submit,keydown,keypress,keyup,error").split(","), function(i,o){=0A= =0A= // Handle event binding=0A= jQuery.fn[o] =3D function(f){=0A= return f ? this.bind(o, f) : this.trigger(o);=0A= };=0A= =0A= });=0A= =0A= // If Mozilla is used=0A= if ( jQuery.browser.mozilla || jQuery.browser.opera )=0A= // Use the handy event callback=0A= document.addEventListener( "DOMContentLoaded", jQuery.ready, false );=0A= =0A= // If IE is used, use the excellent hack by Matthias Miller=0A= // = http://www.outofhanwell.com/blog/index.php?title=3Dthe_window_onload_prob= lem_revisited=0A= else if ( jQuery.browser.msie ) {=0A= =0A= // Only works if you document.write() it=0A= document.write("<\/script>");=0A= =0A= // Use the defer script hack=0A= var script =3D document.getElementById("__ie_init");=0A= =0A= // script does not exist if jQuery is loaded dynamically=0A= if ( script ) =0A= script.onreadystatechange =3D function() {=0A= if ( this.readyState !=3D "complete" ) return;=0A= jQuery.ready();=0A= };=0A= =0A= // Clear from memory=0A= script =3D null;=0A= =0A= // If Safari is used=0A= } else if ( jQuery.browser.safari )=0A= // Continually check to see if the document.readyState is valid=0A= jQuery.safariTimer =3D setInterval(function(){=0A= // loaded and complete are both valid states=0A= if ( document.readyState =3D=3D "loaded" || =0A= document.readyState =3D=3D "complete" ) {=0A= =0A= // If either one are found, remove the timer=0A= clearInterval( jQuery.safariTimer );=0A= jQuery.safariTimer =3D null;=0A= =0A= // and execute any waiting functions=0A= jQuery.ready();=0A= }=0A= }, 10); =0A==0A= // A fallback to window.onload, that will always work=0A= jQuery.event.add( window, "load", jQuery.ready );=0A= =0A=};=0A==0A=// Clean up after IE to avoid memory leaks=0A=if (jQuery.browser.msie)=0A= jQuery(window).one("unload", function() {=0A= var global =3D jQuery.event.global;=0A= for ( var type in global ) {=0A= var els =3D global[type], i =3D els.length;=0A= if ( i && type !=3D 'unload' )=0A= do=0A= els[i-1] && jQuery.event.remove(els[i-1], type);=0A= while (--i);=0A= }=0A= });=0A=jQuery.fn.extend({=0A= loadIfModified: function( url, params, callback ) {=0A= this.load( url, params, callback, 1 );=0A= },=0A= load: function( url, params, callback, ifModified ) {=0A= if ( jQuery.isFunction( url ) )=0A= return this.bind("load", url);=0A==0A= callback =3D callback || function(){};=0A= =0A= // Default to a GET request=0A= var type =3D "GET";=0A==0A= // If the second parameter was provided=0A= if ( params )=0A= // If it's a function=0A= if ( jQuery.isFunction( params ) ) {=0A= // We assume that it's the callback=0A= callback =3D params;=0A= params =3D null;=0A==0A= // Otherwise, build a param string=0A= } else {=0A= params =3D jQuery.param( params );=0A= type =3D "POST";=0A= }=0A==0A= var self =3D this;=0A==0A= // Request the remote document=0A= jQuery.ajax({=0A= url: url,=0A= type: type,=0A= data: params,=0A= ifModified: ifModified,=0A= complete: function(res, status){=0A= if ( status =3D=3D "success" || !ifModified && status =3D=3D ="notmodified" )=0A= // Inject the HTML into all the matched elements=0A= self.attr("innerHTML", res.responseText)=0A= // Execute all the scripts inside of the newly-injected HTML=0A= .evalScripts()=0A= // Execute callback=0A= .each( callback, [res.responseText, status, res] );=0A= else=0A= callback.apply( self, [res.responseText, status, res] );=0A= }=0A= });=0A= return this;=0A= },=0A= serialize: function() {=0A= return jQuery.param( this );=0A= },=0A= evalScripts: function() {=0A= return this.find("script").each(function(){=0A= if ( this.src )=0A= jQuery.getScript( this.src );=0A= else=0A= jQuery.globalEval( this.text || this.textContent || this.innerHTML =|| "" );=0A= }).end();=0A= }=0A==0A=});=0A==0A=// Attach a bunch of functions for handling common AJAX events=0A==0A=jQuery.each( = "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(",="), function(i,o){=0A= jQuery.fn[o] =3D function(f){=0A= return this.bind(o, f);=0A= };=0A=});=0A==0A=jQuery.extend({=0A= get: function( url, data, callback, type, ifModified ) {=0A= // shift arguments if data argument was ommited=0A= if ( jQuery.isFunction( data ) ) {=0A= callback =3D data;=0A= data =3D null;=0A= }=0A= =0A= return jQuery.ajax({=0A= type: "GET",=0A= url: url,=0A= data: data,=0A= success: callback,=0A= dataType: type,=0A= ifModified: ifModified=0A= });=0A= },=0A= getIfModified: function( url, data, callback, type ) {=0A= return jQuery.get(url, data, callback, type, 1);=0A= },=0A= getScript: function( url, callback ) {=0A= return jQuery.get(url, null, callback, "script");=0A= },=0A= getJSON: function( url, data, callback ) {=0A= return jQuery.get(url, data, callback, "json");=0A= },=0A= post: function( url, data, callback, type ) {=0A= if ( jQuery.isFunction( data ) ) {=0A= callback =3D data;=0A= data =3D {};=0A= }=0A==0A= return jQuery.ajax({=0A= type: "POST",=0A= url: url,=0A= data: data,=0A= success: callback,=0A= dataType: type=0A= });=0A= },=0A= ajaxTimeout: function( timeout ) {=0A= jQuery.ajaxSettings.timeout =3D timeout;=0A= },=0A= ajaxSetup: function( settings ) {=0A= jQuery.extend( jQuery.ajaxSettings, settings );=0A= },=0A= =0A= ajaxSettings: {=0A= global: true,=0A= type: "GET",=0A= timeout: 0,=0A= contentType: "application/x-www-form-urlencoded",=0A= processData: true,=0A= async: true,=0A= data: null=0A= },=0A= =0A= // Last-Modified header cache for next request=0A= lastModified: {},=0A= ajax: function( s ) {=0A= // TODO introduce global settings, allowing the client to modify them = for all requests, not only timeout=0A= s =3D jQuery.extend({}, jQuery.ajaxSettings, s);=0A==0A= // if data available=0A= if ( s.data ) {=0A= // convert data if not already a string=0A= if (s.processData && typeof s.data !=3D "string")=0A= s.data =3D jQuery.param(s.data);=0A= // append data to url for get requests=0A= if( s.type.toLowerCase() =3D=3D "get" ) {=0A= // "?" + data or "&" + data (in case there are already params)=0A= s.url +=3D ((s.url.indexOf("?") > -1) ? "&" : "?") + s.data;=0A= // IE likes to send both get and post data, prevent this=0A= s.data =3D null;=0A= }=0A= }=0A==0A= // Watch for a new set of requests=0A= if ( s.global && ! jQuery.active++ )=0A= jQuery.event.trigger( "ajaxStart" );=0A==0A= var requestDone =3D false;=0A==0A= // Create the request object; Microsoft failed to properly=0A= // implement the XMLHttpRequest in IE7, so we use the ActiveXObject =when it is available=0A= var xml =3D window.ActiveXObject ? new =ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();=0A==0A= // Open the socket=0A= xml.open(s.type, s.url, s.async);=0A==0A= // Set the correct header, if data is being sent=0A= if ( s.data )=0A= xml.setRequestHeader("Content-Type", s.contentType);=0A==0A= // Set the If-Modified-Since header, if ifModified mode.=0A= if ( s.ifModified )=0A= xml.setRequestHeader("If-Modified-Since",=0A= jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );=0A==0A= // Set header so the called script knows that it's an XMLHttpRequest=0A= xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");=0A==0A= // Allow custom headers/mimetypes=0A= if( s.beforeSend )=0A= s.beforeSend(xml);=0A= =0A= if ( s.global )=0A= jQuery.event.trigger("ajaxSend", [xml, s]);=0A==0A= // Wait for a response to come back=0A= var onreadystatechange =3D function(isTimeout){=0A= // The transfer is complete and the data is available, or the request =timed out=0A= if ( xml && (xml.readyState =3D=3D 4 || isTimeout =3D=3D "timeout") ) = {=0A= requestDone =3D true;=0A= =0A= // clear poll interval=0A= if (ival) {=0A= clearInterval(ival);=0A= ival =3D null;=0A= }=0A= =0A= var status;=0A= try {=0A= status =3D jQuery.httpSuccess( xml ) && isTimeout !=3D "timeout" ?=0A= s.ifModified && jQuery.httpNotModified( xml, s.url ) ? ="notmodified" : "success" : "error";=0A= // Make sure that the request was successful or notmodified=0A= if ( status !=3D "error" ) {=0A= // Cache Last-Modified header, if ifModified mode.=0A= var modRes;=0A= try {=0A= modRes =3D xml.getResponseHeader("Last-Modified");=0A= } catch(e) {} // swallow exception thrown by FF if header is not =available=0A= =0A= if ( s.ifModified && modRes )=0A= jQuery.lastModified[s.url] =3D modRes;=0A= =0A= // process the data (runs the xml through httpData regardless of =callback)=0A= var data =3D jQuery.httpData( xml, s.dataType );=0A= =0A= // If a local callback was specified, fire it and pass it the data=0A= if ( s.success )=0A= s.success( data, status );=0A= =0A= // Fire the global callback=0A= if( s.global )=0A= jQuery.event.trigger( "ajaxSuccess", [xml, s] );=0A= } else=0A= jQuery.handleError(s, xml, status);=0A= } catch(e) {=0A= status =3D "error";=0A= jQuery.handleError(s, xml, status, e);=0A= }=0A==0A= // The request was completed=0A= if( s.global )=0A= jQuery.event.trigger( "ajaxComplete", [xml, s] );=0A==0A= // Handle the global AJAX counter=0A= if ( s.global && ! --jQuery.active )=0A= jQuery.event.trigger( "ajaxStop" );=0A==0A= // Process result=0A= if ( s.complete )=0A= s.complete(xml, status);=0A==0A= // Stop memory leaks=0A= if(s.async)=0A= xml =3D null;=0A= }=0A= };=0A= =0A= // don't attach the handler to the request, just poll it instead=0A= var ival =3D setInterval(onreadystatechange, 13); =0A==0A= // Timeout checker=0A= if ( s.timeout > 0 )=0A= setTimeout(function(){=0A= // Check to see if the request is still happening=0A= if ( xml ) {=0A= // Cancel the request=0A= xml.abort();=0A==0A= if( !requestDone )=0A= onreadystatechange( "timeout" );=0A= }=0A= }, s.timeout);=0A= =0A= // Send the data=0A= try {=0A= xml.send(s.data);=0A= } catch(e) {=0A= jQuery.handleError(s, xml, null, e);=0A= }=0A= =0A= // firefox 1.5 doesn't fire statechange for sync requests=0A= if ( !s.async )=0A= onreadystatechange();=0A= =0A= // return XMLHttpRequest to allow aborting the request etc.=0A= return xml;=0A= },=0A==0A= handleError: function( s, xml, status, e ) {=0A= // If a local callback was specified, fire it=0A= if ( s.error ) s.error( xml, status, e );=0A==0A= // Fire the global callback=0A= if ( s.global )=0A= jQuery.event.trigger( "ajaxError", [xml, s, e] );=0A= },=0A==0A= // Counter for holding the number of active queries=0A= active: 0,=0A==0A= // Determines if an XMLHttpRequest was successful or not=0A= httpSuccess: function( r ) {=0A= try {=0A= return !r.status && location.protocol =3D=3D "file:" ||=0A= ( r.status >=3D 200 && r.status < 300 ) || r.status =3D=3D 304 ||=0A= jQuery.browser.safari && r.status =3D=3D undefined;=0A= } catch(e){}=0A= return false;=0A= },=0A==0A= // Determines if an XMLHttpRequest returns NotModified=0A= httpNotModified: function( xml, url ) {=0A= try {=0A= var xmlRes =3D xml.getResponseHeader("Last-Modified");=0A==0A= // Firefox always returns 200. check Last-Modified date=0A= return xml.status =3D=3D 304 || xmlRes =3D=3D =jQuery.lastModified[url] ||=0A= jQuery.browser.safari && xml.status =3D=3D undefined;=0A= } catch(e){}=0A= return false;=0A= },=0A==0A= /* Get the data out of an XMLHttpRequest.=0A= * Return parsed XML if content-type header is "xml" and type is "xml" =or omitted,=0A= * otherwise return plain text.=0A= * (String) data - The type of data that you're expecting back,=0A= * (e.g. "xml", "html", "script")=0A= */=0A= httpData: function( r, type ) {=0A= var ct =3D r.getResponseHeader("content-type");=0A= var data =3D !type && ct && ct.indexOf("xml") >=3D 0;=0A= data =3D type =3D=3D "xml" || data ? r.responseXML : r.responseText;=0A==0A= // If the type is "script", eval it in global context=0A= if ( type =3D=3D "script" )=0A= jQuery.globalEval( data );=0A==0A= // Get the JavaScript object, if JSON is used.=0A= if ( type =3D=3D "json" )=0A= data =3D eval("(" + data + ")");=0A==0A= // evaluate scripts within html=0A= if ( type =3D=3D "html" )=0A= jQuery("
").html(data).evalScripts();=0A==0A= return data;=0A= },=0A= =0A= // Serialize an array of form elements or a set of=0A= // key/values into a query string=0A= param: function( a ) {=0A= var s =3D [];=0A==0A= // If an array was passed in, assume that it is an array=0A= // of form elements=0A= if ( a.constructor =3D=3D Array || a.jquery )=0A= // Serialize the form elements=0A= jQuery.each( a, function(){=0A= s.push( encodeURIComponent(this.name) + "=3D" + encodeURIComponent( =this.value ) );=0A= });=0A==0A= // Otherwise, assume that it's an object of key/value pairs=0A= else=0A= // Serialize the key/values=0A= for ( var j in a )=0A= // If the value is an array then the key names need to be repeated=0A= if ( a[j] && a[j].constructor =3D=3D Array )=0A= jQuery.each( a[j], function(){=0A= s.push( encodeURIComponent(j) + "=3D" + encodeURIComponent( this ) =);=0A= });=0A= else=0A= s.push( encodeURIComponent(j) + "=3D" + encodeURIComponent( a[j] ) =);=0A==0A= // Return the resulting serialization=0A= return s.join("&");=0A= },=0A= =0A= // evalulates a script in global context=0A= // not reliable for safari=0A= globalEval: function( data ) {=0A= if ( window.execScript )=0A= window.execScript( data );=0A= else if ( jQuery.browser.safari )=0A= // safari doesn't provide a synchronous global eval=0A= window.setTimeout( data, 0 );=0A= else=0A= eval.call( window, data );=0A= }=0A==0A=});=0A= jQuery.fn.extend({=0A==0A= show: function(speed,callback){=0A= return speed ?=0A= this.animate({=0A= height: "show", width: "show", opacity: "show"=0A= }, speed, callback) :=0A= =0A= this.filter(":hidden").each(function(){=0A= this.style.display =3D this.oldblock ? this.oldblock : "";=0A= if ( jQuery.css(this,"display") =3D=3D "none" )=0A= this.style.display =3D "block";=0A= }).end();=0A= },=0A==0A= hide: function(speed,callback){=0A= return speed ?=0A= this.animate({=0A= height: "hide", width: "hide", opacity: "hide"=0A= }, speed, callback) :=0A= =0A= this.filter(":visible").each(function(){=0A= this.oldblock =3D this.oldblock || jQuery.css(this,"display");=0A= if ( this.oldblock =3D=3D "none" )=0A= this.oldblock =3D "block";=0A= this.style.display =3D "none";=0A= }).end();=0A= },=0A==0A= // Save the old toggle function=0A= _toggle: jQuery.fn.toggle,=0A= toggle: function( fn, fn2 ){=0A= return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?=0A= this._toggle( fn, fn2 ) :=0A= fn ?=0A= this.animate({=0A= height: "toggle", width: "toggle", opacity: "toggle"=0A= }, fn, fn2) :=0A= this.each(function(){=0A= jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();=0A= });=0A= },=0A= slideDown: function(speed,callback){=0A= return this.animate({height: "show"}, speed, callback);=0A= },=0A= slideUp: function(speed,callback){=0A= return this.animate({height: "hide"}, speed, callback);=0A= },=0A= slideToggle: function(speed, callback){=0A= return this.animate({height: "toggle"}, speed, callback);=0A= },=0A= fadeIn: function(speed, callback){=0A= return this.animate({opacity: "show"}, speed, callback);=0A= },=0A= fadeOut: function(speed, callback){=0A= return this.animate({opacity: "hide"}, speed, callback);=0A= },=0A= fadeTo: function(speed,to,callback){=0A= return this.animate({opacity: to}, speed, callback);=0A= },=0A= animate: function( prop, speed, easing, callback ) {=0A= return this.queue(function(){=0A= var hidden =3D jQuery(this).is(":hidden"),=0A= opt =3D jQuery.speed(speed, easing, callback),=0A= self =3D this;=0A= =0A= for ( var p in prop ) {=0A= if ( prop[p] =3D=3D "hide" && hidden || prop[p] =3D=3D "show" && = !hidden )=0A= return jQuery.isFunction(opt.complete) && opt.complete.apply(this);=0A==0A= if ( p =3D=3D "height" || p =3D=3D "width" ) {=0A= // Store display property=0A= opt.display =3D jQuery.css(this, "display");=0A==0A= // Make sure that nothing sneaks out=0A= opt.overflow =3D this.style.overflow;=0A= }=0A= }=0A==0A= if ( opt.overflow !=3D null )=0A= this.style.overflow =3D "hidden";=0A= =0A= this.curAnim =3D jQuery.extend({}, prop);=0A= =0A= jQuery.each( prop, function(name, val){=0A= var e =3D new jQuery.fx( self, opt, name );=0A= if ( val.constructor =3D=3D Number )=0A= e.custom( e.cur(), val );=0A= else=0A= e[ val =3D=3D "toggle" ? hidden ? "show" : "hide" : val ]( prop );=0A= });=0A= });=0A= },=0A= queue: function(type,fn){=0A= if ( !fn ) {=0A= fn =3D type;=0A= type =3D "fx";=0A= }=0A= =0A= return this.each(function(){=0A= if ( !this.queue )=0A= this.queue =3D {};=0A= =0A= if ( !this.queue[type] )=0A= this.queue[type] =3D [];=0A= =0A= this.queue[type].push( fn );=0A= =0A= if ( this.queue[type].length =3D=3D 1 )=0A= fn.apply(this);=0A= });=0A= }=0A==0A=});=0A==0A= jQuery.extend({=0A= =0A= speed: function(speed, easing, fn) {=0A= var opt =3D speed && speed.constructor =3D=3D Object ? speed : {=0A= complete: fn || !fn && easing || =0A= jQuery.isFunction( speed ) && speed,=0A= duration: speed,=0A= easing: fn && easing || easing && easing.constructor !=3D Function && =easing || (jQuery.easing.swing ? "swing" : "linear")=0A= };=0A= =0A= opt.duration =3D (opt.duration && opt.duration.constructor =3D=3D = Number ? =0A= opt.duration : =0A= { slow: 600, fast: 200 }[opt.duration]) || 400;=0A= =0A= // Queueing=0A= opt.old =3D opt.complete;=0A= opt.complete =3D function(){=0A= jQuery.dequeue(this, "fx");=0A= if ( jQuery.isFunction( opt.old ) )=0A= opt.old.apply( this );=0A= };=0A= =0A= return opt;=0A= },=0A= =0A= easing: {=0A= linear: function( p, n, firstNum, diff ) {=0A= return firstNum + diff * p;=0A= },=0A= swing: function( p, n, firstNum, diff ) {=0A= return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;=0A= }=0A= },=0A= =0A= queue: {},=0A= =0A= dequeue: function(elem,type){=0A= type =3D type || "fx";=0A= =0A= if ( elem.queue && elem.queue[type] ) {=0A= // Remove self=0A= elem.queue[type].shift();=0A= =0A= // Get next function=0A= var f =3D elem.queue[type][0];=0A= =0A= if ( f ) f.apply( elem );=0A= }=0A= },=0A==0A= timers: [],=0A==0A= /*=0A= * I originally wrote fx() as a clone of moo.fx and in the process=0A= * of making it small in size the code became illegible to sane=0A= * people. You've been warned.=0A= */=0A= =0A= fx: function( elem, options, prop ){=0A= =0A= var z =3D this;=0A==0A= // The styles=0A= var y =3D elem.style;=0A= =0A= // Simple function for setting a style value=0A= z.a =3D function(){=0A= if ( options.step )=0A= options.step.apply( elem, [ z.now ] );=0A==0A= if ( prop =3D=3D "opacity" )=0A= jQuery.attr(y, "opacity", z.now); // Let attr handle opacity=0A= else {=0A= y[prop] =3D parseInt(z.now) + "px";=0A= y.display =3D "block"; // Set display property to block for animation=0A= }=0A= };=0A==0A= // Figure out the maximum number to run to=0A= z.max =3D function(){=0A= return parseFloat( jQuery.css(elem,prop) );=0A= };=0A==0A= // Get the current size=0A= z.cur =3D function(){=0A= var r =3D parseFloat( jQuery.curCSS(elem, prop) );=0A= return r && r > -10000 ? r : z.max();=0A= };=0A==0A= // Start an animation from one number to another=0A= z.custom =3D function(from,to){=0A= z.startTime =3D (new Date()).getTime();=0A= z.now =3D from;=0A= z.a();=0A==0A= jQuery.timers.push(function(){=0A= return z.step(from, to);=0A= });=0A==0A= if ( jQuery.timers.length =3D=3D 1 ) {=0A= var timer =3D setInterval(function(){=0A= var timers =3D jQuery.timers;=0A= =0A= for ( var i =3D 0; i < timers.length; i++ )=0A= if ( !timers[i]() )=0A= timers.splice(i--, 1);=0A==0A= if ( !timers.length )=0A= clearInterval( timer );=0A= }, 13);=0A= }=0A= };=0A==0A= // Simple 'show' function=0A= z.show =3D function(){=0A= if ( !elem.orig ) elem.orig =3D {};=0A==0A= // Remember where we started, so that we can go back to it later=0A= elem.orig[prop] =3D jQuery.attr( elem.style, prop );=0A==0A= options.show =3D true;=0A==0A= // Begin the animation=0A= z.custom(0, this.cur());=0A==0A= // Make sure that we start at a small width/height to avoid any=0A= // flash of content=0A= if ( prop !=3D "opacity" )=0A= y[prop] =3D "1px";=0A= =0A= // Start by showing the element=0A= jQuery(elem).show();=0A= };=0A==0A= // Simple 'hide' function=0A= z.hide =3D function(){=0A= if ( !elem.orig ) elem.orig =3D {};=0A==0A= // Remember where we started, so that we can go back to it later=0A= elem.orig[prop] =3D jQuery.attr( elem.style, prop );=0A==0A= options.hide =3D true;=0A==0A= // Begin the animation=0A= z.custom(this.cur(), 0);=0A= };=0A==0A= // Each step of an animation=0A= z.step =3D function(firstNum, lastNum){=0A= var t =3D (new Date()).getTime();=0A==0A= if (t > options.duration + z.startTime) {=0A= z.now =3D lastNum;=0A= z.a();=0A==0A= if (elem.curAnim) elem.curAnim[ prop ] =3D true;=0A==0A= var done =3D true;=0A= for ( var i in elem.curAnim )=0A= if ( elem.curAnim[i] !=3D=3D true )=0A= done =3D false;=0A==0A= if ( done ) {=0A= if ( options.display !=3D null ) {=0A= // Reset the overflow=0A= y.overflow =3D options.overflow;=0A= =0A= // Reset the display=0A= y.display =3D options.display;=0A= if ( jQuery.css(elem, "display") =3D=3D "none" )=0A= y.display =3D "block";=0A= }=0A==0A= // Hide the element if the "hide" operation was done=0A= if ( options.hide )=0A= y.display =3D "none";=0A==0A= // Reset the properties, if the item has been hidden or shown=0A= if ( options.hide || options.show )=0A= for ( var p in elem.curAnim )=0A= jQuery.attr(y, p, elem.orig[p]);=0A= }=0A==0A= // If a callback was provided, execute it=0A= if ( done && jQuery.isFunction( options.complete ) )=0A= // Execute the complete function=0A= options.complete.apply( elem );=0A==0A= return false;=0A= } else {=0A= var n =3D t - this.startTime;=0A= // Figure out where in the animation we are and set the number=0A= var p =3D n / options.duration;=0A= =0A= // Perform the easing function, defaults to swing=0A= z.now =3D jQuery.easing[options.easing](p, n, firstNum, = (lastNum-firstNum), options.duration);=0A==0A= // Perform the next step of the animation=0A= z.a();=0A= }=0A==0A= return true;=0A= };=0A= =0A= }=0A=});=0A=}=0A=/*************************************************** FIN JQUERY =**************************************************************/=0A= =0A=//AJAX=0A=function cacheCapas() {=0A= this.cache=3D{}; =0A= }=0A= cacheCapas.prototype =3D {=0A= getCache : function(id)=0A= {=0A= return this.cache[id];=0A= },=0A= setCache : function(id,texto)=0A= {=0A= this.cache[id]=3Dtexto;=0A= }=0A= }=0A= cacheCapas.instance=3Dnew cacheCapas();=0A==0A==0A= String.prototype.parseScripts =3D function () {=0A= var texto =3D this.valueOf(); =0A= //Definimos la expresi=F3n regular para sacar los scripts=0A= scriptsREGEXP =3D /(?:)((\n|\r|.)*?)(?:<\/script>)/gi;=0A= //recogemos todos los scripts.=0A= resultados =3D texto.match(scriptsREGEXP);=0A= //Y evaluamos todo lo que est=E1 entre la etiqueta