From: <Saved by Windows Internet Explorer 7>
Subject: ScienceDirect - Medical Hypotheses : Post herpetic neuralgia, schwann cell activation and vitamin D
Date: Tue, 4 Aug 2009 13:59:44 +1200
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CA150B.D1E156F0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6WN2-4WVK2MW-1&_user=10&_rdoc=1&_fmt=&_orig=search&_sort=d&_docanchor=&view=c&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=46a8704e0e3e9b3fbad880fa9f1e0c67

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>ScienceDirect - Medical Hypotheses : Post herpetic =
neuralgia, schwann cell activation and vitamin D</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3DUTF-8"><!-- TRANSKEY: 08/03/2009 21:59:37 =
EDT#1843_001#127786#203.173.161.50 -->
<META content=3DNOINDEX,NOFOLLOW,NOARCHIVE name=3Drobots><LINK=20
href=3D"/scidirimg/faviconSD.ico" type=3Dimage/x-icon rel=3D"shortcut =
icon"><!-- static const char articletmpl_sccsId[] =3D "%W%  %G% %U% --- =
Retrieved: %H% %T%"; --><LINK=20
title=3D"Default Styles"=20
href=3D"http://www.sciencedirect.com/science/page/static/stylesheets/css_=
art_v01.css"=20
type=3Dtext/css rel=3Dstylesheet>
<SCRIPT =
src=3D"http://www.sciencedirect.com/science/page/javascript/swfobject.js"=
=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://www.sciencedirect.com/science/page/javascript/article.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://www.sciencedirect.com/science/page/javascript/fontSizeChang=
er.js"=20
type=3Dtext/javascript></SCRIPT>

<META content=3D"MSHTML 6.00.6000.16890" name=3DGENERATOR></HEAD>
<BODY onresize=3D"resizeImgs(); resetScrollableTables();" text=3D#000000 =

bgColor=3D#ffffff=20
onload=3D"loadUnsubArticle(); MMCinit();   =
javascript:toggleTabs('fullTab')"><NOSCRIPT>
<STYLE type=3Dtext/css>.nojs {
	DISPLAY: none
}
</STYLE>
</NOSCRIPT>
<SCRIPT =
src=3D"http://www.sciencedirect.com/science/page/javascript/prototype.js"=
=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://www.sciencedirect.com/science/page/javascript/effects.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://www.sciencedirect.com/science/page/javascript/controls_mod.=
js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://www.sciencedirect.com/science/page/javascript/openWindow.js=
"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT language=3DJavascript><!--=0A=
function flip(e){=0A=
  var menustyle =3D eval(getStyleObj(e))=0A=
    if (menustyle.display=3D=3D"none"){=0A=
      menustyle.display=3D''=0A=
    }=0A=
    else{=0A=
      menustyle.display=3D"none"=0A=
    }=0A=
}=0A=
function getStyleObj(elem,parent) {=0A=
   if (document.layers) {=0A=
   if (parent) {=0A=
      return "document."+parent+".document."+elem;=0A=
   } else {=0A=
      return "document."+elem + ".style";=0A=
   }=0A=
   } else if (document.all) {=0A=
     return "document.all."+elem + ".style";=0A=
   } else if (document.getElementById) {=0A=
     return "document.getElementById('"+elem+"').style";=0A=
   }=0A=
}=0A=
//--></SCRIPT>
<LINK title=3D"Default Styles"=20
href=3D"http://www.sciencedirect.com/science/page/static/stylesheets/css_=
gen_v01.css"=20
type=3Dtext/css rel=3Dstylesheet>
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%" border=3D0>
  <TBODY>
  <TR>
    <TD style=3D"PADDING-LEFT: 0.2em" noWrap width=3D"30%" =
colSpan=3D3><A=20
      =
href=3D"http://www.sciencedirect.com/science?_ob=3DHomePageURL&amp;_metho=
d=3DuserHomePage&amp;_lg=3DY&amp;_acct=3DC000050221&amp;_version=3D1&amp;=
_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D6b8f8a0bb11c4ebe676f09e6d7da52=
c8"=20
      target=3D_top border=3D"0"><IMG title=3D"ScienceDirect=C2=AE Home" =

      alt=3D"ScienceDirect=C2=AE Home"=20
      =
src=3D"http://www.sciencedirect.com/science/page/static/science/logo.gif"=
=20
      border=3D0></A> <A=20
      =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_rdoc=3D1&amp;_fmt=3D&amp;_orig=3Dsear=
ch&amp;_sort=3Dd&amp;_docanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&am=
p;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D46a8704e0e3=
e9b3fbad880fa9f1e0c67#Skip Buttons"=20
      target=3D_top><IMG title=3D"Skip Main Navigation Links" height=3D1 =

      alt=3D"Skip Main Navigation Links"=20
      src=3D"http://www.sciencedirect.com/scidirimg/clear.gif" =
width=3D10=20
      border=3D0></A> </TD>
    <TD vAlign=3Dcenter noWrap align=3Dmiddle bgColor=3D#ffffff>
      <DIV=20
      style=3D"PADDING-RIGHT: 3px; PADDING-LEFT: 3px; MAX-WIDTH: 350px; =
PADDING-BOTTOM: 3px; OVERFLOW: hidden; ; WIDTH: =
expression(document.body.clientWidth > 350? '350px':'auto'); MAX-HEIGHT: =
60px; PADDING-TOP: 3px; ; HEIGHT: expression(this.scrollHeight > 60? =
'60px':'auto')"><A=20
      =
onclick=3D"openNS('http://www.info.sciencedirect.com/licensing/access/gue=
st_user/'); return false;"=20
      =
href=3D"http://www.info.sciencedirect.com/licensing/access/guest_user/"><=
IMG=20
      title=3D"You have guest access to ScienceDirect. Find out more."=20
      alt=3D"You have guest access to ScienceDirect. Find out more."=20
      =
src=3D"http://www.sciencedirect.com/science/page/static/science/dynamic_s=
cidir_home_guest_user.gif"=20
      border=3D0> </A></DIV></TD>
    <TD style=3D"PADDING-RIGHT: 0.2em" noWrap align=3Dright =
width=3D"37%"><SPAN=20
      style=3D"FONT-SIZE: 75%; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif">
      <META http-equiv=3DSet-Cookie =
content=3D"BROWSER_SUPPORTS_COOKIES=3D1; path=3D/">
      <SCRIPT language=3DJavascript>=0A=
<!---------------=0A=
document.write("<div style=3D\"padding:0.4em\">");=0A=
document.write("<div id=3D\"sdLoginBoxFold\" >");=0A=
document.write("<a href=3D\"javascript:flip('sdLoginBox'); =
javascript:flip('sdLoginBoxFold');\" alt=3D\"Open the Login Box\" =
title=3D\"Open the Login Box\">Login: &nbsp;<img =
src=3D\"/scidirimg/sign_plus.gif \" width=3D\"9\" height=3D\"9\" =
alt=3D\"Open the Login Box\" border=3D\"0\" title=3D\"Open the Login =
Box\"/></a><br>");=0A=
=0A=
  =0A=
    =0A=
      document.write("<a =
href=3D\"https://www.sciencedirect.com/science?_ob=3DRegistrationURL&_met=
hod=3Ddisplay&_type=3Dguest&_returnURL=3Dhttp%3A%2F%2Fwww.sciencedirect.c=
om%2Fscience%3F_ob%3DArticleURL%26_udi%3DB6WN2-4WVK2MW-1%26_user%3D10%26_=
rdoc%3D1%26_fmt%3D%26_orig%3Dsearch%26_sort%3Dd%26_docanchor%3D%26view%3D=
c%26_acct%3DC000050221%26_version%3D1%26_urlVersion%3D0%26_userid%3D10%26=
md5%3D46a8704e0e3e9b3fbad880fa9f1e0c67&_acct=3DC000050221&_version=3D1&_u=
serid=3D10&md5=3D9c64a2a11a0a40168ebf60e73ee968f3\" target=3D\"_top\" =
title=3D\"Click here to learn about registering with =
ScienceDirect\">Register</a>");=0A=
    =0A=
  =0A=
document.write("</div>");=0A=
document.write("</div>");=0A=
document.write("<div id=3D\"sdLoginBox\"");=0A=
document.write("style=3D\"background-image: =
url(/scidirimg/login_background.gif); background-repeat: repeat-x; =
height:70px;padding:0.2em;");=0A=
document.write("display:none;\">");=0A=
=0A=
	document.write("<form name=3D\"sdLogin\" method=3D\"POST\" =
action=3D\"https://www.sciencedirect.com/science/login\">");=0A=
	document.write("<input type=3D\"hidden\" name=3D\"login\" =
value=3D\"login\">");=0A=
	document.write("<table width=3D\"100%\" cellspacing=3D\"0\" =
cellpadding=3D\"0\">");=0A=
	document.write("<tr valign=3D\"top\">");=0A=
	document.write("<td align=3D\"left\" nowrap>");=0A=
=0A=
=0A=
=0A=
document.write("</td>");=0A=
=0A=
  =0A=
    document.write("<tr><td nowrap>&nbsp;<a =
href=3D\"/science?_ob=3DFederationURL&_method=3Ddisplay&_type=3Df&_acct=3D=
C000050221&_version=3D1&_userid=3D10&md5=3D72fe293848689e52a10d612dfcfa3b=
d4\"title=3D\"Athens/Institution Login\">Athens/Institution =
Login</a>&nbsp;</font></td>");=0A=
  =0A=
=0A=
=0A=
  =0A=
    document.write("<td align=3D\"right\">");=0A=
      =0A=
        =0A=
        document.write("<a =
href=3D\"https://www.sciencedirect.com/science?_ob=3DRegistrationURL&_met=
hod=3Ddisplay&_type=3Dguest&_returnURL=3Dhttp%3A%2F%2Fwww.sciencedirect.c=
om%2Fscience%3F_ob%3DArticleURL%26_udi%3DB6WN2-4WVK2MW-1%26_user%3D10%26_=
rdoc%3D1%26_fmt%3D%26_orig%3Dsearch%26_sort%3Dd%26_docanchor%3D%26view%3D=
c%26_acct%3DC000050221%26_version%3D1%26_urlVersion%3D0%26_userid%3D10%26=
md5%3D46a8704e0e3e9b3fbad880fa9f1e0c67&_acct=3DC000050221&_version=3D1&_u=
serid=3D10&md5=3D9c64a2a11a0a40168ebf60e73ee968f3\" target=3D\"_top\" =
title=3D\"Click here to learn about registering with ScienceDirect\">Not =
Registered?&nbsp;</a>");=0A=
        =0A=
      =0A=
    =0A=
      document.write("<a =
href=3D\"javascript:flip('sdLoginBox');javascript:flip('sdLoginBoxFold');=
\" title=3D\"Close the Login Box\">");=0A=
        document.write("<img src=3D\"/scidirimg/sign_minus.gif\" =
width=3D\"9\" height=3D\"9\" alt=3D\"Close the Login Box\" =
border=3D\"0\" title=3D\"Close the Login Box\"/>");=0A=
        document.write("</a>");=0A=
    =0A=
  =0A=
=0A=
document.write("</td>");=0A=
document.write("</tr>");=0A=
document.write("</table>");=0A=
document.write("<table width=3D\"100%\" cellspacing=3D\"0\" =
cellpadding=3D\"0\">");=0A=
document.write("<tr align=3D\"right\">");=0A=
document.write("<td align=3D\"left\">User&nbsp;Name:</td>");=0A=
document.write("<td align=3D\"left\">");=0A=
document.write("<input type=3D\"text\" name=3D\"userid\" =
class=3D\"xpstyle\" size=3D\"11\" title=3D\"Please enter your user name =
here\" />");=0A=
document.write("</td>");=0A=
document.write("<td align=3D\"right\">Password: </td>");=0A=
document.write("<td align=3D\"left\">");=0A=
document.write("<input type=3D\"password\" name=3D\"password\" =
class=3D\"xpstyle\" size=3D\"11\" maxlength=3D\"20\" title=3D\"Please =
enter your password here\" =
onkeypress=3D\"if(13=3D=3Devent.keyCode)this.form.submit();if =
(13=3D=3Devent.keyCode)return false;\"/>");=0A=
document.write("</td>");=0A=
document.write("<input type=3D\"hidden\" name=3D\"_ob\" =
value=3D\"MiamiLogonURL\">");=0A=
document.write("<input type=3D\"hidden\" name=3D\"targetURL\" =
value=3D\"http://www.sciencedirect.com/science?_ob=3DArticleURL&_udi=3DB6=
WN2-4WVK2MW-1&_user=3D10&_rdoc=3D1&_fmt=3D&_orig=3Dsearch&_sort=3Dd&_doca=
nchor=3D&view=3Dc&_acct=3DC000050221&_version=3D1&_urlVersion=3D0&_userid=
=3D10&md5=3D46a8704e0e3e9b3fbad880fa9f1e0c67\" >")=0A=
document.write("<input type=3D\"hidden\" name=3D\"returnURL\" =
value=3D\"http://www.sciencedirect.com/science?_ob=3DArticleURL&_udi=3DB6=
WN2-4WVK2MW-1&_user=3D10&_rdoc=3D1&_fmt=3D&_orig=3Dsearch&_sort=3Dd&_doca=
nchor=3D&view=3Dc&_acct=3DC000050221&_version=3D1&_urlVersion=3D0&_userid=
=3D10&md5=3D46a8704e0e3e9b3fbad880fa9f1e0c67\">");=0A=
document.write("<td align=3D\"left\"><input class=3D\"image\" =
type=3D\"image\" =
onmouseover=3D\"this.src=3D'/scidirimg/sci_dir/arrow_small_b.gif'\" =
onmouseout=3D\"this.src=3D'/scidirimg/sci_dir/arrow_small_a.gif'\" =
name=3D\"arrow\" src=3D\"/scidirimg/sci_dir/arrow_small_a.gif\" =
alt=3D\"Login\" title=3D\"Login\" value=3D\"Submit\" /></a>");=0A=
document.write("		</td>");=0A=
document.write("</tr>");=0A=
document.write("<tr valign=3D\"baseline\">");=0A=
document.write("<td align=3D\"left\" colspan=3D\"3\">");=0A=
=0A=
document.write("<input type=3D\"checkbox\" name=3D\"rememberid\" =
id=3D\"rememberMe\" value=3D\"Y\" class=3D\"checkbox\" =
title=3D\"Checking this option will log you in automatically next time =
you visit ScienceDirect\"/>");=0A=
document.write("<label for=3D\"rememberMe\"><span title=3D\"Checking =
this option will log you in automatically next time you visit =
ScienceDirect\">Remember&nbsp;me&nbsp;on&nbsp;this&nbsp;computer</span></=
label>");=0A=
=0A=
document.write("</td>");=0A=
document.write("<td align=3D\"left\" colspan=3D\"2\">");=0A=
document.write("<a =
href=3D\"/science?_ob=3DReminderURL&_method=3Ddisplay&_acct=3DC000050221&=
_version=3D1&_userid=3D10&md5=3D340075608c2fef24d4a7760e4cdfc3e0\" =
target=3D\"passwd\" onClick=3D\"var =
remindWin;remindWin=3Dwindow.open('','passwd','scrollbars=3Dyes,resizable=
=3Dyes,directories=3Dno,toolbar=3Dn,menubar=3Dno,status=3Dno,width=3D650,=
height=3D300');\" title=3D\"Click here for help in recovering your =
ScienceDirect access\">Forgotten&nbsp;password?</a>");=0A=
document.write("</td>");=0A=
document.write("</tr>");=0A=
document.write("</table></form></div>");=0A=
//---------->=0A=
</SCRIPT>
      <NOSCRIPT>
      <DIV id=3DsdLoginBox=20
      style=3D"PADDING-RIGHT: 0.02em; PADDING-LEFT: 0.02em; =
BACKGROUND-IMAGE: url(/scidirimg/login_background.gif); PADDING-BOTTOM: =
0.02em; PADDING-TOP: 0.02em; BACKGROUND-REPEAT: repeat-x; HEIGHT: 70px">
      <FORM name=3DsdLogin =
action=3Dhttps://www.sciencedirect.com/science/login=20
      method=3Dpost><INPUT type=3Dhidden value=3Dlogin name=3Dlogin>=20
      <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
        <TBODY>
        <TR vAlign=3Dtop>
        <TR>
          <TD noWrap align=3Dleft>&nbsp;<A title=3D"Athens/ Institution =
Login"=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DFederationURL&amp;_met=
hod=3Ddisplay&amp;_type=3Df&amp;_acct=3DC000050221&amp;_version=3D1&amp;_=
userid=3D10&amp;md5=3D72fe293848689e52a10d612dfcfa3bd4">Athens/Institutio=
n=20
            Login</A>&nbsp;</FONT></TD>
          <TD align=3Dright><A=20
            title=3D"Click here to learn about registering with =
ScienceDirect"=20
            =
href=3D"https://www.sciencedirect.com/science?_ob=3DRegistrationURL&amp;_=
method=3Ddisplay&amp;_type=3Dguest&amp;_returnURL=3Dhttp%3A%2F%2Fwww.scie=
ncedirect.com%2Fscience%3F_ob%3DArticleURL%26_udi%3DB6WN2-4WVK2MW-1%26_us=
er%3D10%26_rdoc%3D1%26_fmt%3D%26_orig%3Dsearch%26_sort%3Dd%26_docanchor%3=
D%26view%3Dc%26_acct%3DC000050221%26_version%3D1%26_urlVersion%3D0%26_use=
rid%3D10%26md5%3D46a8704e0e3e9b3fbad880fa9f1e0c67&amp;_acct=3DC000050221&=
amp;_version=3D1&amp;_userid=3D10&amp;md5=3D9c64a2a11a0a40168ebf60e73ee96=
8f3"=20
            target=3D_top>Not Registered? </A></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
        <TBODY>
        <TR align=3Dright>
          <TD align=3Dleft>User&nbsp;Name: </TD>
          <TD align=3Dleft><INPUT class=3Dxpstyle=20
            title=3D"Please enter your user name here" size=3D11 =
name=3Duserid> </TD>
          <TD align=3Dright>Password: </TD>
          <TD align=3Dleft><INPUT class=3Dxpstyle=20
            title=3D"Please enter your password here" type=3Dpassword =
maxLength=3D20=20
            size=3D11 name=3Dpassword> </TD><INPUT type=3Dhidden =
value=3DMiamiLogonURL=20
          name=3D_ob> <INPUT type=3Dhidden=20
          =
value=3Dhttp://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_rdoc=3D1&amp;_fmt=3D&amp;_orig=3Dsear=
ch&amp;_sort=3Dd&amp;_docanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&am=
p;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D46a8704e0e3=
e9b3fbad880fa9f1e0c67=20
          name=3DtargetURL> <INPUT type=3Dhidden=20
          =
value=3Dhttp://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_rdoc=3D1&amp;_fmt=3D&amp;_orig=3Dsear=
ch&amp;_sort=3Dd&amp;_docanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&am=
p;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D46a8704e0e3=
e9b3fbad880fa9f1e0c67=20
          name=3DreturnURL>=20
          <TD align=3Dleft><INPUT class=3Dimage title=3DLogin =
type=3Dimage alt=3DLogin=20
            =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/arrow_small_a.gif" =

            value=3DSubmit></A> </TD></TR>
        <TR vAlign=3Dbaseline>
          <TD align=3Dleft colSpan=3D3><INPUT class=3Dcheckbox =
id=3DrememberMe=20
            title=3D"Checking this option will log you in automatically =
next time you visit ScienceDirect"=20
            type=3Dcheckbox value=3DY name=3Drememberid> <LABEL =
for=3DrememberMe><SPAN=20
            title=3D"Checking this option will log you in automatically =
next time you visit =
ScienceDirect">Remember&nbsp;me&nbsp;on&nbsp;this&nbsp;computer</SPAN></L=
ABEL>=20
          </TD>
          <TD align=3Dleft colSpan=3D2><A=20
            title=3D"Click here for help in recovering your =
ScienceDirect access"=20
            onclick=3D"var =
remindWin;remindWin=3Dwindow.open('','passwd','scrollbars=3Dyes,resizable=
=3Dyes,directories=3Dno,toolbar=3Dn,menubar=3Dno,status=3Dno,width=3D650,=
height=3D300');"=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DReminderURL&amp;_metho=
d=3Ddisplay&amp;_acct=3DC000050221&amp;_version=3D1&amp;_userid=3D10&amp;=
md5=3D340075608c2fef24d4a7760e4cdfc3e0"=20
            target=3Dpasswd>Forgotten&nbsp;password?</A>=20
      =
</TD></TR></TBODY></TABLE></FORM></DIV></NOSCRIPT></SPAN></TD></TR></TD><=
/TR></SPAN></TD></TR></TBODY></TABLE><SPAN=20
style=3D"FONT-SIZE: 75%; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif">
<TABLE class=3D"sdMainNav sci_dirNav"=20
style=3D"FONT-SIZE: 1em; BACKGROUND-IMAGE: =
url(/scidirimg/sci_dir/navbar_back.gif); PADDING-BOTTOM: 0em"=20
cellSpacing=3D0 cellPadding=3D0 border=3D0>
  <TBODY>
  <TR>
    <TD align=3Dright width=3D"1%">&nbsp;</TD>
    <TD align=3Dleft><IMG height=3D1 alt=3D""=20
      src=3D"http://www.sciencedirect.com/scidirimg/space.gif" =
width=3D1>
      <TABLE class=3DsdMainNavCenter style=3D"FONT-SIZE: 1em" =
cellSpacing=3D0=20
      cellPadding=3D0>
        <TBODY>
        <TR vAlign=3Dcenter>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3DHome=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DHomePageURL&amp;_metho=
d=3DuserHomePage&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&amp=
;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D6b8f8a0bb11c4ebe676f09e6d7da5=
2c8"=20
            target=3D_top name=3DHome alt=3D"Home">
            <DIV class=3DsdMainNavPadding>Home</DIV></A></TD>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3DBrowse=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DBrowseListURL&amp;_typ=
e=3Dall&amp;_auth=3Dy&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D=
1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D5c2ba95356d2e928fa0a0f1d=
2a95c8b2"=20
            target=3D_top name=3DBrowse alt=3D"Browse">
            <DIV class=3DsdMainNavPadding>Browse</DIV></A></TD>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3D"My Settings"=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DUserSubscriptionURL&am=
p;_method=3Dbegin&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&am=
p;_urlVersion=3D1&amp;_userid=3D10&amp;md5=3D0a50489567914fe5fc148aaf6fb7=
fb82"=20
            target=3D_top name=3Daccount alt=3D"My Settings">
            <DIV class=3DsdMainNavPadding>My Settings</DIV></A></TD>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3DAlerts=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DMiamiSDIURL&amp;_metho=
d=3DlistAlerts&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&amp;_=
urlVersion=3D0&amp;_userid=3D10&amp;md5=3Dee149f2754ec51cc8403679a69dea73=
6"=20
            target=3D_top name=3Dalert alt=3D"Alerts">
            <DIV class=3DsdMainNavPadding>Alerts</DIV></A></TD>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3D"Help (Opens =
new window)"=20
            onclick=3D"var helpWin; =
helpWin=3Dwindow.open('/science?_ob=3DHelpURL&amp;_file=3Dbrowse_open_doc=
.htm&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=
=3D0&amp;_userid=3D10&amp;md5=3D285acfba3e995e253df2894ca82cdc1e','sdhelp=
','scrollbars=3Dyes,resizable=3Dyes,directories=3Dno,toolbar=3Dno,menubar=
=3Dno,status=3Dno,width=3D760,height=3D570'); helpWin.focus(); return =
false"=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DHelpURL&amp;_file=3Dbr=
owse_open_doc.htm&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&am=
p;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D285acfba3e995e253df2894ca82c=
dc1e"=20
            target=3Dsdhelp alt=3D"Help (Opens new window)">
            <DIV=20
  =
class=3DsdMainNavPadding>Help</DIV></A></TD></TR></TBODY></TABLE></TD></T=
R></TBODY></TABLE></SPAN>
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%" border=3D0>
  <TBODY>
  <TR>
    <TD><A name=3D"Skip Buttons"></A>
      <SCRIPT language=3Djavascript>=0A=
<!--=0A=
function clearQSForm() {=0A=
    document.qkSrch.qs_tak.value=3D"";=0A=
    document.qkSrch.qs_author.value=3D"";=0A=
    document.qkSrch.qs_title.value=3D"";=0A=
    document.qkSrch.qs_vol.value=3D"";=0A=
    document.qkSrch.qs_issue.value=3D"";=0A=
    document.qkSrch.qs_pages.value=3D"";=0A=
}=0A=
//-->=0A=
</SCRIPT>

      <DIV id=3DsdQuickSearch style=3D"FONT-SIZE: 75%">
      <DIV=20
      style=3D"BACKGROUND-POSITION: left bottom; BACKGROUND-IMAGE: =
url(/scidirimg/sci_dir/qs_background.gif); BACKGROUND-REPEAT: repeat-x; =
BACKGROUND-COLOR: #dadada">
      <TABLE width=3D"100%" border=3D0>
        <FORM name=3DqkSrch action=3D/science method=3Dget =
target=3D_top><INPUT=20
        type=3Dhidden value=3DQuickSearchURL name=3D_ob> <INPUT =
type=3Dhidden=20
        value=3DsubmitForm name=3D_method> <INPUT type=3Dhidden =
value=3DC000050221=20
        name=3D_acct> <INPUT type=3Dhidden =
value=3D0c4b6db32507e4a332b2aa6dd47a65f4=20
        name=3Dmd5>=20
        <TBODY>
        <TR vAlign=3Dcenter>
          <TD noWrap align=3Dleft>&nbsp;<B>Quick Search</B></TD>
          <TD align=3Dright><LABEL=20
          for=3Dqs_all>&nbsp;&nbsp;All&nbsp;fields</LABEL></TD>
          <TD align=3Dleft><INPUT class=3D"qsinput xpstyle" id=3Dqs_all=20
            title=3D"For example: heart attack AND behavior?" =
tabIndex=3D1=20
            maxLength=3D450 size=3D28 name=3Dqs_all></TD>
          <TD align=3Dright><LABEL =
for=3Dqs_author>&nbsp;&nbsp;Author</LABEL></TD>
          <TD align=3Dleft colSpan=3D5><INPUT class=3D"qsinput xpstyle" =
id=3Dqs_author=20
            title=3D"e.g. J S Smith or John Smith or Smith JS" =
tabIndex=3D2=20
            maxLength=3D450 size=3D30 name=3Dqs_author></TD>
          <TD noWrap></TD>
          <TD vAlign=3Dtop align=3Dright width=3D"90%"></TD></TR>
        <TR vAlign=3Dcenter>
          <TD noWrap align=3Dleft>&nbsp;<A=20
            onmouseover=3D"window.status=3D'Help is Available';return =
true"=20
            onclick=3D"var =
helpWin;helpWin=3Dwindow.open('/science?_ob=3DHelpURL&amp;_file=3Dqs_tips=
.htm&amp;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D0&amp;_use=
rid=3D10&amp;md5=3Df6c371af00211a946caf438b85111035','sdhelp','scrollbars=
=3Dyes,resizable=3Dyes,directories=3Dno,toolbar=3Dno,menubar=3Dno,status=3D=
no,width=3D760,height=3D570');helpWin.focus();return false"=20
            onmouseout=3D"window.status=3D'';return true"=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DHelpURL&amp;_file=3Dqs=
_tips.htm&amp;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D0&amp=
;_userid=3D10&amp;md5=3Df6c371af00211a946caf438b85111035"=20
            target=3Dsdhelp><IMG title=3D"Search tips (Opens new =
window)" tabIndex=3D9=20
            alt=3D"Search tips (Opens new window)"=20
            src=3D"http://www.sciencedirect.com/scidirimg/qs_tips.gif"=20
            align=3DabsMiddle border=3D0></A></TD>
          <TD align=3Dright><LABEL=20
            =
for=3Dqs_title>&nbsp;&nbsp;Journal/book&nbsp;title</LABEL></TD>
          <TD align=3Dleft>
            <DIV class=3D"auto_complete nojs" =
id=3DqsPub_autoComp></DIV><INPUT=20
            class=3D"qsinput xpstyle" id=3Dqs_title=20
            title=3D"For example: journal of molecular biology" =
tabIndex=3D3=20
            maxLength=3D450 size=3D28 name=3Dqs_title></TD>
          <TD align=3Dright><LABEL =
for=3Dqs_vol>&nbsp;&nbsp;Volume</LABEL></TD>
          <TD align=3Dleft><INPUT class=3D"qsinput xpstyle" id=3Dqs_vol=20
            style=3D"WIDTH: 30px" tabIndex=3D4 maxLength=3D10 size=3D3 =
name=3Dqs_vol></TD>
          <TD align=3Dright><LABEL =
for=3Dqs_issue>&nbsp;&nbsp;Issue</LABEL></TD>
          <TD align=3Dleft><INPUT class=3D"qsinput xpstyle" =
id=3Dqs_issue=20
            style=3D"WIDTH: 30px" tabIndex=3D5 maxLength=3D10 size=3D3 =
name=3Dqs_issue></TD>
          <TD align=3Dright><LABEL =
for=3Dqs_pages>&nbsp;&nbsp;Page</LABEL></TD>
          <TD align=3Dright><INPUT class=3D"qsinput xpstyle" =
id=3Dqs_pages=20
            title=3D"For example: 14-27" style=3D"WIDTH: 30px" =
tabIndex=3D6=20
            maxLength=3D10 size=3D3 name=3Dqs_pages></TD>
          <TD noWrap align=3Dleft>&nbsp;&nbsp;&nbsp;&nbsp;<A=20
            =
onmouseover=3D"document.images['clearQS'].src=3D'/scidirimg/sci_dir/btn_c=
lear2.gif'"=20
            onclick=3D"clearQSForm(); return false;"=20
            =
onmouseout=3D"document.images['clearQS'].src=3D'/scidirimg/sci_dir/btn_cl=
ear1.gif'"=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_rdoc=3D1&amp;_fmt=3D&amp;_orig=3Dsear=
ch&amp;_sort=3Dd&amp;_docanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&am=
p;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D46a8704e0e3=
e9b3fbad880fa9f1e0c67&amp;clearQS=3Dy"><IMG=20
            title=3D"Clear all fields" tabIndex=3D7 alt=3D"Clear all =
fields"=20
            =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/btn_clear1.gif"=20
            border=3D0 name=3DclearQS></A>&nbsp;&nbsp;&nbsp;&nbsp;<INPUT =

            onmouseover=3D"this.src=3D'/scidirimg/sci_dir/btn_go2.gif'"=20
            title=3D"Submit Quick Search" tabIndex=3D8=20
            onmouseout=3D"this.src=3D'/scidirimg/sci_dir/btn_go1.gif'" =
type=3Dimage=20
            alt=3D"Submit Quick Search"=20
            =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/btn_go1.gif"=20
            value=3DSubmit></TD></TR>
        <SCRIPT type=3Dtext/javascript>=0A=
//<![CDATA[=0A=
function sdAutoComplete(inputField, outputField, serviceURL) {=0A=
    var qsPub_autoComp =3D new =
Ajax.Autocompleter(inputField,outputField,serviceURL,{ minChars:2, =
frequency: 0.15 })=0A=
}=0A=
//]]>=0A=
function ccAutoComplete(inputField, outputField, validCostCodes) {=0A=
    var costcode_list =3D new =
Autocompleter.Local(inputField,outputField,validCostCodes,{ minChars:2, =
partialSearch:false }) }=0A=
//]]>=0A=
</SCRIPT>

        <SCRIPT type=3Dtext/javascript>=0A=
//<![CDATA[=0A=
    sdAutoComplete('qs_title','qsPub_autoComp','/science/jfind/auto');=0A=
//]]>=0A=
</SCRIPT>
        </FORM></TBODY></TABLE></DIV></DIV></TD></TR></TBODY></TABLE>
<CENTER>
<DIV id=3Dleaderboard=20
style=3D"PADDING-RIGHT: 0em; PADDING-LEFT: 0em; PADDING-BOTTOM: 0.1em; =
WIDTH: 100%; PADDING-TOP: 0.1em"><NOSCRIPT><!-- for non JavaScript =
browsers and Netscape 2.x --><A=20
href=3D"http://ad.doubleclick.net/jump/scidir.rbi/;categ=3Ddevelopbio;acc=
t=3Dd51dc24a2b132512122a31f7d7dda950;sz=3D728x90;ptile=3D1;ord=3D686848?"=
><IMG=20
title=3DAdvertisement. alt=3DAdvertisement.=20
src=3D"http://ad.doubleclick.net/ad/scidir.rbi/;categ=3Ddevelopbio;acct=3D=
d51dc24a2b132512122a31f7d7dda950;sz=3D728x90;ptile=3D1;ord=3D686848?"=20
border=3D0></A></NOSCRIPT></DIV></CENTER>
<DIV style=3D"MARGIN-LEFT: 8px; MARGIN-RIGHT: 5px">
<DIV style=3D"WIDTH: 100%">
<DIV class=3DpageText id=3DsdBody width=3D"80%">
<TABLE width=3D"100%">
  <TBODY>
  <TR>
    <TD vAlign=3Dtop>
      <DIV class=3Dartihead id=3Dartihead><A=20
      =
href=3D"http://www.sciencedirect.com/science/journal/03069877"><B>Medical=
=20
      Hypotheses</B></A><BR><SPAN style=3D"COLOR: #ff0000"><B>Article in =

      Press,</B> Corrected Proof</SPAN> - <A=20
      =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_rdoc=3D1&amp;_fmt=3D&amp;_orig=3Dsear=
ch&amp;_sort=3Dd&amp;_docanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&am=
p;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D46a8704e0e3=
e9b3fbad880fa9f1e0c67#FCANote">Note=20
      to users</A> </DIV></TD>
    <TD vAlign=3Dtop align=3Dright>
      <TABLE cellSpacing=3D0 cellPadding=3D0>
        <TBODY>
        <TR>
          <TD>&nbsp;</TD></TR>
        <TR>
          <TD style=3D"PADDING-RIGHT: 5px" vAlign=3Dbottom =
align=3Dright>
            <DIV class=3Dnojs style=3D"PADDING-BOTTOM: 3px; PADDING-TOP: =
3px">Font=20
            Size: <A=20
            href=3D"javascript:fontSizeMinus('articleBody', =
'science');"><IMG=20
            title=3D"Decrease Font Size" style=3D"VERTICAL-ALIGN: =
middle"=20
            alt=3D"Decrease Font Size"=20
            =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/reduce_font.gif"=20
            border=3D0></A>&nbsp;&nbsp;<A=20
            href=3D"javascript:fontSizeAdd('articleBody', =
'science');"><IMG=20
            title=3D"Increase Font Size" style=3D"VERTICAL-ALIGN: =
middle"=20
            alt=3D"Increase Font Size"=20
            =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/increase_font.gif" =

            border=3D0></A> =
</DIV></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<DIV style=3D"FONT-WEIGHT: bold; COLOR: #ff0000"></DIV>
<DIV class=3DouterPage>
<DIV class=3DarticlePage=20
style=3D"BACKGROUND-IMAGE: url(/scidirimg/bg_gradient.gif)">
<TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%" align=3Dleft =
border=3D0>
  <TBODY>
  <TR>
    <TD class=3Dnowrap align=3Dleft>
      <DIV id=3DabsTabOff style=3D"DISPLAY: none"><A class=3Dnoul=20
      style=3D"CURSOR: pointer" =
href=3D"javascript:toggleTabs('unsubTab')">
      <DIV class=3DtabUnselectedOuter>
      <DIV class=3DtabUnselectedInner=20
      style=3D"BACKGROUND-IMAGE: =
url(/scidirimg/tab_middle.gif)">Abstract</DIV></DIV><IMG=20
      style=3D"FLOAT: left" alt=3D"" hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_unselect_right.gif" =

      border=3D0></A> </DIV>
      <DIV id=3DabsTabOn>
      <DIV class=3DtabSelectedOuter>
      <DIV class=3DtabSelectedInner><IMG style=3D"VERTICAL-ALIGN: =
middle" alt=3D""=20
      hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/icon_arrow_active.g=
if"=20
      border=3D0>&nbsp;Abstract<SPAN class=3DtxtHidden> -=20
      selected</SPAN></DIV></DIV><IMG style=3D"FLOAT: left" alt=3D"" =
hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_select_right.gif">=20
      </DIV><A class=3Dnoul style=3D"CURSOR: pointer; COLOR: #000000"=20
      =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b">=
<IMG=20
      style=3D"FLOAT: left" alt=3D"" hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_unselect_left.gif"=20
      border=3D0>
      <DIV class=3DtabUnselectedOuter>
      <DIV class=3DtabUnselectedInner=20
      style=3D"BACKGROUND-IMAGE: =
url(/scidirimg/tab_middle.gif)">Article</DIV></DIV><IMG=20
      style=3D"FLOAT: left" alt=3D"" hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_unselect_right.gif" =

      border=3D0></A>
      <SCRIPT language=3DJavascript>=0A=
      <!--=0A=
      refTabOffLink_OnLoad =3D "javascript:toggleTabs('refTab', =
'http://www.sciencedirect.com/science/article/ke/B6WN2-4WVK2MW-1?&_coverD=
ate=3D07%2F26%2F2009_ap=3D&_tap=3D&_sub=3DN&_fmt=3Dreferences&md5=3D2f7cc=
6b12705ff22ad9f18a63c044591')";=0A=
      //--></SCRIPT>
      =20
      <DIV class=3Dnojs id=3DrefTabOff><A class=3Dnoul =
id=3DrefTabOffLinkNode=20
      style=3D"CURSOR: pointer"><IMG style=3D"FLOAT: left" alt=3D"" =
hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_unselect_left.gif"=20
      border=3D0>
      <DIV class=3DtabUnselectedOuter>
      <DIV class=3DtabUnselectedInner=20
      style=3D"BACKGROUND-IMAGE: url(/scidirimg/tab_middle.gif)"><SPAN=20
      class=3DdisabledTabLink>References</SPAN></DIV></DIV><IMG=20
      style=3D"FLOAT: left" alt=3D"" hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_unselect_right.gif" =

      border=3D0></A> </DIV>
      <DIV class=3Dnojs id=3DrefTabOn style=3D"DISPLAY: none"><IMG =
style=3D"FLOAT: left"=20
      alt=3D"" hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_select_left.gif">
      <DIV class=3DtabSelectedOuter>
      <DIV class=3DtabSelectedInner><IMG alt=3D"" hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/icon_arrow_active.g=
if"=20
      border=3D0>&nbsp;References<SPAN class=3DtxtHidden> -=20
      selected</SPAN></DIV></DIV><IMG style=3D"FLOAT: left" alt=3D"" =
hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_select_right.gif">=20
      </DIV><A class=3Dnoul style=3D"CURSOR: pointer"=20
      =
href=3D"http://www.sciencedirect.com/science?_ob=3DMImg&amp;_imagekey=3DB=
6WN2-4WVK2MW-1-1&amp;_cdi=3D6950&amp;_user=3D10&amp;_orig=3Dsearch&amp;_c=
overDate=3D07%2F26%2F2009&amp;_sk=3D999999999&amp;view=3Dc&amp;wchp=3DdGL=
bVlW-zSkzk&amp;md5=3Df32a9a71503a5a9ce615e8c9afc36660&amp;ie=3D/sdarticle=
.pdf"><IMG=20
      style=3D"FLOAT: left" alt=3D"" hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_unselect_left.gif"=20
      border=3D0>
      <DIV class=3DtabUnselectedOuter>
      <DIV class=3DtabUnselectedInner=20
      style=3D"BACKGROUND-IMAGE: url(/scidirimg/tab_middle.gif)"><IMG =
title=3D""=20
      style=3D"VERTICAL-ALIGN: middle" alt=3D""=20
      src=3D"http://www.sciencedirect.com/scidirimg/icon_pdf.gif" =
border=3D0=20
      name=3Dpdf> Purchase PDF (123 K)</DIV></DIV><IMG style=3D"FLOAT: =
left" alt=3D""=20
      hspace=3D0=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/corner_unselect_right.gif" =

      border=3D0></A> </TD></TR></TBODY></TABLE><BR clear=3Dall>
<TABLE style=3D"WIDTH: 340px" cellSpacing=3D0 cellPadding=3D0 =
align=3Dright border=3D0=20
valign=3D"top">
  <TBODY>
  <TR>
    <TD bgColor=3D#ffffff>
      <DIV class=3DMMCvTitleBox><SPAN class=3DMMCvTitleSpan=20
      style=3D"BORDER-BOTTOM: #ffffff 2px solid; TOP: 2px"><IMG =
id=3DMMCvProdImgPath=20
      style=3D"VERTICAL-ALIGN: middle" alt=3D""=20
      =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/icon_arrow_active.g=
if">=20
      </SPAN><SPAN class=3DMMCvTitleSpan=20
      style=3D"FONT-SIZE: 0.9em; VERTICAL-ALIGN: middle">Article=20
      Toolbox</SPAN></DIV></TD></TR>
  <TR>
    <TD>
      <DIV class=3DFATTABInner>
      <TABLE title=3D"Article Toolbox" cellSpacing=3D3 cellPadding=3D0 =
width=3D350=20
      align=3Dleft bgColor=3D#ffffff=20
      summary=3D"This table contains links and tools for articles" =
border=3D0=20
      valign=3D"bottom">
        <TBODY>
        <TR>
          <TD vAlign=3Dtop>
            <TABLE cellSpacing=3D5>
              <TBODY>
              <TR>
                <TD align=3Dleft><A=20
                  =
onmouseover=3D"document.images['addEmail'].src=3D'/scidirimg/sci_dir/emai=
larticle_b.gif'"=20
                  style=3D"VERTICAL-ALIGN: bottom; COLOR: #000000; =
FONT-FAMILY: arial, verdana, helvetica, sans-serif; TEXT-DECORATION: =
none"=20
                  =
onmouseout=3D"document.images['addEmail'].src=3D'/scidirimg/sci_dir/email=
article_a.gif'"=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DEmailFriendURL&amp;_me=
thod=3DgatherInfo&amp;refSource=3Dabst&amp;count=3D1&amp;_uoikey=3DB6WN2-=
4WVK2MW-1&amp;_acct=3DC000050221&amp;_version=3D1&amp;_userid=3D10&amp;md=
5=3D18a4c1ddd5c8399f039106b8266c06c5"><IMG=20
                  style=3D"VERTICAL-ALIGN: middle" alt=3D""=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/emailarticle_a.gif"=
=20
                  border=3D0 name=3DaddEmail>&nbsp; E-mail=20
                =
Article</A>&nbsp;&nbsp;&nbsp;</TD></TR></TBODY></TABLE></TD>
          <TD vAlign=3Dtop>
            <TABLE cellSpacing=3D5>
              <TBODY>
              <TR>
                <TD align=3Dleft><A=20
                  =
onmouseover=3D"document.images['addQuickLink'].src=3D'/scidirimg/sci_dir/=
quicklink_b.gif'"=20
                  style=3D"VERTICAL-ALIGN: bottom; COLOR: #000000; =
FONT-FAMILY: arial, verdana, helvetica, sans-serif; TEXT-DECORATION: =
none"=20
                  =
onmouseout=3D"document.images['addQuickLink'].src=3D'/scidirimg/sci_dir/q=
uicklink_a.gif'"=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DQuickLinksURL&amp;_met=
hod=3DcreateIntLink&amp;_type=3Dabstract&amp;_key=3DB6WN2-4WVK2MW-1&amp;_=
acct=3DC000050221&amp;_version=3D1&amp;_userid=3D10&amp;md5=3D887781c9023=
ca698f2e164d1d8378040"><IMG=20
                  style=3D"VERTICAL-ALIGN: middle" alt=3D""=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/sci_dir/quicklink_a.gif"=20
                  border=3D0 name=3DaddQuickLink>&nbsp; Add to my Quick=20
                  Links</A>&nbsp;&nbsp;&nbsp;</TD></TR>
              <TR>
                <TD vAlign=3Dcenter align=3Dleft><A=20
                  onclick=3D"var outwardWin; =
outwardWin=3Dwindow.open('','outwardLink','scrollbars=3Dyes,resizable=3Dy=
es,directories=3Dyes,toolbar=3Dyes,menubar=3Dyes,status=3Dyes,location=3D=
yes,width=3D610,height=3D480,screenX=3D10,screenY=3D10'); =
outwardWin.focus()"=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DRedirectURL&amp;_metho=
d=3DoutwardLink&amp;_partnerName=3D795&amp;_udi=3DB6WN2-4WVK2MW-1&amp;_ta=
rgetURL=3Dhttp%3A%2F%2Fwww.2collab.com%2Fbookmark%2Faddsd%3Fpii%3DS030698=
770900471X%26resize_to_fit%3Dyes&amp;_acct=3DC000050221&amp;_version=3D1&=
amp;_userid=3D10&amp;md5=3D3b466f1de2e13db30fe05c02893c87f6"=20
                  target=3DoutwardLink><IMG=20
                  title=3D"Bookmark and share in 2collab (opens in new =
window)"=20
                  alt=3D"Bookmark and share in 2collab (opens in new =
window)"=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/gw_ol_2co.gif"=20
                  border=3D0></A></TD></TR>
              <TR>
                <TD vAlign=3Dcenter align=3Dleft><A=20
                  onclick=3D"var outwardWin; =
outwardWin=3Dwindow.open('','outwardLink','scrollbars=3Dyes,resizable=3Dy=
es,directories=3Dyes,toolbar=3Dyes,menubar=3Dyes,status=3Dyes,location=3D=
yes,width=3D610,height=3D480,screenX=3D10,screenY=3D10'); =
outwardWin.focus()"=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DRedirectURL&amp;_metho=
d=3DoutwardLink&amp;_partnerName=3D936&amp;_udi=3DB6WN2-4WVK2MW-1&amp;_ta=
rgetURL=3Dhttps%3A%2F%2Fs100.copyright.com%2FAppDispatchServlet%3Fpublish=
erName%3DELS%26contentID%3DS030698770900471X%26orderBeanReset%3Dtrue&amp;=
_acct=3DC000050221&amp;_version=3D1&amp;_userid=3D10&amp;md5=3Df1d7f1c141=
2560505686031a9e3e8d24"=20
                  target=3DoutwardLink><IMG=20
                  title=3D"Request permission to reuse this article"=20
                  alt=3D"Request permission to reuse this article"=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/gw_ol_rts.gif"=20
                  =
border=3D0></A></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></DIV>=
</TD></TR>
  <TR class=3DMMCvRow id=3DmultiMediaViewerRow style=3D"DISPLAY: none">
    <TD>
      <DIV class=3DMMCvOuter id=3DmultiMediaViewerOuter></DIV></TD></TR>
  <TR class=3DtableFmDivider bgColor=3D#ddf8ad>
    <TD>&nbsp;</TD></TR>
  <TR>
    <TD>&nbsp;</TD></TR>
  <TR>
    <TD align=3Dright><SPAN id=3Dboombox><NOSCRIPT><!-- for non =
JavaScript browsers and Netscape 2.x --><A=20
      =
href=3D"http://ad.doubleclick.net/jump/scidir.rbi/;categ=3Ddevelopbio;acc=
t=3Dd51dc24a2b132512122a31f7d7dda950;sz=3D336x280;ptile=3D1;ord=3D686848?=
"><IMG=20
      title=3DAdvertisement. alt=3DAdvertisement.=20
      =
src=3D"http://ad.doubleclick.net/ad/scidir.rbi/;categ=3Ddevelopbio;acct=3D=
d51dc24a2b132512122a31f7d7dda950;sz=3D336x280;ptile=3D1;ord=3D686848?"=20
      border=3D0></A></NOSCRIPT></SPAN></TD></TR>
  <TR>
    <TD>&nbsp;</TD></TR>
  <TR align=3Dright>
    <TD>
      <TABLE class=3DgreyTable cellSpacing=3D0 width=3D340>
        <TBODY>
        <TR>
          <TD class=3DgreyHeader=20
          style=3D"BACKGROUND-IMAGE: url(/scidirimg/right_gradient.gif)" =

            scope=3Dcol><B>Related Articles in =
ScienceDirect</B></TD></TR>
        <TBODY id=3Dmlkt>
        <TR>
          <TD>
            <DIV id=3DmlktList>
            <DIV class=3Dinfobubble-container>
            <DIV class=3DmlktLink id=3DmlktLink_1>
            <TABLE cellSpacing=3D0 cellPadding=3D0 border=3D0>
              <TBODY>
              <TR>
                <TD=20
                style=3D"PADDING-RIGHT: 5px; PADDING-LEFT: 5px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 5px"=20
                vAlign=3Dtop><IMG alt=3D""=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/bullet_square.gif"></TD>
                <TD=20
                =
onmouseover=3D"InfoBubble.show('infobubble_1','mlktLink_1','iframe_1')"=20
                onmouseout=3DInfoBubble.timeout()><A=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B7CPT-4TP1FGN-10&amp;_user=3D10&amp;_origUdi=3DB6WN2-4WVK2MW-1&amp;_fmt=3D=
high&amp;_coverDate=3D12%2F31%2F2008&amp;_rdoc=3D1&amp;_orig=3Darticle&am=
p;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D1=
0&amp;md5=3De2ca82935b0df3d63bf7de45bf49c64b"=20
                  ?>Herpes Zoster and Post Herpetic Neuralgia (PHN) =
<WBR>-<WBR>=20
                  The T...<BR><I>International Journal of Infectious=20
                  Diseases</I></A><BR><IFRAME id=3Diframe_1=20
                  style=3D"DISPLAY: none; Z-INDEX: 1; POSITION: =
absolute"=20
                  src=3D"about:blank" frameBorder=3D0 =
scrolling=3Dno></IFRAME>
                  <DIV class=3Dinfobubble id=3Dinfobubble_1>
                  <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
                    <TBODY>
                    <TR>
                      <TD>
                        <DIV style=3D"PADDING-LEFT: 5px; FLOAT: =
right"><A=20
                        onclick=3DInfoBubble.hide()><IMG=20
                        =
onmouseover=3D"javascript:this.src=3D'/scidirimg/btn_xclose_hov.gif';"=20
                        title=3DClose=20
                        =
onmouseout=3D"javascript:this.src=3D'/scidirimg/btn_xclose.gif';"=20
                        alt=3DClose=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/btn_xclose.gif"></A></DIV><=
IMG=20
                        title=3D"You are not entitled to access the full =
text of this document"=20
                        height=3D14=20
                        alt=3D"You are not entitled to access the full =
text of this document"=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/jrn_nsub.gif"=20
                        width=3D12 border=3D0>&nbsp;<B><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B7CPT-4TP1FGN-10&amp;_user=3D10&amp;_coverDate=3D12%2F31%2F2008&amp;_rdoc=
=3D1&amp;_fmt=3Dhigh&amp;_orig=3Darticle&amp;_cdi=3D17975&amp;_sort=3Dv&a=
mp;_docanchor=3D&amp;view=3Dc&amp;_ct=3D195&amp;_acct=3DC000050221&amp;_v=
ersion=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D08ec84534eb1449=
d1ddf52f32514a9c8"=20
                        ?>Herpes Zoster and Post Herpetic Neuralgia =
(PHN)=20
                        <WBR>-<WBR> The Taiwan=20
                        Perspective</A></B><BR><I>International Journal =
of=20
                        Infectious Diseases</I>, <I>Volume 12, =
Supplement 1</I>,=20
                        <I>December 2008</I>, <I>Pages =
e10-e11</I><BR>C.C.=20
                        Yang<BR><BR><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DMImg&amp;_imagekey=3DB=
7CPT-4TP1FGN-10-1&amp;_cdi=3D17975&amp;_user=3D10&amp;_orig=3Darticle&amp=
;_coverDate=3D12%2F31%2F2008&amp;_sk=3D999879999.8998&amp;view=3Dc&amp;wc=
hp=3DdGLbVlW-zSkzk&amp;md5=3D2c39a0339446f9067026ddd760312fc5&amp;ie=3D/s=
darticle.pdf"=20
                        ?><IMG style=3D"VERTICAL-ALIGN: middle" alt=3D"" =

                        =
src=3D"http://www.sciencedirect.com/scidirimg/icon_pdf.gif"=20
                        border=3D0 name=3Dpdf> Purchase PDF (55 K)</A>=20
                  </TD></TR></TBODY></TABLE></DIV></TD></TR>
              <DIV></DIV></TBODY></TABLE></DIV>
            <DIV class=3Dinfobubble-container>
            <DIV class=3DmlktLink id=3DmlktLink_2>
            <TABLE cellSpacing=3D0 cellPadding=3D0 border=3D0>
              <TBODY>
              <TR>
                <TD=20
                style=3D"PADDING-RIGHT: 5px; PADDING-LEFT: 5px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 5px"=20
                vAlign=3Dtop><IMG alt=3D""=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/bullet_square.gif"></TD>
                <TD=20
                =
onmouseover=3D"InfoBubble.show('infobubble_2','mlktLink_2','iframe_2')"=20
                onmouseout=3DInfoBubble.timeout()><A=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WP9-4DDP0DJ-6V&amp;_user=3D10&amp;_origUdi=3DB6WN2-4WVK2MW-1&amp;_fmt=3D=
high&amp;_coverDate=3D09%2F30%2F1992&amp;_rdoc=3D1&amp;_orig=3Darticle&am=
p;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D1=
0&amp;md5=3Daa2198df8e2052d4b8beeda65442f7c1"=20
                  ?>Pharmacological management of post herpetic=20
                  neuralgia<BR><I>Pharmacological =
Research</I></A><BR><IFRAME=20
                  id=3Diframe_2=20
                  style=3D"DISPLAY: none; Z-INDEX: 1; POSITION: =
absolute"=20
                  src=3D"about:blank" frameBorder=3D0 =
scrolling=3Dno></IFRAME>
                  <DIV class=3Dinfobubble id=3Dinfobubble_2>
                  <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
                    <TBODY>
                    <TR>
                      <TD>
                        <DIV style=3D"PADDING-LEFT: 5px; FLOAT: =
right"><A=20
                        onclick=3DInfoBubble.hide()><IMG=20
                        =
onmouseover=3D"javascript:this.src=3D'/scidirimg/btn_xclose_hov.gif';"=20
                        title=3DClose=20
                        =
onmouseout=3D"javascript:this.src=3D'/scidirimg/btn_xclose.gif';"=20
                        alt=3DClose=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/btn_xclose.gif"></A></DIV><=
IMG=20
                        title=3D"You are not entitled to access the full =
text of this document"=20
                        height=3D14=20
                        alt=3D"You are not entitled to access the full =
text of this document"=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/jrn_nsub.gif"=20
                        width=3D12 border=3D0>&nbsp;<B><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WP9-4DDP0DJ-6V&amp;_user=3D10&amp;_coverDate=3D09%2F30%2F1992&amp;_rdoc=
=3D1&amp;_fmt=3Dhigh&amp;_orig=3Darticle&amp;_cdi=3D6985&amp;_sort=3Dv&am=
p;_docanchor=3D&amp;view=3Dc&amp;_ct=3D195&amp;_acct=3DC000050221&amp;_ve=
rsion=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3Da5c3b4f191b21bb7=
f406498d7d1aedda"=20
                        ?>Pharmacological management of post herpetic=20
                        neuralgia</A></B><BR><I>Pharmacological =
Research</I>,=20
                        <I>Volume 26, Supplement 1</I>, <I>September =
1992</I>,=20
                        <I>Page 91</I><BR>Aniello De Nicola, David Niv, =
Giustino=20
                        Varrassi<BR><BR><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DMImg&amp;_imagekey=3DB=
6WP9-4DDP0DJ-6V-1&amp;_cdi=3D6985&amp;_user=3D10&amp;_orig=3Darticle&amp;=
_coverDate=3D09%2F30%2F1992&amp;_sk=3D999739999.8998&amp;view=3Dc&amp;wch=
p=3DdGLbVlW-zSkzk&amp;md5=3Dd3e914795e6e44a437f20d76694b009b&amp;ie=3D/sd=
article.pdf"=20
                        ?><IMG style=3D"VERTICAL-ALIGN: middle" alt=3D"" =

                        =
src=3D"http://www.sciencedirect.com/scidirimg/icon_pdf.gif"=20
                        border=3D0 name=3Dpdf> Purchase PDF (92 K)</A>=20
                  </TD></TR></TBODY></TABLE></DIV></TD></TR>
              <DIV></DIV></TBODY></TABLE></DIV>
            <DIV class=3Dinfobubble-container>
            <DIV class=3DmlktLink id=3DmlktLink_3>
            <TABLE cellSpacing=3D0 cellPadding=3D0 border=3D0>
              <TBODY>
              <TR>
                <TD=20
                style=3D"PADDING-RIGHT: 5px; PADDING-LEFT: 5px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 5px"=20
                vAlign=3Dtop><IMG alt=3D""=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/bullet_square.gif"></TD>
                <TD=20
                =
onmouseover=3D"InfoBubble.show('infobubble_3','mlktLink_3','iframe_3')"=20
                onmouseout=3DInfoBubble.timeout()><A=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WKH-4S5JRB8-4P&amp;_user=3D10&amp;_origUdi=3DB6WN2-4WVK2MW-1&amp;_fmt=3D=
high&amp;_coverDate=3D04%2F30%2F2008&amp;_rdoc=3D1&amp;_orig=3Darticle&am=
p;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D1=
0&amp;md5=3D6547219884904ee54832663114f294b5"=20
                  ?>(228) Repetitive paravertebral nerve block using a=20
                  mixt...<BR><I>The Journal of Pain</I></A><BR><IFRAME=20
                  id=3Diframe_3=20
                  style=3D"DISPLAY: none; Z-INDEX: 1; POSITION: =
absolute"=20
                  src=3D"about:blank" frameBorder=3D0 =
scrolling=3Dno></IFRAME>
                  <DIV class=3Dinfobubble id=3Dinfobubble_3>
                  <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
                    <TBODY>
                    <TR>
                      <TD>
                        <DIV style=3D"PADDING-LEFT: 5px; FLOAT: =
right"><A=20
                        onclick=3DInfoBubble.hide()><IMG=20
                        =
onmouseover=3D"javascript:this.src=3D'/scidirimg/btn_xclose_hov.gif';"=20
                        title=3DClose=20
                        =
onmouseout=3D"javascript:this.src=3D'/scidirimg/btn_xclose.gif';"=20
                        alt=3DClose=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/btn_xclose.gif"></A></DIV><=
IMG=20
                        title=3D"You are not entitled to access the full =
text of this document"=20
                        height=3D14=20
                        alt=3D"You are not entitled to access the full =
text of this document"=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/jrn_nsub.gif"=20
                        width=3D12 border=3D0>&nbsp;<B><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WKH-4S5JRB8-4P&amp;_user=3D10&amp;_coverDate=3D04%2F30%2F2008&amp;_rdoc=
=3D1&amp;_fmt=3Dhigh&amp;_orig=3Darticle&amp;_cdi=3D6907&amp;_sort=3Dv&am=
p;_docanchor=3D&amp;view=3Dc&amp;_ct=3D195&amp;_acct=3DC000050221&amp;_ve=
rsion=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3De7b630f23e43f6f7=
e8ffc4172293c2f6"=20
                        ?>(228) Repetitive paravertebral nerve block =
using a=20
                        mixture of ketamine, bupivacaine and =
methylprednisolone=20
                        for pain relief in intractable post herpetic=20
                        neuralgia</A></B><BR><I>The Journal of Pain</I>, =

                        <I>Volume 9, Issue 4, Supplement 2</I>, <I>April =

                        2008</I>, <I>Page 33</I><BR>M. Maroof, H. =
Usmani, A.=20
                        Obaid, A. Muneeb, R. Khan, F. Nasreen<BR><BR><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DMImg&amp;_imagekey=3DB=
6WKH-4S5JRB8-4P-1&amp;_cdi=3D6907&amp;_user=3D10&amp;_orig=3Darticle&amp;=
_coverDate=3D04%2F30%2F2008&amp;_sk=3D999909995.8997&amp;view=3Dc&amp;wch=
p=3DdGLbVlW-zSkzk&amp;md5=3D0422d5bcae589e77d5a588f250569c0b&amp;ie=3D/sd=
article.pdf"=20
                        ?><IMG style=3D"VERTICAL-ALIGN: middle" alt=3D"" =

                        =
src=3D"http://www.sciencedirect.com/scidirimg/icon_pdf.gif"=20
                        border=3D0 name=3Dpdf> Purchase PDF (47 K)</A>=20
                  </TD></TR></TBODY></TABLE></DIV></TD></TR>
              <DIV></DIV></TBODY></TABLE></DIV>
            <DIV class=3Dinfobubble-container>
            <DIV class=3DmlktLink id=3DmlktLink_4>
            <TABLE cellSpacing=3D0 cellPadding=3D0 border=3D0>
              <TBODY>
              <TR>
                <TD=20
                style=3D"PADDING-RIGHT: 5px; PADDING-LEFT: 5px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 5px"=20
                vAlign=3Dtop><IMG alt=3D""=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/bullet_square.gif"></TD>
                <TD=20
                =
onmouseover=3D"InfoBubble.show('infobubble_4','mlktLink_4','iframe_4')"=20
                onmouseout=3DInfoBubble.timeout()><A=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6T0K-485Y6MD-78&amp;_user=3D10&amp;_origUdi=3DB6WN2-4WVK2MW-1&amp;_fmt=3D=
high&amp;_coverDate=3D11%2F30%2F1988&amp;_rdoc=3D1&amp;_orig=3Darticle&am=
p;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D1=
0&amp;md5=3D1495e3c17cb0cf4c522091fd456afc67"=20
                  ?>Reply to Louis P. =
Gangarosa<BR><I>Pain</I></A><BR><IFRAME=20
                  id=3Diframe_4=20
                  style=3D"DISPLAY: none; Z-INDEX: 1; POSITION: =
absolute"=20
                  src=3D"about:blank" frameBorder=3D0 =
scrolling=3Dno></IFRAME>
                  <DIV class=3Dinfobubble id=3Dinfobubble_4>
                  <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
                    <TBODY>
                    <TR>
                      <TD>
                        <DIV style=3D"PADDING-LEFT: 5px; FLOAT: =
right"><A=20
                        onclick=3DInfoBubble.hide()><IMG=20
                        =
onmouseover=3D"javascript:this.src=3D'/scidirimg/btn_xclose_hov.gif';"=20
                        title=3DClose=20
                        =
onmouseout=3D"javascript:this.src=3D'/scidirimg/btn_xclose.gif';"=20
                        alt=3DClose=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/btn_xclose.gif"></A></DIV><=
IMG=20
                        title=3D"You are not entitled to access the full =
text of this document"=20
                        height=3D14=20
                        alt=3D"You are not entitled to access the full =
text of this document"=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/jrn_nsub.gif"=20
                        width=3D12 border=3D0>&nbsp;<B><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6T0K-485Y6MD-78&amp;_user=3D10&amp;_coverDate=3D11%2F30%2F1988&amp;_rdoc=
=3D1&amp;_fmt=3Dhigh&amp;_orig=3Darticle&amp;_cdi=3D4865&amp;_sort=3Dv&am=
p;_docanchor=3D&amp;view=3Dc&amp;_ct=3D195&amp;_acct=3DC000050221&amp;_ve=
rsion=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D89aa0fb676ba7c52=
2b0616ba912a1ff5"=20
                        ?>Reply to Louis P. =
Gangarosa</A></B><BR><I>Pain</I>,=20
                        <I>Volume 35, Issue 2</I>, <I>November 1988</I>, =

                        <I>Pages 232-233</I><BR>Bertalan =
Csillik<BR><BR><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DMImg&amp;_imagekey=3DB=
6T0K-485Y6MD-78-1&amp;_cdi=3D4865&amp;_user=3D10&amp;_orig=3Darticle&amp;=
_coverDate=3D11%2F30%2F1988&amp;_sk=3D999649997&amp;view=3Dc&amp;wchp=3Dd=
GLbVlW-zSkzk&amp;md5=3D43bc6ff267d96962855990eff764af71&amp;ie=3D/sdartic=
le.pdf"=20
                        ?><IMG style=3D"VERTICAL-ALIGN: middle" alt=3D"" =

                        =
src=3D"http://www.sciencedirect.com/scidirimg/icon_pdf.gif"=20
                        border=3D0 name=3Dpdf> Purchase PDF (169 K)</A>=20
                    </TD></TR></TBODY></TABLE></DIV></TD></TR>
              <DIV></DIV></TBODY></TABLE></DIV>
            <DIV class=3Dinfobubble-container>
            <DIV class=3DmlktLink id=3DmlktLink_5>
            <TABLE cellSpacing=3D0 cellPadding=3D0 border=3D0>
              <TBODY>
              <TR>
                <TD=20
                style=3D"PADDING-RIGHT: 5px; PADDING-LEFT: 5px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 5px"=20
                vAlign=3Dtop><IMG alt=3D""=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/bullet_square.gif"></TD>
                <TD=20
                =
onmouseover=3D"InfoBubble.show('infobubble_5','mlktLink_5','iframe_5')"=20
                onmouseout=3DInfoBubble.timeout()><A=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6T0K-4MWPVDC-1&amp;_user=3D10&amp;_origUdi=3DB6WN2-4WVK2MW-1&amp;_fmt=3D=
high&amp;_coverDate=3D03%2F31%2F2007&amp;_rdoc=3D1&amp;_orig=3Darticle&am=
p;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D1=
0&amp;md5=3D68a3f1a5c41d4fc0a8075035d88c022d"=20
                  ?>Response to the Letter to the Editor by Robert=20
                  Dworkin<BR><I>Pain</I></A><BR><IFRAME id=3Diframe_5=20
                  style=3D"DISPLAY: none; Z-INDEX: 1; POSITION: =
absolute"=20
                  src=3D"about:blank" frameBorder=3D0 =
scrolling=3Dno></IFRAME>
                  <DIV class=3Dinfobubble id=3Dinfobubble_5>
                  <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
                    <TBODY>
                    <TR>
                      <TD>
                        <DIV style=3D"PADDING-LEFT: 5px; FLOAT: =
right"><A=20
                        onclick=3DInfoBubble.hide()><IMG=20
                        =
onmouseover=3D"javascript:this.src=3D'/scidirimg/btn_xclose_hov.gif';"=20
                        title=3DClose=20
                        =
onmouseout=3D"javascript:this.src=3D'/scidirimg/btn_xclose.gif';"=20
                        alt=3DClose=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/btn_xclose.gif"></A></DIV><=
IMG=20
                        title=3D"You are not entitled to access the full =
text of this document"=20
                        height=3D14=20
                        alt=3D"You are not entitled to access the full =
text of this document"=20
                        =
src=3D"http://www.sciencedirect.com/scidirimg/jrn_nsub.gif"=20
                        width=3D12 border=3D0>&nbsp;<B><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6T0K-4MWPVDC-1&amp;_user=3D10&amp;_coverDate=3D03%2F31%2F2007&amp;_rdoc=3D=
1&amp;_fmt=3Dhigh&amp;_orig=3Darticle&amp;_cdi=3D4865&amp;_sort=3Dv&amp;_=
docanchor=3D&amp;view=3Dc&amp;_ct=3D195&amp;_acct=3DC000050221&amp;_versi=
on=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3Dd80f2558c4f21b86a1e=
b31c6589582c8"=20
                        ?>Response to the Letter to the Editor by Robert =

                        Dworkin</A></B><BR><I>Pain</I>, <I>Volume 128, =
Issues=20
                        1-2</I>, <I>March 2007</I>, <I>Pages=20
                        190-192</I><BR>Karin L. Petersen, Hans Gustav =
Thyregod,=20
                        Michael C. Rowbotham<BR><BR><A=20
                        =
href=3D"http://www.sciencedirect.com/science?_ob=3DMImg&amp;_imagekey=3DB=
6T0K-4MWPVDC-1-1&amp;_cdi=3D4865&amp;_user=3D10&amp;_orig=3Darticle&amp;_=
coverDate=3D03%2F31%2F2007&amp;_sk=3D998719998&amp;view=3Dc&amp;wchp=3DdG=
LbVlW-zSkzk&amp;md5=3D60078f340ea0a2ed61cead265abb8bbe&amp;ie=3D/sdarticl=
e.pdf"=20
                        ?><IMG style=3D"VERTICAL-ALIGN: middle" alt=3D"" =

                        =
src=3D"http://www.sciencedirect.com/scidirimg/icon_pdf.gif"=20
                        border=3D0 name=3Dpdf> Purchase PDF (64 K)</A>=20
                  </TD></TR></TBODY></TABLE></DIV></TD></TR>
              =
<DIV></DIV></TBODY></TABLE></DIV></DIV></DIV></DIV></DIV></DIV></DIV></TD=
></TR>
        <TR>
          <TD></TD></TR>
        <TR>
          <TD=20
          style=3D"BORDER-TOP: #cccccc 1px dashed; BORDER-BOTTOM: =
#cccccc 1px solid; BACKGROUND-COLOR: #f6f6f6"=20
          width=3D340>
            <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
              <TBODY>
              <TR>
                <TD=20
                style=3D"PADDING-RIGHT: 5px; PADDING-LEFT: 5px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 3px"=20
                vAlign=3Dtop><IMG alt=3D""=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/bulletTriang.gif"></TD>
                <TD><A=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DRelatedArtURL&amp;_udi=
=3DB6WN2-4WVK2MW-1&amp;_orig=3Darticle&amp;_acct=3DC000050221&amp;_versio=
n=3D1&amp;_userid=3D10&amp;md5=3Dfd3211c43661aa682b66e8ac5bb2e6d1">View=20
                  More Related Articles</A></TD></TR></TBODY></TABLE>
            <DIV></DIV></TD></TR></TBODY>
        <TBODY>
        <TR class=3Dnojs>
          <TD=20
          style=3D"BORDER-RIGHT: #cccccc 0px solid; MARGIN: 0px; =
BORDER-LEFT: #cccccc 0px solid; BORDER-BOTTOM: #cccccc 1px solid; =
TEXT-ALIGN: center"=20
          =
onclick=3D"toggleMLKT('B6WN2-4WVK2MW-1','/scidirimg/btn_arrow_up_off.gif'=
,'/scidirimg/btn_arrow_down_off.gif','http://www.sciencedirect.com/scienc=
e')"><IMG=20
            id=3DmlktArrow =
onmouseover=3D"mlktHover(1,'/scidirimg/sci_dir/')"=20
            onmouseout=3D"mlktHover(0,'/scidirimg/')" alt=3D""=20
            =
src=3D"http://www.sciencedirect.com/scidirimg/btn_arrow_up_off.gif"=20
            =
border=3D0></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<DIV class=3Dfont3 id=3DarticleBody>
<DIV class=3DarticleHeaderInner id=3DarticleHeader><IMG height=3D10 =
alt=3D""=20
src=3D"http://www.sciencedirect.com/scidirimg/clear.gif" width=3D1 =
border=3D0><A=20
onclick=3D"var doiWin; =
doiWin=3Dwindow.open('http://dx.doi.org/10.1016/j.mehy.2009.06.039','doil=
ink','scrollbars=3Dyes,resizable=3Dyes,directories=3Dyes,toolbar=3Dyes,me=
nubar=3Dyes,status=3Dyes'); doiWin.focus()"=20
href=3D"http://dx.doi.org/10.1016/j.mehy.2009.06.039"=20
target=3Ddoilink>doi:10.1016/j.mehy.2009.06.039</A>&nbsp;&nbsp;&nbsp;&nbs=
p;
<DIV class=3Dprinthide id=3Dprinthide><A=20
onmouseover=3D"window.status=3D'Help is Available';return true"=20
onclick=3D"var helpWin; =
helpWin=3Dwindow.open('/science?_ob=3DHelpURL&amp;_file=3Ddoi.htm&amp;_ac=
ct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp=
;md5=3Da143a86ddc585c54adbe80b2046626c3','sdhelp','scrollbars=3Dyes,resiz=
able=3Dyes,directories=3Dno,toolbar=3Dno,menubar=3Dno,status=3Dno,width=3D=
760,height=3D570'); helpWin.focus()"=20
href=3D"http://www.sciencedirect.com/science?_ob=3DHelpURL&amp;_file=3Ddo=
i.htm&amp;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D0&amp;_us=
erid=3D10&amp;md5=3Da143a86ddc585c54adbe80b2046626c3"=20
target=3Dsdhelp><IMG title=3D"How to Cite or Link Using DOI (Opens New =
Window)"=20
height=3D14 alt=3D"How to Cite or Link Using DOI (Opens New Window)"=20
src=3D"http://www.sciencedirect.com/scidirimg/icon_doi.gif" width=3D136=20
align=3DabsMiddle border=3D0></A></DIV><BR>Copyright =C2=A9 2009 =
Elsevier Ltd All rights=20
reserved.<BR><BR>
<DIV class=3DarticleTitle>Post herpetic neuralgia, schwann cell =
activation and=20
vitamin D </DIV><!-- articleText -->
<DIV class=3DauthorsNoEnt id=3DauthorsAnchors>
<DIV class=3DppvMSG><A=20
href=3D"http://www.sciencedirect.com/science?_ob=3DMImg&amp;_imagekey=3DB=
6WN2-4WVK2MW-1-1&amp;_cdi=3D6950&amp;_user=3D10&amp;_orig=3Dsearch&amp;_c=
overDate=3D07%2F26%2F2009&amp;_sk=3D999999999&amp;view=3Dc&amp;wchp=3DdGL=
bVlW-zSkzk&amp;md5=3Df32a9a71503a5a9ce615e8c9afc36660&amp;ie=3D/sdarticle=
.pdf"><IMG=20
alt=3D"Purchase the full-text article"=20
src=3D"http://www.sciencedirect.com/science/page/static/science/ppvimp2.g=
if"></A><BR></DIV><!-- ppvMSG -->
<DIV class=3D"refMsg nojs"><BR><BR><BR>References and further reading =
may be=20
available for this article. To view references and further reading you =
must <A=20
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b">=
purchase</A>=20
this article.</A><BR><BR></DIV><!-- refMsg --><STRONG>
<P>Jim Bartley<A name=3Dbcor1></A><A onclick=3D"toggleTabs('unsubTab')"=20
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_rdoc=3D1&amp;_fmt=3D&amp;_orig=3Dsear=
ch&amp;_sort=3Dd&amp;_docanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&am=
p;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D46a8704e0e3=
e9b3fbad880fa9f1e0c67#cor1"><SUP><IMG=20
title=3D"Corresponding Author Contact Information"=20
alt=3D"Corresponding Author Contact Information"=20
src=3D"http://www.sciencedirect.com/scidirimg/entities/REcor.gif"=20
border=3D0></SUP></A><SUP>, </SUP><A onclick=3D"toggleTabs('unsubTab')"=20
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_rdoc=3D1&amp;_fmt=3D&amp;_orig=3Dsear=
ch&amp;_sort=3Dd&amp;_docanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&am=
p;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D46a8704e0e3=
e9b3fbad880fa9f1e0c67#implicit0"><SUP>a</SUP></A><SUP>,=20
</SUP><A href=3D"mailto:jbartley@ihug.co.nz"><SUP><IMG=20
title=3D"E-mail The Corresponding Author" alt=3D"E-mail The =
Corresponding Author"=20
src=3D"http://www.sciencedirect.com/scidirimg/entities/REemail.gif"=20
border=3D0></SUP></A></P></STRONG></DIV><!-- authorsNoEnt -->
<DIV class=3DarticleText>
<DIV class=3DauthorsNoEnt id=3DauthorsAnchors>
<P><A name=3Dimplicit0></A><SUP>a</SUP>The Auckland Regional Pain =
Service, FRACS,=20
10 Owens Rd., Epsom, Auckland 1023, New=20
Zealand</P></DIV><!-- authorsNoEnt --></DIV><!-- articleText -->
<DIV class=3DarticleText><BR>Received 17 June 2009;&nbsp; </DIV><!-- =
articleText -->
<DIV class=3DarticleText>accepted 18 June 2009.&nbsp; </DIV><!-- =
articleText -->
<DIV class=3DarticleText>Available online 26 July 2009.=20
</DIV><!-- articleText --><BR>
<DIV class=3DarticleText></DIV><!-- articleText -->
<DIV class=3DarticleText>
<H3 class=3Dh3>Summary</H3>
<P>While the underlying pathophysiology of herpes zoster infection has =
been well=20
characterised, many of the mechanisms relating to the subsequent =
development of=20
post herpetic neuralgia (PHN) remain uncertain. The dorsal horn atrophy =
and=20
reduction in skin innervation seen in PHN patients does not adequately =
explain=20
many clinical features or the efficacy of a number of topical =
treatments. In the=20
central nervous system the glia, their receptors and their secreted =
signalling=20
factors are now known to have a major influence on neural function. In =
the=20
peripheral nervous system, schwann cell activation in response to =
infection and=20
trauma releases a number of neuroexcitatory substances. Activation of =
the nervi=20
nervorum in the peripheral nervous system also leads to the release of=20
calcitonin gene related peptide, substance P and nitric oxide. Schwann =
cell=20
and/or nervi nervorum activation could be an additional mechanism of =
pain=20
generation in PHN. Such a paradigm shift would mean that drugs useful in =
the=20
treatment of glial cell activation such as naloxone, naltrexone, =
minocycline,=20
pentoxifyllline, propentofylline, AV411 (ibudilast) and interleukin 10 =
could be=20
useful in PHN. These drugs could be used systemically or even topically. =
High=20
dose topical vitamin D would appear to offer particular promise because =
vitamin=20
D has the ability to both reduce glial inflammation and reduce nitric =
oxide=20
production.</P></DIV><!-- articleText -->
<DIV class=3DarticleText>
<H3 class=3Dh3>Article Outline</H3>
<DL>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#s=
ecx1">Background</A>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#s=
ecx2">Schwann=20
  cell activation</A>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#s=
ecx3">Nervi=20
  and vasa nervorum</A>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#s=
ecx4">Current=20
  treatment modalities</A>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#s=
ecx5">Vitamin=20
  D</A>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#s=
ecx6">The=20
  hypothesis</A>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#s=
ecx7">Evaluation=20
  of the hypothesis</A>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#s=
ecx8">Consequences=20
  of the hypothesis</A>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#s=
ecx9">Conflict=20
  of interest statement</A>
  <DT><A=20
  =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_coverDate=3D07%2F26%2F2009&amp;_rdoc=3D=
1&amp;_fmt=3Dfull&amp;_orig=3Dsearch&amp;_cdi=3D6950&amp;_sort=3Dd&amp;_d=
ocanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D0&amp;_userid=3D10&amp;md5=3Dbb917f09f1be327ebee9ff4c2289ab6b#b=
ibl001">References</A></DT></DL></DIV><!-- articleText -->
<DIV class=3DarticleText><BR><A name=3Dcor1></A><SPAN class=3DrefPreview =

id=3Drefp_1></SPAN><A =
onmouseover=3D"RefPreview.showRef(event,'ref_bcor1','refp_1')"=20
onclick=3D"toggleTabs('fullTab')" onmouseout=3DRefPreview.hideRef()=20
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_rdoc=3D1&amp;_fmt=3D&amp;_orig=3Dsear=
ch&amp;_sort=3Dd&amp;_docanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&am=
p;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D46a8704e0e3=
e9b3fbad880fa9f1e0c67#bcor1"><SUP><IMG=20
title=3D"Corresponding Author Contact Information"=20
alt=3D"Corresponding Author Contact Information"=20
src=3D"http://www.sciencedirect.com/scidirimg/entities/REcor.gif"=20
border=3D0></SUP></A>Tel.: +64 9 631 0475; fax: +64 9 631 0478. =
</DIV><!-- articleText -->
<DIV class=3DSDTxtSmallBold><BR clear=3Dall>
<TABLE>
  <TBODY>
  <TR>
    <TD><A name=3DFCANote></A><B>Note to users:</B> The section =
"Articles in=20
      Press" contains peer reviewed accepted articles to be published in =
this=20
      journal. When the final article is assigned to an issue of the =
journal,=20
      the "Article in Press" version will be removed from this section =
and will=20
      appear in the associated published journal issue. The date it was =
first=20
      made available online will be carried over. Please be aware that =
although=20
      "Articles in Press" do not have all bibliographic details =
available yet,=20
      they can already be cited using the year of online publication and =
the DOI=20
      as follows: Author(s), Article Title, Journal (Year), DOI. Please =
consult=20
      the journal's reference style for the exact appearance of these =
elements,=20
      abbreviation of journal names and the use of punctuation. =
</TD></TR>
  <TR>
    <TD>There are three types of "Articles in Press":</TD></TR>
  <TR>
    <TD>
      <UL>
        <LI><B>Accepted manuscripts:</B> these are articles that have =
been peer=20
        reviewed and accepted for publication by the Editorial Board. =
The=20
        articles have not yet been copy edited and/or formatted in the =
journal=20
        house style.=20
        <LI><B>Uncorrected proofs:</B> these are copy edited and =
formatted=20
        articles that are not yet finalized and that will be corrected =
by the=20
        authors. Therefore the text could change before final =
publication.=20
        <LI><B>Corrected proofs:</B> these are articles containing the =
authors'=20
        corrections and may, or may not yet have specific issue and page =
numbers=20
        assigned.</LI></UL></TD></TR></TBODY></TABLE></DIV>
<SCRIPT =
src=3D"http://www.sciencedirect.com/science/page/javascript/ggcon.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT language=3Djavascript> =
google_ad_client=3D'ca-sciencedirect_b_js'; google_ad_output=3D'js'; =
google_ad_type=3D'text'; =
google_page_url=3D'http://www.sciencedirect.com/science/article/B6WN2-4WV=
K2MW-1/2/757bce62da087fd9de79b867b157b5cc'; google_encoding=3D'utf8'; =
google_safe=3D'high'; google_max_num_ads=3D'3';</SCRIPT>

<SCRIPT language=3Djavascript=20
src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"></SCRIPT>=

</DIV></DIV></DIV></DIV><BR clear=3Dall>
<DIV class=3DbottomArticle>
<TABLE width=3D"100%">
  <TBODY>
  <TR>
    <TD><A=20
      =
href=3D"http://www.sciencedirect.com/science/journal/03069877"><B>Medical=
=20
      Hypotheses</B></A><BR><SPAN style=3D"COLOR: #ff0000"><B>Article in =

      Press,</B> Corrected Proof</SPAN> - <A=20
      =
href=3D"http://www.sciencedirect.com/science?_ob=3DArticleURL&amp;_udi=3D=
B6WN2-4WVK2MW-1&amp;_user=3D10&amp;_rdoc=3D1&amp;_fmt=3D&amp;_orig=3Dsear=
ch&amp;_sort=3Dd&amp;_docanchor=3D&amp;view=3Dc&amp;_acct=3DC000050221&am=
p;_version=3D1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D46a8704e0e3=
e9b3fbad880fa9f1e0c67#FCANote">Note=20
      to users</A> </TD></TR></TBODY></TABLE></DIV></DIV><SPAN=20
style=3D"FONT-SIZE: 75%; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif">
<TABLE class=3D"sdMainNav sci_dirNav"=20
style=3D"FONT-SIZE: 1em; BACKGROUND-IMAGE: =
url(/scidirimg/sci_dir/navbar_back.gif)"=20
cellSpacing=3D0 cellPadding=3D0 border=3D0>
  <TBODY>
  <TR>
    <TD align=3Dright width=3D"1%">&nbsp;</TD>
    <TD align=3Dleft><IMG height=3D1 alt=3D""=20
      src=3D"http://www.sciencedirect.com/scidirimg/space.gif" =
width=3D1>
      <TABLE class=3DsdMainNavCenter style=3D"FONT-SIZE: 1em" =
cellSpacing=3D0=20
      cellPadding=3D0>
        <TBODY>
        <TR vAlign=3Dcenter>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3DHome=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DHomePageURL&amp;_metho=
d=3DuserHomePage&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&amp=
;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D6b8f8a0bb11c4ebe676f09e6d7da5=
2c8"=20
            target=3D_top name=3DHome alt=3D"Home">
            <DIV class=3DsdMainNavPadding>Home</DIV></A></TD>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3DBrowse=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DBrowseListURL&amp;_typ=
e=3Dall&amp;_auth=3Dy&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D=
1&amp;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D5c2ba95356d2e928fa0a0f1d=
2a95c8b2"=20
            target=3D_top name=3DBrowse alt=3D"Browse">
            <DIV class=3DsdMainNavPadding>Browse</DIV></A></TD>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3D"My Settings"=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DUserSubscriptionURL&am=
p;_method=3Dbegin&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&am=
p;_urlVersion=3D1&amp;_userid=3D10&amp;md5=3D0a50489567914fe5fc148aaf6fb7=
fb82"=20
            target=3D_top name=3Daccount alt=3D"My Settings">
            <DIV class=3DsdMainNavPadding>My Settings</DIV></A></TD>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3DAlerts=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DMiamiSDIURL&amp;_metho=
d=3DlistAlerts&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&amp;_=
urlVersion=3D0&amp;_userid=3D10&amp;md5=3Dee149f2754ec51cc8403679a69dea73=
6"=20
            target=3D_top name=3Dalert alt=3D"Alerts">
            <DIV class=3DsdMainNavPadding>Alerts</DIV></A></TD>
          <TD class=3DsdMainNav=20
          =
onmouseover=3D"this.style.backgroundImage=3D'url(/scidirimg/sci_dir/navba=
r_select.gif)';this.style.backgroundColor=3D'#005d2a'"=20
          =
onmouseout=3D"this.style.backgroundImage=3D'';this.style.backgroundColor=3D=
''"=20
          vAlign=3Dcenter noWrap align=3Dleft><A title=3D"Help (Opens =
new window)"=20
            onclick=3D"var helpWin; =
helpWin=3Dwindow.open('/science?_ob=3DHelpURL&amp;_file=3Dbrowse_open_doc=
.htm&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=
=3D0&amp;_userid=3D10&amp;md5=3D285acfba3e995e253df2894ca82cdc1e','sdhelp=
','scrollbars=3Dyes,resizable=3Dyes,directories=3Dno,toolbar=3Dno,menubar=
=3Dno,status=3Dno,width=3D760,height=3D570'); helpWin.focus(); return =
false"=20
            =
href=3D"http://www.sciencedirect.com/science?_ob=3DHelpURL&amp;_file=3Dbr=
owse_open_doc.htm&amp;_btn=3DY&amp;_acct=3DC000050221&amp;_version=3D1&am=
p;_urlVersion=3D0&amp;_userid=3D10&amp;md5=3D285acfba3e995e253df2894ca82c=
dc1e"=20
            target=3Dsdhelp alt=3D"Help (Opens new window)">
            <DIV=20
  =
class=3DsdMainNavPadding>Help</DIV></A></TD></TR></TBODY></TABLE></TD></T=
R></TBODY></TABLE></SPAN>
<DIV style=3D"MARGIN: 5px 5px 5px 8px">
<DIV style=3D"WIDTH: 100%">
<TABLE class=3DpageText style=3D"FONT-SIZE: 75%" cellSpacing=3D0 =
cellPadding=3D0=20
width=3D"100%" border=3D0>
  <TBODY>
  <TR>
    <TD vAlign=3Dtop>
      <TABLE cellSpacing=3D0 cellPadding=3D0 border=3D0>
        <TBODY>
        <TR vAlign=3Dtop>
          <TD vAlign=3Dtop><A href=3D"http://www.elsevier.com/" =
target=3D_blank><IMG=20
            title=3D"Elsevier.com (Opens new window)"=20
            alt=3D"Elsevier.com (Opens new window)"=20
            src=3D"http://www.sciencedirect.com/scidirimg/tree.gif" =
align=3Dleft=20
            border=3D0 target=3D"_blank"></A> </TD>
          <TD vAlign=3Dbottom height=3D"100%">
            <TABLE height=3D"100%" cellSpacing=3D0 cellPadding=3D0 =
border=3D0>
              <TBODY>
              <TR height=3D"100%">
                <TD vAlign=3Dbottom align=3Dleft><A=20
                  title=3D"ScienceDirect Info Site (Opens New Window)"=20
                  href=3D"http://info.sciencedirect.com/" =
target=3D_blank>About=20
                  ScienceDirect</A> &nbsp;|&nbsp; <A=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DMiamiCommentURL&amp;_m=
ethod=3Dcomment&amp;_acct=3DC000050221&amp;_version=3D1&amp;_urlVersion=3D=
0&amp;_userid=3D10&amp;md5=3D35de5c36da5433e32b1b3357b12a114c"=20
                  target=3D_top>Contact Us</A> &nbsp;|&nbsp; <A=20
                  =
href=3D"http://www.elsevierscitech.com/forms/sd/form.html"=20
                  target=3D_blank>Information for Advertisers</A> =
&nbsp;|&nbsp; <A=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DUserSubscriptionURL&am=
p;_method=3DdisplayTerms&amp;_acct=3DC000050221&amp;_version=3D1&amp;_url=
Version=3D1&amp;_userid=3D10&amp;md5=3Dfee479c52e700c6acacefce9e2106a6f" =

                  target=3D_top>Terms &amp; Conditions</A> &nbsp;|&nbsp; =
<A=20
                  =
href=3D"http://www.sciencedirect.com/science?_ob=3DUserSubscriptionURL&am=
p;_method=3DdisplayPolicy&amp;_acct=3DC000050221&amp;_version=3D1&amp;_ur=
lVersion=3D1&amp;_userid=3D10&amp;md5=3D9e5aa4a0cc7bfb68a086a1438e8bfb51"=
=20
                  target=3D_top>Privacy Policy</A> </TD></TR>
              <TR>
                <TD><IMG height=3D10 alt=3D""=20
                  =
src=3D"http://www.sciencedirect.com/scidirimg/clear.gif"=20
                width=3D1></TD></TR>
              <TR height=3D0>
                <TD=20
                style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; HEIGHT: 0px"=20
                vAlign=3Dbottom align=3Dleft>Copyright =C2=A9 2009 <A=20
                  href=3D"http://www.elsevier.com/" =
target=3D_blank>Elsevier=20
                  B.V.</A> All rights reserved. ScienceDirect=C2=AE is a =
registered=20
                  trademark of Elsevier B.V.=20
      =
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></T=
ABLE></DIV></DIV><SPAN=20
id=3Dleaderboard2 style=3D"DISPLAY: none"><!-- Leaderboard 728x90 ad - =
Start -->
<DIV title=3DAdvertisement. alt=3D"Advertisement.">
<DIV=20
style=3D"FONT-SIZE: 11px; MIN-HEIGHT: 90px; COLOR: #aaaaaa; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif; HEIGHT: 16px; BACKGROUND-COLOR: =
#eeeeee; TEXT-ALIGN: center">
<SCRIPT language=3DJavascript1.1=20
src=3D"http://ad.doubleclick.net/adj/scidir.rbi/;dcopt=3Dist;abr=3D!webtv=
;categ=3Ddevelopbio;acct=3Dd51dc24a2b132512122a31f7d7dda950;sz=3D728x90;p=
tile=3D1;ord=3D686848?"></SCRIPT>

<SCRIPT><!--if ((!document.images && =
navigator.userAgent.indexOf('Mozilla/2.') >=3D 0) || =
(navigator.userAgent.indexOf("WebTV") >=3D 0)){document.write('<a =
href=3D"http://ad.doubleclick.net/jump/scidir.rbi/;categ=3Ddevelopbio;acc=
t=3Dd51dc24a2b132512122a31f7d7dda950;sz=3D728x90;ptile=3D1;ord=3D686848?"=
>');document.write('<img =
src=3D"http://ad.doubleclick.net/ad/scidir.rbi/;categ=3Ddevelopbio;acct=3D=
d51dc24a2b132512122a31f7d7dda950;sz=3D728x90;ptile=3D1;ord=3D686848" =
border=3D"0" alt=3D"Advertisement." =
title=3D"Advertisement."></a>');}//--></SCRIPT>
</DIV></DIV><!-- Leaderboard 728x90 ad - End --></SPAN><SPAN =
id=3Dboombox2=20
style=3D"DISPLAY: none"><!-- Boombox 336x280 ad - Start -->
<DIV title=3DAdvertisement. alt=3D"Advertisement.">
<SCRIPT language=3DJavascript1.1=20
src=3D"http://ad.doubleclick.net/adj/scidir.rbi/;dcopt=3Dist;abr=3D!webtv=
;categ=3Ddevelopbio;acct=3Dd51dc24a2b132512122a31f7d7dda950;sz=3D336x280;=
ptile=3D1;ord=3D686848?"></SCRIPT>

<SCRIPT><!--if ((!document.images && =
navigator.userAgent.indexOf('Mozilla/2.') >=3D 0) || =
(navigator.userAgent.indexOf("WebTV") >=3D 0)){document.write('<a =
href=3D"http://ad.doubleclick.net/jump/scidir.rbi/;categ=3Ddevelopbio;acc=
t=3Dd51dc24a2b132512122a31f7d7dda950;sz=3D336x280;ptile=3D1;ord=3D686848?=
">');document.write('<img =
src=3D"http://ad.doubleclick.net/ad/scidir.rbi/;categ=3Ddevelopbio;acct=3D=
d51dc24a2b132512122a31f7d7dda950;sz=3D336x280;ptile=3D1;ord=3D686848" =
border=3D"0" alt=3D"Advertisement." =
title=3D"Advertisement."></a>');}//--></SCRIPT>
</DIV><!-- Leaderboard 336x280 ad - End --></SPAN>
<SCRIPT language=3Djavascript><!--=0A=
displayAds();=0A=
//--></SCRIPT>
</DIV></DIV>
<SCRIPT=20
src=3D"http://www.sciencedirect.com/science/page/javascript/multimediaX.j=
s"=20
type=3Dtext/javascript></SCRIPT>
</BODY></HTML>

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/science/page/static/science/logo.gif

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
drfL3e5697vgDa94oRAEADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/clear.gif

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAIBRAA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/science/page/static/science/dynamic_scidir_home_guest_user.gif

R0lGODlh7QAaAKIAAP///2aZM2ZmMzOZMzNmMzMzMwAA/wAAACH5BAQUAP8ALAAAAADtABoAAAP/
WLCr/DACJ6uFQ4QRrv9gKI5PYZoXRaanqq4T844zDAXdotk371s1ySv4A5aKDgrxs4QJBsUIIReN
NmWQa7WR/SljJRR3fBQ3xN+J+YGrBAiLN2OzmU87OE7kFHat+TJ/a2dKg2R7ZoVfgn5pWGAKSYyE
XC6PjoFji1iYC1MVegChnwA7ox2kR5qXrKuuYKqwNYCPkGSSr0mtrWi7urW3wV2Hq7+wdnF3cTlt
AHXOUG9UznBGx8Sy2EuO2522udq7rtzhwNnnsYq6krQMoZ45pKQZOKQBTznvfcbmarTt7Wp521Ou
hTF+hHqpOtiiHLE03iCyQnhjmhxqyeJAkZCn/9Q0YTNCpiA4DJ05iijFORzXT+RJXyS/JRIoIVUo
PfjgLdBzStRHSAdBwjQp7Nq1oN+SIpVIE93SWIEauZQVCVhANht2zIlGRVpXOgxSZVLUp2xUs1nI
Cml49tZMt42i/jkEMJGWLXjz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97M
ubPnz4gNiBYNwIAH0yJQg16tWXUI1x9gs549Gbbp0apJ2yZdmgHuB7dH++Z9e4Fw2sjx/u6du3dp
182jQ9Bt3Dlz1M2Ta/9h23rx6r7DSwcO/jvz4ce3q1/Rfbx17/C7OzdPf719G+3FG4eu//n7+RzV
uZfdfQRekF955u2XW3G8lYcgdsA1COF/syUAADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/space.gif

R0lGODlhAQABAJH/AP///wAAAP///wAAACH/C0FET0JFOklSMS4wAt7tACH5BAEAAAIALAAAAAAB
AAEAAAICVAEAOw==

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/qs_tips.gif

R0lGODlhUgARAMQAAAAAANvb22ZmZkBAQKurq+fn55mZmYaGhsTExEtLS3V1df///7u7u/Pz81JS
UszMzLe3t3t7e1dXV2ZmZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUU
AAEALAAAAABSABEAAAX/YCCKjHGcBjOubOu+cCzHiDLc+KAgc+//QIgjR3RAgMgkEjG8GQqLBiRx
c/CU2GzLdiMsFo9vAKfQ+gAwdEDtY+AS38hA8BXgVGYZu7X/Gd4NBTcKdTgGLACJK4l7jCNoaooi
kH2OkWuNkgEHRDcCDWA5B4uPk6Vrp5KXmKakqKyvbGqcRJ9gVDijp66vrrKIu62rsS20OV4PnbqP
mozNjr2VwcTRzGx/RBALckSHLsO7w9KtqeR9r25EEga4OXjm8LHiwtOrqvEBXDgIC9hkfJowZaI2
6Re5gsQCQhPB5NgCYwOs5Jk4LYaQTjiMUNx4joa+HDs2ikxS4sSBFCNTA8oIAQA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/sci_dir/btn_clear1.gif

R0lGODlhNwATAPcPAFmklABkM1+pmgBeOFKgkABjMFB+ckd6bABkMf7+/lOfjmamjlShkABmNuXw
7autsABlNVqllQBlOFmhiQBkMgBdK1umllymlgBrRXqSjVqkkoeZll2DeQBjNyV0X2irmS+Aa16p
mlOcgwBeNVOcgQBdNHWzpABcN1Cei0t7bwBjMUuTc4aZlThzYzx1Y2OkilJ/c0ydhqqrrgBgKYCW
kqWqrABhMABgQUeQbABcJgBlQABiLABqQQBnPp7KwU6chQBYJj92Zyd2YlehjGmJgVajk4m8rWuL
g1SgjUqScXGpjgBqP9bp5UmXfdbo4yt6ZamrrjGBbABhLGGFfABjLk6bigBbNUx9cGeihANeQgBu
R1mkk4CVkgBmMzuKd12hhT+NeleiknSPinq2qU2aiE5+ciCBZKPLvXiQixNuPmaHf0uYhwBlMv3+
/htlTlmhjBR1SlmBdl+mlDp1ZU18cIO4ptrq5Kmsr1WeiPX5+CJ7VIGVkgBfLTRxX/f7+id3YQBo
PQBhKgBdLAhwSwBhKwBgK1qkkwBmOHqTjqSnqrGztjSBZ2+MhgBlNzWAZQBsQ6DGtQBlMzhzYgBn
OwBqQj11ZHOwnozAtQBaI5ejokWQbmqqla/QwgBoOwRlN0F3aFejk02Xftjq5SNsVluiiTyMawBj
L0yZiFukkafMvSNpU1iegwBcMmWmjzVxXiVtWFmijeLu6R5nUABcKiZ5Y16pmQBdKABcKABiLWOp
mPf6+V6omU2chl6EejhyYuHt6ABnOQBjNK3OvwBgLl+nlwBnOkV5a1ajkliklFWikXyUkHyzn16j
iV+nmFmgh4y7pwduR3KrkVmjjwBiKgVoPDlzYwRjPSduWlmhi3WQizNzYeLv6wBoPlKfjJnHuwBi
Nx1uWPz9/QtnOW+OhwBpPABpPQBpRiRpVi9wXpnGuGiql12omFmhigBpPlqijKHGtlqjjv///wAA
AKWnqgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAA8ALAAAAAA3ABMA
AAj/AB8IHEiwoMGDCA2iuaLtFboDRxJKnEiRYIZrINYgGYIn1KJRESuKHBmHVhgBFzTAc0eK2RdH
xkbKlNgrigACBLZIezPB2apScKwdQCivKEF5Mw2yEBIigo9LKGBhm0DixTM9FAaMM4hUYNcHX5MK
nKOgyJh48bz9YCdiwa947yoEkFUwLFivYgk+EQCqGRO06Zq0ihVPl6ZhbEYoO0p0YNGwjx3fFUgE
zDoAyYiJitfmjJ14fpJUgIDAhgHGB7t+VS0ZbNhPVSwAAMBAjhO08fKsENQgUgFcLlBzxUsctd0W
CiLMNsTLUgK0kIA0gkDBlBRXwut6fbw68uSBQU7JxAbQTZ0D3PGizQqAgAqhStkns9ZO3K4aL7to
fzgfbkEqtErcUsAOfMBA33fzybddcQJt4EEtx+SyTTwJLNMBNZyghUUO07DCBVdGteYaZEglOFA1
ZCBjAlp1QAOIBJ4IEw8kmBSiSl5JbQDOBagYsckg3LTTSTDi4JDGDFZkg2NSU/wRgxkYUMJDOcUc
EoAtgZRQxpJicZCFOVo8sgQ5wDTQhQon0MFlXjScc4MOPUwiwTcDuCHGmkvuYUA1fUiSQgYGBQQA
Ow==

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/scidir.rbi/;categ=developbio;acct=d51dc24a2b132512122a31f7d7dda950;sz=728x90;ptile=1;ord=686848?

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
XeteF7vZJW4QAAA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/sci_dir/reduce_font.gif

R0lGODlhEQARANU9ALbLiqK6YaK6YLfNjqe+a562WLPKhqS8ZbXLiqS8ZqS9ZrHHgLjPkZy1VJ22
WLjNjqa+a7HIgLHIganBcbTKhaG6YaC5XLDIga7Ge7nPkqnBcKzDdbDHgKK7YaS9ZbbMirDHgaK7
YK/Ge521VbPJhqzDdrjPkqW8ZrHHgavDdrTKhqW9Zaa/a6e+ap23WK/Fe6W8ZaC4XKe/a7XMirPK
hZ63WJ+4XLfOjrnPkZy1VbrQlP///4ytT////wAAAAAAACH5BAEAAD0ALAAAAAARABEAAAavwB5v
SCwahbqkcskcmjK4qFTKYGQYw5t2oH08BtzHjTsEAGYz8xmN+MwQiCHJQKMZ6AZKnaZXDRcXEhGC
HAsoEQsgEhccQxgYO5GSkzsvIkMpJZSbGxtDExqblKBDMqYsLRAQMgSmEASwQwkHJwcwHisKBwoe
swoJQwIdFRUCASHGAsIBzEM2Mc820dIxFhYxMUMONQXcNTXb4AXdLkM55+jnDSMNOe05PEJG80Q9
QQA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/sci_dir/increase_font.gif

R0lGODlhEQARANU/ALHIgLXMiqK6YbnPkpy1VKS8ZZ62WKa/a7bMiqzDdrjPkaS8ZrPKhrHHgKK6
YKC5XJ22WLbLiqW8Zqe+a6a+a5+4XKa+aqe/a6nBcbXLiqnBcLjOjp23WKK7YLnOkaW9ZbPJhrDI
gaS9Zp21Vaa/arfOjqK7YZ22Va/Ge7TKhbHHgZ21VLDIgKW9Zq7Fe7jPkq7Ge6G6YbHIgbjNjqvD
dq7GfLnPkbPKhaC4XJy1VZ63WLfNjrrQlP///4ytT////yH5BAEAAD8ALAAAAAARABEAAAauwJ9v
SCwahbykcskcDmy2p+KliNo8NsVguOvOdpueuLvploaRSACBCIh7gUAGkQkMb4yb/vZmMEA3KTdD
AA0AhyxvMioNhiFDMChvk5M1LkMJCZSbCTRDGhiblBgaQxQHFyQWFm8HExenE0MFIi0FCx9vEgW3
CxJDAiYCDgICbx0OyAIxQzgVONAPb9HPOEMGOtk6ENkcOgYQHNhDOQQn5eUjOSs56Dk+QkbyRD9B
ADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/corner_unselect_right.gif

R0lGODlhBQAcANUAAAAAAP////z8/vr6/Pn5+/X19/T09v7+//v8/vr7/fn6/Pj5+/b3+f3+//b4
9/X39v7+/v39/fz8/Pv7+/n5+ff39/b29vX19fT09PPz8/Ly8vHx8fDw8O/v7+7u7u3t7ezs7M3N
zczMzMvLy////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACQALAAAAAAFABwAAAZoQBFp
SAIJh55PaAjyGEmfTlPUqXaoHU9n1OFwrptNV7TRhEWatEaUaWdEBgMGIypc5iKL5XIRVR56IgwM
DhUiCwoJFCIECgoDIo4JAyEJCQiQCJYRIggNBxMhAgISECMhISKqRKytREEAOw==

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/sci_dir/icon_arrow_active.gif

R0lGODlhBQAJAIABAAB3A////yH5BAEAAAEALAAAAAAFAAkAAAIMRB5gp9v2YlJsJRQKADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/corner_select_right.gif

R0lGODlhBgAcALMAAAAAAP////7+/v39/fz8/PT09PDw8O/v7+np6ejo6N/f393d3f///wAAAAAA
AAAAACH5BAEAAAwALAAAAAAGABwAAAQisJzFaggiVXEDYh2mhIFBEmSqrivHqu4rx90gpzR2h/kV
AQA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/corner_unselect_left.gif

R0lGODlhBQAcALMAAAAAAP///+3t7ezs7Ovr683NzczMzMvLy////wAAAAAAAAAAAAAAAAAAAAAA
AAAAACH5BAEAAAgALAAAAAAFABwAAAQm0MhTkBmDIDvEtt5XfcZnmYc5bilplu7XbjD93iKKs+qO
zKbgJwIAOw==

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/corner_select_left.gif

R0lGODlhBQAcALMAAAAAAP////39/fz8/PPz8/Hx8enp6eTk5OHh4f///wAAAAAAAAAAAAAAAAAA
AAAAACH5BAEAAAkALAAAAAAFABwAAAQZkIQZ0hEzJYR1MpU3eElBnmiqrmzrvnAbAQA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/icon_pdf.gif

R0lGODlhEwATANU/AOvY2Y2Mkf8vNN7d3EA/P9XV1OWQlfkEBu3u7K2truvr8ebm5eVZWt7e4MC9
yeZ+e4oCBB4eHr+9xcvNzL29vP9ESeqqqtlRTv0WGP95ef/+/v5oZXR1d+Li4cbFxeZJR8TFyOLi
5Pn2+fb2+O/u8Kenq7a2tqysqubn6Obn4tuChvf5+O///+7j6eG5u6cDBN/u8dbU2dfV1dHLz/1T
VuJwctNlaL2/xvX794CAf+Lk49waIeQABN47PP4NEP///yH5BAEAAD8ALAAAAAATABMAAAbMwJ9w
SCwaj8hiIcE8MZmdJAUkuUlMpUDjNChmNrSKWEDe5TSNUoOYIft8hzjvxdGgE6jhRoDBwOUQARwc
OQEFQzsQiouLCxMeFJBGDgUzEw0XDQMyMSAyJpMNMg0jFzoIKQMTIQlGNyEDCAA9BiIKKAULrUUO
Cx0rDwoGFiMLAym7RBIkCgAfFhYfHwwqJCeTCCQMLgAkLDAuNrquLQy1CAsLmpfXvDU1CCEhDQX1
FEtGFBo4COgdA/U8FGhHhAKBCAgTJiQAKolDIUEAADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/sci_dir/emailarticle_a.gif

R0lGODlhEwATAOZ6AOnp5/z9+p6za5uxZuXt2JyrPbrHgb3Jh7fFlZmpN5SsWpenM5GnQ6+9aLvI
h42nT7jGg9LdsKK2aKe1VZanNJWnN5GnQp6yXqO3aZKoRcDMpMHMpb3JnpyyaOjp5ZqwZJesTpCp
VaG1Zqu5X5muVtHdsMTPqp+uRLPAcbfEeY+oUqOyTJOsWaC1bpy3VbXGeY6tPmmVBuXu2JGqVrHA
c6C1b6++cZWnOKG1cJuxZ6PDdrTDfr3TnpKrWOrw28zapo+pU7HJgK3Jh9Ldr9XiudPivuHr09vn
x/f69eTt1MHTmPH16bXPlN/oy5+0bKjBatHest3oytDesp2tRoKnMp6uRHqgHbzJh9Ddr8DMo9Pf
srbEgKvIhMHNpdfiuefv25euX+nq6PP37dXgtqTBb+Ts1LbMic7ft77LoZWnNm2YCuHr0MLUl5++
bH2gIMLNp+nw3cHXpebv2tHesebu1rfFgc/espenMr/Li////+vr6wAAAAAAAAAAAAAAAAAAACH5
BAEAAHoALAAAAAATABMAAAf/gHqCgxwfCg8sHxyDjIIAGiESEA54VxAiIRoAjXoDGBB4oaEHBjQX
AowAAhKioqQpKA0kA5t6GxitowawDSMTIBuCHXVCTEh5AcnJeUswblNgel2sRjxcYnnZ2XRWLj8F
GWhOW3hfeXE6cNp2ak95Ywk3NQqUBNlnbVF5SjFs2RF3KBwKZS/bETJmqBDRBvDOA3p4CmZLEsSH
tjwAKbDAseOAxIsXh9xJk+ONCANyQKrUcodBFj0tbBSRsaZMEylQ5pQogcXLiwodBCG40GvCihMF
EtxZytQCAkcCSBhFqpTpUgYDwjASAKJKUqt3FlgYwMkDAhUZKixYQKECAxUIDjxwGmRCwAwgPQaY
4BQIADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/sci_dir/quicklink_a.gif

R0lGODlhEwATAOZ/AKC1b6e1Va+9aLrHgenp55yrPZuxZp6za7fFlZSsWqu5X7PAcaOyTLfEeZWn
N/7/+pGnQ42nT5anNLvIh6K2aL3Jh5+uRJ6yXpmuVsTPqr3JnpenM+jp5cHMpcrWlL7OWZOsWaG1
ZpKoRczYmJyyaJqwZMDMpKO3aY+oUrjGg5mpN5esTv3/85CpVbzJh7vJb8HNpbnJV9vonfH/oNfl
hae2TK++VJOjLqOxV+v3t5WnOMbThJGqVrHAc8HRXOv7hrfFcMXVYLTCbZ6uRPX/xLHAWqGxPLLA
Zqa1R+7+iam5ROj3jaq3aNnoftLgi6e9WJKrWK++cb7LobO/f6G1cLLAYNHfhbfGYJ+0bPH/mNXi
l7TDfvf/0fD8uvb/v8DMo32MJpOhQfj/1/z/7srXiOfzs+37m8LNp9npd4ubKcLSYNfmgNHemJys
OvD+pJ2tRvr/4/v/5un5hJeuX9nlo9rmpv7/+ZuxZ8fUhcbWYbbEgLfFgZenMr/Li////+vr6yH5
BAEAAH8ALAAAAAATABMAAAf/gH+CgxolCREgJRqDjIIEJi0UKRN9LikhLSYEjX8GJw91faJ9FQM9
FweMBAcUYn5jfSNcdAMNCwIYBpt/HSexfn45fV1+LLcKASsdgiR7omXAHgMsfkTIDG9zfzAUo1Nw
fg8NeMA0DBYFIlJYeqJ+fR7AZAJWwDYFKjoACZR91QNadgDBEWCGHy9p+Eg4NOqBHxlMhLwIA6YG
MCV8+ETgR4oNMAFHqhRpUgCNnyAKQVDZUqoBMDcBrgBTw8fPBz4O7pwJUWuBE2BrLGQBdoOPET4Q
vvwBEOWYGWBI2gD7kdEBCUEILgi4tsSPHT55gPlAisDRAQwBzhWIIedmEmAQKXQxOrBiCL6MeOM8
McCJAwIUIhxs2CDBAQQUCDhwGpThAA8UUAxk4BQIADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/gw_ol_2co.gif

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
AeK078QXb/zxHwUEADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/gw_ol_rts.gif

R0lGODlhggATAMQAAP///wgICAAAfDQwgQmf3MrMyv3Ri9GNC4rR/p2WzvzqugByurjq/4gPDzMz
M6wOinJyubByAHKbq+r/////0dL//+q6cv//63K66nIAm9DN3j1ahrpycnIAAHIAcpsAciH5BAAA
AAAALAAAAACCABMAAAX/ICCOWmImxaiubOu+cCzPdO0WJ2rvfO//NNwpBSwaj8cCESA0LZHQqHSV
GGw0o6Zuyu0CNYMwNpt7jjqBgIDRg8wgkx7D4WCf6XR7zc1y3DZhA2NkQyxwAAYLcV49fgCOInwi
DotAkCpggYIsWoORcQpwFmkEkRECABIRAQirCABuB2mvALKskQCjARgiEg0Bpba0k8Qjko8TuqWP
c3XMfm5+dI/TwgBVmp6EJiuHiaFxFrweduQGawalEAavFw8V7ADuFbAAGRUUHyL3FA/x8yqmqYCA
pw64XLwESnMUzZE0RO3eYQukTcTEASvQqGGgixSsRW5CARAJgcKvZSaBwhkDsOzApwscUi4TMaem
ig7FOqqE9BAXz0cAZI64WPFigm6VxCHFJZKkiJR2oNZr+ZLD0192eELiMwfhip9bgRKDJPUaRSqa
ji4VoeBeLV6H6jV1s24Zu3Qi4rnhp+8jTLwQi4nFNYlBW3oHEjocHG3EQ8DxRADaNDRti7gilH1i
GpJuLY+fVdbTRQsOzNAzm9UJ6zgX6NXOwoL1Y2um5A0qjDLa3YiRbt7Aa1yS8ju48eO5LSNfbryA
cubQo0uf/iMEADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://ad.doubleclick.net/ad/scidir.rbi/;categ=developbio;acct=d51dc24a2b132512122a31f7d7dda950;sz=336x280;ptile=1;ord=686848?

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
5mve5m/u5nEO53NO53Uu53du53mO53rO53ve53/u54Eu6IMO6IVu6ISO6Il+6Iuu6I3u6Iz+6JAu
6ZFO6ZVu6ZeO6Zmu6Zs+6Zzu6Z8O6qEu6p0+6qVu6qeO6qlO6qq+6q3O6q8O67Eu664+63EeCAAh
+QQFyABIACwDABoATAHhAAAH/4BIgoOEhYaHiImKi4yNjo+QkZKTlJWWj0CXmpucnZ6foKGio6Sl
pqeoqaqrrK2ur7CxsrO0tba3uLmpMLq9vr/AwcLDxMXGx8jJysvMzc7P0NHJItLV1tfY2drb3N3e
3+Dh4uPk5eaG1NY45+ztyLzu0grx9PXE6fb5+vv8/f7/AAMKHLgIH8GDzGIgXMiwocOHECPCMiix
osWLGDNq9NZho8ePIA3dsEYxpMmTKFMi6aiypcuXkUZOQySzUk1NN2EWY4CLpc5rOUEpROQAV0ld
QX8K9Km0Kbmk/KA6nUpL6j+mIgfVtIpkq9ZHXKmGiiC2rL2hZs8dPbY27amwk//gtira1hPWV3Ld
6t17KO9ev9K8ChLc9etgw4Wr8gVJOHGhpICx3W0UmVHjytYIa0bcOGbfz6vQCoO8WBRmX6K9dc63
+bBrx0Erk84KOtnpRaRzjrxtj7enGy4w+mYUXNHsssMlJb+1vCza1IagI5EunVF1QkOvRx+kffqk
7s+5H6I+/lF4YUc6pS/NPhr57freF5KP3Xz7+/jz699vK8AA/qd0B6B1iwiYkYGSaIdgQAqWB593
gixIYITiOXJeJAvSV2CF83Eo34X1UfighIMEsIyGIjZC4oC/mGiJi8GA5yGHiIC4YYoTQqgijaVc
+CGPKdqIo4OlwCjIBJcgyYr/jCwuYyQS/xny5IlA6uhjiFhmWCWGFhJpCU85ZnmjjjUSuaJ7Mz4o
5pZNCkMCOCiSaZ8kxQXoZShMyjnimFiaoqQjU6oipJ4dtmnooasUUCKijDZaTJ2ORirppJRWauml
mGaq6aacdurpp6CGKuqopJZq6qmopqrqqqy26uqrsMYq66y01mrrrbjmquuuvPbqq6QfACAsAAbU
MoECCChQASwxTGCAsANEkIIkDhSggAIclHJsstwi660JLw0wrLCfmCDuspE8Kyy6rZg7rrDTRjLu
B6Wo++64Z0bEwb3gchJDAMNmC8m4f4YG8L2SiDBuXZvci7BL4r4r8CYKBwxJ/woLuxLBuBFMUECx
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
Cj7AAT/69Bep9nb/9mz/9ll/gj/dCA75pQxPCDNvmRip90Ct//aTYAKuups9AKammgAPULB0v5N3
P/Pm0PeVcPaYzwz/WQzmfsqdvr+Oqxcq3xR63+7+WX0WKZbIkJuq//qwH/uyP/u0X/u2f/u4n/v+
YIbMaIqvwPvh4PvLYJfEX/zGf/zIn/zKv/zM3/zO//zQH/3SP/3UX/3WD/zXIJosOI2ayP2UoP23
AP6aIJrYnxZF2YWTUP6VoP6zwP6PYJeL6P1iAY6McP6/L//NIP7d15gmIYnXX5SAoCM4qINEKGh4
qIi42Oj4CBkpGYmUOFl4mam52Vjp+QkaKjpKWmp6atozqCrIqqP62bq66EroWjsrK9vDm/vqeyt6
SwtM68kqqv/7qzysiMtcDM18nItqfY2drb2N+tvsTY3bU+ndO14pXoikOvzNXuz5S1r+vgscKy68
vM8OWk/PL6CtQ+fWqUM3Cxa3hQwbOtR2yRKniZDIVUzmyFI8TRglbcREUSLFkRkfmjy5TaGhdywN
OkvoTeC9TwqHgXrV62ZBnQRfGdRpsN0qUv3iqcRHjiW4oyvNHQRYsF9RlFSrWi016CPJrZS0brrZ
SeTFjojEKrLYFe3Wq2zbXp3KNJw/n3GNPv22y6kyaOPejXpG1ydNdbdyCsYq9eBcWfPSIRxo124r
t5QrNzy8UnFkpD//7psMGFatdOdY+fX88rOvZZkxz1tWV3D/3dY9s0q2nZTXbMu8e4c6OpXnYIQ7
8dWWR424Oc5BXf/WHHhnwJrIUcMs/hjcc+lRj082mlSz7/HjXcMlXH36rOyMO98ONniXNdXUbcol
jrhY96Ixp8XXT81A9shHXoGUmRcTado1dxpw6xn3HYIDBTdXOvZQ6BhRCV6XYDj9IWhXS+zRF5OB
JrYVG4XEVccghEOttJhMtoQnYiggGocdZs7ZeNqK5yB4HlAhHvbPdzSKd2KSSl6zm0MfqrhkkixG
SWWVKfHCFpb+YGdlgbp1CWaYqexoUnBTiulbk2iuGeWXb+kGJ5dsVqblnHbeeVKJeO7JZ59+/glo
oIIOSmih/4Yeimiiii7KaKOOPgpppJJOSmmlll6Kaabk1alpNpyWKeeVoXaa5qelmHopqg1pqSqT
rZLam5uovDoprVeiM+qstsJK2a7H5Pqbr+PJqo2w1rhprDDJ8lrVsp46SyewREE7rbTHWisolsgS
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

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/bullet_square.gif

R0lGODlhAwAEAIAAAGZmZgAAACH5BAAAAAAALAAAAAADAAQAAAIDhI9WADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/btn_xclose.gif

R0lGODlhDQANAOYAAMXExc/Pz/Hx8cTExMTFxcrJydXV1uPk47OzsxAQEOvr6g4ODtzd3N3c3fz7
+9XW1fb397y7u8nJyaqrqri5ufz7/MXExM/P0PHx8MjIx3Nzc2xrax8fH2NjY+rq6oaGhlNTU9zd
3eTj5MHBweTk5OTk48bGxa+vr0dHRysrK3JycmBgYNXV1dTU1Pf29sTFxE5OTjs7O8nJyvf39/z8
+2RkZNra2urq64CBgdHQ0SwsLKGioeTj4yEhIff39vv8++vq69zc3LCwsOPk5FBRUBwcHOrr6nl5
eiAgIMnKycXFxGFhYf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5
BAAAAAAALAAAAAANAA0AAAeGgE2Cg4SETIeIiUyCFR9NFDQOPw41TTaCPiw9CSYzLhpNHRCCAgIj
CUg5OE0rGAKCHkYKEU0cTTA3QAqCQwc8IkeCLQckJYJBIQxCTTpNMQ0MDYIPBhMLKRkqTSgGD4IB
CEULCAEBS00gF4ISG007BTIFSURNJ4IEAxYASi8DAPgACgkcFAgAOw==

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/jrn_nsub.gif

R0lGODlhDAAOANUAANTY29DQzvP18s7OzjAyMf/5/dfZzKSjoXZ7d9HR0+zt75aWljAwMGVpZDg5
OD0+PUNFQ5WVlZaWmHB2b3V6dFdbV+zs7l5iXl5iXbu6uFFTUM3NzVFUUHV7dDQ0M5+goZWWl1hb
V2pwarOzs0lMSZaWlzMzM2twanB1b+3t70pLSd7e3ubm6KChoPz9/4SEhYyMjMzMzuTj6aSkpDEx
MdbYzfP19P7/9Xd8eNfX1/3//gAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAAMAA4AAAZwQAZh
SCsaaQxPYXlrOm8mx2C6iVmvjkdg++p2E4kHBEDOmc85CGm1grnfbJWGRWfJ7nhORaEAlSQRCwsW
KSEXAog2ios2GA0uLh8tk5M6Og0ikC6WnJYnKAahNaOkNRMdCKk4q6w4FBkHsTOztDMjQQA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/bulletTriang.gif

R0lGODlhBAAJAIABAGZmZv///yH5BAEAAAEALAAAAAAEAAkAAAIKRG6YwMHfmjvzFAA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/btn_arrow_up_off.gif

R0lGODlhJQAGAOYAAPX19fT09Onp6fb29vn5+fr6+uvr6+bm5ujo6Ofn5/j4+Pv7+ubm5efm5+no
6O3s7ezr7Pn4+Pn5+urq6vb39vLy8u3t7fPz8+7u7ufn5uzr6+fn6Obn5/n6+ubn5vv6++nq6fHx
8fDw8PX09PPy8+zs7O3t7Ozs7evq6+Xm5vP09Pf3+Pb19eXm5e3u7erp6ujn6Pn6+eXl5ejo6fb3
9/Dv8Pr6+fLz8vTz8+rq6+zs6/r7+unp6ufm5u/v7ufo5+bl5fv7+/f39////wAAALe3twAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwA
AAAAJQAGAAAHh4BFgoOEhYaHiIJBHwsFEgQKQkIDAwAjFyQVIURDPhgWJhAGEyACDjA/DQcHDIpB
jTEEEZIUlQEBFxVEu0MYLiclBgY8pggJGR4MMooLOxIFspEULAABKje8vBYPOgYoEwIzGwmqDC2u
BTYdkCtCNLY4vCI1vA8QGjkvAgjGHD0pQBIJHIgoEAA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/icon_doi.gif

R0lGODlhiAAOAMQfAAAA/////1RUVENDQ1tbW93d3YSEhMzMzO/v74yMjC0tLZWVlXNzc9PT009P
T7i4uHx8fO3t7ff39+jo6Pn5+fz8/Dc3N6ioqKWlpa2trWxsbLOzs52dnefn58XFxQAAACH5BAEA
AB8ALAAAAACIAA4AAAX/4CciyzAQg3MEYuu+cCzPdG3feB4fFnE1hQZnYJnojsikcnkrKBKRjieT
aVASCglzy+16W4TEoSAolzMBiCYGaLsAIrhX/p7RX/dPPo5s+/FufBgDHgUFEAkPDGUICAMFeC17
e0uUdjJ5ln11fJ1wAwYNERQVFAEXAgQHCAwYnJJ8f3GBgHJwmTC2enS8r56Bt7tvwb56xnVwFhcF
EQEBFA9lCRMIBgnFsMfauLGTubOendmwvbe6x7TisZFwChcdzgEGAhocBQiHBtjh4tzGlN62rYuE
jF22XsWIkftAwEAzZ/MWVJAw4QCBB/vQSfLjTyG2c+jSqQupCyHCcQMXgT4Y8DBAgwcHJODbYIHg
wX6XUn7EqTGhQZMoten8J4IAg3gEBBiYUODAAAjfeJ7sKDRoz54BrwYDKszX1E4VFECQIGEDAwMH
NqTAlM4WL5GzQA7jqJXn3LtE+3ncJWvjyQkEGi7AsECDAgIVvihenEMTkgUOHDBIcYCx5ctzHeMI
AQA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/science/page/static/science/ppvimp2.gif

R0lGODlhtAB1APcAAIy1atzd3fSvsdHU1fDy8+Lm2tze36RpacrLzPf4+KLJR6w0Nuvu8N7f4NXY
2sPfZfJucevs7OTm6O/w8PLz8/X295G4Ounr7M7R0pvDUOLm6Lq6u/b3+PVMUt3j0/P09M7kh93i
5erq6u7x8u7u7o+rVIu0cvj5+fT09Nrc3YmnSf2Xl3ioXrnJmLzLoPr6+9rjy9arrOjo6fP46NeL
jKmqqpCsVOru8Pv8/HaiXNvqp520auXm5pzBKdTdx+ns7vj5+vno6Iu0Q9V2d8DOpJi6htBQU6bE
lQUFBXObWrjVd+Dh4s8KDfb48ejyx+Po6nilW/j4+vb29vHy8urr66bNPMrUtuHj463Aherz04iI
iOPk5Obq7O7v8ISuS+Li48vZxvrU1dnb3Ojq6unu4JvCb9fZ2rCwsHqlVe3a2ug0NaS6dqzTNOnL
y+js7ezu78vO0Ki8f9TX2N/k5+jo6rLFjMjSs+rt7/T19t7j5t/g4MXRrLjIsuLn6fP09ufq49jF
xdrf4p2/ieeHia3UK+Pk5e3t7eTk5n6qU5C2e5C5Yebo6aHILKq/gLXFlH6kaLnJluzv8bWWlvHB
wvv7+74fIejr7Pj59Oq+v4OxVMXdipmZma/HpMXUwOfq68TCwunw8OHk3ubp6tfd4Pj088fJyvv8
+Xd3d8/Zu8zXuPv+/qi+eefr7GZmZuDg4trf0tvh5OPszu/y85+3bPHz9OLl55awX+Xo6ezu6OTm
4cYsMIGvZPHx8ff9/bjPrfz9/vNdYZa+Wvc/RIKpSXyjT+Tp6+Lk5VVVVfP39+Xm5XafV/P188vY
sPr7+bjZR/D23ujv7+Dm5/39/ebm5+Xl5URERObm5vz9/fz8/OTk5efn6DMzMyIiIvz8/eTk5O3w
8YelSebn54mnSqG3c+Tl5v7//+rt5+Lvt/D06PDz9MXPsfn6+pG+SNvk5Onp6e729sKenrnTk4mw
QJi/ZfX39fLm5u6en8DSuff49ffx8fqAgfT6+tbW1v3+/v////7+/iH5BAAAAAAALAAAAAC0AHUA
AAj/APkJHEiwoMGDCBMqXMiwocOHECNKVHjHjcU7d24w2BipY0eOG0My8EiypMmTHkdGEhnyJEiW
LFfCnEmzZsgbGnHq3Kizp02YPYMGzTj0xh1WXJ4IxJjR44hvUKGOeDo1KtWpWLNq3cq1q9SvUcGG
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

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/entities/REcor.gif

R0lGODlhDwAOAKL/AP//////AP8AAGYAAAAAmQAAZgAAAAAAACH/C0FET0JFOklSMS4wAt7tACH5
BAAAAAAALAAAAAAPAA4AAAM0CLqsZuDJKYd4rb0LswMBBBVAQRTkE0SsZ6zdWJ4RFH6ZjbGkmU44
DSbmIrY0C6MHR2nuEgA7

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/entities/REemail.gif

R0lGODlhDQAKAKL/AP//////AMzMzGZmZgAAAAAAAAAAAAAAACH/C0FET0JFOklSMS4wAt7tACH5
BAAAAAAALAAAAAANAAoAAAMjOLrMFADKSFR4IuT8FNUgZnEh6F3oIw4oSSoYuF2jbDf4kgAAOw==

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/tree.gif

R0lGODlhLgAzAIcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O
Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh
ISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0
NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdH
R0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpa
WltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1t
bW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CA
gIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOT
k5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaam
pqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5
ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zM
zM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f
3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy
8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH5BAAAAP8ALAAAAAAuADMA
AAj/AAMIHEiwoMGDCBMK/MewocOHECNKlLhwosWLGP9VzMix40aH8xpes2ULWTmTyGxdQ8bSFMuT
yEbamndtXrlrED/axITppC1TaIwEqoMGTZZAQ+swGsqIKCNkdbKYMoWpTp1rOBt+tBUoCxpTdQIx
QhMVzVixRrIYQQY0kBFGmJqiGRooaCBbDjfOqwoXU1GlRusYQYPJVtM6P7PYqoPJ1NCiYo0GMpU3
QMNyMP2SNWUrKKOlT+WGVTp2bmDBWfzi1WqZ4TVMdBErJRrW6FKrZj+LrYubKGGgyEIy/Hg2cJal
jSFrrh23axaiWZ4X9atYuMbWDFOOHSz18dGjsMUy/+ZZFHJ5smSDs37INajRwFXpIjvqVmlq2GGb
HjdMuNx616Y0VRcjpniFlFmRSeaXYIEsaNVYAtZB2X//zFPgUi0QJmBpvuFWFFVKHWjVUMd9ZZ1e
jXWVFmFzFWiVEXEV9txiSDWIGlxCeZXVdSDFRZZVx0FnRFp8MTLYkO6NNaNbagWCDIUMzYNMV0MJ
JRZ9hGHiVQstMAaWWOTdldpQ/g2HXZRTwYUUgXDBxRZ5ZPFEFVcSFvbTSqaceOY/plhJml8E+hVI
OYVB5xiBtjw36I41VfYQJkiigQx10QVohIWMNPlWndtZF9FH10yVRUwkZTpWbeVwlah+PUVlqkUf
Of9mCyZSYrLSXHQmOB1Qg0UFFhqwnmnLW7OyGapQWs4V3VctfMblV+UYUUewIAGl6jWEZspYV4FB
JVV0RAXYQhaePvTRP9dEh4lDkDpJ0rB1RGvKSfNkakQL95b56ZkFrvVQOYzo+8+U3AY8n4pc7pjT
mU7GixFUQLoUbVX3tvAkRdjVi225EiU6LmLzGPaxEQqbu2dH/9w05FBPMpLhsCU7elE5YK2Gbkrz
wJhSTVUaFTOUEQ2L74ToWvVPfwzRzBOXApt8ERpc+ivSoLaMu9JIATM90bnsqZXWkzSN1KApXKob
VznP5glVT0BXWzZLjCxWB1tUQRoAvkOZcneG3Ab/siPXNE3qcoZR1/uUUzDe62wWLezNJWM26+Sj
V1p6da+EfUHNeFFcBmDEsAYZkaeZDs1XlFdenZ66Uah7hduyrEcnOyMyo2z71iffrjuPDHFTxiWb
BIKNGMsw1A4kldiyixqbZDLJI4jYg04gw4RRzSpvbILJKbGMQUof0tT+Dwz9/DPNPy34w1AX0PBz
ijtAMEQNNEP8c88n6P9jzRXyf/PCP8rogfhkUD5s/CMGDelEFOhxj3fEzx7e8IcNygELdRwQXfx7
xznAAQPzGWGAmrCEJS7IkH684QTceMcJNpGHZ/wDEozoBEMQeI0abEIO3QBHChaBhW4MsHztIOE/
iezxj0QcgRzx8wc7/pEOG6yGhvzbRzw42A4VgEN8MOCH/Z7hguxIoh/8GMI3fsAQZ4TPCfpgSBet
YQWGLKMb/8uFEMpHut5pgRIsNIYVKpEJK8SiEo4Axi68sAlNeEEe/9gEQ5phhWqkggyFVMQrrACN
fxwiFm3b3e24pknbcbKTHlGIKEdJyoAAADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/sci_dir/arrow_small_a.gif

R0lGODlhDgAOAPegAK3Hfp6pmK7KibDLi7PNkPL27IKiI6asp6msrPL2663Jh4SkJYWlJpq3U6/K
iYWiXqzIhIeoYIeoYoGnM4OiIa/JhXyhIt7pzXifG63Hf4aqW4SpWqa9Y7LMjf39+3yeGn+fGazF
eH2eF6/Kip2+c63JhuPr0uHr0ZW1UYGkKKisqqO/acTYqYOkJqG+bKesqJKmfZqoke/05n2gSIyu
P5anh+/z45SnhK3Ger7UoK3FdbDLjP7+/KvIha3HfJ2plqrHgn+kJZuokarGfa7IfoGnLq3KiZay
Sujv2XuhJ5m7b6CpmpWnh52+a7TKgcvaqZOmgoWiYXqeG4ymcpSmg5m2UoGhT6/Lip2plYOiXqnH
g6jGgoOnL93ozdvmxJyplbTOkK/Jg4msX4OlKH+iUH6hSqvCb32gS4anYYymcaWrpIapXXqdFLHM
inieOH2iIN7oy+Ps0bHKhdnkwIGiIKzIhavHgXyhUJm0S7HKh3ufJHyiJ3qhOLTNjnqeF4inZYGh
TrPJfomrXoOlKpCxSO3x3/L26a7HfnijM4CnMZqoj/z9+oGhIKisq4WiYoenY5W5aq7IgZK0UazJ
huDpzH+hT5WxR67IhOzy34WlYomnaZqojoywR4OpMs7dr////6utsAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAKAALAAAAAAOAA4A
AAjPAEEJfAFF0xoNf2CoEcjwRwQSRtrIIeJCUAyGAcQMIDDgEgAcgRrwEQIKwSMBHQRAyHPCE40g
Y2Yc2KSEgAIFdjLE4aEDQ4s9N6Zo2THCQYVDIbwsMvPBwAMJdVgUKJAggQxMnzxwEAEIzaQcXS7A
ofRkzqdCeEBYSbPlCpAhAFYQQmLDEhs6URRBAlMijA8UJgwd8UNBDxMEmXr0iSSpk5MqUhYwKtMI
1JINTTglKmLhDQMDbrBgvINoApdBKZKc+cJQoIoajshUykLlAMOAADs=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.sciencedirect.com/scidirimg/sci_dir/btn_go1.gif

R0lGODlhKAATAPcEAAoKClJTVVmklDM0NZejooaIinx9f2doanFzdSkpKh4fHxQUFQBkMV1eXwBj
L5CSlQBlNV+pmj0+PwBiLQBlN/r8+wBnOVmjj0hJSlCcgwBeOABlMwBkM0d6bE6ejautsFymllB+
cpXDtVmjkl6omQBmNl2hhV2hhwBeNYaZlW+Mhm+OhzhzY12kjjhyYmGggl2ji06chgBdKwBeKaWq
rFqkkny3qgBlQHqTjlmkk42+rix/VgBkLkeUeABuR1qklSduWl+lkFmijmuLgzGAbFOhkFiklABn
PlSfiABfLQBpRlKgkE2XfgBlOCNsVkt7b0yZiCNpUwBkNlCejQNeQl2nl8rg11Ofjk6dilCXegNu
SYCznTVxXmaHf1WeiHyUkIeZlmGFfD6ObQBnNrrZ03iQi1Cchl+qmminjh1uWABhMS+Aa05+clCe
ilmfhk6XelmBdieGaVahjEmTcpjGvWekiFWehSt6ZQBaJhtlToC0nk6bg5XEuXWQi2Wihp/Iuhp5
T1ekkwBiMABqQgBjMQBiNwBjMFehjDRxXwBjNjSBZ1umlqSnqiVtWABmNwBcMgBpPE19cF2DeT+N
egBfMABlMgBcNABcNzhzYjlzYwBmM9/t6oCWknewm+fx7rbWzl2lklJ/c1iij1mjk6DIuV6pmRV3
UgBsQzx1Y06biTuKd1OcgwdsQVSgjYCym1KejQBbKHSPirbUx4CVkkSUeU2aiCV0X7bVy/z9/UqY
fwBqP1mjkR5nUANjPO718hl4UkuYh7bX0K3QwwBgK1ujjoGVkjWAZQBgMLGztqmrrlGdh16EegBk
MgBiK5CdnABgQWOgg7bWzC9wXgBmOwBnOxB1UAtsQVeikiRpVqmsr5XEtrjWzEyWdwBbNdjo4kyd
hlmijTp1ZQBqQQBcKVmhiz11ZEV5a1qjjo++rVadgwBiKo3AtQBhLD92ZzNzYSd3YiZ5Y0mVdwBf
KqqrrkF3aFullmmJgQBiLFuiiVqijF6jiQBhMABhKwAAAP///6WnqiH5BAEAAAQALAAAAAAoABMA
AAj/AAkIHEiwoEGDZSK5ayStg4qDECMexAFkDbBWh7wwUeRkiMSPB+HAuxYBRI1z+fDpM2HMHMiX
BJYROVNPQI4LyjK4OcENUK8OEAsYgJniXYQfAgSMkCPiT7p4rKSM0bCiIAYA/bJiABnuyqKkAkQR
8+RPmDUKFkps4EVQAoAGBQoE6BdAorM7EcCOuoBERwV/eihRgFAJxReBCPodaKtgYIMBCAjam0Ri
iQcPWGLsodXJl78tMjgw2BdC4FyIBvoBGNBvwUB6qQKtIxPsU7Rb20hZ8efPlSAHE1AJTNDYdIDj
BAYAQNyvgUAWrwRs4k29ur8KO2aw4yJQQr+BCYh/8V89kDyBdlCM2KDDR5sIEejeyOL9Qt4EfuUE
Hug3dGBqAuYBWBcBXahCQhFTtGFGBnb8kgUu/kCDhwP3JBGKQA8AAEABGLKW3HcEJLYYAc7YUopS
QpADQw9o8OYHLAw4oM4jswxUAFYLLKBaXQUsAEAC/RQnkAu1VLELOC2sYoo3/tQxzgYMTDBMFAYZ
cNwBDxCEQAAjDgRGGiCAEkQu1UwjxhzHQMCBIc100wdMEoXxzjdxaDGIOImo4QgEzPBgCRtwfiQJ
FUr4cIoukKSlCSGXRBIoSJxg88wNR1DTRCEa5BHLozAVE0ImiGDyBA4GBQQAOw==

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/static/stylesheets/css_art_v01.css

.articleHeaderInner A {
	COLOR: #0000ff
}
A.articleHeaderInner:hover {
	TEXT-DECORATION: underline
}
P {
	LINE-HEIGHT: 150%
}
.articleTitle {
	DISPLAY: inline; FONT-WEIGHT: bold; FONT-SIZE: 150%; FONT-FAMILY: =
Arial, Helvetica, sans-serif
}
.articleText {
	DISPLAY: inline; LINE-HEIGHT: 150%
}
.graphText {
	DISPLAY: inline; LINE-HEIGHT: 150%
}
.graphTextOnly {
	DISPLAY: inline; LINE-HEIGHT: 150%
}
.refText {
	DISPLAY: inline; LINE-HEIGHT: 150%
}
.articleToc {
	LINE-HEIGHT: 150%
}
* {
	box-sizing: border-box; -moz-box-sizing: border-box
}
.infobubble-container {
	Z-INDEX: 10; POSITION: relative
}
.infobubble {
	BORDER-RIGHT: 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: 1px solid; =
DISPLAY: none; PADDING-LEFT: 10px; Z-INDEX: 2; LEFT: -300px; =
PADDING-BOTTOM: 10px; BORDER-LEFT: 1px solid; WIDTH: 290px; TEXT-INDENT: =
-1px; PADDING-TOP: 8px; BORDER-BOTTOM: 1px solid; POSITION: absolute; =
TOP: 0px; BACKGROUND-COLOR: #efefef
}
.mlktScroll {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; =
OVERFLOW: auto; BORDER-LEFT: #cccccc 1px solid; WIDTH: 270px; =
BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 100px; BACKGROUND-COLOR: =
#ffffff
}
.mlktLink {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 5px; BACKGROUND-COLOR: #f6f6f6
}
.mlktEmpty {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: =
#f6f6f6
}
.outerPage {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 5px
}
.articlePage {
	BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#999999 1px solid; PADDING-LEFT: 5px; MIN-HEIGHT: 975px; PADDING-BOTTOM: =
5px; BORDER-LEFT: #999999 1px solid; WIDTH: 100%; PADDING-TOP: 5px; =
BORDER-BOTTOM: #999999 1px solid; BACKGROUND-REPEAT: repeat-x; =
BACKGROUND-COLOR: #f6f6f6
}
.articleHeaderInner {
	BORDER-RIGHT: 5px; PADDING-RIGHT: 5px; BORDER-TOP: 5px; PADDING-LEFT: =
5px; PADDING-BOTTOM: 5px; BORDER-LEFT: 5px; MARGIN-RIGHT: 350px; =
PADDING-TOP: 5px; BORDER-BOTTOM: 5px; BACKGROUND-COLOR: #ffffff
}
.FATTABInner {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: =
0.9em; FLOAT: right; WIDTH: 350px; HEIGHT: 100%; BACKGROUND-COLOR: =
#f6f6f6
}
.refersTable {
	FONT-SIZE: 1em; LINE-HEIGHT: 16px; FONT-FAMILY: arial, helvetica, =
sans-serif; BACKGROUND-COLOR: #ffffff
}
.refersLeftColumn {
	PADDING-LEFT: 5px; FONT-WEIGHT: bold; VERTICAL-ALIGN: top; WIDTH: 55px; =
TEXT-ALIGN: right
}
.refersDivider {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; WIDTH: 100%; PADDING-TOP: 0px; HEIGHT: 10px; BACKGROUND-COLOR: =
#ffffff
}
.refPreview {
	PADDING-RIGHT: 8px; DISPLAY: none; PADDING-LEFT: 8px; Z-INDEX: 5; =
PADDING-BOTTOM: 8px; WIDTH: 300px; PADDING-TOP: 8px; BACKGROUND-COLOR: =
#eeeeee
}
.greyTable {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: =
#cccccc 1px solid; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; PADDING-BOTTOM: =
0px; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: =
#cccccc 0px; BACKGROUND-COLOR: #f6f6f6
}
.greyHeader {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 7px; =
PADDING-TOP: 7px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-REPEAT: =
repeat-x
}
.tabSelectedOuter {
	FLOAT: left; HEIGHT: 28px
}
.tabUnselectedOuter {
	FLOAT: left; HEIGHT: 25px
}
.tabSelectedInner {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 1.5em; FLOAT: left; =
COLOR: #000000; PADDING-TOP: 5px; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif; POSITION: relative; HEIGHT: 28px; =
BACKGROUND-COLOR: #ffffff
}
.tabUnselectedInner {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 1em; FLOAT: left; =
COLOR: #000000; PADDING-TOP: 5px; BORDER-BOTTOM: #cccccc 1px solid; =
FONT-FAMILY: arial,verdana,helvetica,sans-serif; POSITION: relative; =
HEIGHT: 25px
}
.tabUnselectedOuter:hover {
	CURSOR: pointer
}
.tabUnselectedInner:hover {
	CURSOR: pointer
}
.disabledTabLink {
	COLOR: #bcbcbc
}
.bottomArticle {
	POSITION: relative; BACKGROUND-COLOR: #ffffff
}
.footerArticle {
	BACKGROUND-COLOR: #ffffff
}
.ppvMSG {
	PADDING-RIGHT: 5px; DISPLAY: block; PADDING-LEFT: 5px; Z-INDEX: 1; =
FLOAT: right; PADDING-BOTTOM: 5px; PADDING-TOP: 5px
}
.ppvMSG IMG {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 5px; BORDER-TOP: 0px; PADDING-LEFT: =
5px; PADDING-BOTTOM: 5px; BORDER-LEFT: 0px; PADDING-TOP: 5px; =
BORDER-BOTTOM: 0px
}
.figTblUpiOuter {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; PADDING-BOTTOM: 0px; MARGIN-LEFT: 10px; BORDER-LEFT: 0px; =
PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
.tblScroll {
	PADDING-RIGHT: 0px; OVERFLOW-Y: visible; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 17px; OVERFLOW: auto; WIDTH: 100%; PADDING-TOP: 0px
}
.tblScrollBox {
=09
}
.tblScrollLink {
	DISPLAY: inline
}
.eqImgScroll {
	PADDING-RIGHT: 0px; OVERFLOW-Y: visible; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 17px; VERTICAL-ALIGN: middle; OVERFLOW: auto; WIDTH: =
100%; PADDING-TOP: 0px; TEXT-ALIGN: left
}
.eqImgScroll IMG {
	BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: =
0px
}
.eqImgScroll A {
	BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: =
0px
}
.eqImgScroll A:hover {
	BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: =
0px
}
.inlMMLBox {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: =
inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; =
BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
.fdBox {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; WIDTH: 100%; =
PADDING-TOP: 0px; BORDER-BOTTOM: 0px; POSITION: relative
}
.fdNoLabel {
	VERTICAL-ALIGN: middle; TEXT-ALIGN: center
}
.fdWithLabel {
	VERTICAL-ALIGN: middle; MARGIN-RIGHT: 10%; TEXT-ALIGN: center
}
.fdLabel {
	RIGHT: 0px; WIDTH: 10%; POSITION: absolute; TOP: 45%; TEXT-ALIGN: right
}
.fdLabelTxt {
	VERTICAL-ALIGN: super
}
.sizeImg {
	MAX-WIDTH: 100%; HEIGHT: auto
}
.sizeImgBox {
=09
}
.sizeImgLink {
	DISPLAY: inline
}
.viewWithinBtn:hover {
	BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: =
#666666 1px solid; DISPLAY: inline; PADDING-LEFT: 10px; FONT-WEIGHT: =
bold; FONT-SIZE: 11px; PADDING-BOTTOM: 1px; MARGIN: 0px; BORDER-LEFT: =
#666666 1px solid; WIDTH: auto; COLOR: #666666; PADDING-TOP: 1px; =
BORDER-BOTTOM: #666666 1px solid; HEIGHT: 19px; BACKGROUND-COLOR: =
#eeeeee; TEXT-DECORATION: none
}
.viewWithinBtn {
	BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: =
#666666 1px solid; DISPLAY: inline; PADDING-LEFT: 10px; FONT-WEIGHT: =
bold; FONT-SIZE: 11px; PADDING-BOTTOM: 1px; MARGIN: 0px; BORDER-LEFT: =
#666666 1px solid; WIDTH: auto; COLOR: #666666; PADDING-TOP: 1px; =
BORDER-BOTTOM: #666666 1px solid; HEIGHT: 19px; BACKGROUND-COLOR: =
#eeeeee; TEXT-DECORATION: none
}
.graphTextOnly A:hover {
	TEXT-DECORATION: none
}
.outwardBox {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#cccccc 1px solid; PADDING-LEFT: 3px; FONT-SIZE: 0.8em; PADDING-BOTTOM: =
3px; MARGIN: 0px; BORDER-LEFT: #cccccc 1px solid; PADDING-TOP: 3px; =
BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #ffffff; TEXT-ALIGN: =
center
}
.outwardBox TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px
}
.NextBiovRow {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: =
0px; BORDER-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff
}
.MMCvRow {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: =
0px; BORDER-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff
}
.MMCvOuter {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 5px; BORDER-TOP: 0px; OVERFLOW-Y: =
hidden; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 0.9em; FLOAT: =
right; OVERFLOW-X: hidden; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: =
hidden; BORDER-LEFT: 0px; WIDTH: 341px; PADDING-TOP: 0px; BORDER-BOTTOM: =
0px; BACKGROUND-COLOR: #ffffff
}
.MMCvTitleBox {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; FONT-WEIGHT: bold; PADDING-BOTTOM: 0px; MARGIN: 2px 2px 12px; =
BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: #cccccc 1px solid
}
.MMCvTitleSpan {
	POSITION: relative; TOP: 2px; BACKGROUND-COLOR: #ffffff
}
.MMCvRefHovs {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: =
0px; BORDER-BOTTOM: 0px
}
.MMCvTabs {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2px; MARGIN: =
0px; PADDING-TOP: 2px; BORDER-BOTTOM: #cccccc 1px solid
}
.MMCvTab {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 9px; BORDER-TOP: =
#cccccc 1px solid; PADDING-LEFT: 9px; FONT-WEIGHT: bold; PADDING-BOTTOM: =
2px; MARGIN: 0px 5px 0px 0px; BORDER-LEFT: #cccccc 1px solid; CURSOR: =
pointer; COLOR: #0000ff; PADDING-TOP: 2px; BORDER-BOTTOM: 0px; =
BACKGROUND-COLOR: #ffffff; TEXT-ALIGN: center
}
.MMCvTab:hover {
	TEXT-DECORATION: underline
}
.MMCvTabActive {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 9px; BORDER-TOP: =
#cccccc 1px solid; PADDING-LEFT: 9px; FONT-WEIGHT: bold; PADDING-BOTTOM: =
3px; MARGIN: 0px 5px 0px 0px; BORDER-LEFT: #cccccc 1px solid; =
PADDING-TOP: 2px; BORDER-BOTTOM: 0px; BACKGROUND-COLOR: #f2f2f2; =
TEXT-ALIGN: center
}
.MMCvTabActive A:hover {
	TEXT-DECORATION: none
}
.MMCvSelector {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: 0px; =
PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: =
#cccccc 1px solid; WIDTH: 336px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px; =
BACKGROUND-COLOR: #f2f2f2; TEXT-ALIGN: right
}
.MMCvSelectDiv {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 3px; BORDER-TOP: 0px; PADDING-LEFT: =
3px; PADDING-BOTTOM: 3px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: =
3px; BORDER-BOTTOM: 0px
}
.MMCvSelectorItem {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; CURSOR: =
pointer; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
.MMCvSelectorCollapseItem {
	CURSOR: pointer
}
.MMCvSelRover {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: =
inline; PADDING-LEFT: 0px; FONT-SIZE: 145%; PADDING-BOTTOM: 0px; MARGIN: =
0px; BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
.MMCvSelRover IMG {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: -4px; =
BORDER-LEFT: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
.MMCvViewBacking {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: medium =
none; PADDING-LEFT: 8px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: =
#cccccc 1px solid; WIDTH: 336px; BORDER-BOTTOM: #cccccc 1px solid; =
BACKGROUND-COLOR: #f2f2f2
}
.MMCvViewer {
	PADDING-RIGHT: 0px; BORDER-TOP: #cccccc 1px solid; OVERFLOW-Y: hidden; =
PADDING-LEFT: 0px; OVERFLOW-X: hidden; PADDING-BOTTOM: 0px; MARGIN: 0px; =
OVERFLOW: hidden; WIDTH: 320px; PADDING-TOP: 0px; BORDER-BOTTOM: medium =
none; POSITION: absolute; BACKGROUND-COLOR: #ffffff
}
.MMCvVideoComponent {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; LEFT: 345px; =
PADDING-BOTTOM: 0px; MARGIN: 0px 195px 0px 0px; WIDTH: 320px; =
PADDING-TOP: 0px; POSITION: absolute; TOP: 0px
}
.MMCvAudioComponent {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; LEFT: 345px; =
PADDING-BOTTOM: 0px; MARGIN: 0px 195px 0px 0px; WIDTH: 320px; =
PADDING-TOP: 0px; POSITION: absolute; TOP: 0px
}
.MMCvOtherComponent {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; LEFT: 345px; =
PADDING-BOTTOM: 0px; MARGIN: 0px 195px 0px 0px; WIDTH: 320px; =
PADDING-TOP: 0px; POSITION: absolute; TOP: 0px
}
.MMCvCaptionArea {
	OVERFLOW-Y: hidden; DISPLAY: block; FLOAT: right; OVERFLOW-X: hidden; =
MARGIN: 0px; OVERFLOW: hidden; WIDTH: 245px
}
.MMCvAudioOtherWrapper {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: medium none; OVERFLOW-Y: =
hidden; DISPLAY: block; OVERFLOW-X: hidden; MARGIN: 0px; OVERFLOW: =
hidden; BORDER-LEFT: #cccccc 1px solid; WIDTH: 320px; BORDER-BOTTOM: =
#cccccc 1px solid
}
.MMCvCaptionWrapper {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 4px; BORDER-TOP: 0px; OVERFLOW-Y: =
hidden; DISPLAY: block; PADDING-LEFT: 4px; OVERFLOW-X: hidden; =
PADDING-BOTTOM: 4px; MARGIN: 0px; OVERFLOW: hidden; BORDER-LEFT: 0px; =
WIDTH: 245px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
.MMCvCaption {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; DISPLAY: block; =
PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; MARGIN: 0px; BORDER-LEFT: 0px; =
WIDTH: 245px; PADDING-TOP: 6px; BORDER-BOTTOM: 0px
}
.MMCvVideoCaptionArea {
	PADDING-RIGHT: 0px; OVERFLOW-Y: hidden; DISPLAY: block; PADDING-LEFT: =
0px; OVERFLOW-X: hidden; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: =
hidden; WIDTH: 320px; PADDING-TOP: 0px
}
.MMCvVideoCaptionWrapper {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 4px; BORDER-TOP: 0px; OVERFLOW-Y: =
hidden; DISPLAY: block; PADDING-LEFT: 4px; OVERFLOW-X: hidden; =
PADDING-BOTTOM: 4px; MARGIN: 0px; OVERFLOW: hidden; BORDER-LEFT: 0px; =
WIDTH: 320px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px
}
.MMCvVideoCaption {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 6px; BORDER-TOP: 0px; DISPLAY: block; =
PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; MARGIN: 0px; BORDER-LEFT: 0px; =
WIDTH: 320px; PADDING-TOP: 6px; BORDER-BOTTOM: 0px
}
.MMCvVideoPlayerArea {
	PADDING-RIGHT: 0px; OVERFLOW-Y: hidden; DISPLAY: block; PADDING-LEFT: =
0px; OVERFLOW-X: hidden; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: =
hidden; WIDTH: 320px; PADDING-TOP: 0px; HEIGHT: 265px
}
.MMCvVideoPlayerWrapper {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; OVERFLOW-Y: =
hidden; DISPLAY: block; PADDING-LEFT: 0px; OVERFLOW-X: hidden; =
PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: hidden; BORDER-LEFT: 0px; =
WIDTH: 320px; PADDING-TOP: 0px; BORDER-BOTTOM: 0px; POSITION: relative; =
HEIGHT: 265px
}
.MMCvVideoPlayer {
	BORDER-RIGHT: #cccccc 1px solid; DISPLAY: block; MARGIN: 0px; =
VERTICAL-ALIGN: middle; BORDER-LEFT: #cccccc 1px solid; WIDTH: 320px; =
BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 265px
}
.MMCvAudioPlayerWrapper {
	PADDING-RIGHT: 0px; OVERFLOW-Y: hidden; DISPLAY: block; PADDING-LEFT: =
0px; OVERFLOW-X: hidden; PADDING-BOTTOM: 0px; MARGIN: 0px; OVERFLOW: =
hidden; WIDTH: 320px; PADDING-TOP: 0px; HEIGHT: 28px
}
.MMCvAudioPlayer {
	BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: block; MARGIN: 0px; =
BORDER-LEFT: 0px; WIDTH: 320px; BORDER-BOTTOM: 0px; HEIGHT: 28px; =
TEXT-ALIGN: center
}
.MMCvErrorArea {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; OVERFLOW-Y: =
hidden; DISPLAY: block; PADDING-LEFT: 0px; OVERFLOW-X: hidden; =
PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: middle; OVERFLOW: =
hidden; BORDER-LEFT: 0px; WIDTH: 300px; PADDING-TOP: 0px; BORDER-BOTTOM: =
0px; HEIGHT: 260px
}
.MMCvError {
	FONT-SIZE: 1.1em; WIDTH: 320px; POSITION: absolute; TOP: 50px; =
TEXT-ALIGN: center
}
.MMCvAudioError {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 1.1em; =
PADDING-BOTTOM: 10px; WIDTH: 320px; PADDING-TOP: 10px; BORDER-BOTTOM: =
#cccccc 1px dotted; TEXT-ALIGN: center
}
.MMCvAudioErrorNoCaption {
	BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: medium =
none; PADDING-LEFT: 8px; FONT-SIZE: 1.1em; PADDING-BOTTOM: 8px; =
BORDER-LEFT: #cccccc 1px solid; WIDTH: 320px; PADDING-TOP: 8px; =
BORDER-BOTTOM: #cccccc 1px solid; TEXT-ALIGN: center
}
.MMCvMoreSpacer {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; PADDING-BOTTOM: 2px; MARGIN: 0px; BORDER-LEFT: 0px; PADDING-TOP: =
0px; BORDER-BOTTOM: #000000 1px dashed
}
.MMCvMoreWrapper {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; DISPLAY: none; =
PADDING-LEFT: 9px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; =
WIDTH: 195px; CURSOR: pointer; COLOR: #0000ff; PADDING-TOP: 0px; =
BORDER-BOTTOM: 0px
}
.MMCvLessWrapper {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 9px; BORDER-TOP: 0px; DISPLAY: none; =
PADDING-LEFT: 9px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; =
WIDTH: 195px; CURSOR: pointer; COLOR: #0000ff; PADDING-TOP: 0px; =
BORDER-BOTTOM: 0px
}
.MMCvImageArea {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; MARGIN: =
0px; WIDTH: 58px; PADDING-TOP: 8px
}
.MMCvDownload {
	DISPLAY: block; FLOAT: right; MARGIN: 0px
}
.MMCvViewWithin {
	DISPLAY: block; MARGIN: 0px
}
.MMCvViewDownloadWrapper {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: =
5px; WIDTH: 320px; PADDING-TOP: 5px; BACKGROUND-COLOR: #f2f2f2
}
.MMCvImage {
	BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: =
0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; WIDTH: 50px; =
PADDING-TOP: 0px; BORDER-BOTTOM: 0px; HEIGHT: 50px
}
#shadow-container {
	PADDING-RIGHT: 10px; LEFT: 3px; FLOAT: left; MARGIN-BOTTOM: 3px; =
PADDING-BOTTOM: 10px; MARGIN-RIGHT: 3px; PADDING-TOP: 10px; POSITION: =
relative; TOP: 3px
}
.shadow1 {
	LEFT: -1px; WIDTH: 220px; POSITION: relative; TOP: -1px
}
.shadow2 {
	LEFT: -1px; WIDTH: 220px; POSITION: relative; TOP: -1px
}
.shadow3 {
	LEFT: -1px; WIDTH: 220px; POSITION: relative; TOP: -1px
}
.container {
	LEFT: -1px; WIDTH: 220px; POSITION: relative; TOP: -1px
}
.shadow1 {
	BACKGROUND: #f1f1f1; WIDTH: 220px
}
.shadow2 {
	BACKGROUND: #dbdadb
}
.shadow3 {
	BACKGROUND: #b8b6b8
}
.container {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-SIZE: 1.1em; =
PADDING-BOTTOM: 8px; WIDTH: 220px; COLOR: #555555; PADDING-TOP: 8px; =
FONT-FAMILY: Geneva, Arial, Helvetica, sans-serif; BACKGROUND-COLOR: =
#f2f2f2
}
.MMCvVideoImageArea {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: medium none; BORDER-LEFT: =
#cccccc 1px solid; WIDTH: 320px; BORDER-BOTTOM: #cccccc 1px solid; =
HEIGHT: 180px; TEXT-ALIGN: center
}
.MMCvInstallFP {
	PADDING-RIGHT: 4px; DISPLAY: block; PADDING-LEFT: 4px; PADDING-BOTTOM: =
4px; PADDING-TOP: 4px
}
.MMCvVideoImageWrapper {
	VERTICAL-ALIGN: middle
}
.MMCvInstallFP {
	PADDING-RIGHT: 4px; DISPLAY: block; PADDING-LEFT: 4px; PADDING-BOTTOM: =
4px; PADDING-TOP: 4px
}
 > .MMCvVideoImageArea {
	DISPLAY: block
}
.MMCvVideoImageWrapper {
	ZOOM: 1; POSITION: relative; TOP: 50%; HEIGHT: auto
}
.MMCvVideoImage {
	ZOOM: 1; POSITION: relative; TOP: -50%; HEIGHT: auto
}
UNKNOWN {
	FONT-WEIGHT: bold; FONT-SIZE: 1.2em; PADDING-BOTTOM: 0px; MARGIN: 1px; =
BORDER-BOTTOM: #cccccc 1px dashed
}
UL.artAlphaNavBar {
	DISPLAY: block
}
UL.artAlphaNavBar LI {
	PADDING-RIGHT: 3px; DISPLAY: inline; PADDING-LEFT: 3px; BORDER-LEFT: =
#999999 1px solid; LIST-STYLE-TYPE: none
}
DL DL DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; LINE-HEIGHT: 100%; PADDING-TOP: 0px
}
DT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; LINE-HEIGHT: 14pt; PADDING-TOP: 0px
}
DD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
10px; LINE-HEIGHT: 150%; PADDING-TOP: 0px
}
DL P {
	MARGIN-LEFT: 0px; LINE-HEIGHT: 100%
}
DT P {
	MARGIN-LEFT: 0px; LINE-HEIGHT: 100%
}
DD P {
	MARGIN-LEFT: 0px; LINE-HEIGHT: 100%
}
#pdfArea OBJECT {
	BORDER-RIGHT: #666 1px solid; BORDER-TOP: #666 1px solid; DISPLAY: =
block; BORDER-LEFT: #666 1px solid; BORDER-BOTTOM: #666 1px solid
}
#pdfPage {
	DISPLAY: block; OVERFLOW: auto; WIDTH: 100%; HEIGHT: 820px
}
.loadWindow {
	BORDER-RIGHT: 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: 1px solid; =
PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: 1px solid; WIDTH: =
600px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px solid; HEIGHT: 820px
}
.reRunStyle {
	BORDER-RIGHT: rgb(248,202,115) 1px solid; PADDING-RIGHT: 4px; =
BORDER-TOP: rgb(248,202,115) 1px solid; PADDING-LEFT: 4px; Z-INDEX: 9; =
FLOAT: left; MARGIN-BOTTOM: 2px; PADDING-BOTTOM: 4px; BORDER-LEFT: =
rgb(248,202,115) 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: =
rgb(248,202,115) 1px solid; POSITION: relative; BACKGROUND-COLOR: =
rgb(248,229,130)
}

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/static/stylesheets/css_gen_v01.css

BODY {
	MARGIN: 0.4em 0em 0em
}
DIV {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
HTML {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
IMG {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
INPUT {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
SELECT {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
TABLE {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
TD {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
LI {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
.pageText {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
.alertMsg {
	FONT-WEIGHT: bold; COLOR: #ff0000
}
.errMsg {
	FONT-WEIGHT: bold; COLOR: #ff0000
}
DIV.refMsg {
	DISPLAY: none
}
DIV.msgBox {
	BORDER-RIGHT: #dedede 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#dedede 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 6px; BORDER-LEFT: =
#dedede 1px solid; WIDTH: 80%; PADDING-TOP: 6px; BORDER-BOTTOM: #dedede =
1px solid
}
DIV.msgBoxExcerpt {
	BORDER-RIGHT: #dedede 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#dedede 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 6px; BORDER-LEFT: =
#dedede 1px solid; WIDTH: 70%; PADDING-TOP: 6px; BORDER-BOTTOM: #dedede =
1px solid
}
DIV.imgIcon {
	PADDING-RIGHT: 5px; FONT-WEIGHT: bold; FLOAT: left; COLOR: #ff0000
}
DIV.imgIcon H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 1em; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
DIV.errMsgText {
	PADDING-LEFT: 26px; FONT-WEIGHT: bold; COLOR: #ff0000
}
DIV.alertMsgText {
	PADDING-LEFT: 26px; FONT-WEIGHT: bold; COLOR: #ff0000
}
DIV.confirmMsgText {
	PADDING-LEFT: 26px; FONT-WEIGHT: bold; COLOR: #000000
}
DIV.infoMsgText {
	PADDING-LEFT: 26px; FONT-WEIGHT: bold; COLOR: #000000
}
DIV.msgText {
	PADDING-LEFT: 50px; FONT-WEIGHT: normal; COLOR: #000000
}
DIV.errMsgText A {
	FONT-WEIGHT: bold; COLOR: #ff0000
}
DIV.alertMsgText A {
	FONT-WEIGHT: bold; COLOR: #ff0000
}
DIV.confirmMsgText A {
	FONT-WEIGHT: bold; COLOR: #000000
}
DIV.infoMsgText A {
	FONT-WEIGHT: bold; COLOR: #000000
}
DIV.msgText A {
	FONT-WEIGHT: normal
}
.pageHeading {
	FONT-WEIGHT: bold; FONT-SIZE: 150%; MARGIN: 5px 0px 0px 5px; COLOR: =
#8cc919; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
.pageHeadingBlack {
	FONT-WEIGHT: bold; FONT-SIZE: 150%; MARGIN: 5px 0px 0px 5px; COLOR: =
black; FONT-FAMILY: arial, helvetica, sans-serif
}
.pageContent {
	MARGIN: 5px
}
#sdLoginBox {
	PADDING-RIGHT: 0.1em; BACKGROUND-POSITION: left bottom; PADDING-LEFT: =
0.1em; FONT-SIZE: 0.8em; PADDING-BOTTOM: 0.1em; OVERFLOW: hidden; WIDTH: =
29.5em; PADDING-TOP: 0.1em; BACKGROUND-REPEAT: repeat-x; HEIGHT: 6.7em; =
BACKGROUND-COLOR: #dddddd
}
#sdLoginBox INPUT {
	FONT-SIZE: 0.9em
}
#sdLoginBox DIV {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
#sdLoginBox HTML {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
#sdLoginBox IMG {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
#sdLoginBox INPUT {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
#sdLoginBox SELECT {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
#sdLoginBox TABLE {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
#sdLoginBox TD {
	FONT-SIZE: 1em; FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
#sdLoginBoxFold {
	OVERFLOW: hidden; TEXT-ALIGN: right
}
#sdQuickSearch TABLE {
	FONT-SIZE: 1em; PADDING-BOTTOM: 0.3em
}
#sdQuickSearch INPUT {
	FONT-SIZE: 1em
}
#sdQuickSearch TD {
	FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
#sdBody {
	FONT-SIZE: 75%; PADDING-BOTTOM: 4px; WIDTH: 100%; PADDING-TOP: 4px; =
FONT-FAMILY: arial, verdana, helvetica, sans-serif
}
A.ActionButton {
	TEXT-DECORATION: none
}
A.ActionButton:hover {
	TEXT-DECORATION: underline
}
A.ActionButton:hover:visited {
	TEXT-DECORATION: underline
}
#a:link .Active {
	TEXT-DECORATION: underline
}
A:visited .Active {
	TEXT-DECORATION: underline
}
.ActionButtonDisabled {
	COLOR: #999999; TEXT-DECORATION: none
}
A {
	TEXT-DECORATION: none
}
A:link {
	TEXT-DECORATION: none
}
A:hover {
	TEXT-DECORATION: underline
}
A.linkclosed:hover {
	COLOR: white; BACKGROUND-COLOR: #777777; TEXT-DECORATION: none
}
A.linkopen {
	COLOR: white; BACKGROUND-COLOR: #777777; TEXT-DECORATION: none
}
A.linkopen:link {
	COLOR: white; BACKGROUND-COLOR: #777777; TEXT-DECORATION: none
}
A.linkopen:visited {
	COLOR: white; BACKGROUND-COLOR: #777777; TEXT-DECORATION: none
}
A.linkopen:active {
	COLOR: white; BACKGROUND-COLOR: #777777; TEXT-DECORATION: none
}
SPAN.linkopen {
	COLOR: white; BACKGROUND-COLOR: #777777; TEXT-DECORATION: none
}
.linknoborder IMG {
	BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium =
none; BORDER-BOTTOM: medium none
}
.linkdisabled {
	COLOR: #999999
}
INPUT.xpstyle {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid
}
INPUT.qsinput {
	FONT-FAMILY: arial, verdana, helvetica, sans-serif; HEIGHT: 1.6em
}
TABLE.sdMainNav {
	BACKGROUND-POSITION: left top; MARGIN-TOP: 0.2em; FONT-SIZE: 1em; =
WIDTH: 100%; BORDER-BOTTOM: black 0.1em solid; BACKGROUND-REPEAT: =
repeat-x; HEIGHT: 2em
}
TD.sdMainNav {
	BACKGROUND-POSITION: left top; BACKGROUND-REPEAT: repeat-x
}
.sci_dirNav {
	BACKGROUND-COLOR: #6c9d31
}
.sci_dirNavActive {
=09
}
.blueNav {
	BACKGROUND-COLOR: #0000aa
}
.blueNavActive {
	COLOR: #0000aa; BACKGROUND-COLOR: #bad3f3
}
.redNav {
	BACKGROUND-COLOR: #990000
}
.redNavActive {
	COLOR: #990000; BACKGROUND-COLOR: #f7cece
}
.greyNav {
	BACKGROUND-COLOR: #7f7f7f
}
.greyNavActive {
	COLOR: #7f7f7f; BACKGROUND-COLOR: #e6e6e6
}
.greenNav {
	BACKGROUND-COLOR: #007703
}
.greenNavActive {
	COLOR: #007703; BACKGROUND-COLOR: #c2edc0
}
.orangeNav {
	BACKGROUND-COLOR: #cc5200
}
.orangeNavActive {
	COLOR: #cc5200; BACKGROUND-COLOR: #ffdfca
}
TABLE.sdMainNav A:hover {
	TEXT-DECORATION: none
}
TABLE.sdMainNavCenter TD {
	FONT-SIZE: 1em; BORDER-LEFT: white 0.01em solid; HEIGHT: 1.82em
}
TABLE.sdMainNavCenter TBODY {
	FONT-SIZE: 1em
}
TD {
	FONT-SIZE: 1em
}
TR {
	FONT-SIZE: 1em
}
DIV {
	FONT-SIZE: 1em
}
TABLE.sdMainNavCenter {
	BORDER-RIGHT: white 0.01em solid; HEIGHT: 1.82em
}
TABLE.sdMainNav A {
	FONT-WEIGHT: normal; PADDING-BOTTOM: 0.33em; VERTICAL-ALIGN: middle; =
COLOR: white; PADDING-TOP: 0.19em; HEIGHT: 1.82em; TEXT-DECORATION: none
}
TABLE.sdMainNav A:link {
	FONT-WEIGHT: normal; PADDING-BOTTOM: 0.33em; VERTICAL-ALIGN: middle; =
COLOR: white; PADDING-TOP: 0.19em; HEIGHT: 1.82em; TEXT-DECORATION: none
}
TABLE.sdMainNav A:visited {
	FONT-WEIGHT: normal; PADDING-BOTTOM: 0.33em; VERTICAL-ALIGN: middle; =
COLOR: white; PADDING-TOP: 0.19em; HEIGHT: 1.82em; TEXT-DECORATION: none
}
DIV.sdMainNavPadding {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em
}
.alphaDivider {
	DISPLAY: inline; WIDTH: 0px; POSITION: relative; HEIGHT: 0px
}
.alphaSelect {
	LEFT: 0px; POSITION: absolute; TOP: -11px; HEIGHT: 14px; =
BACKGROUND-COLOR: #777777
}
.libBannerText {
	FONT-SIZE: smaller; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif
}
.sci_dirBtn {
	BACKGROUND-COLOR: #7aa544
}
.sci_dirBtnHov {
	COLOR: #ffffff; BACKGROUND-COLOR: #1d6b2f
}
.blueBtn {
	BACKGROUND-COLOR: #0000aa
}
.blueBtnHov {
	COLOR: #0000aa; BACKGROUND-COLOR: #bad3f3
}
.greenBtn {
	BACKGROUND-COLOR: #007703
}
.greenBtnHov {
	COLOR: #007703; BACKGROUND-COLOR: #c2edc0
}
.greyBtn {
	BACKGROUND-COLOR: #7f7f7f
}
.greyBtnHov {
	COLOR: #7f7f7f; BACKGROUND-COLOR: #e6e6e6
}
.redBtn {
	BACKGROUND-COLOR: #990000
}
.redBtnHov {
	COLOR: #990000; BACKGROUND-COLOR: #f7cece
}
.orangeBtn {
	BACKGROUND-COLOR: #cc5200
}
.orangeBtnHov {
	COLOR: #cc5200; BACKGROUND-COLOR: #ffdfca
}
INPUT.btn {
	BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 1px; BORDER-TOP: =
#666666 1px solid; PADDING-LEFT: 1px; FONT-WEIGHT: bold; FONT-SIZE: =
12px; PADDING-BOTTOM: 0px; MARGIN: 0px 1px 0px 0px; VERTICAL-ALIGN: =
middle; OVERFLOW: visible; BORDER-LEFT: #666666 1px solid; WIDTH: auto; =
CURSOR: pointer; COLOR: #ffffff; PADDING-TOP: 0px; BORDER-BOTTOM: =
#666666 1px solid; TEXT-DECORATION: none
}
INPUT.btnhov {
	BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 1px; BORDER-TOP: =
#666666 1px solid; PADDING-LEFT: 1px; FONT-WEIGHT: bold; FONT-SIZE: =
12px; PADDING-BOTTOM: 0px; MARGIN: 0px 1px 0px 0px; VERTICAL-ALIGN: =
middle; OVERFLOW: visible; BORDER-LEFT: #666666 1px solid; WIDTH: auto; =
CURSOR: pointer; PADDING-TOP: 0px; BORDER-BOTTOM: #666666 1px solid; =
TEXT-DECORATION: none
}
A.articleBtn {
	BORDER-RIGHT: medium none; PADDING-RIGHT: 20px; BORDER-TOP: medium =
none; PADDING-LEFT: 20px; FONT-WEIGHT: bold; FONT-SIZE: 12px; =
PADDING-BOTTOM: 1px; MARGIN: 0px; BORDER-LEFT: medium none; CURSOR: =
pointer; COLOR: #ffffff; PADDING-TOP: 1px; BORDER-BOTTOM: medium none; =
BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
A.articleBtn:hover {
	BORDER-RIGHT: medium none; PADDING-RIGHT: 20px; BORDER-TOP: medium =
none; PADDING-LEFT: 20px; FONT-WEIGHT: bold; FONT-SIZE: 12px; =
PADDING-BOTTOM: 1px; MARGIN: 0px; BORDER-LEFT: medium none; CURSOR: =
pointer; COLOR: #ffffff; PADDING-TOP: 1px; BORDER-BOTTOM: medium none; =
BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
A.articleBtnActive {
	CURSOR: default; BACKGROUND-COLOR: #7aa544; TEXT-DECORATION: none
}
A.articleBtnActive:hover {
	CURSOR: default; BACKGROUND-COLOR: #7aa544; TEXT-DECORATION: none
}
A.articleBtn:hover {
	BACKGROUND-COLOR: #7aa544
}
A.btn {
	BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#666666 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: =
12px; PADDING-BOTTOM: 1px; MARGIN: 0px 1px 0px 0px; VERTICAL-ALIGN: =
middle; BORDER-LEFT: #666666 1px solid; COLOR: #ffffff; PADDING-TOP: =
1px; BORDER-BOTTOM: #666666 1px solid; FONT-FAMILY: arial, verdana, =
helvetica, sans-serif; HEIGHT: 1.17em; TEXT-DECORATION: none
}
A.btn:hover {
	BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#666666 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: =
12px; PADDING-BOTTOM: 1px; MARGIN: 0px 1px 0px 0px; VERTICAL-ALIGN: =
middle; BORDER-LEFT: #666666 1px solid; COLOR: #ffffff; PADDING-TOP: =
1px; BORDER-BOTTOM: #666666 1px solid; FONT-FAMILY: arial, verdana, =
helvetica, sans-serif; HEIGHT: 1.17em; TEXT-DECORATION: none
}
A.sci_dirBtn {
	BACKGROUND-COLOR: #7aa544
}
A.sci_dirBtn:hover {
	COLOR: #ffffff; BACKGROUND-COLOR: #1d6b2f
}
A.blueBtn {
	BACKGROUND-COLOR: #0000aa
}
A.blueBtn:hover {
	COLOR: #0000aa; BACKGROUND-COLOR: #bad3f3
}
A.greenBtn {
	BACKGROUND-COLOR: #007703
}
A.greenBtn:hover {
	COLOR: #007703; BACKGROUND-COLOR: #c2edc0
}
A.greyBtn {
	BACKGROUND-COLOR: #7f7f7f
}
A.greyBtn:hover {
	COLOR: #7f7f7f; BACKGROUND-COLOR: #e6e6e6
}
A.redBtn {
	BACKGROUND-COLOR: #990000
}
A.redBtn:hover {
	COLOR: #990000; BACKGROUND-COLOR: #f7cece
}
A.orangeBtn {
	BACKGROUND-COLOR: #cc5200
}
A.orangeBtn:hover {
	COLOR: #cc5200; BACKGROUND-COLOR: #ffdfca
}
A.noul:hover {
	TEXT-DECORATION: none
}
.tableFmBg {
	PADDING-RIGHT: 0px; BORDER-TOP: #8cc919 2px solid; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: =
#8cc919 2px solid; BACKGROUND-COLOR: #efefef
}
.sci_dirBorder {
	BORDER-TOP: #8cc919 2px solid; BORDER-BOTTOM: #8cc919 2px solid
}
.blueBorder {
	BORDER-TOP: #0000aa 2px solid; BORDER-BOTTOM: #0000aa 2px solid
}
.greenBorder {
	BORDER-TOP: #007703 2px solid; BORDER-BOTTOM: #007703 2px solid
}
.greyBorder {
	BORDER-TOP: #7f7f7f 2px solid; BORDER-BOTTOM: #7f7f7f 2px solid
}
.redBorder {
	BORDER-TOP: #990000 2px solid; BORDER-BOTTOM: #990000 2px solid
}
.orangeBorder {
	BORDER-TOP: #cc5200 2px solid; BORDER-BOTTOM: #cc5200 2px solid
}
.sci_dirBorderBtm {
	BORDER-BOTTOM: #8cc919 2px solid
}
.blueBorderBtm {
	BORDER-BOTTOM: #0000aa 2px solid
}
.greenBorderBtm {
	BORDER-BOTTOM: #007703 2px solid
}
.greyBorderBtm {
	BORDER-BOTTOM: #7f7f7f 2px solid
}
.redBorderBtm {
	BORDER-BOTTOM: #990000 2px solid
}
.orangeBorderBtm {
	BORDER-BOTTOM: #cc5200 2px solid
}
.sci_dirBoxBorder {
	BORDER-RIGHT: #8cc919 2px solid; BORDER-TOP: #8cc919 2px solid; =
BORDER-LEFT: #8cc919 2px solid; BORDER-BOTTOM: #8cc919 2px solid
}
.blueBoxBorder {
	BORDER-RIGHT: #0000aa 2px solid; BORDER-TOP: #0000aa 2px solid; =
BORDER-LEFT: #0000aa 2px solid; BORDER-BOTTOM: #0000aa 2px solid
}
.greenBoxBorder {
	BORDER-RIGHT: #007703 2px solid; BORDER-TOP: #007703 2px solid; =
BORDER-LEFT: #007703 2px solid; BORDER-BOTTOM: #007703 2px solid
}
.greyBoxBorder {
	BORDER-RIGHT: #7f7f7f 2px solid; BORDER-TOP: #7f7f7f 2px solid; =
BORDER-LEFT: #7f7f7f 2px solid; BORDER-BOTTOM: #7f7f7f 2px solid
}
.redBoxBorder {
	BORDER-RIGHT: #990000 2px solid; BORDER-TOP: #990000 2px solid; =
BORDER-LEFT: #990000 2px solid; BORDER-BOTTOM: #990000 2px solid
}
.orangeBoxBorder {
	BORDER-RIGHT: #cc5200 2px solid; BORDER-TOP: #cc5200 2px solid; =
BORDER-LEFT: #cc5200 2px solid; BORDER-BOTTOM: #cc5200 2px solid
}
.tableFmBgGray {
	FONT-SIZE: 1em; FONT-FAMILY: arial, helvetica, sans-serif; =
BACKGROUND-COLOR: #efefef
}
.tableFmBgGrayNoCell {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 1em; PADDING-BOTTOM: =
5px; MARGIN: 5px; PADDING-TOP: 5px; FONT-FAMILY: arial, helvetica, =
sans-serif; BACKGROUND-COLOR: #efefef
}
.tableFmBgPad {
	MARGIN-TOP: 5px; MARGIN-BOTTOM: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: =
5px; BACKGROUND-COLOR: #efefef
}
.tableFmCell {
	PADDING-LEFT: 10px; FONT-WEIGHT: bold; PADDING-BOTTOM: 3px; =
MARGIN-LEFT: 10px; VERTICAL-ALIGN: top; PADDING-TOP: 3px; TEXT-ALIGN: =
right
}
.tableFmCellTop {
	FONT-WEIGHT: bold; VERTICAL-ALIGN: top; PADDING-TOP: 0px; TEXT-ALIGN: =
right
}
.tableFmCellAbove {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-WEIGHT: bold; =
PADDING-BOTTOM: 5px; PADDING-TOP: 5px; TEXT-ALIGN: left
}
.tableFmCellL {
	PADDING-LEFT: 10px; FONT-WEIGHT: bold; PADDING-BOTTOM: 3px; =
MARGIN-LEFT: 10px; VERTICAL-ALIGN: top; PADDING-TOP: 3px; TEXT-ALIGN: =
left
}
.tableFmDivider {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; WIDTH: 100%; PADDING-TOP: 0px; HEIGHT: 2px; BACKGROUND-COLOR: =
#ffffff
}
.redtableFmDivider {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; WIDTH: 100%; PADDING-TOP: 0px; HEIGHT: 2px; BACKGROUND-COLOR: =
#990000
}
.SDtxtLarger {
	FONT-WEIGHT: bold; FONT-SIZE: larger; FONT-FAMILY: arial, helvetica, =
sans-serif
}
.SDtxtSmall {
	FONT-SIZE: xx-small; COLOR: #000000; FONT-FAMILY: arial, helvetica, =
sans-serif
}
.SDtxtSmallBold {
	FONT-WEIGHT: bold; FONT-SIZE: 0.9em
}
.SDtxtNote {
	FONT-WEIGHT: normal; FONT-SIZE: 1em; COLOR: #000000; FONT-FAMILY: =
arial, helvetica, sans-serif
}
.SDtxtNoteSmall {
	FONT-WEIGHT: normal; FONT-SIZE: 10px; COLOR: #000000; FONT-FAMILY: =
arial, helvetica, sans-serif
}
.SDtxtPgTitleBlack {
	FONT-WEIGHT: bold; FONT-SIZE: 150%; COLOR: #000000; FONT-FAMILY: arial, =
helvetica, sans-serif
}
A.errMsg {
	COLOR: #ff0000; TEXT-DECORATION: none
}
A.errMsg:hover {
	TEXT-DECORATION: underline
}
.boldText {
	FONT-WEIGHT: bold
}
.sci_dirColor {
	COLOR: #7aa544
}
.blueColor {
	COLOR: #0000aa
}
.greenColor {
	COLOR: #007703
}
.greyColor {
	COLOR: #7f7f7f
}
.redColor {
	COLOR: #990000
}
.orangeColor {
	COLOR: #cc5200
}
.tablePlainWhite {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; BACKGROUND-COLOR: #ffffff
}
.inputBox {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
FONT-SIZE: 1em; VERTICAL-ALIGN: top; BORDER-LEFT: #666666 1px solid; =
BORDER-BOTTOM: #666666 1px solid; BACKGROUND-COLOR: #ffffff
}
A.tabActive {
	BORDER-RIGHT: medium none; PADDING-RIGHT: 20px; BORDER-TOP: medium =
none; PADDING-LEFT: 20px; FONT-WEIGHT: bold; FONT-SIZE: 1em; =
PADDING-BOTTOM: 1px; MARGIN: 0px 2px 0px 0px; BORDER-LEFT: medium none; =
COLOR: #ffffff; PADDING-TOP: 1px; BORDER-BOTTOM: medium none; =
TEXT-DECORATION: none
}
A.tabActive:hover {
	BORDER-RIGHT: medium none; PADDING-RIGHT: 20px; BORDER-TOP: medium =
none; PADDING-LEFT: 20px; FONT-WEIGHT: bold; FONT-SIZE: 1em; =
PADDING-BOTTOM: 1px; MARGIN: 0px 2px 0px 0px; BORDER-LEFT: medium none; =
COLOR: #ffffff; PADDING-TOP: 1px; BORDER-BOTTOM: medium none; =
TEXT-DECORATION: none
}
A.tab {
	BORDER-RIGHT: medium none; PADDING-RIGHT: 20px; BORDER-TOP: medium =
none; PADDING-LEFT: 20px; FONT-WEIGHT: bold; FONT-SIZE: 1em; =
PADDING-BOTTOM: 1px; MARGIN: 0px 2px 0px 0px; BORDER-LEFT: medium none; =
COLOR: #ffffff; PADDING-TOP: 1px; BORDER-BOTTOM: medium none; =
BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
A.tab:hover {
	BORDER-RIGHT: medium none; PADDING-RIGHT: 20px; BORDER-TOP: medium =
none; PADDING-LEFT: 20px; FONT-WEIGHT: bold; FONT-SIZE: 1em; =
PADDING-BOTTOM: 1px; MARGIN: 0px 2px 0px 0px; BORDER-LEFT: medium none; =
COLOR: #ffffff; PADDING-TOP: 1px; BORDER-BOTTOM: medium none; =
BACKGROUND-COLOR: #999999; TEXT-DECORATION: none
}
A.sci_dirTabActive {
	CURSOR: default; BACKGROUND-COLOR: #7aa544; TEXT-DECORATION: none
}
A.sci_dirTabActive:hover {
	CURSOR: default; BACKGROUND-COLOR: #7aa544; TEXT-DECORATION: none
}
A.sci_dirTab:hover {
	BACKGROUND-COLOR: #7aa544
}
A.blueTabActive {
	CURSOR: default; BACKGROUND-COLOR: #0000aa; TEXT-DECORATION: none
}
A.blueTabActive:hover {
	CURSOR: default; BACKGROUND-COLOR: #0000aa; TEXT-DECORATION: none
}
A.blueTab:hover {
	BACKGROUND-COLOR: #0000aa
}
A.greenTabActive {
	CURSOR: default; BACKGROUND-COLOR: #007703; TEXT-DECORATION: none
}
A.greenTabActive:hover {
	CURSOR: default; BACKGROUND-COLOR: #007703; TEXT-DECORATION: none
}
A.greenTab:hover {
	BACKGROUND-COLOR: #007703
}
A.greyTabActive {
	CURSOR: default; BACKGROUND-COLOR: #7f7f7f; TEXT-DECORATION: none
}
A.greyTabActive:hover {
	CURSOR: default; BACKGROUND-COLOR: #7f7f7f; TEXT-DECORATION: none
}
A.greyTab:hover {
	BACKGROUND-COLOR: #7f7f7f
}
A.redTabActive {
	CURSOR: default; BACKGROUND-COLOR: #990000; TEXT-DECORATION: none
}
A.redTabActive:hover {
	CURSOR: default; BACKGROUND-COLOR: #990000; TEXT-DECORATION: none
}
A.redTab:hover {
	BACKGROUND-COLOR: #990000
}
A.orangeTabActive {
	CURSOR: default; BACKGROUND-COLOR: #cc5200; TEXT-DECORATION: none
}
A.orangeTabActive:hover {
	CURSOR: default; BACKGROUND-COLOR: #cc5200; TEXT-DECORATION: none
}
A.orangeTab:hover {
	BACKGROUND-COLOR: #cc5200
}
.textBoxMultipleRow {
	FONT-SIZE: 1em; FONT-FAMILY: Arial, Helvetica, sans-serif; =
BACKGROUND-COLOR: #ffffff
}
A.nextPrev {
	FONT-SIZE: 1em; MARGIN: 0px 10px; WIDTH: 1%; COLOR: #ffffff; =
TEXT-DECORATION: none
}
A.nextPrev:hover {
	FONT-SIZE: 1em; MARGIN: 0px 10px; WIDTH: 1%; COLOR: #ffffff; =
TEXT-DECORATION: underline
}
INPUT.nextPrev {
	BORDER-RIGHT: medium none; PADDING-RIGHT: 1px; BORDER-TOP: medium none; =
PADDING-LEFT: 1px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px 5px; =
VERTICAL-ALIGN: middle; OVERFLOW: visible; BORDER-LEFT: medium none; =
WIDTH: auto; COLOR: #0000ee; PADDING-TOP: 0px; BORDER-BOTTOM: medium =
none; BACKGROUND-COLOR: transparent; TEXT-DECORATION: none
}
INPUT.nextPrevHov {
	BORDER-RIGHT: medium none; PADDING-RIGHT: 1px; BORDER-TOP: medium none; =
PADDING-LEFT: 1px; FONT-SIZE: 1em; PADDING-BOTTOM: 0px; MARGIN: 0px 5px; =
VERTICAL-ALIGN: middle; OVERFLOW: visible; BORDER-LEFT: medium none; =
WIDTH: auto; COLOR: #0000ee; PADDING-TOP: 0px; BORDER-BOTTOM: medium =
none; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline
}
INPUT.listAction {
	BORDER-RIGHT: medium none; PADDING-RIGHT: 1px; BORDER-TOP: medium none; =
PADDING-LEFT: 1px; FONT-SIZE: 0.95em; PADDING-BOTTOM: 0px; MARGIN: 0px =
5px; VERTICAL-ALIGN: middle; OVERFLOW: visible; BORDER-LEFT: medium =
none; WIDTH: auto; CURSOR: pointer; COLOR: #000000; PADDING-TOP: 0px; =
BORDER-BOTTOM: medium none; BACKGROUND-COLOR: transparent; =
TEXT-DECORATION: none
}
.smCaps {
	FONT-VARIANT: small-caps
}
.nowrap {
	WHITE-SPACE: nowrap
}
SPAN.hit {
	FONT-WEIGHT: bold; COLOR: #ff0000
}
SPAN.bf {
	FONT-WEIGHT: bold
}
SPAN.it {
	FONT-STYLE: italic
}
SPAN.monospace {
	FONT-FAMILY: courier
}
SPAN.sans-serif {
	FONT-FAMILY: sans-serif
}
SPAN.underline {
	TEXT-DECORATION: underline
}
SPAN.pit {
	FONT-SIZE: 0.9em; COLOR: #737373; FONT-FAMILY: arial, verdana, =
helvetica, sans-serif
}
.charImg {
	BORDER-RIGHT: medium none; BORDER-TOP: medium none; VERTICAL-ALIGN: =
baseline; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none
}
SPAN.cross-out {
	TEXT-DECORATION: line-through
}
.h1 {
	FONT-WEIGHT: bold; FONT-SIZE: 2em; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif
}
.h2 {
	FONT-WEIGHT: bold; FONT-SIZE: 1.3em; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif
}
.h3 {
	FONT-WEIGHT: bold; FONT-SIZE: 1.2em; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif
}
.h4 {
	FONT-WEIGHT: bold; FONT-SIZE: 1.1em; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif
}
.h5 {
	FONT-WEIGHT: bold; FONT-SIZE: 1em; FONT-FAMILY: =
arial,verdana,helvetica,sans-serif
}
.ImageScroller {
	OVERFLOW: auto; WIDTH: 100%
}
.ImageScrollerPurchHist {
	OVERFLOW: auto; WIDTH: 455px
}
.ImageScrollerPurchCurr {
	OVERFLOW: auto; WIDTH: 415px
}
DIV.auto_complete {
	BORDER-RIGHT: #888 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #888 1px =
solid; PADDING-LEFT: 0px; Z-INDEX: 100; PADDING-BOTTOM: 0px; MARGIN: =
0px; BORDER-LEFT: #888 1px solid; WIDTH: 250px; PADDING-TOP: 0px; =
BORDER-BOTTOM: #888 1px solid; POSITION: absolute; BACKGROUND-COLOR: =
white
}
DIV.auto_complete UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV.auto_complete UL LI.selected {
	COLOR: white; BACKGROUND-COLOR: blue
}
DIV.auto_complete UL LI {
	PADDING-RIGHT: 2px; DISPLAY: block; PADDING-LEFT: 2px; PADDING-BOTTOM: =
2px; MARGIN: 0px; CURSOR: pointer; PADDING-TOP: 2px; LIST-STYLE-TYPE: =
none
}
.previewBox {
	BORDER-RIGHT: 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: 1px solid; =
DISPLAY: none; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: =
1px solid; WIDTH: 95%; PADDING-TOP: 10px; BORDER-BOTTOM: 1px solid; =
HEIGHT: 325px; BACKGROUND-COLOR: #eeeeee
}
.previewBar1 {
	CLEAR: both; PADDING-RIGHT: 0.5em; DISPLAY: block; PADDING-LEFT: 0.5em; =
FLOAT: none; PADDING-BOTTOM: 0.5em; PADDING-TOP: 0.5em; =
BACKGROUND-COLOR: #ffffff
}
.previewBar2 {
	DISPLAY: block; FONT-WEIGHT: bold; WIDTH: 100%; BORDER-BOTTOM: #cccccc =
1px solid; HEIGHT: 20px
}
.previewContent {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 0.5em; =
OVERFLOW: auto; PADDING-TOP: 0.5em; HEIGHT: 280px; BACKGROUND-COLOR: =
#ffffff
}
.txtHidden {
	LEFT: 0px; OVERFLOW: hidden; WIDTH: 1px; POSITION: absolute; TOP: =
-500px; HEIGHT: 1px
}
.font1 {
	FONT-SIZE: 0.8em
}
.font2 {
	FONT-SIZE: 0.9em
}
.font3 {
	FONT-SIZE: 1em
}
.font4 {
	FONT-SIZE: 1.1em
}
.font5 {
	FONT-SIZE: 1.2em
}
.resultRow {
	BORDER-TOP: #eeeeee 1px solid
}
A.blackLink {
	FONT-SIZE: 0.95em; COLOR: #000000
}

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/javascript/swfobject.js

/*! SWFObject v2.2 alpha6 <http://code.google.com/p/swfobject/>
 Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van =
der Sluis
 This software is released under the MIT License =
<http://www.opensource.org/licenses/mit-license.php>
 */
=20
 var swfobject =3D function() {
=20
 var UNDEF =3D "undefined",
 OBJECT =3D "object",
 SHOCKWAVE_FLASH =3D "Shockwave Flash",
 SHOCKWAVE_FLASH_AX =3D "ShockwaveFlash.ShockwaveFlash",
 FLASH_MIME_TYPE =3D "application/x-shockwave-flash",
 EXPRESS_INSTALL_ID =3D "SWFObjectExprInst",
=20
 win =3D window,
 doc =3D document,
 nav =3D navigator,
=20
 plugin =3D false,
 domLoadFnArr =3D [main],
 regObjArr =3D [],
 objIdArr =3D [],
 listenersArr =3D [],
 storedAltContent =3D null,
 storedAltContentId =3D null,
 isDomLoaded =3D false,
 isExpressInstallActive =3D false,
 dynamicStylesheet =3D null,
 dynamicStylesheetMedia =3D null;
=20
 /* Centralized function for browser feature detection
 - Proprietary feature detection (conditional compiling) is used to =
detect Internet Explorer's features
 - User agent string detection is only used when no alternative is =
possible
 - Is executed directly for optimal performance
 */=20
 var ua =3D function() {
 var w3cdom =3D typeof doc.getElementById !=3D UNDEF && typeof =
doc.getElementsByTagName !=3D UNDEF && typeof doc.createElement !=3D =
UNDEF,
 playerVersion =3D [0,0,0],
 d =3D null;
 if (typeof nav.plugins !=3D UNDEF && typeof =
nav.plugins[SHOCKWAVE_FLASH] =3D=3D OBJECT) {
 d =3D nav.plugins[SHOCKWAVE_FLASH].description;
 if (d && !(typeof nav.mimeTypes !=3D UNDEF && =
nav.mimeTypes[FLASH_MIME_TYPE] && =
!nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // =
navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin =
indicates whether plug-ins are enabled or disabled in Safari 3+
 plugin =3D true;
 d =3D d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
 playerVersion[0] =3D parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
 playerVersion[1] =3D parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
 playerVersion[2] =3D /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, =
"$1"), 10) : 0;
 }
 }
 else if (typeof win.ActiveXObject !=3D UNDEF) {
 try {
 var a =3D new ActiveXObject(SHOCKWAVE_FLASH_AX);
 if (a) { // a will return null when ActiveX is disabled
 d =3D a.GetVariable("$version");
 if (d) {
 d =3D d.split(" ")[1].split(",");
 playerVersion =3D [parseInt(d[0], 10), parseInt(d[1], 10), =
parseInt(d[2], 10)];
 }
 }
 }
 catch(e) {}
 }
 var u =3D nav.userAgent.toLowerCase(),
 p =3D nav.platform.toLowerCase(),
 webkit =3D /webkit/.test(u) ? =
parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // =
returns either the webkit version or false if not webkit
 ie =3D false,
 windows =3D p ? /win/.test(p) : /win/.test(u),
 mac =3D p ? /mac/.test(p) : /mac/.test(u);
 /*@cc_on
 ie =3D true;
 @if (@_win32)
 windows =3D true;
 @elif (@_mac)
 mac =3D true;
 @end
 @*/
 return { w3cdom:w3cdom, pv:playerVersion, webkit:webkit, ie:ie, =
win:windows, mac:mac };
 }();
=20
 /* Cross-browser onDomLoad
 - Will fire an event as soon as the DOM of a web page is loaded
 - Internet Explorer workaround based on Diego Perini's solution: =
http://javascript.nwbox.com/IEContentLoaded/
 - Regular onload serves as fallback
 */
 var onDomLoad =3D function() {
 if (!ua.w3cdom) { return; }
 if ((typeof doc.readyState !=3D UNDEF && doc.readyState =3D=3D =
"complete") || (typeof doc.readyState =3D=3D UNDEF && =
(doc.getElementsByTagName("body")[0] || doc.body))) { // function is =
fired after onload, e.g. when script is inserted dynamically
 callDomLoadFunctions();
 }
 if (!isDomLoaded) {
 if (typeof doc.addEventListener !=3D UNDEF) {
 doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false);
 }=20
 if (ua.ie && ua.win) {
 doc.attachEvent("onreadystatechange", function() {
 if (doc.readyState =3D=3D "complete") {
 doc.detachEvent("onreadystatechange", arguments.callee);
 callDomLoadFunctions();
 }
 });
 if (win =3D=3D top) { // if not inside an iframe
 (function(){
 if (isDomLoaded) { return; }
 try {
 doc.documentElement.doScroll("left");
 }
 catch(e) {
 setTimeout(arguments.callee, 0);
 return;
 }
 callDomLoadFunctions();
 })();
 }
 }
 if (ua.webkit) {
 (function(){
 if (isDomLoaded) { return; }
 if (!/loaded|complete/.test(doc.readyState)) {
 setTimeout(arguments.callee, 0);
 return;
 }
 callDomLoadFunctions();
 })();
 }
 addLoadEvent(callDomLoadFunctions);
 }
 }();
=20
 function callDomLoadFunctions() {
 if (isDomLoaded) { return; }
 try { // test if we can really add/remove elements to/from the DOM; we =
don't want to fire it too early
 var t =3D =
doc.getElementsByTagName("body")[0].appendChild(createElement("span"));
 t.parentNode.removeChild(t);
 }
 catch (e) { return; }
 isDomLoaded =3D true;
 var dl =3D domLoadFnArr.length;
 for (var i =3D 0; i < dl; i++) {
 domLoadFnArr[i]();
 }
 }
=20
 function addDomLoadEvent(fn) {
 if (isDomLoaded) {
 fn();
 }
 else {
 domLoadFnArr[domLoadFnArr.length] =3D fn; // Array.push() is only =
available in IE5.5+
 }
 }
=20
 /* Cross-browser onload
 - Based on James Edwards' solution: =
http://brothercake.com/site/resources/scripts/onload/
 - Will fire an event as soon as a web page including all of its assets =
are loaded
 */
 function addLoadEvent(fn) {
 if (typeof win.addEventListener !=3D UNDEF) {
 win.addEventListener("load", fn, false);
 }
 else if (typeof doc.addEventListener !=3D UNDEF) {
 doc.addEventListener("load", fn, false);
 }
 else if (typeof win.attachEvent !=3D UNDEF) {
 addListener(win, "onload", fn);
 }
 else if (typeof win.onload =3D=3D "function") {
 var fnOld =3D win.onload;
 win.onload =3D function() {
 fnOld();
 fn();
 };
 }
 else {
 win.onload =3D fn;
 }
 }
=20
 /* Main function
 - Will preferably execute onDomLoad, otherwise onload (as a fallback)
 */
 function main() {
 if (plugin) {
 testPlayerVersion();
 }
 else {
 matchVersions();
 }
 }
=20
 /* Detect the Flash Player version for non-Internet Explorer browsers
 - Detecting the plug-in version via the object element is more precise =
than using the plugins collection item's description:
 a. Both release and build numbers can be detected
 b. Avoid wrong descriptions by corrupt installers provided by Adobe
 c. Avoid wrong descriptions by multiple Flash Player entries in the =
plugin Array, caused by incorrect browser imports
 - Disadvantage of this method is that it depends on the availability of =
the DOM, while the plugins collection is immediately available
 */
 function testPlayerVersion() {
 var b =3D doc.getElementsByTagName("body")[0];
 var o =3D createElement("object");
 o.setAttribute("type", FLASH_MIME_TYPE);
 var t =3D b.appendChild(o);
 if (t) {
 var counter =3D 0;
 (function(){
 if (typeof t.GetVariable !=3D "undefined") {
 var d =3D t.GetVariable("$version");
 if (d) {
 d =3D d.split(" ")[1].split(",");
 ua.pv =3D [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
 }
 }
 else if (counter < 10) {
 counter++;
 setTimeout(arguments.callee, 10);
 return;
 }
 b.removeChild(o);
 t =3D null;
 matchVersions();
 })();
 }
 else {
 matchVersions();
 }
 }
=20
 /* Perform Flash Player and SWF version matching; static publishing =
only
 */
 function matchVersions() {
 var rl =3D regObjArr.length;
 if (rl > 0) {
 for (var i =3D 0; i < rl; i++) { // for each registered object element
 var id =3D regObjArr[i].id;
 if (ua.pv[0] > 0) {
 var obj =3D getElementById(id);
 if (obj) {
 regObjArr[i].width =3D obj.getAttribute("width") || "0";
 regObjArr[i].height =3D obj.getAttribute("height") || "0";
 if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.webkit && =
ua.webkit < 312)) { // Flash Player version >=3D published SWF version: =
Houston, we have a match!
 setVisibility(id, true);
 }
 else if (regObjArr[i].expressInstall && !isExpressInstallActive && =
hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.webkit && =
ua.webkit < 312)) { // show the Adobe Express Install dialog if set by =
the web page author and if supported (fp6.0.65+ on Win/Mac OS only)
 showExpressInstall(regObjArr[i]);
 }
 else { // Flash Player and SWF version mismatch or an older Webkit =
engine that ignores the HTML object element's nested param elements: =
display alternative content instead of SWF
 displayAltContent(obj);
 }
 }
 }
 else { // if no Flash Player is installed or the fp version cannot be =
detected we let the HTML object element do its job (either show a SWF or =
alternative content)
 setVisibility(id, true);
 }
 }
 }
 }
=20
 /* Show the Adobe Express Install dialog
 - Reference: =
http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=3D6a253b75
 */
 function showExpressInstall(regObj) {
 isExpressInstallActive =3D true;
 var obj =3D getElementById(regObj.id);
 if (obj) {
 if (regObj.altContentId) {
 var ac =3D getElementById(regObj.altContentId);
 if (ac) {
 storedAltContent =3D ac;
 storedAltContentId =3D regObj.altContentId;
 }
 }
 else {
 storedAltContent =3D abstractAltContent(obj);
 }
 if (!(/%$/.test(regObj.width)) && parseInt(regObj.width, 10) < 310) {
 regObj.width =3D "310";
 }
 if (!(/%$/.test(regObj.height)) && parseInt(regObj.height, 10) < 137) {
 regObj.height =3D "137";
 }
 doc.title =3D doc.title.slice(0, 47) + " - Flash Player Installation";
 var pt =3D ua.ie && ua.win ? "ActiveX" : "PlugIn",
 dt =3D doc.title,
 fv =3D "MMredirectURL=3D" + win.location + "&MMplayerType=3D" + pt + =
"&MMdoctitle=3D" + dt,
 replaceId =3D regObj.id;
 // For IE when a SWF is loading (AND: not available in cache) wait for =
the onload event to fire to remove the original object element
 // In IE you cannot properly cancel a loading SWF file without breaking =
browser load references, also obj.onreadystatechange doesn't work
 if (ua.ie && ua.win && obj.readyState !=3D 4) {
 var newObj =3D createElement("div");
 replaceId +=3D "SWFObjectNew";
 newObj.setAttribute("id", replaceId);
 obj.parentNode.insertBefore(newObj, obj); // Insert placeholder div =
that will be replaced by the object element that loads =
expressinstall.swf
 obj.style.display =3D "none";
 var fn =3D function() {
 obj.parentNode.removeChild(obj);
 };
 addListener(win, "onload", fn);
 }
 createSWF({ data:regObj.expressInstall, id:EXPRESS_INSTALL_ID, =
width:regObj.width, height:regObj.height }, { flashvars:fv }, =
replaceId);
 }
 }
=20
 /* Functions to abstract and display alternative content
 */
 function displayAltContent(obj) {
 if (ua.ie && ua.win && obj.readyState !=3D 4) {
 // For IE when a SWF is loading (AND: not available in cache) wait for =
the onload event to fire to remove the original object element
 // In IE you cannot properly cancel a loading SWF file without breaking =
browser load references, also obj.onreadystatechange doesn't work
 var el =3D createElement("div");
 obj.parentNode.insertBefore(el, obj); // Insert placeholder div that =
will be replaced by the alternative content
 el.parentNode.replaceChild(abstractAltContent(obj), el);
 obj.style.display =3D "none";
 var fn =3D function() {
 obj.parentNode.removeChild(obj);
 };
 addListener(win, "onload", fn);
 }
 else {
 obj.parentNode.replaceChild(abstractAltContent(obj), obj);
 }
 }
=20
 function abstractAltContent(obj) {
 var ac =3D createElement("div");
 if (ua.win && ua.ie) {
 ac.innerHTML =3D obj.innerHTML;
 }
 else {
 var nestedObj =3D obj.getElementsByTagName(OBJECT)[0];
 if (nestedObj) {
 var c =3D nestedObj.childNodes;
 if (c) {
 var cl =3D c.length;
 for (var i =3D 0; i < cl; i++) {
 if (!(c[i].nodeType =3D=3D 1 && c[i].nodeName =3D=3D "PARAM") && =
!(c[i].nodeType =3D=3D 8)) {
 ac.appendChild(c[i].cloneNode(true));
 }
 }
 }
 }
 }
 return ac;
 }
=20
 /* Cross-browser dynamic SWF creation
 */
 function createSWF(attObj, parObj, id) {
 if (ua.webkit && ua.webkit < 312) { return false; }
 var r, el =3D getElementById(id);
 if (el) {
 if (typeof attObj.id =3D=3D UNDEF) { // if no 'id' is defined for the =
object element, it will inherit the 'id' from the alternative content
 attObj.id =3D id;
 }
 if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + =
W3C DOM methods do not combine: fall back to outerHTML
 var att =3D "";
 for (var i in attObj) {
 if (attObj[i] !=3D Object.prototype[i]) { // filter out prototype =
additions from other potential libraries
 if (i.toLowerCase() =3D=3D "data") {
 parObj.movie =3D attObj[i];
 }
 else if (i.toLowerCase() =3D=3D "styleclass") { // 'class' is an ECMA4 =
reserved keyword
 att +=3D ' class=3D"' + attObj[i] + '"';
 }
 else if (i.toLowerCase() !=3D "classid") {
 att +=3D ' ' + i + '=3D"' + attObj[i] + '"';
 }
 }
 }
 var par =3D "";
 for (var j in parObj) {
 if (parObj[j] !=3D Object.prototype[j]) { // filter out prototype =
additions from other potential libraries
 par +=3D '<param name=3D"' + j + '" value=3D"' + parObj[j] + '" />';
 }
 }
 el.outerHTML =3D '<object =
classid=3D"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + att + '>' + =
par + '</object>';
 objIdArr[objIdArr.length] =3D attObj.id; // stored to fix object =
'leaks' on unload (dynamic publishing only)
 r =3D getElementById(attObj.id);=20
 }
 else { // well-behaving browsers
 var o =3D createElement(OBJECT);
 o.setAttribute("type", FLASH_MIME_TYPE);
 for (var m in attObj) {
 if (attObj[m] !=3D Object.prototype[m]) { // filter out prototype =
additions from other potential libraries
 if (m.toLowerCase() =3D=3D "styleclass") { // 'class' is an ECMA4 =
reserved keyword
 o.setAttribute("class", attObj[m]);
 }
 else if (m.toLowerCase() !=3D "classid") { // filter out IE specific =
attribute
 o.setAttribute(m, attObj[m]);
 }
 }
 }
 for (var n in parObj) {
 if (parObj[n] !=3D Object.prototype[n] && n.toLowerCase() !=3D "movie") =
{ // filter out prototype additions from other potential libraries and =
IE specific param element
 createObjParam(o, n, parObj[n]);
 }
 }
 el.parentNode.replaceChild(o, el);
 r =3D o;
 }
 }
 return r;
 }
=20
 function createObjParam(el, pName, pValue) {
 var p =3D createElement("param");
 p.setAttribute("name", pName);=20
 p.setAttribute("value", pValue);
 el.appendChild(p);
 }
=20
 /* Cross-browser SWF removal
 - Especially needed to safely and completely remove a SWF in Internet =
Explorer
 */
 function removeSWF(id) {
 var obj =3D getElementById(id);
 if (obj && (obj.nodeName =3D=3D "OBJECT" || obj.nodeName =3D=3D =
"EMBED")) {
 if (ua.ie && ua.win) {
 if (obj.readyState =3D=3D 4) {
 removeObjectInIE(id);
 }
 else {
 win.attachEvent("onload", function() {
 removeObjectInIE(id);
 });
 }
 }
 else {
 obj.parentNode.removeChild(obj);
 }
 }
 }
=20
 function removeObjectInIE(id) {
 var obj =3D getElementById(id);
 if (obj) {
 for (var i in obj) {
 if (typeof obj[i] =3D=3D "function") {
 obj[i] =3D null;
 }
 }
 obj.parentNode.removeChild(obj);
 }
 }
=20
 /* Functions to optimize JavaScript compression
 */
 function getElementById(id) {
 var el =3D null;
 try {
 el =3D doc.getElementById(id);
 }
 catch (e) {}
 return el;
 }
=20
 function createElement(el) {
 return doc.createElement(el);
 }
=20
 /* Updated attachEvent function for Internet Explorer
 - Stores attachEvent information in an Array, so on unload the =
detachEvent functions can be called to avoid memory leaks
 */=20
 function addListener(target, eventType, fn) {
 target.attachEvent(eventType, fn);
 listenersArr[listenersArr.length] =3D [target, eventType, fn];
 }
=20
 /* Flash Player and SWF content version matching
 */
 function hasPlayerVersion(rv) {
 var pv =3D ua.pv, v =3D rv.split(".");
 v[0] =3D parseInt(v[0], 10);
 v[1] =3D parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" =
instead of "9.0.0"
 v[2] =3D parseInt(v[2], 10) || 0;
 return (pv[0] > v[0] || (pv[0] =3D=3D v[0] && pv[1] > v[1]) || (pv[0] =
=3D=3D v[0] && pv[1] =3D=3D v[1] && pv[2] >=3D v[2])) ? true : false;
 }
=20
 /* Cross-browser dynamic CSS creation
 - Based on Bobby van der Sluis' solution: =
http://www.bobbyvandersluis.com/articles/dynamicCSS.php
 */=20
 function createCSS(sel, decl, media, newStyle) {
 if (ua.ie && ua.mac) { return; }
 var h =3D doc.getElementsByTagName("head")[0];
 if (!h) { return; } // to also support badly authored HTML pages that =
lack a head element
 var m =3D (media && typeof media =3D=3D "string") ? media : "screen";
 if (newStyle || (dynamicStylesheet && !dynamicStylesheet.parentNode)) { =
// test if style element hasn't been removed externally
 dynamicStylesheet =3D null;
 dynamicStylesheetMedia =3D null;
 }
 if (!dynamicStylesheet || dynamicStylesheetMedia !=3D m) {=20
 // create dynamic stylesheet + get a global reference to it
 var s =3D createElement("style");
 s.setAttribute("type", "text/css");
 s.setAttribute("media", m);
 dynamicStylesheet =3D h.appendChild(s);
 if (ua.ie && ua.win && typeof doc.styleSheets !=3D UNDEF && =
doc.styleSheets.length > 0) {
 dynamicStylesheet =3D doc.styleSheets[doc.styleSheets.length - 1];
 }
 dynamicStylesheetMedia =3D m;
 }
 // add style rule
 if (ua.ie && ua.win) {
 if (dynamicStylesheet && typeof dynamicStylesheet.addRule =3D=3D =
OBJECT) {
 dynamicStylesheet.addRule(sel, decl);
 }
 }
 else {
 if (dynamicStylesheet && typeof doc.createTextNode !=3D UNDEF) {
 dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + =
"}"));
 }
 }
 }
=20
 function setVisibility(id, isVisible) {
 var v =3D isVisible ? "visible" : "hidden";
 if (isDomLoaded && getElementById(id)) {
 getElementById(id).style.visibility =3D v;
 }
 else {
 createCSS("#" + id, "visibility:" + v);
 }
 }
=20
 /* Filter to avoid XSS attacks=20
 */
 function urlEncodeIfNecessary(s) {
 var regex =3D /[\\\"<>\.;]/;
 var hasBadChars =3D regex.exec(s) !=3D null;
 return hasBadChars ? encodeURIComponent(s) : s;
 }
=20
 /* Release memory to avoid memory leaks caused by closures, fix hanging =
audio/video threads and force open sockets/NetConnections to disconnect =
(Internet Explorer only)
 */
 var cleanup =3D function() {
 if (ua.ie && ua.win) {
 window.attachEvent("onunload", function() {
 // remove listeners to avoid memory leaks
 var ll =3D listenersArr.length;
 for (var i =3D 0; i < ll; i++) {
 listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]);
 }
 // cleanup dynamically embedded objects to fix audio/video threads and =
force open sockets and NetConnections to disconnect
 var il =3D objIdArr.length;
 for (var j =3D 0; j < il; j++) {
 removeSWF(objIdArr[j]);
 }
 // cleanup library's main closures to avoid memory leaks
 for (var k in ua) {
 ua[k] =3D null;
 }
 ua =3D null;
 for (var l in swfobject) {
 swfobject[l] =3D null;
 }
 swfobject =3D null;
 });
 }
 }();
=20
 return {
 /* Public API
 - Reference: http://code.google.com/p/swfobject/wiki/documentation
 */=20
 registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr) {
 if (!ua.w3cdom || !objectIdStr || !swfVersionStr) { return; }
 var regObj =3D {};
 regObj.id =3D objectIdStr;
 regObj.swfVersion =3D swfVersionStr;
 regObj.expressInstall =3D xiSwfUrlStr;
 regObjArr[regObjArr.length] =3D regObj;
 setVisibility(objectIdStr, false);
 },
=20
 getObjectById: function(objectIdStr) {
 var r =3D null;
 if (ua.w3cdom) {
 var o =3D getElementById(objectIdStr);
 if (o) {
 var n =3D o.getElementsByTagName(OBJECT)[0];
 if (!n || (n && typeof o.SetVariable !=3D UNDEF)) {
 r =3D o;
 }
 else if (typeof n.SetVariable !=3D UNDEF) {
 r =3D n;
 }
 }
 }
 return r;
 },
=20
 embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, =
swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj) {
 if (!ua.w3cdom || !swfUrlStr || !replaceElemIdStr || !widthStr || =
!heightStr || !swfVersionStr || (ua.webkit && ua.webkit < 312)) { =
return; }
 widthStr +=3D ""; // auto-convert to string
 heightStr +=3D "";
 setVisibility(replaceElemIdStr, false);
 addDomLoadEvent(function() {
 if (hasPlayerVersion(swfVersionStr)) { // create SWF
 var att =3D {};
 if (attObj && typeof attObj =3D=3D=3D OBJECT) {
 for (var i in attObj) { // copy object to avoid the use of references, =
because web authors often reuse attObj for multiple SWFs
 att[i] =3D attObj[i];
 }
 }
 att.data =3D swfUrlStr;
 att.width =3D widthStr;
 att.height =3D heightStr;
 var par =3D {};=20
 if (parObj && typeof parObj =3D=3D=3D OBJECT) {
 for (var j in parObj) { // copy object to avoid the use of references, =
because web authors often reuse parObj for multiple SWFs
 par[j] =3D parObj[j];
 }
 }
 if (flashvarsObj && typeof flashvarsObj =3D=3D=3D OBJECT) {
 for (var k in flashvarsObj) { // copy object to avoid the use of =
references, because web authors often reuse flashvarsObj for multiple =
SWFs
 if (typeof par.flashvars !=3D UNDEF) {
 par.flashvars +=3D "&" + k + "=3D" + flashvarsObj[k];
 }
 else {
 par.flashvars =3D k + "=3D" + flashvarsObj[k];
 }
 }
 }
 createSWF(att, par, replaceElemIdStr);
 if (att.id =3D=3D replaceElemIdStr) {
 setVisibility(replaceElemIdStr, true);
 }
 }
 else if (xiSwfUrlStr && !isExpressInstallActive && =
hasPlayerVersion("6.0.65") && (ua.win || ua.mac)) { // show Adobe =
Express Install
 isExpressInstallActive =3D true;
 var regObj =3D {};
 regObj.id =3D regObj.altContentId =3D replaceElemIdStr;
 regObj.width =3D widthStr;
 regObj.height =3D heightStr;
 regObj.expressInstall =3D xiSwfUrlStr;
 showExpressInstall(regObj);
 }
 else {
 setVisibility(replaceElemIdStr, true); // show alternative content
 }
 });
 },
=20
 getFlashPlayerVersion: function() {
 return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] };
 },
=20
 hasFlashPlayerVersion: hasPlayerVersion,
=20
 createSWF: function(attObj, parObj, replaceElemIdStr) {
 if (ua.w3cdom) {
 return createSWF(attObj, parObj, replaceElemIdStr);
 }
 else {
 return undefined;
 }
 },
=20
 removeSWF: function(objElemIdStr) {
 if (ua.w3cdom) {
 removeSWF(objElemIdStr);
 }
 },
=20
 createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) {
 if (ua.w3cdom) {
 createCSS(selStr, declStr, mediaStr, newStyleBoolean);
 }
 },
=20
 addDomLoadEvent: addDomLoadEvent,
=20
 addLoadEvent: addLoadEvent,
=20
 getQueryParamValue: function(param) {
 var q =3D doc.location.search || doc.location.hash;
 if (param =3D=3D null) {
 return urlEncodeIfNecessary(q);
 }
 if (q) {
 var pairs =3D q.substring(1).split("&");
 for (var i =3D 0; i < pairs.length; i++) {
 if (pairs[i].substring(0, pairs[i].indexOf("=3D")) =3D=3D param) {
 return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=3D") =
+ 1)));
 }
 }
 }
 return "";
 },
=20
 // For internal usage only
 expressInstallCallback: function() {
 if (isExpressInstallActive && storedAltContent) {
 var obj =3D getElementById(EXPRESS_INSTALL_ID);
 if (obj) {
 obj.parentNode.replaceChild(storedAltContent, obj);
 if (storedAltContentId) {
 setVisibility(storedAltContentId, true);
 if (ua.ie && ua.win) {
 storedAltContent.style.display =3D "block";
 }
 }
 storedAltContent =3D null;
 storedAltContentId =3D null;
 isExpressInstallActive =3D false;
 }
 }=20
 }
 };
 }();
 
------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/javascript/article.js

//infoBubble.js=0A=
var OPAC =3D 0;=0A=
var aFrame;=0A=
var frameWidth =3D 10;=0A=
var InfoBubble =3D {=0A=
=0A=
  bubbleTimeout: 1,=0A=
  currentBubble: null,=0A=
  timeoutBubbleID: null,=0A=
  currentLink: null,=0A=
=0A=
  show: function(aID, bID,fID) {=0A=
    var disableFade =3D 0;=0A=
    if(this.currentBubble) {=0A=
      disableFade =3D 1;=0A=
    }=0A=
    var aBubble =3D document.getElementById(aID);=0A=
    aFrame=3Ddocument.getElementById(fID);=0A=
    if(aBubble && aBubble !=3D this.currentBubble) {=0A=
      this.hide();=0A=
      var aBubbleLink =3D document.getElementById(bID);=0A=
      aBubbleLink.style.background =3D '#EFEFEF';=0A=
      this.currentLink =3D aBubbleLink;=0A=
=0A=
      aBubble.style.display =3D 'block';=0A=
      var heightFromTop =3D findPosY(aBubble) - document.body.scrollTop;=0A=
      if(getWindowHeight() < (aBubble.offsetHeight + heightFromTop)) {=0A=
        aBubble.style.top =3D (getWindowHeight() - (aBubble.offsetHeight =
+ heightFromTop)) - 5;=0A=
      }=0A=
      else {=0A=
        if(heightFromTop < 0) {=0A=
          aBubble.style.top =3D (Math.abs(heightFromTop)) + 5;=0A=
        }=0A=
        else {=0A=
          aBubble.style.top =3D 5;=0A=
        }=0A=
      }=0A=
      if(aFrame){=0A=
        aFrame.style.top  =3D aBubble.offsetTop + "px";=0A=
        aFrame.style.left =3D -(aBubble.offsetWidth+frameWidth) + "px";=0A=
        aFrame.style.width =3D aBubble.offsetWidth + "px";=0A=
        aFrame.style.height =3D aBubble.offsetHeight + "px";=0A=
        aFrame.style.display =3D "block";=0A=
        this.currentFrame =3D aFrame;=0A=
      }=0A=
      this.currentBubble =3D aBubble;=0A=
   }=0A=
=0A=
    if(this.timeoutBubbleID) {=0A=
      clearTimeout(this.timeoutBubbleID);=0A=
    }=0A=
  },=0A=
=0A=
  hide: function() {=0A=
    if(this.currentBubble) {=0A=
      this.currentLink.style.background =3D '#F6F6F6';=0A=
      this.currentBubble.style.display =3D 'none';=0A=
      if(aFrame){=0A=
        this.currentFrame.style.display =3D 'none';=0A=
      }=0A=
      this.currentBubble.style.top =3D 0;=0A=
      this.currentBubble =3D null;=0A=
      if(this.timeoutBubbleID) {=0A=
        clearTimeout(this.timeoutBubbleID);=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  timeout: function() {=0A=
      this.timeoutBubbleID =3D setTimeout('InfoBubble.hide()', =
this.bubbleTimeout * 1000);=0A=
  },=0A=
=0A=
  fadeIn: function() {=0A=
    if(this.currentBubble) {=0A=
      OPAC =3D OPAC + .10;=0A=
      OPAC =3D (OPAC>1)?1:OPAC;=0A=
      this.currentBubble.style.filter =3D =
'alpha(opacity=3D'+parseInt(100*OPAC)+')';=0A=
      this.currentBubble.style.opacity =3D OPAC;=0A=
      if(OPAC<1) {=0A=
        setTimeout('InfoBubble.fadeIn()',25);=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
function findPosY(obj) {=0A=
  var curtop =3D 0;=0A=
  if(obj.offsetParent) {=0A=
    while(1) {=0A=
      curtop +=3D obj.offsetTop;=0A=
      if(!obj.offsetParent) { break; }=0A=
        obj =3D obj.offsetParent;=0A=
      }=0A=
  }=0A=
  else if(obj.y) {=0A=
    curtop +=3D obj.y;=0A=
  }=0A=
  return curtop;=0A=
}=0A=
=0A=
function getWindowHeight() {=0A=
  var windowHeight=3D0;=0A=
  if(typeof(window.innerHeight) =3D=3D 'number') {=0A=
    windowHeight =3D window.innerHeight;=0A=
  }=0A=
  else {=0A=
    if(document.documentElement && =
document.documentElement.clientHeight) {=0A=
      windowHeight =3D document.documentElement.clientHeight;=0A=
    }=0A=
    else {=0A=
      if(document.body && document.body.clientHeight) {=0A=
        windowHeight =3D document.body.clientHeight;=0A=
      }=0A=
    }=0A=
  }=0A=
  return windowHeight;=0A=
}=0A=
=0A=
function toggleMLKT(uoi, imgDefault, imgFlip, urlPrefix) {=0A=
  var mlktItems =3D document.getElementById('mlkt');=0A=
  if(mlktItems.style.display =3D=3D "none") {=0A=
    var mlktList =3D document.getElementById('mlktList');=0A=
    mlktItems.style.display =3D '';=0A=
    document.getElementById('mlktArrow').src =3D imgDefault;=0A=
    if(mlktList.innerHTML.length =3D=3D 0) {=0A=
      mlktList.innerHTML =3D '<b>LOADING...</b>';=0A=
=0A=
      new Ajax.Updater('mlktList', urlPrefix+'/mlkt/2/'+uoi, =
{method:'get'});=0A=
    }=0A=
    else {=0A=
      new Ajax.Request(urlPrefix+'/mlkt/1', {method:'get'});=0A=
    }=0A=
  }=0A=
  else {=0A=
    mlktItems.style.display =3D 'none';=0A=
    document.getElementById('mlktArrow').src =3D imgFlip;=0A=
    new Ajax.Request(urlPrefix+'/mlkt/0', {method:'get'});=0A=
  }=0A=
}=0A=
=0A=
function mlktHover(hoverOver, imgPrefix) {=0A=
  var mlktItems =3D document.getElementById('mlkt');=0A=
  var mlktImg =3D document.getElementById('mlktArrow');=0A=
  if(mlktItems.style.display =3D=3D "none") {=0A=
    if(hoverOver =3D=3D 1) {=0A=
      mlktImg.src =3D imgPrefix + 'btn_arrow_down_on.gif';=0A=
    }=0A=
    else {=0A=
      mlktImg.src =3D imgPrefix + 'btn_arrow_down_off.gif';=0A=
    }=0A=
  }=0A=
  else {=0A=
    if(hoverOver =3D=3D 1) {=0A=
      mlktImg.src =3D imgPrefix + 'btn_arrow_up_on.gif';=0A=
    }=0A=
    else {=0A=
      mlktImg.src =3D imgPrefix + 'btn_arrow_up_off.gif';=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
// referenceBubble.js=0A=
var RefPreview =3D {=0A=
=0A=
  previewTimeout: 1,=0A=
  currentPreview: null,=0A=
  timeoutPreviewID: null,=0A=
=0A=
  showRef: function(event, elemId, boxId) {=0A=
  var disableFade =3D 0;=0A=
  if(this.currentPreview) {=0A=
    disableFade =3D 1;=0A=
  }=0A=
  var refPrev =3D document.getElementById(boxId);=0A=
  var reference =3D document.getElementById(elemId);=0A=
  if(reference =3D=3D null || reference.innerHTML.length <=3D 0) { =
return; }=0A=
=0A=
    if (document.getElementById('refCon') !=3D null) {=0A=
      var d =3D document.getElementById('refCon');=0A=
      d.parentNode.removeChild( d );=0A=
    }=0A=
=0A=
    var newSpan =3D document.createElement("span");=0A=
    newSpan.setAttribute('id', 'refCon');=0A=
    newSpan.innerHTML =3D reference.innerHTML;=0A=
    refPrev.appendChild(newSpan);=0A=
=0A=
    if(refPrev !=3D this.currentPreview) {=0A=
      this.hide();=0A=
      if(disableFade =3D=3D 0) {=0A=
        refPrev.style.filter =3D 'alpha(opacity=3D0)';=0A=
        refPrev.style.opacity =3D 0;=0A=
      }=0A=
      else {=0A=
        refPrev.style.filter =3D '';=0A=
        refPrev.style.opacity =3D '';=0A=
      }=0A=
      var x =3D 0;=0A=
      var y =3D 0;=0A=
=0A=
      var maxX;=0A=
      var maxY;=0A=
=0A=
      refPrev.style.position=3D"absolute";=0A=
      refPrev.style.display =3D "block";=0A=
      var divX =3D refPrev.offsetWidth;=0A=
      var divY =3D refPrev.offsetHeight;=0A=
=0A=
      if (document.all && !window.opera) {=0A=
        if (document.documentElement && =
document.documentElement.scrollTop) {=0A=
          maxX =3D document.documentElement.clientWidth + =
document.documentElement.scrollLeft - divX;=0A=
          maxY =3D document.documentElement.clientHeight + =
document.documentElement.scrollTop - divY;=0A=
          y =3D event.clientY + document.documentElement.scrollTop + 10;=0A=
          x =3D event.clientX + document.documentElement.scrollLeft + 15;=0A=
        } else {=0A=
          maxX =3D document.body.clientWidth + document.body.scrollLeft =
- divX;=0A=
          maxY =3D document.body.clientHeight + document.body.scrollTop =
- divY;=0A=
=0A=
          y =3D event.clientY + document.body.scrollTop + 10;=0A=
          x =3D event.clientX + document.body.scrollLeft + 15;=0A=
        }=0A=
      } else {=0A=
        maxX =3D window.innerWidth + window.pageXOffset - divX;=0A=
        maxY =3D window.innerHeight + window.pageYOffset - divY;=0A=
=0A=
        y =3D event.pageY + 10;=0A=
        x =3D event.pageX + 15;=0A=
      }=0A=
=0A=
      if (x > maxX) {=0A=
        x =3D maxX - 25;=0A=
      }=0A=
      if (y > maxY) {=0A=
        y =3D maxY - 30;=0A=
      }=0A=
=0A=
      refPrev.style.top =3D y + "px";=0A=
      refPrev.style.left =3D x + "px";=0A=
=0A=
      this.currentPreview =3D refPrev;=0A=
      if(disableFade =3D=3D 0) {=0A=
        setTimeout('RefPreview.fadeIn()',100);=0A=
        OPAC =3D 0;=0A=
      }=0A=
    }=0A=
=0A=
    if(this.timeoutPreviewID) {=0A=
      clearTimeout(this.timeoutPreviewID);=0A=
    }=0A=
  },=0A=
=0A=
  hide: function() {=0A=
    if(this.currentPreview) {=0A=
      this.currentPreview.style.display =3D 'none';=0A=
      this.currentPreview =3D null;=0A=
      if(this.timeoutPreviewID) {=0A=
        clearTimeout(this.timeoutPreviewID);=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  hideRef: function() {=0A=
    if(OPAC =3D=3D 0) {=0A=
      RefPreview.hide();=0A=
    }=0A=
    else {=0A=
      this.timeoutPreviewID =3D setTimeout('RefPreview.hide()', =
this.previewTimeout * 2000);=0A=
    }=0A=
  },=0A=
=0A=
  fadeIn: function() {=0A=
    if(this.currentPreview) {=0A=
      OPAC =3D OPAC + .10;=0A=
      OPAC =3D (OPAC>1)?1:OPAC;=0A=
      this.currentPreview.style.filter =3D =
'alpha(opacity=3D'+parseInt(100*OPAC)+')';=0A=
      this.currentPreview.style.opacity =3D OPAC;=0A=
      if(OPAC<1) {=0A=
        setTimeout('RefPreview.fadeIn()',25);=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
// resizableImages.js=0A=
//_____________  The following arrays are synched with each other...=0A=
var resizableImages =3D new Array();=0A=
var resizableImageBaseWidth =3D new Array();=0A=
var resizableImageLinks =3D new Array();=0A=
//_____________ End of synched arrays=0A=
=0A=
var resizableRefsInitilized =3D 0;=0A=
var NaturalWidthSupported =3D 0;=0A=
=0A=
=0A=
// RESIZE_CLIENT_ADJUST_PX=0A=
//   -- reflects the amount of space for the FAT TAB Inner div=0A=
//      and misc margins (...).=0A=
var RESIZE_CLIENT_ADJUST_PX =3D 405;=0A=
=0A=
function setNaturalWidthSupported(inResizableImage) {=0A=
  if (inResizableImage.naturalWidth)=0A=
  {=0A=
    NaturalWidthSupported =3D 1;=0A=
  } else {=0A=
    NaturalWidthSupported =3D 0;=0A=
  }=0A=
}=0A=
=0A=
function getBaseWidth(inImage) {=0A=
  var baseWidth =3D 0;=0A=
  if (inImage.naturalWidth)=0A=
  {=0A=
    baseWidth =3D inImage.naturalWidth;=0A=
  } else {=0A=
    var imageTargetWidth;=0A=
    var imgClone =3D inImage.cloneNode(0);=0A=
    inImage.className =3D '';=0A=
    inImage.style.width =3D 'auto';=0A=
    inImage.style.height =3D 'auto';=0A=
    inImage.style.borderWidth =3D '0';=0A=
    inImage.style.padding =3D '0';=0A=
    inImage.removeAttribute('width');=0A=
    inImage.removeAttribute('height');=0A=
    baseWidth =3D parseInt(inImage.width);=0A=
    if ((parseInt(document.body.clientWidth)- RESIZE_CLIENT_ADJUST_PX)=0A=
        <  baseWidth)=0A=
    {=0A=
      imageTargetWidth =3D parseInt(document.body.clientWidth)-=0A=
                         RESIZE_CLIENT_ADJUST_PX;=0A=
    }=0A=
    else=0A=
    {=0A=
      imageTargetWidth =3D baseWidth;=0A=
    }=0A=
    inImage.setAttribute('width' , '' + imageTargetWidth + 'px' );=0A=
    inImage.setAttribute('height', 'auto' );=0A=
    inImage.setAttribute('height', imgClone.getAttribute('height') );=0A=
    inImage.style.width =3D "" + imageTargetWidth + "px";=0A=
    inImage.style.height =3D 'auto';=0A=
    inImage.className =3D imgClone.className ;=0A=
    inImage.style.padding =3D imgClone.style.padding ;=0A=
    inImage.style.borderWidth=3D  imgClone.style.borderWidth ;=0A=
  }=0A=
  return(baseWidth);=0A=
}=0A=
=0A=
function initResizableRefs() {=0A=
  if (! resizableRefsInitilized)=0A=
  {=0A=
    var resizableContainers;=0A=
    var currentResizableImages; // should be collection of 1=0A=
    var currentResizableLinks; // should be collection of 1=0A=
=0A=
    resizableContainers =3D getElementsByClassName(document,=0A=
                                                 'DIV',=0A=
                                                 'sizeImgBox');=0A=
    for(var k=3D0;k<resizableContainers.length;k++)=0A=
    {=0A=
      currentResizableImages =3D =
getElementsByClassName(resizableContainers[k],=0A=
                                                      'IMG',=0A=
                                                      'sizeImg');=0A=
      currentResizableLinks  =3D =
getElementsByClassName(resizableContainers[k],=0A=
                                                      'DIV',=0A=
                                                      'sizeImgLink');=0A=
      if ((currentResizableImages.length > 0) &&=0A=
          (currentResizableLinks.length > 0))=0A=
      {=0A=
        resizableImages.push(currentResizableImages[0]);=0A=
        resizableImageLinks.push(currentResizableLinks[0]);=0A=
        resizableImageBaseWidth.push(=0A=
                       getBaseWidth(currentResizableImages[0],=0A=
                                    resizableContainers[k]));=0A=
        if (resizableImages.length =3D=3D 1)=0A=
        {=0A=
          setNaturalWidthSupported(currentResizableImages[0]);=0A=
        }=0A=
      }=0A=
    }=0A=
  }=0A=
  resizableRefsInitilized =3D 1;=0A=
}=0A=
=0A=
function setVisibilityOfResizableImageLinks() {=0A=
  var currentResizableImage;=0A=
  var currentResizableLink;=0A=
=0A=
  initResizableRefs();=0A=
=0A=
  for(var k=3D0;k<resizableImageLinks.length;k++)=0A=
  {=0A=
    if ((parseInt(document.body.clientWidth)-RESIZE_CLIENT_ADJUST_PX)=0A=
        < resizableImageBaseWidth[k])=0A=
    {=0A=
      resizableImageLinks[k].style.display =3D "inline"; // for scaled =
img=0A=
    }=0A=
    else=0A=
    {=0A=
      resizableImageLinks[k].style.display =3D "none";   // for full img=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
function resizeImages() {=0A=
  initResizableRefs();=0A=
  if ( ! NaturalWidthSupported)=0A=
  {=0A=
    var currentResizableImage;=0A=
    var currentResizableLink;=0A=
=0A=
    for(var k=3D0;k<resizableImages.length;k++)=0A=
    {=0A=
      if ((parseInt(document.body.clientWidth)-RESIZE_CLIENT_ADJUST_PX)=0A=
          < resizableImageBaseWidth[k])=0A=
      {=0A=
        targetWidth =3D parseInt(document.body.clientWidth)=0A=
                      - RESIZE_CLIENT_ADJUST_PX;=0A=
      }=0A=
      else=0A=
      {=0A=
        targetWidth =3D resizableImageBaseWidth[k];=0A=
      }=0A=
      if (targetWidth <=3D 0)=0A=
      {=0A=
         targetWidth =3D 5;=0A=
      }=0A=
      resizableImages[k].style.width =3D "" + targetWidth + "px";=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
function resizeImgs() {=0A=
  setVisibilityOfResizableImageLinks();=0A=
  resizeImages();=0A=
}=0A=
=0A=
// scrollableTables.js=0A=
//_____________  The following arrays are synched with each other...=0A=
var scrollableTableDivs =3D new Array();=0A=
var scrollableTables =3D new Array();=0A=
var scrollableTableLinks =3D new Array();=0A=
//_____________ End of synched arrays=0A=
=0A=
var scrollableTableRefsInitilized =3D 0;=0A=
=0A=
// EXTERNAL: RESIZE_CLIENT_ADJUST_PX  -- Defined in resizableTable=0A=
//   -- reflects the amount of space for the FAT TAB Inner div=0A=
//      and misc margins (...).=0A=
// var RESIZE_CLIENT_ADJUST_PX =3D 395;=0A=
=0A=
function initScrollableTableRefs() {=0A=
  if (! scrollableTableRefsInitilized) {=0A=
    var scrollableTableContainers;=0A=
    var currentScrollableTableDivs; // should be collection of 1=0A=
    var currentScrollableTables; // Want first (outermost table)=0A=
    var currentScrollableTableLinks; // should be collection of 1=0A=
    var currentScrollableImg;=0A=
=0A=
    scrollableTableContainers =3D getElementsByClassName(document,=0A=
                                                     'DIV',=0A=
                                                     'tblScrollBox');=0A=
    for(var k=3D0;k<scrollableTableContainers.length;k++)=0A=
    {=0A=
      currentScrollableTableDivs =3D getElementsByClassName(=0A=
                                                  =
scrollableTableContainers[k],=0A=
                                                  'DIV',=0A=
                                                  'tblScroll');=0A=
      currentScrollableTableLinks =3D getElementsByClassName(=0A=
                                                  =
scrollableTableContainers[k],=0A=
                                                  'DIV',=0A=
                                                  'tblScrollLink');=0A=
      if ((currentScrollableTableDivs.length > 0) &&=0A=
          (currentScrollableTableLinks.length > 0))=0A=
      {=0A=
        currentScrollableTables =3D getElementsByClassName(=0A=
                                                  =
currentScrollableTableDivs[0],=0A=
                                                  'TABLE',=0A=
                                                  '*');=0A=
        if (currentScrollableTables.length > 0) {=0A=
          scrollableTableDivs.push(currentScrollableTableDivs[0]);=0A=
          scrollableTables.push(currentScrollableTables[0]);=0A=
          scrollableTableLinks.push(currentScrollableTableLinks[0]);=0A=
        }=0A=
        currentScrollableImg =3D getElementsByClassName(=0A=
                                                  =
currentScrollableTableDivs[0],=0A=
                                                  'IMG',=0A=
                                                  '*');=0A=
        if(currentScrollableImg.length > 0){=0A=
          scrollableTableDivs.push(currentScrollableTableDivs[0]);=0A=
          scrollableTables.push(currentScrollableImg[0]);=0A=
          scrollableTableLinks.push(currentScrollableTableLinks[0]);=0A=
        }=0A=
      }=0A=
    }=0A=
  }=0A=
  scrollableTableRefsInitilized =3D 1;=0A=
}=0A=
=0A=
function setVisibilityOfScrollableTableLinks() {=0A=
  initScrollableTableRefs();=0A=
=0A=
  for(var k=3D0;k<scrollableTableLinks.length;k++) {=0A=
    if (scrollableTableDivs[k].offsetWidth < =
scrollableTables[k].offsetWidth) {=0A=
      scrollableTableLinks[k].style.display =3D "inline"; // Scrolled =
Table=0A=
    } else {=0A=
      scrollableTableLinks[k].style.display =3D "none";   // Full Table=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
function resetScrollableTables() {=0A=
  setVisibilityOfScrollableTableLinks();=0A=
}=0A=
=0A=
// tabChanges.js=0A=
function getElementsByClassName(oElm, strTagName, strClassName){=0A=
  var arrElements =3D (strTagName =3D=3D "*" && oElm.all)? oElm.all : =
oElm.getElementsByTagName(strTagName);=0A=
  var arrReturnElements =3D new Array();=0A=
  strClassName =3D strClassName.replace(/\-/g, "\\-");=0A=
  var oRegExp =3D new RegExp("(^|\\s)" + strClassName + "(\\s|$)");=0A=
  var oElement;=0A=
  for(var i=3D0; i<arrElements.length; i++){=0A=
   oElement =3D arrElements[i];=0A=
   if(oRegExp.test(oElement.className)){=0A=
    arrReturnElements.push(oElement);=0A=
   }=0A=
  }=0A=
  return (arrReturnElements);=0A=
}=0A=
=0A=
function hideElementsByClassName(className, tag)  {=0A=
  var all =3D getElementsByClassName(document, tag, className);=0A=
  for(var k=3D0;k<all.length;k++) {=0A=
    all[k].style.display =3D "none";=0A=
  }=0A=
}=0A=
=0A=
function showElementsByClassName(className, tag)  {=0A=
  var all =3D getElementsByClassName(document, tag, className);=0A=
  for(var k=3D0;k<all.length;k++) {=0A=
    all[k].style.display =3D "inline";=0A=
  }=0A=
}=0A=
=0A=
var graphTabOffLink_OnLoad =3D "";=0A=
var refTabOffLink_OnLoad =3D "";=0A=
function enableTabs()=0A=
{=0A=
  var all;=0A=
  var k;=0A=
=0A=
  var graphTabOffLink =3D document.getElementById('graphTabOffLinkNode');=0A=
  var refTabOffLink =3D document.getElementById('refTabOffLinkNode');=0A=
=0A=
  if (graphTabOffLink)=0A=
  {=0A=
    if (graphTabOffLink_OnLoad !=3D "")=0A=
    {=0A=
      graphTabOffLink.href =3D graphTabOffLink_OnLoad;=0A=
      all =3D getElementsByClassName(graphTabOffLink, 'SPAN', =
'disabledTabLink');=0A=
      for(k=3D0;k<all.length;k++)=0A=
      {=0A=
        all[k].className =3D ""; // remove disabledTabLink class=0A=
      }=0A=
    }=0A=
  }=0A=
=0A=
  if (refTabOffLink)=0A=
  {=0A=
    if (refTabOffLink_OnLoad !=3D "")=0A=
    {=0A=
      refTabOffLink.href =3D refTabOffLink_OnLoad;=0A=
      all =3D getElementsByClassName(refTabOffLink, 'SPAN', =
'disabledTabLink');=0A=
      for(k=3D0;k<all.length;k++)=0A=
      {=0A=
        all[k].className =3D ""; // remove disabledTabLink class=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
function loadUnsubArticle() {=0A=
changeView('unsubTab');=0A=
resizeImgs();=0A=
resetScrollableTables();=0A=
enableTabs();=0A=
}=0A=
=0A=
function changeView(tab) {=0A=
  if(tab =3D=3D 'graphTab') {=0A=
    showElementsByClassName('graphText', 'div');=0A=
    showElementsByClassName('graphTextOnly', 'div');=0A=
    hideElementsByClassName('refText', 'div');=0A=
    hideElementsByClassName('articleText', 'div');=0A=
    hideElementsByClassName('refMsg', 'div');=0A=
    hideElementsByClassName('pdfExcerpt', 'div');=0A=
  }=0A=
  else if(tab =3D=3D 'refTab') {=0A=
    showElementsByClassName('refText', 'div');=0A=
    hideElementsByClassName('articleText', 'div');=0A=
    hideElementsByClassName('graphText', 'div');=0A=
    hideElementsByClassName('graphTextOnly', 'div');=0A=
    showElementsByClassName('refMsg', 'div');=0A=
    hideElementsByClassName('pdfExcerpt', 'div');=0A=
  }=0A=
  else {=0A=
    showElementsByClassName('articleText', 'div');=0A=
    showElementsByClassName('graphText', 'div');=0A=
    hideElementsByClassName('graphTextOnly', 'div');=0A=
    showElementsByClassName('refText', 'div');=0A=
    hideElementsByClassName('refMsg', 'div');=0A=
    showElementsByClassName('pdfExcerpt', 'div');=0A=
  }=0A=
  MMCvArtTabSwitch(tab); // Multimedia viewer=0A=
}=0A=
=0A=
function flip(e){=0A=
  var menustyle =3D eval(getStyleObj(e))=0A=
  if (menustyle.display=3D=3D"none"){=0A=
    menustyle.display=3D''=0A=
  }=0A=
  else{=0A=
    menustyle.display=3D"none"=0A=
  }=0A=
}=0A=
function getStyleObj(elem,parent) {=0A=
  if (document.layers) {=0A=
    if (parent) {=0A=
      return "document."+parent+".document."+elem;=0A=
    } else {=0A=
      return "document."+elem + ".style";=0A=
    }=0A=
  } else if (document.all) {=0A=
    return "document.all."+elem + ".style";=0A=
  } else if (document.getElementById) {=0A=
    return "document.getElementById('"+elem+"').style";=0A=
  }=0A=
}=0A=
=0A=
function toggleTabs(tabSelected, keyEvent) {=0A=
=0A=
  var absTabOn =3D document.getElementById('absTabOn');=0A=
  var absTabOff =3D document.getElementById('absTabOff');=0A=
  var fullTabOn =3D document.getElementById('fullTabOn');=0A=
  var fullTabOff =3D document.getElementById('fullTabOff');=0A=
  var graphTabOn =3D document.getElementById('graphTabOn');=0A=
  var graphTabOff =3D document.getElementById('graphTabOff');=0A=
  var refTabOn =3D document.getElementById('refTabOn');=0A=
  var refTabOff =3D document.getElementById('refTabOff');=0A=
=0A=
  if (tabSelected =3D=3D 'unsubTab') {=0A=
    if (absTabOff) { absTabOff.style.display =3D 'none'; }=0A=
    if (absTabOn) { absTabOn.style.display =3D ''; }=0A=
    if(graphTabOn) { graphTabOn.style.display =3D 'none'; }=0A=
    if(graphTabOff) { graphTabOff.style.display =3D ''; }=0A=
    if(refTabOn) { refTabOn.style.display =3D 'none'; }=0A=
    if(refTabOff) { refTabOff.style.display =3D ''; }=0A=
  }=0A=
  if (tabSelected =3D=3D 'fullTab') {=0A=
    if (fullTabOn) { fullTabOn.style.display =3D ''; }=0A=
    if (fullTabOff) {fullTabOff.style.display =3D 'none'; }=0A=
    if(graphTabOn) { graphTabOn.style.display =3D 'none'; }=0A=
    if(graphTabOff) { graphTabOff.style.display =3D ''; }=0A=
    if(refTabOff) { refTabOff.style.display =3D ''; }=0A=
    if(refTabOn) { refTabOn.style.display =3D 'none'; }=0A=
  }=0A=
  if (tabSelected =3D=3D 'graphTab') {=0A=
    if(absTabOn) { absTabOn.style.display =3D 'none'; }=0A=
    if(absTabOff) { absTabOff.style.display =3D ''; }=0A=
    if(fullTabOn) { fullTabOn.style.display =3D 'none'; }=0A=
    if(fullTabOff) { fullTabOff.style.display =3D ''; }=0A=
    if (graphTabOff) { graphTabOff.style.display =3D 'none'; }=0A=
    if (graphTabOn) { graphTabOn.style.display =3D ''; }=0A=
    if(refTabOn) { refTabOn.style.display =3D 'none'; }=0A=
    if(refTabOff) { refTabOff.style.display =3D ''; }=0A=
=0A=
    createEvent (tabSelected, keyEvent);=0A=
  }=0A=
  if (tabSelected =3D=3D 'refTab') {=0A=
    if(absTabOn) { absTabOn.style.display =3D 'none'; }=0A=
    if(absTabOff) { absTabOff.style.display =3D ''; }=0A=
    if(fullTabOn) { fullTabOn.style.display =3D 'none'; }=0A=
    if(fullTabOff) { fullTabOff.style.display =3D ''; }=0A=
    if(graphTabOn) { graphTabOn.style.display =3D 'none'; }=0A=
    if(graphTabOff) { graphTabOff.style.display =3D ''; }=0A=
    if (refTabOff) { refTabOff.style.display =3D 'none'; }=0A=
    if (refTabOn) {refTabOn.style.display =3D ''; }=0A=
=0A=
    createEvent (tabSelected, keyEvent);=0A=
  }=0A=
=0A=
  setFigSelection (tabSelected);=0A=
=0A=
  changeView(tabSelected);=0A=
}=0A=
=0A=
function createEvent (tabSelected, keyEvent) {=0A=
  if (tabSelected =3D=3D 'graphTab') {=0A=
    if (document.getElementById('figevent') =3D=3D null) {=0A=
      new Ajax.Request(keyEvent);=0A=
      var figTabKey =3D document.createElement('div')=0A=
      figTabKey.setAttribute('id', 'figevent');=0A=
      document.getElementById('graphTabOn').appendChild(figTabKey)=0A=
    }=0A=
  }=0A=
  if (tabSelected =3D=3D 'refTab') {=0A=
    if (document.getElementById('refevent') =3D=3D null) {=0A=
      new Ajax.Request(keyEvent);=0A=
      var refTabKey =3D document.createElement('div')=0A=
      refTabKey.setAttribute('id', 'refevent');=0A=
      document.getElementById('refTabOn').appendChild(refTabKey)=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
function setFigSelection (tabSelected) {=0A=
  if (tabSelected =3D=3D 'graphTab') {=0A=
    var graphTabKey =3D document.createElement('div')=0A=
    graphTabKey.setAttribute('id', 'figSelect');=0A=
    document.getElementById('graphTabOn').appendChild(graphTabKey)=0A=
=0A=
    var imgThumb =3D document.getElementById('imgToggle');=0A=
    var figThumb =3D document.getElementById('figToggle');=0A=
    if (imgThumb !=3D null || figThumb !=3D null) {=0A=
      // Hide article thumbnail, full size image links=0A=
      imgThumb.style.display =3D 'none';=0A=
      // Show the figure thumbnail, full size image links=0A=
      figThumb.style.display =3D '';=0A=
    }=0A=
  }=0A=
  else {=0A=
    if (document.getElementById('figSelect') !=3D null) {=0A=
      var d =3D document.getElementById('figSelect');=0A=
      d.parentNode.removeChild( d );=0A=
=0A=
      var imgThumb =3D document.getElementById('imgToggle');=0A=
      var figThumb =3D document.getElementById('figToggle');=0A=
      if (imgThumb !=3D null || figThumb !=3D null) {=0A=
        // Hide article thumbnail, full size image links=0A=
        figThumb.style.display =3D 'none';=0A=
        // Show the figure thumbnail, full size image links=0A=
        imgThumb.style.display =3D '';=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
<!--=0A=
var MMCvVIDEO =3D 0;=0A=
var MMCvAUDIO =3D 1;=0A=
var MMCvOTHER =3D 2;=0A=
var MMC_TYPE_COUNT =3D 3;=0A=
var EXISTING_TAB_COUNT =3D -1;=0A=
var MMCvComponents =3D new Array();=0A=
 MMCvComponents[MMCvVIDEO] =3D new Array();=0A=
 MMCvComponents[MMCvAUDIO] =3D new Array();=0A=
 MMCvComponents[MMCvOTHER] =3D new Array();=0A=
var MMCvCaptionReplaceImg =3D "";=0A=
var MMCvDocLabel =3D "Article";=0A=
var isAAI2Disabled =3D "";=0A=
var videoPlayerUrl =3D "";=0A=
var audioPlayerUrl =3D "";=0A=
var dummyImageUrl =3D "";=0A=
var flashPlayerVersion =3D DetectFlashVer("9","0","0");=0A=
function MMCvImageDimensions()=0A=
{ this.width=3D0;=0A=
  this.height=3D0;=0A=
}=0A=
function =
MMCvComponent(componentID,articleImageURL,thumbURL,imageWidth,imageHeight=
)=0A=
{=0A=
  this.articleImageURL =3D articleImageURL;=0A=
  this.thumbURL =3D thumbURL;=0A=
  this.imageWidth =3D imageWidth;=0A=
  this.imageHeight =3D imageHeight;=0A=
  this.myID =3D componentID;=0A=
  this.myType =3D -1;=0A=
  this.sourceNode =3D null;=0A=
  this.MMCvNode =3D null;=0A=
  this.sourceDimensions =3D new MMCvImageDimensions();=0A=
  this.MMCvFlashVars =3D null;=0A=
}=0A=
function MMCvContentExists()=0A=
{ var exists =3D 0;=0A=
  if (MMCvComponents[MMCvVIDEO].length=0A=
    || MMCvComponents[MMCvAUDIO].length=0A=
    || MMCvComponents[MMCvOTHER].length)=0A=
  { exists =3D 1; }=0A=
  return exists;=0A=
}=0A=
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRelease)=0A=
{=0A=
  var version =3D swfobject.getFlashPlayerVersion();=0A=
  var versionMajor      =3D version.major;=0A=
  var versionMinor      =3D version.minor;=0A=
  var versionRevision   =3D version.release; =0A=
  if (versionMajor =3D=3D 0 ) {=0A=
   return "no_flash";=0A=
  } else if (versionMajor !=3D 0) {=0A=
   if (versionMajor > parseFloat(reqMajorVer)) {=0A=
    return "supported";=0A=
   } else if (versionMajor =3D=3D parseFloat(reqMajorVer)) {=0A=
    if (versionMinor > parseFloat(reqMinorVer))=0A=
     return "supported";=0A=
    else if (versionMinor =3D=3D parseFloat(reqMinorVer)) {=0A=
     if (versionRevision >=3D parseFloat(reqRelease)){=0A=
      return "supported";=0A=
     }else{ =0A=
      return "version_mismatch";=0A=
     } =0A=
    } else {=0A=
     return  "version_mismatch";=0A=
    }=0A=
   }=0A=
  }=0A=
}=0A=
=0A=
=0A=
function MMCvArtTabSwitch(inTabName)=0A=
{ if (MMCvContentExists())=0A=
  {=0A=
   if (('graphTab' =3D=3D inTabName)=0A=
     || ('refTab' =3D=3D inTabName))=0A=
   { MMCvHide(); }=0A=
   else =0A=
   { MMCvShow(); }=0A=
  }=0A=
}=0A=
=0A=
//-->=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/javascript/fontSizeChanger.js

function fontSizeAdd(elemId, fontURL) {=0A=
  var active =3D getFontStyle(elemId);=0A=
  switch (active) {=0A=
    case 'font1' :=0A=
      setActiveStyle('font2', elemId, fontURL);=0A=
      break;=0A=
    case 'font2' :=0A=
      setActiveStyle('font3', elemId, fontURL);=0A=
      break;=0A=
    case 'font3' :=0A=
      setActiveStyle('font4', elemId, fontURL);=0A=
      break;=0A=
    case 'font4' :=0A=
      setActiveStyle('font5', elemId, fontURL);=0A=
      break;=0A=
    case 'font5' :=0A=
      break;=0A=
    default :=0A=
      setActiveStyle('font3', elemId, fontURL);=0A=
      break;=0A=
  }=0A=
}=0A=
=0A=
function fontSizeMinus(elemId, fontURL) {=0A=
  var active =3D getFontStyle(elemId);=0A=
  switch (active) {=0A=
    case 'font5' :=0A=
      setActiveStyle('font4', elemId, fontURL);=0A=
      break;=0A=
    case 'font4' :=0A=
      setActiveStyle('font3', elemId, fontURL);=0A=
      break;=0A=
    case 'font3' :=0A=
      setActiveStyle('font2', elemId, fontURL);=0A=
      break;=0A=
    case 'font2' :=0A=
      setActiveStyle('font1', elemId, fontURL);=0A=
      break;=0A=
    case 'font1' :=0A=
       break;=0A=
    default :=0A=
      setActiveStyle('font3', elemId, fontURL);=0A=
      break;=0A=
  }=0A=
}=0A=
=0A=
function getFontStyle(elemId) {=0A=
  var x =3D document.getElementById(elemId);=0A=
  if(!x) {return 'fontDefault';}=0A=
  var z =3D x.getAttribute(document.all ? "className" : "class");=0A=
  return z;=0A=
}=0A=
=0A=
function setActiveStyle(fontClass, elemId, fontURL) {=0A=
  var x =3D document.getElementById(elemId);=0A=
  if(!x) {return;}=0A=
  var z =3D x.getAttribute(document.all ? "className" : "class");=0A=
=0A=
  if(z !=3D fontClass) {=0A=
    var fontId;=0A=
    switch (fontClass) {=0A=
    case 'font5' :=0A=
      fontId =3D 5;=0A=
      break;=0A=
    case 'font4' :=0A=
      fontId =3D 4;=0A=
      break;=0A=
    case 'font3' :=0A=
      fontId =3D 3;=0A=
      break;=0A=
    case 'font2' :=0A=
      fontId =3D 2;=0A=
      break;=0A=
    case 'font1' :=0A=
      fontId =3D 1;=0A=
      break;=0A=
    default :=0A=
      fontId =3D 3;=0A=
      break;=0A=
    }=0A=
    var url =3D "/" + fontURL + "/fontsize/" + fontId;=0A=
    new Ajax.Request(url);=0A=
    x.setAttribute((document.all ? "className" : "class"), fontClass);=0A=
  }=0A=
}=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/javascript/prototype.js

/*  Prototype JavaScript framework, version 1.6.0=0A=
 *  (c) 2005-2007 Sam Stephenson=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *  For details, see the Prototype web site: http://www.prototypejs.org/=0A=
 *=0A=
 =
*------------------------------------------------------------------------=
--*/=0A=
=0A=
var Prototype =3D {=0A=
  Version: '1.6.0',=0A=
=0A=
  Browser: {=0A=
    IE:     !!(window.attachEvent && !window.opera),=0A=
    Opera:  !!window.opera,=0A=
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A=
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && =
navigator.userAgent.indexOf('KHTML') =3D=3D -1,=0A=
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A=
  },=0A=
=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate,=0A=
    ElementExtensions: !!window.HTMLElement,=0A=
    SpecificElementExtensions:=0A=
      document.createElement('div').__proto__ &&=0A=
      document.createElement('div').__proto__ !=3D=3D=0A=
        document.createElement('form').__proto__=0A=
  },=0A=
=0A=
  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',=0A=
  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A=
=0A=
  emptyFunction: function() { },=0A=
  K: function(x) { return x }=0A=
};=0A=
=0A=
if (Prototype.Browser.MobileSafari)=0A=
  Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A=
=0A=
if (Prototype.Browser.WebKit)=0A=
  Prototype.BrowserFeatures.XPath =3D false;=0A=
=0A=
/* Based on Alex Arnell's inheritance implementation. */=0A=
var Class =3D {=0A=
  create: function() {=0A=
    var parent =3D null, properties =3D $A(arguments);=0A=
    if (Object.isFunction(properties[0]))=0A=
      parent =3D properties.shift();=0A=
=0A=
    function klass() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
=0A=
    Object.extend(klass, Class.Methods);=0A=
    klass.superclass =3D parent;=0A=
    klass.subclasses =3D [];=0A=
=0A=
    if (parent) {=0A=
      var subclass =3D function() { };=0A=
      subclass.prototype =3D parent.prototype;=0A=
      klass.prototype =3D new subclass;=0A=
      parent.subclasses.push(klass);=0A=
    }=0A=
=0A=
    for (var i =3D 0; i < properties.length; i++)=0A=
      klass.addMethods(properties[i]);=0A=
=0A=
    if (!klass.prototype.initialize)=0A=
      klass.prototype.initialize =3D Prototype.emptyFunction;=0A=
=0A=
    klass.prototype.constructor =3D klass;=0A=
=0A=
    return klass;=0A=
  }=0A=
};=0A=
=0A=
Class.Methods =3D {=0A=
  addMethods: function(source) {=0A=
    var ancestor   =3D this.superclass && this.superclass.prototype;=0A=
    var properties =3D Object.keys(source);=0A=
=0A=
    if (!Object.keys({ toString: true }).length)=0A=
      properties.push("toString", "valueOf");=0A=
=0A=
    for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A=
      var property =3D properties[i], value =3D source[property];=0A=
      if (ancestor && Object.isFunction(value) &&=0A=
          value.argumentNames().first() =3D=3D "$super") {=0A=
        var method =3D value, value =3D Object.extend((function(m) {=0A=
          return function() { return ancestor[m].apply(this, arguments) =
};=0A=
        })(property).wrap(method), {=0A=
          valueOf:  function() { return method },=0A=
          toString: function() { return method.toString() }=0A=
        });=0A=
      }=0A=
      this.prototype[property] =3D value;=0A=
    }=0A=
=0A=
    return this;=0A=
  }=0A=
};=0A=
=0A=
var Abstract =3D { };=0A=
=0A=
Object.extend =3D function(destination, source) {=0A=
  for (var property in source)=0A=
    destination[property] =3D source[property];=0A=
  return destination;=0A=
};=0A=
=0A=
Object.extend(Object, {=0A=
  inspect: function(object) {=0A=
    try {=0A=
      if (object =3D=3D=3D undefined) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : object.toString();=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  },=0A=
=0A=
  toJSON: function(object) {=0A=
    var type =3D typeof object;=0A=
    switch (type) {=0A=
      case 'undefined':=0A=
      case 'function':=0A=
      case 'unknown': return;=0A=
      case 'boolean': return object.toString();=0A=
    }=0A=
=0A=
    if (object =3D=3D=3D null) return 'null';=0A=
    if (object.toJSON) return object.toJSON();=0A=
    if (Object.isElement(object)) return;=0A=
=0A=
    var results =3D [];=0A=
    for (var property in object) {=0A=
      var value =3D Object.toJSON(object[property]);=0A=
      if (value !=3D=3D undefined)=0A=
        results.push(property.toJSON() + ': ' + value);=0A=
    }=0A=
=0A=
    return '{' + results.join(', ') + '}';=0A=
  },=0A=
=0A=
  toQueryString: function(object) {=0A=
    return $H(object).toQueryString();=0A=
  },=0A=
=0A=
  toHTML: function(object) {=0A=
    return object && object.toHTML ? object.toHTML() : =
String.interpret(object);=0A=
  },=0A=
=0A=
  keys: function(object) {=0A=
    var keys =3D [];=0A=
    for (var property in object)=0A=
      keys.push(property);=0A=
    return keys;=0A=
  },=0A=
=0A=
  values: function(object) {=0A=
    var values =3D [];=0A=
    for (var property in object)=0A=
      values.push(object[property]);=0A=
    return values;=0A=
  },=0A=
=0A=
  clone: function(object) {=0A=
    return Object.extend({ }, object);=0A=
  },=0A=
=0A=
  isElement: function(object) {=0A=
    return object && object.nodeType =3D=3D 1;=0A=
  },=0A=
=0A=
  isArray: function(object) {=0A=
    return object && object.constructor =3D=3D=3D Array;=0A=
  },=0A=
=0A=
  isHash: function(object) {=0A=
    return object instanceof Hash;=0A=
  },=0A=
=0A=
  isFunction: function(object) {=0A=
    return typeof object =3D=3D "function";=0A=
  },=0A=
=0A=
  isString: function(object) {=0A=
    return typeof object =3D=3D "string";=0A=
  },=0A=
=0A=
  isNumber: function(object) {=0A=
    return typeof object =3D=3D "number";=0A=
  },=0A=
=0A=
  isUndefined: function(object) {=0A=
    return typeof object =3D=3D "undefined";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Function.prototype, {=0A=
  argumentNames: function() {=0A=
    var names =3D =
this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").inv=
oke("strip");=0A=
    return names.length =3D=3D 1 && !names[0] ? [] : names;=0A=
  },=0A=
=0A=
  bind: function() {=0A=
    if (arguments.length < 2 && arguments[0] =3D=3D=3D undefined) return =
this;=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function() {=0A=
      return __method.apply(object, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  bindAsEventListener: function() {=0A=
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();=0A=
    return function(event) {=0A=
      return __method.apply(object, [event || =
window.event].concat(args));=0A=
    }=0A=
  },=0A=
=0A=
  curry: function() {=0A=
    if (!arguments.length) return this;=0A=
    var __method =3D this, args =3D $A(arguments);=0A=
    return function() {=0A=
      return __method.apply(this, args.concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  delay: function() {=0A=
    var __method =3D this, args =3D $A(arguments), timeout =3D =
args.shift() * 1000;=0A=
    return window.setTimeout(function() {=0A=
      return __method.apply(__method, args);=0A=
    }, timeout);=0A=
  },=0A=
=0A=
  wrap: function(wrapper) {=0A=
    var __method =3D this;=0A=
    return function() {=0A=
      return wrapper.apply(this, =
[__method.bind(this)].concat($A(arguments)));=0A=
    }=0A=
  },=0A=
=0A=
  methodize: function() {=0A=
    if (this._methodized) return this._methodized;=0A=
    var __method =3D this;=0A=
    return this._methodized =3D function() {=0A=
      return __method.apply(null, [this].concat($A(arguments)));=0A=
    };=0A=
  }=0A=
});=0A=
=0A=
Function.prototype.defer =3D Function.prototype.delay.curry(0.01);=0A=
=0A=
Date.prototype.toJSON =3D function() {=0A=
  return '"' + this.getUTCFullYear() + '-' +=0A=
    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A=
    this.getUTCDate().toPaddedString(2) + 'T' +=0A=
    this.getUTCHours().toPaddedString(2) + ':' +=0A=
    this.getUTCMinutes().toPaddedString(2) + ':' +=0A=
    this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A=
};=0A=
=0A=
var Try =3D {=0A=
  these: function() {=0A=
    var returnValue;=0A=
=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var lambda =3D arguments[i];=0A=
      try {=0A=
        returnValue =3D lambda();=0A=
        break;=0A=
      } catch (e) { }=0A=
    }=0A=
=0A=
    return returnValue;=0A=
  }=0A=
};=0A=
=0A=
RegExp.prototype.match =3D RegExp.prototype.test;=0A=
=0A=
RegExp.escape =3D function(str) {=0A=
  return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var PeriodicalExecuter =3D Class.create({=0A=
  initialize: function(callback, frequency) {=0A=
    this.callback =3D callback;=0A=
    this.frequency =3D frequency;=0A=
    this.currentlyExecuting =3D false;=0A=
=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    this.timer =3D setInterval(this.onTimerEvent.bind(this), =
this.frequency * 1000);=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    this.callback(this);=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    if (!this.timer) return;=0A=
    clearInterval(this.timer);=0A=
    this.timer =3D null;=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    if (!this.currentlyExecuting) {=0A=
      try {=0A=
        this.currentlyExecuting =3D true;=0A=
        this.execute();=0A=
      } finally {=0A=
        this.currentlyExecuting =3D false;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
Object.extend(String, {=0A=
  interpret: function(value) {=0A=
    return value =3D=3D null ? '' : String(value);=0A=
  },=0A=
  specialChar: {=0A=
    '\b': '\\b',=0A=
    '\t': '\\t',=0A=
    '\n': '\\n',=0A=
    '\f': '\\f',=0A=
    '\r': '\\r',=0A=
    '\\': '\\\\'=0A=
  }=0A=
});=0A=
=0A=
Object.extend(String.prototype, {=0A=
  gsub: function(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D arguments.callee.prepareReplacement(replacement);=0A=
=0A=
    while (source.length > 0) {=0A=
      if (match =3D source.match(pattern)) {=0A=
        result +=3D source.slice(0, match.index);=0A=
        result +=3D String.interpret(replacement(match));=0A=
        source  =3D source.slice(match.index + match[0].length);=0A=
      } else {=0A=
        result +=3D source, source =3D '';=0A=
      }=0A=
    }=0A=
    return result;=0A=
  },=0A=
=0A=
  sub: function(pattern, replacement, count) {=0A=
    replacement =3D this.gsub.prepareReplacement(replacement);=0A=
    count =3D count =3D=3D=3D undefined ? 1 : count;=0A=
=0A=
    return this.gsub(pattern, function(match) {=0A=
      if (--count < 0) return match[0];=0A=
      return replacement(match);=0A=
    });=0A=
  },=0A=
=0A=
  scan: function(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return String(this);=0A=
  },=0A=
=0A=
  truncate: function(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : =
String(this);=0A=
  },=0A=
=0A=
  strip: function() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  },=0A=
=0A=
  stripTags: function() {=0A=
    return this.replace(/<\/?[^>]+>/gi, '');=0A=
  },=0A=
=0A=
  stripScripts: function() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  },=0A=
=0A=
  extractScripts: function() {=0A=
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A=
    var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A=
    return (this.match(matchAll) || []).map(function(scriptTag) {=0A=
      return (scriptTag.match(matchOne) || ['', ''])[1];=0A=
    });=0A=
  },=0A=
=0A=
  evalScripts: function() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  },=0A=
=0A=
  escapeHTML: function() {=0A=
    var self =3D arguments.callee;=0A=
    self.text.data =3D this;=0A=
    return self.div.innerHTML;=0A=
  },=0A=
=0A=
  unescapeHTML: function() {=0A=
    var div =3D new Element('div');=0A=
    div.innerHTML =3D this.stripTags();=0A=
    return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A=
      $A(div.childNodes).inject('', function(memo, node) { return =
memo+node.nodeValue }) :=0A=
      div.childNodes[0].nodeValue) : '';=0A=
  },=0A=
=0A=
  toQueryParams: function(separator) {=0A=
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A=
    if (!match) return { };=0A=
=0A=
    return match[1].split(separator || '&').inject({ }, function(hash, =
pair) {=0A=
      if ((pair =3D pair.split('=3D'))[0]) {=0A=
        var key =3D decodeURIComponent(pair.shift());=0A=
        var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A=
        if (value !=3D undefined) value =3D decodeURIComponent(value);=0A=
=0A=
        if (key in hash) {=0A=
          if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A=
          hash[key].push(value);=0A=
        }=0A=
        else hash[key] =3D value;=0A=
      }=0A=
      return hash;=0A=
    });=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.split('');=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  },=0A=
=0A=
  times: function(count) {=0A=
    return count < 1 ? '' : new Array(count + 1).join(this);=0A=
  },=0A=
=0A=
  camelize: function() {=0A=
    var parts =3D this.split('-'), len =3D parts.length;=0A=
    if (len =3D=3D 1) return parts[0];=0A=
=0A=
    var camelized =3D this.charAt(0) =3D=3D '-'=0A=
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A=
      : parts[0];=0A=
=0A=
    for (var i =3D 1; i < len; i++)=0A=
      camelized +=3D parts[i].charAt(0).toUpperCase() + =
parts[i].substring(1);=0A=
=0A=
    return camelized;=0A=
  },=0A=
=0A=
  capitalize: function() {=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  },=0A=
=0A=
  underscore: function() {=0A=
    return this.gsub(/::/, =
'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{=
1}_#{2}').gsub(/-/,'_').toLowerCase();=0A=
  },=0A=
=0A=
  dasherize: function() {=0A=
    return this.gsub(/_/,'-');=0A=
  },=0A=
=0A=
  inspect: function(useDoubleQuotes) {=0A=
    var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A=
      var character =3D String.specialChar[match[0]];=0A=
      return character ? character : '\\u00' + =
match[0].charCodeAt().toPaddedString(2, 16);=0A=
    });=0A=
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';=0A=
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return this.inspect(true);=0A=
  },=0A=
=0A=
  unfilterJSON: function(filter) {=0A=
    return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A=
  },=0A=
=0A=
  isJSON: function() {=0A=
    var str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A=
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A=
  },=0A=
=0A=
  evalJSON: function(sanitize) {=0A=
    var json =3D this.unfilterJSON();=0A=
    try {=0A=
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A=
    } catch (e) { }=0A=
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A=
  },=0A=
=0A=
  include: function(pattern) {=0A=
    return this.indexOf(pattern) > -1;=0A=
  },=0A=
=0A=
  startsWith: function(pattern) {=0A=
    return this.indexOf(pattern) =3D=3D=3D 0;=0A=
  },=0A=
=0A=
  endsWith: function(pattern) {=0A=
    var d =3D this.length - pattern.length;=0A=
    return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A=
  },=0A=
=0A=
  empty: function() {=0A=
    return this =3D=3D '';=0A=
  },=0A=
=0A=
  blank: function() {=0A=
    return /^\s*$/.test(this);=0A=
  },=0A=
=0A=
  interpolate: function(object, pattern) {=0A=
    return new Template(this, pattern).evaluate(object);=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.WebKit || Prototype.Browser.IE) =
Object.extend(String.prototype, {=0A=
  escapeHTML: function() {=0A=
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');=0A=
  },=0A=
  unescapeHTML: function() {=0A=
    return =
this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');=0A=
  }=0A=
});=0A=
=0A=
String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A=
  if (Object.isFunction(replacement)) return replacement;=0A=
  var template =3D new Template(replacement);=0A=
  return function(match) { return template.evaluate(match) };=0A=
};=0A=
=0A=
String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A=
=0A=
Object.extend(String.prototype.escapeHTML, {=0A=
  div:  document.createElement('div'),=0A=
  text: document.createTextNode('')=0A=
});=0A=
=0A=
with (String.prototype.escapeHTML) div.appendChild(text);=0A=
=0A=
var Template =3D Class.create({=0A=
  initialize: function(template, pattern) {=0A=
    this.template =3D template.toString();=0A=
    this.pattern =3D pattern || Template.Pattern;=0A=
  },=0A=
=0A=
  evaluate: function(object) {=0A=
    if (Object.isFunction(object.toTemplateReplacements))=0A=
      object =3D object.toTemplateReplacements();=0A=
=0A=
    return this.template.gsub(this.pattern, function(match) {=0A=
      if (object =3D=3D null) return '';=0A=
=0A=
      var before =3D match[1] || '';=0A=
      if (before =3D=3D '\\') return match[2];=0A=
=0A=
      var ctx =3D object, expr =3D match[3];=0A=
      var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match =
=3D pattern.exec(expr);=0A=
      if (match =3D=3D null) return before;=0A=
=0A=
      while (match !=3D null) {=0A=
        var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', =
']') : match[1];=0A=
        ctx =3D ctx[comp];=0A=
        if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A=
        expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : =
match[0].length);=0A=
        match =3D pattern.exec(expr);=0A=
      }=0A=
=0A=
      return before + String.interpret(ctx);=0A=
    }.bind(this));=0A=
  }=0A=
});=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
=0A=
var $break =3D { };=0A=
=0A=
var Enumerable =3D {=0A=
  each: function(iterator, context) {=0A=
    var index =3D 0;=0A=
    iterator =3D iterator.bind(context);=0A=
    try {=0A=
      this._each(function(value) {=0A=
        iterator(value, index++);=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
    return this;=0A=
  },=0A=
=0A=
  eachSlice: function(number, iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var index =3D -number, slices =3D [], array =3D this.toArray();=0A=
    while ((index +=3D number) < array.length)=0A=
      slices.push(array.slice(index, index+number));=0A=
    return slices.collect(iterator, context);=0A=
  },=0A=
=0A=
  all: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!iterator(value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  any: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result =3D false;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!iterator(value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  collect: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(iterator(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  detect: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  findAll: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  grep: function(filter, iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var results =3D [];=0A=
=0A=
    if (Object.isString(filter))=0A=
      filter =3D new RegExp(filter);=0A=
=0A=
    this.each(function(value, index) {=0A=
      if (filter.match(value))=0A=
        results.push(iterator(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  include: function(object) {=0A=
    if (Object.isFunction(this.indexOf))=0A=
      if (this.indexOf(object) !=3D -1) return true;=0A=
=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  },=0A=
=0A=
  inGroupsOf: function(number, fillWith) {=0A=
    fillWith =3D fillWith =3D=3D=3D undefined ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  },=0A=
=0A=
  inject: function(memo, iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator(memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  },=0A=
=0A=
  invoke: function(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.map(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  },=0A=
=0A=
  max: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator(value, index);=0A=
      if (result =3D=3D undefined || value >=3D result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  min: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator(value, index);=0A=
      if (result =3D=3D undefined || value < result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  partition: function(iterator, context) {=0A=
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      (iterator(value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  },=0A=
=0A=
  pluck: function(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  reject: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  sortBy: function(iterator, context) {=0A=
    iterator =3D iterator.bind(context);=0A=
    return this.map(function(value, index) {=0A=
      return {value: value, criteria: iterator(value, index)};=0A=
    }).sort(function(left, right) {=0A=
      var a =3D left.criteria, b =3D right.criteria;=0A=
      return a < b ? -1 : a > b ? 1 : 0;=0A=
    }).pluck('value');=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.map();=0A=
  },=0A=
=0A=
  zip: function() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (Object.isFunction(args.last()))=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      return iterator(collections.pluck(index));=0A=
    });=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.toArray().length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Enumerable, {=0A=
  map:     Enumerable.collect,=0A=
  find:    Enumerable.detect,=0A=
  select:  Enumerable.findAll,=0A=
  filter:  Enumerable.findAll,=0A=
  member:  Enumerable.include,=0A=
  entries: Enumerable.toArray,=0A=
  every:   Enumerable.all,=0A=
  some:    Enumerable.any=0A=
});=0A=
function $A(iterable) {=0A=
  if (!iterable) return [];=0A=
  if (iterable.toArray) return iterable.toArray();=0A=
  var length =3D iterable.length, results =3D new Array(length);=0A=
  while (length--) results[length] =3D iterable[length];=0A=
  return results;=0A=
}=0A=
=0A=
if (Prototype.Browser.WebKit) {=0A=
  function $A(iterable) {=0A=
    if (!iterable) return [];=0A=
    if (!(Object.isFunction(iterable) && iterable =3D=3D '[object =
NodeList]') &&=0A=
        iterable.toArray) return iterable.toArray();=0A=
    var length =3D iterable.length, results =3D new Array(length);=0A=
    while (length--) results[length] =3D iterable[length];=0A=
    return results;=0A=
  }=0A=
}=0A=
=0A=
Array.from =3D $A;=0A=
=0A=
Object.extend(Array.prototype, Enumerable);=0A=
=0A=
if (!Array.prototype._reverse) Array.prototype._reverse =3D =
Array.prototype.reverse;=0A=
=0A=
Object.extend(Array.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      iterator(this[i]);=0A=
  },=0A=
=0A=
  clear: function() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  },=0A=
=0A=
  first: function() {=0A=
    return this[0];=0A=
  },=0A=
=0A=
  last: function() {=0A=
    return this[this.length - 1];=0A=
  },=0A=
=0A=
  compact: function() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  },=0A=
=0A=
  flatten: function() {=0A=
    return this.inject([], function(array, value) {=0A=
      return array.concat(Object.isArray(value) ?=0A=
        value.flatten() : [value]);=0A=
    });=0A=
  },=0A=
=0A=
  without: function() {=0A=
    var values =3D $A(arguments);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  },=0A=
=0A=
  reverse: function(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  },=0A=
=0A=
  reduce: function() {=0A=
    return this.length > 1 ? this : this[0];=0A=
  },=0A=
=0A=
  uniq: function(sorted) {=0A=
    return this.inject([], function(array, value, index) {=0A=
      if (0 =3D=3D index || (sorted ? array.last() !=3D value : =
!array.include(value)))=0A=
        array.push(value);=0A=
      return array;=0A=
    });=0A=
  },=0A=
=0A=
  intersect: function(array) {=0A=
    return this.uniq().findAll(function(item) {=0A=
      return array.detect(function(value) { return item =3D=3D=3D value =
});=0A=
    });=0A=
  },=0A=
=0A=
  clone: function() {=0A=
    return [].concat(this);=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    var results =3D [];=0A=
    this.each(function(object) {=0A=
      var value =3D Object.toJSON(object);=0A=
      if (value !=3D=3D undefined) results.push(value);=0A=
    });=0A=
    return '[' + results.join(', ') + ']';=0A=
  }=0A=
});=0A=
=0A=
// use native browser JS 1.6 implementation if available=0A=
if (Object.isFunction(Array.prototype.forEach))=0A=
  Array.prototype._each =3D Array.prototype.forEach;=0A=
=0A=
if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, =
i) {=0A=
  i || (i =3D 0);=0A=
  var length =3D this.length;=0A=
  if (i < 0) i =3D length + i;=0A=
  for (; i < length; i++)=0A=
    if (this[i] =3D=3D=3D item) return i;=0A=
  return -1;=0A=
};=0A=
=0A=
if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D =
function(item, i) {=0A=
  i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A=
  var n =3D this.slice(0, i).reverse().indexOf(item);=0A=
  return (n < 0) ? n : i - n - 1;=0A=
};=0A=
=0A=
Array.prototype.toArray =3D Array.prototype.clone;=0A=
=0A=
function $w(string) {=0A=
  if (!Object.isString(string)) return [];=0A=
  string =3D string.strip();=0A=
  return string ? string.split(/\s+/) : [];=0A=
}=0A=
=0A=
if (Prototype.Browser.Opera){=0A=
  Array.prototype.concat =3D function() {=0A=
    var array =3D [];=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++) =
array.push(this[i]);=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      if (Object.isArray(arguments[i])) {=0A=
        for (var j =3D 0, arrayLength =3D arguments[i].length; j < =
arrayLength; j++)=0A=
          array.push(arguments[i][j]);=0A=
      } else {=0A=
        array.push(arguments[i]);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  };=0A=
}=0A=
Object.extend(Number.prototype, {=0A=
  toColorPart: function() {=0A=
    return this.toPaddedString(2, 16);=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this + 1;=0A=
  },=0A=
=0A=
  times: function(iterator) {=0A=
    $R(0, this, true).each(iterator);=0A=
    return this;=0A=
  },=0A=
=0A=
  toPaddedString: function(length, radix) {=0A=
    var string =3D this.toString(radix || 10);=0A=
    return '0'.times(length - string.length) + string;=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return isFinite(this) ? this.toString() : 'null';=0A=
  }=0A=
});=0A=
=0A=
$w('abs round ceil floor').each(function(method){=0A=
  Number.prototype[method] =3D Math[method].methodize();=0A=
});=0A=
function $H(object) {=0A=
  return new Hash(object);=0A=
};=0A=
=0A=
var Hash =3D Class.create(Enumerable, (function() {=0A=
  if (function() {=0A=
    var i =3D 0, Test =3D function(value) { this.key =3D value };=0A=
    Test.prototype.key =3D 'foo';=0A=
    for (var property in new Test('bar')) i++;=0A=
    return i > 1;=0A=
  }()) {=0A=
    function each(iterator) {=0A=
      var cache =3D [];=0A=
      for (var key in this._object) {=0A=
        var value =3D this._object[key];=0A=
        if (cache.include(key)) continue;=0A=
        cache.push(key);=0A=
        var pair =3D [key, value];=0A=
        pair.key =3D key;=0A=
        pair.value =3D value;=0A=
        iterator(pair);=0A=
      }=0A=
    }=0A=
  } else {=0A=
    function each(iterator) {=0A=
      for (var key in this._object) {=0A=
        var value =3D this._object[key], pair =3D [key, value];=0A=
        pair.key =3D key;=0A=
        pair.value =3D value;=0A=
        iterator(pair);=0A=
      }=0A=
    }=0A=
  }=0A=
=0A=
  function toQueryPair(key, value) {=0A=
    if (Object.isUndefined(value)) return key;=0A=
    return key + '=3D' + encodeURIComponent(String.interpret(value));=0A=
  }=0A=
=0A=
  return {=0A=
    initialize: function(object) {=0A=
      this._object =3D Object.isHash(object) ? object.toObject() : =
Object.clone(object);=0A=
    },=0A=
=0A=
    _each: each,=0A=
=0A=
    set: function(key, value) {=0A=
      return this._object[key] =3D value;=0A=
    },=0A=
=0A=
    get: function(key) {=0A=
      return this._object[key];=0A=
    },=0A=
=0A=
    unset: function(key) {=0A=
      var value =3D this._object[key];=0A=
      delete this._object[key];=0A=
      return value;=0A=
    },=0A=
=0A=
    toObject: function() {=0A=
      return Object.clone(this._object);=0A=
    },=0A=
=0A=
    keys: function() {=0A=
      return this.pluck('key');=0A=
    },=0A=
=0A=
    values: function() {=0A=
      return this.pluck('value');=0A=
    },=0A=
=0A=
    index: function(value) {=0A=
      var match =3D this.detect(function(pair) {=0A=
        return pair.value =3D=3D=3D value;=0A=
      });=0A=
      return match && match.key;=0A=
    },=0A=
=0A=
    merge: function(object) {=0A=
      return this.clone().update(object);=0A=
    },=0A=
=0A=
    update: function(object) {=0A=
      return new Hash(object).inject(this, function(result, pair) {=0A=
        result.set(pair.key, pair.value);=0A=
        return result;=0A=
      });=0A=
    },=0A=
=0A=
    toQueryString: function() {=0A=
      return this.map(function(pair) {=0A=
        var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A=
=0A=
        if (values && typeof values =3D=3D 'object') {=0A=
          if (Object.isArray(values))=0A=
            return values.map(toQueryPair.curry(key)).join('&');=0A=
        }=0A=
        return toQueryPair(key, values);=0A=
      }).join('&');=0A=
    },=0A=
=0A=
    inspect: function() {=0A=
      return '#<Hash:{' + this.map(function(pair) {=0A=
        return pair.map(Object.inspect).join(': ');=0A=
      }).join(', ') + '}>';=0A=
    },=0A=
=0A=
    toJSON: function() {=0A=
      return Object.toJSON(this.toObject());=0A=
    },=0A=
=0A=
    clone: function() {=0A=
      return new Hash(this);=0A=
    }=0A=
  }=0A=
})());=0A=
=0A=
Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;=0A=
Hash.from =3D $H;=0A=
var ObjectRange =3D Class.create(Enumerable, {=0A=
  initialize: function(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  },=0A=
=0A=
  include: function(value) {=0A=
    if (value < this.start)=0A=
      return false;=0A=
    if (this.exclusive)=0A=
      return value < this.end;=0A=
    return value <=3D this.end;=0A=
  }=0A=
});=0A=
=0A=
var $R =3D function(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
};=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new XMLHttpRequest()},=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
};=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responder) {=0A=
    if (!this.include(responder))=0A=
      this.responders.push(responder);=0A=
  },=0A=
=0A=
  unregister: function(responder) {=0A=
    this.responders =3D this.responders.without(responder);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (Object.isFunction(responder[callback])) {=0A=
        try {=0A=
          responder[callback].apply(responder, [request, transport, =
json]);=0A=
        } catch (e) { }=0A=
      }=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Ajax.Responders, Enumerable);=0A=
=0A=
Ajax.Responders.register({=0A=
  onCreate:   function() { Ajax.activeRequestCount++ },=0A=
  onComplete: function() { Ajax.activeRequestCount-- }=0A=
});=0A=
=0A=
Ajax.Base =3D Class.create({=0A=
  initialize: function(options) {=0A=
    this.options =3D {=0A=
      method:       'post',=0A=
      asynchronous: true,=0A=
      contentType:  'application/x-www-form-urlencoded',=0A=
      encoding:     'UTF-8',=0A=
      parameters:   '',=0A=
      evalJSON:     true,=0A=
      evalJS:       true=0A=
    };=0A=
    Object.extend(this.options, options || { });=0A=
=0A=
    this.options.method =3D this.options.method.toLowerCase();=0A=
    if (Object.isString(this.options.parameters))=0A=
      this.options.parameters =3D =
this.options.parameters.toQueryParams();=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request =3D Class.create(Ajax.Base, {=0A=
  _complete: false,=0A=
=0A=
  initialize: function($super, url, options) {=0A=
    $super(options);=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    this.url =3D url;=0A=
    this.method =3D this.options.method;=0A=
    var params =3D Object.clone(this.options.parameters);=0A=
=0A=
    if (!['get', 'post'].include(this.method)) {=0A=
      // simulate other verbs over post=0A=
      params['_method'] =3D this.method;=0A=
      this.method =3D 'post';=0A=
    }=0A=
=0A=
    this.parameters =3D params;=0A=
=0A=
    if (params =3D Object.toQueryString(params)) {=0A=
      // when GET, append parameters to URL=0A=
      if (this.method =3D=3D 'get')=0A=
        this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A=
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A=
        params +=3D '&_=3D';=0A=
    }=0A=
=0A=
    try {=0A=
      var response =3D new Ajax.Response(this);=0A=
      if (this.options.onCreate) this.options.onCreate(response);=0A=
      Ajax.Responders.dispatch('onCreate', this, response);=0A=
=0A=
      this.transport.open(this.method.toUpperCase(), this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous) =
this.respondToReadyState.bind(this).defer(1);=0A=
=0A=
      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
      this.setRequestHeaders();=0A=
=0A=
      this.body =3D this.method =3D=3D 'post' ? (this.options.postBody =
|| params) : null;=0A=
      this.transport.send(this.body);=0A=
=0A=
      /* Force Firefox to handle ready state 4 for synchronous requests =
*/=0A=
      if (!this.options.asynchronous && this.transport.overrideMimeType)=0A=
        this.onStateChange();=0A=
=0A=
    }=0A=
    catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var headers =3D {=0A=
      'X-Requested-With': 'XMLHttpRequest',=0A=
      'X-Prototype-Version': Prototype.Version,=0A=
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'=0A=
    };=0A=
=0A=
    if (this.method =3D=3D 'post') {=0A=
      headers['Content-type'] =3D this.options.contentType +=0A=
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');=0A=
=0A=
      /* Force "Connection: close" for older Mozilla browsers to work=0A=
       * around a bug where XMLHttpRequest sends an incorrect=0A=
       * Content-length header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType &&=0A=
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)=0A=
            headers['Connection'] =3D 'close';=0A=
    }=0A=
=0A=
    // user-defined headers=0A=
    if (typeof this.options.requestHeaders =3D=3D 'object') {=0A=
      var extras =3D this.options.requestHeaders;=0A=
=0A=
      if (Object.isFunction(extras.push))=0A=
        for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A=
          headers[extras[i]] =3D extras[i+1];=0A=
      else=0A=
        $H(extras).each(function(pair) { headers[pair.key] =3D =
pair.value });=0A=
    }=0A=
=0A=
    for (var name in headers)=0A=
      this.transport.setRequestHeader(name, headers[name]);=0A=
  },=0A=
=0A=
  success: function() {=0A=
    var status =3D this.getStatus();=0A=
    return !status || (status >=3D 200 && status < 300);=0A=
  },=0A=
=0A=
  getStatus: function() {=0A=
    try {=0A=
      return this.transport.status || 0;=0A=
    } catch (e) { return 0 }=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var state =3D Ajax.Request.Events[readyState], response =3D new =
Ajax.Response(this);=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      try {=0A=
        this._complete =3D true;=0A=
        (this.options['on' + response.status]=0A=
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A=
         || Prototype.emptyFunction)(response, response.headerJSON);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      var contentType =3D response.getHeader('Content-type');=0A=
      if (this.options.evalJS =3D=3D 'force'=0A=
          || (this.options.evalJS && contentType=0A=
          && =
contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s=
*$/i)))=0A=
        this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + state] || Prototype.emptyFunction)(response, =
response.headerJSON);=0A=
      Ajax.Responders.dispatch('on' + state, this, response, =
response.headerJSON);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      // avoid memory leak in MSIE: clean up=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name);=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval((this.transport.responseText || '').unfilterJSON());=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  dispatchException: function(exception) {=0A=
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);=0A=
    Ajax.Responders.dispatch('onException', this, exception);=0A=
  }=0A=
});=0A=
=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
Ajax.Response =3D Class.create({=0A=
  initialize: function(request){=0A=
    this.request =3D request;=0A=
    var transport  =3D this.transport  =3D request.transport,=0A=
        readyState =3D this.readyState =3D transport.readyState;=0A=
=0A=
    if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) =
{=0A=
      this.status       =3D this.getStatus();=0A=
      this.statusText   =3D this.getStatusText();=0A=
      this.responseText =3D String.interpret(transport.responseText);=0A=
      this.headerJSON   =3D this._getHeaderJSON();=0A=
    }=0A=
=0A=
    if(readyState =3D=3D 4) {=0A=
      var xml =3D transport.responseXML;=0A=
      this.responseXML  =3D xml =3D=3D=3D undefined ? null : xml;=0A=
      this.responseJSON =3D this._getResponseJSON();=0A=
    }=0A=
  },=0A=
=0A=
  status:      0,=0A=
  statusText: '',=0A=
=0A=
  getStatus: Ajax.Request.prototype.getStatus,=0A=
=0A=
  getStatusText: function() {=0A=
    try {=0A=
      return this.transport.statusText || '';=0A=
    } catch (e) { return '' }=0A=
  },=0A=
=0A=
  getHeader: Ajax.Request.prototype.getHeader,=0A=
=0A=
  getAllHeaders: function() {=0A=
    try {=0A=
      return this.getAllResponseHeaders();=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  getResponseHeader: function(name) {=0A=
    return this.transport.getResponseHeader(name);=0A=
  },=0A=
=0A=
  getAllResponseHeaders: function() {=0A=
    return this.transport.getAllResponseHeaders();=0A=
  },=0A=
=0A=
  _getHeaderJSON: function() {=0A=
    var json =3D this.getHeader('X-JSON');=0A=
    if (!json) return null;=0A=
    json =3D decodeURIComponent(escape(json));=0A=
    try {=0A=
      return json.evalJSON(this.request.options.sanitizeJSON);=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  _getResponseJSON: function() {=0A=
    var options =3D this.request.options;=0A=
    if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A=
      !(this.getHeader('Content-type') || =
'').include('application/json')))=0A=
        return null;=0A=
    try {=0A=
      return this.transport.responseText.evalJSON(options.sanitizeJSON);=0A=
    } catch (e) {=0A=
      this.request.dispatchException(e);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.Updater =3D Class.create(Ajax.Request, {=0A=
  initialize: function($super, container, url, options) {=0A=
    this.container =3D {=0A=
      success: (container.success || container),=0A=
      failure: (container.failure || (container.success ? null : =
container))=0A=
    };=0A=
=0A=
    options =3D options || { };=0A=
    var onComplete =3D options.onComplete;=0A=
    options.onComplete =3D (function(response, param) {=0A=
      this.updateContent(response.responseText);=0A=
      if (Object.isFunction(onComplete)) onComplete(response, param);=0A=
    }).bind(this);=0A=
=0A=
    $super(url, options);=0A=
  },=0A=
=0A=
  updateContent: function(responseText) {=0A=
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'],=0A=
        options =3D this.options;=0A=
=0A=
    if (!options.evalScripts) responseText =3D =
responseText.stripScripts();=0A=
=0A=
    if (receiver =3D $(receiver)) {=0A=
      if (options.insertion) {=0A=
        if (Object.isString(options.insertion)) {=0A=
          var insertion =3D { }; insertion[options.insertion] =3D =
responseText;=0A=
          receiver.insert(insertion);=0A=
        }=0A=
        else options.insertion(receiver, responseText);=0A=
      }=0A=
      else receiver.update(responseText);=0A=
    }=0A=
=0A=
    if (this.success()) {=0A=
      if (this.onComplete) this.onComplete.bind(this).defer();=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A=
  initialize: function($super, container, url, options) {=0A=
    $super(options);=0A=
    this.onComplete =3D this.options.onComplete;=0A=
=0A=
    this.frequency =3D (this.options.frequency || 2);=0A=
    this.decay =3D (this.options.decay || 1);=0A=
=0A=
    this.updater =3D { };=0A=
    this.container =3D container;=0A=
    this.url =3D url;=0A=
=0A=
    this.start();=0A=
  },=0A=
=0A=
  start: function() {=0A=
    this.options.onComplete =3D this.updateComplete.bind(this);=0A=
    this.onTimerEvent();=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    this.updater.options.onComplete =3D undefined;=0A=
    clearTimeout(this.timer);=0A=
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A=
  },=0A=
=0A=
  updateComplete: function(response) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (response.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D response.responseText;=0A=
    }=0A=
    this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * =
this.frequency);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
function $(element) {=0A=
  if (arguments.length > 1) {=0A=
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)=0A=
      elements.push($(arguments[i]));=0A=
    return elements;=0A=
  }=0A=
  if (Object.isString(element))=0A=
    element =3D document.getElementById(element);=0A=
  return Element.extend(element);=0A=
}=0A=
=0A=
if (Prototype.BrowserFeatures.XPath) {=0A=
  document._getElementsByXPath =3D function(expression, parentElement) {=0A=
    var results =3D [];=0A=
    var query =3D document.evaluate(expression, $(parentElement) || =
document,=0A=
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
    for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A=
      results.push(Element.extend(query.snapshotItem(i)));=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!window.Node) var Node =3D { };=0A=
=0A=
if (!Node.ELEMENT_NODE) {=0A=
  // DOM level 2 ECMAScript Language Binding=0A=
  Object.extend(Node, {=0A=
    ELEMENT_NODE: 1,=0A=
    ATTRIBUTE_NODE: 2,=0A=
    TEXT_NODE: 3,=0A=
    CDATA_SECTION_NODE: 4,=0A=
    ENTITY_REFERENCE_NODE: 5,=0A=
    ENTITY_NODE: 6,=0A=
    PROCESSING_INSTRUCTION_NODE: 7,=0A=
    COMMENT_NODE: 8,=0A=
    DOCUMENT_NODE: 9,=0A=
    DOCUMENT_TYPE_NODE: 10,=0A=
    DOCUMENT_FRAGMENT_NODE: 11,=0A=
    NOTATION_NODE: 12=0A=
  });=0A=
}=0A=
=0A=
(function() {=0A=
  var element =3D this.Element;=0A=
  this.Element =3D function(tagName, attributes) {=0A=
    attributes =3D attributes || { };=0A=
    tagName =3D tagName.toLowerCase();=0A=
    var cache =3D Element.cache;=0A=
    if (Prototype.Browser.IE && attributes.name) {=0A=
      tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A=
      delete attributes.name;=0A=
      return Element.writeAttribute(document.createElement(tagName), =
attributes);=0A=
    }=0A=
    if (!cache[tagName]) cache[tagName] =3D =
Element.extend(document.createElement(tagName));=0A=
    return Element.writeAttribute(cache[tagName].cloneNode(false), =
attributes);=0A=
  };=0A=
  Object.extend(this.Element, element || { });=0A=
}).call(window);=0A=
=0A=
Element.cache =3D { };=0A=
=0A=
Element.Methods =3D {=0A=
  visible: function(element) {=0A=
    return $(element).style.display !=3D 'none';=0A=
  },=0A=
=0A=
  toggle: function(element) {=0A=
    element =3D $(element);=0A=
    Element[Element.visible(element) ? 'hide' : 'show'](element);=0A=
    return element;=0A=
  },=0A=
=0A=
  hide: function(element) {=0A=
    $(element).style.display =3D 'none';=0A=
    return element;=0A=
  },=0A=
=0A=
  show: function(element) {=0A=
    $(element).style.display =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  remove: function(element) {=0A=
    element =3D $(element);=0A=
    element.parentNode.removeChild(element);=0A=
    return element;=0A=
  },=0A=
=0A=
  update: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
    content =3D Object.toHTML(content);=0A=
    element.innerHTML =3D content.stripScripts();=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  },=0A=
=0A=
  replace: function(element, content) {=0A=
    element =3D $(element);=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    else if (!Object.isElement(content)) {=0A=
      content =3D Object.toHTML(content);=0A=
      var range =3D element.ownerDocument.createRange();=0A=
      range.selectNode(element);=0A=
      content.evalScripts.bind(content).defer();=0A=
      content =3D range.createContextualFragment(content.stripScripts());=0A=
    }=0A=
    element.parentNode.replaceChild(content, element);=0A=
    return element;=0A=
  },=0A=
=0A=
  insert: function(element, insertions) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A=
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))=0A=
          insertions =3D {bottom:insertions};=0A=
=0A=
    var content, t, range;=0A=
=0A=
    for (position in insertions) {=0A=
      content  =3D insertions[position];=0A=
      position =3D position.toLowerCase();=0A=
      t =3D Element._insertionTranslations[position];=0A=
=0A=
      if (content && content.toElement) content =3D content.toElement();=0A=
      if (Object.isElement(content)) {=0A=
        t.insert(element, content);=0A=
        continue;=0A=
      }=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      range =3D element.ownerDocument.createRange();=0A=
      t.initializeRange(element, range);=0A=
      t.insert(element, =
range.createContextualFragment(content.stripScripts()));=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  wrap: function(element, wrapper, attributes) {=0A=
    element =3D $(element);=0A=
    if (Object.isElement(wrapper))=0A=
      $(wrapper).writeAttribute(attributes || { });=0A=
    else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, =
attributes);=0A=
    else wrapper =3D new Element('div', wrapper);=0A=
    if (element.parentNode)=0A=
      element.parentNode.replaceChild(wrapper, element);=0A=
    wrapper.appendChild(element);=0A=
    return wrapper;=0A=
  },=0A=
=0A=
  inspect: function(element) {=0A=
    element =3D $(element);=0A=
    var result =3D '<' + element.tagName.toLowerCase();=0A=
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A=
      var property =3D pair.first(), attribute =3D pair.last();=0A=
      var value =3D (element[property] || '').toString();=0A=
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);=0A=
    });=0A=
    return result + '>';=0A=
  },=0A=
=0A=
  recursivelyCollect: function(element, property) {=0A=
    element =3D $(element);=0A=
    var elements =3D [];=0A=
    while (element =3D element[property])=0A=
      if (element.nodeType =3D=3D 1)=0A=
        elements.push(Element.extend(element));=0A=
    return elements;=0A=
  },=0A=
=0A=
  ancestors: function(element) {=0A=
    return $(element).recursivelyCollect('parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return $A($(element).getElementsByTagName('*')).each(Element.extend);=0A=
  },=0A=
=0A=
  firstDescendant: function(element) {=0A=
    element =3D $(element).firstChild;=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    return $(element);=0A=
  },=0A=
=0A=
  immediateDescendants: function(element) {=0A=
    if (!(element =3D $(element).firstChild)) return [];=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    if (element) return [element].concat($(element).nextSiblings());=0A=
    return [];=0A=
  },=0A=
=0A=
  previousSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return =
element.previousSiblings().reverse().concat(element.nextSiblings());=0A=
  },=0A=
=0A=
  match: function(element, selector) {=0A=
    if (Object.isString(selector))=0A=
      selector =3D new Selector(selector);=0A=
    return selector.match($(element));=0A=
  },=0A=
=0A=
  up: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return $(element.parentNode);=0A=
    var ancestors =3D element.ancestors();=0A=
    return expression ? Selector.findElement(ancestors, expression, =
index) :=0A=
      ancestors[index || 0];=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return element.firstDescendant();=0A=
    var descendants =3D element.descendants();=0A=
    return expression ? Selector.findElement(descendants, expression, =
index) :=0A=
      descendants[index || 0];=0A=
  },=0A=
=0A=
  previous: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.previousElementSibling(element));=0A=
    var previousSiblings =3D element.previousSiblings();=0A=
    return expression ? Selector.findElement(previousSiblings, =
expression, index) :=0A=
      previousSiblings[index || 0];=0A=
  },=0A=
=0A=
  next: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.nextElementSibling(element));=0A=
    var nextSiblings =3D element.nextSiblings();=0A=
    return expression ? Selector.findElement(nextSiblings, expression, =
index) :=0A=
      nextSiblings[index || 0];=0A=
  },=0A=
=0A=
  select: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element, args);=0A=
  },=0A=
=0A=
  adjacent: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element.parentNode, =
args).without(element);=0A=
  },=0A=
=0A=
  identify: function(element) {=0A=
    element =3D $(element);=0A=
    var id =3D element.readAttribute('id'), self =3D arguments.callee;=0A=
    if (id) return id;=0A=
    do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));=0A=
    element.writeAttribute('id', id);=0A=
    return id;=0A=
  },=0A=
=0A=
  readAttribute: function(element, name) {=0A=
    element =3D $(element);=0A=
    if (Prototype.Browser.IE) {=0A=
      var t =3D Element._attributeTranslations.read;=0A=
      if (t.values[name]) return t.values[name](element, name);=0A=
      if (t.names[name]) name =3D t.names[name];=0A=
      if (name.include(':')) {=0A=
        return (!element.attributes || !element.attributes[name]) ? null =
:=0A=
         element.attributes[name].value;=0A=
      }=0A=
    }=0A=
    return element.getAttribute(name);=0A=
  },=0A=
=0A=
  writeAttribute: function(element, name, value) {=0A=
    element =3D $(element);=0A=
    var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A=
=0A=
    if (typeof name =3D=3D 'object') attributes =3D name;=0A=
    else attributes[name] =3D value =3D=3D=3D undefined ? true : value;=0A=
=0A=
    for (var attr in attributes) {=0A=
      var name =3D t.names[attr] || attr, value =3D attributes[attr];=0A=
      if (t.values[attr]) name =3D t.values[attr](element, value);=0A=
      if (value =3D=3D=3D false || value =3D=3D=3D null)=0A=
        element.removeAttribute(name);=0A=
      else if (value =3D=3D=3D true)=0A=
        element.setAttribute(name, name);=0A=
      else element.setAttribute(name, value);=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    return $(element).getDimensions().height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return $(element).getDimensions().width;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var elementClassName =3D element.className;=0A=
    return (elementClassName.length > 0 && (elementClassName =3D=3D =
className ||=0A=
      new RegExp("(^|\\s)" + className + =
"(\\s|$)").test(elementClassName)));=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    if (!element.hasClassName(className))=0A=
      element.className +=3D (element.className ? ' ' : '') + className;=0A=
    return element;=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    element.className =3D element.className.replace(=0A=
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A=
    return element;=0A=
  },=0A=
=0A=
  toggleClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    return element[element.hasClassName(className) ?=0A=
      'removeClassName' : 'addClassName'](className);=0A=
  },=0A=
=0A=
  // removes whitespace-only text node children=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    var node =3D element.firstChild;=0A=
    while (node) {=0A=
      var nextNode =3D node.nextSibling;=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        element.removeChild(node);=0A=
      node =3D nextNode;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.blank();=0A=
  },=0A=
=0A=
  descendantOf: function(element, ancestor) {=0A=
    element =3D $(element), ancestor =3D $(ancestor);=0A=
=0A=
    if (element.compareDocumentPosition)=0A=
      return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A=
=0A=
    if (element.sourceIndex && !Prototype.Browser.Opera) {=0A=
      var e =3D element.sourceIndex, a =3D ancestor.sourceIndex,=0A=
       nextAncestor =3D ancestor.nextSibling;=0A=
      if (!nextAncestor) {=0A=
        do { ancestor =3D ancestor.parentNode; }=0A=
        while (!(nextAncestor =3D ancestor.nextSibling) && =
ancestor.parentNode);=0A=
      }=0A=
      if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);=0A=
    }=0A=
=0A=
    while (element =3D element.parentNode)=0A=
      if (element =3D=3D ancestor) return true;=0A=
    return false;=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D element.cumulativeOffset();=0A=
    window.scrollTo(pos[0], pos[1]);=0A=
    return element;=0A=
  },=0A=
=0A=
  getStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value) {=0A=
      var css =3D document.defaultView.getComputedStyle(element, null);=0A=
      value =3D css ? css[style] : null;=0A=
    }=0A=
    if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A=
    return value =3D=3D 'auto' ? null : value;=0A=
  },=0A=
=0A=
  getOpacity: function(element) {=0A=
    return $(element).getStyle('opacity');=0A=
  },=0A=
=0A=
  setStyle: function(element, styles) {=0A=
    element =3D $(element);=0A=
    var elementStyle =3D element.style, match;=0A=
    if (Object.isString(styles)) {=0A=
      element.style.cssText +=3D ';' + styles;=0A=
      return styles.include('opacity') ?=0A=
        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : =
element;=0A=
    }=0A=
    for (var property in styles)=0A=
      if (property =3D=3D 'opacity') =
element.setOpacity(styles[property]);=0A=
      else=0A=
        elementStyle[(property =3D=3D 'float' || property =3D=3D =
'cssFloat') ?=0A=
          (elementStyle.styleFloat =3D=3D=3D undefined ? 'cssFloat' : =
'styleFloat') :=0A=
            property] =3D styles[property];=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  setOpacity: function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  },=0A=
=0A=
  getDimensions: function(element) {=0A=
    element =3D $(element);=0A=
    var display =3D $(element).getStyle('display');=0A=
    if (display !=3D 'none' && display !=3D null) // Safari bug=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=0A=
    // All *Width and *Height properties give 0 on elements with display =
none,=0A=
    // so enable the element temporarily=0A=
    var els =3D element.style;=0A=
    var originalVisibility =3D els.visibility;=0A=
    var originalPosition =3D els.position;=0A=
    var originalDisplay =3D els.display;=0A=
    els.visibility =3D 'hidden';=0A=
    els.position =3D 'absolute';=0A=
    els.display =3D 'block';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D originalDisplay;=0A=
    els.position =3D originalPosition;=0A=
    els.visibility =3D originalVisibility;=0A=
    return {width: originalWidth, height: originalHeight};=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      // Opera returns the offset relative to the positioning context, =
when an=0A=
      // element is position relative but top and left have not been =
defined=0A=
      if (window.opera) {=0A=
        element.style.top =3D 0;=0A=
        element.style.left =3D 0;=0A=
      }=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  undoPositioned: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._madePositioned) {=0A=
      element._madePositioned =3D undefined;=0A=
      element.style.position =3D=0A=
        element.style.top =3D=0A=
        element.style.left =3D=0A=
        element.style.bottom =3D=0A=
        element.style.right =3D '';=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  makeClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return element;=0A=
    element._overflow =3D Element.getStyle(element, 'overflow') || =
'auto';=0A=
    if (element._overflow !=3D=3D 'hidden')=0A=
      element.style.overflow =3D 'hidden';=0A=
    return element;=0A=
  },=0A=
=0A=
  undoClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element._overflow) return element;=0A=
    element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : =
element._overflow;=0A=
    element._overflow =3D null;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  positionedOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
      if (element) {=0A=
        if (element.tagName =3D=3D 'BODY') break;=0A=
        var p =3D Element.getStyle(element, 'position');=0A=
        if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A=
      }=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  absolutize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.getStyle('position') =3D=3D 'absolute') return;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    var offsets =3D element.positionedOffset();=0A=
    var top     =3D offsets[1];=0A=
    var left    =3D offsets[0];=0A=
    var width   =3D element.clientWidth;=0A=
    var height  =3D element.clientHeight;=0A=
=0A=
    element._originalLeft   =3D left - parseFloat(element.style.left  || =
0);=0A=
    element._originalTop    =3D top  - parseFloat(element.style.top || =
0);=0A=
    element._originalWidth  =3D element.style.width;=0A=
    element._originalHeight =3D element.style.height;=0A=
=0A=
    element.style.position =3D 'absolute';=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.width  =3D width + 'px';=0A=
    element.style.height =3D height + 'px';=0A=
    return element;=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.getStyle('position') =3D=3D 'relative') return;=0A=
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.=0A=
=0A=
    element.style.position =3D 'relative';=0A=
    var top  =3D parseFloat(element.style.top  || 0) - =
(element._originalTop || 0);=0A=
    var left =3D parseFloat(element.style.left || 0) - =
(element._originalLeft || 0);=0A=
=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.height =3D element._originalHeight;=0A=
    element.style.width  =3D element._originalWidth;=0A=
    return element;=0A=
  },=0A=
=0A=
  cumulativeScrollOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.scrollTop  || 0;=0A=
      valueL +=3D element.scrollLeft || 0;=0A=
      element =3D element.parentNode;=0A=
    } while (element);=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  getOffsetParent: function(element) {=0A=
    if (element.offsetParent) return $(element.offsetParent);=0A=
    if (element =3D=3D document.body) return $(element);=0A=
=0A=
    while ((element =3D element.parentNode) && element !=3D =
document.body)=0A=
      if (Element.getStyle(element, 'position') !=3D 'static')=0A=
        return $(element);=0A=
=0A=
    return $(document.body);=0A=
  },=0A=
=0A=
  viewportOffset: function(forElement) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
=0A=
      // Safari fix=0A=
      if (element.offsetParent =3D=3D document.body &&=0A=
        Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A=
=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      if (!Prototype.Browser.Opera || element.tagName =3D=3D 'BODY') {=0A=
        valueT -=3D element.scrollTop  || 0;=0A=
        valueL -=3D element.scrollLeft || 0;=0A=
      }=0A=
    } while (element =3D element.parentNode);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  },=0A=
=0A=
  clonePosition: function(element, source) {=0A=
    var options =3D Object.extend({=0A=
      setLeft:    true,=0A=
      setTop:     true,=0A=
      setWidth:   true,=0A=
      setHeight:  true,=0A=
      offsetTop:  0,=0A=
      offsetLeft: 0=0A=
    }, arguments[2] || { });=0A=
=0A=
    // find page position of source=0A=
    source =3D $(source);=0A=
    var p =3D source.viewportOffset();=0A=
=0A=
    // find coordinate system to use=0A=
    element =3D $(element);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    // delta [0,0] will do fine with position: fixed elements,=0A=
    // position:absolute needs offsetParent deltas=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A=
      parent =3D element.getOffsetParent();=0A=
      delta =3D parent.viewportOffset();=0A=
    }=0A=
=0A=
    // correct by body offsets (fixes Safari)=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    // set position=0A=
    if (options.setLeft)   element.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if (options.setTop)    element.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if (options.setWidth)  element.style.width =3D source.offsetWidth + =
'px';=0A=
    if (options.setHeight) element.style.height =3D source.offsetHeight =
+ 'px';=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.identify.counter =3D 1;=0A=
=0A=
Object.extend(Element.Methods, {=0A=
  getElementsBySelector: Element.Methods.select,=0A=
  childElements: Element.Methods.immediateDescendants=0A=
});=0A=
=0A=
Element._attributeTranslations =3D {=0A=
  write: {=0A=
    names: {=0A=
      className: 'class',=0A=
      htmlFor:   'for'=0A=
    },=0A=
    values: { }=0A=
  }=0A=
};=0A=
=0A=
=0A=
if (!document.createRange || Prototype.Browser.Opera) {=0A=
  Element.Methods.insert =3D function(element, insertions) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A=
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))=0A=
          insertions =3D { bottom: insertions };=0A=
=0A=
    var t =3D Element._insertionTranslations, content, position, pos, =
tagName;=0A=
=0A=
    for (position in insertions) {=0A=
      content  =3D insertions[position];=0A=
      position =3D position.toLowerCase();=0A=
      pos      =3D t[position];=0A=
=0A=
      if (content && content.toElement) content =3D content.toElement();=0A=
      if (Object.isElement(content)) {=0A=
        pos.insert(element, content);=0A=
        continue;=0A=
      }=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
      tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A=
        ? element.parentNode : element).tagName.toUpperCase();=0A=
=0A=
      if (t.tags[tagName]) {=0A=
        var fragments =3D =
Element._getContentFromAnonymousElement(tagName, content.stripScripts());=0A=
        if (position =3D=3D 'top' || position =3D=3D 'after') =
fragments.reverse();=0A=
        fragments.each(pos.insert.curry(element));=0A=
      }=0A=
      else element.insertAdjacentHTML(pos.adjacency, =
content.stripScripts());=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
    }=0A=
=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
if (Prototype.Browser.Opera) {=0A=
  Element.Methods._getStyle =3D Element.Methods.getStyle;=0A=
  Element.Methods.getStyle =3D function(element, style) {=0A=
    switch(style) {=0A=
      case 'left':=0A=
      case 'top':=0A=
      case 'right':=0A=
      case 'bottom':=0A=
        if (Element._getStyle(element, 'position') =3D=3D 'static') =
return null;=0A=
      default: return Element._getStyle(element, style);=0A=
    }=0A=
  };=0A=
  Element.Methods._readAttribute =3D Element.Methods.readAttribute;=0A=
  Element.Methods.readAttribute =3D function(element, attribute) {=0A=
    if (attribute =3D=3D 'title') return element.title;=0A=
    return Element._readAttribute(element, attribute);=0A=
  };=0A=
}=0A=
=0A=
else if (Prototype.Browser.IE) {=0A=
  $w('positionedOffset getOffsetParent =
viewportOffset').each(function(method) {=0A=
    Element.Methods[method] =3D Element.Methods[method].wrap(=0A=
      function(proceed, element) {=0A=
        element =3D $(element);=0A=
        var position =3D element.getStyle('position');=0A=
        if (position !=3D 'static') return proceed(element);=0A=
        element.setStyle({ position: 'relative' });=0A=
        var value =3D proceed(element);=0A=
        element.setStyle({ position: position });=0A=
        return value;=0A=
      }=0A=
    );=0A=
  });=0A=
=0A=
  Element.Methods.getStyle =3D function(element, style) {=0A=
    element =3D $(element);=0A=
    style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? =
'styleFloat' : style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value && element.currentStyle) value =3D =
element.currentStyle[style];=0A=
=0A=
    if (style =3D=3D 'opacity') {=0A=
      if (value =3D (element.getStyle('filter') || =
'').match(/alpha\(opacity=3D(.*)\)/))=0A=
        if (value[1]) return parseFloat(value[1]) / 100;=0A=
      return 1.0;=0A=
    }=0A=
=0A=
    if (value =3D=3D 'auto') {=0A=
      if ((style =3D=3D 'width' || style =3D=3D 'height') && =
(element.getStyle('display') !=3D 'none'))=0A=
        return element['offset' + style.capitalize()] + 'px';=0A=
      return null;=0A=
    }=0A=
    return value;=0A=
  };=0A=
=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    function stripAlpha(filter){=0A=
      return filter.replace(/alpha\([^\)]*\)/gi,'');=0A=
    }=0A=
    element =3D $(element);=0A=
    var currentStyle =3D element.currentStyle;=0A=
    if ((currentStyle && !currentStyle.hasLayout) ||=0A=
      (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A=
        element.style.zoom =3D 1;=0A=
=0A=
    var filter =3D element.getStyle('filter'), style =3D element.style;=0A=
    if (value =3D=3D 1 || value =3D=3D=3D '') {=0A=
      (filter =3D stripAlpha(filter)) ?=0A=
        style.filter =3D filter : style.removeAttribute('filter');=0A=
      return element;=0A=
    } else if (value < 0.00001) value =3D 0;=0A=
    style.filter =3D stripAlpha(filter) +=0A=
      'alpha(opacity=3D' + (value * 100) + ')';=0A=
    return element;=0A=
  };=0A=
=0A=
  Element._attributeTranslations =3D {=0A=
    read: {=0A=
      names: {=0A=
        'class': 'className',=0A=
        'for':   'htmlFor'=0A=
      },=0A=
      values: {=0A=
        _getAttr: function(element, attribute) {=0A=
          return element.getAttribute(attribute, 2);=0A=
        },=0A=
        _getAttrNode: function(element, attribute) {=0A=
          var node =3D element.getAttributeNode(attribute);=0A=
          return node ? node.value : "";=0A=
        },=0A=
        _getEv: function(element, attribute) {=0A=
          var attribute =3D element.getAttribute(attribute);=0A=
          return attribute ? attribute.toString().slice(23, -2) : null;=0A=
        },=0A=
        _flag: function(element, attribute) {=0A=
          return $(element).hasAttribute(attribute) ? attribute : null;=0A=
        },=0A=
        style: function(element) {=0A=
          return element.style.cssText.toLowerCase();=0A=
        },=0A=
        title: function(element) {=0A=
          return element.title;=0A=
        }=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.write =3D {=0A=
    names: Object.clone(Element._attributeTranslations.read.names),=0A=
    values: {=0A=
      checked: function(element, value) {=0A=
        element.checked =3D !!value;=0A=
      },=0A=
=0A=
      style: function(element, value) {=0A=
        element.style.cssText =3D value ? value : '';=0A=
      }=0A=
    }=0A=
  };=0A=
=0A=
  Element._attributeTranslations.has =3D {};=0A=
=0A=
  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A=
      'encType maxLength readOnly longDesc').each(function(attr) {=0A=
    Element._attributeTranslations.write.names[attr.toLowerCase()] =3D =
attr;=0A=
    Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A=
  });=0A=
=0A=
  (function(v) {=0A=
    Object.extend(v, {=0A=
      href:        v._getAttr,=0A=
      src:         v._getAttr,=0A=
      type:        v._getAttr,=0A=
      action:      v._getAttrNode,=0A=
      disabled:    v._flag,=0A=
      checked:     v._flag,=0A=
      readonly:    v._flag,=0A=
      multiple:    v._flag,=0A=
      onload:      v._getEv,=0A=
      onunload:    v._getEv,=0A=
      onclick:     v._getEv,=0A=
      ondblclick:  v._getEv,=0A=
      onmousedown: v._getEv,=0A=
      onmouseup:   v._getEv,=0A=
      onmouseover: v._getEv,=0A=
      onmousemove: v._getEv,=0A=
      onmouseout:  v._getEv,=0A=
      onfocus:     v._getEv,=0A=
      onblur:      v._getEv,=0A=
      onkeypress:  v._getEv,=0A=
      onkeydown:   v._getEv,=0A=
      onkeyup:     v._getEv,=0A=
      onsubmit:    v._getEv,=0A=
      onreset:     v._getEv,=0A=
      onselect:    v._getEv,=0A=
      onchange:    v._getEv=0A=
    });=0A=
  })(Element._attributeTranslations.read.values);=0A=
}=0A=
=0A=
else if (Prototype.Browser.Gecko && =
/rv:1\.8\.0/.test(navigator.userAgent)) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A=
      (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
else if (Prototype.Browser.WebKit) {=0A=
  Element.Methods.setOpacity =3D function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
=0A=
    if (value =3D=3D 1)=0A=
      if(element.tagName =3D=3D 'IMG' && element.width) {=0A=
        element.width++; element.width--;=0A=
      } else try {=0A=
        var n =3D document.createTextNode(' ');=0A=
        element.appendChild(n);=0A=
        element.removeChild(n);=0A=
      } catch (e) { }=0A=
=0A=
    return element;=0A=
  };=0A=
=0A=
  // Safari returns margins on body which is incorrect if the child is =
absolutely=0A=
  // positioned.  For performance reasons, redefine =
Position.cumulativeOffset for=0A=
  // KHTML/WebKit only.=0A=
  Element.Methods.cumulativeOffset =3D function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      if (element.offsetParent =3D=3D document.body)=0A=
        if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;=0A=
=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
=0A=
    return Element._returnOffset(valueL, valueT);=0A=
  };=0A=
}=0A=
=0A=
if (Prototype.Browser.IE || Prototype.Browser.Opera) {=0A=
  // IE and Opera are missing .innerHTML support for TABLE-related and =
SELECT elements=0A=
  Element.Methods.update =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) return =
element.update().insert(content);=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var tagName =3D element.tagName.toUpperCase();=0A=
=0A=
    if (tagName in Element._insertionTranslations.tags) {=0A=
      $A(element.childNodes).each(function(node) { =
element.removeChild(node) });=0A=
      Element._getContentFromAnonymousElement(tagName, =
content.stripScripts())=0A=
        .each(function(node) { element.appendChild(node) });=0A=
    }=0A=
    else element.innerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
if (document.createElement('div').outerHTML) {=0A=
  Element.Methods.replace =3D function(element, content) {=0A=
    element =3D $(element);=0A=
=0A=
    if (content && content.toElement) content =3D content.toElement();=0A=
    if (Object.isElement(content)) {=0A=
      element.parentNode.replaceChild(content, element);=0A=
      return element;=0A=
    }=0A=
=0A=
    content =3D Object.toHTML(content);=0A=
    var parent =3D element.parentNode, tagName =3D =
parent.tagName.toUpperCase();=0A=
=0A=
    if (Element._insertionTranslations.tags[tagName]) {=0A=
      var nextSibling =3D element.next();=0A=
      var fragments =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
      parent.removeChild(element);=0A=
      if (nextSibling)=0A=
        fragments.each(function(node) { parent.insertBefore(node, =
nextSibling) });=0A=
      else=0A=
        fragments.each(function(node) { parent.appendChild(node) });=0A=
    }=0A=
    else element.outerHTML =3D content.stripScripts();=0A=
=0A=
    content.evalScripts.bind(content).defer();=0A=
    return element;=0A=
  };=0A=
}=0A=
=0A=
Element._returnOffset =3D function(l, t) {=0A=
  var result =3D [l, t];=0A=
  result.left =3D l;=0A=
  result.top =3D t;=0A=
  return result;=0A=
};=0A=
=0A=
Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A=
  var div =3D new Element('div'), t =3D =
Element._insertionTranslations.tags[tagName];=0A=
  div.innerHTML =3D t[0] + html + t[1];=0A=
  t[2].times(function() { div =3D div.firstChild });=0A=
  return $A(div.childNodes);=0A=
};=0A=
=0A=
Element._insertionTranslations =3D {=0A=
  before: {=0A=
    adjacency: 'beforeBegin',=0A=
    insert: function(element, node) {=0A=
      element.parentNode.insertBefore(node, element);=0A=
    },=0A=
    initializeRange: function(element, range) {=0A=
      range.setStartBefore(element);=0A=
    }=0A=
  },=0A=
  top: {=0A=
    adjacency: 'afterBegin',=0A=
    insert: function(element, node) {=0A=
      element.insertBefore(node, element.firstChild);=0A=
    },=0A=
    initializeRange: function(element, range) {=0A=
      range.selectNodeContents(element);=0A=
      range.collapse(true);=0A=
    }=0A=
  },=0A=
  bottom: {=0A=
    adjacency: 'beforeEnd',=0A=
    insert: function(element, node) {=0A=
      element.appendChild(node);=0A=
    }=0A=
  },=0A=
  after: {=0A=
    adjacency: 'afterEnd',=0A=
    insert: function(element, node) {=0A=
      element.parentNode.insertBefore(node, element.nextSibling);=0A=
    },=0A=
    initializeRange: function(element, range) {=0A=
      range.setStartAfter(element);=0A=
    }=0A=
  },=0A=
  tags: {=0A=
    TABLE:  ['<table>',                '</table>',                   1],=0A=
    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],=0A=
    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],=0A=
    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],=0A=
    SELECT: ['<select>',               '</select>',                  1]=0A=
  }=0A=
};=0A=
=0A=
(function() {=0A=
  this.bottom.initializeRange =3D this.top.initializeRange;=0A=
  Object.extend(this.tags, {=0A=
    THEAD: this.tags.TBODY,=0A=
    TFOOT: this.tags.TBODY,=0A=
    TH:    this.tags.TD=0A=
  });=0A=
}).call(Element._insertionTranslations);=0A=
=0A=
Element.Methods.Simulated =3D {=0A=
  hasAttribute: function(element, attribute) {=0A=
    attribute =3D Element._attributeTranslations.has[attribute] || =
attribute;=0A=
    var node =3D $(element).getAttributeNode(attribute);=0A=
    return node && node.specified;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.ByTag =3D { };=0A=
=0A=
Object.extend(Element, Element.Methods);=0A=
=0A=
if (!Prototype.BrowserFeatures.ElementExtensions &&=0A=
    document.createElement('div').__proto__) {=0A=
  window.HTMLElement =3D { };=0A=
  window.HTMLElement.prototype =3D =
document.createElement('div').__proto__;=0A=
  Prototype.BrowserFeatures.ElementExtensions =3D true;=0A=
}=0A=
=0A=
Element.extend =3D (function() {=0A=
  if (Prototype.BrowserFeatures.SpecificElementExtensions)=0A=
    return Prototype.K;=0A=
=0A=
  var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A=
=0A=
  var extend =3D Object.extend(function(element) {=0A=
    if (!element || element._extendedByPrototype ||=0A=
        element.nodeType !=3D 1 || element =3D=3D window) return element;=0A=
=0A=
    var methods =3D Object.clone(Methods),=0A=
      tagName =3D element.tagName, property, value;=0A=
=0A=
    // extend methods for specific tags=0A=
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A=
=0A=
    for (property in methods) {=0A=
      value =3D methods[property];=0A=
      if (Object.isFunction(value) && !(property in element))=0A=
        element[property] =3D value.methodize();=0A=
    }=0A=
=0A=
    element._extendedByPrototype =3D Prototype.emptyFunction;=0A=
    return element;=0A=
=0A=
  }, {=0A=
    refresh: function() {=0A=
      // extend methods for all tags (Safari doesn't need this)=0A=
      if (!Prototype.BrowserFeatures.ElementExtensions) {=0A=
        Object.extend(Methods, Element.Methods);=0A=
        Object.extend(Methods, Element.Methods.Simulated);=0A=
      }=0A=
    }=0A=
  });=0A=
=0A=
  extend.refresh();=0A=
  return extend;=0A=
})();=0A=
=0A=
Element.hasAttribute =3D function(element, attribute) {=0A=
  if (element.hasAttribute) return element.hasAttribute(attribute);=0A=
  return Element.Methods.Simulated.hasAttribute(element, attribute);=0A=
};=0A=
=0A=
Element.addMethods =3D function(methods) {=0A=
  var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A=
=0A=
  if (!methods) {=0A=
    Object.extend(Form, Form.Methods);=0A=
    Object.extend(Form.Element, Form.Element.Methods);=0A=
    Object.extend(Element.Methods.ByTag, {=0A=
      "FORM":     Object.clone(Form.Methods),=0A=
      "INPUT":    Object.clone(Form.Element.Methods),=0A=
      "SELECT":   Object.clone(Form.Element.Methods),=0A=
      "TEXTAREA": Object.clone(Form.Element.Methods)=0A=
    });=0A=
  }=0A=
=0A=
  if (arguments.length =3D=3D 2) {=0A=
    var tagName =3D methods;=0A=
    methods =3D arguments[1];=0A=
  }=0A=
=0A=
  if (!tagName) Object.extend(Element.Methods, methods || { });=0A=
  else {=0A=
    if (Object.isArray(tagName)) tagName.each(extend);=0A=
    else extend(tagName);=0A=
  }=0A=
=0A=
  function extend(tagName) {=0A=
    tagName =3D tagName.toUpperCase();=0A=
    if (!Element.Methods.ByTag[tagName])=0A=
      Element.Methods.ByTag[tagName] =3D { };=0A=
    Object.extend(Element.Methods.ByTag[tagName], methods);=0A=
  }=0A=
=0A=
  function copy(methods, destination, onlyIfAbsent) {=0A=
    onlyIfAbsent =3D onlyIfAbsent || false;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (!Object.isFunction(value)) continue;=0A=
      if (!onlyIfAbsent || !(property in destination))=0A=
        destination[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  function findDOMClass(tagName) {=0A=
    var klass;=0A=
    var trans =3D {=0A=
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A=
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": =
"DList",=0A=
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": =
"Heading",=0A=
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A=
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", =
"CAPTION":=0A=
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A=
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", =
"TR":=0A=
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A=
      "FrameSet", "IFRAME": "IFrame"=0A=
    };=0A=
    if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
=0A=
    window[klass] =3D { };=0A=
    window[klass].prototype =3D =
document.createElement(tagName).__proto__;=0A=
    return window[klass];=0A=
  }=0A=
=0A=
  if (F.ElementExtensions) {=0A=
    copy(Element.Methods, HTMLElement.prototype);=0A=
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A=
  }=0A=
=0A=
  if (F.SpecificElementExtensions) {=0A=
    for (var tag in Element.Methods.ByTag) {=0A=
      var klass =3D findDOMClass(tag);=0A=
      if (Object.isUndefined(klass)) continue;=0A=
      copy(T[tag], klass.prototype);=0A=
    }=0A=
  }=0A=
=0A=
  Object.extend(Element, Element.Methods);=0A=
  delete Element.ByTag;=0A=
=0A=
  if (Element.extend.refresh) Element.extend.refresh();=0A=
  Element.cache =3D { };=0A=
};=0A=
=0A=
document.viewport =3D {=0A=
  getDimensions: function() {=0A=
    var dimensions =3D { };=0A=
    $w('width height').each(function(d) {=0A=
      var D =3D d.capitalize();=0A=
      dimensions[d] =3D self['inner' + D] ||=0A=
       (document.documentElement['client' + D] || document.body['client' =
+ D]);=0A=
    });=0A=
    return dimensions;=0A=
  },=0A=
=0A=
  getWidth: function() {=0A=
    return this.getDimensions().width;=0A=
  },=0A=
=0A=
  getHeight: function() {=0A=
    return this.getDimensions().height;=0A=
  },=0A=
=0A=
  getScrollOffsets: function() {=0A=
    return Element._returnOffset(=0A=
      window.pageXOffset || document.documentElement.scrollLeft || =
document.body.scrollLeft,=0A=
      window.pageYOffset || document.documentElement.scrollTop || =
document.body.scrollTop);=0A=
  }=0A=
};=0A=
/* Portions of the Selector class are derived from Jack Slocum=E2=80=99s =
DomQuery,=0A=
 * part of YUI-Ext version 0.40, distributed under the terms of an =
MIT-style=0A=
 * license.  Please see http://www.yui-ext.com/ for more information. */=0A=
=0A=
var Selector =3D Class.create({=0A=
  initialize: function(expression) {=0A=
    this.expression =3D expression.strip();=0A=
    this.compileMatcher();=0A=
  },=0A=
=0A=
  compileMatcher: function() {=0A=
    // Selectors with namespaced attributes can't use the XPath version=0A=
    if (Prototype.BrowserFeatures.XPath && =
!(/(\[[\w-]*?:|:checked)/).test(this.expression))=0A=
      return this.compileXPathMatcher();=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, h =3D =
Selector.handlers,=0A=
        c =3D Selector.criteria, le, p, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.matcher =3D Selector._cache[e];=0A=
      return;=0A=
    }=0A=
=0A=
    this.matcher =3D ["this.matcher =3D function(root) {",=0A=
                    "var r =3D root, h =3D Selector.handlers, c =3D =
false, n;"];=0A=
=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :=0A=
    	      new Template(c[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.matcher.push("return h.unique(n);\n}");=0A=
    eval(this.matcher.join('\n'));=0A=
    Selector._cache[this.expression] =3D this.matcher;=0A=
  },=0A=
=0A=
  compileXPathMatcher: function() {=0A=
    var e =3D this.expression, ps =3D Selector.patterns,=0A=
        x =3D Selector.xpath, le, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.xpath =3D Selector._cache[e]; return;=0A=
    }=0A=
=0A=
    this.matcher =3D ['.//*'];=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        if (m =3D e.match(ps[i])) {=0A=
          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :=0A=
            new Template(x[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.xpath =3D this.matcher.join('');=0A=
    Selector._cache[this.expression] =3D this.xpath;=0A=
  },=0A=
=0A=
  findElements: function(root) {=0A=
    root =3D root || document;=0A=
    if (this.xpath) return document._getElementsByXPath(this.xpath, =
root);=0A=
    return this.matcher(root);=0A=
  },=0A=
=0A=
  match: function(element) {=0A=
    this.tokens =3D [];=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, as =3D =
Selector.assertions;=0A=
    var le, p, m;=0A=
=0A=
    while (e && le !=3D=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          // use the Selector.assertions methods unless the selector=0A=
          // is too complex.=0A=
          if (as[i]) {=0A=
            this.tokens.push([i, Object.clone(m)]);=0A=
            e =3D e.replace(m[0], '');=0A=
          } else {=0A=
            // reluctantly do a document-wide search=0A=
            // and look for a match in the array=0A=
            return this.findElements(document).include(element);=0A=
          }=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    var match =3D true, name, matches;=0A=
    for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A=
      name =3D token[0], matches =3D token[1];=0A=
      if (!Selector.assertions[name](element, matches)) {=0A=
        match =3D false; break;=0A=
      }=0A=
    }=0A=
=0A=
    return match;=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.expression;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return "#<Selector:" + this.expression.inspect() + ">";=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Selector, {=0A=
  _cache: { },=0A=
=0A=
  xpath: {=0A=
    descendant:   "//*",=0A=
    child:        "/*",=0A=
    adjacent:     "/following-sibling::*[1]",=0A=
    laterSibling: '/following-sibling::*',=0A=
    tagName:      function(m) {=0A=
      if (m[1] =3D=3D '*') return '';=0A=
      return "[local-name()=3D'" + m[1].toLowerCase() +=0A=
             "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A=
    },=0A=
    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A=
    id:           "[@id=3D'#{1}']",=0A=
    attrPresence: "[@#{1}]",=0A=
    attr: function(m) {=0A=
      m[3] =3D m[5] || m[6];=0A=
      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      var h =3D Selector.xpath.pseudos[m[1]];=0A=
      if (!h) return '';=0A=
      if (Object.isFunction(h)) return h(m);=0A=
      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A=
    },=0A=
    operators: {=0A=
      '=3D':  "[@#{1}=3D'#{3}']",=0A=
      '!=3D': "[@#{1}!=3D'#{3}']",=0A=
      '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A=
      '$=3D': "[substring(@#{1}, (string-length(@#{1}) - =
string-length('#{3}') + 1))=3D'#{3}']",=0A=
      '*=3D': "[contains(@#{1}, '#{3}')]",=0A=
      '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A=
      '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A=
    },=0A=
    pseudos: {=0A=
      'first-child': '[not(preceding-sibling::*)]',=0A=
      'last-child':  '[not(following-sibling::*)]',=0A=
      'only-child':  '[not(preceding-sibling::* or =
following-sibling::*)]',=0A=
      'empty':       "[count(*) =3D 0 and (count(text()) =3D 0 or =
translate(text(), ' \t\r\n', '') =3D '')]",=0A=
      'checked':     "[@checked]",=0A=
      'disabled':    "[@disabled]",=0A=
      'enabled':     "[not(@disabled)]",=0A=
      'not': function(m) {=0A=
        var e =3D m[6], p =3D Selector.patterns,=0A=
            x =3D Selector.xpath, le, m, v;=0A=
=0A=
        var exclusion =3D [];=0A=
        while (e && le !=3D e && (/\S/).test(e)) {=0A=
          le =3D e;=0A=
          for (var i in p) {=0A=
            if (m =3D e.match(p[i])) {=0A=
              v =3D Object.isFunction(x[i]) ? x[i](m) : new =
Template(x[i]).evaluate(m);=0A=
              exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A=
              e =3D e.replace(m[0], '');=0A=
              break;=0A=
            }=0A=
          }=0A=
        }=0A=
        return "[not(" + exclusion.join(" and ") + ")]";=0A=
      },=0A=
      'nth-child':      function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-last-child': function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-of-type':    function(m) {=0A=
        return Selector.xpath.pseudos.nth("position() ", m);=0A=
      },=0A=
      'nth-last-of-type': function(m) {=0A=
        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", =
m);=0A=
      },=0A=
      'first-of-type':  function(m) {=0A=
        m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A=
      },=0A=
      'last-of-type':   function(m) {=0A=
        m[6] =3D "1"; return =
Selector.xpath.pseudos['nth-last-of-type'](m);=0A=
      },=0A=
      'only-of-type':   function(m) {=0A=
        var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + =
p['last-of-type'](m);=0A=
      },=0A=
      nth: function(fragment, m) {=0A=
        var mm, formula =3D m[6], predicate;=0A=
        if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
        if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
        if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A=
          return '[' + fragment + "=3D " + mm[1] + ']';=0A=
        if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A=
          if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A=
          var a =3D mm[1] ? Number(mm[1]) : 1;=0A=
          var b =3D mm[2] ? Number(mm[2]) : 0;=0A=
          predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A=
          "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A=
          return new Template(predicate).evaluate({=0A=
            fragment: fragment, a: a, b: b });=0A=
        }=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  criteria: {=0A=
    tagName:      'n =3D h.tagName(n, r, "#{1}", c);   c =3D false;',=0A=
    className:    'n =3D h.className(n, r, "#{1}", c); c =3D false;',=0A=
    id:           'n =3D h.id(n, r, "#{1}", c);        c =3D false;',=0A=
    attrPresence: 'n =3D h.attrPresence(n, r, "#{1}"); c =3D false;',=0A=
    attr: function(m) {=0A=
      m[3] =3D (m[5] || m[6]);=0A=
      return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A=
      return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    descendant:   'c =3D "descendant";',=0A=
    child:        'c =3D "child";',=0A=
    adjacent:     'c =3D "adjacent";',=0A=
    laterSibling: 'c =3D "laterSibling";'=0A=
  },=0A=
=0A=
  patterns: {=0A=
    // combinators must be listed first=0A=
    // (and descendant needs to be last combinator)=0A=
    laterSibling: /^\s*~\s*/,=0A=
    child:        /^\s*>\s*/,=0A=
    adjacent:     /^\s*\+\s*/,=0A=
    descendant:   /^\s/,=0A=
=0A=
    // selectors follow=0A=
    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,=0A=
    id:           /^#([\w\-\*]+)(\b|$)/,=0A=
    className:    /^\.([\w\-\*]+)(\b|$)/,=0A=
    pseudo:       =
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis=
)abled|not)(\((.*?)\))?(\b|$|(?=3D\s)|(?=3D:))/,=0A=
    attrPresence: /^\[([\w]+)\]/,=0A=
    attr:         =
/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^=
\]]*?)))?\]/=0A=
  },=0A=
=0A=
  // for Selector.match and Element#match=0A=
  assertions: {=0A=
    tagName: function(element, matches) {=0A=
      return matches[1].toUpperCase() =3D=3D =
element.tagName.toUpperCase();=0A=
    },=0A=
=0A=
    className: function(element, matches) {=0A=
      return Element.hasClassName(element, matches[1]);=0A=
    },=0A=
=0A=
    id: function(element, matches) {=0A=
      return element.id =3D=3D=3D matches[1];=0A=
    },=0A=
=0A=
    attrPresence: function(element, matches) {=0A=
      return Element.hasAttribute(element, matches[1]);=0A=
    },=0A=
=0A=
    attr: function(element, matches) {=0A=
      var nodeValue =3D Element.readAttribute(element, matches[1]);=0A=
      return Selector.operators[matches[2]](nodeValue, matches[3]);=0A=
    }=0A=
  },=0A=
=0A=
  handlers: {=0A=
    // UTILITY FUNCTIONS=0A=
    // joins two collections=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    // marks an array of nodes for counting=0A=
    mark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._counted =3D true;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    unmark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._counted =3D undefined;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    // mark each child node with its position (for nth calls)=0A=
    // "ofType" flag indicates whether we're indexing for nth-of-type=0A=
    // rather than nth-child=0A=
    index: function(parentNode, reverse, ofType) {=0A=
      parentNode._counted =3D true;=0A=
      if (reverse) {=0A=
        for (var nodes =3D parentNode.childNodes, i =3D nodes.length - =
1, j =3D 1; i >=3D 0; i--) {=0A=
          var node =3D nodes[i];=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) =
node.nodeIndex =3D j++;=0A=
        }=0A=
      } else {=0A=
        for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node =
=3D nodes[i]; i++)=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) =
node.nodeIndex =3D j++;=0A=
      }=0A=
    },=0A=
=0A=
    // filters out duplicates and extends all nodes=0A=
    unique: function(nodes) {=0A=
      if (nodes.length =3D=3D 0) return nodes;=0A=
      var results =3D [], n;=0A=
      for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A=
        if (!(n =3D nodes[i])._counted) {=0A=
          n._counted =3D true;=0A=
          results.push(Element.extend(n));=0A=
        }=0A=
      return Selector.handlers.unmark(results);=0A=
    },=0A=
=0A=
    // COMBINATOR FUNCTIONS=0A=
    descendant: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, node.getElementsByTagName('*'));=0A=
      return results;=0A=
    },=0A=
=0A=
    child: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        for (var j =3D 0, children =3D [], child; child =3D =
node.childNodes[j]; j++)=0A=
          if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') =
results.push(child);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    adjacent: function(nodes) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        var next =3D this.nextElementSibling(node);=0A=
        if (next) results.push(next);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    laterSibling: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, Element.nextSiblings(node));=0A=
      return results;=0A=
    },=0A=
=0A=
    nextElementSibling: function(node) {=0A=
      while (node =3D node.nextSibling)=0A=
	      if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    previousElementSibling: function(node) {=0A=
      while (node =3D node.previousSibling)=0A=
        if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    // TOKEN FUNCTIONS=0A=
    tagName: function(nodes, root, tagName, combinator) {=0A=
      tagName =3D tagName.toUpperCase();=0A=
      var results =3D [], h =3D Selector.handlers;=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          // fastlane for ordinary descendant combinators=0A=
          if (combinator =3D=3D "descendant") {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              h.concat(results, node.getElementsByTagName(tagName));=0A=
            return results;=0A=
          } else nodes =3D this[combinator](nodes);=0A=
          if (tagName =3D=3D "*") return nodes;=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName.toUpperCase() =3D=3D tagName) =
results.push(node);=0A=
        return results;=0A=
      } else return root.getElementsByTagName(tagName);=0A=
    },=0A=
=0A=
    id: function(nodes, root, id, combinator) {=0A=
      var targetNode =3D $(id), h =3D Selector.handlers;=0A=
      if (!targetNode) return [];=0A=
      if (!nodes && root =3D=3D document) return [targetNode];=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          if (combinator =3D=3D 'child') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (targetNode.parentNode =3D=3D node) return [targetNode];=0A=
          } else if (combinator =3D=3D 'descendant') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Element.descendantOf(targetNode, node)) return =
[targetNode];=0A=
          } else if (combinator =3D=3D 'adjacent') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Selector.handlers.previousElementSibling(targetNode) =
=3D=3D node)=0A=
                return [targetNode];=0A=
          } else nodes =3D h[combinator](nodes);=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node =3D=3D targetNode) return [targetNode];=0A=
        return [];=0A=
      }=0A=
      return (targetNode && Element.descendantOf(targetNode, root)) ? =
[targetNode] : [];=0A=
    },=0A=
=0A=
    className: function(nodes, root, className, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      return Selector.handlers.byClassName(nodes, root, className);=0A=
    },=0A=
=0A=
    byClassName: function(nodes, root, className) {=0A=
      if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A=
      var needle =3D ' ' + className + ' ';=0A=
      for (var i =3D 0, results =3D [], node, nodeClassName; node =3D =
nodes[i]; i++) {=0A=
        nodeClassName =3D node.className;=0A=
        if (nodeClassName.length =3D=3D 0) continue;=0A=
        if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' =
').include(needle))=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    attrPresence: function(nodes, root, attr) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      var results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        if (Element.hasAttribute(node, attr)) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    attr: function(nodes, root, attr, value, operator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      var handler =3D Selector.operators[operator], results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        var nodeValue =3D Element.readAttribute(node, attr);=0A=
        if (nodeValue =3D=3D=3D null) continue;=0A=
        if (handler(nodeValue, value)) results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    pseudo: function(nodes, name, value, root, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      return Selector.pseudos[name](nodes, value, root);=0A=
    }=0A=
  },=0A=
=0A=
  pseudos: {=0A=
    'first-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.previousElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'last-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.nextElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'only-child': function(nodes, value, root) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!h.previousElementSibling(node) && =
!h.nextElementSibling(node))=0A=
          results.push(node);=0A=
      return results;=0A=
    },=0A=
    'nth-child':        function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root);=0A=
    },=0A=
    'nth-last-child':   function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true);=0A=
    },=0A=
    'nth-of-type':      function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, false, true);=0A=
    },=0A=
    'nth-last-of-type': function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true, true);=0A=
    },=0A=
    'first-of-type':    function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, false, true);=0A=
    },=0A=
    'last-of-type':     function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, true, true);=0A=
    },=0A=
    'only-of-type':     function(nodes, formula, root) {=0A=
      var p =3D Selector.pseudos;=0A=
      return p['last-of-type'](p['first-of-type'](nodes, formula, root), =
formula, root);=0A=
    },=0A=
=0A=
    // handles the an+b logic=0A=
    getIndices: function(a, b, total) {=0A=
      if (a =3D=3D 0) return b > 0 ? [b] : [];=0A=
      return $R(1, total).inject([], function(memo, i) {=0A=
        if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A=
        return memo;=0A=
      });=0A=
    },=0A=
=0A=
    // handles nth(-last)-child, nth(-last)-of-type, and =
(first|last)-of-type=0A=
    nth: function(nodes, formula, root, reverse, ofType) {=0A=
      if (nodes.length =3D=3D 0) return [];=0A=
      if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
      if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
      var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A=
      h.mark(nodes);=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        if (!node.parentNode._counted) {=0A=
          h.index(node.parentNode, reverse, ofType);=0A=
          indexed.push(node.parentNode);=0A=
        }=0A=
      }=0A=
      if (formula.match(/^\d+$/)) { // just a number=0A=
        formula =3D Number(formula);=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.nodeIndex =3D=3D formula) results.push(node);=0A=
      } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // =
an+b=0A=
        if (m[1] =3D=3D "-") m[1] =3D -1;=0A=
        var a =3D m[1] ? Number(m[1]) : 1;=0A=
        var b =3D m[2] ? Number(m[2]) : 0;=0A=
        var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A=
        for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; =
i++) {=0A=
          for (var j =3D 0; j < l; j++)=0A=
            if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A=
        }=0A=
      }=0A=
      h.unmark(nodes);=0A=
      h.unmark(indexed);=0A=
      return results;=0A=
    },=0A=
=0A=
    'empty': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        // IE treats comments as element nodes=0A=
        if (node.tagName =3D=3D '!' || (node.firstChild && =
!node.innerHTML.match(/^\s*$/))) continue;=0A=
        results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    'not': function(nodes, selector, root) {=0A=
      var h =3D Selector.handlers, selectorType, m;=0A=
      var exclusions =3D new Selector(selector).findElements(root);=0A=
      h.mark(exclusions);=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node._counted) results.push(node);=0A=
      h.unmark(exclusions);=0A=
      return results;=0A=
    },=0A=
=0A=
    'enabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'disabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'checked': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.checked) results.push(node);=0A=
      return results;=0A=
    }=0A=
  },=0A=
=0A=
  operators: {=0A=
    '=3D':  function(nv, v) { return nv =3D=3D v; },=0A=
    '!=3D': function(nv, v) { return nv !=3D v; },=0A=
    '^=3D': function(nv, v) { return nv.startsWith(v); },=0A=
    '$=3D': function(nv, v) { return nv.endsWith(v); },=0A=
    '*=3D': function(nv, v) { return nv.include(v); },=0A=
    '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + =
' '); },=0A=
    '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + =
'-').include('-' + v.toUpperCase() + '-'); }=0A=
  },=0A=
=0A=
  matchElements: function(elements, expression) {=0A=
    var matches =3D new Selector(expression).findElements(), h =3D =
Selector.handlers;=0A=
    h.mark(matches);=0A=
    for (var i =3D 0, results =3D [], element; element =3D elements[i]; =
i++)=0A=
      if (element._counted) results.push(element);=0A=
    h.unmark(matches);=0A=
    return results;=0A=
  },=0A=
=0A=
  findElement: function(elements, expression, index) {=0A=
    if (Object.isNumber(expression)) {=0A=
      index =3D expression; expression =3D false;=0A=
    }=0A=
    return Selector.matchElements(elements, expression || '*')[index || =
0];=0A=
  },=0A=
=0A=
  findChildElements: function(element, expressions) {=0A=
    var exprs =3D expressions.join(','), expressions =3D [];=0A=
    exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {=0A=
      expressions.push(m[1].strip());=0A=
    });=0A=
    var results =3D [], h =3D Selector.handlers;=0A=
    for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A=
      selector =3D new Selector(expressions[i].strip());=0A=
      h.concat(results, selector.findElements(element));=0A=
    }=0A=
    return (l > 1) ? h.unique(results) : results;=0A=
  }=0A=
});=0A=
=0A=
function $$() {=0A=
  return Selector.findChildElements(document, $A(arguments));=0A=
}=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    $(form).reset();=0A=
    return form;=0A=
  },=0A=
=0A=
  serializeElements: function(elements, options) {=0A=
    if (typeof options !=3D 'object') options =3D { hash: !!options };=0A=
    else if (options.hash =3D=3D=3D undefined) options.hash =3D true;=0A=
    var key, value, submitted =3D false, submit =3D options.submit;=0A=
=0A=
    var data =3D elements.inject({ }, function(result, element) {=0A=
      if (!element.disabled && element.name) {=0A=
        key =3D element.name; value =3D $(element).getValue();=0A=
        if (value !=3D null && (element.type !=3D 'submit' || =
(!submitted &&=0A=
            submit !=3D=3D false && (!submit || key =3D=3D submit) && =
(submitted =3D true)))) {=0A=
          if (key in result) {=0A=
            // a key is already present; construct an array of values=0A=
            if (!Object.isArray(result[key])) result[key] =3D =
[result[key]];=0A=
            result[key].push(value);=0A=
          }=0A=
          else result[key] =3D value;=0A=
        }=0A=
      }=0A=
      return result;=0A=
    });=0A=
=0A=
    return options.hash ? data : Object.toQueryString(data);=0A=
  }=0A=
};=0A=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form, options) {=0A=
    return Form.serializeElements(Form.getElements(form), options);=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    return $A($(form).getElementsByTagName('*')).inject([],=0A=
      function(elements, child) {=0A=
        if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A=
          elements.push(Element.extend(child));=0A=
        return elements;=0A=
      }=0A=
    );=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name) return $A(inputs).map(Element.extend);=0A=
=0A=
    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))=0A=
        continue;=0A=
      matchingInputs.push(Element.extend(input));=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('disable');=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('enable');=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    var elements =3D $(form).getElements().findAll(function(element) {=0A=
      return 'hidden' !=3D element.type && !element.disabled;=0A=
    });=0A=
    var firstByIndex =3D elements.findAll(function(element) {=0A=
      return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A=
    }).sortBy(function(element) { return element.tabIndex }).first();=0A=
=0A=
    return firstByIndex ? firstByIndex : elements.find(function(element) =
{=0A=
      return ['input', 'select', =
'textarea'].include(element.tagName.toLowerCase());=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    form =3D $(form);=0A=
    form.findFirstElement().activate();=0A=
    return form;=0A=
  },=0A=
=0A=
  request: function(form, options) {=0A=
    form =3D $(form), options =3D Object.clone(options || { });=0A=
=0A=
    var params =3D options.parameters, action =3D =
form.readAttribute('action') || '';=0A=
    if (action.blank()) action =3D window.location.href;=0A=
    options.parameters =3D form.serialize(true);=0A=
=0A=
    if (params) {=0A=
      if (Object.isString(params)) params =3D params.toQueryParams();=0A=
      Object.extend(options.parameters, params);=0A=
    }=0A=
=0A=
    if (form.hasAttribute('method') && !options.method)=0A=
      options.method =3D form.method;=0A=
=0A=
    return new Ajax.Request(action, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element =3D {=0A=
  focus: function(element) {=0A=
    $(element).focus();=0A=
    return element;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    $(element).select();=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Form.Element.Methods =3D {=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element.disabled && element.name) {=0A=
      var value =3D element.getValue();=0A=
      if (value !=3D undefined) {=0A=
        var pair =3D { };=0A=
        pair[element.name] =3D value;=0A=
        return Object.toQueryString(pair);=0A=
      }=0A=
    }=0A=
    return '';=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    return Form.Element.Serializers[method](element);=0A=
  },=0A=
=0A=
  setValue: function(element, value) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    Form.Element.Serializers[method](element, value);=0A=
    return element;=0A=
  },=0A=
=0A=
  clear: function(element) {=0A=
    $(element).value =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  present: function(element) {=0A=
    return $(element).value !=3D '';=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    try {=0A=
      element.focus();=0A=
      if (element.select && (element.tagName.toLowerCase() !=3D 'input' =
||=0A=
          !['button', 'reset', 'submit'].include(element.type)))=0A=
        element.select();=0A=
    } catch (e) { }=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.blur();=0A=
    element.disabled =3D true;=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D false;=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Field =3D Form.Element;=0A=
var $F =3D Form.Element.Methods.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element.Serializers =3D {=0A=
  input: function(element, value) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return Form.Element.Serializers.inputSelector(element, value);=0A=
      default:=0A=
        return Form.Element.Serializers.textarea(element, value);=0A=
    }=0A=
  },=0A=
=0A=
  inputSelector: function(element, value) {=0A=
    if (value =3D=3D=3D undefined) return element.checked ? =
element.value : null;=0A=
    else element.checked =3D !!value;=0A=
  },=0A=
=0A=
  textarea: function(element, value) {=0A=
    if (value =3D=3D=3D undefined) return element.value;=0A=
    else element.value =3D value;=0A=
  },=0A=
=0A=
  select: function(element, index) {=0A=
    if (index =3D=3D=3D undefined)=0A=
      return this[element.type =3D=3D 'select-one' ?=0A=
        'selectOne' : 'selectMany'](element);=0A=
    else {=0A=
      var opt, value, single =3D !Object.isArray(index);=0A=
      for (var i =3D 0, length =3D element.length; i < length; i++) {=0A=
        opt =3D element.options[i];=0A=
        value =3D this.optionValue(opt);=0A=
        if (single) {=0A=
          if (value =3D=3D index) {=0A=
            opt.selected =3D true;=0A=
            return;=0A=
          }=0A=
        }=0A=
        else opt.selected =3D index.include(value);=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  selectOne: function(element) {=0A=
    var index =3D element.selectedIndex;=0A=
    return index >=3D 0 ? this.optionValue(element.options[index]) : =
null;=0A=
  },=0A=
=0A=
  selectMany: function(element) {=0A=
    var values, length =3D element.length;=0A=
    if (!length) return null;=0A=
=0A=
    for (var i =3D 0, values =3D []; i < length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected) values.push(this.optionValue(opt));=0A=
    }=0A=
    return values;=0A=
  },=0A=
=0A=
  optionValue: function(opt) {=0A=
    // extend element because hasAttribute may not be native=0A=
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A=
  initialize: function($super, element, frequency, callback) {=0A=
    $super(callback, frequency);=0A=
    this.element   =3D $(element);=0A=
    this.lastValue =3D this.getValue();=0A=
  },=0A=
=0A=
  execute: function() {=0A=
    var value =3D this.getValue();=0A=
    if (Object.isString(this.lastValue) && Object.isString(value) ?=0A=
        this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value)) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D Class.create({=0A=
  initialize: function(element, callback) {=0A=
    this.element  =3D $(element);=0A=
    this.callback =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A=
      this.registerFormCallbacks();=0A=
    else=0A=
      this.registerCallback(this.element);=0A=
  },=0A=
=0A=
  onElementEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  },=0A=
=0A=
  registerFormCallbacks: function() {=0A=
    Form.getElements(this.element).each(this.registerCallback, this);=0A=
  },=0A=
=0A=
  registerCallback: function(element) {=0A=
    if (element.type) {=0A=
      switch (element.type.toLowerCase()) {=0A=
        case 'checkbox':=0A=
        case 'radio':=0A=
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
        default:=0A=
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
      }=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
if (!window.Event) var Event =3D { };=0A=
=0A=
Object.extend(Event, {=0A=
  KEY_BACKSPACE: 8,=0A=
  KEY_TAB:       9,=0A=
  KEY_RETURN:   13,=0A=
  KEY_ESC:      27,=0A=
  KEY_LEFT:     37,=0A=
  KEY_UP:       38,=0A=
  KEY_RIGHT:    39,=0A=
  KEY_DOWN:     40,=0A=
  KEY_DELETE:   46,=0A=
  KEY_HOME:     36,=0A=
  KEY_END:      35,=0A=
  KEY_PAGEUP:   33,=0A=
  KEY_PAGEDOWN: 34,=0A=
  KEY_INSERT:   45,=0A=
=0A=
  cache: { },=0A=
=0A=
  relatedTarget: function(event) {=0A=
    var element;=0A=
    switch(event.type) {=0A=
      case 'mouseover': element =3D event.fromElement; break;=0A=
      case 'mouseout':  element =3D event.toElement;   break;=0A=
      default: return null;=0A=
    }=0A=
    return Element.extend(element);=0A=
  }=0A=
});=0A=
=0A=
Event.Methods =3D (function() {=0A=
  var isButton;=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A=
    isButton =3D function(event, code) {=0A=
      return event.button =3D=3D buttonMap[code];=0A=
    };=0A=
=0A=
  } else if (Prototype.Browser.WebKit) {=0A=
    isButton =3D function(event, code) {=0A=
      switch (code) {=0A=
        case 0: return event.which =3D=3D 1 && !event.metaKey;=0A=
        case 1: return event.which =3D=3D 1 && event.metaKey;=0A=
        default: return false;=0A=
      }=0A=
    };=0A=
=0A=
  } else {=0A=
    isButton =3D function(event, code) {=0A=
      return event.which ? (event.which =3D=3D=3D code + 1) : =
(event.button =3D=3D=3D code);=0A=
    };=0A=
  }=0A=
=0A=
  return {=0A=
    isLeftClick:   function(event) { return isButton(event, 0) },=0A=
    isMiddleClick: function(event) { return isButton(event, 1) },=0A=
    isRightClick:  function(event) { return isButton(event, 2) },=0A=
=0A=
    element: function(event) {=0A=
      var node =3D Event.extend(event).target;=0A=
      return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? =
node.parentNode : node);=0A=
    },=0A=
=0A=
    findElement: function(event, expression) {=0A=
      var element =3D Event.element(event);=0A=
      return element.match(expression) ? element : =
element.up(expression);=0A=
    },=0A=
=0A=
    pointer: function(event) {=0A=
      return {=0A=
        x: event.pageX || (event.clientX +=0A=
          (document.documentElement.scrollLeft || =
document.body.scrollLeft)),=0A=
        y: event.pageY || (event.clientY +=0A=
          (document.documentElement.scrollTop || =
document.body.scrollTop))=0A=
      };=0A=
    },=0A=
=0A=
    pointerX: function(event) { return Event.pointer(event).x },=0A=
    pointerY: function(event) { return Event.pointer(event).y },=0A=
=0A=
    stop: function(event) {=0A=
      Event.extend(event);=0A=
      event.preventDefault();=0A=
      event.stopPropagation();=0A=
      event.stopped =3D true;=0A=
    }=0A=
  };=0A=
})();=0A=
=0A=
Event.extend =3D (function() {=0A=
  var methods =3D Object.keys(Event.Methods).inject({ }, function(m, =
name) {=0A=
    m[name] =3D Event.Methods[name].methodize();=0A=
    return m;=0A=
  });=0A=
=0A=
  if (Prototype.Browser.IE) {=0A=
    Object.extend(methods, {=0A=
      stopPropagation: function() { this.cancelBubble =3D true },=0A=
      preventDefault:  function() { this.returnValue =3D false },=0A=
      inspect: function() { return "[object Event]" }=0A=
    });=0A=
=0A=
    return function(event) {=0A=
      if (!event) return false;=0A=
      if (event._extendedByPrototype) return event;=0A=
=0A=
      event._extendedByPrototype =3D Prototype.emptyFunction;=0A=
      var pointer =3D Event.pointer(event);=0A=
      Object.extend(event, {=0A=
        target: event.srcElement,=0A=
        relatedTarget: Event.relatedTarget(event),=0A=
        pageX:  pointer.x,=0A=
        pageY:  pointer.y=0A=
      });=0A=
      return Object.extend(event, methods);=0A=
    };=0A=
=0A=
  } else {=0A=
    Event.prototype =3D Event.prototype || =
document.createEvent("HTMLEvents").__proto__;=0A=
    Object.extend(Event.prototype, methods);=0A=
    return Prototype.K;=0A=
  }=0A=
})();=0A=
=0A=
Object.extend(Event, (function() {=0A=
  var cache =3D Event.cache;=0A=
=0A=
  function getEventID(element) {=0A=
    if (element._eventID) return element._eventID;=0A=
    arguments.callee.id =3D arguments.callee.id || 1;=0A=
    return element._eventID =3D ++arguments.callee.id;=0A=
  }=0A=
=0A=
  function getDOMEventName(eventName) {=0A=
    if (eventName && eventName.include(':')) return "dataavailable";=0A=
    return eventName;=0A=
  }=0A=
=0A=
  function getCacheForID(id) {=0A=
    return cache[id] =3D cache[id] || { };=0A=
  }=0A=
=0A=
  function getWrappersForEventName(id, eventName) {=0A=
    var c =3D getCacheForID(id);=0A=
    return c[eventName] =3D c[eventName] || [];=0A=
  }=0A=
=0A=
  function createWrapper(element, eventName, handler) {=0A=
    var id =3D getEventID(element);=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    if (c.pluck("handler").include(handler)) return false;=0A=
=0A=
    var wrapper =3D function(event) {=0A=
      if (!Event || !Event.extend ||=0A=
        (event.eventName && event.eventName !=3D eventName))=0A=
          return false;=0A=
=0A=
      Event.extend(event);=0A=
      handler.call(element, event)=0A=
    };=0A=
=0A=
    wrapper.handler =3D handler;=0A=
    c.push(wrapper);=0A=
    return wrapper;=0A=
  }=0A=
=0A=
  function findWrapper(id, eventName, handler) {=0A=
    var c =3D getWrappersForEventName(id, eventName);=0A=
    return c.find(function(wrapper) { return wrapper.handler =3D=3D =
handler });=0A=
  }=0A=
=0A=
  function destroyWrapper(id, eventName, handler) {=0A=
    var c =3D getCacheForID(id);=0A=
    if (!c[eventName]) return false;=0A=
    c[eventName] =3D c[eventName].without(findWrapper(id, eventName, =
handler));=0A=
  }=0A=
=0A=
  function destroyCache() {=0A=
    for (var id in cache)=0A=
      for (var eventName in cache[id])=0A=
        cache[id][eventName] =3D null;=0A=
  }=0A=
=0A=
  if (window.attachEvent) {=0A=
    window.attachEvent("onunload", destroyCache);=0A=
  }=0A=
=0A=
  return {=0A=
    observe: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var name =3D getDOMEventName(eventName);=0A=
=0A=
      var wrapper =3D createWrapper(element, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.addEventListener) {=0A=
        element.addEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.attachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    stopObserving: function(element, eventName, handler) {=0A=
      element =3D $(element);=0A=
      var id =3D getEventID(element), name =3D =
getDOMEventName(eventName);=0A=
=0A=
      if (!handler && eventName) {=0A=
        getWrappersForEventName(id, eventName).each(function(wrapper) {=0A=
          element.stopObserving(eventName, wrapper.handler);=0A=
        });=0A=
        return element;=0A=
=0A=
      } else if (!eventName) {=0A=
        Object.keys(getCacheForID(id)).each(function(eventName) {=0A=
          element.stopObserving(eventName);=0A=
        });=0A=
        return element;=0A=
      }=0A=
=0A=
      var wrapper =3D findWrapper(id, eventName, handler);=0A=
      if (!wrapper) return element;=0A=
=0A=
      if (element.removeEventListener) {=0A=
        element.removeEventListener(name, wrapper, false);=0A=
      } else {=0A=
        element.detachEvent("on" + name, wrapper);=0A=
      }=0A=
=0A=
      destroyWrapper(id, eventName, handler);=0A=
=0A=
      return element;=0A=
    },=0A=
=0A=
    fire: function(element, eventName, memo) {=0A=
      element =3D $(element);=0A=
      if (element =3D=3D document && document.createEvent && =
!element.dispatchEvent)=0A=
        element =3D document.documentElement;=0A=
=0A=
      if (document.createEvent) {=0A=
        var event =3D document.createEvent("HTMLEvents");=0A=
        event.initEvent("dataavailable", true, true);=0A=
      } else {=0A=
        var event =3D document.createEventObject();=0A=
        event.eventType =3D "ondataavailable";=0A=
      }=0A=
=0A=
      event.eventName =3D eventName;=0A=
      event.memo =3D memo || { };=0A=
=0A=
      if (document.createEvent) {=0A=
        element.dispatchEvent(event);=0A=
      } else {=0A=
        element.fireEvent(event.eventType, event);=0A=
      }=0A=
=0A=
      return event;=0A=
    }=0A=
  };=0A=
})());=0A=
=0A=
Object.extend(Event, Event.Methods);=0A=
=0A=
Element.addMethods({=0A=
  fire:          Event.fire,=0A=
  observe:       Event.observe,=0A=
  stopObserving: Event.stopObserving=0A=
});=0A=
=0A=
Object.extend(document, {=0A=
  fire:          Element.Methods.fire.methodize(),=0A=
  observe:       Element.Methods.observe.methodize(),=0A=
  stopObserving: Element.Methods.stopObserving.methodize()=0A=
});=0A=
=0A=
(function() {=0A=
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A=
     Matthias Miller, Dean Edwards and John Resig. */=0A=
=0A=
  var timer, fired =3D false;=0A=
=0A=
  function fireContentLoadedEvent() {=0A=
    if (fired) return;=0A=
    if (timer) window.clearInterval(timer);=0A=
    document.fire("dom:loaded");=0A=
    fired =3D true;=0A=
  }=0A=
=0A=
  if (document.addEventListener) {=0A=
    if (Prototype.Browser.WebKit) {=0A=
      timer =3D window.setInterval(function() {=0A=
        if (/loaded|complete/.test(document.readyState))=0A=
          fireContentLoadedEvent();=0A=
      }, 0);=0A=
=0A=
      Event.observe(window, "load", fireContentLoadedEvent);=0A=
=0A=
    } else {=0A=
      document.addEventListener("DOMContentLoaded",=0A=
        fireContentLoadedEvent, false);=0A=
    }=0A=
=0A=
  } else {=0A=
    document.write("<script id=3D__onDOMContentLoaded defer =
src=3D//:><\/script>");=0A=
    $("__onDOMContentLoaded").onreadystatechange =3D function() {=0A=
      if (this.readyState =3D=3D "complete") {=0A=
        this.onreadystatechange =3D null;=0A=
        fireContentLoadedEvent();=0A=
      }=0A=
    };=0A=
  }=0A=
})();=0A=
/*------------------------------- DEPRECATED =
-------------------------------*/=0A=
=0A=
Hash.toQueryString =3D Object.toQueryString;=0A=
=0A=
var Toggle =3D { display: Element.toggle };=0A=
=0A=
Element.Methods.childOf =3D Element.Methods.descendantOf;=0A=
=0A=
var Insertion =3D {=0A=
  Before: function(element, content) {=0A=
    return Element.insert(element, {before:content});=0A=
  },=0A=
=0A=
  Top: function(element, content) {=0A=
    return Element.insert(element, {top:content});=0A=
  },=0A=
=0A=
  Bottom: function(element, content) {=0A=
    return Element.insert(element, {bottom:content});=0A=
  },=0A=
=0A=
  After: function(element, content) {=0A=
    return Element.insert(element, {after:content});=0A=
  }=0A=
};=0A=
=0A=
var $continue =3D new Error('"throw $continue" is deprecated, use =
"return" instead');=0A=
=0A=
// This should be moved to script.aculo.us; notice the deprecated methods=0A=
// further below, that map to the newer Element methods.=0A=
var Position =3D {=0A=
  // set to true if needed, warning: firefox performance problems=0A=
  // NOT neeeded for page scrolling, only if draggable contained in=0A=
  // scrollable elements=0A=
  includeScrollOffsets: false,=0A=
=0A=
  // must be called before calling withinIncludingScrolloffset, every =
time the=0A=
  // page is scrolled=0A=
  prepare: function() {=0A=
    this.deltaX =3D  window.pageXOffset=0A=
                || document.documentElement.scrollLeft=0A=
                || document.body.scrollLeft=0A=
                || 0;=0A=
    this.deltaY =3D  window.pageYOffset=0A=
                || document.documentElement.scrollTop=0A=
                || document.body.scrollTop=0A=
                || 0;=0A=
  },=0A=
=0A=
  // caches x/y coordinate pair to use with overlap=0A=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (y >=3D this.offset[1] &&=0A=
            y <  this.offset[1] + element.offsetHeight &&=0A=
            x >=3D this.offset[0] &&=0A=
            x <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  withinIncludingScrolloffsets: function(element, x, y) {=0A=
    var offsetcache =3D Element.cumulativeScrollOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D Element.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  // within must be called directly before=0A=
  overlap: function(mode, element) {=0A=
    if (!mode) return 0;=0A=
    if (mode =3D=3D 'vertical')=0A=
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A=
        element.offsetHeight;=0A=
    if (mode =3D=3D 'horizontal')=0A=
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A=
        element.offsetWidth;=0A=
  },=0A=
=0A=
  // Deprecation layer -- use newer Element methods now (1.5.2).=0A=
=0A=
  cumulativeOffset: Element.Methods.cumulativeOffset,=0A=
=0A=
  positionedOffset: Element.Methods.positionedOffset,=0A=
=0A=
  absolutize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.absolutize(element);=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    Position.prepare();=0A=
    return Element.relativize(element);=0A=
  },=0A=
=0A=
  realOffset: Element.Methods.cumulativeScrollOffset,=0A=
=0A=
  offsetParent: Element.Methods.getOffsetParent,=0A=
=0A=
  page: Element.Methods.viewportOffset,=0A=
=0A=
  clone: function(source, target, options) {=0A=
    options =3D options || { };=0A=
    return Element.clonePosition(target, source, options);=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!document.getElementsByClassName) document.getElementsByClassName =
=3D function(instanceMethods){=0A=
  function iter(name) {=0A=
    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' =
" + name + " ')]";=0A=
  }=0A=
=0A=
  instanceMethods.getElementsByClassName =3D =
Prototype.BrowserFeatures.XPath ?=0A=
  function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') =
: iter(className);=0A=
    return cond ? document._getElementsByXPath('.//*' + cond, element) : =
[];=0A=
  } : function(element, className) {=0A=
    className =3D className.toString().strip();=0A=
    var elements =3D [], classNames =3D (/\s/.test(className) ? =
$w(className) : null);=0A=
    if (!classNames && !className) return elements;=0A=
=0A=
    var nodes =3D $(element).getElementsByTagName('*');=0A=
    className =3D ' ' + className + ' ';=0A=
=0A=
    for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A=
      if (child.className && (cn =3D ' ' + child.className + ' ') && =
(cn.include(className) ||=0A=
          (classNames && classNames.all(function(name) {=0A=
            return !name.toString().blank() && cn.include(' ' + name + ' =
');=0A=
          }))))=0A=
        elements.push(Element.extend(child));=0A=
    }=0A=
    return elements;=0A=
  };=0A=
=0A=
  return function(className, parentElement) {=0A=
    return $(parentElement || =
document.body).getElementsByClassName(className);=0A=
  };=0A=
}(Element.Methods);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.ClassNames =3D Class.create();=0A=
Element.ClassNames.prototype =3D {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    this.element.className.split(/\s+/).select(function(name) {=0A=
      return name.length > 0;=0A=
    })._each(iterator);=0A=
  },=0A=
=0A=
  set: function(className) {=0A=
    this.element.className =3D className;=0A=
  },=0A=
=0A=
  add: function(classNameToAdd) {=0A=
    if (this.include(classNameToAdd)) return;=0A=
    this.set($A(this).concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set($A(this).without(classNameToRemove).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return $A(this).join(' ');=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.ClassNames.prototype, Enumerable);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.addMethods();
------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/javascript/effects.js

// script.aculo.us effects.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007=0A=
=0A=
// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
// Contributors:=0A=
//  Justin Palmer (http://encytemedia.com/)=0A=
//  Mark Pilgrim (http://diveintomark.org/)=0A=
//  Martin Bialasinki=0A=
// =0A=
// script.aculo.us is freely distributable under the terms of an =
MIT-style license.=0A=
// For details, see the script.aculo.us web site: =
http://script.aculo.us/ =0A=
=0A=
// converts rgb() and #xxx to #xxxxxx format,  =0A=
// returns self (or first argument) if not convertable  =0A=
String.prototype.parseColor =3D function() {  =0A=
  var color =3D '#';=0A=
  if (this.slice(0,4) =3D=3D 'rgb(') {  =0A=
    var cols =3D this.slice(4,this.length-1).split(',');  =0A=
    var i=3D0; do { color +=3D parseInt(cols[i]).toColorPart() } while =
(++i<3);  =0A=
  } else {  =0A=
    if (this.slice(0,1) =3D=3D '#') {  =0A=
      if (this.length=3D=3D4) for(var i=3D1;i<4;i++) color +=3D =
(this.charAt(i) + this.charAt(i)).toLowerCase();  =0A=
      if (this.length=3D=3D7) color =3D this.toLowerCase();  =0A=
    }  =0A=
  }  =0A=
  return (color.length=3D=3D7 ? color : (arguments[0] || this));  =0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.collectTextNodes =3D function(element) {  =0A=
  return $A($(element).childNodes).collect( function(node) {=0A=
    return (node.nodeType=3D=3D3 ? node.nodeValue : =0A=
      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));=0A=
  }).flatten().join('');=0A=
};=0A=
=0A=
Element.collectTextNodesIgnoreClass =3D function(element, className) {  =0A=
  return $A($(element).childNodes).collect( function(node) {=0A=
    return (node.nodeType=3D=3D3 ? node.nodeValue : =0A=
      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? =0A=
        Element.collectTextNodesIgnoreClass(node, className) : ''));=0A=
  }).flatten().join('');=0A=
};=0A=
=0A=
Element.setContentZoom =3D function(element, percent) {=0A=
  element =3D $(element);  =0A=
  element.setStyle({fontSize: (percent/100) + 'em'});   =0A=
  if (Prototype.Browser.WebKit) window.scrollBy(0,0);=0A=
  return element;=0A=
};=0A=
=0A=
Element.getInlineOpacity =3D function(element){=0A=
  return $(element).style.opacity || '';=0A=
};=0A=
=0A=
Element.forceRerendering =3D function(element) {=0A=
  try {=0A=
    element =3D $(element);=0A=
    var n =3D document.createTextNode(' ');=0A=
    element.appendChild(n);=0A=
    element.removeChild(n);=0A=
  } catch(e) { }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Effect =3D {=0A=
  _elementDoesNotExistError: {=0A=
    name: 'ElementDoesNotExistError',=0A=
    message: 'The specified DOM element does not exist, but is required =
for this effect to operate'=0A=
  },=0A=
  Transitions: {=0A=
    linear: Prototype.K,=0A=
    sinoidal: function(pos) {=0A=
      return (-Math.cos(pos*Math.PI)/2) + 0.5;=0A=
    },=0A=
    reverse: function(pos) {=0A=
      return 1-pos;=0A=
    },=0A=
    flicker: function(pos) {=0A=
      var pos =3D ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;=0A=
      return pos > 1 ? 1 : pos;=0A=
    },=0A=
    wobble: function(pos) {=0A=
      return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;=0A=
    },=0A=
    pulse: function(pos, pulses) { =0A=
      pulses =3D pulses || 5; =0A=
      return (=0A=
        ((pos % (1/pulses)) * pulses).round() =3D=3D 0 ? =0A=
              ((pos * pulses * 2) - (pos * pulses * 2).floor()) : =0A=
          1 - ((pos * pulses * 2) - (pos * pulses * 2).floor())=0A=
        );=0A=
    },=0A=
    spring: function(pos) { =0A=
      return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); =0A=
    },=0A=
    none: function(pos) {=0A=
      return 0;=0A=
    },=0A=
    full: function(pos) {=0A=
      return 1;=0A=
    }=0A=
  },=0A=
  DefaultOptions: {=0A=
    duration:   1.0,   // seconds=0A=
    fps:        100,   // 100=3D assume 66fps max.=0A=
    sync:       false, // true for combining=0A=
    from:       0.0,=0A=
    to:         1.0,=0A=
    delay:      0.0,=0A=
    queue:      'parallel'=0A=
  },=0A=
  tagifyText: function(element) {=0A=
    var tagifyStyle =3D 'position:relative';=0A=
    if (Prototype.Browser.IE) tagifyStyle +=3D ';zoom:1';=0A=
    =0A=
    element =3D $(element);=0A=
    $A(element.childNodes).each( function(child) {=0A=
      if (child.nodeType=3D=3D3) {=0A=
        child.nodeValue.toArray().each( function(character) {=0A=
          element.insertBefore(=0A=
            new Element('span', {style: tagifyStyle}).update(=0A=
              character =3D=3D ' ' ? String.fromCharCode(160) : =
character), =0A=
              child);=0A=
        });=0A=
        Element.remove(child);=0A=
      }=0A=
    });=0A=
  },=0A=
  multiple: function(element, effect) {=0A=
    var elements;=0A=
    if (((typeof element =3D=3D 'object') || =0A=
        Object.isFunction(element)) && =0A=
       (element.length))=0A=
      elements =3D element;=0A=
    else=0A=
      elements =3D $(element).childNodes;=0A=
      =0A=
    var options =3D Object.extend({=0A=
      speed: 0.1,=0A=
      delay: 0.0=0A=
    }, arguments[2] || { });=0A=
    var masterDelay =3D options.delay;=0A=
=0A=
    $A(elements).each( function(element, index) {=0A=
      new effect(element, Object.extend(options, { delay: index * =
options.speed + masterDelay }));=0A=
    });=0A=
  },=0A=
  PAIRS: {=0A=
    'slide':  ['SlideDown','SlideUp'],=0A=
    'blind':  ['BlindDown','BlindUp'],=0A=
    'appear': ['Appear','Fade']=0A=
  },=0A=
  toggle: function(element, effect) {=0A=
    element =3D $(element);=0A=
    effect =3D (effect || 'appear').toLowerCase();=0A=
    var options =3D Object.extend({=0A=
      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }=0A=
    }, arguments[2] || { });=0A=
    Effect[element.visible() ? =0A=
      Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, =
options);=0A=
  }=0A=
};=0A=
=0A=
Effect.DefaultOptions.transition =3D Effect.Transitions.sinoidal;=0A=
=0A=
/* ------------- core effects ------------- */=0A=
=0A=
Effect.ScopedQueue =3D Class.create(Enumerable, {=0A=
  initialize: function() {=0A=
    this.effects  =3D [];=0A=
    this.interval =3D null;    =0A=
  },=0A=
  _each: function(iterator) {=0A=
    this.effects._each(iterator);=0A=
  },=0A=
  add: function(effect) {=0A=
    var timestamp =3D new Date().getTime();=0A=
    =0A=
    var position =3D Object.isString(effect.options.queue) ? =0A=
      effect.options.queue : effect.options.queue.position;=0A=
    =0A=
    switch(position) {=0A=
      case 'front':=0A=
        // move unstarted effects after this effect  =0A=
        this.effects.findAll(function(e){ return e.state=3D=3D'idle' =
}).each( function(e) {=0A=
            e.startOn  +=3D effect.finishOn;=0A=
            e.finishOn +=3D effect.finishOn;=0A=
          });=0A=
        break;=0A=
      case 'with-last':=0A=
        timestamp =3D this.effects.pluck('startOn').max() || timestamp;=0A=
        break;=0A=
      case 'end':=0A=
        // start effect after last queued effect has finished=0A=
        timestamp =3D this.effects.pluck('finishOn').max() || timestamp;=0A=
        break;=0A=
    }=0A=
    =0A=
    effect.startOn  +=3D timestamp;=0A=
    effect.finishOn +=3D timestamp;=0A=
=0A=
    if (!effect.options.queue.limit || (this.effects.length < =
effect.options.queue.limit))=0A=
      this.effects.push(effect);=0A=
    =0A=
    if (!this.interval)=0A=
      this.interval =3D setInterval(this.loop.bind(this), 15);=0A=
  },=0A=
  remove: function(effect) {=0A=
    this.effects =3D this.effects.reject(function(e) { return =
e=3D=3Deffect });=0A=
    if (this.effects.length =3D=3D 0) {=0A=
      clearInterval(this.interval);=0A=
      this.interval =3D null;=0A=
    }=0A=
  },=0A=
  loop: function() {=0A=
    var timePos =3D new Date().getTime();=0A=
    for(var i=3D0, len=3Dthis.effects.length;i<len;i++) =0A=
      this.effects[i] && this.effects[i].loop(timePos);=0A=
  }=0A=
});=0A=
=0A=
Effect.Queues =3D {=0A=
  instances: $H(),=0A=
  get: function(queueName) {=0A=
    if (!Object.isString(queueName)) return queueName;=0A=
    =0A=
    return this.instances.get(queueName) ||=0A=
      this.instances.set(queueName, new Effect.ScopedQueue());=0A=
  }=0A=
};=0A=
Effect.Queue =3D Effect.Queues.get('global');=0A=
=0A=
Effect.Base =3D Class.create({=0A=
  position: null,=0A=
  start: function(options) {=0A=
    function codeForEvent(options,eventName){=0A=
      return (=0A=
        (options[eventName+'Internal'] ? =
'this.options.'+eventName+'Internal(this);' : '') +=0A=
        (options[eventName] ? 'this.options.'+eventName+'(this);' : '')=0A=
      );=0A=
    }=0A=
    if (options && options.transition =3D=3D=3D false) =
options.transition =3D Effect.Transitions.linear;=0A=
    this.options      =3D Object.extend(Object.extend({ =
},Effect.DefaultOptions), options || { });=0A=
    this.currentFrame =3D 0;=0A=
    this.state        =3D 'idle';=0A=
    this.startOn      =3D this.options.delay*1000;=0A=
    this.finishOn     =3D this.startOn+(this.options.duration*1000);=0A=
    this.fromToDelta  =3D this.options.to-this.options.from;=0A=
    this.totalTime    =3D this.finishOn-this.startOn;=0A=
    this.totalFrames  =3D this.options.fps*this.options.duration;=0A=
    =0A=
    eval('this.render =3D function(pos){ '+=0A=
      'if (this.state=3D=3D"idle"){this.state=3D"running";'+=0A=
      codeForEvent(this.options,'beforeSetup')+=0A=
      (this.setup ? 'this.setup();':'')+ =0A=
      codeForEvent(this.options,'afterSetup')+=0A=
      '};if (this.state=3D=3D"running"){'+=0A=
      =
'pos=3Dthis.options.transition(pos)*'+this.fromToDelta+'+'+this.options.f=
rom+';'+=0A=
      'this.position=3Dpos;'+=0A=
      codeForEvent(this.options,'beforeUpdate')+=0A=
      (this.update ? 'this.update(pos);':'')+=0A=
      codeForEvent(this.options,'afterUpdate')+=0A=
      '}}');=0A=
    =0A=
    this.event('beforeStart');=0A=
    if (!this.options.sync)=0A=
      Effect.Queues.get(Object.isString(this.options.queue) ? =0A=
        'global' : this.options.queue.scope).add(this);=0A=
  },=0A=
  loop: function(timePos) {=0A=
    if (timePos >=3D this.startOn) {=0A=
      if (timePos >=3D this.finishOn) {=0A=
        this.render(1.0);=0A=
        this.cancel();=0A=
        this.event('beforeFinish');=0A=
        if (this.finish) this.finish(); =0A=
        this.event('afterFinish');=0A=
        return;  =0A=
      }=0A=
      var pos   =3D (timePos - this.startOn) / this.totalTime,=0A=
          frame =3D (pos * this.totalFrames).round();=0A=
      if (frame > this.currentFrame) {=0A=
        this.render(pos);=0A=
        this.currentFrame =3D frame;=0A=
      }=0A=
    }=0A=
  },=0A=
  cancel: function() {=0A=
    if (!this.options.sync)=0A=
      Effect.Queues.get(Object.isString(this.options.queue) ? =0A=
        'global' : this.options.queue.scope).remove(this);=0A=
    this.state =3D 'finished';=0A=
  },=0A=
  event: function(eventName) {=0A=
    if (this.options[eventName + 'Internal']) this.options[eventName + =
'Internal'](this);=0A=
    if (this.options[eventName]) this.options[eventName](this);=0A=
  },=0A=
  inspect: function() {=0A=
    var data =3D $H();=0A=
    for(property in this)=0A=
      if (!Object.isFunction(this[property])) data.set(property, =
this[property]);=0A=
    return '#<Effect:' + data.inspect() + ',options:' + =
$H(this.options).inspect() + '>';=0A=
  }=0A=
});=0A=
=0A=
Effect.Parallel =3D Class.create(Effect.Base, {=0A=
  initialize: function(effects) {=0A=
    this.effects =3D effects || [];=0A=
    this.start(arguments[1]);=0A=
  },=0A=
  update: function(position) {=0A=
    this.effects.invoke('render', position);=0A=
  },=0A=
  finish: function(position) {=0A=
    this.effects.each( function(effect) {=0A=
      effect.render(1.0);=0A=
      effect.cancel();=0A=
      effect.event('beforeFinish');=0A=
      if (effect.finish) effect.finish(position);=0A=
      effect.event('afterFinish');=0A=
    });=0A=
  }=0A=
});=0A=
=0A=
Effect.Tween =3D Class.create(Effect.Base, {=0A=
  initialize: function(object, from, to) {=0A=
    object =3D Object.isString(object) ? $(object) : object;=0A=
    var args =3D $A(arguments), method =3D args.last(), =0A=
      options =3D args.length =3D=3D 5 ? args[3] : null;=0A=
    this.method =3D Object.isFunction(method) ? method.bind(object) :=0A=
      Object.isFunction(object[method]) ? object[method].bind(object) : =0A=
      function(value) { object[method] =3D value };=0A=
    this.start(Object.extend({ from: from, to: to }, options || { }));=0A=
  },=0A=
  update: function(position) {=0A=
    this.method(position);=0A=
  }=0A=
});=0A=
=0A=
Effect.Event =3D Class.create(Effect.Base, {=0A=
  initialize: function() {=0A=
    this.start(Object.extend({ duration: 0 }, arguments[0] || { }));=0A=
  },=0A=
  update: Prototype.emptyFunction=0A=
});=0A=
=0A=
Effect.Opacity =3D Class.create(Effect.Base, {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    // make this work on IE on elements without 'layout'=0A=
    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))=0A=
      this.element.setStyle({zoom: 1});=0A=
    var options =3D Object.extend({=0A=
      from: this.element.getOpacity() || 0.0,=0A=
      to:   1.0=0A=
    }, arguments[1] || { });=0A=
    this.start(options);=0A=
  },=0A=
  update: function(position) {=0A=
    this.element.setOpacity(position);=0A=
  }=0A=
});=0A=
=0A=
Effect.Move =3D Class.create(Effect.Base, {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    var options =3D Object.extend({=0A=
      x:    0,=0A=
      y:    0,=0A=
      mode: 'relative'=0A=
    }, arguments[1] || { });=0A=
    this.start(options);=0A=
  },=0A=
  setup: function() {=0A=
    this.element.makePositioned();=0A=
    this.originalLeft =3D parseFloat(this.element.getStyle('left') || =
'0');=0A=
    this.originalTop  =3D parseFloat(this.element.getStyle('top')  || =
'0');=0A=
    if (this.options.mode =3D=3D 'absolute') {=0A=
      this.options.x =3D this.options.x - this.originalLeft;=0A=
      this.options.y =3D this.options.y - this.originalTop;=0A=
    }=0A=
  },=0A=
  update: function(position) {=0A=
    this.element.setStyle({=0A=
      left: (this.options.x  * position + this.originalLeft).round() + =
'px',=0A=
      top:  (this.options.y  * position + this.originalTop).round()  + =
'px'=0A=
    });=0A=
  }=0A=
});=0A=
=0A=
// for backwards compatibility=0A=
Effect.MoveBy =3D function(element, toTop, toLeft) {=0A=
  return new Effect.Move(element, =0A=
    Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));=0A=
};=0A=
=0A=
Effect.Scale =3D Class.create(Effect.Base, {=0A=
  initialize: function(element, percent) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    var options =3D Object.extend({=0A=
      scaleX: true,=0A=
      scaleY: true,=0A=
      scaleContent: true,=0A=
      scaleFromCenter: false,=0A=
      scaleMode: 'box',        // 'box' or 'contents' or { } with =
provided values=0A=
      scaleFrom: 100.0,=0A=
      scaleTo:   percent=0A=
    }, arguments[2] || { });=0A=
    this.start(options);=0A=
  },=0A=
  setup: function() {=0A=
    this.restoreAfterFinish =3D this.options.restoreAfterFinish || false;=0A=
    this.elementPositioning =3D this.element.getStyle('position');=0A=
    =0A=
    this.originalStyle =3D { };=0A=
    ['top','left','width','height','fontSize'].each( function(k) {=0A=
      this.originalStyle[k] =3D this.element.style[k];=0A=
    }.bind(this));=0A=
      =0A=
    this.originalTop  =3D this.element.offsetTop;=0A=
    this.originalLeft =3D this.element.offsetLeft;=0A=
    =0A=
    var fontSize =3D this.element.getStyle('font-size') || '100%';=0A=
    ['em','px','%','pt'].each( function(fontSizeType) {=0A=
      if (fontSize.indexOf(fontSizeType)>0) {=0A=
        this.fontSize     =3D parseFloat(fontSize);=0A=
        this.fontSizeType =3D fontSizeType;=0A=
      }=0A=
    }.bind(this));=0A=
    =0A=
    this.factor =3D (this.options.scaleTo - this.options.scaleFrom)/100;=0A=
    =0A=
    this.dims =3D null;=0A=
    if (this.options.scaleMode=3D=3D'box')=0A=
      this.dims =3D [this.element.offsetHeight, =
this.element.offsetWidth];=0A=
    if (/^content/.test(this.options.scaleMode))=0A=
      this.dims =3D [this.element.scrollHeight, =
this.element.scrollWidth];=0A=
    if (!this.dims)=0A=
      this.dims =3D [this.options.scaleMode.originalHeight,=0A=
                   this.options.scaleMode.originalWidth];=0A=
  },=0A=
  update: function(position) {=0A=
    var currentScale =3D (this.options.scaleFrom/100.0) + (this.factor * =
position);=0A=
    if (this.options.scaleContent && this.fontSize)=0A=
      this.element.setStyle({fontSize: this.fontSize * currentScale + =
this.fontSizeType });=0A=
    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * =
currentScale);=0A=
  },=0A=
  finish: function(position) {=0A=
    if (this.restoreAfterFinish) =
this.element.setStyle(this.originalStyle);=0A=
  },=0A=
  setDimensions: function(height, width) {=0A=
    var d =3D { };=0A=
    if (this.options.scaleX) d.width =3D width.round() + 'px';=0A=
    if (this.options.scaleY) d.height =3D height.round() + 'px';=0A=
    if (this.options.scaleFromCenter) {=0A=
      var topd  =3D (height - this.dims[0])/2;=0A=
      var leftd =3D (width  - this.dims[1])/2;=0A=
      if (this.elementPositioning =3D=3D 'absolute') {=0A=
        if (this.options.scaleY) d.top =3D this.originalTop-topd + 'px';=0A=
        if (this.options.scaleX) d.left =3D this.originalLeft-leftd + =
'px';=0A=
      } else {=0A=
        if (this.options.scaleY) d.top =3D -topd + 'px';=0A=
        if (this.options.scaleX) d.left =3D -leftd + 'px';=0A=
      }=0A=
    }=0A=
    this.element.setStyle(d);=0A=
  }=0A=
});=0A=
=0A=
Effect.Highlight =3D Class.create(Effect.Base, {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    var options =3D Object.extend({ startcolor: '#ffff99' }, =
arguments[1] || { });=0A=
    this.start(options);=0A=
  },=0A=
  setup: function() {=0A=
    // Prevent executing on elements not in the layout flow=0A=
    if (this.element.getStyle('display')=3D=3D'none') { this.cancel(); =
return; }=0A=
    // Disable background image during the effect=0A=
    this.oldStyle =3D { };=0A=
    if (!this.options.keepBackgroundImage) {=0A=
      this.oldStyle.backgroundImage =3D =
this.element.getStyle('background-image');=0A=
      this.element.setStyle({backgroundImage: 'none'});=0A=
    }=0A=
    if (!this.options.endcolor)=0A=
      this.options.endcolor =3D =
this.element.getStyle('background-color').parseColor('#ffffff');=0A=
    if (!this.options.restorecolor)=0A=
      this.options.restorecolor =3D =
this.element.getStyle('background-color');=0A=
    // init color calculations=0A=
    this._base  =3D $R(0,2).map(function(i){ return =
parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));=0A=
    this._delta =3D $R(0,2).map(function(i){ return =
parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] =
}.bind(this));=0A=
  },=0A=
  update: function(position) {=0A=
    this.element.setStyle({backgroundColor: =
$R(0,2).inject('#',function(m,v,i){=0A=
      return =
m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); =
}.bind(this)) });=0A=
  },=0A=
  finish: function() {=0A=
    this.element.setStyle(Object.extend(this.oldStyle, {=0A=
      backgroundColor: this.options.restorecolor=0A=
    }));=0A=
  }=0A=
});=0A=
=0A=
Effect.ScrollTo =3D function(element) {=0A=
  var options =3D arguments[1] || { },=0A=
    scrollOffsets =3D document.viewport.getScrollOffsets(),=0A=
    elementOffsets =3D $(element).cumulativeOffset(),=0A=
    max =3D (window.height || document.body.scrollHeight) - =
document.viewport.getHeight();  =0A=
=0A=
  if (options.offset) elementOffsets[1] +=3D options.offset;=0A=
=0A=
  return new Effect.Tween(null,=0A=
    scrollOffsets.top,=0A=
    elementOffsets[1] > max ? max : elementOffsets[1],=0A=
    options,=0A=
    function(p){ scrollTo(scrollOffsets.left, p.round()) }=0A=
  );=0A=
};=0A=
=0A=
/* ------------- combination effects ------------- */=0A=
=0A=
Effect.Fade =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldOpacity =3D element.getInlineOpacity();=0A=
  var options =3D Object.extend({=0A=
    from: element.getOpacity() || 1.0,=0A=
    to:   0.0,=0A=
    afterFinishInternal: function(effect) { =0A=
      if (effect.options.to!=3D0) return;=0A=
      effect.element.hide().setStyle({opacity: oldOpacity}); =0A=
    }=0A=
  }, arguments[1] || { });=0A=
  return new Effect.Opacity(element,options);=0A=
};=0A=
=0A=
Effect.Appear =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
  from: (element.getStyle('display') =3D=3D 'none' ? 0.0 : =
element.getOpacity() || 0.0),=0A=
  to:   1.0,=0A=
  // force Safari to render floated elements properly=0A=
  afterFinishInternal: function(effect) {=0A=
    effect.element.forceRerendering();=0A=
  },=0A=
  beforeSetup: function(effect) {=0A=
    effect.element.setOpacity(effect.options.from).show(); =0A=
  }}, arguments[1] || { });=0A=
  return new Effect.Opacity(element,options);=0A=
};=0A=
=0A=
Effect.Puff =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D { =0A=
    opacity: element.getInlineOpacity(), =0A=
    position: element.getStyle('position'),=0A=
    top:  element.style.top,=0A=
    left: element.style.left,=0A=
    width: element.style.width,=0A=
    height: element.style.height=0A=
  };=0A=
  return new Effect.Parallel(=0A=
   [ new Effect.Scale(element, 200, =0A=
      { sync: true, scaleFromCenter: true, scaleContent: true, =
restoreAfterFinish: true }), =0A=
     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], =0A=
     Object.extend({ duration: 1.0, =0A=
      beforeSetupInternal: function(effect) {=0A=
        Position.absolutize(effect.effects[0].element)=0A=
      },=0A=
      afterFinishInternal: function(effect) {=0A=
         effect.effects[0].element.hide().setStyle(oldStyle); }=0A=
     }, arguments[1] || { })=0A=
   );=0A=
};=0A=
=0A=
Effect.BlindUp =3D function(element) {=0A=
  element =3D $(element);=0A=
  element.makeClipping();=0A=
  return new Effect.Scale(element, 0,=0A=
    Object.extend({ scaleContent: false, =0A=
      scaleX: false, =0A=
      restoreAfterFinish: true,=0A=
      afterFinishInternal: function(effect) {=0A=
        effect.element.hide().undoClipping();=0A=
      } =0A=
    }, arguments[1] || { })=0A=
  );=0A=
};=0A=
=0A=
Effect.BlindDown =3D function(element) {=0A=
  element =3D $(element);=0A=
  var elementDimensions =3D element.getDimensions();=0A=
  return new Effect.Scale(element, 100, Object.extend({ =0A=
    scaleContent: false, =0A=
    scaleX: false,=0A=
    scaleFrom: 0,=0A=
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: =
elementDimensions.width},=0A=
    restoreAfterFinish: true,=0A=
    afterSetup: function(effect) {=0A=
      effect.element.makeClipping().setStyle({height: '0px'}).show(); =0A=
    },  =0A=
    afterFinishInternal: function(effect) {=0A=
      effect.element.undoClipping();=0A=
    }=0A=
  }, arguments[1] || { }));=0A=
};=0A=
=0A=
Effect.SwitchOff =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldOpacity =3D element.getInlineOpacity();=0A=
  return new Effect.Appear(element, Object.extend({=0A=
    duration: 0.4,=0A=
    from: 0,=0A=
    transition: Effect.Transitions.flicker,=0A=
    afterFinishInternal: function(effect) {=0A=
      new Effect.Scale(effect.element, 1, { =0A=
        duration: 0.3, scaleFromCenter: true,=0A=
        scaleX: false, scaleContent: false, restoreAfterFinish: true,=0A=
        beforeSetup: function(effect) { =0A=
          effect.element.makePositioned().makeClipping();=0A=
        },=0A=
        afterFinishInternal: function(effect) {=0A=
          =
effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: =
oldOpacity});=0A=
        }=0A=
      })=0A=
    }=0A=
  }, arguments[1] || { }));=0A=
};=0A=
=0A=
Effect.DropOut =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D {=0A=
    top: element.getStyle('top'),=0A=
    left: element.getStyle('left'),=0A=
    opacity: element.getInlineOpacity() };=0A=
  return new Effect.Parallel(=0A=
    [ new Effect.Move(element, {x: 0, y: 100, sync: true }), =0A=
      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],=0A=
    Object.extend(=0A=
      { duration: 0.5,=0A=
        beforeSetup: function(effect) {=0A=
          effect.effects[0].element.makePositioned(); =0A=
        },=0A=
        afterFinishInternal: function(effect) {=0A=
          =
effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);=0A=
        } =0A=
      }, arguments[1] || { }));=0A=
};=0A=
=0A=
Effect.Shake =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
    distance: 20,=0A=
    duration: 0.5=0A=
  }, arguments[1] || {});=0A=
  var distance =3D parseFloat(options.distance);=0A=
  var split =3D parseFloat(options.duration) / 10.0;=0A=
  var oldStyle =3D {=0A=
    top: element.getStyle('top'),=0A=
    left: element.getStyle('left') };=0A=
    return new Effect.Move(element,=0A=
      { x:  distance, y: 0, duration: split, afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: =
function(effect) {=0A=
    new Effect.Move(effect.element,=0A=
      { x: -distance, y: 0, duration: split, afterFinishInternal: =
function(effect) {=0A=
        effect.element.undoPositioned().setStyle(oldStyle);=0A=
  }}) }}) }}) }}) }}) }});=0A=
};=0A=
=0A=
Effect.SlideDown =3D function(element) {=0A=
  element =3D $(element).cleanWhitespace();=0A=
  // SlideDown need to have the content of the element wrapped in a =
container element with fixed height!=0A=
  var oldInnerBottom =3D element.down().getStyle('bottom');=0A=
  var elementDimensions =3D element.getDimensions();=0A=
  return new Effect.Scale(element, 100, Object.extend({ =0A=
    scaleContent: false, =0A=
    scaleX: false, =0A=
    scaleFrom: window.opera ? 0 : 1,=0A=
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: =
elementDimensions.width},=0A=
    restoreAfterFinish: true,=0A=
    afterSetup: function(effect) {=0A=
      effect.element.makePositioned();=0A=
      effect.element.down().makePositioned();=0A=
      if (window.opera) effect.element.setStyle({top: ''});=0A=
      effect.element.makeClipping().setStyle({height: '0px'}).show(); =0A=
    },=0A=
    afterUpdateInternal: function(effect) {=0A=
      effect.element.down().setStyle({bottom:=0A=
        (effect.dims[0] - effect.element.clientHeight) + 'px' }); =0A=
    },=0A=
    afterFinishInternal: function(effect) {=0A=
      effect.element.undoClipping().undoPositioned();=0A=
      effect.element.down().undoPositioned().setStyle({bottom: =
oldInnerBottom}); }=0A=
    }, arguments[1] || { })=0A=
  );=0A=
};=0A=
=0A=
Effect.SlideUp =3D function(element) {=0A=
  element =3D $(element).cleanWhitespace();=0A=
  var oldInnerBottom =3D element.down().getStyle('bottom');=0A=
  var elementDimensions =3D element.getDimensions();=0A=
  return new Effect.Scale(element, window.opera ? 0 : 1,=0A=
   Object.extend({ scaleContent: false, =0A=
    scaleX: false, =0A=
    scaleMode: 'box',=0A=
    scaleFrom: 100,=0A=
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: =
elementDimensions.width},=0A=
    restoreAfterFinish: true,=0A=
    afterSetup: function(effect) {=0A=
      effect.element.makePositioned();=0A=
      effect.element.down().makePositioned();=0A=
      if (window.opera) effect.element.setStyle({top: ''});=0A=
      effect.element.makeClipping().show();=0A=
    },  =0A=
    afterUpdateInternal: function(effect) {=0A=
      effect.element.down().setStyle({bottom:=0A=
        (effect.dims[0] - effect.element.clientHeight) + 'px' });=0A=
    },=0A=
    afterFinishInternal: function(effect) {=0A=
      effect.element.hide().undoClipping().undoPositioned();=0A=
      effect.element.down().undoPositioned().setStyle({bottom: =
oldInnerBottom});=0A=
    }=0A=
   }, arguments[1] || { })=0A=
  );=0A=
};=0A=
=0A=
// Bug in opera makes the TD containing this element expand for a =
instance after finish =0A=
Effect.Squish =3D function(element) {=0A=
  return new Effect.Scale(element, window.opera ? 1 : 0, { =0A=
    restoreAfterFinish: true,=0A=
    beforeSetup: function(effect) {=0A=
      effect.element.makeClipping(); =0A=
    },  =0A=
    afterFinishInternal: function(effect) {=0A=
      effect.element.hide().undoClipping(); =0A=
    }=0A=
  });=0A=
};=0A=
=0A=
Effect.Grow =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
    direction: 'center',=0A=
    moveTransition: Effect.Transitions.sinoidal,=0A=
    scaleTransition: Effect.Transitions.sinoidal,=0A=
    opacityTransition: Effect.Transitions.full=0A=
  }, arguments[1] || { });=0A=
  var oldStyle =3D {=0A=
    top: element.style.top,=0A=
    left: element.style.left,=0A=
    height: element.style.height,=0A=
    width: element.style.width,=0A=
    opacity: element.getInlineOpacity() };=0A=
=0A=
  var dims =3D element.getDimensions();    =0A=
  var initialMoveX, initialMoveY;=0A=
  var moveX, moveY;=0A=
  =0A=
  switch (options.direction) {=0A=
    case 'top-left':=0A=
      initialMoveX =3D initialMoveY =3D moveX =3D moveY =3D 0; =0A=
      break;=0A=
    case 'top-right':=0A=
      initialMoveX =3D dims.width;=0A=
      initialMoveY =3D moveY =3D 0;=0A=
      moveX =3D -dims.width;=0A=
      break;=0A=
    case 'bottom-left':=0A=
      initialMoveX =3D moveX =3D 0;=0A=
      initialMoveY =3D dims.height;=0A=
      moveY =3D -dims.height;=0A=
      break;=0A=
    case 'bottom-right':=0A=
      initialMoveX =3D dims.width;=0A=
      initialMoveY =3D dims.height;=0A=
      moveX =3D -dims.width;=0A=
      moveY =3D -dims.height;=0A=
      break;=0A=
    case 'center':=0A=
      initialMoveX =3D dims.width / 2;=0A=
      initialMoveY =3D dims.height / 2;=0A=
      moveX =3D -dims.width / 2;=0A=
      moveY =3D -dims.height / 2;=0A=
      break;=0A=
  }=0A=
  =0A=
  return new Effect.Move(element, {=0A=
    x: initialMoveX,=0A=
    y: initialMoveY,=0A=
    duration: 0.01, =0A=
    beforeSetup: function(effect) {=0A=
      effect.element.hide().makeClipping().makePositioned();=0A=
    },=0A=
    afterFinishInternal: function(effect) {=0A=
      new Effect.Parallel(=0A=
        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, =
from: 0.0, transition: options.opacityTransition }),=0A=
          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: =
true, transition: options.moveTransition }),=0A=
          new Effect.Scale(effect.element, 100, {=0A=
            scaleMode: { originalHeight: dims.height, originalWidth: =
dims.width }, =0A=
            sync: true, scaleFrom: window.opera ? 1 : 0, transition: =
options.scaleTransition, restoreAfterFinish: true})=0A=
        ], Object.extend({=0A=
             beforeSetup: function(effect) {=0A=
               effect.effects[0].element.setStyle({height: =
'0px'}).show(); =0A=
             },=0A=
             afterFinishInternal: function(effect) {=0A=
               =
effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldSty=
le); =0A=
             }=0A=
           }, options)=0A=
      )=0A=
    }=0A=
  });=0A=
};=0A=
=0A=
Effect.Shrink =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options =3D Object.extend({=0A=
    direction: 'center',=0A=
    moveTransition: Effect.Transitions.sinoidal,=0A=
    scaleTransition: Effect.Transitions.sinoidal,=0A=
    opacityTransition: Effect.Transitions.none=0A=
  }, arguments[1] || { });=0A=
  var oldStyle =3D {=0A=
    top: element.style.top,=0A=
    left: element.style.left,=0A=
    height: element.style.height,=0A=
    width: element.style.width,=0A=
    opacity: element.getInlineOpacity() };=0A=
=0A=
  var dims =3D element.getDimensions();=0A=
  var moveX, moveY;=0A=
  =0A=
  switch (options.direction) {=0A=
    case 'top-left':=0A=
      moveX =3D moveY =3D 0;=0A=
      break;=0A=
    case 'top-right':=0A=
      moveX =3D dims.width;=0A=
      moveY =3D 0;=0A=
      break;=0A=
    case 'bottom-left':=0A=
      moveX =3D 0;=0A=
      moveY =3D dims.height;=0A=
      break;=0A=
    case 'bottom-right':=0A=
      moveX =3D dims.width;=0A=
      moveY =3D dims.height;=0A=
      break;=0A=
    case 'center':  =0A=
      moveX =3D dims.width / 2;=0A=
      moveY =3D dims.height / 2;=0A=
      break;=0A=
  }=0A=
  =0A=
  return new Effect.Parallel(=0A=
    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, =
transition: options.opacityTransition }),=0A=
      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, =
transition: options.scaleTransition, restoreAfterFinish: true}),=0A=
      new Effect.Move(element, { x: moveX, y: moveY, sync: true, =
transition: options.moveTransition })=0A=
    ], Object.extend({            =0A=
         beforeStartInternal: function(effect) {=0A=
           effect.effects[0].element.makePositioned().makeClipping(); =0A=
         },=0A=
         afterFinishInternal: function(effect) {=0A=
           =
effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle=
(oldStyle); }=0A=
       }, options)=0A=
  );=0A=
};=0A=
=0A=
Effect.Pulsate =3D function(element) {=0A=
  element =3D $(element);=0A=
  var options    =3D arguments[1] || { };=0A=
  var oldOpacity =3D element.getInlineOpacity();=0A=
  var transition =3D options.transition || Effect.Transitions.sinoidal;=0A=
  var reverser   =3D function(pos){ return =
transition(1-Effect.Transitions.pulse(pos, options.pulses)) };=0A=
  reverser.bind(transition);=0A=
  return new Effect.Opacity(element, =0A=
    Object.extend(Object.extend({  duration: 2.0, from: 0,=0A=
      afterFinishInternal: function(effect) { =
effect.element.setStyle({opacity: oldOpacity}); }=0A=
    }, options), {transition: reverser}));=0A=
};=0A=
=0A=
Effect.Fold =3D function(element) {=0A=
  element =3D $(element);=0A=
  var oldStyle =3D {=0A=
    top: element.style.top,=0A=
    left: element.style.left,=0A=
    width: element.style.width,=0A=
    height: element.style.height };=0A=
  element.makeClipping();=0A=
  return new Effect.Scale(element, 5, Object.extend({   =0A=
    scaleContent: false,=0A=
    scaleX: false,=0A=
    afterFinishInternal: function(effect) {=0A=
    new Effect.Scale(element, 1, { =0A=
      scaleContent: false, =0A=
      scaleY: false,=0A=
      afterFinishInternal: function(effect) {=0A=
        effect.element.hide().undoClipping().setStyle(oldStyle);=0A=
      } });=0A=
  }}, arguments[1] || { }));=0A=
};=0A=
=0A=
Effect.Morph =3D Class.create(Effect.Base, {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
    if (!this.element) throw(Effect._elementDoesNotExistError);=0A=
    var options =3D Object.extend({=0A=
      style: { }=0A=
    }, arguments[1] || { });=0A=
    =0A=
    if (!Object.isString(options.style)) this.style =3D =
$H(options.style);=0A=
    else {=0A=
      if (options.style.include(':'))=0A=
        this.style =3D options.style.parseStyle();=0A=
      else {=0A=
        this.element.addClassName(options.style);=0A=
        this.style =3D $H(this.element.getStyles());=0A=
        this.element.removeClassName(options.style);=0A=
        var css =3D this.element.getStyles();=0A=
        this.style =3D this.style.reject(function(style) {=0A=
          return style.value =3D=3D css[style.key];=0A=
        });=0A=
        options.afterFinishInternal =3D function(effect) {=0A=
          effect.element.addClassName(effect.options.style);=0A=
          effect.transforms.each(function(transform) {=0A=
            effect.element.style[transform.style] =3D '';=0A=
          });=0A=
        }=0A=
      }=0A=
    }=0A=
    this.start(options);=0A=
  },=0A=
  =0A=
  setup: function(){=0A=
    function parseColor(color){=0A=
      if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) =
color =3D '#ffffff';=0A=
      color =3D color.parseColor();=0A=
      return $R(0,2).map(function(i){=0A=
        return parseInt( color.slice(i*2+1,i*2+3), 16 ) =0A=
      });=0A=
    }=0A=
    this.transforms =3D this.style.map(function(pair){=0A=
      var property =3D pair[0], value =3D pair[1], unit =3D null;=0A=
=0A=
      if (value.parseColor('#zzzzzz') !=3D '#zzzzzz') {=0A=
        value =3D value.parseColor();=0A=
        unit  =3D 'color';=0A=
      } else if (property =3D=3D 'opacity') {=0A=
        value =3D parseFloat(value);=0A=
        if (Prototype.Browser.IE && =
(!this.element.currentStyle.hasLayout))=0A=
          this.element.setStyle({zoom: 1});=0A=
      } else if (Element.CSS_LENGTH.test(value)) {=0A=
          var components =3D value.match(/^([\+\-]?[0-9\.]+)(.*)$/);=0A=
          value =3D parseFloat(components[1]);=0A=
          unit =3D (components.length =3D=3D 3) ? components[2] : null;=0A=
      }=0A=
=0A=
      var originalValue =3D this.element.getStyle(property);=0A=
      return { =0A=
        style: property.camelize(), =0A=
        originalValue: unit=3D=3D'color' ? parseColor(originalValue) : =
parseFloat(originalValue || 0), =0A=
        targetValue: unit=3D=3D'color' ? parseColor(value) : value,=0A=
        unit: unit=0A=
      };=0A=
    }.bind(this)).reject(function(transform){=0A=
      return (=0A=
        (transform.originalValue =3D=3D transform.targetValue) ||=0A=
        (=0A=
          transform.unit !=3D 'color' &&=0A=
          (isNaN(transform.originalValue) || =
isNaN(transform.targetValue))=0A=
        )=0A=
      )=0A=
    });=0A=
  },=0A=
  update: function(position) {=0A=
    var style =3D { }, transform, i =3D this.transforms.length;=0A=
    while(i--)=0A=
      style[(transform =3D this.transforms[i]).style] =3D =0A=
        transform.unit=3D=3D'color' ? '#'+=0A=
          (Math.round(transform.originalValue[0]+=0A=
            =
(transform.targetValue[0]-transform.originalValue[0])*position)).toColorP=
art() +=0A=
          (Math.round(transform.originalValue[1]+=0A=
            =
(transform.targetValue[1]-transform.originalValue[1])*position)).toColorP=
art() +=0A=
          (Math.round(transform.originalValue[2]+=0A=
            =
(transform.targetValue[2]-transform.originalValue[2])*position)).toColorP=
art() :=0A=
        (transform.originalValue +=0A=
          (transform.targetValue - transform.originalValue) * =
position).toFixed(3) + =0A=
            (transform.unit =3D=3D=3D null ? '' : transform.unit);=0A=
    this.element.setStyle(style, true);=0A=
  }=0A=
});=0A=
=0A=
Effect.Transform =3D Class.create({=0A=
  initialize: function(tracks){=0A=
    this.tracks  =3D [];=0A=
    this.options =3D arguments[1] || { };=0A=
    this.addTracks(tracks);=0A=
  },=0A=
  addTracks: function(tracks){=0A=
    tracks.each(function(track){=0A=
      track =3D $H(track);=0A=
      var data =3D track.values().first();=0A=
      this.tracks.push($H({=0A=
        ids:     track.keys().first(),=0A=
        effect:  Effect.Morph,=0A=
        options: { style: data }=0A=
      }));=0A=
    }.bind(this));=0A=
    return this;=0A=
  },=0A=
  play: function(){=0A=
    return new Effect.Parallel(=0A=
      this.tracks.map(function(track){=0A=
        var ids =3D track.get('ids'), effect =3D track.get('effect'), =
options =3D track.get('options');=0A=
        var elements =3D [$(ids) || $$(ids)].flatten();=0A=
        return elements.map(function(e){ return new effect(e, =
Object.extend({ sync:true }, options)) });=0A=
      }).flatten(),=0A=
      this.options=0A=
    );=0A=
  }=0A=
});=0A=
=0A=
Element.CSS_PROPERTIES =3D $w(=0A=
  'backgroundColor backgroundPosition borderBottomColor =
borderBottomStyle ' + =0A=
  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +=0A=
  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +=0A=
  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +=0A=
  'fontSize fontWeight height left letterSpacing lineHeight ' +=0A=
  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight =
'+=0A=
  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +=0A=
  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +=0A=
  'right textIndent top width wordSpacing zIndex');=0A=
  =0A=
Element.CSS_LENGTH =3D =
/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;=0A=
=0A=
String.__parseStyleElement =3D document.createElement('div');=0A=
String.prototype.parseStyle =3D function(){=0A=
  var style, styleRules =3D $H();=0A=
  if (Prototype.Browser.WebKit)=0A=
    style =3D new Element('div',{style:this}).style;=0A=
  else {=0A=
    String.__parseStyleElement.innerHTML =3D '<div style=3D"' + this + =
'"></div>';=0A=
    style =3D String.__parseStyleElement.childNodes[0].style;=0A=
  }=0A=
  =0A=
  Element.CSS_PROPERTIES.each(function(property){=0A=
    if (style[property]) styleRules.set(property, style[property]); =0A=
  });=0A=
  =0A=
  if (Prototype.Browser.IE && this.include('opacity'))=0A=
    styleRules.set('opacity', =
this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);=0A=
=0A=
  return styleRules;=0A=
};=0A=
=0A=
if (document.defaultView && document.defaultView.getComputedStyle) {=0A=
  Element.getStyles =3D function(element) {=0A=
    var css =3D document.defaultView.getComputedStyle($(element), null);=0A=
    return Element.CSS_PROPERTIES.inject({ }, function(styles, property) =
{=0A=
      styles[property] =3D css[property];=0A=
      return styles;=0A=
    });=0A=
  };=0A=
} else {=0A=
  Element.getStyles =3D function(element) {=0A=
    element =3D $(element);=0A=
    var css =3D element.currentStyle, styles;=0A=
    styles =3D Element.CSS_PROPERTIES.inject({ }, function(hash, =
property) {=0A=
      hash.set(property, css[property]);=0A=
      return hash;=0A=
    });=0A=
    if (!styles.opacity) styles.set('opacity', element.getOpacity());=0A=
    return styles;=0A=
  };=0A=
};=0A=
=0A=
Effect.Methods =3D {=0A=
  morph: function(element, style) {=0A=
    element =3D $(element);=0A=
    new Effect.Morph(element, Object.extend({ style: style }, =
arguments[2] || { }));=0A=
    return element;=0A=
  },=0A=
  visualEffect: function(element, effect, options) {=0A=
    element =3D $(element)=0A=
    var s =3D effect.dasherize().camelize(), klass =3D =
s.charAt(0).toUpperCase() + s.substring(1);=0A=
    new Effect[klass](element, options);=0A=
    return element;=0A=
  },=0A=
  highlight: function(element, options) {=0A=
    element =3D $(element);=0A=
    new Effect.Highlight(element, options);=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+=0A=
  'pulsate shake puff squish switchOff dropOut').each(=0A=
  function(effect) { =0A=
    Effect.Methods[effect] =3D function(element, options){=0A=
      element =3D $(element);=0A=
      Effect[effect.charAt(0).toUpperCase() + =
effect.substring(1)](element, options);=0A=
      return element;=0A=
    }=0A=
  }=0A=
);=0A=
=0A=
$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes =
collectTextNodesIgnoreClass getStyles').each( =0A=
  function(f) { Effect.Methods[f] =3D Element[f]; }=0A=
);=0A=
=0A=
Element.addMethods(Effect.Methods);=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/javascript/controls_mod.js

// script.aculo.us controls.js v1.8.0, Tue Nov 06 15:01:40 +0300 2007=0A=
=0A=
// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
//           (c) 2005-2007 Ivan Krstic =
(http://blogs.law.harvard.edu/ivan)=0A=
//           (c) 2005-2007 Jon Tirsen (http://www.tirsen.com)=0A=
// Contributors:=0A=
//  Richard Livsey=0A=
//  Rahul Bhargava=0A=
//  Rob Wills=0A=
// =0A=
// script.aculo.us is freely distributable under the terms of an =
MIT-style license.=0A=
// For details, see the script.aculo.us web site: http://script.aculo.us/=0A=
=0A=
// NOTE: Modified from original=0A=
=0A=
if(typeof Effect =3D=3D 'undefined')=0A=
  throw("controls.js requires including script.aculo.us' effects.js =
library");=0A=
=0A=
var Autocompleter =3D { }=0A=
Autocompleter.Base =3D Class.create({=0A=
  baseInitialize: function(element, update, options) {=0A=
    element          =3D $(element)=0A=
    this.element     =3D element; =0A=
    this.update      =3D $(update);  =0A=
    this.hasFocus    =3D false; =0A=
    this.changed     =3D false; =0A=
    this.active      =3D false; =0A=
    this.index       =3D 0;     =0A=
    this.entryCount  =3D 0;=0A=
    this.oldElementValue =3D this.element.value;=0A=
=0A=
    if(this.setOptions)=0A=
      this.setOptions(options);=0A=
    else=0A=
      this.options =3D options || { };=0A=
=0A=
    this.options.paramName    =3D this.options.paramName || =
this.element.name;=0A=
    this.options.tokens       =3D this.options.tokens || [];=0A=
    this.options.frequency    =3D this.options.frequency || 0.4;=0A=
    this.options.minChars     =3D this.options.minChars || 1;=0A=
    this.options.onShow       =3D this.options.onShow || =0A=
      function(element, update){ =0A=
        if(!update.style.position || =
update.style.position=3D=3D'absolute') {=0A=
          update.style.position =3D 'absolute';=0A=
          Position.clone(element, update, {=0A=
            setHeight: false, =0A=
            setLeft: false, =0A=
            offsetTop: element.offsetHeight=0A=
          });=0A=
        }=0A=
        Effect.Appear(update,{duration:0.15});=0A=
      };=0A=
    this.options.onHide =3D this.options.onHide || =0A=
      function(element, update){ new Effect.Fade(update,{duration:0.15}) =
};=0A=
=0A=
    if(typeof(this.options.tokens) =3D=3D 'string') =0A=
      this.options.tokens =3D new Array(this.options.tokens);=0A=
    // Force carriage returns as token delimiters anyway=0A=
    if (!this.options.tokens.include('\n'))=0A=
      this.options.tokens.push('\n');=0A=
=0A=
    this.observer =3D null;=0A=
    =0A=
    this.element.setAttribute('autocomplete','off');=0A=
=0A=
    Element.hide(this.update);=0A=
=0A=
    Event.observe(this.element, 'blur', =
this.onBlur.bindAsEventListener(this));=0A=
    Event.observe(this.element, 'keydown', =
this.onKeyPress.bindAsEventListener(this));=0A=
  },=0A=
=0A=
  show: function() {=0A=
    if(Element.getStyle(this.update, 'display')=3D=3D'none') =
this.options.onShow(this.element, this.update);=0A=
    if(!this.iefix && =0A=
      (Prototype.Browser.IE) &&=0A=
      (Element.getStyle(this.update, 'position')=3D=3D'absolute')) {=0A=
      new Insertion.After(this.update, =0A=
       '<iframe id=3D"' + this.update.id + '_iefix" '+=0A=
       =
'style=3D"display:none;position:absolute;filter:progid:DXImageTransform.M=
icrosoft.Alpha(opacity=3D0);" ' +=0A=
       'src=3D"javascript:false;" frameborder=3D"0" =
scrolling=3D"no"></iframe>');=0A=
      this.iefix =3D $(this.update.id+'_iefix');=0A=
    }=0A=
    if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);=0A=
  },=0A=
  =0A=
  fixIEOverlapping: function() {=0A=
    Position.clone(this.update, this.iefix, =
{setTop:(!this.update.style.height)});=0A=
    this.iefix.style.zIndex =3D 1;=0A=
    this.update.style.zIndex =3D 2;=0A=
    Element.show(this.iefix);=0A=
  },=0A=
=0A=
  hide: function() {=0A=
    this.stopIndicator();=0A=
    if(Element.getStyle(this.update, 'display')!=3D'none') =
this.options.onHide(this.element, this.update);=0A=
    if(this.iefix) Element.hide(this.iefix);=0A=
  },=0A=
=0A=
  startIndicator: function() {=0A=
    if(this.options.indicator) Element.show(this.options.indicator);=0A=
  },=0A=
=0A=
  stopIndicator: function() {=0A=
    if(this.options.indicator) Element.hide(this.options.indicator);=0A=
  },=0A=
=0A=
  onKeyPress: function(event) {=0A=
    if(this.active)=0A=
      switch(event.keyCode) {=0A=
       case Event.KEY_RETURN:=0A=
         this.selectEntry();=0A=
         Event.stop(event);=0A=
         this.hide();=0A=
         return;=0A=
       case Event.KEY_TAB:=0A=
         this.selectEntry();=0A=
         this.hide();=0A=
         return;=0A=
       case Event.KEY_ESC:=0A=
         this.hide();=0A=
         this.active =3D false;=0A=
         Event.stop(event);=0A=
         return;=0A=
       case Event.KEY_LEFT:=0A=
       case Event.KEY_RIGHT:=0A=
         return;=0A=
       case Event.KEY_UP:=0A=
         this.markPrevious();=0A=
         this.render();=0A=
         if(Prototype.Browser.WebKit) Event.stop(event);=0A=
         return;=0A=
       case Event.KEY_DOWN:=0A=
         this.markNext();=0A=
         this.render();=0A=
         if(Prototype.Browser.WebKit) Event.stop(event);=0A=
         return;=0A=
      }=0A=
     else =0A=
       if(event.keyCode=3D=3DEvent.KEY_TAB || =
event.keyCode=3D=3DEvent.KEY_RETURN || =0A=
         (Prototype.Browser.WebKit > 0 && event.keyCode =3D=3D 0)) =
return;=0A=
=0A=
    this.changed =3D true;=0A=
    this.hasFocus =3D true;=0A=
=0A=
    if(this.observer) clearTimeout(this.observer);=0A=
      this.observer =3D =0A=
        setTimeout(this.onObserverEvent.bind(this), =
this.options.frequency*1000);=0A=
  },=0A=
=0A=
  activate: function() {=0A=
    this.changed =3D false;=0A=
    this.hasFocus =3D true;=0A=
    this.getUpdatedChoices();=0A=
  },=0A=
=0A=
  onHover: function(event) {=0A=
    var element =3D Event.findElement(event, 'LI');=0A=
    if(this.index !=3D element.autocompleteIndex) =0A=
    {=0A=
        this.index =3D element.autocompleteIndex;=0A=
        this.render();=0A=
    }=0A=
    Event.stop(event);=0A=
  },=0A=
  =0A=
  onClick: function(event) {=0A=
    var element =3D Event.findElement(event, 'LI');=0A=
    this.index =3D element.autocompleteIndex;=0A=
    this.selectEntry();=0A=
    this.hide();=0A=
  },=0A=
  =0A=
  onBlur: function(event) {=0A=
    // needed to make click events working=0A=
    setTimeout(this.hide.bind(this), 250);=0A=
    this.hasFocus =3D false;=0A=
    this.active =3D false;     =0A=
  }, =0A=
  =0A=
  render: function() {=0A=
    if(this.entryCount > 0) {=0A=
      for (var i =3D 0; i < this.entryCount; i++)=0A=
        this.index=3D=3Di ? =0A=
          Element.addClassName(this.getEntry(i),"selected") : =0A=
          Element.removeClassName(this.getEntry(i),"selected");=0A=
      if(this.hasFocus) { =0A=
        this.show();=0A=
        this.active =3D true;=0A=
      }=0A=
    } else {=0A=
      this.active =3D false;=0A=
      this.hide();=0A=
    }=0A=
  },=0A=
  =0A=
  markPrevious: function() {=0A=
    if(this.index > 0) this.index--=0A=
      else this.index =3D this.entryCount-1;=0A=
    this.getEntry(this.index).scrollIntoView(false);=0A=
  },=0A=
  =0A=
  markNext: function() {=0A=
    if(this.index < this.entryCount-1) this.index++=0A=
      else this.index =3D 0;=0A=
    this.getEntry(this.index).scrollIntoView(false);=0A=
  },=0A=
  =0A=
  getEntry: function(index) {=0A=
    return this.update.firstChild.childNodes[index];=0A=
  },=0A=
  =0A=
  getCurrentEntry: function() {=0A=
    return this.getEntry(this.index);=0A=
  },=0A=
  =0A=
  selectEntry: function() {=0A=
    this.active =3D false;=0A=
    this.updateElement(this.getCurrentEntry());=0A=
  },=0A=
=0A=
  updateElement: function(selectedElement) {=0A=
    if (this.options.updateElement) {=0A=
      this.options.updateElement(selectedElement);=0A=
      return;=0A=
    }=0A=
    var value =3D '';=0A=
    if (this.options.select) {=0A=
      var nodes =3D $(selectedElement).select('.' + this.options.select) =
|| [];=0A=
      if(nodes.length>0) value =3D Element.collectTextNodes(nodes[0], =
this.options.select);=0A=
    } else=0A=
      value =3D Element.collectTextNodesIgnoreClass(selectedElement, =
'informal');=0A=
    =0A=
    var bounds =3D this.getTokenBounds();=0A=
    if (bounds[0] !=3D -1) {=0A=
      var newValue =3D this.element.value.substr(0, bounds[0]);=0A=
      var whitespace =3D =
this.element.value.substr(bounds[0]).match(/^\s+/);=0A=
      if (whitespace)=0A=
        newValue +=3D whitespace[0];=0A=
      this.element.value =3D newValue + value + =
this.element.value.substr(bounds[1]);=0A=
    } else {=0A=
      this.element.value =3D value;=0A=
    }=0A=
    this.oldElementValue =3D this.element.value;=0A=
    this.element.focus();=0A=
    =0A=
    if (this.options.afterUpdateElement)=0A=
      this.options.afterUpdateElement(this.element, selectedElement);=0A=
  },=0A=
=0A=
  updateChoices: function(choices) {=0A=
    if(!this.changed && this.hasFocus) {=0A=
      this.update.innerHTML =3D choices;=0A=
      Element.cleanWhitespace(this.update);=0A=
      Element.cleanWhitespace(this.update.down());=0A=
=0A=
      if(this.update.firstChild && this.update.down().childNodes) {=0A=
        this.entryCount =3D =0A=
          this.update.down().childNodes.length;=0A=
        for (var i =3D 0; i < this.entryCount; i++) {=0A=
          var entry =3D this.getEntry(i);=0A=
          entry.autocompleteIndex =3D i;=0A=
          this.addObservers(entry);=0A=
        }=0A=
      } else { =0A=
        this.entryCount =3D 0;=0A=
      }=0A=
=0A=
      this.stopIndicator();=0A=
      this.index =3D -1;=0A=
      =0A=
      if(this.entryCount=3D=3D1 && this.options.autoSelect) {=0A=
        this.selectEntry();=0A=
        this.hide();=0A=
      } else {=0A=
        this.render();=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  addObservers: function(element) {=0A=
    Event.observe(element, "mouseover", =
this.onHover.bindAsEventListener(this));=0A=
    Event.observe(element, "click", =
this.onClick.bindAsEventListener(this));=0A=
  },=0A=
=0A=
  onObserverEvent: function() {=0A=
    this.changed =3D false;   =0A=
    this.tokenBounds =3D null;=0A=
    if(this.getToken().length>=3Dthis.options.minChars) {=0A=
      this.getUpdatedChoices();=0A=
    } else {=0A=
      this.active =3D false;=0A=
      this.hide();=0A=
    }=0A=
    this.oldElementValue =3D this.element.value;=0A=
  },=0A=
=0A=
  getToken: function() {=0A=
    var bounds =3D this.getTokenBounds();=0A=
    return this.element.value.substring(bounds[0], bounds[1]).strip();=0A=
  },=0A=
=0A=
  getTokenBounds: function() {=0A=
    if (null !=3D this.tokenBounds) return this.tokenBounds;=0A=
    var value =3D this.element.value;=0A=
    if (value.strip().empty()) return [-1, 0];=0A=
    var diff =3D arguments.callee.getFirstDifferencePos(value, =
this.oldElementValue);=0A=
    var offset =3D (diff =3D=3D this.oldElementValue.length ? 1 : 0);=0A=
    var prevTokenPos =3D -1, nextTokenPos =3D value.length;=0A=
    var tp;=0A=
    for (var index =3D 0, l =3D this.options.tokens.length; index < l; =
++index) {=0A=
      tp =3D value.lastIndexOf(this.options.tokens[index], diff + offset =
- 1);=0A=
      if (tp > prevTokenPos) prevTokenPos =3D tp;=0A=
      tp =3D value.indexOf(this.options.tokens[index], diff + offset);=0A=
      if (-1 !=3D tp && tp < nextTokenPos) nextTokenPos =3D tp;=0A=
    }=0A=
    return (this.tokenBounds =3D [prevTokenPos + 1, nextTokenPos]);=0A=
  }=0A=
});=0A=
=0A=
Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos =3D =
function(newS, oldS) {=0A=
  var boundary =3D Math.min(newS.length, oldS.length);=0A=
  for (var index =3D 0; index < boundary; ++index)=0A=
    if (newS[index] !=3D oldS[index])=0A=
      return index;=0A=
  return boundary;=0A=
};=0A=
=0A=
Ajax.Autocompleter =3D Class.create(Autocompleter.Base, {=0A=
  initialize: function(element, update, url, options) {=0A=
    this.baseInitialize(element, update, options);=0A=
    this.options.asynchronous  =3D true;=0A=
    this.options.onComplete    =3D this.onComplete.bind(this);=0A=
    this.options.defaultParams =3D this.options.parameters || null;=0A=
    this.url                   =3D url;=0A=
  },=0A=
=0A=
  getUpdatedChoices: function() {=0A=
    this.startIndicator();=0A=
    =0A=
    var entry =3D encodeURIComponent(this.options.paramName) + '=3D' + =0A=
      encodeURIComponent(this.getToken());=0A=
=0A=
    this.options.parameters =3D this.options.callback ?=0A=
      this.options.callback(this.element, entry) : entry;=0A=
=0A=
    if(this.options.defaultParams) =0A=
      this.options.parameters +=3D '&' + this.options.defaultParams;=0A=
    =0A=
    new Ajax.Request(this.url, this.options);=0A=
  },=0A=
=0A=
  onComplete: function(request) {=0A=
    this.updateChoices(request.responseText);=0A=
  }=0A=
});=0A=
=0A=
// The local array autocompleter. Used when you'd prefer to=0A=
// inject an array of autocompletion options into the page, rather=0A=
// than sending out Ajax queries, which can be quite slow sometimes.=0A=
//=0A=
// The constructor takes four parameters. The first two are, as usual,=0A=
// the id of the monitored textbox, and id of the autocompletion menu.=0A=
// The third is the array you want to autocomplete from, and the fourth=0A=
// is the options block.=0A=
//=0A=
// Extra local autocompletion options:=0A=
// - choices - How many autocompletion choices to offer=0A=
//=0A=
// - partialSearch - If false, the autocompleter will match entered=0A=
//                    text only at the beginning of strings in the =0A=
//                    autocomplete array. Defaults to true, which will=0A=
//                    match text at the beginning of any *word* in the=0A=
//                    strings in the autocomplete array. If you want to=0A=
//                    search anywhere in the string, additionally set=0A=
//                    the option fullSearch to true (default: off).=0A=
//=0A=
// - fullSsearch - Search anywhere in autocomplete array strings.=0A=
//=0A=
// - partialChars - How many characters to enter before triggering=0A=
//                   a partial match (unlike minChars, which defines=0A=
//                   how many characters are required to do any match=0A=
//                   at all). Defaults to 2.=0A=
//=0A=
// - ignoreCase - Whether to ignore case when autocompleting.=0A=
//                 Defaults to true.=0A=
//=0A=
// It's possible to pass in a custom function as the 'selector' =0A=
// option, if you prefer to write your own autocompletion logic.=0A=
// In that case, the other options above will not apply unless=0A=
// you support them.=0A=
=0A=
Autocompleter.Local =3D Class.create(Autocompleter.Base, {=0A=
  initialize: function(element, update, array, options) {=0A=
    this.baseInitialize(element, update, options);=0A=
    this.options.array =3D array;=0A=
  },=0A=
=0A=
  getUpdatedChoices: function() {=0A=
    this.updateChoices(this.options.selector(this));=0A=
  },=0A=
=0A=
  setOptions: function(options) {=0A=
    this.options =3D Object.extend({=0A=
      choices: 10,=0A=
      partialSearch: true,=0A=
      partialChars: 2,=0A=
      ignoreCase: true,=0A=
      fullSearch: false,=0A=
      selector: function(instance) {=0A=
        var ret       =3D []; // Beginning matches=0A=
        var partial   =3D []; // Inside matches=0A=
        var entry     =3D instance.getToken();=0A=
        var count     =3D 0;=0A=
=0A=
        for (var i =3D 0; i < instance.options.array.length &&  =0A=
          ret.length < instance.options.choices ; i++) { =0A=
=0A=
          var elem =3D instance.options.array[i];=0A=
          var foundPos =3D instance.options.ignoreCase ? =0A=
            elem.toLowerCase().indexOf(entry.toLowerCase()) : =0A=
            elem.indexOf(entry);=0A=
=0A=
          while (foundPos !=3D -1) {=0A=
            if (foundPos =3D=3D 0 && elem.length !=3D entry.length) { =0A=
              ret.push("<li>" + elem.substr(0, entry.length) + =0A=
                elem.substr(entry.length) + "</li>");=0A=
              break;=0A=
            } else if (entry.length >=3D instance.options.partialChars =
&& =0A=
              instance.options.partialSearch && foundPos !=3D -1) {=0A=
              if (instance.options.fullSearch || =
/\s/.test(elem.substr(foundPos-1,1))) {=0A=
                partial.push("<li>" + elem.substr(0, foundPos) +=0A=
                  elem.substr(foundPos, entry.length) + elem.substr(=0A=
                  foundPos + entry.length) + "</li>");=0A=
                break;=0A=
              }=0A=
            }=0A=
=0A=
            foundPos =3D instance.options.ignoreCase ? =0A=
              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + =
1) : =0A=
              elem.indexOf(entry, foundPos + 1);=0A=
=0A=
          }=0A=
        }=0A=
        if (partial.length)=0A=
          ret =3D ret.concat(partial.slice(0, instance.options.choices - =
ret.length))=0A=
        return "<ul>" + ret.join('') + "</ul>";=0A=
      }=0A=
    }, options || { });=0A=
  }=0A=
});=0A=
=0A=
// AJAX in-place editor and collection editor=0A=
// Full rewrite by Christophe Porteneuve <tdd@tddsworld.com> (April =
2007).=0A=
=0A=
// Use this if you notice weird scrolling problems on some browsers,=0A=
// the DOM might be a bit confused when this gets called so do this=0A=
// waits 1 ms (with setTimeout) until it does the activation=0A=
Field.scrollFreeActivate =3D function(field) {=0A=
  setTimeout(function() {=0A=
    Field.activate(field);=0A=
  }, 1);=0A=
}=0A=
=0A=
Ajax.InPlaceEditor =3D Class.create({=0A=
  initialize: function(element, url, options) {=0A=
    this.url =3D url;=0A=
    this.element =3D element =3D $(element);=0A=
    this.prepareOptions();=0A=
    this._controls =3D { };=0A=
    arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION =
LAYER!!!=0A=
    Object.extend(this.options, options || { });=0A=
    if (!this.options.formId && this.element.id) {=0A=
      this.options.formId =3D this.element.id + '-inplaceeditor';=0A=
      if ($(this.options.formId))=0A=
        this.options.formId =3D '';=0A=
    }=0A=
    if (this.options.externalControl)=0A=
      this.options.externalControl =3D $(this.options.externalControl);=0A=
    if (!this.options.externalControl)=0A=
      this.options.externalControlOnly =3D false;=0A=
    this._originalBackground =3D =
this.element.getStyle('background-color') || 'transparent';=0A=
    this.element.title =3D this.options.clickToEditText;=0A=
    this._boundCancelHandler =3D this.handleFormCancellation.bind(this);=0A=
    this._boundComplete =3D (this.options.onComplete || =
Prototype.emptyFunction).bind(this);=0A=
    this._boundFailureHandler =3D this.handleAJAXFailure.bind(this);=0A=
    this._boundSubmitHandler =3D this.handleFormSubmission.bind(this);=0A=
    this._boundWrapperHandler =3D this.wrapUp.bind(this);=0A=
    this.registerListeners();=0A=
  },=0A=
  checkForEscapeOrReturn: function(e) {=0A=
    if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;=0A=
    if (Event.KEY_ESC =3D=3D e.keyCode)=0A=
      this.handleFormCancellation(e);=0A=
    else if (Event.KEY_RETURN =3D=3D e.keyCode)=0A=
      this.handleFormSubmission(e);=0A=
  },=0A=
  createControl: function(mode, handler, extraClasses) {=0A=
    var control =3D this.options[mode + 'Control'];=0A=
    var text =3D this.options[mode + 'Text'];=0A=
    if ('button' =3D=3D control) {=0A=
      var btn =3D document.createElement('input');=0A=
      btn.type =3D 'submit';=0A=
      btn.value =3D text;=0A=
      btn.className =3D 'editor_' + mode + '_button';=0A=
      if ('cancel' =3D=3D mode)=0A=
        btn.onclick =3D this._boundCancelHandler;=0A=
      this._form.appendChild(btn);=0A=
      this._controls[mode] =3D btn;=0A=
    } else if ('link' =3D=3D control) {=0A=
      var link =3D document.createElement('a');=0A=
      link.href =3D '#';=0A=
      link.appendChild(document.createTextNode(text));=0A=
      link.onclick =3D 'cancel' =3D=3D mode ? this._boundCancelHandler : =
this._boundSubmitHandler;=0A=
      link.className =3D 'editor_' + mode + '_link';=0A=
      if (extraClasses)=0A=
        link.className +=3D ' ' + extraClasses;=0A=
      this._form.appendChild(link);=0A=
      this._controls[mode] =3D link;=0A=
    }=0A=
  },=0A=
  createEditField: function() {=0A=
    var text =3D (this.options.loadTextURL ? this.options.loadingText : =
this.getText());=0A=
    var fld;=0A=
    if (1 >=3D this.options.rows && !/\r|\n/.test(this.getText())) {=0A=
      fld =3D document.createElement('input');=0A=
      fld.type =3D 'text';=0A=
      var size =3D this.options.size || this.options.cols || 0;=0A=
      if (0 < size) fld.size =3D size;=0A=
    } else {=0A=
      fld =3D document.createElement('textarea');=0A=
      fld.rows =3D (1 >=3D this.options.rows ? this.options.autoRows : =
this.options.rows);=0A=
      fld.cols =3D this.options.cols || 40;=0A=
    }=0A=
    fld.name =3D this.options.paramName;=0A=
    fld.value =3D text; // No HTML breaks conversion anymore=0A=
    fld.className =3D 'editor_field';=0A=
    if (this.options.submitOnBlur)=0A=
      fld.onblur =3D this._boundSubmitHandler;=0A=
    this._controls.editor =3D fld;=0A=
    if (this.options.loadTextURL)=0A=
      this.loadExternalText();=0A=
    this._form.appendChild(this._controls.editor);=0A=
  },=0A=
  createForm: function() {=0A=
    var ipe =3D this;=0A=
    function addText(mode, condition) {=0A=
      var text =3D ipe.options['text' + mode + 'Controls'];=0A=
      if (!text || condition =3D=3D=3D false) return;=0A=
      ipe._form.appendChild(document.createTextNode(text));=0A=
    };=0A=
    this._form =3D $(document.createElement('form'));=0A=
    this._form.id =3D this.options.formId;=0A=
    this._form.addClassName(this.options.formClassName);=0A=
    this._form.onsubmit =3D this._boundSubmitHandler;=0A=
    this.createEditField();=0A=
    if ('textarea' =3D=3D this._controls.editor.tagName.toLowerCase())=0A=
      this._form.appendChild(document.createElement('br'));=0A=
    if (this.options.onFormCustomization)=0A=
      this.options.onFormCustomization(this, this._form);=0A=
    addText('Before', this.options.okControl || =
this.options.cancelControl);=0A=
    this.createControl('ok', this._boundSubmitHandler);=0A=
    addText('Between', this.options.okControl && =
this.options.cancelControl);=0A=
    this.createControl('cancel', this._boundCancelHandler, =
'editor_cancel');=0A=
    addText('After', this.options.okControl || =
this.options.cancelControl);=0A=
  },=0A=
  destroy: function() {=0A=
    if (this._oldInnerHTML)=0A=
      this.element.innerHTML =3D this._oldInnerHTML;=0A=
    this.leaveEditMode();=0A=
    this.unregisterListeners();=0A=
  },=0A=
  enterEditMode: function(e) {=0A=
    if (this._saving || this._editing) return;=0A=
    this._editing =3D true;=0A=
    this.triggerCallback('onEnterEditMode');=0A=
    if (this.options.externalControl)=0A=
      this.options.externalControl.hide();=0A=
    this.element.hide();=0A=
    this.createForm();=0A=
    this.element.parentNode.insertBefore(this._form, this.element);=0A=
    if (!this.options.loadTextURL)=0A=
      this.postProcessEditField();=0A=
    if (e) Event.stop(e);=0A=
  },=0A=
  enterHover: function(e) {=0A=
    if (this.options.hoverClassName)=0A=
      this.element.addClassName(this.options.hoverClassName);=0A=
    if (this._saving) return;=0A=
    this.triggerCallback('onEnterHover');=0A=
  },=0A=
  getText: function() {=0A=
    return this.element.innerHTML;=0A=
  },=0A=
  handleAJAXFailure: function(transport) {=0A=
    this.triggerCallback('onFailure', transport);=0A=
    if (this._oldInnerHTML) {=0A=
      this.element.innerHTML =3D this._oldInnerHTML;=0A=
      this._oldInnerHTML =3D null;=0A=
    }=0A=
  },=0A=
  handleFormCancellation: function(e) {=0A=
    this.wrapUp();=0A=
    if (e) Event.stop(e);=0A=
  },=0A=
  handleFormSubmission: function(e) {=0A=
    var form =3D this._form;=0A=
    var value =3D $F(this._controls.editor);=0A=
    this.prepareSubmission();=0A=
    var params =3D this.options.callback(form, value) || '';=0A=
    if (Object.isString(params))=0A=
      params =3D params.toQueryParams();=0A=
    params.editorId =3D this.element.id;=0A=
    if (this.options.htmlResponse) {=0A=
      var options =3D Object.extend({ evalScripts: true }, =
this.options.ajaxOptions);=0A=
      Object.extend(options, {=0A=
        parameters: params,=0A=
        onComplete: this._boundWrapperHandler,=0A=
        onFailure: this._boundFailureHandler=0A=
      });=0A=
      new Ajax.Updater({ success: this.element }, this.url, options);=0A=
    } else {=0A=
      var options =3D Object.extend({ method: 'get' }, =
this.options.ajaxOptions);=0A=
      Object.extend(options, {=0A=
        parameters: params,=0A=
        onComplete: this._boundWrapperHandler,=0A=
        onFailure: this._boundFailureHandler=0A=
      });=0A=
      new Ajax.Request(this.url, options);=0A=
    }=0A=
    if (e) Event.stop(e);=0A=
  },=0A=
  leaveEditMode: function() {=0A=
    this.element.removeClassName(this.options.savingClassName);=0A=
    this.removeForm();=0A=
    this.leaveHover();=0A=
    this.element.style.backgroundColor =3D this._originalBackground;=0A=
    this.element.show();=0A=
    if (this.options.externalControl)=0A=
      this.options.externalControl.show();=0A=
    this._saving =3D false;=0A=
    this._editing =3D false;=0A=
    this._oldInnerHTML =3D null;=0A=
    this.triggerCallback('onLeaveEditMode');=0A=
  },=0A=
  leaveHover: function(e) {=0A=
    if (this.options.hoverClassName)=0A=
      this.element.removeClassName(this.options.hoverClassName);=0A=
    if (this._saving) return;=0A=
    this.triggerCallback('onLeaveHover');=0A=
  },=0A=
  loadExternalText: function() {=0A=
    this._form.addClassName(this.options.loadingClassName);=0A=
    this._controls.editor.disabled =3D true;=0A=
    var options =3D Object.extend({ method: 'get' }, =
this.options.ajaxOptions);=0A=
    Object.extend(options, {=0A=
      parameters: 'editorId=3D' + encodeURIComponent(this.element.id),=0A=
      onComplete: Prototype.emptyFunction,=0A=
      onSuccess: function(transport) {=0A=
        this._form.removeClassName(this.options.loadingClassName);=0A=
        var text =3D transport.responseText;=0A=
        if (this.options.stripLoadedTextTags)=0A=
          text =3D text.stripTags();=0A=
        this._controls.editor.value =3D text;=0A=
        this._controls.editor.disabled =3D false;=0A=
        this.postProcessEditField();=0A=
      }.bind(this),=0A=
      onFailure: this._boundFailureHandler=0A=
    });=0A=
    new Ajax.Request(this.options.loadTextURL, options);=0A=
  },=0A=
  postProcessEditField: function() {=0A=
    var fpc =3D this.options.fieldPostCreation;=0A=
    if (fpc)=0A=
      $(this._controls.editor)['focus' =3D=3D fpc ? 'focus' : =
'activate']();=0A=
  },=0A=
  prepareOptions: function() {=0A=
    this.options =3D Object.clone(Ajax.InPlaceEditor.DefaultOptions);=0A=
    Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);=0A=
    [this._extraDefaultOptions].flatten().compact().each(function(defs) {=0A=
      Object.extend(this.options, defs);=0A=
    }.bind(this));=0A=
  },=0A=
  prepareSubmission: function() {=0A=
    this._saving =3D true;=0A=
    this.removeForm();=0A=
    this.leaveHover();=0A=
    this.showSaving();=0A=
  },=0A=
  registerListeners: function() {=0A=
    this._listeners =3D { };=0A=
    var listener;=0A=
    $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {=0A=
      listener =3D this[pair.value].bind(this);=0A=
      this._listeners[pair.key] =3D listener;=0A=
      if (!this.options.externalControlOnly)=0A=
        this.element.observe(pair.key, listener);=0A=
      if (this.options.externalControl)=0A=
        this.options.externalControl.observe(pair.key, listener);=0A=
    }.bind(this));=0A=
  },=0A=
  removeForm: function() {=0A=
    if (!this._form) return;=0A=
    this._form.remove();=0A=
    this._form =3D null;=0A=
    this._controls =3D { };=0A=
  },=0A=
  showSaving: function() {=0A=
    this._oldInnerHTML =3D this.element.innerHTML;=0A=
    this.element.innerHTML =3D this.options.savingText;=0A=
    this.element.addClassName(this.options.savingClassName);=0A=
    this.element.style.backgroundColor =3D this._originalBackground;=0A=
    this.element.show();=0A=
  },=0A=
  triggerCallback: function(cbName, arg) {=0A=
    if ('function' =3D=3D typeof this.options[cbName]) {=0A=
      this.options[cbName](this, arg);=0A=
    }=0A=
  },=0A=
  unregisterListeners: function() {=0A=
    $H(this._listeners).each(function(pair) {=0A=
      if (!this.options.externalControlOnly)=0A=
        this.element.stopObserving(pair.key, pair.value);=0A=
      if (this.options.externalControl)=0A=
        this.options.externalControl.stopObserving(pair.key, pair.value);=0A=
    }.bind(this));=0A=
  },=0A=
  wrapUp: function(transport) {=0A=
    this.leaveEditMode();=0A=
    // Can't use triggerCallback due to backward compatibility: requires=0A=
    // binding + direct element=0A=
    this._boundComplete(transport, this.element);=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Ajax.InPlaceEditor.prototype, {=0A=
  dispose: Ajax.InPlaceEditor.prototype.destroy=0A=
});=0A=
=0A=
Ajax.InPlaceCollectionEditor =3D Class.create(Ajax.InPlaceEditor, {=0A=
  initialize: function($super, element, url, options) {=0A=
    this._extraDefaultOptions =3D =
Ajax.InPlaceCollectionEditor.DefaultOptions;=0A=
    $super(element, url, options);=0A=
  },=0A=
=0A=
  createEditField: function() {=0A=
    var list =3D document.createElement('select');=0A=
    list.name =3D this.options.paramName;=0A=
    list.size =3D 1;=0A=
    this._controls.editor =3D list;=0A=
    this._collection =3D this.options.collection || [];=0A=
    if (this.options.loadCollectionURL)=0A=
      this.loadCollection();=0A=
    else=0A=
      this.checkForExternalText();=0A=
    this._form.appendChild(this._controls.editor);=0A=
  },=0A=
=0A=
  loadCollection: function() {=0A=
    this._form.addClassName(this.options.loadingClassName);=0A=
    this.showLoadingText(this.options.loadingCollectionText);=0A=
    var options =3D Object.extend({ method: 'get' }, =
this.options.ajaxOptions);=0A=
    Object.extend(options, {=0A=
      parameters: 'editorId=3D' + encodeURIComponent(this.element.id),=0A=
      onComplete: Prototype.emptyFunction,=0A=
      onSuccess: function(transport) {=0A=
        var js =3D transport.responseText.strip();=0A=
        if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check=0A=
          throw 'Server returned an invalid collection representation.';=0A=
        this._collection =3D eval(js);=0A=
        this.checkForExternalText();=0A=
      }.bind(this),=0A=
      onFailure: this.onFailure=0A=
    });=0A=
    new Ajax.Request(this.options.loadCollectionURL, options);=0A=
  },=0A=
=0A=
  showLoadingText: function(text) {=0A=
    this._controls.editor.disabled =3D true;=0A=
    var tempOption =3D this._controls.editor.firstChild;=0A=
    if (!tempOption) {=0A=
      tempOption =3D document.createElement('option');=0A=
      tempOption.value =3D '';=0A=
      this._controls.editor.appendChild(tempOption);=0A=
      tempOption.selected =3D true;=0A=
    }=0A=
    tempOption.update((text || '').stripScripts().stripTags());=0A=
  },=0A=
=0A=
  checkForExternalText: function() {=0A=
    this._text =3D this.getText();=0A=
    if (this.options.loadTextURL)=0A=
      this.loadExternalText();=0A=
    else=0A=
      this.buildOptionList();=0A=
  },=0A=
=0A=
  loadExternalText: function() {=0A=
    this.showLoadingText(this.options.loadingText);=0A=
    var options =3D Object.extend({ method: 'get' }, =
this.options.ajaxOptions);=0A=
    Object.extend(options, {=0A=
      parameters: 'editorId=3D' + encodeURIComponent(this.element.id),=0A=
      onComplete: Prototype.emptyFunction,=0A=
      onSuccess: function(transport) {=0A=
        this._text =3D transport.responseText.strip();=0A=
        this.buildOptionList();=0A=
      }.bind(this),=0A=
      onFailure: this.onFailure=0A=
    });=0A=
    new Ajax.Request(this.options.loadTextURL, options);=0A=
  },=0A=
=0A=
  buildOptionList: function() {=0A=
    this._form.removeClassName(this.options.loadingClassName);=0A=
    this._collection =3D this._collection.map(function(entry) {=0A=
      return 2 =3D=3D=3D entry.length ? entry : [entry, entry].flatten();=0A=
    });=0A=
    var marker =3D ('value' in this.options) ? this.options.value : =
this._text;=0A=
    var textFound =3D this._collection.any(function(entry) {=0A=
      return entry[0] =3D=3D marker;=0A=
    }.bind(this));=0A=
    this._controls.editor.update('');=0A=
    var option;=0A=
    this._collection.each(function(entry, index) {=0A=
      option =3D document.createElement('option');=0A=
      option.value =3D entry[0];=0A=
      option.selected =3D textFound ? entry[0] =3D=3D marker : 0 =3D=3D =
index;=0A=
      option.appendChild(document.createTextNode(entry[1]));=0A=
      this._controls.editor.appendChild(option);=0A=
    }.bind(this));=0A=
    this._controls.editor.disabled =3D false;=0A=
    Field.scrollFreeActivate(this._controls.editor);=0A=
  }=0A=
});=0A=
=0A=
//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****=0A=
//**** This only  exists for a while,  in order to  let ****=0A=
//**** users adapt to  the new API.  Read up on the new ****=0A=
//**** API and convert your code to it ASAP!            ****=0A=
=0A=
Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions =3D =
function(options) {=0A=
  if (!options) return;=0A=
  function fallback(name, expr) {=0A=
    if (name in options || expr =3D=3D=3D undefined) return;=0A=
    options[name] =3D expr;=0A=
  };=0A=
  fallback('cancelControl', (options.cancelLink ? 'link' : =
(options.cancelButton ? 'button' :=0A=
    options.cancelLink =3D=3D options.cancelButton =3D=3D false ? false =
: undefined)));=0A=
  fallback('okControl', (options.okLink ? 'link' : (options.okButton ? =
'button' :=0A=
    options.okLink =3D=3D options.okButton =3D=3D false ? false : =
undefined)));=0A=
  fallback('highlightColor', options.highlightcolor);=0A=
  fallback('highlightEndColor', options.highlightendcolor);=0A=
};=0A=
=0A=
Object.extend(Ajax.InPlaceEditor, {=0A=
  DefaultOptions: {=0A=
    ajaxOptions: { },=0A=
    autoRows: 3,                                // Use when multi-line =
w/ rows =3D=3D 1=0A=
    cancelControl: 'link',                      // 'link'|'button'|false=0A=
    cancelText: 'cancel',=0A=
    clickToEditText: 'Click to edit',=0A=
    externalControl: null,                      // id|elt=0A=
    externalControlOnly: false,=0A=
    fieldPostCreation: 'activate',              // =
'activate'|'focus'|false=0A=
    formClassName: 'inplaceeditor-form',=0A=
    formId: null,                               // id|elt=0A=
    highlightColor: '#ffff99',=0A=
    highlightEndColor: '#ffffff',=0A=
    hoverClassName: '',=0A=
    htmlResponse: true,=0A=
    loadingClassName: 'inplaceeditor-loading',=0A=
    loadingText: 'Loading...',=0A=
    okControl: 'button',                        // 'link'|'button'|false=0A=
    okText: 'ok',=0A=
    paramName: 'value',=0A=
    rows: 1,                                    // If 1 and multi-line, =
uses autoRows=0A=
    savingClassName: 'inplaceeditor-saving',=0A=
    savingText: 'Saving...',=0A=
    size: 0,=0A=
    stripLoadedTextTags: false,=0A=
    submitOnBlur: false,=0A=
    textAfterControls: '',=0A=
    textBeforeControls: '',=0A=
    textBetweenControls: ''=0A=
  },=0A=
  DefaultCallbacks: {=0A=
    callback: function(form) {=0A=
      return Form.serialize(form);=0A=
    },=0A=
    onComplete: function(transport, element) {=0A=
      // For backward compatibility, this one is bound to the IPE, and =
passes=0A=
      // the element directly.  It was too often customized, so we don't =
break it.=0A=
      new Effect.Highlight(element, {=0A=
        startcolor: this.options.highlightColor, keepBackgroundImage: =
true });=0A=
    },=0A=
    onEnterEditMode: null,=0A=
    onEnterHover: function(ipe) {=0A=
      ipe.element.style.backgroundColor =3D ipe.options.highlightColor;=0A=
      if (ipe._effect)=0A=
        ipe._effect.cancel();=0A=
    },=0A=
    onFailure: function(transport, ipe) {=0A=
      alert('Error communication with the server: ' + =
transport.responseText.stripTags());=0A=
    },=0A=
    onFormCustomization: null, // Takes the IPE and its generated form, =
after editor, before controls.=0A=
    onLeaveEditMode: null,=0A=
    onLeaveHover: function(ipe) {=0A=
      ipe._effect =3D new Effect.Highlight(ipe.element, {=0A=
        startcolor: ipe.options.highlightColor, endcolor: =
ipe.options.highlightEndColor,=0A=
        restorecolor: ipe._originalBackground, keepBackgroundImage: true=0A=
      });=0A=
    }=0A=
  },=0A=
  Listeners: {=0A=
    click: 'enterEditMode',=0A=
    keydown: 'checkForEscapeOrReturn',=0A=
    mouseover: 'enterHover',=0A=
    mouseout: 'leaveHover'=0A=
  }=0A=
});=0A=
=0A=
Ajax.InPlaceCollectionEditor.DefaultOptions =3D {=0A=
  loadingCollectionText: 'Loading options...'=0A=
};=0A=
=0A=
// Delayed observer, like Form.Element.Observer, =0A=
// but waits for delay after last key input=0A=
// Ideal for live-search fields=0A=
=0A=
Form.Element.DelayedObserver =3D Class.create({=0A=
  initialize: function(element, delay, callback) {=0A=
    this.delay     =3D delay || 0.5;=0A=
    this.element   =3D $(element);=0A=
    this.callback  =3D callback;=0A=
    this.timer     =3D null;=0A=
    this.lastValue =3D $F(this.element); =0A=
    =
Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListen=
er(this));=0A=
  },=0A=
  delayedListener: function(event) {=0A=
    if(this.lastValue =3D=3D $F(this.element)) return;=0A=
    if(this.timer) clearTimeout(this.timer);=0A=
    this.timer =3D setTimeout(this.onTimerEvent.bind(this), this.delay * =
1000);=0A=
    this.lastValue =3D $F(this.element);=0A=
  },=0A=
  onTimerEvent: function() {=0A=
    this.timer =3D null;=0A=
    this.callback(this.element, $F(this.element));=0A=
  }=0A=
});=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/javascript/openWindow.js

function openNS(url, width, height) {=0A=
    if ((navigator.appName =3D=3D "Microsoft Internet Explorer") &&=0A=
        (parseFloat(navigator.appVersion) < 4 ))=0A=
    {=0A=
        return false;=0A=
    }=0A=
     =0A=
    if (!width) var width =3D 600;=0A=
    if (!height) var height =3D 400;=0A=
=0A=
    var newX=3Dwidth,newY=3Dheight,xOffset=3D10,yOffset=3D10;=0A=
    var parms =3D 'width=3D' + newX +=0A=
            ',height=3D' + newY +=0A=
            ',screenX=3D'+ xOffset +=0A=
            ',screenY=3D' + yOffset +=0A=
            ',status=3Dyes,toolbar=3Dyes,menubar=3Dyes' +=0A=
            ',scrollbars=3Dyes,resizable=3Dyes,location=3Dyes';=0A=
    nsWin =3D window.open(url,'displayWindow',parms);=0A=
    nsWin.focus();=0A=
    return false;=0A=
}=0A=
=0A=
function openStrippedNS(url) {=0A=
    if ((navigator.appName =3D=3D "Microsoft Internet Explorer") &&=0A=
        (parseFloat(navigator.appVersion) < 4 ))=0A=
    {=0A=
        return false;=0A=
    }=0A=
=0A=
    var xOffset=3D25,yOffset=3D25;=0A=
    var parms =3D 'left=3D'+ xOffset +=0A=
            ',top=3D' + yOffset +=0A=
            ',status=3Dyes,toolbar=3Dno,menubar=3Dno' +=0A=
            ',scrollbars=3Dyes,resizable=3Dyes,location=3Dno';=0A=
    nsWin =3D window.open(url,'displayWindow',parms);=0A=
    nsWin.focus();=0A=
    return false;=0A=
}=0A=
=0A=
function openPopup(url, windowName, width, height) {=0A=
  if ((navigator.appName =3D=3D "Microsoft Internet Explorer") &&=0A=
    (parseFloat(navigator.appVersion) < 4 )) { return false; }=0A=
     =0A=
  var xOffset=3D25,yOffset=3D25;=0A=
  var parms =3D 'width=3D' + width +=0A=
        ',height=3D' + height +=0A=
        ',left=3D' + xOffset +=0A=
        ',top=3D' + yOffset +=0A=
        ',status=3Dno,toolbar=3Dno,menubar=3Dno' +=0A=
        ',scrollbars=3Dyes,resizable=3Dyes';=0A=
  var displayName =3D windowName;=0A=
=0A=
  nsWin =3D window.open(url, displayName, parms);=0A=
  nsWin.focus();=0A=
  return false;=0A=
}=0A=
=0A=
function displayAds() {=0A=
=0A=
  var lbZone =3D document.getElementById('leaderboard');=0A=
  var lbContent =3D document.getElementById('leaderboard2');=0A=
  if(lbZone && lbContent) {=0A=
    lbZone.innerHTML =3D lbContent.innerHTML;=0A=
  }=0A=
=0A=
  var skyZone =3D document.getElementById('skyscraper');=0A=
  var skyContent =3D document.getElementById('skyscraper2');=0A=
  if(skyZone && skyContent) {=0A=
    skyZone.innerHTML =3D skyContent.innerHTML;=0A=
  }=0A=
=0A=
  var boomZone =3D document.getElementById('boombox');=0A=
  var boomContent =3D document.getElementById('boombox2');=0A=
  if(boomZone && boomContent) {=0A=
    boomZone.innerHTML =3D boomContent.innerHTML;=0A=
  }=0A=
}=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/javascript/ggcon.js

function google_ad_request_done(google_ads) {=0A=
=0A=
    var s =3D '';=0A=
    var i;=0A=
=0A=
    if (google_ads.length =3D=3D 0) {=0A=
      return;=0A=
    }=0A=
=0A=
    if (google_ads[0].type =3D=3D "image") {=0A=
      s +=3D '<a href=3D"' + google_ads[0].url +=0A=
              '" target=3D"_top" title=3D"go to ' + =
google_ads[0].visible_url +=0A=
              '"><img border=3D"0" src=3D"' + google_ads[0].image_url +=0A=
              '"width=3D"' + google_ads[0].image_width +=0A=
              '"height=3D"' + google_ads[0].image_height + '"></a>';=0A=
    } else if (google_ads[0].type =3D=3D "flash") {=0A=
      s +=3D '<object =
classid=3D"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' +=0A=
              ' =
codebase=3D"http://download.macromedia.com/pub/shockwave/cabs/flash/swfla=
sh.cab#version=3D6,0,0,0"' +=0A=
              ' WIDTH=3D"' + google_ad.image_width +=0A=
              '" HEIGHT=3D"' + google_ad.image_height + '">' +=0A=
              '<PARAM NAME=3D"movie" VALUE=3D"' + google_ad.image_url + =
'">' +=0A=
              '<PARAM NAME=3D"quality" VALUE=3D"high">' +=0A=
              '<PARAM NAME=3D"AllowScriptAccess" VALUE=3D"never">' +=0A=
              '<EMBED src=3D"' + google_ad.image_url +=0A=
              '" WIDTH=3D"' + google_ad.image_width +=0A=
              '" HEIGHT=3D"' + google_ad.image_height + =0A=
              '" TYPE=3D"application/x-shockwave-flash"' + =0A=
              ' AllowScriptAccess=3D"never" ' + =0A=
              ' =
PLUGINSPAGE=3D"http://www.macromedia.com/go/getflashplayer"></EMBED></OBJ=
ECT>';=0A=
    } else if (google_ads[0].type =3D=3D "text") {=0A=
        s +=3D '<div style=3D"background-color:#FFFFFF; padding-top: =
15px; padding-bottom: 15px; padding-left: 5px; padding-right: 5px">'=0A=
        s +=3D '<div style=3D"width: 100%;border: 1px solid #CCCCCC; =
font-family: arial; font-size: 12px;">';=0A=
        s +=3D '<div style=3D"padding: 4px; border-bottom: 1px solid =
#CCCCCC; background-color:#EEEEEE">Sponsored Links</div>';=0A=
        if (google_ads.length =3D=3D 1) {=0A=
            /*=0A=
             * Partners should adjust text sizes=0A=
             * so ads occupy the majority of ad space.=0A=
             */=0A=
            s +=3D '<div style=3D"margin: 5px">';=0A=
            s +=3D '<a href=3D"' + google_ads[0].url + '" ' +=0A=
                            'onmouseout=3D"window.status=3D\'\'" ' +=0A=
                            'onmouseover=3D"window.status=3D\'go to ' +=0A=
                            google_ads[0].visible_url + '\'" ' +=0A=
                            '>' +=0A=
                            google_ads[0].line1 + '</a><br>' +=0A=
                            '<span style=3D"color:#000000">' +=0A=
                            google_ads[0].line2 + '&nbsp;' +=0A=
                            google_ads[0].line3 + '<br></span>' +=0A=
                            '<span style=3D"color:#008000">' +=0A=
                            google_ads[0].visible_url + '</span><br>';=0A=
            s +=3D '</div>';=0A=
        } else if (google_ads.length > 1) {=0A=
            /*=0A=
             * For text ads, append each ad to the string.=0A=
             */=0A=
            for(i=3D0; i < google_ads.length; ++i) {=0A=
                s +=3D '<div style=3D"margin: 5px">';=0A=
                s +=3D '<a href=3D"' + google_ads[i].url + '" ' +=0A=
                                  'onmouseout=3D"window.status=3D\'\'" ' =
+=0A=
                                  'onmouseover=3D"window.status=3D\'go =
to ' +=0A=
                                  google_ads[i].visible_url + '\'" ' +=0A=
                                  '>' +=0A=
                                  google_ads[i].line1 + '</a><br>' +=0A=
                                  '<span style=3D"color:#000000">' +=0A=
                                  google_ads[i].line2 + '<br>' +=0A=
                                  google_ads[i].line3 + '<br></span>' +=0A=
                                  '<span style=3D"color:#008000">' +=0A=
                                  google_ads[i].visible_url + =
'</span><br>';=0A=
                s +=3D '</div>';=0A=
            }=0A=
        }=0A=
        s +=3D '</div></div>';=0A=
    }=0A=
=0A=
    document.write(s);=0A=
    return;=0A=
}=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js

(function(){=0A=
var i=3Dtrue,l=3Dnull,m=3Dfalse,n=3D(new =
Date).getTime(),aa=3Dfunction(a){var b=3D(new =
Date).getTime()-n,c=3D"&dtd=3D"+(b<1000?b:"M");return a+c};var =
o=3Dthis,ba=3Dfunction(a,b,c){var d=3Da.split("."),e=3Dc||o;!(d[0]in =
e)&&e.execScript&&e.execScript("var "+d[0]);for(var =
f;d.length&&(f=3Dd.shift());)if(!d.length&&b!=3D=3Dundefined)e[f]=3Db;els=
e e=3De[f]?e[f]:(e[f]=3D{})},p=3Dfunction(a){var b=3Dtypeof =
a;if(b=3D=3D"object")if(a){if(a instanceof Array||!(a instanceof =
Object)&&Object.prototype.toString.call(a)=3D=3D"[object Array]"||typeof =
a.length=3D=3D"number"&&typeof a.splice!=3D"undefined"&&typeof =
a.propertyIsEnumerable!=3D"undefined"&&!a.propertyIsEnumerable("splice"))=
return"array";=0A=
if(!(a instanceof =
Object)&&(Object.prototype.toString.call(a)=3D=3D"[object =
Function]"||typeof a.call!=3D"undefined"&&typeof =
a.propertyIsEnumerable!=3D"undefined"&&!a.propertyIsEnumerable("call")))r=
eturn"function"}else return"null";else if(b=3D=3D"function"&&typeof =
a.call=3D=3D"undefined")return"object";return b},ca=3Dfunction(a){var =
b=3Dp(a);return b=3D=3D"array"||b=3D=3D"object"&&typeof =
a.length=3D=3D"number"},da=3Dfunction(a){return typeof =
a=3D=3D"string"},ea=3Dfunction(a){var b=3Dp(a);return =
b=3D=3D"object"||b=3D=3D"array"||b=3D=3D"function"};=0A=
Math.floor(Math.random()*2147483648).toString(36);=0A=
var fa=3Dfunction(a){var =
b=3Dp(a);if(b=3D=3D"object"||b=3D=3D"array"){if(a.clone)return =
a.clone.call(a);var c=3Db=3D=3D"array"?[]:{};for(var d in =
a)c[d]=3Dfa(a[d]);return c}return a},ga=3Dfunction(a,b){var =
c=3Da.u;if(arguments.length>2){var =
d=3DArray.prototype.slice.call(arguments,2);c&&d.unshift.apply(d,c);c=3Dd=
}b=3Da.w||b;a=3Da.v||a;var e,f=3Db||o;e=3Dc?function(){var =
h=3DArray.prototype.slice.call(arguments);h.unshift.apply(h,c);return =
a.apply(f,h)}:function(){return =
a.apply(f,arguments)};e.u=3Dc;e.w=3Db;e.v=3Da;return =
e},ha=3DDate.now||function(){return(new Date).getTime()},=0A=
q=3Dfunction(a,b,c){ba(a,b,c)};function r(a,b){var =
c=3DparseFloat(a);return isNaN(c)||c>1||c<0?b:c}function =
ia(a,b){if(a=3D=3D"true")return i;if(a=3D=3D"false")return m;return =
b}function t(a,b){var c=3D/^([\w-]+\.)+[\w-]{2,}(\:[0-9]+)?$/;return =
c.test(a)?a:b};var =
ja=3D"pagead2.googlesyndication.com",ka=3D"googleads.g.doubleclick.net",l=
a=3D"pubads.g.doubleclick.net",ma=3D"securepubads.g.doubleclick.net",na=3D=
"partner.googleadservices.com",v=3Dt("pagead2.googlesyndication.com",ja),=
oa=3Dt("googleads.g.doubleclick.net",ka),pa=3Dt("pagead2.googlesyndicatio=
n.com",ja);t("pubads.g.doubleclick.net",la);t("partner.googleadservices.c=
om",na);t("securepubads.g.doubleclick.net",ma);function y(a){return =
typeof =
encodeURIComponent=3D=3D"function"?encodeURIComponent(a):escape(a)}functi=
on qa(a,b,c){var =
d=3Ddocument.createElement("script");d.type=3D"text/javascript";if(b)d.on=
load=3Db;if(c)d.id=3Dc;d.src=3Da;var =
e=3Ddocument.getElementsByTagName("head")[0];if(!e)return =
m;window.setTimeout(function(){e.appendChild(d)},0);return i}function =
ra(a,b){a.google_image_requests||(a.google_image_requests=3D[]);var =
c=3Dnew Image;c.src=3Db;a.google_image_requests.push(c)}=0A=
function sa(a){if(a in ta)return ta[a];return =
ta[a]=3Dnavigator.userAgent.toLowerCase().indexOf(a)!=3D-1}var ta=3D{};=0A=
function ua(){if(navigator.plugins&&navigator.mimeTypes.length){var =
a=3Dnavigator.plugins["Shockwave Flash"];if(a&&a.description)return =
a.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")}else =
if(navigator.userAgent&&navigator.userAgent.indexOf("Windows =
CE")>=3D0){for(var b=3D3,c=3D1;c;)try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+(b+1));b++}catch(d){c=3Dl}=
return b.toString()}else if(sa("msie")&&!window.opera){c=3Dl;try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(e){b=3D=0A=
0;try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");b=3D6;c.AllowScriptAcces=
s=3D"always"}catch(f){if(b=3D=3D6)return b.toString()}try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(h){}}if(c){b=3Dc.Get=
Variable("$version").split(" ")[1];return =
b.replace(/,/g,".")}}return"0"}function va(a){var =
b=3Da.google_ad_format;if(b)return b.indexOf("_0ads")>0;return =
a.google_ad_output!=3D"html"&&a.google_num_radlinks>0}function =
z(a){return!!a&&a.indexOf("_sdo")!=3D-1}=0A=
function Aa(a){return va(a)||z(a.google_ad_format)}function A(a,b){var =
c=3DMath.random();if(c<b){var d=3DMath.floor(c/b*a.length);return =
a[d]}return""};var =
Ba=3D{google_ad_channel:"channel",google_ad_host:"host",google_ad_host_ch=
annel:"h_ch",google_ad_host_tier_id:"ht_id",google_ad_region:"region",goo=
gle_ad_section:"region",google_ad_type:"ad_type",google_adtest:"adtest",g=
oogle_allow_expandable_ads:"ea",google_alternate_ad_url:"alternate_ad_url=
",google_alternate_color:"alt_color",google_bid:"bid",google_city:"gcs",g=
oogle_color_bg:"color_bg",google_color_border:"color_border",google_color=
_line:"color_line",google_color_link:"color_link",google_color_text:"colo=
r_text",=0A=
google_color_url:"color_url",google_contents:"contents",google_country:"g=
l",google_cust_age:"cust_age",google_cust_ch:"cust_ch",google_cust_gender=
:"cust_gender",google_cust_id:"cust_id",google_cust_interests:"cust_inter=
ests",google_cust_job:"cust_job",google_cust_l:"cust_l",google_cust_lh:"c=
ust_lh",google_cust_u_url:"cust_u_url",google_disable_video_autoplay:"dis=
able_video_autoplay",google_ed:"ed",google_encoding:"oe",google_feedback:=
"feedback_link",google_flash_version:"flash",google_font_face:"f",=0A=
google_font_size:"fs",google_gl:"gl",google_hints:"hints",google_kw:"kw",=
google_kw_type:"kw_type",google_language:"hl",google_page_url:"url",googl=
e_referrer_url:"ref",google_region:"gr",google_reuse_colors:"reuse_colors=
",google_safe:"adsafe",google_tag_info:"gut",google_targeting:"targeting"=
,google_ui_features:"ui",google_ui_version:"uiv",google_video_doc_id:"vid=
eo_doc_id",google_video_product_type:"video_product_type"},Ca=3D{google_a=
d_format:"format",google_ad_output:"output",google_ad_callback:"callback"=
,=0A=
google_ad_height:"h",google_ad_override:"google_ad_override",google_ad_sl=
ot:"slotname",google_ad_width:"w",google_analytics_uacct:"ga_wpids",googl=
e_correlator:"correlator",google_cpa_choice:"cpa_choice",google_ctr_thres=
hold:"ctr_t",google_image_size:"image_size",google_last_modified_time:"lm=
t",google_max_num_ads:"num_ads",google_max_radlink_len:"max_radlink_len",=
google_num_radlinks:"num_radlinks",google_num_radlinks_per_unit:"num_radl=
inks_per_unit",google_only_ads_with_video:"only_ads_with_video",=0A=
google_page_location:"loc",google_rl_dest_url:"rl_dest_url",google_rl_fil=
tering:"rl_filtering",google_rl_mode:"rl_mode",google_rt:"rt",google_skip=
:"skip"},Da=3D{google_only_pyv_ads:"pyv",google_with_pyv_ads:"withpyv"};f=
unction Ea(a){return Ba[a]||Ca[a]||Da[a]||l};var =
C=3Ddocument,D=3Dnavigator,E=3Dwindow;=0A=
function Fa(){var a=3DC.cookie,b=3DMath.round((new =
Date).getTime()/1000),c=3DE.google_analytics_domain_name,d=3Dtypeof =
c=3D=3D"undefined"?Ga("auto"):Ga(c),e=3Da.indexOf("__utma=3D"+d+".")>-1,f=
=3Da.indexOf("__utmb=3D"+d)>-1,h=3Da.indexOf("__utmc=3D"+d)>-1,k,j=3D{},g=
=3D!!E&&!!E.gaGlobal;if(e){k=3Da.split("__utma=3D"+d+".")[1].split(";")[0=
].split(".");j.sid=3Df&&h?k[3]+"":g&&E.gaGlobal.sid?E.gaGlobal.sid:b+"";j=
.vid=3Dk[0]+"."+k[1];j.from_cookie=3Di}else{j.sid=3Dg&&E.gaGlobal.sid?E.g=
aGlobal.sid:b+"";j.vid=3Dg&&E.gaGlobal.vid?E.gaGlobal.vid:(Math.round(Mat=
h.random()*=0A=
2147483647)^Ha()&2147483647)+"."+b;j.from_cookie=3Dm}j.dh=3Dd;j.hid=3Dg&&=
E.gaGlobal.hid?E.gaGlobal.hid:Math.round(Math.random()*2147483647);return=
 E.gaGlobal=3Dj}=0A=
function Ha(){var =
a=3DC.cookie?C.cookie:"",b=3DE.history.length,c,d,e=3D[D.appName,D.versio=
n,D.language?D.language:D.browserLanguage,D.platform,D.userAgent,D.javaEn=
abled()?1:0].join("");if(E.screen)e+=3DE.screen.width+"x"+E.screen.height=
+E.screen.colorDepth;else =
if(E.java){d=3Djava.awt.Toolkit.getDefaultToolkit().getScreenSize();e+=3D=
d.screen.width+"x"+d.screen.height}e+=3Da;e+=3DC.referrer?C.referrer:"";f=
or(c=3De.length;b>0;)e+=3Db--^c++;return Ia(e)}=0A=
function Ia(a){var =
b=3D1,c=3D0,d,e;if(!(a=3D=3Dundefined||a=3D=3D"")){b=3D0;for(d=3Da.length=
-1;d>=3D0;d--){e=3Da.charCodeAt(d);b=3D(b<<6&268435455)+e+(e<<14);c=3Db&2=
66338304;b=3Dc!=3D0?b^c>>21:b}}return b}function =
Ga(a){if(!a||a=3D=3D""||a=3D=3D"none")return =
1;if("auto"=3D=3Da){a=3DC.domain;if("www."=3D=3Da.substring(0,4))a=3Da.su=
bstring(4,a.length)}return Ia(a.toLowerCase())};var =
Ja=3Ddocument,Ka=3Dia("true",m),La=3Dia("true",m),Ma=3Dia("false",m);ia("=
false",m);var =
F=3Dwindow;document.URL&&(document.URL.indexOf("?google_debug")>0||docume=
nt.URL.indexOf("&google_debug")>0);var Na=3Dfunction(a){return =
a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ta=3Dfunction(a,b){if(b)return =
a.replace(Oa,"&amp;").replace(Pa,"&lt;").replace(Qa,"&gt;").replace(Ra,"&=
quot;");else{if(!Sa.test(a))return =
a;if(a.indexOf("&")!=3D-1)a=3Da.replace(Oa,"&amp;");if(a.indexOf("<")!=3D=
-1)a=3Da.replace(Pa,"&lt;");if(a.indexOf(">")!=3D-1)a=3Da.replace(Qa,"&gt=
;");if(a.indexOf('"')!=3D-1)a=3Da.replace(Ra,"&quot;");return =
a}},Oa=3D/&/g,Pa=3D/</g,Qa=3D/>/g,Ra=3D/\"/g,Sa=3D/[&<>\"]/,Wa=3Dfunction=
(a){if(G(a,"&"))return"document"in o&&!G(a,"<")?=0A=
Ua(a):Va(a);return a},Ua=3Dfunction(a){var =
b=3Do.document.createElement("a");b.innerHTML=3Da;b.normalize&&b.normaliz=
e();a=3Db.firstChild.nodeValue;b.innerHTML=3D"";return =
a},Va=3Dfunction(a){return =
a.replace(/&([^;]+);/g,function(b,c){switch(c){case "amp":return"&";case =
"lt":return"<";case "gt":return">";case =
"quot":return'"';default:if(c.charAt(0)=3D=3D"#"){var =
d=3DNumber("0"+c.substr(1));if(!isNaN(d))return =
String.fromCharCode(d)}return b}})},Xa=3Dfunction(a,b){for(var =
c=3Db.length,d=3D0;d<c;d++){var e=3Dc=3D=3D1?b:b.charAt(d);=0A=
if(a.charAt(0)=3D=3De&&a.charAt(a.length-1)=3D=3De)return =
a.substring(1,a.length-1)}return a},G=3Dfunction(a,b){return =
a.indexOf(b)!=3D-1},Za=3Dfunction(a,b){for(var =
c=3D0,d=3DNa(String(a)).split("."),e=3DNa(String(b)).split("."),f=3DMath.=
max(d.length,e.length),h=3D0;c=3D=3D0&&h<f;h++){var =
k=3Dd[h]||"",j=3De[h]||"",g=3Dnew RegExp("(\\d*)(\\D*)","g"),u=3Dnew =
RegExp("(\\d*)(\\D*)","g");do{var =
w=3Dg.exec(k)||["","",""],x=3Du.exec(j)||["","",""];if(w[0].length=3D=3D0=
&&x[0].length=3D=3D0)break;var =
s=3Dw[1].length=3D=3D0?0:parseInt(w[1],10),S=3Dx[1].length=3D=3D=0A=
0?0:parseInt(x[1],10);c=3DYa(s,S)||Ya(w[2].length=3D=3D0,x[2].length=3D=3D=
0)||Ya(w[2],x[2])}while(c=3D=3D0)}return =
c},Ya=3Dfunction(a,b){if(a<b)return-1;else if(a>b)return 1;return =
0};ha();var =
H=3Dfunction(a){this.t=3Da;this.i=3D[];this.p=3Dthis.h=3D0;this.d=3D[];th=
is.n=3Dm};H.prototype.s=3Dfunction(a,b){var =
c=3Dthis.t[b],d=3Dthis.i;this.t[b]=3Dfunction(e){if(e&&e.length>0){var =
f=3De.length>1?e[1].url:l;d.push([a,Wa(e[0].url),f])}c(e)}};H.prototype.r=
=3Dfunction(){this.h++};H.prototype.o=3Dfunction(){if(!this.n){qa("http:/=
/"+v+"/pagead/osd.js");this.n=3Di}};H.prototype.j=3Dfunction(a){if(this.h=
>0)for(var =
b=3Ddocument.getElementsByTagName("iframe"),c=3D0;c<b.length;c++)b.item(c=
).name=3D=3D"google_ads_frame"&&a(b.item(c),b.item(c).src)};=0A=
H.prototype.k=3Dfunction(a){var b=3Dthis.i;if(b.length>0)for(var =
c=3Ddocument.getElementsByTagName("a"),d=3Dfunction(g,u){return =
g.innerHTML.indexOf(u)>0},e=3D0;e<c.length;e++)for(var =
f=3D0;f<b.length;f++)if(c.item(e).href=3D=3Db[f][1]){var =
h=3Dc.item(e).parentNode;if(b[f][2])for(var =
k=3Dh,j=3D0;j<4;j++){if(d(k,b[f][2])){h=3Dk;break}k=3Dk.parentNode}a(h,b[=
f][0]);b.splice(f,1);break}};H.prototype.e=3Dfunction(a){this.k(a);this.j=
(a)};H.prototype.a=3Dfunction(a){this.p=3Da};H.prototype.g=3Dfunction(){r=
eturn this.p};=0A=
H.prototype.f=3Dfunction(){return =
this.i.length+this.h};H.prototype.b=3Dfunction(a){this.d=3Da};H.prototype=
.q=3Dfunction(a,b){if(this.d.length>0){for(var =
c=3D0;c<this.d.length;c++)if(this.d[c]=3D=3Da)if(a=3D=3D"js")this.s(b,"go=
ogle_ad_request_done");else a=3D=3D"html"&&this.r();this.o()}};var =
$a=3Dfunction(){window.__google_ad_urls||(window.__google_ad_urls=3Dnew =
H(window));return =
window.__google_ad_urls};q("Goog_AdSense_getAdAdapterInstance",$a);q("Goo=
g_AdSense_OsdAdapter",H);=0A=
q("Goog_AdSense_OsdAdapter.prototype.numBlocks",H.prototype.f);q("Goog_Ad=
Sense_OsdAdapter.prototype.findBlocks",H.prototype.e);q("Goog_AdSense_Osd=
Adapter.prototype.getOsdMode",H.prototype.g);function ab(a,b){try{return =
a.top.document.URL=3D=3Db.URL}catch(c){}return m}function =
bb(a,b,c,d){var =
e=3Dc||a.google_ad_width,f=3Dd||a.google_ad_height;if(ab(a,b))return =
m;var h=3Db.documentElement;if(e&&f){var =
k=3D1,j=3D1;if(a.innerHeight){k=3Da.innerWidth;j=3Da.innerHeight}else =
if(h&&h.clientHeight){k=3Dh.clientWidth;j=3Dh.clientHeight}else =
if(b.body){k=3Db.body.clientWidth;j=3Db.body.clientHeight}if(j>2*f||k>2*e=
)return m}return i}function cb(a,b){for(var c in b)a["google_"+c]=3Db[c]}=0A=
function db(a,b){if(!b)return a.URL;return a.referrer}function =
eb(a,b){if(!b&&a.google_referrer_url=3D=3Dl)return"0";else =
if(b&&a.google_referrer_url=3D=3Dl)return"1";else =
if(!b&&a.google_referrer_url!=3Dl)return"2";else =
if(b&&a.google_referrer_url!=3Dl)return"3";return"4"}function =
fb(a,b,c,d){a.page_url=3Ddb(c,d);a.page_location=3Dl}function =
gb(a,b,c,d){a.page_url=3Db.google_page_url;a.page_location=3Ddb(c,d)||"EM=
PTY"}=0A=
function hb(a,b){var =
c=3D{},d=3Dbb(a,b,a.google_ad_width,a.google_ad_height);c.iframing=3Deb(a=
,d);a.google_page_url?gb(c,a,b,d):fb(c,a,b,d);c.last_modified_time=3Db.UR=
L=3D=3Dc.page_url?Date.parse(b.lastModified)/1000:l;c.referrer_url=3Dd?a.=
google_referrer_url:a.google_page_url&&a.google_referrer_url?a.google_ref=
errer_url:b.referrer;return c}function ib(a){var =
b=3D{},c=3Da.URL.substring(a.URL.lastIndexOf("http"));b.iframing=3Dl;b.pa=
ge_url=3Dc;b.page_location=3Da.URL;b.last_modified_time=3Dl;b.referrer_ur=
l=3Dc;return b}=0A=
function jb(a,b){var c=3Dkb(a,b);cb(a,c)}function kb(a,b){var c;return =
c=3Da.google_page_url=3D=3Dl&&lb[b.domain]?ib(b):hb(a,b)}var =
lb=3D{};lb["ad.yieldmanager.com"]=3Di;var mb=3Dfunction(a,b,c){var =
d=3Dga(b,o,a),e=3Dwindow.onerror;window.onerror=3Dd;try{c()}catch(f){var =
h=3Df.toString(),k=3D"";if(f.fileName)k=3Df.fileName;var =
j=3D-1;if(f.lineNumber)j=3Df.lineNumber;var g=3Dd(h,k,j);if(!g)throw =
f;}window.onerror=3De};q("google_protectAndRun",mb);=0A=
var ob=3Dfunction(a,b,c,d){if(Math.random()<0.01){var =
e=3DJa,f=3D["http://",v,"/pagead/gen_204","?id=3Djserror","&cb=3D",Ka?1:0=
,"&cd=3D",La?1:0,"&context=3D",y(a),"&msg=3D",y(b),"&file=3D",y(c),"&line=
=3D",y(d.toString()),"&url=3D",y(e.URL.substring(0,512)),"&ref=3D",y(e.re=
ferrer.substring(0,512))];f.push(nb());ra(F,f.join(""))}return!Ma};q("goo=
gle_handleError",ob);=0A=
var nb=3Dfunction(){var =
a=3D["&client=3D",y(F.google_ad_client),"&format=3D",y(F.google_ad_format=
),"&slotname=3D",y(F.google_ad_slot),"&output=3D",y(F.google_ad_output),"=
&ad_type=3D",y(F.google_ad_type)];return a.join("")};var =
pb=3Dfunction(a,b,c){if(a.forEach)a.forEach(b,c);else =
if(Array.forEach)Array.forEach(a,b,c);else for(var =
d=3Da.length,e=3Dda(a)?a.split(""):a,f=3D0;f<d;f++)f in =
e&&b.call(c,e[f],f,a)},qb=3Dfunction(a){if(p(a)=3D=3D"array")return =
a.concat();else{for(var =
b=3D[],c=3D0,d=3Da.length;c<d;c++)b[c]=3Da[c];return b}};var =
I=3Dfunction(a,b){this.x=3Da!=3D=3Dundefined?a:0;this.y=3Db!=3D=3Dundefin=
ed?b:0};I.prototype.clone=3Dfunction(){return new =
I(this.x,this.y)};I.prototype.toString=3Dfunction(){return"("+this.x+", =
"+this.y+")"};var =
J=3Dfunction(a,b){this.width=3Da;this.height=3Db};J.prototype.clone=3Dfun=
ction(){return new =
J(this.width,this.height)};J.prototype.toString=3Dfunction(){return"("+th=
is.width+" x =
"+this.height+")"};J.prototype.ceil=3Dfunction(){this.width=3DMath.ceil(t=
his.width);this.height=3DMath.ceil(this.height);return =
this};J.prototype.floor=3Dfunction(){this.width=3DMath.floor(this.width);=
this.height=3DMath.floor(this.height);return this};=0A=
J.prototype.round=3Dfunction(){this.width=3DMath.round(this.width);this.h=
eight=3DMath.round(this.height);return =
this};J.prototype.scale=3Dfunction(a){this.width*=3Da;this.height*=3Da;re=
turn this};var rb=3Dfunction(a,b,c){for(var d in =
a)b.call(c,a[d],d,a)};var =
K,tb,yb,zb,Ab,Bb,Cb,Db,Eb,Fb,Gb=3Dfunction(){return =
o.navigator?o.navigator.userAgent:l},Hb=3Dfunction(){return =
o.navigator},Ib=3Dfunction(){Bb=3DAb=3Dzb=3Dyb=3Dtb=3DK=3Dm;var =
a;if(a=3DGb()){var =
b=3DHb();K=3Da.indexOf("Opera")=3D=3D0;tb=3D!K&&a.indexOf("MSIE")!=3D-1;z=
b=3D(yb=3D!K&&a.indexOf("WebKit")!=3D-1)&&a.indexOf("Mobile")!=3D-1;Bb=3D=
(Ab=3D!K&&!yb&&b.product=3D=3D"Gecko")&&b.vendor=3D=3D"Camino"}};Ib();=0A=
var L=3DK,M=3Dtb,Jb=3DAb,N=3Dyb,Kb=3Dzb,Lb=3Dfunction(){var =
a=3DHb();return =
a&&a.platform||""},Mb=3DLb(),Nb=3Dfunction(){Cb=3DG(Mb,"Mac");Db=3DG(Mb,"=
Win");Eb=3DG(Mb,"Linux");Fb=3D!!Hb()&&G(Hb().appVersion||"","X11")};Nb();=0A=
var Ob=3DCb,Pb=3DDb,Qb=3DEb,Rb=3Dfunction(){var =
a=3D"",b;if(L&&o.opera){var c=3Do.opera.version;a=3Dtypeof =
c=3D=3D"function"?c():c}else{if(Jb)b=3D/rv\:([^\);]+)(\)|;)/;else =
if(M)b=3D/MSIE\s+([^\);]+)(\)|;)/;else =
if(N)b=3D/WebKit\/(\S+)/;if(b){var =
d=3Db.exec(Gb());a=3Dd?d[1]:""}}return =
a},Sb=3DRb(),Tb=3D{},O=3Dfunction(a){return =
Tb[a]||(Tb[a]=3DZa(Sb,a)>=3D0)};var Ub;var Vb=3Dfunction(a){return =
da(a)?document.getElementById(a):a},Wb=3DVb,Yb=3Dfunction(a,b){rb(b,funct=
ion(c,d){if(d=3D=3D"style")a.style.cssText=3Dc;else =
if(d=3D=3D"class")a.className=3Dc;else =
if(d=3D=3D"for")a.htmlFor=3Dc;else if(d in =
Xb)a.setAttribute(Xb[d],c);else =
a[d]=3Dc})},Xb=3D{cellpadding:"cellPadding",cellspacing:"cellSpacing",col=
span:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"w=
idth",usemap:"useMap",frameborder:"frameBorder",type:"type"},Zb=3Dfunctio=
n(a){var b=3Da.document;if(N&&!O("500")&&!Kb){if(typeof a.innerHeight=3D=3D=0A=
"undefined")a=3Dwindow;var =
c=3Da.innerHeight,d=3Da.document.documentElement.scrollHeight;if(a=3D=3Da=
.top)if(d<c)c-=3D15;return new J(a.innerWidth,c)}var =
e=3Db.compatMode=3D=3D"CSS1Compat"&&(!L||L&&O("9.50"))?b.documentElement:=
b.body;return new J(e.clientWidth,e.clientHeight)},$b=3Dfunction(a){var =
b=3D!N&&a.compatMode=3D=3D"CSS1Compat"?a.documentElement:a.body;return =
new I(b.scrollLeft,b.scrollTop)},bc=3Dfunction(){return =
ac(document,arguments)},ac=3Dfunction(a,b){var =
c=3Db[0],d=3Db[1];if(M&&d&&(d.name||d.type)){var e=3D["<",c];d.name&&=0A=
e.push(' name=3D"',Ta(d.name),'"');if(d.type){e.push(' =
type=3D"',Ta(d.type),'"');d=3Dfa(d);delete =
d.type}e.push(">");c=3De.join("")}var =
f=3Da.createElement(c);if(d)if(da(d))f.className=3Dd;else =
Yb(f,d);if(b.length>2){function =
h(g){if(g)f.appendChild(da(g)?a.createTextNode(g):g)}for(var =
k=3D2;k<b.length;k++){var =
j=3Db[k];ca(j)&&!(ea(j)&&j.nodeType>0)?pb(cc(j)?qb(j):j,h):h(j)}}return =
f},dc=3Dfunction(a,b){a.appendChild(b)},ec=3Dfunction(a){return =
a&&a.parentNode?a.parentNode.removeChild(a):l},fc=3Dfunction(a,b){var =
c=3Db.parentNode;=0A=
c&&c.replaceChild(a,b)},gc=3DN&&O("522"),hc=3Dfunction(a,b){if(typeof =
a.contains!=3D"undefined"&&!gc&&b.nodeType=3D=3D1)return =
a=3D=3Db||a.contains(b);if(typeof =
a.compareDocumentPosition!=3D"undefined")return =
a=3D=3Db||Boolean(a.compareDocumentPosition(b)&16);for(;b&&a!=3Db;)b=3Db.=
parentNode;return b=3D=3Da},P=3Dfunction(a){return =
a.nodeType=3D=3D9?a:a.ownerDocument||a.document},cc=3Dfunction(a){if(a&&t=
ypeof a.length=3D=3D"number")if(ea(a))return typeof =
a.item=3D=3D"function"||typeof a.item=3D=3D"string";else =
if(p(a)=3D=3D"function")return typeof a.item=3D=3D=0A=
"function";return =
m},Q=3Dfunction(a){this.c=3Da||o.document||document};Q.prototype.createEl=
ement=3Dfunction(a){return =
this.c.createElement(a)};Q.prototype.createTextNode=3Dfunction(a){return =
this.c.createTextNode(a)};Q.prototype.m=3Dfunction(){return =
this.c.compatMode=3D=3D"CSS1Compat"};Q.prototype.l=3Dfunction(){return =
$b(this.c)};Q.prototype.appendChild=3Ddc;Q.prototype.removeNode=3Dec;Q.pr=
ototype.replaceNode=3Dfc;Q.prototype.contains=3Dhc;var =
ic,jc,kc,lc,mc,nc,oc=3Dfunction(){nc=3Dmc=3Dlc=3Dkc=3Djc=3Dic=3Dm;var =
a=3DGb();if(a)if(a.indexOf("Firefox")!=3D-1)ic=3Di;else =
if(a.indexOf("Camino")!=3D-1)jc=3Di;else =
if(a.indexOf("iPhone")!=3D-1||a.indexOf("iPod")!=3D-1)kc=3Di;else =
if(a.indexOf("Android")!=3D-1)lc=3Di;else =
if(a.indexOf("Chrome")!=3D-1)mc=3Di;else =
if(a.indexOf("Safari")!=3D-1)nc=3Di};oc();var pc=3Dfunction(a,b){var =
c=3DP(a);if(c.defaultView&&c.defaultView.getComputedStyle){var =
d=3Dc.defaultView.getComputedStyle(a,"");if(d)return d[b]}return =
l},R=3Dfunction(a,b){return =
pc(a,b)||(a.currentStyle?a.currentStyle[b]:l)||a.style[b]},qc=3Dfunction(=
a){var b;b=3Da?a.nodeType=3D=3D9?a:P(a):document;if(M&&!(b?new =
Q(P(b)):Ub||(Ub=3Dnew Q)).m())return b.body;return =
b.documentElement},rc=3Dfunction(a){var =
b=3Da.getBoundingClientRect();if(M){var =
c=3Da.ownerDocument;b.left-=3Dc.documentElement.clientLeft+c.body.clientL=
eft;=0A=
b.top-=3Dc.documentElement.clientTop+c.body.clientTop}return =
b},sc=3Dfunction(a){if(M)return a.offsetParent;for(var =
b=3DP(a),c=3DR(a,"position"),d=3Dc=3D=3D"fixed"||c=3D=3D"absolute",e=3Da.=
parentNode;e&&e!=3Db;e=3De.parentNode){c=3DR(e,"position");d=3Dd&&c=3D=3D=
"static"&&e!=3Db.documentElement&&e!=3Db.body;if(!d&&(e.scrollWidth>e.cli=
entWidth||e.scrollHeight>e.clientHeight||c=3D=3D"fixed"||c=3D=3D"absolute=
"))return e}return l},tc=3Dfunction(a){var =
b,c=3DP(a),d=3DR(a,"position"),e=3DJb&&c.getBoxObjectFor&&!a.getBoundingC=
lientRect&&d=3D=3D"absolute"&&(b=3D=0A=
c.getBoxObjectFor(a))&&(b.screenX<0||b.screenY<0),f=3Dnew =
I(0,0),h=3Dqc(c);if(a=3D=3Dh)return =
f;if(a.getBoundingClientRect){b=3Drc(a);var k=3D(c?new =
Q(P(c)):Ub||(Ub=3Dnew Q)).l();f.x=3Db.left+k.x;f.y=3Db.top+k.y}else =
if(c.getBoxObjectFor&&!e){b=3Dc.getBoxObjectFor(a);var =
j=3Dc.getBoxObjectFor(h);f.x=3Db.screenX-j.screenX;f.y=3Db.screenY-j.scre=
enY}else{var =
g=3Da;do{f.x+=3Dg.offsetLeft;f.y+=3Dg.offsetTop;if(g!=3Da){f.x+=3Dg.clien=
tLeft||0;f.y+=3Dg.clientTop||0}if(N&&R(g,"position")=3D=3D"fixed"){f.x+=3D=
c.body.scrollLeft;f.y+=3Dc.body.scrollTop;=0A=
break}g=3Dg.offsetParent}while(g&&g!=3Da);if(L||N&&d=3D=3D"absolute")f.y-=
=3Dc.body.offsetTop;for(g=3Da;(g=3Dsc(g))&&g!=3Dc.body&&g!=3Dh;){f.x-=3Dg=
.scrollLeft;if(!L||g.tagName!=3D"TR")f.y-=3Dg.scrollTop}}return =
f};Jb&&O("1.9");=0A=
var uc=3Dfunction(a,b,c,d){if(/^\d+px?$/.test(b))return =
parseInt(b,10);else{var =
e=3Da.style[c],f=3Da.runtimeStyle[c];a.runtimeStyle[c]=3Da.currentStyle[c=
];a.style[c]=3Db;var =
h=3Da.style[d];a.style[c]=3De;a.runtimeStyle[c]=3Df;return =
h}},vc=3Dfunction(a){var b=3DP(a),c=3D"";if(b.createTextRange){var =
d=3Db.body.createTextRange();d.moveToElementText(a);c=3Dd.queryCommandVal=
ue("FontName")}if(!c){c=3DR(a,"fontFamily");if(L&&Qb)c=3Dc.replace(/ =
\[[^\]]*\]/,"")}var e=3Dc.split(",");if(e.length>1)c=3De[0];return =
Xa(c,"\"'")},wc=3Dfunction(a){var b=3D=0A=
a.match(/[^\d]+$/);return =
b&&b[0]||l},xc=3D{cm:1,"in":1,mm:1,pc:1,pt:1},yc=3D{em:1,ex:1},zc=3Dfunct=
ion(a){var b=3DR(a,"fontSize"),c=3Dwc(b);if(b&&"px"=3D=3Dc)return =
parseInt(b,10);if(M)if(c in xc)return uc(a,b,"left","pixelLeft");else =
if(a.parentNode&&a.parentNode.nodeType=3D=3D1&&c in yc){var =
d=3Da.parentNode,e=3DR(d,"fontSize");return =
uc(d,b=3D=3De?"1em":b,"left","pixelLeft")}var =
f=3Dbc("span",{style:"visibility:hidden;position:absolute;line-height:0;p=
adding:0;margin:0;border:0;height:1em;"});dc(a,f);b=3Df.offsetHeight;ec(f=
);=0A=
return b};var T=3D{};function Ac(a){if(a=3D=3D1)return =
i;return!T[a]}function =
U(a,b){if(a)if(b=3D=3D1)if(T[b])T[b]+=3D","+a;else T[b]=3Da;else =
T[b]=3Da}function Bc(){var a=3D[];for(var b in T)a.push(T[b]);return =
a.join(",")}function Cc(a,b){if(a&&a instanceof Array)for(var =
c=3D0;c<a.length;c++)a[c]&&typeof a[c]=3D=3D"string"&&U(a[c],b)}var =
Dc=3Dm;=0A=
function Ec(a,b){var =
c=3D"script";(Dc=3DFc(a,b))||(a.google_allow_expandable_ads=3Dm);var =
d=3D!Gc();Dc&&d&&b.write("<"+c+' =
src=3D"http://'+v+'/pagead/expansion_embed.js"></'+c+">");var =
e=3DHc(a,b,r("1",0.01)),f=3Dd||e;f&&sa("msie")&&!window.opera?b.write("<"=
+c+' =
src=3D"http://'+v+'/pagead/render_ads.js"></'+c+">"):b.write("<"+c+'>goog=
le_protectAndRun("ads_core.google_render_ad", google_handleError, =
google_render_ad);</'+c+">")}function V(a){return a!=3Dl?'"'+a+'"':'""'}=0A=
function W(a,b){if(a&&b)window.google_ad_url+=3D"&"+a+"=3D"+b}function =
X(a){var b=3Dwindow,c=3DEa(a),d=3Db[a];W(c,d)}function =
Y(a,b){b!=3Dl&&W(a,y(b))}function Z(a){var =
b=3Dwindow,c=3DEa(a),d=3Db[a];Y(c,d)}function $(a,b){var =
c=3Dwindow,d=3DEa(a),e=3Dc[a];if(d&&e&&typeof =
e=3D=3D"object")e=3De[b%e.length];W(d,e)}=0A=
function Ic(a){var b=3Da.screen,c=3Dnavigator.javaEnabled(),d=3D-(new =
Date).getTimezoneOffset();if(b){W("u_h",b.height);W("u_w",b.width);W("u_a=
h",b.availHeight);W("u_aw",b.availWidth);W("u_cd",b.colorDepth)}W("u_tz",=
d);W("u_his",history.length);W("u_java",c);navigator.plugins&&W("u_nplug"=
,navigator.plugins.length);navigator.mimeTypes&&W("u_nmime",navigator.mim=
eTypes.length)}function =
Jc(a){if(a){a=3Da.toLowerCase();if(a.substring(0,3)!=3D"ca-")a=3D"ca-"+a}=
return a}=0A=
function =
Kc(a){if(a){a=3Da.toLowerCase();if(a.substring(0,9)!=3D"dist-aff-")a=3D"d=
ist-aff-"+a}return a}function Lc(a){var =
b=3D"google_unique_id";if(a[b])++a[b];else a[b]=3D1;return a[b]}function =
Mc(){var =
a=3DM&&O("6"),b=3DJb&&O("1.8.1"),c=3DN&&O("525");if(Pb&&(a||b||c))return =
i;else if(Ob&&(c||b))return i;else if(Qb&&b)return i;return m}function =
Gc(){return(typeof ExpandableAdSlotFactory=3D=3D"function"||typeof =
ExpandableAdSlotFactory=3D=3D"object")&&typeof =
ExpandableAdSlotFactory.createIframe=3D=3D"function"}=0A=
function =
Fc(a,b){if(a.google_allow_expandable_ads=3D=3D=3Dm||!b.body||a.google_ad_=
output!=3D"html"||bb(a,b)||Aa(a)||isNaN(a.google_ad_height)||isNaN(a.goog=
le_ad_width)||!Mc())return m;return i}function Nc(){var =
a;if(F.google_ad_output=3D=3D"html"&&!Aa(F)&&Ac(0)){var =
b=3D["6083035","6083034"];a=3DA(b,r("0",0));U(a,0)}return =
a=3D=3D"6083035"}=0A=
function =
Oc(a,b){if((a.google_unique_id||0)=3D=3D0&&a.google_ad_output=3D=3D"html"=
&&document.body&&typeof =
b.body.getBoundingClientRect=3D=3D"function")return =
A(["36812001","36812002"],r("0.01",0));return""}=0A=
function Pc(a){var =
b=3D"";if((a.google_unique_id||0)=3D=3D0&&(a.google_ad_output=3D=3D"js"||=
a.google_ad_output=3D=3D"html")){Aa(a)||(b=3DA(["36813001","36813002","36=
813003","36813004"],r("0.008",0)));if(b=3D=3D"")b=3DA(["36813005","368130=
06"],r("0.008",0))}return b}function Qc(a,b){switch(a){case =
"36813002":b.a(1);b.b(["js"]);break;case =
"36813003":b.a(1);b.b(["html"]);break;case =
"36813004":b.a(2);b.b(["html","js"]);break;case =
"36813006":b.a(0);b.b(["html","js"]);break}}=0A=
function Rc(a){if(a.body)try{return Zb(window)}catch(b){return new =
J(-12245933,-12245933)}else return new J(-1,-1)}=0A=
function Sc(a,b,c,d){var =
e=3DLc(a);c=3Dc.substring(0,1992);c=3Dc.replace(/%\w?$/,"");var =
f=3D"script";if((a.google_ad_output=3D=3D"js"||a.google_ad_output=3D=3D"j=
son_html")&&(a.google_ad_request_done||a.google_radlink_request_done))b.w=
rite("<"+f+' language=3D"JavaScript1.1" =
src=3D'+V(aa(c))+"></"+f+">");else =
if(a.google_ad_output=3D=3D"html")if(Dc&&Gc()){var =
h=3Da.google_container_id||d||l;a["google_expandable_ad_slot"+e]=3DExpand=
ableAdSlotFactory.createIframe("google_ads_frame"+e,aa(c),a.google_ad_wid=
th,a.google_ad_height,=0A=
h)}else{var k=3D'<iframe name=3D"google_ads_frame" =
width=3D'+V(a.google_ad_width)+" height=3D"+V(a.google_ad_height)+" =
frameborder=3D"+V(a.google_ad_frameborder)+" src=3D"+V(aa(c))+' =
marginwidth=3D"0" marginheight=3D"0" vspace=3D"0" hspace=3D"0" =
allowtransparency=3D"true" =
scrolling=3D"no"></iframe>';a.google_container_id?Tc(a.google_container_i=
d,b,k):b.write(k)}}function Uc(a,b,c){if(!a)return m;if(!b)return =
i;return c}=0A=
function Vc(a){for(var b in Ba)a[b]=3Dl;for(b in =
Ca)b=3D=3D"google_correlator"||(a[b]=3Dl);for(b in =
Da)a[b]=3Dl;a.google_allow_expandable_ads=3Dl;a.google_container_id=3Dl;a=
.google_tag_info=3Dl;a.google_eids=3Dl}=0A=
function Wc(a,b){var =
c=3Dl,d=3Dwindow,e=3Ddocument,f=3Dn,h=3Dd.google_ad_format,k=3DXc(d),j;if=
(d.google_cpa_choice!=3Dc){d.google_ad_url=3Dk+"/cpa/ads?";j=3Descape(Jc(=
d.google_ad_client));d.google_ad_region=3D"_google_cpa_region_";X("google=
_cpa_choice");if(typeof =
e.characterSet!=3D"undefined")Y("oe",e.characterSet);else typeof =
e.charset!=3D"undefined"&&Y("oe",e.charset)}else =
if(z(h)){d.google_ad_url=3Dk+"/pagead/sdo?";j=3Descape(Kc(d.google_ad_cli=
ent))}else{d.google_ad_url=3DNc()?k+"/pagead/render_iframe_ads.html#":k+"=
/pagead/ads?";=0A=
j=3Descape(Jc(d.google_ad_client))}d.google_ad_url+=3D"client=3D"+j;X("go=
ogle_ad_host");X("google_ad_host_tier_id");var =
g=3Dd.google_num_slots_by_client,u=3Dd.google_num_slots_by_channel,w=3Dd.=
google_prev_ad_formats_by_region,x=3Dd.google_prev_ad_slotnames_by_region=
;if(d.google_ad_region=3D=3Dc&&d.google_ad_section!=3Dc)d.google_ad_regio=
n=3Dd.google_ad_section;var =
s=3Dd.google_ad_region=3D=3Dc?"":d.google_ad_region;if(z(h)){d.google_num=
_sdo_slots=3Dd.google_num_sdo_slots?d.google_num_sdo_slots+1:1;if(d.googl=
e_num_sdo_slots>4)return m}else if(va(d)){d.google_num_0ad_slots=3D=0A=
d.google_num_0ad_slots?d.google_num_0ad_slots+1:1;if(d.google_num_0ad_slo=
ts>3)return m}else =
if(d.google_cpa_choice=3D=3Dc){d.google_num_ad_slots=3Dd.google_num_ad_sl=
ots?d.google_num_ad_slots+1:1;if(d.google_num_slots_to_rotate){w[s]=3Dc;x=
[s]=3Dc;if(d.google_num_slot_to_show=3D=3Dc)d.google_num_slot_to_show=3Df=
%d.google_num_slots_to_rotate+1;if(d.google_num_slot_to_show!=3Dd.google_=
num_ad_slots)return m}else if(d.google_num_ad_slots>6&&s=3D=3D"")return =
m}W("dt",n);X("google_language");d.google_country?X("google_country"):=0A=
X("google_gl");X("google_region");Z("google_city");Z("google_hints");X("g=
oogle_safe");X("google_encoding");X("google_last_modified_time");Z("googl=
e_alternate_ad_url");X("google_alternate_color");X("google_skip");X("goog=
le_targeting");var =
S=3Dd.google_ad_client;if(g[S])g[S]+=3D1;else{g[S]=3D1;g.length+=3D1}if(w=
[s])if(!z(h)){Y("prev_fmts",w[s].toLowerCase());g.length>1&&W("slot",g[S]=
)}x[s]&&Y("prev_slotnames",x[s].toLowerCase());if(Uc(h,d.google_ad_slot,d=
.google_override_format)){Y("format",h.toLowerCase());=0A=
z(h)||(w[s]=3Dw[s]?w[s]+","+h:h)}else =
if(d.google_ad_slot)x[s]=3Dx[s]?x[s]+","+d.google_ad_slot:d.google_ad_slo=
t;X("google_max_num_ads");W("output",d.google_ad_output);X("google_adtest=
");X("google_ad_callback");X("google_ad_slot");Z("google_correlator");d.g=
oogle_new_domain_checked=3D=3D1&&d.google_new_domain_enabled=3D=3D0&&W("d=
blk",1);if(d.google_ad_channel){Z("google_ad_channel");for(var =
sb=3D"",ub=3Dd.google_ad_channel.split(Yc),wa=3D0;wa<ub.length;wa++){var =
xa=3Dub[wa];if(u[xa])sb+=3Dxa+"+";else u[xa]=3D1}Y("pv_ch",=0A=
sb)}if(d.google_ad_host_channel){Z("google_ad_host_channel");var =
dd=3DZc(d.google_ad_host_channel,d.google_viewed_host_channels);Y("pv_h_c=
h",dd)}Z("google_page_url");$("google_color_bg",f);$("google_color_text",=
f);$("google_color_link",f);$("google_color_url",f);$("google_color_borde=
r",f);$("google_color_line",f);d.google_reuse_colors?W("reuse_colors",1):=
W("reuse_colors",0);X("google_font_face");X("google_font_size");X("google=
_kw_type");Z("google_kw");Z("google_contents");X("google_num_radlinks");X=
("google_max_radlink_len");=0A=
X("google_rl_filtering");X("google_rl_mode");X("google_rt");Z("google_rl_=
dest_url");X("google_num_radlinks_per_unit");X("google_ad_type");X("googl=
e_image_size");X("google_ad_region");Cc(d.google_eids,1);var =
ya;if(Ac(0)){ya=3DA(["36814001","36814002"],r("0",0));U(ya,0)}Y("eid",Bc(=
));var =
vb=3Dd.google_allow_expandable_ads;if(vb!=3Dl)vb?W("ea","1"):W("ea","0");=
Ka&&W("cb",1);La&&W("cd",1);X("google_feedback");Z("google_referrer_url")=
;Z("google_page_location");W("frm",d.google_iframing);=0A=
X("google_bid");X("google_ctr_threshold");X("google_cust_age");X("google_=
cust_gender");X("google_cust_interests");X("google_cust_id");X("google_cu=
st_job");X("google_cust_u_url");X("google_cust_l");X("google_cust_lh");X(=
"google_cust_ch");X("google_ed");X("google_video_doc_id");X("google_video=
_product_type");Z("google_ui_features");Z("google_ui_version");Z("google_=
tag_info");Z("google_only_ads_with_video");Z("google_only_pyv_ads");Z("go=
ogle_with_pyv_ads");Z("google_disable_video_autoplay");var wb=3Dm;=0A=
if(a){Y("dff",vc(a));Y("dfs",zc(a));var B;if(b)if(typeof =
a.getBoundingClientRect=3D=3D"function"){var =
xb=3Da.getBoundingClientRect();B=3D{x:xb.left,y:xb.top}}else{B=3D{};B.x=3D=
"-252738";B.y=3D"-252738"}else =
try{B=3Dtc(a)}catch(sd){B=3D{};B.x=3D"-252738";B.y=3D"-252738"}if(B){wb=3D=
i;Y("adx",B.x);Y("ady",B.y)}}if(wb||ya=3D=3D"36814002"){var =
za=3DRc(e);if(za){Y("biw",za.width);Y("bih",za.height)}}Fa();W("ga_vid",d=
.gaGlobal.vid);W("ga_sid",d.gaGlobal.sid);W("ga_hid",d.gaGlobal.hid);W("g=
a_fc",d.gaGlobal.from_cookie);Z("google_analytics_uacct");=0A=
X("google_ad_override");X("google_flash_version");W("w",d.google_ad_width=
||-1);W("h",d.google_ad_height||-1);Ic(d);return i}function =
Zc(a,b){for(var c=3Da.split("|"),d=3D-1,e=3D[],f=3D0;f<c.length;f++){var =
h=3Dc[f].split(Yc);b[f]||(b[f]=3D{});for(var =
k=3D"",j=3D0;j<h.length;j++){var =
g=3Dh[j];if(!(g=3D=3D""))if(b[f][g])k+=3D"+"+g;else =
b[f][g]=3D1}k=3Dk.slice(1);e[f]=3Dk;if(k!=3D"")d=3Df}var =
u=3D"";if(d>-1){for(f=3D0;f<d;f++)u+=3De[f]+"|";u+=3De[d]}return u}=0A=
function $c(){var =
a=3Dwindow,b=3Ddocument,c=3D$a(),d=3Da.google_enable_osd,e=3D"";if(d=3D=3D=
=3Di){e=3D"36813006";Qc(e,c)}else =
if(d!=3D=3Dm&&Ac(0)){e=3DA(["68120011","68120021","68120031","68120041"],=
r("0",0));if(e=3D=3D""){e=3DOc(a,b);if(e=3D=3D""){e=3DPc(a);e!=3D""&&Qc(e=
,c)}}}U(e,0);var f,h=3Dm,k=3Dm,j=3Dm;switch(e){case =
"68120031":j=3Di;case "68120021":k=3Di;case "68120041":h=3Di;break;case =
"36812002":if(!window.google_atf_included){window.google_atf_included=3Di=
;qa("http://"+v+"/pagead/atf.js")}break}if(h){var g=3D"google_temp_span";=0A=
f=3Da.google_container_id&&Wb(a.google_container_id)||Wb(g);if(!f&&!a.goo=
gle_container_id){b.write("<span id=3D"+g+"></span>");f=3DWb(g)}}var =
u=3Dm;u=3Dk?Wc(f,j):Wc();f&&f.id=3D=3Dg&&ec(f);if(u){c.q(a.google_ad_outp=
ut,a.google_ad_url);Sc(a,b,a.google_ad_url);Vc(a)}}function =
ad(a,b,c,d){var e=3Dob(a,b,c,d);Ec(window,document);return e}=0A=
function bd(){var =
a=3Dwindow,b=3Dl;if(a.google_ad_frameborder=3D=3Db)a.google_ad_frameborde=
r=3D0;if(a.google_ad_output=3D=3Db)a.google_ad_output=3D"html";if(z(a.goo=
gle_ad_format)){var =
c=3Da.google_ad_format.match(/^(\d+)x(\d+)_.*/);if(c){a.google_ad_width=3D=
parseInt(c[1],10);a.google_ad_height=3DparseInt(c[2],10);a.google_ad_outp=
ut=3D"html"}}if(a.google_ad_format=3D=3Db&&a.google_ad_output=3D=3D"html"=
)a.google_ad_format=3Da.google_ad_width+"x"+a.google_ad_height;jb(a,docum=
ent);if(a.google_num_slots_by_channel=3D=3Db)a.google_num_slots_by_channe=
l=3D=0A=
[];if(a.google_viewed_host_channels=3D=3Db)a.google_viewed_host_channels=3D=
[];if(a.google_num_slots_by_client=3D=3Db)a.google_num_slots_by_client=3D=
[];if(a.google_prev_ad_formats_by_region=3D=3Db)a.google_prev_ad_formats_=
by_region=3D[];if(a.google_prev_ad_slotnames_by_region=3D=3Db)a.google_pr=
ev_ad_slotnames_by_region=3D[];if(a.google_correlator=3D=3Db)a.google_cor=
relator=3Dn;if(a.google_adslot_loaded=3D=3Db)a.google_adslot_loaded=3D{};=
if(a.google_adContentsBySlot=3D=3Db)a.google_adContentsBySlot=3D{};if(a.g=
oogle_flash_version=3D=3Db)a.google_flash_version=3D=0A=
ua();if(a.google_new_domain_checked=3D=3Db)a.google_new_domain_checked=3D=
0;if(a.google_new_domain_enabled=3D=3Db)a.google_new_domain_enabled=3D0}f=
unction cd(a){for(var =
b=3D{},c=3Da.split("?"),d=3Dc[c.length-1].split("&"),e=3D0;e<d.length;e++=
){var =
f=3Dd[e].split("=3D");if(f[0])try{b[f[0].toLowerCase()]=3Df.length>1?wind=
ow.decodeURIComponent?decodeURIComponent(f[1].replace(/\+/g," =
")):unescape(f[1]):""}catch(h){}}return b}=0A=
function ed(){var =
a=3Dwindow,b=3Dcd(document.URL);if(b.google_ad_override){a.google_ad_over=
ride=3Db.google_ad_override;a.google_adtest=3D"on"}}function =
Tc(a,b,c){if(a){var =
d=3Db.getElementById(a);if(d&&c&&c.length!=3D""){d.style.visibility=3D"vi=
sible";d.innerHTML=3Dc}}}var Yc=3D/[+, =
]/;window.google_render_ad=3D$c;var =
fd=3D{google:1,googlegroups:1,gmail:1,googlemail:1,googleimages:1,googlep=
rint:1};function gd(a){var =
b=3Da.google_page_location||a.google_page_url;if(!b)return =
m;b=3Db.toString();if(b.indexOf("http://")=3D=3D0)b=3Db.substring(7,b.len=
gth);else =
if(b.indexOf("https://")=3D=3D0)b=3Db.substring(8,b.length);var =
c=3Db.indexOf("/");if(c=3D=3D-1)c=3Db.length;var =
d=3Db.substring(0,c),e=3Dd.split("."),f=3Dm;if(e.length>=3D3)f=3De[e.leng=
th-3]in fd;if(e.length>=3D2)f=3Df||e[e.length-2]in fd;return f}=0A=
function Hc(a,b,c){if(gd(a)){a.google_new_domain_checked=3D1;return =
m}if(a.google_new_domain_checked=3D=3D0){var =
d=3DMath.random();if(d<=3Dc){var =
e=3D"http://"+oa+"/pagead/test_domain.js",f=3D"script";b.write("<"+f+' =
src=3D"'+e+'"></'+f+">");a.google_new_domain_checked=3D1;return =
i}}return m}function =
Xc(a){if(!gd(a)&&a.google_new_domain_enabled=3D=3D1)return"http://"+oa;re=
turn"http://"+pa};var =
hd=3D["30143070","30143071","30143075"],id=3Dtypeof =
window.postMessage=3D=3D"function"||typeof =
window.postMessage=3D=3D"object"||typeof =
document.postMessage=3D=3D"function",kd=3Dfunction(a,b){a.google_allow_ex=
pandable_ads=3Dm;typeof =
A1_googleCreateSlot=3D=3D"function"?A1_googleCreateSlot(a.google_ad_clien=
t):jd(a,b)},md=3Dfunction(){if(!ld())return m;return =
i},nd=3Dfunction(a){if(Aa(a))return m;var =
b=3Da.google_ad_output;if(b&&b!=3D"html")return m;var =
c=3Da.google_ad_client;if(typeof =
c!=3D"string"||c.substring(0,4)!=3D"pub-"&&c.substring(0,=0A=
7)!=3D"ca-pub-")return m;return i},pd=3Dfunction(a){if(typeof =
a.google_a1_eid=3D=3D"string")return a.google_a1_eid;var =
b=3Dr("0.001",0);a.google_a1_eid=3Dod(hd,b);return =
a.google_a1_eid},jd=3Dfunction(a,b){if(!a.google_included_a1_script){var =
c=3D"script",d=3D"/pagead/show_ads_sra3.js?v\x3d1";b.write("<"+c+' =
src=3D"http://'+v+d+'"></'+c+">");a.google_included_a1_script=3Di}},ld=3D=
function(){if(M&&O("8"))return m;return id||!N},od=3Dfunction(a,b){var =
c=3DMath.random();if(c<b){var d=3DMath.floor(c/b*a.length);return =
a[d]}return""};function =
qd(){ed();mb("show_ads.google_init_globals",ad,bd);Ec(window,document)}fu=
nction rd(){if(!md(window)||!nd(window))qd();else =
if(Ma&&window.google_use_a1=3D=3D=3Di)kd(window,document);else{var =
a=3Dpd(window);a&&U(a,0);!a||a=3D=3D"30143070"?qd():kd(window,document)}}=
mb("show_ads.main",ob,rd);=0A=
})()=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ad.doubleclick.net/adj/scidir.rbi/;dcopt=ist;abr=!webtv;categ=developbio;acct=d51dc24a2b132512122a31f7d7dda950;sz=728x90;ptile=1;ord=686848?

document.write('<a target=3D"_blank" =
href=3D"http://ad.doubleclick.net/click;h=3Dv8/387f/0/0/%2a/y;212889192;0=
-0;10;12966947;3454-728/90;30665441/30683318/1;;~sscs=3D%3fhttp://www.els=
evier-alerts.com"><img =
src=3D"http://m1.2mdn.net/viewad/1175468/DDT_e-Choice_Leaderboard.gif" =
border=3D0 alt=3D"Advertisement"></a>');=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://ad.doubleclick.net/adj/scidir.rbi/;dcopt=ist;abr=!webtv;categ=developbio;acct=d51dc24a2b132512122a31f7d7dda950;sz=336x280;ptile=1;ord=686848?

document.write('<a target=3D"_blank" =
href=3D"http://ad.doubleclick.net/click;h=3Dv8/387f/0/0/%2a/w;216343181;0=
-0;18;12966947;4252-336/280;32526450/32544326/1;;~sscs=3D%3fhttp://www.ce=
ll.com/trends/immunology/issue?pii=3DS1471-4906(09)X0007-4"><img =
src=3D"http://m1.2mdn.net/viewad/1175468/1-ti-special0906_336x280d.gif" =
border=3D0 alt=3D"Advertisement"></a>');=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.sciencedirect.com/science/page/javascript/multimediaX.js

<!--=0A=
function MMCinit(){return;}=0A=
//-->=0A=

------=_NextPart_000_0000_01CA150B.D1E156F0--
