From: <Saved by Windows Internet Explorer 7>
Subject: CanLII - 2010 ONCJ 358 (CanLII)
Date: Mon, 30 Aug 2010 09:21:40 -0400
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CB4824.C10EDB70"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.2992

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358.html

=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 lang=3Den xml:lang=3D"en" =
xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>CanLII - 2010 ONCJ =
358 (CanLII)</TITLE><!-- date generated : 2010-08-26 16:32:05 -->
<META http-equiv=3Dcontent-type content=3D"text/html; charset=3Dutf-8">
<META content=3D"NOINDEX, NOFOLLOW, NOARCHIVE" name=3DROBOTS>
<META content=3DCanLII name=3DDC.Publisher>
<META=20
content=3D"RE: College of Veterinarians of Ontario v. Pet Heaven et al., =
2010 ONCJ 358 (CanLII)"=20
name=3DDC.Title>
<META content=3D2010-08-23T00:00:00-05:00 name=3DDC.Date>
<META content=3Den name=3DDC.Language><LINK=20
href=3D"http://www.canlii.org/css/canlii.css" type=3Dtext/css =
rel=3Dstylesheet><!--[if lte IE 6]>=0A=
			<link rel=3D"stylesheet" href=3D"/css/canlii-ie6.css" =
type=3D"text/css" />=0A=
		<![endif]--><!--[if lte IE 7]><LINK=20
href=3D"http://www.canlii.org/css/canlii-ie.css" type=3Dtext/css =
rel=3Dstylesheet><![endif]--><!--[if IE 7]><LINK=20
href=3D"http://www.canlii.org/css/canlii-ie7.css" type=3Dtext/css =
rel=3Dstylesheet><![endif]-->
<STYLE type=3Dtext/css>@page Section1 {size: 612pt 792pt; margin: 72pt =
90pt 72pt 90pt; }
DIV.documentcontent P.MsoNormal {
	FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.MsoNormal {
	FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.MsoNormal {
	FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent P.MsoFootnoteText {
	FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.MsoFootnoteText {
	FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.MsoFootnoteText {
	FONT-SIZE: 10pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent P.MsoHeader {
	FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.MsoHeader {
	FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.MsoHeader {
	FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent P.MsoFooter {
	FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.MsoFooter {
	FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.MsoFooter {
	FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent SPAN.MsoFootnoteReference {
=09
}
DIV.documentcontent A:link {
	COLOR: blue; TEXT-DECORATION: underline
}
DIV.documentcontent SPAN.MsoHyperlink {
	COLOR: blue; TEXT-DECORATION: underline
}
DIV.documentcontent A:visited {
	COLOR: navy; TEXT-DECORATION: underline
}
DIV.documentcontent SPAN.MsoHyperlinkFollowed {
	COLOR: navy; TEXT-DECORATION: underline
}
DIV.documentcontent P.section-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt; LAYOUT-GRID-MODE: char; COLOR: =
black; TEXT-INDENT: 30pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.section-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt; LAYOUT-GRID-MODE: char; COLOR: =
black; TEXT-INDENT: 30pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.section-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt; LAYOUT-GRID-MODE: char; COLOR: =
black; TEXT-INDENT: 30pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent P.clause-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt 55.55pt; LAYOUT-GRID-MODE: char; =
COLOR: black; TEXT-INDENT: -20pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.clause-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt 55.55pt; LAYOUT-GRID-MODE: char; =
COLOR: black; TEXT-INDENT: -20pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.clause-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt 55.55pt; LAYOUT-GRID-MODE: char; =
COLOR: black; TEXT-INDENT: -20pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent P.subsection-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt; LAYOUT-GRID-MODE: char; COLOR: =
black; TEXT-INDENT: 30pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.subsection-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt; LAYOUT-GRID-MODE: char; COLOR: =
black; TEXT-INDENT: 30pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.subsection-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt; LAYOUT-GRID-MODE: char; COLOR: =
black; TEXT-INDENT: 30pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent P.ssubsection-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt; LAYOUT-GRID-MODE: char; COLOR: =
black; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.ssubsection-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt; LAYOUT-GRID-MODE: char; COLOR: =
black; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.ssubsection-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt; LAYOUT-GRID-MODE: char; COLOR: =
black; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent P.headnote-e {
	FONT-WEIGHT: bold; FONT-SIZE: 13pt; MARGIN: 0cm 0cm 0pt; =
LAYOUT-GRID-MODE: char; COLOR: black; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.headnote-e {
	FONT-WEIGHT: bold; FONT-SIZE: 13pt; MARGIN: 0cm 0cm 0pt; =
LAYOUT-GRID-MODE: char; COLOR: black; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.headnote-e {
	FONT-WEIGHT: bold; FONT-SIZE: 13pt; MARGIN: 0cm 0cm 0pt; =
LAYOUT-GRID-MODE: char; COLOR: black; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent P.firstdef-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt 32.6pt; LAYOUT-GRID-MODE: char; =
COLOR: black; TEXT-INDENT: -20pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent LI.firstdef-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt 32.6pt; LAYOUT-GRID-MODE: char; =
COLOR: black; TEXT-INDENT: -20pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.firstdef-e {
	FONT-SIZE: 13pt; MARGIN: 0cm 0cm 6pt 32.6pt; LAYOUT-GRID-MODE: char; =
COLOR: black; TEXT-INDENT: -20pt; FONT-FAMILY: "Times New Roman"
}
DIV.documentcontent DIV.Section1 {
	page: Section1
}
</STYLE>

<SCRIPT src=3D"http://www.canlii.org/javascript/canlii.js"=20
type=3Dtext/javascript></SCRIPT>

<META content=3D"MSHTML 6.00.5730.13" name=3DGENERATOR></HEAD>
<BODY>
<DIV id=3Dbody>
<DIV id=3Dheader>
<DIV id=3DcanliiLogo><A class=3Dcanlii =
href=3D"http://www.canlii.org/en/"><IMG alt=3D""=20
src=3D"http://www.canlii.org/images/canliiLogo.gif"></A></DIV>
<DIV id=3DcanliiBanner><IMG alt=3D""=20
src=3D"http://www.canlii.org/images/canliiText_en.gif"></DIV>
<DIV id=3DlanguageSwitch>
<UL>
  <LI class=3Dfirst><SPAN class=3DnotSupported>Fran=C3=A7ais</SPAN>=20
  <LI>English </LI></UL></DIV>
<P id=3Dbreadcrumbs><SPAN class=3Dnowrap><A class=3Dcanlii=20
href=3D"http://www.canlii.org/en/index.php">Home</A></SPAN> &gt; <SPAN=20
class=3Dnowrap><A class=3Dcanlii=20
href=3D"http://www.canlii.org/en/on/index.html">Ontario</A></SPAN> &gt; =
<SPAN=20
class=3Dnowrap><A class=3Dcanlii=20
href=3D"http://www.canlii.org/en/on/oncj/index.html">Ontario Court of=20
Justice</A></SPAN> &gt; <SPAN class=3Dnowrap>2010 ONCJ 358 =
(CanLII)</SPAN>=20
</P></DIV><!-- /header -->
<DIV id=3DmainContent_noMenu>
<DIV id=3DdocumentHeader>
<H1 class=3D"canlii decision">RE: College of Veterinarians of Ontario v. =
Pet=20
Heaven et al., 2010 ONCJ 358 (CanLII)</H1>
<DIV id=3DdocumentMeta>
<DIV class=3Ditems>
<TABLE>
  <TBODY>
  <TR>
    <TD class=3DlabelPrint>Print:</TD>
    <TD><A class=3Dcanlii=20
      =
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.pdf"><IMG=20
      src=3D"http://www.canlii.org/images/pdficon_small.gif"> PDF =
Format</A></TD></TR>
  <TR>
    <TD class=3Dlabel>Date:</TD>
    <TD>2010-08-23</TD></TR>
  <TR>
    <TD class=3Dlabel>URL:</TD>
    <TD=20
      =
class=3DdocumentStaticUrl>http://www.canlii.org/en/on/oncj/doc/2010/2010o=
ncj358/2010oncj358.html</TD></TR>
  <TR>
    <TD class=3Dlabel>Noteup:</TD>
    <TD><A class=3Dcanlii=20
      =
href=3D"http://www.canlii.org/eliisa/noteUpSearch.do?origin=3D/en/on/oncj=
/doc/2010/2010oncj358/2010oncj358.html&amp;translatedOrigin=3D&amp;langua=
ge=3Den&amp;searchTitle=3D2010+ONCJ+358+%28CanLII%29">Search=20
      for decisions citing this decision</A> =
</TD></TR></TBODY></TABLE></DIV></DIV><!-- /documentMeta -->
<DIV id=3DdecisionReflexRecord>
<DIV id=3DreflexRecordHeader><SPAN><A class=3DfalseLink =
id=3DreflexRecordToggler=20
href=3D'javascript:toggleReflexRecord("decisionReflexRecordContent", =
"Minimize");'>Reflex=20
Record</A></SPAN> (related decisions, legislation cited and decisions =
cited)=20
</DIV>
<DIV id=3DdecisionReflexRecordContent>
<DIV class=3Ditems>
<H2 class=3Dcanlii>Legislation cited (available on CanLII)</H2>
<UL>
  <LI><A class=3D"canlii legislationLink"=20
  =
href=3D"http://www.canlii.org/en/ca/laws/stat/rsc-1985-c-c-46/latest/rsc-=
1985-c-c-46.html">Criminal=20
  Code</A>, R.S.C., <SPAN class=3Dchapter>1985, c. C-46</SPAN>=20
  <LI><A class=3D"canlii legislationLink"=20
  =
href=3D"http://www.canlii.org/en/on/laws/stat/rso-1990-c-v3/latest/rso-19=
90-c-v3.html">Veterinarians=20
  Act</A>, R.S.O., <SPAN class=3Dchapter>1990, c. V.3</SPAN> =E2=80=94 =
<SPAN=20
  class=3Dnowrap><A class=3D"reflex-statute canlii"=20
  =
href=3D"http://www.canlii.org/en/on/laws/stat/rso-1990-c-v3/latest/rso-19=
90-c-v3.html">11=20
  (1)</A> =E2=80=A2</SPAN> <SPAN class=3Dnowrap><A =
class=3D"reflex-statute canlii"=20
  =
href=3D"http://www.canlii.org/en/on/laws/stat/rso-1990-c-v3/latest/rso-19=
90-c-v3.html">11=20
  (5)</A> =E2=80=A2</SPAN> <SPAN class=3Dnowrap><A =
class=3D"reflex-statute canlii"=20
  =
href=3D"http://www.canlii.org/en/on/laws/stat/rso-1990-c-v3/latest/rso-19=
90-c-v3.html">40</A>=20
  =E2=80=A2</SPAN> <SPAN class=3Dnowrap><A class=3D"reflex-statute =
canlii"=20
  =
href=3D"http://www.canlii.org/en/on/laws/stat/rso-1990-c-v3/latest/rso-19=
90-c-v3.html">44</A></SPAN>=20
  </LI></UL></DIV>
<DIV class=3Ditems>
<H2 class=3Dcanlii>Decisions cited</H2>
<UL>
  <LI><A class=3Dcanlii=20
  =
href=3D"http://www.canlii.org/en/on/onca/doc/1987/1987canlii122/1987canli=
i122.html">Church=20
  of Scientology and The Queen (No. 6), Re</A>, 1987 CanLII 122 (ON =
C.A.) =E2=80=94=20
  <SPAN class=3DcanliiCitation>31 C.C.C. (3d) 449 =E2=80=A2</SPAN> <SPAN =

  class=3DcanliiCitation>30 C.R.R. 238 =E2=80=A2</SPAN> <SPAN =
class=3DcanliiCitation>18=20
  O.A.C. 321</SPAN>=20
  <LI><A class=3Dcanlii=20
  =
href=3D"http://www.canlii.org/en/mb/mbca/doc/1999/1999canlii18640/1999can=
lii18640.html">R.=20
  v. Gordon</A>, 1999 CanLII 18640 (MB C.A.) =E2=80=94 <SPAN =
class=3DcanliiCitation>139=20
  C.C.C. (3d) 239 =E2=80=A2</SPAN> <SPAN class=3DcanliiCitation>28 C.R. =
(5th) 168 =E2=80=A2</SPAN>=20
  <SPAN class=3DcanliiCitation>138 Man. R. (2d) 298</SPAN>=20
  <LI><A class=3Dcanlii=20
  =
href=3D"http://www.canlii.org/en/on/onca/doc/1996/1996canlii450/1996canli=
i450.html">R.=20
  v. Hosie</A>, 1996 CanLII 450 (ON C.A.) =E2=80=94 <SPAN =
class=3DcanliiCitation>107=20
  C.C.C. (3d) 385 =E2=80=A2</SPAN> <SPAN class=3DcanliiCitation>49 C.R. =
(4th) 1 =E2=80=A2</SPAN>=20
  <SPAN class=3DcanliiCitation>37 C.R.R. (2d) 97 =E2=80=A2</SPAN> <SPAN=20
  class=3DcanliiCitation>91 O.A.C. 281</SPAN>=20
  <LI><A class=3Dcanlii=20
  =
href=3D"http://www.canlii.org/en/ca/scc/doc/1996/1996canlii230/1996canlii=
230.html">R.=20
  v. M. (C.A.)</A>, 1996 CanLII 230 (S.C.C.) =E2=80=94 <SPAN =
class=3DcanliiCitation>[1996]=20
  1 S.C.R. 500 =E2=80=A2</SPAN> <SPAN class=3DcanliiCitation>105 C.C.C. =
(3d) 327 =E2=80=A2</SPAN>=20
  <SPAN class=3DcanliiCitation>46 C.R. (4th) 269</SPAN>=20
  <LI><A class=3Dcanlii=20
  =
href=3D"http://www.canlii.org/en/ca/scc/doc/1994/1994canlii80/1994canlii8=
0.html">R.=20
  v. Mohan</A>, 1994 CanLII 80 (S.C.C.) =E2=80=94 <SPAN =
class=3DcanliiCitation>[1994] 2=20
  S.C.R. 9 =E2=80=A2</SPAN> <SPAN class=3DcanliiCitation>18 O.R. (3d) =
160 =E2=80=A2</SPAN> <SPAN=20
  class=3DcanliiCitation>114 D.L.R. (4th) 419 =E2=80=A2</SPAN> <SPAN=20
  class=3DcanliiCitation>89 C.C.C. (3d) 402 =E2=80=A2</SPAN> <SPAN =
class=3DcanliiCitation>29=20
  C.R. (4th) 243 =E2=80=A2</SPAN> <SPAN class=3DcanliiCitation>71 O.A.C. =
241</SPAN>=20
  <LI><A class=3Dcanlii=20
  =
href=3D"http://www.canlii.org/en/ca/scc/doc/1991/1991canlii93/1991canlii9=
3.html">R.=20
  v. W.(D.)</A>, 1991 CanLII 93 (S.C.C.) =E2=80=94 <SPAN =
class=3DcanliiCitation>[1991] 1=20
  S.C.R. 742 =E2=80=A2</SPAN> <SPAN class=3DcanliiCitation>63 C.C.C. =
(3d) 397 =E2=80=A2</SPAN>=20
  <SPAN class=3DcanliiCitation>3 C.R. (4th) 302 =E2=80=A2</SPAN> <SPAN=20
  class=3DcanliiCitation>46 O.A.C. 352</SPAN> </LI></UL></DIV></DIV><!-- =
/decisionReflexRecordContent --></DIV><!-- /decisionReflexRecord =
--></DIV><!-- /documentHeader --></DIV><!-- /mainContent_noMenu --><!-- =
closing from header --></DIV><!-- /body --><!-- content -->
<DIV id=3DoriginalDocument>
<DIV class=3Ddocumentcontent>
<DIV class=3DSection1>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: right" =
align=3Dright>Citation:&nbsp; <I>RE:=20
College of Veterinarians of Ontario v. Pet Heaven et al., </I>2010 ONCJ =
358</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter>THE =
ONTARIO COURT OF=20
JUSTICE</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 16pt">COLLEGE</SPAN></B><B><SPAN style=3D"FONT-SIZE: =
16pt"> OF=20
VETERINARIANS OF </SPAN></B><B><SPAN=20
style=3D"FONT-SIZE: 16pt">ONTARIO</SPAN></B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 16pt">[Prosecutor]</SPAN></B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 16pt"></SPAN></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 16pt">V.</SPAN></B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 16pt"></SPAN></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 16pt">SHELLEY GREENBERG-BLECHMAN, ERIC BLECHMAN,=20
&amp;</SPAN></B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 16pt">FILM LOCATIONS &amp; ALL- STAR ACCOMMODATIONS =
INC.,=20
</SPAN></B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 16pt">carrying on business as PET =
HEAVEN</SPAN></B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 16pt">[Defendants]</SPAN></B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt">REASONS FOR JUDGMENT</SPAN></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt">Justice of the Peace Kevin V. =
Madigan</SPAN></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt">Toronto, </SPAN><SPAN=20
style=3D"FONT-SIZE: 14pt">Ontario</SPAN></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt">August 23, 2010</SPAN></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></B>&nbsp;</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>COUNSEL FOR THE PROSECUTION:</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>Bernard Leblanc &amp; Lisa Braverman</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>COUNSEL FOR THE DEFENDANTS:</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>Michael Pasquale</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Prosecution Under The Veterinarians Act of=20
Ontario-College of Veterinarians Prosecuting Company Arranging For =
In-Home=20
Euthanasia of Animals</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Allegation of Pracising Veterinary Medicine =
Without A=20
Licence-Alternative Allegation of Holding Out Oneself As Practising =
Veterinary=20
Medicine-Sections 11 &amp; 40 of the Statute</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Director &amp; Employee of Corporation Charged =
Under=20
Sections 11(1)&amp; 40(5)</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Of the Statute</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">None of Three Defendants Raising Due Diligence =

Defence-Defendants Merely Denying Commission of&nbsp; Acts Prohibited By =

Statute</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Corporate Defendant Not Owned or Managed By=20
Veterinarians As Required By Veterinarians Act</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Use of Expert Witness To Establish Case of =
Unauthorized=20
Practice</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Declaration of Hostile Witness Under Common =
Law=20
Principles-Court Permitting Prosecution To Cross Examine Its Own Witness =
At=20
Large</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Court Permitting Prosecution To Re-Open Case =
After=20
Closure of Prosecution Case Due To Availability of New Evidence =
</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Defence Challenging Issuance &amp; Execution =
of Search=20
Warrants-Defence Alleging Charter Violations &amp; Claiming Charter=20
Remedies</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Under Section 24 of the Charter</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt">Court Determining That Search Warrants Should =
Not Have=20
Been Issued But Ruling It Had No Jurisdiction To Quash Search =
Warrants-Court=20
Finding That No Charter Violations Had Occurred-Even If Charter =
Violations=20
Occurred, Neither Stay Nor Exclusion of Evidence Appropriate In =
Circumstances of=20
This Case</SPAN></I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center"=20
align=3Dcenter><B>INTRODUCTION</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">This was an unusual =
but=20
interesting case which consumed six days of trial. Much evidence was =
adduced and=20
several complicated legal issues were raised and argued. In total, the=20
prosecution called ten witnesses and the defence called three witnesses. =

However, due to legal issues which arose during trial, several witnesses =
were=20
re-called to testify.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">As mentioned above, =
several=20
interesting legal issues were raised and argued. First,&nbsp; =
circumstances=20
arose which required me to decide whether one witness should be declared =
a=20
hostile witness at common law and be subject to cross-examination by the =
party=20
calling him. Second, counsel for the defence disputed the <I>necessity =
for an=20
expert witness</I> called by the prosecution. Third, the defence =
challenged the=20
issuance and execution of three search warrants and invited me to =
consider=20
remedies under section 24 of the Charter.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In the interests of =
economy and=20
time, the prosecution and defence jointly requested that I conduct =
<I>blended=20
proceedings</I>. In other words, I was asked to reserve judgment on the =
various,=20
specific legal issues raised pending final submissions and final =
judgment. This=20
request was granted. Extensive written submissions on the various legal =
issues=20
were provided by the parties.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">All proceedings were =
held in=20
Toronto. The trial began February 5, 2009 and and continued on February =
6, 2009.=20
Two further days of trial were held on October 1 &amp; 2, 2009. Final=20
submissions were heard on October 26, 2009. Sentencing submissions were =
heard on=20
April 30, 2010.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>OVERVIEW OF THIS=20
CASE</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The following factual =

circumstances were either proven by the evidence or conceded by the =
defence:</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">After witnessing the =
death of=20
their own pet several years ago, Eric Blechman and Shelley =
Greenberg-Blechman=20
decided to open a business which would address the needs of pet owners =
who were=20
coping with suffering pets who were near death. The business was =
conducted by a=20
corporate entity which was owned by Shelley Greenberg-Blechman and which =

conducted business under the trade name =E2=80=9CPet Heaven=E2=80=9D. =
Although Ms.=20
Greenberg-Blechman was the sole director of the company, Eric Blechman =
was=20
merely an employee.</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The business offered =
various=20
services to the pet-owning public. For example, the business arranged =
for the=20
disposal of the remains of pets who had died. The company would arrange =
for=20
either burial or cremation of the animal remains. Clients of the =
business could=20
also choose to commemorate their pets by purchasing urns which would =
hold the=20
cremated remains of their deceased pets.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Eventually, the =
defendants=20
decided to offer prospective clients in-home euthanasia of their dying =
or=20
suffering pets. This procedure was performed by a qualified veterinarian =

arranged by the company.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">It is the performance =
of in-home=20
euthanasia which triggered this prosecution.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><B>THE =
PARTIES &amp;=20
THE CHARGES</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">This prosecution was =
initiated by=20
Ontario=E2=80=99s College of Veterinarians. In the province of Ontario, =
veterinarians=20
have a monopoly over the provision of veterinary services. This monopoly =
is=20
established and maintained by the <U>Veterinarians Act</U>. The =
provisions of=20
this statute are enforced by the College of Veterinarians.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The defendants are =
parties who=20
arranged in-home euthanasia of suffering animals for pet-owners. The =
prosecution=20
alleges that the parties have breached the law by <I>practising =
veterinary=20
medicine without a licence</I>. Alternatively, the prosecution alleges =
that the=20
defendants have <I>held themselves out to the public as practising =
veterinary=20
medicine</I>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">On the first day of =
trial, the=20
<I>informations</I> alleging the charges were amended. The defence =
consented to=20
this request for amendment by the prosecution. The amendment was sought =
so that=20
the new wording would conform more precisely to the statutory wording of =
section=20
11 of the <U>Veterinarians Act</U>. As explained by counsel for the =
prosecution,=20
this new wording was not <I>duplicitous</I> since there were two =
alternative=20
modes of committing the offence<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn1"=20
name=3D_ftnref1><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[1]</SPAN></SPAN></A>.=20
The new wording in the amended information merely clarified that both=20
alternative modes of committing the offence were alleged. The essence of =
the=20
offence alleged against all three defendants is <I>practising veterinary =

medicine without a licence</I>. The revised wording merely adds words =
which=20
clarify that <I>holding out as engaged in the practice of veterinary=20
medicine</I> is alleged in the alternative.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In reply to the =
allegations, the=20
defendants deny that they were practising veterinary medicine. Further, =
they=20
deny that they were holding themselves out as practising veterinary =
medicine.=20
Throughout the trial, the defendants contended that the prosecution had =
failed=20
to prove the prohibited acts alleged against them. The joint position of =
the=20
defendants was that they were merely offering pet-owners a =
=E2=80=9Creferral service=E2=80=9D=20
which simply located qualified veterinarians who would attend =
pet-owners=E2=80=99 homes=20
to euthanize their animals.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The corporate =
defendant was a=20
corporate entity carrying on business as =E2=80=9CPet Heaven=E2=80=9D. =
Throughout these reasons=20
for judgment, I refer to the corporate defendant by its trade name, =
=E2=80=9CPet=20
Heaven=E2=80=9D, rather than its proper name, All-Star Accommodations =
Inc.. This=20
corporation was charged, alternatively, with <I>practising veterinary =
medicine=20
without a licence</I> and <I>holding itself out as practising veterinary =

medicine</I>. It was agreed by the parties that these charges against =
the=20
corporation allege strict liability offences<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn2"=20
name=3D_ftnref2><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[2]</SPAN></SPAN></A>.=20
See sections 11 and 40 of the <U>Veterinarian Act</U>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Shelley =
Greenberg-Blechman was=20
charged in her capacities as director and employee of the corporation. =
See=20
sections 40(5)(a) and (b) of the <U>Veterinarians Act</U>. Her husband, =
Eric=20
Blechman, was charged in his capacity as an employee of the corporation. =
Since=20
Eric Blechman was merely an employee, and not a director, of the =
corporation, he=20
was charged pursuant to section 40(5)(b) only. The wording of section =
40(5)=20
indicates that these offences are offences of <I>strict liability</I> by =

providing that directors, officers, agents, and employees are liable =
unless they=20
took =E2=80=9Call reasonable care to prevent commission of the =
offence=E2=80=9D. Further, the=20
wording of the statute explicitly states that the liability of the =
Blechmans is=20
dependent upon a prior finding of liability against the corporation.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Although the =
prosecution=20
mentioned the =E2=80=9Cparties to an offence=E2=80=9D provision in =
section 77 of Ontario=E2=80=99s=20
<U>Provincial Offences Act</U>, the charges actually laid and prosecuted =
were=20
alleged violations of the <U>Veterinarians Act</U>, not the =
<U>Provincial=20
Offences Act</U>. Thus, in fairness to the defendants, I have considered =

liability under the <U>Veterinarians Act</U> only<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn3"=20
name=3D_ftnref3><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[3]</SPAN></SPAN></A>.=20
</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Note that the =
relevant statutory=20
provisions are reproduced in the Appendix of these reasons for =
judgment.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>STRATEGY OF THE=20
DEFENCE</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">All three of the =
defendants were=20
represented by the same counsel, Mr. Michael Pasquale, and advanced a =
common=20
defence. At the commencement of proceedings, Mr. Pasquale indicated that =
all=20
three defendants were simply denying that they had committed the conduct =

prohibited by the <U>Veterinarians Act</U>. Further, he indicated that =
the=20
defendants were putting the prosecution to strict proof of the =
prohibited acts=20
which the prosecution attributed to them. However, later in the =
proceedings, Mr.=20
Pasquale seemed to concede, or at least not seriously challenge, much of =
the=20
factual circumstances on which the prosecution relied to prove its =
case.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">It must be emphasized =
that, at no=20
time, did the defence formally raise a defence of <I>due diligence</I> =
or=20
<I>reasonable mistake of fact</I> for any of the three defendants. Nor =
did the=20
evidence adduced by the defence support such a defence.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Throughout these =
proceedings, the=20
dispute between the parties focused on the interpretation of the =
circumstances=20
disclosed by the evidence. There was little dispute about the =
circumstances=20
themselves. In other words, the issue was not so much what happened =
[=E2=80=9Cthe=20
facts=E2=80=9D] as the interpretation to be accorded to what happened. =
In particular,=20
the issue was whether the undisputed circumstances rendered the =
defendants=20
liable under the statute.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In brief, the =
prosecution claimed=20
that the evidence should be interpreted so as to support its contention =
that the=20
defendants were actually <I>practising veterinary medicine</I> or,=20
alternatively, that the defendants were <I>holding themselves out</I> to =
the=20
public as practitioners of veterinary medicine.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In reply to the =
various=20
allegations against the three defendants, the defence claimed that the =
very same=20
evidence justified a conclusion that the defendants were only operating =
a=20
=E2=80=9Creferral service=E2=80=9D for clients seeking to have qualified =
veterinarians attend=20
their homes to euthanize their suffering animals. Further, the defence =
argued=20
that, since the corporate defendant had not breached section 11(1) of =
the=20
<U>Veterinarians Act</U>, neither the director [Shelley =
Greenberg-Blechman] nor=20
the employee [Eric Blechman] could be liable under the statute.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">It was not disputed =
by the=20
defence that Pet Heaven was in the business of arranging in-home =
euthanasia for=20
the suffering pets of paying clients. Further, it was not disputed that =
the=20
company provided a duly qualified veterinarian to perform the =
euthanasia.=20
Finally, it was not disputed that, in most instances, Pet Heaven clients =
paid=20
the company an all-inclusive fee for the services which included the =
$150.00 fee=20
paid/remitted by the company to the veterinarian. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>LEGAL ISSUES=20
ADDRESSED</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>Prosecution=20
Witness Declared Hostile Under Common Law</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In presenting its =
case, the=20
prosecution elected to call evidence from Dr. Grigory Brodetsky. Dr. =
Brodetsky=20
was the most-frequently used, licenced veterinarian which Pet Heaven =
dispatched=20
to the homes of clients seeking in-home euthanasia for their pets. He =
would=20
attend client homes and perform the requested animal euthanasia.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The problem for the =
prosecution=20
was that Dr. Brodetsky was an un-cooperative witness. Even before the=20
prosecution called him to the witness box, I was informed of the =
potential=20
problem. In particular, I was informed that the College of Veterinarians =
of=20
Ontario had brought charges of <I>professional misconduct</I> against =
Brodetsky=20
in his capacity as a veterinarian<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn4"=20
name=3D_ftnref4><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[4]</SPAN></SPAN></A>.=20
These charges arose from the same circumstances grounding these charges =
against=20
Pet Heaven and the Blechmans. In response to this information, I =
informed the=20
witness that his answers could not be used against him to convict him of =
the=20
charges brought against him but only to convict him of perjury for =
giving false=20
testimony<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn5"=20
name=3D_ftnref5><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[5]</SPAN></SPAN></A>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">During the course of =
his initial=20
testimony at the commencement of these proceedings, Dr. Brodetsky gave =
testimony=20
which was vague, evasive, and frequently contradictory. At times, his =
answers=20
were so inconsistent that it was difficult to determine what his final =
answer=20
was. Despite my assurances that he was not incriminating himself on his =
own=20
charges, Dr. Brodetsky persisted in his failure to answer questions =
accurately,=20
completely, and candidly. Indeed, his failure to be careful and =
forthright=20
wasted much court time.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Early in the =
proceedings, and=20
with the consent of the defence, I declared Dr. Brodetsky a witness =
hostile to=20
the prosecution. Note that this was done under common law principles<A =
title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn6"=20
name=3D_ftnref6><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[6]</SPAN></SPAN></A>.=20
For technical reasons, he was <U>not</U> declared an adverse witness =
under the=20
<U>Ontario Evidence Act<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn7"=20
name=3D_ftnref7><SPAN class=3DMsoFootnoteReference><U><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[7]</SPAN></U></SPAN></A></U>.=20
At common law, a =E2=80=9Chostile witness=E2=80=9D is one who has a =
=E2=80=9Chostile animus=E2=80=9D against the=20
party calling him to testify. This hostility usually manifests itself in =
the=20
witness=E2=80=99 failure to give his testimony fairly and truthfully. =
</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">There is no doubt =
that Dr.=20
Brodetsky satisfied this common law criteria for hostility. Obviously, =
as trier=20
of fact in these proceedings, I had occasion to witness his performance =
in the=20
witness box. His answers to basic, simple questions were unresponsive, =
evasive=20
and contradictory. Further, his outstanding charges for professional =
misconduct=20
caused him to assume a hostile orientation toward the prosecution.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The declaration of =
hostility=20
under the common law permitted the prosecution to cross-examine Dr. =
Brodetsky at=20
large. However, given the continued and determined lack of co-operation =
from Dr.=20
Brodetsky, this declaration did not have the expected benefit. Although =
the=20
declaration made it possible for the prosecution to shorten his =
appearance in=20
the witness box, the vague, evasive, unresponsive and contradictory =
answers=20
continued. Dr. Brodetsky=E2=80=99s testimony was so wasteful of the =
court=E2=80=99s time that,=20
had either the prosecution or the defence asked that I cite Dr. =
Brodetsky for=20
contempt of court, I would have seriously considered the request.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Ultimately, for =
several reasons,=20
the initial testimony of Dr. Brodetsky was not seriously damaging for =
the=20
prosecution. First, Dr. Brodetsky was re-called later in the proceedings =
after=20
he had dealt with his charges and when he was in a relatively more =
co-operative=20
frame of mind<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn8"=20
name=3D_ftnref8><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[8]</SPAN></SPAN></A>.=20
Second, and more importantly, the defence eventually and ultimately =
conceded=20
many of the points Dr. Brodetsky was called to establish. In other =
words, the=20
defence was not denying the basic circumstances Brodetsky was called to =
attest=20
or confirm. Third, much of Brodetsky=E2=80=99s evidence was corroborated =
by=20
documentation in the form of invoices which clearly demonstrated that he =
had=20
attended at the request of Pet Heaven to euthanize animals.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><B>The =
Defence=20
Challenges The Prosecution=E2=80=99s Expert</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Normally, under our =
common law=20
adversarial system, witnesses are not entitlted to express opinions or =
draw=20
conclusions<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn9"=20
name=3D_ftnref9><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[9]</SPAN></SPAN></A>.=20
They must confine their testimony only to what they themselves actually =
observed=20
or experienced. However, there is an exception for expert witnesses =
whose expert=20
opinions may assist the court in its task of resolving issues and making =

findings.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Before a court =
qualifies an=20
expert witness, the court must make a prior determination that the =
expert=20
opinion is indeed =E2=80=9Cnecessary=E2=80=9D. The tendered expert must =
have special=20
qualifications or expertise , relevant to an issue before the court, =
which would=20
enable him to assist the court.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Counsel for the =
prosecution, Mr.=20
Leblanc, sought to qualify Dr. Nigel Gumley as an expert in the practice =
of=20
veterinary medicine. Due to the failure of the statute to define the key =
word=20
=E2=80=9Cpractise=E2=80=9D, Mr. Leblanc reasonably believed that I would =
benefit from expert=20
evidence concerning what constituted the =E2=80=9Cpractice of veterinary =
medicine=E2=80=9D.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In making his request =
that I=20
qualify Dr. Gumley, Mr. Leblanc contended that, in cases of unauthorized =

practice, expert evidence is routinely admitted to assist the court in =
its=20
decision-making. A review of the relevant caselaw confirms this =
assertion<A=20
title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn10"=20
name=3D_ftnref10><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[10]</SPAN></SPAN></A>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">For the defence, Mr. =
Pasquale=20
objected to the admissibility of this expert evidence on the grounds =
that it was=20
not =E2=80=9Cnecessary=E2=80=9D to assist me to resolve issues or make =
findings. In other words,=20
the defence invited me to interpret the key word =
=E2=80=9Cpractise=E2=80=9D according to its=20
everyday or dictionary meaning. The defence view was that there was no =
need for=20
=E2=80=9Cexpert evidence=E2=80=9D to assist me to determine the meaning =
of the word. The defence=20
concern was not Dr. Gumley=E2=80=99s qualifications [which were readily =
conceded] but=20
that it would simply be a waste of time to hear and consider this =
unnecessary=20
evidence.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">While considering =
whether to=20
admit Dr. Gumley=E2=80=99s expert evidence, I was guided by and faithful =
to the relevant=20
test for necessity as established by the Supreme Court of Canada in =
<U>R. v.=20
Mohan</U> <A class=3Dreflex-caselaw=20
href=3D"http://www.canlii.org/en/ca/scc/doc/1994/1994canlii80/1994canlii8=
0.html"=20
name=3Dreflex-caselaw-57065782>1994 CanLII 80 (S.C.C.)</A>, [1994] 2 =
S.C.R. 9. I=20
also considered the Ontario Court of Appeal=E2=80=99s endorsement of =
expert evidence in=20
unauthorized practice cases. See <U>Regina</U><U> Ex Rel Doughty v. =
Manuel</U>=20
<A class=3Dreflex-caselaw name=3Dreflex-caselaw-57065784></A>(1982) 38 =
O.R. (2d) 321=20
(C.A.)</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Ultimately, after due =

consideration of the submissions and caselaw respecting this legal =
issue, I=20
determined that it was indeed necessary to hear =E2=80=9Cexpert =
evidence=E2=80=9D from Dr.=20
Gumley. Given the lack of statutory definition of such an important =
term, I do=20
believe that I benefited from hearing Dr. Gumley=E2=80=99s opinion on =
what constituted=20
the =E2=80=9Cpractise of veterinary medicine=E2=80=9D. In particular, I =
learned from Dr. Gumley=20
that performing euthanasia on an animal is an integral part of the =
practice of=20
veterinary medicine. Further, Dr. Gumley was able to explain the =
science,=20
medicine, procedures and standards applicable to the performance of =
euthanasia=20
on animals. This information was crucial in assisting me to determine =
whether=20
the defendants had practised, or held themselves out as practising, =
veterinary=20
medicine.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Of crucial importance =
was Dr.=20
Gumley=E2=80=99s opinion that animal euthanasia be practised only in the =
context of a=20
proper =E2=80=9Cveterinary client patient relationship=E2=80=9D which =
would safeguard and foster=20
the interests of both the animal and the pet owner. Such a relationship =
was=20
indispensable to establishing open and sympathetic communication about =
treatment=20
options for suffering animals. It is essential to educate a pet owner =
about his=20
animal=E2=80=99s condition and the treatment options available to =
address the specific=20
case of his particular animal. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">As explained by Dr, =
Gumley,=20
animal euthanasia is much more than simply administering a needle. It =
involves=20
the veterinarian establishing rapport with both the pet owner and the =
animal.=20
Further, it requires full and frank discussion of treatment options so =
that a=20
pet owner can feel =E2=80=9Cvalidated=E2=80=9D about his treatment =
decision for his pet such=20
that he can give the veterinarian truly =E2=80=9Cinformed =
consent=E2=80=9D about the treatment=20
[euthanasia] chosen for his particular animal. Finally, there is a need =
for=20
proper record-keeping of medical records to insure proof of ownership =
and=20
informed consent and proper controls on the use of the restricted drugs =
used to=20
euthanize animals.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In his capacity as a =
qualified=20
expert witness, Dr. Gumley was afforded the opportunity to comment upon =
the=20
testimony given by Pet Heaven clients. Through his review and analysis =
of the=20
testimony of the pet owners who had their pets euthanized by Pet Heaven, =
Dr.=20
Gumley was able to highlight the risks associated with failure to =
develop and=20
foster a proper =E2=80=9Cveterinary client patient =
relationship=E2=80=9D. In particular, he=20
noted the risks of substandard performance of the procedure. Dr. Gumley =
was able=20
to enumerate several&nbsp; deficiencies in Pet Heaven=E2=80=99s =
substandard performance=20
of animal euthanasia for its clients. Indeed, several clients had =
testified=20
about the trauma of witnessing their pets experience increased or =
prolonged=20
suffering through the apparent incompetence of the vet provided by Pet=20
Heaven.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The matters =
respecting which Dr.=20
Gumley was permitted to provide expert testimony were matters outside or =
beyond=20
the experience and/or knowledge of a lay person. His expertise was =
instrumental,=20
and indeed indispensable, in assisting the court to resolve whether the=20
defendants were breaching the <U>Veterinarians Act</U> as alleged. =
Without Dr.=20
Gumley=E2=80=99s expert opinion, I would have experienced great =
difficulty in resolving=20
whether the defendants=E2=80=99 conduct amounted to unauthorized =
practice of veterinary=20
medicine.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Dr. Gumley=E2=80=99s =
testimony convinced=20
me that the defendants had effectively practised veterinary medicine =
through the=20
agency of Dr. Grigory Brodetsky. In his capacity as the veterinarian =
performing=20
animal euthanasia for Pet Heaven, Dr. Brodetsky was the face of Pet =
Heaven in=20
the minds of the Pet Heaven clients. I agree with the prosecution claim =
that, at=20
all material times, he was either an employee of, or independent =
contractor=20
engaged by, Pet Heaven. At no time was Dr. Brodetsky merely an =
independent=20
veterinarian responding to a page from a referral service.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Contrary to the =
suggestion of the=20
prosecution, I rejected Dr. Gumley=E2=80=99s =E2=80=9Cevidence=E2=80=9D =
respecting the corporate=20
practice of veterinary medicine and the interpretation and application =
of the=20
=E2=80=9Cholding out=E2=80=9D provisions in the statute. His =
=E2=80=9Copinion=E2=80=9D on these legal matters=20
was truly unnecessary and indeed irrelevant [beyond the scope of his =
expertise].=20
These are legal questions for the Court.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><B>The =
Re-Opening Of=20
The Prosecution=E2=80=99s Case</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">To properly address =
this legal=20
question, it is important to understand the chronology of these =
proceedings.=20
This trial began in February 2009 and was adjourned to October 2009. In =
the=20
meantime, on August 25, 2009, Dr. Brodetsky appeared before the =
Discipline=20
Committee of the College of Veterinarians of Ontario to address his =
charges of=20
<I>professional misconduct</I>. At his hearing on that date, Dr. =
Brodetsky=20
admitted a series of facts which are directly relevant to this =
prosecution of=20
Pet Heaven and the Blechmans. In particular, Dr. Brodetsky admitted that =
he had=20
<I>practised veterinary medicine</I>, and <I>held himself out as =
practising=20
veterinary medicine</I>, through Pet Heaven. In other words, he admitted =
that he=20
helped the defendants in this case to do precisely what they are accused =
of=20
doing.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">On October 1, 2009, =
at the=20
continuation of this trial but after the prosecution had closed its =
case<A=20
title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn11"=20
name=3D_ftnref11><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[11]</SPAN></SPAN></A>,=20
the prosecution brought a motion to re-open its case against the =
defendants. The=20
prosecution was seeking to have me admit into evidence a Certificate of =
the=20
Registrar of the College of Veterinarians of Ontario which summarized =
the=20
admissions made by Brodetsky. These admissions were viewed by the =
prosecution as=20
=E2=80=9Chighly probative evidence against the defendant in these =
proceedings=E2=80=9D. For the=20
prosecution, Mr. Leblanc emphasized the obvious point that this =
Registrar=E2=80=99s=20
Certificate constituted =E2=80=9Cnew evidence=E2=80=9D which was not =
available before the=20
closure of the prosecution=E2=80=99s case against these defendants. =
According to the=20
prosecution, my authority for admitting the certificate evidence was =
section 44=20
of the <U>Veterinarians Act</U> <A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn12"=20
name=3D_ftnref12><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[12]</SPAN></SPAN></A></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The defence resisted =
the=20
prosecution motion to re-open its case. The reason given was that the =
defendants=20
would be =E2=80=9Cprejudiced=E2=80=9D by the admission of the new =
evidence. Specifically, the=20
defendants would be deprived of the opportunity of challenging the =
admissions in=20
the Registrar=E2=80=99s Certificate. Given that Dr. Brodetsky had proven =
to be an=20
uncooperative witness who had given unresponsive and even contradictory=20
testimony when first called, counsel for the defence was justifiably =
concerned=20
that I would now be asked to take these =E2=80=9Cadmissions=E2=80=9D at =
face value.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Ultimately, I =
permitted the=20
prosecution to re-open its case and to admit into evidence the =
Registrar=E2=80=99s=20
Certificate. However, given the legitimate concern of counsel for the =
defence, I=20
insisted that the prosecution re-call Dr. Brodetsky to the witness =
stand. In=20
doing so, I had two purposes in mind. First, given his previous =
contradictory=20
testimony, I wished to assure myself that Dr. Brodetsky would actually =
adopt the=20
=E2=80=9Cadmissions=E2=80=9D when he was re-called. This would be a =
rather fortuitous=20
opportunity for the prosecution to rehabilitate the hostile witness =
which the=20
prosecution had been forced to call. Second, a second opportunity to=20
cross-examine Dr. Brodetsky would remedy any =E2=80=9Cprejudice=E2=80=9D =
to the defendants=20
created by the admission of this new evidence.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In my judgment, it =
was necessary=20
to permit the prosecution to re-open its case. Dr. Brodetsky=E2=80=99s =
obvious and=20
continuing hostility toward the prosecution, when he initially =
testified, had=20
prevented the prosecution from obtaining straightforward answers to =
simple=20
questions about basic matters of fact. These were matters of fact on =
which the=20
prosecution case rested. Further, these matters of fact were =
unequivocally=20
conceded by the defence only late in the proceedings after the =
prosecution had=20
presented its case. It would be gravely prejudicial to the prosecution =
to permit=20
an obviously hostile witness to deliberately jeopardize the prosecution =
and=20
thereby to undermine the administration of justice.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Respecting my =
jurisdiction to=20
permit the prosecution to re-open its case, a court has discretion to do =
so when=20
new evidence becomes available after the prosecution has closed its =
case.<A=20
title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn13"=20
name=3D_ftnref13><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[13]</SPAN></SPAN></A></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>Search &amp;=20
Seizure Issues</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">On January 15, 2008, =
Investigator=20
Martin Fischer sought and obtained three search warrants from a Justice =
of the=20
Peace in Toronto. These warrants authorized searches of the =
Blechmans=E2=80=99=20
residential premises and two vehicles which were associated with that=20
residential address. On January 17, 2008, the warrants were executed. =
The object=20
of the search and seizure was records related to the business carried on =
by Pet=20
Heaven. Among the business records seized were invoice books, for the =
period=20
January 2005 to January 2008, and cheque stubs showing evidence of =
payment for=20
services rendered. The documentary evidence seized constituted real =
evidence in=20
its own right and it was also used to examine and cross examine =
witnesses,=20
especially Shelley Greenberg-Blechman and Dr. Brodetsky.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">During the course of =
this trial,=20
Mr. Pasquale raised and argued several search and seizure issues. In =
particular,=20
the defence challenged both the issuance of the three search warrants =
and the=20
manner in which the warrants were executed. During the discussion of =
these=20
issues, Mr. Pasquale indicated that the defendants were seeking all =
available=20
remedies under section 24 of the <U>Canadian Charter of Rights &amp;=20
Freedoms</U>. Specifically, the defence sought, a <I>judicial stay of=20
proceedings</I> under section 24(1) of the Charter. Alternatively, the =
defence=20
sought <I>exclusion of evidence</I> under section 24(2) of the =
Charter.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Issuance of The=20
Three Search Warrants</I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">To begin with, the =
defence=20
challenged the issuance of the three search warrants by the Justice of =
the=20
Peace. The basis for this challenge was certain specified deficiencies =
in the=20
<I>information to obtain</I> the search warrants. The <I>information to=20
obtain</I> a search warrant is a written and sworn application which is=20
presented to a judicial officer as the basis for a request for search =
and=20
seizure powers. A person seeking a search warrant must submit a sworn, =
written=20
application which clearly and coherently discloses the basis for his =
belief that=20
evidence of an offence will be found at a specified location. The =
defence argued=20
that the various cumulative deficiencies effectively deprived the =
Justice of the=20
Peace of jurisdiction to issue the warrants. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Without question or =
doubt, Martin=20
Fischer=E2=80=99s search warrant application was seriously deficient in =
several=20
significant respects. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The first fundamental =
defect of=20
the search warrant application is its lack of=20
<I>readability/intelligibility</I><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn14"=20
name=3D_ftnref14><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[14]</SPAN></SPAN></A>.=20
The problem here is the lack of a coherent narrative which synthesizes =
and=20
summarizes the numerous appendices which are part of the application.=20
Investigator Fischer should have provided a narrative which summarized =
his=20
investigation, his information pertaining to this case, and his sources, =
beliefs=20
and conclusions. Instead, there was no narrative whatsoever. The =
reviewing=20
judicial officer was left to wrestle with numerous appendices which only =

indirectly, partially, and inadequately justified the request for the =
search and=20
seizure powers.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The second =
fundamental defect=20
proceeds directly and immediately from the first. Investigator Fischer =
failed to=20
provide the Justice of the Peace with an overall, coherent theory of his =
case. A=20
coherent theory of the case will provide the judicial official with a =
rational=20
measuring stick against which to evaluate the various items of =
information=20
contained in the search warrant application. In the absence of an =
explicit,=20
coherent theory of the case, the judicial official is deprived of the =
standard=20
by which to evaluate the significance of the information attested by the =

applicant. From a practical perspective, this means that the judicial =
official=20
is invited or compelled to speculate about the meaning and significance =
of the=20
information provided. This makes neutral, objective review of the =
application=20
virtually impossible because the judicial official is invited to become =
a=20
participant in making the case against the suspects.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In this case, Fischer =
fails to=20
explicitly, clearly, and coherently explain that he believes the =
Blechmans are=20
operating a business, under the trade name of =E2=80=9CPet =
Heaven=E2=80=9D, which may be=20
breaching provisions of Ontario=E2=80=99s <U>Veterinarians Act</U>. =
Although this is=20
stated indirectly in a roundabout way in one of the appendices, it is =
not stated=20
directly, explicitly and precisely to the Justice of the Peace. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The various =
appendices, which=20
form part of Fischer=E2=80=99s application, leave much to be desired in =
specifying the=20
actual, suspected offences attributable to the Blechmans or to Pet =
Heaven.=20
Further, at no time does he explain specifically and explicitly why he =
expects=20
to find evidence of the suspected offences at the Blechman residence or =
in the=20
Blechman vehicles.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Further, the =
transcript of the=20
interaction between Investigator Fischer and the Justice of the Peace =
reveals=20
confusion, on the part of both, about who precisely the =
suspects/defendants are.=20
In addition, Fischer failed to explicitly articulate how the information =
in his=20
various appendices supported his theory of the case.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The overall lack of =
coherence=20
compels the judicial officer to speculate about Investigator =
Fischer=E2=80=99s=20
knowledge, beliefs and sources. Search and seizure law requires Fischer =
to=20
explain the coherence of his case to the judicial officer. The quality =
of the=20
application strongly suggests that this was not properly done. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Third, =
Fischer=E2=80=99s application=20
fails to specify what he knows or what he believes and the specific =
sources for=20
that knowledge or belief. In other words, he fails to establish and =
explain a=20
chain of knowledge, and the sources of that knowledge, which lead him to =
believe=20
that evidence of certain specified offences will be found at certain =
specified=20
locations. Under Canadian search and seizure law, search warrant =
applicants must=20
source information<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn15"=20
name=3D_ftnref15><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[15]</SPAN></SPAN></A>=20
to permit proper evaluation of search warrant applications.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">With respect to =
Fischer=E2=80=99s sources=20
of information, there are four draft will-say statements among the =
appendices in=20
the search warrant application. Only two of these will-say statements =
are dated=20
and signed. During the trial, Investigator Fischer disclosed that he had =
drafted=20
the will-say statements and forwarded them to the complainants for =
review and=20
signature. However, this information was not communicated directly, =
specifically=20
and explicitly to the Justice of the Peace at the time the search =
warrant=20
applications were submitted.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Further, Fischer =
failed to=20
disclose that he had personally observed the two vehicles, for which he =
was=20
seeking search warrants, at the Blechman residence. In other words, he =
failed to=20
disclose that his source for this information was his own personal =
observation=20
of the vehicles at the Blechman residence.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Nor did Fischer =
specifically and=20
explicitly state his belief that he expected to find evidence of illegal =

practice of veterinary medicine in these vehicles because he believed =
the=20
vehicles to be used in the conduct of the Pet Heaven business. Based =
upon the=20
complaints received by the Veterinary College of Ontario, Fischer did =
have=20
information that Eric Blechman was using a motor vehicle to dispose of =
animal=20
remains. However, this item of information was not specifically and =
explicitly=20
brought to the attention of the judicial officer considering the request =
for the=20
search warrants for the vehicles.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Fourth, the =
interaction between=20
Investigator Fischer and the Justice of the Peace breaches the <I>four =
corners=20
rule<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn16"=20
name=3D_ftnref16><SPAN class=3DMsoFootnoteReference><B><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[16]</SPAN></B></SPAN></A></I>=20
which prevents a search warrant applicant from supplementing his sworn, =
written=20
application with additional verbal comments. The rationale underlying =
the=20
<I>four corners rule</I> is the facilitation of judicial review of the =
issuance=20
of the search warrant. The judicial official, who considers the search =
warrant=20
application, must confine himself to consideration of the grounds in the =
written=20
and sworn application. He must not consider anything which is not =
specifically=20
addressed in the written application<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn17"=20
name=3D_ftnref17><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[17]</SPAN></SPAN></A>.=20
The rule enables a higher court to determine whether the written grounds =
were=20
sufficient to give the issuing justice jurisdiction to issue the search=20
warrant.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The transcript of the =
interaction=20
between Fischer and the Justice of the Peace was filed as an exhibit. =
That=20
transcript reveals a conversation in which Fisher effectively =
supplements his=20
written application with verbal comments which explain who the =
defendants are=20
and which offences are being investigated. In other words, the Justice =
of the=20
Peace had to ask Fischer who the defendants were because it was not =
immediately=20
clear from the face of the written application. In answering this =
inquiry,=20
Fischer himself seems somewhat tentative in his answer that Pet Heaven =
was also=20
a defendant. Besides violating the <I>four corners rule</I> of search =
and=20
seizure law, this interaction reveals that the application, on its own, =
was=20
insufficient to provide the judicial officer with a meaningful and =
coherent=20
synopsis of the case</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In this case, the =
Justice of the=20
Peace was uncertain about the identity of the suspects in this case.=20
Investigator Fischer gave verbal answers which effectively and =
improperly=20
supplemented his written search warrant application.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">For all the reasons =
mentioned=20
above, had I been the judicial officer to whom Mr. Fischer applied for =
these=20
search warrants, I would not have issued them. Although I do not have =
the=20
jurisdiction to quash the three search warrants, I do have authority to =
declare=20
that they were illegally issued<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn18"=20
name=3D_ftnref18><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[18]</SPAN></SPAN></A>.=20
In my judgment, the applications for these warrants were seriously =
deficient and=20
fatally flawed. In my judgment, these three warrants were illegally =
issued. In=20
other words, the Justice of the Peace did <U>not</U> have sufficient =
grounds to=20
issue the warrants. Consequently, the insufficient grounds deprived the =
Justice=20
of the Peace of jurisdiction to issue the warrants.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Execution of The=20
Search Warrants</I></P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">On January 17, 2008, =
the three=20
search warrants were executed by Investigator Fischer with the =
assistance of=20
three police officers. The defence challenged the manner in which the =
warrants=20
were executed.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">First, the defence =
claimed that=20
Investigator Fischer=E2=80=99s manner was officious and aggressive =
toward the=20
defendants. It was claimed that Fischer had officiously stated that the =
searches=20
could be performed either =E2=80=9Cthe hard way or the easy =
way=E2=80=9D. The defence claim was=20
that the manner of conducting the search intimidated the defendants and =
thereby=20
tainted the whole search and seizure. To this claim, the prosecution =
responded=20
that Investigator Fischer, in the interests of minimizing inconvenience =
to the=20
defendants, was merely endeavouring to execute the searches in an =
efficient=20
manner.</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Second, it was =
claimed that=20
Fischer and the Toronto police officers had exceeded the scope of their =
search=20
powers by searching a third motor vehicle which was not specified in the =
search=20
warrants. This claim was effectively met by the prosecution reply that =
Eric=20
Blechman had invited Fischer and/or the police officers to search the =
third=20
vehicle for which they did not have a search warrant. In other words, =
based upon=20
certain specified words and actions on the part of Eric Blechman, Mr. =
Fischer=20
honestly and reasonably believed that Eric Blechman was consenting to =
search of=20
the vehicle for which there was no warrant.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Respecting the manner =
in which=20
the search warrants were executed at the Blechman residence, Eric =
Blechman=E2=80=99s=20
testimony was not consistent with the testimony of Investigator Martin =
Fischer=20
or that of the three police officers who assisted him during the search. =

However, the testimony of Mr. Fischer was indeed consistent with the =
testimony=20
of the three officers respecting the circumstances of the search.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">With respect to the =
manner of the=20
search, Mr. Blechman claimed that Fischer refused to disclose the reason =
for the=20
search. Obviously, this claim is untenable because the search was =
successfully=20
conducted and the relevant business documents were provided. This claim =
also=20
contradicts the testimony of Fischer and the police officers who stated =
that the=20
purpose and authority of the search was stated and that, consequently, =
the=20
relevant documents were produced by the Blechmans who appeared =
co-operative=20
throughout the conduct of the search.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Mr. =
Blechman=E2=80=99s claim, that the=20
search of the third motor vehicle, for which there was no search =
warrant, was=20
not consensual, contradicts the police testimony which corroborated =
Fischer=E2=80=99s=20
claim that the search was consensual. Mr. Blechman=E2=80=99s =
recollection of certain=20
details also differed from the recollection of Fischer and the three =
police=20
officers. For instance, Blechman stated that Fischer had simply entered =
the=20
third vehicle without seeking prior permission. However, Fischer =
indicated that=20
he merely peered through the opened door of the third vehicle without =
actually=20
entering it.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In final submissions, =
counsel for=20
the prosecution commented that defence counsel=E2=80=99s failure to =
confront the police=20
officers about Eric Blechman=E2=80=99s allegation, of impropriety in the =
conduct of the=20
search, effectively prohibited the defence from raising the manner of =
the search=20
as a constitutional issue<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn19"=20
name=3D_ftnref19><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[19]</SPAN></SPAN></A>.=20
Indeed, there is merit to this submission. The police officers were =
neutral=20
witnesses who had been called precisely to address the claims of =
impropriety=20
made by the Blechmans.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Although I need not =
determine the=20
details of what actually happened during the execution of the search, =
even if=20
the objectionable conduct occurred as claimed by the defence, such =
conduct would=20
not justify exclusion of the fruits of the search. Nor would it justify =
a=20
<I>judicial stay of proceedings</I>. First, the officious and aggressive =
conduct=20
imputed to Investigator Fischer was simply not sufficiently serious to =
require=20
or justify <I>exclusion of evidence</I> or a <I>judicial stay</I>. =
Second, even=20
if Fischer and the police officers did exceed the scope of their search =
powers=20
by searching the third vehicle without a warrant, no incriminating =
evidence was=20
found in the third vehicle and such an inconsequential breach of Charter =
rights=20
could not justify exclusion or stay.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Remedies Sought=20
Under Section 24 of the Charter</I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In my judgment, for =
the following=20
reasons, neither of the remedies sought under section 24 of the Charter =
should=20
be granted. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Although I do decline =
to make=20
specific findings about what occurred during the execution of the search =

warrants, I do believe that the prosecution version of the search is =
much more=20
likely to have occurred than the version suggested by the defence. =
However, as=20
submitted by Mr. Leblanc for the prosecution, even if I do accept the =
defence=20
version of the execution of the search warrants, the impugned conduct =
does=20
<U>not</U> justify either <I>exclusion</I> of the business records =
seized or a=20
<I>judicial stay of proceedings</I>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">It must be remembered =
that, even=20
if the search warrants were illegally issued, Investigator Fischer and =
the=20
police were <I>acting in good faith</I> in their execution of the search =
and=20
seizure powers granted by the warrants. Fischer had sought and obtained =
<I>prior=20
judicial approval</I> of the search and seizure of business records from =
the=20
residence. He had every right to rely upon the warrants which are =
presumed valid=20
until a court rules otherwise. Further, the evidence seized from the =
Blechman=20
residence was non-conscriptive<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn20"=20
name=3D_ftnref20><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[20]</SPAN></SPAN></A>=20
and directly probative of the issues raised in this prosecution.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Even if Martin =
Fischer was=20
somewhat officious and aggressive in his execution of the search =
warrants, such=20
behaviour would not rise to the level of tainting the whole search and =
seizure=20
pursuant to the search warrants. Had Fischer and the police wantonly =
damaged or=20
destroyed property during the conduct of the search, then perhaps =
<I>exclusion=20
of evidence</I> or a <I>judicial stay</I> would have been appropriate. =
However,=20
that was not the claim made by the defence. Very simply, the defence =
claim was=20
that Fischer had been somewhat rude and abrupt while addressing the=20
Blechmans.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Further, even if =
Invesitgator=20
Fischer or Officer Webb exceeded their search powers by &nbsp;searching =
a third=20
motor vehicle for which they had no search warrant, this was an =
inadvertent=20
mistake based on their <I>reasonable and good faith belief</I> that Eric =

Blechman had consented to the search of the third vehicle by his words =
and=20
actions. In any event, no evidence was found in the third vehicle.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">It must be remembered =
that this=20
was a search of a residence for business records associated with the =
conduct of=20
a business at or from that residential address. According to the =
caselaw, this=20
means that the defendants had a lesser <I>expectation of privacy</I> in =
these=20
circumstances<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn21"=20
name=3D_ftnref21><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[21]</SPAN></SPAN></A>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">A <I>judicial stay of =

proceedings</I> is indeed a draconian remedy which is appropriate only =
in the=20
situation of a very serious Charter violation. It is a last resort =
suitable only=20
for the clearest of cases. To succeed in having these proceedings =
stayed, the=20
defence would have to demonstrate that compelling the defendants to =
stand trial=20
would offend the principles of fundamental justice which underlie the=20
community=E2=80=99s sense of fair play and decency <U>and</U> that a =
stay was necessary=20
to prevent abuse of the court=E2=80=99s process through oppressive and =
vexatious=20
proceedings<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn22"=20
name=3D_ftnref22><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[22]</SPAN></SPAN></A>.=20
A stay would&nbsp; be considered only where all other avenues for =
protecting the=20
defendant=E2=80=99s <I>right to make full answer and defence</I> have =
been exhausted.=20
This is a very high threshold which the defence has failed to meet in =
this=20
case.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The leading caselaw =
on exclusion=20
of evidence<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn23"=20
name=3D_ftnref23><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[23]</SPAN></SPAN></A>indicates=20
that the main factors for consideration are: the seriousness of the=20
Charter-infringing state conduct; the impact of the breach on the=20
Charter-protected interest of the defendant; and society=E2=80=99s =
interest in the=20
adjudication of the case on its merits. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Applying these =
exclusion criteria=20
to the circumstances of this case yields the following results. First, =
if there=20
were any Charter breach, it was a <I>good faith mistake</I> on the part =
of state=20
agency. I find that there were no grounds to conclude that any Charter =
breach=20
was <I>deliberate</I>, <I>flagrant</I>, or part of a larger <I>pattern =
of=20
disregard for Charter rights</I>. Investigator Fischer and the police =
were=20
executing search warrants whose validity they had no reason to doubt. =
Further,=20
any search of the third vehicle without a warrant was done with the =
apparent=20
consent of Eric Blechman. Second, the items seized from the Blechman =
residence=20
were <I>non-conscriptive evidence</I> in the form of business records in =
which=20
they had a diminished expectation of privacy<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn24"=20
name=3D_ftnref24><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[24]</SPAN></SPAN></A>.=20
Third, exclusion of this evidence would have seriously prejudiced the=20
prosecution=E2=80=99s presentation of its case and thereby undermined =
the adjudication=20
of this case on its merits. Not only were the business records =
substantive=20
evidence against the defendants, the business documents also assisted =
the=20
prosecution in cross-examining the defendants and its own hostile =
witness.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">For the reasons =
given, I conclude=20
that neither a <I>judicial stay</I> nor <I>exclusion of evidence</I> is=20
appropriate in the circumstances of this case.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>CREDIBILITY &amp;=20
EVIDENTIAL FINDINGS </B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">This section has two =
purposes.=20
First, it will address my findings respecting the credibility of key =
witnesses.=20
Second, it will enumerate my factual findings based upon the evidence=20
&nbsp;which I have found credible.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Findings=20
Respecting Credibility of Prosecution Witnesses</I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">My findings =
respecting the=20
credibility of Dr. Grigory Brodetsky have been expressed elsewhere in =
this=20
judgment. I will not repeat them here.</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In my view, each of =
the four=20
complainant witnesses who testified for the prosecution should be =
considered=20
credible. These witnesses were Margaret Routh, Megan McGurk, Gladys =
Munroe, and=20
Anne MacDonald. Each was called to detail her experience with Pet =
Heaven. Each=20
of the four related her testimony in a forthright and straightforward =
manner.=20
Each witness was able to relate useful information and to answer =
follow-up=20
questions. None of these witnesses was cross-examined by counsel for the =

defence, except for Margaret Routh who was very briefly cross-examined. =
Quite=20
frankly, I found no reason to doubt or disbelieve anything attested by =
any of=20
these witnesses.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Investigator Martin =
Fischer was=20
called to explain his investigation into the business of Pet Heaven and =
the=20
Blechmans. It was Fischer who personally conducted the investigation and =
who=20
executed the search warrants at the Blechman residence which resulted in =
the=20
seizure of incriminating business documents. Mr. Fischer is the only=20
investigator employed by Ontario=E2=80=99s College of Veterinarians. =
Aside from some=20
certificates, his qualifications as an investigator are somewhat =
limited. He=20
does not have a police background. Nor has he had any formal training =
respecting=20
the preparation of search warrant applications, a fact which was evident =
in this=20
case. However, as a witness, he gave testimony which was =
straightforward,=20
detailed and forthright. I found no reason to doubt or disbelieve =
anything he=20
said on any material point.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Findings=20
Respecting The Credibility of Defence Witnesses</I></P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The most important =
witness for=20
the defence was Shelley Greenberg-Blechman. She was the owner, director, =
and=20
employee of the corporation through which the Pet Heaven business was =
conducted.=20
Throughout most of her testimony, Ms. Blechman presented as an =
unresponsive,=20
difficult witness. Her discomfort in the witness box was evident from =
beginning=20
to end. Her answers tended to be vague, hesitant and unhelpful, even =
when=20
questioned by defence counsel. Ms. Blechman feigned difficulty =
understanding the=20
simplest of questions. She was cautioned by me several times about the=20
importance of answering questions accurately, completely, and candidly. =
These=20
cautions were frequently disregarded. Ms. Blechman found it painfully =
difficult=20
to admit anything which she thought or suspected might undermine the =
defence=20
case or strengthen the prosecution case. During cross-examination, she =
had to be=20
repeatedly confronted with documentation to encourage her to give a =
truthful=20
answer. Quite frankly, I found it difficult to believe anything Ms. =
Blechman=20
attested unless there was corroboration.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Eric Blechman was the =
second most=20
important witness for the defence. He was the employee of the =
corporation who=20
attended clients homes to collect money and dispose of the animal =
remains. His=20
testimony featured unlikely accounts of events. His versions of events =
tended to=20
be self-serving for the defence but inconsistent with other evidence. =
For=20
example, his testimony about the circumstances of the execution of the =
search=20
warrants at the Blechman residence is simply not credible. In fact, his=20
recollection is directly contradicted by Investigator Martin Fischer and =
the=20
three police officers who were assisting Fischer to conduct the search. =
At other=20
times, he provided answers which were vague or not candid. Overall, I =
would not=20
accept Mr. Blechman=E2=80=99s testimony, on any material point, without =
some=20
corroboration.</P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Although I have made =
adverse=20
findings respecting the credibility of both Eric Blechman and Shelley=20
Greenberg-Blechman, I have <U>not</U> automatically concluded that they =
must be=20
<I>guilty</I> of the charges simply because of their lack of candour. I =
am=20
mindful of the necessity to adjudicate their liability in accordance =
with the=20
substantive evidence which I do determine to be credible.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>Factual Findings=20
Based On The Evidence</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">This section will =
<U>not</U> be=20
an exhaustive or comprehensive review of the testamentary and =
documentary=20
evidence. Such a review is impractical and unnecessary, especially in a =
case=20
involving thirteen witnesses and six days of trial. I will simply =
summarize and=20
highlight key pieces of evidence which are specifically relevant to the =
charges=20
and which merit particular mention.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">It is imperative to =
understand=20
that most of the circumstances which formed the factual foundation of =
the=20
prosecution=E2=80=99s case were eventually and ultimately conceded by =
counsel for the=20
defence. For instance, the defence conceded that Pet Heaven and the =
Blechmans=20
were engaged in a business which arranged for a veterinarian to attend =
the homes=20
of paying clients for the purpose of performing animal euthanasia on =
suffering=20
or dying pets. What the defence <U>did not concede</U> was that =
provision of=20
this service amounted to the unauthorized practice of veterinary =
medicine.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Although the defence =
did concede=20
much of the factual basis for the prosecution case, the defence =
concessions were=20
made informally only after the prosecution had presented its case =
against the=20
defendants.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The prosecution began =
by adducing=20
evidence of Pet Heaven=E2=80=99s advertisement and promotion of its =
business.=20
Specifically, there were two ways in which Pet Heaven advertised its =
in-home=20
animal euthanasia service. First, there was a postcard which was =
circulated to=20
the offices of veterinarians and at pet shows. Second, there was =
evidence of a=20
website maintained by Pet Heaven which described the services they =
offered. Both=20
the postcard and the website mentioned =E2=80=9Cour doctors=E2=80=9D =
when describing the animal=20
euthanasia service.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The prosecution =
adduced evidence=20
from several Pet Heaven clients who were dissatisfied with the manner in =
which=20
the attending veterinarian [Dr. Brodetsky] performed the animal =
euthanasia.=20
These witnesses were Margaret Routh, Megan McGurk, Gladys Munroe, and =
Anne=20
MacDonald. All of these witnesses testified about their experience with =
the Pet=20
Heaven-provided veterinarian who euthanized their animals. Several of =
these=20
witnesses complained that the attending vet had actually performed the=20
euthanasia incompetently thereby exposing their suffering or dying =
animal to=20
increased suffering.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Typically, according =
to these=20
complainants, they had contacted Pet Heaven by phone and had spoken to =
Shelley=20
Greenberg-Blechman who made all the arrangements for a vet to attend =
their homes=20
to perform the animal euthanasia. Significantly, it was Shelley=20
Greenberg-Blechman who would actually choose the vet who would be sent =
to the=20
client home. She actively handled all the office business and even =
responded to=20
client complaints<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn25"=20
name=3D_ftnref25><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[25]</SPAN></SPAN></A>.=20
Eric Blechman usually attended the client=E2=80=99s home to do the =
necessary paperwork,=20
to collect the money&nbsp; and/or to dispose of the animal remains.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">All of the =
complainants<A=20
title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn26"=20
name=3D_ftnref26><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[26]</SPAN></SPAN></A>=20
confirmed that there was no pre-existing relationship between the =
attending=20
veterinarian and either the paying client or the suffering animal. =
Further, the=20
complainants confirmed that the attending vet did not inquire about the =
medical=20
history of the animals. Nor did the attending vet discuss any treatment =
options=20
other than euthanasia. All of the clients honestly and reasonably =
believed that=20
they were dealing directly with Pet Heaven rather than the attending vet =
with=20
whom they had no pre-existing relationship. In other words, the clients=20
reasonably believed that Pet Heaven, and not the attending vet, was the =
one=20
providing the service. This particular information, respecting how Pet =
Heaven=20
actually provided the service and billed for it, would take on much =
greater=20
significance after the expert testimony of Dr. Nigel Gumley was =
admitted.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">During the trial, the =
evidence=20
respecting the billing practice of Pet Heaven established the following: =
the=20
usual charge for animal euthanasia was $250. From this fee, $150 was =
paid to the=20
attending vet [usually Dr. Brodetsky]. This billing practice was =
conclusively=20
demonstrated by the Pet Heaven business documentation which was seized =
from the=20
Blechman residence, when investigator Fischer executed&nbsp; the search=20
warrants. This business documentation [invoices] not only demonstrated =
the=20
billing practice of Pet Heaven but also confirmed that Dr. Brodetsky was =
the=20
usual veterinarian chosen by Shelley Greenberg-Blechman to perform the =
animal=20
euthanasia.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The expert testimony =
of Dr. Nigel=20
Gumley was crucial in appreciating the evidence of the Pet Heaven =
clients.=20
First, Dr. Gumley noted that there was no pre-existing VCPR<A title=3D"" =

href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn27"=20
name=3D_ftnref27><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[27]</SPAN></SPAN></A>=20
between the attending veterinarian and the Pet Heaven clients and their =
pets.=20
Second, Dr. Gumley noted that there was no inquiry about the medical =
condition=20
of the animal and, consequently, no discussion of treatment options. The =
VCPR=20
relationship is critical to establish and maintain in order to =
facilitate candid=20
discussion of the animal=E2=80=99s medical situation and the treatment =
options=20
available. Dr. Gumley=E2=80=99s expert testimony was critical in =
assisting me to=20
determine whether Pet Heaven and the Blechmans had, in fact, trespassed =
into the=20
practice of veterinary medicine.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">When the prosecution =
was=20
permitted to re-open its case, it introduced the Certificate of the =
Registrar of=20
the College of Veterinarians of Ontario. This certificate summarized the =

findings made against Dr. Brodetsky in his disciplinary hearing for =
professional=20
misconduct which arose from his performance of in-home euthanasia for =
Pet Heaven=20
clients. In the course of pleading <I>guilty</I> to professional =
misconduct, Dr.=20
Brodetsky made certain admissions which were directly probative for my =
factual=20
findings in these proceedings. The most damaging admission, from the =
perspective=20
of the three defendants in this trial, was Brodetsky=E2=80=99s admission =
that he had in=20
fact practised veterinary medicine through Pet Heaven. In other words,=20
Brodetsky=E2=80=99s admissions confirmed the prosecution theory of the =
case.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">While Dr. Brodetsky =
was not a=20
defendant in these proceedings, it is necessary for me to explain his =
role in=20
the circumstances of this case. It is necessary to understand his role =
so as to=20
understand how the defendants committed these offences. From the outset =
of this=20
trial, the prosecution view was that Brodetsky was, at all material =
times,=20
working for, and at the direction of, Pet Heaven. This view was =
confirmed by the=20
admissions he made in his own disciplinary hearing. Dr. =
Brodetsky=E2=80=99s key=20
admission that Pet Heaven and the Blechmans had steered clients toward =
him&nbsp;=20
means that, for practical purposes, Pet Heaven and the Blechmans were, =
as a=20
matter of fact, practising veterinary medicine, or holding themselves =
out as=20
doing so, without a licence. It must be understood that Pet Heaven would =
not=20
have qualified for a <I>certificate of authorization</I> which would =
have=20
permitted the corporate practice of veterinary medicine since the =
corporation=20
was not owned and managed by veterinarians.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Drawing The=20
Appropriate Factual Conclusions</I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Drawing appropriate =
factual=20
conclusions from the evidence presented was facilitated by the quality =
of=20
evidence adduced. In due course, I determined that all of the =
prosecution=20
witnesses were very credible. Further, I determined that there was no =
reason to=20
doubt or disbelieve any of the prosecution witnesses on any material =
point.=20
Finally, the documentation presented by the prosecution corroborated the =
witness=20
testimony and confirmed the prosecution=E2=80=99s theory of the =
case.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Unfortunately for the =
defence,=20
the credibility problems of Shelley Greenberg-Blechman and Eric Blechman =

seriously damaged the defence case. The low credibility of the Blechmans =

contrasted sharply with the high credibility of the prosecution =
witnesses<A=20
title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn28"=20
name=3D_ftnref28><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[28]</SPAN></SPAN></A>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Putting together all =
of the=20
evidence adduced by the prosecution, which evidence I wholeheartedly =
accept=20
without reservation, I conclude, that Pet Heaven and the Blechmans did =
in fact=20
practise veterinary medicine. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">As a matter of fact, =
performance=20
of&nbsp; animal euthanasia by the Pet Heaven-provided veterinarian =
amounted to a=20
crossing of a critical line and trespassing into the practice of =
veterinary=20
medicine. In the alternative, the same evidence justifies a conclusion =
that all=20
three defendants held themselves out as practising veterinary medicine. =
As a=20
matter of fact, all of the complainants reasonably believed that Pet =
Heaven and=20
the Blechmans were the parties who were providing the in-home euthanasia =

service. Further, anyone who had viewed the advertising flyer or the =
website=20
would reasonably believe, as a matter of fact, that the defendants were =
holding=20
themselves out as providers of a veterinary service and therefore =
practitioners=20
of veterinary medicine.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>FINDINGS=20
RESPECTING LIABILITY</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Determination of =
liability=20
involves comparing one=E2=80=99s factual findings against the =
requirements, standards,=20
and prohibitions established by the law. This case involves alleged =
breaches of=20
Ontario=E2=80=99s <U>Veterinarians Act</U>. In due course, I must =
compare my factual=20
findings against the various provisions of that statute to determine =
whether=20
there were breaches of the law by any of these defendants. Obviously, =
the=20
wording of the statute will be crucial in determining liability.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Unfortunately, the=20
<U>Veterinarians Act</U> fails to provide a helpful definition for the =
=E2=80=9Cpractice=20
of veterinary medicine=E2=80=9D. [Please consult the Appendix]. It does =
not provide a=20
meaningful definition which would readily enable a reader to know which =
actions=20
are covered and which are not. </P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">To assist me with =
interpretation=20
of this key statutory term, the prosecution adduced expert evidence from =
Dr.=20
Nigel Gumley. To paraphrase the expert evidence of Dr. Gumley =
=E2=80=9Cto practise=20
veterinary medicine=E2=80=9D must mean or involve, at the very least, =
the evaluation and=20
treatment of the medical needs of animals.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Whatever the precise =
meaning and=20
parameters of this key statutory term, given the expert testimony of Dr. =
Gumley,=20
I do know that the practise of veterinary medicine includes the =
performance of=20
euthanasia to relieve the suffering of an animal. Further, based upon my =

previous factual findings, I determined that these three defendants had, =
as a=20
matter of fact, engaged in the practice of veterinary medicine and held=20
themselves out as doing so.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">It is imperative to =
remember that=20
section 11(5) of the statute declares that =E2=80=9C=E2=80=A6 proof of =
the performance of one=20
act in the practice of veterinary medicine on one occasion is sufficient =
to=20
establish engaging in the practice of veterinary medicine=E2=80=9D. In =
this case, there=20
was proof of repeated acts of the performance of animal euthanasia.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Ultimately, I found =
each=20
defendant guilty of both <I>practising</I> and <I>holding =
itself/herself/himself=20
out as practising</I> veterinary medicine without a licence. The acts of =
the=20
corporate defendant went beyond merely running a =E2=80=9Creferral =
service=E2=80=9D for persons=20
seeking in-home euthanasisa for their dying or suffering pets. Based =
upon the=20
expert evidence of Dr. Gumley, I concluded that Pet Heaven had =
trespassed into=20
the practice of veterinary medicine. Consequently, Shelley =
Greenberg-Blechman=20
and Eric Blechman were liable, in their respective capacities as =
director and=20
employee, unless they could establish either <I>due diligence</I> or=20
<I>reasonable mistake of fact</I>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In her capacity as =
director and=20
employee of the corporation, Shelley Greenberg-Blechman carried on this =
business=20
using the trade name Pet Heaven. It was her corporate entity. She was =
the sole=20
owner and the sole director of the corporate entity. She was the moving =
force=20
and directing mind behind the Pet Heaven business. Further, she was the =
person=20
who usually answered the phone, dealt with pet owners concerning =
questions and=20
problems, and arranged for a veterinarian to perform in-home animal =
euthanasia.=20
In my judgment, this is sufficient to ground her liability either as a =
director=20
under section 40(5)(a) or, alternatively, as an agent/employee of the=20
corporation under section 40(5)(b). Several complainants mentioned their =
contact=20
with her and their reporting of their dissatisfaction to her.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">The liability of Eric =
Blechman is=20
based upon his status as an employee of the corporation which carried on =
this=20
business of in-home animal euthanasia. He was neither an owner nor =
director of=20
the corporation. In his capacity as an employee, he attended the homes =
of pet=20
owners who had requested in-home euthanasia for their pets. His =
attendance was=20
primarily to deal with the paperwork and collect money from the Pet =
Heaven=20
clients. However, he occasionally provided other services such as =
removal of the=20
animal body after the euthanasia had been performed. Thus, these acts =
were at=20
least partially responsible for the conduct of that part of the business =
which=20
gave rise to these offences.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Throughout this =
trial, none of=20
the three defendants raised a <I>due diligence</I> defence. At no time =
was=20
evidence adduced that any of the three defendants had taken any =
reasonable=20
measures to avoid either practising or holding itself/herself/himself =
out as=20
practising veterinary medicine. Nor was there any evidence of any =
inquiries made=20
by any of the defendants to any party about whether their business =
trespassed=20
into the practice of veterinary medicine. Since the defendants were =
charged with=20
<I>strict liability offences</I>, the prosecution is entitled to =
findings of=20
<I>guilt</I> upon proof that the defendants had committed the prohibited =
conduct=20
unless the defendants could prove <I>due diligence</I> or <I>reasonable =
mistake=20
of fact</I>. Since these defences were not advanced, liability followed=20
immediately from proof of the prohibited/illegal conduct.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">My liability findings =
are=20
summarized in the chart immediately below.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<TABLE class=3DMsoNormalTable=20
style=3D"BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: =
none"=20
cellSpacing=3D0 cellPadding=3D0 border=3D1>
  <TBODY>
  <TR>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: =
0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: 147.6pt; PADDING-TOP: =
0cm; BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal>&nbsp;</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: =
0cm; BORDER-LEFT: windowtext 1pt; WIDTH: 147.6pt; PADDING-TOP: 0cm; =
BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: center"=20
      align=3Dcenter><B>PRACTISING</B></P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: =
0cm; BORDER-LEFT: windowtext 1pt; WIDTH: 147.6pt; PADDING-TOP: 0cm; =
BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>HOLDING=20
      OUT</B></P></TD></TR>
  <TR>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; =
BORDER-LEFT: windowtext 1pt solid; WIDTH: 147.6pt; PADDING-TOP: 0cm; =
BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal>PET HEAVEN (CORP)</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Guilty</P>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Sections 11(1) =
&amp;=20
      40(1)</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Guilty</P>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Sections 11(1) =
&amp;=20
      40(1)</P></TD></TR>
  <TR>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; =
BORDER-LEFT: windowtext 1pt solid; WIDTH: 147.6pt; PADDING-TOP: 0cm; =
BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal>SHELLEY GREENBERG BLECHMAN (DIRECTOR</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Guilty</P>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Sections 11(1) =
&amp;=20
      40(5)(A)</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Guilty</P>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Sections 11(1) =
&amp;=20
      40(5)(A)</P></TD></TR>
  <TR>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; =
BORDER-LEFT: windowtext 1pt solid; WIDTH: 147.6pt; PADDING-TOP: 0cm; =
BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal>ERIC BLECHMAN (EMPLOYEE)</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Guilty</P>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Sections 11(1) =
&amp;=20
      40(5)(B)</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Guilty</P>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Sections 11(1) =
&amp;=20
      40(5)(B)</P></TD></TR></TBODY></TABLE>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Note that I have =
determined the=20
liability of Shelley Greenberg-Blechman and Eric Blechman under sections =

40(5)(a) and 40(5)(b) of the statute. They have been found liable in =
their=20
respective capacities as director and employee. Their liability is =
dependent=20
upon my prior finding that the corporation is directly liable under =
section 11.=20
</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In summary, I was =
satisfied that=20
the acts attributed to the various defendants amounted to, and =
constituted,=20
commission of the acts prohibited by section 11(1) of the statute, i.e.=20
practising veterinary medicine or holding oneself out as practising =
veterinary=20
medicine.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>CONSIDERATION=20
&amp; IMPOSITION OF PENALTY</B></P>
<P class=3DMsoNormal>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">A sentencing hearing =
was held on=20
April 30, 2010. On that date, I solicited and received submissions from =
both the=20
prosecution and the defence respecting the factors and circumstances =
which I=20
should consider in determining the appropriate penalty<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn29"=20
name=3D_ftnref29><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[29]</SPAN></SPAN></A>=20
to be imposed.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Before discussion of =
factors=20
likely to impact sentence, it is useful to remind oneself of the penalty =

provisions of the <U>Veterinarians Act</U>. Section 40(4) indicates that =
$25,000=20
is the maximum fine for a first conviction for a corporation. Counsel =
for the=20
prosecution confirmed that this was the first conviction for Pet Heaven. =
Section=20
40(6) indicates that the maximum fine, for a first conviction, for =
directors,=20
employees, and agents of the corporation, is $15,000 per person per =
offence.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Prosecution=20
Sentencing Submissions</I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">For the prosecution, =
Mr. Leblanc=20
cited several <I>aggravating factors</I> which he asked me to consider =
in=20
determining the appropriate penalty. First, he reminded me that the Pet =
Heaven=20
business was a commercial activity carried on for profit. Second, =
despite the=20
best intentions<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn30"=20
name=3D_ftnref30><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[30]</SPAN></SPAN></A>=20
of the Blechmans in operating the business, the evidence of the =
complainants had=20
established that vulnerable pet owners had been victimized by Dr. =
Brodetsky=E2=80=99s=20
substandard and unprofessional performance of the euthanasia procedure<A =

title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn31"=20
name=3D_ftnref31><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[31]</SPAN></SPAN></A>.=20
Although the Blechmans had not intended such outcomes for their client=20
pet-owners, they were ultimately responsible for insuring that the =
euthanasia=20
procedure was properly performed by a competent professional. Third, Mr. =
Leblanc=20
cited the letter<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn32"=20
name=3D_ftnref32><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[32]</SPAN></SPAN></A>,=20
from the College of Veterinarians of Ontario to the Blechmans, which had =
placed=20
the Blechmans on notice that the College believed that they had =
trespassed into=20
the practice of veterinary medicine.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">When asked which =
sentencing=20
principles should guide my consideration of penalty, counsel for the =
prosecution=20
suggested that <I>deterrence</I> should be my main concern. More =
precisely, I=20
should be motivated by the sentencing principle of <I>specific =
deterrence</I>.=20
Mr. Leblanc was particularly concerned that the Pet Heaven business was =
an=20
ongoing business and that the Blechmans might be tempted to simply pay a =
fine=20
and continue to breach the <U>Veterinarians Act</U>, if the fine were =
not=20
sufficiently high to discourage repetition of the illegal conduct. Mr. =
Leblanc=20
cautioned me not to impose a penalty which might be interpreted as =
nothing more=20
than a <I>licence fee</I>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In making penalty =
recommendations=20
for the three defendants, counsel for the prosecution suggested the =
following=20
fines: Pet Heaven $20,000; Shelley Greenberg-Blechman $10,000-$12,000; =
Eric=20
Blechman $10,000-$12,000.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Quite frankly, I was =
surprised=20
that the prosecution was seeking the same penalty for Shelley =
Greenberg-Blechman=20
and Eric Blechman. In her various capacities as sole shareholder of the=20
corporation, sole director, and managing employee, I would have thought =
that she=20
was much more involved in the Pet Heaven business than her husband whose =
status=20
was nothing more than that of an employee. However, the =
prosecution=E2=80=99s position=20
was that this was, for all practical purposes, a family business and =
that the=20
sentence should properly reflect that fact. Ultimately, my sentence will =
reflect=20
my disagreement with the prosecution that Shelley and Eric Blechman =
should be=20
fined equally.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In addition to the =
fines=20
specified, the prosecution also sought to have me impose probation on =
all three=20
defendants, including the corporation. For various practical reasons, I=20
expressed my reservations about doing so. First, I had doubts about my=20
jurisdiction and the desirability of placing a corporate defendant on =
probation.=20
Second, even with respect to the personal defendants, I wondered whether =
I could=20
impose probation without requiring the Blechmans to actually report to a =

probation officer. If a reporting condition must be part of any =
probation order,=20
such a reporting condition would likely place the probation officer in a =

quandary about how to supervise the defendants in this case.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Defence Sentencing=20
Submissions</I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Counsel for the =
defence, Mr.=20
Pasquale, submitted the following <I>mitigating factors</I> for my=20
consideration. First, the Blechmans were motivated by the best of =
intentions in=20
seeking to assist suffering or dying animals and their owners. Second, =
he stated=20
that the Blechmans were simply unfamiliar with the law and therefore =
victims of=20
their own legal ignorance. I will comment upon each of these submissions =

below.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Although the =
Blechmans were=20
motivated by an intention to relieve animal and pet-owner suffering, I =
do agree=20
with the prosecution that this case is one of mixed motivation. Through =
conduct=20
of the Pet Heaven business, the Blechmans were also seeking to make a =
profit.=20
The services provided by the company were not free to the clients. =
According to=20
the evidence, each animal euthanasia procedure yielded a gross profit of =
$100 to=20
the company. If the Blechmans had been motivated solely or primarily by =
their=20
concern for suffering animals and their owners, they could have simply =
provided=20
these services without charge. Thus, it is difficult to give significant =
weight=20
to this sentencing submission of defence counsel.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Defence =
counsel=E2=80=99s submission that=20
the Blechmans were victims of their own legal ignorance must now be =
addressed.=20
<I>Ignorance of the law</I> is never a defence to a charge<A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftn33"=20
name=3D_ftnref33><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[33]</SPAN></SPAN></A>.=20
At most it is a mitigating factor to be addressed when the appropriate =
penalty=20
is being considered. However, I would ask the following questions: Is=20
<I>ignorance of the law</I> a mitigating factor in this particular case? =
Were=20
the Blechmans truly ignorant of the law? Did they take reasonable =
measures to=20
acquaint themselves with the law as applicable to the Pet Heaven =
business?</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In my view, =
<I>ignorance of the=20
law</I> is not a mitigating factor in this particular case. As soon as =
the=20
Blechmans received the letter from the College of Veterinarians, they =
were put=20
on notice that the College considered part of their operation illegal. =
However,=20
in response, the Blechmans simply did nothing. They did not seek further =

clarification from the College and they did not seek their own legal =
opinion.=20
Had they sought further clarification, perhaps they could have tailored =
their=20
business so as not to breach the <U>Veterinarians Act</U>. Had they =
sought and=20
received a legal opinion which contradicted the College=E2=80=99s =
position, they could=20
have legitimately claimed that they should be treated leniently and not=20
penalized for their lawyer=E2=80=99s mistaken interpretation of the law. =
Instead of=20
taking either course, they simply continued to conduct business as they =
had been=20
doing before receipt of the letter. In so doing, they must bear the full =
weight=20
of their misunderstanding of the law.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I></I>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Imposition of=20
Sentence</I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In imposing sentence, =
my primary=20
consideration has been <I>specific deterrence</I> of these defendants =
from=20
committing similar or related offences in future. I have also given =
great weight=20
to <I>protection of the public</I>, particularly those members of the =
public who=20
are pet-owners seeking proper and professional care for their suffering =
or dying=20
animals. Finally, I have also considered how the Blechmans defiantly =
insisted,=20
both before charges were laid and in their testimony, that they had done =
nothing=20
wrong.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">In my judgment, after =
due=20
consideration of all the circumstances, the following penalties are=20
appropriate:</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<TABLE class=3DMsoNormalTable=20
style=3D"BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: =
none"=20
cellSpacing=3D0 cellPadding=3D0 border=3D1>
  <TBODY>
  <TR>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: =
#d9d9d9; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt solid; WIDTH: =
147.6pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: =
justify">Defendant</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: =
#d9d9d9; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt; WIDTH: =
147.6pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Fine</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: =
#d9d9d9; PADDING-BOTTOM: 0cm; BORDER-LEFT: windowtext 1pt; WIDTH: =
147.6pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: =
justify">Probation</P></TD></TR>
  <TR>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; =
BORDER-LEFT: windowtext 1pt solid; WIDTH: 147.6pt; PADDING-TOP: 0cm; =
BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Pet =
Heaven</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: =
justify">$15,000.00</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">2 Years, =
Statutory=20
    Terms</P></TD></TR>
  <TR>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; =
BORDER-LEFT: windowtext 1pt solid; WIDTH: 147.6pt; PADDING-TOP: 0cm; =
BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Shelley=20
      Greenberg-Blechman</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: =
justify">$10,000.00</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">2 Years, =
Statutory=20
    Terms</P></TD></TR>
  <TR>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
BORDER-TOP: windowtext 1pt; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; =
BORDER-LEFT: windowtext 1pt solid; WIDTH: 147.6pt; PADDING-TOP: 0cm; =
BORDER-BOTTOM: windowtext 1pt solid"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Eric =
Blechman</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: =
justify">$5,000.00</P></TD>
    <TD=20
    style=3D"BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 5.4pt; =
PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; WIDTH: 147.6pt; =
BORDER-TOP-STYLE: none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt =
solid; BORDER-LEFT-STYLE: none"=20
    vAlign=3Dtop width=3D197>
      <P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">2 Years, =
Statutory=20
    Terms</P></TD></TR></TBODY></TABLE>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">My jurisdiction for =
imposing the=20
probation orders is section 72 of Ontario=E2=80=99s <U>Provincial =
Offences Act</U>. My=20
interpretation of this provision is that I do indeed have the =
jurisdiction to=20
impose probation orders on all three of the defendants. Indeed, that is =
what I=20
intend to do. My reading of the provision is that I need <U>not</U> =
order=20
reporting of any of the defendants to a probation officer.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">According to section =
75 of the=20
<U>Provincial Offences Act</U>, the penalties for breach of a probation =
order=20
are a maximum fine of $1000 and/or imprisonment for a maximum of thirty=20
days.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Each of the =
defendants is placed=20
on probation for 2 years. The probation period commences on the date of =
these=20
written reasons for judgment. Each probation order shall contain only =
the=20
<I>statutory probation terms</I> specified in section 72(2). No other =
terms or=20
conditions shall be added to the statutory terms. There is no reporting=20
condition for any of the three defendants.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><I>Final=20
Comment</I></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">As a final note, I =
wish to thank=20
counsel for their presentation, submissions, assistance and patience =
throughout=20
the trial and during the preparation of these reasons for judgment. =
Although=20
this case was a challenging one, with many complicated issues, it was =
indeed an=20
interesting one. The professionalism of counsel is very much =
appreciated.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Kevin V. Madigan =
B.A., J.D.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Justice of the =
Peace</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">Ontario Court of =
Justice</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B>APPENDIX</B></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>Relevant Excerpts=20
From The Veterinarians Act of Ontario</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify"><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify">=E2=80=9Cpractice of =
veterinary medicine=E2=80=9D=20
includes the practice of dentistry, obstetrics including ova and embryo=20
transfer, and surgery, in relation to an animal other than a human =
being;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt">***</SPAN></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3Dsection-e><A name=3DP203_10029></A><A name=3Ds5p1></A><A=20
name=3DBK5></A><B>5.1</B>&nbsp;&nbsp;Subject to the by-laws, a member or =
two or=20
more members practising veterinary medicine as individuals or as a =
partnership=20
may establish a professional corporation for the purpose of practising=20
veterinary medicine, and the provisions of the <I>Business Corporations =
Act</I>=20
that apply to professional corporations within the meaning of that Act =
apply to=20
such a corporation. 2000, c.&nbsp;42, Sched., s.&nbsp;46; 2001, =
c.&nbsp;8,=20
s.&nbsp;247; 2006, c.&nbsp;19, Sched.&nbsp;A, s.&nbsp;17&nbsp;(5).</P>
<P class=3Dheadnote-e>Registry</P>
<P class=3Dsection-e><A name=3DP205_10500></A><A name=3Ds5p2s1></A><A=20
name=3DBK6></A><B>5.2</B>&nbsp;&nbsp;(1)&nbsp;&nbsp;The Registrar shall =
establish=20
and maintain a register of professional corporations that have been =
issued=20
certificates of authorization. 2000, c.&nbsp;42, Sched., s.&nbsp;46.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt">***</SPAN></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify"><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3Dsection-e><A name=3DP329_28263></A><A name=3Ds11s1></A><A=20
name=3DBK17></A><B>11.</B>&nbsp;&nbsp;(1)&nbsp;&nbsp;No person shall =
engage in the=20
practice of veterinary medicine or hold himself, herself or itself out =
as=20
engaging in the practice of veterinary medicine unless the person is the =
holder=20
of a licence. R.S.O. 1990, c.&nbsp;V.3, s.&nbsp;<A=20
class=3D"reflex-statute reflex-statute-section"=20
href=3D"http://www.canlii.org/en/on/laws/stat/rso-1990-c-v3/latest/rso-19=
90-c-v3.html#sec11">11&nbsp;(1)</A>.</P>
<P class=3Dsection-e>&nbsp;</P>
<P class=3Dheadnote-e>Proof of practice</P>
<P class=3Dsubsection-e><A name=3DP343_29941></A><A=20
name=3Ds11s5></A>(5)&nbsp;&nbsp;For the purposes of this section, proof =
of the=20
performance of one act in the practice of veterinary medicine on one =
occasion is=20
sufficient to establish engaging in the practice of veterinary medicine. =
R.S.O.=20
1990, c.&nbsp;V.3, s.&nbsp;<A class=3D"reflex-statute =
reflex-statute-section"=20
href=3D"http://www.canlii.org/en/on/laws/stat/rso-1990-c-v3/latest/rso-19=
90-c-v3.html#sec11">11&nbsp;(5)</A>.</P>
<P class=3Dsection-e style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3Dsection-e style=3D"TEXT-ALIGN: center" align=3Dcenter>***</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify"><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3Dsection-e><A name=3DP883_99626></A><A name=3Ds40s1></A><A=20
name=3DBK52></A><B>40.</B>&nbsp;&nbsp;(1) Every person who contravenes =
section 11=20
is guilty of an offence and on conviction is liable for the first =
offence to a=20
fine of not more than $15,000 and for each subsequent offence to a fine =
of not=20
more than $30,000.</P>
<P class=3Dheadnote-e>Idem, use of titles</P>
<P class=3Dsubsection-e><A name=3DP885_99872></A><A name=3Ds40s2></A>(2) =
Every person=20
who is not a holder of a licence and who,</P>
<P class=3Dclause-e>(a) uses the title =E2=80=9Cveterinarian=E2=80=9D, =
=E2=80=9Cv=C3=A9t=C3=A9rinaire=E2=80=9D, or=20
=E2=80=9Cveterinary surgeon=E2=80=9D, =E2=80=9Cchirurgien =
v=C3=A9t=C3=A9rinaire=E2=80=9D or an abbreviation or variation=20
thereof as an occupational or business designation; or</P>
<P class=3Dclause-e>(b) uses a term, title or description that will lead =
to the=20
belief that the person may engage in the practice of veterinary =
medicine,</P>
<P class=3Dssubsection-e>is guilty of an offence and on conviction is =
liable for=20
the first offence to a fine of not more than $5,000 and for each =
subsequent=20
offence to a fine of not more than $15,000.</P>
<P class=3Dheadnote-e>Idem, publication</P>
<P class=3Dsubsection-e><A name=3DP890_100459></A><A =
name=3Ds40s3></A>(3) Every person=20
who contravenes subsection 29 (1) or (3) is guilty of an offence and on=20
conviction is liable to a fine of not more than $10,000 and for each =
subsequent=20
offence to a fine of not more than $20,000.</P>
<P class=3Dheadnote-e>Corporation</P>
<P class=3Dsubsection-e><A name=3DP892_100682></A><A =
name=3Ds40s4></A>(4) Where a=20
corporation is convicted of an offence under subsection (1), (2) or (3), =
the=20
maximum fine that may be imposed is $25,000 on a first conviction and =
$50,000 on=20
each subsequent conviction and not as provided in subsection (1), (2) or =

(3).</P>
<P class=3Dheadnote-e>Offence, director, officer, etc., of =
corporation</P>
<P class=3Dsubsection-e><A name=3DP894_100977></A><A =
name=3Ds40s5></A>(5) Where a=20
corporation is convicted of an offence under subsection (1), (2) or =
(3),</P>
<P class=3Dclause-e>(a) each director of the corporation; and</P>
<P class=3Dclause-e>(b) each officer, employee or agent of the =
corporation who was=20
in whole or in part responsible for the conduct of that part of the =
business of=20
the corporation that gave rise to the offence,</P>
<P class=3Dssubsection-e>is guilty of an offence unless he or she =
proves, on the=20
balance of probabilities, that he or she took all reasonable care to =
prevent the=20
commission of the offence.</P>
<P class=3Dheadnote-e>Idem, penalty</P>
<P class=3Dsubsection-e><A name=3DP899_101465></A><A =
name=3Ds40s6></A>(6) Every person=20
convicted of an offence under subsection (5) is liable on conviction to =
a fine=20
of not more than $15,000 on a first conviction and not more than $30,000 =
on each=20
subsequent conviction.</P>
<P class=3Dheadnote-e>Limitation</P>
<P class=3Dsubsection-e><A name=3DP901_101674></A><A =
name=3Ds40s7></A>(7) Proceedings=20
shall not be commenced in respect of an offence under subsection (1), =
(2), (3)=20
or (5) after two years after the date on which the offence was, or is =
alleged to=20
have been, committed. R.S.O. 1990, c.&nbsp;V.3, s.&nbsp;<A=20
class=3D"reflex-statute reflex-statute-section"=20
href=3D"http://www.canlii.org/en/on/laws/stat/rso-1990-c-v3/latest/rso-19=
90-c-v3.html#sec40">40</A>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify"><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" align=3Dcenter><SPAN=20
style=3D"FONT-SIZE: 14pt">***</SPAN></P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify"><SPAN=20
style=3D"FONT-SIZE: 14pt"></SPAN>&nbsp;</P>
<P class=3Dsection-e><A name=3DP924_105602></A><A name=3Ds44></A><A=20
name=3DBK56></A><B>44.</B>&nbsp;&nbsp;Any statement containing =
information from=20
the records required to be kept by the Registrar under this Act and =
purporting=20
to be certified by the Registrar under the seal of the College is =
admissible in=20
evidence in all courts and tribunals as proof, in the absence of =
evidence to the=20
contrary, of the facts stated therein without proof of the appointment =
or=20
signature of the Registrar and without proof of the seal. R.S.O. 1990,=20
c.&nbsp;V.3, s.&nbsp;<A class=3D"reflex-statute reflex-statute-section"=20
href=3D"http://www.canlii.org/en/on/laws/stat/rso-1990-c-v3/latest/rso-19=
90-c-v3.html#sec44">44</A>.</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center" =
align=3Dcenter><B></B>&nbsp;</P>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: center"=20
align=3Dcenter><B></B>&nbsp;</P></DIV>
<DIV><BR clear=3Dall>
<HR align=3Dleft width=3D"33%" SIZE=3D1>

<DIV id=3Dftn1>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref1"=20
name=3D_ftn1><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[1]</SPAN></SPAN></A>=20
The leading case on determining whether an information is =
<I>duplicitous</I> is=20
the the Supreme Court of Canada decision in <U>R. v. Sault Ste. =
Marie</U> <A=20
class=3Dreflex-caselaw name=3Dreflex-caselaw-57065787></A>[1978] S.C.J. =
No. 59=20
(S.C.C.). In that decision, the Supreme Court articulated the test for=20
<I>duplicity</I>: whether the defendant knows the case he must meet or =
whether=20
he is prejudiced by ambiguity in the wording of the charge.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">For authorities =
which have=20
determined that <I>holding out</I> is an alternate mode of committing =
the same=20
offence, pleas consult the following caselaw: <U>R. v. D.P.</U> <A=20
class=3Dreflex-caselaw name=3Dreflex-caselaw-57065788></A>[1995] A.J. =
No. 559 (C.A.)=20
and <U>R. v. Smith</U> <A class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065789></A>[1993] N.W.T.J. No 82 (S.C.).</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn2>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref2"=20
name=3D_ftn2><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[2]</SPAN></SPAN></A>=20
<I>Strict liability offences</I> are <I>public welfare offences</I> =
which=20
require the prosecution to prove, beyond a reasonable doubt, only the =
conduct=20
prohibited by the statute. Where the prosecution succeeds in doing so,=20
conviction for the offence must follow unless the defendant can prove, =
on a=20
balance of probabilities, that he exercised due diligence or that he =
reasonably=20
believed in a state of affairs which, if true, would exonerate him. =
<I>Due=20
diligence</I> is established by the defendant demonstrating that he took =
all=20
reasonable measures to prevent commission of the conduct prohibited by =
the=20
statute.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">&nbsp;</P></DIV>
<DIV id=3Dftn3>
<P class=3DMsoNormal style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref3"=20
name=3D_ftn3><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 12pt; FONT-FAMILY: 'Times New =
Roman'">[3]</SPAN></SPAN></A>=20
<SPAN style=3D"FONT-SIZE: 9pt">When asked specifically about liability =
under the=20
<U>Provincial Offences Act</U> =E2=80=9CParties To An Offence=E2=80=9D =
provisions, counsel for=20
the prosecution conceded that the main thrust of his case had been based =
upon=20
allegations of liability under the <U>Veterinarians Act</U> and that the =

<U>Provincial Offences Act</U> provisions had not been explicitly and=20
specifically argued in submissions.</SPAN></P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn4>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref4"=20
name=3D_ftn4><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[4]</SPAN></SPAN></A>=20
Dr. Brodetsky had been charged with professional misconduct&nbsp; for, =
among=20
other things, breaching section 5.1 of the <U>Veterinarians Act</U>. =
This=20
particular section prohibits veterinarians from working for a =
corporation which=20
practices veterinary medicine but which is not owned by =
veterinarians.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">&nbsp;</P></DIV>
<DIV id=3Dftn5>
<P class=3DMsoFootnoteText><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref5"=20
name=3D_ftn5><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[5]</SPAN></SPAN></A>=20
See section 13 of the <U>Canadian Charter of Rights &amp; =
Freedoms</U>.</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn6>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref6"=20
name=3D_ftn6><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[6]</SPAN></SPAN></A>=20
Under our common law adversarial system, a party calling a witness is =
usually=20
not permitted to cross-examine its own witness. However, at common law, =
a party=20
could cross-examine its own witness at large if that party could =
persuade the=20
court to declare that witness =E2=80=9Chostile=E2=80=9D. See <U>R. v. =
McAllister</U> <A=20
class=3Dreflex-caselaw name=3Dreflex-caselaw-57065790></A>[2008] N.S.J. =
No. 479=20
(C.A.) and <U>R. v. Haughton</U> <A class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065791></A>(1983) 38 O.R. (2d) 536 (County =
Court).</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn7>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref7"=20
name=3D_ftn7><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[7]</SPAN></SPAN></A>=20
The technicality which prevented me from declaring Dr. Brodetsky an =
=E2=80=9Cadverse=20
witness=E2=80=9D under Ontario=E2=80=99s<I> </I><U>Evidence Act</U> was =
the following: Although=20
he had given a previous statement to Investigator Martin Fischer, Dr. =
Brodetsky=20
had not had the benefit of a Russian interpreter. Consequently, I chose =
to=20
disregard this previous statement. The lack of a previous statement =
prevented=20
recourse to section 23 of the Ontario <U>Evidence Act</U>.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">&nbsp;</P></DIV>
<DIV id=3Dftn8>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref8"=20
name=3D_ftn8><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[8]</SPAN></SPAN></A>=20
Comparatively speaking, Dr. Brodetsky=E2=80=99s later testimony was more =
responsive and=20
comprehensible, and therefore helpful, than his earlier testimony. =
However, even=20
his later testimony left much to be desired in terms of clarity, =
precision and=20
candour. Ultimately, I was satisfied that he did adopt the crucial =
admissions he=20
had made in his own disciplinary hearings before the College of =
Veterinarians on=20
August 25, 2009 [See section entitled =E2=80=9CRe-Opening of Prosecution =
Case=E2=80=9D later in=20
this judgment]</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">&nbsp;</P></DIV>
<DIV id=3Dftn9>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref9"=20
name=3D_ftn9><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[9]</SPAN></SPAN></A>=20
There are two exceptions to the rule against witnesses giving opinion =
evidence:=20
</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">First, where a =
witness is=20
properly qualified, by the court, as an expert having special =
qualifications or=20
expertise in a particular and recognized field, he may give expert =
evidence=20
restricted to that particular field of knowledge, expertise or =
competence. </P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">Second, any =
non-expert=20
witness may provide an opinion respecting matters considered to be =
within=20
everyone=E2=80=99s general knowledge or experience. For example, =
non-expert witnesses=20
are permitted to relate common, everyday opinions and conclusions =
[requiring no=20
particular competence or expertise] such as that someone seemed to be=20
intoxicated, angry or upset etc. </P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">&nbsp;</P></DIV>
<DIV id=3Dftn10>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref10"=20
name=3D_ftn10><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[10]</SPAN></SPAN></A>=20
To support his position that expert testimony is routinely permitted in =
cases of=20
unauthorized practice, Mr. Leblanc cited the following caselaw: <U>King =
Optical=20
Group Inc. v. College of Opticians of Ontario</U> <A =
class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065792></A>[2001] O.J. No. 4779 (C.A.) at =
paras.6 &amp;=20
28; <U>College of Dental Hygienists of Ontario v. Tota</U> <A=20
class=3Dreflex-caselaw name=3Dreflex-caselaw-57065793></A>[2008] O.J. =
No. 694=20
(S.C.J.) at para 3; and <U>Assn. of Professional Engineers, Geologists =
&amp;=20
Geophysicists of the NWT v. Treminco Resources Ltd.</U> <A =
class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065794></A>[1995] N.W.T.J. No. 60 (S.C.) at page =
3, para=20
6.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">Further, the =
Ontario Court=20
of Appeal has specifically endorsed the reception of expert testimony in =
cases=20
where unauthorized practice is alleged. See <U>Regina</U><U> ex rel. =
Doughty v.=20
Manuel</U> <A class=3Dreflex-caselaw =
name=3Dreflex-caselaw-57065795></A>(1982) 38=20
O.R. (2d) 321 at page 5.</P></DIV>
<DIV id=3Dftn11>
<P class=3DMsoFootnoteText><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref11"=20
name=3D_ftn11><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[11]</SPAN></SPAN></A>=20
The prosecution had closed its case in February 2009 at which time the =
trial was=20
adjourned to October 1, 2009 for the hearing of the defence=E2=80=99s =
case.</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn12>
<P class=3DMsoFootnoteText><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref12"=20
name=3D_ftn12><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[12]</SPAN></SPAN></A>=20
Section 44 of the <U>Veterinarians Act</U> is reproduced in Appendix =
=E2=80=9CA=E2=80=9D of=20
these reasons for judgment.</P></DIV>
<DIV id=3Dftn13>
<P class=3DMsoFootnoteText><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref13"=20
name=3D_ftn13><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[13]</SPAN></SPAN></A>=20
See <U>R. v. Linan</U> <A class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065796></A>[1998] O. J. No.1267 =
(C.A.).</P></DIV>
<DIV id=3Dftn14>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref14"=20
name=3D_ftn14><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[14]</SPAN></SPAN></A>=20
See the comments of Justice Casey Hill in <U>Re <A =
class=3Dreflex-statute=20
href=3D"http://www.canlii.org/en/ca/laws/stat/rsc-1985-c-c-46/latest/rsc-=
1985-c-c-46.html"=20
name=3Dreflex-statute-24686580>Criminal Code</A></U> <A =
class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065798></A>[1997] O.J. 4393 (Ont. Sup. Court) at =
paragraph=20
9 where he states that: =E2=80=9CThe Application affidavit/information =
must be=20
reasonably comprehensible=E2=80=A6.The court should not find itself in =
the position of=20
endlessly re-reading the application document in order to discover =
whether the=20
statutory conditions are satisfied.=E2=80=9D</P></DIV>
<DIV id=3Dftn15>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref15"=20
name=3D_ftn15><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[15]</SPAN></SPAN></A>=20
See the comments of Justice Casey Hill in Re: <A class=3Dreflex-statute=20
href=3D"http://www.canlii.org/en/ca/laws/stat/rsc-1985-c-c-46/latest/rsc-=
1985-c-c-46.html"=20
name=3Dreflex-statute-24686581>Criminal Code</A> [1997[ O.J. No.4393 =
(Ont.=20
S.C.):</P>
<P class=3DMsoFootnoteText>&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">=E2=80=9CAny =
factual assertion by=20
the applicant within the four corners of the affidavit must be sourced =
to some=20
investigative resource. Otherwise, the applicant breaches=E2=80=A6.the =
rule against=20
narrative. It is insufficient for an applicant to simply state =
conclusions,=20
opinions or facts. The credibility and reliability of the assertions are =

inextricably linked to the investigative resources =
themselves.=E2=80=9D</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">Please also =
consult <U>R.=20
v. </U><U>Church</U><U> of Scientology (No. 6)</U> <A =
class=3Dreflex-caselaw=20
href=3D"http://www.canlii.org/en/on/onca/doc/1987/1987canlii122/1987canli=
i122.html"=20
name=3Dreflex-caselaw-57065799>1987 CanLII 122 (ON C.A.)</A>, (1987) 31 =
C.C.C.=20
(3d) 449 (Ont. C.A.) and <U>R. v. Hosie</U> <A class=3Dreflex-caselaw=20
href=3D"http://www.canlii.org/en/on/onca/doc/1996/1996canlii450/1996canli=
i450.html"=20
name=3Dreflex-caselaw-57065821>1996 CanLII 450 (ON C.A.)</A>, (1996) 107 =

C.C.C.(3d) 385 (Ont. C.A.).</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn16>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref16"=20
name=3D_ftn16><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[16]</SPAN></SPAN></A>=20
For an authoritative pronouncement of the <I>four corners rule</I>, =
please=20
consult <U>R. v. Gordon</U> <A class=3Dreflex-caselaw=20
href=3D"http://www.canlii.org/en/mb/mbca/doc/1999/1999canlii18640/1999can=
lii18640.html"=20
name=3Dreflex-caselaw-57065822>1999 CanLII 18640 (MB C.A.)</A>, (1999) =
139 C.C.C.=20
(3d) 239 (Man. C.A.) where the court made the following comments:</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">=E2=80=9C=E2=80=A6When making an=20
application for a search warrant, police officers should present to the=20
authorizing justice a completed package, with the affidavit executed. =
The=20
package should be left with the justice to review and to render a =
decision. The=20
contents of the package should not be discussed, no further information =
should=20
be given to the justice, and there should be no interaction between the =
affiant=20
and the authorizing justice. If the affidavit is properly drawn and all =
the=20
information is placed before the authorizing justice, there is no need =
for any=20
conversation or discussion between the police and the judicial =
officer.=E2=80=9D</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">See also&nbsp; =
<U>R. v.=20
James</U> <A class=3Dreflex-caselaw =
name=3Dreflex-caselaw-57065865></A>[2001] O.J.=20
No.6055 (Ontario Court of Justice).</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn17>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref17"=20
name=3D_ftn17><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[17]</SPAN></SPAN></A>=20
In <U>CHUM Ltd. v. Wicks</U> <A class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065866></A>(1987) 64 Nfld &amp; P.E.I.R. 26 =
(Nfld. S.C.),=20
Justice Adams commented that oral submissions may sometimes supplement =
the=20
written search warrant application but that such comments should be made =
on the=20
record and under oath.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">In this case, =
the=20
additional verbal interaction between the search warrant applicant and =
the=20
authorizing judicial officer was on the record but the =
applicant=E2=80=99s additional=20
oral comments were not under oath.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">&nbsp;</P></DIV>
<DIV id=3Dftn18>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref18"=20
name=3D_ftn18><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[18]</SPAN></SPAN></A>=20
The following caselaw is authority for the proposition that a justice of =
the=20
peace does not have the authority to quash a search warrant but does =
have the=20
authority to fashion remedies under section 24 of the Charter:</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><U>R. v. Fritz =
Marketing=20
Inc</U>. <A class=3Dreflex-caselaw =
name=3Dreflex-caselaw-57065867></A>[2006] O.J.=20
No. 3486 (Ont. C. J.); <U>R. v. Boissonneault</U> <A =
class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065868></A>[1993] O.J. No. 285 (Ont. Gen. Div.); =
<U>Long=20
Lake Forest Products Inc. v. W.S.I.B</U>. <A class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065869></A>[2006] O.J. No. 4132 (S.C.J.); and R. =
v. Nguyen=20
<A class=3Dreflex-caselaw name=3Dreflex-caselaw-57065870></A>[2004] O.J. =
No. 3370=20
(S.C.J.)</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">See also =
section 95(3)=20
&amp; 109 of Ontario=E2=80=99s <U>Courts of Justice Act</U>.</P></DIV>
<DIV id=3Dftn19>
<P class=3DMsoFootnoteText><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref19"=20
name=3D_ftn19><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[19]</SPAN></SPAN></A>=20
See <U>Browne v. Dunn</U> <A class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065871></A>(1893) 6 R. 67 (H.L.).</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn20>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref20"=20
name=3D_ftn20><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[20]</SPAN></SPAN></A>Courts=20
have held that business records are <I>non-conscriptive</I> because: =
they do not=20
emanate directly from the defendant; they do not derive from the =
compelled=20
co-operation of the defendant; and because the original documents exist=20
independent of any <U>Charter</U> violation.</P>
<P class=3DMsoFootnoteText>&nbsp;</P>
<P class=3DMsoFootnoteText>See <U>R. v. Zuk</U> <A =
class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065872></A>[2004] O.J. No. 4379 (Ont. C.J.) at =
paras=20
24-25.</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn21>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref21"=20
name=3D_ftn21><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[21]</SPAN></SPAN></A>=20
In <U>B.C. Securities Commission v. Branch</U> <A class=3Dreflex-caselaw =

name=3Dreflex-caselaw-57065873></A>[1995] S.C.J. No. 32 (S.C.C.), the =
Supreme=20
Court of Canada addressed the distinction between commercial and =
personal=20
documentation and records:</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">=E2=80=9CDocuments provided in the=20
course of a business which is regulated have a lesser privacy right =
attaching to=20
them than do documents that are, strictly speaking, =
personal=E2=80=9D</P>
<P class=3DMsoFootnoteText>&nbsp;</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify">These comments =
tend to=20
suggest that, given that the target of Investigator Fischer=E2=80=99s =
search was=20
business documentation respecting activity which is regulated, the =
Blechmans may=20
have had a diminished =E2=80=9Cexpectation of privacy=E2=80=9D, even =
though the Blechman=20
residence was searched.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">&nbsp;</P></DIV>
<DIV id=3Dftn22>
<P class=3DMsoFootnoteText><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref22"=20
name=3D_ftn22><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[22]</SPAN></SPAN></A>=20
See <U>R. v. DiGiuseppe</U> <A class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065874></A>[2008] O.J. No. 1106 (Ont.C.J.) at =
paras=20
58-59.</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn23>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref23"=20
name=3D_ftn23><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[23]</SPAN></SPAN></A>=20
Recently, the Supreme Court of Canada revisited the test for the =
exclusion of=20
evidence in <U>R. v. Harrison</U> <A class=3Dreflex-caselaw=20
name=3Dreflex-caselaw-57065875></A>[2009] S.C.J. No 34 (S.C.C.) at page =
7.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">&nbsp;</P></DIV>
<DIV id=3Dftn24>
<P class=3DMsoFootnoteText><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref24"=20
name=3D_ftn24><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[24]</SPAN></SPAN></A>=20
See the previous citation in footnote 21.</P></DIV>
<DIV id=3Dftn25>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref25"=20
name=3D_ftn25><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[25]</SPAN></SPAN></A>=20
In response to the e-mail complaint of Ginny Smith regarding substandard =
animal=20
euthanasia, it was Shelley Greenberg-Blechman who responded by e-mail =
and who=20
discounted the price for the services rendered.</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn26>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref26"=20
name=3D_ftn26><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[26]</SPAN></SPAN></A>=20
Mararet Routh had used Pet Heaven twice before to euthanize animals. =
However,=20
she could not even recall the name or description of the veterinarians =
who had=20
previously performed euthanasia on her animals. Although Routh had used =
Pet=20
Heaven before, neither she nor her animal had any pre-existing =
relationship with=20
the attending vet [Dr. Grigory Brodetsky].</P></DIV>
<DIV id=3Dftn27>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref27"=20
name=3D_ftn27><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[27]</SPAN></SPAN></A>=20
The VCPR is an acronym for the veterinarian-client-patient relationship. =
This=20
three way relationship is the ideal relationship for frank discussion of =
the=20
animal=E2=80=99s medical needs and the treatment options available. =
Absence of a VCPR=20
can result in poor-quality decision-making respecting the healthcare of =
the=20
animal, as actually occurred in this case.</P></DIV>
<DIV id=3Dftn28>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref28"=20
name=3D_ftn28><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[28]</SPAN></SPAN></A>=20
Despite the credibility findings, I have considered the evidence =
according to=20
the protocol established by the Supreme Court of Canada in <U>R. v. =
W.D.</U> <A=20
class=3Dreflex-caselaw=20
href=3D"http://www.canlii.org/en/ca/scc/doc/1991/1991canlii93/1991canlii9=
3.html"=20
name=3Dreflex-caselaw-57065876>1991 CanLII 93 (S.C.C.)</A>, [1991] 1 =
S.C.R. 742 (=20
Supreme Court of Canada). In other words, I have not determined that the =

defendants must be <I>guilty</I> simply because the key defence =
witnesses were=20
not credible. Although the defence evidence was not credible, I have =
proceeded=20
to weigh the prosecution evidence to determine whether that evidence =
proves the=20
prosecution case <I>beyond a reasonable doubt</I>.</P></DIV>
<DIV id=3Dftn29>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref29"=20
name=3D_ftn29><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[29]</SPAN></SPAN></A>An=20
=E2=80=9Cappropriate penalty=E2=80=9D is one which takes into =
consideration the circumstances of=20
the defendant and the circumstances of the offence. See <U>R. v. =
Sears</U>=20
(1978)39 C.C.C.(2d) 199 (Ontario Court of Appeal) and <U>R. v.=20
M.(</U><U>C.A.</U><U>)</U> <A class=3Dreflex-caselaw=20
href=3D"http://www.canlii.org/en/ca/scc/doc/1996/1996canlii230/1996canlii=
230.html"=20
name=3Dreflex-caselaw-57065877>1996 CanLII 230 (S.C.C.)</A>, (1996) 105 =
C.C.C.=20
(3d) 327 (Supreme Court of Canada).</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn30>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref30"=20
name=3D_ftn30><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[30]</SPAN></SPAN></A>=20
Counsel for the prosecution, Mr. Leblanc, conceded that the Blechmans =
had the=20
best of intentions in establishing and operating the Pet Heaven =
business.=20
However, he indicated that, at best, this was a case of mixed =
motivation, since=20
the business did seek to earn a profit.</P>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: =
justify">&nbsp;</P></DIV>
<DIV id=3Dftn31>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref31"=20
name=3D_ftn31><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[31]</SPAN></SPAN></A>=20
The Pet Heaven clients, called by the prosecution, attested that their =
suffering=20
or dying pets had been exposed to greater suffering due to the =
substandard and=20
unprofessional performance of the euthanasia procedure by the attending=20
veterinarian, Dr. Brodetsky.</P>
<P class=3DMsoFootnoteText>&nbsp;</P></DIV>
<DIV id=3Dftn32>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref32"=20
name=3D_ftn32><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[32]</SPAN></SPAN></A>=20
This letter had been drafted by Investigator Fischer and signed by the =
then head=20
of the College, Dr. Martin. This letter was dated January 13, 2005 and =
had been=20
forwarded to the Blechmans long before charges were laid.</P></DIV>
<DIV id=3Dftn33>
<P class=3DMsoFootnoteText style=3D"TEXT-ALIGN: justify"><A title=3D""=20
href=3D"http://www.canlii.org/en/on/oncj/doc/2010/2010oncj358/2010oncj358=
.html#_ftnref33"=20
name=3D_ftn33><SPAN class=3DMsoFootnoteReference><SPAN=20
style=3D"FONT-SIZE: 10pt; FONT-FAMILY: 'Times New =
Roman'">[33]</SPAN></SPAN></A>=20
<I>Ignorance of the law</I> is not a defence to a charge. This is the =
position=20
of both the common law and section 81 of Ontario=E2=80=99s <U>Provincial =
Offences=20
Act</U>. </P></DIV></DIV></DIV></DIV><!-- /originalDocument --><!-- =
/content --><!-- closed by footer -->
<DIV class=3Dbody>
<DIV class=3DmainContent_noMenu></DIV><!-- /mainContent -->
<DIV id=3Dfooter>
<UL>
  <LI class=3Dfirst><A class=3Dcanlii=20
  href=3D"http://www.canlii.org/en/databases.html">Scope of =
Databases</A>=20
  <LI><A class=3Dcanlii href=3D"http://www.canlii.org/en/rss.html">RSS =
Feeds</A>=20
  <LI><A class=3Dcanlii =
href=3D"http://www.canlii.org/en/info/terms.html">Terms of=20
  Use</A>=20
  <LI><A class=3Dcanlii=20
  href=3D"http://www.canlii.org/en/info/privacy.html">Privacy</A>=20
  <LI><A class=3Dcanlii =
href=3D"http://www.canlii.org/en/info/help.html">Help</A>=20
  <LI><A class=3Dcanlii =
href=3D"http://www.canlii.org/en/info/contact.html">Contact=20
  Us</A>=20
  <LI><A class=3Dcanlii =
href=3D"http://www.canlii.org/en/info/about.html">About</A>=20
  </LI></UL>
<DIV id=3Dby>
<DIV><SPAN>by</SPAN></DIV>
<DIV class=3Dlexum><SPAN><A class=3Dcanlii title=3DLexUM=20
href=3D"http://www.lexum.com/"><IMG alt=3DLexum=20
src=3D"http://www.canlii.org/images/lexum.gif"></A></SPAN></DIV>
<DIV><SPAN>for the</SPAN></DIV>
<DIV class=3Dflsc><SPAN><A class=3Dcanlii =
href=3D"http://www.flsc.ca/"><IMG class=3Dflsc=20
alt=3D"" src=3D"http://www.canlii.org/images/flsc.gif"></A></SPAN></DIV>
<DIV><SPAN><A class=3Dcanlii href=3D"http://www.flsc.ca/">Federation of =
Law=20
Societies of Canada</A></SPAN></DIV></DIV></DIV><!-- /footer =
--></DIV><!-- /body --></BODY></HTML>

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: image/x-citrix-gif
Content-Transfer-Encoding: base64
Content-Location: http://www.canlii.org/images/canliiLogo.gif

R0lGODlhtAA3APcAAK3U6c3l8rDV6jaUyZnJ5BWDwPL4/OmrqjCTyIW/3hGAvvr9/vTW1WKt1YjA
385EQu72+2Wt1e27usMZF8De7g1+vZ7M5d7u9iCKwz6Yy//+/tx7eur0+R+Jwvnl5eWbmiiNxSWM
xdXp9Ha32ozD4NZjYrwBADmWyrja7KXQ55jJ4/zz86PP5ny73IrB3+OVlC+Rx/X6/NBLSajR6ABo
sv319djr9YC53Mni8V6q1MXh8PDFxeHw97bZ7LoAAFqo0/bc25bI43O12crj8fH4+3m4274KCEyh
z+by+Mw7OgF6u9rs9VWl0ZDE4Wmx1wV7vFKk0Lrb7d6BgeGNjMgtLEGbzNt0c/D3+xOCv70GBNPo
87XY6xiFwdNVU/j8/YC42+z1+pLG4svk8cPg7wh8vNlubC+NxVmn0tRaWQN5ulCi0MARDqrS6Q2A
vv/6+gV5u3m520Odzb0EAuXx+G+y2Nvs9mGr1PPR0Qp7vABstKfQ6L4IBkaezY/E4SWKxMcrKhiG
weCIhwButWiv1wp+vQh+vUCZyxqEwcUkIgp9vb8ODAJ6uwBzuABxt5TH4oG93QBytwF5uwB4ur8N
CwB0uNDm8gB2uW2y2ABztwB1uAB3uQB1uQB3ugB5uwB5uoC83bzc7QJ7u93t9vf7/b8MCgBxtvb6
/YC93f78/L3c7ajS5wF4upzL5AB0ub7d7S+LxAF5utLn84O+3gBwt2yy2Ad9vH+83fT5/L/e7m+0
2JXH4tHn8+32+vvv74K93bTX65HF4RuGweXy+JXH4wByuCuQxgBvtoK+3Xy620mfzgh7vPj7/QB4
u7YAAL3d7iOKwyOMxNfq9OKQjwBrs4G83anS6AN7u/3+///+/O/Av/rs6zKVzhyIwqXP5sYoJgp+
vuekpOinpqzT6XGz2W6z2ESbzL3d7ckwL+Dv99Dm8/zx8fLOzQB2uPnp6TOTyE6i0Pn8/ePw+BiD
wJnM5/fh4QF3udNYV/b7/Z/N5aHO5u+5t8k0Mujz+b8MCzqXyv///yH5BAAAAAAALAAAAAC0ADcA
AAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWKNcKhusixo8ePICkykPCP3oMJ6kKqXMmyJcON
BD9kKUPFxxogLnPq3Nkxm5V/DAL9k+LDxJ5Jcg7808CzqdOnB8P5KJFkTa8SJiZpJTWBilKoYMPm
DGTCRBYTH2TI0TpJkY9z2sTKnduRwUkjWvf8QYRXqxFS6+gKXggGlAM7cRAoRlAlh6xfSKD2SuJD
EVsjfSeRkiNNnZQdg0MLXPDrDBdLkDBR2sR6EyVMkDZhUTPjllMgE7Kw3T1J7wZEPkB3dPAKgRlV
E1WZQfBKxUHlzJ27BDBgEyROShYpkaTJkndJnbRL/2JECcQweE3BmSDFm+0aOXuM2CszBWbFQXk2
CQI2EZigTXm0cJB/AArIkihqUEJJdp1kAoklbWAQQgjQFOAJI4xIoh1qA+jQVAk+tNeeCT58ZdEl
kCzCiCMTOcLIIo08cpCLMMq40haHQBLJIp5gEok/p4ByARGjmBKDMGIQwEQBmFiyyCKUKBMGTyvs
o5uIbJkgRUcoqsiiRDTGOOOLYqrEyhtOQvnGDx4uhEQTz0DiSSicMFLETnf8cSWWpPhgBVMXdbli
i2TaWFCYhn5kgSWcLNIJJBm06RAvI6RhSSieQAJHTh48YMRZ7LFFylk+yDHBA+1wJOiXESE6Zo0h
of/whiaLSJLJCAtM1MMhmfAICX8tobICEBJIk5sJf63hTReBSODBUqqmOCiYhb5apkcXyLNJrfUE
YZEIHWxiySay8MSAEQ9s0I8P9qyg0qqEwmqQqx+9k2IklPTBkRYKKCBAU134IM0/OyTxwErwUivv
odV6JAAlO0LSgEc6aCGRKAKQ8MknvrCigwEM7RDfHQK5oQ82CNmgRwIbA0MByA0l3GrDDC980QLu
ULKIJc9cARYRKmRQgYONFE2JJB0MEgtBKhQHwxL/oNHMOW4INM82CMAwxEBe4JMBGZRAUjQmmjxD
DQQMyQwRvTVfexEKliihBCUpgJWPH5Ac3Ykk3jH/6glqZNBBhEAt5NEKIwEAtcELAxXeCiRRCITD
AHlLwol3mnQSiSWNgDDGQmo/xDZBo1tkR4rsFIOeUzHYwci2kmCySRvQTIgFapxIUoo7NvxzSiOR
SFLJQY8Ar4kr/+CDx9FNFjAhN5FgoiElFUSeUOgOlS6Q9hPdggGtmLjw1BV8lCI3I23kAAA6MRQ5
RxS0cIFJJ4x0wAMJwAtPvPFDpMAoJWTIQQ+EYYpR8AIHQqjAJkIhmzpcT1qsWhvNSDfBioghEp3o
xBMs1hRTlK9Wm/hB7xDCj3Fook7+oAXE9GeQ4kXiCeQgRJ1OsLWDVAIEmQgFJKDwQC/Fy20D4Z5E
/yygM0uozilOKEWt3uAthlSjApqQRC0WEbzhtbARi7CGJGLHhBgoRAQKkAQs0iAGhGCvIdwTYkRa
IC0eNuUXm4jE5vLxkB4oAzxUZGFBivckJTCiCstgyCdSpCkzQvCHiQpiBSkyCEIKoSmjQIDOIPFI
iACDEdmp4v6exAksXKAhoiCEJCiRAUP6UGFA3N4iJ/IDMh2jKQBYkCVAYJuIVEFnmrzikyDxiYec
YBOc6IDPDHJGhqRxlRI5A5l80RQoYGIRmGDFROCmhFzuEYuSaAM6HtKADBHCgcQ8JCoTqUqbVaQB
z2xEL3cCAUBwghNcAMNE4AECTViTIHykRBUggv8M4HGihgUp5kKOaU6KjICQl+DJEFYRPSbcR0d6
xCcWIZELiDhAR5pIxUEEqhCCpnIiYXgRJZLBkxlkQgmQSEBFhsGIvVnxmosgBgkgogtGbO5f4Tzl
zAr6DzVChJqcwIAXdRIETFKCBRURRyZcuklK4EOCkciEHjYqzp1+1KcPiUcbwLMKSbkkpFFlQ0W2
YAlPRHQgxVNCJmYA1bVSVacS5ClWH5KBSVYyJ6xYECUIUBGTMvWKSrBED9rK1pxOy6rk7CkyJUKC
FHECEPLMCVlRelfGEuOeaDWeOQj71sPG9aqLjcgFRLkISNhCJzaoBTM24Y+K/MBHZxWICzUBCs7/
GjaColvlXLmZolVUgIMtgUcxNgGLJyxNIlcIBicwK1vj1Ta3US1sQKv62cTu1iE2SMT0BlDLiyBD
XwfJRYowMbEhYpK5/5jtc7NnU7feFpHWSmxFWoDF0kJhdRVxASYwEYHIEqQSb1gFLJRRRogYIARO
Qq96bTtduOZWrqGVyD0G8EyUdrEiCciEJ5SQhxwc5AeQCAUl3AEzh0QgRXl8qUQjQVsGE4SjCfGo
fCsSDXn0Cpr+EIFEIOA6TywiEwVInEGWoABO6BAKo3CILCAWHgU718UDgTFCZKwSXCjwSYxQgAtK
zBAAgAAS2dlEBXCREBYcrbRVgJpCIBABSnSC/xNTdDKL14vG9kr3xdLi6zjjuxJnyOOZi+AEJkLg
ADUjhAPdMARrnoSJYHxOIWz0MSMK4AAOHOQKrPADJlB6BCGsUMWZnTOUBdKlVsChEqhOtapTHQv8
KhbCPO2ICAbQCA3tDBKEOAE5dPELV6QiFSmQxTu4oKDscAIShgDnQmwhLjoxAhA5CEIUXBEFAjSg
A4ywRCdKUQ4DuCB/oG6uqKHr3gY7aovoTje6LVEIUVAQ1h/1yD2QUYFaP8lWkMi2JvbtIEpgJ9CQ
wIILcuUQFhTA3oJmxL418ZrMUcIStEjy7+TcYnLfOcoorqYcN85xOXLiG+5WJLxn7BERRAAL+d7O
nNw0Hgm5dUITmGAEF0bAg4tFIBF544Qndm5W61giAygYCBxoMAtjCLkgQ5+FIIL+EBJMYxZ5oKNB
GkCDoln96lhvhDE4oex/OL0RNNiUQb4e9p3MgQBq6MAiNoGJq2OiVx1gAj4sTeMEGCIYT9hiJ7AA
AydolCAU+MLG+HGQwG/skw8Zwg0+cQPgEqQHN3iE5CdP+cp/IgFoG4jiH/EFChxk8513yhV2AYAw
POIUj/hEH8SRjsF9BAwiQPUu4nEN0dj+9rjPve53z/ve+/73wA++8IdP/OIb//gfCQgAOw==

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: image/x-citrix-gif
Content-Transfer-Encoding: base64
Content-Location: http://www.canlii.org/images/canliiText_en.gif

R0lGODlhIgEUAMQAAMjJyZmam+fo6GxsbQ8PEB8fH9fY2S4uL01NTl1dXamqqoqLi3t8fLi5uj4+
PgAAAPb3+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAA
AAAALAAAAAAiARQAAAX/ICSOZGmeaKqubOu+cCzPdG3feK7vfO//wKBwSCwaj8ikcgRYMBaAoiEA
USBwjWDAUAIIVAEHQ0qFMMY2A/eFtoqmLPRSJXAUEoxBwfEVNhxVVzcPQQ5ZJIYqDwqHQ38iZzeR
L4SBIo8rlXMoAgcJJQOAfqI5mj6JiI0npo6kOJMurBCYipspDIIlfWYEDwcAA1HBAwQEAyQMvb/B
IgAOD8YKgMAjyb7AwsDFxyayDQfQ3M3PBAzUkMrYEKgjiXwIDwVlzw7cCgXQcg4KxgEByeV4EVgw
QkCCBw8Q1IEQ4AABQP6q9SqgoFkwcL9MRPIXAJ9CCHUeOADgTCTJYw0f/0I4JyJYyZEiFuCTt6lA
lBQJEHD5UyCLgwME65TJudNOFgA0BTDYM0sU0aY91wEF6aAMCVYACFAxkODTyqQMDjjVCdWnqnVZ
RGYxQGDngwZRGq514DXhl2RjsiIYY8AmyAMMvoQhZGDBgSyTnjagudgBl3sax4RN8GXApwVXGgQQ
0OAtZ0CFDzdNxdkzBMNHD1hNIosEUhIG3q7zaun1iNhZEKxOAOiR7Tey6Y5wU4KVbkRRjo/g/RV2
8LOJHlgdQBCCJgI3Qfp9cDPsiAEHvo9ZQJthJUyRkO7KOuvBGggZkUkuUJDA6VwizovCRAtt/hFt
FUTfEg/sElkJ7jTyCP8sIkRXwiMLytGgWSP0999VYjmgYQFjsBIhghSmYp18F1oYiSawpDgGOyWK
EgmDaPXHohmSSUhIJzC1eMl+rqBynkgaakjAWUYod0IeIPq3oxniTGidgRACgqSI7Fg44lUNZKkl
FwWSIA2TSc7oYDVo6FfCiWSmCcmKFV21JI1wpiLjWS/aOEIABLRp5mh8OnnlN1pqaeARDWDXRV4F
7IKbkqOpd5tsCFQnAnO+JfpoiH2OYFybIijwRQKSQoDANJYCh6mTpkxy3XsQbKdmnHBiRkIAe6Y3
4Bv2zXlmjW4OJ8qemPRFQgFrXGfgaknguRlIyk5K1jdRVTnWTgdEhRTmFUoxhYli1WJq5VtarjQk
SGF9wdYADVghlrPURgtdWiReyZBoBiBQ16sq/hXYvLWiwS0VupLIICEBZNGVjn3SJYAAoWg6gmFc
1FueEg0g0AsBCKhizUjMMGORRCZ5XFI51LC0sToer9Rkg0HuBw4BlBXEgAO60XJyx9m1FIUrEa3j
JT4BNXinVT0zVIZBCFEmyjlFW0PRx9/lbPTU7awEDh9Cqww1SPDYVfXDM0loy9hFJJAzdWSnrfba
bANR6ALpJnDAoG3XbffdeN8WigML0J3334AHLvjghBdu+OGIJ6744oyrHQIAOw==

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: image/x-citrix-gif
Content-Transfer-Encoding: base64
Content-Location: http://www.canlii.org/images/pdficon_small.gif

R0lGODlhEQARANUjAOR8gd3Q0uCsr+lARuKUmN+4u/JVW3t8fJ2DhPDw8N7ExuVwdbEVG+FES9s+
RDc3N1NGR4UPFOsoLzsHCc8YH+dYXqeNj3YOElgKDXI+QG9iY+OIjOZkaehMUqWlpm5ub+0cJMDA
wNzd3v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAARABEAAAaGwNEo
ESoajyGhMnTwOJ/OQwQhBFmvWFDHw6AgEtnwFnOZhMLZjmj9CRkMDUdn3pEMOou1qC0MefQiAAKA
e0kjfoAcg4B8h396ioSNiJAEkoaUIgFzAYyYj4EEBR0KepOPARUFABwDIAMcp5ocgnoKGx0anwR4
hKaYFne+v30QGR/IycoPIUEAOw==

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: image/x-citrix-gif
Content-Transfer-Encoding: base64
Content-Location: http://www.canlii.org/images/lexum.gif

R0lGODlhPAAYAMQAAHBwcHl5eYKCgouLi5SUlJycnKCgoKampqysrK+vr7Kysri4uL6+vsHBwcTE
xMrKytDQ0NLS0tbW1tzc3OLi4uXl5ejo6O7u7vPz8/f39/n5+f///wAAAAAAAAAAAAAAACH5BAAA
AAAALAAAAAA8ABgAAAX/4CaOZGme6ISurJlNcNauUQWr2xuLN77dFBYEQPTNSJmFgggQSZgqC7O5
eRIFrCURczQpLIarjMHkkqEbwhT1sKiJ3RJEkREQCRtNgRjIDaYQFVNUJQ4SG38AAzIjD3YABhgV
CpRcGxQGFxtMCDKPBBkZgwhhayUTCxsYnCMapUwBGA4FBQkaFwYTGkNFGqtEChpnTI+mIxUHMr8A
nSIPRAUUC8AYCbQLBg4aGw5QGoJE2q+DxnkGFnm8AId5jwgKCEQDtwa0yXkHTBrCTBeiV4MSEdqg
4MG2Dc96iSAnT8YEWgUqiEg0gMurC+qGEWnAZISEAwc1xJNHYABHIhAg/zSYgGEbGIiRMgiEMO1O
hnxELhQ7kJAKBgNBRghkoqAUAQUBAFCgd64BrQQZxk1pkCGpIgxaAEyg0HFDAwVIijGRYMEqp4eZ
fCG4ZmWQgRdMGGToBinDhY4VIpZQkACBX78VQjU4MAABhFnnDmKA8ADChQoGrApY0JICPARLL8Cj
kEGDhJQbGIAlsS+U6X15TGMtkKnEttIYYmPo/DoUag20RaDGUMAI6TwnINdq2WIf6jjOChzsMpcW
VeTQRSQIFofCAVoQlkePU2D0DM1P0W2PzprRCgxOaRkcv905Cg0TFEBUYIl99OsFDkioYIE/TYjd
LWXfeA8BaCAtDEg0oA591h1owAIStKTdgtCFAAA7

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: image/x-citrix-gif
Content-Transfer-Encoding: base64
Content-Location: http://www.canlii.org/images/flsc.gif

R0lGODlhGgAaAOYAANPT1rzd7NPo7/X6+cTExdvs8svLzLu7vSuRygV+wofB36mprPz8+ny63Gmy
2eTx9eDu8r6+wbKytIvB3vr8/HG22s3m7vP49TGVyyOOyMfG0uXl5s3k8Pr8+u319p3N5Pr6+7a2
u/n798bi7pTJ5N7e3jma0FSm0oC+3f37+Q6Cw7Xa66amq12s1d7d48nl7/Hy8jyazvX29vj6+O3t
7Orq6fj6+qXQ5hSGxq7U5qOipIODi9nZ2+n09vr8+Pf8+Ofx9vD4+uz2+ZGRnBuIxXW53ODg49Xq
8fj4+crj6/j8+EKdz8Dd64+OlbTX5pqanPL29/Lz8x6LyM/Q0vn7+fr7++vr7OPk47HX6Pv6+P39
/f39/vz9/fz8/fz9/P39/Pz8/P38/f79/v37/f3+/v3+/Pf8+93d28jIyfP5/OTn6Pf7+/7+/M/P
z/79/Kysr6vU6Lm4uOfm5fTz8Emh0mGu1pDH4srj7uHj356go/v9+tvb3Nzb2v7+/v7+/////yH5
BAAAAAAALAAAAAAaABoAAAf/gGNbf4R+fX1bMAASBAsRAFNRfX6UlX5bfoR9f1oleVMGZzQlJVME
TQdWk4SEYpt/fTASAHJOBQxhDF9VJHNTEWiDrIewNCxXQBUYSxVCHSQtKhVYNGhTWqyZfldDNX9u
JAkJdlxePVIJCBdcYHEhmX+ZSE1nVWUUJxgxJxQMOfoILHzpAkYHH3hdQhjQ42XEgx8P1pgZgGVN
hwcdZrzwwgDGAm9/9kjQMgDFEjoNoFCY0IJIESZZAjRwmYMLDQKZwsCoUiWJuA8pKEBQkcBEFTY+
TiTIEISLmC5b+miAWqUBAgwtfKT4gAEDAgheHujLcMdLGCsukIShxGEABBEz/xjcGSDUxgALA6iY
YQDhwZcwXQ6g4RAgQw4LVQLcQMDEApIVXJkI6LHCgYMAQFjEmSJW3AoRAYhmeBt6KQQqRcSd+LHg
DRoPCMQxoXCHqBQPVUaIDlJFgbg6InYcIADBwogCAmZYOHInCQQZLwpYSPLABpMCL5jMaIImQgou
en7cuEFFTxUlPVrY0MNAiY8JHZR84RJlAYwdWvxQqYADR4wHWTSADgJONIRBOjfMJwcafzyxwRYM
PCCOAuUFgUNRHeiRQgtLUaCFFhKU8IcRBlRBxQcoFFHBD1Xk0EAFDgjAVwUoVDACGVbEwcAfILwB
ABhgrAHFDCQcQQUDzniAgo0PZvzARRkyvHEFKzO88aAWR8SgghQnBEHFBBkkgAEcY3CiQxuvwMLN
HuVMIE4OXlBwwYAdUIAECwekqUkNTxCQhmUoKNAFA1hUACMHagBwwBesNNoHCO7IwRsZXYjBgBce
MICHDlM26iknG0jwhARtlMADDxE0gacMn3KyiiZajGJACBJEEMEZWbT6RyAAOw==

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.canlii.org/css/canlii.css

BODY {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: =
0px; PADDING-TOP: 5px
}
DIV#body {
	FONT-SIZE: 12px; COLOR: #000; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif
}
DIV.body {
	FONT-SIZE: 12px; COLOR: #000; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif
}
DIV#splashBody {
	FONT-SIZE: 12px; COLOR: #000; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif
}
DIV#body_noNothing {
	FONT-SIZE: 12px; COLOR: #000; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif
}
DIV#body {
	MIN-WIDTH: 770px; MAX-WIDTH: 1000px
}
DIV.body {
	MIN-WIDTH: 770px; MAX-WIDTH: 1000px
}
DIV#originalDocument {
	PADDING-RIGHT: 8px; MIN-WIDTH: 745px; PADDING-LEFT: 17px; MAX-WIDTH: =
975px; PADDING-BOTTOM: 0pt; PADDING-TOP: 0pt
}
DIV.originalDocument {
	PADDING-RIGHT: 8px; MIN-WIDTH: 745px; PADDING-LEFT: 17px; MAX-WIDTH: =
975px; PADDING-BOTTOM: 0pt; PADDING-TOP: 0pt
}
H1.canlii {
	COLOR: #000; TEXT-INDENT: 0px; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif! important; LETTER-SPACING: 0px; TEXT-ALIGN: =
left; TEXT-DECORATION: none
}
H2.canlii {
	COLOR: #000; TEXT-INDENT: 0px; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif! important; LETTER-SPACING: 0px; TEXT-ALIGN: =
left; TEXT-DECORATION: none
}
H2.number {
	COLOR: #000; TEXT-INDENT: 0px; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif! important; LETTER-SPACING: 0px; TEXT-ALIGN: =
left; TEXT-DECORATION: none
}
H3.canlii {
	COLOR: #000; TEXT-INDENT: 0px; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif! important; LETTER-SPACING: 0px; TEXT-ALIGN: =
left; TEXT-DECORATION: none
}
H4.canlii {
	COLOR: #000; TEXT-INDENT: 0px; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif! important; LETTER-SPACING: 0px; TEXT-ALIGN: =
left; TEXT-DECORATION: none
}
H5.canlii {
	COLOR: #000; TEXT-INDENT: 0px; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif! important; LETTER-SPACING: 0px; TEXT-ALIGN: =
left; TEXT-DECORATION: none
}
H6.canlii {
	COLOR: #000; TEXT-INDENT: 0px; FONT-STYLE: normal; FONT-FAMILY: "Myriad =
Web", Verdana, sans-serif! important; LETTER-SPACING: 0px; TEXT-ALIGN: =
left; TEXT-DECORATION: none
}
H1.canlii {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: =
24px! important; PADDING-BOTTOM: 0px; MARGIN: 0.5em 0px; PADDING-TOP: =
0px
}
H2.canlii {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: =
24px! important; PADDING-BOTTOM: 0px; MARGIN: 0.5em 0px; PADDING-TOP: =
0px
}
H1.decision {
	MARGIN-TOP: 1em
}
H2.canlii {
=09
}
H2.number {
	PADDING-RIGHT: 0px; BACKGROUND-POSITION: left top; PADDING-LEFT: 0px; =
FONT-WEIGHT: normal; FONT-SIZE: 24px; LEFT: 0px; BACKGROUND-IMAGE: =
url(../images/searchStepDot.gif); PADDING-BOTTOM: 3px; MARGIN: 0px; =
WIDTH: 40px; PADDING-TOP: 5px; BACKGROUND-REPEAT: no-repeat; POSITION: =
absolute; TOP: 0px; HEIGHT: 40px; TEXT-ALIGN: center
}
H2.databasesScope {
	FONT-WEIGHT: normal; FONT-SIZE: 16px
}
H3.canlii {
	MARGIN-TOP: 1.5em; FONT-WEIGHT: bold; FONT-SIZE: 1em; MARGIN-BOTTOM: =
0px
}
H4.canlii {
	FONT-WEIGHT: bold; FONT-SIZE: 1em; MARGIN: 0px 0px 0.5em
}
H3.searchTermTitle {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: =
1em; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
H3.searchSectionTitle {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: =
15px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #808080; LINE-HEIGHT: =
22px; PADDING-TOP: 0px; BACKGROUND-COLOR: #e0e2e2; TEXT-ALIGN: center
}
H3.advancedSearchDatabasesSelection {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: =
15px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; TEXT-ALIGN: =
center
}
A.reflex-statute {
	WHITE-SPACE: nowrap
}
A.reflex-caselaw {
	WHITE-SPACE: nowrap
}
A:link {
	COLOR: #027abb; TEXT-DECORATION: none
}
A.canlii:link {
	COLOR: #027abb; TEXT-DECORATION: none
}
A.falseLink {
	COLOR: #027abb; TEXT-DECORATION: none
}
A:visited {
	COLOR: #027abb; TEXT-DECORATION: none
}
A.canlii:visited {
	COLOR: #027abb; TEXT-DECORATION: none
}
A:hover:link {
	COLOR: #027abb; TEXT-DECORATION: underline
}
A.canlii:hover:link {
	COLOR: #027abb; TEXT-DECORATION: underline
}
A:hover:visited {
	COLOR: #027abb; TEXT-DECORATION: underline
}
A.canlii:hover:visited {
	COLOR: #027abb; TEXT-DECORATION: underline
}
A.falseLink:hover {
	COLOR: #027abb; TEXT-DECORATION: underline
}
A.reflex-parallel-citations {
	BACKGROUND-POSITION: left center; PADDING-LEFT: 20px; BACKGROUND-IMAGE: =
url(../images/reflex_small.gif); BACKGROUND-REPEAT: no-repeat
}
A.reflex-parallel-citations IMG {
	DISPLAY: none
}
DFN {
	PADDING-RIGHT: 13px; BACKGROUND-POSITION: right top; BACKGROUND-IMAGE: =
url(../images/interrogation_square.gif); CURSOR: help; BORDER-BOTTOM: =
#007bbe 1px dashed; BACKGROUND-REPEAT: no-repeat; FONT-STYLE: normal; =
BACKGROUND-COLOR: #fff
}
DIV.decisionsListing A.canlii:visited {
	COLOR: #a0522d
}
DIV.decisionsListing A:visited {
	COLOR: #a0522d
}
DIV#searchResults A.canlii:visited {
	COLOR: #a0522d
}
DIV#searchResults A:visited {
	COLOR: #a0522d
}
DIV#statutesListing A.canlii:visited {
	COLOR: #a0522d
}
DIV#statutesListing A:visited {
	COLOR: #a0522d
}
A.reflexLink {
	WHITE-SPACE: nowrap
}
A.reflex-parallel-citations:link IMG {
	MARGIN-RIGHT: 5px
}
IMG {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
H1.canlii IMG {
	MARGIN-BOTTOM: -2px
}
H2.canlii IMG {
	MARGIN-BOTTOM: -2px
}
SPAN.canliiCitation {
	WHITE-SPACE: nowrap
}
SPAN.nowrap {
	WHITE-SPACE: nowrap
}
SPAN.italic {
	FONT-STYLE: italic
}
LI .selected {
	FONT-WEIGHT: bold; COLOR: #000
}
TD .selected {
	FONT-WEIGHT: bold; COLOR: #000
}
.formButton {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; =
PADDING-BOTTOM: 0px; CURSOR: pointer; COLOR: #fff; BORDER-TOP-STYLE: =
none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; HEIGHT: 20px; BACKGROUND-COLOR: #027abb; =
BORDER-BOTTOM-STYLE: none
}
DIV#header {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; POSITION: relative; HEIGHT: 55px
}
DIV#canliiLogo {
	PADDING-RIGHT: 20px; BACKGROUND-POSITION: left 50%; PADDING-LEFT: 0px; =
FLOAT: left; BACKGROUND-IMAGE: url(../images/canliiLogo.gif); =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 180px; PADDING-TOP: 0px; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 55px; BACKGROUND-COLOR: #fff
}
DIV#canliiBanner {
	BACKGROUND-POSITION: right 50%; BACKGROUND-REPEAT: no-repeat; HEIGHT: =
20px; BACKGROUND-COLOR: #f6f7f8; TEXT-ALIGN: right
}
DIV#canliiBanner SPAN.betaNotice {
	FONT-WEIGHT: bold; LEFT: 200px; FLOAT: left; COLOR: #bf0d0b; POSITION: =
absolute; TOP: 1px
}
DIV#canliiBanner IMG {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
P#breadcrumbs {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DIV#languageSwitch {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: right; PADDING-BOTTOM: =
0px; MARGIN: 15px 0px 0px; PADDING-TOP: 0px; POSITION: relative
}
DIV#languageSwitch UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV#languageSwitch UL LI {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 5px; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 0px 4px; BORDER-LEFT: #000 1px solid; PADDING-TOP: =
0px
}
DIV#languageSwitch UL LI.first {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
DIV#languageSwitch SPAN.notSupported {
	COLOR: #808080
}
DIV#sidePanel {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
0px; MARGIN: 0px 20px 4em 0px; WIDTH: 180px; PADDING-TOP: 0px
}
DIV#sidePanel DIV {
	BORDER-TOP: #000 2px solid
}
DIV#sidePanel UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV#sidePanel LI {
	MARGIN: 5px 0px
}
DIV#jurisdictionLogo {
	PADDING-RIGHT: 0px; BACKGROUND-POSITION: center 50%; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 180px; PADDING-TOP: 0px; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 55px; BACKGROUND-COLOR: #fff
}
DIV#menu {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 1em; PADDING-TOP: 0px
}
DIV#menu LI.international {
	BORDER-TOP: #c0c2c2 2px solid; MARGIN: 15px 0px 5px; PADDING-TOP: 10px
}
DIV#mainContent {
	PADDING-RIGHT: 0px; BORDER-TOP: #000 2px solid; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 200px; PADDING-TOP: 0px
}
DIV#mainContent_noMenu {
	PADDING-RIGHT: 0px; BORDER-TOP: #000 2px solid; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 200px; PADDING-TOP: 0px
}
DIV#mainContent_noMenu {
	PADDING-RIGHT: 8px; PADDING-LEFT: 17px; PADDING-BOTTOM: 0px; =
MARGIN-LEFT: 0px; PADDING-TOP: 0px
}
DIV.mainContent_noMenu {
	PADDING-RIGHT: 8px; PADDING-LEFT: 17px; PADDING-BOTTOM: 0px; =
MARGIN-LEFT: 0px; PADDING-TOP: 0px
}
DIV#mainContent P {
=09
}
DIV#mainContent_noMenu P {
=09
}
DIV.mainContent_noMenu P {
=09
}
P.legislationInformation {
	MARGIN-TOP: 0px
}
SPAN.yearsExplained {
	FONT-SIZE: 12px; COLOR: #808080
}
DIV.accessBox TABLE {
	COLOR: #808080; BORDER-COLLAPSE: collapse; empty-cells: show
}
DIV.accessBoxTop TABLE {
	COLOR: #808080; BORDER-COLLAPSE: collapse; empty-cells: show
}
DIV.accessBoxBottom TABLE {
	COLOR: #808080; BORDER-COLLAPSE: collapse; empty-cells: show
}
DIV.accessBox TABLE TD {
	WIDTH: 7ex; TEXT-ALIGN: center
}
DIV.accessBoxTop TABLE TD {
	WIDTH: 7ex; TEXT-ALIGN: center
}
DIV.accessBoxBottom TABLE TD {
	WIDTH: 7ex; TEXT-ALIGN: center
}
DIV.accessBox TABLE TD.empty {
	BORDER-RIGHT: #fff 2px solid; BORDER-TOP: #fff 2px solid; BORDER-LEFT: =
#fff 2px solid; COLOR: #f6f7f8; BORDER-BOTTOM: #fff 2px solid; =
BACKGROUND-COLOR: #f6f7f8
}
DIV.accessBoxTop TABLE TD.empty {
	BORDER-RIGHT: #fff 2px solid; BORDER-TOP: #fff 2px solid; BORDER-LEFT: =
#fff 2px solid; COLOR: #f6f7f8; BORDER-BOTTOM: #fff 2px solid; =
BACKGROUND-COLOR: #f6f7f8
}
DIV.accessBoxBottom TABLE TD.empty {
	BORDER-RIGHT: #fff 2px solid; BORDER-TOP: #fff 2px solid; BORDER-LEFT: =
#fff 2px solid; COLOR: #f6f7f8; BORDER-BOTTOM: #fff 2px solid; =
BACKGROUND-COLOR: #f6f7f8
}
DIV#courtPractices LI {
	LINE-HEIGHT: 1.5em
}
SPAN.collectionScopeLink {
	FONT-SIZE: 12px
}
TABLE.databasesList {
	MARGIN-BOTTOM: 2em; MARGIN-LEFT: 2em; WIDTH: 40%
}
DIV#decisionReflexRecord {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2em =
0px; WIDTH: 745px; PADDING-TOP: 0px; BORDER-BOTTOM: #000 1px solid
}
DIV#decisionReflexRecord DIV#reflexRecordHeader {
	MIN-HEIGHT: 20px; PADDING-BOTTOM: 0.3em
}
DIV#reflexRecordHeader BUTTON {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bolder; =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 120px; CURSOR: pointer; COLOR: =
#fff; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; POSITION: absolute; HEIGHT: 20px; =
BACKGROUND-COLOR: #027abb; TEXT-ALIGN: center; BORDER-BOTTOM-STYLE: none
}
DIV#decisionReflexRecord H3.reflexRecord {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; FLOAT: left; PADDING-BOTTOM: =
0.5em; MARGIN: 0px 1em 0px 0px; COLOR: #fff; PADDING-TOP: 0.5em; =
BACKGROUND-COLOR: #808080
}
DIV#decisionReflexRecord DIV#controlBox {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; PADDING-BOTTOM: 0.5em; =
PADDING-TOP: 0.5em
}
DIV#decisionReflexRecord DIV#controlBox A {
	CURSOR: pointer; COLOR: #027abb
}
DIV#decisionReflexRecordContent {
	PADDING-RIGHT: 0px; BORDER-TOP: #000 1px solid; DISPLAY: none; =
PADDING-LEFT: 1.5em; PADDING-BOTTOM: 1em; MARGIN: 0px; PADDING-TOP: 0px
}
DIV#noteup {
	MARGIN: 2em 0px; COLOR: #808080
}
DIV#noteup P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
P.versionWarning {
	COLOR: #bf0d0b
}
FORM#searchForm {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DIV#searchBox {
	BORDER-RIGHT: #000 2px solid; PADDING-RIGHT: 12px; BORDER-TOP: #000 2px =
solid; PADDING-LEFT: 12px; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 2em; =
BORDER-LEFT: #000 2px solid; PADDING-TOP: 12px; BORDER-BOTTOM: #000 2px =
solid; POSITION: relative
}
DIV#advancedSearchBox {
	BORDER-RIGHT: #000 2px solid; PADDING-RIGHT: 12px; BORDER-TOP: #000 2px =
solid; PADDING-LEFT: 12px; PADDING-BOTTOM: 12px; MARGIN: 0px 0px 2em; =
BORDER-LEFT: #000 2px solid; PADDING-TOP: 12px; BORDER-BOTTOM: #000 2px =
solid; POSITION: relative
}
DIV#searchBox {
	WIDTH: 530px
}
DIV#advancedSearchBox {
	WIDTH: 718px
}
DIV#searchBox DIV.searchStep {
	PADDING-RIGHT: 0px; PADDING-LEFT: 45px; MIN-HEIGHT: 48px; =
PADDING-BOTTOM: 0px; MARGIN: 5px 0px; PADDING-TOP: 0px; POSITION: =
relative
}
DIV#advancedSearchBox DIV.searchStep {
	PADDING-RIGHT: 0px; PADDING-LEFT: 45px; MIN-HEIGHT: 48px; =
PADDING-BOTTOM: 0px; MARGIN: 5px 0px; PADDING-TOP: 0px; POSITION: =
relative
}
#searchBox .syntaxHelper {
	BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #000 1px =
solid; PADDING-LEFT: 5px; Z-INDEX: 50; RIGHT: 2.5em; PADDING-BOTTOM: =
0px; BORDER-LEFT: #000 1px solid; COLOR: #000; PADDING-TOP: 0px; =
BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BACKGROUND-COLOR: =
#ffffe0; TEXT-ALIGN: center
}
#advancedSearchBox .syntaxHelper {
	BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #000 1px =
solid; PADDING-LEFT: 5px; Z-INDEX: 50; RIGHT: 2.5em; PADDING-BOTTOM: =
0px; BORDER-LEFT: #000 1px solid; COLOR: #000; PADDING-TOP: 0px; =
BORDER-BOTTOM: #000 1px solid; POSITION: absolute; BACKGROUND-COLOR: =
#ffffe0; TEXT-ALIGN: center
}
.syntaxHelper P {
	MARGIN: 2px
}
DIV.searchStep DIV.searchTerm {
	VERTICAL-ALIGN: top; COLOR: #808080; LINE-HEIGHT: 16px; POSITION: =
relative
}
DIV.searchStep DIV.termInput {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MIN-HEIGHT: 23px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; POSITION: relative
}
DIV#searchBox INPUT.textInput {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
14px; PADDING-BOTTOM: 2px; MARGIN: 3px 0px 5px; WIDTH: 100%; =
BORDER-TOP-STYLE: none; PADDING-TOP: 2px; FONT-FAMILY: "Lucida Console", =
"Courier New", Courier, monospace; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #e0e2e2; BORDER-BOTTOM-STYLE: =
none
}
DIV#searchBox INPUT.dateInput {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
14px; PADDING-BOTTOM: 2px; MARGIN: 3px 0px 5px; WIDTH: 100%; =
BORDER-TOP-STYLE: none; PADDING-TOP: 2px; FONT-FAMILY: "Lucida Console", =
"Courier New", Courier, monospace; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #e0e2e2; BORDER-BOTTOM-STYLE: =
none
}
DIV#advancedSearchBox INPUT.textInput {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
14px; PADDING-BOTTOM: 2px; MARGIN: 3px 0px 5px; WIDTH: 100%; =
BORDER-TOP-STYLE: none; PADDING-TOP: 2px; FONT-FAMILY: "Lucida Console", =
"Courier New", Courier, monospace; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #e0e2e2; BORDER-BOTTOM-STYLE: =
none
}
DIV#advancedSearchBox INPUT.dateInput {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
14px; PADDING-BOTTOM: 2px; MARGIN: 3px 0px 5px; WIDTH: 100%; =
BORDER-TOP-STYLE: none; PADDING-TOP: 2px; FONT-FAMILY: "Lucida Console", =
"Courier New", Courier, monospace; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #e0e2e2; BORDER-BOTTOM-STYLE: =
none
}
DIV#searchBox INPUT.dateInput {
	WIDTH: 13.5ex
}
DIV#advancedSearchBox INPUT.dateInput {
	WIDTH: 13.5ex
}
DIV#searchBox EM {
	FONT-WEIGHT: bold; FONT-STYLE: normal
}
DIV#advancedSearchBox EM {
	FONT-WEIGHT: bold; FONT-STYLE: normal
}
DIV#searchBox EM.upper {
	text-transformation: uppercase
}
DIV#advancedSearchBox EM.upper {
	text-transformation: uppercase
}
DIV#advancedSearchParts {
	WIDTH: 718px; POSITION: relative
}
DIV.searchTerm SPAN.selector {
	FONT-SIZE: 0.9em
}
DIV.searchTerm SPAN.selector A {
	WHITE-SPACE: nowrap
}
#collectionsListing {
	MARGIN-TOP: 3px; MARGIN-BOTTOM: 0.5em
}
#collectionsListing TABLE {
	WIDTH: 100%; BORDER-COLLAPSE: collapse
}
#collectionsListing TABLE TD {
	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; PADDING-BOTTOM: 0px; =
VERTICAL-ALIGN: top; PADDING-TOP: 0px
}
DIV.advancedSearchJurisdictionContainer {
	MARGIN: 0.2em 0px; POSITION: relative; BACKGROUND-COLOR: #e0e2e2
}
H3.advancedSearchJurisdiction {
	PADDING-RIGHT: 1.5em; PADDING-LEFT: 1.5em; FONT-WEIGHT: normal; =
FONT-SIZE: 15px; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 80%; CURSOR: =
pointer; COLOR: #808080; LINE-HEIGHT: 22px; PADDING-TOP: 0px; POSITION: =
relative; TEXT-ALIGN: left
}
H3.advancedSearchJurisdiction SPAN.databaseCounter {
	FONT-SIZE: 0.9em; RIGHT: 0px; POSITION: absolute; TOP: 0px
}
H3.advancedSearchJurisdiction SPAN.expander {
	LEFT: 0.35em; WIDTH: 1em; POSITION: absolute; TEXT-ALIGN: center
}
SPAN.databaseCounter SPAN.databaseCount {
	FONT-WEIGHT: bold
}
DIV.advancedSearchJurisdictionContainer SPAN.selector {
	RIGHT: 1em; POSITION: absolute; TOP: 0.3em
}
H3.searchTermTitle SPAN.selector {
	RIGHT: 1em; POSITION: absolute; TOP: 0.3em
}
DIV.searchOptions LI.legislationSelector {
	COLOR: #f7931e
}
DIV.searchOptions LI.ruleSelector {
	COLOR: #f7931e
}
DIV.searchOptions LI.tribunals {
	COLOR: #0071bc
}
DIV.searchOptions LI.courts {
	COLOR: #8cc63f! important
}
DIV#searchButtons {
	BOTTOM: -22px; POSITION: relative; HEIGHT: 20px; BACKGROUND-COLOR: =
transparent
}
DIV#advancedSearchButtons {
	CLEAR: both; BOTTOM: -22px; POSITION: relative; HEIGHT: 20px
}
DIV#searchButtons .left {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-WEIGHT: bolder; =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 158px; CURSOR: pointer; COLOR: =
#fff; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; POSITION: absolute; HEIGHT: 20px; =
BACKGROUND-COLOR: #027abb; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none
}
DIV#searchButtons .middle {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-WEIGHT: bolder; =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 158px; CURSOR: pointer; COLOR: =
#fff; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; POSITION: absolute; HEIGHT: 20px; =
BACKGROUND-COLOR: #027abb; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none
}
DIV#searchButtons .right {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-WEIGHT: bolder; =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 158px; CURSOR: pointer; COLOR: =
#fff; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; POSITION: absolute; HEIGHT: 20px; =
BACKGROUND-COLOR: #027abb; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none
}
DIV#advancedSearchButtons .left {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-WEIGHT: bolder; =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 158px; CURSOR: pointer; COLOR: =
#fff; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; POSITION: absolute; HEIGHT: 20px; =
BACKGROUND-COLOR: #027abb; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none
}
DIV#advancedSearchButtons .middle {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-WEIGHT: bolder; =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 158px; CURSOR: pointer; COLOR: =
#fff; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; POSITION: absolute; HEIGHT: 20px; =
BACKGROUND-COLOR: #027abb; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none
}
DIV#advancedSearchButtons .right {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-WEIGHT: bolder; =
PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 158px; CURSOR: pointer; COLOR: =
#fff; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: =
none; BORDER-LEFT-STYLE: none; POSITION: absolute; HEIGHT: 20px; =
BACKGROUND-COLOR: #027abb; TEXT-ALIGN: left; BORDER-BOTTOM-STYLE: none
}
DIV#searchButtons .left {
	LEFT: 8px
}
DIV#advancedSearchButtons .left {
	LEFT: 100px
}
DIV#searchButtons .middle {
	LEFT: 186px
}
DIV#advancedSearchButtons .middle {
	LEFT: 280px
}
DIV#searchButtons .right {
	RIGHT: 8px
}
DIV#advancedSearchButtons .right {
	RIGHT: 100px
}
DIV#advancedSearchBox SPAN.selector INPUT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: =
0px; MARGIN: 0px; CURSOR: pointer; COLOR: #027abb; BORDER-TOP-STYLE: =
none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BACKGROUND-COLOR: transparent; BORDER-BOTTOM-STYLE: none
}
DIV#advancedSearchBox SPAN.selector INPUT:hover {
	TEXT-DECORATION: underline
}
DIV#searchTips {
	BORDER-RIGHT: #027abb 1px solid; PADDING-RIGHT: 0.5em; BORDER-TOP: =
#027abb 1px solid; DISPLAY: none; PADDING-LEFT: 0.5em; FONT-SIZE: 0.9em; =
PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: #027abb 1px solid; =
PADDING-TOP: 0.5em; BORDER-BOTTOM: #027abb 1px solid; BACKGROUND-COLOR: =
#e8f2fe
}
DIV#searchTips TABLE {
	WIDTH: 100%; BORDER-COLLAPSE: collapse
}
DIV#searchTips .odd {
	BACKGROUND-COLOR: #d3e7f8
}
DIV#searchTips TH {
	BORDER-BOTTOM: #000 1px solid
}
DIV#searchTips .find {
	WIDTH: 45%; TEXT-ALIGN: left
}
DIV#searchTips .operator {
	TEXT-ALIGN: center
}
DIV#searchTips .example {
	WHITE-SPACE: nowrap; TEXT-ALIGN: right
}
DIV#searchTips P#fullHelp {
	TEXT-ALIGN: right
}
SPAN.helpLink {
	FLOAT: right; POSITION: relative
}
DIV#searchResults DIV.resultsInfo {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; HEIGHT: 1.5em
}
DIV#searchResults DIV.topInfo {
	MARGIN: 1em 0px 0px
}
DIV#searchResults DIV.bottomInfo {
	MARGIN: 0px 0px 1em
}
DIV#searchResults DIV.resultsInfo SPAN.size {
	FLOAT: left; MARGIN-RIGHT: 2em
}
DIV#searchResults DIV.resultsInfo SPAN.ordering {
	FLOAT: right
}
DIV#searchResults DIV.resultsInfo UL.pager {
	MARGIN: 0px; TEXT-TRANSFORM: uppercase
}
DIV#searchResults DIV.items {
	PADDING-RIGHT: 0px; BORDER-TOP: #000 2px solid; PADDING-LEFT: 0px; =
MAX-WIDTH: 100%; PADDING-BOTTOM: 1em; MARGIN: 0em 0px; PADDING-TOP: 1em; =
BORDER-BOTTOM: #000 2px solid
}
DIV#searchResults DIV.items SPAN.reference {
	WHITE-SPACE: nowrap
}
DIV#searchResults DIV.items SPAN.date {
	WHITE-SPACE: nowrap
}
DIV#searchResults DIV.items UL UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 3em; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DIV#searchResults DIV.items UL {
	WIDTH: auto
}
DIV#searchResults DIV.items LI {
	BORDER-RIGHT: transparent 1px solid; BORDER-TOP: transparent 1px solid; =
MARGIN: 0px 0px 2em; BORDER-LEFT: transparent 1px solid; BORDER-BOTTOM: =
transparent 1px solid; POSITION: relative
}
DIV#searchResults DIV.items UL UL LI {
	MARGIN: 0px
}
DIV#searchResults DIV.items DIV.searchResult {
	MARGIN: 0pt 0pt 0pt 6ex
}
DIV#searchResults DIV.searchResult DIV.keywords {
=09
}
DIV#searchResults DIV.searchResult DIV.keywords SPAN {
	FONT-STYLE: italic; WHITE-SPACE: nowrap
}
DIV#searchResults DIV.index {
	FONT-SIZE: 1.3em; LEFT: 0px; MARGIN: 0px 1ex 0px 0px; WIDTH: 4ex; =
POSITION: absolute; TOP: 0px; TEXT-ALIGN: left
}
DIV#advancedErrorBox {
	BACKGROUND-POSITION: 1px 1px; BACKGROUND-IMAGE: =
url(../images/exclamation.gif); MARGIN: 1em 0px; COLOR: #bf0d0b; =
BACKGROUND-REPEAT: no-repeat
}
DIV#errorBox {
	BACKGROUND-POSITION: 1px 1px; BACKGROUND-IMAGE: =
url(../images/exclamation.gif); MARGIN: 1em 0px; COLOR: #bf0d0b; =
BACKGROUND-REPEAT: no-repeat
}
DIV#errorBox DIV.items {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; =
MARGIN-LEFT: 20px; BORDER-LEFT: #bf0d0b 1px solid; PADDING-TOP: 0px
}
DIV#advancedErrorBox DIV.items {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; =
MARGIN-LEFT: 20px; BORDER-LEFT: #bf0d0b 1px solid; PADDING-TOP: 0px
}
DIV#errorBox DIV.items LI {
	PADDING-BOTTOM: 10px
}
DIV#advancedErrorBox DIV.items LI {
	PADDING-BOTTOM: 10px
}
DIV#errorBox DIV.items LI.last {
	PADDING-BOTTOM: 0px
}
DIV#advancedErrorBox DIV.items LI.last {
	PADDING-BOTTOM: 0px
}
DIV#errorBox {
	WIDTH: 555px
}
DIV#advancedErrorBox {
	WIDTH: 765px
}
DIV#news {
=09
}
DIV#databases {
=09
}
DIV#frequentlyConsulted {
=09
}
DIV#externalLinks {
=09
}
DIV#news P.newsMessage {
	MARGIN: 0px 0px 1.75em
}
DIV#news TABLE TD.newsTitle {
	WIDTH: 100%
}
DIV#news TABLE TD.newsContent {
=09
}
DIV#infoCanLII {
	MARGIN: 1.5em 0px 0px
}
DIV#newsHeader {
	MARGIN-BOTTOM: 4em
}
DIV#newsGreetings P.greetings {
	MARGIN-BOTTOM: 1em
}
DIV#newsSalutations P.salutations {
	PADDING-LEFT: 2em
}
DIV.newsItem {
=09
}
DIV.newsItem LI {
	MARGIN: 0.5em 0px; LINE-HEIGHT: 1.7em
}
DIV.newsItem P.newsParagraph {
	LINE-HEIGHT: 1.7em
}
DIV#international {
=09
}
DIV#international TR {
	HEIGHT: 5em
}
DIV#international LI.last {
=09
}
DIV#international TD.logo {
	VERTICAL-ALIGN: middle; WIDTH: 8em; TEXT-ALIGN: center
}
DIV#international TD.name {
	VERTICAL-ALIGN: middle
}
DIV.items UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 1em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV.accessBox UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 1em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV.accessBoxTop UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 1em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV.accessBoxBottom UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 1em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV#statuteVersions UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 1em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV#searchResults UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 1em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV.accessBox UL {
	MARGIN: 0.5em 0px; COLOR: #808080
}
DIV.accessBoxTop UL {
	MARGIN: 0.5em 0px; COLOR: #808080
}
DIV.accessBoxBottom UL {
	MARGIN: 0.5em 0px; COLOR: #808080
}
DIV.accessBoxTop UL.monthNavigationList {
	MARGIN: 2em 0px 0.5em
}
DIV.accessBoxBottom UL.monthNavigationList {
	MARGIN: 0.5em 0px 2em
}
DIV.items UL LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px =
0px; PADDING-TOP: 0px; POSITION: relative
}
DIV.accessBox UL LI {
	DISPLAY: inline; MARGIN-RIGHT: 5px
}
DIV.accessBoxTop UL LI {
	DISPLAY: inline; MARGIN-RIGHT: 5px
}
DIV.accessBoxBottom UL LI {
	DISPLAY: inline; MARGIN-RIGHT: 5px
}
DIV.accessBoxTop {
	MARGIN: 0.5em 0px 1em; BORDER-BOTTOM: #000 2px solid
}
DIV.accessBoxBottom {
	CLEAR: both; BORDER-TOP: #000 2px solid; MARGIN: 1em 0px 0.5em
}
DIV#searchResults UL.pager LI {
	DISPLAY: inline
}
UL.checkBoxList {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
UL.radioList {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
UL.checkBoxListBlock {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
UL.radioListBlock {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.checkBoxList INPUT {
	MARGIN: 0px 0px 0px -15px
}
.radioList INPUT {
	MARGIN: 0px 0px 0px -15px
}
.checkBoxListBlock INPUT {
	MARGIN: 0px 0px 0px -15px
}
.radioListBlock INPUT {
	MARGIN: 0px 0px 0px -15px
}
UL.checkBoxList LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 1px =
0px; PADDING-TOP: 0px
}
UL.radioList LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 1px =
0px; PADDING-TOP: 0px
}
UL.checkBoxListBlock LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 1px =
0px; PADDING-TOP: 0px
}
UL.radioListBlock LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: 1px =
0px; PADDING-TOP: 0px
}
UL.checkBoxList LI {
	HEIGHT: 20px
}
UL.radioList LI {
	HEIGHT: 20px
}
DIV#searchBox UL.checkBoxList LI INPUT.dateInput {
	MARGIN: 0px 0.5em; HEIGHT: 15px
}
DIV#searchBox UL.radioList LI INPUT.dateInput {
	MARGIN: 0px 0.5em; HEIGHT: 15px
}
UL.checkBoxList LI {
	MIN-WIDTH: 25px; MARGIN-RIGHT: 10px
}
UL.checkBoxListBlock LI {
	MIN-WIDTH: 25px; MARGIN-RIGHT: 10px
}
UL.checkBoxListBlock LI {
=09
}
UL.radioListBlock LI {
=09
}
UL.checkBoxList LI {
	FLOAT: left
}
.checkBoxList LABEL {
	PADDING-RIGHT: 0px; BACKGROUND-POSITION: -20px top; PADDING-LEFT: 25px; =
MIN-HEIGHT: 20px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; =
BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-COLOR: =
transparent
}
.radioList LABEL {
	PADDING-RIGHT: 0px; BACKGROUND-POSITION: -20px top; PADDING-LEFT: 25px; =
MIN-HEIGHT: 20px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; =
BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-COLOR: =
transparent
}
.checkBoxListBlock LABEL {
	PADDING-RIGHT: 0px; BACKGROUND-POSITION: -20px top; PADDING-LEFT: 25px; =
MIN-HEIGHT: 20px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; =
BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-COLOR: =
transparent
}
.radioListBlock LABEL {
	PADDING-RIGHT: 0px; BACKGROUND-POSITION: -20px top; PADDING-LEFT: 25px; =
MIN-HEIGHT: 20px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; =
BACKGROUND-REPEAT: no-repeat; WHITE-SPACE: nowrap; BACKGROUND-COLOR: =
transparent
}
.checkBoxList LABEL {
	FLOAT: left
}
.radioList LABEL {
	FLOAT: left
}
.checkBoxListBlock LABEL {
	DISPLAY: block; WHITE-SPACE: normal
}
.radioListBlock LABEL {
	DISPLAY: block; WHITE-SPACE: normal
}
DIV#advancedSearchParts UL.checkBoxList LI {
	FLOAT: left; MARGIN: 0px; WIDTH: 45px
}
DIV#statuteVersions UL {
=09
}
P.statuteLinks {
	MARGIN-TOP: -0.5em; MARGIN-BOTTOM: 0.75em
}
P.regulationLinks {
	MARGIN-TOP: -0.5em; MARGIN-BOTTOM: 0.75em
}
P.lastUpdate {
	MARGIN-TOP: 0px; MARGIN-BOTTOM: 1em
}
DIV#enabledRegulations {
	CLEAR: both
}
DIV#statuteVersions DIV.years {
	MARGIN-TOP: 1em
}
DIV#statuteVersions P {
	MARGIN: 0px
}
DIV#enabledRegulations P {
	MARGIN: 0px
}
DIV#conditionsOfUse {
=09
}
DIV#updatesOnCanlii {
=09
}
DIV#statuteVersions {
=09
}
DIV#statuteVersions UL LI.versionYear {
	FONT-WEIGHT: bold
}
DIV#statuteVersions DIV.years UL {
	FLOAT: left; WIDTH: 15ex
}
DIV#statuteTableOfContents {
=09
}
DIV#statuteTableOfContents UL {
	MARGIN: 0px
}
DIV#statuteTableOfContents UL LI {
	MARGIN: 0px
}
DIV#statuteTableOfContents UL LI UL {
	MARGIN: 0px 0px 0px 2.5em
}
DIV#statuteTableOfContents LI.title {
	TEXT-TRANSFORM: uppercase
}
DIV#statuteTableOfContents LI.subTitle {
	MARGIN: 0px 0px 0px -1.5em
}
DIV#headings {
	MARGIN: 2em 1em
}
DIV#headings H1.canlii {
	FONT-WEIGHT: bold; FONT-SIZE: 15px; MARGIN: 0px
}
DIV#headings H2.canlii {
	FONT-WEIGHT: bold; FONT-SIZE: 15px; MARGIN: 0px 0px 0px 1em; =
TEXT-TRANSFORM: uppercase
}
DIV#headings H3.canlii {
	FONT-SIZE: 15px; MARGIN: 0px 0px 0px 2em
}
DIV#statuteText {
=09
}
DIV#statuteText DIV.paragraph {
	MARGIN: 1em 0px
}
DIV#statuteText DIV.paragraph P.marginText {
	CLEAR: left; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; =
FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 150px; =
PADDING-TOP: 0px
}
DIV#statuteText DIV.paragraph DIV.mainText {
	MARGIN-LEFT: 180px
}
DIV#statuteText DIV.paragraph DIV.mainText P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DIV#statuteText DIV.paragraph DIV.mainText P.mainText {
	TEXT-INDENT: 2em
}
DIV#statuteText DIV.paragraph DIV.mainText P.history {
	FONT-SIZE: 0.9em
}
DIV#statuteText UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0.5em 0px 0.5em 2em; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV#associatedRegulations {
	PADDING-RIGHT: 2em; PADDING-LEFT: 2em; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
DIV.items TABLE {
	BORDER-COLLAPSE: collapse
}
DIV.decisionsListing TABLE {
	BORDER-COLLAPSE: collapse
}
DIV.items TABLE TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 2px; =
VERTICAL-ALIGN: top; PADDING-TOP: 2px
}
DIV.decisionsListing TABLE TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 2px; =
VERTICAL-ALIGN: top; PADDING-TOP: 2px
}
DIV.items TABLE TD.label {
	PADDING-RIGHT: 0.75em; WHITE-SPACE: nowrap
}
DIV.decisionsListing TABLE TD.decisionDate {
	PADDING-RIGHT: 0.75em; WHITE-SPACE: nowrap
}
DIV.items TABLE TD.labelPrint {
	PADDING-RIGHT: 0.75em; WHITE-SPACE: nowrap
}
DIV.items TABLE TD.label {
	COLOR: #808080
}
DIV.items TABLE TD.labelPrint {
	COLOR: #808080
}
DIV.items TABLE TD.labelPrint {
	VERTICAL-ALIGN: bottom
}
DIV#statutesListing DIV.items TABLE {
	WIDTH: 98%; empty-cells: show
}
DIV#regulationsListing DIV.items TABLE {
	WIDTH: 98%; empty-cells: show
}
DIV#statutesListing DIV.items TR.odd TD {
	BACKGROUND-COLOR: #f4f4f4
}
DIV#regulationsListing DIV.items TR.odd TD {
	BACKGROUND-COLOR: #f4f4f4
}
DIV#statutesListing DIV.items TR.even TD {
	BACKGROUND-COLOR: #fff
}
DIV#regulationsListing DIV.items TR.even TD {
	BACKGROUND-COLOR: #fff
}
DIV#statutesListing DIV.items TD.left {
	WIDTH: 50%
}
DIV#regulationsListing DIV.items TD.left {
	WIDTH: 50%
}
DIV#statutesListing DIV.items TD.right {
	WIDTH: 45%
}
DIV#regulationsListing DIV.items TD.right {
	WIDTH: 45%
}
DIV#statuteVersions DIV.items TABLE TD {
	PADDING-RIGHT: 1em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
DIV#jurisdictions DIV.items TABLE {
	WIDTH: 100%
}
DIV#jurisdictions DIV.items TABLE TR.odd {
	BACKGROUND-COLOR: transparent
}
DIV#jurisdictions DIV.items TABLE TR.odd {
	BACKGROUND-COLOR: #f6f7f8
}
DIV#jurisdictions DIV.items TABLE TD {
	PADDING-RIGHT: 0.5em
}
DIV#jurisdictions DIV.items TABLE THEAD TD {
	FONT-WEIGHT: normal; COLOR: #808080; TEXT-ALIGN: left
}
DIV#jurisdictions DIV.items TABLE TD.date {
	WIDTH: 140px; WHITE-SPACE: nowrap; TEXT-ALIGN: center
}
DIV#jurisdictions DIV.items TABLE THEAD TD.date {
	WIDTH: 140px; WHITE-SPACE: nowrap; TEXT-ALIGN: center
}
DIV#documentHeader {
=09
}
DIV#documentMeta {
	MARGIN: 2em 0px
}
DIV#documentMeta SPAN.label {
	COLOR: #808080
}
P.noteSoquij {
	MARGIN-TOP: 4em; FONT-STYLE: italic
}
SPAN.annotation {
	FONT-WEIGHT: bolder; COLOR: #bf0e08
}
TABLE#navigationTable {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 0.8em; =
BORDER-BOTTOM-WIDTH: 0px; BORDER-COLLAPSE: collapse; BORDER-RIGHT-WIDTH: =
0px; border-spacing: 0
}
TABLE#navigationTable P {
	MARGIN: 0px
}
TABLE#navigationTable TD {
	VERTICAL-ALIGN: top
}
TABLE#navigationTable TD.pointer {
	WIDTH: 24px; TEXT-ALIGN: right
}
TABLE#navigationTable H4 {
	WHITE-SPACE: nowrap
}
DIV#footer {
	CLEAR: both; PADDING-RIGHT: 0px; BORDER-TOP: #000 2px solid; =
PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 4em 0px; PADDING-TOP: =
0px; POSITION: relative
}
DIV#footer UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; RIGHT: 0.5em; PADDING-BOTTOM: =
0px; MARGIN: -1em 0px 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; =
POSITION: absolute; TOP: -0.5em
}
DIV#footer UL LI {
	PADDING-RIGHT: 3px; DISPLAY: inline; PADDING-LEFT: 5px; PADDING-BOTTOM: =
0px; MARGIN: 0px; BORDER-LEFT: #000 1px solid; PADDING-TOP: 0px
}
DIV#footer UL LI.first {
	BORDER-LEFT-STYLE: none
}
DIV#footer DIV#by {
	MARGIN: 7px 2px 2px
}
DIV#footer DIV#by DIV {
	FLOAT: left; MARGIN: 0px 0.4em 0px 0px; POSITION: relative
}
DIV#by DIV.flsc {
	TOP: -5px
}
DIV#footer P#by IMG {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
DIV#footer P#by IMG.flsc {
	MARGIN-TOP: -4px
}
DIV#footer P#by SPAN {
	VERTICAL-ALIGN: top; COLOR: #808080
}
DIV#englishHtmlError {
	PADDING-RIGHT: 0px; PADDING-LEFT: 1em; FLOAT: left; PADDING-BOTTOM: =
1em; MARGIN: 1em 0px 4.5em; WIDTH: 300px; PADDING-TOP: 0px
}
DIV#frenchHtmlError {
	PADDING-RIGHT: 0px; PADDING-LEFT: 1em; FLOAT: left; PADDING-BOTTOM: =
1em; MARGIN: 1em 0px 4.5em; WIDTH: 300px; PADDING-TOP: 0px
}
DIV#englishHtmlError UL {
	PADDING-LEFT: 1em
}
DIV#frenchHtmlError UL {
	PADDING-LEFT: 1em
}
DIV#englishHtmlError P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
DIV#frenchHtmlError P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
DIV#englishHtmlError {
	BORDER-LEFT: #000 2px solid
}
DIV#frenchHtmlError {
=09
}
DIV#commentForm {
=09
}
DIV#commentForm INPUT.securityField {
	DISPLAY: none
}
DIV#commentForm TABLE TD.label {
	WIDTH: 13em; WHITE-SPACE: normal; TEXT-ALIGN: right
}
DIV#commentForm UL.checkBoxList {
	MARGIN-LEFT: -35px
}
DIV#commentForm UL.checkBoxList LABEL {
	PADDING-LEFT: 40px
}
DIV.doctrine {
	TEXT-ALIGN: justify
}
DIV.doctrine H1.canlii {
	TEXT-ALIGN: center
}
DIV.doctrine P.sousmenu {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; FONT-SIZE: 1.5em; =
PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0px; PADDING-TOP: 0px; =
BORDER-BOTTOM: #000 1px solid; TEXT-ALIGN: center
}
DIV.doctrine DIV.sousmenu {
	FONT-WEIGHT: bold; TEXT-ALIGN: center
}
DIV.doctrine DIV.sousmenu A.sousmenu {
	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; FONT-SIZE: 0.9em; =
PADDING-BOTTOM: 0px; COLOR: #000; PADDING-TOP: 0px; BACKGROUND-COLOR: =
#e0e2e2
}
DIV.doctrine DIV.sousmenu A.sousmenu:hover {
	BACKGROUND-COLOR: #c0dcea; TEXT-DECORATION: none
}
DIV.doctrine DIV.sectionCitation {
	BORDER-RIGHT: #000 2px solid; PADDING-RIGHT: 1.5em; BORDER-TOP: #000 =
2px solid; PADDING-LEFT: 1.5em; FONT-WEIGHT: bold; PADDING-BOTTOM: 1em; =
MARGIN: 1em 5em; BORDER-LEFT: #000 2px solid; PADDING-TOP: 1em; =
BORDER-BOTTOM: #000 2px solid
}
DIV.doctrine DIV.sectionCitation P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DIV.doctrine P.update {
	FONT-WEIGHT: bold; FONT-SIZE: 0.9em; COLOR: #808080
}
DIV.doctrine SPAN.emph {
	FONT-STYLE: italic
}
DIV.doctrine A.reflex-caselaw {
	COLOR: #000; BORDER-BOTTOM: #027abb 1px dotted; BACKGROUND-COLOR: =
#e0e2e2
}
DIV.doctrine A.reflex-caselaw:hover {
	BACKGROUND-COLOR: #c0dcea; TEXT-DECORATION: none
}
DIV.doctrine P.Toc1 {
	MARGIN: 0px
}
DIV.doctrine P.Toc2 {
	MARGIN: 0px
}
DIV.doctrine P.Toc2 {
	PADDING-LEFT: 1.5em
}
DIV.doctrine P.par {
	LINE-HEIGHT: 1.6em
}
DIV.doctrine P.statute {
	FONT-SIZE: 1.5em
}
DIV.doctrine TABLE {
=09
}
DIV.doctrine TABLE TR {
=09
}
DIV.doctrine TABLE TR TD {
	VERTICAL-ALIGN: top
}
DIV.doctrine TABLE TD P {
	MARGIN: 0.2em
}
A.satalPart {
	MARGIN-LEFT: 2em
}
DIV#splashBody {
=09
}
DIV#splash {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 4em =
auto 0px; WIDTH: 750px; PADDING-TOP: 0px; BORDER-BOTTOM: #000 1px solid; =
POSITION: relative
}
DIV#splash DIV#logo {
	BACKGROUND-POSITION: 50% 0%; FONT-SIZE: 2em; BACKGROUND-IMAGE: =
url(../images/canliiSplash.gif); MARGIN: 0px auto; PADDING-TOP: 222px; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 32px; TEXT-ALIGN: center
}
DIV#logo DIV#frenchText {
	DISPLAY: none; COLOR: #007bbe
}
DIV#logo DIV#englishText {
	DISPLAY: none; COLOR: #007bbe
}
DIV#splash DIV#languageSelection {
	FONT-SIZE: 2.5em; MARGIN: 0px auto 2em; TEXT-ALIGN: center
}
DIV#languageSelection TABLE {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
auto; WIDTH: 70%; PADDING-TOP: 0px; BORDER-COLLAPSE: collapse; =
border-spacing: 0
}
DIV#languageSelection TABLE TD {
	PADDING-RIGHT: 0.75em; PADDING-LEFT: 0.75em; PADDING-BOTTOM: 0px; =
MARGIN: 0px; WIDTH: 50%; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
DIV#languageSelection TABLE TD.french {
	BORDER-RIGHT: #000 2px solid; TEXT-ALIGN: right
}
DIV#languageSelection TABLE TD.english {
	BORDER-LEFT: #000 2px solid; TEXT-ALIGN: left
}
DIV#splashFooter DIV#remember {
	MARGIN: 5px 0px 0px; WIDTH: 50%
}
DIV#remember UL.checkBoxList LI {
	DISPLAY: block; FLOAT: none
}
DIV#remember UL.checkBoxList LABEL {
	DISPLAY: block; PADDING-LEFT: 2em; FLOAT: none
}
DIV#splashFooter DIV#terms {
	RIGHT: 0px; MARGIN: -20px 0px 0px; POSITION: absolute
}
DIV#terms TABLE {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; BORDER-COLLAPSE: collapse; TEXT-ALIGN: center; =
border-spacing: 0
}
DIV#terms TABLE TD {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; MARGIN: =
0px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
WHITE-SPACE: nowrap; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
DIV#terms TABLE TD.french {
	BORDER-RIGHT: #000 1px solid
}
DIV#terms TABLE TD.english {
	BORDER-LEFT: #000 1px solid
}
DIV#splashFooter {
	MARGIN: 0px auto; WIDTH: 750px; POSITION: relative
}
.tab-wrapper {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
1em; MARGIN: 0px; PADDING-TOP: 1em
}
.tab-menu {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; TEXT-ALIGN: right
}
.tab-menu LI {
	PADDING-RIGHT: 1em; DISPLAY: inline; PADDING-LEFT: 1em; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 0px 0.5em; PADDING-TOP: 0px
}
.tab-menu LI A {
	FONT-WEIGHT: bold
}
.tab-menu LI A:hover {
=09
}
.tab-menu LI A:focus {
=09
}
.tab-menu LI.tab-selected A {
	CURSOR: default; COLOR: #808080; TEXT-DECORATION: none
}

@media Print   =20
{
BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: 90%; =
PADDING-TOP: 0px
}
UL.checkBoxList INPUT {
	VISIBILITY: visible
}
UL.radioList INPUT {
	VISIBILITY: visible
}
DIV#mainContent_noMenu {
	MARGIN: 0px
}
DIV.mainContent_noMenu {
	MARGIN: 0px
}
DIV#highlightHeader {
	DISPLAY: none
}
DIV#mainContent * {
	WIDTH: auto
}
DIV#mainContent_noMenu * {
	WIDTH: auto
}
DIV.mainContent_noMenu * {
	WIDTH: auto
}

}

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Location: http://www.canlii.org/css/canlii-ie.css

DIV#jurisdictionBox LABEL {
	PADDING-LEFT: 18px
}
H3.advancedSearchJurisdiction {
	FONT-SIZE: 1.2em; MARGIN: 0px; LINE-HEIGHT: 1.7
}
DIV.advancedSearchJurisdictionContainer SPAN.selector {
	FONT-SIZE: 0.85em
}
H3.advancedSearchJurisdiction SPAN.expander {
	TOP: -0.1em
}

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Location: http://www.canlii.org/css/canlii-ie7.css

DIV#body {
	MIN-WIDTH: 760px; MAX-WIDTH: 1000px
}
DIV.body {
	MIN-WIDTH: 760px; MAX-WIDTH: 1000px
}
DIV#originalDocument {
	MIN-WIDTH: 730px; MAX-WIDTH: 975px
}
DIV.originalDocument {
	MIN-WIDTH: 730px; MAX-WIDTH: 975px
}
DIV#decisionReflexRecord {
	WIDTH: 730px
}
DIV#advancedSearchBox {
	MARGIN-LEFT: -10px
}
DIV#advancedSearchParts DIV#boardsBox {
	POSITION: absolute
}

------=_NextPart_000_0000_01CB4824.C10EDB70
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.canlii.org/javascript/canlii.js

=0A=
/* The initialization function, where everything gets set */=0A=
function init() {=0A=
	languageManagement();=0A=
	formInitialization();=0A=
	buttonInitialization();=0A=
}=0A=
=0A=
// Dynamically load javascript files to remove clutter in the html head =
tag.=0A=
// This function is called directly from the head tag.=0A=
function loadJavascript() {=0A=
/*=0A=
	var head =3D document.getElementsByTagName('head').item(0);=0A=
	var mootools1 =3D document.createElement('script');=0A=
	var mootools2 =3D document.createElement('script');=0A=
	var lexumClasses=3D document.createElement('script');=0A=
	var canliiAdv =3D document.createElement('script');=0A=
	=0A=
	mootools1.type =3D 'text/javascript';=0A=
	mootools2.type =3D 'text/javascript';=0A=
	lexumClasses.type =3D 'text/javascript';=0A=
	canliiAdv.type =3D 'text/javascript';=0A=
	=0A=
	mootools1.src =3D '/javascript/mootools-1.2-core-nc.js';=0A=
	mootools2.src =3D '/javascript/mootools-1.2-more.js';=0A=
	lexumClasses.src =3D '/javascript/lexum-classes.js';=0A=
	canliiAdv.src =3D '/javascript/canlii-advanced.js';=0A=
	=0A=
	head.appendChild(mootools1);=0A=
	head.appendChild(mootools2);=0A=
	head.appendChild(lexumClasses);=0A=
	head.appendChild(canliiAdv);=0A=
*/=0A=
=0A=
/*=0A=
	var head =3D document.getElementsByTagName('head').item(0);=0A=
	var mootools1 =3D document.createElement('script');=0A=
	mootools1.type =3D 'text/javascript';=0A=
	mootools1.src =3D '/javascript/launchDateConcatenation.js';=0A=
	head.appendChild(mootools1);=0A=
*/=0A=
}=0A=
=0A=
=0A=
function languageManagement() {=0A=
	var rootPath =3D "/";=0A=
	var language =3D readCookie('canliiLanguage');=0A=
	=0A=
	if (language !=3D null) {=0A=
		setCookie('canliiLanguage', language, 30);=0A=
		=0A=
		if (location.pathname =3D=3D rootPath) {=0A=
			window.location.replace(rootPath + language + "/");=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function checkChoice(language) {=0A=
	var theChoice =3D getObj('rememberLanguage');=0A=
	=0A=
	if (theChoice.checked) {=0A=
		setCookie('canliiLanguage', language, 30);=0A=
	}=0A=
}=0A=
=0A=
function removeLanguageChoice() {=0A=
	eraseCookie('canliiLanguage');=0A=
}=0A=
=0A=
=0A=
function readCookie(cookieName) {=0A=
	var nameLookup =3D cookieName + "=3D";=0A=
	var cookies =3D document.cookie.split(";");=0A=
	=0A=
	for (var i=3D0; i < cookies.length; i++) {=0A=
		cookie =3D cookies[i];=0A=
		while (cookie.charAt(0)=3D=3D' ') cookie =3D cookie.substring(1, =
cookie.length);=0A=
		if (cookie.indexOf(nameLookup) =3D=3D 0) {=0A=
			return cookie.substring(nameLookup.length, cookie.length);=0A=
		}=0A=
	}=0A=
	=0A=
	return null;=0A=
}=0A=
=0A=
function setCookie(cookieName, value, duration) {=0A=
	if (duration) {=0A=
		var endTime =3D new Date();=0A=
		endTime.setTime(endTime.getTime()+(duration*24*3600*1000));=0A=
		var expiration =3D "; expires=3D" + endTime.toGMTString();=0A=
	} else {=0A=
		var expiration =3D "";=0A=
	}=0A=
	=0A=
	document.cookie =3D cookieName + "=3D" + value + expiration + "; =
path=3D/";=0A=
}=0A=
=0A=
function eraseCookie(cookieName) {=0A=
	setCookie(cookieName, '', -1);=0A=
}=0A=
=0A=
=0A=
/*This function checks if we can do dhtml*/=0A=
function dhtml() {=0A=
	return (document.getElementById || document.all || document.layers);=0A=
}=0A=
=0A=
//This function simply gets the element which has the id "objName"=0A=
//Made to work with the most popular browsers.=0A=
function getObj(objName) {=0A=
	if (!dhtml()) return;=0A=
	=0A=
	var element;=0A=
	if (document.getElementById) {=0A=
		element =3D document.getElementById(objName);//Mozilla et IE=0A=
	} else if (document.all) {=0A=
		element =3D document.all[objName]; //IE=0A=
	} else if (document.layers) {=0A=
		element =3D document.layers[objName];=0A=
	}=0A=
	=0A=
	return element;=0A=
}=0A=
=0A=
function changeFormAction(obj) {=0A=
	// This function is made to be called from the SUBMIT button of a FORM=0A=
	// Furthermore, this function is made for FORMs which have a SELECT =
object as its first form element=0A=
	// So we first need the Form object of the submit button=0A=
	var theForm =3D obj.form;=0A=
	=0A=
	// Then we need the first element, which is the SELECT object=0A=
	var selectOption =3D obj.elements[0];=0A=
	=0A=
	// Then, the index of the OPTION selected=0A=
	var optionIndex =3D selectOption.selectedIndex;=0A=
	=0A=
	// Finaly, the ACTION attribute of the FORM is set to the value of the =
selected object=0A=
	obj.action=3DselectOption.options[optionIndex].value;=0A=
	=0A=
	return true;=0A=
}=0A=
=0A=
=0A=
function toggleReflexRecord(obj, buttonLabel) {=0A=
	var theDiv =3D getObj(obj);=0A=
	var caller =3D getObj("reflexRecordToggler");=0A=
	var nextLabel =3D caller.innerHTML;=0A=
		=0A=
	if (theDiv.style.display =3D=3D 'none' || theDiv.style.display =3D=3D =
'') {=0A=
		show(obj, "block");=0A=
	} else {=0A=
		hide(obj, "none");=0A=
	}=0A=
	caller.innerHTML =3D buttonLabel;	=0A=
	caller.href =3D "javascript:toggleReflexRecord('" + obj + "', '" + =
nextLabel + "');";=0A=
}=0A=
=0A=
function openQuickHelp(caller, button, element, text) {=0A=
	var obj =3D getObj(button);=0A=
	var nextLabel =3D obj.value;=0A=
	caller.onclick =3D new Function("openQuickHelp(this, '" + button + "', =
'" + element + "', '" + nextLabel + "');");=0A=
	toggleVisibilityLabel(obj, element, text);=0A=
	return false;=0A=
}=0A=
=0A=
function toggleVisibilityLabel(caller, obj, buttonLabel) {=0A=
	var theDiv =3D getObj(obj);=0A=
	var nextLabel =3D caller.value;=0A=
		=0A=
	if (theDiv.style.display =3D=3D 'none' || theDiv.style.display =3D=3D =
'') {=0A=
		show(obj, "block");=0A=
	} else {=0A=
		hide(obj, "none");=0A=
	}=0A=
	caller.value =3D buttonLabel;	=0A=
	caller.onclick =3D new Function("toggleVisibilityLabel(this, '" + obj + =
"', '" + nextLabel + "');");=0A=
}=0A=
=0A=
function toggleVisibility(caller, obj, visibility) {=0A=
	var theDiv =3D getObj(obj);=0A=
	=0A=
	if (theDiv.style.display =3D=3D 'none' || theDiv.style.display =3D=3D =
'') {=0A=
		show(obj, visibility);=0A=
		caller.innerHTML =3D "Hide";=0A=
	} else {=0A=
		hide(obj, "none");=0A=
		caller.innerHTML =3D "Show";=0A=
	}=0A=
	=0A=
	return true;=0A=
}=0A=
=0A=
function toggleVisibilitySearchParts(caller, obj) {=0A=
	var theDiv =3D getObj(obj);=0A=
	=0A=
	if (theDiv.style.display =3D=3D 'none' || theDiv.style.display =3D=3D =
'') {=0A=
		show(obj, "block");=0A=
		caller.style.backgroundPosition =3D "left top";=0A=
	} else {=0A=
		hide(obj, "none");=0A=
		caller.style.backgroundPosition =3D "left bottom";=0A=
	}=0A=
	=0A=
	return true;=0A=
}=0A=
=0A=
function show(obj, visibility) {=0A=
	var theDiv =3D getObj(obj);=0A=
	=0A=
	if (visibility =3D=3D 'visible') {=0A=
		theDiv.style.visibility =3D visibility;=0A=
	} else {=0A=
		theDiv.style.display =3D visibility;=0A=
	}=0A=
}=0A=
=0A=
function hide(obj, visibility) {=0A=
	var theDiv =3D getObj(obj);=0A=
	=0A=
	if (visibility =3D=3D 'hidden') {=0A=
		theDiv.style.visibility =3D visibility;=0A=
	} else {=0A=
		theDiv.style.display =3D 'none';=0A=
	}=0A=
}=0A=
=0A=
function showHelper(caller, helper) {=0A=
	var helperObj =3D getObj(helper);=0A=
	helperObj.style.top =3D -caller.offsetHeight + "px";=0A=
	show(helper, 'block');=0A=
}=0A=
=0A=
function hideHelper(caller, helper) {=0A=
	hide(helper, 'none');=0A=
}=0A=
=0A=
function buttonInitialization() {=0A=
	var inputs =3D document.getElementsByTagName('input');=0A=
	var buttons =3D document.getElementsByTagName('button');=0A=
	=0A=
	for (var i =3D 0; i < inputs.length; i++) {=0A=
		var input =3D inputs[i];=0A=
		if (input.type =3D=3D "reset" || input.type =3D=3D "submit" || =
input.type =3D=3D "button") {=0A=
			input.onmouseout =3D new Function("return =
setButtonTextDecoration(this, \"none\");");=0A=
			input.onmouseover =3D new Function("return =
setButtonTextDecoration(this, \"underline\");");=0A=
			=0A=
			if (input.type =3D=3D "reset") {=0A=
				input.onclick =3D new Function("return resetForm(this.form);");=0A=
			}=0A=
		}=0A=
	}=0A=
	=0A=
	for (var i =3D 0; i < buttons.length; i++) {=0A=
		var button =3D buttons[i];=0A=
		button.onmouseout =3D new Function("return =
setButtonTextDecoration(this, \"none\");");=0A=
		button.onmouseover =3D new Function("return =
setButtonTextDecoration(this, \"underline\");");=0A=
	}=0A=
	=0A=
}=0A=
=0A=
function setButtonBackground(button, color) {=0A=
	button.style.backgroundColor =3D color;=0A=
	return true;=0A=
}=0A=
=0A=
function setButtonTextDecoration(button, attributes) {=0A=
	button.style.textDecoration =3D attributes;=0A=
}=0A=
=0A=
function resetForm(form) {=0A=
	form.reset();=0A=
	formInitialization();=0A=
}=0A=
=0A=
=0A=
// This function is called when the page is loaded. Its purpose is to=0A=
// manage the checkboxes and the radio buttons so that they appear as =0A=
// nice images instead of the usual and ordinary boxes.=0A=
function formInitialization() {=0A=
	// Every checkbox or radio button is nested in a label element=0A=
	// which is the element displaying the replacement image, so let's =
fetch all the labels=0A=
	var labels =3D document.getElementsByTagName("label");=0A=
=0A=
	for (var i =3D 0; i < labels.length; i++) {=0A=
		var label =3D labels[i];=0A=
		// We need to take all elements contained within the label to get the =
input.=0A=
		var elements =3D label.childNodes;=0A=
=0A=
		for (var j =3D 0; j < elements.length; j++) {=0A=
			var element =3D elements[j];=0A=
			=0A=
			// The only elements we are interested in are those of type checkbox =
or radio, of course=0A=
			if (element.type =3D=3D 'checkbox' || element.type =3D=3D 'radio') {=0A=
				// Firstly, we hide the bland, unoriginal checkbox.=0A=
				element.style.visibility =3D 'hidden';=0A=
				=0A=
				if (element.type =3D=3D 'checkbox') {=0A=
					label.style.backgroundImage =3D "url(/images/checkBoxes.gif)";=0A=
				} else {=0A=
					label.style.backgroundImage =3D "url(/images/radioButtons.gif)";=0A=
				}=0A=
				=0A=
				=0A=
				// Then, set the onclick attribute to the function needed to toggle=0A=
				// the checkbox or radio button.=0A=
				label.onclick =3D new Function("return optionToggle(this);");=0A=
				=0A=
				// From the CSS, every checkbox and radio button is set to the =
"unchecked" image=0A=
				// But it is possible that by default, a checkbox or radio button is =
already checked=0A=
				// and thus we need to switch the image=0A=
				if (element.checked) {						=0A=
					checkElement(label, element);=0A=
				} else {=0A=
					uncheckElement(label, element);=0A=
				}=0A=
			}=0A=
		}=0A=
	}=0A=
	=0A=
	// give focus to the first input of the form on form initialization=0A=
	var theForm =3D document.getElementById("searchForm");=0A=
	if (theForm !=3D null) {=0A=
	//	giveFocusToInput(theForm);=0A=
	}=0A=
}=0A=
=0A=
function advancedFormInitialization() {=0A=
	var searchform =3D getObj("searchForm");=0A=
	//initializeHelpTipsSlider();=0A=
	formInitialization();=0A=
}=0A=
=0A=
function databaseFormInitialization() {=0A=
	var searchform =3D getObj("searchForm");=0A=
	//initializeHelpTipsSlider();=0A=
	initializeJurisdictionsSliders();=0A=
	formInitialization();=0A=
}=0A=
=0A=
function giveFocusToInput(form) {=0A=
	for (var i =3D 0; i < form.elements.length; i++) {=0A=
		var element =3D form.elements[i];=0A=
		if (element.type !=3D "hidden" && !element.disabled) {=0A=
			element.focus();=0A=
			break;=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function checkSiblingElement(object) {=0A=
	var parent =3D object.parentNode;=0A=
	var sibling =3D parent.getElementsByTagName('label');=0A=
	var label =3D sibling[0];=0A=
	var inputs =3D label.getElementsByTagName('input');=0A=
	var input =3D inputs[0];=0A=
	=0A=
	if (!input.checked) {=0A=
		checkElement(label, input);=0A=
	}=0A=
	=0A=
	return true;=0A=
}=0A=
=0A=
function optionToggle(label) {=0A=
=0A=
	var inputChilds =3D label.getElementsByTagName('input');=0A=
	=0A=
	// In theory, there should be one and only one input within a label =
element=0A=
	var input =3D inputChilds[0];=0A=
	if (input.type =3D=3D 'checkbox') {=0A=
		if (input.checked) {=0A=
			uncheckElement(label, input);=0A=
		} else {=0A=
			checkElement(label, input);=0A=
		}=0A=
	} else if (input.type =3D=3D'radio') {=0A=
		if (!input.checked) {=0A=
			checkElement(label, input);=0A=
		}=0A=
	} else {=0A=
		return false;=0A=
	}=0A=
	=0A=
	return true;=0A=
}=0A=
=0A=
function checkElement(label, input) {=0A=
	// In the case of a radio button, we need to=0A=
	// toggle the image of the other button that=0A=
	// was selected within the same group=0A=
	if (input.type =3D=3D 'radio') {=0A=
		checkRadioElement(label, input)=0A=
	} else {=0A=
		input.checked =3D true;=0A=
		label.style.backgroundPosition =3D "left -20px";=0A=
		=0A=
		//$(input).fireEvent('change');=0A=
		if (document.createEvent) {=0A=
			var eventObj =3D document.createEvent('HTMLEvents');=0A=
			eventObj.initEvent('change', false, false);=0A=
			input.dispatchEvent(eventObj);=0A=
		} else if (document.createEventObject) {=0A=
			try {=0A=
				input.fireEvent('change');=0A=
			} catch (e) {=0A=
				input.fireEvent('onchange');=0A=
			}=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function uncheckElement(label, input) {=0A=
	input.checked =3D false;=0A=
	label.style.backgroundPosition =3D "-20px top";=0A=
	//$(input).fireEvent('change');=0A=
	=0A=
	if (document.createEvent) {=0A=
		var eventObj =3D document.createEvent('HTMLEvents');=0A=
		eventObj.initEvent('change', false, false);=0A=
		input.dispatchEvent(eventObj);=0A=
	} else if (document.createEventObject) {=0A=
		try {=0A=
			input.fireEvent('change');=0A=
		} catch (e) {=0A=
			input.fireEvent('onchange');=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function checkRadioElement(label, input) {=0A=
	disableOtherRadio(input);=0A=
	input.checked =3D true;=0A=
	label.style.backgroundPosition =3D "left -20px";=0A=
	//$(input).fireEvent('change');=0A=
	=0A=
	if (document.createEvent) {=0A=
		var eventObj =3D document.createEvent('HTMLEvents');=0A=
		eventObj.initEvent('change', false, false);=0A=
		input.dispatchEvent(eventObj);=0A=
	} else if (document.createEventObject) {=0A=
		try {=0A=
			input.fireEvent('change');=0A=
		} catch (e) {=0A=
			input.fireEvent('onchange');=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function getSameRadioGroup(groupName) {=0A=
	var inputs =3D document.getElementsByTagName('input');=0A=
	var group =3D new Array();=0A=
	=0A=
	for (var i =3D 0; i < inputs.length; i++) {=0A=
		var input =3D inputs[i];=0A=
		if (input.name =3D=3D groupName) {=0A=
			group.push(input);=0A=
		}=0A=
	}=0A=
	=0A=
	return group;=0A=
}=0A=
=0A=
function disableOtherRadio(currentRadio) {=0A=
	var group =3D getSameRadioGroup(currentRadio.name);=0A=
	for (var i=3D0; i < group.length; i++) {=0A=
		var input =3D group[i];=0A=
		var inputLabel =3D input.parentNode;=0A=
		if (input.checked && input !=3D currentRadio) {=0A=
			uncheckElement(inputLabel, input)=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
/* DEPRECATED */=0A=
function selectAllJurisdictions() {=0A=
	selectAllCheckboxes('jurisdictionBox', '');=0A=
	//console.log("Calling a deprecated function, =
selectAllJurisdictions()");=0A=
}=0A=
=0A=
=0A=
/* DEPRECATED */=0A=
function unselectAllJurisdictions() {=0A=
	unselectAllCheckboxes('jurisdictionBox');=0A=
	//console.log("Calling a deprecated function, =
unselectAllJurisdictions()");=0A=
}=0A=
=0A=
=0A=
/*=0A=
	Select all the checkboxes within the given obj=0A=
	The section is a div of class section, to limit to the checkboxes=0A=
	of the section only. It is optional.=0A=
	The parentClass is optional. If given, it will=0A=
	check that the parent node has the given class=0A=
	attribute before doing anything to the checkbox.=0A=
*/=0A=
function selectAllCheckboxes(obj, section, parentClass) {=0A=
	var theElement =3D getObj(obj);=0A=
	var labels =3D getAllLabels(theElement, section);=0A=
=0A=
	for (var i =3D 0; i < labels.length; i++) {=0A=
		var label =3D $(labels[i]);=0A=
		var input =3D label.getFirst();=0A=
		var parent =3D label.getParent();=0A=
		var valid =3D parentClass !=3D null ? =
parent.className.indexOf(parentClass) >=3D 0 : true;=0A=
		=0A=
		if (valid && !input.checked) {=0A=
			checkElement(label, input);=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
/*=0A=
	Deselect all the checkboxes within the given obj=0A=
*/=0A=
function unselectAllCheckboxes(obj, section) {=0A=
	var theElement =3D getObj(obj);=0A=
	var labels =3D getAllLabels(theElement, section);=0A=
=0A=
	for (var i =3D 0; i < labels.length; i++) {=0A=
		var label =3D $(labels[i]);=0A=
		var input =3D label.getFirst();=0A=
		if (input.checked) {=0A=
			uncheckElement(label, input);=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
/*=0A=
	Get the labels from one or more div of class "section"=0A=
*/=0A=
function getAllLabels(theElement, section) {=0A=
	var labels =3D new Array();=0A=
	=0A=
	if (section !=3D null && section !=3D '') {=0A=
		var sections =3D theElement.getElementsByTagName('div');=0A=
		for (var i =3D 0; i < sections.length; i++) {=0A=
			if (sections[i].className =3D=3D section) {=0A=
				labels =3D concat(labels, sections[i].getElementsByTagName('label'));=0A=
			}=0A=
		}=0A=
	} else {=0A=
		labels =3D theElement.getElementsByTagName('label');=0A=
	}=0A=
=0A=
	return labels;=0A=
}=0A=
=0A=
=0A=
function concat(arrayA, arrayB) {=0A=
	for (var i =3D 0; i < arrayB.length; i++) {=0A=
		arrayA.push(arrayB[i]);=0A=
	}=0A=
	=0A=
	return arrayA;=0A=
}=0A=
=0A=
/* For the comments to validate the feedback form */=0A=
function validateFeedback(form, redirectURL) {=0A=
	var theForm =3D form;=0A=
	var language =3D theForm['language'].value;=0A=
	var message =3D theForm['message'].value;=0A=
=0A=
	if (message.replace(/\s/g, '') =3D=3D '') {=0A=
		if (language =3D=3D 'en') {=0A=
			alert("Please enter a message before submitting your request.");=0A=
		} else {=0A=
			alert("S'il-vous-pla=C3=AEt, veuillez entrer un message avant de =
soumettre votre requ=C3=AAte.");=0A=
		}=0A=
		return false;=0A=
	} =0A=
	=0A=
	theForm.action =3D redirectURL;=0A=
	theForm.submit();=0A=
	return true;=0A=
}=0A=
=0A=
=0A=
=0A=
/* For the splash page */=0A=
function showText(textBox, otherBox) {=0A=
	hide(otherBox, 'none');=0A=
	show(textBox, 'block');=0A=
	return;	=0A=
}=0A=
=0A=
=0A=
=0A=
function getLanguage() {=0A=
	var pathname =3D window.location.pathname;=0A=
	=0A=
	if (pathname.indexOf("/fr/") !=3D -1) {=0A=
		return "fr";=0A=
	} else {=0A=
		return "en";=0A=
	}=0A=
}=0A=
=0A=
function openWindow(link) {=0A=
	window.open(link, "_blank", "toolbar=3Dno, location=3Dno, =
directories=3Dno, status=3Dno, menubar=3Dno, scrollbars=3Dyes, =
resizable=3Dyes, copyhistory=3Dno, width=3D450, height=3D500");=0A=
}=0A=
=0A=
window.onload =3D init;=0A=
=0A=
/*=0A=
Script: Core.js=0A=
	MooTools - My Object Oriented JavaScript Tools.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
=0A=
Copyright:=0A=
	Copyright (c) 2006-2007 [Valerio Proietti](http://mad4milk.net/).=0A=
=0A=
Code & Documentation:=0A=
	[The MooTools production team](http://mootools.net/developers/).=0A=
=0A=
Inspiration:=0A=
	- Class implementation inspired by =
[Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) =
2006 Dean Edwards, [GNU Lesser General Public =
License](http://opensource.org/licenses/lgpl-license.php)=0A=
	- Some functionality inspired by [Prototype.js](http://prototypejs.org) =
Copyright (c) 2005-2007 Sam Stephenson, [MIT =
License](http://opensource.org/licenses/mit-license.php)=0A=
*/=0A=
=0A=
var MooTools =3D {=0A=
	'version': '1.2.0',=0A=
	'build': ''=0A=
};=0A=
      =0A=
var Native =3D function(options){=0A=
	options =3D options || {};=0A=
=0A=
	var afterImplement =3D options.afterImplement || function(){};=0A=
	var generics =3D options.generics;=0A=
	generics =3D (generics !=3D=3D false);=0A=
	var legacy =3D options.legacy;=0A=
	var initialize =3D options.initialize;=0A=
	var protect =3D options.protect;=0A=
	var name =3D options.name;=0A=
=0A=
	var object =3D initialize || legacy;=0A=
=0A=
	object.constructor =3D Native;=0A=
	object.$family =3D {name: 'native'};=0A=
	if (legacy && initialize) object.prototype =3D legacy.prototype;=0A=
	object.prototype.constructor =3D object;=0A=
=0A=
	if (name){=0A=
		var family =3D name.toLowerCase();=0A=
		object.prototype.$family =3D {name: family};=0A=
		Native.typize(object, family);=0A=
	}=0A=
=0A=
	var add =3D function(obj, name, method, force){=0A=
		if (!protect || force || !obj.prototype[name]) obj.prototype[name] =3D =
method;=0A=
		if (generics) Native.genericize(obj, name, protect);=0A=
		afterImplement.call(obj, name, method);=0A=
		return obj;=0A=
	};=0A=
	=0A=
	object.implement =3D function(a1, a2, a3){=0A=
		if (typeof a1 =3D=3D 'string') return add(this, a1, a2, a3);=0A=
		for (var p in a1) add(this, p, a1[p], a2);=0A=
		return this;=0A=
	};=0A=
	=0A=
	object.alias =3D function(a1, a2, a3){=0A=
		if (typeof a1 =3D=3D 'string'){=0A=
			a1 =3D this.prototype[a1];=0A=
			if (a1) add(this, a2, a1, a3);=0A=
		} else {=0A=
			for (var a in a1) this.alias(a, a1[a], a2);=0A=
		}=0A=
		return this;=0A=
	};=0A=
=0A=
	return object;=0A=
};=0A=
=0A=
Native.implement =3D function(objects, properties){=0A=
	for (var i =3D 0, l =3D objects.length; i < l; i++) =
objects[i].implement(properties);=0A=
};=0A=
=0A=
Native.genericize =3D function(object, property, check){=0A=
	if ((!check || !object[property]) && typeof object.prototype[property] =
=3D=3D 'function') object[property] =3D function(){=0A=
		var args =3D Array.prototype.slice.call(arguments);=0A=
		return object.prototype[property].apply(args.shift(), args);=0A=
	};=0A=
};=0A=
=0A=
Native.typize =3D function(object, family){=0A=
	if (!object.type) object.type =3D function(item){=0A=
		return ($type(item) =3D=3D=3D family);=0A=
	};=0A=
};=0A=
=0A=
Native.alias =3D function(objects, a1, a2, a3){=0A=
	for (var i =3D 0, j =3D objects.length; i < j; i++) =
objects[i].alias(a1, a2, a3);=0A=
};=0A=
=0A=
(function(objects){=0A=
	for (var name in objects) Native.typize(objects[name], name);=0A=
})({'boolean': Boolean, 'native': Native, 'object': Object});=0A=
=0A=
(function(objects){=0A=
	for (var name in objects) new Native({name: name, initialize: =
objects[name], protect: true});=0A=
})({'String': String, 'Function': Function, 'Number': Number, 'Array': =
Array, 'RegExp': RegExp, 'Date': Date});=0A=
=0A=
(function(object, methods){=0A=
	for (var i =3D methods.length; i--; i) Native.genericize(object, =
methods[i], true);=0A=
	return arguments.callee;=0A=
})=0A=
(Array, ['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift', =
'concat', 'join', 'slice', 'toString', 'valueOf', 'indexOf', =
'lastIndexOf'])=0A=
(String, ['charAt', 'charCodeAt', 'concat', 'indexOf', 'lastIndexOf', =
'match', 'replace', 'search', 'slice', 'split', 'substr', 'substring', =
'toLowerCase', 'toUpperCase', 'valueOf']);=0A=
=0A=
function $chk(obj){=0A=
	return !!(obj || obj =3D=3D=3D 0);=0A=
};=0A=
=0A=
function $clear(timer){=0A=
	clearTimeout(timer);=0A=
	clearInterval(timer);=0A=
	return null;=0A=
};=0A=
=0A=
function $defined(obj){=0A=
	return (obj !=3D undefined);=0A=
};=0A=
=0A=
function $empty(){};=0A=
=0A=
function $arguments(i){=0A=
	return function(){=0A=
		return arguments[i];=0A=
	};=0A=
};=0A=
=0A=
function $lambda(value){=0A=
	return (typeof value =3D=3D 'function') ? value : function(){=0A=
		return value;=0A=
	};=0A=
};=0A=
=0A=
function $extend(original, extended){=0A=
	for (var key in (extended || {})) original[key] =3D extended[key];=0A=
	return original;=0A=
};=0A=
=0A=
function $unlink(object){=0A=
	var unlinked;=0A=
	=0A=
	switch ($type(object)){=0A=
		case 'object':=0A=
			unlinked =3D {};=0A=
			for (var p in object) unlinked[p] =3D $unlink(object[p]);=0A=
		break;=0A=
		case 'hash':=0A=
			unlinked =3D $unlink(object.getClean());=0A=
		break;=0A=
		case 'array':=0A=
			unlinked =3D [];=0A=
			for (var i =3D 0, l =3D object.length; i < l; i++) unlinked[i] =3D =
$unlink(object[i]);=0A=
		break;=0A=
		default: return object;=0A=
	}=0A=
	=0A=
	return unlinked;=0A=
};=0A=
=0A=
function $merge(){=0A=
	var mix =3D {};=0A=
	for (var i =3D 0, l =3D arguments.length; i < l; i++){=0A=
		var object =3D arguments[i];=0A=
		if ($type(object) !=3D 'object') continue;=0A=
		for (var key in object){=0A=
			var op =3D object[key], mp =3D mix[key];=0A=
			mix[key] =3D (mp && $type(op) =3D=3D 'object' && $type(mp) =3D=3D =
'object') ? $merge(mp, op) : $unlink(op);=0A=
		}=0A=
	}=0A=
	return mix;=0A=
};=0A=
=0A=
function $pick(){=0A=
	for (var i =3D 0, l =3D arguments.length; i < l; i++){=0A=
		if (arguments[i] !=3D undefined) return arguments[i];=0A=
	}=0A=
	return null;=0A=
};=0A=
=0A=
function $random(min, max){=0A=
	return Math.floor(Math.random() * (max - min + 1) + min);=0A=
};=0A=
=0A=
function $splat(obj){=0A=
	var type =3D $type(obj);=0A=
	return (type) ? ((type !=3D 'array' && type !=3D 'arguments') ? [obj] : =
obj) : [];=0A=
};=0A=
=0A=
var $time =3D Date.now || function(){=0A=
	return new Date().getTime();=0A=
};=0A=
=0A=
function $try(){=0A=
	for (var i =3D 0, l =3D arguments.length; i < l; i++){=0A=
		try {=0A=
			return arguments[i]();=0A=
		} catch(e){}=0A=
	}=0A=
	return null;=0A=
};=0A=
=0A=
function $type(obj){=0A=
	if (obj =3D=3D undefined) return false;=0A=
	if (obj.$family) return (obj.$family.name =3D=3D 'number' && =
!isFinite(obj)) ? false : obj.$family.name;=0A=
	if (obj.nodeName){=0A=
		switch (obj.nodeType){=0A=
			case 1: return 'element';=0A=
			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';=0A=
		}=0A=
	} else if (typeof obj.length =3D=3D 'number'){=0A=
		if (obj.callee) return 'arguments';=0A=
		else if (obj.item) return 'collection';=0A=
	}=0A=
	return typeof obj;=0A=
};=0A=
=0A=
var Hash =3D new Native({=0A=
=0A=
	name: 'Hash',=0A=
=0A=
	initialize: function(object){=0A=
		if ($type(object) =3D=3D 'hash') object =3D $unlink(object.getClean());=0A=
		for (var key in object) this[key] =3D object[key];=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Hash.implement({=0A=
	=0A=
	getLength: function(){=0A=
		var length =3D 0;=0A=
		for (var key in this){=0A=
			if (this.hasOwnProperty(key)) length++;=0A=
		}=0A=
		return length;=0A=
	},=0A=
=0A=
	forEach: function(fn, bind){=0A=
		for (var key in this){=0A=
			if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);=0A=
		}=0A=
	},=0A=
	=0A=
	getClean: function(){=0A=
		var clean =3D {};=0A=
		for (var key in this){=0A=
			if (this.hasOwnProperty(key)) clean[key] =3D this[key];=0A=
		}=0A=
		return clean;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Hash.alias('forEach', 'each');=0A=
=0A=
function $H(object){=0A=
	return new Hash(object);=0A=
};=0A=
=0A=
Array.implement({=0A=
=0A=
	forEach: function(fn, bind){=0A=
		for (var i =3D 0, l =3D this.length; i < l; i++) fn.call(bind, =
this[i], i, this);=0A=
	}=0A=
=0A=
});=0A=
=0A=
Array.alias('forEach', 'each');=0A=
=0A=
function $A(iterable){=0A=
	if (iterable.item){=0A=
		var array =3D [];=0A=
		for (var i =3D 0, l =3D iterable.length; i < l; i++) array[i] =3D =
iterable[i];=0A=
		return array;=0A=
	}=0A=
	return Array.prototype.slice.call(iterable);=0A=
};=0A=
=0A=
function $each(iterable, fn, bind){=0A=
	var type =3D $type(iterable);=0A=
	((type =3D=3D 'arguments' || type =3D=3D 'collection' || type =3D=3D =
'array') ? Array : Hash).each(iterable, fn, bind);=0A=
};=0A=
=0A=
=0A=
/*=0A=
Script: Browser.js=0A=
	The Browser Core. Contains Browser initialization, Window and Document, =
and the Browser Hash.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Browser =3D new Hash({=0A=
	Engine: {name: 'unknown', version: ''},=0A=
	Platform: {name: (navigator.platform.match(/mac|win|linux/i) || =
['other'])[0].toLowerCase()},=0A=
	Features: {xpath: !!(document.evaluate), air: !!(window.runtime)},=0A=
	Plugins: {}=0A=
});=0A=
=0A=
if (window.opera) Browser.Engine =3D {name: 'presto', version: =
(document.getElementsByClassName) ? 950 : 925};=0A=
else if (window.ActiveXObject) Browser.Engine =3D {name: 'trident', =
version: (window.XMLHttpRequest) ? 5 : 4};=0A=
else if (!navigator.taintEnabled) Browser.Engine =3D {name: 'webkit', =
version: (Browser.Features.xpath) ? 420 : 419};=0A=
else if (document.getBoxObjectFor !=3D null) Browser.Engine =3D {name: =
'gecko', version: (document.getElementsByClassName) ? 19 : 18};=0A=
Browser.Engine[Browser.Engine.name] =3D =
Browser.Engine[Browser.Engine.name + Browser.Engine.version] =3D true;=0A=
=0A=
if (window.orientation !=3D undefined) Browser.Platform.name =3D 'ipod';=0A=
=0A=
Browser.Platform[Browser.Platform.name] =3D true;=0A=
=0A=
Browser.Request =3D function(){=0A=
	return $try(function(){=0A=
		return new XMLHttpRequest();=0A=
	}, function(){=0A=
		return new ActiveXObject('MSXML2.XMLHTTP');=0A=
	});=0A=
};=0A=
=0A=
Browser.Features.xhr =3D !!(Browser.Request());=0A=
=0A=
Browser.Plugins.Flash =3D (function(){=0A=
	var version =3D ($try(function(){=0A=
		return navigator.plugins['Shockwave Flash'].description;=0A=
	}, function(){=0A=
		return new =
ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');=0A=
	}) || '0 r0').match(/\d+/g);=0A=
	return {version: parseInt(version[0] || 0 + '.' + version[1] || 0), =
build: parseInt(version[2] || 0)};=0A=
})();=0A=
=0A=
function $exec(text){=0A=
	if (!text) return text;=0A=
	if (window.execScript){=0A=
		window.execScript(text);=0A=
	} else {=0A=
		var script =3D document.createElement('script');=0A=
		script.setAttribute('type', 'text/javascript');=0A=
		script.text =3D text;=0A=
		document.head.appendChild(script);=0A=
		document.head.removeChild(script);=0A=
	}=0A=
	return text;=0A=
};=0A=
=0A=
Native.UID =3D 1;=0A=
=0A=
var $uid =3D (Browser.Engine.trident) ? function(item){=0A=
	return (item.uid || (item.uid =3D [Native.UID++]))[0];=0A=
} : function(item){=0A=
	return item.uid || (item.uid =3D Native.UID++);=0A=
};=0A=
=0A=
var Window =3D new Native({=0A=
=0A=
	name: 'Window',=0A=
=0A=
	legacy: (Browser.Engine.trident) ? null: window.Window,=0A=
=0A=
	initialize: function(win){=0A=
		$uid(win);=0A=
		if (!win.Element){=0A=
			win.Element =3D $empty;=0A=
			if (Browser.Engine.webkit) win.document.createElement("iframe"); =
//fixes safari 2=0A=
			win.Element.prototype =3D (Browser.Engine.webkit) ? =
window["[[DOMElement.prototype]]"] : {};=0A=
		}=0A=
		return $extend(win, Window.Prototype);=0A=
	},=0A=
=0A=
	afterImplement: function(property, value){=0A=
		window[property] =3D Window.Prototype[property] =3D value;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Window.Prototype =3D {$family: {name: 'window'}};=0A=
=0A=
new Window(window);=0A=
=0A=
var Document =3D new Native({=0A=
=0A=
	name: 'Document',=0A=
=0A=
	legacy: (Browser.Engine.trident) ? null: window.Document,=0A=
=0A=
	initialize: function(doc){=0A=
		$uid(doc);=0A=
		doc.head =3D doc.getElementsByTagName('head')[0];=0A=
		doc.html =3D doc.getElementsByTagName('html')[0];=0A=
		doc.window =3D doc.defaultView || doc.parentWindow;=0A=
		if (Browser.Engine.trident4) $try(function(){=0A=
			doc.execCommand("BackgroundImageCache", false, true);=0A=
		});=0A=
		return $extend(doc, Document.Prototype);=0A=
	},=0A=
=0A=
	afterImplement: function(property, value){=0A=
		document[property] =3D Document.Prototype[property] =3D value;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Document.Prototype =3D {$family: {name: 'document'}};=0A=
=0A=
new Document(document);=0A=
=0A=
/*=0A=
Script: Array.js=0A=
	Contains Array Prototypes like copy, each, contains, and remove.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Array.implement({=0A=
=0A=
	every: function(fn, bind){=0A=
		for (var i =3D 0, l =3D this.length; i < l; i++){=0A=
			if (!fn.call(bind, this[i], i, this)) return false;=0A=
		}=0A=
		return true;=0A=
	},=0A=
=0A=
	filter: function(fn, bind){=0A=
		var results =3D [];=0A=
		for (var i =3D 0, l =3D this.length; i < l; i++){=0A=
			if (fn.call(bind, this[i], i, this)) results.push(this[i]);=0A=
		}=0A=
		return results;=0A=
	},=0A=
	=0A=
	clean: function() {=0A=
		return this.filter($defined);=0A=
	},=0A=
=0A=
	indexOf: function(item, from){=0A=
		var len =3D this.length;=0A=
		for (var i =3D (from < 0) ? Math.max(0, len + from) : from || 0; i < =
len; i++){=0A=
			if (this[i] =3D=3D=3D item) return i;=0A=
		}=0A=
		return -1;=0A=
	},=0A=
=0A=
	map: function(fn, bind){=0A=
		var results =3D [];=0A=
		for (var i =3D 0, l =3D this.length; i < l; i++) results[i] =3D =
fn.call(bind, this[i], i, this);=0A=
		return results;=0A=
	},=0A=
=0A=
	some: function(fn, bind){=0A=
		for (var i =3D 0, l =3D this.length; i < l; i++){=0A=
			if (fn.call(bind, this[i], i, this)) return true;=0A=
		}=0A=
		return false;=0A=
	},=0A=
=0A=
	associate: function(keys){=0A=
		var obj =3D {}, length =3D Math.min(this.length, keys.length);=0A=
		for (var i =3D 0; i < length; i++) obj[keys[i]] =3D this[i];=0A=
		return obj;=0A=
	},=0A=
=0A=
	link: function(object){=0A=
		var result =3D {};=0A=
		for (var i =3D 0, l =3D this.length; i < l; i++){=0A=
			for (var key in object){=0A=
				if (object[key](this[i])){=0A=
					result[key] =3D this[i];=0A=
					delete object[key];=0A=
					break;=0A=
				}=0A=
			}=0A=
		}=0A=
		return result;=0A=
	},=0A=
=0A=
	contains: function(item, from){=0A=
		return this.indexOf(item, from) !=3D -1;=0A=
	},=0A=
=0A=
	extend: function(array){=0A=
		for (var i =3D 0, j =3D array.length; i < j; i++) this.push(array[i]);=0A=
		return this;=0A=
	},=0A=
=0A=
	getLast: function(){=0A=
		return (this.length) ? this[this.length - 1] : null;=0A=
	},=0A=
=0A=
	getRandom: function(){=0A=
		return (this.length) ? this[$random(0, this.length - 1)] : null;=0A=
	},=0A=
=0A=
	include: function(item){=0A=
		if (!this.contains(item)) this.push(item);=0A=
		return this;=0A=
	},=0A=
=0A=
	combine: function(array){=0A=
		for (var i =3D 0, l =3D array.length; i < l; i++) =
this.include(array[i]);=0A=
		return this;=0A=
	},=0A=
=0A=
	erase: function(item){=0A=
		for (var i =3D this.length; i--; i){=0A=
			if (this[i] =3D=3D=3D item) this.splice(i, 1);=0A=
		}=0A=
		return this;=0A=
	},=0A=
=0A=
	empty: function(){=0A=
		this.length =3D 0;=0A=
		return this;=0A=
	},=0A=
=0A=
	flatten: function(){=0A=
		var array =3D [];=0A=
		for (var i =3D 0, l =3D this.length; i < l; i++){=0A=
			var type =3D $type(this[i]);=0A=
			if (!type) continue;=0A=
			array =3D array.concat((type =3D=3D 'array' || type =3D=3D =
'collection' || type =3D=3D 'arguments') ? Array.flatten(this[i]) : =
this[i]);=0A=
		}=0A=
		return array;=0A=
	},=0A=
=0A=
	hexToRgb: function(array){=0A=
		if (this.length !=3D 3) return null;=0A=
		var rgb =3D this.map(function(value){=0A=
			if (value.length =3D=3D 1) value +=3D value;=0A=
			return value.toInt(16);=0A=
		});=0A=
		return (array) ? rgb : 'rgb(' + rgb + ')';=0A=
	},=0A=
=0A=
	rgbToHex: function(array){=0A=
		if (this.length < 3) return null;=0A=
		if (this.length =3D=3D 4 && this[3] =3D=3D 0 && !array) return =
'transparent';=0A=
		var hex =3D [];=0A=
		for (var i =3D 0; i < 3; i++){=0A=
			var bit =3D (this[i] - 0).toString(16);=0A=
			hex.push((bit.length =3D=3D 1) ? '0' + bit : bit);=0A=
		}=0A=
		return (array) ? hex : '#' + hex.join('');=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*
Script: Function.js
	Contains Function Prototypes like create, bind, pass, and delay.

License:
	MIT-style license.
*/

Function.implement({

	extend: function(properties){
		for (var property in properties) this[property] =3D =
properties[property];
		return this;
	},

	create: function(options){
		var self =3D this;
		options =3D options || {};
		return function(event){
			var args =3D options.arguments;
			args =3D (args !=3D undefined) ? $splat(args) : =
Array.slice(arguments, (options.event) ? 1 : 0);
			if (options.event) args =3D [event || window.event].extend(args);
			var returns =3D function(){
				return self.apply(options.bind || null, args);
			};
			if (options.delay) return setTimeout(returns, options.delay);
			if (options.periodical) return setInterval(returns, =
options.periodical);
			if (options.attempt) return $try(returns);
			return returns();
		};
	},

	pass: function(args, bind){
		return this.create({arguments: args, bind: bind});
	},

	attempt: function(args, bind){
		return this.create({arguments: args, bind: bind, attempt: true})();
	},

	bind: function(bind, args){
		return this.create({bind: bind, arguments: args});
	},

	bindWithEvent: function(bind, args){
		return this.create({bind: bind, event: true, arguments: args});
	},

	delay: function(delay, bind, args){
		return this.create({delay: delay, bind: bind, arguments: args})();
	},

	periodical: function(interval, bind, args){
		return this.create({periodical: interval, bind: bind, arguments: =
args})();
	},

	run: function(args, bind){
		return this.apply(bind, $splat(args));
	}

});=0A=
=0A=
/*=0A=
Script: Number.js=0A=
	Contains Number Prototypes like limit, round, times, and ceil.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Number.implement({=0A=
=0A=
	limit: function(min, max){=0A=
		return Math.min(max, Math.max(min, this));=0A=
	},=0A=
=0A=
	round: function(precision){=0A=
		precision =3D Math.pow(10, precision || 0);=0A=
		return Math.round(this * precision) / precision;=0A=
	},=0A=
=0A=
	times: function(fn, bind){=0A=
		for (var i =3D 0; i < this; i++) fn.call(bind, i, this);=0A=
	},=0A=
=0A=
	toFloat: function(){=0A=
		return parseFloat(this);=0A=
	},=0A=
=0A=
	toInt: function(base){=0A=
		return parseInt(this, base || 10);=0A=
	}=0A=
=0A=
});=0A=
=0A=
Number.alias('times', 'each');=0A=
=0A=
(function(math){=0A=
	var methods =3D {};=0A=
	math.each(function(name){=0A=
		if (!Number[name]) methods[name] =3D function(){=0A=
			return Math[name].apply(null, [this].concat($A(arguments)));=0A=
		};=0A=
	});=0A=
	Number.implement(methods);=0A=
})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', =
'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);=0A=
=0A=
/*=0A=
Script: String.js=0A=
	Contains String Prototypes like camelCase, capitalize, test, and toInt.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
String.implement({=0A=
=0A=
	test: function(regex, params){=0A=
		return ((typeof regex =3D=3D 'string') ? new RegExp(regex, params) : =
regex).test(this);=0A=
	},=0A=
=0A=
	contains: function(string, separator){=0A=
		return (separator) ? (separator + this + separator).indexOf(separator =
+ string + separator) > -1 : this.indexOf(string) > -1;=0A=
	},=0A=
=0A=
	trim: function(){=0A=
		return this.replace(/^\s+|\s+$/g, '');=0A=
	},=0A=
=0A=
	clean: function(){=0A=
		return this.replace(/\s+/g, ' ').trim();=0A=
	},=0A=
=0A=
	camelCase: function(){=0A=
		return this.replace(/-\D/g, function(match){=0A=
			return match.charAt(1).toUpperCase();=0A=
		});=0A=
	},=0A=
=0A=
	hyphenate: function(){=0A=
		return this.replace(/[A-Z]/g, function(match){=0A=
			return ('-' + match.charAt(0).toLowerCase());=0A=
		});=0A=
	},=0A=
=0A=
	capitalize: function(){=0A=
		return this.replace(/\b[a-z]/g, function(match){=0A=
			return match.toUpperCase();=0A=
		});=0A=
	},=0A=
=0A=
	escapeRegExp: function(){=0A=
		return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');=0A=
	},=0A=
=0A=
	toInt: function(base){=0A=
		return parseInt(this, base || 10);=0A=
	},=0A=
=0A=
	toFloat: function(){=0A=
		return parseFloat(this);=0A=
	},=0A=
=0A=
	hexToRgb: function(array){=0A=
		var hex =3D this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);=0A=
		return (hex) ? hex.slice(1).hexToRgb(array) : null;=0A=
	},=0A=
=0A=
	rgbToHex: function(array){=0A=
		var rgb =3D this.match(/\d{1,3}/g);=0A=
		return (rgb) ? rgb.rgbToHex(array) : null;=0A=
	},=0A=
=0A=
	stripScripts: function(option){=0A=
		var scripts =3D '';=0A=
		var text =3D this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, =
function(){=0A=
			scripts +=3D arguments[1] + '\n';=0A=
			return '';=0A=
		});=0A=
		if (option =3D=3D=3D true) $exec(scripts);=0A=
		else if ($type(option) =3D=3D 'function') option(scripts, text);=0A=
		return text;=0A=
	},=0A=
=0A=
	substitute: function(object, regexp){=0A=
		return this.replace(regexp || (/\\?\{([^}]+)\}/g), function(match, =
name){=0A=
			if (match.charAt(0) =3D=3D '\\') return match.slice(1);=0A=
			return (object[name] !=3D undefined) ? object[name] : '';=0A=
		});=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*=0A=
Script: Hash.js=0A=
	Contains Hash Prototypes. Provides a means for overcoming the =
JavaScript practical impossibility of extending native Objects.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Hash.implement({=0A=
=0A=
	has: Object.prototype.hasOwnProperty,=0A=
=0A=
	keyOf: function(value){=0A=
		for (var key in this){=0A=
			if (this.hasOwnProperty(key) && this[key] =3D=3D=3D value) return key;=0A=
		}=0A=
		return null;=0A=
	},=0A=
=0A=
	hasValue: function(value){=0A=
		return (Hash.keyOf(this, value) !=3D=3D null);=0A=
	},=0A=
=0A=
	extend: function(properties){=0A=
		Hash.each(properties, function(value, key){=0A=
			Hash.set(this, key, value);=0A=
		}, this);=0A=
		return this;=0A=
	},=0A=
=0A=
	combine: function(properties){=0A=
		Hash.each(properties, function(value, key){=0A=
			Hash.include(this, key, value);=0A=
		}, this);=0A=
		return this;=0A=
	},=0A=
=0A=
	erase: function(key){=0A=
		if (this.hasOwnProperty(key)) delete this[key];=0A=
		return this;=0A=
	},=0A=
=0A=
	get: function(key){=0A=
		return (this.hasOwnProperty(key)) ? this[key] : null;=0A=
	},=0A=
=0A=
	set: function(key, value){=0A=
		if (!this[key] || this.hasOwnProperty(key)) this[key] =3D value;=0A=
		return this;=0A=
	},=0A=
=0A=
	empty: function(){=0A=
		Hash.each(this, function(value, key){=0A=
			delete this[key];=0A=
		}, this);=0A=
		return this;=0A=
	},=0A=
=0A=
	include: function(key, value){=0A=
		var k =3D this[key];=0A=
		if (k =3D=3D undefined) this[key] =3D value;=0A=
		return this;=0A=
	},=0A=
=0A=
	map: function(fn, bind){=0A=
		var results =3D new Hash;=0A=
		Hash.each(this, function(value, key){=0A=
			results.set(key, fn.call(bind, value, key, this));=0A=
		}, this);=0A=
		return results;=0A=
	},=0A=
=0A=
	filter: function(fn, bind){=0A=
		var results =3D new Hash;=0A=
		Hash.each(this, function(value, key){=0A=
			if (fn.call(bind, value, key, this)) results.set(key, value);=0A=
		}, this);=0A=
		return results;=0A=
	},=0A=
=0A=
	every: function(fn, bind){=0A=
		for (var key in this){=0A=
			if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) =
return false;=0A=
		}=0A=
		return true;=0A=
	},=0A=
=0A=
	some: function(fn, bind){=0A=
		for (var key in this){=0A=
			if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return =
true;=0A=
		}=0A=
		return false;=0A=
	},=0A=
=0A=
	getKeys: function(){=0A=
		var keys =3D [];=0A=
		Hash.each(this, function(value, key){=0A=
			keys.push(key);=0A=
		});=0A=
		return keys;=0A=
	},=0A=
=0A=
	getValues: function(){=0A=
		var values =3D [];=0A=
		Hash.each(this, function(value){=0A=
			values.push(value);=0A=
		});=0A=
		return values;=0A=
	},=0A=
	=0A=
	toQueryString: function(base){=0A=
		var queryString =3D [];=0A=
		Hash.each(this, function(value, key){=0A=
			if (base) key =3D base + '[' + key + ']';=0A=
			var result;=0A=
			switch ($type(value)){=0A=
				case 'object': result =3D Hash.toQueryString(value, key); break;=0A=
				case 'array':=0A=
					var qs =3D {};=0A=
					value.each(function(val, i){=0A=
						qs[i] =3D val;=0A=
					});=0A=
					result =3D Hash.toQueryString(qs, key);=0A=
				break;=0A=
				default: result =3D key + '=3D' + encodeURIComponent(value);=0A=
			}=0A=
			if (value !=3D undefined) queryString.push(result);=0A=
		});=0A=
		=0A=
		return queryString.join('&');=0A=
	}=0A=
=0A=
});=0A=
=0A=
Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});=0A=
=0A=
/*=0A=
Script: Event.js=0A=
	Contains the Event Native, to make the event object completely =
crossbrowser.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Event =3D new Native({=0A=
=0A=
	name: 'Event',=0A=
=0A=
	initialize: function(event, win){=0A=
		win =3D win || window;=0A=
		var doc =3D win.document;=0A=
		event =3D event || win.event;=0A=
		if (event.$extended) return event;=0A=
		this.$extended =3D true;=0A=
		var type =3D event.type;=0A=
		var target =3D event.target || event.srcElement;=0A=
		while (target && target.nodeType =3D=3D 3) target =3D =
target.parentNode;=0A=
		=0A=
		if (type.test(/key/)){=0A=
			var code =3D event.which || event.keyCode;=0A=
			var key =3D Event.Keys.keyOf(code);=0A=
			if (type =3D=3D 'keydown'){=0A=
				var fKey =3D code - 111;=0A=
				if (fKey > 0 && fKey < 13) key =3D 'f' + fKey;=0A=
			}=0A=
			key =3D key || String.fromCharCode(code).toLowerCase();=0A=
		} else if (type.match(/(click|mouse|menu)/i)){=0A=
			doc =3D (!doc.compatMode || doc.compatMode =3D=3D 'CSS1Compat') ? =
doc.html : doc.body;=0A=
			var page =3D {=0A=
				x: event.pageX || event.clientX + doc.scrollLeft,=0A=
				y: event.pageY || event.clientY + doc.scrollTop=0A=
			};=0A=
			var client =3D {=0A=
				x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,=0A=
				y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY=0A=
			};=0A=
			if (type.match(/DOMMouseScroll|mousewheel/)){=0A=
				var wheel =3D (event.wheelDelta) ? event.wheelDelta / 120 : =
-(event.detail || 0) / 3;=0A=
			}=0A=
			var rightClick =3D (event.which =3D=3D 3) || (event.button =3D=3D 2);=0A=
			var related =3D null;=0A=
			if (type.match(/over|out/)){=0A=
				switch (type){=0A=
					case 'mouseover': related =3D event.relatedTarget || =
event.fromElement; break;=0A=
					case 'mouseout': related =3D event.relatedTarget || event.toElement;=0A=
				}=0A=
				if (!(function(){=0A=
					while (related && related.nodeType =3D=3D 3) related =3D =
related.parentNode;=0A=
					return true;=0A=
				}).create({attempt: Browser.Engine.gecko})()) related =3D false;=0A=
			}=0A=
		}=0A=
=0A=
		return $extend(this, {=0A=
			event: event,=0A=
			type: type,=0A=
			=0A=
			page: page,=0A=
			client: client,=0A=
			rightClick: rightClick,=0A=
			=0A=
			wheel: wheel,=0A=
			=0A=
			relatedTarget: related,=0A=
			target: target,=0A=
			=0A=
			code: code,=0A=
			key: key,=0A=
			=0A=
			shift: event.shiftKey,=0A=
			control: event.ctrlKey,=0A=
			alt: event.altKey,=0A=
			meta: event.metaKey=0A=
		});=0A=
	}=0A=
=0A=
});=0A=
=0A=
Event.Keys =3D new Hash({=0A=
	'enter': 13,=0A=
	'up': 38,=0A=
	'down': 40,=0A=
	'left': 37,=0A=
	'right': 39,=0A=
	'esc': 27,=0A=
	'space': 32,=0A=
	'backspace': 8,=0A=
	'tab': 9,=0A=
	'delete': 46=0A=
});=0A=
=0A=
Event.implement({=0A=
=0A=
	stop: function(){=0A=
		return this.stopPropagation().preventDefault();=0A=
	},=0A=
=0A=
	stopPropagation: function(){=0A=
		if (this.event.stopPropagation) this.event.stopPropagation();=0A=
		else this.event.cancelBubble =3D true;=0A=
		return this;=0A=
	},=0A=
=0A=
	preventDefault: function(){=0A=
		if (this.event.preventDefault) this.event.preventDefault();=0A=
		else this.event.returnValue =3D false;=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*=0A=
Script: Class.js=0A=
	Contains the Class Function for easily creating, extending, and =
implementing reusable Classes.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Class =3D new Native({=0A=
=0A=
	name: 'Class',=0A=
=0A=
	initialize: function(properties){=0A=
		properties =3D properties || {};=0A=
		var klass =3D function(empty){=0A=
			for (var key in this) this[key] =3D $unlink(this[key]);=0A=
			for (var mutator in Class.Mutators){=0A=
				if (!this[mutator]) continue;=0A=
				Class.Mutators[mutator](this, this[mutator]);=0A=
				delete this[mutator];=0A=
			}=0A=
=0A=
			this.constructor =3D klass;=0A=
			if (empty =3D=3D=3D $empty) return this;=0A=
			=0A=
			var self =3D (this.initialize) ? this.initialize.apply(this, =
arguments) : this;=0A=
			if (this.options && this.options.initialize) =
this.options.initialize.call(this);=0A=
			return self;=0A=
		};=0A=
=0A=
		$extend(klass, this);=0A=
		klass.constructor =3D Class;=0A=
		klass.prototype =3D properties;=0A=
		return klass;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Class.implement({=0A=
=0A=
	implement: function(){=0A=
		Class.Mutators.Implements(this.prototype, Array.slice(arguments));=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Class.Mutators =3D {=0A=
  =0A=
  Implements: function(self, klasses){=0A=
  	$splat(klasses).each(function(klass){=0A=
  		$extend(self, ($type(klass) =3D=3D 'class') ? new klass($empty) : =
klass);=0A=
  	});=0A=
  },=0A=
  =0A=
  Extends: function(self, klass){=0A=
  	var instance =3D new klass($empty);=0A=
  	delete instance.parent;=0A=
  	delete instance.parentOf;=0A=
=0A=
  	for (var key in instance){=0A=
  		var current =3D self[key], previous =3D instance[key];=0A=
  		if (current =3D=3D undefined){=0A=
  			self[key] =3D previous;=0A=
  			continue;=0A=
  		}=0A=
=0A=
  		var ctype =3D $type(current), ptype =3D $type(previous);=0A=
  		if (ctype !=3D ptype) continue;=0A=
=0A=
  		switch (ctype){=0A=
  			case 'function': =0A=
  				// this code will be only executed if the current browser does not =
support function.caller (currently only opera).=0A=
  				// we replace the function code with brute force. Not pretty, but =
it will only be executed if function.caller is not supported.=0A=
=0A=
  				if (!arguments.callee.caller) self[key] =3D eval('(' + =
String(current).replace(/\bthis\.parent\(\s*(\))?/g, function(full, =
close){=0A=
  					return 'arguments.callee._parent_.call(this' + (close || ', ');=0A=
  				}) + ')');=0A=
=0A=
  				// end "opera" code=0A=
  				self[key]._parent_ =3D previous;=0A=
  			  break;=0A=
  			case 'object': self[key] =3D $merge(previous, current);=0A=
  		}=0A=
=0A=
  	}=0A=
=0A=
  	self.parent =3D function(){=0A=
  		return arguments.callee.caller._parent_.apply(this, arguments);=0A=
  	};=0A=
=0A=
  	self.parentOf =3D function(descendant){=0A=
  		return descendant._parent_.apply(this, Array.slice(arguments, 1));=0A=
  	};=0A=
  }=0A=
  =0A=
};=0A=
=0A=
=0A=
/*=0A=
Script: Class.Extras.js=0A=
	Contains Utility Classes that can be implemented into your own Classes =
to ease the execution of many common tasks.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Chain =3D new Class({=0A=
=0A=
	chain: function(){=0A=
		this.$chain =3D (this.$chain || []).extend(arguments);=0A=
		return this;=0A=
	},=0A=
=0A=
	callChain: function(){=0A=
		return (this.$chain && this.$chain.length) ? =
this.$chain.shift().apply(this, arguments) : false;=0A=
	},=0A=
=0A=
	clearChain: function(){=0A=
		if (this.$chain) this.$chain.empty();=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
var Events =3D new Class({=0A=
=0A=
	addEvent: function(type, fn, internal){=0A=
		type =3D Events.removeOn(type);=0A=
		if (fn !=3D $empty){=0A=
			this.$events =3D this.$events || {};=0A=
			this.$events[type] =3D this.$events[type] || [];=0A=
			this.$events[type].include(fn);=0A=
			if (internal) fn.internal =3D true;=0A=
		}=0A=
		return this;=0A=
	},=0A=
=0A=
	addEvents: function(events){=0A=
		for (var type in events) this.addEvent(type, events[type]);=0A=
		return this;=0A=
	},=0A=
=0A=
	fireEvent: function(type, args, delay){=0A=
		type =3D Events.removeOn(type);=0A=
		if (!this.$events || !this.$events[type]) return this;=0A=
		this.$events[type].each(function(fn){=0A=
			fn.create({'bind': this, 'delay': delay, 'arguments': args})();=0A=
		}, this);=0A=
		return this;=0A=
	},=0A=
=0A=
	removeEvent: function(type, fn){=0A=
		type =3D Events.removeOn(type);=0A=
		if (!this.$events || !this.$events[type]) return this;=0A=
		if (!fn.internal) this.$events[type].erase(fn);=0A=
		return this;=0A=
	},=0A=
=0A=
	removeEvents: function(type){=0A=
		for (var e in this.$events){=0A=
			if (type && type !=3D e) continue;=0A=
			var fns =3D this.$events[e];=0A=
			for (var i =3D fns.length; i--; i) this.removeEvent(e, fns[i]);=0A=
		}=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Events.removeOn =3D function(string){=0A=
	return string.replace(/^on([A-Z])/, function(full, first) {=0A=
		return first.toLowerCase();=0A=
	});=0A=
};=0A=
=0A=
var Options =3D new Class({=0A=
=0A=
	setOptions: function(){=0A=
		this.options =3D $merge.run([this.options].extend(arguments));=0A=
		if (!this.addEvent) return this;=0A=
		for (var option in this.options){=0A=
			if ($type(this.options[option]) !=3D 'function' || =
!(/^on[A-Z]/).test(option)) continue;=0A=
			this.addEvent(option, this.options[option]);=0A=
			delete this.options[option];=0A=
		}=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*=0A=
Script: Element.js=0A=
	One of the most important items in MooTools. Contains the dollar =
function, the dollars function, and an handful of cross-browser,=0A=
	time-saver methods to let you easily work with HTML Elements.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Document.implement({=0A=
=0A=
	newElement: function(tag, props){=0A=
		if (Browser.Engine.trident && props){=0A=
			['name', 'type', 'checked'].each(function(attribute){=0A=
				if (!props[attribute]) return;=0A=
				tag +=3D ' ' + attribute + '=3D"' + props[attribute] + '"';=0A=
				if (attribute !=3D 'checked') delete props[attribute];=0A=
			});=0A=
			tag =3D '<' + tag + '>';=0A=
		}=0A=
		return $.element(this.createElement(tag)).set(props);=0A=
	},=0A=
=0A=
	newTextNode: function(text){=0A=
		return this.createTextNode(text);=0A=
	},=0A=
=0A=
	getDocument: function(){=0A=
		return this;=0A=
	},=0A=
=0A=
	getWindow: function(){=0A=
		return this.defaultView || this.parentWindow;=0A=
	},=0A=
=0A=
	purge: function(){=0A=
		var elements =3D this.getElementsByTagName('*');=0A=
		for (var i =3D 0, l =3D elements.length; i < l; i++) =
Browser.freeMem(elements[i]);=0A=
	}=0A=
=0A=
});=0A=
=0A=
var Element =3D new Native({=0A=
=0A=
	name: 'Element',=0A=
=0A=
	legacy: window.Element,=0A=
=0A=
	initialize: function(tag, props){=0A=
		var konstructor =3D Element.Constructors.get(tag);=0A=
		if (konstructor) return konstructor(props);=0A=
		if (typeof tag =3D=3D 'string') return document.newElement(tag, props);=0A=
		return $(tag).set(props);=0A=
	},=0A=
=0A=
	afterImplement: function(key, value){=0A=
		if (!Array[key]) Elements.implement(key, Elements.multi(key));=0A=
		Element.Prototype[key] =3D value;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.Prototype =3D {$family: {name: 'element'}};=0A=
=0A=
Element.Constructors =3D new Hash;=0A=
=0A=
var IFrame =3D new Native({=0A=
=0A=
	name: 'IFrame',=0A=
=0A=
	generics: false,=0A=
=0A=
	initialize: function(){=0A=
		var params =3D Array.link(arguments, {properties: Object.type, iframe: =
$defined});=0A=
		var props =3D params.properties || {};=0A=
		var iframe =3D $(params.iframe) || false;=0A=
		var onload =3D props.onload || $empty;=0A=
		delete props.onload;=0A=
		props.id =3D props.name =3D $pick(props.id, props.name, iframe.id, =
iframe.name, 'IFrame_' + $time());=0A=
		iframe =3D new Element(iframe || 'iframe', props);=0A=
		var onFrameLoad =3D function(){=0A=
			var host =3D $try(function(){=0A=
				return iframe.contentWindow.location.host;=0A=
			});=0A=
			if (host && host =3D=3D window.location.host){=0A=
				var win =3D new Window(iframe.contentWindow);=0A=
				var doc =3D new Document(iframe.contentWindow.document);=0A=
				$extend(win.Element.prototype, Element.Prototype);=0A=
			}=0A=
			onload.call(iframe.contentWindow, iframe.contentWindow.document);=0A=
		};=0A=
		(!window.frames[props.id]) ? iframe.addListener('load', onFrameLoad) : =
onFrameLoad();=0A=
		return iframe;=0A=
	}=0A=
=0A=
});=0A=
=0A=
var Elements =3D new Native({=0A=
=0A=
	initialize: function(elements, options){=0A=
		options =3D $extend({ddup: true, cash: true}, options);=0A=
		elements =3D elements || [];=0A=
		if (options.ddup || options.cash){=0A=
			var uniques =3D {}, returned =3D [];=0A=
			for (var i =3D 0, l =3D elements.length; i < l; i++){=0A=
				var el =3D $.element(elements[i], !options.cash);=0A=
				if (options.ddup){=0A=
					if (uniques[el.uid]) continue;=0A=
					uniques[el.uid] =3D true;=0A=
				}=0A=
				returned.push(el);=0A=
			}=0A=
			elements =3D returned;=0A=
		}=0A=
		return (options.cash) ? $extend(elements, this) : elements;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Elements.implement({=0A=
=0A=
	filter: function(filter, bind){=0A=
		if (!filter) return this;=0A=
		return new Elements(Array.filter(this, (typeof filter =3D=3D 'string') =
? function(item){=0A=
			return item.match(filter);=0A=
		} : filter, bind));=0A=
	}=0A=
=0A=
});=0A=
=0A=
Elements.multi =3D function(property){=0A=
	return function(){=0A=
		var items =3D [];=0A=
		var elements =3D true;=0A=
		for (var i =3D 0, j =3D this.length; i < j; i++){=0A=
			var returns =3D this[i][property].apply(this[i], arguments);=0A=
			items.push(returns);=0A=
			if (elements) elements =3D ($type(returns) =3D=3D 'element');=0A=
		}=0A=
		return (elements) ? new Elements(items) : items;=0A=
	};=0A=
};=0A=
=0A=
Window.implement({=0A=
=0A=
	$: function(el, nocash){=0A=
		if (el && el.$family && el.uid) return el;=0A=
		var type =3D $type(el);=0A=
		return ($[type]) ? $[type](el, nocash, this.document) : null;=0A=
	},=0A=
=0A=
	$$: function(selector){=0A=
		if (arguments.length =3D=3D 1 && typeof selector =3D=3D 'string') =
return this.document.getElements(selector);=0A=
		var elements =3D [];=0A=
		var args =3D Array.flatten(arguments);=0A=
		for (var i =3D 0, l =3D args.length; i < l; i++){=0A=
			var item =3D args[i];=0A=
			switch ($type(item)){=0A=
				case 'element': item =3D [item]; break;=0A=
				case 'string': item =3D this.document.getElements(item, true); break;=0A=
				default: item =3D false;=0A=
			}=0A=
			if (item) elements.extend(item);=0A=
		}=0A=
		return new Elements(elements);=0A=
	},=0A=
=0A=
	getDocument: function(){=0A=
		return this.document;=0A=
	},=0A=
=0A=
	getWindow: function(){=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
$.string =3D function(id, nocash, doc){=0A=
	id =3D doc.getElementById(id);=0A=
	return (id) ? $.element(id, nocash) : null;=0A=
};=0A=
=0A=
$.element =3D function(el, nocash){=0A=
	$uid(el);=0A=
	if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){=0A=
		var proto =3D Element.Prototype;=0A=
		for (var p in proto) el[p] =3D proto[p];=0A=
	};=0A=
	return el;=0A=
};=0A=
=0A=
$.object =3D function(obj, nocash, doc){=0A=
	if (obj.toElement) return $.element(obj.toElement(doc), nocash);=0A=
	return null;=0A=
};=0A=
=0A=
$.textnode =3D $.whitespace =3D $.window =3D $.document =3D =
$arguments(0);=0A=
=0A=
Native.implement([Element, Document], {=0A=
=0A=
	getElement: function(selector, nocash){=0A=
		return $(this.getElements(selector, true)[0] || null, nocash);=0A=
	},=0A=
=0A=
	getElements: function(tags, nocash){=0A=
		tags =3D tags.split(',');=0A=
		var elements =3D [];=0A=
		var ddup =3D (tags.length > 1);=0A=
		tags.each(function(tag){=0A=
			var partial =3D this.getElementsByTagName(tag.trim());=0A=
			(ddup) ? elements.extend(partial) : elements =3D partial;=0A=
		}, this);=0A=
		return new Elements(elements, {ddup: ddup, cash: !nocash});=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.Storage =3D {=0A=
=0A=
	get: function(uid){=0A=
		return (this[uid] || (this[uid] =3D {}));=0A=
	}=0A=
=0A=
};=0A=
=0A=
Element.Inserters =3D new Hash({=0A=
=0A=
	before: function(context, element){=0A=
		if (element.parentNode) element.parentNode.insertBefore(context, =
element);=0A=
	},=0A=
=0A=
	after: function(context, element){=0A=
		if (!element.parentNode) return;=0A=
		var next =3D element.nextSibling;=0A=
		(next) ? element.parentNode.insertBefore(context, next) : =
element.parentNode.appendChild(context);=0A=
	},=0A=
=0A=
	bottom: function(context, element){=0A=
		element.appendChild(context);=0A=
	},=0A=
=0A=
	top: function(context, element){=0A=
		var first =3D element.firstChild;=0A=
		(first) ? element.insertBefore(context, first) : =
element.appendChild(context);=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.Inserters.inside =3D Element.Inserters.bottom;=0A=
=0A=
Element.Inserters.each(function(value, key){=0A=
=0A=
	var Key =3D key.capitalize();=0A=
=0A=
	Element.implement('inject' + Key, function(el){=0A=
		value(this, $(el, true));=0A=
		return this;=0A=
	});=0A=
=0A=
	Element.implement('grab' + Key, function(el){=0A=
		value($(el, true), this);=0A=
		return this;=0A=
	});=0A=
=0A=
});=0A=
=0A=
Element.implement({=0A=
=0A=
	getDocument: function(){=0A=
		return this.ownerDocument;=0A=
	},=0A=
=0A=
	getWindow: function(){=0A=
		return this.ownerDocument.getWindow();=0A=
	},=0A=
=0A=
	getElementById: function(id, nocash){=0A=
		var el =3D this.ownerDocument.getElementById(id);=0A=
		if (!el) return null;=0A=
		for (var parent =3D el.parentNode; parent !=3D this; parent =3D =
parent.parentNode){=0A=
			if (!parent) return null;=0A=
		}=0A=
		return $.element(el, nocash);=0A=
	},=0A=
=0A=
	set: function(prop, value){=0A=
		switch ($type(prop)){=0A=
			case 'object':=0A=
				for (var p in prop) this.set(p, prop[p]);=0A=
				break;=0A=
			case 'string':=0A=
				var property =3D Element.Properties.get(prop);=0A=
				(property && property.set) ? property.set.apply(this, =
Array.slice(arguments, 1)) : this.setProperty(prop, value);=0A=
		}=0A=
		return this;=0A=
	},=0A=
=0A=
	get: function(prop){=0A=
		var property =3D Element.Properties.get(prop);=0A=
		return (property && property.get) ? property.get.apply(this, =
Array.slice(arguments, 1)) : this.getProperty(prop);=0A=
	},=0A=
=0A=
	erase: function(prop){=0A=
		var property =3D Element.Properties.get(prop);=0A=
		(property && property.erase) ? property.erase.apply(this, =
Array.slice(arguments, 1)) : this.removeProperty(prop);=0A=
		return this;=0A=
	},=0A=
=0A=
	match: function(tag){=0A=
		return (!tag || Element.get(this, 'tag') =3D=3D tag);=0A=
	},=0A=
=0A=
	inject: function(el, where){=0A=
		Element.Inserters.get(where || 'bottom')(this, $(el, true));=0A=
		return this;=0A=
	},=0A=
=0A=
	wraps: function(el, where){=0A=
		el =3D $(el, true);=0A=
		return this.replaces(el).grab(el, where);=0A=
	},=0A=
=0A=
	grab: function(el, where){=0A=
		Element.Inserters.get(where || 'bottom')($(el, true), this);=0A=
		return this;=0A=
	},=0A=
=0A=
	appendText: function(text, where){=0A=
		return this.grab(this.getDocument().newTextNode(text), where);=0A=
	},=0A=
=0A=
	adopt: function(){=0A=
		Array.flatten(arguments).each(function(element){=0A=
			element =3D $(element, true);=0A=
			if (element) this.appendChild(element);=0A=
		}, this);=0A=
		return this;=0A=
	},=0A=
=0A=
	dispose: function(){=0A=
		return (this.parentNode) ? this.parentNode.removeChild(this) : this;=0A=
	},=0A=
=0A=
	clone: function(contents, keepid){=0A=
		switch ($type(this)){=0A=
			case 'element':=0A=
				var attributes =3D {};=0A=
				for (var j =3D 0, l =3D this.attributes.length; j < l; j++){=0A=
					var attribute =3D this.attributes[j], key =3D =
attribute.nodeName.toLowerCase();=0A=
					if (Browser.Engine.trident && (/input/i).test(this.tagName) && =
(/width|height/).test(key)) continue;=0A=
					var value =3D (key =3D=3D 'style' && this.style) ? =
this.style.cssText : attribute.nodeValue;=0A=
					if (!$chk(value) || key =3D=3D 'uid' || (key =3D=3D 'id' && =
!keepid)) continue;=0A=
					if (value !=3D 'inherit' && ['string', =
'number'].contains($type(value))) attributes[key] =3D value;=0A=
				}=0A=
				var element =3D new Element(this.nodeName.toLowerCase(), attributes);=0A=
				if (contents !=3D=3D false){=0A=
					for (var i =3D 0, k =3D this.childNodes.length; i < k; i++){=0A=
						var child =3D Element.clone(this.childNodes[i], true, keepid);=0A=
						if (child) element.grab(child);=0A=
					}=0A=
				}=0A=
				return element;=0A=
			case 'textnode': return document.newTextNode(this.nodeValue);=0A=
		}=0A=
		return null;=0A=
	},=0A=
=0A=
	replaces: function(el){=0A=
		el =3D $(el, true);=0A=
		el.parentNode.replaceChild(this, el);=0A=
		return this;=0A=
	},=0A=
=0A=
	hasClass: function(className){=0A=
		return this.className.contains(className, ' ');=0A=
	},=0A=
=0A=
	addClass: function(className){=0A=
		if (!this.hasClass(className)) this.className =3D (this.className + ' =
' + className).clean();=0A=
		return this;=0A=
	},=0A=
=0A=
	removeClass: function(className){=0A=
		this.className =3D this.className.replace(new RegExp('(^|\\s)' + =
className + '(?:\\s|$)'), '$1').clean();=0A=
		return this;=0A=
	},=0A=
=0A=
	toggleClass: function(className){=0A=
		return this.hasClass(className) ? this.removeClass(className) : =
this.addClass(className);=0A=
	},=0A=
=0A=
	getComputedStyle: function(property){=0A=
		if (this.currentStyle) return this.currentStyle[property.camelCase()];=0A=
		var computed =3D this.getWindow().getComputedStyle(this, null);=0A=
		return (computed) ? computed.getPropertyValue([property.hyphenate()]) =
: null;=0A=
	},=0A=
=0A=
	empty: function(){=0A=
		$A(this.childNodes).each(function(node){=0A=
			Browser.freeMem(node);=0A=
			Element.empty(node);=0A=
			Element.dispose(node);=0A=
		}, this);=0A=
		return this;=0A=
	},=0A=
=0A=
	destroy: function(){=0A=
		Browser.freeMem(this.empty().dispose());=0A=
		return null;=0A=
	},=0A=
=0A=
	getSelected: function(){=0A=
		return new Elements($A(this.options).filter(function(option){=0A=
			return option.selected;=0A=
		}));=0A=
	},=0A=
=0A=
	toQueryString: function(){=0A=
		var queryString =3D [];=0A=
		this.getElements('input, select, textarea').each(function(el){=0A=
			if (!el.name || el.disabled) return;=0A=
			var value =3D (el.tagName.toLowerCase() =3D=3D 'select') ? =
Element.getSelected(el).map(function(opt){=0A=
				return opt.value;=0A=
			}) : ((el.type =3D=3D 'radio' || el.type =3D=3D 'checkbox') && =
!el.checked) ? null : el.value;=0A=
			$splat(value).each(function(val){=0A=
				if (val) queryString.push(el.name + '=3D' + encodeURIComponent(val));=0A=
			});=0A=
		});=0A=
		return queryString.join('&');=0A=
	},=0A=
=0A=
	getProperty: function(attribute){=0A=
		var EA =3D Element.Attributes, key =3D EA.Props[attribute];=0A=
		var value =3D (key) ? this[key] : this.getAttribute(attribute, 2);=0A=
		return (EA.Bools[attribute]) ? !!value : (key) ? value : value || null;=0A=
	},=0A=
=0A=
	getProperties: function(){=0A=
		var args =3D $A(arguments);=0A=
		return args.map(function(attr){=0A=
			return this.getProperty(attr);=0A=
		}, this).associate(args);=0A=
	},=0A=
=0A=
	setProperty: function(attribute, value){=0A=
		var EA =3D Element.Attributes, key =3D EA.Props[attribute], hasValue =
=3D $defined(value);=0A=
		if (key && EA.Bools[attribute]) value =3D (value || !hasValue) ? true =
: false;=0A=
		else if (!hasValue) return this.removeProperty(attribute);=0A=
		(key) ? this[key] =3D value : this.setAttribute(attribute, value);=0A=
		return this;=0A=
	},=0A=
=0A=
	setProperties: function(attributes){=0A=
		for (var attribute in attributes) this.setProperty(attribute, =
attributes[attribute]);=0A=
		return this;=0A=
	},=0A=
=0A=
	removeProperty: function(attribute){=0A=
		var EA =3D Element.Attributes, key =3D EA.Props[attribute], isBool =3D =
(key && EA.Bools[attribute]);=0A=
		(key) ? this[key] =3D (isBool) ? false : '' : =
this.removeAttribute(attribute);=0A=
		return this;=0A=
	},=0A=
=0A=
	removeProperties: function(){=0A=
		Array.each(arguments, this.removeProperty, this);=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
(function(){=0A=
=0A=
var walk =3D function(element, walk, start, match, all, nocash){=0A=
	var el =3D element[start || walk];=0A=
	var elements =3D [];=0A=
	while (el){=0A=
		if (el.nodeType =3D=3D 1 && (!match || Element.match(el, match))){=0A=
			elements.push(el);=0A=
			if (!all) break;=0A=
		}=0A=
		el =3D el[walk];=0A=
	}=0A=
	return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : =
$(elements[0], nocash);=0A=
};=0A=
=0A=
Element.implement({=0A=
=0A=
	getPrevious: function(match, nocash){=0A=
		return walk(this, 'previousSibling', null, match, false, nocash);=0A=
	},=0A=
=0A=
	getAllPrevious: function(match, nocash){=0A=
		return walk(this, 'previousSibling', null, match, true, nocash);=0A=
	},=0A=
=0A=
	getNext: function(match, nocash){=0A=
		return walk(this, 'nextSibling', null, match, false, nocash);=0A=
	},=0A=
=0A=
	getAllNext: function(match, nocash){=0A=
		return walk(this, 'nextSibling', null, match, true, nocash);=0A=
	},=0A=
=0A=
	getFirst: function(match, nocash){=0A=
		return walk(this, 'nextSibling', 'firstChild', match, false, nocash);=0A=
	},=0A=
=0A=
	getLast: function(match, nocash){=0A=
		return walk(this, 'previousSibling', 'lastChild', match, false, =
nocash);=0A=
	},=0A=
=0A=
	getParent: function(match, nocash){=0A=
		return walk(this, 'parentNode', null, match, false, nocash);=0A=
	},=0A=
=0A=
	getParents: function(match, nocash){=0A=
		return walk(this, 'parentNode', null, match, true, nocash);=0A=
	},=0A=
=0A=
	getChildren: function(match, nocash){=0A=
		return walk(this, 'nextSibling', 'firstChild', match, true, nocash);=0A=
	},=0A=
=0A=
	hasChild: function(el){=0A=
		el =3D $(el, true);=0A=
		return (!!el && =
$A(this.getElementsByTagName(el.tagName)).contains(el));=0A=
	}=0A=
=0A=
});=0A=
=0A=
})();=0A=
=0A=
Element.Properties =3D new Hash;=0A=
=0A=
Element.Properties.style =3D {=0A=
=0A=
	set: function(style){=0A=
		this.style.cssText =3D style;=0A=
	},=0A=
=0A=
	get: function(){=0A=
		return this.style.cssText;=0A=
	},=0A=
=0A=
	erase: function(){=0A=
		this.style.cssText =3D '';=0A=
	}=0A=
=0A=
};=0A=
=0A=
Element.Properties.tag =3D {get: function(){=0A=
	return this.tagName.toLowerCase();=0A=
}};=0A=
=0A=
Element.Properties.href =3D {get: function(){=0A=
	return (!this.href) ? null : this.href.replace(new RegExp('^' + =
document.location.protocol + '\/\/' + document.location.host), '');=0A=
}};=0A=
=0A=
Element.Properties.html =3D {set: function(){=0A=
	return this.innerHTML =3D Array.flatten(arguments).join('');=0A=
}};=0A=
=0A=
Native.implement([Element, Window, Document], {=0A=
=0A=
	addListener: function(type, fn){=0A=
		if (this.addEventListener) this.addEventListener(type, fn, false);=0A=
		else this.attachEvent('on' + type, fn);=0A=
		return this;=0A=
	},=0A=
=0A=
	removeListener: function(type, fn){=0A=
		if (this.removeEventListener) this.removeEventListener(type, fn, =
false);=0A=
		else this.detachEvent('on' + type, fn);=0A=
		return this;=0A=
	},=0A=
=0A=
	retrieve: function(property, dflt){=0A=
		var storage =3D Element.Storage.get(this.uid);=0A=
		var prop =3D storage[property];=0A=
		if ($defined(dflt) && !$defined(prop)) prop =3D storage[property] =3D =
dflt;=0A=
		return $pick(prop);=0A=
	},=0A=
=0A=
	store: function(property, value){=0A=
		var storage =3D Element.Storage.get(this.uid);=0A=
		storage[property] =3D value;=0A=
		return this;=0A=
	},=0A=
=0A=
	eliminate: function(property){=0A=
		var storage =3D Element.Storage.get(this.uid);=0A=
		delete storage[property];=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.Attributes =3D new Hash({=0A=
	Props: {'html': 'innerHTML', 'class': 'className', 'for': 'htmlFor', =
'text': (Browser.Engine.trident) ? 'innerText' : 'textContent'},=0A=
	Bools: ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', =
'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'],=0A=
	Camels: ['value', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', =
'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap']=0A=
});=0A=
=0A=
Browser.freeMem =3D function(item){=0A=
	if (!item) return;=0A=
	if (Browser.Engine.trident && (/object/i).test(item.tagName)){=0A=
		for (var p in item){=0A=
			if (typeof item[p] =3D=3D 'function') item[p] =3D $empty;=0A=
		}=0A=
		Element.dispose(item);=0A=
	}=0A=
	if (item.uid && item.removeEvents) item.removeEvents();=0A=
};=0A=
=0A=
(function(EA){=0A=
=0A=
	var EAB =3D EA.Bools, EAC =3D EA.Camels;=0A=
	EA.Bools =3D EAB =3D EAB.associate(EAB);=0A=
	Hash.extend(Hash.combine(EA.Props, EAB), =
EAC.associate(EAC.map(function(v){=0A=
		return v.toLowerCase();=0A=
	})));=0A=
	EA.erase('Camels');=0A=
=0A=
})(Element.Attributes);=0A=
=0A=
window.addListener('unload', function(){=0A=
	window.removeListener('unload', arguments.callee);=0A=
	document.purge();=0A=
	if (Browser.Engine.trident) CollectGarbage();=0A=
});=0A=
=0A=
/*
Script: Element.Event.js
	Contains Element methods for dealing with events, and custom Events.

License:
	MIT-style license.
*/

Element.Properties.events =3D {set: function(events){
	this.addEvents(events);
}};

Native.implement([Element, Window, Document], {

	addEvent: function(type, fn){
		var events =3D this.retrieve('events', {});
		events[type] =3D events[type] || {'keys': [], 'values': []};
		if (events[type].keys.contains(fn)) return this;
		events[type].keys.push(fn);
		var realType =3D type, custom =3D Element.Events.get(type), condition =
=3D fn, self =3D this;
		if (custom){
			if (custom.onAdd) custom.onAdd.call(this, fn);
			if (custom.condition){
				condition =3D function(event){
					if (custom.condition.call(this, event)) return fn.call(this, =
event);
					return false;
				};
			}
			realType =3D custom.base || realType;
		}
		var defn =3D function(){
			return fn.call(self);
		};
		var nativeEvent =3D Element.NativeEvents[realType] || 0;
		if (nativeEvent){
			if (nativeEvent =3D=3D 2){
				defn =3D function(event){
					event =3D new Event(event, self.getWindow());
					if (condition.call(self, event) =3D=3D=3D false) event.stop();
				};
			}
			this.addListener(realType, defn);
		}
		events[type].values.push(defn);
		return this;
	},

	removeEvent: function(type, fn){
		var events =3D this.retrieve('events');
		if (!events || !events[type]) return this;
		var pos =3D events[type].keys.indexOf(fn);
		if (pos =3D=3D -1) return this;
		var key =3D events[type].keys.splice(pos, 1)[0];
		var value =3D events[type].values.splice(pos, 1)[0];
		var custom =3D Element.Events.get(type);
		if (custom){
			if (custom.onRemove) custom.onRemove.call(this, fn);
			type =3D custom.base || type;
		}
		return (Element.NativeEvents[type]) ? this.removeListener(type, value) =
: this;
	},

	addEvents: function(events){
		for (var event in events) this.addEvent(event, events[event]);
		return this;
	},

	removeEvents: function(type){
		var events =3D this.retrieve('events');
		if (!events) return this;
		if (!type){
			for (var evType in events) this.removeEvents(evType);
			events =3D null;
		} else if (events[type]){
			while (events[type].keys[0]) this.removeEvent(type, =
events[type].keys[0]);
			events[type] =3D null;
		}
		return this;
	},

	fireEvent: function(type, args, delay){
		var events =3D this.retrieve('events');
		if (!events || !events[type]) return this;
		events[type].keys.each(function(fn){
			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
		}, this);
		return this;
	},

	cloneEvents: function(from, type){
		from =3D $(from);
		var fevents =3D from.retrieve('events');
		if (!fevents) return this;
		if (!type){
			for (var evType in fevents) this.cloneEvents(from, evType);
		} else if (fevents[type]){
			fevents[type].keys.each(function(fn){
				this.addEvent(type, fn);
			}, this);
		}
		return this;
	}

});

Element.NativeEvents =3D {
	click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, =
//mouse buttons
	mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
	mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, =
//mouse movement
	keydown: 2, keypress: 2, keyup: 2, //keyboard
	focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form =
elements
	load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, =
DOMContentLoaded: 1, readystatechange: 1, //window
	error: 1, abort: 1, scroll: 1 //misc
};

(function(){

var $check =3D function(event){
	var related =3D event.relatedTarget;
	if (related =3D=3D undefined) return true;
	if (related =3D=3D=3D false) return false;
	return ($type(this) !=3D 'document' && related !=3D this && =
related.prefix !=3D 'xul' && !this.hasChild(related));
};

Element.Events =3D new Hash({

	mouseenter: {
		base: 'mouseover',
		condition: $check
	},

	mouseleave: {
		base: 'mouseout',
		condition: $check
	},

	mousewheel: {
		base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'
	}

});

})();=0A=
=0A=
/*=0A=
Script: Element.Style.js=0A=
	Contains methods for interacting with the styles of Elements in a =
fashionable way.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Element.Properties.styles =3D {set: function(styles){=0A=
	this.setStyles(styles);=0A=
}};=0A=
=0A=
Element.Properties.opacity =3D {=0A=
=0A=
	set: function(opacity, novisibility){=0A=
		if (!novisibility){=0A=
			if (opacity =3D=3D 0){=0A=
				if (this.style.visibility !=3D 'hidden') this.style.visibility =3D =
'hidden';=0A=
			} else {=0A=
				if (this.style.visibility !=3D 'visible') this.style.visibility =3D =
'visible';=0A=
			}=0A=
		}=0A=
		if (!this.currentStyle || !this.currentStyle.hasLayout) =
this.style.zoom =3D 1;=0A=
		if (Browser.Engine.trident) this.style.filter =3D (opacity =3D=3D 1) ? =
'' : 'alpha(opacity=3D' + opacity * 100 + ')';=0A=
		this.style.opacity =3D opacity;=0A=
		this.store('opacity', opacity);=0A=
	},=0A=
=0A=
	get: function(){=0A=
		return this.retrieve('opacity', 1);=0A=
	}=0A=
=0A=
};=0A=
=0A=
Element.implement({=0A=
	=0A=
	setOpacity: function(value){=0A=
		return this.set('opacity', value, true);=0A=
	},=0A=
	=0A=
	getOpacity: function(){=0A=
		return this.get('opacity');=0A=
	},=0A=
=0A=
	setStyle: function(property, value){=0A=
		switch (property){=0A=
			case 'opacity': return this.set('opacity', parseFloat(value));=0A=
			case 'float': property =3D (Browser.Engine.trident) ? 'styleFloat' : =
'cssFloat';=0A=
		}=0A=
		property =3D property.camelCase();=0A=
		if ($type(value) !=3D 'string'){=0A=
			var map =3D (Element.Styles.get(property) || '@').split(' ');=0A=
			value =3D $splat(value).map(function(val, i){=0A=
				if (!map[i]) return '';=0A=
				return ($type(val) =3D=3D 'number') ? map[i].replace('@', =
Math.round(val)) : val;=0A=
			}).join(' ');=0A=
		} else if (value =3D=3D String(Number(value))){=0A=
			value =3D Math.round(value);=0A=
		}=0A=
		this.style[property] =3D value;=0A=
		return this;=0A=
	},=0A=
=0A=
	getStyle: function(property){=0A=
		switch (property){=0A=
			case 'opacity': return this.get('opacity');=0A=
			case 'float': property =3D (Browser.Engine.trident) ? 'styleFloat' : =
'cssFloat';=0A=
		}=0A=
		property =3D property.camelCase();=0A=
		var result =3D this.style[property];=0A=
		if (!$chk(result)){=0A=
			result =3D [];=0A=
			for (var style in Element.ShortStyles){=0A=
				if (property !=3D style) continue;=0A=
				for (var s in Element.ShortStyles[style]) =
result.push(this.getStyle(s));=0A=
				return result.join(' ');=0A=
			}=0A=
			result =3D this.getComputedStyle(property);=0A=
		}=0A=
		if (result){=0A=
			result =3D String(result);=0A=
			var color =3D result.match(/rgba?\([\d\s,]+\)/);=0A=
			if (color) result =3D result.replace(color[0], color[0].rgbToHex());=0A=
		}=0A=
		if (Browser.Engine.presto || (Browser.Engine.trident && =
!$chk(parseInt(result)))){=0A=
			if (property.test(/^(height|width)$/)){=0A=
				var values =3D (property =3D=3D 'width') ? ['left', 'right'] : =
['top', 'bottom'], size =3D 0;=0A=
				values.each(function(value){=0A=
					size +=3D this.getStyle('border-' + value + '-width').toInt() + =
this.getStyle('padding-' + value).toInt();=0A=
				}, this);=0A=
				return this['offset' + property.capitalize()] - size + 'px';=0A=
			}=0A=
			if (Browser.Engine.presto && String(result).test('px')) return result;=0A=
			if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';=0A=
		}=0A=
		return result;=0A=
	},=0A=
=0A=
	setStyles: function(styles){=0A=
		for (var style in styles) this.setStyle(style, styles[style]);=0A=
		return this;=0A=
	},=0A=
=0A=
	getStyles: function(){=0A=
		var result =3D {};=0A=
		Array.each(arguments, function(key){=0A=
			result[key] =3D this.getStyle(key);=0A=
		}, this);=0A=
		return result;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.Styles =3D new Hash({=0A=
	left: '@px', top: '@px', bottom: '@px', right: '@px',=0A=
	width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', =
minWidth: '@px', minHeight: '@px',=0A=
	backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: =
'rgb(@, @, @)',=0A=
	fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: =
'rect(@px @px @px @px)',=0A=
	margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ =
rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',=0A=
	borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: =
'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',=0A=
	zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: =
'@'=0A=
});=0A=
=0A=
Element.ShortStyles =3D {margin: {}, padding: {}, border: {}, =
borderWidth: {}, borderStyle: {}, borderColor: {}};=0A=
=0A=
['Top', 'Right', 'Bottom', 'Left'].each(function(direction){=0A=
	var Short =3D Element.ShortStyles;=0A=
	var All =3D Element.Styles;=0A=
	['margin', 'padding'].each(function(style){=0A=
		var sd =3D style + direction;=0A=
		Short[style][sd] =3D All[sd] =3D '@px';=0A=
	});=0A=
	var bd =3D 'border' + direction;=0A=
	Short.border[bd] =3D All[bd] =3D '@px @ rgb(@, @, @)';=0A=
	var bdw =3D bd + 'Width', bds =3D bd + 'Style', bdc =3D bd + 'Color';=0A=
	Short[bd] =3D {};=0A=
	Short.borderWidth[bdw] =3D Short[bd][bdw] =3D All[bdw] =3D '@px';=0A=
	Short.borderStyle[bds] =3D Short[bd][bds] =3D All[bds] =3D '@';=0A=
	Short.borderColor[bdc] =3D Short[bd][bdc] =3D All[bdc] =3D 'rgb(@, @, =
@)';=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Element.Dimensions.js=0A=
	Contains methods to work with size, scroll, or positioning of Elements =
and the window object.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
=0A=
Credits:=0A=
	- Element positioning based on the [qooxdoo](http://qooxdoo.org/) code =
and smart browser fixes, [LGPL =
License](http://www.gnu.org/licenses/lgpl.html).=0A=
	- Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) =
code, [BSD License](http://developer.yahoo.com/yui/license.html).=0A=
*/=0A=
=0A=
(function(){=0A=
=0A=
Element.implement({=0A=
=0A=
	scrollTo: function(x, y){=0A=
		if (isBody(this)){=0A=
			this.getWindow().scrollTo(x, y);=0A=
		} else {=0A=
			this.scrollLeft =3D x;=0A=
			this.scrollTop =3D y;=0A=
		}=0A=
		return this;=0A=
	},=0A=
=0A=
	getSize: function(){=0A=
		if (isBody(this)) return this.getWindow().getSize();=0A=
		return {x: this.offsetWidth, y: this.offsetHeight};=0A=
	},=0A=
=0A=
	getScrollSize: function(){=0A=
		if (isBody(this)) return this.getWindow().getScrollSize();=0A=
		return {x: this.scrollWidth, y: this.scrollHeight};=0A=
	},=0A=
=0A=
	getScroll: function(){=0A=
		if (isBody(this)) return this.getWindow().getScroll();=0A=
		return {x: this.scrollLeft, y: this.scrollTop};=0A=
	},=0A=
=0A=
	getScrolls: function(){=0A=
		var element =3D this, position =3D {x: 0, y: 0};=0A=
		while (element && !isBody(element)){=0A=
			position.x +=3D element.scrollLeft;=0A=
			position.y +=3D element.scrollTop;=0A=
			element =3D element.parentNode;=0A=
		}=0A=
		return position;=0A=
	},=0A=
	=0A=
	getOffsetParent: function(){=0A=
		var element =3D this;=0A=
		if (isBody(element)) return null; =0A=
		if (!Browser.Engine.trident) return element.offsetParent;=0A=
		while ((element =3D element.parentNode) && !isBody(element)){ =0A=
			if (styleString(element, 'position') !=3D 'static') return element;=0A=
		} =0A=
		return null;=0A=
	},=0A=
=0A=
	getOffsets: function(){=0A=
		var element =3D this, position =3D {x: 0, y: 0};=0A=
		if (isBody(this)) return position;=0A=
=0A=
		while (element && !isBody(element)){=0A=
			position.x +=3D element.offsetLeft;=0A=
			position.y +=3D element.offsetTop;=0A=
=0A=
			if (Browser.Engine.gecko){=0A=
				if (!borderBox(element)){=0A=
					position.x +=3D leftBorder(element);=0A=
					position.y +=3D topBorder(element);=0A=
				}=0A=
				var parent =3D element.parentNode;=0A=
				if (parent && styleString(parent, 'overflow') !=3D 'visible'){=0A=
					position.x +=3D leftBorder(parent);=0A=
					position.y +=3D topBorder(parent);=0A=
				}=0A=
			} else if (element !=3D this && (Browser.Engine.trident || =
Browser.Engine.webkit)){=0A=
				position.x +=3D leftBorder(element);=0A=
				position.y +=3D topBorder(element);=0A=
			}=0A=
=0A=
			element =3D element.offsetParent;=0A=
			if (Browser.Engine.trident){=0A=
				while (element && !element.currentStyle.hasLayout) element =3D =
element.offsetParent;=0A=
			}=0A=
		}=0A=
		if (Browser.Engine.gecko && !borderBox(this)){=0A=
			position.x -=3D leftBorder(this);=0A=
			position.y -=3D topBorder(this);=0A=
		}=0A=
		return position;=0A=
	},=0A=
=0A=
	getPosition: function(relative){=0A=
		if (isBody(this)) return {x: 0, y: 0};=0A=
		var offset =3D this.getOffsets(), scroll =3D this.getScrolls();=0A=
		var position =3D {x: offset.x - scroll.x, y: offset.y - scroll.y};=0A=
		var relativePosition =3D (relative && (relative =3D $(relative))) ? =
relative.getPosition() : {x: 0, y: 0};=0A=
		return {x: position.x - relativePosition.x, y: position.y - =
relativePosition.y};=0A=
	},=0A=
=0A=
	getCoordinates: function(element){=0A=
		if (isBody(this)) return this.getWindow().getCoordinates();=0A=
		var position =3D this.getPosition(element), size =3D this.getSize();=0A=
		var obj =3D {left: position.x, top: position.y, width: size.x, height: =
size.y};=0A=
		obj.right =3D obj.left + obj.width;=0A=
		obj.bottom =3D obj.top + obj.height;=0A=
		return obj;=0A=
	},=0A=
=0A=
	computePosition: function(obj){=0A=
		return {left: obj.x - styleNumber(this, 'margin-left'), top: obj.y - =
styleNumber(this, 'margin-top')};=0A=
	},=0A=
=0A=
	position: function(obj){=0A=
		return this.setStyles(this.computePosition(obj));=0A=
	}=0A=
=0A=
});=0A=
=0A=
Native.implement([Document, Window], {=0A=
=0A=
	getSize: function(){=0A=
		var win =3D this.getWindow();=0A=
		if (Browser.Engine.presto || Browser.Engine.webkit) return {x: =
win.innerWidth, y: win.innerHeight};=0A=
		var doc =3D getCompatElement(this);=0A=
		return {x: doc.clientWidth, y: doc.clientHeight};=0A=
	},=0A=
=0A=
	getScroll: function(){=0A=
		var win =3D this.getWindow();=0A=
		var doc =3D getCompatElement(this);=0A=
		return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || =
doc.scrollTop};=0A=
	},=0A=
=0A=
	getScrollSize: function(){=0A=
		var doc =3D getCompatElement(this);=0A=
		var min =3D this.getSize();=0A=
		return {x: Math.max(doc.scrollWidth, min.x), y: =
Math.max(doc.scrollHeight, min.y)};=0A=
	},=0A=
=0A=
	getPosition: function(){=0A=
		return {x: 0, y: 0};=0A=
	},=0A=
=0A=
	getCoordinates: function(){=0A=
		var size =3D this.getSize();=0A=
		return {top: 0, left: 0, bottom: size.y, right: size.x, height: =
size.y, width: size.x};=0A=
	}=0A=
=0A=
});=0A=
=0A=
// private methods=0A=
=0A=
var styleString =3D Element.getComputedStyle;=0A=
=0A=
function styleNumber(element, style){=0A=
	return styleString(element, style).toInt() || 0;=0A=
};=0A=
=0A=
function borderBox(element){=0A=
	return styleString(element, '-moz-box-sizing') =3D=3D 'border-box';=0A=
};=0A=
=0A=
function topBorder(element){=0A=
	return styleNumber(element, 'border-top-width');=0A=
};=0A=
=0A=
function leftBorder(element){=0A=
	return styleNumber(element, 'border-left-width');=0A=
};=0A=
=0A=
function isBody(element){=0A=
	return (/^(?:body|html)$/i).test(element.tagName);=0A=
};=0A=
=0A=
function getCompatElement(element){=0A=
	var doc =3D element.getDocument();=0A=
	return (!doc.compatMode || doc.compatMode =3D=3D 'CSS1Compat') ? =
doc.html : doc.body;=0A=
};=0A=
=0A=
})();=0A=
=0A=
//aliases=0A=
=0A=
Native.implement([Window, Document, Element], {=0A=
=0A=
	getHeight: function(){=0A=
		return this.getSize().y;=0A=
	},=0A=
=0A=
	getWidth: function(){=0A=
		return this.getSize().x;=0A=
	},=0A=
=0A=
	getScrollTop: function(){=0A=
		return this.getScroll().y;=0A=
	},=0A=
=0A=
	getScrollLeft: function(){=0A=
		return this.getScroll().x;=0A=
	},=0A=
=0A=
	getScrollHeight: function(){=0A=
		return this.getScrollSize().y;=0A=
	},=0A=
=0A=
	getScrollWidth: function(){=0A=
		return this.getScrollSize().x;=0A=
	},=0A=
=0A=
	getTop: function(){=0A=
		return this.getPosition().y;=0A=
	},=0A=
=0A=
	getLeft: function(){=0A=
		return this.getPosition().x;=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*=0A=
Script: Selectors.js=0A=
	Adds advanced CSS Querying capabilities for targeting elements. Also =
includes pseudoselectors support.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Native.implement([Document, Element], {=0A=
	=0A=
	getElements: function(expression, nocash){=0A=
		expression =3D expression.split(',');=0A=
		var items, local =3D {};=0A=
		for (var i =3D 0, l =3D expression.length; i < l; i++){=0A=
			var selector =3D expression[i], elements =3D =
Selectors.Utils.search(this, selector, local);=0A=
			if (i !=3D 0 && elements.item) elements =3D $A(elements);=0A=
			items =3D (i =3D=3D 0) ? elements : (items.item) ? =
$A(items).concat(elements) : items.concat(elements);=0A=
		}=0A=
		return new Elements(items, {ddup: (expression.length > 1), cash: =
!nocash});=0A=
	}=0A=
	=0A=
});=0A=
=0A=
Element.implement({=0A=
	=0A=
	match: function(selector){=0A=
		if (!selector) return true;=0A=
		var tagid =3D Selectors.Utils.parseTagAndID(selector);=0A=
		var tag =3D tagid[0], id =3D tagid[1];=0A=
		if (!Selectors.Filters.byID(this, id) || =
!Selectors.Filters.byTag(this, tag)) return false;=0A=
		var parsed =3D Selectors.Utils.parseSelector(selector);=0A=
		return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;=0A=
	}=0A=
	=0A=
});=0A=
=0A=
var Selectors =3D {Cache: {nth: {}, parsed: {}}};=0A=
=0A=
Selectors.RegExps =3D {=0A=
	id: (/#([\w-]+)/),=0A=
	tag: (/^(\w+|\*)/),=0A=
	quick: (/^(\w+|\*)$/),=0A=
	splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),=0A=
	combined: =
(/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=3D)["']?(.*?)["']?)?\]|:([\w-]+)(?:\(["=
']?(.*?)?["']?\)|$)/g)=0A=
};=0A=
=0A=
Selectors.Utils =3D {=0A=
	=0A=
	chk: function(item, uniques){=0A=
		if (!uniques) return true;=0A=
		var uid =3D $uid(item);=0A=
		if (!uniques[uid]) return uniques[uid] =3D true;=0A=
		return false;=0A=
	},=0A=
	=0A=
	parseNthArgument: function(argument){=0A=
		if (Selectors.Cache.nth[argument]) return =
Selectors.Cache.nth[argument];=0A=
		var parsed =3D argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);=0A=
		if (!parsed) return false;=0A=
		var inta =3D parseInt(parsed[1]);=0A=
		var a =3D (inta || inta =3D=3D=3D 0) ? inta : 1;=0A=
		var special =3D parsed[2] || false;=0A=
		var b =3D parseInt(parsed[3]) || 0;=0A=
		if (a !=3D 0){=0A=
			b--;=0A=
			while (b < 1) b +=3D a;=0A=
			while (b >=3D a) b -=3D a;=0A=
		} else {=0A=
			a =3D b;=0A=
			special =3D 'index';=0A=
		}=0A=
		switch (special){=0A=
			case 'n': parsed =3D {a: a, b: b, special: 'n'}; break;=0A=
			case 'odd': parsed =3D {a: 2, b: 0, special: 'n'}; break;=0A=
			case 'even': parsed =3D  {a: 2, b: 1, special: 'n'}; break;=0A=
			case 'first': parsed =3D {a: 0, special: 'index'}; break;=0A=
			case 'last': parsed =3D {special: 'last-child'}; break;=0A=
			case 'only': parsed =3D {special: 'only-child'}; break;=0A=
			default: parsed =3D {a: (a - 1), special: 'index'};=0A=
		}=0A=
		=0A=
		return Selectors.Cache.nth[argument] =3D parsed;=0A=
	},=0A=
	=0A=
	parseSelector: function(selector){=0A=
		if (Selectors.Cache.parsed[selector]) return =
Selectors.Cache.parsed[selector];=0A=
		var m, parsed =3D {classes: [], pseudos: [], attributes: []};=0A=
		while ((m =3D Selectors.RegExps.combined.exec(selector))){=0A=
			var cn =3D m[1], an =3D m[2], ao =3D m[3], av =3D m[4], pn =3D m[5], =
pa =3D m[6];=0A=
			if (cn){=0A=
				parsed.classes.push(cn);=0A=
			} else if (pn){=0A=
				var parser =3D Selectors.Pseudo.get(pn);=0A=
				if (parser) parsed.pseudos.push({parser: parser, argument: pa});=0A=
				else parsed.attributes.push({name: pn, operator: '=3D', value: pa});=0A=
			} else if (an){=0A=
				parsed.attributes.push({name: an, operator: ao, value: av});=0A=
			}=0A=
		}=0A=
		if (!parsed.classes.length) delete parsed.classes;=0A=
		if (!parsed.attributes.length) delete parsed.attributes;=0A=
		if (!parsed.pseudos.length) delete parsed.pseudos;=0A=
		if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed =
=3D null;=0A=
		return Selectors.Cache.parsed[selector] =3D parsed;=0A=
	},=0A=
	=0A=
	parseTagAndID: function(selector){=0A=
		var tag =3D selector.match(Selectors.RegExps.tag);=0A=
		var id =3D selector.match(Selectors.RegExps.id);=0A=
		return [(tag) ? tag[1] : '*', (id) ? id[1] : false];=0A=
	},=0A=
	=0A=
	filter: function(item, parsed, local){=0A=
		var i;=0A=
		if (parsed.classes){=0A=
			for (i =3D parsed.classes.length; i--; i){=0A=
				var cn =3D parsed.classes[i];=0A=
				if (!Selectors.Filters.byClass(item, cn)) return false;=0A=
			}=0A=
		}=0A=
		if (parsed.attributes){=0A=
			for (i =3D parsed.attributes.length; i--; i){=0A=
				var att =3D parsed.attributes[i];=0A=
				if (!Selectors.Filters.byAttribute(item, att.name, att.operator, =
att.value)) return false;=0A=
			}=0A=
		}=0A=
		if (parsed.pseudos){=0A=
			for (i =3D parsed.pseudos.length; i--; i){=0A=
				var psd =3D parsed.pseudos[i];=0A=
				if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, =
local)) return false;=0A=
			}=0A=
		}=0A=
		return true;=0A=
	},=0A=
	=0A=
	getByTagAndID: function(ctx, tag, id){=0A=
		if (id){=0A=
			var item =3D (ctx.getElementById) ? ctx.getElementById(id, true) : =
Element.getElementById(ctx, id, true);=0A=
			return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];=0A=
		} else {=0A=
			return ctx.getElementsByTagName(tag);=0A=
		}=0A=
	},=0A=
	=0A=
	search: function(self, expression, local){=0A=
		var splitters =3D [];=0A=
		=0A=
		var selectors =3D =
expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, =
m2){=0A=
			splitters.push(m1);=0A=
			return ':)' + m2;=0A=
		}).split(':)');=0A=
		=0A=
		var items, match, filtered, item;=0A=
		=0A=
		for (var i =3D 0, l =3D selectors.length; i < l; i++){=0A=
			=0A=
			var selector =3D selectors[i];=0A=
			=0A=
			if (i =3D=3D 0 && Selectors.RegExps.quick.test(selector)){=0A=
				items =3D self.getElementsByTagName(selector);=0A=
				continue;=0A=
			}=0A=
			=0A=
			var splitter =3D splitters[i - 1];=0A=
			=0A=
			var tagid =3D Selectors.Utils.parseTagAndID(selector);=0A=
			var tag =3D tagid[0], id =3D tagid[1];=0A=
=0A=
			if (i =3D=3D 0){=0A=
				items =3D Selectors.Utils.getByTagAndID(self, tag, id);=0A=
			} else {=0A=
				var uniques =3D {}, found =3D [];=0A=
				for (var j =3D 0, k =3D items.length; j < k; j++) found =3D =
Selectors.Getters[splitter](found, items[j], tag, id, uniques);=0A=
				items =3D found;=0A=
			}=0A=
			=0A=
			var parsed =3D Selectors.Utils.parseSelector(selector);=0A=
			=0A=
			if (parsed){=0A=
				filtered =3D [];=0A=
				for (var m =3D 0, n =3D items.length; m < n; m++){=0A=
					item =3D items[m];=0A=
					if (Selectors.Utils.filter(item, parsed, local)) =
filtered.push(item);=0A=
				}=0A=
				items =3D filtered;=0A=
			}=0A=
			=0A=
		}=0A=
		=0A=
		return items;=0A=
		=0A=
	}=0A=
	=0A=
};=0A=
=0A=
Selectors.Getters =3D {=0A=
	=0A=
	' ': function(found, self, tag, id, uniques){=0A=
		var items =3D Selectors.Utils.getByTagAndID(self, tag, id);=0A=
		for (var i =3D 0, l =3D items.length; i < l; i++){=0A=
			var item =3D items[i];=0A=
			if (Selectors.Utils.chk(item, uniques)) found.push(item);=0A=
		}=0A=
		return found;=0A=
	},=0A=
	=0A=
	'>': function(found, self, tag, id, uniques){=0A=
		var children =3D Selectors.Utils.getByTagAndID(self, tag, id);=0A=
		for (var i =3D 0, l =3D children.length; i < l; i++){=0A=
			var child =3D children[i];=0A=
			if (child.parentNode =3D=3D self && Selectors.Utils.chk(child, =
uniques)) found.push(child);=0A=
		}=0A=
		return found;=0A=
	},=0A=
	=0A=
	'+': function(found, self, tag, id, uniques){=0A=
		while ((self =3D self.nextSibling)){=0A=
			if (self.nodeType =3D=3D 1){=0A=
				if (Selectors.Utils.chk(self, uniques) && =
Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) =
found.push(self);=0A=
				break;=0A=
			}=0A=
		}=0A=
		return found;=0A=
	},=0A=
	=0A=
	'~': function(found, self, tag, id, uniques){=0A=
		=0A=
		while ((self =3D self.nextSibling)){=0A=
			if (self.nodeType =3D=3D 1){=0A=
				if (!Selectors.Utils.chk(self, uniques)) break;=0A=
				if (Selectors.Filters.byTag(self, tag) && =
Selectors.Filters.byID(self, id)) found.push(self);=0A=
			} =0A=
		}=0A=
		return found;=0A=
	}=0A=
	=0A=
};=0A=
=0A=
Selectors.Filters =3D {=0A=
	=0A=
	byTag: function(self, tag){=0A=
		return (tag =3D=3D '*' || (self.tagName && self.tagName.toLowerCase() =
=3D=3D tag));=0A=
	},=0A=
	=0A=
	byID: function(self, id){=0A=
		return (!id || (self.id && self.id =3D=3D id));=0A=
	},=0A=
	=0A=
	byClass: function(self, klass){=0A=
		return (self.className && self.className.contains(klass, ' '));=0A=
	},=0A=
	=0A=
	byPseudo: function(self, parser, argument, local){=0A=
		return parser.call(self, argument, local);=0A=
	},=0A=
	=0A=
	byAttribute: function(self, name, operator, value){=0A=
		var result =3D Element.prototype.getProperty.call(self, name);=0A=
		if (!result) return false;=0A=
		if (!operator || value =3D=3D undefined) return true;=0A=
		switch (operator){=0A=
			case '=3D': return (result =3D=3D value);=0A=
			case '*=3D': return (result.contains(value));=0A=
			case '^=3D': return (result.substr(0, value.length) =3D=3D value);=0A=
			case '$=3D': return (result.substr(result.length - value.length) =
=3D=3D value);=0A=
			case '!=3D': return (result !=3D value);=0A=
			case '~=3D': return result.contains(value, ' ');=0A=
			case '|=3D': return result.contains(value, '-');=0A=
		}=0A=
		return false;=0A=
	}=0A=
	=0A=
};=0A=
=0A=
Selectors.Pseudo =3D new Hash({=0A=
	=0A=
	// w3c pseudo selectors=0A=
	=0A=
	empty: function(){=0A=
		return !(this.innerText || this.textContent || '').length;=0A=
	},=0A=
	=0A=
	not: function(selector){=0A=
		return !Element.match(this, selector);=0A=
	},=0A=
	=0A=
	contains: function(text){=0A=
		return (this.innerText || this.textContent || '').contains(text);=0A=
	},=0A=
	=0A=
	'first-child': function(){=0A=
		return Selectors.Pseudo.index.call(this, 0);=0A=
	},=0A=
	=0A=
	'last-child': function(){=0A=
		var element =3D this;=0A=
		while ((element =3D element.nextSibling)){=0A=
			if (element.nodeType =3D=3D 1) return false;=0A=
		}=0A=
		return true;=0A=
	},=0A=
	=0A=
	'only-child': function(){=0A=
		var prev =3D this;=0A=
		while ((prev =3D prev.previousSibling)){=0A=
			if (prev.nodeType =3D=3D 1) return false;=0A=
		}=0A=
		var next =3D this;=0A=
		while ((next =3D next.nextSibling)){=0A=
			if (next.nodeType =3D=3D 1) return false;=0A=
		}=0A=
		return true;=0A=
	},=0A=
	=0A=
	'nth-child': function(argument, local){=0A=
		argument =3D (argument =3D=3D undefined) ? 'n' : argument;=0A=
		var parsed =3D Selectors.Utils.parseNthArgument(argument);=0A=
		if (parsed.special !=3D 'n') return =
Selectors.Pseudo[parsed.special].call(this, parsed.a, local);=0A=
		var count =3D 0;=0A=
		local.positions =3D local.positions || {};=0A=
		var uid =3D $uid(this);=0A=
		if (!local.positions[uid]){=0A=
			var self =3D this;=0A=
			while ((self =3D self.previousSibling)){=0A=
				if (self.nodeType !=3D 1) continue;=0A=
				count ++;=0A=
				var position =3D local.positions[$uid(self)];=0A=
				if (position !=3D undefined){=0A=
					count =3D position + count;=0A=
					break;=0A=
				}=0A=
			}=0A=
			local.positions[uid] =3D count;=0A=
		}=0A=
		return (local.positions[uid] % parsed.a =3D=3D parsed.b);=0A=
	},=0A=
	=0A=
	// custom pseudo selectors=0A=
	=0A=
	index: function(index){=0A=
		var element =3D this, count =3D 0;=0A=
		while ((element =3D element.previousSibling)){=0A=
			if (element.nodeType =3D=3D 1 && ++count > index) return false;=0A=
		}=0A=
		return (count =3D=3D index);=0A=
	},=0A=
	=0A=
	even: function(argument, local){=0A=
		return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);=0A=
	},=0A=
=0A=
	odd: function(argument, local){=0A=
		return Selectors.Pseudo['nth-child'].call(this, '2n', local);=0A=
	}=0A=
	=0A=
});=0A=
=0A=
/*=0A=
Script: Domready.js=0A=
	Contains the domready custom event.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Element.Events.domready =3D {=0A=
=0A=
	onAdd: function(fn){=0A=
		if (Browser.loaded) fn.call(this);=0A=
	}=0A=
=0A=
};=0A=
=0A=
(function(){=0A=
	=0A=
	var domready =3D function(){=0A=
		if (Browser.loaded) return;=0A=
		Browser.loaded =3D true;=0A=
		window.fireEvent('domready');=0A=
		document.fireEvent('domready');=0A=
	};=0A=
	=0A=
	switch (Browser.Engine.name){=0A=
=0A=
		case 'webkit': (function(){=0A=
			(['loaded', 'complete'].contains(document.readyState)) ? domready() : =
arguments.callee.delay(50);=0A=
		})(); break;=0A=
=0A=
		case 'trident':=0A=
			var temp =3D document.createElement('div');=0A=
			(function(){=0A=
				($try(function(){=0A=
					temp.doScroll('left');=0A=
					return $(temp).inject(document.body).set('html', 'temp').dispose();=0A=
				})) ? domready() : arguments.callee.delay(50);=0A=
			})();=0A=
		break;=0A=
		=0A=
		default:=0A=
			window.addEvent('load', domready);=0A=
			document.addEvent('DOMContentLoaded', domready);=0A=
=0A=
	}=0A=
	=0A=
})();=0A=
=0A=
/*=0A=
Script: JSON.js=0A=
	JSON encoder and decoder.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
=0A=
See Also:=0A=
	<http://www.json.org/>=0A=
*/=0A=
=0A=
var JSON =3D new Hash({=0A=
=0A=
	encode: function(obj){=0A=
		switch ($type(obj)){=0A=
			case 'string':=0A=
				return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + =
'"';=0A=
			case 'array':=0A=
				return '[' + String(obj.map(JSON.encode).filter($defined)) + ']';=0A=
			case 'object': case 'hash':=0A=
				var string =3D [];=0A=
				Hash.each(obj, function(value, key){=0A=
					var json =3D JSON.encode(value);=0A=
					if (json) string.push(JSON.encode(key) + ':' + json);=0A=
				});=0A=
				return '{' + string + '}';=0A=
			case 'number': case 'boolean': return String(obj);=0A=
			case false: return 'null';=0A=
		}=0A=
		return null;=0A=
	},=0A=
=0A=
	$specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', =
'\r': '\\r', '"' : '\\"', '\\': '\\\\'},=0A=
=0A=
	$replaceChars: function(chr){=0A=
		return JSON.$specialChars[chr] || '\\u00' + =
Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % =
16).toString(16);=0A=
	},=0A=
=0A=
	decode: function(string, secure){=0A=
		if ($type(string) !=3D 'string' || !string.length) return null;=0A=
		if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u =
\n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, =
''))) return null;=0A=
		return eval('(' + string + ')');=0A=
	}=0A=
=0A=
});=0A=
=0A=
Native.implement([Hash, Array, String, Number], {=0A=
=0A=
	toJSON: function(){=0A=
		return JSON.encode(this);=0A=
	}=0A=
=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Cookie.js=0A=
	Class for creating, loading, and saving browser Cookies.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
=0A=
Credits:=0A=
	Based on the functions by Peter-Paul Koch (http://quirksmode.org).=0A=
*/=0A=
=0A=
var Cookie =3D new Class({=0A=
=0A=
	Implements: Options,=0A=
=0A=
	options: {=0A=
		path: false,=0A=
		domain: false,=0A=
		duration: false,=0A=
		secure: false,=0A=
		document: document=0A=
	},=0A=
=0A=
	initialize: function(key, options){=0A=
		this.key =3D key;=0A=
		this.setOptions(options);=0A=
	},=0A=
=0A=
	write: function(value){=0A=
		value =3D encodeURIComponent(value);=0A=
		if (this.options.domain) value +=3D '; domain=3D' + =
this.options.domain;=0A=
		if (this.options.path) value +=3D '; path=3D' + this.options.path;=0A=
		if (this.options.duration){=0A=
			var date =3D new Date();=0A=
			date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * =
1000);=0A=
			value +=3D '; expires=3D' + date.toGMTString();=0A=
		}=0A=
		if (this.options.secure) value +=3D '; secure';=0A=
		this.options.document.cookie =3D this.key + '=3D' + value;=0A=
		return this;=0A=
	},=0A=
=0A=
	read: function(){=0A=
		var value =3D this.options.document.cookie.match('(?:^|;)\\s*' + =
this.key.escapeRegExp() + '=3D([^;]*)');=0A=
		return (value) ? decodeURIComponent(value[1]) : null;=0A=
	},=0A=
=0A=
	dispose: function(){=0A=
		new Cookie(this.key, $merge(this.options, {duration: -1})).write('');=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Cookie.write =3D function(key, value, options){=0A=
	return new Cookie(key, options).write(value);=0A=
};=0A=
=0A=
Cookie.read =3D function(key){=0A=
	return new Cookie(key).read();=0A=
};=0A=
=0A=
Cookie.dispose =3D function(key, options){=0A=
	return new Cookie(key, options).dispose();=0A=
};=0A=
=0A=
/*=0A=
Script: Swiff.js=0A=
	Wrapper for embedding SWF movies. Supports (and fixes) External =
Interface Communication.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
=0A=
Credits:=0A=
	Flash detection & Internet Explorer + Flash Player 9 fix inspired by =
SWFObject.=0A=
*/=0A=
=0A=
var Swiff =3D new Class({=0A=
=0A=
	Implements: [Options],=0A=
=0A=
	options: {=0A=
		id: null,=0A=
		height: 1,=0A=
		width: 1,=0A=
		container: null,=0A=
		properties: {},=0A=
		params: {=0A=
			quality: 'high',=0A=
			allowScriptAccess: 'always',=0A=
			wMode: 'transparent',=0A=
			swLiveConnect: true=0A=
		},=0A=
		callBacks: {},=0A=
		vars: {}=0A=
	},=0A=
=0A=
	toElement: function(){=0A=
		return this.object;=0A=
	},=0A=
=0A=
	initialize: function(path, options){=0A=
		this.instance =3D 'Swiff_' + $time();=0A=
=0A=
		this.setOptions(options);=0A=
		options =3D this.options;=0A=
		var id =3D this.id =3D options.id || this.instance;=0A=
		var container =3D $(options.container);=0A=
=0A=
		Swiff.CallBacks[this.instance] =3D {};=0A=
=0A=
		var params =3D options.params, vars =3D options.vars, callBacks =3D =
options.callBacks;=0A=
		var properties =3D $extend({height: options.height, width: =
options.width}, options.properties);=0A=
=0A=
		var self =3D this;=0A=
=0A=
		for (var callBack in callBacks){=0A=
			Swiff.CallBacks[this.instance][callBack] =3D (function(option){=0A=
				return function(){=0A=
					return option.apply(self.object, arguments);=0A=
				};=0A=
			})(callBacks[callBack]);=0A=
			vars[callBack] =3D 'Swiff.CallBacks.' + this.instance + '.' + =
callBack;=0A=
		}=0A=
=0A=
		params.flashVars =3D Hash.toQueryString(vars);=0A=
		if (Browser.Engine.trident){=0A=
			properties.classid =3D 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';=0A=
			params.movie =3D path;=0A=
		} else {=0A=
			properties.type =3D 'application/x-shockwave-flash';=0A=
			properties.data =3D path;=0A=
		}=0A=
		var build =3D '<object id=3D"' + id + '"';=0A=
		for (var property in properties) build +=3D ' ' + property + '=3D"' + =
properties[property] + '"';=0A=
		build +=3D '>';=0A=
		for (var param in params){=0A=
			if (params[param]) build +=3D '<param name=3D"' + param + '" =
value=3D"' + params[param] + '" />';=0A=
		}=0A=
		build +=3D '</object>';=0A=
		this.object =3D  ((container) ? container.empty() : new =
Element('div')).set('html', build).firstChild;=0A=
	},=0A=
=0A=
	replaces: function(element){=0A=
		element =3D $(element, true);=0A=
		element.parentNode.replaceChild(this.toElement(), element);=0A=
		return this;=0A=
	},=0A=
=0A=
	inject: function(element){=0A=
		$(element, true).appendChild(this.toElement());=0A=
		return this;=0A=
	},=0A=
=0A=
	remote: function(){=0A=
		return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));=0A=
	}=0A=
=0A=
});=0A=
=0A=
Swiff.CallBacks =3D {};=0A=
=0A=
Swiff.remote =3D function(obj, fn){=0A=
	var rs =3D obj.CallFunction('<invoke name=3D"' + fn + '" =
returntype=3D"javascript">' + __flash__argumentsToXML(arguments, 2) + =
'</invoke>');=0A=
	return eval(rs);=0A=
};=0A=
=0A=
/*
Script: Fx.js
	Contains the basic animation logic to be extended by all other Fx =
Classes.

License:
	MIT-style license.
*/

var Fx =3D new Class({

	Implements: [Chain, Events, Options],

	options: {
		/*
		onStart: $empty,
		onCancel: $empty,
		onComplete: $empty,
		*/
		fps: 50,
		unit: false,
		duration: 500,
		link: 'ignore',
		transition: function(p){
			return -(Math.cos(Math.PI * p) - 1) / 2;
		}
	},

	initialize: function(options){
		this.subject =3D this.subject || this;
		this.setOptions(options);
		this.options.duration =3D Fx.Durations[this.options.duration] || =
this.options.duration.toInt();
		var wait =3D this.options.wait;
		if (wait =3D=3D=3D false) this.options.link =3D 'cancel';
	},

	step: function(){
		var time =3D $time();
		if (time < this.time + this.options.duration){
			var delta =3D this.options.transition((time - this.time) / =
this.options.duration);
			this.set(this.compute(this.from, this.to, delta));
		} else {
			this.set(this.compute(this.from, this.to, 1));
			this.complete();
		}
	},

	set: function(now){
		return now;
	},

	compute: function(from, to, delta){
		return Fx.compute(from, to, delta);
	},

	check: function(caller){
		if (!this.timer) return true;
		switch (this.options.link){
			case 'cancel': this.cancel(); return true;
			case 'chain': this.chain(caller.bind(this, Array.slice(arguments, =
1))); return false;
		}
		return false;
	},

	start: function(from, to){
		if (!this.check(arguments.callee, from, to)) return this;
		this.from =3D from;
		this.to =3D to;
		this.time =3D 0;
		this.startTimer();
		this.onStart();
		return this;
	},

	complete: function(){
		if (this.stopTimer()) this.onComplete();
		return this;
	},

	cancel: function(){
		if (this.stopTimer()) this.onCancel();
		return this;
	},

	onStart: function(){
		this.fireEvent('start', this.subject);
	},

	onComplete: function(){
		this.fireEvent('complete', this.subject);
		if (!this.callChain()) this.fireEvent('chainComplete', this.subject);
	},

	onCancel: function(){
		this.fireEvent('cancel', this.subject).clearChain();
	},

	pause: function(){
		this.stopTimer();
		return this;
	},

	resume: function(){
		this.startTimer();
		return this;
	},

	stopTimer: function(){
		if (!this.timer) return false;
		this.time =3D $time() - this.time;
		this.timer =3D $clear(this.timer);
		return true;
	},

	startTimer: function(){
		if (this.timer) return false;
		this.time =3D $time() - this.time;
		this.timer =3D this.step.periodical(Math.round(1000 / =
this.options.fps), this);
		return true;
	}

});

Fx.compute =3D function(from, to, delta){
	return (to - from) * delta + from;
};

Fx.Durations =3D {'short': 250, 'normal': 500, 'long': 1000};
=0A=
=0A=
/*=0A=
Script: Fx.CSS.js=0A=
	Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, =
Fx.Elements.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Fx.CSS =3D new Class({=0A=
=0A=
	Extends: Fx,=0A=
=0A=
	//prepares the base from/to object=0A=
=0A=
	prepare: function(element, property, values){=0A=
		values =3D $splat(values);=0A=
		var values1 =3D values[1];=0A=
		if (!$chk(values1)){=0A=
			values[1] =3D values[0];=0A=
			values[0] =3D element.getStyle(property);=0A=
		}=0A=
		var parsed =3D values.map(this.parse);=0A=
		return {from: parsed[0], to: parsed[1]};=0A=
	},=0A=
=0A=
	//parses a value into an array=0A=
=0A=
	parse: function(value){=0A=
		value =3D $lambda(value)();=0A=
		value =3D (typeof value =3D=3D 'string') ? value.split(' ') : =
$splat(value);=0A=
		return value.map(function(val){=0A=
			val =3D String(val);=0A=
			var found =3D false;=0A=
			Fx.CSS.Parsers.each(function(parser, key){=0A=
				if (found) return;=0A=
				var parsed =3D parser.parse(val);=0A=
				if ($chk(parsed)) found =3D {value: parsed, parser: parser};=0A=
			});=0A=
			found =3D found || {value: val, parser: Fx.CSS.Parsers.String};=0A=
			return found;=0A=
		});=0A=
	},=0A=
=0A=
	//computes by a from and to prepared objects, using their parsers.=0A=
=0A=
	compute: function(from, to, delta){=0A=
		var computed =3D [];=0A=
		(Math.min(from.length, to.length)).times(function(i){=0A=
			computed.push({value: from[i].parser.compute(from[i].value, =
to[i].value, delta), parser: from[i].parser});=0A=
		});=0A=
		computed.$family =3D {name: 'fx:css:value'};=0A=
		return computed;=0A=
	},=0A=
=0A=
	//serves the value as settable=0A=
=0A=
	serve: function(value, unit){=0A=
		if ($type(value) !=3D 'fx:css:value') value =3D this.parse(value);=0A=
		var returned =3D [];=0A=
		value.each(function(bit){=0A=
			returned =3D returned.concat(bit.parser.serve(bit.value, unit));=0A=
		});=0A=
		return returned;=0A=
	},=0A=
=0A=
	//renders the change to an element=0A=
=0A=
	render: function(element, property, value, unit){=0A=
		element.setStyle(property, this.serve(value, unit));=0A=
	},=0A=
=0A=
	//searches inside the page css to find the values for a selector=0A=
=0A=
	search: function(selector){=0A=
		if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];=0A=
		var to =3D {};=0A=
		Array.each(document.styleSheets, function(sheet, j){=0A=
			var href =3D sheet.href;=0A=
			if (href && href.contains('://') && !href.contains(document.domain)) =
return;=0A=
			var rules =3D sheet.rules || sheet.cssRules;=0A=
			Array.each(rules, function(rule, i){=0A=
				if (!rule.style) return;=0A=
				var selectorText =3D (rule.selectorText) ? =
rule.selectorText.replace(/^\w+/, function(m){=0A=
					return m.toLowerCase();=0A=
				}) : null;=0A=
				if (!selectorText || !selectorText.test('^' + selector + '$')) =
return;=0A=
				Element.Styles.each(function(value, style){=0A=
					if (!rule.style[style] || Element.ShortStyles[style]) return;=0A=
					value =3D String(rule.style[style]);=0A=
					to[style] =3D (value.test(/^rgb/)) ? value.rgbToHex() : value;=0A=
				});=0A=
			});=0A=
		});=0A=
		return Fx.CSS.Cache[selector] =3D to;=0A=
	}=0A=
=0A=
});=0A=
=0A=
Fx.CSS.Cache =3D {};=0A=
=0A=
Fx.CSS.Parsers =3D new Hash({=0A=
=0A=
	Color: {=0A=
		parse: function(value){=0A=
			if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);=0A=
			return ((value =3D value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? =
[value[1], value[2], value[3]] : false;=0A=
		},=0A=
		compute: function(from, to, delta){=0A=
			return from.map(function(value, i){=0A=
				return Math.round(Fx.compute(from[i], to[i], delta));=0A=
			});=0A=
		},=0A=
		serve: function(value){=0A=
			return value.map(Number);=0A=
		}=0A=
	},=0A=
=0A=
	Number: {=0A=
		parse: parseFloat,=0A=
		compute: Fx.compute,=0A=
		serve: function(value, unit){=0A=
			return (unit) ? value + unit : value;=0A=
		}=0A=
	},=0A=
=0A=
	String: {=0A=
		parse: $lambda(false),=0A=
		compute: $arguments(1),=0A=
		serve: $arguments(0)=0A=
	}=0A=
=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Fx.Tween.js=0A=
	Formerly Fx.Style, effect to transition any CSS property for an element.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Fx.Tween =3D new Class({=0A=
=0A=
	Extends: Fx.CSS,=0A=
=0A=
	initialize: function(element, options){=0A=
		this.element =3D this.subject =3D $(element);=0A=
		this.parent(options);=0A=
	},=0A=
=0A=
	set: function(property, now){=0A=
		if (arguments.length =3D=3D 1){=0A=
			now =3D property;=0A=
			property =3D this.property || this.options.property;=0A=
		}=0A=
		this.render(this.element, property, now, this.options.unit);=0A=
		return this;=0A=
	},=0A=
=0A=
	start: function(property, from, to){=0A=
		if (!this.check(arguments.callee, property, from, to)) return this;=0A=
		var args =3D Array.flatten(arguments);=0A=
		this.property =3D this.options.property || args.shift();=0A=
		var parsed =3D this.prepare(this.element, this.property, args);=0A=
		return this.parent(parsed.from, parsed.to);=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.Properties.tween =3D {=0A=
=0A=
	set: function(options){=0A=
		var tween =3D this.retrieve('tween');=0A=
		if (tween) tween.cancel();=0A=
		return this.eliminate('tween').store('tween:options', $extend({link: =
'cancel'}, options));=0A=
	},=0A=
=0A=
	get: function(options){=0A=
		if (options || !this.retrieve('tween')){=0A=
			if (options || !this.retrieve('tween:options')) this.set('tween', =
options);=0A=
			this.store('tween', new Fx.Tween(this, =
this.retrieve('tween:options')));=0A=
		}=0A=
		return this.retrieve('tween');=0A=
	}=0A=
=0A=
};=0A=
=0A=
Element.implement({=0A=
=0A=
	tween: function(property, from, to){=0A=
		this.get('tween').start(arguments);=0A=
		return this;=0A=
	},=0A=
=0A=
	fade: function(how){=0A=
		var fade =3D this.get('tween'), o =3D 'opacity', toggle;=0A=
		how =3D $pick(how, 'toggle');=0A=
		switch (how){=0A=
			case 'in': fade.start(o, 1); break;=0A=
			case 'out': fade.start(o, 0); break;=0A=
			case 'show': fade.set(o, 1); break;=0A=
			case 'hide': fade.set(o, 0); break;=0A=
			case 'toggle':=0A=
				var flag =3D this.retrieve('fade:flag', this.get('opacity') =3D=3D =
1);=0A=
				fade.start(o, (flag) ? 0 : 1);=0A=
				this.store('fade:flag', !flag);=0A=
				toggle =3D true;=0A=
			break;=0A=
			default: fade.start(o, arguments);=0A=
		}=0A=
		if (!toggle) this.eliminate('fade:flag');=0A=
		return this;=0A=
	},=0A=
=0A=
	highlight: function(start, end){=0A=
		if (!end){=0A=
			end =3D this.retrieve('highlight:original', =
this.getStyle('background-color'));=0A=
			end =3D (end =3D=3D 'transparent') ? '#fff' : end;=0A=
		}=0A=
		var tween =3D this.get('tween');=0A=
		tween.start('background-color', start || '#ffff88', =
end).chain(function(){=0A=
			this.setStyle('background-color', =
this.retrieve('highlight:original'));=0A=
			tween.callChain();=0A=
		}.bind(this));=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Fx.Morph.js=0A=
	Formerly Fx.Styles, effect to transition any number of CSS properties =
for an element using an object of rules, or CSS based selector rules.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Fx.Morph =3D new Class({=0A=
=0A=
	Extends: Fx.CSS,=0A=
=0A=
	initialize: function(element, options){=0A=
		this.element =3D this.subject =3D $(element);=0A=
		this.parent(options);=0A=
	},=0A=
=0A=
	set: function(now){=0A=
		if (typeof now =3D=3D 'string') now =3D this.search(now);=0A=
		for (var p in now) this.render(this.element, p, now[p], =
this.options.unit);=0A=
		return this;=0A=
	},=0A=
=0A=
	compute: function(from, to, delta){=0A=
		var now =3D {};=0A=
		for (var p in from) now[p] =3D this.parent(from[p], to[p], delta);=0A=
		return now;=0A=
	},=0A=
=0A=
	start: function(properties){=0A=
		if (!this.check(arguments.callee, properties)) return this;=0A=
		if (typeof properties =3D=3D 'string') properties =3D =
this.search(properties);=0A=
		var from =3D {}, to =3D {};=0A=
		for (var p in properties){=0A=
			var parsed =3D this.prepare(this.element, p, properties[p]);=0A=
			from[p] =3D parsed.from;=0A=
			to[p] =3D parsed.to;=0A=
		}=0A=
		return this.parent(from, to);=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.Properties.morph =3D {=0A=
=0A=
	set: function(options){=0A=
		var morph =3D this.retrieve('morph');=0A=
		if (morph) morph.cancel();=0A=
		return this.eliminate('morph').store('morph:options', $extend({link: =
'cancel'}, options));=0A=
	},=0A=
=0A=
	get: function(options){=0A=
		if (options || !this.retrieve('morph')){=0A=
			if (options || !this.retrieve('morph:options')) this.set('morph', =
options);=0A=
			this.store('morph', new Fx.Morph(this, =
this.retrieve('morph:options')));=0A=
		}=0A=
		return this.retrieve('morph');=0A=
	}=0A=
=0A=
};=0A=
=0A=
Element.implement({=0A=
=0A=
	morph: function(props){=0A=
		this.get('morph').start(props);=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*=0A=
Script: Fx.Transitions.js=0A=
	Contains a set of advanced transitions to be used with any of the Fx =
Classes.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
=0A=
Credits:=0A=
	Easing Equations by Robert Penner, =
<http://www.robertpenner.com/easing/>, modified and optimized to be used =
with MooTools.=0A=
*/=0A=
=0A=
(function(){=0A=
=0A=
	var old =3D Fx.prototype.initialize;=0A=
=0A=
	Fx.prototype.initialize =3D function(options){=0A=
		old.call(this, options);=0A=
		var trans =3D this.options.transition;=0A=
		if (typeof trans =3D=3D 'string' && (trans =3D trans.split(':'))){=0A=
			var base =3D Fx.Transitions;=0A=
			base =3D base[trans[0]] || base[trans[0].capitalize()];=0A=
			if (trans[1]) base =3D base['ease' + trans[1].capitalize() + =
(trans[2] ? trans[2].capitalize() : '')];=0A=
			this.options.transition =3D base;=0A=
		}=0A=
	};=0A=
=0A=
})();=0A=
=0A=
Fx.Transition =3D function(transition, params){=0A=
	params =3D $splat(params);=0A=
	return $extend(transition, {=0A=
		easeIn: function(pos){=0A=
			return transition(pos, params);=0A=
		},=0A=
		easeOut: function(pos){=0A=
			return 1 - transition(1 - pos, params);=0A=
		},=0A=
		easeInOut: function(pos){=0A=
			return (pos <=3D 0.5) ? transition(2 * pos, params) / 2 : (2 - =
transition(2 * (1 - pos), params)) / 2;=0A=
		}=0A=
	});=0A=
};=0A=
=0A=
Fx.Transitions =3D new Hash({=0A=
=0A=
	linear: $arguments(0)=0A=
=0A=
});=0A=
=0A=
Fx.Transitions.extend =3D function(transitions){=0A=
	for (var transition in transitions) Fx.Transitions[transition] =3D new =
Fx.Transition(transitions[transition]);=0A=
};=0A=
=0A=
Fx.Transitions.extend({=0A=
=0A=
	Pow: function(p, x){=0A=
		return Math.pow(p, x[0] || 6);=0A=
	},=0A=
=0A=
	Expo: function(p){=0A=
		return Math.pow(2, 8 * (p - 1));=0A=
	},=0A=
=0A=
	Circ: function(p){=0A=
		return 1 - Math.sin(Math.acos(p));=0A=
	},=0A=
=0A=
	Sine: function(p){=0A=
		return 1 - Math.sin((1 - p) * Math.PI / 2);=0A=
	},=0A=
=0A=
	Back: function(p, x){=0A=
		x =3D x[0] || 1.618;=0A=
		return Math.pow(p, 2) * ((x + 1) * p - x);=0A=
	},=0A=
=0A=
	Bounce: function(p){=0A=
		var value;=0A=
		for (var a =3D 0, b =3D 1; 1; a +=3D b, b /=3D 2){=0A=
			if (p >=3D (7 - 4 * a) / 11){=0A=
				value =3D - Math.pow((11 - 6 * a - 11 * p) / 4, 2) + b * b;=0A=
				break;=0A=
			}=0A=
		}=0A=
		return value;=0A=
	},=0A=
=0A=
	Elastic: function(p, x){=0A=
		return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) =
/ 3);=0A=
	}=0A=
=0A=
});=0A=
=0A=
['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){=0A=
	Fx.Transitions[transition] =3D new Fx.Transition(function(p){=0A=
		return Math.pow(p, [i + 2]);=0A=
	});=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Request.js=0A=
	Powerful all purpose Request Class. Uses XMLHTTPRequest.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Request =3D new Class({=0A=
=0A=
	Implements: [Chain, Events, Options],=0A=
=0A=
	options: {=0A=
		/*onRequest: $empty,=0A=
		onSuccess: $empty,=0A=
		onFailure: $empty,=0A=
		onException: $empty,*/=0A=
		url: '',=0A=
		data: '',=0A=
		headers: {=0A=
			'X-Requested-With': 'XMLHttpRequest',=0A=
			'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'=0A=
		},=0A=
		async: true,=0A=
		format: false,=0A=
		method: 'post',=0A=
		link: 'ignore',=0A=
		isSuccess: null,=0A=
		emulation: true,=0A=
		urlEncoded: true,=0A=
		encoding: 'utf-8',=0A=
		evalScripts: false,=0A=
		evalResponse: false=0A=
	},=0A=
=0A=
	initialize: function(options){=0A=
		this.xhr =3D new Browser.Request();=0A=
		this.setOptions(options);=0A=
		this.options.isSuccess =3D this.options.isSuccess || this.isSuccess;=0A=
		this.headers =3D new Hash(this.options.headers);=0A=
	},=0A=
=0A=
	onStateChange: function(){=0A=
		if (this.xhr.readyState !=3D 4 || !this.running) return;=0A=
		this.running =3D false;=0A=
		this.status =3D 0;=0A=
		$try(function(){=0A=
			this.status =3D this.xhr.status;=0A=
		}.bind(this));=0A=
		if (this.options.isSuccess.call(this, this.status)){=0A=
			this.response =3D {text: this.xhr.responseText, xml: =
this.xhr.responseXML};=0A=
			this.success(this.response.text, this.response.xml);=0A=
		} else {=0A=
			this.response =3D {text: null, xml: null};=0A=
			this.failure();=0A=
		}=0A=
		this.xhr.onreadystatechange =3D $empty;=0A=
	},=0A=
=0A=
	isSuccess: function(){=0A=
		return ((this.status >=3D 200) && (this.status < 300));=0A=
	},=0A=
=0A=
	processScripts: function(text){=0A=
		if (this.options.evalResponse || =
(/(ecma|java)script/).test(this.getHeader('Content-type'))) return =
$exec(text);=0A=
		return text.stripScripts(this.options.evalScripts);=0A=
	},=0A=
=0A=
	success: function(text, xml){=0A=
		this.onSuccess(this.processScripts(text), xml);=0A=
	},=0A=
	=0A=
	onSuccess: function(){=0A=
		this.fireEvent('complete', arguments).fireEvent('success', =
arguments).callChain();=0A=
	},=0A=
	=0A=
	failure: function(){=0A=
		this.onFailure();=0A=
	},=0A=
=0A=
	onFailure: function(){=0A=
		this.fireEvent('complete').fireEvent('failure', this.xhr);=0A=
	},=0A=
=0A=
	setHeader: function(name, value){=0A=
		this.headers.set(name, value);=0A=
		return this;=0A=
	},=0A=
=0A=
	getHeader: function(name){=0A=
		return $try(function(){=0A=
			return this.xhr.getResponseHeader(name);=0A=
		}.bind(this));=0A=
	},=0A=
=0A=
	check: function(caller){=0A=
		if (!this.running) return true;=0A=
		switch (this.options.link){=0A=
			case 'cancel': this.cancel(); return true;=0A=
			case 'chain': this.chain(caller.bind(this, Array.slice(arguments, =
1))); return false;=0A=
		}=0A=
		return false;=0A=
	},=0A=
=0A=
	send: function(options){=0A=
		if (!this.check(arguments.callee, options)) return this;=0A=
		this.running =3D true;=0A=
=0A=
		var type =3D $type(options);=0A=
		if (type =3D=3D 'string' || type =3D=3D 'element') options =3D {data: =
options};=0A=
=0A=
		var old =3D this.options;=0A=
		options =3D $extend({data: old.data, url: old.url, method: =
old.method}, options);=0A=
		var data =3D options.data, url =3D options.url, method =3D =
options.method;=0A=
=0A=
		switch ($type(data)){=0A=
			case 'element': data =3D $(data).toQueryString(); break;=0A=
			case 'object': case 'hash': data =3D Hash.toQueryString(data);=0A=
		}=0A=
=0A=
		if (this.options.format){=0A=
			var format =3D 'format=3D' + this.options.format;=0A=
			data =3D (data) ? format + '&' + data : format;=0A=
		}=0A=
=0A=
		if (this.options.emulation && ['put', 'delete'].contains(method)){=0A=
			var _method =3D '_method=3D' + method;=0A=
			data =3D (data) ? _method + '&' + data : _method;=0A=
			method =3D 'post';=0A=
		}=0A=
=0A=
		if (this.options.urlEncoded && method =3D=3D 'post'){=0A=
			var encoding =3D (this.options.encoding) ? '; charset=3D' + =
this.options.encoding : '';=0A=
			this.headers.set('Content-type', 'application/x-www-form-urlencoded' =
+ encoding);=0A=
		}=0A=
=0A=
		if (data && method =3D=3D 'get'){=0A=
			url =3D url + (url.contains('?') ? '&' : '?') + data;=0A=
			data =3D null;=0A=
		}=0A=
=0A=
		this.xhr.open(method.toUpperCase(), url, this.options.async);=0A=
=0A=
		this.xhr.onreadystatechange =3D this.onStateChange.bind(this);=0A=
=0A=
		this.headers.each(function(value, key){=0A=
			if (!$try(function(){=0A=
				this.xhr.setRequestHeader(key, value);=0A=
				return true;=0A=
			}.bind(this))) this.fireEvent('exception', [key, value]);=0A=
		}, this);=0A=
=0A=
		this.fireEvent('request');=0A=
		this.xhr.send(data);=0A=
		if (!this.options.async) this.onStateChange();=0A=
		return this;=0A=
	},=0A=
=0A=
	cancel: function(){=0A=
		if (!this.running) return this;=0A=
		this.running =3D false;=0A=
		this.xhr.abort();=0A=
		this.xhr.onreadystatechange =3D $empty;=0A=
		this.xhr =3D new Browser.Request();=0A=
		this.fireEvent('cancel');=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
(function(){=0A=
=0A=
var methods =3D {};=0A=
['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', =
'DELETE'].each(function(method){=0A=
	methods[method] =3D function(){=0A=
		var params =3D Array.link(arguments, {url: String.type, data: =
$defined});=0A=
		return this.send($extend(params, {method: method.toLowerCase()}));=0A=
	};=0A=
});=0A=
=0A=
Request.implement(methods);=0A=
=0A=
})();=0A=
=0A=
Element.Properties.send =3D {=0A=
	=0A=
	set: function(options){=0A=
		var send =3D this.retrieve('send');=0A=
		if (send) send.cancel();=0A=
		return this.eliminate('send').store('send:options', $extend({=0A=
			data: this, link: 'cancel', method: this.get('method') || 'post', =
url: this.get('action')=0A=
		}, options));=0A=
	},=0A=
=0A=
	get: function(options){=0A=
		if (options || !this.retrieve('send')){=0A=
			if (options || !this.retrieve('send:options')) this.set('send', =
options);=0A=
			this.store('send', new Request(this.retrieve('send:options')));=0A=
		}=0A=
		return this.retrieve('send');=0A=
	}=0A=
=0A=
};=0A=
=0A=
Element.implement({=0A=
=0A=
	send: function(url){=0A=
		var sender =3D this.get('send');=0A=
		sender.send({data: this, url: url || sender.options.url});=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Request.HTML.js=0A=
	Extends the basic Request Class with additional methods for interacting =
with HTML responses.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Request.HTML =3D new Class({=0A=
=0A=
	Extends: Request,=0A=
=0A=
	options: {=0A=
		update: false,=0A=
		evalScripts: true,=0A=
		filter: false=0A=
	},=0A=
=0A=
	processHTML: function(text){=0A=
		var match =3D text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);=0A=
		text =3D (match) ? match[1] : text;=0A=
		=0A=
		var container =3D new Element('div');=0A=
		=0A=
		return $try(function(){=0A=
			var root =3D '<root>' + text + '</root>', doc;=0A=
			if (Browser.Engine.trident){=0A=
				doc =3D new ActiveXObject('Microsoft.XMLDOM');=0A=
				doc.async =3D false;=0A=
				doc.loadXML(root);=0A=
			} else {=0A=
				doc =3D new DOMParser().parseFromString(root, 'text/xml');=0A=
			}=0A=
			root =3D doc.getElementsByTagName('root')[0];=0A=
			for (var i =3D 0, k =3D root.childNodes.length; i < k; i++){=0A=
				var child =3D Element.clone(root.childNodes[i], true, true);=0A=
				if (child) container.grab(child);=0A=
			}=0A=
			return container;=0A=
		}) || container.set('html', text);=0A=
	},=0A=
=0A=
	success: function(text){=0A=
		var options =3D this.options, response =3D this.response;=0A=
		=0A=
		response.html =3D text.stripScripts(function(script){=0A=
			response.javascript =3D script;=0A=
		});=0A=
		=0A=
		var temp =3D this.processHTML(response.html);=0A=
		=0A=
		response.tree =3D temp.childNodes;=0A=
		response.elements =3D temp.getElements('*');=0A=
		=0A=
		if (options.filter) response.tree =3D =
response.elements.filter(options.filter);=0A=
		if (options.update) $(options.update).empty().adopt(response.tree);=0A=
		if (options.evalScripts) $exec(response.javascript);=0A=
		=0A=
		this.onSuccess(response.tree, response.elements, response.html, =
response.javascript);=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.Properties.load =3D {=0A=
	=0A=
	set: function(options){=0A=
		var load =3D this.retrieve('load');=0A=
		if (load) send.cancel();=0A=
		return this.eliminate('load').store('load:options', $extend({data: =
this, link: 'cancel', update: this, method: 'get'}, options));=0A=
	},=0A=
=0A=
	get: function(options){=0A=
		if (options || ! this.retrieve('load')){=0A=
			if (options || !this.retrieve('load:options')) this.set('load', =
options);=0A=
			this.store('load', new Request.HTML(this.retrieve('load:options')));=0A=
		}=0A=
		return this.retrieve('load');=0A=
	}=0A=
=0A=
};=0A=
=0A=
Element.implement({=0A=
	=0A=
	load: function(){=0A=
		this.get('load').send(Array.link(arguments, {data: Object.type, url: =
String.type}));=0A=
		return this;=0A=
	}=0A=
=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Request.JSON.js=0A=
	Extends the basic Request Class with additional methods for sending and =
receiving JSON data.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Request.JSON =3D new Class({=0A=
=0A=
	Extends: Request,=0A=
=0A=
	options: {=0A=
		secure: true=0A=
	},=0A=
=0A=
	initialize: function(options){=0A=
		this.parent(options);=0A=
		this.headers.extend({'Accept': 'application/json', 'X-Request': =
'JSON'});=0A=
	},=0A=
=0A=
	success: function(text){=0A=
		this.response.json =3D JSON.decode(text, this.options.secure);=0A=
		this.onSuccess(this.response.json, text);=0A=
	}=0A=
=0A=
});=0A=
=0A=
/////////////////////////////////////////////////////////////////////////=
/////////////////////////////////////////////////////////////////////////=
////////=0A=
=0A=
//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2008 =
Valerio Proietti, <http://mad4milk.net>, MIT Style License.=0A=
=0A=
/*
Script: Fx.Slide.js
	Effect to slide an element in and out of view.

License:
	MIT-style license.
*/

Fx.Slide =3D new Class({

	Extends: Fx,

	options: {
		mode: 'vertical'
	},

	initialize: function(element, options){
		this.addEvent('complete', function(){
			this.open =3D (this.wrapper['offset' + this.layout.capitalize()] !=3D =
0);
			if (this.open && Browser.Engine.webkit419) =
this.element.dispose().inject(this.wrapper);
		}, true);
		this.element =3D this.subject =3D $(element);
		this.parent(options);
		var wrapper =3D this.element.retrieve('wrapper');
		this.wrapper =3D wrapper || new Element('div', {
			styles: $extend(this.element.getStyles('margin', 'position'), =
{'overflow': 'hidden'})
		}).wraps(this.element);
		this.element.store('wrapper', this.wrapper).setStyle('margin', 0);
		this.now =3D [];
		this.open =3D true;
	},

	vertical: function(){
		this.margin =3D 'margin-top';
		this.layout =3D 'height';
		this.offset =3D this.element.offsetHeight;
	},

	horizontal: function(){
		this.margin =3D 'margin-left';
		this.layout =3D 'width';
		this.offset =3D this.element.offsetWidth;
	},

	set: function(now){
		this.element.setStyle(this.margin, now[0]);
		this.wrapper.setStyle(this.layout, now[1]);
		return this;
	},

	compute: function(from, to, delta){
		var now =3D [];
		var x =3D 2;
		x.times(function(i){
			now[i] =3D Fx.compute(from[i], to[i], delta);
		});
		return now;
	},

	start: function(how, mode){
		if (!this.check(arguments.callee, how, mode)) return this;
		this[mode || this.options.mode]();
		var margin =3D this.element.getStyle(this.margin).toInt();
		var layout =3D this.wrapper.getStyle(this.layout).toInt();
		var caseIn =3D [[margin, layout], [0, this.offset]];
		var caseOut =3D [[margin, layout], [-this.offset, 0]];
		var start;
		switch (how){
			case 'in': start =3D caseIn; break;
			case 'out': start =3D caseOut; break;
			case 'toggle': start =3D (this.wrapper['offset' + =
this.layout.capitalize()] =3D=3D 0) ? caseIn : caseOut;
		}
		return this.parent(start[0], start[1]);
	},

	slideIn: function(mode){
		return this.start('in', mode);
	},

	slideOut: function(mode){
		return this.start('out', mode);
	},

	hide: function(mode){
		this[mode || this.options.mode]();
		this.open =3D false;
		return this.set([-this.offset, 0]);
	},

	show: function(mode){
		this[mode || this.options.mode]();
		this.open =3D true;
		return this.set([0, this.offset]);
	},

	toggle: function(mode){
		return this.start('toggle', mode);
	}

});

Element.Properties.slide =3D {

	set: function(options){
		var slide =3D this.retrieve('slide');
		if (slide) slide.cancel();
		return this.eliminate('slide').store('slide:options', $extend({link: =
'cancel'}, options));
	},
=09
	get: function(options){
		if (options || !this.retrieve('slide')){
			if (options || !this.retrieve('slide:options')) this.set('slide', =
options);
			this.store('slide', new Fx.Slide(this, =
this.retrieve('slide:options')));
		}
		return this.retrieve('slide');
	}

};

Element.implement({

	slide: function(how, mode){
		how =3D how || 'toggle';
		var slide =3D this.get('slide'), toggle;
		switch (how){
			case 'hide': slide.hide(mode); break;
			case 'show': slide.show(mode); break;
			case 'toggle':
				var flag =3D this.retrieve('slide:flag', slide.open);
				slide[(flag) ? 'slideOut' : 'slideIn'](mode);
				this.store('slide:flag', !flag);
				toggle =3D true;
			break;
			default: slide.start(how, mode);
		}
		if (!toggle) this.eliminate('slide:flag');
		return this;
	}

});
=0A=
=0A=
/*=0A=
Script: Fx.Scroll.js=0A=
	Effect to smoothly scroll any element, including the window.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Fx.Scroll =3D new Class({=0A=
=0A=
	Extends: Fx,=0A=
=0A=
	options: {=0A=
		offset: {'x': 0, 'y': 0},=0A=
		wheelStops: true=0A=
	},=0A=
=0A=
	initialize: function(element, options){=0A=
		this.element =3D this.subject =3D $(element);=0A=
		this.parent(options);=0A=
		var cancel =3D this.cancel.bind(this, false);=0A=
=0A=
		if ($type(this.element) !=3D 'element') this.element =3D =
$(this.element.getDocument().body);=0A=
=0A=
		var stopper =3D this.element;=0A=
=0A=
		if (this.options.wheelStops){=0A=
			this.addEvent('start', function(){=0A=
				stopper.addEvent('mousewheel', cancel);=0A=
			}, true);=0A=
			this.addEvent('complete', function(){=0A=
				stopper.removeEvent('mousewheel', cancel);=0A=
			}, true);=0A=
		}=0A=
	},=0A=
=0A=
	set: function(){=0A=
		var now =3D Array.flatten(arguments);=0A=
		this.element.scrollTo(now[0], now[1]);=0A=
	},=0A=
=0A=
	compute: function(from, to, delta){=0A=
		var now =3D [];=0A=
		var x =3D 2;=0A=
		x.times(function(i){=0A=
			now.push(Fx.compute(from[i], to[i], delta));=0A=
		});=0A=
		return now;=0A=
	},=0A=
=0A=
	start: function(x, y){=0A=
		if (!this.check(arguments.callee, x, y)) return this;=0A=
		var offsetSize =3D this.element.getSize(), scrollSize =3D =
this.element.getScrollSize();=0A=
		var scroll =3D this.element.getScroll(), values =3D {x: x, y: y};=0A=
		for (var z in values){=0A=
			var max =3D scrollSize[z] - offsetSize[z];=0A=
			if ($chk(values[z])) values[z] =3D ($type(values[z]) =3D=3D 'number') =
? values[z].limit(0, max) : max;=0A=
			else values[z] =3D scroll[z];=0A=
			values[z] +=3D this.options.offset[z];=0A=
		}=0A=
		return this.parent([scroll.x, scroll.y], [values.x, values.y]);=0A=
	},=0A=
=0A=
	toTop: function(){=0A=
		return this.start(false, 0);=0A=
	},=0A=
=0A=
	toLeft: function(){=0A=
		return this.start(0, false);=0A=
	},=0A=
=0A=
	toRight: function(){=0A=
		return this.start('right', false);=0A=
	},=0A=
=0A=
	toBottom: function(){=0A=
		return this.start(false, 'bottom');=0A=
	},=0A=
=0A=
	toElement: function(el){=0A=
		var position =3D $(el).getPosition(this.element);=0A=
		return this.start(position.x, position.y);=0A=
	}=0A=
=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Fx.Elements.js=0A=
	Effect to change any number of CSS properties of any number of Elements.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Fx.Elements =3D new Class({=0A=
=0A=
	Extends: Fx.CSS,=0A=
=0A=
	initialize: function(elements, options){=0A=
		this.elements =3D this.subject =3D $$(elements);=0A=
		this.parent(options);=0A=
	},=0A=
=0A=
	compute: function(from, to, delta){=0A=
		var now =3D {};=0A=
		for (var i in from){=0A=
			var iFrom =3D from[i], iTo =3D to[i], iNow =3D now[i] =3D {};=0A=
			for (var p in iFrom) iNow[p] =3D this.parent(iFrom[p], iTo[p], delta);=0A=
		}=0A=
		return now;=0A=
	},=0A=
=0A=
	set: function(now){=0A=
		for (var i in now){=0A=
			var iNow =3D now[i];=0A=
			for (var p in iNow) this.render(this.elements[i], p, iNow[p], =
this.options.unit);=0A=
		}=0A=
		return this;=0A=
	},=0A=
=0A=
	start: function(obj){=0A=
		if (!this.check(arguments.callee, obj)) return this;=0A=
		var from =3D {}, to =3D {};=0A=
		for (var i in obj){=0A=
			var iProps =3D obj[i], iFrom =3D from[i] =3D {}, iTo =3D to[i] =3D {};=0A=
			for (var p in iProps){=0A=
				var parsed =3D this.prepare(this.elements[i], p, iProps[p]);=0A=
				iFrom[p] =3D parsed.from;=0A=
				iTo[p] =3D parsed.to;=0A=
			}=0A=
		}=0A=
		return this.parent(from, to);=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*=0A=
Script: Drag.js=0A=
	The base Drag Class. Can be used to drag and resize Elements using =
mouse events.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Drag =3D new Class({=0A=
=0A=
	Implements: [Events, Options],=0A=
=0A=
	options: {/*=0A=
		onBeforeStart: $empty,=0A=
		onStart: $empty,=0A=
		onDrag: $empty,=0A=
		onCancel: $empty,=0A=
		onComplete: $empty,*/=0A=
		snap: 6,=0A=
		unit: 'px',=0A=
		grid: false,=0A=
		style: true,=0A=
		limit: false,=0A=
		handle: false,=0A=
		invert: false,=0A=
		preventDefault: false,=0A=
		modifiers: {x: 'left', y: 'top'}=0A=
	},=0A=
=0A=
	initialize: function(){=0A=
		var params =3D Array.link(arguments, {'options': Object.type, =
'element': $defined});=0A=
		this.element =3D $(params.element);=0A=
		this.document =3D this.element.getDocument();=0A=
		this.setOptions(params.options || {});=0A=
		var htype =3D $type(this.options.handle);=0A=
		this.handles =3D (htype =3D=3D 'array' || htype =3D=3D 'collection') ? =
$$(this.options.handle) : $(this.options.handle) || this.element;=0A=
		this.mouse =3D {'now': {}, 'pos': {}};=0A=
		this.value =3D {'start': {}, 'now': {}};=0A=
		=0A=
		this.selection =3D (Browser.Engine.trident) ? 'selectstart' : =
'mousedown';=0A=
		=0A=
		this.bound =3D {=0A=
			start: this.start.bind(this),=0A=
			check: this.check.bind(this),=0A=
			drag: this.drag.bind(this),=0A=
			stop: this.stop.bind(this),=0A=
			cancel: this.cancel.bind(this),=0A=
			eventStop: $lambda(false)=0A=
		};=0A=
		this.attach();=0A=
	},=0A=
=0A=
	attach: function(){=0A=
		this.handles.addEvent('mousedown', this.bound.start);=0A=
		return this;=0A=
	},=0A=
=0A=
	detach: function(){=0A=
		this.handles.removeEvent('mousedown', this.bound.start);=0A=
		return this;=0A=
	},=0A=
=0A=
	start: function(event){=0A=
		if (this.options.preventDefault) event.preventDefault();=0A=
		this.fireEvent('beforeStart', this.element);=0A=
		this.mouse.start =3D event.page;=0A=
		var limit =3D this.options.limit;=0A=
		this.limit =3D {'x': [], 'y': []};=0A=
		for (var z in this.options.modifiers){=0A=
			if (!this.options.modifiers[z]) continue;=0A=
			if (this.options.style) this.value.now[z] =3D =
this.element.getStyle(this.options.modifiers[z]).toInt();=0A=
			else this.value.now[z] =3D this.element[this.options.modifiers[z]];=0A=
			if (this.options.invert) this.value.now[z] *=3D -1;=0A=
			this.mouse.pos[z] =3D event.page[z] - this.value.now[z];=0A=
			if (limit && limit[z]){=0A=
				for (var i =3D 2; i--; i){=0A=
					if ($chk(limit[z][i])) this.limit[z][i] =3D $lambda(limit[z][i])();=0A=
				}=0A=
			}=0A=
		}=0A=
		if ($type(this.options.grid) =3D=3D 'number') this.options.grid =3D =
{'x': this.options.grid, 'y': this.options.grid};=0A=
		this.document.addEvents({mousemove: this.bound.check, mouseup: =
this.bound.cancel});=0A=
		this.document.addEvent(this.selection, this.bound.eventStop);=0A=
	},=0A=
=0A=
	check: function(event){=0A=
		if (this.options.preventDefault) event.preventDefault();=0A=
		var distance =3D Math.round(Math.sqrt(Math.pow(event.page.x - =
this.mouse.start.x, 2) + Math.pow(event.page.y - this.mouse.start.y, =
2)));=0A=
		if (distance > this.options.snap){=0A=
			this.cancel();=0A=
			this.document.addEvents({=0A=
				mousemove: this.bound.drag,=0A=
				mouseup: this.bound.stop=0A=
			});=0A=
			this.fireEvent('start', this.element).fireEvent('snap', this.element);=0A=
		}=0A=
	},=0A=
=0A=
	drag: function(event){=0A=
		if (this.options.preventDefault) event.preventDefault();=0A=
		this.mouse.now =3D event.page;=0A=
		for (var z in this.options.modifiers){=0A=
			if (!this.options.modifiers[z]) continue;=0A=
			this.value.now[z] =3D this.mouse.now[z] - this.mouse.pos[z];=0A=
			if (this.options.invert) this.value.now[z] *=3D -1;=0A=
			if (this.options.limit && this.limit[z]){=0A=
				if ($chk(this.limit[z][1]) && (this.value.now[z] > =
this.limit[z][1])){=0A=
					this.value.now[z] =3D this.limit[z][1];=0A=
				} else if ($chk(this.limit[z][0]) && (this.value.now[z] < =
this.limit[z][0])){=0A=
					this.value.now[z] =3D this.limit[z][0];=0A=
				}=0A=
			}=0A=
			if (this.options.grid[z]) this.value.now[z] -=3D (this.value.now[z] % =
this.options.grid[z]);=0A=
			if (this.options.style) =
this.element.setStyle(this.options.modifiers[z], this.value.now[z] + =
this.options.unit);=0A=
			else this.element[this.options.modifiers[z]] =3D this.value.now[z];=0A=
		}=0A=
		this.fireEvent('drag', this.element);=0A=
	},=0A=
=0A=
	cancel: function(event){=0A=
		this.document.removeEvent('mousemove', this.bound.check);=0A=
		this.document.removeEvent('mouseup', this.bound.cancel);=0A=
		if (event){=0A=
			this.document.removeEvent(this.selection, this.bound.eventStop);=0A=
			this.fireEvent('cancel', this.element);=0A=
		}=0A=
	},=0A=
=0A=
	stop: function(event){=0A=
		this.document.removeEvent(this.selection, this.bound.eventStop);=0A=
		this.document.removeEvent('mousemove', this.bound.drag);=0A=
		this.document.removeEvent('mouseup', this.bound.stop);=0A=
		if (event) this.fireEvent('complete', this.element);=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.implement({=0A=
	=0A=
	makeResizable: function(options){=0A=
		return new Drag(this, $merge({modifiers: {'x': 'width', 'y': =
'height'}}, options));=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*=0A=
Script: Drag.Move.js=0A=
	A Drag extension that provides support for the constraining of =
draggables to containers and droppables.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
Drag.Move =3D new Class({=0A=
=0A=
	Extends: Drag,=0A=
=0A=
	options: {=0A=
		droppables: [],=0A=
		container: false=0A=
	},=0A=
=0A=
	initialize: function(element, options){=0A=
		this.parent(element, options);=0A=
		this.droppables =3D $$(this.options.droppables);=0A=
		this.container =3D $(this.options.container);=0A=
		if (this.container && $type(this.container) !=3D 'element') =
this.container =3D $(this.container.getDocument().body);=0A=
		element =3D this.element;=0A=
		=0A=
		var current =3D element.getStyle('position');=0A=
		var position =3D (current !=3D 'static') ? current : 'absolute';=0A=
		if (element.getStyle('left') =3D=3D 'auto' || element.getStyle('top') =
=3D=3D 'auto') =
element.position(element.getPosition(element.offsetParent));=0A=
		=0A=
		element.setStyle('position', position);=0A=
		=0A=
		this.addEvent('start', function(){=0A=
			this.checkDroppables();=0A=
		}, true);=0A=
	},=0A=
=0A=
	start: function(event){=0A=
		if (this.container){=0A=
			var el =3D this.element, cont =3D this.container, ccoo =3D =
cont.getCoordinates(el.offsetParent), cps =3D {}, ems =3D {};=0A=
=0A=
			['top', 'right', 'bottom', 'left'].each(function(pad){=0A=
				cps[pad] =3D cont.getStyle('padding-' + pad).toInt();=0A=
				ems[pad] =3D el.getStyle('margin-' + pad).toInt();=0A=
			}, this);=0A=
=0A=
			var width =3D el.offsetWidth + ems.left + ems.right, height =3D =
el.offsetHeight + ems.top + ems.bottom;=0A=
			var x =3D [ccoo.left + cps.left, ccoo.right - cps.right - width];=0A=
			var y =3D [ccoo.top + cps.top, ccoo.bottom - cps.bottom - height];=0A=
=0A=
			this.options.limit =3D {x: x, y: y};=0A=
		}=0A=
		this.parent(event);=0A=
	},=0A=
=0A=
	checkAgainst: function(el){=0A=
		el =3D el.getCoordinates();=0A=
		var now =3D this.mouse.now;=0A=
		return (now.x > el.left && now.x < el.right && now.y < el.bottom && =
now.y > el.top);=0A=
	},=0A=
=0A=
	checkDroppables: function(){=0A=
		var overed =3D this.droppables.filter(this.checkAgainst, =
this).getLast();=0A=
		if (this.overed !=3D overed){=0A=
			if (this.overed) this.fireEvent('leave', [this.element, this.overed]);=0A=
			if (overed){=0A=
				this.overed =3D overed;=0A=
				this.fireEvent('enter', [this.element, overed]);=0A=
			} else {=0A=
				this.overed =3D null;=0A=
			}=0A=
		}=0A=
	},=0A=
=0A=
	drag: function(event){=0A=
		this.parent(event);=0A=
		if (this.droppables.length) this.checkDroppables();=0A=
	},=0A=
=0A=
	stop: function(event){=0A=
		this.checkDroppables();=0A=
		this.fireEvent('drop', [this.element, this.overed]);=0A=
		this.overed =3D null;=0A=
		return this.parent(event);=0A=
	}=0A=
=0A=
});=0A=
=0A=
Element.implement({=0A=
=0A=
	makeDraggable: function(options){=0A=
		return new Drag.Move(this, options);=0A=
	}=0A=
=0A=
});=0A=
=0A=
=0A=
/*
Script: Hash.Cookie.js
	Class for creating, reading, and deleting Cookies in JSON format.

License:
	MIT-style license.
*/

Hash.Cookie =3D new Class({

	Extends: Cookie,

	options: {
		autoSave: true
	},

	initialize: function(name, options){
		this.parent(name, options);
		this.load();
	},

	save: function(){
		var value =3D JSON.encode(this.hash);
		if (!value || value.length > 4096) return false; //cookie would be =
truncated!
		if (value =3D=3D '{}') this.dispose();
		else this.write(value);
		return true;
	},

	load: function(){
		this.hash =3D new Hash(JSON.decode(this.read(), true));
		return this;
	}

});

Hash.Cookie.implement((function(){
=09
	var methods =3D {};
=09
	Hash.each(Hash.prototype, function(method, name){
		methods[name] =3D function(){
			var value =3D method.apply(this.hash, arguments);
			if (this.options.autoSave) this.save();
			return value;
		};
	});
=09
	return methods;
=09
})());=0A=
=0A=
/*=0A=
Script: Color.js=0A=
	Class for creating and manipulating colors in JavaScript. Supports HSB =
-> RGB Conversions and vice versa.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Color =3D new Native({=0A=
  =0A=
	initialize: function(color, type){=0A=
		if (arguments.length >=3D 3){=0A=
			type =3D "rgb"; color =3D Array.slice(arguments, 0, 3);=0A=
		} else if (typeof color =3D=3D 'string'){=0A=
			if (color.match(/rgb/)) color =3D color.rgbToHex().hexToRgb(true);=0A=
			else if (color.match(/hsb/)) color =3D color.hsbToRgb();=0A=
			else color =3D color.hexToRgb(true);=0A=
		}=0A=
		type =3D type || 'rgb';=0A=
		switch (type){=0A=
			case 'hsb':=0A=
				var old =3D color;=0A=
				color =3D color.hsbToRgb();=0A=
				color.hsb =3D old;=0A=
			break;=0A=
			case 'hex': color =3D color.hexToRgb(true); break;=0A=
		}=0A=
		color.rgb =3D color.slice(0, 3);=0A=
		color.hsb =3D color.hsb || color.rgbToHsb();=0A=
		color.hex =3D color.rgbToHex();=0A=
		return $extend(color, this);=0A=
	}=0A=
=0A=
});=0A=
=0A=
Color.implement({=0A=
=0A=
	mix: function(){=0A=
		var colors =3D Array.slice(arguments);=0A=
		var alpha =3D ($type(colors.getLast()) =3D=3D 'number') ? colors.pop() =
: 50;=0A=
		var rgb =3D this.slice();=0A=
		colors.each(function(color){=0A=
			color =3D new Color(color);=0A=
			for (var i =3D 0; i < 3; i++) rgb[i] =3D Math.round((rgb[i] / 100 * =
(100 - alpha)) + (color[i] / 100 * alpha));=0A=
		});=0A=
		return new Color(rgb, 'rgb');=0A=
	},=0A=
=0A=
	invert: function(){=0A=
		return new Color(this.map(function(value){=0A=
			return 255 - value;=0A=
		}));=0A=
	},=0A=
=0A=
	setHue: function(value){=0A=
		return new Color([value, this.hsb[1], this.hsb[2]], 'hsb');=0A=
	},=0A=
=0A=
	setSaturation: function(percent){=0A=
		return new Color([this.hsb[0], percent, this.hsb[2]], 'hsb');=0A=
	},=0A=
=0A=
	setBrightness: function(percent){=0A=
		return new Color([this.hsb[0], this.hsb[1], percent], 'hsb');=0A=
	}=0A=
=0A=
});=0A=
=0A=
function $RGB(r, g, b){=0A=
	return new Color([r, g, b], 'rgb');=0A=
};=0A=
=0A=
function $HSB(h, s, b){=0A=
	return new Color([h, s, b], 'hsb');=0A=
};=0A=
=0A=
function $HEX(hex){=0A=
	return new Color(hex, 'hex');=0A=
};=0A=
=0A=
Array.implement({=0A=
=0A=
	rgbToHsb: function(){=0A=
		var red =3D this[0], green =3D this[1], blue =3D this[2];=0A=
		var hue, saturation, brightness;=0A=
		var max =3D Math.max(red, green, blue), min =3D Math.min(red, green, =
blue);=0A=
		var delta =3D max - min;=0A=
		brightness =3D max / 255;=0A=
		saturation =3D (max !=3D 0) ? delta / max : 0;=0A=
		if (saturation =3D=3D 0){=0A=
			hue =3D 0;=0A=
		} else {=0A=
			var rr =3D (max - red) / delta;=0A=
			var gr =3D (max - green) / delta;=0A=
			var br =3D (max - blue) / delta;=0A=
			if (red =3D=3D max) hue =3D br - gr;=0A=
			else if (green =3D=3D max) hue =3D 2 + rr - br;=0A=
			else hue =3D 4 + gr - rr;=0A=
			hue /=3D 6;=0A=
			if (hue < 0) hue++;=0A=
		}=0A=
		return [Math.round(hue * 360), Math.round(saturation * 100), =
Math.round(brightness * 100)];=0A=
	},=0A=
=0A=
	hsbToRgb: function(){=0A=
		var br =3D Math.round(this[2] / 100 * 255);=0A=
		if (this[1] =3D=3D 0){=0A=
			return [br, br, br];=0A=
		} else {=0A=
			var hue =3D this[0] % 360;=0A=
			var f =3D hue % 60;=0A=
			var p =3D Math.round((this[2] * (100 - this[1])) / 10000 * 255);=0A=
			var q =3D Math.round((this[2] * (6000 - this[1] * f)) / 600000 * 255);=0A=
			var t =3D Math.round((this[2] * (6000 - this[1] * (60 - f))) / 600000 =
* 255);=0A=
			switch (Math.floor(hue / 60)){=0A=
				case 0: return [br, t, p];=0A=
				case 1: return [q, br, p];=0A=
				case 2: return [p, br, t];=0A=
				case 3: return [p, q, br];=0A=
				case 4: return [t, p, br];=0A=
				case 5: return [br, p, q];=0A=
			}=0A=
		}=0A=
		return false;=0A=
	}=0A=
=0A=
});=0A=
=0A=
String.implement({=0A=
=0A=
	rgbToHsb: function(){=0A=
		var rgb =3D this.match(/\d{1,3}/g);=0A=
		return (rgb) ? hsb.rgbToHsb() : null;=0A=
	},=0A=
	=0A=
	hsbToRgb: function(){=0A=
		var hsb =3D this.match(/\d{1,3}/g);=0A=
		return (hsb) ? hsb.hsbToRgb() : null;=0A=
	}=0A=
=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Group.js=0A=
	Class for monitoring collections of events=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Group =3D new Class({=0A=
=0A=
	initialize: function(){=0A=
		this.instances =3D Array.flatten(arguments);=0A=
		this.events =3D {};=0A=
		this.checker =3D {};=0A=
	},=0A=
=0A=
	addEvent: function(type, fn){=0A=
		this.checker[type] =3D this.checker[type] || {};=0A=
		this.events[type] =3D this.events[type] || [];=0A=
		if (this.events[type].contains(fn)) return false;=0A=
		else this.events[type].push(fn);=0A=
		this.instances.each(function(instance, i){=0A=
			instance.addEvent(type, this.check.bind(this, [type, instance, i]));=0A=
		}, this);=0A=
		return this;=0A=
	},=0A=
=0A=
	check: function(type, instance, i){=0A=
		this.checker[type][i] =3D true;=0A=
		var every =3D this.instances.every(function(current, j){=0A=
			return this.checker[type][j] || false;=0A=
		}, this);=0A=
		if (!every) return;=0A=
		this.checker[type] =3D {};=0A=
		this.events[type].each(function(event){=0A=
			event.call(this, this.instances, instance);=0A=
		}, this);=0A=
	}=0A=
=0A=
});=0A=
=0A=
=0A=
/*=0A=
Script: Assets.js=0A=
	Provides methods to dynamically load JavaScript, CSS, and Image files =
into the document.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Asset =3D new Hash({=0A=
=0A=
	javascript: function(source, properties){=0A=
		properties =3D $extend({=0A=
			onload: $empty,=0A=
			document: document,=0A=
			check: $lambda(true)=0A=
		}, properties);=0A=
		=0A=
		var script =3D new Element('script', {'src': source, 'type': =
'text/javascript'});=0A=
		=0A=
		var load =3D properties.onload.bind(script), check =3D =
properties.check, doc =3D properties.document;=0A=
		delete properties.onload; delete properties.check; delete =
properties.document;=0A=
		=0A=
		script.addEvents({=0A=
			load: load,=0A=
			readystatechange: function(){=0A=
				if (['loaded', 'complete'].contains(this.readyState)) load();=0A=
			}=0A=
		}).setProperties(properties);=0A=
		=0A=
		=0A=
		if (Browser.Engine.webkit419) var checker =3D (function(){=0A=
			if (!$try(check)) return;=0A=
			$clear(checker);=0A=
			load();=0A=
		}).periodical(50);=0A=
		=0A=
		return script.inject(doc.head);=0A=
	},=0A=
=0A=
	css: function(source, properties){=0A=
		return new Element('link', $merge({=0A=
			'rel': 'stylesheet', 'media': 'screen', 'type': 'text/css', 'href': =
source=0A=
		}, properties)).inject(document.head);=0A=
	},=0A=
=0A=
	image: function(source, properties){=0A=
		properties =3D $merge({=0A=
			'onload': $empty,=0A=
			'onabort': $empty,=0A=
			'onerror': $empty=0A=
		}, properties);=0A=
		var image =3D new Image();=0A=
		var element =3D $(image) || new Element('img');=0A=
		['load', 'abort', 'error'].each(function(name){=0A=
			var type =3D 'on' + name;=0A=
			var event =3D properties[type];=0A=
			delete properties[type];=0A=
			image[type] =3D function(){=0A=
				if (!image) return;=0A=
				if (!element.parentNode){=0A=
					element.width =3D image.width;=0A=
					element.height =3D image.height;=0A=
				}=0A=
				image =3D image.onload =3D image.onabort =3D image.onerror =3D null;=0A=
				event.delay(1, element, element);=0A=
				element.fireEvent(name, element, 1);=0A=
			};=0A=
		});=0A=
		image.src =3D element.src =3D source;=0A=
		if (image && image.complete) image.onload.delay(1);=0A=
		return element.setProperties(properties);=0A=
	},=0A=
=0A=
	images: function(sources, options){=0A=
		options =3D $merge({=0A=
			onComplete: $empty,=0A=
			onProgress: $empty=0A=
		}, options);=0A=
		if (!sources.push) sources =3D [sources];=0A=
		var images =3D [];=0A=
		var counter =3D 0;=0A=
		sources.each(function(source){=0A=
			var img =3D new Asset.image(source, {=0A=
				'onload': function(){=0A=
					options.onProgress.call(this, counter, sources.indexOf(source));=0A=
					counter++;=0A=
					if (counter =3D=3D sources.length) options.onComplete();=0A=
				}=0A=
			});=0A=
			images.push(img);=0A=
		});=0A=
		return new Elements(images);=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*=0A=
Script: Sortables.js=0A=
	Class for creating a drag and drop sorting interface for lists of items.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Sortables =3D new Class({=0A=
=0A=
	Implements: [Events, Options],=0A=
=0A=
	options: {/*=0A=
		onSort: $empty,=0A=
		onStart: $empty,=0A=
		onComplete: $empty,*/=0A=
		snap: 4,=0A=
		opacity: 1,=0A=
		clone: false,=0A=
		revert: false,=0A=
		handle: false,=0A=
		constrain: false=0A=
	},=0A=
=0A=
	initialize: function(lists, options){=0A=
		this.setOptions(options);=0A=
		this.elements =3D [];=0A=
		this.lists =3D [];=0A=
		this.idle =3D true;=0A=
		=0A=
		this.addLists($$($(lists) || lists));=0A=
		if (!this.options.clone) this.options.revert =3D false;=0A=
		if (this.options.revert) this.effect =3D new Fx.Morph(null, =
$merge({duration: 250, link: 'cancel'}, this.options.revert));=0A=
	},=0A=
=0A=
	attach: function(){=0A=
		this.addLists(this.lists);=0A=
		return this;=0A=
	},=0A=
=0A=
	detach: function(){=0A=
		this.lists =3D this.removeLists(this.lists);=0A=
		return this;=0A=
	},=0A=
=0A=
	addItems: function(){=0A=
		Array.flatten(arguments).each(function(element){=0A=
			this.elements.push(element);=0A=
			var start =3D element.retrieve('sortables:start', =
this.start.bindWithEvent(this, element));=0A=
			(this.options.handle ? element.getElement(this.options.handle) || =
element : element).addEvent('mousedown', start);=0A=
		}, this);=0A=
		return this;=0A=
	},=0A=
=0A=
	addLists: function(){=0A=
		Array.flatten(arguments).each(function(list){=0A=
			this.lists.push(list);=0A=
			this.addItems(list.getChildren());=0A=
		}, this);=0A=
		return this;=0A=
	},=0A=
=0A=
	removeItems: function(){=0A=
		var elements =3D [];=0A=
		Array.flatten(arguments).each(function(element){=0A=
			elements.push(element);=0A=
			this.elements.erase(element);=0A=
			var start =3D element.retrieve('sortables:start');=0A=
			(this.options.handle ? element.getElement(this.options.handle) || =
element : element).removeEvent('mousedown', start);=0A=
		}, this);=0A=
		return $$(elements);=0A=
	},=0A=
=0A=
	removeLists: function(){=0A=
		var lists =3D [];=0A=
		Array.flatten(arguments).each(function(list){=0A=
			lists.push(list);=0A=
			this.lists.erase(list);=0A=
			this.removeItems(list.getChildren());=0A=
		}, this);=0A=
		return $$(lists);=0A=
	},=0A=
=0A=
	getClone: function(event, element){=0A=
		if (!this.options.clone) return new =
Element('div').inject(document.body);=0A=
		if ($type(this.options.clone) =3D=3D 'function') return =
this.options.clone.call(this, event, element, this.list);=0A=
		return element.clone(true).setStyles({=0A=
			'margin': '0px',=0A=
			'position': 'absolute',=0A=
			'visibility': 'hidden',=0A=
			'width': element.getStyle('width')=0A=
		=
}).inject(this.list).position(element.getPosition(element.getOffsetParent=
()));=0A=
	},=0A=
=0A=
	getDroppables: function(){=0A=
		var droppables =3D this.list.getChildren();=0A=
		if (!this.options.constrain) droppables =3D =
this.lists.concat(droppables).erase(this.list);=0A=
		return droppables.erase(this.clone).erase(this.element);=0A=
	},=0A=
=0A=
	insert: function(dragging, element){=0A=
		var where =3D 'inside';=0A=
		if (this.lists.contains(element)){=0A=
			this.list =3D element;=0A=
			this.drag.droppables =3D this.getDroppables();=0A=
		} else {=0A=
			where =3D this.element.getAllPrevious().contains(element) ? 'before' =
: 'after';=0A=
		}=0A=
		this.element.inject(element, where);=0A=
		this.fireEvent('sort', [this.element, this.clone]);=0A=
	},=0A=
=0A=
	start: function(event, element){=0A=
		if (!this.idle) return;=0A=
		this.idle =3D false;=0A=
		this.element =3D element;=0A=
		this.opacity =3D element.get('opacity');=0A=
		this.list =3D element.getParent();=0A=
		this.clone =3D this.getClone(event, element);=0A=
		=0A=
		this.drag =3D new Drag.Move(this.clone, {=0A=
			snap: this.options.snap,=0A=
			container: this.options.constrain && this.element.getParent(),=0A=
			droppables: this.getDroppables(),=0A=
			onSnap: function(){=0A=
				event.stop();=0A=
				this.clone.setStyle('visibility', 'visible');=0A=
				this.element.set('opacity', this.options.opacity || 0);=0A=
				this.fireEvent('start', [this.element, this.clone]);=0A=
			}.bind(this),=0A=
			onEnter: this.insert.bind(this),=0A=
			onCancel: this.reset.bind(this),=0A=
			onComplete: this.end.bind(this)=0A=
		});=0A=
		=0A=
		this.clone.inject(this.element, 'before');=0A=
		this.drag.start(event);=0A=
	},=0A=
=0A=
	end: function(){=0A=
		this.drag.detach();=0A=
		this.element.set('opacity', this.opacity);=0A=
		if (this.effect){=0A=
			var dim =3D this.element.getStyles('width', 'height');=0A=
			var pos =3D =
this.clone.computePosition(this.element.getPosition(this.clone.offsetPare=
nt));=0A=
			this.effect.element =3D this.clone;=0A=
			this.effect.start({=0A=
				top: pos.top,=0A=
				left: pos.left,=0A=
				width: dim.width,=0A=
				height: dim.height,=0A=
				opacity: 0.25=0A=
			}).chain(this.reset.bind(this));=0A=
		} else {=0A=
			this.reset();=0A=
		}=0A=
	},=0A=
=0A=
	reset: function(){=0A=
		this.idle =3D true;=0A=
		this.clone.destroy();=0A=
		this.fireEvent('complete', this.element);=0A=
	},=0A=
=0A=
	serialize: function(){=0A=
		var params =3D Array.link(arguments, {modifier: Function.type, index: =
$defined});=0A=
		var serial =3D this.lists.map(function(list){=0A=
			return list.getChildren().map(params.modifier || function(element){=0A=
				return element.get('id');=0A=
			}, this);=0A=
		}, this);=0A=
		=0A=
		var index =3D params.index;=0A=
		if (this.lists.length =3D=3D 1) index =3D 0;=0A=
		return $chk(index) && index >=3D 0 && index < this.lists.length ? =
serial[index] : serial;=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*
Script: Tips.js
	Class for creating nice tips that follow the mouse cursor when hovering =
an element.

License:
	MIT-style license.
*/

var Tips =3D new Class({

	Implements: [Events, Options],

	options: {
		onShow: function(tip){
			tip.setStyle('visibility', 'visible');
		},
		onHide: function(tip){
			tip.setStyle('visibility', 'hidden');
		},
		showDelay: 100,
		hideDelay: 100,
		className: null,
		offsets: {x: 16, y: 16},
		fixed: false
	},

	initialize: function(){
		var params =3D Array.link(arguments, {options: Object.type, elements: =
$defined});
		this.setOptions(params.options || null);
	=09
		this.tip =3D new Element('div').inject(document.body);
	=09
		if (this.options.className) this.tip.addClass(this.options.className);
	=09
		var top =3D new Element('div', {'class': 'tip-top'}).inject(this.tip);
		this.container =3D new Element('div', {'class': =
'tip'}).inject(this.tip);
		var bottom =3D new Element('div', {'class': =
'tip-bottom'}).inject(this.tip);

		this.tip.setStyles({position: 'absolute', top: 0, left: 0, visibility: =
'hidden'});
	=09
		if (params.elements) this.attach(params.elements);
	},
=09
	attach: function(elements){
		$$(elements).each(function(element){
			var title =3D element.retrieve('tip:title', element.get('title'));
			var text =3D element.retrieve('tip:text', element.get('rel') || =
element.get('href'));
			var enter =3D element.retrieve('tip:enter', =
this.elementEnter.bindWithEvent(this, element));
			var leave =3D element.retrieve('tip:leave', =
this.elementLeave.bindWithEvent(this, element));
			element.addEvents({mouseenter: enter, mouseleave: leave});
			if (!this.options.fixed){
				var move =3D element.retrieve('tip:move', =
this.elementMove.bindWithEvent(this, element));
				element.addEvent('mousemove', move);
			}
			element.store('tip:native', element.get('title'));
			element.erase('title');
		}, this);
		return this;
	},
=09
	detach: function(elements){
		$$(elements).each(function(element){
			element.removeEvent('mouseenter', element.retrieve('tip:enter') || =
$empty);
			element.removeEvent('mouseleave', element.retrieve('tip:leave') || =
$empty);
			element.removeEvent('mousemove', element.retrieve('tip:move') || =
$empty);
			=
element.eliminate('tip:enter').eliminate('tip:leave').eliminate('tip:move=
');
			var original =3D element.retrieve('tip:native');
			if (original) element.set('title', original);
		});
		return this;
	},
=09
	elementEnter: function(event, element){
	=09
		$A(this.container.childNodes).each(Element.dispose);
	=09
		var title =3D element.retrieve('tip:title');
	=09
		if (title){
			this.titleElement =3D new Element('div', {'class': =
'tip-title'}).inject(this.container);
			this.fill(this.titleElement, title);
		}
	=09
		var text =3D element.retrieve('tip:text');
		if (text){
			this.textElement =3D new Element('div', {'class': =
'tip-text'}).inject(this.container);
			this.fill(this.textElement, text);
		}
	=09
		this.timer =3D $clear(this.timer);
		this.timer =3D this.show.delay(this.options.showDelay, this);

		this.position((!this.options.fixed) ? event : {page: =
element.getPosition()});
	},
=09
	elementLeave: function(event){
		$clear(this.timer);
		this.timer =3D this.hide.delay(this.options.hideDelay, this);
	},
=09
	elementMove: function(event){
		this.position(event);
	},
=09
	position: function(event){
		var size =3D window.getSize(), scroll =3D window.getScroll();
		var tip =3D {x: this.tip.offsetWidth, y: this.tip.offsetHeight};
		var props =3D {x: 'left', y: 'top'};
		for (var z in props){
			var pos =3D event.page[z] + this.options.offsets[z];
			if ((pos + tip[z] - scroll[z]) > size[z]) pos =3D event.page[z] - =
this.options.offsets[z] - tip[z];
			this.tip.setStyle(props[z], pos);
		}
	},
=09
	fill: function(element, contents){
		(typeof contents =3D=3D 'string') ? element.set('html', contents) : =
element.adopt(contents);
	},

	show: function(){
		this.fireEvent('show', this.tip);
	},

	hide: function(){
		this.fireEvent('hide', this.tip);
	}

});=0A=
=0A=
/*
Script: SmoothScroll.js
	Class for creating a smooth scrolling effect to all internal links on =
the page.

License:
	MIT-style license.
*/

var SmoothScroll =3D new Class({

	Extends: Fx.Scroll,

	initialize: function(options, context){
		context =3D context || document;
		var doc =3D context.getDocument(), win =3D context.getWindow();
		this.parent(doc, options);
		this.links =3D (this.options.links) ? $$(this.options.links) : =
$$(doc.links);
		var location =3D win.location.href.match(/^[^#]*/)[0] + '#';
		this.links.each(function(link){
			if (link.href.indexOf(location) !=3D 0) return;
			var anchor =3D link.href.substr(location.length);
			if (anchor && $(anchor)) this.useLink(link, anchor);
		}, this);
		if (!Browser.Engine.webkit419) this.addEvent('complete', function(){
			win.location.hash =3D this.anchor;
		}, true);
	},

	useLink: function(link, anchor){
		link.addEvent('click', function(event){
			this.anchor =3D anchor;
			this.toElement(anchor);
			event.stop();
		}.bind(this));
	}

});=0A=
=0A=
/*=0A=
Script: Slider.js=0A=
	Class for creating horizontal and vertical slider controls.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Slider =3D new Class({=0A=
=0A=
	Implements: [Events, Options],=0A=
=0A=
	options: {/*=0A=
		onChange: $empty,=0A=
		onComplete: $empty,*/=0A=
		onTick: function(position){=0A=
			if(this.options.snap) position =3D this.toPosition(this.step);=0A=
			this.knob.setStyle(this.property, position);=0A=
		},=0A=
		snap: false,=0A=
		offset: 0,=0A=
		range: false,=0A=
		wheel: false,=0A=
		steps: 100,=0A=
		mode: 'horizontal'=0A=
	},=0A=
=0A=
	initialize: function(element, knob, options){=0A=
		this.setOptions(options);=0A=
		this.element =3D $(element);=0A=
		this.knob =3D $(knob);=0A=
		this.previousChange =3D this.previousEnd =3D this.step =3D -1;=0A=
		this.element.addEvent('mousedown', this.clickedElement.bind(this));=0A=
		if (this.options.wheel) this.element.addEvent('mousewheel', =
this.scrolledElement.bindWithEvent(this));=0A=
		var offset, limit =3D {}, modifiers =3D {'x': false, 'y': false};=0A=
		switch (this.options.mode){=0A=
			case 'vertical':=0A=
				this.axis =3D 'y';=0A=
				this.property =3D 'top';=0A=
				offset =3D 'offsetHeight';=0A=
				break;=0A=
			case 'horizontal':=0A=
				this.axis =3D 'x';=0A=
				this.property =3D 'left';=0A=
				offset =3D 'offsetWidth';=0A=
		}=0A=
		this.half =3D this.knob[offset] / 2;=0A=
		this.full =3D this.element[offset] - this.knob[offset] + =
(this.options.offset * 2);=0A=
		this.min =3D $chk(this.options.range[0]) ? this.options.range[0] : 0;=0A=
		this.max =3D $chk(this.options.range[1]) ? this.options.range[1] : =
this.options.steps;=0A=
		this.range =3D this.max - this.min;=0A=
		this.steps =3D this.options.steps || this.full;=0A=
		this.stepSize =3D Math.abs(this.range) / this.steps;=0A=
		this.stepWidth =3D this.stepSize * this.full / Math.abs(this.range) ;=0A=
		=0A=
		this.knob.setStyle('position', 'relative').setStyle(this.property, - =
this.options.offset);=0A=
		modifiers[this.axis] =3D this.property;=0A=
		limit[this.axis] =3D [- this.options.offset, this.full - =
this.options.offset];=0A=
		this.drag =3D new Drag(this.knob, {=0A=
			snap: 0,=0A=
			limit: limit,=0A=
			modifiers: modifiers,=0A=
			onDrag: this.draggedKnob.bind(this),=0A=
			onStart: this.draggedKnob.bind(this),=0A=
			onComplete: function(){=0A=
				this.draggedKnob();=0A=
				this.end();=0A=
			}.bind(this)=0A=
		});=0A=
		if (this.options.snap) {=0A=
			this.drag.options.grid =3D Math.ceil(this.stepWidth);=0A=
			this.drag.options.limit[this.axis][1] =3D this.full;=0A=
		}=0A=
	},=0A=
=0A=
	set: function(step){=0A=
		if (!((this.range > 0) ^ (step < this.min))) step =3D this.min;=0A=
		if (!((this.range > 0) ^ (step > this.max))) step =3D this.max;=0A=
		=0A=
		this.step =3D Math.round(step);=0A=
		this.checkStep();=0A=
		this.end();=0A=
		this.fireEvent('tick', this.toPosition(this.step));=0A=
		return this;=0A=
	},=0A=
=0A=
	clickedElement: function(event){=0A=
		var dir =3D this.range < 0 ? -1 : 1;=0A=
		var position =3D event.page[this.axis] - =
this.element.getPosition()[this.axis] - this.half;=0A=
		position =3D position.limit(-this.options.offset, this.full =
-this.options.offset);=0A=
		=0A=
		this.step =3D Math.round(this.min + dir * this.toStep(position));=0A=
		this.checkStep();=0A=
		this.end();=0A=
		this.fireEvent('tick', position);=0A=
	},=0A=
	=0A=
	scrolledElement: function(event){=0A=
		var mode =3D (this.options.mode =3D=3D 'horizontal') ? (event.wheel < =
0) : (event.wheel > 0);=0A=
		this.set(mode ? this.step - this.stepSize : this.step + this.stepSize);=0A=
		event.stop();=0A=
	},=0A=
=0A=
	draggedKnob: function(){=0A=
		var dir =3D this.range < 0 ? -1 : 1;=0A=
		var position =3D this.drag.value.now[this.axis];=0A=
		position =3D position.limit(-this.options.offset, this.full =
-this.options.offset);=0A=
		this.step =3D Math.round(this.min + dir * this.toStep(position));=0A=
		this.checkStep();=0A=
	},=0A=
=0A=
	checkStep: function(){=0A=
		if (this.previousChange !=3D this.step){=0A=
			this.previousChange =3D this.step;=0A=
			this.fireEvent('change', this.step);=0A=
		}=0A=
	},=0A=
=0A=
	end: function(){=0A=
		if (this.previousEnd !=3D=3D this.step){=0A=
			this.previousEnd =3D this.step;=0A=
			this.fireEvent('complete', this.step + '');=0A=
		}=0A=
	},=0A=
=0A=
	toStep: function(position){=0A=
		var step =3D (position + this.options.offset) * this.stepSize / =
this.full * this.steps;=0A=
		return this.options.steps ? Math.round(step -=3D step % this.stepSize) =
: step;=0A=
	},=0A=
=0A=
	toPosition: function(step){=0A=
		return (this.full * Math.abs(this.min - step)) / (this.steps * =
this.stepSize) - this.options.offset;=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*=0A=
Script: Scroller.js=0A=
	Class which scrolls the contents of any Element (including the window) =
when the mouse reaches the Element's boundaries.=0A=
=0A=
License:=0A=
	MIT-style license.=0A=
*/=0A=
=0A=
var Scroller =3D new Class({=0A=
=0A=
	Implements: [Events, Options],=0A=
=0A=
	options: {=0A=
		area: 20,=0A=
		velocity: 1,=0A=
		onChange: function(x, y){=0A=
			this.element.scrollTo(x, y);=0A=
		}=0A=
	},=0A=
=0A=
	initialize: function(element, options){=0A=
		this.setOptions(options);=0A=
		this.element =3D $(element);=0A=
		this.listener =3D ($type(this.element) !=3D 'element') ? =
$(this.element.getDocument().body) : this.element;=0A=
		this.timer =3D null;=0A=
		this.coord =3D this.getCoords.bind(this);=0A=
	},=0A=
=0A=
	start: function(){=0A=
		this.listener.addEvent('mousemove', this.coord);=0A=
	},=0A=
=0A=
	stop: function(){=0A=
		this.listener.removeEvent('mousemove', this.coord);=0A=
		this.timer =3D $clear(this.timer);=0A=
	},=0A=
=0A=
	getCoords: function(event){=0A=
		this.page =3D (this.listener.get('tag') =3D=3D 'body') ? event.client =
: event.page;=0A=
		if (!this.timer) this.timer =3D this.scroll.periodical(50, this);=0A=
	},=0A=
=0A=
	scroll: function(){=0A=
		var size =3D this.element.getSize(), scroll =3D =
this.element.getScroll(), pos =3D this.element.getPosition(), change =3D =
{'x': 0, 'y': 0};=0A=
		for (var z in this.page){=0A=
			if (this.page[z] < (this.options.area + pos[z]) && scroll[z] !=3D 0)=0A=
				change[z] =3D (this.page[z] - this.options.area - pos[z]) * =
this.options.velocity;=0A=
			else if (this.page[z] + this.options.area > (size[z] + pos[z]) && =
size[z] + size[z] !=3D scroll[z])=0A=
				change[z] =3D (this.page[z] - size[z] + this.options.area - pos[z]) =
* this.options.velocity;=0A=
		}=0A=
		if (change.y || change.x) this.fireEvent('change', [scroll.x + =
change.x, scroll.y + change.y]);=0A=
	}=0A=
=0A=
});=0A=
=0A=
/*
Script: Accordion.js
	An Fx.Elements extension which allows you to easily create accordion =
type controls.

License:
	MIT-style license.
*/

var Accordion =3D new Class({

	Extends: Fx.Elements,

	options: {/*
		onActive: $empty,
		onBackground: $empty,*/
		display: 0,
		show: false,
		height: true,
		width: false,
		opacity: true,
		fixedHeight: false,
		fixedWidth: false,
		wait: false,
		alwaysHide: false
	},

	initialize: function(){
		var params =3D Array.link(arguments, {'container': Element.type, =
'options': Object.type, 'togglers': $defined, 'elements': $defined});
		this.parent(params.elements, params.options);
		this.togglers =3D $$(params.togglers);
		this.container =3D $(params.container);
		this.previous =3D -1;
		if (this.options.alwaysHide) this.options.wait =3D true;
		if ($chk(this.options.show)){
			this.options.display =3D false;
			this.previous =3D this.options.show;
		}
		if (this.options.start){
			this.options.display =3D false;
			this.options.show =3D false;
		}
		this.effects =3D {};
		if (this.options.opacity) this.effects.opacity =3D 'fullOpacity';
		if (this.options.width) this.effects.width =3D this.options.fixedWidth =
? 'fullWidth' : 'offsetWidth';
		if (this.options.height) this.effects.height =3D =
this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';
		for (var i =3D 0, l =3D this.togglers.length; i < l; i++) =
this.addSection(this.togglers[i], this.elements[i]);
		this.elements.each(function(el, i){
			if (this.options.show =3D=3D=3D i){
				this.fireEvent('active', [this.togglers[i], el]);
			} else {
				for (var fx in this.effects) el.setStyle(fx, 0);
			}
		}, this);
		if ($chk(this.options.display)) this.display(this.options.display);
	},

	addSection: function(toggler, element, pos){
		toggler =3D $(toggler);
		element =3D $(element);
		var test =3D this.togglers.contains(toggler);
		var len =3D this.togglers.length;
		this.togglers.include(toggler);
		this.elements.include(element);
		if (len && (!test || pos)){
			pos =3D $pick(pos, len - 1);
			toggler.inject(this.togglers[pos], 'before');
			element.inject(toggler, 'after');
		} else if (this.container && !test){
			toggler.inject(this.container);
			element.inject(this.container);
		}
		var idx =3D this.togglers.indexOf(toggler);
		toggler.addEvent('click', this.display.bind(this, idx));
		if (this.options.height) element.setStyles({'padding-top': 0, =
'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});
		if (this.options.width) element.setStyles({'padding-left': 0, =
'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});
		element.fullOpacity =3D 1;
		if (this.options.fixedWidth) element.fullWidth =3D =
this.options.fixedWidth;
		if (this.options.fixedHeight) element.fullHeight =3D =
this.options.fixedHeight;
		element.setStyle('overflow', 'hidden');
		if (!test){
			for (var fx in this.effects) element.setStyle(fx, 0);
		}
		return this;
	},

	display: function(index){
		index =3D ($type(index) =3D=3D 'element') ? =
this.elements.indexOf(index) : index;
		if ((this.timer && this.options.wait) || (index =3D=3D=3D =
this.previous && !this.options.alwaysHide)) return this;
		this.previous =3D index;
		var obj =3D {};
		this.elements.each(function(el, i){
			obj[i] =3D {};
			var hide =3D (i !=3D index) || (this.options.alwaysHide && =
(el.offsetHeight > 0));
			this.fireEvent(hide ? 'background' : 'active', [this.togglers[i], =
el]);
			for (var fx in this.effects) obj[i][fx] =3D hide ? 0 : =
el[this.effects[fx]];
		}, this);
		return this.start(obj);
	}

});=0A=
=0A=
/////////////////////////////////////////////////////////////////////////=
/////////////////////////////////////////////////////////////////////////=
/////////////=0A=
/* *************************************=0A=
 * Filename:      lexum-classes.js=0A=
 * Version:       1.0=0A=
 * Author:        Benoit Giroux=0A=
 *                girouxb@lexum.umontreal.ca=0A=
 * Last updated:  2009-02-25, 9h30=0A=
 *=0A=
 ************************************* */=0A=
var IE6 =3D Browser.Engine.trident && Browser.Engine.version =3D=3D 4;=0A=
var IE7 =3D Browser.Engine.trident && Browser.Engine.version =3D=3D 5;=0A=
=0A=
$defined =3D function(element) {=0A=
	return (typeof element !=3D 'undefined');=0A=
}=0A=
=0A=
$notDefined =3D function(element) {=0A=
	return !$defined(element);=0A=
}=0A=
=0A=
$null =3D function(element) {=0A=
	return (element =3D=3D null);=0A=
}=0A=
=0A=
$notNull =3D function(element) {=0A=
	return !$null(element);=0A=
}=0A=
=0A=
$clearInlineEvents =3D function(element) {=0A=
	element.removeProperty('onclick');=0A=
	element.removeProperty('ondblclick');=0A=
	element.removeProperty('onmousedown');=0A=
	element.removeProperty('onmousemove');=0A=
	element.removeProperty('onmouseout');=0A=
	element.removeProperty('onmouseover');=0A=
	element.removeProperty('onmouseup');=0A=
	element.removeProperty('onchange');=0A=
	element.removeProperty('onsubmit');=0A=
	element.removeProperty('onreset');=0A=
	element.removeProperty('onselect');=0A=
	element.removeProperty('onblur');=0A=
	element.removeProperty('onfocus');=0A=
	element.removeProperty('onkeydown');=0A=
	element.removeProperty('onkeypress');=0A=
	element.removeProperty('onkeyup');=0A=
	element.removeProperty('onload');=0A=
	element.removeProperty('onunload');=0A=
}=0A=
=0A=
/** ********************************************* =0A=
  * The Toggler and Togglee classes.=0A=
  * Made for easy toggling of the visibility of an=0A=
  * element (the Togglee) by clicking another=0A=
  * element (the Toggler).=0A=
  *=0A=
  * The idea is to create a Togglee first:=0A=
  * var togglee =3D new Togglee(element, false, options);=0A=
  *=0A=
  * The first parameter is the html element that will be toggled=0A=
  * The second parameter is whether or not the element will be initially =
visible=0A=
  * The third parameter are the Fx options to be applied when the =
element is toggled=0A=
  *=0A=
  * Then you need to create at least one Toggler:=0A=
  * var toggler =3D new Toggler(toggler, togglee, options);=0A=
  *=0A=
  * The first parameter is the html element that will be the toggler=0A=
  * The second parameter is the Togglee created first=0A=
  * The third parameter are the options for the Toggler.=0A=
  *=0A=
  * Then the magic operates and you have a toggler/togglee on your page.=0A=
  *=0A=
  *********************************************** */=0A=
=0A=
var Toggler =3D new Class({=0A=
	Implements: Options,=0A=
	=0A=
	// Default options=0A=
	options: {=0A=
		collapsedText: null,     // The (optional) text to display when the =
Togglee is collapsed (hidden)=0A=
		expandedText: null,      // The (optional) text to display when the =
Togglee is expanded (visible)=0A=
		append: false,           // Whether the collapsed and expanded text is =
appended to the text already present for the toggler.=0A=
		input: false,            // Whether the toggler is an input of type =
"button" (<input type=3D"button"/>)=0A=
		expandedImage: null,     // The path to the (optional) image to =
display in front of the toggler when the Togglee is expanded (visible) =
(often a 'minus' sign)=0A=
		collapsedImage: null,    // The path to the (optional) image to =
display in front of the toggler when the Togglee is collapsed (hidden) =
(often a 'plus' sign)=0A=
		imagePosition: 'inside', // The position of the image. Can be "inside" =
or "outside".=0A=
		collapsedClass: null     // The (optional) class to apply to the =
toggler when the Togglee is collapsed (hidden)=0A=
	},=0A=
	=0A=
	initialize: function(toggler, togglee, options) {=0A=
		this.toggler =3D $(toggler);=0A=
		this.togglee =3D togglee;=0A=
		this.togglee.addToggler(this);=0A=
		this.setOptions(options);=0A=
=0A=
		// Add the toggle event on the toggler=0A=
		this.addEvents();=0A=
		this.toggler.setStyle('cursor', 'pointer');=0A=
		=0A=
		// If the toggler element is staticly positioned, change it to =
relative so that=0A=
		// the prepended images will be absolutely positioned relatively to =
the toggler.=0A=
		if (this.toggler.getStyle('position') =3D=3D 'static') {=0A=
			this.toggler.setStyle('position', 'relative');=0A=
		}=0A=
		=0A=
		// Initializing the toggler now that everything is set, to put it=0A=
		// in sync with the state of its Togglee.=0A=
		this.update(this.togglee.isVisible());=0A=
		=0A=
	},=0A=
	=0A=
	addEvents: function() {=0A=
		var myself =3D this;=0A=
		this.toggler.addEvent('click', function(_e) {myself.toggle(_e);});=0A=
		this.toggler.addEvent('focus', function() {myself.toggler.blur();});=0A=
		$clearInlineEvents(this.toggler);=0A=
=0A=
		// Since a lot of time, togglers were once links, check if the toggler=0A=
		// has a link as child. If so, remove any potential inline events=0A=
		// and as a bonus, cancel the onfocus effect (which will put a dotted=0A=
		// border all around the link) by bluring it.=0A=
		// This should not cause any problem with the link being=0A=
		$each(this.toggler.getElements('a'), function(link) {=0A=
			$clearInlineEvents(link);=0A=
			link.addEvent('focus', function(){=0A=
				link.blur();=0A=
			});=0A=
		});=0A=
	},=0A=
	=0A=
	show: function() {=0A=
		this.togglee.show();=0A=
	},=0A=
	=0A=
	hide: function() {=0A=
		this.togglee.hide();=0A=
	},=0A=
	=0A=
	toggle: function(_e) {=0A=
		_e.preventDefault(); // Prevent the default behavior of the event.=0A=
		if (this.togglee.isVisible()) {=0A=
			this.hide();=0A=
		} else {=0A=
			this.show();=0A=
		}=0A=
		=0A=
		return false;=0A=
	},=0A=
	=0A=
	// Except for the constructor, this function is only called by the =
Togglee.=0A=
	update: function(toggleeIsVisible) {=0A=
		if (toggleeIsVisible) {=0A=
			this.setText(this.options.expandedText);=0A=
			this.setImg(this.options.expandedImage);=0A=
			if ($notNull(this.options.collapsedClass) && =
this.toggler.hasClass(this.options.collapsedClass)) {=0A=
				this.toggler.removeClass(this.options.collapsedClass);=0A=
			}=0A=
		} else {=0A=
			this.setText(this.options.collapsedText);=0A=
			this.setImg(this.options.collapsedImage);=0A=
			if ($notNull(this.options.collapsedClass)) {=0A=
				this.toggler.addClass(this.options.collapsedClass);=0A=
			}=0A=
		}=0A=
	},=0A=
	=0A=
	// Set optional context relative text on the Toggler.=0A=
	// (i.e. 'open' when closed, and 'close' when opened). =0A=
	setText: function(text) {=0A=
		if ($notNull(text)) {=0A=
			// There are three possibilities on where to put the text=0A=
			if (this.options.append) {=0A=
				// If the text is appended to the original text=0A=
				var span =3D this.toggler.getElement('span.togglerText');=0A=
			=0A=
				if ($null(span)) {=0A=
					span =3D new Element('span', {=0A=
						'class': 'togglerText',=0A=
						'styles': {=0A=
							'cursor': 'pointer',=0A=
							'font-size': '.65em',=0A=
							'margin': '0 1em',=0A=
							'vertical-align': '.2em'=0A=
						}=0A=
					});=0A=
				=0A=
					this.toggler.grab(span);=0A=
				}=0A=
			=0A=
				span.set('text', text);=0A=
			} else if (this.options.input) {=0A=
				// if the text is applied to an input (i.e. an <input =
type=3D"button"> element)=0A=
				this.toggler.set('value', text);=0A=
			} else {=0A=
				// else, the text simply replaces whatever was already present=0A=
				this.toggler.set('text', text);=0A=
			}=0A=
		}=0A=
	},=0A=
	=0A=
	// Set optional context relative image on the Toggler.=0A=
	// (i.e. a '+' image to expand a collapsed Togglee and a '-' image to =
collapse an expanded Togglee)=0A=
	setImg: function(imgSrc) {=0A=
		if ($notNull(imgSrc)) {=0A=
			var img =3D this.toggler.getElement('img.togglerImage');=0A=
		=0A=
			if ($null(img)) {=0A=
				img =3D new Element('img', {=0A=
					'class': 'togglerImage',=0A=
					'styles': {=0A=
						'cursor': 'pointer',=0A=
						'position': 'absolute'=0A=
					}=0A=
				});=0A=
			=0A=
				this.toggler.grab(img, 'top');=0A=
			}=0A=
		=0A=
			img.set('src', imgSrc);=0A=
			img.setStyle('left', -1.5* img.getSize().x);=0A=
			img.setStyle('bottom', this.toggler.getSize().y /2 - =
img.getSize().y/2);=0A=
			if (this.options.imagePosition =3D=3D 'inside') {=0A=
				img.setStyle('left', 0);=0A=
				this.toggler.setStyle('paddingLeft', 1.5* img.getSize().x);=0A=
			}=0A=
		}=0A=
	}=0A=
});=0A=
=0A=
var Togglee =3D new Class({=0A=
	Implements: Options,=0A=
	=0A=
	// Default Fx options=0A=
	options: {=0A=
		duration: 0,             // Default time in milliseconds for the =
transition. Defaults to zero, which means instant show/hide.=0A=
		mode: 'vertical',=0A=
		transition: 'sine:in:out'=0A=
	},=0A=
	=0A=
	initialize: function(target, visible, effectOptions) {=0A=
		this.target =3D $(target);=0A=
		this.visible =3D visible;=0A=
		this.togglers =3D [];=0A=
		this.setOptions(effectOptions);=0A=
		this.options.link =3D 'ignore'; // Overriding whatever it could have =
been set to.=0A=
		this.effect =3D new Fx.Slide(this.target, this.options);=0A=
		=0A=
		// Add an event to change state only once the transition is completed.=0A=
		var myself =3D this;=0A=
		this.effect.addEvent('complete', function() {myself.toggleState();});=0A=
		=0A=
		// If the Togglee is initially hidden, it needs to be set=0A=
		// by bypassing the real hide method to prevent toggling the display=0A=
		if (!visible) {=0A=
			// Thus, the target is explicitly hidden with its slide option=0A=
			this.target.get('slide').hide(this.options.mode);=0A=
		}=0A=
	},=0A=
	=0A=
	// This function will always be called once the transition is done=0A=
	toggleState: function() {=0A=
		this.visible =3D !this.visible;=0A=
		this.updateTogglers();=0A=
	},=0A=
	=0A=
	show: function() {=0A=
		this.effect.slideIn();=0A=
	},=0A=
	=0A=
	hide: function() {=0A=
		this.effect.slideOut();=0A=
	},=0A=
	=0A=
	// Whether this Togglee is visible or not.=0A=
	isVisible: function() {=0A=
		return this.visible;=0A=
	},=0A=
	=0A=
	// Adds a Toggler to the list of Togglers acting on this Togglee.=0A=
	addToggler: function(toggler) {=0A=
		this.togglers.push(toggler);=0A=
	},=0A=
	=0A=
	// Update all Togglers so that they are always all in sync=0A=
	// with the state of this Togglee on which they act on.=0A=
	updateTogglers: function() {=0A=
		var myself =3D this;=0A=
		=0A=
		this.togglers.each(function(toggler) {=0A=
			toggler.update(myself.isVisible());=0A=
		});=0A=
	}=0A=
});=0A=
=0A=
=0A=
/** ********************************************* =0A=
  * The Bubbler class.=0A=
  * =0A=
  *=0A=
  *********************************************** */=0A=
var Bubbler =3D new Class({=0A=
	Implements: Options,=0A=
	=0A=
	mandatoryOptions: {=0A=
		opacity: '0',=0A=
		position: 'absolute'=0A=
	},=0A=
	=0A=
	options: {=0A=
		// Default styling options for the bubble=0A=
		styles: {=0A=
			backgroundColor: '#ffed7a',=0A=
			border: '1px solid #ffdc00',=0A=
			color: '#000',=0A=
			fontFamily: 'inherit',=0A=
			fontSize: '.8em',=0A=
			padding: '.25em',=0A=
			textAlign: 'justify',=0A=
			maxWidth: '40%'=0A=
		},=0A=
		=0A=
		// Default styling options for the bubble, when configured as footnote.=0A=
		footnoteStyles: {=0A=
			backgroundColor: '#ffed7a',=0A=
			border: '1px solid #ffdc00',=0A=
			bottom: 0,=0A=
			color: '#000',=0A=
			fontFamily: 'inherit',=0A=
			fontSize: '.8em',=0A=
			left: 0,=0A=
			padding: '.25em',=0A=
			right: 0=0A=
		},=0A=
=0A=
		// The text of the bubble. Optional, as the text could also come from =
the 'title' attribute of the bubbler element, in which case no text has =
to be given.=0A=
		bubbleText: null,=0A=
		// The element containing the bubble. If null, the container is the =
body of the page and the offset will serve for placing the bubble =
relative to the container=0A=
		container: null,=0A=
		// Optional CSS class to style the bubble. If specified, the default =
styling options (footnote or not) won't apply.=0A=
		cssClass: null,=0A=
		// If set to true, the offset options will be ignored. The bubble will =
appear as a box at the bottom of the window.=0A=
		footnote: false,=0A=
		// Maximum opacity for the fade in of the bubble (between 0 and 1, 0 =
being completely transparent and 1 being completely opaque).=0A=
		maxOpacity: 1,=0A=
		// Default offset of the bubble relative to the mouse cursor or the =
container (if the container is specified).=0A=
		offset: {x: 15, y: 12},=0A=
		// Reference of the offset, in CSS terms. It also determines its =
direction. Accepted terms are 'left' and 'right' for x and 'top' and =
'bottom' for y.=0A=
		offsetReference: {x: 'left', y: 'bottom'}=0A=
	},=0A=
	=0A=
	initialize: function(originalElement, options) {=0A=
		this.bubbler =3D $(originalElement);=0A=
		this.setOptions(options);=0A=
		this.bubble =3D this.createBubble();=0A=
		=0A=
		if ($null(this.options.container)) {=0A=
			this.container =3D $(document.body);=0A=
		} else {=0A=
			this.container =3D $(this.options.container);=0A=
			=0A=
			if (this.container.getStyle('position') =3D=3D 'static') {=0A=
				this.container.setStyle('position', 'relative');=0A=
			}=0A=
		}=0A=
		=0A=
		if (this.bubble.get('html') !=3D '') {=0A=
			this.addEvents();=0A=
		}=0A=
	},=0A=
=0A=
	addEvents: function() {=0A=
			var myself =3D this;=0A=
			this.bubbler.addEvent('mouseenter', function(event) {=0A=
				myself.showBubble(event);=0A=
			});=0A=
		=0A=
			this.bubbler.addEvent('mouseleave', function(event) {=0A=
				myself.hideBubble();=0A=
			});=0A=
=0A=
	},=0A=
	=0A=
	createBubble: function() {=0A=
		var div =3D new Element('div');=0A=
		// If a class was given in the options, use the class to style the=0A=
		// bubble instead of default styling options.=0A=
		if ($notNull(this.options.cssClass)) {=0A=
			div.setProperty('class', this.options.cssClass);=0A=
		} else {=0A=
			if (this.options.footnote) {=0A=
				div.setStyles(this.options.footnoteStyles);=0A=
			} else {=0A=
				div.setStyles(this.options.styles);=0A=
			}=0A=
		}=0A=
		=0A=
		// Mandatory options for the bubble, to ensure correct behavior of the =
bubble.=0A=
		div.setStyles(this.mandatoryOptions);=0A=
		if ($null(this.options.bubbleText)) {=0A=
			div.set('html', this.bubbler.getProperty('title'));=0A=
		} else {=0A=
			div.set('html', this.options.bubbleText);=0A=
		}=0A=
		=0A=
		// Precaution, to make sure nothing else pops-up than our bubble =0A=
		this.bubbler.removeProperty('title');=0A=
		=0A=
		return div;=0A=
	},=0A=
	=0A=
	/*=0A=
	 * Make the bubble appear.=0A=
	 */=0A=
	showBubble: function(event) {=0A=
		// Put the bubble in the DOM first, then we'll be able to calculate =
its position=0A=
		// and ajust it.=0A=
		this.bubble.inject(this.container, 'bottom');=0A=
		=0A=
		if (!this.options.footnote) {=0A=
			if ($null(this.options.container)) {=0A=
				// Calculates coordinates from the mouse pointer=0A=
				var newCoordinates =3D this.getUpdatedMouseCoordinates(event);=0A=
				this.bubble.setStyle('position', 'fixed');=0A=
				this.bubble.setStyle('left', newCoordinates.x);=0A=
				this.bubble.setStyle('top', newCoordinates.y);=0A=
			} else {=0A=
				// Calculates coordinates from the specified container, which is by =
default the normal cartesian origin: bottom left corner =0A=
				var newCoordinates =3D this.getUpdatedCoordinates();=0A=
				this.bubble.setStyle(this.options.offsetReference.x, =
newCoordinates.x);=0A=
				this.bubble.setStyle(this.options.offsetReference.y, =
newCoordinates.y);=0A=
			}=0A=
		=0A=
			=0A=
		}=0A=
		=0A=
		this.bubble.fade(this.options.maxOpacity);=0A=
	},=0A=
	=0A=
	/*=0A=
	 * Make the bubble disappear.=0A=
	 */=0A=
	hideBubble: function() {=0A=
		// Fade the bubble out and remove it from the DOM.=0A=
		var bubble =3D this.bubble;=0A=
		this.bubble.fade(0).get('tween').chain(function() {=0A=
			bubble.dispose();=0A=
		});=0A=
	},=0A=
	=0A=
	/*=0A=
	 * Get the coordinates of the position where the bubble needs to be in =
relation to the mouse position.=0A=
	 */=0A=
	getUpdatedMouseCoordinates: function(event) {=0A=
		// This is the position of the right-side of the bubble=0A=
		var calculatedX =0A=
			=3D event.client.x          // the x position of the mouse pointer=0A=
			+ this.options.offset.x    // the horizontal distance from the bubble =
to the mouse pointer=0A=
			+ this.bubble.getSize().x // the width of the bubble=0A=
			=0A=
		// This is the position of the top-side of the bubble=0A=
		var calculatedY=0A=
			=3D event.client.y          // the y position of the mouse pointer=0A=
			- this.options.offset.y    // the vertical distance from the bubble =
to the mouse pointer=0A=
			- this.bubble.getSize().y // the height of the bubble=0A=
		=0A=
		// Check whether or not the bubble's right side will go beyond the =
right of the document=0A=
		var correctedX =3D calculatedX > $(document).getSize().x ?=0A=
			event.client.x - this.options.offset.x - this.bubble.getSize().x :=0A=
			event.client.x + this.options.offset.x;=0A=
		=0A=
		// Check whether or not the bubble's top side will go beyond the top =
of the document=0A=
		var correctedY =3D calculatedY < 0 ?=0A=
			event.client.y + this.options.offset.y :=0A=
			event.client.y - this.options.offset.y - this.bubble.getSize().y;=0A=
			=0A=
		return {x: correctedX, y: correctedY};=0A=
	},=0A=
	=0A=
	getUpdatedCoordinates: function() {=0A=
		return {x: this.options.offset.x, y: this.options.offset.y};=0A=
	}=0A=
});=0A=
=0A=
/** ********************************************* =0A=
  * The Logger class.=0A=
  * Not the be-all-end-all logger, but at least=0A=
  * allows for debug messages a lot less obstrusive=0A=
  * than traditionnal 'alert()' calls, and it works=0A=
  * for all browsers.=0A=
  *=0A=
  * The logger will work if the website is in debug=0A=
  * mode, that is, by passing 'true' to the constructor.=0A=
  * Else, no debug will occur except in Firebug's=0A=
  * console, if present.=0A=
  *********************************************** */=0A=
var Logger =3D new Class({=0A=
		initialize: function(isDebug) {=0A=
			this.debug =3D isDebug;=0A=
		},=0A=
		=0A=
		log: function(text) {=0A=
			// Always log if Firebug is present, since it is subtle and =
non-obstrusive and quite useful.=0A=
			if ($defined(console) && $defined(console.log)) {=0A=
				console.log(text);=0A=
			}=0A=
			=0A=
			// Only use the logger if in debug mode.=0A=
			if (this.debug) {=0A=
				var logArea =3D $('logArea');=0A=
				var logAreaLi =3D new Element('li');=0A=
				var logAreaLiPre =3D new Element('pre', {=0A=
					'styles': {=0A=
						'margin': '0'=0A=
					}=0A=
				});=0A=
				logAreaLiPre.set('text', text);=0A=
				logAreaLi.grab(logAreaLiPre);=0A=
				=0A=
				=0A=
				if ($null(logArea)) {=0A=
					logArea =3D new Element('div', {=0A=
						'id': 'logArea',=0A=
						'styles': {=0A=
							'background-color': '#c6453f',=0A=
							'bottom': '0',=0A=
							'color': '#fff',=0A=
							'font-family': 'monospace',=0A=
							'font-size': '',=0A=
							'height': '60px',=0A=
							'left': '0',=0A=
							'overflow': 'auto',=0A=
							'padding': '12px 256px 12px 12px',=0A=
							'position': 'fixed',=0A=
							'right': '0',=0A=
							'z-index': '1000'=0A=
						}=0A=
					});=0A=
					=0A=
					logAreaTitle =3D new Element('h1', {=0A=
						'styles': {=0A=
							'color': '#fff',=0A=
							'bottom:': '30px',=0A=
							'font-size': '24px',=0A=
							'font-weight': 'bold',=0A=
							'position': 'fixed',=0A=
							'right': '36px'=0A=
						}=0A=
					});=0A=
					logAreaTitle.set('text', 'DEBUG CONSOLE');=0A=
					=0A=
					logArea.addEvent('click', function() {=0A=
						this.destroy();=0A=
					});=0A=
					=0A=
					var logAreaUl =3D new Element('ul', {=0A=
						'styles': {=0A=
							'margin': '0 .5em',=0A=
							'padding': '0 .5em'=0A=
						}=0A=
					});=0A=
					=0A=
					logAreaUl.grab(logAreaLi);=0A=
					logArea.grab(logAreaTitle);=0A=
					logArea.grab(logAreaUl);=0A=
					=0A=
					$(document.body).grab(logArea);=0A=
				} else {=0A=
					logArea.getElement('ul').grab(logAreaLi);=0A=
				}=0A=
				=0A=
			}=0A=
		}=0A=
	}=0A=
);=0A=
/////////////////////////////////////////////////////////////////////////=
////////////////////////////////////////////////=0A=
var JURISDICTIONS =3D new Array('ca', 'bc', 'ab', 'sk', 'mb', 'on', =
'qc', 'nb', 'ns', 'pe', 'nl', 'yk', 'nt', 'nu');=0A=
var _language =3D $$('html')[0].getProperty('lang');=0A=
=0A=
window.addEvent('domready', function() {=0A=
	if (typeof window.canliiBeta !=3D undefined && window.canliiBeta =3D=3D =
true ||=0A=
			location.href.search('beta') !=3D -1 ||=0A=
			location.href.search('www-canlii-devel') !=3D -1) {=0A=
		publishBetaLink(location.href);=0A=
	}=0A=
	=0A=
	// One way to detect if the page is using the new javascript classes is =
to check for the presence of=0A=
	// the $null() function=0A=
	if (typeof $null !=3D "undefined") {=0A=
		prepareTipsLinks();=0A=
		prepareSearchHelpers();=0A=
		=0A=
		// Specific databases scope page scripts.=0A=
		if ($defined(window._pageSection) && window._pageSection =3D=3D =
"databasesScope") {=0A=
			preparePitDefinitions();=0A=
		}=0A=
	}=0A=
});=0A=
=0A=
function initializeHelpTipsSlider() {=0A=
	var tipsSlide =3D new Fx.Slide("searchTips");=0A=
	var tipsButton =3D $("quickHelpButton");=0A=
	var tipsLinks =3D $$("span.helpLink");=0A=
	var tipsBox =3D $("searchTips");=0A=
	tipsBox.setStyle('display', 'block');=0A=
	tipsBox.setProperty('style', 'display: block;');=0A=
	=0A=
	tipsButton.addEvent(=0A=
		'click',=0A=
		function(e) {=0A=
			e.stop();=0A=
			tipsSlide.toggle();=0A=
			if (tipsBox.getParent().getSize().y > 0) {=0A=
				//tipsSlide.slideOut();=0A=
				if (_language =3D=3D "en") {=0A=
					tipsButton.setProperty('value', "TIPS");=0A=
				} else {=0A=
					tipsButton.setProperty('value', "AIDE");=0A=
				}=0A=
			} else {=0A=
				//tipsSlide.slideIn();=0A=
				if (_language =3D=3D "en") {=0A=
					tipsButton.setProperty('value', "CLOSE TIPS");=0A=
				} else {=0A=
					tipsButton.setProperty('value', "FERMER L'AIDE");=0A=
				}=0A=
			}=0A=
		}=0A=
	);=0A=
	=0A=
	for (var i =3D 0; i < tipsLinks.length; i++) {=0A=
		var link =3D tipsLinks[i].getElement('a');=0A=
		link.removeProperty('onclick');=0A=
		link.addEvent(=0A=
			'click',=0A=
			function(e) {=0A=
				e.stop();=0A=
				tipsSlide.toggle();=0A=
				if (tipsBox.getParent().getSize().y > 0) {=0A=
					//tipsSlide.slideOut();=0A=
					if (_language =3D=3D "en") {=0A=
						tipsButton.setProperty('value', "TIPS");=0A=
					} else {=0A=
						tipsButton.setProperty('value', "AIDE");=0A=
					}=0A=
				} else {=0A=
					//tipsSlide.slideIn();=0A=
					if (_language =3D=3D "en") {=0A=
						tipsButton.setProperty('value', "CLOSE TIPS");=0A=
					} else {=0A=
						tipsButton.setProperty('value', "FERMER L'AIDE");=0A=
					}=0A=
				}=0A=
			}=0A=
		);=0A=
	}=0A=
	=0A=
	tipsSlide.hide();=0A=
}=0A=
=0A=
function initializeJurisdictionsSliders() {=0A=
	for (var i =3D 0; i < JURISDICTIONS.length; i++) {=0A=
		//buildSlider(JURISDICTIONS[i]);=0A=
		initializeCount(JURISDICTIONS[i]);=0A=
	}=0A=
}=0A=
=0A=
function initializeCount(jurisdiction) {=0A=
	var title =3D $('toggle_' + jurisdiction);=0A=
	var content =3D $('searchOptions-' + jurisdiction);=0A=
	var options =3D content.getElements('input');=0A=
	=0A=
	var counter =3D new Element(=0A=
		'span',=0A=
		{=0A=
			'id': 'counter_' + jurisdiction,=0A=
			'class': 'databaseCounter'=0A=
		}=0A=
	);=0A=
	=0A=
	var count =3D new Element(=0A=
		'span',=0A=
		{=0A=
			'id': 'count_' + jurisdiction,=0A=
			'class': 'databaseCount'=0A=
		}=0A=
	);=0A=
	=0A=
	count.inject(counter);=0A=
	counter.inject(title, 'bottom');=0A=
	counter.appendText('/' + options.length);=0A=
	=0A=
	var inputs =3D content.getElements('input');=0A=
	for (var i =3D 0; i < inputs.length; i++) {=0A=
		$(inputs[i]).addEvent(=0A=
			'change',=0A=
			function() {=0A=
				updateCount(jurisdiction);=0A=
				//return false;=0A=
			}=0A=
		);=0A=
	}=0A=
	=0A=
	updateCount(jurisdiction);=0A=
}=0A=
=0A=
function updateCount(jurisdiction) {=0A=
	var count =3D $('count_' + jurisdiction);=0A=
	var options =3D $('searchOptions-' + jurisdiction).getElements('input');=0A=
	=0A=
	var optionsChecked =3D 0;=0A=
	for (var i =3D 0; i < options.length; i++) {=0A=
		if ($(options[i]).getProperty('checked') !=3D "") {=0A=
			++optionsChecked;=0A=
		}=0A=
	}=0A=
	=0A=
	count.set('text', optionsChecked);=0A=
}=0A=
=0A=
function buildSlider(jurisdiction) {=0A=
	var jurisSlide =3D new Fx.Slide('searchOptions-' + jurisdiction);=0A=
	var juris =3D jurisdiction + '';=0A=
	$('toggle_' + jurisdiction).addEvent(=0A=
		'click',=0A=
		function(e) {=0A=
			e.stop();=0A=
			toggleSlider(jurisSlide, juris);=0A=
		}=0A=
	);=0A=
	=0A=
	jurisSlide.hide();=0A=
}=0A=
=0A=
function toggleSlider(slider, jurisdiction) {=0A=
	var element =3D $('searchOptions-' + jurisdiction);=0A=
	=0A=
	if (element.getParent().getSize().y > 0) {=0A=
		slider.slideOut().chain(=0A=
			morphTitle(jurisdiction, 'close'),=0A=
			morphTitleAnchors(jurisdiction, 'close')=0A=
		);=0A=
	} else {=0A=
		slider.slideIn().chain(=0A=
			morphTitle(jurisdiction, 'open'),=0A=
			morphTitleAnchors(jurisdiction, 'open')=0A=
		);=0A=
	}=0A=
}=0A=
=0A=
function morphTitle(jurisdiction, action) {=0A=
	var toggler =3D $('toggle_' + jurisdiction);=0A=
	=0A=
	if (action =3D=3D 'open') {=0A=
		toggler.morph(=0A=
			{=0A=
				color: '#fff'=0A=
			}=0A=
		);=0A=
		toggler.getParent().morph(=0A=
			{=0A=
				backgroundColor: '#808080'=0A=
			}=0A=
		)=0A=
		toggler.getElement('span').set('text', '-');=0A=
	} else {=0A=
		toggler.morph(=0A=
			{=0A=
				color: '#808080'=0A=
			}=0A=
		);=0A=
		toggler.getParent().morph(=0A=
			{=0A=
				backgroundColor: '#e0e2e2'=0A=
			}=0A=
		)=0A=
		=0A=
		toggler.getElement('span').set('text', '+');=0A=
	}=0A=
}=0A=
=0A=
function morphTitleAnchors(jurisdiction, action) {=0A=
	var toggler =3D $('toggle_' + jurisdiction);=0A=
	var anchorsSpan =3D toggler.getParent().getElement('span');=0A=
	var anchors =3D toggler.getParent().getElements('a');=0A=
	=0A=
	if (action =3D=3D 'open') {=0A=
		for (var i =3D 0; i < anchors.length; i++) {=0A=
			$(anchors[i]).morph(=0A=
				{=0A=
					color: '#fff',=0A=
					textDecoration: 'underline'=0A=
				}=0A=
			);=0A=
		}=0A=
		anchorsSpan.morph({color: '#fff'});=0A=
	} else {=0A=
		for (var i =3D 0; i < anchors.length; i++) {=0A=
			$(anchors[i]).morph(=0A=
				{=0A=
					color: '#027abb',=0A=
					textDecoration: 'none'=0A=
				}=0A=
			);=0A=
		}=0A=
		anchorsSpan.morph({color: '#808080'});=0A=
	}=0A=
}=0A=
=0A=
function setLinksLook(parent, color, decoration) {=0A=
	var links =3D parent.getElementsByTagName('a');=0A=
	=0A=
	for (var i =3D 0; i < links.length; i++) {=0A=
		var link =3D $(links[i]);=0A=
		link.setStyle('color', color);=0A=
		link.setStyle('textDecoration', decoration);=0A=
	}=0A=
}=0A=
=0A=
=0A=
/* ***************************=0A=
        fun new stuff=0A=
 *************************** */=0A=
var _en_bundle =3D new Hash({=0A=
	showTips: "TIPS",=0A=
	hideTips: "CLOSE TIPS",=0A=
	syntaxExact: 'Syntax: <em>""</em>, <em class=3D"upper">OR</em>, <em =
class=3D"upper">NOT</em>, <em>/p</em>, <em>/s</em>, <em>/</em>n, <em =
class=3D"upper">EXACT()</em>',=0A=
	syntax: 'Syntax: <em>""</em>, <em class=3D"upper">OR</em>, <em =
class=3D"upper">NOT</em>, <em>/p</em>, <em>/s</em>, <em>/</em>n',=0A=
	dateRange: '<em class=3D"upper">YYYY-MM-DD</em> or <em =
class=3D"upper">YYYY-MM</em> or <em class=3D"upper">YYYY</em>',=0A=
	dateExact: '<em class=3D"upper">YYYY-MM-DD</em>'=0A=
});=0A=
var _fr_bundle =3D new Hash({=0A=
	showTips: "AIDE",=0A=
	hideTips: "FERMER L'AIDE",=0A=
	syntaxExact: 'Syntaxe : <em>""</em>, <em class=3D"upper">OU</em>, <em =
class=3D"upper">NON</em>, <em>/p</em>, <em>/s</em>, <em>/</em>n, <em =
class=3D"upper">EXACT()</em>',=0A=
	syntax: 'Syntaxe : <em>""</em>, <em class=3D"upper">OU</em>, <em =
class=3D"upper">NON</em>, <em>/p</em>, <em>/s</em>, <em>/</em>n',=0A=
	dateRange: '<em class=3D"upper">AAAA-MM-JJ</em> ou <em =
class=3D"upper">AAAA-MM</em> ou <em class=3D"upper">AAAA</em>',=0A=
	dateExact: '<em class=3D"upper">AAAA-MM-JJ</em>'=0A=
});=0A=
var _bundle =3D new Hash({=0A=
	en: _en_bundle,=0A=
	fr: _fr_bundle=0A=
});=0A=
var messages =3D _bundle.get(_language);=0A=
=0A=
=0A=
function prepareTipsLinks() {=0A=
	var searchBox =3D $('searchBox');=0A=
	=0A=
	if ($null(searchBox)) {=0A=
		searchBox =3D $('advancedSearchBox');=0A=
	}=0A=
=0A=
	// To prevent running the code on pages without a searchbox=0A=
	if ($notNull(searchBox)) {=0A=
		// Since there's a clash with old style searchTips, we have to make =
sure that for the new stuff,=0A=
		// the display property is set to block.=0A=
		$('searchTips').setStyle('display', 'block');=0A=
		=0A=
		var showTips =3D messages.get('showTips');=0A=
		var hideTips =3D messages.get('hideTips');=0A=
		=0A=
		var togglee =3D new Togglee($('searchTips'), false, {duration: 250});=0A=
		=0A=
		var helpLinks =3D searchBox.getElements('span.helpLink');=0A=
		$each(helpLinks, function(helpLink) {=0A=
			var toggler =3D new Toggler(helpLink, togglee);=0A=
		});=0A=
		=0A=
		var toggler =3D new Toggler($('quickHelpButton'), togglee, {=0A=
			collapsedText: showTips,=0A=
			expandedText: hideTips,=0A=
			input: true=0A=
		});=0A=
	}=0A=
}=0A=
=0A=
function prepareSearchHelpers() {=0A=
	var searchBox =3D $('searchBox');=0A=
	=0A=
	if ($null(searchBox)) {=0A=
		searchBox =3D $('advancedSearchBox');=0A=
	}=0A=
	=0A=
	// To prevent running the code on pages without a searchbox=0A=
	if ($notNull(searchBox)) {=0A=
	=0A=
		var bubbleStyle =3D {=0A=
			maxWidth: '60%',=0A=
			fontSize: '.9em'=0A=
		}=0A=
		=0A=
		if ($notNull($('input_text'))) {=0A=
			var textInput =3D $('input_text');=0A=
			textInput.removeProperty('onmouseover');=0A=
			textInput.removeProperty('onmouseout');=0A=
			var offsetBubble;=0A=
=0A=
			if (IE6) {=0A=
				offsetBubble =3D {x: 38, y: 45};=0A=
			} else if (IE7) {=0A=
				offsetBubble =3D {x: 30, y: 25};=0A=
			} else {=0A=
				offsetBubble =3D {x: 30, y: 28};=0A=
			}=0A=
=0A=
			new Bubbler(textInput, {=0A=
				bubbleText: messages.get('syntaxExact'),=0A=
				container: textInput.getParent(),=0A=
				offset: offsetBubble,=0A=
				offsetReference: {x: 'right', y: 'bottom'},=0A=
				styles: bubbleStyle=0A=
			});=0A=
		}=0A=
		=0A=
		if ($notNull($('input_title'))) {=0A=
			var titleInput =3D $('input_title');=0A=
			titleInput.removeProperty('onmouseover');=0A=
			titleInput.removeProperty('onmouseout');=0A=
			var offsetBubble;=0A=
=0A=
			if (IE6) {=0A=
				offsetBubble =3D {x: 38, y: 45};=0A=
			} else if (IE7) {=0A=
				offsetBubble =3D {x: 30, y: 25};=0A=
			} else {=0A=
				offsetBubble =3D {x: 30, y: 28};=0A=
			}=0A=
=0A=
			new Bubbler(titleInput, {=0A=
				bubbleText: messages.get('syntax'),=0A=
				container: titleInput.getParent(),=0A=
				offset: offsetBubble,=0A=
				offsetReference: {x: 'right', y: 'bottom'},=0A=
				styles: bubbleStyle=0A=
			});=0A=
		}=0A=
		=0A=
		if ($notNull($('input_date'))) {=0A=
			var dateInput =3D $('input_date');=0A=
			dateInput.removeProperty('onmouseover');=0A=
			dateInput.removeProperty('onmouseout');=0A=
			var offsetBubble;=0A=
=0A=
			if (IE6) {=0A=
				offsetBubble =3D {x: 240, y: 22};=0A=
			} else if (IE7) {=0A=
				offsetBubble =3D {x: 240, y: 5};=0A=
			} else {=0A=
				offsetBubble =3D {x: 210, y: 4};=0A=
			}=0A=
=0A=
			new Bubbler(dateInput, {=0A=
				bubbleText: messages.get('dateRange'),=0A=
				container: dateInput.getParent(),=0A=
				offset: offsetBubble,=0A=
				styles: bubbleStyle=0A=
			});=0A=
		}=0A=
		=0A=
		if ($notNull($('input_end'))) {=0A=
			var dateEndInput =3D $('input_end');=0A=
			dateEndInput.removeProperty('onmouseover');=0A=
			dateEndInput.removeProperty('onmouseout');=0A=
			var offsetBubble;=0A=
=0A=
			if (IE6) {=0A=
				offsetBubble =3D {x: 240, y: 22};=0A=
			} else if (IE7) {=0A=
				offsetBubble =3D {x: 240, y: 5};=0A=
			} else {=0A=
				offsetBubble =3D {x: 210, y: 4};=0A=
			}=0A=
=0A=
			new Bubbler(dateEndInput, {=0A=
				bubbleText: messages.get('dateRange'),=0A=
				container: dateEndInput.getParent(),=0A=
				offset: offsetBubble,=0A=
				styles: bubbleStyle=0A=
			});=0A=
		}=0A=
		=0A=
		if ($notNull($('input_version_date'))) {=0A=
			var dateExactInput =3D $('input_version_date');=0A=
			dateExactInput.removeProperty('onmouseover');=0A=
			dateExactInput.removeProperty('onmouseout');=0A=
			var offsetBubble;=0A=
=0A=
			if (IE6) {=0A=
				offsetBubble =3D {x: 240, y: 22};=0A=
			} else if (IE7) {=0A=
				offsetBubble =3D {x: 240, y: 5};=0A=
			} else {=0A=
				offsetBubble =3D {x: 210, y: 4};=0A=
			}=0A=
=0A=
			new Bubbler(dateExactInput, {=0A=
				bubbleText: messages.get('dateExact'),=0A=
				container: dateExactInput.getParent(),=0A=
				offset: offsetBubble,=0A=
				styles: bubbleStyle=0A=
			});=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function preparePitDefinitions() {=0A=
	var dfns =3D $$("dfn.pit");=0A=
	=0A=
	$each(dfns, function(dfn) {=0A=
		new Bubbler(dfn);=0A=
	});=0A=
}=0A=
=0A=
=0A=
/* ********************************************=0A=
                 beta stuff=0A=
   ******************************************** */=0A=
function publishBetaLink(url) {=0A=
	if (_language =3D=3D 'en') {=0A=
		var betaLinkLabel =3D "Report an issue with this page";=0A=
	} else {=0A=
		var betaLinkLabel =3D "Signaler un probl&#232;me avec cette page";=0A=
	}=0A=
	=0A=
	var canliiBanner =3D $('canliiBanner');=0A=
	=0A=
	var spanElement =3D new Element('span',=0A=
		{=0A=
			'html': 'BETA ',=0A=
			'styles': {=0A=
				'color': '#bf0d0b',=0A=
				'float': 'left',=0A=
				'font-weight': 'bold',=0A=
				'line-height': '20px',=0A=
				'vertical-align': 'top'=0A=
			}=0A=
		}=0A=
	);=0A=
	=0A=
	var linkElement =3D new Element('a',=0A=
		{=0A=
			'html': betaLinkLabel,=0A=
			'href': '/bugform/reportBug.do?language=3D' + _language + =
'&problemUrl=3D' + encodeURIComponent(location.href),=0A=
			'class': 'canlii',=0A=
			'styles': {=0A=
				'text-decoration': 'underline'=0A=
			}=0A=
		}=0A=
	);=0A=
=0A=
	spanElement.grab(linkElement);=0A=
	spanElement.inject(canliiBanner, 'top');=0A=
}=0A=
/* ********************************************=0A=
   ******************************************** */=0A=
=0A=

------=_NextPart_000_0000_01CB4824.C10EDB70--

