From: "Saved by Windows Internet Explorer 8"
Subject: Mike Wong - Home
Date: Tue, 11 Oct 2011 17:06:28 -0400
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CC8838.1DD5D1C0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7601.17609

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mike-wong.ch/

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Mike Wong - =
Home</TITLE>
<META content=3D"text/html; charset=3DUTF-8" http-equiv=3DContent-Type>
<META name=3Dkeywords=20
content=3D"Fast food asiatique sur place emport=C3=A9 nourriture saine =
et =C3=A9quilibr=C3=A9e cuisiner devant vous 24/24 7/7 cuisine =
non-stop">
<META name=3Ddescription content=3D"Site Internet de Mike-Wong">
<META name=3Dabstract=20
content=3D"Fast food asiatique sur place emport=C3=A9 nourriture saine =
et =C3=A9quilibr=C3=A9e cuisiner devant vous 24/24 7/7 ">
<META content=3DFR http-equiv=3DContent-Language>
<META name=3Dauthor content=3D"Guillaume Foehr - =
guillaume.foehr@yahoo.fr">
<META name=3Ddistribution content=3DGlobal>
<META name=3Dcopyright content=3D"Finale S.A | Mike-Wong S.A =C2=A9">
<META name=3Drobots content=3DFOLLOW,INDEX><!-- DEBUT DU JAVASCRIPT =
POPUP =
-------------------------------------------------------------------------=
----------------------><LINK=20
rel=3Dstylesheet type=3Dtext/css =
href=3D"http://mike-wong.ch/css_mike_wong.css">
<SCRIPT type=3Dtext/javascript=20
src=3D"http://mike-wong.ch/src/adapter/shadowbox-base.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://mike-wong.ch/src/shadowbox.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript=20
src=3D"http://mike-wong.ch/Scripts/swfobject_modified.js"></SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
=0A=
Shadowbox.loadSkin('classic', 'src/skin');=0A=
Shadowbox.loadLanguage('en', 'src/lang');=0A=
Shadowbox.loadPlayer(['flv', 'html', 'iframe', 'img', 'qt', 'swf', =
'wmp'], 'src/player');=0A=
=0A=
window.onload =3D function(){=0A=
=0A=
    Shadowbox.init();=0A=
=0A=
    /**=0A=
     * Note: The following function call is not necessary in your own =
project.=0A=
     * It is only used here to set up the demonstrations on this page.=0A=
     */=0A=
    initDemos();=0A=
=0A=
};=0A=
=0A=
</SCRIPT>
<!-- FIN DU JAVASCRIPT POPUP =
-------------------------------------------------------------------------=
------------------------------><LINK=20
rel=3Dstylesheet type=3Dtext/css =
href=3D"http://mike-wong.ch/css_mike_wong.css">
<META name=3DGENERATOR content=3D"MSHTML 8.00.7601.17655"></HEAD>
<BODY>
<DIV id=3Dcontener>
<DIV id=3Dheader><!-- <h1>Sur place ou =C3=A0 l=E2=80=99emporter</h1>=0A=
          <h2>  livraison =C3=A0 domicile uniquement =C3=A0 Gen=C3=A8ve  =
par "Xpress Meal"</h2> --></DIV>
<DIV id=3Dnavigation>
<UL>
  <LI><A href=3D"http://mike-wong.ch/pilori.html">Le pilori</A></LI>
  <LI><A href=3D"http://mike-wong.ch/recrute.html">Mike-Wong =
recrute</A></LI>
  <LI><A href=3D"http://mike-wong.ch/liens.html">Liens</A></LI>
  <LI><A href=3D"http://mike-wong.ch/forum_travaux.html"=20
  target=3D_blank>Forum</A></LI>
  <LI><A href=3D"mailto:pierre.turtschi@mike-wong.ch">Contact</A></LI>
  <LI><A href=3D"http://mike-wong.ch/article_presse.html">Articles de=20
  presse</A></LI>
  <LI><A =
href=3D"http://mike-wong.ch/historique.html">Historique</A></LI>
  <LI><A href=3D"http://mike-wong.ch/galerie.html">Galerie</A></LI>
  <LI><A href=3D"http://mike-wong.ch/nos_cartes.html">Produits</A></LI>
  <LI><A href=3D"http://mike-wong.ch/index.html"=20
?class=3D"selected">Home</A></LI></UL></DIV>
<DIV id=3Dcontener_content>
<DIV id=3Dmenu_content>
<UL>
  <LI><A class=3Dselected =
href=3D"http://mike-wong.ch/index.html">Home</A></LI>
  <LI><A href=3D"http://mike-wong.ch/m1.html">Mike-Wong I =
<BR>Gen=C3=A8ve </A></LI>
  <LI><A href=3D"http://mike-wong.ch/m2.html">Mike-Wong =
II<BR>Gen=C3=A8ve </A></LI>
  <LI><A href=3D"http://mike-wong.ch/mwf.html">Mike-Wong=20
<BR>Fribourg</A></LI></UL></DIV>
<DIV id=3Dcontent>
<DIV id=3Dcontent_galerie><A title=3D"Personnel accueillant"=20
href=3D"http://mike-wong.ch/images/mwf_team.jpg" rel=3Dshadowbox><IMG=20
id=3D"Devanture - Fribourg" border=3D0 name=3D"Staff - Fribourg"=20
src=3D"http://mike-wong.ch/images/mwf_team_small.jpg"> </A><A=20
title=3D"Aliments sains" =
href=3D"http://mike-wong.ch/images/aliments.jpg"=20
rel=3Dshadowbox><IMG id=3D"Equipe - Fribourg" border=3D0 name=3D"Equipe =
- Fribourg"=20
src=3D"http://mike-wong.ch/images/aliments_small.jpg"> </A><A=20
title=3D"Cuisini=C3=A8re exp=C3=A9riment=C3=A9e" =
href=3D"http://mike-wong.ch/images/cuisiniere.jpg"=20
rel=3Dshadowbox><IMG id=3D"Comptoir - Fribourg" border=3D0 =
name=3D"Comptoir - Fribourg"=20
src=3D"http://mike-wong.ch/images/cuisiniere_small.jpg"> </A></DIV><BR>
<P class=3Dadresse>Boulevard James-Fazy 11, 1201 Gen=C3=A8ve</P>
<P class=3Dtelephone>7/7 11h00 - 23h00 | T=C3=A9l : 022 731 49 =
25</P><BR>
<P class=3Dadresse>Rue du Conseil-G=C3=A9neral 20, 1205 Gen=C3=A8ve</P>
<P class=3Dtelephone>7/7 11h00 - 23h00 | Ven - Sam 11h00 - 24h00</P>
<P class=3Dtelephone>t=C3=A9l : 022 800 15 03</P><BR>
<P class=3Dadresse>Boulevard de P=C3=A9rolles 7, 1700 Fribourg </P>
<P class=3Dtelephone>7/7 11h00 - 23h00 | t=C3=A9l : 026 322 21 =
56</P><BR>
<P>Nous sommes un =C2=AB Fast-Food =C2=BB pas comme les autres. Il nous =
manque le c=C3=B4t=C3=A9 =C2=AB=20
p=C3=A9jorative =C2=BB Ce qui est =C2=AB fast =C2=BB chez nous, =
c=E2=80=99est surtout la pr=C3=A9paration rapide,=20
sur mesure, d=E2=80=99un plat asiatique, succulent, =C3=A9quilibr=C3=A9, =
digeste et savoureux avec=20
des ingr=C3=A9dients frais, devant vos yeux. Le concept =C2=AB Fast =
=C2=BB concerne aussi le=20
service, puisque vous =C3=AAtes oblig=C3=A9s de commander =C3=A0 la =
caisse, de payer=20
imm=C3=A9diatement et chercher votre plat =C3=A0 la caisse. L =
=E2=80=99avantage est que vous ne=20
soyez pas contraint d=E2=80=99attendre la serveuse pour payer ou pour =
commander, vous=20
=C3=AAtes libre de vos mouvements, vous =C3=AAtes libre de vous asseoir =
o=C3=B9 =C3=A7a vous pla=C3=AEt.=20
L=E2=80=99inconv=C3=A9nient du libre service est, =C3=A0 notre avis, =
largement compens=C3=A9 Autre=20
point important =C3=A0 relever : chez nous, vous ne manger pas dans les =
emballages=20
jetable, mais comme dans un resto classique, dans la vraie vaisselle. =
</P>
<P><BR></P>
<P><A href=3D"http://www.xpressmeal.ch/" target=3D_blank><IMG border=3D0 =

alt=3D"xpress meal" src=3D"http://mike-wong.ch/images/xpresse_meal.jpg" =
width=3D370=20
height=3D51></A><SMALL><A style=3D"TEXT-ALIGN: left; COLOR: #0000ff" =
class=3Dgooglemap=20
href=3D"http://maps.google.fr/?ie=3DUTF8&amp;ll=3D46.207308,6.13981&amp;s=
pn=3D0,0.002572&amp;z=3D19&amp;layer=3Dc&amp;cbll=3D46.207423,6.139933&am=
p;panoid=3Dp0iDIqPup8-fenBnivGXfQ&amp;cbp=3D12,296.81,,0,4.16&amp;source=3D=
embed">=20
</A></SMALL></P></DIV></DIV>
<DIV id=3Dfooter>
<P>=C2=A9 Mike-Wong S.A - 2010</P>
<SCRIPT type=3Dtext/javascript src=3D""></SCRIPT>
</DIV></DIV>
<SCRIPT=20
type=3Dtext/javascript>=0A=
<!--=0A=
swfobject.registerObject("FlashID");=0A=
//-->=0A=
</SCRIPT>
</BODY></HTML>

------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://mike-wong.ch/images/mwf_team_small.jpg

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
PrUFbAqz2b/EdD4lj5icWripxHxMy5//2Q==

------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://mike-wong.ch/images/aliments_small.jpg

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

------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://mike-wong.ch/images/cuisiniere_small.jpg

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
4+dRf26KQHetUUDrWm/kPHXMLiymp//Z

------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://mike-wong.ch/images/xpresse_meal.jpg

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
mp//2Q==

------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mike-wong.ch/css_mike_wong.css

* {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; PADDING-TOP: 0px
}
BODY {
	BACKGROUND-IMAGE: url(images/background_style.jpg); BACKGROUND-REPEAT: =
repeat-x
}
#contener {
	POSITION: relative; WIDTH: 800px; MARGIN-LEFT: auto; MARGIN-RIGHT: auto
}
#header {
	BACKGROUND-IMAGE: url(images/logo.gif); BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: right 50%; HEIGHT: 179px
}
H1 {
	TEXT-ALIGN: right; PADDING-RIGHT: 32px; FONT-FAMILY: Verdana, Arial, =
Helvetica, sans-serif; COLOR: #ffffff; FONT-SIZE: 14px; PADDING-TOP: =
134px
}
H2 {
	TEXT-ALIGN: right; PADDING-RIGHT: 30px; FONT-FAMILY: Verdana, Arial, =
Helvetica, sans-serif; COLOR: #ffffff; FONT-SIZE: 8px; PADDING-TOP: 5px
}
#navigation {
	POSITION: absolute; HEIGHT: 24px; RIGHT: 0px
}
#navigation UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: right; =
LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
#navigation LI {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: right; =
LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
#navigation LI A {
	BORDER-BOTTOM: #cccccc 1px; TEXT-ALIGN: center; BORDER-LEFT: #fff 1px; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #ffffff; PADDING-LEFT: 10px; =
PADDING-RIGHT: 10px; DISPLAY: block; FONT-FAMILY: Verdana, Arial, =
Helvetica, sans-serif; HEIGHT: 13px; COLOR: #000000; MARGIN-LEFT: 5px; =
FONT-SIZE: 9px; BORDER-TOP: #fff 1px; BORDER-RIGHT: #fff 1px; =
TEXT-DECORATION: none; PADDING-TOP: 5px
}
#navigation A.selected {
	BACKGROUND-COLOR: #ccc; COLOR: #000
}
#navigation LI A:hover {
	BACKGROUND-IMAGE: url(../images/puce_menu.gif); BACKGROUND-REPEAT: =
no-repeat
}
#navigation LI A:active {
	BACKGROUND-IMAGE: url(../images/puce_menu_active.gif); =
BACKGROUND-COLOR: #000000; COLOR: #ffffff
}
#contener_content {
	PADDING-TOP: 70px
}
#menu_content {
	WIDTH: 97px; PADDING-RIGHT: 4px; FLOAT: left
}
#menu_content UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
#menu_content LI {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
#menu_content LI {
	PADDING-BOTTOM: 5px
}
#content_sous_colonne UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: circle; MARGIN: 0px; =
PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 10px
}
#content_sous_colonne LI {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: circle; MARGIN: 0px; =
PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 10px
}
#menu_content A {
	TEXT-ALIGN: left; PADDING-LEFT: 2px; DISPLAY: block; FONT-FAMILY: =
Verdana, Arial, Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 9px; =
TEXT-DECORATION: none
}
#menu_content A.selected {
	BACKGROUND-COLOR: #ccc; COLOR: #000
}
#menu_content A:hover {
	BACKGROUND-IMAGE: url(../images/puce_sous_menu.jpg)
}
#menu_content LI A:active {
	BACKGROUND-IMAGE: url(../images/puce_sous_menu_active.jpg); =
BACKGROUND-COLOR: #000000; COLOR: #ffffff
}
#content {
	TEXT-ALIGN: center; PADDING-BOTTOM: 20px; WIDTH: 372px; FLOAT: left
}
#content_sous_colonne {
	MARGIN-TOP: 10px; PADDING-LEFT: 10px; WIDTH: 176px; FLOAT: right
}
#content_sous_colonne LI {
	PADDING-BOTTOM: 14px; MARGIN-TOP: 10px; FLOAT: left
}
#content_galerie {
	DISPLAY: block
}
#content_links {
	BACKGROUND-COLOR: #ffcc00; HEIGHT: 22px
}
.produit {
	PADDING-BOTTOM: 20px; PADDING-LEFT: 100px; COLOR: #000; MARGIN-LEFT: =
20px
}
.adresse {
	TEXT-ALIGN: center; LINE-HEIGHT: 1px; COLOR: #000; FONT-WEIGHT: bold
}
.titre {
	TEXT-ALIGN: left; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; =
COLOR: #000; FONT-SIZE: 10px; FONT-WEIGHT: bold
}
.telephone {
	TEXT-ALIGN: center; LINE-HEIGHT: 5px; COLOR: #000
}
.googlemap {
	TEXT-ALIGN: center; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; =
COLOR: #000000; FONT-SIZE: 10px
}
.pilori {
	TEXT-ALIGN: left; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; =
COLOR: #000000; FONT-SIZE: 10px
}
.pilori_couleur {
	BACKGROUND-IMAGE: url(images/boutton_pilori_big_03.gif); TEXT-ALIGN: =
left; BACKGROUND-REPEAT: no-repeat; FONT-FAMILY: Verdana, Arial, =
Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 10px
}
.image {
	TEXT-ALIGN: center; TEXT-DECORATION: none
}
P {
	TEXT-ALIGN: justify; FONT-FAMILY: Verdana, Arial, Helvetica, =
sans-serif; COLOR: #000000; FONT-SIZE: 10px; PADDING-TOP: 10px
}
#footer {
	BORDER-BOTTOM: red 0px solid; BORDER-LEFT: red 0px solid; CLEAR: both; =
BORDER-TOP: red 1px solid; BORDER-RIGHT: red 0px solid
}
#footer P {
	TEXT-ALIGN: right; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; =
COLOR: #000000; FONT-SIZE: 10px
}
A {
	COLOR: #000000; TEXT-DECORATION: none
}

------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mike-wong.ch/css_mike_wong.css

* {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; PADDING-TOP: 0px
}
BODY {
	BACKGROUND-IMAGE: url(images/background_style.jpg); BACKGROUND-REPEAT: =
repeat-x
}
#contener {
	POSITION: relative; WIDTH: 800px; MARGIN-LEFT: auto; MARGIN-RIGHT: auto
}
#header {
	BACKGROUND-IMAGE: url(images/logo.gif); BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: right 50%; HEIGHT: 179px
}
H1 {
	TEXT-ALIGN: right; PADDING-RIGHT: 32px; FONT-FAMILY: Verdana, Arial, =
Helvetica, sans-serif; COLOR: #ffffff; FONT-SIZE: 14px; PADDING-TOP: =
134px
}
H2 {
	TEXT-ALIGN: right; PADDING-RIGHT: 30px; FONT-FAMILY: Verdana, Arial, =
Helvetica, sans-serif; COLOR: #ffffff; FONT-SIZE: 8px; PADDING-TOP: 5px
}
#navigation {
	POSITION: absolute; HEIGHT: 24px; RIGHT: 0px
}
#navigation UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: right; =
LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
#navigation LI {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: right; =
LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
#navigation LI A {
	BORDER-BOTTOM: #cccccc 1px; TEXT-ALIGN: center; BORDER-LEFT: #fff 1px; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #ffffff; PADDING-LEFT: 10px; =
PADDING-RIGHT: 10px; DISPLAY: block; FONT-FAMILY: Verdana, Arial, =
Helvetica, sans-serif; HEIGHT: 13px; COLOR: #000000; MARGIN-LEFT: 5px; =
FONT-SIZE: 9px; BORDER-TOP: #fff 1px; BORDER-RIGHT: #fff 1px; =
TEXT-DECORATION: none; PADDING-TOP: 5px
}
#navigation A.selected {
	BACKGROUND-COLOR: #ccc; COLOR: #000
}
#navigation LI A:hover {
	BACKGROUND-IMAGE: url(../images/puce_menu.gif); BACKGROUND-REPEAT: =
no-repeat
}
#navigation LI A:active {
	BACKGROUND-IMAGE: url(../images/puce_menu_active.gif); =
BACKGROUND-COLOR: #000000; COLOR: #ffffff
}
#contener_content {
	PADDING-TOP: 70px
}
#menu_content {
	WIDTH: 97px; PADDING-RIGHT: 4px; FLOAT: left
}
#menu_content UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
#menu_content LI {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: =
0px; PADDING-RIGHT: 0px; LIST-STYLE-IMAGE: none; PADDING-TOP: 0px
}
#menu_content LI {
	PADDING-BOTTOM: 5px
}
#content_sous_colonne UL {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: circle; MARGIN: 0px; =
PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 10px
}
#content_sous_colonne LI {
	PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: circle; MARGIN: 0px; =
PADDING-LEFT: 20px; PADDING-RIGHT: 0px; PADDING-TOP: 10px
}
#menu_content A {
	TEXT-ALIGN: left; PADDING-LEFT: 2px; DISPLAY: block; FONT-FAMILY: =
Verdana, Arial, Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 9px; =
TEXT-DECORATION: none
}
#menu_content A.selected {
	BACKGROUND-COLOR: #ccc; COLOR: #000
}
#menu_content A:hover {
	BACKGROUND-IMAGE: url(../images/puce_sous_menu.jpg)
}
#menu_content LI A:active {
	BACKGROUND-IMAGE: url(../images/puce_sous_menu_active.jpg); =
BACKGROUND-COLOR: #000000; COLOR: #ffffff
}
#content {
	TEXT-ALIGN: center; PADDING-BOTTOM: 20px; WIDTH: 372px; FLOAT: left
}
#content_sous_colonne {
	MARGIN-TOP: 10px; PADDING-LEFT: 10px; WIDTH: 176px; FLOAT: right
}
#content_sous_colonne LI {
	PADDING-BOTTOM: 14px; MARGIN-TOP: 10px; FLOAT: left
}
#content_galerie {
	DISPLAY: block
}
#content_links {
	BACKGROUND-COLOR: #ffcc00; HEIGHT: 22px
}
.produit {
	PADDING-BOTTOM: 20px; PADDING-LEFT: 100px; COLOR: #000; MARGIN-LEFT: =
20px
}
.adresse {
	TEXT-ALIGN: center; LINE-HEIGHT: 1px; COLOR: #000; FONT-WEIGHT: bold
}
.titre {
	TEXT-ALIGN: left; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; =
COLOR: #000; FONT-SIZE: 10px; FONT-WEIGHT: bold
}
.telephone {
	TEXT-ALIGN: center; LINE-HEIGHT: 5px; COLOR: #000
}
.googlemap {
	TEXT-ALIGN: center; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; =
COLOR: #000000; FONT-SIZE: 10px
}
.pilori {
	TEXT-ALIGN: left; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; =
COLOR: #000000; FONT-SIZE: 10px
}
.pilori_couleur {
	BACKGROUND-IMAGE: url(images/boutton_pilori_big_03.gif); TEXT-ALIGN: =
left; BACKGROUND-REPEAT: no-repeat; FONT-FAMILY: Verdana, Arial, =
Helvetica, sans-serif; COLOR: #000000; FONT-SIZE: 10px
}
.image {
	TEXT-ALIGN: center; TEXT-DECORATION: none
}
P {
	TEXT-ALIGN: justify; FONT-FAMILY: Verdana, Arial, Helvetica, =
sans-serif; COLOR: #000000; FONT-SIZE: 10px; PADDING-TOP: 10px
}
#footer {
	BORDER-BOTTOM: red 0px solid; BORDER-LEFT: red 0px solid; CLEAR: both; =
BORDER-TOP: red 1px solid; BORDER-RIGHT: red 0px solid
}
#footer P {
	TEXT-ALIGN: right; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; =
COLOR: #000000; FONT-SIZE: 10px
}
A {
	COLOR: #000000; TEXT-DECORATION: none
}

------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mike-wong.ch/src/adapter/shadowbox-base.js

/**=0A=
 * A base library for Shadowbox used as a standalone (without another =
base=0A=
 * library/adapter combination).=0A=
 *=0A=
 * This file is part of Shadowbox.=0A=
 *=0A=
 * Shadowbox is an online media viewer application that supports all of =
the=0A=
 * web's most popular media publishing formats. Shadowbox is written =
entirely=0A=
 * in JavaScript and CSS and is highly customizable. Using Shadowbox, =
website=0A=
 * authors can showcase a wide assortment of media in all major browsers =
without=0A=
 * navigating users away from the linking page.=0A=
 *=0A=
 * Shadowbox is released under version 3.0 of the Creative Commons =
Attribution-=0A=
 * Noncommercial-Share Alike license. This means that it is absolutely =
free=0A=
 * for personal, noncommercial use provided that you 1) make attribution =
to the=0A=
 * author and 2) release any derivative work under the same or a similar=0A=
 * license.=0A=
 *=0A=
 * If you wish to use Shadowbox for commercial purposes, licensing =
information=0A=
 * can be found at http://mjijackson.com/shadowbox/.=0A=
 *=0A=
 * @author      Michael J. I. Jackson <mjijackson@gmail.com>=0A=
 * @copyright   2007-2008 Michael J. I. Jackson=0A=
 * @license     http://creativecommons.org/licenses/by-nc-sa/3.0/=0A=
 * @version     SVN: $Id: shadowbox-base.js 103 2008-06-27 06:19:21Z =
mjijackson $=0A=
 */=0A=
=0A=
// create the Shadowbox object first=0A=
var Shadowbox =3D {};=0A=
=0A=
Shadowbox.lib =3D function(){=0A=
=0A=
    // local style camelizing for speed=0A=
    var styleCache =3D {};=0A=
    var camelRe =3D /(-[a-z])/gi;=0A=
    var camelFn =3D function(m, a){=0A=
        return a.charAt(1).toUpperCase();=0A=
    };=0A=
    var toCamel =3D function(style){=0A=
        var camel;=0A=
        if(!(camel =3D styleCache[style])){=0A=
            camel =3D styleCache[style] =3D style.replace(camelRe, =
camelFn);=0A=
        }=0A=
        return camel;=0A=
    };=0A=
=0A=
    var view =3D document.defaultView;=0A=
    var alphaRe =3D /alpha\([^\)]*\)/gi;=0A=
=0A=
    /**=0A=
     * Sets the opacity of the given element to the specified level.=0A=
     *=0A=
     * @param   {HTMLElement}   el          The element=0A=
     * @param   {Number}        opacity     The opacity to use=0A=
     * @return  void=0A=
     * @private=0A=
     * @static=0A=
     */=0A=
    var setOpacity =3D function(el, opacity){=0A=
        var s =3D el.style;=0A=
        if(window.ActiveXObject){ // IE=0A=
            s.zoom =3D 1; // give "layout"=0A=
            s.filter =3D (s.filter || '').replace(alphaRe, '') +=0A=
                (opacity =3D=3D 1 ? '' : ' alpha(opacity=3D' + (opacity =
* 100) + ')');=0A=
        }else{=0A=
            s.opacity =3D opacity;=0A=
        }=0A=
    };=0A=
=0A=
    return {=0A=
=0A=
        adapter: 'standalone',=0A=
=0A=
        /**=0A=
         * Gets the value of the style on the given element. This =
function=0A=
         * adapted from Ext.Element.getStyle().=0A=
         *=0A=
         * @param   {HTMLElement}   el      The DOM element=0A=
         * @param   {String}        style   The name of the style (e.g. =
margin-top)=0A=
         * @return  {mixed}                 The value of the given style=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        getStyle: function(){=0A=
            return view && view.getComputedStyle=0A=
                ? function(el, style){=0A=
                    var v, cs, camel;=0A=
                    if(style =3D=3D 'float') style =3D 'cssFloat';=0A=
                    if(v =3D el.style[style]) return v;=0A=
                    if(cs =3D view.getComputedStyle(el, '')){=0A=
                        return cs[toCamel(style)];=0A=
                    }=0A=
                    return null;=0A=
                }=0A=
                : function(el, style){=0A=
                    var v, cs, camel;=0A=
                    if(style =3D=3D 'opacity'){=0A=
                        if(typeof el.style.filter =3D=3D 'string'){=0A=
                            var m =3D =
el.style.filter.match(/alpha\(opacity=3D(.+)\)/i);=0A=
                            if(m){=0A=
                                var fv =3D parseFloat(m[1]);=0A=
                                if(!isNaN(fv)) return (fv ? fv / 100 : =
0);=0A=
                            }=0A=
                        }=0A=
                        return 1;=0A=
                    }else if(style =3D=3D 'float'){=0A=
                        style =3D 'styleFloat';=0A=
                    }=0A=
                    var camel =3D toCamel(style);=0A=
                    if(v =3D el.style[camel]) return v;=0A=
                    if(cs =3D el.currentStyle) return cs[camel];=0A=
                    return null;=0A=
                };=0A=
        }(),=0A=
=0A=
        /**=0A=
         * Sets the style on the given element to the given value. May =
be an=0A=
         * object to specify multiple values. This function adapted from=0A=
         * Ext.Element.setStyle().=0A=
         *=0A=
         * @param   {HTMLElement}   el      The DOM element=0A=
         * @param   {String/Object} style   The name of the style to set =
if a=0A=
         *                                  string, or an object of name =
=3D>=0A=
         *                                  value pairs=0A=
         * @param   {String}        value   The value to set the given =
style to=0A=
         * @return  void=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        setStyle: function(el, style, value){=0A=
            if(typeof style =3D=3D 'string'){=0A=
                var camel =3D toCamel(style);=0A=
                if(camel =3D=3D 'opacity'){=0A=
                    setOpacity(el, value);=0A=
                }else{=0A=
                    el.style[camel] =3D value;=0A=
                }=0A=
            }else{=0A=
                for(var s in style){=0A=
                    this.setStyle(el, s, style[s]);=0A=
                }=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
         * Gets a reference to the given element.=0A=
         *=0A=
         * @param   {String/HTMLElement}    el      The element to fetch=0A=
         * @return  {HTMLElement}                   A reference to the =
element=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        get: function(el){=0A=
            return typeof el =3D=3D 'string' ? =
document.getElementById(el) : el;=0A=
        },=0A=
=0A=
        /**=0A=
         * Removes an element from the DOM.=0A=
         *=0A=
         * @param   {HTMLElement}       el      The element to remove=0A=
         * @return  void=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        remove: function(el){=0A=
            el.parentNode.removeChild(el);=0A=
        },=0A=
=0A=
        /**=0A=
         * Gets the target of the given event. The event object passed =
will be=0A=
         * the same object that is passed to listeners registered with=0A=
         * addEvent().=0A=
         *=0A=
         * @param   {mixed}             e       The event object=0A=
         * @return  {HTMLElement}               The event's target =
element=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        getTarget: function(e){=0A=
            var t =3D e.target ? e.target : e.srcElement;=0A=
            return t.nodeType =3D=3D 3 ? t.parentNode : t;=0A=
        },=0A=
=0A=
        /**=0A=
         * Gets the page X/Y coordinates of the mouse event in an [x, y] =
array.=0A=
         * The page coordinates should be relative to the document, and =
not the=0A=
         * viewport. The event object provided here will be the same =
object that=0A=
         * is passed to listeners registered with addEvent().=0A=
         *=0A=
         * @param   {mixed}         e       The event object=0A=
         * @return  {Array}                 The page X/Y coordinates=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        getPageXY: function(e){=0A=
            var x =3D e.pageX || (e.clientX +=0A=
                (document.documentElement.scrollLeft || =
document.body.scrollLeft));=0A=
            var y =3D e.pageY || (e.clientY +=0A=
                (document.documentElement.scrollTop || =
document.body.scrollTop));=0A=
            return [x, y];=0A=
        },=0A=
=0A=
        /**=0A=
         * Prevents the event's default behavior. The event object here =
will=0A=
         * be the same object that is passed to listeners registered with=0A=
         * addEvent().=0A=
         *=0A=
         * @param   {mixed}             e       The event object=0A=
         * @return  void=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        preventDefault: function(e){=0A=
            if(e.preventDefault){=0A=
                e.preventDefault();=0A=
            }else{=0A=
                e.returnValue =3D false;=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
         * Gets the key code of the given event object (keydown). The =
event=0A=
         * object here will be the same object that is passed to =
listeners=0A=
         * registered with addEvent().=0A=
         *=0A=
         * @param   {mixed}         e       The event object=0A=
         * @return  {Number}                The key code of the event=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        keyCode: function(e){=0A=
            return e.which ? e.which : e.keyCode;=0A=
        },=0A=
=0A=
        /**=0A=
         * Adds an event listener to the given element. It is expected =
that this=0A=
         * function will be passed the event as its first argument.=0A=
         *=0A=
         * @param   {HTMLElement}   el          The DOM element to =
listen to=0A=
         * @param   {String}        name        The name of the event to =
register=0A=
         *                                      (i.e. 'click', 'scroll', =
etc.)=0A=
         * @param   {Function}      handler     The event handler =
function=0A=
         * @return  void=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        addEvent: function(el, name, handler){=0A=
            if(el.addEventListener){=0A=
                el.addEventListener(name, handler, false);=0A=
            }else if(el.attachEvent){=0A=
                el.attachEvent('on' + name, handler);=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
         * Removes an event listener from the given element.=0A=
         *=0A=
         * @param   {HTMLElement}   el          The DOM element to stop =
listening to=0A=
         * @param   {String}        name        The name of the event to =
stop=0A=
         *                                      listening for (i.e. =
'click')=0A=
         * @param   {Function}      handler     The event handler =
function=0A=
         * @return  void=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        removeEvent: function(el, name, handler){=0A=
            if(el.removeEventListener){=0A=
                el.removeEventListener(name, handler, false);=0A=
            }else if(el.detachEvent){=0A=
                el.detachEvent('on' + name, handler);=0A=
            }=0A=
        },=0A=
=0A=
        /**=0A=
         * Appends an HTML fragment to the given element.=0A=
         *=0A=
         * @param   {HTMLElement}       el      The element to append to=0A=
         * @param   {String}            html    The HTML fragment to use=0A=
         * @return  void=0A=
         * @public=0A=
         * @static=0A=
         */=0A=
        append: function(el, html){=0A=
            if(el.insertAdjacentHTML){=0A=
                el.insertAdjacentHTML('BeforeEnd', html);=0A=
            }else if(el.lastChild){=0A=
                var range =3D el.ownerDocument.createRange();=0A=
                range.setStartAfter(el.lastChild);=0A=
                var frag =3D range.createContextualFragment(html);=0A=
                el.appendChild(frag);=0A=
            }else{=0A=
                el.innerHTML =3D html;=0A=
            }=0A=
        }=0A=
=0A=
    };=0A=
=0A=
}();=0A=

------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mike-wong.ch/src/shadowbox.js

/**=0A=
 * The Shadowbox class.=0A=
 *=0A=
 * This file is part of Shadowbox.=0A=
 *=0A=
 * Shadowbox is an online media viewer application that supports all of =
the=0A=
 * web's most popular media publishing formats. Shadowbox is written =
entirely=0A=
 * in JavaScript and CSS and is highly customizable. Using Shadowbox, =
website=0A=
 * authors can showcase a wide assortment of media in all major browsers =
without=0A=
 * navigating users away from the linking page.=0A=
 *=0A=
 * Shadowbox is released under version 3.0 of the Creative Commons =
Attribution-=0A=
 * Noncommercial-Share Alike license. This means that it is absolutely =
free=0A=
 * for personal, noncommercial use provided that you 1) make attribution =
to the=0A=
 * author and 2) release any derivative work under the same or a similar=0A=
 * license.=0A=
 *=0A=
 * If you wish to use Shadowbox for commercial purposes, licensing =
information=0A=
 * can be found at http://mjijackson.com/shadowbox/.=0A=
 *=0A=
 * @author      Michael J. I. Jackson <mjijackson@gmail.com>=0A=
 * @copyright   2007-2008 Michael J. I. Jackson=0A=
 * @license     http://creativecommons.org/licenses/by-nc-sa/3.0/=0A=
 * @version     SVN: $Id: shadowbox.js 108 2008-07-11 04:19:01Z =
mjijackson $=0A=
 */=0A=
=0A=
if(typeof Shadowbox =3D=3D 'undefined'){=0A=
    throw 'Unable to load Shadowbox, no base library adapter found';=0A=
}=0A=
=0A=
/**=0A=
 * The Shadowbox class. Used to display different media on a web page =
using a=0A=
 * Lightbox-like effect.=0A=
 *=0A=
 * Useful resources:=0A=
 *=0A=
 * - http://www.alistapart.com/articles/byebyeembed=0A=
 * - http://www.w3.org/TR/html401/struct/objects.html=0A=
 * - http://www.dyn-web.com/dhtml/iframes/=0A=
 * - http://www.apple.com/quicktime/player/specs.html=0A=
 * - http://www.apple.com/quicktime/tutorials/embed2.html=0A=
 * - =
http://www.howtocreate.co.uk/wrongWithIE/?chapter=3Dnavigator.plugins=0A=
 * - http://msdn.microsoft.com/en-us/library/ms532969.aspx=0A=
 * - http://support.microsoft.com/kb/316992=0A=
 *=0A=
 * @class       Shadowbox=0A=
 * @author      Michael J. I. Jackson <mjijackson@gmail.com>=0A=
 * @singleton=0A=
 */=0A=
(function(){=0A=
=0A=
    /**=0A=
     * The current version of Shadowbox.=0A=
     *=0A=
     * @var         String=0A=
     * @private=0A=
     */=0A=
    var version =3D '2.0';=0A=
=0A=
    /**=0A=
     * Contains the default options for Shadowbox.=0A=
     *=0A=
     * @var         Object=0A=
     * @private=0A=
     */=0A=
    var options =3D {=0A=
=0A=
        /**=0A=
         * Enable all animations besides fades.=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        animate:            true,=0A=
=0A=
        /**=0A=
         * Enable fade animations.=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        animateFade:        true,=0A=
=0A=
        /**=0A=
         * Specifies the sequence of the height and width animations. =
May be=0A=
         * 'wh' (width then height), 'hw' (height then width), or 'sync' =
(both=0A=
         * at the same time). Of course this will only work if animate =
is true.=0A=
         *=0A=
         * @var     String=0A=
         */=0A=
        animSequence:       'wh',=0A=
=0A=
        /**=0A=
         * The path to flvplayer.swf.=0A=
         *=0A=
         * @var     String=0A=
         */=0A=
        flvPlayer:          'flvplayer.swf',=0A=
=0A=
        /**=0A=
         * Listen to the overlay for clicks. If the user clicks the =
overlay,=0A=
         * it will trigger Shadowbox.close().=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        modal:              false,=0A=
=0A=
        /**=0A=
         * The color to use for the modal overlay (in hex).=0A=
         *=0A=
         * @var     String=0A=
         */=0A=
        overlayColor:       '#000',=0A=
=0A=
        /**=0A=
         * The opacity to use for the modal overlay.=0A=
         *=0A=
         * @var     Number=0A=
         */=0A=
        overlayOpacity:     0.8,=0A=
=0A=
        /**=0A=
         * The default background color to use for Flash movies (in hex).=0A=
         *=0A=
         * @var     String=0A=
         */=0A=
        flashBgColor:       '#000000',=0A=
=0A=
        /**=0A=
         * Automatically play movies.=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        autoplayMovies:     true,=0A=
=0A=
        /**=0A=
         * Enable movie controllers on movie players.=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        showMovieControls:  true,=0A=
=0A=
        /**=0A=
         * A delay (in seconds) to use for slideshows. If set to =
anything other=0A=
         * than 0, this value determines an interval at which Shadowbox =
will=0A=
         * automatically proceed to the next piece in the gallery.=0A=
         *=0A=
         * @var     Number=0A=
         */=0A=
        slideshowDelay:     0,=0A=
=0A=
        /**=0A=
         * The duration of the resizing animations (in seconds).=0A=
         *=0A=
         * @var     Number=0A=
         */=0A=
        resizeDuration:     0.55,=0A=
=0A=
        /**=0A=
         * The duration of the fading animations (in seconds).=0A=
         *=0A=
         * @var     Number=0A=
         */=0A=
        fadeDuration:       0.35,=0A=
=0A=
        /**=0A=
         * Show the navigation controls.=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        displayNav:         true,=0A=
=0A=
        /**=0A=
         * Enable continuous galleries. When this is true, users will be =
able=0A=
         * to skip to the first gallery image from the last using next =
and vice=0A=
         * versa.=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        continuous:         false,=0A=
=0A=
        /**=0A=
         * Display the gallery counter.=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        displayCounter:     true,=0A=
=0A=
        /**=0A=
         * This option may be either 'default' or 'skip'. The default =
counter is=0A=
         * a simple '1 of 5' message. The skip counter displays a link =
for each=0A=
         * piece in the gallery that enables a user to skip directly to =
any=0A=
         * piece.=0A=
         *=0A=
         * @var     String=0A=
         */=0A=
        counterType:        'default',=0A=
=0A=
        /**=0A=
         * Limits the number of counter links that will be displayed in =
a "skip"=0A=
         * style counter. If the actual number of gallery elements is =
greater=0A=
         * than this value, the counter will be restrained to the =
elements=0A=
         * immediately preceeding and following the current element.=0A=
         *=0A=
         * @var     Number=0A=
         */=0A=
        counterLimit:       10,=0A=
=0A=
        /**=0A=
         * The amount of padding to maintain around the viewport edge (in=0A=
         * pixels). This only applies when the image is very large and =
takes up=0A=
         * the entire viewport.=0A=
         *=0A=
         * @var     Number=0A=
         */=0A=
        viewportPadding:    20,=0A=
=0A=
        /**=0A=
         * How to handle content that is too large to display in its =
entirety=0A=
         * (and is resizable). A value of 'resize' will resize the =
content while=0A=
         * preserving aspect ratio and display it at the smaller =
resolution. If=0A=
         * the content is an image, a value of 'drag' will display the =
image at=0A=
         * its original resolution but it will be draggable within =
Shadowbox. A=0A=
         * value of 'none' will display the content at its original =
resolution=0A=
         * but it may be cropped.=0A=
         *=0A=
         * @var     String=0A=
         */=0A=
        handleOversize:     'resize',=0A=
=0A=
        /**=0A=
         * An exception handling function that will be called whenever=0A=
         * Shadowbox should throw an exception. Will be passed the error=0A=
         * message as its first argument.=0A=
         *=0A=
         * @var     Function=0A=
         */=0A=
        handleException:    null,=0A=
=0A=
        /**=0A=
         * The mode to use when handling unsupported media. May be either=0A=
         * 'remove' or 'link'. If it is 'remove', the unsupported =
gallery item=0A=
         * will merely be removed from the gallery. If it is the only =
item in=0A=
         * the gallery, the link will simply be followed. If it is =
'link', a=0A=
         * link will be provided to the appropriate plugin page in place =
of the=0A=
         * gallery element.=0A=
         *=0A=
         * @var     String=0A=
         */=0A=
        handleUnsupported:  'link',=0A=
=0A=
        /**=0A=
         * The initial height of Shadowbox (in pixels).=0A=
         *=0A=
         * @var     Number=0A=
         */=0A=
        initialHeight:      160,=0A=
=0A=
        /**=0A=
         * The initial width of Shadowbox (in pixels).=0A=
         *=0A=
         * @var     Number=0A=
         */=0A=
        initialWidth:       320,=0A=
=0A=
        /**=0A=
         * Enable keyboard control.=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        enableKeys:         true,=0A=
=0A=
        /**=0A=
         * A hook function to be fired when Shadowbox opens. The single =
argument=0A=
         * will be the current gallery element.=0A=
         *=0A=
         * @var     Function=0A=
         */=0A=
        onOpen:             null,=0A=
=0A=
        /**=0A=
         * A hook function to be fired when Shadowbox finishes loading =
its=0A=
         * content. The single argument will be the current gallery =
element on=0A=
         * display.=0A=
         *=0A=
         * @var     Function=0A=
         */=0A=
        onFinish:           null,=0A=
=0A=
        /**=0A=
         * A hook function to be fired when Shadowbox changes from one =
gallery=0A=
         * element to the next. The single argument will be the current =
gallery=0A=
         * element that is about to be displayed.=0A=
         *=0A=
         * @var     Function=0A=
         */=0A=
        onChange:           null,=0A=
=0A=
        /**=0A=
         * A hook function that will be fired when Shadowbox closes. The =
single=0A=
         * argument will be the gallery element most recently displayed.=0A=
         *=0A=
         * @var     Function=0A=
         */=0A=
        onClose:            null,=0A=
=0A=
        /**=0A=
         * Skips calling Shadowbox.setup() in init(). This means that it =
must=0A=
         * be called later manually.=0A=
         *=0A=
         * @var     Boolean=0A=
         */=0A=
        skipSetup:          false,=0A=
=0A=
        /**=0A=
         * An object containing names of plugins and links to their =
respective=0A=
         * download pages.=0A=
         *=0A=
         * @var     Object=0A=
         */=0A=
        errors:         {=0A=
=0A=
            fla:        {=0A=
                name:   'Flash',=0A=
                url:    'http://www.adobe.com/products/flashplayer/'=0A=
            },=0A=
=0A=
            qt:         {=0A=
                name:   'QuickTime',=0A=
                url:    'http://www.apple.com/quicktime/download/'=0A=
            },=0A=
=0A=
            wmp:        {=0A=
                name:   'Windows Media Player',=0A=
                url:    'http://www.microsoft.com/windows/windowsmedia/'=0A=
            },=0A=
=0A=
            f4m:        {=0A=
                name:   'Flip4Mac',=0A=
                url:    'http://www.flip4mac.com/wmv_download.htm'=0A=
            }=0A=
=0A=
        },=0A=
=0A=
        /**=0A=
         * A map of players to the file extensions they support. Each =
member of=0A=
         * this object is the name of a player (with one exception), =
whose value=0A=
         * is an array of file extensions that player will "play". The =
one=0A=
         * exception to this rule is the "qtwmp" member, which contains =
extensions=0A=
         * that may be played using either QuickTime or Windows Media =
Player.=0A=
         *=0A=
         * - img: Image file extensions=0A=
         * - swf: Flash SWF file extensions=0A=
         * - flv: Flash video file extensions (will be played by JW FLV =
player)=0A=
         * - qt: Movie file extensions supported by QuickTime=0A=
         * - wmp: Movie file extensions supported by Windows Media Player=0A=
         * - qtwmp: Movie file extensions supported by both QuickTime =
and Windows Media Player=0A=
         * - iframe: File extensions that will be display in an iframe=0A=
         *=0A=
         * IMPORTANT: If this object is to be modified, it must be =
copied in its=0A=
         * entirety and tweaked because it is not merged recursively =
with the=0A=
         * default. Also, any modifications must be passed into =
Shadowbox.init=0A=
         * for speed reasons.=0A=
         *=0A=
         * @var     Object      ext=0A=
         */=0A=
        ext:     {=0A=
            img:        ['png', 'jpg', 'jpeg', 'gif', 'bmp'],=0A=
            swf:        ['swf'],=0A=
            flv:        ['flv'],=0A=
            qt:         ['dv', 'mov', 'moov', 'movie', 'mp4'],=0A=
            wmp:        ['asf', 'wm', 'wmv'],=0A=
            qtwmp:      ['avi', 'mpg', 'mpeg'],=0A=
            iframe:     ['asp', 'aspx', 'cgi', 'cfm', 'htm', 'html', =
'pl', 'php',=0A=
                        'php3', 'php4', 'php5', 'phtml', 'rb', 'rhtml', =
'shtml',=0A=
                        'txt', 'vbs']=0A=
        }=0A=
=0A=
    };=0A=
=0A=
    // shorthand=0A=
    var SB =3D Shadowbox;=0A=
    var SL =3D SB.lib;=0A=
=0A=
    /**=0A=
     * Stores the default set of options in case a custom set of options =
is used=0A=
     * on a link-by-link basis so we can restore them later.=0A=
     *=0A=
     * @var         Object=0A=
     * @private=0A=
     */=0A=
    var default_options;=0A=
=0A=
    /**=0A=
     * An object containing some regular expressions we'll need later. =
Compiled=0A=
     * up front for speed.=0A=
     *=0A=
     * @var         Object=0A=
     * @private=0A=
     */=0A=
    var RE =3D {=0A=
        domain:         /:\/\/(.*?)[:\/]/, // domain prefix=0A=
        inline:         /#(.+)$/, // inline element id=0A=
        rel:            /^(light|shadow)box/i, // rel attribute format=0A=
        gallery:        /^(light|shadow)box\[(.*?)\]/i, // rel attribute =
format for gallery link=0A=
        unsupported:    /^unsupported-(\w+)/, // unsupported media type=0A=
        param:          /\s*([a-z_]*?)\s*=3D\s*(.+)\s*/, // rel string =
parameter=0A=
        empty:          =
/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i =
// elements that don't have children=0A=
    };=0A=
=0A=
    /**=0A=
     * A cache of options for links that have been set up for use with=0A=
     * Shadowbox.=0A=
     *=0A=
     * @var         Array=0A=
     * @private=0A=
     */=0A=
    var cache =3D [];=0A=
=0A=
    /**=0A=
     * An array containing the gallery objects currently being viewed. =
In the=0A=
     * case of non-gallery items, this will only hold one object.=0A=
     *=0A=
     * @var         Array=0A=
     * @private=0A=
     */=0A=
    var gallery;=0A=
=0A=
    /**=0A=
     * The array index of the current gallery that is currently being =
viewed.=0A=
     *=0A=
     * @var         Number=0A=
     * @private=0A=
     */=0A=
    var current;=0A=
=0A=
    /**=0A=
     * The current content object.=0A=
     *=0A=
     * @var         Object=0A=
     * @private=0A=
     */=0A=
    var content;=0A=
=0A=
    /**=0A=
     * The id to use for content objects.=0A=
     *=0A=
     * @var         String=0A=
     * @private=0A=
     */=0A=
    var content_id =3D 'shadowbox_content';=0A=
=0A=
    /**=0A=
     * Holds the current dimensions of Shadowbox as calculated by=0A=
     * setDimensions(). Contains the following properties:=0A=
     *=0A=
     * - height: The total height of #shadowbox=0A=
     * - width: The total width of #shadowbox=0A=
     * - inner_h: The height of #shadowbox_body=0A=
     * - inner_w: The width of #shadowbox_body=0A=
     * - top: The top to use for #shadowbox=0A=
     * - resize_h: The height to use for resizable content=0A=
     * - resize_w: The width to use for resizable content=0A=
     * - drag: True if dragging should be enabled (oversized image)=0A=
     *=0A=
     * @var         Object=0A=
     * @private=0A=
     */=0A=
    var dims;=0A=
=0A=
    /**=0A=
     * Keeps track of whether or not Shadowbox has been initialized. We =
never=0A=
     * want to initialize twice.=0A=
     *=0A=
     * @var         Boolean=0A=
     * @private=0A=
     */=0A=
    var initialized =3D false;=0A=
=0A=
    /**=0A=
     * Keeps track of whether or not Shadowbox is activated.=0A=
     *=0A=
     * @var         Boolean=0A=
     * @private=0A=
     */=0A=
    var activated =3D false;=0A=
=0A=
    /**=0A=
     * The timeout id for the slideshow transition function.=0A=
     *=0A=
     * @var         Number=0A=
     * @private=0A=
     */=0A=
    var slide_timer;=0A=
=0A=
    /**=0A=
     * Keeps track of the time at which the current slideshow frame was=0A=
     * displayed.=0A=
     *=0A=
     * @var         Number=0A=
     * @private=0A=
     */=0A=
    var slide_start;=0A=
=0A=
    /**=0A=
     * The delay on which the next slide will display.=0A=
     *=0A=
     * @var         Number=0A=
     * @private=0A=
     */=0A=
    var slide_delay =3D 0;=0A=
=0A=
    /**=0A=
     * These parameters for simple browser detection. Adapted from =
Ext.js.=0A=
     *=0A=
     * @var         Object=0A=
     * @private=0A=
     */=0A=
    var ua =3D navigator.userAgent.toLowerCase();=0A=
    var client =3D {=0A=
        isStrict:   document.compatMode =3D=3D 'CSS1Compat',=0A=
        isOpera:    ua.indexOf('opera') > -1,=0A=
        isIE:       ua.indexOf('msie') > -1,=0A=
        isIE7:      ua.indexOf('msie 7') > -1,=0A=
        isSafari:   /webkit|khtml/.test(ua),=0A=
        isWindows:  ua.indexOf('windows') !=3D -1 || ua.indexOf('win32') =
!=3D -1,=0A=
        isMac:      ua.indexOf('macintosh') !=3D -1 || ua.indexOf('mac =
os x') !=3D -1,=0A=
        isLinux:    ua.indexOf('linux') !=3D -1=0A=
    };=0A=
    client.isBorderBox =3D client.isIE && !client.isStrict;=0A=
    client.isSafari3 =3D client.isSafari && !!(document.evaluate);=0A=
    client.isGecko =3D ua.indexOf('gecko') !=3D -1 && !client.isSafari;=0A=
=0A=
    /**=0A=
     * You're not sill using IE6 are you?=0A=
     *=0A=
     * @var         Boolean=0A=
     * @private=0A=
     */=0A=
    var ltIE7 =3D client.isIE && !client.isIE7;=0A=
=0A=
    /**=0A=
     * Contains plugin support information. Each property of this object =
is a=0A=
     * boolean indicating whether that plugin is supported.=0A=
     *=0A=
     * - fla: Flash player=0A=
     * - qt: QuickTime player=0A=
     * - wmp: Windows Media player=0A=
     * - f4m: Flip4Mac plugin=0A=
     *=0A=
     * @var         Object=0A=
     * @private=0A=
     */=0A=
    var plugins;=0A=
=0A=
    // detect plugin support=0A=
    if(navigator.plugins && navigator.plugins.length){=0A=
        var detectPlugin =3D function(plugin_name){=0A=
            var detected =3D false;=0A=
            for (var i =3D 0, len =3D navigator.plugins.length; i < len; =
++i){=0A=
                if(navigator.plugins[i].name.indexOf(plugin_name) > -1){=0A=
                    detected =3D true;=0A=
                    break;=0A=
                }=0A=
            }=0A=
            return detected;=0A=
        };=0A=
        var f4m =3D detectPlugin('Flip4Mac');=0A=
        plugins =3D {=0A=
            fla:    detectPlugin('Shockwave Flash'),=0A=
            qt:     detectPlugin('QuickTime'),=0A=
            wmp:    !f4m && detectPlugin('Windows Media'), // if it's =
Flip4Mac, it's not really WMP=0A=
            f4m:    f4m=0A=
        };=0A=
    }else{=0A=
        var detectPlugin =3D function(plugin_name){=0A=
            var detected =3D false;=0A=
            try{=0A=
                var axo =3D new ActiveXObject(plugin_name);=0A=
                if(axo) detected =3D true;=0A=
            }catch(e){}=0A=
            return detected;=0A=
        };=0A=
        plugins =3D {=0A=
            fla:    detectPlugin('ShockwaveFlash.ShockwaveFlash'),=0A=
            qt:     detectPlugin('QuickTime.QuickTime'),=0A=
            wmp:    detectPlugin('wmplayer.ocx'),=0A=
            f4m:    false=0A=
        };=0A=
    }=0A=
=0A=
    /**=0A=
     * Applies all properties of e to o.=0A=
     *=0A=
     * @param   Object      o       The original object=0A=
     * @param   Object      e       The extension object=0A=
     * @return  Object              The original object with all =
properties=0A=
     *                              of the extension object applied=0A=
     * @private=0A=
     */=0A=
    var apply =3D function(o, e){=0A=
        for(var p in e) o[p] =3D e[p];=0A=
        return o;=0A=
    };=0A=
=0A=
    /**=0A=
     * Determines if the given object is an anchor/area element.=0A=
     *=0A=
     * @param   mixed       el      The object to check=0A=
     * @return  Boolean             True if the object is a link element=0A=
     * @private=0A=
     */=0A=
    var isLink =3D function(el){=0A=
        return el && typeof el.tagName =3D=3D 'string' && =
(el.tagName.toUpperCase() =3D=3D 'A' || el.tagName.toUpperCase() =3D=3D =
'AREA');=0A=
    };=0A=
=0A=
    /**=0A=
     * Gets the height of the viewport in pixels. Note: This function =
includes=0A=
     * scrollbars in Safari 3.=0A=
     *=0A=
     * @return  Number          The height of the viewport=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    SL.getViewportHeight =3D function(){=0A=
        var h =3D window.innerHeight; // Safari=0A=
        var mode =3D document.compatMode;=0A=
        if((mode || client.isIE) && !client.isOpera){=0A=
            h =3D client.isStrict ? =
document.documentElement.clientHeight : document.body.clientHeight;=0A=
        }=0A=
        return h;=0A=
    };=0A=
=0A=
    /**=0A=
     * Gets the width of the viewport in pixels. Note: This function =
includes=0A=
     * scrollbars in Safari 3.=0A=
     *=0A=
     * @return  Number          The width of the viewport=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    SL.getViewportWidth =3D function(){=0A=
        var w =3D window.innerWidth; // Safari=0A=
        var mode =3D document.compatMode;=0A=
        if(mode || client.isIE){=0A=
            w =3D client.isStrict ? document.documentElement.clientWidth =
: document.body.clientWidth;=0A=
        }=0A=
        return w;=0A=
    };=0A=
=0A=
    /**=0A=
     * Creates an HTML string from an object representing HTML elements. =
Based=0A=
     * on Ext.DomHelper's createHtml.=0A=
     *=0A=
     * @param   Object      obj     The HTML definition object=0A=
     * @return  String              An HTML string=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    SL.createHTML =3D function(obj){=0A=
        var html =3D '<' + obj.tag;=0A=
        for(var attr in obj){=0A=
            if(attr =3D=3D 'tag' || attr =3D=3D 'html' || attr =3D=3D =
'children') continue;=0A=
            if(attr =3D=3D 'cls'){=0A=
                html +=3D ' class=3D"' + obj['cls'] + '"';=0A=
            }else{=0A=
                html +=3D ' ' + attr + '=3D"' + obj[attr] + '"';=0A=
            }=0A=
        }=0A=
        if(RE.empty.test(obj.tag)){=0A=
            html +=3D '/>';=0A=
        }else{=0A=
            html +=3D '>';=0A=
            var cn =3D obj.children;=0A=
            if(cn){=0A=
                for(var i =3D 0, len =3D cn.length; i < len; ++i){=0A=
                    html +=3D this.createHTML(cn[i]);=0A=
                }=0A=
            }=0A=
            if(obj.html) html +=3D obj.html;=0A=
            html +=3D '</' + obj.tag + '>';=0A=
        }=0A=
        return html;=0A=
    };=0A=
=0A=
    /**=0A=
     * Easing function used for animations. Based on a cubic polynomial.=0A=
     *=0A=
     * @param   Number      x       The state of the animation (% =
complete)=0A=
     * @return  Number              The adjusted easing value=0A=
     * @private=0A=
     * @static=0A=
     */=0A=
    var ease =3D function(x){=0A=
        return 1 + Math.pow(x - 1, 3);=0A=
    };=0A=
=0A=
    /**=0A=
     * Animates any numeric (not color) style of the given element from =
its=0A=
     * current state to the given value. Defaults to using pixel-based=0A=
     * measurements.=0A=
     *=0A=
     * @param   HTMLElement     el      The DOM element to animate=0A=
     * @param   String          p       The property to animate (in =
camelCase)=0A=
     * @param   mixed           to      The value to animate to=0A=
     * @param   Number          d       The duration of the animation (in=0A=
     *                                  seconds)=0A=
     * @param   Function        cb      A callback function to call when =
the=0A=
     *                                  animation completes=0A=
     * @return  void=0A=
     * @private=0A=
     * @static=0A=
     */=0A=
    var animate =3D function(el, p, to, d, cb){=0A=
        var from =3D parseFloat(SL.getStyle(el, p));=0A=
        if(isNaN(from)) from =3D 0;=0A=
=0A=
        if(from =3D=3D to){=0A=
            if(typeof cb =3D=3D 'function') cb();=0A=
            return; // nothing to animate=0A=
        }=0A=
=0A=
        var delta =3D to - from;=0A=
        var op =3D p =3D=3D 'opacity';=0A=
        var unit =3D op ? '' : 'px'; // default unit is px=0A=
        var fn =3D function(ease){=0A=
            SL.setStyle(el, p, from + ease * delta + unit);=0A=
        };=0A=
=0A=
        // cancel the animation here if set in the options=0A=
        if(!options.animate && !op || op && !options.animateFade){=0A=
            fn(1);=0A=
            if(typeof cb =3D=3D 'function') cb();=0A=
            return;=0A=
        }=0A=
=0A=
        d *=3D 1000; // convert to milliseconds=0A=
        var begin =3D new Date().getTime();=0A=
        var end =3D begin + d;=0A=
=0A=
        var timer =3D setInterval(function(){=0A=
            var time =3D new Date().getTime();=0A=
            if(time >=3D end){ // end of animation=0A=
                clearInterval(timer);=0A=
                fn(1);=0A=
                if(typeof cb =3D=3D 'function') cb();=0A=
            }else{=0A=
                fn(ease((time - begin) / d));=0A=
            }=0A=
        }, 10); // 10 ms interval is minimum on WebKit=0A=
    };=0A=
=0A=
    /**=0A=
     * A utility function used by the fade functions to clear the opacity=0A=
     * style setting of the given element. Required in some cases for IE.=0A=
     *=0A=
     * @param   HTMLElement     el      The DOM element=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var clearOpacity =3D function(el){=0A=
        var s =3D el.style;=0A=
        if(client.isIE){=0A=
            if(typeof s.filter =3D=3D 'string' && =
(/alpha/i).test(s.filter)){=0A=
                // careful not to overwrite other filters!=0A=
                s.filter =3D s.filter.replace(/[\w\.]*alpha\(.*?\);?/i, =
'');=0A=
            }=0A=
        }else{=0A=
            s.opacity =3D '';=0A=
            s['-moz-opacity'] =3D '';=0A=
            s['-khtml-opacity'] =3D '';=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Gets the computed height of the given element, including padding =
and=0A=
     * borders.=0A=
     *=0A=
     * @param   HTMLElement     el  The element=0A=
     * @return  Number              The computed height of the element=0A=
     * @private=0A=
     */=0A=
    var getComputedHeight =3D function(el){=0A=
        var h =3D Math.max(el.offsetHeight, el.clientHeight);=0A=
        if(!h){=0A=
            h =3D parseInt(SL.getStyle(el, 'height'), 10) || 0;=0A=
            if(!client.isBorderBox){=0A=
                h +=3D parseInt(SL.getStyle(el, 'padding-top'), 10)=0A=
                    + parseInt(SL.getStyle(el, 'padding-bottom'), 10)=0A=
                    + parseInt(SL.getStyle(el, 'border-top-width'), 10)=0A=
                    + parseInt(SL.getStyle(el, 'border-bottom-width'), =
10);=0A=
            }=0A=
        }=0A=
        return h;=0A=
    };=0A=
=0A=
    /**=0A=
     * Determines the player needed to display the file at the given =
URL. If=0A=
     * the file type is not supported, the return value will be =
'unsupported'.=0A=
     * If the file type is not supported but the correct player can be=0A=
     * determined, the return value will be 'unsupported-*' where * will =
be the=0A=
     * player abbreviation (e.g. 'qt' =3D QuickTime).=0A=
     *=0A=
     * @param   String          url     The url of the file=0A=
     * @return  String                  The name of the player to use=0A=
     * @private=0A=
     */=0A=
    var getPlayer =3D function(url){=0A=
        var m =3D url.match(RE.domain);=0A=
        var d =3D m && document.domain =3D=3D m[1]; // same domain=0A=
        if(url.indexOf('#') > -1 && d) return 'inline';=0A=
        var q =3D url.indexOf('?');=0A=
        if(q > -1) url =3D url.substring(0, q); // strip query string =
for player detection purposes=0A=
        if(RE.img.test(url)) return 'img';=0A=
        if(RE.swf.test(url)) return plugins.fla ? 'swf' : =
'unsupported-swf';=0A=
        if(RE.flv.test(url)) return plugins.fla ? 'flv' : =
'unsupported-flv';=0A=
        if(RE.qt.test(url)) return plugins.qt ? 'qt' : 'unsupported-qt';=0A=
        if(RE.wmp.test(url)){=0A=
            if(plugins.wmp) return 'wmp';=0A=
            if(plugins.f4m) return 'qt';=0A=
            if(client.isMac) return plugins.qt ? 'unsupported-f4m' : =
'unsupported-qtf4m';=0A=
            return 'unsupported-wmp';=0A=
        }else if(RE.qtwmp.test(url)){=0A=
            if(plugins.qt) return 'qt';=0A=
            if(plugins.wmp) return 'wmp';=0A=
            return client.isMac ? 'unsupported-qt' : 'unsupported-qtwmp';=0A=
        }else if(!d || RE.iframe.test(url)){=0A=
            return 'iframe';=0A=
        }=0A=
        return 'unsupported'; // same domain, not supported=0A=
    };=0A=
=0A=
    /**=0A=
     * Handles all clicks on links that have been set up to work with =
Shadowbox=0A=
     * and cancels the default event behavior when appropriate.=0A=
     *=0A=
     * @param   {Event}         ev          The click event object=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var handleClick =3D function(ev){=0A=
        // get anchor/area element=0A=
        var link;=0A=
        if(isLink(this)){=0A=
            link =3D this; // jQuery, Prototype, YUI=0A=
        }else{=0A=
            link =3D SL.getTarget(ev); // Ext, standalone=0A=
            while(!isLink(link) && link.parentNode){=0A=
                link =3D link.parentNode;=0A=
            }=0A=
        }=0A=
=0A=
        //SL.preventDefault(ev); // good for debugging=0A=
=0A=
        if(link){=0A=
            SB.open(link);=0A=
            if(gallery.length) SL.preventDefault(ev); // stop event=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Toggles the display of the nav control with the given id on and =
off.=0A=
     *=0A=
     * @param   String      id      The id of the navigation control=0A=
     * @param   Boolean     on      True to toggle on, false to toggle =
off=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var toggleNav =3D function(id, on){=0A=
        var el =3D SL.get('shadowbox_nav_' + id);=0A=
        if(el) el.style.display =3D on ? '' : 'none';=0A=
    };=0A=
=0A=
    /**=0A=
     * Builds the content for the title and information bars.=0A=
     *=0A=
     * @param   Function    cb      A callback function to execute after =
the=0A=
     *                              bars are built=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var buildBars =3D function(cb){=0A=
        var obj =3D gallery[current];=0A=
        var title_i =3D SL.get('shadowbox_title_inner');=0A=
=0A=
        // build the title=0A=
        title_i.innerHTML =3D obj.title || '';=0A=
=0A=
        // build the nav=0A=
        var nav =3D SL.get('shadowbox_nav');=0A=
        if(nav){=0A=
            var c, n, pl, pa, p;=0A=
=0A=
            // need to build the nav?=0A=
            if(options.displayNav){=0A=
                c =3D true;=0A=
                // next & previous links=0A=
                var len =3D gallery.length;=0A=
                if(len > 1){=0A=
                    if(options.continuous){=0A=
                        n =3D p =3D true; // show both=0A=
                    }else{=0A=
                        n =3D (len - 1) > current; // not last in =
gallery, show next=0A=
                        p =3D current > 0; // not first in gallery, show =
previous=0A=
                    }=0A=
                }=0A=
                // in a slideshow?=0A=
                if(options.slideshowDelay > 0 && hasNext()){=0A=
                    pa =3D slide_timer !=3D 'paused';=0A=
                    pl =3D !pa;=0A=
                }=0A=
            }else{=0A=
                c =3D n =3D pl =3D pa =3D p =3D false;=0A=
            }=0A=
=0A=
            toggleNav('close', c);=0A=
            toggleNav('next', n);=0A=
            toggleNav('play', pl);=0A=
            toggleNav('pause', pa);=0A=
            toggleNav('previous', p);=0A=
        }=0A=
=0A=
        // build the counter=0A=
        var counter =3D SL.get('shadowbox_counter');=0A=
        if(counter){=0A=
            var co =3D '';=0A=
=0A=
            // need to build the counter?=0A=
            if(options.displayCounter && gallery.length > 1){=0A=
                if(options.counterType =3D=3D 'skip'){=0A=
                    // limit the counter?=0A=
                    var i =3D 0, len =3D gallery.length, end =3D len;=0A=
                    var limit =3D parseInt(options.counterLimit);=0A=
                    if(limit < len){ // support large galleries=0A=
                        var h =3D Math.round(limit / 2);=0A=
                        i =3D current - h;=0A=
                        if(i < 0) i +=3D len;=0A=
                        end =3D current + (limit - h);=0A=
                        if(end > len) end -=3D len;=0A=
                    }=0A=
                    while(i !=3D end){=0A=
                        if(i =3D=3D len) i =3D 0;=0A=
                        co +=3D '<a onclick=3D"Shadowbox.change(' + i + =
');"';=0A=
                        if(i =3D=3D current) co +=3D ' =
class=3D"shadowbox_counter_current"';=0A=
                        co +=3D '>' + (++i) + '</a>';=0A=
                    }=0A=
                }else{ // default=0A=
                    co =3D (current + 1) + ' ' + SB.LANG.of + ' ' + len;=0A=
                }=0A=
            }=0A=
=0A=
            counter.innerHTML =3D co;=0A=
        }=0A=
=0A=
        cb();=0A=
    };=0A=
=0A=
    /**=0A=
     * Hides the title and info bars.=0A=
     *=0A=
     * @param   Boolean     anim    True to animate the transition=0A=
     * @param   Function    cb      A callback function to execute after =
the=0A=
     *                              animation completes=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var hideBars =3D function(anim, cb){=0A=
        var obj =3D gallery[current];=0A=
        var title =3D SL.get('shadowbox_title');=0A=
        var info =3D SL.get('shadowbox_info');=0A=
        var title_i =3D SL.get('shadowbox_title_inner');=0A=
        var info_i =3D SL.get('shadowbox_info_inner');=0A=
=0A=
        // build bars after they are hidden=0A=
        var fn =3D function(){=0A=
            buildBars(cb);=0A=
        };=0A=
=0A=
        var title_h =3D getComputedHeight(title);=0A=
        var info_h =3D getComputedHeight(info) * -1;=0A=
        if(anim){=0A=
            // animate the transition=0A=
            animate(title_i, 'margin-top', title_h, 0.35);=0A=
            animate(info_i, 'margin-top', info_h, 0.35, fn);=0A=
        }else{=0A=
            SL.setStyle(title_i, 'margin-top', title_h + 'px');=0A=
            SL.setStyle(info_i, 'margin-top', info_h + 'px');=0A=
            fn();=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Shows the title and info bars.=0A=
     *=0A=
     * @param   Function    cb      A callback function to execute after =
the=0A=
     *                              animation completes=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var showBars =3D function(cb){=0A=
        var title_i =3D SL.get('shadowbox_title_inner');=0A=
        var info_i =3D SL.get('shadowbox_info_inner');=0A=
        var t =3D title_i.innerHTML !=3D ''; // is there a title to =
display?=0A=
=0A=
        if(t) animate(title_i, 'margin-top', 0, 0.35);=0A=
        animate(info_i, 'margin-top', 0, 0.35, cb);=0A=
    };=0A=
=0A=
    /**=0A=
     * Loads the Shadowbox with the current piece.=0A=
     *=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var loadContent =3D function(){=0A=
        var obj =3D gallery[current];=0A=
        if(!obj) return; // invalid=0A=
=0A=
        var changing =3D false;=0A=
        if(content){=0A=
            content.remove(); // remove old content first=0A=
            changing =3D true; // changing from some previous content=0A=
        }=0A=
=0A=
        // determine player, inline is really just HTML=0A=
        var p =3D obj.player =3D=3D 'inline' ? 'html' : obj.player;=0A=
=0A=
        // make sure player is loaded=0A=
        if(typeof SB[p] !=3D 'function'){=0A=
            SB.raise('Unknown player ' + obj.player);=0A=
        }=0A=
        content =3D new SB[p](content_id, obj); // instantiate new =
content object=0A=
=0A=
        listenKeys(false); // disable the keyboard temporarily=0A=
        toggleLoading(true);=0A=
=0A=
        hideBars(changing, function(){ // if changing, animate the bars =
transition=0A=
            if(!content) return;=0A=
=0A=
            // if opening, clear #shadowbox display=0A=
            if(!changing){=0A=
                 SL.get('shadowbox').style.display =3D '';=0A=
            }=0A=
=0A=
            var fn =3D function(){=0A=
                resizeContent(function(){=0A=
                    if(!content) return;=0A=
=0A=
=0A=
                    showBars(function(){=0A=
                        if(!content) return;=0A=
=0A=
                        // append content just before hiding the loading =
layer=0A=
                        SL.get('shadowbox_body_inner').innerHTML =3D =
SL.createHTML(content.markup(dims));=0A=
=0A=
                        toggleLoading(false, function(){=0A=
                            if(!content) return;=0A=
=0A=
                            if(typeof content.onLoad =3D=3D 'function'){=0A=
                                content.onLoad(); // call onLoad =
callback if present=0A=
                            }=0A=
                            if(options.onFinish && typeof =
options.onFinish =3D=3D 'function'){=0A=
                                options.onFinish(gallery[current]); // =
fire onFinish handler=0A=
                            }=0A=
                            if(slide_timer !=3D 'paused'){=0A=
                                SB.play(); // kick off next slide=0A=
                            }=0A=
                            listenKeys(true); // re-enable the keyboard=0A=
                        });=0A=
                    });=0A=
                });=0A=
            };=0A=
=0A=
            if(typeof content.ready !=3D 'undefined'){ // does the =
object have a ready property?=0A=
                var id =3D setInterval(function(){ // if so, wait for =
the object to be ready=0A=
                    if(content){=0A=
                        if(content.ready){=0A=
                            clearInterval(id); // clean up=0A=
                            id =3D null;=0A=
                            fn();=0A=
                        }=0A=
                    }else{ // content has been removed=0A=
                        clearInterval(id);=0A=
                        id =3D null;=0A=
                    }=0A=
                }, 100);=0A=
            }else{=0A=
                fn();=0A=
            }=0A=
        });=0A=
=0A=
        // preload neighboring gallery images=0A=
        if(gallery.length > 1){=0A=
            var next =3D gallery[current + 1] || gallery[0];=0A=
            if(next.player =3D=3D 'img'){=0A=
                var a =3D new Image();=0A=
                a.src =3D next.content;=0A=
            }=0A=
            var prev =3D gallery[current - 1] || gallery[gallery.length =
- 1];=0A=
            if(prev.player =3D=3D 'img'){=0A=
                var b =3D new Image();=0A=
                b.src =3D prev.content;=0A=
            }=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Calculates the dimensions for Shadowbox, taking into account the =
borders=0A=
     * and surrounding elements of the shadowbox_body. If the =
height/width=0A=
     * combination is too large for Shadowbox and handleOversize option =
is set=0A=
     * to 'resize', the resized dimensions will be returned (preserving =
the=0A=
     * original aspect ratio). Otherwise, the originally calculated =
dimensions=0A=
     * will be used. Stores all dimensions in the private dims variable.=0A=
     *=0A=
     * @param   Number      height      The content player height=0A=
     * @param   Number      width       The content player width=0A=
     * @param   Boolean     resizable   True if the content is able to be=0A=
     *                                  resized. Defaults to false.=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var setDimensions =3D function(height, width, resizable){=0A=
        resizable =3D resizable || false;=0A=
=0A=
        var sb =3D SL.get('shadowbox_body');=0A=
        var h =3D height =3D parseInt(height);=0A=
        var w =3D width =3D parseInt(width);=0A=
        var view_h =3D SL.getViewportHeight();=0A=
        var view_w =3D SL.getViewportWidth();=0A=
=0A=
        // calculate the max width=0A=
        var border_w =3D parseInt(SL.getStyle(sb, 'border-left-width'), =
10)=0A=
            + parseInt(SL.getStyle(sb, 'border-right-width'), 10);=0A=
        var extra_w =3D border_w + 2 * options.viewportPadding;=0A=
        if(w + extra_w >=3D view_w){=0A=
            w =3D view_w - extra_w;=0A=
        }=0A=
=0A=
        // calculate the max height=0A=
        var border_h =3D parseInt(SL.getStyle(sb, 'border-top-width'), =
10)=0A=
            + parseInt(SL.getStyle(sb, 'border-bottom-width'), 10);=0A=
        var bar_h =3D getComputedHeight(SL.get('shadowbox_title'))=0A=
            + getComputedHeight(SL.get('shadowbox_info'));=0A=
        var extra_h =3D border_h + 2 * options.viewportPadding + bar_h;=0A=
        if(h + extra_h >=3D view_h){=0A=
            h =3D view_h - extra_h;=0A=
        }=0A=
=0A=
        // handle oversized content=0A=
        var drag =3D false;=0A=
        var resize_h =3D height;=0A=
        var resize_w =3D width;=0A=
        var handle =3D options.handleOversize;=0A=
        if(resizable && (handle =3D=3D 'resize' || handle =3D=3D =
'drag')){=0A=
            var change_h =3D (height - h) / height;=0A=
            var change_w =3D (width - w) / width;=0A=
            if(handle =3D=3D 'resize'){=0A=
                if(change_h > change_w){=0A=
                    w =3D Math.round((width / height) * h);=0A=
                }else if(change_w > change_h){=0A=
                    h =3D Math.round((height / width) * w);=0A=
                }=0A=
                // adjust resized height or width accordingly=0A=
                resize_w =3D w;=0A=
                resize_h =3D h;=0A=
            }else{=0A=
                // drag on oversized images only=0A=
                var link =3D gallery[current];=0A=
                if(link) drag =3D link.player =3D=3D 'img' && (change_h =
> 0 || change_w > 0);=0A=
            }=0A=
        }=0A=
=0A=
        // update dims=0A=
        dims =3D {=0A=
            height:     h + border_h + bar_h,=0A=
            width:      w + border_w,=0A=
            inner_h:    h,=0A=
            inner_w:    w,=0A=
            top:        (view_h - (h + extra_h)) / 2 + =
options.viewportPadding,=0A=
            resize_h:   resize_h,=0A=
            resize_w:   resize_w,=0A=
            drag:       drag=0A=
        };=0A=
    };=0A=
=0A=
    /**=0A=
     * Resizes Shadowbox to the given height and width. If the callback=0A=
     * parameter is given, the transition will be animated and the =
callback=0A=
     * function will be called when the animation completes. Note: The =
private=0A=
     * content variable must be updated before calling this function.=0A=
     *=0A=
     * @param   Function    cb      A callback function to execute after =
the=0A=
     *                              content has been resized=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var resizeContent =3D function(cb){=0A=
        if(!content) return; // no content=0A=
=0A=
        // set new dimensions=0A=
        setDimensions(content.height, content.width, content.resizable);=0A=
=0A=
        if(cb){=0A=
            switch(options.animSequence){=0A=
                case 'hw':=0A=
                    adjustHeight(dims.inner_h, dims.top, true, =
function(){=0A=
                        adjustWidth(dims.width, true, cb);=0A=
                    });=0A=
                    break;=0A=
                case 'wh':=0A=
                    adjustWidth(dims.width, true, function(){=0A=
                        adjustHeight(dims.inner_h, dims.top, true, cb);=0A=
                    });=0A=
                    break;=0A=
                case 'sync':=0A=
                default:=0A=
                    adjustWidth(dims.width, true);=0A=
                    adjustHeight(dims.inner_h, dims.top, true, cb);=0A=
            }=0A=
        }else{ // window resize=0A=
            adjustWidth(dims.width, false);=0A=
            adjustHeight(dims.inner_h, dims.top, false);=0A=
            var c =3D SL.get(content_id);=0A=
            if(c){=0A=
                // resize resizable content when in resize mode=0A=
                if(content.resizable && options.handleOversize =3D=3D =
'resize'){=0A=
                    c.height =3D dims.resize_h;=0A=
                    c.width =3D dims.resize_w;=0A=
                }=0A=
                // fix draggable positioning if enlarging viewport=0A=
                if(gallery[current].player =3D=3D 'img' && =
options.handleOversize =3D=3D 'drag'){=0A=
                    var top =3D parseInt(SL.getStyle(c, 'top'));=0A=
                    if(top + content.height < dims.inner_h){=0A=
                        SL.setStyle(c, 'top', dims.inner_h - =
content.height + 'px');=0A=
                    }=0A=
                    var left =3D parseInt(SL.getStyle(c, 'left'));=0A=
                    if(left + content.width < dims.inner_w){=0A=
                        SL.setStyle(c, 'left', dims.inner_w - =
content.width + 'px');=0A=
                    }=0A=
                }=0A=
            }=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Adjusts the height of #shadowbox_body and centers #shadowbox =
vertically=0A=
     * in the viewport.=0A=
     *=0A=
     * @param   Number      height      The height to use for =
#shadowbox_body=0A=
     * @param   Number      top         The top to use for #shadowbox=0A=
     * @param   Boolean     anim        True to animate the transition=0A=
     * @param   Function    cb          A callback to use when the =
animation=0A=
     *                                  completes=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var adjustHeight =3D function(height, top, anim, cb){=0A=
        height =3D parseInt(height);=0A=
=0A=
        // adjust the height=0A=
        var sb =3D SL.get('shadowbox_body');=0A=
        if(anim){=0A=
            animate(sb, 'height', height, options.resizeDuration);=0A=
        }else{=0A=
            SL.setStyle(sb, 'height', height + 'px');=0A=
        }=0A=
=0A=
        // adjust the top=0A=
        var s =3D SL.get('shadowbox');=0A=
        if(anim){=0A=
            animate(s, 'top', top, options.resizeDuration, cb);=0A=
        }else{=0A=
            SL.setStyle(s, 'top', top + 'px');=0A=
            if(typeof cb =3D=3D 'function') cb();=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Adjusts the width of #shadowbox.=0A=
     *=0A=
     * @param   Number      width       The width to use for #shadowbox=0A=
     * @param   Boolean     anim        True to animate the transition=0A=
     * @param   Function    cb          A callback to use when the =
animation=0A=
     *                                  completes=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var adjustWidth =3D function(width, anim, cb){=0A=
        width =3D parseInt(width);=0A=
=0A=
        // adjust the width=0A=
        var s =3D SL.get('shadowbox');=0A=
        if(anim){=0A=
            animate(s, 'width', width, options.resizeDuration, cb);=0A=
        }else{=0A=
            SL.setStyle(s, 'width', width + 'px');=0A=
            if(typeof cb =3D=3D 'function') cb();=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Sets up a listener on the document for keystrokes.=0A=
     *=0A=
     * @param   Boolean     on      True to enable the listener, false =
to turn=0A=
     *                              it off=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var listenKeys =3D function(on){=0A=
        if(!options.enableKeys) return;=0A=
        SL[(on ? 'add' : 'remove') + 'Event'](document, 'keydown', =
handleKey);=0A=
    };=0A=
=0A=
    /**=0A=
     * A listener function that is fired when a key is pressed.=0A=
     *=0A=
     * @param   mixed       e       The event object=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var handleKey =3D function(e){=0A=
        var code =3D SL.keyCode(e);=0A=
=0A=
        // attempt to prevent default key action=0A=
        SL.preventDefault(e);=0A=
=0A=
        if(code =3D=3D 81 || code =3D=3D 88 || code =3D=3D 27){ // q, x, =
or esc=0A=
            SB.close();=0A=
        }else if(code =3D=3D 37){ // left arrow=0A=
            SB.previous();=0A=
        }else if(code =3D=3D 39){ // right arrow=0A=
            SB.next();=0A=
        }else if(code =3D=3D 32){ // space bar=0A=
            SB[(typeof slide_timer =3D=3D 'number' ? 'pause' : =
'play')]();=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Toggles the visibility of the "loading" layer.=0A=
     *=0A=
     * @param   Boolean     on      True to toggle on, false to toggle =
off=0A=
     * @param   Function    cb      The callback function to call when =
toggling=0A=
     *                              completes=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var toggleLoading =3D function(on, cb){=0A=
        var loading =3D SL.get('shadowbox_loading');=0A=
        if(on){=0A=
            loading.style.display =3D '';=0A=
            if(typeof cb =3D=3D 'function') cb();=0A=
        }else{=0A=
            var p =3D gallery[current].player;=0A=
            var anim =3D (p =3D=3D 'img' || p =3D=3D 'html'); // fade on =
images & html=0A=
            var fn =3D function(){=0A=
                loading.style.display =3D 'none';=0A=
                clearOpacity(loading);=0A=
                if(typeof cb =3D=3D 'function') cb();=0A=
            };=0A=
            if(anim){=0A=
                animate(loading, 'opacity', 0, options.fadeDuration, fn);=0A=
            }else{=0A=
                fn();=0A=
            }=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Sets the top of the container element. This is only necessary in =
IE6=0A=
     * where the container uses absolute positioning instead of fixed.=0A=
     *=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var fixTop =3D function(){=0A=
        SL.get('shadowbox_container').style.top =3D =
document.documentElement.scrollTop + 'px';=0A=
    };=0A=
=0A=
    /**=0A=
     * Sets the height of the overlay element to the full viewport =
height. This=0A=
     * is only necessary in IE6 where the container uses absolute =
positioning=0A=
     * instead of fixed, thus restricting the size of the overlay =
element.=0A=
     *=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var fixHeight =3D function(){=0A=
        SL.get('shadowbox_overlay').style.height =3D =
SL.getViewportHeight() + 'px';=0A=
    };=0A=
=0A=
    /**=0A=
     * Determines if there is a next piece to display in the current =
gallery.=0A=
     *=0A=
     * @return  bool            True if there is another piece, false =
otherwise=0A=
     * @private=0A=
     */=0A=
    var hasNext =3D function(){=0A=
        return gallery.length > 1 && (current !=3D gallery.length - 1 || =
options.continuous);=0A=
    };=0A=
=0A=
    /**=0A=
     * Toggles the visibility of #shadowbox_container and sets its size =
(if on=0A=
     * IE6). Also toggles the visibility of elements (<select>, =
<object>, and=0A=
     * <embed>) that are troublesome for semi-transparent modal =
overlays. IE has=0A=
     * problems with <select> elements, while Firefox has trouble with=0A=
     * <object>s.=0A=
     *=0A=
     * @param   Function    cb      A callback to call after toggling =
on, absent=0A=
     *                              when toggling off=0A=
     * @return  void=0A=
     * @private=0A=
     */=0A=
    var toggleVisible =3D function(cb){=0A=
        var els, v =3D (cb) ? 'hidden' : 'visible';=0A=
        var hide =3D ['select', 'object', 'embed']; // tags to hide=0A=
        for(var i =3D 0; i < hide.length; ++i){=0A=
            els =3D document.getElementsByTagName(hide[i]);=0A=
            for(var j =3D 0, len =3D els.length; j < len; ++j){=0A=
                els[j].style.visibility =3D v;=0A=
            }=0A=
        }=0A=
=0A=
        // resize & show container=0A=
        var so =3D SL.get('shadowbox_overlay');=0A=
        var sc =3D SL.get('shadowbox_container');=0A=
        var sb =3D SL.get('shadowbox');=0A=
        if(cb){=0A=
            // set overlay color/opacity=0A=
            SL.setStyle(so, {=0A=
                backgroundColor: options.overlayColor,=0A=
                opacity: 0=0A=
            });=0A=
            if(!options.modal) SL.addEvent(so, 'click', SB.close);=0A=
            if(ltIE7){=0A=
                // fix container top & overlay height before showing=0A=
                fixTop();=0A=
                fixHeight();=0A=
                SL.addEvent(window, 'scroll', fixTop);=0A=
            }=0A=
=0A=
            // fade in animation=0A=
            sb.style.display =3D 'none'; // will be cleared in =
loadContent()=0A=
            sc.style.visibility =3D 'visible';=0A=
            animate(so, 'opacity', parseFloat(options.overlayOpacity), =
options.fadeDuration, cb);=0A=
        }else{=0A=
            SL.removeEvent(so, 'click', SB.close);=0A=
            if(ltIE7) SL.removeEvent(window, 'scroll', fixTop);=0A=
=0A=
            // fade out effect=0A=
            sb.style.display =3D 'none';=0A=
            animate(so, 'opacity', 0, options.fadeDuration, function(){=0A=
                sc.style.visibility =3D 'hidden';=0A=
                sb.style.display =3D '';=0A=
                clearOpacity(so);=0A=
            });=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Initializes the Shadowbox environment. Loads the skin (if =
necessary),=0A=
     * compiles the player matching regular expressions, and sets up the=0A=
     * window resize listener.=0A=
     *=0A=
     * @param   Object      opts    (optional) The default options to use=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.init =3D function(opts){=0A=
        // don't initialize twice=0A=
        if(initialized) return;=0A=
=0A=
        // make sure language is loaded=0A=
        if(typeof SB.LANG =3D=3D 'undefined'){=0A=
            SB.raise('No Shadowbox language loaded');=0A=
            return;=0A=
        }=0A=
        // make sure skin is loaded=0A=
        if(typeof SB.SKIN =3D=3D 'undefined'){=0A=
            SB.raise('No Shadowbox skin loaded');=0A=
            return;=0A=
        }=0A=
=0A=
        // apply custom options=0A=
        apply(options, opts || {});=0A=
=0A=
        // add markup=0A=
        var markup =3D SB.SKIN.markup.replace(/\{(\w+)\}/g, function(m, =
p){=0A=
            return SB.LANG[p];=0A=
        });=0A=
        var bd =3D document.body || document.documentElement;=0A=
        SL.append(bd, markup);=0A=
=0A=
        // several fixes for IE6=0A=
        if(ltIE7){=0A=
            // give the container absolute positioning=0A=
            SL.setStyle(SL.get('shadowbox_container'), 'position', =
'absolute');=0A=
            // give shadowbox_body "layout"...whatever that is=0A=
            SL.get('shadowbox_body').style.zoom =3D 1;=0A=
            // use AlphaImageLoader for transparent PNG support=0A=
            var png =3D SB.SKIN.png_fix;=0A=
            if(png && png.constructor =3D=3D Array){=0A=
                for(var i =3D 0; i < png.length; ++i){=0A=
                    var el =3D SL.get(png[i]);=0A=
                    if(el){=0A=
                        var match =3D SL.getStyle(el, =
'background-image').match(/url\("(.*\.png)"\)/);=0A=
                        if(match){=0A=
                            SL.setStyle(el, {=0A=
                                backgroundImage: 'none',=0A=
                                filter: =
'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=3Dtrue,src=3D=
' + match[1] + ',sizingMethod=3Dscale);'=0A=
                            });=0A=
                        }=0A=
                    }=0A=
                }=0A=
            }=0A=
        }=0A=
=0A=
        // compile file type regular expressions here for speed=0A=
        for(var e in options.ext){=0A=
            RE[e] =3D new RegExp('\.(' + options.ext[e].join('|') + =
')\s*$', 'i');=0A=
        }=0A=
=0A=
        // set up window resize event handler=0A=
        var id;=0A=
        SL.addEvent(window, 'resize', function(){=0A=
            // use 50 ms event buffering to prevent jerky window resizing=0A=
            if(id){=0A=
                clearTimeout(id);=0A=
                id =3D null;=0A=
            }=0A=
            id =3D setTimeout(function(){=0A=
                if(ltIE7) fixHeight();=0A=
                resizeContent();=0A=
            }, 50);=0A=
        });=0A=
=0A=
        if(!options.skipSetup) SB.setup();=0A=
        initialized =3D true;=0A=
    };=0A=
=0A=
    /**=0A=
     * Dynamically loads the specified skin for use with Shadowbox. If =
the skin=0A=
     * is included already in the page via the appropriate <script> and =
<link>=0A=
     * tags, this function does not need to be called. Otherwise, this =
function=0A=
     * must be called before window.onload.=0A=
     *=0A=
     * @param   String      skin        The directory where the skin is =
located=0A=
     * @param   String      dir         The directory where the =
Shadowbox skin=0A=
     *                                  files are located=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.loadSkin =3D function(skin, dir){=0A=
        if(!(/\/$/.test(dir))) dir +=3D '/';=0A=
        skin =3D dir + skin + '/';=0A=
=0A=
        // Safari 2.0 fails using DOM, use document.write instead=0A=
        document.write('<link rel=3D"stylesheet" type=3D"text/css" =
href=3D"' + skin + 'skin.css">');=0A=
        document.write('<scr' + 'ipt type=3D"text/javascript" src=3D"' + =
skin + 'skin.js"><\/script>');=0A=
    };=0A=
=0A=
    /**=0A=
     * Dynamically loads the specified language file to be used with =
Shadowbox.=0A=
     * If the language file is included already in the page via the =
appropriate=0A=
     * <script> tag, this function does not need to be called. =
Otherwise, this=0A=
     * function must be called before window.onload.=0A=
     *=0A=
     * @param   String      lang        The language abbreviation (e.g. =
en)=0A=
     * @param   String      dir         The directory where the Shadowbox=0A=
     *                                  language file(s) is located=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.loadLanguage =3D function(lang, dir){=0A=
        if(!(/\/$/.test(dir))) dir +=3D '/';=0A=
=0A=
        // Safari 2.0 fails using DOM, use document.write instead=0A=
        document.write('<scr' + 'ipt type=3D"text/javascript" src=3D"' + =
dir + 'shadowbox-' + lang + '.js"><\/script>');=0A=
    };=0A=
=0A=
    /**=0A=
     * Dynamically loads the specified player(s) to be used with =
Shadowbox. If=0A=
     * the needed player(s) is already included in the page via the =
appropriate=0A=
     * <script> tag(s), this function does not need to be called. =
Otherwise,=0A=
     * this function must be called before window.onload.=0A=
     *=0A=
     * @param   Array       players     The player(s) to load=0A=
     * @param   String      dir         The director where the Shadowbox =
player=0A=
     *                                  file(s) is located=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.loadPlayer =3D function(players, dir){=0A=
        if(typeof players =3D=3D 'string') players =3D [players];=0A=
        if(!(/\/$/.test(dir))) dir +=3D '/';=0A=
=0A=
        for(var i =3D 0, len =3D players.length; i < len; ++i){=0A=
            // Safari 2.0 fails using DOM, use document.write instead=0A=
            document.write('<scr' + 'ipt type=3D"text/javascript" =
src=3D"' + dir + 'shadowbox-' + players[i] + '.js"><\/script>');=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Sets up listeners on the given links that will trigger Shadowbox. =
If no=0A=
     * links are given, this method will set up every anchor element on =
the page=0A=
     * with the appropriate rel attribute. Note: Because AREA elements =
do not=0A=
     * support the rel attribute, they must be explicitly passed to this =
method.=0A=
     *=0A=
     * @param   Array       links       An array (or array-like) list of =
anchor=0A=
     *                                  and/or area elements to set up=0A=
     * @param   Object      opts        Some options to use for the =
given links=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.setup =3D function(links, opts){=0A=
        // get links if none specified=0A=
        if(!links){=0A=
            var links =3D [];=0A=
            var a =3D document.getElementsByTagName('a'), rel;=0A=
            for(var i =3D 0, len =3D a.length; i < len; ++i){=0A=
                rel =3D a[i].getAttribute('rel');=0A=
                if(rel && RE.rel.test(rel)) links[links.length] =3D a[i];=0A=
            }=0A=
        }else if(!links.length){=0A=
            links =3D [links]; // one link=0A=
        }=0A=
=0A=
        var link;=0A=
        for(var i =3D 0, len =3D links.length; i < len; ++i){=0A=
            link =3D links[i];=0A=
            if(typeof link.shadowboxCacheKey =3D=3D 'undefined'){=0A=
                // assign cache key expando=0A=
                // use integer primitive to avoid memory leak in IE=0A=
                link.shadowboxCacheKey =3D cache.length;=0A=
                SL.addEvent(link, 'click', handleClick); // add listener=0A=
            }=0A=
            cache[link.shadowboxCacheKey] =3D this.buildCacheObj(link, =
opts);=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Builds an object from the original link element data to store in =
cache.=0A=
     * These objects contain (most of) the following keys:=0A=
     *=0A=
     * - el: the link element=0A=
     * - title: the linked file title=0A=
     * - player: the player to use for the linked file=0A=
     * - content: the linked file's URL=0A=
     * - gallery: the gallery the file belongs to (optional)=0A=
     * - height: the height of the linked file (only necessary for =
movies)=0A=
     * - width: the width of the linked file (only necessary for movies)=0A=
     * - options: custom options to use (optional)=0A=
     *=0A=
     * @param   HTMLElement     link    The link element to process=0A=
     * @return  Object                  An object representing the link=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.buildCacheObj =3D function(link, opts){=0A=
        var href =3D link.href; // don't use getAttribute() here=0A=
        var o =3D {=0A=
            el:         link,=0A=
            title:      link.getAttribute('title'),=0A=
            player:     getPlayer(href),=0A=
            options:    apply({}, opts || {}), // break the reference=0A=
            content:    href=0A=
        };=0A=
=0A=
        // remove link-level options from top-level options=0A=
        var opt, l_opts =3D ['player', 'title', 'height', 'width', =
'gallery'];=0A=
        for(var i =3D 0, len =3D l_opts.length; i < len; ++i){=0A=
            opt =3D l_opts[i];=0A=
            if(typeof o.options[opt] !=3D 'undefined'){=0A=
                o[opt] =3D o.options[opt];=0A=
                delete o.options[opt];=0A=
            }=0A=
        }=0A=
=0A=
        // HTML options always trump JavaScript options, so do these last=0A=
        var rel =3D link.getAttribute('rel');=0A=
        if(rel){=0A=
            // extract gallery name from shadowbox[name] format=0A=
            var match =3D rel.match(RE.gallery);=0A=
            if(match) o.gallery =3D escape(match[2]);=0A=
=0A=
            // other parameters=0A=
            var params =3D rel.split(';');=0A=
            for(var i =3D 0, len =3D params.length; i < len; ++i){=0A=
                match =3D params[i].match(RE.param);=0A=
                if(match){=0A=
                    if(match[1] =3D=3D 'options'){=0A=
                        eval('apply(o.options, ' + match[2] + ')');=0A=
                    }else{=0A=
                        o[match[1]] =3D match[2];=0A=
                    }=0A=
                }=0A=
            }=0A=
        }=0A=
=0A=
        return o;=0A=
    };=0A=
=0A=
    /**=0A=
     * Applies the given set of options to those currently in use. Note: =
Options=0A=
     * will be reset on Shadowbox.open() so this function is only useful =
after=0A=
     * it has already been called (while Shadowbox is open).=0A=
     *=0A=
     * @param   Object      opts        The options to apply=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.applyOptions =3D function(opts){=0A=
        if(opts){=0A=
            // use apply here to break references=0A=
            default_options =3D apply({}, options); // store default =
options=0A=
            options =3D apply(options, opts); // apply options=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Reverts Shadowbox' options to the last default set in use before=0A=
     * Shadowbox.applyOptions() was called.=0A=
     *=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.revertOptions =3D function(){=0A=
        if(default_options){=0A=
            options =3D default_options; // revert to default options=0A=
            default_options =3D null; // erase for next time=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Opens the given object in Shadowbox. This object may be either an=0A=
     * anchor/area element, or an object similar to the one created by=0A=
     * Shadowbox.buildCacheObj().=0A=
     *=0A=
     * @param   mixed       obj         The object or link element that =
defines=0A=
     *                                  what to display=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.open =3D function(obj, opts){=0A=
        // revert options=0A=
        this.revertOptions();=0A=
=0A=
        // is it a link?=0A=
        if(isLink(obj)){=0A=
            if(typeof obj.shadowboxCacheKey =3D=3D 'undefined' || typeof =
cache[obj.shadowboxCacheKey] =3D=3D 'undefined'){=0A=
                // link element that hasn't been set up before=0A=
                // create on-the-fly object=0A=
                obj =3D this.buildCacheObj(obj, opts);=0A=
            }else{=0A=
                // link element that has been set up before, get from =
cache=0A=
                obj =3D cache[obj.shadowboxCacheKey];=0A=
            }=0A=
        }=0A=
=0A=
        // is it already a gallery?=0A=
        if(obj.constructor =3D=3D Array){=0A=
            gallery =3D obj;=0A=
            current =3D 0;=0A=
        }else{=0A=
            // create a copy so it doesn't get modified later=0A=
            var copy =3D apply({}, obj);=0A=
=0A=
            // is it part of a gallery?=0A=
            if(!obj.gallery){ // single item, no gallery=0A=
                gallery =3D [copy];=0A=
                current =3D 0;=0A=
            }else{=0A=
                current =3D null; // reset current=0A=
                gallery =3D []; // clear the current gallery=0A=
                var ci;=0A=
                for(var i =3D 0, len =3D cache.length; i < len; ++i){=0A=
                    ci =3D cache[i];=0A=
                    if(ci.gallery){=0A=
                        if(ci.content =3D=3D obj.content=0A=
                            && ci.gallery =3D=3D obj.gallery=0A=
                            && ci.title =3D=3D obj.title){ // compare =
content, gallery, & title=0A=
                                current =3D gallery.length; // key =
element found=0A=
                        }=0A=
                        if(ci.gallery =3D=3D obj.gallery){=0A=
                            gallery.push(apply({}, ci));=0A=
                        }=0A=
                    }=0A=
                }=0A=
                // if not found in cache, prepend to front of gallery=0A=
                if(current =3D=3D null){=0A=
                    gallery.unshift(copy);=0A=
                    current =3D 0;=0A=
                }=0A=
            }=0A=
        }=0A=
=0A=
        obj =3D gallery[current];=0A=
=0A=
        // apply custom options=0A=
        if(obj.options || opts){=0A=
            // use apply here to break references=0A=
            this.applyOptions(apply(apply({}, obj.options || {}), opts =
|| {}));=0A=
        }=0A=
=0A=
        // filter gallery for unsupported elements=0A=
        var match, r;=0A=
        for(var i =3D 0, len =3D gallery.length; i < len; ++i){=0A=
            r =3D false; // remove the element?=0A=
            if(gallery[i].player =3D=3D 'unsupported'){ // don't support =
this at all=0A=
                r =3D true;=0A=
            }else if(match =3D RE.unsupported.exec(gallery[i].player)){ =
// handle unsupported elements=0A=
                if(options.handleUnsupported =3D=3D 'link'){=0A=
                    gallery[i].player =3D 'html';=0A=
                    // generate a link to the appropriate plugin =
download page(s)=0A=
                    var s, a, oe =3D options.errors;=0A=
                    switch(match[1]){=0A=
                        case 'qtwmp':=0A=
                            s =3D 'either';=0A=
                            a =3D [oe.qt.url, oe.qt.name, oe.wmp.url, =
oe.wmp.name];=0A=
                        break;=0A=
                        case 'qtf4m':=0A=
                            s =3D 'shared';=0A=
                            a =3D [oe.qt.url, oe.qt.name, oe.f4m.url, =
oe.f4m.name];=0A=
                        break;=0A=
                        default:=0A=
                            s =3D 'single';=0A=
                            if(match[1] =3D=3D 'swf' || match[1] =3D=3D =
'flv') match[1] =3D 'fla';=0A=
                            a =3D [oe[match[1]].url, oe[match[1]].name];=0A=
                    }=0A=
                    var msg =3D SB.LANG.errors[s].replace(/\{(\d+)\}/g, =
function(m, i){=0A=
                        return a[i];=0A=
                    });=0A=
                    gallery[i].content =3D '<div =
class=3D"shadowbox_message">' + msg + '</div>';=0A=
                }else{=0A=
                    r =3D true;=0A=
                }=0A=
            }else if(gallery[i].player =3D=3D 'inline'){ // handle =
inline elements=0A=
                // retrieve the innerHTML of the inline element=0A=
                var match =3D RE.inline.exec(gallery[i].content);=0A=
                if(match){=0A=
                    var el;=0A=
                    if(el =3D SL.get(match[1])){=0A=
                        gallery[i].content =3D el.innerHTML;=0A=
                    }else{=0A=
                        SB.raise('Cannot find element with id ' + =
match[1]);=0A=
                    }=0A=
                }else{=0A=
                    SB.raise('Cannot find element id for inline =
content');=0A=
                }=0A=
            }=0A=
            if(r){=0A=
                gallery.splice(i, 1); // remove the element from the =
gallery=0A=
                if(i < current){=0A=
                    --current;=0A=
                }else if(i =3D=3D current){=0A=
                    // if current is unsupported, look for supported =
neighbor=0A=
                    current =3D i > 0 ? current - 1 : i;=0A=
                }=0A=
                --i; // decrement to account for splice=0A=
                len =3D gallery.length; // gallery.length has changed!=0A=
            }=0A=
        }=0A=
=0A=
        // anything left?=0A=
        if(gallery.length){=0A=
            // fire onOpen hook=0A=
            if(options.onOpen && typeof options.onOpen =3D=3D =
'function'){=0A=
                options.onOpen(obj);=0A=
            }=0A=
=0A=
            if(!activated){=0A=
                // set initial dimensions & load=0A=
                setDimensions(options.initialHeight, =
options.initialWidth);=0A=
                adjustHeight(dims.inner_h, dims.top, false);=0A=
                adjustWidth(dims.width, false);=0A=
                toggleVisible(loadContent);=0A=
            } else {=0A=
                loadContent();=0A=
            }=0A=
=0A=
            activated =3D true;=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Jumps to the piece in the current gallery with index num.=0A=
     *=0A=
     * @param   Number      num     The gallery index to view=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.change =3D function(num){=0A=
        if(!gallery) return; // no current gallery=0A=
        if(!gallery[num]){ // index does not exist=0A=
            if(!options.continuous){=0A=
                return;=0A=
            }else{=0A=
                num =3D num < 0 ? (gallery.length - 1) : 0; // loop=0A=
            }=0A=
        }=0A=
=0A=
        if(typeof slide_timer =3D=3D 'number'){=0A=
            clearTimeout(slide_timer);=0A=
            slide_timer =3D null;=0A=
            slide_delay =3D slide_start =3D 0; // reset slideshow =
variables=0A=
        }=0A=
        current =3D num; // update current=0A=
=0A=
        if(options.onChange && typeof options.onChange =3D=3D =
'function'){=0A=
            options.onChange(gallery[current]); // fire onChange handler=0A=
        }=0A=
=0A=
        loadContent();=0A=
    };=0A=
=0A=
    /**=0A=
     * Jumps to the next piece in the gallery.=0A=
     *=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.next =3D function(){=0A=
        this.change(current + 1);=0A=
    };=0A=
=0A=
    /**=0A=
     * Jumps to the previous piece in the gallery.=0A=
     *=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.previous =3D function(){=0A=
        this.change(current - 1);=0A=
    };=0A=
=0A=
    /**=0A=
     * Sets the timer for the next image in the slideshow to be =
displayed.=0A=
     *=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.play =3D function(){=0A=
        if(!hasNext()) return;=0A=
        if(!slide_delay) slide_delay =3D options.slideshowDelay * 1000;=0A=
        if(slide_delay){=0A=
            slide_start =3D new Date().getTime();=0A=
            slide_timer =3D setTimeout(function(){=0A=
                slide_delay =3D slide_start =3D 0; // reset slideshow=0A=
                SB.next();=0A=
            }, slide_delay);=0A=
=0A=
            // change play nav to pause=0A=
            toggleNav('play', false);=0A=
            toggleNav('pause', true);=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Pauses the current slideshow.=0A=
     *=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.pause =3D function(){=0A=
        if(typeof slide_timer =3D=3D 'number'){=0A=
            var time =3D new Date().getTime();=0A=
            slide_delay =3D Math.max(0, slide_delay - (time - =
slide_start));=0A=
=0A=
            // any delay left on current slide? if so, stop the timer=0A=
            if(slide_delay){=0A=
                clearTimeout(slide_timer);=0A=
                slide_timer =3D 'paused';=0A=
            }=0A=
=0A=
            // change pause nav to play=0A=
            toggleNav('pause', false);=0A=
            toggleNav('play', true);=0A=
        }=0A=
    };=0A=
=0A=
    /**=0A=
     * Deactivates Shadowbox.=0A=
     *=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.close =3D function(){=0A=
        if(!activated) return; // already closed=0A=
=0A=
        // stop listening for keys=0A=
        listenKeys(false);=0A=
        // hide=0A=
        toggleVisible(false);=0A=
        // remove the content=0A=
        if(content){=0A=
            content.remove();=0A=
            content =3D null;=0A=
        }=0A=
=0A=
        // clear slideshow variables=0A=
        if(typeof slide_timer =3D=3D 'number') clearTimeout(slide_timer);=0A=
        slide_timer =3D null;=0A=
        slide_delay =3D 0;=0A=
=0A=
        // fire onClose handler=0A=
        if(options.onClose && typeof options.onClose =3D=3D 'function'){=0A=
            options.onClose(gallery[current]);=0A=
        }=0A=
=0A=
        activated =3D false;=0A=
    };=0A=
=0A=
    /**=0A=
     * Clears Shadowbox' cache and removes listeners and expandos from =
all=0A=
     * cached link elements. May be used to completely reset Shadowbox =
in case=0A=
     * links on a page change.=0A=
     *=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.clearCache =3D function(){=0A=
        for(var i =3D 0, len =3D cache.length; i < len; ++i){=0A=
            if(cache[i].el){=0A=
                SL.removeEvent(cache[i].el, 'click', handleClick);=0A=
                delete cache[i].el.shadowboxCacheKey; // remove expando=0A=
            }=0A=
        }=0A=
        cache =3D [];=0A=
    };=0A=
=0A=
    /**=0A=
     * Gets an object that lists which plugins are supported by the =
client. The=0A=
     * keys of this object will be:=0A=
     *=0A=
     * - fla: Adobe Flash Player=0A=
     * - qt: QuickTime Player=0A=
     * - wmp: Windows Media Player=0A=
     * - f4m: Flip4Mac QuickTime Player=0A=
     *=0A=
     * @return  Object          The plugins object=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.getPlugins =3D function(){=0A=
        return plugins;=0A=
    };=0A=
=0A=
    /**=0A=
     * Gets the current options object in use.=0A=
     *=0A=
     * @return  Object          The options object=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.getOptions =3D function(){=0A=
        return options;=0A=
    };=0A=
=0A=
    /**=0A=
     * Gets the current gallery object.=0A=
     *=0A=
     * @return  Object          The current gallery item=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.getCurrent =3D function(){=0A=
        return gallery[current];=0A=
    };=0A=
=0A=
    /**=0A=
     * Gets the current version number of Shadowbox.=0A=
     *=0A=
     * @return  String          The current version=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.getVersion =3D function(){=0A=
        return version;=0A=
    };=0A=
=0A=
    /**=0A=
     * Returns an object containing information about the current client=0A=
     * configuration.=0A=
     *=0A=
     * @return  Object          The object containing client data=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.getClient =3D function(){=0A=
        return client;=0A=
    };=0A=
=0A=
    /**=0A=
     * Returns the current content object in use.=0A=
     *=0A=
     * @return  Object          The current content object=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.getContent =3D function(){=0A=
        return content;=0A=
    };=0A=
=0A=
    /**=0A=
     * Gets the current dimensions of Shadowbox as calculated by=0A=
     * setDimensions().=0A=
     *=0A=
     * @return  Object          The current dimensions of Shadowbox=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.getDimensions =3D function(){=0A=
        return dims;=0A=
    };=0A=
=0A=
    /**=0A=
     * Handles all Shadowbox exceptions (errors). Calls the exception=0A=
     * handler callback if one is present (see handleException option) or=0A=
     * throws a new exception.=0A=
     *=0A=
     * @param   String      e       The error message=0A=
     * @return  void=0A=
     * @public=0A=
     * @static=0A=
     */=0A=
    Shadowbox.raise =3D function(e){=0A=
        if(typeof options.handleException =3D=3D 'function'){=0A=
            options.handleException(e);=0A=
        }else{=0A=
            throw e;=0A=
        }=0A=
    };=0A=
=0A=
})();
------=_NextPart_000_0000_01CC8838.1DD5D1C0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mike-wong.ch/Scripts/swfobject_modified.js

/*!	SWFObject v2.0 <http://code.google.com/p/swfobject/>=0A=
	Copyright (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der =
Sluis=0A=
	This software is released under the MIT License =
<http://www.opensource.org/licenses/mit-license.php>=0A=
*/=0A=
=0A=
var swfobject =3D function() {=0A=
	=0A=
	var UNDEF =3D "undefined",=0A=
		OBJECT =3D "object",=0A=
		SHOCKWAVE_FLASH =3D "Shockwave Flash",=0A=
		SHOCKWAVE_FLASH_AX =3D "ShockwaveFlash.ShockwaveFlash",=0A=
		FLASH_MIME_TYPE =3D "application/x-shockwave-flash",=0A=
		EXPRESS_INSTALL_ID =3D "SWFObjectExprInst",=0A=
		=0A=
		win =3D window,=0A=
		doc =3D document,=0A=
		nav =3D navigator,=0A=
		=0A=
		domLoadFnArr =3D [],=0A=
		regObjArr =3D [],=0A=
		timer =3D null,=0A=
		storedAltContent =3D null,=0A=
		storedAltContentId =3D null,=0A=
		isDomLoaded =3D false,=0A=
		isExpressInstallActive =3D false;=0A=
	=0A=
	/* Centralized function for browser feature detection=0A=
		- Proprietary feature detection (conditional compiling) is used to =
detect Internet Explorer's features=0A=
		- User agent string detection is only used when no alternative is =
possible=0A=
		- Is executed directly for optimal performance=0A=
	*/	=0A=
	var ua =3D function() {=0A=
		var w3cdom =3D typeof doc.getElementById !=3D UNDEF && typeof =
doc.getElementsByTagName !=3D UNDEF && typeof doc.createElement !=3D =
UNDEF && typeof doc.appendChild !=3D UNDEF && typeof doc.replaceChild =
!=3D UNDEF && typeof doc.removeChild !=3D UNDEF && typeof doc.cloneNode =
!=3D UNDEF,=0A=
			playerVersion =3D [0,0,0],=0A=
			d =3D null;=0A=
		if (typeof nav.plugins !=3D UNDEF && typeof =
nav.plugins[SHOCKWAVE_FLASH] =3D=3D OBJECT) {=0A=
			d =3D nav.plugins[SHOCKWAVE_FLASH].description;=0A=
			if (d) {=0A=
				d =3D d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");=0A=
				playerVersion[0] =3D parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);=0A=
				playerVersion[1] =3D parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);=0A=
				playerVersion[2] =3D /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, =
"$1"), 10) : 0;=0A=
			}=0A=
		}=0A=
		else if (typeof win.ActiveXObject !=3D UNDEF) {=0A=
			var a =3D null, fp6Crash =3D false;=0A=
			try {=0A=
				a =3D new ActiveXObject(SHOCKWAVE_FLASH_AX + ".7");=0A=
			}=0A=
			catch(e) {=0A=
				try { =0A=
					a =3D new ActiveXObject(SHOCKWAVE_FLASH_AX + ".6");=0A=
					playerVersion =3D [6,0,21];=0A=
					a.AllowScriptAccess =3D "always";  // Introduced in fp6.0.47=0A=
				}=0A=
				catch(e) {=0A=
					if (playerVersion[0] =3D=3D 6) {=0A=
						fp6Crash =3D true;=0A=
					}=0A=
				}=0A=
				if (!fp6Crash) {=0A=
					try {=0A=
						a =3D new ActiveXObject(SHOCKWAVE_FLASH_AX);=0A=
					}=0A=
					catch(e) {}=0A=
				}=0A=
			}=0A=
			if (!fp6Crash && a) { // a will return null when ActiveX is disabled=0A=
				try {=0A=
					d =3D a.GetVariable("$version");  // Will crash fp6.0.21/23/29=0A=
					if (d) {=0A=
						d =3D d.split(" ")[1].split(",");=0A=
						playerVersion =3D [parseInt(d[0], 10), parseInt(d[1], 10), =
parseInt(d[2], 10)];=0A=
					}=0A=
				}=0A=
				catch(e) {}=0A=
			}=0A=
		}=0A=
		var u =3D nav.userAgent.toLowerCase(),=0A=
			p =3D nav.platform.toLowerCase(),=0A=
			webkit =3D /webkit/.test(u) ? =
parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // =
returns either the webkit version or false if not webkit=0A=
			ie =3D false,=0A=
			windows =3D p ? /win/.test(p) : /win/.test(u),=0A=
			mac =3D p ? /mac/.test(p) : /mac/.test(u);=0A=
		/*@cc_on=0A=
			ie =3D true;=0A=
			@if (@_win32)=0A=
				windows =3D true;=0A=
			@elif (@_mac)=0A=
				mac =3D true;=0A=
			@end=0A=
		@*/=0A=
		return { w3cdom:w3cdom, pv:playerVersion, webkit:webkit, ie:ie, =
win:windows, mac:mac };=0A=
	}();=0A=
=0A=
	/* Cross-browser onDomLoad=0A=
		- Based on Dean Edwards' solution: =
http://dean.edwards.name/weblog/2006/06/again/=0A=
		- Will fire an event as soon as the DOM of a page is loaded (supported =
by Gecko based browsers - like Firefox -, IE, Opera9+, Safari)=0A=
	*/ =0A=
	var onDomLoad =3D function() {=0A=
		if (!ua.w3cdom) {=0A=
			return;=0A=
		}=0A=
		addDomLoadEvent(main);=0A=
		if (ua.ie && ua.win) {=0A=
			try {  // Avoid a possible Operation Aborted error=0A=
				doc.write("<scr" + "ipt id=3D__ie_ondomload defer=3Dtrue =
src=3D//:></scr" + "ipt>"); // String is split into pieces to avoid =
Norton AV to add code that can cause errors =0A=
				var s =3D getElementById("__ie_ondomload");=0A=
				if (s) {=0A=
					s.onreadystatechange =3D function() {=0A=
						if (this.readyState =3D=3D "complete") {=0A=
							this.parentNode.removeChild(this);=0A=
							callDomLoadFunctions();=0A=
						}=0A=
					};=0A=
				}=0A=
			}=0A=
			catch(e) {}=0A=
		}=0A=
		if (ua.webkit && typeof doc.readyState !=3D UNDEF) {=0A=
			timer =3D setInterval(function() { if =
(/loaded|complete/.test(doc.readyState)) { callDomLoadFunctions(); }}, =
10);=0A=
		}=0A=
		if (typeof doc.addEventListener !=3D UNDEF) {=0A=
			doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, null);=0A=
		}=0A=
		addLoadEvent(callDomLoadFunctions);=0A=
	}();=0A=
	=0A=
	function callDomLoadFunctions() {=0A=
		if (isDomLoaded) {=0A=
			return;=0A=
		}=0A=
		if (ua.ie && ua.win) { // Test if we can really add elements to the =
DOM; we don't want to fire it too early=0A=
			var s =3D createElement("span");=0A=
			try { // Avoid a possible Operation Aborted error=0A=
				var t =3D doc.getElementsByTagName("body")[0].appendChild(s);=0A=
				t.parentNode.removeChild(t);=0A=
			}=0A=
			catch (e) {=0A=
				return;=0A=
			}=0A=
		}=0A=
		isDomLoaded =3D true;=0A=
		if (timer) {=0A=
			clearInterval(timer);=0A=
			timer =3D null;=0A=
		}=0A=
		var dl =3D domLoadFnArr.length;=0A=
		for (var i =3D 0; i < dl; i++) {=0A=
			domLoadFnArr[i]();=0A=
		}=0A=
	}=0A=
	=0A=
	function addDomLoadEvent(fn) {=0A=
		if (isDomLoaded) {=0A=
			fn();=0A=
		}=0A=
		else { =0A=
			domLoadFnArr[domLoadFnArr.length] =3D fn; // Array.push() is only =
available in IE5.5+=0A=
		}=0A=
	}=0A=
	=0A=
	/* Cross-browser onload=0A=
		- Based on James Edwards' solution: =
http://brothercake.com/site/resources/scripts/onload/=0A=
		- Will fire an event as soon as a web page including all of its assets =
are loaded =0A=
	 */=0A=
	function addLoadEvent(fn) {=0A=
		if (typeof win.addEventListener !=3D UNDEF) {=0A=
			win.addEventListener("load", fn, false);=0A=
		}=0A=
		else if (typeof doc.addEventListener !=3D UNDEF) {=0A=
			doc.addEventListener("load", fn, false);=0A=
		}=0A=
		else if (typeof win.attachEvent !=3D UNDEF) {=0A=
			win.attachEvent("onload", fn);=0A=
		}=0A=
		else if (typeof win.onload =3D=3D "function") {=0A=
			var fnOld =3D win.onload;=0A=
			win.onload =3D function() {=0A=
				fnOld();=0A=
				fn();=0A=
			};=0A=
		}=0A=
		else {=0A=
			win.onload =3D fn;=0A=
		}=0A=
	}=0A=
	=0A=
	/* Main function=0A=
		- Will preferably execute onDomLoad, otherwise onload (as a fallback)=0A=
	*/=0A=
	function main() { // Static publishing only=0A=
		var rl =3D regObjArr.length;=0A=
		for (var i =3D 0; i < rl; i++) { // For each registered object element=0A=
			var id =3D regObjArr[i].id;=0A=
			if (ua.pv[0] > 0) {=0A=
				var obj =3D getElementById(id);=0A=
				if (obj) {=0A=
					regObjArr[i].width =3D obj.getAttribute("width") ? =
obj.getAttribute("width") : "0";=0A=
					regObjArr[i].height =3D obj.getAttribute("height") ? =
obj.getAttribute("height") : "0";=0A=
					if (hasPlayerVersion(regObjArr[i].swfVersion)) { // Flash plug-in =
version >=3D Flash content version: Houston, we have a match!=0A=
						if (ua.webkit && ua.webkit < 312) { // Older webkit engines ignore =
the object element's nested param elements=0A=
							fixParams(obj);=0A=
						}=0A=
						setVisibility(id, true);=0A=
					}=0A=
					else if (regObjArr[i].expressInstall && !isExpressInstallActive && =
hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) { // Show the Adobe =
Express Install dialog if set by the web page author and if supported =
(fp6.0.65+ on Win/Mac OS only)=0A=
						showExpressInstall(regObjArr[i]);=0A=
					}=0A=
					else { // Flash plug-in and Flash content version mismatch: display =
alternative content instead of Flash content=0A=
						displayAltContent(obj);=0A=
					}=0A=
				}=0A=
			}=0A=
			else {  // If no fp is installed, we let the object element do its =
job (show alternative content)=0A=
				setVisibility(id, true);=0A=
			}=0A=
		}=0A=
	}=0A=
	=0A=
	/* Fix nested param elements, which are ignored by older webkit engines=0A=
		- This includes Safari up to and including version 1.2.2 on Mac OS 10.3=0A=
		- Fall back to the proprietary embed element=0A=
	*/=0A=
	function fixParams(obj) {=0A=
		var nestedObj =3D obj.getElementsByTagName(OBJECT)[0];=0A=
		if (nestedObj) {=0A=
			var e =3D createElement("embed"), a =3D nestedObj.attributes;=0A=
			if (a) {=0A=
				var al =3D a.length;=0A=
				for (var i =3D 0; i < al; i++) {=0A=
					if (a[i].nodeName.toLowerCase() =3D=3D "data") {=0A=
						e.setAttribute("src", a[i].nodeValue);=0A=
					}=0A=
					else {=0A=
						e.setAttribute(a[i].nodeName, a[i].nodeValue);=0A=
					}=0A=
				}=0A=
			}=0A=
			var c =3D nestedObj.childNodes;=0A=
			if (c) {=0A=
				var cl =3D c.length;=0A=
				for (var j =3D 0; j < cl; j++) {=0A=
					if (c[j].nodeType =3D=3D 1 && c[j].nodeName.toLowerCase() =3D=3D =
"param") {=0A=
						e.setAttribute(c[j].getAttribute("name"), =
c[j].getAttribute("value"));=0A=
					}=0A=
				}=0A=
			}=0A=
			obj.parentNode.replaceChild(e, obj);=0A=
		}=0A=
	}=0A=
	=0A=
	/* Fix hanging audio/video threads and force open sockets and =
NetConnections to disconnect=0A=
		- Occurs when unloading a web page in IE using fp8+ and =
innerHTML/outerHTML=0A=
		- Dynamic publishing only=0A=
	*/=0A=
	function fixObjectLeaks(id) {=0A=
		if (ua.ie && ua.win && hasPlayerVersion("8.0.0")) {=0A=
			win.attachEvent("onunload", function () {=0A=
				var obj =3D getElementById(id);=0A=
				if (obj) {=0A=
					for (var i in obj) {=0A=
						if (typeof obj[i] =3D=3D "function") {=0A=
							obj[i] =3D function() {};=0A=
						}=0A=
					}=0A=
					obj.parentNode.removeChild(obj);=0A=
				}=0A=
			});=0A=
		}=0A=
	}=0A=
	=0A=
	/* Show the Adobe Express Install dialog=0A=
		- Reference: =
http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=3D6a253b75=0A=
	*/=0A=
	function showExpressInstall(regObj) {=0A=
		isExpressInstallActive =3D true;=0A=
		var obj =3D getElementById(regObj.id);=0A=
		if (obj) {=0A=
			if (regObj.altContentId) {=0A=
				var ac =3D getElementById(regObj.altContentId);=0A=
				if (ac) {=0A=
					storedAltContent =3D ac;=0A=
					storedAltContentId =3D regObj.altContentId;=0A=
				}=0A=
			}=0A=
			else {=0A=
				storedAltContent =3D abstractAltContent(obj);=0A=
			}=0A=
			if (!(/%$/.test(regObj.width)) && parseInt(regObj.width, 10) < 310) {=0A=
				regObj.width =3D "310";=0A=
			}=0A=
			if (!(/%$/.test(regObj.height)) && parseInt(regObj.height, 10) < 137) =
{=0A=
				regObj.height =3D "137";=0A=
			}=0A=
			doc.title =3D doc.title.slice(0, 47) + " - Flash Player Installation";=0A=
			var pt =3D ua.ie && ua.win ? "ActiveX" : "PlugIn",=0A=
				dt =3D doc.title,=0A=
				fv =3D "MMredirectURL=3D" + win.location + "&MMplayerType=3D" + pt + =
"&MMdoctitle=3D" + dt,=0A=
				replaceId =3D regObj.id;=0A=
			// For IE when a SWF is loading (AND: not available in cache) wait =
for the onload event to fire to remove the original object element=0A=
			// In IE you cannot properly cancel a loading SWF file without =
breaking browser load references, also obj.onreadystatechange doesn't =
work=0A=
			if (ua.ie && ua.win && obj.readyState !=3D 4) {=0A=
				var newObj =3D createElement("div");=0A=
				replaceId +=3D "SWFObjectNew";=0A=
				newObj.setAttribute("id", replaceId);=0A=
				obj.parentNode.insertBefore(newObj, obj); // Insert placeholder div =
that will be replaced by the object element that loads expressinstall.swf=0A=
				obj.style.display =3D "none";=0A=
				win.attachEvent("onload", function() { =
obj.parentNode.removeChild(obj); });=0A=
			}=0A=
			createSWF({ data:regObj.expressInstall, id:EXPRESS_INSTALL_ID, =
width:regObj.width, height:regObj.height }, { flashvars:fv }, replaceId);=0A=
		}=0A=
	}=0A=
	=0A=
	/* Functions to abstract and display alternative content=0A=
	*/=0A=
	function displayAltContent(obj) {=0A=
		if (ua.ie && ua.win && obj.readyState !=3D 4) {=0A=
			// For IE when a SWF is loading (AND: not available in cache) wait =
for the onload event to fire to remove the original object element=0A=
			// In IE you cannot properly cancel a loading SWF file without =
breaking browser load references, also obj.onreadystatechange doesn't =
work=0A=
			var el =3D createElement("div");=0A=
			obj.parentNode.insertBefore(el, obj); // Insert placeholder div that =
will be replaced by the alternative content=0A=
			el.parentNode.replaceChild(abstractAltContent(obj), el);=0A=
			obj.style.display =3D "none";=0A=
			win.attachEvent("onload", function() { =
obj.parentNode.removeChild(obj); });=0A=
		}=0A=
		else {=0A=
			obj.parentNode.replaceChild(abstractAltContent(obj), obj);=0A=
		}=0A=
	}	=0A=
=0A=
	function abstractAltContent(obj) {=0A=
		var ac =3D createElement("div");=0A=
		if (ua.win && ua.ie) {=0A=
			ac.innerHTML =3D obj.innerHTML;=0A=
		}=0A=
		else {=0A=
			var nestedObj =3D obj.getElementsByTagName(OBJECT)[0];=0A=
			if (nestedObj) {=0A=
				var c =3D nestedObj.childNodes;=0A=
				if (c) {=0A=
					var cl =3D c.length;=0A=
					for (var i =3D 0; i < cl; i++) {=0A=
						if (!(c[i].nodeType =3D=3D 1 && c[i].nodeName.toLowerCase() =3D=3D =
"param") && !(c[i].nodeType =3D=3D 8)) {=0A=
							ac.appendChild(c[i].cloneNode(true));=0A=
						}=0A=
					}=0A=
				}=0A=
			}=0A=
		}=0A=
		return ac;=0A=
	}=0A=
	=0A=
	/* Cross-browser dynamic SWF creation=0A=
	*/=0A=
	function createSWF(attObj, parObj, id) {=0A=
		var r, el =3D getElementById(id);=0A=
		if (typeof attObj.id =3D=3D UNDEF) { // if no 'id' is defined for the =
object element, it will inherit the 'id' from the alternative content=0A=
			attObj.id =3D id;=0A=
		}=0A=
		if (ua.ie && ua.win) { // IE, the object element and W3C DOM methods =
do not combine: fall back to outerHTML=0A=
			var att =3D "";=0A=
			for (var i in attObj) {=0A=
				if (attObj[i] !=3D Object.prototype[i]) { // Filter out prototype =
additions from other potential libraries, like =
Object.prototype.toJSONString =3D function() {}=0A=
					if (i =3D=3D "data") {=0A=
						parObj.movie =3D attObj[i];=0A=
					}=0A=
					else if (i.toLowerCase() =3D=3D "styleclass") { // 'class' is an =
ECMA4 reserved keyword=0A=
						att +=3D ' class=3D"' + attObj[i] + '"';=0A=
					}=0A=
					else if (i !=3D "classid") {=0A=
						att +=3D ' ' + i + '=3D"' + attObj[i] + '"';=0A=
					}=0A=
				}=0A=
			}=0A=
			var par =3D "";=0A=
			for (var j in parObj) {=0A=
				if (parObj[j] !=3D Object.prototype[j]) { // Filter out prototype =
additions from other potential libraries=0A=
					par +=3D '<param name=3D"' + j + '" value=3D"' + parObj[j] + '" />';=0A=
				}=0A=
			}=0A=
			el.outerHTML =3D '<object =
classid=3D"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + =
par + '</object>';=0A=
			fixObjectLeaks(attObj.id); // This bug affects dynamic publishing only=0A=
			r =3D getElementById(attObj.id);	=0A=
		}=0A=
		else if (ua.webkit && ua.webkit < 312) { // Older webkit engines =
ignore the object element's nested param elements: fall back to the =
proprietary embed element=0A=
			var e =3D createElement("embed");=0A=
			e.setAttribute("type", FLASH_MIME_TYPE);=0A=
			for (var k in attObj) {=0A=
				if (attObj[k] !=3D Object.prototype[k]) { // Filter out prototype =
additions from other potential libraries=0A=
					if (k =3D=3D "data") {=0A=
						e.setAttribute("src", attObj[k]);=0A=
					}=0A=
					else if (k.toLowerCase() =3D=3D "styleclass") { // 'class' is an =
ECMA4 reserved keyword=0A=
						e.setAttribute("class", attObj[k]);=0A=
					}=0A=
					else if (k !=3D "classid") { // Filter out IE specific attribute=0A=
						e.setAttribute(k, attObj[k]);=0A=
					}=0A=
				}=0A=
			}=0A=
			for (var l in parObj) {=0A=
				if (parObj[l] !=3D Object.prototype[l]) { // Filter out prototype =
additions from other potential libraries=0A=
					if (l !=3D "movie") { // Filter out IE specific param element=0A=
						e.setAttribute(l, parObj[l]);=0A=
					}=0A=
				}=0A=
			}=0A=
			el.parentNode.replaceChild(e, el);=0A=
			r =3D e;=0A=
		}=0A=
		else { // Well-behaving browsers=0A=
			var o =3D createElement(OBJECT);=0A=
			o.setAttribute("type", FLASH_MIME_TYPE);=0A=
			for (var m in attObj) {=0A=
				if (attObj[m] !=3D Object.prototype[m]) { // Filter out prototype =
additions from other potential libraries=0A=
					if (m.toLowerCase() =3D=3D "styleclass") { // 'class' is an ECMA4 =
reserved keyword=0A=
						o.setAttribute("class", attObj[m]);=0A=
					}=0A=
					else if (m !=3D "classid") { // Filter out IE specific attribute=0A=
						o.setAttribute(m, attObj[m]);=0A=
					}=0A=
				}=0A=
			}=0A=
			for (var n in parObj) {=0A=
				if (parObj[n] !=3D Object.prototype[n] && n !=3D "movie") { // =
Filter out prototype additions from other potential libraries and IE =
specific param element=0A=
					createObjParam(o, n, parObj[n]);=0A=
				}=0A=
			}=0A=
			el.parentNode.replaceChild(o, el);=0A=
			r =3D o;=0A=
		}=0A=
		return r;=0A=
	}=0A=
	=0A=
	function createObjParam(el, pName, pValue) {=0A=
		var p =3D createElement("param");=0A=
		p.setAttribute("name", pName);	=0A=
		p.setAttribute("value", pValue);=0A=
		el.appendChild(p);=0A=
	}=0A=
	=0A=
	function getElementById(id) {=0A=
		return doc.getElementById(id);=0A=
	}=0A=
	=0A=
	function createElement(el) {=0A=
		return doc.createElement(el);=0A=
	}=0A=
	=0A=
	function hasPlayerVersion(rv) {=0A=
		var pv =3D ua.pv, v =3D rv.split(".");=0A=
		v[0] =3D parseInt(v[0], 10);=0A=
		v[1] =3D parseInt(v[1], 10);=0A=
		v[2] =3D parseInt(v[2], 10);=0A=
		return (pv[0] > v[0] || (pv[0] =3D=3D v[0] && pv[1] > v[1]) || (pv[0] =
=3D=3D v[0] && pv[1] =3D=3D v[1] && pv[2] >=3D v[2])) ? true : false;=0A=
	}=0A=
	=0A=
	/* Cross-browser dynamic CSS creation=0A=
		- Based on Bobby van der Sluis' solution: =
http://www.bobbyvandersluis.com/articles/dynamicCSS.php=0A=
	*/	=0A=
	function createCSS(sel, decl) {=0A=
		if (ua.ie && ua.mac) {=0A=
			return;=0A=
		}=0A=
		var h =3D doc.getElementsByTagName("head")[0], s =3D =
createElement("style");=0A=
		s.setAttribute("type", "text/css");=0A=
		s.setAttribute("media", "screen");=0A=
		if (!(ua.ie && ua.win) && typeof doc.createTextNode !=3D UNDEF) {=0A=
			s.appendChild(doc.createTextNode(sel + " {" + decl + "}"));=0A=
		}=0A=
		h.appendChild(s);=0A=
		if (ua.ie && ua.win && typeof doc.styleSheets !=3D UNDEF && =
doc.styleSheets.length > 0) {=0A=
			var ls =3D doc.styleSheets[doc.styleSheets.length - 1];=0A=
			if (typeof ls.addRule =3D=3D OBJECT) {=0A=
				ls.addRule(sel, decl);=0A=
			}=0A=
		}=0A=
	}=0A=
	=0A=
	function setVisibility(id, isVisible) {=0A=
		var v =3D isVisible ? "visible" : "hidden";=0A=
		if (isDomLoaded) {=0A=
			getElementById(id).style.visibility =3D v;=0A=
		}=0A=
		else {=0A=
			createCSS("#" + id, "visibility:" + v);=0A=
		}=0A=
	}=0A=
	=0A=
	function getTargetVersion(obj) {=0A=
	    if (!obj)=0A=
	        return 0;=0A=
		var c =3D obj.childNodes;=0A=
		var cl =3D c.length;=0A=
		for (var i =3D 0; i < cl; i++) {=0A=
			if (c[i].nodeType =3D=3D 1 && c[i].nodeName.toLowerCase() =3D=3D =
"object") {=0A=
			    c =3D c[i].childNodes;=0A=
			    cl =3D c.length;=0A=
			    i =3D 0;=0A=
			}     =0A=
			if (c[i].nodeType =3D=3D 1 && c[i].nodeName.toLowerCase() =3D=3D =
"param" && c[i].getAttribute("name") =3D=3D "swfversion") {=0A=
			   return c[i].getAttribute("value"); =0A=
			}=0A=
		}=0A=
		return 0;=0A=
	}=0A=
    =0A=
	function getExpressInstall(obj) {=0A=
	    if (!obj)=0A=
	        return "";=0A=
		var c =3D obj.childNodes;=0A=
		var cl =3D c.length;=0A=
		for (var i =3D 0; i < cl; i++) {=0A=
			if (c[i].nodeType =3D=3D 1 && c[i].nodeName.toLowerCase() =3D=3D =
"object") {=0A=
			    c =3D c[i].childNodes;=0A=
			    cl =3D c.length;=0A=
			    i =3D 0;=0A=
			}     =0A=
			if (c[i].nodeType =3D=3D 1 && c[i].nodeName.toLowerCase() =3D=3D =
"param" && c[i].getAttribute("name") =3D=3D "expressinstall") { =0A=
			    return c[i].getAttribute("value"); =0A=
			}	       =0A=
		}=0A=
		return "";=0A=
	}=0A=
    =0A=
	return {=0A=
		/* Public API=0A=
			- Reference: =
http://code.google.com/p/swfobject/wiki/SWFObject_2_0_documentation=0A=
		*/ =0A=
		registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr) {=0A=
			if (!ua.w3cdom || !objectIdStr) {=0A=
				return;=0A=
			}=0A=
			var obj =3D document.getElementById(objectIdStr);=0A=
			var xi =3D getExpressInstall(obj);=0A=
			var regObj =3D {};=0A=
			regObj.id =3D objectIdStr;=0A=
			regObj.swfVersion =3D swfVersionStr ? swfVersionStr : =
getTargetVersion(obj);=0A=
			regObj.expressInstall =3D xiSwfUrlStr ? xiSwfUrlStr : ((xi !=3D "") ? =
xi : false);=0A=
			regObjArr[regObjArr.length] =3D regObj;=0A=
			setVisibility(objectIdStr, false);=0A=
		},=0A=
		=0A=
		getObjectById: function(objectIdStr) {=0A=
			var r =3D null;=0A=
			if (ua.w3cdom && isDomLoaded) {=0A=
				var o =3D getElementById(objectIdStr);=0A=
				if (o) {=0A=
					var n =3D o.getElementsByTagName(OBJECT)[0];=0A=
					if (!n || (n && typeof o.SetVariable !=3D UNDEF)) {=0A=
				    	r =3D o;=0A=
					}=0A=
					else if (typeof n.SetVariable !=3D UNDEF) {=0A=
						r =3D n;=0A=
					}=0A=
				}=0A=
			}=0A=
			return r;=0A=
		},=0A=
		=0A=
		embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, =
swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) {=0A=
			if (!ua.w3cdom || !swfUrlStr || !replaceElemIdStr || !widthStr || =
!heightStr || !swfVersionStr) {=0A=
				return;=0A=
			}=0A=
			widthStr +=3D ""; // Auto-convert to string to make it idiot proof=0A=
			heightStr +=3D "";=0A=
			if (hasPlayerVersion(swfVersionStr)) {=0A=
				setVisibility(replaceElemIdStr, false);=0A=
				var att =3D (typeof attObj =3D=3D OBJECT) ? attObj : {};=0A=
				att.data =3D swfUrlStr;=0A=
				att.width =3D widthStr;=0A=
				att.height =3D heightStr;=0A=
				var par =3D (typeof parObj =3D=3D OBJECT) ? parObj : {};=0A=
				if (typeof flashvarsObj =3D=3D OBJECT) {=0A=
					for (var i in flashvarsObj) {=0A=
						if (flashvarsObj[i] !=3D Object.prototype[i]) { // Filter out =
prototype additions from other potential libraries=0A=
							if (typeof par.flashvars !=3D UNDEF) {=0A=
								par.flashvars +=3D "&" + i + "=3D" + flashvarsObj[i];=0A=
							}=0A=
							else {=0A=
								par.flashvars =3D i + "=3D" + flashvarsObj[i];=0A=
							}=0A=
						}=0A=
					}=0A=
				}=0A=
				addDomLoadEvent(function() {=0A=
					createSWF(att, par, replaceElemIdStr);=0A=
					if (att.id =3D=3D replaceElemIdStr) {=0A=
						setVisibility(replaceElemIdStr, true);=0A=
					}=0A=
				});=0A=
			}=0A=
			else if (xiSwfUrlStr && !isExpressInstallActive && =
hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) {=0A=
				setVisibility(replaceElemIdStr, false);=0A=
				addDomLoadEvent(function() {=0A=
					var regObj =3D {};=0A=
					regObj.id =3D regObj.altContentId =3D replaceElemIdStr;=0A=
					regObj.width =3D widthStr;=0A=
					regObj.height =3D heightStr;=0A=
					regObj.expressInstall =3D xiSwfUrlStr;=0A=
					showExpressInstall(regObj);=0A=
				});=0A=
			}=0A=
		},=0A=
		=0A=
		getFlashPlayerVersion: function() {=0A=
			return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };=0A=
		},=0A=
		=0A=
		hasFlashPlayerVersion:hasPlayerVersion,=0A=
		=0A=
		createSWF: function(attObj, parObj, replaceElemIdStr) {=0A=
			if (ua.w3cdom && isDomLoaded) {=0A=
				return createSWF(attObj, parObj, replaceElemIdStr);=0A=
			}=0A=
			else {=0A=
				return undefined;=0A=
			}=0A=
		},=0A=
		=0A=
		createCSS: function(sel, decl) {=0A=
			if (ua.w3cdom) {=0A=
				createCSS(sel, decl);=0A=
			}=0A=
		},=0A=
		=0A=
		addDomLoadEvent:addDomLoadEvent,=0A=
		=0A=
		addLoadEvent:addLoadEvent,=0A=
		=0A=
		getQueryParamValue: function(param) {=0A=
			var q =3D doc.location.search || doc.location.hash;=0A=
			if (param =3D=3D null) {=0A=
				return q;=0A=
			}=0A=
		 	if(q) {=0A=
				var pairs =3D q.substring(1).split("&");=0A=
				for (var i =3D 0; i < pairs.length; i++) {=0A=
					if (pairs[i].substring(0, pairs[i].indexOf("=3D")) =3D=3D param) {=0A=
						return pairs[i].substring((pairs[i].indexOf("=3D") + 1));=0A=
					}=0A=
				}=0A=
			}=0A=
			return "";=0A=
		},=0A=
		=0A=
		// For internal usage only=0A=
		expressInstallCallback: function() {=0A=
			if (isExpressInstallActive && storedAltContent) {=0A=
				var obj =3D getElementById(EXPRESS_INSTALL_ID);=0A=
				if (obj) {=0A=
					obj.parentNode.replaceChild(storedAltContent, obj);=0A=
					if (storedAltContentId) {=0A=
						setVisibility(storedAltContentId, true);=0A=
						if (ua.ie && ua.win) {=0A=
							storedAltContent.style.display =3D "block";=0A=
						}=0A=
					}=0A=
					storedAltContent =3D null;=0A=
					storedAltContentId =3D null;=0A=
					isExpressInstallActive =3D false;=0A=
				}=0A=
			} =0A=
		}=0A=
		=0A=
	};=0A=
=0A=
}();=0A=

------=_NextPart_000_0000_01CC8838.1DD5D1C0--

