From: <Saved by Windows Internet Explorer 7>
Subject: Catering team being honored for charity work.(News) - Daily Herald (Arlington Heights, IL) - HighBeam Research
Date: Sun, 2 Dec 2007 22:57:13 -0600
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0021_01C83536.ADA18910"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198

This is a multi-part message in MIME format.

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.highbeam.com/doc/1G1-142593379.html

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD =
id=3D_ctl0_HeadMain><TITLE>Catering team being honored for charity =
work.(News) - Daily Herald (Arlington Heights, IL) - HighBeam =
Research</TITLE>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dutf-8">
<META id=3D_ctl0_MetaKeywords=20
content=3D"Catering team being honored for charity work.(News) Daily =
Herald (Arlington Heights, IL) news news/local interest HighBeam =
Research"=20
name=3Dkeywords>
<META id=3D_ctl0_MetaDescription=20
content=3D"Daily Herald (Arlington Heights, IL) - Catering team being =
honored for charity work.(News) - From the HighBeam Research Archive"=20
name=3Ddescription><LINK title=3D"HighBeam Research" =
href=3D"/searchprovider.xml"=20
type=3Dapplication/opensearchdescription+xml rel=3Dsearch><LINK =
media=3Dall=20
href=3D"http://www.highbeam.com/StyleSheets/base.css" type=3Dtext/css=20
rel=3Dstylesheet><LINK media=3Dprint=20
href=3D"http://www.highbeam.com/StyleSheets/print.css" type=3Dtext/css=20
rel=3Dstylesheet><!--[if IE 7]><LINK=20
href=3D"http://www.highbeam.com/StyleSheets/hacks/ie7.css" =
type=3Dtext/css=20
rel=3Dstylesheet><![endif]--><!--[if IE 6]>
<link href=3D"/StyleSheets/hacks/ie6.css" rel=3D"stylesheet" =
type=3D"text/css" />
<![endif]--><LINK media=3Dall=20
href=3D"http://www.highbeam.com/StyleSheets/article27c.css" =
type=3Dtext/css=20
rel=3Dstylesheet><LINK title=3D"size: medium"=20
href=3D"http://www.highbeam.com/StyleSheets/alt.size.m.css" =
type=3Dtext/css=20
rel=3Dstylesheet>
<SCRIPT src=3D"http://www.highbeam.com/javascript/minmax.js"=20
type=3Dtext/javascript></SCRIPT>

<META content=3D"MSHTML 6.00.6000.16544" name=3DGENERATOR></HEAD>
<BODY id=3D_ctl0_body1>
<FORM id=3DaspnetForm name=3DaspnetForm method=3Dpost><INPUT =
id=3D__EVENTTARGET=20
type=3Dhidden name=3D__EVENTTARGET> <INPUT id=3D__EVENTARGUMENT =
type=3Dhidden=20
name=3D__EVENTARGUMENT>
<SCRIPT type=3Dtext/javascript>
<!--
var theForm =3D document.forms['aspnetForm'];
if (!theForm) {
theForm =3D document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() !=3D false)) {
theForm.__EVENTTARGET.value =3D eventTarget;
theForm.__EVENTARGUMENT.value =3D eventArgument;
theForm.submit();
}
}
// -->
</SCRIPT>

<SCRIPT=20
src=3D"http://www.highbeam.com/WebResource.axd?d=3Dm9grAHzSEBph2KyJ2jDCVQ=
2&amp;t=3D633298513823750000"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT language=3Djavascript type=3Dtext/javascript>function =
ShowHide(){document.getElementById('_ctl0_ph_ArticleMain_dtCopyright').st=
yle.display=3D'none';document.getElementById('_ctl0_ph_ArticleMain_ddCCC'=
).style.display=3D'';}</SCRIPT>

<SCRIPT=20
src=3D"http://www.highbeam.com/WebResource.axd?d=3DcZzpAHylmjcDvUSokaNIiD=
wH4ImOjFt5BeoPqYikd_NaMwAuq9JNpdpXwD5aJnXAqnmjdIcRiNtvXe8kYuJQ-nHpDezjwY-=
VaM3Q4nIGdQ41&amp;t=3D633301181092656250"=20
type=3Dtext/javascript></SCRIPT>
=20
<DIV id=3Dwidth>
<DIV id=3Dminwidth>
<DIV id=3Dcontainer><!-- HEADER -->
<DIV class=3Dclearit id=3Dheader>
<DIV class=3DarticleHeader>
<SCRIPT language=3Djavascript type=3Dtext/javascript>
var tancc=3D'sq=3D:news:local interest';
var tcdacmd=3D'dt';
</SCRIPT>

<SCRIPT language=3Djavascript =
src=3D"http://an.tacoda.net/an/12146/slf.js"=20
type=3Dtext/javascript></SCRIPT>

<DIV class=3DlogoBlock><A class=3Dlogo =
href=3D"http://www.highbeam.com/"><IMG=20
title=3D"HighBeam Research - Newspaper archives and journal articles"=20
alt=3D"HighBeam Research - Newspaper archives and journal articles"=20
src=3D"http://www.highbeam.com/img/layout/logo_highbeam_cream.gif"></A> =
</DIV>
<DIV class=3DarticleSearch><B id=3Dfingerprint>3,000 publications at =
your=20
fingertips: </B><BR><INPUT class=3DsearchInput=20
onkeypress=3D"return =
clickButton(event,'_ctl0_Header_SearchCoreControl_btnSubmit')"=20
id=3D_ctl0_Header_SearchCoreControl_SearchText=20
name=3D_ctl0:Header:SearchCoreControl:SearchText> <INPUT =
language=3Djavascript id=3D_ctl0_Header_SearchCoreControl_btnSubmit =
style=3D"DISPLAY: none" =
onclick=3D'javascript:WebForm_DoPostBackWithOptions(new =
WebForm_PostBackOptions("_ctl0:Header:SearchCoreControl:btnSubmit", "", =
true, "_ctl0_Header_SearchCoreControlValidationGroup", "", false, =
false))' type=3Dsubmit name=3D_ctl0:Header:SearchCoreControl:btnSubmit>=20
<A href=3D"http://www.highbeam.com/doc/1G1-142593379.html#"><IMG=20
id=3D_ctl0_Header_SearchCoreControl_SearchButton=20
title=3D"Research articles at HighBeam"=20
onclick=3D"var =
s=3Ds_gi('highbeamcom');s.linkTrackVars=3D'prop34';s.prop34=3D'SearchBoxT=
opC';s.tl(this,'o','SearchBoxTopC');__doPostBack('_ctl0:Header:SearchCore=
Control:btnSubmit','')"=20
alt=3D"Research articles at HighBeam"=20
src=3D"http://www.highbeam.com/img/btn_research_org.gif" align=3Dtop=20
CssClass=3D"searchBtn"></A>
<SCRIPT language=3DJavaScript type=3Dtext/javascript>
function clickButton(e, buttonid){=20
  var evt =3D e ? e : window.event;
  var bt =3D document.getElementById(buttonid);
  if (bt){=20
  if (evt.keyCode =3D=3D 13){=20
bt.click();=20
return false;=20
  }=20
  }=20
}
</SCRIPT>
 </DIV>
<DIV class=3D"login bold">
<DIV class=3DloginTools><SPAN id=3D_ctl0_Header_LabelWelcome>Hello, Bob. =
You are a=20
Basic Member. </SPAN><A =
href=3D"http://www.highbeam.com/reg/logout.asp?">Log=20
out</A> </DIV></DIV>
<DIV class=3DheaderLinks><SPAN class=3Dnobr><A=20
href=3D"http://www.highbeam.com/reg/reg2.aspx?origurl=3Dhttp%3a%2f%2fwww.=
highbeam.com%2fFUNNEL%2fRound27%2fMode27c%2fdoc.aspx%3fdocid%3d1G1%3a1425=
93379">Become=20
a Full Member</A> </SPAN>| <SPAN class=3Dnobr><A=20
id=3D_ctl0_Header_lnkMemberBenefitsBasic=20
onclick=3D"var =
s=3Ds_gi('highbeamcom');s.linkTrackVars=3D'prop34';s.prop34=3D'MemberBene=
fitsC';s.tl(this,'o','MemberBenefitsC');return true;"=20
href=3D"http://www.highbeam.com/help/memberOptions.hbr">Membership =
Benefits</A>=20
</SPAN>| <SPAN class=3Dnobr><A=20
href=3D"http://www.highbeam.com/myresearchcenter/account/myaccount.aspx">=
My=20
Account</A> </SPAN>| <SPAN class=3Dnobr><A=20
href=3D"http://www.highbeam.com/help/help.hbr">Help</A> =
</SPAN></DIV></DIV></DIV><!-- /HEADER --><!-- MAIN AD --><!-- OAS SETUP =
begin -->
<SCRIPT language=3Djavascript type=3Dtext/javascript>
<!--
// OAS configuration
OAS_url =3D 'http://oascentral.highbeam.com/RealMedia/ads/';
OAS_sitepage =3D  'highbeam.com/articles/news';
OAS_listpos =3D 'Right';
OAS_query =3D 'cat=3Dlocal interest&';
OAS_target =3D '_top';
//end of configuration
OAS_version =3D 10;
OAS_rn =3D '001234567890'; OAS_rns =3D '1234567890';
OAS_rn =3D new String (Math.random()); OAS_rns =3D OAS_rn.substring (2, =
11);
function OAS_NORMAL(pos)=20
{
  document.write('<A HREF=3D"' + OAS_url + 'click_nx.ads/' + =
OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + '?' + =
OAS_query + '" TARGET=3D' + OAS_target + '>');
  document.write('<IMG SRC=3D"' + OAS_url + 'adstream_nx.ads/' + =
OAS_sitepage + '/1' + OAS_rns + '@' + OAS_listpos + '!' + pos + '?' + =
OAS_query + '" BORDER=3D0></A>');
}
//-->
</SCRIPT>

<SCRIPT language=3Djavascript type=3Dtext/javascript>
<!--
OAS_version =3D 11;
if (navigator.userAgent.indexOf('Mozilla/3') !=3D -1 || =
navigator.userAgent.indexOf('Mozilla/4.0 WebTV') !=3D -1)
  OAS_version =3D 10;
if (OAS_version >=3D 11)
  document.write('<SCR' + 'IPT LANGUAGE=3DJavaScript1.1 SRC=3D"' + =
OAS_url + 'adstream_mjx.ads/' + OAS_sitepage + '/1' + OAS_rns + '@' + =
OAS_listpos + '?' + OAS_query + '"><\/script>');
//-->
</SCRIPT>

<SCRIPT language=3Djavascript type=3Dtext/javascript>
<!--
document.write("");
function OAS_AD(pos)=20
{
  if (OAS_version >=3D 11)
OAS_RICH(pos);
  else
OAS_NORMAL(pos);
}
 //-->
</SCRIPT>
<!-- OAS SETUP end --><!-- /MAIN AD -->
<DIV class=3Dclear></DIV>
<DIV id=3Dwall_page_shade></DIV><!-- Mode C -->
<TABLE id=3DcontentColContainer>
  <TBODY>
  <TR><!-- Column 1 -->
    <TD id=3DcontentCol>
      <DIV id=3Dwrapper>
      <DIV id=3DarticleArea><!-- Error messages --><!-- /Error messages =
-->
      <TABLE>
        <TBODY>
        <TR>
          <TD align=3Dleft width=3D85>
            <DIV id=3DpubLogo>
            <H2><IMG class=3Dlogo id=3DImgPubLogoNoLink=20
            title=3D"Daily Herald (Arlington Heights, IL)"=20
            alt=3D"Daily Herald (Arlington Heights, IL)"=20
            =
src=3D"http://www.highbeam.com/Aspx/GetPubLogo.aspx?pub=3DDaily+Herald+(A=
rlington+Heights%2c+IL)">=20
            </H2></DIV></TD>
          <TD>
            <H1>Catering team being honored for charity work.(News) =
</H1>
            <DL class=3Dbyline>
              <DT class=3Dfirst>From:=20
              <DD>Daily Herald (Arlington Heights, IL)=20
              <DT>Date:=20
              <DD>February 24, 2006=20
              <DT>Author:=20
              <DD>Griffin, Jake <SPAN class=3Dcpyright>| <SPAN =
class=3Dcopyright=20
              id=3D_ctl0_ph_ArticleMain_dtCopyright><A=20
              id=3D_ctl0_ph_ArticleMain_lnkCopyright=20
              onclick=3D"var =
s=3Ds_gi('highbeamcom');s.linkTrackVars=3D'prop34';s.prop34=3D'CopyrightC=
';s.tl(this,'o','CopyrightC');ShowHide();return false;"=20
              =
href=3D"http://www.highbeam.com/doc/1G1-142593379.html#">Copyright=20
              information</A></SPAN> <SPAN =
id=3D_ctl0_ph_ArticleMain_ddCCC=20
              style=3D"DISPLAY: none">COPYRIGHT 2006 Paddock =
Publications. This=20
              material is published under license from the publisher =
through the=20
              Gale Group, Farmington Hills, Michigan.&nbsp;&nbsp;All =
inquiries=20
              regarding rights should be directed to the Gale=20
              Group.</SPAN></SPAN> </DD></DL></TD></TR></TBODY></TABLE>
      <DIV id=3DarticleCopy>
      <P>Byline: Jake Griffin Daily Herald Staff Writer </P>
      <P>Anyone who's ever been to a fundraiser in Naperville where food =
and=20
      drinks are being offered has probably passed by a Belgio's =
Catering truck.=20
      </P>
      <P>The brothers in charge of the operation will be at the =
Naperville=20
      Exchange Club's "One Nation Under God" Community Breakfast March =
4, but=20
      they're being honored for their service to area charities, not for =
their=20
      tasty vittles. </P>
      <P>Tim and Tom Belgio will be given the group's Spirit of =
Naperville=20
      Award. </P>
      <P>The club's Americanism chairman, Jerry Kochurka, said the =
brothers are=20
      often ... </P>
      <DIV class=3Dallofthis>
      <P><!-- Want to read more? --><A=20
      id=3D_ctl0_ph_ArticleMain_HBRDocument_lnkCTA=20
      onclick=3D"var =
s=3Ds_gi('highbeamcom');s.linkTrackVars=3D'prop34';s.prop34=3D'CTALinkC';=
s.tl(this,'o','CTALinkC');return true;"=20
      =
href=3D"http://www.highbeam.com/reg/reg1.aspx?full=3Dyes&amp;origurl=3D/d=
oc/1G1-142593379.html">Read=20
      all of this article with a FREE trial</A> =
</P></DIV></DIV></DIV></DIV></TD><!-- /Column 1 --><!-- Column 2 -->
    <TD id=3Dsidebar vAlign=3Dtop>
      <DIV id=3Dcol2>
      <DIV id=3DadServer>
      <SCRIPT type=3Dtext/javascript>
<!--
google_ad_client =3D 'pub-1767711865744298';
google_alternate_ad_url =3D =
'http://img.highbeam.com/ads/tacoda300_hbr.htm';
google_ad_width =3D '300';
google_ad_height =3D '250';
google_ad_format =3D '300x250_as';
google_ad_type =3D "text_image";
google_ad_channel =3D '9767804750';
google_color_border =3D "FFFFFF";
google_color_link =3D "003399";
google_color_bg =3D "FFFFFF";
google_color_url =3D "003399";
google_color_text =3D "000000";
google_kw_type =3D "broad";
google_kw =3D 'Catering team being honored   charity work  News ';
//-->
</SCRIPT>

      <SCRIPT =
src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"=20
      type=3Dtext/javascript>
</SCRIPT>
      </DIV>
      <DIV id=3DadServer>
      <SCRIPT language=3DjavaScript=20
      type=3Dtext/javascript>OAS_AD( 'Right' );</SCRIPT>
      </DIV>
      <DIV class=3DclearFix></DIV></DIV></TD><!-- /Column 2 =
--></TR></TBODY></TABLE>
<DIV class=3DarticlefooterSearch align=3Dcenter><B =
id=3Dfingerprint>3,000 publications=20
at your fingertips:</B><BR><INPUT class=3DsearchInput=20
onkeypress=3D"return =
clickButton(event,'_ctl0_ph_SearchCoreControl_btnSubmit')"=20
id=3D_ctl0_ph_SearchCoreControl_SearchText=20
name=3D_ctl0:ph:SearchCoreControl:SearchText> <INPUT =
language=3Djavascript id=3D_ctl0_ph_SearchCoreControl_btnSubmit =
style=3D"DISPLAY: none" =
onclick=3D'javascript:WebForm_DoPostBackWithOptions(new =
WebForm_PostBackOptions("_ctl0:ph:SearchCoreControl:btnSubmit", "", =
true, "_ctl0_ph_SearchCoreControlValidationGroup", "", false, false))' =
type=3Dsubmit name=3D_ctl0:ph:SearchCoreControl:btnSubmit>=20
<A href=3D"http://www.highbeam.com/doc/1G1-142593379.html#"><IMG=20
id=3D_ctl0_ph_SearchCoreControl_SearchButton title=3D"Research articles =
at HighBeam"=20
onclick=3D"var =
s=3Ds_gi('highbeamcom');s.linkTrackVars=3D'prop34';s.prop34=3D'SearchBoxB=
ottomC';s.tl(this,'o','SearchBoxBottomC');__doPostBack('_ctl0:ph:SearchCo=
reControl:btnSubmit','')"=20
alt=3D"Research articles at HighBeam"=20
src=3D"http://www.highbeam.com/img/btn_research_org.gif" align=3Dtop=20
CssClass=3D"searchBtn"></A>
<SCRIPT language=3DJavaScript type=3Dtext/javascript>
function clickButton(e, buttonid){=20
  var evt =3D e ? e : window.event;
  var bt =3D document.getElementById(buttonid);
  if (bt){=20
  if (evt.keyCode =3D=3D 13){=20
bt.click();=20
return false;=20
  }=20
  }=20
}
</SCRIPT>
 </DIV>
<DIV class=3Dmin-browser-width><IMG height=3D1=20
src=3D"http://www.highbeam.com/Img/spacer.gif"></DIV><!-- areas must be =
run at server so that omnitureTracking tag is processed --><!-- BEGIN: =
footer -->
<DIV class=3Dclearit id=3Dfooter>
<HR>

<UL class=3D"clearit sub-nav">
  <LI id=3D_ctl0_Footer_categoryList_rptBasicList__ctl0_dtCategory><A=20
  id=3D_ctl0_Footer_categoryList_rptBasicList__ctl0_lnkCategory=20
  =
href=3D"http://www.highbeam.com/Academic+and+Education/categories.aspx">A=
cademic=20
  and Education</A> </LI>
  <LI id=3D_ctl0_Footer_categoryList_rptBasicList__ctl1_dtCategory><A=20
  id=3D_ctl0_Footer_categoryList_rptBasicList__ctl1_lnkCategory=20
  href=3D"http://www.highbeam.com/Business/categories.aspx">Business</A> =
</LI>
  <LI id=3D_ctl0_Footer_categoryList_rptBasicList__ctl2_dtCategory><A=20
  id=3D_ctl0_Footer_categoryList_rptBasicList__ctl2_lnkCategory=20
  =
href=3D"http://www.highbeam.com/Government/categories.aspx">Government</A=
> </LI>
  <LI id=3D_ctl0_Footer_categoryList_rptBasicList__ctl3_dtCategory><A=20
  id=3D_ctl0_Footer_categoryList_rptBasicList__ctl3_lnkCategory=20
  href=3D"http://www.highbeam.com/Health/categories.aspx">Health</A> =
</LI>
  <LI id=3D_ctl0_Footer_categoryList_rptBasicList__ctl4_dtCategory><A=20
  id=3D_ctl0_Footer_categoryList_rptBasicList__ctl4_lnkCategory=20
  =
href=3D"http://www.highbeam.com/Lifestyle+and+Personal+Interest/categorie=
s.aspx">Lifestyle=20
  and Personal Interest</A> </LI>
  <LI id=3D_ctl0_Footer_categoryList_rptBasicList__ctl5_dtCategory><A=20
  id=3D_ctl0_Footer_categoryList_rptBasicList__ctl5_lnkCategory=20
  href=3D"http://www.highbeam.com/News/categories.aspx">News</A> </LI>
  <LI id=3D_ctl0_Footer_categoryList_rptBasicList__ctl6_dtCategory><A=20
  id=3D_ctl0_Footer_categoryList_rptBasicList__ctl6_lnkCategory=20
  =
href=3D"http://www.highbeam.com/Sports+and+Leisure/categories.aspx">Sport=
s and=20
  Leisure</A> </LI>
  <LI id=3D_ctl0_Footer_categoryList_rptBasicList__ctl7_dtCategory><A=20
  id=3D_ctl0_Footer_categoryList_rptBasicList__ctl7_lnkCategory=20
  =
href=3D"http://www.highbeam.com/Technology+and+Science/categories.aspx">T=
echnology=20
  and Science</A> </LI></UL>
<P>HighBeam=E2=84=A2 Research, Inc. =C2=A9 Copyright 2007. All rights =
reserved.</P>
<UL class=3D"clearit sub-nav">
  <LI class=3Dfirst><A =
href=3D"http://www.highbeam.com/About/About.hbr">About Us</A>=20
  </LI>
  <LI><A =
href=3D"http://www.highbeam.com/mediakit/contactus.hbr">Advertise with=20
  Us</A> </LI>
  <LI><A href=3D"http://www.highbeam.com/Help/Help.hbr">Customer =
Support</A> </LI>
  <LI><A href=3D"http://www.highbeam.com/viewall/categories.aspx">Site =
Index</A>=20
  </LI>
  <LI><A =
href=3D"http://www.highbeam.com/about/privacypolicy.hbr">Privacy=20
  Policy</A> </LI>
  <LI><A =
href=3D"http://www.highbeam.com/about/termsandconditions.hbr">Terms =
&amp;=20
  Conditions</A> </LI></UL></DIV><!-- END: footer =
--></DIV></DIV></DIV><INPUT=20
id=3D__EVENTVALIDATION type=3Dhidden=20
value=3D/wEWBQKMmvXoCAKx7NnMDQL+1KjHCQLxqfRYAr/Yx/wKXAXka5tpQon8RJywj02Nb=
+f7dT4=3D=20
name=3D__EVENTVALIDATION>
<SCRIPT type=3Dtext/xml-script>
<page xmlns:script=3D"http://schemas.microsoft.com/xml-script/2005">
  <components />
</page></SCRIPT>

<SCRIPT type=3Dtext/javascript>
</SCRIPT>
 <INPUT id=3D__VIEWSTATE type=3Dhidden=20
value=3D/wEPDwUKMTE5NDkyMDI5Mw9kFgJmD2QWBAIBD2QWEAIBDxYCHgdjb250ZW50BYMBQ=
2F0ZXJpbmcgdGVhbSBiZWluZyBob25vcmVkIGZvciBjaGFyaXR5IHdvcmsuKE5ld3MpIERhaW=
x5IEhlcmFsZCAoQXJsaW5ndG9uIEhlaWdodHMsIElMKSBuZXdzIG5ld3MvbG9jYWwgaW50ZXJ=
lc3QgSGlnaEJlYW0gUmVzZWFyY2hkAgIPFgIfAAV/RGFpbHkgSGVyYWxkIChBcmxpbmd0b24g=
SGVpZ2h0cywgSUwpIC0gQ2F0ZXJpbmcgdGVhbSBiZWluZyBob25vcmVkIGZvciBjaGFyaXR5I=
HdvcmsuKE5ld3MpIC0gRnJvbSB0aGUgSGlnaEJlYW0gUmVzZWFyY2ggQXJjaGl2ZWQCAw8WAh=
4HVmlzaWJsZWhkAg4PFgIfAWdkAhgPFgIfAWhkAhoPFgIfAWhkAhsPFgIfAWhkAh0PFgIfAWh=
kAgMPZBYCZg9kFgYCAQ9kFiACAw8WAh8BaGQCBQ8WAh8BaGQCBw8WAh8BaGQCCQ8WAh8BaGQC=
Cw8WAh8BaGQCDQ8WAh8BZ2QCDw9kFgICAQ9kFghmDw9kFgIeCm9ua2V5cHJlc3MFRHJldHVyb=
iBjbGlja0J1dHRvbihldmVudCwnX2N0bDBfSGVhZGVyX1NlYXJjaENvcmVDb250cm9sX2J0bl=
N1Ym1pdCcpZAICDw8WAh4PVmFsaWRhdGlvbkdyb3VwBS1fY3RsMF9IZWFkZXJfU2VhcmNoQ29=
yZUNvbnRyb2xWYWxpZGF0aW9uR3JvdXBkZAIEDxYCHgdvbmNsaWNrBaYBdmFyIHM9c19naSgn=
aGlnaGJlYW1jb20nKTtzLmxpbmtUcmFja1ZhcnM9J3Byb3AzNCc7cy5wcm9wMzQ9J1NlYXJja=
EJveFRvcEMnO3MudGwodGhpcywnbycsJ1NlYXJjaEJveFRvcEMnKTtfX2RvUG9zdEJhY2soJ1=
9jdGwwOkhlYWRlcjpTZWFyY2hDb3JlQ29udHJvbDpidG5TdWJtaXQnLCcnKWQCBg8PFgIfAwU=
tX2N0bDBfSGVhZGVyX1NlYXJjaENvcmVDb250cm9sVmFsaWRhdGlvbkdyb3VwZGQCEQ8PFgQe=
BFRleHQFJUhlbGxvLCBCb2IuICBZb3UgYXJlIGEgQmFzaWMgTWVtYmVyLiAfAWdkZAITDxYCH=
wFnZAIVDxYCHwFoZAIXDxYCHwFoFgRmDxYCHwFoFgICAQ8WAh8EBXt2YXIgcz1zX2dpKCdoaW=
doYmVhbWNvbScpO3MubGlua1RyYWNrVmFycz0ncHJvcDM0JztzLnByb3AzND0nTWVtYmVyQmV=
uZWZpdHNDJztzLnRsKHRoaXMsJ28nLCdNZW1iZXJCZW5lZml0c0MnKTtyZXR1cm4gdHJ1ZTtk=
AgEPFgIfAWhkAhkPFgIfAWcWCAIBDxYCHwFnZAICDxYCHwFoZAIDDxYCHwFnFgICAQ8WAh8EB=
Xt2YXIgcz1zX2dpKCdoaWdoYmVhbWNvbScpO3MubGlua1RyYWNrVmFycz0ncHJvcDM0JztzLn=
Byb3AzND0nTWVtYmVyQmVuZWZpdHNDJztzLnRsKHRoaXMsJ28nLCdNZW1iZXJCZW5lZml0c0M=
nKTtyZXR1cm4gdHJ1ZTtkAgQPFgIfAWhkAhsPFgIfAWhkAh0PFgIfAWhkAiEPFgIfAWgWAgIB=
Dw8WAh8BaGRkAiMPFgIfAWgWAmYPZBYCAgEPZBYIAgEPDxYEHghDc3NDbGFzc2UeBF8hU0ICA=
mRkAgMPDxYEHwYFAm9uHwcCAmRkAgUPDxYEHwZlHwcCAmRkAgcPDxYEHwZlHwcCAmRkAgMPZB=
YOAgEPFgIfAWhkAgMPFgIfAWhkAgUPFgIfAWhkAgcPDxYCHwFnZBYSZg8WAh8BaGQCAQ8WAh8=
BZ2QCAg8WAh8BZ2QCAw8WAh8BZ2QCBA8WAh8BZxYCAgEPFgIeC18hSXRlbUNvdW50AgEWAgIB=
D2QWAmYPFQENR3JpZmZpbiwgSmFrZWQCBQ8WAh8BaGQCBg9kFgJmDxYCHwQFfXZhciBzPXNfZ=
2koJ2hpZ2hiZWFtY29tJyk7cy5saW5rVHJhY2tWYXJzPSdwcm9wMzQnO3MucHJvcDM0PSdDb3=
B5cmlnaHRDJztzLnRsKHRoaXMsJ28nLCdDb3B5cmlnaHRDJyk7U2hvd0hpZGUoKTtyZXR1cm4=
gZmFsc2U7ZAIHD2QWAmYPFgIfBQXkAUNPUFlSSUdIVCAyMDA2IFBhZGRvY2sgUHVibGljYXRp=
b25zLiBUaGlzIG1hdGVyaWFsIGlzIHB1Ymxpc2hlZCB1bmRlciBsaWNlbnNlIGZyb20gdGhlI=
HB1Ymxpc2hlciB0aHJvdWdoIHRoZSBHYWxlIEdyb3VwLCBGYXJtaW5ndG9uIEhpbGxzLCBNaW=
NoaWdhbi4mbmJzcDsmbmJzcDtBbGwgaW5xdWlyaWVzIHJlZ2FyZGluZyByaWdodHMgc2hvdWx=
kIGJlIGRpcmVjdGVkIHRvIHRoZSBHYWxlIEdyb3VwLmQCCA9kFgZmDxYCHwUFhQUgIAo8UD4g=
IEJ5bGluZTogSmFrZSBHcmlmZmluIERhaWx5IEhlcmFsZCBTdGFmZiBXcml0ZXIgIAo8L1A+I=
CAKPFA+ICBBbnlvbmUgd2hvJ3MgZXZlciBiZWVuIHRvIGEgZnVuZHJhaXNlciBpbiBOYXBlcn=
ZpbGxlIHdoZXJlICBmb29kIGFuZCBkcmlua3MgYXJlIGJlaW5nIG9mZmVyZWQgaGFzIHByb2J=
hYmx5IHBhc3NlZCBieSBhIEJlbGdpbydzICBDYXRlcmluZyB0cnVjay4gIAo8L1A+ICAKPFA+=
ICBUaGUgYnJvdGhlcnMgaW4gY2hhcmdlIG9mIHRoZSBvcGVyYXRpb24gd2lsbCBiZSBhdCB0a=
GUgTmFwZXJ2aWxsZSAgRXhjaGFuZ2UgQ2x1YidzICJPbmUgTmF0aW9uIFVuZGVyIEdvZCIgQ2=
9tbXVuaXR5ICBCcmVha2Zhc3QgTWFyY2ggNCwgYnV0IHRoZXkncmUgYmVpbmcgaG9ub3JlZCB=
mb3IgdGhlaXIgc2VydmljZSB0byAgYXJlYSBjaGFyaXRpZXMsIG5vdCBmb3IgdGhlaXIgdGFz=
dHkgdml0dGxlcy4gIAo8L1A+ICAKPFA+ICBUaW0gYW5kIFRvbSBCZWxnaW8gd2lsbCBiZSBna=
XZlbiB0aGUgZ3JvdXAncyBTcGlyaXQgb2YgIE5hcGVydmlsbGUgQXdhcmQuICAKPC9QPiAgCj=
xQPiAgVGhlIGNsdWIncyBBbWVyaWNhbmlzbSBjaGFpcm1hbiwgSmVycnkgS29jaHVya2EsIHN=
haWQgdGhlICBicm90aGVycyBhcmUgb2Z0ZW4gLi4uCjwvUD5kAgIPFgIfAWcWAgIBDxYEHgRo=
cmVmBTcvcmVnL3JlZzEuYXNweD9mdWxsPXllcyZvcmlndXJsPS9kb2MvMUcxLTE0MjU5MzM3O=
S5odG1sHwQFbXZhciBzPXNfZ2koJ2hpZ2hiZWFtY29tJyk7cy5saW5rVHJhY2tWYXJzPSdwcm=
9wMzQnO3MucHJvcDM0PSdDVEFMaW5rQyc7cy50bCh0aGlzLCdvJywnQ1RBTGlua0MnKTtyZXR=
1cm4gdHJ1ZTtkAgQPFgIfAWhkAgkPDxYCHwFnZBYEZg8WAh8BZxYCZg8PFgIfAWdkZAICD2QW=
AmYPDxYCHwFnZGQCCw8PFgIfAWdkZAIND2QWAgIBD2QWCGYPD2QWAh8CBUByZXR1cm4gY2xpY=
2tCdXR0b24oZXZlbnQsJ19jdGwwX3BoX1NlYXJjaENvcmVDb250cm9sX2J0blN1Ym1pdCcpZA=
ICDw8WAh8DBSlfY3RsMF9waF9TZWFyY2hDb3JlQ29udHJvbFZhbGlkYXRpb25Hcm91cGRkAgQ=
PFgIfBAWoAXZhciBzPXNfZ2koJ2hpZ2hiZWFtY29tJyk7cy5saW5rVHJhY2tWYXJzPSdwcm9w=
MzQnO3MucHJvcDM0PSdTZWFyY2hCb3hCb3R0b21DJztzLnRsKHRoaXMsJ28nLCdTZWFyY2hCb=
3hCb3R0b21DJyk7X19kb1Bvc3RCYWNrKCdfY3RsMDpwaDpTZWFyY2hDb3JlQ29udHJvbDpidG=
5TdWJtaXQnLCcnKWQCBg8PFgIfAwUpX2N0bDBfcGhfU2VhcmNoQ29yZUNvbnRyb2xWYWxpZGF=
0aW9uR3JvdXBkZAIFD2QWBmYPZBYCAgIPFgIfAWcWAgIBDxYCHwgCCBYQZg9kFgICAQ9kFgJm=
DxYEHwkFJy9BY2FkZW1pYythbmQrRWR1Y2F0aW9uL2NhdGVnb3JpZXMuYXNweB4JaW5uZXJod=
G1sBRZBY2FkZW1pYyBhbmQgRWR1Y2F0aW9uZAIBD2QWAgIBD2QWAmYPFgQfCQUZL0J1c2luZX=
NzL2NhdGVnb3JpZXMuYXNweB8KBQhCdXNpbmVzc2QCAg9kFgICAQ9kFgJmDxYEHwkFGy9Hb3Z=
lcm5tZW50L2NhdGVnb3JpZXMuYXNweB8KBQpHb3Zlcm5tZW50ZAIDD2QWAgIBD2QWAmYPFgQf=
CQUXL0hlYWx0aC9jYXRlZ29yaWVzLmFzcHgfCgUGSGVhbHRoZAIED2QWAgIBD2QWAmYPFgQfC=
QUwL0xpZmVzdHlsZSthbmQrUGVyc29uYWwrSW50ZXJlc3QvY2F0ZWdvcmllcy5hc3B4HwoFH0=
xpZmVzdHlsZSBhbmQgUGVyc29uYWwgSW50ZXJlc3RkAgUPZBYCAgEPZBYCZg8WBB8JBRUvTmV=
3cy9jYXRlZ29yaWVzLmFzcHgfCgUETmV3c2QCBg9kFgICAQ9kFgJmDxYEHwkFIy9TcG9ydHMr=
YW5kK0xlaXN1cmUvY2F0ZWdvcmllcy5hc3B4HwoFElNwb3J0cyBhbmQgTGVpc3VyZWQCBw9kF=
gICAQ9kFgJmDxYEHwkFJy9UZWNobm9sb2d5K2FuZCtTY2llbmNlL2NhdGVnb3JpZXMuYXNweB=
8KBRZUZWNobm9sb2d5IGFuZCBTY2llbmNlZAIBDxYCHwFnZAICDxYCHwFoZGQsmlOhShwYyia=
//EoX8hbNDP6XAw=3D=3D=20
name=3D__VIEWSTATE></FORM><!-- You are on Server: WEB01 --><!-- START =
ANALYTICS TRACKING --><!-- BEGIN SiteCatalyst code version: H.1. -->
<SCRIPT language=3DJavaScript><!--
/* Specify the Report Suite ID(s) to track here */
var s_account=3D"highbeamcom";
//--></SCRIPT>

<SCRIPT language=3DJavaScript=20
src=3D"http://www.highbeam.com/javascript/SiteCatalyst_s_code.js"></SCRIP=
T>

<SCRIPT language=3DJavaScript><!--
s.pageName=3D'elibrary article basic_C';=0A=
s.channel=3D'elibrary';=0A=
s.server=3D'www.highbeam.com';=0A=
s.pageType=3D'';=0A=
s.campaign=3D'lsfa_gorp';=0A=
s.prop6=3D'SortByRelevancy';=0A=
s.prop12=3D'1G1';=0A=
s.prop13=3D'news';=0A=
s.prop14=3D'news/local interest';=0A=
s.prop16=3D'BOTH';=0A=
s.prop17=3D'NEWS';=0A=
s.prop18=3D'Daily Herald (Arlington Heights, IL)';=0A=
s.prop19=3D'Mode27c_Round27';=0A=
s.eVar19=3D'Mode27c_Round27';=0A=
s.prop20=3D'LOOKSMART';=0A=
s.eVar20=3D'LOOKSMART';=0A=
s.prop33=3D'1';=0A=
s.hier1=3D'1G1,NEWS,Daily Herald (Arlington Heights- IL)';=0A=
s.hier2=3D'Basic';=0A=
s.hier3=3D'NonStudent,Family';=0A=
s.prop21=3D'1G1:142593379 - Catering team being honored for charity =
work.(News)';=0A=
s.prop22=3D'022006';=0A=
s.prop25=3D'first';=0A=
s.eVar25=3D'first';=0A=
s.eVar24=3D'36 _ 45';=0A=
s.prop24=3D'36 _ 45';=0A=
s.eVar26=3D'1G1';=0A=
s.eVar27=3D'NEWS';=0A=
s.eVar28=3D'Daily Herald (Arlington Heights, IL)';=0A=
s.linkInternalFilters=3D'javascript:,highbeam.com';=0A=
s.eVar31=3D'news';=0A=
s.eVar32=3D'news/local interest';=0A=
s.prop41=3D'1G1,NEWS,Daily Herald (Arlington Heights- IL)';=0A=
s.eVar41=3D'1G1,NEWS,Daily Herald (Arlington Heights- IL)';=0A=
s.prop42=3D'Wall:Company:0';=0A=
s.prop43=3D'Wall:Person:0';=0A=
s.prop44=3D'Wall:Ticker:0';=0A=
s.prop45=3D'Wall:Product:0';=0A=
s.prop47=3D'5050305';=0A=
s.eVar35=3D'022006';=0A=

=20
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_code=3Ds.t();if(s_code)document.write(s_code)//--></SCRIPT>

<SCRIPT language=3DJavaScript><!--
if(navigator.appVersion.indexOf('MSIE')>=3D0)document.write(unescape('%3C=
')+'\!-'+'-')
//--></SCRIPT>
<NOSCRIPT><IMG height=3D1 alt=3D""=20
src=3D"http://highbeamcom.122.2o7.net/b/ss/highbeamcom/1/H.1--NS/51546?c1=
=3D&amp;v0=3Dlsfa_gorp&amp;v20=3DLOOKSMART&amp;c20=3DLOOKSMART&amp;produc=
ts=3D&amp;purchaseID=3D&amp;g=3D%2fFUNNEL%2fRound27%2fMode27c%2fdoc.aspx&=
amp;ch=3Delibrary&amp;r=3D&amp;pageName=3Delibrary+article+basic_C&amp;ev=
ents=3D"=20
width=3D1 border=3D0></NOSCRIPT><!--/DO NOT REMOVE/--> <!-- END =
SiteCatalyst code version: H.1. --><!-- END ANALYTICS TRACKING =
--></BODY></HTML>

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.highbeam.com/img/layout/logo_highbeam_cream.gif

R0lGODlhnQAvAPcAAAAAAP/////75PRzIQBSmwJTnANUnAhXnQlYng5bnwFTmwRVnAdXnQpZng1b
nw9cnxFdoBNfoBRfoRZgoRljohtkoxxlox9npCBnpCNppSVrpidspihtpitupyxvqC5xqDFyqTR0
qjV1qjd2qzh3qzl4qzt5rD16rD98rUB8rUF9rkaAr0mCsEyEsUJ+rkWAr0R/rkqDsE2FsU+GslCH
slOJs1SKs1eMtFqOtWSUuF6RtmCStmiXuWyaum+cu3OevHSfvHagvXmivniivXqjvnukvnykvn6m
v4GnwIKowIaqwYqtw4yvw4+xxJS0xpi3x5y5yJ+7yZu5x6K+yqbAy6nCy6vDzK3EzLPJz7DHzbjM
0LbLz7rN0LvO0bzP0b/R0r7Q0cPT08XV08fW1MjX1MvZ1c3a1s7b1tHd19Ld19Pe19Xf2Nfg2dni
2dvj2t7l293k2t/m2+Hn2+Po3OXq3eTp3Obq3ejs3ert3uzu3+7w3/Hy4PDx4PPz4ff24vb14fX0
4fn34v364/z54/v44/764f765P343//64v754f754v743v333v322/733v312/rw0v702fzy1/vy
1/712//23ffqyfnszfrv0v/13Pbmw/bmxPjpyPjqyffpyPnszvTgufPgufPguvXjvvblw/blxP7v
0v7w1f7x1vHasfHasvPdtfPdtvTfufPfufTfuvTguvPfuvbivu/Up+/UqPDVqvDWqvHYre/Wq+/V
q/HYrvDXrfDXrvLZsfLasfLasvHZsfHZsv7sz+/TqPLZsv3oyP7qzP3kw/3hvvzatf3eu/zVrfzY
svvGl/vJnPvNovzQpvq9i/rAkPvDk/msc/mzffq5hfR3IfR3IvR5JvWDN/aIP/aOR/aSTfeZV/if
YPiiZvima/R0IfRyIfR1I/R3J/R5KfV7LPV/MfWANfWEOvaGPPRwIfaOVvNmI/RwOfR2QfJbIvJk
N/FPJPBGI/BDI+9AI+87JO83JO4zJO4uJO4xJO4rJO4tJKqqqv///yH5BAEAAP8ALAAAAACdAC8A
AAj/AAUIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuX
CRdVQzdggLhuzGDq3Ckg0beaQAeUW8azKMtmQYOqi2S0qUlE3JIGfea0qkhUNKXWrGa1q0dj5bRu
9UpWIzKxNaGVXWtxGdpzptjKlegMbbe5eB9GQ2stb9lj1b6FU8uwGtpkfr02Mxf0W6aF4MSmY5q4
qjJyUqkt9Cb2W2WrkaWai4sQqthpn6tG1UoUoSN1WskdMyhIj21AAw3xsd1HwB7bexrmwZLDycFB
tpPrCV65m9i+CE+dsymues1tiQzasRAhQo+BgEB0/7chgET3FQzNUCBAIMhBNRO6y6dwgokfv4a1
ekYoLJu4cQCOU51mBs2xAHs6gFcBey4IsCABHjDkBXsEFHHQGRRmyN4Lf+RVTFhSrbNIQZQo0ww4
9Nhzz4r32FNPO9MoQ5lAdTTA3g7gXbChADeMMEIODH1BoYUGnVEAexJ4wMGB7EXh109SlVOMQKY8
Aw5s18TDjz5cdrmPO+IMoE00A9XIHpACDYIBezAUZMhCQrJ3xIVHEjCEAIJQQeF3HXXI0JtvUpSM
VuJAcww1WdWUpT77NNqoPvaECZQ0NNpIwAxqoJEGGesR0OZwOeDwpiBgMIFEEqgmgcQTXFDIwxU8
rP8gAxJ3CGAkez/80YcUFDYxECFZ+CCDCjYo0QZBZATRwgs5YHHHFj7EIQAhYyRBQg9U6ODCDVXs
wQUQLLSQRB4CLLHCEkascUQaESHiHFDiXOPOO4wldc08/TjaaD/zXKOUIwKYSYACBRCsAIXojcAe
CALMkYKGFFKQBYUHZwjCH2rUmQAGFlBoQm8CsKGwhglUIZASdVIIAXtqCLAGxBR2nKELhMxxwhwg
ZHBAFnQBdQ0780Dqr7346ruPPu4MXRNcAVsKMwHoZcBeCYbIwN4CHDjtgAhYPM0eF3CkrCENcwjA
BwfsJZDDESiw54AeE1LoAAMULrCGAGh4DfMZfrD/0IYNTvTAhESZqBOvO/dseQ87kvpMD6P64sPO
OEGtA7DACyTgwOYVo4c2ASjg4cDAUxBCxugERIEHGBSKYAUZOFAYRdjsTfDBBxpUfMEdeuIaxxxc
HPC1DuwpkMQcbaxw9d1p1CnCFltIkLYTYijPHhiGoLHH3XnAMZE14gQN+ZeN1ySOPVt2yU89SteE
WtPs2SBHHHKw8aDn7KFQh/AKjCGAHisjwBUEECcCJEEgV5Ad7dojCEEQ4gp0IwARiqC3L5CAPRoY
SBCWJ4DmsccIArkgATogECdQ6AsaMUbRHKWPeLRPHOWgR4vqQQ961AMe3VjHOcihDjJV6ky/WhPU
/wTwuRIMQgTsuQAOQHC1YxWQSL1L3QKRMJA9PIA9LPgBewyAAhScAAUpcAEP/sBEAmRQIBskwAKO
5UECAEEgI+NAIATAhBNmhBLfoEe+HMWPfp2jG9RoRjKOkQ7qVAcbyBBAJYRRjBnBjwA4EgggdDTE
z5FAAFkQ28AGR8AhCSSKs6uTDKhAhSe4gEI7qAJ7CmCygejBfzUoXhLoAIcYFM8LhGjjGwUQxznW
kT0ovMgivCEvR/VDH/iQxzOMgQhECAQV5yifOgCGEIFFUgCTZA/+CFACQrCAPR2AQRbFMJAnflKB
msyQAsIACCEygAZD8EELJpABAWghQw4QHoUk8P+DNhiAPbvsJR3teJFwmK8e/MgHPeLBDm1khyDH
wExQwqGQOVDoBgPpQwBN4KCF7WEC7IGCHOgwx4F0gUI/EMgUKPQEN3gtA600wwdgdgKBIOGfT2tB
G/YkkA6wpwJzVAKFunCRvdSEHO6YR9KuESZlFGRQSXGGQvaABCIIYYACCcQSrOqkJlj1CYQYmQIW
wIAJgKAIehDAG4hAhCEQFW9CKIIQzJAHI0ywCHglwhK2wByB+MEKPJABC2gAhCvgYSDJEmwOtlCF
GrAgB2Goa1u3IJAnCIEITRiEAMJwWSK8wSLMkCg6rGEMbpTvfQOBRlKkxJEkUIwBKWMBIVIjEdj/
kIMawhCINJJCUYJMIynccOZGPMAeHMghD3ZoAoW8R1uIdIMbORnIKRI1gOASxBpJIdBGSsCeDyxB
Ck2YAXsYQAeCYCEJRGACGghyhybw4AfBbJgSeAAFkAnADkzgARDCQBA1IAELBMGDEo5whCvMdiBn
IIIPeKbSJ7gsCdKqSCKESxBqBEUbIxIIIiwclNZshAsB1FABDkiQ2HWAAg0gg0AEoQIChMADc8Jm
BxTwAQTwF08XFIEHlEAQGxCgArgRiBoIEAHioslWNrIACAL1gQtgkgBv5ciHgNLbgUBpaafwCBya
oIMVnGBbSFBxQXRgADSs1Dh4MoEFpPAE5uaB/wEQgALfVhyCC7A5wgFzAHEZ7DICCMENHLBAoIBA
gC8Q4g6CEEgKJsAE4sWXI9DgRjrAkWWCvKsm3nBJDgjwTwuUVwCG4IEBHPAAMAxEC0jEABdWTGZS
k1MgdcwCBVgwkDUsoGAEWMJAdMCA+xDkBWo80qM5gghHDuTSA4AOS8i8hRVAQA4CsQPU3JCGCMOh
CGb2lEDiQAAZwAENESbETEfHgAi/zAcrjbEAkJC6OZQh0QIwQQbyAIVCp6QuNUGHMVwSu0GUgQAb
wE3fCOCABpCnYVdEwALQDIhTFhwHAplQYZ9AgBi/zFcnSN2216SADgRKBPW0AgG8oBIrUWM2LkhR
QxfmuIUraFYAgdCCFKhghoHgIQtROANB/LCFma9XAHDQwoG/UAZJckFac5iCGwZyhypM4W4CKQM5
76CFtK6Ews3NutZhEhAAOw==

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.highbeam.com/img/btn_research_org.gif

R0lGODlhQAAcANU3AP+IOP/Mq445AJFFEv/EnfFgAPrfzdVVALhKAP+SSf6XUuFaAP9zFqNBAP5m
AP9qBvxlAPhjAN9ZAKtEAP+1hNTPy+7u7v9nAujo6PXz8dfU09/f3/+OQ5lcM+C7ov+pcOmthaVO
FNmbctOjhP+8kNK1ouddAL+nmKiBZf9uDrtpM8ZPANBTAP/p2tlXAMCqm+OERP/Bl5Q7ANtYAP+R
R/////9mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADcALAAAAABAABwAAAb/wNst
YwgQYsikcslsOp9MEkUBsgiHrcBHkaB5v+CweEwuizkAG8xKJAFSF5t8Tq/b7/j8/fKASEYWBgQA
D3qGh4h6fiobBB8MiZGSiAsTGlOFk5qbcwsNFRQJcZykkp6gCaWqiaehq696ral4NbW1sHW3hrK0
NXO6uDbAebx3w8G/vrufrsbHcrbK0LbJutHTwtJ2xc7D1srS38nY1M9y3N3h4NrX2eN04nfovevt
7vHu8Ot4873YufvyCfxnzka/f/niKVRHLuA2ZrPSsaNWDV+2hfwgItt4cGOpVjQ8BmvFQSQsBxKY
ARhlslQEFjIuMWDZchMEEwg6bPBQoEAEPggOakZyACECTgEnLGAQwYLFgRlQo0qdSrWq1atUXRxY
MUEACgxCMJRQEUKG2bNo06pdy7btWgEDOrwAeyMIADs=

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://www.highbeam.com/Aspx/GetPubLogo.aspx?pub=Daily+Herald+(Arlington+Heights%2c+IL)

R0lGODlhSwAQAIcAADNmmTRnmTVnmjVomjZomzlqnDprnTxtnT1unj5un0Bwn0FwoEFxoEJxoUV0
okd1o0h2o0l3pEp3pUx5pVF8qFF9qFJ9qVV/qliCq12FrmCIr2GJsGWLsmWMsmeNs2iOs2uQtW6S
t3CUt3GVuHWXunWYunaYu3iau3qbvXydvX2dvn2evn6ev4Cgv4GhwIOiwYWjwoelw4mmxIuoxY2q
xo6qx5Csx5OuyZWwypawy5myzJmzzJu0zZ62z5+3z6G40KS70aW70qW80qi+06m/1Kq/1a7C17DE
17HF2LfJ27vM3bzN3b3N3r7O37/P38DQ38HQ4MLR4cTT4cXT4sXU4sfV48jW48nX5MrX5cvY5czZ
5c3Z5s3a5s7a59Dc59Hd6NLd6dTf6dXf6tbg69ji69ni7Nnj7Nrj7dvk7d3l7t3m7t7m79/n7+Ho
8OHp8OTr8eXr8uXs8uft8+ju8+nu9Orv9evw9ezx9e3x9u3y9u7y9/H0+PH1+PL1+fP2+fT3+fX3
+vX4+vb4+/f5+/n6/Pn7/Pr7/fv8/fz9/f39/v7+/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAABLABAA
AAj/ABcJHEiwoMGDCBMqXMiw4cAbNQRWyaAQkKA1awClWcNGSiKHA6+4AGBnYKEdAAAgGlggpUsO
CcmkHJIgZUJFNQEoWNQjJQqQA7GkvEOQTcqVA1OyWGQCgAaEhGw+sZnwSEoXi/6k7AI0KQCiBI+G
BbBCIFWBebwQzJJozNmDVK6aBfBm4J6ChBb9EEijhJa5YBepFeu17KKUPBZ9AXDDpstDdVy65DIk
ZYdFZeQeBgBn0R4AGACUaZHyissLclIO2gxWssqxhlMGCAPAx2YjmyE7BrDArAqBmQFg3dx592YA
m+cuYb3ZyWakcw3nPADgyuYjuSMjJ0EVOfCUED5w/0gJRwqADclTvki+eflQP91fFxYoIWUiOosG
pcSeUjdyPCnpIUcDAwVnwQ0gkLcAADoYIgByKYGxyEeLbJGSEpvV4UN80G1mWARUhbZfdvHBYEBd
3wmXH3kDSFbAZmgkVR8AOGx2BgPxyQGbQAgAQOBu/AFwCIDezehdilgdQl5KQYzlXHo02khAjjtu
ZsMEAERxXW58UOVGSh4QFNxwSwJgwljFARDHZjWmdEYA8a0532Z9xBfkIfodmZIhYmrGIlVAEMde
Sm0CcEYM8U1R5W45VDFiSnkUctZbi5jhJ2chkHfYZmtaFgShNtqRkm0pVTCWCHqkNMdxLj21nxiq
pmIUAxIFbZBSb0ykJAOrVjgKQAWBSNYAAA98CcAIrE75hFcpNXACQRdYsEgSKQhh7bXWzgDAgwWl
cQQUUQxhRhNQlKvIIhQ4EMYibgwyCJ+L7EDEIm+Uay8UaiwiRBGLtDFQQAA7DQoNCjwhRE9DVFlQ
RSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJo
dHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4N
Cg0KPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiID4NCjxoZWFkPjx0
aXRsZT4NCg0KPC90aXRsZT48L2hlYWQ+DQo8Ym9keT4NCjwvYm9keT4NCjwvaHRtbD4NCg==

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.highbeam.com/Img/spacer.gif

R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://highbeamcom.122.2o7.net/b/ss/highbeamcom/1/H.1--NS/51546?c1=&v0=lsfa_gorp&v20=LOOKSMART&c20=LOOKSMART&products=&purchaseID=&g=%2fFUNNEL%2fRound27%2fMode27c%2fdoc.aspx&ch=elibrary&r=&pageName=elibrary+article+basic_C&events=

R0lGODlhAgACAIAAAP///wAAACH5BAEAAAAALAAAAAACAAIAAAIChFEAOw==

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.highbeam.com/StyleSheets/base.css

* {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
FIELDSET {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
IMG {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
BODY {
	FONT-SIZE: 100.1%; BACKGROUND: #fff; COLOR: #333; FONT-FAMILY: 'arial =
unicode ms' , arial, sans-serif
}
H1 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 2px
}
H2 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 2px
}
H3 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 2px
}
H4 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 2px
}
H5 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 2px
}
H6 {
	FONT-WEIGHT: normal; MARGIN: 0px 0px 2px
}
H1 {
	FONT-SIZE: 130%; MARGIN: 8px 0px 12px; LINE-HEIGHT: 1.1
}
H2 {
	FONT-SIZE: 110%; MARGIN: 12px 0px 6px
}
H3 {
	FONT-SIZE: 95%
}
H4 {
	FONT-WEIGHT: bold; FONT-SIZE: 95%
}
H5 {
	FONT-SIZE: 80%
}
H6 {
	FONT-SIZE: 80%
}
P {
	FONT-SIZE: 75%
}
LI {
	FONT-SIZE: 75%
}
DL {
	FONT-SIZE: 75%
}
PRE {
	FONT-SIZE: 75%
}
BLOCKQUOTE {
	FONT-SIZE: 75%
}
LABEL {
	FONT-SIZE: 75%
}
LEGEND {
	FONT-SIZE: 75%
}
CAPTION {
	FONT-SIZE: 75%
}
P {
	MARGIN: 6px 0px 16px; LINE-HEIGHT: 1.2
}
PRE {
	WORD-WRAP: break-word; _white-space: pre
}
UL {
	MARGIN: 4px 0px 6px 8px; LIST-STYLE-TYPE: none
}
UL LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 10px; BACKGROUND: =
url(../img/bull_01.gif) no-repeat 0px 0.6em; PADDING-BOTTOM: 0px; =
LINE-HEIGHT: 1.4; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.bull01 LI {
	MARGIN-BOTTOM: 8px
}
.bull02 LI {
	BACKGROUND: url(../img/bull_02.gif) no-repeat 0px 0.6em
}
.nobull {
	BACKGROUND: none transparent scroll repeat 0% 0%
}
UL.nobull {
	MARGIN-LEFT: 0px
}
UL.nobull LI {
	PADDING-LEFT: 0px; BACKGROUND: none transparent scroll repeat 0% 0%; =
MARGIN-LEFT: 0px
}
UL.folders {
	MARGIN: 0px 0px 8px; LIST-STYLE-TYPE: none
}
UL.folders LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 20px; BACKGROUND: =
url(../img/ico_folder.gif) no-repeat 0px 0.2em; PADDING-BOTTOM: 5px; =
LINE-HEIGHT: 1.4; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
UL.folders LI.on {
	FONT-WEIGHT: bold; BACKGROUND: url(../img/ico_folder_open.gif) =
no-repeat 0px 0.2em; COLOR: #c63
}
OL {
	MARGIN: 4px 0px 2px 30px; _margin: 4px 0 2px 37px
}
OL LI {
=09
}
EM {
	COLOR: #730; FONT-STYLE: normal
}
TABLE {
	BORDER-COLLAPSE: collapse
}
TD {
	VERTICAL-ALIGN: top
}
PRE {
	FONT-WEIGHT: normal; FONT-SIZE: 75%; FONT-FAMILY: "Courier New", =
Courier, monospace
}
HR {
	BORDER-TOP-WIDTH: 0px; CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: =
0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px auto; COLOR: #ccc; PADDING-TOP: 0px; HEIGHT: 1px; =
BACKGROUND-COLOR: #ccc; BORDER-RIGHT-WIDTH: 0px
}
DIV.hr01 {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
url(../img/line_dot01.gif) repeat-x center 50%; PADDING-BOTTOM: 0px; =
MARGIN: 0px; PADDING-TOP: 0px; HEIGHT: 3px
}
DIV.hr01 HR {
	DISPLAY: none
}
DIV.hr02 {
	CLEAR: both; BACKGROUND: #aaa; MARGIN: 3px 0px; HEIGHT: 1px
}
DIV.hr02 HR {
	DISPLAY: none
}
A {
	outline: none
}
A:link {
	COLOR: #039
}
A:visited {
	COLOR: #609
}
A:hover {
	COLOR: #c63
}
A:active {
	COLOR: #c00
}
A:focus {
	COLOR: #c00
}
A:hover:visited {
	COLOR: #c63
}
#main-content {
	PADDING-RIGHT: 10px; PADDING-LEFT: 15px; PADDING-BOTTOM: 20px; =
PADDING-TOP: 10px
}
#width {
	MIN-WIDTH: 760px; WIDTH: 100%
}
.inputText {
	BORDER-RIGHT: #919191 1px solid; PADDING-RIGHT: 0.4em; BORDER-TOP: =
#919191 1px solid; MARGIN-TOP: 2px; PADDING-LEFT: 0.4em; FONT-SIZE: 95%; =
BACKGROUND: url(../img/bg_form_input2.gif) #fff no-repeat 0px 0px; =
PADDING-BOTTOM: 0.1em; BORDER-LEFT: #919191 1px solid; PADDING-TOP: =
0.2em; BORDER-BOTTOM: #919191 1px solid; HEIGHT: 1.15em
}
.form {
	WIDTH: 600px
}
.form DIV {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: 1px =
5px; PADDING-TOP: 2px
}
.form DIV LABEL {
	PADDING-RIGHT: 4px; DISPLAY: block; PADDING-LEFT: 4px; FONT-SIZE: 12px; =
FLOAT: left; PADDING-BOTTOM: 4px; WIDTH: 125px; PADDING-TOP: 4px; =
TEXT-ALIGN: right
}
.form DIV LABEL.normal {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 3px; FONT-WEIGHT: =
normal; FLOAT: none; PADDING-BOTTOM: 0px; WIDTH: 80px; PADDING-TOP: 0px; =
TEXT-ALIGN: left
}
.form DIV.required LABEL {
	FONT-WEIGHT: bold
}
.form SPAN {
	FONT-SIZE: 10px
}
.text {
	BORDER-RIGHT: #8d9aa3 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#8d9aa3 1px solid; PADDING-LEFT: 3px; MARGIN-BOTTOM: 1px; =
PADDING-BOTTOM: 3px; BORDER-LEFT: #8d9aa3 1px solid; WIDTH: 250px; =
PADDING-TOP: 3px; BORDER-BOTTOM: #8d9aa3 1px solid
}
.form SELECT {
	BORDER-RIGHT: #8d9aa3 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#8d9aa3 1px solid; PADDING-LEFT: 3px; MARGIN-BOTTOM: 1px; =
PADDING-BOTTOM: 3px; BORDER-LEFT: #8d9aa3 1px solid; WIDTH: 250px; =
PADDING-TOP: 3px; BORDER-BOTTOM: #8d9aa3 1px solid
}
.form TEXTAREA {
	BORDER-RIGHT: #8d9aa3 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: =
#8d9aa3 1px solid; PADDING-LEFT: 3px; MARGIN-BOTTOM: 1px; =
PADDING-BOTTOM: 3px; BORDER-LEFT: #8d9aa3 1px solid; WIDTH: 250px; =
PADDING-TOP: 3px; BORDER-BOTTOM: #8d9aa3 1px solid
}
.form .smallinput {
	WIDTH: 150px
}
.form .x-smallinput {
	WIDTH: 72px
}
.checkbox {
	FLOAT: left
}
.buttonarea {
	WIDTH: 85%; TEXT-ALIGN: center
}
.checks {
	ZOOM: 1; POSITION: relative; _height: 0
}
.checks LABEL {
	DISPLAY: block; MARGIN-BOTTOM: 2px; MARGIN-LEFT: 20px; POSITION: =
relative; _height: 0; _margin-left: 22px
}
.checks INPUT {
	MARGIN-LEFT: -20px; POSITION: absolute; _margin-left: -23px
}
* + HTML .checks INPUT {
	MARGIN-LEFT: -23px
}
.checks2 {
	ZOOM: 1; POSITION: relative; _height: 0
}
.checks2 LABEL {
	DISPLAY: block; MARGIN-BOTTOM: 2px; MARGIN-LEFT: 20px; _margin-left: =
24px
}
* + HTML .checks2 LABEL {
	MARGIN-LEFT: 24px
}
.checks2 INPUT {
	MARGIN-TOP: 2px; LEFT: 0px; POSITION: absolute; _margin-top: -2px
}
* + HTML .checks2 INPUT {
	MARGIN-TOP: -2px
}
.checks2 TD INPUT {
	LEFT: auto
}
.checks3 {
=09
}
.checks3 INPUT {
	MARGIN: 0px
}
.checks3 LABEL {
	MARGIN: 0px 0px 0px 3px
}
.clear {
	CLEAR: both
}
.clearFix {
	CLEAR: both; WIDTH: 100%
}
.clearit:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
.clearit {
	DISPLAY: inline-block
}
* HTML .clearit {
	HEIGHT: 1%
}
.clearer {
	OVERFLOW: auto; WIDTH: 100%
}
BR.clears {
	CLEAR: both; FONT-SIZE: 1px; LINE-HEIGHT: 0; HEIGHT: 0px
}
.nobr {
	WHITE-SPACE: nowrap; _width: 0; _zoom: 1
}
.spacer {
	FONT-SIZE: 5px; HEIGHT: 5px
}
.hide {
	DISPLAY: none
}
.show {
	DISPLAY: block
}
.showT {
=09
}
.big {
	FONT-SIZE: 100%; LINE-HEIGHT: 1.1
}
.huge {
	FONT-SIZE: 150%; LINE-HEIGHT: 1.2
}
.smaller {
	FONT-SIZE: 85%; LINE-HEIGHT: 1.1
}
.small {
	FONT-SIZE: 70%; LINE-HEIGHT: 1.2
}
.accent {
	COLOR: #c00
}
.notice {
	FONT-WEIGHT: bold; COLOR: #930
}
.loud {
	FONT-WEIGHT: bold; COLOR: #c00
}
.error {
	FONT-SIZE: 75%
}
.txt {
	FONT-SIZE: 75%
}
.error {
	COLOR: #f00
}
.searchBox .error {
	DISPLAY: block
}
.bold {
	FONT-WEIGHT: bold
}
.norm {
	FONT-WEIGHT: normal
}
.centered {
	TEXT-ALIGN: center
}
.right {
	TEXT-ALIGN: right
}
.first {
	MARGIN-TOP: 0px; PADDING-TOP: 0px
}
.fLeft {
	FLOAT: left
}
.fRight {
	FLOAT: right
}
.pipe {
	MARGIN: 0px 4px
}
DIV.drpshdw {
	BORDER-RIGHT: #eee 1px solid; BORDER-TOP: #eee 0px solid; BORDER-LEFT: =
#eee 0px solid; BORDER-BOTTOM: #eee 1px solid
}
DIV.drpshdw .innershdw1 {
	BORDER-RIGHT: #dfdfdf 1px solid; BORDER-TOP: #dfdfdf 0px solid; =
BORDER-LEFT: #dfdfdf 0px solid; BORDER-BOTTOM: #dfdfdf 1px solid
}
.dropline {
	BORDER-TOP: #aaa 1px solid; BACKGROUND: url(../img/bg_shdw_border.gif) =
repeat-x 0px 0px
}
A .imgLink {
	MARGIN-BOTTOM: -1px; VERTICAL-ALIGN: bottom; BORDER-LEFT: #fff 2px =
solid; BORDER-BOTTOM: #fff 2px solid
}
DIV.dync IMG {
	FLOAT: left; MARGIN: 0px 0.75em 0.15em 0px
}
.inline {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
.inline LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
.inline {
	MARGIN-LEFT: -11px
}
.inline LI {
	FLOAT: left; MARGIN-BOTTOM: 0.5em; BORDER-LEFT: #333 1px solid
}
.inline LI.first {
	BORDER-LEFT-STYLE: none
}
.inline LI A {
	DISPLAY: block; MARGIN: -0.3em 0.9em -0.09em
}
.sub-nav {
	MARGIN-TOP: 0px; OVERFLOW: hidden
}
.sub-nav LI {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; BACKGROUND: =
url(/img/pipe.gif) no-repeat 0px 4px; FLOAT: left; PADDING-BOTTOM: 0px; =
MARGIN: 0px 0px 0px -5px; WIDTH: auto; PADDING-TOP: 0px
}
.closeIco {
	PADDING-RIGHT: 0px; PADDING-LEFT: 18px; BACKGROUND: =
url(../img/ico_close_x.gif) no-repeat 0px 0.2em; PADDING-BOTTOM: 2px; =
LINE-HEIGHT: 1.4; PADDING-TOP: 0px
}
.announcement {
	BORDER-RIGHT: #160 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: #160 1px =
solid; PADDING-LEFT: 8px; BACKGROUND: #efe; PADDING-BOTTOM: 8px; MARGIN: =
6px 10px 6px 0px; BORDER-LEFT: #160 1px solid; PADDING-TOP: 8px; =
BORDER-BOTTOM: #160 1px solid; _height: 0
}
.comment {
	MARGIN: 0px 0px 10px
}
.errMsg {
	MARGIN: 0px; COLOR: #c00
}
.errMsg H1 {
=09
}
.errMsg P {
	MARGIN-TOP: 0px; FONT-SIZE: 100%
}
.caution {
	COLOR: #c00
}
#header {
	POSITION: relative; _height: 0
}
#header .logoBlock {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: left; =
PADDING-BOTTOM: 3px; PADDING-TOP: 3px; POSITION: relative
}
#header .logo {
=09
}
#header .login {
	PADDING-RIGHT: 0.8em; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: =
75%; PADDING-BOTTOM: 0px; PADDING-TOP: 0.5em; TEXT-ALIGN: right
}
#header .headerLinks {
	FONT-SIZE: 75%; MARGIN-RIGHT: 0.5em; TEXT-ALIGN: right
}
#header .headerLinks A {
	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0.3em; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#mainAd {
	CLEAR: both; BORDER-RIGHT: #accaec 1px solid; BORDER-TOP: #accaec 1px =
solid; MARGIN: 0px auto; BORDER-LEFT: #accaec 1px solid; WIDTH: 728px; =
BORDER-BOTTOM: #accaec 1px solid
}
.ad * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.ad H5 {
	FONT-WEIGHT: bold; MARGIN-BOTTOM: 0.4em
}
.ad .title {
	FONT-WEIGHT: bold
}
.ad .title {
	TEXT-DECORATION: underline
}
.ad .url {
	TEXT-DECORATION: underline
}
.ad .desc {
	COLOR: #333
}
.google H5 A {
	COLOR: #333
}
.google H5 A:hover {
	COLOR: #333
}
.ad .title {
	PADDING-RIGHT: 0.5em
}
.ad .desc {
	PADDING-RIGHT: 0.3em
}
.ad .url {
	WHITE-SPACE: nowrap
}
.google H5 A {
	DISPLAY: inline
}
.google H5 A:hover {
	DISPLAY: inline
}
.google A {
	TEXT-DECORATION: none
}
.google P A {
	DISPLAY: block
}
.google P {
	MARGIN-BOTTOM: 0.5em; LINE-HEIGHT: 1.3
}
#colsr .google {
	MARGIN-TOP: 1.95em; WIDTH: 100%
}
#colsr .google P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 1.25em; WIDTH: 46%; PADDING-TOP: 0px
}
#colsr .google .googAd1 {
	CLEAR: both; FLOAT: left
}
#colsr .google .googAd3 {
	CLEAR: both; FLOAT: left
}
#colsr .google .googAd5 {
	CLEAR: both; FLOAT: left
}
#colsr .google .googAd2 {
	PADDING-RIGHT: 1em; FLOAT: right
}
#colsr .google .googAd4 {
	PADDING-RIGHT: 1em; FLOAT: right
}
#colsr .google .googAd6 {
	PADDING-RIGHT: 1em; FLOAT: right
}
#colsr .google .googAd5 {
	MARGIN-BOTTOM: 0px
}
#colsr .google .googAd6 {
	MARGIN-BOTTOM: 0px
}
#colx .ad {
	PADDING-BOTTOM: 0.5em
}
#colx .ad H5 {
	MARGIN-BOTTOM: 0.85em
}
#colx .google P {
	MARGIN-BOTTOM: 1.3em
}
#colx .google .desc {
	DISPLAY: block
}
#colx .google .url {
	DISPLAY: block
}
DIV.searchTabs {
	CLEAR: both; FLOAT: left! important; MARGIN: 0.25em 10px 0px 0px; =
LINE-HEIGHT: normal; POSITION: relative; TOP: 1px; _height: 0; _float: =
none
}
DIV.searchTabs .tabs {
	MARGIN: 0px 0px 0px 4.2em
}
DIV.searchTabs UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
DIV.searchTabs LI {
	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-TOP: 0px
}
DIV.searchTabs LI A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0.5em; BACKGROUND: =
url(../img/tab_left.gif) no-repeat 0px 0px; FLOAT: left; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: #036 1px solid; =
TEXT-DECORATION: none
}
DIV.searchTabs LI A SPAN {
	PADDING-RIGHT: 1em; DISPLAY: block; PADDING-LEFT: 0.4em; FONT-WEIGHT: =
bold; FONT-SIZE: 105%; BACKGROUND: url(../img/tab_right.gif) no-repeat =
100% 0px; PADDING-BOTTOM: 0.1em; COLOR: #036; PADDING-TOP: 0.07em; =
LETTER-SPACING: 0.1em
}
DIV.searchTabs LI A:hover {
	BACKGROUND-POSITION: 0% -50px
}
DIV.searchTabs LI A:hover SPAN {
	BACKGROUND-POSITION: 100% -50px; COLOR: #fff
}
DIV.searchTabs LI A.libSelected {
	BACKGROUND: url(../img/tab_left_lib.gif) no-repeat 0px 0px; COLOR: =
#036; BORDER-BOTTOM: #7eaad7 1px solid
}
DIV.searchTabs LI A.libSelected:hover {
	BACKGROUND: url(../img/tab_left_lib.gif) no-repeat 0px 0px; COLOR: =
#036; BORDER-BOTTOM: #7eaad7 1px solid
}
DIV.searchTabs LI A.libSelected SPAN {
	BACKGROUND: url(../img/tab_right_lib.gif) no-repeat 100% 0px; CURSOR: =
default; COLOR: #036
}
DIV.searchTabs LI A.libSelected:hover SPAN {
	BACKGROUND: url(../img/tab_right_lib.gif) no-repeat 100% 0px; CURSOR: =
default; COLOR: #036
}
DIV.searchTabs LI A.webSelected {
	BACKGROUND: url(../img/tab_left_web.gif) no-repeat 0px 0px; COLOR: =
#036; BORDER-BOTTOM: #ffd57f 1px solid
}
DIV.searchTabs LI A.webSelected:hover {
	BACKGROUND: url(../img/tab_left_web.gif) no-repeat 0px 0px; COLOR: =
#036; BORDER-BOTTOM: #ffd57f 1px solid
}
DIV.searchTabs LI A.webSelected SPAN {
	BACKGROUND: url(../img/tab_right_web.gif) no-repeat 100% 0px; CURSOR: =
default; COLOR: #036
}
DIV.searchTabs LI A.webSelected:hover SPAN {
	BACKGROUND: url(../img/tab_right_web.gif) no-repeat 100% 0px; CURSOR: =
default; COLOR: #036
}
DIV.searchTabs LI A.refSelected {
	BACKGROUND: url(../img/tab_left_ref.gif) no-repeat 0px 0px; COLOR: =
#036; BORDER-BOTTOM: #a1e3c0 1px solid
}
DIV.searchTabs LI A.refSelected:hover {
	BACKGROUND: url(../img/tab_left_ref.gif) no-repeat 0px 0px; COLOR: =
#036; BORDER-BOTTOM: #a1e3c0 1px solid
}
DIV.searchTabs LI A.refSelected SPAN {
	BACKGROUND: url(../img/tab_right_ref.gif) no-repeat 100% 0px; CURSOR: =
default; COLOR: #036
}
DIV.searchTabs LI A.refSelected:hover SPAN {
	BACKGROUND: url(../img/tab_right_ref.gif) no-repeat 100% 0px; CURSOR: =
default; COLOR: #036
}
.tabSideMsg {
	FONT-WEIGHT: bold; FONT-SIZE: 80%; COLOR: #f60
}
.tabSideMsg A:link {
	COLOR: #f60
}
.tabSideMsg A:visited {
	COLOR: #f60
}
.textSize {
	FONT-WEIGHT: bold; FONT-SIZE: 75%; FLOAT: right; LINE-HEIGHT: 1; =
POSITION: relative
}
.textSize A {
	VERTICAL-ALIGN: bottom; BACKGROUND-COLOR: #069
}
.textSize A:hover {
	BACKGROUND-COLOR: #f60
}
.textSize A.on {
	BACKGROUND-COLOR: #f60
}
.searchBox {
	CLEAR: both; MARGIN: 0px 10px 0px 0px; HEIGHT: 1%
}
.searchBox .content {
	PADDING-LEFT: 52px
}
.searchBox LABEL {
	FONT-WEIGHT: bold; MARGIN-LEFT: -52px; VERTICAL-ALIGN: middle; =
POSITION: relative; _top: -2px
}
.searchInput {
	BORDER-RIGHT: #919191 1px solid; PADDING-RIGHT: 0.5em; BORDER-TOP: =
#919191 1px solid; PADDING-LEFT: 0.5em; FONT-SIZE: 95%; BACKGROUND: =
url(../img/bg_form_input.gif) #fff no-repeat 0px 0px; PADDING-BOTTOM: =
0.1em; MARGIN: 0px 0px 2px; BORDER-LEFT: #919191 1px solid; WIDTH: 20em; =
PADDING-TOP: 0.4em; BORDER-BOTTOM: #919191 1px solid; HEIGHT: 1.25em
}
.searchBtn {
	VERTICAL-ALIGN: top; MARGIN-RIGHT: 0.62em
}
.searchBox P {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; VERTICAL-ALIGN: middle; LINE-HEIGHT: 1.6; PADDING-TOP: =
0px; POSITION: relative; _top: -2px
}
.lib {
	BACKGROUND: url(../img/bg_searchbox_lib.gif) #e1f1ff repeat-x
}
.web {
	BACKGROUND: url(../img/bg_searchbox_web.gif) #fff1d4 repeat-x
}
.ref {
	BACKGROUND: url(../img/bg_searchbox_ref.gif) #deffee repeat-x
}
.searchBox .st {
	BACKGROUND: url(../img/bg01.gif) repeat-x 0px 0px
}
.searchBox .sb {
	BACKGROUND: url(../img/bg01.gif) repeat-x 100% 100%; POSITION: =
relative; _height: 0
}
.lib .str {
	BACKGROUND: url(../img/bg_sbox_lib_tr.gif) no-repeat 100% 0px; =
POSITION: relative; _height: 0
}
.lib .sbr {
	PADDING-RIGHT: 0px; PADDING-LEFT: 12px; BACKGROUND: =
url(../img/bg_sbox_lib_br.gif) no-repeat 100% 100%; PADDING-BOTTOM: 6px; =
PADDING-TOP: 10px
}
.web .str {
	BACKGROUND: url(../img/bg_sbox_web_tr.gif) no-repeat 100% 0px; =
POSITION: relative; _height: 0
}
.web .sbr {
	PADDING-RIGHT: 0px; PADDING-LEFT: 12px; BACKGROUND: =
url(../img/bg_sbox_web_br.gif) no-repeat 100% 100%; PADDING-BOTTOM: 6px; =
PADDING-TOP: 10px
}
.ref .str {
	BACKGROUND: url(../img/bg_sbox_ref_tr.gif) no-repeat 100% 0px; =
POSITION: relative; _height: 0
}
.ref .sbr {
	PADDING-RIGHT: 0px; PADDING-LEFT: 12px; BACKGROUND: =
url(../img/bg_sbox_ref_br.gif) no-repeat 100% 100%; PADDING-BOTTOM: 6px; =
PADDING-TOP: 10px
}
.dz01 {
	CLEAR: both; PADDING-RIGHT: 6px; PADDING-LEFT: 6px; BACKGROUND: =
url(../img/bg_sitenote.gif) #fff repeat-x; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px; TEXT-ALIGN: center
}
.dz01 P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.dz01 EM {
	FONT-WEIGHT: bold; COLOR: #930; FONT-STYLE: normal
}
DIV#col2 #textAds {
	MARGIN: 0px 0px 20px
}
DIV#col2 .similarArticles {
	MARGIN: 0px 0px 20px
}
.advertiserLinks {
	MARGIN: 0px 0px 20px
}
DIV#col2 #adServer {
	MARGIN: 0px 0px 20px
}
DIV#col2 #dz05 {
	MARGIN: 0px 0px 20px
}
DIV#col2 .banner {
	MARGIN: 0px 0px 20px
}
DIV#col2 .module {
	MARGIN: 0px 0px 20px
}
DIV#col2 H3 {
	PADDING-RIGHT: 0.5em; BORDER-TOP: #f6e3d5 1px solid; PADDING-LEFT: =
0.5em; FONT-WEIGHT: bold; FONT-SIZE: 80%; BACKGROUND: =
url(../img/bg_sidebar_header.gif) #c63 repeat-x; PADDING-BOTTOM: 0.3em; =
MARGIN: 0px 0px 6px; COLOR: #fff; PADDING-TOP: 0.2em; BORDER-BOTTOM: =
#934c24 1px solid; LETTER-SPACING: 0.05em
}
.advertiserLinks H3 {
	PADDING-RIGHT: 0.5em; BORDER-TOP: #f6e3d5 1px solid; PADDING-LEFT: =
0.5em; FONT-WEIGHT: bold; FONT-SIZE: 80%; BACKGROUND: =
url(../img/bg_sidebar_header.gif) #c63 repeat-x; PADDING-BOTTOM: 0.3em; =
MARGIN: 0px 0px 6px; COLOR: #fff; PADDING-TOP: 0.2em; BORDER-BOTTOM: =
#934c24 1px solid; LETTER-SPACING: 0.05em
}
DIV#col2 .similarArticles H3 {
	MARGIN: 0px 0px 10px; TEXT-ALIGN: left
}
.advertiserLinks DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
DIV#col2 .similarArticles {
	TEXT-ALIGN: center
}
DIV#col2 .similarArticles TABLE {
	WIDTH: 100%
}
DIV#col2 .similarArticles .lastline {
	MARGIN: 10px 0px 0px; TEXT-ALIGN: left
}
.advertiserLinks DT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.2; =
PADDING-TOP: 0px
}
.advertiserLinks DT A {
	FONT-WEIGHT: bold
}
DIV#col2 .similarArticles P {
	MARGIN: 0px 0px 18px
}
DIV#col2 .similarArticles SPAN {
=09
}
.advertiserLinks DD {
	MARGIN: 0px 0px 12px
}
.advertiserLinks P {
	FONT-WEIGHT: bold
}
DIV#colsr .advertiserLinks P {
	PADDING-RIGHT: 0px; MARGIN-TOP: 2px; PADDING-LEFT: 0px; FONT-WEIGHT: =
normal; MARGIN-BOTTOM: 2px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.advertiserLinks H4 {
	MARGIN-BOTTOM: 0.65em
}
.advertiserLinksTop {
	MARGIN-BOTTOM: 5px; PADDING-BOTTOM: 5px; BORDER-BOTTOM: #ccc 1px solid
}
.advertiserLinksTop .adLogo {
	WIDTH: 86px
}
DIV#col2 #mrc {
	MARGIN: 0px 0px 20px
}
DIV#col2 #mrc H3 {
	PADDING-RIGHT: 0px; BORDER-TOP: #f6e3d5 1px solid; BACKGROUND: =
url(../img/bg_sidebar_header.gif) #c63 repeat-x; MARGIN: 0px; =
BORDER-BOTTOM: #934c24 1px solid
}
DIV#col2 #mrc H3 A {
	CURSOR: pointer
}
DIV#col2 #mrc #btn1 {
	FLOAT: right; MARGIN: -2px 0px 0px; POSITION: relative
}
DIV#col2 #mrc #mod01 {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: #aaa 1px =
solid; PADDING-LEFT: 8px; BACKGROUND: url(../img/bg_mrc.gif) #fffdf2 =
repeat-x; PADDING-BOTTOM: 8px; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: =
8px; BORDER-BOTTOM: #aaa 1px solid
}
DIV#col2 #mrc TABLE {
	MARGIN: 0px 0px 10px
}
DIV#col2 #mrc TD {
	VERTICAL-ALIGN: top
}
DIV#col2 #mrc IMG {
	PADDING-RIGHT: 6px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 3px
}
DIV#col2 #mrc P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: =
0px; PADDING-TOP: 0px
}
DIV#col2 #mrc A {
	FONT-WEIGHT: bold
}
.loading {
	MARGIN: 0px 0px 0px 16px; COLOR: #930; TEXT-ALIGN: left
}
.loading H6 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: =
80%; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #930; PADDING-TOP: 0px
}
.loading UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 0px 5px; PADDING-TOP: 0px
}
.loading UL LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 8px; BACKGROUND: =
url(../img/bull_02.gif) no-repeat 2px 60%; PADDING-BOTTOM: 0px; MARGIN: =
0px; LINE-HEIGHT: 1.4; PADDING-TOP: 0px
}
DIV#footer {
	CLEAR: both; PADDING-RIGHT: 12px; PADDING-LEFT: 12px; PADDING-BOTTOM: =
0px; MARGIN: 12px 0px 2em; PADDING-TOP: 0px
}
#footer HR {
	MARGIN-BOTTOM: 10px
}
#footer P {
	MARGIN: 14px 0px 0px
}
#footer .sub-nav {
	MARGIN-LEFT: -0.2em
}
#footer .sub-nav LI {
	PADDING-RIGHT: 1em; PADDING-LEFT: 0.7em; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.inline {
	MARGIN-TOP: 0.2em
}
.bubble {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; POSITION: relative
}
.bubble {
	WIDTH: 400px
}
.bubble .tl {
	WIDTH: 400px
}
.bubble .tr {
	WIDTH: 392px
}
.bubble .br {
	WIDTH: 392px
}
.bubble .bl {
	WIDTH: 8px
}
.bubble .tl {
	DISPLAY: block; HEIGHT: 8px; _font-size: .10em
}
.bubble .tr {
	DISPLAY: block; HEIGHT: 8px; _font-size: .10em
}
.bubble .bl {
	DISPLAY: block; HEIGHT: 8px; _font-size: .10em
}
.bubble .br {
	DISPLAY: block; HEIGHT: 8px; _font-size: .10em
}
.bubble .point {
	DISPLAY: block; HEIGHT: 8px; _font-size: .10em
}
.bubble .tr {
	BACKGROUND: no-repeat right top; FLOAT: right
}
.bubble .br {
	BACKGROUND: no-repeat right top; FLOAT: right
}
.bubble .tl {
	BACKGROUND: no-repeat left top
}
.bubble .bl {
	BACKGROUND: no-repeat left top
}
.bubble .point {
	BACKGROUND: no-repeat left top
}
.bubble .tl {
	BACKGROUND-IMAGE: url(/img/bubbles/tl.gif)
}
.bubble .tr {
	BACKGROUND-IMAGE: url(/img/bubbles/tr.gif)
}
.bubble .bl {
	FLOAT: left; BACKGROUND-IMAGE: url(/img/bubbles/bl.gif)
}
.bubble .br {
	BACKGROUND-IMAGE: url(/img/bubbles/br.gif)
}
.bubble .point {
	WIDTH: 25px; POSITION: absolute; HEIGHT: 14px
}
.bubble .content {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 1em; BORDER-TOP: #ccc 0px =
solid; PADDING-LEFT: 1em; PADDING-BOTTOM: 0.05em; BORDER-LEFT: #ccc 1px =
solid; PADDING-TOP: 0.05em; BORDER-BOTTOM: #ccc 0px solid; =
BACKGROUND-COLOR: #fffbe4
}
.bubble .content P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.5em; MARGIN: =
0px; PADDING-TOP: 0.25em
}
.edgar_hbr #width {
	MIN-WIDTH: 500px
}
.edgar_hbr #header {
	BACKGROUND: url(/img/tool_line_gray.gif) repeat-x left bottom
}
.edgar_hbr #header .logo-cobrand {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FLOAT: right; =
PADDING-BOTTOM: 1em; PADDING-TOP: 1em
}
.edgar_hbr .byline {
	WIDTH: 100%
}
.edgar_hbr #sidebar {
	DISPLAY: none
}
.edgar_hbr #footer HR {
	COLOR: #666; BACKGROUND-COLOR: #666
}
#colsr .srpList {
	MARGIN: 0.3em 0px 0.9em; WIDTH: 100%
}
.results {
	CLEAR: both; FONT-SIZE: 81.25%; MARGIN-BOTTOM: 0.47em; PADDING-BOTTOM: =
0.47em; BORDER-BOTTOM: #ccc 1px solid
}
.results DT.title {
	FONT-WEIGHT: bold
}
.results DT.title IMG {
	MARGIN-LEFT: 1px
}
.logos-on .publogo {
	FLOAT: left; WIDTH: 75px; TEXT-ALIGN: center
}
.logos-on .publogo IMG {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0.38em
}
.logos-on .title {
	MARGIN-LEFT: 85px
}
.logos-on .description {
	MARGIN-LEFT: 85px
}
.logos-off .publogo {
	DISPLAY: none
}
.logos-off .title {
	MARGIN-LEFT: 0px
}
.logos-off .description {
	MARGIN-LEFT: 0px
}
DIV#colsr .errMsg {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 80%; PADDING-BOTTOM: =
0px; MARGIN: 0px; PADDING-TOP: 0px
}
DIV#colsr .errMsg H1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; =
PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: #c63; PADDING-TOP: 0px; =
LETTER-SPACING: 0.05em
}
DIV#colsr .errMsg P {
	COLOR: #c63
}
.searchResults {
	MARGIN: 15px 0px 50px
}
DIV#colsr {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 15px; PADDING-LEFT: 15px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
DIV#colsr TABLE.srpListHeader {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 80%; PADDING-BOTTOM: =
0px; PADDING-TOP: 0px
}
DIV#colsr TABLE.srpListHeader SELECT {
	FONT-SIZE: 90%
}
DIV#colsr TABLE.askAdTable TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-SIZE: 100%; PADDING-BOTTOM: =
3px; PADDING-TOP: 3px
}
DIV#colx {
	PADDING-RIGHT: 8px; PADDING-LEFT: 15px; PADDING-BOTTOM: 8px; =
MARGIN-LEFT: -1px; BORDER-LEFT: #ccc 1px solid; WIDTH: 160px; =
PADDING-TOP: 0px; TEXT-ALIGN: left
}
DIV#colx H3 {
	PADDING-RIGHT: 0.5em; BORDER-TOP: #f6e3d5 1px solid; PADDING-LEFT: =
0.5em; FONT-WEIGHT: bold; FONT-SIZE: 80%; BACKGROUND: =
url(../img/bg_sidebar_header.gif) #c63 repeat-x; PADDING-BOTTOM: 0.3em; =
MARGIN: 0px 0px 6px; COLOR: #fff; PADDING-TOP: 0.2em; BORDER-BOTTOM: =
#934c24 1px solid; LETTER-SPACING: 0.05em
}
DIV#colx #mrc {
	MARGIN-BOTTOM: 10px; TEXT-ALIGN: left
}
DIV#colx .srpAds {
	MARGIN-BOTTOM: 20px; TEXT-ALIGN: right
}
DIV#colx .label {
	MARGIN: 0px
}
DIV#colx #mrc {
	MARGIN-TOP: 0px; PADDING-TOP: 0px
}
DIV#colx #mrc H3 {
	PADDING-RIGHT: 0px; BORDER-TOP: #f6e3d5 1px solid; BACKGROUND: =
url(../img/bg_sidebar_header.gif) #c63 repeat-x; MARGIN: 0px; =
BORDER-BOTTOM: #934c24 1px solid
}
DIV#colx #mrc #mod02 {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: #aaa 1px =
solid; PADDING-LEFT: 8px; BACKGROUND: url(../img/bg_mrc.gif) #fffdf2 =
repeat-x; PADDING-BOTTOM: 8px; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: =
8px; BORDER-BOTTOM: #aaa 1px solid; POSITION: relative; _height: 0
}
DIV#colx #mrc H3 A {
	CURSOR: pointer
}
DIV#colx #mrc #btn2 {
	FLOAT: right; MARGIN: 0px
}
DIV#colx #mrc TABLE {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 0px =
0px 10px; PADDING-TOP: 3px
}
DIV#colx #mrc TD {
	VERTICAL-ALIGN: top
}
DIV#colx #mrc IMG {
	PADDING-RIGHT: 6px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
DIV#colx #mrc P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: =
0px; PADDING-TOP: 0px
}
DIV#colx #mrc A {
	FONT-WEIGHT: bold
}
A.smrsortQ {
	CURSOR: help
}
DIV#colw {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; MARGIN: 0px =
0px 12px; WIDTH: 160px; PADDING-TOP: 0px
}
#modifyResultsSort {
	MARGIN: 0px 0px 20px
}
#displaySettings {
	MARGIN: 0px 0px 20px
}
#relatedLinks {
	MARGIN: 0px 0px 20px
}
.selectSources {
	MARGIN: 0px 0px 20px
}
DIV#colw #modifyResultsShow H3 {
	FONT-WEIGHT: bold; FONT-SIZE: 80%; MARGIN: 0px 0px 5px; WIDTH: 100%; =
COLOR: #c63; LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LETTER-SPACING: 0.05em
}
#modifyResultsSort H3 {
	FONT-WEIGHT: bold; FONT-SIZE: 80%; MARGIN: 0px 0px 5px; WIDTH: 100%; =
COLOR: #c63; LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LETTER-SPACING: 0.05em
}
.selectSources H3 {
	FONT-WEIGHT: bold; FONT-SIZE: 80%; MARGIN: 0px 0px 5px; WIDTH: 100%; =
COLOR: #c63; LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LETTER-SPACING: 0.05em
}
#displaySettings H3 {
	FONT-WEIGHT: bold; FONT-SIZE: 80%; MARGIN: 0px 0px 5px; WIDTH: 100%; =
COLOR: #c63; LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LETTER-SPACING: 0.05em
}
#quickSearch H3 {
	FONT-WEIGHT: bold; FONT-SIZE: 80%; MARGIN: 0px 0px 5px; WIDTH: 100%; =
COLOR: #c63; LINE-HEIGHT: 1.2; PADDING-TOP: 0px; LETTER-SPACING: 0.05em
}
#quickSearch H3 {
	MARGIN-BOTTOM: 4px
}
#quickSearch P {
	MARGIN-TOP: 0px
}
.selectSources TABLE TD INPUT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.selectSources TABLE TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.selectSourcesH H3 {
	PADDING-RIGHT: 3px; MARGIN-TOP: 10px; FONT-WEIGHT: bold; WIDTH: 100%; =
COLOR: #333; MARGIN-RIGHT: -2px; PADDING-TOP: 0px
}
DIV.moduleULTitle {
	FONT-SIZE: 80%; MARGIN: 3px 0px 0px
}
UL.moduleUL {
	MARGIN: 0px 0px 7px
}
UL.moduleUL A {
=09
}
TABLE.checkBox TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px
}
TABLE.checkBox {
	MARGIN-TOP: 5px
}
#relatedLinks {
	MARGIN-TOP: 5px; FONT-WEIGHT: bold; MARGIN-LEFT: 5px; WIDTH: 160px; =
MARGIN-RIGHT: 0.5em
}
#relatedLinks H3 {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: =
80%; MARGIN-BOTTOM: 0.5em; PADDING-BOTTOM: 3px; WIDTH: 97%; COLOR: #333; =
PADDING-TOP: 3px; LETTER-SPACING: 0.05em
}
#relatedLinks UL {
	BORDER-TOP-WIDTH: 1px; DISPLAY: list-item; BORDER-LEFT-WIDTH: 1px; =
BORDER-BOTTOM-WIDTH: 1px; MARGIN: 0px; LINE-HEIGHT: 22px; =
LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 1px
}
#relatedLinks LI {
	BACKGROUND-IMAGE: none
}
#relatedLinks P {
	TEXT-ALIGN: justify
}
.dynamicContent {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 10px; WIDTH: =
100%; PADDING-TOP: 10px
}
.dynamicContent P {
=09
}
.dynamicContentSubs {
	FONT-SIZE: 110%
}
.fixfloat:unknown {
	CLEAR: both; DISPLAY: block; FONT-SIZE: 0px; VISIBILITY: hidden; =
LINE-HEIGHT: 0px; HEIGHT: 0px; content: "."
}
.btnsmgo {
	BORDER-RIGHT: #586b7a 1px solid; PADDING-RIGHT: 1px; BORDER-TOP: #fff =
1px solid; PADDING-LEFT: 1px; FONT-SIZE: 8px; PADDING-BOTTOM: 1px; =
BORDER-LEFT: #fff 1px solid; PADDING-TOP: 1px; BORDER-BOTTOM: #586b7a =
1px solid
}
.dotBullet UL {
	LINE-HEIGHT: 20px
}
.dotBullet LI {
	LIST-STYLE-IMAGE: url(/img/icon.bullet.dot.gif)
}
#advSearchWrapper {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-WEIGHT: normal; =
FONT-SIZE: 80%; PADDING-BOTTOM: 10px; COLOR: #333; PADDING-TOP: 10px
}
#advSearchWrapper .advSearchSource {
	FONT-SIZE: 110%; COLOR: #333
}
#advSearchWrapper .advSearchSource H3 {
	FONT-SIZE: 100%; COLOR: #333; LETTER-SPACING: normal
}
#advSearchWrapper TD {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px
}
#advSearchWrapper SPAN {
	FONT-SIZE: 90%
}
TABLE.articleListMainTable TD {
	PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 15px; =
PADDING-TOP: 15px
}
TABLE.articleListMainTable UL LI {
	MARGIN-TOP: 10px; LINE-HEIGHT: 16px
}
#wrapper UL.moduleUL LI A {
	FONT-WEIGHT: normal
}
DIV.landingBlob {
	MARGIN-BOTTOM: 15px; PADDING-BOTTOM: 10px; BORDER-BOTTOM: #ccc 1px =
dotted
}
DIV.landingBlob H2 {
	FONT-SIZE: 24px
}
DIV.landingBlob .srpUnit {
	MARGIN-LEFT: 4px; BORDER-BOTTOM: #fff 1px solid
}
DIV.landingBlob DIV.srpUnit IMG.srpPubLogo {
	DISPLAY: block; FLOAT: right; MARGIN: 0px 0px 15px 5px; VERTICAL-ALIGN: =
top
}
DIV.landingBlob .srpUnit A {
	FONT-WEIGHT: bold
}
DIV.landingBlob .srpUnit {
	FONT-SIZE: 70%; FONT-FAMILY: Verdana,Arial,sans-serif
}
UL.landingBlobUL {
	MARGIN-BOTTOM: 5px; MARGIN-LEFT: 0px
}
UL.landingBlobUL UL LI H2 A {
	FONT-WEIGHT: normal
}
DIV#landingTitle {
	FONT-SIZE: 80%; PADDING-BOTTOM: 10px; BORDER-BOTTOM: #ccc 1px dashed; =
TEXT-ALIGN: center
}
DIV#landingTitle H1 {
	FONT-SIZE: 28px
}
DIV#landingTitle H2 {
	FONT-SIZE: 12px
}
DIV#landingTitle H2 A {
	FONT-SIZE: 12px
}
DIV#landingTitle H3 {
	FONT-SIZE: 11px
}
DIV#landingTitle H3 A {
	FONT-SIZE: 11px
}
DIV#landingTitle H3 {
	MARGIN-TOP: 2px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 2px
}
DIV#landingTitle H2 {
	MARGIN-TOP: 2px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 2px
}
DIV#landingTitle H1 {
	MARGIN-TOP: 2px; FONT-WEIGHT: bold; MARGIN-BOTTOM: 2px
}
DIV#landingTitle H3 {
	FONT-WEIGHT: bold
}
DIV#landingSkinny {
	WIDTH: 200px
}
DIV#landingSkinny IFRAME {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; WIDTH: 160px; BORDER-RIGHT-WIDTH: 0px
}
TABLE.landingTable TD {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
VERTICAL-ALIGN: top; PADDING-TOP: 10px
}
DIV#spaOnLand H3 {
	PADDING-RIGHT: 0.5em; BORDER-TOP: #f6e3d5 1px solid; PADDING-LEFT: =
0.5em; FONT-WEIGHT: bold; FONT-SIZE: 80%; BACKGROUND: =
url(../../img/bg_sidebar_header.gif) #c63 repeat-x; PADDING-BOTTOM: =
0.3em; MARGIN: 0px 0px 6px; COLOR: #fff; PADDING-TOP: 0.2em; =
BORDER-BOTTOM: #934c24 1px solid; LETTER-SPACING: 0.05em
}
DIV#spaOnLand H2 {
	MARGIN-TOP: 0px
}
DIV#spaOnLand UL LI A {
	FONT-WEIGHT: bold; FONT-SIZE: 90%
}
.reg-info {
	PADDING-RIGHT: 20px; PADDING-LEFT: 20px; FONT-SIZE: 12px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
#free-trial-upgrade {
	FONT-SIZE: 75%
}
#free-trial-upgrade #free-trial-upgrade-img {
	CLEAR: both; PADDING-BOTTOM: 12px; PADDING-TOP: 7px
}
#limited-offer {
	CLEAR: both
}
#limited-offer IMG {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 0px
}
#thankyou-main-content {
	PADDING-RIGHT: 10px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 10px
}
#thanksfooter {
	PADDING-RIGHT: 0px; MARGIN-TOP: -8px; PADDING-LEFT: 0px; =
PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Location: http://www.highbeam.com/StyleSheets/print.css

#container {
	MIN-WIDTH: 600px
}
#width {
	MIN-WIDTH: 600px; WIDTH: 600px
}
* HTML #minwidth {
	WIDTH: 600px
}

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Location: http://www.highbeam.com/StyleSheets/hacks/ie7.css

#footer HR {
	MARGIN-BOTTOM: 3px
}
.min-browser-width {
	WIDTH: 400px; POSITION: relative; HEIGHT: 1px
}
.min-browser-width IMG {
	WIDTH: 700px
}

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.highbeam.com/StyleSheets/article27c.css

#header {
	BACKGROUND-COLOR: #fffbe5
}
.articleHeader {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; POSITION: relative; BACKGROUND-COLOR: #fffbe5
}
#wall_page_shade {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
url(/Img/Layout/walpage_shade.jpg) repeat-x; PADDING-BOTTOM: 0px; =
MARGIN: 0px; PADDING-TOP: 0px; HEIGHT: 14px
}
.articleHeader .articleSearch {
	DISPLAY: inline; PADDING-LEFT: 20px; FLOAT: left; PADDING-TOP: 5px; =
POSITION: relative
}
.articleHeader .articleSearch #fingerprint {
	FONT-WEIGHT: bold; FONT-SIZE: 100%; PADDING-BOTTOM: 2px; COLOR: =
#cc6633; POSITION: relative
}
.searchInput {
	MARGIN-TOP: 0px; POSITION: relative
}
.searchBtn {
	MARGIN-TOP: 0px; POSITION: relative
}
.articleHeader #membershipTools {
	FLOAT: right; WIDTH: 340px
}
.ArticleHeader .headerTools {
	DISPLAY: inline
}
#header .headerLinks {
	PADDING-RIGHT: 0.59em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.error {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 70%; =
MARGIN-BOTTOM: 1px; PADDING-BOTTOM: 0px; MARGIN-RIGHT: 22em; =
PADDING-TOP: 0px
}
.loginTools {
	PADDING-RIGHT: 0.4em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0.09em
}
.articlefooterSearch {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
url(../Img/Layout/article_footer_search_bg.gif); MARGIN-BOTTOM: 1px; =
PADDING-BOTTOM: 5px; PADDING-TOP: 0px; HEIGHT: 70px; TEXT-ALIGN: center
}
.articlefooterSearch #fingerprint {
	FONT-WEIGHT: bold; FONT-SIZE: 98%; COLOR: #cc6633; MARGIN-RIGHT: 7em; =
PADDING-TOP: 1px
}
DIV#footer {
	MARGIN-TOP: 0px
}
#footer HR {
	DISPLAY: none
}
#contentCol {
	VERTICAL-ALIGN: top; WIDTH: 100%
}
DIV#content {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; POSITION: relative
}
.allofthis P {
	FONT-WEIGHT: bold; COLOR: #cc6633; TEXT-ALIGN: center
}
.offsite P {
	TEXT-ALIGN: center
}
.offsite #othersite {
	FONT-SIZE: 90%
}
#sidebar {
	VERTICAL-ALIGN: top; WIDTH: 335px
}
DIV#col2 {
	BACKGROUND: #fff; MARGIN: 0px 0.7em 0px 1em; POSITION: relative
}
#col2 #dz05 {
	FONT-SIZE: smaller
}
#contentCol {
	PADDING-TOP: 1.3em
}
#sidebar {
	PADDING-TOP: 1.3em
}
H1 {
	MARGIN: -0.25em 0px 0.45em
}
.blogEnhancer + .memberTools + H1 {
	MARGIN-TOP: 0px
}
DIV#content .tagline {
	MARGIN-BOTTOM: 0.75em
}
#articleCopy .charCount {
	MARGIN-BOTTOM: 0.75em
}
#articleCopy PRE {
	MARGIN-BOTTOM: 1.05em
}
#articleCopy .copyright {
	FONT-SIZE: 55%; MARGIN-BOTTOM: 1.1em
}
#dz02 {
	MARGIN: -0.45em 0px 0px
}
.byline {
	MARGIN-BOTTOM: 0.65em
}
.entities {
	MARGIN-BOTTOM: -0.3em
}
#dz02 {
	CLEAR: both; FONT-SIZE: 45%; LINE-HEIGHT: 10px
}
#dz03 {
	MARGIN: 0px 0px 10px
}
#dz02 {
	TEXT-ALIGN: center
}
#dz03 {
	TEXT-ALIGN: center
}
.blogEnhancer {
	BORDER-TOP: #ccc 1px solid; MARGIN-TOP: 0.05em; VERTICAL-ALIGN: =
text-bottom; COLOR: #930; LINE-HEIGHT: 1.7; PADDING-TOP: 8px
}
.blogEnhancer IMG {
	VERTICAL-ALIGN: bottom
}
H1 {
	FONT-WEIGHT: bold
}
.byline DT {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; LINE-HEIGHT: 1.3; PADDING-TOP: 0px
}
.byline DD {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; LINE-HEIGHT: 1.3; PADDING-TOP: 0px
}
.entities DT {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; LINE-HEIGHT: 1.3; PADDING-TOP: 0px
}
.entities DD {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; MARGIN: 0px; LINE-HEIGHT: 1.3; PADDING-TOP: 0px
}
.byline {
=09
}
.byline DT {
	PADDING-RIGHT: 0.25em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.byline DD {
	PADDING-RIGHT: 0.25em; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.byline DT {
	PADDING-LEFT: 0.7em; BACKGROUND: url(/img/pipe.gif) no-repeat 0px =
0.35em
}
.byline DT.first {
	BACKGROUND-IMAGE: none
}
.byline DT.first {
	PADDING-LEFT: 0px
}
.byline DD {
	PADDING-LEFT: 0px
}
.byline DD {
	FONT-WEIGHT: bold
}
.byline A {
	FONT-WEIGHT: bold
}
.cpyright {
	FONT-WEIGHT: 500
}
.entities {
	PADDING-LEFT: 11.25em; WIDTH: auto
}
.entities DT {
	PADDING-RIGHT: 0.25em; MARGIN-LEFT: -11.25em; WIDTH: 11em
}
.entities DD {
	PADDING-RIGHT: 0.65em
}
.entities DD A {
	FONT-WEIGHT: bold
}
.entities .previous {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.entities .next {
	DISPLAY: inline-block; WHITE-SPACE: nowrap
}
.entities .previous {
	DISPLAY: inline-block; WHITE-SPACE: nowrap
}
#articleArea {
	PADDING-RIGHT: 1em; PADDING-LEFT: 1em; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; POSITION: relative
}
#pubLogo H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0pt 6px; PADDING-TOP: 0px
}
#articleCopy {
	CLEAR: left; FONT-SIZE: 120%; Z-INDEX: 1
}
#articleCopy .logo {
	FLOAT: left; MARGIN: 4px 10px 10px 0px
}
#articleCopy .charCount {
	FONT-SIZE: 65%
}
#articleCopy .copyright {
	FONT-SIZE: 55%
}
#articleCopy TABLE {
	DISPLAY: inline
}
DIV#content .tagline {
	FONT-SIZE: 65%; TEXT-ALIGN: center
}
.memberTools {
	PADDING-RIGHT: 0px; MARGIN-TOP: 0.3em; PADDING-LEFT: 0.95em; FLOAT: =
right; PADDING-BOTTOM: 0.95em; WIDTH: 110px; PADDING-TOP: 0px
}
.memberTools UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.memberTools LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND-IMAGE: none; =
PADDING-BOTTOM: 8px; PADDING-TOP: 0px
}
.memberTools LI A {
	DISPLAY: block; PADDING-LEFT: 2em
}
.memberTools LI A IMG {
	FLOAT: left; MARGIN-LEFT: -2em; WIDTH: auto
}
.memberTools .bubble {
	FONT-SIZE: 1.2em; MARGIN: 0px
}
.memberTools .bubble {
	WIDTH: 110px
}
.memberTools .bubble .tl {
	WIDTH: 110px
}
.memberTools .bubble .tr {
	WIDTH: 102px
}
.memberTools .bubble .br {
	WIDTH: 102px
}
.memberTools .bubble .bl {
	WIDTH: 8px
}
.memberTools .bubble .content {
	PADDING-RIGHT: 0.15em; PADDING-LEFT: 0.55em; FONT-SIZE: 85%; =
PADDING-BOTTOM: 0.1em; PADDING-TOP: 0.1em
}
#moreLikeThis {
	CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: =
0px; PADDING-TOP: 0px
}
#moreLikeThis H3 {
	FONT-SIZE: 110%; COLOR: #cc6633
}
#moreLikeThis P.key {
	MARGIN-TOP: 0px; FONT-WEIGHT: bold
}
#moreLikeThis .msg {
	FONT-WEIGHT: bold; MARGIN: 0px 0px 20px 15px; COLOR: #930
}
P.moreResults {
	FONT-WEIGHT: bold; MARGIN: 20px 0px 5px; TEXT-ALIGN: center
}
#sidebar P.key {
	FONT-WEIGHT: bold
}
#moreTabs {
=09
}
#moreTabs UL {
	Z-INDEX: 10; BACKGROUND: url(../img/more_tab_bg.gif) #fff repeat-x 50% =
bottom; FLOAT: left; MARGIN: 0px 0px -1px; LINE-HEIGHT: normal; =
LIST-STYLE-TYPE: none; POSITION: relative
}
#moreTabs LI {
	PADDING-RIGHT: 0.3em; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-TOP: 0px
}
#moreTabs LI A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0.5em; BACKGROUND: =
url(../img/more_tab_l.gif) no-repeat 0px 0px; FLOAT: left; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: #c63 =
1px solid; TEXT-DECORATION: none
}
#moreTabs LI A SPAN {
	PADDING-RIGHT: 1em; DISPLAY: block; PADDING-LEFT: 0.4em; FONT-WEIGHT: =
bold; BACKGROUND: url(../img/more_tab_r.gif) no-repeat 100% 0px; =
PADDING-BOTTOM: 0.1em; COLOR: #930; PADDING-TOP: 0.3em; LETTER-SPACING: =
0.05em
}
#moreTabs LI A:hover {
	BACKGROUND-POSITION: 0% -50px; CURSOR: hand
}
#moreTabs LI A:hover SPAN {
	BACKGROUND-POSITION: 100% -50px; CURSOR: hand; COLOR: #930
}
#moreTabs LI A.selected {
	BACKGROUND: url(../img/more_tab_l.gif) no-repeat 0% -50px; COLOR: #930; =
BORDER-BOTTOM: #fff 1px solid
}
#moreTabs A.selected:hover {
	BACKGROUND: url(../img/more_tab_l.gif) no-repeat 0% -50px; COLOR: #930; =
BORDER-BOTTOM: #fff 1px solid
}
#moreTabs LI A.selected SPAN {
	BACKGROUND: url(../img/more_tab_r.gif) no-repeat 100% -50px; CURSOR: =
default; COLOR: #930
}
#moreTabs LI A.selected:hover SPAN {
	BACKGROUND: url(../img/more_tab_r.gif) no-repeat 100% -50px; CURSOR: =
default; COLOR: #930
}
#more_tab_bg2 {
	BORDER-TOP: #c63 1px solid
}
#more_tab_bg2 DIV {
	BACKGROUND-POSITION: 0px 0px
}
#more_tab_bg2 {
	BACKGROUND-POSITION: 100% 0px
}
.resultsList {
	CLEAR: both; MARGIN: 10px 0px 0px; BORDER-COLLAPSE: collapse
}
.resultsList .pubLogoCell {
	FONT-SIZE: 70%; VERTICAL-ALIGN: top; WIDTH: 75px
}
.resultsList .pubLogo {
	PADDING-RIGHT: 10px; PADDING-LEFT: 2px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 4px
}
.resultsList .articleLink {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; =
PADDING-BOTTOM: 10px; MARGIN: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 0px
}
.resultsList .articleLink P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.2em; MARGIN: =
0px; LINE-HEIGHT: 1.3; PADDING-TOP: 0px
}
.resultsList .pubDetail {
	FONT-WEIGHT: normal
}
#contentColContainer {
	TABLE-LAYOUT: fixed; WIDTH: 100%
}
H1 {
	_margin-top: -.20em
}
* + HTML H1 {
	MARGIN-TOP: -0.2em
}
.memberTools {
	_margin-top: 0
}
* + HTML .memberTools {
	MARGIN-TOP: 0px
}

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Location: http://www.highbeam.com/StyleSheets/alt.size.m.css

BODY {
	FONT-SIZE: 100%
}

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: http://www.highbeam.com/javascript/minmax.js

// expand and collapse module version 1.00

var btnOpen = "/img/btn_open.gif";
var btnClose = "/img/btn_close.gif";

function minmax(mod, btn) {
  	var el = document.getElementById(mod);
  	var elBtn = document.getElementById(btn);
    
  	if ( el.style.display != "none" ) {
  		el.style.display = 'none';
  
  		elBtn.src = btnOpen;
  		elBtn.setAttribute("title", "Open");
  	}
  	else {
  		el.style.display = '';
  
  		elBtn.src = btnClose;
  		elBtn.setAttribute("title", "Close");
		}
}
------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.highbeam.com/WebResource.axd?d=m9grAHzSEBph2KyJ2jDCVQ2&t=633298513823750000

function WebForm_PostBackOptions(eventTarget, eventArgument, validation, =
validationGroup, actionUrl, trackFocus, clientSubmit) {
    this.eventTarget =3D eventTarget;
    this.eventArgument =3D eventArgument;
    this.validation =3D validation;
    this.validationGroup =3D validationGroup;
    this.actionUrl =3D actionUrl;
    this.trackFocus =3D trackFocus;
    this.clientSubmit =3D clientSubmit;
}
function WebForm_DoPostBackWithOptions(options) {
    var validationResult =3D true;
    if (options.validation) {
        if (typeof(Page_ClientValidate) =3D=3D 'function') {
            validationResult =3D =
Page_ClientValidate(options.validationGroup);
        }
    }
    if (validationResult) {
        if ((typeof(options.actionUrl) !=3D "undefined") && =
(options.actionUrl !=3D null) && (options.actionUrl.length > 0)) {
            theForm.action =3D options.actionUrl;
        }
        if (options.trackFocus) {
            var lastFocus =3D theForm.elements["__LASTFOCUS"];
            if ((typeof(lastFocus) !=3D "undefined") && (lastFocus !=3D =
null)) {
                if (typeof(document.activeElement) =3D=3D "undefined") {
                    lastFocus.value =3D options.eventTarget;
                }
                else {
                    var active =3D document.activeElement;
                    if ((typeof(active) !=3D "undefined") && (active =
!=3D null)) {
                        if ((typeof(active.id) !=3D "undefined") && =
(active.id !=3D null) && (active.id.length > 0)) {
                            lastFocus.value =3D active.id;
                        }
                        else if (typeof(active.name) !=3D "undefined") {
                            lastFocus.value =3D active.name;
                        }
                    }
                }
            }
        }
    }
    if (options.clientSubmit) {
        __doPostBack(options.eventTarget, options.eventArgument);
    }
}
var __pendingCallbacks =3D new Array();
var __synchronousCallBackIndex =3D -1;
function WebForm_DoCallback(eventTarget, eventArgument, eventCallback, =
context, errorCallback, useAsync) {
    var postData =3D __theFormPostData +
                "__CALLBACKID=3D" + WebForm_EncodeCallback(eventTarget) =
+
                "&__CALLBACKPARAM=3D" + =
WebForm_EncodeCallback(eventArgument);
    if (theForm["__EVENTVALIDATION"]) {
        postData +=3D "&__EVENTVALIDATION=3D" + =
WebForm_EncodeCallback(theForm["__EVENTVALIDATION"].value);
    }
    var xmlRequest,e;
    try {
        xmlRequest =3D new XMLHttpRequest();
    }
    catch(e) {
        try {
            xmlRequest =3D new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e) {
        }
    }
    var setRequestHeaderMethodExists =3D true;
    try {
        setRequestHeaderMethodExists =3D (xmlRequest && =
xmlRequest.setRequestHeader);
    }
    catch(e) {}
    var callback =3D new Object();
    callback.eventCallback =3D eventCallback;
    callback.context =3D context;
    callback.errorCallback =3D errorCallback;
    callback.async =3D useAsync;
    var callbackIndex =3D =
WebForm_FillFirstAvailableSlot(__pendingCallbacks, callback);
    if (!useAsync) {
        if (__synchronousCallBackIndex !=3D -1) {
            __pendingCallbacks[__synchronousCallBackIndex] =3D null;
        }
        __synchronousCallBackIndex =3D callbackIndex;
    }
    if (setRequestHeaderMethodExists) {
        xmlRequest.onreadystatechange =3D WebForm_CallbackComplete;
        callback.xmlRequest =3D xmlRequest;
        xmlRequest.open("POST", theForm.action, true);
        xmlRequest.setRequestHeader("Content-Type", =
"application/x-www-form-urlencoded");
        xmlRequest.send(postData);
        return;
    }
    callback.xmlRequest =3D new Object();
    var callbackFrameID =3D "__CALLBACKFRAME" + callbackIndex;
    var xmlRequestFrame =3D document.frames[callbackFrameID];
    if (!xmlRequestFrame) {
        xmlRequestFrame =3D document.createElement("IFRAME");
        xmlRequestFrame.width =3D "1";
        xmlRequestFrame.height =3D "1";
        xmlRequestFrame.frameBorder =3D "0";
        xmlRequestFrame.id =3D callbackFrameID;
        xmlRequestFrame.name =3D callbackFrameID;
        xmlRequestFrame.style.position =3D "absolute";
        xmlRequestFrame.style.top =3D "-100px"
        xmlRequestFrame.style.left =3D "-100px";
        try {
            if (callBackFrameUrl) {
                xmlRequestFrame.src =3D callBackFrameUrl;
            }
        }
        catch(e) {}
        document.body.appendChild(xmlRequestFrame);
    }
    var interval =3D window.setInterval(function() {
        xmlRequestFrame =3D document.frames[callbackFrameID];
        if (xmlRequestFrame && xmlRequestFrame.document) {
            window.clearInterval(interval);
            xmlRequestFrame.document.write("");
            xmlRequestFrame.document.close();
            xmlRequestFrame.document.write('<html><body><form =
method=3D"post"><input type=3D"hidden" name=3D"__CALLBACKLOADSCRIPT" =
value=3D"t"></form></body></html>');
            xmlRequestFrame.document.close();
            xmlRequestFrame.document.forms[0].action =3D theForm.action;
            var count =3D __theFormPostCollection.length;
            var element;
            for (var i =3D 0; i < count; i++) {
                element =3D __theFormPostCollection[i];
                if (element) {
                    var fieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
                    fieldElement.type =3D "hidden";
                    fieldElement.name =3D element.name;
                    fieldElement.value =3D element.value;
                    =
xmlRequestFrame.document.forms[0].appendChild(fieldElement);
                }
            }
            var callbackIdFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
            callbackIdFieldElement.type =3D "hidden";
            callbackIdFieldElement.name =3D "__CALLBACKID";
            callbackIdFieldElement.value =3D eventTarget;
            =
xmlRequestFrame.document.forms[0].appendChild(callbackIdFieldElement);
            var callbackParamFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
            callbackParamFieldElement.type =3D "hidden";
            callbackParamFieldElement.name =3D "__CALLBACKPARAM";
            callbackParamFieldElement.value =3D eventArgument;
            =
xmlRequestFrame.document.forms[0].appendChild(callbackParamFieldElement);=

            if (theForm["__EVENTVALIDATION"]) {
                var callbackValidationFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
                callbackValidationFieldElement.type =3D "hidden";
                callbackValidationFieldElement.name =3D =
"__EVENTVALIDATION";
                callbackValidationFieldElement.value =3D =
theForm["__EVENTVALIDATION"].value;
                =
xmlRequestFrame.document.forms[0].appendChild(callbackValidationFieldElem=
ent);
            }
            var callbackIndexFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
            callbackIndexFieldElement.type =3D "hidden";
            callbackIndexFieldElement.name =3D "__CALLBACKINDEX";
            callbackIndexFieldElement.value =3D callbackIndex;
            =
xmlRequestFrame.document.forms[0].appendChild(callbackIndexFieldElement);=

            xmlRequestFrame.document.forms[0].submit();
        }
    }, 10);
}
function WebForm_CallbackComplete() {
    for (i =3D 0; i < __pendingCallbacks.length; i++) {
        callbackObject =3D __pendingCallbacks[i];
        if (callbackObject && callbackObject.xmlRequest && =
(callbackObject.xmlRequest.readyState =3D=3D 4)) {
            WebForm_ExecuteCallback(callbackObject);
            if (!__pendingCallbacks[i].async) {
                __synchronousCallBackIndex =3D -1;
            }
            __pendingCallbacks[i] =3D null;
            var callbackFrameID =3D "__CALLBACKFRAME" + i;
            var xmlRequestFrame =3D =
document.getElementById(callbackFrameID);
            if (xmlRequestFrame) {
                xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
            }
        }
    }
}
function WebForm_ExecuteCallback(callbackObject) {
    var response =3D callbackObject.xmlRequest.responseText;
    if (response.charAt(0) =3D=3D "s") {
        if ((typeof(callbackObject.eventCallback) !=3D "undefined") && =
(callbackObject.eventCallback !=3D null)) {
            callbackObject.eventCallback(response.substring(1), =
callbackObject.context);
        }
    }
    else if (response.charAt(0) =3D=3D "e") {
        if ((typeof(callbackObject.errorCallback) !=3D "undefined") && =
(callbackObject.errorCallback !=3D null)) {
            callbackObject.errorCallback(response.substring(1), =
callbackObject.context);
        }
    }
    else {
        var separatorIndex =3D response.indexOf("|");
        if (separatorIndex !=3D -1) {
            var validationFieldLength =3D parseInt(response.substring(0, =
separatorIndex));
            if (!isNaN(validationFieldLength)) {
                var validationField =3D =
response.substring(separatorIndex + 1, separatorIndex + =
validationFieldLength + 1);
                if (validationField !=3D "") {
                    var validationFieldElement =3D =
theForm["__EVENTVALIDATION"];
                    if (!validationFieldElement) {
                        validationFieldElement =3D =
document.createElement("INPUT");
                        validationFieldElement.type =3D "hidden";
                        validationFieldElement.name =3D =
"__EVENTVALIDATION";
                        theForm.appendChild(validationFieldElement);
                    }
                    validationFieldElement.value =3D validationField;
                }
                if ((typeof(callbackObject.eventCallback) !=3D =
"undefined") && (callbackObject.eventCallback !=3D null)) {
                    =
callbackObject.eventCallback(response.substring(separatorIndex + =
validationFieldLength + 1), callbackObject.context);
                }
            }
        }
    }
}
function WebForm_FillFirstAvailableSlot(array, element) {
    var i;
    for (i =3D 0; i < array.length; i++) {
        if (!array[i]) break;
    }
    array[i] =3D element;
    return i;
}
var __nonMSDOMBrowser =3D =
(window.navigator.appName.toLowerCase().indexOf('explorer') =3D=3D -1);
var __theFormPostData =3D "";
var __theFormPostCollection =3D new Array();
function WebForm_InitCallback() {
    var count =3D theForm.elements.length;
    var element;
    for (var i =3D 0; i < count; i++) {
        element =3D theForm.elements[i];
        var tagName =3D element.tagName.toLowerCase();
        if (tagName =3D=3D "input") {
            var type =3D element.type;
            if ((type =3D=3D "text" || type =3D=3D "hidden" || type =
=3D=3D "password" ||
                ((type =3D=3D "checkbox" || type =3D=3D "radio") && =
element.checked)) &&
                (element.id !=3D "__EVENTVALIDATION")) {
                WebForm_InitCallbackAddField(element.name, =
element.value);
            }
        }
        else if (tagName =3D=3D "select") {
            var selectCount =3D element.options.length;
            for (var j =3D 0; j < selectCount; j++) {
                var selectChild =3D element.options[j];
                if (selectChild.selected =3D=3D true) {
                    WebForm_InitCallbackAddField(element.name, =
element.value);
                }
            }
        }
        else if (tagName =3D=3D "textarea") {
            WebForm_InitCallbackAddField(element.name, element.value);
        }
    }
}
function WebForm_InitCallbackAddField(name, value) {
    var nameValue =3D new Object();
    nameValue.name =3D name;
    nameValue.value =3D value;
    __theFormPostCollection[__theFormPostCollection.length] =3D =
nameValue;
    __theFormPostData +=3D name + "=3D" + WebForm_EncodeCallback(value) =
+ "&";
}
function WebForm_EncodeCallback(parameter) {
    if (encodeURIComponent) {
        return encodeURIComponent(parameter);
    }
    else {
        return escape(parameter);
    }
}
var __disabledControlArray =3D new Array();
function WebForm_ReEnableControls() {
    if (typeof(__enabledControlArray) =3D=3D 'undefined') {
        return false;
    }
    var disabledIndex =3D 0;
    for (var i =3D 0; i < __enabledControlArray.length; i++) {
        var c;
        if (__nonMSDOMBrowser) {
            c =3D document.getElementById(__enabledControlArray[i]);
        }
        else {
            c =3D document.all[__enabledControlArray[i]];
        }
        if ((typeof(c) !=3D "undefined") && (c !=3D null) && (c.disabled =
=3D=3D true)) {
            c.disabled =3D false;
            __disabledControlArray[disabledIndex++] =3D c;
        }
    }
    setTimeout("WebForm_ReDisableControls()", 0);
    return true;
}
function WebForm_ReDisableControls() {
    for (var i =3D 0; i < __disabledControlArray.length; i++) {
        __disabledControlArray[i].disabled =3D true;
    }
}
function WebForm_FireDefaultButton(event, target) {
        if (event.keyCode =3D=3D 13 && !(event.srcElement && =
(event.srcElement.tagName.toLowerCase() =3D=3D "textarea"))) {
        var defaultButton;
        if (__nonMSDOMBrowser) {
            defaultButton =3D document.getElementById(target);
        }
        else {
            defaultButton =3D document.all[target];
        }
        if (defaultButton && typeof(defaultButton.click) !=3D =
"undefined") {
            defaultButton.click();
            event.cancelBubble =3D true;
            if (event.stopPropagation) event.stopPropagation();
            return false;
        }
    }
    return true;
}
function WebForm_GetScrollX() {
    if (__nonMSDOMBrowser) {
        return window.pageXOffset;
    }
    else {
        if (document.documentElement && =
document.documentElement.scrollLeft) {
            return document.documentElement.scrollLeft;
        }
        else if (document.body) {
            return document.body.scrollLeft;
        }
    }
    return 0;
}
function WebForm_GetScrollY() {
    if (__nonMSDOMBrowser) {
        return window.pageYOffset;
    }
    else {
        if (document.documentElement && =
document.documentElement.scrollTop) {
            return document.documentElement.scrollTop;
        }
        else if (document.body) {
            return document.body.scrollTop;
        }
    }
    return 0;
}
function WebForm_SaveScrollPositionSubmit() {
    if (__nonMSDOMBrowser) {
        theForm.elements['__SCROLLPOSITIONY'].value =3D =
window.pageYOffset;
        theForm.elements['__SCROLLPOSITIONX'].value =3D =
window.pageXOffset;
    }
    else {
        theForm.__SCROLLPOSITIONX.value =3D WebForm_GetScrollX();
        theForm.__SCROLLPOSITIONY.value =3D WebForm_GetScrollY();
    }
    if ((typeof(this.oldSubmit) !=3D "undefined") && (this.oldSubmit =
!=3D null)) {
        return this.oldSubmit();
    }
    return true;
}
function WebForm_SaveScrollPositionOnSubmit() {
    theForm.__SCROLLPOSITIONX.value =3D WebForm_GetScrollX();
    theForm.__SCROLLPOSITIONY.value =3D WebForm_GetScrollY();
    if ((typeof(this.oldOnSubmit) !=3D "undefined") && (this.oldOnSubmit =
!=3D null)) {
        return this.oldOnSubmit();
    }
    return true;
}
function WebForm_RestoreScrollPosition() {
    if (__nonMSDOMBrowser) {
        window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, =
theForm.elements['__SCROLLPOSITIONY'].value);
    }
    else {
        window.scrollTo(theForm.__SCROLLPOSITIONX.value, =
theForm.__SCROLLPOSITIONY.value);
    }
    if ((typeof(theForm.oldOnLoad) !=3D "undefined") && =
(theForm.oldOnLoad !=3D null)) {
        return theForm.oldOnLoad();
    }
    return true;
}
function WebForm_TextBoxKeyHandler(event) {
    if (event.keyCode =3D=3D 13) {
        var target;
        if (__nonMSDOMBrowser) {
            target =3D event.target;
        }
        else {
            target =3D event.srcElement;
        }
        if ((typeof(target) !=3D "undefined") && (target !=3D null)) {
            if (typeof(target.onchange) !=3D "undefined") {
                target.onchange();
                event.cancelBubble =3D true;
                if (event.stopPropagation) event.stopPropagation();
                return false;
            }
        }
    }
    return true;
}
function WebForm_AppendToClassName(element, className) {
    var current =3D element.className;
    if (current) {
        if (current.charAt(current.length - 1) !=3D ' ') {
            current +=3D ' ';
        }
        current +=3D className;
    }
    else {
        current =3D className;
    }
    element.className =3D current;
}
function WebForm_RemoveClassName(element, className) {
    var current =3D element.className;
    if (current) {
        if (current.substring(current.length - className.length - 1, =
current.length) =3D=3D ' ' + className) {
            element.className =3D current.substring(0, current.length - =
className.length - 1);
            return;
        }
        if (current =3D=3D className) {
            element.className =3D "";
            return;
        }
        var index =3D current.indexOf(' ' + className + ' ');
        if (index !=3D -1) {
            element.className =3D current.substring(0, index) + =
current.substring(index + className.length + 2, current.length);
            return;
        }
        if (current.substring(0, className.length) =3D=3D className + ' =
') {
            element.className =3D current.substring(className.length + =
1, current.length);
        }
    }
}
function WebForm_GetElementById(elementId) {
    if (document.getElementById) {
        return document.getElementById(elementId);
    }
    else if (document.all) {
        return document.all[elementId];
    }
    else return null;
}
function WebForm_GetElementByTagName(element, tagName) {
    var elements =3D WebForm_GetElementsByTagName(element, tagName);
    if (elements && elements.length > 0) {
        return elements[0];
    }
    else return null;
}
function WebForm_GetElementsByTagName(element, tagName) {
    if (element && tagName) {
        if (element.getElementsByTagName) {
            return element.getElementsByTagName(tagName);
        }
        if (element.all && element.all.tags) {
            return element.all.tags(tagName);
        }
    }
    return null;
}
function WebForm_GetElementDir(element) {
    if (element) {
        if (element.dir) {
            return element.dir;
        }
        return WebForm_GetElementDir(element.parentNode);
    }
    return "ltr";
}
function WebForm_GetElementPosition(element) {
    var result =3D new Object();
    result.x =3D 0;
    result.y =3D 0;
    result.width =3D 0;
    result.height =3D 0;
    if (element.offsetParent) {
        result.x =3D element.offsetLeft;
        result.y =3D element.offsetTop;
        var parent =3D element.offsetParent;
        while (parent) {
            result.x +=3D parent.offsetLeft;
            result.y +=3D parent.offsetTop;
            var parentTagName =3D parent.tagName.toLowerCase();
            if (parentTagName !=3D "table" &&
                parentTagName !=3D "body" &&=20
                parentTagName !=3D "html" &&=20
                parentTagName !=3D "div" &&=20
                parent.clientTop &&=20
                parent.clientLeft) {
                result.x +=3D parent.clientLeft;
                result.y +=3D parent.clientTop;
            }
            parent =3D parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x =3D element.left;
        result.y =3D element.top;
    }
    else {
        if (element.x) {
            result.x =3D element.x;
        }
        if (element.y) {
            result.y =3D element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) {
        result.width =3D element.offsetWidth;
        result.height =3D element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && =
element.style.pixelHeight) {
        result.width =3D element.style.pixelWidth;
        result.height =3D element.style.pixelHeight;
    }
    return result;
}
function WebForm_GetParentByTagName(element, tagName) {
    var parent =3D element.parentNode;
    var upperTagName =3D tagName.toUpperCase();
    while (parent && (parent.tagName.toUpperCase() !=3D upperTagName)) {
        parent =3D parent.parentNode ? parent.parentNode : =
parent.parentElement;
    }
    return parent;
}
function WebForm_SetElementHeight(element, height) {
    if (element && element.style) {
        element.style.height =3D height + "px";
    }
}
function WebForm_SetElementWidth(element, width) {
    if (element && element.style) {
        element.style.width =3D width + "px";
    }
}
function WebForm_SetElementX(element, x) {
    if (element && element.style) {
        element.style.left =3D x + "px";
    }
}
function WebForm_SetElementY(element, y) {
    if (element && element.style) {
        element.style.top =3D y + "px";
    }
}

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.highbeam.com/WebResource.axd?d=cZzpAHylmjcDvUSokaNIiDwH4ImOjFt5BeoPqYikd_NaMwAuq9JNpdpXwD5aJnXAqnmjdIcRiNtvXe8kYuJQ-nHpDezjwY-VaM3Q4nIGdQ41&t=633301181092656250

//-----------------------------------------------------------------------=

// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------=

// Atlas.js
// Atlas Framework.



//-----------------------------------------------------------------------=

// Copyright (C) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------=

// AtlasRuntime.js
// Atlas Runtime Framework.


var RuntimeVersion =3D "2.021006.A";



Function.abstractMethod =3D function() {
    throw 'Abstract method should be implemented';
}

Function.createCallback =3D function(method, context) {
    return function() {
        return method(context);
    }
}

Function.createDelegate =3D function(instance, method) {
    return function() {
        return method.apply(instance, arguments);
    }
}

Function.emptyFunction =3D Function.emptyMethod =3D function() {
}

Function.prototype.getBaseMethod =3D function(instance, methodName, =
baseTypeName) {
    var baseType =3D baseTypeName ? Function.parse(baseTypeName) : =
this.getBaseType();
    var baseMethod =3D null;

    if (baseType) {
        var directBaseType =3D baseType;
       =20
        if (instance._baseMethods) {
                       =20
            while (baseType) {
                var methodKey =3D baseType.getName() + '.' + methodName;
                var method =3D instance._baseMethods[methodKey];
                if (method) {
                    return method;
                }

                baseType =3D baseType._baseType;
            }
        }

        if (!baseMethod) {
            return directBaseType.prototype[methodName];
        }
    }
   =20
    return null;
}

Function.prototype.getBaseType =3D function() {
    return this._baseType;
}

Function.prototype.getName =3D function() {
    return this._typeName;
}

Function.parse =3D function(functionName) {
    if (!Function._htClasses) {
        Function._htClasses =3D {};
    }
    var fn =3D Function._htClasses[functionName];
    if (!fn) {
        try {
            eval('fn =3D ' + functionName);
            if (typeof(fn) !=3D 'function') {
                fn =3D null;
            }
            else {
                Function._htClasses[functionName] =3D fn;
            }
        }
        catch (ex) {
        }
    }
    return fn;
}

Function.prototype._copyProps =3D function(p_objFnc) {
    for (var strName in p_objFnc.prototype) {
        var vValue =3D p_objFnc.prototype[strName];
        if (!this.prototype[strName]) {
            this.prototype[strName] =3D vValue;
        }
    }
}

Function.prototype._setBases =3D function(p_objRoot) {
    if (p_objRoot._basePrototypePending) {
                var astrPending =3D this.prototype._astrPendingInherits =
|| [];   =20
        for (var i=3D0; i < astrPending.length; i++) {

            var fncType =3D astrPending[i] instanceof Function ? =
astrPending[i] : Function.parse(astrPending[i]);

                        if (!fncType._parentBase) {
                fncType._parentBase=3D [];
            }
            fncType._parentBase.push(p_objRoot._typeName);
            if (!p_objRoot._childBase) {
                p_objRoot._childBase=3D [];
            }
            p_objRoot._childBase.push(fncType._typeName);

                       =20
            if (fncType && (this !=3D fncType) && =
(!this.inheritsFrom(fncType)) && (!fncType.inheritsFrom(this)) && =
!fncType._sealed) {
                if (!fncType._typeName) {
                    fncType._typeName =3D =
typeof(astrPending[i])=3D=3D"function" ? astrPending[i]._typeName : =
astrPending[i];
                }
                if (!this.bases) {
                    this.bases =3D [];
                }
                this.bases.push(fncType);
                fncType._setBases(p_objRoot);
                this._copyProps(fncType);
            }
        }
    }
    this._basePrototypePending =3D false;
}

Function.prototype._callBaseConstructors =3D function(p_objInstance, =
p_objArgs) {
    if (this.bases) {
        for (var i=3D0; i < this.bases.length; i++) {                    =

            if (p_objArgs) {
                this.bases[i].apply(p_objInstance, p_objArgs);
            }
            else {
                this.bases[i].apply(p_objInstance);
            }
        }
    }
}

Function.prototype.callBaseMethod =3D function(instance, methodName, =
baseArguments) {
    var baseMethod =3D this.getBaseMethod(instance, methodName);
    if (baseMethod) {
        if (!baseArguments) {
            return baseMethod.apply(instance);
        }
        else {
            return baseMethod.apply(instance, baseArguments);
        }
    }
   =20
    return null;
}

Function.prototype.implementsInterface =3D function(interfaceType) {
    this._setBases(this);
    var interfaces =3D this._interfaces;
    if (interfaces) {
        if (interfaces.contains(interfaceType)) {
            return true;
        }
    }
    if (this.bases)
    {
        for (var i=3D0; i < this.bases.length; i++)
        {
            if (this.bases[i].implementsInterface(interfaceType))
            {
                return true;
            }
        }
    }
   =20
    return false;
}

Function.prototype.inheritsFrom =3D function(parentType) {
    if (parentType =3D=3D this) {
        return true;
    }
    if (!this._basesPending) {
        this._basesPending =3D true;
        this._setBases(this);
        delete this._basesPending;
    }
    if (this.bases) {
        for (var i =3D 0; i < this.bases.length; i++) {
            if (this.bases[i].inheritsFrom(parentType)) {
                return true;
            }
        }
    }
   =20
    return false;
}

Function.prototype.initializeBase =3D function(instance, baseArguments) =
{
                   =20
    if (this._interfaces) {
        for (var i =3D 0; i < this._interfaces.length; i++) {
            this._interfaces[i].call(instance);
        }
    }

    if (!this._parentBase)        {
        this._parentBase =3D [];
        this._parentBase.push(this._typeName);
        this._childBase =3D [];
        this._childBase.push(this._typeName);
    }=20
   =20
    this._setBases(this);
    this._callBaseConstructors(instance, baseArguments);
   =20
    return instance;
}

Function.prototype.isImplementedBy =3D function(instance) {
    if (!instance) return false;
    var instanceType =3D Object.getType(instance);
    if (!instanceType.implementsInterface) {
        return false;
    }
    return instanceType.implementsInterface(this);
}

Function.prototype.isInstanceOfType =3D function(instance) {
    if (typeof(instance) =3D=3D 'undefined' || instance =3D=3D null) {
        return false;
    }

    if (instance instanceof this) {
        return true;
    }
   =20
    var instanceType =3D Object.getType(instance);
    if (instanceType =3D=3D this) {
        return true;
    }
    if (!instanceType.inheritsFrom) {
        return false;
    }
    return instanceType.inheritsFrom(this);
}

Function.prototype.registerBaseMethod =3D function(instance, methodName) =
{
           =20
    if (!instance._baseMethods) {
        instance._baseMethods =3D { };
    }
    var methodKey =3D this.getName() + '.' + methodName;
    instance._baseMethods[methodKey] =3D instance[methodName];
}

Function.createInstance =3D function(type) {
    if (typeof(type) !=3D 'function') {
        type =3D Function.parse(type);
    }
   =20
    return new type();
}

Function.prototype.registerClass =3D function(typeName, baseType, =
interfaceType) {
       =20
    if (window.__safari) {
        this.prototype.constructor =3D this;
    }
    this._typeName =3D typeName;
    if (baseType) {
        this._baseType =3D baseType;
        if (!(baseType instanceof Array)) {
            baseType =3D [baseType];
        }
        if (!this.prototype._astrPendingInherits) {
            this.prototype._astrPendingInherits =3D [];
        }
        for (var i=3D0; i < baseType.length; i++) {
            this.prototype._astrPendingInherits.push(baseType[i]);
        }
        this._basePrototypePending =3D true;
    }
   =20
    if (interfaceType) {
        this._interfaces =3D [];
        for (var i =3D 2; i < arguments.length; i++) {
            interfaceType =3D arguments[i];
            this._interfaces.push(interfaceType);
        }
    }

    return this;
}

Function.prototype.registerAbstractClass =3D function(typeName, =
baseType) {
    this.registerClass.apply(this, arguments);
    this._abstract =3D true;
   =20
    return this;
}

Function.prototype.registerSealedClass =3D function(typeName, baseType) =
{
    this.registerClass.apply(this, arguments);
    this._sealed =3D true;
   =20
    return this;
}

Function.prototype.registerInterface =3D function(typeName) {
    this._typeName =3D typeName;
    this._interface =3D true;
    this._abstract =3D true;
    this._sealed =3D true;
   =20
    return this;
}

var registerNamespace =3D Function.registerNamespace =3D =
function(namespacePath) {
    var rootObject =3D window;
    var namespaceParts =3D namespacePath.split('.');
   =20
    for (var i =3D 0; i < namespaceParts.length; i++) {
        var currentPart =3D namespaceParts[i];
        if (!rootObject[currentPart]) {
            rootObject[currentPart] =3D new Object();
        }
        rootObject =3D rootObject[currentPart];
    }
}

Function._typeName =3D 'Function';

window.Type =3D Function;



Object.getType =3D function(instance) {
    var ctor =3D instance.constructor;
    if (!ctor || (typeof(ctor) !=3D "function") || !ctor._typeName) {
        return Object;
    }
    return instance.constructor;
}

Object.getTypeName =3D function(instance) {
    return Object.getType(instance).getName();
}

Object._typeName =3D 'Object';

Boolean.parse =3D function(value) {
    if (typeof(value) =3D=3D 'string') {
        return (value.trim().toLowerCase() =3D=3D 'true');
    }
    return value ? true : false;
}

Boolean._typeName =3D 'Boolean';

Number.parse =3D function(value) {
    if (!value || (value.length =3D=3D 0)) {
        return 0;
    }
    return parseFloat(value);
}

Number._typeName =3D 'Number';

String.prototype.endsWith =3D function(suffix) {
    return (this.substr(this.length - suffix.length) =3D=3D suffix);
}
String.prototype.startsWith =3D function(prefix) {
    return (this.substr(0, prefix.length) =3D=3D prefix);
}
String.prototype.lTrim =3D String.prototype.trimLeft =3D function() {
    return this.replace(/^\s*/, "");
}
String.prototype.rTrim =3D String.prototype.trimRight =3D function() {
    return this.replace(/\s*$/, "");
}
String.prototype.trim =3D function() {
    return this.trimRight().trimLeft();
}

String.format =3D function(format) {
    var result =3D "";
   =20
    for (var i=3D0;;) {
                var next =3D format.indexOf("{", i);
        if (next < 0) {
                        result +=3D format.slice(i);
            break;
        }
       =20
                result +=3D format.slice(i, next);
        i =3D next+1;
       =20
                if (format.charAt(i) =3D=3D '{') {
            result +=3D '{';
            i++;
            continue;
        }
       =20
                var next =3D format.indexOf("}", i);
       =20
                var brace =3D format.slice(i, next).split(':');
       =20
        var argNumber =3D Number.parse(brace[0])+1;
        var arg =3D arguments[argNumber];
        if (arg =3D=3D null) {
            arg =3D '';
        }

                if (arg.toFormattedString)
            result +=3D arg.toFormattedString(brace[1] ? brace[1] : '');
        else
            result +=3D arg.toString();
       =20
        i =3D next+1;
    }
   =20
    return result;
}

String.localeFormat =3D function(format) {
    for (var i =3D 1; i < arguments.length; i++) {
        var arg =3D arguments[i];
        if (arg =3D=3D null) {
            arg =3D '';
        }
        format =3D format.replace("{" + (i - 1) + "}", =
arg.toLocaleString());
    }
    return format;
}

String._typeName =3D 'String';

Array.prototype.add =3D Array.prototype.queue =3D function(item) {
    this.push(item);
}
Array.prototype.addRange =3D function(items) {
    var length =3D items.length;
   =20
    if (length !=3D 0) {
        for (var index =3D 0; index < length; index++) {
            this.push(items[index]);
        }
    }
}
Array.prototype.clear =3D function() {
    if (this.length > 0) {
        this.splice(0, this.length);
    }
}
Array.prototype.clone =3D function() {
    var clonedArray =3D [];
   =20
    var length =3D this.length;
    for (var index =3D 0; index < length; index++) {
        clonedArray[index] =3D this[index];
    }
    return clonedArray;
}
Array.prototype.contains =3D Array.prototype.exists =3D function(item) {
    var index =3D this.indexOf(item);
    return (index >=3D 0);
}
Array.prototype.dequeue =3D function() {
    return this.shift();
}
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf =3D function(item, startIndex) {
        var length =3D this.length;
        if (length !=3D 0) {
                        startIndex =3D startIndex || 0;
                        if (startIndex < 0) {
                startIndex =3D Math.max(0, length + startIndex);
            }
            for (var i =3D startIndex; i < length; i++) {
                if (this[i] =3D=3D item) {
                    return i;
                }
            }
        }
        return -1;
    }
}
if (!Array.prototype.forEach) {
    Array.prototype.forEach =3D function(fnCb, context) {
        var length =3D this.length;
        for (var i =3D 0; i < length; i++) {
            fnCb.call(context, this[i], i, this);
        }
    }
}
Array.prototype.insert =3D function(index, item) {
    this.splice(index, 0, item);
}
Array.prototype.remove =3D function(item) {
    var index =3D this.indexOf(item);
    if (index >=3D 0) {
        this.splice(index, 1);
    }
    return (index >=3D 0);
}
Array.prototype.removeAt =3D function(index) {
    this.splice(index, 1);
}

Array._typeName =3D 'Array';

Array.parse =3D function(value) {
    return eval('(' + value + ')');
}

RegExp.parse =3D function(value) {
    if (value.startsWith('/')) {
        var endSlashIndex =3D value.lastIndexOf('/');
        if (endSlashIndex > 1) {
            var expression =3D value.substring(1, endSlashIndex);
            var flags =3D value.substr(endSlashIndex + 1);
            return new RegExp(expression, flags);
        }
    }

    return null;   =20
}

RegExp._typeName =3D 'RegExp';

Date._typeName =3D 'Date';

Error.createError =3D function(message, details, innerError) {
    var e =3D new Error(message);

    if (details && details.length) {
        e.details =3D details;
    }
    if (innerError) {
        e.innerError =3D innerError;
    }

    return e;
}

Error._typeName =3D 'Error';



Type.registerNamespace('Sys');


Type.createEnum =3D function(name) {

    function getValues() {
        if (!enumeration._values) {
            var values =3D { };
           =20
            for (var f in enumeration) {
                if (typeof(enumeration[f]) !=3D 'function') {
                    values[f] =3D enumeration[f];
                }
            }
            enumeration._values =3D values;
        }
        return enumeration._values;
    }

    function valueFromString(s) {
        if (s) {
            for (var f in enumeration) {
                if (f.toLowerCase() =3D=3D=3D s.toLowerCase()) {
                    return enumeration[f];
                }
            }
        }
        return null;
    }

    function valueToString(value) {
        for (var i in enumeration) {
            if (enumeration[i] =3D=3D=3D value) {
                return i;
            }
        }
        throw Error.createError('Invalid Enumeration Value');
    }
   =20
    var enumeration =3D {};
        if (name) {
        eval('enumeration=3D' + name + '=3D{};');
    }
    enumeration.getValues =3D getValues;
    enumeration.parse =3D valueFromString;
    enumeration.toString =3D valueToString;
    enumeration.getName =3D function() {return name;}
    enumeration.isEnum =3D function() {return true;}
   =20
    for (var i =3D 1; i < arguments.length; i +=3D 2) {
        enumeration[arguments[i]] =3D arguments[i + 1];
    }
   =20
    return enumeration;
}

Type.createFlags =3D function(name) {

    function valueFromString(s) {
        var parts =3D s.split('|');
        var value =3D 0;
       =20
        for (var i =3D parts.length - 1; i >=3D 0; i--) {
            var part =3D parts[i].trim();
            var found =3D false;
           =20
            for (var f in flags) {
                if (f =3D=3D part) {
                    value |=3D flags[f];
                    found =3D true;
                    break;
                }
            }
            if (found =3D=3D false) {
                throw 'Invalid Enumeration Value';
            }
        }
       =20
        return value;
    }

    function valueToString(value) {
        var sb =3D new Sys.StringBuilder();
        for (var i in flags) {
            if ((flags[i] & value) !=3D 0) {
                if (sb.isEmpty() =3D=3D false) {
                    sb.append(' | ');
                }
                sb.append(i);
            }
        }
        return sb.toString();
    }

    var flags =3D {};
    if (name) {
        eval('flags=3D' + name + '=3D{};');
    }
    flags.parse =3D valueFromString;
    flags.toString =3D valueToString;
    flags.getName =3D function() {return name;}
    flags.isFlags =3D function() {return true;}
   =20
    for (var i =3D 1; i < arguments.length; i +=3D 2) {
        flags[arguments[i]] =3D arguments[i + 1];
    }
   =20
    return flags;
}

Sys.IArray =3D function() {
    this.get_length =3D Function.abstractMethod;
    this.getItem =3D Function.abstractMethod;
}
Sys.IArray.registerInterface("Sys.IArray");

Array.prototype.get_length =3D function() {
    return this.length;
}

Array.prototype.getItem =3D function(index) {
    return this[index];
}

Array._interfaces =3D [];
Array._interfaces.push(Sys.IArray);


Sys.IDisposable =3D function() {
    this.dispose =3D Function.abstractMethod;
}
Sys.IDisposable.registerInterface('Sys.IDisposable');

Sys.CultureInfo =3D =
{"Name":"en-US","NumberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecima=
lSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupS=
izes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencyS=
ymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativeP=
attern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"Negative=
InfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"N=
umberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePa=
ttern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentD=
ecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":","=
,"PercentSymbol":"%","PerMilleSymbol":"","NativeDigits":["0","1","2","3",=
"4","5","6","7","8","9"],"DigitSubstitution":1},"DateTimeFormat":{"AMDesi=
gnator":"AM","Calendar":{"MinSupportedDateTime":new =
Date(-59011459200000),"MaxSupportedDateTime":new =
Date(253402300799999),"AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoD=
igitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek=
":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy =
h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, =
yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM =
dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy =
HH\':\'mm\':\'ss =
\'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm =
tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","=
TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd=
 HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, =
yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"=
ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunda=
y","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"Abbrev=
iatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","=
Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","=
May","June","July","August","September","October","November","December","=
"],"IsReadOnly":false,"NativeCalendarName":"Gregorian =
Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May",=
"Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["Janu=
ary","February","March","April","May","June","July","August","September",=
"October","November","December",""]}};

Sys.StringBuilder =3D function(initialText) {
    var _parts =3D new Array();
   =20
    if ((typeof(initialText) =3D=3D 'string') &&
        (initialText.length !=3D 0)) {
        _parts.push(initialText);
    }

    this.append =3D function(text) {
        if ((text =3D=3D null) || (typeof(text) =3D=3D 'undefined')) {
            return;
        }
        if ((typeof(text) =3D=3D 'string') && (text.length =3D=3D 0)) {
            return;
        }
       =20
        _parts.push(text);
    }

    this.appendLine =3D function(text) {
        this.append(text);
        _parts.push('\r\n');
    }

    this.clear =3D function() {
        _parts.clear();
    }

    this.isEmpty =3D function() {
        return (_parts.length =3D=3D 0);
    }

    this.toString =3D function(delimiter) {
        return _parts.join(delimiter || '');
    }
}
Sys.StringBuilder.registerSealedClass('Sys.StringBuilder');
if (!window.XMLHttpRequest) {
    window.XMLHttpRequest =3D function() {
        var progIDs =3D [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ];
	   =20
        for (var i =3D 0; i < progIDs.length; i++) {
            try {
                var xmlHttp =3D new ActiveXObject(progIDs[i]);
                return xmlHttp;
            }
            catch (ex) {
            }
        }
	   =20
        return null;
    }
}

Date.prototype.toFormattedString =3D function(format) {

    var dtf =3D Sys.CultureInfo.DateTimeFormat;

        if (!format)
        format =3D "F";

    if (format.length =3D=3D 1) {
        switch (format) {
        case "d":
            format =3D dtf.ShortDatePattern;
            break;
        case "D":
            format =3D dtf.LongDatePattern;
            break;
        case "t":
            format =3D dtf.ShortTimePattern;
            break;
        case "T":
            format =3D dtf.LongTimePattern;
            break;
        case "F":
            format =3D dtf.FullDateTimePattern;
            break;
        case "M": case "m":
            format =3D dtf.MonthDayPattern;
            break;
        case "s":
            format =3D dtf.SortableDateTimePattern;
            break;
        case "Y": case "y":
            format =3D dtf.YearMonthPattern;
            break;
        default:
            throw Error.createError("'" + format + "' is not a valid =
date format");
        }
    }

    var regex =3D =
/dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|=
zzz|zz|z/g;

        var ret =3D "";
    var hour;

    function addLeadingZero(num) {
        if (num < 10) {
            return '0' + num;
        }
        return num.toString();
    }

    function addLeadingZeros(num) {
        if (num < 10) {
            return '00' + num;
        }
        if (num < 100) {
            return '0' + num;
        }
        return num.toString();
    }

    for (;;) {

                var index =3D regex.lastIndex;

                var ar =3D regex.exec(format);

                ret +=3D format.slice(index, ar ? ar.index : =
format.length);

        if (!ar) break;

        switch (ar[0]) {
        case "dddd":
                        ret +=3D dtf.DayNames[this.getDay()];
            break;
        case "ddd":
                        ret +=3D dtf.AbbreviatedDayNames[this.getDay()];
            break;
        case "dd":
                        ret +=3D addLeadingZero(this.getDate());
            break;
        case "d":
                        ret +=3D this.getDate();
            break;
        case "MMMM":
                        ret +=3D dtf.MonthNames[this.getMonth()];
            break;
        case "MMM":
                        ret +=3D =
dtf.AbbreviatedMonthNames[this.getMonth()];
            break;
        case "MM":
                        ret +=3D addLeadingZero(this.getMonth() + 1);
            break;
        case "M":
                        ret +=3D this.getMonth() + 1;
            break;
        case "yyyy":
                        ret +=3D this.getFullYear();
            break;
        case "yy":
                        ret +=3D addLeadingZero(this.getFullYear() % =
100);
            break;
        case "y":
                        ret +=3D this.getFullYear() % 100;
            break;
        case "hh":
                        hour =3D this.getHours() % 12;
            if (hour =3D=3D 0) hour =3D 12;
            ret +=3D addLeadingZero(hour);
            break;
        case "h":
                        hour =3D this.getHours() % 12;
            if (hour =3D=3D 0) hour =3D 12;
            ret +=3D hour;
            break;
        case "HH":
                        ret +=3D addLeadingZero(this.getHours());
            break;
        case "H":
                        ret +=3D this.getHours();
            break;
        case "mm":
                        ret +=3D addLeadingZero(this.getMinutes());
            break;
        case "m":
                        ret +=3D this.getMinutes();
            break;
        case "ss":
                        ret +=3D addLeadingZero(this.getSeconds());
            break;
        case "s":
                        ret +=3D this.getSeconds();
            break;
        case "tt":
                        ret +=3D (this.getHours() < 12) ? =
dtf.AMDesignator : dtf.PMDesignator;
            break;
        case "t":
                        ret +=3D ((this.getHours() < 12) ? =
dtf.AMDesignator : dtf.PMDesignator).charAt(0);
            break;
        case "f":
                        ret +=3D =
addLeadingZeros(this.getMilliseconds()).charAt(0);
            break;
        case "ff":
                        ret +=3D =
addLeadingZeros(this.getMilliseconds()).substr(0, 2);
            break;
        case "fff":
                        ret +=3D =
addLeadingZeros(this.getMilliseconds());
            break;
        case "z":
                        hour =3D this.getTimezoneOffset() / 60;
            ret +=3D ((hour >=3D 0) ? '+' : '-') + =
Math.floor(Math.abs(hour));
            break;
        case "zz":
                        hour =3D this.getTimezoneOffset() / 60;
            ret +=3D ((hour >=3D 0) ? '+' : '-') + =
addLeadingZero(Math.floor(Math.abs(hour)));
            break;
        case "zzz":
                        hour =3D this.getTimezoneOffset() / 60;
            ret +=3D ((hour >=3D 0) ? '+' : '-') + =
addLeadingZero(Math.floor(Math.abs(hour))) +
                dtf.TimeSeparator + =
addLeadingZero(Math.abs(this.getTimezoneOffset() % 60));
            break;
        default:
            debug.assert(false);
        }
    }
    return ret;
}




Number.prototype.toFormattedString =3D function(format) {
        var _percentPositivePattern =3D ["n %", "n%", "%n" ];
    var _percentNegativePattern =3D ["-n %", "-n%", "-%n"];
    var _numberNegativePattern =3D ["(n)","-n","- n","n-","n -"];
    var _currencyPositivePattern =3D ["$n","n$","$ n","n $"];
    var _currencyNegativePattern =3D =
["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n =
$-","$ n-","$ -n","n- $","($ n)","(n $)"];

        function expandNumber(number, precision, groupSizes, sep, =
decimalChar) {
debug.assert(groupSizes.length > 0, "groupSizes must be an array of at =
least 1");
        var curSize =3D groupSizes[0];
        var curGroupIndex =3D 1;

                var numberString =3D ""+number;
        var decimalIndex =3D numberString.indexOf('.');
        var right =3D "";
        if (decimalIndex > 0) {
            right =3D numberString.slice(decimalIndex+1);
            numberString =3D numberString.slice(0, decimalIndex);
        }

                if (precision > 0) {
                        var rightDifference =3D right.length - =
precision;
            if (rightDifference > 0) {
                right =3D right.slice(0, precision);
            } else if (rightDifference < 0) {
                for (var i=3D0; i<Math.abs(rightDifference); i++) {
                    right +=3D '0';
                }
            }

                        right =3D decimalChar + right;
        }
        else {             right =3D "";
        }

        var stringIndex =3D numberString.length-1;
        var ret =3D "";
        while (stringIndex >=3D 0) {

                        if (curSize =3D=3D 0 || curSize > stringIndex) {
                if (ret.length > 0)
                    return numberString.slice(0, stringIndex + 1) + sep =
+ ret + right;
                else
                    return numberString.slice(0, stringIndex + 1) + =
right;
            }

            if (ret.length > 0)
                ret =3D numberString.slice(stringIndex - curSize + 1, =
stringIndex+1) + sep + ret;
            else
                ret =3D numberString.slice(stringIndex - curSize + 1, =
stringIndex+1);

            stringIndex -=3D curSize;

            if (curGroupIndex < groupSizes.length) {
                curSize =3D groupSizes[curGroupIndex];
                curGroupIndex++;
            }
        }
        return numberString.slice(0, stringIndex + 1) + sep + ret + =
right;
    }
    var nf =3D Sys.CultureInfo.NumberFormat;

        var number =3D Math.abs(this);

        if (!format)
        format =3D "D";

    var precision =3D -1;
    if (format.length > 1) precision =3D parseInt(format.slice(1));

    var pattern;
    switch (format.charAt(0)) {
    case "d":
    case "D":
        pattern =3D 'n';

                if (precision !=3D -1) {
            var numberStr =3D ""+number;
            var zerosToAdd =3D precision - numberStr.length;
            if (zerosToAdd > 0) {
                for (var i=3D0; i<zerosToAdd; i++) {
                    numberStr =3D '0'+numberStr;
                }
            }
            number =3D numberStr;
        }

                if (this < 0) number =3D -number;
        break;
    case "c":
    case "C":
        if (this < 0) pattern =3D =
_currencyNegativePattern[nf.CurrencyNegativePattern];
        else pattern =3D =
_currencyPositivePattern[nf.CurrencyPositivePattern];
        if (precision =3D=3D -1) precision =3D nf.CurrencyDecimalDigits;
        number =3D expandNumber(Math.abs(this), precision, =
nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, =
nf.CurrencyDecimalSeparator);
        break;
    case "n":
    case "N":
        if (this < 0) pattern =3D =
_numberNegativePattern[nf.NumberNegativePattern];
        else pattern =3D 'n';
        if (precision =3D=3D -1) precision =3D nf.NumberDecimalDigits;
        number =3D expandNumber(Math.abs(this), precision, =
nf.NumberGroupSizes, nf.NumberGroupSeparator, =
nf.NumberDecimalSeparator);
        break;
    case "p":
    case "P":
        if (this < 0) pattern =3D =
_percentNegativePattern[nf.PercentNegativePattern];
        else pattern =3D =
_percentPositivePattern[nf.PercentPositivePattern];
        if (precision =3D=3D -1) precision =3D nf.PercentDecimalDigits;
        number =3D expandNumber(Math.abs(this), precision, =
nf.PercentGroupSizes, nf.PercentGroupSeparator, =
nf.PercentDecimalSeparator);
        break;
    default:
        debug.assert(false, "'" + format + "' is not a valid number =
format");
    }

    var regex =3D /n|\$|-|%/g;

        var ret =3D "";

    for (;;) {

                var index =3D regex.lastIndex;

                var ar =3D regex.exec(pattern);

                ret +=3D pattern.slice(index, ar ? ar.index : =
pattern.length);

        if (!ar)
            break;

        switch (ar[0]) {
        case "n":
            ret +=3D number;
            break;
        case "$":
            ret +=3D nf.CurrencySymbol;
            break;
        case "-":
            ret +=3D nf.NegativeSign;
            break;
        case "%":
            ret +=3D nf.PercentSymbol;
            break;
        default:
            debug.assert(false);
        }
    }

    return ret;
}
Type.createEnum('Sys.ActionSequence', 'BeforeEventHandler', 0, =
'AfterEventHandler', 1);
Sys.IAction =3D function() {
    this.get_sequence =3D Function.abstractMethod;
    this.execute =3D Function.abstractMethod;
    this.setOwner =3D Function.abstractMethod;
}
Sys.IAction.registerInterface('Sys.IAction');

Type.Event =3D function(owner, autoInvoke) {
    var _owner =3D owner;
    var _handlers =3D null;
    var _actions =3D null;
    var _autoInvoke =3D autoInvoke;
    var _invoked =3D false;
   =20
    this.get_autoInvoke =3D function() {
        return _autoInvoke;
    }
   =20
    this._getActions =3D function() {
if (_actions && _actions.length && !_owner) throw "Actions are only =
supported on events that have an owner.";
        if (_actions =3D=3D null) {
            _actions =3D [];
        }
        return _actions;
    }
    this._getHandlers =3D function() {
        if (_handlers =3D=3D null) {
            _handlers =3D [];
        }
        return _handlers;
    }
    this._getOwner =3D function() {
        return _owner;
    }
   =20
    this.isActive =3D function() {
        return ((_handlers !=3D null) && (_handlers.length !=3D 0)) ||
               ((_actions !=3D null) && (_actions.length !=3D 0));
    }
   =20
    this.get_isInvoked =3D function() {
        return _invoked;
    }
   =20
    this.dispose =3D function() {
        if (_handlers) {
            for (var h =3D _handlers.length - 1; h >=3D 0; h--) {
                _handlers[h] =3D null;
            }
            _handlers =3D null;
        }
        if (_actions) {
            for (var i =3D _actions.length - 1; i >=3D 0; i--) {
                _actions[i].dispose();
            }
            _actions =3D null;
        }
       =20
        _owner =3D null;
    }
   =20
    this._setInvoked =3D function(value) {
        _invoked =3D true;
    }
}
Type.Event.registerSealedClass('Type.Event', null, Sys.IDisposable);

Type.Event.prototype.add =3D function(handler) {
    this._getHandlers().add(handler);
    if (this.get_autoInvoke() && this.get_isInvoked()) {
        handler(this._getOwner(), null);
    }
}
Type.Event.prototype.addAction =3D function(action) {
    action.setOwner(this._getOwner());
    this._getActions().add(action);
}
Type.Event.prototype.remove =3D function(handler) {
    this._getHandlers().remove(handler);
}
Type.Event.prototype.removeAction =3D function(action) {
    action.dispose();
    this._getActions().remove(action);
}
Type.Event.prototype.invoke =3D function(sender, eventArgs) {
    if (this.isActive()) {
        var actions =3D this._getActions();
        var handlers =3D this._getHandlers();
        var hasPostActions =3D false;
        var i;
       =20
        for (i =3D 0; i < actions.length; i++) {
            if (actions[i].get_sequence() =3D=3D =
Sys.ActionSequence.BeforeEventHandler) {
                actions[i].execute(sender, eventArgs);
            }
            else {
                hasPostActions =3D true;
            }
        }

        for (i =3D 0; i < handlers.length; i++) {
            handlers[i](sender, eventArgs);
        }
       =20
        if (hasPostActions) {
            for (i =3D 0; i < actions.length; i++) {
                if (actions[i].get_sequence() =3D=3D =
Sys.ActionSequence.AfterEventHandler) {
                    actions[i].execute(sender, eventArgs);
                }
            }
        }
       =20
        this._setInvoked();
    }
}

Type.createEnum('Sys.HostType', 'Other', 0, 'InternetExplorer', 1, =
'Firefox', 2);

Sys.Runtime =3D new function() {

    var _isBrowser =3D false;
    var _hostType =3D Sys.HostType.Other;
   =20
    var _initialized =3D false;
    var _disposed =3D false;
    var _unloading =3D false;

    var _disposableObjects =3D [];

    try {
        _isBrowser =3D (window !=3D null);
    }
    catch (e) {
    }

    if (_isBrowser) {
        if (navigator.userAgent.indexOf('MSIE') !=3D -1) {
            _hostType =3D Sys.HostType.InternetExplorer;
        }
        else if (navigator.userAgent.indexOf('Firefox') !=3D -1) {
            _hostType =3D Sys.HostType.Firefox;
        }
       =20
        window.attachEvent('onload', onWindowLoad);
        window.attachEvent('onunload', onWindowUnload);
    }

   =20
    this.get_hostName =3D function() {
        if (_isBrowser) {
            return navigator.userAgent;
        }
        return '';
    }

    this.get_hostType =3D function() {
        return _hostType;
    }
   =20
    this.load =3D new Type.Event( null,  true);
    this.unload =3D new Type.Event( null,  true);

    this.dispose =3D function() {
        if (_isBrowser) {
            window.detachEvent('onunload', onWindowUnload);
        }
        if (_disposed =3D=3D false) {
            _disposed =3D true;
            Sys.Runtime.unload.invoke(Sys.Runtime, null);

            if (_disposableObjects.length) {
                _unloading =3D true;
                var count =3D _disposableObjects.length;
                for (var i =3D 0; i < count; i++) {
                    _disposableObjects[i].dispose();
                }
                _disposableObjects.clear();
            }
        }
    }
   =20
    this.initialize =3D function() {
        if (_isBrowser) {
            window.detachEvent('onload', onWindowLoad);
        }
        if (_initialized =3D=3D false) {
            _initialized =3D true;
            Sys.Runtime.load.invoke(Sys.Runtime, null);
        }
    }
   =20
    this.registerDisposableObject =3D function(object) {
        _disposableObjects.add(object);
    }
   =20
    this.unregisterDisposableObject =3D function(object) {
        if (!_unloading && _disposableObjects.length) {
            _disposableObjects.remove(object);
        }
    }

    function onWindowLoad() {
        Sys.Runtime.initialize();
    }

    function onWindowUnload() {
        Sys.Runtime.dispose();
    }
}
window.XMLDOM =3D function(markup) {
    if (!window.XMLDOMParser) {
        var progIDs =3D [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' =
];
       =20
        for (var i =3D 0; i < progIDs.length; i++) {
            try {
                var xmlDOM =3D new ActiveXObject(progIDs[i]);
                xmlDOM.async =3D false;
                xmlDOM.loadXML(markup);
                xmlDOM.setProperty('SelectionLanguage', 'XPath');
               =20
                return xmlDOM;
            }
            catch (ex) {
            }
        }
       =20
        return null;
    }
    else {
        var domParser =3D new window.XMLDOMParser();
        return domParser.parseFromString(markup, 'text/xml');
    }
}



Type.registerNamespace('Sys');


if (!Debug.breakIntoDebugger) {
    Debug.breakIntoDebugger =3D function(message) {
        Debug.writeln(message);
        eval('debugger;');
    }
}

Sys._Debug =3D function() {

    this.assert =3D function(condition, message, displayCaller) {
        if (!condition) {
            message =3D 'Assertion Failed: ' + message + (displayCaller =
? '\r\nat ' + this.assert.caller : '');
            if (confirm(message + '\r\n\r\nBreak into debugger?')) {
                this.fail(message);
            }
        }
    }

    this.clearTrace =3D function() {
        var traceElement =3D document.getElementById('__atlas_trace');
        if (traceElement) {
            var children =3D traceElement.childNodes;
            for(var i =3D children.length - 2; i > 0; i--) {
                traceElement.removeChild(children[i]);
            }
            document.getElementById('__atlas_trace').style.display =3D =
'none';
        }
    }

    this.dump =3D function(object, name, recursive, indentationPadding, =
loopArray) {
        name =3D name ? name : '';
        indentationPadding =3D indentationPadding ? indentationPadding : =
'';
        if (object =3D=3D null) {
            this.trace(indentationPadding + name + ': null');
            return;
        }
        switch(typeof(object)) {
            case 'undefined':
                this.trace(indentationPadding + name + ': Undefined');
                break;
            case 'number': case 'string': case 'boolean':
                this.trace(indentationPadding + name + ': ' + object);
                break;
            default:
                if (Date.isInstanceOfType(object) || =
RegExp.isInstanceOfType(object)) {
                    this.trace(indentationPadding + name + ': ' + =
object.toString());
                    break;
                }
                if (!loopArray) {
                    loopArray =3D [];
                }
                else if (loopArray.contains(object)) {
                    this.trace(indentationPadding + name + ': ...');
                    return;
                }
                loopArray.add(object);
                var type =3D Object.getType(object);
                var tagName =3D object.tagName;
                var attributes =3D object.attributes;
                if ((type =3D=3D Object) && tagName && attributes) {
                    this.trace(indentationPadding + name + ' {' + =
tagName + '}');
                    indentationPadding +=3D '+';
                    length =3D attributes.length;
                    for (var i =3D 0; i < length; i++) {
                        var val =3D attributes[i].nodeValue;
                        if (val) {
                            this.dump(val, attributes[i].nodeName, =
recursive, indentationPadding, loopArray);
                        }
                    }
                }
                else {
                    var typeName =3D type.getName();
                    this.trace(indentationPadding + name + =
(typeof(typeName) =3D=3D 'string' ? ' {' + typeName + '}' : ''));
                    if ((indentationPadding =3D=3D '') || recursive) {
                        indentationPadding +=3D '+';
                        var i, length, properties, p, v;
                        if (Sys.IArray.isImplementedBy(object)) {
                            length =3D object.get_length();
                            for (i =3D 0; i < length; i++) {
                                this.dump(object.getItem(i), '[' + i + =
']', recursive, indentationPadding, loopArray);
                            }
                        }
                        if =
(Sys.ITypeDescriptorProvider.isImplementedBy(object)) {
                            var td =3D =
Sys.TypeDescriptor.getTypeDescriptor(object);
                            properties =3D td._getProperties();
                            for (p in properties) {
                                var propertyInfo =3D properties[p];
                                if (propertyInfo.name) {
                                    v =3D =
Sys.TypeDescriptor.getProperty(object, propertyInfo.name);
                                    this.dump(v, p, recursive, =
indentationPadding, loopArray);
                                }
                            }
                        }
                        else {
                            for (p in object) {
                                v =3D object[p];
                                if (!Function.isInstanceOfType(v) && =
!Type.Event.isInstanceOfType(v)) {
                                    this.dump(v, p, recursive, =
indentationPadding, loopArray);
                                }
                            }
                        }
                    }
                }
                loopArray.remove(object);
        }
    }

    this.fail =3D function(message) {
        Debug.breakIntoDebugger(message);
    }

    this.trace =3D function(text) {
        Debug.writeln(text);

        var traceElement =3D document.getElementById('__atlas_trace');
        if (!traceElement) {
            traceElement =3D document.createElement('FIELDSET');
            traceElement.id =3D '__atlas_trace';
            traceElement.style.backgroundColor =3D 'white';
            traceElement.style.color =3D 'black';
            traceElement.style.textAlign =3D 'left';
            traceElement.style.font =3D 'normal normal normal 1em/1.1em =
verdana,sans-serif';
            var legend =3D document.createElement('LEGEND');
            var legendText =3D document.createTextNode('Debugging =
Trace');
            legend.appendChild(legendText);
            traceElement.appendChild(legend);
            var clearButton =3D document.createElement('INPUT');
            clearButton.type =3D 'button';
            clearButton.value =3D 'Clear Trace';
            clearButton.onclick =3D debug.clearTrace;
            traceElement.appendChild(clearButton);
            document.body.appendChild(traceElement);
        }
        var traceLine =3D document.createElement('DIV');
        traceLine.innerHTML =3D text;
        traceElement.insertBefore(traceLine, =
traceElement.childNodes[traceElement.childNodes.length - 1]);
        traceElement.style.display =3D 'block';
    }

        this.checkType =3D function(debugTag, name, value, type) {
        if (!type.isInstanceOfType(value)) {
            this.assert(false, String.format("{0}: parameter '{1}' was =
set to a '{2}' while it should be of type '{3}'. Its value is '{4}'",
                debugTag, name, Object.getTypeName(value), =
type.getName(), value));
        }
    }

        this.validateParameters =3D function(debugTag, argumentArray, =
validationData) {
                for (var i=3D0; i<validationData.length; i++) {
                        if (!validationData[i])
                continue;

            var paramName =3D validationData[i][0];
            var checksToMake =3D validationData[i][1];
            var paramOptional =3D validationData[i][2];

                        if (!argumentArray[i]) {
                                if (paramOptional)
                    continue;

                this.assert(false, String.format("{0}: The required =
parameter '{1}' of type '{2}' is missing",
                    debugTag, paramName, checksToMake.getName()));
            }
            else {
                this.checkType(debugTag, paramName, argumentArray[i], =
checksToMake);
            }
        }
    }
}
Sys._Debug.registerSealedClass('Sys._Debug');

window.debug =3D new Sys._Debug();

Sys.Attributes =3D new function() {

    this.defineAttribute =3D function(attributeName) {
        this[attributeName] =3D attributeName;
    }
}

Sys.Attributes.defineAttribute('Element');


Sys.TypeDescriptor =3D function() {
    var _properties =3D { };
    var _events =3D { };
    var _methods =3D { };
    var _attributes =3D { };
   =20
    this._getAttributes =3D function() {
        return _attributes;
    }
   =20
    this._getEvents =3D function() {
        return _events;
    }
   =20
    this._getMethods =3D function() {
        return _methods;
    }
   =20
    this._getProperties =3D function() {
        return _properties;
    }
}
Sys.TypeDescriptor.registerSealedClass('Sys.TypeDescriptor');

Sys.TypeDescriptor.prototype.addAttribute =3D function(attributeName, =
attributeValue) {
    this._getAttributes()[attributeName] =3D attributeValue;
}

Sys.TypeDescriptor.prototype.addEvent =3D function(eventName, =
supportsActions) {
    this._getEvents()[eventName] =3D { name: eventName, actions: =
supportsActions };
}

Sys.TypeDescriptor.prototype.addMethod =3D function(methodName, =
associatedParameters) {
    this._getMethods()[methodName] =3D { name: methodName, parameters: =
associatedParameters };
}

Sys.TypeDescriptor.prototype.addProperty =3D function(propertyName, =
propertyType, readOnly) {
    if (!readOnly) {
        readOnly =3D false;
    }
    var associatedAttributes;
    if (arguments.length > 3) {
        associatedAttributes =3D { };
        for (var i =3D 3; i < arguments.length; i +=3D 2) {
            var attribute =3D arguments[i];
            var value =3D arguments[i + 1];
            associatedAttributes[attribute] =3D value;
        }
    }
    this._getProperties()[propertyName] =3D { name: propertyName, type: =
propertyType, isReadOnly: readOnly, attributes: associatedAttributes };
}

Sys.TypeDescriptor.addType =3D function(tagPrefix, tagName, type) {
    if (!Sys.TypeDescriptor._registeredTags) {
        Sys.TypeDescriptor._registeredTags =3D { };
    }

    var tagTable =3D Sys.TypeDescriptor._registeredTags[tagPrefix];
    if (!tagTable) {
        tagTable =3D { };
        Sys.TypeDescriptor._registeredTags[tagPrefix] =3D tagTable;
    }

    tagTable[tagName] =3D type;
}

Sys.TypeDescriptor.createParameter =3D function(parameterName, =
parameterType) {
    return { name: parameterName, type: parameterType };
}

Sys.TypeDescriptor.getType =3D function(tagPrefix, tagName) {
    var type =3D null;
    if (Sys.TypeDescriptor._registeredTags) {
        var tagNameTable =3D =
Sys.TypeDescriptor._registeredTags[tagPrefix];
        if (tagNameTable) {
            type =3D tagNameTable[tagName];
        }
    }
debug.assert(type, String.format("Unrecognized tag {0}:{1}", tagPrefix, =
tagName));
    return type;
}

Sys.TypeDescriptor.getTypeDescriptor =3D function(instance) {
    if (instance =3D=3D null) {
        throw Error.createError('instance is null in =
TypeDescriptor.getTypeDescriptor');
    }

    var type =3D Object.getType(instance);
    var td =3D type._descriptor;
    if (!td && !type._descriptorChecked) {
        if (Sys.ITypeDescriptorProvider.isImplementedBy(instance)) {
            td =3D instance.getDescriptor();
debug.assert(td, String.format('Failed to get type descriptor for =
instance of type "{0}"', type.getName()));
           =20
            type._descriptor =3D td;
        }
        type._descriptorChecked =3D true;
    }

    return td;
}

Sys.TypeDescriptor.unload =3D function() {
    if (Sys.TypeDescriptor._registeredTags) {
                        Sys.TypeDescriptor._registeredTags =3D null;
    }
}

Sys.TypeDescriptor.getAttribute =3D function(instance, attributeName) {
    if (instance =3D=3D null) {
        throw Error.createError('instance is null in =
TypeDescriptor.getAttribute');
    }

    var td =3D Sys.TypeDescriptor.getTypeDescriptor(instance);
debug.assert(td, 'Attributes are only supported for types implementing =
ITypeDescriptorProvider');
   =20
    return td._getAttributes()[attributeName];
}

Sys.TypeDescriptor.getProperty =3D function(instance, propertyName, key) =
{
    if (instance =3D=3D null) {
        throw Error.createError('instance is null in =
TypeDescriptor.getProperty');
    }

    if (Sys.ICustomTypeDescriptor.isImplementedBy(instance)) {
        return instance.getProperty(propertyName, key);
    }
   =20
    if ((propertyName =3D=3D null) || (propertyName.length =3D=3D 0)) {
        throw Error.createError('propertyName is null');
    }
   =20
    var td =3D Sys.TypeDescriptor.getTypeDescriptor(instance);
    if (!td) {
                var field =3D instance[propertyName];
        if (field && key) {
            field =3D field[key];
        }
        return field;
    }

    var propertyInfo =3D td._getProperties()[propertyName];
debug.assert(propertyInfo, String.format('Property "{0}" not found on =
object of type "{1}"', propertyName, Object.getTypeName(instance)));
   =20
    var getter =3D instance['get_' + propertyInfo.name];
   =20
    var object =3D getter.call(instance);
    if ((propertyInfo.type =3D=3D Object) && propertyInfo.isReadOnly && =
key) {
        object =3D object[key];
    }
    return object;
}

Sys.TypeDescriptor.setProperty =3D function(instance, propertyName, =
value, key) {
    if (instance =3D=3D null) {
        throw Error.createError('instance is null in =
TypeDescriptor.setProperty');
    }

    if (Sys.ICustomTypeDescriptor.isImplementedBy(instance)) {
        instance.setProperty(propertyName, value, key);
        return;
    }

    if ((propertyName =3D=3D null) || (propertyName.length =3D=3D 0)) {
        throw Error.createError('propertyName is null');
    }
   =20
    var td =3D Sys.TypeDescriptor.getTypeDescriptor(instance);
    if (!td) {
                var object =3D instance;
        if (key && key.length) {
            object =3D instance[propertyName];
            propertyName =3D key;
        }
        object[propertyName] =3D value;
        return;
    }
   =20
    var propertyInfo =3D td._getProperties()[propertyName];
debug.assert(propertyInfo, String.format('Property "{0}" not found on =
object of type "{1}"', propertyName, Object.getTypeName(instance)));
   =20
    if (!propertyInfo.isReadOnly) {
                        if ((propertyInfo.type !=3D String) && =
(typeof(value) =3D=3D 'string') && propertyInfo.type.parse) {
            value =3D propertyInfo.type.parse(value);
        }

        var setter =3D instance['set_' + propertyInfo.name];
       =20
        setter.call(instance, value);
    }
    else if ((propertyInfo.type =3D=3D Object) && key) {
        var getter =3D instance['get_' + propertyInfo.name];
        var object =3D getter.call(instance);
       =20
        object[key] =3D value;
    }
}

Sys.TypeDescriptor.invokeMethod =3D function(instance, methodName, =
parameters) {
    if (instance =3D=3D null) {
        throw Error.createError('instance is null in =
TypeDescriptor.invokeMethod');
    }

    if (Sys.ICustomTypeDescriptor.isImplementedBy(instance)) {
        return instance.invokeMethod(methodName, parameters);
    }
   =20
    var td =3D Sys.TypeDescriptor.getTypeDescriptor(instance);
    if (!td) {
        debug.assert(!parameters || !parameters.length, 'Parameters are =
not supported for methods on intrinsic objects');
        return instance[methodName].call(instance);
    }
   =20
    var methodInfo =3D td._getMethods()[methodName];
debug.assert(methodInfo, String.format('Method "{0}" not found on object =
of type "{1}"', methodName, Object.getTypeName(instance)));
   =20
    var method =3D instance[methodInfo.name];
   =20
    if (!methodInfo.parameters || !methodInfo.parameters.length) {
        return method.call(instance);
    }
    else {
               =20
        var arguments =3D [];
        for (var i =3D 0; i < methodInfo.parameters.length; i++) {
            var parameterInfo =3D methodInfo.parameters[i];
            var value =3D parameters[parameterInfo.name];
           =20
            if (value && (parameterInfo.type !=3D String) && =
(typeof(value) =3D=3D 'string')) {
                value =3D parameterInfo.type.parse(value);
            }

            arguments[i] =3D value;
        }
       =20
        return method.apply(instance, arguments);
    }
}

Sys.TypeDescriptor.getPropertyType =3D function(instance, propertyName, =
key) {
    if (instance =3D=3D null) {
        throw Error.createError('instance is null in =
TypeDescriptor.getPropertyType');
    }

    if (Sys.ICustomTypeDescriptor.isImplementedBy(instance)) {
        return Object;
    }
   =20
    if (key) {
        return Object;
    }

    if ((propertyName =3D=3D null) || (propertyName.length =3D=3D 0)) {
        throw Error.createError('propertyName is null');
    }

    var td =3D Sys.TypeDescriptor.getTypeDescriptor(instance);

    var propertyInfo =3D td._getProperties()[propertyName];
debug.assert(propertyInfo, String.format('Property "{0}" not found on =
object of type "{1}"', propertyName, Object.getTypeName(instance)));
   =20
    return propertyInfo.type;
}

Sys.ScriptLoader =3D function() {

    var _references;
    var _completionCallback;
    var _callbackContext;

    var _currentLoadingReference;
    var _currentOnScriptLoad;
   =20
    this.load =3D function(references, completionCallback, =
callbackContext) {
        _references =3D references;
        _completionCallback =3D completionCallback;
        _callbackContext =3D callbackContext;
       =20
        loadReferences();
    }

    function loadReferences() {
        if (_currentLoadingReference) {
            if ((_currentLoadingReference.readyState !=3D 'loaded') &&
                (_currentLoadingReference.readyState !=3D 'complete')) {
                return;
            }
            else {
                                if (_currentOnScriptLoad) {
                    eval(_currentOnScriptLoad);
                    _currentOnScriptLoad =3D null;
                }
               =20
                if (Sys.Runtime.get_hostType() !=3D =
Sys.HostType.InternetExplorer) {
                    _currentLoadingReference.onload =3D null;
                }
                else {
                    _currentLoadingReference.onreadystatechange =3D =
null;
                }
                _currentLoadingReference =3D null;
            }
        }

        if (_references.length) {
            var reference =3D _references.dequeue();
            var scriptElement =3D document.createElement('script');
            _currentLoadingReference =3D scriptElement;
            _currentOnScriptLoad =3D reference.onscriptload;
           =20
            if (Sys.Runtime.get_hostType() !=3D =
Sys.HostType.InternetExplorer) {
                scriptElement.readyState =3D 'loaded';
                scriptElement.onload =3D loadReferences;
            }
            else {
                scriptElement.onreadystatechange =3D loadReferences;
            }
            scriptElement.type =3D 'text/javascript';
            scriptElement.src =3D reference.url;

            var headElement =3D =
document.getElementsByTagName('head')[0];
            headElement.appendChild(scriptElement);

            return;
        }
       =20
        if (_completionCallback) {
            var completionCallback =3D _completionCallback;
            var callbackContext =3D _callbackContext;
           =20
            _completionCallback =3D null;
            _callbackContext =3D null;
           =20
            completionCallback(callbackContext);
        }
       =20
        _references =3D null;
    }
}
Sys.ScriptLoader.registerClass('Sys.ScriptLoader');

Sys.MarkupContext =3D function(document, global, parentContext, =
dataContext) {
    var _document =3D document;
    var _global =3D global;
    var _parentContext =3D parentContext;
    var _dataContext =3D dataContext;
    var _objects =3D { };
    var _pendingReferences =3D [];
    var _pendingEndUpdates =3D [];

    var _dataContextHidden =3D false;
    var _opened =3D false;
   =20
    this.get_dataContext =3D function() {
debug.assert(_opened);
       =20
        if (_dataContextHidden) {
            return null;
        }
        return _dataContext;
    }
   =20
    this.get_isGlobal =3D function() {
        return _global;
    }
   =20
    this.addObject =3D function(id, object) {
debug.assert(!_objects[id], String.format('Duplicate use of id "{0}" for =
object of type "{1}".', id, Object.getTypeName(object)));
        _objects[id] =3D object;
    }
    this.removeObject =3D function(component) {
        delete _objects[component.get_id()];
    }

    this.addEndUpdate =3D function(instance) {
debug.assert(_opened);
       =20
        _pendingEndUpdates.add(instance);
    }
       =20
    this.addReference =3D function(instance, propertyInfo, reference) {
debug.assert(_opened);
       =20
        _pendingReferences.add({ o: instance, p: propertyInfo, r: =
reference });
    }
   =20
    this.close =3D function() {
debug.assert(_opened);
       =20
        _opened =3D false;
        _dataContext =3D null;
       =20
                                        var i;
        for (i =3D 0; i < _pendingReferences.length; i++) {
            var pendingReference =3D _pendingReferences[i];
           =20
            var instance =3D pendingReference.o;
            var propertyInfo =3D pendingReference.p;
            var propertyValue =3D pendingReference.r;

            var object =3D this.findObject(propertyValue);
debug.assert(object, String.format('Could not resolve reference to =
object named "{0}" for "{1}" property on object of type "{2}"', =
propertyValue, propertyInfo.name, Object.getTypeName(instance)));

            var setter =3D instance['set_' + propertyInfo.name];
            setter.call(instance, object);
        }
        _pendingReferences =3D null;
       =20
        for (i =3D 0; i < _pendingEndUpdates.length; i++) {
            _pendingEndUpdates[i].endUpdate();
        }
        _pendingEndUpdates =3D null;
    }

    this.dispose =3D function() {
        if (!_global) {
                                                                        =
for (var o in _objects) {
                if (Sys.IDisposable.isImplementedBy(_objects[o])) {
                    _objects[o].dispose();
                }
               =20
                _objects[o] =3D null;
            }
        }
       =20
        _document =3D null;
        _parentContext =3D null;
        _dataContext =3D null;

        _objects =3D null;
        _pendingReferences =3D null;
        _pendingEndUpdates =3D null;
    }
   =20
    this.findElement =3D function(id) {
        if (_opened) {
debug.assert(_document !=3D null);
           =20
            var element =3D _document.getElementById(id);
            if (!element && _parentContext) {
                element =3D _parentContext.findElement(id);
            }
            return element;
        }
       =20
        return null;
    }
   =20
    this.findObject =3D function(id) {
        var object =3D _objects[id];
        if (!object && _parentContext) {
            object =3D _parentContext.findObject(id);
        }
       =20
        return object;
    }
   =20
    this.hideDataContext =3D function() {
debug.assert(_opened);
       =20
        if (!_dataContextHidden) {
            _dataContextHidden =3D true;
            return true;
        }
        return false;
    }
   =20
    this.open =3D function() {
debug.assert(_opened =3D=3D false);
       =20
        _pendingReferences =3D [];
        _pendingEndUpdates =3D [];
       =20
        _opened =3D true;
    }
   =20
    this.restoreDataContext =3D function() {
debug.assert(_opened);
       =20
        _dataContextHidden =3D false;
    }
}
Sys.MarkupContext.registerSealedClass('Sys.MarkupContext');

Sys.MarkupContext.createGlobalContext =3D function() {
    return new Sys.MarkupContext(document, true);
}

Sys.MarkupContext.createLocalContext =3D function(documentFragment, =
parentContext, dataContext) {
debug.assert(documentFragment !=3D null);
debug.assert(parentContext !=3D null);

    return new Sys.MarkupContext(documentFragment, false, parentContext, =
dataContext);
}

Sys.MarkupParser =3D new function() {

    this.initializeObject =3D function(instance, node, markupContext) {
        var td =3D Sys.TypeDescriptor.getTypeDescriptor(instance);
        if (!td) {
            return null;
        }
       =20
        var supportsBatchedUpdates =3D false;
        if (Sys.ISupportBatchedUpdates.isImplementedBy(instance)) {
            supportsBatchedUpdates =3D true;
            instance.beginUpdate();
        }
       =20
        var i, a;
        var attr, attrName;
        var propertyInfo, propertyName, propertyType, propertyValue;
        var eventInfo, eventValue;
        var setter, getter;
       =20
        var properties =3D td._getProperties();
        var events =3D td._getEvents();
       =20
        var attributes =3D node.attributes;
        if (attributes) {
            for (a =3D attributes.length - 1; a >=3D 0; a--) {
                attr =3D attributes[a];
                attrName =3D attr.nodeName;
               =20
debug.assert(properties[attrName] || events[attrName], =
String.format('Unrecognized attribute "{0}" on object of type "{1}"', =
attrName, Object.getTypeName(instance)));
               =20
                propertyInfo =3D properties[attrName];
                if (propertyInfo) {
                    propertyType =3D propertyInfo.type;
                    propertyValue =3D attr.nodeValue;
                   =20
                    var delayedSet =3D false;
                   =20
                    if (propertyType =3D=3D Object) {
                        var elementsOnly =3D (propertyInfo.attributes && =
propertyInfo.attributes[Sys.Attributes.Element]);
                        if (!elementsOnly) {
                            markupContext.addReference(instance, =
propertyInfo, propertyValue);
                            delayedSet =3D true;
                        }
                        else {
                            propertyValue =3D =
markupContext.findElement(propertyValue);
                        }
                    }
                   =20
                    if (!delayedSet) {
                        propertyName =3D propertyInfo.name;

                        setter =3D instance['set_' + propertyName];
                        if (propertyType !=3D Object) {
                            if (propertyType =3D=3D Array) {
                                propertyValue =3D Array.parse('[' + =
propertyValue + ']');
                            }
                            else if (propertyType !=3D String) {
                                propertyValue =3D =
propertyType.parse(propertyValue);
debug.assert((propertyValue !=3D=3D null) || !(propertyType.isEnum && =
propertyType.isEnum()), 'Invalid Enumeration Value');
                            }
                        }
                       =20
                        setter.call(instance, propertyValue);
                    }
                }
                else {
                    eventInfo =3D events[attrName];
                    if (eventInfo) {
                        var handler =3D Function.parse(attr.nodeValue);
                        if (handler) {
                            eventValue =3D instance[eventInfo.name];
                            eventValue.add(handler);
                        }
                    }
                }
            }
        }

        var childNodes =3D node.childNodes;
        if (childNodes && (childNodes.length !=3D 0)) {
            for (i =3D childNodes.length - 1; i >=3D 0; i--) {
                var childNode =3D childNodes[i];
                if (childNode.nodeType !=3D 1) {
                    continue;
                }
               =20
                var nodeName =3D childNode.baseName;

debug.assert(properties[nodeName] || events[nodeName], =
String.format('Unrecognized child node "{0}" on object of type "{1}"', =
nodeName, Object.getTypeName(instance)));

                propertyInfo =3D properties[nodeName];
                if (propertyInfo) {
                    propertyName =3D propertyInfo.name;
                    propertyType =3D propertyInfo.type;

                    if (propertyInfo.isReadOnly) {
                        getter =3D instance['get_' + propertyName];
                        var nestedObject =3D getter.call(instance);
                       =20
                        if (propertyType =3D=3D Array) {
                            if (childNode.childNodes.length !=3D 0) {
                                var items =3D =
this.parseNodes(childNode.childNodes, markupContext);
                                for (var itemIndex =3D 0; itemIndex < =
items.length; itemIndex++) {
                                    nestedObject.add(items[itemIndex]);
                                }
                            }
                        }
                        else if (propertyType =3D=3D Object) {
                            attributes =3D childNode.attributes;
                            for (a =3D attributes.length - 1; a >=3D 0; =
a--) {
                                attr =3D attributes[a];
                                nestedObject[attr.nodeName] =3D =
attr.nodeValue;
                            }
                        }
                        else {
                            this.initializeObject(nestedObject, =
childNode, markupContext);
                        }
                    }
                    else {
                        propertyValue =3D null;
                        if (propertyType =3D=3D String) {
                            propertyValue =3D childNode.text;
                        }
                        else if (childNode.childNodes.length !=3D 0) {
                            var valueNode;
                            for (var childNodeIndex =3D 0; =
childNodeIndex < childNode.childNodes.length; childNodeIndex++) {
                                if =
(childNode.childNodes[childNodeIndex].nodeType !=3D 1) {
                                    continue;
                                }
                                valueNode =3D =
childNode.childNodes[childNodeIndex];
                                break;
                            }
                            if (valueNode) {
                                propertyValue =3D =
this.parseNode(valueNode, markupContext);
                            }
                        }
                       =20
                        if (propertyValue) {
                            setter =3D instance['set_' + propertyName];
                            setter.call(instance, propertyValue);
                        }
                    }
                }
                else {
                    eventInfo =3D events[nodeName];
                    if (eventInfo && eventInfo.actions) {
                        var actions =3D =
this.parseNodes(childNode.childNodes, markupContext);
                        if (actions.length) {
                            eventValue =3D instance[eventInfo.name];
                            for (var e =3D 0; e < actions.length; e++) {
                                eventValue.addAction(actions[e]);
                            }
                        }
                    }
                }
            }
        }

        if (supportsBatchedUpdates) {
            markupContext.addEndUpdate(instance);
        }
       =20
        return instance;
    }

    this.parseNode =3D function(node, markupContext) {
        var parsedObject =3D null;
       =20
        var tagPrefix =3D node.prefix;
        if (!tagPrefix) {
            tagPrefix =3D node.tagPrefix;
        }
        if (!tagPrefix || (tagPrefix.length =3D=3D 0)) {
            tagPrefix =3D 'script';
        }

        var tagName =3D node.baseName;

        var tagType =3D Sys.TypeDescriptor.getType(tagPrefix, tagName);
        if (tagType) {
            var parseMethod =3D tagType.parseFromMarkup;
            if (!parseMethod) {
                var baseType =3D tagType.getBaseType();
                while (baseType) {
                    parseMethod =3D baseType.parseFromMarkup;
                    if (parseMethod) {
                        break;
                    }
                    baseType =3D baseType.getBaseType();
                }
                tagType.parseFromMarkup =3D parseMethod;
            }
           =20
            if (parseMethod) {
                parsedObject =3D parseMethod.call(null, tagType, node, =
markupContext);
            }
        }
        return parsedObject;
    }

    this.parseNodes =3D function(nodes, markupContext) {
        var objects =3D [];
       =20
        for (var i =3D 0; i < nodes.length; i++) {
            var objectNode =3D nodes[i];
            if (objectNode.nodeType !=3D 1) {
                                continue;
            }

            var processedObject =3D this.parseNode(objectNode, =
markupContext);
            if (processedObject) {
                objects.add(processedObject);
            }
        }
       =20
        return objects;
    }

    this.processDocument =3D function(markupContext, completionHandler) =
{
debug.assert(markupContext.get_isGlobal());
       =20
        var scripts =3D [];
        var scriptElements =3D document.getElementsByTagName('script');
        for (var e =3D 0; e < scriptElements.length; e++) {
            if (scriptElements[e].type =3D=3D 'text/xml-script') {
                var scriptElement =3D scriptElements[e];

                var scriptMarkup =3D scriptElement.innerHTML;
                if (scriptMarkup.startsWith('<!--')) {
                    var startIndex =3D scriptMarkup.indexOf('<', 1);
                    var endIndex =3D scriptMarkup.lastIndexOf('>');
                    endIndex =3D scriptMarkup.lastIndexOf('>', endIndex =
- 1);
                   =20
                    scriptMarkup =3D scriptMarkup.substring(startIndex, =
endIndex + 1);
                }
               =20
                if (scriptMarkup.length =3D=3D 0) {
                    continue;
                }

                var scriptDOM =3D new XMLDOM(scriptMarkup);
                var scriptDocumentNode =3D scriptDOM.childNodes[0];
                if (scriptDocumentNode =3D=3D null) {
                    throw Error.createError('Invalid xml markup in xml =
script block', scriptMarkup);
                }
                scripts.add(scriptDocumentNode);
            }
        }
       =20
        this.processDocumentScripts(markupContext, scripts, =
completionHandler);
    }

    this.processDocumentDelta =3D function(markupContext, =
scriptDocumentNode) {
debug.assert(markupContext.get_isGlobal());
       =20
                               =20
        var scriptDocumentItemNodes =3D scriptDocumentNode.childNodes;
       =20
        for (var i =3D scriptDocumentItemNodes.length - 1; i >=3D 0; =
i--) {
            var node =3D scriptDocumentItemNodes[i];
            if (node.nodeType !=3D 1) {
                continue;
            }
           =20
            if (node.baseName =3D=3D 'components') {
                markupContext.open();
                this.parseNodes(node.childNodes, markupContext);
                markupContext.close();
                break;
            }
        }
    }
   =20
    this.processDocumentScripts =3D function(markupContext, scripts, =
completionHandler) {
        var references =3D [];
        var componentNodes =3D [];
       =20
        for (var s =3D 0; s < scripts.length; s++) {
            var scriptDocumentNode =3D scripts[s];
            var scriptDocumentItemNodes =3D =
scriptDocumentNode.childNodes;
           =20
            for (var i =3D scriptDocumentItemNodes.length - 1; i >=3D 0; =
i--) {
                var node =3D scriptDocumentItemNodes[i];
                if (node.nodeType !=3D 1) {
                    continue;
                }
               =20
                if (node.baseName =3D=3D 'components') {
                    for (var c =3D 0; c < node.childNodes.length; c++) {
                        var componentNode =3D node.childNodes[c];
                        if (componentNode.nodeType !=3D 1) {
                            continue;
                        }
                       =20
                        componentNodes.add(componentNode);
                    }
                }
                else if (node.baseName =3D=3D 'references') {
                    for (var r =3D 0; r < node.childNodes.length; r++) {
                        var referenceNode =3D node.childNodes[r];
                        if (referenceNode.nodeType !=3D 1) {
                            continue;
                        }
                       =20
                        if (referenceNode.baseName =3D=3D 'add') {
                            var srcAttribute =3D =
referenceNode.attributes.getNamedItem('src');
                            var onloadAttribute =3D =
referenceNode.attributes.getNamedItem('onscriptload');
                            if (srcAttribute) {
                                var loadVal =3D '';
                                if (onloadAttribute) {
                                    loadVal =3D =
onloadAttribute.nodeValue;
                                }
                                references.queue({url: =
srcAttribute.nodeValue, onscriptload: loadVal});
                            }
                        }
                    }
                }
            }
        }
       =20
        this._processXMLScript(markupContext, references, =
componentNodes, completionHandler);
    }
   =20
    this._processXMLScript =3D function(markupContext, references, =
componentNodes, completionHandler) {
        var xmlScriptContext =3D
            {
                markupContext: markupContext,
                references: references,
                componentNodes: componentNodes,
                completionHandler: completionHandler
            };

        if (references && references.length) {
            var scriptLoader =3D new Sys.ScriptLoader();
            scriptLoader.load(references,
                              Function.createDelegate(this, =
this._processXMLScriptComponents),
                              xmlScriptContext);
        }
        else {
            this._processXMLScriptComponents(xmlScriptContext);
        }
    }
   =20
    this._processXMLScriptComponents =3D function(xmlScriptContext) {
debug.assert(xmlScriptContext !=3D null);
       =20
        var markupContext =3D xmlScriptContext.markupContext;
        var componentNodes =3D xmlScriptContext.componentNodes;
        var completionHandler =3D xmlScriptContext.completionHandler;

        markupContext.open();
        if (componentNodes && componentNodes.length) {
            this.parseNodes(componentNodes, markupContext);
        }
        markupContext.close();
       =20
        if (completionHandler) {
            completionHandler();
        }
    }
}
Sys.ISupportBatchedUpdates =3D function() {
    this.beginUpdate =3D Function.abstractMethod;
    this.endUpdate =3D Function.abstractMethod;
}
Sys.ISupportBatchedUpdates.registerInterface('Sys.ISupportBatchedUpdates'=
);
Sys.ICustomTypeDescriptor =3D function() {
    this.getProperty =3D Function.abstractMethod;
    this.setProperty =3D Function.abstractMethod;
    this.invokeMethod =3D Function.abstractMethod;
}
Sys.ICustomTypeDescriptor.registerInterface('Sys.ICustomTypeDescriptor');=


Sys.ITypeDescriptorProvider =3D function() {
    this.getDescriptor =3D Function.abstractMethod;
}
Sys.ITypeDescriptorProvider.registerInterface('Sys.ITypeDescriptorProvide=
r');
Sys.EventArgs =3D function() {

    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();
        return td;
    }
    Sys.EventArgs.registerBaseMethod(this, 'getDescriptor');
}
Sys.EventArgs.registerClass('Sys.EventArgs', null, =
Sys.ITypeDescriptorProvider);

Sys.EventArgs.Empty =3D new Sys.EventArgs();
Sys.CancelEventArgs =3D function() {
    Sys.CancelEventArgs.initializeBase(this);
    var _canceled =3D false;
   =20
    this.get_canceled =3D function() {
        return _canceled;
    }
    this.set_canceled =3D function(value) {
        _canceled =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.CancelEventArgs.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('canceled', Boolean);
        return td;
    }
    Sys.CancelEventArgs.registerBaseMethod(this, 'getDescriptor');
}
Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs);

Sys._Application =3D function() {

    var _markupContext =3D Sys.MarkupContext.createGlobalContext();

    this.load =3D new Type.Event(this);
    this.unload =3D new Type.Event(this);
   =20
    this.findObject =3D function(id) {
        if (_markupContext) {
            return _markupContext.findObject(id);
        }
        return null;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();
       =20
        td.addEvent('load', true);
        td.addEvent('unload', true);
       =20
        return td;
    }
   =20
    this.getMarkupContext =3D function() {
        return _markupContext;
    }

    this.getProperty =3D function(name, key) {
debug.fail('not supported');
    }
   =20
    this.getService =3D function(serviceType) {
                return null;
    }

    this.invokeMethod =3D function(methodName, parameters) {
debug.assert((parameters =3D=3D null) || (parameters.length =3D=3D 0), =
'parameters are not supported');
       =20
        var method =3D Function.parse(methodName);
        if (typeof(method) =3D=3D 'function') {
            method();
        }
    }

    this._loadIncremental =3D function(scriptDocument) {
        Sys.MarkupParser.processDocumentDelta(_markupContext, =
scriptDocument);
    }
   =20
    this.setProperty =3D function(name, value, key) {
debug.fail('not supported');
    }
   =20
    function onLoaded() {
        Sys.Application.load.invoke(Sys.Application, null);
        var pageLoadHandler =3D Function.parse('pageLoad');
        if (typeof(pageLoadHandler) =3D=3D 'function') {
            pageLoadHandler();
        }
    }

    function onRuntimeLoad() {
        Sys.Runtime.load.remove(onRuntimeLoad);
        Sys.MarkupParser.processDocument(_markupContext, onLoaded);
    }

    function onRuntimeUnload() {
        Sys.Runtime.unload.remove(onRuntimeUnload);

        Sys.Application.unload.invoke(Sys.Application, null);
        var pageUnloadHandler =3D Function.parse('pageUnload');
        if (typeof(pageUnloadHandler) =3D=3D 'function') {
            pageUnloadHandler();
        }

        if (_markupContext) {
            _markupContext.dispose();
            _markupContext =3D null;
        }
       =20
        Sys.TypeDescriptor.unload();
    }
   =20
    Sys.Runtime.load.add(onRuntimeLoad);
    Sys.Runtime.unload.add(onRuntimeUnload);
}

Sys._Application.registerSealedClass('Sys._Application', null, =
Sys.ITypeDescriptorProvider, Sys.ICustomTypeDescriptor);
Sys.TypeDescriptor.addType('script', 'application', Sys._Application);

Sys._Application.parseFromMarkup =3D function(type, node, markupContext) =
{
    if (!markupContext.get_isGlobal()) {
        return null;
    }

    var id =3D null;
    var idAttribute =3D node.attributes.getNamedItem('id');
    if (idAttribute) {
        id =3D idAttribute.nodeValue;
        node.attributes.removeNamedItem('id');
    }
   =20
    Sys.MarkupParser.initializeObject(Sys.Application, node, =
markupContext);
    if (idAttribute) {
        node.attributes.setNamedItem(idAttribute);
    }
    if (id && (markupContext.findObject(id) !=3D Sys.Application)) {
        markupContext.addObject(id, Sys.Application);
    }

    return Sys.Application;
}

function $object(id, context) {
    context =3D context || Sys.Application;
    return context.findObject(id);
}
Sys.INotifyPropertyChanged =3D function() {
    this.propertyChanged =3D null;
}
Sys.INotifyPropertyChanged.registerInterface('Sys.INotifyPropertyChanged'=
);

Sys.INotifyCollectionChanged =3D function() {
    this.collectionChanged =3D null;
}
Sys.INotifyCollectionChanged.registerInterface('Sys.INotifyCollectionChan=
ged');

Sys.PropertyChangedEventArgs =3D function(propertyName) {
    Sys.PropertyChangedEventArgs.initializeBase(this);
    var _propertyName =3D propertyName;
   =20
    this.get_propertyName =3D function() {
        return _propertyName;
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.PropertyChangedEventArgs.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('propertyName', String, true);
        return td;
    }
}
Sys.PropertyChangedEventArgs.registerSealedClass('Sys.PropertyChangedEven=
tArgs', Sys.EventArgs);
Type.createEnum('Sys.NotifyCollectionChangedAction', 'Add', 0, 'Remove', =
1, 'Reset', 2);
Sys.CollectionChangedEventArgs =3D function(action, changedItem) {
    Sys.CollectionChangedEventArgs.initializeBase(this);
   =20
    var _action =3D action;
    var _changedItem =3D changedItem;
   =20
    this.get_action =3D function() {
        return _action;
    }
   =20
    this.get_changedItem =3D function() {
        return _changedItem;
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.CollectionChangedEventArgs.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('action', Sys.NotifyCollectionChangedAction, =
true);
        td.addProperty('changedItem', Object, true);
        return td;
    }
}
Sys.CollectionChangedEventArgs.registerSealedClass('Sys.CollectionChanged=
EventArgs', Sys.EventArgs);
Type.createEnum('Sys.BindingDirection', 'In', 0, 'Out', 1, 'InOut', 2);
Sys.BindingEventArgs =3D function(value, direction, targetPropertyType, =
transformerArgument) {
    Sys.BindingEventArgs.initializeBase(this);
   =20
    var _value =3D value;
    var _direction =3D direction;
    var _targetPropertyType =3D targetPropertyType;
    var _transformerArgument =3D transformerArgument;
   =20
    this.get_direction =3D function() {
        return _direction;
    }
   =20
    this.get_targetPropertyType =3D function() {
        return _targetPropertyType;
    }
   =20
    this.get_transformerArgument =3D function() {
        return _transformerArgument;
    }
   =20
    this.get_value =3D function() {
        return _value;
    }
    this.set_value =3D function(value) {
        _value =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.BindingEventArgs.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('direction', Sys.BindingDirection, true);
        td.addProperty('targetPropertyType', Object, true);
        td.addProperty('transformerArgument', Object, true);
        td.addProperty('value', Object);
        return td;
    }
    Sys.BindingEventArgs.registerBaseMethod(this, 'getDescriptor');
}
Sys.BindingEventArgs.registerSealedClass('Sys.BindingEventArgs', =
Sys.CancelEventArgs);

Sys.BindingBase =3D function() {
    Sys.BindingBase.initializeBase(this);
   =20
    var _id;
    var _target;
    var _property;
    var _propertyKey;
    var _dataContext;
    var _dataPath;
    var _dataPathParts;
    var _transformerArgument =3D null;
    var _automatic =3D true;
    var _bindingExecuting =3D false;

    var _source;

    this.get_automatic =3D function() {
        return _automatic;
    }
    this.set_automatic =3D function(value) {
        if (!_source) {
            _automatic =3D value;
        }
    }

    this.get_dataContext =3D function() {
        return _dataContext;
    }
    this.set_dataContext =3D function(value) {
        if (!_source) {
            _dataContext =3D value;
        }
    }
   =20
    this.get_dataPath =3D function() {
        return _dataPath;
    }
    this.set_dataPath =3D function(value) {
        if (!_source) {
            _dataPath =3D value;
        }
    }

    this.get_id =3D function() {
        return _id;
    }
    this.set_id =3D function(value) {
        _id =3D value;
    }
   =20
    this.get_property =3D function() {
        return _property;
    }
    this.set_property =3D function(value) {
        if (!_source) {
            _property =3D value;
        }
    }
   =20
    this.get_propertyKey =3D function() {
        return _propertyKey;
    }
    this.set_propertyKey =3D function(value) {
        if (!_source) {
            _propertyKey =3D value;
        }
    }
   =20
    this.get_transformerArgument =3D function() {
        return _transformerArgument;
    }
    this.set_transformerArgument =3D function(value) {
        _transformerArgument =3D value;
    }
   =20
    this.transform =3D new Type.Event(null);

    this.dispose =3D function() {
        this.transform.dispose();
       =20
        _dataContext =3D null;
        _source =3D null;
        _target =3D null;
    }
    Sys.BindingBase.registerBaseMethod(this, 'dispose');
   =20
    this.evaluate =3D function(direction) {
debug.assert((direction =3D=3D Sys.BindingDirection.In) || (direction =
=3D=3D Sys.BindingDirection.Out));

        if (_bindingExecuting) {
            return;
        }
        _bindingExecuting =3D true;
        if (direction =3D=3D Sys.BindingDirection.In) {
            this.evaluateIn();
        }
        else {
            this.evaluateOut();
        }
        _bindingExecuting =3D false;
    }
   =20
    this.evaluateIn =3D function() {
        var targetPropertyType =3D =
Sys.TypeDescriptor.getPropertyType(_target, _property, _propertyKey);
        var value =3D this._getSourceValue(targetPropertyType);
       =20
        var canceled =3D false;
        if (this.transform.isActive()) {
            var be =3D new Sys.BindingEventArgs(value, =
Sys.BindingDirection.In, targetPropertyType, _transformerArgument);
           =20
            this.transform.invoke(this, be);
            canceled =3D be.get_canceled();
            value =3D be.get_value();
        }
       =20
        if (!canceled) {
            Sys.TypeDescriptor.setProperty(_target, _property, value, =
_propertyKey);
        }
    }
   =20
    this.evaluateOut =3D function() {
        throw Error.createError('evaluateOut is not supported for this =
binding');
    }
    Sys.BindingBase.registerBaseMethod(this, 'evaluateOut');
   =20
    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();
       =20
        td.addProperty('automatic', Boolean);
        td.addProperty('dataContext', Object);
        td.addProperty('dataPath', String);
        td.addProperty('id', String);
        td.addProperty('property', String);
        td.addProperty('propertyKey', String);
        td.addProperty('transformerArgument', String);
        td.addEvent('transform', false);
        td.addMethod('evaluateIn');

        return td;
    }
    Sys.BindingBase.registerBaseMethod(this, 'getDescriptor');
   =20
    this.initialize =3D function(target) {
debug.assert(target);
        _target =3D target;

        _source =3D _dataContext;
        if (!_source) {
                                    _source =3D =
_target.get_dataContext();
        }
debug.assert(_source, String.format('No data context available for =
binding with ID "{0}" and dataPath "{1}" on object of type "{2}"', _id, =
_dataPath, Object.getTypeName(_target)));

        if (_dataPath && _dataPath.indexOf('.') > 0) {
            _dataPathParts =3D _dataPath.split('.');
        }
    }
    Sys.BindingBase.registerBaseMethod(this, 'initialize');
   =20
    this._evaluateDataPath =3D function() {
debug.assert(_dataPathParts);

        var object =3D _source;
        for (var i =3D 0; i < _dataPathParts.length - 1; i++) {
            object =3D Sys.TypeDescriptor.getProperty(object, =
_dataPathParts[i]);
            if (!object) {
                return null;
            }
        }
        return object;
    }
   =20
    this._get_dataPathParts =3D function() {
        return _dataPathParts;
    }
   =20
    this._getSource =3D function() {
        return _source;
    }
   =20
    this._getSourceValue =3D function(targetPropertyType) {
        if (_dataPath && _dataPath.length) {       =20
            var propertyObject =3D _source;
            var propertyName =3D _dataPath;
           =20
            if (_dataPathParts) {
                propertyObject =3D this._evaluateDataPath();
                if (propertyObject =3D=3D null) {
                    return null;
                }
                propertyName =3D _dataPathParts[_dataPathParts.length - =
1];
            }

            return Sys.TypeDescriptor.getProperty(propertyObject, =
propertyName);
        }
        if (_source && =
Sys.ICustomTypeDescriptor.isImplementedBy(_source)) {
            return _source.getProperty('');
        }
        return _source;
    }
    Sys.BindingBase.registerBaseMethod(this, '_getSourceValue');
   =20
    this._getTarget =3D function() {
        return _target;
    }

    this._getTargetValue =3D function(destinationType) {
        var value =3D Sys.TypeDescriptor.getProperty(_target, _property, =
_propertyKey);
        var canceled =3D false;

        if (this.transform.isActive()) {
            var be =3D new Sys.BindingEventArgs(value, =
Sys.BindingDirection.Out, destinationType, _transformerArgument);
       =20
            this.transform.invoke(this, be);
            canceled =3D be.get_canceled();
            if (!canceled) {
                value =3D be.get_value();
            }
            else {
                value =3D null;
            }
        }
       =20
        return value;
    }
}
Sys.BindingBase.registerAbstractClass('Sys.BindingBase', null, =
Sys.IDisposable, Sys.ITypeDescriptorProvider);

Sys.BindingBase.parseFromMarkup =3D function(type, node, markupContext) =
{
    var newBinding =3D new type();

    var builtInTransform;
    var transformAttribute =3D =
node.attributes.getNamedItem('transform');
    if (transformAttribute) {
        var transformValue =3D transformAttribute.nodeValue;
        builtInTransform =3D =
Sys.BindingBase.Transformers[transformValue];
    }
    if (builtInTransform) {
        newBinding.transform.add(builtInTransform);
        node.attributes.removeNamedItem('transform');
    }

    var binding =3D Sys.MarkupParser.initializeObject(newBinding, node, =
markupContext);
    if (builtInTransform) {
        node.attributes.setNamedItem(transformAttribute)
    }
   =20
    if (binding) {
        if (binding.get_id()) {
            markupContext.addObject(binding.get_id(), binding);
        }
        return binding;
    }
    else {
        newBinding.dispose();
    }

    return null;
}
Sys.BindingBase.Transformers =3D { };

Sys.BindingBase.Transformers.Invert =3D function(sender, eventArgs) {
    eventArgs.set_value(!eventArgs.get_value());
}

Sys.BindingBase.Transformers.ToString =3D function(sender, eventArgs) {
debug.assert(eventArgs.get_direction() =3D=3D Sys.BindingDirection.In);

    var value =3D eventArgs.get_value();
    var newValue =3D '';
    var formatString =3D eventArgs.get_transformerArgument();
    var placeHolder =3D (formatString && (formatString.length !=3D 0)) ? =
formatString.indexOf('{0}') : -1;

    if (placeHolder !=3D -1) {
        newValue =3D String.format(formatString, value);
    }
    else if (value) {
        newValue =3D value.toString();
    }
    else {
        newValue =3D formatString;
    }

    eventArgs.set_value(newValue);
}

Sys.BindingBase.Transformers.ToLocaleString =3D function(sender, =
eventArgs) {
debug.assert(eventArgs.get_direction() =3D=3D Sys.BindingDirection.In);

    var value =3D eventArgs.get_value();
    var newValue =3D '';
    var formatString =3D eventArgs.get_transformerArgument();
    var placeHolder =3D (formatString && (formatString.length !=3D 0)) ? =
formatString.indexOf('{0}') : -1;

    if (placeHolder !=3D -1) {
        newValue =3D String.localeFormat(formatString, value);
    }
    else if (value) {
        newValue =3D value.toLocaleString();
    }
    else {
        newValue =3D formatString;
    }

    eventArgs.set_value(newValue);
}

Sys.BindingBase.Transformers.Add =3D function(sender, eventArgs) {
    var value =3D eventArgs.get_value();
    if (typeof(value) !=3D 'number') {
        value =3D Number.parse(value);
    }

    var delta =3D eventArgs.get_transformerArgument();
    if (!delta) {
        delta =3D 1;
    }
    if (typeof(delta) !=3D 'number') {
        delta =3D Number.parse(delta);
    }

    if (eventArgs.get_direction() =3D=3D Sys.BindingDirection.Out) {
        delta =3D -delta;
    }

    var newValue =3D value + delta;
    if (eventArgs.get_targetPropertyType() !=3D 'number') {
        newValue =3D newValue.toString();
    }

    eventArgs.set_value(newValue);
}

Sys.BindingBase.Transformers.Multiply =3D function(sender, eventArgs) {
    var value =3D eventArgs.get_value();
    if (typeof(value) !=3D 'number') {
        value =3D Number.parse(value);
    }

    var factor =3D eventArgs.get_transformerArgument();
    if (!factor) {
        factor =3D 1;
    }
    if (typeof(factor) !=3D 'number') {
        factor =3D Number.parse(factor);
    }

    var newValue;
    if (eventArgs.get_direction() =3D=3D Sys.BindingDirection.Out) {
        newValue =3D value / factor;
    }
    else {
        newValue =3D value * factor;
    }

    if (eventArgs.get_targetPropertyType() !=3D 'number') {
        newValue =3D newValue.toString();
    }

    eventArgs.set_value(newValue);
}

Sys.BindingBase.Transformers.Compare =3D function(sender, eventArgs) {
debug.assert(eventArgs.get_direction() =3D=3D Sys.BindingDirection.In);

    var value =3D eventArgs.get_value();
    var compareValue =3D eventArgs.get_transformerArgument();

    if (compareValue =3D=3D=3D null) {
        value =3D value ? true : false;
    }
    else {
        value =3D (value =3D=3D=3D compareValue);
    }

    eventArgs.set_value(value);
}

Sys.BindingBase.Transformers.CompareInverted =3D function(sender, =
eventArgs) {
debug.assert(eventArgs.get_direction() =3D=3D Sys.BindingDirection.In);

    var value =3D eventArgs.get_value();
    var compareValue =3D eventArgs.get_transformerArgument();

    if (compareValue =3D=3D=3D null) {
        value =3D value ? false : true;
    }
    else {
        value =3D (value !=3D=3D compareValue);
    }

    eventArgs.set_value(value);
}

Sys.BindingBase.Transformers.RSSTransform =3D function(sender, =
eventArgs) {
debug.assert(eventArgs.get_direction() =3D=3D Sys.BindingDirection.In);

    function getNodeValue(source, xPath) {
        var node =3D source.selectSingleNode(xPath);
        if (node) {
            return node.nodeValue;
        }
        return null;
    }

    var xmlNodes =3D eventArgs.get_value();
    if (!xmlNodes) {
        return;
    }

                    var dataItems =3D new Sys.Data.DataTable([
        new Sys.Data.DataColumn('title', String, null, false, true),
        new Sys.Data.DataColumn('description', String, null, false, =
true),
        new Sys.Data.DataColumn('link', String, null, false, true),
        new Sys.Data.DataColumn('author', String, null, false, true),
        new Sys.Data.DataColumn('category', String, null, false, true),
        new Sys.Data.DataColumn('comments', String, null, false, true),
        new Sys.Data.DataColumn('guid', String, null, true, true),
        new Sys.Data.DataColumn('pubDate', String, null, false, true),
        new Sys.Data.DataColumn('source', String, null, false, true)
    ]);

        for (var i =3D 0; i < xmlNodes.length; i++) {
        var xmlNode =3D xmlNodes[i];
        if (!xmlNode || (xmlNode.nodeType !=3D 1)) {
            continue;
        }

        var dataItem =3D {
            title : getNodeValue(xmlNode, './title/text()'),
            description : getNodeValue(xmlNode, './description/text()'),
            link : getNodeValue(xmlNode, './link/text()'),
            author : getNodeValue(xmlNode, './author/text()'),
            category : getNodeValue(xmlNode, './category/text()'),
            comments : getNodeValue(xmlNode, './comments/text()'),
            guid : getNodeValue(xmlNode, './guid/text()'),
            pubDate : getNodeValue(xmlNode, './pubDate/text()'),
            source : getNodeValue(xmlNode, './source/text()')
        };

        dataItems.add(dataItem);
    }

    eventArgs.set_value(dataItems);
}

Sys.Binding =3D function() {
    Sys.Binding.initializeBase(this);

    var _targetNotificationHandler;
    var _sourceNotificationHandler;

    var _direction =3D Sys.BindingDirection.In;
   =20
    this.get_direction =3D function() {
        return _direction;
    }
    this.set_direction =3D function(value) {
        if (!this._getSource()) {
            _direction =3D value;
        }
    }

    this.dispose =3D function() {
        if (_targetNotificationHandler) {
            var target =3D this._getTarget();
            target.propertyChanged.remove(_targetNotificationHandler);
            _targetNotificationHandler =3D null;
        }
       =20
        if (_sourceNotificationHandler) {
            var source =3D this._getSource();
            source.propertyChanged.remove(_sourceNotificationHandler);
            _sourceNotificationHandler =3D null;
        }
       =20
        Sys.Binding.callBaseMethod(this, 'dispose');
    }
   =20
    this.evaluateOut =3D function() {
        var propertyObject;
        var propertyName;
       =20
        var dataPathParts =3D this._get_dataPathParts();
        if (dataPathParts) {
            propertyObject =3D this._evaluateDataPath();
            propertyName =3D dataPathParts[dataPathParts.length - 1];
           =20
            if (!propertyObject) {
                return;
            }
        }
        else {
            propertyObject =3D this._getSource();
            propertyName =3D this.get_dataPath();
        }

debug.assert(propertyObject);

        var sourcePropertyType =3D =
Sys.TypeDescriptor.getPropertyType(propertyObject, propertyName);
       =20
        var value =3D this._getTargetValue(sourcePropertyType);
        if (value !=3D null) {
            Sys.TypeDescriptor.setProperty(propertyObject, propertyName, =
value);
        }
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.Binding.callBaseMethod(this, 'getDescriptor');
       =20
        td.addProperty('direction', Sys.BindingDirection);
        td.addMethod('evaluateOut');
        return td;
    }
   =20
    this.initialize =3D function(target) {
        Sys.Binding.callBaseMethod(this, 'initialize', [ target ]);
       =20
        if (this.get_automatic()) {
            if ((_direction !=3D Sys.BindingDirection.In) &&
                Sys.INotifyPropertyChanged.isImplementedBy(target)) {
                _targetNotificationHandler =3D =
Function.createDelegate(this, this._onTargetPropertyChanged);
                target.propertyChanged.add(_targetNotificationHandler);
            }
           =20
            if (_direction !=3D Sys.BindingDirection.Out) {
                var source =3D this._getSource();
                if (Sys.INotifyPropertyChanged.isImplementedBy(source)) =
{
                    _sourceNotificationHandler =3D =
Function.createDelegate(this, this._onSourcePropertyChanged);
                    =
source.propertyChanged.add(_sourceNotificationHandler);
                }

                this.evaluate(Sys.BindingDirection.In);
            }
        }
    }
   =20
    this._onSourcePropertyChanged =3D function(sender, eventArgs) {
debug.assert(_direction !=3D Sys.BindingDirection.Out);
       =20
        var compareProperty =3D this.get_dataPath();
        var dataPathParts =3D this._get_dataPathParts();
        if (dataPathParts) {
            compareProperty =3D dataPathParts[0];
        }
       =20
        var propertyName =3D eventArgs.get_propertyName();
        if (!propertyName || (propertyName =3D=3D compareProperty)) {
            this.evaluate(Sys.BindingDirection.In);
        }
    }
   =20
    this._onTargetPropertyChanged =3D function(sender, eventArgs) {
debug.assert(_direction !=3D Sys.BindingDirection.In);
       =20
        var propertyName =3D eventArgs.get_propertyName();
        if (!propertyName || (propertyName =3D=3D this.get_property())) =
{
            this.evaluate(Sys.BindingDirection.Out);
        }
    }
}
Sys.Binding.registerSealedClass('Sys.Binding', Sys.BindingBase);
Sys.TypeDescriptor.addType('script', 'binding', Sys.Binding);
Sys.XPathBinding =3D function() {
    Sys.XPathBinding.initializeBase(this);

    var _xpath;
   =20
    this.get_xpath =3D function() {
        return _xpath;
    }
    this.set_xpath =3D function(value) {
        if (!this._getSource()) {
            _xpath =3D value;
        }
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.XPathBinding.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('xpath', String);
        return td;
    }
   =20
    this.initialize =3D function(target) {
        Sys.XPathBinding.callBaseMethod(this, 'initialize', [ target ]);
       =20
        if (this.get_automatic()) {
            this.evaluate(Sys.BindingDirection.In);
        }
    }
   =20
    this._getSourceValue =3D function(targetPropertyType) {
        var source =3D Sys.XPathBinding.callBaseMethod(this, =
'_getSourceValue');
        if (!source) {
            return null;
        }
               =20
        if (targetPropertyType =3D=3D Sys.IArray) {
            var nodes =3D source.selectNodes(xpath);
           =20
                                                var list =3D [];
            for (var i =3D 0; i < nodes.length; i++) {
                var node =3D nodes[i];
               =20
                if (!node || (node.nodeType !=3D 1)) {
                    continue;
                }
                list.add(node);
            }
            return list;
        }
        else {
            var node =3D source.selectSingleNode(_xpath);
            if (node) {
                return node.nodeValue;
            }
            return null;
        }
    }
}
Sys.XPathBinding.registerSealedClass('Sys.XPathBinding', =
Sys.BindingBase);
Sys.TypeDescriptor.addType('script', 'xpathBinding', Sys.XPathBinding);

Sys.Component =3D function(registerAsDisposable) {
    var _id =3D null;
    var _initialized =3D false;
    var _updating =3D false;
   =20
    var _bindings =3D null;
    var _dataContext =3D null;
   =20
    var _events =3D [];

    if (registerAsDisposable) {
        Sys.Runtime.registerDisposableObject(this);
    }

    this.get_bindings =3D function() {
        if (!_bindings) {
            _bindings =3D [];
        }
        return _bindings;
    }

    this.get_dataContext =3D function() {
        return _dataContext;
    }
    Sys.Component.registerBaseMethod(this, 'get_dataContext');
   =20
    this.set_dataContext =3D function(value) {
        _dataContext =3D value;
    }

    this.get_id =3D function() {
        return _id;
    }
    this.set_id =3D function(value) {
        _id =3D value;
    }
   =20
    this.get_isInitialized =3D function() {
        return _initialized;
    }
   =20
    this.get_isUpdating =3D function() {
        return _updating;
    }

    this.createEvent =3D function(autoInvoke) {
        var eventObject =3D new Type.Event(this, autoInvoke);
        _events.add(eventObject);
       =20
        return eventObject;
    }

    this.propertyChanged =3D this.createEvent();
   =20
    this.beginUpdate =3D function() {
        _updating =3D true;
    }
   =20
    this.dispose =3D function() {
        if (_bindings) {
            for (var i =3D 0; i < _bindings.length; i++) {
                _bindings[i].dispose();
                _bindings[i] =3D null;
            }
            _bindings =3D null;
        }
       =20
        if (_events) {
            for (var e =3D _events.length - 1; e >=3D 0; e--) {
                _events[e].dispose();
                _events[e] =3D null;
            }
            _events =3D null;
        }
       =20
        Sys.Runtime.unregisterDisposableObject(this);
            }
    Sys.Component.registerBaseMethod(this, 'dispose');
   =20
    this.endUpdate =3D function() {
        _updating =3D false;
        if (!_initialized) {
            this.initialize();
        }
        this.updated();
    }

    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();
       =20
        td.addProperty('bindings', Array, true);
        td.addProperty('dataContext', Object);
        td.addProperty('id', String);
        td.addProperty('isInitialized', Boolean, true);
        td.addProperty('isUpdating', Boolean, true);
        td.addEvent('propertyChanged', true);
        return td;
    }
    Sys.Component.registerBaseMethod(this, 'getDescriptor');
   =20
    this.initialize =3D function() {
        if (_bindings) {
            for (var i =3D 0; i < _bindings.length; i++) {
                _bindings[i].initialize(this);
            }
        }
       =20
        _initialized =3D true;
    }
    Sys.Component.registerBaseMethod(this, 'initialize');

    this.raisePropertyChanged =3D function(propertyName) {
        this.propertyChanged.invoke(this, new =
Sys.PropertyChangedEventArgs(propertyName));
    }
    Sys.Component.registerBaseMethod(this, 'raisePropertyChanged');

    this.updated =3D function() {
    }
    Sys.Component.registerBaseMethod(this, 'updated');
}
Sys.Component.registerAbstractClass('Sys.Component', null, =
Sys.IDisposable, Sys.ITypeDescriptorProvider, =
Sys.ISupportBatchedUpdates, Sys.INotifyPropertyChanged);

Sys.Component.parseFromMarkup =3D function(type, node, markupContext) {
    var newComponent =3D Type.createInstance(type);
   =20
                                    var dataContextHidden =3D false;
    var dataContext =3D markupContext.get_dataContext();
    if (dataContext) {
        dataContextHidden =3D markupContext.hideDataContext();
    }

    var component =3D Sys.MarkupParser.initializeObject(newComponent, =
node, markupContext);
    if (component) {
        if (component.get_id()) {
            markupContext.addObject(component.get_id(), component);
        }
        if (dataContext) {
            component.set_dataContext(dataContext);
        }
    }
    else {
        newComponent.dispose();
    }
   =20
        if (dataContextHidden) {
        markupContext.restoreDataContext();
    }

    return component;
}

Sys.Component.createCollection =3D function(component) {
    var collection =3D [];
    collection._component =3D component;

    collection.collectionChanged =3D new Type.Event(collection);
   =20
    collection._add =3D collection.add;
    collection.add =3D function(item) {
        this._add(item);
        item.setOwner(this._component);
        this.collectionChanged.invoke(this, new =
Sys.CollectionChangedEventArgs(Sys.NotifyCollectionChangedAction.Add, =
item));
    }
   =20
    collection._clear =3D collection.clear;
    collection.clear =3D function() {
        for (var i =3D this.length - 1; i >=3D 0; i--) {
            this[i].dispose();
            this[i] =3D null;
        }
        this._clear();
        this.collectionChanged.invoke(this, new =
Sys.CollectionChangedEventArgs(Sys.NotifyCollectionChangedAction.Reset, =
null));
    }

    collection.dispose =3D function() {
        this.clear();
        this._component =3D null;
    }
   =20
    collection._remove =3D collection.remove;
    collection.remove =3D function(item) {
        item.dispose();
        this._remove(item);
        this.collectionChanged.invoke(this, new =
Sys.CollectionChangedEventArgs(Sys.NotifyCollectionChangedAction.Remove, =
item));
    }
   =20
    collection._removeAt =3D collection.removeAt;
    collection.removeAt =3D function(index) {
        var item =3D this[index];
        item.dispose();
        this._removeAt(index);
        this.collectionChanged.invoke(this, new =
Sys.CollectionChangedEventArgs(Sys.NotifyCollectionChangedAction.Remove, =
item));
    }
   =20
    return collection;
}

Sys.Reference =3D function() {

    var _component;
    var _onload;
   =20
    this.get_component =3D function() {
        return _component;
    }
    this.set_component =3D function(value) {
        _component =3D value;
    }
   =20
    this.get_onscriptload =3D function() {
        return _onload;
    }
    this.set_onscriptload =3D function(value) {
        _onload =3D value;
    }
   =20
    this.dispose =3D function() {
        _component =3D null;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();
       =20
        td.addProperty('component', Object);
        td.addProperty('onscriptload', String);
        return td;
    }
}
Sys.Reference.registerSealedClass('Sys.Reference', null, =
Sys.ITypeDescriptorProvider, Sys.IDisposable);
Sys.TypeDescriptor.addType('script', 'reference', Sys.Reference);


Sys.Reference.parseFromMarkup =3D function(type, node, markupContext) {
    var newReference =3D new Sys.Reference();

    var reference =3D Sys.MarkupParser.initializeObject(newReference, =
node, markupContext);
    if (reference) {
        return reference;
    }
    else {
        newReference.dispose();
    }

    return null;
}

Sys.Action =3D function() {
    Sys.Action.initializeBase(this, [false]);
   =20
    var _eventSource;
    var _eventArgs;
    var _result;
   =20
    var _target;
    var _sequence =3D Sys.ActionSequence.BeforeEventHandler;

    this.get_dataContext =3D function() {
        return this;
    }
   =20
    this.get_eventArgs =3D function() {
        return _eventArgs;
    }
   =20
    this.get_result =3D function() {
        return _result;
    }
   =20
    this.get_sequence =3D function() {
        return _sequence;
    }
    this.set_sequence =3D function(value) {
        _sequence =3D value;
    }
   =20
    this.get_sender =3D function() {
        return _eventSource;
    }

    this.get_target =3D function() {
        return _target;
    }
    this.set_target =3D function(value) {
        _target =3D value;
    }

    this.dispose =3D function() {
        _target =3D null;
        _eventSource =3D null;

        Sys.Action.callBaseMethod(this, 'dispose');
    }
    Sys.Action.registerBaseMethod(this, 'dispose');
   =20
    this.execute =3D function(sender, eventArgs) {
        _eventArgs =3D eventArgs;
       =20
        var bindings =3D this.get_bindings();
        var i;
        for (i =3D 0; i < bindings.length; i++) {
            bindings[i].evaluateIn();
        }
       =20
        _result =3D this.performAction();

        for (i =3D 0; i < bindings.length; i++) {
            bindings[i].evaluateOut();
        }
       =20
        _eventArgs =3D null;
        _result =3D null;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.Action.callBaseMethod(this, 'getDescriptor');

        td.addProperty('eventArgs', Sys.EventArgs, true);
        td.addProperty('result', Object, true);
        td.addProperty('sender', Object, true);
        td.addProperty('sequence', Sys.ActionSequence);
        td.addProperty('target', Object);
        return td;
    }
    Sys.Action.registerBaseMethod(this, 'getDescriptor');
   =20
    this.initialize =3D function() {
        var bindings =3D this.get_bindings();
        for (var i =3D 0; i < bindings.length; i++) {
            bindings[i].set_automatic(false);
        }
       =20
        Sys.Action.callBaseMethod(this, 'initialize');
    }

    this.setOwner =3D function(eventSource) {
        _eventSource =3D eventSource;
                                                            }
}
Sys.Action.registerAbstractClass('Sys.Action', Sys.Component, =
Sys.IAction);

Sys.Action.parseFromMarkup =3D function(type, node, markupContext) {
    var newAction =3D Type.createInstance(type);
   =20
    var action =3D Sys.MarkupParser.initializeObject(newAction, node, =
markupContext);
    if (action) {
        if (action.get_id()) {
            markupContext.addObject(action.get_id(), action);
        }
        return action;
    }
    else {
        newAction.dispose();
    }

    return null;
}
Sys.InvokeMethodAction =3D function() {
    Sys.InvokeMethodAction.initializeBase(this);
   =20
    var _method;
    var _parameters;
   =20
    this.get_method =3D function() {
        return _method;
    }
    this.set_method =3D function(value) {
        _method =3D value;
    }
   =20
    this.get_parameters =3D function() {
        if (!_parameters) {
            _parameters =3D { };
        }
        return _parameters;
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.InvokeMethodAction.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('method', String);
        td.addProperty('parameters', Object, true);
        return td;
    }
   =20
    this.performAction =3D function() {
        return Sys.TypeDescriptor.invokeMethod(this.get_target(), =
_method, _parameters);
    }
}
Sys.InvokeMethodAction.registerSealedClass('Sys.InvokeMethodAction', =
Sys.Action);
Sys.TypeDescriptor.addType('script', 'invokeMethod', =
Sys.InvokeMethodAction);

Sys.SetPropertyAction =3D function() {
    Sys.SetPropertyAction.initializeBase(this);
   =20
    var _property;
    var _propertyKey;
    var _value;
   =20
    this.get_property =3D function() {
        return _property;
    }
    this.set_property =3D function(value) {
        _property =3D value;
    }
   =20
    this.get_propertyKey =3D function() {
        return _propertyKey;
    }
    this.set_propertyKey =3D function(value) {
        _propertyKey =3D value;
    }
   =20
    this.get_value =3D function() {
        return _value;
    }
    this.set_value =3D function(value) {
        _value =3D value;
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.SetPropertyAction.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('property', String);
        td.addProperty('propertyKey', String);
        td.addProperty('value', String);
        return td;
    }
   =20
    this.performAction =3D function() {
        Sys.TypeDescriptor.setProperty(this.get_target(), _property, =
_value, _propertyKey);
        return null;
    }
}
Sys.SetPropertyAction.registerSealedClass('Sys.SetPropertyAction', =
Sys.Action);
Sys.TypeDescriptor.addType('script', 'setProperty', =
Sys.SetPropertyAction);


Sys.Timer =3D function() {
    Sys.Timer.initializeBase(this, [true]);
   =20
    var _interval =3D 1000;
    var _enabled;
    var _timer =3D null;
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.Timer.callBaseMethod(this, 'getDescriptor');
       =20
        td.addProperty('interval', Number);
        td.addProperty('enabled', Boolean);
        td.addEvent('tick', true);
        return td;
    }
   =20
    this.get_interval =3D function() {
        return _interval;
    }
    this.set_interval =3D function(value) {
        if (_interval !=3D value) {
            _interval =3D value;
            this.raisePropertyChanged('interval');
           =20
            if (!this.get_isUpdating() && (_timer !=3D null)) {
                stopTimer();
                startTimer(this);
            }
        }
    }
   =20
    this.get_enabled =3D function() {
        return _enabled;
    }
    this.set_enabled =3D function(value) {
        if (value !=3D this.get_enabled()) {
            _enabled =3D value;
            this.raisePropertyChanged('enabled');
            if (!this.get_isUpdating()) {
                if (value) {
                    startTimer(this);
                }
                else {
                    stopTimer();
                }
            }
        }
    }

    this.tick =3D this.createEvent();

    this.dispose =3D function() {
        this.set_enabled(false);
        stopTimer();
       =20
        Sys.Timer.callBaseMethod(this, 'dispose');
    }
   =20
    this.updated =3D function() {
        Sys.Timer.callBaseMethod(this, 'updated');

        if (_enabled) {
            stopTimer();
            startTimer(this);
        }
    }

    function _timerCallback(context) {
        context.tick.invoke(context, Sys.EventArgs.Empty);
    }

    function startTimer(instance) {
        _timer =3D =
window.setInterval(Function.createCallback(_timerCallback, instance),
                                    _interval);
    }

    function stopTimer() {
        window.clearInterval(_timer);
        _timer =3D null;
    }
}
Sys.Timer.registerSealedClass('Sys.Timer', Sys.Component);
Sys.TypeDescriptor.addType('script', 'timer', Sys.Timer);

Sys.Counter =3D function() {
    Sys.Counter.initializeBase(this, [false]);
   =20
    var _value =3D 0;
    var _lowerBound =3D Number.NaN;
    var _upperBound =3D Number.NaN;
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.Counter.callBaseMethod(this, 'getDescriptor');
       =20
        td.addProperty('value', Number);
        td.addProperty('lowerBound', Number);
        td.addProperty('upperBound', Number);
        td.addProperty('canDecrement', Boolean, true);
        td.addProperty('canIncrement', Boolean, true);
        td.addMethod('increment');
        td.addMethod('decrement');
        return td;
    }
   =20
    this.get_canDecrement =3D function() {
        return isNaN(_lowerBound) || (_value > _lowerBound);
    }
   =20
    this.get_canIncrement =3D function() {
        return isNaN(_upperBound) || (_value < _upperBound);
    }
   =20
    this.get_lowerBound =3D function() {
        return _lowerBound;
    }
    this.set_lowerBound =3D function(value) {
        if ((isNaN(value) && isNaN(_lowerBound)) || (value =3D=3D =
_lowerBound)) return;
        var oldCanDecrement =3D this.get_canDecrement();
        _lowerBound =3D value;
        this.raisePropertyChanged('lowerBound');
        if (oldCanDecrement !=3D this.get_canDecrement()) {
            this.raisePropertyChanged('canDecrement');
        }
    }
   =20
    this.get_upperBound =3D function() {
        return _upperBound;
    }
    this.set_upperBound =3D function(value) {
        if ((isNaN(value) && isNaN(_upperBound)) || (value =3D=3D =
_upperBound)) return;
        var oldCanIncrement =3D this.get_canIncrement();
        _upperBound =3D value;
        this.raisePropertyChanged('upperBound');
        if (oldCanIncrement !=3D this.get_canIncrement()) {
            this.raisePropertyChanged('canIncrement');
        }
    }
   =20
    this.get_value =3D function() {
        return _value;
    }
    this.set_value =3D function(value) {
        if ((isNaN(_lowerBound) || (value >=3D _lowerBound)) &&
            (isNaN(_upperBound) || (value <=3D _upperBound)) && (_value =
!=3D value)) {
            var oldCanDecrement =3D this.get_canDecrement();
            var oldCanIncrement =3D this.get_canIncrement();
            _value =3D value;
            this.raisePropertyChanged('value');
            if (oldCanDecrement !=3D this.get_canDecrement()) {
                this.raisePropertyChanged('canDecrement');
            }
            if (oldCanIncrement !=3D this.get_canIncrement()) {
                this.raisePropertyChanged('canIncrement');
            }
        }
    }
   =20
    this.decrement =3D function() {
        this.set_value(_value - 1);
    }
   =20
    this.increment =3D function() {
        this.set_value(_value + 1);
    }
}
Sys.Counter.registerSealedClass('Sys.Counter', Sys.Component);
Sys.TypeDescriptor.addType('script', 'counter', Sys.Counter);

Sys.ITask =3D function() {
        this.execute =3D Function.abstractMethod;
}
Sys.ITask.registerInterface('Sys.ITask');


Sys._TaskManager =3D function() {

    var _tasks =3D [];
    var _timeoutCookie;
    var _timeoutHandler;

    Sys.Runtime.registerDisposableObject(this);

    this.addTask =3D function(task) {
debug.assert(Sys.IDisposable.isImplementedBy(task), 'The task must =
implement IDisposable');

        _tasks.queue(task);
        this._startTimeout();
    }

    this.dispose =3D function() {
        if (_timeoutCookie) {
            window.clearTimeout(_timeoutCookie);
        }

        if (_tasks && _tasks.length) {
            for (var i =3D _tasks.length - 1; i >=3D 0; i--) {
                _tasks[i].dispose();
            }
        }
        _tasks =3D null;

        _timeoutHandler =3D null;

        Sys.Runtime.unregisterDisposableObject(this);
    }

    this._onTimeout =3D function() {
        _timeoutCookie =3D 0;

                var task =3D _tasks.dequeue();
        if (!task.execute()) {
                        _tasks.queue(task);
        }

                if (_tasks.length) {
            this._startTimeout();
        }
    }

    this._startTimeout =3D function() {
        if (!_timeoutCookie) {
            if (!_timeoutHandler) {
                _timeoutHandler =3D Function.createDelegate(this, =
this._onTimeout);
            }
            _timeoutCookie =3D window.setTimeout(_timeoutHandler,  0);
        }
    }
}
Sys._TaskManager.registerSealedClass('Sys._TaskManager', null, =
Sys.IDisposable);

Sys.TaskManager =3D new Sys._TaskManager();


Type.registerNamespace('Sys.Serialization');


Sys.Serialization.JSON =3D new function() {

    function serializeWithBuilder(object, stringBuilder) {
        var i;
       =20
        switch (typeof object) {
        case 'object':
            if (object) {
                                if (Array.isInstanceOfType(object)) {
                    stringBuilder.append('[');
                    for (i =3D 0; i < object.length; ++i) {
                        if (i > 0) {
                            stringBuilder.append(',');
                        }
                        =
stringBuilder.append(serializeWithBuilder(object[i], stringBuilder));
                    }
                    stringBuilder.append(']');
                }=20
                                else {
                                        if (typeof object.serialize =
=3D=3D 'function') {
                        stringBuilder.append(object.serialize());
                        break;
                    }
               =20
                    stringBuilder.append('{');
                    var needComma =3D false;
                    for (var name in object) {

                                                if =
(name.startsWith('$')) {
                            continue;
                        }

                        var value =3D object[name];
                        if (typeof value !=3D 'undefined' && typeof =
value !=3D 'function') {
                            if (needComma) {
                                stringBuilder.append(',');
                            }
                            else {
                                needComma =3D true;
                            }
            =20
                                                        =
stringBuilder.append(serializeWithBuilder(name, stringBuilder));
                            stringBuilder.append(':');
                            =
stringBuilder.append(serializeWithBuilder(value, stringBuilder));
                        }
                    }
                    stringBuilder.append('}');
                }
            }
            else {
                stringBuilder.append('null');
            }
            break;
           =20
        case 'number':
            if (isFinite(object)) {
                stringBuilder.append(String(object));
            }
                        else {
                stringBuilder.append('null');
            }
            break;
           =20
        case 'string':
            stringBuilder.append('"');
            var length =3D object.length;
            for (i =3D 0; i < length; ++i) {
                var curChar =3D object.charAt(i);
                                                if (curChar >=3D ' ') {
                                        if (curChar =3D=3D '\\' || =
curChar =3D=3D '"') {
                        stringBuilder.append('\\');
                    }
                    stringBuilder.append(curChar);
                }
                else {
                                        switch (curChar) {
                        case '\b':
                            stringBuilder.append('\\b');
                            break;
                        case '\f':
                            stringBuilder.append('\\f');
                            break;
                        case '\n':
                            stringBuilder.append('\\n');
                            break;
                        case '\r':
                            stringBuilder.append('\\r');
                            break;
                        case '\t':
                            stringBuilder.append('\\t');
                            break;
                        default:
                                                        =
stringBuilder.append('\\u00');
                            =
stringBuilder.append(curChar.charCodeAt().toString(16));
                    }
                }
            }
            stringBuilder.append('"');
            break;
=20
        case 'boolean':
            stringBuilder.append(object.toString());
            break;
=20
        default:
            stringBuilder.append('null');
            break;
        }
    }

    this.serialize =3D function(object) {=20
        var stringBuilder =3D new Sys.StringBuilder();
        serializeWithBuilder(object, stringBuilder);
        return stringBuilder.toString();
    }

    this.deserialize =3D function(data) {
        return eval('(' + data + ')');
    }
}

Date.prototype.serialize =3D function() {
    var stringBuilder =3D new Sys.StringBuilder();

    stringBuilder.append('new Date(');
    stringBuilder.append(Date.UTC(this.getUTCFullYear(), =
this.getUTCMonth(), this.getUTCDate(), this.getUTCHours(), =
this.getUTCMinutes(), this.getUTCSeconds(), this.getUTCMilliseconds()));
    stringBuilder.append(')');

    return stringBuilder.toString();
}

Type.registerNamespace('Sys.Net');

Sys.Net.WebRequestExecutor =3D function() {
    var _webRequest =3D null;
    var _resultObject =3D null;
    var _resultXml =3D null;
   =20
    this.get_webRequest =3D function() {
        return _webRequest;
    }
    this.set_webRequest =3D function(value) {
        _webRequest =3D value;
    }

    this.get_userContext =3D function() {
        return _webRequest.get_userContext();
    }
   =20
    this.executeRequest =3D Function.abstractMethod;
    this.abort =3D Function.abstractMethod;

    this.get_isActive =3D Function.abstractMethod;
    this.get_isComplete =3D Function.abstractMethod;
    this.get_timedOut =3D Function.abstractMethod;
    this.get_data =3D Function.abstractMethod;
    this.get_statusCode =3D Function.abstractMethod;
    this.get_statusText =3D Function.abstractMethod;

    this.get_object =3D function() {
        if (!_resultObject) {
            _resultObject =3D =
Sys.Serialization.JSON.deserialize(this.get_data());
        }
        return _resultObject;
    }

    this.get_xml =3D function() {
        if (!_resultXml) {
            _resultXml =3D new XMLDOM(this.get_data());

                        if (!_resultXml || !_resultXml.documentElement)
                return null;
        }
       =20
        return _resultXml;
    }
    Sys.Net.WebRequestExecutor.registerBaseMethod(this, 'get_xml');
}
Sys.Net.WebRequestExecutor.registerAbstractClass('Sys.Net.WebRequestExecu=
tor');

Type.createEnum('Sys.Net.WebRequestExecutorType', 'XmlHttp', 0, =
'IFrame', 1);
Sys.Net.XMLHttpExecutor =3D function() {
    Sys.Net.XMLHttpExecutor.initializeBase(this);
   =20
    var _this =3D this;
    var _xmlHttpRequest =3D null;
    var _webRequest =3D null;
    var _isComplete =3D false;
    var _timedOut =3D false;
    var _timer =3D null;
   =20
    this.get_timedOut =3D function() {
        return _timedOut;   =20
    }
   =20
    this.get_isActive =3D function() {
        return _xmlHttpRequest !=3D null;
    }

    this.get_isComplete =3D function() {
        return _isComplete;
    }

    this.executeRequest =3D function() {
       =20
        _webRequest =3D this.get_webRequest();
        var body =3D _webRequest.get_body();
        var headers =3D _webRequest.get_headers();
       =20
        _xmlHttpRequest =3D new XMLHttpRequest();
        _xmlHttpRequest.onreadystatechange =3D onReadyStateChange;
       =20
        if (body !=3D null) {
            _xmlHttpRequest.open('POST', _webRequest.get_resolvedUrl(), =
true );
           =20
                        if ((headers =3D=3D null) || =
!headers['Content-Type']) {
                _xmlHttpRequest.setRequestHeader('Content-Type', =
'application/x-www-form-urlencoded');
            }
        }
        else {
            _xmlHttpRequest.open('GET', _webRequest.get_resolvedUrl(), =
true  );
        }
       =20
        if (headers !=3D null) {
            for (var header in headers) {
                var val =3D headers[header];
                if (typeof(val) !=3D "function")
                    _xmlHttpRequest.setRequestHeader(header, val);
            }
        }

        var timeoutInterval =3D _webRequest.get_timeoutInterval();
        if (timeoutInterval > 0) {
            _timer =3D window.setTimeout(Function.createDelegate(this, =
onTimeout), timeoutInterval);
        }

        _xmlHttpRequest.send(body);
    }

    this.get_data =3D function() {
        return _xmlHttpRequest.responseText;
    }
   =20
    this.get_statusCode =3D function() {
        return _xmlHttpRequest.status;
    }
   =20
    this.get_statusText =3D function() {
        return _xmlHttpRequest.statusText;
    }
   =20
    this.get_xml =3D function() {
        var xml =3D _xmlHttpRequest.responseXML;
        if (!xml || !xml.documentElement) {
                        xml =3D new =
XMLDOM(_xmlHttpRequest.responseText);
           =20
                        if (!xml || !xml.documentElement)
                return null;
        }
        else if (Sys.Runtime.get_hostType() =3D=3D =
Sys.HostType.InternetExplorer) {
            xml.setProperty('SelectionLanguage', 'XPath');
        }
        return xml;
    }
   =20
    function onReadyStateChange() {
       =20
        if (_xmlHttpRequest.readyState =3D=3D 4 ) {

            ClearTimer();
                       =20
            _isComplete =3D true;
           =20
            if (_webRequest.completed !=3D null)
                _webRequest.completed.invoke(_this, null);
           =20
            cleanupXmlHttpRequest();
        }
    }
   =20
    function ClearTimer() {
        if (_timer !=3D null) {
            window.clearTimeout(_timer);
            _timer =3D null;
        }   =20
    }
   =20
    function onTimeout() {
        if (!_isComplete) {
            ClearTimer();

            _timedOut =3D true;
            _isComplete =3D true;
       =20
            _xmlHttpRequest.onreadystatechange =3D Function.emptyMethod;
            _xmlHttpRequest.abort();
       =20
            _webRequest.timeout.invoke(_webRequest, null);
           =20
            _xmlHttpRequest =3D null;
        }
    }
       =20
    this.abort =3D function() {
        ClearTimer();

        if (_xmlHttpRequest !=3D null && !_isComplete) {
       =20
                        _xmlHttpRequest.onreadystatechange =3D =
Function.emptyMethod;           =20
            _xmlHttpRequest.abort();

            _xmlHttpRequest =3D null;
            _webRequest.aborted.invoke(_webRequest, null);
        }
    }
   =20
    function cleanupXmlHttpRequest() {
        if (_xmlHttpRequest !=3D null) {
            _xmlHttpRequest.onreadystatechange =3D Function.emptyMethod;
            _xmlHttpRequest =3D null;
        }
    }
}
Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', =
Sys.Net.WebRequestExecutor);
Sys.Net.IFrameExecutor =3D function() {
    Sys.Net.IFrameExecutor.initializeBase(this);

        if (!Sys.Net.IFrameManager) {
        Sys.Net.IFrameManager =3D new Sys.Net._IFrameManager();
    }

    var _this =3D this;
    var _webRequest =3D null;
    var _isComplete =3D false;
    var _responseData;
    var _iframe;
    var _loaded =3D false;
    var _timer =3D null;
   =20
        var _base64Table =3D =
['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',
                        =
'P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d',
                        =
'e','f','g','h','i','j','k','l','m','n','o','p','q','r','s',
                        =
't','u','v','w','x','y','z','0','1','2','3','4','5','6','7',
                        '8','9','-','_','=3D' ];

    this.get_isActive =3D function() {
        return _iframe !=3D null;
    }

    this.get_isComplete =3D function() {
        return _isComplete;
    }

    this.executeRequest =3D function() {
                =
Sys.Net.IFrameManager.getAvailableIFrame(Function.createDelegate(this, =
executeRequestInternal));
    }
   =20
    function URLTokenEncode(input) {
        var bytes =3D new Array();
        var result =3D "";       =20
       =20
                for (var index =3D 0; index < input.length; index++) {
            var charCode =3D input.charCodeAt(index);
           =20
            if (charCode < 0x000080) {
                bytes.push(charCode);
            }
            else if (charCode < 0x000800) {
                bytes.push(0xc0 | charCode >> 6);
                bytes.push(0x80 | charCode & 0x3f);
            }
            else if (charCode < 0x010000) {
                bytes.push(0xe0 | charCode >> 12);
                bytes.push(0x80 | ((charCode & 0xfff) >> 6));
                bytes.push(0x80 | charCode & 0x3f);
            }
            else {
                bytes.push(0xf0 | charCode >> 18);
                bytes.push(0x80 | ((charCode & 0x3ffff) >> 12));
                bytes.push(0x80 | ((charCode & 0xfff) >> 6));
                bytes.push(0x80 | charCode & 0x3f);
            }
        }

                var i =3D 0;
       =20
                while (i < bytes.length - 2) {
            var i1 =3D bytes[i++];
            var i2 =3D bytes[i++];
            var i3 =3D bytes[i++];

            result +=3D _base64Table[i1 >> 2];
            result +=3D _base64Table[(i1 & 0x03) << 4 | i2 >> 4];
            result +=3D _base64Table[(i2 & 0x0f) << 2 | i3 >> 6];
            result +=3D _base64Table[i3 & 0x3f];
        }
       =20
                switch (bytes.length - i) {
            case 2 :
                var i1 =3D bytes[i++];
                var i2 =3D bytes[i++];
           =20
                result +=3D _base64Table[i1 >> 2];
                result +=3D _base64Table[(i1 & 0x03) << 4 | i2 >> 4];
                result +=3D _base64Table[(i2 & 0x0f) << 2];
                result +=3D '1';
                break;

            case 1:
                var i1 =3D bytes[i++];
           =20
                result +=3D _base64Table[i1 >> 2];
                result +=3D _base64Table[(i1 & 0x03) << 4];
                result +=3D '2';
                break;
               =20
            case 0:
                result +=3D '0';
        }       =20
       =20
        return result;
    }

    function executeRequestInternal(iframe) {
        _webRequest =3D this.get_webRequest();
        _iframe =3D iframe;

        var requestData =3D {
            headers: _webRequest.get_headers(),
            uri: _webRequest.get_resolvedUrl(),
            body: _webRequest.get_body()
        };

                var appUrl =3D =
Sys.Net.WebRequest.resolveUrl(_webRequest.get_appUrl());
        var queryString =3D =
{data:Sys.Serialization.JSON.serialize(requestData)};
        var url =3D appUrl + "iframecall.axd" + '?' + =
Sys.Net.WebRequest.createQueryString(queryString, URLTokenEncode);
           =20
        var frameDoc =3D _iframe.document;

                frameDoc.open("about:blank", "_self", "", true );

                        frameDoc.write();
        _iframe.__exec =3D this;
       =20
        frameDoc.write('<SCRIPT id=3D"script" src=3D"' + url + =
'"></SCRIPT>');
       =20
        var scriptElement =3D frameDoc.getElementById("script");

        var timeoutInterval =3D _webRequest.get_timeoutInterval();
        if (timeoutInterval > 0) {
            _timer =3D window.setTimeout(Function.createDelegate(this, =
onTimeout), timeoutInterval);
        }
       =20
        function onScriptLoaded() {
            if (scriptElement.readyState =3D=3D 'complete' || =
scriptElement.readyState =3D=3D 'loaded') {
                _loaded =3D true;
               =20
                                                                if =
(!_isComplete) {
                    _this.onMethodComplete({
                        content: "A web request made using the iframe =
executor failed. Make sure that the app's web.config registers =
iframecall.axd in its <httpHandlers>.",
                        status: 500});
                }
            }
        }

        if (Sys.Runtime.get_hostType() !=3D =
Sys.HostType.InternetExplorer) {
            scriptElement.readyState =3D 'loaded';
            scriptElement.onload =3D onScriptLoaded;
        }
        else {
            scriptElement.onreadystatechange =3D onScriptLoaded;
        }
       =20
        frameDoc.close();
    }

    this.get_data =3D function() {
        if (_responseData) {
            return _responseData.content;
        }

debug.assert(_isComplete, "Request is not completed yet.");

        return null;
    }
   =20
    this.get_statusCode =3D function() {
        if (_responseData) {
            return _responseData.status;
        }

debug.assert(_isComplete, "Request is not completed yet.");

        if (_timedOut) {
                        if (_loaded) {
                                return 500;
            }

                        return 408;
        }
    }
   =20
    this.get_statusText =3D function() {
                return "Status text not available";
    }
   =20
    this.abort =3D function() {
        ClearTimer();

        if (_iframe !=3D null && !_isComplete) {
       =20
            releaseIFrame();
           =20
            _webRequest.aborted.invoke(_webRequest, null);
        }
    }

    this.onMethodComplete =3D function(responseData) {

                        if (!_iframe) {
            return;
        }
       =20
        releaseIFrame();

        _responseData =3D responseData;

        _isComplete =3D true;
       =20
        if (_webRequest.completed !=3D null) {
            _webRequest.completed.invoke(_this, null);
        }

        ClearTimer();
    }

    function ClearTimer() {
        if (_timer !=3D null) {
            window.clearTimeout(_timer);
            _timer =3D null;
        }   =20
    }

    function onTimeout() {
        releaseIFrame();
           =20
        if (!_isComplete) {
            ClearTimer();

            _timedOut =3D true;
            _isComplete =3D true;

            _webRequest.timeout.invoke(_webRequest, null);
        }
    }
   =20
        function releaseIFrame() {
        if (_iframe !=3D null) {
            Sys.Net.IFrameManager.releaseIFrame(_iframe);
            _iframe =3D null;
        }
    }
}
Sys.Net.IFrameExecutor.registerClass('Sys.Net.IFrameExecutor', =
Sys.Net.WebRequestExecutor);

Sys.Net._IFrameManager =3D function() {

    var _iframes;
    var _waitingQueue =3D new Array();
    var _frames =3D 2;
   =20
    this.get_frames =3D function() {
        return _frames;
    }
   =20
    this.set_frames =3D function(value) {
        _frames =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();

        td.addProperty('frames', Number);
        return td;
    }
   =20
    this.getAvailableIFrame =3D function(callback) {
   =20
                var iframe =3D findAvailableIFrame();
       =20
                if (iframe !=3D null) {
            callback(iframe);
            return true;
        }
       =20
                _waitingQueue.add(callback);
        return false;
    }

    this.releaseIFrame =3D function(iframe) {

                iframe._available =3D true;
       =20
                        if (_waitingQueue.length > 0) {
            window.setTimeout(Function.createDelegate(this, =
processNextItemInQueue), 0);
        }
    }
   =20
    function processNextItemInQueue() {
        if (_waitingQueue.length =3D=3D 0)
            return;
       =20
        var iframe =3D findAvailableIFrame();
        if (iframe !=3D null) {
                        callback =3D _waitingQueue.dequeue();
            callback(iframe);
        }
    }

    function findAvailableIFrame() {
   =20
                ensureIFramesCreated();

                for (var i=3D0; i<_iframes.length; i++) {
            if (_iframes[i]._available) {
                                _iframes[i]._available =3D false;
                return _iframes[i];
            }
        }

                return null;
    }

    function ensureIFramesCreated() {=20
   =20
                if (_iframes)
            return;
           =20
                _iframes =3D new Array();
        for (var i=3D0; i<_frames; i++) {
            _iframes[i] =3D createIFrame();
            _iframes[i]._available =3D true;
        }
    }
   =20
    function createIFrame() {=20
        var iframe =3D document.createElement("iframe");=20
        iframe.setAttribute("width", 0);=20
        iframe.setAttribute("height", 0);=20
        iframe.style.visibility =3D "hidden";
       =20
                var frameCount =3D window.frames.length;
        document.body.appendChild(iframe);

        return window.frames[frameCount];
    }=20
}

Sys.Net._IFrameManager.registerSealedClass('Sys.Net._IFrameManager', =
null, Sys.ITypeDescriptorProvider);
Sys.TypeDescriptor.addType('script', 'iframemanager', =
Sys.Net._IFrameManager);

Sys.Net._IFrameManager.parseFromMarkup =3D function(type, node, =
markupContext) {
    if (!markupContext.get_isGlobal()) {
        return null;
    }
   =20
        if (!Sys.Net.IFrameManager) {
        Sys.Net.IFrameManager =3D new Sys.Net._IFrameManager();
    }
       =20
    Sys.MarkupParser.initializeObject(Sys.Net.IFrameManager, node, =
markupContext);
    return Sys.Net.IFrameManager;
}
Sys.Net._WebRequestManager =3D function() {

    var _requestQueue =3D new Object();
    var _batchDelay =3D 500;
    var _timeoutInterval =3D 0;
    var _executorType =3D Sys.Net.XMLHttpExecutor;
    var _enableBatching =3D false;
    var _batchSize =3D 5;
    var _defaultAppUrl =3D document.URL.substr(0, =
document.URL.lastIndexOf('/') + 1);
    var _defaultDomain =3D getDomainFromUrl(document.URL);

    this.get_batchDelay =3D function() {
        return _batchDelay;
    }
   =20
    this.set_batchDelay =3D function(value) {
        _batchDelay =3D value;
    }
   =20
    this.get_timeoutInterval =3D function() {
        return _timeoutInterval;
    }

    this.set_timeoutInterval =3D function(value) {
        _timeoutInterval =3D value;
    }

    this.get_enableBatching =3D function() {
        return _enableBatching;
    }
   =20
    this.set_enableBatching =3D function(value) {
        _enableBatching =3D value;
    }
   =20
    this.get_batchSize =3D function() {
        return _batchSize;
    }

    this.set_batchSize =3D function(value) {
        _batchSize =3D value;
    }
   =20
    this.get_executorType =3D function() {
        return _executorType;
    }
    this.set_executorType =3D function(value) {
        switch (value) {
        case Sys.Net.WebRequestExecutorType.XmlHttp:
            _executorType =3D Sys.Net.XMLHttpExecutor;
            break;
           =20
        case Sys.Net.WebRequestExecutorType.IFrame:
            _executorType =3D Sys.Net.IFrameExecutor;
            break;

        default:
debug.assert(false, "set_executorType");
        }
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();

        td.addProperty('batchDelay', Number);
        td.addProperty('timeoutInterval', Number);
        td.addProperty('enableBatching', Boolean);
        td.addProperty('batchSize', Number);
        td.addProperty('executorType', Sys.Net.WebRequestExecutorType);
        return td;
    }
   =20
    this.enqueue =3D function(webRequest) {
                if (webRequest.get_aborted() =3D=3D true) {
            return;
        }
       =20
        if (!_enableBatching || webRequest.get_priority() =3D=3D =
Sys.Net.WebRequestPriority.High) {
                        executeRequest(webRequest);
        }
        else {
            var appUrl =3D =
Sys.Net.WebRequest.resolveUrl(webRequest.get_appUrl());

                        appUrl =3D appUrl.toLowerCase();

            var queueInfo =3D _requestQueue[appUrl];
                        if (!queueInfo) {
                queueInfo =3D new Object();
                queueInfo.queue =3D new Array();
                queueInfo.appUrl =3D appUrl;
                _requestQueue[appUrl] =3D queueInfo;
            }

            var queue =3D queueInfo.queue;
           =20
                        queue.add(webRequest);

            if (queue.length >=3D _batchSize) {
                                sendBatchedRequests(queueInfo);
            }
            else if (queue.length =3D=3D 1) {
           =20
                function onTimer() {
                    queueInfo.timer =3D null;
                   =20
                                        if (queue.length > 0) {
                        sendBatchedRequests(queueInfo);
                    }
                }
           =20
                                queueInfo.timer =3D =
window.setTimeout(onTimer, _batchDelay);
            }
        }
    }
   =20
    this.flush =3D function() {
        for (var appUrl in _requestQueue) {
            var queueInfo =3D _requestQueue[appUrl];

            sendBatchedRequests(queueInfo);
        }
    }
   =20
    function containsHost(url) {
        if (url.indexOf(':') !=3D -1) {
            return true;
        }
        return false;
    }
   =20
    function isAbsoluteUrl(url) {
        if (containsHost(url)) {
            return true;
        }

        var firstChar =3D url.charAt(0);
        if (firstChar =3D=3D '/' || firstChar =3D=3D '\\') {
            return true;
        }
       =20
        return false;
    }

    function sendBatchedRequests(queueInfo) {
        var queue =3D queueInfo.queue;
        if (queue.length =3D=3D 0)
            return;
           =20
        var appUrl =3D queueInfo.appUrl;
       =20
                queue.sort(compareRequestPriority);

        var request;

        if (queue.length =3D=3D 1 || _batchSize =3D=3D 1) {
                        request =3D queue[0];
        }
        else {
                        request =3D createBatchRequest(appUrl, queue);
        }

        executeRequest(request);

                queueInfo.queue =3D new Array();

                if (queueInfo.timer) {
            window.clearTimeout(queueInfo.timer);
            queueInfo.timer =3D null;
        }       =20
    }
   =20
    function getDomainFromUrl(url) {
                                        var i =3D url.indexOf('://');
        if (i =3D=3D -1 || i > 10) {
            return null;
        }

                var j =3D url.indexOf('/', i + 3);
        var host;
        if (j > -1) {
            host =3D url.substring(i + 3, j);
        }
        else {
            host =3D url.substring(i + 3);
        }

        var parts =3D host.split('.');
        var length =3D parts.length;
        var domain =3D host;
       =20
                if (length > 2) {
            domain =3D parts[length - 2] + '.' + parts[length - 1];
        }

        return domain.toLowerCase();
    }

    function isCrossDomainRequest(webRequest) {
        var domain;
        var url =3D webRequest.get_resolvedUrl();
        domain =3D getDomainFromUrl(url);
       =20
                if (!domain) {
debug.assert(false, "expect url to always contain domain: "+url);
            return false;
        }
       =20
        return domain !=3D _defaultDomain;
    }

    function executeRequest(webRequest) {
                if (webRequest.get_aborted() =3D=3D true) {
            return;
        }

        var executor =3D null;
                                        if (_executorType !=3D =
Sys.Net.IFrameExecutor &&
            !webRequest.get_forceXmlHttp() &&=20
            isCrossDomainRequest(webRequest)) {
            executor =3D new Sys.Net.IFrameExecutor();
        }
        else {
            executor =3D new _executorType();
        }
       =20
        executor.set_webRequest(webRequest);

                        if (Sys.Runtime.get_hostType() !=3D =
Sys.HostType.InternetExplorer) {       =20
            webRequest.get_headers().referer =3D document.URL;
        }
       =20
        webRequest.set_executor(executor);

        if (_timeoutInterval !=3D 0 && webRequest.get_timeoutInterval() =
=3D=3D 0) {
            webRequest.set_timeoutInterval(_timeoutInterval);
        }
       =20
        executor.executeRequest();
    }

    function createBatchRequest(appUrl, requests) {

        var batchRequestData =3D new Array();
       =20
                var batchRequest =3D new Sys.Net.WebRequest();       =20
       =20
        var forceXmlHttp =3D false;
        for (var i=3D0; i<requests.length; i++) {
            var request =3D requests[i];

                        if (request.get_aborted() =3D=3D true) {
                continue;
            }
           =20
            if (request.get_forceXmlHttp()) {
                forceXmlHttp =3D true;
            }

            request.set_delegateRequest(batchRequest);           =20
           =20
            batchRequestData[i] =3D {
                headers: request.get_headers(),
                uri: request.get_resolvedUrl(),
                body: request.get_body()
            };
        }
       =20
                batchRequest.set_forceXmlHttp(forceXmlHttp);
      =20
                batchRequest.completed.add(onComplete);
        batchRequest.timeout.add(onTimeout);
        batchRequest.aborted.add(onAborted);
       =20
        batchRequest.set_url(appUrl + "atlasbatchcall.axd");
        batchRequest.set_appUrl(appUrl);
        =
batchRequest.set_body(Sys.Serialization.JSON.serialize(batchRequestData))=
;
        batchRequest.get_headers()['Content-Type'] =3D =
'application/json';
       =20
        function onComplete(response) {

            var statusCode =3D response.get_statusCode();
            var result =3D null;

            try {
                result =3D response.get_object();
            }
            catch (ex) {
            }

            if (statusCode < 200 || statusCode >=3D 300) {
                                                for (var i=3D0; =
i<requests.length; i++)
                    requests[0].completed.invoke(response, null);
            }
            else {
                for (var i=3D0; i<requests.length; i++) {
                    var request =3D requests[i];

                    var subResponse =3D new Sys.Net.BatchResponse(
                        request, result[i].content, result[i].status);
                       =20
                    request.completed.invoke(subResponse, null);
                }
            }
        }
       =20
        function onTimeout() {
            for (var i=3D0; i<requests.length; i++) {
                var request =3D requests[i];
                   =20
                request.timeout.invoke(request, null);
            }
        }
       =20
        function onAborted() {
            for (var i=3D0; i<requests.length; i++) {
                var request =3D requests[i];

                request.aborted.invoke(request, null);
            }       =20
        }

        return batchRequest;
    }
   =20
    function compareRequestPriority(requestOne, requestTwo) {
        return requestOne.get_priority() - requestTwo.get_priority();
    }
}

Sys.Net._WebRequestManager.registerSealedClass('Sys.Net._WebRequestManage=
r', null, Sys.ITypeDescriptorProvider);
Sys.TypeDescriptor.addType('script', 'webRequestManager', =
Sys.Net._WebRequestManager);

Sys.Net._WebRequestManager.parseFromMarkup =3D function(type, node, =
markupContext) {
    if (!markupContext.get_isGlobal()) {
        return null;
    }
   =20
    Sys.MarkupParser.initializeObject(Sys.Net.WebRequestManager, node, =
markupContext);
    return Sys.Net.WebRequestManager;
}

Sys.Net.WebRequestManager =3D new Sys.Net._WebRequestManager();
Type.createEnum('Sys.Net.WebRequestPriority', 'High', 0, 'Normal', 1, =
'Low', 2);
Sys.Net.WebRequest =3D function() {
    Sys.Net.WebRequest.initializeBase(this, [true]);

        var _url =3D null;
    var _headers =3D null;
    var _body =3D null;
    var _userContext =3D null;
    var _appUrl =3D null;

    var _executor;
    var _invokeCalled =3D false;
    var _abortCalled =3D false;

    var _timeoutInterval =3D 0;
    var _priority =3D Sys.Net.WebRequestPriority.Normal;
   =20
    var _delegateRequest =3D null;
   =20
    var _forceXmlHttp =3D false;

   =20
    this.get_appUrl =3D function() {
        return _appUrl;
    }
   =20
    this.set_appUrl =3D function(value) {
        _appUrl =3D value;
        if (_appUrl && _appUrl.charAt(_appUrl.length - 1) !=3D '/') {
            _appUrl +=3D '/';
        }
    }

    this.get_url =3D function() {
        return _url;
    }
   =20
        this.get_resolvedUrl =3D function() {
                if (_appUrl) {
            var resolvedAppUrl =3D =
Sys.Net.WebRequest.resolveUrl(_appUrl);
            return Sys.Net.WebRequest.resolveUrl(_url, resolvedAppUrl);
        }
        else {
            return Sys.Net.WebRequest.resolveUrl(_url);
        }
    }
   =20
    this.set_url =3D function(value) {
        _url =3D value;
    }
   =20
    this.get_headers =3D function() {
        if (_headers =3D=3D null) {
            _headers =3D { };
        }
        return _headers;
    }

    this.get_forceXmlHttp =3D function() {
        return _forceXmlHttp;
    }
    this.set_forceXmlHttp =3D function(value) {
        _forceXmlHttp =3D value;
    }
   =20
    this.get_body =3D function() {
        return _body;
    }
    this.set_body =3D function(value) {
        _body =3D value;
    }
   =20
    this.get_userContext =3D function() {
        return _userContext;
    }
   =20
    this.get_executor =3D function() {
        if (_executor) {
            return _executor;
        }

        return _delegateRequest;
    }
   =20
    this.set_executor =3D function(value) {
        _executor =3D value;
    }

    this.get_timeoutInterval =3D function() {
        return _timeoutInterval;
    }
   =20
    this.set_timeoutInterval =3D function(value) {
        _timeoutInterval =3D value;
    }
   =20
    this.get_priority =3D function() {
        return _priority;
    }

    this.set_priority =3D function(value) {
        _priority =3D value;
    }
   =20
        this.get_aborted =3D function() {
        return _abortCalled;
    }
   =20
    this.get_isActive =3D function() {
        var executor =3D this.get_executor();
        return executor && executor.get_isActive();
    }
   =20
    this.get_timedOut =3D function() {
        return _timedOut;
    }
   =20
    this.set_delegateRequest =3D function(request) {
        _delegateRequest =3D request;
    }

       =20
    this.aborted =3D new Type.Event(this);

    this.completed =3D new Type.Event(this);
   =20
    this.timeout =3D new Type.Event(this);


   =20
    this.invoke =3D function(userContext) {
   =20
                if (_executor || _invokeCalled) {
debug.assert(false, "executor and invokeCalled should not be set");
            return;
        }
       =20
        _userContext =3D userContext;
       =20
        Sys.Net.WebRequestManager.enqueue(this);
        _invokeCalled =3D true;
    }

    this.abort =3D function() {

                if (!_invokeCalled) {
debug.assert(false, "abort called but invoke wasn't");
            return;
        }

        _abortCalled =3D true;

        var executor =3D this.get_executor();
        if (executor) {
            executor.abort();
        }
    }
}
Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest');

Sys.Net.WebRequest.resolveUrl =3D function(url, baseUrl) {
        if (url && url.startsWith('http') && url.indexOf('://') !=3D -1) =
{
        return url;
    }
   =20
        if (!baseUrl) {
        var baseElement =3D document.getElementsByTagName('base')[0];
        if (baseElement) {
            baseUrl =3D baseElement.href;
        }
        else {
            baseUrl =3D document.URL;
        }
    }
    baseUrl =3D baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1);

        if (!url) {
        return baseUrl;
    }

        if (url.charAt(0) =3D=3D '/') {
        var slashslash =3D baseUrl.indexOf('://');
        if (slashslash =3D=3D -1) {
debug.assert(false, "base url doesn't contain ://");
            return url;
        }
           =20
        var nextSlash =3D baseUrl.indexOf('/', slashslash + 3);
        if (nextSlash =3D=3D -1) {
debug.assert(false, "base url doesn't contain another /");
            return url;
        }
       =20
        return baseUrl.substr(0, nextSlash) + url;
    }
            else {
        var lastSlash =3D baseUrl.lastIndexOf('/');
        if (lastSlash =3D=3D -1) {
debug.assert(false, "can't find last / in base url");
            return url;
        }
           =20
        return baseUrl.substr(0, lastSlash+1) + url;
    }
}

Sys.Net.WebRequest.createQueryString =3D function(queryString, =
encodeMethod) {

        if (encodeMethod =3D=3D null)
        encodeMethod =3D encodeURIComponent;
       =20
    var sb =3D new Sys.StringBuilder();

    var i =3D 0;   =20
    for (var arg in queryString) {
        var val =3D queryString[arg];
        if (typeof(val) =3D=3D "function") continue;
        if (i !=3D 0) {
            sb.append('&');
        }
       =20
        sb.append(arg);
        sb.append('=3D');
        debug.assert(!Object.isInstanceOfType(val), "The parameter '" + =
arg + "' is set to a complex object (" +
            Sys.Serialization.JSON.serialize(val) + "), but it must be a =
simple object to be passed on the query string");
        sb.append(encodeMethod(val));
       =20
        i++;
    }
   =20
    return sb.toString();
}

Sys.Net.WebRequest.createUrl =3D function(url, queryString) {
    if (!queryString) {
        return url;
    }
   =20
    var sep =3D '?';
    if (url && url.indexOf('?') !=3D -1)=20
        sep =3D '&';
    return url + sep + =
Sys.Net.WebRequest.createQueryString(queryString);
}

Sys.Net.WebMethod =3D function() {
    this.addHeaders =3D Function.abstractMethod;
    this.get_appUrl =3D Function.abstractMethod;
    this.get_url =3D Function.abstractMethod;
    this.get_body =3D Function.abstractMethod;

        this.invoke =3D function(params) {

                                        var numOfParams =3D =
arguments.length;
        if (numOfParams =3D=3D 2 && arguments[1] && typeof(arguments[1]) =
!=3D 'function') {
       =20
                        var expectedParamNames =3D ["onMethodComplete", =
"onMethodTimeout", "onMethodError",
                "onMethodAborted", "userContext", "timeoutInterval", =
"priority", "useGetMethod"];

                        var paramContainer =3D arguments[1];
           =20
                        var newParams =3D new =
Array(expectedParamNames.length + 1);
            newParams[0] =3D params;
           =20
            for (var paramName in paramContainer) {
           =20
                                var index =3D =
expectedParamNames.indexOf(paramName);
               =20
                                if (index < 0) {
                    throw Error.createError(String.format("'{0}' is not =
a valid argument. It should be one of {1}", paramName, =
expectedParamNames));
                }

                newParams[index+1] =3D paramContainer[paramName];
            }
           =20
            return this._invoke.apply(this, newParams);
        }
       =20
        return this._invoke.apply(this, arguments);
    }
   =20
    this._invoke =3D function(params, onMethodComplete, onMethodTimeout, =

        onMethodError, onMethodAborted, userContext, timeoutInterval, =
priority, useGetMethod) {

        window.debug.validateParameters("WebMethod.Invoke", arguments,
            [  =20
                ['params', Object, true],
                ['onMethodComplete', Function, true],
                ['onMethodTimeout', Function, true],
                ['onMethodError', Function, true],
                ['onMethodAborted', Function, true],
                ,                   ['timeoutInterval', Number, true],
                ['priority', Number, true],
                ['useGetMethod', Boolean, true]
            ]);

                var request =3D new Sys.Net.WebRequest();

                this.addHeaders(request.get_headers());

        request.set_url(this.get_url(params, useGetMethod));
        request.set_appUrl(this.get_appUrl());
       =20
        if (params =3D=3D null) {
            params =3D {};
        }
           =20
                request.set_body(this.get_body(params, useGetMethod));

        request.completed.add(onComplete);
        request.timeout.add(onTimeout);
        request.aborted.add(onAborted);
       =20
        if (timeoutInterval) {
            request.set_timeoutInterval(timeoutInterval);
        }
       =20
        if (priority >=3D 0) {
            request.set_priority(priority);
        }
       =20
var methodName =3D this.get_methodName();

        request.invoke();

        function onComplete(response, eventArgs) {
            var statusCode =3D response.get_statusCode();
            var result =3D null;

                                    try {
                result =3D response.get_object();
            }
            catch (ex) {
                try {
                    result =3D response.get_xml();
                }
                catch (ex) {
                }
            }

            if (((statusCode < 200) || (statusCode >=3D 300)) ||
                Sys.Net.MethodRequestError.isInstanceOfType(result)) {

                if (onMethodError) {
                    onMethodError(result, response, userContext);
                }
                else {
                                        debug.trace("The server method =
'" + methodName + "' failed with the following error:");
                    if (result !=3D null) {
                                                =
debug.trace(result.get_exceptionType() + ": " + result.get_message());
                    }
                    else {
                                                                        =
debug.trace(response.get_data());
                    }
                }
            }
            else if (onMethodComplete) {
                onMethodComplete(result, response, userContext);
            }
        }

        function onTimeout(request, eventArgs) {
            if (onMethodTimeout) {
                onMethodTimeout(request, userContext);
            }
        }
       =20
        function onAborted(request, eventArgs) {
            if (onMethodAborted) {
                onMethodAborted(request, userContext);
            }
        }
       =20
        return request;
    }
}
Sys.Net.WebMethod.registerAbstractClass('Sys.Net.WebMethod');

Sys.Net.WebMethod.generateTypedConstructor =3D function(serverType) {
    return function(properties) {
        this.__serverType =3D serverType;
       =20
                if (properties !=3D null) {
            for (var name in properties) {
                this[name] =3D properties[name];
            }
        }
    }
}

Sys.Net.ServiceMethod =3D function(url, methodName, appUrl) {
    Sys.Net.ServiceMethod.initializeBase(this);

this.get_methodName =3D function() { return methodName; }

    this.addHeaders =3D function(headers) {
                headers['Content-Type'] =3D 'application/json';
    }

    this.get_url =3D function(params, useGetMethod) {
                if (!useGetMethod || !params)
            params =3D {};
       =20
                params.mn =3D methodName;
        var fullUrl =3D Sys.Net.WebRequest.createUrl(url, params );
        delete params.mn;          =20
        return fullUrl;
    }

    this.get_body =3D function(params, useGetMethod) {
                if (useGetMethod) return null;
       =20
        var body =3D Sys.Serialization.JSON.serialize(params);
       =20
                if (body =3D=3D "{}")
            return "";
           =20
        return body;
    }
   =20
    this.get_appUrl =3D function() {
        return appUrl;
    }
}
Sys.Net.ServiceMethod.registerClass('Sys.Net.ServiceMethod', =
Sys.Net.WebMethod);

Sys.Net.ServiceMethod.invoke =3D function(methodURL, methodName, appUrl) =
{
   =20
    var method =3D new Sys.Net.ServiceMethod(methodURL, methodName, =
appUrl);

        var callMethodArgs =3D new Array();
    for (var i=3D3; i<arguments.length; i++)
        callMethodArgs[i-3] =3D arguments[i];

        return method.invoke.apply(method, callMethodArgs);
}

Sys.Net.ServiceMethod.createProxyMethod =3D function(proxy, methodName) =
{

        var numOfParams =3D arguments.length-2;
   =20
        var createWebMethodArguments =3D arguments;

        proxy[methodName] =3D function() {
   =20
                                var args =3D {};
        for (var i=3D0; i<numOfParams; i++) {
                        if (typeof(arguments[i]) =3D=3D 'function') {
                throw Error.createError(String.format("Parameter #{0} =
passed to method '{1}' should not be a function", i+1, methodName));
            }
           =20
            args[createWebMethodArguments[i+2]] =3D arguments[i];
        }
       =20
                        var callMethodArgs =3D [ proxy.path, methodName, =
proxy.appPath, args ];
       =20
                for (var i=3D0; i+numOfParams<arguments.length; i++)
            callMethodArgs[i+4] =3D arguments[numOfParams+i];
       =20
                return Sys.Net.ServiceMethod.invoke.apply(null, =
callMethodArgs);
    }
}
Sys.Net.ServiceMethodRequest =3D function() {
    Sys.Net.ServiceMethodRequest.initializeBase(this);

    var _url =3D null;
    var _appUrl =3D null;
    var _methodName =3D null;
    var _parameters =3D null;
    var _response =3D null;
    var _userContext =3D null;
    var _result =3D null;
    var _request =3D null;
    var _timeoutInterval =3D 0;
    var _priority =3D Sys.Net.WebRequestPriority.Normal;   =20

    this.get_url =3D function() {
        return _url;
    }
    this.set_url =3D function(value) {
        _url =3D value;
    }

    this.get_appUrl =3D function() {
        return _appUrl;
    }
   =20
    this.set_appUrl =3D function(value) {
        _appUrl =3D value;
    }
   =20
    this.get_methodName =3D function() {
        return _methodName;
    }
    this.set_methodName =3D function(value) {
        _methodName =3D value;
    }

    this.get_parameters =3D function() {
        if (_parameters =3D=3D null) {
            _parameters =3D { };
        }
        return _parameters;
    }

    this.get_response =3D function() {
        return _response;
    }

    this.get_result =3D function() {
        return _result;
    }

    this.get_timeoutInterval =3D function() {
        return _timeoutInterval;
    }
   =20
    this.set_timeoutInterval =3D function(value) {
        _timeoutInterval =3D value;
    }

    this.get_priority =3D function() {
        return _priority;
    }

    this.set_priority =3D function(value) {
        _priority =3D value;
    }
   =20
       =20
    this.completed =3D this.createEvent();
    this.timeout =3D this.createEvent();
    this.error =3D this.createEvent();
    this.aborted =3D this.createEvent();

    this.invoke =3D function(userContext) {
                if (_request !=3D null) {
            return false;
        }

        var serviceMethod =3D new Sys.Net.ServiceMethod(_url, =
_methodName, _appUrl);
        _request =3D serviceMethod.invoke(_parameters, onMethodComplete, =
onMethodTimeout,=20
            onMethodError, onMethodAborted, this ,
            _timeoutInterval, _priority);

        function onMethodComplete(result, response, target ) {
            _request =3D null;
            _userContext =3D userContext;
            _response =3D response;
            _result =3D result;
            target.completed.invoke(target, Sys.EventArgs.Empty);
        }

        function onMethodError(result, response, target ) {
            _request =3D null;
            _userContext =3D userContext;
            _response =3D response;
            _result =3D result;
            target.error.invoke(target, Sys.EventArgs.Empty);
        }

        function onMethodTimeout(request, target ) {
            _request =3D null;
            _userContext =3D userContext;
            target.timeout.invoke(request, Sys.EventArgs.Empty);
        }
       =20
        function onMethodAborted(request, target ) {
            _request =3D null;
            _userContext =3D userContext;
            target.aborted.invoke(request, Sys.EventArgs.Empty);
        }
       =20
        return true;
    }

    this.abort =3D function() {
        if (_request) {
            _request.abort();
        }
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.Net.ServiceMethodRequest.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('url', String);
        td.addProperty('appUrl', String);
        td.addProperty('methodName', String);
        td.addProperty('parameters', Object, true);
        td.addProperty('response', Sys.Net.WebRequestExecutor, true);
        td.addProperty('result', Object, true);
        td.addProperty('timeoutInterval', Number);
        td.addProperty('priority', Number);

        td.addMethod('invoke');
        td.addMethod('abort');

        td.addEvent('completed', true);
        td.addEvent('timeout', true);
        td.addEvent('error', true);
        td.addEvent('aborted', true);

        return td;
    }
    Sys.Net.ServiceMethodRequest.registerBaseMethod(this, =
'getDescriptor');
}
Sys.Net.ServiceMethodRequest.registerClass('Sys.Net.ServiceMethodRequest'=
, Sys.Component);
Sys.TypeDescriptor.addType('script', 'serviceMethod', =
Sys.Net.ServiceMethodRequest);
Sys.Net.PageMethod =3D function(methodName) {
    Sys.Net.PageMethod.initializeBase(this);

this.get_methodName =3D function() { return methodName; }

    this.addHeaders =3D function(headers) {
                headers['Content-Type'] =3D =
'application/x-www-form-urlencoded';
    }

    this.get_url =3D function() {
        var form =3D document.forms[0];
        return form.action;
    }
   =20
    this.get_appUrl =3D function() {
        return null;
    }
   =20
    this.get_body =3D function(params) {
        var form =3D document.forms[0];

       =20
                var bodyDictionary =3D {};
        bodyDictionary["__serviceMethodName"] =3D methodName;
        bodyDictionary["__serviceMethodParams"] =3D =
Sys.Serialization.JSON.serialize(params);

                var count =3D form.elements.length;
        var element;
        for (var i =3D 0; i < count; i++) {
            element =3D form.elements[i];
            var tagName =3D element.tagName.toLowerCase();
            if (tagName =3D=3D "input") {
                var type =3D element.type;
                if ((type =3D=3D "text" || type =3D=3D "hidden" || type =
=3D=3D "password" ||
                    ((type =3D=3D "checkbox" || type =3D=3D "radio") && =
element.checked))) {
                    bodyDictionary[element.name] =3D element.value;
                }
            }
            else if (tagName =3D=3D "select") {
                var selectCount =3D element.options.length;
                for (var j =3D 0; j < selectCount; j++) {
                    var selectChild =3D element.options[j];
                    if (selectChild.selected =3D=3D true) {
                        bodyDictionary[element.name] =3D element.value;
                    }
                }
            }
            else if (tagName =3D=3D "textarea") {
                bodyDictionary[element.name] =3D element.value;
            }
        }

                return =
Sys.Net.WebRequest.createQueryString(bodyDictionary, =
encodeFormPostField);
    }

                function encodeFormPostField(param) {
                        param =3D param.replace(/%/gi, "%25");
        param =3D param.replace(/&/gi, "%26");
        param =3D param.replace(/=3D/gi, "%3d");
        param =3D param.replace(/\+/gi, "%2b");
        return param;
    }
}
Sys.Net.PageMethod.registerClass('Sys.Net.PageMethod', =
Sys.Net.WebMethod);

Sys.Net.PageMethod.invoke =3D function(methodName) {
   =20
    var method =3D new Sys.Net.PageMethod(methodName);

        var callMethodArgs =3D new Array();
    for (var i=3D1; i<arguments.length; i++)
        callMethodArgs[i-1] =3D arguments[i];

        return method.invoke.apply(method, callMethodArgs);
}

Sys.Net.PageMethod.createProxyMethod =3D function(proxy, methodName) {

        var numOfParams =3D arguments.length-2;
   =20
        var createWebMethodArguments =3D arguments;

        proxy[methodName] =3D function() {
   =20
                                var args =3D {};
        for (var i=3D0; i<numOfParams; i++) {
                        if (typeof(arguments[i]) =3D=3D 'function') {
                throw Error.createError(String.format("Parameter #{0} =
passed to method '{1}' should not be a function", i+1, methodName));
            }

            args[createWebMethodArguments[i+2]] =3D arguments[i];
        }

                        var callMethodArgs =3D [ methodName, args ];
       =20
                for (var i=3D0; i+numOfParams<arguments.length; i++)
            callMethodArgs[i+2] =3D arguments[numOfParams+i];
       =20
                return Sys.Net.PageMethod.invoke.apply(null, =
callMethodArgs);
    }
}
Sys.Net.MethodRequestError =3D function(message, stackTrace, =
exceptionType) {
    var _message =3D message;
    var _stackTrace =3D stackTrace;
    var _exceptionType =3D exceptionType;
   =20
    this.get_message =3D function() {
        return _message;
    }
   =20
    this.get_stackTrace =3D function() {
        return _stackTrace;
    }
   =20
    this.get_exceptionType =3D function() {
        return _exceptionType;
    }
}
Sys.Net.MethodRequestError.registerClass('Sys.Net.MethodRequestError');
Sys.Net.BatchResponse =3D function(request, data, status) {
    Sys.Net.BatchResponse.initializeBase(this);
   =20
    this.set_webRequest(request);
   =20
    this.get_data =3D function() {
        return data;
    }
   =20
    this.get_statusCode =3D function() {
        return status;
    }
}
Sys.Net.BatchResponse.registerClass('Sys.Net.BatchResponse', =
Sys.Net.WebRequestExecutor);
Sys.Net.BridgeMethod =3D function() {
    Sys.Net.BridgeMethod.initializeBase(this, [true]);
   =20
    var _data;
    var _bridgeURL =3D "";
    var _bridgeMethod =3D "";
    var _isReady =3D false;
    var _onTimeout =3D "";
    var _onError =3D "";
    var _parameters =3D {};
   =20
    this.get_data =3D function() {
        return _data;
    }
    this.set_data =3D function(data) {
        _data =3D data;
        this.raisePropertyChanged('data');
        this._set_isReady(true);
        this.dataAvailable.invoke(this, Sys.EventArgs.Empty);
    }
   =20
    this.get_isReady =3D function() {
        return _isReady;
    }
    this._set_isReady =3D function(value) {
        if (_isReady !=3D value) {
            _isReady =3D value;
            this.raisePropertyChanged("isReady");
        }
    }
   =20
    this.get_parameters =3D function() {
        return _parameters;
    }
   =20
    this.get_bridgeURL =3D function() {
        return _bridgeURL;
    }
    this.set_bridgeURL =3D function(url) {
        _bridgeURL =3D url;
        this.raisePropertyChanged('bridgeURL');
    }
   =20
    this.get_onTimeout =3D function() {
        return _onTimeout;
    }
    this.set_onTimeout =3D function(timeout) {
        _onTimeout =3D timeout;
        this.raisePropertyChanged('onTimeout');
    }
    this.get_onError =3D function() {
        return _onError;
    }
    this.set_onError =3D function(error) {
        _onError =3D error;
        this.raisePropertyChanged('onError');
    }
    this.get_bridgeMethod =3D function() {
        return _bridgeMethod;
    }
    this.set_bridgeMethod =3D function(value) {
        _bridgeMethod =3D value;
        this.raisePropertyChanged('bridgeMethod');
    }
   =20
    this.dispose =3D function() {
        _data =3D null;
       =20
        Sys.Net.BridgeMethod.callBaseMethod(this, 'dispose');
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.Net.BridgeMethod.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('data', Object);
        td.addProperty('isReady', Boolean, true);
        td.addProperty('bridgeURL', String);
        td.addProperty('parameters', Object, true);
        td.addProperty('bridgeMethod', String);
        td.addProperty('onTimeout', String);
        td.addProperty('onError', String);
        td.addMethod('invoke');
        td.addEvent('dataAvailable', true);
       =20
        return td;
    }
   =20
    this.dataAvailable =3D this.createEvent();
   =20
    function onRequestComplete(result, response, userContext) {
        userContext.set_data(result);
    }
   =20
    this.invoke =3D function() {
        this._set_isReady(false);

        var method =3D new Sys.Net.ServiceMethod(_bridgeURL, =
"__invokeBridge", document.URL.substr(0, =
document.URL.lastIndexOf('/')+1));
                var callMethodArgs =3D [ {"method" : _bridgeMethod, =
"args" : _parameters } , onRequestComplete, eval(_onTimeout), =
eval(_onError), "", this ];
        method.invoke.apply(method, callMethodArgs);
    }
}
Sys.Net.BridgeMethod.registerSealedClass('Sys.Net.BridgeMethod', =
Sys.Component);
Sys.TypeDescriptor.addType('script', 'bridgemethod', =
Sys.Net.BridgeMethod);

Type.registerNamespace('Sys.Data');

Sys.Data.IData =3D function() {
    this.add =3D Function.abstractMethod;
    this.clear =3D Function.abstractMethod;
    this.getRow =3D Function.abstractMethod;
    this.remove =3D Function.abstractMethod;
}
Sys.Data.IData.registerInterface('Sys.Data.IData');
Sys.Data.DataColumn =3D function(columnName, dataType, defaultValue, =
isKey, isReadOnly) {
    var _columnName =3D columnName;
    var _dataType =3D dataType;
    var _defaultValue =3D defaultValue;
    var _readOnly =3D isReadOnly;
    var _key =3D isKey;
   =20
    this.get_columnName =3D function() {
        return _columnName;
    }
   =20
    this.get_dataType =3D function() {
        return _dataType;
    }
   =20
    this.get_defaultValue =3D function() {
        return _defaultValue;
    }
   =20
    this.get_isKey =3D function() {
        return _key;
    }
   =20
    this.get_readOnly =3D function() {
        return _readOnly;
    }
   =20
    this.dispose =3D function() {
        _columnName =3D null;
        _dataType =3D null;
        _defaultValue =3D null;
    }

    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();
       =20
        td.addProperty('columnName', String, true);
        td.addProperty('dataType', Sys.Type, true);
        td.addProperty('defaultValue', Object, true);
        td.addProperty('isKey', Boolean, true);
        td.addProperty('readOnly', Boolean, true);
        return td;
    }
}
Sys.Data.DataColumn.registerSealedClass('Sys.Data.DataColumn', null, =
Sys.ITypeDescriptorProvider, Sys.IDisposable);
Sys.Data.DataRow =3D function(objectDataRow, dataTableOwner, index) {
    var _owner =3D dataTableOwner;
    var _row =3D objectDataRow;
    var _index =3D index;
    var _state =3D Sys.Data.DataRowState.Unchanged;
    var _selected =3D false;

    this.get_isDirty =3D function() {
        return typeof(_row._original) =3D=3D "object";
    }

    this.get_index =3D function() {
        return _index;
    }
    this._set_index =3D function(index) {
        _index =3D index;
    }

    this.get_rowObject =3D function() {
        return typeof(_row._rowObject) !=3D "undefined" ? =
_row._rowObject : _row;
    }

    this.get_selected =3D function() {
        return _selected;
    }
    this.set_selected =3D function(value) {
        if (_selected !=3D value) {
            _selected =3D value;
            this.raisePropertyChanged("$selected");
        }
    }

    this.get_state =3D function() {
        return _state;
    }
    this._set_state =3D function(value) {
        _state =3D value;
    }

    this.get_table =3D function() {
        return _owner;
    }
    this._set_table =3D function(value) {
        _owner =3D value;
    }

    this.dispose =3D function() {
        if (this.propertyChanged) {
            this.propertyChanged.dispose();
        }
        _row =3D null;
        _owner =3D null;
    }

    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();

        td.addProperty('$isDirty', Boolean, true);
        td.addProperty('$index', Number, true);
        td.addProperty('$selected', Boolean);
        td.addEvent('propertyChanged', true);
        return td;
    }

    this.initialize =3D function() {
        this.propertyChanged.initialize(this);
    }

    this.propertyChanged =3D new Type.Event(null);

    this.getProperty =3D function(name, key) {
        if (!name) {
            return typeof(_row._rowObject) !=3D "undefined" ? =
_row._rowObject : _row;
        }
        switch(name) {
        case "$isDirty":
            return this.get_isDirty();

        case "$index":
            return _index;

        case "$selected":
            return this.get_selected();
        }

        if (Sys.ITypeDescriptorProvider.isImplementedBy(_row)) {
            return Sys.TypeDescriptor.getProperty(_row, name, key);
        }
        return _row[name];
    }

    this.setProperty =3D function(name, value, key) {
        if (name =3D=3D "$selected") {
            this.set_selected(value);
            return;
        }
            debug.assert(_owner);
            var col =3D _owner.getColumn(name);
            debug.assert(col.get_readOnly() !=3D=3D true || _state =
=3D=3D Sys.Data.DataRowState.Detached, "A read-only property can't be =
set." )
        if (_row[name] =3D=3D=3D value) return;
        var isDirty =3D this.get_isDirty();
        if (!isDirty && _owner && (this.get_state() =3D=3D =
Sys.Data.DataRowState.Unchanged)) {
            var original =3D {};
            for (var columnName in _row) {
                if ((columnName.charAt(0) !=3D '_') && =
(typeof(_row[columnName]) !=3D "function")) {
                    original[columnName] =3D _row[columnName];
                }
            }
            _row._original =3D original;
            this._set_state(Sys.Data.DataRowState.Modified);
        }

        if (Sys.ITypeDescriptorProvider.isImplementedBy(_row)) {
            Sys.TypeDescriptor.setProperty(_row, name, value, key);
        }
        else {
            _row[name] =3D value;
        }
        this.raisePropertyChanged(name);
        if (!isDirty) {
            this.raisePropertyChanged("$isDirty");
        }
        _owner.raiseRowChanged(_row);
    }

    this.invokeMethod =3D function(methodName, parameters) {
    }

    this.raisePropertyChanged =3D function(propertyName) {
        this.propertyChanged.invoke(this, new =
Sys.PropertyChangedEventArgs(propertyName));
    }
}
Sys.Data.DataRow.registerSealedClass('Sys.Data.DataRow', null, =
Sys.ICustomTypeDescriptor, Sys.INotifyPropertyChanged, =
Sys.ITypeDescriptorProvider, Sys.IDisposable);
Sys.Data.DataRowView =3D function(dataRow, index) {
    var _row =3D dataRow;
    var _index =3D index;
    var _propertyChanged;

    this.get_dataIndex =3D function() {
        return _row.get_index();
    }

    this.get_index =3D function() {
        return _index;
    }
    this._set_index =3D function(value) {
        _index =3D value;
    }

    this.get_isDirty =3D function() {
        return _row.get_isDirty();
    }

    this._get_row =3D function() {
        return _row;
    }

    this.get_rowObject =3D function() {
        return _row.get_rowObject();
    }

    this.get_selected =3D function() {
        return _row.get_selected();
    }
    this.set_selected =3D function(value) {
        _row.set_selected(value);
    }

    this.get_table =3D function() {
        return _row.get_table();
    }

    this.dispose =3D function() {
        if (_row && _propertyChanged) {
            _row.propertyChanged.remove(_propertyChanged);
        }
        if (this.propertyChanged) {
            this.propertyChanged.dispose();
            this.propertyChanged =3D null;
        }
        _row =3D null;
    }

    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();

        td.addProperty('$dataIndex', Number, true);
        td.addProperty('$isDirty', Boolean, true);
        td.addProperty('$index', Number, true);
        td.addProperty('$selected', Boolean);
        td.addEvent('propertyChanged', true);
        return td;
    }

    this.initialize =3D function() {
        _propertyChanged =3D Function.createDelegate(this, =
onPropertyChanged);
        _row.propertyChanged.add(_propertyChanged);
    }

    this.propertyChanged =3D new Type.Event(null);

    function onPropertyChanged(sender, args) {
        this.raisePropertyChanged(args.get_propertyName());
    }

    this.getProperty =3D function(name, key) {
        if (name =3D=3D "$index") return _index;
        if (name =3D=3D "$dataIndex") return _row.get_index();
        return _row.getProperty(name, key);
    }

    this.setProperty =3D function(name, value, key) {
        _row.setProperty(name, value, key);
    }

    this.invokeMethod =3D function(methodName, parameters) {
    }

    this.raisePropertyChanged =3D function(propertyName) {
        this.propertyChanged.invoke(this, new =
Sys.PropertyChangedEventArgs(propertyName));
    }
}
Sys.Data.DataRowView.registerSealedClass('Sys.Data.DataRowView', null, =
Sys.ICustomTypeDescriptor, Sys.INotifyPropertyChanged, =
Sys.ITypeDescriptorProvider, Sys.IDisposable);
Sys.Data.DataRowCollection =3D function(dataRowViews, dataTable) {
    var _rows =3D dataRowViews;
    var _dataTable =3D dataTable;

    var _indexToRow =3D null;

    var _tableCollectionChanged;

    var _suspendNotifications =3D false;

    this._get_dataTable =3D function() {
        return _dataTable;
    }

    this.get_length =3D function() {
        return _rows.length;
    }

    this.add =3D function(rowObject) {
        var row =3D _dataTable.add(rowObject);
        var rv =3D new Sys.Data.DataRowView(row, _rows.length);
        rv.initialize();
        _rows.add(rv);
        if (_indexToRow) {
            _indexToRow[row.get_dataIndex()] =3D row;
        }
    }

    this.clear =3D function() {
        _suspendNotifications =3D true;
        for (var i =3D _rows.length - 1; i >=3D 0; i--) {
            _dataTable.remove(_rows[i]._get_row());
        }
        _rows =3D [];
        _indexToRow =3D null;
        _suspendNotifications =3D false;
        =
this.raiseCollectionChanged(Sys.NotifyCollectionChangedAction.Reset, =
null);
    }

    this.getRow =3D function(index) {
        return _rows[index];
    }
    this.getItem =3D this.getRow;

    this.remove =3D function(rowObject) {
        _dataTable.remove(rowObject._get_row());
    }

    this.dispose =3D function() {
        if (_dataTable && _tableCollectionChanged) {
            =
_dataTable.collectionChanged.remove(_tableCollectionChanged);
        }
        if (this.collectionChanged) {
            this.collectionChanged.dispose();
            this.collectionChanged =3D null;
        }
        if (this.propertyChanged) {
            this.propertyChanged.dispose();
            this.propertyChanged =3D null;
        }
        _rows =3D null;
        _dataTable =3D null;
    }

    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();

        td.addProperty('length', Number, true);
        td.addMethod('add');
        td.addMethod('clear');
        td.addMethod('remove');
        td.addEvent('collectionChanged', true);
        td.addEvent('propertyChanged', true);
        return td;
    }

    this.initialize =3D function() {
        if (_dataTable.collectionChanged) {
            _tableCollectionChanged =3D Function.createDelegate(this, =
onTableCollectionChanged);
            _dataTable.collectionChanged.add(_tableCollectionChanged);
        }
    }

    this.collectionChanged =3D new Type.Event(null);
    this.propertyChanged =3D new Type.Event(null);

    this.raiseCollectionChanged =3D function(action, changedItem) {
        this.collectionChanged.invoke(this, new =
Sys.CollectionChangedEventArgs(action, changedItem));
    }

    function ensureLookupTable() {
        if (!_indexToRow) {
            _indexToRow =3D [];
            for (var j =3D _rows.length - 1; j >=3D 0; j--) {
                var row =3D _rows[j];
                _indexToRow[row.get_dataIndex()] =3D row;
            }
        }
    }

    function onTableCollectionChanged(sender, args) {
        if (_suspendNotifications) return;
        switch(args.get_action()) {
        case Sys.NotifyCollectionChangedAction.Reset:
            _rows =3D [];
            _indexToRow =3D null;
            =
this.raiseCollectionChanged(Sys.NotifyCollectionChangedAction.Reset, =
changedItem);
            return;
        case Sys.NotifyCollectionChangedAction.Remove:
            var changedItem =3D args.get_changedItem();
            ensureLookupTable();
            var idx =3D changedItem.get_index();
            if (_indexToRow[idx]) {
                _rows.remove(_indexToRow[idx]);
                delete _indexToRow[idx];
                =
this.raiseCollectionChanged(Sys.NotifyCollectionChangedAction.Remove, =
changedItem);
            }
            return;
        }
    }
}
Sys.Data.DataRowCollection.registerSealedClass('Sys.Data.DataRowCollectio=
n', null, Sys.Data.IData, Sys.IArray, Sys.INotifyPropertyChanged, =
Sys.INotifyCollectionChanged, Sys.ITypeDescriptorProvider, =
Sys.IDisposable);
Type.createEnum('Sys.Data.DataRowState',
    'Unchanged', 0,
    'Added', 1,
    'Deleted', 2,
    'Detached', 3,
    'Modified', 4);
Sys.Data.DataTable =3D function(columns, tableArray) {
    var _array =3D Array.isInstanceOfType(tableArray) ? tableArray : [];

    var _columns =3D Array.isInstanceOfType(columns) ? columns : [];
    var _columnDictionary =3D {};

    var _keys =3D null;

    var _rows =3D [];
    var _deletedRows =3D [];
    var _newRows =3D [];
    var _updatedRows =3D [];

    this.get_columns =3D function() {
        return _columns;
    }

    this.get_keyNames =3D function() {
        if (!_keys) {
            _keys =3D [];
            var len =3D _columns.length;
            for (var i =3D 0; i < len; i++) {
                var col =3D _columns[i];
                if (col.get_isKey()) {
                    _keys.add(col.get_columnName());
                }
            }
        }
        return _keys;
    }

    this.get_isDirty =3D function() {
        return (_deletedRows.length !=3D 0) || (_newRows.length !=3D 0) =
|| (_updatedRows.length !=3D 0);
    }

    this.get_length =3D function() {
        return _array.length;
    }

    this.add =3D function(rowObject) {
        var row;
        if (Sys.Data.DataRow.isInstanceOfType(rowObject)) {
            row =3D rowObject;
            debug.assert(((row.get_table() =3D=3D this) && =
(row.get_state() =3D=3D Sys.Data.DataRowState.Detached)) ||
                         !row.get_table(),
                         'Can\'t add a row that belongs to another table =
or has been added already.');
            row._set_table(this);
            rowObject =3D rowObject.get_rowObject();
        }
        else {
            row =3D new Sys.Data.DataRow(rowObject, this);
        }
        var index =3D _array.length;
        row._set_index(index);
        var columns =3D this.get_columns();
        if (columns) {
            for(var i =3D columns.length - 1; i >=3D 0; i--) {
                var column =3D columns[i];
                if (typeof(rowObject[column.get_columnName()]) =3D=3D =
"undefined") {
                    rowObject[column.get_columnName()] =3D =
column.get_defaultValue();
                }
            }
        }
        var oldIsDirty =3D this.get_isDirty();
        _array[index] =3D rowObject;
        _rows[index] =3D row;
        _newRows.add(rowObject);
        row._set_state(Sys.Data.DataRowState.Added);
        =
this.raiseCollectionChanged(Sys.NotifyCollectionChangedAction.Add, row);
        this.raisePropertyChanged("length");
        if (!oldIsDirty) {
            this.raisePropertyChanged("isDirty");
        }
        return row;
    }

    this.clear =3D function() {
        if (this.get_length() > 0) {
            var oldIsDirty =3D this.get_isDirty();
            for (var i =3D _array.length - 1; i >=3D 0; i--) {
                var row =3D _array[i];
                if (row && !_newRows.contains(row)) {
                    _deletedRows.add(row);
                    _rows[i]._set_state(Sys.Data.DataRowState.Deleted);
                }
            }
            _rows =3D [];
            _array =3D [];
            _newRows =3D [];
            _updatedRows =3D [];
            =
this.raiseCollectionChanged(Sys.NotifyCollectionChangedAction.Reset, =
null);
            this.raisePropertyChanged("length");
            if (!oldIsDirty) {
                this.raisePropertyChanged("isDirty");
            }
        }
    }

    this.createRow =3D function(initialData) {
        var obj =3D {};
        var undef =3D {};
        for (var i =3D _columns.length - 1; i >=3D 0; i--) {
            var column =3D _columns[i];
            var columnName =3D column.get_columnName();
            var val =3D undef;
            if (initialData) {
                val =3D Sys.TypeDescriptor.getProperty(initialData, =
columnName);
            }
            if ((val =3D=3D undef) || (typeof(val) =3D=3D "undefined")) =
{
                val =3D column.get_defaultValue();
            }
            obj[columnName] =3D val;
        }
        var row =3D new Sys.Data.DataRow(obj, this, -1);
        row._set_state(Sys.Data.DataRowState.Detached);
        return row;
    }

    this.getChanges =3D function() {
        return {updated : _updatedRows, inserted : _newRows, deleted : =
_deletedRows};
    }

    this.getColumn =3D function(name) {
        var col =3D _columnDictionary[name];
        if (col) {
            return col;
        }
        for (var c =3D _columns.length - 1; c >=3D 0; c--) {
            var column =3D _columns[c];
            if (column.get_columnName() =3D=3D name) {
                _columnDictionary[name] =3D column;
                return column;
            }
        }
debug.fail(String.format("Column name {0} doesn't exist.", name));
        return null;
    }

    this.getRow =3D function(index) {
        var row =3D _rows[index];
        if (!row) {
            var rowObject =3D _array[index];
            if (rowObject) {
                row =3D Sys.Data.DataRow.isInstanceOfType(rowObject) ? =
rowObject : new Sys.Data.DataRow(rowObject, this, index);
                _rows[index] =3D row;
            }
        }
        return row;
    }

    this.getItem =3D this.getRow;

    this.remove =3D function(rowObject) {
        if (Sys.Data.DataRow.isInstanceOfType(rowObject)) {
            rowObject =3D rowObject.get_rowObject();
        }
        var oldIsDirty =3D this.get_isDirty();
        var index =3D _array.indexOf(rowObject);
        var row =3D this.getItem(index);
        _array.removeAt(index);
        _rows.removeAt(index);
        index =3D _newRows.indexOf(rowObject);
        if (index !=3D -1) {
            _newRows.removeAt(index);
        }
        else {
            _deletedRows.add(rowObject);
        }
        row._set_state(Sys.Data.DataRowState.Deleted);
        =
this.raiseCollectionChanged(Sys.NotifyCollectionChangedAction.Remove, =
row);
        this.raisePropertyChanged("length");
        if (oldIsDirty !=3D this.get_isDirty()) {
            this.raisePropertyChanged("isDirty");
        }
    }

    this.dispose =3D function() {
        if (this.collectionChanged) {
            this.collectionChanged.dispose();
            this.collectionChanged =3D null;
        }
        if (this.propertyChanged) {
            this.propertyChanged.dispose();
            this.propertyChanged =3D null;
        }
        var i, row;
        if (_rows) {
            for (i =3D _rows.length - 1; i >=3D 0; i--) {
                row =3D _rows[i];
                if (row) {
                    _rows[i].dispose();
                }
            }
        }
        if (_deletedRows) {
            for (i =3D _deletedRows.length - 1; i >=3D 0; i--) {
                row =3D _deletedRows[i];
                if (row && row.dispose) {
                    row.dispose();
                }
            }
        }
        if (_newRows) {
            for (i =3D _newRows.length - 1; i >=3D 0; i--) {
                row =3D _newRows[i];
                if (row && row.dispose) {
                    row.dispose();
                }
            }
        }
        if (_updatedRows) {
            for (i =3D _updatedRows.length - 1; i >=3D 0; i--) {
                row =3D _updatedRows[i];
                if (row && row.dispose) {
                    row.dispose();
                }
            }
        }
        _rows =3D null;
        _deletedRows =3D null;
        _newRows =3D null;
        _updatedRows =3D null;
        _columns =3D null;
        _array =3D null;
        _keys =3D null;
    }

    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();

        td.addProperty('columns', Array, true);
        td.addProperty('keyNames', Array, true);
        td.addProperty('length', Number, true);
        td.addProperty('isDirty', Boolean, true);
        td.addMethod('add');
        td.addMethod('clear');
        td.addMethod('remove');
        td.addEvent('collectionChanged', true);
        td.addEvent('propertyChanged', true);
        return td;
    }

    this.collectionChanged =3D new Type.Event(null);
    this.propertyChanged =3D new Type.Event(null);

    this.raiseCollectionChanged =3D function(action, changedItem) {
        this.collectionChanged.invoke(this, new =
Sys.CollectionChangedEventArgs(action, changedItem));
    }

    this.raiseRowChanged =3D function(changedItem) {
        if ((_updatedRows.indexOf(changedItem) =3D=3D -1) && =
(_newRows.indexOf(changedItem) =3D=3D -1)) {
            var oldIsDirty =3D this.get_isDirty();
            _updatedRows.add(changedItem);
            if (!oldIsDirty) {
                this.raisePropertyChanged("isDirty");
            }
        }
    }

    this.raisePropertyChanged =3D function(propertyName) {
        this.propertyChanged.invoke(this, new =
Sys.PropertyChangedEventArgs(propertyName));
    }
}
Sys.Data.DataTable.registerSealedClass('Sys.Data.DataTable', null, =
Sys.Data.IData, Sys.IArray, Sys.INotifyPropertyChanged, =
Sys.INotifyCollectionChanged, Sys.ITypeDescriptorProvider, =
Sys.IDisposable);
Sys.Data.DataView =3D function() {
                    Sys.Data.DataView.initializeBase(this);

        var _data =3D null;
    var _filteredTable =3D null;
    var _filteredRows =3D null;
    var _paginatedRows =3D null;

    var _pageSize =3D 0;
    var _pageIndex =3D 0;

    var _sorted =3D false;
    var _sortColumn =3D '';
    var _sortDirection =3D Sys.Data.SortDirection.Ascending;

    var _filters;

    var _dataChangedDelegate;
    var _compareRowsDelegate;

    var _updating =3D false;

    this.get_data =3D function() {
                                return _data;
    }
    this.set_data =3D function(data) {
debug.assert(!data || Sys.Data.IData.isImplementedBy(data) || =
Sys.IArray.isImplementedBy(data));
        _filteredTable =3D null;
        if (_data && _data.collectionChanged) {
            _data.collectionChanged.remove(_dataChangedDelegate);
        }
        _data =3D data;
        if (_data && _data.collectionChanged) {
            _data.collectionChanged.add(_dataChangedDelegate);
        }
        this.raisePropertyChanged('data');
        this.raisePropertyChanged('filteredData');
    }

    this.get_filteredData =3D function() {
                                ensureFilteredData.call(this);
        return _filteredTable;
    }

    this.get_filters =3D function() {
                                if (!_filters) {
            _filters =3D Sys.Component.createCollection(this);
            _filters.collectionChanged.add(_dataChangedDelegate);
        }
        return _filters;
    }

    this.get_hasNextPage =3D function() {
                                ensureFilteredData.call(this);
        return (this.get_pageIndex() < this.get_pageCount() - 1);
    }
    this.get_hasPreviousPage =3D function() {
                                if (!_data) return false;
        return (this.get_pageIndex() > 0);
    }

    this.get_length =3D function() {
                                ensureFilteredData.call(this);
        return _filteredTable ? _filteredTable.get_length() : 0;
    }

    this.get_pageCount =3D function() {
                                if (_pageSize =3D=3D 0) {
            return 1;
        }
        ensureFilteredData.call(this);
        if (!_filteredRows) return 1;
        return Math.floor((_filteredRows.length - 1) / _pageSize) + 1;
    }

    this.get_pageIndex =3D function() {
                                return _pageIndex;
    }
    this.set_pageIndex =3D function(value, dontRaiseFilteredDataChanged) =
{
debug.assert(value >=3D 0, "pageIndex should be superior or equal to =
zero.");
        var count =3D this.get_pageCount();
        if (value >=3D count) {
            value =3D (count > 0 ? count - 1 : 0);
        }
        if (value !=3D _pageIndex) {
            var oldState =3D prepareChange.call(this);
            _pageIndex =3D value;
            _paginatedRows =3D null;
            triggerChangeEvents.call(this, oldState, false);
            if (!dontRaiseFilteredDataChanged) {
                this.raisePropertyChanged('filteredData');
            }
        }
    }

    this.get_pageSize =3D function() {
                                return _pageSize;
    }
    this.set_pageSize =3D function(value) {
        if (_pageSize !=3D value) {
            var oldState =3D prepareChange.call(this);
            _pageSize =3D value;
            _paginatedRows =3D null;
            triggerChangeEvents.call(this, oldState, true);
            this.raisePropertyChanged('filteredData');
        }
    }

    this.get_sortColumn =3D function() {
                                return _sortColumn;
    }
    this.set_sortColumn =3D function(value) {
        this.sort(value, _sortDirection);
    }

    this.get_sortDirection =3D function() {
                                return _sortDirection;
    }
    this.set_sortDirection =3D function(value) {
        this.sort(_sortColumn, value);
    }

    this.dispose =3D function() {
        if (_filters) {
            _filters.dispose();
            _filters =3D null;
        }

        Sys.Data.DataView.callBaseMethod(this, 'dispose');
    }
    Sys.Data.DataView.registerBaseMethod(this, 'dispose');

    this.getDescriptor =3D function() {
        var td =3D Sys.Data.DataView.callBaseMethod(this, =
'getDescriptor');

        td.addProperty("data", Sys.Data.DataTable);
        td.addProperty("filteredData", Sys.Data.DataTable, true);
        td.addProperty("filters", Array, true);
        td.addProperty("hasNextPage", Boolean, true);
        td.addProperty("hasPreviousPage", Boolean, true);
        td.addProperty("length", Number, true);
        td.addProperty("pageCount", Number, true);
        td.addProperty("pageIndex", Number);
        td.addProperty("pageSize", Number);
        td.addProperty("sortColumn", String);
        td.addProperty("sortDirection", Sys.Data.SortDirection);
        td.addMethod("sort", [ =
Sys.TypeDescriptor.createParameter('sortColumn', String),
                               =
Sys.TypeDescriptor.createParameter('sortDirection', =
Sys.Data.SortDirection) ]);
        return td;
    }
    Sys.Data.DataView.registerBaseMethod(this, 'getDescriptor');

    this.getItem =3D function(index) {
                                                return _filteredTable ? =
_filteredTable[index] : null;
    }

    this.initialize =3D function() {
        Sys.Data.DataView.callBaseMethod(this, 'initialize');
        if (_filters) {
            for (var i =3D 0; i < _filters.length; i++) {
                _filters[i].initialize(this);
            }
        }
    }
    Sys.Data.DataView.registerBaseMethod(this, 'initialize');

    this.sort =3D function(sortColumn, sortDirection) {
                                                var colChanged =3D =
(sortColumn !=3D _sortColumn);
        var dirChanged =3D (sortDirection !=3D _sortDirection);
        if (colChanged || dirChanged) {
            _sortColumn =3D sortColumn;
            _sortDirection =3D sortDirection;
            if (colChanged) {
                this.raisePropertyChanged('sortColumn');
            }
            if (dirChanged) {
                this.raisePropertyChanged('sortDirection');
            }
            _sorted =3D false;
            this.set_pageIndex(0, true);
            this.raisePropertyChanged('filteredData');
        }
    }

    this._raiseFilterChanged =3D function(filter) {
        _dataChangedDelegate(this, Sys.EventArgs.Empty);
    }

    function compareRows(row1, row2) {
        var sortColumn =3D this.get_sortColumn();
        var sortDirection =3D this.get_sortDirection();
        if (row1.getProperty(sortColumn) =3D=3D =
row2.getProperty(sortColumn)) return 0;
        if (row1.getProperty(sortColumn) < row2.getProperty(sortColumn)) =
{
            return (sortDirection =3D=3D =
Sys.Data.SortDirection.Ascending) ? -1 : 1;
        }
        return (sortDirection =3D=3D Sys.Data.SortDirection.Ascending) ? =
1 : -1;
    }
    _compareRowsDelegate =3D Function.createDelegate(this, compareRows);

        function onDataChanged(sender, args) {
        if (args !=3D Sys.EventArgs.Empty) {
            var item =3D args.get_changedItem();
            var filters =3D this.get_filters();
            if (item && !isValidAfterFiltering.call(item, filters, =
filters.get_length())) {
                                return;
            }
                    }
        _filteredTable =3D null;
        this.raisePropertyChanged('filteredData');
    }
    _dataChangedDelegate =3D Function.createDelegate(this, =
onDataChanged);

    function ensureFilteredData() {
        if (_updating || !_data) return;
        _updating =3D true;
        var oldState =3D prepareChange.call(this);
        if ((typeof(_data.length) =3D=3D "number") && (_data.length =
=3D=3D=3D 0)) {
            _filteredRows =3D [];
            _paginatedRows =3D [];
            _filteredTable =3D new Sys.Data.DataRowCollection([], =
_data);
            _filteredTable.initialize();
            _sorted =3D true;
        }
        else {
            if (!_filteredTable) {
                _filteredRows =3D [];
                _paginatedRows =3D null;
                _filteredTable =3D null;
                var filters =3D this.get_filters();
                var filterLength =3D filters.get_length();
                var dataLength =3D _data.get_length();
                for (var i =3D 0; i < dataLength; i++) {
                    var item =3D _data.getItem(i);
                    if (!Sys.Data.DataRow.isInstanceOfType(item)) {
                        item =3D new Sys.Data.DataRow(item, null, i);
                    }
                    if (isValidAfterFiltering.call(this, item, filters, =
filterLength)) {
                        var rv =3D new Sys.Data.DataRowView(item, i);
                        rv.initialize();
                        _filteredRows.add(rv);
                    }
                }
            }
            if (!_sorted && _sortColumn && (_filteredRows.length !=3D =
0)) {
                _filteredRows.sort(_compareRowsDelegate);
                for (var i =3D _filteredRows.length - 1; i >=3D 0; i--) =
{
                    _filteredRows[i]._set_index(i);
                }
                _sorted =3D true;
                _paginatedRows =3D null;
                _filteredTable =3D null;
            }
            if ((_pageSize > 0) && !_paginatedRows) {
                _paginatedRows =3D [];
                _filteredTable =3D null;
                var len =3D _filteredRows.length;
                var start =3D _pageSize * _pageIndex;
                if (len && (start >=3D len)) {
                    _pageIndex =3D Math.floor(len / _pageSize) - 1;
                    start =3D _pageSize * _pageIndex;
                }
                var end =3D start + _pageSize;
                for(var i =3D start; (i < end) && (i < len); i++) {
                    _filteredRows[i]._set_index(i);
                    _paginatedRows.add(_filteredRows[i]);
                }
            }
            else {
                _paginatedRows =3D _filteredRows;
            }
            if (!_filteredTable) {
                _filteredTable =3D new =
Sys.Data.DataRowCollection(_paginatedRows, _data);
                _filteredTable.initialize();
            }
        }
        triggerChangeEvents.call(this, oldState, true);
        _updating =3D false;
    }

    function isValidAfterFiltering(row, filters, filterLength) {
        for (var j =3D 0; j < filterLength; j++) {
            if (!filters[j].filter(row)) {
                return false;
            }
        }
        return true;
    }

    function triggerChangeEvents(oldState, lengthCanChange) {
        var count;
        var pageIndex =3D this.get_pageIndex();
        if (lengthCanChange) {
            if (this.get_pageCount() !=3D oldState.pageCount) {
                this.raisePropertyChanged('pageCount');
            }
            if (this.get_length() !=3D oldState.length) {
                this.raisePropertyChanged('length');
            }
            count =3D this.get_pageCount();
            if (pageIndex >=3D count) {
                pageIndex =3D (count > 0 ? count - 1 : 0);
                this.set_pageIndex(pageIndex);
            }
        }
        else {
            count =3D oldState.pageCount;
        }
        if (pageIndex !=3D oldState.pageIndex) {
            this.raisePropertyChanged('pageIndex');
        }
        if ((pageIndex < count - 1) !=3D oldState.hasNextPage) {
            this.raisePropertyChanged('hasNextPage');
        }
        if ((pageIndex > 0) !=3D oldState.hasPreviousPage) {
            this.raisePropertyChanged('hasPreviousPage');
        }
    }

    function prepareChange() {
        return {pageCount: this.get_pageCount(),
                pageIndex: this.get_pageIndex(),
                length: this.get_length(),
                hasNextPage: this.get_hasNextPage(),
                hasPreviousPage: this.get_hasPreviousPage()};
    }
}
Sys.Data.DataView.registerClass('Sys.Data.DataView', Sys.Component, =
Sys.IArray);
Sys.TypeDescriptor.addType('script', 'dataView', Sys.Data.DataView);
Sys.Data.DataFilter =3D function() {
    Sys.Data.DataFilter.initializeBase(this, [false]);
   =20
        this.filter =3D Function.abstractMethod;
   =20
    this.get_dataContext =3D function() {
        var dc =3D Sys.Data.DataFilter.callBaseMethod(this, =
'get_dataContext');
        if (!dc) {
            if (this.owner) {
                dc =3D this.owner.get_dataContext();
            }
        }
       =20
        return dc;
    }
    Sys.Data.DataFilter.registerBaseMethod(this, 'get_dataContext');
   =20
    this.dispose =3D function() {
        this.owner =3D null;
        Sys.Data.DataFilter.callBaseMethod(this, 'dispose');
    }
    Sys.Data.DataFilter.registerBaseMethod(this, 'dispose');
   =20
    this.raisePropertyChanged =3D function(propertyName) {
        Sys.Data.DataFilter.callBaseMethod(this, =
'raisePropertyChanged');
        if (this.owner) {
            this.owner._raiseFilterChanged(this);
        }
    }
    Sys.Data.DataFilter.registerBaseMethod(this, =
'raisePropertyChanged');
   =20
    this.setOwner =3D function(owner) {
        this.owner =3D owner;
    }
}
Sys.Data.DataFilter.registerAbstractClass('Sys.Data.DataFilter', =
Sys.Component);
Sys.Data.PropertyFilter =3D function() {
    Sys.Data.PropertyFilter.initializeBase(this, [false]);
   =20
    var _property;
    var _value;
   =20
    this.get_property =3D function() {
        return _property;
    }
    this.set_property =3D function(name) {
        _property =3D name;
        this.raisePropertyChanged('property');
    }
   =20
    this.get_value =3D function() {
        return _value;
    }
    this.set_value =3D function(value) {
        _value =3D value;
        this.raisePropertyChanged('value');
    }
   =20
    this.filter =3D function(item) {
        if (Sys.ITypeDescriptorProvider.isImplementedBy(item)) {
            return Sys.TypeDescriptor.getProperty(item, _property) =
=3D=3D _value;
        }
        return item[_property] =3D=3D _value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.Data.PropertyFilter.callBaseMethod(this, =
'getDescriptor');

        td.addProperty('property', String);
        td.addProperty('value', String);
        return td;
    }
}
Sys.Data.PropertyFilter.registerSealedClass('Sys.Data.PropertyFilter', =
Sys.Data.DataFilter);
Sys.TypeDescriptor.addType('script', 'propertyFilter', =
Sys.Data.PropertyFilter);
Sys.Data.DataSource =3D function() {
                        Sys.Data.DataSource.initializeBase(this, =
[true]);

    var _data =3D null;
    var _initialData;
    var _autoLoad =3D false;
    var _serviceURL =3D "";
    var _loadMethod =3D "";
    var _serviceType =3D Sys.Data.ServiceType.DataService;
    var _parameters =3D {};
    var _isReady =3D true;

    var _dataChangedDelegate;

    this.get_autoLoad =3D function() {
        return _autoLoad;
    }
    this.set_autoLoad =3D function(value) {
        _autoLoad =3D value;
    }

    this.get_data =3D function() {
        return _data;
    }
    this.set_data =3D function(data) {
debug.assert(!data || Sys.Data.DataTable.isInstanceOfType(data) || (data =
instanceof Array), "data must be of type Sys.Data.DataTable or Array.");
        var oldIsDirtyAndReady =3D this.get_isDirtyAndReady();
        var oldIsReady =3D this.get_isReady();
        var oldRowCount =3D this.get_rowCount();
        if (_data) {
            _data.propertyChanged.remove(_dataChangedDelegate);
        }
        if (data instanceof Array) {
            data =3D new Sys.Data.DataTable([], data);
        }
        _data =3D data;
        if (_data) {
            _data.propertyChanged.add(_dataChangedDelegate);
        }
        this.raisePropertyChanged('data');
        if (oldIsDirtyAndReady !=3D this.get_isDirtyAndReady()) {
            this.raisePropertyChanged('isDirtyAndReady');
        }
        if (oldIsReady !=3D this.get_isReady()) {
            this.raisePropertyChanged('isReady');
        }
        if (oldRowCount !=3D this.get_rowCount()) {
            this.raisePropertyChanged('rowCount');
        }
    }

    this.get_initialData =3D function() {
        return _initialData;
    }
    this.set_initialData =3D function(value) {
        if (!_data) {
            if (this.get_isInitialized()) {
                var data =3D null;
                if (value && (value.length)) {
                    data =3D Sys.Serialization.JSON.deserialize(value);
                }
                this.set_data(data);
            }
            else {
                _initialData =3D value;
            }
        }
    }

    this.get_isDirtyAndReady =3D function() {
        return _isReady && _data && _data.get_isDirty();
    }

    this.get_isReady =3D function() {
        return _isReady;
    }
    this._set_isReady =3D function(value) {
        if (_isReady !=3D value) {
            var oldDirtyAndReady =3D this.get_isDirtyAndReady();
            _isReady =3D value;
            this.raisePropertyChanged("isReady");
            if (this.get_isDirtyAndReady() !=3D oldDirtyAndReady) {
                this.raisePropertyChanged("isDirtyAndReady");
            }
        }
    }

    this.get_loadMethod =3D function() {
        return _loadMethod;
    }
    this.set_loadMethod =3D function(value) {
        _loadMethod =3D value;
    }

    this.get_parameters =3D function() {
        return _parameters;
    }

    this.get_serviceURL =3D function() {
        return _serviceURL;
    }
    this.set_serviceURL =3D function(url) {
        _serviceURL =3D url;
    }

    this.get_serviceType =3D function() {
        return _serviceType;
    }
    this.set_serviceType =3D function(value) {
        _serviceType =3D value;
    }

    this.get_rowCount =3D function() {
        if (_data) {
            return _data.get_length();
        }
        return 0;
    }

    this.dispose =3D function() {
        if (_data) {
            _data.dispose();
        }
        _data =3D null;

        Sys.Data.DataSource.callBaseMethod(this, 'dispose');
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.Data.DataSource.callBaseMethod(this, =
'getDescriptor');

        td.addProperty('data', Object);
        td.addProperty('autoLoad', Boolean);
        td.addProperty('initialData', String);
        td.addProperty('isDirtyAndReady', Boolean, true);
        td.addProperty('isReady', Boolean, true);
        td.addProperty('loadMethod', String);
        td.addProperty('rowCount', Number, true);
        td.addProperty('serviceURL', String);
        td.addProperty('parameters', Object, true);
        td.addProperty('serviceType', Sys.Data.ServiceType);
        td.addMethod('load');
        td.addMethod('save');
        td.addEvent('dataAvailable', true);

        return td;
    }

    this.dataAvailable =3D this.createEvent();

    this.initialize =3D function() {
        Sys.Data.DataSource.callBaseMethod(this, 'initialize');
        if (_autoLoad || _initialData) {
            this.load();
        }
    }

    function onDataPropertyChanged(sender, args) {
        switch(args.get_propertyName()) {
            case "isDirty":
                this.raisePropertyChanged("isDirtyAndReady");
                break;
            case "length":
                this.raisePropertyChanged("rowCount");
                break;
        }
    }
    _dataChangedDelegate =3D Function.createDelegate(this, =
onDataPropertyChanged);

    function onRequestComplete(sender, eventArgs) {
        onLoadComplete.call(this, sender.get_response().get_object());
    }

    function onLoadComplete(rawData) {
        var oldDirtyAndReady =3D this.get_isDirtyAndReady();
        this.set_data(rawData);
        _isReady =3D true;
        this.raisePropertyChanged("isReady");
        if (this.get_isDirtyAndReady() !=3D oldDirtyAndReady) {
            this.raisePropertyChanged("isDirtyAndReady");
        }
        this.dataAvailable.invoke(this, Sys.EventArgs.Empty);
    }

    function ready() {
        this._set_isReady(true);
    }

    this.load =3D function() {
                                                        if =
(_initialData) {
            =
this.set_data(Sys.Serialization.JSON.deserialize(_initialData));
            _initialData =3D null;
            return;
        }
        this._set_isReady(false);
        if (_serviceType =3D=3D Sys.Data.ServiceType.DataService) {
            Sys.Net.ServiceMethod.invoke(_serviceURL, "GetData", null,
                {parameters: _parameters, loadMethod: _loadMethod},
                Function.createDelegate(this, onLoadComplete),
                Function.createDelegate(this, ready));
        }
        else {
            var url =3D Sys.Net.WebRequest.createUrl(_serviceURL, =
_parameters);
            var request =3D new Sys.Net.WebRequest();
            request.set_url(url);
            request.completed.add(Function.createDelegate(this, =
onRequestComplete));
            request.timeout.add(Function.createDelegate(this, ready));

            request.invoke();
        }
    }

    this.save =3D function() {
        if (_data && _data.get_isDirty()) {
            var changes =3D _data.getChanges();
            this._set_isReady(false);
            if (_serviceType =3D=3D Sys.Data.ServiceType.DataService) {
                Sys.Net.ServiceMethod.invoke(_serviceURL, "SaveData", =
null,
                    {changeList: changes, parameters: _parameters, =
loadMethod: _loadMethod},
                    Function.createDelegate(this, onLoadComplete),
                    Function.createDelegate(this, ready));
            }
            else {
throw Error.createError("Save is not supported in Handler mode.");
            }
        }
    }
}
Sys.Data.DataSource.registerSealedClass('Sys.Data.DataSource', =
Sys.Component);
Sys.TypeDescriptor.addType('script', 'dataSource', Sys.Data.DataSource);
Type.createEnum('Sys.Data.ServiceType', 'DataService', 0, 'Handler', 1);
Type.createEnum('Sys.Data.SortDirection', 'Ascending', 0, 'Descending', =
1);
Sys.Data.XMLDataSource =3D function() {
    Sys.Data.XMLDataSource.initializeBase(this, [true]);

    var _document =3D null;
    var _initialDocument =3D null;
   =20
    var _data =3D null;
    var _xpath =3D '';
   =20
    var _serviceURL;
    var _parameters =3D { };
    var _isReady =3D false;
    var _autoLoad =3D false;
   =20
    this.get_autoLoad =3D function() {
        return _autoLoad;
    }
    this.set_autoLoad =3D function(value) {
        _autoLoad =3D value;
    }
   =20
    this.get_document =3D function() {
        return _document;
    }
   =20
    this.get_data =3D function() {
        return _data;
    }
   =20
    this.get_initialDocument =3D function() {
        return _initialDocument;
    }
    this.set_initialDocument =3D function(value) {
        if (!_document) {
            var document =3D new XMLDOM(value.trim());
            if (this.get_isInitialized()) {
                this._setDocument(document);
            }
            else {
                _initialDocument =3D document;
            }
        }
    }
   =20
    this.get_isReady =3D function() {
        return _isReady;
    }
   =20
    this.get_parameters =3D function() {
        return _parameters;
    }
   =20
    this.get_serviceURL =3D function() {
        return _serviceURL;
    }
    this.set_serviceURL =3D function(value) {
        _serviceURL =3D value;
    }
   =20
    this.get_xpath =3D function() {
        return _xpath;
    }
    this.set_xpath =3D function(value) {
        if (_xpath !=3D value) {
            _xpath =3D value;
           =20
            if (_document) {
                this._updateData();
            }
        }
    }
   =20
    this.documentAvailable =3D this.createEvent();
   =20
    this.dispose =3D function() {
        _document =3D null;
        _initialDocument =3D null;
        _data =3D null;
       =20
        Sys.Data.XMLDataSource.callBaseMethod(this, 'dispose');
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.Data.DataSource.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('autoLoad', Boolean);
        td.addProperty('data', Object, true);
        td.addProperty('document', Object, true);
        td.addProperty('initialDocument', String);
        td.addProperty('isReady', Boolean, true);
        td.addProperty('parameters', Object, true);
        td.addProperty('serviceURL', String);
        td.addProperty('xpath', String);
        td.addEvent('documentAvailable', true);
        td.addMethod('load');
       =20
        return td;
    }
   =20
    this.initialize =3D function() {
        Sys.Data.XMLDataSource.callBaseMethod(this, 'initialize');
       =20
        if (_autoLoad) {
            this.load();
        }
    }
   =20
    this.load =3D function() {
        if (_initialDocument) {
            var document =3D _initialDocument;
            _initialDocument =3D null;
           =20
            this._setDocument(document);
            this._updateReady(true);
        }
        else {
            this._invokeService();
        }
    }
   =20
    this._invokeService =3D function() {
        var url =3D Sys.Net.WebRequest.createUrl(_serviceURL, =
_parameters);
        var request =3D new Sys.Net.WebRequest();
        request.set_url(url);
        request.completed.add(Function.createDelegate(this, =
this._serviceCompleted));
        request.timeout.add(Function.createDelegate(this, =
this._serviceTimeout));
       =20
        request.invoke();
        this._updateReady(false);
    }
   =20
    this._serviceCompleted =3D function(sender, eventArgs) {
        if (sender.get_statusCode() =3D=3D 200) {
            this._setDocument(sender.get_xml());
        }
   =20
        this._updateReady(true);
    }
   =20
    this._serviceTimeout =3D function(sender, eventArgs) {
        this._updateReady(true);
    }
   =20
    this._setDocument =3D function(document) {
        _document =3D document;
        this._updateData();
        this.raisePropertyChanged('document');
        this.documentAvailable.invoke(this, Sys.EventArgs.Empty);
    }
   =20
    this._updateData =3D function() {
        var xpath =3D _xpath;
        if (!xpath || !xpath.length) {
            xpath =3D '*/*';
        }
       =20
        var nodes =3D _document.selectNodes(xpath);

                                var data =3D [];
        for (var i =3D 0; i < nodes.length; i++) {
            var node =3D nodes[i];
           =20
            if (!node || (node.nodeType !=3D 1)) {
                continue;
            }
            data.add(node);
        }
       =20
        _data =3D data;
        this.raisePropertyChanged('data');
    }
   =20
    this._updateReady =3D function(ready) {
        _isReady =3D ready;
        this.raisePropertyChanged('isReady');
    }
}
Sys.Data.XMLDataSource.registerSealedClass('Sys.Data.XMLDataSource', =
Sys.Component);
Sys.TypeDescriptor.addType('script', 'xmlDataSource', =
Sys.Data.XMLDataSource);

Type.registerNamespace('Sys.Services');

Sys.Services._AuthenticationService =3D function() {
    this.path =3D =
"ScriptServices/Microsoft/Web/Services/Standard/AuthenticationWebService.=
asmx";
   =20
    var cm=3DSys.Net.ServiceMethod.createProxyMethod;
    cm(this, "login", "userName", "password", "createPersistentCookie");
    cm(this, "logout");
    cm(this, "validateUser", "userName", "password");
    }
Sys.Services._AuthenticationService.registerSealedClass('Sys.Services._Au=
thenticationService');

Sys.Services.AuthenticationService =3D new =
Sys.Services._AuthenticationService();

Sys._Profile =3D function() {
    Sys._Profile.initializeBase(this);

    var _properties =3D { };
    var _propertyNames;
    var _isDirty;
    var _autoSave;
   =20
    Sys.Runtime.registerDisposableObject(this);
   =20
    this.get_autoSave =3D function() {
        return _autoSave;
    }
    this.set_autoSave =3D function(value) {
        _autoSave =3D value;
    }

    this.get_initialData =3D function() {
        return null;
    }
    this.set_initialData =3D function(value) {
        if (value && value.length) {
            =
this._updateProperties(Sys.Serialization.JSON.deserialize(value));
        }
    }
   =20
    this.get_isDirty =3D function() {
        return _isDirty;
    }
   =20
    this.get_propertyNames =3D function() {
        return _propertyNames;
    }
    this.set_propertyNames =3D function(value) {
        _propertyNames =3D value;
    }
   =20
    this.loaded =3D new Type.Event(null);

    this.propertyChanged =3D new Type.Event(null);
   =20
    this.saved =3D new Type.Event(null);
   =20
    this.dispose =3D function() {
        this.propertyChanged.dispose();
        this.loaded.dispose();
        this.saved.dispose();

        Sys.Runtime.unregisterDisposableObject(this);
    }

    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();

        td.addProperty('autoSave', Boolean);
        td.addProperty('initialData', String);
        td.addProperty('isDirty', Boolean,  true);
        td.addProperty('propertyNames', Array);
        td.addMethod('load');
        td.addMethod('save');
        td.addEvent('loaded',  false);
        td.addEvent('saved',  false);
       =20
        return td;
    }
   =20
    this.getProperty =3D function(name, key) {
        if (_properties) {
            return _properties[name];
        }
        return null;
    }
   =20
    this.invokeMethod =3D function(methodName, parameters) {
    }
   =20
    this.load =3D function() {
        Sys.Net.ServiceMethod.invoke(Sys._Profile.WebServicePath, =
"GetProfile", null,
                                                { properties: =
_propertyNames },
                                                =
Function.createDelegate(this, this._onRequestComplete), null, null, =
null,
                                                 true);
    }
   =20
    this.save =3D function() {
        Sys.Net.ServiceMethod.invoke(Sys._Profile.WebServicePath, =
"SetProfile", null,
                                                { values: _properties },
                                                =
Function.createDelegate(this, this._onRequestComplete), null, null, =
null,
                                                 false);
    }
   =20
    this._saveIfDirty =3D function() {
        if (_isDirty) {
            this.save();
        }
    }
   =20
    this.setProperty =3D function(name, value, key) {
        if (!_properties) {
            this._updateProperties({ });
        }
        _properties[name] =3D value;
        this.propertyChanged.invoke(this, new =
Sys.PropertyChangedEventArgs(name));
       =20
        if (!_isDirty) {
            _isDirty =3D true;
            this.propertyChanged.invoke(this, new =
Sys.PropertyChangedEventArgs('isDirty'));
        }
       =20
        if (_autoSave) {
            window.setTimeout(Function.createDelegate(this, =
this._saveIfDirty), 0);
        }
    }

    this._onRequestComplete =3D function(result, response, userContext) =
{
        if (userContext) {
            this._updateProperties(result);
            _isDirty =3D false;
            this.propertyChanged.invoke(this, new =
Sys.PropertyChangedEventArgs(null));

            this.loaded.invoke(this, null);
        }
        else {
            _isDirty =3D false;
            this.propertyChanged.invoke(this, new =
Sys.PropertyChangedEventArgs('isDirty'));

            this.saved.invoke(this, null);
        }
    }
   =20
    this._updateProperties =3D function(properties) {
        _properties =3D properties;
        this.properties =3D properties;
    }
}
Sys._Profile.WebServicePath =3D =
'ScriptServices/Microsoft/Web/Services/Standard/ProfileWebService.asmx';

Sys._Profile.registerSealedClass('Sys._Profile', null, Sys.IDisposable, =
Sys.ITypeDescriptorProvider, Sys.ICustomTypeDescriptor, =
Sys.INotifyPropertyChanged);
Sys.TypeDescriptor.addType('script', 'profile', Sys._Profile);

Sys._Profile.parseFromMarkup =3D function(type, node, markupContext) {
    if (!markupContext.get_isGlobal()) {
        return null;
    }

    var id;
    var idAttribute =3D node.attributes.getNamedItem('id');
    if (idAttribute) {
        id =3D idAttribute.nodeValue;
        node.attributes.removeNamedItem('id')
    }
   =20
    Sys.MarkupParser.initializeObject(Sys.Profile, node, markupContext);
    if (!Sys.Profile.properties) {
        Sys.Profile._updateProperties({ });
        Sys.Profile.load();
    }

    if (id && id.length) {
        markupContext.addObject(id, Sys.Profile);
        node.attributes.setNamedItem(idAttribute);
    }
    return Sys.Profile;
}

Sys.Profile =3D new Sys._Profile();



Type.registerNamespace('Sys.UI');


function $(elementID) {
    return document.getElementById(elementID);
}

Sys.UI._escapeCData =3D function(value) {
    return value.replace(/\\/g, '\\\\').replace(/]/g, '\\]');
}

Sys.UI._unescapeCData =3D function(cDataValue) {
    return cDataValue.replace(/\\\\/g, '\\').replace(/\\]/g, ']');
}


Sys.Attributes.defineAttribute('ValueProperty');
Type.createEnum('Sys.UI.VisibilityMode', 'Hide', 0, 'Collapse', 1);

Sys.UI.Control =3D function(associatedElement) {
    Sys.UI.Control.initializeBase(this, [true]);

    this.element =3D associatedElement;
    this.element.control =3D this;
   =20
    var _oldDisplayMode =3D this.element.style.displayMode;
    if (!_oldDisplayMode || (_oldDisplayMode =3D=3D 'none')) {
        _oldDisplayMode =3D '';
    }

    var _visibilityMode =3D Sys.UI.VisibilityMode.Hide;
   =20
    var _propertyChangeHandler;
    var _behaviors;
    var _parent;

    this.get_accessKey =3D function() {
        return this.element.accessKey;
    }
    this.set_accessKey =3D function(value) {
        if (this.element.accessKey !=3D value) {
            this.element.accessKey =3D value;
            this.raisePropertyChanged('accessKey');
        }
    }
   =20
    this.get_associatedElement =3D function() {
        if (!_propertyChangeHandler) {
            _propertyChangeHandler =3D Function.createDelegate(this, =
this._onPropertyChange);
            this.element.attachEvent('onpropertychange', =
_propertyChangeHandler);
        }
        return this.element;
    }
   =20
    this.get_behaviors =3D function() {
        if (!_behaviors) {
            _behaviors =3D Sys.Component.createCollection(this);
        }
        return _behaviors;
    }

    this.get_cssClass =3D function() {
        return this.element.className;
    }
    this.set_cssClass =3D function(value) {
        if (this.element.className !=3D value) {
            this.element.className =3D value;
            this.raisePropertyChanged('cssClass');
        }
    }

    this.get_dataContext =3D function() {
        var dc =3D Sys.UI.Control.callBaseMethod(this, =
'get_dataContext');
        if (!dc) {
            var parent =3D this.get_parent();
            if (parent) {
                dc =3D parent.get_dataContext();
            }
        }
       =20
        return dc;
    }
    Sys.UI.Control.registerBaseMethod(this, 'get_dataContext');
   =20
    this.get_enabled =3D function() {
        return !this.element.disabled;
    }
    this.set_enabled =3D function(value) {
        if (value !=3D this.get_enabled()) {
            this.element.disabled =3D !value;
            this.raisePropertyChanged('enabled');
        }
    }
   =20
    this.get_parent =3D function() {
        if (_parent) {
            return _parent;
        }
        else {
            var parentElement =3D this.element.parentNode;
            while (parentElement) {
                if (parentElement.control) {
                    return parentElement.control;
                }
                parentElement =3D parentElement.parentNode;
            }
            return null;
        }
    }
    this.set_parent =3D function(control) {
        _parent =3D control;
    }
   =20
    this.get_style =3D function() {
        if (!_propertyChangeHandler) {
            _propertyChangeHandler =3D Function.createDelegate(this, =
this._onPropertyChange);
            this.element.attachEvent('onpropertychange', =
_propertyChangeHandler);
        }
        return this.element.style;
    }

    this.get_tabIndex =3D function() {
        return this.element.tabIndex;
    }
    this.set_tabIndex =3D function(value) {
        var old =3D this.element.tabIndex;
        this.element.tabIndex =3D value;
        if (old !=3D value) {
            this.raisePropertyChanged('tabIndex');
        }
    }
   =20
    this.get_visibilityMode =3D function() {
        return _visibilityMode;
    }
    this.set_visibilityMode =3D function(value) {
        if (_visibilityMode !=3D value) {
            _visibilityMode =3D value;
            if (this.get_visible() =3D=3D false) {
                if (_visibilityMode =3D=3D Sys.UI.VisibilityMode.Hide) {
                    this.element.style.display =3D _oldDisplayMode;
                }
                else {
                    this.element.style.display =3D 'none';
                }
            }

            this.raisePropertyChanged('visibilityMode');
        }
    }
   =20
    this.get_visible =3D function() {
        return (this.element.style.visibility !=3D 'hidden');
    }
    this.set_visible =3D function(value) {
        if (value !=3D this.get_visible()) {
            this.element.style.visibility =3D value ? 'visible' : =
'hidden';
            if (value || (_visibilityMode =3D=3D =
Sys.UI.VisibilityMode.Hide)) {
                this.element.style.display =3D _oldDisplayMode;
            }
            else {
                this.element.style.display =3D 'none';
            }

            this.raisePropertyChanged('visible');
        }
    }
   =20
    this.validation =3D this.createEvent();
   =20
    this.addCssClass =3D function(className) {
        if (!this.containsCssClass(className)) {
            this.set_cssClass(this.get_cssClass() + ' ' + className);
        }
    }
   =20
    this.containsCssClass =3D function(className) {
        return Sys.UI.Control.containsCssClass(this.element, className);
    }
   =20
    this.dispose =3D function() {
        if (_propertyChangeHandler) {
            this.element.detachEvent('onpropertychange', =
_propertyChangeHandler);
            _propertyChangeHandler =3D null;
        }
       =20
        if (_behaviors) {
            _behaviors.dispose();
            _behaviors =3D null;
        }

        if (this.element) {
            this.element.control =3D null;
            this.element =3D null;
        }
       =20
        Sys.UI.Control.callBaseMethod(this, 'dispose');
    }
    Sys.UI.Control.registerBaseMethod(this, 'dispose');
   =20
    this.findObject =3D function(id) {
        var object;
        if (this.element.markupContext) {
            object =3D this.element.markupContext.findObject(id);
        }
        if (!object) {
            var parent =3D this.get_parent();
            if (parent) {
                object =3D parent.findObject(id);
            }
            else {
                object =3D Sys.Application.findObject(id);
            }
        }
        return object;
    }
   =20
    this.focus =3D function() {
        this.element.focus();
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Control.callBaseMethod(this, 'getDescriptor');
       =20
        td.addProperty('accessKey', String);
        td.addProperty('associatedElement', Object, true);
        td.addProperty('behaviors', Array, true);
        td.addProperty('cssClass', String);
        td.addProperty('enabled', Boolean);
        td.addProperty('parent', Object);
        td.addProperty('style', Object, true);
        td.addProperty('tabIndex', Number);
        td.addProperty('visible', Boolean);
        td.addProperty('visibilityMode', Sys.UI.VisibilityMode);
        td.addMethod('addCssClass', [ =
Sys.TypeDescriptor.createParameter('className', String) ]);
        td.addMethod('focus');
        td.addMethod('scrollIntoView');
        td.addMethod('removeCssClass', [ =
Sys.TypeDescriptor.createParameter('className', String) ]);
        td.addMethod('toggleCssClass', [ =
Sys.TypeDescriptor.createParameter('className', String) ]);
        return td;
    }
    Sys.UI.Control.registerBaseMethod(this, 'getDescriptor');

    this.onBubbleEvent =3D function(source, args) {
        return false;
    }
    Sys.UI.Control.registerBaseMethod(this, 'onBubbleEvent');
   =20
    this.raiseBubbleEvent =3D function(source, args) {
        var currentTarget =3D this.get_parent();
        while (currentTarget) {
            if (currentTarget.onBubbleEvent(source, args)) {
                return;
            }
            currentTarget =3D currentTarget.get_parent();
        }
    }
   =20
    this.removeCssClass =3D function(className) {
        Sys.UI.Control.removeCssClass(this.element, className);
    }
   =20
    this.scrollIntoView =3D function() {
        this.element.scrollIntoView();
    }
   =20
    this.toggleCssClass =3D function(className) {
        if (this.containsCssClass(className)) {
            this.removeCssClass(className);
        }
        else {
            this.addCssClass(className);
        }
    }
   =20
    this._onPropertyChange =3D function() {
        if (window.event.propertyName.startsWith('style')) {
            this.raisePropertyChanged('style');
        }
        else {
            this.raisePropertyChanged('associatedElement');
        }
    }
}
Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component);
Sys.TypeDescriptor.addType('script', 'control', Sys.UI.Control);

Sys.UI.Control.parseFromMarkup =3D function(type, node, markupContext) {
    var idAttribute =3D node.attributes.getNamedItem('id');
debug.assert(idAttribute && idAttribute.nodeValue.length, =
String.format('No associated HTML element was specified for control of =
type "{0}"', type.getName()));

    var id =3D idAttribute.nodeValue;
    var associatedElement =3D markupContext.findElement(id);
debug.assert(associatedElement, String.format('Could not find an HTML =
element with ID "{0}" for control of type "{1}"', id, type.getName()));
   =20
    var dataContextHidden =3D false;
    var dataContext =3D markupContext.get_dataContext();
    if (dataContext) {
        dataContextHidden =3D markupContext.hideDataContext();
    }

    var newControl =3D new type(associatedElement);
    var control =3D Sys.MarkupParser.initializeObject(newControl, node, =
markupContext);
   =20
    if (control) {
        var id =3D control.get_id();
debug.assert(id && id.length);
       =20
        markupContext.addObject(id, control);

        if (dataContext) {
            control.set_dataContext(dataContext);
        }
    }
    else {
        newControl.dispose();
    }
   =20
    if (dataContextHidden) {
        markupContext.restoreDataContext();
    }

    return control;
}

Sys.UI.Control.setLocation =3D function(element, position) {
    element.style.left =3D position.x + "px";
    element.style.top =3D position.y + "px";
}

Sys.UI.Control.overlaps =3D function(r1, r2) {
    var xLeft =3D (r1.x >=3D r2.x && r1.x <=3D (r2.x + r2.width));
    var xRight =3D ((r1.x + r1.width) >=3D r2.x && (r1.x + r1.width) =
<=3D r2.x + r2.width);
    var xComplete =3D ((r1.x < r2.x) && ((r1.x + r1.height) > (r2.x + =
r2.height)));
   =20
    var yLeft =3D (r1.y >=3D r2.y && r1.y <=3D (r2.y + r2.height));
    var yRight =3D ((r1.y + r1.height) >=3D r2.y && (r1.y + r1.height) =
<=3D r2.y + r2.height);
    var yComplete =3D ((r1.y < r2.y) && ((r1.y + r1.height) > (r2.y + =
r2.height)));
    if ((xLeft || xRight || xComplete) && (yLeft || yRight || =
yComplete)) {
        return true;
    }
   =20
    return false;
}

Sys.UI.Control.getLocation =3D function(element) {
    var offsetX =3D 0;
    var offsetY =3D 0;
    var parent;
   =20
    for (parent =3D element; parent; parent =3D parent.offsetParent) {
        if (parent.offsetLeft) {
            offsetX +=3D parent.offsetLeft;
        }
        if (parent.offsetTop) {
            offsetY +=3D parent.offsetTop;
        }
    }

    return { x: offsetX, y: offsetY };
}

Sys.UI.Control.getBounds =3D function(element) {
    var offset =3D Sys.UI.Control.getLocation(element);
   =20
    var width =3D element.offsetWidth;
    var height =3D element.offsetHeight;
   =20
    return { x: offset.x, y: offset.y, width: width, height: height };
}

Sys.UI.Control.removeCssClass =3D function(element, className) {
    var currentClassName =3D ' ' + element.className + ' ';
    var index =3D currentClassName.indexOf(' ' + className + ' ');
    if (index >=3D 0) {
        var newClassName =3D (currentClassName.substr(0, index) + ' ' +
            currentClassName.substring(index + className.length + 1, =
currentClassName.length)).trim();
        if (element.control) {
            element.control.set_cssClass(newClassName);
        }
        else {
            element.className =3D newClassName;
        }
    }
}

Sys.UI.Control.addCssClass =3D function(element, className) {
    if (!Sys.UI.Control.containsCssClass(element, className)) {
        if (element.control) {
            element.control.addCssClass(className);
        }
        else {
            element.className +=3D ' ' + className;
        }
    }
}

Sys.UI.Control.containsCssClass =3D function(element, className) {
    return element.className.split(' ').contains(className);
}
Sys.UI.CommandEventArgs =3D function(commandName, argument) {
    Sys.UI.CommandEventArgs.initializeBase(this, []);
   =20
    var _commandName =3D commandName;
    var _argument =3D argument;
   =20
    this.get_argument =3D function() {
        return _argument;
    }
   =20
    this.get_commandName =3D function() {
        return _commandName;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.CommandEventArgs.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('argument', String, true);
        td.addProperty('commandName', String, true);
       =20
        return td;
    }
    Sys.UI.CommandEventArgs.registerBaseMethod(this, 'getDescriptor');
}
Sys.UI.CommandEventArgs.registerClass('Sys.UI.CommandEventArgs', =
Sys.EventArgs);

Sys.UI.Behavior =3D function() {
    Sys.UI.Behavior.initializeBase(this, [false]);
   =20
    this.get_dataContext =3D function() {
        var dc =3D Sys.UI.Behavior.callBaseMethod(this, =
'get_dataContext');
        if (!dc) {
            if (this.control) {
                dc =3D this.control.get_dataContext();
            }
        }
       =20
        return dc;
    }
   =20
    this.dispose =3D function() {
        this.control =3D null;
        Sys.UI.Behavior.callBaseMethod(this, 'dispose');
    }
    Sys.UI.Behavior.registerBaseMethod(this, 'dispose');
   =20
    this.setOwner =3D function(control) {
        this.control =3D control;
    }
    Sys.UI.Behavior.registerBaseMethod(this, 'setOwner');
}
Sys.UI.Behavior.registerAbstractClass('Sys.UI.Behavior', Sys.Component);
Sys.UI.IValidationTarget =3D function() {
    this.get_isInvalid =3D Function.abstractMethod;
    this.get_validationMessage =3D Function.abstractMethod;
    this.validated =3D null;
    this.validate =3D Function.abstractMethod;
}
Sys.UI.IValidationTarget.registerInterface('Sys.UI.IValidationTarget');

Sys.UI.Validator =3D function() {
    Sys.UI.Validator.initializeBase(this);

    var _errorMessage;
    var _isInvalid =3D false;
   =20
    this.get_dataContext =3D function() {
        var dc =3D Sys.Component.callBaseMethod(this, =
'get_dataContext');
        if (!dc) {
            if (this.control) {
                dc =3D this.control.get_dataContext();
            }
        }
       =20
        return dc;
    }

    this.get_errorMessage =3D function() {
        return _errorMessage;
    }
    this.set_errorMessage =3D function(value) {
        _errorMessage =3D value;
    }
   =20
    this.get_isInvalid =3D function() {
        return _isInvalid;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Validator.callBaseMethod(this, =
'getDescriptor');

        td.addProperty('errorMessage', String);
        td.addProperty('isInvalid', Boolean, true);
        return td;
    }
    Sys.UI.Validator.registerBaseMethod(this, 'getDescriptor');
   =20
    this.dispose =3D function() {
        this.control =3D null;
        Sys.UI.Validator.callBaseMethod(this, 'dispose');
    }
    Sys.UI.Validator.registerBaseMethod(this, 'dispose');

    this.performValidation =3D function(value) {
                _isInvalid =3D !this.validate(value);
    }
   =20
    this.setOwner =3D function(control) {
        this.control =3D control;
    }

    this.validate =3D Function.abstractMethod;
}
Sys.UI.Validator.registerAbstractClass('Sys.UI.Validator', =
Sys.Component);
Sys.UI.ValidationGroup =3D function() {
    Sys.UI.ValidationGroup.initializeBase(this);

    var _associatedControls =3D [];
    var _valid =3D true;
    var _validated =3D false;
   =20
    var _validatedHandler;
   =20
    this.get_associatedControls =3D function() {
        return _associatedControls;
    }
   =20
    this.get_isValid =3D function() {
        if (!_validated) {
            this.validate();
            _validated =3D true;
        }
        return _valid;
    }

    this.dispose =3D function() {
        if (_associatedControls) {
            for (var i =3D 0; i < _associatedControls.length; i++) {
                =
_associatedControls[i].get_component().validated.remove(_validatedHandler=
);
                _associatedControls[i].dispose();
            }
            _validatedHandler =3D null;
            _associatedControls =3D null;
        }
       =20
        Sys.UI.ValidationGroup.callBaseMethod(this, 'dispose');
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.ValidationGroup.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('isValid', Boolean, true);
        td.addProperty('associatedControls', Array, true);
        return td;
    }
   =20
    this.initialize =3D function() {
        Sys.UI.ValidationGroup.callBaseMethod(this, 'initialize');

        _validatedHandler =3D Function.createDelegate(this, =
this._onControlValidated);
        for (var i =3D 0; i < _associatedControls.length; i++) {
            =
_associatedControls[i].get_component().validated.add(_validatedHandler);
        }
    }

    this.validate =3D function() {
        var valid =3D true;
       =20
        if (_associatedControls && _associatedControls.length) {
            for (var i =3D 0; i < _associatedControls.length; i++) {
                if =
(_associatedControls[i].get_component().get_isInvalid()) {
                    valid =3D false;
                    break;
                }
            }
        }
       =20
        _valid =3D valid;
    }
   =20
    this._onControlValidated =3D function(sender, eventArgs) {
        var isValid =3D _valid;
        this.validate();
       =20
        if (_valid !=3D isValid) {
            this.raisePropertyChanged('isValid');
        }
    }
}
Sys.UI.ValidationGroup.registerSealedClass('Sys.UI.ValidationGroup', =
Sys.Component);
Sys.TypeDescriptor.addType('script', 'validationGroup', =
Sys.UI.ValidationGroup);

Sys.UI.InputControl =3D function(associatedElement) {
    Sys.UI.InputControl.initializeBase(this, [associatedElement]);

    var _valuePropertyName;

    var _validators;
    var _invalid =3D false;
    var _validated =3D false;
    var _validationMessage;
   =20
    this.get_isInvalid =3D function() {
        if (!_validated) {
            this.validate(false);
            _validated =3D true;
        }
        return _invalid;
    }

    this.get_validationMessage =3D function() {
        return this.get_isInvalid() ? _validationMessage : '';
    }

    this.get_validators =3D function() {
        if (!_validators) {
            _validators =3D Sys.Component.createCollection(this);
        }
        return _validators;
    }
   =20
    this.validated =3D this.createEvent();
   =20
    this.dispose =3D function() {
        if (_validators) {
            _validators.dispose();
            _validators =3D null;
        }

        Sys.UI.InputControl.callBaseMethod(this, 'dispose');
    }
    Sys.UI.InputControl.registerBaseMethod(this, 'dispose');

    this.getDescriptor =3D function() {
        var td =3D Sys.UI.InputControl.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('isInvalid', Boolean, true);
        td.addProperty('validationMessage', String, true);
        td.addProperty('validators', Array, true);
        return td;
    }
    Sys.UI.InputControl.registerBaseMethod(this, 'getDescriptor');

    this.raisePropertyChanged =3D function(propertyName) {
        if (_validators && _validators.length) {
            if (!_valuePropertyName) {
                _valuePropertyName =3D =
Sys.TypeDescriptor.getAttribute(this, Sys.Attributes.ValueProperty);
            }

            if (_valuePropertyName =3D=3D propertyName) {
                if (!this.validate(true)) {
                    return;
                }
            }
        }

        Sys.UI.InputControl.callBaseMethod(this, 'raisePropertyChanged', =
[propertyName]);
    }
    Sys.UI.InputControl.registerBaseMethod(this, =
'raisePropertyChanged');
   =20
    this.validate =3D function(raiseEvent) {
        if (!_validators || !_validators.length) {
            return true;
        }

        if (!_valuePropertyName) {
            _valuePropertyName =3D Sys.TypeDescriptor.getAttribute(this, =
Sys.Attributes.ValueProperty);
        }
        var value =3D Sys.TypeDescriptor.getProperty(this, =
_valuePropertyName);

        var invalidValidator =3D null;
        for (var i =3D 0; i < _validators.length; i++) {
            var validator =3D _validators[i];
           =20
            validator.performValidation(value);
            if (validator.get_isInvalid()) {
                invalidValidator =3D validator;
               =20
                _validationMessage =3D =
invalidValidator.get_errorMessage();
                _invalid =3D true;
                break;
            }
        }
        if (!invalidValidator) {
            _invalid =3D false;
        }

        if (raiseEvent) {
            this.validated.invoke(this, Sys.EventArgs.Empty);
        }
        return !_invalid;
    }
}
Sys.UI.InputControl.registerAbstractClass('Sys.UI.InputControl', =
Sys.UI.Control, Sys.UI.IValidationTarget);
Sys.TemplateInstance =3D function() {
    this.instanceElement =3D null;
    this.callbackResult =3D null;
}

Sys.UI.ITemplate =3D function() {
    this.createInstance =3D Function.abstractMethod;
    this.initialize =3D Function.abstractMethod;
}
Sys.UI.ITemplate.registerInterface('Sys.UI.ITemplate');
Sys.TypeDescriptor.addType('script', 'template', Sys.UI.ITemplate);

Sys.UI.ITemplate.parseFromMarkup =3D function(type, node, markupContext) =
{
    var layoutElementAttribute =3D =
node.attributes.getNamedItem('layoutElement');
debug.assert(layoutElementAttribute && =
layoutElementAttribute.nodeValue.length, 'Missing layoutElement =
attribute on template definition');
   =20
    var layoutElementID =3D layoutElementAttribute.nodeValue;
    var layoutElement =3D markupContext.findElement(layoutElementID);
debug.assert(layoutElement, String.format('Could not find the HTML =
element with ID "{0}" associated with the template', layoutElementID));
   =20
    return new Sys.UI.DeclarativeTemplate(layoutElement, node, =
markupContext);
}

Sys.UI.ITemplate.disposeInstance =3D function(container) {
    if (container.markupContext) {
        container.markupContext.dispose();
        container.markupContext =3D null;
    }
}

Sys.UI.DeclarativeTemplate =3D function(layoutElement, scriptNode, =
parentMarkupContext) {
    Sys.UI.DeclarativeTemplate.initializeBase(this);
   =20
    var _layoutElement =3D layoutElement;
    var _scriptNode =3D scriptNode;
    var _parentMarkupContext =3D parentMarkupContext;
   =20
    this.createInstance =3D function(containerElement, dataContext, =
instanceElementCreatedCallback, callbackContext) {
        var result =3D new Sys.TemplateInstance();
        result.instanceElement =3D _layoutElement.cloneNode(true);
       =20
        var documentFragment =3D document.createDocumentFragment();
        documentFragment.appendChild(result.instanceElement);
       =20
        var markupContext =3D =
Sys.MarkupContext.createLocalContext(documentFragment, =
_parentMarkupContext, dataContext);
        markupContext.open();
        Sys.MarkupParser.parseNodes(_scriptNode.childNodes, =
markupContext);

        if (instanceElementCreatedCallback) {
            result.callbackResult =3D =
instanceElementCreatedCallback(result.instanceElement, markupContext, =
callbackContext);
        }
       =20
        result.instanceElement.markupContext =3D markupContext;
        containerElement.appendChild(result.instanceElement);
        markupContext.close();
       =20
        return result;
    }
   =20
    this.dispose =3D function() {
        _layoutElement =3D null;
        _scriptNode =3D null;
        _parentMarkupContext =3D null;
    }
   =20
    this.initialize =3D function() {
        if (_layoutElement.parentNode) {
            _layoutElement.parentNode.removeChild(_layoutElement);
        }
    }
}
Sys.UI.DeclarativeTemplate.registerSealedClass('Sys.UI.DeclarativeTemplat=
e', null, Sys.UI.ITemplate, Sys.IDisposable);
Type.createEnum('Sys.UI.DialogResult', 'OK', 0, 'Cancel', 1);
Type.createEnum('Sys.UI.MessageBoxStyle', 'OK', 0, 'OKCancel', 1);
Sys.UI.Window =3D new function() {

    this.messageBox =3D function(text, style) {
        if (!style) {
            style =3D Sys.UI.MessageBoxStyle.OK;
        }
       =20
        var result =3D Sys.UI.DialogResult.OK;
        switch (style) {
            case Sys.UI.MessageBoxStyle.OK:
                window.alert(text);
                break;
            case Sys.UI.MessageBoxStyle.OKCancel:
                if (window.confirm(text) =3D=3D false) {
                    result =3D Sys.UI.DialogResult.Cancel;
                }
                break;
        }
       =20
        return result;
    }
   =20
    this.inputBox =3D function(promptText, defaultValue) {
        if (!defaultValue) {
            defaultValue =3D '';
        }
        return window.prompt(promptText, defaultValue);
    }
}

Type.createEnum('Sys.UI.Key',
    "Backspace", 8,
    "Tab", 9,
    "Return", 13,
    "Esc", 27,
    "Space", 32,
    "PageUp", 33,
    "PageDown", 34,
    "End", 35,
    "Home", 36,
    "Left", 37,
    "Up", 38,
    "Right", 39,
    "Down", 40,
    "WindowsDelete", 46,
    "Delete", 127
);





Sys.UI.Label =3D function(associatedElement) {
    var _htmlEncode =3D false;

    Sys.UI.Label.initializeBase(this, [associatedElement]);

    this.get_htmlEncode =3D function() {
        return _htmlEncode;
    }
    this.set_htmlEncode =3D function(value) {
        _htmlEncode =3D value;
    }

    this.get_text =3D function() {
        if (_htmlEncode) {
            return this.element.innerText;
        }
        else {
            return this.element.innerHTML;
        }
    }
    this.set_text =3D function(value) {
        if (_htmlEncode) {
            if (this.element.innerText !=3D=3D value) {
                this.element.innerText =3D value;
                this.raisePropertyChanged('text');
            }
        }
        else {
            if (this.element.innerHTML !=3D=3D value) {
                this.element.innerHTML =3D value;
                this.raisePropertyChanged('text');
            }
        }
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Label.callBaseMethod(this, 'getDescriptor');
       =20
        td.addProperty('htmlEncode', Boolean);
        td.addProperty('text', String);
        return td;
    }
    Sys.UI.Label.registerBaseMethod(this, 'getDescriptor');
}
Sys.UI.Label.registerClass('Sys.UI.Label', Sys.UI.Control);
Sys.TypeDescriptor.addType('script', 'label', Sys.UI.Label);


Sys.UI.Image =3D function(associatedElement) {
    Sys.UI.Image.initializeBase(this, [associatedElement]);
   =20
    this.get_alternateText =3D function() {
        return this.element.alt;
    }
   =20
    this.set_alternateText =3D function(value) {
        this.element.alt =3D value;
    }
   =20
    this.get_height =3D function() {
        return this.element.height;
    }
    this.set_height =3D function(value) {
        this.element.height =3D value;
    }
   =20
    this.get_imageURL =3D function() {
        return this.element.src;
    }
    this.set_imageURL =3D function(value) {
        this.element.src =3D value;
    }
   =20
    this.get_width =3D function() {
        return this.element.width;
    }
    this.set_width =3D function(value) {
        this.element.width =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Image.callBaseMethod(this, 'getDescriptor');
       =20
        td.addProperty('alternateText', String);
        td.addProperty('height', Number);
        td.addProperty('imageURL', String);
        td.addProperty('width', Number);
        return td;
    }
    Sys.UI.Image.registerBaseMethod(this, 'getDescriptor');
}
Sys.UI.Image.registerClass('Sys.UI.Image', Sys.UI.Control);
Sys.TypeDescriptor.addType('script', 'image', Sys.UI.Image);


Sys.UI.HyperLink =3D function(associatedElement) {
    Sys.UI.HyperLink.initializeBase(this, [associatedElement]);
   =20
    var _clickHandler;

    this.get_navigateURL =3D function() {
        return this.element.href;
    }
    this.set_navigateURL =3D function(value) {
        this.element.href =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.HyperLink.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('navigateURL', String);
        td.addEvent('click', true);
        return td;
    }
    Sys.UI.HyperLink.registerBaseMethod(this, 'getDescriptor');
   =20
    this.click =3D this.createEvent();

    this.dispose =3D function() {
        if (_clickHandler) {
            this.element.detachEvent('onclick', _clickHandler);
            _clickHandler =3D null;
        }
       =20
        Sys.UI.HyperLink.callBaseMethod(this, 'dispose');
    }
   =20
    this.initialize =3D function() {
        Sys.UI.HyperLink.callBaseMethod(this, 'initialize');
       =20
        _clickHandler =3D Function.createDelegate(this, this._onClick);
        this.element.attachEvent('onclick', _clickHandler);
    }
   =20
    this._onClick =3D function() {
        this.click.invoke(this, Sys.EventArgs.Empty);
    }
}
Sys.UI.HyperLink.registerClass('Sys.UI.HyperLink', Sys.UI.Label);
Sys.TypeDescriptor.addType('script', 'hyperLink', Sys.UI.HyperLink);


Sys.UI.Button =3D function(associatedElement) {
    Sys.UI.Button.initializeBase(this, [associatedElement]);

    var _clickHandler;
    var _command;
    var _arg;
   =20
    this.get_argument =3D function() {
        return _arg;
    }
    this.set_argument =3D function(value) {
        if (_arg !=3D value) {
            _arg =3D value;
            this.raisePropertyChanged('argument');
        }
    }
   =20
    this.get_command =3D function() {
        return _command;
    }
    this.set_command =3D function(value) {
        if (_command !=3D value) {
            _command =3D value;
            this.raisePropertyChanged('command');
        }
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Button.callBaseMethod(this, 'getDescriptor');
       =20
        td.addProperty('command', String);
        td.addProperty('argument', String);
        td.addEvent('click', true);
        return td;
    }
    Sys.UI.Button.registerBaseMethod(this, 'getDescriptor');
   =20
    this.click =3D this.createEvent();

    this.dispose =3D function() {
        if (_clickHandler) {
            this.element.detachEvent('onclick', _clickHandler);
            _clickHandler =3D null;
        }
       =20
        Sys.UI.Button.callBaseMethod(this, 'dispose');
    }
   =20
    this.initialize =3D function() {
        Sys.UI.Button.callBaseMethod(this, 'initialize');
       =20
        _clickHandler =3D Function.createDelegate(this, this._onClick);
        this.element.attachEvent('onclick', _clickHandler);
    }
   =20
    this._onClick =3D function() {
        this.click.invoke(this, Sys.EventArgs.Empty);
        if (_command) {
            this.raiseBubbleEvent(this, new =
Sys.UI.CommandEventArgs(_command, _arg));
        }
    }
}
Sys.UI.Button.registerClass('Sys.UI.Button', Sys.UI.Control);
Sys.TypeDescriptor.addType('script', 'button', Sys.UI.Button);


Sys.UI.CheckBox =3D function(associatedElement) {
    Sys.UI.CheckBox.initializeBase(this, [associatedElement]);

    var _clickHandler;
   =20
    this.get_checked =3D function() {
        return this.element.checked;
    }
    this.set_checked =3D function(value) {
        if (value !=3D this.get_checked()) {
            this.element.checked =3D value;
            this.raisePropertyChanged('checked');
        }
    }
   =20
    this.click =3D this.createEvent();
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.CheckBox.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('checked', Boolean);
        td.addEvent('click', true);
        return td;
    }
    Sys.UI.CheckBox.registerBaseMethod(this, 'getDescriptor');
   =20
    this.dispose =3D function() {
        if (_clickHandler) {
            this.element.detachEvent('onclick', _clickHandler);
            _clickHandler =3D null;
        }
       =20
        Sys.UI.CheckBox.callBaseMethod(this, 'dispose');
    }
   =20
    this.initialize =3D function() {
        Sys.UI.CheckBox.callBaseMethod(this, 'initialize');
       =20
        _clickHandler =3D Function.createDelegate(this, this._onClick);
        this.element.attachEvent('onclick', _clickHandler);
    }
   =20
    this._onClick =3D function() {
        this.raisePropertyChanged('checked');
        this.click.invoke(this, Sys.EventArgs.Empty);
    }
}
Sys.UI.CheckBox.registerClass('Sys.UI.CheckBox', Sys.UI.Control);
Sys.TypeDescriptor.addType('script', 'checkBox', Sys.UI.CheckBox);


Sys.UI.Select =3D function(associatedElement) {
    Sys.UI.Select.initializeBase(this, [associatedElement]);

    var _selectionChangedHandler;
    var _data;
    var _dataChangedDelegate;
    var _textProperty;
    var _valueProperty;
    var _firstItemText;

    this.get_data =3D function() {
        return _data;
    }
    this.set_data =3D function(data) {
        if (_data && =
Sys.INotifyCollectionChanged.isImplementedBy(_data)) {
            _data.collectionChanged.remove(_dataChangedDelegate);
        }
        _data =3D data;
        if (_data) {
            if (!Sys.Data.DataTable.isInstanceOfType(_data)) {
                _data =3D new Sys.Data.DataTable([], _data);
            }
            _data.collectionChanged.add(_dataChangedDelegate);
        }
        dataBind.call(this);
        this.raisePropertyChanged('data');
    }
   =20
    this.get_firstItemText =3D function() {
        return _firstItemText;
    }
    this.set_firstItemText =3D function(value) {
        if (_firstItemText !=3D value) {
            _firstItemText =3D value;
            this.raisePropertyChanged('firstItemText');
            dataBind.call(this);
        }
    }
   =20
    this.get_selectedValue =3D function() {
        return this.element.value;
    }
    this.set_selectedValue =3D function(value) {
        this.element.value =3D value;
    }
   =20
    this.get_textProperty =3D function() {
        return _textProperty;
    }
    this.set_textProperty =3D function(name) {
        _textProperty =3D name;
        this.raisePropertyChanged('textProperty');
    }
   =20
    this.get_valueProperty =3D function() {
        return _valueProperty;
    }
    this.set_valueProperty =3D function(name) {
        _valueProperty =3D name;
        this.raisePropertyChanged('valueProperty');
   }
   =20
    this.selectionChanged =3D this.createEvent();

    function dataBind() {
        var options =3D this.element.options;
        var selectedValues =3D [];
        var i;
        for (i =3D options.length - 1; i >=3D 0; i--) {
            if (options[i].selected) {
                selectedValues.add(options[i].value);
            }
            options[i] =3D null;
        }
        var option;
        if (_firstItemText && (_firstItemText.length !=3D 0)) {
            option =3D new Option(_firstItemText, "");
            options[this.element.length] =3D option;
        }
        if (_data) {
            var length =3D _data.get_length();
            for (i =3D 0; i < length; i++) {
                var item =3D _data.getItem(i);
                option =3D new =
Option(Sys.TypeDescriptor.getProperty(item, _textProperty),
                    Sys.TypeDescriptor.getProperty(item, =
_valueProperty));
                option.selected =3D =
selectedValues.contains(option.value);
                options[this.element.length] =3D option;
            }
        }
    }
    _dataChangedDelegate =3D Function.createDelegate(this, dataBind);

    this.dispose =3D function() {
        if (_selectionChangedHandler) {
            this.element.detachEvent('onchange', =
_selectionChangedHandler);
            _selectionChangedHandler =3D null;
        }
       =20
        Sys.UI.Select.callBaseMethod(this, 'dispose');
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Select.callBaseMethod(this, 'getDescriptor');
       =20
        td.addProperty("data", Sys.Data.DataTable);
        td.addProperty('firstItemText', String);
        td.addProperty('selectedValue', String);
        td.addProperty('textProperty', String);
        td.addProperty('valueProperty', String);
        td.addEvent('selectionChanged', true);
        return td;
    }
    Sys.UI.Select.registerBaseMethod(this, 'getDescriptor');
   =20
    this.initialize =3D function() {
        Sys.UI.Select.callBaseMethod(this, 'initialize');

        _selectionChangedHandler =3D Function.createDelegate(this, =
this._onSelectionChanged);
        this.element.attachEvent('onchange', _selectionChangedHandler);
    }

    this._onSelectionChanged =3D function() {
        this.raisePropertyChanged('selectedValue');
        this.selectionChanged.invoke(this, Sys.EventArgs.Empty);
    }
}
Sys.UI.Select.registerClass('Sys.UI.Select', Sys.UI.Control);
Sys.TypeDescriptor.addType('script', 'select', Sys.UI.Select);


Sys.UI.TextBox =3D function(associatedElement) {
    Sys.UI.TextBox.initializeBase(this, [associatedElement]);
   =20
    var _text;
   =20
    var _changeHandler;
    var _keyPressHandler;
   =20
    this.get_text =3D function() {
        return this.element.value;
    }
    this.set_text =3D function(value) {
        if (this.element.value !=3D value) {
            this.element.value =3D value;
            this.raisePropertyChanged('text');
        }
    }

    this.dispose =3D function() {
        if (_changeHandler) {
            this.element.detachEvent('onchange', _changeHandler);
            _changeHandler =3D null;
        }
        if (_keyPressHandler) {
            this.element.detachEvent('onkeypress', _keyPressHandler);
            _keyPressHandler =3D null;
        }
       =20
        Sys.UI.TextBox.callBaseMethod(this, 'dispose');
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.UI.TextBox.callBaseMethod(this, 'getDescriptor');
       =20
        td.addProperty('text', String);
        td.addAttribute(Sys.Attributes.ValueProperty, 'text');
        return td;
    }
    Sys.UI.TextBox.registerBaseMethod(this, 'getDescriptor');
   =20
    this.initialize =3D function() {
        Sys.UI.TextBox.callBaseMethod(this, 'initialize');
       =20
        _text =3D this.element.value;

        _changeHandler =3D Function.createDelegate(this, =
this._onChanged);
        this.element.attachEvent('onchange', _changeHandler);
       =20
        _keyPressHandler =3D Function.createDelegate(this, =
this._onKeyPress);
        this.element.attachEvent('onkeypress', _keyPressHandler);
    }
   =20
    this._onChanged =3D function() {
        if (this.element.value !=3D _text) {
            _text =3D this.element.value;
            this.raisePropertyChanged('text');
        }
    }
   =20
    this._onKeyPress =3D function() {
        var e =3D window.event;
        var key =3D e.keyCode;
       =20
        if (key =3D=3D 13) {
            if (this.element.value !=3D _text) {
                _text =3D this.element.value;
                this.raisePropertyChanged('text');
            }
        }
    }
}
Sys.UI.TextBox.registerClass('Sys.UI.TextBox', Sys.UI.InputControl);
Sys.TypeDescriptor.addType('script', 'textBox', Sys.UI.TextBox);


Sys.UI.PopupBehavior =3D function() {
    Sys.UI.PopupBehavior.initializeBase(this);
   =20
    var _x =3D 0;
    var _y =3D 0;
    var _positioningMode =3D Sys.UI.PositioningMode.Absolute;
    var _parentElement;
   =20
    var _moveHandler;
   =20
    this.get_parentElement =3D function() {
        return _parentElement;
    }
    this.set_parentElement =3D function(element) {
        _parentElement =3D element;
        this.raisePropertyChanged('parentElement');
    }
   =20
    this.get_positioningMode =3D function() {
        return _positioningMode;
    }
    this.set_positioningMode =3D function(mode) {
        _positioningMode =3D mode;
        this.raisePropertyChanged('positioningMode');
    }
   =20
    this.get_x =3D function() {
        return _x;
    }
    this.set_x =3D function(x) {
        _x =3D x;
        if (this.control && this.control.get_visible()) {
            this.show();
        }
        this.raisePropertyChanged('x');
    }
   =20
    this.get_y =3D function() {
        return _y;
    }
    this.set_y =3D function(y) {
        _y =3D y;
        if (this.control && this.control.get_visible()) {
            this.show();
        }
        this.raisePropertyChanged('y');
    }
   =20
    this.hide =3D function() {
        this.control.set_visible(false);
        var elt =3D this.control.element;
        if (elt.originalWidth) {
            elt.style.width =3D elt.originalWidth + "px";
            elt.originalWidth =3D null;
        }
        if (window.navigator && window.navigator.appName =3D=3D =
"Microsoft Internet Explorer" && !window.opera) {
            var childFrame =3D elt._hideWindowedElementsIFrame;
            if (childFrame) {
                childFrame.style.display =3D "none";
            }
        }
    }
   =20
    this.show =3D function() {
        this.control.set_visible(true);
        var elt =3D this.control.element;
        var offsetParent =3D elt.offsetParent;
        if (!offsetParent) offsetParent =3D document.documentElement;
        var offsetParentLocation =3D =
Sys.UI.Control.getLocation(offsetParent);
        var parent =3D _parentElement ? _parentElement : offsetParent;
        var parentBounds =3D Sys.UI.Control.getBounds(parent);
        var diff =3D {x: parentBounds.x - offsetParentLocation.x, =
y:parentBounds.y - offsetParentLocation.y};
        var width =3D elt.offsetWidth - (elt.clientLeft ? elt.clientLeft =
* 2 : 0);
        var height =3D elt.offsetHeight - (elt.clientTop ? elt.clientTop =
* 2 : 0);
        var position;
        switch (_positioningMode) {
            case Sys.UI.PositioningMode.Center:
                position =3D {
                    x: Math.round(parentBounds.width / 2 - width / 2),
                    y: Math.round(parentBounds.height / 2 - height / 2)
                };
                break;
            case Sys.UI.PositioningMode.BottomLeft:
                position =3D {
                    x: 0,
                    y: parentBounds.height
                };
                break;
            case Sys.UI.PositioningMode.BottomRight:
                position =3D {
                    x: parentBounds.width - width,
                    y: parentBounds.height
                };
                break;
            case Sys.UI.PositioningMode.TopLeft:
                position =3D {
                    x: 0,
                    y: -elt.offsetHeight
                };
                break;
            case Sys.UI.PositioningMode.TopRight:
                position =3D {
                    x: parentBounds.width - width,
                    y: -elt.offsetHeight
                };
                break;
            default:
                position =3D {x: 0, y: 0};
        }
        position.x +=3D _x + diff.x;
        position.y +=3D _y + diff.y;
        Sys.UI.Control.setLocation(elt, position);
        elt.style.width =3D width + "px";
        var newPosition =3D Sys.UI.Control.getBounds(elt);
        var documentWidth =3D self.innerWidth ? self.innerWidth : =
document.documentElement.clientWidth;
                if (!documentWidth) {
            documentWidth =3D document.body.clientWidth;
        }
        if (newPosition.x + newPosition.width > documentWidth - 5) {
            position.x -=3D newPosition.x + newPosition.width - =
documentWidth + 5;
        }
        if (newPosition.x < 0) {
            position.x -=3D newPosition.x;
        }
        if (newPosition.y < 0) {
            position.y -=3D newPosition.y;
        }
        Sys.UI.Control.setLocation(elt, position);
                if ((Sys.Runtime.get_hostType() =3D=3D =
Sys.HostType.InternetExplorer) && !window.opera) {
            var childFrame =3D elt._hideWindowedElementsIFrame;
            if (!childFrame) {
                childFrame =3D document.createElement("iframe");
                                childFrame.src =3D "about:blank";
                childFrame.style.position =3D "absolute";
                childFrame.style.display =3D "none";
                childFrame.scrolling =3D "no";
                childFrame.frameBorder =3D "0";
                childFrame.style.filter =3D =
"progid:DXImageTransform.Microsoft.Alpha(style=3D0,opacity=3D0)";
                elt.parentNode.insertBefore(childFrame, elt);
                elt._hideWindowedElementsIFrame =3D childFrame;
                _moveHandler =3D Function.createDelegate(this, =
moveHandler);
                elt.attachEvent('onmove', _moveHandler);
            }
            childFrame.style.top =3D elt.style.top;
            childFrame.style.left =3D elt.style.left;
            childFrame.style.width =3D elt.offsetWidth + "px";
            childFrame.style.height =3D elt.offsetHeight + "px";
            childFrame.style.display =3D elt.style.display;
            if (elt.currentStyle && elt.currentStyle.zIndex) {
                childFrame.style.zIndex =3D elt.currentStyle.zIndex;
            }
            else if (elt.style.zIndex) {
                childFrame.style.zIndex =3D elt.style.zIndex;
            }
        }
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.PopupBehavior.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('parentElement', Object, false, =
Sys.Attributes.Element, true);
        td.addProperty('positioningMode', Sys.UI.PositioningMode);
        td.addProperty('x', Number);
        td.addProperty('y', Number);
        td.addMethod('show');
        td.addMethod('hide');
        return td;
    }
    Sys.UI.PopupBehavior.registerBaseMethod(this, 'getDescriptor');
   =20
    this.initialize =3D function() {
        Sys.UI.PopupBehavior.callBaseMethod(this, 'initialize');
        this.hide();
        this.control.element.style.position =3D "absolute";
    }
    Sys.UI.PopupBehavior.registerBaseMethod(this, 'initialize');
   =20
    this.dispose =3D function() {
        if (_moveHandler && this.control && this.control.element) {
            this.hide();
            this.control.element.detachEvent('onmove', _moveHandler);
            _moveHandler =3D null;
        }
        _parentElement =3D null;
        Sys.UI.PopupBehavior.callBaseMethod(this, 'dispose');
    }
    Sys.UI.PopupBehavior.registerBaseMethod(this, 'dispose');
   =20
    function moveHandler() {
        var elt =3D this.control.element;
        if (elt._hideWindowedElementsIFrame) {
            elt.parentNode.insertBefore(elt._hideWindowedElementsIFrame, =
elt);
            elt._hideWindowedElementsIFrame.style.top =3D elt.style.top;
            elt._hideWindowedElementsIFrame.style.left =3D =
elt.style.left;
        }
    }
}
Sys.UI.PopupBehavior.registerClass('Sys.UI.PopupBehavior', =
Sys.UI.Behavior);
Sys.TypeDescriptor.addType('script', 'popupBehavior', =
Sys.UI.PopupBehavior);
Type.createEnum('Sys.UI.PositioningMode', 'Absolute', 0, 'Center', 1, =
'BottomLeft', 2, 'BottomRight', 3, 'TopLeft', 4, 'TopRight', 5);

Sys.UI.ClickBehavior =3D function() {
    Sys.UI.ClickBehavior.initializeBase(this);
   =20
    var _clickHandler;
   =20
    this.click =3D this.createEvent();
   =20
    this.dispose =3D function() {
        this.control.element.detachEvent('onclick', _clickHandler);
        Sys.UI.ClickBehavior.callBaseMethod(this, 'dispose');
    }

    this.initialize =3D function() {
        Sys.UI.ClickBehavior.callBaseMethod(this, 'initialize');

        _clickHandler =3D Function.createDelegate(this, clickHandler);
        this.control.element.attachEvent('onclick', _clickHandler);
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.ClickBehavior.callBaseMethod(this, =
'getDescriptor');
        td.addEvent('click', true);
        return td;
    }
   =20
    function clickHandler() {
        this.click.invoke(this, Sys.EventArgs.Empty);
    }
}
Sys.UI.ClickBehavior.registerSealedClass('Sys.UI.ClickBehavior', =
Sys.UI.Behavior);
Sys.TypeDescriptor.addType('script', 'clickBehavior', =
Sys.UI.ClickBehavior);

Sys.UI.HoverBehavior =3D function() {
    Sys.UI.HoverBehavior.initializeBase(this);
   =20
    var _hoverHandler;
    var _unHoverHandler;
    var _hoverElement;
    var _unhoverDelay =3D 0;
    var _hoverCount =3D 0;

    this.get_hoverElement =3D function() {
        return _hoverElement;
    }
    this.set_hoverElement =3D function(element) {
debug.assert(!this.get_isInitialized() || (_hoverElement =3D=3D =
element), "hoverElement can't be changed after initialization.");
        _hoverElement =3D element;
    }
   =20
    this.get_unhoverDelay =3D function() {
        return _unhoverDelay;
    }
    this.set_unhoverDelay =3D function(ms) {
        _unhoverDelay =3D ms;
        this.raisePropertyChanged('unhoverDelay');
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.HoverBehavior.callBaseMethod(this, =
'getDescriptor');
        td.addProperty('hoverElement', Object, false, =
Sys.Attributes.Element, true);
        td.addProperty('unhoverDelay', Number);
        td.addEvent('hover', true);
        td.addEvent('unhover', true);
        return td;
    }
   =20
    this.hover =3D this.createEvent();
    this.unhover =3D this.createEvent();
   =20
    this.dispose =3D function() {
        if (_hoverHandler) {
            this.control.element.detachEvent('onmouseover', =
_hoverHandler);
            this.control.element.detachEvent('onfocus', _hoverHandler);
            if (_hoverElement) {
                _hoverElement.detachEvent('onmouseover', _hoverHandler);
                _hoverElement.detachEvent('onfocus', _hoverHandler);
            }
            _hoverHandler =3D null;
        }
        if (_unHoverHandler) {
            this.control.element.detachEvent('onmouseout', =
_unHoverHandler);
            this.control.element.detachEvent('onblur', _unHoverHandler);
            if (_hoverElement) {
                _hoverElement.detachEvent('onmouseout', =
_unHoverHandler);
                _hoverElement.detachEvent('onblur', _unHoverHandler);
            }
            _unHoverHandler =3D null;
        }
       =20
        Sys.UI.HoverBehavior.callBaseMethod(this, 'dispose');
    }

    this.initialize =3D function() {
        Sys.UI.HoverBehavior.callBaseMethod(this, 'initialize');

        _hoverHandler =3D Function.createDelegate(this, hoverHandler);
        this.control.element.attachEvent('onmouseover', _hoverHandler);
        this.control.element.attachEvent('onfocus', _hoverHandler);

        _unHoverHandler =3D Function.createDelegate(this, _unhoverDelay =
? delayedUnhoverHandler : unHoverHandler);
        this.control.element.attachEvent('onmouseout', _unHoverHandler);
        this.control.element.attachEvent('onblur', _unHoverHandler);
       =20
        if (_hoverElement) {
            _hoverElement.attachEvent('onmouseover', _hoverHandler);
            _hoverElement.attachEvent('onfocus', _hoverHandler);
            _hoverElement.attachEvent('onmouseout', _unHoverHandler);
            _hoverElement.attachEvent('onblur', _unHoverHandler);
        }
    }
   =20
    function delayedUnhoverHandler() {
        window.setTimeout(Function.createDelegate(this, unHoverHandler), =
_unhoverDelay);
    }
   =20
    function hoverHandler() {
        _hoverCount++;
        this.hover.invoke(this, Sys.EventArgs.Empty);
    }
   =20
    function unHoverHandler() {
        _hoverCount--;
        if (_hoverCount =3D=3D 0) {
            this.unhover.invoke(this, Sys.EventArgs.Empty);
        }
    }
}
Sys.UI.HoverBehavior.registerSealedClass('Sys.UI.HoverBehavior', =
Sys.UI.Behavior);
Sys.TypeDescriptor.addType('script', 'hoverBehavior', =
Sys.UI.HoverBehavior);

Sys.UI.AutoCompleteBehavior =3D function() {
    Sys.UI.AutoCompleteBehavior.initializeBase(this);
   =20
    var _appURL;
    var _serviceURL;
    var _serviceMethod;
    var _minimumPrefixLength =3D 3;
    var _completionSetCount =3D 10;
    var _completionInterval =3D 1000;
    var _completionListElement;
    var _popupBehavior;
   =20
    var _timer;
    var _cache;
    var _currentPrefix;
    var _selectIndex;
   =20
    var _focusHandler;
    var _blurHandler;
    var _keyDownHandler;
    var _mouseDownHandler;
    var _mouseUpHandler;
    var _mouseOverHandler;
    var _tickHandler;
   =20
    this.get_appURL =3D function() {
        return _appURL;
    }
    this.set_appURL =3D function(value) {
        _appURL =3D value;
    }

    this.get_completionInterval =3D function() {
        return _completionInterval;
    }
    this.set_completionInterval =3D function(value) {
        _completionInterval =3D value;
    }
   =20
    this.get_completionList =3D function() {
        return _completionListElement;
    }
    this.set_completionList =3D function(value) {
        _completionListElement =3D value;
    }
   =20
    this.get_completionSetCount =3D function() {
        return _completionSetCount;
    }
    this.set_completionSetCount =3D function(value) {
        _completionSetCount =3D value;
    }
   =20
    this.get_minimumPrefixLength =3D function() {
        return _minimumPrefixLength;
    }
    this.set_minimumPrefixLength =3D function(value) {
        _minimumPrefixLength =3D value;
    }
   =20
    this.get_serviceMethod =3D function() {
        return _serviceMethod;
    }
    this.set_serviceMethod =3D function(value) {
        _serviceMethod =3D value;
    }
   =20
    this.get_serviceURL =3D function() {
        return _serviceURL;
    }
    this.set_serviceURL =3D function(value) {
        _serviceURL =3D value;
    }

    this.dispose =3D function() {
        if (_timer) {
            _timer.tick.remove(_tickHandler);
            _timer.dispose();
        }
       =20
        var element =3D this.control.element;
        element.detachEvent('onfocus', _focusHandler);
        element.detachEvent('onblur', _blurHandler);
        element.detachEvent('onkeydown', _keyDownHandler);
       =20
        _completionListElement.detachEvent('onmousedown', =
_mouseDownHandler);
        _completionListElement.detachEvent('onmouseup', =
_mouseUpHandler);
        _completionListElement.detachEvent('onmouseover', =
_mouseOverHandler);
       =20
        _tickHandler =3D null;
        _focusHandler =3D null;
        _blurHandler =3D null;
        _keyDownHandler =3D null;
        _mouseDownHandler =3D null;
        _mouseUpHandler =3D null;
        _mouseOverHandler =3D null;

        Sys.UI.AutoCompleteBehavior.callBaseMethod(this, 'dispose');
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.UI.AutoCompleteBehavior.callBaseMethod(this, =
'getDescriptor');
        td.addProperty('completionInterval', Number);
        td.addProperty('completionList', Object, false, =
Sys.Attributes.Element, true);
        td.addProperty('completionSetCount', Number);
        td.addProperty('minimumPrefixLength', Number);
        td.addProperty('serviceMethod', String);
        td.addProperty('serviceURL', String);
        td.addProperty('appURL', String);
        return td;
    }
   =20
    this.initialize =3D function() {
        Sys.UI.AutoCompleteBehavior.callBaseMethod(this, 'initialize');

        _tickHandler =3D Function.createDelegate(this, =
this._onTimerTick);
        _focusHandler =3D Function.createDelegate(this, =
this._onGotFocus);
        _blurHandler =3D Function.createDelegate(this, =
this._onLostFocus);
        _keyDownHandler =3D Function.createDelegate(this, =
this._onKeyDown);
        _mouseDownHandler =3D Function.createDelegate(this, =
this._onListMouseDown);
        _mouseUpHandler =3D Function.createDelegate(this, =
this._onListMouseUp);
        _mouseOverHandler =3D Function.createDelegate(this, =
this._onListMouseOver);
       =20
        _timer =3D new Sys.Timer();
        _timer.set_interval(_completionInterval);
        _timer.tick.add(_tickHandler);
       =20
        var element =3D this.control.element;
        element.autocomplete =3D "off";
        element.attachEvent('onfocus', _focusHandler);
        element.attachEvent('onblur', _blurHandler);
        element.attachEvent('onkeydown', _keyDownHandler);
       =20
        var elementBounds =3D Sys.UI.Control.getBounds(element);
       =20
        if (!_completionListElement) {
            _completionListElement =3D document.createElement('DIV');
            document.body.appendChild(_completionListElement);
        }
       =20
        var completionListStyle =3D _completionListElement.style;
        completionListStyle.visibility =3D 'hidden';
        completionListStyle.backgroundColor =3D 'window';
        completionListStyle.color =3D 'windowtext';
        completionListStyle.border =3D 'solid 1px buttonshadow';
        completionListStyle.cursor =3D 'default';
        completionListStyle.unselectable =3D 'unselectable';
        completionListStyle.overflow =3D 'hidden';
        completionListStyle.width =3D (elementBounds.width - 2) + 'px';
        _completionListElement.attachEvent('onmousedown', =
_mouseDownHandler);
        _completionListElement.attachEvent('onmouseup', =
_mouseUpHandler);
        _completionListElement.attachEvent('onmouseover', =
_mouseOverHandler);
        document.body.appendChild(_completionListElement);
        var popupControl =3D new Sys.UI.Control(_completionListElement);
        _popupBehavior =3D new Sys.UI.PopupBehavior();
        _popupBehavior.set_parentElement(element);
        =
_popupBehavior.set_positioningMode(Sys.UI.PositioningMode.BottomLeft);
        popupControl.get_behaviors().add(_popupBehavior);
        _popupBehavior.initialize();
        popupControl.initialize();
    }
   =20
    this._hideCompletionList =3D function() {
        _popupBehavior.hide();
        _completionListElement.innerHTML =3D '';
        _selectIndex =3D -1;
    }
   =20
    this._highlightItem =3D function(item) {
        var children =3D _completionListElement.childNodes;
       =20
        for (var i =3D 0; i < children.length; i++) {
            var child =3D children[i];
            if (child !=3D item) {
                child.style.backgroundColor =3D 'window';
                child.style.color =3D 'windowtext';
            }
        }
        item.style.backgroundColor =3D 'highlight';
        item.style.color =3D 'highlighttext';
    }
   =20
    this._onListMouseDown =3D function() {
        if (window.event.srcElement !=3D _completionListElement) {
            this._setText(window.event.srcElement.firstChild.nodeValue);
        }
    }
   =20
    this._onListMouseUp =3D function() {
        this.control.focus();
    }
   =20
    this._onListMouseOver =3D function() {
        var item =3D window.event.srcElement;
        _selectIndex =3D -1;
        this._highlightItem(item);
    }

    this._onGotFocus =3D function() {
        _timer.set_enabled(true);
    }
   =20
    this._onKeyDown =3D function() {
        var e =3D window.event;
        if (e.keyCode =3D=3D 27) {
            this._hideCompletionList();
            e.returnValue =3D false;
        }
        else if (e.keyCode =3D=3D Sys.UI.Key.Up) {
            if (_selectIndex > 0) {
                _selectIndex--;
                =
this._highlightItem(_completionListElement.childNodes[_selectIndex]);
                e.returnValue =3D false;
            }
        }
        else if (e.keyCode =3D=3D Sys.UI.Key.Down) {
            if (_selectIndex < (_completionListElement.childNodes.length =
- 1)) {
                _selectIndex++;
                =
this._highlightItem(_completionListElement.childNodes[_selectIndex]);
                e.returnValue =3D false;
            }
        }
        else if (e.keyCode =3D=3D Sys.UI.Key.Return) {
            if (_selectIndex !=3D -1) {
                =
this._setText(_completionListElement.childNodes[_selectIndex].firstChild.=
nodeValue);
                e.returnValue =3D false;
            }
        }
       =20
        if (e.keyCode !=3D Sys.UI.Key.Tab) {
            _timer.set_enabled(true);
        }
    }
   =20
    this._onLostFocus =3D function() {
        _timer.set_enabled(false);
        this._hideCompletionList();
    }
   =20
    function _onMethodComplete(result, response, context) {
        var acBehavior =3D context[0];
        var prefixText =3D context[1];
        acBehavior._update(prefixText, result,  true);
    }
   =20
    this._onTimerTick =3D function(sender, eventArgs) {
        if (_serviceURL && _serviceMethod) {
            var text =3D this.control.element.value;
           =20
            if (text.trim().length < _minimumPrefixLength) {
                this._update('', null,  false);
                return;
            }
           =20
            if (_currentPrefix !=3D text) {
                _currentPrefix =3D text;
                if (_cache && _cache[text]) {
                    this._update(text, _cache[text],  false);
                    return;
                }
               =20
                Sys.Net.ServiceMethod.invoke(_serviceURL, =
_serviceMethod, _appURL,
                                                          { prefixText : =
_currentPrefix, count: _completionSetCount },
                                                          =
_onMethodComplete, null, null, null,
                                                          [ this, text =
]);
            }
        }
    }
   =20
    this._setText =3D function(text) {
        _timer.set_enabled(false);
        _currentPrefix =3D text;
        if (Sys.UI.TextBox.isInstanceOfType(this.control)) {
            this.control.set_text(text);
        }
        else {
            this.control.element.value =3D text;
        }
        this._hideCompletionList();
    }
   =20
    this._update =3D function(prefixText, completionItems, cacheResults) =
{
        if (cacheResults) {
            if (!_cache) {
                _cache =3D { };
            }
            _cache[prefixText] =3D completionItems;
        }

        _completionListElement.innerHTML =3D '';
        _selectIndex =3D -1;
        if (completionItems && completionItems.length) {
            for (var i =3D 0; i < completionItems.length; i++) {
                var itemElement =3D document.createElement('div');
                =
itemElement.appendChild(document.createTextNode(completionItems[i]));
                itemElement.__item =3D '';
               =20
                var itemElementStyle =3D itemElement.style;
                itemElementStyle.padding =3D '1px';
                itemElementStyle.textAlign =3D 'left';
                itemElementStyle.textOverflow =3D 'ellipsis';
                itemElementStyle.backgroundColor =3D 'window';
                itemElementStyle.color =3D 'windowtext';
               =20
                _completionListElement.appendChild(itemElement);
            }
            _popupBehavior.show();
        }
        else {
            _popupBehavior.hide();
        }
    }
}
Sys.UI.AutoCompleteBehavior.registerSealedClass('Sys.UI.AutoCompleteBehav=
ior', Sys.UI.Behavior);
Sys.TypeDescriptor.addType('script', 'autoComplete', =
Sys.UI.AutoCompleteBehavior);

Sys.UI.RequiredFieldValidator =3D function() {
    Sys.UI.RequiredFieldValidator.initializeBase(this);

    this.validate =3D function(value) {
        if (!value) {
            return false;
        }
        if (String.isInstanceOfType(value)) {
            if (value.length =3D=3D 0) {
                return false;
            }
        }
        return true;
    }
}
Sys.UI.RequiredFieldValidator.registerSealedClass('Sys.UI.RequiredFieldVa=
lidator', Sys.UI.Validator);
Sys.TypeDescriptor.addType('script', 'requiredFieldValidator', =
Sys.UI.RequiredFieldValidator);
Sys.UI.TypeValidator =3D function() {
    Sys.UI.TypeValidator.initializeBase(this);
   =20
    var _type;
   =20
    this.get_type =3D function() {
        return _type;
    }
    this.set_type =3D function(value) {
        _type =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.TypeValidator.callBaseMethod(this, =
'getDescriptor');

        td.addProperty('type', Function);
        return td;
    }

    this.validate =3D function(value) {
        var valid =3D true;
        if (value && value.length) {
            try {
                var number =3D _type.parse(value);
                if (isNaN(number)) {
                    valid =3D false;
                }
            }
            catch (ex) {
                valid =3D false;
            }
        }
        return valid;
    }
}
Sys.UI.TypeValidator.registerSealedClass('Sys.UI.TypeValidator', =
Sys.UI.Validator);
Sys.TypeDescriptor.addType('script', 'typeValidator', =
Sys.UI.TypeValidator);
Sys.UI.RangeValidator =3D function() {
    Sys.UI.RangeValidator.initializeBase(this);
   =20
    var _lowerBound;
    var _upperBound;
   =20
    this.get_lowerBound =3D function() {
        return _lowerBound;
    }
    this.set_lowerBound =3D function(value) {
        _lowerBound =3D value;
    }
   =20
    this.get_upperBound =3D function() {
        return _upperBound;
    }
    this.set_upperBound =3D function(value) {
        _upperBound =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.RangeValidator.callBaseMethod(this, =
'getDescriptor');

        td.addProperty('lowerBound', Number);
        td.addProperty('upperBound', Number);
        return td;
    }

    this.validate =3D function(value) {
        if (value && value.length) {
            return ((value <=3D _upperBound) && (value >=3D =
_lowerBound));
        }
        return true;
    }
}
Sys.UI.RangeValidator.registerSealedClass('Sys.UI.RangeValidator', =
Sys.UI.Validator);
Sys.TypeDescriptor.addType('script', 'rangeValidator', =
Sys.UI.RangeValidator);
Sys.UI.RegexValidator =3D function() {
    Sys.UI.RegexValidator.initializeBase(this);
   =20
    var _regex;
   =20
    this.get_regex =3D function() {
        return _regex;
    }
    this.set_regex =3D function(value) {
        _regex =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.RegexValidator.callBaseMethod(this, =
'getDescriptor');

        td.addProperty('regex', RegExp);
        return td;
    }

    this.validate =3D function(value) {
        if (value && value.length) {
            var matches =3D _regex.exec(value);
            return (matches && (matches[0] =3D=3D value));
        }
        return true;
    }
}
Sys.UI.RegexValidator.registerSealedClass('Sys.UI.RegexValidator', =
Sys.UI.Validator);
Sys.TypeDescriptor.addType('script', 'regexValidator', =
Sys.UI.RegexValidator);
Sys.UI.CustomValidationEventArgs =3D function(value) {
    Sys.UI.CustomValidationEventArgs.initializeBase(this);
   =20
    var _value =3D value;
    var _isValid =3D true;
   =20
    this.get_value =3D function() {
        return _value;
    }
   =20
    this.get_isValid =3D function() {
        return _isValid;
    }
    this.set_isValid =3D function(value) {
        _isValid =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.CustomValidationEventArgs.callBaseMethod(this, =
'getDescriptor');

        td.addProperty('isValid', Boolean);
        td.addProperty('value', Object, true);
        return td;
    }
}
Sys.UI.CustomValidationEventArgs.registerSealedClass('Sys.UI.CustomValida=
tionEventArgs', Sys.EventArgs);
Sys.UI.CustomValidator =3D function() {
    Sys.UI.CustomValidator.initializeBase(this);
   =20
    this.validateValue =3D this.createEvent();
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.CustomValidator.callBaseMethod(this, =
'getDescriptor');

        td.addEvent('validateValue', false);
        return td;
    }

    this.validate =3D function(value) {
        if (value && value.length) {
            var cve =3D new Sys.UI.CustomValidationEventArgs(value);
            this.validateValue.invoke(this, cve);

            return cve.get_isValid();
        }
        return true;
    }
}
Sys.UI.CustomValidator.registerSealedClass('Sys.UI.CustomValidator', =
Sys.UI.Validator);
Sys.TypeDescriptor.addType('script', 'customValidator', =
Sys.UI.CustomValidator);

Sys.UI.ValidationErrorLabel =3D function(associatedElement) {
    Sys.UI.ValidationErrorLabel.initializeBase(this, =
[associatedElement]);
   =20
    var _associatedControl;
    var _validatedHandler;
   =20
    this.get_associatedControl =3D function() {
        return _associatedControl;
    }
    this.set_associatedControl =3D function(value) {
        if (_associatedControl && _validatedHandler) {
            _associatedControl.validated.remove(_validatedHandler);
        }
       =20
        if (Sys.UI.IValidationTarget.isImplementedBy(value)) {
            _associatedControl =3D value;
        }
        if (_associatedControl) {
            if (!_validatedHandler) {
                _validatedHandler =3D Function.createDelegate(this, =
this._onControlValidated);
            }
            _associatedControl.validated.add(_validatedHandler);
        }
    }

    this.dispose =3D function() {
        if (_associatedControl) {
            if (_validatedHandler) {
                _associatedControl.validated.remove(_validatedHandler);
                _validatedHandler =3D null;
            }
            _associatedControl =3D null;
        }
       =20
        Sys.UI.ValidationErrorLabel.callBaseMethod(this, 'dispose');
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.ValidationErrorLabel.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('associatedControl', Object);
        return td;
    }
   =20
    this.initialize =3D function() {
        Sys.UI.ValidationErrorLabel.callBaseMethod(this, 'initialize');
        this.set_visible(false);
    }
   =20
    this._onControlValidated =3D function(sender, eventArgs) {
        var isInvalid =3D _associatedControl.get_isInvalid();
        var tooltip =3D '';
       =20
        if (isInvalid) {
            tooltip =3D _associatedControl.get_validationMessage();
        }

        this.set_visible(isInvalid);
        this.element.title =3D tooltip;
    }
}
Sys.UI.ValidationErrorLabel.registerSealedClass('Sys.UI.ValidationErrorLa=
bel', Sys.UI.Label);
Sys.TypeDescriptor.addType('script', 'validationErrorLabel', =
Sys.UI.ValidationErrorLabel);

Type.registerNamespace('Sys.UI.Data');

Sys.UI.Data.DataControl =3D function(associatedElement) {
    Sys.UI.Data.DataControl.initializeBase(this, [associatedElement]);
   =20
    var _data;
    var _dataIndex =3D 0;
    var _suspendChangeNotifications =3D false;
   =20
    var _dataChangedDelegate;
   =20
    function prepareChange() {
        return {dataIndex: this.get_dataIndex(), canMoveNext: =
this.get_canMoveNext(), canMovePrevious: this.get_canMovePrevious()};
    }
    function triggerChangeEvents(oldState) {
        var dataIndex =3D this.get_dataIndex();
        if (oldState.dataIndex !=3D dataIndex) {
            this.raisePropertyChanged('dataIndex');
            this.raisePropertyChanged('dataItem');
            oldState.dataIndex =3D dataIndex;
        }
        var canMoveNext =3D this.get_canMoveNext();
        if (oldState.canMoveNext !=3D canMoveNext) {
            this.raisePropertyChanged('canMoveNext');
            oldState.canMoveNext =3D canMoveNext;
        }
        var canMovePrevious =3D this.get_canMovePrevious();
        if (oldState.canMovePrevious !=3D canMovePrevious) {
            this.raisePropertyChanged('canMovePrevious');
            oldState.canMovePrevious =3D canMovePrevious;
        }
    }
   =20
    this.get_canMoveNext =3D function() {
        if (!_data) return false;
        return (_dataIndex < _data.get_length() - 1);
    }
    this.get_canMovePrevious =3D function() {
        if (!_data) return false;
        return (_dataIndex > 0);
    }
   =20
    this.get_data =3D function() {
        return _data;
    }
    this.set_data =3D function(value) {
        var oldState =3D prepareChange.call(this);
        if (_data && =
Sys.INotifyCollectionChanged.isImplementedBy(_data)) {
            _data.collectionChanged.remove(_dataChangedDelegate);
        }
        _data =3D value;
        if (_data && =
Sys.INotifyCollectionChanged.isImplementedBy(_data)) {
            _data.collectionChanged.add(_dataChangedDelegate);
        }
        var newLength =3D _data ? _data.get_length() : 0;
        if (_dataIndex >=3D newLength) {
            this.set_dataIndex(0);
        }
       =20
        if (!this.get_isUpdating()) {
            this.render();
        }

        this.raisePropertyChanged('data');
        triggerChangeEvents.call(this, oldState);
    }
   =20
    this.get_dataContext =3D function() {
        return this.get_dataItem();
    }
    Sys.UI.Data.DataControl.registerBaseMethod(this, 'get_dataContext');
   =20
    this.get_dataIndex =3D function() {
        return _dataIndex;
    }
    this.set_dataIndex =3D function(value) {
        if (_dataIndex !=3D value) {
            var oldState =3D prepareChange.call(this);
            _dataIndex =3D value;
            if (!_suspendChangeNotifications) {
                triggerChangeEvents.call(this, oldState);
            }
        }
    }
    Sys.UI.Data.DataControl.registerBaseMethod(this, 'set_dataIndex');
   =20
    this.get_dataItem =3D function() {
        if (_data) {
            return _data.getItem(_dataIndex);
        }
        return null;
    }
   =20
    this.get_length =3D function() {
        return Sys.IArray.isImplementedBy(_data) ? _data.get_length() : =
0;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Data.DataControl.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('canMoveNext', Boolean, true);
        td.addProperty('canMovePrevious', Boolean, true);
        td.addProperty('data', Sys.Data.DataTable);
        td.addProperty('dataIndex', Number);
        td.addProperty('dataItem', Object, true);
        td.addProperty("length", Number, true);
        td.addMethod('addItem');
        td.addMethod('deleteCurrentItem');
        td.addMethod('moveNext');
        td.addMethod('movePrevious');
       =20
        return td;
    }
    Sys.UI.Data.DataControl.registerBaseMethod(this, 'getDescriptor');
   =20
    this.addItem =3D function() {
        if (_data) {
            var oldState =3D prepareChange.call(this);
            _data.add({});
            this.set_dataIndex(_data.get_length() - 1);
            triggerChangeEvents.call(this, oldState);
        }
    }
   =20
    this.deleteCurrentItem =3D function() {
        if (_data) {
            var oldState =3D prepareChange.call(this);
            _suspendChangeNotifications =3D true;
            var item =3D this.get_dataItem();
            if (this.get_dataIndex() =3D=3D _data.get_length() - 1) {
                this.set_dataIndex(Math.max(0, _data.get_length() - 2));
            }
            _data.remove(item);
            _suspendChangeNotifications =3D false;
            triggerChangeEvents.call(this, oldState);
        }
    }
   =20
    this.getItem =3D function(index) {
        if (_data) {
            return _data.getItem(_dataIndex);
        }
        return null;
    }
   =20
    this.moveNext =3D function() {
        if (_data) {
            var oldState =3D prepareChange.call(this);
            var newIndex =3D this.get_dataIndex() + 1;
            if (newIndex < _data.get_length()) {
                this.set_dataIndex(newIndex);
            }
            triggerChangeEvents.call(this, oldState);
        }
    }
   =20
    this.movePrevious =3D function() {
        if (_data) {
            var oldState =3D prepareChange.call(this);
            var newIndex =3D this.get_dataIndex() - 1;
            if (newIndex >=3D0) {
                this.set_dataIndex(newIndex);
            }
            triggerChangeEvents.call(this, oldState);
        }
    }

    this.onBubbleEvent =3D function(source, args) {
        if (args.get_commandName() =3D=3D "select") {
            var arg =3D args.get_argument();
            if (!arg && arg !=3D 0) {
                var dataContext =3D source.get_dataContext();
                if (dataContext) {
                    arg =3D dataContext.get_index();
                }
            }
            if (arg && String.isInstanceOfType(arg)) {
                arg =3D Number.parse(arg);
            }
            if (arg || arg =3D=3D 0) {
                this.set_dataIndex(arg);
                return true;
            }
        }
        return false;
    }
    Sys.UI.Data.DataControl.registerBaseMethod(this, 'onBubbleEvent');
   =20
    function onDataChanged(sender, args) {
        this.render();
    }
    _dataChangedDelegate =3D Function.createDelegate(this, =
onDataChanged);
}
Sys.UI.Data.DataControl.registerClass('Sys.UI.Data.DataControl', =
Sys.UI.Control, Sys.IArray);
Sys.UI.Data.DataNavigator =3D function(associatedElement) {
    Sys.UI.Data.DataNavigator.initializeBase(this, [associatedElement]);
   =20
    var _data;
   =20
    this.get_dataView =3D function() {
        return _data;
    }
    this.set_dataView =3D function(value) {
debug.assert(Sys.Data.DataView.isInstanceOfType(value), "dataView must =
be of type Sys.Data.DataView.");
        _data =3D value;
        this.raisePropertyChanged('dataView');
    }
   =20
    this.get_dataContext =3D function() {
        return this.get_dataView();
    }
    Sys.UI.Data.DataNavigator.registerBaseMethod(this, =
'get_dataContext');
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Data.DataControl.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('dataView', Object);
       =20
        return td;
    }
    Sys.UI.Data.DataNavigator.registerBaseMethod(this, 'getDescriptor');

    this.onBubbleEvent =3D function(source, args) {
        if (!_data) return false;
        var cmd =3D args.get_commandName().toLowerCase();
        switch(cmd) {
        case "page":
            var arg =3D args.get_argument();
            if (arg && String.isInstanceOfType(arg)) {
                arg =3D Number.parse(arg);
            }
            if (arg || arg =3D=3D 0) {
                _data.set_pageIndex(arg);
                return true;
            }
            break;
           =20
        case "nextpage":
            _data.set_pageIndex(_data.get_pageIndex() + 1);
            return true;

        case "previouspage":
            var idx =3D _data.get_pageIndex() - 1;
            if (idx >=3D 0) {
                _data.set_pageIndex(idx);
            }
            return true;
           =20
        case "firstpage":
            _data.set_pageIndex(0);
            return true;
           =20
        case "lastpage":
            _data.set_pageIndex(_data.get_pageCount() - 1);
            return true;
        }
        return false;
    }
    Sys.UI.Control.registerBaseMethod(this, 'onBubbleEvent');
}
Sys.UI.Data.DataNavigator.registerClass('Sys.UI.Data.DataNavigator', =
Sys.UI.Control);
Sys.TypeDescriptor.addType('script', 'dataNavigator', =
Sys.UI.Data.DataNavigator);
Sys.UI.Data.ItemView =3D function(associatedElement) {
    Sys.UI.Data.ItemView.initializeBase(this, [associatedElement]);
   =20
    var _itemTemplate;
    var _emptyTemplate;
   =20
    var _keyDownHandler;
   =20
    var _layoutTemplateElement =3D null;

    this.set_dataIndex =3D function(value) {
        if (this.get_dataIndex() !=3D value) {
            Sys.UI.Data.ItemView.callBaseMethod(this, 'set_dataIndex', =
[value]);
            if (!this.get_isUpdating()) {
                this.render();
            }
        }
    }

    this.get_emptyTemplate =3D function() {
        return _emptyTemplate;
    }
    this.set_emptyTemplate =3D function(value) {
        if (_emptyTemplate) {
            _emptyTemplate.dispose();
        }
        _emptyTemplate =3D value;
       =20
        if (!this.get_isUpdating()) {
            this.render();
        }
        this.raisePropertyChanged('emptyTemplate');
    }
   =20
    this.get_itemTemplate =3D function() {
        return _itemTemplate;
    }
    this.set_itemTemplate =3D function(value) {
        if (_itemTemplate) {
            _itemTemplate.dispose();
        }
        _itemTemplate =3D value;
       =20
        if (!this.get_isUpdating()) {
            this.render();
        }
        this.raisePropertyChanged('itemTemplate');
    }
   =20
    this.dispose =3D function() {
        if (this.element) {
            if (_keyDownHandler) {
                this.element.detachEvent('onkeydown', _keyDownHandler);
            }
            if (this.element.childNodes.length) {
                this.element.markupContext =3D null;
                =
Sys.UI.ITemplate.disposeInstance(this.element.firstChild);
            }
        }
        if (_itemTemplate) {
            _itemTemplate.dispose();
            _itemTemplate =3D null;
        }
       =20
        if (_emptyTemplate) {
            _emptyTemplate.dispose();
            _emptyTemplate =3D null;
        }
       =20
        _layoutTemplateElement =3D null;
       =20
        Sys.UI.Data.ItemView.callBaseMethod(this, 'dispose');
    }
    Sys.UI.Data.ItemView.registerBaseMethod(this, 'dispose');
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Data.ItemView.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('itemTemplate', Sys.UI.ITemplate);
        td.addProperty('emptyTemplate', Sys.UI.ITemplate);
       =20
        return td;
    }
    Sys.UI.Data.ItemView.registerBaseMethod(this, 'getDescriptor');
   =20
    this.initialize =3D function() {
        _keyDownHandler =3D Function.createDelegate(this, =
this._onKeyDown);

        Sys.UI.Data.ItemView.callBaseMethod(this, 'initialize');

        this.element.attachEvent('onkeydown', _keyDownHandler);

        if (_itemTemplate) {
            _itemTemplate.initialize();
        }
        if (_emptyTemplate) {
            _emptyTemplate.initialize();
        }
       =20
        this.render();
    }
   =20
    this._onKeyDown =3D function() {
        var e =3D window.event;
        if (e.srcElement =3D=3D this.element) {
            if ((e.keyCode =3D=3D Sys.UI.Key.Up) || (e.keyCode =3D=3D =
Sys.UI.Key.Left)) {
                this.movePrevious();
                e.returnValue =3D false;
            }
            else if ((e.keyCode =3D=3D Sys.UI.Key.Down) || (e.keyCode =
=3D=3D Sys.UI.Key.Right)) {
                this.moveNext();
                e.returnValue =3D false;
            }
        }
    }
   =20
    this.render =3D function() {
        if (this.element.childNodes.length) {
            if (_layoutTemplateElement) {
                =
Sys.UI.ITemplate.disposeInstance(_layoutTemplateElement);
            }
        }
        this.element.innerHTML =3D '';
       =20
        var template;
        var data =3D this.get_data();
        if (data && data.get_length()) {
            template =3D _itemTemplate;
        }
        else {
            template =3D _emptyTemplate;
        }
       =20
        if (template) {
            var instance =3D template.createInstance(this.element, =
this.get_dataContext()).instanceElement;
            this.element.markupContext =3D instance.markupContext;
            _layoutTemplateElement =3D instance;
        }
    }
}
Sys.UI.Data.ItemView.registerClass('Sys.UI.Data.ItemView', =
Sys.UI.Data.DataControl);
Sys.TypeDescriptor.addType('script', 'itemView', Sys.UI.Data.ItemView);
Sys.UI.Data.ListView =3D function(associatedElement) {
    Sys.UI.Data.ListView.initializeBase(this, [associatedElement]);

    var _itemClass;
    var _alternatingItemClass;
    var _separatorClass;
    var _selectedItemClass;

    var _focusHandler;
    var _keyDownHandler;
    var _itemFocusHandler;
    var _itemClickHandler;

    var _focusIndex;

        var _layoutTemplate =3D null;
    var _itemTemplate =3D null;
    var _separatorTemplate =3D null;
    var _emptyTemplate =3D null;
    var _itemTemplateParentElementId;

    var _itemElements =3D [];
    var _separatorElements =3D [];
    var _layoutTemplateElement =3D null;

    this.get_alternatingItemCssClass =3D function() {
        return _alternatingItemClass;
    }
    this.set_alternatingItemCssClass =3D function(value) {
        if (value !=3D _alternatingItemClass) {
            _alternatingItemClass =3D value;
            this.render();
            this.raisePropertyChanged('alternatingItemCssClass');
        }
    }

    this.set_dataIndex =3D function(value) {
        var oldIndex =3D this.get_dataIndex();
        if (oldIndex !=3D value) {
            var sel =3D this.getItemElement(oldIndex);
            if (sel && _selectedItemClass) {
                Sys.UI.Control.removeCssClass(sel, _selectedItemClass);
            }
            Sys.UI.Data.ListView.callBaseMethod(this, 'set_dataIndex', =
[value]);
            sel =3D this.getItemElement(value);
            if (sel && _selectedItemClass) {
                Sys.UI.Control.addCssClass(sel, _selectedItemClass);
            }
        }
    }

    this.get_emptyTemplate =3D function() {
        return _emptyTemplate;
    }
    this.set_emptyTemplate =3D function(template) {
        if (_emptyTemplate) {
            _emptyTemplate.dispose();
        }
        _emptyTemplate =3D template;

        if (!this.get_isUpdating()) {
            this.render();
        }
        this.raisePropertyChanged('emptyTemplate');
    }

    this.get_itemCssClass =3D function() {
        return _itemClass;
    }
    this.set_itemCssClass =3D function(value) {
        if (value !=3D _itemClass) {
            _itemClass =3D value;
            this.render();
            this.raisePropertyChanged('itemCssClass');
        }
    }

    this.get_itemTemplate =3D function() {
        return _itemTemplate;
    }
    this.set_itemTemplate =3D function(template) {
        if (_itemTemplate) {
            _itemTemplate.dispose();
        }
        _itemTemplate =3D template;

        if (!this.get_isUpdating()) {
            this.render();
        }
        this.raisePropertyChanged('itemTemplate');
    }

    this.get_itemTemplateParentElementId =3D function() {
        return _itemTemplateParentElementId;
    }
    this.set_itemTemplateParentElementId =3D function(id) {
        _itemTemplateParentElementId =3D id;
        this.raisePropertyChanged('itemTemplateParentElementId');
    }

    this.get_layoutTemplate =3D function() {
        return _layoutTemplate;
    }
    this.set_layoutTemplate =3D function(template) {
        if (_layoutTemplate) {
            _layoutTemplate.dispose();
        }
        _layoutTemplate =3D template;

        if (!this.get_isUpdating()) {
            this.render();
        }
        this.raisePropertyChanged('layoutTemplate');
    }

    this.get_selectedItemCssClass =3D function() {
        return _selectedItemClass;
    }
    this.set_selectedItemCssClass =3D function(value) {
        if (value !=3D _selectedItemClass) {
            _selectedItemClass =3D value;
            this.render();
            this.raisePropertyChanged('selectedItemCssClass');
        }
    }

    this.get_separatorCssClass =3D function() {
        return _separatorClass;
    }
    this.set_separatorCssClass =3D function(value) {
        if (value !=3D _separatorClass) {
            _separatorClass =3D value;
            this.render();
            this.raisePropertyChanged('separatorCssClass');
        }
    }

    this.get_separatorTemplate =3D function() {
        return _separatorTemplate;
    }
    this.set_separatorTemplate =3D function(template) {
        if (_separatorTemplate) {
            _separatorTemplate.dispose();
        }
        _separatorTemplate =3D template;

        if (!this.get_isUpdating()) {
            this.render();
        }
        this.raisePropertyChanged('separatorTemplate');
    }

    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Data.ListView.callBaseMethod(this, =
'getDescriptor');

        td.addProperty("alternatingItemCssClass", String);
        td.addProperty("layoutTemplate", Sys.UI.ITemplate);
        td.addProperty("itemCssClass", String);
        td.addProperty("itemTemplate", Sys.UI.ITemplate);
        td.addProperty("itemTemplateParentElementId", String);
        td.addProperty("selectedItemCssClass", String);
        td.addProperty("separatorCssClass", String);
        td.addProperty("separatorTemplate", Sys.UI.ITemplate);
        td.addProperty("emptyTemplate", Sys.UI.ITemplate);
        return td;
    }
    Sys.UI.Data.ListView.registerBaseMethod(this, 'getDescriptor');

    this.getItemElement =3D function(index) {
        return _itemElements[index];
    }

    this.initialize =3D function() {
        _focusHandler =3D Function.createDelegate(this, =
this._onGotFocus);
        _keyDownHandler =3D Function.createDelegate(this, =
this._onKeyDown);
        _itemFocusHandler =3D Function.createDelegate(this, =
this._onItemFocus);
        _itemClickHandler =3D Function.createDelegate(this, =
this._onItemClick);

        Sys.UI.Data.ListView.callBaseMethod(this, 'initialize');

        this.element.attachEvent('onkeydown', _keyDownHandler);
        this.element.attachEvent('onfocus', _focusHandler);

        if (_itemTemplate) {
            _itemTemplate.initialize();
        }
        if (_separatorTemplate) {
            _separatorTemplate.initialize();
        }
        if (_emptyTemplate) {
            _emptyTemplate.initialize();
        }
        if (_layoutTemplate) {
            _layoutTemplate.initialize();
        }

        if (!this.get_tabIndex()) {
            this.set_tabIndex(0);
        }

        this.render();
    }
    Sys.UI.Data.ListView.registerBaseMethod(this, 'initialize');

    this.dispose =3D function() {
        if (this.element) {
            if (_focusHandler) {
                this.element.detachEvent('onfocus', _focusHandler);
            }
            if (_keyDownHandler) {
                this.element.detachEvent('onkeydown', _keyDownHandler);
            }
        }
        if (_itemElements) {
            for (var i =3D _itemElements.length - 1; i >=3D 0; i--) {
                if (_itemFocusHandler) {
                    _itemElements[i].detachEvent('onfocus', =
_itemFocusHandler);
                }
                if (_itemClickHandler) {
                    _itemElements[i].detachEvent('onclick', =
_itemClickHandler);
                }
            }
        }

        if (_layoutTemplate) {
            _layoutTemplate.dispose();
            _layoutTemplate =3D null;
        }
        if (_itemTemplate) {
            _itemTemplate.dispose();
            _itemTemplate =3D null;
        }
        if (_separatorTemplate) {
            _separatorTemplate.dispose();
            _separatorTemplate =3D null;
        }
        if (_emptyTemplate) {
            _emptyTemplate.dispose();
            _emptyTemplate =3D null;
        }
        _itemElements =3D null;
        _separatorElements =3D null;
        _layoutTemplateElement =3D null;

        Sys.UI.Data.ListView.callBaseMethod(this, 'dispose');
    }
    Sys.UI.Data.ListView.registerBaseMethod(this, 'dispose');

    this._onGotFocus =3D function() {
        if (window.event.srcElement =3D=3D this.element) {
            setFocus(this, this.getItemElement(this.get_dataIndex()));
        }
    }

    this._onKeyDown =3D function() {
        var e =3D window.event;
        if (e.srcElement =3D=3D this.getItemElement(_focusIndex)) {
            if ((e.keyCode =3D=3D Sys.UI.Key.Up) || (e.keyCode =3D=3D =
Sys.UI.Key.Left)) {
                if (_focusIndex > 0) {
                    setFocus(this, this.getItemElement(_focusIndex - =
1));
                    e.returnValue =3D false;
                }
            }
            else if ((e.keyCode =3D=3D Sys.UI.Key.Down) || (e.keyCode =
=3D=3D Sys.UI.Key.Right)) {
                if (_focusIndex < (this.get_length() - 1)) {
                    setFocus(this, this.getItemElement(_focusIndex + =
1));
                    e.returnValue =3D false;
                }
            }
            else if ((e.keyCode =3D=3D Sys.UI.Key.Return) || (e.keyCode =
=3D=3D Sys.UI.Key.Space)) {
                if (_focusIndex !=3D -1) {
                    this.set_dataIndex(_focusIndex);
                    e.returnValue =3D false;
                }
            }
        }
    }

    this._onItemFocus =3D function() {
        if (typeof(window.event.srcElement.dataIndex) !=3D "undefined") =
{
            _focusIndex =3D window.event.srcElement.dataIndex;
        }
    }

    this._onItemClick =3D function() {
        var s =3D window.event.srcElement;
        var srcTag =3D s.tagName.toUpperCase();
        while (s && (typeof(s.dataIndex) =3D=3D 'undefined')) {
            s =3D s.parentNode;
        }
        if (s) {
            var idx =3D s.dataIndex;
            sel =3D this.getItemElement(idx);
            if (sel) {
                this.set_dataIndex(idx);
                if ((srcTag !=3D "INPUT") && (srcTag !=3D "TEXTAREA") &&
                    (srcTag !=3D "SELECT") && (srcTag !=3D "BUTTON") && =
(srcTag !=3D "A")) {
                    setFocus(this, sel);
                }
            }
        }
    }

    this.render =3D function() {
        var i, element;
        for (i =3D _itemElements.length - 1; i >=3D 0; i--) {
            element =3D _itemElements[i];
            if (element) {
                Sys.UI.ITemplate.disposeInstance(element);
            }
        }
        _itemElements =3D [];
        for (i =3D _separatorElements.length - 1; i >=3D 0; i--) {
            element =3D _separatorElements[i];
            if (element) {
                Sys.UI.ITemplate.disposeInstance(element);
            }
        }
        _separatorElements =3D [];

        if (this.element.childNodes.length) {
            if (_layoutTemplateElement) {
                =
Sys.UI.ITemplate.disposeInstance(_layoutTemplateElement);
            }
        }
        this.element.innerHTML =3D '';

        var tasksPending =3D false;

        var items =3D this.get_data();
        var itemLength =3D items ? items.get_length() : 0;
        if (itemLength > 0) {
            var template =3D this.get_layoutTemplate();
            if (template) {
                var itemTemplate =3D this.get_itemTemplate();
                var separatorTemplate =3D this.get_separatorTemplate();

                var layoutTemplateInstance =3D =
template.createInstance(this.element, null, =
findItemTemplateParentCallback, _itemTemplateParentElementId);
                var itemTemplateParent =3D =
layoutTemplateInstance.callbackResult;
                _layoutTemplateElement =3D =
layoutTemplateInstance.instanceElement;

                tasksPending =3D true;
                var renderTask =3D new =
Sys.UI.Data.ListViewRenderTask(this, items, itemTemplate, =
itemTemplateParent, separatorTemplate, _itemElements, =
_separatorElements, _itemClass, _alternatingItemClass, _separatorClass, =
_itemFocusHandler, _itemClickHandler);
                Sys.TaskManager.addTask(renderTask);
            }
        }
        else {
            var emptyTemplate =3D this.get_emptyTemplate();
            if (emptyTemplate) {
                emptyTemplate.createInstance(this.element);
            }
        }
    }

    function findItemTemplateParentCallback(instanceElement, =
markupContext, id) {
        return markupContext.findElement(id);
    }

    function setFocus(owner, element) {
        if (element.focus) {
            for(var i =3D owner.get_length() - 1; i >=3D 0; i--) {
                var sel =3D owner.getItemElement(i);
                if (sel) {
                    sel.tabIndex =3D -1;
                }
            }
            var t =3D owner.element.tabIndex;
            if (t =3D=3D -1) {
                t =3D owner.element.__tabIndex;
            }
            element.tabIndex =3D t;
            setTimeout(Function.createCallback(focus, element), 0);
            owner.element.__tabIndex =3D t;
            owner.element.tabIndex =3D -1;
        }
    }

    function focus(element) {
        try {
            element.focus();
        }
        catch(e) {}
    }
}
Sys.UI.Data.ListView.registerClass('Sys.UI.Data.ListView', =
Sys.UI.Data.DataControl);
Sys.TypeDescriptor.addType('script', 'listView', Sys.UI.Data.ListView);


Sys.UI.Data.ListViewRenderTask =3D function(listView, data, =
itemTemplate, itemTemplateParent, separatorTemplate, itemElements, =
separatorElements, itemClass, alternatingItemClass, separatorClass, =
itemFocusHandler, itemClickHandler) {
    var _listView =3D listView;
    var _data =3D data;
    var _itemTemplate =3D itemTemplate;
    var _itemTemplateParent =3D itemTemplateParent;
    var _separatorTemplate =3D separatorTemplate;
    var _itemElements =3D itemElements;
    var _separatorElements =3D separatorElements;
    var _itemClass =3D itemClass;
    var _alternatingItemClass =3D alternatingItemClass;
    var _separatorClass =3D separatorClass;
    var _itemFocusHandler =3D itemFocusHandler;
    var _itemClickHandler =3D itemClickHandler;
    var _currentIndex =3D 0;

    this.dispose =3D function() {
        _listView =3D null;
        _data =3D null;
        _itemTemplate =3D null;
        _itemTemplateParent =3D null;
        _separatorTemplate =3D null;
        _itemElements =3D null;
        _separatorElements =3D null;
        _itemClass =3D null;
        _alternatingItemClass =3D null;
        _separatorClass =3D null;
        _itemFocusHandler =3D null;
        _itemClickHandler =3D null;
    }

    this.execute =3D function() {
        var itemLength =3D _data.get_length();
        var lengthm1 =3D itemLength - 1;

                var lastElementToRender =3D Math.min(itemLength, =
_currentIndex + 5);
        for (; _currentIndex < lastElementToRender; _currentIndex++) {
            var item =3D _data.getItem(_currentIndex);

            if (_itemTemplate) {
                var element =3D =
_itemTemplate.createInstance(_itemTemplateParent, item).instanceElement;
                if (_itemClass) {
                    if ((_currentIndex % 2 =3D=3D 1) && =
(_alternatingItemClass)) {
                        element.className =3D _alternatingItemClass;
                    }
                    else {
                        element.className =3D _itemClass;
                    }
                }
                _itemElements[_currentIndex] =3D element;
                element.tabIndex =3D -1;
                element.dataIndex =3D _currentIndex;
                element.attachEvent('onfocus', _itemFocusHandler);
                element.attachEvent('onclick', _itemClickHandler);
            }
            if (_separatorTemplate && (_currentIndex !=3D lengthm1) && =
_itemTemplateParent) {
                var sep =3D =
_separatorTemplate.createInstance(_itemTemplateParent).instanceElement;
                if (_separatorClass) {
                    sep.className =3D _separatorClass;
                }
                _separatorElements[_currentIndex] =3D sep;
            }
        }

        if (_currentIndex =3D=3D itemLength) {

                        return true;
        }
        else {
                        return false;
        }
    }
}
Sys.UI.Data.ListViewRenderTask.registerSealedClass('Sys.UI.Data.ListViewR=
enderTask', null, Sys.ITask, Sys.IDisposable);

Sys.UI.Data.SortBehavior =3D function() {
    Sys.UI.Data.SortBehavior.initializeBase(this);
   =20
    var _clickHandler;
    var _sortChangedDelegate;
    var _sortColumn =3D '';
    var _sortAscendingCssClass =3D 'sortAscending';
    var _sortDescendingCssClass =3D 'sortDescending';
    var _dataView =3D null;
   =20
    this.get_sortAscendingCssClass =3D function() {
        return _sortAscendingCssClass;
    }
    this.set_sortAscendingCssClass =3D function(value) {
        _sortAscendingCssClass =3D value;
    }
   =20
    this.get_sortColumn =3D function() {
        return _sortColumn;
    }
    this.set_sortColumn =3D function(value) {
        if (value !=3D _sortColumn) {
            _sortColumn =3D value;
            this.raisePropertyChanged('sortColumn');
        }
    }
   =20
    this.get_sortDescendingCssClass =3D function() {
        return _sortDescendingCssClass;
    }
    this.set_sortDescendingCssClass =3D function(value) {
        _sortDescendingCssClass =3D value;
    }
   =20
    this.get_dataView =3D function() {
        return _dataView;
    }
    this.set_dataView =3D function(value) {
if (!Sys.Data.DataView.isInstanceOfType(value)) throw =
Error.createError("dataView must be of type Sys.Data.DataView.");
        if (_dataView && _sortChangedDelegate) {
            _dataView.propertyChanged.remove(_sortChangedDelegate);
        }
        _dataView =3D value;
        if (this.get_isInitialized()) {
            _dataView.propertyChanged.add(_sortChangedDelegate);
            this.update();
        }
    }
   =20
    this.dispose =3D function() {
        if (_dataView && _sortChangedDelegate) {
            _dataView.propertyChanged.remove(_sortChangedDelegate);
        }
        _dataView =3D null;
        if (_clickHandler) {
            this.control.element.detachEvent('onclick', _clickHandler);
        }
        Sys.UI.Data.SortBehavior.callBaseMethod(this, 'dispose');
    }

    this.initialize =3D function() {
        Sys.UI.Data.SortBehavior.callBaseMethod(this, 'initialize');
        _clickHandler =3D Function.createDelegate(this, clickHandler);
        this.control.element.attachEvent('onclick', _clickHandler);
        _sortChangedDelegate =3D Function.createDelegate(this, =
sortChanged);
        if (_dataView) {
            _dataView.propertyChanged.add(_sortChangedDelegate);
            this.update();
        }
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Data.SortBehavior.callBaseMethod(this, =
'getDescriptor');
        td.addProperty('dataView', Object);
        td.addProperty('sortAscendingCssClass', String);
        td.addProperty('sortColumn', String);
        td.addProperty('sortDescendingCssClass', String);
        return td;
    }
   =20
    function clickHandler() {
        var view =3D this.get_dataView();
        if (view) {
            if (view.get_sortColumn() =3D=3D _sortColumn) {
                view.set_sortDirection(
                    (view.get_sortDirection() =3D=3D =
Sys.Data.SortDirection.Ascending) ?
                    Sys.Data.SortDirection.Descending :
                    Sys.Data.SortDirection.Ascending);
            }
            else {
                view.sort(_sortColumn, =
Sys.Data.SortDirection.Ascending);
            }
        }
    }
   =20
    this.update =3D function() {
        if (_dataView && (_dataView.get_sortColumn() =3D=3D =
_sortColumn)) {
            if (_dataView.get_sortDirection() =3D=3D =
Sys.Data.SortDirection.Ascending) {
                this.control.removeCssClass(_sortDescendingCssClass);
                this.control.addCssClass(_sortAscendingCssClass);
            }
            else {
                this.control.removeCssClass(_sortAscendingCssClass);
                this.control.addCssClass(_sortDescendingCssClass);
            }
        }
        else {
            this.control.removeCssClass(_sortAscendingCssClass);
            this.control.removeCssClass(_sortDescendingCssClass);
        }
    }
   =20
    function sortChanged(sender, args) {
        var pName =3D args.get_propertyName();
        if ((pName =3D=3D 'sortColumn') || (pName =3D=3D =
'sortDirection')) {
            this.update();
        }
    }
}
Sys.UI.Data.SortBehavior.registerSealedClass('Sys.UI.Data.SortBehavior', =
Sys.UI.Behavior);
Sys.TypeDescriptor.addType('script', 'sortBehavior', =
Sys.UI.Data.SortBehavior);
Sys.UI.Data.XSLTView =3D function(associatedElement) {
    Sys.UI.Data.XSLTView.initializeBase(this, [associatedElement]);

    var _document =3D null;
    var _transform =3D null;
    var _parameters =3D null;

    this.get_document =3D function() {
        return _document;
    }
    this.set_document =3D function(document) {
        _document =3D document;
        if (this.get_isInitialized()) {
            this._render();
        }
    }
   =20
    this.get_parameters =3D function() {
        if (!_parameters) {
            _parameters =3D { };
        }
        return _parameters;
    }
   =20
    this.get_transform =3D function() {
        return _transform;
    }
    this.set_transform =3D function(transform) {
        _transform =3D transform;
        if (this.get_isInitialized()) {
            this._render();
        }
    }

    this.dispose =3D function() {
        _document =3D null;
        _transform =3D null;

        Sys.UI.Data.XSLTView.callBaseMethod(this, 'dispose');
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.UI.Data.XSLTView.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('document', Object);
        td.addProperty('parameters', Object,  true);
        td.addProperty('transform', Object);
        td.addMethod('update');
        return td;
    }
   =20
    this.initialize =3D function() {
        Sys.UI.Data.XSLTView.callBaseMethod(this, 'initialize');
        this._render();
    }
   =20
    this.update =3D function() {
        this._render();
    }

    this._render =3D function() {
        var html =3D '';
       =20
        if (_document && _transform) {
            if (_parameters) {
                if (Sys.Runtime.get_hostType() =3D=3D =
Sys.HostType.InternetExplorer) {
                    _transform.setProperty('SelectionNamespaces', =
'xmlns:xsl=3D"http://www.w3.org/1999/XSL/Transform"');
                }
                for (var paramName in _parameters) {
                    var paramNode =3D =
_transform.selectSingleNode('//xsl:param[@name=3D"' + paramName + '"]');
                    if (paramNode) {
                        paramNode.text =3D =
_parameters[paramName].toString();
                        paramNode.removeAttribute('select');
                    }
                }
            }
            html =3D _document.transformNode(_transform);
        }
       =20
        this.element.innerHTML =3D html;
    }   =20
}
Sys.UI.Data.XSLTView.registerSealedClass('Sys.UI.Data.XSLTView', =
Sys.UI.Control);
Sys.TypeDescriptor.addType('script', 'xsltView', Sys.UI.Data.XSLTView);



Type.registerNamespace('Sys.WebForms');


Sys.WebForms.PostBackAction =3D function() {
    Sys.WebForms.PostBackAction.initializeBase(this);
   =20
    var _eventArgument;
   =20
    this.get_eventArgument =3D function() {
        return _eventArgument;
    }
    this.set_eventArgument =3D function(value) {
        _eventArgument =3D value;
    }
   =20
    this.getDescriptor =3D function() {
        var td =3D Sys.WebForms.PostBackAction.callBaseMethod(this, =
'getDescriptor');
       =20
        td.addProperty('eventArgument', String);
        td.addProperty('target', String);
        return td;
    }
   =20
    this.performAction =3D function() {
        __doPostBack(this.get_target(), this.get_eventArgument());
    }
}
Sys.WebForms.PostBackAction.registerSealedClass('Sys.WebForms.PostBackAct=
ion', Sys.Action);
Sys.TypeDescriptor.addType('script', 'postBack', =
Sys.WebForms.PostBackAction);


Sys.WebForms._PageRequestManager =3D function() {
    var _id;
    var _form;
    var _scriptManagerID;
    var _updatePanelIDs;
    var _updatePanelClientIDs;
    var _asyncPostbackControlIDs;
    var _errorContainerID;

    var _additionalInput;
    var _onsubmit;
    var _originalDoPostBack;
    var _postbackSettings;
    var _request;
    var _referencedScripts =3D [];
    var _scriptsToLoad;
    var _currentLoadingScript;
    var _xmlScript;
    var _pageErrorMessage;
    var _inErrorMode =3D false;
    var _errorModeGrayDiv;
    var _errorModeTable;
    var _onWindowResizeHandler;
    var _onFormSubmitHandler;
    var _onFormElementClickHandler;

    Sys.Runtime.registerDisposableObject(this);

    this.get_asyncPostbackControlIDs =3D function() {
                                return =
_asyncPostbackControlIDs.join(',');
    }
    this.set_asyncPostbackControlIDs =3D function(value) {
        if (value) {
            _asyncPostbackControlIDs =3D value.split(',');
        }
        else {
                        _asyncPostbackControlIDs =3D [];
        }
    }

    this.get_errorContainerID =3D function() {
        return _errorContainerID;
    }
    this.set_errorContainerID =3D function(value) {
        _errorContainerID =3D value;
    }

    this.get_form =3D function() {
                                return _form.id;
    }
    this.set_form =3D function(value) {
if (_form) throw Error.createError('The form property cannot be set more =
than once on PageRequestManager.');
        _form =3D document.getElementById(value);

                _form._initialAction =3D _form.action;

        _onsubmit =3D _form.onsubmit;
        _form.onsubmit =3D null;
        _onFormSubmitHandler =3D Function.createDelegate(this, =
this._onFormSubmit);
        _onFormElementClickHandler =3D Function.createDelegate(this, =
this._onFormElementClick);
        _form.attachEvent('onsubmit', _onFormSubmitHandler);
        _form.attachEvent('onclick', _onFormElementClickHandler);

        _originalDoPostBack =3D window.__doPostBack;
        if (_originalDoPostBack) {
            window.__doPostBack =3D Function.createDelegate(this, =
this._doPostBack);
        }
    }

    this.get_id =3D function() {
                                        return _id;
    }
    this.set_id =3D function(value) {
debug.assert(value =3D=3D Sys.WebForms._PageRequestManager._id, 'The ID =
must be \'' + Sys.WebForms._PageRequestManager._id + '\'.');
        _id =3D value;
    }

    this.get_inErrorMode =3D function() {
                                        return _inErrorMode;
    }

    this.get_inPostBack =3D function() {
                                return _request !=3D null;
    }

    this.get_pageErrorMessage =3D function() {
                                return _pageErrorMessage;
    }

    this.get_scriptManagerID =3D function() {
                                return _scriptManagerID;
    }
    this.set_scriptManagerID =3D function(value) {
        _scriptManagerID =3D value;
    }

    this.get_updatePanelIDs =3D function() {
                                return _updatePanelIDs.join(',');
    }
    this.set_updatePanelIDs =3D function(value) {
        if (value) {
            _updatePanelIDs =3D value.split(',');
                        _updatePanelClientIDs =3D new =
Array(_updatePanelIDs.length);
            for (var i =3D 0; i < _updatePanelIDs.length; i++) {
                _updatePanelClientIDs[i] =3D =
uniqueIDToClientID(_updatePanelIDs[i]);
            }
        }
        else {
                        _updatePanelIDs =3D [];
            _updatePanelClientIDs =3D [];
        }
    }


    this.abortPostBack =3D function() {
        if (this.get_inPostBack()) {
            _request.abort();
            _request =3D null;
            this.raisePropertyChanged('inPostBack');
        }
    }

        this.propertyChanged =3D new Type.Event(this, false);

    function addScriptToDocument(scriptElement) {
        var headElement =3D document.getElementsByTagName('HEAD')[0];
        headElement.appendChild(scriptElement);
    }

    this.clearError =3D function() {
debug.assert(_onWindowResizeHandler !=3D null, 'expected =
_onWindowResizeHandler to be set');
        window.detachEvent('onresize', _onWindowResizeHandler);

        debug.assert(_errorModeGrayDiv !=3D null, '_errorModeGrayDiv =
should exist');
debug.assert(_errorModeTable !=3D null, '_errorModeTable should exist');
        _errorModeGrayDiv.style.display =3D 'none';
        _errorModeTable.style.display =3D 'none';

        this._enableFormElements();

                _pageErrorMessage =3D '';
        this.raisePropertyChanged('pageErrorMessage');

        _inErrorMode =3D false;
        this.raisePropertyChanged('inErrorMode');
    }

    function createPostbackSettings(async, panelID) {
debug.assert(async ? panelID : true, 'panelID should be specified if =
async is true');
        return { async:async, panelID:panelID };
    }

    function destroyTree(element, markupContext) {
                if (element.nodeType =3D=3D 1) {
            if (element.control) {
                markupContext.removeObject(element.control);
                element.control.dispose();
            }

            var children =3D element.children;
            for (var i =3D children.length - 1; i >=3D 0; i--) {
                var node =3D children[i];
                destroyTree(node, markupContext);
                element.removeChild(node);
            }
        }
    }

    function disableElements(elements) {
        for (var i =3D elements.length - 1; i >=3D 0; i--) {
            var elmt =3D elements[i];
            if (!elmt.disabled) {
                elmt.disabled =3D true;
            }
            else {
                elmt._wasDisabled =3D true;
            }
        }
    }

    this._disableFormElements =3D function() {
        disableElements(_form.getElementsByTagName("INPUT"));
        disableElements(_form.getElementsByTagName("SELECT"));
        disableElements(_form.getElementsByTagName("TEXTAREA"));
        disableElements(_form.getElementsByTagName("BUTTON"));
        disableElements(_form.getElementsByTagName("A"));
    }

    this.dispose =3D function() {
        if (_form) {
            _form.detachEvent('onsubmit', _onFormSubmitHandler);
            _form.detachEvent('onclick', _onFormElementClickHandler);
        }

        if (_originalDoPostBack) {
            window.__doPostBack =3D _originalDoPostBack;
            _originalDoPostBack =3D null;
        }

        _form =3D null;
        _scriptManagerID =3D null;
        _updatePanelIDs =3D null;
        _updatePanelClientIDs =3D null;
        _asyncPostbackControlIDs =3D null;


        Sys.Runtime.unregisterDisposableObject(this);
    }

        this._doPostBack =3D function(eventTarget, eventArgument) {
        _additionalInput =3D null;

        if (this.get_inPostBack()) {
                                    if (window.event) {
                window.event.returnValue =3D false;
            }
            return;
        }

                                        _postbackSettings =3D null;
        var postbackElement =3D findNearestElement(eventTarget);
        if (postbackElement) {
            _postbackSettings =3D getPostbackSettings(postbackElement);
        }
        else {
            _postbackSettings =3D createPostbackSettings(true, =
_scriptManagerID);
        }
        if (!_postbackSettings.async) {
            _originalDoPostBack(eventTarget, eventArgument);
            return;
        }

        var form =3D _form;
        form.__EVENTTARGET.value =3D eventTarget;
        form.__EVENTARGUMENT.value =3D eventArgument;
        this._onFormSubmit();

        if (window.event) {
            window.event.returnValue =3D false;
        }
    }

    function enableElements(elements) {
        for (var i =3D elements.length - 1; i >=3D 0; i--) {
            var elmt =3D elements[i];
            if (!elmt._wasDisabled) {
                elmt.disabled =3D false;
            }
            else {
                elmt._wasDisabled =3D null;
            }
        }
    }

    this._enableFormElements =3D function() {
        enableElements(_form.getElementsByTagName("INPUT"));
        enableElements(_form.getElementsByTagName("SELECT"));
        enableElements(_form.getElementsByTagName("TEXTAREA"));
        enableElements(_form.getElementsByTagName("BUTTON"));
        enableElements(_form.getElementsByTagName("A"));
    }

    this._enterErrorMode =3D function(pageErrorMessage) {
        this._onFormSubmitCompletedCallback();

        var errorContainer =3D null;
        if (_errorContainerID) {
            errorContainer =3D =
document.getElementById(_errorContainerID);
        }
        if (errorContainer) {
            if (!_errorModeGrayDiv) {
                debug.assert(_errorModeTable =3D=3D null, 'Expected =
_errorModeTable to not exist when _errorModeGrayDiv does not exist');

                                _errorModeGrayDiv =3D =
document.createElement('div');

                _errorModeGrayDiv.style.position =3D 'absolute';
                _errorModeGrayDiv.style.top =3D '0px';
                _errorModeGrayDiv.style.left =3D '0px';
                _errorModeGrayDiv.style.width =3D '100%';
                _errorModeGrayDiv.style.height =3D '100%';
                _errorModeGrayDiv.style.backgroundColor =3D '#c1c0c0';
                _errorModeGrayDiv.style.opacity =3D '0.50';
                _errorModeGrayDiv.style.filter =3D =
'alpha(opacity=3D50)';
                _errorModeGrayDiv.style.zIndex =3D '30000';

                                _errorModeTable =3D =
document.createElement('table');
                _errorModeTable.cellPadding =3D '0';
                _errorModeTable.cellSpacing =3D '0';
                _errorModeTable.style.top =3D '0px';
                _errorModeTable.style.left =3D '0px';
                _errorModeTable.style.position =3D 'absolute';
                _errorModeTable.style.zIndex =3D '30001';
                var tbodyElement =3D document.createElement('tbody');
                var trElement =3D document.createElement('tr');
                var tdElement =3D document.createElement('td');
                tdElement.vAlign =3D 'middle';
                tdElement.align =3D 'center';

                _errorModeTable.appendChild(tbodyElement);
                tbodyElement.appendChild(trElement);
                trElement.appendChild(tdElement);

                tdElement.appendChild(errorContainer);

                document.body.appendChild(_errorModeGrayDiv);
                document.body.appendChild(_errorModeTable);
            }
            else {
                                _errorModeGrayDiv.style.display =3D '';
                _errorModeTable.style.display =3D '';
            }

            this._disableFormElements();

                        this._onWindowResize();
            if (!_onWindowResizeHandler) {
                _onWindowResizeHandler =3D Function.createDelegate(this, =
this._onWindowResize);
            }
            window.attachEvent('onresize', _onWindowResizeHandler);

                        _pageErrorMessage =3D pageErrorMessage;
            this.raisePropertyChanged('pageErrorMessage');

            _inErrorMode =3D true;
            this.raisePropertyChanged('inErrorMode');
        }
        else {
                                                alert(pageErrorMessage);
        }
    }

            function findNearestElement(uniqueID) {
        while (uniqueID.length > 0) {
            var clientID =3D uniqueIDToClientID(uniqueID);
            var element =3D document.getElementById(clientID);
            if (element) {
                return element;
            }
            var indexOfLastDollar =3D uniqueID.lastIndexOf('$');
            if (indexOfLastDollar =3D=3D -1) {
                return null;
            }
            uniqueID =3D uniqueID.substring(0, indexOfLastDollar);
        }
        return null;
    }

    this.getDescriptor =3D function() {
        var td =3D new Sys.TypeDescriptor();

        td.addProperty('asyncPostbackControlIDs', String);
        td.addProperty('errorContainerID', String);
        td.addProperty('form', String);
        td.addProperty('id', String);
        td.addProperty('inPostBack', Boolean, true);
        td.addProperty('inErrorMode', Boolean, true);
        td.addProperty('pageErrorMessage', String, true);
        td.addProperty('scriptManagerID', String);
        td.addProperty('updatePanelIDs', String);
        td.addEvent('propertyChanged', false);
        td.addMethod('abortPostBack');
        td.addMethod('clearError');

        return td;
    }

    function getPostbackSettings(element) {
debug.assert(element, 'element should not be null');
                                                                        =
for (var j =3D _updatePanelClientIDs.length - 1; j >=3D 0; j--) {
            var updatePanel =3D =
document.getElementById(_updatePanelClientIDs[j]);
            if (updatePanel && updatePanel.contains(element)) {
                                                                return =
createPostbackSettings(true, _updatePanelIDs[j]);
            }
        }

                        for (var i =3D 0; i < =
_asyncPostbackControlIDs.length; i++) {
            var asyncPostbackControl =3D =
document.getElementById(_asyncPostbackControlIDs[i]);
            if (element =3D=3D asyncPostbackControl) {
                                                return =
createPostbackSettings(true, _scriptManagerID);
            }
        }

                return createPostbackSettings(false, null);
    }

    this._loadScript =3D function() {
        var currentScript =3D _currentLoadingScript;
        if (currentScript) {
            if ((currentScript.readyState !=3D 'loaded') &&
                (currentScript.readyState !=3D 'complete')) {
                return;
            }
            else {
                if (Sys.Runtime.get_hostType() !=3D =
Sys.HostType.InternetExplorer) {
                    currentScript.onload =3D null;
                }
                else {
                    currentScript.onreadystatechange =3D null;
                }
                _currentLoadingScript =3D null;
            }
        }

        var scripts =3D _scriptsToLoad;
        if (scripts && (scripts.length > 1)) {
            var scriptSrc =3D scripts.dequeue();
            var scriptElement =3D document.createElement('SCRIPT');

            _currentLoadingScript =3D scriptElement;

            if (Sys.Runtime.get_hostType() !=3D =
Sys.HostType.InternetExplorer) {
                scriptElement.readyState =3D 'loaded';
                scriptElement.onload =3D Function.createDelegate(this, =
this._loadScript);
            }
            else {
                scriptElement.onreadystatechange =3D =
Function.createDelegate(this, this._loadScript);
            }
            scriptElement.type =3D 'text/javascript';
            scriptElement.src =3D scriptSrc;

            addScriptToDocument(scriptElement);

            return;
        }

        var scriptText =3D scripts[0];
        if (scriptText) {
            var inlineScriptElement =3D =
document.createElement('SCRIPT');
            inlineScriptElement.type =3D 'text/javascript';
            inlineScriptElement.text =3D scriptText;

            addScriptToDocument(inlineScriptElement);
        }

        this._onFormSubmitCompletedCallback();
    }

    this._onFormElementClick =3D function() {
        var element =3D window.event.srcElement;
        if (element.disabled) {
            return;
        }

        if (this.get_inPostBack()) {
            return;
        }

                _postbackSettings =3D getPostbackSettings(element);

        if (element.tagName =3D=3D 'INPUT') {
            var type =3D element.type;
            if (type =3D=3D 'submit') {
                _additionalInput =3D element.name + '=3D' + =
encodeURIComponent(element.value);
            }
            else if (type =3D=3D 'image') {
                var x =3D window.event.offsetX;
                var y =3D window.event.offsetY;
                _additionalInput =3D element.name + '.x=3D' + x + '&' + =
element.name + '.y=3D' + y;
            }
        }
        else if ((element.tagName =3D=3D 'BUTTON') && =
(element.name.length !=3D 0) && (element.type =3D=3D 'submit')) {
            _additionalInput =3D element.name + '=3D' + =
encodeURIComponent(element.value);
        }
    }

    this._onFormSubmit =3D function() {
        if (this.get_inPostBack()) {
                                    if (window.event) {
                window.event.returnValue =3D false;
            }
            return false;
        }

        var continueSubmit =3D true;

        if (_onsubmit) {
            continueSubmit =3D _onsubmit();
        }

        if (!continueSubmit) {
            if (window.event) {
                window.event.returnValue =3D false;
            }
            return false;
        }

        var form =3D _form;
        if (form.action !=3D form._initialAction) {
                                    return true;
        }

                        if (!_postbackSettings.async) {
            return true;
        }

                var formBody =3D new Sys.StringBuilder();
        formBody.append(_scriptManagerID + '=3D' + =
_postbackSettings.panelID + '&');

        var count =3D form.elements.length;
        for (var i =3D 0; i < count; i++) {
            var element =3D form.elements[i];
            var name =3D element.name;
            if ((name =3D=3D null) || (name.length =3D=3D 0)) {
                continue;
            }

            var tagName =3D element.tagName;

            if (tagName =3D=3D 'INPUT') {
                var type =3D element.type;
                if ((type =3D=3D 'text') ||
                    (type =3D=3D 'password') ||
                    (type =3D=3D 'hidden') ||
                    (((type =3D=3D 'checkbox') || (type =3D=3D 'radio')) =
&& element.checked)) {
                    formBody.append(name);
                    formBody.append('=3D');
                    formBody.append(encodeURIComponent(element.value));
                    formBody.append('&');
                }
            }
            else if (tagName =3D=3D 'SELECT') {
                var optionCount =3D element.options.length;
                for (var j =3D 0; j < optionCount; j++) {
                    var option =3D element.options[j];
                    if (option.selected =3D=3D true) {
                        formBody.append(name);
                        formBody.append('=3D');
                        =
formBody.append(encodeURIComponent(option.value));
                        formBody.append('&');
                    }
                }
            }
            else if (tagName =3D=3D 'TEXTAREA') {
                formBody.append(name);
                formBody.append('=3D');
                formBody.append(encodeURIComponent(element.value));
                formBody.append('&');
            }
        }

        if (_additionalInput) {
            formBody.append(_additionalInput);
            _additionalInput =3D null;
        }

        var request =3D new Sys.Net.WebRequest();
        request.set_url(form.action);
        request.get_headers()['delta'] =3D 'true';
        request.get_headers()['Cache-Control'] =3D 'no-cache';
        request.set_timeoutInterval(90000);
        request.set_priority(Sys.Net.WebRequestPriority.High);
        request.completed.add(Function.createDelegate(this, =
this._onFormSubmitCompleted));
        request.timeout.add(Function.createDelegate(this, =
this._onFormSubmitTimeout));
        request.set_body(formBody.toString());

        _request =3D request;
        this.raisePropertyChanged('inPostBack');
        request.invoke();

                if (window.event) {
            window.event.returnValue =3D false;
        }
        return false;
    }

    this._onFormSubmitCompleted =3D function(sender, eventArgs) {
       =20
                                        var isErrorMode =3D true;
        var errorNode;
        var delta;
        if (sender.get_statusCode() =3D=3D 200) {
            delta =3D sender.get_xml();
            if (delta) {
                errorNode =3D =
delta.selectSingleNode("/delta/pageError");
                if (!errorNode) {
                    isErrorMode =3D false;
                }
            }
        }

        if (isErrorMode) {
                        if (errorNode) {
                pageErrorMessage =3D =
errorNode.attributes.getNamedItem('message').nodeValue;
            }
            else {
                pageErrorMessage =3D 'Unknown error';
            }
            this._enterErrorMode(pageErrorMessage);
            return;
        }

        var redirectNode =3D =
delta.selectSingleNode("/delta/pageRedirect");
        if (redirectNode) {
                        var redirectLocation =3D =
redirectNode.attributes.getNamedItem('location').nodeValue;
            window.location =3D redirectLocation;
            return;
        }

debug.assert(delta !=3D null, 'We should have valid XML if we get =
here');

                var deltaPanels =3D =
delta.selectSingleNode("/delta/deltaPanels/text()");
        if (deltaPanels && deltaPanels.length) {
            deltaPanels =3D deltaPanels.nodeValue.split(',');

                        for (var i =3D 0; i < deltaPanels.length; i++) {
                var deltaPanelID =3D deltaPanels[i];

                var deltaPanelRendering =3D =
delta.selectSingleNode('/delta/rendering//panelContent[@id=3D"' + =
deltaPanelID + '"]');
                                deltaPanelRendering =3D =
Sys.UI._unescapeCData(deltaPanelRendering.firstChild.nodeValue);

                this._updatePanel(document.getElementById(deltaPanelID), =
deltaPanelRendering,
                                  Sys.Application.getMarkupContext());
            }
        }

                var hiddenFields =3D =
delta.selectNodes('/delta/hiddenField');
        for (var j =3D 0; j < hiddenFields.length; j++) {
            var id =3D =
hiddenFields[j].attributes.getNamedItem('id').nodeValue;
            var value =3D =
hiddenFields[j].attributes.getNamedItem('value').nodeValue;

            var hiddenFieldElement =3D document.getElementById(id);
            if (!hiddenFieldElement) {
                                hiddenFieldElement =3D =
document.createElement('input');
                hiddenFieldElement.id =3D id;
                hiddenFieldElement.name =3D id;
                hiddenFieldElement.type =3D 'hidden';
                _form.appendChild(hiddenFieldElement);
            }
            hiddenFieldElement.value =3D value;
        }

                var title =3D =
delta.selectSingleNode('/delta/rendering//title/text()');
        if (title) {
            document.title =3D title.nodeValue.trim();
        }
        else {
            document.title =3D '';
        }

                var pageRequestManagerNode =3D =
delta.selectSingleNode("/delta/pageRequestManager");
        if (pageRequestManagerNode) {
            =
this.set_asyncPostbackControlIDs(pageRequestManagerNode.attributes.getNam=
edItem('asyncPostbackControlIDs').nodeValue);
            =
this.set_updatePanelIDs(pageRequestManagerNode.attributes.getNamedItem('u=
pdatePanelIDs').nodeValue);
        }

                var styleSheetMarkup =3D =
delta.selectSingleNode('/delta/rendering/head/style[position()=3Dlast()]'=
);
        if (styleSheetMarkup) {
            this._updateStyleSheet(styleSheetMarkup.text);
        }

                        _xmlScript =3D =
delta.selectSingleNode('/delta/xmlScript/page');

                var scripts =3D =
delta.selectNodes('/delta//script[@type=3D"text/javascript"]');
        if (scripts && scripts.length) {
            this._updateScripts(scripts);
        }
        else {
            this._onFormSubmitCompletedCallback();
        }
    }

    this._onFormSubmitCompletedCallback =3D function() {
        if (_xmlScript) {
            Sys.Application._loadIncremental(_xmlScript);
            _xmlScript =3D null;
        }

        _request =3D null;
        this.raisePropertyChanged('inPostBack');

        _scriptsToLoad =3D null;
        _currentLoadingScript =3D null;
        _additionalInput =3D null;
    }

    this._onFormSubmitTimeout =3D function(sender, eventArgs) {
        _request =3D null;
        this.raisePropertyChanged('inPostBack');
    }

    this._onWindowResize =3D function() {
        var windowWidth =3D document.body.parentNode.clientWidth + "px";
        var windowHeight =3D document.body.parentNode.clientHeight + =
"px";
        _errorModeGrayDiv.style.width =3D windowWidth;
        _errorModeGrayDiv.style.height =3D windowHeight;
        _errorModeTable.style.width =3D windowWidth;
        _errorModeTable.style.height =3D windowHeight;
    }

    this.raisePropertyChanged =3D function(propertyName) {
        this.propertyChanged.invoke(this, new =
Sys.PropertyChangedEventArgs(propertyName));
    }

    function uniqueIDToClientID(uniqueID) {
                return uniqueID.replace(/\$/g, '_');
    }

    this._updatePanel =3D function(updatePanelElement, rendering, =
markupContext) {
        destroyTree(updatePanelElement, markupContext);

                updatePanelElement.innerHTML =3D rendering;
    }

    this._updateScripts =3D function(scripts) {
        var existingScripts =3D document.getElementsByTagName('SCRIPT');

        for (var i =3D existingScripts.length - 1; i >=3D 0; i--) {
            var scriptNode =3D existingScripts[i];
            var scriptSrcAttribute =3D =
scriptNode.attributes.getNamedItem('src');
            var scriptSrc =3D (scriptSrcAttribute) ? =
scriptSrcAttribute.nodeValue : '';
            if (scriptSrc.length) {
                if (scriptSrc.indexOf('/WebResource.axd?') >=3D 0) {
                    var scriptIndexT =3D scriptSrc.indexOf('&t=3D');
                    scriptSrc =3D scriptSrc.substring(0, scriptIndexT);
                }

                if (!_referencedScripts.contains(scriptSrc)) {
                    _referencedScripts.add(scriptSrc);
                }
            }
        }

                                        if (window.__theFormPostData) {
            window.__theFormPostData =3D "";
        }
        if (window.__theFormPostCollection) {
            window.__theFormPostCollection =3D [];
        }
                                                if =
(window.__rootMenuItem) {
            window.__rootMenuItem =3D null;
        }
        if (window.__scrollPanel) {
            window.__scrollPanel =3D null;
        }

                                                                var =
scriptsToLoad =3D [];
        var scriptText =3D '';

        for (var j =3D 0; j < scripts.length; j++) {
            var xmlScriptNode =3D scripts[j];
            var srcAttribute =3D =
xmlScriptNode.attributes.getNamedItem('src');
            var src =3D (srcAttribute) ? srcAttribute.nodeValue : '';

            if (src.length) {
                if (src.indexOf('/WebResource.axd?') >=3D 0) {
                    var indexT =3D src.indexOf('&t=3D');
                    src =3D src.substring(0, indexT);
                }

                if (_referencedScripts.contains(src)) {
                    continue;
                }

                scriptsToLoad.queue(src);
            }
            else {
                var text =3D '';

                if (xmlScriptNode.childNodes.length !=3D 0) {
                    for (var c =3D xmlScriptNode.childNodes.length - 1; =
c >=3D 0; c--) {
                        var nodeType =3D =
xmlScriptNode.childNodes[c].nodeType;
                                                                       =20
                                                                         =
                       if ((nodeType =3D=3D 3) || (nodeType =3D=3D 4) || =
(nodeType =3D=3D 8)) {
                            text +=3D =
xmlScriptNode.childNodes[c].nodeValue;
                        }
                    }
                }
                else {
                    text =3D xmlScriptNode.nodeValue;
                }

                if (text) {
                    if (text.indexOf('function __doPostBack(') >=3D 0) {
                        continue;
                    }

                    scriptText +=3D text;
                }
            }
        }

                scriptsToLoad.queue(Sys.UI._unescapeCData(scriptText));

        if (scriptsToLoad.length !=3D 0) {
            _scriptsToLoad =3D scriptsToLoad;
            _currentLoadingScript =3D null;
            this._loadScript();
        }
        else {
            this._onFormSubmitCompletedCallback();
        }
    }

    this._updateStyleSheet =3D function(cssText) {
        var head =3D document.getElementsByTagName('HEAD')[0];
        var styles =3D document.styleSheets;
        var styleSheet =3D styles[styles.length - 1];

        if (Sys.Runtime.get_hostType() =3D=3D =
Sys.HostType.InternetExplorer) {
            styleSheet.cssText =3D cssText;
        }
        else {
                                   =20
            for (var i =3D styleSheet.cssRules.length - 1; i >=3D 0; =
i--) {
                styleSheet.deleteRule(i);
            }

            var ruleLines =3D cssText.split('}');
            for (var j =3D 0; j < ruleLines.length; j++) {
                var rule =3D ruleLines[j];
                var index =3D rule.indexOf('{');

                var style =3D rule.substr(index + 1).trim();
                if (style.length !=3D 0) {
                    var selector =3D rule.substring(0, index).trim();
                    styleSheet.insertRule(selector + '{' + style + '}', =
styleSheet.cssRules.length);
                }
            }
        }
    }
}

Sys.WebForms._PageRequestManager._id =3D '_PageRequestManager';

Sys.WebForms._PageRequestManager.registerSealedClass('Sys.WebForms._PageR=
equestManager', null, Sys.ITypeDescriptorProvider, =
Sys.INotifyPropertyChanged, Sys.IDisposable);
Sys.TypeDescriptor.addType('script', 'pageRequestManager', =
Sys.WebForms._PageRequestManager);

Sys.WebForms._PageRequestManager.parseFromMarkup =3D function(type, =
node, markupContext) {
    if (!markupContext.get_isGlobal()) {
        throw Error.createError('The PageRequestManager must be a top =
level object.');
    }

        if (!Sys.WebForms.PageRequestManager) {
        Sys.WebForms.PageRequestManager =3D new =
Sys.WebForms._PageRequestManager();
    }

    Sys.MarkupParser.initializeObject(Sys.WebForms.PageRequestManager, =
node, markupContext);

    markupContext.addObject(Sys.WebForms._PageRequestManager._id, =
Sys.WebForms.PageRequestManager);

    return Sys.WebForms.PageRequestManager;
}




Sys.Application =3D new Sys._Application();

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://an.tacoda.net/an/12146/slf.js

// 2007/06/01 09:16:07
var ANV=3D'3.7';
var ANDAS=3D'http://an.tacoda.net/creatives';
var ANDCC=3D'aau';
var ANDSA=3D'a';
var ANDEPC12146;
var ANEU=3D'http://anrtx.tacoda.net/e/e.js?';
var ANID=3D'TID';
var ANME=3D0;
var ANMU=3D'http://anm.tacoda.net/dastat/ping.js?';
var ANP=3D2;
var ANSCE=3D0;
var ANSCU=3D'http://anrtx.tacoda.net/cbd/cbd?';
var ANSEE=3D0;
var ANSID=3D12146;
var ANTCC;
var ANVAD=3D0;
var AMSC=3Dnew Array (ANID);
var AMSDPF;
var AMSLGC=3D0;
var AMSRID=3D'';
var AMSSID=3D'';
var AMSSRID=3D'';
var AMSTEP=3D'tste';
var AMSTES=3D"tte/blank.gif";
var ANDD=3D'';
var ANDNX=3Dnew Array();
var ANAS=3D'http://anad.tacoda.net';
var AN2CCOP=3Dnew Array();
var AN2CCDA=3Dnew Array();
var AN2CCCC=3Dnew Array();
var AN2SAC=3Dnew Array();
var AN2SADA=3Dnew Array();
var AN2SAOP=3Dnew Array();
var ANCC=3D0;
var ANDSAS=3D0;
var ANDPU=3D'http://anrtx.tacoda.net/rtx/r.js?';
var ANOP=3D'http://anrtx.tacoda.net/opt/r.js';
var ANRDF=3D0;
var ANVDT=3D0;
var ANSCC=3D"unescape(document.location.href).toLowerCase()";
var ANSAVN=3D'unescape(ANVSA).toLowerCase()';
var ANTID;
var ANTPUD;
var ANTPTG;
var ANURL=3D0;
var AN2CCDA=3Dnew Array();
var AN2CCOP=3Dnew Array();
var AN2CCCC=3Dnew Array();
var ANCB1=3D0;
var ANCB3=3D0;
var ANCCT;
var ANRD=3D'';
var ANOO=3D0;
var ANXCC=3D'ZZZ';
var AMSK=3Dnew Array();
var AMSN=3D0;
var AMSVL=3Dnew Array();
var ANVDA=3D0;
var ANVSC=3D'';
var ANVSA=3D'';
var ANDSZ=3D2;
var ANVSZ=3DANDSZ;
var ANVAC=3D'a';
var ANADS=3Dnew Array();
ANADS=3D["468x60a","728x90a","300x250a","120x600a","160x600a","468x60a|72=
8x90a","120x600a|160x600a"];
function ANRC(n) {
var cn=3Dn + "=3D";
var dc=3Ddocument.cookie;
if (dc.length > 0) {
for(var b=3Ddc.indexOf(cn); b!=3D-1; b=3Ddc.indexOf(cn,b)) {
if((b!=3D0) && (dc.charAt(b-1) !=3D' ')) {
b++;
continue;
}
b+=3Dcn.length;
var e=3Ddc.indexOf(";",b);
if (e=3D=3D-1) e=3Ddc.length;
return unescape(dc.substring(b,e));
}
}
return null;
}
function ANSC(n,v,ex,p) {
var e=3Ddocument.domain.split (".");
e.reverse();
var m=3De[1] + '.' + e[0];
var cc=3Dn+"=3D"+escape(v);
if (ex) {
var exp=3Dnew Date;
exp.setTime(exp.getTime()+ex);
cc +=3D";expires=3D"+exp.toGMTString();
}
if (p) {
cc +=3D";path=3D"+p;
}
if (m) {
cc +=3D";domain=3D"+m;
}
document.cookie=3Dcc;
}
function ANGRD() {
if (top !=3Dself || ANRD !=3D'') {
return ANRD;
}
var rf=3Dtop.location.href;
var i=3Dj=3D0;
i=3Drf.indexOf('/');
i=3Drf.indexOf('/',++i);
j=3Drf.indexOf('/',++i);
if (j=3D=3D-1) {
j=3Drf.length;
}
r=3Drf.substring(i,j);
return r;
}
function ANTR(s) {
if (!s) {
return '';
}
s=3Ds.replace(/^\s*/g,'');
s=3Ds.replace(/\s*$/g,'');
return s;
}
function ANEH (m,u,l)
{
var s=3DANEU+'m=3D'+escape(m)+'&u=3D'+escape(u)+'&l=3D'+l;
document.write('<SCR'+'IPT SRC=3D"'+s+'" =
LANGUAGE=3D"JavaScript"></SCR'+'IPT>');
return true;
}
function ANPF ()
{
if (ANSCE=3D=3D1)
{
var now=3Dnew Date;
var c=3DANRC ('TSC');
if (c!=3Dnull)
{
ANCB1=3D0;
var f=3Dc.split("|");
var r=3Dq=3Dj=3D0;
for (var i=3D0; i<f.length; i++)
{
j=3Df[i].indexOf('O=3D');
if (j=3D=3D0)
{
ANOO=3Df[i].substring(j+2);
continue;
}
j=3Df[i].indexOf('ST=3D');
if (j=3D=3D0)
{
r=3D1;
var e=3Df[i].substring(j+3);
if ((Date.parse(now)/1000) - e > 86400) {
q=3D1;
f[i]=3D"";
}
continue;
}
j=3Df[i].indexOf('3P=3D');
if (j=3D=3D0)
{
ANCB3=3Df[i].substring(j+3);
if (q=3D=3D1) {
f[i]=3D"";
}
continue;
}
}
if (r=3D=3D0 || q=3D=3D1)
{
c=3Df.join("|");
ANSC("TSC",c,4*365*24*60*60*1000,"/");
ANCBD();
}
}
else
{
ANCBD();
}
}
}
function ANGCC ()
{
var ccc=3DANTCC;
if ((ccc=3D=3Dnull)         ||
!ccc.match (/^\w{3}$/) )
{
ccc=3DANDCC.toUpperCase();
}
return ccc;
}
function ANCBD()
{
document.write ('<SCR' + 'IPT SRC=3D"' + ANSCU + '"></SCR' + 'IPT>');
ANCB1=3DANRC ('TSC')=3D=3Dnull;
}
function TCDA (tc)
{
if ((tc !=3Dnull) && (tc !=3D''))
{
var pa=3Dtc.split (";");
for (var p=3D0; p < pa.length; p++)
{
kv=3Dpa[p].split("=3D");
k=3Dkv[0];
v=3Dkv[1];
if (k!=3Dnull) {
k=3DANTR(k);
}
if (v!=3Dnull) {
v=3DANTR(v);
}
var m=3Dk.toUpperCase();
switch (m) {
case ("SA"):
v=3Dv.toLowerCase();
if (v!=3Dnull&&v!=3D''&&v.match(/[a-z]{1,2}/)) {
ANVAC=3Dv;
}
break;
case ("SZ"):
v=3Dv.toUpperCase();
if (v!=3Dnull&&v!=3D'') {
ANVSZ=3Dv;
}
break;
case ("CC"):
v=3Dv.toUpperCase();
if (v !=3Dnull && v !=3D'')
{
ANTCC=3Dv;
}
break;
case ("SC"):
if (v!=3Dnull&&v!=3D'') {
if (v.length > 256) {v=3Dv.substring(0,256);}
ANVSC=3Dv;
}
break;
case ("RD"):
if (v!=3Dnull&&v!=3D'') {
if (v.length > 128) {v=3Dv.substring(0,128);}
ANRD=3Dv.toLowerCase();
}
break;
case ("DT"):
ANVDT=3D1;
break;
case ("ND"):
ANVDT=3D0;
break;
case ("UD"):
if (v !=3Dnull && v !=3D'')
{
ANTPUD=3Dv;
}
break;
case ("TG"):
if (v !=3Dnull && v !=3D'')
{
ANTPTG=3Dv;
}
break;
case ("DA"):
ANVDA=3D1;
break;
case ("AD"):
ANVAD=3D1;
break;
default:
if (v!=3Dnull&&v!=3D'') {
ANCV(k,v);
}
}
}
}
ANPA();
}
function ANPA()
{
if (((ANP & 2) !=3D0) &&
(ANDEPC12146=3D=3Dnull) &&
(ANVDT=3D=3D1)     &&
(ANOO=3D=3D0)      )
{
ANDEPC12146=3D1;
ANVDT=3D0;
ANGDCC();
ANSDR();
}
if (ANVAD=3D=3D1)
{
ANVAD=3D0;
ANGDSA();
ANAP (ANVAC, ANVSZ);
}
if (ANVDA=3D=3D1)
{
ANDA();
ANVDA=3D0;
}
}
function ANRTXR()
{
if (ANSCE=3D=3D1)
{
var c=3DANRC ('TSC');
if (c=3D=3Dnull)
{
c=3D'T=3D' + ANUT + '|O=3D' + ANOO;
}
else
{
var f=3Dc.split ("|");
var t=3Do=3D0;
for (var i=3D0; i < f.length; i++)
{
if (f[i].indexOf ('T=3D')=3D=3D0)
{
f[i]=3D'T=3D' + ANUT;
t=3D1;
}
if (f[i].indexOf ('O=3D')=3D=3D0)
{
f[i]=3D'O=3D' + ANOO;
o=3D1;
}
}
c=3Df.join ("|");
if (t=3D=3D0)
{
c +=3D'|T=3D' + ANUT;
}
if (o=3D=3D0)
{
c +=3D'|O=3D' + ANOO;
}
}
ANSC ("TSC", c, 4 * 365 * 24 * 60 * 60 * 1000, "/");
}
ANSOCR();
}
function Tacoda_AMS_DDC_addPair(k, v) {
ANCV(k,v);
}
function ANCV(k,v){
AMSK[AMSN]=3Dk;
AMSVL[AMSN]=3Dv;
AMSN++;
}
function ANTCV() {
var TVS=3D"";
for(var i=3D0; i<AMSN; i++) {
if (!AMSK[i]) {
continue;
}
if (!AMSVL[i]) {
AMSVL[i]=3D'';
}
TVS +=3D"&v_" + escape( AMSK[i].toLowerCase() ) + "=3D" + escape( =
AMSVL[i].toLowerCase() ) ;
}
return TVS;
}
function Tacoda_AMS_DDC (tiu, tjv)
{
ANDDC (tiu, tjv);
}
function ANDA() {
var t=3D'';
var e=3DANGRD().split(".");
e.reverse();
t=3De[1] + '.' + e[0];
if (typeof(ANDNX[t])!=3D'undefined') {
t=3DANDNX[t];
}
else {
t=3DANDD;
}
var tiu=3D'http://'+AMSTEP+'.'+t+'/'+AMSTES;
ANDDC(tiu,"0.0");
}
function ANDDC (tiu, tjv) {
if (((ANP & 1) !=3D0) &&
(AMSDPF !=3D1)    )
{
AMSDPF=3D1;
var ccc=3DANGCC();
var =
ta=3D"?"+Math.random()+"&v=3D"+ANV+"&r=3D"+escape(document.referrer)+"&p=3D=
"+ ccc +":"+escape(ANVSC);
if (AMSLGC=3D=3D1) {
ta +=3D"&page=3D"+escape(window.location.href);
}
ta +=3D"&tz=3D"+(new Date()).getTimezoneOffset()+"&s=3D"+ANSID;
if (ANCB3=3D=3D1)
{
ta+=3D"&ckblk3";
}
if (ANCB1=3D=3D1)
{
ta +=3D"&ckblk1";
}
else
{
for(var i=3D0; i<AMSC.length; i++) {
var cl=3DAMSC[i];
var clv=3DANRC(cl);
if(cl !=3Dnull) {
ta +=3D"&c_"+escape(cl)+"=3D"+escape(clv);
}
}
}
ANRID()
ta +=3DANTCV();
document.write('<IMG'+' SRC=3D"' + tiu + ta + '" STYLE=3D"display: none" =
height=3D"1" width=3D"1" border=3D"0">');
}
}
function ANRID() {
if (AMSRID !=3D'' && AMSSID !=3D'') {
if (ANRC (AMSRID) !=3Dnull) {
AMSSRID=3DAMSSID + ANRC (AMSRID);
ANCV ("regid", AMSSRID);
}
}
}
function ANDP (tc)
{
if ((ANP & 2) !=3D0)
{
ANTCC=3Dtc.toUpperCase();
ANVAD=3D0;
ANVDA=3D0;
ANCCF();
}
}
function ANGDCC ()
{
if (ANCC !=3D1)
{
ANTCC=3DANS2C (eval (ANSCC), AN2CCOP, AN2CCDA, AN2CCCC, =
ANDCC).toUpperCase();
}
}
function ANGDSA ()
{
if (ANDSAS !=3D0)
{
ANVAC=3DANS2C (eval (ANSAVN), AN2SAOP, AN2SADA, AN2SAC, ANDSA);
}
}
function ANSDR ()
{
var ccc=3DANGCC();
if ((ccc.indexOf (ANXCC) !=3D0) || (ccc.length !=3DANXCC.length))
{
var ANU=3D"";
var ckblk=3D"";
if (ANURL=3D=3D1)
{
ANU=3D"&page=3D" + escape (window.location.href);
}
if (ANRDF=3D=3D1)
{
ANU +=3D"&r=3D" + ANGRD();
}
if (ANTPTG !=3Dnull)
{
ANU +=3D"&tg=3D" + escape (ANTPTG);
}
if (ANTPUD !=3Dnull)
{
ANU +=3D"&ud=3D" + escape (ANTPUD);
}
if (ANCB1=3D=3D1)
{
ckblk +=3D"&ckblk1";
}
if (ANCB3=3D=3D1)
{
ckblk +=3D"&ckblk3";
}
document.write ('<SCR'+'IPT SRC=3D"' + ANDPU + 'cmd=3D' + ccc + '&si=3D' =
+ ANSID + ANU + '&v=3D' + ANV + ckblk + '&cb=3D' + Math.random() + '" =
LANGUAGE=3D"JavaScript"></SCR' + 'IPT>');
}
ANSME (ccc);
}
function ANSOCR()
{
if ((ANCCT=3D=3Dnull) || (ANCCT < (new Date().getTime() / 1000)))
{
document.write ('<SCR'+'IPT SRC=3D"' + ANOP + '" =
LANGUAGE=3D"JavaScript"></SCR' + 'IPT>');
}
}
function ANOR()
{
}
function ANSME (ccc)
{
if (ANME=3D=3D1)
{
ANME=3D0;
document.write ('<SCR'+'IPT SRC=3D"' + ANMU + ccc + '&si=3D'+ ANSID + =
'&cb=3D' + Math.random() + '" LANGUAGE=3D"JavaScript"></SCR' + 'IPT>');
}
}
function ANS2C (s, o, m, c, d)
{
var ci=3D-1;
if (s)
{
for (i=3D0; (i < o.length) && (ci=3D=3D-1); i++)
{
if (o[i] && m[i] && c[i])
{
switch (o[i])
{
case 'e':
if ((s.length=3D=3Dm[i].length) && (s.indexOf (m[i])=3D=3D0))
{
ci=3Di;
}
break;
case 'c':
if (s.indexOf (m[i]) !=3D-1)
{
ci=3Di;
}
break;
case 'p':
if (s.indexOf(m[i])=3D=3D0)
{
ci=3Di;
}
break;
case 's':
if (s.lastIndexOf (m[i])=3D=3D(s.length - m[i].length))
{
ci=3Di;
}
break;
case 'r':
if (s.search (m[i]) !=3D-1)
{
ci=3Di;
}
}
}
}
}
if (ci=3D=3D-1)
{
return d;
}
else
{
return c[ci];
}
}
function ANAP (ac, sz)
{
var au;
if (sz <=3DANADS.length)
{
ANVAC=3Dac.toLowerCase();
if (ANVAC=3D=3D'zz')
{
au=3D'<IMG SRC=3D"' + ANDAS + '/PSA_' + ANADS[sz-1] + '.gif">';
}
else
{
au=3D'<SCR'+'IPT SRC=3D"'+ANAS+'/cgi-bin/ads/';
if (sz=3D=3D4||sz=3D=3D5||sz=3D=3D7)
{
au+=3D'sk';
}
else
{
au+=3D'ad';
}
if (window.self !=3Dwindow.top)
{
nf=3D'';
}
else
{
nf=3D'NF/';
}
au+=3DANSID+ANVAC+'.cgi/v=3D2.1S/sz=3D'+ANADS[sz-1]+'/NZ/'+Math.round(Mat=
h.random()*100000)+'/'+nf+'RETURN-CODE/JS/" =
LANGUAGE=3D"JavaScript"></SCR'+'IPT>';
}
document.write(au);
}
ANVSZ=3DANDSZ;
}
document.dartTData=3D"";
document.dartTDataValue=3DANRC ("TData");
if (document.dartTDataValue !=3D"" && document.dartTDataValue !=3Dnull)
{
var f=3Ddocument.dartTDataValue.split ("|");
for (var i=3D0; i < f.length; i++)
{
document.dartTData +=3D"kw=3D" + f[i] + ";";
}
}
document.dartTid=3DANRC ("TID");
if (document.dartTid !=3D"" && document.dartTid !=3Dnull)
{
document.dartTid=3D"u=3D" + document.dartTid + ";";
}
try
{
var tc;
var tcdacmd
if (tcdacmd !=3Dnull)
{
tc=3Dtcdacmd + '';
}
else
{
tc=3D'';
}
tcdacmd=3D'';
ANPF();
TCDA (tc);
}
catch (e)
{
ANEH (e,'','');
}

------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js

(function(){=0A=
var =
J=3D{google_ad_channel:"channel",google_ad_host:"host",google_ad_region:"=
region",google_ad_section:"region",google_ad_type:"ad_type",google_adtest=
:"adtest",google_alternate_ad_url:"alternate_ad_url",google_alternate_col=
or:"alt_color",google_bid:"bid",google_city:"gcs",google_color_bg:"color_=
bg",google_color_border:"color_border",google_color_line:"color_line",goo=
gle_color_link:"color_link",google_color_text:"color_text",google_color_u=
rl:"color_url",google_contents:"contents",google_country:"gl",=0A=
google_cust_age:"cust_age",google_cust_ch:"cust_ch",google_cust_gender:"c=
ust_gender",google_cust_id:"cust_id",google_cust_interests:"cust_interest=
s",google_cust_job:"cust_job",google_cust_l:"cust_l",google_cust_lh:"cust=
_lh",google_cust_u_url:"cust_u_url",google_disable_video_autoplay:"disabl=
e_video_autoplay",google_ed:"ed",google_encoding:"oe",google_feedback:"fe=
edback_link",google_flash_version:"flash",google_gl:"gl",google_hints:"hi=
nts",google_kw:"kw",google_kw_type:"kw_type",google_language:"hl",=0A=
google_referrer_url:"ref",google_region:"gr",google_reuse_colors:"reuse_c=
olors",google_safe:"adsafe",google_targeting:"targeting",google_ui_featur=
es:"ui"},E=3D{google_ad_format:"format",google_ad_output:"output",google_=
ad_override:"google_ad_override",google_ad_slot:"slotname",google_analyti=
cs_webpropids:"ga_wpids",google_correlator:"correlator",google_cpa_choice=
:"cpa_choice",google_image_size:"image_size",google_last_modified_time:"l=
mt",google_max_num_ads:"num_ads",google_max_radlink_len:"max_radlink_len"=
,=0A=
google_num_radlinks:"num_radlinks",google_num_radlinks_per_unit:"num_radl=
inks_per_unit",google_only_ads_with_video:"only_ads_with_video",google_pa=
ge_location:"loc",google_page_url:"url",google_rl_dest_url:"rl_dest_url",=
google_rl_filtering:"rl_filtering",google_rl_mode:"rl_mode",google_rt:"rt=
",google_skip:"skip"};function C(b){return J[b]||E[b]||null}var =
R=3Ddocument;function U(){var b=3DR.cookie,a=3DMath.round((new =
Date).getTime()/1000),d=3Db.indexOf("__utma=3D")>-1,f=3Db.indexOf("__utmb=
=3D")>-1,c=3Db.indexOf("__utmc=3D")>=0A=
-1,e,g=3D{};if(d){e=3Db.split("__utma=3D")[1].split(";")[0].split(".");g.=
sid=3D(!f||!c?a:e[4])+"";g.vid=3De[1]+"."+e[2];g.from_cookie=3Dtrue}else{=
g.sid=3Dwindow&&window.gaGlobal&&window.gaGlobal.sid?window.gaGlobal.sid:=
a+"";g.vid=3Dwindow&&window.gaGlobal&&window.gaGlobal.vid?window.gaGlobal=
.vid:Math.round(Math.random()*2147483647)+"."+a;g.from_cookie=3Dfalse}g.h=
id=3Dwindow&&window.gaGlobal&&window.gaGlobal.hid?window.gaGlobal.hid:Mat=
h.round(Math.random()*2147483647);window.gaGlobal=3Dg;return =
g}(function(){function b(){}=0A=
b.prototype.l=3Dfunction(f){var c=3Df.indexOf("#")+1;return =
c?f.substr(c):""};b.prototype.n=3Dfunction(f){return/[&<>\"]/.test(f)?f.r=
eplace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\=
"/g,"&quot;"):f};b.prototype.b=3Dfunction(f){var c=3D"<iframe";for(var e =
in f){c+=3D" "+e+'=3D"'+this.n(f[e])+'"'}return =
c+"></iframe>"};b.prototype.m=3Dfunction(f,c){try{return =
f.frames[c]}catch(e){return null}};b.prototype.e=3Dfunction(f){var =
c=3Ddocument.createElement("iframe");for(var e in f){c.setAttribute(e,=0A=
f[e])}return c};b.prototype.i=3Dfunction(f,c){var =
e=3Dthis;setTimeout(function(){document.body.appendChild(e.e({id:f,name:f=
,src:c,width:0,height:0,frameBorder:0}))},0)};b.prototype.r=3Dfunction(f,=
c){var =
e=3Dthis;document.write(e.b({id:f,name:f,src:c,width:0,height:0,frameBord=
er:0}))};b.prototype.g=3Dfunction(f,c){var =
e=3D[],g=3Df.length,l=3D0;while(l<g){var =
j=3Df.substr(l,c),k=3Dj.length;if(l+k<g){for(var =
i=3D1;i<3;++i){if(j.charAt(k-i)=3D=3D"%"){j=3Dj.substr(0,k-=3Di)}}}e.push=
(j);l+=3Dk}return e};b.prototype.a=3Dfunction(f,c,e){if(!window[f]){var =
g=3D=0A=
window[f]=3Dnew c;for(var =
l=3D0;l<e.length;++l){g[e[l][0]]=3De[l][1]}}};var =
a=3Db.prototype,d=3D[["getHash",a.l],["htmlEscape",a.n],["makeIframeTag",=
a.b],["getIframe",a.m],["makeIframeNode",a.e],["appendHiddenIframe",a.i],=
["writeHiddenIframe",a.r],["splitURIComponent",a.g],["exportSingleton",a.=
a],["MAX_URL_LENGTH",4095],["IDI_DEFAULT_POLLING_INTERVAL",1000]];b.proto=
type.a("IDICommon",b,d)})();(function(){function b(c,e){for(var g in =
e){c[g]=3De[g]}}function a(){var =
c=3Dthis;c.s=3Dwindow.location.href.replace(/([^:\/])\/.*$/,=0A=
"$1/robots.txt");c.t=3D"";c.k=3D{};c.c=3D{};c.f=3D{};c.u=3D{};c.o=3D{}}a.=
prototype.w=3Dfunction(c,e){var g=3Dthis,l=3Dg.c[c];if(isNaN(l)){throw =
new Error("Invalid module id");}else{var =
j=3Dg.d(g.u[c]),k=3DencodeURIComponent(e)+"$",i=3DIDICommon.MAX_URL_LENGT=
H-1-j.length,p=3DIDICommon.g(k,i),n=3Dp.length;for(var =
q=3D0;q<n;++q){IDICommon.i(c+"_"+(l+q),j+"#"+p[q])}g.c[c]+=3Dn}};a.protot=
ype.p=3Dfunction(c,e,g){var =
l=3Dthis;l.h(c);l.o[c]=3Dwindow.setInterval(function(){l.v(c,e)},typeof =
g=3D=3D"object"&&g.pollingInterval||IDICommon.IDI_DEFAULT_POLLING_INTERVA=
L)};=0A=
a.prototype.h=3Dfunction(c){var =
e=3Dthis;window.clearInterval(e.o[c]);e.o[c]=3D0};a.prototype.x=3Dfunctio=
n(c){this.s=3Dc};a.prototype.q=3Dfunction(c){this.t=3Dc};a.prototype.d=3D=
function(c){return =
this.t||c.replace(/([^:\/]\/).*$/,"$1ig/idi_relay")};a.prototype.v=3Dfunc=
tion(c,e){var g=3Dthis,l=3Dwindow.frames[c];if(l){var =
j;while(j=3DIDICommon.m(l,c+"_"+g.k[c])){try{if(j.location.href=3D=3D"abo=
ut:blank"){break}}catch(k){break}g.f[c]+=3DIDICommon.l(j.location.href);+=
+g.k[c]}var i=3Dg.f[c].split("$"),p=3Di.length-1;if(p>0){g.f[c]=3Di[p];=0A=
for(var =
n=3D0;n<p;++n){e(decodeURIComponent(i[n]),c)}}}};a.prototype.j=3Dfunction=
(c,e,g,l,j){var =
k=3Dthis,i=3D{frameBorder:0,scrolling:"no"},p,n,q,z,s;if(typeof =
j=3D=3D"object"){p=3Dj.iframeAttrs;n=3Dj.callback;q=3Dj.userPrefs;z=3Dj.p=
ollingInterval;s=3Dj.parentDivId}if(typeof =
p=3D=3D"object"){b(i,p)}b(i,{id:e,name:e,src:c,width:g,height:l});k.k[e]=3D=
0;k.c[e]=3D0;k.f[e]=3D"";k.u[e]=3Dc;var t=3D[];if(typeof =
q=3D=3D"object"){for(var r in =
q){t.push(encodeURIComponent(r)+"=3D"+encodeURIComponent(q[r]))}}if(typeo=
f n=3D=3D"function"){t.push("idi_hr=3D"+=0A=
encodeURIComponent(k.s));k.p(e,n,j)}if(t.length){var =
u=3Dt.join("&");if(i.src.length+1+u.length>IDICommon.MAX_URL_LENGTH){u+=3D=
"$";var =
F=3Dk.d(c),O=3DIDICommon.MAX_URL_LENGTH-1-F.length,G=3DIDICommon.g(u,O),H=
=3DG.length;for(var r=3D0;r<H;++r){var =
B=3De+"_"+r,I=3DF+"#"+G[r];if(s){var =
y=3Ddocument.getElementById(s);y.innerHTML=3Dy.innerHTML+k.e({id:B,name:B=
,src:I,width:0,height:0,frameBorder:0})}else{IDICommon.r(B,I)}}k.c[e]+=3D=
H;u=3D""}i.src+=3D"#"+u}if(s){var =
y=3Ddocument.getElementById(s);y.innerHTML=3Dy.innerHTML+IDICommon.b(i)}e=
lse{document.write(IDICommon.b(i))}};=0A=
var =
d=3Da.prototype,f=3D[["setHostRelayUrl",d.x],["setModuleRelayUrl",d.q],["=
getModuleRelayUrl",d.d],["createModule",d.j],["postMessageToModule",d.w],=
["registerListener",d.p],["unregisterListener",d.h]];IDICommon.a("IDIHost=
",a,f)})();function w(b){return b!=3Dnull?'"'+b+'"':'""'}function =
S(b){if(typeof encodeURIComponent=3D=3D"function"){return =
encodeURIComponent(b)}else{return escape(b)}}function =
m(b,a){if(b&&a){window.google_ad_url+=3D"&"+b+"=3D"+a}}function h(b){var =
a=3Dwindow,d=3DC(b),f=3Da[b];m(d,f)}function v(b,=0A=
a){if(a){m(b,S(a))}}function o(b){var =
a=3Dwindow,d=3DC(b),f=3Da[b];v(d,f)}function x(b,a){var =
d=3Dwindow,f=3DC(b),c=3Dd[b];if(f&&c&&typeof =
c=3D=3D"object"){c=3Dc[a%c.length]}m(f,c)}function V(b,a){var =
d=3Db.screen,f=3Dnavigator.javaEnabled(),c=3D-a.getTimezoneOffset();if(d)=
{m("u_h",d.height);m("u_w",d.width);m("u_ah",d.availHeight);m("u_aw",d.av=
ailWidth);m("u_cd",d.colorDepth)}m("u_tz",c);m("u_his",history.length);m(=
"u_java",f);if(navigator.plugins){m("u_nplug",navigator.plugins.length)}i=
f(navigator.mimeTypes){m("u_nmime",=0A=
navigator.mimeTypes.length)}}function =
D(b){if(b){b=3Db.toLowerCase();if(b.substring(0,3)!=3D"ca-"){b=3D"ca-"+b}=
}return b}function ba(b,a){var =
d=3Ddocument.getElementById(b);d.style.height=3Da+"px"}function =
W(b,a,d){window.clearTimeout(d);var =
f=3D/^google_resize_flash_ad_idi\((\d+)\)/,c=3Db.match(f);if(c){ba(a,c[1]=
)}}function =
ca(b,a,d,f){d=3Dd.substring(0,2000);d=3Dd.replace(/%\w?$/,"");if(b.google=
_ad_output=3D=3D"js"&&(b.google_ad_request_done||b.google_radlink_request=
_done)){a.write('<script language=3D"JavaScript1.1" src=3D'+=0A=
w(d)+"><\/script>")}else =
if(b.google_ad_output=3D=3D"html"){if(b.name!=3D"google_ads_frame"){if(f!=
=3Dnull){a.write('<div =
id=3D"'+f+'">')}if(X(b.google_ad_output,b.google_ad_client)){IDIHost.q("h=
ttp://pagead2.googlesyndication.com/pagead/idi_relay.html");var =
c=3D"google_inline_div"+b.google_num_ad_slots,e=3D"<div id=3D"+w(c)+' =
style=3D"position:relative;"></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(e);var =
g=3D"google_frame"+b.google_num_ad_slots,=0A=
l=3Db.setTimeout(function(){IDIHost.h(g)},5000);IDIHost.j(d,g,b.google_ad=
_width,b.google_ad_height,{callback:function(j,k){W(j,k,l)},pollingInterv=
al:500,iframeAttrs:{style:"position: =
absolute;left:0px",marginWidth:"0",marginHeight:"0",vspace:"0",hspace:"0"=
,allowTransparency:"true"},parentDivId:c})}else{a.write('<iframe =
name=3D"google_ads_frame" width=3D'+w(b.google_ad_width)+" =
height=3D"+w(b.google_ad_height)+" =
frameborder=3D"+w(b.google_ad_frameborder)+" src=3D"+w(d)+' =
marginwidth=3D"0" marginheight=3D"0" vspace=3D"0" hspace=3D"0" =
allowtransparency=3D"true" scrolling=3D"no">');=0A=
a.write("</iframe>")}if(f!=3Dnull){a.write("</div>")}}}else =
if(b.google_ad_output=3D=3D"textlink"){a.write('<script =
language=3D"JavaScript1.1" src=3D'+w(d)+"><\/script>")}}function =
aa(b){for(var a in J){b[a]=3Dnull}for(var a in E){b[a]=3Dnull}}function =
P(){var b=3Dnull,a=3Dwindow,d=3Ddocument,f=3Dnew =
Date,c=3Df.getTime(),e=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(D(a.google_ad_client));a.google_ad_region=3D=
"_google_cpa_region_";=0A=
h("google_cpa_choice");if(typeof =
d.characterSet!=3D"undefined"){v("oe",d.characterSet)}else if(typeof =
d.charset!=3D"undefined"){v("oe",d.charset)}}else{a.google_ad_url=3D"http=
://pagead2.googlesyndication.com/pagead/ads?";a.google_ad_url+=3D"client=3D=
"+escape(D(a.google_ad_client))}h("google_ad_host");var =
g=3Da.google_num_slots_by_client,l=3Da.google_num_slots_by_channel,j=3Da.=
google_prev_ad_formats_by_region,k=3Da.google_prev_ad_slotnames_by_region=
;if(a.google_ad_region=3D=3Db&&a.google_ad_section!=3Db){a.google_ad_regi=
on=3D=0A=
a.google_ad_section}var =
i=3Da.google_ad_region=3D=3Db?"":a.google_ad_region,p=3Dfalse;if(e){p=3De=
.indexOf("_0ads")>0}else =
if(a.google_ad_output!=3D"html"&&a.google_num_radlinks>0){p=3Dtrue}if(p){=
if(a.google_num_0ad_slots){a.google_num_0ad_slots=3Da.google_num_0ad_slot=
s+1}else{a.google_num_0ad_slots=3D1}if(a.google_num_0ad_slots>3){return =
false}}else =
if(a.google_cpa_choice=3D=3Db){if(a.google_num_ad_slots){a.google_num_ad_=
slots=3Da.google_num_ad_slots+1}else{a.google_num_ad_slots=3D1}if(a.googl=
e_num_slots_to_rotate){j[i]=3Db;=0A=
k[i]=3Db;if(a.google_num_slot_to_show=3D=3Db){a.google_num_slot_to_show=3D=
c%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&&i=3D=3D""){return =
false}}m("dt",f.getTime());h("google_language");if(a.google_country){h("g=
oogle_country")}else{h("google_gl")}h("google_region");o("google_city");o=
("google_hints");h("google_safe");h("google_encoding");h("google_last_mod=
ified_time");o("google_alternate_ad_url");h("google_alternate_color");=0A=
h("google_skip");h("google_targeting");var =
n=3Da.google_ad_client;if(!g[n]){g[n]=3D1;g.length+=3D1}else{g[n]+=3D1}if=
(j[i]){v("prev_fmts",j[i].toLowerCase());if(g.length>1){m("slot",g[n])}}i=
f(k[i]){v("prev_slotnames",k[i].toLowerCase())}if(e&&!a.google_ad_slot){v=
("format",e.toLowerCase());if(j[i]){j[i]=3Dj[i]+","+e}else{j[i]=3De}}if(a=
.google_ad_slot){if(k[i]){k[i]=3Dk[i]+","+a.google_ad_slot}else{k[i]=3Da.=
google_ad_slot}}h("google_max_num_ads");m("output",a.google_ad_output);h(=
"google_adtest");h("google_ad_slot");=0A=
o("google_correlator");if(a.google_ad_channel){o("google_ad_channel");var=
 q=3D"",z=3Da.google_ad_channel.split("+");for(var =
s=3D0;s<z.length;s++){var =
t=3Dz[s];if(!l[t]){l[t]=3D1}else{q+=3Dt+"+"}}v("pv_ch",q)}o("google_page_=
url");x("google_color_bg",c);x("google_color_text",c);x("google_color_lin=
k",c);x("google_color_url",c);x("google_color_border",c);x("google_color_=
line",c);if(a.google_reuse_colors)m("reuse_colors",1);else =
m("reuse_colors",0);h("google_kw_type");o("google_kw");o("google_contents=
");h("google_num_radlinks");=0A=
h("google_max_radlink_len");h("google_rl_filtering");h("google_rl_mode");=
h("google_rt");o("google_rl_dest_url");h("google_num_radlinks_per_unit");=
h("google_ad_type");h("google_image_size");h("google_ad_region");h("googl=
e_feedback");o("google_referrer_url");o("google_page_location");h("google=
_bid");h("google_cust_age");h("google_cust_gender");h("google_cust_intere=
sts");h("google_cust_id");h("google_cust_job");h("google_cust_u_url");h("=
google_cust_l");h("google_cust_lh");h("google_cust_ch");h("google_ed");=0A=
o("google_ui_features");o("google_only_ads_with_video");o("google_disable=
_video_autoplay");if(L(a,d)&&d.body){var =
r=3Dd.body.scrollHeight,u=3Dd.body.clientHeight;if(u&&r){v("cc",Math.roun=
d(u*100/r))}}U();m("ga_vid",a.gaGlobal.vid);m("ga_sid",a.gaGlobal.sid);m(=
"ga_hid",a.gaGlobal.hid);m("ga_fc",a.gaGlobal.from_cookie);o("google_anal=
ytics_webpropids");h("google_ad_override");h("google_flash_version");V(a,=
f);return true}function M(){var =
b=3Dwindow,a=3Ddocument;if(!P()){return}ca(b,a,b.google_ad_url,null);aa(b=
)}=0A=
function T(b,a,d){M();return true}function L(b,a){return =
b.top.location=3D=3Da.location}function K(b,a){var =
d=3Da.documentElement;if(L(b,a))return =
false;if(b.google_ad_width&&b.google_ad_height){var =
f=3D1,c=3D1;if(b.innerHeight){f=3Db.innerWidth;c=3Db.innerHeight}else =
if(d&&d.clientHeight){f=3Dd.clientWidth;c=3Dd.clientHeight}else =
if(a.body){f=3Da.body.clientWidth;c=3Da.body.clientHeight}if(c>2*b.google=
_ad_height||f>2*b.google_ad_width){return false}}return true}function =
Y(b){var a=3Dwindow,d=3Ddocument,f=3Dd.location,c=3Dd.referrer,=0A=
e=3Dnull,g=3Da.onerror;a.onerror=3Db;if(a.google_ad_frameborder=3D=3De){a=
.google_ad_frameborder=3D0}if(a.google_ad_output=3D=3De){a.google_ad_outp=
ut=3D"html"}if(a.google_ad_format=3D=3De&&a.google_ad_output=3D=3D"html")=
{a.google_ad_format=3Da.google_ad_width+"x"+a.google_ad_height}if(a.googl=
e_page_url=3D=3De){a.google_page_url=3Dc;if(!K(a,d)){a.google_page_url=3D=
f;a.google_last_modified_time=3DDate.parse(d.lastModified)/1000;a.google_=
referrer_url=3Dc}}else{a.google_page_location=3Dc;if(!K(a,d)){a.google_pa=
ge_location=3Df}}if(a.google_num_slots_by_channel=3D=3D=0A=
e){a.google_num_slots_by_channel=3D[]}if(a.google_num_slots_by_client=3D=3D=
e){a.google_num_slots_by_client=3D[]}if(a.google_prev_ad_formats_by_regio=
n=3D=3De){a.google_prev_ad_formats_by_region=3D[]}if(a.google_prev_ad_slo=
tnames_by_region=3D=3De){a.google_prev_ad_slotnames_by_region=3D[]}if(a.g=
oogle_correlator=3D=3De){a.google_correlator=3D(new =
Date).getTime()}if(a.google_adslot_loaded=3D=3De){a.google_adslot_loaded=3D=
{}}if(a.google_adContentsBySlot=3D=3De){a.google_adContentsBySlot=3D{}}if=
(a.google_flash_version=3D=3De){a.google_flash_version=3D=0A=
Q().toString()}a.onerror=3Dg}function N(b){if(b in A){return A[b]}return =
A[b]=3Dnavigator.userAgent.toLowerCase().indexOf(b)!=3D-1}var =
A=3D{};function X(b,a){if(b!=3D"html"){return false}var =
d=3D{};d["ca-pub-7027491298716603"]=3Dtrue;d["ca-pub-8344185808443527"]=3D=
true;return d[D(a)]!=3Dnull}function $(b){var =
a=3D{},d=3Db.split("?"),f=3Dd[d.length-1].split("&");for(var =
c=3D0;c<f.length;c++){var =
e=3Df[c].split("=3D");if(e[0]){try{a[e[0].toLowerCase()]=3De.length>1?(wi=
ndow.decodeURIComponent?decodeURIComponent(e[1].replace(/\+/g,=0A=
" ")):unescape(e[1])):""}catch(g){}}}return a}function Z(){var =
b=3Dwindow,a=3D$(document.URL);if(a.google_ad_override){b.google_ad_overr=
ide=3Da.google_ad_override}}function Q(){var =
b=3D0;if(navigator.plugins&&navigator.mimeTypes.length){var =
a=3Dnavigator.plugins["Shockwave =
Flash"];if(a&&a.description){b=3Da.description.replace(/([a-zA-Z]|\s)+/,"=
").split(".")[0]}}else =
if(navigator.userAgent&&navigator.userAgent.indexOf("Windows =
CE")>=3D0){b=3D3;var d=3D1;while(d){try{d=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+=0A=
(b+1));b++}catch(f){d=3Dnull}}}else if(N("msie")&&!window.opera){try{var =
d=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(f){try{var =
d=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");b=3D6;d.AllowScriptAcces=
s=3D"always"}catch(f){if(b=3D=3D6){return b}}try{d=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(f){}}if(d!=3Dnull){b=
=3Dd.GetVariable("$version").split(" ")[1].split(",")[0]}}return =
b}Z();Y(T);M();=0A=
})()
------=_NextPart_000_0021_01C83536.ADA18910
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: http://www.highbeam.com/javascript/SiteCatalyst_s_code.js

/* SiteCatalyst code version: H.1.
Copyright 1997-2005 Omniture, Inc. More info available at
http://www.omniture.com */
/* Specify the Report Suite ID(s) to track here */

var s=s_gi(s_account)
/************************** CONFIG SECTION **************************/
/* You may add or alter any code config here. */
/* E-commerce Config */
s.currencyCode="USD"
/* Link Tracking Config */
s.trackDownloadLinks=true
s.trackExternalLinks=true
s.trackInlineStats=true
s.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls"
//s.linkInternalFilters="javascript:,."
s.linkLeaveQueryString=false
s.linkTrackVars="channel"
s.linkTrackEvents="None"

/* WARNING: Changing the visitor namespace will cause drastic changes
to how your visitor data is collected.  Changes should only be made
when instructed to do so by your account manager.*/
s.visitorNamespace="highbeam"


/* Plugin Config */
s.usePlugins=true
function s_doPlugins(s) {
	/* Add calls to plugins here */
}
s.doPlugins=s_doPlugins


/************************** PLUGINS SECTION *************************/
/* You may insert any plugins you wish to use here.                 */

/*
 * Plugin: getQueryParam 1.3 - Return query string parameter values
 */
s.getQueryParam=new Function("qp","d",""
+"var s=this,v='',i,t;d=d?d:'';while(qp){i=qp.indexOf(',');i=i<0?qp.l"
+"ength:i;t=s.gcgi(qp.substring(0,i));if(t)v+=v?d+t:t;qp=qp.substring"
+"(i==qp.length?i:i+1)}return v");
s.gcgi=new Function("k",""
+"var v='',s=this;if(k&&s.wd.location.search){var q=s.wd.location.sea"
+"rch.toLowerCase(),qq=q.indexOf('?');q=qq<0?q:q.substring(qq+1);v=s."
+"pt(q,'&','cgif',k.toLowerCase())}return v");
s.cgif=new Function("t","k",""
+"if(t){var s=this,i=t.indexOf('='),sk=i<0?t:t.substring(0,i),sv=i<0?"
+"'True':t.substring(i+1);if(sk.toLowerCase()==k)return s.epa(sv)}ret"
+"urn ''");



/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_objectID;function s_c2fe(f){var x='',s=0,e,a,b,c;while(1){e=
f.indexOf('"',s);b=f.indexOf('\\',s);c=f.indexOf("\n",s);if(e<0||(b>=
0&&b<e))e=b;if(e<0||(c>=0&&c<e))e=c;if(e>=0){x+=(e>s?f.substring(s,e):
'')+(e==c?'\\n':'\\'+f.substring(e,e+1));s=e+1}else return x
+f.substring(s)}return f}function s_c2fa(f){var s=f.indexOf('(')+1,e=
f.indexOf(')'),a='',c;while(s>=0&&s<e){c=f.substring(s,s+1);if(c==',')
a+='","';else if(("\n\r\t ").indexOf(c)<0)a+=c;s++}return a?'"'+a+'"':
a}function s_c2f(cc){cc=''+cc;var fc='var f=new Function(',s=
cc.indexOf(';',cc.indexOf('{')),e=cc.lastIndexOf('}'),o,a,d,q,c,f,h,x
fc+=s_c2fa(cc)+',"var s=new Object;';c=cc.substring(s+1,e);s=
c.indexOf('function');while(s>=0){d=1;q='';x=0;f=c.substring(s);a=
s_c2fa(f);e=o=c.indexOf('{',s);e++;while(d>0){h=c.substring(e,e+1);if(
q){if(h==q&&!x)q='';if(h=='\\')x=x?0:1;else x=0}else{if(h=='"'||h=="'"
)q=h;if(h=='{')d++;if(h=='}')d--}if(d>0)e++}c=c.substring(0,s)
+'new Function('+(a?a+',':'')+'"'+s_c2fe(c.substring(o+1,e))+'")'
+c.substring(e+1);s=c.indexOf('function')}fc+=s_c2fe(c)+';return s");'
eval(fc);return f}function s_gi(un,pg,ss){var c="function s_c(un,pg,s"
+"s){var s=this;s.wd=window;if(!s.wd.s_c_in){s.wd.s_c_il=new Array;s."
+"wd.s_c_in=0;}s._il=s.wd.s_c_il;s._in=s.wd.s_c_in;s._il[s._in]=s;s.w"
+"d.s_c_in++;s.m=function(m){return (''+m).indexOf('{')<0};s.fl=funct"
+"ion(x,l){return x?(''+x).substring(0,l):x};s.co=function(o){if(!o)r"
+"eturn o;var n=new Object,x;for(x in o)if(x.indexOf('select')<0&&x.i"
+"ndexOf('filter')<0)n[x]=o[x];return n};s.num=function(x){x=''+x;for"
+"(var p=0;p<x.length;p++)if(('0123456789').indexOf(x.substring(p,p+1"
+"))<0)return 0;return 1};s.rep=function(x,o,n){var i=x.indexOf(o),l="
+"n.length>0?n.length:1;while(x&&i>=0){x=x.substring(0,i)+n+x.substri"
+"ng(i+o.length);i=x.indexOf(o,i+l)}return x};s.ape=function(x){var s"
+"=this,i;x=x?s.rep(escape(''+x),'+','%2B'):x;if(x&&s.charSet&&s.em=="
+"1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=x.indexOf('%');while(i>="
+"0){i++;if(('89ABCDEFabcdef').indexOf(x.substring(i,i+1))>=0)return "
+"x.substring(0,i)+'u00'+x.substring(i);i=x.indexOf('%',i)}}return x}"
+";s.epa=function(x){var s=this;return x?unescape(s.rep(''+x,'+',' ')"
+"):x};s.pt=function(x,d,f,a){var s=this,t=x,z=0,y,r;while(t){y=t.ind"
+"exOf(d);y=y<0?t.length:y;t=t.substring(0,y);r=s.m(f)?s[f](t,a):f(t,"
+"a);if(r)return r;z+=y+d.length;t=x.substring(z,x.length);t=z<x.leng"
+"th?t:''}return ''};s.isf=function(t,a){var c=a.indexOf(':');if(c>=0"
+")a=a.substring(0,c);if(t.substring(0,2)=='s_')t=t.substring(2);retu"
+"rn (t!=''&&t==a)};s.fsf=function(t,a){var s=this;if(s.pt(a,',','isf"
+"',t))s.fsg+=(s.fsg!=''?',':'')+t;return 0};s.fs=function(x,f){var s"
+"=this;s.fsg='';s.pt(x,',','fsf',f);return s.fsg};s.c_d='';s.c_gdf=f"
+"unction(t,a){var s=this;if(!s.num(t))return 1;return 0};s.c_gd=func"
+"tion(){var s=this,d=s.wd.location.hostname,n=s.cookieDomainPeriods,"
+"p;if(d&&!s.c_d){n=n?parseInt(n):2;n=n>2?n:2;p=d.lastIndexOf('.');wh"
+"ile(p>=0&&n>1){p=d.lastIndexOf('.',p-1);n--}s.c_d=p>0&&s.pt(d,'.','"
+"c_gdf',0)?d.substring(p):''}return s.c_d};s.c_r=function(k){var s=t"
+"his;k=s.ape(k);var c=' '+s.d.cookie,i=c.indexOf(' '+k+'='),e=i<0?i:"
+"c.indexOf(';',i),v=i<0?'':s.epa(c.substring(i+2+k.length,e<0?c.leng"
+"th:e));return v!='[[B]]'?v:''};s.c_w=function(k,v,e){var s=this,d=s"
+".c_gd(),l=s.cookieLifetime,t;v=''+v;l=l?(''+l).toUpperCase():'';if("
+"e&&l!='SESSION'&&l!='NONE'){t=(v!=''?parseInt(l?l:0):-60);if(t){e=n"
+"ew Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!='NONE'){s.d.cooki"
+"e=k+'='+s.ape(v!=''?v:'[[B]]')+'; path=/;'+(e&&l!='SESSION'?' expir"
+"es='+e.toGMTString()+';':'')+(d?' domain='+d+';':'');return s.c_r(k"
+")==v}return 0};s.eh=function(o,e,r,f){var s=this,b='s_'+e+'_'+s._in"
+",n=-1,l,i,x;if(!s.ehl)s.ehl=new Array;l=s.ehl;for(i=0;i<l.length&&n"
+"<0;i++){if(l[i].o==o&&l[i].e==e)n=i}if(n<0){n=i;l[n]=new Object}x=l"
+"[n];x.o=o;x.e=e;f=r?x.b:f;if(r||f){x.b=r?0:o[e];x.o[e]=f}if(x.b){x."
+"o[b]=x.b;return b}return 0};s.cet=function(f,a,t,o,b){var s=this,r;"
+"if(s.isie&&a.apv>=5)eval('try{r=s.m(f)?s[f](a):f(a)}catch(e){r=s.m("
+"t)?s[t](e):t(e)}');else{if(s.ismac&