From: <Сохранено Windows Internet Explorer 8>
Subject: =?windows-1251?B?z+Xw8e7t4Ovo6Dogzejq6PL+6iDeIMI=?=
Date: Thu, 25 Apr 2013 10:54:35 +0300
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CE41A3.46780AF0"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: text/html;
	charset="windows-1251"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/php/person.phtml?option_lang=rus&personid=78608

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML><HEAD><TITLE>=CF=E5=F0=F1=EE=ED=E0=EB=E8=E8: =CD=E8=EA=E8=F2=FE=EA =
=DE =C2</TITLE>
<META content=3D"text/html; charset=3DWindows-1251" =
http-equiv=3DContent-Type>
<META name=3Dkeywords content=3D"=CD=E8=EA=E8=F2=FE=EA =DE =C2, . ">
<META content=3DIE=3DEmulateIE7 http-equiv=3DX-UA-Compatible>
<SCRIPT type=3Dtext/javascript=20
src=3D"http://www.mathnet.ru/MathJax/MathJax.js"></SCRIPT>

<META content=3D100001948773698 property=3D"fb:admins"><LINK =
rel=3Dstylesheet=20
type=3Dtext/css =
href=3D"http://www.mathnet.ru/css/mathnet.css?v=3D1.1"><LINK=20
rel=3Dstylesheet type=3Dtext/css =
href=3D"http://www.mathnet.ru/css/webcard.css">
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.23345"></HEAD>
<BODY class=3DmainInfo>
<TABLE border=3D0 cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
  <TBODY>
  <TR>
    <TD>
      <TABLE border=3D0 cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
        <TBODY>
        <TR class=3DtopPic>
          <TD align=3Dmiddle><IMG=20
          =
src=3D"http://www.mathnet.ru/images/persrus.jpg"></TD></TR></TBODY></TABL=
E>
      <TABLE border=3D0 cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
        <TBODY>
        <TR>
          <TD class=3Dfon1 vAlign=3Dcenter align=3Dright><A =
title=3D"=CC=EE=E1=E8=EB=FC=ED=E0=FF =E2=E5=F0=F1=E8=FF"=20
            =
href=3D"http://m.mathnet.ru/php/person.phtml?option_lang=3Drus&amp;person=
id=3D78608"><IMG=20
            border=3D0 =
src=3D"http://www.mathnet.ru/images/mobile.gif"></A> </TD>
          <TD class=3Dfon1 align=3Dleft><NOBR><A class=3Dr1=20
            =
href=3D"http://www.mathnet.ru/php/person.phtml?&amp;personid=3D78608&amp;=
option_lang=3Drus">RUS</A>&nbsp;=20
            <A class=3Dr1=20
            =
href=3D"http://www.mathnet.ru/php/person.phtml?&amp;personid=3D78608&amp;=
option_lang=3Deng">ENG</A></NOBR></TD>
          <TD class=3Dfon1 align=3Dmiddle><NOBR><A class=3Dr1=20
            =
href=3D"http://www.mathnet.ru/ej.phtml?option_lang=3Drus">=C6=D3=D0=CD=C0=
=CB=DB</A>=20
            &nbsp; <A class=3Dr1=20
            =
href=3D"http://www.mathnet.ru/php/person.phtml?option_lang=3Drus">=CF=C5=D0=
=D1=CE=CD=C0=CB=C8=C8</A>=20
            &nbsp; <A class=3Dr1=20
            =
href=3D"http://www.mathnet.ru/php/organisation.phtml?option_lang=3Drus">=CE=
=D0=C3=C0=CD=C8=C7=C0=D6=C8=C8</A>=20
            &nbsp; <A class=3Dr1=20
            =
href=3D"http://www.mathnet.ru/php/conference.phtml?option_lang=3Drus">=CA=
=CE=CD=D4=C5=D0=C5=CD=D6=C8=C8</A>=20
            &nbsp; <A class=3Dr1=20
            =
href=3D"http://www.mathnet.ru/php/seminars.phtml?option_lang=3Drus">=D1=C5=
=CC=C8=CD=C0=D0=DB</A>=20
            &nbsp; <A class=3Dr1=20
            =
href=3D"http://www.mathnet.ru/php/presentation.phtml?option_lang=3Drus">=C2=
=C8=C4=C5=CE=D2=C5=CA=C0</A>=20
            &nbsp; <A class=3Dr1=20
            =
href=3D"http://www.mathnet.ru/poffice/mirefmodule.phtml?wshow=3Dmirefmodu=
le&amp;option_lang=3Drus">=CB=C8=D7=CD=DB=C9=20
            =CA=C0=C1=C8=CD=C5=D2</A> &nbsp; <A class=3Dr1=20
            =
href=3D"http://libserv.mi.ras.ru/mn/libstart.asp?option_lang=3Drus">=C1=C8=
=C1=CB=C8=CE=D2=C5=CA=C0</A>=20
            </NOBR></TD>
          <TD class=3Dfon1 vAlign=3Dcenter align=3Dright><NOBR><A =
class=3DmjON=20
            title=3D"=CC=E0=F2=E5=EC=E0=F2=E8=F7=E5=F1=EA=E8=E5 =
=F4=EE=F0=EC=F3=EB=FB =ED=E0 =F1=E0=E9=F2=E5 =
=EF=EE=EA=E0=E7=FB=E2=E0=FE=F2=F1=FF =EF=F0=E8 =EF=EE=EC=EE=F9=E8 =
MathJax. =CA=EB=E8=EA=ED=E8=F2=E5 =E7=E4=E5=F1=FC, =F7=F2=EE=E1=FB =
=F3=E2=E8=E4=E5=F2=FC =EA=EE=E4 LaTeX"=20
            =
href=3D"http://www.mathnet.ru/php/enableMathJax.phtml?backtourl=3D%2Fphp%=
2Fperson.phtml%3Foption_lang%3Drus%26personid%3D78608"=20
            rel=3Dnofollow><IMG border=3D0=20
            src=3D"http://www.mathnet.ru/gifs/mjON.gif"></A> =
</NOBR></TD>
          <TD class=3Dfon1 vAlign=3Dcenter align=3Dright><A =
title=3D"=C3=EB=E0=E2=ED=E0=FF =F1=F2=F0=E0=ED=E8=F6=E0"=20
            href=3D"http://www.mathnet.ru/?option_lang=3Drus"><IMG =
border=3D0=20
            src=3D"http://www.mathnet.ru/images/home2.gif"></A>=20
      </TD></TR></TBODY></TABLE>
      <SCRIPT language=3DJavaScript=20
      src=3D"http://www.mathnet.ru/js/func_string.js"></SCRIPT>
      <LINK rel=3DSTYLESHEET type=3Dtext/css=20
      href=3D"http://www.mathnet.ru/css/calendar.css">
      <SCRIPT language=3DJavaScript>
var EDIT_DISABLED_BOOL;
var CALENDAR_LANG;
</SCRIPT>

      <SCRIPT language=3DJavaScript=20
      src=3D"http://www.mathnet.ru/js/func_dates.js?v=3D1"></SCRIPT>

      <SCRIPT language=3DJavaScript=20
      src=3D"http://www.mathnet.ru/js/libmenu.js"></SCRIPT>

      <SCRIPT language=3DJavaScript=20
src=3D"http://www.mathnet.ru/js/md5.js"></SCRIPT>

      <SCRIPT language=3DJavaScript=20
      src=3D"http://www.mathnet.ru/js/prototype.js"></SCRIPT>

      <SCRIPT language=3DJavaScript=20
      src=3D"http://www.mathnet.ru/js/func_controls.js?v=3D1"></SCRIPT>

      <TABLE border=3D0 cellPadding=3D2 width=3D"80%" align=3Dcenter>
        <TBODY>
        <TR>
          <TD>&nbsp;</TD>
          <TD vAlign=3Dtop align=3Dleft><BR><FONT =
size=3D+2>=CD=E8=EA=E8=F2=FE=EA =DE =C2</FONT> </TD>
          <TD vAlign=3Dtop align=3Dright><BR>
            <TABLE class=3DStatJTable border=3D0 cellSpacing=3D1 =
cellPadding=3D1=20
            align=3Dcenter>
              <TBODY>
              <TR class=3DStatJRow>
                <TD colSpan=3D2><NOBR>=C2 =E1=E0=E7=E0=F5 =
=E4=E0=ED=ED=FB=F5 Math-Net.Ru</NOBR></TD></TR>
              <TR class=3DStatJRow>
                <TD class=3DshowUDC=20
                title=3D"=CA=EE=EB=E8=F7=E5=F1=F2=E2=EE =
=EF=F3=E1=EB=E8=EA=E0=F6=E8=E9 =E0=E2=F2=EE=F0=E0 =E2 =E1=E0=E7=E0=F5 =
=E4=E0=ED=ED=FB=F5 Math-Net.Ru"=20
                align=3Dright>=CF=F3=E1=EB=E8=EA=E0=F6=E8=E9:</TD>
                <TD class=3DshowUDC=20
                title=3D"=CA=EE=EB=E8=F7=E5=F1=F2=E2=EE =
=EF=F3=E1=EB=E8=EA=E0=F6=E8=E9 =E0=E2=F2=EE=F0=E0 =E2 =E1=E0=E7=E0=F5 =
=E4=E0=ED=ED=FB=F5 Math-Net.Ru">2</TD></TR>
              <TR class=3DStatJRow>
                <TD class=3DshowUDC=20
                title=3D"=CA=EE=EB=E8=F7=E5=F1=F2=E2=EE =
=ED=E0=F3=F7=ED=FB=F5 =F1=F2=E0=F2=E5=E9 =E0=E2=F2=EE=F0=E0  =E2 =
=E1=E0=E7=E0=F5 =E4=E0=ED=ED=FB=F5 Math-Net.Ru"=20
                =
align=3Dright>=CD=E0=F3=F7=ED=FB=F5&nbsp;=F1=F2=E0=F2=E5=E9:</TD>
                <TD class=3DshowUDC=20
                title=3D"=CA=EE=EB=E8=F7=E5=F1=F2=E2=EE =
=ED=E0=F3=F7=ED=FB=F5 =F1=F2=E0=F2=E5=E9 =E0=E2=F2=EE=F0=E0  =E2 =
=E1=E0=E7=E0=F5 =E4=E0=ED=ED=FB=F5 =
Math-Net.Ru">2</TD></TR></TBODY></TABLE><BR>
            <TABLE class=3DStatJTable border=3D0 cellSpacing=3D1 =
cellPadding=3D1=20
            align=3Dcenter>
              <TBODY>
              <TR=20
              title=3D"=CF=EE=E4=F1=F7=E5=F2 =
=EF=F0=EE=F1=EC=EE=F2=F0=EE=E2 =F1=F2=F0=E0=ED=E8=F6 =
=E0=E2=F2=EE=F0=EE=E2 =E2=E5=E4=E5=F2=F1=FF =F1 1 =EC=E0=FF 2008 =E3.">
                <TD colSpan=3D2=20
align=3Dleft>=D1=F2=E0=F2=E8=F1=F2=E8=EA=E0&nbsp;=EF=F0=EE=F1=EC=EE=F2=F0=
=EE=E2:</TD></TD></TR>
              <TR title=3D=DD=F2=E0&nbsp;=F1=F2=F0=E0=ED=E8=F6=E0>
                <TD =
align=3Dright>=DD=F2=E0&nbsp;=F1=F2=F0=E0=ED=E8=F6=E0:</TD>
                <TD width=3D"30%">4</TD></TR>
              <TR =
title=3D=D1=F2=F0=E0=ED=E8=F6=FB&nbsp;=EF=F3=E1=EB=E8=EA=E0=F6=E8=E9>
                <TD =
align=3Dright>=D1=F2=F0=E0=ED=E8=F6=FB&nbsp;=EF=F3=E1=EB=E8=EA=E0=F6=E8=E9=
:</TD>
                <TD>2</TD></TR>
              <TR title=3D=CF=EE=EB=ED=FB=E5&nbsp;=F2=E5=EA=F1=F2=FB>
                <TD =
align=3Dright>=CF=EE=EB=ED=FB=E5&nbsp;=F2=E5=EA=F1=F2=FB:</TD>
                <TD>7</TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD><BR></TD></TR>
        <TR>
          <TD class=3Dred vAlign=3Dtop align=3Dright><A=20
            title=3D"=D1=EF=E8=F1=EE=EA =EF=F3=E1=EB=E8=EA=E0=F6=E8=E9 =
=ED=E0 Google Scholar"=20
            =
href=3D"http://scholar.google.com/scholar?q=3Dauthor%3A%22%D1%8E%20%D0%B2=
%20%D0%BD%D0%B8%D0%BA%D0%B8%D1%82%D1%8E%D0%BA%22%20OR%20author%3A%22yu%20=
v%20nikitjuk%22"><IMG=20
            border=3D0 align=3DabsMiddle=20
            =
src=3D"http://www.mathnet.ru/gifs/scholar_results_small.jpg"></A></TD>
          <TD vAlign=3Dtop colSpan=3D2><A class=3DSLink=20
            title=3D"=D1=EF=E8=F1=EE=EA =EF=F3=E1=EB=E8=EA=E0=F6=E8=E9 =
=ED=E0 Google Scholar"=20
            =
href=3D"http://scholar.google.com/scholar?q=3Dauthor%3A%22%D1%8E%20%D0%B2=
%20%D0%BD%D0%B8%D0%BA%D0%B8%D1%82%D1%8E%D0%BA%22%20OR%20author%3A%22yu%20=
v%20nikitjuk%22">=D1=EF=E8=F1=EE=EA=20
            =EF=F3=E1=EB=E8=EA=E0=F6=E8=E9 =ED=E0 Google =
Scholar</A></TD></TR>
        <TR>
          <TD class=3Dred vAlign=3Dtop align=3Dright><A=20
            title=3D"=D1=EF=E8=F1=EE=EA =EF=F3=E1=EB=E8=EA=E0=F6=E8=E9 =
=ED=E0 ZentralBlatt"=20
            =
href=3D"http://www.zentralblatt-math.org/zmath/en/search/?q=3Dau%3A%22nik=
itjuk%2C%20yu%2A%20v%2A%22"><IMG=20
            border=3D0 vspace=3D3 =
src=3D"http://www.mathnet.ru/gifs/zmath.gif"></A></TD>
          <TD vAlign=3Dtop colSpan=3D2><A class=3DSLink=20
            title=3D"=D1=EF=E8=F1=EE=EA =EF=F3=E1=EB=E8=EA=E0=F6=E8=E9 =
=ED=E0 ZentralBlatt"=20
            =
href=3D"http://www.zentralblatt-math.org/zmath/en/search/?q=3Dau%3A%22nik=
itjuk%2C%20yu%2A%20v%2A%22">=D1=EF=E8=F1=EE=EA=20
            =EF=F3=E1=EB=E8=EA=E0=F6=E8=E9 =ED=E0 =
ZentralBlatt</A></TD></TR>
        <TR>
          <TD><BR></TD></TR>
        <TR>
          <TD class=3Dred vAlign=3Dtop =
align=3Dright>=CF=F3=E1=EB=E8=EA=E0=F6=E8=E8=20
            =E2&nbsp;=E1=E0=E7=E5&nbsp;=E4=E0=ED=ED=FB=F5 =
<NOBR>Math-Net.Ru</NOBR></TD>
          <TD vAlign=3Dtop colSpan=3D2>
            <TABLE class=3DCard border=3D0 cellSpacing=3D0 =
cellPadding=3D2>
              <TBODY>
              <TR>
                <TD vAlign=3Dtop align=3Dright>1.</TD>
                <TD vAlign=3Dtop align=3Dleft><A class=3DSLink=20
                  =
href=3D"http://www.mathnet.ru/rus/pfmt57">=C8=F1=F1=EB=E5=E4=EE=E2=E0=ED=E8=
=E5 =EF=F0=EE=F6=E5=F1=F1=E0=20
                  =EB=E0=E7=E5=F0=ED=EE=E3=EE =
=F0=E0=F1=EA=E0=EB=FB=E2=E0=ED=E8=FF =EA=F0=E5=EC=ED=E8=E5=E2=FB=F5 =
=EF=EB=E0=F1=F2=E8=ED, =E2=FB=F0=E5=E7=E0=ED=ED=FB=F5 =E2=20
                  =EF=EB=EE=F1=EA=EE=F1=F2=E8 =
(110)</A><BR>=C0.&nbsp;=CD.&nbsp;=D1=E5=F0=E4=FE=EA=EE=E2,=20
                  =D1.&nbsp;=C2.&nbsp;=D8=E0=EB=F3=EF=E0=E5=E2, =
=DE.&nbsp;=C2.&nbsp;=CD=E8=EA=E8=F2=FE=EA,=20
                  =C0.&nbsp;=C0.&nbsp;=D1=E5=F0=E5=E4=E0<BR><SPAN=20
                  style=3D"FONT-STYLE: italic; FONT-WEIGHT: =
normal">=CF=D4=CC=D2</SPAN>,=20
                  2012, =B9&nbsp;3, <NOBR>&nbsp;37=9640</NOBR> =
</TD></TR>
              <TR>
                <TD vAlign=3Dtop align=3Dright>2.</TD>
                <TD vAlign=3Dtop align=3Dleft><A class=3DSLink=20
                  =
href=3D"http://www.mathnet.ru/rus/pfmt89">=C8=F1=F1=EB=E5=E4=EE=E2=E0=ED=E8=
=E5 =EF=F0=EE=F6=E5=F1=F1=E0=20
                  =F3=EF=F0=E0=E2=EB=FF=E5=EC=EE=E3=EE =
=F2=E5=F0=EC=EE=F0=E0=F1=EA=E0=EB=FB=E2=E0=ED=E8=FF =
=F5=F0=F3=EF=EA=E8=F5 =ED=E5=EC=E5=F2=E0=EB=EB=E8=F7=E5=F1=EA=E8=F5=20
                  =EC=E0=F2=E5=F0=E8=E0=EB=EE=E2 =EF=EE=E4 =
=E4=E5=E9=F1=F2=E2=E8=E5=EC =EF=EE=F2=EE=EA=E0 =E3=EE=F0=FF=F7=E5=E3=EE=20
                  =
=E2=EE=E7=E4=F3=F5=E0</A><BR>=DE.&nbsp;=C2.&nbsp;=CD=E8=EA=E8=F2=FE=EA,=20
                  =C2.&nbsp;=D4.&nbsp;=D8=EE=EB=EE=F5<BR><SPAN=20
                  style=3D"FONT-STYLE: italic; FONT-WEIGHT: =
normal">=CF=D4=CC=D2</SPAN>,=20
                  2011, =B9&nbsp;1, <NOBR>&nbsp;36=9639</NOBR>=20
          </TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD><BR></TD></TR>
        <TR>
          <TD class=3Dred title=3D"=CC=E5=F1=F2=E0 =F0=E0=E1=EE=F2=FB =
=E8=EB=E8 =F3=F7=E5=E1=FB =E2 =F0=E0=E7=ED=FB=E5 =E3=EE=E4=FB" =
vAlign=3Dtop=20
          align=3Dright>=CE=F0=E3=E0=ED=E8=E7=E0=F6=E8=E8</TD>
          <TD colSpan=3D2>
            <UL>
              <LI><A class=3DSLink=20
              =
href=3D"http://www.mathnet.ru/php/organisation.phtml?option_lang=3Drus&am=
p;orgid=3D1394">=C3=EE=EC=E5=EB=FC=F1=EA=E8=E9=20
              =E3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=FB=E9 =
=F3=ED=E8=E2=E5=F0=F1=E8=F2=E5=F2 =
=E8=EC.&nbsp;=D4.&nbsp;=D1=EA=EE=F0=E8=ED=FB</A>=20
          </LI></UL></TD></TR></TBODY></TABLE>
      <TABLE border=3D0 cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
        <TBODY>
        <TR class=3Dman1>
          <TD width=3D"70%">&nbsp;</TD>
          <TD vAlign=3Dbottom width=3D"30%"><IMG align=3Dleft=20
            src=3D"http://www.mathnet.ru/images/man1.jpg"> =
</TD></TR></TBODY></TABLE>
      <DIV class=3Dmian>
      <TABLE class=3Dmian border=3D0 cellSpacing=3D0 cellPadding=3D10 =
width=3D"100%"=20
      align=3Dcenter>
        <TBODY>
        <TR>
          <TD width=3D"20%" align=3Dleft>=CE=E1=F0=E0=F2=ED=E0=FF =
=F1=E2=FF=E7=FC:<BR>
            <SCRIPT language=3DJavaScript><!--=0A=
i2=3D"a h"; thoqk=3D"ref=3D'mai"; tfc=3D"lto:"; =
p84t=3D"math-net2013_04"; o9msgq=3D"mi.ras&#46;ru"; =
kc9pu=3D"<"+i2+thoqk+tfc; e4iay=3Dp84t+"@"+o9msgq; =
document.write(kc9pu+e4iay+"'>"+"<img src=3D/gifs/mi1.gif =
border=3D0>"+"</a>");=0A=
//--></SCRIPT>
            <NOSCRIPT>math-net2013_04=AEmi.ras&#184;ru</NOSCRIPT> </TD>
          <TD vAlign=3Dcenter width=3D"30%" align=3Dmiddle><IMG =
border=3D0=20
            src=3D"http://www.mathnet.ru/gifs/ar4.gif">&nbsp;<A =
class=3DSLink=20
            =
href=3D"http://www.mathnet.ru/php/agreement.phtml?option_lang=3Drus">=CF=EE=
=EB=FC=E7=EE=E2=E0=F2=E5=EB=FC=F1=EA=EE=E5=20
            =F1=EE=E3=EB=E0=F8=E5=ED=E8=E5</A> </TD>
          <TD vAlign=3Dcenter width=3D"20%" align=3Dmiddle><IMG =
border=3D0=20
            src=3D"http://www.mathnet.ru/gifs/ar4.gif">&nbsp;<A =
class=3DSLink=20
            =
href=3D"http://www.mathnet.ru/php/registration.phtml?option_lang=3Drus">=D0=
=E5=E3=E8=F1=F2=F0=E0=F6=E8=FF</A></TD>
          <TD width=3D"28%" align=3Dleft><NOBR>=A9 <A class=3DSLink=20
            title=3D"=CC=E0=F2=E5=EC=E0=F2=E8=F7=E5=F1=EA=E8=E9 =
=E8=ED=F1=F2=E8=F2=F3=F2 =E8=EC. =C2. =C0. =D1=F2=E5=EA=EB=EE=E2=E0 =
=D0=C0=CD"=20
            href=3D"http://www.mi.ras.ru/" =
target=3D_blank>=CC=E0=F2=E5=EC=E0=F2=E8=F7=E5=F1=EA=E8=E9 =
=E8=ED=F1=F2=E8=F2=F3=F2=20
            =E8=EC. =C2. =C0. =D1=F2=E5=EA=EB=EE=E2=E0 =
=D0=C0=CD</A>,&nbsp;2013</NOBR> <BR><NOBR>=A9 <A=20
            class=3DSLink=20
            title=3D"=D0=EE=F1=F1=E8=E9=F1=EA=E0=FF =
=E0=EA=E0=E4=E5=EC=E8=FF =ED=E0=F3=EA, =CE=F2=E4=E5=EB=E5=ED=E8=E5 =
=EC=E0=F2=E5=EC=E0=F2=E8=F7=E5=F1=EA=E8=F5 =ED=E0=F3=EA"=20
            href=3D"http://omn.ras.ru/" =
target=3D_blank>=D0=EE=F1=F1=E8=E9=F1=EA=E0=FF =E0=EA=E0=E4=E5=EC=E8=FF =
=ED=E0=F3=EA,=20
            =CE=F2=E4=E5=EB=E5=ED=E8=E5 =
=EC=E0=F2=E5=EC=E0=F2=E8=F7=E5=F1=EA=E8=F5 =
=ED=E0=F3=EA</A>,&nbsp;2013</NOBR>=20
      </TD></TR></TBODY></TABLE></DIV><BR><BR>
      <SCRIPT type=3Dtext/javascript src=3D"">=0A=
		</SCRIPT>

      <SCRIPT type=3Dtext/javascript>=0A=
		_uacct =3D "UA-3038033-1";=0A=
		urchinTracker();=0A=
		</SCRIPT>
  </TR></TBODY></TABLE></BODY></HTML>

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.mathnet.ru/images/persrus.jpg

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
2H84h7D+cQ9h/OIe0/nFT2n84h7T+cQ9v//Z

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.mathnet.ru/images/mobile.gif

R0lGODlhFQAYAIABAP///////yH5BAEAAAEALAAAAAAVABgAAAI4jI+py+1/AGRyqmoR2JxDrH1B
J4HU2I0iqT6m8V7oHCdxHZYqHi08vAu6fKvgr2X7kDyZpvNpKAAAOw==

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.mathnet.ru/gifs/mjON.gif

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
aAoRg8tE8zLWscp1QHMZq3QTBCKIQSAAADs=

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.mathnet.ru/images/home2.gif

R0lGODlhFQAYANUBAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAAVABgAAAZCwIBw
SCwaj8ikcslsOp9QgFD6BFgD1ObVml1ep93kdzhGfrlg7xS7VrOp4SP8zISz70q73Y3Gi+V1XIJx
UIWGh05BADs=

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.mathnet.ru/gifs/scholar_results_small.jpg

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
qzSpV//Z

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.mathnet.ru/gifs/zmath.gif

R0lGODlhNQALAOZDAEBAQODm87+/sxBAnzAwMKCz2dDQ0GCAv+/mxn9mGeDg4FBzuTBZrCBNplBQ
UJCQkNDZ7L+ZJiAgIKCgoG9mSZ+MU/Dw8HCNxpCm09/ZwD8zDKCmphAQEF9ZRv/mmYCMmd+yLC8m
Cc/Mub+2mYB5Zo9yHJ9/H2BgYP/ssx8ZBj88Ml9ME//55o+Zn7CwsK+MI/Dz+Q8MA7DA38+zXI+A
UO+/L6+ZVo+JdnBwcP/yzYCZzMDAwICAgMDN5kBms//ZZgAAAAAzmf/MM////wAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5
BAEAAEMALAAAAAA1AAsAAAf/gEM9OoQ6Q4eIiRABiYk6jI2RkpIFPj5BQZNDEEE9k52aoZoYQRgw
Cz4FQz6oBQdBDJWplhdDnTs8FocGPIcKub88wjw7E4g8CocBAz5DFwOvAbAMAzpBB9Y+Fw2vtj08
QC6HJ0CHD0ATBgAAQOsPAIhAO4c+A4z1lz2d1vqDzRALBmTqBO7EIQnlhhAg4CDeoR3wDskbYg0D
PQYyDkgb1GlfMx8NrHnj4UDCEAMEyikAYgCIriEJdxDYQXPiJUxBCgRpYG9fEGlBdDQL2OAnQR4c
eOEo96AhAWMwHwKZOnUHCxECsgrIseFDhhwCEGTYuqFFBhE5EHzIiiAsCRIdam4QGAEkBwEJADgQ
yJGjbo4RKvj23eFBiOHDiBMrVpwggYkQMYQAAQHkRQQTkyUbjqDhsLzCi0OLNty4BpAVkkuEOJyi
hGYhnD3vQPGjtu3buHPnrlDhRwcbPwBQ6F2bBoXgtWccrw3AQCAAOw==

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.mathnet.ru/images/man1.jpg

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
aCGZn4PTroP/2Q==

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.mathnet.ru/gifs/ar4.gif

R0lGODlhCgAKAKIHAKA1QeDg4N3d3fDw8NHR0dnZ2eTk5P///yH5BAEAAAcALAAAAAAKAAoAAAMk
eAfcrCDIIIK7gpFIrQUFMAxG9lnK4DHooUZMdjVdUGzQDCgJADs=

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/css/mathnet.css?v=1.1

.ff_highlighted {
	COLOR: #a91818; FONT-WEIGHT: bold
}
HR {
	BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: =
#ac4e4a; WIDTH: 100%; BORDER-TOP-STYLE: none; HEIGHT: 1px; COLOR: =
#ac4e4a; BORDER-LEFT-STYLE: none
}
CODE {
	FONT-SIZE: x-small
}
.showamsbib {
	BORDER-BOTTOM: #000000 1px dashed; BORDER-LEFT: #000000 1px dashed; =
BACKGROUND-COLOR: lightyellow; FONT-SIZE: small; BORDER-TOP: #000000 1px =
dashed; BORDER-RIGHT: #000000 1px dashed
}
.leftcol {
	WIDTH: 100px
}
.rightcol {
	WIDTH: 187px
}
.rightcolw {
	WIDTH: 250px
}
.event {
	WIDTH: 400px; COLOR: black; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
TD.divd {
	BORDER-BOTTOM: #d3d3d3 2px dashed; BORDER-LEFT: #d3d3d3 0px dashed; =
BORDER-TOP: #d3d3d3 2px dashed; BORDER-RIGHT: #d3d3d3 0px dashed
}
TD.divdsub {
	BORDER-BOTTOM: #d3d3d3 0px solid; BORDER-LEFT: #d3d3d3 0px solid; =
BORDER-TOP: #d3d3d3 1px solid; BORDER-RIGHT: #d3d3d3 0px solid
}
TABLE.EJCont {
	BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: white; =
BORDER-RIGHT-STYLE: solid; BACKGROUND-COLOR: lightyellow; =
BORDER-TOP-COLOR: white; WIDTH: 600px; BORDER-TOP-STYLE: solid; =
BORDER-RIGHT-COLOR: white; BORDER-LEFT-STYLE: solid; BORDER-LEFT-COLOR: =
white
}
TR.EJContRow {
	BACKGROUND-COLOR: lightyellow
}
TD.EJContVol {
	BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #cccccc; =
BORDER-RIGHT-STYLE: solid; BACKGROUND-COLOR: #888888; BORDER-TOP-COLOR: =
#cccccc; BORDER-TOP-STYLE: solid; COLOR: white; BORDER-RIGHT-COLOR: =
#cccccc; BORDER-LEFT-STYLE: solid; BORDER-LEFT-COLOR: #cccccc
}
TD.EJContAI {
	BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #cccccc; =
BORDER-RIGHT-STYLE: solid; BACKGROUND-COLOR: lightyellow; =
BORDER-TOP-COLOR: #cccccc; BORDER-TOP-STYLE: solid; BORDER-RIGHT-COLOR: =
#cccccc; BORDER-LEFT-STYLE: solid; BORDER-LEFT-COLOR: #cccccc
}
TD.EJContIss {
	BORDER-BOTTOM-STYLE: solid; BORDER-BOTTOM-COLOR: #cccccc; =
BORDER-RIGHT-STYLE: solid; BORDER-TOP-COLOR: #cccccc; BORDER-TOP-STYLE: =
solid; BORDER-RIGHT-COLOR: #cccccc; BORDER-LEFT-STYLE: solid; =
BORDER-LEFT-COLOR: #cccccc
}
TD.EJContEmpty1 {
=09
}
TD.EJContEmpty {
	TEXT-ALIGN: center; BORDER-LEFT: #cccccc 1px solid; PADDING-LEFT: 10px; =
PADDING-RIGHT: 10px; BORDER-TOP: #cccccc 1px solid
}
BODY0 {
	FONT-FAMILY: Arial; COLOR: black
}
BODY1 {
	FONT-FAMILY: Palatino Linotype, Arial; COLOR: black
}
INPUT {
	FONT-FAMILY: Arial; COLOR: black
}
TEXTAREA {
	FONT-FAMILY: Arial; COLOR: black
}
BODY.first {
	BACKGROUND-COLOR: white; MARGIN: 15px 0px 0px; FONT-FAMILY: Arial; =
COLOR: black
}
BODY.mainInfo {
	BACKGROUND-COLOR: white; MARGIN: 0px; FONT-FAMILY: Arial; COLOR: black
}
BODY.m_mainInfo {
	BACKGROUND-COLOR: #fafafa; MARGIN: 0px; FONT-FAMILY: Arial; COLOR: =
black
}
BODY.mainInfoArch {
	BACKGROUND-COLOR: white; MARGIN: 0px; FONT-FAMILY: Palatino Linotype, =
Arial; COLOR: black
}
.fix {
	FONT-SIZE: 8pt
}
.fix180 {
	BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; =
WIDTH: 180px; FONT-SIZE: 8pt; BORDER-TOP: #000000 1px solid; =
BORDER-RIGHT: #000000 1px solid
}
.topPic {
	BACKGROUND-IMAGE: url(/gifs/back_mnet3.jpg); BACKGROUND-REPEAT: =
repeat-x; BACKGROUND-POSITION: 50% top; HEIGHT: 82px
}
.mnet3 {
	BACKGROUND-IMAGE: url(/gifs/back_mnet3.jpg); BACKGROUND-REPEAT: =
repeat-x; BACKGROUND-POSITION: center 50%; HEIGHT: 114px
}
.man1 {
	BACKGROUND-IMAGE: url(/gifs/back_man1.jpg); BACKGROUND-REPEAT: =
repeat-x; BACKGROUND-POSITION: 50% bottom; HEIGHT: 127px
}
.mian {
	MARGIN: 0px 5px; BACKGROUND-REPEAT: repeat-x; BACKGROUND-POSITION: =
center 50%; HEIGHT: 69px; FONT-SIZE: 8pt
}
.webpage {
	PADDING-LEFT: 30px; PADDING-RIGHT: 10px; COLOR: black
}
.pad {
	PADDING-LEFT: 20px; PADDING-RIGHT: 0px; COLOR: black
}
.mob {
	PADDING-LEFT: 10px; PADDING-RIGHT: 10px; COLOR: black
}
.mms {
	PADDING-BOTTOM: 10pt
}
.cont {
	BORDER-BOTTOM: #a91818 1px solid; BORDER-LEFT: #a91818 1px solid; =
WIDTH: 100%; BORDER-TOP: #a91818 1px solid; BORDER-RIGHT: #a91818 1px =
solid
}
.contOLD {
	BORDER-BOTTOM: #a91818 1px solid; BORDER-LEFT: #a91818 1px solid; =
WIDTH: 500px; BORDER-TOP: #a91818 1px solid; BORDER-RIGHT: #a91818 1px =
solid
}
.tcontOLD {
	BORDER-LEFT: #a91818 1px solid; WIDTH: 500px; BORDER-TOP: #a91818 1px =
solid; BORDER-RIGHT: #a91818 1px solid
}
.tcont {
	WIDTH: 500px
}
.jnamebyyear {
	BORDER-BOTTOM: #cccccc 0px solid; BORDER-LEFT: #cccccc 1px solid; =
FONT-STYLE: italic; COLOR: #333333; BORDER-TOP: #a91818 1px solid; =
FONT-WEIGHT: bold; BORDER-RIGHT: #cccccc 1px solid
}
.vol {
	BORDER-BOTTOM: #cccccc 0px solid; BORDER-LEFT: #cccccc 1px solid; =
BACKGROUND-COLOR: #e5e5e5; COLOR: #a91818; BORDER-TOP: #a91818 2px =
solid; BORDER-RIGHT: #cccccc 1px solid
}
.year {
	BORDER-BOTTOM: #cccccc 0px solid; BORDER-LEFT: #cccccc 1px solid; =
BACKGROUND-COLOR: #e5e5e5; COLOR: #a91818; BORDER-TOP: #a91818 2px =
solid; BORDER-RIGHT: #cccccc 1px solid
}
.series {
	TEXT-ALIGN: center; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; COLOR: =
#a91818
}
.per {
	BORDER-BOTTOM: #a91818 0px solid; TEXT-ALIGN: center; BORDER-LEFT: =
#a91818 1px solid; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: =
#a91818 1px solid; BORDER-RIGHT: #a91818 1px solid
}
.issue {
	BORDER-BOTTOM: #cccccc 0px solid; TEXT-ALIGN: center; BORDER-LEFT: =
#cccccc 1px solid; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: =
#cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid
}
.issue_with_corner {
	BACKGROUND-IMAGE: url(/gifs/rtcorner1.gif); BORDER-BOTTOM: #cccccc 0px =
solid; TEXT-ALIGN: center; BORDER-LEFT: #cccccc 1px solid; PADDING-LEFT: =
10px; PADDING-RIGHT: 10px; BACKGROUND-REPEAT: no-repeat; =
BACKGROUND-POSITION: right top; BORDER-TOP: #cccccc 1px solid; =
BORDER-RIGHT: #cccccc 1px solid
}
A.topLink {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; COLOR: =
#a91818; FONT-SIZE: 9pt; CURSOR: pointer; FONT-WEIGHT: normal; =
TEXT-DECORATION: none
}
A.NavLink {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; COLOR: =
#a97876; FONT-SIZE: small; CURSOR: pointer; FONT-WEIGHT: bold; =
TEXT-DECORATION: none
}
A.AIMENULink {
	COLOR: darkblue; CURSOR: pointer; TEXT-DECORATION: none
}
A.SLink:link {
	COLOR: darkblue; CURSOR: pointer; TEXT-DECORATION: none
}
A.SLink:visited {
	COLOR: darkblue; CURSOR: pointer; TEXT-DECORATION: none
}
A.SLink:hover {
	COLOR: darkblue; CURSOR: pointer; TEXT-DECORATION: underline
}
A.SLink:active {
	COLOR: darkblue; CURSOR: pointer; TEXT-DECORATION: underline
}
A.BlackLink:link {
	COLOR: black; CURSOR: pointer; TEXT-DECORATION: none
}
A.BlackLink:visited {
	COLOR: black; CURSOR: pointer; TEXT-DECORATION: none
}
A.BlackLink:hover {
	COLOR: black; CURSOR: pointer; TEXT-DECORATION: none
}
A.ILink {
	COLOR: #e1ebe1; CURSOR: pointer; TEXT-DECORATION: none
}
TABLE.topMenu {
	LINE-HEIGHT: normal; BACKGROUND-COLOR: #a6a6a6; FONT-VARIANT: normal; =
FONT-STYLE: normal; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
TABLE.Search {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; =
FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
INPUT.shortbutton {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; WIDTH: =
40px; COLOR: black; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
INPUT.longbutton {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; WIDTH: =
120px; COLOR: black; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
INPUT.verylongbutton {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; WIDTH: =
170px; COLOR: black; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
INPUT.verylongboldbutton {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; WIDTH: =
200px; COLOR: black; FONT-SIZE: 10pt; FONT-WEIGHT: normal
}
INPUT.button {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; WIDTH: =
70px; COLOR: black; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
INPUT.very250longbutton {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; WIDTH: =
250px; COLOR: black; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
INPUT.button {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; WIDTH: =
70px; COLOR: black; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
INPUT.shortbutton {
	LINE-HEIGHT: normal; FONT-VARIANT: normal; FONT-STYLE: normal; WIDTH: =
30px; COLOR: black; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
.ID {
	LINE-HEIGHT: normal; BACKGROUND-COLOR: white; FONT-VARIANT: normal; =
FONT-STYLE: normal; COLOR: black; FONT-SIZE: 8pt; FONT-WEIGHT: normal
}
.ID200 {
	LINE-HEIGHT: normal; BACKGROUND-COLOR: white; FONT-VARIANT: normal; =
FONT-STYLE: normal; WIDTH: 250px; COLOR: black; FONT-SIZE: 8pt; =
FONT-WEIGHT: normal
}
.KW {
	LINE-HEIGHT: normal; BACKGROUND-COLOR: white; FONT-VARIANT: normal; =
FONT-STYLE: normal; WIDTH: 250px; HEIGHT: 80px; COLOR: black; FONT-SIZE: =
8pt; FONT-WEIGHT: normal
}
.FN {
	LINE-HEIGHT: normal; BACKGROUND-COLOR: white; FONT-VARIANT: normal; =
FONT-STYLE: normal; COLOR: #a91818; FONT-SIZE: 8pt; FONT-WEIGHT: bold
}
.red {
	COLOR: #a91818
}
.small {
	FONT-SIZE: small
}
TD.fon1 {
	BACKGROUND-IMAGE: url(/gifs/line2.jpg); PADDING-LEFT: 8px; =
PADDING-RIGHT: 8px; BACKGROUND-REPEAT: repeat-x
}
.bx-ri {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
underline
}
.x-ri {
	COLOR: #a91818; FONT-SIZE: small
}
.x-bl {
	COLOR: #000000; FONT-SIZE: small
}
.y-ri {
	COLOR: #a91818
}
.y-bl {
	COLOR: #000000
}
TD.nolink {
	COLOR: #9f7c7c; FONT-SIZE: small; FONT-WEIGHT: bold
}
A.ri:link {
	COLOR: #000080; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: =
none
}
A.ri:visited {
	COLOR: #000080; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: =
none
}
A.ri:hover {
	COLOR: #000080; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: =
underline
}
A.ryf:link {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: =
none
}
A.ryf:visited {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: =
none
}
A.ryf:hover {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: =
underline
}
.ryb {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.rys:link {
	COLOR: #a91818; FONT-SIZE: x-small; FONT-WEIGHT: normal; =
TEXT-DECORATION: none
}
A.rys:visited {
	COLOR: #a91818; FONT-SIZE: x-small; FONT-WEIGHT: normal; =
TEXT-DECORATION: none
}
A.rys:hover {
	COLOR: #a91818; FONT-SIZE: x-small; FONT-WEIGHT: normal; =
TEXT-DECORATION: underline
}
A.ry:link {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.ry:visited {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.ry:hover {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
underline
}
A.ry1:link {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
underline
}
A.ry1:visited {
	COLOR: #a91818; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
underline
}
A.rn:link {
	COLOR: #a91818; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
A.rn:visited {
	COLOR: #a91818; FONT-WEIGHT: bold; TEXT-DECORATION: none
}
A.rn:hover {
	COLOR: #a91818; FONT-WEIGHT: bold; TEXT-DECORATION: underline
}
UL {
	LIST-STYLE-TYPE: circle
}
.sem {
	TEXT-INDENT: -15px; PADDING-LEFT: 15px
}
P.MathNetHtmlView {
	PADDING-LEFT: 0px
}
TABLE.LoginCard {
	BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; COLOR: =
black; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid
}
TABLE.ResultsCard {
	BORDER-BOTTOM: #a97876 1px solid; BORDER-LEFT: #a97876 1px solid; =
BACKGROUND-COLOR: #e5e5e5; COLOR: #a91818; FONT-SIZE: small; BORDER-TOP: =
#a97876 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #a97876 1px solid
}
TABLE.FilesCard {
	BORDER-BOTTOM: #a97876 1px solid; BORDER-LEFT: #a97876 1px solid; =
BACKGROUND-COLOR: lightyellow; COLOR: #a91818; FONT-SIZE: small; =
BORDER-TOP: #a97876 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #a97876 =
1px solid
}
TABLE.UploadCard {
	BORDER-BOTTOM-COLOR: #9999ff; BORDER-RIGHT-WIDTH: 1px; =
BACKGROUND-COLOR: #9999ff; BORDER-TOP-COLOR: #9999ff; BORDER-TOP-WIDTH: =
1px; BORDER-BOTTOM-WIDTH: 1px; COLOR: black; BORDER-RIGHT-COLOR: =
#9999ff; BORDER-LEFT-COLOR: #9999ff; BORDER-LEFT-WIDTH: 1px
}
.FilesTop {
	BORDER-BOTTOM: #a97876 1px solid; BORDER-LEFT: #a97876 1px solid; =
BACKGROUND-COLOR: #d3d3d3; COLOR: #a91818; FONT-SIZE: small; BORDER-TOP: =
#a97876 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: #a97876 1px solid
}
.ResultBody {
	BACKGROUND-COLOR: #e5e5e5; COLOR: #000000; FONT-SIZE: small; =
FONT-WEIGHT: normal
}
A.r1:link {
	COLOR: white; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.r1:visited {
	COLOR: white; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.r1:hover {
	COLOR: #e1abb8; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.topmenu:link {
	COLOR: #555555; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.topmenu:visited {
	COLOR: #555555; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.tomenu:hover {
	COLOR: #555555; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.mjON:link {
	COLOR: yellow; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.mjON:visited {
	COLOR: yellow; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.mjON:hover {
	COLOR: yellow; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.mjOFF:link {
	COLOR: #d3d3d3; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.mjOFF:visited {
	COLOR: #d3d3d3; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.mjOFF:hover {
	COLOR: #d3d3d3; FONT-SIZE: small; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
.showUDC {
	COLOR: #000080; CURSOR: help
}
.comm {
	FONT-SIZE: x-small
}
TABLE.StatTable {
	BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; =
FONT-SIZE: small; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: #000000 =
1px solid
}
TABLE.TitleTable {
	BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; =
BACKGROUND-COLOR: #ededed; BORDER-TOP: #000000 1px solid; BORDER-RIGHT: =
#000000 1px solid
}
TABLE.ScopeTable {
	BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; =
BACKGROUND-COLOR: #ededed; FONT-SIZE: small; BORDER-TOP: #000000 1px =
solid; BORDER-RIGHT: #000000 1px solid
}
TR.StatTop {
	BACKGROUND-COLOR: #bebebe
}
TR.StatRow {
	BACKGROUND-COLOR: #d3d3d3
}
TABLE.StatJTable {
	BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; =
WIDTH: 167px; FONT-SIZE: 8pt; BORDER-TOP: #000000 1px solid; =
BORDER-RIGHT: #000000 1px solid
}
.StatPersTable {
	BORDER-BOTTOM: #b3b3b3 1px solid; TEXT-ALIGN: center; BORDER-LEFT: =
#b3b3b3 1px solid; PADDING-BOTTOM: 5px; MARGIN: 5px; PADDING-LEFT: 5px; =
WIDTH: 90%; PADDING-RIGHT: 5px; FONT-SIZE: 8pt; BORDER-TOP: #b3b3b3 1px =
solid; BORDER-RIGHT: #b3b3b3 1px solid; PADDING-TOP: 5px
}
TABLE.StatJRNSTable {
	BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; =
WIDTH: 167px; FONT-SIZE: 8pt; BORDER-TOP: #000000 1px solid; =
BORDER-RIGHT: #000000 1px solid
}
TR.StatJRow {
	BACKGROUND-COLOR: lightyellow
}
.vtextinfo {
	BACKGROUND-COLOR: #e5e5e5; FONT-SIZE: small
}
SPAN.limit_width IMG {
	MAX-WIDTH: 90% !important; HEIGHT: auto !important
}
SPAN.jrn_logo IMG {
	MAX-WIDTH: 40% !important; HEIGHT: auto !important
}
.bold_red {
	COLOR: #a91818; FONT-WEIGHT: bold
}
.ul_block {
	BORDER-BOTTOM: #d3d3d3 0px solid; BORDER-LEFT: #d3d3d3 1px solid; =
PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; LIST-STYLE-TYPE: none; =
MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #d3d3d3 =
1px solid; BORDER-RIGHT: #d3d3d3 1px solid; PADDING-TOP: 0px; =
-webkit-border-radius: 5px; -moz-border-radius: 5px; =
-moz-background-clip: padding; -webkit-background-clip: padding-box; =
background-clip: padding-box
}
.ul_block LI {
	BORDER-BOTTOM: #cacaca 1px solid; TEXT-ALIGN: center; PADDING-BOTTOM: =
0px; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; DISPLAY: block; FONT: bold 16px/18px Helvetica, =
sans-serif; BORDER-TOP: #fff 1px solid; PADDING-TOP: 0px
}
.ul_block A {
	PADDING-BOTTOM: 14px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; DISPLAY: block; FONT: bold 16px/18px sans-serif; TEXT-DECORATION: =
none; PADDING-TOP: 14px
}
.table_block {
	PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; BACKGROUND-COLOR: =
#dddddd; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
BORDER-TOP-WIDTH: 0px; TABLE-LAYOUT: fixed; BORDER-BOTTOM-WIDTH: 0px; =
BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px
}
.table_block A {
	DISPLAY: block; TEXT-DECORATION: none
}
.table_block TD {
	PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 4px; =
PADDING-RIGHT: 4px; PADDING-TOP: 4px
}
.td_block {
	BORDER-BOTTOM: #d3d3d3 0px solid; BORDER-LEFT: #d3d3d3 1px solid; =
PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #f4f4f4; MARGIN: 1px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #d3d3d3 1px solid; =
BORDER-RIGHT: #d3d3d3 1px solid; PADDING-TOP: 0px; =
-webkit-border-radius: 5px; -moz-border-radius: 5px; =
-moz-background-clip: padding; -webkit-background-clip: padding-box; =
background-clip: padding-box
}
.ul_block_small {
	BORDER-BOTTOM: #d3d3d3 0px solid; BORDER-LEFT: #d3d3d3 1px solid; =
PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fafafa; LIST-STYLE-TYPE: none; =
MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #d3d3d3 =
1px solid; BORDER-RIGHT: #d3d3d3 1px solid; PADDING-TOP: 0px; =
-webkit-border-radius: 5px; -moz-border-radius: 5px; =
-moz-background-clip: padding; -webkit-background-clip: padding-box; =
background-clip: padding-box
}
.ul_block_small LI {
	BORDER-BOTTOM: #cacaca 1px solid; PADDING-BOTTOM: 0px; =
BACKGROUND-COLOR: #f4f4f4; MARGIN: 0px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; DISPLAY: block; BORDER-TOP: #fff 1px solid; =
PADDING-TOP: 0px
}
.ul_block_small A {
	PADDING-BOTTOM: 5px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 5px
}
.block_seminars {
	BORDER-BOTTOM: #d3d3d3 0px solid; BORDER-LEFT: #d3d3d3 1px solid; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
BORDER-TOP: #d3d3d3 1px solid; BORDER-RIGHT: #d3d3d3 1px solid; =
PADDING-TOP: 0px; -webkit-border-radius: 5px; -moz-border-radius: 5px; =
-moz-background-clip: padding; -webkit-background-clip: padding-box; =
background-clip: padding-box
}
.block_seminars LI {
	BORDER-BOTTOM: #cacaca 1px solid; PADDING-BOTTOM: 0px; =
BACKGROUND-COLOR: #f4f4f4; MARGIN: 0px; PADDING-LEFT: 5px; =
PADDING-RIGHT: 5px; DISPLAY: block; BORDER-TOP: #fff 1px solid; =
PADDING-TOP: 0px
}
.block_seminars A {
	PADDING-BOTTOM: 2px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 2px
}
.ul_block_med {
	BORDER-BOTTOM: #d3d3d3 0px solid; BORDER-LEFT: #d3d3d3 1px solid; =
PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fafafa; LIST-STYLE-TYPE: none; =
MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #d3d3d3 =
1px solid; BORDER-RIGHT: #d3d3d3 1px solid; PADDING-TOP: 0px; =
-webkit-border-radius: 5px; -moz-border-radius: 5px; =
-moz-background-clip: padding; -webkit-background-clip: padding-box; =
background-clip: padding-box
}
.ul_block_med LI {
	BORDER-BOTTOM: #cacaca 1px solid; PADDING-BOTTOM: 0px; =
BACKGROUND-COLOR: #f4f4f4; MARGIN: 0px; PADDING-LEFT: 8px; =
PADDING-RIGHT: 8px; DISPLAY: block; BORDER-TOP: #fff 1px solid; =
PADDING-TOP: 0px
}
.ul_block_med A {
	PADDING-BOTTOM: 5px; MARGIN: 1px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; DISPLAY: block; TEXT-DECORATION: none; PADDING-TOP: 5px
}

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: text/css;
	charset="koi8-r"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/css/webcard.css

TD.WebCardBody {
	BORDER-BOTTOM: #333333 1px solid; BORDER-LEFT: #333333 1px solid; =
BACKGROUND-COLOR: #ffffff; BORDER-TOP: 1px; BORDER-RIGHT: #333333 1px =
solid
}
TD.CardWT_p {
	BORDER-BOTTOM: #333333 1px solid; BORDER-LEFT: #d0d0c8 1px solid; =
BACKGROUND-COLOR: #ffffff; BORDER-TOP: #d0d0c8 1px solid; BORDER-RIGHT: =
1px
}
TD.CardWT_r {
	BORDER-BOTTOM: #333333 1px solid; BORDER-LEFT: 1px; BACKGROUND-COLOR: =
#ffffff; BORDER-TOP: #d0d0c8 1px solid; BORDER-RIGHT: 1px
}
TD.CardWT_rc {
	BORDER-BOTTOM: #333333 1px solid; BORDER-LEFT: 1px; BACKGROUND-COLOR: =
#ffffff; BORDER-TOP: #d0d0c8 1px solid; BORDER-RIGHT: #d0d0c8 1px solid
}
TD.CardWT_c {
	BORDER-BOTTOM: #333333 1px solid; BORDER-LEFT: #d0d0c8 1px solid; =
BACKGROUND-COLOR: #ffffff; BORDER-TOP: #d0d0c8 1px solid; BORDER-RIGHT: =
#d0d0c8 1px solid
}
TD.CardWT_a {
	BORDER-BOTTOM: 1px; BORDER-LEFT: #333333 1px solid; BACKGROUND-COLOR: =
#ffffff; BORDER-TOP: #333333 1px solid; BORDER-RIGHT: #333333 1px solid
}
TD.CardW2T_a {
	BORDER-BOTTOM: #d0d0c8 1px solid; BORDER-LEFT: #d0d0c8 1px solid; =
BACKGROUND-COLOR: #ffffff; BORDER-TOP: #d0d0c8 1px solid; FONT-WEIGHT: =
bold; BORDER-RIGHT: #d0d0c8 1px solid
}
TD.CardW2T_p {
	BORDER-BOTTOM: #d0d0c8 1px solid; BORDER-LEFT: #d0d0c8 1px solid; =
BACKGROUND-COLOR: #ffffff; BORDER-TOP: #d0d0c8 1px solid; CURSOR: hand; =
FONT-WEIGHT: normal; BORDER-RIGHT: #d0d0c8 1px solid
}

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: text/css;
	charset="koi8-r"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/css/calendar.css

TD.cal {
	BACKGROUND-COLOR: #d3d3d3; FONT-FAMILY: Arial,Helvetica,Sans-serif; =
COLOR: #000000; FONT-SIZE: 11px
}
SELECT.month {
	WIDTH: 85px; FONT-FAMILY: Arial,Helvetica,Sans-serif; COLOR: #000000; =
FONT-SIZE: 11px
}
INPUT.year {
	WIDTH: 30px; FONT-FAMILY: Arial,Helvetica,Sans-serif; COLOR: #000000; =
FONT-SIZE: 11px
}
TD.calDaysColor {
	BACKGROUND-COLOR: #000000; FONT-FAMILY: Arial,Helvetica,Sans-serif; =
COLOR: #ffffff; FONT-SIZE: 11px
}
TD.calWeekend {
	BACKGROUND-COLOR: #c0c0c0; FONT-FAMILY: Arial,Helvetica,Sans-serif; =
COLOR: #ffffff; FONT-SIZE: 11px
}
TD.calBgColor {
	BACKGROUND-COLOR: #d3d3d3; FONT-FAMILY: Arial,Helvetica,Sans-serif; =
COLOR: #ffffff; FONT-SIZE: 11px
}
.calBorderColor {
	BACKGROUND-COLOR: #a9a9a9; FONT-FAMILY: Arial,Helvetica,Sans-serif; =
COLOR: #ffffff; FONT-SIZE: 11px
}
TD.calHighlightColor {
	BACKGROUND-COLOR: #ffffcc; FONT-FAMILY: Arial,Helvetica,Sans-serif; =
COLOR: #ffffff; FONT-SIZE: 11px
}
A.cal {
	FONT-FAMILY: Arial,Helvetica,Sans-serif; COLOR: #000000; FONT-SIZE: =
11px; TEXT-DECORATION: none
}
A.cal:hover {
	FONT-FAMILY: Arial,Helvetica,Sans-serif; COLOR: #ff0000; FONT-SIZE: =
11px; TEXT-DECORATION: none
}
.disabled {
	FONT-FAMILY: Arial,Helvetica,Sans-serif; COLOR: #808080; FONT-SIZE: =
11px; TEXT-DECORATION: none
}

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/MathJax/MathJax.js

/*************************************************************=0A=
 *=0A=
 *  MathJax.js=0A=
 *  =0A=
 *  The main code for the MathJax math-typesetting library.  See =0A=
 *  http://www.mathjax.org/ for details.=0A=
 *  =0A=
 *  ---------------------------------------------------------------------=0A=
 *  =0A=
 *  Copyright (c) 2009-2010 Design Science, Inc.=0A=
 * =0A=
 *  Licensed under the Apache License, Version 2.0 (the "License");=0A=
 *  you may not use this file except in compliance with the License.=0A=
 *  You may obtain a copy of the License at=0A=
 * =0A=
 *      http://www.apache.org/licenses/LICENSE-2.0=0A=
 * =0A=
 *  Unless required by applicable law or agreed to in writing, software=0A=
 *  distributed under the License is distributed on an "AS IS" BASIS,=0A=
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or =
implied.=0A=
 *  See the License for the specific language governing permissions and=0A=
 *  limitations under the License.=0A=
 */=0A=
=0A=
if (!window.MathJax) {window.MathJax =3D {}}=0A=
=0A=
MathJax.Unpack =3D function (data) {=0A=
  var k, d, n, m, i;=0A=
  for (k =3D 0, m =3D data.length; k < m; k++) {=0A=
    d =3D data[k];=0A=
    for (i =3D 0, n =3D d.length; i < n; i++)=0A=
      {if (typeof(d[i]) =3D=3D 'number') {d[i] =3D d[d[i]]}}=0A=
    data[k] =3D d.join('');=0A=
  }=0A=
  eval(data.join(''));=0A=
};=0A=
MathJax.isPacked =3D true;=0A=
=0A=
MathJax.Unpack([=0A=
  =
['if(','document.','getElementById','&&',1,'childNodes&&',1,'createElemen=
t','){','if(!','window.MathJax','){',10,'=3D{}}',9,'MathJax.Hub','){MathJ=
ax.version=3D"1.0.1";(','function(','d){','var =
b=3D','window[d];if(!','b){b','=3Dwindow[d]=3D{}}var ','f','=3D[];','var =
c=3D',17,'g','){var h=3D','g.','constructor',';if(!','h){h=3D','new =
Function','("")}','for(var ','i in =
g){if(i!=3D=3D"',30,'"&&g','.hasOwnProperty','(i)){h[i]=3Dg[i]}}','return=
 ','h};var =
a=3D','function(){',41,33,'("',41,'arguments','.callee','.Init','.call(th=
is,',48,')")};var =
e=3Da();e','.prototype','=3D{bug_test:1};',9,'e',54,'.bug_test){a=3D',43,=
41,43,41,48,49,50,51,48,')}}}b.','Object','=3Dc({',30,':a(),Subclass:',17=
,'g,i',28,'a();h.SUPER=3Dthis;h',50,'=3Dthis',50,';h','.Subclass','=3Dthi=
s',82,';h.Augment=3Dthis.Augment;h.','protoFunction','=3Dthis.',86,';h.ca=
n=3Dthis.can;h.has=3Dthis.has;h.isa=3Dthis.isa;h',54,'=3Dnew =
this(f);h',54,'.',30,'=3Dh;h.Augment(g,i);',41,'h},Init:',17,'g',28,'this=
;if(g','.length=3D=3D=3D','1&&g[0]=3D=3D=3Df','){return ','h}if(!(h =
','instanceof ','g',49,')){h=3Dnew =
g',49,'(f)}',41,'h',50,'.apply(','h,g)||h},Augment:',17,'g,h){var =
i;if(g','!=3Dnull){for(i in =
','g){if(g',39,'(i)){this','.',86,'(i,g[i','])}}if(g.toString!=3D=3Dthis.=
prototype.toString&&g.toString!=3D=3D{}.toString){this.protoFunction("toS=
tring",g.toString)}}','if(h',119,'h){if(','h',39,122,'[i]=3Dh[i]}}}',41,'=
this},',86,':',17,'h,g){this',54,'[h]=3Dg;','if(typeof',' =
g','=3D=3D=3D"function"){','g.SUPER=3Dthis.SUPER',54,'}},prototype:{Init'=
,':function(){},','SUPER:',17,'g',104,'g',49,'.SUPER},can:',17,'g',104,'t=
ypeof(this[g','])=3D=3D=3D"function"},has:',17,'g',104,159,'])!=3D=3D"und=
efined','"},isa:',17,'g){return(g ',106,70,')&&(this =
',106,'g)}},can:',17,'g',104,'this',54,'.can',51,'g)},has:',17,'g',104,'t=
his',54,'.has',51,'g)},isa:',17,'h){var =
g=3Dthis;while(',120,'=3D=3D=3Dh',104,'true}else{g=3Dg.SUPER}}',41,'false=
},SimpleSUPER:c({',30,':',17,'g',104,'this.SimpleSUPER.define(g)},define:=
',17,'g){var i=3D{};if(g!=3Dnull){',35,'h in =
',120,39,'(h)){this.',86,'(h,g[h',126,41,'i},wrap:',17,'i,h){',142,'(h','=
)=3D=3D=3D"function"&&','h','.toString','().match(/\\.\\s*SUPER\\s*\\(/))=
{var =
g=3D',33,'(this.wrapper);g.label=3Di;g','.original','=3Dh;h=3Dg;g',222,'=3D=
this.stringify}',41,'h},wrapper:',43,'var =
h=3D',48,49,';this.SUPER=3Dh.SUPER[h.label];try{var =
g=3Dh',226,'.apply(this',',',48,')}catch(i){','delete =
this.','SUPER;','throw =
i}',242,243,41,'g}.','toString().replace','(/^\\s*function =
\\(\\)\\s*\\{\\s*/i,"").replace(/\\s*\\}\\s*$/i,""),toString:',43,41,'thi=
s',226,222,238,226,',',48,')}})})})("MathJax");(',17,'BASENAME){var =
','BASE=3Dwindow[BASENAME','];',9,'BASE){',263,']=3D{}}var =
','CALLBACK','=3D',17,'data){var =
cb=3D',33,'("',41,48,49,'.execute',115,48,49,',',48,')");',35,'id in =
','CALLBACK.prototype','){if(',287,39,'(id)){',142,'(data[id',165,'"){cb[=
id]=3Ddata[id]}else{cb[id]=3D',287,'[id]}}}cb',222,'=3D',287,222,';',41,'=
cb};',287,'=3D{isCallback:true,hook',148,'data:[],object:window,execute:'=
,43,9,'this.called||this.autoReset){this.called=3D!this.autoReset;',41,'t=
his.hook',238,'.object,this','.data.concat([].slice.call(',48,',0)))}},re=
set:',43,242,'called},toString:',43,41,313,222,238,'.hook,',48,')}};var =
ISCALLBACK=3D',17,'f){return(typeof(f',220,'f.isCallback)};var =
EVAL=3D',17,'code',104,'eval.call(window,code)};EVAL("var __TeSt_VaR__ =
=3D 1','");if(','window.__TeSt_VaR__','){delete =
',339,'}else{if(','window.execScript','){EVAL=3D',17,'code){BASE.__code=3D=
code;code=3D"try {"+BASENAME+".__result =3D eval("+BASENAME+".__code)} =
catch(err) {"+BASENAME+".__result =3D err}";',343,'(code',');var =
result=3DBASE.__result;delete BASE.__result;delete BASE.__code;if(result =
instanceof Error){throw result}return =
result','}}else{EVAL=3D',17,346,'var =
head=3D(',1,'getElementsByTagName("head"))[0];if(!','head){head=3D',1,'bo=
dy}var =
script=3D',1,7,'("script");','script','.appendChild(',1,'createTextNode',=
'(code));head',363,'script);','head.removeChild(','script',349,'}}}var =
USING=3D',17,'args,i','){if(',48,'.length','>1){if(',48,102,'2&&!(typeof =
',48,'[0]=3D=3D=3D"function")&&',48,'[0] ',106,'Object&&typeof =
',48,'[1]=3D=3D=3D"number"){','args=3D[].slice.call(',374,')}else{',390,4=
8,',0)}}if(args ',106,'Array&&args',102,'1){args=3Dargs[0]}',142,' =
args',144,'if(args',278,'=3D=3D=3D',287,278,104,'args}',41,269,'({hook:ar=
gs})}else{if(args =
',106,'Array){',142,'(args[0])=3D=3D=3D"string"&&args[1] =
',106,387,'args[1][args[0]]=3D=3D=3D"','function"){return =
CALLBACK({hook:args[','1][args[0]],object:args[1','],data:args.slice(','2=
)})}else{',142,' args[0]=3D=3D=3D"',420,'0',422,'1)})}else{',142,' =
args[1]=3D=3D=3D"',420,'1],object:args[0',422,'2)})}}}}else{',142,'(args)=
=3D=3D=3D"','string"){',41,269,'({hook:EVAL,data:[args]})}else{if(args =
',106,70,104,269,'(args',392,142,437,'undefined"){',41,269,'({})}}}}}','t=
hrow Error("Can\'t ','make ','callback',' from given data")};var =
DELAY=3D',17,'time,',456,'){callback=3DUSING(callback);',456,'.timeout=3D=
','setTimeout(',456,',time);','return callback','};var =
WAITFOR=3D',17,456,',signal',461,9,456,'.called){','WAITSIGNAL(',456,471,=
');signal.pending++}};var WAITEXECUTE=3D',43,'var =
','signals','=3Dthis','.signal',';',242,'signal;this',278,'=3Dthis.','old=
Execute;',242,490,'var =
result=3D','this',278,238,',',48,');','if(ISCALLBACK(result)&&!result.cal=
led){',476,'result,',482,392,'for(var =
i=3D0,m=3D',482,'.length;i<m;i++){','signals[i].pending','--;if(',508,'<=3D=
0){',482,'[i].call()}}}};var =
WAITSIGNAL=3D',17,456,',',482,'){if(!(',482,' =
',106,'Array)){',482,'=3D[',482,']}',9,456,484,'){',456,'.oldExecute=3D',=
456,278,';',456,278,'=3DWAITEXECUTE;',456,484,'=3D',482,342,482,102,'1){'=
,456,484,'.push(',482,'[0','])}else{',456,484,'=3D',456,484,'.concat(',48=
2,')}}};var =
AFTER=3D',17,456,461,456,'.pending=3D0;',35,'i=3D1,m=3D',48,507,'if(',48,=
'[i]){WAITFOR(',48,'[i],',456,')}}if(',456,'.pending=3D=3D=3D0){',493,456=
,'();','if(ISCALLBACK(result',')){',456,'=3Dresult}}',467,'};var =
HOOKS=3D',17,'hooks,data,reset){',9,'hooks',104,'null}if(!(hooks =
',106,522,'hooks=3D[hooks]}if(!(data =
',106,522,'data=3D(data=3D=3Dnull?[]:[data])}var =
','callbacks','=3D[{}];',505,'hooks',507,'if(reset){hooks[i].reset()}',49=
3,'hooks[i].apply(window,data);',500,600,549,'result)}}if(',600,102,'1',1=
04,'null}if(',600,102,'2',104,600,'[1]}',41,'AFTER.apply({},',600,')};var=
 =
QUEUE=3DBASE.',70,82,'({Init:',43,'this.pending','=3D0;','this.running','=
=3D0;','this.queue',24,'this.Push',238,',',48,')},Push:',43,'var =
',456,';',505,48,507,456,'=3DUSING(',48,'[i]);if(',456,'=3D=3D=3D',48,'[i=
]&&!',456,475,456,'=3DUSING(["wait",this,',456,'])}',635,549,456,')}',9,6=
33,'&&!',631,'){','this.Process','()}',467,'},Process:',17,'queue){while(=
!',633,'&&!',631,'&&',635,377,'){var =
',456,'=3D',635,'[0];queue=3D',635,'.slice(1);',635,24,'this.Suspend();',=
493,456,'();','this.Resume();','if(queue',377,'){',635,'=3Dqueue',558,635=
,')}',500,'WAITFOR(result,this',')}}},','Suspend:',43,633,'++},Resume:',4=
3,'if(',633,'){',633,'--}},call:',43,672,238,',',48,')},wait:',17,456,'){=
',467,'}});var =
SIGNAL=3DQUEUE',82,'({Init:',17,'name){','QUEUE',54,50,'.call(this',');th=
is.name=3Dname;','this.posted',24,'this.listeners','=3D[]},Post:',17,'mes=
sage,',456,',forget',461,'if(this.posting||this.pending){',637,'(["Post",=
this,message,',456,746,552,'this.',456,'=3D',456,';',456,'.reset();',9,'f=
orget){',739,549,'message)}',693,'this.posting=3D1;',505,741,507,741,'[i]=
.reset();var =
result=3D(',741,'[i])(','message);',500,707,')}}',697,242,'posting',31,63=
1,'){this.call()}}',467,'},Clear:',17,456,461,748,456,'=3D',637,'(["Clear=
",this,',456,552,739,24,456,'()}',467,'},call:',43,'this.',456,'(this);',=
672,'()},Interest:',17,456,',ignorePast',461,741,'[',741,377,']=3D',456,3=
1,'ignorePast){',505,739,507,456,760,493,456,'(',739,'[i]);',582,')&&i=3D=
=3D=3D',739,377,'-1){',707,')}}}',467,'},NoInterest:',17,456,'){',505,741=
,507,'if(',741,'[i]=3D=3D=3D',456,'){',741,'.splice(i,1);return}}},Messag=
eHook:',17,'msg,',456,461,9,'this.hooks','){',858,'=3D{};this.Interest(["=
ExecuteHooks",this])}',9,'this.hooks[msg',']){',863,']=3D[]}',863,'].push=
(',456,');',505,739,507,'if(',739,'[i]=3D=3Dmsg){',456,760,456,'(',739,'[=
i])}}',467,'},ExecuteHooks:',17,'msg,more){var type=3D((msg =
',106,'Array)?msg[0]:msg);',41,'HOOKS(',858,'[type],[msg],true)}},{',482,=
':{},find:',17,733,9,'SIGNAL.signals[name',']){',898,']=3Dnew =
SIGNAL(name)}',41,898,']}});BASE.Callback=3DBASE.CallBack=3DUSING',';BASE=
.Callback.','Delay=3DDELAY',905,'After=3DAFTER',905,'Queue=3DQUEUE',905,'=
Signal=3DSIGNAL.find;BASE','.Callback.ExecuteHooks','=3DHOOKS})("MathJax"=
);(',17,'d','){var =
a=3D',20,'a){a',22,'c=3D(','navigator.vendor=3D=3D=3D"Apple Computer, =
Inc."&&typeof navigator.vendorSub=3D=3D=3D"undefined','");var f=3D0;var =
g=3D',17,129,1,'styleSheets','&&',1,927,377,'>f){f=3D',1,927,377,'}',9,'h=
){h=3D(',1,355,32,1,'body}}',41,'h};var =
e',24,19,43,35,'j=3D0,h=3De',377,';j<h;j++){','a.Ajax.',369,'e[j])}e=3D[]=
};a.Ajax=3D{loaded:{},loading:{},loadHooks:{},timeout:15*1000,styleDelay:=
1,config:{root:""},STATUS:{OK:1,ERROR:-1},rootPattern:new =
RegExp("^\\\\["+d+"\\\\]"),fileURL:',17,'h',104,'h.replace(this.rootPatte=
rn,this.config.root)},Require:',17,'j,m){m','=3Da.Callback(','m',');var =
k;if(j instanceof Object){for(var h in =
j){}k=3Dh.toUpperCase();j=3Dj[h]}else{k=3Dj.split(/\\./).pop().toUpperCas=
e()}j=3Dthis.fileURL(j);if(this.','loaded[j]){m','(this.loaded[j])}else{'=
,'var =
l=3D{};l[k]=3Dj;this.Load(l,m)}',41,'m},Load:',17,'j,l){l',962,'l',964,'l=
oading[j]){','this.loading','[j].',600,549,'l',392,'this.head=3Dg(this.he=
ad);','if(this.loader[k]){this.loader[k].call(this,j,l',392,454,'load =
files of type "+k)}}',41,'l},LoadHook:',17,'j,k){k',962,'k);if(j =
',106,70,'){',35,207,'j){j=3Dj[h]}}j=3D','this.fileURL(','j);if(this.load=
ed[j]){k',966,9,'this.loadHooks[','j]){',1003,'j]=3D[]}',1003,'j].push(k)=
}',41,'k},loader:{JS:',17,'i,k',28,1,7,361,'var =
j=3D','a.Callback','(["','loadTimeout','",this,i]);',976,'[i]=3D{',600,':=
[k','],message:a.Message.File(','i),timeout:',464,'j,','this.timeout','),=
status:this.STATUS.OK',',script:h};h.onerror=3Dj;h.type=3D"text/javascrip=
t";h.src=3Di;','this.head',363,'h)},CSS:',17,'h,j){var =
i=3D',1,7,'("link");i.rel=3D"stylesheet";','i.type=3D"text/css";','i.href=
=3Dh;',976,'[h]=3D{',600,':[j',1026,'h',1031,'};',1033,363,'i);this.timer=
.create',737,',[this.timer.file,h],i)}},timer:{create:',17,217,'i',962,'i=
);if(','h.nodeName=3D=3D=3D"STYLE','"&&h','.styleSheet&&typeof(','h','.st=
yleSheet.cssText)!=3D=3D"undefined"){i','(this','.STATUS.OK)}else{','if(w=
indow.chrome&&typeof(window.sessionStorage)!=3D=3D"undefined"&&',1061,'")=
{i(this',1067,'if(c){','this.timer.start(this,[this.timer.','checkSafari2=
',',f++,','i],this.styleDelay',392,1073,'checkLength,h,',1076,')}}}',41,'=
i},start:',17,'i,h,j){h',962,'h);h',278,'=3Dthis',278,';h.time=3Dthis.tim=
e;h.STATUS=3Di.STATUS;h',463,'i.timeout',';h.delay=3Dh.total=3D0;',464,'h=
,j)},time:',17,'h){this.total+=3Dthis.delay;this.delay=3DMath.floor(this.=
delay*1.05+5);if(this.total>=3D',1030,'){h(','this.STATUS.ERROR',');',41,=
'1}',41,'0},file:',17,'i,',129,'h<0){',953,1020,'(i',392,953,'loadComplet=
e','(i)}},execute:',43,313,737,315,',this.data[0],this.data[1])},',1074,'=
:',17,'h,i,j){if(h.time(j)){return}if(',1,927,377,'>i&&',1,927,'[i].cssRu=
les','&&',1,927,1133,377,'){j(h',1067,464,'h,h.delay',')}},checkLength:',=
17,'h,k,m){if(h.time(m)){return}var l=3D0;var =
i=3D(k.sheet||k.styleSheet);try{if((i.cssRules||i.rules||[]).length>0){l=3D=
1}}catch(j){','if(j.message.match(/','protected variable|restricted =
URI/)){l=3D1}else{',1146,'Security =
error/)){l=3D1}}}if(l){',464,1018,'([m,h.STATUS.OK]),0',392,464,1142,708,=
1116,':',17,32,999,'h);var =
i=3D',976,'[h];if(','i){a.Message.Clear(i.',775,'clearTimeout(',1093,');i=
f(i.script){if(e',102,'0){',464,'b,0)}e',549,'i.script)}this.loaded[h]=3D=
i.status;delete =
',976,1164,1003,'h]){',1018,'.Queue([a',913,',',1003,'h],i.status],[a',91=
3,',i.',600,',i.status',552,'a',913,'(i.',600,1189,708,1020,':',17,129,97=
6,'[h].timeout','){',1167,976,1202,')}',976,'[h].status=3D',1101,';this.l=
oadError(h);this.',1116,'(h)},loadError:',17,'h){a.Message.Set("File =
failed to load: =
"+h,null,2000)},Styles:',17,'j,k',28,'this.StyleString(','j);if(h=3D=3D=3D=
""){k',962,'k);k()}else{var =
i=3D',1,7,'("style");',1041,982,1033,363,1060,'i',1063,'i',1065,'.styleSh=
eet.cssText=3Dh}else{i',363,1,365,'(h))}k=3Dthis.timer.create',51,'k,i)}'=
,41,'k},StyleString:',17,'m){',142,'(m)=3D=3D=3D"',438,41,'m}var =
j=3D"",n,l;for(n in m){if(m',39,'(n)){',142,' =
m[n]=3D=3D=3D"',438,'j+=3Dn+" {"+','m[n]+"}\\n"}else{if(m[n] =
',106,414,35,'k=3D0;k<m[n].length;k++){l=3D{};l[n]=3Dm[n][k];j+=3D',1219,=
'l)}}else{if(n.substr(0,6)=3D=3D=3D"@media"){',1256,1219,'m[n])+"}\\n"}el=
se{if(m[n]!=3Dnull){l',24,35,207,'m[n]){if(m[n][h]!=3Dnull){l[l',377,']=3D=
h+": "+m[n][h]}}',1256,'l.join("; =
")+"}\\n"}}}}}}',41,'j}}})("MathJax");MathJax.HTML=3D{Element:',17,'c,e,d=
){var =
f=3D',1,7,'(c);if(e){if(e.style){',19,'e.style;e.style=3D{};',35,'g in =
b){if(b',39,'(g)){e.style[g.replace(/-([a-z])/g,this.ucMatch)]=3Db[g]}}}'=
,15,'.Insert(f,e)}if(d){',35,'a=3D0;a<d',377,';a++){if(d[a] =
',106,414,'f',363,'this.Element(','d[a][0],d[a][1],d[a][2]))}else{f',363,=
1,365,'(d[a]))}}}',41,'f},ucMatch:',17,'a,b',104,'b.toUpperCase()},addEle=
ment:',17,'b,a,d,c',104,'b',363,1298,'a,d,c))},TextNode:',17,'a',104,1,36=
5,'(a)},addText:',17,'a,b',104,'a',363,'this.TextNode(b))},Cookie:{prefix=
:"mjx",expires:365,Set:',17,'a,d){var c',24,'if(d){',35,'f in =
d){if(d',39,'(f)){c',549,'f+":"+d[f].',249,'(/&/g,"&&"))}}}',19,'this.pre=
fix+":"+','a+"=3D"+escape(c.join("&;"));if(this.expires){var e=3Dnew =
Date();e.setDate(e.getDate()+this.expires);b+=3D"; =
expires=3D"+e.toGMTString()}',1,'cookie=3Db+"; =
path=3D/"},Get:',17,'c,h){',9,'h){h=3D{}}var g=3Dnew =
RegExp("(?:^|;\\\\s*)"+',1342,'c+"=3D([^;]*)(?:;|$)");',19,'g.exec(',1,'c=
ookie);if(b&&b[1]!=3D=3D""){var =
e=3Dunescape(b[1]).split("&;");',35,'d=3D0,a=3De',377,';d<a;d++){b=3De[d]=
.match(/([^:]+):(.*)/);var =
f=3Db[2].replace(/&&/g,"&");if(f=3D=3D=3D"true"){f=3Dtrue',342,'f=3D=3D=3D=
"false"){f=3Dfalse',342,'f.match(/^-?(\\d+(\\.\\d+)?|\\.\\d+)$/)){f=3Dpar=
seFloat(f)}}}h[b[1]]=3Df}}',41,'h}}};','MathJax.Message','=3D{log:[{}],cu=
rrent:null,textNodeBug:(',922,'")||(window',39,'&&window',39,'("konqueror=
")),styles:{"#','MathJax_Message','":{position:"','fixed",left:"1px",bott=
om:"2px","background-color":"#E6E6E6",border:"1px solid =
#959595','",margin:"0px",padding:"','2px =
8px","z-index":"102",color:"black","font-size":"80%",width:"auto","white-=
space":"nowrap"},"#','MathJax_MSIE_Frame',1375,'absolute",top:0,left:0,wi=
dth:"0px","z-index":101,border:"0px',1377,'0px"}},browsers:{MSIE:',17,'a)=
{','MathJax.Hub.config.styles["#MathJax_Message"].','position=3D"absolute=
";',1366,'.quirks=3D(',1,'compatMode=3D=3D=3D"BackCompat")},Chrome:',17,'=
a){',1386,'bottom=3D"1.5em";',1386,'left=3D"1em"}},Init:',43,9,1,'body',1=
04,'false}if(','this.div','&&',1404,'.parentNode=3D=3Dnull){',1404,'=3D',=
1,2,'("',1374,338,1404,'){this.text=3D',1404,'.firstChild','}}',9,1404,91=
7,1,'body;if(',15,'.Browser.isMSIE){a=3Dthis.frame','=3Dthis.addDiv(',1,'=
body);a.style.',1387,'a.style.border=3Da.style.margin=3Da.style.padding=3D=
"0px";a.style.zIndex=3D"101";a.style.height=3D"0px";a',1427,'a);a.id=3D"'=
,1379,'";','window.attachEvent("','onscroll",','this.MoveFrame',');',1436=
,'onresize",',1438,');',1438,'()}',1404,1427,'a);',1404,'.style.display=3D=
"none";this.text=3D',1404,363,1,365,'(""))}',41,'true},addDiv:',17,'a){',=
19,1,7,'("div");b.id=3D"',1374,'";if(a',1418,'){a.insertBefore(b,a',1418,=
392,'a',363,'b)}',41,'b},MoveFrame:',43,'var =
a=3D(',1366,'.quirks?',1,'body:',1,'documentElement);',19,1366,'.frame;b.=
style.left=3Da.scrollLeft+"px";b.style.top=3Da.scrollTop+"px";b.style.wid=
th=3Da.clientWidth+"px";b=3Db',1418,';b.style.height=3Da.clientHeight+"px=
"},filterText:',17,'a,b){if(',15,'.config.messageStyle=3D=3D=3D"simple"){=
if(a.match(/^Loading /)){',9,976,'){',976,'=3D"Loading =
"}a=3D',976,';',976,'+=3D"."}else{if(a.match(/^Processing =
/)){',9,'this.processing','){',1502,'=3D"Processing =
"}a=3D',1502,';this.processi'],=0A=
  ['ng+=3D"."}}}','return =
','a},Set',':function','(b,c',',a','){if(this.timer){clearTimeout(this.ti=
mer',');','delete =
','this.timeout}if(c','=3D=3Dnull','){c','=3Dthis','.log','.length',';','=
this.log[','c]=3D{}}',16,'c','].text','=3Db;b',12,'.filterText(','b,c);',=
'if(typeof','(',16,'c].next',')=3D=3D=3D"undefined"){',16,28,'=3D','this.=
current',';if(',33,'!=3Dnull){',16,33,'].prev=3D','c}',33,'=3Dc}if(',33,'=
=3D=3D=3Dc&&','MathJax.Hub.config.','messageStyle','!=3D=3D"none"){','if(=
this.','Init()){','if(this.textNodeBug){this.div.innerHTML=3D','b','}else=
{','this.text','.nodeValue','=3Db}','this.div.style.display','=3D"";','if=
(this.status){window.status=3D"";delete =
this.status}}else{','window.status','=3Db;this.status=3Dtrue}}if(a){setTi=
meout(','MathJax.Callback','(["Clear','",this,','c]),a)}',1,'c},Clear',3,=
'(b,a){if','(',16,'b].prev',36,16,16,71,'].next=3D',16,'b].next','}if(',1=
6,78,36,16,16,78,39,16,71,'}if(',33,'=3D=3D=3Db){',33,'=3D',16,78,34,53,'=
){',48,'div','.parentNode',10,'){this.','Init()}if(',33,10,6,')}this.time=
r=3DsetTimeout(',61,'(["Remove",this]),(a||600))}else{',50,16,33,20,52,53=
,54,'=3D',16,33,20,'}}',58,48,'status){',59,'=3D(',33,10,'?"":',16,33,20,=
')}}}',8,16,78,';',8,16,71,'},Remove',3,'(){',53,54,57,56,'=3D"none"},Fil=
e',3,'(b){var =
a=3D','MathJax.','Ajax','.config.','root',34,'b','.substr(0,','a',14,')=3D=
=3D=3Da){b=3D"[MathJax]"+b.substr(a',14,')}',1,'this.Set("Loading =
"+b)},Log',3,'(){var b=3D[];','for(var =
','c=3D1,a',12,13,14,';c<a;c++){b[c]=3D',16,'c',20,'}',1,'b.join("\\n")}}=
;',152,'Hub=3D{config:{root:"",config',':[],','styleSheets',182,'styles',=
':{},jax',182,'extensions',182,'preJax',':null,','postJax',191,'displayAl=
ign:"center",displayIndent:"0",','preRemoveClass',':"MathJax_Preview",sho=
wProcessingMessages:true,',46,':"normal",','delayStartupUntil',':"none",'=
,'skipStartupTypeset',':false,','preProcessors',182,'inputJax',':{},','ou=
tputJax',':{},','menuSettings',':{zoom:"None",CTRL:false,ALT:false,CMD:fa=
lse,Shift:false,zscale:"200%",renderer:"",font:"Auto",context:"MathJax"},=
','errorSettings',':{message:["[Math Processing =
Error]"],style:{color:"#CC0000","font-style":"italic"}}},','processUpdate=
Time',':500,signal:',61,'.Signal("','Hub"),','Config',3,'(a){this','.Inse=
rt(','this.config',',a);if(','this.config.','Augment',103,225,'(',224,225=
,')}},','Register',':{PreProcessor',3,'(a){',45,203,'.push(',61,'(a))},',=
'MessageHook',3,'(){',1,152,'Hub','.signal.',241,'.apply(',152,'Hub','.si=
gnal,arguments)},','StartupHook',3,'(){',1,'MathJax.Hub.Startup',247,241,=
249,257,252,'LoadHook',3,'(){',1,152,'Ajax.',263,249,152,'Ajax,','argumen=
ts',231,'getAllJax',3,'(','e){var =
c=3D[],b=3Dthis.elementScripts(e);for(var =
d=3D0,a=3Db.length;d<a;d++){if(b[d].MathJax&&b[d].MathJax.elementJax','){=
c.push(b[d].','MathJax.elementJax',')}}',1,'c},getJaxByType',3,'(f,',278,=
'&&b[d].',280,'.mimeType=3D=3D=3Df){c.push(b[d].',280,')}}',1,'c},getJaxB=
yInputType',3,'(f,',278,287,'type',287,'type.replace(/ =
*;(.|\\','s)*/,"")=3D=3D=3Df){c.push(b[d].',280,')}}',1,'c},getJaxFor',3,=
'(a){','if(typeof(a)=3D=3D=3D"string"){a=3Ddocument.getElementById(a',')}=
','if(a.MathJax){',1,'a.',280,'}',1,'null},isJax',3,'(a){',308,')}','if(a=
.tagName!=3Dnull&&a.tagName.toLowerCase()=3D=3D=3D"script"){',310,'return=
(a','.MathJax.state','=3D=3D=3D',152,'ElementJax.STATE','.PROCESSED','?1:=
-1)}if(a.type&&',224,205,'[a.',300,'s)*/,"")]){return =
-1}}',1,'0},Queue',3,'(){',1,'this.queue','.Push',249,340,',',273,')},','=
Typeset',3,4,'){if(!',152,'isReady){',1,'null}var =
','a','=3Dthis.elementCallback(',24,1,61,'.Queue(["','PreProcess',63,'a.e=
lement','],["','Process',63,363,']).','Push(a.callback)},',361,3,4,'){var=
 a',356,24,1,61,360,'Post",this.signal',',"Begin =
',361,'"],["','ExecuteHooks",',61,',(','arguments.callee.disabled','?[]:'=
,224,203,'),',363,',true','],["Post",this.signal,"End =
',361,'"]).',369,365,3,'(a,b){',1,'this.takeAction("',365,'",a,b)},','Upd=
ate',3,399,1,401,404,403,'Reprocess',3,399,1,401,411,403,'takeAction',3,'=
(d,c,e){var b',356,'c,e);var =
a=3D[];',1,61,360,'Clear",this.signal],["',379,',["Begin =
"+','d,b.element',']],["','prepareScripts',63,429,',a],["','processScript=
s',63,'a],["',379,',["End =
"+',429,']]).Push(b.callback)},','scriptAction',':{',365,3,'(a){},',404,3=
,151,'b.',280,34,'a&&a.','originalText','=3D=3D=3D(b.text=3D=3D""?b.inner=
HTML:b.text)){b',324,'=3Da.STATE',328,52,'a','.outputJax.Remove(','a);b',=
324,'=3Da','.STATE.UPDATE','}},',411,3,151,'b.',280,34,'a){a',461,'a);b',=
324,'=3Da',465,'}}},',431,3,'(h,e,f){if(',386,'){return}var =
b=3Dthis.','elementScripts','(e);var =
g=3D',152,327,';',168,'d=3D0,a=3Db',14,';d<a;d++){var =
c=3Db[d];if(c.type&&',224,205,'[c.',300,'n)*/,"")]){if(c.MathJax&&c',324,=
'!=3D=3Dg.PENDING',103,442,'[h](c)}if(!c.MathJax){c.MathJax=3D{state:g.PE=
NDING}}if(c',324,'!=3D=3Dg',328,'){f.push(c)}}}},','checkScriptSiblings',=
3,'(a){if(a.MathJax&&a.',152,'checked',484,'config;var =
g=3Da','.previousSibling',34,'g&&g.nodeName=3D=3D"#text"){var d,f;var =
c=3Da.nextSibling',34,'c&&c.nodeName!=3D"#text"){c=3Dnull}if','(b.preJax'=
,'){',25,520,')=3D=3D=3D"string"){b.',190,'=3Dnew =
RegExp',520,'+"$")}d=3Dg',54,'.match',520,')}if','(b.postJax','&&c){',25,=
533,524,192,526,'("^"+b.',192,')}f=3Dc',54,'.match',533,')}if(d&&(!b.',19=
2,'||f)){g',54,'=3Dg',54,'.replace',520,',(d',14,'>1?d[1]:""));g=3Dnull}i=
f(f&&(!b.',190,'||d)){c',54,'=3Dc',54,552,533,',(f',14,'>1?f[1]:""))}if(g=
&&!g',54,'.match(/\\S/)){','g=3Dg',515,'}}if(b.',195,'&&g&&g.className=3D=
=3Db.',195,'){try{g.innerHTML=3D""}catch(e){}g.style.display=3D"none"}',3=
10,'a.',152,512,'=3D1}},',435,3,'(h,b,d){if(',386,'){',1,354,'q,o=3D',152=
,327,';var p=3D',224,205,',c=3D',224,207,';try{if(!b){b=3D','new =
Date().getTime','()}var =
j=3D0,l,f;while(j<h',14,'){l=3Dh[j];if(!l){continue}f=3Dl',515,34,'f&&f.c=
lassName=3D=3D=3D"','MathJax_Error','"){f',101,'.removeChild(f)}var =
k=3Dl.',300,'s)*/,"");if(!l.MathJax||l',324,'=3D=3D=3Do',328,'){continue}=
if(!l.',280,'||l',324,'=3D=3D=3Do.UPDATE',103,508,'(l);q=3Dp[k].','Transl=
ate(l);if(typeof =
q=3D=3D=3D"function"){','if(q.called){continue}this.RestartAfter(q)}','q.=
Attach(l,p[k])}var =
a=3Dl.',280,';if(!c[a.mimeType]){l',324,'=3Do.UPDATE;','throw Error("No =
','output jax registered for =
"+a.mimeType)}a.',207,'=3Dc[a.mimeType][0];q=3Da.',207,'.',622,'l',324,62=
8,623,'l',324,'=3Do',328,';this',247,'Post(["New =
Math",a.inputID]);j++;if(',598,'()-b>this.',213,'&&j<h',14,'){b=3D0;this.=
','RestartAfter','(',61,'.Delay(1))}}}catch(g){if(!g.restart){if(!',224,2=
11,'.message){throw g}this.formatError(l,g);j++}if(!d){d=3D0}var =
e=3DMath.floor((d+j)/(d+h',14,')*100);d+=3Dj',34,224,'showProcessingMessa=
ges){MathJax.Message.Set("Processing ','math: =
"+e+"%",0)}',1,61,'.After(["',435,63,'h.slice(j),b,d],g.restart)}if((d||h=
',14,')&&',224,664,'Math: =
100%",0);',152,'Message.','Clear(0)}',1,'null},formatError',3,'(a,c){var =
b=3D',152,'HTML.Element("span",{className:"',605,'"},',224,211,'.message)=
;a',101,'.insertBefore(b,a);this.lastError=3Dc},',653,3,'(a){throw =
this',221,'Error("restart"),{restart:',61,'(a)})},elementCallback',3,399,=
'if(b',10,'&&(a ','instanceof Array','||typeof =
a=3D=3D=3D"','function','")){b=3Da;a=3D','document.','body',52,'if(a=3D=3D=
null){a=3Ddocument.body}','else{',308,')}}}if(!a){',629,'such =
element")}if(!b){b=3D{}}return{element:a,callback:b}},',485,3,'(a){',308,=
')}',712,321,'return[a]}',1,'a.','getElementsByTagName("','script")},Inse=
rt',3,'(c,a){',168,'b in a){if(a','.hasOwnProperty','(b)){',25,' =
a[b]=3D=3D=3D"object"&&!(a[b] ',705,')&&(','typeof =
c[b]=3D=3D=3D"','object"||',740,707,'")){this',221,'c[b],a[b])}else{c[b]=3D=
a[b]}}}',1,'c}};',152,'Hub',221,45,185,',',152,678,185,');',152,'Hub',221=
,45,185,',{".',605,'":',45,211,'.style});',152,'Extension=3D{};',257,'=3D=
{script:"",queue:',61,'.Queue(),','signal:',61,216,'Startup','"),',218,3,=
'(){','this.queue.Push(["Post",this.signal,"Begin ',218,'"]);var =
a=3D',152,'HTML.Cookie','.Get("user");if(a.URL||a.',218,'){if(confirm("Ma=
thJax has found a user-configuration cookie that includes code to be =
run.  Do you want to run it?\\n\\n(You should press Cancel unless you =
set up the cookie =
yourself.)")){if(a.URL){',340,'.Push(["Require",MathJax.Ajax,','a.URL])}i=
f(a.',218,'){',152,'userConfig=3Dnew =
Function(a.',218,')}}else{',152,788,'.Set("user",{})}}',48,'script',568,3=
40,'.Push(this.script+";\\n1;")}else{',340,793,'this.URL("config","',152,=
'js")])}',1,340,'.Push([',707,4,'){if(b.',199,'.isCallback){',1,'b.',199,=
'}if(b.',199,'=3D=3D=3D"onload"){',1,'c}',1,707,'(){}},',152,'Hub.config,=
this.onload','],[function(','b){',1,'b.','loadArray','(',45,'config,"conf=
ig",null,true)},this',393,218,'"])},','Cookie',3,'(){',1,784,846,382,'Get=
",',152,788,',"menu",',45,209,835,'f,c){if(f','.renderer','){var =
d=3D"output/"+f',861,';',168,'e=3D0,b=3Dc',14,',a=3D0;e<b;e++){if(c[e]=3D=
=3D=3Dd){c.splice(e,1);a=3D0;break}if(c[e].substr(0,7)=3D=3D=3D"output/")=
{a=3D(a?0:e+1)}}c.unshift(d);if(a){c.splice(a,1)}}},',45,209,',',45,'jax'=
,393,846,845,'Styles',3,'(){',1,784,877,382,839,63,45,183,',"config',382,=
877,'",',152,272,45,185,393,877,845,'Jax',3,'(){',1,784,'Jax',382,839,63,=
45,'jax,"jax","config.js",true',393,'Jax',845,'Extensions',3,'(){',1,784,=
913,382,839,63,45,188,',"',188,382,379,',"End =
',913,845,'onLoad',3,'(a){var =
b',12,'.onload=3D',61,'(','function(){',257,247,'Post("onLoad")});if(','w=
indow.addEventListener','){',942,'("load",b,false)}else{if(','window.atta=
chEvent','){',946,'("onload",b)}else{window.onload=3Db}}',1,'b},',347,3,3=
99,'if(',45,201,'){',1,707,'(){}}',1,784,347,382,347,'",',152,'Hub,a,b',3=
93,347,845,'URL',3,68,'(!a.match(/^([a-z]+:\\/\\/|\\[|\\/)/)){a=3D"[MathJ=
ax]/"+b+"/"+a}',1,'a},',839,3,'(b,f,c,a){if(b){if(!(b =
',705,')){b=3D[b]}if(b',14,'){var =
h=3D',61,775,'j=3D{},e;',168,'g=3D0,d=3Db',14,';g<d;g++){e',12,'.URL(f,b[=
g]);if(c){e+=3D"/"+c}if(a){h',793,'e,j])}else{h.Push(',152,'Ajax.Require(=
e,j))}}',1,'h.Push({})}}',1,'null}};(',707,'(d','){var =
b=3Dwindow[','d],e=3D"["+d+"]";var =
c=3Db.Hub,a=3Db.',272,'f=3Db.Callback;var =
g=3D',152,'Object','.Subclass','({require',191,'config:{},Init',3,'(i,h){=
','if(',273,14,'=3D=3D=3D0){',1,'this}return(','this.constructor',1011,'(=
i,h))()},',225,3,'(k,j','){var i=3D',1023,',h=3D{};if(k',36,168,'l in =
k){if(k',734,'(l)){',25,' =
k[l]=3D=3D=3D"',707,'"){','i.protoFunction','(l,k[l])}else{h[l]=3Dk[l]}}}=
if(k.toString!=3D=3Di','.prototype.','toString&&k.toString!=3D=3D{}.toStr=
ing){',1041,'("toString",k.toString)}}c',221,'i.prototype,h);i.',225,'(nu=
ll,j);',1,'this},','Translate',3,'(h){',1023,1043,1053,12,'.noTranslate;'=
,1,'a.Require(','this.directory','+"/jax.js','")},noTranslate',3,'(h){thr=
ow Error(',1063,1064,' failed to redefine the ',1053,'() =
method")},',232,3,'(h){},',218,3,'(){c',221,222,',(c.config[this.name]||{=
}));if(',224,225,103,225,'(',224,225,231,779,3,'(){},','loadComplete',3,'=
(n){if(n=3D=3D=3D"jax.js"){var =
j=3Df.Queue();','j.Push(["Post",c.Startup.signal,this.name+" Jax =
',218,'"]);','j.Push(["',218,'",this]);',1096,'Require"]);',48,'require){=
var k',12,'.require;if(!(k =
',705,')){k=3D[k]}',168,'l=3D0,h=3Dk',14,';l<h;l++){j.Push(',1062,'k[l]))=
}',1099,839,'",',257,',',224,'require,"config"])}',1096,779,'"]);',1099,7=
79,'",this]);',1096,'Ready"]);',1,1099,1093,'",a,',1063,'+"/"+n])}else{',=
1,'a.',1093,'(',1063,'+"/"+n)}}},{name:"unknown",version:"1.0",directory:=
e+"/jax",extensionDir:e+"/',188,'"});b.InputJax=3Dg',1011,'({',232,3,'(h)=
{if(!','b.Hub',154,205,'){c',154,205,'=3D{}}c',154,205,'[h]=3Dthis}},{','=
version:"1.0",directory:g.directory+"/','input','",extensionDir:g.extensi=
onDir','});b.OutputJax=3Dg',1011,'({',232,3,1149,'c.config.outputJax','){=
',1169,'=3D{}}if(!',1169,'[h]){',1169,'[h]=3D[];if(!c',154,209,861,'){c',=
154,209,861,12,'.name}}',1169,'[h].push(this)},Remove',3,'(h){}},{',1160,=
'output',1162,',fontDir:e+(b.isPacked?"":"/..")+"/fonts"});','b.ElementJa=
x','=3Dg',1011,'({Init',3,1016,1,1023,1011,'(i,h)},',205,191,207,191,'inp=
utID',191,454,':"",mimeType:"",Text',3,'(j,k){','var =
h=3Dthis.SourceElement();','if(','h.firstChild','){if(',1216,'.nodeName!=3D=
=3D"#text"){h.text=3Dj',52,1216,54,'=3Dj}}else{try{h.innerHTML=3Dj}catch(=
i){h.text=3Dj}}h',324,12,465,';',1,'c.',404,'(h,k)},',411,3,'(i){',1214,'=
h',324,12,465,';',1,'c.',411,'(h,i)},Remove',3,'(){this',461,'this);c',24=
7,'Post(["Remove =
Math",this.inputID]);this.Detach()},SourceElement',3,'(){',1,709,'getElem=
entById(this.inputID)},Attach',3,'(i,j){var =
h=3Di.',280,34,'i',324,'=3D=3D=3Dthis',465,'){h.Clone(this)}else{h=3Di.',=
280,12,34,'i.id',103,'inputID=3D',1268,52,1268,12,'.',1270,1194,'.GetID()=
;this.newID=3D1}}h.',454,'=3D(i.text=3D=3D""?i.innerHTML:i.text);h.',205,=
'=3Dj},Detach',3,'(){',1214,'if(!h){return}try{',8,'h.MathJax}catch(i){h.=
MathJax=3Dnull}',48,'newID){h.id=3D""}},Clone',3,'(h){var i;for(i in =
this){if(!this',734,'(i)){continue}if(typeof(','h','[i])=3D=3D=3D"undefin=
ed','"&&i!=3D=3D"newID"){',8,'this[i]}}for(i in =
h){if(!this',734,1294,'this',1296,'"||(this[i]!=3D=3Dh[i]&&i!=3D=3D"input=
ID")){this[i]=3Dh[i]}}}},{',1160,'element',1162,',ID:0,STATE:{PENDING:1,P=
ROCESSED:2,UPDATE:3},GetID',3,'(){this.ID++;return"MathJax-Element-"+this=
.ID},Subclass',3,'(){var =
h=3Dg',1011,249,'this,',273,');h.',1093,12,1043,1093,';',1,'h}});',1194,1=
043,'STATE=3Db.',327,'})("MathJax");(',707,'(l',1005,'l];if(!b){b=3Dwindo=
w[l]=3D{}}var d=3Db.Hub;var n=3Dd.',779,';var m=3Dd.config;var =
k=3D',709,728,'head")[0];if(!k){k=3D',709,'childNodes[0]}var =
f=3D(',709,'documentElement||document).',728,'script");var =
e',526,'("(^|/)"+l+"\\\\.js$");',168,'g=3Df',14,'-1;g>=3D0;g--){if(f[g].s=
rc.match(e)){n.script=3Df[g].innerHTML;m.root=3Df[g].src',552,'(/(^|\\/)[=
^\\/]*$/,"");break}}b.Ajax.config=3Dm;var =
j=3D{isMac',':(navigator.platform.substr(0,3)=3D=3D=3D"','Mac"),isPC',135=
3,'Win"),isMSIE:(',709,'all!=3Dnull&&!','window.opera','),isFirefox:(',70=
9,'ATTRIBUTE_NODE!=3Dnull&&window.directories!=3Dnull),isSafari',':(navig=
ator.vendor!=3Dnull&&navigator.vendor.match(/','Apple/)!=3Dnull&&!navigat=
or.omniWebString),isOpera:(',1359,'!=3Dnull&&',1359,'.version!=3Dnull),is=
Chrome',1363,'Google/)!=3Dnull),isKonqueror:(window',734,'&&window',734,'=
("konqueror")),versionAtLeast',3,'(r){var =
q=3D(this','.version).split','(".");r=3D(','new =
String','(r)).split(".");',168,'s=3D0,p=3Dr',14,';s<p;s++){if(q[s]!=3Dr[s=
]){',1,'parseInt(q[s]||"0")>=3DparseInt(r[s])}}',1,'true},Select',3,'(p',=
1029,'p[d.Browser];if(i){',1,'i(d.Browser)}',1,'null}};var =
a=3Dnavigator.userAgent',552,'(/^Mozilla\\/(\\d+\\.)+\\d+ =
/,"").replace(/[a-z][-a-z0-9._: ]+\\/\\d+[^ ]*-[^ ]*\\.([a-z][a-z])?\\d+ =
/i,"").replace(/Gentoo |Ubuntu\\/(\\d+\\.)*\\d+ (\\([^)]*\\) =
)?/,"");d.Browser=3Dd',221,'d',221,1379,'("Unknown"),{version:"0.0"}),j);=
',168,'h in =
j){if(j',734,'(h)){if(j[h]&&h',158,'2)=3D=3D=3D"is"){h=3Dh.slice(2);if(h=3D=
=3D=3D"Mac"||h=3D=3D=3D"PC"){continue}d.Browser=3Dd',221,1379,'(h),j);var=
 =
o',526,'(".*(Version',')/((?:\\\\d+\\\\.)+\\\\d','+)|.*("+h+")"+(h=3D=3D"=
MSIE"?" ":"/")+"((?:\\\\d+\\\\.)*\\\\d+)|(?:^|\\\\(| )([a-z][-a-z0-9._: =
]+|WebKit',1415,'+)");var =
c=3Do.exec(a)||["","","","unknown","0.0"];d.Browser.name=3D(c[1]=3D=3D"Ve=
rsion"?h:(c[3]||c[5]));d.Browser.version=3Dc[2]||c[4]||c[6];break}}}','d.=
Browser.Select','({Safari',3,'(p',1029,'parseInt((String(p',1377,'("."))[=
0]);if(i>=3D526){','p.version=3D"','4.0','"}else{if(i','>=3D525){',1427,'=
3.1',1429,'>500){',1427,'3.0',1429,'>400){',1427,'2.0',1429,'>85){',1427,=
'1.0"}}}}}},Firefox',3,'(p){if(p.version=3D=3D=3D"0.0"&&navigator.product=
=3D=3D=3D"Gecko"&&','navigator.productSub',1029,1447,158,'8);if(i>=3D"200=
90630"){',1427,'3.5',1429,'>=3D"20080617"){',1427,'3.0',1429,'>=3D"200610=
24"){',1427,'2.0"}}}}},Opera',3,'(i){i.version=3Dopera.version()}});',141=
9,'(',152,678,'browsers);d.queue=3Db.Callback.Queue();d.queue.Push(["','P=
ost",n.signal,"','Begin',382,218,'",n],["',846,1473,877,1473,'Jax',1473,9=
13,'",n],n.onLoad(),',938,152,'isReady=3Dtrue},["',347,1473,1469,'End"])}=
)("MathJax")}};']=0A=
]);=0A=
=0A=

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/js/func_string.js

function strToLower(formElement,edit_disabled){=0A=
	if(edit_disabled=3D=3D'disabled'){return;}=0A=
	eval('string=3D'+formElement);=0A=
	fletter=3Dstring.substring(0,1);=0A=
	string=3Dstring.substring(1);=0A=
	string=3Dstring.toLowerCase();=0A=
	string=3Dfletter+string;=0A=
	eval(formElement+'=3Dstring');=0A=
}=0A=
=0A=
function strRemEnters(formElement,edit_disabled){=0A=
	if(edit_disabled=3D=3D'disabled'){return;}=0A=
	eval('string=3D'+formElement);=0A=
	string=3Dstring.replace(/\s+/g,' ');=0A=
	eval(formElement+'=3Dstring');=0A=
}=0A=
=0A=
function CheckIP(string){=0A=
	if(string.match(/^[0-9]+\.[-0-9]+\.[-*0-9]+\.[-*0-9]+$/)=3D=3Dnull){=0A=
		alert('=CD=E5=E2=E5=F0=ED=FB=E9 IP =E0=E4=F0=E5=F1!');=0A=
		return(false);=0A=
	}=0A=
	return(true);=0A=
}=0A=
=0A=
=0A=
=0A=
function getRadioValue(eItem){=0A=
	var tWOS;=0A=
	=0A=
	if(!eItem){return tWOS;}	=0A=
=0A=
	L=3DeItem.length;=0A=
	if(L=3D=3Dundefined){=0A=
		if(eItem.checked){=0A=
			tWOS=3DeItem.value;=0A=
		}=0A=
		return tWOS;=0A=
	}	=0A=
=0A=
	for(n=3D0;n<L;n++){=0A=
		tRadio=3DeItem[n];=0A=
		if(tRadio.checked){=0A=
			tWOS=3DtRadio.value;=0A=
			break;=0A=
		}=0A=
	}=0A=
	return(tWOS);=0A=
}=0A=
=0A=
=0A=
function setRadioValue(eItem,value){=0A=
	for(n=3D0;n<eItem.length;n++){=0A=
		tRadio=3DeItem[n];=0A=
		if(tRadio.value=3D=3Dvalue){=0A=
			tRadio.checked=3Dtrue;=0A=
			break;=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
=0A=
function getSelectValue(eItem){=0A=
	var tWOS=3Dfalse;=0A=
	if(!eItem){return false;}=0A=
	for(n=3D0;n<eItem.length;n++){=0A=
		tSelect=3DeItem[n];=0A=
		if(tSelect.selected){=0A=
			var tWOS=3DtSelect.value;=0A=
			break;=0A=
		}=0A=
	}=0A=
	return(tWOS);=0A=
}=0A=
=0A=
=0A=
function setSelectValue(eItem,value){=0A=
	if(!eItem){return false;}=0A=
	for(n=3D0;n<eItem.length;n++){=0A=
		tSelect=3DeItem[n];=0A=
		//alert(tSelect.value);=0A=
		if(tSelect.value=3D=3Dvalue){=0A=
			tSelect.selected=3Dtrue;=0A=
			break;=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
=0A=
function calculate(string,symbol){=0A=
if((symbol=3D=3D'') || !(symbol)){return(0);}=0A=
if((string=3D=3D'') || !(string)){return(0);}=0A=
var i;=0A=
var N=3D0;=0A=
=0A=
while(i !=3D -1){=0A=
i=3Dstring.indexOf(symbol);=0A=
string=3Dstring.substr(i+symbol.length);=0A=
N++;}=0A=
N=3DN-1;=0A=
return(N);=0A=
}=0A=
=0A=
function CheckPairedTags(string,oTag,cTag,area){=0A=
NoTag=3Dcalculate(string,oTag);=0A=
NcTag=3Dcalculate(string,cTag);=0A=
if(NoTag!=3DNcTag){=0A=
	alert(oTag+'-'+cTag+' tags in '+area+' are not paired!');=0A=
	return(false);=0A=
}=0A=
return(true);=0A=
}=0A=
=0A=
// Regular Expression for E-mail checking (to use in fsubmit() function)=0A=
var =
regEmail=3D/^(\w[-.\w]*\@[-a-z0-9]+(\.[-a-z0-9]+)*\.(cat|com|edu|net|org|=
gov|[a-z][a-z]|info))(\s*[,;]{1,1}\s*\w[-.\w]*\@[-a-z0-9]+(\.[-a-z0-9]+)*=
\.(cat|com|edu|net|org|gov|[a-z][a-z]|info))*$/i;=0A=
var =
regEmailNames=3D/^[-a-zA-Z=B8=A8=E0-=FF=C0-=DF.\s]*<?(\w[-.\w]*\@[-a-z0-9=
]+(\.[-a-z0-9]+)*\.(cat|com|edu|net|org|gov|[a-z][a-z]|info)[,; =
]?)+>?$/i;=0A=
//var =
regWWW=3D/^(http:\/\/)?([-\w]+\.)+(cat|com|edu|net|org|gov|[a-z][a-z]|inf=
o)([/~][-\w.]+)*$/i;=0A=
var =
regWWW=3D/^(http:\/\/)?([-\w]+\.)+(cat|com|edu|net|org|gov|info|[a-z][a-z=
])/i;=0A=
// Regular Expression for Numbers checking (to use in fsubmit() function)=0A=
var regNumbers=3D/^[-+\d.() ,;]+$/i;=0A=
var regPhone=3D/^[-+a-z=E0-=FF\d.() ,;*]+$/i;=0A=
var regString=3D/^[-_0-9A-Z=C0-=DF=E0-=FF %@();,.=B8=A8#&\\{}:~\/]+$/i;=0A=
var regYears=3D/^\d{4,4}$/i; =0A=
var regVols=3D/^\d{1,3}$/i; =0A=
var regLogin=3D/^[-_0-9a-zA-Z@.]+$/;=0A=
var regPersonName=3D/^[-a-zA-Z=E0-=FF=C0-=DF=B8=A8 ]{2,}$/;=0A=
var regJRNID=3D/^[_a-z0-9]{2,5}$/;=0A=
var regFileName=3D/^[-0-9a-z_.]+$/i;=0A=
var regRangeNumbers=3D/^[-0-9]+$/=0A=
=0A=
function CheckStringReg(string,regVar,area){=0A=
string=3Dtrim(string);	=0A=
if(string!=3D''){=0A=
	if(string.match(regVar)=3D=3Dnull){=0A=
		alert('=CD=E5=E4=EE=EF=F3=F1=F2=E8=EC=EE=E5 =E7=ED=E0=F7=E5=ED=E8=E5 =
=EF=EE=EB=FF '+area);=0A=
		return(false);=0A=
	}=0A=
}=0A=
return(true);=0A=
}=0A=
=0A=
function CheckIllegalSymbols(string,area){=0A=
	return CheckStringReg(string,regString,area);=0A=
}=0A=
=0A=
=0A=
=0A=
=0A=
function CheckLowLetters(string,area){=0A=
PERMITTEDSYMBOLS=3D'qwertyuiopasdfghjklzxcvbnm';=0A=
for(i=3D0;i<string.length;i++){=0A=
y=3Di+1;=0A=
sym=3Dstring.substring(i,y);=0A=
if(PERMITTEDSYMBOLS.indexOf(sym,0) =3D=3D -1){=0A=
	alert('Illegal symbol ['+sym+'] in '+area+'!');=0A=
	return(false);=0A=
}=0A=
}=0A=
return(true);=0A=
}=0A=
=0A=
=0A=
function CheckForWrongSymbols(string,area){=0A=
	maxcode=3D255;=0A=
	for(i=3D0;i<string.length;i++){=0A=
		y=3Di+1;=0A=
		sym=3Dstring.substring(i,y);=0A=
		//alert(sym.charCodeAt(0));=0A=
		//if(sym.charCodeAt(0) > maxcode){=0A=
		//	alert('Illegal symbol ['+sym+'] in '+area+'!');=0A=
		//	return(false);=0A=
		//}=0A=
	}=0A=
	return(true);=0A=
}=0A=
=0A=
=0A=
=0A=
=0A=
 =0A=
=0A=
=0A=
function GlobalStringChange(string){=0A=
string=3Dstandart_tags(string);=0A=
return(string);=0A=
}=0A=
=0A=
function GlobalStringCheck(string,area){=0A=
if(!CheckAllTags(string,area)){return(false);}=0A=
if(!CheckPairedTags(string,'<sub>','</sub>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'<sup>','</sup>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'<i>','</i>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'<b>','</b>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'<bo>','</bo>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'<ol>','</ol>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'<ul>','</ul>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'<u>','</u>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'<s>','</s>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'<nobr>','</nobr>',area)){return(false);}=0A=
if(!CheckPairedTags(string,'[IMG]','[/IMG]',area)){return(false);}=0A=
//if(!CheckIllegalSymbols(string,area)){return(false);}=0A=
//if(!CheckAllSGMLs(string,area)){return(false);}	// check &nbsp; etc... =
!!!=0A=
return(true);=0A=
}=0A=
=0A=
function SimpleStringChange(string){=0A=
string=3Dstandart_symbols(string);=0A=
return(string);=0A=
}=0A=
=0A=
function SimpleStringCheck(string,area){=0A=
if(!CheckIllegalSymbols(string,area)){return(false);}=0A=
return(true);=0A=
}=0A=
=0A=
function standart_symbols(string){=0A=
var newstring;=0A=
string=3Dreplace(string,"'","&#39;");=0A=
string=3Dreplace(string,'"',"&#34;");=0A=
return(string);=0A=
}=0A=
=0A=
function instandart_symbols(string){=0A=
var newstring;=0A=
string=3Dreplace(string,"&#39;","\'");=0A=
string=3Dreplace(string,"&#34;","\"");=0A=
string=3Dreplace(string,"&nbsp;"," ");=0A=
return(string);=0A=
}=0A=
=0A=
=0A=
=0A=
function standart_tags(string){=0A=
var str_b=3D'<';=0A=
var str_e=3D'>';=0A=
=0A=
var newstring=3D'';=0A=
var i,y;=0A=
=0A=
i=3Dstring.indexOf(str_b);=0A=
while(i !=3D -1 && y !=3D -1){=0A=
str1=3Dstring.substr(0,i);=0A=
string=3Dstring.substr(i);=0A=
y=3Dstring.indexOf(str_e);=0A=
str2=3Dstring.substr(0,y).toLowerCase();=0A=
string=3Dstring.substr(y);=0A=
newstring+=3Dstr1+str2;=0A=
i=3Dstring.indexOf(str_b);=0A=
}=0A=
newstring+=3Dstring.substr(0);=0A=
return(newstring);=0A=
}=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
function replace(string,text_old,text_new){=0A=
var newstring=3D'';=0A=
if((string=3D=3D'') || !(string)){return('');}=0A=
if((text_old=3D=3D'') || !(text_old)){return(string);}=0A=
=0A=
i=3Dstring.indexOf(text_old);=0A=
while(i !=3D -1){=0A=
newstring+=3Dstring.substr(0,i)+text_new;=0A=
string=3Dstring.substr(i+text_old.length);=0A=
i=3Dstring.indexOf(text_old);=0A=
}=0A=
newstring+=3Dstring.substr(0);=0A=
=0A=
return(newstring);=0A=
}=0A=
=0A=
function explode(separator,string){=0A=
var arr=3Dnew Array();=0A=
=0A=
i=3Dstring.indexOf(separator);=0A=
j=3D0;=0A=
while(i !=3D -1){ =0A=
arr[j]=3Dstring.substr(0,i);=0A=
string=3Dstring.substr(i+separator.length);=0A=
i=3Dstring.indexOf(separator);=0A=
j++;=0A=
}=0A=
arr[j]=3Dstring.substr(0);=0A=
return(arr);=0A=
}=0A=
=0A=
=0A=
function trim(area){ =0A=
while(area.indexOf(' ',0)=3D=3D0){=0A=
nlen=3Darea.length-1;=0A=
area=3Darea.substr(1,nlen);=0A=
}=0A=
=0A=
nlen=3Darea.length-1;=0A=
if(nlen>=3D0){=0A=
while(area.lastIndexOf(' ',nlen)=3D=3Dnlen){=0A=
nlen=3Darea.length-1;=0A=
area=3Darea.substr(0,nlen);=0A=
nlen=3Darea.length-1;=0A=
}=0A=
}=0A=
=0A=
return(area); =0A=
}=0A=
=0A=
=0A=
function basename(string,excludeExt){=0A=
lastPos=3Dstring.lastIndexOf('\\');=0A=
string=3Dstring.substring(lastPos+1,string.length-excludeExt.length);=0A=
return string;}=0A=
=0A=
=0A=
function getFileExtention(string){=0A=
	string=3Dstring.toLowerCase();=0A=
	lastPos=3Dstring.lastIndexOf('.');=0A=
	string=3Dstring.substring(lastPos+1);=0A=
	return string;=0A=
}=0A=
=0A=
=0A=
function in_array(STR,ARR){=0A=
for(ss=3D0;ss<ARR.length;ss++){if(STR=3D=3DARR[ss]){return(true);}}=0A=
return(false);=0A=
}=0A=
=0A=
=0A=
	var MAX_SGML_LENGTH=3D30;	// maximal length of legal expressions=0A=
=0A=
=0A=
	function CheckSGML(checkString,area){=0A=
	// !!!! sgmlSym does not contain all symbols !!!!!=0A=
	if(checkString.charAt(0)!=3D'&'){return(true);}=0A=
	if(!in_array(checkString,sgmlSym)){alert('Illegal expression =
['+checkString+'] in '+area+'!');return(false);}=0A=
	return(true);=0A=
	}=0A=
=0A=
	function CheckAllSGMLs(mystring,area){=0A=
	var sgmlstr=3D'';=0A=
	var activ=3D0;=0A=
	for(i=3D0;i<mystring.length;i++){=0A=
		y=3Di+1;=0A=
		sym=3Dmystring.substring(i,y);=0A=
		if(sym!=3D'&' && activ=3D=3D0){continue;}=0A=
		activ=3D1;=0A=
		if(sym!=3D';' && =
sgmlstr.length<MAX_SGML_LENGTH){sgmlstr=3Dsgmlstr+sym;continue;}=0A=
		sgmlstr=3Dsgmlstr+sym;=0A=
		if(!CheckSGML(sgmlstr,area)){return(false);}=0A=
		activ=3D0;=0A=
		sgmlstr=3D'';=0A=
	}	=0A=
	if(!CheckSGML(sgmlstr,area)){return(false);}=0A=
	return(true);=0A=
	}=0A=
=0A=
=0A=
	function CheckTag(checkTagString,area){=0A=
	if(checkTagString.charAt(0)!=3D'<'){return(true);}=0A=
	var arrTag=3Dnew Array();=0A=
	arrTag[0]=3D'<sub>';=0A=
	arrTag[1]=3D'</sub>';=0A=
	arrTag[2]=3D'<i>';=0A=
	arrTag[3]=3D'</i>';=0A=
	arrTag[4]=3D'<b>';=0A=
	arrTag[5]=3D'</b>';=0A=
	arrTag[6]=3D'<bo>';=0A=
	arrTag[7]=3D'</bo>';=0A=
	arrTag[8]=3D'<ol>';=0A=
	arrTag[9]=3D'</ol>';=0A=
	arrTag[10]=3D'<ul>';=0A=
	arrTag[11]=3D'</ul>';=0A=
	arrTag[12]=3D'<br>';=0A=
	arrTag[13]=3D'<li>';=0A=
	arrTag[14]=3D'<nobr>';=0A=
	arrTag[15]=3D'<p>';=0A=
	arrTag[16]=3D'</p>';=0A=
	arrTag[17]=3D'<s>';=0A=
	arrTag[18]=3D'</s>';=0A=
	arrTag[19]=3D'<u>';=0A=
	arrTag[20]=3D'</u>';=0A=
	arrTag[21]=3D'<sup>';=0A=
	arrTag[22]=3D'</sup>';=0A=
	arrTag[23]=3D'</font>';=0A=
	arrTag[24]=3D'</nobr>';=0A=
	arrTag[25]=3D"<font size=3D-1>";=0A=
	arrTag[26]=3D"<font face=3D'times new roman'>";=0A=
	arrTag[27]=3D"<font face=3D'Times New Roman'>";=0A=
	arrTag[28]=3D"<font face=3DSymbol>";=0A=
	arrTag[29]=3D"<font face=3Dsymbol>";=0A=
	if(!in_array(checkTagString,arrTag)){alert('Illegal expression =
['+checkTagString+'] in '+area+'!');return(false);}=0A=
	return(true);=0A=
	}=0A=
=0A=
=0A=
	function CheckAllTags(Tstring,area){=0A=
	var tagstr=3D'';=0A=
	var activ=3D0;=0A=
	for(i=3D0;i<Tstring.length;i++){=0A=
		y=3Di+1;=0A=
		sym=3DTstring.substring(i,y);=0A=
		if(sym!=3D'<' && activ=3D=3D0){continue;}=0A=
		activ=3D1;=0A=
		if(sym!=3D'>' && =
tagstr.length<MAX_SGML_LENGTH){tagstr=3Dtagstr+sym;continue;}=0A=
		tagstr=3Dtagstr+sym;=0A=
		if(!CheckTag(tagstr,area)){return(false);}=0A=
		activ=3D0;=0A=
		tagstr=3D'';=0A=
	}	=0A=
	if(!CheckTag(tagstr,area)){return(false);}=0A=
	return(true);=0A=
	}=0A=
=0A=
	function string_prepare_to_search(string){=0A=
		string=3Dreplace(string,'=B8','=E5');=0A=
		string=3Dreplace(string,"'",'');=0A=
		return string;=0A=
	}=0A=
=0A=

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/js/func_dates.js?v=1

	function format_date(indexM,D,Y){=0A=
	if(indexM=3D=3D'-1' || D=3D=3D'' || Y=3D=3D''){return(' ');}=0A=
	return(monthN[indexM]+'/'+D+'/'+Y);=0A=
	}=0A=
=0A=
	function check_date(indexM,D,Y,status){=0A=
	if(status=3D=3D'disabled'){return(true);}=0A=
=0A=
	D=3DparseInt(D,10);=0A=
	Y=3DparseInt(Y,10);=0A=
=0A=
	var thisDate=3Dnew Date();=0A=
	yearMax=3D9999;=0A=
	yearMin=3D1753;=0A=
	dayMin=3D1;=0A=
=0A=
	switch(indexM){=0A=
		case -1:=0A=
			dayMax=3D0;	// not selected=0A=
			break;=0A=
		case 1:=0A=
=0A=
			if(Y % 4 =3D=3D 0 && Y % 100 !=3D 0 || Y % 400 =3D=3D 0){=0A=
				dayMax=3D29;      // Feb visok=0A=
			}=0A=
			else{=0A=
				dayMax=3D28;	// Feb=0A=
			}=0A=
=0A=
			break;=0A=
		case 3:=0A=
			dayMax=3D30;	// Apr=0A=
			break;=0A=
		case 5:=0A=
			dayMax=3D30;	// Jun=0A=
			break;=0A=
		case 8:=0A=
			dayMax=3D30;	// Sep=0A=
			break;=0A=
		case 10:=0A=
			dayMax=3D30;	// Nov=0A=
			break;=0A=
		default:=0A=
			dayMax=3D31;=0A=
			break;=0A=
	}=0A=
	=0A=
	if((Y >=3D yearMin) && (Y <=3D yearMax) && (D >=3D dayMin) && (D <=3D =
dayMax)){return(true);}=0A=
	=0A=
	return(false);=0A=
	}=0A=
=0A=
=0A=
	function getMonthByName(month){=0A=
		for(i=3D1;i<=3D12;i++){=0A=
			ii=3Di-1; =0A=
			tMonth=3Dg_Calendar.months[ii];=0A=
			if(month=3D=3DtMonth.substring(0,3)){return(i);}=0A=
		}=0A=
		return false;	=0A=
	}=0A=
=0A=
=0A=
	function set_date_lang(dateString){=0A=
		var argv =3D set_date_lang.arguments;=0A=
		if(argv.length=3D=3D2){=0A=
			tform=3Dargv[1];=0A=
		}=0A=
		else{=0A=
			tform=3D0;=0A=
		}=0A=
=0A=
=0A=
=0A=
		eval('var =
monthSI=3Ddocument.forms['+tform+'].'+dateString+'_month.selectedIndex');=0A=
		eval('var =
daySI=3Ddocument.forms['+tform+'].'+dateString+'_day.selectedIndex');=0A=
=0A=
		eval('var =
month=3Ddocument.forms['+tform+'].'+dateString+'_month.value');=0A=
		eval('var day=3Ddocument.forms['+tform+'].'+dateString+'_day.value');=0A=
		eval('var year=3Ddocument.forms['+tform+'].'+dateString+'_year.value');=0A=
=0A=
		if(monthSI < 0 ||  daySI < 0 || !year.match(/^\d{4,4}$/)){=0A=
			return(false);=0A=
		}=0A=
=0A=
		if(!check_date(monthSI,day,year,'enabled')){=0A=
			return(false);=0A=
		}=0A=
=0A=
		=
eval('document.forms['+tform+'].'+dateString+'.value=3D"'+month+'/'+day+'=
/'+year+'"');=0A=
=0A=
		return(true);=0A=
	}=0A=
=0A=
=0A=
	var regFullDate=3D/^\d{1,2}\.\d{1,2}\.\d{4,4}$/; =0A=
	var regYearDate=3D/^\d{4,4}$/; =0A=
=0A=
	function set_date_cal(dateString){=0A=
	var argv =3D set_date_cal.arguments;=0A=
	if(argv.length=3D=3D2){=0A=
		tform=3Dargv[1];=0A=
	}=0A=
	else{=0A=
		tform=3D0;=0A=
	}=0A=
=0A=
	=0A=
	eval('var DATEFIELD=3Ddocument.forms['+tform+'].'+dateString);=0A=
	if(!DATEFIELD){return true;}		=0A=
=0A=
	var dS=3DDATEFIELD.value;=0A=
	//eval('var dS=3Ddocument.forms['+tform+'].'+dateString+'.value;');=0A=
=0A=
	if(dS=3D=3D''){=0A=
		ClearDate_cal(dateString,tform);=0A=
		return true;=0A=
	}=0A=
=0A=
=0A=
	if(dS.match(regFullDate)=3D=3Dnull && dS.match(regYearDate)=3D=3Dnull){=0A=
		alert('=CD=E5=EA=EE=F0=F0=E5=EA=F2=ED=EE =E2=E2=E5=E4=E5=ED=E0 =
=E4=E0=F2=E0');=0A=
		eval('document.forms['+tform+'].'+dateString+'.focus()');=0A=
		return false;=0A=
	}=0A=
=0A=
	if(dS.match(regYearDate)){=0A=
		day=3D0;=0A=
		month=3D0;=0A=
		year=3DdS;=0A=
	}=0A=
=0A=
=0A=
	if(dS.match(regFullDate)){=0A=
		arrD=3Dnew Array();=0A=
		arrD=3Dexplode('.',dS);=0A=
		//if(arrD.length!=3D3){=0A=
		//	alert('=CD=E5=EA=EE=F0=F0=E5=EA=F2=ED=EE =E2=E2=E5=E4=E5=ED=E0 =
=E4=E0=F2=E0');=0A=
		//	eval('document.forms['+tform+'].'+dateString+'.focus()');=0A=
		//	return false;=0A=
		//}=0A=
=0A=
		day=3DparseInt(arrD[0],10);=0A=
		month=3DgetMonthByName(arrD[1]);=0A=
		year=3DparseInt(arrD[2],10);=0A=
=0A=
		mmonth=3Dmonth-1;=0A=
	=0A=
		if(day=3D=3D'NaN' || !month || year=3D=3D'NaN' || =
!check_date(mmonth,day,year,'enabled')){=0A=
			alert('=CD=E5=EA=EE=F0=F0=E5=EA=F2=ED=EE =E2=E2=E5=E4=E5=ED=E0 =
=E4=E0=F2=E0');=0A=
			eval('document.forms['+tform+'].'+dateString+'.focus()');=0A=
			return false;=0A=
		}=0A=
	}=0A=
=0A=
	eval('document.forms['+tform+'].'+dateString+'_month.value=3D'+month);=0A=
	eval('document.forms['+tform+'].'+dateString+'_day.value=3D'+day);=0A=
	eval('document.forms['+tform+'].'+dateString+'_year.value=3D'+year);=0A=
=0A=
	return true;=0A=
	}	=0A=
=0A=
=0A=
	function compare_dates_cal(dateString1,dateString2){=0A=
=0A=
	eval('D1=3Ddocument.forms[0].'+dateString1+'_day.value');=0A=
	eval('M1=3Ddocument.forms[0].'+dateString1+'_month.value');=0A=
	eval('Y1=3Ddocument.forms[0].'+dateString1+'_year.value');=0A=
=0A=
	eval('D2=3Ddocument.forms[0].'+dateString2+'_day.value');=0A=
	eval('M2=3Ddocument.forms[0].'+dateString2+'_month.value');=0A=
	eval('Y2=3Ddocument.forms[0].'+dateString2+'_year.value');=0A=
=0A=
	D1=3Dnew Date(parseInt(Y1,10),parseInt(M1,10)-1,parseInt(D1,10));=0A=
	D2=3Dnew Date(parseInt(Y2,10),parseInt(M2,10)-1,parseInt(D2,10));=0A=
=0A=
	if((!isNaN(D1) && isNaN(D2)) || (isNaN(D1) && !isNaN(D2))){=0A=
		alert('Please enter a correct period or clear the dates!');=0A=
		return false;=0A=
	}	=0A=
=0A=
	if((!isNaN(D1) && !isNaN(D2)) && (D1.getTime() > D2.getTime())){=0A=
		alert('Please enter a correct period or clear the dates!');=0A=
		return false;=0A=
	}	=0A=
=0A=
	if(isNaN(D1) && isNaN(D2)){=0A=
		ClearDate(dateString1);=0A=
		ClearDate(dateString2);=0A=
	}=0A=
=0A=
	return true;=0A=
	}=0A=
=0A=
	function ClearDate(dateString){=0A=
	var argv =3D ClearDate.arguments;=0A=
	if(argv.length=3D=3D2){=0A=
		tform=3Dargv[1];=0A=
	}=0A=
	else{=0A=
		tform=3D0;=0A=
	}=0A=
	=
eval('document.forms['+tform+'].'+dateString+'_month.selectedIndex=3D-1')=
;=0A=
	eval('document.forms['+tform+'].'+dateString+'_day.value=3D\'\'');=0A=
	eval('document.forms['+tform+'].'+dateString+'_year.value=3D\'\'');=0A=
	}=0A=
	=0A=
	function SetDateMode_cal(mode){=0A=
	if(mode=3D=3D'enable'){EDIT_DISABLED_BOOL=3D0;}=0A=
	if(mode=3D=3D'disable'){EDIT_DISABLED_BOOL=3D1;}=0A=
	}=0A=
	=0A=
	function ClearDate_cal(dateString){=0A=
	var argv =3D ClearDate_cal.arguments;=0A=
	if(argv.length=3D=3D2){=0A=
		tform=3Dargv[1];=0A=
	}=0A=
	else{=0A=
		tform=3D0;=0A=
	}=0A=
	if(EDIT_DISABLED_BOOL){return;}=0A=
	eval('document.forms['+tform+'].'+dateString+'.value=3D\'\'');=0A=
	eval('document.forms['+tform+'].'+dateString+'_month.value=3D\'\'');=0A=
	eval('document.forms['+tform+'].'+dateString+'_day.value=3D\'\'');=0A=
	eval('document.forms['+tform+'].'+dateString+'_year.value=3D\'\'');=0A=
	}=0A=
	=0A=

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/js/libmenu.js

var timeOutFlag;=0A=
var timeOutLength=3D70;=0A=
var allMenus=3Dnew Array();=0A=
var numMenus=3D0;=0A=
var currentMenu=3D'';=0A=
var keyP=3D0;=0A=
var keyP_handler=3D'disabled';=0A=
=0A=
//---	Browser Detection =
-------------------------------------------------------------------------=
--------=0A=
DOM=3D(document.getElementById) ? 1 : 0;=0A=
NS4=3D(document.layers) ? 1 : 0;=0A=
NS7=3D((navigator.userAgent.indexOf("Gecko") > -1) && =
(navigator.userAgent.indexOf("Mozilla/5") > -1 || =
navigator.userAgent.indexOf("Mozilla 5") > -1) && =
navigator.userAgent.indexOf("MSIE") =3D=3D -1) ? 1 : 0;=0A=
Konqueror=3D(navigator.userAgent.indexOf("Konqueror") > -1) ? 1 : 0;=0A=
//Konqueror2=3D(navigator.userAgent.indexOf("Konqueror 2") > -1 || =
navigator.userAgent.indexOf("Konqueror/2") > -1) ? 1 : 0;=0A=
//Konqueror3=3D(navigator.userAgent.indexOf("Konqueror 3") > -1 || =
navigator.userAgent.indexOf("Konqueror/3") > -1) ? 1 : 0;=0A=
Opera=3D(navigator.userAgent.indexOf("Opera") > -1) ? 1 : 0;=0A=
//Opera5=3D(navigator.userAgent.indexOf("Opera 5") > -1 || =
navigator.userAgent.indexOf("Opera/5") > -1) ? 1 : 0;=0A=
//Opera6=3D(navigator.userAgent.indexOf("Opera 6") > -1 || =
navigator.userAgent.indexOf("Opera/6") > -1) ? 1 : 0;=0A=
IE=3D(document.all) ? 1 : 0;=0A=
//IE4=3DIE && !DOM;=0A=
=0A=
//-----------------------------------------------------------------------=
----------------------------------=0A=
=0A=
=0A=
	=0A=
function initMDown(eItem,wherefunc,funcname){=0A=
	if(DOM && NS7){=0A=
		eItem.addEventListener('mouseup',eval(wherefunc+'.'+funcname),false);=0A=
	}=0A=
	else if(DOM && IE){=0A=
		eItem.attachEvent('onmouseup',eval(wherefunc+'.'+funcname));=0A=
	}=0A=
	else {=0A=
		onmouseup=3Deval(wherefunc+'.'+funcname);=0A=
	}=0A=
}=0A=
=0A=
=0A=
function isMDown(e){=0A=
	e =3D e || window.Event || window.event;=0A=
	button=3De.button || e.which;=0A=
=0A=
	if(keyP=3D=3D16 || button=3D=3D2 || button=3D=3D3){	return(true);}=0A=
	else{					return(false);}=0A=
} =0A=
=0A=
=0A=
=0A=
function setKeyP(e){=0A=
	e =3D e || window.Event || window.event;=0A=
	keyP=3De.which || e.keyCode;=0A=
	if(keyP_handler=3D=3D'enabled'){handle_keyP();}	=0A=
}=0A=
=0A=
function clearKeyP(e){=0A=
	keyP=3D0;=0A=
}=0A=
=0A=
=0A=
if(DOM && NS7){=0A=
	document.addEventListener('keydown',setKeyP,false);=0A=
	document.addEventListener('keyup',clearKeyP,false);=0A=
}=0A=
=0A=
else if(DOM && IE){=0A=
	document.attachEvent('onkeydown',setKeyP);=0A=
	document.attachEvent('onkeyup',clearKeyP);=0A=
}=0A=
=0A=
else {=0A=
	document.onkeydown=3DsetKeyP;=0A=
	document.onkeyup=3DclearKeyP;=0A=
}=0A=
=0A=
=0A=
=0A=
function doOption(menu,menucontent){=0A=
showMenu(menu,false);=0A=
alert(menu+' -> '+menucontent);=0A=
}=0A=
=0A=
=0A=
function activateOption(eItem,on){=0A=
=0A=
if(on){=0A=
	eItem.style.background=3D"darkblue";=0A=
	eItem.style.color=3D"white";=0A=
}=0A=
else{=0A=
	eItem.style.background=3D"#cccccc";=0A=
	eItem.style.color=3D"black";=0A=
}=0A=
=0A=
}=0A=
=0A=
function showMenu(menu,on,posstyle){=0A=
=0A=
if(DOM){=0A=
	maintableObj=3Ddocument.getElementById('maintable');=0A=
	object=3Ddocument.getElementById(menu);=0A=
	eItem=3Ddocument.getElementById('top'+menu);=0A=
}=0A=
else{=0A=
	maintableObj=3Ddocument.all['maintable'];=0A=
	object=3Ddocument.all[menu];=0A=
	eItem=3Ddocument.all['top'+menu];=0A=
}=0A=
=0A=
chPosY=3DmaintableObj.offsetTop+maintableObj.offsetHeight+1;=0A=
chPosX=3DmaintableObj.offsetLeft+1;=0A=
=0A=
if(on && posstyle=3D=3D'inset'){=0A=
	if(DOM){=0A=
		object.style.left=3DeItem.offsetLeft+chPosX+'px';=0A=
		object.style.top=3DeItem.offsetTop+chPosY+'px';=0A=
	}=0A=
	else{=0A=
		object.style.pixelLeft=3DeItem.offsetLeft+chPosX;=0A=
		object.style.pixelTop=3DeItem.offsetTop+chPosY;=0A=
	}=0A=
	object.style.visibility=3D"visible";=0A=
	eItem.style.color=3D"black";=0A=
	eItem.style.borderRight=3D"1px solid white";=0A=
	eItem.style.borderBottom=3D"1px solid white";=0A=
	eItem.style.borderLeft=3D"1px solid black";=0A=
	eItem.style.borderTop=3D"1px solid black";=0A=
	currentMenu=3Dmenu;=0A=
}=0A=
else if(on && posstyle=3D=3D'outset'){=0A=
	object.style.visibility=3D"hidden";=0A=
	eItem.style.color=3D"black";=0A=
	eItem.style.borderRight=3D"1px solid black";=0A=
	eItem.style.borderBottom=3D"1px solid black";=0A=
	eItem.style.borderLeft=3D"1px solid white";=0A=
	eItem.style.borderTop=3D"1px solid white";=0A=
	currentMenu=3Dmenu;=0A=
}=0A=
else{=0A=
	object.style.visibility=3D"hidden";=0A=
	eItem.style.color=3D"black";=0A=
	eItem.style.borderRight=3D"1px solid #cccccc";=0A=
	eItem.style.borderBottom=3D"1px solid #cccccc";=0A=
	eItem.style.borderLeft=3D"1px solid #cccccc";=0A=
	eItem.style.borderTop=3D"1px solid #cccccc";=0A=
	currentMenu=3D'';=0A=
}=0A=
=0A=
}=0A=
=0A=
function showMenuOLD(menu,on,posstyle){=0A=
=0A=
maintableObj=3Ddocument.all['maintable'];=0A=
object=3Ddocument.all[menu];=0A=
eItem=3Ddocument.all['top'+menu];=0A=
=0A=
chPosY=3DmaintableObj.offsetTop+maintableObj.offsetHeight+1;=0A=
chPosX=3DmaintableObj.offsetLeft+1;=0A=
=0A=
if(on && posstyle=3D=3D'inset'){=0A=
	object.style.pixelLeft=3DeItem.offsetLeft+chPosX;=0A=
	object.style.pixelTop=3DeItem.offsetTop+chPosY;=0A=
	object.style.visibility=3D"visible";=0A=
	eItem.style.color=3D"black";=0A=
	eItem.style.borderRight=3D"1px solid white";=0A=
	eItem.style.borderBottom=3D"1px solid white";=0A=
	eItem.style.borderLeft=3D"1px solid black";=0A=
	eItem.style.borderTop=3D"1px solid black";=0A=
}=0A=
else if(on && posstyle=3D=3D'outset'){=0A=
	object.style.visibility=3D"hidden";=0A=
	eItem.style.color=3D"black";=0A=
	eItem.style.borderRight=3D"1px solid black";=0A=
	eItem.style.borderBottom=3D"1px solid black";=0A=
	eItem.style.borderLeft=3D"1px solid white";=0A=
	eItem.style.borderTop=3D"1px solid white";=0A=
}=0A=
else{=0A=
	object.style.visibility=3D"hidden";=0A=
	eItem.style.color=3D"black";=0A=
	eItem.style.borderRight=3D"1px solid #cccccc";=0A=
	eItem.style.borderBottom=3D"1px solid #cccccc";=0A=
	eItem.style.borderLeft=3D"1px solid #cccccc";=0A=
	eItem.style.borderTop=3D"1px solid #cccccc";=0A=
}=0A=
=0A=
}=0A=
=0A=
=0A=
function showPopUpMenu(menu,on,x,y){=0A=
=0A=
if(DOM){object=3Ddocument.getElementById(menu);}=0A=
else{	object=3Ddocument.all[menu];}=0A=
=0A=
if(on){=0A=
=0A=
	if(DOM){=0A=
		object.style.left=3Dx+'px';=0A=
		object.style.top=3Dy+'px';=0A=
	}=0A=
	else{=0A=
		object.style.pixelLeft=3Dx;=0A=
		object.style.pixelTop=3Dy;=0A=
	}=0A=
	object.style.visibility=3D"visible";=0A=
}=0A=
else{=0A=
	object.style.visibility=3D"hidden";=0A=
}=0A=
}=0A=
=0A=
function showPopUpMenuOLD(menu,on,x,y){=0A=
=0A=
object=3Ddocument.all[menu];=0A=
if(on){=0A=
	object.style.pixelLeft=3Dx;=0A=
	object.style.pixelTop=3Dy;=0A=
	object.style.visibility=3D"visible";=0A=
}=0A=
else{=0A=
	object.style.visibility=3D"hidden";=0A=
}=0A=
}=0A=
=0A=
=0A=
function closeMenu(menu,on){=0A=
code=3D'showMenu(\''+menu+'\','+on+',\'inset\')';=0A=
timeOutFlag =3D setTimeout(code,timeOutLength);=0A=
}=0A=
=0A=
function closePopUpMenu(menu,on){=0A=
code=3D'showPopUpMenu(\''+menu+'\','+on+',-1,-1)';=0A=
timeOutFlag =3D setTimeout(code,timeOutLength);=0A=
}=0A=
=0A=
function getOffsetElementX(eItem){=0A=
var vx=3D0;=0A=
if(DOM){=0A=
	obj=3Ddocument.getElementById(eItem);=0A=
	vx=3Dobj.offsetLeft;=0A=
	while(obj.tagName!=3D'BODY' && obj.offsetParent){=0A=
		obj=3Dobj.offsetParent;=0A=
		vx=3Dvx+obj.offsetLeft;=0A=
	}=0A=
}=0A=
else{=0A=
	obj=3Ddocument.all[eItem];=0A=
	vx=3Dobj.offsetLeft;=0A=
	while(obj.tagName!=3D'BODY'){=0A=
		obj=3Dobj.offsetParent;=0A=
		vx=3Dvx+obj.offsetLeft;=0A=
	}=0A=
}=0A=
return(vx);=0A=
}=0A=
=0A=
function getOffsetElementY(eItem){=0A=
var vy=3D0;=0A=
=0A=
if(DOM){=0A=
	obj=3Ddocument.getElementById(eItem);=0A=
	vy=3Dobj.offsetTop;=0A=
	while(obj.tagName!=3D'BODY' && obj.offsetParent){=0A=
		obj=3Dobj.offsetParent;=0A=
		vy=3Dvy+obj.offsetTop;	=0A=
	}=0A=
}=0A=
else{=0A=
	obj=3Ddocument.all[eItem];=0A=
	vy=3Dobj.offsetTop;=0A=
	while(obj.tagName!=3D'BODY'){=0A=
		obj=3Dobj.offsetParent;=0A=
		vy=3Dvy+obj.offsetTop;	=0A=
	}=0A=
}=0A=
return(vy);=0A=
}=0A=
=0A=
=0A=
function getWindowHeight(){=0A=
	//if (document.documentElement && =
document.documentElement.clientHeight){=0A=
	//	window_height =3D document.documentElement.clientHeight;=0A=
	//}=0A=
	//else =0A=
	if (document.body && IE){=0A=
		window_height =3D document.body.clientHeight;=0A=
	}=0A=
	else{=0A=
		window_height=3Dtop.innerHeight;=0A=
	}=0A=
	=0A=
	return(window_height);=0A=
}=0A=
=0A=
function getWindowWidth(){=0A=
	//if (document.documentElement && document.documentElement.clientWidth){=0A=
	//	window_width =3D document.documentElement.clientWidth;=0A=
	//}=0A=
	//else =0A=
	if (document.body && IE){=0A=
		window_width =3D document.body.clientWidth;=0A=
	}=0A=
	else{=0A=
		window_width=3Dtop.innerWidth;=0A=
	}=0A=
	=0A=
	return(window_width);=0A=
}=0A=
=0A=

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: http://www.mathnet.ru/js/md5.js

/*
 *  md5.jvs 1.0b 27/06/96
 *
 * Javascript implementation of the RSA Data Security, Inc. MD5
 * Message-Digest Algorithm.
 *
 * Copyright (c) 1996 Henri Torgemane. All Rights Reserved.
 *
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for any purposes and without
 * fee is hereby granted provided that this copyright notice
 * appears in all copies. 
 *
 * Of course, this soft is provided "as is" without express or implied
 * warranty of any kind.
 *
 * $Id: md5.js,v 1.2 1998/11/22 14:27:42 sas Exp $
 *
 */



function array(n) {
  for(i=0;i<n;i++) this[i]=0;
  this.length=n;
}

/* Some basic logical functions had to be rewritten because of a bug in
 * Javascript.. Just try to compute 0xffffffff >> 4 with it..
 * Of course, these functions are slower than the original would be, but
 * at least, they work!
 */

function integer(n) { return n%(0xffffffff+1); }

function shr(a,b) {
  a=integer(a);
  b=integer(b);
  if (a-0x80000000>=0) {
    a=a%0x80000000;
    a>>=b;
    a+=0x40000000>>(b-1);
  } else
    a>>=b;
  return a;
}

function shl1(a) {
  a=a%0x80000000;
  if (a&0x40000000==0x40000000)
  {
    a-=0x40000000;  
    a*=2;
    a+=0x80000000;
  } else
    a*=2;
  return a;
}

function shl(a,b) {
  a=integer(a);
  b=integer(b);
  for (var i=0;i<b;i++) a=shl1(a);
  return a;
}

function and(a,b) {
  a=integer(a);
  b=integer(b);
  var t1=(a-0x80000000);
  var t2=(b-0x80000000);
  if (t1>=0) 
    if (t2>=0) 
      return ((t1&t2)+0x80000000);
    else
      return (t1&b);
  else
    if (t2>=0)
      return (a&t2);
    else
      return (a&b);  
}

function or(a,b) {
  a=integer(a);
  b=integer(b);
  var t1=(a-0x80000000);
  var t2=(b-0x80000000);
  if (t1>=0) 
    if (t2>=0) 
      return ((t1|t2)+0x80000000);
    else
      return ((t1|b)+0x80000000);
  else
    if (t2>=0)
      return ((a|t2)+0x80000000);
    else
      return (a|b);  
}

function xor(a,b) {
  a=integer(a);
  b=integer(b);
  var t1=(a-0x80000000);
  var t2=(b-0x80000000);
  if (t1>=0) 
    if (t2>=0) 
      return (t1^t2);
    else
      return ((t1^b)+0x80000000);
  else
    if (t2>=0)
      return ((a^t2)+0x80000000);
    else
      return (a^b);  
}

function not(a) {
  a=integer(a);
  return (0xffffffff-a);
}

/* Here begin the real algorithm */

    var state = new array(4); 
    var count = new array(2);
	count[0] = 0;
	count[1] = 0;                     
    var buffer = new array(64); 
    var transformBuffer = new array(16); 
    var digestBits = new array(16);

    var S11 = 7;
    var S12 = 12;
    var S13 = 17;
    var S14 = 22;
    var S21 = 5;
    var S22 = 9;
    var S23 = 14;
    var S24 = 20;
    var S31 = 4;
    var S32 = 11;
    var S33 = 16;
    var S34 = 23;
    var S41 = 6;
    var S42 = 10;
    var S43 = 15;
    var S44 = 21;

    function F(x,y,z) {
	return or(and(x,y),and(not(x),z));
    }

    function G(x,y,z) {
	return or(and(x,z),and(y,not(z)));
    }

    function H(x,y,z) {
	return xor(xor(x,y),z);
    }

    function I(x,y,z) {
	return xor(y ,or(x , not(z)));
    }

    function rotateLeft(a,n) {
	return or(shl(a, n),(shr(a,(32 - n))));
    }

    function FF(a,b,c,d,x,s,ac) {
        a = a+F(b, c, d) + x + ac;
	a = rotateLeft(a, s);
	a = a+b;
	return a;
    }

    function GG(a,b,c,d,x,s,ac) {
	a = a+G(b, c, d) +x + ac;
	a = rotateLeft(a, s);
	a = a+b;
	return a;
    }

    function HH(a,b,c,d,x,s,ac) {
	a = a+H(b, c, d) + x + ac;
	a = rotateLeft(a, s);
	a = a+b;
	return a;
    }

    function II(a,b,c,d,x,s,ac) {
	a = a+I(b, c, d) + x + ac;
	a = rotateLeft(a, s);
	a = a+b;
	return a;
    }

    function transform(buf,offset) { 
	var a=0, b=0, c=0, d=0; 
	var x = transformBuffer;
	
	a = state[0];
	b = state[1];
	c = state[2];
	d = state[3];
	
	for (i = 0; i < 16; i++) {
	    x[i] = and(buf[i*4+offset],0xff);
	    for (j = 1; j < 4; j++) {
		x[i]+=shl(and(buf[i*4+j+offset] ,0xff), j * 8);
	    }
	}

	/* Round 1 */
	a = FF ( a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
	d = FF ( d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
	c = FF ( c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
	b = FF ( b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
	a = FF ( a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
	d = FF ( d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
	c = FF ( c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
	b = FF ( b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
	a = FF ( a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
	d = FF ( d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
	c = FF ( c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
	b = FF ( b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
	a = FF ( a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
	d = FF ( d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
	c = FF ( c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
	b = FF ( b, c, d, a, x[15], S14, 0x49b40821); /* 16 */

	/* Round 2 */
	a = GG ( a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
	d = GG ( d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
	c = GG ( c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
	b = GG ( b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
	a = GG ( a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
	d = GG ( d, a, b, c, x[10], S22,  0x2441453); /* 22 */
	c = GG ( c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
	b = GG ( b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
	a = GG ( a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
	d = GG ( d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
	c = GG ( c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
	b = GG ( b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
	a = GG ( a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
	d = GG ( d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
	c = GG ( c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
	b = GG ( b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */

	/* Round 3 */
	a = HH ( a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
	d = HH ( d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
	c = HH ( c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
	b = HH ( b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
	a = HH ( a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
	d = HH ( d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
	c = HH ( c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
	b = HH ( b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
	a = HH ( a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
	d = HH ( d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
	c = HH ( c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
	b = HH ( b, c, d, a, x[ 6], S34,  0x4881d05); /* 44 */
	a = HH ( a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
	d = HH ( d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
	c = HH ( c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
	b = HH ( b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */

	/* Round 4 */
	a = II ( a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
	d = II ( d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
	c = II ( c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
	b = II ( b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
	a = II ( a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
	d = II ( d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
	c = II ( c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
	b = II ( b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
	a = II ( a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
	d = II ( d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
	c = II ( c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
	b = II ( b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
	a = II ( a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
	d = II ( d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
	c = II ( c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
	b = II ( b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */

	state[0] +=a;
	state[1] +=b;
	state[2] +=c;
	state[3] +=d;

    }

    function init() {
	count[0]=count[1] = 0;
	state[0] = 0x67452301;
	state[1] = 0xefcdab89;
	state[2] = 0x98badcfe;
	state[3] = 0x10325476;
	for (i = 0; i < digestBits.length; i++)
	    digestBits[i] = 0;
    }

    function update(b) { 
	var index,i;
	
	index = and(shr(count[0],3) , 0x3f);
	if (count[0]<0xffffffff-7) 
	  count[0] += 8;
        else {
	  count[1]++;
	  count[0]-=0xffffffff+1;
          count[0]+=8;
        }
	buffer[index] = and(b,0xff);
	if (index  >= 63) {
	    transform(buffer, 0);
	}
    }

    function finish() {
	var bits = new array(8);
	var	padding; 
	var	i=0, index=0, padLen=0;

	for (i = 0; i < 4; i++) {
	    bits[i] = and(shr(count[0],(i * 8)), 0xff);
	}
        for (i = 0; i < 4; i++) {
	    bits[i+4]=and(shr(count[1],(i * 8)), 0xff);
	}
	index = and(shr(count[0], 3) ,0x3f);
	padLen = (index < 56) ? (56 - index) : (120 - index);
	padding = new array(64); 
	padding[0] = 0x80;
        for (i=0;i<padLen;i++)
	  update(padding[i]);
        for (i=0;i<8;i++) 
	  update(bits[i]);

	for (i = 0; i < 4; i++) {
	    for (j = 0; j < 4; j++) {
		digestBits[i*4+j] = and(shr(state[i], (j * 8)) , 0xff);
	    }
	} 
    }

/* End of the MD5 algorithm */

function hexa(n) {
 var hexa_h = "0123456789abcdef";
 var hexa_c=""; 
 var hexa_m=n;
 for (hexa_i=0;hexa_i<8;hexa_i++) {
   hexa_c=hexa_h.charAt(Math.abs(hexa_m)%16)+hexa_c;
   hexa_m=Math.floor(hexa_m/16);
 }
 return hexa_c;
}


var ascii="01234567890123456789012345678901" +
          " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"+
          "[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";

function MD5(entree) 
{
 var l,s,k,ka,kb,kc,kd;

 init();
 for (k=0;k<entree.length;k++) {
   l=entree.charAt(k);
   update(ascii.lastIndexOf(l));
 }
 finish();
 ka=kb=kc=kd=0;
 for (i=0;i<4;i++) ka+=shl(digestBits[15-i], (i*8));
 for (i=4;i<8;i++) kb+=shl(digestBits[15-i], ((i-4)*8));
 for (i=8;i<12;i++) kc+=shl(digestBits[15-i], ((i-8)*8));
 for (i=12;i<16;i++) kd+=shl(digestBits[15-i], ((i-12)*8));
 s=hexa(kd)+hexa(kc)+hexa(kb)+hexa(ka);
 return s; 
}

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/js/prototype.js

/*  Prototype JavaScript framework, version 1.6.1=0A=
 *  (c) 2005-2009 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.1',=0A=
=0A=
  Browser: (function(){=0A=
    var ua =3D navigator.userAgent;=0A=
    var isOpera =3D Object.prototype.toString.call(window.opera) =3D=3D =
'[object Opera]';=0A=
    return {=0A=
      IE:             !!window.attachEvent && !isOpera,=0A=
      Opera:          isOpera,=0A=
      WebKit:         ua.indexOf('AppleWebKit/') > -1,=0A=
      Gecko:          ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') =
=3D=3D=3D -1,=0A=
      MobileSafari:   /Apple.*Mobile.*Safari/.test(ua)=0A=
    }=0A=
  })(),=0A=
=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate,=0A=
    SelectorsAPI: !!document.querySelector,=0A=
    ElementExtensions: (function() {=0A=
      var constructor =3D window.Element || window.HTMLElement;=0A=
      return !!(constructor && constructor.prototype);=0A=
    })(),=0A=
    SpecificElementExtensions: (function() {=0A=
      if (typeof window.HTMLDivElement !=3D=3D 'undefined')=0A=
        return true;=0A=
=0A=
      var div =3D document.createElement('div');=0A=
      var form =3D document.createElement('form');=0A=
      var isSupported =3D false;=0A=
=0A=
      if (div['__proto__'] && (div['__proto__'] !=3D=3D =
form['__proto__'])) {=0A=
        isSupported =3D true;=0A=
      }=0A=
=0A=
      div =3D form =3D null;=0A=
=0A=
      return isSupported;=0A=
    })()=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=
=0A=
var Abstract =3D { };=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=
/* Based on Alex Arnell's inheritance implementation. */=0A=
=0A=
var Class =3D (function() {=0A=
  function subclass() {};=0A=
  function create() {=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=
      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=
    return klass;=0A=
  }=0A=
=0A=
  function addMethods(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=
      if (source.toString !=3D Object.prototype.toString)=0A=
        properties.push("toString");=0A=
      if (source.valueOf !=3D Object.prototype.valueOf)=0A=
        properties.push("valueOf");=0A=
    }=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;=0A=
        value =3D (function(m) {=0A=
          return function() { return ancestor[m].apply(this, arguments); =
};=0A=
        })(property).wrap(method);=0A=
=0A=
        value.valueOf =3D method.valueOf.bind(method);=0A=
        value.toString =3D method.toString.bind(method);=0A=
      }=0A=
      this.prototype[property] =3D value;=0A=
    }=0A=
=0A=
    return this;=0A=
  }=0A=
=0A=
  return {=0A=
    create: create,=0A=
    Methods: {=0A=
      addMethods: addMethods=0A=
    }=0A=
  };=0A=
})();=0A=
(function() {=0A=
=0A=
  var _toString =3D Object.prototype.toString;=0A=
=0A=
  function extend(destination, source) {=0A=
    for (var property in source)=0A=
      destination[property] =3D source[property];=0A=
    return destination;=0A=
  }=0A=
=0A=
  function inspect(object) {=0A=
    try {=0A=
      if (isUndefined(object)) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : String(object);=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  }=0A=
=0A=
  function toJSON(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 (isElement(object)) return;=0A=
=0A=
    var results =3D [];=0A=
    for (var property in object) {=0A=
      var value =3D toJSON(object[property]);=0A=
      if (!isUndefined(value))=0A=
        results.push(property.toJSON() + ': ' + value);=0A=
    }=0A=
=0A=
    return '{' + results.join(', ') + '}';=0A=
  }=0A=
=0A=
  function toQueryString(object) {=0A=
    return $H(object).toQueryString();=0A=
  }=0A=
=0A=
  function toHTML(object) {=0A=
    return object && object.toHTML ? object.toHTML() : =
String.interpret(object);=0A=
  }=0A=
=0A=
  function keys(object) {=0A=
    var results =3D [];=0A=
    for (var property in object)=0A=
      results.push(property);=0A=
    return results;=0A=
  }=0A=
=0A=
  function values(object) {=0A=
    var results =3D [];=0A=
    for (var property in object)=0A=
      results.push(object[property]);=0A=
    return results;=0A=
  }=0A=
=0A=
  function clone(object) {=0A=
    return extend({ }, object);=0A=
  }=0A=
=0A=
  function isElement(object) {=0A=
    return !!(object && object.nodeType =3D=3D 1);=0A=
  }=0A=
=0A=
  function isArray(object) {=0A=
    return _toString.call(object) =3D=3D "[object Array]";=0A=
  }=0A=
=0A=
=0A=
  function isHash(object) {=0A=
    return object instanceof Hash;=0A=
  }=0A=
=0A=
  function isFunction(object) {=0A=
    return typeof object =3D=3D=3D "function";=0A=
  }=0A=
=0A=
  function isString(object) {=0A=
    return _toString.call(object) =3D=3D "[object String]";=0A=
  }=0A=
=0A=
  function isNumber(object) {=0A=
    return _toString.call(object) =3D=3D "[object Number]";=0A=
  }=0A=
=0A=
  function isUndefined(object) {=0A=
    return typeof object =3D=3D=3D "undefined";=0A=
  }=0A=
=0A=
  extend(Object, {=0A=
    extend:        extend,=0A=
    inspect:       inspect,=0A=
    toJSON:        toJSON,=0A=
    toQueryString: toQueryString,=0A=
    toHTML:        toHTML,=0A=
    keys:          keys,=0A=
    values:        values,=0A=
    clone:         clone,=0A=
    isElement:     isElement,=0A=
    isArray:       isArray,=0A=
    isHash:        isHash,=0A=
    isFunction:    isFunction,=0A=
    isString:      isString,=0A=
    isNumber:      isNumber,=0A=
    isUndefined:   isUndefined=0A=
  });=0A=
})();=0A=
Object.extend(Function.prototype, (function() {=0A=
  var slice =3D Array.prototype.slice;=0A=
=0A=
  function update(array, args) {=0A=
    var arrayLength =3D array.length, length =3D args.length;=0A=
    while (length--) array[arrayLength + length] =3D args[length];=0A=
    return array;=0A=
  }=0A=
=0A=
  function merge(array, args) {=0A=
    array =3D slice.call(array, 0);=0A=
    return update(array, args);=0A=
  }=0A=
=0A=
  function argumentNames() {=0A=
    var names =3D =
this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]=0A=
      .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')=0A=
      .replace(/\s+/g, '').split(',');=0A=
    return names.length =3D=3D 1 && !names[0] ? [] : names;=0A=
  }=0A=
=0A=
  function bind(context) {=0A=
    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return =
this;=0A=
    var __method =3D this, args =3D slice.call(arguments, 1);=0A=
    return function() {=0A=
      var a =3D merge(args, arguments);=0A=
      return __method.apply(context, a);=0A=
    }=0A=
  }=0A=
=0A=
  function bindAsEventListener(context) {=0A=
    var __method =3D this, args =3D slice.call(arguments, 1);=0A=
    return function(event) {=0A=
      var a =3D update([event || window.event], args);=0A=
      return __method.apply(context, a);=0A=
    }=0A=
  }=0A=
=0A=
  function curry() {=0A=
    if (!arguments.length) return this;=0A=
    var __method =3D this, args =3D slice.call(arguments, 0);=0A=
    return function() {=0A=
      var a =3D merge(args, arguments);=0A=
      return __method.apply(this, a);=0A=
    }=0A=
  }=0A=
=0A=
  function delay(timeout) {=0A=
    var __method =3D this, args =3D slice.call(arguments, 1);=0A=
    timeout =3D timeout * 1000=0A=
    return window.setTimeout(function() {=0A=
      return __method.apply(__method, args);=0A=
    }, timeout);=0A=
  }=0A=
=0A=
  function defer() {=0A=
    var args =3D update([0.01], arguments);=0A=
    return this.delay.apply(this, args);=0A=
  }=0A=
=0A=
  function wrap(wrapper) {=0A=
    var __method =3D this;=0A=
    return function() {=0A=
      var a =3D update([__method.bind(this)], arguments);=0A=
      return wrapper.apply(this, a);=0A=
    }=0A=
  }=0A=
=0A=
  function methodize() {=0A=
    if (this._methodized) return this._methodized;=0A=
    var __method =3D this;=0A=
    return this._methodized =3D function() {=0A=
      var a =3D update([this], arguments);=0A=
      return __method.apply(null, a);=0A=
    };=0A=
  }=0A=
=0A=
  return {=0A=
    argumentNames:       argumentNames,=0A=
    bind:                bind,=0A=
    bindAsEventListener: bindAsEventListener,=0A=
    curry:               curry,=0A=
    delay:               delay,=0A=
    defer:               defer,=0A=
    wrap:                wrap,=0A=
    methodize:           methodize=0A=
  }=0A=
})());=0A=
=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=
=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=
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=
        this.currentlyExecuting =3D false;=0A=
      } catch(e) {=0A=
        this.currentlyExecuting =3D false;=0A=
        throw e;=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, (function() {=0A=
=0A=
  function prepareReplacement(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=
  function gsub(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D prepareReplacement(replacement);=0A=
=0A=
    if (Object.isString(pattern))=0A=
      pattern =3D RegExp.escape(pattern);=0A=
=0A=
    if (!(pattern.length || pattern.source)) {=0A=
      replacement =3D replacement('');=0A=
      return replacement + source.split('').join(replacement) + =
replacement;=0A=
    }=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=
  function sub(pattern, replacement, count) {=0A=
    replacement =3D prepareReplacement(replacement);=0A=
    count =3D Object.isUndefined(count) ? 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=
  function scan(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return String(this);=0A=
  }=0A=
=0A=
  function truncate(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : =
String(this);=0A=
  }=0A=
=0A=
  function strip() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  }=0A=
=0A=
  function stripTags() {=0A=
    return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, =
'');=0A=
  }=0A=
=0A=
  function stripScripts() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  }=0A=
=0A=
  function extractScripts() {=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=
  function evalScripts() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  }=0A=
=0A=
  function escapeHTML() {=0A=
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');=0A=
  }=0A=
=0A=
  function unescapeHTML() {=0A=
    return =
this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;=
/g,'&');=0A=
  }=0A=
=0A=
=0A=
  function toQueryParams(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=
  function toArray() {=0A=
    return this.split('');=0A=
  }=0A=
=0A=
  function succ() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  }=0A=
=0A=
  function times(count) {=0A=
    return count < 1 ? '' : new Array(count + 1).join(this);=0A=
  }=0A=
=0A=
  function camelize() {=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=
  function capitalize() {=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  }=0A=
=0A=
  function underscore() {=0A=
    return this.replace(/::/g, '/')=0A=
               .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')=0A=
               .replace(/([a-z\d])([A-Z])/g, '$1_$2')=0A=
               .replace(/-/g, '_')=0A=
               .toLowerCase();=0A=
  }=0A=
=0A=
  function dasherize() {=0A=
    return this.replace(/_/g, '-');=0A=
  }=0A=
=0A=
  function inspect(useDoubleQuotes) {=0A=
    var escapedString =3D this.replace(/[\x00-\x1f\\]/g, =
function(character) {=0A=
      if (character in String.specialChar) {=0A=
        return String.specialChar[character];=0A=
      }=0A=
      return '\\u00' + character.charCodeAt().toPaddedString(2, 16);=0A=
    });=0A=
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';=0A=
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  }=0A=
=0A=
  function toJSON() {=0A=
    return this.inspect(true);=0A=
  }=0A=
=0A=
  function unfilterJSON(filter) {=0A=
    return this.replace(filter || Prototype.JSONFilter, '$1');=0A=
  }=0A=
=0A=
  function isJSON() {=0A=
    var str =3D this;=0A=
    if (str.blank()) return false;=0A=
    str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A=
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A=
  }=0A=
=0A=
  function evalJSON(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=
  function include(pattern) {=0A=
    return this.indexOf(pattern) > -1;=0A=
  }=0A=
=0A=
  function startsWith(pattern) {=0A=
    return this.indexOf(pattern) =3D=3D=3D 0;=0A=
  }=0A=
=0A=
  function endsWith(pattern) {=0A=
    var d =3D this.length - pattern.length;=0A=
    return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A=
  }=0A=
=0A=
  function empty() {=0A=
    return this =3D=3D '';=0A=
  }=0A=
=0A=
  function blank() {=0A=
    return /^\s*$/.test(this);=0A=
  }=0A=
=0A=
  function interpolate(object, pattern) {=0A=
    return new Template(this, pattern).evaluate(object);=0A=
  }=0A=
=0A=
  return {=0A=
    gsub:           gsub,=0A=
    sub:            sub,=0A=
    scan:           scan,=0A=
    truncate:       truncate,=0A=
    strip:          String.prototype.trim ? String.prototype.trim : =
strip,=0A=
    stripTags:      stripTags,=0A=
    stripScripts:   stripScripts,=0A=
    extractScripts: extractScripts,=0A=
    evalScripts:    evalScripts,=0A=
    escapeHTML:     escapeHTML,=0A=
    unescapeHTML:   unescapeHTML,=0A=
    toQueryParams:  toQueryParams,=0A=
    parseQuery:     toQueryParams,=0A=
    toArray:        toArray,=0A=
    succ:           succ,=0A=
    times:          times,=0A=
    camelize:       camelize,=0A=
    capitalize:     capitalize,=0A=
    underscore:     underscore,=0A=
    dasherize:      dasherize,=0A=
    inspect:        inspect,=0A=
    toJSON:         toJSON,=0A=
    unfilterJSON:   unfilterJSON,=0A=
    isJSON:         isJSON,=0A=
    evalJSON:       evalJSON,=0A=
    include:        include,=0A=
    startsWith:     startsWith,=0A=
    endsWith:       endsWith,=0A=
    empty:          empty,=0A=
    blank:          blank,=0A=
    interpolate:    interpolate=0A=
  };=0A=
})());=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 && 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 (match[1] + '');=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 /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A=
      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].replace(/\\\\]/g, ']') : 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=
    });=0A=
  }=0A=
});=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
=0A=
var $break =3D { };=0A=
=0A=
var Enumerable =3D (function() {=0A=
  function each(iterator, context) {=0A=
    var index =3D 0;=0A=
    try {=0A=
      this._each(function(value) {=0A=
        iterator.call(context, value, index++);=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
    return this;=0A=
  }=0A=
=0A=
  function eachSlice(number, iterator, context) {=0A=
    var index =3D -number, slices =3D [], array =3D this.toArray();=0A=
    if (number < 1) return array;=0A=
    while ((index +=3D number) < array.length)=0A=
      slices.push(array.slice(index, index+number));=0A=
    return slices.collect(iterator, context);=0A=
  }=0A=
=0A=
  function all(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!iterator.call(context, value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function any(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result =3D false;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!iterator.call(context, value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function collect(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(iterator.call(context, value, index));=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function detect(iterator, context) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator.call(context, value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function findAll(iterator, context) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator.call(context, value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function grep(filter, iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var results =3D [];=0A=
=0A=
    if (Object.isString(filter))=0A=
      filter =3D new RegExp(RegExp.escape(filter));=0A=
=0A=
    this.each(function(value, index) {=0A=
      if (filter.match(value))=0A=
        results.push(iterator.call(context, value, index));=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function include(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=
  function inGroupsOf(number, fillWith) {=0A=
    fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  }=0A=
=0A=
  function inject(memo, iterator, context) {=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator.call(context, memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  }=0A=
=0A=
  function invoke(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=
  function max(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator.call(context, value, index);=0A=
      if (result =3D=3D null || value >=3D result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function min(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D iterator.call(context, value, index);=0A=
      if (result =3D=3D null || value < result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  }=0A=
=0A=
  function partition(iterator, context) {=0A=
    iterator =3D iterator || Prototype.K;=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      (iterator.call(context, value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  }=0A=
=0A=
  function pluck(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function reject(iterator, context) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator.call(context, value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  }=0A=
=0A=
  function sortBy(iterator, context) {=0A=
    return this.map(function(value, index) {=0A=
      return {=0A=
        value: value,=0A=
        criteria: iterator.call(context, value, index)=0A=
      };=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=
  function toArray() {=0A=
    return this.map();=0A=
  }=0A=
=0A=
  function zip() {=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=
  function size() {=0A=
    return this.toArray().length;=0A=
  }=0A=
=0A=
  function inspect() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
=0A=
  return {=0A=
    each:       each,=0A=
    eachSlice:  eachSlice,=0A=
    all:        all,=0A=
    every:      all,=0A=
    any:        any,=0A=
    some:       any,=0A=
    collect:    collect,=0A=
    map:        collect,=0A=
    detect:     detect,=0A=
    findAll:    findAll,=0A=
    select:     findAll,=0A=
    filter:     findAll,=0A=
    grep:       grep,=0A=
    include:    include,=0A=
    member:     include,=0A=
    inGroupsOf: inGroupsOf,=0A=
    inject:     inject,=0A=
    invoke:     invoke,=0A=
    max:        max,=0A=
    min:        min,=0A=
    partition:  partition,=0A=
    pluck:      pluck,=0A=
    reject:     reject,=0A=
    sortBy:     sortBy,=0A=
    toArray:    toArray,=0A=
    entries:    toArray,=0A=
    zip:        zip,=0A=
    size:       size,=0A=
    inspect:    inspect,=0A=
    find:       detect=0A=
  };=0A=
})();=0A=
function $A(iterable) {=0A=
  if (!iterable) return [];=0A=
  if ('toArray' in Object(iterable)) return iterable.toArray();=0A=
  var length =3D iterable.length || 0, results =3D new Array(length);=0A=
  while (length--) results[length] =3D iterable[length];=0A=
  return results;=0A=
}=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=
Array.from =3D $A;=0A=
=0A=
=0A=
(function() {=0A=
  var arrayProto =3D Array.prototype,=0A=
      slice =3D arrayProto.slice,=0A=
      _each =3D arrayProto.forEach; // use native browser JS 1.6 =
implementation if available=0A=
=0A=
  function each(iterator) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      iterator(this[i]);=0A=
  }=0A=
  if (!_each) _each =3D each;=0A=
=0A=
  function clear() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  }=0A=
=0A=
  function first() {=0A=
    return this[0];=0A=
  }=0A=
=0A=
  function last() {=0A=
    return this[this.length - 1];=0A=
  }=0A=
=0A=
  function compact() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  }=0A=
=0A=
  function flatten() {=0A=
    return this.inject([], function(array, value) {=0A=
      if (Object.isArray(value))=0A=
        return array.concat(value.flatten());=0A=
      array.push(value);=0A=
      return array;=0A=
    });=0A=
  }=0A=
=0A=
  function without() {=0A=
    var values =3D slice.call(arguments, 0);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  }=0A=
=0A=
  function reverse(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  }=0A=
=0A=
  function uniq(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=
  function intersect(array) {=0A=
    return this.uniq().findAll(function(item) {=0A=
      return array.detect(function(value) { return item =3D=3D=3D value =
});=0A=
    });=0A=
  }=0A=
=0A=
=0A=
  function clone() {=0A=
    return slice.call(this, 0);=0A=
  }=0A=
=0A=
  function size() {=0A=
    return this.length;=0A=
  }=0A=
=0A=
  function inspect() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  }=0A=
=0A=
  function toJSON() {=0A=
    var results =3D [];=0A=
    this.each(function(object) {=0A=
      var value =3D Object.toJSON(object);=0A=
      if (!Object.isUndefined(value)) results.push(value);=0A=
    });=0A=
    return '[' + results.join(', ') + ']';=0A=
  }=0A=
=0A=
  function indexOf(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=
  function lastIndexOf(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=
  function concat() {=0A=
    var array =3D slice.call(this, 0), item;=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      item =3D arguments[i];=0A=
      if (Object.isArray(item) && !('callee' in item)) {=0A=
        for (var j =3D 0, arrayLength =3D item.length; j < arrayLength; =
j++)=0A=
          array.push(item[j]);=0A=
      } else {=0A=
        array.push(item);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  }=0A=
=0A=
  Object.extend(arrayProto, Enumerable);=0A=
=0A=
  if (!arrayProto._reverse)=0A=
    arrayProto._reverse =3D arrayProto.reverse;=0A=
=0A=
  Object.extend(arrayProto, {=0A=
    _each:     _each,=0A=
    clear:     clear,=0A=
    first:     first,=0A=
    last:      last,=0A=
    compact:   compact,=0A=
    flatten:   flatten,=0A=
    without:   without,=0A=
    reverse:   reverse,=0A=
    uniq:      uniq,=0A=
    intersect: intersect,=0A=
    clone:     clone,=0A=
    toArray:   clone,=0A=
    size:      size,=0A=
    inspect:   inspect,=0A=
    toJSON:    toJSON=0A=
  });=0A=
=0A=
  var CONCAT_ARGUMENTS_BUGGY =3D (function() {=0A=
    return [].concat(arguments)[0][0] !=3D=3D 1;=0A=
  })(1,2)=0A=
=0A=
  if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat =3D concat;=0A=
=0A=
  if (!arrayProto.indexOf) arrayProto.indexOf =3D indexOf;=0A=
  if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf =3D lastIndexOf;=0A=
})();=0A=
function $H(object) {=0A=
  return new Hash(object);=0A=
};=0A=
=0A=
var Hash =3D Class.create(Enumerable, (function() {=0A=
  function initialize(object) {=0A=
    this._object =3D Object.isHash(object) ? object.toObject() : =
Object.clone(object);=0A=
  }=0A=
=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=
  function set(key, value) {=0A=
    return this._object[key] =3D value;=0A=
  }=0A=
=0A=
  function get(key) {=0A=
    if (this._object[key] !=3D=3D Object.prototype[key])=0A=
      return this._object[key];=0A=
  }=0A=
=0A=
  function unset(key) {=0A=
    var value =3D this._object[key];=0A=
    delete this._object[key];=0A=
    return value;=0A=
  }=0A=
=0A=
  function toObject() {=0A=
    return Object.clone(this._object);=0A=
  }=0A=
=0A=
  function keys() {=0A=
    return this.pluck('key');=0A=
  }=0A=
=0A=
  function values() {=0A=
    return this.pluck('value');=0A=
  }=0A=
=0A=
  function index(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=
  function merge(object) {=0A=
    return this.clone().update(object);=0A=
  }=0A=
=0A=
  function update(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=
  function toQueryPair(key, value) {=0A=
    if (Object.isUndefined(value)) return key;=0A=
    return key + '=3D' + encodeURIComponent(String.interpret(value));=0A=
  }=0A=
=0A=
  function toQueryString() {=0A=
    return this.inject([], function(results, 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 results.concat(values.map(toQueryPair.curry(key)));=0A=
      } else results.push(toQueryPair(key, values));=0A=
      return results;=0A=
    }).join('&');=0A=
  }=0A=
=0A=
  function inspect() {=0A=
    return '#<Hash:{' + this.map(function(pair) {=0A=
      return pair.map(Object.inspect).join(': ');=0A=
    }).join(', ') + '}>';=0A=
  }=0A=
=0A=
  function toJSON() {=0A=
    return Object.toJSON(this.toObject());=0A=
  }=0A=
=0A=
  function clone() {=0A=
    return new Hash(this);=0A=
  }=0A=
=0A=
  return {=0A=
    initialize:             initialize,=0A=
    _each:                  _each,=0A=
    set:                    set,=0A=
    get:                    get,=0A=
    unset:                  unset,=0A=
    toObject:               toObject,=0A=
    toTemplateReplacements: toObject,=0A=
    keys:                   keys,=0A=
    values:                 values,=0A=
    index:                  index,=0A=
    merge:                  merge,=0A=
    update:                 update,=0A=
    toQueryString:          toQueryString,=0A=
    inspect:                inspect,=0A=
    toJSON:                 toJSON,=0A=
    clone:                  clone=0A=
  };=0A=
})());=0A=
=0A=
Hash.from =3D $H;=0A=
Object.extend(Number.prototype, (function() {=0A=
  function toColorPart() {=0A=
    return this.toPaddedString(2, 16);=0A=
  }=0A=
=0A=
  function succ() {=0A=
    return this + 1;=0A=
  }=0A=
=0A=
  function times(iterator, context) {=0A=
    $R(0, this, true).each(iterator, context);=0A=
    return this;=0A=
  }=0A=
=0A=
  function toPaddedString(length, radix) {=0A=
    var string =3D this.toString(radix || 10);=0A=
    return '0'.times(length - string.length) + string;=0A=
  }=0A=
=0A=
  function toJSON() {=0A=
    return isFinite(this) ? this.toString() : 'null';=0A=
  }=0A=
=0A=
  function abs() {=0A=
    return Math.abs(this);=0A=
  }=0A=
=0A=
  function round() {=0A=
    return Math.round(this);=0A=
  }=0A=
=0A=
  function ceil() {=0A=
    return Math.ceil(this);=0A=
  }=0A=
=0A=
  function floor() {=0A=
    return Math.floor(this);=0A=
  }=0A=
=0A=
  return {=0A=
    toColorPart:    toColorPart,=0A=
    succ:           succ,=0A=
    times:          times,=0A=
    toPaddedString: toPaddedString,=0A=
    toJSON:         toJSON,=0A=
    abs:            abs,=0A=
    round:          round,=0A=
    ceil:           ceil,=0A=
    floor:          floor=0A=
  };=0A=
})());=0A=
=0A=
function $R(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
}=0A=
=0A=
var ObjectRange =3D Class.create(Enumerable, (function() {=0A=
  function initialize(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  }=0A=
=0A=
  function _each(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  }=0A=
=0A=
  function include(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=
  return {=0A=
    initialize: initialize,=0A=
    _each:      _each,=0A=
    include:    include=0A=
  };=0A=
})());=0A=
=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=
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=
=0A=
    if (Object.isString(this.options.parameters))=0A=
      this.options.parameters =3D =
this.options.parameters.toQueryParams();=0A=
    else if (Object.isHash(this.options.parameters))=0A=
      this.options.parameters =3D this.options.parameters.toObject();=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=
      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=
      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=
    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 && this.isSameOrigin() && 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=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  isSameOrigin: function() {=0A=
    var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A=
    return !m || (m[0] =3D=3D =
'#{protocol}//#{domain}#{port}'.interpolate({=0A=
      protocol: location.protocol,=0A=
      domain: document.domain,=0A=
      port: location.port ? ':' + location.port : ''=0A=
    }));=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name) || null;=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=
=0A=
=0A=
=0A=
=0A=
=0A=
=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 Object.isUndefined(xml) ? null : xml;=0A=
      this.responseJSON =3D this._getResponseJSON();=0A=
    }=0A=
  },=0A=
=0A=
  status:      0,=0A=
=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=
        !this.request.isSameOrigin());=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=
        this.responseText.blank())=0A=
          return null;=0A=
    try {=0A=
      return this.responseText.evalJSON(options.sanitizeJSON ||=0A=
        !this.request.isSameOrigin());=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 Object.clone(options);=0A=
    var onComplete =3D options.onComplete;=0A=
    options.onComplete =3D (function(response, json) {=0A=
      this.updateContent(response.responseText);=0A=
      if (Object.isFunction(onComplete)) onComplete(response, json);=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=
});=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=
=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=
  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=
=0A=
(function(global) {=0A=
=0A=
  var SETATTRIBUTE_IGNORES_NAME =3D (function(){=0A=
    var elForm =3D document.createElement("form");=0A=
    var elInput =3D document.createElement("input");=0A=
    var root =3D document.documentElement;=0A=
    elInput.setAttribute("name", "test");=0A=
    elForm.appendChild(elInput);=0A=
    root.appendChild(elForm);=0A=
    var isBuggy =3D elForm.elements=0A=
      ? (typeof elForm.elements.test =3D=3D "undefined")=0A=
      : null;=0A=
    root.removeChild(elForm);=0A=
    elForm =3D elInput =3D null;=0A=
    return isBuggy;=0A=
  })();=0A=
=0A=
  var element =3D global.Element;=0A=
  global.Element =3D function(tagName, attributes) {=0A=
    attributes =3D attributes || { };=0A=
    tagName =3D tagName.toLowerCase();=0A=
    var cache =3D Element.cache;=0A=
    if (SETATTRIBUTE_IGNORES_NAME && 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(global.Element, element || { });=0A=
  if (element) global.Element.prototype =3D element.prototype;=0A=
})(this);=0A=
=0A=
Element.cache =3D { };=0A=
Element.idCounter =3D 1;=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=
=0A=
  hide: function(element) {=0A=
    element =3D $(element);=0A=
    element.style.display =3D 'none';=0A=
    return element;=0A=
  },=0A=
=0A=
  show: function(element) {=0A=
    element =3D $(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(){=0A=
=0A=
    var SELECT_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A=
      var el =3D document.createElement("select"),=0A=
          isBuggy =3D true;=0A=
      el.innerHTML =3D "<option value=3D\"test\">test</option>";=0A=
      if (el.options && el.options[0]) {=0A=
        isBuggy =3D el.options[0].nodeName.toUpperCase() !=3D=3D =
"OPTION";=0A=
      }=0A=
      el =3D null;=0A=
      return isBuggy;=0A=
    })();=0A=
=0A=
    var TABLE_ELEMENT_INNERHTML_BUGGY =3D (function(){=0A=
      try {=0A=
        var el =3D document.createElement("table");=0A=
        if (el && el.tBodies) {=0A=
          el.innerHTML =3D "<tbody><tr><td>test</td></tr></tbody>";=0A=
          var isBuggy =3D typeof el.tBodies[0] =3D=3D "undefined";=0A=
          el =3D null;=0A=
          return isBuggy;=0A=
        }=0A=
      } catch (e) {=0A=
        return true;=0A=
      }=0A=
    })();=0A=
=0A=
    var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING =3D (function () {=0A=
      var s =3D document.createElement("script"),=0A=
          isBuggy =3D false;=0A=
      try {=0A=
        s.appendChild(document.createTextNode(""));=0A=
        isBuggy =3D !s.firstChild ||=0A=
          s.firstChild && s.firstChild.nodeType !=3D=3D 3;=0A=
      } catch (e) {=0A=
        isBuggy =3D true;=0A=
      }=0A=
      s =3D null;=0A=
      return isBuggy;=0A=
    })();=0A=
=0A=
    function update(element, content) {=0A=
      element =3D $(element);=0A=
=0A=
      if (content && content.toElement)=0A=
        content =3D content.toElement();=0A=
=0A=
      if (Object.isElement(content))=0A=
        return element.update().insert(content);=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      var tagName =3D element.tagName.toUpperCase();=0A=
=0A=
      if (tagName =3D=3D=3D 'SCRIPT' && =
SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {=0A=
        element.text =3D content;=0A=
        return element;=0A=
      }=0A=
=0A=
      if (SELECT_ELEMENT_INNERHTML_BUGGY || =
TABLE_ELEMENT_INNERHTML_BUGGY) {=0A=
        if (tagName in Element._insertionTranslations.tags) {=0A=
          while (element.firstChild) {=0A=
            element.removeChild(element.firstChild);=0A=
          }=0A=
          Element._getContentFromAnonymousElement(tagName, =
content.stripScripts())=0A=
            .each(function(node) {=0A=
              element.appendChild(node)=0A=
            });=0A=
        }=0A=
        else {=0A=
          element.innerHTML =3D content.stripScripts();=0A=
        }=0A=
      }=0A=
      else {=0A=
        element.innerHTML =3D content.stripScripts();=0A=
      }=0A=
=0A=
      content.evalScripts.bind(content).defer();=0A=
      return element;=0A=
    }=0A=
=0A=
    return update;=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, insert, tagName, childNodes;=0A=
=0A=
    for (var position in insertions) {=0A=
      content  =3D insertions[position];=0A=
      position =3D position.toLowerCase();=0A=
      insert =3D Element._insertionTranslations[position];=0A=
=0A=
      if (content && content.toElement) content =3D content.toElement();=0A=
      if (Object.isElement(content)) {=0A=
        insert(element, content);=0A=
        continue;=0A=
      }=0A=
=0A=
      content =3D Object.toHTML(content);=0A=
=0A=
      tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A=
        ? element.parentNode : element).tagName.toUpperCase();=0A=
=0A=
      childNodes =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());=0A=
=0A=
      if (position =3D=3D 'top' || position =3D=3D 'after') =
childNodes.reverse();=0A=
      childNodes.each(insert.curry(element));=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(element, 'parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return Element.select(element, "*");=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(element, 'previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return Element.recursivelyCollect(element, 'nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return Element.previousSiblings(element).reverse()=0A=
      .concat(Element.nextSiblings(element));=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(element);=0A=
    return Object.isNumber(expression) ? ancestors[expression] :=0A=
      Selector.findElement(ancestors, expression, index);=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
Element.firstDescendant(element);=0A=
    return Object.isNumber(expression) ? =
Element.descendants(element)[expression] :=0A=
      Element.select(element, expression)[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(element);=0A=
    return Object.isNumber(expression) ? previousSiblings[expression] :=0A=
      Selector.findElement(previousSiblings, expression, index);=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(element);=0A=
    return Object.isNumber(expression) ? nextSiblings[expression] :=0A=
      Selector.findElement(nextSiblings, expression, index);=0A=
  },=0A=
=0A=
=0A=
  select: function(element) {=0A=
    var args =3D Array.prototype.slice.call(arguments, 1);=0A=
    return Selector.findChildElements(element, args);=0A=
  },=0A=
=0A=
  adjacent: function(element) {=0A=
    var args =3D Array.prototype.slice.call(arguments, 1);=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(element, 'id');=0A=
    if (id) return id;=0A=
    do { id =3D 'anonymous_element_' + Element.idCounter++ } while =
($(id));=0A=
    Element.writeAttribute(element, '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 Object.isUndefined(value) ? true : value;=0A=
=0A=
    for (var attr in attributes) {=0A=
      name =3D t.names[attr] || attr;=0A=
      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(element).height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return Element.getDimensions(element).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(element, 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(element, className) ?=0A=
      'removeClassName' : 'addClassName'](element, className);=0A=
  },=0A=
=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 (ancestor.contains)=0A=
      return ancestor.contains(element) && ancestor !=3D=3D element;=0A=
=0A=
    while (element =3D element.parentNode)=0A=
      if (element =3D=3D ancestor) return true;=0A=
=0A=
    return false;=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.cumulativeOffset(element);=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 || value =3D=3D 'auto') {=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=
          (Object.isUndefined(elementStyle.styleFloat) ? '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(element, 'display');=0A=
    if (display !=3D 'none' && display !=3D null) // Safari bug=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=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=
    if (originalPosition !=3D 'fixed') // Switching fixed to absolute =
causes issues in Safari=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=
      if (Prototype.Browser.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.toUpperCase() =3D=3D 'BODY') break;=0A=
        var p =3D Element.getStyle(element, 'position');=0A=
        if (p !=3D=3D 'static') 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(element, 'position') =3D=3D 'absolute') return =
element;=0A=
=0A=
    var offsets =3D Element.positionedOffset(element);=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(element, 'position') =3D=3D 'relative') return =
element;=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=
      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 && =
(element.tagName.toUpperCase() =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=
    source =3D $(source);=0A=
    var p =3D Element.viewportOffset(source);=0A=
=0A=
    element =3D $(element);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A=
      parent =3D Element.getOffsetParent(element);=0A=
      delta =3D Element.viewportOffset(parent);=0A=
    }=0A=
=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=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=
Object.extend(Element.Methods, {=0A=
  getElementsBySelector: Element.Methods.select,=0A=
=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=
if (Prototype.Browser.Opera) {=0A=
  Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A=
    function(proceed, element, style) {=0A=
      switch (style) {=0A=
        case 'left': case 'top': case 'right': case 'bottom':=0A=
          if (proceed(element, 'position') =3D=3D=3D 'static') return =
null;=0A=
        case 'height': case 'width':=0A=
          if (!Element.visible(element)) return null;=0A=
=0A=
          var dim =3D parseInt(proceed(element, style), 10);=0A=
=0A=
          if (dim !=3D=3D element['offset' + style.capitalize()])=0A=
            return dim + 'px';=0A=
=0A=
          var properties;=0A=
          if (style =3D=3D=3D 'height') {=0A=
            properties =3D ['border-top-width', 'padding-top',=0A=
             'padding-bottom', 'border-bottom-width'];=0A=
          }=0A=
          else {=0A=
            properties =3D ['border-left-width', 'padding-left',=0A=
             'padding-right', 'border-right-width'];=0A=
          }=0A=
          return properties.inject(dim, function(memo, property) {=0A=
            var val =3D proceed(element, property);=0A=
            return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A=
          }) + 'px';=0A=
        default: return proceed(element, style);=0A=
      }=0A=
    }=0A=
  );=0A=
=0A=
  Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A=
    function(proceed, element, attribute) {=0A=
      if (attribute =3D=3D=3D 'title') return element.title;=0A=
      return proceed(element, attribute);=0A=
    }=0A=
  );=0A=
}=0A=
=0A=
else if (Prototype.Browser.IE) {=0A=
  Element.Methods.getOffsetParent =3D =
Element.Methods.getOffsetParent.wrap(=0A=
    function(proceed, element) {=0A=
      element =3D $(element);=0A=
      try { element.offsetParent }=0A=
      catch(e) { return $(document.body) }=0A=
      var position =3D element.getStyle('position');=0A=
      if (position !=3D=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=
  $w('positionedOffset viewportOffset').each(function(method) {=0A=
    Element.Methods[method] =3D Element.Methods[method].wrap(=0A=
      function(proceed, element) {=0A=
        element =3D $(element);=0A=
        try { element.offsetParent }=0A=
        catch(e) { return Element._returnOffset(0,0) }=0A=
        var position =3D element.getStyle('position');=0A=
        if (position !=3D=3D 'static') return proceed(element);=0A=
        var offsetParent =3D element.getOffsetParent();=0A=
        if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D =
'fixed')=0A=
          offsetParent.setStyle({ zoom: 1 });=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.cumulativeOffset =3D =
Element.Methods.cumulativeOffset.wrap(=0A=
    function(proceed, element) {=0A=
      try { element.offsetParent }=0A=
      catch(e) { return Element._returnOffset(0,0) }=0A=
      return proceed(element);=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 (function(){=0A=
=0A=
    var classProp =3D 'className';=0A=
    var forProp =3D 'for';=0A=
=0A=
    var el =3D document.createElement('div');=0A=
=0A=
    el.setAttribute(classProp, 'x');=0A=
=0A=
    if (el.className !=3D=3D 'x') {=0A=
      el.setAttribute('class', 'x');=0A=
      if (el.className =3D=3D=3D 'x') {=0A=
        classProp =3D 'class';=0A=
      }=0A=
    }=0A=
    el =3D null;=0A=
=0A=
    el =3D document.createElement('label');=0A=
    el.setAttribute(forProp, 'x');=0A=
    if (el.htmlFor !=3D=3D 'x') {=0A=
      el.setAttribute('htmlFor', 'x');=0A=
      if (el.htmlFor =3D=3D=3D 'x') {=0A=
        forProp =3D 'htmlFor';=0A=
      }=0A=
    }=0A=
    el =3D null;=0A=
=0A=
    return {=0A=
      read: {=0A=
        names: {=0A=
          'class':      classProp,=0A=
          'className':  classProp,=0A=
          'for':        forProp,=0A=
          'htmlFor':    forProp=0A=
        },=0A=
        values: {=0A=
          _getAttr: function(element, attribute) {=0A=
            return element.getAttribute(attribute);=0A=
          },=0A=
          _getAttr2: 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(){=0A=
=0A=
            var el =3D document.createElement('div');=0A=
            el.onclick =3D Prototype.emptyFunction;=0A=
            var value =3D el.getAttribute('onclick');=0A=
            var f;=0A=
=0A=
            if (String(value).indexOf('{') > -1) {=0A=
              f =3D function(element, attribute) {=0A=
                attribute =3D element.getAttribute(attribute);=0A=
                if (!attribute) return null;=0A=
                attribute =3D attribute.toString();=0A=
                attribute =3D attribute.split('{')[1];=0A=
                attribute =3D attribute.split('}')[0];=0A=
                return attribute.strip();=0A=
              };=0A=
            }=0A=
            else if (value =3D=3D=3D '') {=0A=
              f =3D function(element, attribute) {=0A=
                attribute =3D element.getAttribute(attribute);=0A=
                if (!attribute) return null;=0A=
                return attribute.strip();=0A=
              };=0A=
            }=0A=
            el =3D null;=0A=
            return f;=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=
=0A=
  Element._attributeTranslations.write =3D {=0A=
    names: Object.extend({=0A=
      cellpadding: 'cellPadding',=0A=
      cellspacing: 'cellSpacing'=0A=
    }, 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 =
frameBorder').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._getAttr2,=0A=
      src:         v._getAttr2,=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=
  if (Prototype.BrowserFeatures.ElementExtensions) {=0A=
    (function() {=0A=
      function _descendants(element) {=0A=
        var nodes =3D element.getElementsByTagName('*'), results =3D [];=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName !=3D=3D "!") // Filter out comment nodes.=0A=
            results.push(node);=0A=
        return results;=0A=
      }=0A=
=0A=
      Element.Methods.down =3D function(element, expression, index) {=0A=
        element =3D $(element);=0A=
        if (arguments.length =3D=3D 1) return element.firstDescendant();=0A=
        return Object.isNumber(expression) ? =
_descendants(element)[expression] :=0A=
          Element.select(element, expression)[index || 0];=0A=
      }=0A=
    })();=0A=
  }=0A=
=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.toUpperCase() =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=
  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 ('outerHTML' in document.documentElement) {=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=
  if (t) {=0A=
    div.innerHTML =3D t[0] + html + t[1];=0A=
    t[2].times(function() { div =3D div.firstChild });=0A=
  } else div.innerHTML =3D html;=0A=
  return $A(div.childNodes);=0A=
};=0A=
=0A=
Element._insertionTranslations =3D {=0A=
  before: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element);=0A=
  },=0A=
  top: function(element, node) {=0A=
    element.insertBefore(node, element.firstChild);=0A=
  },=0A=
  bottom: function(element, node) {=0A=
    element.appendChild(node);=0A=
  },=0A=
  after: function(element, node) {=0A=
    element.parentNode.insertBefore(node, element.nextSibling);=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=
  var tags =3D Element._insertionTranslations.tags;=0A=
  Object.extend(tags, {=0A=
    THEAD: tags.TBODY,=0A=
    TFOOT: tags.TBODY,=0A=
    TH:    tags.TD=0A=
  });=0A=
})();=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=
(function(div) {=0A=
=0A=
  if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) {=0A=
    window.HTMLElement =3D { };=0A=
    window.HTMLElement.prototype =3D div['__proto__'];=0A=
    Prototype.BrowserFeatures.ElementExtensions =3D true;=0A=
  }=0A=
=0A=
  div =3D null;=0A=
=0A=
})(document.createElement('div'))=0A=
=0A=
Element.extend =3D (function() {=0A=
=0A=
  function checkDeficiency(tagName) {=0A=
    if (typeof window.Element !=3D 'undefined') {=0A=
      var proto =3D window.Element.prototype;=0A=
      if (proto) {=0A=
        var id =3D '_' + (Math.random()+'').slice(2);=0A=
        var el =3D document.createElement(tagName);=0A=
        proto[id] =3D 'x';=0A=
        var isBuggy =3D (el[id] !=3D=3D 'x');=0A=
        delete proto[id];=0A=
        el =3D null;=0A=
        return isBuggy;=0A=
      }=0A=
    }=0A=
    return false;=0A=
  }=0A=
=0A=
  function extendElementWith(element, methods) {=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (Object.isFunction(value) && !(property in element))=0A=
        element[property] =3D value.methodize();=0A=
    }=0A=
  }=0A=
=0A=
  var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY =3D checkDeficiency('object');=0A=
=0A=
  if (Prototype.BrowserFeatures.SpecificElementExtensions) {=0A=
    if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) {=0A=
      return function(element) {=0A=
        if (element && typeof element._extendedByPrototype =3D=3D =
'undefined') {=0A=
          var t =3D element.tagName;=0A=
          if (t && (/^(?:object|applet|embed)$/i.test(t))) {=0A=
            extendElementWith(element, Element.Methods);=0A=
            extendElementWith(element, Element.Methods.Simulated);=0A=
            extendElementWith(element, =
Element.Methods.ByTag[t.toUpperCase()]);=0A=
          }=0A=
        }=0A=
        return element;=0A=
      }=0A=
    }=0A=
    return Prototype.K;=0A=
  }=0A=
=0A=
  var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A=
=0A=
  var extend =3D Object.extend(function(element) {=0A=
    if (!element || typeof element._extendedByPrototype !=3D 'undefined' =
||=0A=
        element.nodeType !=3D 1 || element =3D=3D window) return element;=0A=
=0A=
    var methods =3D Object.clone(Methods),=0A=
        tagName =3D element.tagName.toUpperCase();=0A=
=0A=
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A=
=0A=
    extendElementWith(element, methods);=0A=
=0A=
    element._extendedByPrototype =3D Prototype.emptyFunction;=0A=
    return element;=0A=
=0A=
  }, {=0A=
    refresh: function() {=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=
    var element =3D document.createElement(tagName);=0A=
    var proto =3D element['__proto__'] || element.constructor.prototype;=0A=
    element =3D null;=0A=
    return proto;=0A=
  }=0A=
=0A=
  var elementPrototype =3D window.HTMLElement ? HTMLElement.prototype :=0A=
   Element.prototype;=0A=
=0A=
  if (F.ElementExtensions) {=0A=
    copy(Element.Methods, elementPrototype);=0A=
    copy(Element.Methods.Simulated, elementPrototype, 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=
=0A=
document.viewport =3D {=0A=
=0A=
  getDimensions: function() {=0A=
    return { width: this.getWidth(), height: this.getHeight() };=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=
=0A=
(function(viewport) {=0A=
  var B =3D Prototype.Browser, doc =3D document, element, property =3D =
{};=0A=
=0A=
  function getRootElement() {=0A=
    if (B.WebKit && !doc.evaluate)=0A=
      return document;=0A=
=0A=
    if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)=0A=
      return document.body;=0A=
=0A=
    return document.documentElement;=0A=
  }=0A=
=0A=
  function define(D) {=0A=
    if (!element) element =3D getRootElement();=0A=
=0A=
    property[D] =3D 'client' + D;=0A=
=0A=
    viewport['get' + D] =3D function() { return element[property[D]] };=0A=
    return viewport['get' + D]();=0A=
  }=0A=
=0A=
  viewport.getWidth  =3D define.curry('Width');=0A=
=0A=
  viewport.getHeight =3D define.curry('Height');=0A=
})(document.viewport);=0A=
=0A=
=0A=
Element.Storage =3D {=0A=
  UID: 1=0A=
};=0A=
=0A=
Element.addMethods({=0A=
  getStorage: function(element) {=0A=
    if (!(element =3D $(element))) return;=0A=
=0A=
    var uid;=0A=
    if (element =3D=3D=3D window) {=0A=
      uid =3D 0;=0A=
    } else {=0A=
      if (typeof element._prototypeUID =3D=3D=3D "undefined")=0A=
        element._prototypeUID =3D [Element.Storage.UID++];=0A=
      uid =3D element._prototypeUID[0];=0A=
    }=0A=
=0A=
    if (!Element.Storage[uid])=0A=
      Element.Storage[uid] =3D $H();=0A=
=0A=
    return Element.Storage[uid];=0A=
  },=0A=
=0A=
  store: function(element, key, value) {=0A=
    if (!(element =3D $(element))) return;=0A=
=0A=
    if (arguments.length =3D=3D=3D 2) {=0A=
      Element.getStorage(element).update(key);=0A=
    } else {=0A=
      Element.getStorage(element).set(key, value);=0A=
    }=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  retrieve: function(element, key, defaultValue) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var hash =3D Element.getStorage(element), value =3D hash.get(key);=0A=
=0A=
    if (Object.isUndefined(value)) {=0A=
      hash.set(key, defaultValue);=0A=
      value =3D defaultValue;=0A=
    }=0A=
=0A=
    return value;=0A=
  },=0A=
=0A=
  clone: function(element, deep) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var clone =3D element.cloneNode(deep);=0A=
    clone._prototypeUID =3D void 0;=0A=
    if (deep) {=0A=
      var descendants =3D Element.select(clone, '*'),=0A=
          i =3D descendants.length;=0A=
      while (i--) {=0A=
        descendants[i]._prototypeUID =3D void 0;=0A=
      }=0A=
    }=0A=
    return Element.extend(clone);=0A=
  }=0A=
});=0A=
/* Portions of the Selector class are derived from Jack Slocum's =
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=
=0A=
    if (this.shouldUseSelectorsAPI()) {=0A=
      this.mode =3D 'selectorsAPI';=0A=
    } else if (this.shouldUseXPath()) {=0A=
      this.mode =3D 'xpath';=0A=
      this.compileXPathMatcher();=0A=
    } else {=0A=
      this.mode =3D "normal";=0A=
      this.compileMatcher();=0A=
    }=0A=
=0A=
  },=0A=
=0A=
  shouldUseXPath: (function() {=0A=
=0A=
    var IS_DESCENDANT_SELECTOR_BUGGY =3D (function(){=0A=
      var isBuggy =3D false;=0A=
      if (document.evaluate && window.XPathResult) {=0A=
        var el =3D document.createElement('div');=0A=
        el.innerHTML =3D =
'<ul><li></li></ul><div><ul><li></li></ul></div>';=0A=
=0A=
        var xpath =3D ".//*[local-name()=3D'ul' or local-name()=3D'UL']" =
+=0A=
          "//*[local-name()=3D'li' or local-name()=3D'LI']";=0A=
=0A=
        var result =3D document.evaluate(xpath, el, null,=0A=
          XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
=0A=
        isBuggy =3D (result.snapshotLength !=3D=3D 2);=0A=
        el =3D null;=0A=
      }=0A=
      return isBuggy;=0A=
    })();=0A=
=0A=
    return function() {=0A=
      if (!Prototype.BrowserFeatures.XPath) return false;=0A=
=0A=
      var e =3D this.expression;=0A=
=0A=
      if (Prototype.Browser.WebKit &&=0A=
       (e.include("-of-type") || e.include(":empty")))=0A=
        return false;=0A=
=0A=
      if ((/(\[[\w-]*?:|:checked)/).test(e))=0A=
        return false;=0A=
=0A=
      if (IS_DESCENDANT_SELECTOR_BUGGY) return false;=0A=
=0A=
      return true;=0A=
    }=0A=
=0A=
  })(),=0A=
=0A=
  shouldUseSelectorsAPI: function() {=0A=
    if (!Prototype.BrowserFeatures.SelectorsAPI) return false;=0A=
=0A=
    if (Selector.CASE_INSENSITIVE_CLASS_NAMES) return false;=0A=
=0A=
    if (!Selector._div) Selector._div =3D new Element('div');=0A=
=0A=
    try {=0A=
      Selector._div.querySelector(this.expression);=0A=
    } catch(e) {=0A=
      return false;=0A=
    }=0A=
=0A=
    return true;=0A=
  },=0A=
=0A=
  compileMatcher: function() {=0A=
    var e =3D this.expression, ps =3D Selector.patterns, h =3D =
Selector.handlers,=0A=
        c =3D Selector.criteria, le, p, m, len =3D ps.length, name;=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 =3D 0; i<len; i++) {=0A=
        p =3D ps[i].re;=0A=
        name =3D ps[i].name;=0A=
        if (m =3D e.match(p)) {=0A=
          this.matcher.push(Object.isFunction(c[name]) ? c[name](m) :=0A=
            new Template(c[name]).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, len =3D ps.length, name;=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 =3D 0; i<len; i++) {=0A=
        name =3D ps[i].name;=0A=
        if (m =3D e.match(ps[i].re)) {=0A=
          this.matcher.push(Object.isFunction(x[name]) ? x[name](m) :=0A=
            new Template(x[name]).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=
    var e =3D this.expression, results;=0A=
=0A=
    switch (this.mode) {=0A=
      case 'selectorsAPI':=0A=
        if (root !=3D=3D document) {=0A=
          var oldId =3D root.id, id =3D $(root).identify();=0A=
          id =3D id.replace(/([\.:])/g, "\\$1");=0A=
          e =3D "#" + id + " " + e;=0A=
        }=0A=
=0A=
        results =3D $A(root.querySelectorAll(e)).map(Element.extend);=0A=
        root.id =3D oldId;=0A=
=0A=
        return results;=0A=
      case 'xpath':=0A=
        return document._getElementsByXPath(this.xpath, root);=0A=
      default:=0A=
       return this.matcher(root);=0A=
    }=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, len =3D ps.length, name;=0A=
=0A=
    while (e && le !=3D=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i =3D 0; i<len; i++) {=0A=
        p =3D ps[i].re;=0A=
        name =3D ps[i].name;=0A=
        if (m =3D e.match(p)) {=0A=
          if (as[name]) {=0A=
            this.tokens.push([name, Object.clone(m)]);=0A=
            e =3D e.replace(m[0], '');=0A=
          } else {=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=
if (Prototype.BrowserFeatures.SelectorsAPI &&=0A=
 document.compatMode =3D=3D=3D 'BackCompat') {=0A=
  Selector.CASE_INSENSITIVE_CLASS_NAMES =3D (function(){=0A=
    var div =3D document.createElement('div'),=0A=
     span =3D document.createElement('span');=0A=
=0A=
    div.id =3D "prototype_test_id";=0A=
    span.className =3D 'Test';=0A=
    div.appendChild(span);=0A=
    var isIgnored =3D (div.querySelector('#prototype_test_id .test') =
!=3D=3D null);=0A=
    div =3D span =3D null;=0A=
    return isIgnored;=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: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=0A=
      return new Template("[@#{1}]").evaluate(m);=0A=
    },=0A=
    attr: function(m) {=0A=
      m[1] =3D m[1].toLowerCase();=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)]",=0A=
      'checked':     "[@checked]",=0A=
      'disabled':    "[(@disabled) and (@type!=3D'hidden')]",=0A=
      'enabled':     "[not(@disabled) and (@type!=3D'hidden')]",=0A=
      'not': function(m) {=0A=
        var e =3D m[6], p =3D Selector.patterns,=0A=
            x =3D Selector.xpath, le, v, len =3D p.length, name;=0A=
=0A=
        var exclusion =3D [];=0A=
        while (e && le !=3D e && (/\S/).test(e)) {=0A=
          le =3D e;=0A=
          for (var i =3D 0; i<len; i++) {=0A=
            name =3D p[i].name=0A=
            if (m =3D e.match(p[i].re)) {=0A=
              v =3D Object.isFunction(x[name]) ? x[name](m) : new =
Template(x[name]).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); 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); 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=
    { name: 'laterSibling', re: /^\s*~\s*/ },=0A=
    { name: 'child',        re: /^\s*>\s*/ },=0A=
    { name: 'adjacent',     re: /^\s*\+\s*/ },=0A=
    { name: 'descendant',   re: /^\s/ },=0A=
=0A=
    { name: 'tagName',      re: /^\s*(\*|[\w\-]+)(\b|$)?/ },=0A=
    { name: 'id',           re: /^#([\w\-\*]+)(\b|$)/ },=0A=
    { name: 'className',    re: /^\.([\w\-\*]+)(\b|$)/ },=0A=
    { name: 'pseudo',       re: =
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis=
)abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/ },=0A=
    { name: 'attrPresence', re: /^\[((?:[\w-]+:)?[\w-]+)\]/ },=0A=
    { name: 'attr',         re: =
/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^=
\]]*?)))?\]/ }=0A=
  ],=0A=
=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 nodeValue && Selector.operators[matches[2]](nodeValue, =
matches[5] || matches[6]);=0A=
    }=0A=
  },=0A=
=0A=
  handlers: {=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=
    mark: function(nodes) {=0A=
      var _true =3D Prototype.emptyFunction;=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._countedByPrototype =3D _true;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    unmark: (function(){=0A=
=0A=
      var PROPERTIES_ATTRIBUTES_MAP =3D (function(){=0A=
        var el =3D document.createElement('div'),=0A=
            isBuggy =3D false,=0A=
            propName =3D '_countedByPrototype',=0A=
            value =3D 'x'=0A=
        el[propName] =3D value;=0A=
        isBuggy =3D (el.getAttribute(propName) =3D=3D=3D value);=0A=
        el =3D null;=0A=
        return isBuggy;=0A=
      })();=0A=
=0A=
      return PROPERTIES_ATTRIBUTES_MAP ?=0A=
        function(nodes) {=0A=
          for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
            node.removeAttribute('_countedByPrototype');=0A=
          return nodes;=0A=
        } :=0A=
        function(nodes) {=0A=
          for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
            node._countedByPrototype =3D void 0;=0A=
          return nodes;=0A=
        }=0A=
    })(),=0A=
=0A=
    index: function(parentNode, reverse, ofType) {=0A=
      parentNode._countedByPrototype =3D Prototype.emptyFunction;=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._countedByPrototype)) 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._countedByPrototype)) node.nodeIndex =3D j++;=0A=
      }=0A=
    },=0A=
=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 (typeof (n =3D nodes[i])._countedByPrototype =3D=3D =
'undefined') {=0A=
          n._countedByPrototype =3D Prototype.emptyFunction;=0A=
          results.push(Element.extend(n));=0A=
        }=0A=
      return Selector.handlers.unmark(results);=0A=
    },=0A=
=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, 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=
    tagName: function(nodes, root, tagName, combinator) {=0A=
      var uTagName =3D tagName.toUpperCase();=0A=
      var results =3D [], h =3D Selector.handlers;=0A=
      if (nodes) {=0A=
        if (combinator) {=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=3D uTagName) =
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=
=0A=
      if (root =3D=3D document) {=0A=
        if (!targetNode) return [];=0A=
        if (!nodes) return [targetNode];=0A=
      } else {=0A=
        if (!root.sourceIndex || root.sourceIndex < 1) {=0A=
          var nodes =3D root.getElementsByTagName('*');=0A=
          for (var j =3D 0, node; node =3D nodes[j]; j++) {=0A=
            if (node.id =3D=3D=3D id) return [node];=0A=
          }=0A=
        }=0A=
      }=0A=
=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, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=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, combinator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=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=
    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=
    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._countedByPrototype) {=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=
        if (node.tagName =3D=3D '!' || node.firstChild) 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._countedByPrototype) 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 && (!node.type || node.type !=3D=3D 'hidden'))=0A=
          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 =3D=3D v || nv && =
nv.startsWith(v); },=0A=
    '$=3D': function(nv, v) { return nv =3D=3D v || nv && =
nv.endsWith(v); },=0A=
    '*=3D': function(nv, v) { return nv =3D=3D v || nv && nv.include(v); =
},=0A=
    '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + =
' '); },=0A=
    '|=3D': function(nv, v) { return ('-' + (nv || "").toUpperCase() +=0A=
     '-').include('-' + (v || "").toUpperCase() + '-'); }=0A=
  },=0A=
=0A=
  split: function(expression) {=0A=
    var expressions =3D [];=0A=
    expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, =
function(m) {=0A=
      expressions.push(m[1].strip());=0A=
    });=0A=
    return expressions;=0A=
  },=0A=
=0A=
  matchElements: function(elements, expression) {=0A=
    var matches =3D $$(expression), 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._countedByPrototype) 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=
    expressions =3D Selector.split(expressions.join(','));=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=
if (Prototype.Browser.IE) {=0A=
  Object.extend(Selector.handlers, {=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        if (node.tagName !=3D=3D "!") a.push(node);=0A=
      return a;=0A=
    }=0A=
  });=0A=
}=0A=
=0A=
function $$() {=0A=
  return Selector.findChildElements(document, $A(arguments));=0A=
}=0A=
=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    form =3D $(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 (Object.isUndefined(options.hash)) 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 'file' && (element.type =
!=3D 'submit' || (!submitted &&=0A=
            submit !=3D=3D false && (!submit || key =3D=3D submit) && =
(submitted =3D true)))) {=0A=
          if (key in result) {=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=
    var elements =3D $(form).getElementsByTagName('*'),=0A=
        element,=0A=
        arr =3D [ ],=0A=
        serializers =3D Form.Element.Serializers;=0A=
    for (var i =3D 0; element =3D elements[i]; i++) {=0A=
      arr.push(element);=0A=
    }=0A=
    return arr.inject([], function(elements, child) {=0A=
      if (serializers[child.tagName.toLowerCase()])=0A=
        elements.push(Element.extend(child));=0A=
      return elements;=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)$/i.test(element.tagName);=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=
=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=
=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)$/i.test(element.type))))=0A=
        element.select();=0A=
    } catch (e) { }=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=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=
=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 (Object.isUndefined(value)) return element.checked ? =
element.value : null;=0A=
    else element.checked =3D !!value;=0A=
  },=0A=
=0A=
  textarea: function(element, value) {=0A=
    if (Object.isUndefined(value)) return element.value;=0A=
    else element.value =3D value;=0A=
  },=0A=
=0A=
  select: function(element, value) {=0A=
    if (Object.isUndefined(value))=0A=
      return this[element.type =3D=3D 'select-one' ?=0A=
        'selectOne' : 'selectMany'](element);=0A=
    else {=0A=
      var opt, currentValue, single =3D !Object.isArray(value);=0A=
      for (var i =3D 0, length =3D element.length; i < length; i++) {=0A=
        opt =3D element.options[i];=0A=
        currentValue =3D this.optionValue(opt);=0A=
        if (single) {=0A=
          if (currentValue =3D=3D value) {=0A=
            opt.selected =3D true;=0A=
            return;=0A=
          }=0A=
        }=0A=
        else opt.selected =3D value.include(currentValue);=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=
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;=0A=
  }=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=
(function() {=0A=
=0A=
  var Event =3D {=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=
=0A=
  var docEl =3D document.documentElement;=0A=
  var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED =3D 'onmouseenter' in docEl=0A=
    && 'onmouseleave' in docEl;=0A=
=0A=
  var _isButton;=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=3D buttonMap[code];=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=
  } 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=
  function isLeftClick(event)   { return _isButton(event, 0) }=0A=
=0A=
  function isMiddleClick(event) { return _isButton(event, 1) }=0A=
=0A=
  function isRightClick(event)  { return _isButton(event, 2) }=0A=
=0A=
  function element(event) {=0A=
    event =3D Event.extend(event);=0A=
=0A=
    var node =3D event.target, type =3D event.type,=0A=
     currentTarget =3D event.currentTarget;=0A=
=0A=
    if (currentTarget && currentTarget.tagName) {=0A=
      if (type =3D=3D=3D 'load' || type =3D=3D=3D 'error' ||=0A=
        (type =3D=3D=3D 'click' && currentTarget.tagName.toLowerCase() =
=3D=3D=3D 'input'=0A=
          && currentTarget.type =3D=3D=3D 'radio'))=0A=
            node =3D currentTarget;=0A=
    }=0A=
=0A=
    if (node.nodeType =3D=3D Node.TEXT_NODE)=0A=
      node =3D node.parentNode;=0A=
=0A=
    return Element.extend(node);=0A=
  }=0A=
=0A=
  function findElement(event, expression) {=0A=
    var element =3D Event.element(event);=0A=
    if (!expression) return element;=0A=
    var elements =3D [element].concat(element.ancestors());=0A=
    return Selector.findElement(elements, expression, 0);=0A=
  }=0A=
=0A=
  function pointer(event) {=0A=
    return { x: pointerX(event), y: pointerY(event) };=0A=
  }=0A=
=0A=
  function pointerX(event) {=0A=
    var docElement =3D document.documentElement,=0A=
     body =3D document.body || { scrollLeft: 0 };=0A=
=0A=
    return event.pageX || (event.clientX +=0A=
      (docElement.scrollLeft || body.scrollLeft) -=0A=
      (docElement.clientLeft || 0));=0A=
  }=0A=
=0A=
  function pointerY(event) {=0A=
    var docElement =3D document.documentElement,=0A=
     body =3D document.body || { scrollTop: 0 };=0A=
=0A=
    return  event.pageY || (event.clientY +=0A=
       (docElement.scrollTop || body.scrollTop) -=0A=
       (docElement.clientTop || 0));=0A=
  }=0A=
=0A=
=0A=
  function stop(event) {=0A=
    Event.extend(event);=0A=
    event.preventDefault();=0A=
    event.stopPropagation();=0A=
=0A=
    event.stopped =3D true;=0A=
  }=0A=
=0A=
  Event.Methods =3D {=0A=
    isLeftClick: isLeftClick,=0A=
    isMiddleClick: isMiddleClick,=0A=
    isRightClick: isRightClick,=0A=
=0A=
    element: element,=0A=
    findElement: findElement,=0A=
=0A=
    pointer: pointer,=0A=
    pointerX: pointerX,=0A=
    pointerY: pointerY,=0A=
=0A=
    stop: stop=0A=
  };=0A=
=0A=
=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=
    function _relatedTarget(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=
    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=
    Event.extend =3D function(event, element) {=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=
=0A=
      Object.extend(event, {=0A=
        target: event.srcElement || element,=0A=
        relatedTarget: _relatedTarget(event),=0A=
        pageX:  pointer.x,=0A=
        pageY:  pointer.y=0A=
      });=0A=
=0A=
      return Object.extend(event, methods);=0A=
    };=0A=
  } else {=0A=
    Event.prototype =3D window.Event.prototype || =
document.createEvent('HTMLEvents').__proto__;=0A=
    Object.extend(Event.prototype, methods);=0A=
    Event.extend =3D Prototype.K;=0A=
  }=0A=
=0A=
  function _createResponder(element, eventName, handler) {=0A=
    var registry =3D Element.retrieve(element, =
'prototype_event_registry');=0A=
=0A=
    if (Object.isUndefined(registry)) {=0A=
      CACHE.push(element);=0A=
      registry =3D Element.retrieve(element, 'prototype_event_registry', =
$H());=0A=
    }=0A=
=0A=
    var respondersForEvent =3D registry.get(eventName);=0A=
    if (Object.isUndefined(respondersForEvent)) {=0A=
      respondersForEvent =3D [];=0A=
      registry.set(eventName, respondersForEvent);=0A=
    }=0A=
=0A=
    if (respondersForEvent.pluck('handler').include(handler)) return =
false;=0A=
=0A=
    var responder;=0A=
    if (eventName.include(":")) {=0A=
      responder =3D function(event) {=0A=
        if (Object.isUndefined(event.eventName))=0A=
          return false;=0A=
=0A=
        if (event.eventName !=3D=3D eventName)=0A=
          return false;=0A=
=0A=
        Event.extend(event, element);=0A=
        handler.call(element, event);=0A=
      };=0A=
    } else {=0A=
      if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED &&=0A=
       (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D =
"mouseleave")) {=0A=
        if (eventName =3D=3D=3D "mouseenter" || eventName =3D=3D=3D =
"mouseleave") {=0A=
          responder =3D function(event) {=0A=
            Event.extend(event, element);=0A=
=0A=
            var parent =3D event.relatedTarget;=0A=
            while (parent && parent !=3D=3D element) {=0A=
              try { parent =3D parent.parentNode; }=0A=
              catch(e) { parent =3D element; }=0A=
            }=0A=
=0A=
            if (parent =3D=3D=3D element) return;=0A=
=0A=
            handler.call(element, event);=0A=
          };=0A=
        }=0A=
      } else {=0A=
        responder =3D function(event) {=0A=
          Event.extend(event, element);=0A=
          handler.call(element, event);=0A=
        };=0A=
      }=0A=
    }=0A=
=0A=
    responder.handler =3D handler;=0A=
    respondersForEvent.push(responder);=0A=
    return responder;=0A=
  }=0A=
=0A=
  function _destroyCache() {=0A=
    for (var i =3D 0, length =3D CACHE.length; i < length; i++) {=0A=
      Event.stopObserving(CACHE[i]);=0A=
      CACHE[i] =3D null;=0A=
    }=0A=
  }=0A=
=0A=
  var CACHE =3D [];=0A=
=0A=
  if (Prototype.Browser.IE)=0A=
    window.attachEvent('onunload', _destroyCache);=0A=
=0A=
  if (Prototype.Browser.WebKit)=0A=
    window.addEventListener('unload', Prototype.emptyFunction, false);=0A=
=0A=
=0A=
  var _getDOMEventName =3D Prototype.K;=0A=
=0A=
  if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) {=0A=
    _getDOMEventName =3D function(eventName) {=0A=
      var translations =3D { mouseenter: "mouseover", mouseleave: =
"mouseout" };=0A=
      return eventName in translations ? translations[eventName] : =
eventName;=0A=
    };=0A=
  }=0A=
=0A=
  function observe(element, eventName, handler) {=0A=
    element =3D $(element);=0A=
=0A=
    var responder =3D _createResponder(element, eventName, handler);=0A=
=0A=
    if (!responder) return element;=0A=
=0A=
    if (eventName.include(':')) {=0A=
      if (element.addEventListener)=0A=
        element.addEventListener("dataavailable", responder, false);=0A=
      else {=0A=
        element.attachEvent("ondataavailable", responder);=0A=
        element.attachEvent("onfilterchange", responder);=0A=
      }=0A=
    } else {=0A=
      var actualEventName =3D _getDOMEventName(eventName);=0A=
=0A=
      if (element.addEventListener)=0A=
        element.addEventListener(actualEventName, responder, false);=0A=
      else=0A=
        element.attachEvent("on" + actualEventName, responder);=0A=
    }=0A=
=0A=
    return element;=0A=
  }=0A=
=0A=
  function stopObserving(element, eventName, handler) {=0A=
    element =3D $(element);=0A=
=0A=
    var registry =3D Element.retrieve(element, =
'prototype_event_registry');=0A=
=0A=
    if (Object.isUndefined(registry)) return element;=0A=
=0A=
    if (eventName && !handler) {=0A=
      var responders =3D registry.get(eventName);=0A=
=0A=
      if (Object.isUndefined(responders)) return element;=0A=
=0A=
      responders.each( function(r) {=0A=
        Element.stopObserving(element, eventName, r.handler);=0A=
      });=0A=
      return element;=0A=
    } else if (!eventName) {=0A=
      registry.each( function(pair) {=0A=
        var eventName =3D pair.key, responders =3D pair.value;=0A=
=0A=
        responders.each( function(r) {=0A=
          Element.stopObserving(element, eventName, r.handler);=0A=
        });=0A=
      });=0A=
      return element;=0A=
    }=0A=
=0A=
    var responders =3D registry.get(eventName);=0A=
=0A=
    if (!responders) return;=0A=
=0A=
    var responder =3D responders.find( function(r) { return r.handler =
=3D=3D=3D handler; });=0A=
    if (!responder) return element;=0A=
=0A=
    var actualEventName =3D _getDOMEventName(eventName);=0A=
=0A=
    if (eventName.include(':')) {=0A=
      if (element.removeEventListener)=0A=
        element.removeEventListener("dataavailable", responder, false);=0A=
      else {=0A=
        element.detachEvent("ondataavailable", responder);=0A=
        element.detachEvent("onfilterchange",  responder);=0A=
      }=0A=
    } else {=0A=
      if (element.removeEventListener)=0A=
        element.removeEventListener(actualEventName, responder, false);=0A=
      else=0A=
        element.detachEvent('on' + actualEventName, responder);=0A=
    }=0A=
=0A=
    registry.set(eventName, responders.without(responder));=0A=
=0A=
    return element;=0A=
  }=0A=
=0A=
  function fire(element, eventName, memo, bubble) {=0A=
    element =3D $(element);=0A=
=0A=
    if (Object.isUndefined(bubble))=0A=
      bubble =3D true;=0A=
=0A=
    if (element =3D=3D document && document.createEvent && =
!element.dispatchEvent)=0A=
      element =3D document.documentElement;=0A=
=0A=
    var event;=0A=
    if (document.createEvent) {=0A=
      event =3D document.createEvent('HTMLEvents');=0A=
      event.initEvent('dataavailable', true, true);=0A=
    } else {=0A=
      event =3D document.createEventObject();=0A=
      event.eventType =3D bubble ? 'ondataavailable' : 'onfilterchange';=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=
    return Event.extend(event);=0A=
  }=0A=
=0A=
=0A=
  Object.extend(Event, Event.Methods);=0A=
=0A=
  Object.extend(Event, {=0A=
    fire:          fire,=0A=
    observe:       observe,=0A=
    stopObserving: stopObserving=0A=
  });=0A=
=0A=
  Element.addMethods({=0A=
    fire:          fire,=0A=
=0A=
    observe:       observe,=0A=
=0A=
    stopObserving: stopObserving=0A=
  });=0A=
=0A=
  Object.extend(document, {=0A=
    fire:          fire.methodize(),=0A=
=0A=
    observe:       observe.methodize(),=0A=
=0A=
    stopObserving: stopObserving.methodize(),=0A=
=0A=
    loaded:        false=0A=
  });=0A=
=0A=
  if (window.Event) Object.extend(window.Event, Event);=0A=
  else window.Event =3D Event;=0A=
})();=0A=
=0A=
(function() {=0A=
  /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A=
     Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */=0A=
=0A=
  var timer;=0A=
=0A=
  function fireContentLoadedEvent() {=0A=
    if (document.loaded) return;=0A=
    if (timer) window.clearTimeout(timer);=0A=
    document.loaded =3D true;=0A=
    document.fire('dom:loaded');=0A=
  }=0A=
=0A=
  function checkReadyState() {=0A=
    if (document.readyState =3D=3D=3D 'complete') {=0A=
      document.stopObserving('readystatechange', checkReadyState);=0A=
      fireContentLoadedEvent();=0A=
    }=0A=
  }=0A=
=0A=
  function pollDoScroll() {=0A=
    try { document.documentElement.doScroll('left'); }=0A=
    catch(e) {=0A=
      timer =3D pollDoScroll.defer();=0A=
      return;=0A=
    }=0A=
    fireContentLoadedEvent();=0A=
  }=0A=
=0A=
  if (document.addEventListener) {=0A=
    document.addEventListener('DOMContentLoaded', =
fireContentLoadedEvent, false);=0A=
  } else {=0A=
    document.observe('readystatechange', checkReadyState);=0A=
    if (window =3D=3D top)=0A=
      timer =3D pollDoScroll.defer();=0A=
  }=0A=
=0A=
  Event.observe(window, 'load', fireContentLoadedEvent);=0A=
})();=0A=
=0A=
Element.addMethods();=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=
var Position =3D {=0A=
  includeScrollOffsets: false,=0A=
=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=
  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=
  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=
=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=

------=_NextPart_000_0000_01CE41A3.46780AF0
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.mathnet.ru/js/func_controls.js?v=1

	var CORRECT_EXIT=3D0;=0A=
	var allwins=3D'ALLOPENWINDOWS';=0A=
=0A=
	var isIE =3D window.navigator.userAgent.indexOf("MSIE")>-1;=0A=
	var GlassWindow=3Dfalse;=0A=
	var WaitWindow=3Dfalse;=0A=
=0A=
	function convertTrueTo1(isTrue){=0A=
		if(isTrue){return 1;}=0A=
		else{return 0;}=0A=
	}=0A=
=0A=
=0A=
	function loadJSDataPOST(URL,FORMID,postfunction) {=0A=
		//ShowGlassWindow(true);=0A=
		new Ajax.Request( URL, =0A=
				{ method: 'post',=0A=
				  parameters: $(FORMID).serialize(true),=0A=
				  onComplete: function(transport) {=0A=
					 	var response =3D transport.responseText;		=0A=
						eval(response);=0A=
						eval(postfunction);=0A=
						//ShowGlassWindow(false);=0A=
				},=0A=
				  onFailure: function(resp){=0A=
				  		alert('Failure in getting data');=0A=
						//ShowGlassWindow(false);=0A=
				}=0A=
		});=0A=
	}=0A=
=0A=
	function loadJSData(URL,postfunction) {=0A=
		//ShowGlassWindow(true);=0A=
		new Ajax.Request( URL, =0A=
				{ method: 'get',=0A=
				  onComplete: function(transport) {=0A=
					 	var response =3D transport.responseText;		=0A=
						eval(response);=0A=
						eval(postfunction);=0A=
						//ShowGlassWindow(false);=0A=
				},=0A=
				  onFailure: function(resp){=0A=
				  		alert('Failure in getting data');=0A=
						//ShowGlassWindow(false);=0A=
				}=0A=
		});=0A=
	}=0A=
=0A=
	function ShowWaitWindow(show){=0A=
		if(!WaitWindow){=0A=
			// =ED=E0 =EF=E5=F0=E2=EE=EC =EF=F0=EE=F5=EE=E4=E5 =
=F1=EE=E7=E4=E0=E5=EC =FD=EB=E5=EC=E5=ED=F2 - =
"=EF=EE=EB=F3=EF=F0=EE=E7=F0=E0=F7=ED=FB=E9 =FD=EA=F0=E0=ED"=0A=
			WaitWindow=3Ddocument.createElement('DIV');=0A=
			with(WaitWindow.style){=0A=
				display=3D'none';=0A=
				position=3D'absolute';=0A=
				height=3D0;	=0A=
				width=3D0;	=0A=
				zIndex=3D9999;=0A=
				if(isIE){=0A=
					backgroundColor =3D '#e6e6e6';=0A=
					filter=3D"progid:DXImageTransform.Microsoft.Alpha(Opacity=3D40, =
Style=3D0)";=0A=
				}=0A=
				else{=0A=
					backgroundImage =3D 'url(/gifs/alfa40-fon.png)';=0A=
				}=0A=
				//WaitWindow.innerHTML=3D'<div =
align=3Dcenter><br><br><br><br><br><img src=3D/gifs/crocodile.gif =
align=3Dcenter></div>';=0A=
				WaitWindow.innerHTML=3D"<div style=3D'background: transparent =
url(/gifs/spinner.gif) 50% 0 no-repeat;'></div>";=0A=
				WaitWindow.style.backgroundImage=3D'url(/gifs/spinner.gif)';=0A=
				WaitWindow.style.backgroundPosition=3D'center center';=0A=
				WaitWindow.style.backgroundRepeat=3D'no-repeat';=0A=
=0A=
			}=0A=
			document.body.appendChild(WaitWindow);=0A=
		}=0A=
=0A=
		if(show){=0A=
			with(WaitWindow.style){=0A=
				left =3D 0;=0A=
				top =3D document.body.scrollTop;=0A=
				width =3D document.body.clientWidth;=0A=
				height =3D document.body.clientHeight;=0A=
			}=0A=
		}=0A=
		WaitWindow.style.display=3Dshow?'block':'none';=0A=
	}=0A=
=0A=
=0A=
	function ShowGlassWindow(show){=0A=
		if(!GlassWindow){=0A=
			// =ED=E0 =EF=E5=F0=E2=EE=EC =EF=F0=EE=F5=EE=E4=E5 =
=F1=EE=E7=E4=E0=E5=EC =FD=EB=E5=EC=E5=ED=F2 - =
"=EF=EE=EB=F3=EF=F0=EE=E7=F0=E0=F7=ED=FB=E9 =FD=EA=F0=E0=ED"=0A=
			GlassWindow=3Ddocument.createElement('DIV');=0A=
			with(GlassWindow.style){=0A=
				display=3D'none';=0A=
				position=3D'absolute';=0A=
				height=3D0;	=0A=
				width=3D0;	=0A=
				zIndex=3D9998;=0A=
				if(isIE){=0A=
					backgroundColor =3D '#FFFFFF';=0A=
					filter=3D"progid:DXImageTransform.Microsoft.Alpha(Opacity=3D40, =
Style=3D0)";=0A=
				}=0A=
				else=0A=
					backgroundImage =3D 'url(/gifs/alfa40-fon.png)';=0A=
			}=0A=
			document.body.appendChild(GlassWindow);=0A=
		}=0A=
=0A=
		if(show){=0A=
			with(GlassWindow.style){=0A=
				left =3D 0;=0A=
				top =3D document.body.scrollTop;=0A=
				width =3D document.body.clientWidth;=0A=
				height =3D document.body.clientHeight;=0A=
			}=0A=
		}=0A=
		GlassWindow.style.display=3Dshow?'block':'none';=0A=
	}=0A=
=0A=
=0A=
=0A=
	function =
show_lnk_txt_field(formname,field,edit_disabled,nname,postfunction,foncha=
ngefunction){=0A=
		=
script=3D'/ctools/show_lnk_txt_field.phtml?formname=3D'+formname+'&field=3D=
'+field+'&edit_disabled=3D'+edit_disabled+'&nname=3D'+nname+'&postfunctio=
n=3D'+postfunction+'&fonchangefunction=3D'+fonchangefunction;=0A=
		txt_field=3Dopenwin(script,'txt_field'+field,440,240);=0A=
	}=0A=
=0A=
=0A=
	function preview_field(formname,field,phpfunction){=0A=
		=
script=3D'/ctools/preview_field.phtml?formname=3D'+formname+'&field=3D'+f=
ield+'&phpfunction=3D'+phpfunction;=0A=
		txt_field=3Dopenwin(script,'preview_field'+field,640,440,1);=0A=
	}=0A=
=0A=
=0A=
	function preview_PHP_function(phpfunctionwithargs){=0A=
		=
script=3D'/ctools/preview_PHP_function.phtml?phpfunctionwithargs=3D'+phpf=
unctionwithargs;=0A=
		txt_field=3Dopenwin(script,'preview_PHP'+getRanName(),640,440,1);=0A=
	}=0A=
=0A=
=0A=
	function thisClose(win){=0A=
		var argv =3D thisClose.arguments;=0A=
		var argc =3D thisClose.arguments.length;=0A=
		var ifClose =3D (argc > 1) ? argv[1] : false;=0A=
		if(ifClose && ifClose=3D=3D1){win.close();}=0A=
	}=0A=
=0A=
=0A=
	function getRanName(){=0A=
		DD=3Dnew Date();=0A=
		str=3DDD.getTime();=0A=
		return(str);=0A=
	}=0A=
=0A=
	function openwin(href,name,w,h){=0A=
		var argv =3D openwin.arguments;=0A=
		var argc =3D openwin.arguments.length;=0A=
		var scrollview=3D(argc > 4) ? ',scrollbars=3D'+argv[4] : '';=0A=
		var menuview=3D(argc > 5) ? ','+argv[5] : '0';=0A=
		//name=3Dwindow.open(href,name,'width=3D'+w+',height=3D'+h);=0A=
		=
name=3Dwindow.open(href,name,'width=3D'+w+',height=3D'+h+',menubar=3D'+me=
nuview+',resizable=3D1,status=3D0,toolbar=3D0,location=3D0'+scrollview);=0A=
		name.focus();=0A=
		//currentwins=3DgetCookie(allwins);=0A=
		//currentwins=3Dcurrentwins+' '+name.name;=0A=
		//setCookie(allwins,currentwins);=0A=
		return name;=0A=
	}=0A=
=0A=
=0A=
	function openmodalwin(href,name,fValues,w,h){=0A=
		name=3Dwindow.showModalDialog(href,fValues,'dialogHeight: '+h+'px; =
dialogWidth: '+w+'px; edge: Raised; border=3Dthin; center: Yes; help: =
No; resizable: Yes; status: No;');=0A=
		return name;=0A=
	}=0A=
=0A=
        function fmodalclose(cProp){ =0A=
	        window.returnValue=3DcProp;=0A=
	        event.returnValue=3Dfalse;=0A=
	        window.close();=0A=
        }=0A=
=0A=
	function wailtpls(frame){=0A=
		doc=3Dframe.document;=0A=
		doc.open();		=0A=
		doc.write(=0A=
		'<link href=3D/css/search.css type=3Dtext/css rel=3Dstylesheet>'+=0A=
		'<body class=3DFRAME1>'+=0A=
		'<br>'+=0A=
		'<center>'+=0A=
		'<img src=3D/gifs/crocodile.gif>'+=0A=
		'<br><br>'+=0A=
		'=CF=EE=E6=E0=EB=F3=E9=F1=F2=E0, =EF=EE=E4=EE=E6=E4=E8=F2=E5 ...'+=0A=
		'</body>'=0A=
		);=0A=
		doc.close();=0A=
	}=0A=
=0A=
	function wait_pls(win,windetails){=0A=
		doc=3Dwin.document;=0A=
		doc.open();=0A=
		doc.write('<link href=3D/css/card.css type=3Dtext/css =
rel=3Dstylesheet>'+=0A=
			 '<body class=3DMAIN><center><br><br>=CC=E8=ED=F3=F2=EE=F7=EA=F3 =
...');=0A=
		doc.close();=0A=
=0A=
		=0A=
		if(doc=3Dwindetails.document){=0A=
			doc.open();=0A=
			doc.write('<body bgcolor=3Dlightyellow>');=0A=
			doc.close();=0A=
		}=0A=
	}=0A=
=0A=
	function ShowHelp(page){=0A=
	=
help=3Dwindow.open('','help','width=3D700,height=3D500,scrollbars=3Dauto,=
resizable=3D1');=0A=
	help.location.href=3D'/help/help.phtml?page=3D'+page;=0A=
	help.focus();=0A=
	}=0A=
=0A=
	function setCorrectExit(){=0A=
		CORRECT_EXIT=3D1;=0A=
	}=0A=
=0A=
	function getCorrectExit(){=0A=
		if(CORRECT_EXIT=3D=3D1){return true;}=0A=
		else{return false;}=0A=
	}=0A=
=0A=
	=0A=
=0A=
	function fBeforeClose(EDIT_VALUE){=0A=
	if(EDIT_VALUE=3D=3D'save' && CORRECT_EXIT=3D=3D0){=0A=
		event.cancelBubble =3D true;=0A=
		event.returnValue =3D '=C2=FB =ED=E5 =F1=EE=F5=F0=E0=ED=E8=EB=E8 =
=EF=EE=F1=EB=E5=E4=ED=E8=E5 =E8=E7=EC=E5=ED=E5=ED=E8=FF, =
=E2=ED=E5=F1=E5=ED=ED=FB=E5 =E2 =
=EA=E0=F0=F2=EE=F7=EA=F3.\\n=CD=E0=E6=EC=E8=F2=E5 =
=D1=EE=F5=F0=E0=ED=E8=F2=FC =E8=EB=E8 =CE=F2=EC=E5=ED=E0, =E2 =
=EF=F0=EE=F2=E8=E2=ED=EE=EC =F1=EB=F3=F7=E0=E5 =EA=E0=F0=F2=EE=F7=EA=E0 =
=E1=F3=E4=E5=F2 =E7=E0=E1=EB=EE=EA=E8=F0=EE=E2=E0=ED=E0.';=0A=
		return false;=0A=
	}=0A=
	}=0A=
=0A=
=0A=
	function fClose(EDIT_VALUE,id,CardType,JrnID,ifnew){=0A=
	if(EDIT_VALUE=3D=3D'Save' && CORRECT_EXIT=3D=3D0){=0A=
		=
script=3D'../tools/incorrect_exit.phtml?CardType=3D'+CardType+'&id=3D'+id=
;=0A=
		if(CardType=3D=3D'paper'){=0A=
		script=3Dscript+'&JrnID=3D'+JrnID+'&ifnew=3D'+ifnew;=0A=
		}=0A=
		opener.parent.frames['_invisible'].location=3Dscript;=0A=
	}=0A=
	}=0A=
=0A=
=0A=
	function nocontextmenu(){=0A=
	if(DOM && IE){=0A=
		//event.cancelBubble =3D true;=0A=
		//event.returnValue =3D false;=0A=
	}=0A=
	return false;=0A=
	}=0A=
=0A=
=0A=
	//document.oncontextmenu =3D nocontextmenu; 	// Zapret na vivod =
standartnogo menu IE =0A=
=0A=
=0A=
=0A=
	function ViewAsDisabled(formname){=0A=
		ElementsLength=3Dformname.elements.length;=0A=
		for(el=3D0;el<ElementsLength;el++){=0A=
			elem=3Dformname.elements[el];=0A=
			if(elem.disabled=3D=3D1){elem.style.color=3D'gray';}=0A=
		}=0A=
	}=0A=
=0A=
=0A=
	function DisableButtons(formname){=0A=
	ElementsLength=3Dformname.elements.length;=0A=
		for(el=3D0;el<ElementsLength;el++){=0A=
		ElType=3Dmyform.elements[el].type;=0A=
			if(ElType=3D=3D'button' || ElType=3D=3D'submit' || =
ElType=3D=3D'reset'){=0A=
				myform.elements[el].disabled=3D1;=0A=
			}=0A=
		}=0A=
	}=0A=
=0A=
=0A=
=0A=
=0A=
	function KeyPressEvent(e){	=0A=
		e =3D e || window.Event || window.event;=0A=
		key=3De.which || e.keyCode;=0A=
		switch(key){=0A=
			case 13:=0A=
				fsubmit();=0A=
				break;=0A=
		}=0A=
=0A=
	}=0A=
=0A=
=0A=
	function getCookieVal(offset){=0A=
		var endstr=3Ddocument.cookie.indexOf(';',offset);=0A=
		if (endstr =3D=3D -1)=0A=
		endstr=3Ddocument.cookie.length;=0A=
		return unescape(document.cookie.substring(offset,endstr));=0A=
	}=0A=
          =0A=
	function getCookie(name){=0A=
		var arg=3Dname+'=3D';=0A=
		var alen=3Darg.length;=0A=
		var clen=3Ddocument.cookie.length;=0A=
		var i=3D0;=0A=
		while(i < clen){=0A=
			var j=3Di+alen;=0A=
			if(document.cookie.substring(i,j)=3D=3Darg){return getCookieVal(j);}=0A=
			i=3Ddocument.cookie.indexOf(' ',i)+1;=0A=
			if(i=3D=3D0) break;=0A=
		}=0A=
		return '';=0A=
	}=0A=
=0A=
	function setCookie(name,value){=0A=
		var argv =3D setCookie.arguments;=0A=
		var argc =3D setCookie.arguments.length;=0A=
		var expires =3D (argc > 2) ? argv[2] : null;=0A=
		var path =3D (argc > 3) ? argv[3] : null;=0A=
		var domain =3D (argc > 4) ? argv[4] : null;=0A=
		var secure =3D (argc > 5) ? argv[5] : false;=0A=
		document.cookie =3D name + '=3D' + escape (value) +=0A=
		((expires =3D=3D null) ? '' : ('; expires=3D' + =
expires.toGMTString())) +=0A=
		((path =3D=3D null) ? '' : ('; path=3D' + path)) +=0A=
		((domain =3D=3D null) ? '' : ('; domain=3D' + domain)) +=0A=
		((secure =3D=3D true) ? '; secure' : '');=0A=
	}=0A=
                              =0A=
=0A=
	function changeDisplayMode(eItem){=0A=
		if(document.getElementById(eItem).style.display=3D=3D'none'){=0A=
			document.getElementById(eItem).style.display=3D'';=0A=
		}=0A=
		else{=0A=
			document.getElementById(eItem).style.display=3D'none';=0A=
		}=0A=
=0A=
	}=0A=
=0A=
=0A=
=0A=
	function getBodySize() {=0A=
	  var w =3D 0, h =3D 0;=0A=
	  if (typeof(window.innerWidth) =3D=3D 'number' ) {=0A=
	    //Non-IE=0A=
	    w =3D window.innerWidth;=0A=
	    h =3D window.innerHeight;=0A=
	  }=0A=
	  else if(document.documentElement && =
(document.documentElement.clientWidth || =
document.documentElement.clientHeight)) {=0A=
	    //IE 6+ in 'standards compliant mode'=0A=
	    w =3D document.documentElement.clientWidth;=0A=
	    h =3D document.documentElement.clientHeight;=0A=
	  }=0A=
	  else if(document.body && (document.body.clientWidth || =
document.body.clientHeight)) {=0A=
	    //IE 4 compatible=0A=
	    w =3D document.body.clientWidth;=0A=
	    h =3D document.body.clientHeight;=0A=
	  }=0A=
	  return {width: w, height: h};=0A=
	}=0A=
=0A=
 =0A=
	function getBodyScroll(){=0A=
	  var t =3D 0, l =3D 0;=0A=
	  t =3D self.pageYOffset || (document.documentElement && =
document.documentElement.scrollTop) || (document.body && =
document.body.scrollTop);=0A=
	  l =3D self.pageXOffset || (document.documentElement && =
document.documentElement.scrollLeft) || (document.body && =
document.body.scrollLeft);=0A=
	  return {top: t, left: l};=0A=
	}=0A=
 =0A=
=0A=
=0A=

------=_NextPart_000_0000_01CE41A3.46780AF0--
