From: <Saved by Windows Internet Explorer 7>
Subject: Athens Exchange - Pawtropolis: Fixing Pet Behavior Problems Made Easy
Date: Sat, 10 May 2008 09:38:01 -0400
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C8B281.89ADE760"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/articles/409

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML><HEAD><TITLE>Athens Exchange - Pawtropolis: Fixing Pet Behavior =
Problems Made Easy</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"Boxkite Media" name=3Dauthor>
<META=20
content=3D"pet, behavior, dogs, adoption, rescue, human society, athens, =
athens, georgia, atlanta, news, music, sports, uga, university of =
georgia, bulldogs, indie, rock, emo, punk, live, review, criticism, =
magazine, online, newspaper, media, gaming, technology, blog, jam bands, =
blues, politics, local, advertising"=20
name=3Dkeywords>
<META=20
content=3D"Athens Exchange is an online magazine serving the Athens and =
Atlanta, Georgia area.  We cover music, local news and politics, sports, =
and technology."=20
name=3Ddescription>
<META content=3Dall name=3Drobots>
<META content=3Ddqr3PUe1tyRrPvuW7JTj73ho7aShbKeWLIVEwShUcHI=3D =
name=3Dverify-v1>
<META content=3D441d36e7745f3edc name=3Dy_key><LINK=20
href=3D"http://www.athensexchange.com/style.css" type=3Dtext/css=20
rel=3Dstylesheet><LINK =
href=3D"http://www.athensexchange.com/style_ash.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://www.athensexchange.com/css/style.css" type=3Dtext/css=20
rel=3Dstylesheet><LINK =
href=3D"http://www.athensexchange.com/css/nav.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"http://www.athensexchange.com/css/feed2js_film.css" =
type=3Dtext/css=20
rel=3Dstylesheet><LINK title=3D"Athens Exchange RSS"=20
href=3D"http://feeds.feedburner.com/AthensExchange" =
type=3Dapplication/rss+xml=20
rel=3Dalternate>
<SCRIPT type=3Dtext/javascript>
	<!--
	function openWindow(url, name, features){
		var newWindow =3D window.open(url, name, features);
	}
=09
	if("" !=3D ""){
		alert("");
	}
=09
	// -->
	</SCRIPT>

<SCRIPT =
src=3D"http://www.athensexchange.com/inc/scriptaculous/lib/prototype.js" =

type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://www.athensexchange.com/inc/scriptaculous/src/scriptaculous.=
js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.athensexchange.com/inc/js/md4.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.athensexchange.com/inc/js/md5.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.athensexchange.com/inc/js/datePicker.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.athensexchange.com/inc/js/sha1.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.athensexchange.com/inc/js/ajax.php"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.athensexchange.com/inc/js/lightbox.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.athensexchange.com/inc/js/toggle.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://www.athensexchange.com/inc/js/confirmNav.js"=20
type=3Dtext/javascript></SCRIPT>

<META content=3D"MSHTML 6.00.6000.16640" name=3DGENERATOR></HEAD>
<BODY>
<DIV align=3Dcenter>
<DIV id=3Dcontainer style=3D"TEXT-ALIGN: left">
<DIV id=3Dlogo><A id=3Dmasthead =
href=3D"http://www.athensexchange.com/"><IMG=20
style=3D"FLOAT: left" alt=3D"Athens Exchange"=20
src=3D"http://www.athensexchange.com/img/newLogo.jpg"> </A>
<DIV id=3DmainNav>
<DIV id=3DtabsB>
<UL>
  <LI><A href=3D"http://www.athensexchange.com/"><SPAN>home</SPAN></A>=20
  <LI><A =
href=3D"http://www.athensexchange.com/daily"><SPAN>daily</SPAN></A>=20
  <LI><A =
href=3D"http://www.athensexchange.com/athens"><SPAN>athens</SPAN></A> =
<!-- <li><a  href=3D"http://www.athensexchange.com/uga" ><span =
>uga</span></a></li> -->
  <LI><A =
href=3D"http://www.athensexchange.com/music"><SPAN>music</SPAN></A>=20
  <LI><A href=3D"http://www.athensexchange.com/film"><SPAN>film &amp;=20
  tv</SPAN></A>=20
  <LI><A =
href=3D"http://www.athensexchange.com/food"><SPAN>food</SPAN></A>=20
  <LI><A =
href=3D"http://www.athensexchange.com/sports"><SPAN>sports</SPAN></A>=20
  <LI><A href=3D"http://www.athensexchange.com/tech"><SPAN>sci &amp;=20
  tech</SPAN></A> </LI></UL></DIV></DIV></DIV>
<DIV id=3DsubNav>
<DIV id=3Dsyndication>&nbsp; <!-- AddThis Bookmark Button BEGIN -->
<SCRIPT type=3Dtext/javascript>
					  addthis_url    =3D location.href;  =20
					  addthis_title  =3D document.title; =20
					  addthis_pub    =3D 'boxkite';    =20
					</SCRIPT>

<SCRIPT src=3D"http://s7.addthis.com/js/addthis_widget.php?v=3D12"=20
type=3Dtext/javascript></SCRIPT>
<!-- AddThis Bookmark Button END --></DIV>
<DIV id=3DdailyInfo>Saturday, May 10, 2008<BR>Weather: , =B0 </DIV>
<DIV id=3Dsearch>
<FORM name=3DfrmSearch action=3Dhttp://www.athensexchange.com/search=20
method=3Dpost>search: <INPUT style=3D"WIDTH: 200px" type=3Dsearch =
name=3Dsearch>&nbsp;=20
</FORM></DIV></DIV><!-- <br class=3D"clear: both;" /> -->
<DIV id=3DmainNavOuter>
<DIV id=3Darticle>
<TABLE width=3D"99%" border=3D0>
  <TBODY>
  <TR>
    <TD>
      <DIV style=3D"FONT-SIZE: 13px">Buy <A=20
      href=3D"http://www.athensexchange.com/go/9?ajax">Radiohead =
tickets</A>, <A=20
      href=3D"http://www.athensexchange.com/go/10?ajax">Coachella =
Festival=20
      tickets</A>, <A =
href=3D"http://www.athensexchange.com/go/11?ajax">Kanye West=20
      tickets</A>, <A =
href=3D"http://www.athensexchange.com/go/12?ajax">Tom Petty=20
      tickets</A>, <A =
href=3D"http://www.athensexchange.com/go/13?ajax">Rascal=20
      Flatts tickets</A>, and loads more <A=20
      href=3D"http://www.athensexchange.com/go/14?ajax">concert =
tickets</A> right=20
      here! </DIV><BR><BR>
      <SCRIPT type=3Dtext/javascript><!--=0A=
				google_ad_client =3D "pub-5412058639302304";=0A=
				google_ad_width =3D 120;=0A=
				google_ad_height =3D 600;=0A=
				google_ad_format =3D "120x600_as";=0A=
				google_ad_type =3D "text_image";=0A=
				google_ad_channel =3D"5516584417";=0A=
				google_color_border =3D "990000";=0A=
				google_color_bg =3D "FFFFFF";=0A=
				google_color_link =3D "333333";=0A=
				google_color_url =3D "666666";=0A=
				google_color_text =3D "333333";=0A=
			//--></SCRIPT>

      <SCRIPT =
src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"=20
      type=3Dtext/javascript>=0A=
			</SCRIPT>
    </TD>
    <TD class=3DarticleCell>
      <DIV id=3DarticleActions>
      <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D"100%" =
align=3Dcenter border=3D0>
        <TBODY>
        <TR>
          <TD vAlign=3Dcenter align=3Dleft><A=20
            =
href=3D"http://www.athensexchange.com/articles/409#postcomment"><IMG=20
            height=3D10 =
src=3D"http://www.athensexchange.com/img/commentIcon.jpg">=20
            Post a Comment</A> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A=20
            =
href=3D"javascript:openWindow('http://www.athensexchange.com/popups/email=
ToFriend.php?page=3D409', 'emailToFriend', 'scrollbars=3Dno, =
width=3D800, height=3D700, toolbar=3Dno, location=3Dno, =
directories=3Dno, menubar=3Dno, resizable=3Dno')"><IMG=20
            height=3D10 =
src=3D"http://www.athensexchange.com/img/mailIcon.jpg">=20
            E-mail To A Friend </A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
<A=20
            =
href=3D"javascript:openWindow('http://www.athensexchange.com/popups/listJ=
oin.php', 'listJoin', 'scrollbars=3Dno, width=3D700, height=3D500, =
toolbar=3Dno, location=3Dno, directories=3Dno, menubar=3Dno, =
resizable=3Dno');"><IMG=20
            height=3D10 =
src=3D"http://www.athensexchange.com/img/listIcon.jpg"> Join=20
            The List</A> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN=20
            style=3D"POSITION: relative; TOP: 3px"><!-- AddThis Bookmark =
Button BEGIN --><A=20
            onclick=3D"addthis_url=3Dlocation.href; addthis_title =3D =
document.title; return addthis_click(this);"=20
            href=3D"http://www.addthis.com/bookmark.php" =
target=3D_blank><IMG=20
            height=3D16 alt=3D"AddThis Social Bookmark Button"=20
            src=3D"http://s9.addthis.com/button1-share.gif" width=3D125=20
border=3D0></A>
            <SCRIPT type=3Dtext/javascript>var addthis_pub =3D =
'boxkite';</SCRIPT>

            <SCRIPT src=3D"http://s9.addthis.com/js/widget.php?v=3D10"=20
            type=3Dtext/javascript></SCRIPT>
            =20
      <!-- AddThis Bookmark Button END =
--></SPAN></TD></TR></TBODY></TABLE></DIV>
      <H1>Pawtropolis: Fixing Pet Behavior Problems Made Easy </H1>
      <P>by <A href=3D"http://www.athensexchange.com/authors/99">Nina =
Eyrich</A>=20
      <BR>11/02/2007 <BR><BR>Frustrated pet owners rejoice, for the =
answer to=20
      your pet=92s hyperactive behavior at the end of a long day has =
arrived.=20
      <BR><BR>No longer will you moan at the sight of your faithful =
companion=92s=20
      anticipation to go out and play after you had a long day at the =
office or=20
      in school. <A href=3D"http://athenspetropolis.com/"=20
      target=3D_blank>Pawtropolis</A>, a doggie-day care center off =
Atlanta=20
      Highway in Athens, Ga. welcomes dogs of all different sizes and=20
      breeds.<BR><BR>Pawtropolis offers many different programs =
including=20
      overnight daycare and boarding, grooming, obedience and behavior =
training,=20
      and even in-home pet care for older owners.<BR><BR>=93We have a =
place for=20
      your pets. We=92re a one stop shop,=94 said founder and owner of =
Pawtropolis,=20
      Amanda Rodriguez. <BR><BR>At 15, Rodriguez started obedience =
training with=20
      her first dog, a Dalmatian named Lacey. She quickly noticed a =
common theme=20
      in the behavior of all dogs: they were under-socialized in the =
pack.=20
      <BR><BR>A few years later, as pet daycare started to emerge around =
the=20
      country, the enjoyment of owning her own business was an =
opportunity that=20
      Rodriguez couldn=92t pass up. In December 2001 Pawtropolis opened =
and=20
      recently moved onto a larger property to accommodate more=20
      animals.<BR><BR>=93Owners underestimate an animal=92s need for =
exercise and=20
      discipline,=94 Rodriguez said. <BR>Day-care centers like =
Pawtropolis provide=20
      a controlled environment where dogs can learn valuable social =
skills that=20
      make them better members of their families. The goal is to monitor =

      behavioral issues, particularly aggression, and correct them over=20
      time.<BR><BR>In addition to day-care services, Pawtropolis also =
holds=20
      adoption days for rescued animals on the fourth Saturday of every =
month.=20
      They rescue both pure bred and mixed breed dogs.<BR><BR>Rodriguez =
realizes=20
      that many people are wary of adopting =93mutts=94 and prefer the =
pure=20
      breeds.<BR><BR>=93The breed tells an owner the skill set of a dog =
and can=20
      offer more detailed knowledge about size and temperament, but =
unless an=20
      owner plans to show the dog, prospective owners should go with=20
      rescuing.=94<BR><BR>Getting a purebred encourages =93backyard =
breeders,=94=20
      people who breed for money without knowledge of a dog=92s family =
history.=20
      These breeders cause the brunt of problems with overpopulation.=20
      <BR><BR>=93Every single household would have to own seven dogs for =

      euthanization of animals in America to stop,=94 Rodriguez said. =
=93The benefit=20
      of adopting a rescued animal, as opposed to a purebred, is that =
rescues=20
      have been exposed to foster situations and therefore their =
temperament is=20
      more controlled.=94<BR><BR>Whether you=92re looking for a place to =
keep man=92s=20
      best friend during the day or thinking of adding another member to =
your=20
      family, Pawtropolis has what you=92re looking =
for.<BR><BR>Pawtropolis=92 next=20
      adoption day is Nov. 10 at 10 a.m.<BR></P>
      <DIV id=3Dcomments>
      <H2>Technorati Tags</H2><A href=3D"http://technorati.com/tag/pet"=20
      target=3D_blank rel=3Dtag>Pet</A> &nbsp; <A=20
      href=3D"http://technorati.com/tag/behavior" target=3D_blank=20
      rel=3Dtag>Behavior</A> &nbsp; <A =
href=3D"http://technorati.com/tag/dogs"=20
      target=3D_blank rel=3Dtag>Dogs</A> &nbsp; <A=20
      href=3D"http://technorati.com/tag/adoption" target=3D_blank=20
      rel=3Dtag>Adoption</A> &nbsp; <A =
href=3D"http://technorati.com/tag/rescue"=20
      target=3D_blank rel=3Dtag>Rescue</A> &nbsp; <A=20
      href=3D"http://technorati.com/tag/human%20society" target=3D_blank =

      rel=3Dtag>Human Society</A> &nbsp; <A=20
      href=3D"http://technorati.com/tag/athens" target=3D_blank =
rel=3Dtag>Athens</A>=20
      &nbsp; </DIV><!-- <div id=3D"trackback"> --><!-- <h2>Trackback =
Pings</h2> --><!-- <p>TrackBack URL for this entry:</p> --><!-- =
<p>http://www.athensexchange.com/mt-tb.cgi/263</p> --><!-- </div> -->
      <DIV id=3Dcomments>
      <H2>Comments &nbsp; <SPAN id=3Dsubcomments>[<A=20
      =
href=3D"http://www.athensexchange.com/articles/409#postcomment">post a=20
      comment</A>]</SPAN></H2>
      <TABLE>
        <TBODY></TBODY></TABLE></DIV>
      <DIV id=3Dpostcomment>
      <FORM id=3DfrmComment name=3DfrmComment=20
      onsubmit=3D"if(!validateComments()) { return false; }"=20
      action=3Dhttp://www.athensexchange.com/comments =
method=3Dpost><INPUT=20
      type=3Dhidden value=3D409 name=3Did>=20
      <TABLE>
        <TBODY>
        <TR>
          <TD><SPAN id=3DlblName>Name</SPAN></TD>
          <TD><INPUT style=3D"WIDTH: 200px" name=3Dname></TD></TR>
        <TR>
          <TD>Email</TD>
          <TD><INPUT style=3D"WIDTH: 200px" name=3Demail></TD></TR>
        <TR>
          <TD>URL</TD>
          <TD><INPUT style=3D"WIDTH: 200px" value=3Dhttp:// =
name=3Durl></TD></TR>
        <TR>
          <TD><SPAN id=3DlblBody>Body</SPAN></TD>
          <TD><TEXTAREA style=3D"WIDTH: 300px; HEIGHT: 150px" =
name=3Dbody></TEXTAREA></TD></TR>
        <TR>
          <TD>Are you human?</TD>
          <TD><IMG =
src=3D"http://www.athensexchange.com/inc/code.php"><BR><INPUT=20
            type=3Dhidden value=3D3300197ac3fa0e66b84ce8d9e95cc469 =
name=3Dcode> <INPUT=20
            style=3D"WIDTH: 200px" name=3Dhuman> </TD></TR>
        <TR>
          <TD align=3Dright colSpan=3D2><INPUT type=3Dsubmit =
value=3DSubmit name=3Dsubmit>=20
      </TD></TR></TBODY></TABLE></FORM></DIV></TD>
    <TD style=3D"PADDING-LEFT: 5px; BORDER-LEFT: #ccc 1px solid" =
vAlign=3Dtop>
      <DIV class=3DarticleRightBox>
      <DIV id=3DtabsB_2>
      <UL>
        <LI><A=20
        onclick=3D"$('fresh1').style.display =3D 'none'; =
Effect.Appear('popular'); return false;"=20
        =
href=3D"http://www.athensexchange.com/articles/409#"><SPAN>popular</SPAN>=
</A>=20

        <LI><A=20
        onclick=3D"$('popular').style.display =3D 'none'; =
Effect.Appear('fresh1'); return false;"=20
        =
href=3D"http://www.athensexchange.com/articles/409#"><SPAN>fresh</SPAN></=
A>=20
        </LI></UL></DIV>
      <DIV class=3Dcontent>
      <UL id=3Dpopular>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/817">Jon Favreau, =
<I>Iron=20
        Man</I> </A></SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/815">Julian =
Schnabel,=20
        <I>The Diving Bell and the Butterfly</I> </A></SPAN></LI></UL>
      <UL id=3Dfresh1 style=3D"DISPLAY: none">
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/807">Lady =
Antebellum,=20
        Georgia Theatre, 4/28/07 </A></SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/812">A Southern =
Culinary=20
        Delight: Marti=92s At Midday </A></SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/817">Jon Favreau, =
<I>Iron=20
        Man</I> </A></SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/815">Julian =
Schnabel,=20
        <I>The Diving Bell and the Butterfly</I> </A></SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/813">Stefan =
Ruzowitzky,=20
        <I>The Counterfeiters</I> </A></SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/678">Question =
Your Staples:=20
        Lettuce v. Spinach </A></SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/728">7 Days: =
Volunteering=20
        In Athens </A></SPAN></LI></UL></DIV></DIV>
      <DIV class=3DarticleRightBox>
      <DIV id=3DtabsB_2>
      <UL>
        <LI><A =
href=3D"http://www.athensexchange.com/articles/409#"><SPAN>more=20
        athens </SPAN></A></LI></UL></DIV>
      <DIV class=3Dcontent>
      <UL>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dcategory><A=20
        =
href=3D"http://www.athensexchange.com/articles/music.asp">[Recorded]</A> =

        </SPAN><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/812">A Southern =
Culinary=20
        Delight: Marti=92s At Midday</A> </SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dcategory><A=20
        =
href=3D"http://www.athensexchange.com/articles/music.asp">[Recorded]</A> =

        </SPAN><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/728">7 Days: =
Volunteering=20
        In Athens</A> </SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dcategory><A=20
        =
href=3D"http://www.athensexchange.com/articles/music.asp">[Recorded]</A> =

        </SPAN><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/789">A Downtown =
Jewel: The=20
        Georgian </A></SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dcategory><A=20
        =
href=3D"http://www.athensexchange.com/articles/music.asp">[Recorded]</A> =

        </SPAN><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/751">First Woman =
Tries Out=20
        For Job Of Hairy Dawg</A> </SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dcategory><A=20
        =
href=3D"http://www.athensexchange.com/articles/music.asp">[Recorded]</A> =

        </SPAN><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/782">Confessional =
Booth On=20
        UGA Campus Meant To Create Dialogue</A> </SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dcategory><A=20
        =
href=3D"http://www.athensexchange.com/articles/music.asp">[Recorded]</A> =

        </SPAN><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/771">"Young =
Frankenstein"=20
        Review - Hilton Theatre, NYC</A> </SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dcategory><A=20
        =
href=3D"http://www.athensexchange.com/articles/music.asp">[Recorded]</A> =

        </SPAN><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/772">Poems In =
Place: AE=20
        Chats With Athens Poet Darrell Kinsey =
</A></SPAN></LI></UL></DIV></DIV>
      <DIV class=3DarticleRightBox>
      <DIV id=3DtabsB_2>
      <UL>
        <LI><A =
href=3D"http://www.athensexchange.com/articles/409#"><SPAN>more=20
        from nina eyrich </SPAN></A></LI></UL></DIV>
      <DIV class=3Dcontent>
      <UL>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dcategory><A=20
        =
href=3D"http://www.athensexchange.com/articles/music.asp">[Recorded]</A> =

        </SPAN><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/409">Pawtropolis: =
Fixing=20
        Pet Behavior Problems Made Easy</A> </SPAN>
        <LI style=3D"PADDING-BOTTOM: 3px"><SPAN class=3Dcategory><A=20
        =
href=3D"http://www.athensexchange.com/articles/music.asp">[Recorded]</A> =

        </SPAN><SPAN class=3Dtitle><A=20
        href=3D"http://www.athensexchange.com/articles/332">Fair Trade =
Coffee Now=20
        Available at Jittery Joe's In The Student Learning Center</A>=20
        </SPAN></LI></UL></DIV></DIV></TD></TR></TBODY></TABLE></DIV>
<SCRIPT type=3Dtext/javascript>=0A=
	function validateComments(id) {=0A=
		err =3D false;=0A=
		=0A=
		form =3D document.frmComment;=0A=
		=0A=
		if(form.name.value.length =3D=3D 0) {=0A=
			Effect.Pulsate("lblName");=0A=
			err =3D true;=0A=
		}=0A=
		if(form.body.value.length =3D=3D 0) {=0A=
			Effect.Pulsate("lblBody");=0A=
			err =3D true;=0A=
		}=0A=
		=0A=
		if(err) {=0A=
			return false;=0A=
		}=0A=
		else {=0A=
			return true;=0A=
		}=0A=
	}=0A=
</SCRIPT>
</DIV></DIV>
<DIV id=3Dfooter><SPAN class=3DbottomNavLink><A=20
href=3D"javascript:openWindow('http://www.athensexchange.com/popups/lette=
rToEditor.php', 'letterToEditor', 'scrollbars=3Dno, width=3D800, =
height=3D700, toolbar=3Dno, location=3Dno, directories=3Dno, =
menubar=3Dno, resizable=3Dno')">Contact</A>=20
</SPAN>=95 <SPAN class=3DbottomNavLink><A=20
href=3D"http://www.athensexchange.com/contribute">Contribute</A> =
</SPAN>=95 <SPAN=20
class=3DbottomNavLink><A =
href=3D"http://www.athensexchange.com/privacy">Privacy=20
Policy</A> </SPAN><BR><BR>=A9 2008 Athens Exchange<BR>Powered By <A=20
href=3D"http://www.boxkite.net/">Boxkite Media</A> </DIV><!-- Start of =
StatCounter Code -->
<SCRIPT type=3Dtext/javascript>
		sc_project=3D3539467;=20
		sc_invisible=3D1;=20
		sc_partition=3D39;=20
		sc_security=3D"a2e09f0a";=20
		</SCRIPT>

<SCRIPT src=3D"http://www.statcounter.com/counter/counter_xhtml.js"=20
type=3Dtext/javascript></SCRIPT>
<NOSCRIPT>
<DIV class=3Dstatcounter><A=20
href=3D"http://www.statcounter.com/free_hit_counter.html" =
target=3D_blank><IMG=20
class=3Dstatcounter alt=3D"counter customizable free hit"=20
src=3D"http://c40.statcounter.com/3539467/0/a2e09f0a/1/"></A></DIV></NOSC=
RIPT><!-- End of StatCounter Code -->
<SCRIPT type=3Dtext/javascript>
		var gaJsHost =3D (("https:" =3D=3D document.location.protocol) ? =
"https://ssl." : "http://www.");
		document.write(unescape("%3Cscript src=3D'" + gaJsHost + =
"google-analytics.com/ga.js' =
type=3D'text/javascript'%3E%3C/script%3E"));
		</SCRIPT>

<SCRIPT type=3Dtext/javascript>
		var pageTracker =3D _gat._getTracker("UA-91890-1");
		pageTracker._initData();
		pageTracker._trackPageview();
		</SCRIPT>
</DIV></BODY></HTML>

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.athensexchange.com/img/newLogo.jpg

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
R0pX/9k=

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.athensexchange.com/img/commentIcon.jpg

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgIC
AwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAFAAaAwERAAIRAQMRAf/EAJoAAQEBAQAAAAAAAAAAAAAA
AAkKCAABAAMBAAAAAAAAAAAAAAAAAAcICQAQAAAEBAMFAwgLAAAAAAAAAAIDBAUBEgYHERUIABMU
GAk0FhchMTNkJVY3OEFhIjJjJFQ1VTYZEQACAQEFBQQGCQUAAAAAAAABAgMEERITBQYAITEUB2Ej
FwgyUmI0FRZBUYEicjNTVDZCY0RFRv/aAAwDAQACEQMRAD8A391Putxesq7deaftJD8VbWjLePbn
RlU3WRIkDlW9ZVMyqRoKhLpZU5J1qClaZbHMgxKSoIKE4LBEiOAeSUMJcaW9AfKhpVtN0es+pMJr
s0rYknipGZlggicXozKFKtNKyEOyscNAQhRmBbaf3W3zMahiz6p0poGUUlDSStFLUhQ0ssiNdcRl
gRHGGBVWUX2svhwDdAMu2rLVM+u43941J35cHow6J4nNRdyvYq4HRFNOWMD8CBWAvNAEAwh9ENnB
punHT2jphR02RZOlKBZdFHT2Wdvd7/t2VSo6ga6qqg1dRnOaNUE23jVT229hv7vs2QzSJ1tNYena
qmUi6FcPeom0cVaUmpKSuErLdaxStM4S1Kyjq9VAz9O8pU+IiSHA9YgOiGQQC4i3oAr1K8qXTLW2
XSvp+kiyTUt0mKamFyEv9CzU47soT6TRqkgttDNZdJh6e+ZfqBpSviiz2pkzbIbwEkc5vShfpMc7
d4HA4B2aPdYVFt4WL88mm735D8rvOJ2Mz4F+8H3v3P1H0/1bTF8JNdftP+g+C+kPf/0/wf3PR2oV
4n6N/df6P4vw/wAL9T8XseltKr1SOj9qCtpea498bAUK+XespcOpXquj2qiUR75W9t3aoVih4f2V
0pRGE55d6cJclBxqFchKUwKSigUpCWIuBh1DvL75mdGZ9pah0nrOshyzVVFAlOHnYRwVKRqEjdJm
sRJCoUSRyFbXtaMsGuqjPXHy86rynUVZqfSdNJX6dq5nmKxAvNA0jF3Roxa7IGJKOgYBLA90i1gY
Wsj22uhrE4srw3vic3cKGRc1rkbwQfAMBbg5rUJy15R0sYRlEXAWEccNnCiq6SenFZBLE9IwtDqy
shH1hwSpHaDsqstFVwVJo54nSrU2FCCGB+og77dkG0hdLXVxq9qhmTMdtqltvbJQrIjUN37isLlT
VMtbRvC+NUU6kdykDjW7vAgf5dK3gMLEbEO/OIKmNCFupfmD6bdNMvleqroK7P1U4dHTSLLK777o
kKFlgS30nkINltxXaxSXunvQrX2va+MQ0ctHkxYX6qdGSMLutKXrDM1nBY7d9gZkFrC0b/N7Tx+l
ffkv5HO2EfCr+Y7N/b/WfR/h7S08dNbetD/Kfj3A+9+px/J9nj27Ub8G9I+rL/G/gvEe6+vw/N9r
h2bb8HPILdyzyiknxknwjLNh5ZcfPh5cNg0LLfvcNiubbN3HYdNBvKpzQ6oc67w/6Hd8Hbxy8Y8m
7293eIRZB4I5Z7B8FciyvgMv9o8HweZfa4fZnesHiJ8gaf5TB8FOVTkOSv4OLY2Jz17vOexMXExO
6v4uB/XsvvTD5I+c845rF8Wcd+c5q5i3Lwucpc+5ytzDuXe8w8LF3YezG7LDswe3bbbbf//Z

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.athensexchange.com/img/mailIcon.jpg

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
eZ/Jft8f/9k=

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.athensexchange.com/img/listIcon.jpg

/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgIC
AwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD
AwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAFAAeAwERAAIRAQMRAf/EAJUAAAEFAQAAAAAAAAAAAAAA
AAAEBQYHCAoBAAIBBQAAAAAAAAAAAAAAAAAFBAIDBgcIEAAABAMGAgcJAAAAAAAAAAADBAUGAgcI
AAETFRYXFJcREiQlZtcYIyZYqNgJGSlZEQAABAMFBAgGAwAAAAAAAAABAgMEERIFABMUFQYiI5QH
ITNk1NVWVyhBJKWmFxgyQzT/2gAMAwEAAhEDEQA/AOl5UccryEzqoblr7vTvlsKFOxFLqLQOOGVL
XT5Gql6M7ooJOoZudiE8G+cJKYMAh2KBOLlTF16XDfFFfB03W6hbsdQLUDT+F5aNn5RpRxKsVN2q
Z+SdH51QGKiKhTFGBAFUxy70QAIwtz07d0VGr1jFa9cMRx5QFMTtkitDRX+WIL0iyZgNAeqKUdwE
fjZHraR390VzmvQv5Q2vZTq30jR4Sv8AfbQ8z0x6oK8VRe6WNbSO/uiuc16F/KGxlOrfSNHhK/32
xmemPVBXiqL3S1gtJ1SjHaU1TRL7xC08k8i2G9EsvOKZFHZraEuZfrXBJOuA2jSvKoyYK5T90Ddu
jVwzJQSBWiDBghNxAChpKlTtSkqVOSV5YpNVzuFJEMNWgxgg3VEyMDuxOYEixcwREpwFEDGEUwOU
XDB9QDU58onzDVcIlRJOtiKSOFAV0gBWJGwEKKhoN4qgYogsIFC8EhgeSjcqc3HqaMtujaiNRKnZ
vIBhnOBXdxVpOGZzSuSnbCefE1D7bZs01QZ+kDsRMAsCdTyEV5c6aiuEv6nVviqPtA5HQU3+qNWJ
qEpqgLJkRFZNqtMjKg0Kqu0IDcwTmMYiim0RMIdMQmAz1nm1XOx09ptQh3xBTOdUEjuE9/FVwZNJ
0YVg3coHTT6xXp6Ol1yCtD4IqBueDp+lm0fG8rfNmsuAR8WtXg+Y3lnSnGKeGWMgrQ+CKgbng6fp
ZsY3lb5s1lwCPi1jB8xvLOlOMU8MtN22iVUwNWYkKzSTRmjOAZJbwbPQUKbThOt14nIXSmCrKe91
EWndMHRU1IRAxT5KMImp3jqIAQUQYMMWPApfO+Xg1FiLXUmqVWQKKXyijNMqqJbo4EMgUKkcDmOo
IJnATpSpmMYBMISC0ZtdcBT3YOKBpxN4JCXSZHSgpqjekExVjCwKJClIBjkECKRUKUIFAZgxwqfi
i3DrM1nuHqL1Dsr1E4vqD4HefIZjaY05tn3jleS53icN3Z1sPE9pgW2e2/YrJdL5XgsFkq+Wwy6b
A3jW9vMVszT3EJt7/KXZntr93+C80r+a4vE5oljv90MVB3dyYbahDERhsQlj/XaLfpQ8e/PrZj7q
+x/b9lXtq7X9dsfpQ8e/PrY91fY/t+x7au1/XbW2xvxP7cTv0brLQOnmPvDj+sjici3BRNHcDnvv
Hia54PEyPtGH08T2TEtjdX/YzPKTmmFzm+XwUMkheYZS+mu91C4nhf7Mer3ktshpn4HySpZdicnu
kcXHN4yX6d1LPveukjc7UIz7ua3/2Q==

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://s9.addthis.com/button1-share.gif

R0lGODlhfQAQAIcAAAAAAA0NDRAQEBMTExwcHB8fHzIPRABrJx1nLzZ/RUJ8JAAAkwA5oAANywAA
/x0g/x8h/zI0/zlcmDVHrhxZzlJ8s2ZttCGZACyzL1e8AFO7PGCtMkaoR0qgcXHNSF2Vy1Sc2GSa
1W7DjELG/7prAIddTrV0RP8AAP8ABOkfIv4AJv8zINg/TO53EP9nAOR3N/dkJf9pOv5tTP9zR/91
SP91Sf97Uf98U/99VNcY/rybFKyPKKeDfZbeLZ3bR8aQJtKmANi8ANy4APaPAfCJMf+qAPq3CcWO
S9apU/+GY/WxTtTGGPbNBPrRAPvDL/b2B/r6J8XFfvzMTouLi5CQkJGRkZaWlpeXl5mZmZqampub
m5ycnJeiqKSZt760m6GhoaOjo6ampqenp6qqqq6urquiuLCwsLGxsbW1tba2tre3t7i4uL6+vru7
xru8yr+/yZ3W/6TY4bfr/O6WgNbNuNvsvMDAwMHBwcLCwsPDw8XFxcbGxsfHx8HBzMTEz8rKyszM
zM3Nzc7OzsXF0cbG0cjI08vL18nN28zM2c3N2M/P29DQ0NLS0tbT1tXV1dnZ2dra2tvb29zc3N3d
3d/f39TF5dXZ5NXf6eDN7P/e6Pzf8P/j1ePj4+Tk5Obm5ujo6Orq6uzs7O3t7e7u7u/v7+3z8+/2
9vzk5fDw8PHx8fHz8/Pz8/T09PX19vb29vf39/b3+ff0/Pf6+vj4+Pr6+vv7+/r6///7//z8/Pz/
//3//////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAMAADkALAAAAAB9ABAA
AAj/AHPksEOwoMGDCBMqXMiwocOHECPaETgQ0q6LGDNq3Mixo8ePIEOKHDkS0kQ7FkmqXMmyZcZc
ulx6NGkHY5KbOG/K3NmylU+fD4IG9ehojNE/HE8pIZIi00iCF5PcmEp1ahKeWEf+BBrUwQONatas
2RUIY56NtuY4gYGihIhddTbA8gh1l9QbNS7WsAoSgF+MAAAD/nvRL+FdhgOz3NrqQQShGcNcrBXm
yy5UlLSk0ajJRZETKjpw8JFBQSW6Ne3ijXExxt6rHhUjLix4Nm3btmX33PoAAmSMWHbV4oRlUqQ9
eexYuZVxU4sjK1gc8NDjQhnmHetK3XgDdkfdt3PX/5atGPxKxg8cqP+KccouUJCuvNKzZ0+n4BkP
wRlBwUsCDBoggMlHBOGCy3YadWfgggwaaNiCiQHgYGIT+gWhhQ1mqCEuESaCiCKJEGLgLLXscgUV
YrCxCCqpiHIGGQ2GIAcIDZggRRRL/BDLhgYSRAstUuFAw0U04NDdj0gmqSQAPzLZ5JNQMukklEpW
aWWTAxhmyJaG+PHjLLTMMgsWYgIyCiqSkAEmkpd8EAcDE7xgBBRNICHLlT8S5IorUtkww0Uz2NDd
noQW6goAhCJ6aKJ7Krroo446auiklB5KQAF+FaJpIX0UysodYNzBiiChrDGJGawQakoFEnCxgAFD
ML7xBBBdVEooQauscldVVuXq66+5GuYrAMMGW+wqxBqLrLDANussAAEI4Ncg1A7yBrB87GLHKo90
gocnaPxaiq+q8ECCEEHoYIGzvxJEyrsyxCtvvO/Wa++9+Oar77786hthGwADbG8oVGxBRShVaJGF
FgfvS8cObjRiSb0AkFJxxe8SxEgoHHfs8ccghyzyyCSXbPLJKKccCiMnLfLJyzDHLPPMNNds8804
56zzzjsvMpFAEgUt9NBEF82QQAEBADs=

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-php
Content-Transfer-Encoding: base64
Content-Location: http://www.athensexchange.com/inc/code.php

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
UKELr1b1qkdN6ymg+tZhgEAQAAA7

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://c40.statcounter.com/3539467/0/a2e09f0a/1/

R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/style.css

BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; BACKGROUND: =
#fff; PADDING-BOTTOM: 0px; MARGIN: 5px; COLOR: #777; PADDING-TOP: 0px; =
FONT-FAMILY: Arial, Helvetica, sans-serif
}
HTML {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; BACKGROUND: =
#fff; PADDING-BOTTOM: 0px; MARGIN: 5px; COLOR: #777; PADDING-TOP: 0px; =
FONT-FAMILY: Arial, Helvetica, sans-serif
}
A {
	COLOR: #777; TEXT-DECORATION: none
}
A:hover {
	COLOR: #666; TEXT-DECORATION: underline
}
A IMG {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
H1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 3px =
0px 0px 15px; PADDING-TOP: 0px
}
UL > LI {
	LIST-STYLE-IMAGE: url(img/pip.jpg)
}
#container {
	MARGIN: auto; WIDTH: 1000px; POSITION: relative
}
#logo {
	FONT-WEIGHT: bold; BACKGROUND: #cccc9f; BORDER-BOTTOM: #663300 5px =
solid; HEIGHT: 40px; TEXT-ALIGN: right
}
#logo A {
	COLOR: #336; TEXT-DECORATION: underline
}
#logo A:hover {
	COLOR: #669
}
#logo IMG.section {
	FLOAT: right; MARGIN: 6px 5px 5px 10px
}
#masthead {
	MARGIN-TOP: 5px; FLOAT: left
}
#subNav {
	BACKGROUND: #f5f1e9; WIDTH: 100%; HEIGHT: 26px; TEXT-ALIGN: left
}
#subNav #syndication {
	MARGIN-TOP: 3px; FLOAT: left
}
#subNav #search {
	FLOAT: right
}
#subNav IMG {
	BORDER-TOP-STYLE: none; PADDING-TOP: 3px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
#subNav A {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
#dailyInfo {
	PADDING-LEFT: 250px; FONT-SIZE: 10px; FLOAT: left; COLOR: #000; =
TEXT-ALIGN: center
}
#mainNavOuter {
	BORDER-RIGHT: #eee 1px solid; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; BORDER-LEFT: #eee 1px solid; PADDING-TOP: 0px; =
BORDER-BOTTOM: #eee 1px solid
}
#mainNav {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #cccc9f; =
PADDING-BOTTOM: 0px; COLOR: #663; PADDING-TOP: 0px; TEXT-ALIGN: center
}
#mainNav A {
=09
}
#mainNav A:hover {
=09
}
#topStoriesOuter {
	BORDER-RIGHT: #eee 1px solid; MARGIN: 10px 0px 0px 1px; WIDTH: 798px; =
BORDER-BOTTOM: #eee 1px solid; HEIGHT: 300px
}
#topStories {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px =
solid; PADDING-LEFT: 5px; BACKGROUND: beige; PADDING-BOTTOM: 5px; =
BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px =
solid
}
#topStories A {
	COLOR: #666
}
#topStories A.hover {
	COLOR: #888
}
#topStories H1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 18px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 7px
}
#topStories H1 A {
	COLOR: #336
}
#topStories H1 A:hover {
	COLOR: #369
}
#topStories H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 16px; PADDING-BOTTOM: =
0px; MARGIN: 9px 0px 0px; COLOR: #336; PADDING-TOP: 0px
}
#topStories P {
	PADDING-RIGHT: 9px; PADDING-LEFT: 9px; PADDING-BOTTOM: 5px; MARGIN: =
0px; PADDING-TOP: 5px
}
#topStories #leftBox {
	BORDER-RIGHT: #ccc 2px solid; PADDING-RIGHT: 10px; FONT-SIZE: 13px; =
MARGIN: 0px 0px 0px 10px; WIDTH: 450px; HEIGHT: 286px
}
#topStories #leftBox .topText {
	FONT-WEIGHT: normal; FONT-SIZE: 14px
}
#topStories #leftBox IMG {
	BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; FLOAT: left; =
MARGIN: 7px 8px 3px 0px; BORDER-LEFT: #000 1px solid; BORDER-BOTTOM: =
#000 1px solid
}
#topStories A.readMore {
	FONT-WEIGHT: bold; COLOR: #336
}
#topStories A.homeReadMore {
	FONT-WEIGHT: bold; COLOR: #630
}
#topStories A.athensReadMore {
	FONT-WEIGHT: bold; COLOR: #630
}
#topStories A.musicReadMore {
	FONT-WEIGHT: bold; COLOR: #900
}
#topStories A.sportsReadMore {
	FONT-WEIGHT: bold; COLOR: #360
}
#topStories A.techReadMore {
	FONT-WEIGHT: bold; COLOR: #039
}
#topStories #rightBox {
	FONT-SIZE: 12px; FLOAT: right; OVERFLOW: auto; WIDTH: 310px; HEIGHT: =
286px
}
#topStories #rightBox UL {
=09
}
#topStories A.catLinkAthens {
	FONT-WEIGHT: bold; COLOR: #630
}
#topStories A.catLinkAthens:hover {
	COLOR: #963
}
#topStories A.catLinkDaily {
	FONT-WEIGHT: bold; COLOR: #663
}
#topStories A.catLinkDaily:hover {
	COLOR: #cc6
}
#topStories A.catLinkMusic {
	FONT-WEIGHT: bold; COLOR: #900
}
#topStories A.catLinkMusic:hover {
	COLOR: #c33
}
#topStories A.catLinkSports {
	FONT-WEIGHT: bold; COLOR: #360
}
#topStories A.catLinkSports:hover {
	COLOR: #693
}
#topStories A.catLinkTech {
	FONT-WEIGHT: bold; COLOR: #039
}
#topStories A.catLinkTech:hover {
	COLOR: #36c
}
#topStories A.catLinkFilm {
	FONT-WEIGHT: bold; COLOR: #303
}
#topStories A.catLinkFilm:hover {
	COLOR: #606
}
#topStories A.catLinkFood {
	FONT-WEIGHT: bold; COLOR: #306
}
#topStories A.catLinkFood:hover {
	COLOR: #00c
}
#topStories A.catLinkUga {
	FONT-WEIGHT: bold; COLOR: #cc0000
}
#topStories A.catLinkUga:hover {
	COLOR: #ff0000
}
#topStories A.catLinkNation {
	FONT-WEIGHT: bold; COLOR: #006
}
#topStories A.catLinkNation:hover {
	COLOR: #009
}
#topStories A.catLinkWorld {
	FONT-WEIGHT: bold; COLOR: #369
}
#topStories A.catLinkWorld:hover {
	COLOR: #39c
}
#topStories A.catLinkPopfest {
	FONT-WEIGHT: bold; COLOR: #606
}
#topStories A.catLinkPopfest:hover {
	COLOR: #939
}
#topStories #rightBox #searchBox {
=09
}
#textAdRow {
	MARGIN-TOP: 5px; FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: #630; =
TEXT-ALIGN: center
}
#textAdRow A {
	COLOR: #336
}
#textAdRow A:hover {
	COLOR: #369
}
#secondRow {
	MARGIN-TOP: 5px; WIDTH: 800px
}
#secondRowBox {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BACKGROUND: =
#fff; MARGIN: 0px 5px; OVERFLOW: auto; BORDER-LEFT: #ccc 1px solid; =
WIDTH: 250px; BORDER-BOTTOM: #ccc 1px solid; HEIGHT: 200px
}
#secondRowBox H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: =
0px; MARGIN: 0px; COLOR: #fff; PADDING-TOP: 1px
}
#secondRowBox UL {
	MARGIN: 5px 10px 5px 25px
}
#secondRowBox LI {
	FONT-SIZE: 12px; MARGIN: 5px 0px
}
#secondRowBox LI A {
	FONT-WEIGHT: bold; COLOR: #669
}
#secondRowBox LI A:hover {
	COLOR: #99c
}
#secondRowBox .link {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: =
14px; PADDING-BOTTOM: 0px; PADDING-TOP: 8px; TEXT-ALIGN: center
}
#daily H3 {
	BACKGROUND: #663
}
#daily .link A {
	COLOR: #663
}
#daily .link A:hover {
	COLOR: #996
}
#athens H3 {
	BACKGROUND: #630
}
#athens .item {
	MARGIN: 6px
}
#athens .category A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #630
}
#athens .category A:hover {
	COLOR: #963
}
#athens .title A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #669
}
#athens .title A:hover {
	COLOR: #99c
}
#athens .link A {
	COLOR: #630
}
#athens .link A:hover {
	COLOR: #963
}
#music H3 {
	BACKGROUND: #900
}
#music .item {
	MARGIN: 6px
}
#music .category A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #900
}
#music .category A:hover {
	COLOR: #c33
}
#music .title A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #669
}
#music .title A:hover {
	COLOR: #99c
}
#music .link A {
	COLOR: #900
}
#music .link A:hover {
	COLOR: #c33
}
#thirdRow {
	MARGIN-TOP: 5px; WIDTH: 800px
}
#thirdRowBox {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BACKGROUND: =
#fff; MARGIN: 0px 5px; OVERFLOW: auto; BORDER-LEFT: #ccc 1px solid; =
WIDTH: 250px; BORDER-BOTTOM: #ccc 1px solid; HEIGHT: 250px
}
#thirdRowBox H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: =
0px; MARGIN: 0px; COLOR: #fff; PADDING-TOP: 1px
}
#thirdRowBox .link {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: =
14px; PADDING-BOTTOM: 0px; PADDING-TOP: 8px; TEXT-ALIGN: center
}
#thirdRowBox UL {
	MARGIN: 5px 10px 5px 25px
}
#thirdRowBox LI {
	FONT-SIZE: 12px; MARGIN: 5px 0px
}
#thirdRowBox LI A {
	FONT-WEIGHT: bold; COLOR: #669
}
#thirdRowBox LI A:hover {
	COLOR: #99c
}
#sports H3 {
	BACKGROUND: #360
}
#sports .item {
	MARGIN: 6px
}
#sports .category A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #360
}
#sports .category A:hover {
	COLOR: #693
}
#sports .title A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #669
}
#sports .title A:hover {
	COLOR: #99c
}
#sports .link A {
	COLOR: #360
}
#sports .link A:hover {
	COLOR: #693
}
#tech H3 {
	BACKGROUND: #039
}
#tech .item {
	MARGIN: 6px
}
#tech .category A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #039
}
#tech .category A:hover {
	COLOR: #36c
}
#tech .title A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #669
}
#tech .title A:hover {
	COLOR: #99c
}
#tech .link A {
	COLOR: #039
}
#tech .link A:hover {
	COLOR: #36c
}
#film H3 {
	BACKGROUND: #303
}
#film .item {
	MARGIN: 6px
}
#film .category A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #303
}
#film .category A:hover {
	COLOR: #606
}
#film .title A {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #669
}
#film .title A:hover {
	COLOR: #99c
}
#film .link A {
	COLOR: #303
}
#film .link A:hover {
	COLOR: #606
}
#thirdRowAdBox {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BACKGROUND: =
#fff; MARGIN: 0px 5px; BORDER-LEFT: #ccc 1px solid; WIDTH: 250px; =
BORDER-BOTTOM: #ccc 1px solid; HEIGHT: 250px
}
#category H3 {
	BACKGROUND: #c60
}
#more H3 {
	BACKGROUND: #306
}
#fourthRow {
	MARGIN-TOP: 5px; WIDTH: 800px
}
#fourthRowBox {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BACKGROUND: =
#fff; MARGIN: 0px 5px; BORDER-LEFT: #ccc 1px solid; WIDTH: 225px; =
BORDER-BOTTOM: #ccc 1px solid; HEIGHT: 250px
}
#fourthRowBox H3 {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 14px; PADDING-BOTTOM: =
3px; MARGIN: 0px; COLOR: #fff; PADDING-TOP: 3px
}
#category2 H3 {
	BACKGROUND: #099
}
#fourthRowAdBox {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BACKGROUND: =
#fff; MARGIN: 0px 5px; BORDER-LEFT: #ccc 1px solid; WIDTH: 300px; =
BORDER-BOTTOM: #ccc 1px solid; HEIGHT: 250px
}
#footer IMG {
	MARGIN: 0px 50px
}
#bottomNav {
	BORDER-RIGHT: #999 1px solid; PADDING-RIGHT: 15px; BORDER-TOP: #999 1px =
solid; MARGIN-TOP: 15px; PADDING-LEFT: 15px; FONT-WEIGHT: normal; =
FONT-SIZE: 14px; BACKGROUND: beige; PADDING-BOTTOM: 15px; BORDER-LEFT: =
#999 1px solid; PADDING-TOP: 15px; BORDER-BOTTOM: #999 1px solid
}
.bottomNavLink {
	MARGIN: 0px 15px
}
#dailyContent {
	MARGIN-TOP: 3px
}
#dailyContent TD {
	VERTICAL-ALIGN: top
}
#dailyContent TD.dailyBlog {
	PADDING-LEFT: 10px; BORDER-LEFT: #ccc 1px solid
}
#dailyContent TD.dailyBlog H1 {
	FONT-SIZE: 18px; COLOR: #663; TEXT-ALIGN: center
}
#dailyContent TD.dailyBlog H2 {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 16px; PADDING-BOTTOM: =
2px; MARGIN: 15px 0px 0px; COLOR: #336; PADDING-TOP: 2px
}
#dailyContent TD.dailyBlog BLOCKQUOTE {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: =
0px; MARGIN: 0px 10px; COLOR: #336; PADDING-TOP: 0px
}
#dailyContent TD.dailyBlog BLOCKQUOTE A {
	COLOR: #630
}
#dailyContent TD.dailyBlog BLOCKQUOTE A:hover {
	COLOR: #963
}
#dailyContent TD.dailyBlog .notes {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: =
12px; PADDING-BOTTOM: 0px; MARGIN: 5px; COLOR: #663; PADDING-TOP: 0px
}
#dailyContent TD.dailyBlog .notes A {
	COLOR: #663
}
#dailyContent TD.dailyBlog .notes A:hover {
	COLOR: #996
}
#dailyArchivesBox {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
#ccc 1px solid; WIDTH: 200px; BORDER-BOTTOM: #ccc 1px solid; HEIGHT: =
150px
}
#dailyArchivesBox H3 {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 14px; BACKGROUND: =
#663; PADDING-BOTTOM: 3px; MARGIN: 0px; COLOR: #fff; PADDING-TOP: 3px
}
#dailyArchivesBox H2 {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 16px; PADDING-BOTTOM: =
2px; MARGIN: 0px; COLOR: #630; PADDING-TOP: 5px
}
#dailyArchivesBox P {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: =
1px; MARGIN: 0px; COLOR: #663; PADDING-TOP: 1px
}
#dailyArchivesBox A {
	COLOR: #663
}
#dailyArchivesBox A:hover {
	COLOR: #996
}
.dailyRightBox {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-TOP: =
5px; OVERFLOW: auto; BORDER-LEFT: #ccc 1px solid; WIDTH: 200px; =
BORDER-BOTTOM: #ccc 1px solid; HEIGHT: 200px
}
.noScroll .dailyRightBox {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-TOP: =
5px; BORDER-LEFT: #ccc 1px solid; WIDTH: 200px; BORDER-BOTTOM: #ccc 1px =
solid; HEIGHT: auto
}
.dailyRightBox H3 {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 14px; BACKGROUND: =
#336; PADDING-BOTTOM: 3px; MARGIN: 0px; COLOR: #fff; PADDING-TOP: 3px
}
.dailyRightBox P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 12px; PADDING-BOTTOM: =
0px; MARGIN: 5px; PADDING-TOP: 0px
}
.dailyRightBox UL {
	PADDING-LEFT: 5px; FONT-SIZE: 12px
}
.dailyRightBox A {
	COLOR: #630
}
.dailyRightBox A:hover {
	COLOR: #963
}
#musicMain #topStories H1 A {
	COLOR: #336
}
#musicMain #topStories H1 A:hover {
	COLOR: #669
}
#musicMain #topStories P {
	COLOR: #336
}
#musicMain #topStories A.readMore {
	COLOR: #900
}
#musicMain #secondRowBox H3 {
	BACKGROUND-COLOR: #900
}
#athensMain #topStories H1 A {
	COLOR: #336
}
#athensMain #topStories H1 A:hover {
	COLOR: #669
}
#athensMain #topStories P {
	COLOR: #336
}
#athensMain #topStories A.readMore {
	COLOR: #900
}
#athensMain #secondRowBox H3 {
	BACKGROUND-COLOR: #630
}
#athensMain #thirdRowBox H3 {
	BACKGROUND-COLOR: #630
}
#techMain #topStories H1 A {
	COLOR: #336
}
#techMain #topStories H1 A:hover {
	COLOR: #669
}
#techMain #topStories P {
	COLOR: #336
}
#techMain #topStories A.readMore {
	COLOR: #930
}
#techMain #secondRowBox H3 {
	BACKGROUND-COLOR: #039
}
#techMain #topStories UL A {
	COLOR: #336
}
#sportsMain #topStories H1 A {
	COLOR: #336
}
#sportsMain #topStories H1 A:hover {
	COLOR: #669
}
#sportsMain #topStories P {
	COLOR: #336
}
#sportsMain #topStories A.readMore {
	COLOR: #930
}
#sportsMain #secondRowBox H3 {
	BACKGROUND-COLOR: #360
}
#sportsMain #topStories UL A {
	COLOR: #336
}
#sportsMain #topStories UL A.catLinkSports {
	FONT-WEIGHT: bold; COLOR: #360
}
#sportsMain #topStories UL A.catLinkSports:hover {
	COLOR: #693
}
#popfestMain #topStories H1 A {
	COLOR: #336
}
#popfestMain #topStories H1 A:hover {
	COLOR: #669
}
#popfestMain #topStories P {
	COLOR: #336
}
#popfestMain #topStories A.readMore {
	COLOR: #900
}
#popfestMain #secondRowBox H3 {
	BACKGROUND-COLOR: #606
}
#popfestMain #thirdRowBox H3 {
	BACKGROUND-COLOR: #606
}
#article {
	MARGIN-TOP: 3px
}
#article TD {
	VERTICAL-ALIGN: top
}
#article TD.articleCell {
	PADDING-LEFT: 10px; FONT-SIZE: 14px; BORDER-LEFT: #ccc 1px solid; =
WIDTH: 1000px; COLOR: #336
}
#article_title {
	FONT-SIZE: 18px; FONT-FAMILY: Helvetica
}
#article #articleActions {
	BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center
}
#article #articleActions A {
	FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #336; TEXT-DECORATION: none
}
#article #articleActions A:hover {
	COLOR: #669; TEXT-DECORATION: underline
}
#article TD.articleCell H1 {
	FONT-SIZE: 20px; MARGIN-BOTTOM: 10px; COLOR: #336
}
#article TD.articleCell A {
	COLOR: #663; TEXT-DECORATION: underline
}
#article TD.articleCell A:hover {
	COLOR: #996
}
#article TD.articleCell H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 16px; PADDING-BOTTOM: =
0px; MARGIN: 0px; COLOR: #630; PADDING-TOP: 0px
}
#article TD.articleCell IMG {
	BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; FLOAT: left; =
MARGIN: 0px 10px 5px 0px; BORDER-LEFT: #000 1px solid; BORDER-BOTTOM: =
#000 1px solid
}
#article TD.articleCell .amazonWrap {
	FLOAT: right; MARGIN: 0px 10px 5px 0px
}
#article TD.articleCell #articleActions IMG {
	FLOAT: none; MARGIN: auto; WIDTH: auto; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
#article TD.articleCell P.published {
	FONT-WEIGHT: bold
}
#article #trackback {
	BORDER-TOP: #ccc 1px solid; PADDING-TOP: 3px
}
#article #trackback H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; COLOR: #336; PADDING-TOP: 0px
}
#article #trackback P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: =
12px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
#article #comments {
	BORDER-TOP: #ccc 1px solid; MARGIN-TOP: 20px; PADDING-TOP: 3px
}
#article #comments #subcomments {
	FONT-SIZE: 12px
}
#article #comments TD {
	VERTICAL-ALIGN: top
}
#article #comments H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; COLOR: #336; PADDING-TOP: 0px
}
#article #comments P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#article #comments TD.commentBody {
	FONT-SIZE: 12px
}
#article .commentBy {
	WIDTH: 150px; COLOR: #333
}
#article .commentBy H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; COLOR: #630; PADDING-TOP: 0px
}
#article #comments TD {
	PADDING-BOTTOM: 20px
}
.articleRightBox {
	FONT-SIZE: 13px; MARGIN-BOTTOM: 5px; OVERFLOW: auto; WIDTH: 200px; =
HEIGHT: auto
}
.articleRightBox .content {
	CLEAR: both; BORDER-RIGHT: #eee 2px solid; BORDER-TOP: #eee 2px solid; =
BORDER-LEFT: #eee 2px solid; BORDER-BOTTOM: #eee 2px solid
}
.articleRightBox .category {
	DISPLAY: none
}
.articleRightBox H4 {
	DISPLAY: none
}
.articleRightBox .item {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 2px =
5px 5px -8px; PADDING-TOP: 0px
}
.articleRightBox .title {
=09
}
.articleRightBox H3 {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 14px; BACKGROUND: =
#336; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; PADDING-TOP: 3px
}
.articleRightBox P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
5px; PADDING-TOP: 0px
}
.articleRightBox UL {
	PADDING-LEFT: 5px
}
.articleRightBox A.subcategory {
	FONT-WEIGHT: bold
}
.articleRightBox A {
	FONT-WEIGHT: bold; COLOR: #336
}
.articleRightBox A:hover {
	COLOR: #669
}
#contributorDetail {
	MARGIN-TOP: 3px
}
#contributorDetail TD {
	VERTICAL-ALIGN: top
}
#contributorDetail TD H1 {
	FONT-SIZE: 22px; COLOR: #663; TEXT-ALIGN: center
}
#contributorDetail TD P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; MARGIN: =
0px; COLOR: #336; PADDING-TOP: 0px
}
#contributorDetail #contributorPic {
	BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; BACKGROUND: =
#663; FLOAT: left; MARGIN: 0px 5px 3px 0px; BORDER-LEFT: #000 1px solid; =
COLOR: #fff; BORDER-BOTTOM: #000 1px solid
}
#contributorDetail #contributorPic #caption {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 12px; PADDING-BOTTOM: =
3px; PADDING-TOP: 3px; TEXT-ALIGN: center
}
#contributorDetail #contributorPic #caption A {
	COLOR: #fff; TEXT-DECORATION: underline
}
#contributorDetail #contributorPic #caption A:hover {
	COLOR: #ccc
}
#contributorDetail #bio P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
10px 0px; PADDING-TOP: 0px
}
.contributorRightBox {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-TOP: =
5px; OVERFLOW: auto; BORDER-LEFT: #ccc 1px solid; WIDTH: 200px; =
BORDER-BOTTOM: #ccc 1px solid; HEIGHT: 300px
}
.contributorRightBox H3 {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 14px; BACKGROUND: =
#336; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #fff; PADDING-TOP: 3px
}
.contributorRightBox H4 {
	DISPLAY: none
}
.contributorRightBox P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
5px; PADDING-TOP: 0px
}
.contributorRightBox UL {
	PADDING-LEFT: 5px; FONT-SIZE: 12px
}
.contributorRightBox LI {
	PADDING-BOTTOM: 3px
}
.contributorRightBox A.subcategory {
	FONT-WEIGHT: bold
}
.contributorRightBox A {
	FONT-WEIGHT: bold; COLOR: #336
}
.contributorRightBox A:hover {
	COLOR: #669
}
#article TD.articleCell #imageAndCaptionLeft {
	BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; FLOAT: left; =
MARGIN: 0px 10px 5px 0px; BORDER-LEFT: #000 1px solid; WIDTH: 200px; =
BORDER-BOTTOM: #000 1px solid
}
#article TD.articleCell #imageAndCaptionLeft IMG {
	MARGIN: 0px; WIDTH: 200px; BORDER-TOP-STYLE: none; BORDER-BOTTOM: #000 =
1px solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none
}
#article TD.articleCell #imageAndCaptionLeft P {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 12px; BACKGROUND: =
#eee; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-TOP: 3px; TEXT-ALIGN: =
center
}
#article TD.articleCell #imageAndCaptionRight {
	BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; FLOAT: right; =
MARGIN: 0px 0px 5px 10px; BORDER-LEFT: #000 1px solid; WIDTH: 200px; =
BORDER-BOTTOM: #000 1px solid
}
#article TD.articleCell #imageAndCaptionRight IMG {
	MARGIN: 0px; WIDTH: 200px; BORDER-TOP-STYLE: none; BORDER-BOTTOM: #000 =
1px solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none
}
#article TD.articleCell #imageAndCaptionRight P {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 12px; BACKGROUND: =
#eee; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-TOP: 3px; TEXT-ALIGN: =
center
}
#commentContent {
	MARGIN: auto; WIDTH: 400px; POSITION: relative
}
TD.commentBody {
	WIDTH: 300px
}
#businessPage {
	COLOR: #336
}
#businessPage A {
	COLOR: #663; TEXT-DECORATION: underline
}
#businessPage A:hover {
	COLOR: #996
}
.searchResults {
	COLOR: #336
}
.searchResults A {
	COLOR: #663
}
.searchResults A:hover {
	COLOR: #996
}
.searchTerm {
	BACKGROUND: yellow
}

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/style_ash.css

#box {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BACKGROUND: =
#fff; MARGIN: 0px 5px; BORDER-LEFT: #ccc 1px solid; WIDTH: auto; =
BORDER-BOTTOM: #ccc 1px solid; HEIGHT: auto
}
#box H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FONT-SIZE: 14px; PADDING-BOTTOM: =
0px; MARGIN: 0px; COLOR: #fff; PADDING-TOP: 1px
}
TD A {
	COLOR: #669
}
#box UL {
	MARGIN: 5px 10px 5px 25px
}
#box LI {
	FONT-SIZE: 14px; MARGIN: 5px 0px
}
#box LI A {
	FONT-WEIGHT: bold; COLOR: #669
}
#box LI A:hover {
	COLOR: #99c
}
#box .link {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: =
14px; PADDING-BOTTOM: 0px; PADDING-TOP: 8px; TEXT-ALIGN: center
}
HR {
	BORDER-RIGHT: #cccccc 1px solid; BORDER-TOP: #cccccc 1px solid; =
BORDER-LEFT: #cccccc 1px solid; WIDTH: 75%; BORDER-BOTTOM: #cccccc 1px =
solid; HEIGHT: 0px
}

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/css/style.css

BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; BACKGROUND: =
#fff; PADDING-BOTTOM: 0px; MARGIN: 5px; COLOR: #777; PADDING-TOP: 0px
}
HTML {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; BACKGROUND: =
#fff; PADDING-BOTTOM: 0px; MARGIN: 5px; COLOR: #777; PADDING-TOP: 0px
}
TABLE {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; BACKGROUND: =
#fff; PADDING-BOTTOM: 0px; MARGIN: 5px; COLOR: #777; PADDING-TOP: 0px
}
#feature_box {
	MARGIN: 10px; WIDTH: 700px; BACKGROUND-COLOR: #eeede1
}
#feature {
	BORDER-RIGHT: #999 1px solid; PADDING-RIGHT: 10px; PADDING-LEFT: 10px; =
FLOAT: left; PADDING-BOTTOM: 10px; WIDTH: 375px; COLOR: #585749; =
PADDING-TOP: 10px
}
#feature H1 {
	FONT-SIZE: 18px; COLOR: #29345c
}
#feature H1 A {
	FONT-SIZE: 18px; COLOR: #29345c
}
#feature IMG {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FLOAT: left; PADDING-BOTTOM: =
10px; PADDING-TOP: 10px
}
#fresh {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 14px; FLOAT: left; =
PADDING-BOTTOM: 10px; MARGIN-LEFT: 10px; WIDTH: 250px; PADDING-TOP: 10px
}
#fresh H1 {
	FONT-SIZE: 18px; COLOR: #29345c
}
#fresh H1 A {
	FONT-SIZE: 18px; COLOR: #29345c
}
#fresh .cat_link {
	COLOR: #364065
}
#subcategories {
	MARGIN: 10px; WIDTH: 235px
}
#subcategories H1 {
	FONT-SIZE: 18px; COLOR: #29345c
}
#subcategories H1 A {
	FONT-SIZE: 18px; COLOR: #29345c
}
#subcategories A {
	FONT-SIZE: 12px
}
#subcategories .article_link {
	PADDING-BOTTOM: 7px
}
#subcategories IMG {
	PADDING-RIGHT: 10px; FLOAT: left; PADDING-BOTTOM: 5px
}
#subcategories .blog_title {
	FONT-WEIGHT: bold; COLOR: #475a9f; PADDING-TOP: 15px
}
#subcategories .blog_image {
	FLOAT: left
}
#subcategories .blog_byline {
	FONT-SIZE: 12px
}
#subcategories P {
	MARGIN-TOP: 3px
}
#calendar {
	MARGIN: 10px
}
#calendar H1 {
	FONT-SIZE: 18px; COLOR: #29345c
}
#calendar H1 A {
	FONT-SIZE: 18px; COLOR: #29345c
}
#calendar A {
	FONT-SIZE: 12px
}
#calendar .article_link {
	PADDING-BOTTOM: 7px
}
#calendar IMG {
	PADDING-RIGHT: 10px; FLOAT: left; PADDING-BOTTOM: 5px
}
#footer {
	FONT-WEIGHT: bold; FONT-SIZE: 12px; BACKGROUND: #cccc9f; =
PADDING-BOTTOM: 5px; COLOR: #fff; PADDING-TOP: 7px; HEIGHT: auto; =
TEXT-ALIGN: center
}
#footer A {
	COLOR: #fff
}
.clear {
	CLEAR: both
}

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/css/nav.css

#tabsB {
	FONT-SIZE: 93%; BACKGROUND: #cccc9f; FLOAT: right; LINE-HEIGHT: normal
}
#tabsB UL {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 16px; LIST-STYLE-TYPE: none
}
#tabsB LI {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
#tabsB A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 4px; BACKGROUND: =
url(../img/tableftB.gif) no-repeat left top; FLOAT: left; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; TEXT-DECORATION: =
none
}
#tabsB A SPAN {
	PADDING-RIGHT: 15px; DISPLAY: block; PADDING-LEFT: 6px; BACKGROUND: =
url(../img/tabrightB.gif) no-repeat right top; FLOAT: left; =
PADDING-BOTTOM: 4px; COLOR: #666; PADDING-TOP: 5px
}
#tabsB A SPAN {
	FLOAT: none
}
#tabsB A:hover SPAN {
	COLOR: #663300
}
#tabsB A SPAN.active {
	COLOR: #663300
}
#tabsB A:hover {
	BACKGROUND-POSITION: 0% -42px
}
#tabsB A.active {
	BACKGROUND-POSITION: 0% -42px
}
#tabsB A:hover SPAN {
	BACKGROUND-POSITION: 100% -42px
}
#tabsB A SPAN.active {
	BACKGROUND-POSITION: 100% -42px
}
#tabsB_2 {
	FONT-SIZE: 93%; BACKGROUND: #fff; FLOAT: left; LINE-HEIGHT: normal
}
#tabsB_2 UL {
	PADDING-RIGHT: 10px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 16px; LIST-STYLE-TYPE: none
}
#tabsB_2 LI {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
#tabsB_2 A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 4px; BACKGROUND: =
url(../img/tableftB.gif) no-repeat left top; FLOAT: left; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; TEXT-DECORATION: =
none
}
#tabsB_2 A SPAN {
	PADDING-RIGHT: 15px; DISPLAY: block; PADDING-LEFT: 6px; BACKGROUND: =
url(../img/tabrightB.gif) no-repeat right top; FLOAT: left; =
PADDING-BOTTOM: 4px; COLOR: #666; PADDING-TOP: 5px
}
#tabsB_2 A SPAN {
	FLOAT: none
}
#tabsB_2 A:hover SPAN {
	COLOR: #663300
}
#tabsB_2 A SPAN.active {
	COLOR: #663300
}
#tabsB_2 A:hover {
	BACKGROUND-POSITION: 0% -42px
}
#tabsB_2 A.active {
	BACKGROUND-POSITION: 0% -42px
}
#tabsB_2 A:hover SPAN {
	BACKGROUND-POSITION: 100% -42px
}
#tabsB_2 A SPAN.active {
	BACKGROUND-POSITION: 100% -42px
}

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/css/feed2js_film.css

.rss-box {
	MARGIN-LEFT: 20px; WIDTH: auto; LIST-STYLE-TYPE: none; =
BACKGROUND-COLOR: #ffffff
}
.rss-title {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
rss-title A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.rss-items {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.rss-item {
	MARGIN-BOTTOM: 1em; LIST-STYLE-TYPE: none
}
.rss-item-link {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; LIST-STYLE-TYPE: none; =
TEXT-DECORATION: none
}
.rss-item A:hover {
	LIST-STYLE-TYPE: none; TEXT-DECORATION: underline
}
.rss-date {
	DISPLAY: block; FONT-SIZE: 12px; MARGIN-BOTTOM: 8px
}

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/scriptaculous/lib/prototype.js

/*  Prototype JavaScript framework, version 1.5.1=0A=
 *  (c) 2005-2007 Sam Stephenson=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *  For details, see the Prototype web site: http://www.prototypejs.org/=0A=
 *=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Prototype =3D {=0A=
  Version: '1.5.1',=0A=
=0A=
  Browser: {=0A=
    IE:     !!(window.attachEvent && !window.opera),=0A=
    Opera:  !!window.opera,=0A=
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A=
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && =
navigator.userAgent.indexOf('KHTML') =3D=3D -1=0A=
  },=0A=
=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate,=0A=
    ElementExtensions: !!window.HTMLElement,=0A=
    SpecificElementExtensions:=0A=
      (document.createElement('div').__proto__ !=3D=3D=0A=
       document.createElement('form').__proto__)=0A=
  },=0A=
=0A=
  ScriptFragment: '<script[^>]*>([\u0001-\uFFFF]*?)</script>',=0A=
  JSONFilter: /^\/\*-secure-\s*(.*)\s*\*\/\s*$/,=0A=
=0A=
  emptyFunction: function() { },=0A=
  K: function(x) { return x }=0A=
}=0A=
=0A=
var Class =3D {=0A=
  create: function() {=0A=
    return function() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
var Abstract =3D new Object();=0A=
=0A=
Object.extend =3D function(destination, source) {=0A=
  for (var property in source) {=0A=
    destination[property] =3D source[property];=0A=
  }=0A=
  return destination;=0A=
}=0A=
=0A=
Object.extend(Object, {=0A=
  inspect: function(object) {=0A=
    try {=0A=
      if (object =3D=3D=3D undefined) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : object.toString();=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  },=0A=
=0A=
  toJSON: function(object) {=0A=
    var type =3D typeof object;=0A=
    switch(type) {=0A=
      case 'undefined':=0A=
      case 'function':=0A=
      case 'unknown': return;=0A=
      case 'boolean': return object.toString();=0A=
    }=0A=
    if (object =3D=3D=3D null) return 'null';=0A=
    if (object.toJSON) return object.toJSON();=0A=
    if (object.ownerDocument =3D=3D=3D document) return;=0A=
    var results =3D [];=0A=
    for (var property in object) {=0A=
      var value =3D Object.toJSON(object[property]);=0A=
      if (value !=3D=3D undefined)=0A=
        results.push(property.toJSON() + ': ' + value);=0A=
    }=0A=
    return '{' + results.join(', ') + '}';=0A=
  },=0A=
=0A=
  keys: function(object) {=0A=
    var keys =3D [];=0A=
    for (var property in object)=0A=
      keys.push(property);=0A=
    return keys;=0A=
  },=0A=
=0A=
  values: function(object) {=0A=
    var values =3D [];=0A=
    for (var property in object)=0A=
      values.push(object[property]);=0A=
    return values;=0A=
  },=0A=
=0A=
  clone: function(object) {=0A=
    return Object.extend({}, object);=0A=
  }=0A=
});=0A=
=0A=
Function.prototype.bind =3D function() {=0A=
  var __method =3D this, args =3D $A(arguments), object =3D args.shift();=0A=
  return function() {=0A=
    return __method.apply(object, args.concat($A(arguments)));=0A=
  }=0A=
}=0A=
=0A=
Function.prototype.bindAsEventListener =3D function(object) {=0A=
  var __method =3D this, args =3D $A(arguments), object =3D args.shift();=0A=
  return function(event) {=0A=
    return __method.apply(object, [event || window.event].concat(args));=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Number.prototype, {=0A=
  toColorPart: function() {=0A=
    return this.toPaddedString(2, 16);=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this + 1;=0A=
  },=0A=
=0A=
  times: function(iterator) {=0A=
    $R(0, this, true).each(iterator);=0A=
    return this;=0A=
  },=0A=
=0A=
  toPaddedString: function(length, radix) {=0A=
    var string =3D this.toString(radix || 10);=0A=
    return '0'.times(length - string.length) + string;=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return isFinite(this) ? this.toString() : 'null';=0A=
  }=0A=
});=0A=
=0A=
Date.prototype.toJSON =3D function() {=0A=
  return '"' + this.getFullYear() + '-' +=0A=
    (this.getMonth() + 1).toPaddedString(2) + '-' +=0A=
    this.getDate().toPaddedString(2) + 'T' +=0A=
    this.getHours().toPaddedString(2) + ':' +=0A=
    this.getMinutes().toPaddedString(2) + ':' +=0A=
    this.getSeconds().toPaddedString(2) + '"';=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=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var PeriodicalExecuter =3D Class.create();=0A=
PeriodicalExecuter.prototype =3D {=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=
  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.callback(this);=0A=
      } finally {=0A=
        this.currentlyExecuting =3D false;=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
Object.extend(String, {=0A=
  interpret: function(value) {=0A=
    return value =3D=3D null ? '' : String(value);=0A=
  },=0A=
  specialChar: {=0A=
    '\b': '\\b',=0A=
    '\t': '\\t',=0A=
    '\n': '\\n',=0A=
    '\f': '\\f',=0A=
    '\r': '\\r',=0A=
    '\\': '\\\\'=0A=
  }=0A=
});=0A=
=0A=
Object.extend(String.prototype, {=0A=
  gsub: function(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D arguments.callee.prepareReplacement(replacement);=0A=
=0A=
    while (source.length > 0) {=0A=
      if (match =3D source.match(pattern)) {=0A=
        result +=3D source.slice(0, match.index);=0A=
        result +=3D String.interpret(replacement(match));=0A=
        source  =3D source.slice(match.index + match[0].length);=0A=
      } else {=0A=
        result +=3D source, source =3D '';=0A=
      }=0A=
    }=0A=
    return result;=0A=
  },=0A=
=0A=
  sub: function(pattern, replacement, count) {=0A=
    replacement =3D this.gsub.prepareReplacement(replacement);=0A=
    count =3D count =3D=3D=3D undefined ? 1 : count;=0A=
=0A=
    return this.gsub(pattern, function(match) {=0A=
      if (--count < 0) return match[0];=0A=
      return replacement(match);=0A=
    });=0A=
  },=0A=
=0A=
  scan: function(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return this;=0A=
  },=0A=
=0A=
  truncate: function(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : this;=0A=
  },=0A=
=0A=
  strip: function() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  },=0A=
=0A=
  stripTags: function() {=0A=
    return this.replace(/<\/?[^>]+>/gi, '');=0A=
  },=0A=
=0A=
  stripScripts: function() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  },=0A=
=0A=
  extractScripts: function() {=0A=
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A=
    var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A=
    return (this.match(matchAll) || []).map(function(scriptTag) {=0A=
      return (scriptTag.match(matchOne) || ['', ''])[1];=0A=
    });=0A=
  },=0A=
=0A=
  evalScripts: function() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  },=0A=
=0A=
  escapeHTML: function() {=0A=
    var self =3D arguments.callee;=0A=
    self.text.data =3D this;=0A=
    return self.div.innerHTML;=0A=
  },=0A=
=0A=
  unescapeHTML: function() {=0A=
    var div =3D document.createElement('div');=0A=
    div.innerHTML =3D this.stripTags();=0A=
    return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A=
      $A(div.childNodes).inject('', function(memo, node) { return =
memo+node.nodeValue }) :=0A=
      div.childNodes[0].nodeValue) : '';=0A=
  },=0A=
=0A=
  toQueryParams: function(separator) {=0A=
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A=
    if (!match) return {};=0A=
=0A=
    return match[1].split(separator || '&').inject({}, function(hash, =
pair) {=0A=
      if ((pair =3D pair.split('=3D'))[0]) {=0A=
        var key =3D decodeURIComponent(pair.shift());=0A=
        var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A=
        if (value !=3D undefined) value =3D decodeURIComponent(value);=0A=
=0A=
        if (key in hash) {=0A=
          if (hash[key].constructor !=3D Array) hash[key] =3D =
[hash[key]];=0A=
          hash[key].push(value);=0A=
        }=0A=
        else hash[key] =3D value;=0A=
      }=0A=
      return hash;=0A=
    });=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.split('');=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  },=0A=
=0A=
  times: function(count) {=0A=
    var result =3D '';=0A=
    for (var i =3D 0; i < count; i++) result +=3D this;=0A=
    return result;=0A=
  },=0A=
=0A=
  camelize: function() {=0A=
    var parts =3D this.split('-'), len =3D parts.length;=0A=
    if (len =3D=3D 1) return parts[0];=0A=
=0A=
    var camelized =3D this.charAt(0) =3D=3D '-'=0A=
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A=
      : parts[0];=0A=
=0A=
    for (var i =3D 1; i < len; i++)=0A=
      camelized +=3D parts[i].charAt(0).toUpperCase() + =
parts[i].substring(1);=0A=
=0A=
    return camelized;=0A=
  },=0A=
=0A=
  capitalize: function() {=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  },=0A=
=0A=
  underscore: function() {=0A=
    return this.gsub(/::/, =
'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{=
1}_#{2}').gsub(/-/,'_').toLowerCase();=0A=
  },=0A=
=0A=
  dasherize: function() {=0A=
    return this.gsub(/_/,'-');=0A=
  },=0A=
=0A=
  inspect: function(useDoubleQuotes) {=0A=
    var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A=
      var character =3D String.specialChar[match[0]];=0A=
      return character ? character : '\\u00' + =
match[0].charCodeAt().toPaddedString(2, 16);=0A=
    });=0A=
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';=0A=
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return this.inspect(true);=0A=
  },=0A=
=0A=
  unfilterJSON: function(filter) {=0A=
    return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A=
  },=0A=
=0A=
  evalJSON: function(sanitize) {=0A=
    var json =3D this.unfilterJSON();=0A=
    try {=0A=
      if (!sanitize || =
(/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u =
\n\r\t])+?$/.test(json)))=0A=
        return eval('(' + json + ')');=0A=
    } catch (e) { }=0A=
    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A=
  },=0A=
=0A=
  include: function(pattern) {=0A=
    return this.indexOf(pattern) > -1;=0A=
  },=0A=
=0A=
  startsWith: function(pattern) {=0A=
    return this.indexOf(pattern) =3D=3D=3D 0;=0A=
  },=0A=
=0A=
  endsWith: function(pattern) {=0A=
    var d =3D this.length - pattern.length;=0A=
    return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A=
  },=0A=
=0A=
  empty: function() {=0A=
    return this =3D=3D '';=0A=
  },=0A=
=0A=
  blank: function() {=0A=
    return /^\s*$/.test(this);=0A=
  }=0A=
});=0A=
=0A=
if (Prototype.Browser.WebKit || Prototype.Browser.IE) =
Object.extend(String.prototype, {=0A=
  escapeHTML: function() {=0A=
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');=0A=
  },=0A=
  unescapeHTML: function() {=0A=
    return =
this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');=0A=
  }=0A=
});=0A=
=0A=
String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A=
  if (typeof replacement =3D=3D 'function') return replacement;=0A=
  var template =3D new Template(replacement);=0A=
  return function(match) { return template.evaluate(match) };=0A=
}=0A=
=0A=
String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A=
=0A=
Object.extend(String.prototype.escapeHTML, {=0A=
  div:  document.createElement('div'),=0A=
  text: document.createTextNode('')=0A=
});=0A=
=0A=
with (String.prototype.escapeHTML) div.appendChild(text);=0A=
=0A=
var Template =3D Class.create();=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
Template.prototype =3D {=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=
    return this.template.gsub(this.pattern, function(match) {=0A=
      var before =3D match[1];=0A=
      if (before =3D=3D '\\') return match[2];=0A=
      return before + String.interpret(object[match[3]]);=0A=
    });=0A=
  }=0A=
}=0A=
=0A=
var $break =3D {}, $continue =3D new Error('"throw $continue" is =
deprecated, use "return" instead');=0A=
=0A=
var Enumerable =3D {=0A=
  each: function(iterator) {=0A=
    var index =3D 0;=0A=
    try {=0A=
      this._each(function(value) {=0A=
        iterator(value, index++);=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
    return this;=0A=
  },=0A=
=0A=
  eachSlice: function(number, iterator) {=0A=
    var index =3D -number, slices =3D [], array =3D this.toArray();=0A=
    while ((index +=3D number) < array.length)=0A=
      slices.push(array.slice(index, index+number));=0A=
    return slices.map(iterator);=0A=
  },=0A=
=0A=
  all: function(iterator) {=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!(iterator || Prototype.K)(value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  any: function(iterator) {=0A=
    var result =3D false;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!(iterator || Prototype.K)(value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  collect: function(iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push((iterator || Prototype.K)(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  detect: function(iterator) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  findAll: function(iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  grep: function(pattern, iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      var stringValue =3D value.toString();=0A=
      if (stringValue.match(pattern))=0A=
        results.push((iterator || Prototype.K)(value, index));=0A=
    })=0A=
    return results;=0A=
  },=0A=
=0A=
  include: function(object) {=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  },=0A=
=0A=
  inGroupsOf: function(number, fillWith) {=0A=
    fillWith =3D fillWith =3D=3D=3D undefined ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  },=0A=
=0A=
  inject: function(memo, iterator) {=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator(memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  },=0A=
=0A=
  invoke: function(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.map(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  },=0A=
=0A=
  max: function(iterator) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D (iterator || Prototype.K)(value, index);=0A=
      if (result =3D=3D undefined || value >=3D result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  min: function(iterator) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D (iterator || Prototype.K)(value, index);=0A=
      if (result =3D=3D undefined || value < result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  partition: function(iterator) {=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      ((iterator || Prototype.K)(value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  },=0A=
=0A=
  pluck: function(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  reject: function(iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  sortBy: function(iterator) {=0A=
    return this.map(function(value, index) {=0A=
      return {value: value, criteria: iterator(value, index)};=0A=
    }).sort(function(left, right) {=0A=
      var a =3D left.criteria, b =3D right.criteria;=0A=
      return a < b ? -1 : a > b ? 1 : 0;=0A=
    }).pluck('value');=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.map();=0A=
  },=0A=
=0A=
  zip: function() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (typeof args.last() =3D=3D 'function')=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      return iterator(collections.pluck(index));=0A=
    });=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.toArray().length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Enumerable, {=0A=
  map:     Enumerable.collect,=0A=
  find:    Enumerable.detect,=0A=
  select:  Enumerable.findAll,=0A=
  member:  Enumerable.include,=0A=
  entries: Enumerable.toArray=0A=
});=0A=
var $A =3D Array.from =3D function(iterable) {=0A=
  if (!iterable) return [];=0A=
  if (iterable.toArray) {=0A=
    return iterable.toArray();=0A=
  } else {=0A=
    var results =3D [];=0A=
    for (var i =3D 0, length =3D iterable.length; i < length; i++)=0A=
      results.push(iterable[i]);=0A=
    return results;=0A=
  }=0A=
}=0A=
=0A=
if (Prototype.Browser.WebKit) {=0A=
  $A =3D Array.from =3D function(iterable) {=0A=
    if (!iterable) return [];=0A=
    if (!(typeof iterable =3D=3D 'function' && iterable =3D=3D '[object =
NodeList]') &&=0A=
      iterable.toArray) {=0A=
      return iterable.toArray();=0A=
    } else {=0A=
      var results =3D [];=0A=
      for (var i =3D 0, length =3D iterable.length; i < length; i++)=0A=
        results.push(iterable[i]);=0A=
      return results;=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Array.prototype, Enumerable);=0A=
=0A=
if (!Array.prototype._reverse)=0A=
  Array.prototype._reverse =3D Array.prototype.reverse;=0A=
=0A=
Object.extend(Array.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      iterator(this[i]);=0A=
  },=0A=
=0A=
  clear: function() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  },=0A=
=0A=
  first: function() {=0A=
    return this[0];=0A=
  },=0A=
=0A=
  last: function() {=0A=
    return this[this.length - 1];=0A=
  },=0A=
=0A=
  compact: function() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  },=0A=
=0A=
  flatten: function() {=0A=
    return this.inject([], function(array, value) {=0A=
      return array.concat(value && value.constructor =3D=3D Array ?=0A=
        value.flatten() : [value]);=0A=
    });=0A=
  },=0A=
=0A=
  without: function() {=0A=
    var values =3D $A(arguments);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  },=0A=
=0A=
  indexOf: function(object) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      if (this[i] =3D=3D object) return i;=0A=
    return -1;=0A=
  },=0A=
=0A=
  reverse: function(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  },=0A=
=0A=
  reduce: function() {=0A=
    return this.length > 1 ? this : this[0];=0A=
  },=0A=
=0A=
  uniq: function(sorted) {=0A=
    return this.inject([], function(array, value, index) {=0A=
      if (0 =3D=3D index || (sorted ? array.last() !=3D value : =
!array.include(value)))=0A=
        array.push(value);=0A=
      return array;=0A=
    });=0A=
  },=0A=
=0A=
  clone: function() {=0A=
    return [].concat(this);=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    var results =3D [];=0A=
    this.each(function(object) {=0A=
      var value =3D Object.toJSON(object);=0A=
      if (value !=3D=3D undefined) results.push(value);=0A=
    });=0A=
    return '[' + results.join(', ') + ']';=0A=
  }=0A=
});=0A=
=0A=
Array.prototype.toArray =3D Array.prototype.clone;=0A=
=0A=
function $w(string) {=0A=
  string =3D string.strip();=0A=
  return string ? string.split(/\s+/) : [];=0A=
}=0A=
=0A=
if (Prototype.Browser.Opera){=0A=
  Array.prototype.concat =3D function() {=0A=
    var array =3D [];=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++) =
array.push(this[i]);=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      if (arguments[i].constructor =3D=3D Array) {=0A=
        for (var j =3D 0, arrayLength =3D arguments[i].length; j < =
arrayLength; j++)=0A=
          array.push(arguments[i][j]);=0A=
      } else {=0A=
        array.push(arguments[i]);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  }=0A=
}=0A=
var Hash =3D function(object) {=0A=
  if (object instanceof Hash) this.merge(object);=0A=
  else Object.extend(this, object || {});=0A=
};=0A=
=0A=
Object.extend(Hash, {=0A=
  toQueryString: function(obj) {=0A=
    var parts =3D [];=0A=
    parts.add =3D arguments.callee.addPair;=0A=
=0A=
    this.prototype._each.call(obj, function(pair) {=0A=
      if (!pair.key) return;=0A=
      var value =3D pair.value;=0A=
=0A=
      if (value && typeof value =3D=3D 'object') {=0A=
        if (value.constructor =3D=3D Array) value.each(function(value) {=0A=
          parts.add(pair.key, value);=0A=
        });=0A=
        return;=0A=
      }=0A=
      parts.add(pair.key, value);=0A=
    });=0A=
=0A=
    return parts.join('&');=0A=
  },=0A=
=0A=
  toJSON: function(object) {=0A=
    var results =3D [];=0A=
    this.prototype._each.call(object, function(pair) {=0A=
      var value =3D Object.toJSON(pair.value);=0A=
      if (value !=3D=3D undefined) results.push(pair.key.toJSON() + ': ' =
+ value);=0A=
    });=0A=
    return '{' + results.join(', ') + '}';=0A=
  }=0A=
});=0A=
=0A=
Hash.toQueryString.addPair =3D function(key, value, prefix) {=0A=
  key =3D encodeURIComponent(key);=0A=
  if (value =3D=3D=3D undefined) this.push(key);=0A=
  else this.push(key + '=3D' + (value =3D=3D null ? '' : =
encodeURIComponent(value)));=0A=
}=0A=
=0A=
Object.extend(Hash.prototype, Enumerable);=0A=
Object.extend(Hash.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var key in this) {=0A=
      var value =3D this[key];=0A=
      if (value && value =3D=3D Hash.prototype[key]) continue;=0A=
=0A=
      var pair =3D [key, value];=0A=
      pair.key =3D key;=0A=
      pair.value =3D value;=0A=
      iterator(pair);=0A=
    }=0A=
  },=0A=
=0A=
  keys: function() {=0A=
    return this.pluck('key');=0A=
  },=0A=
=0A=
  values: function() {=0A=
    return this.pluck('value');=0A=
  },=0A=
=0A=
  merge: function(hash) {=0A=
    return $H(hash).inject(this, function(mergedHash, pair) {=0A=
      mergedHash[pair.key] =3D pair.value;=0A=
      return mergedHash;=0A=
    });=0A=
  },=0A=
=0A=
  remove: function() {=0A=
    var result;=0A=
    for(var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var value =3D this[arguments[i]];=0A=
      if (value !=3D=3D undefined){=0A=
        if (result =3D=3D=3D undefined) result =3D value;=0A=
        else {=0A=
          if (result.constructor !=3D Array) result =3D [result];=0A=
          result.push(value)=0A=
        }=0A=
      }=0A=
      delete this[arguments[i]];=0A=
    }=0A=
    return result;=0A=
  },=0A=
=0A=
  toQueryString: function() {=0A=
    return Hash.toQueryString(this);=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Hash:{' + this.map(function(pair) {=0A=
      return pair.map(Object.inspect).join(': ');=0A=
    }).join(', ') + '}>';=0A=
  },=0A=
=0A=
  toJSON: function() {=0A=
    return Hash.toJSON(this);=0A=
  }=0A=
});=0A=
=0A=
function $H(object) {=0A=
  if (object instanceof Hash) return object;=0A=
  return new Hash(object);=0A=
};=0A=
=0A=
// Safari iterates over shadowed properties=0A=
if (function() {=0A=
  var i =3D 0, Test =3D function(value) { this.key =3D value };=0A=
  Test.prototype.key =3D 'foo';=0A=
  for (var property in new Test('bar')) i++;=0A=
  return i > 1;=0A=
}()) Hash.prototype._each =3D function(iterator) {=0A=
  var cache =3D [];=0A=
  for (var key in this) {=0A=
    var value =3D this[key];=0A=
    if ((value && value =3D=3D Hash.prototype[key]) || =
cache.include(key)) continue;=0A=
    cache.push(key);=0A=
    var pair =3D [key, value];=0A=
    pair.key =3D key;=0A=
    pair.value =3D value;=0A=
    iterator(pair);=0A=
  }=0A=
};=0A=
ObjectRange =3D Class.create();=0A=
Object.extend(ObjectRange.prototype, Enumerable);=0A=
Object.extend(ObjectRange.prototype, {=0A=
  initialize: function(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  },=0A=
=0A=
  include: function(value) {=0A=
    if (value < this.start)=0A=
      return false;=0A=
    if (this.exclusive)=0A=
      return value < this.end;=0A=
    return value <=3D this.end;=0A=
  }=0A=
});=0A=
=0A=
var $R =3D function(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
}=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new XMLHttpRequest()},=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
}=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responder) {=0A=
    if (!this.include(responder))=0A=
      this.responders.push(responder);=0A=
  },=0A=
=0A=
  unregister: function(responder) {=0A=
    this.responders =3D this.responders.without(responder);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (typeof responder[callback] =3D=3D 'function') {=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() {=0A=
    Ajax.activeRequestCount++;=0A=
  },=0A=
  onComplete: function() {=0A=
    Ajax.activeRequestCount--;=0A=
  }=0A=
});=0A=
=0A=
Ajax.Base =3D function() {};=0A=
Ajax.Base.prototype =3D {=0A=
  setOptions: 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=
    }=0A=
    Object.extend(this.options, options || {});=0A=
=0A=
    this.options.method =3D this.options.method.toLowerCase();=0A=
    if (typeof this.options.parameters =3D=3D 'string')=0A=
      this.options.parameters =3D =
this.options.parameters.toQueryParams();=0A=
  }=0A=
}=0A=
=0A=
Ajax.Request =3D Class.create();=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
Ajax.Request.prototype =3D Object.extend(new Ajax.Base(), {=0A=
  _complete: false,=0A=
=0A=
  initialize: function(url, options) {=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.setOptions(options);=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    this.url =3D url;=0A=
    this.method =3D this.options.method;=0A=
    var params =3D Object.clone(this.options.parameters);=0A=
=0A=
    if (!['get', 'post'].include(this.method)) {=0A=
      // simulate other verbs over post=0A=
      params['_method'] =3D this.method;=0A=
      this.method =3D 'post';=0A=
    }=0A=
=0A=
    this.parameters =3D params;=0A=
=0A=
    if (params =3D Hash.toQueryString(params)) {=0A=
      // when GET, append parameters to URL=0A=
      if (this.method =3D=3D 'get')=0A=
        this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A=
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A=
        params +=3D '&_=3D';=0A=
    }=0A=
=0A=
    try {=0A=
      if (this.options.onCreate) this.options.onCreate(this.transport);=0A=
      Ajax.Responders.dispatch('onCreate', this, this.transport);=0A=
=0A=
      this.transport.open(this.method.toUpperCase(), this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous)=0A=
        setTimeout(function() { this.respondToReadyState(1) =
}.bind(this), 10);=0A=
=0A=
      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
      this.setRequestHeaders();=0A=
=0A=
      this.body =3D this.method =3D=3D 'post' ? (this.options.postBody =
|| params) : null;=0A=
      this.transport.send(this.body);=0A=
=0A=
      /* Force Firefox to handle ready state 4 for synchronous requests =
*/=0A=
      if (!this.options.asynchronous && this.transport.overrideMimeType)=0A=
        this.onStateChange();=0A=
=0A=
    }=0A=
    catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var headers =3D {=0A=
      'X-Requested-With': 'XMLHttpRequest',=0A=
      'X-Prototype-Version': Prototype.Version,=0A=
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'=0A=
    };=0A=
=0A=
    if (this.method =3D=3D 'post') {=0A=
      headers['Content-type'] =3D this.options.contentType +=0A=
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');=0A=
=0A=
      /* Force "Connection: close" for older Mozilla browsers to work=0A=
       * around a bug where XMLHttpRequest sends an incorrect=0A=
       * Content-length header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType &&=0A=
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)=0A=
            headers['Connection'] =3D 'close';=0A=
    }=0A=
=0A=
    // user-defined headers=0A=
    if (typeof this.options.requestHeaders =3D=3D 'object') {=0A=
      var extras =3D this.options.requestHeaders;=0A=
=0A=
      if (typeof extras.push =3D=3D 'function')=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=
    return !this.transport.status=0A=
        || (this.transport.status >=3D 200 && this.transport.status < =
300);=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var state =3D Ajax.Request.Events[readyState];=0A=
    var transport =3D this.transport, json =3D this.evalJSON();=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      try {=0A=
        this._complete =3D true;=0A=
        (this.options['on' + this.transport.status]=0A=
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A=
         || Prototype.emptyFunction)(transport, json);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      var contentType =3D this.getHeader('Content-type');=0A=
      if (contentType && contentType.strip().=0A=
        match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))=0A=
          this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + state] || Prototype.emptyFunction)(transport, =
json);=0A=
      Ajax.Responders.dispatch('on' + state, this, transport, json);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      // avoid memory leak in MSIE: clean up=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name);=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  evalJSON: function() {=0A=
    try {=0A=
      var json =3D this.getHeader('X-JSON');=0A=
      return json ? json.evalJSON() : 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.Updater =3D Class.create();=0A=
=0A=
Object.extend(Object.extend(Ajax.Updater.prototype, =
Ajax.Request.prototype), {=0A=
  initialize: function(container, url, options) {=0A=
    this.container =3D {=0A=
      success: (container.success || container),=0A=
      failure: (container.failure || (container.success ? null : =
container))=0A=
    }=0A=
=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.setOptions(options);=0A=
=0A=
    var onComplete =3D this.options.onComplete || =
Prototype.emptyFunction;=0A=
    this.options.onComplete =3D (function(transport, param) {=0A=
      this.updateContent();=0A=
      onComplete(transport, param);=0A=
    }).bind(this);=0A=
=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  updateContent: function() {=0A=
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'];=0A=
    var response =3D this.transport.responseText;=0A=
=0A=
    if (!this.options.evalScripts) response =3D response.stripScripts();=0A=
=0A=
    if (receiver =3D $(receiver)) {=0A=
      if (this.options.insertion)=0A=
        new this.options.insertion(receiver, response);=0A=
      else=0A=
        receiver.update(response);=0A=
    }=0A=
=0A=
    if (this.success()) {=0A=
      if (this.onComplete)=0A=
        setTimeout(this.onComplete.bind(this), 10);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create();=0A=
Ajax.PeriodicalUpdater.prototype =3D Object.extend(new Ajax.Base(), {=0A=
  initialize: function(container, url, options) {=0A=
    this.setOptions(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(request) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (request.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D request.responseText;=0A=
    }=0A=
    this.timer =3D setTimeout(this.onTimerEvent.bind(this),=0A=
      this.decay * this.frequency * 1000);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
function $(element) {=0A=
  if (arguments.length > 1) {=0A=
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)=0A=
      elements.push($(arguments[i]));=0A=
    return elements;=0A=
  }=0A=
  if (typeof element =3D=3D 'string')=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(query.snapshotItem(i));=0A=
    return results;=0A=
  };=0A=
=0A=
  document.getElementsByClassName =3D function(className, parentElement) =
{=0A=
    var q =3D ".//*[contains(concat(' ', @class, ' '), ' " + className + =
" ')]";=0A=
    return document._getElementsByXPath(q, parentElement);=0A=
  }=0A=
=0A=
} else document.getElementsByClassName =3D function(className, =
parentElement) {=0A=
  var children =3D ($(parentElement) || =
document.body).getElementsByTagName('*');=0A=
  var elements =3D [], child;=0A=
  for (var i =3D 0, length =3D children.length; i < length; i++) {=0A=
    child =3D children[i];=0A=
    if (Element.hasClassName(child, className))=0A=
      elements.push(Element.extend(child));=0A=
  }=0A=
  return elements;=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!window.Element) var Element =3D {};=0A=
=0A=
Element.extend =3D function(element) {=0A=
  var F =3D Prototype.BrowserFeatures;=0A=
  if (!element || !element.tagName || element.nodeType =3D=3D 3 ||=0A=
   element._extended || F.SpecificElementExtensions || element =3D=3D =
window)=0A=
    return element;=0A=
=0A=
  var methods =3D {}, tagName =3D element.tagName, cache =3D =
Element.extend.cache,=0A=
   T =3D Element.Methods.ByTag;=0A=
=0A=
  // extend methods for all tags (Safari doesn't need this)=0A=
  if (!F.ElementExtensions) {=0A=
    Object.extend(methods, Element.Methods),=0A=
    Object.extend(methods, Element.Methods.Simulated);=0A=
  }=0A=
=0A=
  // extend methods for specific tags=0A=
  if (T[tagName]) Object.extend(methods, T[tagName]);=0A=
=0A=
  for (var property in methods) {=0A=
    var value =3D methods[property];=0A=
    if (typeof value =3D=3D 'function' && !(property in element))=0A=
      element[property] =3D cache.findOrStore(value);=0A=
  }=0A=
=0A=
  element._extended =3D Prototype.emptyFunction;=0A=
  return element;=0A=
};=0A=
=0A=
Element.extend.cache =3D {=0A=
  findOrStore: function(value) {=0A=
    return this[value] =3D this[value] || function() {=0A=
      return value.apply(null, [this].concat($A(arguments)));=0A=
    }=0A=
  }=0A=
};=0A=
=0A=
Element.Methods =3D {=0A=
  visible: function(element) {=0A=
    return $(element).style.display !=3D 'none';=0A=
  },=0A=
=0A=
  toggle: function(element) {=0A=
    element =3D $(element);=0A=
    Element[Element.visible(element) ? 'hide' : 'show'](element);=0A=
    return element;=0A=
  },=0A=
=0A=
  hide: function(element) {=0A=
    $(element).style.display =3D 'none';=0A=
    return element;=0A=
  },=0A=
=0A=
  show: function(element) {=0A=
    $(element).style.display =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  remove: function(element) {=0A=
    element =3D $(element);=0A=
    element.parentNode.removeChild(element);=0A=
    return element;=0A=
  },=0A=
=0A=
  update: function(element, html) {=0A=
    html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A=
    $(element).innerHTML =3D html.stripScripts();=0A=
    setTimeout(function() {html.evalScripts()}, 10);=0A=
    return element;=0A=
  },=0A=
=0A=
  replace: function(element, html) {=0A=
    element =3D $(element);=0A=
    html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A=
    if (element.outerHTML) {=0A=
      element.outerHTML =3D html.stripScripts();=0A=
    } else {=0A=
      var range =3D element.ownerDocument.createRange();=0A=
      range.selectNodeContents(element);=0A=
      element.parentNode.replaceChild(=0A=
        range.createContextualFragment(html.stripScripts()), element);=0A=
    }=0A=
    setTimeout(function() {html.evalScripts()}, 10);=0A=
    return element;=0A=
  },=0A=
=0A=
  inspect: function(element) {=0A=
    element =3D $(element);=0A=
    var result =3D '<' + element.tagName.toLowerCase();=0A=
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A=
      var property =3D pair.first(), attribute =3D pair.last();=0A=
      var value =3D (element[property] || '').toString();=0A=
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);=0A=
    });=0A=
    return result + '>';=0A=
  },=0A=
=0A=
  recursivelyCollect: function(element, property) {=0A=
    element =3D $(element);=0A=
    var elements =3D [];=0A=
    while (element =3D element[property])=0A=
      if (element.nodeType =3D=3D 1)=0A=
        elements.push(Element.extend(element));=0A=
    return elements;=0A=
  },=0A=
=0A=
  ancestors: function(element) {=0A=
    return $(element).recursivelyCollect('parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return $A($(element).getElementsByTagName('*')).each(Element.extend);=0A=
  },=0A=
=0A=
  firstDescendant: function(element) {=0A=
    element =3D $(element).firstChild;=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    return $(element);=0A=
  },=0A=
=0A=
  immediateDescendants: function(element) {=0A=
    if (!(element =3D $(element).firstChild)) return [];=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    if (element) return [element].concat($(element).nextSiblings());=0A=
    return [];=0A=
  },=0A=
=0A=
  previousSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return =
element.previousSiblings().reverse().concat(element.nextSiblings());=0A=
  },=0A=
=0A=
  match: function(element, selector) {=0A=
    if (typeof selector =3D=3D 'string')=0A=
      selector =3D new Selector(selector);=0A=
    return selector.match($(element));=0A=
  },=0A=
=0A=
  up: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return $(element.parentNode);=0A=
    var ancestors =3D element.ancestors();=0A=
    return expression ? Selector.findElement(ancestors, expression, =
index) :=0A=
      ancestors[index || 0];=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return element.firstDescendant();=0A=
    var descendants =3D element.descendants();=0A=
    return expression ? Selector.findElement(descendants, expression, =
index) :=0A=
      descendants[index || 0];=0A=
  },=0A=
=0A=
  previous: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.previousElementSibling(element));=0A=
    var previousSiblings =3D element.previousSiblings();=0A=
    return expression ? Selector.findElement(previousSiblings, =
expression, index) :=0A=
      previousSiblings[index || 0];=0A=
  },=0A=
=0A=
  next: function(element, expression, index) {=0A=
    element =3D $(element);=0A=
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.nextElementSibling(element));=0A=
    var nextSiblings =3D element.nextSiblings();=0A=
    return expression ? Selector.findElement(nextSiblings, expression, =
index) :=0A=
      nextSiblings[index || 0];=0A=
  },=0A=
=0A=
  getElementsBySelector: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element, args);=0A=
  },=0A=
=0A=
  getElementsByClassName: function(element, className) {=0A=
    return document.getElementsByClassName(className, element);=0A=
  },=0A=
=0A=
  readAttribute: function(element, name) {=0A=
    element =3D $(element);=0A=
    if (Prototype.Browser.IE) {=0A=
      if (!element.attributes) return null;=0A=
      var t =3D Element._attributeTranslations;=0A=
      if (t.values[name]) return t.values[name](element, name);=0A=
      if (t.names[name])  name =3D t.names[name];=0A=
      var attribute =3D element.attributes[name];=0A=
      return attribute ? attribute.nodeValue : null;=0A=
    }=0A=
    return element.getAttribute(name);=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    return $(element).getDimensions().height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return $(element).getDimensions().width;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var elementClassName =3D element.className;=0A=
    if (elementClassName.length =3D=3D 0) return false;=0A=
    if (elementClassName =3D=3D className ||=0A=
        elementClassName.match(new RegExp("(^|\\s)" + className + =
"(\\s|$)")))=0A=
      return true;=0A=
    return false;=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    Element.classNames(element).add(className);=0A=
    return element;=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    Element.classNames(element).remove(className);=0A=
    return element;=0A=
  },=0A=
=0A=
  toggleClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    Element.classNames(element)[element.hasClassName(className) ? =
'remove' : 'add'](className);=0A=
    return element;=0A=
  },=0A=
=0A=
  observe: function() {=0A=
    Event.observe.apply(Event, arguments);=0A=
    return $A(arguments).first();=0A=
  },=0A=
=0A=
  stopObserving: function() {=0A=
    Event.stopObserving.apply(Event, arguments);=0A=
    return $A(arguments).first();=0A=
  },=0A=
=0A=
  // removes whitespace-only text node children=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    var node =3D element.firstChild;=0A=
    while (node) {=0A=
      var nextNode =3D node.nextSibling;=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        element.removeChild(node);=0A=
      node =3D nextNode;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.blank();=0A=
  },=0A=
=0A=
  descendantOf: function(element, ancestor) {=0A=
    element =3D $(element), ancestor =3D $(ancestor);=0A=
    while (element =3D element.parentNode)=0A=
      if (element =3D=3D ancestor) return true;=0A=
    return false;=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Position.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) {=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, camelized) {=0A=
    element =3D $(element);=0A=
    var elementStyle =3D element.style;=0A=
=0A=
    for (var property in styles)=0A=
      if (property =3D=3D 'opacity') element.setOpacity(styles[property])=0A=
      else=0A=
        elementStyle[(property =3D=3D 'float' || property =3D=3D =
'cssFloat') ?=0A=
          (elementStyle.styleFloat =3D=3D=3D undefined ? 'cssFloat' : =
'styleFloat') :=0A=
          (camelized ? property : property.camelize())] =3D =
styles[property];=0A=
=0A=
    return element;=0A=
  },=0A=
=0A=
  setOpacity: function(element, value) {=0A=
    element =3D $(element);=0A=
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :=0A=
      (value < 0.00001) ? 0 : value;=0A=
    return element;=0A=
  },=0A=
=0A=
  getDimensions: function(element) {=0A=
    element =3D $(element);=0A=
    var display =3D $(element).getStyle('display');=0A=
    if (display !=3D 'none' && display !=3D null) // Safari bug=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=0A=
    // All *Width and *Height properties give 0 on elements with display =
none,=0A=
    // so enable the element temporarily=0A=
    var els =3D element.style;=0A=
    var originalVisibility =3D els.visibility;=0A=
    var originalPosition =3D els.position;=0A=
    var originalDisplay =3D els.display;=0A=
    els.visibility =3D 'hidden';=0A=
    els.position =3D 'absolute';=0A=
    els.display =3D 'block';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D originalDisplay;=0A=
    els.position =3D originalPosition;=0A=
    els.visibility =3D originalVisibility;=0A=
    return {width: originalWidth, height: originalHeight};=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      // Opera returns the offset relative to the positioning context, =
when an=0A=
      // element is position relative but top and left have not been =
defined=0A=
      if (window.opera) {=0A=
        element.style.top =3D 0;=0A=
        element.style.left =3D 0;=0A=
      }=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  undoPositioned: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._madePositioned) {=0A=
      element._madePositioned =3D undefined;=0A=
      element.style.position =3D=0A=
        element.style.top =3D=0A=
        element.style.left =3D=0A=
        element.style.bottom =3D=0A=
        element.style.right =3D '';=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  makeClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return element;=0A=
    element._overflow =3D element.style.overflow || 'auto';=0A=
    if ((Element.getStyle(element, 'overflow') || 'visible') !=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=
=0A=
Object.extend(Element.Methods, {=0A=
  childOf: Element.Methods.descendantOf,=0A=
  childElements: Element.Methods.immediateDescendants=0A=
});=0A=
=0A=
if (Prototype.Browser.Opera) {=0A=
  Element.Methods._getStyle =3D Element.Methods.getStyle;=0A=
  Element.Methods.getStyle =3D function(element, style) {=0A=
    switch(style) {=0A=
      case 'left':=0A=
      case 'top':=0A=
      case 'right':=0A=
      case 'bottom':=0A=
        if (Element._getStyle(element, 'position') =3D=3D 'static') =
return null;=0A=
      default: return Element._getStyle(element, style);=0A=
    }=0A=
  };=0A=
}=0A=
else if (Prototype.Browser.IE) {=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=
    element =3D $(element);=0A=
    var filter =3D element.getStyle('filter'), style =3D element.style;=0A=
    if (value =3D=3D 1 || value =3D=3D=3D '') {=0A=
      style.filter =3D filter.replace(/alpha\([^\)]*\)/gi,'');=0A=
      return element;=0A=
    } else if (value < 0.00001) value =3D 0;=0A=
    style.filter =3D filter.replace(/alpha\([^\)]*\)/gi, '') +=0A=
      'alpha(opacity=3D' + (value * 100) + ')';=0A=
    return element;=0A=
  };=0A=
=0A=
  // IE is missing .innerHTML support for TABLE-related elements=0A=
  Element.Methods.update =3D function(element, html) {=0A=
    element =3D $(element);=0A=
    html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A=
    var tagName =3D element.tagName.toUpperCase();=0A=
    if (['THEAD','TBODY','TR','TD'].include(tagName)) {=0A=
      var div =3D document.createElement('div');=0A=
      switch (tagName) {=0A=
        case 'THEAD':=0A=
        case 'TBODY':=0A=
          div.innerHTML =3D '<table><tbody>' +  html.stripScripts() + =
'</tbody></table>';=0A=
          depth =3D 2;=0A=
          break;=0A=
        case 'TR':=0A=
          div.innerHTML =3D '<table><tbody><tr>' +  html.stripScripts() =
+ '</tr></tbody></table>';=0A=
          depth =3D 3;=0A=
          break;=0A=
        case 'TD':=0A=
          div.innerHTML =3D '<table><tbody><tr><td>' +  =
html.stripScripts() + '</td></tr></tbody></table>';=0A=
          depth =3D 4;=0A=
      }=0A=
      $A(element.childNodes).each(function(node) { =
element.removeChild(node) });=0A=
      depth.times(function() { div =3D div.firstChild });=0A=
      $A(div.childNodes).each(function(node) { element.appendChild(node) =
});=0A=
    } else {=0A=
      element.innerHTML =3D html.stripScripts();=0A=
    }=0A=
    setTimeout(function() { html.evalScripts() }, 10);=0A=
    return element;=0A=
  }=0A=
}=0A=
else if (Prototype.Browser.Gecko) {=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=
Element._attributeTranslations =3D {=0A=
  names: {=0A=
    colspan:   "colSpan",=0A=
    rowspan:   "rowSpan",=0A=
    valign:    "vAlign",=0A=
    datetime:  "dateTime",=0A=
    accesskey: "accessKey",=0A=
    tabindex:  "tabIndex",=0A=
    enctype:   "encType",=0A=
    maxlength: "maxLength",=0A=
    readonly:  "readOnly",=0A=
    longdesc:  "longDesc"=0A=
  },=0A=
  values: {=0A=
    _getAttr: function(element, attribute) {=0A=
      return element.getAttribute(attribute, 2);=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=
      var node =3D element.getAttributeNode('title');=0A=
      return node.specified ? node.nodeValue : null;=0A=
    }=0A=
  }=0A=
};=0A=
=0A=
(function() {=0A=
  Object.extend(this, {=0A=
    href: this._getAttr,=0A=
    src:  this._getAttr,=0A=
    type: this._getAttr,=0A=
    disabled: this._flag,=0A=
    checked:  this._flag,=0A=
    readonly: this._flag,=0A=
    multiple: this._flag=0A=
  });=0A=
}).call(Element._attributeTranslations.values);=0A=
=0A=
Element.Methods.Simulated =3D {=0A=
  hasAttribute: function(element, attribute) {=0A=
    var t =3D Element._attributeTranslations, node;=0A=
    attribute =3D t.names[attribute] || attribute;=0A=
    node =3D $(element).getAttributeNode(attribute);=0A=
    return node && node.specified;=0A=
  }=0A=
};=0A=
=0A=
Element.Methods.ByTag =3D {};=0A=
=0A=
Object.extend(Element, Element.Methods);=0A=
=0A=
if (!Prototype.BrowserFeatures.ElementExtensions &&=0A=
 document.createElement('div').__proto__) {=0A=
  window.HTMLElement =3D {};=0A=
  window.HTMLElement.prototype =3D =
document.createElement('div').__proto__;=0A=
  Prototype.BrowserFeatures.ElementExtensions =3D true;=0A=
}=0A=
=0A=
Element.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 (tagName.constructor =3D=3D Array) 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=
    var cache =3D Element.extend.cache;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (!onlyIfAbsent || !(property in destination))=0A=
        destination[property] =3D cache.findOrStore(value);=0A=
    }=0A=
  }=0A=
=0A=
  function findDOMClass(tagName) {=0A=
    var klass;=0A=
    var trans =3D {=0A=
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A=
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": =
"DList",=0A=
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": =
"Heading",=0A=
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A=
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", =
"CAPTION":=0A=
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A=
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", =
"TR":=0A=
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A=
      "FrameSet", "IFRAME": "IFrame"=0A=
    };=0A=
    if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
    klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A=
    if (window[klass]) return window[klass];=0A=
=0A=
    window[klass] =3D {};=0A=
    window[klass].prototype =3D =
document.createElement(tagName).__proto__;=0A=
    return window[klass];=0A=
  }=0A=
=0A=
  if (F.ElementExtensions) {=0A=
    copy(Element.Methods, HTMLElement.prototype);=0A=
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A=
  }=0A=
=0A=
  if (F.SpecificElementExtensions) {=0A=
    for (var tag in Element.Methods.ByTag) {=0A=
      var klass =3D findDOMClass(tag);=0A=
      if (typeof klass =3D=3D "undefined") continue;=0A=
      copy(T[tag], klass.prototype);=0A=
    }=0A=
  }=0A=
=0A=
  Object.extend(Element, Element.Methods);=0A=
  delete Element.ByTag;=0A=
};=0A=
=0A=
var Toggle =3D { display: Element.toggle };=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.Insertion =3D function(adjacency) {=0A=
  this.adjacency =3D adjacency;=0A=
}=0A=
=0A=
Abstract.Insertion.prototype =3D {=0A=
  initialize: function(element, content) {=0A=
    this.element =3D $(element);=0A=
    this.content =3D content.stripScripts();=0A=
=0A=
    if (this.adjacency && this.element.insertAdjacentHTML) {=0A=
      try {=0A=
        this.element.insertAdjacentHTML(this.adjacency, this.content);=0A=
      } catch (e) {=0A=
        var tagName =3D this.element.tagName.toUpperCase();=0A=
        if (['TBODY', 'TR'].include(tagName)) {=0A=
          this.insertContent(this.contentFromAnonymousTable());=0A=
        } else {=0A=
          throw e;=0A=
        }=0A=
      }=0A=
    } else {=0A=
      this.range =3D this.element.ownerDocument.createRange();=0A=
      if (this.initializeRange) this.initializeRange();=0A=
      =
this.insertContent([this.range.createContextualFragment(this.content)]);=0A=
    }=0A=
=0A=
    setTimeout(function() {content.evalScripts()}, 10);=0A=
  },=0A=
=0A=
  contentFromAnonymousTable: function() {=0A=
    var div =3D document.createElement('div');=0A=
    div.innerHTML =3D '<table><tbody>' + this.content + =
'</tbody></table>';=0A=
    return $A(div.childNodes[0].childNodes[0].childNodes);=0A=
  }=0A=
}=0A=
=0A=
var Insertion =3D new Object();=0A=
=0A=
Insertion.Before =3D Class.create();=0A=
Insertion.Before.prototype =3D Object.extend(new =
Abstract.Insertion('beforeBegin'), {=0A=
  initializeRange: function() {=0A=
    this.range.setStartBefore(this.element);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.each((function(fragment) {=0A=
      this.element.parentNode.insertBefore(fragment, this.element);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
Insertion.Top =3D Class.create();=0A=
Insertion.Top.prototype =3D Object.extend(new =
Abstract.Insertion('afterBegin'), {=0A=
  initializeRange: function() {=0A=
    this.range.selectNodeContents(this.element);=0A=
    this.range.collapse(true);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.reverse(false).each((function(fragment) {=0A=
      this.element.insertBefore(fragment, this.element.firstChild);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
Insertion.Bottom =3D Class.create();=0A=
Insertion.Bottom.prototype =3D Object.extend(new =
Abstract.Insertion('beforeEnd'), {=0A=
  initializeRange: function() {=0A=
    this.range.selectNodeContents(this.element);=0A=
    this.range.collapse(this.element);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.each((function(fragment) {=0A=
      this.element.appendChild(fragment);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
Insertion.After =3D Class.create();=0A=
Insertion.After.prototype =3D Object.extend(new =
Abstract.Insertion('afterEnd'), {=0A=
  initializeRange: function() {=0A=
    this.range.setStartAfter(this.element);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.each((function(fragment) {=0A=
      this.element.parentNode.insertBefore(fragment,=0A=
        this.element.nextSibling);=0A=
    }).bind(this));=0A=
  }=0A=
});=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=
/* Portions of the Selector class are derived from Jack Slocum=E2=80=99s =
DomQuery,=0A=
 * part of YUI-Ext version 0.40, distributed under the terms of an =
MIT-style=0A=
 * license.  Please see http://www.yui-ext.com/ for more information. */=0A=
=0A=
var Selector =3D Class.create();=0A=
=0A=
Selector.prototype =3D {=0A=
  initialize: function(expression) {=0A=
    this.expression =3D expression.strip();=0A=
    this.compileMatcher();=0A=
  },=0A=
=0A=
  compileMatcher: function() {=0A=
    // Selectors with namespaced attributes can't use the XPath version=0A=
    if (Prototype.BrowserFeatures.XPath && =
!(/\[[\w-]*?:/).test(this.expression))=0A=
      return this.compileXPathMatcher();=0A=
=0A=
    var e =3D this.expression, ps =3D Selector.patterns, h =3D =
Selector.handlers,=0A=
        c =3D Selector.criteria, le, p, m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.matcher =3D Selector._cache[e]; return;=0A=
    }=0A=
    this.matcher =3D ["this.matcher =3D function(root) {",=0A=
                    "var r =3D root, h =3D Selector.handlers, c =3D =
false, n;"];=0A=
=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        p =3D ps[i];=0A=
        if (m =3D e.match(p)) {=0A=
          this.matcher.push(typeof c[i] =3D=3D 'function' ? c[i](m) :=0A=
    	      new Template(c[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.matcher.push("return h.unique(n);\n}");=0A=
    eval(this.matcher.join('\n'));=0A=
    Selector._cache[this.expression] =3D this.matcher;=0A=
  },=0A=
=0A=
  compileXPathMatcher: function() {=0A=
    var e =3D this.expression, ps =3D Selector.patterns,=0A=
        x =3D Selector.xpath, le,  m;=0A=
=0A=
    if (Selector._cache[e]) {=0A=
      this.xpath =3D Selector._cache[e]; return;=0A=
    }=0A=
=0A=
    this.matcher =3D ['.//*'];=0A=
    while (e && le !=3D e && (/\S/).test(e)) {=0A=
      le =3D e;=0A=
      for (var i in ps) {=0A=
        if (m =3D e.match(ps[i])) {=0A=
          this.matcher.push(typeof x[i] =3D=3D 'function' ? x[i](m) :=0A=
            new Template(x[i]).evaluate(m));=0A=
          e =3D e.replace(m[0], '');=0A=
          break;=0A=
        }=0A=
      }=0A=
    }=0A=
=0A=
    this.xpath =3D this.matcher.join('');=0A=
    Selector._cache[this.expression] =3D this.xpath;=0A=
  },=0A=
=0A=
  findElements: function(root) {=0A=
    root =3D root || document;=0A=
    if (this.xpath) return document._getElementsByXPath(this.xpath, =
root);=0A=
    return this.matcher(root);=0A=
  },=0A=
=0A=
  match: function(element) {=0A=
    return this.findElements(document).include(element);=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.expression;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return "#<Selector:" + this.expression.inspect() + ">";=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Selector, {=0A=
  _cache: {},=0A=
=0A=
  xpath: {=0A=
    descendant:   "//*",=0A=
    child:        "/*",=0A=
    adjacent:     "/following-sibling::*[1]",=0A=
    laterSibling: '/following-sibling::*',=0A=
    tagName:      function(m) {=0A=
      if (m[1] =3D=3D '*') return '';=0A=
      return "[local-name()=3D'" + m[1].toLowerCase() +=0A=
             "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A=
    },=0A=
    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A=
    id:           "[@id=3D'#{1}']",=0A=
    attrPresence: "[@#{1}]",=0A=
    attr: function(m) {=0A=
      m[3] =3D m[5] || m[6];=0A=
      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A=
    },=0A=
    pseudo: function(m) {=0A=
      var h =3D Selector.xpath.pseudos[m[1]];=0A=
      if (!h) return '';=0A=
      if (typeof h =3D=3D=3D 'function') return h(m);=0A=
      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A=
    },=0A=
    operators: {=0A=
      '=3D':  "[@#{1}=3D'#{3}']",=0A=
      '!=3D': "[@#{1}!=3D'#{3}']",=0A=
      '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A=
      '$=3D': "[substring(@#{1}, (string-length(@#{1}) - =
string-length('#{3}') + 1))=3D'#{3}']",=0A=
      '*=3D': "[contains(@#{1}, '#{3}')]",=0A=
      '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A=
      '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A=
    },=0A=
    pseudos: {=0A=
      'first-child': '[not(preceding-sibling::*)]',=0A=
      'last-child':  '[not(following-sibling::*)]',=0A=
      'only-child':  '[not(preceding-sibling::* or =
following-sibling::*)]',=0A=
      'empty':       "[count(*) =3D 0 and (count(text()) =3D 0 or =
translate(text(), ' \t\r\n', '') =3D '')]",=0A=
      'checked':     "[@checked]",=0A=
      'disabled':    "[@disabled]",=0A=
      'enabled':     "[not(@disabled)]",=0A=
      'not': function(m) {=0A=
        var e =3D m[6], p =3D Selector.patterns,=0A=
            x =3D Selector.xpath, le, m, v;=0A=
=0A=
        var exclusion =3D [];=0A=
        while (e && le !=3D e && (/\S/).test(e)) {=0A=
          le =3D e;=0A=
          for (var i in p) {=0A=
            if (m =3D e.match(p[i])) {=0A=
              v =3D typeof x[i] =3D=3D 'function' ? x[i](m) : new =
Template(x[i]).evaluate(m);=0A=
              exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A=
              e =3D e.replace(m[0], '');=0A=
              break;=0A=
            }=0A=
          }=0A=
        }=0A=
        return "[not(" + exclusion.join(" and ") + ")]";=0A=
      },=0A=
      'nth-child':      function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-last-child': function(m) {=0A=
        return =
Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A=
      },=0A=
      'nth-of-type':    function(m) {=0A=
        return Selector.xpath.pseudos.nth("position() ", m);=0A=
      },=0A=
      'nth-last-of-type': function(m) {=0A=
        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", =
m);=0A=
      },=0A=
      'first-of-type':  function(m) {=0A=
        m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A=
      },=0A=
      'last-of-type':   function(m) {=0A=
        m[6] =3D "1"; return =
Selector.xpath.pseudos['nth-last-of-type'](m);=0A=
      },=0A=
      'only-of-type':   function(m) {=0A=
        var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + =
p['last-of-type'](m);=0A=
      },=0A=
      nth: function(fragment, m) {=0A=
        var mm, formula =3D m[6], predicate;=0A=
        if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
        if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
        if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A=
          return '[' + fragment + "=3D " + mm[1] + ']';=0A=
        if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A=
          if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A=
          var a =3D mm[1] ? Number(mm[1]) : 1;=0A=
          var b =3D mm[2] ? Number(mm[2]) : 0;=0A=
          predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A=
          "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A=
          return new Template(predicate).evaluate({=0A=
            fragment: fragment, a: a, b: b });=0A=
        }=0A=
      }=0A=
    }=0A=
  },=0A=
=0A=
  criteria: {=0A=
    tagName:      'n =3D h.tagName(n, r, "#{1}", c);   c =3D false;',=0A=
    className:    'n =3D h.className(n, r, "#{1}", c); c =3D false;',=0A=
    id:           'n =3D h.id(n, r, "#{1}", c);        c =3D false;',=0A=
    attrPresence: 'n =3D h.attrPresence(n, r, "#{1}"); c =3D false;',=0A=
    attr: function(m) {=0A=
      m[3] =3D (m[5] || m[6]);=0A=
      return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    pseudo:       function(m) {=0A=
      if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A=
      return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c =
=3D false;').evaluate(m);=0A=
    },=0A=
    descendant:   'c =3D "descendant";',=0A=
    child:        'c =3D "child";',=0A=
    adjacent:     'c =3D "adjacent";',=0A=
    laterSibling: 'c =3D "laterSibling";'=0A=
  },=0A=
=0A=
  patterns: {=0A=
    // combinators must be listed first=0A=
    // (and descendant needs to be last combinator)=0A=
    laterSibling: /^\s*~\s*/,=0A=
    child:        /^\s*>\s*/,=0A=
    adjacent:     /^\s*\+\s*/,=0A=
    descendant:   /^\s/,=0A=
=0A=
    // selectors follow=0A=
    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,=0A=
    id:           /^#([\w\-\*]+)(\b|$)/,=0A=
    className:    /^\.([\w\-\*]+)(\b|$)/,=0A=
    pseudo:       =
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis=
)abled|not)(\((.*?)\))?(\b|$|\s|(?=3D:))/,=0A=
    attrPresence: /^\[([\w]+)\]/,=0A=
    attr:         =
/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\]]*?)\4|([^'"][^=
\]]*?)))?\]/=0A=
  },=0A=
=0A=
  handlers: {=0A=
    // UTILITY FUNCTIONS=0A=
    // joins two collections=0A=
    concat: function(a, b) {=0A=
      for (var i =3D 0, node; node =3D b[i]; i++)=0A=
        a.push(node);=0A=
      return a;=0A=
    },=0A=
=0A=
    // marks an array of nodes for counting=0A=
    mark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._counted =3D true;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    unmark: function(nodes) {=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        node._counted =3D undefined;=0A=
      return nodes;=0A=
    },=0A=
=0A=
    // mark each child node with its position (for nth calls)=0A=
    // "ofType" flag indicates whether we're indexing for nth-of-type=0A=
    // rather than nth-child=0A=
    index: function(parentNode, reverse, ofType) {=0A=
      parentNode._counted =3D true;=0A=
      if (reverse) {=0A=
        for (var nodes =3D parentNode.childNodes, i =3D nodes.length - =
1, j =3D 1; i >=3D 0; i--) {=0A=
          node =3D nodes[i];=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) =
node.nodeIndex =3D j++;=0A=
        }=0A=
      } else {=0A=
        for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node =
=3D nodes[i]; i++)=0A=
          if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) =
node.nodeIndex =3D j++;=0A=
      }=0A=
    },=0A=
=0A=
    // filters out duplicates and extends all nodes=0A=
    unique: function(nodes) {=0A=
      if (nodes.length =3D=3D 0) return nodes;=0A=
      var results =3D [], n;=0A=
      for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A=
        if (!(n =3D nodes[i])._counted) {=0A=
          n._counted =3D true;=0A=
          results.push(Element.extend(n));=0A=
        }=0A=
      return Selector.handlers.unmark(results);=0A=
    },=0A=
=0A=
    // COMBINATOR FUNCTIONS=0A=
    descendant: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, node.getElementsByTagName('*'));=0A=
      return results;=0A=
    },=0A=
=0A=
    child: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        for (var j =3D 0, children =3D [], child; child =3D =
node.childNodes[j]; j++)=0A=
          if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') =
results.push(child);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    adjacent: function(nodes) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        var next =3D this.nextElementSibling(node);=0A=
        if (next) results.push(next);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    laterSibling: function(nodes) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        h.concat(results, Element.nextSiblings(node));=0A=
      return results;=0A=
    },=0A=
=0A=
    nextElementSibling: function(node) {=0A=
      while (node =3D node.nextSibling)=0A=
	      if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    previousElementSibling: function(node) {=0A=
      while (node =3D node.previousSibling)=0A=
        if (node.nodeType =3D=3D 1) return node;=0A=
      return null;=0A=
    },=0A=
=0A=
    // TOKEN FUNCTIONS=0A=
    tagName: function(nodes, root, tagName, combinator) {=0A=
      tagName =3D tagName.toUpperCase();=0A=
      var results =3D [], h =3D Selector.handlers;=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          // fastlane for ordinary descendant combinators=0A=
          if (combinator =3D=3D "descendant") {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              h.concat(results, node.getElementsByTagName(tagName));=0A=
            return results;=0A=
          } else nodes =3D this[combinator](nodes);=0A=
          if (tagName =3D=3D "*") return nodes;=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.tagName.toUpperCase() =3D=3D tagName) =
results.push(node);=0A=
        return results;=0A=
      } else return root.getElementsByTagName(tagName);=0A=
    },=0A=
=0A=
    id: function(nodes, root, id, combinator) {=0A=
      var targetNode =3D $(id), h =3D Selector.handlers;=0A=
      if (!nodes && root =3D=3D document) return targetNode ? =
[targetNode] : [];=0A=
      if (nodes) {=0A=
        if (combinator) {=0A=
          if (combinator =3D=3D 'child') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (targetNode.parentNode =3D=3D node) return [targetNode];=0A=
          } else if (combinator =3D=3D 'descendant') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Element.descendantOf(targetNode, node)) return =
[targetNode];=0A=
          } else if (combinator =3D=3D 'adjacent') {=0A=
            for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
              if (Selector.handlers.previousElementSibling(targetNode) =
=3D=3D node)=0A=
                return [targetNode];=0A=
          } else nodes =3D h[combinator](nodes);=0A=
        }=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node =3D=3D targetNode) return [targetNode];=0A=
        return [];=0A=
      }=0A=
      return (targetNode && Element.descendantOf(targetNode, root)) ? =
[targetNode] : [];=0A=
    },=0A=
=0A=
    className: function(nodes, root, className, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      return Selector.handlers.byClassName(nodes, root, className);=0A=
    },=0A=
=0A=
    byClassName: function(nodes, root, className) {=0A=
      if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A=
      var needle =3D ' ' + className + ' ';=0A=
      for (var i =3D 0, results =3D [], node, nodeClassName; node =3D =
nodes[i]; i++) {=0A=
        nodeClassName =3D node.className;=0A=
        if (nodeClassName.length =3D=3D 0) continue;=0A=
        if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' =
').include(needle))=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    attrPresence: function(nodes, root, attr) {=0A=
      var results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
        if (Element.hasAttribute(node, attr)) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    attr: function(nodes, root, attr, value, operator) {=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      var handler =3D Selector.operators[operator], results =3D [];=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        var nodeValue =3D Element.readAttribute(node, attr);=0A=
        if (nodeValue =3D=3D=3D null) continue;=0A=
        if (handler(nodeValue, value)) results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    pseudo: function(nodes, name, value, root, combinator) {=0A=
      if (nodes && combinator) nodes =3D this[combinator](nodes);=0A=
      if (!nodes) nodes =3D root.getElementsByTagName("*");=0A=
      return Selector.pseudos[name](nodes, value, root);=0A=
    }=0A=
  },=0A=
=0A=
  pseudos: {=0A=
    'first-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.previousElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'last-child': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        if (Selector.handlers.nextElementSibling(node)) continue;=0A=
          results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
    'only-child': function(nodes, value, root) {=0A=
      var h =3D Selector.handlers;=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!h.previousElementSibling(node) && =
!h.nextElementSibling(node))=0A=
          results.push(node);=0A=
      return results;=0A=
    },=0A=
    'nth-child':        function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root);=0A=
    },=0A=
    'nth-last-child':   function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true);=0A=
    },=0A=
    'nth-of-type':      function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, false, true);=0A=
    },=0A=
    'nth-last-of-type': function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, formula, root, true, true);=0A=
    },=0A=
    'first-of-type':    function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, false, true);=0A=
    },=0A=
    'last-of-type':     function(nodes, formula, root) {=0A=
      return Selector.pseudos.nth(nodes, "1", root, true, true);=0A=
    },=0A=
    'only-of-type':     function(nodes, formula, root) {=0A=
      var p =3D Selector.pseudos;=0A=
      return p['last-of-type'](p['first-of-type'](nodes, formula, root), =
formula, root);=0A=
    },=0A=
=0A=
    // handles the an+b logic=0A=
    getIndices: function(a, b, total) {=0A=
      if (a =3D=3D 0) return b > 0 ? [b] : [];=0A=
      return $R(1, total).inject([], function(memo, i) {=0A=
        if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A=
        return memo;=0A=
      });=0A=
    },=0A=
=0A=
    // handles nth(-last)-child, nth(-last)-of-type, and =
(first|last)-of-type=0A=
    nth: function(nodes, formula, root, reverse, ofType) {=0A=
      if (nodes.length =3D=3D 0) return [];=0A=
      if (formula =3D=3D 'even') formula =3D '2n+0';=0A=
      if (formula =3D=3D 'odd')  formula =3D '2n+1';=0A=
      var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A=
      h.mark(nodes);=0A=
      for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A=
        if (!node.parentNode._counted) {=0A=
          h.index(node.parentNode, reverse, ofType);=0A=
          indexed.push(node.parentNode);=0A=
        }=0A=
      }=0A=
      if (formula.match(/^\d+$/)) { // just a number=0A=
        formula =3D Number(formula);=0A=
        for (var i =3D 0, node; node =3D nodes[i]; i++)=0A=
          if (node.nodeIndex =3D=3D formula) results.push(node);=0A=
      } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // =
an+b=0A=
        if (m[1] =3D=3D "-") m[1] =3D -1;=0A=
        var a =3D m[1] ? Number(m[1]) : 1;=0A=
        var b =3D m[2] ? Number(m[2]) : 0;=0A=
        var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A=
        for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; =
i++) {=0A=
          for (var j =3D 0; j < l; j++)=0A=
            if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A=
        }=0A=
      }=0A=
      h.unmark(nodes);=0A=
      h.unmark(indexed);=0A=
      return results;=0A=
    },=0A=
=0A=
    'empty': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A=
        // IE treats comments as element nodes=0A=
        if (node.tagName =3D=3D '!' || (node.firstChild && =
!node.innerHTML.match(/^\s*$/))) continue;=0A=
        results.push(node);=0A=
      }=0A=
      return results;=0A=
    },=0A=
=0A=
    'not': function(nodes, selector, root) {=0A=
      var h =3D Selector.handlers, selectorType, m;=0A=
      var exclusions =3D new Selector(selector).findElements(root);=0A=
      h.mark(exclusions);=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node._counted) results.push(node);=0A=
      h.unmark(exclusions);=0A=
      return results;=0A=
    },=0A=
=0A=
    'enabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (!node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'disabled': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.disabled) results.push(node);=0A=
      return results;=0A=
    },=0A=
=0A=
    'checked': function(nodes, value, root) {=0A=
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A=
        if (node.checked) results.push(node);=0A=
      return results;=0A=
    }=0A=
  },=0A=
=0A=
  operators: {=0A=
    '=3D':  function(nv, v) { return nv =3D=3D v; },=0A=
    '!=3D': function(nv, v) { return nv !=3D v; },=0A=
    '^=3D': function(nv, v) { return nv.startsWith(v); },=0A=
    '$=3D': function(nv, v) { return nv.endsWith(v); },=0A=
    '*=3D': function(nv, v) { return nv.include(v); },=0A=
    '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + =
' '); },=0A=
    '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + =
'-').include('-' + v.toUpperCase() + '-'); }=0A=
  },=0A=
=0A=
  matchElements: function(elements, expression) {=0A=
    var matches =3D new Selector(expression).findElements(), h =3D =
Selector.handlers;=0A=
    h.mark(matches);=0A=
    for (var i =3D 0, results =3D [], element; element =3D elements[i]; =
i++)=0A=
      if (element._counted) results.push(element);=0A=
    h.unmark(matches);=0A=
    return results;=0A=
  },=0A=
=0A=
  findElement: function(elements, expression, index) {=0A=
    if (typeof expression =3D=3D 'number') {=0A=
      index =3D expression; expression =3D false;=0A=
    }=0A=
    return Selector.matchElements(elements, expression || '*')[index || =
0];=0A=
  },=0A=
=0A=
  findChildElements: function(element, expressions) {=0A=
    var exprs =3D expressions.join(','), expressions =3D [];=0A=
    exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {=0A=
      expressions.push(m[1].strip());=0A=
    });=0A=
    var results =3D [], h =3D Selector.handlers;=0A=
    for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A=
      selector =3D new Selector(expressions[i].strip());=0A=
      h.concat(results, selector.findElements(element));=0A=
    }=0A=
    return (l > 1) ? h.unique(results) : results;=0A=
  }=0A=
});=0A=
=0A=
function $$() {=0A=
  return Selector.findChildElements(document, $A(arguments));=0A=
}=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    $(form).reset();=0A=
    return form;=0A=
  },=0A=
=0A=
  serializeElements: function(elements, getHash) {=0A=
    var data =3D elements.inject({}, function(result, element) {=0A=
      if (!element.disabled && element.name) {=0A=
        var key =3D element.name, value =3D $(element).getValue();=0A=
        if (value !=3D null) {=0A=
         	if (key in result) {=0A=
            if (result[key].constructor !=3D Array) 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 getHash ? data : Hash.toQueryString(data);=0A=
  }=0A=
};=0A=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form, getHash) {=0A=
    return Form.serializeElements(Form.getElements(form), getHash);=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    return $A($(form).getElementsByTagName('*')).inject([],=0A=
      function(elements, child) {=0A=
        if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A=
          elements.push(Element.extend(child));=0A=
        return elements;=0A=
      }=0A=
    );=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name) return $A(inputs).map(Element.extend);=0A=
=0A=
    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))=0A=
        continue;=0A=
      matchingInputs.push(Element.extend(input));=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('disable');=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    Form.getElements(form).invoke('enable');=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    return $(form).getElements().find(function(element) {=0A=
      return element.type !=3D 'hidden' && !element.disabled &&=0A=
        ['input', 'select', =
'textarea'].include(element.tagName.toLowerCase());=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    form =3D $(form);=0A=
    form.findFirstElement().activate();=0A=
    return form;=0A=
  },=0A=
=0A=
  request: function(form, options) {=0A=
    form =3D $(form), options =3D Object.clone(options || {});=0A=
=0A=
    var params =3D options.parameters;=0A=
    options.parameters =3D form.serialize(true);=0A=
=0A=
    if (params) {=0A=
      if (typeof params =3D=3D 'string') 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(form.readAttribute('action'), options);=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element =3D {=0A=
  focus: function(element) {=0A=
    $(element).focus();=0A=
    return element;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    $(element).select();=0A=
    return element;=0A=
  }=0A=
}=0A=
=0A=
Form.Element.Methods =3D {=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element.disabled && element.name) {=0A=
      var value =3D element.getValue();=0A=
      if (value !=3D undefined) {=0A=
        var pair =3D {};=0A=
        pair[element.name] =3D value;=0A=
        return Hash.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=
  clear: function(element) {=0A=
    $(element).value =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  present: function(element) {=0A=
    return $(element).value !=3D '';=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    try {=0A=
      element.focus();=0A=
      if (element.select && (element.tagName.toLowerCase() !=3D 'input' =
||=0A=
        !['button', 'reset', 'submit'].include(element.type)))=0A=
        element.select();=0A=
    } catch (e) {}=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.blur();=0A=
    element.disabled =3D true;=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D false;=0A=
    return element;=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Field =3D Form.Element;=0A=
var $F =3D Form.Element.Methods.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element.Serializers =3D {=0A=
  input: function(element) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return Form.Element.Serializers.inputSelector(element);=0A=
      default:=0A=
        return Form.Element.Serializers.textarea(element);=0A=
    }=0A=
  },=0A=
=0A=
  inputSelector: function(element) {=0A=
    return element.checked ? element.value : null;=0A=
  },=0A=
=0A=
  textarea: function(element) {=0A=
    return element.value;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    return this[element.type =3D=3D 'select-one' ?=0A=
      'selectOne' : 'selectMany'](element);=0A=
  },=0A=
=0A=
  selectOne: function(element) {=0A=
    var index =3D element.selectedIndex;=0A=
    return index >=3D 0 ? this.optionValue(element.options[index]) : =
null;=0A=
  },=0A=
=0A=
  selectMany: function(element) {=0A=
    var values, length =3D element.length;=0A=
    if (!length) return null;=0A=
=0A=
    for (var i =3D 0, values =3D []; i < length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected) values.push(this.optionValue(opt));=0A=
    }=0A=
    return values;=0A=
  },=0A=
=0A=
  optionValue: function(opt) {=0A=
    // extend element because hasAttribute may not be native=0A=
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.TimedObserver =3D function() {}=0A=
Abstract.TimedObserver.prototype =3D {=0A=
  initialize: function(element, frequency, callback) {=0A=
    this.frequency =3D frequency;=0A=
    this.element   =3D $(element);=0A=
    this.callback  =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    var changed =3D ('string' =3D=3D typeof this.lastValue && 'string' =
=3D=3D typeof value=0A=
      ? this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value));=0A=
    if (changed) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
Form.Element.Observer =3D Class.create();=0A=
Form.Element.Observer.prototype =3D Object.extend(new =
Abstract.TimedObserver(), {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create();=0A=
Form.Observer.prototype =3D Object.extend(new Abstract.TimedObserver(), {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D function() {}=0A=
Abstract.EventObserver.prototype =3D {=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.bind(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();=0A=
Form.Element.EventObserver.prototype =3D Object.extend(new =
Abstract.EventObserver(), {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create();=0A=
Form.EventObserver.prototype =3D Object.extend(new =
Abstract.EventObserver(), {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
if (!window.Event) {=0A=
  var Event =3D new Object();=0A=
}=0A=
=0A=
Object.extend(Event, {=0A=
  KEY_BACKSPACE: 8,=0A=
  KEY_TAB:       9,=0A=
  KEY_RETURN:   13,=0A=
  KEY_ESC:      27,=0A=
  KEY_LEFT:     37,=0A=
  KEY_UP:       38,=0A=
  KEY_RIGHT:    39,=0A=
  KEY_DOWN:     40,=0A=
  KEY_DELETE:   46,=0A=
  KEY_HOME:     36,=0A=
  KEY_END:      35,=0A=
  KEY_PAGEUP:   33,=0A=
  KEY_PAGEDOWN: 34,=0A=
=0A=
  element: function(event) {=0A=
    return $(event.target || event.srcElement);=0A=
  },=0A=
=0A=
  isLeftClick: function(event) {=0A=
    return (((event.which) && (event.which =3D=3D 1)) ||=0A=
            ((event.button) && (event.button =3D=3D 1)));=0A=
  },=0A=
=0A=
  pointerX: function(event) {=0A=
    return event.pageX || (event.clientX +=0A=
      (document.documentElement.scrollLeft || document.body.scrollLeft));=0A=
  },=0A=
=0A=
  pointerY: function(event) {=0A=
    return event.pageY || (event.clientY +=0A=
      (document.documentElement.scrollTop || document.body.scrollTop));=0A=
  },=0A=
=0A=
  stop: function(event) {=0A=
    if (event.preventDefault) {=0A=
      event.preventDefault();=0A=
      event.stopPropagation();=0A=
    } else {=0A=
      event.returnValue =3D false;=0A=
      event.cancelBubble =3D true;=0A=
    }=0A=
  },=0A=
=0A=
  // find the first node with the given tagName, starting from the=0A=
  // node the event was triggered on; traverses the DOM upwards=0A=
  findElement: function(event, tagName) {=0A=
    var element =3D Event.element(event);=0A=
    while (element.parentNode && (!element.tagName ||=0A=
        (element.tagName.toUpperCase() !=3D tagName.toUpperCase())))=0A=
      element =3D element.parentNode;=0A=
    return element;=0A=
  },=0A=
=0A=
  observers: false,=0A=
=0A=
  _observeAndCache: function(element, name, observer, useCapture) {=0A=
    if (!this.observers) this.observers =3D [];=0A=
    if (element.addEventListener) {=0A=
      this.observers.push([element, name, observer, useCapture]);=0A=
      element.addEventListener(name, observer, useCapture);=0A=
    } else if (element.attachEvent) {=0A=
      this.observers.push([element, name, observer, useCapture]);=0A=
      element.attachEvent('on' + name, observer);=0A=
    }=0A=
  },=0A=
=0A=
  unloadCache: function() {=0A=
    if (!Event.observers) return;=0A=
    for (var i =3D 0, length =3D Event.observers.length; i < length; =
i++) {=0A=
      Event.stopObserving.apply(this, Event.observers[i]);=0A=
      Event.observers[i][0] =3D null;=0A=
    }=0A=
    Event.observers =3D false;=0A=
  },=0A=
=0A=
  observe: function(element, name, observer, useCapture) {=0A=
    element =3D $(element);=0A=
    useCapture =3D useCapture || false;=0A=
=0A=
    if (name =3D=3D 'keypress' &&=0A=
      (Prototype.Browser.WebKit || element.attachEvent))=0A=
      name =3D 'keydown';=0A=
=0A=
    Event._observeAndCache(element, name, observer, useCapture);=0A=
  },=0A=
=0A=
  stopObserving: function(element, name, observer, useCapture) {=0A=
    element =3D $(element);=0A=
    useCapture =3D useCapture || false;=0A=
=0A=
    if (name =3D=3D 'keypress' &&=0A=
        (Prototype.Browser.WebKit || element.attachEvent))=0A=
      name =3D 'keydown';=0A=
=0A=
    if (element.removeEventListener) {=0A=
      element.removeEventListener(name, observer, useCapture);=0A=
    } else if (element.detachEvent) {=0A=
      try {=0A=
        element.detachEvent('on' + name, observer);=0A=
      } catch (e) {}=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
/* prevent memory leaks in IE */=0A=
if (Prototype.Browser.IE)=0A=
  Event.observe(window, 'unload', Event.unloadCache, false);=0A=
var Position =3D {=0A=
  // set to true if needed, warning: firefox performance problems=0A=
  // NOT neeeded for page scrolling, only if draggable contained in=0A=
  // scrollable elements=0A=
  includeScrollOffsets: false,=0A=
=0A=
  // must be called before calling withinIncludingScrolloffset, every =
time the=0A=
  // page is scrolled=0A=
  prepare: function() {=0A=
    this.deltaX =3D  window.pageXOffset=0A=
                || document.documentElement.scrollLeft=0A=
                || document.body.scrollLeft=0A=
                || 0;=0A=
    this.deltaY =3D  window.pageYOffset=0A=
                || document.documentElement.scrollTop=0A=
                || document.body.scrollTop=0A=
                || 0;=0A=
  },=0A=
=0A=
  realOffset: 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 [valueL, valueT];=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 [valueL, valueT];=0A=
  },=0A=
=0A=
  positionedOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
      if (element) {=0A=
        if(element.tagName=3D=3D'BODY') break;=0A=
        var p =3D Element.getStyle(element, 'position');=0A=
        if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A=
      }=0A=
    } while (element);=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  offsetParent: 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=
  // caches x/y coordinate pair to use with overlap=0A=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D this.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 this.realOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D this.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  // within must be called directly before=0A=
  overlap: function(mode, element) {=0A=
    if (!mode) return 0;=0A=
    if (mode =3D=3D 'vertical')=0A=
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A=
        element.offsetHeight;=0A=
    if (mode =3D=3D 'horizontal')=0A=
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A=
        element.offsetWidth;=0A=
  },=0A=
=0A=
  page: function(forElement) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
=0A=
      // Safari fix=0A=
      if (element.offsetParent =3D=3D document.body)=0A=
        if (Element.getStyle(element,'position')=3D=3D'absolute') break;=0A=
=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      if (!window.opera || element.tagName=3D=3D'BODY') {=0A=
        valueT -=3D element.scrollTop  || 0;=0A=
        valueL -=3D element.scrollLeft || 0;=0A=
      }=0A=
    } while (element =3D element.parentNode);=0A=
=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  clone: function(source, target) {=0A=
    var options =3D Object.extend({=0A=
      setLeft:    true,=0A=
      setTop:     true,=0A=
      setWidth:   true,=0A=
      setHeight:  true,=0A=
      offsetTop:  0,=0A=
      offsetLeft: 0=0A=
    }, arguments[2] || {})=0A=
=0A=
    // find page position of source=0A=
    source =3D $(source);=0A=
    var p =3D Position.page(source);=0A=
=0A=
    // find coordinate system to use=0A=
    target =3D $(target);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    // delta [0,0] will do fine with position: fixed elements,=0A=
    // position:absolute needs offsetParent deltas=0A=
    if (Element.getStyle(target,'position') =3D=3D 'absolute') {=0A=
      parent =3D Position.offsetParent(target);=0A=
      delta =3D Position.page(parent);=0A=
    }=0A=
=0A=
    // correct by body offsets (fixes Safari)=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    // set position=0A=
    if(options.setLeft)   target.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if(options.setTop)    target.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if(options.setWidth)  target.style.width =3D source.offsetWidth + =
'px';=0A=
    if(options.setHeight) target.style.height =3D source.offsetHeight + =
'px';=0A=
  },=0A=
=0A=
  absolutize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.style.position =3D=3D 'absolute') return;=0A=
    Position.prepare();=0A=
=0A=
    var offsets =3D Position.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=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.style.position =3D=3D 'relative') return;=0A=
    Position.prepare();=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=
  }=0A=
}=0A=
=0A=
// Safari returns margins on body which is incorrect if the child is =
absolutely=0A=
// positioned.  For performance reasons, redefine =
Position.cumulativeOffset for=0A=
// KHTML/WebKit only.=0A=
if (Prototype.Browser.WebKit) {=0A=
  Position.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 [valueL, valueT];=0A=
  }=0A=
}=0A=
=0A=
Element.addMethods();
------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/scriptaculous/src/scriptaculous.js

// script.aculo.us scriptaculous.js v1.7.1_beta3, Fri May 25 17:19:41 =
+0200 2007=0A=
=0A=
// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
// =0A=
// Permission is hereby granted, free of charge, to any person obtaining=0A=
// a copy of this software and associated documentation files (the=0A=
// "Software"), to deal in the Software without restriction, including=0A=
// without limitation the rights to use, copy, modify, merge, publish,=0A=
// distribute, sublicense, and/or sell copies of the Software, and to=0A=
// permit persons to whom the Software is furnished to do so, subject to=0A=
// the following conditions:=0A=
// =0A=
// The above copyright notice and this permission notice shall be=0A=
// included in all copies or substantial portions of the Software.=0A=
//=0A=
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,=0A=
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF=0A=
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND=0A=
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE=0A=
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION=0A=
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION=0A=
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.=0A=
//=0A=
// For details, see the script.aculo.us web site: http://script.aculo.us/=0A=
=0A=
var Scriptaculous =3D {=0A=
  Version: '1.7.1_beta3',=0A=
  require: function(libraryName) {=0A=
    // inserting via DOM fails in Safari 2.0, so brute force approach=0A=
    document.write('<script type=3D"text/javascript" =
src=3D"'+libraryName+'"></script>');=0A=
  },=0A=
  REQUIRED_PROTOTYPE: '1.5.1',=0A=
  load: function() {=0A=
    function convertVersionString(versionString){=0A=
      var r =3D versionString.split('.');=0A=
      return parseInt(r[0])*100000 + parseInt(r[1])*1000 + =
parseInt(r[2]);=0A=
    }=0A=
 =0A=
    if((typeof Prototype=3D=3D'undefined') || =0A=
       (typeof Element =3D=3D 'undefined') || =0A=
       (typeof Element.Methods=3D=3D'undefined') ||=0A=
       (convertVersionString(Prototype.Version) < =0A=
        convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))=0A=
       throw("script.aculo.us requires the Prototype JavaScript =
framework >=3D " +=0A=
        Scriptaculous.REQUIRED_PROTOTYPE);=0A=
    =0A=
    $A(document.getElementsByTagName("script")).findAll( function(s) {=0A=
      return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))=0A=
    }).each( function(s) {=0A=
      var path =3D s.src.replace(/scriptaculous\.js(\?.*)?$/,'');=0A=
      var includes =3D s.src.match(/\?.*load=3D([a-z,]*)/);=0A=
      (includes ? includes[1] : =
'builder,effects,dragdrop,controls,slider,sound').split(',').each(=0A=
       function(include) { Scriptaculous.require(path+include+'.js') });=0A=
    });=0A=
  }=0A=
}=0A=
=0A=
Scriptaculous.load();
------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/js/md4.js

/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD4 =
Message
 * Digest Algorithm, as defined in RFC 1320.
 * Version 2.1 Copyright (C) Jerrad Pierce, Paul Johnston 1999 - 2002.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

/*
 * Configurable variables. You may need to tweak these to be compatible =
with
 * the server-side, but the defaults work in most cases.
 */
var hexcase =3D 0;  /* hex output format. 0 - lowercase; 1 - uppercase   =
     */
var b64pad  =3D ""; /* base-64 pad character. "=3D" for strict RFC =
compliance   */
var chrsz   =3D 8;  /* bits per input character. 8 - ASCII; 16 - Unicode =
     */

/*
 * These are the functions you'll usually want to call
 */
function hex_md4(s){ return binl2hex(core_md4(str2binl(s), s.length * =
chrsz));}
function b64_md4(s){ return binl2b64(core_md4(str2binl(s), s.length * =
chrsz));}
function str_md4(s){ return binl2str(core_md4(str2binl(s), s.length * =
chrsz));}
function hex_hmac_md4(key, data) { return binl2hex(core_hmac_md4(key, =
data)); }
function b64_hmac_md4(key, data) { return binl2b64(core_hmac_md4(key, =
data)); }
function str_hmac_md4(key, data) { return binl2str(core_hmac_md4(key, =
data)); }

/*=20
 * Perform a simple self-test to see if the VM is working=20
 */
function md4_vm_test()
{
  return hex_md4("abc") =3D=3D "a448017aaf21d8525fc10ae87aa6729d";
}

/*
 * Calculate the MD4 of an array of little-endian words, and a bit =
length
 */
function core_md4(x, len)
{
  /* append padding */
  x[len >> 5] |=3D 0x80 << (len % 32);
  x[(((len + 64) >>> 9) << 4) + 14] =3D len;
 =20
  var a =3D  1732584193;
  var b =3D -271733879;
  var c =3D -1732584194;
  var d =3D  271733878;

  for(var i =3D 0; i < x.length; i +=3D 16)
  {
    var olda =3D a;
    var oldb =3D b;
    var oldc =3D c;
    var oldd =3D d;

    a =3D md4_ff(a, b, c, d, x[i+ 0], 3 );
    d =3D md4_ff(d, a, b, c, x[i+ 1], 7 );
    c =3D md4_ff(c, d, a, b, x[i+ 2], 11);
    b =3D md4_ff(b, c, d, a, x[i+ 3], 19);
    a =3D md4_ff(a, b, c, d, x[i+ 4], 3 );
    d =3D md4_ff(d, a, b, c, x[i+ 5], 7 );
    c =3D md4_ff(c, d, a, b, x[i+ 6], 11);
    b =3D md4_ff(b, c, d, a, x[i+ 7], 19);
    a =3D md4_ff(a, b, c, d, x[i+ 8], 3 );
    d =3D md4_ff(d, a, b, c, x[i+ 9], 7 );
    c =3D md4_ff(c, d, a, b, x[i+10], 11);
    b =3D md4_ff(b, c, d, a, x[i+11], 19);
    a =3D md4_ff(a, b, c, d, x[i+12], 3 );
    d =3D md4_ff(d, a, b, c, x[i+13], 7 );
    c =3D md4_ff(c, d, a, b, x[i+14], 11);
    b =3D md4_ff(b, c, d, a, x[i+15], 19);

    a =3D md4_gg(a, b, c, d, x[i+ 0], 3 );
    d =3D md4_gg(d, a, b, c, x[i+ 4], 5 );
    c =3D md4_gg(c, d, a, b, x[i+ 8], 9 );
    b =3D md4_gg(b, c, d, a, x[i+12], 13);
    a =3D md4_gg(a, b, c, d, x[i+ 1], 3 );
    d =3D md4_gg(d, a, b, c, x[i+ 5], 5 );
    c =3D md4_gg(c, d, a, b, x[i+ 9], 9 );
    b =3D md4_gg(b, c, d, a, x[i+13], 13);
    a =3D md4_gg(a, b, c, d, x[i+ 2], 3 );
    d =3D md4_gg(d, a, b, c, x[i+ 6], 5 );
    c =3D md4_gg(c, d, a, b, x[i+10], 9 );
    b =3D md4_gg(b, c, d, a, x[i+14], 13);
    a =3D md4_gg(a, b, c, d, x[i+ 3], 3 );
    d =3D md4_gg(d, a, b, c, x[i+ 7], 5 );
    c =3D md4_gg(c, d, a, b, x[i+11], 9 );
    b =3D md4_gg(b, c, d, a, x[i+15], 13);

    a =3D md4_hh(a, b, c, d, x[i+ 0], 3 );
    d =3D md4_hh(d, a, b, c, x[i+ 8], 9 );
    c =3D md4_hh(c, d, a, b, x[i+ 4], 11);
    b =3D md4_hh(b, c, d, a, x[i+12], 15);
    a =3D md4_hh(a, b, c, d, x[i+ 2], 3 );
    d =3D md4_hh(d, a, b, c, x[i+10], 9 );
    c =3D md4_hh(c, d, a, b, x[i+ 6], 11);
    b =3D md4_hh(b, c, d, a, x[i+14], 15);
    a =3D md4_hh(a, b, c, d, x[i+ 1], 3 );
    d =3D md4_hh(d, a, b, c, x[i+ 9], 9 );
    c =3D md4_hh(c, d, a, b, x[i+ 5], 11);
    b =3D md4_hh(b, c, d, a, x[i+13], 15);
    a =3D md4_hh(a, b, c, d, x[i+ 3], 3 );
    d =3D md4_hh(d, a, b, c, x[i+11], 9 );
    c =3D md4_hh(c, d, a, b, x[i+ 7], 11);
    b =3D md4_hh(b, c, d, a, x[i+15], 15);

    a =3D safe_add(a, olda);
    b =3D safe_add(b, oldb);
    c =3D safe_add(c, oldc);
    d =3D safe_add(d, oldd);

  }
  return Array(a, b, c, d);

}

/*
 * These functions implement the basic operation for each round of the
 * algorithm.
 */
function md4_cmn(q, a, b, x, s, t)
{
  return safe_add(rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
}
function md4_ff(a, b, c, d, x, s)
{
  return md4_cmn((b & c) | ((~b) & d), a, 0, x, s, 0);
}
function md4_gg(a, b, c, d, x, s)
{
  return md4_cmn((b & c) | (b & d) | (c & d), a, 0, x, s, 1518500249);
}
function md4_hh(a, b, c, d, x, s)
{
  return md4_cmn(b ^ c ^ d, a, 0, x, s, 1859775393);
}

/*
 * Calculate the HMAC-MD4, of a key and some data
 */
function core_hmac_md4(key, data)
{
  var bkey =3D str2binl(key);
  if(bkey.length > 16) bkey =3D core_md4(bkey, key.length * chrsz);

  var ipad =3D Array(16), opad =3D Array(16);
  for(var i =3D 0; i < 16; i++)=20
  {
    ipad[i] =3D bkey[i] ^ 0x36363636;
    opad[i] =3D bkey[i] ^ 0x5C5C5C5C;
  }

  var hash =3D core_md4(ipad.concat(str2binl(data)), 512 + data.length * =
chrsz);
  return core_md4(opad.concat(hash), 512 + 128);
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations =
internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
  var lsw =3D (x & 0xFFFF) + (y & 0xFFFF);
  var msw =3D (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
function rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Convert a string to an array of little-endian words
 * If chrsz is ASCII, characters >255 have their hi-byte silently =
ignored.
 */
function str2binl(str)
{
  var bin =3D Array();
  var mask =3D (1 << chrsz) - 1;
  for(var i =3D 0; i < str.length * chrsz; i +=3D chrsz)
    bin[i>>5] |=3D (str.charCodeAt(i / chrsz) & mask) << (i%32);
  return bin;
}

/*
 * Convert an array of little-endian words to a string
 */
function binl2str(bin)
{
  var str =3D "";
  var mask =3D (1 << chrsz) - 1;
  for(var i =3D 0; i < bin.length * 32; i +=3D chrsz)
    str +=3D String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
  return str;
}

/*
 * Convert an array of little-endian words to a hex string.
 */
function binl2hex(binarray)
{
  var hex_tab =3D hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str =3D "";
  for(var i =3D 0; i < binarray.length * 4; i++)
  {
    str +=3D hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  }
  return str;
}

/*
 * Convert an array of little-endian words to a base-64 string
 */
function binl2b64(binarray)
{
  var tab =3D =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var str =3D "";
  for(var i =3D 0; i < binarray.length * 4; i +=3D 3)
  {
    var triplet =3D (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << =
16)
                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
    for(var j =3D 0; j < 4; j++)
    {
      if(i * 8 + j * 6 > binarray.length * 32) str +=3D b64pad;
      else str +=3D tab.charAt((triplet >> 6*(3-j)) & 0x3F);
    }
  }
  return str;
}

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/js/md5.js

/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 =
Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

/*
 * Configurable variables. You may need to tweak these to be compatible =
with
 * the server-side, but the defaults work in most cases.
 */
var hexcase =3D 0;  /* hex output format. 0 - lowercase; 1 - uppercase   =
     */
var b64pad  =3D ""; /* base-64 pad character. "=3D" for strict RFC =
compliance   */
var chrsz   =3D 8;  /* bits per input character. 8 - ASCII; 16 - Unicode =
     */

/*
 * These are the functions you'll usually want to call
 * They take string arguments and return either hex or base-64 encoded =
strings
 */
function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * =
chrsz));}
function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * =
chrsz));}
function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * =
chrsz));}
function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, =
data)); }
function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, =
data)); }
function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, =
data)); }

/*
 * Perform a simple self-test to see if the VM is working
 */
function md5_vm_test()
{
  return hex_md5("abc") =3D=3D "900150983cd24fb0d6963f7d28e17f72";
}

/*
 * Calculate the MD5 of an array of little-endian words, and a bit =
length
 */
function core_md5(x, len)
{
  /* append padding */
  x[len >> 5] |=3D 0x80 << ((len) % 32);
  x[(((len + 64) >>> 9) << 4) + 14] =3D len;

  var a =3D  1732584193;
  var b =3D -271733879;
  var c =3D -1732584194;
  var d =3D  271733878;

  for(var i =3D 0; i < x.length; i +=3D 16)
  {
    var olda =3D a;
    var oldb =3D b;
    var oldc =3D c;
    var oldd =3D d;

    a =3D md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);
    d =3D md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);
    c =3D md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);
    b =3D md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);
    a =3D md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);
    d =3D md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);
    c =3D md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);
    b =3D md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);
    a =3D md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);
    d =3D md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);
    c =3D md5_ff(c, d, a, b, x[i+10], 17, -42063);
    b =3D md5_ff(b, c, d, a, x[i+11], 22, -1990404162);
    a =3D md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);
    d =3D md5_ff(d, a, b, c, x[i+13], 12, -40341101);
    c =3D md5_ff(c, d, a, b, x[i+14], 17, -1502002290);
    b =3D md5_ff(b, c, d, a, x[i+15], 22,  1236535329);

    a =3D md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);
    d =3D md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
    c =3D md5_gg(c, d, a, b, x[i+11], 14,  643717713);
    b =3D md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);
    a =3D md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);
    d =3D md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);
    c =3D md5_gg(c, d, a, b, x[i+15], 14, -660478335);
    b =3D md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);
    a =3D md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);
    d =3D md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);
    c =3D md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);
    b =3D md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);
    a =3D md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);
    d =3D md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);
    c =3D md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);
    b =3D md5_gg(b, c, d, a, x[i+12], 20, -1926607734);

    a =3D md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);
    d =3D md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);
    c =3D md5_hh(c, d, a, b, x[i+11], 16,  1839030562);
    b =3D md5_hh(b, c, d, a, x[i+14], 23, -35309556);
    a =3D md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
    d =3D md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);
    c =3D md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);
    b =3D md5_hh(b, c, d, a, x[i+10], 23, -1094730640);
    a =3D md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);
    d =3D md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);
    c =3D md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);
    b =3D md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);
    a =3D md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);
    d =3D md5_hh(d, a, b, c, x[i+12], 11, -421815835);
    c =3D md5_hh(c, d, a, b, x[i+15], 16,  530742520);
    b =3D md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);

    a =3D md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);
    d =3D md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);
    c =3D md5_ii(c, d, a, b, x[i+14], 15, -1416354905);
    b =3D md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);
    a =3D md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);
    d =3D md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);
    c =3D md5_ii(c, d, a, b, x[i+10], 15, -1051523);
    b =3D md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);
    a =3D md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);
    d =3D md5_ii(d, a, b, c, x[i+15], 10, -30611744);
    c =3D md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);
    b =3D md5_ii(b, c, d, a, x[i+13], 21,  1309151649);
    a =3D md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);
    d =3D md5_ii(d, a, b, c, x[i+11], 10, -1120210379);
    c =3D md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);
    b =3D md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);

    a =3D safe_add(a, olda);
    b =3D safe_add(b, oldb);
    c =3D safe_add(c, oldc);
    d =3D safe_add(d, oldd);
  }
  return Array(a, b, c, d);

}

/*
 * These functions implement the four basic operations the algorithm =
uses.
 */
function md5_cmn(q, a, b, x, s, t)
{
  return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), =
s),b);
}
function md5_ff(a, b, c, d, x, s, t)
{
  return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
}
function md5_gg(a, b, c, d, x, s, t)
{
  return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
}
function md5_hh(a, b, c, d, x, s, t)
{
  return md5_cmn(b ^ c ^ d, a, b, x, s, t);
}
function md5_ii(a, b, c, d, x, s, t)
{
  return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
}

/*
 * Calculate the HMAC-MD5, of a key and some data
 */
function core_hmac_md5(key, data)
{
  var bkey =3D str2binl(key);
  if(bkey.length > 16) bkey =3D core_md5(bkey, key.length * chrsz);

  var ipad =3D Array(16), opad =3D Array(16);
  for(var i =3D 0; i < 16; i++)
  {
    ipad[i] =3D bkey[i] ^ 0x36363636;
    opad[i] =3D bkey[i] ^ 0x5C5C5C5C;
  }

  var hash =3D core_md5(ipad.concat(str2binl(data)), 512 + data.length * =
chrsz);
  return core_md5(opad.concat(hash), 512 + 128);
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations =
internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
  var lsw =3D (x & 0xFFFF) + (y & 0xFFFF);
  var msw =3D (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
function bit_rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Convert a string to an array of little-endian words
 * If chrsz is ASCII, characters >255 have their hi-byte silently =
ignored.
 */
function str2binl(str)
{
  var bin =3D Array();
  var mask =3D (1 << chrsz) - 1;
  for(var i =3D 0; i < str.length * chrsz; i +=3D chrsz)
    bin[i>>5] |=3D (str.charCodeAt(i / chrsz) & mask) << (i%32);
  return bin;
}

/*
 * Convert an array of little-endian words to a string
 */
function binl2str(bin)
{
  var str =3D "";
  var mask =3D (1 << chrsz) - 1;
  for(var i =3D 0; i < bin.length * 32; i +=3D chrsz)
    str +=3D String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask);
  return str;
}

/*
 * Convert an array of little-endian words to a hex string.
 */
function binl2hex(binarray)
{
  var hex_tab =3D hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str =3D "";
  for(var i =3D 0; i < binarray.length * 4; i++)
  {
    str +=3D hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  }
  return str;
}

/*
 * Convert an array of little-endian words to a base-64 string
 */
function binl2b64(binarray)
{
  var tab =3D =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var str =3D "";
  for(var i =3D 0; i < binarray.length * 4; i +=3D 3)
  {
    var triplet =3D (((binarray[i   >> 2] >> 8 * ( i   %4)) & 0xFF) << =
16)
                | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 )
                |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF);
    for(var j =3D 0; j < 4; j++)
    {
      if(i * 8 + j * 6 > binarray.length * 32) str +=3D b64pad;
      else str +=3D tab.charAt((triplet >> 6*(3-j)) & 0x3F);
    }
  }
  return str;
}

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/js/datePicker.js

var datePickerDivID =3D "datepicker";=0A=
var iFrameDivID =3D "datepickeriframe";=0A=
=0A=
var dayArrayShort =3D new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', =
'Sa');=0A=
var dayArrayMed =3D new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', =
'Sat');=0A=
var dayArrayLong =3D new Array('Sunday', 'Monday', 'Tuesday', =
'Wednesday', 'Thursday', 'Friday', 'Saturday');=0A=
var monthArrayShort =3D new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', =
'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');=0A=
var monthArrayMed =3D new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', =
'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');=0A=
var monthArrayLong =3D new Array('January', 'February', 'March', =
'April', 'May', 'June', 'July', 'August', 'September', 'October', =
'November', 'December');=0A=
 =0A=
// these variables define the date formatting we're expecting and =
outputting.=0A=
// If you want to use a different format by default, change the =
defaultDateSeparator=0A=
// and defaultDateFormat variables either here or on your HTML page.=0A=
var defaultDateSeparator =3D "/";        // common values would be "/" =
or "."=0A=
var defaultDateFormat =3D "mdy"    // valid values are "mdy", "dmy", and =
"ymd"=0A=
var dateSeparator =3D defaultDateSeparator;=0A=
var dateFormat =3D defaultDateFormat;=0A=
=0A=
/**=0A=
This is the main function you'll call from the onClick event of a button.=0A=
Normally, you'll have something like this on your HTML page:=0A=
=0A=
Start Date: <input name=3D"StartDate">=0A=
<input type=3Dbutton value=3D"select" =
onclick=3D"displayDatePicker('StartDate');">=0A=
=0A=
That will cause the datepicker to be displayed beneath the StartDate =
field and=0A=
any date that is chosen will update the value of that field. If you'd =
rather have the=0A=
datepicker display beneath the button that was clicked, you can code the =
button=0A=
like this:=0A=
=0A=
<input type=3Dbutton value=3D"select" =
onclick=3D"displayDatePicker('StartDate', this);">=0A=
=0A=
So, pretty much, the first argument (dateFieldName) is a string =
representing the=0A=
name of the field that will be modified if the user picks a date, and =
the second=0A=
argument (displayBelowThisObject) is optional and represents an actual =
node=0A=
on the HTML document that the datepicker should be displayed below.=0A=
=0A=
In version 1.1 of this code, the dtFormat and dtSep variables were =
added, allowing=0A=
you to use a specific date format or date separator for a given call to =
this function.=0A=
Normally, you'll just want to set these defaults globally with the =
defaultDateSeparator=0A=
and defaultDateFormat variables, but it doesn't hurt anything to add =
them as optional=0A=
parameters here. An example of use is:=0A=
=0A=
<input type=3Dbutton value=3D"select" =
onclick=3D"displayDatePicker('StartDate', false, 'dmy', '.');">=0A=
=0A=
This would display the datepicker beneath the StartDate field (because =
the=0A=
displayBelowThisObject parameter was false), and update the StartDate =
field with=0A=
the chosen value of the datepicker using a date format of dd.mm.yyyy=0A=
*/=0A=
function displayDatePicker(dateFieldName, displayBelowThisObject, =
dtFormat, dtSep)=0A=
{=0A=
  var targetDateField =3D document.getElementsByName =
(dateFieldName).item(0);=0A=
 =0A=
  // if we weren't told what node to display the datepicker beneath, =
just display it=0A=
  // beneath the date field we're updating=0A=
  if (!displayBelowThisObject)=0A=
    displayBelowThisObject =3D targetDateField;=0A=
 =0A=
  // if a date separator character was given, update the dateSeparator =
variable=0A=
  if (dtSep)=0A=
    dateSeparator =3D dtSep;=0A=
  else=0A=
    dateSeparator =3D defaultDateSeparator;=0A=
 =0A=
  // if a date format was given, update the dateFormat variable=0A=
  if (dtFormat)=0A=
    dateFormat =3D dtFormat;=0A=
  else=0A=
    dateFormat =3D defaultDateFormat;=0A=
 =0A=
  var x =3D displayBelowThisObject.offsetLeft;=0A=
  var y =3D displayBelowThisObject.offsetTop + =
displayBelowThisObject.offsetHeight ;=0A=
 =0A=
  // deal with elements inside tables and such=0A=
  var parent =3D displayBelowThisObject;=0A=
  while (parent.offsetParent) {=0A=
    parent =3D parent.offsetParent;=0A=
    x +=3D parent.offsetLeft;=0A=
    y +=3D parent.offsetTop ;=0A=
  }=0A=
 =0A=
  drawDatePicker(targetDateField, x, y);=0A=
}=0A=
=0A=
=0A=
/**=0A=
Draw the datepicker object (which is just a table with calendar =
elements) at the=0A=
specified x and y coordinates, using the targetDateField object as the =
input tag=0A=
that will ultimately be populated with a date.=0A=
=0A=
This function will normally be called by the displayDatePicker function.=0A=
*/=0A=
function drawDatePicker(targetDateField, x, y)=0A=
{=0A=
  var dt =3D getFieldDate(targetDateField.value );=0A=
 =0A=
  // the datepicker table will be drawn inside of a <div> with an ID =
defined by the=0A=
  // global datePickerDivID variable. If such a div doesn't yet exist on =
the HTML=0A=
  // document we're working with, add one.=0A=
  if (!document.getElementById(datePickerDivID)) {=0A=
    // don't use innerHTML to update the body, because it can cause =
global variables=0A=
    // that are currently pointing to objects on the page to have bad =
references=0A=
    //document.body.innerHTML +=3D "<div id=3D'" + datePickerDivID + "' =
class=3D'dpDiv'></div>";=0A=
    var newNode =3D document.createElement("div");=0A=
    newNode.setAttribute("id", datePickerDivID);=0A=
    newNode.setAttribute("class", "dpDiv");=0A=
    newNode.setAttribute("style", "visibility: hidden;");=0A=
    document.body.appendChild(newNode);=0A=
  }=0A=
 =0A=
  // move the datepicker div to the proper x,y coordinate and toggle the =
visiblity=0A=
  var pickerDiv =3D document.getElementById(datePickerDivID);=0A=
  pickerDiv.style.position =3D "absolute";=0A=
  pickerDiv.style.left =3D x + "px";=0A=
  pickerDiv.style.top =3D y + "px";=0A=
  pickerDiv.style.visibility =3D (pickerDiv.style.visibility =3D=3D =
"visible" ? "hidden" : "visible");=0A=
  pickerDiv.style.display =3D (pickerDiv.style.display =3D=3D "block" ? =
"none" : "block");=0A=
  pickerDiv.style.zIndex =3D 10000;=0A=
 =0A=
  // draw the datepicker table=0A=
  refreshDatePicker(targetDateField.name, dt.getFullYear(), =
dt.getMonth(), dt.getDate());=0A=
}=0A=
=0A=
=0A=
/**=0A=
This is the function that actually draws the datepicker calendar.=0A=
*/=0A=
function refreshDatePicker(dateFieldName, year, month, day)=0A=
{=0A=
  // if no arguments are passed, use today's date; otherwise, month and =
year=0A=
  // are required (if a day is passed, it will be highlighted later)=0A=
  var thisDay =3D new Date();=0A=
 =0A=
  if ((month >=3D 0) && (year > 0)) {=0A=
    thisDay =3D new Date(year, month, 1);=0A=
  } else {=0A=
    day =3D thisDay.getDate();=0A=
    thisDay.setDate(1);=0A=
  }=0A=
 =0A=
  // the calendar will be drawn as a table=0A=
  // you can customize the table elements with a global CSS style sheet,=0A=
  // or by hardcoding style and formatting elements below=0A=
  var crlf =3D "\r\n";=0A=
  var TABLE =3D "<table cols=3D7 class=3D'dpTable'>" + crlf;=0A=
  var xTABLE =3D "</table>" + crlf;=0A=
  var TR =3D "<tr class=3D'dpTR'>";=0A=
  var TR_title =3D "<tr class=3D'dpTitleTR'>";=0A=
  var TR_days =3D "<tr class=3D'dpDayTR'>";=0A=
  var TR_todaybutton =3D "<tr class=3D'dpTodayButtonTR'>";=0A=
  var xTR =3D "</tr>" + crlf;=0A=
  var TD =3D "<td class=3D'dpTD' =
onMouseOut=3D'this.className=3D\"dpTD\";' onMouseOver=3D' =
this.className=3D\"dpTDHover\";' ";    // leave this tag open, because =
we'll be adding an onClick event=0A=
  var TD_title =3D "<td colspan=3D5 class=3D'dpTitleTD'>";=0A=
  var TD_buttons =3D "<td class=3D'dpButtonTD'>";=0A=
  var TD_todaybutton =3D "<td colspan=3D7 class=3D'dpTodayButtonTD'>";=0A=
  var TD_days =3D "<td class=3D'dpDayTD'>";=0A=
  var TD_selected =3D "<td class=3D'dpDayHighlightTD' =
onMouseOut=3D'this.className=3D\"dpDayHighlightTD\";' =
onMouseOver=3D'this.className=3D\"dpTDHover\";' ";    // leave this tag =
open, because we'll be adding an onClick event=0A=
  var xTD =3D "</td>" + crlf;=0A=
  var DIV_title =3D "<div class=3D'dpTitleText'>";=0A=
  var DIV_selected =3D "<div class=3D'dpDayHighlight'>";=0A=
  var xDIV =3D "</div>";=0A=
 =0A=
  // start generating the code for the calendar table=0A=
  var html =3D TABLE;=0A=
 =0A=
  // this is the title bar, which displays the month and the buttons to=0A=
  // go back to a previous month or forward to the next month=0A=
  html +=3D TR_title;=0A=
  html +=3D TD_buttons + getButtonCode(dateFieldName, thisDay, -1, =
"&lt;") + xTD;=0A=
  html +=3D TD_title + DIV_title + monthArrayLong[ thisDay.getMonth()] + =
" " + thisDay.getFullYear() + xDIV + xTD;=0A=
  html +=3D TD_buttons + getButtonCode(dateFieldName, thisDay, 1, =
"&gt;") + xTD;=0A=
  html +=3D xTR;=0A=
 =0A=
  // this is the row that indicates which day of the week we're on=0A=
  html +=3D TR_days;=0A=
  for(i =3D 0; i < dayArrayShort.length; i++)=0A=
    html +=3D TD_days + dayArrayShort[i] + xTD;=0A=
  html +=3D xTR;=0A=
 =0A=
  // now we'll start populating the table with days of the month=0A=
  html +=3D TR;=0A=
 =0A=
  // first, the leading blanks=0A=
  for (i =3D 0; i < thisDay.getDay(); i++)=0A=
    html +=3D TD + "&nbsp;" + xTD;=0A=
 =0A=
  // now, the days of the month=0A=
  do {=0A=
    dayNum =3D thisDay.getDate();=0A=
    TD_onclick =3D " onclick=3D\"updateDateField('" + dateFieldName + =
"', '" + getDateString(thisDay) + "');\">";=0A=
    =0A=
    if (dayNum =3D=3D day)=0A=
      html +=3D TD_selected + TD_onclick + DIV_selected + dayNum + xDIV =
+ xTD;=0A=
    else=0A=
      html +=3D TD + TD_onclick + dayNum + xTD;=0A=
    =0A=
    // if this is a Saturday, start a new row=0A=
    if (thisDay.getDay() =3D=3D 6)=0A=
      html +=3D xTR + TR;=0A=
    =0A=
    // increment the day=0A=
    thisDay.setDate(thisDay.getDate() + 1);=0A=
  } while (thisDay.getDate() > 1)=0A=
 =0A=
  // fill in any trailing blanks=0A=
  if (thisDay.getDay() > 0) {=0A=
    for (i =3D 6; i > thisDay.getDay(); i--)=0A=
      html +=3D TD + "&nbsp;" + xTD;=0A=
  }=0A=
  html +=3D xTR;=0A=
 =0A=
  // add a button to allow the user to easily return to today, or close =
the calendar=0A=
  var today =3D new Date();=0A=
  var todayString =3D "Today is " + dayArrayMed[today.getDay()] + ", " + =
monthArrayMed[ today.getMonth()] + " " + today.getDate();=0A=
  html +=3D TR_todaybutton + TD_todaybutton;=0A=
  html +=3D "<button class=3D'dpTodayButton' =
onClick=3D'refreshDatePicker(\"" + dateFieldName + "\");'>This =
Month</button> ";=0A=
  html +=3D "<button class=3D'dpTodayButton' =
onClick=3D'updateDateField(\"" + dateFieldName + "\");'>Close</button>";=0A=
  html +=3D xTD + xTR;=0A=
 =0A=
  // and finally, close the table=0A=
  html +=3D xTABLE;=0A=
 =0A=
  document.getElementById(datePickerDivID).innerHTML =3D html;=0A=
  // add an "iFrame shim" to allow the datepicker to display above =
selection lists=0A=
  adjustiFrame();=0A=
}=0A=
=0A=
=0A=
/**=0A=
Convenience function for writing the code for the buttons that bring us =
back or forward=0A=
a month.=0A=
*/=0A=
function getButtonCode(dateFieldName, dateVal, adjust, label)=0A=
{=0A=
  var newMonth =3D (dateVal.getMonth () + adjust) % 12;=0A=
  var newYear =3D dateVal.getFullYear() + parseInt((dateVal.getMonth() + =
adjust) / 12);=0A=
  if (newMonth < 0) {=0A=
    newMonth +=3D 12;=0A=
    newYear +=3D -1;=0A=
  }=0A=
 =0A=
  return "<button class=3D'dpButton' onClick=3D'refreshDatePicker(\"" + =
dateFieldName + "\", " + newYear + ", " + newMonth + ");'>" + label + =
"</button>";=0A=
}=0A=
=0A=
=0A=
/**=0A=
Convert a JavaScript Date object to a string, based on the dateFormat =
and dateSeparator=0A=
variables at the beginning of this script library.=0A=
*/=0A=
function getDateString(dateVal)=0A=
{=0A=
  var dayString =3D "00" + dateVal.getDate();=0A=
  var monthString =3D "00" + (dateVal.getMonth()+1);=0A=
  dayString =3D dayString.substring(dayString.length - 2);=0A=
  monthString =3D monthString.substring(monthString.length - 2);=0A=
 =0A=
  switch (dateFormat) {=0A=
    case "dmy" :=0A=
      return dayString + dateSeparator + monthString + dateSeparator + =
dateVal.getFullYear();=0A=
    case "ymd" :=0A=
      return dateVal.getFullYear() + dateSeparator + monthString + =
dateSeparator + dayString;=0A=
    case "mdy" :=0A=
    default :=0A=
      return monthString + dateSeparator + dayString + dateSeparator + =
dateVal.getFullYear();=0A=
  }=0A=
}=0A=
=0A=
=0A=
/**=0A=
Convert a string to a JavaScript Date object.=0A=
*/=0A=
function getFieldDate(dateString)=0A=
{=0A=
  var dateVal;=0A=
  var dArray;=0A=
  var d, m, y;=0A=
 =0A=
  try {=0A=
    dArray =3D splitDateString(dateString);=0A=
    if (dArray) {=0A=
      switch (dateFormat) {=0A=
        case "dmy" :=0A=
          d =3D parseInt(dArray[0], 10);=0A=
          m =3D parseInt(dArray[1], 10) - 1;=0A=
          y =3D parseInt(dArray[2], 10);=0A=
          break;=0A=
        case "ymd" :=0A=
          d =3D parseInt(dArray[2], 10);=0A=
          m =3D parseInt(dArray[1], 10) - 1;=0A=
          y =3D parseInt(dArray[0], 10);=0A=
          break;=0A=
        case "mdy" :=0A=
        default :=0A=
          d =3D parseInt(dArray[1], 10);=0A=
          m =3D parseInt(dArray[0], 10) - 1;=0A=
          y =3D parseInt(dArray[2], 10);=0A=
          break;=0A=
      }=0A=
      dateVal =3D new Date(y, m, d);=0A=
    } else if (dateString) {=0A=
      dateVal =3D new Date(dateString);=0A=
    } else {=0A=
      dateVal =3D new Date();=0A=
    }=0A=
  } catch(e) {=0A=
    dateVal =3D new Date();=0A=
  }=0A=
 =0A=
  return dateVal;=0A=
}=0A=
=0A=
=0A=
/**=0A=
Try to split a date string into an array of elements, using common date =
separators.=0A=
If the date is split, an array is returned; otherwise, we just return =
false.=0A=
*/=0A=
function splitDateString(dateString)=0A=
{=0A=
  var dArray;=0A=
  if (dateString.indexOf("/") >=3D 0)=0A=
    dArray =3D dateString.split("/");=0A=
  else if (dateString.indexOf(".") >=3D 0)=0A=
    dArray =3D dateString.split(".");=0A=
  else if (dateString.indexOf("-") >=3D 0)=0A=
    dArray =3D dateString.split("-");=0A=
  else if (dateString.indexOf("\\") >=3D 0)=0A=
    dArray =3D dateString.split("\\");=0A=
  else=0A=
    dArray =3D false;=0A=
 =0A=
  return dArray;=0A=
}=0A=
=0A=
/**=0A=
Update the field with the given dateFieldName with the dateString that =
has been passed,=0A=
and hide the datepicker. If no dateString is passed, just close the =
datepicker without=0A=
changing the field value.=0A=
=0A=
Also, if the page developer has defined a function called =
datePickerClosed anywhere on=0A=
the page or in an imported library, we will attempt to run that function =
with the updated=0A=
field as a parameter. This can be used for such things as date =
validation, setting default=0A=
values for related fields, etc. For example, you might have a function =
like this to validate=0A=
a start date field:=0A=
=0A=
function datePickerClosed(dateField)=0A=
{=0A=
  var dateObj =3D getFieldDate(dateField.value);=0A=
  var today =3D new Date();=0A=
  today =3D new Date(today.getFullYear(), today.getMonth(), =
today.getDate());=0A=
 =0A=
  if (dateField.name =3D=3D "StartDate") {=0A=
    if (dateObj < today) {=0A=
      // if the date is before today, alert the user and display the =
datepicker again=0A=
      alert("Please enter a date that is today or later");=0A=
      dateField.value =3D "";=0A=
      document.getElementById(datePickerDivID).style.visibility =3D =
"visible";=0A=
      adjustiFrame();=0A=
    } else {=0A=
      // if the date is okay, set the EndDate field to 7 days after the =
StartDate=0A=
      dateObj.setTime(dateObj.getTime() + (7 * 24 * 60 * 60 * 1000));=0A=
      var endDateField =3D document.getElementsByName =
("EndDate").item(0);=0A=
      endDateField.value =3D getDateString(dateObj);=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
*/=0A=
function updateDateField(dateFieldName, dateString)=0A=
{=0A=
  var targetDateField =3D document.getElementsByName =
(dateFieldName).item(0);=0A=
  if (dateString)=0A=
    targetDateField.value =3D dateString;=0A=
 =0A=
  var pickerDiv =3D document.getElementById(datePickerDivID);=0A=
  pickerDiv.style.visibility =3D "hidden";=0A=
  pickerDiv.style.display =3D "none";=0A=
 =0A=
  adjustiFrame();=0A=
  targetDateField.focus();=0A=
 =0A=
  // after the datepicker has closed, optionally run a user-defined =
function called=0A=
  // datePickerClosed, passing the field that was just updated as a =
parameter=0A=
  // (note that this will only run if the user actually selected a date =
from the datepicker)=0A=
  if ((dateString) && (typeof(datePickerClosed) =3D=3D "function"))=0A=
    datePickerClosed(targetDateField);=0A=
}=0A=
=0A=
=0A=
/**=0A=
Use an "iFrame shim" to deal with problems where the datepicker shows up =
behind=0A=
selection list elements, if they're below the datepicker. The problem =
and solution are=0A=
described at:=0A=
=0A=
http://dotnetjunkies.com/WebLog/jking/archive/2003/07/21/488.aspx=0A=
http://dotnetjunkies.com/WebLog/jking/archive/2003/10/30/2975.aspx=0A=
*/=0A=
function adjustiFrame(pickerDiv, iFrameDiv)=0A=
{=0A=
  // we know that Opera doesn't like something about this, so if we=0A=
  // think we're using Opera, don't even try=0A=
  var is_opera =3D (navigator.userAgent.toLowerCase().indexOf("opera") =
!=3D -1);=0A=
  if (is_opera)=0A=
    return;=0A=
  =0A=
  // put a try/catch block around the whole thing, just in case=0A=
  try {=0A=
    if (!document.getElementById(iFrameDivID)) {=0A=
      // don't use innerHTML to update the body, because it can cause =
global variables=0A=
      // that are currently pointing to objects on the page to have bad =
references=0A=
      //document.body.innerHTML +=3D "<iframe id=3D'" + iFrameDivID + "' =
src=3D'javascript:false;' scrolling=3D'no' frameborder=3D'0'>";=0A=
      var newNode =3D document.createElement("iFrame");=0A=
      newNode.setAttribute("id", iFrameDivID);=0A=
      newNode.setAttribute("src", "javascript:false;");=0A=
      newNode.setAttribute("scrolling", "no");=0A=
      newNode.setAttribute ("frameborder", "0");=0A=
      document.body.appendChild(newNode);=0A=
    }=0A=
    =0A=
    if (!pickerDiv)=0A=
      pickerDiv =3D document.getElementById(datePickerDivID);=0A=
    if (!iFrameDiv)=0A=
      iFrameDiv =3D document.getElementById(iFrameDivID);=0A=
    =0A=
    try {=0A=
      iFrameDiv.style.position =3D "absolute";=0A=
      iFrameDiv.style.width =3D pickerDiv.offsetWidth;=0A=
      iFrameDiv.style.height =3D pickerDiv.offsetHeight ;=0A=
      iFrameDiv.style.top =3D pickerDiv.style.top;=0A=
      iFrameDiv.style.left =3D pickerDiv.style.left;=0A=
      iFrameDiv.style.zIndex =3D pickerDiv.style.zIndex - 1;=0A=
      iFrameDiv.style.visibility =3D pickerDiv.style.visibility ;=0A=
      iFrameDiv.style.display =3D pickerDiv.style.display;=0A=
    } catch(e) {=0A=
    }=0A=
 =0A=
  } catch (ee) {=0A=
  }=0A=
 =0A=
}
------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/js/sha1.js

/*
 * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as =
defined
 * in FIPS PUB 180-1
 * Version 2.1a Copyright Paul Johnston 2000 - 2002.
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for details.
 */

/*
 * Configurable variables. You may need to tweak these to be compatible =
with
 * the server-side, but the defaults work in most cases.
 */
var hexcase =3D 0;  /* hex output format. 0 - lowercase; 1 - uppercase   =
     */
var b64pad  =3D ""; /* base-64 pad character. "=3D" for strict RFC =
compliance   */
var chrsz   =3D 8;  /* bits per input character. 8 - ASCII; 16 - Unicode =
     */

/*
 * These are the functions you'll usually want to call
 * They take string arguments and return either hex or base-64 encoded =
strings
 */
function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * =
chrsz));}
function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * =
chrsz));}
function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * =
chrsz));}
function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, =
data));}
function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, =
data));}
function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, =
data));}

/*
 * Perform a simple self-test to see if the VM is working
 */
function sha1_vm_test()
{
  return hex_sha1("abc") =3D=3D =
"a9993e364706816aba3e25717850c26c9cd0d89d";
}

/*
 * Calculate the SHA-1 of an array of big-endian words, and a bit length
 */
function core_sha1(x, len)
{
  /* append padding */
  x[len >> 5] |=3D 0x80 << (24 - len % 32);
  x[((len + 64 >> 9) << 4) + 15] =3D len;

  var w =3D Array(80);
  var a =3D  1732584193;
  var b =3D -271733879;
  var c =3D -1732584194;
  var d =3D  271733878;
  var e =3D -1009589776;

  for(var i =3D 0; i < x.length; i +=3D 16)
  {
    var olda =3D a;
    var oldb =3D b;
    var oldc =3D c;
    var oldd =3D d;
    var olde =3D e;

    for(var j =3D 0; j < 80; j++)
    {
      if(j < 16) w[j] =3D x[i + j];
      else w[j] =3D rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
      var t =3D safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
                       safe_add(safe_add(e, w[j]), sha1_kt(j)));
      e =3D d;
      d =3D c;
      c =3D rol(b, 30);
      b =3D a;
      a =3D t;
    }

    a =3D safe_add(a, olda);
    b =3D safe_add(b, oldb);
    c =3D safe_add(c, oldc);
    d =3D safe_add(d, oldd);
    e =3D safe_add(e, olde);
  }
  return Array(a, b, c, d, e);

}

/*
 * Perform the appropriate triplet combination function for the current
 * iteration
 */
function sha1_ft(t, b, c, d)
{
  if(t < 20) return (b & c) | ((~b) & d);
  if(t < 40) return b ^ c ^ d;
  if(t < 60) return (b & c) | (b & d) | (c & d);
  return b ^ c ^ d;
}

/*
 * Determine the appropriate additive constant for the current iteration
 */
function sha1_kt(t)
{
  return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
         (t < 60) ? -1894007588 : -899497514;
}

/*
 * Calculate the HMAC-SHA1 of a key and some data
 */
function core_hmac_sha1(key, data)
{
  var bkey =3D str2binb(key);
  if(bkey.length > 16) bkey =3D core_sha1(bkey, key.length * chrsz);

  var ipad =3D Array(16), opad =3D Array(16);
  for(var i =3D 0; i < 16; i++)
  {
    ipad[i] =3D bkey[i] ^ 0x36363636;
    opad[i] =3D bkey[i] ^ 0x5C5C5C5C;
  }

  var hash =3D core_sha1(ipad.concat(str2binb(data)), 512 + data.length =
* chrsz);
  return core_sha1(opad.concat(hash), 512 + 160);
}

/*
 * Add integers, wrapping at 2^32. This uses 16-bit operations =
internally
 * to work around bugs in some JS interpreters.
 */
function safe_add(x, y)
{
  var lsw =3D (x & 0xFFFF) + (y & 0xFFFF);
  var msw =3D (x >> 16) + (y >> 16) + (lsw >> 16);
  return (msw << 16) | (lsw & 0xFFFF);
}

/*
 * Bitwise rotate a 32-bit number to the left.
 */
function rol(num, cnt)
{
  return (num << cnt) | (num >>> (32 - cnt));
}

/*
 * Convert an 8-bit or 16-bit string to an array of big-endian words
 * In 8-bit function, characters >255 have their hi-byte silently =
ignored.
 */
function str2binb(str)
{
  var bin =3D Array();
  var mask =3D (1 << chrsz) - 1;
  for(var i =3D 0; i < str.length * chrsz; i +=3D chrsz)
    bin[i>>5] |=3D (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - =
i%32);
  return bin;
}

/*
 * Convert an array of big-endian words to a string
 */
function binb2str(bin)
{
  var str =3D "";
  var mask =3D (1 << chrsz) - 1;
  for(var i =3D 0; i < bin.length * 32; i +=3D chrsz)
    str +=3D String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & =
mask);
  return str;
}

/*
 * Convert an array of big-endian words to a hex string.
 */
function binb2hex(binarray)
{
  var hex_tab =3D hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str =3D "";
  for(var i =3D 0; i < binarray.length * 4; i++)
  {
    str +=3D hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8  )) & 0xF);
  }
  return str;
}

/*
 * Convert an array of big-endian words to a base-64 string
 */
function binb2b64(binarray)
{
  var tab =3D =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  var str =3D "";
  for(var i =3D 0; i < binarray.length * 4; i +=3D 3)
  {
    var triplet =3D (((binarray[i   >> 2] >> 8 * (3 -  i   %4)) & 0xFF) =
<< 16)
                | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << =
8 )
                |  ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
    for(var j =3D 0; j < 4; j++)
    {
      if(i * 8 + j * 6 > binarray.length * 32) str +=3D b64pad;
      else str +=3D tab.charAt((triplet >> 6*(3-j)) & 0x3F);
    }
  }
  return str;
}

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-php
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/js/ajax.php

=0A=
function makeRequest(url, targetDiv) {=0A=
	var httpRequest;=0A=
	=0A=
	if (window.XMLHttpRequest) { // Mozilla, Safari, ...=0A=
		httpRequest =3D new XMLHttpRequest();=0A=
		if (httpRequest.overrideMimeType) {=0A=
			httpRequest.overrideMimeType('text/xml');=0A=
			// See note below about this line=0A=
		}=0A=
	} =0A=
	else if (window.ActiveXObject) { // IE=0A=
		try {=0A=
			httpRequest =3D new ActiveXObject("Msxml2.XMLHTTP");=0A=
		} =0A=
		catch (e) {=0A=
			try {=0A=
				httpRequest =3D new ActiveXObject("Microsoft.XMLHTTP");=0A=
			} =0A=
			catch (e) {}=0A=
		}=0A=
	}=0A=
=0A=
	if (!httpRequest) {=0A=
		alert('Giving up :( Cannot create an XMLHTTP instance');=0A=
		return false;=0A=
	}=0A=
	httpRequest.onreadystatechange =3D function() { =0A=
		if(targetDiv =3D=3D "undefined" || targetDiv =3D=3D null)=0A=
			alertContents(httpRequest); =0A=
		else {=0A=
			assignContents(httpRequest, targetDiv);=0A=
		}=0A=
	};=0A=
	httpRequest.open('GET', url, true);=0A=
	httpRequest.send('');=0A=
}=0A=
=0A=
function alertContents(httpRequest) {=0A=
	if (httpRequest.readyState =3D=3D 4) {=0A=
		if (httpRequest.status =3D=3D 200) {=0A=
			doAjaxAlert(httpRequest.responseText);=0A=
		} else {=0A=
			alert("There was a problem with the request.");=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function restoreOpac() {=0A=
	$('container').style.opacity =3D "1";=0A=
	$('footer').style.opacity =3D "1";=0A=
}=0A=
=0A=
function assignContents(httpRequest, targetDiv) {=0A=
	if (httpRequest.readyState =3D=3D 4) {=0A=
		var scroll =3D getScrollXY();=0A=
		=0A=
		// elem =3D document.getElementById(targetDiv);=0A=
		=0A=
		if (httpRequest.status =3D=3D 200) {=0A=
			element =3D Builder.node('div',{classname:'ajax_target', =
id:targetDiv});=0A=
			element.innerHTML =3D httpRequest.responseText;=0A=
			=0A=
			WIDTH =3D 550;=0A=
			element.style.width =3D WIDTH;=0A=
			element.style.position =3D "absolute";=0A=
			element.style.top =3D (scroll[1] + 50);=0A=
			element.style.left =3D (document.body.clientWidth / 2) - (WIDTH / 2);=0A=
			element.style.display =3D "none";=0A=
			=0A=
			new Draggable(element);=0A=
			$('ajaxTargets').appendChild(element);=0A=
			Effect.Appear(targetDiv,{duration:.3});=0A=
		} else {=0A=
			elem.innerHTML =3D "There was a problem with the request.";=0A=
		}=0A=
	}=0A=
}=0A=
=0A=
function doAjaxAlert(contents) {=0A=
	makeRequest('http://www.athensexchange.com/ajaxAlert/?ajax&contents=3D' =
+ contents, 'alertDiv');=0A=
	Effect.Fade('semi_transparent',{duration:.3});=0A=
}=0A=
=0A=
function getScrollXY() {=0A=
  var scrOfX =3D 0, scrOfY =3D 0;=0A=
  if( typeof( window.pageYOffset ) =3D=3D 'number' ) {=0A=
    //Netscape compliant=0A=
    scrOfY =3D window.pageYOffset;=0A=
    scrOfX =3D window.pageXOffset;=0A=
  } else if( document.body && ( document.body.scrollLeft || =
document.body.scrollTop ) ) {=0A=
    //DOM compliant=0A=
    scrOfY =3D document.body.scrollTop;=0A=
    scrOfX =3D document.body.scrollLeft;=0A=
  } else if( document.documentElement && ( =
document.documentElement.scrollLeft || =
document.documentElement.scrollTop ) ) {=0A=
    //IE6 standards compliant mode=0A=
    scrOfY =3D document.documentElement.scrollTop;=0A=
    scrOfX =3D document.documentElement.scrollLeft;=0A=
  }=0A=
  return [ scrOfX, scrOfY ];=0A=
}=0A=

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/js/lightbox.js

// =
-------------------------------------------------------------------------=
----------=0A=
//=0A=
//	Lightbox v2.03.3=0A=
//	by Lokesh Dhakar - http://www.huddletogether.com=0A=
//	5/21/06=0A=
//=0A=
//	For more information on this script, visit:=0A=
//	http://huddletogether.com/projects/lightbox2/=0A=
//=0A=
//	Licensed under the Creative Commons Attribution 2.5 License - =
http://creativecommons.org/licenses/by/2.5/=0A=
//	=0A=
//	Credit also due to those who have helped, inspired, and made their =
code available to the public.=0A=
//	Including: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), =
Thomas Fuchs(mir.aculo.us), and others.=0A=
//=0A=
//=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
/*=0A=
=0A=
	Table of Contents=0A=
	-----------------=0A=
	Configuration=0A=
	Global Variables=0A=
=0A=
	Extending Built-in Objects	=0A=
	- Object.extend(Element)=0A=
	- Array.prototype.removeDuplicates()=0A=
	- Array.prototype.empty()=0A=
=0A=
	Lightbox Class Declaration=0A=
	- initialize()=0A=
	- updateImageList()=0A=
	- start()=0A=
	- changeImage()=0A=
	- resizeImageContainer()=0A=
	- showImage()=0A=
	- updateDetails()=0A=
	- updateNav()=0A=
	- enableKeyboardNav()=0A=
	- disableKeyboardNav()=0A=
	- keyboardAction()=0A=
	- preloadNeighborImages()=0A=
	- end()=0A=
	=0A=
	Miscellaneous Functions=0A=
	- getPageScroll()=0A=
	- getPageSize()=0A=
	- getKey()=0A=
	- listenKey()=0A=
	- showSelectBoxes()=0A=
	- hideSelectBoxes()=0A=
	- showFlash()=0A=
	- hideFlash()=0A=
	- pause()=0A=
	- initLightbox()=0A=
	=0A=
	Function Calls=0A=
	- addLoadEvent(initLightbox)=0A=
	=0A=
*/=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
//=0A=
//	Configuration=0A=
//=0A=
var fileLoadingImage =3D "img/loading.gif";		=0A=
var fileBottomNavCloseImage =3D "img/closelabel.gif";=0A=
=0A=
var overlayOpacity =3D 0.8;	// controls transparency of shadow overlay=0A=
=0A=
var animate =3D true;			// toggles resizing animations=0A=
var resizeSpeed =3D 7;		// controls the speed of the image resizing =
animations (1=3Dslowest and 10=3Dfastest)=0A=
=0A=
var borderSize =3D 10;		//if you adjust the padding in the CSS, you will =
need to update this variable=0A=
=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
//=0A=
//	Global Variables=0A=
//=0A=
var imageArray =3D new Array;=0A=
var activeImage;=0A=
=0A=
if(animate =3D=3D true){=0A=
	overlayDuration =3D 0.2;	// shadow fade in/out duration=0A=
	if(resizeSpeed > 10){ resizeSpeed =3D 10;}=0A=
	if(resizeSpeed < 1){ resizeSpeed =3D 1;}=0A=
	resizeDuration =3D (11 - resizeSpeed) * 0.15;=0A=
} else { =0A=
	overlayDuration =3D 0;=0A=
	resizeDuration =3D 0;=0A=
}=0A=
=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
//=0A=
//	Additional methods for Element added by SU, Couloir=0A=
//	- further additions by Lokesh Dhakar (huddletogether.com)=0A=
//=0A=
Object.extend(Element, {=0A=
	getWidth: function(element) {=0A=
	   	element =3D $(element);=0A=
	   	return element.offsetWidth; =0A=
	},=0A=
	setWidth: function(element,w) {=0A=
	   	element =3D $(element);=0A=
    	element.style.width =3D w +"px";=0A=
	},=0A=
	setHeight: function(element,h) {=0A=
   		element =3D $(element);=0A=
    	element.style.height =3D h +"px";=0A=
	},=0A=
	setTop: function(element,t) {=0A=
	   	element =3D $(element);=0A=
    	element.style.top =3D t +"px";=0A=
	},=0A=
	setLeft: function(element,l) {=0A=
	   	element =3D $(element);=0A=
    	element.style.left =3D l +"px";=0A=
	},=0A=
	setSrc: function(element,src) {=0A=
    	element =3D $(element);=0A=
    	element.src =3D src; =0A=
	},=0A=
	setHref: function(element,href) {=0A=
    	element =3D $(element);=0A=
    	element.href =3D href; =0A=
	},=0A=
	setInnerHTML: function(element,content) {=0A=
		element =3D $(element);=0A=
		element.innerHTML =3D content;=0A=
	}=0A=
});=0A=
=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
//=0A=
//	Extending built-in Array object=0A=
//	- array.removeDuplicates()=0A=
//	- array.empty()=0A=
//=0A=
Array.prototype.removeDuplicates =3D function () {=0A=
    for(i =3D 0; i < this.length; i++){=0A=
        for(j =3D this.length-1; j>i; j--){        =0A=
            if(this[i][0] =3D=3D this[j][0]){=0A=
                this.splice(j,1);=0A=
            }=0A=
        }=0A=
    }=0A=
}=0A=
=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
Array.prototype.empty =3D function () {=0A=
	for(i =3D 0; i <=3D this.length; i++){=0A=
		this.shift();=0A=
	}=0A=
}=0A=
=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
//=0A=
//	Lightbox Class Declaration=0A=
//	- initialize()=0A=
//	- start()=0A=
//	- changeImage()=0A=
//	- resizeImageContainer()=0A=
//	- showImage()=0A=
//	- updateDetails()=0A=
//	- updateNav()=0A=
//	- enableKeyboardNav()=0A=
//	- disableKeyboardNav()=0A=
//	- keyboardNavAction()=0A=
//	- preloadNeighborImages()=0A=
//	- end()=0A=
//=0A=
//	Structuring of code inspired by Scott Upton (http://www.uptonic.com/)=0A=
//=0A=
var Lightbox =3D Class.create();=0A=
=0A=
Lightbox.prototype =3D {=0A=
	=0A=
	// initialize()=0A=
	// Constructor runs on completion of the DOM loading. Calls =
updateImageList and then=0A=
	// the function inserts html at the bottom of the page which is used to =
display the shadow =0A=
	// overlay and the image container.=0A=
	//=0A=
	initialize: function() {	=0A=
		=0A=
		this.updateImageList();=0A=
=0A=
		// Code inserts html at the bottom of the page that looks similar to =
this:=0A=
		//=0A=
		//	<div id=3D"overlay"></div>=0A=
		//	<div id=3D"lightbox">=0A=
		//		<div id=3D"outerImageContainer">=0A=
		//			<div id=3D"imageContainer">=0A=
		//				<img id=3D"lightboxImage">=0A=
		//				<div style=3D"" id=3D"hoverNav">=0A=
		//					<a href=3D"#" id=3D"prevLink"></a>=0A=
		//					<a href=3D"#" id=3D"nextLink"></a>=0A=
		//				</div>=0A=
		//				<div id=3D"loading">=0A=
		//					<a href=3D"#" id=3D"loadingLink">=0A=
		//						<img src=3D"images/loading.gif">=0A=
		//					</a>=0A=
		//				</div>=0A=
		//			</div>=0A=
		//		</div>=0A=
		//		<div id=3D"imageDataContainer">=0A=
		//			<div id=3D"imageData">=0A=
		//				<div id=3D"imageDetails">=0A=
		//					<span id=3D"caption"></span>=0A=
		//					<span id=3D"numberDisplay"></span>=0A=
		//				</div>=0A=
		//				<div id=3D"bottomNav">=0A=
		//					<a href=3D"#" id=3D"bottomNavClose">=0A=
		//						<img src=3D"images/close.gif">=0A=
		//					</a>=0A=
		//				</div>=0A=
		//			</div>=0A=
		//		</div>=0A=
		//	</div>=0A=
=0A=
=0A=
		var objBody =3D document.getElementsByTagName("body").item(0);=0A=
		=0A=
		var objOverlay =3D document.createElement("div");=0A=
		objOverlay.setAttribute('id','overlay');=0A=
		objOverlay.style.display =3D 'none';=0A=
		objOverlay.onclick =3D function() { myLightbox.end(); }=0A=
		objBody.appendChild(objOverlay);=0A=
		=0A=
		var objLightbox =3D document.createElement("div");=0A=
		objLightbox.setAttribute('id','lightbox');=0A=
		objLightbox.style.display =3D 'none';=0A=
		objLightbox.onclick =3D function(e) {	// close Lightbox is user clicks =
shadow overlay=0A=
			if (!e) var e =3D window.event;=0A=
			var clickObj =3D Event.element(e).id;=0A=
			if ( clickObj =3D=3D 'lightbox') {=0A=
				myLightbox.end();=0A=
			}=0A=
		};=0A=
		objBody.appendChild(objLightbox);=0A=
			=0A=
		var objOuterImageContainer =3D document.createElement("div");=0A=
		objOuterImageContainer.setAttribute('id','outerImageContainer');=0A=
		objLightbox.appendChild(objOuterImageContainer);=0A=
=0A=
		// When Lightbox starts it will resize itself from 250 by 250 to the =
current image dimension.=0A=
		// If animations are turned off, it will be hidden as to prevent a =
flicker of a=0A=
		// white 250 by 250 box.=0A=
		if(animate){=0A=
			Element.setWidth('outerImageContainer', 250);=0A=
			Element.setHeight('outerImageContainer', 250);			=0A=
		} else {=0A=
			Element.setWidth('outerImageContainer', 1);=0A=
			Element.setHeight('outerImageContainer', 1);			=0A=
		}=0A=
=0A=
		var objImageContainer =3D document.createElement("div");=0A=
		objImageContainer.setAttribute('id','imageContainer');=0A=
		objOuterImageContainer.appendChild(objImageContainer);=0A=
	=0A=
		var objLightboxImage =3D document.createElement("img");=0A=
		objLightboxImage.setAttribute('id','lightboxImage');=0A=
		objImageContainer.appendChild(objLightboxImage);=0A=
	=0A=
		var objHoverNav =3D document.createElement("div");=0A=
		objHoverNav.setAttribute('id','hoverNav');=0A=
		objImageContainer.appendChild(objHoverNav);=0A=
	=0A=
		var objPrevLink =3D document.createElement("a");=0A=
		objPrevLink.setAttribute('id','prevLink');=0A=
		objPrevLink.setAttribute('href','#');=0A=
		objHoverNav.appendChild(objPrevLink);=0A=
		=0A=
		var objNextLink =3D document.createElement("a");=0A=
		objNextLink.setAttribute('id','nextLink');=0A=
		objNextLink.setAttribute('href','#');=0A=
		objHoverNav.appendChild(objNextLink);=0A=
	=0A=
		var objLoading =3D document.createElement("div");=0A=
		objLoading.setAttribute('id','loading');=0A=
		objImageContainer.appendChild(objLoading);=0A=
	=0A=
		var objLoadingLink =3D document.createElement("a");=0A=
		objLoadingLink.setAttribute('id','loadingLink');=0A=
		objLoadingLink.setAttribute('href','#');=0A=
		objLoadingLink.onclick =3D function() { myLightbox.end(); return =
false; }=0A=
		objLoading.appendChild(objLoadingLink);=0A=
	=0A=
		var objLoadingImage =3D document.createElement("img");=0A=
		objLoadingImage.setAttribute('src', fileLoadingImage);=0A=
		objLoadingLink.appendChild(objLoadingImage);=0A=
=0A=
		var objImageDataContainer =3D document.createElement("div");=0A=
		objImageDataContainer.setAttribute('id','imageDataContainer');=0A=
		objLightbox.appendChild(objImageDataContainer);=0A=
=0A=
		var objImageData =3D document.createElement("div");=0A=
		objImageData.setAttribute('id','imageData');=0A=
		objImageDataContainer.appendChild(objImageData);=0A=
	=0A=
		var objImageDetails =3D document.createElement("div");=0A=
		objImageDetails.setAttribute('id','imageDetails');=0A=
		objImageData.appendChild(objImageDetails);=0A=
	=0A=
		var objCaption =3D document.createElement("span");=0A=
		objCaption.setAttribute('id','caption');=0A=
		objImageDetails.appendChild(objCaption);=0A=
	=0A=
		var objNumberDisplay =3D document.createElement("span");=0A=
		objNumberDisplay.setAttribute('id','numberDisplay');=0A=
		objImageDetails.appendChild(objNumberDisplay);=0A=
		=0A=
		var objBottomNav =3D document.createElement("div");=0A=
		objBottomNav.setAttribute('id','bottomNav');=0A=
		objImageData.appendChild(objBottomNav);=0A=
	=0A=
		var objBottomNavCloseLink =3D document.createElement("a");=0A=
		objBottomNavCloseLink.setAttribute('id','bottomNavClose');=0A=
		objBottomNavCloseLink.setAttribute('href','#');=0A=
		objBottomNavCloseLink.onclick =3D function() { myLightbox.end(); =
return false; }=0A=
		objBottomNav.appendChild(objBottomNavCloseLink);=0A=
	=0A=
		var objBottomNavCloseImage =3D document.createElement("img");=0A=
		objBottomNavCloseImage.setAttribute('src', fileBottomNavCloseImage);=0A=
		objBottomNavCloseLink.appendChild(objBottomNavCloseImage);=0A=
	},=0A=
=0A=
=0A=
	//=0A=
	// updateImageList()=0A=
	// Loops through anchor tags looking for 'lightbox' references and =
applies onclick=0A=
	// events to appropriate links. You can rerun after dynamically adding =
images w/ajax.=0A=
	//=0A=
	updateImageList: function() {	=0A=
		if (!document.getElementsByTagName){ return; }=0A=
		var anchors =3D document.getElementsByTagName('a');=0A=
		var areas =3D document.getElementsByTagName('area');=0A=
=0A=
		// loop through all anchor tags=0A=
		for (var i=3D0; i<anchors.length; i++){=0A=
			var anchor =3D anchors[i];=0A=
			=0A=
			var relAttribute =3D String(anchor.getAttribute('rel'));=0A=
			=0A=
			// use the string.match() method to catch 'lightbox' references in =
the rel attribute=0A=
			if (anchor.getAttribute('href') && =
(relAttribute.toLowerCase().match('lightbox'))){=0A=
				anchor.onclick =3D function () {myLightbox.start(this); return =
false;}=0A=
			}=0A=
		}=0A=
=0A=
		// loop through all area tags=0A=
		// todo: combine anchor & area tag loops=0A=
		for (var i=3D0; i< areas.length; i++){=0A=
			var area =3D areas[i];=0A=
			=0A=
			var relAttribute =3D String(area.getAttribute('rel'));=0A=
			=0A=
			// use the string.match() method to catch 'lightbox' references in =
the rel attribute=0A=
			if (area.getAttribute('href') && =
(relAttribute.toLowerCase().match('lightbox'))){=0A=
				area.onclick =3D function () {myLightbox.start(this); return false;}=0A=
			}=0A=
		}=0A=
	},=0A=
	=0A=
	=0A=
	//=0A=
	//	start()=0A=
	//	Display overlay and lightbox. If image is part of a set, add =
siblings to imageArray.=0A=
	//=0A=
	start: function(imageLink) {	=0A=
=0A=
		hideSelectBoxes();=0A=
		hideFlash();=0A=
=0A=
		// stretch overlay to fill page and fade in=0A=
		var arrayPageSize =3D getPageSize();=0A=
		Element.setWidth('overlay', arrayPageSize[0]);=0A=
		Element.setHeight('overlay', arrayPageSize[1]);=0A=
=0A=
		new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, =
to: overlayOpacity });=0A=
=0A=
		imageArray =3D [];=0A=
		imageNum =3D 0;		=0A=
=0A=
		if (!document.getElementsByTagName){ return; }=0A=
		var anchors =3D document.getElementsByTagName( imageLink.tagName);=0A=
=0A=
		// if image is NOT part of a set..=0A=
		if((imageLink.getAttribute('rel') =3D=3D 'lightbox')){=0A=
			// add single image to imageArray=0A=
			imageArray.push(new Array(imageLink.getAttribute('href'), =
imageLink.getAttribute('title')));			=0A=
		} else {=0A=
		// if image is part of a set..=0A=
=0A=
			// loop through anchors, find other images in set, and add them to =
imageArray=0A=
			for (var i=3D0; i<anchors.length; i++){=0A=
				var anchor =3D anchors[i];=0A=
				if (anchor.getAttribute('href') && (anchor.getAttribute('rel') =
=3D=3D imageLink.getAttribute('rel'))){=0A=
					imageArray.push(new Array(anchor.getAttribute('href'), =
anchor.getAttribute('title')));=0A=
				}=0A=
			}=0A=
			imageArray.removeDuplicates();=0A=
			while(imageArray[imageNum][0] !=3D imageLink.getAttribute('href')) { =
imageNum++;}=0A=
		}=0A=
=0A=
		// calculate top and left offset for the lightbox =0A=
		var arrayPageScroll =3D getPageScroll();=0A=
		var lightboxTop =3D arrayPageScroll[1] + (arrayPageSize[3] / 10);=0A=
		var lightboxLeft =3D arrayPageScroll[0];=0A=
		Element.setTop('lightbox', lightboxTop);=0A=
		Element.setLeft('lightbox', lightboxLeft);=0A=
		=0A=
		Element.show('lightbox');=0A=
		=0A=
		this.changeImage(imageNum);=0A=
	},=0A=
=0A=
	//=0A=
	//	changeImage()=0A=
	//	Hide most elements and preload image in preparation for resizing =
image container.=0A=
	//=0A=
	changeImage: function(imageNum) {	=0A=
		=0A=
		activeImage =3D imageNum;	// update global var=0A=
=0A=
		// hide elements during transition=0A=
		if(animate){ Element.show('loading');}=0A=
		Element.hide('lightboxImage');=0A=
		Element.hide('hoverNav');=0A=
		Element.hide('prevLink');=0A=
		Element.hide('nextLink');=0A=
		Element.hide('imageDataContainer');=0A=
		Element.hide('numberDisplay');		=0A=
		=0A=
		imgPreloader =3D new Image();=0A=
		=0A=
		// once image is preloaded, resize image container=0A=
		imgPreloader.onload=3Dfunction(){=0A=
			Element.setSrc('lightboxImage', imageArray[activeImage][0]);=0A=
			myLightbox.resizeImageContainer(imgPreloader.width, =
imgPreloader.height);=0A=
			=0A=
			imgPreloader.onload=3Dfunction(){};	//	clear onLoad, IE behaves =
irratically with animated gifs otherwise =0A=
		}=0A=
		imgPreloader.src =3D imageArray[activeImage][0];=0A=
	},=0A=
=0A=
	//=0A=
	//	resizeImageContainer()=0A=
	//=0A=
	resizeImageContainer: function( imgWidth, imgHeight) {=0A=
=0A=
		// get curren width and height=0A=
		this.widthCurrent =3D Element.getWidth('outerImageContainer');=0A=
		this.heightCurrent =3D Element.getHeight('outerImageContainer');=0A=
=0A=
		// get new width and height=0A=
		var widthNew =3D (imgWidth  + (borderSize * 2));=0A=
		var heightNew =3D (imgHeight  + (borderSize * 2));=0A=
=0A=
		// scalars based on change from old to new=0A=
		this.xScale =3D ( widthNew / this.widthCurrent) * 100;=0A=
		this.yScale =3D ( heightNew / this.heightCurrent) * 100;=0A=
=0A=
		// calculate size difference between new and old image, and resize if =
necessary=0A=
		wDiff =3D this.widthCurrent - widthNew;=0A=
		hDiff =3D this.heightCurrent - heightNew;=0A=
=0A=
		if(!( hDiff =3D=3D 0)){ new Effect.Scale('outerImageContainer', =
this.yScale, {scaleX: false, duration: resizeDuration, queue: 'front'}); =
}=0A=
		if(!( wDiff =3D=3D 0)){ new Effect.Scale('outerImageContainer', =
this.xScale, {scaleY: false, delay: resizeDuration, duration: =
resizeDuration}); }=0A=
=0A=
		// if new and old image are same size and no scaling transition is =
necessary, =0A=
		// do a quick pause to prevent image flicker.=0A=
		if((hDiff =3D=3D 0) && (wDiff =3D=3D 0)){=0A=
			if (navigator.appVersion.indexOf("MSIE")!=3D-1){ pause(250); } else { =
pause(100);} =0A=
		}=0A=
=0A=
		Element.setHeight('prevLink', imgHeight);=0A=
		Element.setHeight('nextLink', imgHeight);=0A=
		Element.setWidth( 'imageDataContainer', widthNew);=0A=
=0A=
		this.showImage();=0A=
	},=0A=
	=0A=
	//=0A=
	//	showImage()=0A=
	//	Display image and begin preloading neighbors.=0A=
	//=0A=
	showImage: function(){=0A=
		Element.hide('loading');=0A=
		new Effect.Appear('lightboxImage', { duration: resizeDuration, queue: =
'end', afterFinish: function(){	myLightbox.updateDetails(); } });=0A=
		this.preloadNeighborImages();=0A=
	},=0A=
=0A=
	//=0A=
	//	updateDetails()=0A=
	//	Display caption, image number, and bottom nav.=0A=
	//=0A=
	updateDetails: function() {=0A=
	=0A=
		// if caption is not null=0A=
		if(imageArray[activeImage][1]){=0A=
			Element.show('caption');=0A=
			Element.setInnerHTML( 'caption', imageArray[activeImage][1]);=0A=
		}=0A=
		=0A=
		// if image is part of set display 'Image x of x' =0A=
		if(imageArray.length > 1){=0A=
			Element.show('numberDisplay');=0A=
			Element.setInnerHTML( 'numberDisplay', "Image " + eval(activeImage + =
1) + " of " + imageArray.length);=0A=
		}=0A=
=0A=
		new Effect.Parallel(=0A=
			[ new Effect.SlideDown( 'imageDataContainer', { sync: true, duration: =
resizeDuration, from: 0.0, to: 1.0 }), =0A=
			  new Effect.Appear('imageDataContainer', { sync: true, duration: =
resizeDuration }) ], =0A=
			{ duration: resizeDuration, afterFinish: function() {=0A=
				// update overlay size and update nav=0A=
				var arrayPageSize =3D getPageSize();=0A=
				Element.setHeight('overlay', arrayPageSize[1]);=0A=
				myLightbox.updateNav();=0A=
				}=0A=
			} =0A=
		);=0A=
	},=0A=
=0A=
	//=0A=
	//	updateNav()=0A=
	//	Display appropriate previous and next hover navigation.=0A=
	//=0A=
	updateNav: function() {=0A=
=0A=
		Element.show('hoverNav');				=0A=
=0A=
		// if not first image in set, display prev image button=0A=
		if(activeImage !=3D 0){=0A=
			Element.show('prevLink');=0A=
			document.getElementById('prevLink').onclick =3D function() {=0A=
				myLightbox.changeImage(activeImage - 1); return false;=0A=
			}=0A=
		}=0A=
=0A=
		// if not last image in set, display next image button=0A=
		if(activeImage !=3D (imageArray.length - 1)){=0A=
			Element.show('nextLink');=0A=
			document.getElementById('nextLink').onclick =3D function() {=0A=
				myLightbox.changeImage(activeImage + 1); return false;=0A=
			}=0A=
		}=0A=
		=0A=
		this.enableKeyboardNav();=0A=
	},=0A=
=0A=
	//=0A=
	//	enableKeyboardNav()=0A=
	//=0A=
	enableKeyboardNav: function() {=0A=
		document.onkeydown =3D this.keyboardAction; =0A=
	},=0A=
=0A=
	//=0A=
	//	disableKeyboardNav()=0A=
	//=0A=
	disableKeyboardNav: function() {=0A=
		document.onkeydown =3D '';=0A=
	},=0A=
=0A=
	//=0A=
	//	keyboardAction()=0A=
	//=0A=
	keyboardAction: function(e) {=0A=
		if (e =3D=3D null) { // ie=0A=
			keycode =3D event.keyCode;=0A=
			escapeKey =3D 27;=0A=
		} else { // mozilla=0A=
			keycode =3D e.keyCode;=0A=
			escapeKey =3D e.DOM_VK_ESCAPE;=0A=
		}=0A=
=0A=
		key =3D String.fromCharCode(keycode).toLowerCase();=0A=
		=0A=
		if((key =3D=3D 'x') || (key =3D=3D 'o') || (key =3D=3D 'c') || =
(keycode =3D=3D escapeKey)){	// close lightbox=0A=
			myLightbox.end();=0A=
		} else if((key =3D=3D 'p') || (keycode =3D=3D 37)){	// display =
previous image=0A=
			if(activeImage !=3D 0){=0A=
				myLightbox.disableKeyboardNav();=0A=
				myLightbox.changeImage(activeImage - 1);=0A=
			}=0A=
		} else if((key =3D=3D 'n') || (keycode =3D=3D 39)){	// display next =
image=0A=
			if(activeImage !=3D (imageArray.length - 1)){=0A=
				myLightbox.disableKeyboardNav();=0A=
				myLightbox.changeImage(activeImage + 1);=0A=
			}=0A=
		}=0A=
=0A=
	},=0A=
=0A=
	//=0A=
	//	preloadNeighborImages()=0A=
	//	Preload previous and next images.=0A=
	//=0A=
	preloadNeighborImages: function(){=0A=
=0A=
		if((imageArray.length - 1) > activeImage){=0A=
			preloadNextImage =3D new Image();=0A=
			preloadNextImage.src =3D imageArray[activeImage + 1][0];=0A=
		}=0A=
		if(activeImage > 0){=0A=
			preloadPrevImage =3D new Image();=0A=
			preloadPrevImage.src =3D imageArray[activeImage - 1][0];=0A=
		}=0A=
	=0A=
	},=0A=
=0A=
	//=0A=
	//	end()=0A=
	//=0A=
	end: function() {=0A=
		this.disableKeyboardNav();=0A=
		Element.hide('lightbox');=0A=
		new Effect.Fade('overlay', { duration: overlayDuration});=0A=
		showSelectBoxes();=0A=
		showFlash();=0A=
	}=0A=
}=0A=
=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
//=0A=
// getPageScroll()=0A=
// Returns array with x,y page scroll values.=0A=
// Core code from - quirksmode.com=0A=
//=0A=
function getPageScroll(){=0A=
=0A=
	var xScroll, yScroll;=0A=
=0A=
	if (self.pageYOffset) {=0A=
		yScroll =3D self.pageYOffset;=0A=
		xScroll =3D self.pageXOffset;=0A=
	} else if (document.documentElement && =
document.documentElement.scrollTop){	 // Explorer 6 Strict=0A=
		yScroll =3D document.documentElement.scrollTop;=0A=
		xScroll =3D document.documentElement.scrollLeft;=0A=
	} else if (document.body) {// all other Explorers=0A=
		yScroll =3D document.body.scrollTop;=0A=
		xScroll =3D document.body.scrollLeft;	=0A=
	}=0A=
=0A=
	arrayPageScroll =3D new Array(xScroll,yScroll) =0A=
	return arrayPageScroll;=0A=
}=0A=
=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
//=0A=
// getPageSize()=0A=
// Returns array with page width, height and window width, height=0A=
// Core code from - quirksmode.com=0A=
// Edit for Firefox by pHaez=0A=
//=0A=
function getPageSize(){=0A=
	=0A=
	var xScroll, yScroll;=0A=
	=0A=
	if (window.innerHeight && window.scrollMaxY) {	=0A=
		xScroll =3D window.innerWidth + window.scrollMaxX;=0A=
		yScroll =3D window.innerHeight + window.scrollMaxY;=0A=
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // =
all but Explorer Mac=0A=
		xScroll =3D document.body.scrollWidth;=0A=
		yScroll =3D document.body.scrollHeight;=0A=
	} else { // Explorer Mac...would also work in Explorer 6 Strict, =
Mozilla and Safari=0A=
		xScroll =3D document.body.offsetWidth;=0A=
		yScroll =3D document.body.offsetHeight;=0A=
	}=0A=
	=0A=
	var windowWidth, windowHeight;=0A=
	=0A=
//	console.log(self.innerWidth);=0A=
//	console.log(document.documentElement.clientWidth);=0A=
=0A=
	if (self.innerHeight) {	// all except Explorer=0A=
		if(document.documentElement.clientWidth){=0A=
			windowWidth =3D document.documentElement.clientWidth; =0A=
		} else {=0A=
			windowWidth =3D self.innerWidth;=0A=
		}=0A=
		windowHeight =3D self.innerHeight;=0A=
	} else if (document.documentElement && =
document.documentElement.clientHeight) { // Explorer 6 Strict Mode=0A=
		windowWidth =3D document.documentElement.clientWidth;=0A=
		windowHeight =3D document.documentElement.clientHeight;=0A=
	} else if (document.body) { // other Explorers=0A=
		windowWidth =3D document.body.clientWidth;=0A=
		windowHeight =3D document.body.clientHeight;=0A=
	}	=0A=
	=0A=
	// for small pages with total height less then height of the viewport=0A=
	if(yScroll < windowHeight){=0A=
		pageHeight =3D windowHeight;=0A=
	} else { =0A=
		pageHeight =3D yScroll;=0A=
	}=0A=
=0A=
//	console.log("xScroll " + xScroll)=0A=
//	console.log("windowWidth " + windowWidth)=0A=
=0A=
	// for small pages with total width less then width of the viewport=0A=
	if(xScroll < windowWidth){	=0A=
		pageWidth =3D xScroll;		=0A=
	} else {=0A=
		pageWidth =3D windowWidth;=0A=
	}=0A=
//	console.log("pageWidth " + pageWidth)=0A=
=0A=
	arrayPageSize =3D new =
Array(pageWidth,pageHeight,windowWidth,windowHeight) =0A=
	return arrayPageSize;=0A=
}=0A=
=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
//=0A=
// getKey(key)=0A=
// Gets keycode. If 'x' is pressed then it hides the lightbox.=0A=
//=0A=
function getKey(e){=0A=
	if (e =3D=3D null) { // ie=0A=
		keycode =3D event.keyCode;=0A=
	} else { // mozilla=0A=
		keycode =3D e.which;=0A=
	}=0A=
	key =3D String.fromCharCode(keycode).toLowerCase();=0A=
	=0A=
	if(key =3D=3D 'x'){=0A=
	}=0A=
}=0A=
=0A=
// =
-------------------------------------------------------------------------=
----------=0A=
=0A=
//=0A=
// listenKey()=0A=
//=0A=
function listenKey () {	document.onkeypress =3D getKey; }=0A=
	=0A=
// ---------------------------------------------------=0A=
=0A=
function showSelectBoxes(){=0A=
	var selects =3D document.getElementsByTagName("select");=0A=
	for (i =3D 0; i !=3D selects.length; i++) {=0A=
		selects[i].style.visibility =3D "visible";=0A=
	}=0A=
}=0A=
=0A=
// ---------------------------------------------------=0A=
=0A=
function hideSelectBoxes(){=0A=
	var selects =3D document.getElementsByTagName("select");=0A=
	for (i =3D 0; i !=3D selects.length; i++) {=0A=
		selects[i].style.visibility =3D "hidden";=0A=
	}=0A=
}=0A=
=0A=
// ---------------------------------------------------=0A=
=0A=
function showFlash(){=0A=
	var flashObjects =3D document.getElementsByTagName("object");=0A=
	for (i =3D 0; i < flashObjects.length; i++) {=0A=
		flashObjects[i].style.visibility =3D "visible";=0A=
	}=0A=
=0A=
	var flashEmbeds =3D document.getElementsByTagName("embed");=0A=
	for (i =3D 0; i < flashEmbeds.length; i++) {=0A=
		flashEmbeds[i].style.visibility =3D "visible";=0A=
	}=0A=
}=0A=
=0A=
// ---------------------------------------------------=0A=
=0A=
function hideFlash(){=0A=
	var flashObjects =3D document.getElementsByTagName("object");=0A=
	for (i =3D 0; i < flashObjects.length; i++) {=0A=
		flashObjects[i].style.visibility =3D "hidden";=0A=
	}=0A=
=0A=
	var flashEmbeds =3D document.getElementsByTagName("embed");=0A=
	for (i =3D 0; i < flashEmbeds.length; i++) {=0A=
		flashEmbeds[i].style.visibility =3D "hidden";=0A=
	}=0A=
=0A=
}=0A=
=0A=
=0A=
// ---------------------------------------------------=0A=
=0A=
//=0A=
// pause(numberMillis)=0A=
// Pauses code execution for specified time. Uses busy code, not good.=0A=
// Help from Ran Bar-On [ran2103@gmail.com]=0A=
//=0A=
=0A=
function pause(ms){=0A=
	var date =3D new Date();=0A=
	curDate =3D null;=0A=
	do{var curDate =3D new Date();}=0A=
	while( curDate - date < ms);=0A=
}=0A=
/*=0A=
function pause(numberMillis) {=0A=
	var curently =3D new Date().getTime() + sender;=0A=
	while (new Date().getTime();	=0A=
}=0A=
*/=0A=
// ---------------------------------------------------=0A=
=0A=
=0A=
=0A=
function initLightbox() { myLightbox =3D new Lightbox(); }=0A=
Event.observe(window, 'load', initLightbox, false);
------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/js/toggle.js

function slideToggle() {=0A=
	for (var i=3D0; i<slideToggle.arguments.length; i++) {=0A=
		var element =3D document.getElementById(slideToggle.arguments[i]);=0A=
		(element.style.display =3D=3D "" ? =
Effect.SlideUp(slideToggle.arguments[i],{duration:.25}) : =
Effect.SlideDown(slideToggle.arguments[i],{duration:.25}));=0A=
	}=0A=
}=0A=
=0A=
        function toggle() {=0A=
                for (var i=3D0; i<toggle.arguments.length; i++) {=0A=
                        var element =3D =
document.getElementById(toggle.arguments[i]);=0A=
                        element.style.display =3D (element.style.display =
=3D=3D "" ? "none" : "");=0A=
                }=0A=
        }=0A=
=0A=
        function toggleOn() {=0A=
                for (var i=3D0; i<toggleOn.arguments.length; i++) {=0A=
                        var element =3D =
document.getElementById(toggleOn.arguments[i]);=0A=
                        element.style.display =3D "";=0A=
                }=0A=
        }=0A=
=0A=
        function toggleOff() {=0A=
                for (var i=3D0; i<toggleOff.arguments.length; i++) {=0A=
                        var element =3D =
document.getElementById(toggleOff.arguments[i]);=0A=
                        element.style.display =3D "none";=0A=
                }=0A=
        }
------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.athensexchange.com/inc/js/confirmNav.js

function confirmNav(url) {=0A=
	if(confirm("This action is irreversible. Do you wish to continue?")) {=0A=
		if(url !=3D "" && url !=3D "undefined" && url !=3D null) {=0A=
			window.location =3D url;=0A=
		}=0A=
		else return true;=0A=
	}=0A=
}
------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://s7.addthis.com/js/addthis_widget.php?v=12

if (typeof addthis_widget=3D=3D"undefined"){var =
addthis_widget=3D'addthis'; var at12O=3D'http://s7.addthis.com/'; var =
at12o=3D'http://s7.addthis.com/services/'; var =
at12Y=3D'http://s7.addthis.com/select/'; function at12y( =
){addthis_url=3DencodeURIComponent(addthis_url); =
addthis_title=3DencodeURIComponent(addthis_title); =
addthis_title=3Daddthis_title.replace(/'/g,'\\\''); var at12I=3D'<a =
href=3D"'+at12i('')+'\" onmouseover=3D\"return addthis_onmouseover(this, =
event, \''+addthis_url+'\', \''+addthis_title+'\', =
\''+addthis_pub+'\')\" onmouseout=3D\"addthis_onmouseout()\" =
onclick=3D\"return addthis_to()\" class=3D\"snap_noshots\">'; =
at12I+=3D'<img src=3D"'+at12O+'button1-bm.gif" width=3D"125" =
height=3D"16" border=3D"0" style=3D"border: none; padding: 0px" alt=3D"" =
/></a>'; document.write(at12I); }function at12A(at12a){return =
document.getElementById(at12a); }function addthis_clearclosewin( ){if =
(typeof at12E!=3D"undefined")clearTimeout(at12E); }function =
addthis_onmouseover(at12e,at12U,at12u,at12Z,at12z){addthis_clearclosewin(=
 ); addthis_url=3Dat12u; addthis_title=3Dat12Z; addthis_pub=3Dat12z; =
at12X=3Dat12A('addthis_favorites'); at12X.src=3Dat12o+'favorites.png'; =
at12X=3Dat12A('addthis_delicious'); at12X.src=3Dat12o+'delicious.png'; =
at12X=3Dat12A('addthis_digg'); at12X.src=3Dat12o+'digg.png'; =
at12X=3Dat12A('addthis_reddit'); at12X.src=3Dat12o+'reddit.gif'; =
at12X=3Dat12A('addthis_google'); at12X.src=3Dat12o+'goog.png'; =
at12X=3Dat12A('addthis_furl'); at12X.src=3Dat12o+'furl.gif'; =
at12X=3Dat12A('addthis_su'); at12X.src=3Dat12o+'su.png'; =
at12X=3Dat12A('addthis_live'); at12X.src=3Dat12o+'live.gif'; =
at12X=3Dat12A('addthis_myweb'); at12X.src=3Dat12o+'yahoo-myweb.png'; =
at12X=3Dat12A('addthis_facebook'); at12X.src=3Dat12o+'facebook.gif'; =
at12X=3Dat12A('addthis_myspace'); at12X.src=3Dat12o+'myspace.png'; =
at12X=3Dat12A('addthis_more'); at12X.src=3Dat12o+'plus-16x16-light.gif'; =
var at12x=3Dat12e.getElementsByTagName('img'); if =
(at12x)at12e=3Dat12x[0]; var at12W=3Dat12A('addthis_dropdown'); =
at12W.style.display=3D'block'; var at12w=3Dat12V(at12e); =
at12v=3Dat12w[0]; at12T=3Dat12w[1]; var at12t=3Dat12S( ); var =
at12s=3Dat12R( ); if =
(at12v-at12s[0]+at12W.clientWidth+024>at12t[0])at12v=3Dat12v-0157; if =
(at12T-at12s[1]+at12W.clientHeight+at12e.clientHeight+024>at12t[1])at12T=3D=
at12T-0235; at12W.style.left=3Dat12v+'px'; =
at12W.style.top=3D(at12T+at12e.clientHeight)+'px'; return false; =
}function addthis_onmouseout( ){addthis_closewinwait( ); }function =
addthis_closewinwait( =
){at12E=3DsetTimeout("addthis_closewin()",0764);}function =
addthis_closewin( ){var at12W=3Dat12A('addthis_dropdown'); =
at12W.style.display=3D'none'; return false; }function =
addthis_to(at12r){addthis_closewin( ); if =
(at12r=3D=3D'favorites'){addthis_url=3DdecodeURIComponent(addthis_url); =
addthis_title=3DdecodeURIComponent(addthis_title); if =
(document.all)window.external.AddFavorite(addthis_url,addthis_title); =
else window.sidebar.addPanel(addthis_title,addthis_url,''); return =
false; =
}window.open(at12i(at12r),'addthis','scrollbars=3Dyes,menubar=3Dno,width=3D=
620,height=3D400,resizable=3Dyes,toolbar=3Dno,location=3Dno,status=3Dno')=
; return false; }function at12i(at12r){return =
'http://www.addthis.com/bookmark.php?v=3D12&winname=3Daddthis&pub=3D'+add=
this_pub+'&s=3D'+at12r+'&url=3D'+addthis_url+'&title=3D'+addthis_title; =
}function at12V(at12Q){var at12q=3D0,at12P=3D0; do =
{at12q+=3Dat12Q.offsetTop || 0; at12P+=3Dat12Q.offsetLeft || 0; =
at12Q=3Dat12Q.offsetParent; }while (at12Q); return [at12P,at12q]; =
}function at12S( ){var at12p=3D0; var at12N=3D0; if =
(typeof(window.innerWidth)=3D=3D'number'){at12p=3Dwindow.innerWidth; =
at12N=3Dwindow.innerHeight; }else if (document.documentElement && =
(document.documentElement.clientWidth || =
document.documentElement.clientHeight)){at12p=3Ddocument.documentElement.=
clientWidth; at12N=3Ddocument.documentElement.clientHeight; }else if =
(document.body && (document.body.clientWidth || =
document.body.clientHeight)){at12p=3Ddocument.body.clientWidth; =
at12N=3Ddocument.body.clientHeight; }return [at12p,at12N]; }function =
at12R( ){var at12n=3D0; var at12M=3D0; if =
(typeof(window.pageYOffset)=3D=3D'number'){at12M=3Dwindow.pageYOffset; =
at12n=3Dwindow.pageXOffset; }else if (document.body && =
(document.body.scrollLeft || =
document.body.scrollTop)){at12M=3Ddocument.body.scrollTop; =
at12n=3Ddocument.body.scrollLeft; }else if (document.documentElement && =
(document.documentElement.scrollLeft || =
document.documentElement.scrollTop)){at12M=3Ddocument.documentElement.scr=
ollTop; at12n=3Ddocument.documentElement.scrollLeft; }return =
[at12n,at12M]; }function at12m( =
){at12L=3Ddocument.createElement('link'); at12L.rel=3D'stylesheet'; =
at12L.type=3D'text/css'; at12L.href=3Dat12O+'css/addthis_widget.css'; =
at12L.media=3D'all'; document.lastChild.firstChild.appendChild(at12L); =
}function at12l( ){at12m( ); var at12K=3D'<div id=3D"addthis_dropdown" =
onmouseover=3D"addthis_clearclosewin()" =
onmouseout=3D"addthis_onmouseout()" style=3D"z-index: 1000000; position: =
absolute; display: none">'; at12K+=3D'<table width=3D"100%" =
cellpadding=3D"2" cellspacing=3D"0" style=3D"background-color: #EEEEEE; =
height: 20px">'; at12K+=3D'<tr><td style=3D"font-size: 12px; color: =
#666666">Bookmark &amp; Share</td><td width=3D"60" align=3D"right"><a =
href=3D"http://www.addthis.com" style=3D"font-size: 9px; =
text-decoration: none; color: #666666" target=3D"_blank" =
class=3D"snap_noshots">&copy; Add This</a></td></tr>'; =
at12K+=3D'</table>'; at12K+=3D'<table id=3D"addthis_services" =
width=3D"100%" cellpadding=3D"0" style=3D"font-family: Verdana, Arial; =
font-size: 11px;">'; at12K+=3D'<tr>'; at12K+=3D'\x3ctd =
width=3D\"50%\">\x3ca href=3D\"/\" onclick=3D\"return =
addthis_to(\'favorites\')\">\x3cimg id=3D\"addthis_favorites\" =
alt=3D\"\" width=3D\"16\" height=3D\"16\"  />&nbsp; =
Favorites\x3c/a>\x3c/td>'; at12K+=3D'\x3ctd width=3D\"50%\">\x3ca =
href=3D\"/\" onclick=3D\"return addthis_to(\'delicious\')\">\x3cimg =
id=3D\"addthis_delicious\" alt=3D\"\" width=3D\"16\" height=3D\"16\" =
/>&nbsp; Del.icio.us\x3c/a>\x3c/td>'; at12K+=3D'</tr><tr>'; =
at12K+=3D'\x3ctd>\x3ca href=3D\"/\" onclick=3D\"return =
addthis_to(\'digg\');\">\x3cimg id=3D\"addthis_digg\" alt=3D\"\" =
width=3D\"16\" height=3D\"16\"  />&nbsp; Digg\x3c/a>\x3c/td>'; =
at12K+=3D'\x3ctd>\x3ca href=3D\"/\" onclick=3D\"return =
addthis_to(\'google\')\">\x3cimg id=3D\"addthis_google\" alt=3D\"\" =
width=3D\"16\" height=3D\"16\"  />&nbsp; Google\x3c/a>\x3c/td>'; =
at12K+=3D'</tr><tr>'; at12K+=3D'\x3ctd>\x3ca href=3D\"/\" =
onclick=3D\"return addthis_to(\'myspace\');\">\x3cimg =
id=3D\"addthis_myspace\" alt=3D\"\" width=3D\"16\" height=3D\"16\"  =
/>&nbsp; MySpace\x3c/a>\x3c/td>'; at12K+=3D'\x3ctd>\x3ca href=3D\"/\" =
onclick=3D\"return addthis_to(\'facebook\');\">\x3cimg =
id=3D\"addthis_facebook\" alt=3D\"\" width=3D\"16\" height=3D\"16\"  =
/>&nbsp; Facebook\x3c/a>\x3c/td>'; at12K+=3D'</tr><tr>'; =
at12K+=3D'\x3ctd>\x3ca href=3D\"/\" onclick=3D\"return =
addthis_to(\'reddit\');\">\x3cimg id=3D\"addthis_reddit\" alt=3D\"\" =
width=3D\"16\" height=3D\"16\"  />&nbsp; Reddit\x3c/a>\x3c/td>'; =
at12K+=3D'\x3ctd>\x3ca href=3D\"/\" onclick=3D\"return =
addthis_to(\'live\');\">\x3cimg id=3D\"addthis_live\" alt=3D\"\" =
width=3D\"16\" height=3D\"16\"  />&nbsp; Live\x3c/a>\x3c/td>'; =
at12K+=3D'</tr><tr>'; at12K+=3D'\x3ctd>\x3ca href=3D\"/\" =
onclick=3D\"return addthis_to(\'furl\');\">\x3cimg id=3D\"addthis_furl\" =
alt=3D\"\" width=3D\"16\" height=3D\"16\"  />&nbsp; =
Furl\x3c/a>\x3c/td>'; at12K+=3D'\x3ctd>\x3ca href=3D\"/\" =
onclick=3D\"return addthis_to(\'myweb\');\">\x3cimg =
id=3D\"addthis_myweb\" alt=3D\"\" width=3D\"16\" height=3D\"16\"  =
/>&nbsp; Yahoo MyWeb\x3c/a>\x3c/td>'; at12K+=3D'</tr><tr>'; =
at12K+=3D'\x3ctd>\x3ca href=3D\"/\" onclick=3D\"return =
addthis_to(\'su\');\">\x3cimg id=3D\"addthis_su\" alt=3D\"\" =
width=3D\"16\" height=3D\"16\"  />&nbsp; StumbleUpon\x3c/a>\x3c/td>'; =
at12K+=3D'<td><a href=3D"/" onclick=3D"return addthis_to();"><img =
id=3D"addthis_more" alt=3D"" width=3D"16" height=3D"16"  />&nbsp; =
More...</a></td>'; at12K+=3D'</tr>'; at12K+=3D'</table>'; =
at12K+=3D'<table width=3D"100%" cellpadding=3D"0" cellspacing=3D"0" =
style=3D"background-color: #EEEEEE; height: 6px; font-size: 8px; color: =
#777777">'; at12K+=3D'<tr><td colspan=3D"2"></td></tr>'; =
at12K+=3D'</table>'; at12K+=3D'</div>'; =
at12k=3Ddocument.createElement('div'); at12k.innerHTML=3Dat12K; =
document.body.insertBefore(at12k,document.body.firstChild); =
at12k.style.zIndex=3D03641100; }at12l( ); }at12y( );=0A=

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js

(function(){=0A=
var f=3Ddocument,j=3Dnavigator,l=3Dwindow;function da(){var =
b=3Df.cookie,a=3DMath.round((new =
Date).getTime()/1000),c=3Db.indexOf("__utma=3D")>-1,e=3Db.indexOf("__utmb=
=3D")>-1,d=3Db.indexOf("__utmc=3D")>-1,g,i=3D{};if(c){g=3Db.split("__utma=
=3D")[1].split(";")[0].split(".");i.sid=3D(!e||!d?a:g[4])+"";i.vid=3Dg[1]=
+"."+g[2];i.from_cookie=3Dtrue}else{i.sid=3Dl&&l.gaGlobal&&l.gaGlobal.sid=
?l.gaGlobal.sid:a+"";i.vid=3Dl&&l.gaGlobal&&l.gaGlobal.vid?l.gaGlobal.vid=
:(n()^ea())*2147483647+"."+a;i.from_cookie=3Dfalse}i.hid=3Dl&&l.gaGlobal&=
&l.gaGlobal.hid?=0A=
l.gaGlobal.hid:n();l.gaGlobal=3Di;return i}function n(){return =
Math.round(Math.random()*2147483647)}function ea(){var =
b=3Df.cookie?f.cookie:"",a=3Dl.history.length,c,e,d=3D[j.appName,j.versio=
n,j.language?j.language:j.browserLanguage,j.platform,j.userAgent,j.javaEn=
abled()?1:0].join("");if(l.screen)d+=3Dl.screen.width+"x"+l.screen.height=
+l.screen.colorDepth;else =
if(l.java){e=3Djava.awt.Toolkit.getDefaultToolkit().getScreenSize();d+=3D=
e.screen.width+"x"+e.screen.height}d+=3Db;d+=3Df.referrer?f.referrer:"";c=
=3Dd.length;=0A=
while(a>0)d+=3Da--^c++;return fa(d)}function fa(b){var =
a=3D1,c=3D0,e,d;if(!(b=3D=3Dundefined||b=3D=3D"")){a=3D0;for(e=3Db.length=
-1;e>=3D0;e--){d=3Db.charCodeAt(e);a=3D(a<<6&268435455)+d+(d<<14);c=3Da&2=
66338304;a=3Dc!=3D0?a^c>>21:a}}return a};var =
s=3D{google_ad_channel:"channel",google_ad_host:"host",google_ad_host_tie=
r_id:"ht_id",google_ad_region:"region",google_ad_section:"region",google_=
ad_type:"ad_type",google_adtest:"adtest",google_alternate_ad_url:"alterna=
te_ad_url",google_alternate_color:"alt_color",google_bid:"bid",google_cit=
y:"gcs",google_color_bg:"color_bg",google_color_border:"color_border",goo=
gle_color_line:"color_line",google_color_link:"color_link",google_color_t=
ext:"color_text",google_color_url:"color_url",google_contents:"contents",=0A=
google_country:"gl",google_cust_age:"cust_age",google_cust_ch:"cust_ch",g=
oogle_cust_gender:"cust_gender",google_cust_id:"cust_id",google_cust_inte=
rests:"cust_interests",google_cust_job:"cust_job",google_cust_l:"cust_l",=
google_cust_lh:"cust_lh",google_cust_u_url:"cust_u_url",google_disable_vi=
deo_autoplay:"disable_video_autoplay",google_ed:"ed",google_encoding:"oe"=
,google_feedback:"feedback_link",google_flash_version:"flash",google_gl:"=
gl",google_hints:"hints",google_kw:"kw",google_kw_type:"kw_type",=0A=
google_language:"hl",google_referrer_url:"ref",google_region:"gr",google_=
reuse_colors:"reuse_colors",google_safe:"adsafe",google_targeting:"target=
ing",google_ui_features:"ui"},u=3D{google_ad_format:"format",google_ad_ou=
tput:"output",google_ad_callback:"callback",google_ad_override:"google_ad=
_override",google_ad_slot:"slotname",google_analytics_uacct:"ga_wpids",go=
ogle_correlator:"correlator",google_cpa_choice:"cpa_choice",google_image_=
size:"image_size",google_last_modified_time:"lmt",google_max_num_ads:"num=
_ads",=0A=
google_max_radlink_len:"max_radlink_len",google_num_radlinks:"num_radlink=
s",google_num_radlinks_per_unit:"num_radlinks_per_unit",google_only_ads_w=
ith_video:"only_ads_with_video",google_page_location:"loc",google_page_ur=
l:"url",google_rl_dest_url:"rl_dest_url",google_rl_filtering:"rl_filterin=
g",google_rl_mode:"rl_mode",google_rt:"rt",google_skip:"skip"};function =
A(b){return s[b]||u[b]||null};function =
B(){}B.prototype.c=3Dfunction(){};B.prototype.e=3Dfunction(){};B.prototyp=
e.o=3Dfunction(){};var E=3Dnull;function =
G(){this.b=3Dthis.m();this.g=3Dfalse;if(!this.b){this.g=3Dthis.i();if(!th=
is.g)E.e("Browser does not allow =
cookies")}}G.prototype.f=3D"__gads=3D";G.prototype.d=3D"GoogleAdServingTe=
st=3D";G.prototype.l=3Dfunction(){return =
this.b};G.prototype.setCookieInfo=3Dfunction(b){this.a=3Db._cookies_[0];i=
f(this.a!=3Dnull){this.b=3Dthis.a._value_;this.n()}};G.prototype.k=3Dfunc=
tion(b){var a=3D(new Date).valueOf(),c=3Dnew Date;=0A=
c.setTime(a+b);return =
c};G.prototype.j=3Dfunction(b){if(this.b!=3Dnull||!this.g){E.c("Skipping =
fetch cookie call");return}var =
a=3Ddocument.domain,c=3D"http://partner.googleadservices.com/gampad/cooki=
e.js?callback=3D_GA_googleCookieHelper.setCookieInfo&client=3D"+H(b)+"&do=
main=3D"+H(a);E.c("Issuing a fetch cookie call with <a =
href=3D'"+c+"'>"+c+"</a>");document.write("<script src =3D =
'"+c+"'><\/script>")};G.prototype.i=3Dfunction(){document.cookie=3Dthis.d=
+"Good";var b=3Dthis.h(this.d),a=3Db=3D=3D"Good";if(a){var =
c=3Dthis.k(-1);=0A=
document.cookie=3Dthis.d+"; expires=3D"+c.toGMTString()}return =
a};G.prototype.m=3Dfunction(){var =
b=3Dthis.h(this.f);if(b!=3Dnull)E.c("Read first party cookie: "+b);else =
E.e("No first party cookie found");return =
b};G.prototype.h=3Dfunction(b){var =
a=3Ddocument.cookie,c=3Da.indexOf(b),e=3Dnull;if(c!=3D-1){var =
d=3Dc+b.length,g=3Da.indexOf(";",d);if(g=3D=3D-1)g=3Da.length;e=3Da.subst=
ring(d,g)}return =
e};G.prototype.n=3Dfunction(){if(this.a=3D=3Dnull)E.e("Skipping cookie =
creation: no cookie info");else if(this.b=3D=3Dnull)E.o("Skipping cookie =
creation: no cookie value");=0A=
else{var b=3Dnew Date;b.setTime(1000*this.a._expires_);var =
a=3Dthis.a._domain_,c=3Dthis.f+this.b+"; expires=3D"+b.toGMTString()+"; =
path=3D"+this.a._path_+"; domain=3D."+a;document.cookie=3Dc;E.c("Written =
cookie: =
"+c)}};window.IDICommon=3Dwindow.IDICommon||(function(){return{getHash:fu=
nction(b){var a=3Db.indexOf("#")+1;return =
a?b.substr(a):""},htmlEscape:function(b){return/[&<>\"]/.test(b)?b.replac=
e(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\"/g,"=
&quot;"):b},makeIframeTag:function(b){var a=3D"<iframe";for(var c in =
b)a+=3D" "+c+'=3D"'+IDICommon.htmlEscape(b[c])+'"';return =
a+"></iframe>"},getIframe:function(b,a){try{return =
b.frames[a]}catch(c){return null}},makeIframeNode:function(b){var =
a=3Ddocument.createElement("iframe");=0A=
for(var c in b)a.setAttribute(c,b[c]);return =
a},appendHiddenIframe:function(b,a){setTimeout(function(){document.body.a=
ppendChild(IDICommon.makeIframeNode({id:b,name:b,src:a,width:0,height:0,f=
rameBorder:0}))},0)},writeHiddenIframe:function(b,a){document.write(IDICo=
mmon.makeIframeTag({id:b,name:b,src:a,width:0,height:0,frameBorder:0}))},=
splitURIComponent:function(b,a){var =
c=3D[],e=3Db.length,d=3D0;while(d<e){var =
g=3Db.substr(d,a),i=3Dg.length;if(d+i<e)for(var =
o=3D1;o<3;++o)if(g.charAt(i-o)=3D=3D"%")g=3Dg.substr(0,i-=3D=0A=
o);c.push(g);d+=3Di}return =
c},MAX_URL_LENGTH:4095,IDI_DEFAULT_POLLING_INTERVAL:1000}})();window.IDIH=
ost=3Dwindow.IDIHost||(function(){var =
b=3Dwindow.location.href.replace(/([^:\/])\/.*$/,"$1/robots.txt"),a=3D"",=
c=3D{},e=3D{},d=3D{},g=3D{},i=3D{};function o(h,k){for(var p in =
k)h[p]=3Dk[p]}function v(h,k){var p=3Dwindow.frames[h];if(p){var =
x;while(x=3DIDICommon.getIframe(p,h+"_"+c[h])){try{if(x.location.href=3D=3D=
"about:blank")break}catch(t){break}d[h]+=3DIDICommon.getHash(x.location.h=
ref);++c[h]}var =
q=3Dd[h].split("$"),y=3Dq.length-1;if(y>0){d[h]=3Dq[y];for(var =
z=3D0;z<y;++z)k(decodeURIComponent(q[z]),h)}}}function r(h){return a||=0A=
h.replace(/([^:\/]\/).*$/,"$1ig/idi_relay")}function =
m(h){window.clearInterval(i[h]);i[h]=3D0}function F(h){b=3Dh}function =
N(h){a=3Dh}function =
O(h,k,p){m(h);i[h]=3Dwindow.setInterval(function(){v(h,k)},typeof =
p=3D=3D"object"&&p.pollingInterval||IDICommon.IDI_DEFAULT_POLLING_INTERVA=
L)}function I(h,k,p){var x;if(typeof =
p=3D=3D"object")x=3Dp.moduleRelayUrl;var t=3De[h];if(isNaN(t))throw new =
Error("Invalid module id");else{var q=3Dtypeof =
x=3D=3D"string"?x:r(g[h]),y=3DencodeURIComponent(k)+"$",z=3DIDICommon.MAX=
_URL_LENGTH-1-q.length,=0A=
C=3DIDICommon.splitURIComponent(y,z),P=3DC.length;for(var =
w=3D0;w<P;++w)IDICommon.appendHiddenIframe(h+"_"+(t+w),q+"#"+C[w]);e[h]+=3D=
P}}function J(h,k,p,x,t){var =
q=3D{frameBorder:0,scrolling:"no"},y,z,C,P,w;if(typeof =
t=3D=3D"object"){y=3Dt.iframeAttrs;z=3Dt.callback;C=3Dt.userPrefs;P=3Dt.p=
ollingInterval;w=3Dt.parentDivId}if(typeof =
y=3D=3D"object")o(q,y);o(q,{id:k,name:k,src:h,width:p,height:x});c[k]=3D0=
;e[k]=3D0;d[k]=3D"";g[k]=3Dh;var Q=3D[];if(typeof =
C=3D=3D"object")for(var D in =
C)Q.push(encodeURIComponent(D)+"=3D"+encodeURIComponent(C[D]));=0A=
if(typeof =
z=3D=3D"function"){Q.push("idi_hr=3D"+encodeURIComponent(b));window.IDIHo=
st.registerListener(k,z,t)}if(Q.length){var =
K=3DQ.join("&");if(q.src.length+1+K.length>IDICommon.MAX_URL_LENGTH){K+=3D=
"$";var =
$=3Dr(h),ka=3DIDICommon.MAX_URL_LENGTH-1-$.length,aa=3DIDICommon.splitURI=
Component(K,ka),ba=3Daa.length;for(var D=3D0;D<ba;++D){var =
U=3Dk+"_"+D,ca=3D$+"#"+aa[D];if(w){var =
V=3Ddocument.getElementById(w);V.innerHTML+=3DIDICommon.makeIframeTag({id=
:U,name:U,src:ca,width:0,height:0,frameBorder:0})}else =
IDICommon.writeHiddenIframe(U,=0A=
ca)}e[k]+=3Dba;K=3D""}q.src+=3D"#"+K}if(w){var =
V=3Ddocument.getElementById(w);V.innerHTML+=3DIDICommon.makeIframeTag(q)}=
else =
document.write(IDICommon.makeIframeTag(q))}return{setHostRelayUrl:F,setMo=
duleRelayUrl:N,getModuleRelayUrl:r,registerListener:O,unregisterListener:=
m,postMessageToModule:I,createModule:J}})();function L(b){return =
b!=3Dnull?'"'+b+'"':'""'}function H(b){return typeof =
encodeURIComponent=3D=3D"function"?encodeURIComponent(b):escape(b)}functi=
on M(b,a){if(b&&a)window.google_ad_url+=3D"&"+b+"=3D"+a}function =
R(b){var a=3Dwindow,c=3DA(b),e=3Da[b];M(c,e)}function =
S(b,a){if(a)M(b,H(a))}function T(b){var =
a=3Dwindow,c=3DA(b),e=3Da[b];S(c,e)}function W(b,a){var =
c=3Dwindow,e=3DA(b),d=3Dc[b];if(e&&d&&typeof =
d=3D=3D"object")d=3Dd[a%d.length];M(e,d)}function ga(b,a){var =
c=3Db.screen,e=3Dnavigator.javaEnabled(),d=3D-a.getTimezoneOffset();if(c)=
{M("u_h",=0A=
c.height);M("u_w",c.width);M("u_ah",c.availHeight);M("u_aw",c.availWidth)=
;M("u_cd",c.colorDepth)}M("u_tz",d);M("u_his",history.length);M("u_java",=
e);if(navigator.plugins)M("u_nplug",navigator.plugins.length);if(navigato=
r.mimeTypes)M("u_nmime",navigator.mimeTypes.length)}function =
ha(b){if(!b.google_enable_first_party_cookie)return;if(E=3D=3Dnull)E=3Dne=
w B;if(b._GA_googleCookieHelper=3D=3Dnull)b._GA_googleCookieHelper=3Dnew =
G;if(!b._google_cookie_fetched){b._google_cookie_fetched=3Dtrue;b._GA_goo=
gleCookieHelper.j(X(b.google_ad_client))}}=0A=
function =
X(b){if(b){b=3Db.toLowerCase();if(b.substring(0,3)!=3D"ca-")b=3D"ca-"+b}r=
eturn b}function =
ia(b){if(b){b=3Db.toLowerCase();if(b.substring(0,9)!=3D"dist-aff-")b=3D"d=
ist-aff-"+b}return b}function ja(b,a){var =
c=3Ddocument.getElementById(b);c.style.height=3Da+"px"}function =
la(b,a,c){window.clearTimeout(c);var =
e=3D/^google_resize_flash_ad_idi\((\d+)\)/,d=3Db.match(e);if(d)ja(a,d[1])=
}function =
ma(b,a,c,e){c=3Dc.substring(0,2000);c=3Dc.replace(/%\w?$/,"");if((b.googl=
e_ad_output=3D=3D"js"||b.google_ad_output=3D=3D"json_html")&&(b.google_ad=
_request_done||=0A=
b.google_radlink_request_done))a.write('<script =
language=3D"JavaScript1.1" src=3D'+L(c)+"><\/script>");else =
if(b.google_ad_output=3D=3D"html"){if(b.name!=3D"google_ads_frame"){if(e!=
=3Dnull)a.write('<div =
id=3D"'+e+'">');if(na(b.google_ad_output,b.google_ad_client)){IDIHost.set=
ModuleRelayUrl("http://pagead2.googlesyndication.com/pagead/idi_relay.htm=
l");var =
d=3D0;if(b.google_num_0ad_slots)d+=3Db.google_num_0ad_slots;if(b.google_n=
um_ad_slots)d+=3Db.google_num_ad_slots;if(b.google_num_sdo_slots)d+=3Db.g=
oogle_num_sdo_slots;=0A=
var g=3D"google_inline_div"+d,i=3D"<div id=3D"+L(g)+' =
style=3D"position:relative;width:'+b.google_ad_width+'px"></div><div =
style=3D"position:relative;width:'+b.google_ad_width+"px;height:"+b.googl=
e_ad_height+'px;z-index:-1"></div>';a.write(i);var =
o=3D"google_frame"+d,v=3Db.setTimeout(function(){IDIHost.unregisterListen=
er(o)},5000);IDIHost.createModule(c,o,b.google_ad_width,b.google_ad_heigh=
t,{callback:function(r,m){la(r,m,v)},pollingInterval:500,iframeAttrs:{sty=
le:"position: absolute;left:0px",marginWidth:"0",=0A=
marginHeight:"0",vspace:"0",hspace:"0",allowTransparency:"true"},parentDi=
vId:g})}else{a.write('<iframe name=3D"google_ads_frame" =
width=3D'+L(b.google_ad_width)+" height=3D"+L(b.google_ad_height)+" =
frameborder=3D"+L(b.google_ad_frameborder)+" src=3D"+L(c)+' =
marginwidth=3D"0" marginheight=3D"0" vspace=3D"0" hspace=3D"0" =
allowtransparency=3D"true" =
scrolling=3D"no">');a.write("</iframe>")}if(e!=3Dnull)a.write("</div>")}}=
else if(b.google_ad_output=3D=3D"textlink")a.write('<script =
language=3D"JavaScript1.1" src=3D'+L(c)+"><\/script>")}=0A=
function oa(b){for(var a in s)b[a]=3Dnull;for(var a in =
u){if(a=3D=3D"google_correlator")continue;b[a]=3Dnull}}function =
pa(b){if(b.google_ad_format)return =
b.google_ad_format.indexOf("_0ads")>0;return =
b.google_ad_output!=3D"html"&&b.google_num_radlinks>0}function =
Y(b){return b&&b.indexOf("_sdo")!=3D-1}function qa(){var =
b=3Dnull,a=3Dwindow,c=3Ddocument,e=3Dnew =
Date,d=3De.getTime(),g=3Da.google_ad_format;if(a.google_cpa_choice!=3Db){=
a.google_ad_url=3D"http://pagead2.googlesyndication.com/cpa/ads?";a.googl=
e_ad_url+=3D"client=3D"+escape(X(a.google_ad_client));=0A=
a.google_ad_region=3D"_google_cpa_region_";R("google_cpa_choice");if(type=
of c.characterSet!=3D"undefined")S("oe",c.characterSet);else if(typeof =
c.charset!=3D"undefined")S("oe",c.charset)}else =
if(Y(g)){a.google_ad_url=3D"http://pagead2.googlesyndication.com/pagead/s=
do?";a.google_ad_url+=3D"client=3D"+escape(ia(a.google_ad_client))}else{a=
.google_ad_url=3D"http://pagead2.googlesyndication.com/pagead/ads?";a.goo=
gle_ad_url+=3D"client=3D"+escape(X(a.google_ad_client))}R("google_ad_host=
");R("google_ad_host_tier_id");var i=3D=0A=
a.google_num_slots_by_client,o=3Da.google_num_slots_by_channel,v=3Da.goog=
le_prev_ad_formats_by_region,r=3Da.google_prev_ad_slotnames_by_region;if(=
a.google_ad_region=3D=3Db&&a.google_ad_section!=3Db)a.google_ad_region=3D=
a.google_ad_section;var =
m=3Da.google_ad_region=3D=3Db?"":a.google_ad_region;if(Y(g)){a.google_num=
_sdo_slots=3Da.google_num_sdo_slots?a.google_num_sdo_slots+1:1;if(a.googl=
e_num_sdo_slots>4)return false}else =
if(pa(a)){a.google_num_0ad_slots=3Da.google_num_0ad_slots?a.google_num_0a=
d_slots+1:1;if(a.google_num_0ad_slots>=0A=
3)return false}else =
if(a.google_cpa_choice=3D=3Db){a.google_num_ad_slots=3Da.google_num_ad_sl=
ots?a.google_num_ad_slots+1:1;if(a.google_num_slots_to_rotate){v[m]=3Db;r=
[m]=3Db;if(a.google_num_slot_to_show=3D=3Db)a.google_num_slot_to_show=3Dd=
%a.google_num_slots_to_rotate+1;if(a.google_num_slot_to_show!=3Da.google_=
num_ad_slots)return false}else =
if(a.google_num_ad_slots>6&&m=3D=3D"")return =
false}M("dt",e.getTime());R("google_language");if(a.google_country)R("goo=
gle_country");else R("google_gl");R("google_region");T("google_city");=0A=
T("google_hints");R("google_safe");R("google_encoding");R("google_last_mo=
dified_time");T("google_alternate_ad_url");R("google_alternate_color");R(=
"google_skip");R("google_targeting");var =
F=3Da.google_ad_client;if(!i[F]){i[F]=3D1;i.length+=3D1}else =
i[F]+=3D1;if(v[m])if(!Y(g)){S("prev_fmts",v[m].toLowerCase());if(i.length=
>1)M("slot",i[F])}if(r[m])S("prev_slotnames",r[m].toLowerCase());if(g&&!a=
.google_ad_slot){S("format",g.toLowerCase());if(!Y(g))v[m]=3Dv[m]?v[m]+",=
"+g:g}if(a.google_ad_slot)r[m]=3Dr[m]?r[m]+","+=0A=
a.google_ad_slot:a.google_ad_slot;R("google_max_num_ads");M("output",a.go=
ogle_ad_output);R("google_adtest");R("google_ad_callback");R("google_ad_s=
lot");T("google_correlator");if(a.google_ad_channel){T("google_ad_channel=
");var N=3D"",O=3Da.google_ad_channel.split(/[+, ]/);for(var =
I=3D0;I<O.length;I++){var J=3DO[I];if(!o[J])o[J]=3D1;else =
N+=3DJ+"+"}S("pv_ch",N)}if(a.google_enable_first_party_cookie)S("cookie",=
a._GA_googleCookieHelper.l());T("google_page_url");W("google_color_bg",d)=
;W("google_color_text",d);W("google_color_link",=0A=
d);W("google_color_url",d);W("google_color_border",d);W("google_color_lin=
e",d);if(a.google_reuse_colors)M("reuse_colors",1);else =
M("reuse_colors",0);R("google_kw_type");T("google_kw");T("google_contents=
");R("google_num_radlinks");R("google_max_radlink_len");R("google_rl_filt=
ering");R("google_rl_mode");R("google_rt");T("google_rl_dest_url");R("goo=
gle_num_radlinks_per_unit");R("google_ad_type");R("google_image_size");R(=
"google_ad_region");R("google_feedback");T("google_referrer_url");T("goog=
le_page_location");=0A=
M("frm",a.google_iframing);R("google_bid");R("google_cust_age");R("google=
_cust_gender");R("google_cust_interests");R("google_cust_id");R("google_c=
ust_job");R("google_cust_u_url");R("google_cust_l");R("google_cust_lh");R=
("google_cust_ch");R("google_ed");T("google_ui_features");T("google_only_=
ads_with_video");T("google_disable_video_autoplay");if(ra(a,c)&&c.body){v=
ar =
h=3Dc.body.scrollHeight,k=3Dc.body.clientHeight;if(k&&h)S("cc",Math.round=
(k*100/h))}da();M("ga_vid",a.gaGlobal.vid);M("ga_sid",a.gaGlobal.sid);=0A=
M("ga_hid",a.gaGlobal.hid);M("ga_fc",a.gaGlobal.from_cookie);T("google_an=
alytics_uacct");R("google_ad_override");R("google_flash_version");ga(a,e)=
;return true}function sa(){var =
b=3Dwindow,a=3Ddocument;ha(b);if(!qa())return;ma(b,a,b.google_ad_url,null=
);oa(b)}function ta(){sa();return true}function ra(b,a){return =
b.top.location=3D=3Da.location}function ua(b,a){var =
c=3Da.documentElement;if(ra(b,a))return =
false;if(b.google_ad_width&&b.google_ad_height){var =
e=3D1,d=3D1;if(b.innerHeight){e=3Db.innerWidth;d=3Db.innerHeight}else =
if(c&&=0A=
c.clientHeight){e=3Dc.clientWidth;d=3Dc.clientHeight}else =
if(a.body){e=3Da.body.clientWidth;d=3Da.body.clientHeight}if(d>2*b.google=
_ad_height||e>2*b.google_ad_width)return false}return true}function =
va(b){var =
a=3Dwindow,c=3Dnull,e=3Da.onerror;a.onerror=3Db;if(a.google_ad_frameborde=
r=3D=3Dc)a.google_ad_frameborder=3D0;if(a.google_ad_output=3D=3Dc)a.googl=
e_ad_output=3D"html";if(Y(a.google_ad_format)){var =
d=3Da.google_ad_format.match(/^(\d+)x(\d+)_.*/);if(d){a.google_ad_width=3D=
parseInt(d[1],10);a.google_ad_height=3DparseInt(d[2],10);=0A=
a.google_ad_output=3D"html"}}if(a.google_ad_format=3D=3Dc&&a.google_ad_ou=
tput=3D=3D"html")a.google_ad_format=3Da.google_ad_width+"x"+a.google_ad_h=
eight;wa(a,document);if(a.google_num_slots_by_channel=3D=3Dc)a.google_num=
_slots_by_channel=3D[];if(a.google_num_slots_by_client=3D=3Dc)a.google_nu=
m_slots_by_client=3D[];if(a.google_prev_ad_formats_by_region=3D=3Dc)a.goo=
gle_prev_ad_formats_by_region=3D[];if(a.google_prev_ad_slotnames_by_regio=
n=3D=3Dc)a.google_prev_ad_slotnames_by_region=3D[];if(a.google_correlator=
=3D=3Dc)a.google_correlator=3D(new Date).getTime();=0A=
if(a.google_adslot_loaded=3D=3Dc)a.google_adslot_loaded=3D{};if(a.google_=
adContentsBySlot=3D=3Dc)a.google_adContentsBySlot=3D{};if(a.google_flash_=
version=3D=3Dc)a.google_flash_version=3Dxa();a.onerror=3De}function =
ya(b){if(b in Z)return Z[b];return =
Z[b]=3Dnavigator.userAgent.toLowerCase().indexOf(b)!=3D-1}var =
Z=3D{};function na(b,a){if(b!=3D"html")return false;var =
c=3D{};c["ca-pub-7027491298716603"]=3Dtrue;c["ca-pub-8344185808443527"]=3D=
true;c["ca-google"]=3Dtrue;return c[X(a)]!=3Dnull}function za(b){var =
a=3D{},c=3Db.split("?"),e=3Dc[c.length-=0A=
1].split("&");for(var d=3D0;d<e.length;d++){var =
g=3De[d].split("=3D");if(g[0])try{a[g[0].toLowerCase()]=3Dg.length>1?(win=
dow.decodeURIComponent?decodeURIComponent(g[1].replace(/\+/g," =
")):unescape(g[1])):""}catch(i){}}return a}function Aa(){var =
b=3Dwindow,a=3Dza(document.URL);if(a.google_ad_override){b.google_ad_over=
ride=3Da.google_ad_override;b.google_adtest=3D"on"}}function =
xa(){if(navigator.plugins&&navigator.mimeTypes.length){var =
b=3Dnavigator.plugins["Shockwave Flash"];if(b&&b.description)return =
b.description.replace(/([a-zA-Z]|\s)+/,=0A=
"").replace(/(\s)+r/,".")}else =
if(navigator.userAgent&&navigator.userAgent.indexOf("Windows =
CE")>=3D0){var a=3D3,c=3D1;while(c)try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+(a+1));a++}catch(e){c=3Dnu=
ll}return a.toString()}else if(ya("msie")&&!window.opera){var =
c=3Dnull;try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(e){var =
a=3D0;try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");a=3D6;c.AllowScriptAcces=
s=3D"always"}catch(e){if(a=3D=3D6)return a.toString()}try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}}if(c!=3D=0A=
null){var a=3Dc.GetVariable("$version").split(" ")[1];return =
a.replace(/,/g,".")}}return"0"}function Ba(b,a){for(var c in =
a)b["google_"+c]=3Da[c]}function Ca(b,a){if(!a)return b.location;return =
b.referrer}function =
Da(b,a){if(!a&&b.google_referrer_url=3D=3Dnull)return"0";else =
if(a&&b.google_referrer_url=3D=3Dnull)return"1";else =
if(!a&&b.google_referrer_url!=3Dnull)return"2";else =
if(a&&b.google_referrer_url!=3Dnull)return"3";return"4"}function =
Ea(b,a,c,e){b.page_url=3DCa(c,e);b.page_location=3Dnull}function =
Fa(b,a,c,e){b.page_url=3D=0A=
a.google_page_url;b.page_location=3DCa(c,e)||"EMPTY"}function =
Ga(b,a){var =
c=3D{},e=3Dua(b,a);c.iframing=3DDa(b,e);if(!(!b.google_page_url))Fa(c,b,a=
,e);else =
Ea(c,b,a,e);c.last_modified_time=3Da.location=3D=3Dc.page_url?Date.parse(=
a.lastModified)/1000:null;c.referrer_url=3De?b.google_referrer_url:(b.goo=
gle_page_url&&b.google_referrer_url?b.google_referrer_url:a.referrer);ret=
urn c}function Ha(b){var =
a=3D{},c=3Db.URL.substring(b.URL.lastIndexOf("http"));a.iframing=3Dnull;a=
.page_url=3Dc;a.page_location=3Db.location;a.last_modified_time=3D=0A=
null;a.referrer_url=3Dc;return a}function wa(b,a){var =
c;c=3Db.google_page_url=3D=3Dnull&&Ia[a.domain]?Ha(a):Ga(b,a);Ba(b,c)}var=
 Ia=3D{};Ia["ad.yieldmanager.com"]=3Dtrue;Aa();va(ta);sa();=0A=
})()=0A=

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://s9.addthis.com/js/widget.php?v=10

var  addthis_url   =3D '';=0A=
var  addthis_title =3D '';=0A=
=0A=
function addthis_click(obj, str){=0A=
=0A=
 var aturl  =3D 'http://www.addthis.com/bookmark.php';=0A=
 aturl +=3D '?v=3D10';=0A=
 aturl +=3D '&pub=3D'+addthis_pub;=0A=
 aturl +=3D '&url=3D'+encodeURIComponent(addthis_url);=0A=
 aturl +=3D '&title=3D'+encodeURIComponent(addthis_title);=0A=
=0A=
 =
window.open(aturl,'addthis','scrollbars=3Dyes,menubar=3Dno,width=3D620,he=
ight=3D520,resizable=3Dyes,toolbar=3Dno,location=3Dno,status=3Dno,screenX=
=3D200,screenY=3D100,left=3D200,top=3D100');=0A=
=0A=
=0A=
 return false;=0A=
}=0A=

------=_NextPart_000_0000_01C8B281.89ADE760
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.statcounter.com/counter/counter_xhtml.js

var sc_width=3Dscreen.width;var sc_height=3Dscreen.height;var =
sc_referer=3D""+document.referrer;try{sc_referer=3D""+parent.document.ref=
errer}catch(ex){sc_referer=3D""+document.referrer}var sc_os=3D"";var =
sc_title=3D"";var sc_url=3D"";var sc_unique=3D0;var sc_returning=3D0;var =
sc_returns=3D0;var sc_base_dir;var sc_error=3D0;var sc_remove=3D0;var =
sc_http_url=3D"http";var sc_link_back_start=3D"";var =
sc_link_back_end=3D"";var =
sc_security_code=3D"";if(window.sc_https){if(sc_https=3D=3D1){sc_doc_loc=3D=
''+document.location;myRE=3Dnew =
RegExp("^https","i");if(sc_doc_loc.match(myRE)){sc_http_url=3D"https"}els=
e{sc_http_url=3D"http"}}else =
sc_http_url=3D"http"}if(window.sc_partition){var =
sc_counter=3D"";if(window.sc_partition!=3D34){sc_counter=3Dsc_partition+1=
}sc_base_dir=3Dsc_http_url+"://c"+sc_counter+".statcounter.com/"}else{sc_=
base_dir=3Dsc_http_url+"://c1.statcounter.com/"}if(window.sc_text){sc_bas=
e_dir+=3D"text.php?"}else{sc_base_dir+=3D"t.php?"}if(window.sc_project){s=
c_base_dir+=3D"sc_project=3D"+sc_project}else =
if(window.usr){sc_base_dir+=3D"usr=3D"+usr}else{sc_error=3D1}if(window.sc=
_remove_link){sc_link_back_start=3D"";sc_link_back_end=3D""}else{sc_link_=
back_start=3D"<a class=3D\"statcounter\" =
href=3D\"http://www.statcounter.com\" =
target=3D\"_blank\">";sc_link_back_end=3D"<\/a>"}sc_date=3Dnew =
Date();sc_time=3Dsc_date.getTime();sc_time_difference=3D60*60*1000;sc_tit=
le=3D""+document.title;sc_url=3D""+document.location;sc_referer=3Dsc_refe=
rer.substring(0,255);sc_title=3Dsc_title.substring(0,150);sc_url=3Dsc_url=
.substring(0,150);sc_referer=3Descape(sc_referer);if(encodeURIComponent){=
sc_title=3DencodeURIComponent(sc_title)}else{sc_title=3Descape(sc_title)}=
sc_url=3Descape(sc_url);if(window.sc_security){sc_security_code=3Dsc_secu=
rity}var =
sc_tracking_url=3Dsc_base_dir+"&resolution=3D"+sc_width+"&h=3D"+sc_height=
+"&camefrom=3D"+sc_referer+"&u=3D"+sc_url+"&t=3D"+sc_title+"&java=3D1&sec=
urity=3D"+sc_security_code+"&sc_random=3D"+Math.random();if(window.sc_par=
tition){if(window.sc_project){if((sc_project=3D=3D3512438)||(sc_project=3D=
=3D3512576)||(sc_project=3D=3D3512643)||(sc_project=3D=3D3512646)||(sc_pr=
oject=3D=3D3512649)||(sc_project=3D=3D3512653)||(sc_project=3D=3D3512659)=
){sc_remove=3D1}}}if(sc_error=3D=3D1){document.writeln("Code corrupted. =
Insert fresh copy.")}else if(sc_remove=3D=3D1){}else =
if(window.sc_invisible){if(window.sc_invisible=3D=3D1){if(window.sc_call)=
{sc_call++}else{sc_call=3D1}eval("var sc_img"+sc_call+" =3D new =
Image();sc_img"+sc_call+".src =3D =
\""+sc_tracking_url+"\"")}else{document.writeln("<div =
class=3D\"statcounter\">"+sc_link_back_start+"<img =
src=3D\""+sc_tracking_url+"\" alt=3D\"StatCounter - Free Web Tracker and =
Counter\" BORDER=3D\"0\">"+sc_link_back_end+"</div>")}}else =
if(window.sc_text){document.writeln('<scr'+'ipt =
language=3D"JavaScript"'+' =
src=3D'+sc_tracking_url+"&text=3D"+sc_text+'></scr'+'ipt>')}else{document=
.writeln("<div class=3D\"statcounter\">"+sc_link_back_start+"<img =
src=3D\""+sc_tracking_url+"\" alt=3D\"StatCounter - Free Web Tracker and =
Counter\" =
border=3D\"0\">"+sc_link_back_end+"</div>")}if(window.sc_click_stat){if(w=
indow.sc_click_stat=3D=3D1){if(clickstat_done!=3D1){var =
clickstat_done=3D1;var clickstat_project=3Dwindow.sc_project;var =
clickstat_security=3Dwindow.sc_security_code;var =
dlext=3D"7z|aac|avi|csv|doc|exe|flv|gif|gz|jpe?g|js|mp(3|4|e?g)|mov|pdf|p=
hps|png|ppt|rar|sit|tar|torrent|txt|wma|wmv|xls|xml|zip";if(typeof(window=
.sc_download_type)=3D=3D'string')dlext=3Dwindow.sc_download_type;var =
ltype=3D"https?|ftp|telnet|ssh|ssl|mailto";var dl=3Dnew =
RegExp("\\.("+dlext+")$","i");var lnk=3Dnew =
RegExp("^("+ltype+"):","i");var =
host_name=3Dlocation.host.replace(/^www\./i,"");var =
host_splitted=3Dhost_name.split(".");var =
domain=3Dhost_splitted.pop();domain=3Dhost_splitted.pop()+"."+domain;var =
lnklocal_mask=3D"^https?:\/\/(.*)"+domain;var lnklocal=3Dnew =
RegExp(lnklocal_mask,"i");if(document.getElementsByTagName){var =
anchors=3Ddocument.getElementsByTagName('a');for(var =
i=3D0;i<anchors.length;i++){var =
anchor=3Danchors[i];if(anchor.onmousedown){var =
original_click=3Danchor.onmousedown;var =
s=3Doriginal_click.toString().split("\n").join(" ");var =
bs=3Ds.indexOf('{');var head=3Ds.substr(0,bs);var =
ps=3Dhead.indexOf('(');var pe=3Dhead.indexOf(')');var =
params=3Dhead.substring(ps+1,pe);var plist=3Dparams.split(",");var =
body=3Ds.substr(bs+1,s.length-bs-2);var =
insert=3D"sc_clickstat_call(this);";var final_body=3Dinsert+body;var =
ev_head=3D"new Function (";var ev_params=3D"";var ev_sep=3D"";for(var =
sc_i=3D0;sc_i<plist.length;sc_i++){ev_params=3Dev_sep+"'"+plist[sc_i]+"'"=
;ev_sep=3D","}if(ev_sep=3D=3D","){ev_params+=3D","}var =
ev_foot=3D"final_body);";var =
ev_final=3Dev_head+ev_params+ev_foot;anchor.onmousedown=3Deval(ev_final)}=
else{anchor.onmousedown=3Dnew =
Function("event","sc_clickstat_call(this);return true;")}}}function =
sc_none(){return}function sc_clickstat_call(adata){if(adata){var =
clickmode=3D0;if(lnk.test(adata)){if((lnklocal.test(adata))){if(dl.test(a=
data))clickmode=3D1}else{clickmode=3D2}}if(clickmode!=3D0){var =
sc_link=3Descape(adata);if(sc_link.length>0){var =
sc_req=3Dsc_http_url+"://c"+sc_counter+".statcounter.com/click.gif?sc_pro=
ject=3D"+clickstat_project+"&security=3D"+clickstat_security+"&c=3D"+sc_l=
ink+"&m=3D"+clickmode+"&rand=3D"+Math.random();var sc_req_image=3Dnew =
Image(1,1);sc_req_image.onload=3Dsc_none;sc_req_image.src=3Dsc_req;var =
d=3Dtypeof(window.sc_delay)!=3D"undefined"?sc_delay:250;var n=3Dnew =
Date();var t=3Dn.getTime()+d;while(n.getTime()<t)var n=3Dnew =
Date()}}}}}}}
------=_NextPart_000_0000_01C8B281.89ADE760--
