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