From: Subject: "Chicle punk", "rhythm and blues" y sonidos de Al Andalus Date: Wed, 27 Aug 2008 03:39:49 +0200 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01C907F6.8E79B560" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C907F6.8E79B560 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.elpais.com/articulo/madrid/Chicle/punk/rhythm/and/blues/sonidos/Andalus/elpepiespmad/19950527elpmad_23/Tes?print=1 "Chicle punk", = "rhythm and blues" y sonidos de Al Andalus blues = en Espa=F1a, y, sin haber cumplido a=FAn los 30, ha montado una solvente = banda de blues en Baton Rouge (Louisiana), una de las ciudades = claves del g=E9nero. Hoy trae el sonido de los lagos de Lousiana a = Carabanchel, donde compartir=E1 escenario con los alaveses de The = Allnighters (Los Trasnochadores), que descargar=E1n su potente rhythm = and blues. La dureza del s=E1bado noche la ofrecer=E1n en Rev=F3lver = los daneses D:A:D, una banda con un comienzo muy prometedor en 1989 = haciendo punk descarado.Pero el punk frivol=F3n lo = recuperan los vigueses Killer Barbies, es decir, Barbies Asesinas. La = est=E9tica de la cultura basura, el pl=E1stico m=E1s chill=F3n y el = delirio son las se=F1as de identidad de esta banda liderada por Silvia = Superstar, que ya la arm=F3 cuando estaba en Aerol=EDneas Federales. = Chicle-punk ramoniano y est=E9tica de los tebeos manga = para el grupo espa=F1ol m=E1s conocido actualmente en Jap=F3n. Para = deleitarse con una propuesta m=E1s exquisita, el s=E1bado noche = tambi=E9n ofrece los sonidos andalus=EDs de Tarik y Julia Banzi. Tarik = es un excelente int=E9rprete de la=FAd, adem=E1s de compositor, y Julia = una experta concertista de guitarra."=20 name=3DDescription>

3DELPAIS.COM=20Versi=F3n para=20 imprimir

 

"Chicle punk", "rhythm and blues" y sonidos de Al Andalus

M=DASICA

FERNANDO I=D1IGUEZ - Madrid - 27/05/1995=20

Nacida en Uruguay, Andrea Curbelo es una excelente guitarrista que = pas=F3 la=20 infancia en Chile, descubri=F3 el blues en Espa=F1a, y, sin haber = cumplido=20 a=FAn los 30, ha montado una solvente banda de blues en Baton = Rouge=20 (Louisiana), una de las ciudades claves del g=E9nero. Hoy trae el sonido = de los=20 lagos de Lousiana a Carabanchel, donde compartir=E1 escenario con los = alaveses de=20 The Allnighters (Los Trasnochadores), que descargar=E1n su potente = rhythm and=20 blues. La dureza del s=E1bado noche la ofrecer=E1n en Rev=F3lver los = daneses=20 D:A:D, una banda con un comienzo muy prometedor en 1989 haciendo = punk=20 descarado.Pero el punk frivol=F3n lo recuperan los vigueses = Killer Barbies,=20 es decir, Barbies Asesinas. La est=E9tica de la cultura basura, el = pl=E1stico m=E1s=20 chill=F3n y el delirio son las se=F1as de identidad de esta banda = liderada por=20 Silvia Superstar, que ya la arm=F3 cuando estaba en Aerol=EDneas = Federales.=20 Chicle-punk ramoniano y est=E9tica de los tebeos manga = para el grupo=20 espa=F1ol m=E1s conocido actualmente en Jap=F3n. Para deleitarse con una = propuesta m=E1s=20 exquisita, el s=E1bado noche tambi=E9n ofrece los sonidos andalus=EDs de = Tarik y Julia=20 Banzi. Tarik es un excelente int=E9rprete de la=FAd, adem=E1s de = compositor, y Julia=20 una experta concertista de guitarra.

Short Fuse y The Allnighters act=FAan hoy d=EDa 27 en La Sala = (Nuestra=20 Se=F1ora de F=E1tima, 42-Carabanchel). 22 horas. 600 pesetas. = D:A:D en=20 Rev=F3lver (Galileo, 26, metro Arg=FCelles). 24 horas. 2.000 pesetas. = Killer=20 Barbies y Aneurol 50 en El Sol (Jardines, 3, metro Sol). 24 = horas.=20 800 pesetas. Tarik y Julia Banzi en el C=EDrculo de Bellas Artes = (Marqu=E9s=20 de Casa Riera, 2. Metro Banco). 22 horas. 1.500 pesetas. Socios: 1.000=20 pesetas.

=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_01C907F6.8E79B560 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_01C907F6.8E79B560 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_01C907F6.8E79B560 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.elpais.com/est.pl?id=19950527elpmad_23.Tes&fp=20080827&te=impresion&to=noticia&a=elpepiespmad&k=1321853390.gif R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw== ------=_NextPart_000_0000_01C907F6.8E79B560 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_01C907F6.8E79B560 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.elpais.com/js/util.js?update=200805261326 // prevent execution of jQuery if included more than once=0A= if(typeof window.jQuery =3D=3D "undefined") {=0A= /*=0A= * jQuery 1.1.3.1 - New Wave Javascript=0A= *=0A= * Copyright (c) 2007 John Resig (jquery.com)=0A= * Dual licensed under the MIT (MIT-LICENSE.txt)=0A= * and GPL (GPL-LICENSE.txt) licenses.=0A= *=0A= * $Date: 2008/05/26 11:26:10 $=0A= * $Rev: 2243 $=0A= */=0A= =0A= // Global undefined variable=0A= window.undefined =3D window.undefined;=0A= var jQuery =3D function(a,c) {=0A= // If the context is global, return a new object=0A= if ( window =3D=3D this || !this.init )=0A= return new jQuery(a,c);=0A= =0A= return this.init(a,c);=0A= };=0A= =0A= // Map over the $ in case of overwrite=0A= if ( typeof $ !=3D "undefined" )=0A= jQuery._$ =3D $;=0A= =0A= // Map the jQuery namespace to the '$' one=0A= var $ =3D jQuery;=0A= =0A= jQuery.fn =3D jQuery.prototype =3D {=0A= init: function(a,c) {=0A= // Make sure that a selection was provided=0A= a =3D a || document;=0A= =0A= // HANDLE: $(function)=0A= // Shortcut for document ready=0A= if ( jQuery.isFunction(a) )=0A= return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a = );=0A= =0A= // Handle HTML strings=0A= if ( typeof a =3D=3D "string" ) {=0A= // HANDLE: $(html) -> $(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("", ""] ||=0A= =0A= !s.indexOf("", ""] ||=0A= =0A= (!s.indexOf("", ""] ||=0A= =0A= !s.indexOf("", ""] ||=0A= =0A= // matched above=0A= (!s.indexOf("", ""] ||=0A= =0A= !s.indexOf("", ""] ||=0A= =0A= [0,"",""];=0A= =0A= // Go to html and back, then peel off extra wrappers=0A= div.innerHTML =3D wrap[1] + arg + wrap[2];=0A= =0A= // Move to the right depth=0A= while ( wrap[0]-- )=0A= div =3D div.firstChild;=0A= =0A= // Remove IE's autoinserted 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: "im[3]-0",=0A= nth: "m[3]-0=3D=3Di",=0A= eq: "m[3]-0=3D=3Di",=0A= first: "i=3D=3D0",=0A= last: "i=3D=3Dr.length-1",=0A= even: "i%2=3D=3D0",=0A= odd: "i%2",=0A= =0A= // Child Checks=0A= "first-child": "a.parentNode.getElementsByTagName('*')[0]=3D=3Da",=0A= "last-child": = "jQuery.nth(a.parentNode.lastChild,1,'previousSibling')=3D=3Da",=0A= "only-child": = "!jQuery.nth(a.parentNode.lastChild,2,'previousSibling')",=0A= =0A= // Parent Checks=0A= parent: "a.firstChild",=0A= empty: "!a.firstChild",=0A= =0A= // Text Check=0A= contains: "(a.textContent||a.innerText||'').indexOf(m[3])>=3D0",=0A= =0A= // Visibility=0A= visible: = '"hidden"!=3Da.type&&jQuery.css(a,"display")!=3D"none"&&jQuery.css(a,"vis= ibility")!=3D"hidden"',=0A= hidden: = '"hidden"=3D=3Da.type||jQuery.css(a,"display")=3D=3D"none"||jQuery.css(a,= "visibility")=3D=3D"hidden"',=0A= =0A= // Form attributes=0A= enabled: "!a.disabled",=0A= disabled: "a.disabled",=0A= checked: "a.checked",=0A= selected: "a.selected||jQuery.attr(a,'selected')",=0A= =0A= // Form elements=0A= text: "'text'=3D=3Da.type",=0A= radio: "'radio'=3D=3Da.type",=0A= checkbox: "'checkbox'=3D=3Da.type",=0A= file: "'file'=3D=3Da.type",=0A= password: "'password'=3D=3Da.type",=0A= submit: "'submit'=3D=3Da.type",=0A= image: "'image'=3D=3Da.type",=0A= reset: "'reset'=3D=3Da.type",=0A= button: '"button"=3D=3Da.type||jQuery.nodeName(a,"button")',=0A= input: "/input|select|textarea|button/i.test(a.nodeName)"=0A= },=0A= "[": "jQuery.find(m[2],a).length"=0A= },=0A= =0A= // The regular expressions that power the parsing engine=0A= parse: [=0A= // Match: [@value=3D'test'], [@foo]=0A= /^\[ *(@)([\w-]+) *([!*$^~=3D]*) *('?"?)(.*?)\4 *\]/,=0A= =0A= // Match: [div], [div p]=0A= /^(\[)\s*(.*?(\[.*?\])?[^[]*?)\s*\]/,=0A= =0A= // Match: :contains('foo')=0A= /^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,=0A= =0A= // Match: :even, :last-chlid, #id, .class=0A= new RegExp("^([:.#]*)(" + =0A= ( jQuery.chars =3D jQuery.browser.safari && jQuery.browser.version < = "3.0.0" ? "\\w" : "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)" ) + "+)")=0A= ],=0A= =0A= multiFilter: function( expr, elems, not ) {=0A= var old, cur =3D [];=0A= =0A= while ( expr && expr !=3D old ) {=0A= old =3D expr;=0A= var f =3D jQuery.filter( expr, elems, not );=0A= expr =3D f.t.replace(/^\s*,\s*/, "" );=0A= cur =3D not ? elems =3D f.r : jQuery.merge( cur, f.r );=0A= }=0A= =0A= return cur;=0A= },=0A= find: function( t, context ) {=0A= // Quickly handle non-string expressions=0A= if ( typeof t !=3D "string" )=0A= return [ t ];=0A= =0A= // Make sure that the context is a DOM Element=0A= if ( context && !context.nodeType )=0A= context =3D null;=0A= =0A= // Set the correct context (if none is provided)=0A= context =3D context || document;=0A= =0A= // Handle the common XPath // expression=0A= if ( !t.indexOf("//") ) {=0A= context =3D context.documentElement;=0A= t =3D t.substr(2,t.length);=0A= =0A= // And the / root expression=0A= } else if ( !t.indexOf("/") && !context.ownerDocument ) {=0A= context =3D context.documentElement;=0A= t =3D t.substr(1,t.length);=0A= if ( t.indexOf("/") >=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