From: <Saved by Windows Internet Explorer 8>
Subject: Au Cactus Francophone : Fiche de : Cyphostemma laza Descoings 1963
Date: Sun, 20 Oct 2013 00:55:26 +0100
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_01D0_01CECD2F.1079D560"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157

This is a multi-part message in MIME format.

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.cactuspro.com/encyclo/Cyphostemma/laza

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Au Cactus Francophone : Fiche de : Cyphostemma laza =
Descoings 1963</TITLE>
<META name=3DAuthor content=3D"Yann COCHARD">
<META name=3DClassification=20
content=3D"Loisirs, leisure, jardinage, gardening, cactus">
<META name=3DDescription=20
content=3D"Au Cactus Francophone : Fiche de : Cyphostemma laza Descoings =
1963">
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.23532">
<META name=3DRobots content=3D"index, follow">
<META name=3Drevisit-after content=3D"7 days">
<META name=3DLanguage content=3Dfr>
<META content=3D"text/html; charset=3DISO-8859-1" =
http-equiv=3DContent-Type>
<META name=3DKeyWords=20
content=3D"cactus, plante, plantes, succulent, succulente, succulentes, =
grasse, grasses, cactuspro, cact=E9es, cactees, cactac=E9es, cactacees, =
Yann Cochard, Yann, Cochard, France, francophone, Belgique, Suisse, =
Canada, cacti, succulents, succulent plants, encyclop=E9die, =
encyclopaedia, fiches, cards, Caudex, Euphorbes, Crassula, =
M=E9sembs"><LINK=20
rel=3Dicon type=3Dimage/png href=3D"/favicon.png"><LINK rel=3D"shortcut =
icon"=20
href=3D"/favicon.ico"><LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://www.cactuspro.com/encyclo_fiche.css">
<SCRIPT type=3Dtext/javascript=20
src=3D"http://maps.googleapis.com/maps/api/js?sensor=3Dfalse"></SCRIPT>

<SCRIPT type=3Dtext/javascript =
src=3D"http://www.cactuspro.com/jquery.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.cactuspro.com/cf_lib_jquery.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript =
src=3D"http://www.cactuspro.com/cf_lib.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.cactuspro.com/jquery.suggest.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript =
src=3D"http://www.cactuspro.com/overlib.js"><!-- overLIB (c) Erik Bosrup =
--></SCRIPT>
</HEAD>
<BODY aLink=3D#ff0000 link=3D#0000ff bgColor=3D#ffffff text=3D#000000 =
vLink=3D#800080>
<DIV class=3Dcontenu>
<DIV class=3Dmenu_encyclo><A title=3D"CF : cactus et autres plantes =
succulentes"=20
href=3D"http://www.cactuspro.com/" target=3D_top>CF</A> &gt; <A=20
title=3D"Encyclop=E9die des plantes grasses" =
href=3D"http://www.cactuspro.com/encyclo"=20
target=3D_top>Encyclop=E9die</A> &gt; <A=20
title=3D"Cyphostemma - Encyclop=E9die des plantes grasses"=20
href=3D"http://www.cactuspro.com/encyclo/Cyphostemma" =
target=3D_top>Cyphostemma</A>=20
&gt; <A title=3D"Cyphostemma  laza - Encyclop=E9die des plantes grasses" =

href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/laza" =
target=3D_top>laza</A>=20
</DIV>
<H1><I>Cyphostemma <A class=3Dlien_botanique=20
onmouseover=3D"return overlib('<center><br>Cette fiche manque de photo. =
Si vous en avez une, nous vous invitons =E0 <a =
href=3D/articles/participer_a_la_galerie_photos>contribuer</a>, =
merci.<br><br><b><a href=3D/encyclo/Cyphostemma/laza/v_parvifolium>Voir =
la fiche</a></b><br><a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dpropose&amp;id_fich=
e=3D3102><img src=3D/images/icones/ark_extract_32x32.png width=3D32 =
height=3D32 border=3D0></a> &nbsp; <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dcherche&amp;id_fich=
e=3D3102 class=3Dcf_liste_cherche_class><img =
src=3D/images/icones/xmag_32x32.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dprefere&amp;id_fich=
e=3D3102 class=3Dcf_liste_prefere_class><img =
src=3D/images/icones/coeur_rouge.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/articles/guide-d-utilisation-des-listes-d-especes><img =
src=3D/images/icones/aide_16x16.png width=3D16 height=3D16 =
border=3D0></a><br><div =
class=3Dcf_listes_message_class></div></center>', STICKY, MOUSEOFF, =
TIMEOUT, 3000, CAPTION, 'laza', BORDER, 2);" onmouseout=3D"return nd();" =

href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/laza/v_parvifolium">=
laza</A></I>=20
Descoings 1963</H1>
<DIV class=3Dencyclo_fiche><SMALL><U>Publication&nbsp;:</U> Bulletin de =
la Soci=E9t=E9=20
Botanique de France 109(9): 266 (-267) (1962 mais publi=E9 en =
1963?).</SMALL><BR>
<H4>Description</H4>Liane =E0 <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/caudex">caudex</A> conique =
(sph=E9rique =E0=20
l'=E9tat juv=E9nile) de 1-4m de haut sur 0,2-2m de diam=E8tre prolong=E9 =
de 2-3 branches=20
lianescentes de plusieurs m=E8tres de long sur jusqu'=E0 2-2,5cm de =
diam=E8tre pour=20
les tiges anciennes. Jeunes tiges finement pubescentes, tiges plus =
=E2g=E9es =E0=20
fortes lenticelles. Ecorce papyrac=E9e brun, roux =E0 gris, se =
desquamant=20
partiellement. Feuilles fines ou faiblement succulentes, vert clair, =E0 =
fine=20
pubescence blanche lorsqu'elles sont jeunes, compos=E9es imparipenn=E9es =
de 6-20cm=20
de long, =E0 7-9 folioles elliptiques =E0 oblongues de 1,5-5,5cm de long =
sur 0,7-3cm=20
de large, =E0 marges cr=E9nel=E9es. <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/stipule">Stipules</A> ovales =
de 1-2,5cm=20
de long.<BR>Inflorescences pubescentes d'environ 8cm de long. Petites =
fleurs=20
jaune-vert cylindriques d'environ 4mm de long sur 2,5mm de diam=E8tre,=20
pubescentes.<BR>Baie rouge=E2tre ovo=EFdo-subsph=E9rique de 16-20mm de =
long sur=20
14-16mm de large, <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/glabre">glabre</A>. Graines =
ovo=EFdes de=20
7-10mm de long sur 6-7mm de large.<BR><BR>Descoings (in Eggli 2002) =
reconna=EEt=20
deux vari=E9t=E9s:<BR><BR>Cyphostemma <A class=3Dlien_botanique=20
onmouseover=3D"return overlib('<center><br>Cette fiche manque de photo. =
Si vous en avez une, nous vous invitons =E0 <a =
href=3D/articles/participer_a_la_galerie_photos>contribuer</a>, =
merci.<br><br><b><a href=3D/encyclo/Cyphostemma/laza/v_parvifolium>Voir =
la fiche</a></b><br><a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dpropose&amp;id_fich=
e=3D3102><img src=3D/images/icones/ark_extract_32x32.png width=3D32 =
height=3D32 border=3D0></a> &nbsp; <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dcherche&amp;id_fich=
e=3D3102 class=3Dcf_liste_cherche_class><img =
src=3D/images/icones/xmag_32x32.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dprefere&amp;id_fich=
e=3D3102 class=3Dcf_liste_prefere_class><img =
src=3D/images/icones/coeur_rouge.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/articles/guide-d-utilisation-des-listes-d-especes><img =
src=3D/images/icones/aide_16x16.png width=3D16 height=3D16 =
border=3D0></a><br><div =
class=3Dcf_listes_message_class></div></center>', STICKY, MOUSEOFF, =
TIMEOUT, 3000, CAPTION, 'laza', BORDER, 2);" onmouseout=3D"return nd();" =

href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/laza/v_parvifolium">=
laza</A>=20
v. <A class=3Dlien_botanique=20
onmouseover=3D"return overlib('<center><br>Cette fiche manque de photo. =
Si vous en avez une, nous vous invitons =E0 <a =
href=3D/articles/participer_a_la_galerie_photos>contribuer</a>, =
merci.<br><br><b><a href=3D/encyclo/Cyphostemma/laza/v_parvifolium>Voir =
la fiche</a></b><br><a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dpropose&amp;id_fich=
e=3D3102><img src=3D/images/icones/ark_extract_32x32.png width=3D32 =
height=3D32 border=3D0></a> &nbsp; <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dcherche&amp;id_fich=
e=3D3102 class=3Dcf_liste_cherche_class><img =
src=3D/images/icones/xmag_32x32.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dprefere&amp;id_fich=
e=3D3102 class=3Dcf_liste_prefere_class><img =
src=3D/images/icones/coeur_rouge.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/articles/guide-d-utilisation-des-listes-d-especes><img =
src=3D/images/icones/aide_16x16.png width=3D16 height=3D16 =
border=3D0></a><br><div =
class=3Dcf_listes_message_class></div></center>', STICKY, MOUSEOFF, =
TIMEOUT, 3000, CAPTION, 'laza', BORDER, 2);" onmouseout=3D"return nd();" =

href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/laza/v_parvifolium">=
laza</A>=20
=E0 <A class=3Dlien_auto =
href=3D"http://www.cactuspro.com/glossaire/caudex">caudex</A>=20
de 1-2m de haut sur 0,2-0,6m de diam=E8tre, feuilles de 12-20cm de long =
sur avec=20
des folioles de 4-5,5cm de long sur 1,5-3cm de large et graines de 7-8mm =
de=20
long, poussant dans le sud-ouest de Madagascar. <B>Type:</B> Bosser =
10463,=20
Madagascar, Toliara d=E9pos=E9 dans l'<A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/herbier">herbier</A> du <A=20
class=3Dlien_auto =
href=3D"http://www.cactuspro.com/jardins/mnhn">Mus=E9um National=20
d'Histoire Naturelle</A> de Paris (P: holotype).<BR><BR>Cyphostemma <A=20
class=3Dlien_botanique=20
onmouseover=3D"return overlib('<center><br>Cette fiche manque de photo. =
Si vous en avez une, nous vous invitons =E0 <a =
href=3D/articles/participer_a_la_galerie_photos>contribuer</a>, =
merci.<br><br><b><a href=3D/encyclo/Cyphostemma/laza/v_parvifolium>Voir =
la fiche</a></b><br><a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dpropose&amp;id_fich=
e=3D3102><img src=3D/images/icones/ark_extract_32x32.png width=3D32 =
height=3D32 border=3D0></a> &nbsp; <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dcherche&amp;id_fich=
e=3D3102 class=3Dcf_liste_cherche_class><img =
src=3D/images/icones/xmag_32x32.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dprefere&amp;id_fich=
e=3D3102 class=3Dcf_liste_prefere_class><img =
src=3D/images/icones/coeur_rouge.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/articles/guide-d-utilisation-des-listes-d-especes><img =
src=3D/images/icones/aide_16x16.png width=3D16 height=3D16 =
border=3D0></a><br><div =
class=3Dcf_listes_message_class></div></center>', STICKY, MOUSEOFF, =
TIMEOUT, 3000, CAPTION, 'laza', BORDER, 2);" onmouseout=3D"return nd();" =

href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/laza/v_parvifolium">=
laza</A>=20
v. parvifolium =E0 <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/caudex">caudex</A> plus grand =
de 2-4m=20
de haut sur 1,5-2m de diam=E8tre, feuilles plus petites de 6-9cm de long =
sur 4-6cm=20
de large avec des folioles de 1,5-3cm de long sur 0,7-1,4cm de large et =
graines=20
plus grandes d'environ 1cm de long, poussant dans le sud-est de =
Madagascar.=20
<B>Type:</B> Descoings 2472, Madagascar, environs de Tsihombe =E0 =
quelques=20
kilom=E8tres au sud du lac sal=E9 d'Ihodo en bush <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/xerophile">x=E9rophile</A> =
sur sables=20
roux, 15 f=E9vrier 1957, d=E9pos=E9 dans l'<A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/herbier">herbier</A> du <A=20
class=3Dlien_auto =
href=3D"http://www.cactuspro.com/jardins/mnhn">Mus=E9um National=20
d'Histoire Naturelle</A> de Paris (P: holotype) et dans l'<A =
class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/herbier">herbier</A> du parc =
botanique=20
et zoologique de Tsimbazaza (TAN: isotype).=20
<H4>Culture</H4>Culture relativement facile sans grandes =
particularit=E9s par=20
rapport aux conditions g=E9n=E9rales de <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/articles/culture-des-cactus-plantes-gras=
ses-et-succulentes">culture</A>=20
du genre <A class=3Dlien_botanique=20
onmouseover=3D"return overlib('<center><a =
href=3D/encyclo/Cyphostemma><img =
src=3Dhttp://www.cactuspro.com/photos_jpg/11/1182r.jpg></a><br><a =
href=3D/encyclo/Cyphostemma>Fiche</a> - <a =
href=3D/photos/Vitaceae/Cyphostemma/juttae/1182.html>Photo</a><br><a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dpropose&amp;id_fich=
e=3D150><img src=3D/images/icones/ark_extract_32x32.png width=3D32 =
height=3D32 border=3D0></a> &nbsp; <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dcherche&amp;id_fich=
e=3D150 class=3Dcf_liste_cherche_class><img =
src=3D/images/icones/xmag_32x32.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dprefere&amp;id_fich=
e=3D150 class=3Dcf_liste_prefere_class><img =
src=3D/images/icones/coeur_rouge.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/articles/guide-d-utilisation-des-listes-d-especes><img =
src=3D/images/icones/aide_16x16.png width=3D16 height=3D16 =
border=3D0></a><br><div =
class=3Dcf_listes_message_class></div></center>', STICKY, MOUSEOFF, =
TIMEOUT, 3000, CAPTION, 'Cyphostemma', BORDER, 2);"=20
onmouseout=3D"return nd();"=20
href=3D"http://www.cactuspro.com/encyclo/Cyphostemma">Cyphostemma</A>; =
s'y=20
reporter pour plus de d=E9tails. Cette <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/espece">esp=E8ce</A> est =
tr=E8s tol=E9rante=20
en ce qui concerne l'alcalinit=E9 de son <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/articles/le_substrat_et_ses_elements">su=
bstrat</A>=20
car dans la nature elle pousse aussi bien sur des sols calcaires que sur =
des=20
sols non calcaires.<BR>Reproduction par semis ou par <A =
class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/articles/la_multiplication_vegetative_le=
_bouturage">bouturage</A>=20
de tiges.=20
<H4>=C9tymologie</H4>Cyphostemma: du grec <I>kyphos</I>, bosse, et =
<I>stemma</I>,=20
<A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/couronne">couronne</A>: <A=20
class=3Dlien_auto =
href=3D"http://www.cactuspro.com/glossaire/couronne">couronne</A>=20
ventrue, peut-=EAtre en r=E9f=E9rence =E0 la <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/corolle">corolle</A>.<BR>laza:=
 du nom=20
<A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/articles/noms_vernaculaires_noms_communs=
">vernaculaire</A>=20
de l'<A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/espece">esp=E8ce</A>, <A=20
class=3Dlien_botanique=20
onmouseover=3D"return overlib('<center><br>Cette fiche manque de photo. =
Si vous en avez une, nous vous invitons =E0 <a =
href=3D/articles/participer_a_la_galerie_photos>contribuer</a>, =
merci.<br><br><b><a href=3D/encyclo/Cyphostemma/laza/v_parvifolium>Voir =
la fiche</a></b><br><a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dpropose&amp;id_fich=
e=3D3102><img src=3D/images/icones/ark_extract_32x32.png width=3D32 =
height=3D32 border=3D0></a> &nbsp; <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dcherche&amp;id_fich=
e=3D3102 class=3Dcf_liste_cherche_class><img =
src=3D/images/icones/xmag_32x32.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/mes-listes.php?action=3Dajoute&amp;ssaction=3Dprefere&amp;id_fich=
e=3D3102 class=3Dcf_liste_prefere_class><img =
src=3D/images/icones/coeur_rouge.png width=3D32 height=3D32 =
border=3D0></a> <a =
href=3D/articles/guide-d-utilisation-des-listes-d-especes><img =
src=3D/images/icones/aide_16x16.png width=3D16 height=3D16 =
border=3D0></a><br><div =
class=3Dcf_listes_message_class></div></center>', STICKY, MOUSEOFF, =
TIMEOUT, 3000, CAPTION, 'laza', BORDER, 2);" onmouseout=3D"return nd();" =

href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/laza/v_parvifolium">=
laza</A>.=20

<H4>Habitat</H4>Sud de Madagascar.=20
<H4>Exposition</H4>Vive (luminosit=E9 maxi, plein soleil accept=E9)
<H4>Temp=E9rature mini</H4>12=B0C
<H4>Arrosages</H4>Hiver : Aucun. Et=E9 : Moyen.
<H4>Substrat</H4>Standard (<A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/articles/le_substrat_et_ses_elements">3 =

tiers</A>)
<H4>Dimensions maximales</H4>Hauteur : 6 m. Largeur : 2 m.
<H4>Couleur des fleurs</H4>jaune-vert=20
<H4>Num=E9ros de collecte</H4>Vous pouvez chercher les num=E9ros de =
collecte pour=20
cette <A class=3Dlien_auto=20
href=3D"http://www.cactuspro.com/glossaire/espece">esp=E8ce</A> dans :
<UL>
  <LI>la base de <I>Ralph Martin</I> : <A=20
  =
href=3D"http://ralph.cs.cf.ac.uk/Cacti/finder.php?Plant=3DCyphostemma+laz=
a">Cyphostemma=20
  laza</A>
  <LI>la base de <I>Christophe Ludwig</I> : <A=20
  =
href=3D"http://www.cl-cactus.com/fnfinder.asp?Lang=3Dfr&amp;Plant=3DCypho=
stemma+laza">Cyphostemma=20
  laza</A></LI></UL>
<H4>Forum</H4>Vous pouvez faire une <A=20
href=3D"http://www.cactuspro.com/forum/search.php?1,search=3DCyphostemma+=
laza,author=3D,page=3D1,match_type=3DALL,match_dates=3D0,match_forum=3DAL=
L,match_threads=3D1">recherche=20
sur le forum</A>.
<H4>Auteur</H4><A href=3D"http://www.cactuspro.com/membres/philippe"=20
target=3D_top>philippe</A> (<A=20
href=3D"http://www.cactuspro.com/membres.php?action=3Dcontacter&amp;id=3D=
philippe"=20
target=3D_top>contacter</A>) <BR><SMALL>Fiche cr=E9=E9e le 09/10/2008, =
mise =E0 jour le=20
22/10/2008.</SMALL> </DIV>
<DIV class=3Dencyclo_droite>
<SCRIPT type=3Dtext/javascript src=3D"http://www.cactuspro.com/infos.js">=0A=
</SCRIPT>
<NOSCRIPT><A title=3D"Producteur ENVIE de CACTUS"=20
href=3D"http://www.cactuspro.com/clic.php?url=3Dwww.cactuspro.com/enviede=
cactus/"=20
target=3D_top><IMG border=3D0 alt=3D"Producteur ENVIE de CACTUS"=20
src=3D"http://www.cactuspro.com/infos/images/enviedecactus_150x60.png" =
width=3D150=20
height=3D60></A> </NOSCRIPT><BR><BR>
<DIV=20
style=3D"BORDER-BOTTOM: lightgreen 1px solid; TEXT-ALIGN: center; =
BORDER-LEFT: lightgreen 1px solid; PADDING-BOTTOM: 0.25em; =
BACKGROUND-COLOR: rgb(226,255,228); PADDING-LEFT: 0.25em; PADDING-RIGHT: =
0.25em; MARGIN-BOTTOM: 1em; COLOR: green; FONT-SIZE: 0.75em; BORDER-TOP: =
lightgreen 1px solid; BORDER-RIGHT: lightgreen 1px solid; PADDING-TOP: =
0.25em; -moz-border-radius: 10px"=20
id=3Dcf_listes>Ajouter =E0 <A title=3D"Listes d'esp=E8ces"=20
href=3D"http://www.cactuspro.com/membres.php#listes">vos =
listes</A>&nbsp;:<BR>
<DIV style=3D"DISPLAY: inline" id=3Dcf_listes_propose><A =
id=3Dcf_listes_propose=20
title=3D"J'en propose"=20
href=3D"http://www.cactuspro.com/mes-listes.php?action=3Dajoute&amp;ssact=
ion=3Dpropose&amp;id_espece=3D3101"><IMG=20
border=3D0 alt=3D"J'en propose"=20
src=3D"http://www.cactuspro.com/images/icones/ark_extract_32x32.png" =
width=3D32=20
height=3D32></A></DIV>&nbsp; &nbsp;=20
<DIV style=3D"DISPLAY: inline" id=3Dcf_listes_cherche><A title=3D"J'en =
cherche"=20
href=3D"http://www.cactuspro.com/mes-listes.php?action=3Dajoute&amp;ssact=
ion=3Dcherche&amp;id_espece=3D3101"><IMG=20
border=3D0 alt=3D"J'en cherche"=20
src=3D"http://www.cactuspro.com/images/icones/xmag_32x32.png" width=3D32 =

height=3D32></A></DIV>&nbsp; &nbsp;=20
<DIV style=3D"DISPLAY: inline" id=3Dcf_listes_prefere><A=20
title=3D"Une de mes pr=E9f=E9r=E9es"=20
href=3D"http://www.cactuspro.com/mes-listes.php?action=3Dajoute&amp;ssact=
ion=3Dprefere&amp;id_espece=3D3101"><IMG=20
border=3D0 alt=3D"Une de mes pr=E9f=E9r=E9es"=20
src=3D"http://www.cactuspro.com/images/icones/coeur_rouge.png" =
width=3D32=20
height=3D32></A></DIV>&nbsp; &nbsp; <A=20
title=3D"Aide sur les listes de plantes des membres du CF"=20
href=3D"http://www.cactuspro.com/articles/guide-d-utilisation-des-listes-=
d-especes"><IMG=20
border=3D0 alt=3D"aide sur les listes"=20
src=3D"http://www.cactuspro.com/images/icones/aide_16x16.png" width=3D16 =

height=3D16></A><BR>
<DIV id=3Dcf_listes_message></DIV><BR>Esp=E8ce propos=E9e par : =
<BR>Aucun membre=20
:-(</DIV><A=20
href=3D"http://www.cactuspro.com/photos/Vitaceae/Cyphostemma/laza/2543.ht=
ml"><IMG=20
alt=3D"Cyphostemma laza" =
src=3D"http://www.cactuspro.com/photos_jpg/25/2543r.jpg"=20
width=3D90 height=3D120><BR>Cyphostemma laza</A><BR><BR><A=20
href=3D"http://www.cactuspro.com/photos/Vitaceae/Cyphostemma/laza/3230.ht=
ml"><IMG=20
alt=3D"Cyphostemma laza v. laza"=20
src=3D"http://www.cactuspro.com/photos_jpg/32/3230r.jpg" width=3D90=20
height=3D120><BR>Cyphostemma laza v. laza</A><BR><BR><A=20
href=3D"http://www.cactuspro.com/photos/Vitaceae/Cyphostemma/laza/3231.ht=
ml"><IMG=20
alt=3D"Cyphostemma laza v. laza"=20
src=3D"http://www.cactuspro.com/photos_jpg/32/3231r.jpg" width=3D85=20
height=3D120><BR>Cyphostemma laza v. laza</A><BR><BR><A=20
title=3D"Plus de photos de Cyphostemma laza avec Google images"=20
href=3D"http://images.google.fr/images?hl=3Dfr&amp;q=3D%22Cyphostemma+laz=
a%22">Plus de=20
photos de <I><B>Cyphostemma laza</B></I> avec Google images</A>.</DIV>
<DIV class=3Dencyclo_liens_fiches>
<H3>Fiches de botanistes :</H3>
<BLOCKQUOTE>Aucune.</BLOCKQUOTE>
<H3>Fiche du genre :</H3>
<BLOCKQUOTE><IMG alt=3D"image disponible"=20
  src=3D"http://www.cactuspro.com/images/encyclo001.gif" width=3D20 =
height=3D15> <A=20
  title=3D"Cyphostemma  (Planchon) Alston 1931"=20
  href=3D"http://www.cactuspro.com/encyclo/Cyphostemma">Cyphostemma</A> =
(Planchon)=20
  Alston 1931<BR></BLOCKQUOTE>
<H3>Synonymes&nbsp;:</H3>
<BLOCKQUOTE>
  <UL>
    <LI><A title=3D"Cyphostemma laza v. parvifolium  Descoings 1963"=20
    =
href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/laza/v_parvifolium">=
Cyphostemma=20
    laza v. parvifolium</A> Descoings 1963 </LI></UL></BLOCKQUOTE>
<H3>Esp=E8ces du m=EAme genre&nbsp;:</H3>
<BLOCKQUOTE><IMG alt=3D"image disponible"=20
  src=3D"http://www.cactuspro.com/images/encyclo001.gif" width=3D20 =
height=3D15> <A=20
  title=3D"Cyphostemma betiforme  (Chiovenda) Vollesen 1984"=20
  =
href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/betiforme">Cyphostem=
ma=20
  betiforme</A> (Chiovenda) Vollesen 1984<BR><IMG alt=3D"image =
disponible"=20
  src=3D"http://www.cactuspro.com/images/encyclo001.gif" width=3D20 =
height=3D15> <A=20
  title=3D"Cyphostemma elephantopus  Descoings 1963"=20
  =
href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/elephantopus">Cyphos=
temma=20
  elephantopus</A> Descoings 1963<BR><IMG alt=3D"image disponible"=20
  src=3D"http://www.cactuspro.com/images/encyclo001.gif" width=3D20 =
height=3D15> <A=20
  title=3D"Cyphostemma juttae  (Dinter &amp; Gilg ex Gilg &amp; Brandt) =
Descoings 1967"=20
  =
href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/juttae">Cyphostemma =

  juttae</A> (Dinter &amp; Gilg ex Gilg &amp; Brandt) Descoings =
1967<BR><IMG=20
  alt=3D"image disponible" =
src=3D"http://www.cactuspro.com/images/encyclo001.gif"=20
  width=3D20 height=3D15> <A title=3D"Cyphostemma laza  Descoings 1963"=20
  href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/laza">Cyphostemma =
laza</A>=20
  Descoings 1963<BR><IMG alt=3D"image disponible"=20
  src=3D"http://www.cactuspro.com/images/encyclo001.gif" width=3D20 =
height=3D15> <A=20
  title=3D"Cyphostemma pachypus  Descoings 1963"=20
  =
href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/pachypus">Cyphostemm=
a=20
  pachypus</A> Descoings 1963<BR><IMG alt=3D"image disponible"=20
  src=3D"http://www.cactuspro.com/images/encyclo001.gif" width=3D20 =
height=3D15> <A=20
  title=3D"Cyphostemma quinatum  (Dryander) Descoings ex Wild et =
Drummond 1966"=20
  =
href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/quinatum">Cyphostemm=
a=20
  quinatum</A> (Dryander) Descoings ex Wild et Drummond=20
1966<BR></BLOCKQUOTE></DIV>
<DIV class=3Dmenu_auteur>3101 - <A=20
href=3D"http://www.cactuspro.com/encyclo_espece.php?action=3Dmaj&amp;fich=
e_id=3D3101">Modifier</A>=20
- <A=20
href=3D"http://www.cactuspro.com/encyclo_espece.php?action=3Deffacer&amp;=
fiche_id=3D3101">Effacer</A>=20
- <A=20
href=3D"http://www.cactuspro.com/encyclo_espece.php?action=3Dchanger_en_s=
yno&amp;fiche_id=3D3101">Changer&nbsp;en&nbsp;synonyme</A>=20
- <A=20
href=3D"http://www.cactuspro.com/encyclo_espece.php?action=3Drediger_syn&=
amp;fiche_espece_id=3D3101">Ajouter=20
synonyme</A></DIV>
<P style=3D"CLEAR: both"></P>
<DIV class=3Dmenu_encyclo_bas><A title=3D"CF : cactus et autres plantes =
succulentes"=20
href=3D"http://www.cactuspro.com/" target=3D_top>CF</A> &gt; <A=20
title=3D"Encyclop=E9die des plantes grasses" =
href=3D"http://www.cactuspro.com/encyclo"=20
target=3D_top>Encyclop=E9die</A> &gt; <A=20
title=3D"Cyphostemma - Encyclop=E9die des plantes grasses"=20
href=3D"http://www.cactuspro.com/encyclo/Cyphostemma" =
target=3D_top>Cyphostemma</A>=20
&gt; <A title=3D"Cyphostemma  laza - Encyclop=E9die des plantes grasses" =

href=3D"http://www.cactuspro.com/encyclo/Cyphostemma/laza" =
target=3D_top>laza</A>=20
</DIV><BR>
<DIV style=3D"CLEAR: both" class=3Dbasdepage><BR>
<HR>

<CENTER><SMALL>Encyclop=E9die des Cactus, Plantes Grasses et =
Succulentes<BR><A=20
title=3D"Au Cactus Francophone" =
href=3D"http://www.cactuspro.com/encyclo"=20
target=3D_top>http://www.cactuspro.com/encyclo</A>=20
</SMALL></CENTER></DIV></DIV></BODY></HTML>

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cactuspro.com/infos/images/enviedecactus_150x60.png

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

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cactuspro.com/images/icones/ark_extract_32x32.png

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

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cactuspro.com/images/icones/xmag_32x32.png

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
EAkAAgwAtacyUWryV7AAAAAASUVORK5CYII=

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cactuspro.com/images/icones/coeur_rouge.png

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
YII=

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://www.cactuspro.com/images/icones/aide_16x16.png

iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
WXMAAAsQAAALEAGtI711AAAAB3RJTUUH0wkJFDEbf3EsKAAAAndJREFUeNp1k8tL1GEUhp/vdxtn
RlMjYUazi0M6UNhAkJeof6BpVZTu3Llw4V4SWobkwra5cJUEbaRZtiwj1BgkaBRTIpHJWzo6Orfv
Oy10Rio9cDbn8r7nnJejOMO6hiQkQlQESobU3IhKn1an/g3ceSp9CgZdh1hTXREFrGy6HBRIljRj
86Nq4lSAu8NSbYTJUK3EH3cLXa2KXL6AMeC6Nsu/DK/eW3xddRLa0LvwUu0DWGUAI0y2X9Lx4Udw
taFEoVjgWpOPtmYf9UFFuE541mPzIJaNizBZ7rPKY1+olvjDTovtPU0kZBEJ+9jIwM8tOBe0uX7Z
R75guH87QLRRxyMD0lcBUDDY2Srs5xT5onC+xmH3AKYX4MsyzCzmAagN2qR3IHZFIzAI4HQNScix
idX4FesZ8GyHlQ34tgrrGUAXuNFoAJhdMrz9rDDiUV1FrLlfQo4I0YBn2Dm04PBontcfjvczOZ50
Q0vYz+KaYWoWjBzdvcoFLRJ1tAFjFOnf/+vb01GkJVxDatXwfAoK2kId6yYICDhGSGWLiswBoARE
IQJGoLXJI1+EF+8URa1w7ROCg5yASMqaG1Hp/UOSxggWCkuBbYFrw8yyQ2IOtFF4NhVHhJ2sJNfG
nbQFoA1jW3uGcwEqXlOl8ds5LtYXqQvyV251s4SIGavIOD+qJn5s2ondzGGlqNqnudcepKPNJVR/
0ryxnWUpTWJt3JsAcMo7aUPv9Hf/5M1CLn4rYuMGPN58BM8Bx4Kgk+fTgmZ2xUuA9J75TC0D0udZ
pcFIQy4WDPgBIbOfZTFdlcyVrLEy85kAZWvul5AWiWIEkNTauHPqO/8Bie4Yv9kSKrUAAAAASUVO
RK5CYII=

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.cactuspro.com/photos_jpg/25/2543r.jpg

/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBUODAsLDBkSEw8VHhsgHx4b
HR0hJTApISMtJB0dKjkqLTEzNjY2ICg7Pzo0PjA1NjP/2wBDAQkJCQwLDBgODhgzIh0iMzMzMzMz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzP/wAARCAB4AFoDASEA
AhEBAxEB/8QAGwAAAwEBAQEBAAAAAAAAAAAABAUGAwIHAQD/xAA5EAACAQIFAgQDBgUDBQAAAAAB
AgMEEQAFEiExE0EGIlFhFHGBIzKRobHRFUJSwfAHM3IkNGKS8f/EABkBAAMBAQEAAAAAAAAAAAAA
AAECAwQABf/EACURAAICAgIBAwUBAAAAAAAAAAABAhESIQMxQRMiUQQyQmGhgf/aAAwDAQACEQMR
AD8A9LqMgo88oZ5JI7zNUSMjScNZrAMBa67ftiPq8sOXeIJoKmlp7yrqWOCTSSp28nfaxNudzzjN
KGKTXQ6lZ8hz6PJ86lp4Q85MV4wx0kqeUtzqvfBtB4i+HrKRKaVxTzTCWq0IWI7WHfcDjnY4m5tV
RCdxY/qq7K84WVoaiupJoY9bMqMl1t/Oh2Km/cfXEZBVaqqIQ1Cx0zXcmb7NH0i53UFiLm97bbX5
w02pMD2Is6gq6+olmR0rAEQCeKPpq4A7L27dsXHhjPIqPK4stmo5DHTU0VmT+ZmF2v8AjgTnhje7
LbSSQmzFqH4uadqeGdqgILyCxDrf7un1uNr9ucL1r6eOVGnLhnkAAte7DcfkMQk/dofdWO8prXqx
OVsEhYqNiddh/wDfyw5V5dI0RF1tswA3HrjTFaJz7AYMy8QDLoQlUsN49YQRWIB35PzxO1ufUddm
k9JmcquHCp1ZH0uCvBVh91r3OJRlLyzTPBJYoDrJnXM6Wqq2gadkKI0UZAVL+U3P3jZTv7jBFRO/
2ldTwSkSqY5XC6Qygghh7qbeYf3wZPwZHc3oxzbNqyodaho1DdAwrOn+48fYN7AXH1OGHhusiqqq
nqNJj6EUmpiLFteki3bazDAtvbKKC00JMzzupir5zA6uHl2awN1JPH5YIpc5r6IxOXgMFrM7x6mZ
rDYb7/K2H5E2kkH92fGrswzhC1NS1U6WvpjiC7X5AYgn9MK5jUq0EclFUUvTkLRCSP8A3T7WJwnp
Vuyqb+Cmy81VCKcyJKkpXV0WkCm/B1WuLd7YaJUyxoqKQFUWAu22Lwg1r4MM52yVh8f5rTU7U1VQ
07U6xn7TQYyABYccngYm3qcvkjGZTQzK0jW6bFXvbYvbbjsOCfljLGTqz0OSKS1+v6EV2eUGZPDK
a+pjniXQshiubbeh5/c4oct8W01FlqJNPNMnm0LEEOlj6DkDtYjDSluyXpriai/IuzHNcvqIH+xn
+zYNZbKSrbXPqP3wtfxNJFKkdDTpCeNYuzi+2xPHpthU3dIvCEVHJm2YgtVgA78EfLe+C5M7QU6U
0PTWqV1FNNoBe4P8p5W3fY3xbkvpGPkvG0WlLVVtWjCu108rMvUlRVZZEF9gDuD/AIMLa7J/i3Cy
ZnViJSwREcatJNyCSLkn1w8ON1czpfUeEgeOKmooj8DBU1Fmsyhma19rb8fLAuqFPIMj+7tuwJxn
ny4SeEWyUnyv8f4Rec5m5QU0wmKqBdgLr7AewwsbMKWRGSSbchAuxAAG1sdHjpUj0VTSbMDJTF7r
URgf8hjeGRd5UmvoO7I1yPfbfDODfgM5RbTY2oMzy+tqYoGnRnCFFvcB0tupIHN9wcNKTI5KbMo5
LWiVx0nYglwe9gdv72wca7IT5VGWIUaaSeu6r36Ss2odyBzbHeYeLKTIKBaiGitrJVAuzE+5O+NC
klL9mfkUmkkTdd/qhNU03SpklpXI3mUKxHyB2wuovGOdK4NPmqSspBvUw2a99vML9/fFHfkSMHE6
f/U/PWm6k0dJJMD/ALhj329774KT/V/xFGiokGXBVFgPhV2GB6cfgrlP5N6yLzEECwwiqoF2soOM
q0zcujKkyeozCUx0tM8rDnSNh8zhkmUwURkp+saipbhKVtlIFwS9tzf0/HD3ohySj0gxvDklRlfx
8iGUq/TkaFSJAbcnsw99j74oKClqVqEZnmZUj8ysbHTp27fLHO9EXK3oWn4r4/oxyODK/IJAt6G3
6YXeMaKaLKuo5DJ1gRvc8Y780PXtPP8ABcXkji251OfoCB/fGlkzCGGWolWKGN5JG4VFJJ+gw6Hg
3PmUH+HsL9jIgP64NiuSXZWvItWsUoP30BI9LjAk1KiygSNdddiFG5AvfGKTSZonzKETqozKrShm
o6Z0CvpBjgGkKv8AT9eSTubWvhVCk8kZdRZlG4tbBytGbj5O0/I/y7NquKCnWIlY6ctIEUHzXFiG
Hccj64rKqGpfL0rIotLyKBaNiCB6HFFtFMd2iay6rq2qeo6C4ZjYmwsBbk8d8d+LxPW5BJEvTbQ6
uNLgbf3wPysdyxWzzFqV0l6cx6chI8pG+/GDaOikrZ2mAYUkNlL2uTYcD3P5XxaUko2yTerGcNbP
lsZWkj+FiP8ASPM3/JuT+ntjA5tWk3+Jl/8AY4gm57IVlsq6UT09NEFhjboqylO+9ypv8+2E9RVV
EcUzatrcixUH0t2+WJtXLY03kwGnqKiqlfSdXTt1D93Tc24/HBkshXXOs32Ue4uDdvkAP1wZR3Qj
XgO8NVLV+bQwU5eQTHzGw4tuD7/ti7zCvr6eAB6WNEXYEAE2PJ25xWKaNPH9tMkM3qJXibRA4kIC
6rgge+/bCateODJ6g0rPHJ5XVl2uPnfm98BbZWSVbEEM6ZlVIJ10VTeVZlAAO1hqHb5j8MOlzWDK
6RKWwKCK0fROq792LcEXvx7YPNxepHEzTi2qENRXSOTOBtNfYknSQf2wvJJNze+LRiorQ6VHpuZy
QwwmnaeOOVtnYABSQf8AN7e2E5ZZJzJTEKha7D+o/wDljE7S2Ql0ZLLTySfZtTxKCxkcC3VY7gE8
/L64CeqQKG6ZckGwJ1Kp739SPTFEm2rB2ym8GxKXkqlE0aaeiXcKAxNibW4IH5HFFW2qYC7VsyFj
fyAG49rkf4MOmlo1Qi8ULqCipamOWKXWYeS7tYjtsOPxx1mmUZdXUDaQS0SsARIUv39P7Y6NCTnJ
PXR5zm2Svl0MdSbrFKxCKzBj87rsR74WRytGdrFe6ng4v2gp2goxK+WyvECUSRTvylwRb8ufbAWO
RyKGozCrkqEatLxMCVNl3Ve4H+dsZwy1k9bHRZfTmRHYBUI1Fyfe3fEsE0DG0V8HhORsxTrFHgA+
1VWADNbgW7X2+mHlF4Rr82zJaOck0ZBLMVK6QODtbi/Pb5nGJzz5MV4IKLnOl4L2DwFk+WwulCwV
FsXM6nzN/wAuwA4A/HE/U+ECgDLExeO4sJbW7fTfGpqmbo/bR2PB7NA0JPSkBYtpGqwNrgjv814x
J1kIy+rmaV5o4U8oKupWw4thIP3UxeaKULXkn83qaPN9USwvPDqDI8bhdB77W74UL4WRiS00qAMB
p0Bmb2X1tiynROKpDIZCkTCB0njVCulQQArd7n+Ynj29MKvg8ycaozAiHdU6f3R6fdwYy1bDWyzz
bww9ZHBl8EKy1aoerUBwAxsCbelrjnnGuWZFD4RywVvVafM6hdKsdugDvpAvuT3P0HOAtKh3phmT
U6vm9L8NVyJVAgTQqAyuQN2P9Om/G/GPQXnqaBZIYpiOoAmorqtvfb3xPFW2tBUFD/RgmaNNTASl
WMJunJBPctj9BJAss++li93cgkOdIO2/GGlphj0fXqOqzyXEcnldjp2sPQA8++InPqOOupJpvhXq
nJNoI3KCQ32LDvb9MRkvcqKR6aZGU+QvGJGROgEBsjsVXfsSdyb+n44dPlsOXvaKRZKpFsZn8qpt
vte22KreyFeWYCKBaNdamRfMxkurah3O5vb52v8AQYmqiqzaKpljjalZFchSX5APzw3HrsE6ZYUO
bfGx18sbnVHOSgTzEjTb6C4wDnf2tXCjzIhpNLS3YKQNNhb3J7+2OfQZsdeDKJMvpXqDGqyTbQsw
8xQ8k9+fyw7qesCtQjnvc398MlaOt3bPxzG0dtW9x5Sv7YL+KiOsFCXRdV1NgF+v64VqxrMTXLJR
EoZDIgJf0sdrXwkqo467L51kUEvGY2J8tz2447YVUtB72TtXmWYxkRQZRUzSFFCukZWNdtiG3J2H
N7YBnnzB2X43L4+mhXSp1Shd9+G597X74fROzkLEZ7CeOOW24qdUim5sADe42He+OWyZGcs0UOom
5tK374NfByT8DvLsqzCjoaiWvEqieMQeeRADIeAALHv78HfDrL1ZK+eWeCllIAUgxdQq4Fzqv5Rt
cdz8sT76GS6Z1Rys3XkjFhE4C+Y7Ac/rgGtzhS/REjCJTtp2v74dPWjmtnxczhtG6uTfcki1sNIs
5K0cqvJ5r6VHa3bbBQGhcuZ6IZLfaszFWXgEYDavkip1DHdSdsI1ux4vQiFLLmGctT0cjSTlwYYp
ZmswbkDne+1sc1OXVNFdTlb1EYBa1NPqNwNza9z9L8HBUbEaSZ8pcxqGpkY0tZTx3Kt1UuGPoL/2
GNw1QVHlpV24NJuMC60C0j0l6aizDI1pZUrI4KYBiojuSCp1tHe77E2Nh3wninNFHSiqkFJDUpqk
1nVKp0sqqUBuDtfftbEoMu+hFDWK0tZSUl0RLagNr7W49yDhNNJHDK0U1mYsN1bdV+mGjJhlGJpT
yqHYhnMSkXYc+2D3zSKFZEupY8s5Fh9MVTJNC7+IMzB2Ki523tgOWqZ3ILDQrEmx5wJMaKCaWqrq
rMaNspjWoahJlnl6ioADuVuSLiw4GOTU08AWanSWninZtmuIpWvwG4PrtbnB6ElvYVPX/wAco5aa
qqCk0X3ZC9rHsHA/lv39t8CpDPGioaw3UWOmVSPpvhZRctoRxvo9hnzGSnpXqKJ0mRksihgvSa4s
b8j5HE3/AAvM86razMs1FJLDEC0Yjb75t6iwuBdt8Z4vFuJoq6Yj8Q5aIs/+Py004ppoERliXTHb
fcm5821/XErWxxIFvrWUC41C2oX59xh2+mcvg4NdHDS9PXpD7lQdhhTNmNpWKAkaeC3PrfDQbDKC
qxhSmeaGCNlOuoYaQvn8vJvbfjBUlPSmXoNJIWv/ANuPvkeptewGKY20IpUjdI4osuctUx0+XjmK
EW1Pxcc6lJ9+23GGrZ5Q1WURUMtDEIl0yRwC50g7drHte/vgyWQGgCVKB54ZKanpoWI+zFLI5k27
FQSPx+uMnowXYtllVqJ3/wCnH9hjmq7FcV5LeGp/heYLPTMWo5hqAK7lf3GG1c61NEZK2spIsv3+
wgQqzahuxNu9zsO2MbdNWU41qkLsqyDLYcrqVmkkFFVsuiNJCS5Ucngjsbi1vXAOa5O9XQLRVmTz
mOIM1NOZ9JJvuFIG3PBNj64qk7C0uycqqHJ6aFaPM8rzCjqH3Qu2677Dfm/NuwwLDS5NAZHo3p/s
x5llW7H3uSRa4xRKtIVybWxT15ZZ5KxKn4WST7MOAdk/mP14xlJV66c0NLOsFPySwGqQ92Yj5Xtf
FE6J5A1L8N8RCGnWckgAO50qf2w7RcwUO8VNRdPdR0Yrg+3PHffHb8HRTb2ZTnNniKRRrEosTpjE
ai9hz7DfDRKZ1RQufuVAsD0JT+jYCTkregyu9H//2Q==

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.cactuspro.com/photos_jpg/32/3230r.jpg

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

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.cactuspro.com/photos_jpg/32/3231r.jpg

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

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.cactuspro.com/images/encyclo001.gif

R0lGODlhFAAPAMIFAAAAAERlAFuHAG+mAInKAP///////////yH5BAEKAAcALAAAAAAUAA8AAANH
eLoMzjAeQIYAsmE6LM5TBwSd90gcUA6BekWAIFaePHxNJwT0ZeMLjqU0IqIsvdUtM6IpX0xnCRrV
tU4gIRWk0AKzjnA4kgAAOw==

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.cactuspro.com/encyclo_fiche.css

* {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; PADDING-TOP: 0px
}
IMG {
	BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: =
medium none; BORDER-RIGHT: medium none
}
A:hover {
	TEXT-DECORATION: none
}
BODY {
	BACKGROUND-COLOR: white; FONT-FAMILY: sans-serif; COLOR: black; =
FONT-SIZE: 100%
}
H1 {
	TEXT-ALIGN: center; MARGIN: 1em 0px 0px 0.2em; WIDTH: 68%; FONT: 2em =
sans-serif; COLOR: green
}
H3 {
	BORDER-BOTTOM: green 1px solid; MARGIN: 1em 0px 0.2em; FONT: 1em =
sans-serif; COLOR: #880000
}
H4 {
	BORDER-BOTTOM: green 1px solid; MARGIN: 1em 0px 0.2em; FONT: 1em =
sans-serif; COLOR: #880000
}
H3 {
	MARGIN-TOP: 0.2em
}
UL {
	LIST-STYLE-POSITION: inside; LIST-STYLE-TYPE: square; MARGIN-LEFT: 1em
}
.menu_auteur {
	POSITION: absolute; BORDER-BOTTOM-STYLE: solid; TEXT-ALIGN: center; =
PADDING-BOTTOM: 0.1em; BORDER-RIGHT-STYLE: solid; PADDING-LEFT: 0.5em; =
PADDING-RIGHT: 0.5em; BORDER-TOP-STYLE: solid; BACKGROUND: #e2ffe4; =
FONT-SIZE: 75%; BORDER-LEFT-STYLE: solid; PADDING-TOP: 0.1em
}
.menu_encyclo {
	POSITION: absolute; BORDER-BOTTOM-STYLE: solid; TEXT-ALIGN: center; =
PADDING-BOTTOM: 0.1em; BORDER-RIGHT-STYLE: solid; PADDING-LEFT: 0.5em; =
PADDING-RIGHT: 0.5em; BORDER-TOP-STYLE: solid; BACKGROUND: #e2ffe4; =
FONT-SIZE: 75%; BORDER-LEFT-STYLE: solid; PADDING-TOP: 0.1em
}
.menu_auteur {
	VISIBILITY: hidden
}
.menu_auteur {
	BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
1px; BORDER-LEFT-WIDTH: 1px; TOP: 0px; RIGHT: 0px
}
.menu_encyclo {
	BORDER-RIGHT-WIDTH: 1px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
1px; BORDER-LEFT-WIDTH: 0px; TOP: 0px
}
.menu_auteur A {
	TEXT-DECORATION: none
}
.menu_encyclo A {
	TEXT-DECORATION: none
}
.menu_auteur A:hover {
	TEXT-DECORATION: underline
}
.menu_encyclo A:hover {
	TEXT-DECORATION: underline
}
.menu_encyclo_bas {
	BORDER-BOTTOM: 1px solid; POSITION: absolute; BORDER-LEFT: 0px solid; =
PADDING-BOTTOM: 1px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; =
BACKGROUND: #e2ffe4; FONT-SIZE: 75%; BORDER-TOP: 1px solid; =
BORDER-RIGHT: 1px solid; PADDING-TOP: 1px; LEFT: 0px
}
.menu_encyclo_bas A {
	TEXT-DECORATION: none
}
.encyclo_droite {
	BORDER-BOTTOM: 1px; TEXT-ALIGN: center; BORDER-LEFT: 1px; =
PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; WIDTH: 25%; PADDING-RIGHT: 5px; =
FLOAT: right; BORDER-TOP: 1px; BORDER-RIGHT: 1px; PADDING-TOP: 5px
}
.encyclo_fiche {
	BORDER-BOTTOM: green 2px solid; TEXT-ALIGN: justify; BORDER-LEFT: green =
2px solid; PADDING-BOTTOM: 1em; MARGIN: 0.5em; PADDING-LEFT: 1em; WIDTH: =
68%; PADDING-RIGHT: 1em; FLOAT: left; BORDER-TOP: green 2px solid; =
BORDER-RIGHT: green 2px solid; PADDING-TOP: 1em; -moz-border-radius: 1em
}
.encyclo_liens_fiches {
	BORDER-BOTTOM: green 2px solid; TEXT-ALIGN: justify; BORDER-LEFT: green =
2px solid; PADDING-BOTTOM: 1em; MARGIN: 0.5em; PADDING-LEFT: 1em; WIDTH: =
68%; PADDING-RIGHT: 1em; FLOAT: left; BORDER-TOP: green 2px solid; =
BORDER-RIGHT: green 2px solid; PADDING-TOP: 1em; -moz-border-radius: 1em
}
.lien_botanique {
	FONT-STYLE: italic; COLOR: #006600; TEXT-DECORATION: none
}
.lien_auto {
	COLOR: #006600; TEXT-DECORATION: none
}
#overDiv {
	BORDER-BOTTOM: #c8d995 2px solid; BORDER-LEFT: #c8d995 2px solid; =
BORDER-TOP: #c8d995 2px solid; BORDER-RIGHT: #c8d995 2px solid
}

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://maps.googleapis.com/maps/api/js?sensor=false

=0A=
=0A=
window.google =3D window.google || {};=0A=
google.maps =3D google.maps || {};=0A=
(function() {=0A=
  =0A=
  function getScript(src) {=0A=
    document.write('<' + 'script src=3D"' + src + '"' +=0A=
                   ' type=3D"text/javascript"><' + '/script>');=0A=
  }=0A=
  =0A=
  var modules =3D google.maps.modules =3D {};=0A=
  google.maps.__gjsload__ =3D function(name, text) {=0A=
    modules[name] =3D text;=0A=
  };=0A=
  =0A=
  google.maps.Load =3D function(apiLoad) {=0A=
    delete google.maps.Load;=0A=
    =
apiLoad([0.009999999776482582,[[["http://mt0.googleapis.com/vt?lyrs=3Dm@2=
39000000\u0026src=3Dapi\u0026hl=3Den-US\u0026","http://mt1.googleapis.com=
/vt?lyrs=3Dm@239000000\u0026src=3Dapi\u0026hl=3Den-US\u0026"],null,null,n=
ull,null,"m@239000000"],[["http://khm0.googleapis.com/kh?v=3D138\u0026hl=3D=
en-US\u0026","http://khm1.googleapis.com/kh?v=3D138\u0026hl=3Den-US\u0026=
"],null,null,null,1,"138"],[["http://mt0.googleapis.com/vt?lyrs=3Dh@23900=
0000\u0026src=3Dapi\u0026hl=3Den-US\u0026","http://mt1.googleapis.com/vt?=
lyrs=3Dh@239000000\u0026src=3Dapi\u0026hl=3Den-US\u0026"],null,null,null,=
null,"h@239000000"],[["http://mt0.googleapis.com/vt?lyrs=3Dt@131,r@239000=
000\u0026src=3Dapi\u0026hl=3Den-US\u0026","http://mt1.googleapis.com/vt?l=
yrs=3Dt@131,r@239000000\u0026src=3Dapi\u0026hl=3Den-US\u0026"],null,null,=
null,null,"t@131,r@239000000"],null,null,[["http://cbk0.googleapis.com/cb=
k?","http://cbk1.googleapis.com/cbk?"]],[["http://khm0.googleapis.com/kh?=
v=3D82\u0026hl=3Den-US\u0026","http://khm1.googleapis.com/kh?v=3D82\u0026=
hl=3Den-US\u0026"],null,null,null,null,"82"],[["http://mt0.googleapis.com=
/mapslt?hl=3Den-US\u0026","http://mt1.googleapis.com/mapslt?hl=3Den-US\u0=
026"]],[["http://mt0.googleapis.com/mapslt/ft?hl=3Den-US\u0026","http://m=
t1.googleapis.com/mapslt/ft?hl=3Den-US\u0026"]],[["http://mt0.googleapis.=
com/vt?hl=3Den-US\u0026","http://mt1.googleapis.com/vt?hl=3Den-US\u0026"]=
],[["http://mt0.googleapis.com/mapslt/loom?hl=3Den-US\u0026","http://mt1.=
googleapis.com/mapslt/loom?hl=3Den-US\u0026"]],[["https://mts0.googleapis=
.com/mapslt?hl=3Den-US\u0026","https://mts1.googleapis.com/mapslt?hl=3Den=
-US\u0026"]],[["https://mts0.googleapis.com/mapslt/ft?hl=3Den-US\u0026","=
https://mts1.googleapis.com/mapslt/ft?hl=3Den-US\u0026"]]],["en-US","US",=
null,0,null,null,"http://maps.gstatic.com/mapfiles/","http://csi.gstatic.=
com","https://maps.googleapis.com","http://maps.googleapis.com"],["http:/=
/maps.gstatic.com/intl/en_us/mapfiles/api-3/14/9","3.14.9"],[140324388],1=
,null,null,null,null,0,"",null,null,0,"http://khm.googleapis.com/mz?v=3D1=
38\u0026",null,"https://earthbuilder.googleapis.com","https://earthbuilde=
r.googleapis.com",null,"http://mt.googleapis.com/vt/icon",[["http://mt0.g=
oogleapis.com/vt","http://mt1.googleapis.com/vt"],["https://mts0.googleap=
is.com/vt","https://mts1.googleapis.com/vt"],[null,[[0,"m",239000000]],[n=
ull,"en-US","US",null,18,null,null,null,null,null,null,[[47],[37,[["smart=
maps"]]]]],0],[null,[[0,"m",239000000]],[null,"en-US","US",null,18,null,n=
ull,null,null,null,null,[[47],[37,[["smartmaps"]]]]],3],[null,[[0,"h",239=
000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[50],[=
37,[["smartmaps"]]]]],0],[null,[[0,"h",239000000]],[null,"en-US","US",nul=
l,18,null,null,null,null,null,null,[[50],[37,[["smartmaps"]]]]],3],[null,=
[[4,"t",131],[0,"r",131000000]],[null,"en-US","US",null,18,null,null,null=
,null,null,null,[[5],[37,[["smartmaps"]]]]],0],[null,[[4,"t",131],[0,"r",=
131000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[5]=
,[37,[["smartmaps"]]]]],3],[null,null,[null,"en-US","US",null,18],0],[nul=
l,null,[null,"en-US","US",null,18],3],[null,null,[null,"en-US","US",null,=
18],6],[null,null,[null,"en-US","US",null,18],0]],2,500], =
loadScriptTime);=0A=
  };=0A=
  var loadScriptTime =3D (new Date).getTime();=0A=
  =
getScript("http://maps.gstatic.com/intl/en_us/mapfiles/api-3/14/9/main.js=
");=0A=
})();=0A=

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.cactuspro.com/jquery.js

(function(){=0A=
/*=0A=
 * jQuery 1.2.6 - New Wave Javascript=0A=
 *=0A=
 * Copyright (c) 2008 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-24 14:22:17 -0400 (Sat, 24 May 2008) $=0A=
 * $Rev: 5685 $=0A=
 */=0A=
=0A=
// Map over jQuery in case of overwrite=0A=
var _jQuery =3D window.jQuery,=0A=
// Map over the $ in case of overwrite=0A=
	_$ =3D window.$;=0A=
=0A=
var jQuery =3D window.jQuery =3D window.$ =3D function( selector, =
context ) {=0A=
	// The jQuery object is actually just the init constructor 'enhanced'=0A=
	return new jQuery.fn.init( selector, context );=0A=
};=0A=
=0A=
// A simple way to check for HTML strings or ID strings=0A=
// (both of which we optimize for)=0A=
var quickExpr =3D /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,=0A=
=0A=
// Is it a simple selector=0A=
	isSimple =3D /^.[^:#\[\.]*$/,=0A=
=0A=
// Will speed up references to undefined, and allows munging its name.=0A=
	undefined;=0A=
=0A=
jQuery.fn =3D jQuery.prototype =3D {=0A=
	init: function( selector, context ) {=0A=
		// Make sure that a selection was provided=0A=
		selector =3D selector || document;=0A=
=0A=
		// Handle $(DOMElement)=0A=
		if ( selector.nodeType ) {=0A=
			this[0] =3D selector;=0A=
			this.length =3D 1;=0A=
			return this;=0A=
		}=0A=
		// Handle HTML strings=0A=
		if ( typeof selector =3D=3D "string" ) {=0A=
			// Are we dealing with HTML string or an ID?=0A=
			var match =3D quickExpr.exec( selector );=0A=
=0A=
			// Verify a match, and that no context was specified for #id=0A=
			if ( match && (match[1] || !context) ) {=0A=
=0A=
				// HANDLE: $(html) -> $(array)=0A=
				if ( match[1] )=0A=
					selector =3D jQuery.clean( [ match[1] ], context );=0A=
=0A=
				// HANDLE: $("#id")=0A=
				else {=0A=
					var elem =3D document.getElementById( match[3] );=0A=
=0A=
					// Make sure an element was located=0A=
					if ( elem ){=0A=
						// Handle the case where IE and Opera return items=0A=
						// by name instead of ID=0A=
						if ( elem.id !=3D match[3] )=0A=
							return jQuery().find( selector );=0A=
=0A=
						// Otherwise, we inject the element directly into the jQuery object=0A=
						return jQuery( elem );=0A=
					}=0A=
					selector =3D [];=0A=
				}=0A=
=0A=
			// HANDLE: $(expr, [context])=0A=
			// (which is just equivalent to: $(content).find(expr)=0A=
			} else=0A=
				return jQuery( context ).find( selector );=0A=
=0A=
		// HANDLE: $(function)=0A=
		// Shortcut for document ready=0A=
		} else if ( jQuery.isFunction( selector ) )=0A=
			return jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( =
selector );=0A=
=0A=
		return this.setArray(jQuery.makeArray(selector));=0A=
	},=0A=
=0A=
	// The current version of jQuery being used=0A=
	jquery: "1.2.6",=0A=
=0A=
	// The number of elements contained in the matched element set=0A=
	size: function() {=0A=
		return this.length;=0A=
	},=0A=
=0A=
	// The number of elements contained in the matched element set=0A=
	length: 0,=0A=
=0A=
	// Get the Nth element in the matched element set OR=0A=
	// Get the whole matched element set as a clean array=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=
=0A=
	// Take an array of elements and push it onto the stack=0A=
	// (returning the new matched element set)=0A=
	pushStack: function( elems ) {=0A=
		// Build a new jQuery matched element set=0A=
		var ret =3D jQuery( elems );=0A=
=0A=
		// Add the old object onto the stack (as a reference)=0A=
		ret.prevObject =3D this;=0A=
=0A=
		// Return the newly-formed element set=0A=
		return ret;=0A=
	},=0A=
=0A=
	// Force the current matched set of elements to become=0A=
	// the specified array of elements (destroying the stack in the process)=0A=
	// You should use pushStack() in order to do this, but maintain the =
stack=0A=
	setArray: function( elems ) {=0A=
		// Resetting the length to 0, then using the native Array push=0A=
		// is a super-fast way to populate an object with array-like properties=0A=
		this.length =3D 0;=0A=
		Array.prototype.push.apply( this, elems );=0A=
=0A=
		return this;=0A=
	},=0A=
=0A=
	// Execute a callback for every element in the matched set.=0A=
	// (You can seed the arguments with an array of args, but this is=0A=
	// only used internally.)=0A=
	each: function( callback, args ) {=0A=
		return jQuery.each( this, callback, args );=0A=
	},=0A=
=0A=
	// Determine the position of an element within=0A=
	// the matched set of elements=0A=
	index: function( elem ) {=0A=
		var ret =3D -1;=0A=
=0A=
		// Locate the position of the desired element=0A=
		return jQuery.inArray(=0A=
			// If it receives a jQuery object, the first element is used=0A=
			elem && elem.jquery ? elem[0] : elem=0A=
		, this );=0A=
	},=0A=
=0A=
	attr: function( name, value, type ) {=0A=
		var options =3D name;=0A=
=0A=
		// Look for the case where we're accessing a style value=0A=
		if ( name.constructor =3D=3D String )=0A=
			if ( value =3D=3D=3D undefined )=0A=
				return this[0] && jQuery[ type || "attr" ]( this[0], name );=0A=
=0A=
			else {=0A=
				options =3D {};=0A=
				options[ name ] =3D value;=0A=
			}=0A=
=0A=
		// Check to see if we're setting style values=0A=
		return this.each(function(i){=0A=
			// Set all the styles=0A=
			for ( name in options )=0A=
				jQuery.attr(=0A=
					type ?=0A=
						this.style :=0A=
						this,=0A=
					name, jQuery.prop( this, options[ name ], type, i, name )=0A=
				);=0A=
		});=0A=
	},=0A=
=0A=
	css: function( key, value ) {=0A=
		// ignore negative width and height values=0A=
		if ( (key =3D=3D 'width' || key =3D=3D 'height') && parseFloat(value) =
< 0 )=0A=
			value =3D undefined;=0A=
		return this.attr( key, value, "curCSS" );=0A=
	},=0A=
=0A=
	text: function( text ) {=0A=
		if ( typeof text !=3D "object" && text !=3D null )=0A=
			return this.empty().append( (this[0] && this[0].ownerDocument || =
document).createTextNode( text ) );=0A=
=0A=
		var ret =3D "";=0A=
=0A=
		jQuery.each( text || this, function(){=0A=
			jQuery.each( this.childNodes, function(){=0A=
				if ( this.nodeType !=3D 8 )=0A=
					ret +=3D this.nodeType !=3D 1 ?=0A=
						this.nodeValue :=0A=
						jQuery.fn.text( [ this ] );=0A=
			});=0A=
		});=0A=
=0A=
		return ret;=0A=
	},=0A=
=0A=
	wrapAll: function( html ) {=0A=
		if ( this[0] )=0A=
			// The elements to wrap the target around=0A=
			jQuery( html, this[0].ownerDocument )=0A=
				.clone()=0A=
				.insertBefore( this[0] )=0A=
				.map(function(){=0A=
					var elem =3D this;=0A=
=0A=
					while ( elem.firstChild )=0A=
						elem =3D elem.firstChild;=0A=
=0A=
					return elem;=0A=
				})=0A=
				.append(this);=0A=
=0A=
		return this;=0A=
	},=0A=
=0A=
	wrapInner: function( html ) {=0A=
		return this.each(function(){=0A=
			jQuery( this ).contents().wrapAll( html );=0A=
		});=0A=
	},=0A=
=0A=
	wrap: function( html ) {=0A=
		return this.each(function(){=0A=
			jQuery( this ).wrapAll( html );=0A=
		});=0A=
	},=0A=
=0A=
	append: function() {=0A=
		return this.domManip(arguments, true, false, function(elem){=0A=
			if (this.nodeType =3D=3D 1)=0A=
				this.appendChild( elem );=0A=
		});=0A=
	},=0A=
=0A=
	prepend: function() {=0A=
		return this.domManip(arguments, true, true, function(elem){=0A=
			if (this.nodeType =3D=3D 1)=0A=
				this.insertBefore( elem, this.firstChild );=0A=
		});=0A=
	},=0A=
=0A=
	before: function() {=0A=
		return this.domManip(arguments, false, false, function(elem){=0A=
			this.parentNode.insertBefore( elem, this );=0A=
		});=0A=
	},=0A=
=0A=
	after: function() {=0A=
		return this.domManip(arguments, false, true, function(elem){=0A=
			this.parentNode.insertBefore( elem, this.nextSibling );=0A=
		});=0A=
	},=0A=
=0A=
	end: function() {=0A=
		return this.prevObject || jQuery( [] );=0A=
	},=0A=
=0A=
	find: function( selector ) {=0A=
		var elems =3D jQuery.map(this, function(elem){=0A=
			return jQuery.find( selector, elem );=0A=
		});=0A=
=0A=
		return this.pushStack( /[^+>] [^+>]/.test( selector ) || =
selector.indexOf("..") > -1 ?=0A=
			jQuery.unique( elems ) :=0A=
			elems );=0A=
	},=0A=
=0A=
	clone: function( events ) {=0A=
		// Do the clone=0A=
		var ret =3D this.map(function(){=0A=
			if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) {=0A=
				// IE copies events bound via attachEvent when=0A=
				// using cloneNode. Calling detachEvent on the=0A=
				// clone will also remove the events from the orignal=0A=
				// In order to get around this, we use innerHTML.=0A=
				// Unfortunately, this means some modifications to=0A=
				// attributes in IE that are actually only stored=0A=
				// as properties will not be copied (such as the=0A=
				// the name attribute on an input).=0A=
				var clone =3D this.cloneNode(true),=0A=
					container =3D document.createElement("div");=0A=
				container.appendChild(clone);=0A=
				return jQuery.clean([container.innerHTML])[0];=0A=
			} else=0A=
				return this.cloneNode(true);=0A=
		});=0A=
=0A=
		// Need to set the expando to null on the cloned set if it exists=0A=
		// removeData doesn't work here, IE removes it from the original as =
well=0A=
		// this is primarily for IE but the data expando shouldn't be copied =
over in any browser=0A=
		var clone =3D ret.find("*").andSelf().each(function(){=0A=
			if ( this[ expando ] !=3D undefined )=0A=
				this[ expando ] =3D null;=0A=
		});=0A=
=0A=
		// Copy the events from the original to the clone=0A=
		if ( events =3D=3D=3D true )=0A=
			this.find("*").andSelf().each(function(i){=0A=
				if (this.nodeType =3D=3D 3)=0A=
					return;=0A=
				var events =3D jQuery.data( this, "events" );=0A=
=0A=
				for ( var type in events )=0A=
					for ( var handler in events[ type ] )=0A=
						jQuery.event.add( clone[ i ], type, events[ type ][ handler ], =
events[ type ][ handler ].data );=0A=
			});=0A=
=0A=
		// Return the cloned set=0A=
		return ret;=0A=
	},=0A=
=0A=
	filter: function( selector ) {=0A=
		return this.pushStack(=0A=
			jQuery.isFunction( selector ) &&=0A=
			jQuery.grep(this, function(elem, i){=0A=
				return selector.call( elem, i );=0A=
			}) ||=0A=
=0A=
			jQuery.multiFilter( selector, this ) );=0A=
	},=0A=
=0A=
	not: function( selector ) {=0A=
		if ( selector.constructor =3D=3D String )=0A=
			// test special case where just one selector is passed in=0A=
			if ( isSimple.test( selector ) )=0A=
				return this.pushStack( jQuery.multiFilter( selector, this, true ) );=0A=
			else=0A=
				selector =3D jQuery.multiFilter( selector, this );=0A=
=0A=
		var isArrayLike =3D selector.length && selector[selector.length - 1] =
!=3D=3D undefined && !selector.nodeType;=0A=
		return this.filter(function() {=0A=
			return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this !=3D =
selector;=0A=
		});=0A=
	},=0A=
=0A=
	add: function( selector ) {=0A=
		return this.pushStack( jQuery.unique( jQuery.merge(=0A=
			this.get(),=0A=
			typeof selector =3D=3D 'string' ?=0A=
				jQuery( selector ) :=0A=
				jQuery.makeArray( selector )=0A=
		)));=0A=
	},=0A=
=0A=
	is: function( selector ) {=0A=
		return !!selector && jQuery.multiFilter( selector, this ).length > 0;=0A=
	},=0A=
=0A=
	hasClass: function( selector ) {=0A=
		return this.is( "." + selector );=0A=
	},=0A=
=0A=
	val: function( value ) {=0A=
		if ( value =3D=3D undefined ) {=0A=
=0A=
			if ( this.length ) {=0A=
				var elem =3D this[0];=0A=
=0A=
				// We need to handle select boxes special=0A=
				if ( jQuery.nodeName( elem, "select" ) ) {=0A=
					var index =3D elem.selectedIndex,=0A=
						values =3D [],=0A=
						options =3D elem.options,=0A=
						one =3D elem.type =3D=3D "select-one";=0A=
=0A=
					// Nothing was selected=0A=
					if ( index < 0 )=0A=
						return null;=0A=
=0A=
					// Loop through all the selected options=0A=
					for ( var i =3D one ? index : 0, max =3D one ? index + 1 : =
options.length; i < max; i++ ) {=0A=
						var option =3D options[ i ];=0A=
=0A=
						if ( option.selected ) {=0A=
							// Get the specifc value for the option=0A=
							value =3D jQuery.browser.msie && =
!option.attributes.value.specified ? option.text : option.value;=0A=
=0A=
							// We don't need an array for one selects=0A=
							if ( one )=0A=
								return value;=0A=
=0A=
							// Multi-Selects return an array=0A=
							values.push( value );=0A=
						}=0A=
					}=0A=
=0A=
					return values;=0A=
=0A=
				// Everything else, we just grab the value=0A=
				} else=0A=
					return (this[0].value || "").replace(/\r/g, "");=0A=
=0A=
			}=0A=
=0A=
			return undefined;=0A=
		}=0A=
=0A=
		if( value.constructor =3D=3D Number )=0A=
			value +=3D '';=0A=
=0A=
		return this.each(function(){=0A=
			if ( this.nodeType !=3D 1 )=0A=
				return;=0A=
=0A=
			if ( value.constructor =3D=3D Array && /radio|checkbox/.test( =
this.type ) )=0A=
				this.checked =3D (jQuery.inArray(this.value, value) >=3D 0 ||=0A=
					jQuery.inArray(this.name, value) >=3D 0);=0A=
=0A=
			else if ( jQuery.nodeName( this, "select" ) ) {=0A=
				var values =3D jQuery.makeArray(value);=0A=
=0A=
				jQuery( "option", this ).each(function(){=0A=
					this.selected =3D (jQuery.inArray( this.value, values ) >=3D 0 ||=0A=
						jQuery.inArray( this.text, values ) >=3D 0);=0A=
				});=0A=
=0A=
				if ( !values.length )=0A=
					this.selectedIndex =3D -1;=0A=
=0A=
			} else=0A=
				this.value =3D value;=0A=
		});=0A=
	},=0A=
=0A=
	html: function( value ) {=0A=
		return value =3D=3D undefined ?=0A=
			(this[0] ?=0A=
				this[0].innerHTML :=0A=
				null) :=0A=
			this.empty().append( value );=0A=
	},=0A=
=0A=
	replaceWith: function( value ) {=0A=
		return this.after( value ).remove();=0A=
	},=0A=
=0A=
	eq: function( i ) {=0A=
		return this.slice( i, i + 1 );=0A=
	},=0A=
=0A=
	slice: function() {=0A=
		return this.pushStack( Array.prototype.slice.apply( this, arguments ) =
);=0A=
	},=0A=
=0A=
	map: function( callback ) {=0A=
		return this.pushStack( jQuery.map(this, function(elem, i){=0A=
			return callback.call( elem, i, elem );=0A=
		}));=0A=
	},=0A=
=0A=
	andSelf: function() {=0A=
		return this.add( this.prevObject );=0A=
	},=0A=
=0A=
	data: function( key, value ){=0A=
		var parts =3D key.split(".");=0A=
		parts[1] =3D parts[1] ? "." + parts[1] : "";=0A=
=0A=
		if ( value =3D=3D=3D undefined ) {=0A=
			var data =3D this.triggerHandler("getData" + parts[1] + "!", =
[parts[0]]);=0A=
=0A=
			if ( data =3D=3D=3D undefined && this.length )=0A=
				data =3D jQuery.data( this[0], key );=0A=
=0A=
			return data =3D=3D=3D undefined && parts[1] ?=0A=
				this.data( parts[0] ) :=0A=
				data;=0A=
		} else=0A=
			return this.trigger("setData" + parts[1] + "!", [parts[0], =
value]).each(function(){=0A=
				jQuery.data( this, key, value );=0A=
			});=0A=
	},=0A=
=0A=
	removeData: function( key ){=0A=
		return this.each(function(){=0A=
			jQuery.removeData( this, key );=0A=
		});=0A=
	},=0A=
=0A=
	domManip: function( args, table, reverse, callback ) {=0A=
		var clone =3D this.length > 1, elems;=0A=
=0A=
		return this.each(function(){=0A=
			if ( !elems ) {=0A=
				elems =3D jQuery.clean( args, this.ownerDocument );=0A=
=0A=
				if ( reverse )=0A=
					elems.reverse();=0A=
			}=0A=
=0A=
			var obj =3D this;=0A=
=0A=
			if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( =
elems[0], "tr" ) )=0A=
				obj =3D this.getElementsByTagName("tbody")[0] || this.appendChild( =
this.ownerDocument.createElement("tbody") );=0A=
=0A=
			var scripts =3D jQuery( [] );=0A=
=0A=
			jQuery.each(elems, function(){=0A=
				var elem =3D clone ?=0A=
					jQuery( this ).clone( true )[0] :=0A=
					this;=0A=
=0A=
				// execute all scripts after the elements have been injected=0A=
				if ( jQuery.nodeName( elem, "script" ) )=0A=
					scripts =3D scripts.add( elem );=0A=
				else {=0A=
					// Remove any inner scripts for later evaluation=0A=
					if ( elem.nodeType =3D=3D 1 )=0A=
						scripts =3D scripts.add( jQuery( "script", elem ).remove() );=0A=
=0A=
					// Inject the elements into the document=0A=
					callback.call( obj, elem );=0A=
				}=0A=
			});=0A=
=0A=
			scripts.each( evalScript );=0A=
		});=0A=
	}=0A=
};=0A=
=0A=
// Give the init function the jQuery prototype for later instantiation=0A=
jQuery.fn.init.prototype =3D jQuery.fn;=0A=
=0A=
function evalScript( i, elem ) {=0A=
	if ( elem.src )=0A=
		jQuery.ajax({=0A=
			url: elem.src,=0A=
			async: false,=0A=
			dataType: "script"=0A=
		});=0A=
=0A=
	else=0A=
		jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || =
"" );=0A=
=0A=
	if ( elem.parentNode )=0A=
		elem.parentNode.removeChild( elem );=0A=
}=0A=
=0A=
function now(){=0A=
	return +new Date;=0A=
}=0A=
=0A=
jQuery.extend =3D jQuery.fn.extend =3D function() {=0A=
	// copy reference to target object=0A=
	var target =3D arguments[0] || {}, i =3D 1, length =3D =
arguments.length, deep =3D false, options;=0A=
=0A=
	// Handle a deep copy situation=0A=
	if ( target.constructor =3D=3D Boolean ) {=0A=
		deep =3D target;=0A=
		target =3D arguments[1] || {};=0A=
		// skip the boolean and the target=0A=
		i =3D 2;=0A=
	}=0A=
=0A=
	// Handle case when target is a string or something (possible in deep =
copy)=0A=
	if ( typeof target !=3D "object" && typeof target !=3D "function" )=0A=
		target =3D {};=0A=
=0A=
	// extend jQuery itself if only one argument is passed=0A=
	if ( length =3D=3D i ) {=0A=
		target =3D this;=0A=
		--i;=0A=
	}=0A=
=0A=
	for ( ; i < length; i++ )=0A=
		// Only deal with non-null/undefined values=0A=
		if ( (options =3D arguments[ i ]) !=3D null )=0A=
			// Extend the base object=0A=
			for ( var name in options ) {=0A=
				var src =3D target[ name ], copy =3D options[ name ];=0A=
=0A=
				// Prevent never-ending loop=0A=
				if ( target =3D=3D=3D copy )=0A=
					continue;=0A=
=0A=
				// Recurse if we're merging object values=0A=
				if ( deep && copy && typeof copy =3D=3D "object" && !copy.nodeType )=0A=
					target[ name ] =3D jQuery.extend( deep, =0A=
						// Never move original objects, clone them=0A=
						src || ( copy.length !=3D null ? [ ] : { } )=0A=
					, copy );=0A=
=0A=
				// Don't bring in undefined values=0A=
				else if ( copy !=3D=3D undefined )=0A=
					target[ name ] =3D copy;=0A=
=0A=
			}=0A=
=0A=
	// Return the modified object=0A=
	return target;=0A=
};=0A=
=0A=
var expando =3D "jQuery" + now(), uuid =3D 0, windowData =3D {},=0A=
	// exclude the following css properties to add px=0A=
	exclude =3D /z-?index|font-?weight|opacity|zoom|line-?height/i,=0A=
	// cache defaultView=0A=
	defaultView =3D document.defaultView || {};=0A=
=0A=
jQuery.extend({=0A=
	noConflict: function( deep ) {=0A=
		window.$ =3D _$;=0A=
=0A=
		if ( deep )=0A=
			window.jQuery =3D _jQuery;=0A=
=0A=
		return jQuery;=0A=
	},=0A=
=0A=
	// See test/unit/core.js for details concerning this function.=0A=
	isFunction: function( fn ) {=0A=
		return !!fn && typeof fn !=3D "string" && !fn.nodeName &&=0A=
			fn.constructor !=3D Array && /^[\s[]?function/.test( fn + "" );=0A=
	},=0A=
=0A=
	// check if an element is in a (or is an) XML document=0A=
	isXMLDoc: function( elem ) {=0A=
		return elem.documentElement && !elem.body ||=0A=
			elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;=0A=
	},=0A=
=0A=
	// Evalulates a script in a global context=0A=
	globalEval: function( data ) {=0A=
		data =3D jQuery.trim( data );=0A=
=0A=
		if ( data ) {=0A=
			// Inspired by code by Andrea Giammarchi=0A=
			// =
http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom=
.html=0A=
			var head =3D document.getElementsByTagName("head")[0] || =
document.documentElement,=0A=
				script =3D document.createElement("script");=0A=
=0A=
			script.type =3D "text/javascript";=0A=
			if ( jQuery.browser.msie )=0A=
				script.text =3D data;=0A=
			else=0A=
				script.appendChild( document.createTextNode( data ) );=0A=
=0A=
			// Use insertBefore instead of appendChild  to circumvent an IE6 bug.=0A=
			// This arises when a base node is used (#2709).=0A=
			head.insertBefore( script, head.firstChild );=0A=
			head.removeChild( script );=0A=
		}=0A=
	},=0A=
=0A=
	nodeName: function( elem, name ) {=0A=
		return elem.nodeName && elem.nodeName.toUpperCase() =3D=3D =
name.toUpperCase();=0A=
	},=0A=
=0A=
	cache: {},=0A=
=0A=
	data: function( elem, name, data ) {=0A=
		elem =3D elem =3D=3D window ?=0A=
			windowData :=0A=
			elem;=0A=
=0A=
		var id =3D elem[ expando ];=0A=
=0A=
		// Compute a unique ID for the element=0A=
		if ( !id )=0A=
			id =3D elem[ expando ] =3D ++uuid;=0A=
=0A=
		// Only generate the data cache if we're=0A=
		// trying to access or manipulate it=0A=
		if ( name && !jQuery.cache[ id ] )=0A=
			jQuery.cache[ id ] =3D {};=0A=
=0A=
		// Prevent overriding the named cache with undefined values=0A=
		if ( data !=3D=3D undefined )=0A=
			jQuery.cache[ id ][ name ] =3D data;=0A=
=0A=
		// Return the named cache data, or the ID for the element=0A=
		return name ?=0A=
			jQuery.cache[ id ][ name ] :=0A=
			id;=0A=
	},=0A=
=0A=
	removeData: function( elem, name ) {=0A=
		elem =3D elem =3D=3D window ?=0A=
			windowData :=0A=
			elem;=0A=
=0A=
		var id =3D elem[ expando ];=0A=
=0A=
		// If we want to remove a specific section of the element's data=0A=
		if ( name ) {=0A=
			if ( jQuery.cache[ id ] ) {=0A=
				// Remove the section of cache data=0A=
				delete jQuery.cache[ id ][ name ];=0A=
=0A=
				// If we've removed all the data, remove the element's cache=0A=
				name =3D "";=0A=
=0A=
				for ( name in jQuery.cache[ id ] )=0A=
					break;=0A=
=0A=
				if ( !name )=0A=
					jQuery.removeData( elem );=0A=
			}=0A=
=0A=
		// Otherwise, we want to remove all of the element's data=0A=
		} else {=0A=
			// Clean up the element expando=0A=
			try {=0A=
				delete elem[ expando ];=0A=
			} catch(e){=0A=
				// IE has trouble directly removing the expando=0A=
				// but it's ok with using removeAttribute=0A=
				if ( elem.removeAttribute )=0A=
					elem.removeAttribute( expando );=0A=
			}=0A=
=0A=
			// Completely remove the data cache=0A=
			delete jQuery.cache[ id ];=0A=
		}=0A=
	},=0A=
=0A=
	// args is for internal usage only=0A=
	each: function( object, callback, args ) {=0A=
		var name, i =3D 0, length =3D object.length;=0A=
=0A=
		if ( args ) {=0A=
			if ( length =3D=3D undefined ) {=0A=
				for ( name in object )=0A=
					if ( callback.apply( object[ name ], args ) =3D=3D=3D false )=0A=
						break;=0A=
			} else=0A=
				for ( ; i < length; )=0A=
					if ( callback.apply( object[ i++ ], args ) =3D=3D=3D false )=0A=
						break;=0A=
=0A=
		// A special, fast, case for the most common use of each=0A=
		} else {=0A=
			if ( length =3D=3D undefined ) {=0A=
				for ( name in object )=0A=
					if ( callback.call( object[ name ], name, object[ name ] ) =
=3D=3D=3D false )=0A=
						break;=0A=
			} else=0A=
				for ( var value =3D object[0];=0A=
					i < length && callback.call( value, i, value ) !=3D=3D false; value =
=3D object[++i] ){}=0A=
		}=0A=
=0A=
		return object;=0A=
	},=0A=
=0A=
	prop: function( elem, value, type, i, name ) {=0A=
		// Handle executable functions=0A=
		if ( jQuery.isFunction( value ) )=0A=
			value =3D value.call( elem, 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( name ) ?=0A=
			value + "px" :=0A=
			value;=0A=
	},=0A=
=0A=
	className: {=0A=
		// internal only, use addClass("class")=0A=
		add: function( elem, classNames ) {=0A=
			jQuery.each((classNames || "").split(/\s+/), function(i, className){=0A=
				if ( elem.nodeType =3D=3D 1 && !jQuery.className.has( =
elem.className, className ) )=0A=
					elem.className +=3D (elem.className ? " " : "") + className;=0A=
			});=0A=
		},=0A=
=0A=
		// internal only, use removeClass("class")=0A=
		remove: function( elem, classNames ) {=0A=
			if (elem.nodeType =3D=3D 1)=0A=
				elem.className =3D classNames !=3D undefined ?=0A=
					jQuery.grep(elem.className.split(/\s+/), function(className){=0A=
						return !jQuery.className.has( classNames, className );=0A=
					}).join(" ") :=0A=
					"";=0A=
		},=0A=
=0A=
		// internal only, use hasClass("class")=0A=
		has: function( elem, className ) {=0A=
			return jQuery.inArray( className, (elem.className || =
elem).toString().split(/\s+/) ) > -1;=0A=
		}=0A=
	},=0A=
=0A=
	// A method for quickly swapping in/out CSS properties to get correct =
calculations=0A=
	swap: function( elem, options, callback ) {=0A=
		var old =3D {};=0A=
		// Remember the old values, and insert the new ones=0A=
		for ( var name in options ) {=0A=
			old[ name ] =3D elem.style[ name ];=0A=
			elem.style[ name ] =3D options[ name ];=0A=
		}=0A=
=0A=
		callback.call( elem );=0A=
=0A=
		// Revert the old values=0A=
		for ( var name in options )=0A=
			elem.style[ name ] =3D old[ name ];=0A=
	},=0A=
=0A=
	css: function( elem, name, force ) {=0A=
		if ( name =3D=3D "width" || name =3D=3D "height" ) {=0A=
			var val, props =3D { position: "absolute", visibility: "hidden", =
display:"block" }, which =3D name =3D=3D "width" ? [ "Left", "Right" ] : =
[ "Top", "Bottom" ];=0A=
=0A=
			function getWH() {=0A=
				val =3D name =3D=3D "width" ? elem.offsetWidth : elem.offsetHeight;=0A=
				var padding =3D 0, border =3D 0;=0A=
				jQuery.each( which, function() {=0A=
					padding +=3D parseFloat(jQuery.curCSS( elem, "padding" + this, =
true)) || 0;=0A=
					border +=3D parseFloat(jQuery.curCSS( elem, "border" + this + =
"Width", true)) || 0;=0A=
				});=0A=
				val -=3D Math.round(padding + border);=0A=
			}=0A=
=0A=
			if ( jQuery(elem).is(":visible") )=0A=
				getWH();=0A=
			else=0A=
				jQuery.swap( elem, props, getWH );=0A=
=0A=
			return Math.max(0, val);=0A=
		}=0A=
=0A=
		return jQuery.curCSS( elem, name, force );=0A=
	},=0A=
=0A=
	curCSS: function( elem, name, force ) {=0A=
		var ret, style =3D elem.style;=0A=
=0A=
		// A helper method for determining if an element's values are broken=0A=
		function color( elem ) {=0A=
			if ( !jQuery.browser.safari )=0A=
				return false;=0A=
=0A=
			// defaultView is cached=0A=
			var ret =3D defaultView.getComputedStyle( elem, null );=0A=
			return !ret || ret.getPropertyValue("color") =3D=3D "";=0A=
		}=0A=
=0A=
		// We need to handle opacity special in IE=0A=
		if ( name =3D=3D "opacity" && jQuery.browser.msie ) {=0A=
			ret =3D jQuery.attr( style, "opacity" );=0A=
=0A=
			return ret =3D=3D "" ?=0A=
				"1" :=0A=
				ret;=0A=
		}=0A=
		// Opera sometimes will give the wrong display answer, this fixes it, =
see #2037=0A=
		if ( jQuery.browser.opera && name =3D=3D "display" ) {=0A=
			var save =3D style.outline;=0A=
			style.outline =3D "0 solid black";=0A=
			style.outline =3D save;=0A=
		}=0A=
=0A=
		// Make sure we're using the right name for getting the float value=0A=
		if ( name.match( /float/i ) )=0A=
			name =3D styleFloat;=0A=
=0A=
		if ( !force && style && style[ name ] )=0A=
			ret =3D style[ name ];=0A=
=0A=
		else if ( defaultView.getComputedStyle ) {=0A=
=0A=
			// Only "float" is needed here=0A=
			if ( name.match( /float/i ) )=0A=
				name =3D "float";=0A=
=0A=
			name =3D name.replace( /([A-Z])/g, "-$1" ).toLowerCase();=0A=
=0A=
			var computedStyle =3D defaultView.getComputedStyle( elem, null );=0A=
=0A=
			if ( computedStyle && !color( elem ) )=0A=
				ret =3D computedStyle.getPropertyValue( name );=0A=
=0A=
			// If the element isn't reporting its values properly in Safari=0A=
			// then some display: none elements are involved=0A=
			else {=0A=
				var swap =3D [], stack =3D [], a =3D elem, i =3D 0;=0A=
=0A=
				// Locate all of the parent display: none elements=0A=
				for ( ; a && color(a); a =3D a.parentNode )=0A=
					stack.unshift(a);=0A=
=0A=
				// Go through and make them visible, but in reverse=0A=
				// (It would be better if we knew the exact display type that they =
had)=0A=
				for ( ; i < stack.length; i++ )=0A=
					if ( color( stack[ i ] ) ) {=0A=
						swap[ i ] =3D stack[ i ].style.display;=0A=
						stack[ i ].style.display =3D "block";=0A=
					}=0A=
=0A=
				// Since we flip the display style, we have to handle that=0A=
				// one special, otherwise get the value=0A=
				ret =3D name =3D=3D "display" && swap[ stack.length - 1 ] !=3D null ?=0A=
					"none" :=0A=
					( computedStyle && computedStyle.getPropertyValue( name ) ) || "";=0A=
=0A=
				// Finally, revert the display styles back=0A=
				for ( i =3D 0; i < swap.length; i++ )=0A=
					if ( swap[ i ] !=3D null )=0A=
						stack[ i ].style.display =3D swap[ i ];=0A=
			}=0A=
=0A=
			// We should always get a number back from opacity=0A=
			if ( name =3D=3D "opacity" && ret =3D=3D "" )=0A=
				ret =3D "1";=0A=
=0A=
		} else if ( elem.currentStyle ) {=0A=
			var camelCase =3D name.replace(/\-(\w)/g, function(all, letter){=0A=
				return letter.toUpperCase();=0A=
			});=0A=
=0A=
			ret =3D elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];=0A=
=0A=
			// From the awesome hack by Dean Edwards=0A=
			// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291=0A=
=0A=
			// If we're not dealing with a regular pixel number=0A=
			// but a number that has a weird ending, we need to convert it to =
pixels=0A=
			if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {=0A=
				// Remember the original values=0A=
				var left =3D style.left, rsLeft =3D elem.runtimeStyle.left;=0A=
=0A=
				// Put in the new values to get a computed value out=0A=
				elem.runtimeStyle.left =3D elem.currentStyle.left;=0A=
				style.left =3D ret || 0;=0A=
				ret =3D style.pixelLeft + "px";=0A=
=0A=
				// Revert the changed values=0A=
				style.left =3D left;=0A=
				elem.runtimeStyle.left =3D rsLeft;=0A=
			}=0A=
		}=0A=
=0A=
		return ret;=0A=
	},=0A=
=0A=
	clean: function( elems, context ) {=0A=
		var ret =3D [];=0A=
		context =3D context || document;=0A=
		// !context.createElement fails in IE with an error but returns typeof =
'object'=0A=
		if (typeof context.createElement =3D=3D 'undefined')=0A=
			context =3D context.ownerDocument || context[0] && =
context[0].ownerDocument || document;=0A=
=0A=
		jQuery.each(elems, function(i, elem){=0A=
			if ( !elem )=0A=
				return;=0A=
=0A=
			if ( elem.constructor =3D=3D Number )=0A=
				elem +=3D '';=0A=
=0A=
			// Convert html string into DOM nodes=0A=
			if ( typeof elem =3D=3D "string" ) {=0A=
				// Fix "XHTML"-style tags in all browsers=0A=
				elem =3D elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, =
tag){=0A=
					return =
tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?=0A=
						all :=0A=
						front + "></" + tag + ">";=0A=
				});=0A=
=0A=
				// Trim whitespace, otherwise indexOf won't work as expected=0A=
				var tags =3D jQuery.trim( elem ).toLowerCase(), div =3D =
context.createElement("div");=0A=
=0A=
				var wrap =3D=0A=
					// option or optgroup=0A=
					!tags.indexOf("<opt") &&=0A=
					[ 1, "<select multiple=3D'multiple'>", "</select>" ] ||=0A=
=0A=
					!tags.indexOf("<leg") &&=0A=
					[ 1, "<fieldset>", "</fieldset>" ] ||=0A=
=0A=
					tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&=0A=
					[ 1, "<table>", "</table>" ] ||=0A=
=0A=
					!tags.indexOf("<tr") &&=0A=
					[ 2, "<table><tbody>", "</tbody></table>" ] ||=0A=
=0A=
				 	// <thead> matched above=0A=
					(!tags.indexOf("<td") || !tags.indexOf("<th")) &&=0A=
					[ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||=0A=
=0A=
					!tags.indexOf("<col") &&=0A=
					[ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||=0A=
=0A=
					// IE can't serialize <link> and <script> tags normally=0A=
					jQuery.browser.msie &&=0A=
					[ 1, "div<div>", "</div>" ] ||=0A=
=0A=
					[ 0, "", "" ];=0A=
=0A=
				// Go to html and back, then peel off extra wrappers=0A=
				div.innerHTML =3D wrap[1] + elem + wrap[2];=0A=
=0A=
				// Move to the right depth=0A=
				while ( wrap[0]-- )=0A=
					div =3D div.lastChild;=0A=
=0A=
				// Remove IE's autoinserted <tbody> from table fragments=0A=
				if ( jQuery.browser.msie ) {=0A=
=0A=
					// String was a <table>, *may* have spurious <tbody>=0A=
					var tbody =3D !tags.indexOf("<table") && tags.indexOf("<tbody") < 0 =
?=0A=
						div.firstChild && div.firstChild.childNodes :=0A=
=0A=
						// String was a bare <thead> or <tfoot>=0A=
						wrap[1] =3D=3D "<table>" && tags.indexOf("<tbody") < 0 ?=0A=
							div.childNodes :=0A=
							[];=0A=
=0A=
					for ( var j =3D tbody.length - 1; j >=3D 0 ; --j )=0A=
						if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j =
].childNodes.length )=0A=
							tbody[ j ].parentNode.removeChild( tbody[ j ] );=0A=
=0A=
					// IE completely kills leading whitespace when innerHTML is used=0A=
					if ( /^\s/.test( elem ) )=0A=
						div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), =
div.firstChild );=0A=
=0A=
				}=0A=
=0A=
				elem =3D jQuery.makeArray( div.childNodes );=0A=
			}=0A=
=0A=
			if ( elem.length =3D=3D=3D 0 && (!jQuery.nodeName( elem, "form" ) && =
!jQuery.nodeName( elem, "select" )) )=0A=
				return;=0A=
=0A=
			if ( elem[0] =3D=3D undefined || jQuery.nodeName( elem, "form" ) || =
elem.options )=0A=
				ret.push( elem );=0A=
=0A=
			else=0A=
				ret =3D jQuery.merge( ret, elem );=0A=
=0A=
		});=0A=
=0A=
		return ret;=0A=
	},=0A=
=0A=
	attr: function( elem, name, value ) {=0A=
		// don't set attributes on text and comment nodes=0A=
		if (!elem || elem.nodeType =3D=3D 3 || elem.nodeType =3D=3D 8)=0A=
			return undefined;=0A=
=0A=
		var notxml =3D !jQuery.isXMLDoc( elem ),=0A=
			// Whether we are setting (or getting)=0A=
			set =3D value !=3D=3D undefined,=0A=
			msie =3D jQuery.browser.msie;=0A=
=0A=
		// Try to normalize/fix the name=0A=
		name =3D notxml && jQuery.props[ name ] || name;=0A=
=0A=
		// Only do all the following if this is a node (faster for style)=0A=
		// IE elem.getAttribute passes even for style=0A=
		if ( elem.tagName ) {=0A=
=0A=
			// These attributes require special treatment=0A=
			var special =3D /href|src|style/.test( name );=0A=
=0A=
			// Safari mis-reports the default selected property of a hidden option=0A=
			// Accessing the parent's selectedIndex property fixes it=0A=
			if ( name =3D=3D "selected" && jQuery.browser.safari )=0A=
				elem.parentNode.selectedIndex;=0A=
=0A=
			// If applicable, access the attribute via the DOM 0 way=0A=
			if ( name in elem && notxml && !special ) {=0A=
				if ( set ){=0A=
					// We can't allow the type property to be changed (since it causes =
problems in IE)=0A=
					if ( name =3D=3D "type" && jQuery.nodeName( elem, "input" ) && =
elem.parentNode )=0A=
						throw "type property can't be changed";=0A=
=0A=
					elem[ name ] =3D value;=0A=
				}=0A=
=0A=
				// browsers index elements by id/name on forms, give priority to =
attributes.=0A=
				if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )=0A=
					return elem.getAttributeNode( name ).nodeValue;=0A=
=0A=
				return elem[ name ];=0A=
			}=0A=
=0A=
			if ( msie && notxml &&  name =3D=3D "style" )=0A=
				return jQuery.attr( elem.style, "cssText", value );=0A=
=0A=
			if ( set )=0A=
				// convert the value to a string (all browsers do this but IE) see =
#1070=0A=
				elem.setAttribute( name, "" + value );=0A=
=0A=
			var attr =3D msie && notxml && special=0A=
					// Some attributes require a special call on IE=0A=
					? elem.getAttribute( name, 2 )=0A=
					: elem.getAttribute( name );=0A=
=0A=
			// Non-existent attributes return null, we normalize to undefined=0A=
			return attr =3D=3D=3D null ? undefined : attr;=0A=
		}=0A=
=0A=
		// elem is actually elem.style ... set the style=0A=
=0A=
		// IE uses filters for opacity=0A=
		if ( msie && name =3D=3D "opacity" ) {=0A=
			if ( set ) {=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=
					(parseInt( value ) + '' =3D=3D "NaN" ? "" : "alpha(opacity=3D" + =
value * 100 + ")");=0A=
			}=0A=
=0A=
			return elem.filter && elem.filter.indexOf("opacity=3D") >=3D 0 ?=0A=
				(parseFloat( elem.filter.match(/opacity=3D([^)]*)/)[1] ) / 100) + '':=0A=
				"";=0A=
		}=0A=
=0A=
		name =3D name.replace(/-([a-z])/ig, function(all, letter){=0A=
			return letter.toUpperCase();=0A=
		});=0A=
=0A=
		if ( set )=0A=
			elem[ name ] =3D value;=0A=
=0A=
		return elem[ name ];=0A=
	},=0A=
=0A=
	trim: function( text ) {=0A=
		return (text || "").replace( /^\s+|\s+$/g, "" );=0A=
	},=0A=
=0A=
	makeArray: function( array ) {=0A=
		var ret =3D [];=0A=
=0A=
		if( array !=3D null ){=0A=
			var i =3D array.length;=0A=
			//the window, strings and functions also have 'length'=0A=
			if( i =3D=3D null || array.split || array.setInterval || array.call )=0A=
				ret[0] =3D array;=0A=
			else=0A=
				while( i )=0A=
					ret[--i] =3D array[i];=0A=
		}=0A=
=0A=
		return ret;=0A=
	},=0A=
=0A=
	inArray: function( elem, array ) {=0A=
		for ( var i =3D 0, length =3D array.length; i < length; i++ )=0A=
		// Use =3D=3D=3D because on IE, window =3D=3D document=0A=
			if ( array[ i ] =3D=3D=3D elem )=0A=
				return i;=0A=
=0A=
		return -1;=0A=
	},=0A=
=0A=
	merge: function( first, second ) {=0A=
		// We have to loop this way because IE & Opera overwrite the length=0A=
		// expando of getElementsByTagName=0A=
		var i =3D 0, elem, pos =3D first.length;=0A=
		// Also, we need to make sure that the correct elements are being =
returned=0A=
		// (IE returns comment nodes in a '*' query)=0A=
		if ( jQuery.browser.msie ) {=0A=
			while ( elem =3D second[ i++ ] )=0A=
				if ( elem.nodeType !=3D 8 )=0A=
					first[ pos++ ] =3D elem;=0A=
=0A=
		} else=0A=
			while ( elem =3D second[ i++ ] )=0A=
				first[ pos++ ] =3D elem;=0A=
=0A=
		return first;=0A=
	},=0A=
=0A=
	unique: function( array ) {=0A=
		var ret =3D [], done =3D {};=0A=
=0A=
		try {=0A=
=0A=
			for ( var i =3D 0, length =3D array.length; i < length; i++ ) {=0A=
				var id =3D jQuery.data( array[ i ] );=0A=
=0A=
				if ( !done[ id ] ) {=0A=
					done[ id ] =3D true;=0A=
					ret.push( array[ i ] );=0A=
				}=0A=
			}=0A=
=0A=
		} catch( e ) {=0A=
			ret =3D array;=0A=
		}=0A=
=0A=
		return ret;=0A=
	},=0A=
=0A=
	grep: function( elems, callback, inv ) {=0A=
		var ret =3D [];=0A=
=0A=
		// Go through the array, only saving the items=0A=
		// that pass the validator function=0A=
		for ( var i =3D 0, length =3D elems.length; i < length; i++ )=0A=
			if ( !inv !=3D !callback( elems[ i ], i ) )=0A=
				ret.push( elems[ i ] );=0A=
=0A=
		return ret;=0A=
	},=0A=
=0A=
	map: function( elems, callback ) {=0A=
		var ret =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, length =3D elems.length; i < length; i++ ) {=0A=
			var value =3D callback( elems[ i ], i );=0A=
=0A=
			if ( value !=3D null )=0A=
				ret[ ret.length ] =3D value;=0A=
		}=0A=
=0A=
		return ret.concat.apply( [], ret );=0A=
	}=0A=
});=0A=
=0A=
var userAgent =3D navigator.userAgent.toLowerCase();=0A=
=0A=
// Figure out what browser is being used=0A=
jQuery.browser =3D {=0A=
	version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || =
[])[1],=0A=
	safari: /webkit/.test( userAgent ),=0A=
	opera: /opera/.test( userAgent ),=0A=
	msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),=0A=
	mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( =
userAgent )=0A=
};=0A=
=0A=
var styleFloat =3D jQuery.browser.msie ?=0A=
	"styleFloat" :=0A=
	"cssFloat";=0A=
=0A=
jQuery.extend({=0A=
	// Check to see if the W3C box model is being used=0A=
	boxModel: !jQuery.browser.msie || document.compatMode =3D=3D =
"CSS1Compat",=0A=
=0A=
	props: {=0A=
		"for": "htmlFor",=0A=
		"class": "className",=0A=
		"float": styleFloat,=0A=
		cssFloat: styleFloat,=0A=
		styleFloat: styleFloat,=0A=
		readonly: "readOnly",=0A=
		maxlength: "maxLength",=0A=
		cellspacing: "cellSpacing"=0A=
	}=0A=
});=0A=
=0A=
jQuery.each({=0A=
	parent: function(elem){return elem.parentNode;},=0A=
	parents: function(elem){return jQuery.dir(elem,"parentNode");},=0A=
	next: function(elem){return jQuery.nth(elem,2,"nextSibling");},=0A=
	prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},=0A=
	nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},=0A=
	prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},=0A=
	siblings: function(elem){return =
jQuery.sibling(elem.parentNode.firstChild,elem);},=0A=
	children: function(elem){return jQuery.sibling(elem.firstChild);},=0A=
	contents: function(elem){return =
jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.d=
ocument:jQuery.makeArray(elem.childNodes);}=0A=
}, function(name, fn){=0A=
	jQuery.fn[ name ] =3D function( selector ) {=0A=
		var ret =3D jQuery.map( this, fn );=0A=
=0A=
		if ( selector && typeof selector =3D=3D "string" )=0A=
			ret =3D jQuery.multiFilter( selector, ret );=0A=
=0A=
		return this.pushStack( jQuery.unique( ret ) );=0A=
	};=0A=
});=0A=
=0A=
jQuery.each({=0A=
	appendTo: "append",=0A=
	prependTo: "prepend",=0A=
	insertBefore: "before",=0A=
	insertAfter: "after",=0A=
	replaceAll: "replaceWith"=0A=
}, function(name, original){=0A=
	jQuery.fn[ name ] =3D function() {=0A=
		var args =3D arguments;=0A=
=0A=
		return this.each(function(){=0A=
			for ( var i =3D 0, length =3D args.length; i < length; i++ )=0A=
				jQuery( args[ i ] )[ original ]( this );=0A=
		});=0A=
	};=0A=
});=0A=
=0A=
jQuery.each({=0A=
	removeAttr: function( name ) {=0A=
		jQuery.attr( this, name, "" );=0A=
		if (this.nodeType =3D=3D 1)=0A=
			this.removeAttribute( name );=0A=
	},=0A=
=0A=
	addClass: function( classNames ) {=0A=
		jQuery.className.add( this, classNames );=0A=
	},=0A=
=0A=
	removeClass: function( classNames ) {=0A=
		jQuery.className.remove( this, classNames );=0A=
	},=0A=
=0A=
	toggleClass: function( classNames ) {=0A=
		jQuery.className[ jQuery.className.has( this, classNames ) ? "remove" =
: "add" ]( this, classNames );=0A=
	},=0A=
=0A=
	remove: function( selector ) {=0A=
		if ( !selector || jQuery.filter( selector, [ this ] ).r.length ) {=0A=
			// Prevent memory leaks=0A=
			jQuery( "*", this ).add(this).each(function(){=0A=
				jQuery.event.remove(this);=0A=
				jQuery.removeData(this);=0A=
			});=0A=
			if (this.parentNode)=0A=
				this.parentNode.removeChild( this );=0A=
		}=0A=
	},=0A=
=0A=
	empty: function() {=0A=
		// Remove element nodes and prevent memory leaks=0A=
		jQuery( ">*", this ).remove();=0A=
=0A=
		// Remove any remaining nodes=0A=
		while ( this.firstChild )=0A=
			this.removeChild( this.firstChild );=0A=
	}=0A=
}, function(name, fn){=0A=
	jQuery.fn[ name ] =3D function(){=0A=
		return this.each( fn, arguments );=0A=
	};=0A=
});=0A=
=0A=
jQuery.each([ "Height", "Width" ], function(i, name){=0A=
	var type =3D name.toLowerCase();=0A=
=0A=
	jQuery.fn[ type ] =3D function( size ) {=0A=
		// Get window width or height=0A=
		return this[0] =3D=3D window ?=0A=
			// Opera reports document.body.client[Width/Height] properly in both =
quirks and standards=0A=
			jQuery.browser.opera && document.body[ "client" + name ] ||=0A=
=0A=
			// Safari reports inner[Width/Height] just fine (Mozilla and Opera =
include scroll bar widths)=0A=
			jQuery.browser.safari && window[ "inner" + name ] ||=0A=
=0A=
			// Everyone else use document.documentElement or document.body =
depending on Quirks vs Standards mode=0A=
			document.compatMode =3D=3D "CSS1Compat" && document.documentElement[ =
"client" + name ] || document.body[ "client" + name ] :=0A=
=0A=
			// Get document width or height=0A=
			this[0] =3D=3D document ?=0A=
				// Either scroll[Width/Height] or offset[Width/Height], whichever is =
greater=0A=
				Math.max(=0A=
					Math.max(document.body["scroll" + name], =
document.documentElement["scroll" + name]),=0A=
					Math.max(document.body["offset" + name], =
document.documentElement["offset" + name])=0A=
				) :=0A=
=0A=
				// Get or set width or height on the element=0A=
				size =3D=3D undefined ?=0A=
					// Get width or height on the element=0A=
					(this.length ? jQuery.css( this[0], type ) : null) :=0A=
=0A=
					// Set the width or height on the element (default to pixels if =
value is unitless)=0A=
					this.css( type, size.constructor =3D=3D String ? size : size + "px" =
);=0A=
	};=0A=
});=0A=
=0A=
// Helper function used by the dimensions and offset modules=0A=
function num(elem, prop) {=0A=
	return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || =
0;=0A=
}var chars =3D jQuery.browser.safari && parseInt(jQuery.browser.version) =
< 417 ?=0A=
		"(?:[\\w*_-]|\\\\.)" :=0A=
		"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",=0A=
	quickChild =3D new RegExp("^>\\s*(" + chars + "+)"),=0A=
	quickID =3D new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),=0A=
	quickClass =3D new RegExp("^([#.]?)(" + chars + "*)");=0A=
=0A=
jQuery.extend({=0A=
	expr: {=0A=
		"": function(a,i,m){return m[2]=3D=3D"*"||jQuery.nodeName(a,m[2]);},=0A=
		"#": function(a,i,m){return a.getAttribute("id")=3D=3Dm[2];},=0A=
		":": {=0A=
			// Position Checks=0A=
			lt: function(a,i,m){return i<m[3]-0;},=0A=
			gt: function(a,i,m){return i>m[3]-0;},=0A=
			nth: function(a,i,m){return m[3]-0=3D=3Di;},=0A=
			eq: function(a,i,m){return m[3]-0=3D=3Di;},=0A=
			first: function(a,i){return i=3D=3D0;},=0A=
			last: function(a,i,m,r){return i=3D=3Dr.length-1;},=0A=
			even: function(a,i){return i%2=3D=3D0;},=0A=
			odd: function(a,i){return i%2;},=0A=
=0A=
			// Child Checks=0A=
			"first-child": function(a){return =
a.parentNode.getElementsByTagName("*")[0]=3D=3Da;},=0A=
			"last-child": function(a){return =
jQuery.nth(a.parentNode.lastChild,1,"previousSibling")=3D=3Da;},=0A=
			"only-child": function(a){return =
!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},=0A=
=0A=
			// Parent Checks=0A=
			parent: function(a){return a.firstChild;},=0A=
			empty: function(a){return !a.firstChild;},=0A=
=0A=
			// Text Check=0A=
			contains: function(a,i,m){return =
(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=3D0;},=0A=
=0A=
			// Visibility=0A=
			visible: function(a){return =
"hidden"!=3Da.type&&jQuery.css(a,"display")!=3D"none"&&jQuery.css(a,"visi=
bility")!=3D"hidden";},=0A=
			hidden: function(a){return =
"hidden"=3D=3Da.type||jQuery.css(a,"display")=3D=3D"none"||jQuery.css(a,"=
visibility")=3D=3D"hidden";},=0A=
=0A=
			// Form attributes=0A=
			enabled: function(a){return !a.disabled;},=0A=
			disabled: function(a){return a.disabled;},=0A=
			checked: function(a){return a.checked;},=0A=
			selected: function(a){return a.selected||jQuery.attr(a,"selected");},=0A=
=0A=
			// Form elements=0A=
			text: function(a){return "text"=3D=3Da.type;},=0A=
			radio: function(a){return "radio"=3D=3Da.type;},=0A=
			checkbox: function(a){return "checkbox"=3D=3Da.type;},=0A=
			file: function(a){return "file"=3D=3Da.type;},=0A=
			password: function(a){return "password"=3D=3Da.type;},=0A=
			submit: function(a){return "submit"=3D=3Da.type;},=0A=
			image: function(a){return "image"=3D=3Da.type;},=0A=
			reset: function(a){return "reset"=3D=3Da.type;},=0A=
			button: function(a){return =
"button"=3D=3Da.type||jQuery.nodeName(a,"button");},=0A=
			input: function(a){return =
/input|select|textarea|button/i.test(a.nodeName);},=0A=
=0A=
			// :has()=0A=
			has: function(a,i,m){return jQuery.find(m[3],a).length;},=0A=
=0A=
			// :header=0A=
			header: function(a){return /h\d/i.test(a.nodeName);},=0A=
=0A=
			// :animated=0A=
			animated: function(a){return =
jQuery.grep(jQuery.timers,function(fn){return a=3D=3Dfn.elem;}).length;}=0A=
		}=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: :contains('foo')=0A=
		/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,=0A=
=0A=
		// Match: :even, :last-child, #id, .class=0A=
		new RegExp("^([:.#]*)(" + chars + "+)")=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=
=0A=
	find: function( t, context ) {=0A=
		// Quickly handle non-string expressions=0A=
		if ( typeof t !=3D "string" )=0A=
			return [ t ];=0A=
=0A=
		// check to make sure context is a DOM element or a document=0A=
		if ( context && context.nodeType !=3D 1 && context.nodeType !=3D 9)=0A=
			return [ ];=0A=
=0A=
		// Set the correct context (if none is provided)=0A=
		context =3D context || document;=0A=
=0A=
		// Initialize the search=0A=
		var ret =3D [context], done =3D [], last, nodeName;=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);=0A=
=0A=
			var foundToken =3D false,=0A=
=0A=
			// An attempt at speeding up child selectors that=0A=
			// point to a specific element tag=0A=
				re =3D quickChild,=0A=
=0A=
				m =3D re.exec(t);=0A=
=0A=
			if ( m ) {=0A=
				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) )=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*(\w*)/i;=0A=
=0A=
				if ( (m =3D re.exec(t)) !=3D null ) {=0A=
					r =3D [];=0A=
=0A=
					var merge =3D {};=0A=
					nodeName =3D m[2].toUpperCase();=0A=
					m =3D m[1];=0A=
=0A=
					for ( var j =3D 0, rl =3D ret.length; j < rl; j++ ) {=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=
								var id =3D jQuery.data(n);=0A=
=0A=
								if ( m =3D=3D "~" && merge[id] ) break;=0A=
=0A=
								if (!nodeName || n.nodeName.toUpperCase() =3D=3D nodeName ) {=0A=
									if ( m =3D=3D "~" ) merge[id] =3D true;=0A=
									r.push( n );=0A=
								}=0A=
=0A=
								if ( m =3D=3D "+" ) break;=0A=
							}=0A=
					}=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=
					// Optimize for the case nodeName#idName=0A=
					var re2 =3D quickID;=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 quickClass;=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 && =
!jQuery.isXMLDoc(elem) ) {=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=3D "#" && m[3] ? m[3] : m[1] !=3D "" || m[0] =
=3D=3D "" ? "*" : m[2];=0A=
=0A=
							// Handle IE7 being really dumb about <object>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=
				// optimize if only one selector found (most common case)=0A=
				r =3D isSimple.test( m[3] ) ?=0A=
					jQuery.filter(m[3], r, true).r :=0A=
					jQuery( r ).not( m[3] );=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|selected/.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 merge =3D {}, tmp =3D [],=0A=
					// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', =
'-n+6'=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]) && "0n+" + m[3] || m[3]),=0A=
					// calculate the numbers (first)n+(last) including if they are =
negative=0A=
					first =3D (test[1] + (test[2] || 1)) - 0, last =3D test[3] - 0;=0A=
=0A=
				// loop through all the elements left in the jQuery object=0A=
				for ( var i =3D 0, rl =3D r.length; i < rl; i++ ) {=0A=
					var node =3D r[i], parentNode =3D node.parentNode, id =3D =
jQuery.data(parentNode);=0A=
=0A=
					if ( !merge[id] ) {=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=
						merge[id] =3D true;=0A=
					}=0A=
=0A=
					var add =3D false;=0A=
=0A=
					if ( first =3D=3D 0 ) {=0A=
						if ( node.nodeIndex =3D=3D last )=0A=
							add =3D true;=0A=
					} else if ( (node.nodeIndex - last) % first =3D=3D 0 && =
(node.nodeIndex - last) / first >=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 fn =3D jQuery.expr[ m[1] ];=0A=
				if ( typeof fn =3D=3D "object" )=0A=
					fn =3D fn[ m[2] ];=0A=
=0A=
				if ( typeof fn =3D=3D "string" )=0A=
					fn =3D eval("false||function(a,i){return " + fn + ";}");=0A=
=0A=
				// Execute it against the current filter=0A=
				r =3D jQuery.grep( r, function(elem, i){=0A=
					return fn(elem, i, m, r);=0A=
				}, 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=
=0A=
	dir: function( elem, dir ){=0A=
		var matched =3D [],=0A=
			cur =3D elem[dir];=0A=
		while ( cur && cur !=3D document ) {=0A=
			if ( cur.nodeType =3D=3D 1 )=0A=
				matched.push( cur );=0A=
			cur =3D cur[dir];=0A=
		}=0A=
		return matched;=0A=
	},=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=
=0A=
	sibling: function( n, elem ) {=0A=
		var r =3D [];=0A=
=0A=
		for ( ; n; n =3D n.nextSibling ) {=0A=
			if ( n.nodeType =3D=3D 1 && 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(elem, types, handler, data) {=0A=
		if ( elem.nodeType =3D=3D 3 || elem.nodeType =3D=3D 8 )=0A=
			return;=0A=
=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 && elem.setInterval )=0A=
			elem =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 this.proxy( fn, 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=
=0A=
		// Init the element's event structure=0A=
		var events =3D jQuery.data(elem, "events") || jQuery.data(elem, =
"events", {}),=0A=
			handle =3D jQuery.data(elem, "handle") || jQuery.data(elem, "handle", =
function(){=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 "undefined" && !jQuery.event.triggered )=0A=
					return jQuery.event.handle.apply(arguments.callee.elem, arguments);=0A=
			});=0A=
		// Add elem as a property of the handle function=0A=
		// This is to prevent a memory leak with non-native=0A=
		// event in IE.=0A=
		handle.elem =3D elem;=0A=
=0A=
		// Handle multiple events separated by a space=0A=
		// jQuery(...).bind("mouseover mouseout", fn);=0A=
		jQuery.each(types.split(/\s+/), function(index, type) {=0A=
			// Namespaced event handlers=0A=
			var parts =3D type.split(".");=0A=
			type =3D parts[0];=0A=
			handler.type =3D parts[1];=0A=
=0A=
			// Get the current list of functions bound to this event=0A=
			var handlers =3D events[type];=0A=
=0A=
			// Init the event handler queue=0A=
			if (!handlers) {=0A=
				handlers =3D events[type] =3D {};=0A=
=0A=
				// Check for a special event handler=0A=
				// Only use addEventListener/attachEvent if the special=0A=
				// events handler returns false=0A=
				if ( !jQuery.event.special[type] || =
jQuery.event.special[type].setup.call(elem) =3D=3D=3D false ) {=0A=
					// Bind the global event handler to the element=0A=
					if (elem.addEventListener)=0A=
						elem.addEventListener(type, handle, false);=0A=
					else if (elem.attachEvent)=0A=
						elem.attachEvent("on" + type, handle);=0A=
				}=0A=
			}=0A=
=0A=
			// Add the function to the element's handler list=0A=
			handlers[handler.guid] =3D handler;=0A=
=0A=
			// Keep track of which events have been used, for global triggering=0A=
			jQuery.event.global[type] =3D true;=0A=
		});=0A=
=0A=
		// Nullify elem to prevent memory leaks in IE=0A=
		elem =3D null;=0A=
	},=0A=
=0A=
	guid: 1,=0A=
	global: {},=0A=
=0A=
	// Detach an event or set of events from an element=0A=
	remove: function(elem, types, handler) {=0A=
		// don't do events on text and comment nodes=0A=
		if ( elem.nodeType =3D=3D 3 || elem.nodeType =3D=3D 8 )=0A=
			return;=0A=
=0A=
		var events =3D jQuery.data(elem, "events"), ret, index;=0A=
=0A=
		if ( events ) {=0A=
			// Unbind all events for the element=0A=
			if ( types =3D=3D undefined || (typeof types =3D=3D "string" && =
types.charAt(0) =3D=3D ".") )=0A=
				for ( var type in events )=0A=
					this.remove( elem, type + (types || "") );=0A=
			else {=0A=
				// types is actually an event object here=0A=
				if ( types.type ) {=0A=
					handler =3D types.handler;=0A=
					types =3D types.type;=0A=
				}=0A=
=0A=
				// Handle multiple events seperated by a space=0A=
				// jQuery(...).unbind("mouseover mouseout", fn);=0A=
				jQuery.each(types.split(/\s+/), function(index, type){=0A=
					// Namespaced event handlers=0A=
					var parts =3D type.split(".");=0A=
					type =3D parts[0];=0A=
=0A=
					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 events[type] )=0A=
								// Handle the removal of namespaced events=0A=
								if ( !parts[1] || events[type][handler].type =3D=3D parts[1] )=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 ( !jQuery.event.special[type] || =
jQuery.event.special[type].teardown.call(elem) =3D=3D=3D false ) {=0A=
								if (elem.removeEventListener)=0A=
									elem.removeEventListener(type, jQuery.data(elem, "handle"), =
false);=0A=
								else if (elem.detachEvent)=0A=
									elem.detachEvent("on" + type, jQuery.data(elem, "handle"));=0A=
							}=0A=
							ret =3D null;=0A=
							delete events[type];=0A=
						}=0A=
					}=0A=
				});=0A=
			}=0A=
=0A=
			// Remove the expando if it's no longer used=0A=
			for ( ret in events ) break;=0A=
			if ( !ret ) {=0A=
				var handle =3D jQuery.data( elem, "handle" );=0A=
				if ( handle ) handle.elem =3D null;=0A=
				jQuery.removeData( elem, "events" );=0A=
				jQuery.removeData( elem, "handle" );=0A=
			}=0A=
		}=0A=
	},=0A=
=0A=
	trigger: function(type, data, elem, donative, extra) {=0A=
		// Clone the incoming data, if any=0A=
		data =3D jQuery.makeArray(data);=0A=
=0A=
		if ( type.indexOf("!") >=3D 0 ) {=0A=
			type =3D type.slice(0, -1);=0A=
			var exclusive =3D true;=0A=
		}=0A=
=0A=
		// Handle a global trigger=0A=
		if ( !elem ) {=0A=
			// Only trigger if we've ever bound an event for it=0A=
			if ( this.global[type] )=0A=
				jQuery("*").add([window, document]).trigger(type, data);=0A=
=0A=
		// Handle triggering a single element=0A=
		} else {=0A=
			// don't do events on text and comment nodes=0A=
			if ( elem.nodeType =3D=3D 3 || elem.nodeType =3D=3D 8 )=0A=
				return undefined;=0A=
=0A=
			var val, ret, fn =3D jQuery.isFunction( elem[ type ] || null ),=0A=
				// Check to see if we need to provide a fake event, or not=0A=
				event =3D !data[0] || !data[0].preventDefault;=0A=
=0A=
			// Pass along a fake event=0A=
			if ( event ) {=0A=
				data.unshift({=0A=
					type: type,=0A=
					target: elem,=0A=
					preventDefault: function(){},=0A=
					stopPropagation: function(){},=0A=
					timeStamp: now()=0A=
				});=0A=
				data[0][expando] =3D true; // no need to fix fake event=0A=
			}=0A=
=0A=
			// Enforce the right trigger type=0A=
			data[0].type =3D type;=0A=
			if ( exclusive )=0A=
				data[0].exclusive =3D true;=0A=
=0A=
			// Trigger the event, it is assumed that "handle" is a function=0A=
			var handle =3D jQuery.data(elem, "handle");=0A=
			if ( handle )=0A=
				val =3D handle.apply( elem, data );=0A=
=0A=
			// Handle triggering native .onfoo handlers (and on links since we =
don't call .click() for links)=0A=
			if ( (!fn || (jQuery.nodeName(elem, 'a') && type =3D=3D "click")) && =
elem["on"+type] && elem["on"+type].apply( elem, data ) =3D=3D=3D false )=0A=
				val =3D false;=0A=
=0A=
			// Extra functions don't get the custom event object=0A=
			if ( event )=0A=
				data.shift();=0A=
=0A=
			// Handle triggering of extra function=0A=
			if ( extra && jQuery.isFunction( extra ) ) {=0A=
				// call the extra function and tack the current return value on the =
end for possible inspection=0A=
				ret =3D extra.apply( elem, val =3D=3D null ? data : data.concat( val =
) );=0A=
				// if anything is returned, give it precedence and have it overwrite =
the previous value=0A=
				if (ret !=3D=3D undefined)=0A=
					val =3D ret;=0A=
			}=0A=
=0A=
			// Trigger the native events (except for clicks on links)=0A=
			if ( fn && donative !=3D=3D false && val !=3D=3D false && =
!(jQuery.nodeName(elem, 'a') && type =3D=3D "click") ) {=0A=
				this.triggered =3D true;=0A=
				try {=0A=
					elem[ type ]();=0A=
				// prevent IE from throwing an error for some hidden elements=0A=
				} catch (e) {}=0A=
			}=0A=
=0A=
			this.triggered =3D false;=0A=
		}=0A=
=0A=
		return val;=0A=
	},=0A=
=0A=
	handle: function(event) {=0A=
		// returned undefined or false=0A=
		var val, ret, namespace, all, handlers;=0A=
=0A=
		event =3D arguments[0] =3D jQuery.event.fix( event || window.event );=0A=
=0A=
		// Namespaced event handlers=0A=
		namespace =3D event.type.split(".");=0A=
		event.type =3D namespace[0];=0A=
		namespace =3D namespace[1];=0A=
		// Cache this now, all =3D true means, any handler=0A=
		all =3D !namespace && !event.exclusive;=0A=
=0A=
		handlers =3D ( jQuery.data(this, "events") || {} )[event.type];=0A=
=0A=
		for ( var j in handlers ) {=0A=
			var handler =3D handlers[j];=0A=
=0A=
			// Filter the functions by class=0A=
			if ( all || handler.type =3D=3D namespace ) {=0A=
				// Pass in a reference to the handler function itself=0A=
				// So that we can later remove it=0A=
				event.handler =3D handler;=0A=
				event.data =3D handler.data;=0A=
=0A=
				ret =3D handler.apply( this, arguments );=0A=
=0A=
				if ( val !=3D=3D false )=0A=
					val =3D ret;=0A=
=0A=
				if ( ret =3D=3D=3D false ) {=0A=
					event.preventDefault();=0A=
					event.stopPropagation();=0A=
				}=0A=
			}=0A=
		}=0A=
=0A=
		return val;=0A=
	},=0A=
=0A=
	fix: function(event) {=0A=
		if ( event[expando] =3D=3D true )=0A=
			return event;=0A=
=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 { originalEvent: originalEvent };=0A=
		var props =3D "altKey attrChange attrName bubbles button cancelable =
charCode clientX clientY ctrlKey currentTarget data detail eventPhase =
fromElement handler keyCode metaKey newValue originalTarget pageX pageY =
prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement =
target timeStamp toElement type view wheelDelta which".split(" ");=0A=
		for ( var i=3Dprops.length; i; i-- )=0A=
			event[ props[i] ] =3D originalEvent[ props[i] ];=0A=
=0A=
		// Mark it as fixed=0A=
		event[expando] =3D true;=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=
				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=
				originalEvent.stopPropagation();=0A=
			// otherwise set the cancelBubble property of the original event to =
true (IE)=0A=
			originalEvent.cancelBubble =3D true;=0A=
		};=0A=
=0A=
		// Fix timeStamp=0A=
		event.timeStamp =3D event.timeStamp || now();=0A=
=0A=
		// Fix target property, if necessary=0A=
		if ( !event.target )=0A=
			event.target =3D event.srcElement || document; // Fixes #1925 where =
srcElement might not be defined either=0A=
=0A=
		// check if target is a textnode (safari)=0A=
		if ( event.target.nodeType =3D=3D 3 )=0A=
			event.target =3D event.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 doc =3D document.documentElement, body =3D document.body;=0A=
			event.pageX =3D event.clientX + (doc && doc.scrollLeft || body && =
body.scrollLeft || 0) - (doc.clientLeft || 0);=0A=
			event.pageY =3D event.clientY + (doc && doc.scrollTop || body && =
body.scrollTop || 0) - (doc.clientTop || 0);=0A=
		}=0A=
=0A=
		// Add which for key events=0A=
		if ( !event.which && ((event.charCode || event.charCode =3D=3D=3D 0) ? =
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=
	proxy: function( fn, proxy ){=0A=
		// Set the guid of unique handler to the same of original handler, so =
it can be removed=0A=
		proxy.guid =3D fn.guid =3D fn.guid || proxy.guid || this.guid++;=0A=
		// So proxy can be declared as an argument=0A=
		return proxy;=0A=
	},=0A=
=0A=
	special: {=0A=
		ready: {=0A=
			setup: function() {=0A=
				// Make sure the ready event is setup=0A=
				bindReady();=0A=
				return;=0A=
			},=0A=
=0A=
			teardown: function() { return; }=0A=
		},=0A=
=0A=
		mouseenter: {=0A=
			setup: function() {=0A=
				if ( jQuery.browser.msie ) return false;=0A=
				jQuery(this).bind("mouseover", =
jQuery.event.special.mouseenter.handler);=0A=
				return true;=0A=
			},=0A=
=0A=
			teardown: function() {=0A=
				if ( jQuery.browser.msie ) return false;=0A=
				jQuery(this).unbind("mouseover", =
jQuery.event.special.mouseenter.handler);=0A=
				return true;=0A=
			},=0A=
=0A=
			handler: function(event) {=0A=
				// If we actually just moused on to a sub-element, ignore it=0A=
				if ( withinElement(event, this) ) return true;=0A=
				// Execute the right handlers by setting the event type to mouseenter=0A=
				event.type =3D "mouseenter";=0A=
				return jQuery.event.handle.apply(this, arguments);=0A=
			}=0A=
		},=0A=
=0A=
		mouseleave: {=0A=
			setup: function() {=0A=
				if ( jQuery.browser.msie ) return false;=0A=
				jQuery(this).bind("mouseout", =
jQuery.event.special.mouseleave.handler);=0A=
				return true;=0A=
			},=0A=
=0A=
			teardown: function() {=0A=
				if ( jQuery.browser.msie ) return false;=0A=
				jQuery(this).unbind("mouseout", =
jQuery.event.special.mouseleave.handler);=0A=
				return true;=0A=
			},=0A=
=0A=
			handler: function(event) {=0A=
				// If we actually just moused on to a sub-element, ignore it=0A=
				if ( withinElement(event, this) ) return true;=0A=
				// Execute the right handlers by setting the event type to mouseleave=0A=
				event.type =3D "mouseleave";=0A=
				return jQuery.event.handle.apply(this, arguments);=0A=
			}=0A=
		}=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=
=0A=
	one: function( type, data, fn ) {=0A=
		var one =3D jQuery.event.proxy( fn || data, function(event) {=0A=
			jQuery(this).unbind(event, one);=0A=
			return (fn || data).apply( this, arguments );=0A=
		});=0A=
		return this.each(function(){=0A=
			jQuery.event.add( this, type, one, fn && data);=0A=
		});=0A=
	},=0A=
=0A=
	unbind: function( type, fn ) {=0A=
		return this.each(function(){=0A=
			jQuery.event.remove( this, type, fn );=0A=
		});=0A=
	},=0A=
=0A=
	trigger: function( type, data, fn ) {=0A=
		return this.each(function(){=0A=
			jQuery.event.trigger( type, data, this, true, fn );=0A=
		});=0A=
	},=0A=
=0A=
	triggerHandler: function( type, data, fn ) {=0A=
		return this[0] && jQuery.event.trigger( type, data, this[0], false, fn =
);=0A=
	},=0A=
=0A=
	toggle: function( fn ) {=0A=
		// Save reference to arguments for access in closure=0A=
		var args =3D arguments, i =3D 1;=0A=
=0A=
		// link all the functions, so any of them can unbind this click handler=0A=
		while( i < args.length )=0A=
			jQuery.event.proxy( fn, args[i++] );=0A=
=0A=
		return this.click( jQuery.event.proxy( fn, function(event) {=0A=
			// Figure out which function to execute=0A=
			this.lastToggle =3D ( this.lastToggle || 0 ) % i;=0A=
=0A=
			// Make sure that clicks stop=0A=
			event.preventDefault();=0A=
=0A=
			// and execute the function=0A=
			return args[ this.lastToggle++ ].apply( this, arguments ) || false;=0A=
		}));=0A=
	},=0A=
=0A=
	hover: function(fnOver, fnOut) {=0A=
		return this.bind('mouseenter', fnOver).bind('mouseleave', fnOut);=0A=
	},=0A=
=0A=
	ready: function(fn) {=0A=
		// Attach the listeners=0A=
		bindReady();=0A=
=0A=
		// If the DOM is already ready=0A=
		if ( jQuery.isReady )=0A=
			// Execute the function immediately=0A=
			fn.call( 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 fn.call(this, jQuery); } );=0A=
=0A=
		return this;=0A=
	}=0A=
});=0A=
=0A=
jQuery.extend({=0A=
	isReady: false,=0A=
	readyList: [],=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.call( document );=0A=
				});=0A=
=0A=
				// Reset the list of functions=0A=
				jQuery.readyList =3D null;=0A=
			}=0A=
=0A=
			// Trigger any bound ready events=0A=
			jQuery(document).triggerHandler("ready");=0A=
		}=0A=
	}=0A=
});=0A=
=0A=
var readyBound =3D false;=0A=
=0A=
function bindReady(){=0A=
	if ( readyBound ) return;=0A=
	readyBound =3D true;=0A=
=0A=
	// Mozilla, Opera (see further below for it) and webkit nightlies =
currently support this event=0A=
	if ( document.addEventListener && !jQuery.browser.opera)=0A=
		// Use the handy event callback=0A=
		document.addEventListener( "DOMContentLoaded", jQuery.ready, false );=0A=
=0A=
	// If IE is used and is not in a frame=0A=
	// Continually check to see if the document is ready=0A=
	if ( jQuery.browser.msie && window =3D=3D top ) (function(){=0A=
		if (jQuery.isReady) return;=0A=
		try {=0A=
			// If IE is used, use the trick by Diego Perini=0A=
			// http://javascript.nwbox.com/IEContentLoaded/=0A=
			document.documentElement.doScroll("left");=0A=
		} catch( error ) {=0A=
			setTimeout( arguments.callee, 0 );=0A=
			return;=0A=
		}=0A=
		// and execute any waiting functions=0A=
		jQuery.ready();=0A=
	})();=0A=
=0A=
	if ( jQuery.browser.opera )=0A=
		document.addEventListener( "DOMContentLoaded", function () {=0A=
			if (jQuery.isReady) return;=0A=
			for (var i =3D 0; i < document.styleSheets.length; i++)=0A=
				if (document.styleSheets[i].disabled) {=0A=
					setTimeout( arguments.callee, 0 );=0A=
					return;=0A=
				}=0A=
			// and execute any waiting functions=0A=
			jQuery.ready();=0A=
		}, false);=0A=
=0A=
	if ( jQuery.browser.safari ) {=0A=
		var numStyles;=0A=
		(function(){=0A=
			if (jQuery.isReady) return;=0A=
			if ( document.readyState !=3D "loaded" && document.readyState !=3D =
"complete" ) {=0A=
				setTimeout( arguments.callee, 0 );=0A=
				return;=0A=
			}=0A=
			if ( numStyles =3D=3D=3D undefined )=0A=
				numStyles =3D jQuery("style, link[rel=3Dstylesheet]").length;=0A=
			if ( document.styleSheets.length !=3D numStyles ) {=0A=
				setTimeout( arguments.callee, 0 );=0A=
				return;=0A=
			}=0A=
			// and execute any waiting functions=0A=
			jQuery.ready();=0A=
		})();=0A=
	}=0A=
=0A=
	// A fallback to window.onload, that will always work=0A=
	jQuery.event.add( window, "load", jQuery.ready );=0A=
}=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, name){=0A=
=0A=
	// Handle event binding=0A=
	jQuery.fn[name] =3D function(fn){=0A=
		return fn ? this.bind(name, fn) : this.trigger(name);=0A=
	};=0A=
});=0A=
=0A=
// Checks if an event happened on an element within another element=0A=
// Used in jQuery.event.special.mouseenter and mouseleave handlers=0A=
var withinElement =3D function(event, elem) {=0A=
	// Check if mouse(over|out) are still within the same parent element=0A=
	var parent =3D event.relatedTarget;=0A=
	// Traverse up the tree=0A=
	while ( parent && parent !=3D elem ) try { parent =3D =
parent.parentNode; } catch(error) { parent =3D elem; }=0A=
	// Return true if we actually just moused on to a sub-element=0A=
	return parent =3D=3D elem;=0A=
};=0A=
=0A=
// Prevent memory leaks in IE=0A=
// And prevent errors on refresh with events like mouseover in other =
browsers=0A=
// Window isn't included so as not to unbind existing unload events=0A=
jQuery(window).bind("unload", function() {=0A=
	jQuery("*").add(document).unbind();=0A=
});=0A=
jQuery.fn.extend({=0A=
	// Keep a copy of the old load=0A=
	_load: jQuery.fn.load,=0A=
=0A=
	load: function( url, params, callback ) {=0A=
		if ( typeof url !=3D 'string' )=0A=
			return this._load( url );=0A=
=0A=
		var off =3D url.indexOf(" ");=0A=
		if ( off >=3D 0 ) {=0A=
			var selector =3D url.slice(off, url.length);=0A=
			url =3D url.slice(0, off);=0A=
		}=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=
			dataType: "html",=0A=
			data: params,=0A=
			complete: function(res, status){=0A=
				// If successful, inject the HTML into all the matched elements=0A=
				if ( status =3D=3D "success" || status =3D=3D "notmodified" )=0A=
					// See if a selector was specified=0A=
					self.html( selector ?=0A=
						// Create a dummy div to hold the results=0A=
						jQuery("<div/>")=0A=
							// inject the contents of the document in, removing the scripts=0A=
							// to avoid any 'Permission Denied' errors in IE=0A=
							.append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))=0A=
=0A=
							// Locate the specified elements=0A=
							.find(selector) :=0A=
=0A=
						// If not, just inject the full result=0A=
						res.responseText );=0A=
=0A=
				self.each( callback, [res.responseText, status, res] );=0A=
			}=0A=
		});=0A=
		return this;=0A=
	},=0A=
=0A=
	serialize: function() {=0A=
		return jQuery.param(this.serializeArray());=0A=
	},=0A=
	serializeArray: function() {=0A=
		return this.map(function(){=0A=
			return jQuery.nodeName(this, "form") ?=0A=
				jQuery.makeArray(this.elements) : this;=0A=
		})=0A=
		.filter(function(){=0A=
			return this.name && !this.disabled &&=0A=
				(this.checked || /select|textarea/i.test(this.nodeName) ||=0A=
					/text|hidden|password/i.test(this.type));=0A=
		})=0A=
		.map(function(i, elem){=0A=
			var val =3D jQuery(this).val();=0A=
			return val =3D=3D null ? null :=0A=
				val.constructor =3D=3D Array ?=0A=
					jQuery.map( val, function(val, i){=0A=
						return {name: elem.name, value: val};=0A=
					}) :=0A=
					{name: elem.name, value: val};=0A=
		}).get();=0A=
	}=0A=
});=0A=
=0A=
// Attach a bunch of functions for handling common AJAX events=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=
var jsc =3D now();=0A=
=0A=
jQuery.extend({=0A=
	get: function( url, data, callback, type ) {=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=
		});=0A=
	},=0A=
=0A=
	getScript: function( url, callback ) {=0A=
		return jQuery.get(url, null, callback, "script");=0A=
	},=0A=
=0A=
	getJSON: function( url, data, callback ) {=0A=
		return jQuery.get(url, data, callback, "json");=0A=
	},=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=
=0A=
	ajaxSetup: function( settings ) {=0A=
		jQuery.extend( jQuery.ajaxSettings, settings );=0A=
	},=0A=
=0A=
	ajaxSettings: {=0A=
		url: location.href,=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=
		username: null,=0A=
		password: null,=0A=
		accepts: {=0A=
			xml: "application/xml, text/xml",=0A=
			html: "text/html",=0A=
			script: "text/javascript, application/javascript",=0A=
			json: "application/json, text/javascript",=0A=
			text: "text/plain",=0A=
			_default: "*/*"=0A=
		}=0A=
	},=0A=
=0A=
	// Last-Modified header cache for next request=0A=
	lastModified: {},=0A=
=0A=
	ajax: function( s ) {=0A=
		// Extend the settings, but re-extend 's' so that it can be=0A=
		// checked again later (in the test suite, specifically)=0A=
		s =3D jQuery.extend(true, s, jQuery.extend(true, {}, =
jQuery.ajaxSettings, s));=0A=
=0A=
		var jsonp, jsre =3D /=3D\?(&|$)/g, status, data,=0A=
			type =3D s.type.toUpperCase();=0A=
=0A=
		// convert data if not already a string=0A=
		if ( s.data && s.processData && typeof s.data !=3D "string" )=0A=
			s.data =3D jQuery.param(s.data);=0A=
=0A=
		// Handle JSONP Parameter Callbacks=0A=
		if ( s.dataType =3D=3D "jsonp" ) {=0A=
			if ( type =3D=3D "GET" ) {=0A=
				if ( !s.url.match(jsre) )=0A=
					s.url +=3D (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || =
"callback") + "=3D?";=0A=
			} else if ( !s.data || !s.data.match(jsre) )=0A=
				s.data =3D (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + =
"=3D?";=0A=
			s.dataType =3D "json";=0A=
		}=0A=
=0A=
		// Build temporary JSONP function=0A=
		if ( s.dataType =3D=3D "json" && (s.data && s.data.match(jsre) || =
s.url.match(jsre)) ) {=0A=
			jsonp =3D "jsonp" + jsc++;=0A=
=0A=
			// Replace the =3D? sequence both in the query string and the data=0A=
			if ( s.data )=0A=
				s.data =3D (s.data + "").replace(jsre, "=3D" + jsonp + "$1");=0A=
			s.url =3D s.url.replace(jsre, "=3D" + jsonp + "$1");=0A=
=0A=
			// We need to make sure=0A=
			// that a JSONP style response is executed properly=0A=
			s.dataType =3D "script";=0A=
=0A=
			// Handle JSONP-style loading=0A=
			window[ jsonp ] =3D function(tmp){=0A=
				data =3D tmp;=0A=
				success();=0A=
				complete();=0A=
				// Garbage collect=0A=
				window[ jsonp ] =3D undefined;=0A=
				try{ delete window[ jsonp ]; } catch(e){}=0A=
				if ( head )=0A=
					head.removeChild( script );=0A=
			};=0A=
		}=0A=
=0A=
		if ( s.dataType =3D=3D "script" && s.cache =3D=3D null )=0A=
			s.cache =3D false;=0A=
=0A=
		if ( s.cache =3D=3D=3D false && type =3D=3D "GET" ) {=0A=
			var ts =3D now();=0A=
			// try replacing _=3D if it is there=0A=
			var ret =3D s.url.replace(/(\?|&)_=3D.*?(&|$)/, "$1_=3D" + ts + "$2");=0A=
			// if nothing was replaced, add timestamp to the end=0A=
			s.url =3D ret + ((ret =3D=3D s.url) ? (s.url.match(/\?/) ? "&" : "?") =
+ "_=3D" + ts : "");=0A=
		}=0A=
=0A=
		// If data is available, append data to url for get requests=0A=
		if ( s.data && type =3D=3D "GET" ) {=0A=
			s.url +=3D (s.url.match(/\?/) ? "&" : "?") + s.data;=0A=
=0A=
			// IE likes to send both get and post data, prevent this=0A=
			s.data =3D null;=0A=
		}=0A=
=0A=
		// Watch for a new set of requests=0A=
		if ( s.global && ! jQuery.active++ )=0A=
			jQuery.event.trigger( "ajaxStart" );=0A=
=0A=
		// Matches an absolute URL, and saves the domain=0A=
		var remote =3D /^(?:\w+:)?\/\/([^\/?#]+)/;=0A=
=0A=
		// If we're requesting a remote document=0A=
		// and trying to load JSON or Script with a GET=0A=
		if ( s.dataType =3D=3D "script" && type =3D=3D "GET"=0A=
				&& remote.test(s.url) && remote.exec(s.url)[1] !=3D location.host ){=0A=
			var head =3D document.getElementsByTagName("head")[0];=0A=
			var script =3D document.createElement("script");=0A=
			script.src =3D s.url;=0A=
			if (s.scriptCharset)=0A=
				script.charset =3D s.scriptCharset;=0A=
=0A=
			// Handle Script loading=0A=
			if ( !jsonp ) {=0A=
				var done =3D false;=0A=
=0A=
				// Attach handlers for all browsers=0A=
				script.onload =3D script.onreadystatechange =3D function(){=0A=
					if ( !done && (!this.readyState ||=0A=
							this.readyState =3D=3D "loaded" || this.readyState =3D=3D =
"complete") ) {=0A=
						done =3D true;=0A=
						success();=0A=
						complete();=0A=
						head.removeChild( script );=0A=
					}=0A=
				};=0A=
			}=0A=
=0A=
			head.appendChild(script);=0A=
=0A=
			// We handle everything using the script element injection=0A=
			return undefined;=0A=
		}=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 xhr =3D window.ActiveXObject ? new =
ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();=0A=
=0A=
		// Open the socket=0A=
		// Passing null username, generates a login popup on Opera (#2865)=0A=
		if( s.username )=0A=
			xhr.open(type, s.url, s.async, s.username, s.password);=0A=
		else=0A=
			xhr.open(type, s.url, s.async);=0A=
=0A=
		// Need an extra try/catch for cross domain requests in Firefox 3=0A=
		try {=0A=
			// Set the correct header, if data is being sent=0A=
			if ( s.data )=0A=
				xhr.setRequestHeader("Content-Type", s.contentType);=0A=
=0A=
			// Set the If-Modified-Since header, if ifModified mode.=0A=
			if ( s.ifModified )=0A=
				xhr.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=
			xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");=0A=
=0A=
			// Set the Accepts header for the server, depending on the dataType=0A=
			xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?=0A=
				s.accepts[ s.dataType ] + ", */*" :=0A=
				s.accepts._default );=0A=
		} catch(e){}=0A=
=0A=
		// Allow custom headers/mimetypes=0A=
		if ( s.beforeSend && s.beforeSend(xhr, s) =3D=3D=3D false ) {=0A=
			// cleanup active request counter=0A=
			s.global && jQuery.active--;=0A=
			// close opended socket=0A=
			xhr.abort();=0A=
			return false;=0A=
		}=0A=
=0A=
		if ( s.global )=0A=
			jQuery.event.trigger("ajaxSend", [xhr, 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 ( !requestDone && xhr && (xhr.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=
				status =3D isTimeout =3D=3D "timeout" && "timeout" ||=0A=
					!jQuery.httpSuccess( xhr ) && "error" ||=0A=
					s.ifModified && jQuery.httpNotModified( xhr, s.url ) && =
"notmodified" ||=0A=
					"success";=0A=
=0A=
				if ( status =3D=3D "success" ) {=0A=
					// Watch for, and catch, XML document parse errors=0A=
					try {=0A=
						// process the data (runs the xml through httpData regardless of =
callback)=0A=
						data =3D jQuery.httpData( xhr, s.dataType, s.dataFilter );=0A=
					} catch(e) {=0A=
						status =3D "parsererror";=0A=
					}=0A=
				}=0A=
=0A=
				// Make sure that the request was successful or notmodified=0A=
				if ( status =3D=3D "success" ) {=0A=
					// Cache Last-Modified header, if ifModified mode.=0A=
					var modRes;=0A=
					try {=0A=
						modRes =3D xhr.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=
					// JSONP handles its own success callback=0A=
					if ( !jsonp )=0A=
						success();=0A=
				} else=0A=
					jQuery.handleError(s, xhr, status);=0A=
=0A=
				// Fire the complete handlers=0A=
				complete();=0A=
=0A=
				// Stop memory leaks=0A=
				if ( s.async )=0A=
					xhr =3D null;=0A=
			}=0A=
		};=0A=
=0A=
		if ( s.async ) {=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 ( xhr ) {=0A=
						// Cancel the request=0A=
						xhr.abort();=0A=
=0A=
						if( !requestDone )=0A=
							onreadystatechange( "timeout" );=0A=
					}=0A=
				}, s.timeout);=0A=
		}=0A=
=0A=
		// Send the data=0A=
		try {=0A=
			xhr.send(s.data);=0A=
		} catch(e) {=0A=
			jQuery.handleError(s, xhr, null, e);=0A=
		}=0A=
=0A=
		// firefox 1.5 doesn't fire statechange for sync requests=0A=
		if ( !s.async )=0A=
			onreadystatechange();=0A=
=0A=
		function success(){=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", [xhr, s] );=0A=
		}=0A=
=0A=
		function complete(){=0A=
			// Process result=0A=
			if ( s.complete )=0A=
				s.complete(xhr, status);=0A=
=0A=
			// The request was completed=0A=
			if ( s.global )=0A=
				jQuery.event.trigger( "ajaxComplete", [xhr, s] );=0A=
=0A=
			// Handle the global AJAX counter=0A=
			if ( s.global && ! --jQuery.active )=0A=
				jQuery.event.trigger( "ajaxStop" );=0A=
		}=0A=
=0A=
		// return XMLHttpRequest to allow aborting the request etc.=0A=
		return xhr;=0A=
	},=0A=
=0A=
	handleError: function( s, xhr, status, e ) {=0A=
		// If a local callback was specified, fire it=0A=
		if ( s.error ) s.error( xhr, status, e );=0A=
=0A=
		// Fire the global callback=0A=
		if ( s.global )=0A=
			jQuery.event.trigger( "ajaxError", [xhr, 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( xhr ) {=0A=
		try {=0A=
			// IE error sometimes returns 1223 when it should be 204 so treat it =
as success, see #1450=0A=
			return !xhr.status && location.protocol =3D=3D "file:" ||=0A=
				( xhr.status >=3D 200 && xhr.status < 300 ) || xhr.status =3D=3D 304 =
|| xhr.status =3D=3D 1223 ||=0A=
				jQuery.browser.safari && xhr.status =3D=3D undefined;=0A=
		} catch(e){}=0A=
		return false;=0A=
	},=0A=
=0A=
	// Determines if an XMLHttpRequest returns NotModified=0A=
	httpNotModified: function( xhr, url ) {=0A=
		try {=0A=
			var xhrRes =3D xhr.getResponseHeader("Last-Modified");=0A=
=0A=
			// Firefox always returns 200. check Last-Modified date=0A=
			return xhr.status =3D=3D 304 || xhrRes =3D=3D =
jQuery.lastModified[url] ||=0A=
				jQuery.browser.safari && xhr.status =3D=3D undefined;=0A=
		} catch(e){}=0A=
		return false;=0A=
	},=0A=
=0A=
	httpData: function( xhr, type, filter ) {=0A=
		var ct =3D xhr.getResponseHeader("content-type"),=0A=
			xml =3D type =3D=3D "xml" || !type && ct && ct.indexOf("xml") >=3D 0,=0A=
			data =3D xml ? xhr.responseXML : xhr.responseText;=0A=
=0A=
		if ( xml && data.documentElement.tagName =3D=3D "parsererror" )=0A=
			throw "parsererror";=0A=
			=0A=
		// Allow a pre-filtering function to sanitize the response=0A=
		if( filter )=0A=
			data =3D filter( data, type );=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=
		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( =
jQuery.isFunction(a[j]) ? a[j]() : a[j] ) );=0A=
=0A=
		// Return the resulting serialization=0A=
		return s.join("&").replace(/%20/g, "+");=0A=
	}=0A=
=0A=
});=0A=
jQuery.fn.extend({=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 || "";=0A=
				if ( jQuery.css(this,"display") =3D=3D "none" ) {=0A=
					var elem =3D jQuery("<" + this.tagName + " />").appendTo("body");=0A=
					this.style.display =3D elem.css("display");=0A=
					// handle an edge condition where css is - div { display:none; } or =
similar=0A=
					if (this.style.display =3D=3D "none")=0A=
						this.style.display =3D "block";=0A=
					elem.remove();=0A=
				}=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=
				this.style.display =3D "none";=0A=
			}).end();=0A=
	},=0A=
=0A=
	// Save the old toggle function=0A=
	_toggle: jQuery.fn.toggle,=0A=
=0A=
	toggle: function( fn, fn2 ){=0A=
		return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?=0A=
			this._toggle.apply( this, arguments ) :=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=
=0A=
	slideDown: function(speed,callback){=0A=
		return this.animate({height: "show"}, speed, callback);=0A=
	},=0A=
=0A=
	slideUp: function(speed,callback){=0A=
		return this.animate({height: "hide"}, speed, callback);=0A=
	},=0A=
=0A=
	slideToggle: function(speed, callback){=0A=
		return this.animate({height: "toggle"}, speed, callback);=0A=
	},=0A=
=0A=
	fadeIn: function(speed, callback){=0A=
		return this.animate({opacity: "show"}, speed, callback);=0A=
	},=0A=
=0A=
	fadeOut: function(speed, callback){=0A=
		return this.animate({opacity: "hide"}, speed, callback);=0A=
	},=0A=
=0A=
	fadeTo: function(speed,to,callback){=0A=
		return this.animate({opacity: to}, speed, callback);=0A=
	},=0A=
=0A=
	animate: function( prop, speed, easing, callback ) {=0A=
		var optall =3D jQuery.speed(speed, easing, callback);=0A=
=0A=
		return this[ optall.queue =3D=3D=3D false ? "each" : "queue" =
](function(){=0A=
			if ( this.nodeType !=3D 1)=0A=
				return false;=0A=
=0A=
			var opt =3D jQuery.extend({}, optall), p,=0A=
				hidden =3D jQuery(this).is(":hidden"), self =3D this;=0A=
=0A=
			for ( p in prop ) {=0A=
				if ( prop[p] =3D=3D "hide" && hidden || prop[p] =3D=3D "show" && =
!hidden )=0A=
					return opt.complete.call(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=
			opt.curAnim =3D jQuery.extend({}, prop);=0A=
=0A=
			jQuery.each( prop, function(name, val){=0A=
				var e =3D new jQuery.fx( self, opt, name );=0A=
=0A=
				if ( /toggle|show|hide/.test(val) )=0A=
					e[ val =3D=3D "toggle" ? hidden ? "show" : "hide" : val ]( prop );=0A=
				else {=0A=
					var parts =3D val.toString().match(/^([+-]=3D)?([\d+-.]+)(.*)$/),=0A=
						start =3D e.cur(true) || 0;=0A=
=0A=
					if ( parts ) {=0A=
						var end =3D parseFloat(parts[2]),=0A=
							unit =3D parts[3] || "px";=0A=
=0A=
						// We need to compute starting value=0A=
						if ( unit !=3D "px" ) {=0A=
							self.style[ name ] =3D (end || 1) + unit;=0A=
							start =3D ((end || 1) / e.cur(true)) * start;=0A=
							self.style[ name ] =3D start + unit;=0A=
						}=0A=
=0A=
						// If a +=3D/-=3D token was provided, we're doing a relative =
animation=0A=
						if ( parts[1] )=0A=
							end =3D ((parts[1] =3D=3D "-=3D" ? -1 : 1) * end) + start;=0A=
=0A=
						e.custom( start, end, unit );=0A=
					} else=0A=
						e.custom( start, val, "" );=0A=
				}=0A=
			});=0A=
=0A=
			// For JS strict compliance=0A=
			return true;=0A=
		});=0A=
	},=0A=
=0A=
	queue: function(type, fn){=0A=
		if ( jQuery.isFunction(type) || ( type && type.constructor =3D=3D =
Array )) {=0A=
			fn =3D type;=0A=
			type =3D "fx";=0A=
		}=0A=
=0A=
		if ( !type || (typeof type =3D=3D "string" && !fn) )=0A=
			return queue( this[0], type );=0A=
=0A=
		return this.each(function(){=0A=
			if ( fn.constructor =3D=3D Array )=0A=
				queue(this, type, fn);=0A=
			else {=0A=
				queue(this, type).push( fn );=0A=
=0A=
				if ( queue(this, type).length =3D=3D 1 )=0A=
					fn.call(this);=0A=
			}=0A=
		});=0A=
	},=0A=
=0A=
	stop: function(clearQueue, gotoEnd){=0A=
		var timers =3D jQuery.timers;=0A=
=0A=
		if (clearQueue)=0A=
			this.queue([]);=0A=
=0A=
		this.each(function(){=0A=
			// go in reverse order so anything added to the queue during the loop =
is ignored=0A=
			for ( var i =3D timers.length - 1; i >=3D 0; i-- )=0A=
				if ( timers[i].elem =3D=3D this ) {=0A=
					if (gotoEnd)=0A=
						// force the next step to be the last=0A=
						timers[i](true);=0A=
					timers.splice(i, 1);=0A=
				}=0A=
		});=0A=
=0A=
		// start the next in the queue if the last step wasn't forced=0A=
		if (!gotoEnd)=0A=
			this.dequeue();=0A=
=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
var queue =3D function( elem, type, array ) {=0A=
	if ( elem ){=0A=
=0A=
		type =3D type || "fx";=0A=
=0A=
		var q =3D jQuery.data( elem, type + "queue" );=0A=
=0A=
		if ( !q || array )=0A=
			q =3D jQuery.data( elem, type + "queue", jQuery.makeArray(array) );=0A=
=0A=
	}=0A=
	return q;=0A=
};=0A=
=0A=
jQuery.fn.dequeue =3D function(type){=0A=
	type =3D type || "fx";=0A=
=0A=
	return this.each(function(){=0A=
		var q =3D queue(this, type);=0A=
=0A=
		q.shift();=0A=
=0A=
		if ( q.length )=0A=
			q[0].call( this );=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=0A=
		};=0A=
=0A=
		opt.duration =3D (opt.duration && opt.duration.constructor =3D=3D =
Number ?=0A=
			opt.duration :=0A=
			jQuery.fx.speeds[opt.duration]) || jQuery.fx.speeds.def;=0A=
=0A=
		// Queueing=0A=
		opt.old =3D opt.complete;=0A=
		opt.complete =3D function(){=0A=
			if ( opt.queue !=3D=3D false )=0A=
				jQuery(this).dequeue();=0A=
			if ( jQuery.isFunction( opt.old ) )=0A=
				opt.old.call( 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=
	timers: [],=0A=
	timerId: null,=0A=
=0A=
	fx: function( elem, options, prop ){=0A=
		this.options =3D options;=0A=
		this.elem =3D elem;=0A=
		this.prop =3D prop;=0A=
=0A=
		if ( !options.orig )=0A=
			options.orig =3D {};=0A=
	}=0A=
=0A=
});=0A=
=0A=
jQuery.fx.prototype =3D {=0A=
=0A=
	// Simple function for setting a style value=0A=
	update: function(){=0A=
		if ( this.options.step )=0A=
			this.options.step.call( this.elem, this.now, this );=0A=
=0A=
		(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );=0A=
=0A=
		// Set display property to block for height/width animations=0A=
		if ( this.prop =3D=3D "height" || this.prop =3D=3D "width" )=0A=
			this.elem.style.display =3D "block";=0A=
	},=0A=
=0A=
	// Get the current size=0A=
	cur: function(force){=0A=
		if ( this.elem[this.prop] !=3D null && this.elem.style[this.prop] =
=3D=3D null )=0A=
			return this.elem[ this.prop ];=0A=
=0A=
		var r =3D parseFloat(jQuery.css(this.elem, this.prop, force));=0A=
		return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, =
this.prop)) || 0;=0A=
	},=0A=
=0A=
	// Start an animation from one number to another=0A=
	custom: function(from, to, unit){=0A=
		this.startTime =3D now();=0A=
		this.start =3D from;=0A=
		this.end =3D to;=0A=
		this.unit =3D unit || this.unit || "px";=0A=
		this.now =3D this.start;=0A=
		this.pos =3D this.state =3D 0;=0A=
		this.update();=0A=
=0A=
		var self =3D this;=0A=
		function t(gotoEnd){=0A=
			return self.step(gotoEnd);=0A=
		}=0A=
=0A=
		t.elem =3D this.elem;=0A=
=0A=
		jQuery.timers.push(t);=0A=
=0A=
		if ( jQuery.timerId =3D=3D null ) {=0A=
			jQuery.timerId =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( jQuery.timerId );=0A=
					jQuery.timerId =3D null;=0A=
				}=0A=
			}, 13);=0A=
		}=0A=
	},=0A=
=0A=
	// Simple 'show' function=0A=
	show: function(){=0A=
		// Remember where we started, so that we can go back to it later=0A=
		this.options.orig[this.prop] =3D jQuery.attr( this.elem.style, =
this.prop );=0A=
		this.options.show =3D true;=0A=
=0A=
		// Begin the animation=0A=
		this.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 ( this.prop =3D=3D "width" || this.prop =3D=3D "height" )=0A=
			this.elem.style[this.prop] =3D "1px";=0A=
=0A=
		// Start by showing the element=0A=
		jQuery(this.elem).show();=0A=
	},=0A=
=0A=
	// Simple 'hide' function=0A=
	hide: function(){=0A=
		// Remember where we started, so that we can go back to it later=0A=
		this.options.orig[this.prop] =3D jQuery.attr( this.elem.style, =
this.prop );=0A=
		this.options.hide =3D true;=0A=
=0A=
		// Begin the animation=0A=
		this.custom(this.cur(), 0);=0A=
	},=0A=
=0A=
	// Each step of an animation=0A=
	step: function(gotoEnd){=0A=
		var t =3D now();=0A=
=0A=
		if ( gotoEnd || t > this.options.duration + this.startTime ) {=0A=
			this.now =3D this.end;=0A=
			this.pos =3D this.state =3D 1;=0A=
			this.update();=0A=
=0A=
			this.options.curAnim[ this.prop ] =3D true;=0A=
=0A=
			var done =3D true;=0A=
			for ( var i in this.options.curAnim )=0A=
				if ( this.options.curAnim[i] !=3D=3D true )=0A=
					done =3D false;=0A=
=0A=
			if ( done ) {=0A=
				if ( this.options.display !=3D null ) {=0A=
					// Reset the overflow=0A=
					this.elem.style.overflow =3D this.options.overflow;=0A=
=0A=
					// Reset the display=0A=
					this.elem.style.display =3D this.options.display;=0A=
					if ( jQuery.css(this.elem, "display") =3D=3D "none" )=0A=
						this.elem.style.display =3D "block";=0A=
				}=0A=
=0A=
				// Hide the element if the "hide" operation was done=0A=
				if ( this.options.hide )=0A=
					this.elem.style.display =3D "none";=0A=
=0A=
				// Reset the properties, if the item has been hidden or shown=0A=
				if ( this.options.hide || this.options.show )=0A=
					for ( var p in this.options.curAnim )=0A=
						jQuery.attr(this.elem.style, p, this.options.orig[p]);=0A=
			}=0A=
=0A=
			if ( done )=0A=
				// Execute the complete function=0A=
				this.options.complete.call( this.elem );=0A=
=0A=
			return false;=0A=
		} else {=0A=
			var n =3D t - this.startTime;=0A=
			this.state =3D n / this.options.duration;=0A=
=0A=
			// Perform the easing function, defaults to swing=0A=
			this.pos =3D jQuery.easing[this.options.easing || =
(jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, =
this.options.duration);=0A=
			this.now =3D this.start + ((this.end - this.start) * this.pos);=0A=
=0A=
			// Perform the next step of the animation=0A=
			this.update();=0A=
		}=0A=
=0A=
		return true;=0A=
	}=0A=
=0A=
};=0A=
=0A=
jQuery.extend( jQuery.fx, {=0A=
	speeds:{=0A=
		slow: 600,=0A=
 		fast: 200,=0A=
 		// Default speed=0A=
 		def: 400=0A=
	},=0A=
	step: {=0A=
		scrollLeft: function(fx){=0A=
			fx.elem.scrollLeft =3D fx.now;=0A=
		},=0A=
=0A=
		scrollTop: function(fx){=0A=
			fx.elem.scrollTop =3D fx.now;=0A=
		},=0A=
=0A=
		opacity: function(fx){=0A=
			jQuery.attr(fx.elem.style, "opacity", fx.now);=0A=
		},=0A=
=0A=
		_default: function(fx){=0A=
			fx.elem.style[ fx.prop ] =3D fx.now + fx.unit;=0A=
		}=0A=
	}=0A=
});=0A=
// The Offset Method=0A=
// Originally By Brandon Aaron, part of the Dimension Plugin=0A=
// http://jquery.com/plugins/project/dimensions=0A=
jQuery.fn.offset =3D function() {=0A=
	var left =3D 0, top =3D 0, elem =3D this[0], results;=0A=
=0A=
	if ( elem ) with ( jQuery.browser ) {=0A=
		var parent       =3D elem.parentNode,=0A=
		    offsetChild  =3D elem,=0A=
		    offsetParent =3D elem.offsetParent,=0A=
		    doc          =3D elem.ownerDocument,=0A=
		    safari2      =3D safari && parseInt(version) < 522 && =
!/adobeair/i.test(userAgent),=0A=
		    css          =3D jQuery.curCSS,=0A=
		    fixed        =3D css(elem, "position") =3D=3D "fixed";=0A=
=0A=
		// Use getBoundingClientRect if available=0A=
		if ( elem.getBoundingClientRect ) {=0A=
			var box =3D elem.getBoundingClientRect();=0A=
=0A=
			// Add the document scroll offsets=0A=
			add(box.left + Math.max(doc.documentElement.scrollLeft, =
doc.body.scrollLeft),=0A=
				box.top  + Math.max(doc.documentElement.scrollTop,  =
doc.body.scrollTop));=0A=
=0A=
			// IE adds the HTML element's border, by default it is medium which =
is 2px=0A=
			// IE 6 and 7 quirks mode the border width is overwritable by the =
following css html { border: 0; }=0A=
			// IE 7 standards mode, the border is always 2px=0A=
			// This border/offset is typically represented by the clientLeft and =
clientTop properties=0A=
			// However, in IE6 and 7 quirks mode the clientLeft and clientTop =
properties are not updated when overwriting it via CSS=0A=
			// Therefore this method will be off by 2px in IE while in quirksmode=0A=
			add( -doc.documentElement.clientLeft, -doc.documentElement.clientTop =
);=0A=
=0A=
		// Otherwise loop through the offsetParents and parentNodes=0A=
		} else {=0A=
=0A=
			// Initial element offsets=0A=
			add( elem.offsetLeft, elem.offsetTop );=0A=
=0A=
			// Get parent offsets=0A=
			while ( offsetParent ) {=0A=
				// Add offsetParent offsets=0A=
				add( offsetParent.offsetLeft, offsetParent.offsetTop );=0A=
=0A=
				// Mozilla and Safari > 2 does not include the border on offset =
parents=0A=
				// However Mozilla adds the border for table or table cells=0A=
				if ( mozilla && !/^t(able|d|h)$/i.test(offsetParent.tagName) || =
safari && !safari2 )=0A=
					border( offsetParent );=0A=
=0A=
				// Add the document scroll offsets if position is fixed on any =
offsetParent=0A=
				if ( !fixed && css(offsetParent, "position") =3D=3D "fixed" )=0A=
					fixed =3D true;=0A=
=0A=
				// Set offsetChild to previous offsetParent unless it is the body =
element=0A=
				offsetChild  =3D /^body$/i.test(offsetParent.tagName) ? offsetChild =
: offsetParent;=0A=
				// Get next offsetParent=0A=
				offsetParent =3D offsetParent.offsetParent;=0A=
			}=0A=
=0A=
			// Get parent scroll offsets=0A=
			while ( parent && parent.tagName && =
!/^body|html$/i.test(parent.tagName) ) {=0A=
				// Remove parent scroll UNLESS that parent is inline or a table to =
work around Opera inline/table scrollLeft/Top bug=0A=
				if ( !/^inline|table.*$/i.test(css(parent, "display")) )=0A=
					// Subtract parent scroll offsets=0A=
					add( -parent.scrollLeft, -parent.scrollTop );=0A=
=0A=
				// Mozilla does not add the border for a parent that has overflow =
!=3D visible=0A=
				if ( mozilla && css(parent, "overflow") !=3D "visible" )=0A=
					border( parent );=0A=
=0A=
				// Get next parent=0A=
				parent =3D parent.parentNode;=0A=
			}=0A=
=0A=
			// Safari <=3D 2 doubles body offsets with a fixed position =
element/offsetParent or absolutely positioned offsetChild=0A=
			// Mozilla doubles body offsets with a non-absolutely positioned =
offsetChild=0A=
			if ( (safari2 && (fixed || css(offsetChild, "position") =3D=3D =
"absolute")) ||=0A=
				(mozilla && css(offsetChild, "position") !=3D "absolute") )=0A=
					add( -doc.body.offsetLeft, -doc.body.offsetTop );=0A=
=0A=
			// Add the document scroll offsets if position is fixed=0A=
			if ( fixed )=0A=
				add(Math.max(doc.documentElement.scrollLeft, doc.body.scrollLeft),=0A=
					Math.max(doc.documentElement.scrollTop,  doc.body.scrollTop));=0A=
		}=0A=
=0A=
		// Return an object with top and left properties=0A=
		results =3D { top: top, left: left };=0A=
	}=0A=
=0A=
	function border(elem) {=0A=
		add( jQuery.curCSS(elem, "borderLeftWidth", true), jQuery.curCSS(elem, =
"borderTopWidth", true) );=0A=
	}=0A=
=0A=
	function add(l, t) {=0A=
		left +=3D parseInt(l, 10) || 0;=0A=
		top +=3D parseInt(t, 10) || 0;=0A=
	}=0A=
=0A=
	return results;=0A=
};=0A=
=0A=
=0A=
jQuery.fn.extend({=0A=
	position: function() {=0A=
		var left =3D 0, top =3D 0, results;=0A=
=0A=
		if ( this[0] ) {=0A=
			// Get *real* offsetParent=0A=
			var offsetParent =3D this.offsetParent(),=0A=
=0A=
			// Get correct offsets=0A=
			offset       =3D this.offset(),=0A=
			parentOffset =3D /^body|html$/i.test(offsetParent[0].tagName) ? { =
top: 0, left: 0 } : offsetParent.offset();=0A=
=0A=
			// Subtract element margins=0A=
			// note: when an element has margin: auto the offsetLeft and =
marginLeft =0A=
			// are the same in Safari causing offset.left to incorrectly be 0=0A=
			offset.top  -=3D num( this, 'marginTop' );=0A=
			offset.left -=3D num( this, 'marginLeft' );=0A=
=0A=
			// Add offsetParent borders=0A=
			parentOffset.top  +=3D num( offsetParent, 'borderTopWidth' );=0A=
			parentOffset.left +=3D num( offsetParent, 'borderLeftWidth' );=0A=
=0A=
			// Subtract the two offsets=0A=
			results =3D {=0A=
				top:  offset.top  - parentOffset.top,=0A=
				left: offset.left - parentOffset.left=0A=
			};=0A=
		}=0A=
=0A=
		return results;=0A=
	},=0A=
=0A=
	offsetParent: function() {=0A=
		var offsetParent =3D this[0].offsetParent;=0A=
		while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && =
jQuery.css(offsetParent, 'position') =3D=3D 'static') )=0A=
			offsetParent =3D offsetParent.offsetParent;=0A=
		return jQuery(offsetParent);=0A=
	}=0A=
});=0A=
=0A=
=0A=
// Create scrollLeft and scrollTop methods=0A=
jQuery.each( ['Left', 'Top'], function(i, name) {=0A=
	var method =3D 'scroll' + name;=0A=
	=0A=
	jQuery.fn[ method ] =3D function(val) {=0A=
		if (!this[0]) return;=0A=
=0A=
		return val !=3D undefined ?=0A=
=0A=
			// Set the scroll offset=0A=
			this.each(function() {=0A=
				this =3D=3D window || this =3D=3D document ?=0A=
					window.scrollTo(=0A=
						!i ? val : jQuery(window).scrollLeft(),=0A=
						 i ? val : jQuery(window).scrollTop()=0A=
					) :=0A=
					this[ method ] =3D val;=0A=
			}) :=0A=
=0A=
			// Return the scroll offset=0A=
			this[0] =3D=3D window || this[0] =3D=3D document ?=0A=
				self[ i ? 'pageYOffset' : 'pageXOffset' ] ||=0A=
					jQuery.boxModel && document.documentElement[ method ] ||=0A=
					document.body[ method ] :=0A=
				this[0][ method ];=0A=
	};=0A=
});=0A=
// Create innerHeight, innerWidth, outerHeight and outerWidth methods=0A=
jQuery.each([ "Height", "Width" ], function(i, name){=0A=
=0A=
	var tl =3D i ? "Left"  : "Top",  // top or left=0A=
		br =3D i ? "Right" : "Bottom"; // bottom or right=0A=
=0A=
	// innerHeight and innerWidth=0A=
	jQuery.fn["inner" + name] =3D function(){=0A=
		return this[ name.toLowerCase() ]() +=0A=
			num(this, "padding" + tl) +=0A=
			num(this, "padding" + br);=0A=
	};=0A=
=0A=
	// outerHeight and outerWidth=0A=
	jQuery.fn["outer" + name] =3D function(margin) {=0A=
		return this["inner" + name]() +=0A=
			num(this, "border" + tl + "Width") +=0A=
			num(this, "border" + br + "Width") +=0A=
			(margin ?=0A=
				num(this, "margin" + tl) + num(this, "margin" + br) : 0);=0A=
	};=0A=
=0A=
});})();=0A=

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.cactuspro.com/cf_lib_jquery.js

// Pr=E9-chargement images=0A=
icone_ajax_loader_32x32 =3D new Image();=0A=
icone_ajax_loader_32x32.src =3D "/images/icones/ajax-loader_32x32.gif";=0A=
=0A=
accept_16x16 =3D new Image();=0A=
accept_16x16.src =3D "/images/icones/accept_16x16.png";=0A=
=0A=
=0A=
$(document).ready(function() {=0A=
  $("#cf_listes_message").hide();=0A=
  $(".cf_listes_message_class").hide();=0A=
	// Pour ajout sans rechargement de la page, par exemple sur fiches de =
l'encyclop=E9die=0A=
  $("#cf_listes_propose a").click(function(f){=0A=
    // stop normal link click=0A=
    f.preventDefault();=0A=
    $("#cf_listes_propose").html(=0A=
      "<img src=3D\"/images/icones/ajax-loader_32x32.gif\" =
width=3D\"32\" height=3D\"32\" alt=3D\"Chargement\">"=0A=
    );=0A=
=0A=
    // send request=0A=
    $.post("/cf_listes.php", {requete: $(this).attr('href')}, =
function(xml) {=0A=
      // format and output result=0A=
      $("#cf_listes_propose").html(=0A=
        "<img src=3D\"/images/icones/ark_extract_32x32.png\" =
width=3D\"32\" height=3D\"32\" alt=3D\"propose\">"=0A=
      );=0A=
      $("#cf_listes_message").fadeOut("slow");=0A=
      $("#cf_listes_message").html('<img =
src=3D"/images/icones/accept_16x16.png" width=3D"16" height=3D"16" =
alt=3D"ok"> <b>Esp&egrave;ce ajout&eacute;e</b>');=0A=
      $("#cf_listes_message").fadeIn("slow");=0A=
    });=0A=
  });=0A=
=0A=
  $(".cf_listes_propose_class a").click(function(f){=0A=
    // stop normal link click=0A=
    f.preventDefault();=0A=
    $(".cf_listes_propose_class").html(=0A=
      "<img src=3D\"/images/icones/ajax-loader_32x32.gif\" =
width=3D\"32\" height=3D\"32\" alt=3D\"Chargement\">"=0A=
    );=0A=
=0A=
    // send request=0A=
    $.post("/cf_listes.php", {requete: $(this).attr('href')}, =
function(xml) {=0A=
      // format and output result=0A=
      $(".cf_listes_propose_class").html(=0A=
        "<img src=3D\"/images/icones/ark_extract_32x32.png\" =
width=3D\"32\" height=3D\"32\" alt=3D\"propose\">"=0A=
      );=0A=
      $(".cf_listes_message_class").fadeOut("slow");=0A=
      $(".cf_listes_message_class").html('<img =
src=3D"/images/icones/accept_16x16.png" width=3D"16" height=3D"16" =
alt=3D"ok"> <b>Esp&egrave;ce ajout&eacute;e</b>');=0A=
      $(".cf_listes_message_class").fadeIn("slow");=0A=
    });=0A=
  });=0A=
=0A=
  $("#cf_listes_cherche a").click(function(f){=0A=
    // stop normal link click=0A=
    f.preventDefault();=0A=
      $("#cf_listes_cherche").html(=0A=
        "<img src=3D\"/images/icones/ajax-loader_32x32.gif\" =
width=3D\"32\" height=3D\"32\" alt=3D\"Chargement\">"=0A=
      );=0A=
=0A=
    // send request=0A=
    $.post("/cf_listes.php", {requete: $(this).attr('href')}, =
function(xml) {=0A=
      // format and output result=0A=
      $("#cf_listes_cherche").html(=0A=
        "<img src=3D\"/images/icones/xmag_32x32.png\" width=3D\"32\" =
height=3D\"32\" alt=3D\"cherche\">"=0A=
      );=0A=
      $("#cf_listes_message").fadeOut("slow");=0A=
      $("#cf_listes_message").html('<img =
src=3D"/images/icones/accept_16x16.png" width=3D"16" height=3D"16" =
alt=3D"ok"> <b>Esp&egrave;ce ajout&eacute;e</b>');=0A=
      $("#cf_listes_message").fadeIn("slow");=0A=
    });=0A=
  });=0A=
=0A=
  $("#cf_listes_prefere a").click(function(f){=0A=
    // stop normal link click=0A=
    f.preventDefault();=0A=
      $("#cf_listes_prefere").html(=0A=
        "<img src=3D\"/images/icones/ajax-loader_32x32.gif\" =
width=3D\"32\" height=3D\"32\" alt=3D\"Chargement\">"=0A=
      );=0A=
=0A=
    // send request=0A=
    $.post("/cf_listes.php", {requete: $(this).attr('href')}, =
function(xml) {=0A=
      // format and output result=0A=
      $("#cf_listes_prefere").html(=0A=
        "<img src=3D\"/images/icones/coeur_rouge.png\" width=3D\"32\" =
height=3D\"32\" alt=3D\"pr=E9f=E9r=E9es\">"=0A=
      );=0A=
      $("#cf_listes_message").fadeOut("slow");=0A=
      $("#cf_listes_message").html('<img =
src=3D"/images/icones/accept_16x16.png" width=3D"16" height=3D"16" =
alt=3D"ok"> <b>Esp&egrave;ce ajout&eacute;e</b>');=0A=
      $("#cf_listes_message").fadeIn("slow");=0A=
    });=0A=
  });=0A=
=0A=
// Pour enlever esp=E8ces des listes cf_listes_table=0A=
	$('table.table_cf_listes a.cf_listes_supprime').bind('click', =
function() {=0A=
    $.post("/cf_listes.php", {requete: $(this).attr('href')}, =
function(xml) {=0A=
		});=0A=
		$(this).parents('tr').fadeOut();=0A=
		return false;=0A=
	});=0A=
=0A=
// Pour ajouter une ligne=0A=
	$('#cf_listes_table_cherche_ajout a').click(function(f) {=0A=
    f.preventDefault();=0A=
		alert('toto');=0A=
//		var clonedRow =3D $("table#cf_listes_table_cherche_ajout tr =
:last).clone();=0A=
//		$("#formField", clonedRow).attr("id", "newID");=0A=
//		$("table#cf_listes_table_cherche_ajout").append(clonedRow);=0A=
	});=0A=
=0A=
// Suggestion de noms d'esp=E8ces=0A=
	=
$("#cf_listes_suggest_propose").suggest("/call.cf_listes.ajouter.php",{})=
;=0A=
	=
$("#cf_listes_suggest_cherche").suggest("/call.cf_listes.ajouter.php",{})=
;=0A=
	=
$("#cf_listes_suggest_prefere").suggest("/call.cf_listes.ajouter.php",{})=
;=0A=
// Suggestion pour champs de l'encyclop=E9die=0A=
	=
$("#cf_encyclo_suggest_famille").suggest("/call.encyclo.suggest.php?type=3D=
famille",{});=0A=
	=
$("#cf_encyclo_suggest_division").suggest("/call.encyclo.suggest.php?type=
=3Ddivision",{});=0A=
	=
$("#cf_encyclo_suggest_subdivision").suggest("/call.encyclo.suggest.php?t=
ype=3Dsubdivision",{});=0A=
	=
$("#cf_encyclo_suggest_classe").suggest("/call.encyclo.suggest.php?type=3D=
classe",{});=0A=
	=
$("#cf_encyclo_suggest_sous_classe").suggest("/call.encyclo.suggest.php?t=
ype=3Dsous_classe",{});=0A=
	=
$("#cf_encyclo_suggest_ordre").suggest("/call.encyclo.suggest.php?type=3D=
ordre",{});=0A=
	=
$("#cf_encyclo_suggest_sous_ordre").suggest("/call.encyclo.suggest.php?ty=
pe=3Dsous_ordre",{});=0A=
	=
$("#cf_encyclo_suggest_genre").suggest("/call.encyclo.suggest.php?type=3D=
genre",{});=0A=
	=
$("#cf_encyclo_suggest_sous_famille").suggest("/call.encyclo.suggest.php?=
type=3Dsous_famille",{});=0A=
	=
$("#cf_encyclo_suggest_tribu").suggest("/call.encyclo.suggest.php?type=3D=
tribu",{});=0A=
	=
$("#cf_encyclo_suggest_sous_tribu").suggest("/call.encyclo.suggest.php?ty=
pe=3Dsous_tribu",{});=0A=
	=
$("#cf_encyclo_suggest_espece").suggest("/call.encyclo.suggest.php?type=3D=
espece",{});=0A=
	=
$("#cf_encyclo_suggest_ssp").suggest("/call.encyclo.suggest.php?type=3Dss=
p",{});=0A=
	=
$("#cf_encyclo_suggest_variete").suggest("/call.encyclo.suggest.php?type=3D=
variete",{});=0A=
	=
$("#cf_encyclo_suggest_forme").suggest("/call.encyclo.suggest.php?type=3D=
forme",{});=0A=
	=
$("#cf_encyclo_suggest_cultivar").suggest("/call.encyclo.suggest.php?type=
=3Dcultivar",{});=0A=
	=
$("#cf_encyclo_suggest_botaniste1").suggest("/call.encyclo.suggest.php?ty=
pe=3Dbotaniste",{});=0A=
	=
$("#cf_encyclo_suggest_botaniste2").suggest("/call.encyclo.suggest.php?ty=
pe=3Dbotaniste",{});=0A=
	=
$("#cf_encyclo_suggest_nationalite").suggest("/call.encyclo.suggest.php?t=
ype=3Dnationalite",{});=0A=
=0A=
});=0A=

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.cactuspro.com/cf_lib.js

function cf_timbres_maj(id) {=0A=
	document.write('');=0A=
}=0A=
=0A=
function toggleGroup(type) {=0A=
  for (var i =3D 0; i < markerGroups[type].length; i++) {=0A=
    var marker =3D markerGroups[type][i];=0A=
    if (marker.getVisible()) {=0A=
      marker.setVisible(false);=0A=
    } else {=0A=
      marker.setVisible(true);=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
/**=0A=
* change le niveau de zoom de la carte "map"=0A=
* @param {String} type Zoom appliquer : 'monde', 'europe' ou 'france'=0A=
*/=0A=
function cf_gmap_zoom(type) {=0A=
  if (type =3D=3D 'monde') {=0A=
    map.setZoom(1);=0A=
    map.setCenter(new google.maps.LatLng(46.47, 5.27));=0A=
  } else if (type =3D=3D 'europe') {=0A=
    map.setZoom(4);=0A=
    map.setCenter(new google.maps.LatLng(46.47, 5.27));=0A=
  } else if (type =3D=3D 'france') {=0A=
    map.setZoom(5);=0A=
    map.setCenter(new google.maps.LatLng(46.47, 5.27));=0A=
  }=0A=
}=0A=
=0A=
// A function to create the marker and set up the event window=0A=
var markerGroups =3D { "producteur": [], "jardin": [], "evenement": [], =
"site": []};=0A=
function cf_createMarker2(name, latlng, type) {=0A=
	var marker =3D new google.maps.Marker({position: latlng, map: map, =
icon: "/images/icones/icone_gmap_"+type+".png"});=0A=
	markerGroups[type].push(marker);=0A=
	google.maps.event.addListener(marker, "click", function() {=0A=
		if (infowindow) infowindow.close();=0A=
		infowindow =3D new google.maps.InfoWindow({content: name});=0A=
		infowindow.open(map, marker);=0A=
	});=0A=
	return marker;=0A=
}=0A=
=0A=
// =
*************************************************************************=
**********=0A=
// D=E9but code de =
http://gmaps-samples-v3.googlecode.com/svn/trunk/xmlparsing/util.js=0A=
// =
*************************************************************************=
**********=0A=
/**=0A=
* Returns an XMLHttp instance to use for asynchronous=0A=
* downloading. This method will never throw an exception, but will=0A=
* return NULL if the browser does not support XmlHttp for any reason.=0A=
* @return {XMLHttpRequest|Null}=0A=
*/=0A=
function createXmlHttpRequest() {=0A=
 try {=0A=
   if (typeof ActiveXObject !=3D 'undefined') {=0A=
     return new ActiveXObject('Microsoft.XMLHTTP');=0A=
   } else if (window["XMLHttpRequest"]) {=0A=
     return new XMLHttpRequest();=0A=
   }=0A=
 } catch (e) {=0A=
   changeStatus(e);=0A=
 }=0A=
 return null;=0A=
};=0A=
=0A=
/**=0A=
* This functions wraps XMLHttpRequest open/send function.=0A=
* It lets you specify a URL and will call the callback if=0A=
* it gets a status code of 200.=0A=
* @param {String} url The URL to retrieve=0A=
* @param {Function} callback The function to call once retrieved.=0A=
*/=0A=
function downloadUrl(url, callback) {=0A=
 var status =3D -1;=0A=
 var request =3D createXmlHttpRequest();=0A=
 if (!request) {=0A=
   return false;=0A=
 }=0A=
=0A=
 request.onreadystatechange =3D function() {=0A=
   if (request.readyState =3D=3D 4) {=0A=
     try {=0A=
       status =3D request.status;=0A=
     } catch (e) {=0A=
       // Usually indicates request timed out in FF.=0A=
     }=0A=
     if (status =3D=3D 200) {=0A=
       callback(request.responseXML, request.status);=0A=
       request.onreadystatechange =3D function() {};=0A=
     }=0A=
   }=0A=
 }=0A=
 request.open('GET', url, true);=0A=
 try {=0A=
   request.send(null);=0A=
 } catch (e) {=0A=
   changeStatus(e);=0A=
 }=0A=
};=0A=
=0A=
/**=0A=
 * Parses the given XML string and returns the parsed document in a=0A=
 * DOM data structure. This function will return an empty DOM node if=0A=
 * XML parsing is not supported in this browser.=0A=
 * @param {string} str XML string.=0A=
 * @return {Element|Document} DOM.=0A=
 */=0A=
function xmlParse(str) {=0A=
  if (typeof ActiveXObject !=3D 'undefined' && typeof GetObject !=3D =
'undefined') {=0A=
    var doc =3D new ActiveXObject('Microsoft.XMLDOM');=0A=
    doc.loadXML(str);=0A=
    return doc;=0A=
  }=0A=
=0A=
  if (typeof DOMParser !=3D 'undefined') {=0A=
    return (new DOMParser()).parseFromString(str, 'text/xml');=0A=
  }=0A=
=0A=
  return createElement('div', null);=0A=
}=0A=
=0A=
/**=0A=
 * Appends a JavaScript file to the page.=0A=
 * @param {string} url=0A=
 */=0A=
function downloadScript(url) {=0A=
  var script =3D document.createElement('script');=0A=
  script.src =3D url;=0A=
  document.body.appendChild(script);=0A=
}=0A=
// =
*************************************************************************=
**********=0A=
// Fin code de =
http://gmaps-samples-v3.googlecode.com/svn/trunk/xmlparsing/util.js=0A=
// =
*************************************************************************=
**********=0A=
=0A=

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.cactuspro.com/jquery.suggest.js

	=0A=
	/*=0A=
	 *	jquery.suggest 1.1 - 2007-08-06=0A=
	 *	=0A=
	 *	Uses code and techniques from following libraries:=0A=
	 *	1. http://www.dyve.net/jquery/?autocomplete=0A=
	 *	2. =
http://dev.jquery.com/browser/trunk/plugins/interface/iautocompleter.js	=0A=
	 *=0A=
	 *	All the new stuff written by Peter Vulgaris (www.vulgarisoip.com)	=0A=
	 *	Feel free to do whatever you want with this file=0A=
	 *=0A=
	 */=0A=
	=0A=
	(function($) {=0A=
=0A=
		$.suggest =3D function(input, options) {=0A=
	=0A=
			var $input =3D $(input).attr("autocomplete", "off");=0A=
			var $results =3D $(document.createElement("ul"));=0A=
=0A=
			var timeout =3D false;		// hold timeout ID for suggestion results to =
appear	=0A=
			var prevLength =3D 0;			// last recorded length of $input.val()=0A=
			var cache =3D [];				// cache MRU list=0A=
			var cacheSize =3D 0;			// size of cache in chars (bytes?)=0A=
			=0A=
			$results.addClass(options.resultsClass).appendTo('body');=0A=
				=0A=
=0A=
			resetPosition();=0A=
			$(window)=0A=
				.load(resetPosition)		// just in case user is changing size of page =
while loading=0A=
				.resize(resetPosition);=0A=
=0A=
			$input.blur(function() {=0A=
				setTimeout(function() { $results.hide() }, 200);=0A=
			});=0A=
			=0A=
			=0A=
			// help IE users if possible=0A=
			try {=0A=
				$results.bgiframe();=0A=
			} catch(e) { }=0A=
=0A=
=0A=
			// I really hate browser detection, but I don't see any other way=0A=
			if ($.browser.mozilla)=0A=
				$input.keypress(processKey);	// onkeypress repeats arrow keys in =
Mozilla/Opera=0A=
			else=0A=
				$input.keydown(processKey);		// onkeydown repeats arrow keys in =
IE/Safari=0A=
			=0A=
=0A=
=0A=
=0A=
			function resetPosition() {=0A=
				// requires jquery.dimension plugin=0A=
				var offset =3D $input.offset();=0A=
				$results.css({=0A=
					top: (offset.top + input.offsetHeight) + 'px',=0A=
					left: offset.left + 'px'=0A=
				});=0A=
			}=0A=
			=0A=
			=0A=
			function processKey(e) {=0A=
				=0A=
				// handling up/down/escape requires results to be visible=0A=
				// handling enter/tab requires that AND a result to be selected=0A=
				if ((/27$|38$|40$/.test(e.keyCode) && $results.is(':visible')) ||=0A=
					(/^13$|^9$/.test(e.keyCode) && getCurrentResult())) {=0A=
		            =0A=
		            if (e.preventDefault)=0A=
		                e.preventDefault();=0A=
					if (e.stopPropagation)=0A=
		                e.stopPropagation();=0A=
=0A=
					e.cancelBubble =3D true;=0A=
					e.returnValue =3D false;=0A=
				=0A=
					switch(e.keyCode) {=0A=
	=0A=
						case 38: // up=0A=
							prevResult();=0A=
							break;=0A=
				=0A=
						case 40: // down=0A=
							nextResult();=0A=
							break;=0A=
	=0A=
						case 9:  // tab=0A=
						case 13: // return=0A=
							selectCurrentResult();=0A=
							break;=0A=
							=0A=
						case 27: //	escape=0A=
							$results.hide();=0A=
							break;=0A=
	=0A=
					}=0A=
					=0A=
				} else if ($input.val().length !=3D prevLength) {=0A=
=0A=
					if (timeout) =0A=
						clearTimeout(timeout);=0A=
					timeout =3D setTimeout(suggest, options.delay);=0A=
					prevLength =3D $input.val().length;=0A=
					=0A=
				}			=0A=
					=0A=
				=0A=
			}=0A=
			=0A=
			=0A=
			function suggest() {=0A=
			=0A=
				var q =3D $.trim($input.val());=0A=
=0A=
				if (q.length >=3D options.minchars) {=0A=
					=0A=
					cached =3D checkCache(q);=0A=
					=0A=
					if (cached) {=0A=
					=0A=
						displayItems(cached['items']);=0A=
						=0A=
					} else {=0A=
					=0A=
						$.get(options.source, {q: q}, function(txt) {=0A=
=0A=
							$results.hide();=0A=
							=0A=
							var items =3D parseTxt(txt, q);=0A=
							=0A=
							displayItems(items);=0A=
							addToCache(q, items, txt.length);=0A=
							=0A=
						});=0A=
						=0A=
					}=0A=
					=0A=
				} else {=0A=
				=0A=
					$results.hide();=0A=
					=0A=
				}=0A=
					=0A=
			}=0A=
			=0A=
			=0A=
			function checkCache(q) {=0A=
=0A=
				for (var i =3D 0; i < cache.length; i++)=0A=
					if (cache[i]['q'] =3D=3D q) {=0A=
						cache.unshift(cache.splice(i, 1)[0]);=0A=
						return cache[0];=0A=
					}=0A=
				=0A=
				return false;=0A=
			=0A=
			}=0A=
			=0A=
			function addToCache(q, items, size) {=0A=
=0A=
				while (cache.length && (cacheSize + size > options.maxCacheSize)) {=0A=
					var cached =3D cache.pop();=0A=
					cacheSize -=3D cached['size'];=0A=
				}=0A=
				=0A=
				cache.push({=0A=
					q: q,=0A=
					size: size,=0A=
					items: items=0A=
					});=0A=
					=0A=
				cacheSize +=3D size;=0A=
			=0A=
			}=0A=
			=0A=
			function displayItems(items) {=0A=
				=0A=
				if (!items)=0A=
					return;=0A=
					=0A=
				if (!items.length) {=0A=
					$results.hide();=0A=
					return;=0A=
				}=0A=
				=0A=
				var html =3D '';=0A=
				for (var i =3D 0; i < items.length; i++)=0A=
					html +=3D '<li>' + items[i] + '</li>';=0A=
=0A=
				$results.html(html).show();=0A=
				=0A=
				$results=0A=
					.children('li')=0A=
					.mouseover(function() {=0A=
						$results.children('li').removeClass(options.selectClass);=0A=
						$(this).addClass(options.selectClass);=0A=
					})=0A=
					.click(function(e) {=0A=
						e.preventDefault(); =0A=
						e.stopPropagation();=0A=
						selectCurrentResult();=0A=
					});=0A=
							=0A=
			}=0A=
			=0A=
			function parseTxt(txt, q) {=0A=
				=0A=
				var items =3D [];=0A=
				var tokens =3D txt.split(options.delimiter);=0A=
				=0A=
				// parse returned data for non-empty items=0A=
				for (var i =3D 0; i < tokens.length; i++) {=0A=
					var token =3D $.trim(tokens[i]);=0A=
					if (token) {=0A=
						token =3D token.replace(=0A=
							new RegExp(q, 'ig'), =0A=
							function(q) { return '<span class=3D"' + options.matchClass + =
'">' + q + '</span>' }=0A=
							);=0A=
						items[items.length] =3D token;=0A=
					}=0A=
				}=0A=
				=0A=
				return items;=0A=
			}=0A=
			=0A=
			function getCurrentResult() {=0A=
			=0A=
				if (!$results.is(':visible'))=0A=
					return false;=0A=
			=0A=
				var $currentResult =3D $results.children('li.' + =
options.selectClass);=0A=
				=0A=
				if (!$currentResult.length)=0A=
					$currentResult =3D false;=0A=
					=0A=
				return $currentResult;=0A=
=0A=
			}=0A=
			=0A=
			function selectCurrentResult() {=0A=
			=0A=
				$currentResult =3D getCurrentResult();=0A=
			=0A=
				if ($currentResult) {=0A=
					$input.val($currentResult.text());=0A=
					$results.hide();=0A=
					=0A=
					if (options.onSelect)=0A=
						options.onSelect.apply($input[0]);=0A=
						=0A=
				}=0A=
			=0A=
			}=0A=
			=0A=
			function nextResult() {=0A=
			=0A=
				$currentResult =3D getCurrentResult();=0A=
			=0A=
				if ($currentResult)=0A=
					$currentResult=0A=
						.removeClass(options.selectClass)=0A=
						.next()=0A=
							.addClass(options.selectClass);=0A=
				else=0A=
					$results.children('li:first-child').addClass(options.selectClass);=0A=
			=0A=
			}=0A=
			=0A=
			function prevResult() {=0A=
			=0A=
				$currentResult =3D getCurrentResult();=0A=
			=0A=
				if ($currentResult)=0A=
					$currentResult=0A=
						.removeClass(options.selectClass)=0A=
						.prev()=0A=
							.addClass(options.selectClass);=0A=
				else=0A=
					$results.children('li:last-child').addClass(options.selectClass);=0A=
			=0A=
			}=0A=
	=0A=
		}=0A=
		=0A=
		$.fn.suggest =3D function(source, options) {=0A=
		=0A=
			if (!source)=0A=
				return;=0A=
		=0A=
			options =3D options || {};=0A=
			options.source =3D source;=0A=
			options.delay =3D options.delay || 100;=0A=
			options.resultsClass =3D options.resultsClass || 'ac_results';=0A=
			options.selectClass =3D options.selectClass || 'ac_over';=0A=
			options.matchClass =3D options.matchClass || 'ac_match';=0A=
			options.minchars =3D options.minchars || 2;=0A=
			options.delimiter =3D options.delimiter || '\n';=0A=
			options.onSelect =3D options.onSelect || false;=0A=
			options.maxCacheSize =3D options.maxCacheSize || 65536;=0A=
	=0A=
			this.each(function() {=0A=
				new $.suggest(this, options);=0A=
			});=0A=
	=0A=
			return this;=0A=
			=0A=
		};=0A=
		=0A=
	})(jQuery);=0A=
	=0A=

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.cactuspro.com/overlib.js

//\/////
//\  overLIB 4.21 - You may not remove or change this notice.
//\  Copyright Erik Bosrup 1998-2004. All rights reserved.
//\
//\  Contributors are listed on the homepage.
//\  This file might be old, always check for the latest version at:
//\  http://www.bosrup.com/web/overlib/
//\
//\  Please read the license agreement (available through the link =
above)
//\  before using overLIB. Direct any licensing questions to =
erik@bosrup.com.
//\
//\  Do not sell this as your own work or remove this copyright notice.
//\  For full details on copying or changing this script please read the
//\  license agreement at the link above. Please give credit on sites =
that
//\  use overLIB and submit changes of the script so other people can =
use
//\  them as well.
//   $Revision: 1.119 $                $Date: 2005/07/02 23:41:44 $
//\/////
//\mini

////////
// PRE-INIT
// Ignore these lines, configuration is below.
////////
var olLoaded =3D 0;var pmStart =3D 10000000; var pmUpper =3D 10001000; =
var pmCount =3D pmStart+1; var pmt=3D''; var pms =3D new Array(); var =
olInfo =3D new Info('4.21', 1);
var FREPLACE =3D 0; var FBEFORE =3D 1; var FAFTER =3D 2; var FALTERNATE =
=3D 3; var FCHAIN=3D4;
var olHideForm=3D0;  // parameter for hiding SELECT and ActiveX elements =
in IE5.5+
var olHautoFlag =3D 0;  // flags for over-riding VAUTO and HAUTO if =
corresponding
var olVautoFlag =3D 0;  // positioning commands are used on the command =
line
var hookPts =3D new Array(), postParse =3D new Array(), cmdLine =3D new =
Array(), runTime =3D new Array();
// for plugins
registerCommands('donothing,inarray,caparray,sticky,background,noclose,ca=
ption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolo=
r,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,=
closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,=
pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize=
,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap=
,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgcla=
ss,textfontclass,captionfontclass,closefontclass');

////////
// DEFAULT CONFIGURATION
// Settings you want everywhere are set here. All of this can also be
// changed on your html page or through an overLIB call.
////////
if (typeof ol_fgcolor=3D=3D'undefined') var ol_fgcolor=3D"white";
if (typeof ol_bgcolor=3D=3D'undefined') var ol_bgcolor=3D"#C8D995";
if (typeof ol_textcolor=3D=3D'undefined') var ol_textcolor=3D"#000000";
if (typeof ol_capcolor=3D=3D'undefined') var ol_capcolor=3D"#000000";
if (typeof ol_closecolor=3D=3D'undefined') var ol_closecolor=3D"red";
if (typeof ol_textfont=3D=3D'undefined') var =
ol_textfont=3D"Verdana,Arial,Helvetica";
if (typeof ol_captionfont=3D=3D'undefined') var =
ol_captionfont=3D"Verdana,Arial,Helvetica";
if (typeof ol_closefont=3D=3D'undefined') var =
ol_closefont=3D"Verdana,Arial,Helvetica";
if (typeof ol_textsize=3D=3D'undefined') var ol_textsize=3D"1";
if (typeof ol_captionsize=3D=3D'undefined') var ol_captionsize=3D"1";
if (typeof ol_closesize=3D=3D'undefined') var ol_closesize=3D"1";
if (typeof ol_width=3D=3D'undefined') var ol_width=3D"200";
if (typeof ol_border=3D=3D'undefined') var ol_border=3D"1";
if (typeof ol_cellpad=3D=3D'undefined') var ol_cellpad=3D5;
if (typeof ol_offsetx=3D=3D'undefined') var ol_offsetx=3D-50;
if (typeof ol_offsety=3D=3D'undefined') var ol_offsety=3D10;
if (typeof ol_text=3D=3D'undefined') var ol_text=3D"Default Text";
if (typeof ol_cap=3D=3D'undefined') var ol_cap=3D"";
if (typeof ol_sticky=3D=3D'undefined') var ol_sticky=3D0;
if (typeof ol_background=3D=3D'undefined') var ol_background=3D"";
if (typeof ol_close=3D=3D'undefined') var ol_close=3D"";
if (typeof ol_hpos=3D=3D'undefined') var ol_hpos=3DRIGHT;
if (typeof ol_status=3D=3D'undefined') var ol_status=3D"";
if (typeof ol_autostatus=3D=3D'undefined') var ol_autostatus=3D0;
if (typeof ol_height=3D=3D'undefined') var ol_height=3D-1;
if (typeof ol_snapx=3D=3D'undefined') var ol_snapx=3D0;
if (typeof ol_snapy=3D=3D'undefined') var ol_snapy=3D0;
if (typeof ol_fixx=3D=3D'undefined') var ol_fixx=3D-1;
if (typeof ol_fixy=3D=3D'undefined') var ol_fixy=3D-1;
if (typeof ol_relx=3D=3D'undefined') var ol_relx=3Dnull;
if (typeof ol_rely=3D=3D'undefined') var ol_rely=3Dnull;
if (typeof ol_fgbackground=3D=3D'undefined') var ol_fgbackground=3D"";
if (typeof ol_bgbackground=3D=3D'undefined') var ol_bgbackground=3D"";
if (typeof ol_padxl=3D=3D'undefined') var ol_padxl=3D1;
if (typeof ol_padxr=3D=3D'undefined') var ol_padxr=3D1;
if (typeof ol_padyt=3D=3D'undefined') var ol_padyt=3D1;
if (typeof ol_padyb=3D=3D'undefined') var ol_padyb=3D1;
if (typeof ol_fullhtml=3D=3D'undefined') var ol_fullhtml=3D0;
if (typeof ol_vpos=3D=3D'undefined') var ol_vpos=3DBELOW;
if (typeof ol_aboveheight=3D=3D'undefined') var ol_aboveheight=3D0;
if (typeof ol_capicon=3D=3D'undefined') var ol_capicon=3D"";
if (typeof ol_frame=3D=3D'undefined') var ol_frame=3Dself;
if (typeof ol_timeout=3D=3D'undefined') var ol_timeout=3D0;
if (typeof ol_function=3D=3D'undefined') var ol_function=3Dnull;
if (typeof ol_delay=3D=3D'undefined') var ol_delay=3D0;
if (typeof ol_hauto=3D=3D'undefined') var ol_hauto=3D0;
if (typeof ol_vauto=3D=3D'undefined') var ol_vauto=3D0;
if (typeof ol_closeclick=3D=3D'undefined') var ol_closeclick=3D0;
if (typeof ol_wrap=3D=3D'undefined') var ol_wrap=3D0;
if (typeof ol_followmouse=3D=3D'undefined') var ol_followmouse=3D1;
if (typeof ol_mouseoff=3D=3D'undefined') var ol_mouseoff=3D0;
if (typeof ol_closetitle=3D=3D'undefined') var ol_closetitle=3D'Close';
if (typeof ol_compatmode=3D=3D'undefined') var ol_compatmode=3D0;
if (typeof ol_css=3D=3D'undefined') var ol_css=3DCSSOFF;
if (typeof ol_fgclass=3D=3D'undefined') var ol_fgclass=3D"";
if (typeof ol_bgclass=3D=3D'undefined') var ol_bgclass=3D"";
if (typeof ol_textfontclass=3D=3D'undefined') var ol_textfontclass=3D"";
if (typeof ol_captionfontclass=3D=3D'undefined') var =
ol_captionfontclass=3D"";
if (typeof ol_closefontclass=3D=3D'undefined') var =
ol_closefontclass=3D"";

////////
// ARRAY CONFIGURATION
////////

// You can use these arrays to store popup text here instead of in the =
html.
if (typeof ol_texts=3D=3D'undefined') var ol_texts =3D new Array("Text =
0", "Text 1");
if (typeof ol_caps=3D=3D'undefined') var ol_caps =3D new Array("Caption =
0", "Caption 1");

////////
// END OF CONFIGURATION
// Don't change anything below this line, all configuration is above.
////////





////////
// INIT
////////
// Runtime variables init. Don't change for config!
var o3_text=3D"";
var o3_cap=3D"";
var o3_sticky=3D0;
var o3_background=3D"";
var o3_close=3D"Close";
var o3_hpos=3DRIGHT;
var o3_offsetx=3D2;
var o3_offsety=3D2;
var o3_fgcolor=3D"";
var o3_bgcolor=3D"";
var o3_textcolor=3D"";
var o3_capcolor=3D"";
var o3_closecolor=3D"";
var o3_width=3D100;
var o3_border=3D1;
var o3_cellpad=3D2;
var o3_status=3D"";
var o3_autostatus=3D0;
var o3_height=3D-1;
var o3_snapx=3D0;
var o3_snapy=3D0;
var o3_fixx=3D-1;
var o3_fixy=3D-1;
var o3_relx=3Dnull;
var o3_rely=3Dnull;
var o3_fgbackground=3D"";
var o3_bgbackground=3D"";
var o3_padxl=3D0;
var o3_padxr=3D0;
var o3_padyt=3D0;
var o3_padyb=3D0;
var o3_fullhtml=3D0;
var o3_vpos=3DBELOW;
var o3_aboveheight=3D0;
var o3_capicon=3D"";
var o3_textfont=3D"Verdana,Arial,Helvetica";
var o3_captionfont=3D"Verdana,Arial,Helvetica";
var o3_closefont=3D"Verdana,Arial,Helvetica";
var o3_textsize=3D"1";
var o3_captionsize=3D"1";
var o3_closesize=3D"1";
var o3_frame=3Dself;
var o3_timeout=3D0;
var o3_timerid=3D0;
var o3_allowmove=3D0;
var o3_function=3Dnull;
var o3_delay=3D0;
var o3_delayid=3D0;
var o3_hauto=3D0;
var o3_vauto=3D0;
var o3_closeclick=3D0;
var o3_wrap=3D0;
var o3_followmouse=3D1;
var o3_mouseoff=3D0;
var o3_closetitle=3D'';
var o3_compatmode=3D0;
var o3_css=3DCSSOFF;
var o3_fgclass=3D"";
var o3_bgclass=3D"";
var o3_textfontclass=3D"";
var o3_captionfontclass=3D"";
var o3_closefontclass=3D"";

// Display state variables
var o3_x =3D 0;
var o3_y =3D 0;
var o3_showingsticky =3D 0;
var o3_removecounter =3D 0;

// Our layer
var over =3D null;
var fnRef, hoveringSwitch =3D false;
var olHideDelay;

// Decide browser version
var isMac =3D (navigator.userAgent.indexOf("Mac") !=3D -1);
var olOp =3D (navigator.userAgent.toLowerCase().indexOf('opera') > -1 && =
document.createTextNode);  // Opera 7
var olNs4 =3D (navigator.appName=3D=3D'Netscape' && =
parseInt(navigator.appVersion) =3D=3D 4);
var olNs6 =3D (document.getElementById) ? true : false;
var olKq =3D (olNs6 && /konqueror/i.test(navigator.userAgent));
var olIe4 =3D (document.all) ? true : false;
var olIe5 =3D false;
var olIe55 =3D false; // Added additional variable to identify IE5.5+
var docRoot =3D 'document.body';

// Resize fix for NS4.x to keep track of layer
if (olNs4) {
	var oW =3D window.innerWidth;
	var oH =3D window.innerHeight;
	window.onresize =3D function() { if (oW !=3D window.innerWidth || oH =
!=3D window.innerHeight) location.reload(); }
}

// Microsoft Stupidity Check(tm).
if (olIe4) {
	var agent =3D navigator.userAgent;
	if (/MSIE/.test(agent)) {
		var versNum =3D parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);
		if (versNum >=3D 5){
			olIe5=3Dtrue;
			olIe55=3D(versNum>=3D5.5&&!olOp) ? true : false;
			if (olNs6) olNs6=3Dfalse;
		}
	}
	if (olNs6) olIe4 =3D false;
}

// Check for compatability mode.
if (document.compatMode && document.compatMode =3D=3D 'CSS1Compat') {
	docRoot=3D ((olIe4 && !olOp) ? 'document.documentElement' : docRoot);
}

// Add window onload handlers to indicate when all modules have been =
loaded
// For Netscape 6+ and Mozilla, uses addEventListener method on the =
window object
// For IE it uses the attachEvent method of the window object and for =
Netscape 4.x
// it sets the window.onload handler to the OLonload_handler function =
for Bubbling
if(window.addEventListener) =
window.addEventListener("load",OLonLoad_handler,false);
else if (window.attachEvent) =
window.attachEvent("onload",OLonLoad_handler);

var capExtent;

////////
// PUBLIC FUNCTIONS
////////

// overlib(arg0,...,argN)
// Loads parameters into global runtime variables.
function overlib() {
	if (!olLoaded || isExclusive(overlib.arguments)) return true;
	if (olCheckMouseCapture) olMouseCapture();
	if (over) {
		over =3D (typeof over.id !=3D 'string') ? =
o3_frame.document.all['overDiv'] : over;
		cClick();
	}

	// Load defaults to runtime.
  olHideDelay=3D0;
	o3_text=3Dol_text;
	o3_cap=3Dol_cap;
	o3_sticky=3Dol_sticky;
	o3_background=3Dol_background;
	o3_close=3Dol_close;
	o3_hpos=3Dol_hpos;
	o3_offsetx=3Dol_offsetx;
	o3_offsety=3Dol_offsety;
	o3_fgcolor=3Dol_fgcolor;
	o3_bgcolor=3Dol_bgcolor;
	o3_textcolor=3Dol_textcolor;
	o3_capcolor=3Dol_capcolor;
	o3_closecolor=3Dol_closecolor;
	o3_width=3Dol_width;
	o3_border=3Dol_border;
	o3_cellpad=3Dol_cellpad;
	o3_status=3Dol_status;
	o3_autostatus=3Dol_autostatus;
	o3_height=3Dol_height;
	o3_snapx=3Dol_snapx;
	o3_snapy=3Dol_snapy;
	o3_fixx=3Dol_fixx;
	o3_fixy=3Dol_fixy;
	o3_relx=3Dol_relx;
	o3_rely=3Dol_rely;
	o3_fgbackground=3Dol_fgbackground;
	o3_bgbackground=3Dol_bgbackground;
	o3_padxl=3Dol_padxl;
	o3_padxr=3Dol_padxr;
	o3_padyt=3Dol_padyt;
	o3_padyb=3Dol_padyb;
	o3_fullhtml=3Dol_fullhtml;
	o3_vpos=3Dol_vpos;
	o3_aboveheight=3Dol_aboveheight;
	o3_capicon=3Dol_capicon;
	o3_textfont=3Dol_textfont;
	o3_captionfont=3Dol_captionfont;
	o3_closefont=3Dol_closefont;
	o3_textsize=3Dol_textsize;
	o3_captionsize=3Dol_captionsize;
	o3_closesize=3Dol_closesize;
	o3_timeout=3Dol_timeout;
	o3_function=3Dol_function;
	o3_delay=3Dol_delay;
	o3_hauto=3Dol_hauto;
	o3_vauto=3Dol_vauto;
	o3_closeclick=3Dol_closeclick;
	o3_wrap=3Dol_wrap;
	o3_followmouse=3Dol_followmouse;
	o3_mouseoff=3Dol_mouseoff;
	o3_closetitle=3Dol_closetitle;
	o3_css=3Dol_css;
	o3_compatmode=3Dol_compatmode;
	o3_fgclass=3Dol_fgclass;
	o3_bgclass=3Dol_bgclass;
	o3_textfontclass=3Dol_textfontclass;
	o3_captionfontclass=3Dol_captionfontclass;
	o3_closefontclass=3Dol_closefontclass;

	setRunTimeVariables();

	fnRef =3D '';

	// Special for frame support, over must be reset...
	o3_frame =3D ol_frame;

	if(!(over=3DcreateDivContainer())) return false;

	parseTokens('o3_', overlib.arguments);
	if (!postParseChecks()) return false;

	if (o3_delay =3D=3D 0) {
		return runHook("olMain", FREPLACE);
 	} else {
		o3_delayid =3D setTimeout("runHook('olMain', FREPLACE)", o3_delay);
		return false;
	}
}

// Clears popups if appropriate
function nd(time) {
	if (olLoaded && !isExclusive()) {
		hideDelay(time);  // delay popup close if time specified

		if (o3_removecounter >=3D 1) { o3_showingsticky =3D 0 };

		if (o3_showingsticky =3D=3D 0) {
			o3_allowmove =3D 0;
			if (over !=3D null && o3_timerid =3D=3D 0) runHook("hideObject", =
FREPLACE, over);
		} else {
			o3_removecounter++;
		}
	}

	return true;
}

// The Close onMouseOver function for stickies
function cClick() {
	if (olLoaded) {
		runHook("hideObject", FREPLACE, over);
		o3_showingsticky =3D 0;
	}
	return false;
}

// Method for setting page specific defaults.
function overlib_pagedefaults() {
	parseTokens('ol_', overlib_pagedefaults.arguments);
}


////////
// OVERLIB MAIN FUNCTION
////////

// This function decides what it is we want to display and how we want =
it done.
function olMain() {
	var layerhtml, styleType;
 	runHook("olMain", FBEFORE);

	if (o3_background!=3D"" || o3_fullhtml) {
		// Use background instead of box.
		layerhtml =3D runHook('ol_content_background', FALTERNATE, o3_css, =
o3_text, o3_background, o3_fullhtml);
	} else {
		// They want a popup box.
		styleType =3D (pms[o3_css-1-pmStart] =3D=3D "cssoff" || =
pms[o3_css-1-pmStart] =3D=3D "cssclass");

		// Prepare popup background
		if (o3_fgbackground !=3D "") o3_fgbackground =3D =
"background=3D\""+o3_fgbackground+"\"";
		if (o3_bgbackground !=3D "") o3_bgbackground =3D (styleType ? =
"background=3D\""+o3_bgbackground+"\"" : o3_bgbackground);

		// Prepare popup colors
		if (o3_fgcolor !=3D "") o3_fgcolor =3D (styleType ? =
"bgcolor=3D\""+o3_fgcolor+"\"" : o3_fgcolor);
		if (o3_bgcolor !=3D "") o3_bgcolor =3D (styleType ? =
"bgcolor=3D\""+o3_bgcolor+"\"" : o3_bgcolor);

		// Prepare popup height
		if (o3_height > 0) o3_height =3D (styleType ? =
"height=3D\""+o3_height+"\"" : o3_height);
		else o3_height =3D "";

		// Decide which kinda box.
		if (o3_cap=3D=3D"") {
			// Plain
			layerhtml =3D runHook('ol_content_simple', FALTERNATE, o3_css, =
o3_text);
		} else {
			// With caption
			if (o3_sticky) {
				// Show close text
				layerhtml =3D runHook('ol_content_caption', FALTERNATE, o3_css, =
o3_text, o3_cap, o3_close);
			} else {
				// No close text
				layerhtml =3D runHook('ol_content_caption', FALTERNATE, o3_css, =
o3_text, o3_cap, "");
			}
		}
	}

	// We want it to stick!
	if (o3_sticky) {
		if (o3_timerid > 0) {
			clearTimeout(o3_timerid);
			o3_timerid =3D 0;
		}
		o3_showingsticky =3D 1;
		o3_removecounter =3D 0;
	}

	// Created a separate routine to generate the popup to make it easier
	// to implement a plugin capability
	if (!runHook("createPopup", FREPLACE, layerhtml)) return false;

	// Prepare status bar
	if (o3_autostatus > 0) {
		o3_status =3D o3_text;
		if (o3_autostatus > 1) o3_status =3D o3_cap;
	}

	// When placing the layer the first time, even stickies may be moved.
	o3_allowmove =3D 0;

	// Initiate a timer for timeout
	if (o3_timeout > 0) {
		if (o3_timerid > 0) clearTimeout(o3_timerid);
		o3_timerid =3D setTimeout("cClick()", o3_timeout);
	}

	// Show layer
	runHook("disp", FREPLACE, o3_status);
	runHook("olMain", FAFTER);

	return (olOp && event && event.type =3D=3D 'mouseover' && !o3_status) ? =
'' : (o3_status !=3D '');
}

////////
// LAYER GENERATION FUNCTIONS
////////
// These functions just handle popup content with tags that should =
adhere to the W3C standards specification.

// Makes simple table without caption
function ol_content_simple(text) {
	var cpIsMultiple =3D /,/.test(o3_cellpad);
	var txt =3D '<table width=3D"'+o3_width+ '" border=3D"0" =
cellpadding=3D"'+o3_border+'" cellspacing=3D"0" '+(o3_bgclass ? =
'class=3D"'+o3_bgclass+'"' : o3_bgcolor+' '+o3_height)+'><tr><td><table =
width=3D"100%" border=3D"0" '+((olNs4||!cpIsMultiple) ? =
'cellpadding=3D"'+o3_cellpad+'" ' : '')+'cellspacing=3D"0" '+(o3_fgclass =
? 'class=3D"'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' =
'+o3_height)+'><tr><td valign=3D"TOP"'+(o3_textfontclass ? ' =
class=3D"'+o3_textfontclass+'">' : ((!olNs4&&cpIsMultiple) ? ' =
style=3D"'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' =
: wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : =
wrapStr(1,o3_textsize))+'</td></tr></table></td></tr></table>';

	set_background("");
	return txt;
}

// Makes table with caption and optional close link
function ol_content_caption(text,title,close) {
	var nameId, txt, cpIsMultiple =3D /,/.test(o3_cellpad);
	var closing, closeevent;

	closing =3D "";
	closeevent =3D "onmouseover";
	if (o3_closeclick =3D=3D 1) closeevent =3D (o3_closetitle ? "title=3D'" =
+ o3_closetitle +"'" : "") + " onclick";
	if (o3_capicon !=3D "") {
	  nameId =3D ' hspace =3D \"5\"'+' align =3D \"middle\" alt =3D \"\"';
	  if (typeof o3_dragimg !=3D 'undefined' && o3_dragimg) nameId =3D' =
hspace=3D\"5\"'+' name=3D\"'+o3_dragimg+'\" id=3D\"'+o3_dragimg+'\" =
align=3D\"middle\" alt=3D\"Drag Enabled\" title=3D\"Drag Enabled\"';
	  o3_capicon =3D '<img src=3D\"'+o3_capicon+'\"'+nameId+' />';
	}

	if (close !=3D "")
		closing =3D '<td '+(!o3_compatmode && o3_closefontclass ? =
'class=3D"'+o3_closefontclass : 'align=3D"RIGHT')+'"><a =
href=3D"javascript:return '+fnRef+'cClick();"'+((o3_compatmode && =
o3_closefontclass) ? ' class=3D"' + o3_closefontclass + '" ' : ' =
')+closeevent+'=3D"return '+fnRef+'cClick();">'+(o3_closefontclass ? '' =
: wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass ? '' : =
wrapStr(1,o3_closesize,'close'))+'</a></td>';
	txt =3D '<table width=3D"'+o3_width+ '" border=3D"0" =
cellpadding=3D"'+o3_border+'" cellspacing=3D"0" '+(o3_bgclass ? =
'class=3D"'+o3_bgclass+'"' : o3_bgcolor+' '+o3_bgbackground+' =
'+o3_height)+'><tr><td><table width=3D"100%" border=3D"0" =
cellpadding=3D"2" cellspacing=3D"0"><tr><td'+(o3_captionfontclass ? ' =
class=3D"'+o3_captionfontclass+'">' : '>')+(o3_captionfontclass ? '' : =
'<b>'+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfo=
ntclass ? '' : =
wrapStr(1,o3_captionsize)+'</b>')+'</td>'+closing+'</tr></table><table =
width=3D"100%" border=3D"0" '+((olNs4||!cpIsMultiple) ? =
'cellpadding=3D"'+o3_cellpad+'" ' : '')+'cellspacing=3D"0" '+(o3_fgclass =
? 'class=3D"'+o3_fgclass+'"' : o3_fgcolor+' '+o3_fgbackground+' =
'+o3_height)+'><tr><td valign=3D"TOP"'+(o3_textfontclass ? ' =
class=3D"'+o3_textfontclass+'">' :((!olNs4&&cpIsMultiple) ? ' =
style=3D"'+setCellPadStr(o3_cellpad)+'">' : '>'))+(o3_textfontclass ? '' =
: wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : =
wrapStr(1,o3_textsize)) + '</td></tr></table></td></tr></table>';

	set_background("");
	return txt;
}

// Sets the background picture,padding and lots more. :)
function ol_content_background(text,picture,hasfullhtml) {
	if (hasfullhtml) {
		txt=3Dtext;
	} else {
		txt=3D'<table width=3D"'+o3_width+'" border=3D"0" cellpadding=3D"0" =
cellspacing=3D"0" height=3D"'+o3_height+'"><tr><td colspan=3D"3" =
height=3D"'+o3_padyt+'"></td></tr><tr><td =
width=3D"'+o3_padxl+'"></td><td valign=3D"TOP" =
width=3D"'+(o3_width-o3_padxl-o3_padxr)+(o3_textfontclass ? '" =
class=3D"'+o3_textfontclass : '')+'">'+(o3_textfontclass ? '' : =
wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass ? '' : =
wrapStr(1,o3_textsize))+'</td><td =
width=3D"'+o3_padxr+'"></td></tr><tr><td colspan=3D"3" =
height=3D"'+o3_padyb+'"></td></tr></table>';
	}

	set_background(picture);
	return txt;
}

// Loads a picture into the div.
function set_background(pic) {
	if (pic =3D=3D "") {
		if (olNs4) {
			over.background.src =3D null;
		} else if (over.style) {
			over.style.backgroundImage =3D "none";
		}
	} else {
		if (olNs4) {
			over.background.src =3D pic;
		} else if (over.style) {
			over.style.width=3Do3_width + 'px';
			over.style.backgroundImage =3D "url("+pic+")";
		}
	}
}

////////
// HANDLING FUNCTIONS
////////
var olShowId=3D-1;

// Displays the popup
function disp(statustext) {
	runHook("disp", FBEFORE);

	if (o3_allowmove =3D=3D 0) {
		runHook("placeLayer", FREPLACE);
		(olNs6&&olShowId<0) ? olShowId=3DsetTimeout("runHook('showObject', =
FREPLACE, over)", 1) : runHook("showObject", FREPLACE, over);
		o3_allowmove =3D (o3_sticky || o3_followmouse=3D=3D0) ? 0 : 1;
	}

	runHook("disp", FAFTER);

	if (statustext !=3D "") self.status =3D statustext;
}

// Creates the actual popup structure
function createPopup(lyrContent){
	runHook("createPopup", FBEFORE);

	if (o3_wrap) {
		var wd,ww,theObj =3D (olNs4 ? over : over.style);
		theObj.top =3D theObj.left =3D ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 =
? 'px' : 0);
		layerWrite(lyrContent);
		wd =3D (olNs4 ? over.clip.width : over.offsetWidth);
		if (wd > (ww=3DwindowWidth())) {
			lyrContent=3DlyrContent.replace(/\&nbsp;/g, ' ');
			o3_width=3Dww;
			o3_wrap=3D0;
		}
	}

	layerWrite(lyrContent);

	// Have to set o3_width for placeLayer() routine if o3_wrap is turned =
on
	if (o3_wrap) o3_width=3D(olNs4 ? over.clip.width : over.offsetWidth);

	runHook("createPopup", FAFTER, lyrContent);

	return true;
}

// Decides where we want the popup.
function placeLayer() {
	var placeX, placeY, widthFix =3D 0;

	// HORIZONTAL PLACEMENT, re-arranged to work in Safari
	if (o3_frame.innerWidth) widthFix=3D18;
	iwidth =3D windowWidth();

	// Horizontal scroll offset
	winoffset=3D(olIe4) ? eval('o3_frame.'+docRoot+'.scrollLeft') : =
o3_frame.pageXOffset;

	placeX =3D =
runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix);

	// VERTICAL PLACEMENT, re-arranged to work in Safari
	if (o3_frame.innerHeight) {
		iheight=3Do3_frame.innerHeight;
	} else if (eval('o3_frame.'+docRoot)&&eval("typeof =
o3_frame."+docRoot+".clientHeight=3D=3D'number'")&&eval('o3_frame.'+docRo=
ot+'.clientHeight')) {
		iheight=3Deval('o3_frame.'+docRoot+'.clientHeight');
	}

	// Vertical scroll offset
	scrolloffset=3D(olIe4) ? eval('o3_frame.'+docRoot+'.scrollTop') : =
o3_frame.pageYOffset;
	placeY =3D runHook('verticalPlacement',FCHAIN,iheight,scrolloffset);

	// Actually move the object.
	repositionTo(over, placeX, placeY);
}

// Moves the layer
function olMouseMove(e) {
	var e =3D (e) ? e : event;

	if (e.pageX) {
		o3_x =3D e.pageX;
		o3_y =3D e.pageY;
	} else if (e.clientX) {
		o3_x =3D eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');
		o3_y =3D eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');
	}

	if (o3_allowmove =3D=3D 1) runHook("placeLayer", FREPLACE);

	// MouseOut handler
	if (hoveringSwitch && !olNs4 && runHook("cursorOff", FREPLACE)) {
		(olHideDelay ? hideDelay(olHideDelay) : cClick());
		hoveringSwitch =3D !hoveringSwitch;
	}
}

// Fake function for 3.0 users.
function no_overlib() { return ver3fix; }

// Capture the mouse and chain other scripts.
function olMouseCapture() {
	capExtent =3D document;
	var fN, str =3D '', l, k, f, wMv, sS, mseHandler =3D olMouseMove;
	var re =3D /function[ ]*(\w*)\(/;

	wMv =3D (!olIe4 && window.onmousemove);
	if (document.onmousemove || wMv) {
		if (wMv) capExtent =3D window;
		f =3D capExtent.onmousemove.toString();
		fN =3D f.match(re);
		if (fN =3D=3D null) {
			str =3D f+'(e); ';
		} else if (fN[1] =3D=3D 'anonymous' || fN[1] =3D=3D 'olMouseMove' || =
(wMv && fN[1] =3D=3D 'onmousemove')) {
			if (!olOp && wMv) {
				l =3D f.indexOf('{')+1;
				k =3D f.lastIndexOf('}');
				sS =3D f.substring(l,k);
				if ((l =3D sS.indexOf('(')) !=3D -1) {
					sS =3D sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');
					if (eval("typeof " + sS + " =3D=3D 'undefined'")) =
window.onmousemove =3D null;
					else str =3D sS + '(e);';
				}
			}
			if (!str) {
				olCheckMouseCapture =3D false;
				return;
			}
		} else {
			if (fN[1]) str =3D fN[1]+'(e); ';
			else {
				l =3D f.indexOf('{')+1;
				k =3D f.lastIndexOf('}');
				str =3D f.substring(l,k) + '\n';
			}
		}
		str +=3D 'olMouseMove(e); ';
		mseHandler =3D new Function('e', str);
	}

	capExtent.onmousemove =3D mseHandler;
	if (olNs4) capExtent.captureEvents(Event.MOUSEMOVE);
}

////////
// PARSING FUNCTIONS
////////

// Does the actual command parsing.
function parseTokens(pf, ar) {
	// What the next argument is expected to be.
	var v, i, mode=3D-1, par =3D (pf !=3D 'ol_');
	var fnMark =3D (par && !ar.length ? 1 : 0);

	for (i =3D 0; i < ar.length; i++) {
		if (mode < 0) {
			// Arg is maintext,unless its a number between pmStart and pmUpper
			// then its a command.
			if (typeof ar[i] =3D=3D 'number' && ar[i] > pmStart && ar[i] < =
pmUpper) {
				fnMark =3D (par ? 1 : 0);
				i--;   // backup one so that the next block can parse it
			} else {
				switch(pf) {
					case 'ol_':
						ol_text =3D ar[i].toString();
						break;
					default:
						o3_text=3Dar[i].toString();
				}
			}
			mode =3D 0;
		} else {
			// Note: NS4 doesn't like switch cases with vars.
			if (ar[i] >=3D pmCount || ar[i]=3D=3DDONOTHING) { continue; }
			if (ar[i]=3D=3DINARRAY) { fnMark =3D 0; =
eval(pf+'text=3Dol_texts['+ar[++i]+'].toString()'); continue; }
			if (ar[i]=3D=3DCAPARRAY) { =
eval(pf+'cap=3Dol_caps['+ar[++i]+'].toString()'); continue; }
			if (ar[i]=3D=3DSTICKY) { if (pf!=3D'ol_') eval(pf+'sticky=3D1'); =
continue; }
			if (ar[i]=3D=3DBACKGROUND) { eval(pf+'background=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DNOCLOSE) { if (pf!=3D'ol_') opt_NOCLOSE(); continue; }
			if (ar[i]=3D=3DCAPTION) { =
eval(pf+"cap=3D'"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]=3D=3DCENTER || ar[i]=3D=3DLEFT || ar[i]=3D=3DRIGHT) { =
eval(pf+'hpos=3D'+ar[i]); if(pf!=3D'ol_') olHautoFlag=3D1; continue; }
			if (ar[i]=3D=3DOFFSETX) { eval(pf+'offsetx=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DOFFSETY) { eval(pf+'offsety=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DFGCOLOR) { eval(pf+'fgcolor=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DBGCOLOR) { eval(pf+'bgcolor=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DTEXTCOLOR) { eval(pf+'textcolor=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DCAPCOLOR) { eval(pf+'capcolor=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DCLOSECOLOR) { eval(pf+'closecolor=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DWIDTH) { eval(pf+'width=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DBORDER) { eval(pf+'border=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DCELLPAD) { =
i=3Dopt_MULTIPLEARGS(++i,ar,(pf+'cellpad')); continue; }
			if (ar[i]=3D=3DSTATUS) { =
eval(pf+"status=3D'"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]=3D=3DAUTOSTATUS) { eval(pf +'autostatus=3D('+pf+'autostatus =
=3D=3D 1) ? 0 : 1'); continue; }
			if (ar[i]=3D=3DAUTOSTATUSCAP) { eval(pf =
+'autostatus=3D('+pf+'autostatus =3D=3D 2) ? 0 : 2'); continue; }
			if (ar[i]=3D=3DHEIGHT) { =
eval(pf+'height=3D'+pf+'aboveheight=3D'+ar[++i]); continue; } // Same =
param again.
			if (ar[i]=3D=3DCLOSETEXT) { =
eval(pf+"close=3D'"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]=3D=3DSNAPX) { eval(pf+'snapx=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DSNAPY) { eval(pf+'snapy=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DFIXX) { eval(pf+'fixx=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DFIXY) { eval(pf+'fixy=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DRELX) { eval(pf+'relx=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DRELY) { eval(pf+'rely=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DFGBACKGROUND) { =
eval(pf+'fgbackground=3D"'+ar[++i]+'"'); continue; }
			if (ar[i]=3D=3DBGBACKGROUND) { =
eval(pf+'bgbackground=3D"'+ar[++i]+'"'); continue; }
			if (ar[i]=3D=3DPADX) { eval(pf+'padxl=3D'+ar[++i]); =
eval(pf+'padxr=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DPADY) { eval(pf+'padyt=3D'+ar[++i]); =
eval(pf+'padyb=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DFULLHTML) { if (pf!=3D'ol_') eval(pf+'fullhtml=3D1'); =
continue; }
			if (ar[i]=3D=3DBELOW || ar[i]=3D=3DABOVE) { eval(pf+'vpos=3D'+ar[i]); =
if (pf!=3D'ol_') olVautoFlag=3D1; continue; }
			if (ar[i]=3D=3DCAPICON) { eval(pf+'capicon=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DTEXTFONT) { =
eval(pf+"textfont=3D'"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]=3D=3DCAPTIONFONT) { =
eval(pf+"captionfont=3D'"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]=3D=3DCLOSEFONT) { =
eval(pf+"closefont=3D'"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]=3D=3DTEXTSIZE) { eval(pf+'textsize=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DCAPTIONSIZE) { eval(pf+'captionsize=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DCLOSESIZE) { eval(pf+'closesize=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DTIMEOUT) { eval(pf+'timeout=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DFUNCTION) { if (pf=3D=3D'ol_') { if (typeof =
ar[i+1]!=3D'number') { v=3Dar[++i]; ol_function=3D(typeof =
v=3D=3D'function' ? v : null); }} else {fnMark =3D 0; v =3D null; if =
(typeof ar[i+1]!=3D'number') v =3D ar[++i];  opt_FUNCTION(v); } =
continue; }
			if (ar[i]=3D=3DDELAY) { eval(pf+'delay=3D'+ar[++i]); continue; }
			if (ar[i]=3D=3DHAUTO) { eval(pf+'hauto=3D('+pf+'hauto =3D=3D 0) ? 1 : =
0'); continue; }
			if (ar[i]=3D=3DVAUTO) { eval(pf+'vauto=3D('+pf+'vauto =3D=3D 0) ? 1 : =
0'); continue; }
			if (ar[i]=3D=3DCLOSECLICK) { eval(pf +'closeclick=3D('+pf+'closeclick =
=3D=3D 0) ? 1 : 0'); continue; }
			if (ar[i]=3D=3DWRAP) { eval(pf +'wrap=3D('+pf+'wrap =3D=3D 0) ? 1 : =
0'); continue; }
			if (ar[i]=3D=3DFOLLOWMOUSE) { eval(pf =
+'followmouse=3D('+pf+'followmouse =3D=3D 1) ? 0 : 1'); continue; }
			if (ar[i]=3D=3DMOUSEOFF) { eval(pf =
+'mouseoff=3D('+pf+'mouseoff=3D=3D0) ? 1 : 0'); v=3Dar[i+1]; if (pf !=3D =
'ol_' && eval(pf+'mouseoff') && typeof v =3D=3D 'number' && (v < pmStart =
|| v > pmUpper)) olHideDelay=3Dar[++i]; continue; }
			if (ar[i]=3D=3DCLOSETITLE) { =
eval(pf+"closetitle=3D'"+escSglQuote(ar[++i])+"'"); continue; }
			if (ar[i]=3D=3DCSSOFF||ar[i]=3D=3DCSSCLASS) { =
eval(pf+'css=3D'+ar[i]); continue; }
			if (ar[i]=3D=3DCOMPATMODE) { =
eval(pf+'compatmode=3D('+pf+'compatmode=3D=3D0) ? 1 : 0'); continue; }
			if (ar[i]=3D=3DFGCLASS) { eval(pf+'fgclass=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DBGCLASS) { eval(pf+'bgclass=3D"'+ar[++i]+'"'); =
continue; }
			if (ar[i]=3D=3DTEXTFONTCLASS) { =
eval(pf+'textfontclass=3D"'+ar[++i]+'"'); continue; }
			if (ar[i]=3D=3DCAPTIONFONTCLASS) { =
eval(pf+'captionfontclass=3D"'+ar[++i]+'"'); continue; }
			if (ar[i]=3D=3DCLOSEFONTCLASS) { =
eval(pf+'closefontclass=3D"'+ar[++i]+'"'); continue; }
			i =3D parseCmdLine(pf, i, ar);
		}
	}

	if (fnMark && o3_function) o3_text =3D o3_function();

	if ((pf =3D=3D 'o3_') && o3_wrap) {
		o3_width =3D 0;

		var tReg=3D/<.*\n*>/ig;
		if (!tReg.test(o3_text)) o3_text =3D o3_text.replace(/[ ]+/g, =
'&nbsp;');
		if (!tReg.test(o3_cap))o3_cap =3D o3_cap.replace(/[ ]+/g, '&nbsp;');
	}
	if ((pf =3D=3D 'o3_') && o3_sticky) {
		if (!o3_close && (o3_frame !=3D ol_frame)) o3_close =3D ol_close;
		if (o3_mouseoff && (o3_frame =3D=3D ol_frame)) opt_NOCLOSE(' ');
	}
}


////////
// LAYER FUNCTIONS
////////

// Writes to a layer
function layerWrite(txt) {
	txt +=3D "\n";
	if (olNs4) {
		var lyr =3D o3_frame.document.layers['overDiv'].document
		lyr.write(txt)
		lyr.close()
	} else if (typeof over.innerHTML !=3D 'undefined') {
		if (olIe5 && isMac) over.innerHTML =3D '';
		over.innerHTML =3D txt;
	} else {
		range =3D o3_frame.document.createRange();
		range.setStartAfter(over);
		domfrag =3D range.createContextualFragment(txt);

		while (over.hasChildNodes()) {
			over.removeChild(over.lastChild);
		}

		over.appendChild(domfrag);
	}
}

// Make an object visible
function showObject(obj) {
	runHook("showObject", FBEFORE);

	var theObj=3D(olNs4 ? obj : obj.style);
	theObj.visibility =3D 'visible';

	runHook("showObject", FAFTER);
}

// Hides an object
function hideObject(obj) {
	runHook("hideObject", FBEFORE);

	var theObj=3D(olNs4 ? obj : obj.style);
	if (olNs6 && olShowId>0) { clearTimeout(olShowId); olShowId=3D0; }
	theObj.visibility =3D 'hidden';
	theObj.top =3D theObj.left =3D ((olIe4&&!olOp) ? 0 : -10000) + (!olNs4 =
? 'px' : 0);

	if (o3_timerid > 0) clearTimeout(o3_timerid);
	if (o3_delayid > 0) clearTimeout(o3_delayid);

	o3_timerid =3D 0;
	o3_delayid =3D 0;
	self.status =3D "";

	if (obj.onmouseout||obj.onmouseover) {
		if (olNs4) obj.releaseEvents(Event.MOUSEOUT || Event.MOUSEOVER);
		obj.onmouseout =3D obj.onmouseover =3D null;
	}

	runHook("hideObject", FAFTER);
}

// Move a layer
function repositionTo(obj, xL, yL) {
	var theObj=3D(olNs4 ? obj : obj.style);
	theObj.left =3D xL + (!olNs4 ? 'px' : 0);
	theObj.top =3D yL + (!olNs4 ? 'px' : 0);
}

// Check position of cursor relative to overDiv DIVision; mouseOut =
function
function cursorOff() {
	var left =3D parseInt(over.style.left);
	var top =3D parseInt(over.style.top);
	var right =3D left + (over.offsetWidth >=3D parseInt(o3_width) ? =
over.offsetWidth : parseInt(o3_width));
	var bottom =3D top + (over.offsetHeight >=3D o3_aboveheight ? =
over.offsetHeight : o3_aboveheight);

	if (o3_x < left || o3_x > right || o3_y < top || o3_y > bottom) return =
true;

	return false;
}


////////
// COMMAND FUNCTIONS
////////

// Calls callme or the default function.
function opt_FUNCTION(callme) {
	o3_text =3D (callme ? (typeof callme=3D=3D'string' ? =
(/.+\(.*\)/.test(callme) ? eval(callme) : callme) : callme()) : =
(o3_function ? o3_function() : 'No Function'));

	return 0;
}

// Handle hovering
function opt_NOCLOSE(unused) {
	if (!unused) o3_close =3D "";

	if (olNs4) {
		over.captureEvents(Event.MOUSEOUT || Event.MOUSEOVER);
		over.onmouseover =3D function () { if (o3_timerid > 0) { =
clearTimeout(o3_timerid); o3_timerid =3D 0; } }
		over.onmouseout =3D function (e) { if (olHideDelay) =
hideDelay(olHideDelay); else cClick(e); }
	} else {
		over.onmouseover =3D function () {hoveringSwitch =3D true; if =
(o3_timerid > 0) { clearTimeout(o3_timerid); o3_timerid =3D0; } }
	}

	return 0;
}

// Function to scan command line arguments for multiples
function opt_MULTIPLEARGS(i, args, parameter) {
  var k=3Di, re, pV, str=3D'';

  for(k=3Di; k<args.length; k++) {
		if(typeof args[k] =3D=3D 'number' && args[k]>pmStart) break;
		str +=3D args[k] + ',';
	}
	if (str) str =3D str.substring(0,--str.length);

	k--;  // reduce by one so the for loop this is in works correctly
	pV=3D(olNs4 && /cellpad/i.test(parameter)) ? str.split(',')[0] : str;
	eval(parameter + '=3D"' + pV + '"');

	return k;
}

// Remove &nbsp; in texts when done.
function nbspCleanup() {
	if (o3_wrap) {
		o3_text =3D o3_text.replace(/\&nbsp;/g, ' ');
		o3_cap =3D o3_cap.replace(/\&nbsp;/g, ' ');
	}
}

// Escape embedded single quotes in text strings
function escSglQuote(str) {
  return str.toString().replace(/'/g,"\\'");
}

// Onload handler for window onload event
function OLonLoad_handler(e) {
	var re =3D /\w+\(.*\)[;\s]+/g, olre =3D /overlib\(|nd\(|cClick\(/, fn, =
l, i;

	if(!olLoaded) olLoaded=3D1;

  // Remove it for Gecko based browsers
	if(window.removeEventListener && e.eventPhase =3D=3D 3) =
window.removeEventListener("load",OLonLoad_handler,false);
	else if(window.detachEvent) { // and for IE and Opera 4.x but execute =
calls to overlib, nd, or cClick()
		window.detachEvent("onload",OLonLoad_handler);
		var fN =3D document.body.getAttribute('onload');
		if (fN) {
			fN=3DfN.toString().match(re);
			if (fN && fN.length) {
				for (i=3D0; i<fN.length; i++) {
					if (/anonymous/.test(fN[i])) continue;
					while((l=3DfN[i].search(/\)[;\s]+/)) !=3D -1) {
						fn=3DfN[i].substring(0,l+1);
						fN[i] =3D fN[i].substring(l+2);
						if (olre.test(fn)) eval(fn);
					}
				}
			}
		}
	}
}

// Wraps strings in Layer Generation Functions with the correct tags
//    endWrap true(if end tag) or false if start tag
//    fontSizeStr - font size string such as '1' or '10px'
//    whichString is being wrapped -- 'text', 'caption', or 'close'
function wrapStr(endWrap,fontSizeStr,whichString) {
	var fontStr, fontColor, isClose=3D((whichString=3D=3D'close') ? 1 : 0), =
hasDims=3D/[%\-a-z]+$/.test(fontSizeStr);
	fontSizeStr =3D (olNs4) ? (!hasDims ? fontSizeStr : '1') : fontSizeStr;
	if (endWrap) return (hasDims&&!olNs4) ? (isClose ? '</span>' : =
'</div>') : '</font>';
	else {
		fontStr=3D'o3_'+whichString+'font';
		fontColor=3D'o3_'+((whichString=3D=3D'caption')? 'cap' : =
whichString)+'color';
		return (hasDims&&!olNs4) ? (isClose ? '<span style=3D"font-family: =
'+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; =
font-size: '+fontSizeStr+';">' : '<div style=3D"font-family: =
'+quoteMultiNameFonts(eval(fontStr))+'; color: '+eval(fontColor)+'; =
font-size: '+fontSizeStr+';">') : '<font face=3D"'+eval(fontStr)+'" =
color=3D"'+eval(fontColor)+'" size=3D"'+(parseInt(fontSizeStr)>7 ? '7' : =
fontSizeStr)+'">';
	}
}

// Quotes Multi word font names; needed for CSS Standards adherence in =
font-family
function quoteMultiNameFonts(theFont) {
	var v, pM=3DtheFont.split(',');
	for (var i=3D0; i<pM.length; i++) {
		v=3DpM[i];
		v=3Dv.replace(/^\s+/,'').replace(/\s+$/,'');
		if(/\s/.test(v) && !/['"]/.test(v)) {
			v=3D"\'"+v+"\'";
			pM[i]=3Dv;
		}
	}
	return pM.join();
}

// dummy function which will be overridden
function isExclusive(args) {
	return false;
}

// Sets cellpadding style string value
function setCellPadStr(parameter) {
	var Str=3D'', j=3D0, ary =3D new Array(), top, bottom, left, right;

	Str+=3D'padding: ';
	ary=3Dparameter.replace(/\s+/g,'').split(',');

	switch(ary.length) {
		case 2:
			top=3Dbottom=3Dary[j];
			left=3Dright=3Dary[++j];
			break;
		case 3:
			top=3Dary[j];
			left=3Dright=3Dary[++j];
			bottom=3Dary[++j];
			break;
		case 4:
			top=3Dary[j];
			right=3Dary[++j];
			bottom=3Dary[++j];
			left=3Dary[++j];
			break;
	}

	Str+=3D ((ary.length=3D=3D1) ? ary[0] + 'px;' : top + 'px ' + right + =
'px ' + bottom + 'px ' + left + 'px;');

	return Str;
}

// function will delay close by time milliseconds
function hideDelay(time) {
	if (time&&!o3_delay) {
		if (o3_timerid > 0) clearTimeout(o3_timerid);

		o3_timerid=3DsetTimeout("cClick()",(o3_timeout=3Dtime));
	}
}

// Was originally in the placeLayer() routine; separated out for future =
ease
function horizontalPlacement(browserWidth, horizontalScrollAmount, =
widthFix) {
	var placeX, iwidth=3DbrowserWidth, winoffset=3DhorizontalScrollAmount;
	var parsedWidth =3D parseInt(o3_width);

	if (o3_fixx > -1 || o3_relx !=3D null) {
		// Fixed position
		placeX=3D(o3_relx !=3D null ? ( o3_relx < 0 ? winoffset +o3_relx+ =
iwidth - parsedWidth - widthFix : winoffset+o3_relx) : o3_fixx);
	} else {
		// If HAUTO, decide what to use.
		if (o3_hauto =3D=3D 1) {
			if ((o3_x - winoffset) > (iwidth / 2)) {
				o3_hpos =3D LEFT;
			} else {
				o3_hpos =3D RIGHT;
			}
		}

		// From mouse
		if (o3_hpos =3D=3D CENTER) { // Center
			placeX =3D o3_x+o3_offsetx-(parsedWidth/2);

			if (placeX < winoffset) placeX =3D winoffset;
		}

		if (o3_hpos =3D=3D RIGHT) { // Right
			placeX =3D o3_x+o3_offsetx;

			if ((placeX+parsedWidth) > (winoffset+iwidth - widthFix)) {
				placeX =3D iwidth+winoffset - parsedWidth - widthFix;
				if (placeX < 0) placeX =3D 0;
			}
		}
		if (o3_hpos =3D=3D LEFT) { // Left
			placeX =3D o3_x-o3_offsetx-parsedWidth;
			if (placeX < winoffset) placeX =3D winoffset;
		}

		// Snapping!
		if (o3_snapx > 1) {
			var snapping =3D placeX % o3_snapx;

			if (o3_hpos =3D=3D LEFT) {
				placeX =3D placeX - (o3_snapx+snapping);
			} else {
				// CENTER and RIGHT
				placeX =3D placeX+(o3_snapx - snapping);
			}

			if (placeX < winoffset) placeX =3D winoffset;
		}
	}

	return placeX;
}

// was originally in the placeLayer() routine; separated out for future =
ease
function verticalPlacement(browserHeight,verticalScrollAmount) {
	var placeY, iheight=3DbrowserHeight, =
scrolloffset=3DverticalScrollAmount;
	var parsedHeight=3D(o3_aboveheight ? parseInt(o3_aboveheight) : (olNs4 =
? over.clip.height : over.offsetHeight));

	if (o3_fixy > -1 || o3_rely !=3D null) {
		// Fixed position
		placeY=3D(o3_rely !=3D null ? (o3_rely < 0 ? =
scrolloffset+o3_rely+iheight - parsedHeight : scrolloffset+o3_rely) : =
o3_fixy);
	} else {
		// If VAUTO, decide what to use.
		if (o3_vauto =3D=3D 1) {
			if ((o3_y - scrolloffset) > (iheight / 2) && o3_vpos =3D=3D BELOW && =
(o3_y + parsedHeight + o3_offsety - (scrolloffset + iheight) > 0)) {
				o3_vpos =3D ABOVE;
			} else if (o3_vpos =3D=3D ABOVE && (o3_y - (parsedHeight + =
o3_offsety) - scrolloffset < 0)) {
				o3_vpos =3D BELOW;
			}
		}

		// From mouse
		if (o3_vpos =3D=3D ABOVE) {
			if (o3_aboveheight =3D=3D 0) o3_aboveheight =3D parsedHeight;

			placeY =3D o3_y - (o3_aboveheight+o3_offsety);
			if (placeY < scrolloffset) placeY =3D scrolloffset;
		} else {
			// BELOW
			placeY =3D o3_y+o3_offsety;
		}

		// Snapping!
		if (o3_snapy > 1) {
			var snapping =3D placeY % o3_snapy;

			if (o3_aboveheight > 0 && o3_vpos =3D=3D ABOVE) {
				placeY =3D placeY - (o3_snapy+snapping);
			} else {
				placeY =3D placeY+(o3_snapy - snapping);
			}

			if (placeY < scrolloffset) placeY =3D scrolloffset;
		}
	}

	return placeY;
}

// checks positioning flags
function checkPositionFlags() {
	if (olHautoFlag) olHautoFlag =3D o3_hauto=3D0;
	if (olVautoFlag) olVautoFlag =3D o3_vauto=3D0;
	return true;
}

// get Browser window width
function windowWidth() {
	var w;
	if (o3_frame.innerWidth) w=3Do3_frame.innerWidth;
	else if (eval('o3_frame.'+docRoot)&&eval("typeof =
o3_frame."+docRoot+".clientWidth=3D=3D'number'")&&eval('o3_frame.'+docRoo=
t+'.clientWidth'))
		w=3Deval('o3_frame.'+docRoot+'.clientWidth');
	return w;
}

// create the div container for popup content if it doesn't exist
function createDivContainer(id,frm,zValue) {
	id =3D (id || 'overDiv'), frm =3D (frm || o3_frame), zValue =3D (zValue =
|| 1000);
	var objRef, divContainer =3D layerReference(id);

	if (divContainer =3D=3D null) {
		if (olNs4) {
			divContainer =3D frm.document.layers[id] =3D new =
Layer(window.innerWidth, frm);
			objRef =3D divContainer;
		} else {
			var body =3D (olIe4 ? frm.document.all.tags('BODY')[0] : =
frm.document.getElementsByTagName("BODY")[0]);
			if (olIe4&&!document.getElementById) {
				body.insertAdjacentHTML("beforeEnd",'<div id=3D"'+id+'"></div>');
				divContainer=3DlayerReference(id);
			} else {
				divContainer =3D frm.document.createElement("DIV");
				divContainer.id =3D id;
				body.appendChild(divContainer);
			}
			objRef =3D divContainer.style;
		}

		objRef.position =3D 'absolute';
		objRef.visibility =3D 'hidden';
		objRef.zIndex =3D zValue;
		if (olIe4&&!olOp) objRef.left =3D objRef.top =3D '0px';
		else objRef.left =3D objRef.top =3D  -10000 + (!olNs4 ? 'px' : 0);
	}

	return divContainer;
}

// get reference to a layer with ID=3Did
function layerReference(id) {
	return (olNs4 ? o3_frame.document.layers[id] : (document.all ? =
o3_frame.document.all[id] : o3_frame.document.getElementById(id)));
}
////////
//  UTILITY FUNCTIONS
////////

// Checks if something is a function.
function isFunction(fnRef) {
	var rtn =3D true;

	if (typeof fnRef =3D=3D 'object') {
		for (var i =3D 0; i < fnRef.length; i++) {
			if (typeof fnRef[i]=3D=3D'function') continue;
			rtn =3D false;
			break;
		}
	} else if (typeof fnRef !=3D 'function') {
		rtn =3D false;
	}

	return rtn;
}

// Converts an array into an argument string for use in eval.
function argToString(array, strtInd, argName) {
	var jS =3D strtInd, aS =3D '', ar =3D array;
	argName=3D(argName ? argName : 'ar');

	if (ar.length > jS) {
		for (var k =3D jS; k < ar.length; k++) aS +=3D argName+'['+k+'], ';
		aS =3D aS.substring(0, aS.length-2);
	}

	return aS;
}

// Places a hook in the correct position in a hook point.
function reOrder(hookPt, fnRef, order) {
	var newPt =3D new Array(), match, i, j;

	if (!order || typeof order =3D=3D 'undefined' || typeof order =3D=3D =
'number') return hookPt;

	if (typeof order=3D=3D'function') {
		if (typeof fnRef=3D=3D'object') {
			newPt =3D newPt.concat(fnRef);
		} else {
			newPt[newPt.length++]=3DfnRef;
		}

		for (i =3D 0; i < hookPt.length; i++) {
			match =3D false;
			if (typeof fnRef =3D=3D 'function' && hookPt[i] =3D=3D fnRef) {
				continue;
			} else {
				for(j =3D 0; j < fnRef.length; j++) if (hookPt[i] =3D=3D fnRef[j]) {
					match =3D true;
					break;
				}
			}
			if (!match) newPt[newPt.length++] =3D hookPt[i];
		}

		newPt[newPt.length++] =3D order;

	} else if (typeof order =3D=3D 'object') {
		if (typeof fnRef =3D=3D 'object') {
			newPt =3D newPt.concat(fnRef);
		} else {
			newPt[newPt.length++] =3D fnRef;
		}

		for (j =3D 0; j < hookPt.length; j++) {
			match =3D false;
			if (typeof fnRef =3D=3D 'function' && hookPt[j] =3D=3D fnRef) {
				continue;
			} else {
				for (i =3D 0; i < fnRef.length; i++) if (hookPt[j] =3D=3D fnRef[i]) =
{
					match =3D true;
					break;
				}
			}
			if (!match) newPt[newPt.length++]=3DhookPt[j];
		}

		for (i =3D 0; i < newPt.length; i++) hookPt[i] =3D newPt[i];
		newPt.length =3D 0;

		for (j =3D 0; j < hookPt.length; j++) {
			match =3D false;
			for (i =3D 0; i < order.length; i++) {
				if (hookPt[j] =3D=3D order[i]) {
					match =3D true;
					break;
				}
			}
			if (!match) newPt[newPt.length++] =3D hookPt[j];
		}
		newPt =3D newPt.concat(order);
	}

	hookPt =3D newPt;

	return hookPt;
}

////////
//  PLUGIN ACTIVATION FUNCTIONS
////////

// Runs plugin functions to set runtime variables.
function setRunTimeVariables(){
	if (typeof runTime !=3D 'undefined' && runTime.length) {
		for (var k =3D 0; k < runTime.length; k++) {
			runTime[k]();
		}
	}
}

// Runs plugin functions to parse commands.
function parseCmdLine(pf, i, args) {
	if (typeof cmdLine !=3D 'undefined' && cmdLine.length) {
		for (var k =3D 0; k < cmdLine.length; k++) {
			var j =3D cmdLine[k](pf, i, args);
			if (j >- 1) {
				i =3D j;
				break;
			}
		}
	}

	return i;
}

// Runs plugin functions to do things after parse.
function postParseChecks(pf,args){
	if (typeof postParse !=3D 'undefined' && postParse.length) {
		for (var k =3D 0; k < postParse.length; k++) {
			if (postParse[k](pf,args)) continue;
			return false;  // end now since have an error
		}
	}
	return true;
}


////////
//  PLUGIN REGISTRATION FUNCTIONS
////////

// Registers commands and creates constants.
function registerCommands(cmdStr) {
	if (typeof cmdStr!=3D'string') return;

	var pM =3D cmdStr.split(',');
	pms =3D pms.concat(pM);

	for (var i =3D 0; i< pM.length; i++) {
		eval(pM[i].toUpperCase()+'=3D'+pmCount++);
	}
}

// Registers no-parameter commands
function registerNoParameterCommands(cmdStr) {
	if (!cmdStr && typeof cmdStr !=3D 'string') return;
	pmt=3D(!pmt) ? cmdStr : pmt + ',' + cmdStr;
}

// Register a function to hook at a certain point.
function registerHook(fnHookTo, fnRef, hookType, optPm) {
	var hookPt, last =3D typeof optPm;

	if (fnHookTo =3D=3D 'plgIn'||fnHookTo =3D=3D 'postParse') return;
	if (typeof hookPts[fnHookTo] =3D=3D 'undefined') hookPts[fnHookTo] =3D =
new FunctionReference();

	hookPt =3D hookPts[fnHookTo];

	if (hookType !=3D null) {
		if (hookType =3D=3D FREPLACE) {
			hookPt.ovload =3D fnRef;  // replace normal overlib routine
			if (fnHookTo.indexOf('ol_content_') > -1) =
hookPt.alt[pms[CSSOFF-1-pmStart]]=3DfnRef;

		} else if (hookType =3D=3D FBEFORE || hookType =3D=3D FAFTER) {
			var hookPt=3D(hookType =3D=3D 1 ? hookPt.before : hookPt.after);

			if (typeof fnRef =3D=3D 'object') {
				hookPt =3D hookPt.concat(fnRef);
			} else {
				hookPt[hookPt.length++] =3D fnRef;
			}

			if (optPm) hookPt =3D reOrder(hookPt, fnRef, optPm);

		} else if (hookType =3D=3D FALTERNATE) {
			if (last=3D=3D'number') hookPt.alt[pms[optPm-1-pmStart]] =3D fnRef;
		} else if (hookType =3D=3D FCHAIN) {
			hookPt =3D hookPt.chain;
			if (typeof fnRef=3D=3D'object') hookPt=3DhookPt.concat(fnRef); // add =
other functions
			else hookPt[hookPt.length++]=3DfnRef;
		}

		return;
	}
}

// Register a function that will set runtime variables.
function registerRunTimeFunction(fn) {
	if (isFunction(fn)) {
		if (typeof fn =3D=3D 'object') {
			runTime =3D runTime.concat(fn);
		} else {
			runTime[runTime.length++] =3D fn;
		}
	}
}

// Register a function that will handle command parsing.
function registerCmdLineFunction(fn){
	if (isFunction(fn)) {
		if (typeof fn =3D=3D 'object') {
			cmdLine =3D cmdLine.concat(fn);
		} else {
			cmdLine[cmdLine.length++] =3D fn;
		}
	}
}

// Register a function that does things after command parsing.
function registerPostParseFunction(fn){
	if (isFunction(fn)) {
		if (typeof fn =3D=3D 'object') {
			postParse =3D postParse.concat(fn);
		} else {
			postParse[postParse.length++] =3D fn;
		}
	}
}

////////
//  PLUGIN REGISTRATION FUNCTIONS
////////

// Runs any hooks registered.
function runHook(fnHookTo, hookType) {
	var l =3D hookPts[fnHookTo], k, rtnVal =3D null, optPm, arS, ar =3D =
runHook.arguments;

	if (hookType =3D=3D FREPLACE) {
		arS =3D argToString(ar, 2);

		if (typeof l =3D=3D 'undefined' || !(l =3D l.ovload)) rtnVal =3D =
eval(fnHookTo+'('+arS+')');
		else rtnVal =3D eval('l('+arS+')');

	} else if (hookType =3D=3D FBEFORE || hookType =3D=3D FAFTER) {
		if (typeof l !=3D 'undefined') {
			l=3D(hookType =3D=3D 1 ? l.before : l.after);

			if (l.length) {
				arS =3D argToString(ar, 2);
				for (var k =3D 0; k < l.length; k++) eval('l[k]('+arS+')');
			}
		}
	} else if (hookType =3D=3D FALTERNATE) {
		optPm =3D ar[2];
		arS =3D argToString(ar, 3);

		if (typeof l =3D=3D 'undefined' || (l =3D l.alt[pms[optPm-1-pmStart]]) =
=3D=3D 'undefined') {
			rtnVal =3D eval(fnHookTo+'('+arS+')');
		} else {
			rtnVal =3D eval('l('+arS+')');
		}
	} else if (hookType =3D=3D FCHAIN) {
		arS=3DargToString(ar,2);
		l=3Dl.chain;

		for (k=3Dl.length; k > 0; k--) =
if((rtnVal=3Deval('l[k-1]('+arS+')'))!=3Dvoid(0)) break;
	}

	return rtnVal;
}

////////
// OBJECT CONSTRUCTORS
////////

// Object for handling hooks.
function FunctionReference() {
	this.ovload =3D null;
	this.before =3D new Array();
	this.after =3D new Array();
	this.alt =3D new Array();
	this.chain =3D new Array();
}

// Object for simple access to the overLIB version used.
// Examples: simpleversion:351 major:3 minor:5 revision:1
function Info(version, prerelease) {
	this.version =3D version;
	this.prerelease =3D prerelease;

	this.simpleversion =3D Math.round(this.version*100);
	this.major =3D parseInt(this.simpleversion / 100);
	this.minor =3D parseInt(this.simpleversion / 10) - this.major * 10;
	this.revision =3D parseInt(this.simpleversion) - this.major * 100 - =
this.minor * 10;
	this.meets =3D meets;
}

// checks for Core Version required
function meets(reqdVersion) {
	return (!reqdVersion) ? false : this.simpleversion >=3D =
Math.round(100*parseFloat(reqdVersion));
}


////////
// STANDARD REGISTRATIONS
////////
registerHook("ol_content_simple", ol_content_simple, FALTERNATE, =
CSSOFF);
registerHook("ol_content_caption", ol_content_caption, FALTERNATE, =
CSSOFF);
registerHook("ol_content_background", ol_content_background, FALTERNATE, =
CSSOFF);
registerHook("ol_content_simple", ol_content_simple, FALTERNATE, =
CSSCLASS);
registerHook("ol_content_caption", ol_content_caption, FALTERNATE, =
CSSCLASS);
registerHook("ol_content_background", ol_content_background, FALTERNATE, =
CSSCLASS);
registerPostParseFunction(checkPositionFlags);
registerHook("hideObject", nbspCleanup, FAFTER);
registerHook("horizontalPlacement", horizontalPlacement, FCHAIN);
registerHook("verticalPlacement", verticalPlacement, FCHAIN);
if (olNs4||(olIe5&&isMac)||olKq) olLoaded=3D1;
registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hau=
to,vauto,closeclick,wrap,followmouse,mouseoff,compatmode');
///////
// ESTABLISH MOUSECAPTURING
///////

// Capture events, alt. diffuses the overlib function.
var olCheckMouseCapture=3Dtrue;
if ((olNs4 || olNs6 || olIe4)) {
	olMouseCapture();
} else {
	overlib =3D no_overlib;
	nd =3D no_overlib;
	ver3fix =3D true;
}

------=_NextPart_000_01D0_01CECD2F.1079D560
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.cactuspro.com/infos.js

var i =3D 1 + parseInt(Math.random() * (1));=0A=
=0A=
if (window.location.pathname.substr(0, 8) =3D=3D "/encyclo")=0A=
	var googlead =3D "\=0A=
<script type=3D\"text/javascript\"><!--\n\=0A=
google_ad_client =3D \"pub-4848356093440257\";\n\=0A=
google_ad_width =3D 234;\n\=0A=
google_ad_height =3D 60;\n\=0A=
google_ad_format =3D \"234x60_as\";\n\=0A=
google_color_border =3D \"E2FFE4\";\n\=0A=
google_color_bg =3D \"FFFFFF\";\n\=0A=
google_color_link =3D \"0000FF\";\n\=0A=
google_color_url =3D \"008000\";\n\=0A=
google_color_text =3D \"000000\";\n\=0A=
//--><\/script>\n\=0A=
<script type=3D\"text/javascript\"\n\=0A=
  src=3D\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\n\=0A=
<\/script>\n\=0A=
"=0A=
else if (window.location.pathname.substr(0, 8) =3D=3D "/photos/")=0A=
	var googlead =3D "\=0A=
<script type=3D\"text/javascript\"><!--\n\=0A=
google_ad_client =3D \"pub-4848356093440257\";\n\=0A=
google_ad_width =3D 125;\n\=0A=
google_ad_height =3D 125;\n\=0A=
google_ad_slot =3D 6030959153;\n\=0A=
//--><\/script>\n\=0A=
<script type=3D\"text/javascript\"\n\=0A=
  src=3D\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\n\=0A=
<\/script>\n\=0A=
"=0A=
else=0A=
	var googlead =3D "\=0A=
<script type=3D\"text/javascript\"><!--\n\=0A=
google_ad_client =3D \"pub-4848356093440257\";\n\=0A=
google_ad_width =3D 234;\n\=0A=
google_ad_height =3D 60;\n\=0A=
google_ad_slot =3D \"2251901122\";\n\=0A=
//--><\/script>\n\=0A=
<script type=3D\"text/javascript\"\n\=0A=
  src=3D\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\n\=0A=
<\/script>\n\=0A=
"=0A=
=0A=
var googlefirefoxad =3D "<small style=3D\"width: 200px;\">Ce site =
s'affichera mieux et plus vite avec un navigateur moderne qui respecte =
les standards (<a =
href=3D\"/articles/hors-sujet:surtout-pas-internet-explorer-et-outlook\" =
title=3D\"Pourquoi Mozilla Firefox\">plus d'infos ici</a>), comme =
Mozilla Firefox&nbsp;:</small>\=0A=
<script type=3D\"text/javascript\"><!--\n\=0A=
google_ad_client =3D \"pub-4848356093440257\";\n\=0A=
google_ad_width =3D 110;\n\=0A=
google_ad_height =3D 32;\n\=0A=
google_ad_format =3D \"110x32_as_rimg\";\n\=0A=
google_cpa_choice =3D \"CAAQm4X7zwEaCLiCaAp7VchNKM2JwXU\";\n\=0A=
//--><\/script>\n\=0A=
<script type=3D\"text/javascript\" =
src=3D\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\n\=0A=
<\/script>\n\=0A=
"=0A=
=0A=
var infocf =3D "<a href=3D\"/clic.php?url=3Dwww.epines-lespinet.fr/\" =
title=3D\"Les Epines de Lespinet\" target=3D\"_top\"><img =
src=3D\"/infos/images/epines-lespinet_150x60.jpg\" width=3D\"150\" =
height=3D\"60\" border=3D\"0\" alt=3D\"Les Epines de Lespinet\"></a>"=0A=
=0A=
if (i =3D=3D 1) {=0A=
	document.write(infocf);=0A=
} else {=0A=
    Nom =3D navigator.appName;=0A=
    if (Nom =3D=3D 'Microsoft Internet Explorer' && i =3D=3D 2) {=0A=
        document.write(googlefirefoxad);=0A=
    } else {=0A=
        document.write(googlead);=0A=
    }=0A=
}=0A=

------=_NextPart_000_01D0_01CECD2F.1079D560--
