From: <Saved by Windows Internet Explorer 7>
Subject: Dogs hunt for eggs, new homes - Variety
Date: Sat, 29 Mar 2008 07:16:54 -0400
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01C8916C.DDD66550"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.www.redandblack.com/media/storage/paper871/news/2003/04/17/Variety/Dogs-Hunt.For.Eggs.New.Homes-2579138.shtml

=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><TITLE>Dogs hunt for =
eggs, new homes - Variety</TITLE>
<SCRIPT language=3DJavascript>=0A=
				var story_id =3D 2579138;=0A=
				</SCRIPT>

<META content=3D"Dogs hunt for eggs, new homes, " name=3Ddescription>
<META content=3D"Dogs hunt for eggs, new homes, " name=3Dkeywords>
<SCRIPT language=3DJAVASCRIPT>=0A=
				var sectionname =3D 'Variety';=0A=
				var sectioncategory =3D '';=0A=
				var isectioncategoryid =3D ',';=0A=
				</SCRIPT>

<META http-equiv=3Dcontent-type content=3D"text/html; charset=3Dutf-8">
<SCRIPT type=3Dtext/javascript>=0A=
/* <![CDATA[ */=0A=
var admanagerIsAvailable=3D0;=0A=
var clientBannersAvailable=3D0;=0A=
var bAdmanagerClientAlive=3D0;=0A=
var bAdmanagerNetworkAlive=3D0;=0A=
var bAdVariantBanners =3D 0;=0A=
var origserver =3D  window.document.location.host.toString();=0A=
if (typeof sectioncategory=3D=3D"undefined"){=0A=
var sectioncategory =3D '';}=0A=
if (typeof story_id=3D=3D"undefined"){=0A=
var story_id =3D '';=0A=
}=0A=
/* ]]> */=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
/* <![CDATA[ */=0A=
document.write('<SCR'+'IPT =
SRC=3D'+'http://media.collegepublisher.com/media/scripts/commonFunctions.=
js?2>'+'</SCR'+'IPT>');=0A=
/* ]]> */=0A=
</SCRIPT>

<SCRIPT=20
src=3D"http://media.collegepublisher.com/media/scripts/coda/mtvi_reportin=
g.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
//<![CDATA[=0A=
	function getPageName(){=0A=
		var defaultPageName =3D "index.cfm"=0A=
		return (location.pathname=3D=3D"" || =
location.pathname=3D=3D"/")?"/"+defaultPageName:location.pathname;=0A=
 	}=0A=
	function getHierarchy(argPageName){=0A=
		return =
(argPageName.charAt(0)=3D=3D"/")?argPageName.substring(1):argPageName;=0A=
	}=0A=
	var qString =3D com.mtvi.util.queryStringToHash(location.search);=0A=
	var refsource =3D =
(com.mtvi.util.isDefined(qString))?qString["refsource"]:"";=0A=
	var reffeature =3D =
(com.mtvi.util.isDefined(qString))?qString["reffeature"]:"";=0A=
	if(refsource !=3D null && refsource.length > 0) {=0A=
		SetCookie('refsourcekey', refsource);=0A=
	}=0A=
	// Reporting Account Config=0A=
	com.mtvi.reporting.Account=3D{=0A=
		name:"viay2m",=0A=
		filters: "javascript:,y2m.com"=0A=
	};=0A=
	var dispatcher=3Dcom.mtvi.reporting.Dispatcher;=0A=
	dispatcher.setAttribute('pageName',getPageName());=0A=
	dispatcher.setAttribute('hier1',getHierarchy(getPageName())); =0A=
	dispatcher.setAttribute('prop1','splitPage');=0A=
	dispatcher.setAttribute('prop2',sectioncategory);=0A=
	=
dispatcher.setAttribute('prop3','event=3DsplitPage&objectDisplayMode=3D2'=
);=0A=
	dispatcher.setAttribute('prop4',refsource);=0A=
	=
dispatcher.setAttribute('prop5',window.document.location.pathname.toStrin=
g() + window.document.location.search.toString());=0A=
	dispatcher.setAttribute('prop6',origserver);=0A=
	dispatcher.setAttribute('prop7','The Red and Black');=0A=
	dispatcher.setAttribute('prop8','www.redandblack.com');=0A=
	dispatcher.setAttribute('prop9',story_id);=0A=
	dispatcher.setAttribute('prop10','871');=0A=
	dispatcher.setAttribute('prop11','home');=0A=
	dispatcher.setAttribute('prop12',GetCookie('refsourcekey'));=0A=
	dispatcher.setAttribute('prop13',reffeature);=0A=
	dispatcher.sendCall();=0A=
	//]]>=0A=
</SCRIPT>
<LINK media=3Dscreen =
href=3D"http://www.redandblack.com/media/css/global.css?v45"=20
type=3Dtext/css rel=3Dstylesheet><LINK title=3D"1024 x 768"=20
href=3D"http://media.collegepublisher.com/media/css/features_1024.css?v1"=
=20
type=3Dtext/css rel=3D"alternate stylesheet"><LINK media=3Dscreen=20
href=3D"http://media.collegepublisher.com/media/css/popup_new.css?v12"=20
type=3Dtext/css rel=3Dstylesheet><LINK media=3Dprint=20
href=3D"http://media.collegepublisher.com/media/css/print.css?v1" =
type=3Dtext/css=20
rel=3Dstylesheet><LINK media=3Dscreen=20
href=3D"http://www.redandblack.com/media/paper871/styles.css?v13" =
type=3Dtext/css=20
rel=3Dstylesheet><LINK title=3D"RSS feed for The Red and Black"=20
href=3D"http://www.redandblack.com/articles.rss" =
type=3Dapplication/rss+xml=20
rel=3Dalternate><!-- Some "Web 2.0" Resources. -->
<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/prototype.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/global.js?14"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/network_channel.js=
"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/event_listener.js"=
=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/resolution.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/scriptaculous.js" =

type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/window.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/youarehere.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/spry/xpath.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/spry/SpryData.js" =

type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/contentslider.js?1=
"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT src=3D"http://media.collegepublisher.com/media/scripts/ufo.js?1" =

type=3Dtext/javascript></SCRIPT>

<META http-equiv=3Dpragma content=3Dno-cache>
<META http-equiv=3Dexpires content=3D-1>
<META content=3Dall name=3Drobots>
<META content=3D"7 Days" name=3Drevisit-after>
<META content=3Dtrue name=3DMSSmartTagsPreventParsing>
<META content=3D"The Staff of The Red and Black" name=3Dauthor>
<META content=3D"The Red and Black, a college media publication."=20
name=3Ddescription>
<META content=3D"The Red and Black, newspaper, college media, student =
media"=20
name=3Dkeywords>
<META content=3D"Copyright 2008 The Red and Black." name=3Dcopyright>
<SCRIPT type=3Dtext/javascript>=0A=
/* <![CDATA[ */=0A=
var currentissuedate=3D'03/28/08';=0A=
var currentissuedayname=3D'Friday';=0A=
var currentissuemonthname=3D'March';=0A=
var currentissueday=3D'28';=0A=
var currentissuemonth=3D'3';=0A=
var currentissueyear=3D'2008';=0A=
var basehref=3D'http://www.redandblack.com/';=0A=
var paper_id=3D'871';=0A=
var paperzip=3D'30602';=0A=
var paper_name=3D'The Red and Black';=0A=
var paper_domain=3D'www.redandblack.com';=0A=
=0A=
=0A=
=0A=
var dart_paper_name =3D 'UniversityofGeorgia_871';=0A=
=0A=
var dart_primary_section =3D sectioncategory =3D=3D''? 'home' : =
sectioncategory.toLowerCase();=0A=
=0A=
var dart_ord =3D Math.random() * 10000000000000000;=0A=
var dart_tileNumber =3D 1;=0A=
dart_primary_section =3D dart_primary_section.replace(/^(\d.+?)$/,"_$1");=0A=
dart_primary_section =3D dart_primary_section.replace(/\s{1,}/g,"");=0A=
dart_primary_section =3D dart_primary_section.replace(/\/{1,}/g,"");=0A=
=0A=
=0A=
var =
slideshowpath=3D'http://www.redandblack.com/home/index.cfm?event=3Ddispla=
ySlideShow&islides=3D';=0A=
=0A=
// from query.=0A=
var aSectionNames =3D new Array();=0A=
var aSectionLinks =3D new Array();=0A=
aSectionNames[0] =3D 'News';=0A=
aSectionLinks[0]=3D'/news/2008/03/28/News/';=0A=
aSectionNames[1] =3D 'Sports';=0A=
aSectionLinks[1]=3D'/news/2008/03/28/Sports/';=0A=
aSectionNames[2] =3D 'Variety';=0A=
aSectionLinks[2]=3D'/news/2008/03/28/Variety/';=0A=
aSectionNames[3] =3D 'Opinions';=0A=
aSectionLinks[3]=3D'/news/2008/03/28/Opinions/';=0A=
aSectionNames[4] =3D 'Out & About';=0A=
aSectionLinks[4]=3D'/news/2008/03/28/OutAbout/';=0A=
=0A=
/* ]]> */=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
/* <![CDATA[ */=0A=
pcdateobject=3Dnew Date();=0A=
pcrandom=3Dpcdateobject.getTime();=0A=
var section_id =3D '';=0A=
if (typeof section_name=3D=3D"undefined"){=0A=
var section_name =3D '';}=0A=
if (typeof isectioncategoryid=3D=3D"undefined"){=0A=
var isectioncategoryid =3D ',';}=0A=
if (section_name !=3D '') {=0A=
  for (i=3D0;i<aSectionNames.length;i++) {=0A=
    if (aSectionNames[i].toLowerCase() =3D=3D section_name) {=0A=
      section_id =3D aSectionLinks[i].replace(/^sections\/(\d+)\.html$/, =
'$1')=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
var result =3D document.location.href.match(/mkey(=3D|\/|%3D)(-9+)/);=0A=
if (result && result[1]) {=0A=
	var mkey =3D result[1];=0A=
	var nextyear=3Dnew Date();=0A=
	nextyear.setFullYear(nextyear.getFullYear() + 20);=0A=
	var cookieDomain=3D'www.redandblack.com';=0A=
	cookieDomain =3D cookieDomain.replace(/^www\./,"");=0A=
	cookieDomain =3D cookieDomain.replace(/^media.www\./,"");=0A=
	SetCookie('HASREGISTEREDORLOGGEDIN', mkey, nextyear, '/', cookieDomain);=0A=
}=0A=
document.write('<SCR'+'IPT =
SRC=3D'+'http://media.collegepublisher.com/media/admanagerStatus/isAdmana=
gerAlive.js?1>'+'</SCR'+'IPT>');=0A=
/* ]]> */=0A=
</SCRIPT>

<SCRIPT type=3Dtext/javascript>=0A=
/* <![CDATA[ */=0A=
=0A=
var loggedIn=3D0;=0A=
=0A=
=0A=
var cpbppriv=3D0;=0A=
=0A=
if (cpbppriv < 2) {=0A=
	if (document.cookie.indexOf("HASREGISTEREDORLOGGEDIN=3D") > -1) {=0A=
	  uid=3DGetCookie('HASREGISTEREDORLOGGEDIN');=0A=
	} else {=0A=
	  uid=3D'';=0A=
	}=0A=
	var myimageobject =3D new Image();=0A=
	=
myimageobject.src=3D"http://stats.broadbandpublisher.com/pageCounter.adp?=
iPaper_id=3D871&random=3D" + pcrandom + "&uid=3D" + uid;=0A=
}=0A=
=0A=
=0A=
if (GetCookie('activeSession') =3D=3D null) {=0A=
	SetCookie('activeSession', '1');=0A=
	var myimageobject2=3Dnew Image();=0A=
	=
myimageobject2.src=3D"http://stats.broadbandpublisher.com/pageCounter.adp=
?iPaper_id=3D871&random=3D" + pcrandom + '&isnewsession=3D1';=0A=
}=0A=
=0A=
=0A=
if (bAdmanagerClientAlive) {=0A=
	document.write('<SCR'+'IPT =
SRC=3D'+'http://localads.collegepublisher.com/jsc/871/local.js>'+'</SCR'+=
'IPT>');=0A=
	=0A=
}=0A=
=0A=
=0A=
=0A=
=0A=
	document.write('<SCR'+'IPT =
SRC=3D'+'http://admanager3.collegepublisher.com/runtime/javascript/DART_n=
ational.js>'+'</SCR'+'IPT>');=0A=
=0A=
=0A=
=0A=
=0A=
		=0A=
=0A=
=0A=
=0A=
/* ]]> */=0A=
</SCRIPT>
<!--[if IE]>
<STYLE type=3Dtext/css media=3Dscreen>BODY {
	BEHAVIOR: url(/media/paper890/template/templatemedia/csshover.htc)
}
</STYLE>
<LINK title=3D"RSS feed for Arbiter Online"=20
href=3D"http://feeds.feedburner.com/arbiteronline" =
type=3Dapplication/rss+xml=20
rel=3Dalternate><![endif]-->
<SCRIPT src=3D"http://www.google-analytics.com/urchin.js" =
type=3Dtext/javascript>
</SCRIPT>

<SCRIPT type=3Dtext/javascript>
_uacct =3D "UA-1231306-1";
urchinTracker();
</SCRIPT>

<SCRIPT type=3Dtext/javascript>

startList =3D function() {
    if (document.all && document.getElementById) {
        // set the Id of the nav wrapper below
        navRoot =3D $("flan_nav");
        for (i=3D0; i < navRoot.childNodes.length; i++) {
            node =3D navRoot.childNodes[i];
            if (node.nodeName=3D=3D"LI") {
                node.onmouseover=3Dfunction() {
                    this.addClassName("hover");
                }
                node.onmouseout=3Dfunction() {
                    this.removeClassName("hover");
                }
            }
        }
    }
}
window.onload=3DstartList;
//-->
</SCRIPT>

<META content=3D"MSHTML 6.00.6000.16608" name=3DGENERATOR></HEAD>
<BODY>
<DIV id=3Dnet_bar>
<DIV id=3Dnet_cp>
<UL id=3Dnet_cp_nav>
  <LI id=3Dnet_cp_a><A title=3D"College Publisher Network"=20
  href=3D"javascript:showhide_links();">College Publisher Network</A> =
</LI></UL>
<UL class=3Dhide id=3Dnet_cp_nav_list>
  <LI><A title=3D"Join the College Publisher Network"=20
  href=3D"http://cpsite.collegepublisher.com/join/index.html" =
target=3D_parent>Join=20
  the College Publisher Network</A> </LI>
  <LI><A title=3D"Advertise Across the Network"=20
  href=3D"http://www.mtvu.com/about/advertising/" =
target=3D_parent>Advertise Across=20
  the Network</A> </LI>
  <LI><A title=3D"View the entire list of College Publisher Network =
Affiliates"=20
  href=3D"http://www.redandblack.com/channel/network" =
target=3D_parent>View Network=20
  Affiliates</A> </LI></UL></DIV>
<DIV id=3Dnet_search>
<FORM id=3Dcpsearch name=3Dcpsearch action=3D/home/index.cfm =
method=3Dget=20
target=3D_parent>
<FIELDSET><INPUT id=3Dnet_search_input name=3Dq> <INPUT id=3Dev =
type=3Dhidden=20
value=3DdisplaySearchResults name=3Devent> <INPUT id=3Dbp type=3Dhidden =
value=3D1=20
name=3DbuttonPushed> <INPUT id=3Dclient type=3Dhidden =
value=3Dtesting-testing=20
name=3Dclient> <INPUT id=3Dforid type=3Dhidden value=3D1 name=3Dforid> =
<INPUT id=3Die=20
type=3Dhidden value=3DISO-8859-1 name=3Die> <INPUT id=3Doe type=3Dhidden =
value=3DISO-8859-1=20
name=3Doe> <INPUT id=3Dcof type=3Dhidden=20
value=3DGALT:#008000;GL:1;DIV:#666666;VLC:663399;AH:center;BGC:FFFFFF;LBG=
C:FFFFFF;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:37;LW:3=
10;FORID:1;=20
name=3Dcof> <INPUT id=3Dhl type=3Dhidden value=3Den name=3Dhl>=20
<DIV id=3Dnet_search_choose>
<UL id=3Dnet_search_choose>
  <LI id=3Dnet_search_choose_link><A title=3D"Select your search method" =

  href=3D"javascript:showhide_search();">Select your search method</A> =
</LI>
  <LI id=3Dnet_search_choose_submit><A title=3DSearch=20
  href=3D"javascript:sesubmit();">Search</A> </LI></UL>
<UL class=3Dhide id=3Dnet_search_choose_options>
  <LI><INPUT id=3Dnet_search_paper onclick=3Dchange_search_this() =
tabIndex=3D2=20
  type=3Dradio CHECKED value=3Dpaper name=3Dcp1> <LABEL =
for=3Dnet_search_paper>Search=20
  This Paper</LABEL>=20
  <LI><INPUT id=3Dnet_search_google onclick=3Dchange_search_google() =
tabIndex=3D3=20
  type=3Dradio value=3Dweb name=3Dcp1> <LABEL =
for=3Dnet_search_google>Search=20
  Google</LABEL> </LI></UL></DIV><INPUT id=3Dfrombar type=3Dhidden =
value=3D1=20
name=3Dfrombar> </FIELDSET> </FORM></DIV>
<DIV id=3Dnet_channels>
<UL>
  <LI><A href=3D"http://www.redandblack.com/channel/music/"=20
  target=3D_parent>Music</A> </LI>
  <LI><A href=3D"http://www.redandblack.com/channel/career/"=20
  target=3D_blank>Jobs</A> </LI>
  <LI><A =
href=3D"http://media.www.redandblack.com/channel/collegeheadlines/"=20
  target=3D_parent>Top National College News</A> </LI>
  <LI><A href=3D"http://www.redandblack.com/channel/money/"=20
  target=3D_parent>Money</A> </LI>
  <LI><A href=3D"http://www.redandblack.com/books/" =
target=3D_parent>Books</A>=20
</LI></UL></DIV>
<DIV id=3Dnet_weather><A =
href=3D"http://www.redandblack.com/home/weather/"=20
target=3D_parent><IMG=20
src=3D"http://media.collegepublisher.com/media/weatherbug/weatherbugsforc=
hannelbar/30602.png"=20
border=3D0></A> </DIV><NOSCRIPT><IMG id=3Dflan_stat_img=20
src=3D"http://stats.broadbandpublisher.com/pageCounter.adp?iPaper_id=3D87=
1&amp;random=3D&amp;uid=3D"=20
border=3D0> </NOSCRIPT></DIV>
<DIV id=3Dflan_wrap>
<DIV id=3Dflan_leader>
<SCRIPT language=3DJavascript>
        		showNetworkBanner(11);
        	</SCRIPT>
<NOSCRIPT><A=20
href=3D"http://admanager3.collegepublisher.com/runtime/noScriptClickThrou=
gh.cfm?iposition=3D11&amp;ipaper_id=3D871&amp;callingSite=3Dwww%2Ewww.red=
andblack.com%2Ecom"=20
target=3Dnew><IMG=20
src=3D"http://admanager3.collegepublisher.com/runtime/noScriptAdImpDispla=
y.cfm?iposition=3D11&amp;ipaper_id=3D871"=20
border=3D0> </A></NOSCRIPT></DIV>
<DIV class=3Dflan_clear_auto id=3Dflan_header>
<DIV id=3Dflan_header_main>
<DIV class=3Dgutter>
<H1 id=3Dflan_logo><A class=3Dflan_header_home_link title=3D"The Red and =
Black"=20
href=3D"http://www.redandblack.com/home/">The Red and Black</A></H1>
<DIV class=3DredSearch>
<P>Search the Archives</P>
<FORM id=3Dflan_header_search name=3Dflan_header_search =
action=3D/home/index.cfm=20
method=3Dget>
<FIELDSET><INPUT name=3Dq> <INPUT type=3Dsubmit value=3DSearch =
name=3Dflan_search>=20
<INPUT id=3Dev type=3Dhidden value=3DdisplaySearchResults name=3Devent> =
<INPUT id=3Dbp=20
type=3Dhidden value=3D1 name=3DbuttonPushed> <INPUT id=3Dclient =
type=3Dhidden=20
value=3Dtesting-testing name=3Dclient> <INPUT id=3Dforid type=3Dhidden =
value=3D1=20
name=3Dforid> <INPUT id=3Die type=3Dhidden value=3DISO-8859-1 name=3Die> =
<INPUT id=3Doe=20
type=3Dhidden value=3DISO-8859-1 name=3Doe> <INPUT id=3Dcof =
type=3Dhidden=20
value=3DGALT:#008000;GL:1;DIV:#666666;VLC:663399;AH:center;BGC:FFFFFF;LBG=
C:FFFFFF;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;LH:37;LW:3=
10;FORID:1;=20
name=3Dcof> <INPUT id=3Dhl type=3Dhidden value=3Den name=3Dhl> =
</FIELDSET> </FORM></DIV>
<DIV class=3Dflan_article_clear></DIV></DIV></DIV>
<DIV id=3Dflan_header_meta>
<DIV class=3Dgutter>
<DIV id=3Dflan_meta_left>
<P>
<SCRIPT language=3DJAVASCRIPT>document.write(currentissuedayname + ', ' =
+ currentissuemonthname + ' ' + currentissueday + ', ' + =
currentissueyear);</SCRIPT>
</P></DIV>
<DIV id=3Dflan_meta_right>EZ Submission: <A=20
onclick=3D"window.open('http://lamp.redandblack.com/forms/classified.php'=
, 'placeclass', =
'width=3D500,height=3D450,toolbar=3Dno,location=3Dno,status=3Dno,scrollba=
rs,resizable'); return false;"=20
href=3D"http://www.redandblack.com/"><SPAN =
class=3Dsmalltext>Classifieds</SPAN></A>,=20
<A=20
onclick=3D"window.open('http://lamp.redandblack.com/forms/letter.php', =
'letter', =
'width=3D500,height=3D450,toolbar=3Dno,location=3Dno,status=3Dno,scrollba=
rs,resizable'); return false;"=20
href=3D"http://www.redandblack.com/"><SPAN class=3Dsmalltext>Letter to=20
Editor</SPAN></A>, <A=20
onclick=3D"window.open('http://lamp.redandblack.com/forms/mediakit.php', =
'mediakit', =
'width=3D500,height=3D450,toolbar=3Dno,location=3Dno,status=3Dno,scrollba=
rs,resizable'); return false;"=20
href=3D"http://www.redandblack.com/"><SPAN class=3Dsmalltext>Media =
Kit</SPAN></A>,=20
<A=20
onclick=3D"window.open('http://lamp.redandblack.com/forms/subscribe.php',=
 'subscribe', =
'width=3D500,height=3D450,toolbar=3Dno,location=3Dno,status=3Dno,scrollba=
rs,resizable'); return false;"=20
href=3D"http://www.redandblack.com/"><SPAN =
class=3Dsmalltext>Subscribe</SPAN></A> <!-- <a href=3D"" =
onClick=3D"window.open('http://lamp.redandblack.com/forms/ugatoday.php', =
'ugatoday', =
'width=3D500,height=3D450,toolbar=3Dno,location=3Dno,status=3Dno,scrollba=
rs,resizable'); return false;"><span =
class=3D"smalltext">Calendar</span></a> --></DIV></DIV></DIV></DIV>
<DIV id=3Dflan_body>
<DIV id=3Dflan_body_wrap>
<DIV id=3Dflan_content>
<DIV class=3Dgutter>
<SCRIPT language=3DJAVASCRIPT>
  if (GetCookie('CANSEELOGINBAR') =3D=3D 1) {
	document.write('<div id=3Dloggedin_controlbar><table width=3D100% =
cellspacing=3D0 cellpadding=3D0 border=3D0 id=3Dloggedin_bar>');
	document.write('<tr>');
	document.write('<td valign=3Dmiddle align=3Dleft>');
	document.write('<img src=3D/home/images/face.gif>');
	document.write('Welcome to www.redandblack.com</td>');
	document.write('<td align=3Dright valign=3Dmiddle>');
	document.write('<strong><a =
href=3D/user/index.cfm?event=3DeditUserPreferencesForm>MY ACCOUNT</a>'); =
=09
	document.write('&nbsp;&nbsp;&nbsp;&nbsp;<a =
href=3D/user/index.cfm?event=3DprocessLogout>LOG =
OUT</a></strong></td>');
	document.write('</tr>');
	document.write('</table></div>');
 }
</SCRIPT>

<DIV id=3Dbreadcrumb><A title=3D"Go back to front page"=20
href=3D"http://www.redandblack.com/home/">Home</A> &gt; <A =
title=3DVariety=20
href=3D"http://www.redandblack.com/news/2003/04/17/Variety/">Variety</A> =
</DIV>
<DIV id=3Darticle>
<H2>Dogs hunt for eggs, new homes</H2>
<H3></H3>
<H4>Contributed by LINDSEY McCALL</A></H4>
<DIV id=3Dmeta><STRONG>Issue date:</STRONG> 4/17/03 =
<STRONG>Section:</STRONG> <A=20
title=3DVariety=20
href=3D"http://www.redandblack.com/news/2003/04/17/Variety/">Variety</A><=
/DIV>
<DIV class=3Dgoner id=3Dcp_article_top>
<UL id=3Dcp_article_top_left>
  <LI id=3Dcp_article_print><A title=3D"Print this article"=20
  =
href=3D"http://www.redandblack.com/home/index.cfm?event=3DdisplayArticleP=
rinterFriendly&amp;uStory_id=3D6c738c2e-54f5-4b73-937b-5d88f835f88b">Prin=
t</A>
  <LI id=3Dcp_article_email><A title=3D"Email this article"=20
  =
href=3D"http://www.redandblack.com/home/index.cfm?event=3DdisplayEmailArt=
icleForm&amp;uStory_id=3D6c738c2e-54f5-4b73-937b-5d88f835f88b">Email</A> =

<!-- To AnswerTip enable entire page -->
  <SCRIPT =
src=3D"http://site.answers.com/main/js/web_answertip.js?ANSW.nafid=3D100"=
=20
  type=3Dtext/javascript></SCRIPT>
  <SPAN id=3DanswerTipEnabled></SPAN>
  <LI id=3Dcp_answertips><A title=3D"Click here to learn more about =
AnswerTips"=20
  onclick=3D"return ANSW.b5.SendQuery(this,'AnswerTips');"=20
  href=3D"http://www.answers.com/topic/AnswerTips">DoubleClick Any =
Word</A> <!-- end Answer enabling --></LI></UL>
<UL id=3Dcp_article_top_right>
  <LI class=3Dcp_article_page>
  <DIV>Page <STRONG>1</STRONG> of 1 </DIV></LI></UL>
<DIV class=3Dcp_article_clear></DIV></DIV>
<SCRIPT language=3DJavascript>=0A=
		function goPage(newindex) {=0A=
			currentLocation =3D getThisPage();=0A=
			cleanedLocation =3D '';=0A=
			// If this is an SHTML request.=0A=
			if (currentLocation.indexOf(".shtml") > -1) {=0A=
				// Detect if this is a request that already has a page specification.=0A=
				if (currentLocation.indexOf("-page") > -1) {=0A=
					cleanedLocation =3D currentLocation.substring(0, =
currentLocation.indexOf("-page")) + '.shtml';=0A=
				} else {=0A=
					cleanedLocation =3D currentLocation;=0A=
				}=0A=
				// Only add the "-pageX" suffix when the page index is higher than 1.=0A=
				if (newindex !=3D 1) {=0A=
					cleanedLocation =3D cleanedLocation.substring(0, =
cleanedLocation.indexOf(".shtml")) + '-page' + newindex + '.shtml';=0A=
				}=0A=
			} else {=0A=
				// Only add the "-pageX" suffix when the page index is higher than 1.=0A=
				if (newindex !=3D 1) {=0A=
					cleanedLocation =3D currentLocation + '&page=3D' + newindex;=0A=
				} else {=0A=
					cleanedLocation =3D currentLocation;=0A=
				}=0A=
			}=0A=
			document.location =3D cleanedLocation;=0A=
		}=0A=
		function getThisPage() {=0A=
			currentURL =3D '' + window.document.location;=0A=
			thispageresult =3D '';=0A=
			if (currentURL.indexOf("?page=3D") > -1) {=0A=
				currentURL =3D currentURL.substring(0, =
currentURL.indexOf('?page=3D'));=0A=
				thispageresult =3D currentURL;=0A=
			} else if (currentURL.indexOf("&page=3D") > -1) {=0A=
				currentURL =3D currentURL.substring(0, =
currentURL.indexOf('&page=3D'));=0A=
				thispageresult =3D currentURL;=0A=
			} else {=0A=
				thispageresult =3D currentURL;=0A=
			}=0A=
			// Make sure the URL generated by this fuctnion is compatible with =
mirror image.=0A=
			thispageresult =3D thispageresult.substring(7, thispageresult.length);=0A=
			thispageresult =3D =
thispageresult.substring(thispageresult.indexOf('/')+1, =
thispageresult.length);=0A=
			thispageresult =3D basehref + thispageresult;=0A=
			if (thispageresult.indexOf('sourcedomain') > -1) {=0A=
				thispageresult =3D thispageresult.substring(0, =
thispageresult.indexOf('?'));=0A=
			}=0A=
			return thispageresult;=0A=
		}=0A=
		</SCRIPT>

<DIV id=3Dcp_story_text>It seems every year, about a month after Easter, =
the egg=20
no one found turns up in the strangest place.
<P>Well, it won't happen this year if local dogs have anything to do =
with it.
<P>Saturday, from noon to 4 p.m., dogs' noses will be at work in Athens' =
first=20
annual Doggies Easter Egg Hunt at Sandy Creek Park.
<P>The event is sponsored by Petropolis, a local dog daycare and =
boarding=20
facility, to raise money for Helping Paws Rescue, an animal shelter.
<P>Helping Paws is a non-profit, no-kill shelter committed to giving =
abandoned=20
dogs and cats in the Athens area a second chance to find a "forever =
home."
<P>Petropolis started Helping Paws less than a year ago in response to =
Athens'=20
pet overpopulation problem and has since rescued more than 100 dogs and =
cats.
<P>But, like any non-profit, the organization is not without its =
challenges.
<P>"Because of the medical expenses of many of our foster animals, =
Helping Paws=20
is in dire need of funds," said Amanda Rodriguez, a University graduate =
and the=20
owner of Petropolis. "We can only rescue as many animals as our finances =
allow."
<P>Not only will the egg hunt raise money for Helping Paws, but it will =
also=20
test dogs' animal instincts as they sniff out plastic eggs filled with =
treats=20
for dogs and humans alike.
<P>While dogs may be more interested in finding the eggs filled with =
Milk-Bones,=20
humans may want to find the eggs filled with gift certificates and =
prizes=20
donated from Athens businesses, Rodriguez said.
<P>"This is your dog's chance to pay you back for all of the treats and =
belly=20
rubs," she said.
<P>After the eggs have been found, there will be a cookout and time for =
all of=20
the dogs to play together without their leashes.
<P>Students without dogs, though, need not fret.
<P>"Everyone is welcome," said Marcia Moore, a senior from Douglas and a =

Petropolis employee. "One of our foster dogs will be happy to help you =
find a=20
few eggs -- and even happier to go home with you."
<P>Registration for the event is $10 per dog, with all proceeds going =
directly=20
to Helping Paws. Sandy Creek also charges $1 for human visitors at the =
park=20
entrance.
<P>The registration deadline is Friday, but day-of registration will be =
allowed.
<P>To register for the egg hunt online or for more information on =
Helping Paws,=20
visit Petropolis' Web site (<A=20
href=3D"http://www.athenspetropolis.com/">http://www.athenspetropolis.com=
/</A>) or=20
call 227-7887.<BR>
<DIV class=3Dcp_article_clear></DIV></DIV>
<DIV id=3Dcp_continued></DIV>
<DIV id=3Dcp_story_bot_nav>Page <STRONG>1</STRONG> of 1 </DIV>
<DIV id=3Dcp_article_tools>
<H4>Article Tools</H4>
<DIV id=3Dcp_at_content>
<DIV id=3Dcp_at_share>
<H5>Share:</H5>
<UL>
  <LI id=3Dcp_at_facebook><A=20
  onmouseover=3D"window.status=3D'Post to Facebook'; return true;"=20
  href=3D"javascript:var =
d=3Ddocument,f=3D'http://www.facebook.com/share',l=3Dd.location,e=3Dencod=
eURIComponent,p=3D'.php?src=3Dbm&amp;v=3D4&amp;i=3D1162578701&amp;u=3D'+e=
(l.href+'&amp;sourcedomain=3D'+paper_domain+'&amp;facebook')+'&amp;t=3D'+=
e(d.title);try{if(!/^(.*\.)?facebook\.[^.]*$/.test(l.host))throw(0);share=
_internal_bookmarklet(p)}catch(z){a=3Dfunction(){if(!window.open(f+'r'+p,=
'sharer','toolbar=3D0,status=3D0,resizable=3D0,width=3D626,height=3D436')=
)l.href=3Df+p};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);els=
e{a()}}void(0)">Facebook</A>=20

  <LI id=3Dcp_at_blog><A=20
  onmouseover=3D"window.status=3D'Post to Blogger'; return true;"=20
  =
href=3D"javascript:popw=3D'';Q=3D'';x=3Ddocument;y=3Dwindow;if(x.selectio=
n)%20{Q=3Dx.selection.createRange().text;}%20else%20if%20(y.getSelection)=
%20{Q=3Dy.getSelection();}%20else%20if%20(x.getSelection)%20{Q=3Dx.getSel=
ection();}popw%20=3D%20y.open('http://www.blogger.com/blog_this.pyra?t=3D=
'%20+%20escape(Q)%20+%20'&amp;u=3D'%20+%20escape(location.href)%20+%20'&a=
mp;n=3D'%20+%20escape(document.title),'bloggerForm','scrollbars=3Dno,widt=
h=3D475,height=3D300,top=3D175,left=3D75,status=3Dyes,resizable=3Dyes');i=
f%20(!document.all)%20T%20=3D%20setTimeout('popw.focus()',50);void(0);">B=
logger</A>=20

  <LI id=3Dcp_at_deli><A=20
  onmouseover=3D"window.status=3D'Post to del.icio.us'; return true;"=20
  =
href=3D"javascript:window.document.location=3D'http://del.icio.us/post?ur=
l=3D'+escape(document.location.toString());">del.icio.us</A>=20

  <LI id=3Dcp_at_digg><A onmouseover=3D"window.status=3D'Post to digg'; =
return true;"=20
  =
href=3D"javascript:window.document.location=3D'http://digg.com/submit?pha=
se=3D2&amp;url=3D'+escape(document.location.toString());">digg</A>=20

  <LI id=3Dcp_at_news><A=20
  onmouseover=3D"window.status=3D'Seed to newsvine'; return true;"=20
  =
href=3D"javascript:window.document.location=3D'http://www.newsvine.com/_t=
ools/seed&amp;save?u=3D'+escape(document.location.toString());">newsvine<=
/A>=20
  </LI></UL></DIV>
<DIV id=3Dcp_at_rss>
<H5>Subscribe:</H5>
<UL>
  <LI id=3Dcp_at_yaho><A=20
  onmouseover=3D"window.status=3D'Post to My Yahoo'; return true;"=20
  =
href=3D"javascript:window.document.location=3D'http://add.my.yahoo.com/rs=
s?url=3Dhttp://www.redandblack.com/articles.rss';"=20
  target=3D_blank>My Yahoo!</A>=20
  <LI id=3Dcp_at_goog><A=20
  onmouseover=3D"window.status=3D'Post to Google Home Page'; return =
true;"=20
  =
href=3D"javascript:window.document.location=3D'http://fusion.google.com/a=
dd?feedurl=3Dhttp://www.redandblack.com/articles.rss';"=20
  target=3D_blank>Google</A> </LI></UL></DIV></DIV></DIV>
<SCRIPT language=3DJavascript>=0A=
strycountimg =3D new Image();=0A=
strycountimg.src=3D"http://admanager2.broadbandpublisher.com/storyImage.a=
dp?iStory_ID=3D2579138&cb=3D"+pcrandom;=0A=
</SCRIPT>
<NOSCRIPT><IMG height=3D1=20
src=3D"http://admanager2.broadbandpublisher.com/storyImage.adp?iStory_ID=3D=
2579138"=20
width=3D1> </NOSCRIPT></DIV>
<DIV id=3Drelated_stories>
<UL></UL></DIV>
<DIV id=3Dcomments></DIV>
<DIV align=3Dcenter>
<P>&nbsp;</P>
<P>&nbsp;</P>
<SCRIPT type=3Dtext/javascript><!--
google_ad_client =3D "pub-5911963499162465";
google_ad_width =3D 336;
google_ad_height =3D 280;
google_ad_format =3D "336x280_as";
google_ad_type =3D "text_image";
//2007-01-29: Center links
google_ad_channel =3D "9461620414";
google_color_border =3D "FFFFFF";
google_color_bg =3D "FFFFFF";
google_color_link =3D "ce1000";
google_color_text =3D "000000";
google_color_url =3D "000000";
//--></SCRIPT>

<SCRIPT src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"=20
type=3Dtext/javascript>
</SCRIPT>
</DIV><!--- Footer --->
<DIV id=3Dobject2971>
<DIV class=3Dcpfooter align=3Dcenter><A=20
href=3D"http://www.mtvu.com/about/advertising/" target=3D_blank>National =
College=20
Advertising and Marketing</A> | <A=20
href=3D"http://www.redandblack.com/user/privacypolicy/">Privacy =
Policy</A>=20
(8/15/07) | <A href=3D"http://www.redandblack.com/user/terms">Terms of =
Use</A>=20
(8/15/07)<BR><A href=3D"http://www.redandblack.com/user/submission"=20
target=3D_blank>Content Submission Agreement</A> (8/23/07) | <A=20
href=3D"http://www.redandblack.com/user/copyright" =
target=3D_blank>Copyright=20
Compliance Policy</A> (8/25/07) | <A=20
href=3D"http://www.redandblack.com/user/rssterms" target=3D_blank>RSS =
Terms of=20
Use</A> </DIV></DIV></DIV></DIV>
<DIV id=3Dflan_ads>
<DIV class=3Dgutters>
<DIV class=3Dcp_ad id=3Dbox_300_250_13>
<H4 class=3Dad_slug>Advertisement</H4>
<SCRIPT language=3DJavascript>
			showNetworkBanner(13);
		</SCRIPT>
</DIV>
<SCRIPT=20
src=3D"http://media.collegepublisher.com/media/scripts/yui/build/utilitie=
s/utilities.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://media.collegepublisher.com/media/scripts/yui/build/containe=
r/container_core.js"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://media.collegepublisher.com/media/scripts/carousel.js"=20
type=3Dtext/javascript></SCRIPT>

<DIV id=3Dvideo_carousel>
<SCRIPT language=3DJavascript type=3Dtext/javascript>
	//document.write('<scr'+'ipt =
src=3Dhttp://media.collegepublisher.com/media/paper' + paper_id + =
'/template/betapopularstories.js><\/scr'+'ipt>');
	document.write('<scr'+'ipt =
src=3Dhttp://media.collegepublisher.com/media/paper' + paper_id + =
'/template/videoplayerbox.js><\/scr'+'ipt>');
</SCRIPT>
</DIV>
<SCRIPT language=3DJavascript type=3Dtext/javascript>
	document.write('<scr'+'ipt =
src=3Dhttp://media.collegepublisher.com/media/paper' + paper_id + =
'/template/betapopularstories.js?'+currentissuedate+'><\/scr'+'ipt>');
</SCRIPT>
<!-- SiteSearch Google -->
<FORM action=3Dhttp://www.redandblack.com/googlesearch/ method=3Dget =
target=3D_top>
<TABLE bgColor=3D#ffffff border=3D0>
  <TBODY>
  <TR>
    <TD vAlign=3Dtop noWrap align=3Dleft height=3D32><BR><INPUT =
type=3Dhidden=20
      value=3Dwww.redandblack.com name=3Ddomains></INPUT> <LABEL=20
      style=3D"DISPLAY: none" for=3Dsbi>Enter your search terms</LABEL> =
<INPUT=20
      id=3Dsbi maxLength=3D255 size=3D35 name=3Dq></INPUT> </TD></TR>
  <TR>
    <TD noWrap>
      <TABLE>
        <TBODY>
        <TR>
          <TD><INPUT id=3Dss0 type=3Dradio CHECKED value=3D""=20
            name=3Dsitesearch></INPUT> <LABEL title=3D"Search the Web" =
for=3Dss0><FONT=20
            color=3D#000000 size=3D-1>Web</FONT></LABEL></TD>
          <TD><INPUT id=3Dss1 type=3Dradio value=3Dwww.redandblack.com=20
            name=3Dsitesearch></INPUT> <LABEL title=3D"Search =
www.redandblack.com"=20
            for=3Dss1><FONT color=3D#000000=20
            =
size=3D-1>www.redandblack.com</FONT></LABEL></TD></TR></TBODY></TABLE><LA=
BEL=20
      style=3D"DISPLAY: none" for=3Dsbb>Submit search form</LABEL> =
<INPUT id=3Dsbb type=3Dsubmit value=3D"Google Search" name=3Dsa></INPUT> =
<INPUT=20
      type=3Dhidden value=3Dpub-5911963499162465 name=3Dclient></INPUT> =
<INPUT=20
      type=3Dhidden value=3D1 name=3Dforid></INPUT> <INPUT type=3Dhidden =

      value=3DISO-8859-1 name=3Die></INPUT> <INPUT type=3Dhidden =
value=3DISO-8859-1=20
      name=3Doe></INPUT> <INPUT type=3Dhidden=20
      =
value=3DGALT:#E9382F;GL:1;DIV:#CCCCCC;VLC:7E3939;AH:center;BGC:FFFFFF;LBG=
C:FF3333;ALC:E9382F;LC:E9382F;T:000000;GFNT:7E3939;GIMP:7E3939;FORID:11=20
      name=3Dcof></INPUT> <INPUT type=3Dhidden value=3Den =
name=3Dhl></INPUT>=20
  </TD></TR></TBODY></TABLE></FORM><!-- SiteSearch Google --><BR>
<SCRIPT type=3Dtext/javascript><!--
google_ad_client =3D "pub-5911963499162465";
google_ad_width =3D 300;
google_ad_height =3D 250;
google_ad_format =3D "300x250_as";
google_ad_type =3D "text_image";
//2007-01-29: Right rail
google_ad_channel =3D "1871136119";
google_color_border =3D "FFFFFF";
google_color_bg =3D "FFFFFF";
google_color_link =3D "ce1000";
google_color_text =3D "000000";
google_color_url =3D "000000";
//--></SCRIPT>

<SCRIPT src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"=20
type=3Dtext/javascript>
</SCRIPT>

<DIV class=3Dcontent>
<H4>Poll</H4>
<FORM name=3Dvoteform action=3D/poll/index.cfm?event=3DcastVote =
method=3Dpost>
<DIV class=3Dpollquestionstyle>What will be the results of the gym dogs' =
2008=20
season?</DIV>
<DIV id=3Dpoll_answers>
<DIV><INPUT id=3Dpoll_answer_125377 type=3Dradio value=3D125377 =
name=3Dpoll_answer_id>=20
<LABEL for=3Dpoll_answer_125377>14th SEC Championship in last 18 =
years</LABEL>=20
</DIV>
<DIV class=3Dpoll_even><INPUT id=3Dpoll_answer_125378 type=3Dradio =
value=3D125378=20
name=3Dpoll_answer_id> <LABEL for=3Dpoll_answer_125378>Fourth straight =
National=20
Championship</LABEL> </DIV>
<DIV><INPUT id=3Dpoll_answer_125379 type=3Dradio value=3D125379 =
name=3Dpoll_answer_id>=20
<LABEL for=3Dpoll_answer_125379>No SEC or National championship</LABEL>=20
</DIV></DIV><A class=3Dfaux_button=20
href=3D"javascript:document.voteform.submit();">Submit Vote</A>=20
<P id=3Dview_results><A=20
href=3D"http://www.redandblack.com/poll/index.cfm?event=3DdisplayPollResu=
lts">View=20
Results</A></P></FORM></DIV>
<DIV class=3Dcp_ad id=3Dbox_300_250_9>
<H4 class=3Dad_slug>Advertisement</H4>
<SCRIPT language=3DJavascript>
				showNetworkBanner(9);
			</SCRIPT>
</DIV>
<DIV class=3Dcontent_300>
<SCRIPT language=3DJavascript>
		showNetworkBanner(12);
	</SCRIPT>
<NOSCRIPT><A=20
href=3D"http://admanager3.collegepublisher.com/runtime/noScriptClickThrou=
gh.cfm?iposition=3D2&amp;ipaper_id=3D871&amp;callingSite=3Dwww.redandblac=
k.com"=20
target=3Dnew><IMG=20
src=3D"http://admanager3.collegepublisher.com/runtime/noScriptAdImpDispla=
y.cfm?iposition=3D2&amp;ipaper_id=3D871"=20
border=3D0> </A></NOSCRIPT></DIV></DIV></DIV></DIV>
<DIV id=3Dflan_nav>
<DIV class=3Dgutter>
<UL id=3Dflan_sections>
  <LI class=3DfrontPage><A title=3D"The Red and Black Front Page"=20
  href=3D"http://www.redandblack.com/home">Front Page</A>=20
  <LI><A title=3D"The Red and Black News Section"=20
  href=3D"http://www.redandblack.com/news/2008/03/28/News/">News</A>=20
  <LI><A title=3D"The Red and Black Sports Section"=20
  href=3D"http://www.redandblack.com/news/2008/03/28/Sports/">Sports</A> =

  <LI><A title=3D"The Red and Black Variety Section"=20
  =
href=3D"http://www.redandblack.com/news/2008/03/28/Variety/">Variety</A> =

  <LI><A title=3D"The Red and Black Opinions Section"=20
  =
href=3D"http://www.redandblack.com/news/2008/03/28/Opinions/">Opinions</A=
>=20
  <LI><A title=3D"The Red and Black Out &amp; About Section"=20
  href=3D"http://www.redandblack.com/news/2008/03/28/OutAbout/">Out =
&amp;=20
  About</A>=20
  <LI><A href=3D"http://www.redandblack.com/home/archives/">Archive</A> =
</LI></UL>
<UL id=3DredOptions>
  <LI><A href=3D"http://blog.redandblack.com/">Blogs</A>=20
  <LI><A href=3D"http://www.redandblack.com/listings">Downtown Listings =
Map</A>=20
  <LI><A href=3D"http://www.redandblack.com/classifieds">Classified =
Ads</A>=20
  <LI><A=20
  =
onclick=3D"window.open('http://lamp.redandblack.com/forms/classified.php'=
, 'placeclass', =
'width=3D500,height=3D450,toolbar=3Dno,location=3Dno,status=3Dno,scrollba=
rs,resizable'); return false;"=20
  href=3D"http://www.redandblack.com/">Place A Classified Ad</A>=20
  <LI><A href=3D"http://www.redandblack.com/crossword">Crossword =
Puzzle</A> <!-- <li><a href=3D"/calendar">Calendar</a></li> -->
  <LI><A href=3D"http://www.redandblack.com/messageboard">Feedback and =
Forums</A> <!-- <li><a href=3D"/lastweek">Last Week in =
Pictures</a></li>--></LI></UL><!-- For Blogs submenu!
<ul class=3D"topmenu cp_clear">
  <li class=3D"topmenuli">
   <a href=3D"http://blog.redandblack.com/">Blogs</a>
    <ul class=3D"submenuul">
      <li class=3D"submenuli"><a =
href=3D"http://blog.redandblack.com/sports/">Sports Blog</a></li>
      <li class=3D"submenuli"><a =
href=3D"http://blog.redandblack.com/crimedawg/">CrimeDawg</a></li>
      <li class=3D"submenuli"><a =
href=3D"http://blog.redandblack.com/idol-chatter/">'Idol' =
Chatter</a></li>
      <li class=3D"submenuli"><a =
href=3D"http://blog.redandblack.com/variety-blog/">Variety Blog</a></li>
      <li class=3D"submenuli"><a =
href=3D"http://blog.redandblack.com/deluca-drivel/">Deluca =
Drivel</a></li>
      <li class=3D"submenuli"><a =
href=3D"http://blog.redandblack.com/photo-blog/">Photo Blog</a></li>
    </ul>   =20
  </li>
</ul> -->
<UL id=3DredMoreOptions>
  <LI><A href=3D"http://www.redandblack.com/aboutus/">About Us</A>=20
  <LI><A =
href=3D"http://www.redandblack.com/advertising/">Advertising</A>=20
  <LI><A href=3D"http://alumni.randb.com/">Alumni</A>=20
  <LI><A href=3D"http://www.redandblack.com/employment">Employment</A>=20
  <LI><A href=3D"http://www.redandblack.com/user/register/">Email =
Edition</A>=20
  <LI class=3Drss><A =
href=3D"http://www.redandblack.com/articles.rss">Subscribe to=20
  RSS</A> </LI></UL><!-- Search Google -->
<DIV align=3Dcenter>
<FORM action=3Dhttp://www.redandblack.com/googlesearch/ method=3Dget =
target=3D_top>
<TABLE bgColor=3D#ffffff>
  <TBODY>
  <TR>
    <TD vAlign=3Dtop noWrap align=3Dmiddle height=3D32><A=20
      href=3D"http://www.google.com/"><IMG alt=3DGoogle=20
      src=3D"http://www.google.com/logos/Logo_25wht.gif" align=3Dcenter=20
      border=3D0></IMG></A> <BR><LABEL style=3D"DISPLAY: none" =
for=3Dsbi>Enter your=20
      search terms</LABEL> <INPUT id=3Dsbi maxLength=3D255 size=3D17 =
name=3Dq></INPUT>=20
    </TD></TR>
  <TR>
    <TD vAlign=3Dtop align=3Dmiddle><LABEL style=3D"DISPLAY: none" =
for=3Dsbb>Submit=20
      search form</LABEL>=20
      <INPUT id=3Dsbb type=3Dsubmit value=3DSearch name=3Dsa></INPUT> =
<INPUT type=3Dhidden=20
      value=3Dpub-5911963499162465 name=3Dclient></INPUT> <INPUT =
type=3Dhidden value=3D1=20
      name=3Dforid></INPUT> <INPUT type=3Dhidden value=3D2538813477=20
      name=3Dchannel></INPUT> <INPUT type=3Dhidden value=3DISO-8859-1 =
name=3Die></INPUT>=20
      <INPUT type=3Dhidden value=3DISO-8859-1 name=3Doe></INPUT> <INPUT =
type=3Dhidden=20
      =
value=3DGALT:#E9382F;GL:1;DIV:#CCCCCC;VLC:7E3939;AH:center;BGC:FFFFFF;LBG=
C:FF3333;ALC:E9382F;LC:E9382F;T:000000;GFNT:7E3939;GIMP:7E3939;FORID:11=20
      name=3Dcof></INPUT> <INPUT type=3Dhidden value=3Den =
name=3Dhl></INPUT>=20
  </TD></TR></TBODY></TABLE></FORM></DIV><!-- Search Google -->
<DIV id=3Dflan_pdf>
<H4>Today's Front Page</H4><A id=3Dprintpreview=20
href=3D"http://media.collegepublisher.com/media/paper871/documents/t937n6=
rl.pdf"=20
target=3D_blank><IMG alt=3D"Download Print Edition PDF title=3D"=20
src=3D"http://media.collegepublisher.com/media/paper871/thumbs/t_t937n6rl=
.png"=20
width=3D125 border=3Dnone PDF? Edition Print Download> </A></DIV>
<P></P>
<DIV id=3Dflan_pdf>
<H4>Out &amp; About</H4><A id=3Dprintpreview=20
href=3D"http://www.redandblack.com/media/paper871/documents/w385d8ca.pdf"=
=20
target=3D_blank><IMG title=3D"Download Print Edition PDF"=20
alt=3D"Download Print Edition PDF"=20
src=3D"http://www.redandblack.com/media/paper871/stills/h9viv24v.jpg" =
width=3D127=20
border=3Dnone> </A></DIV>
<P></P>
<DIV class=3Dcp_banner_client id=3Dbanner_client_1>
<SCRIPT language=3DJAVASCRIPT>
	if (clientBannersAvailable =3D=3D 1) {
		showClientBanner(1);
	}
	</SCRIPT>
<NOSCRIPT><CFOUTPUT><A=20
href=3D"http://admanager2.broadbandpublisher.com/newspaperBanners/clientC=
lickThrough.adp?iPosition=3D1&amp;iPaper_id=3D871&amp;javascriptIncludeMo=
de=3D0&amp;callingSite=3Dwww%2Eredandblack%2Ecom"=20
target=3D_blank><IMG alt=3DAdvertisement=20
src=3D"http://admanager2.broadbandpublisher.com/newspaperBanners/showAban=
ner.adp?vchSerialNumber=3Ds7e22z165m&amp;iSection_Id=3D&amp;iStory_Id=3D&=
amp;iPaper_Id=3D871&amp;javascriptIncludeMode=3D0&amp;iPosition=3D1"=20
border=3D0></A></CFOUTPUT> </NOSCRIPT></DIV></DIV></DIV></DIV>
<DIV id=3Dflan_footer>
<CENTER>
<P>=C2=A9 2007 <A title=3D"The Red and Black Publishing Company Inc."=20
href=3D"http://www.redandblack.com/">The Red and Black Publishing =
Company Inc.</A>=20
| 540 Baxter Street, Athens GA, 30605<BR>Main: 706-433-3000 | News: =
706-433-3002=20
| Advertising: 706-433-3012 | Fax: 706-433-3033<BR>Questions, comments =
or=20
concerns? Let us know - <A=20
href=3D"mailto:webmaster@randb.com">webmaster@randb.com</A></P>
<P>Powered by <A title=3D"Powered by College Publisher"=20
href=3D"http://collegepublisher.com/"><STRONG>College=20
Publisher</STRONG></A></STRONG></P></CENTER></DIV></DIV><!--aftertable-->=

<DIV id=3Dglobal_footer>College Publisher powered by <SPAN=20
id=3Dlogo_mtvu>mtvU</SPAN> and <SPAN id=3Dlogo_mtvn>MTV =
Networks</SPAN></DIV><!--cpbpeof--></BODY></HTML>

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://media.collegepublisher.com/media/weatherbug/weatherbugsforchannelbar/30602.png

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

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://stats.broadbandpublisher.com/pageCounter.adp?iPaper_id=871&random=&uid=

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://admanager3.collegepublisher.com/runtime/noScriptAdImpDisplay.cfm?iposition=11&ipaper_id=871

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://admanager2.broadbandpublisher.com/storyImage.adp?iStory_ID=2579138

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://admanager3.collegepublisher.com/runtime/noScriptAdImpDisplay.cfm?iposition=2&ipaper_id=871

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.google.com/logos/Logo_25wht.gif

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
5JRXbvnlNAUEADs=

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: image/png
Content-Transfer-Encoding: base64
Content-Location: http://media.collegepublisher.com/media/paper871/thumbs/t_t937n6rl.png

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
EIRXXnnlj3/846233trb25vNZnfv3v2nP/0J0c03v/nNqqqqmpqaL3zhC9lsdteuXbW1tbW1tX//
938Pr7kwHYcRQk6dOvWzn/0MgGNtbW1jYyNmrP/qV7+qqalpaGi4+eabZVm+6667li1bdsstt9TV
1f3t3/7tzMzM2rVrFy9eXFFRcfjwYbJQt+zp6Vm5cmVzc/O6det+//vff+c73yGEfOtb36qoqMBE
o/e+972//vWv6+rq6urqULdbu3btrl27Vq9e/YlPfIIswNL33HNPRUVFQ0PDLbfcQgh55plnmpub
v/71r2MF79y586abblJVdcuWLd///veffPLJI0eOQGi2qamprq7utddeGxsbW758eXNzc0tLy+nT
pwsoS+HrP/roo2azubm5+bHHHstkMsuWLfvtb39rMpmqq6tzuVw8Hq+pqcHI6q6urlOnTl133XVV
VVWPP/44bMxrr71msVig9PLEE0/MzMysXLny9OnTp0+fttvtzzzzDFmQkwOXvbm5GQOXCCFQo5Mk
qa2tramp6aWXXqKUopuysbHxnSKz+d7t3/72twaD4ezZsxs2bOjp6Xn66adRgfzc5z539uxZbJq+
vr7Tp0/v2bMHcmMf+chHent7Ozo6nnnmmX/6p3/66le/+rOf/ezhhx9+/PHHRVHcv3//7t27f/rT
nw4MDCCIKSyOgYGBkZGRrq6u++67b+nSpc8+++zLL7/8L//yL1/5ylfWr1//61//+uDBg7/85S8T
iURXV9fatWslSWpvb//Wt77V3d39pz/96QMf+ADSehxf+cpXBgYG9u/fHwwGv/e9723ZsoUQsnXr
1s9//vMGg8FqtW7YsOFv/uZv9u7du2/fvt/85jfPPvtsLBZ7/fXXc7nc6tWr4VKDwWAgEHj00Ufv
v//+F198cd++fV//+tclSfrgBz9ICCkvL7fZbK+99trrr7/e0dGxePHi48ePj46OPvjgg+fOnTt6
9GhDQ8OXvvSlz372swjdLBbLF77whSvvdS6Xy+fzt9xyS2tray6XkyQpl8vBPhVsFfYhkkQ0IiiK
kkgkPvaxj33605+Ox+OSJPE8L8tyIpHYtGnTnj17Jicn77jjDqzjQoSAjpWChG0hEkK9E2UUhHFY
AFddH/NBDQzRL3/5y8OHD/f09BBC9uzZs379ekLImTNnyALsTQh5//vfX1ZWZjQaP/WpTyEIeuWV
Vwghq1at+tznPtfd3f2+973vwQcffOyxxy5evAhV78vgSFzH2bNnQ6HQ0qVLb7/99unp6fr6+mg0
umrVKsQxb775JvrNP/GJT0DMBAD/Rz/6UVEU7733XtzEfD5/7tw5r9d7/fXXl5WVxWIx0HRvvPHG
r371q0ajsaysbNOmTYyxjo6OH//4x4SQ8+fPQzdtaGjoH//xH+FcfT7f97///SNHjhw4cABx1cjI
SG1tLWa9Go3GW265RVXVn/3sZ21tbZs2bSKERCIRSGgA5P7v//7vU6dOCYLwmc98Zm5urqenJx6P
XwbB3XLLLRMTEyMjIxs3bhRF8eLFi+95z3swFwFqw/h3dna2tLS0rq7upZdeGhoa2rNnj6Io09PT
gUAgnU7H43G/379hwwae5/v6+lwuV01NzfDwcIFTjlgkmUyC2p7NZovv/Pnz54eHh3fv3j07OyvL
stVq3bdv3zuldQLM/oYNG771rW8pilIYgj0/52jBD11Z1yh8HpY/x3Eovv/+97//9Kc//b3vfS+R
SBw4cKAABl/2wbIsF1Y0AitSFO0XbihKlPF4/LOf/WxFRcWvf/3rf//3fz9z5sypU6eKX4Z3AUEh
RQkOWcjrFi1a9Pd///epVKq8vPwPf/hDAexHPeXpp5++++67//Ef//Gmm256+OGHC1RFnEGW5R07
dhBCXnjhha9//esIUxC0FoIV5B12u/2zn/3s5z73ObSuF74sbvLevXvr6+sppbfeeuv09HQul6ut
rS0pKbHb7W1tbWaz+YEHHnA4HPfdd5/b7d67d+/09PT3v//9urq6RYsWpdPp6urqr3/966WlpV/5
yldaW1tbWloikciOHTva2tr8fj/0snO53Pe+9z2DwfDVr37V4/H8wz/8QyGognPBfrPb7ffff399
ff0//MM/xOPxd6pSzY9jwR2EUOa2bdvefPPNAwcOHD9+nBCyZs2axx57rDgu43k+m80+/vjj+Xxe
UZQdO3bs37//xIkTFy5c+M///M/t27fjhND5RhjPrihSrF271ul0nj17dv/+/bfeeuuPf/xjj8dz
9uzZl156CX7h6aefBg4LnfbPfOYzb775Jir+EGtG/rZ+/frnn3/++eefHxsb27FjB2DpwsSTdDq9
evVqq9U6Ozvr9Xq//OUvP/jgg7DbpKjCcv78eazv4eFh+JGmpqa+vr7nnnuOEJLNZpubm+vq6sbG
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
AAAASUVORK5CYII=

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.redandblack.com/media/paper871/stills/h9viv24v.jpg

/9j/4AAQSkZJRgABAgEAZABkAAD/4RlJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdp
AAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMyBNYWNpbnRv
c2gAMjAwODowMzoyNiAyMzoxNDozMQAAA6ABAAMAAAAB//8AAKACAAQAAAABAAAAf6ADAAQAAAAB
AAABBAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA
AgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABgTAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG
AAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL
CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN
Dg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM
DAwM/8AAEQgAoABOAwEiAAIRAQMRAf/dAAQABf/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH
CAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh
EjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi
ZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE
BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKy
gwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dX
Z3eHl6e3x//aAAwDAQACEQMRAD8A8/UbPofMflWvjfVfrl7S5+FlUQ4NDXY1pJn6TtpDNrGf9NEf
9UerbYNOSNRH6rbHY+P0d3tSS+43MMvLA0v1Ldw0ntvj3KmzEaW78itnrOJMtABaO1frM2Pft/eV
+5rZ3O7HQ68x5ID3tBAJ1P8ABKtbWtZ1Bb9B5Hk8B4/HbZ/4IguF4Meky2ePTO0n+xb7f/BVaefB
Z/VsW/OwLsLHuONZkAMdc36TWE/p9n7rnVb2InQEqGpA7uNk/Xb6q0w12YHvJILK63PLS07X79rd
rFpY2XhZ2O3Jwra8ih43Newg6fym/Tr/ALa8/wCvfU/DwG3ei526tstL+TtA9n9pU/8AF+xw+slY
axxZbTcHOEtHsa1+8x9LamwnxDToaK6eMwNHqLfQn9Pe7ruF1M3tbjYrYsxxuDyQMj21t/oz6sp2
RQ/I9X9J+oUen/wSoxrKfrDk9UfbXZh5WxrMSDur9MDY/cf0HunKc/a1n85V/Of4Oy5jx9F0jwcJ
/wCk3a5DJfvDdo3THOkwXeG/6Hu+gnWBus1f/9D0DKt9V9grcQ5tha6JmGjZ2/4VGwbS71B6gP8A
JJ9xd+82Xbms2fyVXsj17Pa5p9RxaASWkgkO935n76PgaGwOnftmHAaczsP7rklJQ+xjoI3NAHI1
mFGtvrCxzgNxdE6mIH8r6Key2lr3MNjA9gbvaXAEb/bXvk+31HfQUKdwfZzAfqPkEfFCO3Eq9RlZ
dD7Nxa396BLv81AyqqqA5lpe3ewlrmEgtP5rw797Ra7dWgjuJhUOoVizJra4S0thwPgSdyadiE9Q
ez5j1PqfTX9PdmWVB3UrhZUaDJayDt9tbnP2+tt9X1N1iuf4tsIvN2S7a2tmPXRSZHvttdvyGs3f
n1MxKmbGfvrm+q105vUslmdnuxnsvdRS11ZsNhY5zbGMtZtrq2bqnNfaxlVnrf8ABp8Sn7O6i/Dr
sfkVv2Y5DS19bmn2vD3D201/zll7f57+a/0iGPHK9QbHzdl2XLHWq4TpHudX1iygt5aYQS1sjnnw
8iq2H9acbKsbRn1jEyLCAx4O6pzidsfv0bv5f6P/AIVaJrPqhsazEd51UpjIHhrVhEgRYOj/AP/R
76z0PWv3NFrQSS3cWkO3e76E7f8AX/SI2GKH2F1NYaWNO39I5xBjZBqdtVe4/prAID97/a5scn2b
d3+k/f8A+KVvFoY6t9zXbtzXViBtGmnn9HbtSU+UdY6n1TG6/ndGyQ3PwG0ZAqGQx7/Ulj+p4VPq
3H1sn7Pk111Y3/BepXT++uoyeudQq6v9WLbRdW3qFm3MrrLm1Gy6ljHVW0y7+buv9bZd/N+kuY68
cjIxLM+4115lMeo5xa2yGs/R1s2lzPfS/wDRua79M/8AQrpun5uBm9a6W2uyuxuM7GdUKzuAdZj9
QrdtI/0XoV1ORjCtAAARxf8AdLTkur114Xu6yDW0ggyBqNVifWhz68K81v2Psp9IGYA3H4fSczfX
9JWTdnVsD8emu6qfol5rfu8iWPpc3+1WsXrvVKLb6un5FbqX27t9Vvpua5orsdE1W2f1/oI4xch9
v2ImfSfseRt6VVd9YsnqdW00tqpGO8j2l9jGvfkbXe7f6WzZ/wAarljqcKizJukspY55EyXFonn9
53+ZWrdEZFDrXM3Odvtpb3H+Ba32/uVsYuT611Syyu2lsEE7XGY3NB99XHt3x6e5WuIRie+/2tej
Ij7PsbD8h7sc2XQ+9lwbaDxLwLHD+p7vSr/4NdNT1jPv+qN9weW5eLd9jddruNZdU0Xc7vU+yZP0
t35i5TE/SYHqgCb7X3ADiPosXQYxH/MzLDR/2ohxjSd2P/31Rz3ifJdDYjzf/9Lvy1oyLd5LNrnO
BILgZP5uzd/J/wA9WcFrGNsaLTaREyCAABt9sj3Knbt9S7cIBe73gjT3fL6X/V7FYwmDWza5rq2u
BPtDZ8Pa7d9EM+k30/z0lPmtlrmi1rdgsaTayGNIIB2wxrvUZ6badu2v/wADQbMzNextv2o1WkM9
K1x2bXNdkVO9J9bPU9tF3+Cb/Np31i0CsyCQTWWcyWzDf+m+v/SV/o1UFu6k7wA9zJeAYDm7mWfo
7PzW2/Rs/wC27P366wMiBZJZuGIO1a3orq/XczHubZjWPtpJbW23IkEuDK22sppNljWtsez1GWPb
6qj0f9rX9SZlZrT6TWPdvsPvcXt27w397Y930k4IZfSYDiLWElwhw2D17P6vqP8A8D+5/pa/0ivd
LYHY2Tk6lrG11tk6Q1osyHD/ADq1YwSIlGIAGtyPhFhzxiQTqekR4lPfnuoaAPYyzcAWjgbhP8n2
sf6i5LMqbQ8nIPu5a0SZk/SEroOqstyMIDG2vaP0ljgdRJGyD9H07W76/wCusi2nHyrn5WU9hrrZ
Bqk+7aA302uG3Z6e/wBV/wDpFYnIEkdY92CMCAJbxl1CfCdk19OpitprDN3uJB9xNkQP3d21auPk
4tn1Vyr2s/T05DWWQTPufWWVkD/vzVl5+YfUdQfYWEEEaNAj2WNb9H3V/TVWvqzqsG3DrfFN8WXN
2AkvaRt9sfS2MahkkLjEWdQFQialLwJf/9Peb9fPqfdkuFXU2F1zjtHoZMkk7m7v1f8Az1cp+uH1
Vx2PyLs5hLWu3ObTaSBp9B3pb3M2/uMQzgdPx8q01fV3DDabHMqfViDe4TsGxzK/9H/Of4NXum9H
wsphfldGwqaNrmhhoaHkkuaf0b2+xmz6TH/T/wCLSU+bDJc2nGgw5gFbtvI2fzLv+t79qpW3ktnc
a3MsJJZ+YXDb6rGj6VNn57P31WF1ja2PMuFbgXg87SNDP5vsd/r6anXj5eXkupwq7Lrx+k2VMc90
fR3Pqr3O9N2/f+kUMYsxKrMolxJ0sYQSBqNu3duY3/C4+3+3V/gP9Gugwqbx0bFupsr3PsN0Ol3u
JdQ20W1+57XVU+lf6jf+27ly2XiZ1WWzFuwsqjKsAfRjvqe2yT7P0FTm+pdVuZs+j+Yr+A/Iway2
5luPkWWFz8e1pZAArrruqqtDHt9Rn85/g7/+sV2Vz4YAyrw78LBlycMbFeOnFo28rOz622UuNTAT
LmVtFbTr7XcfnLGseJ0ZvJcHSfoyNf7S2M6x1uMMo0ZLcc8XFhFOpLW/p7Qxmx0fvLJsx+oWY32y
nCyDgAFxyhU91UNMPeLmtbV6bHD3W/QTjCMToKW+5OfzG2tlXveGtJJscS5zuXHtq7+U5CFNpDrC
2HDQSTJMb4b+d9A79i2cDovUc2qm8uZj0Fs12QH2Oa7u2v8Am6/5PqfpFqN+rGC3HdAs9V52HLJm
zcIfDLCNjPzdzGN/m0Otp6U//9Tuzd05uTY05de4WPL2OrOh3BrhvDm7XN9rNyt4GXhW7qse5lrt
s/o2uaAASz3SXt3blVs6K05Vl4rLjY57jLmFpk7hvrcwtsb/AMbv9P8A4xXcDGfRU9hY1kk6gMBP
9b0WV1+36DPakp8OxOk9SymYrBe1hzLWYTmVtn0y6wUs9bf9Nn2l3v2/QWj1ugOz3/VzpDC3pvTr
PRdjve1gybR7crqGZfY6mq/L9Vvp0+s/ZT6P6tVX6i6Rv1R69S99+Pin1N9WQxu+sRdXscx7N7tu
71KmvuTXfVPqWVfZm59P7IotuORm1Ofj5DXusf6tzMfMsup+z1XuP+GxbPR9T/DMRqtAiye7zFn1
e6kM3pPTOtg4mOxl1TLbXNDm4lbnZ2S9+2yx22mh+T6bn7Gez+QtH62WU9ZyOj9ZuO3At6Yb857D
DhXRZttqrNn+HvuvrwMf/uxfWumd9XsS7qvUOsZjBZn5wfjuL7qiyljmMp+z1ssDNzn4w9L/AIm2
1U/rD0LL6r07A6aDWMLFdYcwY91DHvhwfjVsfd7G1U+r/U32er6X6OtEDxH2oJ8D9iDqFLOoddor
6pW37F9XujV5mbhMP6Jzw03Oxaq/oMq/mf8AjKKPRsXI9EzuqdT+unS8173uzbcykucwkbat27Io
rg+zErxfWr9H6HoLrsvA61k9a6j1ivGqbi9WxzhdQxzm44is1fZv1O8eoxlzNld36er6f6P8/wBR
UOn/AFW6t0dzremCu3qNjCK8667GrdRS8Rc/Axa7slr8qyre37Xbeyuv/B1pE2oDs7tXTKvtV2Li
AVYtD7NpHDKg92wM/e/0WMz89Xs2mv7L02kYwj077DRuG6DDp9bds+0bG7/W/m/X/kKN2D6lVVWM
WNpa7dbuuqcXOO1jXy0/SrbZ6Ndf0Gf17FO6hlrMdo2Nrx6HYxByKDuY5rqvWb+a21tr/ofzSVqp
/9XrqMzMtZu326aH3u5HzUhfkgx69sk6AvdyTxynoLxXsDiGEzt84CcsAbu+Y+PDUUN3o1tr7rw+
11gAbt3OLu79fcrWfiZeRH2fKdi/o7We1odD7A1tWR23Px9rvTY/9F+k/qLj/rVdkYn1Q6xfi2vx
72Mx9ltTix4/Tsadr2bXN9q6bELNrbN73PfBILmmA422bdpft27v7f8A4IglHZ0Xqr3kjq1rGkyG
BvAPqOczd6m72vt/Rf8ABV013et/OLPsyLG5FzL+o5jbMZ7q37aHQ4FmTeDVXU59dmxmy2uxlX/a
aqjZZ+mqWx9rDS33SXQYLqxwxrj/AOS/9RLzD6wnq/R/rn0/Ew+qZxwMh2Nf6D8u2xrWW3mr0GuL
/wBJT7P8J7/+MSU9lk5d+TaKK+o5mLdda2kFtTHMDgPSloZc72Ptwsl79jv8N/xfrytzg97s+vOz
K8ZuQfUoNZghtP7QfV77W7Km49dnvb+//UVf6252Tj5btmVbjs11a+wAQ3f/AIJzW7tPzlh4fW+r
ZIpfj5d9tgYDZTvsd7vZtdY7f+f7/YoZZj6uGHFwGjr/AOgskcYJiDKuLZ6YZFzhl3/tPJpZW9rH
Ntp0rdc65nphot3u+zuya/Ufu/RfY/V/oqrMzLvsTrz1LN2+m4iw0mTIoygWsZftbbXQ2zbVbs9T
17/5z0PRrzunZXUcTqFr8rJyzRZS7a19ltv6RrmP2VtcXub7Xu2K47rOc3JYHfaG0vcWtO8mx0fS
/Qh+5v7/APpE8ZInUbAcW6DjkDR78Phr/Wf/1u0wL8bJx8ttFtd5qbD/AE3NftcWk7XFm7Y9BObi
mgEWsIESdwj75UHX4mDWyuw+mbhtqpYILwB7ttTR/Nt/Ptf+hWN1Drxj0aIJPLm+B/MZ/wCe/USl
MDdMYGWzP65WMs+pfWtjg6K8adpB5yGeCv1ZzKW1NsyK2AV1WOBFTYBa6x38r6NrfofyP9JcuZzb
X3/VH6xMDS5wZhw0S7nI1hv9lVuiDJxOl4rHEvdkBxLnssfrkO2s9Wdn8y5/qP8A+Lf/ADiUTxC1
Sjwmnd619aMHpl3TKBmUizLtDcnc1p9LHNfo2Xusx/oZDLQ30f8ABf8AWPoc19ZMmrI+tnS7KCSw
eizcSCHFmfY3e1zPbt/k/wCDVDrN+VTm4XU6m42RdWGGNtvqsFYNfp2Uj2+g7e36H6X1FWOVkZPW
+j3DEfQC6hj6y1xa0jJ9T9H7W7UqQ939f3n7XYzftAY4kDkk7GM/s7XWrH6Wfsu30XOt9VzKwwQ1
4Fh3OaCC39J7Wer/ACFr/Xq1tfUiXecjyhv/AJJUej4zr7WPbSbmem14YxpcTYSKn3v9P3/2/Zs3
qLiiITjXqlInb5q24mf2JExy36ODhN9JSlL5P6z0Gyiyiu5/qB7HMDL26CbHemW1/wDB7/Z+kYg+
k37Wcl75r2iyo7YDQWfaX+3duc97WbEPpb3O+04LT6V0RUC8vE1uDdrrrnPtutstd7fd70f03Nb6
H2W4WOoFZqI/SEemcZu1n+k9Nj//AARRwiPaOmtSsrsh/WAXpxR0f//XnYdtllj3vty8ikONriS2
dvsf+f8AmfmMd+j/AJpU3tY8Tta71Q4tEEfpNG21fR+hY7Z/26//AEK0Ka+ntyMUOstq9NjGX2WM
O0O2ercaXP8AT3Or3f6H0/VQasep2I805bG2Ulr6WuO17i/9HRSwfmt92TZ/wn/gqqGRJslvxhEC
gHe+oLa68jqJYQGNqolwOsB2QPd7n/4Niu9E+tV3VnZEOqa2ltORU6kzux8n1PSFjbm7vtOO6nZd
6f6P9J/g/wCbWf0fpjruk9ZY0NdXk0Nrx6Wn3E0te31X2tH+FuP/AFa5zouQzG6nU97fSsbS6mqk
S1waA6Gvq/NqbP6Pf77P5xPE6iBfTb965f8Ac/pNfLH1y0+v7tReh6l9Zus01OdTlAtbY5osa2r6
O02M9lgc52z6Fns/wf8Aol0IHVjTRb9vcHEMfY30qyCCGl7ON3uXC4udjX43S6sjfZ9oyBPokaWy
1ortrtc3axr3enf6Nn/kF3OfnNrDa2GbLbGVsA7De0OcjAEeoyOsRpcq4gZR01Yyb0AG/wCDxH+M
Sy1nV3HT0Npbb467C3d/J/dR/qt1E4uMyudhNm22AJMtBpbv/wCoS+tuT0LL6p1DDzswYeRVaysA
hzna11XV3Naxj/b7/wCc/wAGqmI/7Jm2YuKWZZw2V2NDHe0hh2ej6n0fWq27LNiZmoC/lIlZ8RxM
+HJIg4ybhIemN/LID910+m4f+U67rINbCLiNYB+n9H+stEZxtoe5x92M5ljHeVgs9TT+tXXZ/XWf
j9UpcBe03OFga4VuYGukA7W3Wf8ABucgjJZVua921+S4NqaeXNqa51sf1fWYo445Vw3dxnt2EV0p
xNyqqMP8bif/0Ooxj0B17qR10ZNt9zxRVNcte4lrceltbW7vSc327/f++n9b6uvHrnqWLaytzGvs
sawlpc15Y3j2Wfo7XrZvFZrLnO9LaZNjTEAHxaWezb/K/l/4NEwj6u5ltDXMbIbfoQ8sc5mstb+b
/wCjf+uN4I9l/uT/AHi0uh4nRmVW39JfVaywtqfZQGhs1ufZ6cMLWf4V30VgWfUrov7Ty+oszsqo
22WE0tplrHGPUbV+h3Oaz6DP+DXa2VMbU5tbAN35oAEmIVJ9FtVReWw1o3PPcBvu9u2f+oR4R28F
pkTuXmv+Y3Tq7WdVxuo5NDW2MyRFTHNNjS1nqmh1Rt3/AJv0Pp/plqvoxLfTtty7Wiiz1HNbQ+CW
/me6vftWnXY3Kxx6LvVgy6BtEO97fpNr/MchXb6G77yKw4hoLtW7iIb9APdu/rJUEOB1r6m9Kzuq
ftbJzMmpt7xYKq6wQTsr3e6phyK91VDPd+jeo9P+qfRMYVNqzct94JFVjqiJa4ub6VgNLa/T+l9N
dQ7feK7qJtZB930Z4bx7f3XILrKsaxoynbCJe2SdQ3Td+jY/6DP5SEoRkKkLGv4piTE2ND4eDn5f
SMWtvpPyHD2F43Uh5DW/6Oypjv8AM3ep/o0F/R+n341TG5l7BiBxeW1uG91ha71ba3V/pNlm309j
Ft2Y9xte4MJBLSDIjQDWPkhNuZvfjEk3yGBncOI3D3ln51bX/n7P+uIe3Dtvonjl3639X//Z/+1A
MFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAHHAIAAAIAAAA4QklNBCUAAAAAABDo8VzzL8EYoaJ7
Z63FZNW6OEJJTQPqAAAAACIoPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K
PCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUgQ29tcHV0ZXIvL0RURCBQTElTVCAxLjAv
L0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Cjxw
bGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3Jt
YXQuRm9ybWF0dGluZ1ByaW50ZXI8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50
LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2Vy
PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJ
CTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LkZv
cm1hdHRpbmdQcmludGVyPC9rZXk+CgkJCQk8c3RyaW5nPktZMTI0Mzc4PC9zdHJpbmc+CgkJCQk8
a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQk8c3RyaW5nPmNvbS5h
cHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp
Y2tldC5tb2REYXRlPC9rZXk+CgkJCQk8ZGF0ZT4yMDA3LTA4LTI0VDE5OjE1OjA4WjwvZGF0ZT4K
CQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRl
Z2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20u
YXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUhvcml6b250YWxSZXM8L2tleT4KCTxkaWN0PgoJCTxr
ZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBw
bGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0
Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5w
cmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJCQkJPHJlYWw+NzI8L3JlYWw+
CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQk8c3RyaW5n
PmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCTxrZXk+Y29tLmFwcGxlLnBy
aW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQk8ZGF0ZT4yMDA3LTA4LTI0VDE5OjE1OjA4Wjwv
ZGF0ZT4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJ
CTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtl
eT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk+Cgk8ZGljdD4K
CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29t
LmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp
Y2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBw
bGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk+CgkJCQk8aW50ZWdlcj4xPC9p
bnRlZ2VyPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJ
PHN0cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCQk8a2V5PmNvbS5h
cHBsZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJPGRhdGU+MjAwNy0wOC0yNFQxOTox
NTowOFo8L2RhdGU+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9r
ZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGlj
dD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk+Cgk8ZGlj
dD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+
Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50
LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20u
YXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVNjYWxpbmc8L2tleT4KCQkJCTxyZWFsPjE8L3JlYWw+
CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQk8c3RyaW5n
PmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCTxrZXk+Y29tLmFwcGxlLnBy
aW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQk8ZGF0ZT4yMDA3LTA4LTI0VDE5OjE1OjA4Wjwv
ZGF0ZT4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJ
CTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtl
eT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+Cgk8ZGljdD4K
CQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29t
LmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp
Y2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBw
bGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVh
bD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCTxzdHJp
bmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJPGtleT5jb20uYXBwbGUu
cHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCTxkYXRlPjIwMDctMDgtMjRUMTk6MTU6MDha
PC9kYXRlPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJ
CQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8
a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk+Cgk8
ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJp
bmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnBy
aW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5j
b20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJCQkJPHJl
YWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4K
CQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJPGtleT5j
b20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCTxkYXRlPjIwMDctMDgtMjRU
MTk6MTU6MDhaPC9kYXRlPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxh
Zzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8
L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5zdWJUaWNrZXQucGFwZXJfaW5mb190aWNrZXQ8
L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1c3Rl
ZFBhZ2VSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5j
cmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5n
PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJh
eT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1
c3RlZFBhZ2VSZWN0PC9rZXk+CgkJCQkJPGFycmF5PgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw+CgkJ
CQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+NzY4PC9yZWFsPgoJCQkJCQk8cmVhbD41
ODg8L3JlYWw+CgkJCQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu
Y2xpZW50PC9rZXk+CgkJCQkJPHN0cmluZz5jb20uYXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJp
bmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCQk8
ZGF0ZT4yMDA4LTAzLTI3VDAzOjE0OjAzWjwvZGF0ZT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwv
ZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZv
cm1hdC5QTUFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxl
LnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5n
bWFuYWdlcjwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5
PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh
Z2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJl
YWw+LTEyPC9yZWFsPgoJCQkJCQk8cmVhbD4tMTI8L3JlYWw+CgkJCQkJCTxyZWFsPjc4MDwvcmVh
bD4KCQkJCQkJPHJlYWw+NjAwPC9yZWFsPgoJCQkJCTwvYXJyYXk+CgkJCQkJPGtleT5jb20uYXBw
bGUucHJpbnQudGlja2V0LmNsaWVudDwva2V5PgoJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50
aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2RE
YXRlPC9rZXk+CgkJCQkJPGRhdGU+MjAwOC0wMy0yN1QwMzoxNDowM1o8L2RhdGU+CgkJCQkJPGtl
eT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8
L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFw
cGxlLnByaW50LlBhcGVySW5mby5QTUN1c3RvbVBhcGVyPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+
Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxl
LnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQu
aXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxl
LnByaW50LlBhcGVySW5mby5QTUN1c3RvbVBhcGVyPC9rZXk+CgkJCQkJPGZhbHNlLz4KCQkJCQk8
a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY2xpZW50PC9rZXk+CgkJCQkJPHN0cmluZz5jb20u
YXBwbGUucHJpbnRpbmdtYW5hZ2VyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQu
dGlja2V0Lm1vZERhdGU8L2tleT4KCQkJCQk8ZGF0ZT4yMDA3LTA4LTI0VDE5OjE1OjA4WjwvZGF0
ZT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJ
PGludGVnZXI+MTwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJ
PGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+
CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+
Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+
Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc+
bmEtbGV0dGVyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNsaWVu
dDwva2V5PgoJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJ
CQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5tb2REYXRlPC9rZXk+CgkJCQkJPGRhdGU+
MjAwNy0wOC0yNFQxOToxNTowOFo8L2RhdGU+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlj
a2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjE8L2ludGVnZXI+CgkJCQk8L2RpY3Q+
CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5Q
TVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFn
ZXI8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5
PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlcklu
Zm8uUE1VbmFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAu
MDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43Njg8L3JlYWw+CgkJ
CQkJCTxyZWFsPjU4ODwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnBy
aW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21h
bmFnZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQubW9kRGF0ZTwv
a2V5PgoJCQkJCTxkYXRlPjIwMDctMDgtMjRUMTk6MTU6MDhaPC9kYXRlPgoJCQkJCTxrZXk+Y29t
LmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4xPC9pbnRl
Z2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5w
cmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxr
ZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFw
cGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNr
ZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFw
cGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJy
YXk+CgkJCQkJCTxyZWFsPi0xMjwvcmVhbD4KCQkJCQkJPHJlYWw+LTEyPC9yZWFsPgoJCQkJCQk8
cmVhbD43ODA8L3JlYWw+CgkJCQkJCTxyZWFsPjYwMDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJ
CTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jbGllbnQ8L2tleT4KCQkJCQk8c3RyaW5nPmNv
bS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmlu
dC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJCTxkYXRlPjIwMDctMDgtMjRUMTk6MTU6MDhaPC9k
YXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJ
CQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4K
CQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJ
PGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxz
dHJpbmc+Y29tLmFwcGxlLnByaW50aW5nbWFuYWdlcjwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBs
ZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJ
CTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQkJ
CQk8c3RyaW5nPkxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl
dC5jbGllbnQ8L2tleT4KCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5wcmludGluZ21hbmFnZXI8L3N0
cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQubW9kRGF0ZTwva2V5PgoJCQkJ
CTxkYXRlPjIwMDctMDgtMjRUMTk6MTU6MDhaPC9kYXRlPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnBy
aW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJ
PC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNr
ZXQuQVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNvbS5h
cHBsZS5wcmludC50aWNrZXQucHJpdmF0ZUxvY2s8L2tleT4KCQk8ZmFsc2UvPgoJCTxrZXk+Y29t
LmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQu
UGFwZXJJbmZvVGlja2V0PC9zdHJpbmc+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC50
aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJPGtleT5jb20u
YXBwbGUucHJpbnQudGlja2V0LnByaXZhdGVMb2NrPC9rZXk+Cgk8ZmFsc2UvPgoJPGtleT5jb20u
YXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tleT4KCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LlBh
Z2VGb3JtYXRUaWNrZXQ8L3N0cmluZz4KPC9kaWN0Pgo8L3BsaXN0Pgo4QklNA+0AAAAAABAAZAAA
AAEAAQBkAAAAAQABOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAB4OEJJ
TQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAA
AAAACgABAAAAAAAAAAE4QklNA/UAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYA
AAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA/gAAAAAAHAAAP//
//////////////////////////8D6AAAAAD/////////////////////////////A+gAAAAA////
/////////////////////////wPoAAAAAP////////////////////////////8D6AAAOEJJTQQI
AAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA0kAAAAGAAAA
AAAAAAAAAAEEAAAAfwAAAAoAMwAtADIANwAtAHAAZwAtAEIAMQAAAAEAAAAAAAAAAAAAAAAAAAAA
AAAAAQAAAAAAAAAAAAAAfwAAAQQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQ
AAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9w
IGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAQQAAAAAUmdodGxvbmcAAAB/
AAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcA
AAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1h
dXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNP
YmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAA
QnRvbWxvbmcAAAEEAAAAAFJnaHRsb25nAAAAfwAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhU
AAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJ
c0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xp
Y2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGln
bgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABO
b25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21P
dXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE/8AAA
AAAAADhCSU0EFAAAAAAABAAAAAI4QklNBAwAAAAAGC8AAAABAAAATgAAAKAAAADsAACTgAAAGBMA
GAAB/9j/4AAQSkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/2wCE
AAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwM
DAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDP/AABEIAKAATgMBIgACEQEDEQH/3QAEAAX/xAE/AAABBQEBAQEBAQAA
AAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUH
BggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMm
RJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eX
p7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKC
kkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZm
doaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/APP1Gz6HzH5Vr431X65e0ufhZVEODQ12
NaSZ+k7aQzaxn/TRH/VHq22DTkjUR+q2x2Pj9Hd7UkvuNzDLywNL9S3cNJ7b49ypsxGlu/IrZ6zi
TLQAWjtX6zNj37f3lfua2dzux0OvMeSA97QQCdT/AASrW1rWdQW/QeR5PAePx22f+CILheDHpMtn
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
b6J45d+t/V//2QA4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMA
aABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADMAAAABADhCSU0E
BgAAAAAABwAGAAAAAQEA/+EWqGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0
IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4
bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYg
NDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6MTM6NDMgICAgICAgICI+IDxyZGY6UkRGIHht
bG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxy
ZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNv
bS94YXAvMS4wLyIgeG1sbnM6eGFwTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8i
IHhtbG5zOnN0TWZzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvTWFuaWZlc3RJ
dGVtIyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNv
dXJjZVJlZiMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1s
bnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiB4bWxuczpwaG90b3Nob3A9Imh0
dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5h
ZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYv
MS4wLyIgeGFwOkNyZWF0ZURhdGU9IjIwMDgtMDMtMjVUMjM6NTI6MTYtMDQ6MDAiIHhhcDpNZXRh
ZGF0YURhdGU9IjIwMDgtMDMtMjZUMjM6MTQ6MzEtMDQ6MDAiIHhhcDpNb2RpZnlEYXRlPSIyMDA4
LTAzLTI2VDIzOjE0OjMxLTA0OjAwIiB4YXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBD
UzMgTWFjaW50b3NoIiB4YXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDppbmRkOmNmOGZkMmNm
LTJmZDQtMTFkYy1hYWQ1LWUwNTc5MmM4YjVlOSIgeGFwTU06SW5zdGFuY2VJRD0idXVpZDo0Q0FG
N0Q3NjE3RkREQzExQUQ3OEFBREJDOURCNkVEMiIgeGFwTU06UmVuZGl0aW9uQ2xhc3M9InByb29m
OnBkZiIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwZGY6UHJvZHVjZXI9IkFkb2JlIFBERiBMaWJy
YXJ5IDguMCIgcGRmOlRyYXBwZWQ9IkZhbHNlIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90
b3Nob3A6SUNDUHJvZmlsZT0iQWRvYmUgUkdCICgxOTk4KSIgcGhvdG9zaG9wOkhpc3Rvcnk9IiIg
dGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iMTAwMDAwMC8xMDAwMCIgdGlm
ZjpZUmVzb2x1dGlvbj0iMTAwMDAwMC8xMDAwMCIgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgdGlm
ZjpOYXRpdmVEaWdlc3Q9IjI1NiwyNTcsMjU4LDI1OSwyNjIsMjc0LDI3NywyODQsNTMwLDUzMSwy
ODIsMjgzLDI5NiwzMDEsMzE4LDMxOSw1MjksNTMyLDMwNiwyNzAsMjcxLDI3MiwzMDUsMzE1LDMz
NDMyOzNBNjA5QjNBRDY2Qjg0RDU2QzdFODAyMDlFOUZENEYxIiBleGlmOlBpeGVsWERpbWVuc2lv
bj0iMTI3IiBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjYwIiBleGlmOkNvbG9yU3BhY2U9Ii0xIiBl
eGlmOk5hdGl2ZURpZ2VzdD0iMzY4NjQsNDA5NjAsNDA5NjEsMzcxMjEsMzcxMjIsNDA5NjIsNDA5
NjMsMzc1MTAsNDA5NjQsMzY4NjcsMzY4NjgsMzM0MzQsMzM0MzcsMzQ4NTAsMzQ4NTIsMzQ4NTUs
MzQ4NTYsMzczNzcsMzczNzgsMzczNzksMzczODAsMzczODEsMzczODIsMzczODMsMzczODQsMzcz
ODUsMzczODYsMzczOTYsNDE0ODMsNDE0ODQsNDE0ODYsNDE0ODcsNDE0ODgsNDE0OTIsNDE0OTMs
NDE0OTUsNDE3MjgsNDE3MjksNDE3MzAsNDE5ODUsNDE5ODYsNDE5ODcsNDE5ODgsNDE5ODksNDE5
OTAsNDE5OTEsNDE5OTIsNDE5OTMsNDE5OTQsNDE5OTUsNDE5OTYsNDIwMTYsMCwyLDQsNSw2LDcs
OCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDMw
OzMwNDQxMTBBN0Q4RkYzRkE2QjU3M0VCRkNEQkM4MEY3Ij4gPHhhcE1NOk1hbmlmZXN0PiA8cmRm
OkJhZz4gPHJkZjpsaT4gPHJkZjpEZXNjcmlwdGlvbiBzdE1mczpsaW5rRm9ybT0iUmVmZXJlbmNl
U3RyZWFtIiB4YXBNTTpwbGFjZWRYUmVzb2x1dGlvbj0iMjAwLjAwIiB4YXBNTTpwbGFjZWRZUmVz
b2x1dGlvbj0iMjAwLjAwIiB4YXBNTTpwbGFjZWRSZXNvbHV0aW9uVW5pdD0iSW5jaGVzIj4gPHN0
TWZzOnJlZmVyZW5jZSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkNGMkJENTc5RkMxNTExRENBQzQ5
RDgzMjRFQTg4QzQwIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkNGMkJENTc4RkMxNTExRENBQzQ5
RDgzMjRFQTg4QzQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpsaT4gPHJkZjpsaT4gPHJk
ZjpEZXNjcmlwdGlvbiBzdE1mczpsaW5rRm9ybT0iUmVmZXJlbmNlU3RyZWFtIiB4YXBNTTpwbGFj
ZWRYUmVzb2x1dGlvbj0iMjAwLjAwIiB4YXBNTTpwbGFjZWRZUmVzb2x1dGlvbj0iMjAwLjAwIiB4
YXBNTTpwbGFjZWRSZXNvbHV0aW9uVW5pdD0iSW5jaGVzIj4gPHN0TWZzOnJlZmVyZW5jZSBzdFJl
ZjppbnN0YW5jZUlEPSJ1dWlkOkI5QjUxNDYwRkMxNjExRENBQzQ5RDgzMjRFQTg4QzQwIiBzdFJl
Zjpkb2N1bWVudElEPSJ1dWlkOkI5QjUxNDVGRkMxNjExRENBQzQ5RDgzMjRFQTg4QzQwIi8+IDwv
cmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpsaT4gPHJkZjpsaT4gPHJkZjpEZXNjcmlwdGlvbiBzdE1m
czpsaW5rRm9ybT0iUmVmZXJlbmNlU3RyZWFtIiB4YXBNTTpwbGFjZWRYUmVzb2x1dGlvbj0iMzAw
LjAwIiB4YXBNTTpwbGFjZWRZUmVzb2x1dGlvbj0iMzAwLjAwIiB4YXBNTTpwbGFjZWRSZXNvbHV0
aW9uVW5pdD0iSW5jaGVzIj4gPHN0TWZzOnJlZmVyZW5jZSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlk
OjMyMTc2M0MwRkMxNjExRENBQzQ5RDgzMjRFQTg4QzQwIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlk
OjMyMTc2M0JGRkMxNjExRENBQzQ5RDgzMjRFQTg4QzQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8
L3JkZjpsaT4gPHJkZjpsaT4gPHJkZjpEZXNjcmlwdGlvbiBzdE1mczpsaW5rRm9ybT0iUmVmZXJl
bmNlU3RyZWFtIiB4YXBNTTpwbGFjZWRYUmVzb2x1dGlvbj0iMjAwLjAwIiB4YXBNTTpwbGFjZWRZ
UmVzb2x1dGlvbj0iMjAwLjAwIiB4YXBNTTpwbGFjZWRSZXNvbHV0aW9uVW5pdD0iSW5jaGVzIj4g
PHN0TWZzOnJlZmVyZW5jZSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOjczNDBEMURDRkMxNTExRENB
QzQ5RDgzMjRFQTg4QzQwIiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOjczNDBEMURCRkMxNTExRENB
QzQ5RDgzMjRFQTg4QzQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpsaT4gPHJkZjpsaT4g
PHJkZjpEZXNjcmlwdGlvbiBzdE1mczpsaW5rRm9ybT0iUmVmZXJlbmNlU3RyZWFtIiB4YXBNTTpw
bGFjZWRYUmVzb2x1dGlvbj0iMjAwLjAwIiB4YXBNTTpwbGFjZWRZUmVzb2x1dGlvbj0iMjAwLjAw
IiB4YXBNTTpwbGFjZWRSZXNvbHV0aW9uVW5pdD0iSW5jaGVzIj4gPHN0TWZzOnJlZmVyZW5jZSBz
dFJlZjppbnN0YW5jZUlEPSJ1dWlkOjczNDBEMUUyRkMxNTExRENBQzQ5RDgzMjRFQTg4QzQwIiBz
dFJlZjpkb2N1bWVudElEPSJ1dWlkOjczNDBEMUUxRkMxNTExRENBQzQ5RDgzMjRFQTg4QzQwIi8+
IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpsaT4gPC9yZGY6QmFnPiA8L3hhcE1NOk1hbmlmZXN0
PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3
Ij8+/+ICWElDQ19QUk9GSUxFAAEBAAACSEFEQkUCEAAAbW50clJHQiBYWVogB88ABgADAAAAAAAA
YWNzcE1TRlQAAAAAbm9uZQAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1BREJFAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKY3BydAAAAPwAAABMZGVzYwAA
AUgAAABrd3RwdAAAAbQAAAAUYmtwdAAAAcgAAAAUclRSQwAAAdwAAAAOZ1RSQwAAAewAAAAOYlRS
QwAAAfwAAAAOclhZWgAAAgwAAAAUZ1hZWgAAAiAAAAAUYlhZWgAAAjQAAAAUdGV4dAAAAABDb3B5
cmlnaHQgKGMpIDE5OTkgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuAGRlc2MAAAAAAAAAEUFkb2JlIFJHQiAoMTk5OCkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABjdXJ2AAAAAAAAAAECMwAA
Y3VydgAAAAAAAAABAjMAAGN1cnYAAAAAAAAAAQIzAABYWVogAAAAAAAAnBgAAE+lAAAE/FhZWiAA
AAAAAAA0jQAAoCwAAA+VWFlaIAAAAAAAACYxAAAQLwAAvpz/7gAOQWRvYmUAZEAAAAAB/9sAhAAC
AgICAgICAgICAwICAgMEAwICAwQFBAQEBAQFBgUFBQUFBQYGBwcIBwcGCQkKCgkJDAwMDAwMDAwM
DAwMDAwMAQMDAwUEBQkGBgkNCgkKDQ8ODg4ODw8MDAwMDA8PDAwMDAwMDwwMDAwMDAwMDAwMDAwM
DAwMDAwMDAwMDAwMDAz/wAARCAEEAH8DAREAAhEBAxEB/90ABAAQ/8QBogAAAAcBAQEBAQAAAAAA
AAAABAUDAgYBAAcICQoLAQACAgMBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAIBAwMCBAIGBwME
AgYCcwECAxEEAAUhEjFBUQYTYSJxgRQykaEHFbFCI8FS0eEzFmLwJHKC8SVDNFOSorJjc8I1RCeT
o7M2F1RkdMPS4ggmgwkKGBmElEVGpLRW01UoGvLj88TU5PRldYWVpbXF1eX1ZnaGlqa2xtbm9jdH
V2d3h5ent8fX5/c4SFhoeIiYqLjI2Oj4KTlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+hEAAgIB
AgMFBQQFBgQIAwNtAQACEQMEIRIxQQVRE2EiBnGBkTKhsfAUwdHhI0IVUmJy8TMkNEOCFpJTJaJj
ssIHc9I14kSDF1STCAkKGBkmNkUaJ2R0VTfyo7PDKCnT4/OElKS0xNTk9GV1hZWltcXV5fVGVmZ2
hpamtsbW5vZHV2d3h5ent8fX5/c4SFhoeIiYqLjI2Oj4OUlZaXmJmam5ydnp+So6SlpqeoqaqrrK
2ur6/9oADAMBAAIRAxEAPwD5I4GbsVdir+mT/nAuyt5f+cR/ygkktYZGa21SrtGrE/7lbsdSK5bE
7NM+b6d8wX2jeXNOk1PUYIILRXSJpzACkbSnihlZVIRakAs1FFdyMq1GTw4GXcsImRoPN9I8v+X/
ADfHd6lqXlSw9O3l9LStZSJYbiZUBDESRhXop2DV3+jMXRGWSHFIe497Zl9JpOH8qvb/APHN1WS3
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
jpJHzgqZAAxjBCscVR9x5u/J38s/yv8A0DaeWPNTeX9bs/KX5gT6Q2oQvLDeTxTalpsSTIJE+L/D
paZkJUtx682oqiPOdp+WvkTzLceYT5K8xv5gsfLN5+YtzcQ6hHF6Mf17WOTgT2nwTK2qTvGZQjLy
RVo8SgKr5Lv8rfNn5k21nP5G1tPPl95u1PUdQhn1CJjpeqWi2cZcxm3mi+rXdmlpdxO44MOHIo1R
iqTfmND+Q/k3zBeacnl/zNqGreR9ei0y0hs9YSEQzT6fd69b3Fr6vJV5XEdxBycrSVf3jekoIVRG
laP+Ws8Fh5YufJnmfRDNb67+WPlwnVIGs2MV8dOvrH69DaFLWe7mtSBJKUadSyq7sWjxV//U+iHl
K7/RNzLOLKK7NxZpA6ybfD8Ldga9Mm1p/eXE9zUxRLbRsdohV+P+ybemAllSUPp3robaRufruVck
U+GNgeX4gj5ZAyKgBJ72Jby7uJyWo7ngASAFGygfIAZIFSGEf85U/wDOQP5nfkne/wDOJWg+QNdt
tG0j8w7j6j5v+sWVvdvLbxT6RCvptOremQl1JuPEeGECypNPrby3rP5harLbS6nqt7p9ut/qjtZ/
VLJ5JLRZQtlHM4RPSbjUjiCW2LMuJoJBZ9aaxq5htFube9We4spLiUyNar6VwCOFu4RW3IPUVApu
cCVia/qno2KzRTQ3tzbK88RkgKpcFlHpVCHbc/F098Cvx9/5zm/NH/nMv8mvMGp+bdH1Xyf5t/KO
aRX0zUrry5pOoXOlKZGlitLwXEXqH0yKpIAVY+D42EFKf+fb/wDzlX+aX/OQH54a75M/MiLyxeab
aeWrvWnOneXdO0yaS7hltbWF2kt4kclInZNz0oOwxW31f+cvnO48maj6Oj6P5Y0+ysC0Nr6+gadM
sQ02QRaeicoCQIFFIwN1H2aZzGv7R1Uc3h4SOvS+TssenhLHfX3vCdM/5yI816m02hahF5eGmadp
jW+nWt15c0xYJLOL4TaxQiAhUBZ6LxpSu25rjnU9pcMj4kLAsCh6t6obhkIYIzEJxPnKzUffsmaf
85T+afMGqamPM8Wm8Xii0m9m1HQ9Ple802ZhKIGMkBdkLVf0iCvfqdtd2j2h2xoiIGUZTO+0RQ+N
793R3Gl7N0mogJQBN7czzec+aP8AnI383NM1g699Y8oX+mxXNtHp0sHlvTZJo7USKI4WuZYA4Koo
+zXiabU3ztuz9Zi1AjG/VW58+tfF0mq7Py6e+ONeX3PtW816fUwdT1Dy95fvbq4hb1ZJ9F02ZmWU
yh19R4XLV+sS16j43/mIzWx12W6JHyYeDGkkb817yzvY7C0TS47ttRagTSNPSRbie4Es8x4QFayM
7PzNKvVjU75sYzymHF+hxSYCVP8A/9X6OaFZvLNHEiNJI0CcI1FSTxB2HfLKa+qe3UbW7RQzQyW0
rVPpTKUYoQRyAPauRO4ZW3dxNBHJNtVIhGh8C3xn9YGVhWLGGg2p3yavkH/n4vN9W1L/AJwmn5cP
QvLpy/hwudCYn6KYYrJ+hnlLzRCkWkxcdX9OuqM7XKlHX971nBA3bcxdNvHAUhGRa/YRR6GIzrCc
dGkAWZpGaMD0Dwn5Bf3+9FrQ7HbwVY3F5jtri50iFbHXXil0cmSRmlDAfuWMMvEA+uamnRtjQeCr
5G/5zsu/LWp/84vfmckdv9X8w2ZtZJLSRnaZbY3S8ZWLbFWaSq0OwYbUyuxy6qeT4m/59T6db6b/
AM5e+ZYYSqhvy3vJAg/aL3lgzEfI5PmEB9x/85M3Vzaz6rc20lv61vLqUsNvOoZW4zkEkNUbV69u
uef9vY7zAk7Wbrnz/X0ej7NjxGI6Pzy1jzbqMfnbULuCNVEFmthFBBX94BGtQpoPtN1NRnU9ndlY
9To4kj6QCL7/AMfe8/rtfP8AOyEf4pGNeXefN9CeU/Ld35/XWtX1W9tNLe81GNr6zIleOAhAqRx1
J5nioVaEgD5VzX9tZtPEwjKNTMdqNihtR/s+bv8AsfLl00pEHijE73tue7nt8d/JlXm38n4rjQtW
efUYnit7COC3uFj5xpN64YtykkJVwWDHx32zW6PtGeP1wjZhXM/V5fF2mplDUzIyWIyJPuFbfJ6F
FdeePM+mCaHXrPTdMt7Ga3P1KEepIhX4AXd2CuOBHIKKVqegzPwdp4zmEMeKzseImxfUVQ/FebqD
oeGFzJ67V8nmOreWtF06+0G305tQL6p6i6lPJO8k31cBQaEg8SOWxHemdTj1+aQkZy3G47r9zqNT
gxgxEYjeQvvp/9b6YeUnprOlb/aWIfeoGZVbNNsg8+gR65pBY0WS2YE+3M1/XlZ5JBSXU7xRYrU/
GSGceFQrU/4YD6MriN0ksdN4tK8wNsnSLfFv/Py6cwf9CaXS9YW1KVev7DaK42G56ZAc2Un1NZah
rOk6hoKz+ZLy5LRX04RoQfUFxIrVmKx0UxdEG3evI4lQUy8valI0XlK3XzRqd3MLCeGwluIABdbQ
j17ljGDzXagFBudsU2+Zvzq/PLzP+V35xf8AOPfkXy1qtv5tuvOlxLpnnrTp5I2ubWxL2wF6baBo
3SQoJHV2ISit8J64JbJAti3/ADlTqHlu0/IX81vKcWp3Wr6zb+ULKaPUowqWEkUWtW9uVRKllmXi
oO5BG+UkjxK61+lmY+ji86fPf/PqqST/AKG4vw55NL+V948jE1J5Xlgy/gctHIMA+v8A/nKpbm88
x6fpcUghtdR1m8g1KYkD/R0na4lQV68hDxp3rnOSxwy6oxlt3fP9HP4O4wifh8UBfCLI+H6eT4G0
byympXOr3UN2beaCeSf0CCVeCgLbg/C0Zr1G4753J1A0OHw6Bvr5/teN0mQa3L6OIGJ5HnR58vP5
+T3jytrsPluPy/pOqTJLpWqfWHa8lDV+sesUiDBAQQeKj9WcrmgNXkOUAx4bsDurf7+j1ueA0uAA
kSMpAb7b8x13uur7Q8ry+X2hs4Nbm9fU9YDU0iaQrEkakBU4q5rUEUrX5DOT05xnNy4rNb3v0+13
x0844t9q7m7Py3oUN/rdj5cvoNPe9vYrA2hkZbdZL/4Y45EapjcypwDj4SWAIHXOrPZWOco5o1GQ
7uR/HJ0mTWyjcJbj7XlumaFJBrGsTahexahqtzcfUbCFN0t6SqFWg6FXapBPT7zOR/dgfG3Fyyj4
wobbbdeb/9f2Z5C8t+btJ8z6L5j178xtX8zSWqrTRfRtrPTeLqOsFvEpYqOhZiRl3G1iL1rz/JJ5
pksZRqFz5fg06N2nvLOURTBTXl8bhhxCFj07ZVLKCKbPCLzbVnttL0+eW58y6jFG9bqaZ3iZ6ytz
opaGnQUA60ys5owFkpjhlI0A8Cv/AMzNWsbiaG1vdSubSpMMkrWhlCcacnpbBKftf1zEPaUr2Apz
B2eK3Jt51/z831CSPyP/AM4gatMHMqaJq95KoYLIWFtpEpAYLQEkdQNvDM6B4hfeHBmOE13JH+W3
57+bPzP8uan561d73ylZ6frE9orWet31nHbWMK2vDmYjFFI7GVjI5VeooKnImwDfko5h6V5h816/
pOr3LXf5gfUjqHl03dvy89JzM3JGtPTkkuw9JAXIPEL1Ndhk6q6UDk/I/wA9eVPOn5jfn/p/mbzl
5qtW0rzp5lWxsvMeleZ9P1a9gFtHSCP1be4uJ42WONVV5I/vOGlOz6w/Nxta0z8s/wA1I9c1i882
o+g2mn6dqVysLvAtrciRS7Q/bkIHOSRlWrPvvXKxi4STdkpll4gBQADJf+fU1D/zlzqD1r6v5Vyy
KAa0rNpoI+eSHJAfVH/OWKiTzPPMzygRSarFGysQiSNdCjbftbACm9K5zwjE6vc1ZP6Xruyb/LZK
50D8BzfIelaVeR3urHSLhl1BYGvJZGUn/RwoW4UHcVKtWhFPuzr56iIgJZhcY0B591/J4LF2dIyH
5f65WbPTff7+r1vybpd3rXmHStQ0FRd2nlYyRxR+n6ha5ELyoYg3IBg/HcA0JB7ZzXamcDT5ODaU
t/gSAfseu7O08hlgMxsAxG45EWR8RzrufSH5e65fxXWm6brvlU6HLqmo+pDp2rXY1K8jY15sJGZ2
Ck/ZrxP+Suc5o4wOqAFSG3R3OslIYj0PkWT621nF57t7TTrocvM/mjy/IpkZY41awlXUNRWJW+Jl
iitSztXiDt1Odb+Z4rgBsNyem/R5rJpuGIyE7k0B196Ihe7mvZLuaEwQnzFNqsEKrR3s4p4SsbqD
+0FcgcugrlGCIgJESJiR8ru6+xxNTcpQ2og/qf/Q+hl5rGmeU9JXWtZvotH0+0ijNzfzOqrQgUVe
5JOwA3ORMiyEQ8Y8wfnLZa/prXjWNxpXlu4kijia9hWO9vI3mCMzoC3oIoU/Ax5ksvIItcpy5BDm
3YsUshqL5X87fmNqXmKeeCeWVLSKQc7YEsFSh9N0b9oMfhNAat/qnNVkynIbdvjwjGKHzeb3uo3v
F/Vugskh9YpwWhHKOFFRQQaB5aUNB8ORiWXA9k/5+QaH5k80flP/AM4g3Hl3y5qvmADyvqj3X6Ks
Lm89ITafpTJzECS8OVDSp3ptXN9i+ke4PP5R6j7ywL8vPyxuNF8keW4bfyx5haLV7u3uNaefT72O
SFJPQlvZiGWMRqPQjULxqCCR3rcYRI36tQJBdBotxOnlPzBrvlfXtHu2vbq21EWOnaheSw2tvE08
My24QsS0t1KPibif5fhoUxF2u9U+BPzi/wCceNP0vzRda1+XSed9VgMi3WraIPJ2rWMttLIwPCxn
dHSTl9rcKF6VIGV0Gdqfl3Q/z6k/LDz1oWseW/N9xY31py0yyvdIv5LpYY50DoWMNT6nIEDenEno
clezGt315/z6M8leefL/APzldr2oeYfJ2u6BpknkPWIo73UdOurSFpHv9PdU5zRopYgEgVr1yDN9
Wf8AOW92ItfubdkZmur/AFNUUbAMLlgjNvXiGoDTxzmc/pz+JxAUevnb2PYkDkxShwmQIF1tt1Hv
PT3PkDyTrcuq65PYyTxpDcRSW9xyZljaMgll+EVZtu+2W9oameWFE7WPh5/a9B2b2Vg0GM5BEmZv
fa/cd9hXxt9g/lJ5B83ReWJY/L2iXWt2TX7WV/dWEyxpbzRKrVC8ldFpKPiC+JrUUych4kCDR2AP
cB31+N3j9TqD4u3pAJIJsyN8+KW/EencAkc13f8AkfzxfvJcjUdQ0W5eOG4ldpeMg+FiCT8RjNQC
fDNfinCEiYjkXKnc4gS6h9V6lpGqeb4dJ80+S2h1fX7TTtNHmKNvQUWJuYpQz2olYKSwkZZB14nw
Jp0PDPJjrGRxULs1X483RTMYS9Q23pJbhfM8XmBtMurI/X0u7aJLZ0owmmm/dRircDUkEEHjv4YY
6eAgce0Zf7Emubr55ZHICbq/i//RGa9deb/O17ofmnzDrF1azWEKK2n3FpN6Fk0noJdWtokZChre
WKUGfg/qwScG57jMTNqo4xXVzdNo55zY5d6X+arrTbTUrTyxPLHc6bNYtFNc28bvbpRAJZVeRarw
EbOhbf7OaXJqJTs3uHfYtPGMfSK36vPILFJJTZyQQP5g0Mxw8ElCSyTtJGbW15FVU0dZZWI6caU3
yHi7da/FtvggnpSX2mhWNvai7t475tNlmkkt0hkLNdRaVbPO8oYONpriQ/TQ7BcsGUS2v8H9jA4D
EcvwX76flJcmx/J/8ruVzFa2tn5I0me6uZ1LcUisYasxDqAAKk50OM+ke55fOP3kvefvYD5G/wCc
mPJ/5oav5l8r+Sby4g82+XIVvX0TXdKuLCS6sGlEQvrZWlrJCxIANQwqOSgHKPzIlHihRCDjMTUg
QXeePzw8xeVtEstb03RINZjubiCNrKO3mM/pSkgsqiYbr3rt1zXantPJjjEwhxcRGzfi04kSCaoP
C/Nn/OYvnXQ2sksPLmgyvPD604uPWYANRkCPDcsjfCwrxY/dmt7U7e1OkMQMcdxvZ8+m7kaXR48w
NyL0zyL+dP5pfmB5Z07zDb+SdCmkmZ0lZ1njhWvMq8byTMWFFAIAO56jNj2f2jqNVijPgG/mfxTV
m0+PFIgyegflz5+/MPWvOMmgea/JGl6Jp62k8sGsWEobl6ZjEa8TIxHPk2xG3HNjiy5ePhmByux+
pxpxhw3E/B+Sv/OZ3mX9D+fLNYrdXl/SGryO7qCGSO9UFTUjbcEZq82k8eUr6H9bvNB2uez8ZMRZ
kB+349z5E8jSWsXmhFEyyLdSqyB1MW0j71rsoIqK12ynPgAB4tokF63T9u/mNGOEXKNb9a5X8Otv
2I/L/wA7Lbi18u2Fpb6follbNPAyGnD0UBJZf2hQVNfD3zQ9n6yRkYSPPe3nu0NOPq68nxd5uM11
rc1/CJIo9SSO5D3P23eUcnk268jvQDIaTUiIIJvcudkw8VbdH1Z+Vkf+Ffy41G+T6xMdav4YL2WZ
igkWMgMUjPVQCy+P3ZsMeqmMM5g1ZoOtz4YnPGB6C2f3+vWvmTQItWVylx5J1O2t5ItgslhdEN6b
Cm4SSMEfM5tNNqTm0cjL6oXR+DrdVp+HUQrqR97/AP/SLNf8xx6j5X8utDPcWM1qLuG6jS6nm9Zg
sRFwrM3BBwZUCIoX4Sepzk80zLILkNu/3vb6bFwcVR6Dl0/WlGsfWm0XR9RiuZWjSee2gVjvK6FZ
JDJQAlAJUTlXqDkIx9R5b+bYCQCN/kt1h7xDpuuRXi3iwGKxu9RaFfTk1VojNMQNi3pJNxqBSg98
MYmqrZjEwOxP2dEPdWJiOq2OmWdvqVpZW8em3t/ExCRSzM3rEGMBVDvyVQCAdvE5EE1ZsfBlHhNb
jn31+Kfp1+ef5in8qf8AnFPQdLS2vovMPmryFH5d0M2MayLb3J0+JH9RyaKApIFKknp0zp4S/dxH
eA8VnI8SR8z9788fI3516z5M/Nb8nPzC83WSRWo8rala69YW84SYRXsawSSkqgG0kSusLbVH2q0z
T9n6MYTmEb+oD9P6ebm9oazxI4ia5Xt8v0cn2V+a3nFoLbRINJmhhsdTuAttGiniYjCrx8FcrxLA
036V3zB105RAqVb7nnQ706cgHlez5V/M6w0XRvLvkqV9O0mPT9N0i6ksNTt7l3S3itZbS2hihWQN
QAyUNW2PjmwyaTLqtDllCfFORjRGwoHfr1F33uHDNHFniJCgLfpx+RWgXnlX8qfK+kaoiR6hFC73
Ko3Jas5IKt3BG4OZnZun8DTxh3I1E+OZL1jQ1hTzLpUYASVra7l4DuG4Cvv/AG5lRN5Pgwr0vx7/
AOcttLttZ8y69FPEo/R19q17BMgJuA8Fw7UjPg1KEfLMXEJmWThF77ss9cMb7nw15AsbzU5tWt/U
NtqtjayXEEj7msDqs1tJtVSTQfqrhzY4zHCdgfxyczsTWSwZCALvz91vv3yRe6jdav5Xa1kB+vpc
29yZGPFIrizmRnAX7RSoIB2JGcFoogZ6PSw9Vrx+7J9xeiTeVru6fy9ZwQrqryCOGK6tx6kZ9NaF
xJ0UACp5EU75j/l82OZgIkm2ePU4zHiJADM9euxb+WrCwsLiIWmmagiXBiPqJK3psJGV12+2flm/
yYvD0oBG+3zt0+PJ4mpJ77+TFfJ2uA6H+aEMshELQafIlenNLtAuZ2hFaXKPL9DHWj97j/rD73//
05QLn8sYfI3kPy5cTuPMM9vqeozDQjFdCOO6uBFDHMZVkZVAtQwVvhWpPfOQnxd3ve3xcBmTyGwH
y35Iu/8ALvlS6/LSwuNT1KWHUptUa2spbiJDDZwW8X1y8Yqjwq4me6hBYiq8eIpvgFxF1ZtmKll4
RKhVnzN0PuXaH+WUHmXyrNH+mbe1s/K+lXuoxWpL2d1JfXk0cdsJSTPGI3YRAndqKaddhDIJWTtT
LLCUCADfEQO/YbsR0Tydr2vaXpfkrR7aMX+u68Gv74XKIshipDaKEdUYqrSSud67jwwxlZ2PNGSJ
jc5AVEdz7v8A+cofL723/OMnku20f0tcPlaz0kW2qSJQPBBAIjOB8VPUUA06bjNj2tm8HHglZEeO
IJHcQRv5XTzGmxjLkyggXwyIHcQb+dW/J2HUI7sx39xPGNAsZT9duLgH98nxBIUEaqpLORRRWtKn
pXK+0cvBjOLET40/pAPFXL1G+QA6lq7PxceTjyAeFH6idvh5nyD6B/MDzh+l/MX5ZabBqA022mLr
6ssS3EQaKCFFLQsCHAr0rsN8pyY5cNjmCPnuomCfI2mfmz8wvKa+b/Ktn5y0G+uraS1ZbK70G4P+
iyPcwKV+rjl6qyzcDseQ6Gu+bPDjzjRjhMY94HLmeRcORgcxuz3P1P02+9PTtOt3lZ2W3j9WV1Cm
pXkxYKAAfEAZlwJjAX3JIssd8h+ax5m/OMQ2rE2OmaNehD2b95AisPnRsxtLPjzE+X6m3IOGFeb4
X82655B84eZvzNHmHVdO0j/DHmPWbLUPrlxbkxLBeyRtIyuwdVb5D5nNfnlmx5pcBkLPTq3YcmLJ
j9YG227xiP8AJryxZaPrPmryF5ksLqzmluNQvtftrxJ4pFTlJJE1SycRUjipBHucnDtGULjmgJDz
2PvtnjwQgePFIj7R7mMfl9501aPyxp/nLQrJL1dLm9VbRixA4giWKtK/ZLAbeGc1rBDS9oEHaJIP
u4npNNlOu0Ql/FuD74l7Po/nXyL5qtdO16G4utMF1JJNeWc9tJXk9Q/pmIlWDHsaZ0AHqMTzdJ6q
BDINT846TeaZbaTo9rKtrZsWe5kpHycglTwqSS34ZDtXGRp+LzAcjs2P77fuLHNLvxp3lDXXuZEh
m8x3cf1NHkVGeGyNW4gkFqySKBTwy7T4ZDQykBzB+VFjrMsTqscL3sfeH//U7Xax+XdU/MDzV5M/
5Vzqfq6JDawSeYZtKkjsZvVhhEkdtMEBcIWYv2PFj4DNB+UnvKtnpo9o4+EA82Q2n5P+VbT9Apf+
TpIxJGLjSvq8c0aQM4DSh41UKpYBSeQ+fTH8tkBNgs/zuGXKQCofyN0G9tru2h1bzJo1h5mvYXa2
ieaT1BaM7QqfWV6IrSMQtAAaU6DI+BK+vySc0OYINea2P8ovMth5jn1ryj5yu1ltbaQ2P1/TvrNt
aTPA1ssluWXmWUOXoGHxD2yH5aQOw3DKWcSjUpbHpb7ubyuLr8p/KnknVLmNDJ5RtNNubwx/D6sM
MC+oI3PZl5AE1zP1+m8fT+Eeorv7nQ4c/h6g5BvUrfz2/m35a/MTT/zW81+WLjQNZubXRtau9O0y
a3064e0jjDjhcWxhi9Kkq0PLrQ7nbJ9laDHpcIAHqI9R6y997/Dk19oaueoyXdRB2HQfjvez+YfI
WveatITTbbR9UtdS0WNJtGvZLa4BFxGAq1cp0cCh+/MQ3E7iweYpjAvMLa484zeYPJl15x8peapf
8Jmz/wAWatFptw07rZ3sUohtouPxvJ6YXqANzWgzZY+GOLgjy6e5x5gmfEX7NvrsWp20aSWd3Db3
sCyPHLDIkio68yGAGzAbEV9shIcYIPJtBo7IP/nHKWW4/MjXJhp93ZWwtJYofrMbrVUEbChKqtBz
7ZXo8YjMkdQyyysPxt/5yM/LbVIvzZ8+XFt5Q1u61DXvO3mK/nvodPu5eVq+pTiFQVRowpA5KRXl
XelMycEjkzSG/CDTg6qBx4weZO6F0vyX520+Lyro9x5Muj5d1pn1F7KwtL2jytJ6PqXtv6ZEUvGM
qFB6b03zXdrRJMhDi447d4P9UuZ2cLiDOuE7jof859Rfl5+XfnnyIsuk6t5XvH0HU4be4/SltC7Q
C7mQetEYuPOMKaAchStd85nt3snU+nPwSIGx6mr25e96PsTW4oRlh4hd8Q6DzH2Pc9L/AC38v2dk
lidD1Gzll5zR3tpbF4JA5JpJC/SRa78aVFDmdgwZIxidzY7vsPucXU5I8ZqhuxzVvK4029a00fT9
Q1aKd1W1nGnzxASuONDWtQtetBkdWc2ryQ00AaBsmjV/sczRCGCEs0yLI2Fjl+1MPzV/LJLXVvyo
0WLyl+m7l9Ns4G8yxm7WWwu5b51cNHGpiZPjViGFRua51WbVZdII6GF+HkiImgCN9tz0dFCENRM6
qVcUJWO/vf/V+lN7/wA5bx2N5f2cv5YeelNjc3Fsk72cAjuDBJwEkJVGJjajEsQAnGjGrJyU0yC0
/wCck7i+8nv5xtvy781tDb63caLeaCY7ddSQQWJvhcrAY/ijlAKx7jkePTlQK0xP/levlG98t6v5
ruPyh1/nYaxa291pk1hbfWpHvree5N5tGRRPqxVlFX5FPh+NOSikz8v/APOTGi67r2kaC35feZ9I
/Sd2+nvqN3bQJb2/pofSqxRVcSGMonE0JU0Y03Vp9V3Fx+j39O71gWkCIhE8iRKg5Eqq1I/ycVeS
Wn5meb7hr8P5RhhFqYxaU8xaPI1yZLhIVoFHwfAxerbGnEbnFVa2/MnzW+r29ne+VorHRpboQTeY
Dr+kSLEnIqZDbr8bFRQlFNd8VZh5zvGstIu5prSLzFPYy20lhpNzLaWizzO23Ca4AjRkXkwr1pQb
nFXlem+aNWs72BbP8rdPsItVVDNew67ooYrId/gChnKuACB36YqnVv5+80x32lWsHkeIHUJktpZ4
df0dvSDMijih4tKV5GqoNqU3rirPvNnmLVvLumz3Wm27+YdSil4RaN9YtLFpY1CtLKs1wOAEatUj
rTFXn0P5neemu4oJ/IkdvASjXd7/AIk0ZlhiYrzkK8QzBVauw37Yqmnlz8wPOGt61pmk33lNdHiv
+RnvBrml3bQqEZwwt4lEkgIC7qP2q9jirJvNvmC80vSpVtIE8x390ZYv8PS3NnYGW3V2imkMtyBH
xUCpHWmKvKz5jntbnSp9G/K+wuZ4raIy3UesaLF9RnNBHbg/EW32VwOJNMbWmS6P5x1O+sNUlv8A
ypBol1Z2lxPb6WdX0u4a5uYwiw23KIUjMxPEMwotN+oxV//W+0qpctLLcxpfhopKrERfUch+NGRg
VZTUn4e2+/TFWDS6Tqvlu6uNds5r3UtP0B/UsIb19c1GZIJ2ghuopLTnwnWOMO8ZqWQkNxNDVV7J
oPmDS/MM95Fb6RfafJYpC6nUrJrMzR3EYkDwrKA7Ba8X2HFgVO4xVk4ggBBEKAjoQoxVhfnCnozg
hyDHACY0eQisj0PGNXY0PtirzyGO6tYHv44PXMEjK0TNdLKUAQqVj9Ak0Z+y8d9zToqi9FutStZm
ttNlubb6zNDE4a2mlKJybcGSBgaAVNKDfdhscVZX5rWcPGFmBcSxJMzK9JA0EqsCY1fjy8SNu2+K
sBYPKsVtE0sVsJyBctHdFl+H4SQ0QZQAQOtB1bfFKfaP+mhqdq1ulzBNcXCxXl7JBccGjARnYetb
BBUAKDtX+auKEy85qJLm0hfkYmupmmRVnJKqkFSDArUIr3pirFZ5HnEFyrzwCYNHcn0rtiKOZDUf
VxQDsdq4qyjSdMsZLq0vbua/uEjZY4bNLS7WNGduUZEwC80UqatSm+5pTFUB5pjabVLCMyyxwr6/
q8FnZSJLuVTURRupoK7E/hiqSklZ1kMzRp9YJF0VuWMZgjO28IFDtXl1oCKknFWVaJdB9H1eze6l
EcemTtBpxgmqq+n8UnrNEsjMxP2BUjtir//X+yv+h/WLv/eX1+Q4cf0Nz5+qvGvflxr17f5WKvP/
ADD+lvrWu/Uef6O/Q0n176v/AIW5fW+Cepw+s7/Z9T1PW/d15fs0xS9g8mf8qp+uf86J/hv9JfUn
r+ifq31j6l9YPL+6+P0vXr/k8vfFD0fFUg1H9FfW3/TH1X6p6EX+9np+lz9RuH95tyr0xVRP+D9q
/oanp7f7z/3fFfw48fop7Yq8B8y/Xv8AlZsX+E/8V/U/TH1v9Af4d/Rf+856et/p3Ll9qm3L/JxS
9Y8mU/wxon+L/rf6S+o2n1v/ABP9S+v/AFikn+9H1b/R/Vp19LbwxQyOf/BdJPrH6E40/e+p9WpT
kv2q+/Hr3pirwTzJ/wArA/xR5m/QX/Ky/wBCfUrv9F/ov/Df6N9T6t+5/Rv1j994en63w8+u2Kvc
NK/Rv6L0/wDxD6f1/wCrR+p+mPq31rl9Wh9f1OP7vnX+84fDXptTFUV/zpPB/wDjien/ALs/3m49
e/brir5zvf8AlYX1vzX+hf8AlZv6H2/QH1P/AA19W4fW4v8Ajmd/T4V4+v8A7q5ftccUvo4f4e5R
fpP9H/XvUuPQ+t+j63H1pa8ee9K8unvihdN/hT0p6fomvpnnT6vWnp7V5bfY8dqe2KvkqD/F36O1
Th/ysynrWX1Sn+Dvrv6O/f8A1r0+Pweh9n1eXxfYp+1il//Z

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://admanager2.broadbandpublisher.com/newspaperBanners/showAbanner.adp?vchSerialNumber=s7e22z165m&iSection_Id=&iStory_Id=&iPaper_Id=871&javascriptIncludeMode=0&iPosition=1

R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.redandblack.com/media/css/global.css?v45

BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
A {
	TEXT-DECORATION: none
}
STRONG {
	FONT-WEIGHT: bold
}
IMG {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
#cprightcol A {
	DISPLAY: block
}
#cpleftcol A {
	DISPLAY: block
}
#cprightcol H2 {
	DISPLAY: none
}
#cpleftcol H2 {
	DISPLAY: none
}
A.subnav:link {
	PADDING-LEFT: 1em; FONT-SIZE: 11px
}
A.subnav:visited {
	PADDING-LEFT: 1em; FONT-SIZE: 11px
}
BODY {
	MARGIN: 0px
}
BODY {
	FONT: 12px/14px Arial, Helvetica, sans-serif; COLOR: #333
}
P {
	FONT: 12px/14px Arial, Helvetica, sans-serif; COLOR: #333
}
TD {
	FONT: 12px/14px Arial, Helvetica, sans-serif; COLOR: #333
}
LI {
	FONT: 12px/14px Arial, Helvetica, sans-serif; COLOR: #333
}
H1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 0.2em; PADDING-TOP: 0px
}
H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 0.2em; PADDING-TOP: 0px
}
H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 4px; FONT: bold 18px/1.2em Arial, Helvetica, sans-serif; =
PADDING-TOP: 4px
}
H4 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 10px; PADDING-TOP: 0px
}
H5 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 10px; PADDING-TOP: 0px
}
P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 10px; PADDING-TOP: 0px
}
.smalltext {
	FONT-SIZE: 0.8em
}
.nobottommargin {
	MARGIN-TOP: 1em; MARGIN-BOTTOM: 0px
}
.graybox {
	PADDING-RIGHT: 8px; BORDER-TOP: #aaa 1px solid; PADDING-LEFT: 8px; =
BACKGROUND: #eee; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-TOP: 8px; =
BORDER-BOTTOM: #aaa 1px solid
}
.note {
	BORDER-RIGHT: #aaa 1px dashed; PADDING-RIGHT: 8px; BORDER-TOP: #aaa 1px =
dashed; PADDING-LEFT: 8px; BACKGROUND: #fff; PADDING-BOTTOM: 8px; =
MARGIN: 0px; BORDER-LEFT: #aaa 1px dashed; PADDING-TOP: 8px; =
BORDER-BOTTOM: #aaa 1px dashed
}
.smallnote {
	BORDER-RIGHT: #aaa 1px dashed; PADDING-RIGHT: 8px; BORDER-TOP: #aaa 1px =
dashed; PADDING-LEFT: 8px; FONT-SIZE: 0.8em; BACKGROUND: #fff; =
PADDING-BOTTOM: 8px; MARGIN: 0px; BORDER-LEFT: #aaa 1px dashed; =
PADDING-TOP: 8px; BORDER-BOTTOM: #aaa 1px dashed
}
A.button:link {
	BORDER-RIGHT: #eee 1px outset; PADDING-RIGHT: 8px; BORDER-TOP: #eee 1px =
outset; DISPLAY: inline; PADDING-LEFT: 8px; BACKGROUND: #eee; =
PADDING-BOTTOM: 2px; MARGIN: 0px; BORDER-LEFT: #eee 1px outset; =
PADDING-TOP: 4px; BORDER-BOTTOM: #eee 1px outset; TEXT-ALIGN: center; =
TEXT-DECORATION: none
}
A.button:visited {
	BORDER-RIGHT: #eee 1px outset; PADDING-RIGHT: 8px; BORDER-TOP: #eee 1px =
outset; DISPLAY: inline; PADDING-LEFT: 8px; BACKGROUND: #eee; =
PADDING-BOTTOM: 2px; MARGIN: 0px; BORDER-LEFT: #eee 1px outset; =
PADDING-TOP: 4px; BORDER-BOTTOM: #eee 1px outset; TEXT-ALIGN: center; =
TEXT-DECORATION: none
}
A.button:hover {
	BACKGROUND: #ccc
}
A.button:active {
	BORDER-RIGHT: #eee 1px inset; BORDER-TOP: #eee 1px inset; BACKGROUND: =
#eee; BORDER-LEFT: #eee 1px inset; BORDER-BOTTOM: #eee 1px inset
}
INPUT.liquid {
	WIDTH: 95%
}
TEXTAREA.liquid {
	WIDTH: 95%
}
FORM TABLE.form_table TD {
	PADDING-BOTTOM: 5px
}
.form_error {
	BORDER-RIGHT: #cc0000 1px dotted; PADDING-RIGHT: 5px; BORDER-TOP: =
#cc0000 1px dotted; PADDING-LEFT: 5px; FONT-SIZE: 15px; PADDING-BOTTOM: =
5px; MARGIN: 5px 5px 15px; BORDER-LEFT: #cc0000 1px dotted; COLOR: =
black; PADDING-TOP: 5px; BORDER-BOTTOM: #cc0000 1px dotted
}
.validation_error {
	COLOR: #cc0000
}
.validation_note {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; BACKGROUND: #cc0000; =
MARGIN-BOTTOM: 4px; PADDING-BOTTOM: 2px; COLOR: #fff; PADDING-TOP: 2px
}
FORM {
	MARGIN-BOTTOM: 0px
}
.top_bar {
	BACKGROUND: #eeeeee; BORDER-BOTTOM: #999999 1px solid
}
.evenrow {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: #edf3fe; =
PADDING-BOTTOM: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: #999999 1px solid
}
TR.evenrow {
	BORDER-TOP: #aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid
}
.oddrow {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: #fff; =
PADDING-BOTTOM: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: #999999 1px solid
}
.forumname {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 10px; COLOR: blue; PADDING-TOP: 0px
}
.adminbutton {
	FONT-SIZE: 12px; WIDTH: 85px; FONT-FAMILY: arial, verdana, sans-serif
}
#cp_pdf_results LI {
	PADDING-RIGHT: 10px; PADDING-LEFT: 30px; LIST-STYLE-POSITION: inside; =
FONT-SIZE: 1.1em; PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-TOP: 10px; =
BORDER-BOTTOM: #666 1px solid; LIST-STYLE-TYPE: none
}
LI.pdf_oddrow {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/pdfimage.gif) =
#f5f5f5 no-repeat 5px 50%
}
LI.pdf_evenrow {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/pdfimage.gif) =
#edf3fe no-repeat 5px 50%
}
H4.cp_link_underline {
	FONT-SIZE: 11px; COLOR: #666; TEXT-ALIGN: right
}
H4.cp_link_underline A {
	COLOR: #666; TEXT-DECORATION: underline
}
#calendar_header {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 10px
}
.calendar_dark {
	BACKGROUND: #666666; COLOR: #c9c9c9
}
#calendar_border {
	BORDER-BOTTOM: #aaa 1px solid
}
#forum .graybox {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 8px; =
PADDING-TOP: 8px
}
#forum .originalmessage {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: #eeeeee; =
PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-TOP: 8px; BORDER-BOTTOM: =
#999999 1px solid; TEXT-DECORATION: none
}
#forum .replymessage_even {
	PADDING-RIGHT: 8px; BORDER-TOP: black 1px solid; PADDING-LEFT: 8px; =
BACKGROUND: #eee; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-TOP: 8px; =
TEXT-DECORATION: none
}
#forum .replymessage_odd {
	PADDING-RIGHT: 8px; BORDER-TOP: black 1px solid; PADDING-LEFT: 8px; =
BACKGROUND: #fff; PADDING-BOTTOM: 8px; MARGIN: 0px; PADDING-TOP: 8px; =
TEXT-DECORATION: none
}
.recordSetBrowser TH {
	BACKGROUND: #eee; TEXT-ALIGN: left
}
.hilite_table {
	BORDER-RIGHT: #666 1px solid; BORDER-TOP: #666 1px solid; BACKGROUND: =
#f3f3f3; BORDER-LEFT: #666 1px solid; BORDER-BOTTOM: #666 1px solid
}
#searchResults H1 {
	MARGIN: -4px 0px 4px; FONT: bold 13px arial, verdana, sans-serif
}
#searchResults H2 {
	MARGIN: 0px 0px 4px; FONT: bold 11px arial, verdana, sans-serif
}
#searchResults {
	MARGIN: 0px 0px 6px; FONT: 11px arial, verdana, sans-serif
}
#searchResults P {
	MARGIN: 0px 0px 6px; FONT: 11px arial, verdana, sans-serif
}
#searchResults TD {
	MARGIN: 0px 0px 6px; FONT: 11px arial, verdana, sans-serif
}
#searchResults .oddrow {
	BACKGROUND: #edf3fe
}
#searchResults .evenrow {
	BACKGROUND: #eee
}
#searchResults TD {
	PADDING-RIGHT: 8px; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; =
PADDING-TOP: 8px
}
#searchResults TH {
	PADDING-LEFT: 7px; BACKGROUND: =
url(http://media.collegepublisher.com/media/images/search_header.gif) =
repeat-x 50% bottom; FONT: bold 11px arial, verdana, sans-serif; COLOR: =
#4b4b4b; HEIGHT: 18px; TEXT-ALIGN: left
}
#searchResults .scorebar {
	BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BACKGROUND: =
#fff; BORDER-LEFT: #999 1px solid; WIDTH: 50px; BORDER-BOTTOM: #999 1px =
solid
}
#post_form {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#post_form TD {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#post_form_inner {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-LEFT: =
#aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid
}
DL#post_form_inner {
	MARGIN: 0px 5px 5px
}
#post_form_inner DD {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#post_form_inner DT {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
.graybox DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.graybox DT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
.graybox DD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none
}
#search_directions_body {
	DISPLAY: none
}
.middletd {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 10px
}
.texttd {
	PADDING-RIGHT: 4px; BORDER-TOP: #fff 1px solid; PADDING-LEFT: 4px; =
FONT-SIZE: 11px; PADDING-BOTTOM: 4px; COLOR: #58595b; PADDING-TOP: 4px; =
FONT-FAMILY: Arial, Helvetica, sans-serif
}
.toptd {
	BORDER-RIGHT: #fff 1px solid; BORDER-TOP: #fff 1px solid; BORDER-LEFT: =
#fff 1px solid; BORDER-BOTTOM: #fff 1px solid; FONT-FAMILY: Arial, =
Helvetica, sans-serif
}
.buttons {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 3px
}
UL#address {
	MARGIN: 15px 0px
}
UL#address {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#address LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#login FIELDSET {
	BORDER-RIGHT: #666 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #666 1px =
solid; PADDING-LEFT: 10px; BACKGROUND: #ccc; PADDING-BOTTOM: 10px; =
BORDER-LEFT: #666 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #666 1px =
solid
}
#login DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#login DT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#login DD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.graybox DL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.niceFont {
	FONT-SIZE: 10px; FONT-FAMILY: arial, helvetica, sans-serif
}
#fullcalendar {
	BORDER-RIGHT: #aaa 1px solid; BACKGROUND: #eee; BORDER-BOTTOM: #aaa 1px =
solid
}
#fullcalendar TD {
	BORDER-RIGHT: #aaa 1px; BORDER-TOP: #aaa 1px solid; FONT-SIZE: 10px; =
BORDER-LEFT: #aaa 1px solid; BORDER-BOTTOM: #aaa 1px; FONT-FAMILY: =
arial, helvetica, sans-serif
}
#fullcalendar TD TD {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
#cal_header {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BACKGROUND: #666; =
PADDING-BOTTOM: 3px; COLOR: #ccc; PADDING-TOP: 3px
}
.dark_head {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BACKGROUND: #666; =
PADDING-BOTTOM: 3px; COLOR: #ccc; PADDING-TOP: 3px
}
#cal_header STRONG {
	COLOR: #ccc
}
#cal_header A {
	COLOR: #fff
}
#loggedin_bar {
	BORDER-RIGHT: #eee 1px outset; BORDER-TOP: #eee 1px outset; BACKGROUND: =
#eee; BORDER-LEFT: #eee 1px outset; BORDER-BOTTOM: #eee 1px outset
}
#loggedin_bar IMG {
	PADDING-RIGHT: 4px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#loggedin_bar TD {
	PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 2px; =
PADDING-TOP: 2px
}
#ncbar {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; BORDER-BOTTOM: #fff 2px ridge
}
#agent99 {
	BORDER-RIGHT: #6a6a6a 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: =
#6a6a6a 1px; PADDING-LEFT: 14px; Z-INDEX: 99; RIGHT: 444px; LEFT: 158px; =
VISIBILITY: hidden; PADDING-BOTTOM: 0px; BORDER-LEFT: #6a6a6a 1px solid; =
WIDTH: 291px; LINE-HEIGHT: 1.4em; PADDING-TOP: 10px; BORDER-BOTTOM: =
#6a6a6a 1px solid; POSITION: absolute; TOP: 31px; BACKGROUND-COLOR: =
#f0f0f0
}
#agent99 TABLE {
	FONT: 12px/14px Arial, Helvetica, sans-serif
}
#agent99 A:link {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
#agent99 A:hover {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
#agent99 A:active {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
#agent99 A:visited {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
#formtext {
	WIDTH: 202px
}
#search {
	WIDTH: 54px
}
#cp_extras {
	PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; FONT: 11px =
Arial, Arial, Helvetica, sans-serif; PADDING-TOP: 6px
}
#cp_extras A:link {
	FONT-WEIGHT: bold; COLOR: #000
}
#cp_extras A:visited {
	FONT-WEIGHT: bold; COLOR: #000
}
#cp_extras A:active {
	FONT-WEIGHT: bold; COLOR: #000
}
#cp_extras A:hover {
	FONT-WEIGHT: bold; COLOR: #900
}
A#stafflogin {
	BORDER-RIGHT: #bbdff9 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#bbdff9 1px solid; DISPLAY: block; PADDING-LEFT: 5px; FONT-SIZE: 16px; =
BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/over.jpg) #fff =
repeat-x left bottom; PADDING-BOTTOM: 5px; BORDER-LEFT: #bbdff9 1px =
solid; COLOR: #1a3787; LINE-HEIGHT: 24px; PADDING-TOP: 5px; =
BORDER-BOTTOM: #bbdff9 1px solid; TEXT-ALIGN: center; TEXT-DECORATION: =
none
}
A#stafflogin:hover {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/click.jpg) =
#fff repeat-x left bottom; BORDER-LEFT: #aaa 1px solid; COLOR: #666; =
BORDER-BOTTOM: #aaa 1px solid
}
#log_left {
	FLOAT: left; WIDTH: 230px
}
#log_right {
	FLOAT: left; MARGIN: 0px 0px 0px 10px; WIDTH: 230px
}
#log_both {
	FLOAT: left; MARGIN: 0px 0px 25px
}
FORM#login {
	MARGIN: 0px
}
A.faux_button {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px =
solid; PADDING-LEFT: 4px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/vote.gif) #fff =
repeat-x left bottom; PADDING-BOTTOM: 5px; FONT: 12px/12px =
arial,sans-serif; BORDER-LEFT: #ccc 1px solid; WIDTH: 75px; COLOR: #666; =
PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; =
TEXT-DECORATION: none
}
A.faux_button:hover {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/click.jpg) =
#fff repeat-x left bottom; BORDER-LEFT: #aaa 1px solid; COLOR: #666; =
BORDER-BOTTOM: #aaa 1px solid
}
#poll A {
	MARGIN: 5px 5px 0px
}
.hidden {
	DISPLAY: none
}
#fplead {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 8px; MARGIN: 0px =
0px 8px; PADDING-TOP: 0px; BORDER-BOTTOM: gray 1px dashed
}
TD.fparticle {
	VERTICAL-ALIGN: top; TEXT-ALIGN: left
}
.lead_right .fparticle {
	PADDING-RIGHT: 8px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.lead_center .fparticle {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 8px
}
.fpimage P {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: =
0px; FONT: 10px/1.1em Arial, Helvetica, sans-serif; PADDING-TOP: 4px
}
.fpimage IMG {
	DISPLAY: block
}
#cpcentercol {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 10px
}
#fpaio_3 #sidebar IMG {
	BORDER-RIGHT: #aaa 1px solid; BORDER-TOP: #aaa 1px solid; BORDER-LEFT: =
#aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid
}
#fp_feat_1 .fp_feat {
	CLEAR: left; FLOAT: left; MARGIN: 0px 0px 15px
}
#fp_feat_1 DL {
	BACKGROUND: #ddd; FLOAT: left; MARGIN: 0px 8px 0px 0px
}
#fp_feat_1 DD {
	BACKGROUND: #ddd; FLOAT: left; MARGIN: 0px 8px 0px 0px
}
#fp_feat_1 DT {
	BACKGROUND: #ddd; FLOAT: left; MARGIN: 0px 8px 0px 0px
}
#fp_feat_1 DD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#fp_feat_1 DT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#fptemplate2 #fplead {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 8px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
VERTICAL-ALIGN: top; PADDING-TOP: 0px; TEXT-ALIGN: left; =
BORDER-RIGHT-WIDTH: 0px
}
#fptemplate2 #fpfeatured {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 8px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
VERTICAL-ALIGN: top; PADDING-TOP: 0px; TEXT-ALIGN: left; =
BORDER-RIGHT-WIDTH: 0px
}
#fptemplate2 #fpfeatured {
	PADDING-RIGHT: 0px; PADDING-LEFT: 8px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#fptemplate2 #fpfeatured H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 4px; FONT: bold 16px/1.1em Arial, Helvetica, sans-serif; =
PADDING-TOP: 4px; BORDER-BOTTOM: black 1px solid
}
#fptemplate2 H4 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 20px; BACKGROUND: =
url(images/digiarrow.gif) no-repeat 0px 5px; PADDING-BOTTOM: 2px; =
MARGIN: 0px; FONT: bold 14px/1.1em Arial, Helvetica, sans-serif; =
PADDING-TOP: 2px
}
#fptemplate3 #fplead {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 8px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
VERTICAL-ALIGN: top; PADDING-TOP: 0px; TEXT-ALIGN: left; =
BORDER-RIGHT-WIDTH: 0px
}
#fptemplate3 #fpfeatured {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 8px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
VERTICAL-ALIGN: top; PADDING-TOP: 0px; TEXT-ALIGN: left; =
BORDER-RIGHT-WIDTH: 0px
}
#fptemplate3 #fpfeatured {
	PADDING-RIGHT: 0px; PADDING-LEFT: 8px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#fptemplate3 #fpfeatured H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 4px; FONT: bold 16px/1.1em Arial, Helvetica, sans-serif; =
PADDING-TOP: 4px; BORDER-BOTTOM: black 1px solid
}
#fptemplate3 H4 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 20px; BACKGROUND: =
url(images/digiarrow.gif) no-repeat 0px 5px; PADDING-BOTTOM: 2px; =
MARGIN: 0px; FONT: bold 14px/1.1em Arial, Helvetica, sans-serif; =
PADDING-TOP: 2px
}
#fplead H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: =
0px; FONT: bold 18px/1.1em Arial, Helvetica, sans-serif; PADDING-TOP: =
0px
}
#fplead P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.5em; MARGIN: =
0px; FONT: 11px/1.1em Arial, Helvetica, sans-serif; PADDING-TOP: 0px
}
#fpfeatured H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: =
0px; FONT: bold 16px/1.1em Arial, Helvetica, sans-serif; PADDING-TOP: =
0px
}
#fpfeatured P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.5em; MARGIN: =
0px; FONT: 11px/1.1em Arial, Helvetica, sans-serif; PADDING-TOP: 0px
}
.article_byline {
	FONT: 9px/1.1em Arial, Helvetica, sans-serif; COLOR: #666
}
.article_byline A .image_byline {
	FONT: 9px/1.1em Arial, Helvetica, sans-serif; COLOR: #666
}
.image_byline A {
	FONT: 9px/1.1em Arial, Helvetica, sans-serif; COLOR: #666
}
#profile_button {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; BACKGROUND: =
url(/media/assets/images/profile.gif) repeat-x; PADDING-BOTTOM: 3px; =
COLOR: white; PADDING-TOP: 3px
}
#fplead TD {
	PADDING-BOTTOM: 25px
}
.lead_left {
	MARGIN: 0px 0px 15px; TEXT-ALIGN: left
}
.lead_right {
	MARGIN: 0px 0px 15px; TEXT-ALIGN: left
}
.lead_center {
	MARGIN: 0px 0px 15px; TEXT-ALIGN: left
}
.lead_left TD + TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 8px; PADDING-BOTTOM: 0px; WIDTH: =
100%; PADDING-TOP: 0px
}
.lead_right TD {
	PADDING-RIGHT: 8px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: =
100%; PADDING-TOP: 0px
}
.lead_center .summary {
	MARGIN: 0px 0px 25px
}
.lead_center .fpimage {
	MARGIN: 0px 0px 8px
}
#fp_feat H4 {
	MARGIN: 0px 0px 7px
}
#fp_feat H5 {
	MARGIN: 0px 0px 7px
}
#fp_feat .article_byline {
	MARGIN: 0px 0px 7px
}
.article {
	CLEAR: left; FLOAT: left; MARGIN: 0px 0px 25px; WIDTH: 100%
}
#fp_feat_1 .summary {
	MARGIN: 0px 0px 0px 83px
}
.float_thumbnail {
	FLOAT: left; MARGIN: 0px 8px 0px 0px; WIDTH: 75px
}
#fp_feat_2 TD {
	PADDING-BOTTOM: 25px; WIDTH: 50%
}
#fp_feat_2 TD + TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#fp_feat_3 TD {
	PADDING-BOTTOM: 25px; WIDTH: 33%
}
#fp_feat_3 TD + TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#sidebar P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#sidebar H4 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#sidebar H5 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#sidebar H4 {
	MARGIN: 0px 0px 5px
}
#sidebar P {
	MARGIN: 0px 0px 5px
}
#sidebar H5 {
	MARGIN: 0px 0px 5px
}
#fpaio_3 TD {
	VERTICAL-ALIGN: top
}
#fpaio_3 TD + TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#fpaio_3 .fpimage {
	MARGIN: 0px 0px 15px
}
#fpaio_3 #sidebar UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 15px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#fpaio_3 #sidebar LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/images/digiarrow.gif) =
no-repeat left 3px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; =
LIST-STYLE-TYPE: none
}
#fpaio_3 .featured {
	MARGIN: 0px 0px 15px
}
#fpaio_2 TD {
	VERTICAL-ALIGN: top
}
#fpaio_2 TD + TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#fpaio_2 .fpimage {
	MARGIN: 0px 0px 15px
}
#fpaio_2 H4 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 0px; BORDER-BOTTOM: #aaa 1px solid
}
#fpaio_2 #sidebar UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 25px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#fpaio_2 #sidebar LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/images/digiarrow.gif) =
no-repeat left 3px; PADDING-BOTTOM: 0px; LINE-HEIGHT: 1.5em; =
PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#fpaio_2 .featured {
	MARGIN: 0px 0px 15px
}
#fpaio_1 TD {
	VERTICAL-ALIGN: top
}
#fpaio_1 TD + TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#fpaio_1 .fpimage {
	MARGIN: 0px 0px 15px
}
#fpaio_1 .featured {
	MARGIN: 0px 0px 15px
}
#article H2 {
	MARGIN: 0px 0px 7px
}
#article H4 {
	MARGIN: 0px 0px 7px
}
#meta {
	MARGIN: 0px 0px 7px
}
#article H3 {
	MARGIN: 0px 0px 7px; COLOR: #666
}
TD.toptd {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
.toptd A {
	COLOR: #666
}
#poll {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px =
solid; PADDING-LEFT: 5px; BACKGROUND: #eee; PADDING-BOTTOM: 5px; MARGIN: =
15px 5px 0px; BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 5px; =
BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left
}
P#view_results {
	MARGIN: 5px 0px 0px
}
#cp_poll_chart TABLE {
	Z-INDEX: 200! important
}
#cp_poll_legend {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px
}
#cp_poll_legend TD {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; BACKGROUND: white; =
PADDING-BOTTOM: 4px; VERTICAL-ALIGN: top; PADDING-TOP: 4px; TEXT-ALIGN: =
left
}
.cp_poll_color DIV {
	BORDER-RIGHT: #666 1px solid; BORDER-TOP: #666 1px solid; BORDER-LEFT: =
#666 1px solid; WIDTH: 1em; BORDER-BOTTOM: #666 1px solid; HEIGHT: 1em
}
#cp_poll_color_1 {
	BACKGROUND: #bc0303
}
#cp_poll_color_2 {
	BACKGROUND: #0064d1
}
#cp_poll_color_3 {
	BACKGROUND: #ff9800
}
#cp_poll_color_4 {
	BACKGROUND: #108b00
}
#cp_poll_color_5 {
	BACKGROUND: #6435b1
}
#cp_poll_color_6 {
	BACKGROUND: #0614ca
}
#cp_poll_color_7 {
	BACKGROUND: #36c947
}
#cp_poll_color_8 {
	BACKGROUND: #b23da8
}
#cp_poll_color_9 {
	BACKGROUND: #746137
}
#cp_poll_color_10 {
	BACKGROUND: #ec008c
}
#object9975 {
	TEXT-ALIGN: center
}
#object9974 {
	TEXT-ALIGN: center
}
#object9973 {
	TEXT-ALIGN: center
}
#banner_client_1 {
	TEXT-ALIGN: center
}
#banner_network_6 {
	TEXT-ALIGN: center
}
#weather {
	BORDER-RIGHT: #666 1px solid; PADDING-RIGHT: 1px; BORDER-TOP: #666 1px =
solid; PADDING-LEFT: 1px; BACKGROUND: #fff; PADDING-BOTTOM: 1px; MARGIN: =
0px auto; BORDER-LEFT: #666 1px solid; WIDTH: 120px; PADDING-TOP: 1px; =
BORDER-BOTTOM: #666 1px solid
}
#weatherblock {
	PADDING-RIGHT: 3px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 3px; =
PADDING-BOTTOM: 3px; MARGIN: 1px 0px 0px; PADDING-TOP: 3px
}
.art {
	MARGIN: 0px 0px 15px
}
#breadcrumb {
	FONT-SIZE: 10px; MARGIN: 0px 0px 7px
}
#breadcrumb A {
	FONT-SIZE: 10px; MARGIN: 0px 0px 7px
}
#banner_network_1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 0px
}
#loggedin_controlbar {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 0px
}
#article {
	TEXT-ALIGN: left
}
#article H2 {
	LINE-HEIGHT: 1.2em
}
UL#user_art_list_but {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px =
0px 15px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
.user_art_list UL {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px =
solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 15px; =
BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 1px =
solid
}
.user_art_list STRONG {
	MARGIN: 0px 0px 5px
}
.user_art_list LI {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px; LIST-STYLE-TYPE: none
}
.user_art_list LI.even {
	BACKGROUND: #f5f5f5
}
.arch_group A {
	COLOR: #333
}
.arch_group {
	BORDER-TOP: #aaa 1px solid; BORDER-BOTTOM: #aaa 1px solid; TEXT-ALIGN: =
left
}
.arch_group STRONG {
	DISPLAY: block
}
.arch_group .evenrow {
	CLEAR: left; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: =
0px; PADDING-TOP: 0px
}
.arch_group .oddrow {
	CLEAR: left; PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: =
0px; PADDING-TOP: 0px
}
H2 {
	LINE-HEIGHT: 1.2em; TEXT-ALIGN: left
}
H3 {
	LINE-HEIGHT: 1.2em; TEXT-ALIGN: left
}
#banner_loc_3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 15px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.textad-container .textad {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px =
solid; PADDING-LEFT: 4px; BACKGROUND: #eee; PADDING-BOTTOM: 4px; =
BORDER-LEFT: #ccc 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #ccc 1px =
solid; TEXT-ALIGN: left
}
.textad-container .textad H1 {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; DISPLAY: block; =
PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 12px/1.1em Arial, Helvetica, =
sans-serif; COLOR: #00f; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; =
TEXT-DECORATION: underline
}
.textad-container .textad H1 A {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; DISPLAY: block; =
PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 12px/1.1em Arial, Helvetica, =
sans-serif; COLOR: #00f; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; =
TEXT-DECORATION: underline
}
.textad-container .textad P {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; DISPLAY: block; =
PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 12px/1.1em Arial, Helvetica, =
sans-serif; COLOR: #000; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; =
TEXT-DECORATION: none
}
.textad-container .textad P A {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; DISPLAY: block; =
PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 12px/1.1em Arial, Helvetica, =
sans-serif; COLOR: #000; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; =
TEXT-DECORATION: none
}
.textad-container .textad P.url {
	COLOR: #3f9f3f; TEXT-DECORATION: none
}
.textad-container .textad P.url A {
	COLOR: #3f9f3f; TEXT-DECORATION: none
}
.textad-container .caption A {
	FONT: 10px/1.1em Arial, Helvetica, sans-serif; COLOR: #999
}
#flan_article_top {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px 0px 15px; PADDING-TOP: 10px! =
important; BORDER-BOTTOM: #ccc 1px solid
}
#flan_article_top UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#flan_article_tools UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#flan_article_bottom UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#flan_article_bottom {
	MARGIN: 15px 0px
}
#flan_article_top UL {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px; PADDING-TOP: 0px! important
}
#flan_article_top LI {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: =
11px; PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 17px; =
PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none
}
#flan_article_bottom LI {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: =
11px; PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 17px; =
PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none
}
#flan_story_bot_nav {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: =
11px; PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 17px; =
PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none
}
#flan_article_top LI A {
	COLOR: #333333! important
}
#flan_article_bottom LI A {
	COLOR: #333333! important
}
#flan_story_bot_nav A {
	COLOR: #333333! important
}
#flan_article_top LI A:hover {
	COLOR: #000000! important
}
#flan_article_bottom A:hover {
	COLOR: #000000! important
}
#flan_article_top_left {
	FLOAT: left; WIDTH: 230px
}
#flan_article_top_left LI {
	DISPLAY: inline; MARGIN: 0px 5px 0px 0px
}
#flan_article_top_right {
	FLOAT: right; WIDTH: 190px; TEXT-ALIGN: right
}
#flan_article_bottom_right {
	FLOAT: right; WIDTH: 190px; TEXT-ALIGN: right
}
LI#flan_article_discuss A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/discuss.gif) =
no-repeat left -1px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#flan_article_print A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/print.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#flan_article_email A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/email.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#flan_article_more A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/down.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#flan_article_blog A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/blogger.gif) =
no-repeat left 50%
}
LI#flan_article_live A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/livejournal.gif)=
 no-repeat left 50%
}
LI#flan_article_digg A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/digg.gif) =
no-repeat left 50%
}
LI#flan_article_news A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/newsvine.gif) =
no-repeat left 50%
}
LI#flan_article_deli A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/delicious.gif) =
no-repeat left 50%
}
LI#flan_article_yaho A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/yahoo.gif) =
no-repeat left 50%
}
LI#flan_article_goog A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/google.gif) =
no-repeat left 0px
}
LI.flan_article_page DIV {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/page.gif) =
no-repeat left center; FLOAT: right; PADDING-BOTTOM: 0px; PADDING-TOP: =
0px
}
#flan_story_text {
	MARGIN: 0px 0px 15px
}
#flan_article_tools {
	BORDER-TOP: #ccc 1px solid; BACKGROUND: #f5f5f5; MARGIN: 0px 0px 25px
}
P.flan_article_more_tools {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
FONT-WEIGHT: bold! important; FONT-SIZE: 12px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px; PADDING-TOP: 0px! important
}
P.flan_article_tools_header {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
FONT-WEIGHT: bold! important; FONT-SIZE: 11px; PADDING-BOTTOM: 0px! =
important; MARGIN: 0px 0px 8px; PADDING-TOP: 0px! important
}
#flan_article_tools .flan_article_gutter {
	PADDING-RIGHT: 5px! important; PADDING-LEFT: 5px! important; =
PADDING-BOTTOM: 5px! important; PADDING-TOP: 5px! important
}
#flan_article_tools UL {
	PADDING-RIGHT: 0px! important; DISPLAY: inline! important; =
PADDING-LEFT: 0px! important; PADDING-BOTTOM: 0px! important; MARGIN: =
0px; PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none! important
}
#flan_article_tools LI {
	PADDING-RIGHT: 0px! important; DISPLAY: inline! important; =
PADDING-LEFT: 0px! important; PADDING-BOTTOM: 0px! important; MARGIN: =
0px; PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none! important
}
#flan_article_tools LI A {
	PADDING-RIGHT: 0px! important; DISPLAY: inline! important; =
PADDING-LEFT: 17px! important; FONT-SIZE: 10px! important; =
PADDING-BOTTOM: 3px! important; MARGIN: 0px 3px 0px 0px; PADDING-TOP: =
3px! important
}
#flan_article_tools LI A {
	DISPLAY: inline! important; FONT-SIZE: 10px! important
}
#flan_article_tools_book {
	MARGIN: 0px 0px 0px 85px; BORDER-LEFT: #fff 1px solid
}
#flan_article_tools_blog {
	FLOAT: left! important; WIDTH: 85px! important
}
#flan_article_tools_rss {
	FLOAT: right! important; BORDER-LEFT: #fff 1px solid; WIDTH: 150px! =
important
}
#flan_story_bot_nav {
	MARGIN: 0px 0px 15px; TEXT-ALIGN: right
}
#flan_continued {
	FONT-SIZE: 11px; MARGIN: 0px 0px 15px; LINE-HEIGHT: 17px
}
* HTML #flan_article_tools {
	HEIGHT: 47px
}
#cp_article_top {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px 0px 15px; PADDING-TOP: 10px! =
important; BORDER-BOTTOM: #ccc 1px solid
}
#cp_article_top UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#cp_article_tools UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#cp_article_bottom UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#cp_article_bottom {
	MARGIN: 15px 0px
}
#cp_article_top UL {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px; PADDING-TOP: 0px! important
}
#cp_article_top LI {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: =
11px; PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 17px; =
PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none
}
#cp_article_bottom LI {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: =
11px; PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 17px; =
PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none
}
#cp_story_bot_nav {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: =
11px; PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 17px; =
PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none
}
#cp_article_top LI A {
	COLOR: #333333! important
}
#cp_article_bottom LI A {
	COLOR: #333333! important
}
#cp_story_bot_nav A {
	COLOR: #333333! important
}
#cp_article_top LI A:hover {
	COLOR: #000000! important
}
#cp_article_bottom A:hover {
	COLOR: #000000! important
}
#cp_article_top_left {
	FLOAT: left; WIDTH: 60%
}
#cp_article_top_left LI {
	DISPLAY: inline; MARGIN: 0px 5px 0px 0px
}
#cp_article_top_right {
	FLOAT: right; WIDTH: 190px; TEXT-ALIGN: right
}
#cp_article_bottom_right {
	FLOAT: right; WIDTH: 190px; TEXT-ALIGN: right
}
LI#cp_article_discuss A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/discuss.gif) =
no-repeat left -1px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#cp_article_print A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/print.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#cp_article_email A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/email.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#cp_article_more A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/down.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
#cp_article_tools {
	MARGIN: 1em 0px 25px
}
#cp_article_tools H4 {
	MARGIN: 0px
}
#cp_article_tools H5 {
	FONT-SIZE: 11px; MARGIN: 0px
}
#cp_at_content {
	PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 0px; =
BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/article_bkg.gif=
) #f5f5f5 repeat-x right bottom; PADDING-BOTTOM: 7px; PADDING-TOP: 5px
}
#cp_at_share {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FLOAT: left; PADDING-BOTTOM: =
0px; WIDTH: 70%; PADDING-TOP: 0px
}
#cp_at_rss {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#cp_article_tools #cp_at_content UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#cp_at_content LI {
	DISPLAY: inline; MARGIN: 0px 8px 0px 0px; LIST-STYLE-TYPE: none
}
#cp_at_content LI A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; FONT-SIZE: 10px; =
PADDING-BOTTOM: 3px; PADDING-TOP: 3px
}
LI#cp_at_blog A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/blogger.gif) =
no-repeat left 50%
}
LI#cp_at_facebook A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/facebook.gif) =
no-repeat left 50%
}
LI#cp_at_live A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/livejournal.gif)=
 no-repeat left 50%
}
LI#cp_at_digg A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/digg.gif) =
no-repeat left 50%
}
LI#cp_at_news A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/newsvine.gif) =
no-repeat left 50%
}
LI#cp_at_deli A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/delicious.gif) =
no-repeat left 50%
}
LI#cp_at_yaho A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/yahoo.gif) =
no-repeat left 50%
}
LI#cp_at_goog A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/google.gif) =
no-repeat left 0px
}
#net_bar * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; TEXT-ALIGN: left
}
#net_bar A {
	outline: none
}
#net_bar A:active {
	outline: none
}
:focus {
	-moz-outline-style: none
}
#net_bar UL {
	LIST-STYLE-TYPE: none
}
#net_bar LI {
	LIST-STYLE-TYPE: none
}
#net_bar FIELDSET {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
.hide {
	DISPLAY: none
}
.show {
	DISPLAY: block
}
#net_bar {
	BACKGROUND: #e0e0e0; FONT: 12px/1em Trebuchet MS, arial, verdana, =
sans-serif; BORDER-BOTTOM: #7d87a2 1px solid; HEIGHT: 33px
}
#net_cp_a {
	Z-INDEX: 2; LEFT: 5px; WIDTH: 165px; TEXT-INDENT: -1000px; LINE-HEIGHT: =
26px; POSITION: absolute; TOP: 4px; HEIGHT: 26px
}
#net_cp_a A {
	DISPLAY: block; BACKGROUND: =
url(http://media.collegepublisher.com/media/images/net_cp2.gif) =
no-repeat left top; WIDTH: 165px; TEXT-INDENT: -1000px; LINE-HEIGHT: =
26px; HEIGHT: 26px
}
#net_cp_a A:hover {
	BACKGROUND-POSITION: 0px -26px
}
.unselected#net_cp_a A:hover {
	BACKGROUND-POSITION: 0px -26px
}
.selected#net_cp_a A {
	BACKGROUND-POSITION: 0px -52px
}
.selected#net_cp_a A:hover {
	BACKGROUND-POSITION: 0px -52px
}
#net_cp_a A:active {
	BACKGROUND-POSITION: 0px -52px
}
.unselected#net_cp_a A {
	BACKGROUND-POSITION: 0px 0px
}
#net_cp_nav_list {
	Z-INDEX: 1; LEFT: 5px; POSITION: absolute; TOP: 28px
}
UL#net_cp_nav_list {
	BORDER-RIGHT: #7d87a2 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#7d87a2 1px solid; PADDING-LEFT: 5px; BACKGROUND: #fff; PADDING-BOTTOM: =
3px; BORDER-LEFT: #7d87a2 1px solid; WIDTH: 225px; PADDING-TOP: 5px; =
BORDER-BOTTOM: #7d87a2 1px solid; LIST-STYLE-TYPE: none
}
UL#net_cp_nav_list LI A {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px =
solid; DISPLAY: block; PADDING-LEFT: 5px; BACKGROUND: #f5f5f5; =
PADDING-BOTTOM: 5px; MARGIN: 0px 0px 5px; FONT: 12px/1em Trebuchet MS, =
arial, verdana, sans-serif; BORDER-LEFT: #ccc 1px solid; COLOR: #666; =
PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid; TEXT-DECORATION: none
}
UL#net_cp_nav_list LI A:hover {
	BACKGROUND: #fff; COLOR: #303030
}
#net_search {
	VISIBILITY: visible
}
#net_search_input {
	FONT-SIZE: 12px; LEFT: 180px; WIDTH: 125px; POSITION: absolute; TOP: =
7px
}
#net_search_choose_link {
	Z-INDEX: 2; LEFT: 313px; WIDTH: 16px; TEXT-INDENT: -1000px; =
LINE-HEIGHT: 22px; POSITION: absolute; TOP: 6px; HEIGHT: 23px
}
#net_search_choose_link A {
	DISPLAY: block; BACKGROUND: =
url(http://media.collegepublisher.com/media/images/dropdown.png) =
no-repeat left top; WIDTH: 16px; TEXT-INDENT: -1000px; LINE-HEIGHT: =
22px; HEIGHT: 22px
}
#net_search_choose_link A:hover {
	BACKGROUND-POSITION: 0px -22px
}
#net_bar .unselected#net_search_choose_link A:hover {
	BACKGROUND-POSITION: 0px -22px
}
#net_bar .selected#net_search_choose_link A {
	BACKGROUND-POSITION: 0px -44px
}
#net_bar .selected#net_search_choose_link A:hover {
	BACKGROUND-POSITION: 0px -44px
}
#net_bar #net_search_choose_link A:active {
	BACKGROUND-POSITION: 0px -44px
}
#net_bar .unselected#net_search_choose_link A {
	BACKGROUND-POSITION: 0px 0px
}
#net_search_choose_options {
	Z-INDEX: 1; LEFT: 313px; POSITION: absolute; TOP: 25px
}
UL#net_search_choose_options {
	BORDER-RIGHT: #7d87a2 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: =
#7d87a2 1px solid; PADDING-LEFT: 5px; BACKGROUND: #fff; PADDING-BOTTOM: =
0px; BORDER-LEFT: #7d87a2 1px solid; WIDTH: 175px; PADDING-TOP: 5px; =
BORDER-BOTTOM: #7d87a2 1px solid; LIST-STYLE-TYPE: none
}
UL#net_search_choose_options LI {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px =
solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px 0px 5px; =
FONT: 12px/1em Trebuchet MS, arial, verdana, sans-serif; BORDER-LEFT: =
#ccc 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #ccc 1px solid
}
#net_search_choose_submit {
	Z-INDEX: 2; BACKGROUND: =
url(http://media.collegepublisher.com/media/images/button_bg.png) =
no-repeat right top; LEFT: 329px; OVERFLOW: hidden; POSITION: absolute; =
TOP: 6px
}
#net_search_choose_submit A {
	MARGIN: 0px 6px 0px 4px; FONT: 11px/21px Trebuchet MS, arial, verdana, =
sans-serif; COLOR: #333; TEXT-DECORATION: none
}
#net_channels {
	RIGHT: 200px; WIDTH: 375px; POSITION: absolute; TOP: 12px
}
#net_channels {
	WIDTH: auto
}
#net_channels UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none
}
#net_channels LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
url(http://media.collegepublisher.com/media/images/nav_right_1.png) =
no-repeat right top; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px 0px =
0px 2px; PADDING-TOP: 0px
}
#net_channels A {
	PADDING-RIGHT: 4px; DISPLAY: block; PADDING-LEFT: 4px; BACKGROUND: =
url(http://media.collegepublisher.com/media/images/nav_left_1.png) =
no-repeat left top; FLOAT: left; PADDING-BOTTOM: 4px; FONT: 11px/1em =
Trebuchet MS, arial, verdana, sans-serif; COLOR: #303030; PADDING-TOP: =
4px; TEXT-DECORATION: none
}
#net_channels A {
	FLOAT: none
}
UL#net_cp_nav_list LI {
	MARGIN: 0px 0px -3px; HEIGHT: 1%
}
#net_weather {
	RIGHT: 0px; POSITION: absolute; TOP: 1px
}
#flan_pods H2 {
	MARGIN: 0px 0px 1em
}
#flan_pods .flan_pods_channels {
	MARGIN: 0px 0px 1em
}
#flan_pods .flan_pods_gutter {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BACKGROUND: #f5f5f5; =
PADDING-BOTTOM: 10px; PADDING-TOP: 10px
}
#flan_pods UL {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px; PADDING-TOP: 0px! important
}
#flan_pods UL LI {
	LIST-STYLE-POSITION: outside; LIST-STYLE-TYPE: none
}
#flan_pods H3 {
	MARGIN: 0px 0px 0.5em
}
#flan_pods H5 {
	FONT-SIZE: 10px; MARGIN: 0px 0px 3px; TEXT-TRANSFORM: uppercase; COLOR: =
#999; BORDER-BOTTOM: #999 1px solid
}
#flan_pods IMG {
	BORDER-RIGHT: #d8d8d8 1px solid; BORDER-TOP: #d8d8d8 1px solid; FLOAT: =
right; MARGIN: 0px 0em 1em 1em; BORDER-LEFT: #d8d8d8 1px solid; =
BORDER-BOTTOM: #d8d8d8 1px solid
}
.flan_pods_info {
	CLEAR: both; MARGIN: 0px 0px 1em
}
.flan_pods_tracklist {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.flan_pods_list_even {
	BACKGROUND: #edf3fe
}
.flan_pods_list_odd {
	BACKGROUND: #fff
}
.flan_pods_list_odd:hover {
	BACKGROUND: #ffc
}
.flan_pods_list_even:hover {
	BACKGROUND: #ffc
}
.flan_pods_tracklist LI {
	PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; =
PADDING-BOTTOM: 8px; PADDING-TOP: 10px
}
.flan_pods_tracklist LI P.flan_pods_title {
	DISPLAY: inline; FLOAT: left; MARGIN: 0px; LINE-HEIGHT: 17px
}
.flan_pods_tracklist LI P.flan_pods_description {
	FONT-SIZE: 0.9em; MARGIN: 0.5em 0px 0px
}
A.flan_pods_listen {
	DISPLAY: block; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/podcast.gif) =
no-repeat left top; FLOAT: right; MARGIN: 0px; WIDTH: 37px; TEXT-INDENT: =
-1000em; HEIGHT: 17px
}
A.flan_pods_listen:hover {
	BACKGROUND-POSITION: left bottom
}
.flan_pods_channels .more {
	FONT-SIZE: 1.2em; MARGIN: 0.5em 0px 0px; TEXT-ALIGN: right
}
.flan_pods_channels .more A {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
LINE-HEIGHT: 1.2em; PADDING-TOP: 5px
}
.flan_pods_subscription_links {
	TEXT-ALIGN: right
}
.flan_pods_subscription_links LI {
	DISPLAY: inline; MARGIN: 0px 10px 0px 0px
}
.flan_pods_subscription_links LI A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.flan_pods_rss A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/rss11.gif) =
no-repeat left center
}
.flan_pods_m3u A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/plus.gif) =
no-repeat left center
}
.flan_pods_rss_itunes A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/podcast_icon_ori=
ginal.png) no-repeat left center
}
.flan_pods_subscription_links LI.flan_pods_xspf {
	MARGIN: 0px
}
.flan_pods_xspf A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/plus.gif) =
no-repeat left center
}
.flan_pods_all A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/arrow_right.gif)=
 no-repeat left center
}
HTML > BODY .flan_pods_tracklist LI P.flan_pods_title {
	FLOAT: none
}
#flan_ads {
	FLOAT: right; WIDTH: 300px
}
.box {
	CLEAR: both; MARGIN: 0px 0px 10px; WIDTH: 300px
}
#flan_ads .cp_ad {
	CLEAR: both; MARGIN: 0px 0px 10px; WIDTH: 300px
}
#flan_ads .content .gutter {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 10px
}
#flan_ads .gutter P {
	MARGIN: 0px 0px 10px
}
#advertisements {
	MARGIN: 0px 0px 10px
}
#flan_ads .content {
	CLEAR: both; BORDER-RIGHT: #d8d8d8 1px solid; BORDER-TOP: #d8d8d8 1px =
solid; MARGIN: 0px 0px 10px; FONT: 90%/1.2em arial, verdana, sans-serif; =
BORDER-LEFT: #d8d8d8 1px solid; BORDER-BOTTOM: #d8d8d8 1px solid
}
#advertisements {
	CLEAR: both; BORDER-RIGHT: #d8d8d8 1px solid; BORDER-TOP: #d8d8d8 1px =
solid; MARGIN: 0px 0px 10px; FONT: 90%/1.2em arial, verdana, sans-serif; =
BORDER-LEFT: #d8d8d8 1px solid; BORDER-BOTTOM: #d8d8d8 1px solid
}
#flan_ads .content_300 {
	CLEAR: both; MARGIN: 0px 0px 10px; FONT: 90%/1.2em arial, verdana, =
sans-serif
}
#advertisements {
	CLEAR: both; MARGIN: 0px 0px 10px; FONT: 90%/1.2em arial, verdana, =
sans-serif
}
#flan_ads .content H4 {
	PADDING-RIGHT: 3px; PADDING-LEFT: 7px; BACKGROUND: #f5f5f5; =
PADDING-BOTTOM: 3px; FONT: 14px/1em arial, verdana, sans-serif; =
TEXT-TRANSFORM: uppercase; COLOR: #333333; PADDING-TOP: 3px; =
BORDER-BOTTOM: #d8d8d8 1px solid
}
#advertisements H4 {
	PADDING-RIGHT: 3px; PADDING-LEFT: 7px; BACKGROUND: #f5f5f5; =
PADDING-BOTTOM: 3px; FONT: 14px/1em arial, verdana, sans-serif; =
TEXT-TRANSFORM: uppercase; COLOR: #333333; PADDING-TOP: 3px; =
BORDER-BOTTOM: #d8d8d8 1px solid
}
#flan_ads .content A {
	COLOR: #333; BORDER-BOTTOM: #ccc 1px solid; TEXT-DECORATION: none
}
#flan_ads .content A:hover {
	BACKGROUND: #ffc
}
#flan_ads .content OL {
	LIST-STYLE-POSITION: inside
}
#flan_ads .content OL LI {
	MARGIN: 0px 0px 5px; LINE-HEIGHT: 1.2em
}
#box_120_240 {
	BACKGROUND: #f5f5f5
}
#box_120_240 .banner {
	BORDER-RIGHT: #fff 10px solid; FLOAT: left; MARGIN: 0px 10px 0px 0px; =
WIDTH: 120px
}
#box_120_600_loc .banner {
	BORDER-RIGHT: #fff 10px solid; FLOAT: left; MARGIN: 0px 10px 0px 0px; =
WIDTH: 120px
}
#box_120_600 {
	BACKGROUND: #f5f5f5
}
#box_120_600 .banner {
	BORDER-RIGHT: #fff 10px solid; FLOAT: left; MARGIN: 0px 10px 0px 0px; =
WIDTH: 120px
}
#box_120_600_loc .banner {
	BORDER-RIGHT: #fff 10px solid; FLOAT: left; MARGIN: 0px 10px 0px 0px; =
WIDTH: 120px
}
#box_160_600 {
	BACKGROUND: #f5f5f5
}
#box_160_600 .banner {
	BORDER-RIGHT: #fff 10px solid; FLOAT: left; MARGIN: 0px 10px 0px 0px; =
WIDTH: 160px
}
#box_160_600_loc .banner {
	BORDER-RIGHT: #fff 10px solid; FLOAT: left; MARGIN: 0px 10px 0px 0px; =
WIDTH: 160px
}
#advertisements * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#advertisements H4 {
	MARGIN: 0px 0px 10px
}
#advertisements {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
10px; WIDTH: 298px; PADDING-TOP: 0px
}
#advertisements .left {
	BORDER-RIGHT: #e1e1e1 1px solid; FLOAT: left; WIDTH: 150px; TEXT-ALIGN: =
center
}
#advertisements .right {
	TEXT-ALIGN: center
}
#flan_ads .content * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#flan_nav .content * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#flan_ads .content FORM {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: =
0px; PADDING-TOP: 10px
}
#flan_ads .content DIV {
	MARGIN: 0px 0px 5px
}
#flan_ads .pollquestionstyle {
	FONT: bold 13px/1.2em arial, verdana, sans-serif
}
#flan_ads .content_answers {
	FONT-SIZE: 11px; MARGIN: 7px 0px 0px
}
#flan_ads .content_answers DIV {
	MARGIN: 0px 0px 7px
}
#flan_ads .content A.faux_button {
	PADDING-RIGHT: 3px; DISPLAY: block; PADDING-LEFT: 3px; PADDING-BOTTOM: =
3px; MARGIN: 7px 0px 0px; PADDING-TOP: 3px
}
#flan_ads .content P#view_results {
	MARGIN: 7px 0px 0px
}
#flan_content UL {
	MARGIN: 1em
}
#dn_content UL {
	MARGIN: 1em
}
#flan_content OL {
	MARGIN: 1em
}
#dn_content OL {
	MARGIN: 1em
}
#flan_content P {
	MARGIN: 0px 0px 1em
}
#dn_content P {
	MARGIN: 0px 0px 1em
}
#flan_text_ads * {
	MARGIN: 0px
}
#flan_text_ads {
	BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; MARGIN: =
0px 0px 10px; BORDER-LEFT: #999999 1px solid; BORDER-BOTTOM: #999999 1px =
solid
}
.flan_text_ad {
	BORDER-BOTTOM: #d8d8d8 1px solid
}
.flan_text_ad_title {
	COLOR: blue; TEXT-DECORATION: underline
}
.flan_text_ad_action {
	COLOR: blue
}
.flan_text_ad A {
	PADDING-RIGHT: 5px! important; DISPLAY: block; PADDING-LEFT: 5px! =
important; BACKGROUND: #fff; PADDING-BOTTOM: 5px! important; =
PADDING-TOP: 5px! important
}
.flan_text_ad A:hover {
	BACKGROUND: #f5f5f5
}
.flan_text_ad_bar {
	PADDING-RIGHT: 3px! important; PADDING-LEFT: 3px! important; FONT-SIZE: =
0.9em! important; BACKGROUND: #d8d8d8; PADDING-BOTTOM: 3px! important; =
PADDING-TOP: 3px! important; TEXT-ALIGN: center! important
}
.flan_comment {
	BACKGROUND: #edf3fe; MARGIN: 0px 0px 0.5em; OVERFLOW: auto
}
.flan_comment_response {
	BACKGROUND: #f5f5f5; MARGIN: 0px 0px 0.5em
}
.flan_comment_response BLOCKQUOTE {
	BORDER-RIGHT: #ffcc33 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: =
#ffcc33 1px solid; PADDING-LEFT: 10px; BACKGROUND: #ffff99; =
PADDING-BOTTOM: 10px; MARGIN: 0px 0px 1em; BORDER-LEFT: #ffcc33 1px =
solid; PADDING-TOP: 10px; BORDER-BOTTOM: #ffcc33 1px solid
}
.flan_comment_gutter {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 10px
}
.flan_comment_body {
	MARGIN: 0px 0px 1em
}
.flan_comment_reply {
	TEXT-ALIGN: right
}
.flan_comment_read {
	TEXT-ALIGN: right
}
.flan_comment_reply A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 13px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/plus.gif) =
no-repeat left center; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.flan_comment_post A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 13px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/plus.gif) =
no-repeat left center; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.flan_comment_article A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 12px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/page.gif) =
no-repeat left center; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.flan_comment_all A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 12px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/arrow_right.gif)=
 no-repeat left center; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.flan_comment_read A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 12px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/arrow_right.gif)=
 no-repeat left center; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
UL.flan_comment_nav {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px 0px 1em; PADDING-TOP: 0px! =
important
}
#maincontent UL.flan_comment_nav {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px 0px 1em; PADDING-TOP: 0px! =
important
}
UL.flan_comment_nav LI.previous {
	PADDING-RIGHT: 0px; PADDING-LEFT: 13px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/minus.gif) =
no-repeat left center; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
UL.flan_comment_nav LI.next {
	PADDING-RIGHT: 0px; PADDING-LEFT: 13px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/plus.gif) =
no-repeat left center; LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; =
POSITION: relative; TEXT-ALIGN: right
}
.flan_comment_nav LI {
	DISPLAY: inline; MARGIN: 0px 1em 0px 0px
}
.flan_comment_valid_img {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0.5em; =
PADDING-TOP: 0px
}
.flan_comment_valid FIELDSET {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
.flan_comment_valid LABEL {
	DISPLAY: block; MARGIN: 0px 0px 0.5em
}
.flan_comment_valid INPUT {
	DISPLAY: block; MARGIN: 0px 0px 0.5em
}
.flan_disabled {
	COLOR: #999
}
.post_comment_button {
	MARGIN: 1.5em 0px; TEXT-ALIGN: center
}
.post_comment_no {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; BACKGROUND: #cc0000; =
PADDING-BOTTOM: 2px; MARGIN: 0px 0px 1.5em; COLOR: #fff; PADDING-TOP: =
2px
}
.post_comment_no A {
	COLOR: #fff! important; TEXT-DECORATION: underline
}
.cpfooter {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 80%; PADDING-BOTTOM: =
2em; PADDING-TOP: 2em
}
UL.flan_breadcrumb {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px 0px 1em; PADDING-TOP: 0px! =
important; LIST-STYLE-TYPE: none
}
.flan_breadcrumb LI {
	DISPLAY: inline; FONT-SIZE: 0.9em; MARGIN: 0px 1px 0px 0px
}
.flan_breadcrumb LI.flan_breadcrumb_parent {
	DISPLAY: inline; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/arrow_right.gif)=
 no-repeat left center
}
.flan_breadcrumb LI {
	DISPLAY: inline; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/arrow_right_ligh=
t.gif) no-repeat left center
}
#flan_syndication_feeds LI {
	LIST-STYLE-TYPE: none
}
.flan_rss {
	PADDING-RIGHT: 0px; PADDING-LEFT: 14px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/rss11.gif) =
no-repeat left center; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.flan_article_clear {
	CLEAR: both
}
.flan_clear {
	CLEAR: both
}
.cp_clear {
	CLEAR: both
}
.cp_article_clear {
	CLEAR: both
}
.flan_clear_auto:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
.cp_clear:unknown {
	CLEAR: both; DISPLAY: block; VISIBILITY: hidden; HEIGHT: 0px; content: =
"."
}
.flan_clear_auto {
	DISPLAY: inline-block
}
.cp_clear {
	DISPLAY: inline-block
}
.flan_clear_auto {
	DISPLAY: block
}
.cp_clear {
	DISPLAY: block
}
* HTML .flan_clear_auto {
	HEIGHT: 1%
}
* HTML .cp_clear {
	HEIGHT: 1%
}
.cp_light {
	COLOR: #999999
}
.cp_light P {
	COLOR: #999999
}
.cp_small {
	FONT-SIZE: 0.9em; LINE-HEIGHT: 1.4em
}
.cp_small P {
	FONT-SIZE: 0.9em; LINE-HEIGHT: 1.4em
}
.cp_medium {
	FONT-SIZE: 1em; LINE-HEIGHT: 1.4em
}
.cp_medium P {
	FONT-SIZE: 1em; LINE-HEIGHT: 1.4em
}
.cp_large {
	FONT-SIZE: 1.3em; LINE-HEIGHT: 1.4em
}
.cp_large P {
	FONT-SIZE: 1.3em; LINE-HEIGHT: 1.4em
}
.cp_rss {
	PADDING-RIGHT: 0px; PADDING-LEFT: 14px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/rss11.gif) =
no-repeat left center; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.cp_table {
	BORDER-RIGHT: #d8d8d8 1px solid; BORDER-TOP: #d8d8d8 1px solid; MARGIN: =
0px 0px 1em; BORDER-LEFT: #d8d8d8 1px solid; WIDTH: 100%; BORDER-BOTTOM: =
#d8d8d8 1px solid
}
.cp_table TH {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; BACKGROUND: #cccccc; =
PADDING-BOTTOM: 7px; PADDING-TOP: 7px; TEXT-ALIGN: left
}
.cp_table TD {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; PADDING-BOTTOM: 7px; =
PADDING-TOP: 7px
}
.cp_table P {
	MARGIN: 0px 0px 0.5em
}
.cp_even {
	BACKGROUND: #f5f5f5
}
.cp_odd {
	BACKGROUND: #edf3fe
}
BLOCKQUOTE {
	BORDER-RIGHT: #d8d8d8 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: =
#d8d8d8 1px solid; PADDING-LEFT: 10px; BACKGROUND: #ffffff; =
PADDING-BOTTOM: 10px; MARGIN: 0px 0px 1em; BORDER-LEFT: #d8d8d8 1px =
solid; PADDING-TOP: 10px; BORDER-BOTTOM: #d8d8d8 1px solid
}
BLOCKQUOTE EM {
	DISPLAY: block; FONT-WEIGHT: bold; MARGIN: 0px 0px 0.3em; =
BORDER-BOTTOM: #e9e9e9 1px solid
}
.cp_left_right {
	MARGIN: 0px 0px 1em
}
.cp_left {
	FLOAT: left
}
.cp_right {
	FLOAT: right
}
.callout_left {
	FLOAT: left; MARGIN: 0px 1em 1em 0px; WIDTH: 33%
}
.callout_right {
	FLOAT: right; MARGIN: 0px 0px 1em 1em; WIDTH: 33%
}
A.cp_reply {
	PADDING-RIGHT: 0px; PADDING-LEFT: 13px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/plus.gif) =
no-repeat left center; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.cp_warn {
	PADDING-RIGHT: 5px; PADDING-LEFT: 27px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/alert.gif) =
#ffff99 no-repeat 5px 4px; PADDING-BOTTOM: 5px; MARGIN: 0px 0px 1em; =
FONT: 1em/1.2em arial, verdana, sans-serif; PADDING-TOP: 5px
}
.cp_warn STRONG {
	COLOR: #af0000! important
}
.cp_warn P {
	MARGIN: 0px; COLOR: #000000! important
}
.cp_alert {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: #ffff99; =
PADDING-BOTTOM: 5px; MARGIN: 0px 0px 1em; FONT: 1em/1.2em arial, =
verdana, sans-serif; COLOR: #af0000; PADDING-TOP: 5px
}
.cp_hide {
	DISPLAY: none
}
.cp_forum_trail {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px 0px 1em; PADDING-TOP: 0px! =
important
}
.cp_forum_trail LI {
	DISPLAY: inline; FONT-SIZE: 1.2em
}
.cp_forum_trail LI.cp_forum_trail_parent {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.cp_form FIELDSET {
	BORDER-RIGHT: #d8d8d8 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: =
#d8d8d8 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 0px =
0px 1em; BORDER-LEFT: #d8d8d8 1px solid; PADDING-TOP: 5px; =
BORDER-BOTTOM: #d8d8d8 1px solid
}
.cp_form LEGEND {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-WEIGHT: bold; =
PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 15px; COLOR: #000000; =
PADDING-TOP: 0px
}
.cp_form UL {
	LIST-STYLE-TYPE: none
}
.cp_form LI {
	CLEAR: left; PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: =
5px; MARGIN: 0px 0px 5px; PADDING-TOP: 5px
}
.cp_form LABEL {
	PADDING-RIGHT: 10px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
0px; WIDTH: 120px; PADDING-TOP: 3px; TEXT-ALIGN: right
}
.cp_form INPUT {
	FLOAT: left; MARGIN: 0px 0px 3px; WIDTH: 250px
}
.cp_form SELECT {
	FLOAT: left; MARGIN: 0px 0px 3px; WIDTH: 250px
}
.cp_form TEXTAREA {
	FLOAT: left; MARGIN: 0px 0px 3px; WIDTH: 250px
}
.cp_small_form INPUT {
	MARGIN: 0px 3px; WIDTH: 500px
}
.cp_small_form SELECT {
	MARGIN: 0px 3px; WIDTH: 500px
}
.cp_form IMG {
	FLOAT: left; MARGIN: 1px 0px 0px 3px
}
.cp_form .cp_alert {
	CLEAR: both; MARGIN: 0px 0px 0px 130px; WIDTH: 240px
}
.cp_form .cp_radio {
	FLOAT: left; MARGIN: 0px 0px 3px; WIDTH: 250px; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
.cp_form .cp_radio INPUT {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: =
0px; MARGIN: 0px; WIDTH: auto; PADDING-TOP: 0px
}
.cp_form .cp_check INPUT {
	FLOAT: none; MARGIN: 0px 5px 0px 0px; WIDTH: auto
}
.cp_form .cp_image_verify IMG {
	MARGIN: 0px 10px 0px 0px
}
.cp_form .cp_image_verify LI {
	LIST-STYLE-POSITION: outside
}
.cp_form .cp_image_verify INPUT {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FLOAT: =
none; PADDING-BOTTOM: 0px! important; MARGIN: 0px; WIDTH: 250px; =
PADDING-TOP: 0px! important; TEXT-ALIGN: left
}
.cp_form .cp_image_verify LABEL {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FLOAT: =
none; PADDING-BOTTOM: 0px! important; MARGIN: 0px; WIDTH: 250px; =
PADDING-TOP: 0px! important; TEXT-ALIGN: left
}
.cp_form .cp_submit {
	TEXT-ALIGN: center
}
.cp_form .cp_submit INPUT {
	FLOAT: none; WIDTH: auto
}
#cp_staff {
	BORDER-TOP: #ccc 1px solid
}
#cp_staff .staff_member {
	CLEAR: left; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; =
PADDING-BOTTOM: 1em; WIDTH: 100%; PADDING-TOP: 1em; BORDER-BOTTOM: #ccc =
1px solid
}
#cp_staff .staff_member IMG {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; FLOAT: left; =
BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 1em 0px 0px; WIDTH: 75px; =
BORDER-RIGHT-WIDTH: 0px
}
#cp_staff .staff_member .cp_staff_name {
	FLOAT: left; WIDTH: 50%
}
#cp_staff .staff_member .cp_staff_name DT {
	FONT-SIZE: 1.5em; MARGIN: 0px 0px 0.2em
}
#cp_staff .staff_member .cp_staff_name DD {
	FONT-SIZE: 1.2em
}
#cp_staff .staff_member .cp_staff_contact {
	FLOAT: left
}
#cp_staff .staff_member .cp_staff_contact DT {
	FONT-WEIGHT: bold
}
#cp_staff .staff_member .cp_staff_contact DD {
	MARGIN: 0px 0px 0.2em
}
IFRAME {
	BORDER-TOP-WIDTH: 0px! important; BORDER-LEFT-WIDTH: 0px! important; =
BORDER-BOTTOM-WIDTH: 0px! important; OVERFLOW: hidden! important; =
BORDER-RIGHT-WIDTH: 0px! important
}
#cp_bn_wrap {
	FONT: 1em/1.4em arial, sans-serif
}
#cp_bn_wrap * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#cp_bn_wrap A {
	BORDER-RIGHT: #900000 5px solid; BORDER-TOP: #900000 5px solid; =
DISPLAY: block; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/breaking_news_b=
kg.jpg) #900000 repeat-x 0px 0px; MARGIN: 0px 0px 10px; BORDER-LEFT: =
#900000 5px solid; BORDER-BOTTOM: #900000 5px solid; TEXT-DECORATION: =
none
}
#cp_bn_wrap A:hover {
	BORDER-RIGHT: #de0000 5px solid; BORDER-TOP: #de0000 5px solid; =
BACKGROUND: #de0000; BORDER-LEFT: #de0000 5px solid; BORDER-BOTTOM: =
#de0000 5px solid
}
#cp_bn_wrap A .gutter {
	BORDER-RIGHT: #fff 1px solid; PADDING-RIGHT: 7px; BORDER-TOP: #fff 1px =
solid; PADDING-LEFT: 7px; BACKGROUND: none transparent scroll repeat 0% =
0%; PADDING-BOTTOM: 7px; MARGIN: 0px; BORDER-LEFT: #fff 1px solid; =
PADDING-TOP: 7px; BORDER-BOTTOM: #fff 1px solid; POSITION: relative
}
#cp_bn_wrap A H2 {
	COLOR: #fff
}
#cp_bn_wrap A H3 {
	COLOR: #fff
}
#cp_bn_wrap A H4 {
	COLOR: #fff
}
#cp_bn_wrap A P {
	COLOR: #fff
}
#cp_bn_wrap A H2 {
	FONT-SIZE: 18px; MARGIN: 0px 0px 0.5em; TEXT-TRANSFORM: uppercase; =
FONT-FAMILY: "Trebuchet MS", serif
}
#cp_bn_wrap A H3 {
	FONT-SIZE: 22px; MARGIN: 0px 0px 0.25em; FONT-STYLE: italic
}
#cp_bn_wrap A H4 {
	FONT-SIZE: 16px; MARGIN: 0px 0px 0.5em
}
#cp_bn_wrap A P {
	FONT-SIZE: 11px; MARGIN: 0px; LINE-HEIGHT: 13px
}
#cp_bn_wrap A .with_img {
	FLOAT: left; WIDTH: 65%
}
#cp_bn_wrap A IMG {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; FLOAT: right; =
BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; WIDTH: 32%; BORDER-RIGHT-WIDTH: =
0px
}
#cp_bn_article_header {
	FONT-SIZE: 20px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/breaking_news_b=
kg.jpg) #de0000 repeat-x 0px 0px; TEXT-TRANSFORM: uppercase; COLOR: =
#fff; TEXT-INDENT: 0.3em; LINE-HEIGHT: 40px; FONT-FAMILY: 'trebuchet =
ms', serif
}
BLOCKQUOTE.cp_pullquote {
	BORDER-TOP: #000 3px double; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM: =
#000 3px double; BORDER-RIGHT-WIDTH: 0px
}
BLOCKQUOTE.cp_pullquote P {
	MARGIN: 0px; FONT: 18px/22px georgia, serif
}
BLOCKQUOTE.cp_pullquote P:first-letter {
	TEXT-TRANSFORM: uppercase
}
#cp_article_top {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px 0px 15px; PADDING-TOP: 10px! =
important; BORDER-BOTTOM: #ccc 1px solid
}
#cp_article_top UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#cp_article_tools UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#cp_article_bottom UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#flan_ads .cp_ad H4.ad_slug {
	DISPLAY: none; BACKGROUND: none transparent scroll repeat 0% 0%; FONT: =
10px/14px 'trebuchet ms', arial, sans-serif; TEXT-TRANSFORM: uppercase; =
COLOR: #aaa; TEXT-ALIGN: center
}
.cp_ad {
	OVERFLOW: hidden; WIDTH: 300px; HEIGHT: 250px
}
#cp_article_bottom {
	MARGIN: 15px 0px
}
#cp_article_top UL {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px; PADDING-TOP: 0px! important
}
#cp_article_top LI {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: =
11px; PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 17px; =
PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none
}
#cp_article_bottom LI {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: =
11px; PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 17px; =
PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none
}
#cp_story_bot_nav {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: =
11px; PADDING-BOTTOM: 0px! important; MARGIN: 0px; LINE-HEIGHT: 17px; =
PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none
}
#cp_article_top LI A {
	COLOR: #333333! important
}
#cp_article_bottom LI A {
	COLOR: #333333! important
}
#cp_story_bot_nav A {
	COLOR: #333333! important
}
#cp_article_top LI A:hover {
	COLOR: #000000! important
}
#cp_article_bottom A:hover {
	COLOR: #000000! important
}
#cp_article_top_left {
	FLOAT: left
}
#cp_article_top_left LI {
	DISPLAY: inline; MARGIN: 0px 5px 0px 0px
}
#cp_article_top_right {
	FLOAT: right; TEXT-ALIGN: right
}
#cp_article_bottom_right {
	FLOAT: right; TEXT-ALIGN: right
}
LI#cp_article_discuss A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/discuss.gif) =
no-repeat left -1px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#cp_article_print A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/print.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#cp_article_email A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/email.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#cp_article_more A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/down.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#cp_answertips A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 14px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/answertips.gif) =
no-repeat left 50%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
LI#cp_article_blog A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/blogger.gif) =
no-repeat left 50%
}
LI#cp_article_facebook A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/facebook.gif) =
no-repeat left 50%
}
LI#cp_article_live A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/livejournal.gif)=
 no-repeat left 50%
}
LI#cp_article_digg A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/digg.gif) =
no-repeat left 50%
}
LI#cp_article_news A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/newsvine.gif) =
no-repeat left 50%
}
LI#cp_article_deli A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/delicious.gif) =
no-repeat left 50%
}
LI#cp_article_yaho A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/yahoo.gif) =
no-repeat left 50%
}
LI#cp_article_goog A {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/google.gif) =
no-repeat left 0px
}
LI.cp_article_page DIV {
	PADDING-RIGHT: 0px; PADDING-LEFT: 17px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/pageIcon.gif) =
no-repeat left center; FLOAT: right; PADDING-BOTTOM: 0px; PADDING-TOP: =
0px
}
#cp_story_text {
	MARGIN: 0px 0px 15px
}
#cp_article_tools {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; MARGIN: 0px =
0px 25px; PADDING-TOP: 0px
}
P.cp_article_more_tools {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
FONT-WEIGHT: bold! important; FONT-SIZE: 12px! important; =
PADDING-BOTTOM: 0px! important; MARGIN: 0px; PADDING-TOP: 0px! important
}
P.cp_article_tools_header {
	PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; =
FONT-WEIGHT: bold! important; FONT-SIZE: 11px; PADDING-BOTTOM: 0px! =
important; MARGIN: 0px 0px 8px; PADDING-TOP: 0px! important
}
#cp_article_tools .cp_article_gutter {
	PADDING-RIGHT: 5px! important; PADDING-LEFT: 5px! important; =
PADDING-BOTTOM: 5px! important; PADDING-TOP: 5px! important
}
#cp_article_tools UL {
	PADDING-RIGHT: 0px! important; DISPLAY: inline! important; =
PADDING-LEFT: 0px! important; PADDING-BOTTOM: 0px! important; MARGIN: =
0px; PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none! important
}
#cp_article_tools LI {
	PADDING-RIGHT: 0px! important; DISPLAY: inline! important; =
PADDING-LEFT: 0px! important; PADDING-BOTTOM: 0px! important; MARGIN: =
0px; PADDING-TOP: 0px! important; LIST-STYLE-TYPE: none! important
}
#cp_article_tools LI A {
	PADDING-RIGHT: 0px! important; DISPLAY: inline! important; =
PADDING-LEFT: 17px! important; FONT-SIZE: 10px! important; =
PADDING-BOTTOM: 3px! important; MARGIN: 0px 3px 0px 0px; PADDING-TOP: =
3px! important
}
#cp_article_tools LI A {
	DISPLAY: inline! important; FONT-SIZE: 10px! important
}
#cp_article_tools_book {
	CLEAR: left; MARGIN: -12px 0px 0px 5px
}
HTML > BODY #cp_article_tools_book {
	LEFT: 5px; MARGIN: 27px 0px 0px; POSITION: relative; TOP: -5px
}
#cp_article_tools_blog {
	FLOAT: left! important; WIDTH: 0px! important
}
#cp_article_tools_rss {
	FLOAT: right! important; BORDER-LEFT: #fff 1px solid; WIDTH: 140px! =
important
}
HTML > BODY #cp_article_tools_rss {
	WIDTH: 160px! important
}
#cp_story_bot_nav {
	MARGIN: 0px 0px 15px; TEXT-ALIGN: right
}
#cp_continued {
	FONT-SIZE: 11px; MARGIN: 0px 0px 15px; LINE-HEIGHT: 17px
}
* HTML #cp_article_tools {
	HEIGHT: 47px
}
.RSSItemListRow {
	PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 4px; COLOR: =
#000; LINE-HEIGHT: 1.1em; PADDING-TOP: 4px
}
#slider2_wrap .slider2_hot {
	DISPLAY: block; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/lightning.pn=
g) no-repeat left center; FLOAT: left; WIDTH: 19px; TEXT-INDENT: =
-1000em; HEIGHT: 16px
}
.RSSItemListSchool {
	FONT-SIZE: 10px; COLOR: #666; LINE-HEIGHT: 1.3em
}
.FlippyEvenRow {
	BACKGROUND-COLOR: #eee
}
.ListBoxItemHover {
	CURSOR: pointer; COLOR: #000; BACKGROUND-COLOR: #ff9
}
.SelectedListBoxItem {
	BACKGROUND: #ff0; COLOR: #000
}
.RSSItemListFeedback {
	MARGIN: 75px auto auto; HEIGHT: 32px
}
.RSSItemListFeedback TD {
	FONT: 0.9em/1.4em trebuchet ms; COLOR: #666
}
.ClearAll {
	CLEAR: both; FONT-SIZE: 0px; LINE-HEIGHT: 0; HEIGHT: 0px
}
.SpryHiddenRegion {
	VISIBILITY: hidden
}
#slider2_wrap {
	CLEAR: left; MARGIN: 10px 0px; WIDTH: 300px
}
#slider2_wrap H3 A {
	PADDING-RIGHT: 20px; DISPLAY: block; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/bullet_go.pn=
g) no-repeat right center; COLOR: #333! important; BORDER-BOTTOM: #ccc =
1px dashed
}
#slider2_wrap H3 A:hover {
	BACKGROUND-COLOR: #ff9
}
#slider2_wrap .lead_wrap {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 1px; BORDER-TOP: #ccc 1px; =
PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; BORDER-LEFT: #ccc 1px solid; =
PADDING-TOP: 0px; BORDER-BOTTOM: #ccc 1px solid
}
#slider2_wrap .contentslide {
	PADDING-RIGHT: 1px; PADDING-LEFT: 1px; BACKGROUND: #fff; =
PADDING-BOTTOM: 1px; PADDING-TOP: 1px; POSITION: relative; HEIGHT: 257px
}
#slider2_wrap .contentdiv_scroller {
	PADDING-RIGHT: 9px; PADDING-LEFT: 5px; BACKGROUND: #fff; =
PADDING-BOTTOM: 0px; OVERFLOW: auto; PADDING-TOP: 5px; POSITION: =
relative; HEIGHT: 230px
}
#slider2_wrap .linkbar {
	PADDING-RIGHT: 4px; BORDER-TOP: #ddd 1px solid; MARGIN-TOP: 1px; =
PADDING-LEFT: 4px; FONT-SIZE: 0.95em; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/box_gradient.gi=
f) #fff repeat-x; PADDING-BOTTOM: 0px; VERTICAL-ALIGN: middle; COLOR: =
#666; LINE-HEIGHT: 20px; PADDING-TOP: 0px; TEXT-ALIGN: right
}
#slider2_wrap .linkbar IMG {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px
}
#slider2_wrap .linkbar A {
	COLOR: #fff
}
#slider2_wrap .linkbar A:hover {
	BACKGROUND: #ff9
}
#slider2_wrap .contentslide .contentdiv {
	DISPLAY: none
}
#slider2_wrap .contentslide A {
	COLOR: #000
}
#slider2_wrap .contentdiv_scroller A:hover * {
	DISPLAY: block; COLOR: #000; BACKGROUND-COLOR: #ff9
}
#slider2_wrap DIV.pagination_wrap {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 11px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/bottom_line.gif=
) #eee repeat-x left bottom; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
#slider2_wrap .pagination {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; OVERFLOW: hidden; PADDING-TOP: 0px; TEXT-ALIGN: left
}
#slider2_wrap .pagination UL {
	DISPLAY: inline
}
#slider2_wrap .pagination LI {
	DISPLAY: inline
}
#slider2_wrap .pagination A {
	BORDER-RIGHT: #ccc 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #ccc 1px =
solid; DISPLAY: block; PADDING-LEFT: 4px; FLOAT: left; PADDING-BOTTOM: =
3px; FONT: 10px/20px "arial narrow", arial, helvetica, sans-serif; =
BORDER-LEFT: #ccc 1px solid; COLOR: #333; MARGIN-RIGHT: 3px; =
PADDING-TOP: 3px; BORDER-BOTTOM: #ccc 1px solid; TEXT-DECORATION: none
}
.ie6 #slider2_wrap .pagination A {
	LETTER-SPACING: -1px
}
#slider2_wrap .pagination A SPAN {
	DISPLAY: block; PADDING-LEFT: 20px; LINE-HEIGHT: 16px
}
#slider2_wrap .pagination A#tab_mp SPAN {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/newspaper_po=
p.png) no-repeat left top
}
#slider2_wrap .pagination A#tab_me SPAN {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/email_go.png=
) no-repeat left top
}
#slider2_wrap .pagination A#tab_mc SPAN {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/user_comment=
.png) no-repeat left top
}
#slider2_wrap .pagination A#tab_pc SPAN {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/ipod.png) =
no-repeat left top
}
#slider2_wrap .pagination A#tab_ce SPAN {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/date.png) =
no-repeat left top
}
#slider2_wrap .pagination A#tab_mb SPAN {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/comments.png=
) no-repeat left top
}
#slider2_wrap .pagination A#tab_ci SPAN {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/newspaper_ad=
d.png) no-repeat left top
}
#slider2_wrap .pagination A#tab_rc SPAN {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/transmit.png=
) no-repeat left top
}
#slider2_wrap .pagination A#tab_nc SPAN {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/transmit_blu=
e.png) no-repeat left top
}
#slider2_wrap .pagination A:hover {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/box_gradient.gi=
f) #fff repeat-x 0px 1px; BORDER-BOTTOM: #fff 1px solid
}
#slider2_wrap .pagination A.selected {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/box_gradient.gi=
f) #fff repeat-x 0px 1px; BORDER-BOTTOM: #fff 1px solid
}
#slider2_wrap .pagination A:hover {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BORDER-LEFT: =
#ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid
}
#slider2_wrap .pagination A.selected:hover {
	BORDER-BOTTOM: #fff 1px solid
}
#slider2_wrap .pagination A.pagination_next {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; FONT: 16px/22px arial, =
helvetica, sans-serif; COLOR: #fff; BORDER-TOP-STYLE: none; PADDING-TOP: =
5px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; TEXT-DECORATION: =
none; BORDER-BOTTOM-STYLE: none
}
#slider2_wrap .pagination A.pagination_next:hover {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: none transparent =
scroll repeat 0% 0%; PADDING-BOTTOM: 0px; FONT: 16px/22px arial, =
helvetica, sans-serif; COLOR: #fff; BORDER-TOP-STYLE: none; PADDING-TOP: =
5px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; TEXT-DECORATION: =
none; BORDER-BOTTOM-STYLE: none
}
#slider2_wrap .pagination IMG {
	PADDING-BOTTOM: 2px; VERTICAL-ALIGN: middle; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
.safari .box {
	FLOAT: none! important
}
.ie6 #slider2_wrap .pagination A {
	WIDTH: 16px; LINE-HEIGHT: 16px
}
.cp_local_ad {
	OVERFLOW: hidden
}
.cp_banner_client {
	OVERFLOW: hidden
}
.carousel-component {
	VISIBILITY: hidden; OVERFLOW: hidden; POSITION: relative
}
.carousel-component UL.carousel-list {
	Z-INDEX: 1; WIDTH: 10000000px; POSITION: relative
}
.carousel-component .carousel-list LI {
	FLOAT: left; OVERFLOW: hidden; LIST-STYLE-TYPE: none
}
.carousel-component .carousel-vertical LI {
	FLOAT: none; MARGIN-BOTTOM: 0px
}
.carousel-component UL.carousel-vertical {
	WIDTH: auto
}
.carousel-component .carousel-clip-region {
	MARGIN: 0px auto; OVERFLOW: hidden; POSITION: relative
}
#roo_component_wrapper {
	MARGIN: 0px; WIDTH: 300px
}
#roo_component_header {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #eee; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: =
#c2c2c2 1px solid
}
#roo_component_header LI {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; BACKGROUND: =
#eee; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
#roo_component_header LI A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 4px; PADDING-BOTTOM: 0px; FONT: =
10px/23px arial, helvetica, sans-serif; COLOR: #609fdf; PADDING-TOP: 0px
}
#roo_component_header LI H5 {
	BORDER-RIGHT: #c2c2c2 1px solid; PADDING-RIGHT: 6px; BORDER-TOP: =
#c2c2c2 1px solid; PADDING-LEFT: 26px; BACKGROUND: =
url(http://collegepublisher.com/media/assets/icons/fff/television.png) =
#fff no-repeat 6px 1px; FLOAT: left; PADDING-BOTTOM: 3px; MARGIN: 0px =
0px 0px 6px; FONT: bold 14px/1.2em Arial, Helvetica, sans-serif; =
BORDER-LEFT: #c2c2c2 1px solid; PADDING-TOP: 2px; BORDER-BOTTOM: #fff =
1px solid
}
.ie6 #roo_component_header LI H5 {
	MARGIN: 0px 0px 0px 3px
}
.safari #roo_component_header LI H5 {
	PADDING-RIGHT: 6px; PADDING-LEFT: 26px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 2px; BORDER-BOTTOM: #fff 1px solid
}
#roo_component {
	BORDER-RIGHT: #c2c2c2 1px solid; BORDER-TOP: #c2c2c2 0px solid; =
BORDER-LEFT: #c2c2c2 1px solid; WIDTH: 298px; BORDER-BOTTOM: #c2c2c2 0px =
solid
}
.carousel-component {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BACKGROUND: #fff; BORDER-BOTTOM-WIDTH: 0px; =
PADDING-BOTTOM: 0px; MARGIN: 0px auto; COLOR: #618cbe; PADDING-TOP: 0px; =
BORDER-RIGHT-WIDTH: 0px; -moz-border-radius: 0px
}
.carousel-component UL.carousel-list {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
.carousel-component .carousel-prev {
	Z-INDEX: 3; LEFT: 0px; CURSOR: pointer; POSITION: absolute; TOP: 27px
}
.carousel-component .carousel-next {
	Z-INDEX: 3; RIGHT: 0px; CURSOR: pointer; POSITION: absolute; TOP: 27px
}
#roo_component .carousel-button {
	DISPLAY: block; WIDTH: 16px; TEXT-INDENT: -1000em; HEIGHT: 16px
}
#roo_component #prev-arrow {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/control_star=
t_blue.png)
}
#roo_component #next-arrow {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/control_end_=
blue.png)
}
.carousel-component .carousel-list LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 4px; MARGIN: 4px =
0px 0px; FONT: 9px verdana,arial,sans-serif; WIDTH: 130px; COLOR: #666; =
PADDING-TOP: 0px; TEXT-ALIGN: center
}
.carousel-component .carousel-vertical LI {
=09
}
.carousel-component UL.carousel-vertical {
=09
}
.carousel-component .carousel-list LI A {
	BORDER-RIGHT: #fff 2px solid; BORDER-TOP: #fff 2px solid; DISPLAY: =
block; BORDER-LEFT: #fff 2px solid; COLOR: #000; BORDER-BOTTOM: #fff 2px =
solid; HEIGHT: 55px; TEXT-DECORATION: none! important; outline: none; =
-moz-outline: none
}
.carousel-component .carousel-list LI A:hover {
	BORDER-RIGHT: #fffccc 2px solid; BORDER-TOP: #fffccc 2px solid; =
BACKGROUND: #fffccc; BORDER-LEFT: #fffccc 2px solid; COLOR: #000; =
BORDER-BOTTOM: #fffccc 2px solid; TEXT-DECORATION: none! important
}
.carousel-component .carousel-list LI.active A {
	BORDER-RIGHT: #708fc7 2px solid; BORDER-TOP: #708fc7 2px solid; =
BORDER-LEFT: #708fc7 2px solid; BORDER-BOTTOM: #708fc7 2px solid
}
.carousel-component .carousel-list LI STRONG {
	DISPLAY: block
}
.carousel-component .carousel-list LI {
	POSITION: relative
}
.carousel-component .carousel-list LI IMG {
	BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; DISPLAY: =
block; LEFT: 2px; BORDER-LEFT: #999 1px solid; WIDTH: 50px; =
BORDER-BOTTOM: #999 1px solid; POSITION: absolute; TOP: 2px; HEIGHT: =
50px
}
.carousel-component .carousel-list LI DIV.roo_module_title {
	Z-INDEX: 4; RIGHT: 0px; OVERFLOW: hidden; WIDTH: 70px; COLOR: black; =
LINE-HEIGHT: 1em; POSITION: absolute; TOP: 2px; TEXT-ALIGN: left; =
TEXT-DECORATION: none
}
.carousel-component .carousel-list LI SPAN.roo_module_play {
	DISPLAY: block; TEXT-TRANSFORM: uppercase; COLOR: #609fdf! important; =
TEXT-DECORATION: none
}
.carousel-component .carousel-list LI A:hover SPAN.roo_module_play {
	TEXT-DECORATION: underline
}
#video_carousel {
	WIDTH: 300px
}
#video_carousel H5 {
	BORDER-RIGHT: #c2c2c2 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: =
#c2c2c2 1px; PADDING-LEFT: 0px; BACKGROUND: #eeeeee; PADDING-BOTTOM: =
3px; MARGIN: 0px 0px 10px; FONT: 12px arial, verdana, sans-serif; =
BORDER-LEFT: #c2c2c2 1px solid; PADDING-TOP: 3px; BORDER-BOTTOM: #c2c2c2 =
1px solid; TEXT-ALIGN: center
}
#video_carousel H5 A {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 18px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/control_play=
_blue.png) no-repeat left center; PADDING-BOTTOM: 0px; MARGIN: 0px 0px =
0px 2px; COLOR: #609fdf; PADDING-TOP: 0px
}
#cp_video {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #e1e1e1; =
PADDING-BOTTOM: 1em; MARGIN: 0px; FONT: 16px/18px "trebuchet ms", =
helvetica, arial, sans-serif; COLOR: #000; PADDING-TOP: 0px; TEXT-ALIGN: =
center
}
#cp_video #cp_video_wrap {
	BORDER-RIGHT: #888 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #888 1px =
solid; PADDING-LEFT: 0px; BACKGROUND: #fff; PADDING-BOTTOM: 0px; MARGIN: =
0px auto; BORDER-LEFT: #888 1px solid; WIDTH: 987px; PADDING-TOP: 0px; =
BORDER-BOTTOM: #888 1px solid; TEXT-ALIGN: left
}
#cp_video .leaderboard {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #eee; =
PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; TEXT-ALIGN: center
}
#cp_video .leaderboard IMG {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 5px
}
#cp_video #header {
	MARGIN: 0px 0px 1.5em; WIDTH: 100%
}
#cp_video #header H1 {
	FONT: bold 1.8em/1.8em georgia, "times new roman", serif; WIDTH: 100%; =
TEXT-INDENT: -1000em
}
#cp_video #header H1 A {
	DISPLAY: block; HEIGHT: 107px
}
#cp_video #top_bar {
	FONT-SIZE: 80%; BACKGROUND: #2b004d; MARGIN: 10px 10px 0px; OVERFLOW: =
hidden; WIDTH: 967px
}
#cp_video #top_bar A {
	COLOR: #fff; TEXT-DECORATION: underline
}
#cp_video #top_bar A:visited {
	COLOR: #fff; TEXT-DECORATION: underline
}
#cp_video #top_bar H3 {
	PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 10px; =
PADDING-BOTTOM: 0px; FONT: 1.1em/27px arial, helvetica, sans-serif; =
COLOR: #fff; PADDING-TOP: 0px
}
#cp_video #video_iframe {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FLOAT: left; PADDING-BOTTOM: =
0px; MARGIN: 0px 0px 1em; PADDING-TOP: 0px
}
#cp_video #roo_frame {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
0px; MARGIN: 0px; OVERFLOW: hidden; BORDER-TOP-STYLE: none; PADDING-TOP: =
0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; =
BORDER-BOTTOM-STYLE: none
}
#cp_video #video_feed {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/feed_gradient.g=
if) #fff repeat-y left top; FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: =
0px; OVERFLOW: hidden; WIDTH: 200px; PADDING-TOP: 0px; HEIGHT: 920px
}
#cp_video #video_feed H2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0.5em; BACKGROUND: #e7e7e7; =
PADDING-BOTTOM: 0px; FONT: bold 12px/1.6em arial, helvetica, sans-serif; =
WIDTH: 100%; COLOR: #666; PADDING-TOP: 0px
}
#cp_video #video_feed UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 13px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#cp_video #video_feed LI {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: =
5px; MARGIN: 0px; PADDING-TOP: 5px; BORDER-BOTTOM: #c2c2c2 1px solid; =
LIST-STYLE-TYPE: none
}
#cp_video #video_feed LI:hover {
	BACKGROUND: #fffccc
}
#cp_video #video_feed IMG {
	BORDER-RIGHT: #c2c2c2 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: =
#c2c2c2 1px solid; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: 0px; =
MARGIN: 0px 5px 0px 0px; BORDER-LEFT: #c2c2c2 1px solid; PADDING-TOP: =
0px; BORDER-BOTTOM: #c2c2c2 1px solid
}
#cp_video #video_feed LI H3 {
	FLOAT: left; FONT: bold 1em/1.2em arial, helvetica, sans-serif; =
TEXT-TRANSFORM: none; WIDTH: 45%; COLOR: #666
}
#cp_video #video_feed LI H3 SPAN {
	DISPLAY: block; TEXT-TRANSFORM: uppercase; COLOR: #609fdf
}
#cp_video #video_feed LI A:hover SPAN {
	TEXT-DECORATION: underline
}
#cp_video .cp_clear {
	CLEAR: both
}
#cp_video #footer {
	BORDER-TOP: #2b004d 4px solid; BACKGROUND: #fff; WIDTH: 100%; =
TEXT-ALIGN: left
}
#cp_video #footer P {
	PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FONT-SIZE: 11px; =
PADDING-BOTTOM: 0.5em; COLOR: #666; PADDING-TOP: 0.5em
}
#cp_video #footer P A {
	FONT-WEIGHT: bold; COLOR: #2b004d; TEXT-DECORATION: none
}
#cp_article_photos * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#cp_article_photos A {
	COLOR: #666
}
#cp_article_photos A:hover {
	COLOR: #000; BACKGROUND-COLOR: #ff9
}
#cp_photo_wrapper {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; FONT: =
11px/1em Arial, Helvetica, sans-serif; WIDTH: 250px; PADDING-TOP: 0px
}
#cp_photo {
	BORDER-RIGHT: #dadada 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: =
#dadada 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: =
#dadada 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #dadada 1px solid
}
#cp_photo * {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
MARGIN: 0px; COLOR: #000; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px
}
#cp_photo LI {
	DISPLAY: block
}
#cp_photo UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
LI.cp_photo_block {
	LIST-STYLE-TYPE: none; TEXT-ALIGN: center
}
.cp_photo_container {
	BACKGROUND: #dadada; WIDTH: 240px
}
A .cp_photo_instructions {
	FONT-WEIGHT: bold; FONT-SIZE: 0.9em; TEXT-TRANSFORM: uppercase; COLOR: =
#bbb! important
}
A:hover .cp_photo_instructions {
	BACKGROUND: #ff9; COLOR: black! important
}
LI.cp_photo_credit {
	FONT-SIZE: 0.9em; MARGIN-BOTTOM: 0.5em! important; LIST-STYLE-TYPE: =
none; TEXT-ALIGN: right
}
.cp_photo_caption {
	MARGIN-BOTTOM: 1em! important; TEXT-ALIGN: left
}
.cp_slideshow_controls {
	PADDING-RIGHT: 1em! important; PADDING-LEFT: 1em! important; =
BACKGROUND: url(images/fade_up.gif) no-repeat center top; =
PADDING-BOTTOM: 1em! important; PADDING-TOP: 1em! important; TEXT-ALIGN: =
center
}
.cp_slideshow_controls A {
	COLOR: gray! important
}
.cp_slideshow_controls A:hover {
	COLOR: black! important
}
A#cp_photo_prev {
	PADDING-RIGHT: 0px; PADDING-LEFT: 18px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/control_star=
t.png) no-repeat left center; PADDING-BOTTOM: 1px; PADDING-TOP: 1px
}
A#cp_photo_next {
	PADDING-RIGHT: 18px; PADDING-LEFT: 0px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/control_end.=
png) no-repeat right center; PADDING-BOTTOM: 1px; MARGIN-LEFT: 1em; =
PADDING-TOP: 1px
}
#cp_gallery_wrapper {
	PADDING-BOTTOM: 5px; FONT: 11px/1em Arial, Helvetica, sans-serif; =
WIDTH: 250px
}
#cp_gallery {
	BORDER-RIGHT: #dadada 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: =
#dadada 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: =
#dadada 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #dadada 1px solid
}
#cp_gallery * {
	BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; =
BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; =
MARGIN: 0px; COLOR: #000; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px
}
.cp_gallery_loop LI {
	DISPLAY: block; FLOAT: left; WIDTH: 80px; HEIGHT: 80px
}
.cp_gallery_loop LI A {
	WIDTH: 75px; HEIGHT: 75px
}
.cp_gallery_loop LI A:hover IMG {
	BORDER-RIGHT: #ff9 2px solid; BORDER-TOP: #ff9 2px solid; BORDER-LEFT: =
#ff9 2px solid; BORDER-BOTTOM: #ff9 2px solid
}
.cp_gallery_loop LI IMG {
	BORDER-RIGHT: white 2px solid; BORDER-TOP: white 2px solid; MARGIN: 1px =
0px 0px 1px; BORDER-LEFT: white 2px solid; WIDTH: 75px; BORDER-BOTTOM: =
white 2px solid; HEIGHT: 75px
}
UL.cp_gallery_instructions {
	CLEAR: left; DISPLAY: block
}
UL.cp_gallery_instructions LI {
	DISPLAY: block; FONT-WEIGHT: bold; FONT-SIZE: 0.9em; TEXT-TRANSFORM: =
uppercase; COLOR: #bbb! important; PADDING-TOP: 5px! important; =
TEXT-ALIGN: center
}
#cp_lgphoto_wrapper {
	PADDING-BOTTOM: 15px; FONT: 11px/1em Arial, Helvetica, sans-serif
}
.cp_lgphoto_loop UL {
	DISPLAY: block
}
.cp_lgphoto_loop LI {
	DISPLAY: block
}
#cp_lgphoto_wrapper IMG {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
#cp_photo LI {
	DISPLAY: block
}
#cp_lgphoto_wrapper .cp_photo_container {
	BACKGROUND: #dadada; OVERFLOW: hidden; WIDTH: 100%; TEXT-ALIGN: center
}
.cp_slideshow_controls {
	PADDING-RIGHT: 1em! important; PADDING-LEFT: 1em! important; =
BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/fade_up.gif) =
no-repeat center top; PADDING-BOTTOM: 1em! important; PADDING-TOP: 1em! =
important; TEXT-ALIGN: center
}
.cp_slideshow_controls A {
	COLOR: gray! important
}
.cp_slideshow_controls A:hover {
	COLOR: black! important
}
A#cp_photo_prev {
	PADDING-RIGHT: 0px; PADDING-LEFT: 18px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/control_star=
t.png) no-repeat left center; PADDING-BOTTOM: 1px; PADDING-TOP: 1px
}
A#cp_photo_next {
	PADDING-RIGHT: 18px; PADDING-LEFT: 0px; BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/icons/fff/control_end.=
png) no-repeat right center; PADDING-BOTTOM: 1px; MARGIN-LEFT: 1em; =
PADDING-TOP: 1px
}
.cp_slideshow_controls {
	DISPLAY: none! important
}
.cp_photo_loop {
	DISPLAY: none! important
}
#cp_photo_wrapper {
	DISPLAY: none! important
}
#cp_gallery_wrapper {
	DISPLAY: none! important
}
#cp_lgphoto_wrapper {
	DISPLAY: none! important
}
.layout_r #cp_photo_wrapper {
	DISPLAY: block! important
}
.layout_r .cp_photo_loop {
	DISPLAY: block! important
}
.layout_l #cp_photo_wrapper {
	DISPLAY: block! important
}
.layout_l .cp_photo_loop {
	DISPLAY: block! important
}
.layout_rs #cp_photo_wrapper {
	DISPLAY: block! important
}
.layout_ls #cp_photo_wrapper {
	DISPLAY: block! important
}
.layout_rs .cp_photo_first {
	DISPLAY: block! important
}
.layout_ls .cp_photo_first {
	DISPLAY: block! important
}
.layout_rs .cp_slideshow_controls {
	DISPLAY: block! important
}
.layout_ls .cp_slideshow_controls {
	DISPLAY: block! important
}
.layout_7 .cp_slideshow_controls {
	DISPLAY: block! important
}
.layout_7 .cp_slideshow_controls {
	DISPLAY: block! important
}
.layout_rg #cp_gallery_wrapper {
	DISPLAY: block! important
}
.layout_lg #cp_gallery_wrapper {
	DISPLAY: block! important
}
.layout_l {
	FLOAT: left! important; MARGIN-RIGHT: 0.5em! important
}
.layout_ls {
	FLOAT: left! important; MARGIN-RIGHT: 0.5em! important
}
.layout_lg {
	FLOAT: left! important; MARGIN-RIGHT: 0.5em! important
}
.layout_r {
	FLOAT: right! important; MARGIN-LEFT: 0.5em! important
}
.layout_rs {
	FLOAT: right! important; MARGIN-LEFT: 0.5em! important
}
.layout_rg {
	FLOAT: right! important; MARGIN-LEFT: 0.5em! important
}
.layout_7 #cp_lgphoto_wrapper {
	DISPLAY: block! important
}
.layout_7 #cp_at_wrapper {
	FLOAT: right! important; MARGIN-LEFT: 0.5em! important
}
#related_stories {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/rl_bkg.gif) =
no-repeat left bottom; FONT: 11px/18px Arial, Helvetica, sans-serif; =
WIDTH: 491px
}
#related_stories * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#related_stories H4 {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/assets/images/rl_top.gif) =
no-repeat left top; TEXT-INDENT: -1000em
}
#related_stories UL {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; LIST-STYLE-POSITION: inside; =
PADDING-BOTTOM: 5px; PADDING-TOP: 5px; LIST-STYLE-TYPE: none
}
#related_stories UL LI {
	PADDING-RIGHT: 0px; PADDING-LEFT: 18px; FONT-SIZE: 1.1em; BACKGROUND: =
url(http://collegepublisher.com/media/assets/icons/fff/link.png) =
no-repeat left center; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 8px; =
PADDING-TOP: 0px; BORDER-BOTTOM: #eee 1px dotted
}
#related_stories UL LI A {
	TEXT-DECORATION: none
}
#global_footer {
	CLEAR: left; PADDING-RIGHT: 0px; BORDER-TOP: #eee 2px solid; =
PADDING-LEFT: 0px; FONT-SIZE: 12px; BACKGROUND: #e0e0e0; PADDING-BOTTOM: =
10px; WIDTH: 100%; COLOR: #303030; LINE-HEIGHT: 16px; PADDING-TOP: 10px; =
POSITION: relative; TOP: 30px; TEXT-ALIGN: center
}
#global_footer #logo_mtvu {
	DISPLAY: inline-block; FONT-SIZE: 0px; BACKGROUND: =
url(/media/assets/images/logo_mtvu.gif) no-repeat left top; =
VERTICAL-ALIGN: bottom; OVERFLOW: hidden; WIDTH: 31px; TEXT-INDENT: =
-9999em; LINE-HEIGHT: 16px; HEIGHT: 16px
}
#global_footer #logo_mtvn {
	DISPLAY: inline-block; FONT-SIZE: 0px; BACKGROUND: =
url(/media/assets/images/logo_mtvn.gif) no-repeat left top; =
VERTICAL-ALIGN: bottom; OVERFLOW: hidden; WIDTH: 85px; TEXT-INDENT: =
-9999em; LINE-HEIGHT: 16px; HEIGHT: 16px
}

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: 7bit
Content-Location: http://media.collegepublisher.com/media/css/features_1024.css?v1

#net_search {
	VISIBILITY: hidden
}

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/css/popup_new.css?v12

.dialog {
	DISPLAY: block; POSITION: absolute; TEXT-ALIGN: left! important
}
.dialog TABLE.table_window {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; WIDTH: 100%; PADDING-TOP: 0px; BORDER-COLLAPSE: collapse; =
border-spacing: 0
}
.dialog TABLE.table_window TD {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.dialog TABLE.table_window TH {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.dialog .title_window {
	-moz-user-select: none
}
.dialog_close {
	Z-INDEX: 2000; BACKGROUND: url(/media/assets/icons/close.gif) no-repeat =
0px 0px; LEFT: 97%; WIDTH: 14px; CURSOR: pointer; POSITION: absolute; =
TOP: 22px; HEIGHT: 14px
}
.overlay_popup {
	FILTER: alpha(opacity=3D50); BACKGROUND-COLOR: #000000; -moz-opacity: =
0.50; opacity: 0.50
}
.overlay_dialog {
	FILTER: alpha(opacity=3D70); BACKGROUND-COLOR: #000000; -moz-opacity: =
0.7; opacity: 0.7
}
.overlay_dialog IFRAME {
	BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: =
0px; BORDER-RIGHT-WIDTH: 0px
}
.overlay___invisible__ {
	FILTER: alpha(opacity=3D0); BACKGROUND-COLOR: #000000; -moz-opacity: 0; =
opacity: 0
}

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/css/print.css?v1

* {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
#topbar {
	DISPLAY: none
}
#topsearchform {
	DISPLAY: none
}
#cpleftcol {
	DISPLAY: none
}
#cprightcol {
	DISPLAY: none
}
#banner_network_5 {
	DISPLAY: none
}
#cpheader {
	DISPLAY: none
}
#cpleftcol {
	DISPLAY: none
}
#cprightcol {
	DISPLAY: none
}
#issuesummary {
	DISPLAY: none
}
#ncbar {
	DISPLAY: none
}
.goner {
	DISPLAY: none
}
#cpfooter {
	DISPLAY: none
}
#ncbar TD {
	DISPLAY: none
}
#agent99 {
	DISPLAY: none
}
#loggedin_bar {
	DISPLAY: none
}
#maincontent {
	DISPLAY: block
}
#cpcentercol {
	WIDTH: 100%
}
#left_cell {
	DISPLAY: none
}
IFRAME {
	DISPLAY: none
}
#banner_network_2 {
	DISPLAY: none
}
#right_cell {
	DISPLAY: none
}
#topbar {
	DISPLAY: none
}
#cpheader {
	DISPLAY: none
}
#cpfooter {
	DISPLAY: none
}
.goner {
	DISPLAY: none
}
#banner_client_1 {
	DISPLAY: none
}
#flan_header {
	DISPLAY: none
}
#flan_ads {
	DISPLAY: none
}
#flan_nav {
	DISPLAY: none
}
#weatherm {
	DISPLAY: none
}
#flan_footer {
	DISPLAY: none
}
#topbar {
	DISPLAY: none
}
#flan_content {
	WIDTH: 100%
}

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.redandblack.com/media/paper871/styles.css?v13

A {
	COLOR: #c91000
}
#flan_nav A {
	BORDER-BOTTOM: #000 1px solid
}
A:hover {
	COLOR: #666666
}
#flan_header_meta {
	BORDER-TOP: #000 1px solid; BACKGROUND: #c91000
}
#flan_header_meta * {
	COLOR: #ffffff
}
#flan_nav H4 {
	BACKGROUND: #000000; COLOR: #ffffff
}
#flan_nav A {
	COLOR: #000000; BORDER-BOTTOM: #ffffff 1px solid
}
#flan_sections LI A {
	BACKGROUND: #898989; COLOR: #000000
}
#flan_nav UL {
	MARGIN: 0px 0px 1px; BORDER-BOTTOM: #898989 1px solid
}
#redOptions LI A {
	BACKGROUND: #a9a9a9
}
#redMoreOptions LI A {
	BACKGROUND: #d6d6d6
}
#flan_nav LI A:hover {
	BACKGROUND: #c91000; COLOR: #ffffff
}
* {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
BODY {
	BACKGROUND: #f5f5f5; FONT: 12px/16px arial, verdana, sans-serif
}
#flan_wrap {
	BORDER-RIGHT: #d8d8d8 1px solid; BACKGROUND: #ffffff; WIDTH: 1000px
}
#flan_header * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px
}
#flan_header {
	FLOAT: left; POSITION: relative
}
#flan_header_main {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/paper871/template/templatemed=
ia/redLogo.gif) no-repeat 15px 5px; HEIGHT: 90px
}
#flan_header_meta {
	FLOAT: left; MARGIN: 0px 0px 10px; WIDTH: 1000px
}
#flan_header_meta * {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: =
12px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; text-shadow: =
2px 2px 1px #000
}
#flan_meta_left {
	PADDING-RIGHT: 0px; PADDING-LEFT: 7px; FLOAT: left; PADDING-BOTTOM: =
0px; WIDTH: 466px; PADDING-TOP: 8px; TEXT-ALIGN: left
}
#flan_meta_right {
	PADDING-RIGHT: 7px; PADDING-LEFT: 7px; FLOAT: right; PADDING-BOTTOM: =
6px; WIDTH: 466px; PADDING-TOP: 6px; TEXT-ALIGN: right
}
#flan_meta_right A {
	TEXT-DECORATION: underline
}
.redSearch {
	RIGHT: 20px; WIDTH: 240px; POSITION: absolute; TOP: 20px
}
.redSearch P {
	FONT-WEIGHT: bold; TEXT-TRANSFORM: uppercase
}
.redSearch FIELDSET {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
.flan_classified_link U {
	DISPLAY: none
}
H1#flan_logo {
	WIDTH: 1000px; TEXT-INDENT: 0px; LINE-HEIGHT: 90px; HEIGHT: 90px
}
H1#flan_logo A {
	DISPLAY: block; WIDTH: 255px; TEXT-INDENT: -1000px; LINE-HEIGHT: 90px; =
HEIGHT: 90px
}
#flan_body {
	FLOAT: left
}
#flan_nav {
	FLOAT: left; WIDTH: 150px; POSITION: relative
}
#flan_body_wrap {
	FLOAT: right; WIDTH: 850px
}
#flan_leader {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: #f5f5f5; =
PADDING-BOTTOM: 5px; MARGIN: 0px 0px 10px; PADDING-TOP: 5px; TEXT-ALIGN: =
center
}
#flan_ads {
	PADDING-RIGHT: 5px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#flan_content {
	FLOAT: left; WIDTH: 540px
}
#flan_content .gutter {
	MARGIN: 0px 5px 10px
}
.redLeft {
	FLOAT: left; WIDTH: 250px
}
.redRight {
	FLOAT: left; WIDTH: 250px
}
.redRight {
	FLOAT: right
}
#flan_content .redLeads .redLeft A {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
#flan_content H2 A {
	COLOR: #000
}
#flan_content .redLeft IMG {
	MARGIN: 0px 0px 3px
}
.redCaption {
	FONT-SIZE: 10px; MARGIN: 0px 0px 5px; LINE-HEIGHT: 12px
}
#flan_content .sectionHilite {
	MARGIN: 0px 0px 5px; FONT: bold 1.2em/1.2em arial, verdana, sans-serif; =
COLOR: #c91000! important; TEXT-DECORATION: underline
}
#flan_content .sectionHilite A {
	MARGIN: 0px 0px 5px; FONT: bold 1.2em/1.2em arial, verdana, sans-serif; =
COLOR: #c91000! important; TEXT-DECORATION: underline
}
.redRight LI {
	MARGIN: 0px 0px 3px
}
.redRight A {
	COLOR: #000
}
.redLeads {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/paper871/template/templatemed=
ia/redLine.gif) repeat-y 264px top; MARGIN: 0px 0px 10px
}
#cp_more_wrap {
	BORDER-RIGHT: #ccc 1px dotted; FLOAT: left; MARGIN: 0px 10px 0px 0px; =
WIDTH: 155px
}
#cp_more_last {
	FLOAT: left; MARGIN: 0px; WIDTH: 155px
}
#cp_lead_more {
	PADDING-RIGHT: 10px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 10px; =
PADDING-BOTTOM: 10px; MARGIN: 0px 0px 1em; PADDING-TOP: 10px; =
BORDER-BOTTOM: #ccc 1px solid
}
#cp_lead_more IMG {
	BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; MARGIN: 0px =
0px 5px; BORDER-LEFT: #000 1px solid; WIDTH: 140px; BORDER-BOTTOM: #000 =
1px solid
}
#cp_lead_more H4 {
	FONT: bold 1em/1.2em arial, helvetica, sans-serif
}
#flan_content H3 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; FONT: 1.2em/1.2em arial, helvetica, sans-serif; PADDING-TOP: 0px
}
#issuesummary H3 {
	MARGIN: 0px 5px 0px 0px; BORDER-BOTTOM: #666 1px solid
}
A.issuesummarysection {
	COLOR: #000
}
#issuesummary LI {
	MARGIN: 0px 0px 0px 10px; LIST-STYLE-TYPE: square
}
.flan_section {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; MARGIN: =
0px 0px 15px; PADDING-TOP: 0px; BORDER-BOTTOM: #999 1px dotted
}
.flan_section_title {
	FONT-SIZE: 22px; MARGIN: 0px 0px 15px; LINE-HEIGHT: 1.2em; =
BORDER-BOTTOM: #666 1px solid
}
.flan_section H2 {
	FONT-SIZE: 18px; MARGIN: 0px 0px 2px; LINE-HEIGHT: 1.2em
}
.flan_section H3 {
	FONT-WEIGHT: normal; FONT-SIZE: 14px; MARGIN: 0px 0px 5px; LINE-HEIGHT: =
1.2em
}
.flan_section H5 {
	MARGIN: 0px 0px 5px; FONT: 14px/1.2em Georgia, Times New Roman, serif
}
.flan_section P {
	MARGIN: 0px
}
.flan_author {
	TEXT-TRANSFORM: uppercase
}
#flan_footer {
	CLEAR: both; PADDING-RIGHT: 10px; BORDER-TOP: #dddddd 4px solid; =
PADDING-LEFT: 10px; BACKGROUND: #e5e5e5; PADDING-BOTTOM: 10px; FONT: =
11px/15px arial, verdana, sans-serif; PADDING-TOP: 10px; POSITION: =
relative; TOP: 33px
}
#flan_footer A {
	COLOR: #000
}
#flan_footer A:hover {
	COLOR: #000; TEXT-DECORATION: underline
}
#flan_nav H4 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 7px; PADDING-BOTTOM: 0px; MARGIN: =
0px; FONT: 13px/25px arial, verdana, sans-serif; TEXT-TRANSFORM: =
uppercase; PADDING-TOP: 0px; text-shadow: 2px 2px 1px #000000
}
#flan_nav LI {
	DISPLAY: inline; LIST-STYLE-TYPE: none; POSITION: relative
}
#flan_nav LI A {
	PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 7px; PADDING-BOTTOM: =
0px; FONT: 12px/20px arial, verdana, sans-serif; PADDING-TOP: 0px; =
TEXT-DECORATION: none
}
#flan_nav LI UL A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 14px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#flan_nav LI UL A:unknown {
	content: "- "
}
#flan_nav LI UL {
	DISPLAY: none
}
#flan_nav LI:hover UL {
	DISPLAY: block
}
#flan_nav LI A {
	HEIGHT: 1%
}
#flan_nav LI UL {
	BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; LEFT: 150px; =
BORDER-LEFT: #999 1px solid; WIDTH: 120px; BORDER-BOTTOM: #999 1px =
solid; POSITION: absolute; TOP: 0px
}
#flan_nav LI UL A {
	FONT-SIZE: 1.1em; BACKGROUND: #d6d6d6; COLOR: #000; LINE-HEIGHT: 1.5em; =
BORDER-BOTTOM: #fff 1px solid
}
#flan_nav UL.topmenu {
	BACKGROUND: #d6d6d6; WIDTH: 100%; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
#flan_nav .rss A {
	PADDING-RIGHT: 0px; PADDING-LEFT: 20px; BACKGROUND: =
url(http://media.collegepublisher.com/media/paper871/template/templatemed=
ia/rss.gif) #d6d6d6 no-repeat 1px 50%; PADDING-BOTTOM: 0px; PADDING-TOP: =
0px
}
#flan_nav .rss A:hover {
	PADDING-RIGHT: 0px; PADDING-LEFT: 20px; BACKGROUND: =
url(http://media.collegepublisher.com/media/paper871/template/templatemed=
ia/rss_red.gif) #c91000 no-repeat 1px 50%; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
#banner_client_1 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 10px; TEXT-ALIGN: center
}
#flan_nav #flan_article_top A {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
#flan_nav #flan_article_tools A {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
.crossword IMG {
	WIDTH: 350px
}
.puzzle {
	FLOAT: right; WIDTH: 350px
}
.puzzle A {
	BORDER-TOP-STYLE: none! important; BORDER-RIGHT-STYLE: none! important; =
BORDER-LEFT-STYLE: none! important; TEXT-DECORATION: none! important; =
BORDER-BOTTOM-STYLE: none! important
}
* HTML #flan_nav {
	WIDTH: 140px
}
.quote {
	FONT-STYLE: italic
}
.respondent {
	FONT-WEIGHT: bold; TEXT-TRANSFORM: uppercase; FONT-FAMILY: New Century =
Schoolbook, Times, serif; TEXT-ALIGN: center
}
.info {
	TEXT-TRANSFORM: uppercase; FONT-FAMILY: New Century Schoolbook, Times, =
serif; TEXT-ALIGN: center
}
#cp_staff {
	BORDER-TOP: #ccc 1px solid
}
#cp_staff .staff_member {
	CLEAR: left; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; =
PADDING-BOTTOM: 2px; WIDTH: 100%; PADDING-TOP: 2px; BORDER-BOTTOM: #ccc =
1px solid
}
#cp_staff .staff_member IMG {
	DISPLAY: none
}
#cp_staff .staff_member .cp_staff_name {
	FONT-SIZE: 30px; FLOAT: left; MARGIN-LEFT: 20px; WIDTH: 50%
}
#cp_staff .staff_member .cp_staff_name DT {
	FONT-SIZE: 12px; MARGIN: 0px 0px 0em
}
#cp_staff .staff_member .cp_staff_name DD {
	FONT-SIZE: 10px
}
#cp_staff .staff_member .cp_staff_contact {
	FONT-SIZE: 10px; FLOAT: right; MARGIN-RIGHT: 30px
}
#cp_staff .staff_member .cp_staff_contact DT {
	FONT-WEIGHT: bold
}
#cp_staff .staff_member .cp_staff_contact DD {
	FONT-SIZE: 10px; MARGIN: 0px 0px 0px 0em
}
#cp_coupon {
	BORDER-TOP: #ccc 1px solid
}
#cp_coupon .coupon_member {
	CLEAR: left; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; =
PADDING-BOTTOM: 10px; WIDTH: 100%; PADDING-TOP: 10px
}
#cp_coupon .coupon_member .cp_coupon_name {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 30px; FLOAT: left; =
PADDING-BOTTOM: 10px; MARGIN-LEFT: 20px; WIDTH: 50%; PADDING-TOP: 10px
}
#cp_coupon .coupon_member .cp_coupon_name DT {
	FONT-SIZE: 18px; MARGIN: 0px 0px 0em
}
#bus_type {
	FONT-SIZE: 15px
}
#pic_left {
	BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; FLOAT: =
left; MARGIN: 10px; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black =
1px solid
}
#pic_right {
	BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; FLOAT: =
right; MARGIN: 10px; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black =
1px solid
}
.blog_thumb {
	BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; MARGIN: =
10px; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid
}
.blogpic_left {
	BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; FLOAT: =
left; MARGIN: 10px; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black =
1px solid
}
.blogpic_right {
	BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; FLOAT: =
right; MARGIN: 10px; BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black =
1px solid
}
#brkout {
	BORDER-RIGHT: #666 1px solid; PADDING-RIGHT: 20px; BORDER-TOP: #666 1px =
solid; PADDING-LEFT: 20px; BACKGROUND: #d6d6d6; FLOAT: right; =
PADDING-BOTTOM: 20px; MARGIN: 10px; BORDER-LEFT: #666 1px solid; WIDTH: =
200px; PADDING-TOP: 20px; BORDER-BOTTOM: #666 1px solid; POSITION: =
relative; TEXT-ALIGN: center
}
#brkout H4 {
	FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: #cc0000; FONT-FAMILY: Arial, =
Verdana, Helvetica, sans-serif; TEXT-ALIGN: center
}
#btmbox {
	BORDER-RIGHT: #666 1px solid; PADDING-RIGHT: 20px; BORDER-TOP: #666 1px =
solid; PADDING-LEFT: 20px; BACKGROUND: #d6d6d6; PADDING-BOTTOM: 20px; =
MARGIN: 10px; BORDER-LEFT: #666 1px solid; WIDTH: 200px; PADDING-TOP: =
20px; BORDER-BOTTOM: #666 1px solid; TEXT-ALIGN: center
}
#btmbox H4 {
	FONT-WEIGHT: bold; FONT-SIZE: 16px; COLOR: #cc0000; FONT-FAMILY: Arial, =
Verdana, Helvetica, sans-serif; TEXT-ALIGN: center
}
.textboldred {
	FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #cc0000; FONT-FAMILY: Arial, =
Verdana, Helvetica, sans-serif
}
#flan_pdf {
	BORDER-RIGHT: #666 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #666 1px =
solid; PADDING-LEFT: 0px; BACKGROUND: #ccc; PADDING-BOTTOM: 9px; MARGIN: =
0px; BORDER-LEFT: #666 1px solid; PADDING-TOP: 12px; BORDER-BOTTOM: #666 =
1px solid; TEXT-ALIGN: center
}
#flan_pdf H4 {
	BACKGROUND: #ccc; MARGIN: 0px 0.5em 0.5em 0px; FONT: 1em/1em arial, =
helvetica, sans-serif; COLOR: #000; TEXT-ALIGN: center
}
#flan_pdf A IMG {
	BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #000 1px =
solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: =
#000 1px solid; PADDING-TOP: 0px; BORDER-BOTTOM: #000 1px solid
}
#flan_pdf A:hover IMG {
	BORDER-RIGHT: #c91000 1px solid; BORDER-TOP: #c91000 1px solid; =
BACKGROUND: #fff; BORDER-LEFT: #c91000 1px solid; BORDER-BOTTOM: #c91000 =
1px solid
}
#flan_nav LI:hover UL {
	DISPLAY: block
}
#flan_nav LI.hover UL {
	DISPLAY: block
}
#flan_blog {
	MARGIN: 0px 0px 1.5em; BORDER-BOTTOM: #d8d8d8 1px dotted
}
#flan_blog_main {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: =
1em; WIDTH: 74%; PADDING-TOP: 0px
}
#flan_blog_main H4 {
	FONT-WEIGHT: normal; FONT-SIZE: 1em; TEXT-TRANSFORM: uppercase; COLOR: =
#333333
}
#flan_blog_main LI A.h3:hover {
	FONT-SIZE: 1.5em; COLOR: #ffcc00
}
#flan_blog_main LI A.h3 {
	FONT-SIZE: 1.5em; COLOR: #ffcc00
}
#flan_blog_main H5 {
	FONT-WEIGHT: normal; FONT-SIZE: 1em; COLOR: #000000
}
#flan_blog_main P.flan_blog_meta {
	MARGIN: 0px 0px 2em; COLOR: #999999
}
#flan_blog_main P.flan_blog_action {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: #f5f5f5; =
PADDING-BOTTOM: 5px; MARGIN: 0px 0px 2em; PADDING-TOP: 5px
}
#flan_blog_side {
	FLOAT: right; WIDTH: 23%
}
#flan_blog_side H6 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: =
1.1em; PADDING-BOTTOM: 0.3em; TEXT-TRANSFORM: uppercase; PADDING-TOP: =
0px; LETTER-SPACING: 1px
}
#flan_blog_side LI {
	MARGIN: 0px 0px 5px; LIST-STYLE-TYPE: none
}
#flan_blog_side FIELDSET {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
#flan_blog_side FORM {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; MARGIN: =
0px 0px 15px; PADDING-TOP: 0px; BORDER-BOTTOM: #d8d8d8 1px solid
}
#flan_blog_side UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 15px; MARGIN: =
0px 0px 15px; PADDING-TOP: 0px; BORDER-BOTTOM: #d8d8d8 1px solid
}
#flan_blog_side UL {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; =
PADDING-TOP: 0px
}
#flan_blog_side .flan_blog_search {
	MARGIN: 0px 5px 0px 0px; WIDTH: 90px
}
#flan_blog_side SELECT {
	WIDTH: 120px
}
#flan_blog_about {
	PADDING-RIGHT: 12px; PADDING-LEFT: 12px; BACKGROUND: #c91000; =
PADDING-BOTTOM: 12px; MARGIN: 0px 0px 15px; COLOR: #fff; PADDING-TOP: =
12px
}
#flan_blog_about H6 {
	MARGIN: 0px 0px 0.8em; BORDER-BOTTOM: #f2f6ed 1px solid
}
#flan_blog_about P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; COLOR: #f2f6ed; LINE-HEIGHT: 1.3em; PADDING-TOP: 0px
}
#flan_blogs_comment_form {
	MARGIN: 0px 0px 1.5em
}
#flan_blogs_comment_form UL {
	BORDER-RIGHT: #d8d8d8 4px solid; PADDING-RIGHT: 10px; BORDER-TOP: =
#d8d8d8 4px solid; PADDING-LEFT: 10px; BACKGROUND: #e5e5e5; =
PADDING-BOTTOM: 10px; MARGIN: 0px 0px 3px; BORDER-LEFT: #d8d8d8 4px =
solid; PADDING-TOP: 10px; BORDER-BOTTOM: #d8d8d8 4px solid
}
#flan_blogs_comment_form FIELDSET {
	MARGIN: 0px 0px 5px; COLOR: #030303; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; LIST-STYLE-TYPE: =
none; BORDER-BOTTOM-STYLE: none
}
#flan_blogs_comment_form LI {
	MARGIN: 0px 0px 5px; COLOR: #030303; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; LIST-STYLE-TYPE: =
none; BORDER-BOTTOM-STYLE: none
}
#flan_blogs_comment_form UL.flan_blogs_allowed {
	PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BACKGROUND: #f5f5f5; =
PADDING-BOTTOM: 10px; BORDER-TOP-STYLE: none; PADDING-TOP: 10px; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: =
none
}
#flan_blogs_comment_form UL.flan_blogs_allowed LI {
	FONT-SIZE: 1em! important
}
#flan_blogs_comment_form LABEL {
	DISPLAY: block
}
#flan_blogs_textarea {
	MARGIN: 0px 0px 7px; WIDTH: 290px
}
#flan_blogs_comment_form LI.flan_blogs_last {
	MARGIN: 0px
}
#flan_blogs_comment_form EM {
	FONT-SIZE: 1.5em; COLOR: #b1ce73; FONT-STYLE: normal; text-shadow: 2px =
2px 1px #000000
}
.flan_blog_input {
	WIDTH: 250px
}
OL.flan_blogs_comment_list {
	MARGIN: 0px 0px 1.5em
}
.flan_blogs_comment_list CITE {
	FONT-SIZE: 1.5em; COLOR: #030303; FONT-STYLE: normal
}
.flan_blogs_comment_list LI {
	BORDER-RIGHT: #d8d8d8 4px solid; BORDER-TOP: #d8d8d8 4px solid; MARGIN: =
0px 0px 1em; BORDER-LEFT: #d8d8d8 4px solid; BORDER-BOTTOM: #d8d8d8 4px =
solid; LIST-STYLE-TYPE: none
}
.flan_blogs_comment_list P {
	MARGIN: 0px 0px 15px
}
.flan_blogs_comment_list .flan_blogs_gutter {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
15px 10px 0px; PADDING-TOP: 0px
}
.flan_blogs_tag_head {
	PADDING-RIGHT: 3px; DISPLAY: block; PADDING-LEFT: 3px; BACKGROUND: =
#c90000; PADDING-BOTTOM: 3px; MARGIN: 5px 0px; COLOR: #ffffff; =
PADDING-TOP: 3px; FONT-STYLE: normal
}
.flan_blogs_comment_head {
	MARGIN: 0px 0px 5px
}
.flan_blogs_comment_date {
	FONT-SIZE: 1.1em
}
.flan_blogs_comment_odd {
	BACKGROUND: #e5e5e5
}
.flan_blogs_comment_even {
	BACKGROUND: #f5f5f5
}
.flan_blogs_comment_date A {
	COLOR: #333333
}
.flan_blogs_comment_date A:hover {
	COLOR: #aaaaaa
}
#flan_content A.flan_classified_link {
	DISPLAY: none
}
#banner_client_2 {
	PADDING-RIGHT: 0px; PADDING-LEFT: 5px; FLOAT: left; PADDING-BOTTOM: =
5px; PADDING-TOP: 5px; HEIGHT: 125px
}
#banner_client_3 {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FLOAT: right; PADDING-BOTTOM: =
0px; PADDING-TOP: 5px
}
.ie #banner_client_2 {
	LEFT: 5px; MARGIN: 0px 0px 5px; WIDTH: 125px; POSITION: relative; =
HEIGHT: 125px
}
.ie #banner_client_3 {
	RIGHT: 5px; POSITION: relative
}
#cp_video {
	BACKGROUND: #f5f5f5
}
#cp_video #header H1 {
	BACKGROUND: =
url(http://media.collegepublisher.com/media/paper871/template/templatemed=
ia/redLogo.gif) no-repeat 15px 5px; MARGIN: 0px; WIDTH: 100%; =
TEXT-INDENT: -1000em; HEIGHT: 90px
}
#cp_video #top_bar {
	PADDING-RIGHT: 0px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 0px; =
BACKGROUND: #c91000; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 987px; =
PADDING-TOP: 0px
}
#cp_video #header #top_bar H3 A {
	COLOR: #fff
}
#cp_video #footer {
	PADDING-RIGHT: 0px; BORDER-TOP: #dddddd 4px solid; PADDING-LEFT: 0px; =
BACKGROUND: #e5e5e5; PADDING-BOTTOM: 10px; PADDING-TOP: 10px
}
#cp_video #footer P {
	PADDING-RIGHT: 0px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; COLOR: =
#000; PADDING-TOP: 0px
}
#cp_video #footer P A {
	COLOR: #000
}

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/coda/mtvi_reporting.js

/*Build Date: Wed Jan 24, 2007 13:39:48*/=0A=
=0A=
var =
com=3D{mtvi:{util:{},logger:{},config:{},ads:{},reporting:{}}};String.pro=
totype.trim=3Dfunction(){return this.replace(/^\\s+|\\s+$/g,'');}=0A=
String.prototype.chop=3Dfunction(n){if(isNaN(n)){n=3Dthis.length-1;}retur=
n(this.substring(0,n));}=0A=
String.prototype.ucFirst=3Dfunction(){return(this.charAt(0).toUpperCase()=
+this.substr(1,this.length));}=0A=
if(typeof =
document.getElementsByClassName=3D=3D"undefined"){document.getElementsByC=
lassName=3Dfunction(s){var nodes=3D[];var name=3Dnew =
RegExp('\\b'+s+'\\b');var elems=3Dthis.getElementsByTagName('*');for(var =
i=3D0;i<elems.length;i++){if(name.test(elems[i].className)){nodes.push(el=
ems[i])};}=0A=
return nodes;};}=0A=
Math.getRnd=3Dfunction(a_numA,a_numB){if(!com.mtvi.utils.isDefined(a_numA=
)||isNaN(a_numA)||parseInt(a_numA)<0){a_numA=3D1;}=0A=
if(!com.mtvi.utils.isDefined(a_numB)||isNaN(a_numB)||parseInt(a_numB)<0){=
a_numB=3D0;}=0A=
if(a_numA<a_numB){var tempNum=3Da_numA;a_numA=3Da_numB;a_numB=3DtempNum;}=0A=
return(parseInt(Math.random()*(a_numA-a_numB+1)+a_numB));};com.mtvi.util=3D=
{isDefined:function(v){if(typeof =
v=3D=3D=3D'undefined'||v=3D=3D=3Dnull||v=3D=3D=3D''||v=3D=3D=3D'undefined=
'){return false}else{return =
true};},queryStringToHash:function(str){try{var qs=3D[];var =
a=3Dstr.split("?")[1].split("&");for(var x=3D0;x<a.length;x++){var =
b=3Da[x].split("=3D");qs[b[0]]=3Db[1];}=0A=
return =
qs;}catch(e){}},addOnloadEvent:function(func){try{if(window.attachEvent){=
window.attachEvent("onload",func);}=0A=
if(window.addEventListener){window.addEventListener("load",func,false);}=0A=
return this;}catch(e){}},setProperties:function(o){try{for(var i in =
o.properties){if(typeof o[i]!=3D"object"){var =
name=3Di.ucFirst();eval("o.get"+name+"=3Dfunction(){return =
this.properties['"+i+"'];}");eval("o.set"+name+"=3Dfunction(v){this.prope=
rties['"+i+"']=3Dthis.isDefined(v)?v:'';}");}}}catch(e){try{com.mtvi.logg=
er.JsError(e);}catch(e){}}},debug:function(msg){try{var =
c=3Ddocument.getElementById("debug");if(!c){c=3Ddocument.createElement("d=
iv");c.setAttribute("id","debug");document.getElementsByTagName("body")[0=
].appendChild(c);}=0A=
c.innerHTML=3Dc.innerHTML+msg+"<br>";}catch(e){}}};com.mtvi.logger=3D{url=
:"http://viarnd.112.2o7.net/b/ss/viarnd/1/EMAIL?",send:function(msg){if(M=
TVi.util.isDefined(msg)){var img=3Dnew =
Image();img.src=3Dmsg;}},JsError:function(e){try{var =
map=3D{message:'c21',name:'c22',stack:'c23'};var =
msg=3Dthis.url+"pageName=3DJS_ER-"+window.location;if(!MTVi.util.isDefine=
d(e.stack)){e.stack=3Dwindow.location.href;}=0A=
for(var i in =
map){if(MTVi.util.isDefined(e[i])){msg+=3D"&"+map[i]+"=3D"+e[i];}}=0A=
this.send(msg);}catch(e){try{this.send(this.url+"pageName=3DJS_ER-"+"com.=
mtvi.logger =
error:"+e.message);}catch(e){}}}};com.mtvi.reporting.Widget=3Ds_gi('none'=
);com.mtvi.reporting.Widget.setAttribute=3Dfunction(k,v){try{if(com.mtvi.=
util.isDefined(k)){this[k]=3Dcom.mtvi.util.isDefined(v)?v:'';}}catch(e){}=
};com.mtvi.reporting.Widget.getAttribute=3Dfunction(k){try{if(com.mtvi.ut=
il.isDefined(k)){return =
this[k];}else{return;}}catch(e){}};com.mtvi.reporting.Widget.setAccount=3D=
function(v){try{this.setAttribute("un",v);}catch(e){}};com.mtvi.reporting=
.Widget.getAccount=3Dfunction(v){try{this.getAttribute("un");}catch(e){}}=
;com.mtvi.reporting.Widget.appendCall=3Dfunction(s){try{document.write('<=
div style=3D"display:none;">'+s+'</div>');}catch(e){}};var =
s_objectID;function s_c2fe(f){var =
x=3D'',s=3D0,e,a,b,c;while(1){e=3Df.indexOf('"',s);b=3Df.indexOf('\\',s);=
c=3Df.indexOf("\n",s);if(e<0||(b>=3D0&&b<e))e=3Db;if(e<0||(c>=3D0&&c<e))e=
=3Dc;if(e>=3D0){x+=3D(e>s?f.substring(s,e):'')+(e=3D=3Dc?'\\n':'\\'+f.sub=
string(e,e+1));s=3De+1}else return x=0A=
+f.substring(s)}return f}function s_c2fa(f){var =
s=3Df.indexOf('(')+1,e=3Df.indexOf(')'),a=3D'',c;while(s>=3D0&&s<e){c=3Df=
.substring(s,s+1);if(c=3D=3D',')=0A=
a+=3D'","';else if(("\n\r\t ").indexOf(c)<0)a+=3Dc;s++}return =
a?'"'+a+'"':a}function s_c2f(cc){cc=3D''+cc;var fc=3D'var f=3Dnew =
Function(',s=3Dcc.indexOf(';',cc.indexOf('{')),e=3Dcc.lastIndexOf('}'),o,=
a,d,q,c,f,h,x=0A=
fc+=3Ds_c2fa(cc)+',"var s=3Dnew =
Object;';c=3Dcc.substring(s+1,e);s=3Dc.indexOf('function');while(s>=3D0){=
d=3D1;q=3D'';x=3D0;f=3Dc.substring(s);a=3Ds_c2fa(f);e=3Do=3Dc.indexOf('{'=
,s);e++;while(d>0){h=3Dc.substring(e,e+1);if(q){if(h=3D=3Dq&&!x)q=3D'';if=
(h=3D=3D'\\')x=3Dx?0:1;else =
x=3D0}else{if(h=3D=3D'"'||h=3D=3D"'")q=3Dh;if(h=3D=3D'{')d++;if(h=3D=3D'}=
')d--}if(d>0)e++}c=3Dc.substring(0,s)=0A=
+'new Function('+(a?a+',':'')+'"'+s_c2fe(c.substring(o+1,e))+'")'=0A=
+c.substring(e+1);s=3Dc.indexOf('function')}fc+=3Ds_c2fe(c)+';return =
s");'=0A=
eval(fc);return f}function s_gi(un,pg,ss){var c=3D"function s_c(un,pg,s"=0A=
+"s){var s=3Dthis;s.wd=3Dwindow;if(!s.wd.s_c_in){s.wd.s_c_il=3Dnew =
Array;s."=0A=
+"wd.s_c_in=3D0;}s._il=3Ds.wd.s_c_il;s._in=3Ds.wd.s_c_in;s._il[s._in]=3Ds=
;s.w"=0A=
+"d.s_c_in++;s.m=3Dfunction(m){return =
(''+m).indexOf('{')<0};s.fl=3Dfunct"=0A=
+"ion(x,l){return x?(''+x).substring(0,l):x};s.co=3Dfunction(o){if(!o)r"=0A=
+"eturn o;var n=3Dnew Object,x;for(x in o)if(x.indexOf('select')<0&&x.i"=0A=
+"ndexOf('filter')<0)n[x]=3Do[x];return =
n};s.num=3Dfunction(x){x=3D''+x;for"=0A=
+"(var p=3D0;p<x.length;p++)if(('0123456789').indexOf(x.substring(p,p+1"=0A=
+"))<0)return 0;return 1};s.rep=3Dfunction(x,o,n){var =
i=3Dx.indexOf(o),l=3D"=0A=
+"n.length>0?n.length:1;while(x&&i>=3D0){x=3Dx.substring(0,i)+n+x.substri=
"=0A=
+"ng(i+o.length);i=3Dx.indexOf(o,i+l)}return x};s.ape=3Dfunction(x){var =
s"=0A=
+"=3Dthis,i;x=3Dx?s.rep(escape(''+x),'+','%2B'):x;if(x&&s.charSet&&s.em=3D=
=3D"=0A=
+"1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=3Dx.indexOf('%');while(i>=3D=
"=0A=
+"0){i++;if(('89ABCDEFabcdef').indexOf(x.substring(i,i+1))>=3D0)return "=0A=
+"x.substring(0,i)+'u00'+x.substring(i);i=3Dx.indexOf('%',i)}}return x}"=0A=
+";s.epa=3Dfunction(x){var s=3Dthis;return x?unescape(s.rep(''+x,'+',' =
')"=0A=
+"):x};s.pt=3Dfunction(x,d,f,a){var =
s=3Dthis,t=3Dx,z=3D0,y,r;while(t){y=3Dt.ind"=0A=
+"exOf(d);y=3Dy<0?t.length:y;t=3Dt.substring(0,y);r=3Ds.m(f)?s[f](t,a):f(=
t,"=0A=
+"a);if(r)return =
r;z+=3Dy+d.length;t=3Dx.substring(z,x.length);t=3Dz<x.leng"=0A=
+"th?t:''}return ''};s.isf=3Dfunction(t,a){var =
c=3Da.indexOf(':');if(c>=3D0"=0A=
+")a=3Da.substring(0,c);if(t.substring(0,2)=3D=3D's_')t=3Dt.substring(2);=
retu"=0A=
+"rn (t!=3D''&&t=3D=3Da)};s.fsf=3Dfunction(t,a){var =
s=3Dthis;if(s.pt(a,',','isf"=0A=
+"',t))s.fsg+=3D(s.fsg!=3D''?',':'')+t;return =
0};s.fs=3Dfunction(x,f){var s"=0A=
+"=3Dthis;s.fsg=3D'';s.pt(x,',','fsf',f);return =
s.fsg};s.c_d=3D'';s.c_gdf=3Df"=0A=
+"unction(t,a){var s=3Dthis;if(!s.num(t))return 1;return =
0};s.c_gd=3Dfunc"=0A=
+"tion(){var =
s=3Dthis,d=3Ds.wd.location.hostname,n=3Ds.cookieDomainPeriods,"=0A=
+"p;if(d&&!s.c_d){n=3Dn?parseInt(n):2;n=3Dn>2?n:2;p=3Dd.lastIndexOf('.');=
wh"=0A=
+"ile(p>=3D0&&n>1){p=3Dd.lastIndexOf('.',p-1);n--}s.c_d=3Dp>0&&s.pt(d,'.'=
,'"=0A=
+"c_gdf',0)?d.substring(p):''}return s.c_d};s.c_r=3Dfunction(k){var =
s=3Dt"=0A=
+"his;k=3Ds.ape(k);var c=3D' '+s.d.cookie,i=3Dc.indexOf(' =
'+k+'=3D'),e=3Di<0?i:"=0A=
+"c.indexOf(';',i),v=3Di<0?'':s.epa(c.substring(i+2+k.length,e<0?c.leng"=0A=
+"th:e));return v!=3D'[[B]]'?v:''};s.c_w=3Dfunction(k,v,e){var =
s=3Dthis,d=3Ds"=0A=
+".c_gd(),l=3Ds.cookieLifetime,t;v=3D''+v;l=3Dl?(''+l).toUpperCase():'';i=
f("=0A=
+"e&&l!=3D'SESSION'&&l!=3D'NONE'){t=3D(v!=3D''?parseInt(l?l:0):-60);if(t)=
{e=3Dn"=0A=
+"ew Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!=3D'NONE'){s.d.cooki"=0A=
+"e=3Dk+'=3D'+s.ape(v!=3D''?v:'[[B]]')+'; =
path=3D/;'+(e&&l!=3D'SESSION'?' expir"=0A=
+"es=3D'+e.toGMTString()+';':'')+(d?' domain=3D'+d+';':'');return =
s.c_r(k"=0A=
+")=3D=3Dv}return 0};s.eh=3Dfunction(o,e,r,f){var =
s=3Dthis,b=3D's_'+e+'_'+s._in"=0A=
+",n=3D-1,l,i,x;if(!s.ehl)s.ehl=3Dnew =
Array;l=3Ds.ehl;for(i=3D0;i<l.length&&n"=0A=
+"<0;i++){if(l[i].o=3D=3Do&&l[i].e=3D=3De)n=3Di}if(n<0){n=3Di;l[n]=3Dnew =
Object}x=3Dl"=0A=
+"[n];x.o=3Do;x.e=3De;f=3Dr?x.b:f;if(r||f){x.b=3Dr?0:o[e];x.o[e]=3Df}if(x=
.b){x."=0A=
+"o[b]=3Dx.b;return b}return 0};s.cet=3Dfunction(f,a,t,o,b){var =
s=3Dthis,r;"=0A=
+"if(s.isie&&a.apv>=3D5)eval('try{r=3Ds.m(f)?s[f](a):f(a)}catch(e){r=3Ds.=
m("=0A=
+"t)?s[t](e):t(e)}');else{if(s.ismac&&s.u.indexOf('MSIE =
4')>=3D0)r=3Ds.m("=0A=
+"b)?s[b](a):b(a);else{s.eh(s.wd,'onerror',0,o);r=3Ds.m(f)?s[f](a):f(a)"=0A=
+";s.eh(s.wd,'onerror',1)}}return r};s.gtfset=3Dfunction(e){var =
s=3Dthis;"=0A=
+"return s.tfs};s.gtfsoe=3Dnew Function('e','var =
s=3Ds_c_il['+s._in+'];s."=0A=
+"eh(window,\"onerror\",1);s.etfs=3D1;var =
c=3Ds.t();if(c)s.d.write(c);s.e"=0A=
+"tfs=3D0;return true');s.gtfsfb=3Dfunction(a){return =
window};s.gtfsf=3Dfun"=0A=
+"ction(w){var =
s=3Dthis,p=3Dw.parent,l=3Dw.location;s.tfs=3Dw;if(p&&p.locatio"=0A=
+"n!=3Dl&&p.location.host=3D=3Dl.host){s.tfs=3Dp;return =
s.gtfsf(s.tfs)}return"=0A=
+" s.tfs};s.gtfs=3Dfunction(){var =
s=3Dthis;if(!s.tfs){s.tfs=3Ds.wd;if(!s.et"=0A=
+"fs)s.tfs=3Ds.cet('gtfsf',s.tfs,'gtfset',s.gtfsoe,'gtfsfb')}return s.t"=0A=
+"fs};s.ca=3Dfunction(){var =
s=3Dthis,imn=3D's_i_'+s.fun;if(s.d.images&&s.ap"=0A=
+"v>=3D3&&!s.isopera&&(s.ns6<0||s.apv>=3D6.1)){s.ios=3D1;if(!s.d.images[i=
mn"=0A=
+"]&&(!s.isns||(s.apv<4||s.apv>=3D5))){s.d.write('<div><im'+'g =
name=3D\"'+imn+"=0A=
+"'\" height=3D1 width=3D1 border=3D0 =
alt=3D\"\"></div>');if(!s.d.images[imn])s.ios"=0A=
+"=3D0}}};s.mr=3Dfunction(sess,q,ta){var =
s=3Dthis,ns=3Ds.visitorNamespace,unc"=0A=
+"=3Ds.rep(s.fun,'_','-'),imn=3D's_i_'+s.fun,im,b,e,rs=3D'http'+(s.ssl?'s=
':"=0A=
+"'')+'://'+(ns?ns:(s.ssl?'102':unc))+'.112.2O7.net/b/ss/'+s.un+'/1/H"=0A=
+".1-pdv-2/'+sess+'?[AQB]&ndh=3D1'+(q?q:'')+(s.q?s.q:'')+'&[AQE]';if(s."=0A=
+"isie&&!s.ismac){if(s.apv>5.5)rs=3Ds.fl(rs,4095);else =
rs=3Ds.fl(rs,2047)"=0A=
+"}if(s.ios){im=3Ds.wd[imn]?s.wd[imn]:s.d.images[imn];if(!im)im=3Ds.wd[im=
"=0A=
+"n]=3Dnew =
Image;im.src=3Drs;if(rs.indexOf('&pe=3D')>=3D0&&(!ta||ta=3D=3D'_self'|"=0A=
+"|ta=3D=3D'_top'||(s.wd.name&&ta=3D=3Ds.wd.name))){b=3De=3Dnew =
Date;while(e.getT"=0A=
+"ime()-b.getTime()<500)e=3Dnew Date}return ''}return '<im'+'g sr'+'c=3D"=0A=
+"\"'+rs+'\" width=3D1 height=3D1 border=3D0 =
alt=3D\"\">'};s.gg=3Dfunction(v){v"=0A=
+"ar s=3Dthis;return =
s.wd['s_'+v]};s.glf=3Dfunction(t,a){if(t.substring(0"=0A=
+",2)=3D=3D's_')t=3Dt.substring(2);var =
s=3Dthis,v=3Ds.gg(t);if(v)s[t]=3Dv};s.gl=3Df"=0A=
+"unction(v){var s=3Dthis;s.pt(v,',','glf',0)};s.gv=3Dfunction(v){var =
s=3Dt"=0A=
+"his;return s['vpm_'+v]?s['vpv_'+v]:s[v]};s.havf=3Dfunction(t,a){var s"=0A=
+"=3Dthis,b=3Dt.substring(0,4),x=3Dt.substring(4),n=3DparseInt(x),k=3D'g_=
'+t,m=3D"=0A=
+"'vpm_'+t,q=3Dt,v=3Ds.linkTrackVars,e=3Ds.linkTrackEvents;s[k]=3Ds.gv(t)=
;if("=0A=
+"s.lnk||s.eo){v=3Dv?v+','+s.vl_l:'';if(v&&!s.pt(v,',','isf',t))s[k]=3D''=
"=0A=
+";if(t=3D=3D'events'&&e)s[k]=3Ds.fs(s[k],e)}s[m]=3D0;if(t=3D=3D'pageURL'=
)q=3D'g';e"=0A=
+"lse if(t=3D=3D'referrer')q=3D'r';else =
if(t=3D=3D'charSet'){q=3D'ce';if(s[k]&&s."=0A=
+"em=3D=3D2)s[k]=3D'UTF-8'}else =
if(t=3D=3D'visitorNamespace')q=3D'ns';else if(t=3D=3D"=0A=
+"'cookieDomainPeriods')q=3D'cdp';else =
if(t=3D=3D'cookieLifetime')q=3D'cl';el"=0A=
+"se if(t=3D=3D'visitVariableProvider')q=3D'vvp';else =
if(t=3D=3D'currencyCode')"=0A=
+"q=3D'cc';else if(t=3D=3D'channel')q=3D'ch';else =
if(t=3D=3D'campaign')q=3D'v0';els"=0A=
+"e if(s.num(x)) {if(b=3D=3D'prop')q=3D'c'+n;else =
if(b=3D=3D'eVar')q=3D'v'+n;else"=0A=
+" =
if(b=3D=3D'hier'){q=3D'h'+n;s[k]=3Ds.fl(s[k],255)}}if(s[k]&&t!=3D'linkNam=
e'&"=0A=
+"&t!=3D'linkType')s.qav+=3D'&'+q+'=3D'+s.ape(s[k]);return =
''};s.hav=3Dfuncti"=0A=
+"on(){var s=3Dthis;s.qav=3D'';s.pt(s.vl_t,',','havf',0);return =
s.qav};s."=0A=
+"lnf=3Dfunction(t,h){t=3Dt?t.toLowerCase():'';h=3Dh?h.toLowerCase():'';v=
ar"=0A=
+" =
te=3Dt.indexOf('=3D');if(t&&te>0&&h.indexOf(t.substring(te+1))>=3D0)retu"=0A=
+"rn t.substring(0,te);return ''};s.ln=3Dfunction(h){var =
s=3Dthis,n=3Ds.lin"=0A=
+"kNames;if(n)return s.pt(n,',','lnf',h);return ''};s.ltdf=3Dfunction(t"=0A=
+",h){t=3Dt?t.toLowerCase():'';h=3Dh?h.toLowerCase():'';var =
qi=3Dh.indexOf("=0A=
+"'?');h=3Dqi>=3D0?h.substring(0,qi):h;if(t&&h.substring(h.length-(t.leng=
"=0A=
+"th+1))=3D=3D'.'+t)return 1;return =
0};s.ltef=3Dfunction(t,h){t=3Dt?t.toLower"=0A=
+"Case():'';h=3Dh?h.toLowerCase():'';if(t&&h.indexOf(t)>=3D0)return =
1;ret"=0A=
+"urn 0};s.lt=3Dfunction(h){var =
s=3Dthis,lft=3Ds.linkDownloadFileTypes,lef=3D"=0A=
+"s.linkExternalFilters,lif=3Ds.linkInternalFilters;lif=3Dlif?lif:s.wd.lo=
"=0A=
+"cation.hostname;h=3Dh.toLowerCase();if(s.trackDownloadLinks&&lft&&s.p"=0A=
+"t(lft,',','ltdf',h))return 'd';if(s.trackExternalLinks&&(lef||lif)&"=0A=
+"&(!lef||s.pt(lef,',','ltef',h))&&(!lif||!s.pt(lif,',','ltef',h)))re"=0A=
+"turn 'e';return ''};s.lc=3Dnew Function('e','var =
s=3Ds_c_il['+s._in+'],"=0A=
+"b=3Ds.eh(this,\"onclick\");s.lnk=3Ds.co(this);s.t();s.lnk=3D0;if(b)retu=
rn"=0A=
+" this[b](e);return true');s.bc=3Dnew Function('e','var =
s=3Ds_c_il['+s._"=0A=
+"in+'];if(s.d&&s.d.all&&s.d.all.cppXYctnr)return;s.eo=3De.srcElement?e"=0A=
+".srcElement:e.target;s.t();s.eo=3D0');s.ot=3Dfunction(o){var =
a=3Do.type,b"=0A=
+"=3Do.tagName;return (a&&a.toUpperCase?a:b&&b.toUpperCase?b:o.href?'A'"=0A=
+":'').toUpperCase()};s.oid=3Dfunction(o){var =
s=3Dthis,t=3Ds.ot(o),p=3Do.prot"=0A=
+"ocol,c=3Do.onclick,n=3D'',x=3D0;if(!o.s_oid){if(o.href&&(t=3D=3D'A'||t=3D=
=3D'AREA"=0A=
+"')&&(!c||!p||p.toLowerCase().indexOf('javascript')<0))n=3Do.href;else"=0A=
+" if(c){n=3Ds.rep(s.rep(s.rep(s.rep(''+c,\"\\r\",''),\"\\n\",''),\"\\t"=0A=
+"\",''),' ','');x=3D2}else =
if(o.value&&(t=3D=3D'INPUT'||t=3D=3D'SUBMIT')){n=3Do."=0A=
+"value;x=3D3}else =
if(o.src&&t=3D=3D'IMAGE')n=3Do.src;if(n){o.s_oid=3Ds.fl(n,10"=0A=
+"0);o.s_oidt=3Dx}}return o.s_oid};s.rqf=3Dfunction(t,un){var =
s=3Dthis,e=3Dt."=0A=
+"indexOf('=3D'),u=3De>=3D0?','+t.substring(0,e)+',':'';return =
u&&u.indexOf"=0A=
+"(','+un+',')>=3D0?s.epa(t.substring(e+1)):''};s.rq=3Dfunction(un){var =
s"=0A=
+"=3Dthis,c=3Dun.indexOf(','),v=3Ds.c_r('s_sq'),q=3D'';if(c<0)return =
s.pt(v,'"=0A=
+"&','rqf',un);return s.pt(un,',','rq',0)};s.sqp=3Dfunction(t,a){var =
s=3D"=0A=
+"this,e=3Dt.indexOf('=3D'),q=3De<0?'':s.epa(t.substring(e+1));s.sqq[q]=3D=
'';"=0A=
+"if(e>=3D0)s.pt(t.substring(0,e),',','sqs',q);return =
0};s.sqs=3Dfunction"=0A=
+"(un,q){var s=3Dthis;s.squ[un]=3Dq;return 0};s.sq=3Dfunction(q){var =
s=3Dthis"=0A=
+",k=3D's_sq',v=3Ds.c_r(k),x,c=3D0;s.sqq=3Dnew Object;s.squ=3Dnew =
Object;s.sqq["=0A=
+"q]=3D'';s.pt(v,'&','sqp',0);s.pt(s.un,',','sqs',q);v=3D'';for(x in =
s.sq"=0A=
+"u)s.sqq[s.squ[x]]+=3D(s.sqq[s.squ[x]]?',':'')+x;for(x in s.sqq)if(x&&"=0A=
+"s.sqq[x]&&(x=3D=3Dq||c<2)){v+=3D(v?'&':'')+s.sqq[x]+'=3D'+s.ape(x);c++}=
retu"=0A=
+"rn s.c_w(k,v,0)};s.wdl=3Dnew Function('e','var =
s=3Ds_c_il['+s._in+'],r=3D"=0A=
+"true,b=3Ds.eh(s.wd,\"onload\"),i,o,oc;if(b)r=3Dthis[b](e);for(i=3D0;i<s=
.d"=0A=
+".links.length;i++){o=3Ds.d.links[i];oc=3Do.onclick?\"\"+o.onclick:\"\";=
"=0A=
+"if((oc.indexOf(\"s_gs(\")<0||oc.indexOf(\".s_oc(\")>=3D0)&&oc.indexOf"=0A=
+"(\".tl(\")<0)s.eh(o,\"onclick\",0,s.lc);}return r');s.wds=3Dfunction("=0A=
+"){var =
s=3Dthis;if(s.apv>3&&(!s.isie||!s.ismac||s.apv>=3D5)){if(s.b&&s.b"=0A=
+".attachEvent)s.b.attachEvent('onclick',s.bc);else if(s.b&&s.b.addEv"=0A=
+"entListener)s.b.addEventListener('click',s.bc,false);else s.eh(s.wd"=0A=
+",'onload',0,s.wdl)}};s.vs=3Dfunction(x){var =
s=3Dthis,v=3Ds.visitorSamplin"=0A=
+"g,g=3Ds.visitorSamplingGroup,k=3D's_vsn_'+s.un+(g?'_'+g:''),n=3Ds.c_r(k=
),"=0A=
+"e=3Dnew =
Date,y=3De.getYear();e.setYear(y+10+(y<1900?1900:0));if(v){v*=3D1"=0A=
+"00;if(!n){if(!s.c_w(k,x,e))return 0;n=3Dx}if(n%10000>v)return 0}retur"=0A=
+"n 1};s.dyasmf=3Dfunction(t,m){if(t&&m&&m.indexOf(t)>=3D0)return =
1;retur"=0A=
+"n 0};s.dyasf=3Dfunction(t,m){var =
s=3Dthis,i=3Dt?t.indexOf('=3D'):-1,n,x;if("=0A=
+"i>=3D0&&m){var =
n=3Dt.substring(0,i),x=3Dt.substring(i+1);if(s.pt(x,',','d"=0A=
+"yasmf',m))return n}return 0};s.uns=3Dfunction(){var =
s=3Dthis,x=3Ds.dynami"=0A=
+"cAccountSelection,l=3Ds.dynamicAccountList,m=3Ds.dynamicAccountMatch,n,=
"=0A=
+"i;s.un.toLowerCase();if(x&&l){if(!m)m=3Ds.wd.location.host;if(!m.toLo"=0A=
+"werCase)m=3D''+m;l=3Dl.toLowerCase();m=3Dm.toLowerCase();n=3Ds.pt(l,';'=
,'dy"=0A=
+"asf',m);if(n)s.un=3Dn}i=3Ds.un.indexOf(',');s.fun=3Di<0?s.un:s.un.subst=
ri"=0A=
+"ng(0,i)};s.t=3Dfunction(){var s=3Dthis,trk=3D1,tm=3Dnew =
Date,sed=3DMath&&Math"=0A=
+".random?Math.floor(Math.random()*10000000000000):tm.getTime(),sess=3D"=0A=
+"'s'+Math.floor(tm.getTime()/10800000)%10+sed,yr=3Dtm.getYear(),vt=3Dtm.=
"=0A=
+"getDate()+'/'+tm.getMonth()+'/'+(yr<1900?yr+1900:yr)+' '+tm.getHour"=0A=
+"s()+':'+tm.getMinutes()+':'+tm.getSeconds()+' '+tm.getDay()+' '+tm."=0A=
+"getTimezoneOffset(),tfs=3Ds.gtfs(),ta=3D'',q=3D'',qs=3D'';s.uns();if(!s=
.q){"=0A=
+"var =
tl=3Dtfs.location,x=3D'',c=3D'',v=3D'',p=3D'',bw=3D'',bh=3D'',j=3D'1.0',k=
=3Ds.c_w"=0A=
+"('s_cc','true',0)?'Y':'N',hp=3D'',ct=3D'',pn=3D0,ps;if(s.apv>=3D4)x=3Ds=
creen."=0A=
+"width+'x'+screen.height;if(s.isns||s.isopera){if(s.apv>=3D3){j=3D'1.1';=
"=0A=
+"v=3Ds.n.javaEnabled()?'Y':'N';if(s.apv>=3D4){j=3D'1.2';c=3Dscreen.pixel=
Dept"=0A=
+"h;bw=3Ds.wd.innerWidth;bh=3Ds.wd.innerHeight;if(s.apv>=3D4.06)j=3D'1.3'=
}}s."=0A=
+"pl=3Ds.n.plugins}else =
if(s.isie){if(s.apv>=3D4){v=3Ds.n.javaEnabled()?'Y'"=0A=
+":'N';j=3D'1.2';c=3Dscreen.colorDepth;if(s.apv>=3D5){bw=3Ds.d.documentEl=
emen"=0A=
+"t.offsetWidth;bh=3Ds.d.documentElement.offsetHeight;j=3D'1.3';if(!s.ism=
"=0A=
+"ac&&s.b){s.b.addBehavior('#default#homePage');hp=3Ds.b.isHomePage(tl)"=0A=
+"?\"Y\":\"N\";s.b.addBehavior('#default#clientCaps');ct=3Ds.b.connecti"=0A=
+"onType}}}else =
r=3D''}if(s.pl)while(pn<s.pl.length&&pn<30){ps=3Ds.fl(s.p"=0A=
+"l[pn].name,100)+';';if(p.indexOf(ps)<0)p+=3Dps;pn++}s.q=3D(x?'&s=3D'+s.=
ap"=0A=
+"e(x):'')+(c?'&c=3D'+s.ape(c):'')+(j?'&j=3D'+j:'')+(v?'&v=3D'+v:'')+(k?'=
&k"=0A=
+"=3D'+k:'')+(bw?'&bw=3D'+bw:'')+(bh?'&bh=3D'+bh:'')+(ct?'&ct=3D'+s.ape(c=
t):'"=0A=
+"')+(hp?'&hp=3D'+hp:'')+(p?'&p=3D'+s.ape(p):'')}if(s.usePlugins)s.doPlug=
"=0A=
+"ins(s);var =
l=3Ds.wd.location,r=3Dtfs.document.referrer;if(!s.pageURL)s."=0A=
+"pageURL=3Ds.fl(l?l:'',255);if(!s.referrer)s.referrer=3Ds.fl(r?r:'',255)=
"=0A=
+";if(s.lnk||s.eo){var o=3Ds.eo?s.eo:s.lnk;if(!o)return '';var =
p=3Ds.gv('"=0A=
+"pageName'),w=3D1,t=3Ds.ot(o),n=3Ds.oid(o),x=3Do.s_oidt,h,l,i,oc;if(s.eo=
&&o=3D"=0A=
+"=3Ds.eo){while(o&&!n&&t!=3D'BODY'){o=3Do.parentElement?o.parentElement:=
o."=0A=
+"parentNode;if(!o)return =
'';t=3Ds.ot(o);n=3Ds.oid(o);x=3Do.s_oidt}oc=3Do.onc"=0A=
+"lick?''+o.onclick:'';if((oc.indexOf(\"s_gs(\")>=3D0&&oc.indexOf(\".s_"=0A=
+"oc(\")<0)||oc.indexOf(\".tl(\")>=3D0)return =
''}ta=3Do.target;h=3Do.href?o"=0A=
+".href:'';i=3Dh.indexOf('?');h=3Ds.linkLeaveQueryString||i<0?h:h.substri=
"=0A=
+"ng(0,i);l=3Ds.linkName?s.linkName:s.ln(h);t=3Ds.linkType?s.linkType.toL=
"=0A=
+"owerCase():s.lt(h);if(t&&(h||l))q+=3D'&pe=3Dlnk_'+(t=3D=3D'd'||t=3D=3D'=
e'?s.ape"=0A=
+"(t):'o')+(h?'&pev1=3D'+s.ape(h):'')+(l?'&pev2=3D'+s.ape(l):'');else =
trk"=0A=
+"=3D0;if(s.trackInlineStats){if(!p){p=3Ds.gv('pageURL');w=3D0}t=3Ds.ot(o=
);i=3D"=0A=
+"o.sourceIndex;if(s.gg('objectID')){n=3Ds.gg('objectID');x=3D1;i=3D1}if(=
p&"=0A=
+"&n&&t)qs=3D'&pid=3D'+s.ape(s.fl(p,255))+(w?'&pidt=3D'+w:'')+'&oid=3D'+s=
.ape"=0A=
+"(s.fl(n,100))+(x?'&oidt=3D'+x:'')+'&ot=3D'+s.ape(t)+(i?'&oi=3D'+i:'')}}=
if"=0A=
+"(!trk&&!qs)return '';var =
code=3D'';if(trk&&s.vs(sed))code=3Ds.mr(sess,("=0A=
+"vt?'&t=3D'+s.ape(vt):'')+s.hav()+q+(qs?qs:s.rq(s.un)),ta);s.sq(trk?''"=0A=
+":qs);s.lnk=3Ds.eo=3Ds.linkName=3Ds.linkType=3Ds.wd.s_objectID=3D'';retu=
rn cod"=0A=
+"e};s.tl=3Dfunction(o,t,n){var =
s=3Dthis;s.lnk=3Ds.co(o);s.linkType=3Dt;s.lin"=0A=
+"kName=3Dn;s.t()};s.ssl=3D(s.wd.location.protocol.toLowerCase().indexOf(=
"=0A=
+"'https')>=3D0);s.d=3Ddocument;s.b=3Ds.d.body;s.n=3Dnavigator;s.u=3Ds.n.=
userAg"=0A=
+"ent;s.ns6=3Ds.u.indexOf('Netscape6/');var =
apn=3Ds.n.appName,v=3Ds.n.appVe"=0A=
+"rsion,ie=3Dv.indexOf('MSIE =
'),i;if(v.indexOf('Opera')>=3D0||s.u.indexOf"=0A=
+"('Opera')>=3D0)apn=3D'Opera';s.isie=3D(apn=3D=3D'Microsoft Internet =
Explorer'"=0A=
+");s.isns=3D(apn=3D=3D'Netscape');s.isopera=3D(apn=3D=3D'Opera');s.ismac=
=3D(s.u.in"=0A=
+"dexOf('Mac')>=3D0);if(ie>0){s.apv=3DparseInt(i=3Dv.substring(ie+5));if(=
s."=0A=
+"apv>3)s.apv=3DparseFloat(i)}else =
if(s.ns6>0)s.apv=3DparseFloat(s.u.subs"=0A=
+"tring(s.ns6+10));else =
s.apv=3DparseFloat(v);s.em=3D0;if(String.fromChar"=0A=
+"Code){i=3Descape(String.fromCharCode(256)).toUpperCase();s.em=3D(i=3D=3D=
'%C"=0A=
+"4%80'?2:(i=3D=3D'%U0100'?1:0))}s.un=3Dun;s.uns();s.vl_l=3D'charSet,visi=
torN"=0A=
+"amespace,cookieDomainPeriods,cookieLifetime,visitVariableProvider,p"=0A=
+"ageName,pageURL,referrer,currencyCode,purchaseID';s.vl_t=3Ds.vl_l+',c"=0A=
+"hannel,server,pageType,campaign,state,zip,events,products,linkName,"=0A=
+"linkType';for(var =
n=3D1;n<51;n++)s.vl_t+=3D',prop'+n+',eVar'+n+',hier'+"=0A=
+"n;s.vl_g=3Ds.vl_t+',trackDownloadLinks,trackExternalLinks,trackInline"=0A=
+"Stats,linkLeaveQueryString,linkDownloadFileTypes,linkExternalFilter"=0A=
+"s,linkInternalFilters,linkNames';if(pg)s.gl(s.vl_g);if(!ss){s.wds()"=0A=
+";s.ca()}}",l=3Dwindow.s_c_il,n=3Dnavigator,u=3Dn.userAgent,v=3Dn.appVer=
sion,e=3Dv.indexOf('MSIE =
'),m=3Du.indexOf('Netscape6/'),a,i,s;if(l)for(i=3D0;i<l.length;i++){s=3Dl=
[i];s.uns();if(s.un=3D=3Dun)return s;else =
if(s.pt(s.un,',','isf',un)){s=3Ds.co(s);s.un=3Dun;s.uns();return =
s}}if(e>0){a=3DparseInt(i=3Dv.substring(e=0A=
+5));if(a>3)a=3DparseFloat(i)}else =
if(m>0)a=3DparseFloat(u.substring(m+10));else =
a=3DparseFloat(v);if(a>=3D5&&v.indexOf('Opera')<0&&u.indexOf('Opera')<0){=
eval(c);return new s_c(un,pg,ss)}else s=3Ds_c2f(c);return =
s(un,pg,ss)}com.mtvi.reporting.Dispatcher=3Dnew =
function(){this.version=3D"2.0";try{this.widget=3Dcom.mtvi.reporting.Widg=
et;}catch(e){}=0A=
this.send=3Dfunction(){try{if(com.mtvi.util.isDefined(this.widget.un)){va=
r =
hcode=3Dthis.widget.t();}}catch(e){try{com.mtvi.logger.JsError(e);}catch(=
e){}}};this.setAccountVars=3Dfunction(o){try{this.widget.setAccount(o.nam=
e);this.widget.setAttribute("dynamicAccountSelection",o.dynamic);this.wid=
get.setAttribute("dynamicAccountList",o.list);this.widget.setAttribute("l=
inkInternalFilters",o.filters);}catch(e){}};this.setValues=3Dfunction(o){=
try{for(var i in =
o){this.widget.setAttribute(i,o[i]);}}catch(e){}};this.config=3Dfunction(=
){try{this.setAccountVars(com.mtvi.reporting.Account);}catch(e){}=0A=
try{this.setValues(com.mtvi.reporting.Map());}catch(e){}};this.sendCall=3D=
function(){try{this.setAccountVars(com.mtvi.reporting.Account);try{this.s=
etValues(com.mtvi.reporting.Map());}catch(e){}=0A=
try{this.setValues(com.mtvi.config.SectionSetup);}catch(e){}=0A=
this.send();}catch(e){try{com.mtvi.logger.JsError(e);}catch(e){}}};this.s=
etDefaultData=3Dfunction(){try{var =
pn=3Dlocation.href;pn=3Dpn.replace(/^.*www\.(.*)\.com/g,"");pn=3Dpn.repla=
ce(/^.*(.*)\.com/g,"");pn=3Dcom.mtvi.config.Get.channel+pn;this.widget.se=
tAttribute("pageName","/"+pn);this.widget.setAttribute("hier1",pn);this.w=
idget.setAttribute("channel",com.mtvi.config.Get.channel);this.widget.set=
Attribute(com.mtvi.config.Get.site,com.mtvi.config.Get.channel);}catch(e)=
{try{com.mtvi.logger.JsError(e);}catch(e){}}};this.sendThirdPartyCall=3Df=
unction(){try{this.setAccountVars(com.mtvi.config.Get);this.setThirdParty=
Data();try{this.setValues(com.mtvi.reporting.Map());}catch(e){}=0A=
this.send();}catch(e){try{com.mtvi.logger.JsError(e);}catch(e){}}};this.s=
endLinkEvent=3Dfunction(name){try{var =
hier2=3Dthis.widget.getAttribute("hier2");this.widget=3Dcom.mtvi.reportin=
g.Widget;this.config();this.setValues({linkType:"o",lnk:true,linkName:nam=
e,hier2:""});this.send();this.widget.setAttribute("hier2",hier2);}catch(e=
){try{com.mtvi.logger.JsError(e);}catch(e){}}};this.getBaseUrl=3Dfunction=
(){try{this.config();var =
vendorUrl=3D".112.2o7.net/b/ss/";return("http"+(this.widget.ssl?'s':'')+"=
://"+this.widget.un+vendorUrl+this.widget.un+"/1/");}catch(e){try{com.mtv=
i.logger.JsError(e);}catch(e){}}};this.sendFailedSearch=3Dfunction(v){try=
{if(com.mtvi.util.isDefined(v)){var =
aImg=3Ddocument.createElement('img');aImg.src=3Dthis.getBaseUrl()+"EMAIL?=
pageName=3DFAILED+SEARCH&v4=3D"+v;aImg.id=3D"failedSearchCall";document.g=
etElementsByTagName('body')[0].appendChild(aImg);}}catch(e){try{com.mtvi.=
logger.JsError(e);}catch(e){}}};this.replacePathSection=3Dfunction(path,n=
ewValue,replaceAt){try{var =
pathParts=3D(path.charAt(0)!=3D"/")?path.split("/"):path.substring(1).spl=
it("/");if(isNaN(replaceAt)||replaceAt>=3DpathParts.length)return =
false;pathParts[replaceAt]=3DnewValue;var =
newPath=3DpathParts.join("/");return =
newPath;}catch(e){try{com.mtvi.logger.JsError(e);return =
false}catch(e){return =
false}}};this.deletePathSection=3Dfunction(path,removeAt){try{var =
pathParts=3D(path.charAt(0)!=3D"/")?path.split("/"):path.substring(1).spl=
it("/");if(isNaN(removeAt)||removeAt>=3DpathParts.length)return =
false;pathParts.splice(removeAt,1);var =
newPath=3DpathParts.join("/");return =
newPath;}catch(e){try{com.mtvi.logger.JsError(e);return =
false}catch(e){return =
false}}};this.setAttribute=3Dfunction(k,v){this.widget.setAttribute(k,v);=
};this.getAttribute=3Dfunction(k){return this.widget.getAttribute(k);};};
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/prototype.js

/*  Prototype JavaScript framework, version 1.5.0=0A=
 *  (c) 2005-2007 Sam Stephenson=0A=
 *=0A=
 *  Prototype is freely distributable under the terms of an MIT-style =
license.=0A=
 *  For details, see the Prototype web site: http://prototype.conio.net/=0A=
 *=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var Prototype =3D {=0A=
  Version: '1.5.0',=0A=
  BrowserFeatures: {=0A=
    XPath: !!document.evaluate=0A=
  },=0A=
=0A=
  ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',=0A=
  emptyFunction: function() {},=0A=
  K: function(x) { return x }=0A=
}=0A=
=0A=
var Class =3D {=0A=
  create: function() {=0A=
    return function() {=0A=
      this.initialize.apply(this, arguments);=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
var Abstract =3D new Object();=0A=
=0A=
Object.extend =3D function(destination, source) {=0A=
  for (var property in source) {=0A=
    destination[property] =3D source[property];=0A=
  }=0A=
  return destination;=0A=
}=0A=
=0A=
Object.extend(Object, {=0A=
  inspect: function(object) {=0A=
    try {=0A=
      if (object =3D=3D=3D undefined) return 'undefined';=0A=
      if (object =3D=3D=3D null) return 'null';=0A=
      return object.inspect ? object.inspect() : object.toString();=0A=
    } catch (e) {=0A=
      if (e instanceof RangeError) return '...';=0A=
      throw e;=0A=
    }=0A=
  },=0A=
=0A=
  keys: function(object) {=0A=
    var keys =3D [];=0A=
    for (var property in object)=0A=
      keys.push(property);=0A=
    return keys;=0A=
  },=0A=
=0A=
  values: function(object) {=0A=
    var values =3D [];=0A=
    for (var property in object)=0A=
      values.push(object[property]);=0A=
    return values;=0A=
  },=0A=
=0A=
  clone: function(object) {=0A=
    return Object.extend({}, object);=0A=
  }=0A=
});=0A=
=0A=
Function.prototype.bind =3D function() {=0A=
  var __method =3D this, args =3D $A(arguments), object =3D args.shift();=0A=
  return function() {=0A=
    return __method.apply(object, args.concat($A(arguments)));=0A=
  }=0A=
}=0A=
=0A=
Function.prototype.bindAsEventListener =3D function(object) {=0A=
  var __method =3D this, args =3D $A(arguments), object =3D args.shift();=0A=
  return function(event) {=0A=
    return __method.apply(object, [( event || =
window.event)].concat(args).concat($A(arguments)));=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Number.prototype, {=0A=
  toColorPart: function() {=0A=
    var digits =3D this.toString(16);=0A=
    if (this < 16) return '0' + digits;=0A=
    return digits;=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this + 1;=0A=
  },=0A=
=0A=
  times: function(iterator) {=0A=
    $R(0, this, true).each(iterator);=0A=
    return this;=0A=
  }=0A=
});=0A=
=0A=
var Try =3D {=0A=
  these: function() {=0A=
    var returnValue;=0A=
=0A=
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var lambda =3D arguments[i];=0A=
      try {=0A=
        returnValue =3D lambda();=0A=
        break;=0A=
      } catch (e) {}=0A=
    }=0A=
=0A=
    return returnValue;=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
var PeriodicalExecuter =3D Class.create();=0A=
PeriodicalExecuter.prototype =3D {=0A=
  initialize: function(callback, frequency) {=0A=
    this.callback =3D callback;=0A=
    this.frequency =3D frequency;=0A=
    this.currentlyExecuting =3D false;=0A=
=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    this.timer =3D setInterval(this.onTimerEvent.bind(this), =
this.frequency * 1000);=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    if (!this.timer) return;=0A=
    clearInterval(this.timer);=0A=
    this.timer =3D null;=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    if (!this.currentlyExecuting) {=0A=
      try {=0A=
        this.currentlyExecuting =3D true;=0A=
        this.callback(this);=0A=
      } finally {=0A=
        this.currentlyExecuting =3D false;=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
String.interpret =3D function(value){=0A=
  return value =3D=3D null ? '' : String(value);=0A=
}=0A=
=0A=
Object.extend(String.prototype, {=0A=
  gsub: function(pattern, replacement) {=0A=
    var result =3D '', source =3D this, match;=0A=
    replacement =3D arguments.callee.prepareReplacement(replacement);=0A=
=0A=
    while (source.length > 0) {=0A=
      if (match =3D source.match(pattern)) {=0A=
        result +=3D source.slice(0, match.index);=0A=
        result +=3D String.interpret(replacement(match));=0A=
        source  =3D source.slice(match.index + match[0].length);=0A=
      } else {=0A=
        result +=3D source, source =3D '';=0A=
      }=0A=
    }=0A=
    return result;=0A=
  },=0A=
=0A=
  sub: function(pattern, replacement, count) {=0A=
    replacement =3D this.gsub.prepareReplacement(replacement);=0A=
    count =3D count =3D=3D=3D undefined ? 1 : count;=0A=
=0A=
    return this.gsub(pattern, function(match) {=0A=
      if (--count < 0) return match[0];=0A=
      return replacement(match);=0A=
    });=0A=
  },=0A=
=0A=
  scan: function(pattern, iterator) {=0A=
    this.gsub(pattern, iterator);=0A=
    return this;=0A=
  },=0A=
=0A=
  truncate: function(length, truncation) {=0A=
    length =3D length || 30;=0A=
    truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation;=0A=
    return this.length > length ?=0A=
      this.slice(0, length - truncation.length) + truncation : this;=0A=
  },=0A=
=0A=
  strip: function() {=0A=
    return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A=
  },=0A=
=0A=
  stripTags: function() {=0A=
    return this.replace(/<\/?[^>]+>/gi, '');=0A=
  },=0A=
=0A=
  stripScripts: function() {=0A=
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A=
  },=0A=
=0A=
  extractScripts: function() {=0A=
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A=
    var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A=
    return (this.match(matchAll) || []).map(function(scriptTag) {=0A=
      return (scriptTag.match(matchOne) || ['', ''])[1];=0A=
    });=0A=
  },=0A=
=0A=
  evalScripts: function() {=0A=
    return this.extractScripts().map(function(script) { return =
eval(script) });=0A=
  },=0A=
=0A=
  escapeHTML: function() {=0A=
    var div =3D document.createElement('div');=0A=
    var text =3D document.createTextNode(this);=0A=
    div.appendChild(text);=0A=
    return div.innerHTML;=0A=
  },=0A=
=0A=
  unescapeHTML: function() {=0A=
    var div =3D document.createElement('div');=0A=
    div.innerHTML =3D this.stripTags();=0A=
    return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A=
      $A(div.childNodes).inject('',function(memo,node){ return =
memo+node.nodeValue }) :=0A=
      div.childNodes[0].nodeValue) : '';=0A=
  },=0A=
=0A=
  toQueryParams: function(separator) {=0A=
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A=
    if (!match) return {};=0A=
=0A=
    return match[1].split(separator || '&').inject({}, function(hash, =
pair) {=0A=
      if ((pair =3D pair.split('=3D'))[0]) {=0A=
        var name =3D decodeURIComponent(pair[0]);=0A=
        var value =3D pair[1] ? decodeURIComponent(pair[1]) : undefined;=0A=
=0A=
        if (hash[name] !=3D=3D undefined) {=0A=
          if (hash[name].constructor !=3D Array)=0A=
            hash[name] =3D [hash[name]];=0A=
          if (value) hash[name].push(value);=0A=
        }=0A=
        else hash[name] =3D value;=0A=
      }=0A=
      return hash;=0A=
    });=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.split('');=0A=
  },=0A=
=0A=
  succ: function() {=0A=
    return this.slice(0, this.length - 1) +=0A=
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A=
  },=0A=
=0A=
  camelize: function() {=0A=
    var parts =3D this.split('-'), len =3D parts.length;=0A=
    if (len =3D=3D 1) return parts[0];=0A=
=0A=
    var camelized =3D this.charAt(0) =3D=3D '-'=0A=
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A=
      : parts[0];=0A=
=0A=
    for (var i =3D 1; i < len; i++)=0A=
      camelized +=3D parts[i].charAt(0).toUpperCase() + =
parts[i].substring(1);=0A=
=0A=
    return camelized;=0A=
  },=0A=
=0A=
  capitalize: function(){=0A=
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();=0A=
  },=0A=
=0A=
  underscore: function() {=0A=
    return this.gsub(/::/, =
'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{=
1}_#{2}').gsub(/-/,'_').toLowerCase();=0A=
  },=0A=
=0A=
  dasherize: function() {=0A=
    return this.gsub(/_/,'-');=0A=
  },=0A=
=0A=
  inspect: function(useDoubleQuotes) {=0A=
    var escapedString =3D this.replace(/\\/g, '\\\\');=0A=
    if (useDoubleQuotes)=0A=
      return '"' + escapedString.replace(/"/g, '\\"') + '"';=0A=
    else=0A=
      return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A=
  }=0A=
});=0A=
=0A=
String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A=
  if (typeof replacement =3D=3D 'function') return replacement;=0A=
  var template =3D new Template(replacement);=0A=
  return function(match) { return template.evaluate(match) };=0A=
}=0A=
=0A=
String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A=
=0A=
var Template =3D Class.create();=0A=
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A=
Template.prototype =3D {=0A=
  initialize: function(template, pattern) {=0A=
    this.template =3D template.toString();=0A=
    this.pattern  =3D pattern || Template.Pattern;=0A=
  },=0A=
=0A=
  evaluate: function(object) {=0A=
    return this.template.gsub(this.pattern, function(match) {=0A=
      var before =3D match[1];=0A=
      if (before =3D=3D '\\') return match[2];=0A=
      return before + String.interpret(object[match[3]]);=0A=
    });=0A=
  }=0A=
}=0A=
=0A=
var $break    =3D new Object();=0A=
var $continue =3D new Object();=0A=
=0A=
var Enumerable =3D {=0A=
  each: function(iterator) {=0A=
    var index =3D 0;=0A=
    try {=0A=
      this._each(function(value) {=0A=
        try {=0A=
          iterator(value, index++);=0A=
        } catch (e) {=0A=
          if (e !=3D $continue) throw e;=0A=
        }=0A=
      });=0A=
    } catch (e) {=0A=
      if (e !=3D $break) throw e;=0A=
    }=0A=
    return this;=0A=
  },=0A=
=0A=
  eachSlice: function(number, iterator) {=0A=
    var index =3D -number, slices =3D [], array =3D this.toArray();=0A=
    while ((index +=3D number) < array.length)=0A=
      slices.push(array.slice(index, index+number));=0A=
    return slices.map(iterator);=0A=
  },=0A=
=0A=
  all: function(iterator) {=0A=
    var result =3D true;=0A=
    this.each(function(value, index) {=0A=
      result =3D result && !!(iterator || Prototype.K)(value, index);=0A=
      if (!result) throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  any: function(iterator) {=0A=
    var result =3D false;=0A=
    this.each(function(value, index) {=0A=
      if (result =3D !!(iterator || Prototype.K)(value, index))=0A=
        throw $break;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  collect: function(iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push((iterator || Prototype.K)(value, index));=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  detect: function(iterator) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index)) {=0A=
        result =3D value;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  findAll: function(iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  grep: function(pattern, iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      var stringValue =3D value.toString();=0A=
      if (stringValue.match(pattern))=0A=
        results.push((iterator || Prototype.K)(value, index));=0A=
    })=0A=
    return results;=0A=
  },=0A=
=0A=
  include: function(object) {=0A=
    var found =3D false;=0A=
    this.each(function(value) {=0A=
      if (value =3D=3D object) {=0A=
        found =3D true;=0A=
        throw $break;=0A=
      }=0A=
    });=0A=
    return found;=0A=
  },=0A=
=0A=
  inGroupsOf: function(number, fillWith) {=0A=
    fillWith =3D fillWith =3D=3D=3D undefined ? null : fillWith;=0A=
    return this.eachSlice(number, function(slice) {=0A=
      while(slice.length < number) slice.push(fillWith);=0A=
      return slice;=0A=
    });=0A=
  },=0A=
=0A=
  inject: function(memo, iterator) {=0A=
    this.each(function(value, index) {=0A=
      memo =3D iterator(memo, value, index);=0A=
    });=0A=
    return memo;=0A=
  },=0A=
=0A=
  invoke: function(method) {=0A=
    var args =3D $A(arguments).slice(1);=0A=
    return this.map(function(value) {=0A=
      return value[method].apply(value, args);=0A=
    });=0A=
  },=0A=
=0A=
  max: function(iterator) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D (iterator || Prototype.K)(value, index);=0A=
      if (result =3D=3D undefined || value >=3D result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  min: function(iterator) {=0A=
    var result;=0A=
    this.each(function(value, index) {=0A=
      value =3D (iterator || Prototype.K)(value, index);=0A=
      if (result =3D=3D undefined || value < result)=0A=
        result =3D value;=0A=
    });=0A=
    return result;=0A=
  },=0A=
=0A=
  partition: function(iterator) {=0A=
    var trues =3D [], falses =3D [];=0A=
    this.each(function(value, index) {=0A=
      ((iterator || Prototype.K)(value, index) ?=0A=
        trues : falses).push(value);=0A=
    });=0A=
    return [trues, falses];=0A=
  },=0A=
=0A=
  pluck: function(property) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      results.push(value[property]);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  reject: function(iterator) {=0A=
    var results =3D [];=0A=
    this.each(function(value, index) {=0A=
      if (!iterator(value, index))=0A=
        results.push(value);=0A=
    });=0A=
    return results;=0A=
  },=0A=
=0A=
  sortBy: function(iterator) {=0A=
    return this.map(function(value, index) {=0A=
      return {value: value, criteria: iterator(value, index)};=0A=
    }).sort(function(left, right) {=0A=
      var a =3D left.criteria, b =3D right.criteria;=0A=
      return a < b ? -1 : a > b ? 1 : 0;=0A=
    }).pluck('value');=0A=
  },=0A=
=0A=
  toArray: function() {=0A=
    return this.map();=0A=
  },=0A=
=0A=
  zip: function() {=0A=
    var iterator =3D Prototype.K, args =3D $A(arguments);=0A=
    if (typeof args.last() =3D=3D 'function')=0A=
      iterator =3D args.pop();=0A=
=0A=
    var collections =3D [this].concat(args).map($A);=0A=
    return this.map(function(value, index) {=0A=
      return iterator(collections.pluck(index));=0A=
    });=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.toArray().length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Enumerable:' + this.toArray().inspect() + '>';=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Enumerable, {=0A=
  map:     Enumerable.collect,=0A=
  find:    Enumerable.detect,=0A=
  select:  Enumerable.findAll,=0A=
  member:  Enumerable.include,=0A=
  entries: Enumerable.toArray=0A=
});=0A=
var $A =3D Array.from =3D function(iterable) {=0A=
  if (!iterable) return [];=0A=
  if (iterable.toArray) {=0A=
    return iterable.toArray();=0A=
  } else {=0A=
    var results =3D [];=0A=
    for (var i =3D 0, length =3D iterable.length; i < length; i++)=0A=
      results.push(iterable[i]);=0A=
    return results;=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Array.prototype, Enumerable);=0A=
=0A=
if (!Array.prototype._reverse)=0A=
  Array.prototype._reverse =3D Array.prototype.reverse;=0A=
=0A=
Object.extend(Array.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      iterator(this[i]);=0A=
  },=0A=
=0A=
  clear: function() {=0A=
    this.length =3D 0;=0A=
    return this;=0A=
  },=0A=
=0A=
  first: function() {=0A=
    return this[0];=0A=
  },=0A=
=0A=
  last: function() {=0A=
    return this[this.length - 1];=0A=
  },=0A=
=0A=
  compact: function() {=0A=
    return this.select(function(value) {=0A=
      return value !=3D null;=0A=
    });=0A=
  },=0A=
=0A=
  flatten: function() {=0A=
    return this.inject([], function(array, value) {=0A=
      return array.concat(value && value.constructor =3D=3D Array ?=0A=
        value.flatten() : [value]);=0A=
    });=0A=
  },=0A=
=0A=
  without: function() {=0A=
    var values =3D $A(arguments);=0A=
    return this.select(function(value) {=0A=
      return !values.include(value);=0A=
    });=0A=
  },=0A=
=0A=
  indexOf: function(object) {=0A=
    for (var i =3D 0, length =3D this.length; i < length; i++)=0A=
      if (this[i] =3D=3D object) return i;=0A=
    return -1;=0A=
  },=0A=
=0A=
  reverse: function(inline) {=0A=
    return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A=
  },=0A=
=0A=
  reduce: function() {=0A=
    return this.length > 1 ? this : this[0];=0A=
  },=0A=
=0A=
  uniq: function() {=0A=
    return this.inject([], function(array, value) {=0A=
      return array.include(value) ? array : array.concat([value]);=0A=
    });=0A=
  },=0A=
=0A=
  clone: function() {=0A=
    return [].concat(this);=0A=
  },=0A=
=0A=
  size: function() {=0A=
    return this.length;=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '[' + this.map(Object.inspect).join(', ') + ']';=0A=
  }=0A=
});=0A=
=0A=
Array.prototype.toArray =3D Array.prototype.clone;=0A=
=0A=
function $w(string){=0A=
  string =3D string.strip();=0A=
  return string ? string.split(/\s+/) : [];=0A=
}=0A=
=0A=
if(window.opera){=0A=
  Array.prototype.concat =3D function(){=0A=
    var array =3D [];=0A=
    for(var i =3D 0, length =3D this.length; i < length; i++) =
array.push(this[i]);=0A=
    for(var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      if(arguments[i].constructor =3D=3D Array) {=0A=
        for(var j =3D 0, arrayLength =3D arguments[i].length; j < =
arrayLength; j++)=0A=
          array.push(arguments[i][j]);=0A=
      } else {=0A=
        array.push(arguments[i]);=0A=
      }=0A=
    }=0A=
    return array;=0A=
  }=0A=
}=0A=
var Hash =3D function(obj) {=0A=
  Object.extend(this, obj || {});=0A=
};=0A=
=0A=
Object.extend(Hash, {=0A=
  toQueryString: function(obj) {=0A=
    var parts =3D [];=0A=
=0A=
	  this.prototype._each.call(obj, function(pair) {=0A=
      if (!pair.key) return;=0A=
=0A=
      if (pair.value && pair.value.constructor =3D=3D Array) {=0A=
        var values =3D pair.value.compact();=0A=
        if (values.length < 2) pair.value =3D values.reduce();=0A=
        else {=0A=
        	key =3D encodeURIComponent(pair.key);=0A=
          values.each(function(value) {=0A=
            value =3D value !=3D undefined ? encodeURIComponent(value) : =
'';=0A=
            parts.push(key + '=3D' + encodeURIComponent(value));=0A=
          });=0A=
          return;=0A=
        }=0A=
      }=0A=
      if (pair.value =3D=3D undefined) pair[1] =3D '';=0A=
      parts.push(pair.map(encodeURIComponent).join('=3D'));=0A=
	  });=0A=
=0A=
    return parts.join('&');=0A=
  }=0A=
});=0A=
=0A=
Object.extend(Hash.prototype, Enumerable);=0A=
Object.extend(Hash.prototype, {=0A=
  _each: function(iterator) {=0A=
    for (var key in this) {=0A=
      var value =3D this[key];=0A=
      if (value && value =3D=3D Hash.prototype[key]) continue;=0A=
=0A=
      var pair =3D [key, value];=0A=
      pair.key =3D key;=0A=
      pair.value =3D value;=0A=
      iterator(pair);=0A=
    }=0A=
  },=0A=
=0A=
  keys: function() {=0A=
    return this.pluck('key');=0A=
  },=0A=
=0A=
  values: function() {=0A=
    return this.pluck('value');=0A=
  },=0A=
=0A=
  merge: function(hash) {=0A=
    return $H(hash).inject(this, function(mergedHash, pair) {=0A=
      mergedHash[pair.key] =3D pair.value;=0A=
      return mergedHash;=0A=
    });=0A=
  },=0A=
=0A=
  remove: function() {=0A=
    var result;=0A=
    for(var i =3D 0, length =3D arguments.length; i < length; i++) {=0A=
      var value =3D this[arguments[i]];=0A=
      if (value !=3D=3D undefined){=0A=
        if (result =3D=3D=3D undefined) result =3D value;=0A=
        else {=0A=
          if (result.constructor !=3D Array) result =3D [result];=0A=
          result.push(value)=0A=
        }=0A=
      }=0A=
      delete this[arguments[i]];=0A=
    }=0A=
    return result;=0A=
  },=0A=
=0A=
  toQueryString: function() {=0A=
    return Hash.toQueryString(this);=0A=
  },=0A=
=0A=
  inspect: function() {=0A=
    return '#<Hash:{' + this.map(function(pair) {=0A=
      return pair.map(Object.inspect).join(': ');=0A=
    }).join(', ') + '}>';=0A=
  }=0A=
});=0A=
=0A=
function $H(object) {=0A=
  if (object && object.constructor =3D=3D Hash) return object;=0A=
  return new Hash(object);=0A=
};=0A=
ObjectRange =3D Class.create();=0A=
Object.extend(ObjectRange.prototype, Enumerable);=0A=
Object.extend(ObjectRange.prototype, {=0A=
  initialize: function(start, end, exclusive) {=0A=
    this.start =3D start;=0A=
    this.end =3D end;=0A=
    this.exclusive =3D exclusive;=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    var value =3D this.start;=0A=
    while (this.include(value)) {=0A=
      iterator(value);=0A=
      value =3D value.succ();=0A=
    }=0A=
  },=0A=
=0A=
  include: function(value) {=0A=
    if (value < this.start)=0A=
      return false;=0A=
    if (this.exclusive)=0A=
      return value < this.end;=0A=
    return value <=3D this.end;=0A=
  }=0A=
});=0A=
=0A=
var $R =3D function(start, end, exclusive) {=0A=
  return new ObjectRange(start, end, exclusive);=0A=
}=0A=
=0A=
var Ajax =3D {=0A=
  getTransport: function() {=0A=
    return Try.these(=0A=
      function() {return new XMLHttpRequest()},=0A=
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A=
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A=
    ) || false;=0A=
  },=0A=
=0A=
  activeRequestCount: 0=0A=
}=0A=
=0A=
Ajax.Responders =3D {=0A=
  responders: [],=0A=
=0A=
  _each: function(iterator) {=0A=
    this.responders._each(iterator);=0A=
  },=0A=
=0A=
  register: function(responder) {=0A=
    if (!this.include(responder))=0A=
      this.responders.push(responder);=0A=
  },=0A=
=0A=
  unregister: function(responder) {=0A=
    this.responders =3D this.responders.without(responder);=0A=
  },=0A=
=0A=
  dispatch: function(callback, request, transport, json) {=0A=
    this.each(function(responder) {=0A=
      if (typeof responder[callback] =3D=3D 'function') {=0A=
        try {=0A=
          responder[callback].apply(responder, [request, transport, =
json]);=0A=
        } catch (e) {}=0A=
      }=0A=
    });=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Ajax.Responders, Enumerable);=0A=
=0A=
Ajax.Responders.register({=0A=
  onCreate: function() {=0A=
    Ajax.activeRequestCount++;=0A=
  },=0A=
  onComplete: function() {=0A=
    Ajax.activeRequestCount--;=0A=
  }=0A=
});=0A=
=0A=
Ajax.Base =3D function() {};=0A=
Ajax.Base.prototype =3D {=0A=
  setOptions: function(options) {=0A=
    this.options =3D {=0A=
      method:       'post',=0A=
      asynchronous: true,=0A=
      contentType:  'application/x-www-form-urlencoded',=0A=
      encoding:     'UTF-8',=0A=
      parameters:   ''=0A=
    }=0A=
    Object.extend(this.options, options || {});=0A=
=0A=
    this.options.method =3D this.options.method.toLowerCase();=0A=
    if (typeof this.options.parameters =3D=3D 'string')=0A=
      this.options.parameters =3D =
this.options.parameters.toQueryParams();=0A=
  }=0A=
}=0A=
=0A=
Ajax.Request =3D Class.create();=0A=
Ajax.Request.Events =3D=0A=
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A=
=0A=
Ajax.Request.prototype =3D Object.extend(new Ajax.Base(), {=0A=
  _complete: false,=0A=
=0A=
  initialize: function(url, options) {=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.setOptions(options);=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  request: function(url) {=0A=
    this.url =3D url;=0A=
    this.method =3D this.options.method;=0A=
    var params =3D this.options.parameters;=0A=
=0A=
    if (!['get', 'post'].include(this.method)) {=0A=
      // simulate other verbs over post=0A=
      params['_method'] =3D this.method;=0A=
      this.method =3D 'post';=0A=
    }=0A=
=0A=
    params =3D Hash.toQueryString(params);=0A=
    if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) =
params +=3D '&_=3D'=0A=
=0A=
    // when GET, append parameters to URL=0A=
    if (this.method =3D=3D 'get' && params)=0A=
      this.url +=3D (this.url.indexOf('?') > -1 ? '&' : '?') + params;=0A=
=0A=
    try {=0A=
      Ajax.Responders.dispatch('onCreate', this, this.transport);=0A=
=0A=
      this.transport.open(this.method.toUpperCase(), this.url,=0A=
        this.options.asynchronous);=0A=
=0A=
      if (this.options.asynchronous)=0A=
        setTimeout(function() { this.respondToReadyState(1) =
}.bind(this), 10);=0A=
=0A=
      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);=0A=
      this.setRequestHeaders();=0A=
=0A=
      var body =3D this.method =3D=3D 'post' ? (this.options.postBody || =
params) : null;=0A=
=0A=
      this.transport.send(body);=0A=
=0A=
      /* Force Firefox to handle ready state 4 for synchronous requests =
*/=0A=
      if (!this.options.asynchronous && this.transport.overrideMimeType)=0A=
        this.onStateChange();=0A=
=0A=
    }=0A=
    catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  onStateChange: function() {=0A=
    var readyState =3D this.transport.readyState;=0A=
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A=
      this.respondToReadyState(this.transport.readyState);=0A=
  },=0A=
=0A=
  setRequestHeaders: function() {=0A=
    var headers =3D {=0A=
      'X-Requested-With': 'XMLHttpRequest',=0A=
      'X-Prototype-Version': Prototype.Version,=0A=
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'=0A=
    };=0A=
=0A=
    if (this.method =3D=3D 'post') {=0A=
      headers['Content-type'] =3D this.options.contentType +=0A=
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');=0A=
=0A=
      /* Force "Connection: close" for older Mozilla browsers to work=0A=
       * around a bug where XMLHttpRequest sends an incorrect=0A=
       * Content-length header. See Mozilla Bugzilla #246651.=0A=
       */=0A=
      if (this.transport.overrideMimeType &&=0A=
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)=0A=
            headers['Connection'] =3D 'close';=0A=
    }=0A=
=0A=
    // user-defined headers=0A=
    if (typeof this.options.requestHeaders =3D=3D 'object') {=0A=
      var extras =3D this.options.requestHeaders;=0A=
=0A=
      if (typeof extras.push =3D=3D 'function')=0A=
        for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A=
          headers[extras[i]] =3D extras[i+1];=0A=
      else=0A=
        $H(extras).each(function(pair) { headers[pair.key] =3D =
pair.value });=0A=
    }=0A=
=0A=
    for (var name in headers)=0A=
      this.transport.setRequestHeader(name, headers[name]);=0A=
  },=0A=
=0A=
  success: function() {=0A=
    return !this.transport.status=0A=
        || (this.transport.status >=3D 200 && this.transport.status < =
300);=0A=
  },=0A=
=0A=
  respondToReadyState: function(readyState) {=0A=
    var state =3D Ajax.Request.Events[readyState];=0A=
    var transport =3D this.transport, json =3D this.evalJSON();=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      try {=0A=
        this._complete =3D true;=0A=
        (this.options['on' + this.transport.status]=0A=
         || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A=
         || Prototype.emptyFunction)(transport, json);=0A=
      } catch (e) {=0A=
        this.dispatchException(e);=0A=
      }=0A=
=0A=
      if ((this.getHeader('Content-type') || 'text/javascript').strip().=0A=
        match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))=0A=
          this.evalResponse();=0A=
    }=0A=
=0A=
    try {=0A=
      (this.options['on' + state] || Prototype.emptyFunction)(transport, =
json);=0A=
      Ajax.Responders.dispatch('on' + state, this, transport, json);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
=0A=
    if (state =3D=3D 'Complete') {=0A=
      // avoid memory leak in MSIE: clean up=0A=
      this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A=
    }=0A=
  },=0A=
=0A=
  getHeader: function(name) {=0A=
    try {=0A=
      return this.transport.getResponseHeader(name);=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  evalJSON: function() {=0A=
    try {=0A=
      var json =3D this.getHeader('X-JSON');=0A=
      return json ? eval('(' + json + ')') : null;=0A=
    } catch (e) { return null }=0A=
  },=0A=
=0A=
  evalResponse: function() {=0A=
    try {=0A=
      return eval(this.transport.responseText);=0A=
    } catch (e) {=0A=
      this.dispatchException(e);=0A=
    }=0A=
  },=0A=
=0A=
  dispatchException: function(exception) {=0A=
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);=0A=
    Ajax.Responders.dispatch('onException', this, exception);=0A=
  }=0A=
});=0A=
=0A=
Ajax.Updater =3D Class.create();=0A=
=0A=
Object.extend(Object.extend(Ajax.Updater.prototype, =
Ajax.Request.prototype), {=0A=
  initialize: function(container, url, options) {=0A=
    this.container =3D {=0A=
      success: (container.success || container),=0A=
      failure: (container.failure || (container.success ? null : =
container))=0A=
    }=0A=
=0A=
    this.transport =3D Ajax.getTransport();=0A=
    this.setOptions(options);=0A=
=0A=
    var onComplete =3D this.options.onComplete || =
Prototype.emptyFunction;=0A=
    this.options.onComplete =3D (function(transport, param) {=0A=
      this.updateContent();=0A=
      onComplete(transport, param);=0A=
    }).bind(this);=0A=
=0A=
    this.request(url);=0A=
  },=0A=
=0A=
  updateContent: function() {=0A=
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'];=0A=
    var response =3D this.transport.responseText;=0A=
=0A=
    if (!this.options.evalScripts) response =3D response.stripScripts();=0A=
=0A=
    if (receiver =3D $(receiver)) {=0A=
      if (this.options.insertion)=0A=
        new this.options.insertion(receiver, response);=0A=
      else=0A=
        receiver.update(response);=0A=
    }=0A=
=0A=
    if (this.success()) {=0A=
      if (this.onComplete)=0A=
        setTimeout(this.onComplete.bind(this), 10);=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
Ajax.PeriodicalUpdater =3D Class.create();=0A=
Ajax.PeriodicalUpdater.prototype =3D Object.extend(new Ajax.Base(), {=0A=
  initialize: function(container, url, options) {=0A=
    this.setOptions(options);=0A=
    this.onComplete =3D this.options.onComplete;=0A=
=0A=
    this.frequency =3D (this.options.frequency || 2);=0A=
    this.decay =3D (this.options.decay || 1);=0A=
=0A=
    this.updater =3D {};=0A=
    this.container =3D container;=0A=
    this.url =3D url;=0A=
=0A=
    this.start();=0A=
  },=0A=
=0A=
  start: function() {=0A=
    this.options.onComplete =3D this.updateComplete.bind(this);=0A=
    this.onTimerEvent();=0A=
  },=0A=
=0A=
  stop: function() {=0A=
    this.updater.options.onComplete =3D undefined;=0A=
    clearTimeout(this.timer);=0A=
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A=
  },=0A=
=0A=
  updateComplete: function(request) {=0A=
    if (this.options.decay) {=0A=
      this.decay =3D (request.responseText =3D=3D this.lastText ?=0A=
        this.decay * this.options.decay : 1);=0A=
=0A=
      this.lastText =3D request.responseText;=0A=
    }=0A=
    this.timer =3D setTimeout(this.onTimerEvent.bind(this),=0A=
      this.decay * this.frequency * 1000);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);=0A=
  }=0A=
});=0A=
function $(element) {=0A=
  if (arguments.length > 1) {=0A=
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)=0A=
      elements.push($(arguments[i]));=0A=
    return elements;=0A=
  }=0A=
  if (typeof element =3D=3D 'string')=0A=
    element =3D document.getElementById(element);=0A=
  return Element.extend(element);=0A=
}=0A=
=0A=
if (Prototype.BrowserFeatures.XPath) {=0A=
  document._getElementsByXPath =3D function(expression, parentElement) {=0A=
    var results =3D [];=0A=
    var query =3D document.evaluate(expression, $(parentElement) || =
document,=0A=
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A=
    for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A=
      results.push(query.snapshotItem(i));=0A=
    return results;=0A=
  };=0A=
}=0A=
=0A=
document.getElementsByClassName =3D function(className, parentElement) {=0A=
  if (Prototype.BrowserFeatures.XPath) {=0A=
    var q =3D ".//*[contains(concat(' ', @class, ' '), ' " + className + =
" ')]";=0A=
    return document._getElementsByXPath(q, parentElement);=0A=
  } else {=0A=
    var children =3D ($(parentElement) || =
document.body).getElementsByTagName('*');=0A=
    var elements =3D [], child;=0A=
    for (var i =3D 0, length =3D children.length; i < length; i++) {=0A=
      child =3D children[i];=0A=
      if (Element.hasClassName(child, className))=0A=
        elements.push(Element.extend(child));=0A=
    }=0A=
    return elements;=0A=
  }=0A=
};=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
if (!window.Element)=0A=
  var Element =3D new Object();=0A=
=0A=
Element.extend =3D function(element) {=0A=
  if (!element || _nativeExtensions || element.nodeType =3D=3D 3) return =
element;=0A=
=0A=
  if (!element._extended && element.tagName && element !=3D window) {=0A=
    var methods =3D Object.clone(Element.Methods), cache =3D =
Element.extend.cache;=0A=
=0A=
    if (element.tagName =3D=3D 'FORM')=0A=
      Object.extend(methods, Form.Methods);=0A=
    if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName))=0A=
      Object.extend(methods, Form.Element.Methods);=0A=
=0A=
    Object.extend(methods, Element.Methods.Simulated);=0A=
=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (typeof value =3D=3D 'function' && !(property in element))=0A=
        element[property] =3D cache.findOrStore(value);=0A=
    }=0A=
  }=0A=
=0A=
  element._extended =3D true;=0A=
  return element;=0A=
};=0A=
=0A=
Element.extend.cache =3D {=0A=
  findOrStore: function(value) {=0A=
    return this[value] =3D this[value] || function() {=0A=
      return value.apply(null, [this].concat($A(arguments)));=0A=
    }=0A=
  }=0A=
};=0A=
=0A=
Element.Methods =3D {=0A=
  visible: function(element) {=0A=
    return $(element).style.display !=3D 'none';=0A=
  },=0A=
=0A=
  toggle: function(element) {=0A=
    element =3D $(element);=0A=
    Element[Element.visible(element) ? 'hide' : 'show'](element);=0A=
    return element;=0A=
  },=0A=
=0A=
  hide: function(element) {=0A=
    $(element).style.display =3D 'none';=0A=
    return element;=0A=
  },=0A=
=0A=
  show: function(element) {=0A=
    $(element).style.display =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  remove: function(element) {=0A=
    element =3D $(element);=0A=
    element.parentNode.removeChild(element);=0A=
    return element;=0A=
  },=0A=
=0A=
  update: function(element, html) {=0A=
    html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A=
    $(element).innerHTML =3D html.stripScripts();=0A=
    setTimeout(function() {html.evalScripts()}, 10);=0A=
    return element;=0A=
  },=0A=
=0A=
  replace: function(element, html) {=0A=
    element =3D $(element);=0A=
    html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A=
    if (element.outerHTML) {=0A=
      element.outerHTML =3D html.stripScripts();=0A=
    } else {=0A=
      var range =3D element.ownerDocument.createRange();=0A=
      range.selectNodeContents(element);=0A=
      element.parentNode.replaceChild(=0A=
        range.createContextualFragment(html.stripScripts()), element);=0A=
    }=0A=
    setTimeout(function() {html.evalScripts()}, 10);=0A=
    return element;=0A=
  },=0A=
=0A=
  inspect: function(element) {=0A=
    element =3D $(element);=0A=
    var result =3D '<' + element.tagName.toLowerCase();=0A=
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A=
      var property =3D pair.first(), attribute =3D pair.last();=0A=
      var value =3D (element[property] || '').toString();=0A=
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);=0A=
    });=0A=
    return result + '>';=0A=
  },=0A=
=0A=
  recursivelyCollect: function(element, property) {=0A=
    element =3D $(element);=0A=
    var elements =3D [];=0A=
    while (element =3D element[property])=0A=
      if (element.nodeType =3D=3D 1)=0A=
        elements.push(Element.extend(element));=0A=
    return elements;=0A=
  },=0A=
=0A=
  ancestors: function(element) {=0A=
    return $(element).recursivelyCollect('parentNode');=0A=
  },=0A=
=0A=
  descendants: function(element) {=0A=
    return $A($(element).getElementsByTagName('*'));=0A=
  },=0A=
=0A=
  immediateDescendants: function(element) {=0A=
    if (!(element =3D $(element).firstChild)) return [];=0A=
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;=0A=
    if (element) return [element].concat($(element).nextSiblings());=0A=
    return [];=0A=
  },=0A=
=0A=
  previousSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('previousSibling');=0A=
  },=0A=
=0A=
  nextSiblings: function(element) {=0A=
    return $(element).recursivelyCollect('nextSibling');=0A=
  },=0A=
=0A=
  siblings: function(element) {=0A=
    element =3D $(element);=0A=
    return =
element.previousSiblings().reverse().concat(element.nextSiblings());=0A=
  },=0A=
=0A=
  match: function(element, selector) {=0A=
    if (typeof selector =3D=3D 'string')=0A=
      selector =3D new Selector(selector);=0A=
    return selector.match($(element));=0A=
  },=0A=
=0A=
  up: function(element, expression, index) {=0A=
    return Selector.findElement($(element).ancestors(), expression, =
index);=0A=
  },=0A=
=0A=
  down: function(element, expression, index) {=0A=
    return Selector.findElement($(element).descendants(), expression, =
index);=0A=
  },=0A=
=0A=
  previous: function(element, expression, index) {=0A=
    return Selector.findElement($(element).previousSiblings(), =
expression, index);=0A=
  },=0A=
=0A=
  next: function(element, expression, index) {=0A=
    return Selector.findElement($(element).nextSiblings(), expression, =
index);=0A=
  },=0A=
=0A=
  getElementsBySelector: function() {=0A=
    var args =3D $A(arguments), element =3D $(args.shift());=0A=
    return Selector.findChildElements(element, args);=0A=
  },=0A=
=0A=
  getElementsByClassName: function(element, className) {=0A=
    return document.getElementsByClassName(className, element);=0A=
  },=0A=
=0A=
  readAttribute: function(element, name) {=0A=
    element =3D $(element);=0A=
    if (document.all && !window.opera) {=0A=
      var t =3D Element._attributeTranslations;=0A=
      if (t.values[name]) return t.values[name](element, name);=0A=
      if (t.names[name])  name =3D t.names[name];=0A=
      var attribute =3D element.attributes[name];=0A=
      if(attribute) return attribute.nodeValue;=0A=
    }=0A=
    return element.getAttribute(name);=0A=
  },=0A=
=0A=
  getHeight: function(element) {=0A=
    return $(element).getDimensions().height;=0A=
  },=0A=
=0A=
  getWidth: function(element) {=0A=
    return $(element).getDimensions().width;=0A=
  },=0A=
=0A=
  classNames: function(element) {=0A=
    return new Element.ClassNames(element);=0A=
  },=0A=
=0A=
  hasClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    var elementClassName =3D element.className;=0A=
    if (elementClassName.length =3D=3D 0) return false;=0A=
    if (elementClassName =3D=3D className ||=0A=
        elementClassName.match(new RegExp("(^|\\s)" + className + =
"(\\s|$)")))=0A=
      return true;=0A=
    return false;=0A=
  },=0A=
=0A=
  addClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    Element.classNames(element).add(className);=0A=
    return element;=0A=
  },=0A=
=0A=
  removeClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    Element.classNames(element).remove(className);=0A=
    return element;=0A=
  },=0A=
=0A=
  toggleClassName: function(element, className) {=0A=
    if (!(element =3D $(element))) return;=0A=
    Element.classNames(element)[element.hasClassName(className) ? =
'remove' : 'add'](className);=0A=
    return element;=0A=
  },=0A=
=0A=
  observe: function() {=0A=
    Event.observe.apply(Event, arguments);=0A=
    return $A(arguments).first();=0A=
  },=0A=
=0A=
  stopObserving: function() {=0A=
    Event.stopObserving.apply(Event, arguments);=0A=
    return $A(arguments).first();=0A=
  },=0A=
=0A=
  // removes whitespace-only text node children=0A=
  cleanWhitespace: function(element) {=0A=
    element =3D $(element);=0A=
    var node =3D element.firstChild;=0A=
    while (node) {=0A=
      var nextNode =3D node.nextSibling;=0A=
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A=
        element.removeChild(node);=0A=
      node =3D nextNode;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  empty: function(element) {=0A=
    return $(element).innerHTML.match(/^\s*$/);=0A=
  },=0A=
=0A=
  descendantOf: function(element, ancestor) {=0A=
    element =3D $(element), ancestor =3D $(ancestor);=0A=
    while (element =3D element.parentNode)=0A=
      if (element =3D=3D ancestor) return true;=0A=
    return false;=0A=
  },=0A=
=0A=
  scrollTo: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Position.cumulativeOffset(element);=0A=
    window.scrollTo(pos[0], pos[1]);=0A=
    return element;=0A=
  },=0A=
=0A=
  getStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    if (['float','cssFloat'].include(style))=0A=
      style =3D (typeof element.style.styleFloat !=3D 'undefined' ? =
'styleFloat' : 'cssFloat');=0A=
    style =3D style.camelize();=0A=
    var value =3D element.style[style];=0A=
    if (!value) {=0A=
      if (document.defaultView && document.defaultView.getComputedStyle) =
{=0A=
        var css =3D document.defaultView.getComputedStyle(element, null);=0A=
        value =3D css ? css[style] : null;=0A=
      } else if (element.currentStyle) {=0A=
        value =3D element.currentStyle[style];=0A=
      }=0A=
    }=0A=
=0A=
    if((value =3D=3D 'auto') && ['width','height'].include(style) && =
(element.getStyle('display') !=3D 'none'))=0A=
      value =3D element['offset'+style.capitalize()] + 'px';=0A=
=0A=
    if (window.opera && ['left', 'top', 'right', =
'bottom'].include(style))=0A=
      if (Element.getStyle(element, 'position') =3D=3D 'static') value =
=3D 'auto';=0A=
    if(style =3D=3D 'opacity') {=0A=
      if(value) return parseFloat(value);=0A=
      if(value =3D (element.getStyle('filter') || =
'').match(/alpha\(opacity=3D(.*)\)/))=0A=
        if(value[1]) return parseFloat(value[1]) / 100;=0A=
      return 1.0;=0A=
    }=0A=
    return value =3D=3D 'auto' ? null : value;=0A=
  },=0A=
=0A=
  setStyle: function(element, style) {=0A=
    element =3D $(element);=0A=
    for (var name in style) {=0A=
      var value =3D style[name];=0A=
      if(name =3D=3D 'opacity') {=0A=
        if (value =3D=3D 1) {=0A=
          value =3D (/Gecko/.test(navigator.userAgent) &&=0A=
            !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? =
0.999999 : 1.0;=0A=
          if(/MSIE/.test(navigator.userAgent) && !window.opera)=0A=
            element.style.filter =3D =
element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');=0A=
        } else if(value =3D=3D=3D '') {=0A=
          if(/MSIE/.test(navigator.userAgent) && !window.opera)=0A=
            element.style.filter =3D =
element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'');=0A=
        } else {=0A=
          if(value < 0.00001) value =3D 0;=0A=
          if(/MSIE/.test(navigator.userAgent) && !window.opera)=0A=
            element.style.filter =3D =
element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') +=0A=
              'alpha(opacity=3D'+value*100+')';=0A=
        }=0A=
      } else if(['float','cssFloat'].include(name)) name =3D (typeof =
element.style.styleFloat !=3D 'undefined') ? 'styleFloat' : 'cssFloat';=0A=
      element.style[name.camelize()] =3D value;=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  getDimensions: function(element) {=0A=
    element =3D $(element);=0A=
    var display =3D $(element).getStyle('display');=0A=
    if (display !=3D 'none' && display !=3D null) // Safari bug=0A=
      return {width: element.offsetWidth, height: element.offsetHeight};=0A=
=0A=
    // All *Width and *Height properties give 0 on elements with display =
none,=0A=
    // so enable the element temporarily=0A=
    var els =3D element.style;=0A=
    var originalVisibility =3D els.visibility;=0A=
    var originalPosition =3D els.position;=0A=
    var originalDisplay =3D els.display;=0A=
    els.visibility =3D 'hidden';=0A=
    els.position =3D 'absolute';=0A=
    els.display =3D 'block';=0A=
    var originalWidth =3D element.clientWidth;=0A=
    var originalHeight =3D element.clientHeight;=0A=
    els.display =3D originalDisplay;=0A=
    els.position =3D originalPosition;=0A=
    els.visibility =3D originalVisibility;=0A=
    return {width: originalWidth, height: originalHeight};=0A=
  },=0A=
=0A=
  makePositioned: function(element) {=0A=
    element =3D $(element);=0A=
    var pos =3D Element.getStyle(element, 'position');=0A=
    if (pos =3D=3D 'static' || !pos) {=0A=
      element._madePositioned =3D true;=0A=
      element.style.position =3D 'relative';=0A=
      // Opera returns the offset relative to the positioning context, =
when an=0A=
      // element is position relative but top and left have not been =
defined=0A=
      if (window.opera) {=0A=
        element.style.top =3D 0;=0A=
        element.style.left =3D 0;=0A=
      }=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  undoPositioned: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._madePositioned) {=0A=
      element._madePositioned =3D undefined;=0A=
      element.style.position =3D=0A=
        element.style.top =3D=0A=
        element.style.left =3D=0A=
        element.style.bottom =3D=0A=
        element.style.right =3D '';=0A=
    }=0A=
    return element;=0A=
  },=0A=
=0A=
  makeClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (element._overflow) return element;=0A=
    element._overflow =3D element.style.overflow || 'auto';=0A=
    if ((Element.getStyle(element, 'overflow') || 'visible') !=3D =
'hidden')=0A=
      element.style.overflow =3D 'hidden';=0A=
    return element;=0A=
  },=0A=
=0A=
  undoClipping: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element._overflow) return element;=0A=
    element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : =
element._overflow;=0A=
    element._overflow =3D null;=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf});=0A=
=0A=
Element._attributeTranslations =3D {};=0A=
=0A=
Element._attributeTranslations.names =3D {=0A=
  colspan:   "colSpan",=0A=
  rowspan:   "rowSpan",=0A=
  valign:    "vAlign",=0A=
  datetime:  "dateTime",=0A=
  accesskey: "accessKey",=0A=
  tabindex:  "tabIndex",=0A=
  enctype:   "encType",=0A=
  maxlength: "maxLength",=0A=
  readonly:  "readOnly",=0A=
  longdesc:  "longDesc"=0A=
};=0A=
=0A=
Element._attributeTranslations.values =3D {=0A=
  _getAttr: function(element, attribute) {=0A=
    return element.getAttribute(attribute, 2);=0A=
  },=0A=
=0A=
  _flag: function(element, attribute) {=0A=
    return $(element).hasAttribute(attribute) ? attribute : null;=0A=
  },=0A=
=0A=
  style: function(element) {=0A=
    return element.style.cssText.toLowerCase();=0A=
  },=0A=
=0A=
  title: function(element) {=0A=
    var node =3D element.getAttributeNode('title');=0A=
    return node.specified ? node.nodeValue : null;=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element._attributeTranslations.values, {=0A=
  href: Element._attributeTranslations.values._getAttr,=0A=
  src:  Element._attributeTranslations.values._getAttr,=0A=
  disabled: Element._attributeTranslations.values._flag,=0A=
  checked:  Element._attributeTranslations.values._flag,=0A=
  readonly: Element._attributeTranslations.values._flag,=0A=
  multiple: Element._attributeTranslations.values._flag=0A=
});=0A=
=0A=
Element.Methods.Simulated =3D {=0A=
  hasAttribute: function(element, attribute) {=0A=
    var t =3D Element._attributeTranslations;=0A=
    attribute =3D t.names[attribute] || attribute;=0A=
    return $(element).getAttributeNode(attribute).specified;=0A=
  }=0A=
};=0A=
=0A=
// IE is missing .innerHTML support for TABLE-related elements=0A=
if (document.all && !window.opera){=0A=
  Element.Methods.update =3D function(element, html) {=0A=
    element =3D $(element);=0A=
    html =3D typeof html =3D=3D 'undefined' ? '' : html.toString();=0A=
    var tagName =3D element.tagName.toUpperCase();=0A=
    if (['THEAD','TBODY','TR','TD'].include(tagName)) {=0A=
      var div =3D document.createElement('div');=0A=
      switch (tagName) {=0A=
        case 'THEAD':=0A=
        case 'TBODY':=0A=
          div.innerHTML =3D '<table><tbody>' +  html.stripScripts() + =
'</tbody></table>';=0A=
          depth =3D 2;=0A=
          break;=0A=
        case 'TR':=0A=
          div.innerHTML =3D '<table><tbody><tr>' +  html.stripScripts() =
+ '</tr></tbody></table>';=0A=
          depth =3D 3;=0A=
          break;=0A=
        case 'TD':=0A=
          div.innerHTML =3D '<table><tbody><tr><td>' +  =
html.stripScripts() + '</td></tr></tbody></table>';=0A=
          depth =3D 4;=0A=
      }=0A=
      $A(element.childNodes).each(function(node){=0A=
        element.removeChild(node)=0A=
      });=0A=
      depth.times(function(){ div =3D div.firstChild });=0A=
=0A=
      $A(div.childNodes).each(=0A=
        function(node){ element.appendChild(node) });=0A=
    } else {=0A=
      element.innerHTML =3D html.stripScripts();=0A=
    }=0A=
    setTimeout(function() {html.evalScripts()}, 10);=0A=
    return element;=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element, Element.Methods);=0A=
=0A=
var _nativeExtensions =3D false;=0A=
=0A=
if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A=
  ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) {=0A=
    var className =3D 'HTML' + tag + 'Element';=0A=
    if(window[className]) return;=0A=
    var klass =3D window[className] =3D {};=0A=
    klass.prototype =3D document.createElement(tag ? tag.toLowerCase() : =
'div').__proto__;=0A=
  });=0A=
=0A=
Element.addMethods =3D function(methods) {=0A=
  Object.extend(Element.Methods, methods || {});=0A=
=0A=
  function copy(methods, destination, onlyIfAbsent) {=0A=
    onlyIfAbsent =3D onlyIfAbsent || false;=0A=
    var cache =3D Element.extend.cache;=0A=
    for (var property in methods) {=0A=
      var value =3D methods[property];=0A=
      if (!onlyIfAbsent || !(property in destination))=0A=
        destination[property] =3D cache.findOrStore(value);=0A=
    }=0A=
  }=0A=
=0A=
  if (typeof HTMLElement !=3D 'undefined') {=0A=
    copy(Element.Methods, HTMLElement.prototype);=0A=
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A=
    copy(Form.Methods, HTMLFormElement.prototype);=0A=
    [HTMLInputElement, HTMLTextAreaElement, =
HTMLSelectElement].each(function(klass) {=0A=
      copy(Form.Element.Methods, klass.prototype);=0A=
    });=0A=
    _nativeExtensions =3D true;=0A=
  }=0A=
}=0A=
=0A=
var Toggle =3D new Object();=0A=
Toggle.display =3D Element.toggle;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.Insertion =3D function(adjacency) {=0A=
  this.adjacency =3D adjacency;=0A=
}=0A=
=0A=
Abstract.Insertion.prototype =3D {=0A=
  initialize: function(element, content) {=0A=
    this.element =3D $(element);=0A=
    this.content =3D content.stripScripts();=0A=
=0A=
    if (this.adjacency && this.element.insertAdjacentHTML) {=0A=
      try {=0A=
        this.element.insertAdjacentHTML(this.adjacency, this.content);=0A=
      } catch (e) {=0A=
        var tagName =3D this.element.tagName.toUpperCase();=0A=
        if (['TBODY', 'TR'].include(tagName)) {=0A=
          this.insertContent(this.contentFromAnonymousTable());=0A=
        } else {=0A=
          throw e;=0A=
        }=0A=
      }=0A=
    } else {=0A=
      this.range =3D this.element.ownerDocument.createRange();=0A=
      if (this.initializeRange) this.initializeRange();=0A=
      =
this.insertContent([this.range.createContextualFragment(this.content)]);=0A=
    }=0A=
=0A=
    setTimeout(function() {content.evalScripts()}, 10);=0A=
  },=0A=
=0A=
  contentFromAnonymousTable: function() {=0A=
    var div =3D document.createElement('div');=0A=
    div.innerHTML =3D '<table><tbody>' + this.content + =
'</tbody></table>';=0A=
    return $A(div.childNodes[0].childNodes[0].childNodes);=0A=
  }=0A=
}=0A=
=0A=
var Insertion =3D new Object();=0A=
=0A=
Insertion.Before =3D Class.create();=0A=
Insertion.Before.prototype =3D Object.extend(new =
Abstract.Insertion('beforeBegin'), {=0A=
  initializeRange: function() {=0A=
    this.range.setStartBefore(this.element);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.each((function(fragment) {=0A=
      this.element.parentNode.insertBefore(fragment, this.element);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
Insertion.Top =3D Class.create();=0A=
Insertion.Top.prototype =3D Object.extend(new =
Abstract.Insertion('afterBegin'), {=0A=
  initializeRange: function() {=0A=
    this.range.selectNodeContents(this.element);=0A=
    this.range.collapse(true);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.reverse(false).each((function(fragment) {=0A=
      this.element.insertBefore(fragment, this.element.firstChild);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
Insertion.Bottom =3D Class.create();=0A=
Insertion.Bottom.prototype =3D Object.extend(new =
Abstract.Insertion('beforeEnd'), {=0A=
  initializeRange: function() {=0A=
    this.range.selectNodeContents(this.element);=0A=
    this.range.collapse(this.element);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.each((function(fragment) {=0A=
      this.element.appendChild(fragment);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
Insertion.After =3D Class.create();=0A=
Insertion.After.prototype =3D Object.extend(new =
Abstract.Insertion('afterEnd'), {=0A=
  initializeRange: function() {=0A=
    this.range.setStartAfter(this.element);=0A=
  },=0A=
=0A=
  insertContent: function(fragments) {=0A=
    fragments.each((function(fragment) {=0A=
      this.element.parentNode.insertBefore(fragment,=0A=
        this.element.nextSibling);=0A=
    }).bind(this));=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Element.ClassNames =3D Class.create();=0A=
Element.ClassNames.prototype =3D {=0A=
  initialize: function(element) {=0A=
    this.element =3D $(element);=0A=
  },=0A=
=0A=
  _each: function(iterator) {=0A=
    this.element.className.split(/\s+/).select(function(name) {=0A=
      return name.length > 0;=0A=
    })._each(iterator);=0A=
  },=0A=
=0A=
  set: function(className) {=0A=
    this.element.className =3D className;=0A=
  },=0A=
=0A=
  add: function(classNameToAdd) {=0A=
    if (this.include(classNameToAdd)) return;=0A=
    this.set($A(this).concat(classNameToAdd).join(' '));=0A=
  },=0A=
=0A=
  remove: function(classNameToRemove) {=0A=
    if (!this.include(classNameToRemove)) return;=0A=
    this.set($A(this).without(classNameToRemove).join(' '));=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return $A(this).join(' ');=0A=
  }=0A=
};=0A=
=0A=
Object.extend(Element.ClassNames.prototype, Enumerable);=0A=
var Selector =3D Class.create();=0A=
Selector.prototype =3D {=0A=
  initialize: function(expression) {=0A=
    this.params =3D {classNames: []};=0A=
    this.expression =3D expression.toString().strip();=0A=
    this.parseExpression();=0A=
    this.compileMatcher();=0A=
  },=0A=
=0A=
  parseExpression: function() {=0A=
    function abort(message) { throw 'Parse error in selector: ' + =
message; }=0A=
=0A=
    if (this.expression =3D=3D '')  abort('empty expression');=0A=
=0A=
    var params =3D this.params, expr =3D this.expression, match, =
modifier, clause, rest;=0A=
    while (match =3D =
expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=3D)(?:"([^"]*)"|([^\]\s]*))=
)?\]$/i)) {=0A=
      params.attributes =3D params.attributes || [];=0A=
      params.attributes.push({name: match[2], operator: match[3], value: =
match[4] || match[5] || ''});=0A=
      expr =3D match[1];=0A=
    }=0A=
=0A=
    if (expr =3D=3D '*') return this.params.wildcard =3D true;=0A=
=0A=
    while (match =3D expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) {=0A=
      modifier =3D match[1], clause =3D match[2], rest =3D match[3];=0A=
      switch (modifier) {=0A=
        case '#':       params.id =3D clause; break;=0A=
        case '.':       params.classNames.push(clause); break;=0A=
        case '':=0A=
        case undefined: params.tagName =3D clause.toUpperCase(); break;=0A=
        default:        abort(expr.inspect());=0A=
      }=0A=
      expr =3D rest;=0A=
    }=0A=
=0A=
    if (expr.length > 0) abort(expr.inspect());=0A=
  },=0A=
=0A=
  buildMatchExpression: function() {=0A=
    var params =3D this.params, conditions =3D [], clause;=0A=
=0A=
    if (params.wildcard)=0A=
      conditions.push('true');=0A=
    if (clause =3D params.id)=0A=
      conditions.push('element.readAttribute("id") =3D=3D ' + =
clause.inspect());=0A=
    if (clause =3D params.tagName)=0A=
      conditions.push('element.tagName.toUpperCase() =3D=3D ' + =
clause.inspect());=0A=
    if ((clause =3D params.classNames).length > 0)=0A=
      for (var i =3D 0, length =3D clause.length; i < length; i++)=0A=
        conditions.push('element.hasClassName(' + clause[i].inspect() + =
')');=0A=
    if (clause =3D params.attributes) {=0A=
      clause.each(function(attribute) {=0A=
        var value =3D 'element.readAttribute(' + =
attribute.name.inspect() + ')';=0A=
        var splitValueBy =3D function(delimiter) {=0A=
          return value + ' && ' + value + '.split(' + =
delimiter.inspect() + ')';=0A=
        }=0A=
=0A=
        switch (attribute.operator) {=0A=
          case '=3D':       conditions.push(value + ' =3D=3D ' + =
attribute.value.inspect()); break;=0A=
          case '~=3D':      conditions.push(splitValueBy(' ') + =
'.include(' + attribute.value.inspect() + ')'); break;=0A=
          case '|=3D':      conditions.push(=0A=
                            splitValueBy('-') + '.first().toUpperCase() =
=3D=3D ' + attribute.value.toUpperCase().inspect()=0A=
                          ); break;=0A=
          case '!=3D':      conditions.push(value + ' !=3D ' + =
attribute.value.inspect()); break;=0A=
          case '':=0A=
          case undefined: conditions.push('element.hasAttribute(' + =
attribute.name.inspect() + ')'); break;=0A=
          default:        throw 'Unknown operator ' + attribute.operator =
+ ' in selector';=0A=
        }=0A=
      });=0A=
    }=0A=
=0A=
    return conditions.join(' && ');=0A=
  },=0A=
=0A=
  compileMatcher: function() {=0A=
    this.match =3D new Function('element', 'if (!element.tagName) return =
false; \=0A=
      element =3D $(element); \=0A=
      return ' + this.buildMatchExpression());=0A=
  },=0A=
=0A=
  findElements: function(scope) {=0A=
    var element;=0A=
=0A=
    if (element =3D $(this.params.id))=0A=
      if (this.match(element))=0A=
        if (!scope || Element.childOf(element, scope))=0A=
          return [element];=0A=
=0A=
    scope =3D (scope || =
document).getElementsByTagName(this.params.tagName || '*');=0A=
=0A=
    var results =3D [];=0A=
    for (var i =3D 0, length =3D scope.length; i < length; i++)=0A=
      if (this.match(element =3D scope[i]))=0A=
        results.push(Element.extend(element));=0A=
=0A=
    return results;=0A=
  },=0A=
=0A=
  toString: function() {=0A=
    return this.expression;=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Selector, {=0A=
  matchElements: function(elements, expression) {=0A=
    var selector =3D new Selector(expression);=0A=
    return =
elements.select(selector.match.bind(selector)).map(Element.extend);=0A=
  },=0A=
=0A=
  findElement: function(elements, expression, index) {=0A=
    if (typeof expression =3D=3D 'number') index =3D expression, =
expression =3D false;=0A=
    return Selector.matchElements(elements, expression || '*')[index || =
0];=0A=
  },=0A=
=0A=
  findChildElements: function(element, expressions) {=0A=
    return expressions.map(function(expression) {=0A=
      return =
expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], =
function(results, expr) {=0A=
        var selector =3D new Selector(expr);=0A=
        return results.inject([], function(elements, result) {=0A=
          return elements.concat(selector.findElements(result || =
element));=0A=
        });=0A=
      });=0A=
    }).flatten();=0A=
  }=0A=
});=0A=
=0A=
function $$() {=0A=
  return Selector.findChildElements(document, $A(arguments));=0A=
}=0A=
var Form =3D {=0A=
  reset: function(form) {=0A=
    $(form).reset();=0A=
    return form;=0A=
  },=0A=
=0A=
  serializeElements: function(elements, getHash) {=0A=
    var data =3D elements.inject({}, function(result, element) {=0A=
      if (!element.disabled && element.name) {=0A=
        var key =3D element.name, value =3D $(element).getValue();=0A=
        if (value !=3D undefined) {=0A=
          if (result[key]) {=0A=
            if (result[key].constructor !=3D Array) result[key] =3D =
[result[key]];=0A=
            result[key].push(value);=0A=
          }=0A=
          else result[key] =3D value;=0A=
        }=0A=
      }=0A=
      return result;=0A=
    });=0A=
=0A=
    return getHash ? data : Hash.toQueryString(data);=0A=
  }=0A=
};=0A=
=0A=
Form.Methods =3D {=0A=
  serialize: function(form, getHash) {=0A=
    return Form.serializeElements(Form.getElements(form), getHash);=0A=
  },=0A=
=0A=
  getElements: function(form) {=0A=
    return $A($(form).getElementsByTagName('*')).inject([],=0A=
      function(elements, child) {=0A=
        if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A=
          elements.push(Element.extend(child));=0A=
        return elements;=0A=
      }=0A=
    );=0A=
  },=0A=
=0A=
  getInputs: function(form, typeName, name) {=0A=
    form =3D $(form);=0A=
    var inputs =3D form.getElementsByTagName('input');=0A=
=0A=
    if (!typeName && !name) return $A(inputs).map(Element.extend);=0A=
=0A=
    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {=0A=
      var input =3D inputs[i];=0A=
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))=0A=
        continue;=0A=
      matchingInputs.push(Element.extend(input));=0A=
    }=0A=
=0A=
    return matchingInputs;=0A=
  },=0A=
=0A=
  disable: function(form) {=0A=
    form =3D $(form);=0A=
    form.getElements().each(function(element) {=0A=
      element.blur();=0A=
      element.disabled =3D 'true';=0A=
    });=0A=
    return form;=0A=
  },=0A=
=0A=
  enable: function(form) {=0A=
    form =3D $(form);=0A=
    form.getElements().each(function(element) {=0A=
      element.disabled =3D '';=0A=
    });=0A=
    return form;=0A=
  },=0A=
=0A=
  findFirstElement: function(form) {=0A=
    return $(form).getElements().find(function(element) {=0A=
      return element.type !=3D 'hidden' && !element.disabled &&=0A=
        ['input', 'select', =
'textarea'].include(element.tagName.toLowerCase());=0A=
    });=0A=
  },=0A=
=0A=
  focusFirstElement: function(form) {=0A=
    form =3D $(form);=0A=
    form.findFirstElement().activate();=0A=
    return form;=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Form, Form.Methods);=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element =3D {=0A=
  focus: function(element) {=0A=
    $(element).focus();=0A=
    return element;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    $(element).select();=0A=
    return element;=0A=
  }=0A=
}=0A=
=0A=
Form.Element.Methods =3D {=0A=
  serialize: function(element) {=0A=
    element =3D $(element);=0A=
    if (!element.disabled && element.name) {=0A=
      var value =3D element.getValue();=0A=
      if (value !=3D undefined) {=0A=
        var pair =3D {};=0A=
        pair[element.name] =3D value;=0A=
        return Hash.toQueryString(pair);=0A=
      }=0A=
    }=0A=
    return '';=0A=
  },=0A=
=0A=
  getValue: function(element) {=0A=
    element =3D $(element);=0A=
    var method =3D element.tagName.toLowerCase();=0A=
    return Form.Element.Serializers[method](element);=0A=
  },=0A=
=0A=
  clear: function(element) {=0A=
    $(element).value =3D '';=0A=
    return element;=0A=
  },=0A=
=0A=
  present: function(element) {=0A=
    return $(element).value !=3D '';=0A=
  },=0A=
=0A=
  activate: function(element) {=0A=
    element =3D $(element);=0A=
    element.focus();=0A=
    if (element.select && ( element.tagName.toLowerCase() !=3D 'input' ||=0A=
      !['button', 'reset', 'submit'].include(element.type) ) )=0A=
      element.select();=0A=
    return element;=0A=
  },=0A=
=0A=
  disable: function(element) {=0A=
    element =3D $(element);=0A=
    element.disabled =3D true;=0A=
    return element;=0A=
  },=0A=
=0A=
  enable: function(element) {=0A=
    element =3D $(element);=0A=
    element.blur();=0A=
    element.disabled =3D false;=0A=
    return element;=0A=
  }=0A=
}=0A=
=0A=
Object.extend(Form.Element, Form.Element.Methods);=0A=
var Field =3D Form.Element;=0A=
var $F =3D Form.Element.getValue;=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Form.Element.Serializers =3D {=0A=
  input: function(element) {=0A=
    switch (element.type.toLowerCase()) {=0A=
      case 'checkbox':=0A=
      case 'radio':=0A=
        return Form.Element.Serializers.inputSelector(element);=0A=
      default:=0A=
        return Form.Element.Serializers.textarea(element);=0A=
    }=0A=
  },=0A=
=0A=
  inputSelector: function(element) {=0A=
    return element.checked ? element.value : null;=0A=
  },=0A=
=0A=
  textarea: function(element) {=0A=
    return element.value;=0A=
  },=0A=
=0A=
  select: function(element) {=0A=
    return this[element.type =3D=3D 'select-one' ?=0A=
      'selectOne' : 'selectMany'](element);=0A=
  },=0A=
=0A=
  selectOne: function(element) {=0A=
    var index =3D element.selectedIndex;=0A=
    return index >=3D 0 ? this.optionValue(element.options[index]) : =
null;=0A=
  },=0A=
=0A=
  selectMany: function(element) {=0A=
    var values, length =3D element.length;=0A=
    if (!length) return null;=0A=
=0A=
    for (var i =3D 0, values =3D []; i < length; i++) {=0A=
      var opt =3D element.options[i];=0A=
      if (opt.selected) values.push(this.optionValue(opt));=0A=
    }=0A=
    return values;=0A=
  },=0A=
=0A=
  optionValue: function(opt) {=0A=
    // extend element because hasAttribute may not be native=0A=
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;=0A=
  }=0A=
}=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.TimedObserver =3D function() {}=0A=
Abstract.TimedObserver.prototype =3D {=0A=
  initialize: function(element, frequency, callback) {=0A=
    this.frequency =3D frequency;=0A=
    this.element   =3D $(element);=0A=
    this.callback  =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    this.registerCallback();=0A=
  },=0A=
=0A=
  registerCallback: function() {=0A=
    setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);=0A=
  },=0A=
=0A=
  onTimerEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    var changed =3D ('string' =3D=3D typeof this.lastValue && 'string' =
=3D=3D typeof value=0A=
      ? this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value));=0A=
    if (changed) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
Form.Element.Observer =3D Class.create();=0A=
Form.Element.Observer.prototype =3D Object.extend(new =
Abstract.TimedObserver(), {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.Observer =3D Class.create();=0A=
Form.Observer.prototype =3D Object.extend(new Abstract.TimedObserver(), {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
=0A=
/*-----------------------------------------------------------------------=
---*/=0A=
=0A=
Abstract.EventObserver =3D function() {}=0A=
Abstract.EventObserver.prototype =3D {=0A=
  initialize: function(element, callback) {=0A=
    this.element  =3D $(element);=0A=
    this.callback =3D callback;=0A=
=0A=
    this.lastValue =3D this.getValue();=0A=
    if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A=
      this.registerFormCallbacks();=0A=
    else=0A=
      this.registerCallback(this.element);=0A=
  },=0A=
=0A=
  onElementEvent: function() {=0A=
    var value =3D this.getValue();=0A=
    if (this.lastValue !=3D value) {=0A=
      this.callback(this.element, value);=0A=
      this.lastValue =3D value;=0A=
    }=0A=
  },=0A=
=0A=
  registerFormCallbacks: function() {=0A=
    =
Form.getElements(this.element).each(this.registerCallback.bind(this));=0A=
  },=0A=
=0A=
  registerCallback: function(element) {=0A=
    if (element.type) {=0A=
      switch (element.type.toLowerCase()) {=0A=
        case 'checkbox':=0A=
        case 'radio':=0A=
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
        default:=0A=
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));=0A=
          break;=0A=
      }=0A=
    }=0A=
  }=0A=
}=0A=
=0A=
Form.Element.EventObserver =3D Class.create();=0A=
Form.Element.EventObserver.prototype =3D Object.extend(new =
Abstract.EventObserver(), {=0A=
  getValue: function() {=0A=
    return Form.Element.getValue(this.element);=0A=
  }=0A=
});=0A=
=0A=
Form.EventObserver =3D Class.create();=0A=
Form.EventObserver.prototype =3D Object.extend(new =
Abstract.EventObserver(), {=0A=
  getValue: function() {=0A=
    return Form.serialize(this.element);=0A=
  }=0A=
});=0A=
if (!window.Event) {=0A=
  var Event =3D new Object();=0A=
}=0A=
=0A=
Object.extend(Event, {=0A=
  KEY_BACKSPACE: 8,=0A=
  KEY_TAB:       9,=0A=
  KEY_RETURN:   13,=0A=
  KEY_ESC:      27,=0A=
  KEY_LEFT:     37,=0A=
  KEY_UP:       38,=0A=
  KEY_RIGHT:    39,=0A=
  KEY_DOWN:     40,=0A=
  KEY_DELETE:   46,=0A=
  KEY_HOME:     36,=0A=
  KEY_END:      35,=0A=
  KEY_PAGEUP:   33,=0A=
  KEY_PAGEDOWN: 34,=0A=
=0A=
  element: function(event) {=0A=
    return event.target || event.srcElement;=0A=
  },=0A=
=0A=
  isLeftClick: function(event) {=0A=
    return (((event.which) && (event.which =3D=3D 1)) ||=0A=
            ((event.button) && (event.button =3D=3D 1)));=0A=
  },=0A=
=0A=
  pointerX: function(event) {=0A=
    return event.pageX || (event.clientX +=0A=
      (document.documentElement.scrollLeft || document.body.scrollLeft));=0A=
  },=0A=
=0A=
  pointerY: function(event) {=0A=
    return event.pageY || (event.clientY +=0A=
      (document.documentElement.scrollTop || document.body.scrollTop));=0A=
  },=0A=
=0A=
  stop: function(event) {=0A=
    if (event.preventDefault) {=0A=
      event.preventDefault();=0A=
      event.stopPropagation();=0A=
    } else {=0A=
      event.returnValue =3D false;=0A=
      event.cancelBubble =3D true;=0A=
    }=0A=
  },=0A=
=0A=
  // find the first node with the given tagName, starting from the=0A=
  // node the event was triggered on; traverses the DOM upwards=0A=
  findElement: function(event, tagName) {=0A=
    var element =3D Event.element(event);=0A=
    while (element.parentNode && (!element.tagName ||=0A=
        (element.tagName.toUpperCase() !=3D tagName.toUpperCase())))=0A=
      element =3D element.parentNode;=0A=
    return element;=0A=
  },=0A=
=0A=
  observers: false,=0A=
=0A=
  _observeAndCache: function(element, name, observer, useCapture) {=0A=
    if (!this.observers) this.observers =3D [];=0A=
    if (element.addEventListener) {=0A=
      this.observers.push([element, name, observer, useCapture]);=0A=
      element.addEventListener(name, observer, useCapture);=0A=
    } else if (element.attachEvent) {=0A=
      this.observers.push([element, name, observer, useCapture]);=0A=
      element.attachEvent('on' + name, observer);=0A=
    }=0A=
  },=0A=
=0A=
  unloadCache: function() {=0A=
    if (!Event.observers) return;=0A=
    for (var i =3D 0, length =3D Event.observers.length; i < length; =
i++) {=0A=
      Event.stopObserving.apply(this, Event.observers[i]);=0A=
      Event.observers[i][0] =3D null;=0A=
    }=0A=
    Event.observers =3D false;=0A=
  },=0A=
=0A=
  observe: function(element, name, observer, useCapture) {=0A=
    element =3D $(element);=0A=
    useCapture =3D useCapture || false;=0A=
=0A=
    if (name =3D=3D 'keypress' &&=0A=
        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A=
        || element.attachEvent))=0A=
      name =3D 'keydown';=0A=
=0A=
    Event._observeAndCache(element, name, observer, useCapture);=0A=
  },=0A=
=0A=
  stopObserving: function(element, name, observer, useCapture) {=0A=
    element =3D $(element);=0A=
    useCapture =3D useCapture || false;=0A=
=0A=
    if (name =3D=3D 'keypress' &&=0A=
        (navigator.appVersion.match(/Konqueror|Safari|KHTML/)=0A=
        || element.detachEvent))=0A=
      name =3D 'keydown';=0A=
=0A=
    if (element.removeEventListener) {=0A=
      element.removeEventListener(name, observer, useCapture);=0A=
    } else if (element.detachEvent) {=0A=
      try {=0A=
        element.detachEvent('on' + name, observer);=0A=
      } catch (e) {}=0A=
    }=0A=
  }=0A=
});=0A=
=0A=
/* prevent memory leaks in IE */=0A=
if (navigator.appVersion.match(/\bMSIE\b/))=0A=
  Event.observe(window, 'unload', Event.unloadCache, false);=0A=
var Position =3D {=0A=
  // set to true if needed, warning: firefox performance problems=0A=
  // NOT neeeded for page scrolling, only if draggable contained in=0A=
  // scrollable elements=0A=
  includeScrollOffsets: false,=0A=
=0A=
  // must be called before calling withinIncludingScrolloffset, every =
time the=0A=
  // page is scrolled=0A=
  prepare: function() {=0A=
    this.deltaX =3D  window.pageXOffset=0A=
                || document.documentElement.scrollLeft=0A=
                || document.body.scrollLeft=0A=
                || 0;=0A=
    this.deltaY =3D  window.pageYOffset=0A=
                || document.documentElement.scrollTop=0A=
                || document.body.scrollTop=0A=
                || 0;=0A=
  },=0A=
=0A=
  realOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.scrollTop  || 0;=0A=
      valueL +=3D element.scrollLeft || 0;=0A=
      element =3D element.parentNode;=0A=
    } while (element);=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  cumulativeOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  positionedOffset: function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      element =3D element.offsetParent;=0A=
      if (element) {=0A=
        if(element.tagName=3D=3D'BODY') break;=0A=
        var p =3D Element.getStyle(element, 'position');=0A=
        if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A=
      }=0A=
    } while (element);=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  offsetParent: function(element) {=0A=
    if (element.offsetParent) return element.offsetParent;=0A=
    if (element =3D=3D document.body) return element;=0A=
=0A=
    while ((element =3D element.parentNode) && element !=3D =
document.body)=0A=
      if (Element.getStyle(element, 'position') !=3D 'static')=0A=
        return element;=0A=
=0A=
    return document.body;=0A=
  },=0A=
=0A=
  // caches x/y coordinate pair to use with overlap=0A=
  within: function(element, x, y) {=0A=
    if (this.includeScrollOffsets)=0A=
      return this.withinIncludingScrolloffsets(element, x, y);=0A=
    this.xcomp =3D x;=0A=
    this.ycomp =3D y;=0A=
    this.offset =3D this.cumulativeOffset(element);=0A=
=0A=
    return (y >=3D this.offset[1] &&=0A=
            y <  this.offset[1] + element.offsetHeight &&=0A=
            x >=3D this.offset[0] &&=0A=
            x <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  withinIncludingScrolloffsets: function(element, x, y) {=0A=
    var offsetcache =3D this.realOffset(element);=0A=
=0A=
    this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A=
    this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A=
    this.offset =3D this.cumulativeOffset(element);=0A=
=0A=
    return (this.ycomp >=3D this.offset[1] &&=0A=
            this.ycomp <  this.offset[1] + element.offsetHeight &&=0A=
            this.xcomp >=3D this.offset[0] &&=0A=
            this.xcomp <  this.offset[0] + element.offsetWidth);=0A=
  },=0A=
=0A=
  // within must be called directly before=0A=
  overlap: function(mode, element) {=0A=
    if (!mode) return 0;=0A=
    if (mode =3D=3D 'vertical')=0A=
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /=0A=
        element.offsetHeight;=0A=
    if (mode =3D=3D 'horizontal')=0A=
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /=0A=
        element.offsetWidth;=0A=
  },=0A=
=0A=
  page: function(forElement) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
=0A=
    var element =3D forElement;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
=0A=
      // Safari fix=0A=
      if (element.offsetParent=3D=3Ddocument.body)=0A=
        if (Element.getStyle(element,'position')=3D=3D'absolute') break;=0A=
=0A=
    } while (element =3D element.offsetParent);=0A=
=0A=
    element =3D forElement;=0A=
    do {=0A=
      if (!window.opera || element.tagName=3D=3D'BODY') {=0A=
        valueT -=3D element.scrollTop  || 0;=0A=
        valueL -=3D element.scrollLeft || 0;=0A=
      }=0A=
    } while (element =3D element.parentNode);=0A=
=0A=
    return [valueL, valueT];=0A=
  },=0A=
=0A=
  clone: function(source, target) {=0A=
    var options =3D Object.extend({=0A=
      setLeft:    true,=0A=
      setTop:     true,=0A=
      setWidth:   true,=0A=
      setHeight:  true,=0A=
      offsetTop:  0,=0A=
      offsetLeft: 0=0A=
    }, arguments[2] || {})=0A=
=0A=
    // find page position of source=0A=
    source =3D $(source);=0A=
    var p =3D Position.page(source);=0A=
=0A=
    // find coordinate system to use=0A=
    target =3D $(target);=0A=
    var delta =3D [0, 0];=0A=
    var parent =3D null;=0A=
    // delta [0,0] will do fine with position: fixed elements,=0A=
    // position:absolute needs offsetParent deltas=0A=
    if (Element.getStyle(target,'position') =3D=3D 'absolute') {=0A=
      parent =3D Position.offsetParent(target);=0A=
      delta =3D Position.page(parent);=0A=
    }=0A=
=0A=
    // correct by body offsets (fixes Safari)=0A=
    if (parent =3D=3D document.body) {=0A=
      delta[0] -=3D document.body.offsetLeft;=0A=
      delta[1] -=3D document.body.offsetTop;=0A=
    }=0A=
=0A=
    // set position=0A=
    if(options.setLeft)   target.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';=0A=
    if(options.setTop)    target.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';=0A=
    if(options.setWidth)  target.style.width =3D source.offsetWidth + =
'px';=0A=
    if(options.setHeight) target.style.height =3D source.offsetHeight + =
'px';=0A=
  },=0A=
=0A=
  absolutize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.style.position =3D=3D 'absolute') return;=0A=
    Position.prepare();=0A=
=0A=
    var offsets =3D Position.positionedOffset(element);=0A=
    var top     =3D offsets[1];=0A=
    var left    =3D offsets[0];=0A=
    var width   =3D element.clientWidth;=0A=
    var height  =3D element.clientHeight;=0A=
=0A=
    element._originalLeft   =3D left - parseFloat(element.style.left  || =
0);=0A=
    element._originalTop    =3D top  - parseFloat(element.style.top || =
0);=0A=
    element._originalWidth  =3D element.style.width;=0A=
    element._originalHeight =3D element.style.height;=0A=
=0A=
    element.style.position =3D 'absolute';=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.width  =3D width + 'px';=0A=
    element.style.height =3D height + 'px';=0A=
  },=0A=
=0A=
  relativize: function(element) {=0A=
    element =3D $(element);=0A=
    if (element.style.position =3D=3D 'relative') return;=0A=
    Position.prepare();=0A=
=0A=
    element.style.position =3D 'relative';=0A=
    var top  =3D parseFloat(element.style.top  || 0) - =
(element._originalTop || 0);=0A=
    var left =3D parseFloat(element.style.left || 0) - =
(element._originalLeft || 0);=0A=
=0A=
    element.style.top    =3D top + 'px';=0A=
    element.style.left   =3D left + 'px';=0A=
    element.style.height =3D element._originalHeight;=0A=
    element.style.width  =3D element._originalWidth;=0A=
  }=0A=
}=0A=
=0A=
// Safari returns margins on body which is incorrect if the child is =
absolutely=0A=
// positioned.  For performance reasons, redefine =
Position.cumulativeOffset for=0A=
// KHTML/WebKit only.=0A=
if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {=0A=
  Position.cumulativeOffset =3D function(element) {=0A=
    var valueT =3D 0, valueL =3D 0;=0A=
    do {=0A=
      valueT +=3D element.offsetTop  || 0;=0A=
      valueL +=3D element.offsetLeft || 0;=0A=
      if (element.offsetParent =3D=3D document.body)=0A=
        if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;=0A=
=0A=
      element =3D element.offsetParent;=0A=
    } while (element);=0A=
=0A=
    return [valueL, valueT];=0A=
  }=0A=
}=0A=
=0A=
Element.addMethods();
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/global.js?14

function toggleLayer(whichLayer)
{
	if (document.getElementById)
	{
		// this is the way the standards work
		var style2 =3D document.getElementById(whichLayer).style;
		style2.display =3D style2.display? "":"block";
	}
	else if (document.all)
	{
		// this is the way old msie versions work
		var style2 =3D document.all[whichLayer].style;
		style2.display =3D style2.display? "":"block";
	}
	else if (document.layers)
	{
		// this is the way nn4 works
		var style2 =3D document.layers[whichLayer].style;
		style2.display =3D style2.display? "":"block";
	}
}

function popUp(URL,WIDTH,HEIGHT) {
	day =3D new Date();
	id =3D day.getTime();
	eval("page" + id + " =3D window.open(URL, '" + id + "', =
'toolbar=3D0,scrollbars=3D1,location=3D0,statusbar=3D1,menubar=3D0,resiza=
ble=3D1,width=3D" + WIDTH + ",height=3D" + HEIGHT + "');");
}

function successNotification(ID) {
	new Effect.Highlight(ID, {duration: 1, startcolor: '#ffff99', endcolor: =
'#e7fbe7', restorecolor: '#e7fbe7'});
}
function failureNotification(ID) {
	new Effect.Highlight(ID, {duration: 1, startcolor: '#ff0000', endcolor: =
'#cc0000', restorecolor: '#cc0000'});
}

// used for the 'X Close' button on Add/Edit story success
function slideClosed(ID) {
	new Effect.toggle(ID,'appear', {duration: 1});
}

// used for the 'What does this page do?' tabs
function tabSlide(ID) {
	new Effect.toggle(ID,'slide', {duration: .5});
}
// first used for 'add batch tags' in new photo manager
function fadeIt(ID) {
	new Effect.Appear(ID);
}
// change from one background color to another, permandently
function highlightIt(ID,start,end) {
	new =
Effect.Highlight(ID,{startcolor:start,endcolor:end,restorecolor:end});
}

// This is used for content swapping. Originally setup by Matt C.
function displayBlocks() {
  allNodes =3D document.getElementsByClassName("cp_ajax");
  for(i =3D 0; i < allNodes.length; i++) {
      var url =3D allNodes[i].href;
      allNodes[i].style.display =3D 'none';
      var myAjax =3D new Ajax.Request (url,{method: 'get', onComplete: =
showResponse});
  }
}
function showResponse(originalRequest) {
  for(i =3D 0; i < allNodes.length; i++) {
    $(allNodes[i].title).innerHTML =3D originalRequest.responseText;
  }
}

// Grabs html for tooltips.
function getTooltipText(id) {
	lasttooltipevent =3D 'mouseover';
		var tooltipLocation =3D '/other/tooltips/?q=3D' + id;
		//var tooltipLocation =3D 'media/sample.xml';
		xmlhttp.open("GET",tooltipLocation,true);
		xmlhttp.onreadystatechange=3Dfunction()	{
	 		if (xmlhttp.readyState=3D=3D4) {
			 	if (lasttooltipevent=3D=3D'mouseover') {
				  	var response =3D xmlhttp.responseText;
					overlib(response, STICKY, CAPTION,'just ignore this but keep =
it',CLOSECLICK, ABOVE, RIGHT, OFFSETY, -15, OFFSETX, 19);
				}
	 		}
		}
	xmlhttp.send(null);
}

/*var lasttooltipevent =3D '';*/
/*
 We remember the last tool tip event (Mouseout, mouseover) when deciding =
to open the bubble info.
*/
function closeToolTip(id) {
	lasttooltipevent =3D 'mouseout';
	cClick();
}

// Create Ajax Popup Login Box
function popup(url,ie5url,width,height) {
  // if a "closeable" boolean is passed, track it. It is the 4th item on =
the index of arguments.
  if (arguments.length =3D=3D 5) {
   closeable =3D arguments[4];
  } else {
   closeable =3D 0;
  }
  if (closeable =3D=3D 1) {
	url =3D url + '&closeable=3D1';
  }
  if ((navigator.userAgent.indexOf("MSIE")!=3D-1) && =
(navigator.userAgent.indexOf("Mac")!=3D-1)) {
    document.location.href =3D ie5url;  =20
  } else {
    var win =3D new Dialog.alert({url: url, options: {method: 'get'}}, =
{windowParameters: {className: "popup", width: width, height: height, =
zindex: 1500}, okLabel: "x", buttonClass: "hideClose"});
    // To prevent ugliness, we hide all object tags (flash movies)
    document.getElementsByTagName("object").className =3D "hide";
    document.getElementsByTagName("embed").className =3D "hide";
  }
}

// Create Ajax Popup Login Box
function popup_new(url,ie5url,width,height) {
/*
  // if a "closeable" boolean is passed, track it. It is the 4th item on =
the index of arguments.
  if (arguments.length =3D=3D 5) {
	  closeable =3D arguments[4];
  }=20
  else {
	  closeable =3D 0;
  }
  if (closeable =3D=3D 1) {
	  url =3D url + '&closeable=3D1';
  }

  if ((navigator.userAgent.indexOf("MSIE")!=3D-1) && =
(navigator.userAgent.indexOf("Mac")!=3D-1)) {
    document.location.href =3D ie5url;  =20
  }=20
  else {
	// Windows with an URL as content
	// We want this to not be resizable or draggable so we set those to =
false
	// The dialog2 is the name of the class prefix for use in the style =
sheets
	// Title sets the title of the window (this can be blank for the login =
window)
	y2mcp_win2 =3D new Window('y2mcp_regdialog2', {
								  bottom:0, left:0, width:width, height:height,=20
								  resizable: false, closable: closeable, minimizable: false, =
maximizable: false, draggable: false,=20
								  url: url, showEffectOptions: {duration:0}, hideEffectOptions: =
{duration:0}})
	y2mcp_win2.setDestroyOnClose();
	// We now set the window to show center and set modal to true
	y2mcp_win2.showCenter(true);
  }
  */
}


function getCurrentDateTime(theFormat){
	//
	// returns a nice date/time string for the current timestamp, depending =
on what format you request
	// INPUT:	date format - REQUIREd
	// 			formats:
	//				1 - US short date (mm/dd/yyyy):		01/01/2006
	//				2 - long date: 						Monday, January 1, 2006
	//				3 - long date and time (12-hour): 	Monday, January 1, 2006 9:00 =
AM
	//				4 - time (12-hour): 				9:00 AM
	// OUTPUT:	formatted date/time string
	//
	// NOTES/CAVEATS/WARNINGS:
	//			This function works with a local time string (not GMT/UTC)
	//
	var theReturnVal =3D "";
	var today =3D new Date();
=09
	var arDays =3D new Array('Sunday','Monday','Tuesday','Wednesday',
	'Thursday','Friday','Saturday');

	var arFullMonths =3D new Array('January','February','March','April',
	=
'May','June','July','August','September','October','November','December')=
;

	var Year =3D today.getFullYear();
	var Month =3D leadingZero(today.getMonth()+1);
	var DayName =3D arDays[today.getDay()];
	var MonthFullName =3D arFullMonths[today.getMonth()];
	var Day =3D today.getDate();
	var DayLeading =3D leadingZero(today.getDate());
	var Hours =3D today.getHours();
	var ampm =3D "AM";
=09
	if (Hours =3D=3D 0) Hours =3D 12;
	if (Hours > 11)
		ampm =3D "PM";
	if (Hours > 12)
		Hours -=3D 12;
	var HoursLeading =3D leadingZero(Hours);
	var Minutes =3D leadingZero(today.getMinutes());
	var Seconds =3D leadingZero(today.getSeconds());

	switch(theFormat){
		case 1:
			theReturnVal =3D Month + '/' + Day + '/' + Year;
			break;

		case 2:
			theReturnVal =3D DayName + ', ' + MonthFullName + ' ' + Day + ', ' + =
Year;
			break;

		case 3:
			theReturnVal =3D DayName + ', ' + MonthFullName + ' ' + Day + ', ' + =
Year + ' ' + Hours + ':' + Minutes + ' ' + ampm;
			break;

		case 4:
			theReturnVal =3D Hours + ':' + Minutes + ' ' + ampm;
			break;

		default:
			theReturnVal =3D Month + '/' + Day + '/' + Year;
	}

	return theReturnVal;
}

function leadingZero(nr)
{
	if (nr < 10){=20
		nr =3D "0" + nr;
	}
	return nr;
}

function getCurrentIssue(theFormat) {
	// writes "Dayname Monthname DD, YYYY"
	// within div#cp_current_issue
	//
	// so if you're going to do some styling, use selectors as follows:
	//
	// #cp_current_issue .day {font-weight: bold;}
	//
	// 			formats:
	//				1 - US short date (mm/dd/yyyy):		01/01/2006
	//					spans:							.day/.month/.year
	//				2 - long date: 						Monday January 1, 2006
	//					spans:							.dayname .monthname .day, .year

	var openDiv =3D '<div id=3D"cp_current_issue">';
	var closeDiv =3D '</div>';
	var s =3D "/";
	var n =3D "&nbsp;"

	function writeSpan(className,whichVar) {
		var spanWrap =3D '<span class=3D"' + className + '">' + whichVar + =
'</span>';
		return spanWrap;
	}

	switch(theFormat) {
		case 1:=20
			thisIssue =3D writeSpan("day",currentissueday) + s + =
writeSpan("month",currentissuemonth) + s + =
writeSpan("year",currentissueyear);
			break;
		case 2:
			thisIssue =3D writeSpan("dayname",currentissuedayname) + n + =
writeSpan("monthname",currentissuemonthname) + n + =
writeSpan("day",currentissueday) + "," + n + =
writeSpan("year",currentissueyear);
			break;

		default:=20
			thisIssue =3D writeSpan("day",currentissueday) + s + =
writeSpan("month",currentissuemonth) + s + =
writeSpan("year",currentissueyear);
	}

	thisIssue =3D openDiv + thisIssue + closeDiv
	return thisIssue;
}

/*
pullquote function by Roger Johansson, http://www.456bereastreet.com/
*/
var cp_pullquote =3D {
	init : function() {
	// Check that the browser supports the methods used
		if (!document.getElementById || !document.createElement || =
!document.appendChild) return false;
		var oElement, ocp_pullquote, ocp_pullquoteP, oQuoteContent, i, j;
	// Find all span elements with a class name of cp_pullquote
		var arrElements =3D document.getElementsByTagName('span');
		var oRegExp =3D new RegExp("(^|\\s)cp_pullquote(\\s|$)");
		for (i=3D0; i<arrElements.length; i++) {
	// Save the current element
			oElement =3D arrElements[i];
			if (oRegExp.test(oElement.className)) {
	// Create the blockquote and p elements
				ocp_pullquote =3D document.createElement('blockquote');
				ocp_pullquote.className =3D oElement.className
				ocp_pullquoteP =3D document.createElement('p');
	// Insert the cp_pullquote text
				for(j=3D0;j<oElement.childNodes.length;j++) {
					ocp_pullquoteP.appendChild(oElement.childNodes[j].cloneNode(true));
				}
				ocp_pullquote.appendChild(ocp_pullquoteP);
	// Insert the blockquote element before the span elements parent =
element
				=
oElement.parentNode.parentNode.insertBefore(ocp_pullquote,oElement.parent=
Node);
			}
		}
	}
};

// addEvent function from =
http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
function addEvent(obj, type, fn) {
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent)
	{
		obj["e"+type+fn] =3D fn;
		obj[type+fn] =3D function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}
addEvent(window, 'load', cp_pullquote.init);

// CSS Browser Selector   v0.2.5
// Documentation:         http://rafael.adm.br/css_browser_selector
// License:               http://creativecommons.org/licenses/by/2.5/
// Author:                Rafael Lima (http://rafael.adm.br)
// Contributors:          =
http://rafael.adm.br/css_browser_selector#contributors
var css_browser_selector =3D function() {
	var=20
		ua=3Dnavigator.userAgent.toLowerCase(),
		is=3Dfunction(t){ return ua.indexOf(t) !=3D -1; },
		h=3Ddocument.getElementsByTagName('html')[0],
		b=3D(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie =
ie'+RegExp.$1):is('gecko/')? 'gecko':is('opera/9')?'opera opera9':/opera =
(\d)/.test(ua)?'opera =
opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit =
safari':is('mozilla/')?'gecko':'',
		os=3D(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' =
win':'';
	var c=3Db+os+' js';
	h.className +=3D h.className?' '+c:c;
}();

// Add event to page load =
http://simonwillison.net/2004/May/26/addLoadEvent/
function addLoadEvent(func) {
  var oldonload =3D window.onload;
  if (typeof window.onload !=3D 'function') {
    window.onload =3D func;
  } else {
    window.onload =3D function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function addClass(elem,name) {
	return elem.addClassName(name);
}

function disableSubmitOnClick() {
	var xyz =3D $('submit');
	xyz.onclick =3D buildADiv;
}

function buildADiv() {
	var width =3D $('cp_form').getWidth();
	var height =3D $('cp_form').getHeight();
	var div =3D document.createElement('div');
	div.className =3D "disabledBox";
	div.style.width =3D width;
	div.style.height =3D height;
	$('cp_form').appendChild(div);
}

// Sets other text field input values with the class whatClass to be the =
same as that of elemWithValue=20
function =
setAllElementsValues(elemWithText,elemWithValue,whatTextClass,whatValueCl=
ass) {
	var textField =3D $(elemWithText).value;
	var hiddenID =3D $(elemWithValue).value;
	var fieldGroup =3D document.getElementsByTagName("input");=20
	for (var i=3D0; i < fieldGroup.length; i++) {
		if (fieldGroup[i].hasClassName(whatTextClass)) {
			fieldGroup[i].value =3D textField;
		};
		if (fieldGroup[i].hasClassName(whatValueClass)) {
			fieldGroup[i].value =3D hiddenID;
		};
	};
};
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/network_channel.js

// Search Engine Submit
function sesubmit() {
	a =3D document.cpsearch;				=09

	document.cpsearch.submit();
=09
}

function showhide_search(){
		=09
		var cptoggle =3D =
document.getElementById('net_search_choose_options').className;

		if (cptoggle =3D=3D 'show'){
			=
document.getElementById('net_search_choose_options').className=3D"hide";
			=
document.getElementById('net_search_choose_link').className=3D"unselected=
";
		}
		else{
			=
document.getElementById('net_search_choose_options').className=3D"show";
			=
document.getElementById('net_search_choose_link').className=3D"selected";=

			document.getElementById('net_cp_nav_list').className=3D"hide";
			document.getElementById('net_cp_a').className=3D"unselected";
		}
}

function showhide_links(){
		var cptoggle =3D document.getElementById('net_cp_nav_list').className;

		if (cptoggle =3D=3D 'show'){
			document.getElementById('net_cp_nav_list').className=3D"hide";
			document.getElementById('net_cp_a').className=3D"unselected";
		}
		else{
			document.getElementById('net_cp_nav_list').className=3D"show";
			document.getElementById('net_cp_a').className=3D"selected";
			=
document.getElementById('net_search_choose_options').className=3D"hide";
			=
document.getElementById('net_search_choose_link').className=3D"unselected=
";
		}
}

function change_search_this() {

		var a =3D document.cpsearch;=09
	=09
		=
document.getElementById('net_search_choose_options').className=3D"hide";
		=
document.getElementById('net_search_choose_link').className=3D"unselected=
";
	=09
		a.action=3D'/home/index.cfm';
}

function change_search_google() {
=09
		var a =3D document.cpsearch;
	=09
		=
document.getElementById('net_search_choose_options').className=3D"hide";
		=
document.getElementById('net_search_choose_link').className=3D"unselected=
";
	=09
		a.action=3D'http://www.google.com/custom';
}
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: 7bit
Content-Location: http://media.collegepublisher.com/media/scripts/event_listener.js

function addLoadListener(fn)
{
	if (typeof window.addEventListener != 'undefined')
	{
		window.addEventListener('load', fn, false);
	}
	else if (typeof document.addEventListener != 'undefined')
	{
		document.addEventListener('load', fn, false);
	}
	else if (typeof window.attachEvent != 'undefined')
	{
		window.attachEvent('onload', fn);
	}
	else
	{
		return false;
	}
	
	return true;
};




function attachEventListener(target, eventType, functionRef, capture)
{
    if (typeof target.addEventListener != "undefined")
    {
        target.addEventListener(eventType, functionRef, capture);
    }
    else if (typeof target.attachEvent != "undefined")
    {
        target.attachEvent("on" + eventType, functionRef);
    }
    else
    {
        return false;
    }

    return true;
};
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/resolution.js

checkBrowserWidth();

attachEventListener(window, "resize", checkBrowserWidth, false);




function checkBrowserWidth()
{
	var theWidth =3D getBrowserWidth();
=09
	if (theWidth =3D=3D 0)
	{
		var resolutionCookie =3D =
document.cookie.match(/(^|;)tmib_res_layout[^;]*(;|$)/);

		if (resolutionCookie !=3D null)
		{
			setStylesheet(unescape(resolutionCookie[0].split("=3D")[1]));
		}
	=09
		addLoadListener(checkBrowserWidth);
	=09
		return false;
	}

	if (theWidth < 990)
	{
		setStylesheet("1024 x 768");
		document.cookie =3D "tmib_res_layout=3D" + escape("1024 x 768");
	}
	else
	{
		setStylesheet("");
		document.cookie =3D "tmib_res_layout=3D";
	}
=09
	return true;
};




function getBrowserWidth()
{
	if (window.innerWidth)
	{
		return window.innerWidth;
	}
	else if (document.documentElement && =
document.documentElement.clientWidth !=3D 0)
	{
		return document.documentElement.clientWidth;
	}
	else if (document.body)
	{
		return document.body.clientWidth;
	}
=09
	return 0;
};




function setStylesheet(styleTitle)
{
	var currTag;

	if (document.getElementsByTagName)
	{
		for (var i =3D 0; (currTag =3D =
document.getElementsByTagName("link")[i]); i++)
		{
			if (currTag.getAttribute("rel").indexOf("style") !=3D -1 && =
currTag.getAttribute("title"))
			{
				currTag.disabled =3D true;

				if(currTag.getAttribute("title") =3D=3D styleTitle)
				{
					currTag.disabled =3D false;
				}
			}
		}
	}
=09
	return true;
};
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/scriptaculous.js

// script.aculo.us scriptaculous.js v1.7.0, Fri Jan 19 19:16:36 CET 2007=0A=
=0A=
// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, =
http://mir.aculo.us)=0A=
// =0A=
// Permission is hereby granted, free of charge, to any person obtaining=0A=
// a copy of this software and associated documentation files (the=0A=
// "Software"), to deal in the Software without restriction, including=0A=
// without limitation the rights to use, copy, modify, merge, publish,=0A=
// distribute, sublicense, and/or sell copies of the Software, and to=0A=
// permit persons to whom the Software is furnished to do so, subject to=0A=
// the following conditions:=0A=
// =0A=
// The above copyright notice and this permission notice shall be=0A=
// included in all copies or substantial portions of the Software.=0A=
//=0A=
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,=0A=
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF=0A=
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND=0A=
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE=0A=
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION=0A=
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION=0A=
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.=0A=
//=0A=
// For details, see the script.aculo.us web site: http://script.aculo.us/=0A=
=0A=
var Scriptaculous =3D {=0A=
  Version: '1.7.0',=0A=
  require: function(libraryName) {=0A=
    // inserting via DOM fails in Safari 2.0, so brute force approach=0A=
    document.write('<script type=3D"text/javascript" =
src=3D"'+libraryName+'"></script>');=0A=
  },=0A=
  load: function() {=0A=
    if((typeof Prototype=3D=3D'undefined') || =0A=
       (typeof Element =3D=3D 'undefined') || =0A=
       (typeof Element.Methods=3D=3D'undefined') ||=0A=
       parseFloat(Prototype.Version.split(".")[0] + "." +=0A=
                  Prototype.Version.split(".")[1]) < 1.5)=0A=
       throw("script.aculo.us requires the Prototype JavaScript =
framework >=3D 1.5.0");=0A=
    =0A=
    $A(document.getElementsByTagName("script")).findAll( function(s) {=0A=
      return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))=0A=
    }).each( function(s) {=0A=
      var path =3D s.src.replace(/scriptaculous\.js(\?.*)?$/,'');=0A=
      var includes =3D s.src.match(/\?.*load=3D([a-z,]*)/);=0A=
      (includes ? includes[1] : =
'builder,effects,dragdrop,controls,slider').split(',').each(=0A=
       function(include) { Scriptaculous.require(path+include+'.js') });=0A=
    });=0A=
  }=0A=
}=0A=
=0A=
Scriptaculous.load();
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/window.js

// Copyright (c) 2006 S=C3=A9bastien Gruhier (http://xilinus.com, =
http://itseb.com)=0A=
// =0A=
// Permission is hereby granted, free of charge, to any person obtaining=0A=
// a copy of this software and associated documentation files (the=0A=
// "Software"), to deal in the Software without restriction, including=0A=
// without limitation the rights to use, copy, modify, merge, publish,=0A=
// distribute, sublicense, and/or sell copies of the Software, and to=0A=
// permit persons to whom the Software is furnished to do so, subject to=0A=
// the following conditions:=0A=
// =0A=
// The above copyright notice and this permission notice shall be=0A=
// included in all copies or substantial portions of the Software.=0A=
//=0A=
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,=0A=
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF=0A=
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND=0A=
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE=0A=
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION=0A=
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION=0A=
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.=0A=
//=0A=
// VERSION 0.96.2=0A=
=0A=
var Window =3D Class.create();=0A=
Window.prototype =3D {=0A=
	// Constructor=0A=
	// Available parameters : className, title, minWidth, minHeight, =
maxWidth, maxHeight, width, height, top, left, bottom, right, resizable, =
zIndex, opacity, =0A=
	//                        hideEffect, showEffect, showEffectOptions, =
hideEffectOptions, effectOptions, url, draggable, closable, minimizable, =
maximizable, parent, onload=0A=
	initialize: function(id) {=0A=
	  if ($(id))=0A=
	    alert("Window " + id + " is already register is the DOM!!, be sure =
to use setDestroyOnClose()")=0A=
	    =0A=
		this.hasEffectLib =3D String.prototype.parseColor !=3D null;=0A=
		this.options =3D Object.extend({=0A=
		  className:         "dialog",=0A=
      minWidth:          100,=0A=
      minHeight:         20,=0A=
      resizable:         true,=0A=
      closable:          true,=0A=
      minimizable:       true,=0A=
      maximizable:       true,=0A=
      draggable:         true,=0A=
      userData:          null,=0A=
      showEffect:        (this.hasEffectLib ? Effect.Appear : =
Element.show),=0A=
      hideEffect:        (this.hasEffectLib ? Effect.Fade : =
Element.hide),=0A=
      showEffectOptions: {},=0A=
      hideEffectOptions: {},=0A=
      effectOptions:     null,=0A=
      parent:            document.getElementsByTagName("body").item(0),=0A=
      title:             "&nbsp;",=0A=
      url:               null,=0A=
      onload:            Prototype.emptyFunction,=0A=
      width:             200,=0A=
      height:            300,=0A=
      opacity:           1=0A=
    }, arguments[1] || {});=0A=
    		=0A=
	  if (this.options.effectOptions) {=0A=
	    Object.extend(this.options.hideEffectOptions, =
this.options.effectOptions);=0A=
	    Object.extend(this.options.showEffectOptions, =
this.options.effectOptions);=0A=
	  }=0A=
		if (this.options.hideEffect =3D=3D Element.hide)=0A=
		  this.options.hideEffect =3D function(){ Element.hide(this.element); =
if (this.destroyOnClose) this.destroy(); }.bind(this)=0A=
		  =0A=
		this.element =3D this._createWindow(id);=0A=
		=0A=
		// Bind event listener=0A=
    this.eventMouseDown =3D this._initDrag.bindAsEventListener(this);=0A=
  	this.eventMouseUp   =3D this._endDrag.bindAsEventListener(this);=0A=
  	this.eventMouseMove =3D this._updateDrag.bindAsEventListener(this);=0A=
  	this.eventKeyPress  =3D this._keyPress.bindAsEventListener(this);=0A=
  	this.eventOnLoad    =3D =
this._getWindowBorderSize.bindAsEventListener(this);=0A=
    this.eventMouseDownContent =3D =
this.toFront.bindAsEventListener(this);=0A=
    this.eventResize =3D this._recenter.bindAsEventListener(this);=0A=
 =0A=
		this.topbar =3D $(this.element.id + "_top");=0A=
		this.bottombar =3D $(this.element.id + "_bottom");=0A=
    this.content =3D $(this.element.id + "_content");=0A=
    =0A=
		Event.observe(this.topbar, "mousedown", this.eventMouseDown);=0A=
		Event.observe(this.bottombar, "mousedown", this.eventMouseDown);=0A=
		Event.observe(this.content, "mousedown", this.eventMouseDownContent);=0A=
		Event.observe(window, "load", this.eventOnLoad);=0A=
		Event.observe(window, "resize", this.eventResize);=0A=
  	Event.observe(window, "scroll", this.eventResize);=0A=
  	=0A=
		if (this.options.draggable)  {=0A=
			this.bottombar.addClassName("bottom_draggable");=0A=
			this.topbar.addClassName("top_draggable");=0A=
    }		=0A=
    =0A=
		if (this.options.resizable) {=0A=
			this.sizer =3D $(this.element.id + "_sizer");=0A=
    	Event.observe(this.sizer, "mousedown", this.eventMouseDown);=0A=
    }	=0A=
    =0A=
    this.useLeft =3D null;=0A=
    this.useTop =3D null;=0A=
		if (arguments[1].left !=3D null) {=0A=
			this.element.setStyle({left: parseFloat(arguments[1].left) + 'px'});=0A=
			this.useLeft =3D true;=0A=
		}=0A=
		if (arguments[1].right !=3D null) {=0A=
			this.element.setStyle({right: parseFloat(arguments[1].right) + 'px'});=0A=
			this.useLeft =3D false;=0A=
		}=0A=
    if (this.useLeft =3D=3D null) {=0A=
	    this.element.setStyle({left: "0px"});=0A=
			this.useLeft =3D true;=0A=
    }=0A=
    =0A=
		if (arguments[1].top !=3D null) {=0A=
			this.element.setStyle({top: parseFloat(arguments[1].top) + 'px'});=0A=
			this.useTop =3D true;=0A=
		}=0A=
		if (arguments[1].bottom !=3D null) {=0A=
			this.element.setStyle({bottom: parseFloat(arguments[1].bottom) + =
'px'});			=0A=
			this.useTop =3D false;=0A=
		}=0A=
    if (this.useTop =3D=3D null) {=0A=
			this.element.setStyle({top: "0px"});=0A=
			this.useTop =3D true;=0A=
    }=0A=
=0A=
    this.storedLocation =3D null;=0A=
    =0A=
		this.setOpacity(this.options.opacity);=0A=
		if (this.options.zIndex)=0A=
			this.setZIndex(this.options.zIndex)=0A=
=0A=
		this.destroyOnClose =3D false;=0A=
=0A=
    this._getWindowBorderSize();=0A=
    this.width =3D this.options.width;=0A=
    this.height =3D this.options.height;=0A=
    =0A=
    if (this.width && this.height)=0A=
		  this.setSize(this.options.width, this.options.height);=0A=
		this.setTitle(this.options.title)=0A=
		Windows.register(this);	    =0A=
  },=0A=
  =0A=
	// Destructor=0A=
 	destroy: function() {=0A=
		Windows.notify("onDestroy", this);=0A=
		=0A=
  	Event.stopObserving(this.topbar, "mousedown", this.eventMouseDown);=0A=
  	Event.stopObserving(this.bottombar, "mousedown", this.eventMouseDown);=0A=
  	Event.stopObserving(this.content, "mousedown", =
this.eventMouseDownContent);=0A=
    =0A=
		Event.stopObserving(window, "load", this.eventOnLoad);=0A=
		Event.stopObserving(window, "resize", this.eventResize);=0A=
  	Event.stopObserving(window, "scroll", this.eventResize);=0A=
		=0A=
		Event.stopObserving(this.content, "load", this.options.onload);=0A=
=0A=
		if (this.sizer)=0A=
    		Event.stopObserving(this.sizer, "mousedown", this.eventMouseDown);=0A=
=0A=
		if (this.options.url)=0A=
		  this.content.src =3D null=0A=
=0A=
	 	if(this.iefix) =0A=
			Element.remove(this.iefix);=0A=
=0A=
    Element.remove(this.element);=0A=
		Windows.unregister(this);	    =0A=
	},=0A=
  	=0A=
	// Sets window deleagte, should have functions: "canClose(window)" =0A=
	setDelegate: function(delegate) {=0A=
		this.delegate =3D delegate=0A=
	},=0A=
	=0A=
	// Gets current window delegate=0A=
	getDelegate: function() {=0A=
		return this.delegate;=0A=
	},=0A=
	=0A=
	// Gets window content=0A=
	getContent: function () {=0A=
		return this.content;=0A=
	},=0A=
	=0A=
	// Sets the content with an element id=0A=
	setContent: function(id, autoresize, autoposition) {=0A=
		var d =3D null;=0A=
		var p =3D null;=0A=
=0A=
		if (autoresize) =0A=
			d =3D Element.getDimensions(id);=0A=
		if (autoposition) =0A=
			p =3D Position.cumulativeOffset($(id));=0A=
=0A=
		var content =3D this.getContent()=0A=
		content.appendChild($(id));=0A=
		$(id).show();=0A=
		if (autoresize) =0A=
			this.setSize(d.width, d.height);=0A=
		if (autoposition) =0A=
		  this.setLocation(p[1] - this.heightN, p[0] - this.widthW);	  =0A=
	},=0A=
	=0A=
	setAjaxContent: function(url, options, showCentered, showModal) {=0A=
	  this.showFunction =3D showCentered ? "showCenter" : "show";=0A=
	  this.showModal =3D showModal || false;=0A=
	=0A=
	  if (options =3D=3D null)=0A=
	    options =3D {}  =0A=
	  this.onComplete =3D options.onComplete;=0A=
	  options.onComplete =3D this._setAjaxContent.bind(this);=0A=
	  =0A=
	  new Ajax.Request(url, options);=0A=
	},=0A=
	=0A=
	_setAjaxContent: function(originalRequest) {=0A=
	  this.getContent().innerHTML =3D originalRequest.responseText;=0A=
	  if (this.onComplete)=0A=
	    this.onComplete(originalRequest);=0A=
	  this[this.showFunction](this.showModal)=0A=
	},=0A=
	=0A=
	// Stores position/size in a cookie, by default named with window id=0A=
	setCookie: function(name, expires, path, domain, secure) {=0A=
		name =3D name || this.element.id;=0A=
		this.cookie =3D [name, expires, path, domain, secure];=0A=
		=0A=
		// Get cookie=0A=
		var value =3D WindowUtilities.getCookie(name)=0A=
		// If exists=0A=
		if (value) {=0A=
			var values =3D value.split(',');=0A=
			var x =3D values[0].split(':');=0A=
			var y =3D values[1].split(':');=0A=
=0A=
			var w =3D parseFloat(values[2]), h =3D parseFloat(values[3]);=0A=
			var mini =3D values[4];=0A=
			var maxi =3D values[5];=0A=
=0A=
		  this.setSize(w, h);=0A=
			if (mini =3D=3D "true")=0A=
		    this.doMinimize =3D true; // Minimize will be done at onload =
window event=0A=
			else if (maxi =3D=3D "true")=0A=
			  this.doMaximize =3D true; // Maximize will be done at onload window =
event=0A=
=0A=
			this.useLeft =3D x[0] =3D=3D "l";=0A=
			this.useTop =3D y[0] =3D=3D "t";=0A=
=0A=
			this.element.setStyle(this.useLeft ? {left: x[1]} : {right: x[1]});=0A=
			this.element.setStyle(this.useTop ? {top: y[1]} : {bottom: y[1]});=0A=
		}=0A=
	},=0A=
	=0A=
	// Gets window ID=0A=
	getId: function() {=0A=
		return this.element.id;=0A=
	},=0A=
	=0A=
	// Detroys itself when closing =0A=
	setDestroyOnClose: function() {=0A=
	  Object.extend(this.options.hideEffectOptions, {afterFinish:  =
this.destroy.bind(this)});=0A=
		this.destroyOnClose =3D true;=0A=
	},=0A=
	=0A=
	// initDrag event=0A=
	_initDrag: function(event) {=0A=
    // Get pointer X,Y=0A=
  	this.pointer =3D [Event.pointerX(event), Event.pointerY(event)];=0A=
=0A=
    // Resize=0A=
		if (Event.element(event) =3D=3D this.sizer) {=0A=
			this.doResize =3D true;=0A=
    	this.widthOrg =3D this.width;=0A=
    	this.heightOrg =3D this.height;=0A=
    	this.bottomOrg =3D parseFloat(this.element.getStyle('bottom'));=0A=
    	this.rightOrg =3D parseFloat(this.element.getStyle('right'));=0A=
			Windows.notify("onStartResize", this);=0A=
		}=0A=
    else {=0A=
		  this.doResize =3D false;=0A=
=0A=
  		// Check if click on close button, =0A=
  		var closeButton =3D $(this.getId() + '_close');=0A=
  		if (closeButton && Position.within(closeButton, this.pointer[0], =
this.pointer[1])) =0A=
  			return;=0A=
=0A=
  		this.toFront();=0A=
=0A=
  		if (! this.options.draggable) =0A=
  		  return;=0A=
  		Windows.notify("onStartMove", this);=0A=
    }  	=0A=
  	// Register global event to capture mouseUp and mouseMove=0A=
  	Event.observe(document, "mouseup", this.eventMouseUp, false);=0A=
    Event.observe(document, "mousemove", this.eventMouseMove, false);=0A=
		=0A=
  	// Add an invisible div to keep catching mouse event over iframes=0A=
  	WindowUtilities.disableScreen('__invisible__', '__invisible__');=0A=
=0A=
    // Stop selection while dragging=0A=
    document.body.ondrag =3D function () { return false; };=0A=
    document.body.onselectstart =3D function () { return false; };=0A=
    =0A=
    Event.stop(event);=0A=
  },=0A=
=0A=
  // updateDrag event=0A=
	_updateDrag: function(event) {=0A=
   	var pointer =3D [Event.pointerX(event), Event.pointerY(event)];    =0A=
		var dx =3D pointer[0] - this.pointer[0];=0A=
		var dy =3D pointer[1] - this.pointer[1];=0A=
		=0A=
		// Resize case, update width/height=0A=
		if (this.doResize) {=0A=
			this.setSize(this.widthOrg + dx , this.heightOrg + dy);=0A=
			=0A=
      dx =3D this.width - this.widthOrg=0A=
      dy =3D this.height - this.heightOrg=0A=
			=0A=
		  // Check if it's a right position, update it to keep upper-left =
corner at the same position=0A=
			if (! this.useLeft) =0A=
				this.element.setStyle({right: (this.rightOrg -dx) + 'px'});=0A=
			// Check if it's a bottom position, update it to keep upper-left =
corner at the same position=0A=
			if (! this.useTop) =0A=
				this.element.setStyle({bottom: (this.bottomOrg -dy) + 'px'});=0A=
		}=0A=
		// Move case, update top/left=0A=
		else {=0A=
		  this.pointer =3D pointer;=0A=
  		=0A=
			if (this.useLeft) =0A=
				this.element.setStyle({left: =
parseFloat(this.element.getStyle('left')) + dx + 'px'});=0A=
			else =0A=
				this.element.setStyle({right: =
parseFloat(this.element.getStyle('right')) - dx + 'px'});=0A=
			=0A=
			if (this.useTop) =0A=
				this.element.setStyle({top: parseFloat(this.element.getStyle('top')) =
+ dy + 'px'});=0A=
		  else =0A=
				this.element.setStyle({bottom: =
parseFloat(this.element.getStyle('bottom')) - dy + 'px'});=0A=
		}=0A=
		if (this.iefix) =0A=
			this._fixIEOverlapping(); =0A=
			=0A=
		this._removeStoreLocation();=0A=
    Event.stop(event);=0A=
	},=0A=
=0A=
	 // endDrag callback=0A=
 	_endDrag: function(event) {=0A=
		// Remove temporary div over iframes=0A=
 	  WindowUtilities.enableScreen('__invisible__');=0A=
		=0A=
		if (this.doResize)=0A=
			Windows.notify("onEndResize", this);=0A=
		else=0A=
			Windows.notify("onEndMove", this);=0A=
		=0A=
		// Release event observing=0A=
		Event.stopObserving(document, "mouseup", this.eventMouseUp,false);=0A=
    Event.stopObserving(document, "mousemove", this.eventMouseMove, =
false);=0A=
=0A=
		// Store new location/size if need be=0A=
		this._saveCookie()=0A=
=0A=
    Event.stop(event);=0A=
    =0A=
    // Restore selection=0A=
    document.body.ondrag =3D null;=0A=
    document.body.onselectstart =3D null;=0A=
  },=0A=
=0A=
	_keyPress: function(event) {=0A=
		//Dialog.cancelCallback();=0A=
	},=0A=
	=0A=
	// Creates HTML window code=0A=
	_createWindow: function(id) {=0A=
	  var className =3D this.options.className;=0A=
		var win =3D document.createElement("div");=0A=
		win.setAttribute('id', id);=0A=
		win.className =3D "dialog";=0A=
=0A=
		var content;=0A=
		if (this.options.url)=0A=
			content=3D "<iframe name=3D\"" + id + "_content\"  id=3D\"" + id + =
"_content\" src=3D\"" + this.options.url + "\" scrolling=3D\"no\" =
frameborder=3D\"0\"> </iframe>";=0A=
		else=0A=
			content =3D"<div id=3D\"" + id + "_content\" class=3D\"" +className + =
"_content\"> </div>";=0A=
			=0A=
		var closeDiv =3D this.options.closable ? "<div class=3D'"+ className =
+"_close' id=3D'"+ id +"_close' onmouseup=3D'Windows.close(\""+ id =
+"\")'> </div>" : "";=0A=
		var minDiv =3D this.options.minimizable ? "<div class=3D'"+ className =
+ "_minimize' id=3D'"+ id +"_minimize' =
onmouseup=3D'Windows.minimize(\""+ id +"\")'> </div>" : "";=0A=
		var maxDiv =3D this.options.maximizable ? "<div class=3D'"+ className =
+ "_maximize' id=3D'"+ id +"_maximize' =
onmouseup=3D'Windows.maximize(\""+ id +"\")'> </div>" : "";=0A=
		var seAttributes =3D this.options.resizable ? "class=3D'" + className =
+ "_sizer' id=3D'" + id + "_sizer'" : "class=3D'"  + className + "_se'";=0A=
		=0A=
    win.innerHTML =3D closeDiv + minDiv + maxDiv + "\=0A=
      <table id=3D'"+ id +"_row1' class=3D\"top table_window\">\=0A=
        <tr>\=0A=
          <td class=3D'"+ className +"_nw'>&nbsp;</td>\=0A=
          <td class=3D'"+ className +"_n'><div id=3D'"+ id +"_top' =
class=3D'"+ className +"_title title_window'>"+ this.options.title =
+"</div></td>\=0A=
          <td class=3D'"+ className +"_ne'>&nbsp;</td>\=0A=
        </tr>\=0A=
      </table>\=0A=
      <table id=3D'"+ id +"_row2' class=3D\"mid table_window\">\=0A=
        <tr>\=0A=
          <td class=3D'"+ className +"_w'></td>\=0A=
            <td id=3D'"+ id +"_table_content' class=3D'"+ className =
+"_content' valign=3D'top'>"+ content +"</td>\=0A=
          <td class=3D'"+ className +"_e'></td>\=0A=
        </tr>\=0A=
      </table>\=0A=
        <table id=3D'"+ id +"_row3' class=3D\"bot table_window\">\=0A=
        <tr>\=0A=
          <td class=3D'"+ className +"_sw'>&nbsp;</td>\=0A=
            <td class=3D'"+ className +"_s'><div id=3D'"+ id +"_bottom' =
class=3D'status_bar'>&nbsp;</div></td>\=0A=
            <td " + seAttributes + ">&nbsp;</td>\=0A=
        </tr>\=0A=
      </table>\=0A=
    ";=0A=
    =0A=
		Element.hide(win);=0A=
		this.options.parent.insertBefore(win, this.options.parent.firstChild);=0A=
		Event.observe($(id + "_content"), "load", this.options.onload);=0A=
		return win;=0A=
	},=0A=
	=0A=
	// Sets window location=0A=
	setLocation: function(top, left) {=0A=
	  if (top < 0)=0A=
	    top =3D 0;=0A=
    if (left < 0)=0A=
      left=3D 0=0A=
		this.element.setStyle({top: top + 'px'});=0A=
		this.element.setStyle({left: left + 'px'});=0A=
		this.useLeft =3D true;=0A=
		this.useTop =3D true;=0A=
	},=0A=
		=0A=
	// Gets window size=0A=
	getSize: function() {=0A=
	  return {width: this.width, height: this.height};=0A=
	},=0A=
		=0A=
	// Sets window size=0A=
	setSize: function(width, height) {    =0A=
	  width =3D parseFloat(width);=0A=
	  height =3D parseFloat(height);=0A=
	  =0A=
		// Check min and max size=0A=
		if (width < this.options.minWidth)=0A=
			width =3D this.options.minWidth;=0A=
=0A=
		if (height < this.options.minHeight)=0A=
			height =3D this.options.minHeight;=0A=
			=0A=
		if (this.options. maxHeight && height > this.options. maxHeight)=0A=
			height =3D this.options. maxHeight;=0A=
=0A=
		if (this.options. maxWidth && width > this.options. maxWidth)=0A=
			width =3D this.options. maxWidth;=0A=
=0A=
  	this.width =3D width;=0A=
		this.height =3D height;=0A=
		this.element.setStyle({width: width + this.widthW + this.widthE + =
"px"})=0A=
		this.element.setStyle({height: height  + this.heightN + this.heightS + =
"px"})=0A=
=0A=
		// Update content height=0A=
		var content =3D $(this.element.id + '_content')=0A=
		content.setStyle({height: height  + 'px'});=0A=
		content.setStyle({width: width  + 'px'});=0A=
	},=0A=
	=0A=
	updateHeight: function() {=0A=
    this.setSize(this.width, this.content.scrollHeight)=0A=
	},=0A=
	=0A=
	updateWidth: function() {=0A=
    this.setSize(this.content.scrollWidth, this.height)=0A=
	},=0A=
	=0A=
	// Brings window to front=0A=
	toFront: function() {=0A=
    this.setZIndex(Windows.maxZIndex + 20);=0A=
    Windows.notify("onFocus", this);=0A=
	},=0A=
	=0A=
	// Displays window modal state or not=0A=
	show: function(modal) {=0A=
		if (modal) {=0A=
			WindowUtilities.disableScreen(this.options.className, =
'overlay_modal', this.getId());=0A=
			this.modal =3D true;			=0A=
			this.setZIndex(Windows.maxZIndex + 20);=0A=
			Windows.unsetOverflow(this);=0A=
			Event.observe(document, "keypress", this.eventKeyPress);	      	=0A=
		}=0A=
		=0A=
		// To restore overflow if need be=0A=
		if (this.oldStyle)=0A=
		  this.getContent().setStyle({overflow: this.oldStyle});=0A=
			=0A=
		if (! this.width || !this.height) {=0A=
      var size =3D WindowUtilities._computeSize(this.content.innerHTML, =
this.content.id, this.width, this.height, 0)=0A=
  		if (this.height)=0A=
  		  this.width =3D size + 5=0A=
		  else=0A=
		    this.height =3D size + 5=0A=
		}=0A=
=0A=
		this.setSize(this.width, this.height);=0A=
		if (this.centered)=0A=
		  this._center(this.centerTop, this.centerLeft);		=0A=
		  =0A=
		if (this.options.showEffect !=3D Element.show && =
this.options.showEffectOptions )=0A=
			this.options.showEffect(this.element, =
this.options.showEffectOptions);	=0A=
		else=0A=
			this.options.showEffect(this.element);	=0A=
			=0A=
    this._checkIEOverlapping();=0A=
    Windows.notify("onShow", this);    =0A=
	},=0A=
	=0A=
	// Displays window modal state or not at the center of the page=0A=
	showCenter: function(modal, top, left) {=0A=
    this.centered =3D true;=0A=
    this.centerTop =3D top;=0A=
    this.centerLeft =3D left;=0A=
=0A=
		this.show(modal);=0A=
	},=0A=
	=0A=
	isVisible: function() {=0A=
	  return this.element.visible();=0A=
	},=0A=
	=0A=
	_center: function(top, left) {=0A=
		var windowScroll =3D WindowUtilities.getWindowScroll();    =0A=
		var pageSize =3D WindowUtilities.getPageSize();    =0A=
=0A=
    if (!top)=0A=
      top =3D (pageSize.windowHeight - (this.height + this.heightN + =
this.heightS))/2;=0A=
    top +=3D windowScroll.top=0A=
    =0A=
    if (!left)=0A=
      left =3D (pageSize.windowWidth - (this.width + this.widthW + =
this.widthE))/2;=0A=
    left +=3D windowScroll.left =0A=
    =0A=
    this.setLocation(top, left);=0A=
    this.toFront();=0A=
	},=0A=
	=0A=
	_recenter: function(event) {=0A=
	  if (this.modal) {=0A=
  		var pageSize =3D WindowUtilities.getPageSize();=0A=
  		// set height of Overlay to take up whole page and show=0A=
  		if ($('overlay_modal')) {=0A=
  		  $('overlay_modal').style.height =3D (pageSize.pageHeight + 'px');=0A=
  		  $('overlay_modal').style.width =3D (pageSize.pageWidth + 'px');=0A=
      }		=0A=
  		if (this.centered)=0A=
  		  this._center(this.centerTop, this.centerLeft);		=0A=
	  }=0A=
	},=0A=
	=0A=
	// Hides window=0A=
	hide: function() {=0A=
		if (this.modal) {=0A=
			WindowUtilities.enableScreen();=0A=
			Windows.resetOverflow();=0A=
			Event.stopObserving(document, "keypress", this.eventKeyPress);			=0A=
		}=0A=
		// To avoid bug on scrolling bar=0A=
	  this.oldStyle =3D this.getContent().getStyle('overflow') || "auto"=0A=
		this.getContent().setStyle({overflow: "hidden"});=0A=
=0A=
		this.options.hideEffect(this.element, this.options.hideEffectOptions);	=0A=
=0A=
	 	if(this.iefix) =0A=
			this.iefix.hide();=0A=
		Windows.notify("onHide", this);=0A=
	},=0A=
=0A=
  minimize: function() {=0A=
    var r2 =3D $(this.getId() + "_row2");=0A=
    var dh =3D r2.getDimensions().height;=0A=
    =0A=
    if (r2.visible()) {=0A=
      var h  =3D this.element.getHeight() - dh=0A=
      r2.hide()=0A=
  		this.element.setStyle({height: h + "px"})=0A=
  		if (! this.useTop) {=0A=
  		  var bottom =3D parseFloat(this.element.getStyle('bottom'));=0A=
			  this.element.setStyle({bottom: (bottom + dh) + 'px'});=0A=
		  }=0A=
    } =0A=
    else {=0A=
      var h  =3D this.element.getHeight() + dh;=0A=
      this.element.setStyle({height: h + "px"})=0A=
  		if (! this.useTop) {=0A=
  		  var bottom =3D parseFloat(this.element.getStyle('bottom'));=0A=
			  this.element.setStyle({bottom: (bottom - dh) + 'px'});=0A=
		  }=0A=
      r2.show();=0A=
  		=0A=
      this.toFront();=0A=
    }=0A=
    Windows.notify("onMinimize", this);=0A=
		=0A=
    // Store new location/size if need be=0A=
		this._saveCookie()=0A=
  },=0A=
  =0A=
  maximize: function() {=0A=
    if (this.storedLocation !=3D null) {=0A=
      this._restoreLocation();=0A=
      if(this.iefix) =0A=
  			this.iefix.hide();=0A=
    }=0A=
    else {=0A=
      this._storeLocation();=0A=
      Windows.unsetOverflow(this);=0A=
      =0A=
      var windowScroll =3D WindowUtilities.getWindowScroll();=0A=
  		var pageSize =3D WindowUtilities.getPageSize();    =0A=
=0A=
			this.element.setStyle(this.useLeft ? {left: windowScroll.left} : =
{right: windowScroll.left});=0A=
  		this.element.setStyle(this.useTop ? {top: windowScroll.top} : =
{bottom: windowScroll.top});=0A=
=0A=
      this.setSize(pageSize.windowWidth - this.widthW - this.widthE, =
pageSize.windowHeight - this.heightN - this.heightS)=0A=
      this.toFront();=0A=
      if (this.iefix) =0A=
  			this._fixIEOverlapping(); =0A=
    }=0A=
		Windows.notify("onMaximize", this);=0A=
=0A=
		// Store new location/size if need be=0A=
		this._saveCookie()=0A=
  },=0A=
  =0A=
  isMinimized: function() {=0A=
    var r2 =3D $(this.getId() + "_row2");=0A=
    return !r2.visible();=0A=
  },=0A=
  =0A=
  isMaximized: function() {=0A=
    return (this.storedLocation !=3D null);=0A=
  },=0A=
  =0A=
	setOpacity: function(opacity) {=0A=
		if (Element.setOpacity)=0A=
			Element.setOpacity(this.element, opacity);=0A=
	},=0A=
	=0A=
	setZIndex: function(zindex) {=0A=
		this.element.setStyle({zIndex: zindex});=0A=
		Windows.updateZindex(zindex, this);=0A=
	},=0A=
=0A=
  setTitle: function(newTitle) {=0A=
  	if (!newTitle || newTitle =3D=3D "") =0A=
  	  newTitle =3D "&nbsp;";=0A=
  	  =0A=
  	Element.update(this.element.id + '_top', newTitle);=0A=
  },=0A=
=0A=
	setStatusBar: function(element) {=0A=
		var statusBar =3D $(this.getId() + "_bottom");=0A=
=0A=
    if (typeof(element) =3D=3D "object") {=0A=
      if (this.bottombar.firstChild)=0A=
        this.bottombar.replaceChild(element, this.bottombar.firstChild);=0A=
      else=0A=
        this.bottombar.appendChild(element);=0A=
    }=0A=
    else=0A=
		  this.bottombar.innerHTML =3D element;=0A=
	},=0A=
=0A=
	_checkIEOverlapping: function() {=0A=
    if(!this.iefix && (navigator.appVersion.indexOf('MSIE')>0) && =
(navigator.userAgent.indexOf('Opera')<0) && =
(this.element.getStyle('position')=3D=3D'absolute')) {=0A=
        new Insertion.After(this.element.id, '<iframe id=3D"' + =
this.element.id + '_iefix" '+ =
'style=3D"display:none;position:absolute;filter:progid:DXImageTransform.M=
icrosoft.Alpha(opacity=3D0);" ' + 'src=3D"javascript:false;" =
scrolling=3D"no" frameborder=3D"0" ></iframe>');=0A=
        this.iefix =3D $(this.element.id+'_iefix');=0A=
    }=0A=
    if(this.iefix) =0A=
			setTimeout(this._fixIEOverlapping.bind(this), 50);=0A=
	},=0A=
=0A=
	_fixIEOverlapping: function() {=0A=
	    Position.clone(this.element, this.iefix);=0A=
	    this.iefix.style.zIndex =3D this.element.style.zIndex - 1;=0A=
	    this.iefix.show();=0A=
	},=0A=
	=0A=
	_getWindowBorderSize: function(event) {=0A=
    // Hack to get real window border size!!=0A=
    var div =3D this._createHiddenDiv(this.options.className + "_n")=0A=
		this.heightN =3D Element.getDimensions(div).height;		=0A=
		div.parentNode.removeChild(div)=0A=
=0A=
    var div =3D this._createHiddenDiv(this.options.className + "_s")=0A=
		this.heightS =3D Element.getDimensions(div).height;		=0A=
		div.parentNode.removeChild(div)=0A=
=0A=
    var div =3D this._createHiddenDiv(this.options.className + "_e")=0A=
		this.widthE =3D Element.getDimensions(div).width;		=0A=
		div.parentNode.removeChild(div)=0A=
=0A=
    var div =3D this._createHiddenDiv(this.options.className + "_w")=0A=
		this.widthW =3D Element.getDimensions(div).width;=0A=
		div.parentNode.removeChild(div);=0A=
		// Safari size fix=0A=
		if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A=
		  this.setSize(this.width, this.height);=0A=
		if (this.doMaximize)=0A=
		  this.maximize();=0A=
		if (this.doMinimize)=0A=
		  this.minimize();=0A=
  },=0A=
 =0A=
  _createHiddenDiv: function(className) {=0A=
    var objBody =3D document.getElementsByTagName("body").item(0);=0A=
    var win =3D document.createElement("div");=0A=
		win.setAttribute('id', this.element.id+ "_tmp");=0A=
		win.className =3D className;=0A=
		win.style.display =3D 'none'=0A=
		win.innerHTML =3D ''=0A=
		objBody.insertBefore(win, objBody.firstChild)   =0A=
		return win=0A=
  },=0A=
  =0A=
	_storeLocation: function() {=0A=
	  if (this.storedLocation =3D=3D null) {=0A=
	    this.storedLocation =3D {useTop: this.useTop, useLeft: =
this.useLeft, =0A=
	                           top: this.element.getStyle('top'), bottom: =
this.element.getStyle('bottom'),=0A=
	                           left: this.element.getStyle('left'), right: =
this.element.getStyle('right'),=0A=
	                           width: this.width, height: this.height };=0A=
	  }=0A=
	},=0A=
	=0A=
  _restoreLocation: function() {=0A=
    if (this.storedLocation !=3D null) {=0A=
      this.useLeft =3D this.storedLocation.useLeft;=0A=
      this.useTop =3D this.storedLocation.useTop;=0A=
      =0A=
      this.element.setStyle(this.useLeft ? {left: =
this.storedLocation.left} : {right: this.storedLocation.right});=0A=
  		this.element.setStyle(this.useTop ? {top: this.storedLocation.top} : =
{bottom: this.storedLocation.bottom});=0A=
		  this.setSize(this.storedLocation.width, this.storedLocation.height);=0A=
      =0A=
		  Windows.resetOverflow();=0A=
		  this._removeStoreLocation();=0A=
    }=0A=
  },=0A=
  =0A=
  _removeStoreLocation: function() {=0A=
    this.storedLocation =3D null;=0A=
  },=0A=
  =0A=
  _saveCookie: function() {=0A=
    if (this.cookie) {=0A=
  		var value =3D "";=0A=
  		if (this.useLeft)=0A=
  			value +=3D "l:" +  (this.storedLocation ? this.storedLocation.left =
: this.element.getStyle('left'))=0A=
  		else=0A=
  			value +=3D "r:" + (this.storedLocation ? this.storedLocation.right =
: this.element.getStyle('right'))=0A=
  		if (this.useTop)=0A=
  			value +=3D ",t:" + (this.storedLocation ? this.storedLocation.top : =
this.element.getStyle('top'))=0A=
  		else=0A=
  			value +=3D ",b:" + (this.storedLocation ? =
this.storedLocation.bottom :this.element.getStyle('bottom'))=0A=
  			=0A=
  		value +=3D "," + (this.storedLocation ? this.storedLocation.width : =
this.width);=0A=
  		value +=3D "," + (this.storedLocation ? this.storedLocation.height : =
this.height);=0A=
  		value +=3D "," + this.isMinimized();=0A=
  		value +=3D "," + this.isMaximized();=0A=
  		WindowUtilities.setCookie(value, this.cookie)=0A=
    }=0A=
  }=0A=
};=0A=
=0A=
// Windows containers, register all page windows=0A=
var Windows =3D {=0A=
  windows: [],=0A=
  observers: [],=0A=
  focusedWindow: null,=0A=
  maxZIndex: 0,=0A=
=0A=
  addObserver: function(observer) {=0A=
    this.removeObserver(observer);=0A=
    this.observers.push(observer);=0A=
  },=0A=
  =0A=
  removeObserver: function(observer) {  =0A=
    this.observers =3D this.observers.reject( function(o) { return =
o=3D=3Dobserver });=0A=
  },=0A=
  =0A=
  notify: function(eventName, win) {  //  onStartResize(), =
onEndResize(), onStartMove(), onEndMove(), onClose(), onDestroy(), =
onMinimize(), onMaximize(), onHide(), onShow(), onFocus()=0A=
    this.observers.each( function(o) {if(o[eventName]) =
o[eventName](eventName, win);});=0A=
  },=0A=
=0A=
  // Gets window from its id=0A=
  getWindow: function(id) {=0A=
	  return this.windows.detect(function(d) { return d.getId() =3D=3Did });=0A=
  },=0A=
=0A=
  // Gets the last focused window=0A=
  getFocusedWindow: function() {=0A=
	  return this.focusedWindow;=0A=
  },=0A=
=0A=
  // Registers a new window (called by Windows constructor)=0A=
  register: function(win) {=0A=
    this.windows.push(win);=0A=
  },=0A=
  =0A=
  // Unregisters a window (called by Windows destructor)=0A=
  unregister: function(win) {=0A=
    this.windows =3D this.windows.reject(function(d) { return d=3D=3Dwin =
});=0A=
  }, =0A=
=0A=
  // Closes a window with its id=0A=
  close: function(id) {=0A=
  	var win =3D this.getWindow(id);=0A=
  	// Asks delegate if exists=0A=
    if (win) {=0A=
	  	if (win.getDelegate() && ! win.getDelegate().canClose(win)) =0A=
	  		return;=0A=
	      if ($(id + "_close"))=0A=
	        $(id + "_close").onclick =3D null;=0A=
	      if ($(id + "_minimize"))=0A=
	        $(id + "_minimize").onclick =3D null;	        =0A=
	      if ($(id + "_maximize"))=0A=
	        $(id + "_maximize").onclick =3D null;	      =0A=
	      =0A=
  			this.notify("onClose", win);=0A=
  			win.hide();=0A=
  	}=0A=
  },=0A=
  =0A=
  // Closes all windows=0A=
  closeAll: function() {  =0A=
    this.windows.each( function(w) {Windows.close(w.getId())} );=0A=
  },=0A=
  =0A=
  // Minimizes a window with its id=0A=
  minimize: function(id) {=0A=
  	var win =3D this.getWindow(id)=0A=
  	if (win)=0A=
  	  win.minimize();=0A=
  },=0A=
  =0A=
  // Maximizes a window with its id=0A=
  maximize: function(id) {=0A=
  	var win =3D this.getWindow(id)=0A=
  	if (win)=0A=
  	  win.maximize();=0A=
  },=0A=
  =0A=
  unsetOverflow: function(except) {		=0A=
  	this.windows.each(function(d) { d.oldOverflow =3D =
d.getContent().getStyle("overflow") || "auto" ; =
d.getContent().setStyle({overflow: "hidden"}) });=0A=
  	if (except && except.oldOverflow)=0A=
  		except.getContent().setStyle({overflow: except.oldOverflow});=0A=
  },=0A=
=0A=
  resetOverflow: function() {=0A=
	  this.windows.each(function(d) { if (d.oldOverflow) =
d.getContent().setStyle({overflow: d.oldOverflow}) });=0A=
  },=0A=
=0A=
  updateZindex: function(zindex, win) {=0A=
  	if (zindex > this.maxZIndex)=0A=
  		this.maxZIndex =3D zindex;=0A=
    this.focusedWindow =3D win;=0A=
  }=0A=
};=0A=
=0A=
var Dialog =3D {=0A=
  dialogId: null,=0A=
 	win: null,=0A=
  onCompleteFunc: null,=0A=
  callFunc: null, =0A=
  parameters: null, =0A=
    =0A=
	confirm: function(content, parameters) {=0A=
	  // Get Ajax return before=0A=
	  if (typeof content !=3D "string") {=0A=
	    Dialog._runAjaxRequest(content, parameters, Dialog.confirm);=0A=
	    return =0A=
	  }=0A=
	  =0A=
	  parameters =3D parameters || {};=0A=
		var okLabel =3D parameters.okLabel ? parameters.okLabel : "Ok";=0A=
		var cancelLabel =3D parameters.cancelLabel ? parameters.cancelLabel : =
"Cancel";=0A=
=0A=
		var windowParam =3D parameters.windowParameters || {};=0A=
		windowParam.className =3D windowParam.className || "alert";=0A=
=0A=
    okButtonClass =3D "class =3D'" + (parameters.buttonClass ? =
parameters.buttonClass + " " : "") + " ok_button'" =0A=
    cancelButtonClass =3D "class =3D'" + (parameters.buttonClass ? =
parameters.buttonClass + " " : "") + " cancel_button'" =0A=
		var content =3D "\=0A=
			<div class=3D'" + windowParam.className + "_message'>" + content  + =
"</div>\=0A=
				<div class=3D'" + windowParam.className + "_buttons'>\=0A=
					<input type=3D'button' value=3D'" + okLabel + "' =
onclick=3D'Dialog.okCallback()'" + okButtonClass + "/>\=0A=
					<input type=3D'button' value=3D'" + cancelLabel + "' =
onclick=3D'Dialog.cancelCallback()' " + cancelButtonClass + "/>\=0A=
				</div>\=0A=
		";=0A=
	  this._openDialog(content, parameters)=0A=
	  return this.win=0A=
	},=0A=
	=0A=
	alert: function(content, parameters) {=0A=
	  // Get Ajax return before=0A=
	  if (typeof content !=3D "string") {=0A=
	    Dialog._runAjaxRequest(content, parameters, Dialog.alert);=0A=
	    return =0A=
	  }=0A=
	  =0A=
	  parameters =3D parameters || {};=0A=
		var okLabel =3D parameters.okLabel ? parameters.okLabel : "Ok";=0A=
=0A=
		var windowParam =3D parameters.windowParameters || {};=0A=
		windowParam.className =3D windowParam.className || "alert";=0A=
=0A=
    okButtonClass =3D "class =3D'" + (parameters.buttonClass ? =
parameters.buttonClass + " " : "") + " ok_button'" =0A=
		var content =3D "\=0A=
			<div class=3D'" + windowParam.className + "_message'>" + content  + =
"</div>\=0A=
				<div class=3D'" + windowParam.className + "_buttons'>\=0A=
					<input type=3D'button' value=3D'" + okLabel + "' =
onclick=3D'Dialog.okCallback()'" + okButtonClass + "/>\=0A=
				</div>";=0A=
		return this._openDialog(content, parameters)=0A=
	},=0A=
	=0A=
	info: function(content, parameters) {   =0A=
	  // Get Ajax return before=0A=
	  if (typeof content !=3D "string") {=0A=
	    Dialog._runAjaxRequest(content, parameters, Dialog.info);=0A=
	    return =0A=
	  }=0A=
	   =0A=
	  parameters =3D parameters || {};=0A=
	  parameters.windowParameters =3D parameters.windowParameters || {};=0A=
	  =0A=
		var className =3D parameters.windowParameters.className || "alert";=0A=
=0A=
		var content =3D "<div id=3D'modal_dialog_message' class=3D'" + =
className + "_message'>" + content  + "</div>";=0A=
		if (parameters.showProgress)=0A=
		  content +=3D "<div id=3D'modal_dialog_progress' class=3D'" + =
className + "_progress'>	</div>";=0A=
=0A=
		parameters.windowParameters.ok =3D null;=0A=
		parameters.windowParameters.cancel =3D null;=0A=
    parameters.windowParameters.className =3D className;=0A=
		=0A=
		return this._openDialog(content, parameters)=0A=
	},=0A=
	=0A=
	setInfoMessage: function(message) {=0A=
		$('modal_dialog_message').update(message);=0A=
	},=0A=
	=0A=
	closeInfo: function() {=0A=
		Windows.close(this.dialogId);=0A=
	},=0A=
	=0A=
	_openDialog: function(content, parameters) {=0A=
		// remove old dialog=0A=
		if (this.win) =0A=
			this.win.destroy();=0A=
=0A=
    if (! parameters.windowParameters.height && ! =
parameters.windowParameters.width) {=0A=
      parameters.windowParameters.width =3D =
WindowUtilities.getPageSize().pageWidth / 2;=0A=
    }=0A=
    this.dialogId =3D parameters.id ? parameters.id : 'modal_dialog'=0A=
=0A=
    // compute height or width if need be=0A=
    if (! parameters.windowParameters.height || ! =
parameters.windowParameters.width) {=0A=
      var size =3D WindowUtilities._computeSize(content, this.dialogId, =
parameters.windowParameters.width, parameters.windowParameters.height)=0A=
  		if (parameters.windowParameters.height)=0A=
  		  parameters.windowParameters.width =3D size + 5=0A=
		  else=0A=
		    parameters.windowParameters.height =3D size + 5=0A=
    }=0A=
		var windowParam =3D parameters && parameters.windowParameters ? =
parameters.windowParameters : {};=0A=
		windowParam.resizable =3D windowParam.resizable || false;=0A=
		=0A=
		windowParam.effectOptions =3D windowParam.effectOptions || {duration: =
1};=0A=
    windowParam.minimizable =3D false;=0A=
    windowParam.maximizable =3D false;=0A=
    windowParam.closable =3D false;=0A=
		this.win =3D new Window(this.dialogId, windowParam);=0A=
		this.win.getContent().innerHTML =3D content;=0A=
  	this.win.showCenter(true, parameters.top, parameters.left);	=0A=
		  =0A=
		this.win.cancelCallback =3D parameters.cancel;=0A=
		this.win.okCallback =3D parameters.ok;=0A=
		=0A=
		return this.win;		=0A=
	},=0A=
	=0A=
	_getAjaxContent: function(originalRequest)  {=0A=
      Dialog.callFunc(originalRequest.responseText, Dialog.parameters)=0A=
  },=0A=
  =0A=
  _runAjaxRequest: function(message, parameters, callFunc) {=0A=
    if (message.options =3D=3D null)=0A=
	    message.options =3D{}  =0A=
	  Dialog.onCompleteFunc =3D message.options.onComplete;=0A=
    Dialog.parameters =3D parameters;=0A=
    Dialog.callFunc =3D callFunc;=0A=
    =0A=
	  message.options.onComplete =3D Dialog._getAjaxContent;=0A=
    new Ajax.Request(message.url, message.options);=0A=
  },=0A=
  =0A=
	okCallback: function() {=0A=
		if (!this.win.okCallback || this.win.okCallback(this.win))=0A=
	    this.win.hide();=0A=
	},=0A=
=0A=
	cancelCallback: function() {=0A=
		this.win.hide();=0A=
		if (this.win.cancelCallback)=0A=
			this.win.cancelCallback(this.win);=0A=
	}=0A=
}=0A=
/*=0A=
	Based on Lightbox JS: Fullsize Image Overlays =0A=
	by Lokesh Dhakar - http://www.huddletogether.com=0A=
=0A=
	For more information on this script, visit:=0A=
	http://huddletogether.com/projects/lightbox/=0A=
=0A=
	Licensed under the Creative Commons Attribution 2.5 License - =
http://creativecommons.org/licenses/by/2.5/=0A=
	(basically, do anything you want, just leave my name and link)=0A=
*/=0A=
=0A=
var isIE =3D navigator.appVersion.match(/MSIE/) =3D=3D "MSIE";=0A=
=0A=
var WindowUtilities =3D {=0A=
  // From script.aculo.us=0A=
  getWindowScroll: function() {=0A=
    var w =3D window;=0A=
      var T, L, W, H;=0A=
      with (w.document) {=0A=
        if (w.document.documentElement && documentElement.scrollTop) {=0A=
          T =3D documentElement.scrollTop;=0A=
          L =3D documentElement.scrollLeft;=0A=
        } else if (w.document.body) {=0A=
          T =3D body.scrollTop;=0A=
          L =3D body.scrollLeft;=0A=
        }=0A=
        if (w.innerWidth) {=0A=
          W =3D w.innerWidth;=0A=
          H =3D w.innerHeight;=0A=
        } else if (w.document.documentElement && =
documentElement.clientWidth) {=0A=
          W =3D documentElement.clientWidth;=0A=
          H =3D documentElement.clientHeight;=0A=
        } else {=0A=
          W =3D body.offsetWidth;=0A=
          H =3D body.offsetHeight=0A=
        }=0A=
      }=0A=
      return { top: T, left: L, width: W, height: H };=0A=
    =0A=
  }, =0A=
  //=0A=
  // getPageSize()=0A=
  // Returns array with page width, height and window width, height=0A=
  // Core code from - quirksmode.org=0A=
  // Edit for Firefox by pHaez=0A=
  //=0A=
  getPageSize: function(){=0A=
  	var xScroll, yScroll;=0A=
=0A=
  	if (window.innerHeight && window.scrollMaxY) {	=0A=
  		xScroll =3D document.body.scrollWidth;=0A=
  		yScroll =3D window.innerHeight + window.scrollMaxY;=0A=
  	} else if (document.body.scrollHeight > document.body.offsetHeight){ =
// all but Explorer Mac=0A=
  		xScroll =3D document.body.scrollWidth;=0A=
  		yScroll =3D document.body.scrollHeight;=0A=
  	} else { // Explorer Mac...would also work in Explorer 6 Strict, =
Mozilla and Safari=0A=
  		xScroll =3D document.body.offsetWidth;=0A=
  		yScroll =3D document.body.offsetHeight;=0A=
  	}=0A=
=0A=
  	var windowWidth, windowHeight;=0A=
=0A=
  	if (self.innerHeight) {	// all except Explorer=0A=
  		windowWidth =3D self.innerWidth;=0A=
  		windowHeight =3D self.innerHeight;=0A=
  	} else if (document.documentElement && =
document.documentElement.clientHeight) { // Explorer 6 Strict Mode=0A=
  		windowWidth =3D document.documentElement.clientWidth;=0A=
  		windowHeight =3D document.documentElement.clientHeight;=0A=
  	} else if (document.body) { // other Explorers=0A=
  		windowWidth =3D document.body.clientWidth;=0A=
  		windowHeight =3D document.body.clientHeight;=0A=
  	}	=0A=
  	var pageHeight, pageWidth;=0A=
=0A=
  	// for small pages with total height less then height of the viewport=0A=
  	if(yScroll < windowHeight){=0A=
  		pageHeight =3D windowHeight;=0A=
  	} else { =0A=
  		pageHeight =3D yScroll;=0A=
  	}=0A=
=0A=
  	// for small pages with total width less then width of the viewport=0A=
  	if(xScroll < windowWidth){	=0A=
  		pageWidth =3D windowWidth;=0A=
  	} else {=0A=
  		pageWidth =3D xScroll;=0A=
  	}=0A=
=0A=
  	return {pageWidth: pageWidth ,pageHeight: pageHeight , windowWidth: =
windowWidth, windowHeight: windowHeight};=0A=
  },=0A=
=0A=
 	disableScreen: function(className, overlayId, contentId) {=0A=
		WindowUtilities.initLightbox(overlayId, className);=0A=
		var objBody =3D document.getElementsByTagName("body").item(0);=0A=
=0A=
		// prep objects=0A=
	 	var objOverlay =3D $(overlayId);=0A=
=0A=
		var pageSize =3D WindowUtilities.getPageSize();=0A=
=0A=
		// Hide select boxes as they will 'peek' through the image in IE=0A=
		if (contentId && isIE) {=0A=
      $$('select').each(function(element) {element.style.visibility =3D =
"hidden"});=0A=
	    $$('#'+contentId+' select').each(function(element) =
{element.style.visibility =3D "visible"});=0A=
		}	=0A=
	=0A=
		// set height of Overlay to take up whole page and show=0A=
		objOverlay.style.height =3D (pageSize.pageHeight + 'px');=0A=
		objOverlay.style.width =3D (pageSize.windowWidth + 'px');=0A=
		objOverlay.style.display =3D 'block';	=0A=
	},=0A=
=0A=
 	enableScreen: function(id) {=0A=
 	  id =3D id || 'overlay_modal'=0A=
	 	var objOverlay =3D  $(id);=0A=
		if (objOverlay) {=0A=
			// hide lightbox and overlay=0A=
			objOverlay.style.display =3D 'none';=0A=
=0A=
			// make select boxes visible=0A=
			if (isIE) {=0A=
        $$('select').each(function(element) {element.style.visibility =
=3D "visible"});=0A=
			}=0A=
			objOverlay.parentNode.removeChild(objOverlay);=0A=
		}=0A=
	},=0A=
=0A=
	// initLightbox()=0A=
	// Function runs on window load, going through link tags looking for =
rel=3D"lightbox".=0A=
	// These links receive onclick events that enable the lightbox display =
for their targets.=0A=
	// The function also inserts html markup at the top of the page which =
will be used as a=0A=
	// container for the overlay pattern and the inline image.=0A=
	initLightbox: function(id, className) {=0A=
		// Already done, just update zIndex=0A=
		if ($(id)) {=0A=
			Element.setStyle(id, {zIndex: Windows.maxZIndex + 10});=0A=
		}=0A=
		// create overlay div and hardcode some functional styles (aesthetic =
styles are in CSS file)=0A=
		else {=0A=
			var objBody =3D document.getElementsByTagName("body").item(0);=0A=
			var objOverlay =3D document.createElement("div");=0A=
			objOverlay.setAttribute('id', id);=0A=
			objOverlay.className =3D "overlay_" + className=0A=
			objOverlay.style.display =3D 'none';=0A=
			objOverlay.style.position =3D 'absolute';=0A=
			objOverlay.style.top =3D '0';=0A=
			objOverlay.style.left =3D '0';=0A=
			objOverlay.style.zIndex =3D Windows.maxZIndex + 10;=0A=
		 	objOverlay.style.width =3D '100%';=0A=
			objBody.insertBefore(objOverlay, objBody.firstChild);=0A=
		}=0A=
	},=0A=
	=0A=
	setCookie: function(value, parameters) {=0A=
    document.cookie=3D parameters[0] + "=3D" + escape(value) +=0A=
      ((parameters[1]) ? "; expires=3D" + parameters[1].toGMTString() : =
"") +=0A=
      ((parameters[2]) ? "; path=3D" + parameters[2] : "") +=0A=
      ((parameters[3]) ? "; domain=3D" + parameters[3] : "") +=0A=
      ((parameters[4]) ? "; secure" : "");=0A=
  },=0A=
=0A=
  getCookie: function(name) {=0A=
    var dc =3D document.cookie;=0A=
    var prefix =3D name + "=3D";=0A=
    var begin =3D dc.indexOf("; " + prefix);=0A=
    if (begin =3D=3D -1) {=0A=
      begin =3D dc.indexOf(prefix);=0A=
      if (begin !=3D 0) return null;=0A=
    } else {=0A=
      begin +=3D 2;=0A=
    }=0A=
    var end =3D document.cookie.indexOf(";", begin);=0A=
    if (end =3D=3D -1) {=0A=
      end =3D dc.length;=0A=
    }=0A=
    return unescape(dc.substring(begin + prefix.length, end));=0A=
  },=0A=
  =0A=
  _computeSize: function(content, id, width, height, margin) {=0A=
    if (margin =3D=3D null)=0A=
      margin =3D 5;=0A=
=0A=
    var objBody =3D document.getElementsByTagName("body").item(0);=0A=
  	var tmpObj =3D document.createElement("div");=0A=
  	tmpObj.setAttribute('id', id);=0A=
	=0A=
  	if (height)=0A=
  	  tmpObj.style.height =3D height + "px"=0A=
    else=0A=
      tmpObj.style.width =3D width + "px"=0A=
  =0A=
  	tmpObj.style.position =3D 'absolute';=0A=
  	tmpObj.style.top =3D '0';=0A=
  	tmpObj.style.left =3D '0';=0A=
    tmpObj.style.display =3D 'none';=0A=
=0A=
    tmpObj.innerHTML =3D content;=0A=
  	objBody.insertBefore(tmpObj, objBody.firstChild);=0A=
  	=0A=
  	var size;=0A=
  	if (height)=0A=
  	  size =3D $(id).getDimensions().width + margin;=0A=
    else=0A=
      size =3D $(id).getDimensions().height + margin;=0A=
  	objBody.removeChild(tmpObj);=0A=
    =0A=
  	return size;=0A=
  }	=0A=
}=0A=
=0A=
=0A=

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: 7bit
Content-Location: http://media.collegepublisher.com/media/scripts/youarehere.js

YouAreHere = function(element) {
    var login = document.getElementById('cp_tab_login');
    var verify = document.getElementById('cp_tab_verify');
    var loginBox = document.getElementById('cp_box_login');
    var verifyBox = document.getElementById('cp_box_verify');
    var tabHeader = document.getElementById('cp_tab_header');
    var emailBox = document.getElementById('email');
	var usernameBox = document.getElementById('username');
	
    if (element == 'cp_tab_login') {
      login.className = 'cp_active';
      verify.className = '';
      loginBox.className = 'cp_show';
      verifyBox.className = 'cp_hide';
	  usernameBox.focus();
    }
    if (element == 'cp_tab_verify') {
      verify.className = 'cp_active';
      login.className = '';
      loginBox.className = 'cp_hide';
      verifyBox.className = 'cp_show';
	  emailBox.focus();
    }
}
function greyoutbox(theformbutton) {
	theformbutton.disabled = 1;
}
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/spry/xpath.js

/* xpath.js - Revision: Spry Preview Release 1.3 */

// Copyright (c) 2005, Google Inc.
// All rights reserved.
//=20
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions =
are
// met:
//        =20
//  * Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
//=20
//  * Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in =
the
//    documentation and/or other materials provided with the
//    distribution.
//=20
//  * Neither the name of Google Inc. nor the names of its contributors
//    may be used to endorse or promote products derived from this
//    software without specific prior written permission.
//=20
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// An XPath parser and evaluator written in JavaScript. The
// implementation is complete except for functions handling
// namespaces.
//
// Reference: [XPATH] XPath Specification
// <http://www.w3.org/TR/1999/REC-xpath-19991116>.
//
//
// The API of the parser has several parts:
//
// 1. The parser function xpathParse() that takes a string and returns
// an expession object.
//
// 2. The expression object that has an evaluate() method to evaluate =
the
// XPath expression it represents. (It is actually a hierarchy of
// objects that resembles the parse tree, but an application will call
// evaluate() only on the top node of this hierarchy.)
//
// 3. The context object that is passed as an argument to the evaluate()
// method, which represents the DOM context in which the expression is
// evaluated.
//
// 4. The value object that is returned from evaluate() and represents
// values of the different types that are defined by XPath (number,
// string, boolean, and node-set), and allows to convert between them.
//
// These parts are near the top of the file, the functions and data
// that are used internally follow after them.
//
//
// TODO(mesch): add jsdoc comments. Use more coherent naming.
//
//
// Author: Steffen Meschkat <mesch@google.com>


// The entry point for the parser.
//
// @param expr a string that contains an XPath expression.
// @return an expression object that can be evaluated with an
// expression context.

function xpathParse(expr) {
  if (xpathdebug) {
    Log.write('XPath parse ' + expr);
  }
  xpathParseInit();

  var cached =3D xpathCacheLookup(expr);
  if (cached) {
    if (xpathdebug) {
      Log.write(' ... cached');
    }
    return cached;
  }

  // Optimize for a few common cases: simple attribute node tests
  // (@id), simple element node tests (page), variable references
  // ($address), numbers (4), multi-step path expressions where each
  // step is a plain element node test
  // (page/overlay/locations/location).
 =20
  if (expr.match(/^(\$|@)?\w+$/i)) {
    var ret =3D makeSimpleExpr(expr);
    xpathParseCache[expr] =3D ret;
    if (xpathdebug) {
      Log.write(' ... simple');
    }
    return ret;
  }

  if (expr.match(/^\w+(\/\w+)*$/i)) {
    var ret =3D makeSimpleExpr2(expr);
    xpathParseCache[expr] =3D ret;
    if (xpathdebug) {
      Log.write(' ... simple 2');
    }
    return ret;
  }

  var cachekey =3D expr; // expr is modified during parse
  if (xpathdebug) {
    Timer.start('XPath parse', cachekey);
  }

  var stack =3D [];
  var ahead =3D null;
  var previous =3D null;
  var done =3D false;

  var parse_count =3D 0;
  var lexer_count =3D 0;
  var reduce_count =3D 0;
 =20
  while (!done) {
    parse_count++;
    expr =3D expr.replace(/^\s*/, '');
    previous =3D ahead;
    ahead =3D null;

    var rule =3D null;
    var match =3D '';
    for (var i =3D 0; i < xpathTokenRules.length; ++i) {
      var result =3D xpathTokenRules[i].re.exec(expr);
      lexer_count++;
      if (result && result.length > 0 && result[0].length > =
match.length) {
        rule =3D xpathTokenRules[i];
        match =3D result[0];
        break;
      }
    }

    // Special case: allow operator keywords to be element and
    // variable names.

    // NOTE(mesch): The parser resolves conflicts by looking ahead,
    // and this is the only case where we look back to
    // disambiguate. So this is indeed something different, and
    // looking back is usually done in the lexer (via states in the
    // general case, called "start conditions" in flex(1)). Also,the
    // conflict resolution in the parser is not as robust as it could
    // be, so I'd like to keep as much off the parser as possible (all
    // these precedence values should be computed from the grammar
    // rules and possibly associativity declarations, as in bison(1),
    // and not explicitly set.

    if (rule &&
        (rule =3D=3D TOK_DIV ||=20
         rule =3D=3D TOK_MOD ||
         rule =3D=3D TOK_AND ||=20
         rule =3D=3D TOK_OR) &&
        (!previous ||=20
         previous.tag =3D=3D TOK_AT ||=20
         previous.tag =3D=3D TOK_DSLASH ||=20
         previous.tag =3D=3D TOK_SLASH ||
         previous.tag =3D=3D TOK_AXIS ||=20
         previous.tag =3D=3D TOK_DOLLAR)) {
      rule =3D TOK_QNAME;
    }

    if (rule) {
      expr =3D expr.substr(match.length);
      if (xpathdebug) {
        Log.write('token: ' + match + ' -- ' + rule.label);
      }
      ahead =3D {
        tag: rule,
        match: match,
        prec: rule.prec ?  rule.prec : 0, // || 0 is removed by the =
compiler
        expr: makeTokenExpr(match)
      };

    } else {
      if (xpathdebug) {
        Log.write('DONE');
      }
      done =3D true;
    }

    while (xpathReduce(stack, ahead)) {
      reduce_count++;
      if (xpathdebug) {
        Log.write('stack: ' + stackToString(stack));
      }
    }
  }

  if (xpathdebug) {
    Log.write(stackToString(stack));
  }

  if (stack.length !=3D 1) {
    throw 'XPath parse error ' + cachekey + ':\n' + =
stackToString(stack);
  }

  var result =3D stack[0].expr;
  xpathParseCache[cachekey] =3D result;

  if (xpathdebug) {
    Timer.end('XPath parse', cachekey);
  }

  if (xpathdebug) {
    Log.write('XPath parse: ' + parse_count + ' / ' +=20
              lexer_count + ' / ' + reduce_count);
  }

  return result;
}

var xpathParseCache =3D {};

function xpathCacheLookup(expr) {
  return xpathParseCache[expr];
}

function xpathReduce(stack, ahead) {
  var cand =3D null;

  if (stack.length > 0) {
    var top =3D stack[stack.length-1];
    var ruleset =3D xpathRules[top.tag.key];

    if (ruleset) {
      for (var i =3D 0; i < ruleset.length; ++i) {
        var rule =3D ruleset[i];
        var match =3D xpathMatchStack(stack, rule[1]);
        if (match.length) {
          cand =3D {
            tag: rule[0],
            rule: rule,
            match: match
          };
          cand.prec =3D xpathGrammarPrecedence(cand);
          break;
        }
      }
    }
  }

  var ret;
  if (cand && (!ahead || cand.prec > ahead.prec ||=20
               (ahead.tag.left && cand.prec >=3D ahead.prec))) {
    for (var i =3D 0; i < cand.match.matchlength; ++i) {
      stack.pop();
    }

    if (xpathdebug) {
      Log.write('reduce ' + cand.tag.label + ' ' + cand.prec +
                ' ahead ' + (ahead ? ahead.tag.label + ' ' + ahead.prec =
+=20
                             (ahead.tag.left ? ' left' : '')
                             : ' none '));
    }

    var matchexpr =3D mapExpr(cand.match, function(m) { return m.expr; =
});
    cand.expr =3D cand.rule[3].apply(null, matchexpr);

    stack.push(cand);
    ret =3D true;

  } else {
    if (ahead) {
      if (xpathdebug) {
        Log.write('shift ' + ahead.tag.label + ' ' + ahead.prec +=20
                  (ahead.tag.left ? ' left' : '') +
                  ' over ' + (cand ? cand.tag.label + ' ' +=20
                              cand.prec : ' none'));
      }
      stack.push(ahead);
    }
    ret =3D false;
  }
  return ret;
}

function xpathMatchStack(stack, pattern) {

  // NOTE(mesch): The stack matches for variable cardinality are
  // greedy but don't do backtracking. This would be an issue only
  // with rules of the form A* A, i.e. with an element with variable
  // cardinality followed by the same element. Since that doesn't
  // occur in the grammar at hand, all matches on the stack are
  // unambiguous.

  var S =3D stack.length;
  var P =3D pattern.length;
  var p, s;
  var match =3D [];
  match.matchlength =3D 0;
  var ds =3D 0;
  for (p =3D P - 1, s =3D S - 1; p >=3D 0 && s >=3D 0; --p, s -=3D ds) {
    ds =3D 0;
    var qmatch =3D [];
    if (pattern[p] =3D=3D Q_MM) {
      p -=3D 1;
      match.push(qmatch);
      while (s - ds >=3D 0 && stack[s - ds].tag =3D=3D pattern[p]) {
        qmatch.push(stack[s - ds]);
        ds +=3D 1;
        match.matchlength +=3D 1;
      }

    } else if (pattern[p] =3D=3D Q_01) {
      p -=3D 1;
      match.push(qmatch);
      while (s - ds >=3D 0 && ds < 2 && stack[s - ds].tag =3D=3D =
pattern[p]) {
        qmatch.push(stack[s - ds]);
        ds +=3D 1;
        match.matchlength +=3D 1;
      }

    } else if (pattern[p] =3D=3D Q_1M) {
      p -=3D 1;
      match.push(qmatch);
      if (stack[s].tag =3D=3D pattern[p]) {
        while (s - ds >=3D 0 && stack[s - ds].tag =3D=3D pattern[p]) {
          qmatch.push(stack[s - ds]);
          ds +=3D 1;
          match.matchlength +=3D 1;
        }
      } else {
        return [];
      }

    } else if (stack[s].tag =3D=3D pattern[p]) {
      match.push(stack[s]);
      ds +=3D 1;
      match.matchlength +=3D 1;

    } else {
      return [];
    }

    reverseInplace(qmatch);
    qmatch.expr =3D mapExpr(qmatch, function(m) { return m.expr; });
  }

  reverseInplace(match);

  if (p =3D=3D -1) {
    return match;

  } else {
    return [];
  }
}

function xpathTokenPrecedence(tag) {
  return tag.prec || 2;
}

function xpathGrammarPrecedence(frame) {
  var ret =3D 0;

  if (frame.rule) { /* normal reduce */
    if (frame.rule.length >=3D 3 && frame.rule[2] >=3D 0) {
      ret =3D frame.rule[2];

    } else {
      for (var i =3D 0; i < frame.rule[1].length; ++i) {
        var p =3D xpathTokenPrecedence(frame.rule[1][i]);
        ret =3D Math.max(ret, p);
      }
    }
  } else if (frame.tag) { /* TOKEN match */
    ret =3D xpathTokenPrecedence(frame.tag);

  } else if (frame.length) { /* Q_ match */
    for (var j =3D 0; j < frame.length; ++j) {
      var p =3D xpathGrammarPrecedence(frame[j]);
      ret =3D Math.max(ret, p);
    }
  }

  return ret;
}

function stackToString(stack) {
  var ret =3D '';
  for (var i =3D 0; i < stack.length; ++i) {
    if (ret) {
      ret +=3D '\n';
    }
    ret +=3D stack[i].tag.label;
  }
  return ret;
}


// XPath expression evaluation context. An XPath context consists of a
// DOM node, a list of DOM nodes that contains this node, a number
// that represents the position of the single node in the list, and a
// current set of variable bindings. (See XPath spec.)
//
// The interface of the expression context:
//
//   Constructor -- gets the node, its position, the node set it
//   belongs to, and a parent context as arguments. The parent context
//   is used to implement scoping rules for variables: if a variable
//   is not found in the current context, it is looked for in the
//   parent context, recursively. Except for node, all arguments have
//   default values: default position is 0, default node set is the
//   set that contains only the node, and the default parent is null.
//
//     Notice that position starts at 0 at the outside interface;
//     inside XPath expressions this shows up as position()=3D1.
//
//   clone() -- creates a new context with the current context as
//   parent. If passed as argument to clone(), the new context has a
//   different node, position, or node set. What is not passed is
//   inherited from the cloned context.
//
//   setVariable(name, expr) -- binds given XPath expression to the
//   name.
//
//   getVariable(name) -- what the name says.
//
//   setNode(node, position) -- sets the context to the new node and
//   its corresponding position. Needed to implement scoping rules for
//   variables in XPath. (A variable is visible to all subsequent
//   siblings, not only to its children.)

function ExprContext(node, position, nodelist, parent) {
  this.node =3D node;
  this.position =3D position || 0;
  this.nodelist =3D nodelist || [ node ];
  this.variables =3D {};
  this.parent =3D parent || null;
  this.root =3D parent ? parent.root : node.ownerDocument;
}

ExprContext.prototype.clone =3D function(node, position, nodelist) {
  return new
  ExprContext(node || this.node,
              typeof position !=3D 'undefined' ? position : =
this.position,
              nodelist || this.nodelist, this);
};

ExprContext.prototype.setVariable =3D function(name, value) {
  this.variables[name] =3D value;
};

ExprContext.prototype.getVariable =3D function(name) {
  if (typeof this.variables[name] !=3D 'undefined') {
    return this.variables[name];

  } else if (this.parent) {
    return this.parent.getVariable(name);

  } else {
    return null;
  }
}

ExprContext.prototype.setNode =3D function(node, position) {
  this.node =3D node;
  this.position =3D position;
}


// XPath expression values. They are what XPath expressions evaluate
// to. Strangely, the different value types are not specified in the
// XPath syntax, but only in the semantics, so they don't show up as
// nonterminals in the grammar. Yet, some expressions are required to
// evaluate to particular types, and not every type can be coerced
// into every other type. Although the types of XPath values are
// similar to the types present in JavaScript, the type coercion rules
// are a bit peculiar, so we explicitly model XPath types instead of
// mapping them onto JavaScript types. (See XPath spec.)
//
// The four types are:
//
//   StringValue
//
//   NumberValue
//
//   BooleanValue
//
//   NodeSetValue
//
// The common interface of the value classes consists of methods that
// implement the XPath type coercion rules:
//
//   stringValue() -- returns the value as a JavaScript String,
//
//   numberValue() -- returns the value as a JavaScript Number,
//
//   booleanValue() -- returns the value as a JavaScript Boolean,
//
//   nodeSetValue() -- returns the value as a JavaScript Array of DOM
//   Node objects.
//

function StringValue(value) {
  this.value =3D value;
  this.type =3D 'string';
}

StringValue.prototype.stringValue =3D function() {
  return this.value;
}

StringValue.prototype.booleanValue =3D function() {
  return this.value.length > 0;
}

StringValue.prototype.numberValue =3D function() {
  return this.value - 0;
}

StringValue.prototype.nodeSetValue =3D function() {
  throw this + ' ' + Error().stack;
}

function BooleanValue(value) {
  this.value =3D value;
  this.type =3D 'boolean';
}

BooleanValue.prototype.stringValue =3D function() {
  return '' + this.value;
}

BooleanValue.prototype.booleanValue =3D function() {
  return this.value;
}

BooleanValue.prototype.numberValue =3D function() {
  return this.value ? 1 : 0;
}

BooleanValue.prototype.nodeSetValue =3D function() {
  throw this + ' ' + Error().stack;
}

function NumberValue(value) {
  this.value =3D value;
  this.type =3D 'number';
}

NumberValue.prototype.stringValue =3D function() {
  return '' + this.value;
}

NumberValue.prototype.booleanValue =3D function() {
  return !!this.value;
}

NumberValue.prototype.numberValue =3D function() {
  return this.value - 0;
}

NumberValue.prototype.nodeSetValue =3D function() {
  throw this + ' ' + Error().stack;
}

function NodeSetValue(value) {
  this.value =3D value;
  this.type =3D 'node-set';
}

NodeSetValue.prototype.stringValue =3D function() {
  if (this.value.length =3D=3D 0) {
    return '';
  } else {
    return xmlValue(this.value[0]);
  }
}

NodeSetValue.prototype.booleanValue =3D function() {
  return this.value.length > 0;
}

NodeSetValue.prototype.numberValue =3D function() {
  return this.stringValue() - 0;
}

NodeSetValue.prototype.nodeSetValue =3D function() {
  return this.value;
};

// XPath expressions. They are used as nodes in the parse tree and
// possess an evaluate() method to compute an XPath value given an XPath
// context. Expressions are returned from the parser. Teh set of
// expression classes closely mirrors the set of non terminal symbols
// in the grammar. Every non trivial nonterminal symbol has a
// corresponding expression class.
//
// The common expression interface consists of the following methods:
//
// evaluate(context) -- evaluates the expression, returns a value.
//
// toString() -- returns the XPath text representation of the
// expression (defined in xsltdebug.js).
//
// parseTree(indent) -- returns a parse tree representation of the
// expression (defined in xsltdebug.js).

function TokenExpr(m) {
  this.value =3D m;
}

TokenExpr.prototype.evaluate =3D function() {
  return new StringValue(this.value);
};

function LocationExpr() {
  this.absolute =3D false;
  this.steps =3D [];
}

LocationExpr.prototype.appendStep =3D function(s) {
  this.steps.push(s);
}

LocationExpr.prototype.prependStep =3D function(s) {
  var steps0 =3D this.steps;
  this.steps =3D [ s ];
  for (var i =3D 0; i < steps0.length; ++i) {
    this.steps.push(steps0[i]);
  }
};

LocationExpr.prototype.evaluate =3D function(ctx) {
  var start;
  if (this.absolute) {
    start =3D ctx.root;

  } else {
    start =3D ctx.node;
  }

  var nodes =3D [];
  xPathStep(nodes, this.steps, 0, start, ctx);
  return new NodeSetValue(nodes);
};

function xPathStep(nodes, steps, step, input, ctx) {
  var s =3D steps[step];
  var ctx2 =3D ctx.clone(input);
  var nodelist =3D s.evaluate(ctx2).nodeSetValue();

  for (var i =3D 0; i < nodelist.length; ++i) {
    if (step =3D=3D steps.length - 1) {
      nodes.push(nodelist[i]);
    } else {
      xPathStep(nodes, steps, step + 1, nodelist[i], ctx);
    }
  }
}

function StepExpr(axis, nodetest, predicate) {
  this.axis =3D axis;
  this.nodetest =3D nodetest;
  this.predicate =3D predicate || [];
}

StepExpr.prototype.appendPredicate =3D function(p) {
  this.predicate.push(p);
}

StepExpr.prototype.evaluate =3D function(ctx) {
  var input =3D ctx.node;
  var nodelist =3D [];

  // NOTE(mesch): When this was a switch() statement, it didn't work
  // in Safari/2.0. Not sure why though; it resulted in the JavaScript
  // console output "undefined" (without any line number or so).

  if (this.axis =3D=3D  xpathAxis.ANCESTOR_OR_SELF) {
    nodelist.push(input);
    for (var n =3D input.parentNode; n; n =3D input.parentNode) {
      nodelist.push(n);
    }

  } else if (this.axis =3D=3D xpathAxis.ANCESTOR) {
    for (var n =3D input.parentNode; n; n =3D input.parentNode) {
      nodelist.push(n);
    }

  } else if (this.axis =3D=3D xpathAxis.ATTRIBUTE) {
    copyArray(nodelist, input.attributes);

  } else if (this.axis =3D=3D xpathAxis.CHILD) {
    copyArray(nodelist, input.childNodes);

  } else if (this.axis =3D=3D xpathAxis.DESCENDANT_OR_SELF) {
    nodelist.push(input);
    xpathCollectDescendants(nodelist, input);

  } else if (this.axis =3D=3D xpathAxis.DESCENDANT) {
    xpathCollectDescendants(nodelist, input);

  } else if (this.axis =3D=3D xpathAxis.FOLLOWING) {
    for (var n =3D input.parentNode; n; n =3D n.parentNode) {
      for (var nn =3D n.nextSibling; nn; nn =3D nn.nextSibling) {
        nodelist.push(nn);
        xpathCollectDescendants(nodelist, nn);
      }
    }

  } else if (this.axis =3D=3D xpathAxis.FOLLOWING_SIBLING) {
    for (var n =3D input.nextSibling; n; n =3D input.nextSibling) {
      nodelist.push(n);
    }

  } else if (this.axis =3D=3D xpathAxis.NAMESPACE) {
    alert('not implemented: axis namespace');

  } else if (this.axis =3D=3D xpathAxis.PARENT) {
    if (input.parentNode) {
      nodelist.push(input.parentNode);
    }

  } else if (this.axis =3D=3D xpathAxis.PRECEDING) {
    for (var n =3D input.parentNode; n; n =3D n.parentNode) {
      for (var nn =3D n.previousSibling; nn; nn =3D nn.previousSibling) =
{
        nodelist.push(nn);
        xpathCollectDescendantsReverse(nodelist, nn);
      }
    }

  } else if (this.axis =3D=3D xpathAxis.PRECEDING_SIBLING) {
    for (var n =3D input.previousSibling; n; n =3D =
input.previousSibling) {
      nodelist.push(n);
    }

  } else if (this.axis =3D=3D xpathAxis.SELF) {
    nodelist.push(input);

  } else {
    throw 'ERROR -- NO SUCH AXIS: ' + this.axis;
  }

  // process node test
  var nodelist0 =3D nodelist;
  nodelist =3D [];
  for (var i =3D 0; i < nodelist0.length; ++i) {
    var n =3D nodelist0[i];
    if (this.nodetest.evaluate(ctx.clone(n, i, =
nodelist0)).booleanValue()) {
      nodelist.push(n);
    }
  }

  // process predicates
  for (var i =3D 0; i < this.predicate.length; ++i) {
    var nodelist0 =3D nodelist;
    nodelist =3D [];
    for (var ii =3D 0; ii < nodelist0.length; ++ii) {
      var n =3D nodelist0[ii];
      if (this.predicate[i].evaluate(ctx.clone(n, ii, =
nodelist0)).booleanValue()) {
        nodelist.push(n);
      }
    }
  }

  return new NodeSetValue(nodelist);
};

function NodeTestAny() {
  this.value =3D new BooleanValue(true);
}

NodeTestAny.prototype.evaluate =3D function(ctx) {
  return this.value;
};

function NodeTestElement() {}

NodeTestElement.prototype.evaluate =3D function(ctx) {
  return new BooleanValue(ctx.node.nodeType =3D=3D DOM_ELEMENT_NODE);
}

function NodeTestText() {}

NodeTestText.prototype.evaluate =3D function(ctx) {
  return new BooleanValue(ctx.node.nodeType =3D=3D DOM_TEXT_NODE);
}

function NodeTestComment() {}

NodeTestComment.prototype.evaluate =3D function(ctx) {
  return new BooleanValue(ctx.node.nodeType =3D=3D DOM_COMMENT_NODE);
}

function NodeTestPI(target) {
  this.target =3D target;
}

NodeTestPI.prototype.evaluate =3D function(ctx) {
  return new
  BooleanValue(ctx.node.nodeType =3D=3D DOM_PROCESSING_INSTRUCTION_NODE =
&&
               (!this.target || ctx.node.nodeName =3D=3D this.target));
}

function NodeTestNC(nsprefix) {
  this.regex =3D new RegExp("^" + nsprefix + ":");
  this.nsprefix =3D nsprefix;
}

NodeTestNC.prototype.evaluate =3D function(ctx) {
  var n =3D ctx.node;
  return new BooleanValue(this.regex.match(n.nodeName));
}

function NodeTestName(name) {
  this.name =3D name;
}

NodeTestName.prototype.evaluate =3D function(ctx) {
  var n =3D ctx.node;
  return new BooleanValue(n.nodeName =3D=3D this.name);
}

function PredicateExpr(expr) {
  this.expr =3D expr;
}

PredicateExpr.prototype.evaluate =3D function(ctx) {
  var v =3D this.expr.evaluate(ctx);
  if (v.type =3D=3D 'number') {
    // NOTE(mesch): Internally, position is represented starting with
    // 0, however in XPath position starts with 1. See functions
    // position() and last().
    return new BooleanValue(ctx.position =3D=3D v.numberValue() - 1);
  } else {
    return new BooleanValue(v.booleanValue());
  }
};

function FunctionCallExpr(name) {
  this.name =3D name;
  this.args =3D [];
}

FunctionCallExpr.prototype.appendArg =3D function(arg) {
  this.args.push(arg);
};

FunctionCallExpr.prototype.evaluate =3D function(ctx) {
  var fn =3D '' + this.name.value;
  var f =3D this.xpathfunctions[fn];
  if (f) {
    return f.call(this, ctx);
  } else {
    Log.write('XPath NO SUCH FUNCTION ' + fn);
    return new BooleanValue(false);
  }
};

FunctionCallExpr.prototype.xpathfunctions =3D {
  'last': function(ctx) {
    assert(this.args.length =3D=3D 0);
    // NOTE(mesch): XPath position starts at 1.
    return new NumberValue(ctx.nodelist.length);
  },

  'position': function(ctx) {
    assert(this.args.length =3D=3D 0);
    // NOTE(mesch): XPath position starts at 1.
    return new NumberValue(ctx.position + 1);
  },

  'count': function(ctx) {
    assert(this.args.length =3D=3D 1);
    var v =3D this.args[0].evaluate(ctx);
    return new NumberValue(v.nodeSetValue().length);
  },

  'id': function(ctx) {
    assert(this.args.length =3D=3D 1);
    var e =3D this.args.evaluate(ctx);
    var ret =3D [];
    var ids;
    if (e.type =3D=3D 'node-set') {
      ids =3D [];
      for (var i =3D 0; i < e.length; ++i) {
        var v =3D xmlValue(e[i]).split(/\s+/);
        for (var ii =3D 0; ii < v.length; ++ii) {
          ids.push(v[ii]);
        }
      }
    } else {
      ids =3D e.split(/\s+/);
    }
    var d =3D ctx.node.ownerDocument;
    for (var i =3D 0; i < ids.length; ++i) {
      var n =3D d.getElementById(ids[i]);
      if (n) {
        ret.push(n);
      }
    }
    return new NodeSetValue(ret);
  },

  'local-name': function(ctx) {
    alert('not implmented yet: XPath function local-name()');
  },

  'namespace-uri': function(ctx) {
    alert('not implmented yet: XPath function namespace-uri()');
  },

  'name': function(ctx) {
    assert(this.args.length =3D=3D 1 || this.args.length =3D=3D 0);
    var n;
    if (this.args.length =3D=3D 0) {
      n =3D [ ctx.node ];
    } else {
      n =3D this.args[0].evaluate(ctx).nodeSetValue();
    }

    if (n.length =3D=3D 0) {
      return new StringValue('');
    } else {
      return new StringValue(n[0].nodeName);
    }
  },

  'string':  function(ctx) {
    assert(this.args.length =3D=3D 1 || this.args.length =3D=3D 0);
    if (this.args.length =3D=3D 0) {
      return new StringValue(new NodeSetValue([ ctx.node =
]).stringValue());
    } else {
      return new StringValue(this.args[0].evaluate(ctx).stringValue());
    }
  },

  'concat': function(ctx) {
    var ret =3D '';
    for (var i =3D 0; i < this.args.length; ++i) {
      ret +=3D this.args[i].evaluate(ctx).stringValue();
    }
    return new StringValue(ret);
  },

  'starts-with': function(ctx) {
    assert(this.args.length =3D=3D 2);
    var s0 =3D this.args[0].evaluate(ctx).stringValue();
    var s1 =3D this.args[1].evaluate(ctx).stringValue();
    return new BooleanValue(s0.indexOf(s1) =3D=3D 0);
  },

  'contains': function(ctx) {
    assert(this.args.length =3D=3D 2);
    var s0 =3D this.args[0].evaluate(ctx).stringValue();
    var s1 =3D this.args[1].evaluate(ctx).stringValue();
    return new BooleanValue(s0.indexOf(s1) !=3D -1);
  },

  'substring-before': function(ctx) {
    assert(this.args.length =3D=3D 2);
    var s0 =3D this.args[0].evaluate(ctx).stringValue();
    var s1 =3D this.args[1].evaluate(ctx).stringValue();
    var i =3D s0.indexOf(s1);
    var ret;
    if (i =3D=3D -1) {
      ret =3D '';
    } else {
      ret =3D s0.substr(0,i);
    }
    return new StringValue(ret);
  },

  'substring-after': function(ctx) {
    assert(this.args.length =3D=3D 2);
    var s0 =3D this.args[0].evaluate(ctx).stringValue();
    var s1 =3D this.args[1].evaluate(ctx).stringValue();
    var i =3D s0.indexOf(s1);
    var ret;
    if (i =3D=3D -1) {
      ret =3D '';
    } else {
      ret =3D s0.substr(i + s1.length);
    }
    return new StringValue(ret);
  },

  'substring': function(ctx) {
    // NOTE: XPath defines the position of the first character in a
    // string to be 1, in JavaScript this is 0 ([XPATH] Section 4.2).
    assert(this.args.length =3D=3D 2 || this.args.length =3D=3D 3);
    var s0 =3D this.args[0].evaluate(ctx).stringValue();
    var s1 =3D this.args[1].evaluate(ctx).numberValue();
    var ret;
    if (this.args.length =3D=3D 2) {
      var i1 =3D Math.max(0, Math.round(s1) - 1);
      ret =3D s0.substr(i1);

    } else {
      var s2 =3D this.args[2].evaluate(ctx).numberValue();
      var i0 =3D Math.round(s1) - 1;
      var i1 =3D Math.max(0, i0);
      var i2 =3D Math.round(s2) - Math.max(0, -i0);
      ret =3D s0.substr(i1, i2);
    }
    return new StringValue(ret);
  },

  'string-length': function(ctx) {
    var s;
    if (this.args.length > 0) {
      s =3D this.args[0].evaluate(ctx).stringValue();
    } else {
      s =3D new NodeSetValue([ ctx.node ]).stringValue();
    }
    return new NumberValue(s.length);
  },

  'normalize-space': function(ctx) {
    var s;
    if (this.args.length > 0) {
      s =3D this.args[0].evaluate(ctx).stringValue();
    } else {
      s =3D new NodeSetValue([ ctx.node ]).stringValue();
    }
    s =3D s.replace(/^\s*/,'').replace(/\s*$/,'').replace(/\s+/g, ' ');
    return new StringValue(s);
  },

  'translate': function(ctx) {
    assert(this.args.length =3D=3D 3);
    var s0 =3D this.args[0].evaluate(ctx).stringValue();
    var s1 =3D this.args[1].evaluate(ctx).stringValue();
    var s2 =3D this.args[2].evaluate(ctx).stringValue();

    for (var i =3D 0; i < s1.length; ++i) {
      s0 =3D s0.replace(new RegExp(s1.charAt(i), 'g'), s2.charAt(i));
    }
    return new StringValue(s0);
  },

  'boolean': function(ctx) {
    assert(this.args.length =3D=3D 1);
    return new BooleanValue(this.args[0].evaluate(ctx).booleanValue());
  },

  'not': function(ctx) {
    assert(this.args.length =3D=3D 1);
    var ret =3D !this.args[0].evaluate(ctx).booleanValue();
    return new BooleanValue(ret);
  },

  'true': function(ctx) {
    assert(this.args.length =3D=3D 0);
    return new BooleanValue(true);
  },

  'false': function(ctx) {
    assert(this.args.length =3D=3D 0);
    return new BooleanValue(false);
  },

  'lang': function(ctx) {
    assert(this.args.length =3D=3D 1);
    var lang =3D this.args[0].evaluate(ctx).stringValue();
    var xmllang;
    var n =3D ctx.node;
    while (n && n !=3D n.parentNode /* just in case ... */) {
      xmllang =3D n.getAttribute('xml:lang');
      if (xmllang) {
        break;
      }
      n =3D n.parentNode;
    }
    if (!xmllang) {
      return new BooleanValue(false);
    } else {
      var re =3D new RegExp('^' + lang + '$', 'i');
      return new BooleanValue(xmllang.match(re) ||
                              xmllang.replace(/_.*$/,'').match(re));
    }
  },

  'number': function(ctx) {
    assert(this.args.length =3D=3D 1 || this.args.length =3D=3D 0);

    if (this.args.length =3D=3D 1) {
      return new NumberValue(this.args[0].evaluate(ctx).numberValue());
    } else {
      return new NumberValue(new NodeSetValue([ ctx.node =
]).numberValue());
    }
  },

  'sum': function(ctx) {
    assert(this.args.length =3D=3D 1);
    var n =3D this.args[0].evaluate(ctx).nodeSetValue();
    var sum =3D 0;
    for (var i =3D 0; i < n.length; ++i) {
      sum +=3D xmlValue(n[i]) - 0;
    }
    return new NumberValue(sum);
  },

  'floor': function(ctx) {
    assert(this.args.length =3D=3D 1);
    var num =3D this.args[0].evaluate(ctx).numberValue();
    return new NumberValue(Math.floor(num));
  },

  'ceiling': function(ctx) {
    assert(this.args.length =3D=3D 1);
    var num =3D this.args[0].evaluate(ctx).numberValue();
    return new NumberValue(Math.ceil(num));
  },

  'round': function(ctx) {
    assert(this.args.length =3D=3D 1);
    var num =3D this.args[0].evaluate(ctx).numberValue();
    return new NumberValue(Math.round(num));
  },

  // TODO(mesch): The following functions are custom. There is a
  // standard that defines how to add functions, which should be
  // applied here.

  'ext-join': function(ctx) {
    assert(this.args.length =3D=3D 2);
    var nodes =3D this.args[0].evaluate(ctx).nodeSetValue();
    var delim =3D this.args[1].evaluate(ctx).stringValue();
    var ret =3D '';
    for (var i =3D 0; i < nodes.length; ++i) {
      if (ret) {
        ret +=3D delim;
      }
      ret +=3D xmlValue(nodes[i]);
    }
    return new StringValue(ret);
  },

  // ext-if() evaluates and returns its second argument, if the
  // boolean value of its first argument is true, otherwise it
  // evaluates and returns its third argument.

  'ext-if': function(ctx) {
    assert(this.args.length =3D=3D 3);
    if (this.args[0].evaluate(ctx).booleanValue()) {
      return this.args[1].evaluate(ctx);
    } else {
      return this.args[2].evaluate(ctx);
    }
  },

  'ext-sprintf': function(ctx) {
    assert(this.args.length >=3D 1);
    var args =3D [];
    for (var i =3D 0; i < this.args.length; ++i) {
      args.push(this.args[i].evaluate(ctx).stringValue());
    }
    return new StringValue(sprintf.apply(null, args));
  },

  // ext-cardinal() evaluates its single argument as a number, and
  // returns the current node that many times. It can be used in the
  // select attribute to iterate over an integer range.
 =20
  'ext-cardinal': function(ctx) {
    assert(this.args.length >=3D 1);
    var c =3D this.args[0].evaluate(ctx).numberValue();
    var ret =3D [];
    for (var i =3D 0; i < c; ++i) {
      ret.push(ctx.node);
    }
    return new NodeSetValue(ret);
  }
};

function UnionExpr(expr1, expr2) {
  this.expr1 =3D expr1;
  this.expr2 =3D expr2;
}

UnionExpr.prototype.evaluate =3D function(ctx) {
  var nodes1 =3D this.expr1.evaluate(ctx).nodeSetValue();
  var nodes2 =3D this.expr2.evaluate(ctx).nodeSetValue();
  var I1 =3D nodes1.length;
  for (var i2 =3D 0; i2 < nodes2.length; ++i2) {
    for (var i1 =3D 0; i1 < I1; ++i1) {
      if (nodes1[i1] =3D=3D nodes2[i2]) {
        // break inner loop and continue outer loop, labels confuse
        // the js compiler, so we don't use them here.
        i1 =3D I1;
      }
    }
    nodes1.push(nodes2[i2]);
  }
  return new NodeSetValue(nodes2);
};

function PathExpr(filter, rel) {
  this.filter =3D filter;
  this.rel =3D rel;
}

PathExpr.prototype.evaluate =3D function(ctx) {
  var nodes =3D this.filter.evaluate(ctx).nodeSetValue();
  var nodes1 =3D [];
  for (var i =3D 0; i < nodes.length; ++i) {
    var nodes0 =3D this.rel.evaluate(ctx.clone(nodes[i], i, =
nodes)).nodeSetValue();
    for (var ii =3D 0; ii < nodes0.length; ++ii) {
      nodes1.push(nodes0[ii]);
    }
  }
  return new NodeSetValue(nodes1);
};

function FilterExpr(expr, predicate) {
  this.expr =3D expr;
  this.predicate =3D predicate;
}

FilterExpr.prototype.evaluate =3D function(ctx) {
  var nodes =3D this.expr.evaluate(ctx).nodeSetValue();
  for (var i =3D 0; i < this.predicate.length; ++i) {
    var nodes0 =3D nodes;
    nodes =3D [];
    for (var j =3D 0; j < nodes0.length; ++j) {
      var n =3D nodes0[j];
      if (this.predicate[i].evaluate(ctx.clone(n, j, =
nodes0)).booleanValue()) {
        nodes.push(n);
      }
    }
  }

  return new NodeSetValue(nodes);
}

function UnaryMinusExpr(expr) {
  this.expr =3D expr;
}

UnaryMinusExpr.prototype.evaluate =3D function(ctx) {
  return new NumberValue(-this.expr.evaluate(ctx).numberValue());
};

function BinaryExpr(expr1, op, expr2) {
  this.expr1 =3D expr1;
  this.expr2 =3D expr2;
  this.op =3D op;
}

BinaryExpr.prototype.evaluate =3D function(ctx) {
  var ret;
  switch (this.op.value) {
    case 'or':
      ret =3D new BooleanValue(this.expr1.evaluate(ctx).booleanValue() =
||
                             this.expr2.evaluate(ctx).booleanValue());
      break;

    case 'and':
      ret =3D new BooleanValue(this.expr1.evaluate(ctx).booleanValue() =
&&
                             this.expr2.evaluate(ctx).booleanValue());
      break;

    case '+':
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() +
                            this.expr2.evaluate(ctx).numberValue());
      break;

    case '-':
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() -
                            this.expr2.evaluate(ctx).numberValue());
      break;

    case '*':
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() *
                            this.expr2.evaluate(ctx).numberValue());
      break;

    case 'mod':
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() %
                            this.expr2.evaluate(ctx).numberValue());
      break;

    case 'div':
      ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() /
                            this.expr2.evaluate(ctx).numberValue());
      break;

    case '=3D':
      ret =3D this.compare(ctx, function(x1, x2) { return x1 =3D=3D x2; =
});
      break;

    case '!=3D':
      ret =3D this.compare(ctx, function(x1, x2) { return x1 !=3D x2; =
});
      break;

    case '<':
      ret =3D this.compare(ctx, function(x1, x2) { return x1 < x2; });
      break;

    case '<=3D':
      ret =3D this.compare(ctx, function(x1, x2) { return x1 <=3D x2; =
});
      break;

    case '>':
      ret =3D this.compare(ctx, function(x1, x2) { return x1 > x2; });
      break;

    case '>=3D':
      ret =3D this.compare(ctx, function(x1, x2) { return x1 >=3D x2; =
});
      break;

    default:
      alert('BinaryExpr.evaluate: ' + this.op.value);
  }
  return ret;
};

BinaryExpr.prototype.compare =3D function(ctx, cmp) {
  var v1 =3D this.expr1.evaluate(ctx);
  var v2 =3D this.expr2.evaluate(ctx);

  var ret;
  if (v1.type =3D=3D 'node-set' && v2.type =3D=3D 'node-set') {
    var n1 =3D v1.nodeSetValue();
    var n2 =3D v2.nodeSetValue();
    ret =3D false;
    for (var i1 =3D 0; i1 < n1.length; ++i1) {
      for (var i2 =3D 0; i2 < n2.length; ++i2) {
        if (cmp(xmlValue(n1[i1]), xmlValue(n2[i2]))) {
          ret =3D true;
          // Break outer loop. Labels confuse the jscompiler and we
          // don't use them.
          i2 =3D n2.length;
          i1 =3D n1.length;
        }
      }
    }

  } else if (v1.type =3D=3D 'node-set' || v2.type =3D=3D 'node-set') {

    if (v1.type =3D=3D 'number') {
      var s =3D v1.numberValue();
      var n =3D v2.nodeSetValue();

      ret =3D false;
      for (var i =3D 0;  i < n.length; ++i) {
        var nn =3D xmlValue(n[i]) - 0;
        if (cmp(s, nn)) {
          ret =3D true;
          break;
        }
      }

    } else if (v2.type =3D=3D 'number') {
      var n =3D v1.nodeSetValue();
      var s =3D v2.numberValue();

      ret =3D false;
      for (var i =3D 0;  i < n.length; ++i) {
        var nn =3D xmlValue(n[i]) - 0;
        if (cmp(nn, s)) {
          ret =3D true;
          break;
        }
      }

    } else if (v1.type =3D=3D 'string') {
      var s =3D v1.stringValue();
      var n =3D v2.nodeSetValue();

      ret =3D false;
      for (var i =3D 0;  i < n.length; ++i) {
        var nn =3D xmlValue(n[i]);
        if (cmp(s, nn)) {
          ret =3D true;
          break;
        }
      }

    } else if (v2.type =3D=3D 'string') {
      var n =3D v1.nodeSetValue();
      var s =3D v2.stringValue();

      ret =3D false;
      for (var i =3D 0;  i < n.length; ++i) {
        var nn =3D xmlValue(n[i]);
        if (cmp(nn, s)) {
          ret =3D true;
          break;
        }
      }

    } else {
      ret =3D cmp(v1.booleanValue(), v2.booleanValue());
    }

  } else if (v1.type =3D=3D 'boolean' || v2.type =3D=3D 'boolean') {
    ret =3D cmp(v1.booleanValue(), v2.booleanValue());

  } else if (v1.type =3D=3D 'number' || v2.type =3D=3D 'number') {
    ret =3D cmp(v1.numberValue(), v2.numberValue());

  } else {
    ret =3D cmp(v1.stringValue(), v2.stringValue());
  }

  return new BooleanValue(ret);
}

function LiteralExpr(value) {
  this.value =3D value;
}

LiteralExpr.prototype.evaluate =3D function(ctx) {
  return new StringValue(this.value);
};

function NumberExpr(value) {
  this.value =3D value;
}

NumberExpr.prototype.evaluate =3D function(ctx) {
  return new NumberValue(this.value);
};

function VariableExpr(name) {
  this.name =3D name;
}

VariableExpr.prototype.evaluate =3D function(ctx) {
  return ctx.getVariable(this.name);
}

// Factory functions for semantic values (i.e. Expressions) of the
// productions in the grammar. When a production is matched to reduce
// the current parse state stack, the function is called with the
// semantic values of the matched elements as arguments, and returns
// another semantic value. The semantic value is a node of the parse
// tree, an expression object with an evaluate() method that evaluates =
the
// expression in an actual context. These factory functions are used
// in the specification of the grammar rules, below.

function makeTokenExpr(m) {
  return new TokenExpr(m);
}

function passExpr(e) {
  return e;
}

function makeLocationExpr1(slash, rel) {
  rel.absolute =3D true;
  return rel;
}

function makeLocationExpr2(dslash, rel) {
  rel.absolute =3D true;
  rel.prependStep(makeAbbrevStep(dslash.value));
  return rel;
}

function makeLocationExpr3(slash) {
  var ret =3D new LocationExpr();
  ret.appendStep(makeAbbrevStep('.'));
  ret.absolute =3D true;
  return ret;
}

function makeLocationExpr4(dslash) {
  var ret =3D new LocationExpr();
  ret.absolute =3D true;
  ret.appendStep(makeAbbrevStep(dslash.value));
  return ret;
}

function makeLocationExpr5(step) {
  var ret =3D new LocationExpr();
  ret.appendStep(step);
  return ret;
}

function makeLocationExpr6(rel, slash, step) {
  rel.appendStep(step);
  return rel;
}

function makeLocationExpr7(rel, dslash, step) {
  rel.appendStep(makeAbbrevStep(dslash.value));
  return rel;
}

function makeStepExpr1(dot) {
  return makeAbbrevStep(dot.value);
}

function makeStepExpr2(ddot) {
  return makeAbbrevStep(ddot.value);
}

function makeStepExpr3(axisname, axis, nodetest) {
  return new StepExpr(axisname.value, nodetest);
}

function makeStepExpr4(at, nodetest) {
  return new StepExpr('attribute', nodetest);
}

function makeStepExpr5(nodetest) {
  return new StepExpr('child', nodetest);
}

function makeStepExpr6(step, predicate) {
  step.appendPredicate(predicate);
  return step;
}

function makeAbbrevStep(abbrev) {
  switch (abbrev) {
  case '//':
    return new StepExpr('descendant-or-self', new NodeTestAny);

  case '.':
    return new StepExpr('self', new NodeTestAny);

  case '..':
    return new StepExpr('parent', new NodeTestAny);
  }
}

function makeNodeTestExpr1(asterisk) {
  return new NodeTestElement;
}

function makeNodeTestExpr2(ncname, colon, asterisk) {
  return new NodeTestNC(ncname.value);
}

function makeNodeTestExpr3(qname) {
  return new NodeTestName(qname.value);
}

function makeNodeTestExpr4(typeo, parenc) {
  var type =3D typeo.value.replace(/\s*\($/, '');
  switch(type) {
  case 'node':
    return new NodeTestAny;

  case 'text':
    return new NodeTestText;

  case 'comment':
    return new NodeTestComment;

  case 'processing-instruction':
    return new NodeTestPI;
  }
}

function makeNodeTestExpr5(typeo, target, parenc) {
  var type =3D typeo.replace(/\s*\($/, '');
  if (type !=3D 'processing-instruction') {
    throw type + ' ' + Error().stack;
  }
  return new NodeTestPI(target.value);
}

function makePredicateExpr(pareno, expr, parenc) {
  return new PredicateExpr(expr);
}

function makePrimaryExpr(pareno, expr, parenc) {
  return expr;
}

function makeFunctionCallExpr1(name, pareno, parenc) {
  return new FunctionCallExpr(name);
}

function makeFunctionCallExpr2(name, pareno, arg1, args, parenc) {
  var ret =3D new FunctionCallExpr(name);
  ret.appendArg(arg1);
  for (var i =3D 0; i < args.length; ++i) {
    ret.appendArg(args[i]);
  }
  return ret;
}

function makeArgumentExpr(comma, expr) {
  return expr;
}

function makeUnionExpr(expr1, pipe, expr2) {
  return new UnionExpr(expr1, expr2);
}

function makePathExpr1(filter, slash, rel) {
  return new PathExpr(filter, rel);
}

function makePathExpr2(filter, dslash, rel) {
  rel.prependStep(makeAbbrevStep(dslash.value));
  return new PathExpr(filter, rel);
}

function makeFilterExpr(expr, predicates) {
  if (predicates.length > 0) {
    return new FilterExpr(expr, predicates);
  } else {
    return expr;
  }
}

function makeUnaryMinusExpr(minus, expr) {
  return new UnaryMinusExpr(expr);
}

function makeBinaryExpr(expr1, op, expr2) {
  return new BinaryExpr(expr1, op, expr2);
}

function makeLiteralExpr(token) {
  // remove quotes from the parsed value:
  var value =3D token.value.substring(1, token.value.length - 1);
  return new LiteralExpr(value);
}

function makeNumberExpr(token) {
  return new NumberExpr(token.value);
}

function makeVariableReference(dollar, name) {
  return new VariableExpr(name.value);
}

// Used before parsing for optimization of common simple cases. See
// the begin of xpathParse() for which they are.
function makeSimpleExpr(expr) {
  if (expr.charAt(0) =3D=3D '$') {
    return new VariableExpr(expr.substr(1));
  } else if (expr.charAt(0) =3D=3D '@') {
    var a =3D new NodeTestName(expr.substr(1));
    var b =3D new StepExpr('attribute', a);
    var c =3D new LocationExpr();
    c.appendStep(b);
    return c;
  } else if (expr.match(/^[0-9]+$/)) {
    return new NumberExpr(expr);
  } else {
    var a =3D new NodeTestName(expr);
    var b =3D new StepExpr('child', a);
    var c =3D new LocationExpr();
    c.appendStep(b);
    return c;
  }
}

function makeSimpleExpr2(expr) {
  var steps =3D expr.split('/');
  var c =3D new LocationExpr();
  for (var i =3D 0; i < steps.length; i++) {
    var a =3D new NodeTestName(steps[i]);
    var b =3D new StepExpr('child', a);
    c.appendStep(b);
  }
  return c;
}

// The axes of XPath expressions.

var xpathAxis =3D {
  ANCESTOR_OR_SELF: 'ancestor-or-self',
  ANCESTOR: 'ancestor',
  ATTRIBUTE: 'attribute',
  CHILD: 'child',
  DESCENDANT_OR_SELF: 'descendant-or-self',
  DESCENDANT: 'descendant',
  FOLLOWING_SIBLING: 'following-sibling',
  FOLLOWING: 'following',
  NAMESPACE: 'namespace',
  PARENT: 'parent',
  PRECEDING_SIBLING: 'preceding-sibling',
  PRECEDING: 'preceding',
  SELF: 'self'
};

var xpathAxesRe =3D [
    xpathAxis.ANCESTOR_OR_SELF,
    xpathAxis.ANCESTOR,
    xpathAxis.ATTRIBUTE,
    xpathAxis.CHILD,
    xpathAxis.DESCENDANT_OR_SELF,
    xpathAxis.DESCENDANT,
    xpathAxis.FOLLOWING_SIBLING,
    xpathAxis.FOLLOWING,
    xpathAxis.NAMESPACE,
    xpathAxis.PARENT,
    xpathAxis.PRECEDING_SIBLING,
    xpathAxis.PRECEDING,
    xpathAxis.SELF
].join('|');


// The tokens of the language. The label property is just used for
// generating debug output. The prec property is the precedence used
// for shift/reduce resolution. Default precedence is 0 as a lookahead
// token and 2 on the stack. TODO(mesch): this is certainly not
// necessary and too complicated. Simplify this!

// NOTE: tabular formatting is the big exception, but here it should
// be OK.

var TOK_PIPE =3D   { label: "|",   prec:   17, re: new RegExp("^\\|") };
var TOK_DSLASH =3D { label: "//",  prec:   19, re: new RegExp("^//")  };
var TOK_SLASH =3D  { label: "/",   prec:   30, re: new RegExp("^/")   };
var TOK_AXIS =3D   { label: "::",  prec:   20, re: new RegExp("^::")  };
var TOK_COLON =3D  { label: ":",   prec: 1000, re: new RegExp("^:")  };
var TOK_AXISNAME =3D { label: "[axis]", re: new RegExp('^(' + =
xpathAxesRe + ')') };
var TOK_PARENO =3D { label: "(",   prec:   34, re: new RegExp("^\\(") };
var TOK_PARENC =3D { label: ")",               re: new RegExp("^\\)") };
var TOK_DDOT =3D   { label: "..",  prec:   34, re: new RegExp("^\\.\\.") =
};
var TOK_DOT =3D    { label: ".",   prec:   34, re: new RegExp("^\\.") };
var TOK_AT =3D     { label: "@",   prec:   34, re: new RegExp("^@")   };

var TOK_COMMA =3D  { label: ",",               re: new RegExp("^,") };

var TOK_OR =3D     { label: "or",  prec:   10, re: new RegExp("^or\\b") =
};
var TOK_AND =3D    { label: "and", prec:   11, re: new RegExp("^and\\b") =
};
var TOK_EQ =3D     { label: "=3D",   prec:   12, re: new RegExp("^=3D")  =
 };
var TOK_NEQ =3D    { label: "!=3D",  prec:   12, re: new RegExp("^!=3D") =
 };
var TOK_GE =3D     { label: ">=3D",  prec:   13, re: new RegExp("^>=3D") =
 };
var TOK_GT =3D     { label: ">",   prec:   13, re: new RegExp("^>")   };
var TOK_LE =3D     { label: "<=3D",  prec:   13, re: new RegExp("^<=3D") =
 };
var TOK_LT =3D     { label: "<",   prec:   13, re: new RegExp("^<")   };
var TOK_PLUS =3D   { label: "+",   prec:   14, re: new RegExp("^\\+"), =
left: true };
var TOK_MINUS =3D  { label: "-",   prec:   14, re: new RegExp("^\\-"), =
left: true };
var TOK_DIV =3D    { label: "div", prec:   15, re: new =
RegExp("^div\\b"), left: true };
var TOK_MOD =3D    { label: "mod", prec:   15, re: new =
RegExp("^mod\\b"), left: true };

var TOK_BRACKO =3D { label: "[",   prec:   32, re: new RegExp("^\\[") };
var TOK_BRACKC =3D { label: "]",               re: new RegExp("^\\]") };
var TOK_DOLLAR =3D { label: "$",               re: new RegExp("^\\$") };

var TOK_NCNAME =3D { label: "[ncname]", re: new =
RegExp('^[a-z][-\\w]*','i') };

var TOK_ASTERISK =3D { label: "*", prec: 15, re: new RegExp("^\\*"), =
left: true };
var TOK_LITERALQ =3D { label: "[litq]", prec: 20, re: new =
RegExp("^'[^\\']*'") };
var TOK_LITERALQQ =3D {
  label: "[litqq]",
  prec: 20,
  re: new RegExp('^"[^\\"]*"')
};

var TOK_NUMBER  =3D {
  label: "[number]",
  prec: 35,
  re: new RegExp('^\\d+(\\.\\d*)?') };

var TOK_QNAME =3D {
  label: "[qname]",
  re: new RegExp('^([a-z][-\\w]*:)?[a-z][-\\w]*','i')
};

var TOK_NODEO =3D {
  label: "[nodetest-start]",
  re: new RegExp('^(processing-instruction|comment|text|node)\\(')
};

// The table of the tokens of our grammar, used by the lexer: first
// column the tag, second column a regexp to recognize it in the
// input, third column the precedence of the token, fourth column a
// factory function for the semantic value of the token.
//
// NOTE: order of this list is important, because the first match
// counts. Cf. DDOT and DOT, and AXIS and COLON.

var xpathTokenRules =3D [
    TOK_DSLASH,
    TOK_SLASH,
    TOK_DDOT,
    TOK_DOT,
    TOK_AXIS,
    TOK_COLON,
    TOK_AXISNAME,
    TOK_NODEO,
    TOK_PARENO,
    TOK_PARENC,
    TOK_BRACKO,
    TOK_BRACKC,
    TOK_AT,
    TOK_COMMA,
    TOK_OR,
    TOK_AND,
    TOK_NEQ,
    TOK_EQ,
    TOK_GE,
    TOK_GT,
    TOK_LE,
    TOK_LT,
    TOK_PLUS,
    TOK_MINUS,
    TOK_ASTERISK,
    TOK_PIPE,
    TOK_MOD,
    TOK_DIV,
    TOK_LITERALQ,
    TOK_LITERALQQ,
    TOK_NUMBER,
    TOK_QNAME,
    TOK_NCNAME,
    TOK_DOLLAR
];

// All the nonterminals of the grammar. The nonterminal objects are
// identified by object identity; the labels are used in the debug
// output only.
var XPathLocationPath =3D { label: "LocationPath" };
var XPathRelativeLocationPath =3D { label: "RelativeLocationPath" };
var XPathAbsoluteLocationPath =3D { label: "AbsoluteLocationPath" };
var XPathStep =3D { label: "Step" };
var XPathNodeTest =3D { label: "NodeTest" };
var XPathPredicate =3D { label: "Predicate" };
var XPathLiteral =3D { label: "Literal" };
var XPathExpr =3D { label: "Expr" };
var XPathPrimaryExpr =3D { label: "PrimaryExpr" };
var XPathVariableReference =3D { label: "Variablereference" };
var XPathNumber =3D { label: "Number" };
var XPathFunctionCall =3D { label: "FunctionCall" };
var XPathArgumentRemainder =3D { label: "ArgumentRemainder" };
var XPathPathExpr =3D { label: "PathExpr" };
var XPathUnionExpr =3D { label: "UnionExpr" };
var XPathFilterExpr =3D { label: "FilterExpr" };
var XPathDigits =3D { label: "Digits" };

var xpathNonTerminals =3D [
    XPathLocationPath,
    XPathRelativeLocationPath,
    XPathAbsoluteLocationPath,
    XPathStep,
    XPathNodeTest,
    XPathPredicate,
    XPathLiteral,
    XPathExpr,
    XPathPrimaryExpr,
    XPathVariableReference,
    XPathNumber,
    XPathFunctionCall,
    XPathArgumentRemainder,
    XPathPathExpr,
    XPathUnionExpr,
    XPathFilterExpr,
    XPathDigits
];

// Quantifiers that are used in the productions of the grammar.
var Q_01 =3D { label: "?" };
var Q_MM =3D { label: "*" };
var Q_1M =3D { label: "+" };

// Tag for left associativity (right assoc is implied by undefined).
var ASSOC_LEFT =3D true;

// The productions of the grammar. Columns of the table:
//
// - target nonterminal,
// - pattern,
// - precedence,
// - semantic value factory
//
// The semantic value factory is a function that receives parse tree
// nodes from the stack frames of the matched symbols as arguments and
// returns an a node of the parse tree. The node is stored in the top
// stack frame along with the target object of the rule. The node in
// the parse tree is an expression object that has an evaluate() method
// and thus evaluates XPath expressions.
//
// The precedence is used to decide between reducing and shifting by
// comparing the precendence of the rule that is candidate for
// reducing with the precedence of the look ahead token. Precedence of
// -1 means that the precedence of the tokens in the pattern is used
// instead. TODO: It shouldn't be necessary to explicitly assign
// precedences to rules.

var xpathGrammarRules =3D
  [
   [ XPathLocationPath, [ XPathRelativeLocationPath ], 18,
     passExpr ],
   [ XPathLocationPath, [ XPathAbsoluteLocationPath ], 18,
     passExpr ],

   [ XPathAbsoluteLocationPath, [ TOK_SLASH, XPathRelativeLocationPath =
], 18,=20
     makeLocationExpr1 ],
   [ XPathAbsoluteLocationPath, [ TOK_DSLASH, XPathRelativeLocationPath =
], 18,
     makeLocationExpr2 ],

   [ XPathAbsoluteLocationPath, [ TOK_SLASH ], 0,
     makeLocationExpr3 ],
   [ XPathAbsoluteLocationPath, [ TOK_DSLASH ], 0,
     makeLocationExpr4 ],

   [ XPathRelativeLocationPath, [ XPathStep ], 31,
     makeLocationExpr5 ],
   [ XPathRelativeLocationPath,
     [ XPathRelativeLocationPath, TOK_SLASH, XPathStep ], 31,
     makeLocationExpr6 ],
   [ XPathRelativeLocationPath,
     [ XPathRelativeLocationPath, TOK_DSLASH, XPathStep ], 31,
     makeLocationExpr7 ],

   [ XPathStep, [ TOK_DOT ], 33,
     makeStepExpr1 ],
   [ XPathStep, [ TOK_DDOT ], 33,
     makeStepExpr2 ],
   [ XPathStep,
     [ TOK_AXISNAME, TOK_AXIS, XPathNodeTest ], 33,
     makeStepExpr3 ],
   [ XPathStep, [ TOK_AT, XPathNodeTest ], 33,
     makeStepExpr4 ],
   [ XPathStep, [ XPathNodeTest ], 33,
     makeStepExpr5 ],
   [ XPathStep, [ XPathStep, XPathPredicate ], 33,
     makeStepExpr6 ],

   [ XPathNodeTest, [ TOK_ASTERISK ], 33,
     makeNodeTestExpr1 ],
   [ XPathNodeTest, [ TOK_NCNAME, TOK_COLON, TOK_ASTERISK ], 33,
     makeNodeTestExpr2 ],
   [ XPathNodeTest, [ TOK_QNAME ], 33,
     makeNodeTestExpr3 ],
   [ XPathNodeTest, [ TOK_NODEO, TOK_PARENC ], 33,
     makeNodeTestExpr4 ],
   [ XPathNodeTest, [ TOK_NODEO, XPathLiteral, TOK_PARENC ], 33,
     makeNodeTestExpr5 ],

   [ XPathPredicate, [ TOK_BRACKO, XPathExpr, TOK_BRACKC ], 33,
     makePredicateExpr ],

   [ XPathPrimaryExpr, [ XPathVariableReference ], 33,
     passExpr ],
   [ XPathPrimaryExpr, [ TOK_PARENO, XPathExpr, TOK_PARENC ], 33,
     makePrimaryExpr ],
   [ XPathPrimaryExpr, [ XPathLiteral ], 30,
     passExpr ],
   [ XPathPrimaryExpr, [ XPathNumber ], 30,
     passExpr ],
   [ XPathPrimaryExpr, [ XPathFunctionCall ], 30,
     passExpr ],

   [ XPathFunctionCall, [ TOK_QNAME, TOK_PARENO, TOK_PARENC ], -1,
     makeFunctionCallExpr1 ],
   [ XPathFunctionCall,
     [ TOK_QNAME, TOK_PARENO, XPathExpr, XPathArgumentRemainder, Q_MM,
       TOK_PARENC ], -1,
     makeFunctionCallExpr2 ],
   [ XPathArgumentRemainder, [ TOK_COMMA, XPathExpr ], -1,
     makeArgumentExpr ],

   [ XPathUnionExpr, [ XPathPathExpr ], 20,
     passExpr ],
   [ XPathUnionExpr, [ XPathUnionExpr, TOK_PIPE, XPathPathExpr ], 20,
     makeUnionExpr ],

   [ XPathPathExpr, [ XPathLocationPath ], 20,=20
     passExpr ],=20
   [ XPathPathExpr, [ XPathFilterExpr ], 19,=20
     passExpr ],=20
   [ XPathPathExpr,=20
     [ XPathFilterExpr, TOK_SLASH, XPathRelativeLocationPath ], 20,
     makePathExpr1 ],
   [ XPathPathExpr,
     [ XPathFilterExpr, TOK_DSLASH, XPathRelativeLocationPath ], 20,
     makePathExpr2 ],

   [ XPathFilterExpr, [ XPathPrimaryExpr, XPathPredicate, Q_MM ], 20,
     makeFilterExpr ],=20

   [ XPathExpr, [ XPathPrimaryExpr ], 16,
     passExpr ],
   [ XPathExpr, [ XPathUnionExpr ], 16,
     passExpr ],

   [ XPathExpr, [ TOK_MINUS, XPathExpr ], -1,
     makeUnaryMinusExpr ],

   [ XPathExpr, [ XPathExpr, TOK_OR, XPathExpr ], -1,
     makeBinaryExpr ],
   [ XPathExpr, [ XPathExpr, TOK_AND, XPathExpr ], -1,
     makeBinaryExpr ],

   [ XPathExpr, [ XPathExpr, TOK_EQ, XPathExpr ], -1,
     makeBinaryExpr ],
   [ XPathExpr, [ XPathExpr, TOK_NEQ, XPathExpr ], -1,
     makeBinaryExpr ],

   [ XPathExpr, [ XPathExpr, TOK_LT, XPathExpr ], -1,
     makeBinaryExpr ],
   [ XPathExpr, [ XPathExpr, TOK_LE, XPathExpr ], -1,
     makeBinaryExpr ],
   [ XPathExpr, [ XPathExpr, TOK_GT, XPathExpr ], -1,
     makeBinaryExpr ],
   [ XPathExpr, [ XPathExpr, TOK_GE, XPathExpr ], -1,
     makeBinaryExpr ],

   [ XPathExpr, [ XPathExpr, TOK_PLUS, XPathExpr ], -1,
     makeBinaryExpr, ASSOC_LEFT ],
   [ XPathExpr, [ XPathExpr, TOK_MINUS, XPathExpr ], -1,
     makeBinaryExpr, ASSOC_LEFT ],

   [ XPathExpr, [ XPathExpr, TOK_ASTERISK, XPathExpr ], -1,
     makeBinaryExpr, ASSOC_LEFT ],
   [ XPathExpr, [ XPathExpr, TOK_DIV, XPathExpr ], -1,
     makeBinaryExpr, ASSOC_LEFT ],
   [ XPathExpr, [ XPathExpr, TOK_MOD, XPathExpr ], -1,
     makeBinaryExpr, ASSOC_LEFT ],

   [ XPathLiteral, [ TOK_LITERALQ ], -1,
     makeLiteralExpr ],
   [ XPathLiteral, [ TOK_LITERALQQ ], -1,
     makeLiteralExpr ],

   [ XPathNumber, [ TOK_NUMBER ], -1,
     makeNumberExpr ],

   [ XPathVariableReference, [ TOK_DOLLAR, TOK_QNAME ], 200,
     makeVariableReference ]
   ];

// That function computes some optimizations of the above data
// structures and will be called right here. It merely takes the
// counter variables out of the global scope.

var xpathRules =3D [];

function xpathParseInit() {
  if (xpathRules.length) {
    return;
  }

  // Some simple optimizations for the xpath expression parser: sort
  // grammar rules descending by length, so that the longest match is
  // first found.

  xpathGrammarRules.sort(function(a,b) {
    var la =3D a[1].length;
    var lb =3D b[1].length;
    if (la < lb) {
      return 1;
    } else if (la > lb) {
      return -1;
    } else {
      return 0;
    }
  });

  var k =3D 1;
  for (var i =3D 0; i < xpathNonTerminals.length; ++i) {
    xpathNonTerminals[i].key =3D k++;
  }

  for (i =3D 0; i < xpathTokenRules.length; ++i) {
    xpathTokenRules[i].key =3D k++;
  }

  if (xpathdebug)
  Log.write('XPath parse INIT: ' + k + ' rules');

  // Another slight optimization: sort the rules into bins according
  // to the last element (observing quantifiers), so we can restrict
  // the match against the stack to the subest of rules that match the
  // top of the stack.
  //
  // TODO(mesch): What we actually want is to compute states as in
  // bison, so that we don't have to do any explicit and iterated
  // match against the stack.

  function push_(array, position, element) {
    if (!array[position]) {
      array[position] =3D [];
    }
    array[position].push(element);
  }

  for (i =3D 0; i < xpathGrammarRules.length; ++i) {
    var rule =3D xpathGrammarRules[i];
    var pattern =3D rule[1];

    for (var j =3D pattern.length - 1; j >=3D 0; --j) {
      if (pattern[j] =3D=3D Q_1M) {
        push_(xpathRules, pattern[j-1].key, rule);
        break;
       =20
      } else if (pattern[j] =3D=3D Q_MM || pattern[j] =3D=3D Q_01) {
        push_(xpathRules, pattern[j-1].key, rule);
        --j;

      } else {
        push_(xpathRules, pattern[j].key, rule);
        break;
      }
    }
  }

  if (xpathdebug)
  Log.write('XPath parse INIT: ' + xpathRules.length + ' rule bins');
 =20
  var sum =3D 0;
  mapExec(xpathRules, function(i) {
    if (i) {
      sum +=3D i.length;
    }
  });
 =20
  if (xpathdebug)
  Log.write('XPath parse INIT: ' + (sum / xpathRules.length) + ' average =
bin size');
}

// Local utility functions that are used by the lexer or parser.

function xpathCollectDescendants(nodelist, node) {
  for (var n =3D node.firstChild; n; n =3D n.nextSibling) {
    nodelist.push(n);
    arguments.callee(nodelist, n);
  }
}

function xpathCollectDescendantsReverse(nodelist, node) {
  for (var n =3D node.lastChild; n; n =3D n.previousSibling) {
    nodelist.push(n);
    arguments.callee(nodelist, n);
  }
}


// The entry point for the library: match an expression against a DOM
// node. Returns an XPath value.
function xpathDomEval(expr, node) {
  var expr1 =3D xpathParse(expr);
  var ret =3D expr1.evaluate(new ExprContext(node));
  return ret;
}

// Utility function to sort a list of nodes. Used by xsltSort() and
// nxslSelect().
function xpathSort(input, sort) {
  if (sort.length =3D=3D 0) {
    return;
  }

  var sortlist =3D [];

  for (var i =3D 0; i < input.nodelist.length; ++i) {
    var node =3D input.nodelist[i];
    var sortitem =3D { node: node, key: [] };
    var context =3D input.clone(node, 0, [ node ]);
   =20
    for (var j =3D 0; j < sort.length; ++j) {
      var s =3D sort[j];
      var value =3D s.expr.evaluate(context);

      var evalue;
      if (s.type =3D=3D 'text') {
        evalue =3D value.stringValue();
      } else if (s.type =3D=3D 'number') {
        evalue =3D value.numberValue();
      }
      sortitem.key.push({ value: evalue, order: s.order });
    }

    // Make the sort stable by adding a lowest priority sort by
    // id. This is very convenient and furthermore required by the
    // spec ([XSLT] - Section 10 Sorting).
    sortitem.key.push({ value: i, order: 'ascending' });

    sortlist.push(sortitem);
  }

  sortlist.sort(xpathSortByKey);

  var nodes =3D [];
  for (var i =3D 0; i < sortlist.length; ++i) {
    nodes.push(sortlist[i].node);
  }
  input.nodelist =3D nodes;
  input.setNode(nodes[0], 0);
}


// Sorts by all order criteria defined. According to the JavaScript
// spec ([ECMA] Section 11.8.5), the compare operators compare strings
// as strings and numbers as numbers.
//
// NOTE: In browsers which do not follow the spec, this breaks only in
// the case that numbers should be sorted as strings, which is very
// uncommon.

function xpathSortByKey(v1, v2) {
  // NOTE: Sort key vectors of different length never occur in
  // xsltSort.

  for (var i =3D 0; i < v1.key.length; ++i) {
    var o =3D v1.key[i].order =3D=3D 'descending' ? -1 : 1;
    if (v1.key[i].value > v2.key[i].value) {
      return +1 * o;
    } else if (v1.key[i].value < v2.key[i].value) {
      return -1 * o;
    }
  }

  return 0;
}


// Copyright (c) 2005, Google Inc.
// All rights reserved.
//=20
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions =
are
// met:
//        =20
//  * Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
//=20
//  * Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in =
the
//    documentation and/or other materials provided with the
//    distribution.
//=20
//  * Neither the name of Google Inc. nor the names of its contributors
//    may be used to endorse or promote products derived from this
//    software without specific prior written permission.
//=20
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Miscellania that support the ajaxslt implementation.
//
// Author: Steffen Meschkat <mesch@google.com>
//

function el(i) {
  return document.getElementById(i);
}

function px(x) {
  return x + 'px';
}

// Split a string s at all occurrences of character c. This is like
// the split() method of the string object, but IE omits empty
// strings, which violates the invariant (s.split(x).join(x) =3D=3D s).
function stringSplit(s, c) {
  var a =3D s.indexOf(c);
  if (a =3D=3D -1) {
    return [ s ];
  }
 =20
  var parts =3D [];
  parts.push(s.substr(0,a));
  while (a !=3D -1) {
    var a1 =3D s.indexOf(c, a + 1);
    if (a1 !=3D -1) {
      parts.push(s.substr(a + 1, a1 - a - 1));
    } else {
      parts.push(s.substr(a + 1));
    }=20
    a =3D a1;
  }

  return parts;
}

// Returns the text value if a node; for nodes without children this
// is the nodeValue, for nodes with children this is the concatenation
// of the value of all children.
function xmlValue(node) {
  if (!node) {
    return '';
  }

  var ret =3D '';
  if (node.nodeType =3D=3D DOM_TEXT_NODE ||
      node.nodeType =3D=3D DOM_CDATA_SECTION_NODE ||
      node.nodeType =3D=3D DOM_ATTRIBUTE_NODE) {
    ret +=3D node.nodeValue;

  } else if (node.nodeType =3D=3D DOM_ELEMENT_NODE ||
             node.nodeType =3D=3D DOM_DOCUMENT_NODE ||
             node.nodeType =3D=3D DOM_DOCUMENT_FRAGMENT_NODE) {
    for (var i =3D 0; i < node.childNodes.length; ++i) {
      ret +=3D arguments.callee(node.childNodes[i]);
    }
  }
  return ret;
}

// Returns the representation of a node as XML text.
function xmlText(node) {
  var ret =3D '';
  if (node.nodeType =3D=3D DOM_TEXT_NODE) {
    ret +=3D xmlEscapeText(node.nodeValue);
   =20
  } else if (node.nodeType =3D=3D DOM_ELEMENT_NODE) {
    ret +=3D '<' + node.nodeName;
    for (var i =3D 0; i < node.attributes.length; ++i) {
      var a =3D node.attributes[i];
      if (a && a.nodeName && a.nodeValue) {
        ret +=3D ' ' + a.nodeName;
        ret +=3D '=3D"' + xmlEscapeAttr(a.nodeValue) + '"';
      }
    }

    if (node.childNodes.length =3D=3D 0) {
      ret +=3D '/>';

    } else {
      ret +=3D '>';
      for (var i =3D 0; i < node.childNodes.length; ++i) {
        ret +=3D arguments.callee(node.childNodes[i]);
      }
      ret +=3D '</' + node.nodeName + '>';
    }
   =20
  } else if (node.nodeType =3D=3D DOM_DOCUMENT_NODE ||=20
             node.nodeType =3D=3D DOM_DOCUMENT_FRAGMENT_NODE) {
    for (var i =3D 0; i < node.childNodes.length; ++i) {
      ret +=3D arguments.callee(node.childNodes[i]);
    }
  }
 =20
  return ret;
}

// Applies the given function to each element of the array.
function mapExec(array, func) {
  for (var i =3D 0; i < array.length; ++i) {
    func(array[i]);
  }
}

// Returns an array that contains the return value of the given
// function applied to every element of the input array.
function mapExpr(array, func) {
  var ret =3D [];
  for (var i =3D 0; i < array.length; ++i) {
    ret.push(func(array[i]));
  }
  return ret;
};

// Reverses the given array in place.
function reverseInplace(array) {
  for (var i =3D 0; i < array.length / 2; ++i) {
    var h =3D array[i];
    var ii =3D array.length - i - 1;
    array[i] =3D array[ii];
    array[ii] =3D h;
  }
}

// Shallow-copies an array.
function copyArray(dst, src) {=20
  for (var i =3D 0; i < src.length; ++i) {
    dst.push(src[i]);
  }
}

function assert(b) {
  if (!b) {
    throw 'assertion failed';
  }
}

// Based on
// =
<http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-195=
0641247>
var DOM_ELEMENT_NODE =3D 1;
var DOM_ATTRIBUTE_NODE =3D 2;
var DOM_TEXT_NODE =3D 3;
var DOM_CDATA_SECTION_NODE =3D 4;
var DOM_ENTITY_REFERENCE_NODE =3D 5;
var DOM_ENTITY_NODE =3D 6;
var DOM_PROCESSING_INSTRUCTION_NODE =3D 7;
var DOM_COMMENT_NODE =3D 8;
var DOM_DOCUMENT_NODE =3D 9;
var DOM_DOCUMENT_TYPE_NODE =3D 10;
var DOM_DOCUMENT_FRAGMENT_NODE =3D 11;
var DOM_NOTATION_NODE =3D 12;


var xpathdebug =3D false; // trace xpath parsing
var xsltdebug =3D false; // trace xslt processing


// Escape XML special markup chracters: tag delimiter < > and entity
// reference start delimiter &. The escaped string can be used in XML
// text portions (i.e. between tags).
function xmlEscapeText(s) {
  return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, =
'&gt;');
}

// Escape XML special markup characters: tag delimiter < > entity
// reference start delimiter & and quotes ". The escaped string can be
// used in double quoted XML attribute value portions (i.e. in
// attributes within start tags).
function xmlEscapeAttr(s) {
  return xmlEscapeText(s).replace(/\"/g, '&quot;');
}

// Escape markup in XML text, but don't touch entity references. The
// escaped string can be used as XML text (i.e. between tags).
function xmlEscapeTags(s) {
  return s.replace(/</g, '&lt;').replace(/>/g, '&gt;');
}

// An implementation of the debug log.=20

var logging__ =3D true;

function Log() {};

Log.lines =3D [];

Log.write =3D function(s) {
  if (logging__) {
    this.lines.push(xmlEscapeText(s));
    this.show();
  }
};

// Writes the given XML with every tag on a new line.
Log.writeXML =3D function(xml) {
  if (logging__) {
    var s0 =3D xml.replace(/</g, '\n<');
    var s1 =3D xmlEscapeText(s0);
    var s2 =3D s1.replace(/\s*\n(\s|\n)*/g, '<br/>');
    this.lines.push(s2);
    this.show();
  }
}

// Writes without any escaping
Log.writeRaw =3D function(s) {
  if (logging__) {
    this.lines.push(s);
    this.show();
  }
}

Log.clear =3D function() {
  if (logging__) {
    var l =3D this.div();
    l.innerHTML =3D '';
    this.lines =3D [];
  }
}

Log.show =3D function() {
  var l =3D this.div();
  l.innerHTML +=3D this.lines.join('<br/>') + '<br/>';
  this.lines =3D [];
  l.scrollTop =3D l.scrollHeight;
}

Log.div =3D function() {
  var l =3D document.getElementById('log');
  if (!l) {
    l =3D document.createElement('div');
    l.id =3D 'log';
    l.style.position =3D 'absolute';
    l.style.right =3D '5px';
    l.style.top =3D '5px';
    l.style.width =3D '250px';
    l.style.height =3D '150px';
    l.style.overflow =3D 'auto';
    l.style.backgroundColor =3D '#f0f0f0';
    l.style.border =3D '1px solid gray';
    l.style.fontSize =3D '10px';
    l.style.padding =3D '5px';
    document.body.appendChild(l);
  }
  return l;
}


function Timer() {}
Timer.start =3D function() {}
Timer.end =3D function() {}

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/spry/SpryData.js

/* SpryData.js - Revision: Spry Preview Release 1.3 */

// Copyright (c) 2006. Adobe Systems Incorporated.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions =
are met:
//
//   * Redistributions of source code must retain the above copyright =
notice,
//     this list of conditions and the following disclaimer.
//   * Redistributions in binary form must reproduce the above copyright =
notice,
//     this list of conditions and the following disclaimer in the =
documentation
//     and/or other materials provided with the distribution.
//   * Neither the name of Adobe Systems Incorporated nor the names of =
its
//     contributors may be used to endorse or promote products derived =
from this
//     software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS =
"AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, =
THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR =
PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS =
BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR =
BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER =
IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR =
OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED =
OF THE
// POSSIBILITY OF SUCH DAMAGE.

var Spry; if (!Spry) Spry =3D {};

//////////////////////////////////////////////////////////////////////
//
// Spry.Utils
//
//////////////////////////////////////////////////////////////////////

if (!Spry.Utils) Spry.Utils =3D {};

Spry.Utils.msProgIDs =3D ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", =
"MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];

Spry.Utils.createXMLHttpRequest =3D function()
{
	var req =3D null;
	try
	{
		if (window.XMLHttpRequest)
			req =3D new XMLHttpRequest();
		else if (window.ActiveXObject)
		{
			while (!req && Spry.Utils.msProgIDs.length)
			{
				try { req =3D new ActiveXObject(Spry.Utils.msProgIDs[0]); } catch =
(e) { req =3D null; }
				if (!req)
					Spry.Utils.msProgIDs.splice(0, 1);
			}
		}
	}
	catch (e) { req =3D null;	}

	if (!req)
		Spry.Debug.reportError("Failed to create an XMLHttpRequest object!" );

	return req;
};

Spry.Utils.loadURL =3D function(method, url, async, callback, opts)
{
	var req =3D new Spry.Utils.loadURL.Request();
	req.method =3D method;
	req.url =3D url;
	req.async =3D async;
	req.successCallback =3D callback;
	Spry.Utils.setOptions(req, opts);
=09
	try
	{
		req.xhRequest =3D Spry.Utils.createXMLHttpRequest();
		if (!req.xhRequest)
			return null;

		if (req.async)
			req.xhRequest.onreadystatechange =3D function() { =
Spry.Utils.loadURL.callback(req); };

		req.xhRequest.open(req.method, req.url, req.async, req.username, =
req.password);
	=09
		if (req.headers)
		{
			for (var name in req.headers)
				req.xhRequest.setRequestHeader(name, req.headers[name]);
		}

		req.xhRequest.send(req.postData);

		if (!req.async)
			Spry.Utils.loadURL.callback(req);
	}
	catch(e) { req =3D null; Spry.Debug.reportError("Exception caught while =
loading " + url + ": " + e.message); }

	return req;
};

Spry.Utils.loadURL.callback =3D function(req)
{
	if (!req || req.xhRequest.readyState !=3D 4)
		return;
	if (req.successCallback && (req.xhRequest.status =3D=3D 200 || =
req.xhRequest.status =3D=3D 0))
		req.successCallback(req);
	else if (req.errorCallback)
		req.errorCallback(req);
};

Spry.Utils.loadURL.Request =3D function()
{
	var props =3D Spry.Utils.loadURL.Request.props;
	var numProps =3D props.length;

	for (var i =3D 0; i < numProps; i++)
		this[props[i]] =3D null;

	this.method =3D "GET";
	this.async =3D true;
	this.headers =3D {};
};

Spry.Utils.loadURL.Request.props =3D [ "method", "url", "async", =
"username", "password", "postData", "successCallback", "errorCallback", =
"headers", "userData", "xhRequest" ];

Spry.Utils.loadURL.Request.prototype.extractRequestOptions =3D =
function(opts, undefineRequestProps)
{
	if (!opts)
		return;

	var props =3D Spry.Utils.loadURL.Request.props;
	var numProps =3D props.length;

	for (var i =3D 0; i < numProps; i++)
	{
		var prop =3D props[i];
		if (opts[prop] !=3D undefined)
		{
			this[prop] =3D opts[prop];
			if (undefineRequestProps)
				opts[prop] =3D undefined;
		}
	}
};

Spry.Utils.loadURL.Request.prototype.clone =3D function()
{
	var props =3D Spry.Utils.loadURL.Request.props;
	var numProps =3D props.length;
	var req =3D new Spry.Utils.loadURL.Request;
	for (var i =3D 0; i < numProps; i++)
		req[props[i]] =3D this[props[i]];
	if (this.headers)
	{
		req.headers =3D {};
		Spry.Utils.setOptions(req.headers, this.headers);
	}
	return req;
};

Spry.Utils.addEventListener =3D function(element, eventType, handler, =
capture)
{
	try
	{
		if (element.addEventListener)
			element.addEventListener(eventType, handler, capture);
		else if (element.attachEvent)
			element.attachEvent("on" + eventType, handler);
	}
	catch (e) {}
};

Spry.Utils.removeEventListener =3D function(element, eventType, handler, =
capture)
{
	try
	{
		if (element.removeEventListener)
			element.removeEventListener(eventType, handler, capture);
		else if (element.detachEvent)
			element.detachEvent("on" + eventType, handler);
	}
	catch (e) {}
};

Spry.Utils.addLoadListener =3D function(handler)
{
	if (typeof window.addEventListener !=3D 'undefined')
		window.addEventListener('load', handler, false);
	else if (typeof document.addEventListener !=3D 'undefined')
		document.addEventListener('load', handler, false);
	else if (typeof window.attachEvent !=3D 'undefined')
		window.attachEvent('onload', handler);
};

Spry.Utils.eval =3D function(str)
{
	// Call this method from your JS function when
	// you don't want the JS expression to access or
	// interfere with any local variables in your JS
	// function.

	return eval(str);
};

Spry.Utils.escapeQuotesAndLineBreaks =3D function(str)
{
	if (str)
	{
		str =3D str.replace(/\\/g, "\\\\");
		str =3D str.replace(/["']/g, "\\$&");
		str =3D str.replace(/\n/g, "\\n");
		str =3D str.replace(/\r/g, "\\r");
	}
	return str;
};

Spry.Utils.encodeEntities =3D function(str)
{
	if (str && str.search(/[&<>"]/) !=3D -1)
	{
		str =3D str.replace(/&/g, "&amp;");
		str =3D str.replace(/</g, "&lt;");
		str =3D str.replace(/>/g, "&gt;");
		str =3D str.replace(/"/g, "&quot;");
	}
	return str
};

Spry.Utils.decodeEntities =3D function(str)
{
	var d =3D Spry.Utils.decodeEntities.div;
	if (!d)
	{
		d =3D document.createElement('div');
		Spry.Utils.decodeEntities.div =3D d;
		if (!d) return str;
	}
	d.innerHTML =3D str;
	if (d.childNodes.length =3D=3D 1 && d.firstChild.nodeType =3D=3D 3 /* =
Node.TEXT_NODE */ && d.firstChild.nextSibling =3D=3D null)
		str =3D d.firstChild.data;
	else
	{
		// Hmmm, innerHTML processing of str produced content
		// we weren't expecting, so just replace entities we
		// expect folks will use in node attributes that contain
		// JavaScript.
		str =3D str.replace(/&lt;/, "<");
		str =3D str.replace(/&gt;/, ">");
		str =3D str.replace(/&quot;/, "\"");
		str =3D str.replace(/&amp;/, "&");
	}
	return str;
};

Spry.Utils.fixupIETagAttributes =3D function(inStr)
{
	var outStr =3D "";

	// Break the tag string into 3 pieces.

	var tagStart =3D inStr.match(/^<[^\s>]+\s*/)[0];
	var tagEnd =3D inStr.match(/\s*\/?>$/)[0];
	var tagAttrs =3D inStr.replace(/^<[^\s>]+\s*|\s*\/?>/g, "");

	// Write out the start of the tag.
	outStr +=3D tagStart;

	// If the tag has attributes, parse it out manually to avoid =
accidentally fixing up
	// attributes that contain JavaScript expressions.

	if (tagAttrs)
	{
		var startIndex =3D 0;
		var endIndex =3D 0;

		while (startIndex < tagAttrs.length)
		{
			// Find the '=3D' char of the attribute.
			while (tagAttrs.charAt(endIndex) !=3D '=3D' && endIndex < =
tagAttrs.length)
				++endIndex;

			// If we are at the end of the string, just write out what we've
			// collected.

			if (endIndex >=3D tagAttrs.length)
			{
				outStr +=3D tagAttrs.substring(startIndex, endIndex);
				break;
			}

			// Step past the '=3D' character and write out what we've
			// collected so far.

			++endIndex;
			outStr +=3D tagAttrs.substring(startIndex, endIndex);
			startIndex =3D endIndex;

			if (tagAttrs.charAt(endIndex) =3D=3D '"' || tagAttrs.charAt(endIndex) =
=3D=3D "'")
			{
				// Attribute is quoted. Advance us past the quoted value!
				var savedIndex =3D endIndex++;
				while (endIndex < tagAttrs.length)
				{
					if (tagAttrs.charAt(endIndex) =3D=3D tagAttrs.charAt(savedIndex))
					{
						endIndex++;
						break;
					}
					else if (tagAttrs.charAt(endIndex) =3D=3D "\\")
						endIndex++;
					endIndex++;
				}

				outStr +=3D tagAttrs.substring(startIndex, endIndex);
				startIndex =3D endIndex;
			}
			else
			{
				// This attribute value wasn't quoted! Wrap it with quotes and
				// write out everything till we hit a space, or the end of the
				// string.

				outStr +=3D "\"";
			=09
				var sIndex =3D tagAttrs.slice(endIndex).search(/\s/);
				endIndex =3D (sIndex !=3D -1) ? (endIndex + sIndex) : =
tagAttrs.length;
				outStr +=3D tagAttrs.slice(startIndex, endIndex);			=09
				outStr +=3D "\"";			=09
				startIndex =3D endIndex;
			}
		}
	}

	outStr +=3D tagEnd;

	// Write out the end of the tag.
	return outStr;
}

Spry.Utils.fixUpIEInnerHTML =3D function(inStr)
{
	var outStr =3D "";

	// Create a regular expression that will match:
	//     <!--
	//     <![CDATA[
	//     <tag>
	//     -->
	//     ]]>
	//     ]]&gt;   // Yet another workaround for an IE innerHTML bug.
	//
	// The idea here is that we only want to fix up attribute values on =
tags that
	// are not in any comments or CDATA.

	var regexp =3D new =
RegExp("<\\!--|<\\!\\[CDATA\\[|<\\w+[^<>]*>|-->|\\]\\](>|\&gt;)", "g");
	var searchStartIndex =3D 0;
	var skipFixUp =3D 0;
=09
	while (inStr.length)
	{
		var results =3D regexp.exec(inStr);
		if (!results || !results[0])
		{
			outStr +=3D inStr.substr(searchStartIndex, inStr.length - =
searchStartIndex);
			break;
		}

		if (results.index !=3D searchStartIndex)
		{
			// We found a match but it's not at the start of the inStr.
			// Create a string token for everything that precedes the match.
			outStr +=3D inStr.substr(searchStartIndex, results.index - =
searchStartIndex);
		}

		if (results[0] =3D=3D "<!--" || results[0] =3D=3D "<![CDATA[")
		{
			++skipFixUp;
			outStr +=3D results[0];
		}
		else if (results[0] =3D=3D "-->" || results[0] =3D=3D "]]>" || =
(skipFixUp && results[0] =3D=3D "]]&gt;"))
		{
			--skipFixUp;
			outStr +=3D results[0];
		}
		else if (!skipFixUp && results[0].charAt(0) =3D=3D '<')
			outStr +=3D Spry.Utils.fixupIETagAttributes(results[0]);
		else
			outStr +=3D results[0];

		searchStartIndex =3D regexp.lastIndex;
	}
=09
	return outStr;
};

Spry.Utils.getStyleProperty =3D function(element, property)
{
	try
	{
		if (element.style[property])
			return element.style[property];
		else if (element.currentStyle)
			return element.currentStyle[property];
		else if (document.defaultView && =
document.defaultView.getComputedStyle)
		{
			var style =3D document.defaultView.getComputedStyle(element, null);
			return style.getPropertyValue(property);
		}
	}
	catch (e) {}

	return null;
};

Spry.Utils.stringToXMLDoc =3D function(str)
{
	var xmlDoc =3D null;

	try
	{
		// Attempt to parse the string using the IE method.

		var xmlDOMObj =3D new ActiveXObject("Microsoft.XMLDOM");
		xmlDOMObj.async =3D false;
		xmlDOMObj.loadXML(str);
		xmlDoc =3D xmlDOMObj;
	}
	catch (e)
	{
		// The IE method didn't work. Try the Mozilla way.

		try
		{
			var domParser =3D new DOMParser;
			xmlDoc =3D domParser.parseFromString(str, 'text/xml');
		}
		catch (e)
		{
			Spry.Debug.reportError("Caught exception in =
Spry.Utils.stringToXMLDoc(): " + e + "\n");
			xmlDoc =3D null;
		}
	}

	return xmlDoc;
};

Spry.Utils.getNodesByFunc =3D function(root, func)
{
	var nodeStack =3D new Array;
	var resultArr =3D new Array;
	var node =3D root;

	while (node)
	{
		if (func(node))
			resultArr.push(node);

		if (node.hasChildNodes())
		{
			nodeStack.push(node);
			node =3D node.firstChild;
		}
		else
		{
			if (node =3D=3D root)
				node =3D null;
			else
				try { node =3D node.nextSibling; } catch (e) { node =3D null; };
		}
	=09
		while (!node && nodeStack.length > 0)
		{
			node =3D nodeStack.pop();
			if (node =3D=3D root)
				node =3D null;
			else
				try { node =3D node.nextSibling; } catch (e) { node =3D null; }
		}
	}
=09
	if (nodeStack && nodeStack.length > 0)
		Spry.Debug.trace("-- WARNING: Spry.Utils.getNodesByFunc() failed to =
traverse all nodes!\n");

	return resultArr;
};

Spry.Utils.addClassName =3D function(ele, className)
{
	if (!ele || !className || (ele.className && ele.className.search(new =
RegExp("\\b" + className + "\\b")) !=3D -1))
		return;
	ele.className +=3D (ele.className ? " " : "") + className;
};

Spry.Utils.removeClassName =3D function(ele, className)
{
	if (!ele || !className || (ele.className && ele.className.search(new =
RegExp("\\b" + className + "\\b")) =3D=3D -1))
		return;
	ele.className =3D ele.className.replace(new RegExp("\\s*\\b" + =
className + "\\b", "g"), "");
};

Spry.Utils.removeAllChildren =3D function(node)
{
	while (node && node.firstChild)
		node.removeChild(node.firstChild);
};

Spry.Utils.getFirstChildWithNodeName =3D function(node, nodeName)
{
	var child =3D node.firstChild;

	while (child)
	{
		if (child.nodeName =3D=3D nodeName)
			return child;
		child =3D child.nextSibling;
	}=20

	return null;
};

Spry.Utils.nodeContainsElementNode =3D function(node)
{
	if (node)
	{
		node =3D node.firstChild;

		while (node)
		{
			if (node.nodeType =3D=3D 1 /* Node.ELEMENT_NODE */)
				return true;

			node =3D node.nextSibling;
		}
	}
	return false;
};

Spry.Utils.getNodeText =3D function(node)
{
	var txt =3D "";
 =20
	if (!node)
		return;

	try
	{
		var child =3D node.firstChild;
=20
		while (child)
		{
			try
			{
				if (child.nodeType =3D=3D 3 /* TEXT_NODE */)
					txt +=3D Spry.Utils.encodeEntities(child.data);
				else if (child.nodeType =3D=3D 4 /* CDATA_SECTION_NODE */)
					txt +=3D child.data;
			} catch (e) { Spry.Debug.reportError("Spry.Utils.getNodeText() =
exception caught: " + e + "\n"); }

			child =3D child.nextSibling;
		}
	}
	catch (e) { Spry.Debug.reportError("Spry.Utils.getNodeText() exception =
caught: " + e + "\n"); }
 =20
	return txt;
};

Spry.Utils.CreateObjectForNode =3D function(node)
{
	if (!node)
		return null;

	var obj =3D null;
	var i =3D 0;
	var attr =3D null;

	try
	{
		for (i =3D 0; i < node.attributes.length; i++)
		{
			attr =3D node.attributes[i];
			if (attr && attr.nodeType =3D=3D 2 /* Node.ATTRIBUTE_NODE */)
			{
				if (!obj)
				{
					obj =3D new Object();
					if (!obj)
					{
						Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object =
creation failed!");
						return null;
					}
				}
	=09
				obj["@" + attr.name] =3D attr.value;
			}
		}
	}
	catch (e)
	{
		Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught =
exception while accessing attributes: " + e + "\n");
	}
 =20
	var child =3D node.firstChild;
=09
	if (child && !child.nextSibling && child.nodeType !=3D 1 /* =
Node.ELEMENT_NODE */)
	{
		// We have a single child and it's not an element. It must
		// be the text value for this node. Add it to the record set and
		// give it the column the same name as the node.

		if (!obj)
		{
			obj =3D new Object();
			if (!obj)
			{
				Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object =
creation failed!");
				return null;
			}
		}

		obj[node.nodeName] =3D Spry.Utils.getNodeText(node);
	}
 =20
	while (child)
	{
		// Add the text value for each child element. Note that
		// We skip elements that have element children (sub-elements)
		// because we don't handle multi-level data sets right now.
=09
		if (child.nodeType =3D=3D 1 /* Node.ELEMENT_NODE */)
		{
			if (!Spry.Utils.nodeContainsElementNode(child))
			{
				var txt =3D Spry.Utils.getNodeText(child);
				if (!obj)
				{
					obj =3D new Object();
					if (!obj)
					{
						Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object =
creation failed!");
						return null;
					}
				}
	 =20
				obj[child.nodeName] =3D txt;

				// Now add properties for any attributes on the child. The property
				// name will be of the form "<child.nodeName>/@<attr.name>".
				try
				{
					var namePrefix =3D child.nodeName + "/@";
				=09
					for (i =3D 0; i < child.attributes.length; i++)
					{
						attr =3D child.attributes[i];
						if (attr && attr.nodeType =3D=3D 2 /* Node.ATTRIBUTE_NODE */)
							obj[namePrefix + attr.name] =3D attr.value;
					}
				}
				catch (e)
				{
					Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught =
exception while accessing attributes: " + e + "\n");
				}
       =20
			}
			// else Spry.Debug.trace("WARNING: Skipping '" + child.nodeName + "' =
node! Multi-level data sets are not supported right now!\n");
		}

		child =3D child.nextSibling;
	}
 =20
	return obj;
};

Spry.Utils.getRecordSetFromXMLDoc =3D function(xmlDoc, path)
{
	if (!xmlDoc || !path)
		return null;

	var recordSet =3D new Object();
	recordSet.xmlDoc =3D xmlDoc;
	recordSet.xmlPath =3D path;
	recordSet.dataHash =3D new Object;
	recordSet.data =3D new Array;
	recordSet.getData =3D function() { return this.data; };

	// Use the XPath library to find the nodes that will
	// make up our data set. The result should be an array
	// of subtrees that we need to flatten.

	var ctx =3D new ExprContext(xmlDoc);
	var pathExpr =3D xpathParse(path);
	var e =3D pathExpr.evaluate(ctx);

	// XXX: Note that we should check the result type of the evaluation
	// just in case it's a boolean, string, or number value instead of
	// a node set.
 =20
	var nodeArray =3D e.nodeSetValue();

	var isDOMNodeArray =3D true;

	if (nodeArray && nodeArray.length > 0)
		isDOMNodeArray =3D nodeArray[0].nodeType !=3D 2 /* Node.ATTRIBUTE_NODE =
*/;

	var nextID =3D 0;

	// We now have the set of nodes that make up our data set
	// so process each one.

	for (var i =3D 0; i < nodeArray.length; i++)
	{
		var rowObj =3D null;
=09
		if (isDOMNodeArray)
			rowObj =3D Spry.Utils.CreateObjectForNode(nodeArray[i]);
		else // Must be a Node.ATTRIBUTE_NODE array.
		{
			rowObj =3D new Object;
			rowObj["@" + nodeArray[i].name] =3D nodeArray[i].value;
		}
=09
		if (rowObj)
		{
			// We want to make sure that every row has a unique ID and since we
			// we don't know which column, if any, in this recordSet is a unique
			// identifier, we generate a unique ID ourselves and store it under
			// the ds_RowID column in the row object.

			rowObj['ds_RowID'] =3D nextID++;
			recordSet.dataHash[rowObj['ds_RowID']] =3D rowObj;
			recordSet.data.push(rowObj);
		}
	}
 =20
	return recordSet;
};

Spry.Utils.setOptions =3D function(obj, optionsObj, =
ignoreUndefinedProps)
{
	if (!optionsObj)
		return;

	for (var optionName in optionsObj)
	{
		if (ignoreUndefinedProps && optionsObj[optionName] =3D=3D undefined)
			continue;
		obj[optionName] =3D optionsObj[optionName];
	}
};

Spry.Utils.SelectionManager =3D {};
Spry.Utils.SelectionManager.selectionGroups =3D new Object;

Spry.Utils.SelectionManager.SelectionGroup =3D function()
{
	this.selectedElements =3D new Array;
};

Spry.Utils.SelectionManager.SelectionGroup.prototype.select =3D =
function(element, className, multiSelect)
{
	var selObj =3D null;

	if (!multiSelect)
	{
		// Multiple selection is not enabled, so clear any
		// selected elements from our list.

		this.clearSelection();
	}
	else
	{
		// Multiple selection is enabled, so check to see if element
		// is already in the array. If it is, make sure the className
		// is the className that was passed in.

		for (var i =3D 0; i < this.selectedElements.length; i++)
		{
			selObj =3D this.selectedElements[i].element;

			if (selObj.element =3D=3D element)
			{
				if (selObj.className !=3D className)
				{
					Spry.Utils.removeClassName(element, selObj.className);
					Spry.Utils.addClassName(element, className);
				}
				return;
			}
		}
	}

	// Add the element to our list of selected elements.

	selObj =3D new Object;
	selObj.element =3D element;
	selObj.className =3D className;
	this.selectedElements.push(selObj);
	Spry.Utils.addClassName(element, className);
};

Spry.Utils.SelectionManager.SelectionGroup.prototype.unSelect =3D =
function(element)
{
	for (var i =3D 0; i < this.selectedElements.length; i++)
	{
		var selObj =3D this.selectedElements[i].element;
=09
		if (selObj.element =3D=3D element)
		{
			Spry.Utils.removeClassName(selObj.element, selObj.className);
			return;
		}
	}
};

Spry.Utils.SelectionManager.SelectionGroup.prototype.clearSelection =3D =
function()
{
	var selObj =3D null;

	do
	{
		selObj =3D this.selectedElements.shift();
		if (selObj)
			Spry.Utils.removeClassName(selObj.element, selObj.className);
	}
	while (selObj);
};

Spry.Utils.SelectionManager.getSelectionGroup =3D =
function(selectionGroupName)
{
	if (!selectionGroupName)
		return null;

	var groupObj =3D =
Spry.Utils.SelectionManager.selectionGroups[selectionGroupName];

	if (!groupObj)
	{
		groupObj =3D new Spry.Utils.SelectionManager.SelectionGroup();
		Spry.Utils.SelectionManager.selectionGroups[selectionGroupName] =3D =
groupObj;
	}

	return groupObj;
};

Spry.Utils.SelectionManager.select =3D function(selectionGroupName, =
element, className, multiSelect)
{
	var groupObj =3D =
Spry.Utils.SelectionManager.getSelectionGroup(selectionGroupName);

	if (!groupObj)
		return;

	groupObj.select(element, className, multiSelect);
};

Spry.Utils.SelectionManager.unSelect =3D function(selectionGroupName, =
element)
{
	var groupObj =3D =
Spry.Utils.SelectionManager.getSelectionGroup(selectionGroupName);

	if (!groupObj)
		return;

	groupObj.unSelect(element, className);
};

Spry.Utils.SelectionManager.clearSelection =3D =
function(selectionGroupName)
{
	var groupObj =3D =
Spry.Utils.SelectionManager.getSelectionGroup(selectionGroupName);

	if (!groupObj)
		return;

	groupObj.clearSelection();
};

//////////////////////////////////////////////////////////////////////
//
// Define Prototype's $() convenience function.
//
//////////////////////////////////////////////////////////////////////

function $()
{
	var elements =3D new Array();
=09
	for (var i =3D 0; i < arguments.length; i++)
	{
		var element =3D arguments[i];
		if (typeof element =3D=3D 'string')
			element =3D document.getElementById(element);
	=09
		if (arguments.length =3D=3D 1)
			return element;
	=09
		elements.push(element);
	}
=09
	return elements;
}

Spry.Utils.Notifier =3D function()
{
	this.observers =3D [];
	this.suppressNotifications =3D 0;
};

Spry.Utils.Notifier.prototype.addObserver =3D function(observer)
{
	if (!observer)
		return;

	// Make sure the observer isn't already on the list.

	var len =3D this.observers.length;
	for (var i =3D 0; i < len; i++)
	{
		if (this.observers[i] =3D=3D observer)
			return;
	}
	this.observers[len] =3D observer;
};

Spry.Utils.Notifier.prototype.removeObserver =3D function(observer)
{
	if (!observer)
		return;

	for (var i =3D 0; i < this.observers.length; i++)
	{
		if (this.observers[i] =3D=3D observer)
		{
			this.observers.splice(i, 1);
			break;
		}
	}
};

Spry.Utils.Notifier.prototype.notifyObservers =3D function(methodName, =
data)
{
	if (!methodName)
		return;

	if (!this.suppressNotifications)
	{
		var len =3D this.observers.length;
		for (var i =3D 0; i < len; i++)
		{
			var obs =3D this.observers[i];
			if (obs)
			{
				if (typeof obs =3D=3D "function")
					obs(methodName, this, data);
				else if (obs[methodName])
					obs[methodName](this, data);
			}
		}
	}
};

Spry.Utils.Notifier.prototype.enableNotifications =3D function()
{
	if (--this.suppressNotifications < 0)
	{
		this.suppressNotifications =3D 0;
		Spry.Debug.reportError("Unbalanced enableNotifications() call!\n");
	}
};

Spry.Utils.Notifier.prototype.disableNotifications =3D function()
{
	++this.suppressNotifications;
};

//////////////////////////////////////////////////////////////////////
//
// Spry.Debug
//
//////////////////////////////////////////////////////////////////////

Spry.Debug =3D {};
Spry.Debug.enableTrace =3D true;
Spry.Debug.debugWindow =3D null;

Spry.Debug.createDebugWindow =3D function()
{
	if (!Spry.Debug.enableTrace || Spry.Debug.debugWindow)
		return;
	try
	{
		Spry.Debug.debugWindow =3D document.createElement("div");
		var div =3D Spry.Debug.debugWindow;
		div.style.fontSize =3D "12px";
		div.style.fontFamily =3D "console";
		div.style.position =3D "absolute";
		div.style.width =3D "400px";
		div.style.height =3D "300px";
		div.style.overflow =3D "auto";
		div.style.border =3D "solid 1px black";
		div.style.backgroundColor =3D "white";
		div.style.color =3D "black";
		div.style.bottom =3D "0px";
		div.style.right =3D "0px";
		// div.style.opacity =3D "0.5";
		// div.style.filter =3D "alpha(opacity=3D50)";
		div.setAttribute("id", "SpryDebugWindow");
		document.body.appendChild(Spry.Debug.debugWindow);
	}
	catch (e) {}
};

Spry.Debug.debugOut =3D function(str, bgColor)
{
	if (!Spry.Debug.debugWindow)
	{
		Spry.Debug.createDebugWindow();
		if (!Spry.Debug.debugWindow)
			return;
	}

	var d =3D document.createElement("div");
	if (bgColor)
		d.style.backgroundColor =3D bgColor;
	d.innerHTML =3D str;
	Spry.Debug.debugWindow.appendChild(d);=09
};

Spry.Debug.trace =3D function(str)
{
	Spry.Debug.debugOut(str);
};

Spry.Debug.reportError =3D function(str)
{
	Spry.Debug.debugOut(str, "red");
};

//////////////////////////////////////////////////////////////////////
//
// Spry.Data
//
//////////////////////////////////////////////////////////////////////

Spry.Data =3D {};
Spry.Data.regionsArray =3D {};

Spry.Data.initRegions =3D function(rootNode)
{
	if (!rootNode)
		rootNode =3D document.body;

	var regions =3D Spry.Utils.getNodesByFunc(rootNode, function(node)
	{
		try
		{
			if (node.nodeType !=3D 1 /* Node.ELEMENT_NODE */)
				return false;

			// Region elements must have an spryregion attribute with a
			// non-empty value. An id attribute is also required so we can
			// reference the region by name if necessary.

			var attrName =3D "spry:region";
			var attr =3D node.attributes.getNamedItem(attrName);
			if (!attr)
			{
				attrName =3D "spry:detailregion";
				attr =3D node.attributes.getNamedItem(attrName);
			}
			if (attr)
			{
				if (attr.value)
				{
					attr =3D node.attributes.getNamedItem("id");
					if (!attr || !attr.value)
					{
						// The node is missing an id attribute so add one.
						node.setAttribute("id", "spryregion" + =
(++Spry.Data.initRegions.nextUniqueRegionID));
					}
=09
					return true;
				}
				else
					Spry.Debug.reportError(attrName + " attributes require one or more =
data set names as values!");
			}
		}
		catch(e) {}
		return false;
	});

	var name, dataSets, i;
 =20
	for (i =3D 0; i < regions.length; i++)
	{
		var rgn =3D regions[i];

		var isDetailRegion =3D false;

		// Get the region name.
		name =3D rgn.attributes.getNamedItem("id").value;

		attr =3D rgn.attributes.getNamedItem("spry:region");
		if (!attr)
		{
			attr =3D rgn.attributes.getNamedItem("spry:detailregion");
			isDetailRegion =3D true;
		}

		if (!attr.value)
		{
			Spry.Debug.reportError("spry:region and spry:detailregion attributes =
require one or more data set names as values!");
			continue;
		}

		// Remove the spry:region or spry:detailregion attribute so it doesn't =
appear in
		// the output generated by our processing of the dynamic region.
		rgn.attributes.removeNamedItem(attr.nodeName);

		// Remove the hiddenRegionCSS class from the rgn.
		Spry.Utils.removeClassName(rgn, =
Spry.Data.Region.hiddenRegionClassName);

		// Get the DataSets that should be bound to the region.
		dataSets =3D Spry.Data.Region.strToDataSetsArray(attr.value);

		if (!dataSets.length)
		{
			Spry.Debug.reportError("spry:region or spry:detailregion attribute =
has no data set!");
			continue;
		}
=09
		var hasBehaviorAttributes =3D false;
		var hasSpryContent =3D false;
		var dataStr =3D "";

		var parent =3D null;
		var regionStates =3D {};

		// Find all of the processing instruction regions in the region.
		// Insert comments around the regions we find so we can identify them
		// easily when tokenizing the region html string.

		var piRegions =3D Spry.Utils.getNodesByFunc(rgn, function(node)
		{
			try
			{
				if (node.nodeType =3D=3D 1 /* ELEMENT_NODE */)
				{
					var attributes =3D node.attributes;
					var numPI =3D Spry.Data.Region.PI.orderedInstructions.length;
					var lastStartComment =3D null;
					var lastEndComment =3D null;

					for (var i =3D 0; i < numPI; i++)
					{
						var piName =3D Spry.Data.Region.PI.orderedInstructions[i];
						var attr =3D attributes.getNamedItem(piName);
						if (!attr)
							continue;
=09
						var piDesc =3D Spry.Data.Region.PI.instructions[piName];
						var childrenOnly =3D (node =3D=3D rgn) ? true : =
piDesc.childrenOnly;
						var openTag =3D piDesc.getOpenTag(node, piName);
						var closeTag =3D piDesc.getCloseTag(node, piName);
=09
						if (childrenOnly)
						{
								var oComment =3D document.createComment(openTag);
								var cComment =3D document.createComment(closeTag)

								if (!lastStartComment)
									node.insertBefore(oComment, node.firstChild);
								else
									node.insertBefore(oComment, lastStartComment.nextSibling);
								lastStartComment =3D oComment;

								if (!lastEndComment)
									node.appendChild(cComment);
								else
									node.insertBefore(cComment, lastEndComment);
								lastEndComment =3D cComment;
						}
						else
						{
							var parent =3D node.parentNode;
							parent.insertBefore(document.createComment(openTag), node);
							parent.insertBefore(document.createComment(closeTag), =
node.nextSibling);
						}

						// If this is a spry:state processing instruction, record the =
state name
						// so we know that we should re-generate the region if we ever see =
that state.

						if (piName =3D=3D "spry:state")
							regionStates[attr.value] =3D true;

						node.removeAttribute(piName);
					}

					if (!hasBehaviorAttributes && =
Spry.Data.Region.enableBehaviorAttributes)
					{
						for (var behaviorAttrName in Spry.Data.Region.behaviorAttrs)
						{
							if (attributes.getNamedItem(behaviorAttrName))
							{
								hasBehaviorAttributes =3D true;
								break;
							}
						}
					}
				}
			}
			catch(e) {}
			return false;
		});
=09
		// Get the data in the region.
		dataStr =3D rgn.innerHTML;

		// Argh! IE has an innerHTML bug where it will remove the quotes =
around any
		// attribute value that it thinks is a single word. This includes =
removing quotes
		// around our data references which is problematic since a single data =
reference
		// can be replaced with multiple words. If we are running in IE, we =
have to call
		// fixUpIEInnerHTML to get around this problem.

		if (window.ActiveXObject && !Spry.Data.Region.disableIEInnerHTMLFixUp =
&& dataStr.search(/=3D\{/) !=3D -1)
		{
			if (Spry.Data.Region.debug)
				Spry.Debug.trace("<hr />Performing IE innerHTML fix up of Region: " =
+ name + "<br /><br />" + Spry.Utils.encodeEntities(dataStr));

			dataStr =3D Spry.Utils.fixUpIEInnerHTML(dataStr);
		}

		if (Spry.Data.Region.debug)
			Spry.Debug.trace("<hr />Region template markup for '" + name + "':<br =
/><br />" + Spry.Utils.encodeEntities(dataStr));

		if (!hasSpryContent)
		{
			// Clear the region.
			Spry.Utils.removeAllChildren(rgn);
		}

		// Create a Spry.Data.Region object for this region.
		var region =3D new Spry.Data.Region(rgn, name, isDetailRegion, =
dataStr, dataSets, regionStates, hasBehaviorAttributes);
		Spry.Data.regionsArray[region.name] =3D region;
	}

	Spry.Data.updateAllRegions();
};

Spry.Data.initRegions.nextUniqueRegionID =3D 0;

Spry.Data.updateRegion =3D function(regionName)
{
	if (!regionName || !Spry.Data.regionsArray || =
!Spry.Data.regionsArray[regionName])
		return;

	try { Spry.Data.regionsArray[regionName].updateContent(); }
	catch(e) { Spry.Debug.reportError("Spry.Data.updateRegion(" + =
regionName + ") caught an exception: " + e + "\n"); }
};

Spry.Data.getRegion =3D function(regionName)
{
	return Spry.Data.regionsArray[regionName];
};


Spry.Data.updateAllRegions =3D function()
{
	if (!Spry.Data.regionsArray)
		return;

	for (var regionName in Spry.Data.regionsArray)
		Spry.Data.updateRegion(regionName);
};

//////////////////////////////////////////////////////////////////////
//
// Spry.Data.DataSet
//
//////////////////////////////////////////////////////////////////////

Spry.Data.DataSet =3D function()
{
	Spry.Utils.Notifier.call(this);

	this.name =3D "";
	this.internalID =3D Spry.Data.DataSet.nextDataSetID++;
	this.curRowID =3D 0;
	this.data =3D null;
	this.unfilteredData =3D null;
	this.dataHash =3D null;
	this.columnTypes =3D new Object;
	this.filterFunc =3D null;		// non-destructive filter function
	this.filterDataFunc =3D null;	// destructive filter function

	this.distinctOnLoad =3D false;
	this.sortOnLoad =3D null;
	this.sortOrderOnLoad =3D "ascending";
	this.keepSorted =3D false;

	this.dataWasLoaded =3D false;
	this.pendingRequest =3D null;

	this.lastSortColumns =3D [];
	this.lastSortOrder =3D "";

	this.loadIntervalID =3D 0;
};

Spry.Data.DataSet.prototype =3D new Spry.Utils.Notifier();
Spry.Data.DataSet.prototype.constructor =3D Spry.Data.DataSet;

Spry.Data.DataSet.prototype.getData =3D function()
{
	return this.data;
};

Spry.Data.DataSet.prototype.getUnfilteredData =3D function()
{
	return this.unfilteredData ? this.unfilteredData : this.data;
};

Spry.Data.DataSet.prototype.getLoadDataRequestIsPending =3D function()
{
	return this.pendingRequest !=3D null;
};

Spry.Data.DataSet.prototype.getDataWasLoaded =3D function()
{
	return this.dataWasLoaded;
};

Spry.Data.DataSet.prototype.loadData =3D function()
{
	// The idea here is that folks using the base class DataSet directly
	// would change the data in the DataSet manually and then call =
loadData()
	// to fire off an async notifications to say that it was ready for =
consumption.
	//
	// Firing off data changed notificataions synchronously from this =
method
	// can wreak havoc with complicated master/detail regions that use data =
sets
	// that have master/detail relationships with other data sets. Our data =
set
	// logic already handles async data loading nicely so we use a timer to =
fire
	// off the data changed notification to insure that it happens after =
this
	// function is finished and the JS stack unwinds.
	//
	// Other classes that derive from this class and load data =
synchronously
	// inside their loadData() implementation should also fire off an async
	// notification in this same manner to avoid this same problem.

	var self =3D this;

	this.pendingRequest =3D new Object;
	this.dataWasLoaded =3D false;
	this.pendingRequest.timer =3D setTimeout(function()
	{
		self.pendingRequest =3D null;
		self.dataWasLoaded =3D true;

		if (self.filterDataFunc)
			self.filterData(self.filterDataFunc, true);

		if (self.distinctOnLoad)
			self.distinct();

		if (self.keepSorted && self.getSortColumn())
			self.sort(self.lastSortColumns, self.lastSortOrder)
		else if (self.sortOnLoad)
			self.sort(self.sortOnLoad, self.sortOrderOnLoad);
=09
		if (self.filterFunc)
			self.filter(self.filterFunc, true);
=09
		self.notifyObservers("onDataChanged");
	}, 0); =20
};

Spry.Data.DataSet.prototype.cancelLoadData =3D function()
{
	if (this.pendingRequest && this.pendingRequest.timer)
		clearTimeout(this.pendingRequest.timer);
	this.pendingRequest =3D null;
};

Spry.Data.DataSet.prototype.getCurrentRow =3D function()
{
	if (!this.data)
		return null;
	return this.dataHash[this.curRowID];
};

Spry.Data.DataSet.prototype.setCurrentRow =3D function(rowID)
{
	if (this.curRowID =3D=3D rowID)
		return;

	var nData =3D { oldRowID: this.curRowID, newRowID: rowID };
	this.curRowID =3D rowID;
	this.notifyObservers("onCurrentRowChanged", nData);
};

Spry.Data.DataSet.prototype.getRowNumber =3D function(row)
{
	if (row && this.data && this.data.length)
	{
		var numRows =3D this.data.length;
		for (var i =3D 0; i < numRows; i++)
		{
			if (this.data[i] =3D=3D row)
				return i;
		}
	}

	return 0;
};

Spry.Data.DataSet.prototype.getCurrentRowNumber =3D function()
{
	return this.getRowNumber(this.getCurrentRow());
};

Spry.Data.DataSet.prototype.setCurrentRowNumber =3D function(rowNumber)
{
	if (!this.data || rowNumber >=3D this.data.length)
	{
		Spry.Debug.trace("Invalid row number: " + rowNumber + "\n");
		return;
	}

	var rowID =3D this.data[rowNumber]["ds_RowID"];

	if (rowID =3D=3D undefined || this.curRowID =3D=3D rowID)
		return;

	this.setCurrentRow(rowID);
};

Spry.Data.DataSet.prototype.setColumnType =3D function(columnName, =
columnType)
{
	if (columnName)
		this.columnTypes[columnName] =3D columnType;
};

Spry.Data.DataSet.prototype.getColumnType =3D function(columnName)
{
	if (this.columnTypes[columnName])
		return this.columnTypes[columnName];
	return "string";
};

Spry.Data.DataSet.prototype.distinct =3D function()
{
	if (this.data)
	{
		var oldData =3D this.data;
		this.data =3D [];
		this.dataHash =3D {};

		var alreadySeenHash =3D {};
		var i =3D 0;

		for (var i =3D 0; i < oldData.length; i++)
		{
			var rec =3D oldData[i];
			var hashStr =3D "";
			for (var recField in rec)
			{
				if (recField !=3D "ds_RowID")
				{
					if (hashStr)
						hashStr +=3D ",";
					hashStr +=3D recField + ":" + "\"" + rec[recField] + "\"";
				}
			}
			if (!alreadySeenHash[hashStr])
			{
				this.data.push(rec);
				this.dataHash[rec['ds_RowID']] =3D rec;
				alreadySeenHash[hashStr] =3D true;
			}
		}
	}
};

Spry.Data.DataSet.prototype.getSortColumn =3D function() {
	return (this.lastSortColumns && this.lastSortColumns.length > 0) ? =
this.lastSortColumns[0] : "";
};

Spry.Data.DataSet.prototype.sort =3D function(columnNames, sortOrder)
{
	// columnNames can be either the name of a column to
	// sort on, or an array of column names, but it can't be
	// null/undefined.

	if (!columnNames)
		return;

	// If only one column name was specified for sorting, do a
	// secondary sort on ds_RowID so we get a stable sort order.

	if (typeof columnNames =3D=3D "string")
		columnNames =3D [ columnNames, "ds_RowID" ];
	else if (columnNames.length < 2 && columnNames[0] !=3D "ds_RowID")
		columnNames.push("ds_RowID");

	if (sortOrder =3D=3D "toggle")
	{
		if (this.lastSortColumns.length > 0 && this.lastSortColumns[0] =3D=3D =
columnNames[0] && this.lastSortOrder =3D=3D "ascending")
			sortOrder =3D "descending";
		else
			sortOrder =3D "ascending";
	}

	if (!sortOrder)
		sortOrder =3D "ascending";

	if (sortOrder !=3D "ascending" && sortOrder !=3D "descending")
	{
		Spry.Debug.reportError("Invalid sort order type specified: " + =
sortOrder + "\n");
		return;
	}

	var nData =3D {
		oldSortColumns: this.lastSortColumns,
		oldSortOrder: this.lastSortOrder,
		newSortColumns: columnNames,
		newSortOrder: sortOrder
	};
	this.notifyObservers("onPreSort", nData);

	var cname =3D columnNames[columnNames.length - 1];
	var sortfunc =3D Spry.Data.DataSet.prototype.sort.getSortFunc(cname, =
this.getColumnType(cname), sortOrder);

	for (var i =3D columnNames.length - 2; i >=3D 0; i--)
	{
		cname =3D columnNames[i];
		sortfunc =3D =
Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc(Spry.Data.DataSet=
.prototype.sort.getSortFunc(cname, this.getColumnType(cname), =
sortOrder), sortfunc);
	}

	if (this.unfilteredData)
	{
		this.unfilteredData.sort(sortfunc);
		if (this.filterFunc)
			this.filter(this.filterFunc, true);
	}
	else
		this.data.sort(sortfunc);

	this.lastSortColumns =3D columnNames.slice(0); // Copy the array.
	this.lastSortOrder =3D sortOrder;

	this.notifyObservers("onPostSort", nData);
};

Spry.Data.DataSet.prototype.sort.getSortFunc =3D function(prop, type, =
order)
{
	var sortfunc =3D null;
	if (type =3D=3D "number")
	{
		if (order =3D=3D "ascending")
			sortfunc =3D function(a, b){ return a[prop]-b[prop]; };
		else // order =3D=3D "descending"
			sortfunc =3D function(a, b){ return b[prop]-a[prop]; };
	}
	else if (type =3D=3D "date")
	{
		if (order =3D=3D "ascending")
			sortfunc =3D function(a, b)
			{
				var dA =3D a[prop];
				var dB =3D b[prop];		=09
				dA =3D dA ? (new Date(dA)) : 0;
				dB =3D dB ? (new Date(dB)) : 0;
				return dA - dB;
			};
		else // order =3D=3D "descending"
			sortfunc =3D function(a, b)
			{
				var dA =3D a[prop];
				var dB =3D b[prop];		=09
				dA =3D dA ? (new Date(dA)) : 0;
				dB =3D dB ? (new Date(dB)) : 0;
				return dB - dA;
			};
	}
	else // type =3D=3D "string"
	{
		if (order =3D=3D "ascending")
			sortfunc =3D function(a, b){ return (a[prop] < b[prop]) ? -1 : =
((a[prop] > b[prop]) ? 1 : 0) };
		else // order =3D=3D "descending"
			sortfunc =3D function(a, b){ return (a[prop] > b[prop]) ? -1 : =
((a[prop] < b[prop]) ? 1 : 0) };
	}

	return sortfunc;
};

Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc =3D =
function(funcA, funcB)
{
	return function(a, b)
	{
		var ret =3D funcA(a, b);
		if (ret =3D=3D 0)
			ret =3D funcB(a, b);
		return ret;
	};
};

Spry.Data.DataSet.prototype.filterData =3D function(filterFunc, =
filterOnly)
{
	// This is a destructive filter function.
=09
	var dataChanged =3D false;

	if (!filterFunc)
	{
		// Caller wants to remove the filter.

		this.filterDataFunc =3D null;
		dataChanged =3D true;
	}
	else
	{
		this.filterDataFunc =3D filterFunc;
	=09
		if (this.dataWasLoaded && ((this.unfilteredData && =
this.unfilteredData.length) || (this.data && this.data.length)))
		{
			if (this.unfilteredData)
			{
				this.data =3D this.unfilteredData;
				this.unfilteredData =3D null;
			}
=09
			var oldData =3D this.data;
			this.data =3D [];
			this.dataHash =3D {};
=09
			for (var i =3D 0; i < oldData.length; i++)
			{
				var newRow =3D filterFunc(this, oldData[i], i);
				if (newRow)
				{
					this.data.push(newRow);
					this.dataHash[newRow["ds_RowID"]] =3D newRow;
				}
			}
=09
			dataChanged =3D true;
		}
	}

	if (dataChanged)
	{
		if (!filterOnly)
		{
			this.disableNotifications();
			if (this.filterFunc)
				this.filter(this.filterFunc, true);
			this.enableNotifications();
		}

		this.notifyObservers("onDataChanged");
	}
};

Spry.Data.DataSet.prototype.filter =3D function(filterFunc, filterOnly)
{
	// This is a non-destructive filter function.

	var dataChanged =3D false;

	if (!filterFunc)
	{
		if (this.filterFunc && this.unfilteredData)
		{
			// Caller wants to remove the filter. Restore the unfiltered
			// data and trigger a data changed notification.
=09
			this.data =3D this.unfilteredData;
			this.unfilteredData =3D null;
			this.filterFunc =3D null;
			dataChanged =3D true;
		}
	}
	else
	{
		this.filterFunc =3D filterFunc;
	=09
		if (this.dataWasLoaded && (this.unfilteredData || (this.data && =
this.data.length)))
		{
			if (!this.unfilteredData)
				this.unfilteredData =3D this.data;
=09
			var udata =3D this.unfilteredData;
			this.data =3D [];
=09
			for (var i =3D 0; i < udata.length; i++)
			{
				var newRow =3D filterFunc(this, udata[i], i);
=09
				if (newRow)
					this.data.push(newRow);
			}
=09
			dataChanged =3D true;
		}
	}

	if (dataChanged)
		this.notifyObservers("onDataChanged");
};

Spry.Data.DataSet.prototype.startLoadInterval =3D function(interval)
{
	this.stopLoadInterval();
	if (interval > 0)
	{
		var self =3D this;
		this.loadInterval =3D interval;
		this.loadIntervalID =3D setInterval(function() { self.loadData(); }, =
interval);
	}
};

Spry.Data.DataSet.prototype.stopLoadInterval =3D function()
{
	if (this.loadIntervalID)
		clearInterval(this.loadIntervalID);
	this.loadInterval =3D 0;
	this.loadIntervalID =3D null;
};

Spry.Data.DataSet.nextDataSetID =3D 0;

//////////////////////////////////////////////////////////////////////
//
// Spry.Data.XMLDataSet
//
//////////////////////////////////////////////////////////////////////

Spry.Data.XMLDataSet =3D function(dataSetURL, dataSetPath, =
dataSetOptions)
{
	// Call the constructor for our DataSet base class so that
	// our base class properties get defined. We'll call setOptions
	// manually after we set up our XMLDataSet properties.

	Spry.Data.DataSet.call(this);
=09
	// XMLDataSet Properties:

	this.url =3D dataSetURL;
	this.xpath =3D dataSetPath;
	this.doc =3D null;
	this.dataSetsForDataRefStrings =3D new Array;
	this.hasDataRefStrings =3D false;
	this.useCache =3D true;

	// Create a loadURL request object to store any load options
	// the caller specified. We'll fill in the URL at the last minute
	// before we make the actual load request because our URL needs
	// to be processed at the last possible minute in case it contains
	// data references.

	this.requestInfo =3D new Spry.Utils.loadURL.Request();
	this.requestInfo.extractRequestOptions(dataSetOptions, true);

	// If the caller wants to use "POST" to fetch the data, but didn't
	// provide the content type, default to x-www-form-urlencoded.

	if (this.requestInfo.method =3D=3D "POST")
	{
		if (!this.requestInfo.headers)
			this.requestInfo.headers =3D {};
		if (!this.requestInfo.headers['Content-Type'])
			this.requestInfo.headers['Content-Type'] =3D =
"application/x-www-form-urlencoded; charset=3DUTF-8";
	}

	Spry.Utils.setOptions(this, dataSetOptions, true);
=09
	this.recalculateDataSetDependencies();

	if (this.loadInterval > 0)
		this.startLoadInterval(this.loadInterval);
}; // End of Spry.Data.XMLDataSet() constructor.

Spry.Data.XMLDataSet.prototype =3D new Spry.Data.DataSet();
Spry.Data.XMLDataSet.prototype.constructor =3D Spry.Data.XMLDataSet;

Spry.Data.XMLDataSet.prototype.recalculateDataSetDependencies =3D =
function()
{
	this.hasDataRefStrings =3D false;

	if (!this.url)
		return;

	// Clear all old callbacks that may have been registered.

	var i =3D 0;
	for (i =3D 0; i < this.dataSetsForDataRefStrings.length; i++)
	{
		var ds =3D this.dataSetsForDataRefStrings[i];
		if (ds)
			ds.removeObserver(this);
	}

	// Now run through the strings that may contain data references and =
figure
	// out what data sets they require. Note that the data references in =
these
	// strings must be fully qualified with a data set name. (ex: =
{dsDataSetName::columnName})

	this.dataSetsForDataRefStrings =3D new Array();

	var regionStrs =3D [ this.url, this.xpath, this.requestInfo.postData ];

	// If postData exists, and is a string, we want to check it for data =
refs.
	var postData =3D this.requestInfo.postData;
	if (postData && (typeof postData) =3D=3D "string")
		regionStrs.push(postData);

	var dsCount =3D 0;

	for (var n =3D 0; n < regionStrs.length; n++)
	{
		var tokens =3D Spry.Data.Region.getTokensFromStr(regionStrs[n]);

		for (i =3D 0; tokens && i < tokens.length; i++)
		{
			if (tokens[i].search(/{[^}:]+::[^}]+}/) !=3D -1)
			{
				var dsName =3D tokens[i].replace(/^\{|::.*\}/g, "");
				var ds =3D null;
				if (!this.dataSetsForDataRefStrings[dsName])
				{
					try { ds =3D eval(dsName); } catch (e) { ds =3D null; }
=09
					if (dsName && ds)
					{
						// The dataSetsForDataRefStrings array serves as both an
						// array of data sets and a hash lookup by name.

						this.dataSetsForDataRefStrings[dsName] =3D ds;
						this.dataSetsForDataRefStrings[dsCount++] =3D ds;
						this.hasDataRefStrings =3D true;
					}
				}
			}
		}
	}

	// Set up observers on any data sets our URL depends on.

	for (i =3D 0; i < this.dataSetsForDataRefStrings.length; i++)
	{
		var ds =3D this.dataSetsForDataRefStrings[i];
		ds.addObserver(this);
	}
};

Spry.Data.XMLDataSet.prototype.attemptLoadData =3D function()
{
	// We only want to trigger a load when all of our data sets have data!
	for (var i =3D 0; i < this.dataSetsForDataRefStrings.length; i++)
	{
		var ds =3D this.dataSetsForDataRefStrings[i];
		if (ds.getLoadDataRequestIsPending() || !ds.getDataWasLoaded())
			return;
	}

	this.loadData();
};

Spry.Data.XMLDataSet.prototype.onCurrentRowChanged =3D function(ds, =
data)
{
	this.attemptLoadData();
};

Spry.Data.XMLDataSet.prototype.onPostSort =3D function(ds, data)
{
	this.attemptLoadData();
};
		=09
Spry.Data.XMLDataSet.prototype.onDataChanged =3D function(ds, data)
{
	this.attemptLoadData();
};
		=09
Spry.Data.XMLDataSet.prototype.loadData =3D function()
{
	if (!this.url || !this.xpath)
		return;

	this.cancelLoadData();

	var url =3D this.url;
	var postData =3D this.requestInfo.postData;

	if (this.hasDataRefStrings)
	{
		var allDataSetsReady =3D true;

		for (var i =3D 0; i < this.dataSetsForDataRefStrings.length; i++)
		{
			var ds =3D this.dataSetsForDataRefStrings[i];
			if (ds.getLoadDataRequestIsPending())
				allDataSetsReady =3D false;
			else if (!ds.getDataWasLoaded())
			{
				// Kick off the load of this data set!
				ds.loadData();
				allDataSetsReady =3D false;
			}
		}

		// If our data sets aren't ready, just return. We'll
		// get called back to load our data when they are all
		// done.

		if (!allDataSetsReady)
			return;

		url =3D Spry.Data.Region.processDataRefString(null, this.url, =
this.dataSetsForDataRefStrings);
		if (!url)
			return;
		=09
		if (postData && (typeof postData) =3D=3D "string")
			postData =3D Spry.Data.Region.processDataRefString(null, postData, =
this.dataSetsForDataRefStrings);
	}

	this.notifyObservers("onPreLoad");

	this.data =3D null;
	this.dataWasLoaded =3D false;
	this.unfilteredData =3D null;
	this.dataHash =3D null;
	this.curRowID =3D 0;

	// At this point the url should've been processed if it contained any
	// data references. Set the url of the requestInfo structure and pass =
it
	// to LoadManager.loadData().

	var req =3D this.requestInfo.clone();
	req.url =3D url;
	req.postData =3D postData;

	this.pendingRequest =3D new Object;
	this.pendingRequest.data =3D =
Spry.Data.XMLDataSet.LoadManager.loadData(req, this, this.useCache);
};

Spry.Data.XMLDataSet.prototype.cancelLoadData =3D function()
{
	if (this.pendingRequest)
	{
		=
Spry.Data.XMLDataSet.LoadManager.cancelLoadData(this.pendingRequest.data,=
 this);
		this.pendingRequest =3D null;
	}
};

Spry.Data.XMLDataSet.prototype.getURL =3D function() { return this.url; =
};
Spry.Data.XMLDataSet.prototype.setURL =3D function(url, requestOptions)
{
	if (this.url =3D=3D url)
		return;
	this.url =3D url;

	if (requestOptions)
		this.requestInfo.extractRequestOptions(requestOptions);

	this.cancelLoadData();
	this.recalculateDataSetDependencies();
	this.dataWasLoaded =3D false;
};
Spry.Data.XMLDataSet.prototype.getDocument =3D function() { return =
this.doc; };
Spry.Data.XMLDataSet.prototype.getXPath =3D function() { return =
this.xpath; };
Spry.Data.XMLDataSet.prototype.setXPath =3D function(path)
{
	if (this.xpath !=3D path)
	{
		this.xpath =3D path;
		if (this.dataWasLoaded && this.doc)
			this.setDataFromDoc(this.doc);
	}
};

Spry.Data.XMLDataSet.prototype.setDataFromDoc =3D function(doc)
{
	this.pendingRequest =3D null;

	var rs =3D null;

	rs =3D Spry.Utils.getRecordSetFromXMLDoc(doc, =
Spry.Data.Region.processDataRefString(null, this.xpath, =
this.dataSetsForDataRefStrings));

	if (!rs)
	{
		Spry.Debug.reportError("Spry.Data.XMLDataSet.setDataFromDoc() failed =
to create dataSet '" + this.name + "'for '" + this.xpath + "' - " + =
this.url + "\n");
		return;
	}

	this.doc =3D rs.xmlDoc;
	this.data =3D rs.data;
	this.dataHash =3D rs.dataHash;
	this.dataWasLoaded =3D (this.doc !=3D null);

	// If there is a data filter installed, run it.

	if (this.filterDataFunc)
		this.filterData(this.filterDataFunc, true);

	// If the distinct flag was set, run through all the records in the =
recordset
	// and toss out any that are duplicates.

	if (this.distinctOnLoad)
		this.distinct();

	// If sortOnLoad was set, sort the data based on the columns
	// specified in sortOnLoad.

	if (this.keepSorted && this.getSortColumn())
		this.sort(this.lastSortColumns, this.lastSortOrder)
	else if (this.sortOnLoad)
		this.sort(this.sortOnLoad, this.sortOrderOnLoad);

	// If there is a view filter installed, run it.

	if (this.filterFunc)
		this.filter(this.filterFunc, true);

	// The default "current" row is the first row of the data set.
	if (this.data && this.data.length > 0)
		this.curRowID =3D this.data[0]['ds_RowID'];
	else
		this.curRowID =3D 0;

	this.notifyObservers("onPostLoad");
	this.notifyObservers("onDataChanged");
};

Spry.Data.XMLDataSet.prototype.onRequestResponse =3D =
function(cachedRequest, req)
{
	this.setDataFromDoc(cachedRequest.doc);
};

Spry.Data.XMLDataSet.prototype.onRequestError =3D =
function(cachedRequest, req)
{
	this.notifyObservers("onLoadError", req);
	// =
Spry.Debug.reportError("Spry.Data.XMLDataSet.LoadManager.CachedRequest.lo=
adDataCallback(" + req.xhRequest.status + ") failed to load: " + req.url =
+ "\n");
};

Spry.Data.XMLDataSet.LoadManager =3D {};
Spry.Data.XMLDataSet.LoadManager.cache =3D [];

Spry.Data.XMLDataSet.LoadManager.CachedRequest =3D function(reqInfo)
{
	Spry.Utils.Notifier.call(this);

	this.reqInfo =3D reqInfo;
	this.doc =3D null;
	this.timer =3D null;
	this.state =3D =
Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED;
};

Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype =3D new =
Spry.Utils.Notifier();
Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.constructor =3D =
Spry.Data.XMLDataSet.LoadManager.CachedRequest;

Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED      =3D 1;
Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED  =3D 2;
Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_FAILED     =3D 3;
Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL =3D 4;

Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.loadDataCallback=
 =3D function(req)
{
	if (req.xhRequest.readyState !=3D 4)
		return;

	var xmlDoc =3D req.xhRequest.responseXML;

	if (req.xhRequest.status !=3D 200)
	{
		if (req.xhRequest.status =3D=3D 0)
		{
			// The page that is attempting to load data was probably loaded with
			// a file:// url. Mozilla based browsers will actually provide the =
complete DOM
			// tree for the data, but IE provides an empty document node so try =
to parse
			// the xml text manually to create a dom tree we can use.

			if (req.xhRequest.responseText && (!xmlDoc || !xmlDoc.firstChild))
				xmlDoc =3D Spry.Utils.stringToXMLDoc(req.xhRequest.responseText);
		}
	}

	if (!xmlDoc  || !xmlDoc.firstChild || xmlDoc.firstChild.nodeName =3D=3D =
"parsererror")
	{
		this.state =3D =
Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_FAILED;
		this.notifyObservers("onRequestError", req);
		this.observers.length =3D 0; // Clear the observers list.
		return;
	}

	this.doc =3D xmlDoc;
	this.state =3D =
Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL;

	// Notify all of the cached request's observers!
	this.notifyObservers("onRequestResponse", req);

	// Clear the observers list.
	this.observers.length =3D 0;
};

Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.loadData =3D =
function()
{
	// IE will synchronously fire our loadDataCallback() during the call
	// to an async Spry.Utils.loadURL() if the data for the url is already
	// in the browser's local cache. This can wreak havoc with complicated =
master/detail
	// regions that use data sets that have master/detail relationships =
with other
	// data sets. Our data set logic already handles async data loading =
nicely so we
	// use a timer to fire off the async Spry.Utils.loadURL() call to =
insure that any
	// data loading happens asynchronously after this function is finished.

	var self =3D this;
	this.cancelLoadData();
	this.doc =3D null;
	this.state =3D =
Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED;

	var reqInfo =3D this.reqInfo.clone();
	reqInfo.successCallback =3D function(req) { self.loadDataCallback(req); =
};
	reqInfo.errorCallback =3D reqInfo.successCallback;

	this.timer =3D setTimeout(function()
	{
		self.timer =3D null;
		Spry.Utils.loadURL(reqInfo.method, reqInfo.url, reqInfo.async, =
reqInfo.successCallback, reqInfo);
	}, 0); =20
};

Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.cancelLoadData =
=3D function()
{
	if (this.state =3D=3D =
Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED)
	{
		if (this.timer)
		{
			this.timer.clearTimeout();
			this.timer =3D null;
		}

		this.doc =3D null;
		this.state =3D =
Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED;
	}
};

Spry.Data.XMLDataSet.LoadManager.getCacheKey =3D function(reqInfo)
{
	return reqInfo.method + "::" + reqInfo.url + "::" + reqInfo.postData + =
"::" + reqInfo.username;
};

Spry.Data.XMLDataSet.LoadManager.loadData =3D function(reqInfo, ds, =
useCache)
{
	if (!reqInfo)
		return null;

	var cacheObj =3D null;
	var cacheKey =3D null;

	if (useCache)
	{
		cacheKey =3D Spry.Data.XMLDataSet.LoadManager.getCacheKey(reqInfo);
		cacheObj =3D Spry.Data.XMLDataSet.LoadManager.cache[cacheKey];
	}

	if (cacheObj)
	{
		if (cacheObj.state =3D=3D =
Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED)
		{
			if (ds)
				cacheObj.addObserver(ds);
			return cacheObj;
		}
		else if (cacheObj.state =3D=3D =
Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL)
		{
			// Data is already cached so if we have a data set, trigger an async =
call
			// that tells it to load its data.
			if (ds)
				setTimeout(function() { ds.setDataFromDoc(cacheObj.doc); }, 0);
			return cacheObj;
		}
	}

	// We're either loading this url for the first time, or an error =
occurred when
	// we last tried to load it, or the caller requested a forced load.

	if (!cacheObj)
	{
		cacheObj =3D new =
Spry.Data.XMLDataSet.LoadManager.CachedRequest(reqInfo);
		if (useCache)
		{
			Spry.Data.XMLDataSet.LoadManager.cache[cacheKey] =3D cacheObj;

			// Add an observer that will remove the cacheObj from the cache
			// if there is a load request failure.
			cacheObj.addObserver({ onRequestError: function() { =
Spry.Data.XMLDataSet.LoadManager.cache[cacheKey] =3D undefined; }});
		}
	}

	if (ds)
		cacheObj.addObserver(ds);

	cacheObj.loadData();

	return cacheObj;
};

Spry.Data.XMLDataSet.LoadManager.cancelLoadData =3D function(cacheObj, =
ds)
{
	if (cacheObj)
	{
		if (ds)
			cacheObj.removeObserver(ds);
		else
			cacheObj.cancelLoadData();
	}
};

//////////////////////////////////////////////////////////////////////
//
// Spry.Data.Region
//
//////////////////////////////////////////////////////////////////////
=20
Spry.Data.Region =3D function(regionNode, name, isDetailRegion, data, =
dataSets, regionStates, hasBehaviorAttributes)
{
	this.regionNode =3D regionNode;
	this.name =3D name;
	this.isDetailRegion =3D isDetailRegion;
	this.data =3D data;
	this.dataSets =3D dataSets;
	this.hasBehaviorAttributes =3D hasBehaviorAttributes;
	this.tokens =3D null;
	this.currentState =3D null;
	this.states =3D { ready: true };

	Spry.Utils.setOptions(this.states, regionStates);

	// Add the region as an observer to the dataSet!
	for (var i =3D 0; i < this.dataSets.length; i++)
	{
		var ds =3D this.dataSets[i];

		try=20
		{
			if (ds)
				ds.addObserver(this);
		}
		catch(e) { Spry.Debug.reportError("Failed to add '" + this.name + "' =
as a dataSet observer!\n"); }
	}
}; // End of Spry.Data.Region() constructor.

Spry.Data.Region.hiddenRegionClassName =3D "SpryHiddenRegion";
Spry.Data.Region.evenRowClassName =3D "even";
Spry.Data.Region.oddRowClassName =3D "odd";
Spry.Data.Region.notifiers =3D {};

Spry.Data.Region.addObserver =3D function(regionID, observer)
{
	var n =3D Spry.Data.Region.notifiers[regionID];
	if (!n)
	{
		n =3D new Spry.Utils.Notifier();
		Spry.Data.Region.notifiers[regionID] =3D n;
	}
	n.addObserver(observer);
};

Spry.Data.Region.removeObserver =3D function(regionID, observer)
{
	var n =3D Spry.Data.Region.notifiers[regionID];
	if (n)
		n.removeObserver(observer);
};

Spry.Data.Region.notifyObservers =3D function(methodName, regionID)
{
	var n =3D Spry.Data.Region.notifiers[regionID];
	if (n)
		n.notifyObservers(methodName, { regionID: regionID });
};

Spry.Data.Region.RS_Error =3D 0x01;
Spry.Data.Region.RS_LoadingData =3D 0x02;
Spry.Data.Region.RS_PreUpdate =3D 0x04;
Spry.Data.Region.RS_PostUpdate =3D 0x08;

Spry.Data.Region.prototype.getState =3D function()
{
	return this.currentState;
};

Spry.Data.Region.prototype.setState =3D function(stateName, =
suppressNotfications)
{
	this.currentState =3D stateName;

	// If the region has content that is specific to this
	// state, regenerate the region so that its markup is updated.

	if (this.states[stateName])
	{
		if (!suppressNotfications)
			Spry.Data.Region.notifyObservers("onPreUpdate", this.name);
=09
		// Make the region transform the xml data. The result is
		// a string that we need to parse and insert into the document.
		var str =3D this.transform();
=09
		// Clear out any previous transformed content.
		// this.clearContent();
=09
		if (Spry.Data.Region.debug)
			Spry.Debug.trace("<hr />Generated region markup for '" + this.name + =
"':<br /><br />" + Spry.Utils.encodeEntities(str));

		// Now insert the new transformed content into the document.
		this.regionNode.innerHTML =3D str;
=09
		// Now run through the content looking for attributes
		// that tell us what behaviors to attach to each element.
		if (this.hasBehaviorAttributes)
			this.attachBehaviors();
=09
		if (!suppressNotfications)
			Spry.Data.Region.notifyObservers("onPostUpdate", this.name);
	}
};

Spry.Data.Region.prototype.getDataSets =3D function()
{
	return this.dataSets;
};

Spry.Data.Region.prototype.addDataSet =3D function(aDataSet)
{
	if (!aDataSet)
		return;

	if (!this.dataSets)
		this.dataSets =3D new Array;

	// Check to see if the data set is already in our list.

	for (var i =3D 0; i < this.dataSets.length; i++)
	{
		if (this.dataSets[i] =3D=3D aDataSet)
			return; // It's already in our list!
	}

	this.dataSets.push(aDataSet);
	aDataSet.addObserver(this);
};

Spry.Data.Region.prototype.removeDataSet =3D function(aDataSet)
{
	if (!aDataSet || this.dataSets)
		return;

	for (var i =3D 0; i < this.dataSets.length; i++)
	{
		if (this.dataSets[i] =3D=3D aDataSet)
		{
			this.dataSets.splice(i, 1);
			aDataSet.removeObserver(this);
			return;
		}
	}
};

Spry.Data.Region.prototype.onPreLoad =3D function(dataSet)
{
	if (this.currentState !=3D "loading")
		this.setState("loading");
};

Spry.Data.Region.prototype.onLoadError =3D function(dataSet)
{
	if (this.currentState !=3D "error")
		this.setState("error");
	Spry.Data.Region.notifyObservers("onError", this.name);
};

Spry.Data.Region.prototype.onCurrentRowChanged =3D function(dataSet, =
data)
{
	if (this.isDetailRegion)
		this.updateContent();
};

Spry.Data.Region.prototype.onPostSort =3D function(dataSet, data)
{
	this.updateContent();
};

Spry.Data.Region.prototype.onDataChanged =3D function(dataSet, data)
{
	this.updateContent();
};

Spry.Data.Region.enableBehaviorAttributes =3D true;
Spry.Data.Region.behaviorAttrs =3D {};

Spry.Data.Region.behaviorAttrs["spry:select"] =3D
{
	attach: function(node, value)
	{
		var selectGroupName =3D null;
		try { selectGroupName =3D =
node.attributes.getNamedItem("spry:selectgroup").value; } catch (e) {}
		if (!selectGroupName)
			selectGroupName =3D "default";

		Spry.Utils.addEventListener(node, "click", function(event) { =
Spry.Utils.SelectionManager.select(selectGroupName, node, value); }, =
false);
	=09
		if (node.attributes.getNamedItem("spry:selected"))
			Spry.Utils.SelectionManager.select(selectGroupName, node, value);
	}
};

Spry.Data.Region.behaviorAttrs["spry:hover"] =3D
{
	attach: function(node, value)
	{
		Spry.Utils.addEventListener(node, "mouseover", function(event){ =
Spry.Utils.addClassName(node, value); }, false);
		Spry.Utils.addEventListener(node, "mouseout", function(event){ =
Spry.Utils.removeClassName(node, value); }, false);
	}
};

Spry.Data.Region.prototype.attachBehaviors =3D function()
{
	Spry.Utils.getNodesByFunc(this.regionNode, function(node)
	{
		if (!node)
			return false;
		try
		{
			var attrs =3D node.attributes;
			for (var i =3D 0; i < attrs.length; i++)
			{
				var attr =3D attrs[i];
				var behavior =3D =
Spry.Data.Region.behaviorAttrs[attr.nodeName.toLowerCase()];
				if (behavior)
					behavior.attach(node, attr.value);
			}
		}
		catch(e)
		{
		}

		return false;
	});
};

Spry.Data.Region.prototype.updateContent =3D function()
{
	var allDataSetsReady =3D true;

	var dsArray =3D this.getDataSets();

	if (!dsArray || dsArray.length < 1)
	{
		Spry.Debug.reportError("updateContent(): Region '" + this.name + "' =
has no data set!\n");
		return;
	}

	for (var i =3D 0; i < dsArray.length; i++)
	{
		var ds =3D dsArray[i];

		if (ds)
		{
			if (ds.getLoadDataRequestIsPending())
				allDataSetsReady =3D false;
			else if (!ds.getDataWasLoaded())
			{
				// Kick off the loading of the data if it hasn't happened yet.
				ds.loadData();
				allDataSetsReady =3D false;
			}
		}
	}

	if (!allDataSetsReady)
	{
		Spry.Data.Region.notifyObservers("onLoadingData", this.name);

		// Just return, this method will get called again automatically
		// as each data set load completes!
		return;
	}

	this.setState("ready");
};

Spry.Data.Region.prototype.clearContent =3D function()
{
	Spry.Utils.removeAllChildren(this.regionNode);
};

Spry.Data.Region.processContentPI =3D function(inStr)
{
	var outStr =3D "";
	var regexp =3D /<!--\s*<\/?spry:content\s*[^>]*>\s*-->/mg;
	var searchStartIndex =3D 0;
	var processingContentTag =3D 0;

	while (inStr.length)
	{
		var results =3D regexp.exec(inStr);
		if (!results || !results[0])
		{
			outStr +=3D inStr.substr(searchStartIndex, inStr.length - =
searchStartIndex);
			break;
		}

		if (!processingContentTag && results.index !=3D searchStartIndex)
		{
			// We found a match but it's not at the start of the inStr.
			// Create a string token for everything that precedes the match.
			outStr +=3D inStr.substr(searchStartIndex, results.index - =
searchStartIndex);
		}

		if (results[0].search(/<\//) !=3D -1)
		{
			--processingContentTag;
			if (processingContentTag)
				Spry.Debug.reportError("Nested spry:content regions are not =
allowed!\n");
		}
		else
		{
			++processingContentTag;
			var dataRefStr =3D results[0].replace(/.*\bdataref=3D"/, "");
			outStr +=3D dataRefStr.replace(/".*$/, "");
		}
	=09
		searchStartIndex =3D regexp.lastIndex;
	}

	return outStr;
}

Spry.Data.Region.prototype.tokenizeData =3D function(dataStr)
{
	// If there is no data, there's nothing to do.
	if (!dataStr)
		return null;

	var rootToken =3D new =
Spry.Data.Region.Token(Spry.Data.Region.Token.LIST_TOKEN, null, null, =
null);
	var tokenStack =3D new Array;
	var parseStr =3D Spry.Data.Region.processContentPI(dataStr);

	tokenStack.push(rootToken);

	// Create a regular expression that will match one of the following:
	//
	//   <spry:repeat select=3D"regionName" test=3D"true">
	//   </spry:repeat>
	//   {valueReference}
	var regexp =3D =
/((<!--\s*){0,1}<\/{0,1}spry:[^>]+>(\s*-->){0,1})|((\{|%7[bB])[^\}\s%]+(\=
}|%7[dD]))/mg;
	var searchStartIndex =3D 0;

	while(parseStr.length)
	{
		var results =3D regexp.exec(parseStr);
		var token =3D null;
	=09
		if (!results || !results[0])
		{
			// If we get here, the rest of the parseStr should be
			// just a plain string. Create a token for it and then
			// break out of the list.
			var str =3D parseStr.substr(searchStartIndex, parseStr.length - =
searchStartIndex);
			token =3D new =
Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN, null, str, =
str);
			tokenStack[tokenStack.length - 1].addChild(token);
			break;
		}

		if (results.index !=3D searchStartIndex)
		{
			// We found a match but it's not at the start of the parseStr.
			// Create a string token for everything that precedes the match.
			var str =3D parseStr.substr(searchStartIndex, results.index - =
searchStartIndex);
			token =3D new =
Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN, null, str, =
str);
			tokenStack[tokenStack.length - 1].addChild(token);
		}

		// We found a string that needs to be turned into a token. Create a =
token
		// for it and then update parseStr for the next iteration.
		if (results[0].search(/^({|%7[bB])/) !=3D -1 /* results[0].charAt(0) =
=3D=3D '{' */)
		{
			var valueName =3D results[0];
			var regionStr =3D results[0];
		=09
			// Strip off brace and url encode brace chars inside the valueName.

			valueName =3D valueName.replace(/^({|%7[bB])/, "");
			valueName =3D valueName.replace(/(}|%7[dD])$/, "");

			// Check to see if our value begins with the name of a data set.
			// For example: {dataSet:tokenValue}. If it is, we need to save
			// the data set name so we know which data set to use to get the
			// value for the token during the region transform.

			var dataSetName =3D null;
			var splitArray =3D valueName.split(/::/);

			if (splitArray.length > 1)
			{
				dataSetName =3D splitArray[0];
				valueName =3D splitArray[1];
			}

			// Convert any url encoded braces to regular brace chars.

			regionStr =3D regionStr.replace(/^%7[bB]/, "{");
			regionStr =3D regionStr.replace(/%7[dD]$/, "}");

			// Now create a token for the placeholder.

			token =3D new =
Spry.Data.Region.Token(Spry.Data.Region.Token.VALUE_TOKEN, dataSetName, =
valueName, new String(regionStr));
			tokenStack[tokenStack.length - 1].addChild(token);
		}
		else if (results[0].charAt(0) =3D=3D '<')
		{
			// Extract out the name of the processing instruction.
			var piName =3D results[0].replace(/^(<!--\s*){0,1}<\/?/, "");
			piName =3D piName.replace(/>(\s*-->){0,1}|\s.*$/, "");
		=09
			if (results[0].search(/<\//) !=3D -1 /* results[0].charAt(1) =3D=3D =
'/' */)
			{
				// We found a processing instruction close tag. Pop the top of the
				// token stack!
				//
				// XXX: We need to make sure that the close tag name matches the one
				//      on the top of the token stack!
				if (tokenStack[tokenStack.length - 1].tokenType !=3D =
Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN)
				{
					Spry.Debug.reportError("Invalid processing instruction close tag: " =
+ piName + " -- " + results[0] + "\n");
					return null;
				}

				tokenStack.pop();
			}
			else
			{
				// Create the processing instruction token, add it as a child of the =
token
				// at the top of the token stack, and then push it on the stack so =
that it
				// becomes the parent of any tokens between it and its close tag.

				var piDesc =3D Spry.Data.Region.PI.instructions[piName];

				if (piDesc)
				{
					var dataSet =3D null;

					var selectedDataSetName =3D "";
					if (results[0].search(/^.*\bselect=3D\"/) !=3D -1)
					{
						selectedDataSetName =3D results[0].replace(/^.*\bselect=3D\"/, =
"");
						selectedDataSetName =3D selectedDataSetName.replace(/".*$/, "");
=09
						if (selectedDataSetName)
						{
							try
							{
								dataSet =3D eval(selectedDataSetName);
							}
							catch (e)
							{
								Spry.Debug.reportError("Caught exception in tokenizeData() while =
trying to retrieve data set (" + selectedDataSetName + "): " + e + =
"\n");
								dataSet =3D null;
								selectedDataSetName =3D "";
							}
						}
					}

					// Check if the repeat has a test attribute.
					var jsExpr =3D null;
					if (results[0].search(/^.*\btest=3D\"/) !=3D -1)
					{
						jsExpr =3D results[0].replace(/^.*\btest=3D\"/, "");
						jsExpr =3D jsExpr.replace(/".*$/, "");
						jsExpr =3D Spry.Utils.decodeEntities(jsExpr);
					}

					// Check if the instruction has a state name specified.
					var regionState =3D null;
					if (results[0].search(/^.*\bname=3D\"/) !=3D -1)
					{
						regionState =3D results[0].replace(/^.*\bname=3D\"/, "");
						regionState =3D regionState.replace(/".*$/, "");
						regionState =3D Spry.Utils.decodeEntities(regionState);
					}

					var piData =3D new Spry.Data.Region.Token.PIData(piName, =
selectedDataSetName, jsExpr, regionState);

					token =3D new =
Spry.Data.Region.Token(Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKE=
N, dataSet, piData, new String(results[0]));

					tokenStack[tokenStack.length - 1].addChild(token);
					tokenStack.push(token);
				}
				else
				{
					Spry.Debug.reportError("Unsupported region processing instruction: =
" + results[0] + "\n");
					return null;
				}
			}
		}
		else
		{
			Spry.Debug.reportError("Invalid region token: " + results[0] + "\n");
			return null;
		}

		searchStartIndex =3D regexp.lastIndex;
	}

	return rootToken;
};

Spry.Data.Region.prototype.processTokenChildren =3D function(token, =
processContext)
{
	// The use of an array to gather the strings returned from processing
	// the child tokens is actually a performance enhancement for IE.
	// The original code:
	//
	//     for (var i =3D 0; i < token.children.length; i++)
	//       outputStr +=3D this.processTokens(token.children[i], =
processContext);
	//
	// seemed to cause an n-square problem in IE. Using an array with
	// a final join reduced one of our test cases (SelectExample.html) from =
over
	// a minute to about 15 seconds.
=09
	var strArr =3D [ "" ];
	var len =3D token.children.length;
	var children =3D token.children;
=09
	for (var i =3D 0; i < len; i++)
		strArr.push(this.processTokens(children[i], processContext));

	return strArr.join("");
};

Spry.Data.Region.prototype.processTokens =3D function(token, =
processContext)
{
	if (!processContext)
	{
		processContext =3D new Spry.Data.Region.ProcessingContext(this);
		if (!processContext)
			return "";
	}

	var outputStr =3D "";
	var i =3D 0;

	switch(token.tokenType)
	{
		case Spry.Data.Region.Token.LIST_TOKEN:
			outputStr +=3D this.processTokenChildren(token, processContext);
			break;
		case Spry.Data.Region.Token.STRING_TOKEN:
			outputStr +=3D token.data;
			break;
		case Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN:
			if (token.data.name =3D=3D "spry:repeat")
			{
				var dataSet =3D null;

				if (token.dataSet)
					dataSet =3D token.dataSet;
				else
					dataSet =3D this.dataSets[0];

				if (dataSet)
				{
					var dsContext =3D processContext.getDataSetContext(dataSet);
					if (!dsContext)
					{
						Spry.Debug.reportError("processTokens() failed to get a data set =
context!\n");
						break;
					}

					var numRows =3D dsContext.getNumRows();
					var dataSetRows =3D dataSet.getData();
					dsContext.pushState();

					for (i =3D 0; i < numRows; i++)
					{
						dsContext.setRowIndex(i);
						var testVal =3D true;
						if (token.data.jsExpr)
						{
							var jsExpr =3D =
Spry.Data.Region.processDataRefString(processContext, token.data.jsExpr, =
null, true);
							try { testVal =3D Spry.Utils.eval(jsExpr); }
							catch(e)
							{
								Spry.Debug.trace("Caught exception in =
Spry.Data.Region.prototype.processTokens while evaluating: " + jsExpr + =
"\n    Exception:" + e + "\n");
								testVal =3D true;
							}
						}

						if (testVal)
							outputStr +=3D this.processTokenChildren(token, processContext);
					}

					dsContext.popState();
				}
			}
			else if (token.data.name =3D=3D "spry:if")
			{
				var testVal =3D true;
			=09
				if (token.data.jsExpr)
				{
					var jsExpr =3D =
Spry.Data.Region.processDataRefString(processContext, token.data.jsExpr, =
null, true);

					try { testVal =3D Spry.Utils.eval(jsExpr); }
					catch(e)
					{
						Spry.Debug.trace("Caught exception in =
Spry.Data.Region.prototype.processTokens while evaluating: " + jsExpr + =
"\n    Exception:" + e + "\n");
						testVal =3D true;
					}
				}
=09
				if (testVal)
					outputStr +=3D this.processTokenChildren(token, processContext);
			}
			else if (token.data.name =3D=3D "spry:choose")
			{
				var defaultChild =3D null;
				var childToProcess =3D null;
				var testVal =3D false;
				var j =3D 0;

				// All of the children of the spry:choose token should be of the =
type spry:when or spry:default.
				// Run through all of the spry:when children and see if any of their =
test expressions return true.
				// If one does, then process its children tokens. If none of the =
test expressions return true,
				// process the spry:default token's children, if it exists.

				for (j =3D 0; j < token.children.length; j++)
				{
					var child =3D token.children[j];
					if (child.tokenType =3D=3D =
Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN)
					{
						if (child.data.name =3D=3D "spry:when")
						{
							if (child.data.jsExpr)
							{
								var jsExpr =3D =
Spry.Data.Region.processDataRefString(processContext, child.data.jsExpr, =
null, true);
								try { testVal =3D Spry.Utils.eval(jsExpr); }
								catch(e)
								{
									Spry.Debug.trace("Caught exception in =
Spry.Data.Region.prototype.processTokens while evaluating: " + jsExpr + =
"\n    Exception:" + e + "\n");
									testVal =3D false;
								}

								if (testVal)
								{
									childToProcess =3D child;
									break;
								}
							}
						}
						else if (child.data.name =3D=3D "spry:default")
							defaultChild =3D child;
					}
				}

				// If we didn't find a match, use the token for the default case.

				if (!childToProcess && defaultChild)
					childToProcess =3D defaultChild;

				if (childToProcess)
					outputStr +=3D this.processTokenChildren(childToProcess, =
processContext);
			}
			else if (token.data.name =3D=3D "spry:state")
			{
				var testVal =3D true;
			=09
				if (!token.data.regionState || token.data.regionState =3D=3D =
this.currentState)
					outputStr +=3D this.processTokenChildren(token, processContext);
			}
			else
			{
				Spry.Debug.reportError("processTokens(): Unknown processing =
instruction: " + token.data.name + "\n");
				return "";
			}
			break;
		case Spry.Data.Region.Token.VALUE_TOKEN:

			var dataSet =3D token.dataSet;
			if (!dataSet && this.dataSets && this.dataSets.length > 0 && =
this.dataSets[0])
			{
				// No dataSet was specified by the token, so use whatever the first
				// data set specified in the region.

				dataSet =3D this.dataSets[0];
			}
			if (!dataSet)
			{
				Spry.Debug.reportError("processTokens(): Value reference has no data =
set specified: " + token.regionStr + "\n");
				return "";
			}

			var dsContext =3D processContext.getDataSetContext(dataSet);
			if (!dsContext)
			{
				Spry.Debug.reportError("processTokens: Failed to get a data set =
context!\n");
				return "";
			}

			var ds =3D dsContext.getDataSet();

			if (token.data =3D=3D "ds_RowNumber")
				outputStr +=3D dsContext.getRowIndex();
			else if (token.data =3D=3D "ds_RowNumberPlus1")
				outputStr +=3D (dsContext.getRowIndex() + 1);
			else if (token.data =3D=3D "ds_RowCount")
				outputStr +=3D dsContext.getNumRows();
			else if (token.data =3D=3D "ds_UnfilteredRowCount")
				outputStr +=3D dsContext.getNumRows(true);
			else if (token.data =3D=3D "ds_CurrentRowNumber")
				outputStr +=3D ds.getRowNumber(ds.getCurrentRow());
			else if (token.data =3D=3D "ds_CurrentRowID")
				outputStr +=3D ds.curRowID;
			else if (token.data =3D=3D "ds_EvenOddRow")
				outputStr +=3D (dsContext.getRowIndex() % 2) ? =
Spry.Data.Region.evenRowClassName : Spry.Data.Region.oddRowClassName;
			else if (token.data =3D=3D "ds_SortOrder")
				outputStr +=3D (ds.lastSortOrder) ? ds.lastSortOrder : "";
			else if (token.data =3D=3D "ds_SortColumn")
				outputStr +=3D ds.getSortColumn();
			else
			{
				var curDataSetRow =3D dsContext.getCurrentRow();
				if (curDataSetRow)
					outputStr +=3D curDataSetRow[token.data];
			}
			break;
		default:
			Spry.Debug.reportError("processTokens(): Invalid token type: " + =
token.regionStr + "\n");
			break;
	}

	return outputStr;
};

Spry.Data.Region.prototype.transform =3D function()
{
	if (this.data && !this.tokens)
		this.tokens =3D this.tokenizeData(this.data);

	if (!this.tokens)
		return "";

	return this.processTokens(this.tokens, null);
};

Spry.Data.Region.PI =3D {};
Spry.Data.Region.PI.instructions =3D {};

Spry.Data.Region.PI.buildOpenTagForValueAttr =3D function(ele, piName, =
attrName)
{
	if (!ele || !piName)
		return "";

	var jsExpr =3D "";

	try
	{
		var testAttr =3D ele.attributes.getNamedItem(piName);
		if (testAttr && testAttr.value)
			jsExpr =3D Spry.Utils.encodeEntities(testAttr.value);
	}
	catch (e) { jsExpr =3D ""; }

	if (!jsExpr)
	{
		Spry.Debug.reportError(piName + " attribute requires a JavaScript =
expression that returns true or false!\n");
		return "";
	}

	return "<" + Spry.Data.Region.PI.instructions[piName].tagName + " " + =
attrName +"=3D\"" + jsExpr + "\">";
};

Spry.Data.Region.PI.buildOpenTagForTest =3D function(ele, piName)
{
	return Spry.Data.Region.PI.buildOpenTagForValueAttr(ele, piName, =
"test");
};

Spry.Data.Region.PI.buildOpenTagForState =3D function(ele, piName)
{
	return Spry.Data.Region.PI.buildOpenTagForValueAttr(ele, piName, =
"name");
};

Spry.Data.Region.PI.buildOpenTagForRepeat =3D function(ele, piName)
{
	if (!ele || !piName)
		return "";

	var selectAttrStr =3D "";

	try
	{
		var selectAttr =3D ele.attributes.getNamedItem(piName);
		if (selectAttr && selectAttr.value)
		{
			selectAttrStr =3D selectAttr.value;
			selectAttrStr =3D selectAttrStr.replace(/\s/g, "");
		}
	}
	catch (e) { selectAttrStr =3D ""; }

	if (!selectAttrStr)
	{
		Spry.Debug.reportError(piName + " attribute requires a data set =
name!\n");
		return "";
	}

	var testAttrStr =3D "";

	try
	{
		var testAttr =3D ele.attributes.getNamedItem("spry:test");
		if (testAttr)
		{
			if (testAttr.value)
				testAttrStr =3D " test=3D\"" + =
Spry.Utils.encodeEntities(testAttr.value) + "\"";
			ele.attributes.removeNamedItem(testAttr.nodeName);
		}
	}
	catch (e) { testAttrStr =3D ""; }

	return "<" + Spry.Data.Region.PI.instructions[piName].tagName + " =
select=3D\"" + selectAttrStr + "\"" + testAttrStr + ">";
};

Spry.Data.Region.PI.buildOpenTagForContent =3D function(ele, piName)
{
	if (!ele || !piName)
		return "";

	var dataRefStr =3D "";

	try
	{
		var contentAttr =3D ele.attributes.getNamedItem(piName);
		if (contentAttr && contentAttr.value)
			dataRefStr =3D Spry.Utils.encodeEntities(contentAttr.value);
	}
	catch (e) { dataRefStr =3D ""; }

	if (!dataRefStr)
	{
		Spry.Debug.reportError(piName + " attribute requires a data =
reference!\n");
		return "";
	}

	return "<" + Spry.Data.Region.PI.instructions[piName].tagName + " =
dataref=3D\"" + dataRefStr + "\">";
};

Spry.Data.Region.PI.buildOpenTag =3D function(ele, piName)
{
	return "<" + Spry.Data.Region.PI.instructions[piName].tagName + ">";
};

Spry.Data.Region.PI.buildCloseTag =3D function(ele, piName)
{
	return "</" + Spry.Data.Region.PI.instructions[piName].tagName + ">";
};

Spry.Data.Region.PI.instructions["spry:state"] =3D { tagName: =
"spry:state", childrenOnly: false, getOpenTag: =
Spry.Data.Region.PI.buildOpenTagForState, getCloseTag: =
Spry.Data.Region.PI.buildCloseTag };
Spry.Data.Region.PI.instructions["spry:if"] =3D { tagName: "spry:if", =
childrenOnly: false, getOpenTag: =
Spry.Data.Region.PI.buildOpenTagForTest, getCloseTag: =
Spry.Data.Region.PI.buildCloseTag };
Spry.Data.Region.PI.instructions["spry:repeat"] =3D { tagName: =
"spry:repeat", childrenOnly: false, getOpenTag: =
Spry.Data.Region.PI.buildOpenTagForRepeat, getCloseTag: =
Spry.Data.Region.PI.buildCloseTag };
Spry.Data.Region.PI.instructions["spry:repeatchildren"] =3D { tagName: =
"spry:repeat", childrenOnly: true, getOpenTag: =
Spry.Data.Region.PI.buildOpenTagForRepeat, getCloseTag: =
Spry.Data.Region.PI.buildCloseTag };
Spry.Data.Region.PI.instructions["spry:choose"] =3D { tagName: =
"spry:choose", childrenOnly: true, getOpenTag: =
Spry.Data.Region.PI.buildOpenTag, getCloseTag: =
Spry.Data.Region.PI.buildCloseTag };
Spry.Data.Region.PI.instructions["spry:when"] =3D { tagName: =
"spry:when", childrenOnly: false, getOpenTag: =
Spry.Data.Region.PI.buildOpenTagForTest, getCloseTag: =
Spry.Data.Region.PI.buildCloseTag };
Spry.Data.Region.PI.instructions["spry:default"] =3D { tagName: =
"spry:default", childrenOnly: false, getOpenTag: =
Spry.Data.Region.PI.buildOpenTag, getCloseTag: =
Spry.Data.Region.PI.buildCloseTag };
Spry.Data.Region.PI.instructions["spry:content"] =3D { tagName: =
"spry:content", childrenOnly: true, getOpenTag: =
Spry.Data.Region.PI.buildOpenTagForContent, getCloseTag: =
Spry.Data.Region.PI.buildCloseTag };

Spry.Data.Region.PI.orderedInstructions =3D [ "spry:state", "spry:if", =
"spry:repeat", "spry:repeatchildren", "spry:choose", "spry:when", =
"spry:default", "spry:content" ];

Spry.Data.Region.getTokensFromStr =3D function(str)
{
	// XXX: This will need to be modified if we support
	// tokens that use javascript between the braces!
	if (!str)
		return null;
	return str.match(/{[^}]+}/g);
};

Spry.Data.Region.processDataRefString =3D function(processingContext, =
regionStr, dataSetsToUse, isJSExpr)
{
	if (!regionStr)
		return "";

	if (!processingContext && !dataSetsToUse)
		return regionStr;

	var resultStr =3D "";
	var re =3D new RegExp("\\{([^\\}:]+::)?[^\\}]+\\}", "g");
	var startSearchIndex =3D 0;

	while (startSearchIndex < regionStr.length)
	{
		var reArray =3D re.exec(regionStr);
		if (!reArray || !reArray[0])
		{
			resultStr +=3D regionStr.substr(startSearchIndex, regionStr.length - =
startSearchIndex);
			return resultStr;
		}

		if (reArray.index !=3D startSearchIndex)
			resultStr +=3D regionStr.substr(startSearchIndex, reArray.index - =
startSearchIndex);

		var dsName =3D "";
		if (reArray[0].search(/^\{[^}:]+::/) !=3D -1)
			dsName =3D reArray[0].replace(/^\{|::.*/g, "");

		var fieldName =3D reArray[0].replace(/^\{|.*::|\}/g, "");
		var row =3D null;

		if (processingContext)
		{
			var dsContext =3D processingContext.getDataSetContext(dsName);

			if (fieldName =3D=3D "ds_RowNumber")
			{
				resultStr +=3D dsContext.getRowIndex();
				row =3D null;
			}
			else if (fieldName =3D=3D "ds_RowNumberPlus1")
			{
				resultStr +=3D (dsContext.getRowIndex() + 1);
				row =3D null;
			}
			else if (fieldName =3D=3D "ds_RowCount")
			{
				resultStr +=3D dsContext.getNumRows();
				row =3D null;
			}
			else if (fieldName =3D=3D "ds_UnfilteredRowCount")
			{
				resultStr +=3D dsContext.getNumRows(true);
				row =3D null;
			}
			else if (fieldName =3D=3D "ds_CurrentRowNumber")
			{
				var ds =3D dsContext.getDataSet();
				resultStr +=3D ds.getRowNumber(ds.getCurrentRow());
				row =3D null;
			}
			else if (fieldName =3D=3D "ds_CurrentRowID")
			{
				var ds =3D dsContext.getDataSet();
				resultStr +=3D "" + ds.curRowID;
				row =3D null;
			}
			else if (fieldName =3D=3D "ds_EvenOddRow")
			{
				resultStr +=3D (dsContext.getRowIndex() % 2) ? =
Spry.Data.Region.evenRowClassName : Spry.Data.Region.oddRowClassName;
				row =3D null;
			}
			else if (fieldName =3D=3D "ds_SortOrder")
			{
				var sortOrder =3D dsContext.getDataSet().lastSortOrder;
				if (sortOrder)
					resultStr +=3D sortOrder;
				row =3D null;
			}
			else if (fieldName =3D=3D "ds_SortColumn")
			{
				resultStr +=3D dsContext.getDataSet().getSortColumn();
				row =3D null;
			}
			else
				row =3D processingContext.getCurrentRowForDataSet(dsName);
		}
		else
		{
			var ds =3D dsName ? dataSetsToUse[dsName] : dataSetsToUse[0];
			if (ds)
				row =3D ds.getCurrentRow();
		}

		if (row)
			resultStr +=3D isJSExpr ? Spry.Utils.escapeQuotesAndLineBreaks("" + =
row[fieldName]) : row[fieldName];

		if (startSearchIndex =3D=3D re.lastIndex)
		{
			// On IE if there was a match near the end of the string, it =
sometimes
			// leaves re.lastIndex pointing to the value it had before the last =
time
			// we called re.exec. We check for this case to prevent an infinite =
loop!
			// We need to write out any text in regionStr that comes after the =
last
			// match.

			var leftOverIndex =3D reArray.index + reArray[0].length;
			if (leftOverIndex < regionStr.length)
				resultStr +=3D regionStr.substr(leftOverIndex);

			break;
		}

		startSearchIndex =3D re.lastIndex;
	}

	return resultStr;
};

Spry.Data.Region.strToDataSetsArray =3D function(str, returnRegionNames)
{
	var dataSetsArr =3D new Array;
	var foundHash =3D {};

	if (!str)
		return dataSetsArr;

	str =3D str.replace(/\s+/g, " ");
	str =3D str.replace(/^\s|\s$/g, "");
	var arr =3D str.split(/ /);


	for (var i =3D 0; i < arr.length; i++)
	{
		if (arr[i] && !Spry.Data.Region.PI.instructions[arr[i]])
		{
			try {
				var dataSet =3D eval(arr[i]);

				if (!foundHash[arr[i]])
				{
					if (returnRegionNames)
						dataSetsArr.push(arr[i]);
					else
						dataSetsArr.push(dataSet);
					foundHash[arr[i]] =3D true;
				}
			}
			catch (e) { /* Spry.Debug.trace("Caught exception: " + e + "\n"); */ =
}
		}
	}

	return dataSetsArr;
};

Spry.Data.Region.DSContext =3D function(dataSet)
{
	var m_self =3D this;
	var m_dataSet =3D dataSet;
	var m_curRowIndexArray =3D [ -1 ]; // -1 means return whatever the =
current row is inside the data set.

	// Private Methods:

	function getInternalRowIndex() { return =
m_curRowIndexArray[m_curRowIndexArray.length - 1]; }

	// Public Methods:
	this.resetAll =3D function() { m_curRowIndexArray =3D [ =
m_dataSet.getCurrentRow() ] };
	this.getDataSet =3D function() { return m_dataSet; };
	this.getNumRows =3D function(unfiltered)
	{
		var rows =3D unfiltered ? m_dataSet.getUnfilteredData() : =
m_dataSet.getData();
		return rows ? rows.length : 0;
	};
	this.getCurrentRow =3D function()
	{
		if (m_curRowIndexArray.length < 2 || getInternalRowIndex() < 0)
			return m_dataSet.getCurrentRow();
=09
		var data =3D m_dataSet.getData();
		var curRowIndex =3D getInternalRowIndex();
=09
		if (curRowIndex < 0 || curRowIndex > data.length)
		{
			Spry.Debug.reportError("Invalid index used in =
Spry.Data.Region.DSContext.getCurrentRow()!\n");
			return null;
		}
=09
		return data[curRowIndex];
	};
	this.getRowIndex =3D function()
	{
		var curRowIndex =3D getInternalRowIndex();
		if (curRowIndex >=3D 0)
			return curRowIndex;

		return m_dataSet.getRowNumber(m_dataSet.getCurrentRow());
	};
	this.setRowIndex =3D function(rowIndex) { =
m_curRowIndexArray[m_curRowIndexArray.length - 1] =3D rowIndex; };
	this.pushState =3D function() { m_curRowIndexArray.push( =
getInternalRowIndex()); };
	this.popState =3D function()
	{
		if (m_curRowIndexArray.length < 2)
		{
			// Our array should always have at least one element in it!
			Spry.Debug.reportError("Stack underflow in =
Spry.Data.Region.DSContext.popState()!\n");
			return;
		}
		m_curRowIndexArray.pop();
	};
};

Spry.Data.Region.ProcessingContext =3D function(region)
{
	var m_self =3D this;
	var m_region =3D region;
	var m_dataSetContexts =3D [];
=09
	if (region && region.dataSets)
	{
		for (var i =3D 0; i < region.dataSets.length; i++)
			m_dataSetContexts.push(new =
Spry.Data.Region.DSContext(region.dataSets[i]));
	}

	this.getDataSetContext =3D function(dataSet)
	{
		if (!dataSet)
		{
			// We were called without a specified data set or
			// data set name. Assume the caller wants the first
			// data set in the processing context.

			if (m_dataSetContexts.length > 0)
				return m_dataSetContexts[0];
			return null;
		}

		if (typeof dataSet =3D=3D 'string')
		{
			try { dataSet =3D eval(dataSet); } catch (e) { dataSet =3D null; }
			if (!dataSet)
				return null;
		}
=09
		for (var i =3D 0; i < m_dataSetContexts.length; i++)
		{
			var dsc =3D m_dataSetContexts[i];
			if (dsc.getDataSet() =3D=3D dataSet)
				return dsc;
		}
=09
		return null;
	};

	this.getCurrentRowForDataSet =3D function(dataSet)
	{
		var dsc =3D m_self.getDataSetContext(dataSet);
		if (dsc)
			return dsc.getCurrentRow();
		return null;
	};
};

Spry.Data.Region.Token =3D function(tokenType, dataSet, data, regionStr)
{
	var self =3D this;
	this.tokenType =3D tokenType;
	this.dataSet =3D dataSet;
	this.data =3D data;
	this.regionStr =3D regionStr;
	this.parent =3D null;
	this.children =3D null;
};

Spry.Data.Region.Token.prototype.addChild =3D function(child)
{
	if (!child)
		return;
=09
	if (!this.children)
		this.children =3D new Array;
=09
	this.children.push(child);
	child.parent =3D this;
};

Spry.Data.Region.Token.LIST_TOKEN                   =3D 0;
Spry.Data.Region.Token.STRING_TOKEN                 =3D 1;
Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN =3D 2;
Spry.Data.Region.Token.VALUE_TOKEN                  =3D 3;

Spry.Data.Region.Token.PIData =3D function(piName, data, jsExpr, =
regionState)
{
	var self =3D this;
	this.name =3D piName;
	this.data =3D data;
	this.jsExpr =3D jsExpr;
	this.regionState =3D regionState;
};

Spry.Utils.addLoadListener(function() { setTimeout(function() { =
Spry.Data.initRegions(); }, 0); });

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/contentslider.js?1

//** Featured Content Slider script- =C2=A9 Dynamic Drive DHTML code =
library (http://www.dynamicdrive.com)
//** Last updated: Oct 28th, 06

////Ajax related settings
var csbustcachevar=3D0 //bust potential caching of external pages after =
initial Ajax request? (1=3Dyes, 0=3Dno)
var csloadstatustext=3D"<img =
src=3D'http://media.collegepublisher.com/media/paper960/template/template=
media/loading.gif' /> Requesting content..." //HTML to indicate Ajax =
page is being fetched
var csexternalfiles=3D[] //External .css or .js files to load to style =
the external content(s), if any. Separate multiple files with comma ie: =
["cat.css", dog.js"]

////Section Names////////////////////////
/*

var slidersection=3D new Array(4)
slidersection[0]=3D"News";
slidersection[1]=3D"Features";
slidersection[2]=3D"Opinion";
slidersection[3]=3D"Sports";

*/

////NO NEED TO EDIT BELOW////////////////////////
var enablepersist=3Dtrue
var slidernodes=3Dnew Object() //Object array to store references to =
each content slider's DIV containers (<div class=3D"contentdiv">)
var csloadedobjects=3D"" //Variable to store file names of .js/.css =
files already loaded (if Ajax is used)

function ContentSlider(sliderid, autorun){
var slider=3Ddocument.getElementById(sliderid)
slidernodes[sliderid]=3D[] //Array to store references to this content =
slider's DIV containers (<div class=3D"contentdiv">)
ContentSlider.loadobjects(csexternalfiles) //Load external .js and .css =
files, if any
var alldivs=3Dslider.getElementsByTagName("div")
for (var i=3D0; i<alldivs.length; i++){
if (alldivs[i].className=3D=3D"contentdiv"){
slidernodes[sliderid].push(alldivs[i]) //add this DIV reference to array
if (typeof alldivs[i].getAttribute("rel")=3D=3D"string") //If get this =
DIV's content via Ajax (rel attr contains path to external page)
ContentSlider.ajaxpage(alldivs[i].getAttribute("rel"), alldivs[i])
}
}
ContentSlider.buildpagination(sliderid)
var loadfirstcontent=3Dtrue
if (enablepersist && getCookie(sliderid)!=3D""){ //if enablepersist is =
true and cookie contains corresponding value for slider
var cookieval=3DgetCookie(sliderid).split(":") //process cookie value =
([sliderid, int_pagenumber (div content to jump to)]
if (document.getElementById(cookieval[0])!=3Dnull && typeof =
slidernodes[sliderid][cookieval[1]]!=3D"undefined"){ //check cookie =
value for validity
ContentSlider.turnpage(cookieval[0], parseInt(cookieval[1])) //restore =
content slider's last shown DIV
loadfirstcontent=3Dfalse
}
}
if (loadfirstcontent=3D=3Dtrue) //if enablepersist is false, or cookie =
value doesn't contain valid value for some reason (ie: user modified the =
structure of the HTML)
ContentSlider.turnpage(sliderid, 0) //Display first DIV within slider
if (typeof autorun=3D=3D"number" && autorun>0) //if autorun parameter =
(int_miliseconds) is defined, fire auto run sequence
window[sliderid+"timer"]=3DsetTimeout(function(){ContentSlider.autoturnpa=
ge(sliderid, autorun)}, autorun)
}

ContentSlider.buildpagination=3Dfunction(sliderid){
var paginatediv=3Ddocument.getElementById("paginate-"+sliderid) =
//reference corresponding pagination DIV for slider
var pcontent=3D""
for (var i=3D0; i<slidernodes[sliderid].length; i++) //For each DIV =
within slider, generate a pagination link
/*pcontent+=3D'<a href=3D"#" =
onClick=3D\"ContentSlider.turnpage(\''+sliderid+'\', '+i+'); return =
false\">'+slidersection[i]+'</a> '
pcontent+=3D'<a href=3D"#" style=3D"font-weight: bold;" =
onClick=3D\"ContentSlider.turnpage(\''+sliderid+'\', =
parseInt(this.getAttribute(\'rel\'))); return false\">Next</a>'
paginatediv.innerHTML=3Dpcontent
*/paginatediv.onclick=3Dfunction(){ //cancel auto run sequence (if =
defined) when user clicks on pagination DIV
if (typeof window[sliderid+"timer"]!=3D"undefined")
clearTimeout(window[sliderid+"timer"])
}
}

ContentSlider.turnpage=3Dfunction(sliderid, thepage){
/* Notify the page that this tab index was accessed. */
if (window.tabClickedListener) {
	window.tabClickedListener(thepage);
}
var =
paginatelinks=3Ddocument.getElementById("paginate-"+sliderid).getElements=
ByTagName("a") //gather pagination links
for (var i=3D0; i<slidernodes[sliderid].length; i++){ //For each DIV =
within slider
paginatelinks[i].className=3D"" //empty corresponding pagination link's =
class name
slidernodes[sliderid][i].style.display=3D"none" //hide DIV
}
paginatelinks[thepage].className=3D"selected" //for selected DIV, set =
corresponding pagination link's class name
slidernodes[sliderid][thepage].style.display=3D"block" //show selected =
DIV
//Set "Next" pagination link's (last link within pagination DIV) "rel" =
attribute to the next DIV number to show
paginatelinks[paginatelinks.length-1].setAttribute("rel", =
thenextpage=3D(thepage<paginatelinks.length-2)? thepage+1 : 0)
if (enablepersist)
setCookie(sliderid, sliderid+":"+thepage)
}

ContentSlider.autoturnpage=3Dfunction(sliderid, autorunperiod){
var =
paginatelinks=3Ddocument.getElementById("paginate-"+sliderid).getElements=
ByTagName("a") //Get pagination links
var =
nextpagenumber=3DparseInt(paginatelinks[paginatelinks.length-1].getAttrib=
ute("rel")) //Get page number of next DIV to show
ContentSlider.turnpage(sliderid, nextpagenumber) //Show that DIV
window[sliderid+"timer"]=3DsetTimeout(function(){ContentSlider.autoturnpa=
ge(sliderid, autorunperiod)}, autorunperiod)
}

function getCookie(Name){=20
var re=3Dnew RegExp(Name+"=3D[^;]+", "i"); //construct RE to search for =
target name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=3D")[1] //return its value
return ""
}

function setCookie(name, value){
document.cookie =3D name+"=3D"+value
}

////////////////Ajax Related functions =
//////////////////////////////////

ContentSlider.ajaxpage=3Dfunction(url, thediv){
var page_request =3D false
var bustcacheparameter=3D""
if (window.XMLHttpRequest) // if Mozilla, Safari etc
page_request =3D new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request =3D new ActiveXObject("Msxml2.XMLHTTP")
}=20
catch (e){
try{
page_request =3D new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
thediv.innerHTML=3Dcsloadstatustext
page_request.onreadystatechange=3Dfunction(){
ContentSlider.loadpage(page_request, thediv)
}
if (csbustcachevar) //if bust caching of external page
bustcacheparameter=3D(url.indexOf("?")!=3D-1)? "&"+new Date().getTime() =
: "?"+new Date().getTime()
page_request.open('GET', url+bustcacheparameter, true)
page_request.send(null)
}

ContentSlider.loadpage=3Dfunction(page_request, thediv){
if (page_request.readyState =3D=3D 4 && (page_request.status=3D=3D200 || =
window.location.href.indexOf("http")=3D=3D-1))
thediv.innerHTML=3Dpage_request.responseText
}

ContentSlider.loadobjects=3Dfunction(externalfiles){ //function to load =
external .js and .css files. Parameter accepts a list of external files =
to load (array)
for (var i=3D0; i<externalfiles.length; i++){
var file=3Dexternalfiles[i]
var fileref=3D""
if (csloadedobjects.indexOf(file)=3D=3D-1){ //Check to see if this =
object has not already been added to page before proceeding
if (file.indexOf(".js")!=3D-1){ //If object is a js file
fileref=3Ddocument.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=3D-1){ //If object is a css file
fileref=3Ddocument.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=3D""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
csloadedobjects+=3Dfile+" " //Remember this object as being already =
added to page
}
}
}

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/ufo.js?1

/*	Unobtrusive Flash Objects (UFO) v3.21 =
<http://www.bobbyvandersluis.com/ufo/>=0A=
	Copyright 2005, 2006 Bobby van der Sluis=0A=
	This software is licensed under the CC-GNU LGPL =
<http://creativecommons.org/licenses/LGPL/2.1/>=0A=
*/=0A=
=0A=
var UFO =3D {=0A=
	req: ["movie", "width", "height", "majorversion", "build"],=0A=
	opt: ["play", "loop", "menu", "quality", "scale", "salign", "wmode", =
"bgcolor", "base", "flashvars", "devicefont", "allowscriptaccess", =
"seamlesstabbing", "allowfullscreen"],=0A=
	optAtt: ["id", "name", "align"],=0A=
	optExc: ["swliveconnect"],=0A=
	ximovie: "ufo.swf",=0A=
	xiwidth: "215",=0A=
	xiheight: "138",=0A=
	ua: navigator.userAgent.toLowerCase(),=0A=
	pluginType: "",=0A=
	fv: [0,0],=0A=
	foList: [],=0A=
		=0A=
	create: function(FO, id) {=0A=
		if (!UFO.uaHas("w3cdom") || UFO.uaHas("ieMac")) return;=0A=
		UFO.getFlashVersion();=0A=
		UFO.foList[id] =3D UFO.updateFO(FO);=0A=
		UFO.createCSS("#" + id, "visibility:hidden;");=0A=
		UFO.domLoad(id);=0A=
	},=0A=
=0A=
	updateFO: function(FO) {=0A=
		if (typeof FO.xi !=3D "undefined" && FO.xi =3D=3D "true") {=0A=
			if (typeof FO.ximovie =3D=3D "undefined") FO.ximovie =3D UFO.ximovie;=0A=
			if (typeof FO.xiwidth =3D=3D "undefined") FO.xiwidth =3D UFO.xiwidth;=0A=
			if (typeof FO.xiheight =3D=3D "undefined") FO.xiheight =3D =
UFO.xiheight;=0A=
		}=0A=
		FO.mainCalled =3D false;=0A=
		return FO;=0A=
	},=0A=
=0A=
	domLoad: function(id) {=0A=
		var _t =3D setInterval(function() {=0A=
			if ((document.getElementsByTagName("body")[0] !=3D null || =
document.body !=3D null) && document.getElementById(id) !=3D null) {=0A=
				UFO.main(id);=0A=
				clearInterval(_t);=0A=
			}=0A=
		}, 250);=0A=
		if (typeof document.addEventListener !=3D "undefined") {=0A=
			document.addEventListener("DOMContentLoaded", function() { =
UFO.main(id); clearInterval(_t); } , null); // Gecko, Opera 9+=0A=
		}=0A=
	},=0A=
=0A=
	main: function(id) {=0A=
		var _fo =3D UFO.foList[id];=0A=
		if (_fo.mainCalled) return;=0A=
		UFO.foList[id].mainCalled =3D true;=0A=
		document.getElementById(id).style.visibility =3D "hidden";=0A=
		if (UFO.hasRequired(id)) {=0A=
			if (UFO.hasFlashVersion(parseInt(_fo.majorversion, 10), =
parseInt(_fo.build, 10))) {=0A=
				if (typeof _fo.setcontainercss !=3D "undefined" && =
_fo.setcontainercss =3D=3D "true") UFO.setContainerCSS(id);=0A=
				UFO.writeSWF(id);=0A=
			}=0A=
			else if (_fo.xi =3D=3D "true" && UFO.hasFlashVersion(6, 65)) {=0A=
				UFO.createDialog(id);=0A=
			}=0A=
		}=0A=
		document.getElementById(id).style.visibility =3D "visible";=0A=
	},=0A=
	=0A=
	createCSS: function(selector, declaration) {=0A=
		var _h =3D document.getElementsByTagName("head")[0]; =0A=
		var _s =3D UFO.createElement("style");=0A=
		if (!UFO.uaHas("ieWin")) =
_s.appendChild(document.createTextNode(selector + " {" + declaration + =
"}")); // bugs in IE/Win=0A=
		_s.setAttribute("type", "text/css");=0A=
		_s.setAttribute("media", "screen"); =0A=
		_h.appendChild(_s);=0A=
		if (UFO.uaHas("ieWin") && document.styleSheets && =
document.styleSheets.length > 0) {=0A=
			var _ls =3D document.styleSheets[document.styleSheets.length - 1];=0A=
			if (typeof _ls.addRule =3D=3D "object") _ls.addRule(selector, =
declaration);=0A=
		}=0A=
	},=0A=
	=0A=
	setContainerCSS: function(id) {=0A=
		var _fo =3D UFO.foList[id];=0A=
		var _w =3D /%/.test(_fo.width) ? "" : "px";=0A=
		var _h =3D /%/.test(_fo.height) ? "" : "px";=0A=
		UFO.createCSS("#" + id, "width:" + _fo.width + _w +"; height:" + =
_fo.height + _h +";");=0A=
		if (_fo.width =3D=3D "100%") {=0A=
			UFO.createCSS("body", "margin-left:0; margin-right:0; padding-left:0; =
padding-right:0;");=0A=
		}=0A=
		if (_fo.height =3D=3D "100%") {=0A=
			UFO.createCSS("html", "height:100%; overflow:hidden;");=0A=
			UFO.createCSS("body", "margin-top:0; margin-bottom:0; padding-top:0; =
padding-bottom:0; height:100%;");=0A=
		}=0A=
	},=0A=
=0A=
	createElement: function(el) {=0A=
		return (UFO.uaHas("xml") && typeof document.createElementNS !=3D =
"undefined") ?  document.createElementNS("http://www.w3.org/1999/xhtml", =
el) : document.createElement(el);=0A=
	},=0A=
=0A=
	createObjParam: function(el, aName, aValue) {=0A=
		var _p =3D UFO.createElement("param");=0A=
		_p.setAttribute("name", aName);	=0A=
		_p.setAttribute("value", aValue);=0A=
		el.appendChild(_p);=0A=
	},=0A=
=0A=
	uaHas: function(ft) {=0A=
		var _u =3D UFO.ua;=0A=
		switch(ft) {=0A=
			case "w3cdom":=0A=
				return (typeof document.getElementById !=3D "undefined" && typeof =
document.getElementsByTagName !=3D "undefined" && (typeof =
document.createElement !=3D "undefined" || typeof =
document.createElementNS !=3D "undefined"));=0A=
			case "xml":=0A=
				var _m =3D document.getElementsByTagName("meta");=0A=
				var _l =3D _m.length;=0A=
				for (var i =3D 0; i < _l; i++) {=0A=
					if (/content-type/i.test(_m[i].getAttribute("http-equiv")) && =
/xml/i.test(_m[i].getAttribute("content"))) return true;=0A=
				}=0A=
				return false;=0A=
			case "ieMac":=0A=
				return /msie/.test(_u) && !/opera/.test(_u) && /mac/.test(_u);=0A=
			case "ieWin":=0A=
				return /msie/.test(_u) && !/opera/.test(_u) && /win/.test(_u);=0A=
			case "gecko":=0A=
				return /gecko/.test(_u) && !/applewebkit/.test(_u);=0A=
			case "opera":=0A=
				return /opera/.test(_u);=0A=
			case "safari":=0A=
				return /applewebkit/.test(_u);=0A=
			default:=0A=
				return false;=0A=
		}=0A=
	},=0A=
	=0A=
	getFlashVersion: function() {=0A=
		if (UFO.fv[0] !=3D 0) return;  =0A=
		if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] =
=3D=3D "object") {=0A=
			UFO.pluginType =3D "npapi";=0A=
			var _d =3D navigator.plugins["Shockwave Flash"].description;=0A=
			if (typeof _d !=3D "undefined") {=0A=
				_d =3D _d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");=0A=
				var _m =3D parseInt(_d.replace(/^(.*)\..*$/, "$1"), 10);=0A=
				var _r =3D /r/.test(_d) ? parseInt(_d.replace(/^.*r(.*)$/, "$1"), =
10) : 0;=0A=
				UFO.fv =3D [_m, _r];=0A=
			}=0A=
		}=0A=
		else if (window.ActiveXObject) {=0A=
			UFO.pluginType =3D "ax";=0A=
			try { // avoid fp 6 crashes=0A=
				var _a =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");=0A=
			}=0A=
			catch(e) {=0A=
				try { =0A=
					var _a =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");=0A=
					UFO.fv =3D [6, 0];=0A=
					_a.AllowScriptAccess =3D "always"; // throws if fp < 6.47 =0A=
				}=0A=
				catch(e) {=0A=
					if (UFO.fv[0] =3D=3D 6) return;=0A=
				}=0A=
				try {=0A=
					var _a =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash");=0A=
				}=0A=
				catch(e) {}=0A=
			}=0A=
			if (typeof _a =3D=3D "object") {=0A=
				var _d =3D _a.GetVariable("$version"); // bugs in fp 6.21/6.23=0A=
				if (typeof _d !=3D "undefined") {=0A=
					_d =3D _d.replace(/^\S+\s+(.*)$/, "$1").split(",");=0A=
					UFO.fv =3D [parseInt(_d[0], 10), parseInt(_d[2], 10)];=0A=
				}=0A=
			}=0A=
		}=0A=
	},=0A=
=0A=
	hasRequired: function(id) {=0A=
		var _l =3D UFO.req.length;=0A=
		for (var i =3D 0; i < _l; i++) {=0A=
			if (typeof UFO.foList[id][UFO.req[i]] =3D=3D "undefined") return =
false;=0A=
		}=0A=
		return true;=0A=
	},=0A=
	=0A=
	hasFlashVersion: function(major, release) {=0A=
		return (UFO.fv[0] > major || (UFO.fv[0] =3D=3D major && UFO.fv[1] >=3D =
release)) ? true : false;=0A=
	},=0A=
=0A=
	writeSWF: function(id) {=0A=
		var _fo =3D UFO.foList[id];=0A=
		var _e =3D document.getElementById(id);=0A=
		if (UFO.pluginType =3D=3D "npapi") {=0A=
			if (UFO.uaHas("gecko") || UFO.uaHas("xml")) {=0A=
				while(_e.hasChildNodes()) {=0A=
					_e.removeChild(_e.firstChild);=0A=
				}=0A=
				var _obj =3D UFO.createElement("object");=0A=
				_obj.setAttribute("type", "application/x-shockwave-flash");=0A=
				_obj.setAttribute("data", _fo.movie);=0A=
				_obj.setAttribute("width", _fo.width);=0A=
				_obj.setAttribute("height", _fo.height);=0A=
				var _l =3D UFO.optAtt.length;=0A=
				for (var i =3D 0; i < _l; i++) {=0A=
					if (typeof _fo[UFO.optAtt[i]] !=3D "undefined") =
_obj.setAttribute(UFO.optAtt[i], _fo[UFO.optAtt[i]]);=0A=
				}=0A=
				var _o =3D UFO.opt.concat(UFO.optExc);=0A=
				var _l =3D _o.length;=0A=
				for (var i =3D 0; i < _l; i++) {=0A=
					if (typeof _fo[_o[i]] !=3D "undefined") UFO.createObjParam(_obj, =
_o[i], _fo[_o[i]]);=0A=
				}=0A=
				_e.appendChild(_obj);=0A=
			}=0A=
			else {=0A=
				var _emb =3D "";=0A=
				var _o =3D UFO.opt.concat(UFO.optAtt).concat(UFO.optExc);=0A=
				var _l =3D _o.length;=0A=
				for (var i =3D 0; i < _l; i++) {=0A=
					if (typeof _fo[_o[i]] !=3D "undefined") _emb +=3D ' ' + _o[i] + =
'=3D"' + _fo[_o[i]] + '"';=0A=
				}=0A=
				_e.innerHTML =3D '<embed type=3D"application/x-shockwave-flash" =
src=3D"' + _fo.movie + '" width=3D"' + _fo.width + '" height=3D"' + =
_fo.height + '" =
pluginspage=3D"http://www.macromedia.com/go/getflashplayer"' + _emb + =
'></embed>';=0A=
			}=0A=
		}=0A=
		else if (UFO.pluginType =3D=3D "ax") {=0A=
			var _objAtt =3D "";=0A=
			var _l =3D UFO.optAtt.length;=0A=
			for (var i =3D 0; i < _l; i++) {=0A=
				if (typeof _fo[UFO.optAtt[i]] !=3D "undefined") _objAtt +=3D ' ' + =
UFO.optAtt[i] + '=3D"' + _fo[UFO.optAtt[i]] + '"';=0A=
			}=0A=
			var _objPar =3D "";=0A=
			var _l =3D UFO.opt.length;=0A=
			for (var i =3D 0; i < _l; i++) {=0A=
				if (typeof _fo[UFO.opt[i]] !=3D "undefined") _objPar +=3D '<param =
name=3D"' + UFO.opt[i] + '" value=3D"' + _fo[UFO.opt[i]] + '" />';=0A=
			}=0A=
			var _p =3D window.location.protocol =3D=3D "https:" ? "https:" : =
"http:";=0A=
			_e.innerHTML =3D '<object =
classid=3D"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"' + _objAtt + ' =
width=3D"' + _fo.width + '" height=3D"' + _fo.height + '" codebase=3D"' =
+ _p + =
'//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=3D=
' + _fo.majorversion + ',0,' + _fo.build + ',0"><param name=3D"movie" =
value=3D"' + _fo.movie + '" />' + _objPar + '</object>';=0A=
		}=0A=
	},=0A=
		=0A=
	createDialog: function(id) {=0A=
		var _fo =3D UFO.foList[id];=0A=
		UFO.createCSS("html", "height:100%; overflow:hidden;");=0A=
		UFO.createCSS("body", "height:100%; overflow:hidden;");=0A=
		UFO.createCSS("#xi-con", "position:absolute; left:0; top:0; =
z-index:1000; width:100%; height:100%; background-color:#fff; =
filter:alpha(opacity:75); opacity:0.75;");=0A=
		UFO.createCSS("#xi-dia", "position:absolute; left:50%; top:50%; =
margin-left: -" + Math.round(parseInt(_fo.xiwidth, 10) / 2) + "px; =
margin-top: -" + Math.round(parseInt(_fo.xiheight, 10) / 2) + "px; =
width:" + _fo.xiwidth + "px; height:" + _fo.xiheight + "px;");=0A=
		var _b =3D document.getElementsByTagName("body")[0];=0A=
		var _c =3D UFO.createElement("div");=0A=
		_c.setAttribute("id", "xi-con");=0A=
		var _d =3D UFO.createElement("div");=0A=
		_d.setAttribute("id", "xi-dia");=0A=
		_c.appendChild(_d);=0A=
		_b.appendChild(_c);=0A=
		var _mmu =3D window.location;=0A=
		if (UFO.uaHas("xml") && UFO.uaHas("safari")) {=0A=
			var _mmd =3D =
document.getElementsByTagName("title")[0].firstChild.nodeValue =3D =
document.getElementsByTagName("title")[0].firstChild.nodeValue.slice(0, =
47) + " - Flash Player Installation";=0A=
		}=0A=
		else {=0A=
			var _mmd =3D document.title =3D document.title.slice(0, 47) + " - =
Flash Player Installation";=0A=
		}=0A=
		var _mmp =3D UFO.pluginType =3D=3D "ax" ? "ActiveX" : "PlugIn";=0A=
		var _uc =3D typeof _fo.xiurlcancel !=3D "undefined" ? =
"&xiUrlCancel=3D" + _fo.xiurlcancel : "";=0A=
		var _uf =3D typeof _fo.xiurlfailed !=3D "undefined" ? =
"&xiUrlFailed=3D" + _fo.xiurlfailed : "";=0A=
		UFO.foList["xi-dia"] =3D { movie:_fo.ximovie, width:_fo.xiwidth, =
height:_fo.xiheight, majorversion:"6", build:"65", =
flashvars:"MMredirectURL=3D" + _mmu + "&MMplayerType=3D" + _mmp + =
"&MMdoctitle=3D" + _mmd + _uc + _uf };=0A=
		UFO.writeSWF("xi-dia");=0A=
	},=0A=
=0A=
	expressInstallCallback: function() {=0A=
		var _b =3D document.getElementsByTagName("body")[0];=0A=
		var _c =3D document.getElementById("xi-con");=0A=
		_b.removeChild(_c);=0A=
		UFO.createCSS("body", "height:auto; overflow:auto;");=0A=
		UFO.createCSS("html", "height:auto; overflow:auto;");=0A=
	},=0A=
=0A=
	cleanupIELeaks: function() {=0A=
		var _o =3D document.getElementsByTagName("object");=0A=
		var _l =3D _o.length=0A=
		for (var i =3D 0; i < _l; i++) {=0A=
			_o[i].style.display =3D "none";=0A=
			for (var x in _o[i]) {=0A=
				if (typeof _o[i][x] =3D=3D "function") {=0A=
					_o[i][x] =3D null;=0A=
				}=0A=
			}=0A=
		}=0A=
	}=0A=
=0A=
};=0A=
=0A=
if (typeof window.attachEvent !=3D "undefined" && UFO.uaHas("ieWin")) {=0A=
	window.attachEvent("onunload", UFO.cleanupIELeaks);=0A=
}=0A=

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://www.google-analytics.com/urchin.js

//-- Google Analytics Urchin Module=0A=
//-- Copyright 2007 Google, All Rights Reserved.=0A=
=0A=
//-- Urchin On Demand Settings ONLY=0A=
var _uacct=3D"";			// set up the Urchin Account=0A=
var _userv=3D1;			// service mode (0=3Dlocal,1=3Dremote,2=3Dboth)=0A=
=0A=
//-- UTM User Settings=0A=
var _ufsc=3D1;			// set client info flag (1=3Don|0=3Doff)=0A=
var _udn=3D"auto";		// (auto|none|domain) set the domain name for cookies=0A=
var _uhash=3D"on";		// (on|off) unique domain hash for cookies=0A=
var _utimeout=3D"1800";   	// set the inactive session timeout in seconds=0A=
var _ugifpath=3D"/__utm.gif";	// set the web path to the __utm.gif file=0A=
var _utsp=3D"|";			// transaction field separator=0A=
var _uflash=3D1;			// set flash version detect option (1=3Don|0=3Doff)=0A=
var _utitle=3D1;			// set the document title detect option =
(1=3Don|0=3Doff)=0A=
var _ulink=3D0;			// enable linker functionality (1=3Don|0=3Doff)=0A=
var _uanchor=3D0;			// enable use of anchors for campaign =
(1=3Don|0=3Doff)=0A=
var _utcp=3D"/";			// the cookie path for tracking=0A=
var _usample=3D100;		// The sampling % of visitors to track (1-100).=0A=
=0A=
//-- UTM Campaign Tracking Settings=0A=
var _uctm=3D1;			// set campaign tracking module (1=3Don|0=3Doff)=0A=
var _ucto=3D"15768000";		// set timeout in seconds (6 month default)=0A=
var _uccn=3D"utm_campaign";	// name=0A=
var _ucmd=3D"utm_medium";		// medium (cpc|cpm|link|email|organic)=0A=
var _ucsr=3D"utm_source";		// source=0A=
var _uctr=3D"utm_term";		// term/keyword=0A=
var _ucct=3D"utm_content";	// content=0A=
var _ucid=3D"utm_id";		// id number=0A=
var _ucno=3D"utm_nooverride";	// don't override=0A=
=0A=
//-- Auto/Organic Sources and Keywords=0A=
var _uOsr=3Dnew Array();=0A=
var _uOkw=3Dnew Array();=0A=
_uOsr[0]=3D"google";	_uOkw[0]=3D"q";=0A=
_uOsr[1]=3D"yahoo";	_uOkw[1]=3D"p";=0A=
_uOsr[2]=3D"msn";		_uOkw[2]=3D"q";=0A=
_uOsr[3]=3D"aol";		_uOkw[3]=3D"query";=0A=
_uOsr[4]=3D"aol";		_uOkw[4]=3D"encquery";=0A=
_uOsr[5]=3D"lycos";	_uOkw[5]=3D"query";=0A=
_uOsr[6]=3D"ask";		_uOkw[6]=3D"q";=0A=
_uOsr[7]=3D"altavista";	_uOkw[7]=3D"q";=0A=
_uOsr[8]=3D"netscape";	_uOkw[8]=3D"query";=0A=
_uOsr[9]=3D"cnn";	_uOkw[9]=3D"query";=0A=
_uOsr[10]=3D"looksmart";	_uOkw[10]=3D"qt";=0A=
_uOsr[11]=3D"about";	_uOkw[11]=3D"terms";=0A=
_uOsr[12]=3D"mamma";	_uOkw[12]=3D"query";=0A=
_uOsr[13]=3D"alltheweb";	_uOkw[13]=3D"q";=0A=
_uOsr[14]=3D"gigablast";	_uOkw[14]=3D"q";=0A=
_uOsr[15]=3D"voila";	_uOkw[15]=3D"rdata";=0A=
_uOsr[16]=3D"virgilio";	_uOkw[16]=3D"qs";=0A=
_uOsr[17]=3D"live";	_uOkw[17]=3D"q";=0A=
_uOsr[18]=3D"baidu";	_uOkw[18]=3D"wd";=0A=
_uOsr[19]=3D"alice";	_uOkw[19]=3D"qs";=0A=
_uOsr[20]=3D"yandex";	_uOkw[20]=3D"text";=0A=
_uOsr[21]=3D"najdi";	_uOkw[21]=3D"q";=0A=
_uOsr[22]=3D"aol";	_uOkw[22]=3D"q";=0A=
_uOsr[23]=3D"club-internet"; _uOkw[23]=3D"q";=0A=
_uOsr[24]=3D"mama";	_uOkw[24]=3D"query";=0A=
_uOsr[25]=3D"seznam";	_uOkw[25]=3D"q";=0A=
_uOsr[26]=3D"search";	_uOkw[26]=3D"q";=0A=
_uOsr[27]=3D"szukaj";	_uOkw[27]=3D"szukaj";=0A=
_uOsr[28]=3D"szukaj";	_uOkw[28]=3D"qt";=0A=
_uOsr[29]=3D"netsprint";	_uOkw[29]=3D"q";=0A=
_uOsr[30]=3D"google.interia";	_uOkw[30]=3D"q";=0A=
_uOsr[31]=3D"szukacz";	_uOkw[31]=3D"q";=0A=
_uOsr[32]=3D"yam";	_uOkw[32]=3D"k";=0A=
_uOsr[33]=3D"pchome";	_uOkw[33]=3D"q";=0A=
=0A=
=0A=
//-- Auto/Organic Keywords to Ignore=0A=
var _uOno=3Dnew Array();=0A=
//_uOno[0]=3D"urchin";=0A=
//_uOno[1]=3D"urchin.com";=0A=
//_uOno[2]=3D"www.urchin.com";=0A=
=0A=
//-- Referral domains to Ignore=0A=
var _uRno=3Dnew Array();=0A=
//_uRno[0]=3D".urchin.com";=0A=
=0A=
//-- **** Don't modify below this point ***=0A=
var =
_uff,_udh,_udt,_ubl=3D0,_udo=3D"",_uu,_ufns=3D0,_uns=3D0,_ur=3D"-",_ufno=3D=
0,_ust=3D0,_ubd=3Ddocument,_udl=3D_ubd.location,_udlh=3D"",_uwv=3D"1";=0A=
var _ugifpath2=3D"http://www.google-analytics.com/__utm.gif";=0A=
if (_udl.hash) _udlh=3D_udl.href.substring(_udl.href.indexOf('#'));=0A=
if (_udl.protocol=3D=3D"https:") =
_ugifpath2=3D"https://ssl.google-analytics.com/__utm.gif";=0A=
if (!_utcp || _utcp=3D=3D"") _utcp=3D"/";=0A=
function urchinTracker(page) {=0A=
 if (_udl.protocol=3D=3D"file:") return;=0A=
 if (_uff && (!page || page=3D=3D"")) return;=0A=
 var a,b,c,xx,v,z,k,x=3D"",s=3D"",f=3D0;=0A=
 var nx=3D" expires=3D"+_uNx()+";";=0A=
 var dc=3D_ubd.cookie;=0A=
 _udh=3D_uDomain();=0A=
 if (!_uVG()) return;=0A=
 _uu=3DMath.round(Math.random()*2147483647);=0A=
 _udt=3Dnew Date();=0A=
 _ust=3DMath.round(_udt.getTime()/1000);=0A=
 a=3Ddc.indexOf("__utma=3D"+_udh);=0A=
 b=3Ddc.indexOf("__utmb=3D"+_udh);=0A=
 c=3Ddc.indexOf("__utmc=3D"+_udh);=0A=
 if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A=
 if (_utimeout && _utimeout!=3D"") {=0A=
  x=3Dnew Date(_udt.getTime()+(_utimeout*1000));=0A=
  x=3D" expires=3D"+x.toGMTString()+";";=0A=
 }=0A=
 if (_ulink) {=0A=
  if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A=
  s+=3D_udl.search;=0A=
  if(s && s!=3D"" && s.indexOf("__utma=3D")>=3D0) {=0A=
   if (!(_uIN(a=3D_uGC(s,"__utma=3D","&")))) a=3D"-";=0A=
   if (!(_uIN(b=3D_uGC(s,"__utmb=3D","&")))) b=3D"-";=0A=
   if (!(_uIN(c=3D_uGC(s,"__utmc=3D","&")))) c=3D"-";=0A=
   v=3D_uGC(s,"__utmv=3D","&");=0A=
   z=3D_uGC(s,"__utmz=3D","&");=0A=
   k=3D_uGC(s,"__utmk=3D","&");=0A=
   xx=3D_uGC(s,"__utmx=3D","&");=0A=
   if ((k*1) !=3D ((_uHash(a+b+c+xx+z+v)*1)+(_udh*1))) =
{_ubl=3D1;a=3D"-";b=3D"-";c=3D"-";xx=3D"-";z=3D"-";v=3D"-";}=0A=
   if (a!=3D"-" && b!=3D"-" && c!=3D"-") f=3D1;=0A=
   else if(a!=3D"-") f=3D2;=0A=
  }=0A=
 }=0A=
 if(f=3D=3D1) {=0A=
  _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A=
  _ubd.cookie=3D"__utmb=3D"+b+"; path=3D"+_utcp+";"+x+_udo;=0A=
  _ubd.cookie=3D"__utmc=3D"+c+"; path=3D"+_utcp+";"+_udo;=0A=
 } else if (f=3D=3D2) {=0A=
  a=3D_uFixA(s,"&",_ust);=0A=
  _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A=
  _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A=
  _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A=
  _ufns=3D1;=0A=
 } else if (a>=3D0 && b>=3D0 && c>=3D0) {=0A=
  _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A=
 } else {=0A=
  if (a>=3D0) a=3D_uFixA(_ubd.cookie,";",_ust);=0A=
  else a=3D_udh+"."+_uu+"."+_ust+"."+_ust+"."+_ust+".1";=0A=
  _ubd.cookie=3D"__utma=3D"+a+"; path=3D"+_utcp+";"+nx+_udo;=0A=
  _ubd.cookie=3D"__utmb=3D"+_udh+"; path=3D"+_utcp+";"+x+_udo;=0A=
  _ubd.cookie=3D"__utmc=3D"+_udh+"; path=3D"+_utcp+";"+_udo;=0A=
  _ufns=3D1;=0A=
 }=0A=
 if (_ulink && xx && xx!=3D"" && xx!=3D"-") {=0A=
   xx=3D_uUES(xx);=0A=
   if (xx.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmx=3D"+xx+"; =
path=3D"+_utcp+";"+nx+_udo;=0A=
 }=0A=
 if (_ulink && v && v!=3D"" && v!=3D"-") {=0A=
  v=3D_uUES(v);=0A=
  if (v.indexOf(";")=3D=3D-1) _ubd.cookie=3D"__utmv=3D"+v+"; =
path=3D"+_utcp+";"+nx+_udo;=0A=
 }=0A=
 _uInfo(page);=0A=
 _ufns=3D0;=0A=
 _ufno=3D0;=0A=
 if (!page || page=3D=3D"") _uff=3D1;=0A=
}=0A=
function _uInfo(page) {=0A=
 var p,s=3D"",dm=3D"",pg=3D_udl.pathname+_udl.search;=0A=
 if (page && page!=3D"") pg=3D_uES(page,1);=0A=
 _ur=3D_ubd.referrer;=0A=
 if (!_ur || _ur=3D=3D"") { _ur=3D"-"; }=0A=
 else {=0A=
  dm=3D_ubd.domain;=0A=
  if(_utcp && _utcp!=3D"/") dm+=3D_utcp;=0A=
  p=3D_ur.indexOf(dm);=0A=
  if ((p>=3D0) && (p<=3D8)) { _ur=3D"0"; }=0A=
  if (_ur.indexOf("[")=3D=3D0 && =
_ur.lastIndexOf("]")=3D=3D(_ur.length-1)) { _ur=3D"-"; }=0A=
 }=0A=
 s+=3D"&utmn=3D"+_uu;=0A=
 if (_ufsc) s+=3D_uBInfo();=0A=
 if (_uctm) s+=3D_uCInfo();=0A=
 if (_utitle && _ubd.title && _ubd.title!=3D"") =
s+=3D"&utmdt=3D"+_uES(_ubd.title);=0A=
 if (_udl.hostname && _udl.hostname!=3D"") =
s+=3D"&utmhn=3D"+_uES(_udl.hostname);=0A=
 s+=3D"&utmr=3D"+_ur;=0A=
 s+=3D"&utmp=3D"+pg;=0A=
 if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A=
  var i=3Dnew Image(1,1);=0A=
  i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A=
  i.onload=3Dfunction() {_uVoid();}=0A=
 }=0A=
 if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A=
  var i2=3Dnew Image(1,1);=0A=
  =
i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+=
_uGCS();=0A=
  i2.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
 return;=0A=
}=0A=
function _uVoid() { return; }=0A=
function _uCInfo() {=0A=
 if (!_ucto || _ucto=3D=3D"") { _ucto=3D"15768000"; }=0A=
 if (!_uVG()) return;=0A=
 var =
c=3D"",t=3D"-",t2=3D"-",t3=3D"-",o=3D0,cs=3D0,cn=3D0,i=3D0,z=3D"-",s=3D""=
;=0A=
 if (_uanchor && _udlh && _udlh!=3D"") s=3D_udlh+"&";=0A=
 s+=3D_udl.search;=0A=
 var x=3Dnew Date(_udt.getTime()+(_ucto*1000));=0A=
 var dc=3D_ubd.cookie;=0A=
 x=3D" expires=3D"+x.toGMTString()+";";=0A=
 if (_ulink && !_ubl) {=0A=
  z=3D_uUES(_uGC(s,"__utmz=3D","&"));=0A=
  if (z!=3D"-" && z.indexOf(";")=3D=3D-1) { =
_ubd.cookie=3D"__utmz=3D"+z+"; path=3D"+_utcp+";"+x+_udo; return ""; }=0A=
 }=0A=
 z=3Ddc.indexOf("__utmz=3D"+_udh);=0A=
 if (z>-1) { z=3D_uGC(dc,"__utmz=3D"+_udh,";"); }=0A=
 else { z=3D"-"; }=0A=
 t=3D_uGC(s,_ucid+"=3D","&");=0A=
 t2=3D_uGC(s,_ucsr+"=3D","&");=0A=
 t3=3D_uGC(s,"gclid=3D","&");=0A=
 if ((t!=3D"-" && t!=3D"") || (t2!=3D"-" && t2!=3D"") || (t3!=3D"-" && =
t3!=3D"")) {=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"utmcid=3D"+_uEC(t);=0A=
  if (t2!=3D"-" && t2!=3D"") { if (c !=3D "") c+=3D"|"; =
c+=3D"utmcsr=3D"+_uEC(t2); }=0A=
  if (t3!=3D"-" && t3!=3D"") { if (c !=3D "") c+=3D"|"; =
c+=3D"utmgclid=3D"+_uEC(t3); }=0A=
  t=3D_uGC(s,_uccn+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmccn=3D"+_uEC(t);=0A=
  else c+=3D"|utmccn=3D(not+set)";=0A=
  t=3D_uGC(s,_ucmd+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmcmd=3D"+_uEC(t);=0A=
  else  c+=3D"|utmcmd=3D(not+set)";=0A=
  t=3D_uGC(s,_uctr+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmctr=3D"+_uEC(t);=0A=
  else { t=3D_uOrg(1); if (t!=3D"-" && t!=3D"") =
c+=3D"|utmctr=3D"+_uEC(t); }=0A=
  t=3D_uGC(s,_ucct+"=3D","&");=0A=
  if (t!=3D"-" && t!=3D"") c+=3D"|utmcct=3D"+_uEC(t);=0A=
  t=3D_uGC(s,_ucno+"=3D","&");=0A=
  if (t=3D=3D"1") o=3D1;=0A=
  if (z!=3D"-" && o=3D=3D1) return "";=0A=
 }=0A=
 if (c=3D=3D"-" || c=3D=3D"") { c=3D_uOrg(); if (z!=3D"-" && =
_ufno=3D=3D1)  return ""; }=0A=
 if (c=3D=3D"-" || c=3D=3D"") { if (_ufns=3D=3D1)  c=3D_uRef(); if =
(z!=3D"-" && _ufno=3D=3D1)  return ""; }=0A=
 if (c=3D=3D"-" || c=3D=3D"") {=0A=
  if (z=3D=3D"-" && _ufns=3D=3D1) { =
c=3D"utmccn=3D(direct)|utmcsr=3D(direct)|utmcmd=3D(none)"; }=0A=
  if (c=3D=3D"-" || c=3D=3D"") return "";=0A=
 }=0A=
 if (z!=3D"-") {=0A=
  i=3Dz.indexOf(".");=0A=
  if (i>-1) i=3Dz.indexOf(".",i+1);=0A=
  if (i>-1) i=3Dz.indexOf(".",i+1);=0A=
  if (i>-1) i=3Dz.indexOf(".",i+1);=0A=
  t=3Dz.substring(i+1,z.length);=0A=
  if (t.toLowerCase()=3D=3Dc.toLowerCase()) cs=3D1;=0A=
  t=3Dz.substring(0,i);=0A=
  if ((i=3Dt.lastIndexOf(".")) > -1) {=0A=
   t=3Dt.substring(i+1,t.length);=0A=
   cn=3D(t*1);=0A=
  }=0A=
 }=0A=
 if (cs=3D=3D0 || _ufns=3D=3D1) {=0A=
  t=3D_uGC(dc,"__utma=3D"+_udh,";");=0A=
  if ((i=3Dt.lastIndexOf(".")) > 9) {=0A=
   _uns=3Dt.substring(i+1,t.length);=0A=
   _uns=3D(_uns*1);=0A=
  }=0A=
  cn++;=0A=
  if (_uns=3D=3D0) _uns=3D1;=0A=
  _ubd.cookie=3D"__utmz=3D"+_udh+"."+_ust+"."+_uns+"."+cn+"."+c+"; =
path=3D"+_utcp+"; "+x+_udo;=0A=
 }=0A=
 if (cs=3D=3D0 || _ufns=3D=3D1) return "&utmcn=3D1";=0A=
 else return "&utmcr=3D1";=0A=
}=0A=
function _uRef() {=0A=
 if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A=
 var i=3D0,h,k,n;=0A=
 if ((i=3D_ur.indexOf("://"))<0) return "";=0A=
 h=3D_ur.substring(i+3,_ur.length);=0A=
 if (h.indexOf("/") > -1) {=0A=
  k=3Dh.substring(h.indexOf("/"),h.length);=0A=
  if (k.indexOf("?") > -1) k=3Dk.substring(0,k.indexOf("?"));=0A=
  h=3Dh.substring(0,h.indexOf("/"));=0A=
 }=0A=
 h=3Dh.toLowerCase();=0A=
 n=3Dh;=0A=
 if ((i=3Dn.indexOf(":")) > -1) n=3Dn.substring(0,i);=0A=
 for (var ii=3D0;ii<_uRno.length;ii++) {=0A=
  if ((i=3Dn.indexOf(_uRno[ii].toLowerCase())) > -1 && =
n.length=3D=3D(i+_uRno[ii].length)) { _ufno=3D1; break; }=0A=
 }=0A=
 if (h.indexOf("www.")=3D=3D0) h=3Dh.substring(4,h.length);=0A=
 return =
"utmccn=3D(referral)|utmcsr=3D"+_uEC(h)+"|"+"utmcct=3D"+_uEC(k)+"|utmcmd=3D=
referral";=0A=
}=0A=
function _uOrg(t) {=0A=
 if (_ur=3D=3D"0" || _ur=3D=3D"" || _ur=3D=3D"-") return "";=0A=
 var i=3D0,h,k;=0A=
 if ((i=3D_ur.indexOf("://")) < 0) return "";=0A=
 h=3D_ur.substring(i+3,_ur.length);=0A=
 if (h.indexOf("/") > -1) {=0A=
  h=3Dh.substring(0,h.indexOf("/"));=0A=
 }=0A=
 for (var ii=3D0;ii<_uOsr.length;ii++) {=0A=
  if (h.toLowerCase().indexOf(_uOsr[ii].toLowerCase()) > -1) {=0A=
   if ((i=3D_ur.indexOf("?"+_uOkw[ii]+"=3D")) > -1 || =
(i=3D_ur.indexOf("&"+_uOkw[ii]+"=3D")) > -1) {=0A=
    k=3D_ur.substring(i+_uOkw[ii].length+2,_ur.length);=0A=
    if ((i=3Dk.indexOf("&")) > -1) k=3Dk.substring(0,i);=0A=
    for (var yy=3D0;yy<_uOno.length;yy++) {=0A=
     if (_uOno[yy].toLowerCase()=3D=3Dk.toLowerCase()) { _ufno=3D1; =
break; }=0A=
    }=0A=
    if (t) return _uEC(k);=0A=
    else return =
"utmccn=3D(organic)|utmcsr=3D"+_uEC(_uOsr[ii])+"|"+"utmctr=3D"+_uEC(k)+"|=
utmcmd=3Dorganic";=0A=
   }=0A=
  }=0A=
 }=0A=
 return "";=0A=
}=0A=
function _uBInfo() {=0A=
 var sr=3D"-",sc=3D"-",ul=3D"-",fl=3D"-",cs=3D"-",je=3D1;=0A=
 var n=3Dnavigator;=0A=
 if (self.screen) {=0A=
  sr=3Dscreen.width+"x"+screen.height;=0A=
  sc=3Dscreen.colorDepth+"-bit";=0A=
 } else if (self.java) {=0A=
  var j=3Djava.awt.Toolkit.getDefaultToolkit();=0A=
  var s=3Dj.getScreenSize();=0A=
  sr=3Ds.width+"x"+s.height;=0A=
 }=0A=
 if (n.language) { ul=3Dn.language.toLowerCase(); }=0A=
 else if (n.browserLanguage) { ul=3Dn.browserLanguage.toLowerCase(); }=0A=
 je=3Dn.javaEnabled()?1:0;=0A=
 if (_uflash) fl=3D_uFlash();=0A=
 if (_ubd.characterSet) cs=3D_uES(_ubd.characterSet);=0A=
 else if (_ubd.charset) cs=3D_uES(_ubd.charset);=0A=
 return =
"&utmcs=3D"+cs+"&utmsr=3D"+sr+"&utmsc=3D"+sc+"&utmul=3D"+ul+"&utmje=3D"+j=
e+"&utmfl=3D"+fl;=0A=
}=0A=
function __utmSetTrans() {=0A=
 var e;=0A=
 if (_ubd.getElementById) e=3D_ubd.getElementById("utmtrans");=0A=
 else if (_ubd.utmform && _ubd.utmform.utmtrans) =
e=3D_ubd.utmform.utmtrans;=0A=
 if (!e) return;=0A=
 var l=3De.value.split("UTM:");=0A=
 var i,i2,c;=0A=
 if (_userv=3D=3D0 || _userv=3D=3D2) i=3Dnew Array();=0A=
 if (_userv=3D=3D1 || _userv=3D=3D2) { i2=3Dnew Array(); c=3D_uGCS(); }=0A=
=0A=
 for (var ii=3D0;ii<l.length;ii++) {=0A=
  l[ii]=3D_uTrim(l[ii]);=0A=
  if (l[ii].charAt(0)!=3D'T' && l[ii].charAt(0)!=3D'I') continue;=0A=
  var r=3DMath.round(Math.random()*2147483647);=0A=
  if (!_utsp || _utsp=3D=3D"") _utsp=3D"|";=0A=
  var f=3Dl[ii].split(_utsp),s=3D"";=0A=
  if (f[0].charAt(0)=3D=3D'T') {=0A=
   s=3D"&utmt=3Dtran"+"&utmn=3D"+r;=0A=
   f[1]=3D_uTrim(f[1]); if(f[1]&&f[1]!=3D"") =
s+=3D"&utmtid=3D"+_uES(f[1]);=0A=
   f[2]=3D_uTrim(f[2]); if(f[2]&&f[2]!=3D"") =
s+=3D"&utmtst=3D"+_uES(f[2]);=0A=
   f[3]=3D_uTrim(f[3]); if(f[3]&&f[3]!=3D"") =
s+=3D"&utmtto=3D"+_uES(f[3]);=0A=
   f[4]=3D_uTrim(f[4]); if(f[4]&&f[4]!=3D"") =
s+=3D"&utmttx=3D"+_uES(f[4]);=0A=
   f[5]=3D_uTrim(f[5]); if(f[5]&&f[5]!=3D"") =
s+=3D"&utmtsp=3D"+_uES(f[5]);=0A=
   f[6]=3D_uTrim(f[6]); if(f[6]&&f[6]!=3D"") =
s+=3D"&utmtci=3D"+_uES(f[6]);=0A=
   f[7]=3D_uTrim(f[7]); if(f[7]&&f[7]!=3D"") =
s+=3D"&utmtrg=3D"+_uES(f[7]);=0A=
   f[8]=3D_uTrim(f[8]); if(f[8]&&f[8]!=3D"") =
s+=3D"&utmtco=3D"+_uES(f[8]);=0A=
  } else {=0A=
   s=3D"&utmt=3Ditem"+"&utmn=3D"+r;=0A=
   f[1]=3D_uTrim(f[1]); if(f[1]&&f[1]!=3D"") =
s+=3D"&utmtid=3D"+_uES(f[1]);=0A=
   f[2]=3D_uTrim(f[2]); if(f[2]&&f[2]!=3D"") =
s+=3D"&utmipc=3D"+_uES(f[2]);=0A=
   f[3]=3D_uTrim(f[3]); if(f[3]&&f[3]!=3D"") =
s+=3D"&utmipn=3D"+_uES(f[3]);=0A=
   f[4]=3D_uTrim(f[4]); if(f[4]&&f[4]!=3D"") =
s+=3D"&utmiva=3D"+_uES(f[4]);=0A=
   f[5]=3D_uTrim(f[5]); if(f[5]&&f[5]!=3D"") =
s+=3D"&utmipr=3D"+_uES(f[5]);=0A=
   f[6]=3D_uTrim(f[6]); if(f[6]&&f[6]!=3D"") =
s+=3D"&utmiqt=3D"+_uES(f[6]);=0A=
  }=0A=
  if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A=
   i[ii]=3Dnew Image(1,1);=0A=
   i[ii].src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A=
   i[ii].onload=3Dfunction() { _uVoid(); }=0A=
  }=0A=
  if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A=
   i2[ii]=3Dnew Image(1,1);=0A=
   =
i2[ii].src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D=
"+c;=0A=
   i2[ii].onload=3Dfunction() { _uVoid(); }=0A=
  }=0A=
 }=0A=
 return;=0A=
}=0A=
function _uFlash() {=0A=
 var f=3D"-",n=3Dnavigator;=0A=
 if (n.plugins && n.plugins.length) {=0A=
  for (var ii=3D0;ii<n.plugins.length;ii++) {=0A=
   if (n.plugins[ii].name.indexOf('Shockwave Flash')!=3D-1) {=0A=
    f=3Dn.plugins[ii].description.split('Shockwave Flash ')[1];=0A=
    break;=0A=
   }=0A=
  }=0A=
 } else if (window.ActiveXObject) {=0A=
  for (var ii=3D10;ii>=3D2;ii--) {=0A=
   try {=0A=
    var fl=3Deval("new =
ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");=0A=
    if (fl) { f=3Dii + '.0'; break; }=0A=
   }=0A=
   catch(e) {}=0A=
  }=0A=
 }=0A=
 return f;=0A=
}=0A=
function __utmLinker(l,h) {=0A=
 if (!_ulink) return;=0A=
 var p,k,a=3D"-",b=3D"-",c=3D"-",x=3D"-",z=3D"-",v=3D"-";=0A=
 var dc=3D_ubd.cookie;=0A=
 if (!l || l=3D=3D"") return;=0A=
 var iq =3D l.indexOf("?"); =0A=
 var ih =3D l.indexOf("#"); =0A=
 if (dc) {=0A=
  a=3D_uES(_uGC(dc,"__utma=3D"+_udh,";"));=0A=
  b=3D_uES(_uGC(dc,"__utmb=3D"+_udh,";"));=0A=
  c=3D_uES(_uGC(dc,"__utmc=3D"+_udh,";"));=0A=
  x=3D_uES(_uGC(dc,"__utmx=3D"+_udh,";"));=0A=
  z=3D_uES(_uGC(dc,"__utmz=3D"+_udh,";"));=0A=
  v=3D_uES(_uGC(dc,"__utmv=3D"+_udh,";"));=0A=
  k=3D(_uHash(a+b+c+x+z+v)*1)+(_udh*1);=0A=
  =
p=3D"__utma=3D"+a+"&__utmb=3D"+b+"&__utmc=3D"+c+"&__utmx=3D"+x+"&__utmz=3D=
"+z+"&__utmv=3D"+v+"&__utmk=3D"+k;=0A=
 }=0A=
 if (p) {=0A=
  if (h && ih>-1) return;=0A=
  if (h) { _udl.href=3Dl+"#"+p; }=0A=
  else {=0A=
   if (iq=3D=3D-1 && ih=3D=3D-1) _udl.href=3Dl+"?"+p;=0A=
   else if (ih=3D=3D-1) _udl.href=3Dl+"&"+p;=0A=
   else if (iq=3D=3D-1) =
_udl.href=3Dl.substring(0,ih-1)+"?"+p+l.substring(ih);=0A=
   else _udl.href=3Dl.substring(0,ih-1)+"&"+p+l.substring(ih);=0A=
  }=0A=
 } else { _udl.href=3Dl; }=0A=
}=0A=
function __utmLinkPost(f,h) {=0A=
 if (!_ulink) return;=0A=
 var p,k,a=3D"-",b=3D"-",c=3D"-",x=3D"-",z=3D"-",v=3D"-";=0A=
 var dc=3D_ubd.cookie;=0A=
 if (!f || !f.action) return;=0A=
 var iq =3D f.action.indexOf("?"); =0A=
 var ih =3D f.action.indexOf("#"); =0A=
 if (dc) {=0A=
  a=3D_uES(_uGC(dc,"__utma=3D"+_udh,";"));=0A=
  b=3D_uES(_uGC(dc,"__utmb=3D"+_udh,";"));=0A=
  c=3D_uES(_uGC(dc,"__utmc=3D"+_udh,";"));=0A=
  x=3D_uES(_uGC(dc,"__utmx=3D"+_udh,";"));=0A=
  z=3D_uES(_uGC(dc,"__utmz=3D"+_udh,";"));=0A=
  v=3D_uES(_uGC(dc,"__utmv=3D"+_udh,";"));=0A=
  k=3D(_uHash(a+b+c+x+z+v)*1)+(_udh*1);=0A=
  =
p=3D"__utma=3D"+a+"&__utmb=3D"+b+"&__utmc=3D"+c+"&__utmx=3D"+x+"&__utmz=3D=
"+z+"&__utmv=3D"+v+"&__utmk=3D"+k;=0A=
 }=0A=
 if (p) {=0A=
  if (h && ih>-1) return;=0A=
  if (h) { f.action+=3D"#"+p; }=0A=
  else {=0A=
   if (iq=3D=3D-1 && ih=3D=3D-1) f.action+=3D"?"+p;=0A=
   else if (ih=3D=3D-1) f.action+=3D"&"+p;=0A=
   else if (iq=3D=3D-1) =
f.action=3Df.action.substring(0,ih-1)+"?"+p+f.action.substring(ih);=0A=
   else =
f.action=3Df.action.substring(0,ih-1)+"&"+p+f.action.substring(ih);=0A=
  }=0A=
 }=0A=
 return;=0A=
}=0A=
function __utmSetVar(v) {=0A=
 if (!v || v=3D=3D"") return;=0A=
 if (!_udo || _udo =3D=3D "") {=0A=
  _udh=3D_uDomain();=0A=
  if (_udn && _udn!=3D"") { _udo=3D" domain=3D"+_udn+";"; }=0A=
 }=0A=
 if (!_uVG()) return;=0A=
 var r=3DMath.round(Math.random() * 2147483647);=0A=
 _ubd.cookie=3D"__utmv=3D"+_udh+"."+_uES(v)+"; path=3D"+_utcp+"; =
expires=3D"+_uNx()+";"+_udo;=0A=
 var s=3D"&utmt=3Dvar&utmn=3D"+r;=0A=
 if ((_userv=3D=3D0 || _userv=3D=3D2) && _uSP()) {=0A=
  var i=3Dnew Image(1,1);=0A=
  i.src=3D_ugifpath+"?"+"utmwv=3D"+_uwv+s;=0A=
  i.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
 if ((_userv=3D=3D1 || _userv=3D=3D2) && _uSP()) {=0A=
  var i2=3Dnew Image(1,1);=0A=
  =
i2.src=3D_ugifpath2+"?"+"utmwv=3D"+_uwv+s+"&utmac=3D"+_uacct+"&utmcc=3D"+=
_uGCS();=0A=
  i2.onload=3Dfunction() { _uVoid(); }=0A=
 }=0A=
}=0A=
function _uGCS() {=0A=
 var t,c=3D"",dc=3D_ubd.cookie;=0A=
 if ((t=3D_uGC(dc,"__utma=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utma=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmb=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmb=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmc=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmc=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmx=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmx=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmz=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmz=3D"+t+";+");=0A=
 if ((t=3D_uGC(dc,"__utmv=3D"+_udh,";"))!=3D"-") =
c+=3D_uES("__utmv=3D"+t+";");=0A=
 if (c.charAt(c.length-1)=3D=3D"+") c=3Dc.substring(0,c.length-1);=0A=
 return c;=0A=
}=0A=
function _uGC(l,n,s) {=0A=
 if (!l || l=3D=3D"" || !n || n=3D=3D"" || !s || s=3D=3D"") return "-";=0A=
 var i,i2,i3,c=3D"-";=0A=
 i=3Dl.indexOf(n);=0A=
 i3=3Dn.indexOf("=3D")+1;=0A=
 if (i > -1) {=0A=
  i2=3Dl.indexOf(s,i); if (i2 < 0) { i2=3Dl.length; }=0A=
  c=3Dl.substring((i+i3),i2);=0A=
 }=0A=
 return c;=0A=
}=0A=
function _uDomain() {=0A=
 if (!_udn || _udn=3D=3D"" || _udn=3D=3D"none") { _udn=3D""; return 1; }=0A=
 if (_udn=3D=3D"auto") {=0A=
  var d=3D_ubd.domain;=0A=
  if (d.substring(0,4)=3D=3D"www.") {=0A=
   d=3Dd.substring(4,d.length);=0A=
  }=0A=
  _udn=3Dd;=0A=
 }=0A=
 _udn =3D _udn.toLowerCase(); =0A=
 if (_uhash=3D=3D"off") return 1;=0A=
 return _uHash(_udn);=0A=
}=0A=
function _uHash(d) {=0A=
 if (!d || d=3D=3D"") return 1;=0A=
 var h=3D0,g=3D0;=0A=
 for (var i=3Dd.length-1;i>=3D0;i--) {=0A=
  var c=3DparseInt(d.charCodeAt(i));=0A=
  h=3D((h << 6) & 0xfffffff) + c + (c << 14);=0A=
  if ((g=3Dh & 0xfe00000)!=3D0) h=3D(h ^ (g >> 21));=0A=
 }=0A=
 return h;=0A=
}=0A=
function _uFixA(c,s,t) {=0A=
 if (!c || c=3D=3D"" || !s || s=3D=3D"" || !t || t=3D=3D"") return "-";=0A=
 var a=3D_uGC(c,"__utma=3D"+_udh,s);=0A=
 var lt=3D0,i=3D0;=0A=
 if ((i=3Da.lastIndexOf(".")) > 9) {=0A=
  _uns=3Da.substring(i+1,a.length);=0A=
  _uns=3D(_uns*1)+1;=0A=
  a=3Da.substring(0,i);=0A=
  if ((i=3Da.lastIndexOf(".")) > 7) {=0A=
   lt=3Da.substring(i+1,a.length);=0A=
   a=3Da.substring(0,i);=0A=
  }=0A=
  if ((i=3Da.lastIndexOf(".")) > 5) {=0A=
   a=3Da.substring(0,i);=0A=
  }=0A=
  a+=3D"."+lt+"."+t+"."+_uns;=0A=
 }=0A=
 return a;=0A=
}=0A=
function _uTrim(s) {=0A=
  if (!s || s=3D=3D"") return "";=0A=
  while ((s.charAt(0)=3D=3D' ') || (s.charAt(0)=3D=3D'\n') || =
(s.charAt(0,1)=3D=3D'\r')) s=3Ds.substring(1,s.length);=0A=
  while ((s.charAt(s.length-1)=3D=3D' ') || =
(s.charAt(s.length-1)=3D=3D'\n') || (s.charAt(s.length-1)=3D=3D'\r')) =
s=3Ds.substring(0,s.length-1);=0A=
  return s;=0A=
}=0A=
function _uEC(s) {=0A=
  var n=3D"";=0A=
  if (!s || s=3D=3D"") return "";=0A=
  for (var i=3D0;i<s.length;i++) {if (s.charAt(i)=3D=3D" ") n+=3D"+"; =
else n+=3Ds.charAt(i);}=0A=
  return n;=0A=
}=0A=
function __utmVisitorCode(f) {=0A=
 var r=3D0,t=3D0,i=3D0,i2=3D0,m=3D31;=0A=
 var a=3D_uGC(_ubd.cookie,"__utma=3D"+_udh,";");=0A=
 if ((i=3Da.indexOf(".",0))<0) return;=0A=
 if ((i2=3Da.indexOf(".",i+1))>0) r=3Da.substring(i+1,i2); else return =
"";  =0A=
 if ((i=3Da.indexOf(".",i2+1))>0) t=3Da.substring(i2+1,i); else return =
"";  =0A=
 if (f) {=0A=
  return r;=0A=
 } else {=0A=
  var c=3Dnew =
Array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','R','S','T'=
,'U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9');=0A=
  return =
c[r>>28&m]+c[r>>23&m]+c[r>>18&m]+c[r>>13&m]+"-"+c[r>>8&m]+c[r>>3&m]+c[((r=
&7)<<2)+(t>>30&3)]+c[t>>25&m]+c[t>>20&m]+"-"+c[t>>15&m]+c[t>>10&m]+c[t>>5=
&m]+c[t&m];=0A=
 }=0A=
}=0A=
function _uIN(n) {=0A=
 if (!n) return false;=0A=
 for (var i=3D0;i<n.length;i++) {=0A=
  var c=3Dn.charAt(i);=0A=
  if ((c<"0" || c>"9") && (c!=3D".")) return false;=0A=
 }=0A=
 return true;=0A=
}=0A=
function _uES(s,u) {=0A=
 if (typeof(encodeURIComponent) =3D=3D 'function') {=0A=
  if (u) return encodeURI(s);=0A=
  else return encodeURIComponent(s);=0A=
 } else {=0A=
  return escape(s);=0A=
 }=0A=
}=0A=
function _uUES(s) {=0A=
 if (typeof(decodeURIComponent) =3D=3D 'function') {=0A=
  return decodeURIComponent(s);=0A=
 } else {=0A=
  return unescape(s);=0A=
 }=0A=
}=0A=
function _uVG() {=0A=
 if((_udn.indexOf("www.google.") =3D=3D 0 || _udn.indexOf(".google.") =
=3D=3D 0 || _udn.indexOf("google.") =3D=3D 0) && _utcp=3D=3D'/' && =
_udn.indexOf("google.org")=3D=3D-1) {=0A=
  return false;=0A=
 }=0A=
 return true;=0A=
}=0A=
function _uSP() {=0A=
 var s=3D100;=0A=
 if (_usample) s=3D_usample;=0A=
 if(s>=3D100 || s<=3D0) return true;=0A=
 return ((__utmVisitorCode(1)%10000)<(s*100));=0A=
}=0A=
function urchinPathCopy(p){=0A=
 var d=3Ddocument,nx,tx,sx,i,c,cs,t,h,o;=0A=
 cs=3Dnew Array("a","b","c","v","x","z");=0A=
 h=3D_uDomain(); if (_udn && _udn!=3D"") o=3D" domain=3D"+_udn+";";=0A=
 nx=3D_uNx()+";";=0A=
 tx=3Dnew Date(); tx.setTime(tx.getTime()+(_utimeout*1000));=0A=
 tx=3Dtx.toGMTString()+";";=0A=
 sx=3Dnew Date(); sx.setTime(sx.getTime()+(_ucto*1000));=0A=
 sx=3Dsx.toGMTString()+";";=0A=
 for (i=3D0;i<6;i++){=0A=
  t=3D" expires=3D";=0A=
  if (i=3D=3D1) t+=3Dtx; else if (i=3D=3D2) t=3D""; else if (i=3D=3D5) =
t+=3Dsx; else t+=3Dnx;=0A=
  c=3D_uGC(d.cookie,"__utm"+cs[i]+"=3D"+h,";");=0A=
  if (c!=3D"-") d.cookie=3D"__utm"+cs[i]+"=3D"+c+"; path=3D"+p+";"+t+o;=0A=
 }=0A=
}=0A=
function _uCO() {=0A=
 if (!_utk || _utk=3D=3D"" || _utk.length<10) return;=0A=
 var d=3D'www.google.com';=0A=
 if (_utk.charAt(0)=3D=3D'!') d=3D'analytics.corp.google.com';=0A=
 _ubd.cookie=3D"GASO=3D"+_utk+"; path=3D"+_utcp+";"+_udo;=0A=
 var sc=3Ddocument.createElement('script');=0A=
 sc.type=3D'text/javascript';=0A=
 sc.id=3D"_gasojs";=0A=
 =
sc.src=3D'https://'+d+'/analytics/reporting/overlay_js?gaso=3D'+_utk+'&'+=
Math.random();=0A=
 document.getElementsByTagName('head')[0].appendChild(sc);  =0A=
}=0A=
function _uGT() {=0A=
 var h=3Dlocation.hash, a;=0A=
 if (h && h!=3D"" && h.indexOf("#gaso=3D")=3D=3D0) {=0A=
  a=3D_uGC(h,"gaso=3D","&");=0A=
 } else {=0A=
  a=3D_uGC(_ubd.cookie,"GASO=3D",";");=0A=
 }=0A=
 return a;=0A=
}=0A=
var _utk=3D_uGT();=0A=
if (_utk && _utk!=3D"" && _utk.length>10) {=0A=
 if (window.addEventListener) {=0A=
  window.addEventListener('load', _uCO, false); =0A=
 } else if (window.attachEvent) { =0A=
  window.attachEvent('onload', _uCO);=0A=
 }=0A=
}=0A=
=0A=
function _uNx() {=0A=
  return (new Date((new Date()).getTime()+63072000000)).toGMTString();=0A=
}=0A=

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://site.answers.com/main/js/web_answertip.js?ANSW.nafid=100

function alert1(_1){}if(typeof ANSW=3D=3D"undefined"){ANSW=3Dnew =
Object();}ANSW.Init=3Dfunction(_2,_3){ANSW.nafid=3D_2;ANSW.cobrand=3D_3;}=
;ANSW.Balloon=3Dfunction(){var _4;this.oldkeyup=3D_4;var =
_5;this.tmrIFrameGone=3D_5;var =
_6=3D200;this.blbWidth=3D_6;this.showCloseBox=3Dfalse;this.initBalloon=3D=
function(){if(arguments.length>0){var =
_7=3Darguments[0];if(_7.width!=3Dnull){this.blbWidth=3D_7.width;}this.wid=
th=3Dthis.blbWidth;}};var =
_8;this.childID=3D_8;this.Show=3DShow;this.Hide=3DHide;this.isVisible=3Di=
sVisible;function Show(){var _9;var _a=3D0,_b=3D0;var _c=3D0,_d=3D0;var =
_e;var _f=3D"SE";var _10=3D"";var _11=3D"";var _12=3D"";var =
_13=3Dfalse;var _14=3Dnull;var ads=3D0;var =
_16=3DANSW.isFirefoxExtension?window._content.document:document;_6=3DStri=
ng(this.width)+"px";if(Show.arguments.length>0){var =
_17=3DShow.arguments[0];if(_17.title!=3Dnull){_9=3D_17.title;}if(_17.top!=
=3Dnull){_a=3D_17.top;}if(_17.left!=3Dnull){_b=3D_17.left;}if(_17.anchor!=
=3Dnull){_e=3D_17.anchor;_c=3DgetTop(_e);_d=3DgetLeft(_e);}if(_17.query!=3D=
null){_10=3D_17.query;}if(_17.nafid!=3Dnull){_11=3D_17.nafid;}if(_17.cobr=
and!=3Dnull){_12=3D_17.cobrand;}if(_17.nohook!=3Dnull){_13=3Dtrue;}if(_17=
.parent!=3Dnull){_14=3D_17.parent;}if(_17.ads!=3Dnull){ads=3D_17.ads;}}if=
(_14){_16=3D_14.parentNode;_16=3D_16.parentNode;ANSW.doc=3D_16;}var =
_18=3D_16.getElementById("AnswersBalloon");if(ANSW.doc){_18=3DANSW.doc.ge=
tElementById("AnswersBalloon");}alert1(" ANSW.doc=3D =
"+ANSW.doc);alert1(" formerBalloon=3D "+_18);alert1("btop =3D =
"+_a);if(_b=3D=3D-1&&_a=3D=3D-1){var =
_19=3DANSW.doc.getElementById("Answertip");_19.innerHTML=3D"<DIV =
class=3D\"answering\" >Answering...</DIV>";var =
_1a=3DANSW.doc.getElementById("AnswersAds");var =
_1b=3D"";if(this.answersURL.indexOf(":8080")!=3D-1){_1b=3D"/answers";}if(=
_1a!=3Dnull){if(typeof =
_12!=3D"undefined"&&_12!=3Dnull){_1a.src=3Dthis.answersURL+_1b+"/main/tip=
2.jsp?s=3D"+_10+"&wt=3D1&cobrand=3D"+_12;}if(typeof =
_11!=3D"undefined"&&_11!=3Dnull){_1a.src+=3D"&nafid=3D"+_11;}if(ads>0){_1=
a.src=3D"";}}return;}else{this.balloonDIV=3D_16.createElement("DIV");this=
.balloonDIV.id=3D"AnswersBalloon";this.balloonDIV.style.width=3DString(_6=
);this.balloonDIV.style.position=3D"absolute";this.balloonDIV.style.visib=
ility=3D"hidden";this.balloonDIV.style.zIndex=3D99999;this.balloonDIV.sty=
le.textAlign=3D"left";}var =
ret=3Dthis.balloonInfrastructure(balloonBody(_9,this.showCloseBox,_12),th=
is.JSBalloonPath,_f,_10,_11,_12,ads);if(_18){ANSW.b5.Hide();this.childID=3D=
ANSW.doc?ANSW.doc.body.replaceChild(this.balloonDIV,_18):_16.body.replace=
Child(this.balloonDIV,_18);if(this.ifrlayer){this.ifrlayer.replace(this.b=
alloonDIV);}}else{alert1("parent=3D =
"+_14);if(_14){this.childID=3D_14.appendChild(this.balloonDIV);}else{this=
.childID=3D_16.body.appendChild(this.balloonDIV);}if(this.ifrlayer){this.=
ifrlayer.make(this.balloonDIV);}}this.balloonDIV.innerHTML=3Dret;var =
_1d;var =
_1e;if(_e!=3Dnull){_1d=3D_d+_b;_1e=3D_c-this.balloonDIV.offsetHeight+_a;}=
else{_1d=3D_b;_1e=3D_a-this.balloonDIV.offsetHeight;}alert1("balloonLeft=3D=
 "+_1d+" balloonTop=3D "+_1e);var _1f=3D_1d;var =
_20;alert1("bAdjustedLeft=3D "+_1f);alert1("balloonDIV.offsetWidth=3D =
"+this.balloonDIV.offsetWidth);alert1("balloonDIV.offsetHeight=3D =
"+this.balloonDIV.offsetHeight);var _21;var _22;var _23;var =
_24;if(self.innerHeight){_21=3Dself.innerWidth;_22=3Dself.innerHeight;}el=
se{if(_16.documentElement&&_16.documentElement.clientHeight){_21=3D_16.do=
cumentElement.clientWidth;_22=3D_16.documentElement.clientHeight;}else{if=
(_16.body){_21=3D_16.body.clientWidth;_22=3D_16.body.clientHeight;}}}if(s=
elf.pageYOffset){_23=3Dself.pageXOffset;_24=3Dself.pageYOffset;}else{if(_=
16.documentElement&&_16.documentElement.scrollTop){_23=3D_16.documentElem=
ent.scrollLeft;_24=3D_16.documentElement.scrollTop;}else{if(_16.body){_23=
=3D_16.body.scrollLeft;_24=3D_16.body.scrollTop;}}}alert1("clientWidth=3D=
 "+_21);alert1("clientHeight=3D "+_22);alert1("scrollLeft=3D =
"+_23);alert1("scrollTop=3D "+_24);var =
_25=3D_1f-0+this.balloonDIV.offsetWidth-_23+20;alert1("check=3D =
"+_25);if(_21-0<_25-0){_f=3D"SW";alert1("SW");ret=3Dthis.balloonInfrastru=
cture(balloonBody(_9,this.showCloseBox,_12),this.JSBalloonPath,_f,_10,_11=
,_12,ads);this.balloonDIV.innerHTML=3Dret;_1d=3D_1f-this.balloonDIV.offse=
tWidth;alert1("balloonLeft =3D =
"+_1d);_20=3Dfalse;}else{_f=3D"SE";_20=3Dtrue;}alert1("balloonLeft=3D =
"+_1d+" balloonTop=3D =
"+_1e);if(_1e<_24){if(_20){_f=3D"NE";ret=3Dthis.balloonInfrastructure(bal=
loonBody(_9,this.showCloseBox,_12),this.JSBalloonPath,_f,_10,_11,_12,ads)=
;this.balloonDIV.innerHTML=3Dret;}else{_f=3D"NW";ret=3Dthis.balloonInfras=
tructure(balloonBody(_9,this.showCloseBox,_12),this.JSBalloonPath,_f,_10,=
_11,_12,ads);this.balloonDIV.innerHTML=3Dret;}_1e+=3Dthis.balloonDIV.offs=
etHeight;if(_e!=3Dnull){_1e+=3D_e.offsetHeight;if(document.all&&!this.isO=
pera){_1e+=3Dthis.balloonDIV.offsetParent.scrollTop;}}}else{alert1("1left=
1=3D "+_1d+" top1=3D =
"+_1e);}if(this.showCloseBox){if(_f=3D=3D"SE"||_f=3D=3D"SW"){btnClose=3Dt=
his.balloonDIV.children[0].children[0].children[1].children[0].children[0=
].children[0].children[0].children[2].children[0];}else{btnClose=3Dthis.b=
alloonDIV.children[0].children[0].children[2].children[0].children[0].chi=
ldren[0].children[0].children[2].children[0];}btnClose.onclick=3Dthis.Hid=
e;}alert1("3balloonLeft=3D "+_1d+" balloonTop=3D =
"+_1e);if(!this.isOpera){if(_e){var =
_26=3DScrollOffsets(_e);_1e-=3D_26[0];_1d-=3D_26[1];}}if(_1d<0||_1e<0||(_=
a+this.balloonDIV.offsetHeight-_24-_22)>0&&_f.indexOf("N")=3D=3D0){var =
_27=3DANSW.doc?ANSW.doc.getElementById("AnswerTipHook"):_16.getElementByI=
d("AnswerTipHook");if(_27){_27.style.visibility=3D"hidden";}_1e=3D_24;if(=
_21<=3D1025){_1d=3D_21/2-this.balloonDIV.offsetWidth/2+_23;}else{if(_f=3D=
=3D"NE"||_f=3D=3D"SE"){_1d+=3D50;}else{_1d-=3D50;}}}else{if(ANSW.isFirefo=
xExtension){if(_f.indexOf("E")>0){_1d-=3D20;}else{_1d+=3D20;}if(_f=3D=3D"=
SE"||_f=3D=3D"SW"){_1e-=3D5;}else{_1e+=3D5;}}else{if(_f=3D=3D"NW"||_f=3D=3D=
"SW"){_1d+=3D15;}if(_f=3D=3D"NW"||_f=3D=3D"NE"){_1e+=3D10;}}}if(_13){var =
_27=3DANSW.doc?ANSW.doc.getElementById("AnswerTipHook"):_16.getElementByI=
d("AnswerTipHook");if(_27){_27.style.visibility=3D"hidden";}}alert1("left=
b=3D "+this.balloonDIV.style.left+" topb=3D =
"+this.balloonDIV.style.top);alert1("4balloonLeft=3D "+_1d+" =
balloonTop=3D "+_1e);alert1("4this.balloonDIV.offsetHeight=3D =
"+this.balloonDIV.offsetHeight+" top=3D "+top+" =
mydoc.body.clientHeight=3D =
"+_16.body.clientHeight);this.balloonDIV.style.top=3D_1e+"px";this.balloo=
nDIV.style.left=3D_1d+"px";alert1("lefta=3D =
"+this.balloonDIV.style.left+" topa=3D =
"+this.balloonDIV.style.top);alert1("direction=3D"+_f);this.balloonDIV.di=
rection=3D_f;var =
_19=3DANSW.doc?ANSW.doc.getElementById("Answertip"):_16.getElementById("A=
nswertip");if(_19){_19.style.overflow=3D"auto";}if(this.ifrlayer){this.if=
rlayer.move(this.balloonDIV);this.ifrlayer.resize(this.balloonDIV);}this.=
balloonDIV.style.visibility=3D"visible";alert1(this.balloonDIV.style.widt=
h);if(ANSW.b5.isFirefox&&typeof =
deconcept!=3D"undefined"){SuppressFlash();}this.tmrIFrameGone=3DsetInterv=
al(this.IFrameGone,400);}function IFrameGone(){var =
_28=3DANSW.isFirefoxExtension?window._content.document:document;var =
ac=3DANSW.doc?ANSW.doc.getElementById("answertipClose"):_28.getElementByI=
d("answertipClose");if(ac){if(ac.innerHTML=3D=3D"close"){ac.innerHTML=3D"=
";ANSW.b5.Hide();}else{if(ac.innerHTML=3D=3D"options"){var =
_2a=3D"";if(ANSW.b5.answersURL.indexOf(":8080")!=3D-1){_2a=3D"/answers";}=
ac.innerHTML=3D"";if(ANSW.isFirefoxExtension){window.openDialog("chrome:/=
/answers/content/options.xul","1-Click Answers =
Options","centerscreen,chrome,modal");}else{window.open(ANSW.b5.answersUR=
L+_2a+"/main/transoptform?gwp=3D11");}}}}}this.IFrameGone=3DIFrameGone;fu=
nction =
isVisible(){if(this.balloonDIV){if(this.balloonDIV.style.visibility=3D=3D=
"hidden"){return false;}else{return true;}}else{return false;}}function =
Hide(){clearInterval(this.tmrIFrameGone);if(!this.balloonDIV||this.balloo=
nDIV.style.visibility=3D=3D"hidden"){return;}this.balloonDIV.style.visibi=
lity=3D"hidden";var =
_2b=3DANSW.isFirefoxExtension?window._content.document:document;var =
_2c=3DANSW.doc?ANSW.doc.getElementById("Answertip"):_2b.getElementById("A=
nswertip");if(_2c){_2c.style.overflow=3D"hidden";}var =
_2d=3DANSW.doc?ANSW.doc.getElementById("AnswertipMore"):_2b.getElementByI=
d("AnswertipMore");if(_2d=3D=3Dnull||typeof =
(_2d)=3D=3D"undefined"){_2d=3DANSW.doc?ANSW.doc.getElementById("Answertip=
CBSMore"):_2b.getElementById("AnswertipCBSMore");}if(_2d){_2d.style.visib=
ility=3D"hidden";}if(ANSW.b5.ifrlayer){ANSW.b5.ifrlayer.hide(this.balloon=
DIV);}if(ANSW.b5.isFirefox&&typeof =
deconcept!=3D"undefined"){RestoreFlash();}}function =
ObjectOverlap(_2e,_2f){var _30=3DgetLeft(_2e);var _31=3DgetTop(_2e);var =
_32=3DgetLeft(_2e)+_2e.offsetWidth;var =
_33=3DgetTop(_2e)+_2e.offsetHeight;var _34=3DgetLeft(_2f);var =
_35=3DgetTop(_2f);var _36=3DgetLeft(_2f)+_2f.offsetWidth;var =
_37=3DgetTop(_2f)+_2f.offsetHeight;var _38=3D(_30<_36&&_34<_32);var =
_39=3D(_31<_37&&_35<_33);return (_38&&_39);}function =
getObjLeft(_3a){return =
(_3a.offsetParent?(getObjLeft(_3a.offsetParent)+_3a.offsetLeft):_3a.offse=
tLeft);}function getObjTop(_3b){return =
(_3b.offsetParent?(getObjTop(_3b.offsetParent)+_3b.offsetTop):_3b.offsetT=
op);}function getLeft(_3c){return (getObjLeft(_3c));}function =
getTop(_3d){return (getObjTop(_3d));}function InsideObject(obj,x,y){var =
_41=3DgetTop(obj);var _42=3DgetLeft(obj);var =
_43=3D_42+obj.offsetWidth;var _44=3D_41+obj.offsetHeight;var =
_45=3D(x<_43+4&&x>_42-1);var _46=3D(y<(_44+10)&&y>(_41-10));return =
(_45&&_46);}function ScrollOffsets(_47){var _48=3Dnew Array(0,0);try{var =
_49=3D_47.parentElement;while(_49!=3Dnull){if(_49.scrollTop!=3Dnull){_48[=
0]+=3DparseInt(_49.scrollTop,10);_48[1]+=3DparseInt(_49.scrollLeft,10);}_=
49=3D_49.parentElement;}}catch(ex){}return _48;}function =
addHook(_4a,dir,_4c){var _4d;var _4e;var top;var _50;var =
_51;switch(dir){case =
"SE":_4d=3D"hook-bottomL";_4e=3D"25px";_50=3D"29px";_51=3D"70px";if(ANSW.=
b5.isIE6){top=3D"-18px";}else{top=3D"-15px";}break;case =
"SW":_4d=3D"hook-bottomR";_4e=3D"400px";_50=3D"29px";_51=3D"70px";if(ANSW=
.b5.isIE6){top=3D"-19px";}else{top=3D"-16px";}break;case =
"NE":_4d=3D"hook-topL";_4e=3D"25px";_50=3D"24px";_51=3D"67px";top=3D"10px=
";break;case =
"NW":_4d=3D"hook-topR";_4e=3D"400px";_50=3D"24px";_51=3D"67px";top=3D"10p=
x";break;default:alert("bad direction");}var ret=3D"<DIV =
id=3D\"AnswerTipHook\" style=3D\"background-image: =
url("+_4a+"/main/images/"+_4d+".gif);width:"+_51+";height:"+_50+";margin-=
left:"+_4e+";position:relative;top:"+top+";\"></DIV>";return =
ret;}function addCBSBalloon(_53,_54,_55){var _56=3D"<div =
class=3D\"popupFrameA\" id=3D\"popup_FrameA\"><div =
class=3D\"popupHeader\" id=3D\"popup_header\"><div =
class=3D\"popupHeaderInner\" id=3D\"AnswersHandle0\" =
style=3D\"cursor:move;\" handlefor=3D\"AnswersBalloon\"><div =
class=3D\"popupHeader1\" =
style=3D\"margin-right:-10px;margin-left:-6px;";_56+=3DANSW.Trigger.isSaf=
ari3?"width:247px;\">":"\">";_56+=3D"<div =
style=3D\"float:left;margin-top:5px;color:white;\" >Powered =
by</div><div><a style=3D\"float:left;\" href=3D\""+_53+"\"><img =
id=3D\"AnswersLogoCBSImage\" style=3D\"position:relative;\" =
border=3D\"0\" align=3D\"top\" alt=3D\"Visit Answers.com\" =
src=3D\""+_53+"/main/images/answers_cbs_logo.gif\"/></a></div><a =
style=3D\"float:left;cursor:hand;cursor:pointer;\" onclick=3D\"var ac =
=3D document.getElementById('answertipClose'); if (ac) =
ac.innerHTML=3D'close'; else window.status=3D'close'; return true;\" =
><img id=3D\"AnswersCBSCloseImage\" border=3D\"0\" align=3D\"top\" =
alt=3D\"Close\" src=3D\""+_53+"/main/images/close.gif\"/></a></div><span =
class=3D\"AnswersHeader2\" >Instant Information </span></div><div =
id=3D\"Answers_frame\" =
class=3D\"AnswersContentFrame1\">"+_54+"</div><div =
class=3D\"AnswersFooter\" =
id=3D\"popup_footer\">"+_55+"</div></div></div>";return _56;}function =
addAdsBalloon(_57,_58,_59,ads){var =
_5b=3D"";if(ads>0){_5b=3DANSW.isFirefoxExtension?"?initiator=3DFFANS":"?i=
nitiator=3DWANS";}else{_5b=3D"?initiator=3DWALLST";}var _5c=3D"<div =
class=3D\"AnswersHeaderW\" id=3D\"AnswersHeader_W\"><div =
class=3D\"AnswersHeaderInner\" id=3D\"AnswersHandle0\" =
style=3D\"cursor:move;\" handlefor=3D\"AnswersBalloon\"><div =
class=3D\"AnswersHeader1\"><a style=3D\"float:right;\" onclick=3D\"var =
ac =3D document.getElementById('answertipClose');if (ac) =
ac.innerHTML=3D'close'; else window.status=3D'close'; return true;\" =
><img id=3D\"AnswersCloseImage\" =
style=3D\"margin-right:10px;position:relative;cursor:hand;cursor:pointer;=
\" border=3D\"0\" align=3D\"top\" alt=3D\"Close\" =
src=3D\""+_57+"/main/images/close.gif\"/></a><a id=3D\"AnswertipMore\" =
target=3D\"AnswersQueryWindow\" onclick=3D\"var ac =3D =
document.getElementById('answertipClose'); if (ac) =
ac.innerHTML=3D'close'; else window.status=3D'close';return true;\" =
style=3D\"float:right;text-decoration:none;visibility:hidden;padding-righ=
t:10px;margin-top:9px;cursor:hand;\" ><span =
class=3D\"AnswersHeader3\">&nbsp;Read more =
>>&nbsp&nbsp</span></a>";_5c+=3DANSW.isFirefoxExtension?"<a =
id=3D\"AnswertipOptions\" onclick=3D\"var ac =3D =
document.getElementById('answertipClose'); if (ac) =
ac.innerHTML=3D'options'; else window.status=3D'options';return true;\" =
style=3D\"float:right;text-decoration:none;padding-right:10px;margin-top:=
9px;cursor: hand;cursor:pointer;\" ><span =
class=3D\"AnswersHeader3\">&nbsp;Options =
>>&nbsp&nbsp</span></a>":"";_5c+=3D(ads>0)?"</div>":"<a =
href=3D\"http://www.wallst.net\"><img id=3D\"WALLSTLogoImage\" =
border=3D\"0\" align=3D\"top\" alt=3D\"Visit WallSt.net\" =
src=3D\""+_57+"/main/images/answers_wallst.gif\"/></a></div>";_5c+=3D"<di=
v><a style=3D\"float:left;\" href=3D\""+_57+_5b+"\"><img =
id=3D\"AnswersLogoImage\" style=3D\";\" border=3D\"0\" align=3D\"top\" =
alt=3D\"Visit Answers.com\" =
src=3D\""+_57+"/main/images/answers-logo.gif\"/></a></div></div><div =
id=3D\"Answers_frame\" class=3D\"AnswersContentFrame\">"+_58+"</div><div =
class=3D\"AnswersFooter\" =
id=3D\"Answers_footer\">"+_59+"</div></div>";return _5c;}function =
addAnswersBalloon(_5d,_5e,_5f){var =
_60=3DANSW.isFirefoxExtension?"?initiator=3DFFANS":"?initiator=3DWANS";va=
r _61=3D"<div class=3D\"AnswersHeader\" ><div =
class=3D\"AnswersHeaderInner\" id=3D\"AnswersHandle0\" =
style=3D\"cursor:move;\" handlefor=3D\"AnswersBalloon\"><div =
class=3D\"AnswersHeader1\"><a style=3D\"float:right;\" onclick=3D\"var =
ac =3D document.getElementById('answertipClose'); if (ac) =
ac.innerHTML=3D'close'; else window.status=3D'close'; return true;\" =
><img id=3D\"AnswersCloseImage\" =
style=3D\"margin-right:10px;position:relative;cursor:hand;cursor:pointer;=
\" border=3D\"0\" align=3D\"top\" alt=3D\"Close\" =
src=3D\""+_5d+"/main/images/close.gif\"/></a><a id=3D\"AnswertipMore\" =
target=3D\"AnswersQueryWindow\" onclick=3D\"var ac =3D =
document.getElementById('answertipClose'); if (ac) =
ac.innerHTML=3D'close'; else window.status=3D'close';return true;\" =
style=3D\"float:right;text-decoration:none;visibility:hidden;padding-righ=
t:10px;margin-top:9px;cursor:hand;cursor:pointer;\" ><span =
class=3D\"AnswersHeader3\">&nbsp;Read more =
>>&nbsp&nbsp</span></a>";_61+=3DANSW.isFirefoxExtension?"<a =
id=3D\"AnswertipOptions\" onclick=3D\"var ac =3D =
document.getElementById('answertipClose'); if (ac) =
ac.innerHTML=3D'options'; else window.status=3D'options';return true;\" =
style=3D\"float:right;text-decoration:none;padding-right:10px;margin-top:=
9px;cursor:hand;cursor:pointer;\" ><span =
class=3D\"AnswersHeader3\">&nbsp;Options =
>>&nbsp&nbsp</span></a>":"";_61+=3D"</div><div><a =
style=3D\"float:left;cursor:hand;cursor:pointer;\" =
href=3D\""+_5d+_60+"\"><img id=3D\"AnswersLogoImage\" style=3D\";\" =
border=3D\"0\" align=3D\"top\" alt=3D\"Visit Answers.com\" =
src=3D\""+_5d+"/main/images/answers-logo.gif\"/></a></div></div><div =
id=3D\"Answers_frame\" class=3D\"AnswersContentFrame\">"+_5e+"</div><div =
class=3D\"AnswersFooter\" =
id=3D\"Answers_footer\">"+_5f+"</div></div>";return _61;}function =
addAnswersBalloon2(_62,_63,_64){var =
_65=3DANSW.isFirefoxExtension?"?initiator=3DFFANS":"?initiator=3DWANS";va=
r _66=3D"<div class=3D\"AnswersHeaderB\" ><div =
class=3D\"AnswersHeaderInner\" id=3D\"AnswersHandle0\" =
style=3D\"cursor:move;\" handlefor=3D\"AnswersBalloon\"><div =
class=3D\"AnswersHeader1\"><a style=3D\"float:right;\" onclick=3D\"var =
ac =3D document.getElementById('answertipClose'); if (ac) =
ac.innerHTML=3D'close'; else window.status=3D'close'; return true;\" =
><img id=3D\"AnswersCloseImage\" =
style=3D\"margin-right:10px;position:relative;cursor:hand;cursor:pointer;=
\" border=3D\"0\" align=3D\"top\" alt=3D\"Close\" =
src=3D\""+_62+"/main/images/close.gif\"/></a><a id=3D\"AnswertipMore\" =
target=3D\"AnswersQueryWindow\" onclick=3D\"var ac =3D =
document.getElementById('answertipClose'); if (ac) =
ac.innerHTML=3D'close'; else window.status=3D'close';return true;\" =
style=3D\"float:right;text-decoration:none;visibility:hidden;padding-righ=
t:10px;margin-top:9px;cursor:hand;cursor:pointer;\" ><span =
class=3D\"AnswersHeader3\">&nbsp;Read more =
>>&nbsp&nbsp</span></a>";_66+=3DANSW.isFirefoxExtension?"<a =
id=3D\"AnswertipOptions\" onclick=3D\"var ac =3D =
document.getElementById('answertipClose'); if (ac) =
ac.innerHTML=3D'options'; else window.status=3D'options';return true;\" =
style=3D\"float:right;text-decoration:none;padding-right:10px;margin-top:=
9px;cursor:hand;cursor:pointer;\" ><span =
class=3D\"AnswersHeader3\">&nbsp;Options =
>>&nbsp&nbsp</span></a>":"";_66+=3D"</div><div><a =
style=3D\"float:left;cursor:hand;cursor:pointer;\" =
href=3D\""+_62+_65+"\"><img id=3D\"AnswersLogoImage\" style=3D\";\" =
border=3D\"0\" align=3D\"top\" alt=3D\"Visit Answers.com\" =
src=3D\""+_62+"/main/images/answers-logo.gif\"/></a></div></div><div =
id=3D\"Answers_frame\" class=3D\"AnswersContentFrame\">"+_63+"</div><div =
class=3D\"AnswersFooter\" =
id=3D\"Answers_footer\">"+_64+"</div></div>";return _66;}function =
ieFix(){if(document.all){var =
_67=3Ddocument.getElementById("popup_header");if(_67){_67.style["margin"]=
=3D"0px 8px 18px =
8px";_67.style["width"]=3D"465px";_67.style["padding-top"]=3D"8px";}var =
_68=3Ddocument.getElementById("popup_footer");if(_68){_68.style["margin-r=
ight"]=3D"4px";}var =
_69=3Ddocument.getElementById("popup_FrameA");if(_69){_69.style["backgrou=
nd-image"]=3D"url(http://wwwimage.cbsnews.com/common/images/v2/popup_shad=
ow.jpg)";_69.style["background-repeat"]=3D"no-repeat";}}}function =
addBalloon(_6a,dir,_6c,_6d,_6e,ads,_70){if(_6c=3D=3D"cbs"){return =
addCBSBalloon(_6a,_6d,_6e);}else{var _71;switch(_6c){case =
"wallst":_71=3DaddAdsBalloon(_6a,_6d,_6e,0);break;default:_71=3DaddAnswer=
sBalloon(_6a,_6d,_6e);break;}if(ads>0){_71=3DaddAdsBalloon(_6a,_6d,_6e,ad=
s);}if(_70=3D=3D100){_71=3DaddAdsBalloon(_6a,_6d,_6e,2);}if(ANSW.aic=3D=3D=
1){_71=3DaddAnswersBalloon2(_6a,_6d,_6e);}return =
(dir.indexOf("N")>-1?addHook(_6a,dir,_6c):"")+_71+(dir.indexOf("S")>-1?ad=
dHook(_6a,dir,_6c):"");}}function =
balloonInfrastructure(_72,_73,_74,_75,_76,_77,ads){var ret;var =
_7a=3D"";var url=3D"";var =
_7c=3D"";if(this.answersURL.indexOf(":8080")!=3D-1){_7a=3D"/answers";}if(=
typeof (_77)=3D=3D"undefined"||!_77){_77=3D"";}var =
_7d=3D"22px";if(typeof _76!=3D"undefined"&&_76!=3Dnull){switch(_76){case =
5:_7d=3D"62px";break;case =
100:_7d=3D"62px";break;default:_7d=3D"22px";break;}}if(typeof =
_77!=3D"undefined"){switch(_77){case "cbs":_7d=3D"62px";break;case =
"wallst":_7d=3D"60px";if(ANSW.b5.isIE){_7d+=3D";margin-top:-1px;";}break;=
default:break;}}if(ads=3D=3D0){url=3Dthis.answersURL+_7a+"/main/tip2.jsp?=
s=3D"+encodeURIComponent(_75)+"&wt=3D1&nafid=3D"+_76+"&cobrand=3D"+_77;}e=
lse{_7d=3D"61px";}_7c=3D"<TR cellpadding=3D0 cellspacing=3D0><TD><DIV =
style=3D\"width:471px;height:"+_7d+";float:left;\"><iframe =
id=3D\"AnswersAds\" scrolling=3D\"no\" FRAMEBORDER=3D\"0\" =
allowTransparency=3D\"true\" =
style=3D\"padding:0px;border:0px;width:100%;height:"+_7d+"\" =
src=3D\""+url+"\"></iframe></DIV>\t</TD></TR>";return =
addBalloon(_73,_74,_77,_72,_7c,ads,_76);}this.balloonInfrastructure=3Dbal=
loonInfrastructure;function balloonBody(_7e,_7f,_80){var =
_81=3D"";if(typeof (_80)=3D=3D"undefined"||!_80){_80=3D"";}var =
ret=3D"<table id=3D\"Balloontable2"+_80+"\" class=3D\"donotmoveme\" =
style=3D\"width:480px;float:left;\"><TR><TD> <DIV id=3D\"Answertip\" =
style=3D\"overflow-x:hidden;overflow:auto;height:";ret+=3D(_80=3D=3D"cbs"=
)?"228px;background-color:white;":"235px;";ret+=3DANSW.aic=3D=3D1?"width:=
485px;\">":"width:473px;\">";ret+=3D_81+"</DIV> <DIV =
id=3D\"answertipClose\" style=3D\"display:none;\" =
></DIV></TD></TR></table>";return ret;}function =
SendQuery(obj,_84,_85){var top=3DgetTop(obj);var _87=3DgetLeft(obj);var =
_88=3Dobj.innerHTML.replace(/<br>/gi," =
").replace(/<[^>]+>/g,"");this.FireQuery(_88,top,_87,-1,null,_84,_85);ret=
urn false;}this.SendQuery=3DSendQuery;function Personalize(){var =
_89=3D"";if(ANSW.isFirefoxExtension){_89+=3D"?o=3D0&gwp=3D22";}else{_89+=3D=
"?o=3D2&gwp=3D21";}_89+=3D"&per=3D1";var =
_8a=3DANSW.isFirefoxExtension?window._content.document:document;var =
_8b=3D_8a.getElementById("answertipScript");var =
_8c=3D(document.charset?("&encoding=3D"+document.charset):"");_89+=3D_8c;=
if(_8b&&_8b.src){_89+=3D"&prevurl=3D";_89+=3DencodeURIComponent(_8b.src);=
}loadScript("answertip.jsp","answertipScript",null,_89);}this.Personalize=
=3DPersonalize;function =
FireQuery(_8d,top,_8f,fw,_91,_92,_93,fc){if(ANSW.b5.isIE&&document.readyS=
tate!=3D"complete"){return;}var _95=3DencodeURIComponent(_8d);if(typeof =
_92!=3D"undefined"&&_92!=3Dnull&&_92!=3D""){_92=3DencodeURIComponent(_92)=
;}var =
_96=3DgetFocusWord(_95,fw);if(ANSW.isFirefoxExtension){ANSW.Balloon.proto=
type.answersURL=3D"http://"+server;ANSW.Balloon.prototype.JSBalloonPath=3D=
ANSW.Balloon.prototype.answersURL;}this.Show({title:"",top:top,left:_8f,q=
uery:_96,nafid:ANSW.nafid,cobrand:ANSW.cobrand,nohook:_93,parent:_91,ads:=
ANSW.ads});if(isBoolPrefEnabled("javascript.enabled")){ensureScriptIsLoad=
ed(_95,fw,_91,ANSW.nafid,_92,ANSW.cobrand,fc);}else{var =
_97=3DANSW.isFirefoxExtension?window._content.document:document;if(typeof=
 =
answertipCss=3D=3D"undefined"||answertipCss=3D=3Dnull){loadCSS(_97);}var =
_98=3D_97.getElementById("Answertip");_98.innerHTML=3D"You need to =
enable Javascript to have this feature working. Hit ESC to close the =
AnswerTip.";}}this.FireQuery=3DFireQuery;String.prototype.trim=3Dfunction=
(){return this.replace(/^\s+/g,"").replace(/\s+$/g,"");};function =
getFocusWord(_99,fw){if(fw<0){return _99;}else{var _9b=3D_99.trim();var =
_9c=3D_9b.split(" ");if((_9c.length-1)>=3Dfw){return =
_9c[fw];}else{return _99;}}}function =
isBoolPrefEnabled(_9d){if(ANSW.isFirefoxExtension){var =
_9e=3DComponents.classes["@mozilla.org/preferences-service;1"].getService=
(Components.interfaces.nsIPrefService);return =
_9e.getBoolPref(_9d);}else{return true;}}function =
ensureScriptIsLoaded(_9f,fw,_a1,_a2,_a3,_a4,fc){var =
_a6=3DANSW.isFirefoxExtension?window._content.document:document;if(_a1){_=
a6=3D_a1.parentNode;_a6=3D_a6.parentNode;ANSW.doc=3D_a6;}if(ANSW.doc){_a6=
=3DANSW.doc;}var _a7=3D_a6.getElementById("answertipScript");var =
_a8=3D_a6.getElementById("answertipCSS");var =
_a9=3D_a6.getElementById("answertipSound");var =
_aa=3D_a6.getElementsByTagName("head")[0];var _ab;var _ac;var =
_ad=3D"";var =
src=3D"";_ab=3D_a6.createElement("script");_ab.id=3D"answertipScript";_ab=
.type=3D"text/javascript";if(ANSW.isFirefoxExtension){ANSW.b5.answersURL=3D=
"http://"+server;}if(ANSW.b5.answersURL.indexOf(":8080")!=3D-1){_ad=3D"/a=
nswers";}src=3DANSW.b5.answersURL+_ad+"/main/answertip.jsp?";if(typeof =
_a3!=3D"undefined"&&_a3!=3Dnull&&_a3!=3D""){src+=3D"tname=3D"+_a3;}else{s=
rc+=3D"s=3D"+_9f;}src+=3D"&fw=3D"+fw;if(fc){src+=3D"&fc=3D"+fc;}if(ANSW.i=
sFirefoxExtension){src+=3D"&o=3D0&gwp=3D22";}else{src+=3D"&o=3D2&gwp=3D21=
";}var =
_af=3D(document.charset?("&encoding=3D"+document.charset):"");src+=3D_af;=
if(typeof =
_a2!=3D"undefined"&&_a2!=3Dnull&&_a2!=3D""){src+=3D"&nafid=3D"+_a2;}if(ty=
peof =
_a4!=3D"undefined"&&_a4!=3Dnull&&_a4!=3D""){src+=3D"&cobrand=3D"+_a4;}if(=
!ANSW.isFirefoxExtension){src+=3D"&ats=3D"+encodeURIComponent(location.hr=
ef);}if(typeof =
ANSW.version!=3D"undefined"&&ANSW.version!=3D""){src+=3D"&ver=3D"+ANSW.ve=
rsion;}if(typeof =
ANSW.ads!=3D"undefined"&&ANSW.ads!=3D0){src+=3D"&as=3D"+ANSW.ads;}if(type=
of =
ANSW.adw!=3D"undefined"&&ANSW.adw!=3D0){src+=3D"&adw=3D"+ANSW.adw;}if(typ=
eof =
ANSW.adh!=3D"undefined"&&ANSW.adh!=3D0){src+=3D"&adh=3D"+ANSW.adh;}if(typ=
eof =
ANSW.aic!=3D"undefined"&&ANSW.aic!=3D0){src+=3D"&aic=3D"+ANSW.aic;}if(typ=
eof =
ANSW.afid!=3D"undefined"&&ANSW.afid!=3D""){src+=3D"&afid=3D"+ANSW.afid;}v=
ar =
ord=3DMath.random()*10000000000000000;src+=3D"&ord=3D"+ord;_ab.src=3Dsrc;=
if(_a7){if(ANSW.b5.isIE){_a7.src=3Dsrc;}else{_aa.replaceChild(_ab,_a7);}}=
else{_aa.appendChild(_ab);}var =
_b1=3D_a6.getElementById("sPron");if(!_b1){_b1=3D_a6.getElementById("sSpa=
n");}if(!_b1){_b1=3D_a6.getElementsByTagName("bgsound")[0];}if(!(_a9)&&!(=
_b1)){_ac=3D_a6.createElement("script");_ac.id=3D"answertipSound";_ac.typ=
e=3D"text/javascript";_ac.src=3DANSW.b5.JSBalloonPath+"/main/lookup/sound=
.js";_aa.appendChild(_ac);}if(typeof =
_a8=3D=3D"undefined"||_a8=3D=3Dnull){loadCSS(_a6);}if(typeof =
_a4!=3D"undefined"&&_a4!=3Dnull&&_a4!=3D""){var =
_b2=3D_a6.getElementById("answertipCSS"+_a4);if(typeof =
(_b2)=3D=3D"undefined"||_b2=3D=3Dnull){if(_a4=3D=3D"cbs"){loadSingleCSS("=
http://www.cbsnews.com/common/css/v2_main.css","answertipCSS"+_a4,_a6);}e=
lse{loadSingleCSS("web_tip_"+_a4+".css","answertipCSS"+_a4,_a6);}}}}funct=
ion =
loadCSS(_b3){loadSingleCSS("web_tip.css","answertipCSS",_b3);}this.loadCS=
S=3DloadCSS;function loadSingleCSS(_b4,id,_b6){var =
_b7=3D_b6.getElementsByTagName("head")[0];var css;var =
_b9=3D"";css=3D_b6.createElement("link");css.type=3D"text/css";css.rel=3D=
"stylesheet";if(_b4.indexOf("http://")=3D=3D0){css.href=3D_b4;}else{css.h=
ref=3DANSW.b5.JSBalloonPath+"/main/lookup/"+_b4;}css.id=3Did;_b7.appendCh=
ild(css);}this.loadSingleCSS=3DloadSingleCSS;function =
loadSingleScript(_ba,id,_bc){var =
_bd=3D_bc.getElementsByTagName("head")[0];var =
_be=3D_bc.getElementById("answersautotip");var =
_bf;_bf=3D_bc.createElement("script");_bf.type=3D"text/javascript";if(_ba=
.indexOf("http://")=3D=3D0){_bf.src=3D_ba;}else{_bf.src=3DANSW.b5.JSBallo=
onPath+"/main/lookup/"+_ba;}_bf.id=3Did;if(typeof =
answersautotip=3D=3D"undefined"||answersautotip=3D=3Dnull){_bd.appendChil=
d(_bf);}}this.loadSingleScript=3DloadSingleScript;function =
loadScript(_c0,id,_c2,_c3){if(!_c2){_c2=3DANSW.b5.JSBalloonPath;if(_c2.in=
dexOf(":8080")!=3D-1){_c2+=3D"/answers";}}var =
_c4=3DANSW.isFirefoxExtension?window._content.document:document;var =
_c5=3D_c4.getElementById(id);var =
_c6=3D_c4.getElementsByTagName("head")[0];var =
_c7;_c7=3D_c4.createElement("script");_c7.type=3D"text/javascript";_c7.sr=
c=3D_c2+"/main/"+_c0;var =
_c8=3D(document.charset?("encoding=3D"+document.charset):"");if(_c8!=3D""=
){if(_c3&&typeof =
_c3!=3D"undefined"){_c3+=3D"&"+_c8;}else{_c3=3D"?"+_c8;}}_c7.src+=3D_c3;_=
c7.id=3Did;if(_c5){if(ANSW.b5.isIE){_c5.src=3D_c7.src;}else{_c6.replaceCh=
ild(_c7,_c5);}}else{_c6.appendChild(_c7);}return =
false;}this.loadScript=3DloadScript;function =
checkall(_c9,_ca){if(_ca){for(i=3D0;i<_c9.length;i++){_c9[i].checked=3Dtr=
ue;}}else{for(i=3D0;i<_c9.length;i++){_c9[i].checked=3Dfalse;}}}this.chec=
kall=3Dcheckall;function getPrefs(_cb){var =
_cc=3D"&per=3D2";for(i=3D0,n=3D_cb.tabOrder.length;i<n;i++){if(_cb.tabOrd=
er[i].checked){_cc+=3D"&tabOrder=3D"+_cb.tabOrder[i].value;break;}}for(i=3D=
0,n=3D_cb.tlang.length;i<n;i++){if(_cb.tlang[i].checked){_cc+=3D"&tlang=3D=
"+_cb.tlang[i].value;}}return _cc;}this.getPrefs=3DgetPrefs;function =
onkeyup(evt){if(!evt&&window.event){evt=3Dwindow.event;}var =
_ce=3Devt.keyCode;if(_ce=3D=3D27){ANSW.b5.Hide();}if(ANSW.isFirefoxExtens=
ion){if((_ce=3D=3D18||_ce=3D=3D17)&&leftbuttondown=3D=3Dtrue){leftbuttond=
own=3Dfalse;evt.stopPropagation();evt.preventDefault();evt.preventBubble(=
);return =
false;}}if(ANSW.b5.isIE||ANSW.b5.isOpera){if(ANSW.b5.oldkeyup!=3Dnull){re=
turn ANSW.b5.oldkeyup(evt);}}}this.onkeyup=3Donkeyup;function =
mdown(evt){if(ANSW.b5.isVisible()){if(!evt&&window.event){evt=3Dwindow.ev=
ent;}var =
el=3DANSW.b5.isFirefox?evt.target:evt.srcElement;ANSW.b5.checkDown(evt,el=
);}}this.mdown=3Dmdown;function checkDown(evt,_d2){var =
el=3Dthis.getReal(_d2);if(ANSW.b5.isIE){var =
_d4=3D"";_d4=3Ddocument.body.componentFromPoint(evt.clientX,evt.clientY);=
if(_d4.indexOf("scrollbar")=3D=3D0){this.moveme_onmousedown(evt,el);}else=
{if(el.id=3D=3Dnull){this.Hide();}else{if(el.id=3D=3D"AnswersBalloon"||el=
.id=3D=3D"AnswersSponsor"){this.moveme_onmousedown(evt,el);}else{if(el.ge=
tAttribute("handlefor")=3D=3Dnull||el.getAttribute("handlefor")=3D=3D""){=
this.Hide();}else{this.moveme_onmousedown(evt,el);}}}}}else{var =
_d5=3DANSW.isFirefoxExtension?window._content.document:document;if(_d5.do=
cumentElement.scrollWidth<evt.pageX||_d5.documentElement.scrollHeight<evt=
.pageY){this.moveme_onmousedown(evt,el);}else{if(typeof =
el=3D=3D"undefined"||el.id=3D=3Dnull||el.id=3D=3D""){this.Hide();}else{if=
(el.id=3D=3D"AnswersBalloon"||el.id=3D=3D"AnswersSponsor"){this.moveme_on=
mousedown(evt,el);}else{if(el.getAttribute("handlefor")=3D=3Dnull||el.get=
Attribute("handlefor")=3D=3D""){this.Hide();}else{this.moveme_onmousedown=
(evt,el);}}}}}}this.checkDown=3DcheckDown;var _d6=3Dnull;var tx;var =
ty;var =
ie5=3Ddocument.all!=3Dnull&&document.getElementsByTagName!=3Dnull;this.ie=
5=3Die5;function =
getReal(el){temp=3Del;while((temp!=3Dnull)&&(temp.tagName!=3D"BODY")&&(te=
mp.tagName!=3D"window")){if(temp.id=3D=3Dnull||temp.id.indexOf("AnswersHa=
ndle")=3D=3D0||temp.id.indexOf("AnswersBalloon")=3D=3D0||temp.id.indexOf(=
"AnswersSponsor")=3D=3D0){el=3Dtemp;break;}if(ANSW.b5.isIE){temp=3Dtemp.p=
arentElement;}else{temp=3Dtemp.parentNode;}}return =
el;}this.getReal=3DgetReal;function moveme_onmousedown(evt,el){var =
_dd=3DANSW.isFirefoxExtension?window._content.document:document;var =
tmp=3Dnull;if(el){tmp=3Del.getAttribute("handlefor");}if(tmp=3D=3Dnull||t=
mp=3D=3D""){_d6=3Dnull;return =
true;}else{_d6=3DANSW.doc?ANSW.doc.getElementById(tmp):getElementById(tmp=
);}ty=3DANSW.b5.isIE?evt.clientY-this.getTopPos(_d6):evt.pageY-getTopPos(=
_d6);tx=3DANSW.b5.isIE?evt.clientX-this.getLeftPos(_d6):evt.pageX-getLeft=
Pos(_d6);if(ANSW.b5.isIE){ANSW.b5.ifrlayer.move(_d6);evt.returnValue=3Dfa=
lse;evt.cancelBubble=3Dtrue;}else{ANSW.b5.ifrlayer.move(_d6);evt.stopProp=
agation();evt.preventDefault();evt.preventBubble();return =
false;}}this.moveme_onmousedown=3Dmoveme_onmousedown;function =
moveme_onmouseup(){if(_d6){_d6=3Dnull;}}this.moveme_onmouseup=3Dmoveme_on=
mouseup;function moveme_onmousemove(evt){if(typeof =
_d6!=3D"undefined"&&_d6!=3Dnull){if(!evt&&window.event){evt=3Dwindow.even=
t;}if(ANSW.b5.isIE){if(evt.clientX>=3D0&&evt.clientY>=3D0){_d6.style.left=
=3D(evt.clientX-tx)+"px";_d6.style.top=3D(evt.clientY-ty)+"px";ANSW.b5.if=
rlayer.move(_d6);}evt.returnValue=3Dfalse;evt.cancelBubble=3Dtrue;}else{i=
f(evt.pageX>=3D0&&evt.pageY>=3D0){_d6.style.left=3D(evt.pageX-tx)+"px";_d=
6.style.top=3D(evt.pageY-ty)+"px";ANSW.b5.ifrlayer.move(_d6);}evt.stopPro=
pagation();evt.preventDefault();evt.preventBubble();return =
false;}}}this.moveme_onmousemove=3Dmoveme_onmousemove;function =
getLeftPos(el){if(this.ie5&&!this.isOpera){if(el.currentStyle.left=3D=3D"=
auto"){return 0;}else{return =
parseInt(el.currentStyle.left);}}else{return =
this.isIE?el.style.pixelLeft:parseInt(el.style.left);}}this.getLeftPos=3D=
getLeftPos;function =
getTopPos(el){if(this.ie5&&!this.isOpera){if(el.currentStyle.top=3D=3D"au=
to"){return 0;}else{return parseInt(el.currentStyle.top);}}else{return =
this.isIE?el.style.pixelTop:parseInt(el.style.top);}}this.getTopPos=3Dget=
TopPos;function =
onRightClick(evt){if(!evt&&window.event){evt=3Dwindow.event;}var =
el=3DANSW.b5.isFirefox?(ANSW.isFirefoxExtension?evt.originalTarget:evt.ta=
rget):evt.srcElement;var =
_e4=3DANSW.b5.getReal(el);if(_e4&&_e4.id=3D=3D"AnswersBalloon"){if(ANSW.b=
5.isFirefox){evt.preventDefault();evt.stopPropagation();evt.preventBubble=
();return =
false;}else{evt.returnValue=3Dfalse;evt.cancelBubble=3Dtrue;return =
false;}}return true;}this.onRightClick=3DonRightClick;var =
_e5=3D{make:function(obj){if(!obj){return;}obj=3D(typeof =
(obj)=3D=3D"string")?ANSW.doc.getElementById(obj):obj;if(!obj){return;}if=
(ANSW.doc.getElementById&&!obj.iframelayer){if(obj.parentNode&&!obj.ifram=
elayer){var =
ifr=3Dobj.parentNode.insertBefore(ANSW.doc.createElement("iframe"),obj);}=
ifr.style.zIndex=3DparseInt(obj.style.zIndex)-1;ifr.src=3D"javascript:;";=
ifr.id=3D"AnswersBalloonIframe";with(ifr.style){filter=3D"mask()";positio=
n=3D"absolute";}obj.iframelayer=3Difr;}if(obj.iframelayer){with(obj.ifram=
elayer.style){width=3Dobj.offsetWidth+"px";height=3Dobj.offsetHeight+"px"=
;visibility=3D"visible";backgroundColor=3D"transparent";border=3D"none";}=
_e5.move(obj);}},replace:function(obj){if(!obj){return;}obj=3Dtypeof =
(obj)=3D=3D"string"?ANSW.doc.getElementById(obj):obj;if(!obj){return;}if(=
!obj.iframelayer){obj.iframelayer=3DANSW.doc.getElementById("AnswersBallo=
onIframe");}if(obj.iframelayer){with(obj.iframelayer.style){visibility=3D=
"visible";}}_e5.move(obj);},hide:function(obj){if(!obj){return;}obj=3Dtyp=
eof =
(obj)=3D=3D"string"?ANSW.doc.getElementById(obj):obj;if(!obj){return;}if(=
obj.iframelayer){obj.iframelayer.style.visibility=3D"hidden";}},move:func=
tion(obj){if(!obj){return;}obj=3Dtypeof =
(obj)=3D=3D"string"?ANSW.doc.getElementById(obj):obj;if(!obj){return;}if(=
obj&&obj.iframelayer){with(obj.iframelayer.style){if(obj.direction&&obj.d=
irection.indexOf("N")>-1){top=3Dobj.offsetTop+24+"px";}else{top=3Dobj.off=
setTop+"px";}left=3Dobj.offsetLeft+"px";}}},resize:function(obj){if(!obj)=
{return;}obj=3Dtypeof =
(obj)=3D=3D"string"?ANSW.doc.getElementById(obj):obj;if(!obj){return;}if(=
obj&&obj.iframelayer){with(obj.iframelayer.style){width=3Dobj.offsetWidth=
+"px";height=3DANSW.doc.getElementById("popup_header")||ANSW.doc.getEleme=
ntById("AnswersHeader_W")?"345px":"306px";marginLeft=3D"10px";marginTop=3D=
ANSW.doc.getElementById("popup_header")?"0px":"10px";}}}};this.ifrlayer=3D=
_e5;function SuppressFlash(){var =
_ec=3Ddocument.getElementsByTagName("EMBED");for(var =
i=3D0;i<_ec.length;i++){if(_ec[i].balloonMember!=3D"true"){if(_ec[i].styl=
e.visibility=3D=3D"visible"||_ec[i].style.visibility=3D=3D""){if(ObjectOv=
erlap(ANSW.b5.balloonDIV,_ec[i])){_ec[i].baloonHidden=3Dtrue;_ec[i].style=
.visibility=3D"hidden";}}}}_ec=3Ddocument.getElementsByTagName("OBJECT");=
for(var =
i=3D0;i<_ec.length;i++){if(_ec[i].balloonMember!=3D"true"){if(_ec[i].styl=
e.visibility=3D=3D"visible"||_ec[i].style.visibility=3D=3D""){if(ObjectOv=
erlap(ANSW.b5.balloonDIV,_ec[i])){_ec[i].baloonHidden=3Dtrue;_ec[i].style=
.visibility=3D"hidden";}}}}}this.SuppressFlash=3DSuppressFlash;function =
RestoreFlash(){var _ee=3Ddocument.getElementsByTagName("EMBED");for(var =
i=3D0;i<_ee.length;i++){if(_ee[i].baloonHidden){_ee[i].style.visibility=3D=
"visible";_ee[i].baloonHidden=3Dfalse;}}_ee=3Ddocument.getElementsByTagNa=
me("OBJECT");for(var =
i=3D0;i<_ee.length;i++){if(_ee[i].baloonHidden){_ee[i].style.visibility=3D=
"visible";_ee[i].baloonHidden=3Dfalse;}}}this.RestoreFlash=3DRestoreFlash=
;};function answ_b5_onmousemove(){return =
ANSW.b5.moveme_onmousemove();}if(!ANSW.b5){ANSW.isFirefoxExtension=3Dfals=
e;ANSW.b5=3Dnew =
ANSW.Balloon();ANSW.b5.initBalloon({width:490});ANSW.version=3D"1.0";var =
mydoc=3DANSW.isFirefoxExtension?window._content.document:document;var =
scripts=3DANSW.doc?ANSW.doc.getElementsByTagName("script"):mydoc.getEleme=
ntsByTagName("script");for(var =
index=3D0;index<scripts.length;index++){var =
src=3Dscripts.item(index).src;if(src&&(src.indexOf("webtip")>-1||src.inde=
xOf("web_answertip.js")>-1||src.indexOf("answ_utils"))>-1){break;}}var =
myScript=3Dscripts[index];var queryString=3D"";if(typeof =
myScript!=3D"undefined"&&myScript!=3Dnull){queryString=3DmyScript.src.rep=
lace(/^[^\?]+\??/,"").replace(/%27/g,"'");if(queryString){eval(queryStrin=
g);}}else{ANSW.answersURL=3D"http://www.answers.com";}if(!ANSW.getJSHost)=
{ANSW.getJSHost=3Dfunction(){var _f0=3Dnull;var =
_f1=3Ddocument.getElementsByTagName("script");var =
re=3D/\s*(https?:\/\/[^\/]*)\//;var =
src=3D_f1[_f1.length-1].src;if(src.match(re)){_f0=3DRegExp.$1;}else{_f0=3D=
location.protocol+"//"+location.host;}if(_f0=3D=3Dnull||_f0=3D=3D"http://=
site.answers.com"){_f0=3D"http://www.answers.com";}else{if(_f0=3D=3D"http=
://site1.answers.com"){_f0=3D"http://stage1.answers.com";}}return =
_f0;};}if(ANSW.answersURL){ANSW.Balloon.prototype.answersURL=3DANSW.Ballo=
on.prototype.JSBalloonPath=3DANSW.answersURL;if(ANSW.JSBalloonPath){ANSW.=
Balloon.prototype.JSBalloonPath=3DANSW.JSBalloonPath;}}else{if(!ANSW.Ball=
oon.prototype.answersURL){var =
host=3DANSW.getJSHost();ANSW.Balloon.prototype.answersURL=3Dhost;if(host=3D=
=3D"http://www.answers.com"){ANSW.Balloon.prototype.JSBalloonPath=3D"http=
://site.answers.com";}else{ANSW.Balloon.prototype.JSBalloonPath=3Dhost;}}=
}ANSW.Balloon.prototype.isOpera=3D(navigator.userAgent.toLowerCase().inde=
xOf("opera")!=3D-1);ANSW.Balloon.prototype.isFirefox=3D(navigator.userAge=
nt.toLowerCase().indexOf("firefox")!=3D-1);ANSW.Balloon.prototype.isIE=3D=
(navigator.userAgent.toLowerCase().indexOf("msie")!=3D-1);ANSW.Balloon.pr=
ototype.isIE6=3DANSW.Balloon.prototype.isIE&&navigator.appVersion&&naviga=
tor.appVersion.indexOf("MSIE =
6")!=3D-1;ANSW.Balloon.prototype.balloonDIV=3D0;ANSW.b5.oldkeyup=3Ddocume=
nt.onkeyup;if(ANSW.b5.isIE||ANSW.b5.isOpera){document.onkeyup=3DANSW.b5.o=
nkeyup;document.onmousedown=3DANSW.b5.mdown;document.onmousemove=3Dansw_b=
5_onmousemove;document.onmouseup=3DANSW.b5.moveme_onmouseup;document.onco=
ntextmenu=3DANSW.b5.onRightClick;}else{document.addEventListener("keyup",=
ANSW.b5.onkeyup,true);document.addEventListener("mousemove",ANSW.b5.movem=
e_onmousemove,false);if(ANSW.isFirefoxExtension=3D=3Dfalse){document.addE=
ventListener("mousedown",ANSW.b5.mdown,false);document.addEventListener("=
mouseup",ANSW.b5.moveme_onmouseup,false);document.addEventListener("conte=
xtmenu",ANSW.b5.onRightClick,true);}}ANSW.doc=3DANSW.isFirefoxExtension?w=
indow._content.document:document;ANSW.b5.loadCSS(ANSW.doc);}if(typeof =
ANSW=3D=3D"undefined"){ANSW=3Dnew =
Object();}if(!ANSW.Trigger){ANSW.Trigger=3Dnew =
Object();}ANSW.Trigger.alert1=3Dfunction(msg){};ANSW.Trigger.alert2=3Dfun=
ction(msg){};ANSW.Trigger.Init=3Dfunction(_f6,_f7){ANSW.Trigger.trigger=3D=
_f6;ANSW.Trigger.triggerModKey=3D_f7;};if(!ANSW.Trigger.altClickSupported=
){ANSW.Trigger.isOpera=3Dnavigator.userAgent.toLowerCase().indexOf("opera=
")!=3D-1;ANSW.Trigger.isSafari=3Dnavigator.userAgent.toLowerCase().indexO=
f("khtml")!=3D-1;ANSW.Trigger.isSafari3=3DANSW.Trigger.isSafari&&navigato=
r.userAgent.toLowerCase().search("version/[3456789]")!=3D-1;ANSW.Trigger.=
moz=3D(document.all=3D=3Dnull&&document.getElementById!=3Dnull&&document.=
layers=3D=3Dnull);ANSW.Trigger.isIE=3D(document.all?true:false)&&!ANSW.Tr=
igger.isOpera;if(typeof =
(ANSW.b5)!=3D"undefined"){ANSW.Trigger.path=3DANSW.Balloon.prototype.answ=
ersURL;if(ANSW.Trigger.path.indexOf(":8080")!=3D-1){ANSW.Trigger.path+=3D=
"/answers";}if(typeof =
(ANSW.AnswerTipEnabled)=3D=3D"undefined"){ANSW.b5.loadScript("answertip.j=
sp","answertipEnabledCheck",ANSW.Trigger.path,"?getate=3D1");}}if(!ANSW.T=
rigger.trigger){ANSW.Trigger.Init("dblclick","");}if(ANSW.Trigger.moz){do=
cument.addEventListener(ANSW.Trigger.trigger,function(e){window.event=3De=
;},true);}ANSW.rangeOffset=3D-1;ANSW.rangeParent=3Dnull;}function =
ActivateAnswers(evt){if(evt&&!ANSW.Trigger.isIE){event=3Devt;}var =
_fa=3DANSW.Trigger.isIE?event.srcElement.getAttribute("netmask_term"):eve=
nt.target.getAttribute("netmask_term");if((ANSW.AnswerTipEnabled=3D=3Dfal=
se&&(_fa=3D=3Dnull||_fa=3D=3D"")||(ANSW.Trigger.isSafari&&!ANSW.Trigger.i=
sSafari3))){return =
false;}if(ANSW.Trigger.triggerModKey=3D=3D"altKey"){triggerModCond=3Deven=
t.altKey;}else{triggerModCond=3Dtrue;}var _fb=3D-1;var =
fc=3Dnull;if(ANSW.Trigger.isIE&&window.event&&triggerModCond&&document&&d=
ocument.body){ANSW.Trigger.alert1("in IE =
handler");if(document.readyState!=3D"complete"||event.srcElement.getAttri=
bute("noAnswerTip")||ANSW.Trigger.trigger=3D=3D"dblclick"&&ANSW.Trigger.t=
riggerModKey=3D=3D""&&(evt=3D=3Dnull&&(event.srcElement.tagName=3D=3D"A"|=
|event.srcElement.tagName=3D=3D"INPUT"||event.srcElement.tagName=3D=3D"TE=
XTAREA"||event.srcElement.tagName=3D=3D"SELECT"))){return false;}var =
_fd=3D3;var =
rng;rng=3Ddocument.selection.createRange();rng.collapse();rng.expand("wor=
d");if(rng.text.length=3D=3D0||document.selection.type=3D=3D"None"){if(ev=
ent&&event.srcElement&&event.srcElement.isTextEdit){rng=3Devent.srcElemen=
t.createTextRange();}else{if(event.srcElement.tagName=3D=3D"IMG"){return =
false;}var =
el=3Devent.srcElement.parentTextEdit;rng=3Del.createTextRange();}rng.move=
ToPoint(event.clientX,event.clientY);}var =
_100=3Drng.duplicate();rng.expand("word");var str=3D"";var _102;var =
_103;var _104=3D0;var =
_105=3D0;while(!_102&&rng.text&&_105<=3D_fd){if(-1!=3Drng.text.search(/\S=
/)){str=3Drng.text+str;if(rng.text.search(/\s/)>-1||_fb=3D=3D-1){_105++;_=
fb++;}}else{str=3D" =
"+str;_fb++;}if(rng.move("word",-1)){rng.expand("word");}else{_102=3Dtrue=
;}}rng=3D_100;if(rng.move("word",1)){rng.expand("word");}else{_103=3Dtrue=
;}while(!_103&&rng.text&&_104<_fd){if(-1!=3Drng.text.search(/\S/)){if(rng=
.text.charAt(0)!=3D" "){str+=3D" =
";}str+=3Drng.text;_104++;}else{str+=3D" =
";_104++;}if(rng.move("word",1)){rng.expand("word");}else{_103=3Dtrue;}}i=
f(str.length>0&&_fb>=3D0){ANSW.Trigger.LaunchWBQuery(str,_fb,null);}event=
.returnValue=3Dfalse;return =
false;}else{if(triggerModCond){if(event.rangeParent){var =
_106=3Dtrue;try{_106=3D(event.rangeParent.nodeType=3D=3Ddocument.TEXT_NOD=
E);}catch(e){}if(!_106){return;}if(event.target.getAttribute("noAnswerTip=
")||ANSW.Trigger.trigger=3D=3D"dblclick"&&ANSW.Trigger.triggerModKey=3D=3D=
""&&(evt=3D=3Dnull&&(event.target.tagName=3D=3D"A"||event.target.tagName=3D=
=3D"INPUT"||event.target.tagName=3D=3D"TEXTAREA"))){return false;}var =
_107=3Devent.rangeOffset;if(ANSW.rangeOffset>-1){_107=3DANSW.rangeOffset;=
}var =
_108=3Ddocument.createRange();if(ANSW.rangeParent=3D=3Dnull){_108.selectN=
ode(event.rangeParent);}else{_108.selectNode(ANSW.rangeParent);ANSW.range=
Parent=3Dnull;}var _109=3D_108.toString();var =
_10a=3D_109.split(/\s+/);fc=3D_107;var fw=3D_10a.shift();var =
_10c=3Dfw;while(fc>fw.length){fc-=3Dfw.length+1;fw=3D_10a.shift();}if(fc>=
0){fc--;}var _10d=3Devt.rangeParent;var =
_10e=3D_10d.parentNode.parentNode?_10d.parentNode.parentNode:_10d.parentN=
ode;if(_fa!=3Dnull&&_fa!=3D""&&_10e.parentNode){_10e=3D_10e.parentNode.pa=
rentNode?_10e.parentNode.parentNode:_10e.parentNode;}var =
_10f=3Ddocument.createTreeWalker(_10e,NodeFilter.SHOW_TEXT,null,false);_1=
0f.currentNode=3D_10d;var _110=3D_10f.currentNode.nodeValue;var =
_111=3D"";var =
_112=3D_110.split(/\s+/);while(_10f.previousSibling()&&_112.length<5){_11=
1=3D_10f.currentNode.nodeValue+_111;_112=3D_111.split(/\s+/);}_107+=3D_11=
1.length;_111+=3D_110;_112=3D_111.split(/\s+/);var =
_113=3D_112.pop();if(_fa!=3Dnull&&_fa!=3D""&&_113!=3D_10c){if(_113.length=
>_10c.length){fc+=3D_113.length+1-_10c.length;}else{_112.push(_113);}}els=
e{_112.push(_113);}var =
_114=3D_112.length;_10f.currentNode=3D_10d;while(_10f.nextSibling()&&_112=
.length<_114+5){_111+=3D_10f.currentNode.nodeValue;_112=3D_111.split(/\s+=
/);}_109=3D_111;_108.detach();var =
_115=3D_109.search(/\S/);_109=3D_109.substr(_115).replace(/(\r|\n)/," =
");_107-=3D_115;var _116=3D_109.substring(0,_107);var =
_117=3D_109.substring(_107,_109.length);var _118=3D_116.split(/\s+/);var =
_119=3D_117.split(/\s+/);if(_118.length>4){_118=3D_118.slice(_118.length-=
4);}if(_119.length>5){_119=3D_119.slice(0,4);}_109=3D_118.join(" =
")+_119.join(" =
");_fb=3D_118.length-1;if(_109.length>0&&_fb>=3D0){ANSW.Trigger.LaunchWBQ=
uery(_109,_fb,null,fc);}}else{if(ANSW.Trigger.isSafari3){if(_fa!=3Dnull&&=
_fa!=3D""){ANSW.b5.SendQuery(event.target);}else{var =
_11a=3Ddocument.createRange();ANSW.fw=3D-1;_11a.selectNodeContents(event.=
target);var _11b=3Dwindow.getSelection();var =
_11c=3DexpandNodeToWords(_11a,_11b,2);if(_11b&&_11b!=3D""&&_11c!=3D""){AN=
SW.Trigger.LaunchWBQuery(_11c,ANSW.fw,null);}}}else{if(_fa!=3Dnull&&_fa!=3D=
""){ANSW.b5.SendQuery(event.target);}}}event.preventDefault();event.stopP=
ropagation();}}}ANSW.Trigger.LaunchWBQuery=3Dfunction(s,fw,_11f,fc){if(ty=
peof =
fw=3D=3D"undefined"){fw=3D-1;}if(!ANSW.answersURL){ANSW.answersURL=3DANSW=
.getJSHost();}if(typeof s=3D=3D"undefined"||s=3D=3Dnull){if(typeof =
_11f!=3D"undefined"&&_11f!=3Dnull&&typeof =
_11f.s!=3D"undefined"){s=3D_11f.s.value;}else{s=3D"";}}if(s!=3D""){if(typ=
eof ANSW!=3D"undefined"&&typeof =
(ANSW.b5)!=3D"undefined"){if(document.documentElement&&document.documentE=
lement.scrollTop){theTop=3Ddocument.documentElement.scrollTop;}else{if(do=
cument.body){theTop=3Ddocument.body.scrollTop;}}if(document.documentEleme=
nt&&document.documentElement.scrollLeft){theX=3Ddocument.documentElement.=
scrollLeft;}else{if(document.body){theX=3Ddocument.body.scrollLeft;}}y=3D=
theTop+event.clientY;x=3DtheX=3Devent.clientX;if(ANSW.b5.isVisible()){var=
 =
el;if(!ANSW.Trigger.moz){el=3Devent.srcElement;}else{el=3Devent.target;}v=
ar =
elem=3DANSW.b5.getReal(el);if(elem.id=3D=3D"AnswersBalloon"){x=3D-1;y=3D-=
1;}}ANSW.b5.FireQuery(s,y,x,fw,null,null,null,fc);}else{var =
sep=3DANSW.answersURL.indexOf("?")<0?"?":"&";var =
_124=3DANSW.answersURL+"/"+s+sep+"fw=3D"+fw;if(fc!=3Dnull){_124+=3Dsep+"f=
c=3D"+fc;}var =
_125=3Dwindow.open(_124,"GuruWnd","height=3D450,width=3D800,location,menu=
bar,toolbar,status,resizable,scrollbars");if(_125){_125.focus();}else{if(=
ANSW.Trigger.openBlockedPopupsInline){location.href=3D_124;}}}}else{retur=
n =
false;}};ANSW.Trigger.noSelect=3Dfunction(){if(event&&event.ctrlKey&&even=
t.altKey){return =
false;}};if(document.addEventListener){document.addEventListener(ANSW.Tri=
gger.trigger,ActivateAnswers,true);if(ANSW.Trigger.trigger=3D=3D"dblclick=
"){document.addEventListener("click",onOneClick,true);}}else{if(document.=
all){if(ANSW.Trigger.trigger=3D=3D"dblclick"){document.ondblclick=3DActiv=
ateAnswers;}else{if(ANSW.Trigger.trigger=3D=3D"click"){document.onclick=3D=
ActivateAnswers;document.onselectstart=3DANSW.Trigger.noSelect;}}}}functi=
on =
onOneClick(_126){ANSW.rangeOffset=3D_126.rangeOffset;ANSW.rangeParent=3D_=
126.rangeParent;}ANSW.Trigger.altClickSupported=3Dfunction(){if(ANSW.Trig=
ger.isOpera||(ANSW.Trigger.isSafari&&!ANSW.Trigger.isSafari3)||screen.wid=
th<=3D490){return false;}return =
true;};ANSW.Trigger.numTries1=3D0;ANSW.name;ANSW.Trigger.showLogoIfEnable=
d=3Dfunction(name){if(ANSW.Trigger.altClickSupported()){if(typeof =
name!=3D"undefined"&&name!=3Dnull&&name.length>0){ANSW.name=3Dname;}if(!A=
NSW.AnswerTipEnabled&&ANSW.Trigger.numTries1++<20){setTimeout(ANSW.Trigge=
r.showLogoIfEnabled,500);}if(ANSW.AnswerTipEnabled){ANSW.Trigger.showLogo=
();}}};ANSW.Trigger.numTries2=3D0;ANSW.Trigger.showLogo=3Dfunction(){var =
logo=3Ddocument.getElementById("answerTipEnabled");if(!logo&&ANSW.Trigger=
.numTries2++<20){setTimeout(ANSW.Trigger.showLogo,500);}else{if(logo){if(=
ANSW.name!=3Dnull&&ANSW.name.length>0){ANSW.logo=3DANSW.logo.replace(/dou=
ble-click_answertip.gif/,ANSW.name);}logo.innerHTML=3DANSW.logo;}}};Strin=
g.prototype.trim=3Dfunction(){return =
this.replace(/^\s+/g,"").replace(/\s+$/g,"");};function =
expandNodeToWords(node,_12a,num){var _12c=3D/\W+/;var i=3D0;var =
ifw=3D-1;var stop=3D0;if(node.length=3D=3D0){return =
"";}node=3Dnode.toString().trim();var =
_130=3Dnode.split(_12c);for(i=3D0;i<_130.length;i++){if(_130[i]=3D=3D_12a=
){ifw=3Di;break;}}if(ifw>=3D0){node=3D"";if(ifw>=3Dnum){i=3Difw-num;ANSW.=
fw=3Dnum;}else{i=3D0;ANSW.fw=3Difw;}if(ifw+num<=3D_130.length-1){stop=3Di=
fw+num;}else{stop=3D_130.length-1;}for(i;i<=3Dstop;i++){if(i!=3Dstop){nod=
e+=3D_130[i]+" ";}else{node+=3D_130[i];}}return node;}else{return =
"";}}function InjectAnswersScript(set){var =
_132=3Ddocument.createElement("script");var =
_133=3Ddocument.getElementById("answertipScript");var =
_134=3D"";if(set){_134=3D"http://site.answers.com/main/js/web_answertip.j=
s?ANSW.answersURL=3D'http://www.answers.com';ANSW.nafid=3D25;ANSW.afid=3D=
'TBarALink';";_132.setAttribute("src",_134);_132.setAttribute("type","tex=
t/javascript");_132.setAttribute("id","answertipScript");var =
_135=3Ddocument.getElementsByTagName("head")[0];if(_133){ANSW.AnswerTipEn=
abled=3Dtrue;}else{_135.appendChild(_132);}}else{if(typeof =
ANSW=3D=3D"undefined"){ANSW=3Dnew =
Object();}ANSW.AnswerTipEnabled=3Dfalse;}}function =
AnswerTipsOff(){InjectAnswersScript(false);}
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://pagead2.googlesyndication.com/pagead/show_ads.js

(function(){=0A=
var =
h=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"},m=3D{google_ad_format:"format",google_ad_output:"output",google_=
ad_callback:"callback",google_ad_override:"google_ad_override",google_ad_=
slot:"slotname",google_analytics_uacct:"ga_wpids",google_correlator:"corr=
elator",google_cpa_choice:"cpa_choice",google_image_size:"image_size",goo=
gle_last_modified_time:"lmt",google_max_num_ads:"num_ads",google_max_radl=
ink_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 n(b){return h[b]||m[b]||null};function =
q(){}q.prototype.e=3Dfunction(){};q.prototype.m=3Dfunction(){};q.prototyp=
e.P=3Dfunction(){};var s=3Dnull;function =
v(b,a,c,e){this._value_=3Db;this._expires_=3Da;this._path_=3Dc;this._doma=
in_=3De;if(this._path_=3D=3Dnull)this._path_=3D"/";if(this._domain_=3D=3D=
null)this._domain_=3Ddocument.domain}v.prototype.toString=3Dfunction(){re=
turn"[GA_GoogleCookieInfo: value=3D"+this._value_+", =
expires=3D"+this._expires_+", path=3D"+this._path_+"]"};function =
y(){this.b=3Dthis.M();this.p=3Dfalse;if(!this.b){this.p=3Dthis.C();if(!th=
is.p)s.m("Browser does not allow cookies")}}=0A=
y.prototype.n=3D"__gads=3D";y.prototype.f=3D"GoogleAdServingTest=3D";y.pr=
ototype.G=3Dfunction(){return =
this.b};y.prototype.setCookieInfo=3Dfunction(b){this.a=3Db._cookies_[0];i=
f(this.a!=3Dnull){this.b=3Dthis.a._value_;this.O()}};y.prototype.F=3Dfunc=
tion(b){var a=3D(new Date).valueOf(),c=3Dnew Date;c.setTime(a+b);return =
c};y.BASE_COOKIE_URL=3D"http://partner.googleadservices.com/gampad/cookie=
.js?callback=3D_GA_googleCookieHelper.setCookieInfo";y.prototype.D=3Dfunc=
tion(b){if(this.b!=3Dnull||!this.p){s.e("Skipping fetch cookie call");=0A=
return}var =
a=3Ddocument.domain,c=3Dy.BASE_COOKIE_URL+"&client=3D"+z(b)+"&domain=3D"+=
z(a);s.e("Issuing a fetch cookie call with <a =
href=3D'"+c+"'>"+c+"</a>");document.write("<script src =3D =
'"+c+"'><\/script>")};y.prototype.C=3Dfunction(){document.cookie=3Dthis.f=
+"Good";var b=3Dthis.w(this.f),a=3Db=3D=3D"Good";if(a){var =
c=3Dthis.F(-1);document.cookie=3Dthis.f+"; =
expires=3D"+c.toGMTString()}return a};y.prototype.M=3Dfunction(){var =
b=3Dthis.w(this.n);if(b!=3Dnull)s.e("Read first party cookie: "+b);else =
s.m("No first party cookie found");=0A=
return b};y.prototype.w=3Dfunction(b){var =
a=3Ddocument.cookie,c=3Da.indexOf(b),e=3Dnull;if(c!=3D-1){var =
d=3Dc+b.length,f=3Da.indexOf(";",d);if(f=3D=3D-1)f=3Da.length;e=3Da.subst=
ring(d,f)}return =
e};y.prototype.O=3Dfunction(){if(this.a=3D=3Dnull)s.m("Skipping cookie =
creation: no cookie info");else if(this.b=3D=3Dnull)s.P("Skipping cookie =
creation: no cookie value");else{var b=3Dnew =
Date;b.setTime(1000*this.a._expires_);var =
a=3Dthis.a._domain_,c=3Dthis.n+this.b+"; expires=3D"+b.toGMTString()+"; =
path=3D"+this.a._path_+"; domain=3D."+a;document.cookie=3D=0A=
c;s.e("Written cookie: "+c)}};var C=3Ddocument;function D(){var =
b=3DC.cookie,a=3DMath.round((new =
Date).getTime()/1000),c=3Db.indexOf("__utma=3D")>-1,e=3Db.indexOf("__utmb=
=3D")>-1,d=3Db.indexOf("__utmc=3D")>-1,f,g=3D{};if(c){f=3Db.split("__utma=
=3D")[1].split(";")[0].split(".");g.sid=3D(!e||!d?a:f[4])+"";g.vid=3Df[1]=
+"."+f[2];g.from_cookie=3Dtrue}else{g.sid=3Dwindow&&window.gaGlobal&&wind=
ow.gaGlobal.sid?window.gaGlobal.sid:a+"";g.vid=3Dwindow&&window.gaGlobal&=
&window.gaGlobal.vid?window.gaGlobal.vid:Math.round(Math.random()*2147483=
647)+"."+a;g.from_cookie=3Dfalse}g.hid=3D=0A=
window&&window.gaGlobal&&window.gaGlobal.hid?window.gaGlobal.hid:Math.rou=
nd(Math.random()*2147483647);window.gaGlobal=3Dg;return =
g};(function(){function b(){}b.prototype.s=3Dfunction(e){var =
d=3De.indexOf("#")+1;return =
d?e.substr(d):""};b.prototype.u=3Dfunction(e){return/[&<>\"]/.test(e)?e.r=
eplace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\=
"/g,"&quot;"):e};b.prototype.d=3Dfunction(e){var d=3D"<iframe";for(var f =
in e)d+=3D" "+f+'=3D"'+this.u(e[f])+'"';return =
d+"></iframe>"};b.prototype.t=3Dfunction(e,d){try{return =
e.frames[d]}catch(f){return null}};b.prototype.i=3Dfunction(e){var =
d=3Ddocument.createElement("iframe");for(var f in e)d.setAttribute(f,=0A=
e[f]);return d};b.prototype.o=3Dfunction(e,d){var =
f=3Dthis;setTimeout(function(){document.body.appendChild(f.i({id:e,name:e=
,src:d,width:0,height:0,frameBorder:0}))},0)};b.prototype.B=3Dfunction(e,=
d){var =
f=3Dthis;document.write(f.d({id:e,name:e,src:d,width:0,height:0,frameBord=
er:0}))};b.prototype.k=3Dfunction(e,d){var =
f=3D[],g=3De.length,k=3D0;while(k<g){var =
j=3De.substr(k,d),l=3Dj.length;if(k+l<g)for(var =
i=3D1;i<3;++i)if(j.charAt(l-i)=3D=3D"%")j=3Dj.substr(0,l-=3Di);f.push(j);=
k+=3Dl}return f};b.prototype.c=3Dfunction(e,d,f){if(!window[e]){var g=3D=0A=
window[e]=3Dnew d;for(var =
k=3D0;k<f.length;++k)g[f[k][0]]=3Df[k][1]}};var =
a=3Db.prototype,c=3D[["getHash",a.s],["htmlEscape",a.u],["makeIframeTag",=
a.d],["getIframe",a.t],["makeIframeNode",a.i],["appendHiddenIframe",a.o],=
["writeHiddenIframe",a.B],["splitURIComponent",a.k],["exportSingleton",a.=
c],["MAX_URL_LENGTH",4095],["IDI_DEFAULT_POLLING_INTERVAL",1000]];b.proto=
type.c("IDICommon",b,c)})();(function(){function b(d,f){for(var g in =
f)d[g]=3Df[g]}function a(){var =
d=3Dthis;d.H=3Dwindow.location.href.replace(/([^:\/])\/.*$/,"$1/robots.tx=
t");d.I=3D"";d.r=3D{};d.g=3D{};d.j=3D{};d.J=3D{};d.v=3D{}}a.prototype.L=3D=
function(d,f,g){var k;if(typeof g=3D=3D"object")k=3Dg.moduleRelayUrl;var =
j=3Dthis,l=3Dj.g[d];if(isNaN(l))throw new Error("Invalid module =
id");else{var i=3Dtypeof =
k=3D=3D"string"?k:j.h(j.J[d]),o=3DencodeURIComponent(f)+"$",r=3DIDICommon=
.MAX_URL_LENGTH-1-i.length,t=3DIDICommon.k(o,r),w=3Dt.length;for(var =
p=3D0;p<w;++p)IDICommon.o(d+=0A=
"_"+(l+p),i+"#"+t[p]);j.g[d]+=3Dw}};a.prototype.z=3Dfunction(d,f,g){var =
k=3Dthis;k.l(d);k.v[d]=3Dwindow.setInterval(function(){k.K(d,f)},typeof =
g=3D=3D"object"&&g.pollingInterval||IDICommon.IDI_DEFAULT_POLLING_INTERVA=
L)};a.prototype.l=3Dfunction(d){var =
f=3Dthis;window.clearInterval(f.v[d]);f.v[d]=3D0};a.prototype.N=3Dfunctio=
n(d){this.H=3Dd};a.prototype.A=3Dfunction(d){this.I=3Dd};a.prototype.h=3D=
function(d){return =
this.I||d.replace(/([^:\/]\/).*$/,"$1ig/idi_relay")};a.prototype.K=3Dfunc=
tion(d,f){var g=3Dthis,k=3Dwindow.frames[d];=0A=
if(k){var =
j;while(j=3DIDICommon.t(k,d+"_"+g.r[d])){try{if(j.location.href=3D=3D"abo=
ut:blank")break}catch(l){break}g.j[d]+=3DIDICommon.s(j.location.href);++g=
.r[d]}var =
i=3Dg.j[d].split("$"),o=3Di.length-1;if(o>0){g.j[d]=3Di[o];for(var =
r=3D0;r<o;++r)f(decodeURIComponent(i[r]),d)}}};a.prototype.q=3Dfunction(d=
,f,g,k,j){var =
l=3Dthis,i=3D{frameBorder:0,scrolling:"no"},o,r,t,w,p;if(typeof =
j=3D=3D"object"){o=3Dj.iframeAttrs;r=3Dj.callback;t=3Dj.userPrefs;w=3Dj.p=
ollingInterval;p=3Dj.parentDivId}if(typeof =
o=3D=3D"object")b(i,o);b(i,{id:f,name:f,src:d,=0A=
width:g,height:k});l.r[f]=3D0;l.g[f]=3D0;l.j[f]=3D"";l.J[f]=3Dd;var =
x=3D[];if(typeof t=3D=3D"object")for(var u in =
t)x.push(encodeURIComponent(u)+"=3D"+encodeURIComponent(t[u]));if(typeof =
r=3D=3D"function"){x.push("idi_hr=3D"+encodeURIComponent(l.H));l.z(f,r,j)=
}if(x.length){var =
A=3Dx.join("&");if(i.src.length+1+A.length>IDICommon.MAX_URL_LENGTH){A+=3D=
"$";var =
L=3Dl.h(d),W=3DIDICommon.MAX_URL_LENGTH-1-L.length,M=3DIDICommon.k(A,W),N=
=3DM.length;for(var u=3D0;u<N;++u){var =
H=3Df+"_"+u,O=3DL+"#"+M[u];if(p){var =
B=3Ddocument.getElementById(p);B.innerHTML=3D=0A=
B.innerHTML+l.i({id:H,name:H,src:O,width:0,height:0,frameBorder:0})}else =
IDICommon.B(H,O)}l.g[f]+=3DN;A=3D""}i.src+=3D"#"+A}if(p){var =
B=3Ddocument.getElementById(p);B.innerHTML=3DB.innerHTML+IDICommon.d(i)}e=
lse document.write(IDICommon.d(i))};var =
c=3Da.prototype,e=3D[["setHostRelayUrl",c.N],["setModuleRelayUrl",c.A],["=
getModuleRelayUrl",c.h],["createModule",c.q],["postMessageToModule",c.L],=
["registerListener",c.z],["unregisterListener",c.l]];IDICommon.c("IDIHost=
",a,e)})();function E(b){return b!=3Dnull?'"'+b+'"':'""'}function =
z(b){if(typeof encodeURIComponent=3D=3D"function")return =
encodeURIComponent(b);else return escape(b)}function =
F(b,a){if(b&&a)window.google_ad_url+=3D"&"+b+"=3D"+a}function G(b){var =
a=3Dwindow,c=3Dn(b),e=3Da[b];F(c,e)}function =
I(b,a){if(a)F(b,z(a))}function J(b){var =
a=3Dwindow,c=3Dn(b),e=3Da[b];I(c,e)}function K(b,a){var =
c=3Dwindow,e=3Dn(b),d=3Dc[b];if(e&&d&&typeof =
d=3D=3D"object")d=3Dd[a%d.length];F(e,d)}function P(b,a){var =
c=3Db.screen,e=3Dnavigator.javaEnabled(),d=3D-a.getTimezoneOffset();=0A=
if(c){F("u_h",c.height);F("u_w",c.width);F("u_ah",c.availHeight);F("u_aw"=
,c.availWidth);F("u_cd",c.colorDepth)}F("u_tz",d);F("u_his",history.lengt=
h);F("u_java",e);if(navigator.plugins)F("u_nplug",navigator.plugins.lengt=
h);if(navigator.mimeTypes)F("u_nmime",navigator.mimeTypes.length)}functio=
n =
Q(b){if(!b.google_enable_first_party_cookie)return;if(s=3D=3Dnull)s=3Dnew=
 q;if(b._GA_googleCookieHelper=3D=3Dnull)b._GA_googleCookieHelper=3Dnew =
y;if(!b._google_cookie_fetched){b._google_cookie_fetched=3Dtrue;b._GA_goo=
gleCookieHelper.D(R(b.google_ad_client))}}=0A=
function =
R(b){if(b){b=3Db.toLowerCase();if(b.substring(0,3)!=3D"ca-")b=3D"ca-"+b}r=
eturn b}function =
S(b){if(b){b=3Db.toLowerCase();if(b.substring(0,9)!=3D"dist-aff-")b=3D"di=
st-aff-"+b}return b}function T(b,a){var =
c=3Ddocument.getElementById(b);c.style.height=3Da+"px"}function =
aa(b,a,c){window.clearTimeout(c);var =
e=3D/^google_resize_flash_ad_idi\((\d+)\)/,d=3Db.match(e);if(d)T(a,d[1])}=
function =
ba(b,a,c,e){c=3Dc.substring(0,2000);c=3Dc.replace(/%\w?$/,"");if((b.googl=
e_ad_output=3D=3D"js"||b.google_ad_output=3D=3D"json_html")&&(b.google_ad=
_request_done||=0A=
b.google_radlink_request_done))a.write('<script =
language=3D"JavaScript1.1" src=3D'+E(c)+"><\/script>");else =
if(b.google_ad_output=3D=3D"html"){if(b.name!=3D"google_ads_frame"){if(e!=
=3Dnull)a.write('<div =
id=3D"'+e+'">');if(ca(b.google_ad_output,b.google_ad_client)){IDIHost.A("=
http://pagead2.googlesyndication.com/pagead/idi_relay.html");var =
d=3D0;if(b.google_num_0ad_slots)d+=3Db.google_num_0ad_slots;if(b.google_n=
um_ad_slots)d+=3Db.google_num_ad_slots;if(b.google_num_sdo_slots)d+=3Db.g=
oogle_num_sdo_slots;var f=3D"google_inline_div"+=0A=
d,g=3D"<div id=3D"+E(f)+' =
style=3D"position:relative;width:'+b.google_ad_width+'px"></div><div =
style=3D"position:relative;width:'+b.google_ad_width+"px;height:"+b.googl=
e_ad_height+'px;z-index:-1"></div>';a.write(g);var =
k=3D"google_frame"+d,j=3Db.setTimeout(function(){IDIHost.l(k)},5000);IDIH=
ost.q(c,k,b.google_ad_width,b.google_ad_height,{callback:function(l,i){aa=
(l,i,j)},pollingInterval:500,iframeAttrs:{style:"position: =
absolute;left:0px",marginWidth:"0",marginHeight:"0",vspace:"0",hspace:"0"=
,allowTransparency:"true"},=0A=
parentDivId:f})}else{a.write('<iframe name=3D"google_ads_frame" =
width=3D'+E(b.google_ad_width)+" height=3D"+E(b.google_ad_height)+" =
frameborder=3D"+E(b.google_ad_frameborder)+" src=3D"+E(c)+' =
marginwidth=3D"0" marginheight=3D"0" vspace=3D"0" hspace=3D"0" =
allowtransparency=3D"true" =
scrolling=3D"no">');a.write("</iframe>")}if(e!=3Dnull)a.write("</div>")}}=
else if(b.google_ad_output=3D=3D"textlink")a.write('<script =
language=3D"JavaScript1.1" src=3D'+E(c)+"><\/script>")}function =
da(b){for(var a in h)b[a]=3Dnull;for(var a in =
m){if(a=3D=3D"google_correlator")continue;=0A=
b[a]=3Dnull}}function ea(b){if(b.google_ad_format)return =
b.google_ad_format.indexOf("_0ads")>0;return =
b.google_ad_output!=3D"html"&&b.google_num_radlinks>0}function =
U(b){return b&&b.indexOf("_sdo")!=3D-1}function fa(){var =
b=3Dnull,a=3Dwindow,c=3Ddocument,e=3Dnew =
Date,d=3De.getTime(),f=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(R(a.google_ad_client));a.google_ad_region=3D=
"_google_cpa_region_";G("google_cpa_choice");=0A=
if(typeof c.characterSet!=3D"undefined")I("oe",c.characterSet);else =
if(typeof c.charset!=3D"undefined")I("oe",c.charset)}else =
if(U(f)){a.google_ad_url=3D"http://pagead2.googlesyndication.com/pagead/s=
do?";a.google_ad_url+=3D"client=3D"+escape(S(a.google_ad_client))}else{a.=
google_ad_url=3D"http://pagead2.googlesyndication.com/pagead/ads?";a.goog=
le_ad_url+=3D"client=3D"+escape(R(a.google_ad_client))}G("google_ad_host"=
);var =
g=3Da.google_num_slots_by_client,k=3Da.google_num_slots_by_channel,j=3Da.=
google_prev_ad_formats_by_region,=0A=
l=3Da.google_prev_ad_slotnames_by_region;if(a.google_ad_region=3D=3Db&&a.=
google_ad_section!=3Db)a.google_ad_region=3Da.google_ad_section;var =
i=3Da.google_ad_region=3D=3Db?"":a.google_ad_region;if(U(f)){if(a.google_=
num_sdo_slots)a.google_num_sdo_slots=3Da.google_num_sdo_slots+1;else =
a.google_num_sdo_slots=3D1;if(a.google_num_sdo_slots>4)return false}else =
if(ea(a)){if(a.google_num_0ad_slots)a.google_num_0ad_slots=3Da.google_num=
_0ad_slots+1;else =
a.google_num_0ad_slots=3D1;if(a.google_num_0ad_slots>3)return false}else =
if(a.google_cpa_choice=3D=3D=0A=
b){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.google_num_slots_to_rotate){j[i]=3Db;l[i]=3D=
b;if(a.google_num_slot_to_show=3D=3Db)a.google_num_slot_to_show=3Dd%a.goo=
gle_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}F("dt",e.getTime());G("google_language");if(a.google_country)G("goo=
gle_country");else =
G("google_gl");G("google_region");J("google_city");J("google_hints");=0A=
G("google_safe");G("google_encoding");G("google_last_modified_time");J("g=
oogle_alternate_ad_url");G("google_alternate_color");G("google_skip");G("=
google_targeting");var =
o=3Da.google_ad_client;if(!g[o]){g[o]=3D1;g.length+=3D1}else =
g[o]+=3D1;if(j[i])if(!U(f)){I("prev_fmts",j[i].toLowerCase());if(g.length=
>1)F("slot",g[o])}if(l[i])I("prev_slotnames",l[i].toLowerCase());if(f&&!a=
.google_ad_slot){I("format",f.toLowerCase());if(!U(f))if(j[i])j[i]=3Dj[i]=
+","+f;else =
j[i]=3Df}if(a.google_ad_slot)if(l[i])l[i]=3Dl[i]+","+a.google_ad_slot;=0A=
else =
l[i]=3Da.google_ad_slot;G("google_max_num_ads");F("output",a.google_ad_ou=
tput);G("google_adtest");G("google_ad_callback");G("google_ad_slot");J("g=
oogle_correlator");if(a.google_ad_channel){J("google_ad_channel");var =
r=3D"",t=3Da.google_ad_channel.split(/[+, ]/);for(var =
w=3D0;w<t.length;w++){var p=3Dt[w];if(!k[p])k[p]=3D1;else =
r+=3Dp+"+"}I("pv_ch",r)}if(a.google_enable_first_party_cookie)I("cookie",=
a._GA_googleCookieHelper.G());J("google_page_url");K("google_color_bg",d)=
;K("google_color_text",d);K("google_color_link",=0A=
d);K("google_color_url",d);K("google_color_border",d);K("google_color_lin=
e",d);if(a.google_reuse_colors)F("reuse_colors",1);else =
F("reuse_colors",0);G("google_kw_type");J("google_kw");J("google_contents=
");G("google_num_radlinks");G("google_max_radlink_len");G("google_rl_filt=
ering");G("google_rl_mode");G("google_rt");J("google_rl_dest_url");G("goo=
gle_num_radlinks_per_unit");G("google_ad_type");G("google_image_size");G(=
"google_ad_region");G("google_feedback");J("google_referrer_url");J("goog=
le_page_location");=0A=
F("frm",a.google_iframing);G("google_bid");G("google_cust_age");G("google=
_cust_gender");G("google_cust_interests");G("google_cust_id");G("google_c=
ust_job");G("google_cust_u_url");G("google_cust_l");G("google_cust_lh");G=
("google_cust_ch");G("google_ed");J("google_ui_features");J("google_only_=
ads_with_video");J("google_disable_video_autoplay");if(V(a,c)&&c.body){va=
r =
x=3Dc.body.scrollHeight,u=3Dc.body.clientHeight;if(u&&x)I("cc",Math.round=
(u*100/x))}D();F("ga_vid",a.gaGlobal.vid);F("ga_sid",a.gaGlobal.sid);=0A=
F("ga_hid",a.gaGlobal.hid);F("ga_fc",a.gaGlobal.from_cookie);J("google_an=
alytics_uacct");G("google_ad_override");G("google_flash_version");P(a,e);=
return true}function X(){var =
b=3Dwindow,a=3Ddocument;Q(b);if(!fa())return;ba(b,a,b.google_ad_url,null)=
;da(b)}function ga(){X();return true}function V(b,a){return =
b.top.location=3D=3Da.location}function ha(b,a){var =
c=3Da.documentElement;if(V(b,a))return =
false;if(b.google_ad_width&&b.google_ad_height){var =
e=3D1,d=3D1;if(b.innerHeight){e=3Db.innerWidth;d=3Db.innerHeight}else =
if(c&&=0A=
c.clientHeight){e=3Dc.clientWidth;d=3Dc.clientHeight}else =
if(a.body){e=3Da.body.clientWidth;d=3Da.body.clientHeight}if(d>2*b.google=
_ad_height||e>2*b.google_ad_width)return false}return true}function =
ia(b){var =
a=3Dwindow,c=3Dnull,e=3Da.onerror;a.onerror=3Db;if(a.google_ad_frameborde=
r=3D=3Dc)a.google_ad_frameborder=3D0;if(a.google_ad_output=3D=3Dc)a.googl=
e_ad_output=3D"html";if(U(a.google_ad_format)){var =
d=3Da.google_ad_format.match(/^(\d+)x(\d+)_.*/);if(d){a.google_ad_width=3D=
parseInt(d[1],10);a.google_ad_height=3DparseInt(d[2],10);=0A=
a.google_ad_output=3D"html"}}if(a.google_ad_format=3D=3Dc&&a.google_ad_ou=
tput=3D=3D"html")a.google_ad_format=3Da.google_ad_width+"x"+a.google_ad_h=
eight;ja(a,document);if(a.google_num_slots_by_channel=3D=3Dc)a.google_num=
_slots_by_channel=3D[];if(a.google_num_slots_by_client=3D=3Dc)a.google_nu=
m_slots_by_client=3D[];if(a.google_prev_ad_formats_by_region=3D=3Dc)a.goo=
gle_prev_ad_formats_by_region=3D[];if(a.google_prev_ad_slotnames_by_regio=
n=3D=3Dc)a.google_prev_ad_slotnames_by_region=3D[];if(a.google_correlator=
=3D=3Dc)a.google_correlator=3D(new Date).getTime();=0A=
if(a.google_adslot_loaded=3D=3Dc)a.google_adslot_loaded=3D{};if(a.google_=
adContentsBySlot=3D=3Dc)a.google_adContentsBySlot=3D{};if(a.google_flash_=
version=3D=3Dc)a.google_flash_version=3Dka();a.onerror=3De}function =
la(b){if(b in Y)return Y[b];return =
Y[b]=3Dnavigator.userAgent.toLowerCase().indexOf(b)!=3D-1}var =
Y=3D{};function ca(b,a){if(b!=3D"html")return false;var =
c=3D{};c["ca-pub-7027491298716603"]=3Dtrue;c["ca-pub-8344185808443527"]=3D=
true;c["ca-pub-9812682548211238"]=3Dtrue;c["ca-pub-4424308218891706"]=3Dt=
rue;c["ca-pub-6922559858235084"]=3D=0A=
true;c["ca-pub-6477563040863705"]=3Dtrue;c["ca-google"]=3Dtrue;return =
c[R(a)]!=3Dnull}function ma(b){var =
a=3D{},c=3Db.split("?"),e=3Dc[c.length-1].split("&");for(var =
d=3D0;d<e.length;d++){var =
f=3De[d].split("=3D");if(f[0])try{a[f[0].toLowerCase()]=3Df.length>1?(win=
dow.decodeURIComponent?decodeURIComponent(f[1].replace(/\+/g," =
")):unescape(f[1])):""}catch(g){}}return a}function na(){var =
b=3Dwindow,a=3Dma(document.URL);if(a.google_ad_override)b.google_ad_overr=
ide=3Da.google_ad_override}function =
ka(){if(navigator.plugins&&navigator.mimeTypes.length){var b=3D=0A=
navigator.plugins["Shockwave Flash"];if(b&&b.description)return =
b.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s)+r/,".")}else =
if(navigator.userAgent&&navigator.userAgent.indexOf("Windows =
CE")>=3D0){var a=3D3,c=3D1;while(c)try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash."+(a+1));a++}catch(e){c=3Dnu=
ll}return a.toString()}else if(la("msie")&&!window.opera){var =
c=3Dnull;try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash.7")}catch(e){var =
a=3D0;try{c=3Dnew ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");=0A=
a=3D6;c.AllowScriptAccess=3D"always"}catch(e){if(a=3D=3D6)return =
a.toString()}try{c=3Dnew =
ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}}if(c!=3Dnull){v=
ar a=3Dc.GetVariable("$version").split(" ")[1];return =
a.replace(/,/g,".")}}return"0"}function oa(b,a){for(var c in =
a)b["google_"+c]=3Da[c]}function Z(b,a){if(!a)return b.location;return =
b.referrer}function pa(b,a){if(b.location=3D=3Da)return =
Date.parse(b.lastModified)/1000;else return null}function =
qa(b,a){if(!a&&b.google_referrer_url=3D=3Dnull)return"0";else if(a&&=0A=
b.google_referrer_url=3D=3Dnull)return"1";else =
if(!a&&b.google_referrer_url!=3Dnull)return"2";else =
if(a&&b.google_referrer_url!=3Dnull)return"3";return"4"}function =
ra(b,a,c){if(c)return b.google_referrer_url;else =
if(b.google_page_url&&b.google_referrer_url)return =
b.google_referrer_url;else return a.referrer}function =
sa(b,a,c,e){b.page_url=3DZ(c,e);b.page_location=3Dnull}function =
ta(b,a,c,e){b.page_url=3Da.google_page_url;b.page_location=3DZ(c,e)||"EMP=
TY"}function ua(b,a){var =
c=3D{},e=3Dha(b,a);c.iframing=3Dqa(b,e);if(!(!b.google_page_url))ta(c,=0A=
b,a,e);else =
sa(c,b,a,e);c.last_modified_time=3Dpa(a,c.page_url);c.referrer_url=3Dra(b=
,a,e);return c}function va(b){var =
a=3D{},c=3Db.URL.substring(b.URL.lastIndexOf("http"));a.iframing=3Dnull;a=
.page_url=3Dc;a.page_location=3Db.location;a.last_modified_time=3Dnull;a.=
referrer_url=3Dc;return a}function ja(b,a){var =
c;if(b.google_page_url=3D=3Dnull&&$[a.domain])c=3Dva(a);else =
c=3Dua(b,a);oa(b,c)}var =
$=3D{};$["ad.yieldmanager.com"]=3Dtrue;na();ia(ga);X();=0A=
})()=0A=

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/yui/build/utilities/utilities.js

/*=0A=
Copyright (c) 2007, Yahoo! Inc. All rights reserved.=0A=
Code licensed under the BSD License:=0A=
http://developer.yahoo.net/yui/license.txt=0A=
version: 2.2.0=0A=
*/=0A=
=0A=
if(typeof YAHOO=3D=3D"undefined"){var YAHOO=3D{};}=0A=
YAHOO.namespace=3Dfunction(){var =
a=3Darguments,o=3Dnull,i,j,d;for(i=3D0;i<a.length;i=3Di+1){d=3Da[i].split=
(".");o=3DYAHOO;for(j=3D(d[0]=3D=3D"YAHOO")?1:0;j<d.length;j=3Dj+1){o[d[j=
]]=3Do[d[j]]||{};o=3Do[d[j]];}}=0A=
return o;};YAHOO.log=3Dfunction(msg,cat,src){var =
l=3DYAHOO.widget.Logger;if(l&&l.log){return =
l.log(msg,cat,src);}else{return =
false;}};YAHOO.init=3Dfunction(){this.namespace("util","widget","example"=
);if(typeof YAHOO_config!=3D"undefined"){var =
l=3DYAHOO_config.listener,ls=3DYAHOO.env.listeners,unique=3Dtrue,i;if(l){=
for(i=3D0;i<ls.length;i=3Di+1){if(ls[i]=3D=3Dl){unique=3Dfalse;break;}}=0A=
if(unique){ls.push(l);}}}};YAHOO.register=3Dfunction(name,mainClass,data)=
{var =
mods=3DYAHOO.env.modules;if(!mods[name]){mods[name]=3D{versions:[],builds=
:[]};}=0A=
var =
m=3Dmods[name],v=3Ddata.version,b=3Ddata.build,ls=3DYAHOO.env.listeners;m=
.name=3Dname;m.version=3Dv;m.build=3Db;m.versions.push(v);m.builds.push(b=
);m.mainClass=3DmainClass;for(var i=3D0;i<ls.length;i=3Di+1){ls[i](m);}=0A=
if(mainClass){mainClass.VERSION=3Dv;mainClass.BUILD=3Db;}else{YAHOO.log("=
mainClass is undefined for module =
"+name,"warn");}};YAHOO.env=3DYAHOO.env||{modules:[],listeners:[],getVers=
ion:function(name){return =
YAHOO.env.modules[name]||null;}};YAHOO.lang=3D{isArray:function(obj){if(o=
bj.constructor&&obj.constructor.toString().indexOf('Array')>-1){return =
true;}else{return =
YAHOO.lang.isObject(obj)&&obj.constructor=3D=3DArray;}},isBoolean:functio=
n(obj){return typeof =
obj=3D=3D'boolean';},isFunction:function(obj){return typeof =
obj=3D=3D'function';},isNull:function(obj){return =
obj=3D=3D=3Dnull;},isNumber:function(obj){return typeof =
obj=3D=3D'number'&&isFinite(obj);},isObject:function(obj){return typeof =
obj=3D=3D'object'||YAHOO.lang.isFunction(obj);},isString:function(obj){re=
turn typeof obj=3D=3D'string';},isUndefined:function(obj){return typeof =
obj=3D=3D'undefined';},hasOwnProperty:function(obj,prop){if(Object.protot=
ype.hasOwnProperty){return obj.hasOwnProperty(prop);}=0A=
return!YAHOO.lang.isUndefined(obj[prop])&&obj.constructor.prototype[prop]=
!=3D=3Dobj[prop];},extend:function(subc,superc,overrides){var =
F=3Dfunction(){};F.prototype=3Dsuperc.prototype;subc.prototype=3Dnew =
F();subc.prototype.constructor=3Dsubc;subc.superclass=3Dsuperc.prototype;=
if(superc.prototype.constructor=3D=3DObject.prototype.constructor){superc=
.prototype.constructor=3Dsuperc;}=0A=
if(overrides){for(var i in =
overrides){subc.prototype[i]=3Doverrides[i];}}},augment:function(r,s){var=
 =
rp=3Dr.prototype,sp=3Ds.prototype,a=3Darguments,i,p;if(a[2]){for(i=3D2;i<=
a.length;i=3Di+1){rp[a[i]]=3Dsp[a[i]];}}else{for(p in =
sp){if(!rp[p]){rp[p]=3Dsp[p];}}}}};YAHOO.init();YAHOO.util.Lang=3DYAHOO.l=
ang;YAHOO.augment=3DYAHOO.lang.augment;YAHOO.extend=3DYAHOO.lang.extend;Y=
AHOO.register("yahoo",YAHOO,{version:"2.2.0",build:"127"});=0A=
(function(){var =
Y=3DYAHOO.util,getStyle,setStyle,id_counter=3D0,propertyCache=3D{};var =
ua=3Dnavigator.userAgent.toLowerCase(),isOpera=3D(ua.indexOf('opera')>-1)=
,isSafari=3D(ua.indexOf('safari')>-1),isGecko=3D(!isOpera&&!isSafari&&ua.=
indexOf('gecko')>-1),isIE=3D(!isOpera&&ua.indexOf('msie')>-1);var =
patterns=3D{HYPHEN:/(-[a-z])/i};var =
toCamel=3Dfunction(property){if(!patterns.HYPHEN.test(property)){return =
property;}=0A=
if(propertyCache[property]){return propertyCache[property];}=0A=
while(patterns.HYPHEN.exec(property)){property=3Dproperty.replace(RegExp.=
$1,RegExp.$1.substr(1).toUpperCase());}=0A=
propertyCache[property]=3Dproperty;return =
property;};if(document.defaultView&&document.defaultView.getComputedStyle=
){getStyle=3Dfunction(el,property){var value=3Dnull;var =
computed=3Ddocument.defaultView.getComputedStyle(el,'');if(computed){valu=
e=3Dcomputed[toCamel(property)];}=0A=
return el.style[property]||value;};}else =
if(document.documentElement.currentStyle&&isIE){getStyle=3Dfunction(el,pr=
operty){switch(toCamel(property)){case'opacity':var =
val=3D100;try{val=3Del.filters['DXImageTransform.Microsoft.Alpha'].opacit=
y;}catch(e){try{val=3Del.filters('alpha').opacity;}catch(e){}}=0A=
return val/100;break;default:var =
value=3Del.currentStyle?el.currentStyle[property]:null;return(el.style[pr=
operty]||value);}};}else{getStyle=3Dfunction(el,property){return =
el.style[property];};}=0A=
if(isIE){setStyle=3Dfunction(el,property,val){switch(property){case'opaci=
ty':if(typeof =
el.style.filter=3D=3D'string'){el.style.filter=3D'alpha(opacity=3D'+val*1=
00+')';if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=3D1=
;}}=0A=
break;default:el.style[property]=3Dval;}};}else{setStyle=3Dfunction(el,pr=
operty,val){el.style[property]=3Dval;};}=0A=
YAHOO.util.Dom=3D{get:function(el){if(!el){return null;}=0A=
if(typeof el!=3D'string'&&!(el instanceof Array)){return el;}=0A=
if(typeof el=3D=3D'string'){return document.getElementById(el);}=0A=
else{var collection=3D[];for(var =
i=3D0,len=3Del.length;i<len;++i){collection[collection.length]=3DY.Dom.ge=
t(el[i]);}=0A=
return collection;}=0A=
return =
null;},getStyle:function(el,property){property=3DtoCamel(property);var =
f=3Dfunction(element){return getStyle(element,property);};return =
Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,property,val){propert=
y=3DtoCamel(property);var =
f=3Dfunction(element){setStyle(element,property,val);};Y.Dom.batch(el,f,Y=
.Dom,true);},getXY:function(el){var =
f=3Dfunction(el){if(el.parentNode=3D=3D=3Dnull||el.offsetParent=3D=3D=3Dn=
ull||this.getStyle(el,'display')=3D=3D'none'){return false;}=0A=
var parentNode=3Dnull;var pos=3D[];var =
box;if(el.getBoundingClientRect){box=3Del.getBoundingClientRect();var =
doc=3Ddocument;if(!this.inDocument(el)&&parent.document!=3Ddocument){doc=3D=
parent.document;if(!this.isAncestor(doc.documentElement,el)){return =
false;}}=0A=
var =
scrollTop=3DMath.max(doc.documentElement.scrollTop,doc.body.scrollTop);va=
r =
scrollLeft=3DMath.max(doc.documentElement.scrollLeft,doc.body.scrollLeft)=
;return[box.left+scrollLeft,box.top+scrollTop];}=0A=
else{pos=3D[el.offsetLeft,el.offsetTop];parentNode=3Del.offsetParent;if(p=
arentNode!=3Del){while(parentNode){pos[0]+=3DparentNode.offsetLeft;pos[1]=
+=3DparentNode.offsetTop;parentNode=3DparentNode.offsetParent;}}=0A=
if(isSafari&&this.getStyle(el,'position')=3D=3D'absolute'){pos[0]-=3Ddocu=
ment.body.offsetLeft;pos[1]-=3Ddocument.body.offsetTop;}}=0A=
if(el.parentNode){parentNode=3Del.parentNode;}=0A=
else{parentNode=3Dnull;}=0A=
while(parentNode&&parentNode.tagName.toUpperCase()!=3D'BODY'&&parentNode.=
tagName.toUpperCase()!=3D'HTML')=0A=
{if(Y.Dom.getStyle(parentNode,'display')!=3D'inline'){pos[0]-=3DparentNod=
e.scrollLeft;pos[1]-=3DparentNode.scrollTop;}=0A=
if(parentNode.parentNode){parentNode=3DparentNode.parentNode;}else{parent=
Node=3Dnull;}}=0A=
return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var =
f=3Dfunction(el){return Y.Dom.getXY(el)[0];};return =
Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var =
f=3Dfunction(el){return Y.Dom.getXY(el)[1];};return =
Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,noRetry){var =
f=3Dfunction(el){var =
style_pos=3Dthis.getStyle(el,'position');if(style_pos=3D=3D'static'){this=
.setStyle(el,'position','relative');style_pos=3D'relative';}=0A=
var pageXY=3Dthis.getXY(el);if(pageXY=3D=3D=3Dfalse){return false;}=0A=
var =
delta=3D[parseInt(this.getStyle(el,'left'),10),parseInt(this.getStyle(el,=
'top'),10)];if(isNaN(delta[0])){delta[0]=3D(style_pos=3D=3D'relative')?0:=
el.offsetLeft;}=0A=
if(isNaN(delta[1])){delta[1]=3D(style_pos=3D=3D'relative')?0:el.offsetTop=
;}=0A=
if(pos[0]!=3D=3Dnull){el.style.left=3Dpos[0]-pageXY[0]+delta[0]+'px';}=0A=
if(pos[1]!=3D=3Dnull){el.style.top=3Dpos[1]-pageXY[1]+delta[1]+'px';}=0A=
if(!noRetry){var =
newXY=3Dthis.getXY(el);if((pos[0]!=3D=3Dnull&&newXY[0]!=3Dpos[0])||(pos[1=
]!=3D=3Dnull&&newXY[1]!=3Dpos[1])){this.setXY(el,pos,true);}}};Y.Dom.batc=
h(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:=
function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var =
f=3Dfunction(el){var region=3Dnew Y.Region.getRegion(el);return =
region;};return =
Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return =
Y.Dom.getViewportWidth();},getClientHeight:function(){return =
Y.Dom.getViewportHeight();},getElementsByClassName:function(className,tag=
,root){var method=3Dfunction(el){return =
Y.Dom.hasClass(el,className);};return =
Y.Dom.getElementsBy(method,tag,root);},hasClass:function(el,className){va=
r re=3Dnew RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');var =
f=3Dfunction(el){return re.test(el['className']);};return =
Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,className){var =
f=3Dfunction(el){if(this.hasClass(el,className)){return;}=0A=
el['className']=3D[el['className'],className].join(' =
');};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,className){va=
r re=3Dnew RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)','g');var =
f=3Dfunction(el){if(!this.hasClass(el,className)){return;}=0A=
var c=3Del['className'];el['className']=3Dc.replace(re,' =
');if(this.hasClass(el,className)){this.removeClass(el,className);}};Y.Do=
m.batch(el,f,Y.Dom,true);},replaceClass:function(el,oldClassName,newClass=
Name){if(oldClassName=3D=3D=3DnewClassName){return false;}=0A=
var re=3Dnew RegExp('(?:^|\\s+)'+oldClassName+'(?:\\s+|$)','g');var =
f=3Dfunction(el){if(!this.hasClass(el,oldClassName)){this.addClass(el,new=
ClassName);return;}=0A=
el['className']=3Del['className'].replace(re,' '+newClassName+' =
');if(this.hasClass(el,oldClassName)){this.replaceClass(el,oldClassName,n=
ewClassName);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,pre=
fix){prefix=3Dprefix||'yui-gen';el=3Del||{};var =
f=3Dfunction(el){if(el){el=3DY.Dom.get(el);}else{el=3D{};}=0A=
if(!el.id){el.id=3Dprefix+id_counter++;}=0A=
return el.id;};return =
Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(haystack,needle){hayst=
ack=3DY.Dom.get(haystack);if(!haystack||!needle){return false;}=0A=
var f=3Dfunction(needle){if(haystack.contains&&!isSafari){return =
haystack.contains(needle);}=0A=
else =
if(haystack.compareDocumentPosition){return!!(haystack.compareDocumentPos=
ition(needle)&16);}=0A=
else{var =
parent=3Dneedle.parentNode;while(parent){if(parent=3D=3Dhaystack){return =
true;}=0A=
else =
if(!parent.tagName||parent.tagName.toUpperCase()=3D=3D'HTML'){return =
false;}=0A=
parent=3Dparent.parentNode;}=0A=
return false;}};return =
Y.Dom.batch(needle,f,Y.Dom,true);},inDocument:function(el){var =
f=3Dfunction(el){return =
this.isAncestor(document.documentElement,el);};return =
Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(method,tag,root){ta=
g=3Dtag||'*';var =
nodes=3D[];if(root){root=3DY.Dom.get(root);if(!root){return =
nodes;}}else{root=3Ddocument;}=0A=
var =
elements=3Droot.getElementsByTagName(tag);if(!elements.length&&(tag=3D=3D=
'*'&&root.all)){elements=3Droot.all;}=0A=
for(var =
i=3D0,len=3Delements.length;i<len;++i){if(method(elements[i])){nodes[node=
s.length]=3Delements[i];}}=0A=
return nodes;},batch:function(el,method,o,override){var =
id=3Del;el=3DY.Dom.get(el);var =
scope=3D(override)?o:window;if(!el||el.tagName||!el.length){if(!el){retur=
n false;}=0A=
return method.call(scope,el,o);}=0A=
var collection=3D[];for(var =
i=3D0,len=3Del.length;i<len;++i){if(!el[i]){id=3Del[i];}=0A=
collection[collection.length]=3Dmethod.call(scope,el[i],o);}=0A=
return collection;},getDocumentHeight:function(){var =
scrollHeight=3D(document.compatMode!=3D'CSS1Compat')?document.body.scroll=
Height:document.documentElement.scrollHeight;var =
h=3DMath.max(scrollHeight,Y.Dom.getViewportHeight());return =
h;},getDocumentWidth:function(){var =
scrollWidth=3D(document.compatMode!=3D'CSS1Compat')?document.body.scrollW=
idth:document.documentElement.scrollWidth;var =
w=3DMath.max(scrollWidth,Y.Dom.getViewportWidth());return =
w;},getViewportHeight:function(){var height=3Dself.innerHeight;var =
mode=3Ddocument.compatMode;if((mode||isIE)&&!isOpera){height=3D(mode=3D=3D=
'CSS1Compat')?document.documentElement.clientHeight:document.body.clientH=
eight;}=0A=
return height;},getViewportWidth:function(){var =
width=3Dself.innerWidth;var =
mode=3Ddocument.compatMode;if(mode||isIE){width=3D(mode=3D=3D'CSS1Compat'=
)?document.documentElement.clientWidth:document.body.clientWidth;}=0A=
return =
width;}};})();YAHOO.util.Region=3Dfunction(t,r,b,l){this.top=3Dt;this[1]=3D=
t;this.right=3Dr;this.bottom=3Db;this.left=3Dl;this[0]=3Dl;};YAHOO.util.R=
egion.prototype.contains=3Dfunction(region){return(region.left>=3Dthis.le=
ft&&region.right<=3Dthis.right&&region.top>=3Dthis.top&&region.bottom<=3D=
this.bottom);};YAHOO.util.Region.prototype.getArea=3Dfunction(){return((t=
his.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototyp=
e.intersect=3Dfunction(region){var t=3DMath.max(this.top,region.top);var =
r=3DMath.min(this.right,region.right);var =
b=3DMath.min(this.bottom,region.bottom);var =
l=3DMath.max(this.left,region.left);if(b>=3Dt&&r>=3Dl){return new =
YAHOO.util.Region(t,r,b,l);}else{return =
null;}};YAHOO.util.Region.prototype.union=3Dfunction(region){var =
t=3DMath.min(this.top,region.top);var =
r=3DMath.max(this.right,region.right);var =
b=3DMath.max(this.bottom,region.bottom);var =
l=3DMath.min(this.left,region.left);return new =
YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=3Dfunct=
ion(){return("Region {"+"top: "+this.top+", right: "+this.right+", =
bottom: "+this.bottom+", left: =
"+this.left+"}");};YAHOO.util.Region.getRegion=3Dfunction(el){var =
p=3DYAHOO.util.Dom.getXY(el);var t=3Dp[1];var =
r=3Dp[0]+el.offsetWidth;var b=3Dp[1]+el.offsetHeight;var l=3Dp[0];return =
new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=3Dfunction(x,y){if(x =
instanceof Array){y=3Dx[1];x=3Dx[0];}=0A=
this.x=3Dthis.right=3Dthis.left=3Dthis[0]=3Dx;this.y=3Dthis.top=3Dthis.bo=
ttom=3Dthis[1]=3Dy;};YAHOO.util.Point.prototype=3Dnew =
YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.2.0",=
build:"127"});=0A=
if(!YAHOO.util.Event){YAHOO.util.Event=3Dfunction(){var =
loadComplete=3Dfalse;var listeners=3D[];var unloadListeners=3D[];var =
legacyEvents=3D[];var legacyHandlers=3D[];var retryCount=3D0;var =
onAvailStack=3D[];var legacyMap=3D[];var counter=3D0;var =
lastError=3Dnull;return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2=
,WFN:3,OBJ:3,ADJ_SCOPE:4,isSafari:(/KHTML/gi).test(navigator.userAgent),w=
ebkit:function(){var v=3Dnavigator.userAgent.match(/AppleWebKit\/([^ =
]*)/);if(v&&v[1]){return v[1];}=0A=
return =
null;}(),isIE:(!this.webkit&&!navigator.userAgent.match(/opera/gi)&&navig=
ator.userAgent.match(/msie/gi)),_interval:null,startInterval:function(){i=
f(!this._interval){var self=3Dthis;var =
callback=3Dfunction(){self._tryPreloadAttach();};this._interval=3DsetInte=
rval(callback,this.POLL_INTERVAL);}},onAvailable:function(p_id,p_fn,p_obj=
,p_override){onAvailStack.push({id:p_id,fn:p_fn,obj:p_obj,override:p_over=
ride,checkReady:false});retryCount=3Dthis.POLL_RETRYS;this.startInterval(=
);},onContentReady:function(p_id,p_fn,p_obj,p_override){onAvailStack.push=
({id:p_id,fn:p_fn,obj:p_obj,override:p_override,checkReady:true});retryCo=
unt=3Dthis.POLL_RETRYS;this.startInterval();},addListener:function(el,sTy=
pe,fn,obj,override){if(!fn||!fn.call){return false;}=0A=
if(this._isValidCollection(el)){var ok=3Dtrue;for(var =
i=3D0,len=3Del.length;i<len;++i){ok=3Dthis.on(el[i],sType,fn,obj,override=
)&&ok;}=0A=
return ok;}else if(typeof el=3D=3D"string"){var =
oEl=3Dthis.getEl(el);if(oEl){el=3DoEl;}else{this.onAvailable(el,function(=
){YAHOO.util.Event.on(el,sType,fn,obj,override);});return true;}}=0A=
if(!el){return false;}=0A=
if("unload"=3D=3DsType&&obj!=3D=3Dthis){unloadListeners[unloadListeners.l=
ength]=3D[el,sType,fn,obj,override];return true;}=0A=
var =
scope=3Del;if(override){if(override=3D=3D=3Dtrue){scope=3Dobj;}else{scope=
=3Doverride;}}=0A=
var wrappedFn=3Dfunction(e){return =
fn.call(scope,YAHOO.util.Event.getEvent(e),obj);};var =
li=3D[el,sType,fn,wrappedFn,scope];var =
index=3Dlisteners.length;listeners[index]=3Dli;if(this.useLegacyEvent(el,=
sType)){var =
legacyIndex=3Dthis.getLegacyIndex(el,sType);if(legacyIndex=3D=3D-1||el!=3D=
legacyEvents[legacyIndex][0]){legacyIndex=3DlegacyEvents.length;legacyMap=
[el.id+sType]=3DlegacyIndex;legacyEvents[legacyIndex]=3D[el,sType,el["on"=
+sType]];legacyHandlers[legacyIndex]=3D[];el["on"+sType]=3Dfunction(e){YA=
HOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),legacyIndex);=
};}=0A=
legacyHandlers[legacyIndex].push(li);}else{try{this._simpleAdd(el,sType,w=
rappedFn,false);}catch(ex){this.lastError=3Dex;this.removeListener(el,sTy=
pe,fn);return false;}}=0A=
return true;},fireLegacyEvent:function(e,legacyIndex){var =
ok=3Dtrue,le,lh,li,scope,ret;lh=3DlegacyHandlers[legacyIndex];for(var =
i=3D0,len=3Dlh.length;i<len;++i){li=3Dlh[i];if(li&&li[this.WFN]){scope=3D=
li[this.ADJ_SCOPE];ret=3Dli[this.WFN].call(scope,e);ok=3D(ok&&ret);}}=0A=
le=3DlegacyEvents[legacyIndex];if(le&&le[2]){le[2](e);}=0A=
return ok;},getLegacyIndex:function(el,sType){var =
key=3Dthis.generateId(el)+sType;if(typeof =
legacyMap[key]=3D=3D"undefined"){return-1;}else{return =
legacyMap[key];}},useLegacyEvent:function(el,sType){if(this.webkit&&("cli=
ck"=3D=3DsType||"dblclick"=3D=3DsType)){var =
v=3DparseInt(this.webkit,10);if(!isNaN(v)&&v<418){return true;}}=0A=
return false;},removeListener:function(el,sType,fn){var i,len;if(typeof =
el=3D=3D"string"){el=3Dthis.getEl(el);}else =
if(this._isValidCollection(el)){var =
ok=3Dtrue;for(i=3D0,len=3Del.length;i<len;++i){ok=3D(this.removeListener(=
el[i],sType,fn)&&ok);}=0A=
return ok;}=0A=
if(!fn||!fn.call){return this.purgeElement(el,false,sType);}=0A=
if("unload"=3D=3DsType){for(i=3D0,len=3DunloadListeners.length;i<len;i++)=
{var =
li=3DunloadListeners[i];if(li&&li[0]=3D=3Del&&li[1]=3D=3DsType&&li[2]=3D=3D=
fn){unloadListeners.splice(i,1);return true;}}=0A=
return false;}=0A=
var cacheItem=3Dnull;var index=3Darguments[3];if("undefined"=3D=3Dtypeof =
index){index=3Dthis._getCacheIndex(el,sType,fn);}=0A=
if(index>=3D0){cacheItem=3Dlisteners[index];}=0A=
if(!el||!cacheItem){return false;}=0A=
if(this.useLegacyEvent(el,sType)){var =
legacyIndex=3Dthis.getLegacyIndex(el,sType);var =
llist=3DlegacyHandlers[legacyIndex];if(llist){for(i=3D0,len=3Dllist.lengt=
h;i<len;++i){li=3Dllist[i];if(li&&li[this.EL]=3D=3Del&&li[this.TYPE]=3D=3D=
sType&&li[this.FN]=3D=3Dfn){llist.splice(i,1);break;}}}}else{try{this._si=
mpleRemove(el,sType,cacheItem[this.WFN],false);}catch(ex){this.lastError=3D=
ex;return false;}}=0A=
delete listeners[index][this.WFN];delete =
listeners[index][this.FN];listeners.splice(index,1);return =
true;},getTarget:function(ev,resolveTextNode){var =
t=3Dev.target||ev.srcElement;return =
this.resolveTextNode(t);},resolveTextNode:function(node){if(node&&3=3D=3D=
node.nodeType){return node.parentNode;}else{return =
node;}},getPageX:function(ev){var =
x=3Dev.pageX;if(!x&&0!=3D=3Dx){x=3Dev.clientX||0;if(this.isIE){x+=3Dthis.=
_getScrollLeft();}}=0A=
return x;},getPageY:function(ev){var =
y=3Dev.pageY;if(!y&&0!=3D=3Dy){y=3Dev.clientY||0;if(this.isIE){y+=3Dthis.=
_getScrollTop();}}=0A=
return =
y;},getXY:function(ev){return[this.getPageX(ev),this.getPageY(ev)];},getR=
elatedTarget:function(ev){var =
t=3Dev.relatedTarget;if(!t){if(ev.type=3D=3D"mouseout"){t=3Dev.toElement;=
}else if(ev.type=3D=3D"mouseover"){t=3Dev.fromElement;}}=0A=
return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var =
t=3Dnew =
Date().getTime();try{ev.time=3Dt;}catch(ex){this.lastError=3Dex;return =
t;}}=0A=
return =
ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDef=
ault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPro=
pagation();}else{ev.cancelBubble=3Dtrue;}},preventDefault:function(ev){if=
(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=3Dfalse;}},g=
etEvent:function(e){var ev=3De||window.event;if(!ev){var =
c=3Dthis.getEvent.caller;while(c){ev=3Dc.arguments[0];if(ev&&Event=3D=3De=
v.constructor){break;}=0A=
c=3Dc.caller;}}=0A=
return ev;},getCharCode:function(ev){return =
ev.charCode||ev.keyCode||0;},_getCacheIndex:function(el,sType,fn){for(var=
 i=3D0,len=3Dlisteners.length;i<len;++i){var =
li=3Dlisteners[i];if(li&&li[this.FN]=3D=3Dfn&&li[this.EL]=3D=3Del&&li[thi=
s.TYPE]=3D=3DsType){return i;}}=0A=
return-1;},generateId:function(el){var =
id=3Del.id;if(!id){id=3D"yuievtautoid-"+counter;++counter;el.id=3Did;}=0A=
return id;},_isValidCollection:function(o){return(o&&o.length&&typeof =
o!=3D"string"&&!o.tagName&&!o.alert&&typeof =
o[0]!=3D"undefined");},elCache:{},getEl:function(id){return =
document.getElementById(id);},clearCache:function(){},_load:function(e){l=
oadComplete=3Dtrue;var =
EU=3DYAHOO.util.Event;if(this.isIE){EU._simpleRemove(window,"load",EU._lo=
ad);}},_tryPreloadAttach:function(){if(this.locked){return false;}=0A=
this.locked=3Dtrue;var =
tryAgain=3D!loadComplete;if(!tryAgain){tryAgain=3D(retryCount>0);}=0A=
var notAvail=3D[];for(var i=3D0,len=3DonAvailStack.length;i<len;++i){var =
item=3DonAvailStack[i];if(item){var =
el=3Dthis.getEl(item.id);if(el){if(!item.checkReady||loadComplete||el.nex=
tSibling||(document&&document.body)){var =
scope=3Del;if(item.override){if(item.override=3D=3D=3Dtrue){scope=3Ditem.=
obj;}else{scope=3Ditem.override;}}=0A=
item.fn.call(scope,item.obj);onAvailStack[i]=3Dnull;}}else{notAvail.push(=
item);}}}=0A=
retryCount=3D(notAvail.length=3D=3D=3D0)?0:retryCount-1;if(tryAgain){this=
.startInterval();}else{clearInterval(this._interval);this._interval=3Dnul=
l;}=0A=
this.locked=3Dfalse;return =
true;},purgeElement:function(el,recurse,sType){var =
elListeners=3Dthis.getListeners(el,sType);if(elListeners){for(var =
i=3D0,len=3DelListeners.length;i<len;++i){var =
l=3DelListeners[i];this.removeListener(el,l.type,l.fn);}}=0A=
if(recurse&&el&&el.childNodes){for(i=3D0,len=3Del.childNodes.length;i<len=
;++i){this.purgeElement(el.childNodes[i],recurse,sType);}}},getListeners:=
function(el,sType){var =
results=3D[],searchLists;if(!sType){searchLists=3D[listeners,unloadListen=
ers];}else =
if(sType=3D=3D"unload"){searchLists=3D[unloadListeners];}else{searchLists=
=3D[listeners];}=0A=
for(var j=3D0;j<searchLists.length;++j){var =
searchList=3DsearchLists[j];if(searchList&&searchList.length>0){for(var =
i=3D0,len=3DsearchList.length;i<len;++i){var =
l=3DsearchList[i];if(l&&l[this.EL]=3D=3D=3Del&&(!sType||sType=3D=3D=3Dl[t=
his.TYPE])){results.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ]=
,adjust:l[this.ADJ_SCOPE],index:i});}}}}=0A=
return(results.length)?results:null;},_unload:function(e){var =
EU=3DYAHOO.util.Event,i,j,l,len,index;for(i=3D0,len=3DunloadListeners.len=
gth;i<len;++i){l=3DunloadListeners[i];if(l){var =
scope=3Dwindow;if(l[EU.ADJ_SCOPE]){if(l[EU.ADJ_SCOPE]=3D=3D=3Dtrue){scope=
=3Dl[EU.OBJ];}else{scope=3Dl[EU.ADJ_SCOPE];}}=0A=
l[EU.FN].call(scope,EU.getEvent(e),l[EU.OBJ]);unloadListeners[i]=3Dnull;l=
=3Dnull;scope=3Dnull;}}=0A=
unloadListeners=3Dnull;if(listeners&&listeners.length>0){j=3Dlisteners.le=
ngth;while(j){index=3Dj-1;l=3Dlisteners[index];if(l){EU.removeListener(l[=
EU.EL],l[EU.TYPE],l[EU.FN],index);}=0A=
j=3Dj-1;}=0A=
l=3Dnull;EU.clearCache();}=0A=
for(i=3D0,len=3DlegacyEvents.length;i<len;++i){legacyEvents[i][0]=3Dnull;=
legacyEvents[i]=3Dnull;}=0A=
legacyEvents=3Dnull;EU._simpleRemove(window,"unload",EU._unload);},_getSc=
rollLeft:function(){return =
this._getScroll()[1];},_getScrollTop:function(){return =
this._getScroll()[0];},_getScroll:function(){var =
dd=3Ddocument.documentElement,db=3Ddocument.body;if(dd&&(dd.scrollTop||dd=
.scrollLeft)){return[dd.scrollTop,dd.scrollLeft];}else =
if(db){return[db.scrollTop,db.scrollLeft];}else{return[0,0];}},regCE:func=
tion(){},_simpleAdd:function(){if(window.addEventListener){return =
function(el,sType,fn,capture){el.addEventListener(sType,fn,(capture));};}=
else if(window.attachEvent){return =
function(el,sType,fn,capture){el.attachEvent("on"+sType,fn);};}else{retur=
n =
function(){};}}(),_simpleRemove:function(){if(window.removeEventListener)=
{return =
function(el,sType,fn,capture){el.removeEventListener(sType,fn,(capture));=
};}else if(window.detachEvent){return =
function(el,sType,fn){el.detachEvent("on"+sType,fn);};}else{return =
function(){};}}()};}();(function(){var =
EU=3DYAHOO.util.Event;EU.on=3DEU.addListener;if(document&&document.body){=
EU._load();}else{EU._simpleAdd(window,"load",EU._load);}=0A=
EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}=0A=
YAHOO.util.CustomEvent=3Dfunction(type,oScope,silent,signature){this.type=
=3Dtype;this.scope=3DoScope||window;this.silent=3Dsilent;this.signature=3D=
signature||YAHOO.util.CustomEvent.LIST;this.subscribers=3D[];if(!this.sil=
ent){}=0A=
var =
onsubscribeType=3D"_YUICEOnSubscribe";if(type!=3D=3DonsubscribeType){this=
.subscribeEvent=3Dnew =
YAHOO.util.CustomEvent(onsubscribeType,this,true);}};YAHOO.util.CustomEve=
nt.LIST=3D0;YAHOO.util.CustomEvent.FLAT=3D1;YAHOO.util.CustomEvent.protot=
ype=3D{subscribe:function(fn,obj,override){if(this.subscribeEvent){this.s=
ubscribeEvent.fire(fn,obj,override);}=0A=
this.subscribers.push(new =
YAHOO.util.Subscriber(fn,obj,override));},unsubscribe:function(fn,obj){if=
(!fn){return this.unsubscribeAll();}=0A=
var found=3Dfalse;for(var =
i=3D0,len=3Dthis.subscribers.length;i<len;++i){var =
s=3Dthis.subscribers[i];if(s&&s.contains(fn,obj)){this._delete(i);found=3D=
true;}}=0A=
return found;},fire:function(){var =
len=3Dthis.subscribers.length;if(!len&&this.silent){return true;}=0A=
var =
args=3D[],ret=3Dtrue,i;for(i=3D0;i<arguments.length;++i){args.push(argume=
nts[i]);}=0A=
var argslength=3Dargs.length;if(!this.silent){}=0A=
for(i=3D0;i<len;++i){var s=3Dthis.subscribers[i];if(s){if(!this.silent){}=0A=
var =
scope=3Ds.getScope(this.scope);if(this.signature=3D=3DYAHOO.util.CustomEv=
ent.FLAT){var param=3Dnull;if(args.length>0){param=3Dargs[0];}=0A=
ret=3Ds.fn.call(scope,param,s.obj);}else{ret=3Ds.fn.call(scope,this.type,=
args,s.obj);}=0A=
if(false=3D=3D=3Dret){if(!this.silent){}=0A=
return false;}}}=0A=
return true;},unsubscribeAll:function(){for(var =
i=3D0,len=3Dthis.subscribers.length;i<len;++i){this._delete(len-1-i);}=0A=
return i;},_delete:function(index){var =
s=3Dthis.subscribers[index];if(s){delete s.fn;delete s.obj;}=0A=
this.subscribers.splice(index,1);},toString:function(){return"CustomEvent=
: "+"'"+this.type+"', "+"scope: =
"+this.scope;}};YAHOO.util.Subscriber=3Dfunction(fn,obj,override){this.fn=
=3Dfn;this.obj=3Dobj||null;this.override=3Doverride;};YAHOO.util.Subscrib=
er.prototype.getScope=3Dfunction(defaultScope){if(this.override){if(this.=
override=3D=3D=3Dtrue){return this.obj;}else{return this.override;}}=0A=
return =
defaultScope;};YAHOO.util.Subscriber.prototype.contains=3Dfunction(fn,obj=
){if(obj){return(this.fn=3D=3Dfn&&this.obj=3D=3Dobj);}else{return(this.fn=
=3D=3Dfn);}};YAHOO.util.Subscriber.prototype.toString=3Dfunction(){return=
"Subscriber { obj: "+(this.obj||"")+", override: =
"+(this.override||"no")+" =
}";};YAHOO.util.EventProvider=3Dfunction(){};YAHOO.util.EventProvider.pro=
totype=3D{__yui_events:null,__yui_subscribers:null,subscribe:function(p_t=
ype,p_fn,p_obj,p_override){this.__yui_events=3Dthis.__yui_events||{};var =
ce=3Dthis.__yui_events[p_type];if(ce){ce.subscribe(p_fn,p_obj,p_override)=
;}else{this.__yui_subscribers=3Dthis.__yui_subscribers||{};var =
subs=3Dthis.__yui_subscribers;if(!subs[p_type]){subs[p_type]=3D[];}=0A=
subs[p_type].push({fn:p_fn,obj:p_obj,override:p_override});}},unsubscribe=
:function(p_type,p_fn,p_obj){this.__yui_events=3Dthis.__yui_events||{};va=
r ce=3Dthis.__yui_events[p_type];if(ce){return =
ce.unsubscribe(p_fn,p_obj);}else{return =
false;}},unsubscribeAll:function(p_type){return =
this.unsubscribe(p_type);},createEvent:function(p_type,p_config){this.__y=
ui_events=3Dthis.__yui_events||{};var opts=3Dp_config||{};var =
events=3Dthis.__yui_events;if(events[p_type]){}else{var =
scope=3Dopts.scope||this;var silent=3Dopts.silent||null;var ce=3Dnew =
YAHOO.util.CustomEvent(p_type,scope,silent,YAHOO.util.CustomEvent.FLAT);e=
vents[p_type]=3Dce;if(opts.onSubscribeCallback){ce.subscribeEvent.subscri=
be(opts.onSubscribeCallback);}=0A=
this.__yui_subscribers=3Dthis.__yui_subscribers||{};var =
qs=3Dthis.__yui_subscribers[p_type];if(qs){for(var =
i=3D0;i<qs.length;++i){ce.subscribe(qs[i].fn,qs[i].obj,qs[i].override);}}=
}=0A=
return =
events[p_type];},fireEvent:function(p_type,arg1,arg2,etc){this.__yui_even=
ts=3Dthis.__yui_events||{};var ce=3Dthis.__yui_events[p_type];if(ce){var =
args=3D[];for(var i=3D1;i<arguments.length;++i){args.push(arguments[i]);}=0A=
return ce.fire.apply(ce,args);}else{return =
null;}},hasEvent:function(type){if(this.__yui_events){if(this.__yui_event=
s[type]){return true;}}=0A=
return =
false;}};YAHOO.util.KeyListener=3Dfunction(attachTo,keyData,handler,event=
){if(!attachTo){}else if(!keyData){}else if(!handler){}=0A=
if(!event){event=3DYAHOO.util.KeyListener.KEYDOWN;}=0A=
var keyEvent=3Dnew =
YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=3Dnew =
YAHOO.util.CustomEvent("enabled");this.disabledEvent=3Dnew =
YAHOO.util.CustomEvent("disabled");if(typeof =
attachTo=3D=3D'string'){attachTo=3Ddocument.getElementById(attachTo);}=0A=
if(typeof =
handler=3D=3D'function'){keyEvent.subscribe(handler);}else{keyEvent.subsc=
ribe(handler.fn,handler.scope,handler.correctScope);}=0A=
function handleKeyPress(e,obj){if(!keyData.shift){keyData.shift=3Dfalse;}=0A=
if(!keyData.alt){keyData.alt=3Dfalse;}=0A=
if(!keyData.ctrl){keyData.ctrl=3Dfalse;}=0A=
if(e.shiftKey=3D=3DkeyData.shift&&e.altKey=3D=3DkeyData.alt&&e.ctrlKey=3D=
=3DkeyData.ctrl){var dataItem;var keyPressed;if(keyData.keys instanceof =
Array){for(var =
i=3D0;i<keyData.keys.length;i++){dataItem=3DkeyData.keys[i];if(dataItem=3D=
=3De.charCode){keyEvent.fire(e.charCode,e);break;}else =
if(dataItem=3D=3De.keyCode){keyEvent.fire(e.keyCode,e);break;}}}else{data=
Item=3DkeyData.keys;if(dataItem=3D=3De.charCode){keyEvent.fire(e.charCode=
,e);}else if(dataItem=3D=3De.keyCode){keyEvent.fire(e.keyCode,e);}}}}=0A=
this.enable=3Dfunction(){if(!this.enabled){YAHOO.util.Event.addListener(a=
ttachTo,event,handleKeyPress);this.enabledEvent.fire(keyData);}=0A=
this.enabled=3Dtrue;};this.disable=3Dfunction(){if(this.enabled){YAHOO.ut=
il.Event.removeListener(attachTo,event,handleKeyPress);this.disabledEvent=
.fire(keyData);}=0A=
this.enabled=3Dfalse;};this.toString=3Dfunction(){return"KeyListener =
["+keyData.keys+"] "+attachTo.tagName+=0A=
(attachTo.id?"["+attachTo.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN=3D=
"keydown";YAHOO.util.KeyListener.KEYUP=3D"keyup";YAHOO.register("event",Y=
AHOO.util.Event,{version:"2.2.0",build:"127"});YAHOO.util.Connect=3D{_msx=
ml_progid:['MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'],_ht=
tp_headers:{},_has_http_headers:false,_use_default_post_header:true,_defa=
ult_post_header:'application/x-www-form-urlencoded',_use_default_xhr_head=
er:true,_default_xhr_header:'XMLHttpRequest',_has_default_headers:true,_d=
efault_headers:{},_isFormSubmit:false,_isFileUpload:false,_formNode:null,=
_sFormData:null,_poll:{},_timeOut:{},_polling_interval:50,_transaction_id=
:0,setProgId:function(id)=0A=
{this._msxml_progid.unshift(id);},setDefaultPostHeader:function(b)=0A=
{this._use_default_post_header=3Db;},setDefaultXhrHeader:function(b)=0A=
{this._use_default_xhr_header=3Db;},setPollingInterval:function(i)=0A=
{if(typeof =
i=3D=3D'number'&&isFinite(i)){this._polling_interval=3Di;}},createXhrObje=
ct:function(transactionId)=0A=
{var obj,http;try=0A=
{http=3Dnew XMLHttpRequest();obj=3D{conn:http,tId:transactionId};}=0A=
catch(e)=0A=
{for(var i=3D0;i<this._msxml_progid.length;++i){try=0A=
{http=3Dnew =
ActiveXObject(this._msxml_progid[i]);obj=3D{conn:http,tId:transactionId};=
break;}=0A=
catch(e){}}}=0A=
finally=0A=
{return obj;}},getConnectionObject:function()=0A=
{var o;var tId=3Dthis._transaction_id;try=0A=
{o=3Dthis.createXhrObject(tId);if(o){this._transaction_id++;}}=0A=
catch(e){}=0A=
finally=0A=
{return o;}},asyncRequest:function(method,uri,callback,postData)=0A=
{var o=3Dthis.getConnectionObject();if(!o){return null;}=0A=
else{if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(o.tId,=
callback,uri,postData);this.releaseObject(o);return;}=0A=
if(method.toUpperCase()=3D=3D'GET'){if(this._sFormData.length!=3D0){uri+=3D=
((uri.indexOf('?')=3D=3D-1)?'?':'&')+this._sFormData;}=0A=
else{uri+=3D"?"+this._sFormData;}}=0A=
else =
if(method.toUpperCase()=3D=3D'POST'){postData=3DpostData?this._sFormData+=
"&"+postData:this._sFormData;}}=0A=
o.conn.open(method,uri,true);if(this._use_default_xhr_header){if(!this._d=
efault_headers['X-Requested-With']){this.initHeader('X-Requested-With',th=
is._default_xhr_header,true);}}=0A=
if(this._isFormSubmit||(postData&&this._use_default_post_header)){this.in=
itHeader('Content-Type',this._default_post_header);if(this._isFormSubmit)=
{this.resetFormState();}}=0A=
if(this._has_default_headers||this._has_http_headers){this.setHeader(o);}=0A=
this.handleReadyState(o,callback);o.conn.send(postData||null);return =
o;}},handleReadyState:function(o,callback)=0A=
{var =
oConn=3Dthis;if(callback&&callback.timeout){this._timeOut[o.tId]=3Dwindow=
.setTimeout(function(){oConn.abort(o,callback,true);},callback.timeout);}=0A=
this._poll[o.tId]=3Dwindow.setInterval(function(){if(o.conn&&o.conn.ready=
State=3D=3D4){window.clearInterval(oConn._poll[o.tId]);delete =
oConn._poll[o.tId];if(callback&&callback.timeout){delete =
oConn._timeOut[o.tId];}=0A=
oConn.handleTransactionResponse(o,callback);}},this._polling_interval);},=
handleTransactionResponse:function(o,callback,isAbort)=0A=
{if(!callback){this.releaseObject(o);return;}=0A=
var httpStatus,responseObject;try=0A=
{if(o.conn.status!=3D=3Dundefined&&o.conn.status!=3D0){httpStatus=3Do.con=
n.status;}=0A=
else{httpStatus=3D13030;}}=0A=
catch(e){httpStatus=3D13030;}=0A=
if(httpStatus>=3D200&&httpStatus<300){responseObject=3Dthis.createRespons=
eObject(o,callback.argument);if(callback.success){if(!callback.scope){cal=
lback.success(responseObject);}=0A=
else{callback.success.apply(callback.scope,[responseObject]);}}}=0A=
else{switch(httpStatus){case 12002:case 12029:case 12030:case 12031:case =
12152:case =
13030:responseObject=3Dthis.createExceptionObject(o.tId,callback.argument=
,(isAbort?isAbort:false));if(callback.failure){if(!callback.scope){callba=
ck.failure(responseObject);}=0A=
else{callback.failure.apply(callback.scope,[responseObject]);}}=0A=
break;default:responseObject=3Dthis.createResponseObject(o,callback.argum=
ent);if(callback.failure){if(!callback.scope){callback.failure(responseOb=
ject);}=0A=
else{callback.failure.apply(callback.scope,[responseObject]);}}}}=0A=
this.releaseObject(o);responseObject=3Dnull;},createResponseObject:functi=
on(o,callbackArg)=0A=
{var obj=3D{};var headerObj=3D{};try=0A=
{var headerStr=3Do.conn.getAllResponseHeaders();var =
header=3DheaderStr.split('\n');for(var i=3D0;i<header.length;i++){var =
delimitPos=3Dheader[i].indexOf(':');if(delimitPos!=3D-1){headerObj[header=
[i].substring(0,delimitPos)]=3Dheader[i].substring(delimitPos+2);}}}=0A=
catch(e){}=0A=
obj.tId=3Do.tId;obj.status=3Do.conn.status;obj.statusText=3Do.conn.status=
Text;obj.getResponseHeader=3DheaderObj;obj.getAllResponseHeaders=3Dheader=
Str;obj.responseText=3Do.conn.responseText;obj.responseXML=3Do.conn.respo=
nseXML;if(typeof =
callbackArg!=3D=3Dundefined){obj.argument=3DcallbackArg;}=0A=
return obj;},createExceptionObject:function(tId,callbackArg,isAbort)=0A=
{var COMM_CODE=3D0;var COMM_ERROR=3D'communication failure';var =
ABORT_CODE=3D-1;var ABORT_ERROR=3D'transaction aborted';var =
obj=3D{};obj.tId=3DtId;if(isAbort){obj.status=3DABORT_CODE;obj.statusText=
=3DABORT_ERROR;}=0A=
else{obj.status=3DCOMM_CODE;obj.statusText=3DCOMM_ERROR;}=0A=
if(callbackArg){obj.argument=3DcallbackArg;}=0A=
return obj;},initHeader:function(label,value,isDefault)=0A=
{var =
headerObj=3D(isDefault)?this._default_headers:this._http_headers;if(heade=
rObj[label]=3D=3D=3Dundefined){headerObj[label]=3Dvalue;}=0A=
else{headerObj[label]=3Dvalue+","+headerObj[label];}=0A=
if(isDefault){this._has_default_headers=3Dtrue;}=0A=
else{this._has_http_headers=3Dtrue;}},setHeader:function(o)=0A=
{if(this._has_default_headers){for(var prop in =
this._default_headers){if(YAHOO.lang.hasOwnProperty(this._default_headers=
,prop)){o.conn.setRequestHeader(prop,this._default_headers[prop]);}}}=0A=
if(this._has_http_headers){for(var prop in =
this._http_headers){if(YAHOO.lang.hasOwnProperty(this._http_headers,prop)=
){o.conn.setRequestHeader(prop,this._http_headers[prop]);}}=0A=
delete =
this._http_headers;this._http_headers=3D{};this._has_http_headers=3Dfalse=
;}},resetDefaultHeaders:function(){delete this._default_headers=0A=
this._default_headers=3D{};this._has_default_headers=3Dfalse;},setForm:fu=
nction(formId,isUpload,secureUri)=0A=
{this.resetFormState();var oForm;if(typeof =
formId=3D=3D'string'){oForm=3D(document.getElementById(formId)||document.=
forms[formId]);}=0A=
else if(typeof formId=3D=3D'object'){oForm=3DformId;}=0A=
else{return;}=0A=
if(isUpload){this.createFrame(secureUri?secureUri:null);this._isFormSubmi=
t=3Dtrue;this._isFileUpload=3Dtrue;this._formNode=3DoForm;return;}=0A=
var oElement,oName,oValue,oDisabled;var hasSubmit=3Dfalse;for(var =
i=3D0;i<oForm.elements.length;i++){oElement=3DoForm.elements[i];oDisabled=
=3DoForm.elements[i].disabled;oName=3DoForm.elements[i].name;oValue=3DoFo=
rm.elements[i].value;if(!oDisabled&&oName)=0A=
{switch(oElement.type)=0A=
{case'select-one':case'select-multiple':for(var =
j=3D0;j<oElement.options.length;j++){if(oElement.options[j].selected){if(=
window.ActiveXObject){this._sFormData+=3DencodeURIComponent(oName)+'=3D'+=
encodeURIComponent(oElement.options[j].attributes['value'].specified?oEle=
ment.options[j].value:oElement.options[j].text)+'&';}=0A=
else{this._sFormData+=3DencodeURIComponent(oName)+'=3D'+encodeURIComponen=
t(oElement.options[j].hasAttribute('value')?oElement.options[j].value:oEl=
ement.options[j].text)+'&';}}}=0A=
break;case'radio':case'checkbox':if(oElement.checked){this._sFormData+=3D=
encodeURIComponent(oName)+'=3D'+encodeURIComponent(oValue)+'&';}=0A=
break;case'file':case =
undefined:case'reset':case'button':break;case'submit':if(hasSubmit=3D=3Df=
alse){this._sFormData+=3DencodeURIComponent(oName)+'=3D'+encodeURICompone=
nt(oValue)+'&';hasSubmit=3Dtrue;}=0A=
break;default:this._sFormData+=3DencodeURIComponent(oName)+'=3D'+encodeUR=
IComponent(oValue)+'&';break;}}}=0A=
this._isFormSubmit=3Dtrue;this._sFormData=3Dthis._sFormData.substr(0,this=
._sFormData.length-1);return =
this._sFormData;},resetFormState:function(){this._isFormSubmit=3Dfalse;th=
is._isFileUpload=3Dfalse;this._formNode=3Dnull;this._sFormData=3D"";},cre=
ateFrame:function(secureUri){var =
frameId=3D'yuiIO'+this._transaction_id;if(window.ActiveXObject){var =
io=3Ddocument.createElement('<iframe id=3D"'+frameId+'" =
name=3D"'+frameId+'" />');if(typeof =
secureUri=3D=3D'boolean'){io.src=3D'javascript:false';}=0A=
else if(typeof secureURI=3D=3D'string'){io.src=3DsecureUri;}}=0A=
else{var =
io=3Ddocument.createElement('iframe');io.id=3DframeId;io.name=3DframeId;}=0A=
io.style.position=3D'absolute';io.style.top=3D'-1000px';io.style.left=3D'=
-1000px';document.body.appendChild(io);},appendPostData:function(postData=
)=0A=
{var formElements=3D[];var postMessage=3DpostData.split('&');for(var =
i=3D0;i<postMessage.length;i++){var =
delimitPos=3DpostMessage[i].indexOf('=3D');if(delimitPos!=3D-1){formEleme=
nts[i]=3Ddocument.createElement('input');formElements[i].type=3D'hidden';=
formElements[i].name=3DpostMessage[i].substring(0,delimitPos);formElement=
s[i].value=3DpostMessage[i].substring(delimitPos+1);this._formNode.append=
Child(formElements[i]);}}=0A=
return formElements;},uploadFile:function(id,callback,uri,postData){var =
frameId=3D'yuiIO'+id;var uploadEncoding=3D'multipart/form-data';var =
io=3Ddocument.getElementById(frameId);this._formNode.action=3Duri;this._f=
ormNode.method=3D'POST';this._formNode.target=3DframeId;if(this._formNode=
.encoding){this._formNode.encoding=3DuploadEncoding;}=0A=
else{this._formNode.enctype=3DuploadEncoding;}=0A=
if(postData){var oElements=3Dthis.appendPostData(postData);}=0A=
this._formNode.submit();if(oElements&&oElements.length>0){for(var =
i=3D0;i<oElements.length;i++){this._formNode.removeChild(oElements[i]);}}=0A=
this.resetFormState();var uploadCallback=3Dfunction()=0A=
{var obj=3D{};obj.tId=3Did;obj.argument=3Dcallback.argument;try=0A=
{obj.responseText=3Dio.contentWindow.document.body?io.contentWindow.docum=
ent.body.innerHTML:null;obj.responseXML=3Dio.contentWindow.document.XMLDo=
cument?io.contentWindow.document.XMLDocument:io.contentWindow.document;}=0A=
catch(e){}=0A=
if(callback&&callback.upload){if(!callback.scope){callback.upload(obj);}=0A=
else{callback.upload.apply(callback.scope,[obj]);}}=0A=
if(YAHOO.util.Event){YAHOO.util.Event.removeListener(io,"load",uploadCall=
back);}=0A=
else if(window.detachEvent){io.detachEvent('onload',uploadCallback);}=0A=
else{io.removeEventListener('load',uploadCallback,false);}=0A=
setTimeout(function(){document.body.removeChild(io);},100);};if(YAHOO.uti=
l.Event){YAHOO.util.Event.addListener(io,"load",uploadCallback);}=0A=
else if(window.attachEvent){io.attachEvent('onload',uploadCallback);}=0A=
else{io.addEventListener('load',uploadCallback,false);}},abort:function(o=
,callback,isTimeout)=0A=
{if(this.isCallInProgress(o)){o.conn.abort();window.clearInterval(this._p=
oll[o.tId]);delete this._poll[o.tId];if(isTimeout){delete =
this._timeOut[o.tId];}=0A=
this.handleTransactionResponse(o,callback,true);return true;}=0A=
else{return false;}},isCallInProgress:function(o)=0A=
{if(o.conn){return o.conn.readyState!=3D4&&o.conn.readyState!=3D0;}=0A=
else{return false;}},releaseObject:function(o)=0A=
{o.conn=3Dnull;o=3Dnull;}};=0A=
YAHOO.register("connection", YAHOO.widget.Module, {version: "2.2.0", =
build: "127"});=0A=
YAHOO.util.Anim=3Dfunction(el,attributes,duration,method){if(el){this.ini=
t(el,attributes,duration,method);}};YAHOO.util.Anim.prototype=3D{toString=
:function(){var el=3Dthis.getEl();var =
id=3Del.id||el.tagName;return("Anim =
"+id);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttri=
bute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|botto=
m$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod=
:function(attr,start,end){return =
this.method(this.currentFrame,start,end-start,this.totalFrames);},setAttr=
ibute:function(attr,val,unit){if(this.patterns.noNegatives.test(attr)){va=
l=3D(val>0)?val:0;}=0A=
YAHOO.util.Dom.setStyle(this.getEl(),attr,val+unit);},getAttribute:functi=
on(attr){var el=3Dthis.getEl();var =
val=3DYAHOO.util.Dom.getStyle(el,attr);if(val!=3D=3D'auto'&&!this.pattern=
s.offsetUnit.test(val)){return parseFloat(val);}=0A=
var a=3Dthis.patterns.offsetAttribute.exec(attr)||[];var =
pos=3D!!(a[3]);var =
box=3D!!(a[2]);if(box||(YAHOO.util.Dom.getStyle(el,'position')=3D=3D'abso=
lute'&&pos)){val=3Del['offset'+a[0].charAt(0).toUpperCase()+a[0].substr(1=
)];}else{val=3D0;}=0A=
return =
val;},getDefaultUnit:function(attr){if(this.patterns.defaultUnit.test(att=
r)){return'px';}=0A=
return'';},setRuntimeAttribute:function(attr){var start;var end;var =
attributes=3Dthis.attributes;this.runtimeAttributes[attr]=3D{};var =
isset=3Dfunction(prop){return(typeof =
prop!=3D=3D'undefined');};if(!isset(attributes[attr]['to'])&&!isset(attri=
butes[attr]['by'])){return false;}=0A=
start=3D(isset(attributes[attr]['from']))?attributes[attr]['from']:this.g=
etAttribute(attr);if(isset(attributes[attr]['to'])){end=3Dattributes[attr=
]['to'];}else =
if(isset(attributes[attr]['by'])){if(start.constructor=3D=3DArray){end=3D=
[];for(var =
i=3D0,len=3Dstart.length;i<len;++i){end[i]=3Dstart[i]+attributes[attr]['b=
y'][i];}}else{end=3Dstart+attributes[attr]['by'];}}=0A=
this.runtimeAttributes[attr].start=3Dstart;this.runtimeAttributes[attr].e=
nd=3Dend;this.runtimeAttributes[attr].unit=3D(isset(attributes[attr].unit=
))?attributes[attr]['unit']:this.getDefaultUnit(attr);},init:function(el,=
attributes,duration,method){var isAnimated=3Dfalse;var =
startTime=3Dnull;var =
actualFrames=3D0;el=3DYAHOO.util.Dom.get(el);this.attributes=3Dattributes=
||{};this.duration=3Dduration||1;this.method=3Dmethod||YAHOO.util.Easing.=
easeNone;this.useSeconds=3Dtrue;this.currentFrame=3D0;this.totalFrames=3D=
YAHOO.util.AnimMgr.fps;this.getEl=3Dfunction(){return =
el;};this.isAnimated=3Dfunction(){return =
isAnimated;};this.getStartTime=3Dfunction(){return =
startTime;};this.runtimeAttributes=3D{};this.animate=3Dfunction(){if(this=
.isAnimated()){return false;}=0A=
this.currentFrame=3D0;this.totalFrames=3D(this.useSeconds)?Math.ceil(YAHO=
O.util.AnimMgr.fps*this.duration):this.duration;YAHOO.util.AnimMgr.regist=
erElement(this);};this.stop=3Dfunction(finish){if(finish){this.currentFra=
me=3Dthis.totalFrames;this._onTween.fire();}=0A=
YAHOO.util.AnimMgr.stop(this);};var =
onStart=3Dfunction(){this.onStart.fire();this.runtimeAttributes=3D{};for(=
var attr in this.attributes){this.setRuntimeAttribute(attr);}=0A=
isAnimated=3Dtrue;actualFrames=3D0;startTime=3Dnew Date();};var =
onTween=3Dfunction(){var data=3D{duration:new =
Date()-this.getStartTime(),currentFrame:this.currentFrame};data.toString=3D=
function(){return('duration: '+data.duration+', currentFrame: =
'+data.currentFrame);};this.onTween.fire(data);var =
runtimeAttributes=3Dthis.runtimeAttributes;for(var attr in =
runtimeAttributes){this.setAttribute(attr,this.doMethod(attr,runtimeAttri=
butes[attr].start,runtimeAttributes[attr].end),runtimeAttributes[attr].un=
it);}=0A=
actualFrames+=3D1;};var onComplete=3Dfunction(){var =
actual_duration=3D(new Date()-startTime)/1000;var =
data=3D{duration:actual_duration,frames:actualFrames,fps:actualFrames/act=
ual_duration};data.toString=3Dfunction(){return('duration: =
'+data.duration+', frames: '+data.frames+', fps: =
'+data.fps);};isAnimated=3Dfalse;actualFrames=3D0;this.onComplete.fire(da=
ta);};this._onStart=3Dnew =
YAHOO.util.CustomEvent('_start',this,true);this.onStart=3Dnew =
YAHOO.util.CustomEvent('start',this);this.onTween=3Dnew =
YAHOO.util.CustomEvent('tween',this);this._onTween=3Dnew =
YAHOO.util.CustomEvent('_tween',this,true);this.onComplete=3Dnew =
YAHOO.util.CustomEvent('complete',this);this._onComplete=3Dnew =
YAHOO.util.CustomEvent('_complete',this,true);this._onStart.subscribe(onS=
tart);this._onTween.subscribe(onTween);this._onComplete.subscribe(onCompl=
ete);}};YAHOO.util.AnimMgr=3Dnew function(){var thread=3Dnull;var =
queue=3D[];var =
tweenCount=3D0;this.fps=3D1000;this.delay=3D1;this.registerElement=3Dfunc=
tion(tween){queue[queue.length]=3Dtween;tweenCount+=3D1;tween._onStart.fi=
re();this.start();};this.unRegister=3Dfunction(tween,index){tween._onComp=
lete.fire();index=3Dindex||getIndex(tween);if(index!=3D-1){queue.splice(i=
ndex,1);}=0A=
tweenCount-=3D1;if(tweenCount<=3D0){this.stop();}};this.start=3Dfunction(=
){if(thread=3D=3D=3Dnull){thread=3DsetInterval(this.run,this.delay);}};th=
is.stop=3Dfunction(tween){if(!tween){clearInterval(thread);for(var =
i=3D0,len=3Dqueue.length;i<len;++i){if(queue[0].isAnimated()){this.unRegi=
ster(queue[0],0);}}=0A=
queue=3D[];thread=3Dnull;tweenCount=3D0;}=0A=
else{this.unRegister(tween);}};this.run=3Dfunction(){for(var =
i=3D0,len=3Dqueue.length;i<len;++i){var =
tween=3Dqueue[i];if(!tween||!tween.isAnimated()){continue;}=0A=
if(tween.currentFrame<tween.totalFrames||tween.totalFrames=3D=3D=3Dnull)=0A=
{tween.currentFrame+=3D1;if(tween.useSeconds){correctFrame(tween);}=0A=
tween._onTween.fire();}=0A=
else{YAHOO.util.AnimMgr.stop(tween,i);}}};var =
getIndex=3Dfunction(anim){for(var =
i=3D0,len=3Dqueue.length;i<len;++i){if(queue[i]=3D=3Danim){return i;}}=0A=
return-1;};var correctFrame=3Dfunction(tween){var =
frames=3Dtween.totalFrames;var frame=3Dtween.currentFrame;var =
expected=3D(tween.currentFrame*tween.duration*1000/tween.totalFrames);var=
 elapsed=3D(new Date()-tween.getStartTime());var =
tweak=3D0;if(elapsed<tween.duration*1000){tweak=3DMath.round((elapsed/exp=
ected-1)*tween.currentFrame);}else{tweak=3Dframes-(frame+1);}=0A=
if(tweak>0&&isFinite(tweak)){if(tween.currentFrame+tweak>=3Dframes){tweak=
=3Dframes-(frame+1);}=0A=
tween.currentFrame+=3Dtweak;}};};YAHOO.util.Bezier=3Dnew =
function(){this.getPosition=3Dfunction(points,t){var =
n=3Dpoints.length;var tmp=3D[];for(var =
i=3D0;i<n;++i){tmp[i]=3D[points[i][0],points[i][1]];}=0A=
for(var =
j=3D1;j<n;++j){for(i=3D0;i<n-j;++i){tmp[i][0]=3D(1-t)*tmp[i][0]+t*tmp[par=
seInt(i+1,10)][0];tmp[i][1]=3D(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];=
}}=0A=
return[tmp[0][0],tmp[0][1]];};};(function(){YAHOO.util.ColorAnim=3Dfuncti=
on(el,attributes,duration,method){YAHOO.util.ColorAnim.superclass.constru=
ctor.call(this,el,attributes,duration,method);};YAHOO.extend(YAHOO.util.C=
olorAnim,YAHOO.util.Anim);var Y=3DYAHOO.util;var =
superclass=3DY.ColorAnim.superclass;var =
proto=3DY.ColorAnim.prototype;proto.toString=3Dfunction(){var =
el=3Dthis.getEl();var id=3Del.id||el.tagName;return("ColorAnim =
"+id);};proto.patterns.color=3D/color$/i;proto.patterns.rgb=3D/^rgb\(([0-=
9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;proto.patterns.hex=3D/^#?([0-9A-F=
]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;proto.patterns.hex3=3D/^#?([0-9A-F]{1}=
)([0-9A-F]{1})([0-9A-F]{1})$/i;proto.patterns.transparent=3D/^transparent=
|rgba\(0, 0, 0, =
0\)$/;proto.parseColor=3Dfunction(s){if(s.length=3D=3D3){return s;}=0A=
var =
c=3Dthis.patterns.hex.exec(s);if(c&&c.length=3D=3D4){return[parseInt(c[1]=
,16),parseInt(c[2],16),parseInt(c[3],16)];}=0A=
c=3Dthis.patterns.rgb.exec(s);if(c&&c.length=3D=3D4){return[parseInt(c[1]=
,10),parseInt(c[2],10),parseInt(c[3],10)];}=0A=
c=3Dthis.patterns.hex3.exec(s);if(c&&c.length=3D=3D4){return[parseInt(c[1=
]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];}=0A=
return null;};proto.getAttribute=3Dfunction(attr){var =
el=3Dthis.getEl();if(this.patterns.color.test(attr)){var =
val=3DYAHOO.util.Dom.getStyle(el,attr);if(this.patterns.transparent.test(=
val)){var =
parent=3Del.parentNode;val=3DY.Dom.getStyle(parent,attr);while(parent&&th=
is.patterns.transparent.test(val)){parent=3Dparent.parentNode;val=3DY.Dom=
.getStyle(parent,attr);if(parent.tagName.toUpperCase()=3D=3D'HTML'){val=3D=
'#fff';}}}}else{val=3Dsuperclass.getAttribute.call(this,attr);}=0A=
return val;};proto.doMethod=3Dfunction(attr,start,end){var =
val;if(this.patterns.color.test(attr)){val=3D[];for(var =
i=3D0,len=3Dstart.length;i<len;++i){val[i]=3Dsuperclass.doMethod.call(thi=
s,attr,start[i],end[i]);}=0A=
val=3D'rgb('+Math.floor(val[0])+','+Math.floor(val[1])+','+Math.floor(val=
[2])+')';}=0A=
else{val=3Dsuperclass.doMethod.call(this,attr,start,end);}=0A=
return =
val;};proto.setRuntimeAttribute=3Dfunction(attr){superclass.setRuntimeAtt=
ribute.call(this,attr);if(this.patterns.color.test(attr)){var =
attributes=3Dthis.attributes;var =
start=3Dthis.parseColor(this.runtimeAttributes[attr].start);var =
end=3Dthis.parseColor(this.runtimeAttributes[attr].end);if(typeof =
attributes[attr]['to']=3D=3D=3D'undefined'&&typeof =
attributes[attr]['by']!=3D=3D'undefined'){end=3Dthis.parseColor(attribute=
s[attr].by);for(var =
i=3D0,len=3Dstart.length;i<len;++i){end[i]=3Dstart[i]+end[i];}}=0A=
this.runtimeAttributes[attr].start=3Dstart;this.runtimeAttributes[attr].e=
nd=3Dend;}};})();YAHOO.util.Easing=3D{easeNone:function(t,b,c,d){return =
c*t/d+b;},easeIn:function(t,b,c,d){return =
c*(t/=3Dd)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=3Dd)*(t-2)+b;},ea=
seBoth:function(t,b,c,d){if((t/=3Dd/2)<1){return c/2*t*t+b;}=0A=
return-c/2*((--t)*(t-2)-1)+b;},easeInStrong:function(t,b,c,d){return =
c*(t/=3Dd)*t*t*t+b;},easeOutStrong:function(t,b,c,d){return-c*((t=3Dt/d-1=
)*t*t*t-1)+b;},easeBothStrong:function(t,b,c,d){if((t/=3Dd/2)<1){return =
c/2*t*t*t*t+b;}=0A=
return-c/2*((t-=3D2)*t*t*t-2)+b;},elasticIn:function(t,b,c,d,a,p){if(t=3D=
=3D0){return b;}=0A=
if((t/=3Dd)=3D=3D1){return b+c;}=0A=
if(!p){p=3Dd*.3;}=0A=
if(!a||a<Math.abs(c)){a=3Dc;var s=3Dp/4;}=0A=
else{var s=3Dp/(2*Math.PI)*Math.asin(c/a);}=0A=
return-(a*Math.pow(2,10*(t-=3D1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},el=
asticOut:function(t,b,c,d,a,p){if(t=3D=3D0){return b;}=0A=
if((t/=3Dd)=3D=3D1){return b+c;}=0A=
if(!p){p=3Dd*.3;}=0A=
if(!a||a<Math.abs(c)){a=3Dc;var s=3Dp/4;}=0A=
else{var s=3Dp/(2*Math.PI)*Math.asin(c/a);}=0A=
return =
a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},elasticBoth:fun=
ction(t,b,c,d,a,p){if(t=3D=3D0){return b;}=0A=
if((t/=3Dd/2)=3D=3D2){return b+c;}=0A=
if(!p){p=3Dd*(.3*1.5);}=0A=
if(!a||a<Math.abs(c)){a=3Dc;var s=3Dp/4;}=0A=
else{var s=3Dp/(2*Math.PI)*Math.asin(c/a);}=0A=
if(t<1){return-.5*(a*Math.pow(2,10*(t-=3D1))*Math.sin((t*d-s)*(2*Math.PI)=
/p))+b;}=0A=
return =
a*Math.pow(2,-10*(t-=3D1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},backI=
n:function(t,b,c,d,s){if(typeof s=3D=3D'undefined'){s=3D1.70158;}=0A=
return =
c*(t/=3Dd)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(typeof =
s=3D=3D'undefined'){s=3D1.70158;}=0A=
return =
c*((t=3Dt/d-1)*t*((s+1)*t+s)+1)+b;},backBoth:function(t,b,c,d,s){if(typeo=
f s=3D=3D'undefined'){s=3D1.70158;}=0A=
if((t/=3Dd/2)<1){return c/2*(t*t*(((s*=3D(1.525))+1)*t-s))+b;}=0A=
return =
c/2*((t-=3D2)*t*(((s*=3D(1.525))+1)*t+s)+2)+b;},bounceIn:function(t,b,c,d=
){return =
c-YAHOO.util.Easing.bounceOut(d-t,0,c,d)+b;},bounceOut:function(t,b,c,d){=
if((t/=3Dd)<(1/2.75)){return c*(7.5625*t*t)+b;}else =
if(t<(2/2.75)){return c*(7.5625*(t-=3D(1.5/2.75))*t+.75)+b;}else =
if(t<(2.5/2.75)){return c*(7.5625*(t-=3D(2.25/2.75))*t+.9375)+b;}=0A=
return =
c*(7.5625*(t-=3D(2.625/2.75))*t+.984375)+b;},bounceBoth:function(t,b,c,d)=
{if(t<d/2){return YAHOO.util.Easing.bounceIn(t*2,0,c,d)*.5+b;}=0A=
return =
YAHOO.util.Easing.bounceOut(t*2-d,0,c,d)*.5+c*.5+b;}};(function(){YAHOO.u=
til.Motion=3Dfunction(el,attributes,duration,method){if(el){YAHOO.util.Mo=
tion.superclass.constructor.call(this,el,attributes,duration,method);}};Y=
AHOO.extend(YAHOO.util.Motion,YAHOO.util.ColorAnim);var =
Y=3DYAHOO.util;var superclass=3DY.Motion.superclass;var =
proto=3DY.Motion.prototype;proto.toString=3Dfunction(){var =
el=3Dthis.getEl();var id=3Del.id||el.tagName;return("Motion =
"+id);};proto.patterns.points=3D/^points$/i;proto.setAttribute=3Dfunction=
(attr,val,unit){if(this.patterns.points.test(attr)){unit=3Dunit||'px';sup=
erclass.setAttribute.call(this,'left',val[0],unit);superclass.setAttribut=
e.call(this,'top',val[1],unit);}else{superclass.setAttribute.call(this,at=
tr,val,unit);}};proto.getAttribute=3Dfunction(attr){if(this.patterns.poin=
ts.test(attr)){var =
val=3D[superclass.getAttribute.call(this,'left'),superclass.getAttribute.=
call(this,'top')];}else{val=3Dsuperclass.getAttribute.call(this,attr);}=0A=
return val;};proto.doMethod=3Dfunction(attr,start,end){var =
val=3Dnull;if(this.patterns.points.test(attr)){var =
t=3Dthis.method(this.currentFrame,0,100,this.totalFrames)/100;val=3DY.Bez=
ier.getPosition(this.runtimeAttributes[attr],t);}else{val=3Dsuperclass.do=
Method.call(this,attr,start,end);}=0A=
return =
val;};proto.setRuntimeAttribute=3Dfunction(attr){if(this.patterns.points.=
test(attr)){var el=3Dthis.getEl();var attributes=3Dthis.attributes;var =
start;var control=3Dattributes['points']['control']||[];var end;var =
i,len;if(control.length>0&&!(control[0]instanceof =
Array)){control=3D[control];}else{var =
tmp=3D[];for(i=3D0,len=3Dcontrol.length;i<len;++i){tmp[i]=3Dcontrol[i];}=0A=
control=3Dtmp;}=0A=
if(Y.Dom.getStyle(el,'position')=3D=3D'static'){Y.Dom.setStyle(el,'positi=
on','relative');}=0A=
if(isset(attributes['points']['from'])){Y.Dom.setXY(el,attributes['points=
']['from']);}=0A=
else{Y.Dom.setXY(el,Y.Dom.getXY(el));}=0A=
start=3Dthis.getAttribute('points');if(isset(attributes['points']['to']))=
{end=3DtranslateValues.call(this,attributes['points']['to'],start);var =
pageXY=3DY.Dom.getXY(this.getEl());for(i=3D0,len=3Dcontrol.length;i<len;+=
+i){control[i]=3DtranslateValues.call(this,control[i],start);}}else =
if(isset(attributes['points']['by'])){end=3D[start[0]+attributes['points'=
]['by'][0],start[1]+attributes['points']['by'][1]];for(i=3D0,len=3Dcontro=
l.length;i<len;++i){control[i]=3D[start[0]+control[i][0],start[1]+control=
[i][1]];}}=0A=
this.runtimeAttributes[attr]=3D[start];if(control.length>0){this.runtimeA=
ttributes[attr]=3Dthis.runtimeAttributes[attr].concat(control);}=0A=
this.runtimeAttributes[attr][this.runtimeAttributes[attr].length]=3Dend;}=0A=
else{superclass.setRuntimeAttribute.call(this,attr);}};var =
translateValues=3Dfunction(val,start){var =
pageXY=3DY.Dom.getXY(this.getEl());val=3D[val[0]-pageXY[0]+start[0],val[1=
]-pageXY[1]+start[1]];return val;};var =
isset=3Dfunction(prop){return(typeof =
prop!=3D=3D'undefined');};})();(function(){YAHOO.util.Scroll=3Dfunction(e=
l,attributes,duration,method){if(el){YAHOO.util.Scroll.superclass.constru=
ctor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.=
Scroll,YAHOO.util.ColorAnim);var Y=3DYAHOO.util;var =
superclass=3DY.Scroll.superclass;var =
proto=3DY.Scroll.prototype;proto.toString=3Dfunction(){var =
el=3Dthis.getEl();var id=3Del.id||el.tagName;return("Scroll =
"+id);};proto.doMethod=3Dfunction(attr,start,end){var =
val=3Dnull;if(attr=3D=3D'scroll'){val=3D[this.method(this.currentFrame,st=
art[0],end[0]-start[0],this.totalFrames),this.method(this.currentFrame,st=
art[1],end[1]-start[1],this.totalFrames)];}else{val=3Dsuperclass.doMethod=
.call(this,attr,start,end);}=0A=
return val;};proto.getAttribute=3Dfunction(attr){var val=3Dnull;var =
el=3Dthis.getEl();if(attr=3D=3D'scroll'){val=3D[el.scrollLeft,el.scrollTo=
p];}else{val=3Dsuperclass.getAttribute.call(this,attr);}=0A=
return val;};proto.setAttribute=3Dfunction(attr,val,unit){var =
el=3Dthis.getEl();if(attr=3D=3D'scroll'){el.scrollLeft=3Dval[0];el.scroll=
Top=3Dval[1];}else{superclass.setAttribute.call(this,attr,val,unit);}};})=
();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.2.0",build:"127=
"});=0A=
if(!YAHOO.util.DragDropMgr){YAHOO.util.DragDropMgr=3Dfunction(){var =
Event=3DYAHOO.util.Event;return{ids:{},handleIds:{},dragCurrent:null,drag=
Overs:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,inita=
lized:false,locked:false,init:function(){this.initialized=3Dtrue;},POINT:=
0,INTERSECT:1,STRICT_INTERSECT:2,mode:0,_execOnAll:function(sMethod,args)=
{for(var i in this.ids){for(var j in this.ids[i]){var =
oDD=3Dthis.ids[i][j];if(!this.isTypeOfDD(oDD)){continue;}=0A=
oDD[sMethod].apply(oDD,args);}}},_onLoad:function(){this.init();Event.on(=
document,"mouseup",this.handleMouseUp,this,true);Event.on(document,"mouse=
move",this.handleMouseMove,this,true);Event.on(window,"unload",this._onUn=
load,this,true);Event.on(window,"resize",this._onResize,this,true);},_onR=
esize:function(e){this._execOnAll("resetConstraints",[]);},lock:function(=
){this.locked=3Dtrue;},unlock:function(){this.locked=3Dfalse;},isLocked:f=
unction(){return =
this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTime=
Thresh:1000,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDr=
agDrop:function(oDD,sGroup){if(!this.initialized){this.init();}=0A=
if(!this.ids[sGroup]){this.ids[sGroup]=3D{};}=0A=
this.ids[sGroup][oDD.id]=3DoDD;},removeDDFromGroup:function(oDD,sGroup){i=
f(!this.ids[sGroup]){this.ids[sGroup]=3D{};}=0A=
var obj=3Dthis.ids[sGroup];if(obj&&obj[oDD.id]){delete =
obj[oDD.id];}},_remove:function(oDD){for(var g in =
oDD.groups){if(g&&this.ids[g][oDD.id]){delete this.ids[g][oDD.id];}}=0A=
delete =
this.handleIds[oDD.id];},regHandle:function(sDDId,sHandleId){if(!this.han=
dleIds[sDDId]){this.handleIds[sDDId]=3D{};}=0A=
this.handleIds[sDDId][sHandleId]=3DsHandleId;},isDragDrop:function(id){re=
turn(this.getDDById(id))?true:false;},getRelated:function(p_oDD,bTargetsO=
nly){var oDDs=3D[];for(var i in p_oDD.groups){for(j in this.ids[i]){var =
dd=3Dthis.ids[i][j];if(!this.isTypeOfDD(dd)){continue;}=0A=
if(!bTargetsOnly||dd.isTarget){oDDs[oDDs.length]=3Ddd;}}}=0A=
return oDDs;},isLegalTarget:function(oDD,oTargetDD){var =
targets=3Dthis.getRelated(oDD,true);for(var =
i=3D0,len=3Dtargets.length;i<len;++i){if(targets[i].id=3D=3DoTargetDD.id)=
{return true;}}=0A=
return =
false;},isTypeOfDD:function(oDD){return(oDD&&oDD.__ygDragDrop);},isHandle=
:function(sDDId,sHandleId){return(this.handleIds[sDDId]&&this.handleIds[s=
DDId][sHandleId]);},getDDById:function(id){for(var i in =
this.ids){if(this.ids[i][id]){return this.ids[i][id];}}=0A=
return =
null;},handleMouseDown:function(e,oDD){this.currentTarget=3DYAHOO.util.Ev=
ent.getTarget(e);this.dragCurrent=3DoDD;var =
el=3DoDD.getEl();this.startX=3DYAHOO.util.Event.getPageX(e);this.startY=3D=
YAHOO.util.Event.getPageY(e);this.deltaX=3Dthis.startX-el.offsetLeft;this=
.deltaY=3Dthis.startY-el.offsetTop;this.dragThreshMet=3Dfalse;this.clickT=
imeout=3DsetTimeout(function(){var =
DDM=3DYAHOO.util.DDM;DDM.startDrag(DDM.startX,DDM.startY);},this.clickTim=
eThresh);},startDrag:function(x,y){clearTimeout(this.clickTimeout);if(thi=
s.dragCurrent){this.dragCurrent.b4StartDrag(x,y);this.dragCurrent.startDr=
ag(x,y);}=0A=
this.dragThreshMet=3Dtrue;},handleMouseUp:function(e){if(!this.dragCurren=
t){return;}=0A=
clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(e,=
true);}else{}=0A=
this.stopDrag(e);this.stopEvent(e);},stopEvent:function(e){if(this.stopPr=
opagation){YAHOO.util.Event.stopPropagation(e);}=0A=
if(this.preventDefault){YAHOO.util.Event.preventDefault(e);}},stopDrag:fu=
nction(e){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4=
EndDrag(e);this.dragCurrent.endDrag(e);}=0A=
this.dragCurrent.onMouseUp(e);}=0A=
this.dragCurrent=3Dnull;this.dragOvers=3D{};},handleMouseMove:function(e)=
{if(!this.dragCurrent){return true;}=0A=
if(YAHOO.util.Event.isIE&&!e.button){this.stopEvent(e);return =
this.handleMouseUp(e);}=0A=
if(!this.dragThreshMet){var =
diffX=3DMath.abs(this.startX-YAHOO.util.Event.getPageX(e));var =
diffY=3DMath.abs(this.startY-YAHOO.util.Event.getPageY(e));if(diffX>this.=
clickPixelThresh||diffY>this.clickPixelThresh){this.startDrag(this.startX=
,this.startY);}}=0A=
if(this.dragThreshMet){this.dragCurrent.b4Drag(e);this.dragCurrent.onDrag=
(e);this.fireEvents(e,false);}=0A=
this.stopEvent(e);return true;},fireEvents:function(e,isDrop){var =
dc=3Dthis.dragCurrent;if(!dc||dc.isLocked()){return;}=0A=
var x=3DYAHOO.util.Event.getPageX(e);var =
y=3DYAHOO.util.Event.getPageY(e);var pt=3Dnew YAHOO.util.Point(x,y);var =
oldOvers=3D[];var outEvts=3D[];var overEvts=3D[];var dropEvts=3D[];var =
enterEvts=3D[];for(var i in this.dragOvers){var =
ddo=3Dthis.dragOvers[i];if(!this.isTypeOfDD(ddo)){continue;}=0A=
if(!this.isOverTarget(pt,ddo,this.mode)){outEvts.push(ddo);}=0A=
oldOvers[i]=3Dtrue;delete this.dragOvers[i];}=0A=
for(var sGroup in dc.groups){if("string"!=3Dtypeof sGroup){continue;}=0A=
for(i in this.ids[sGroup]){var =
oDD=3Dthis.ids[sGroup][i];if(!this.isTypeOfDD(oDD)){continue;}=0A=
if(oDD.isTarget&&!oDD.isLocked()&&oDD!=3Ddc){if(this.isOverTarget(pt,oDD,=
this.mode)){if(isDrop){dropEvts.push(oDD);}else{if(!oldOvers[oDD.id]){ent=
erEvts.push(oDD);}else{overEvts.push(oDD);}=0A=
this.dragOvers[oDD.id]=3DoDD;}}}}}=0A=
if(this.mode){if(outEvts.length){dc.b4DragOut(e,outEvts);dc.onDragOut(e,o=
utEvts);}=0A=
if(enterEvts.length){dc.onDragEnter(e,enterEvts);}=0A=
if(overEvts.length){dc.b4DragOver(e,overEvts);dc.onDragOver(e,overEvts);}=0A=
if(dropEvts.length){dc.b4DragDrop(e,dropEvts);dc.onDragDrop(e,dropEvts);}=
}else{var =
len=3D0;for(i=3D0,len=3DoutEvts.length;i<len;++i){dc.b4DragOut(e,outEvts[=
i].id);dc.onDragOut(e,outEvts[i].id);}=0A=
for(i=3D0,len=3DenterEvts.length;i<len;++i){dc.onDragEnter(e,enterEvts[i]=
.id);}=0A=
for(i=3D0,len=3DoverEvts.length;i<len;++i){dc.b4DragOver(e,overEvts[i].id=
);dc.onDragOver(e,overEvts[i].id);}=0A=
for(i=3D0,len=3DdropEvts.length;i<len;++i){dc.b4DragDrop(e,dropEvts[i].id=
);dc.onDragDrop(e,dropEvts[i].id);}}=0A=
if(isDrop&&!dropEvts.length){dc.onInvalidDrop(e);}},getBestMatch:function=
(dds){var winner=3Dnull;var =
len=3Ddds.length;if(len=3D=3D1){winner=3Ddds[0];}else{for(var =
i=3D0;i<len;++i){var =
dd=3Ddds[i];if(this.mode=3D=3Dthis.INTERSECT&&dd.cursorIsOver){winner=3Dd=
d;break;}else{if(!winner||!winner.overlap||(dd.overlap&&winner.overlap.ge=
tArea()<dd.overlap.getArea())){winner=3Ddd;}}}}=0A=
return winner;},refreshCache:function(groups){var =
g=3Dgroups||this.ids;for(var sGroup in g){if("string"!=3Dtypeof =
sGroup){continue;}=0A=
for(var i in this.ids[sGroup]){var =
oDD=3Dthis.ids[sGroup][i];if(this.isTypeOfDD(oDD)){var =
loc=3Dthis.getLocation(oDD);if(loc){this.locationCache[oDD.id]=3Dloc;}els=
e{delete =
this.locationCache[oDD.id];}}}}},verifyEl:function(el){try{if(el){var =
parent=3Del.offsetParent;if(parent){return true;}}}catch(e){}=0A=
return =
false;},getLocation:function(oDD){if(!this.isTypeOfDD(oDD)){return null;}=0A=
var =
el=3DoDD.getEl(),pos,x1,x2,y1,y2,t,r,b,l;try{pos=3DYAHOO.util.Dom.getXY(e=
l);}catch(e){}=0A=
if(!pos){return null;}=0A=
x1=3Dpos[0];x2=3Dx1+el.offsetWidth;y1=3Dpos[1];y2=3Dy1+el.offsetHeight;t=3D=
y1-oDD.padding[0];r=3Dx2+oDD.padding[1];b=3Dy2+oDD.padding[2];l=3Dx1-oDD.=
padding[3];return new =
YAHOO.util.Region(t,r,b,l);},isOverTarget:function(pt,oTarget,intersect){=
var =
loc=3Dthis.locationCache[oTarget.id];if(!loc||!this.useCache){loc=3Dthis.=
getLocation(oTarget);this.locationCache[oTarget.id]=3Dloc;}=0A=
if(!loc){return false;}=0A=
oTarget.cursorIsOver=3Dloc.contains(pt);var =
dc=3Dthis.dragCurrent;if(!dc||!dc.getTargetCoord||(!intersect&&!dc.constr=
ainX&&!dc.constrainY)){return oTarget.cursorIsOver;}=0A=
oTarget.overlap=3Dnull;var pos=3Ddc.getTargetCoord(pt.x,pt.y);var =
el=3Ddc.getDragEl();var curRegion=3Dnew =
YAHOO.util.Region(pos.y,pos.x+el.offsetWidth,pos.y+el.offsetHeight,pos.x)=
;var =
overlap=3DcurRegion.intersect(loc);if(overlap){oTarget.overlap=3Doverlap;=
return(intersect)?true:oTarget.cursorIsOver;}else{return =
false;}},_onUnload:function(e,me){this.unregAll();},unregAll:function(){i=
f(this.dragCurrent){this.stopDrag();this.dragCurrent=3Dnull;}=0A=
this._execOnAll("unreg",[]);for(i in this.elementCache){delete =
this.elementCache[i];}=0A=
this.elementCache=3D{};this.ids=3D{};},elementCache:{},getElWrapper:funct=
ion(id){var =
oWrapper=3Dthis.elementCache[id];if(!oWrapper||!oWrapper.el){oWrapper=3Dt=
his.elementCache[id]=3Dnew this.ElementWrapper(YAHOO.util.Dom.get(id));}=0A=
return oWrapper;},getElement:function(id){return =
YAHOO.util.Dom.get(id);},getCss:function(id){var =
el=3DYAHOO.util.Dom.get(id);return(el)?el.style:null;},ElementWrapper:fun=
ction(el){this.el=3Del||null;this.id=3Dthis.el&&el.id;this.css=3Dthis.el&=
&el.style;},getPosX:function(el){return =
YAHOO.util.Dom.getX(el);},getPosY:function(el){return =
YAHOO.util.Dom.getY(el);},swapNode:function(n1,n2){if(n1.swapNode){n1.swa=
pNode(n2);}else{var p=3Dn2.parentNode;var =
s=3Dn2.nextSibling;if(s=3D=3Dn1){p.insertBefore(n1,n2);}else =
if(n2=3D=3Dn1.nextSibling){p.insertBefore(n2,n1);}else{n1.parentNode.repl=
aceChild(n2,n1);p.insertBefore(n1,s);}}},getScroll:function(){var =
t,l,dde=3Ddocument.documentElement,db=3Ddocument.body;if(dde&&(dde.scroll=
Top||dde.scrollLeft)){t=3Ddde.scrollTop;l=3Ddde.scrollLeft;}else =
if(db){t=3Ddb.scrollTop;l=3Ddb.scrollLeft;}else{}=0A=
return{top:t,left:l};},getStyle:function(el,styleProp){return =
YAHOO.util.Dom.getStyle(el,styleProp);},getScrollTop:function(){return =
this.getScroll().top;},getScrollLeft:function(){return =
this.getScroll().left;},moveToEl:function(moveEl,targetEl){var =
aCoord=3DYAHOO.util.Dom.getXY(targetEl);YAHOO.util.Dom.setXY(moveEl,aCoor=
d);},getClientHeight:function(){return =
YAHOO.util.Dom.getViewportHeight();},getClientWidth:function(){return =
YAHOO.util.Dom.getViewportWidth();},numericSort:function(a,b){return(a-b)=
;},_timeoutCount:0,_addListeners:function(){var =
DDM=3DYAHOO.util.DDM;if(YAHOO.util.Event&&document){DDM._onLoad();}else{i=
f(DDM._timeoutCount>2000){}else{setTimeout(DDM._addListeners,10);if(docum=
ent&&document.body){DDM._timeoutCount+=3D1;}}}},handleWasClicked:function=
(node,id){if(this.isHandle(id,node.id)){return true;}else{var =
p=3Dnode.parentNode;while(p){if(this.isHandle(id,p.id)){return =
true;}else{p=3Dp.parentNode;}}}=0A=
return =
false;}};}();YAHOO.util.DDM=3DYAHOO.util.DragDropMgr;YAHOO.util.DDM._addL=
isteners();}=0A=
(function(){var Event=3DYAHOO.util.Event;var =
Dom=3DYAHOO.util.Dom;YAHOO.util.DragDrop=3Dfunction(id,sGroup,config){if(=
id){this.init(id,sGroup,config);}};YAHOO.util.DragDrop.prototype=3D{id:nu=
ll,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,inva=
lidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,gro=
ups:null,locked:false,lock:function(){this.locked=3Dtrue;},unlock:functio=
n(){this.locked=3Dfalse;},isTarget:true,padding:null,_domRef:null,__ygDra=
gDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,=
maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,avail=
able:false,hasOuterHandles:false,b4StartDrag:function(x,y){},startDrag:fu=
nction(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:funct=
ion(e,id){},b4DragOver:function(e){},onDragOver:function(e,id){},b4DragOu=
t:function(e){},onDragOut:function(e,id){},b4DragDrop:function(e){},onDra=
gDrop:function(e,id){},onInvalidDrop:function(e){},b4EndDrag:function(e){=
},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e)=
{},onMouseUp:function(e){},onAvailable:function(){},getEl:function(){if(!=
this._domRef){this._domRef=3DDom.get(this.id);}=0A=
return this._domRef;},getDragEl:function(){return =
Dom.get(this.dragElId);},init:function(id,sGroup,config){this.initTarget(=
id,sGroup,config);Event.on(this.id,"mousedown",this.handleMouseDown,this,=
true);},initTarget:function(id,sGroup,config){this.config=3Dconfig||{};th=
is.DDM=3DYAHOO.util.DDM;this.groups=3D{};if(typeof =
id!=3D=3D"string"){id=3DDom.generateId(id);}=0A=
this.id=3Did;this.addToGroup((sGroup)?sGroup:"default");this.handleElId=3D=
id;Event.onAvailable(id,this.handleOnAvailable,this,true);this.setDragElI=
d(id);this.invalidHandleTypes=3D{A:"A"};this.invalidHandleIds=3D{};this.i=
nvalidHandleClasses=3D[];this.applyConfig();},applyConfig:function(){this=
.padding=3Dthis.config.padding||[0,0,0,0];this.isTarget=3D(this.config.is=
Target!=3D=3Dfalse);this.maintainOffset=3D(this.config.maintainOffset);th=
is.primaryButtonOnly=3D(this.config.primaryButtonOnly!=3D=3Dfalse);},hand=
leOnAvailable:function(){this.available=3Dtrue;this.resetConstraints();th=
is.onAvailable();},setPadding:function(iTop,iRight,iBot,iLeft){if(!iRight=
&&0!=3D=3DiRight){this.padding=3D[iTop,iTop,iTop,iTop];}else =
if(!iBot&&0!=3D=3DiBot){this.padding=3D[iTop,iRight,iTop,iRight];}else{th=
is.padding=3D[iTop,iRight,iBot,iLeft];}},setInitPosition:function(diffX,d=
iffY){var el=3Dthis.getEl();if(!this.DDM.verifyEl(el)){return;}=0A=
var dx=3DdiffX||0;var dy=3DdiffY||0;var =
p=3DDom.getXY(el);this.initPageX=3Dp[0]-dx;this.initPageY=3Dp[1]-dy;this.=
lastPageX=3Dp[0];this.lastPageY=3Dp[1];this.setStartPosition(p);},setStar=
tPosition:function(pos){var =
p=3Dpos||Dom.getXY(this.getEl());this.deltaSetXY=3Dnull;this.startPageX=3D=
p[0];this.startPageY=3Dp[1];},addToGroup:function(sGroup){this.groups[sGr=
oup]=3Dtrue;this.DDM.regDragDrop(this,sGroup);},removeFromGroup:function(=
sGroup){if(this.groups[sGroup]){delete this.groups[sGroup];}=0A=
this.DDM.removeDDFromGroup(this,sGroup);},setDragElId:function(id){this.d=
ragElId=3Did;},setHandleElId:function(id){if(typeof =
id!=3D=3D"string"){id=3DDom.generateId(id);}=0A=
this.handleElId=3Did;this.DDM.regHandle(this.id,id);},setOuterHandleElId:=
function(id){if(typeof id!=3D=3D"string"){id=3DDom.generateId(id);}=0A=
Event.on(id,"mousedown",this.handleMouseDown,this,true);this.setHandleElI=
d(id);this.hasOuterHandles=3Dtrue;},unreg:function(){Event.removeListener=
(this.id,"mousedown",this.handleMouseDown);this._domRef=3Dnull;this.DDM._=
remove(this);},isLocked:function(){return(this.DDM.isLocked()||this.locke=
d);},handleMouseDown:function(e,oDD){var =
button=3De.which||e.button;if(this.primaryButtonOnly&&button>1){return;}=0A=
if(this.isLocked()){return;}=0A=
this.b4MouseDown(e);this.onMouseDown(e);this.DDM.refreshCache(this.groups=
);var pt=3Dnew =
YAHOO.util.Point(Event.getPageX(e),Event.getPageY(e));if(!this.hasOuterHa=
ndles&&!this.DDM.isOverTarget(pt,this)){}else{if(this.clickValidator(e)){=
this.setStartPosition();this.DDM.handleMouseDown(e,this);this.DDM.stopEve=
nt(e);}else{}}},clickValidator:function(e){var =
target=3DEvent.getTarget(e);return(this.isValidHandleChild(target)&&(this=
.id=3D=3Dthis.handleElId||this.DDM.handleWasClicked(target,this.id)));},a=
ddInvalidHandleType:function(tagName){var =
type=3DtagName.toUpperCase();this.invalidHandleTypes[type]=3Dtype;},addIn=
validHandleId:function(id){if(typeof =
id!=3D=3D"string"){id=3DDom.generateId(id);}=0A=
this.invalidHandleIds[id]=3Did;},addInvalidHandleClass:function(cssClass)=
{this.invalidHandleClasses.push(cssClass);},removeInvalidHandleType:funct=
ion(tagName){var type=3DtagName.toUpperCase();delete =
this.invalidHandleTypes[type];},removeInvalidHandleId:function(id){if(typ=
eof id!=3D=3D"string"){id=3DDom.generateId(id);}=0A=
delete =
this.invalidHandleIds[id];},removeInvalidHandleClass:function(cssClass){f=
or(var =
i=3D0,len=3Dthis.invalidHandleClasses.length;i<len;++i){if(this.invalidHa=
ndleClasses[i]=3D=3DcssClass){delete =
this.invalidHandleClasses[i];}}},isValidHandleChild:function(node){var =
valid=3Dtrue;var =
nodeName;try{nodeName=3Dnode.nodeName.toUpperCase();}catch(e){nodeName=3D=
node.nodeName;}=0A=
valid=3Dvalid&&!this.invalidHandleTypes[nodeName];valid=3Dvalid&&!this.in=
validHandleIds[node.id];for(var =
i=3D0,len=3Dthis.invalidHandleClasses.length;valid&&i<len;++i){valid=3D!D=
om.hasClass(node,this.invalidHandleClasses[i]);}=0A=
return =
valid;},setXTicks:function(iStartX,iTickSize){this.xTicks=3D[];this.xTick=
Size=3DiTickSize;var tickMap=3D{};for(var =
i=3Dthis.initPageX;i>=3Dthis.minX;i=3Di-iTickSize){if(!tickMap[i]){this.x=
Ticks[this.xTicks.length]=3Di;tickMap[i]=3Dtrue;}}=0A=
for(i=3Dthis.initPageX;i<=3Dthis.maxX;i=3Di+iTickSize){if(!tickMap[i]){th=
is.xTicks[this.xTicks.length]=3Di;tickMap[i]=3Dtrue;}}=0A=
this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(iStartY,iTick=
Size){this.yTicks=3D[];this.yTickSize=3DiTickSize;var =
tickMap=3D{};for(var =
i=3Dthis.initPageY;i>=3Dthis.minY;i=3Di-iTickSize){if(!tickMap[i]){this.y=
Ticks[this.yTicks.length]=3Di;tickMap[i]=3Dtrue;}}=0A=
for(i=3Dthis.initPageY;i<=3Dthis.maxY;i=3Di+iTickSize){if(!tickMap[i]){th=
is.yTicks[this.yTicks.length]=3Di;tickMap[i]=3Dtrue;}}=0A=
this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(iLeft,iR=
ight,iTickSize){this.leftConstraint=3DparseInt(iLeft,10);this.rightConstr=
aint=3DparseInt(iRight,10);this.minX=3Dthis.initPageX-this.leftConstraint=
;this.maxX=3Dthis.initPageX+this.rightConstraint;if(iTickSize){this.setXT=
icks(this.initPageX,iTickSize);}=0A=
this.constrainX=3Dtrue;},clearConstraints:function(){this.constrainX=3Dfa=
lse;this.constrainY=3Dfalse;this.clearTicks();},clearTicks:function(){thi=
s.xTicks=3Dnull;this.yTicks=3Dnull;this.xTickSize=3D0;this.yTickSize=3D0;=
},setYConstraint:function(iUp,iDown,iTickSize){this.topConstraint=3Dparse=
Int(iUp,10);this.bottomConstraint=3DparseInt(iDown,10);this.minY=3Dthis.i=
nitPageY-this.topConstraint;this.maxY=3Dthis.initPageY+this.bottomConstra=
int;if(iTickSize){this.setYTicks(this.initPageY,iTickSize);}=0A=
this.constrainY=3Dtrue;},resetConstraints:function(){if(this.initPageX||t=
his.initPageX=3D=3D=3D0){var =
dx=3D(this.maintainOffset)?this.lastPageX-this.initPageX:0;var =
dy=3D(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPo=
sition(dx,dy);}else{this.setInitPosition();}=0A=
if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightCon=
straint,this.xTickSize);}=0A=
if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomCon=
straint,this.yTickSize);}},getTick:function(val,tickArray){if(!tickArray)=
{return val;}else if(tickArray[0]>=3Dval){return =
tickArray[0];}else{for(var i=3D0,len=3DtickArray.length;i<len;++i){var =
next=3Di+1;if(tickArray[next]&&tickArray[next]>=3Dval){var =
diff1=3Dval-tickArray[i];var =
diff2=3DtickArray[next]-val;return(diff2>diff1)?tickArray[i]:tickArray[ne=
xt];}}=0A=
return =
tickArray[tickArray.length-1];}},toString:function(){return("DragDrop =
"+this.id);}};})();YAHOO.util.DD=3Dfunction(id,sGroup,config){if(id){this=
.init(id,sGroup,config);}};YAHOO.extend(YAHOO.util.DD,YAHOO.util.DragDrop=
,{scroll:true,autoOffset:function(iPageX,iPageY){var =
x=3DiPageX-this.startPageX;var =
y=3DiPageY-this.startPageY;this.setDelta(x,y);},setDelta:function(iDeltaX=
,iDeltaY){this.deltaX=3DiDeltaX;this.deltaY=3DiDeltaY;},setDragElPos:func=
tion(iPageX,iPageY){var =
el=3Dthis.getDragEl();this.alignElWithMouse(el,iPageX,iPageY);},alignElWi=
thMouse:function(el,iPageX,iPageY){var =
oCoord=3Dthis.getTargetCoord(iPageX,iPageY);if(!this.deltaSetXY){var =
aCoord=3D[oCoord.x,oCoord.y];YAHOO.util.Dom.setXY(el,aCoord);var =
newLeft=3DparseInt(YAHOO.util.Dom.getStyle(el,"left"),10);var =
newTop=3DparseInt(YAHOO.util.Dom.getStyle(el,"top"),10);this.deltaSetXY=3D=
[newLeft-oCoord.x,newTop-oCoord.y];}else{YAHOO.util.Dom.setStyle(el,"left=
",(oCoord.x+this.deltaSetXY[0])+"px");YAHOO.util.Dom.setStyle(el,"top",(o=
Coord.y+this.deltaSetXY[1])+"px");}=0A=
this.cachePosition(oCoord.x,oCoord.y);this.autoScroll(oCoord.x,oCoord.y,e=
l.offsetHeight,el.offsetWidth);},cachePosition:function(iPageX,iPageY){if=
(iPageX){this.lastPageX=3DiPageX;this.lastPageY=3DiPageY;}else{var =
aCoord=3DYAHOO.util.Dom.getXY(this.getEl());this.lastPageX=3DaCoord[0];th=
is.lastPageY=3DaCoord[1];}},autoScroll:function(x,y,h,w){if(this.scroll){=
var clientH=3Dthis.DDM.getClientHeight();var =
clientW=3Dthis.DDM.getClientWidth();var st=3Dthis.DDM.getScrollTop();var =
sl=3Dthis.DDM.getScrollLeft();var bot=3Dh+y;var right=3Dw+x;var =
toBot=3D(clientH+st-y-this.deltaY);var =
toRight=3D(clientW+sl-x-this.deltaX);var thresh=3D40;var =
scrAmt=3D(document.all)?80:30;if(bot>clientH&&toBot<thresh){window.scroll=
To(sl,st+scrAmt);}=0A=
if(y<st&&st>0&&y-st<thresh){window.scrollTo(sl,st-scrAmt);}=0A=
if(right>clientW&&toRight<thresh){window.scrollTo(sl+scrAmt,st);}=0A=
if(x<sl&&sl>0&&x-sl<thresh){window.scrollTo(sl-scrAmt,st);}}},getTargetCo=
ord:function(iPageX,iPageY){var x=3DiPageX-this.deltaX;var =
y=3DiPageY-this.deltaY;if(this.constrainX){if(x<this.minX){x=3Dthis.minX;=
}=0A=
if(x>this.maxX){x=3Dthis.maxX;}}=0A=
if(this.constrainY){if(y<this.minY){y=3Dthis.minY;}=0A=
if(y>this.maxY){y=3Dthis.maxY;}}=0A=
x=3Dthis.getTick(x,this.xTicks);y=3Dthis.getTick(y,this.yTicks);return{x:=
x,y:y};},applyConfig:function(){YAHOO.util.DD.superclass.applyConfig.call=
(this);this.scroll=3D(this.config.scroll!=3D=3Dfalse);},b4MouseDown:funct=
ion(e){this.setStartPosition();this.autoOffset(YAHOO.util.Event.getPageX(=
e),YAHOO.util.Event.getPageY(e));},b4Drag:function(e){this.setDragElPos(Y=
AHOO.util.Event.getPageX(e),YAHOO.util.Event.getPageY(e));},toString:func=
tion(){return("DD =
"+this.id);}});YAHOO.util.DDProxy=3Dfunction(id,sGroup,config){if(id){thi=
s.init(id,sGroup,config);this.initFrame();}};YAHOO.util.DDProxy.dragElId=3D=
"ygddfdiv";YAHOO.extend(YAHOO.util.DDProxy,YAHOO.util.DD,{resizeFrame:tru=
e,centerFrame:false,createFrame:function(){var self=3Dthis;var =
body=3Ddocument.body;if(!body||!body.firstChild){setTimeout(function(){se=
lf.createFrame();},50);return;}=0A=
var =
div=3Dthis.getDragEl();if(!div){div=3Ddocument.createElement("div");div.i=
d=3Dthis.dragElId;var =
s=3Ddiv.style;s.position=3D"absolute";s.visibility=3D"hidden";s.cursor=3D=
"move";s.border=3D"2px solid =
#aaa";s.zIndex=3D999;body.insertBefore(div,body.firstChild);}},initFrame:=
function(){this.createFrame();},applyConfig:function(){YAHOO.util.DDProxy=
.superclass.applyConfig.call(this);this.resizeFrame=3D(this.config.resize=
Frame!=3D=3Dfalse);this.centerFrame=3D(this.config.centerFrame);this.setD=
ragElId(this.config.dragElId||YAHOO.util.DDProxy.dragElId);},showFrame:fu=
nction(iPageX,iPageY){var el=3Dthis.getEl();var =
dragEl=3Dthis.getDragEl();var =
s=3DdragEl.style;this._resizeProxy();if(this.centerFrame){this.setDelta(M=
ath.round(parseInt(s.width,10)/2),Math.round(parseInt(s.height,10)/2));}=0A=
this.setDragElPos(iPageX,iPageY);YAHOO.util.Dom.setStyle(dragEl,"visibili=
ty","visible");},_resizeProxy:function(){if(this.resizeFrame){var =
DOM=3DYAHOO.util.Dom;var el=3Dthis.getEl();var =
dragEl=3Dthis.getDragEl();var =
bt=3DparseInt(DOM.getStyle(dragEl,"borderTopWidth"),10);var =
br=3DparseInt(DOM.getStyle(dragEl,"borderRightWidth"),10);var =
bb=3DparseInt(DOM.getStyle(dragEl,"borderBottomWidth"),10);var =
bl=3DparseInt(DOM.getStyle(dragEl,"borderLeftWidth"),10);if(isNaN(bt)){bt=
=3D0;}=0A=
if(isNaN(br)){br=3D0;}=0A=
if(isNaN(bb)){bb=3D0;}=0A=
if(isNaN(bl)){bl=3D0;}=0A=
var newWidth=3DMath.max(0,el.offsetWidth-br-bl);var =
newHeight=3DMath.max(0,el.offsetHeight-bt-bb);DOM.setStyle(dragEl,"width"=
,newWidth+"px");DOM.setStyle(dragEl,"height",newHeight+"px");}},b4MouseDo=
wn:function(e){this.setStartPosition();var =
x=3DYAHOO.util.Event.getPageX(e);var =
y=3DYAHOO.util.Event.getPageY(e);this.autoOffset(x,y);this.setDragElPos(x=
,y);},b4StartDrag:function(x,y){this.showFrame(x,y);},b4EndDrag:function(=
e){YAHOO.util.Dom.setStyle(this.getDragEl(),"visibility","hidden");},endD=
rag:function(e){var DOM=3DYAHOO.util.Dom;var lel=3Dthis.getEl();var =
del=3Dthis.getDragEl();DOM.setStyle(del,"visibility","");DOM.setStyle(lel=
,"visibility","hidden");YAHOO.util.DDM.moveToEl(lel,del);DOM.setStyle(del=
,"visibility","hidden");DOM.setStyle(lel,"visibility","");},toString:func=
tion(){return("DDProxy =
"+this.id);}});YAHOO.util.DDTarget=3Dfunction(id,sGroup,config){if(id){th=
is.initTarget(id,sGroup,config);}};YAHOO.extend(YAHOO.util.DDTarget,YAHOO=
.util.DragDrop,{toString:function(){return("DDTarget =
"+this.id);}});YAHOO.register("dragdrop",YAHOO.util.DragDropMgr,{version:=
"2.2.0",build:"127"});=0A=
YAHOO.util.Attribute=3Dfunction(hash,owner){if(owner){this.owner=3Downer;=
this.configure(hash,true);}};YAHOO.util.Attribute.prototype=3D{name:undef=
ined,value:null,owner:null,readOnly:false,writeOnce:false,_initialConfig:=
null,_written:false,method:null,validator:null,getValue:function(){return=
 this.value;},setValue:function(value,silent){var beforeRetVal;var =
owner=3Dthis.owner;var name=3Dthis.name;var =
event=3D{type:name,prevValue:this.getValue(),newValue:value};if(this.read=
Only||(this.writeOnce&&this._written)){return false;}=0A=
if(this.validator&&!this.validator.call(owner,value)){return false;}=0A=
if(!silent){beforeRetVal=3Downer.fireBeforeChangeEvent(event);if(beforeRe=
tVal=3D=3D=3Dfalse){return false;}}=0A=
if(this.method){this.method.call(owner,value);}=0A=
this.value=3Dvalue;this._written=3Dtrue;event.type=3Dname;if(!silent){thi=
s.owner.fireChangeEvent(event);}=0A=
return =
true;},configure:function(map,init){map=3Dmap||{};this._written=3Dfalse;t=
his._initialConfig=3Dthis._initialConfig||{};for(var key in =
map){if(key&&YAHOO.lang.hasOwnProperty(map,key)){this[key]=3Dmap[key];if(=
init){this._initialConfig[key]=3Dmap[key];}}}},resetValue:function(){retu=
rn =
this.setValue(this._initialConfig.value);},resetConfig:function(){this.co=
nfigure(this._initialConfig);},refresh:function(silent){this.setValue(thi=
s.value,silent);}};(function(){var =
Lang=3DYAHOO.util.Lang;YAHOO.util.AttributeProvider=3Dfunction(){};YAHOO.=
util.AttributeProvider.prototype=3D{_configs:null,get:function(key){var =
configs=3Dthis._configs||{};var config=3Dconfigs[key];if(!config){return =
undefined;}=0A=
return config.value;},set:function(key,value,silent){var =
configs=3Dthis._configs||{};var config=3Dconfigs[key];if(!config){return =
false;}=0A=
return config.setValue(value,silent);},getAttributeKeys:function(){var =
configs=3Dthis._configs;var keys=3D[];var config;for(var key in =
configs){config=3Dconfigs[key];if(Lang.hasOwnProperty(configs,key)&&!Lang=
.isUndefined(config)){keys[keys.length]=3Dkey;}}=0A=
return keys;},setAttributes:function(map,silent){for(var key in =
map){if(Lang.hasOwnProperty(map,key)){this.set(key,map[key],silent);}}},r=
esetValue:function(key,silent){var =
configs=3Dthis._configs||{};if(configs[key]){this.set(key,configs[key]._i=
nitialConfig.value,silent);return true;}=0A=
return false;},refresh:function(key,silent){var =
configs=3Dthis._configs;key=3D((Lang.isString(key))?[key]:key)||this.getA=
ttributeKeys();for(var =
i=3D0,len=3Dkey.length;i<len;++i){if(configs[key[i]]&&!Lang.isUndefined(c=
onfigs[key[i]].value)&&!Lang.isNull(configs[key[i]].value)){configs[key[i=
]].refresh(silent);}}},register:function(key,map){this.setAttributeConfig=
(key,map);},getAttributeConfig:function(key){var =
configs=3Dthis._configs||{};var config=3Dconfigs[key]||{};var =
map=3D{};for(key in =
config){if(Lang.hasOwnProperty(config,key)){map[key]=3Dconfig[key];}}=0A=
return map;},setAttributeConfig:function(key,map,init){var =
configs=3Dthis._configs||{};map=3Dmap||{};if(!configs[key]){map.name=3Dke=
y;configs[key]=3Dnew =
YAHOO.util.Attribute(map,this);}else{configs[key].configure(map,init);}},=
configureAttribute:function(key,map,init){this.setAttributeConfig(key,map=
,init);},resetAttributeConfig:function(key){var =
configs=3Dthis._configs||{};configs[key].resetConfig();},fireBeforeChange=
Event:function(e){var =
type=3D'before';type+=3De.type.charAt(0).toUpperCase()+e.type.substr(1)+'=
Change';e.type=3Dtype;return =
this.fireEvent(e.type,e);},fireChangeEvent:function(e){e.type+=3D'Change'=
;return =
this.fireEvent(e.type,e);}};YAHOO.augment(YAHOO.util.AttributeProvider,YA=
HOO.util.EventProvider);})();(function(){var =
Dom=3DYAHOO.util.Dom,EventPublisher=3DYAHOO.util.EventPublisher,Attribute=
Provider=3DYAHOO.util.AttributeProvider;YAHOO.util.Element=3Dfunction(el,=
map){if(arguments.length){this.init(el,map);}};YAHOO.util.Element.prototy=
pe=3D{DOM_EVENTS:null,appendChild:function(child){child=3Dchild.get?child=
.get('element'):child;this.get('element').appendChild(child);},getElement=
sByTagName:function(tag){return =
this.get('element').getElementsByTagName(tag);},hasChildNodes:function(){=
return =
this.get('element').hasChildNodes();},insertBefore:function(element,befor=
e){element=3Delement.get?element.get('element'):element;before=3D(before&=
&before.get)?before.get('element'):before;this.get('element').insertBefor=
e(element,before);},removeChild:function(child){child=3Dchild.get?child.g=
et('element'):child;this.get('element').removeChild(child);return =
true;},replaceChild:function(newNode,oldNode){newNode=3DnewNode.get?newNo=
de.get('element'):newNode;oldNode=3DoldNode.get?oldNode.get('element'):ol=
dNode;return =
this.get('element').replaceChild(newNode,oldNode);},initAttributes:functi=
on(map){map=3Dmap||{};var =
element=3DDom.get(map.element)||null;this.setAttributeConfig('element',{v=
alue:element,readOnly:true});},addListener:function(type,fn,obj,scope){va=
r el=3Dthis.get('element');var =
scope=3Dscope||this;el=3Dthis.get('id')||el;if(!this._events[type]){if(th=
is.DOM_EVENTS[type]){YAHOO.util.Event.addListener(el,type,function(e){if(=
e.srcElement&&!e.target){e.target=3De.srcElement;}=0A=
this.fireEvent(type,e);},obj,scope);}=0A=
this.createEvent(type,this);this._events[type]=3Dtrue;}=0A=
this.subscribe.apply(this,arguments);},on:function(){this.addListener.app=
ly(this,arguments);},removeListener:function(type,fn){this.unsubscribe.ap=
ply(this,arguments);},addClass:function(className){Dom.addClass(this.get(=
'element'),className);},getElementsByClassName:function(className,tag){re=
turn =
Dom.getElementsByClassName(className,tag,this.get('element'));},hasClass:=
function(className){return =
Dom.hasClass(this.get('element'),className);},removeClass:function(classN=
ame){return =
Dom.removeClass(this.get('element'),className);},replaceClass:function(ol=
dClassName,newClassName){return =
Dom.replaceClass(this.get('element'),oldClassName,newClassName);},setStyl=
e:function(property,value){var =
el=3Dthis.get('element');if(!el){this._queue[this._queue.length]=3D['setS=
tyle',arguments];return false;}=0A=
return =
Dom.setStyle(this.get('element'),property,value);},getStyle:function(prop=
erty){return =
Dom.getStyle(this.get('element'),property);},fireQueue:function(){var =
queue=3Dthis._queue;for(var =
i=3D0,len=3Dqueue.length;i<len;++i){this[queue[i][0]].apply(this,queue[i]=
[1]);}},appendTo:function(parent,before){parent=3D(parent.get)?parent.get=
('element'):Dom.get(parent);this.fireEvent('beforeAppendTo',{type:'before=
AppendTo',target:parent});before=3D(before&&before.get)?before.get('eleme=
nt'):Dom.get(before);var =
element=3Dthis.get('element');if(!element){return false;}=0A=
if(!parent){return false;}=0A=
if(element.parent!=3Dparent){if(before){parent.insertBefore(element,befor=
e);}else{parent.appendChild(element);}}=0A=
this.fireEvent('appendTo',{type:'appendTo',target:parent});},get:function=
(key){var configs=3Dthis._configs||{};var =
el=3Dconfigs.element;if(el&&!configs[key]&&!YAHOO.lang.isUndefined(el.val=
ue[key])){return el.value[key];}=0A=
return =
AttributeProvider.prototype.get.call(this,key);},set:function(key,value,s=
ilent){var =
el=3Dthis.get('element');if(!el){this._queue[this._queue.length]=3D['set'=
,arguments];if(this._configs[key]){this._configs[key].value=3Dvalue;}=0A=
return;}=0A=
if(!this._configs[key]&&!YAHOO.lang.isUndefined(el[key])){_registerHTMLAt=
tr.call(this,key);}=0A=
return =
AttributeProvider.prototype.set.apply(this,arguments);},setAttributeConfi=
g:function(key,map,init){var =
el=3Dthis.get('element');if(el&&!this._configs[key]&&!YAHOO.lang.isUndefi=
ned(el[key])){_registerHTMLAttr.call(this,key,map);}else{AttributeProvide=
r.prototype.setAttributeConfig.apply(this,arguments);}},getAttributeKeys:=
function(){var el=3Dthis.get('element');var =
keys=3DAttributeProvider.prototype.getAttributeKeys.call(this);for(var =
key in el){if(!this._configs[key]){keys[key]=3Dkeys[key]||el[key];}}=0A=
return =
keys;},init:function(el,attr){this._queue=3Dthis._queue||[];this._events=3D=
this._events||{};this._configs=3Dthis._configs||{};attr=3Dattr||{};attr.e=
lement=3Dattr.element||el||null;this.DOM_EVENTS=3D{'click':true,'keydown'=
:true,'keypress':true,'keyup':true,'mousedown':true,'mousemove':true,'mou=
seout':true,'mouseover':true,'mouseup':true};var =
readyHandler=3Dfunction(){this.initAttributes(attr);this.setAttributes(at=
tr,true);this.fireQueue();this.fireEvent('contentReady',{type:'contentRea=
dy',target:attr.element});};if(YAHOO.lang.isString(el)){_registerHTMLAttr=
.call(this,'id',{value:el});YAHOO.util.Event.onAvailable(el,function(){at=
tr.element=3DDom.get(el);this.fireEvent('available',{type:'available',tar=
get:attr.element});},this,true);YAHOO.util.Event.onContentReady(el,functi=
on(){readyHandler.call(this);},this,true);}else{readyHandler.call(this);}=
}};var _registerHTMLAttr=3Dfunction(key,map){var =
el=3Dthis.get('element');map=3Dmap||{};map.name=3Dkey;map.method=3Dmap.me=
thod||function(value){el[key]=3Dvalue;};map.value=3Dmap.value||el[key];th=
is._configs[key]=3Dnew =
YAHOO.util.Attribute(map,this);};YAHOO.augment(YAHOO.util.Element,Attribu=
teProvider);})();YAHOO.register("element",YAHOO.util.Element,{version:"2.=
2.0",build:"127"});
------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/yui/build/container/container_core.js

/*=0A=
Copyright (c) 2007, Yahoo! Inc. All rights reserved.=0A=
Code licensed under the BSD License:=0A=
http://developer.yahoo.net/yui/license.txt=0A=
version: 2.2.0=0A=
*/=0A=
/**=0A=
* Config is a utility used within an Object to allow the implementer to =
maintain a list of local configuration properties and listen for changes =
to those properties dynamically using CustomEvent. The initial values =
are also maintained so that the configuration can be reset at any given =
point to its initial state.=0A=
* @namespace YAHOO.util=0A=
* @class Config=0A=
* @constructor=0A=
* @param {Object}	owner	The owner Object to which this Config Object =
belongs=0A=
*/=0A=
YAHOO.util.Config =3D function(owner) {=0A=
	if (owner) {=0A=
		this.init(owner);=0A=
	}=0A=
};=0A=
=0A=
YAHOO.util.Config.prototype =3D {=0A=
	=0A=
	/**=0A=
	* Object reference to the owner of this Config Object=0A=
	* @property owner=0A=
	* @type Object=0A=
	*/=0A=
	owner : null,=0A=
=0A=
	/**=0A=
	* Boolean flag that specifies whether a queue is currently being =
executed=0A=
	* @property queueInProgress=0A=
	* @type Boolean=0A=
	*/=0A=
	queueInProgress : false,=0A=
=0A=
=0A=
	/**=0A=
	* Validates that the value passed in is a Boolean.=0A=
	* @method checkBoolean=0A=
	* @param	{Object}	val	The value to validate=0A=
	* @return	{Boolean}	true, if the value is valid=0A=
	*/	=0A=
	checkBoolean: function(val) {=0A=
		if (typeof val =3D=3D 'boolean') {=0A=
			return true;=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Validates that the value passed in is a number.=0A=
	* @method checkNumber=0A=
	* @param	{Object}	val	The value to validate=0A=
	* @return	{Boolean}	true, if the value is valid=0A=
	*/=0A=
	checkNumber: function(val) {=0A=
		if (isNaN(val)) {=0A=
			return false;=0A=
		} else {=0A=
			return true;=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
=0A=
/**=0A=
* Initializes the configuration Object and all of its local members.=0A=
* @method init=0A=
* @param {Object}	owner	The owner Object to which this Config Object =
belongs=0A=
*/=0A=
YAHOO.util.Config.prototype.init =3D function(owner) {=0A=
=0A=
	this.owner =3D owner;=0A=
=0A=
	/**=0A=
	* Object reference to the owner of this Config Object=0A=
	* @event configChangedEvent=0A=
	*/=0A=
	this.configChangedEvent =3D new YAHOO.util.CustomEvent("configChanged");=0A=
	this.queueInProgress =3D false;=0A=
=0A=
	/* Private Members */=0A=
=0A=
	/**=0A=
	* Maintains the local collection of configuration property objects and =
their specified values=0A=
	* @property config=0A=
	* @private=0A=
	* @type Object=0A=
	*/ =0A=
	var config =3D {};=0A=
=0A=
	/**=0A=
	* Maintains the local collection of configuration property objects as =
they were initially applied.=0A=
	* This object is used when resetting a property.=0A=
	* @property initialConfig=0A=
	* @private=0A=
	* @type Object=0A=
	*/ =0A=
	var initialConfig =3D {};=0A=
=0A=
	/**=0A=
	* Maintains the local, normalized CustomEvent queue=0A=
	* @property eventQueue=0A=
	* @private=0A=
	* @type Object=0A=
	*/ =0A=
	var eventQueue =3D [];=0A=
=0A=
	/**=0A=
	* Fires a configuration property event using the specified value. =0A=
	* @method fireEvent=0A=
	* @private=0A=
	* @param {String}	key			The configuration property's name=0A=
	* @param {value}	Object		The value of the correct type for the property=0A=
	*/ =0A=
	var fireEvent =3D function( key, value ) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D config[key];=0A=
=0A=
		if (typeof property !=3D 'undefined' && property.event) {=0A=
			property.event.fire(value);=0A=
		}	=0A=
	};=0A=
	/* End Private Members */=0A=
=0A=
	/**=0A=
	* Adds a property to the Config Object's private config hash.=0A=
	* @method addProperty=0A=
	* @param {String}	key	The configuration property's name=0A=
	* @param {Object}	propertyObject	The Object containing all of this =
property's arguments=0A=
	*/=0A=
	this.addProperty =3D function( key, propertyObject ) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		config[key] =3D propertyObject;=0A=
=0A=
		propertyObject.event =3D new YAHOO.util.CustomEvent(key);=0A=
		propertyObject.key =3D key;=0A=
=0A=
		if (propertyObject.handler) {=0A=
			propertyObject.event.subscribe(propertyObject.handler, this.owner, =
true);=0A=
		}=0A=
=0A=
		this.setProperty(key, propertyObject.value, true);=0A=
		=0A=
		if (! propertyObject.suppressEvent) {=0A=
			this.queueProperty(key, propertyObject.value);=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Returns a key-value configuration map of the values currently set in =
the Config Object.=0A=
	* @method getConfig=0A=
	* @return {Object} The current config, represented in a key-value map=0A=
	*/=0A=
	this.getConfig =3D function() {=0A=
		var cfg =3D {};=0A=
			=0A=
		for (var prop in config) {=0A=
			var property =3D config[prop];=0A=
			if (typeof property !=3D 'undefined' && property.event) {=0A=
				cfg[prop] =3D property.value;=0A=
			}=0A=
		}=0A=
		=0A=
		return cfg;=0A=
	};=0A=
=0A=
	/**=0A=
	* Returns the value of specified property.=0A=
	* @method getProperty=0A=
	* @param {String} key	The name of the property=0A=
	* @return {Object}		The value of the specified property=0A=
	*/=0A=
	this.getProperty =3D function(key) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D config[key];=0A=
		if (typeof property !=3D 'undefined' && property.event) {=0A=
			return property.value;=0A=
		} else {=0A=
			return undefined;=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Resets the specified property's value to its initial value.=0A=
	* @method resetProperty=0A=
	* @param {String} key	The name of the property=0A=
	* @return {Boolean} True is the property was reset, false if not=0A=
	*/=0A=
	this.resetProperty =3D function(key) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D config[key];=0A=
		if (typeof property !=3D 'undefined' && property.event) {=0A=
			if (initialConfig[key] && initialConfig[key] !=3D 'undefined')	{=0A=
				this.setProperty(key, initialConfig[key]);=0A=
			}=0A=
			return true;=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Sets the value of a property. If the silent property is passed as =
true, the property's event will not be fired.=0A=
	* @method setProperty=0A=
	* @param {String} key		The name of the property=0A=
	* @param {String} value		The value to set the property to=0A=
	* @param {Boolean} silent	Whether the value should be set silently, =
without firing the property event.=0A=
	* @return {Boolean}			True, if the set was successful, false if it =
failed.=0A=
	*/=0A=
	this.setProperty =3D function(key, value, silent) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		if (this.queueInProgress && ! silent) {=0A=
			this.queueProperty(key,value); // Currently running through a =
queue... =0A=
			return true;=0A=
		} else {=0A=
			var property =3D config[key];=0A=
			if (typeof property !=3D 'undefined' && property.event) {=0A=
				if (property.validator && ! property.validator(value)) { // validator=0A=
					return false;=0A=
				} else {=0A=
					property.value =3D value;=0A=
					if (! silent) {=0A=
						fireEvent(key, value);=0A=
						this.configChangedEvent.fire([key, value]);=0A=
					}=0A=
					return true;=0A=
				}=0A=
			} else {=0A=
				return false;=0A=
			}=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Sets the value of a property and queues its event to execute. If the =
event is already scheduled to execute, it is=0A=
	* moved from its current position to the end of the queue.=0A=
	* @method queueProperty=0A=
	* @param {String} key	The name of the property=0A=
	* @param {String} value	The value to set the property to=0A=
	* @return {Boolean}		true, if the set was successful, false if it =
failed.=0A=
	*/	=0A=
	this.queueProperty =3D function(key, value) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D config[key];=0A=
							=0A=
		if (typeof property !=3D 'undefined' && property.event) {=0A=
			if (typeof value !=3D 'undefined' && property.validator && ! =
property.validator(value)) { // validator=0A=
				return false;=0A=
			} else {=0A=
=0A=
				if (typeof value !=3D 'undefined') {=0A=
					property.value =3D value;=0A=
				} else {=0A=
					value =3D property.value;=0A=
				}=0A=
=0A=
				var foundDuplicate =3D false;=0A=
=0A=
				for (var i=3D0;i<eventQueue.length;i++) {=0A=
					var queueItem =3D eventQueue[i];=0A=
=0A=
					if (queueItem) {=0A=
						var queueItemKey =3D queueItem[0];=0A=
						var queueItemValue =3D queueItem[1];=0A=
						=0A=
						if (queueItemKey.toLowerCase() =3D=3D key) {=0A=
							// found a dupe... push to end of queue, null current item, and =
break=0A=
							eventQueue[i] =3D null;=0A=
							eventQueue.push([key, (typeof value !=3D 'undefined' ? value : =
queueItemValue)]);=0A=
							foundDuplicate =3D true;=0A=
							break;=0A=
						}=0A=
					}=0A=
				}=0A=
				=0A=
				if (! foundDuplicate && typeof value !=3D 'undefined') { // this is =
a refire, or a new property in the queue=0A=
					eventQueue.push([key, value]);=0A=
				}=0A=
			}=0A=
=0A=
			if (property.supercedes) {=0A=
				for (var s=3D0;s<property.supercedes.length;s++) {=0A=
					var supercedesCheck =3D property.supercedes[s];=0A=
=0A=
					for (var q=3D0;q<eventQueue.length;q++) {=0A=
						var queueItemCheck =3D eventQueue[q];=0A=
=0A=
						if (queueItemCheck) {=0A=
							var queueItemCheckKey =3D queueItemCheck[0];=0A=
							var queueItemCheckValue =3D queueItemCheck[1];=0A=
							=0A=
							if ( queueItemCheckKey.toLowerCase() =3D=3D =
supercedesCheck.toLowerCase() ) {=0A=
								eventQueue.push([queueItemCheckKey, queueItemCheckValue]);=0A=
								eventQueue[q] =3D null;=0A=
								break;=0A=
							}=0A=
						}=0A=
					}=0A=
				}=0A=
			}=0A=
=0A=
			return true;=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Fires the event for a property using the property's current value.=0A=
	* @method refireEvent=0A=
	* @param {String} key	The name of the property=0A=
	*/=0A=
	this.refireEvent =3D function(key) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D config[key];=0A=
		if (typeof property !=3D 'undefined' && property.event && typeof =
property.value !=3D 'undefined') {=0A=
			if (this.queueInProgress) {=0A=
				this.queueProperty(key);=0A=
			} else {=0A=
				fireEvent(key, property.value);=0A=
			}=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Applies a key-value Object literal to the configuration, replacing =
any existing values, and queueing the property events.=0A=
	* Although the values will be set, fireQueue() must be called for their =
associated events to execute.=0A=
	* @method applyConfig=0A=
	* @param {Object}	userConfig	The configuration Object literal=0A=
	* @param {Boolean}	init		When set to true, the initialConfig will be =
set to the userConfig passed in, so that calling a reset will reset the =
properties to the passed values.=0A=
	*/=0A=
	this.applyConfig =3D function(userConfig, init) {=0A=
		if (init) {=0A=
			initialConfig =3D userConfig;=0A=
		}=0A=
		for (var prop in userConfig) {=0A=
			this.queueProperty(prop, userConfig[prop]);=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Refires the events for all configuration properties using their =
current values.=0A=
	* @method refresh=0A=
	*/=0A=
	this.refresh =3D function() {=0A=
		for (var prop in config) {=0A=
			this.refireEvent(prop);=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Fires the normalized list of queued property change events=0A=
	* @method fireQueue=0A=
	*/=0A=
	this.fireQueue =3D function() {=0A=
		this.queueInProgress =3D true;=0A=
		for (var i=3D0;i<eventQueue.length;i++) {=0A=
			var queueItem =3D eventQueue[i];=0A=
			if (queueItem) {=0A=
				var key =3D queueItem[0];=0A=
				var value =3D queueItem[1];=0A=
				=0A=
				var property =3D config[key];=0A=
				property.value =3D value;=0A=
=0A=
				fireEvent(key,value);=0A=
			}=0A=
		}=0A=
		=0A=
		this.queueInProgress =3D false;=0A=
		eventQueue =3D [];=0A=
	};=0A=
=0A=
	/**=0A=
	* Subscribes an external handler to the change event for any given =
property. =0A=
	* @method subscribeToConfigEvent=0A=
	* @param {String}	key			The property name=0A=
	* @param {Function}	handler		The handler function to use subscribe to =
the property's event=0A=
	* @param {Object}	obj			The Object to use for scoping the event handler =
(see CustomEvent documentation)=0A=
	* @param {Boolean}	override	Optional. If true, will override "this" =
within the handler to map to the scope Object passed into the method.=0A=
	* @return {Boolean}				True, if the subscription was successful, =
otherwise false.=0A=
	*/	=0A=
	this.subscribeToConfigEvent =3D function(key, handler, obj, override) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D config[key];=0A=
		if (typeof property !=3D 'undefined' && property.event) {=0A=
			if (! YAHOO.util.Config.alreadySubscribed(property.event, handler, =
obj)) {=0A=
				property.event.subscribe(handler, obj, override);=0A=
			}=0A=
			return true;=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Unsubscribes an external handler from the change event for any given =
property. =0A=
	* @method unsubscribeFromConfigEvent=0A=
	* @param {String}	key			The property name=0A=
	* @param {Function}	handler		The handler function to use subscribe to =
the property's event=0A=
	* @param {Object}	obj			The Object to use for scoping the event handler =
(see CustomEvent documentation)=0A=
	* @return {Boolean}				True, if the unsubscription was successful, =
otherwise false.=0A=
	*/=0A=
	this.unsubscribeFromConfigEvent =3D function(key, handler, obj) {=0A=
		key =3D key.toLowerCase();=0A=
=0A=
		var property =3D config[key];=0A=
		if (typeof property !=3D 'undefined' && property.event) {=0A=
			return property.event.unsubscribe(handler, obj);=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	};=0A=
=0A=
	/**=0A=
	* Returns a string representation of the Config object=0A=
	* @method toString=0A=
	* @return {String}	The Config object in string format.=0A=
	*/=0A=
	this.toString =3D function() {=0A=
		var output =3D "Config";=0A=
		if (this.owner) {=0A=
			output +=3D " [" + this.owner.toString() + "]";=0A=
		}=0A=
		return output;=0A=
	};=0A=
=0A=
	/**=0A=
	* Returns a string representation of the Config object's current =
CustomEvent queue=0A=
	* @method outputEventQueue=0A=
	* @return {String}	The string list of CustomEvents currently queued for =
execution=0A=
	*/=0A=
	this.outputEventQueue =3D function() {=0A=
		var output =3D "";=0A=
		for (var q=3D0;q<eventQueue.length;q++) {=0A=
			var queueItem =3D eventQueue[q];=0A=
			if (queueItem) {=0A=
				output +=3D queueItem[0] + "=3D" + queueItem[1] + ", ";=0A=
			}=0A=
		}=0A=
		return output;=0A=
	};=0A=
};=0A=
=0A=
/**=0A=
* Checks to determine if a particular function/Object pair are already =
subscribed to the specified CustomEvent=0A=
* @method YAHOO.util.Config.alreadySubscribed=0A=
* @static=0A=
* @param {YAHOO.util.CustomEvent} evt	The CustomEvent for which to check =
the subscriptions=0A=
* @param {Function}	fn	The function to look for in the subscribers list=0A=
* @param {Object}	obj	The execution scope Object for the subscription=0A=
* @return {Boolean}	true, if the function/Object pair is already =
subscribed to the CustomEvent passed in=0A=
*/=0A=
YAHOO.util.Config.alreadySubscribed =3D function(evt, fn, obj) {=0A=
	for (var e=3D0;e<evt.subscribers.length;e++) {=0A=
		var subsc =3D evt.subscribers[e];=0A=
		if (subsc && subsc.obj =3D=3D obj && subsc.fn =3D=3D fn) {=0A=
			return true;=0A=
		}=0A=
	}=0A=
	return false;=0A=
};=0A=
=0A=
/**=0A=
*  The Container family of components is designed to enable developers =
to create different kinds of content-containing modules on the web. =
Module and Overlay are the most basic containers, and they can be used =
directly or extended to build custom containers. Also part of the =
Container family are four UI controls that extend Module and Overlay: =
Tooltip, Panel, Dialog, and SimpleDialog.=0A=
* @module container=0A=
* @title Container=0A=
* @requires yahoo,dom,event,dragdrop,animation=0A=
*/=0A=
=0A=
/**=0A=
* Module is a JavaScript representation of the Standard Module Format. =
Standard Module Format is a simple standard for markup containers where =
child nodes representing the header, body, and footer of the content are =
denoted using the CSS classes "hd", "bd", and "ft" respectively. Module =
is the base class for all other classes in the YUI Container package.=0A=
* @namespace YAHOO.widget=0A=
* @class Module=0A=
* @constructor=0A=
* @param {String} el			The element ID representing the Module <em>OR</em>=0A=
* @param {HTMLElement} el		The element representing the Module=0A=
* @param {Object} userConfig	The configuration Object literal containing =
the configuration that should be set for this module. See configuration =
documentation for more details.=0A=
*/=0A=
YAHOO.widget.Module =3D function(el, userConfig) {=0A=
	if (el) {=0A=
		this.init(el, userConfig);=0A=
	} else {=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* Constant representing the prefix path to use for non-secure images=0A=
* @property YAHOO.widget.Module.IMG_ROOT=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Module.IMG_ROOT =3D null;=0A=
=0A=
/**=0A=
* Constant representing the prefix path to use for securely served images=0A=
* @property YAHOO.widget.Module.IMG_ROOT_SSL=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Module.IMG_ROOT_SSL =3D null;=0A=
=0A=
/**=0A=
* Constant for the default CSS class name that represents a Module=0A=
* @property YAHOO.widget.Module.CSS_MODULE=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Module.CSS_MODULE =3D "module";=0A=
=0A=
/**=0A=
* Constant representing the module header=0A=
* @property YAHOO.widget.Module.CSS_HEADER=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Module.CSS_HEADER =3D "hd";=0A=
=0A=
/**=0A=
* Constant representing the module body=0A=
* @property YAHOO.widget.Module.CSS_BODY=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Module.CSS_BODY =3D "bd";=0A=
=0A=
/**=0A=
* Constant representing the module footer=0A=
* @property YAHOO.widget.Module.CSS_FOOTER=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Module.CSS_FOOTER =3D "ft";=0A=
=0A=
/**=0A=
* Constant representing the url for the "src" attribute of the iframe =
used to monitor changes to the browser's base font size=0A=
* @property YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL =3D "javascript:false;";=0A=
=0A=
/**=0A=
* Singleton CustomEvent fired when the font size is changed in the =
browser.=0A=
* Opera's "zoom" functionality currently does not support text size =
detection.=0A=
* @event YAHOO.widget.Module.textResizeEvent=0A=
*/=0A=
YAHOO.widget.Module.textResizeEvent =3D new =
YAHOO.util.CustomEvent("textResize");=0A=
=0A=
YAHOO.widget.Module.prototype =3D {=0A=
	/**=0A=
	* The class's constructor function=0A=
	* @property contructor=0A=
	* @type Function=0A=
	*/=0A=
	constructor : YAHOO.widget.Module,=0A=
=0A=
	/**=0A=
	* The main module element that contains the header, body, and footer=0A=
	* @property element=0A=
	* @type HTMLElement=0A=
	*/=0A=
	element : null,=0A=
=0A=
	/**=0A=
	* The header element, denoted with CSS class "hd"=0A=
	* @property header=0A=
	* @type HTMLElement=0A=
	*/=0A=
	header : null,=0A=
=0A=
	/**=0A=
	* The body element, denoted with CSS class "bd"=0A=
	* @property body=0A=
	* @type HTMLElement=0A=
	*/=0A=
	body : null,=0A=
=0A=
	/**=0A=
	* The footer element, denoted with CSS class "ft"=0A=
	* @property footer=0A=
	* @type HTMLElement=0A=
	*/=0A=
	footer : null,=0A=
=0A=
	/**=0A=
	* The id of the element=0A=
	* @property id=0A=
	* @type String=0A=
	*/=0A=
	id : null,=0A=
=0A=
	/**=0A=
	* The String representing the image root=0A=
	* @property imageRoot=0A=
	* @type String=0A=
	*/=0A=
	imageRoot : YAHOO.widget.Module.IMG_ROOT,=0A=
=0A=
	/**=0A=
	* Initializes the custom events for Module which are fired =
automatically at appropriate times by the Module class.=0A=
	* @method initEvents=0A=
	*/=0A=
	initEvents : function() {=0A=
=0A=
		/**=0A=
		* CustomEvent fired prior to class initalization.=0A=
		* @event beforeInitEvent=0A=
		* @param {class} classRef	class reference of the initializing class, =
such as this.beforeInitEvent.fire(YAHOO.widget.Module)=0A=
		*/=0A=
		this.beforeInitEvent =3D new YAHOO.util.CustomEvent("beforeInit");=0A=
=0A=
		/**=0A=
		* CustomEvent fired after class initalization.=0A=
		* @event initEvent=0A=
		* @param {class} classRef	class reference of the initializing class, =
such as this.beforeInitEvent.fire(YAHOO.widget.Module)=0A=
		*/=0A=
		this.initEvent =3D new YAHOO.util.CustomEvent("init");=0A=
=0A=
		/**=0A=
		* CustomEvent fired when the Module is appended to the DOM=0A=
		* @event appendEvent=0A=
		*/=0A=
		this.appendEvent =3D new YAHOO.util.CustomEvent("append");=0A=
=0A=
		/**=0A=
		* CustomEvent fired before the Module is rendered=0A=
		* @event beforeRenderEvent=0A=
		*/=0A=
		this.beforeRenderEvent =3D new YAHOO.util.CustomEvent("beforeRender");=0A=
=0A=
		/**=0A=
		* CustomEvent fired after the Module is rendered=0A=
		* @event renderEvent=0A=
		*/=0A=
		this.renderEvent =3D new YAHOO.util.CustomEvent("render");=0A=
=0A=
		/**=0A=
		* CustomEvent fired when the header content of the Module is modified=0A=
		* @event changeHeaderEvent=0A=
		* @param {String/HTMLElement} content	String/element representing the =
new header content=0A=
		*/=0A=
		this.changeHeaderEvent =3D new YAHOO.util.CustomEvent("changeHeader");=0A=
=0A=
		/**=0A=
		* CustomEvent fired when the body content of the Module is modified=0A=
		* @event changeBodyEvent=0A=
		* @param {String/HTMLElement} content	String/element representing the =
new body content=0A=
		*/=0A=
		this.changeBodyEvent =3D new YAHOO.util.CustomEvent("changeBody");=0A=
=0A=
		/**=0A=
		* CustomEvent fired when the footer content of the Module is modified=0A=
		* @event changeFooterEvent=0A=
		* @param {String/HTMLElement} content	String/element representing the =
new footer content=0A=
		*/=0A=
		this.changeFooterEvent =3D new YAHOO.util.CustomEvent("changeFooter");=0A=
=0A=
		/**=0A=
		* CustomEvent fired when the content of the Module is modified=0A=
		* @event changeContentEvent=0A=
		*/=0A=
		this.changeContentEvent =3D new =
YAHOO.util.CustomEvent("changeContent");=0A=
=0A=
		/**=0A=
		* CustomEvent fired when the Module is destroyed=0A=
		* @event destroyEvent=0A=
		*/=0A=
		this.destroyEvent =3D new YAHOO.util.CustomEvent("destroy");=0A=
=0A=
		/**=0A=
		* CustomEvent fired before the Module is shown=0A=
		* @event beforeShowEvent=0A=
		*/=0A=
		this.beforeShowEvent =3D new YAHOO.util.CustomEvent("beforeShow");=0A=
=0A=
		/**=0A=
		* CustomEvent fired after the Module is shown=0A=
		* @event showEvent=0A=
		*/=0A=
		this.showEvent =3D new YAHOO.util.CustomEvent("show");=0A=
=0A=
		/**=0A=
		* CustomEvent fired before the Module is hidden=0A=
		* @event beforeHideEvent=0A=
		*/=0A=
		this.beforeHideEvent =3D new YAHOO.util.CustomEvent("beforeHide");=0A=
=0A=
		/**=0A=
		* CustomEvent fired after the Module is hidden=0A=
		* @event hideEvent=0A=
		*/=0A=
		this.hideEvent =3D new YAHOO.util.CustomEvent("hide");=0A=
	},=0A=
=0A=
	/**=0A=
	* String representing the current user-agent platform=0A=
	* @property platform=0A=
	* @type String=0A=
	*/=0A=
	platform : function() {=0A=
					var ua =3D navigator.userAgent.toLowerCase();=0A=
					if (ua.indexOf("windows") !=3D -1 || ua.indexOf("win32") !=3D -1) {=0A=
						return "windows";=0A=
					} else if (ua.indexOf("macintosh") !=3D -1) {=0A=
						return "mac";=0A=
					} else {=0A=
						return false;=0A=
					}=0A=
				}(),=0A=
=0A=
	/**=0A=
	* String representing the current user-agent browser=0A=
	* @property browser=0A=
	* @type String=0A=
	*/=0A=
	browser : function() {=0A=
			var ua =3D navigator.userAgent.toLowerCase();=0A=
				  if (ua.indexOf('opera')!=3D-1) { // Opera (check first in case of =
spoof)=0A=
					 return 'opera';=0A=
				  } else if (ua.indexOf('msie 7')!=3D-1) { // IE7=0A=
					 return 'ie7';=0A=
				  } else if (ua.indexOf('msie') !=3D-1) { // IE=0A=
					 return 'ie';=0A=
				  } else if (ua.indexOf('safari')!=3D-1) { // Safari (check before =
Gecko because it includes "like Gecko")=0A=
					 return 'safari';=0A=
				  } else if (ua.indexOf('gecko') !=3D -1) { // Gecko=0A=
					 return 'gecko';=0A=
				  } else {=0A=
					 return false;=0A=
				  }=0A=
			}(),=0A=
=0A=
	/**=0A=
	* Boolean representing whether or not the current browsing context is =
secure (https)=0A=
	* @property isSecure=0A=
	* @type Boolean=0A=
	*/=0A=
	isSecure : function() {=0A=
		if (window.location.href.toLowerCase().indexOf("https") =3D=3D=3D 0) {=0A=
			return true;=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	}(),=0A=
=0A=
	/**=0A=
	* Initializes the custom events for Module which are fired =
automatically at appropriate times by the Module class.=0A=
	*/=0A=
	initDefaultConfig : function() {=0A=
		// Add properties //=0A=
=0A=
		/**=0A=
		* Specifies whether the Module is visible on the page.=0A=
		* @config visible=0A=
		* @type Boolean=0A=
		* @default true=0A=
		*/=0A=
		this.cfg.addProperty("visible", { value:true, =
handler:this.configVisible, validator:this.cfg.checkBoolean } );=0A=
=0A=
		/**=0A=
		* Object or array of objects representing the ContainerEffect classes =
that are active for animating the container.=0A=
		* @config effect=0A=
		* @type Object=0A=
		* @default null=0A=
		*/=0A=
		this.cfg.addProperty("effect", { suppressEvent:true, =
supercedes:["visible"] } );=0A=
=0A=
		/**=0A=
		* Specifies whether to create a special proxy iframe to monitor for =
user font resizing in the document=0A=
		* @config monitorresize=0A=
		* @type Boolean=0A=
		* @default true=0A=
		*/=0A=
		this.cfg.addProperty("monitorresize", { value:true, =
handler:this.configMonitorResize } );=0A=
	},=0A=
=0A=
	/**=0A=
	* The Module class's initialization method, which is executed for =
Module and all of its subclasses. This method is automatically called by =
the constructor, and  sets up all DOM references for pre-existing =
markup, and creates required markup if it is not already present.=0A=
	* @method init=0A=
	* @param {String}	el	The element ID representing the Module <em>OR</em>=0A=
	* @param {HTMLElement}	el	The element representing the Module=0A=
	* @param {Object}	userConfig	The configuration Object literal =
containing the configuration that should be set for this module. See =
configuration documentation for more details.=0A=
	*/=0A=
	init : function(el, userConfig) {=0A=
=0A=
		this.initEvents();=0A=
=0A=
		this.beforeInitEvent.fire(YAHOO.widget.Module);=0A=
=0A=
		/**=0A=
		* The Module's Config object used for monitoring configuration =
properties.=0A=
		* @property cfg=0A=
		* @type YAHOO.util.Config=0A=
		*/=0A=
		this.cfg =3D new YAHOO.util.Config(this);=0A=
=0A=
		if (this.isSecure) {=0A=
			this.imageRoot =3D YAHOO.widget.Module.IMG_ROOT_SSL;=0A=
		}=0A=
=0A=
		if (typeof el =3D=3D "string") {=0A=
			var elId =3D el;=0A=
=0A=
			el =3D document.getElementById(el);=0A=
			if (! el) {=0A=
				el =3D document.createElement("div");=0A=
				el.id =3D elId;=0A=
			}=0A=
		}=0A=
=0A=
		this.element =3D el;=0A=
=0A=
		if (el.id) {=0A=
			this.id =3D el.id;=0A=
		}=0A=
=0A=
		var childNodes =3D this.element.childNodes;=0A=
=0A=
		if (childNodes) {=0A=
			for (var i=3D0;i<childNodes.length;i++) {=0A=
				var child =3D childNodes[i];=0A=
				switch (child.className) {=0A=
					case YAHOO.widget.Module.CSS_HEADER:=0A=
						this.header =3D child;=0A=
						break;=0A=
					case YAHOO.widget.Module.CSS_BODY:=0A=
						this.body =3D child;=0A=
						break;=0A=
					case YAHOO.widget.Module.CSS_FOOTER:=0A=
						this.footer =3D child;=0A=
						break;=0A=
				}=0A=
			}=0A=
		}=0A=
=0A=
		this.initDefaultConfig();=0A=
=0A=
		YAHOO.util.Dom.addClass(this.element, YAHOO.widget.Module.CSS_MODULE);=0A=
=0A=
		if (userConfig) {=0A=
			this.cfg.applyConfig(userConfig, true);=0A=
		}=0A=
=0A=
		// Subscribe to the fireQueue() method of Config so that any queued =
configuration changes are=0A=
		// excecuted upon render of the Module=0A=
		if (! YAHOO.util.Config.alreadySubscribed(this.renderEvent, =
this.cfg.fireQueue, this.cfg)) {=0A=
			this.renderEvent.subscribe(this.cfg.fireQueue, this.cfg, true);=0A=
		}=0A=
=0A=
		this.initEvent.fire(YAHOO.widget.Module);=0A=
	},=0A=
=0A=
	/**=0A=
	* Initialized an empty IFRAME that is placed out of the visible area =
that can be used to detect text resize.=0A=
	* @method initResizeMonitor=0A=
	*/=0A=
	initResizeMonitor : function() {=0A=
=0A=
        if(this.browser !=3D "opera") {=0A=
=0A=
            var resizeMonitor =3D =
document.getElementById("_yuiResizeMonitor");=0A=
=0A=
            if (! resizeMonitor) {=0A=
=0A=
                resizeMonitor =3D document.createElement("iframe");=0A=
=0A=
                var bIE =3D (this.browser.indexOf("ie") =3D=3D=3D 0);=0A=
=0A=
                if(this.isSecure && =
YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL && bIE) {=0A=
                   resizeMonitor.src =3D =
YAHOO.widget.Module.RESIZE_MONITOR_SECURE_URL;=0A=
                }=0A=
=0A=
                resizeMonitor.id =3D "_yuiResizeMonitor";=0A=
                resizeMonitor.style.visibility =3D "hidden";=0A=
=0A=
                document.body.appendChild(resizeMonitor);=0A=
=0A=
                resizeMonitor.style.width =3D "10em";=0A=
                resizeMonitor.style.height =3D "10em";=0A=
                resizeMonitor.style.position =3D "absolute";=0A=
=0A=
                var nLeft =3D -1 * resizeMonitor.offsetWidth;=0A=
                var nTop =3D -1 * resizeMonitor.offsetHeight;=0A=
=0A=
                resizeMonitor.style.top =3D nTop + "px";=0A=
                resizeMonitor.style.left =3D nLeft + "px";=0A=
                resizeMonitor.style.borderStyle =3D "none";=0A=
                resizeMonitor.style.borderWidth =3D "0";=0A=
                YAHOO.util.Dom.setStyle(resizeMonitor, "opacity", "0");=0A=
=0A=
                resizeMonitor.style.visibility =3D "visible";=0A=
=0A=
                if(!bIE) {=0A=
=0A=
                    var doc =3D resizeMonitor.contentWindow.document;=0A=
=0A=
                    doc.open();=0A=
                    doc.close();=0A=
=0A=
                }=0A=
            }=0A=
=0A=
			var fireTextResize =3D function() {=0A=
				YAHOO.widget.Module.textResizeEvent.fire();=0A=
			};=0A=
=0A=
            if(resizeMonitor && resizeMonitor.contentWindow) {=0A=
                this.resizeMonitor =3D resizeMonitor;=0A=
=0A=
				YAHOO.widget.Module.textResizeEvent.subscribe(this.onDomResize, =
this, true);=0A=
=0A=
				if (! YAHOO.widget.Module.textResizeInitialized) {=0A=
					if (! =
YAHOO.util.Event.addListener(this.resizeMonitor.contentWindow, "resize", =
fireTextResize)) {=0A=
						// This will fail in IE if document.domain has changed, so we must =
change the listener to=0A=
						// use the resizeMonitor element instead=0A=
						YAHOO.util.Event.addListener(this.resizeMonitor, "resize", =
fireTextResize);=0A=
					}=0A=
					YAHOO.widget.Module.textResizeInitialized =3D true;=0A=
				}=0A=
            }=0A=
=0A=
        }=0A=
=0A=
	},=0A=
=0A=
	/**=0A=
	* Event handler fired when the resize monitor element is resized.=0A=
	* @method onDomResize=0A=
	* @param {DOMEvent} e	The DOM resize event=0A=
	* @param {Object} obj	The scope object passed to the handler=0A=
	*/=0A=
	onDomResize : function(e, obj) {=0A=
=0A=
        var nLeft =3D -1 * this.resizeMonitor.offsetWidth,=0A=
            nTop =3D -1 * this.resizeMonitor.offsetHeight;=0A=
=0A=
        this.resizeMonitor.style.top =3D nTop + "px";=0A=
        this.resizeMonitor.style.left =3D  nLeft + "px";=0A=
=0A=
	},=0A=
=0A=
	/**=0A=
	* Sets the Module's header content to the HTML specified, or appends =
the passed element to the header. If no header is present, one will be =
automatically created.=0A=
	* @method setHeader=0A=
	* @param {String}	headerContent	The HTML used to set the header =
<em>OR</em>=0A=
	* @param {HTMLElement}	headerContent	The HTMLElement to append to the =
header=0A=
	*/=0A=
	setHeader : function(headerContent) {=0A=
		if (! this.header) {=0A=
			this.header =3D document.createElement("div");=0A=
			this.header.className =3D YAHOO.widget.Module.CSS_HEADER;=0A=
		}=0A=
=0A=
		if (typeof headerContent =3D=3D "string") {=0A=
			this.header.innerHTML =3D headerContent;=0A=
		} else {=0A=
			this.header.innerHTML =3D "";=0A=
			this.header.appendChild(headerContent);=0A=
		}=0A=
=0A=
		this.changeHeaderEvent.fire(headerContent);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Appends the passed element to the header. If no header is present, =
one will be automatically created.=0A=
	* @method appendToHeader=0A=
	* @param {HTMLElement}	element	The element to append to the header=0A=
	*/=0A=
	appendToHeader : function(element) {=0A=
		if (! this.header) {=0A=
			this.header =3D document.createElement("div");=0A=
			this.header.className =3D YAHOO.widget.Module.CSS_HEADER;=0A=
		}=0A=
=0A=
		this.header.appendChild(element);=0A=
		this.changeHeaderEvent.fire(element);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Sets the Module's body content to the HTML specified, or appends the =
passed element to the body. If no body is present, one will be =
automatically created.=0A=
	* @method setBody=0A=
	* @param {String}	bodyContent	The HTML used to set the body <em>OR</em>=0A=
	* @param {HTMLElement}	bodyContent	The HTMLElement to append to the body=0A=
	*/=0A=
	setBody : function(bodyContent) {=0A=
		if (! this.body) {=0A=
			this.body =3D document.createElement("div");=0A=
			this.body.className =3D YAHOO.widget.Module.CSS_BODY;=0A=
		}=0A=
=0A=
		if (typeof bodyContent =3D=3D "string")=0A=
		{=0A=
			this.body.innerHTML =3D bodyContent;=0A=
		} else {=0A=
			this.body.innerHTML =3D "";=0A=
			this.body.appendChild(bodyContent);=0A=
		}=0A=
=0A=
		this.changeBodyEvent.fire(bodyContent);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Appends the passed element to the body. If no body is present, one =
will be automatically created.=0A=
	* @method appendToBody=0A=
	* @param {HTMLElement}	element	The element to append to the body=0A=
	*/=0A=
	appendToBody : function(element) {=0A=
		if (! this.body) {=0A=
			this.body =3D document.createElement("div");=0A=
			this.body.className =3D YAHOO.widget.Module.CSS_BODY;=0A=
		}=0A=
=0A=
		this.body.appendChild(element);=0A=
		this.changeBodyEvent.fire(element);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Sets the Module's footer content to the HTML specified, or appends =
the passed element to the footer. If no footer is present, one will be =
automatically created.=0A=
	* @method setFooter=0A=
	* @param {String}	footerContent	The HTML used to set the footer =
<em>OR</em>=0A=
	* @param {HTMLElement}	footerContent	The HTMLElement to append to the =
footer=0A=
	*/=0A=
	setFooter : function(footerContent) {=0A=
		if (! this.footer) {=0A=
			this.footer =3D document.createElement("div");=0A=
			this.footer.className =3D YAHOO.widget.Module.CSS_FOOTER;=0A=
		}=0A=
=0A=
		if (typeof footerContent =3D=3D "string") {=0A=
			this.footer.innerHTML =3D footerContent;=0A=
		} else {=0A=
			this.footer.innerHTML =3D "";=0A=
			this.footer.appendChild(footerContent);=0A=
		}=0A=
=0A=
		this.changeFooterEvent.fire(footerContent);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Appends the passed element to the footer. If no footer is present, =
one will be automatically created.=0A=
	* @method appendToFooter=0A=
	* @param {HTMLElement}	element	The element to append to the footer=0A=
	*/=0A=
	appendToFooter : function(element) {=0A=
		if (! this.footer) {=0A=
			this.footer =3D document.createElement("div");=0A=
			this.footer.className =3D YAHOO.widget.Module.CSS_FOOTER;=0A=
		}=0A=
=0A=
		this.footer.appendChild(element);=0A=
		this.changeFooterEvent.fire(element);=0A=
		this.changeContentEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Renders the Module by inserting the elements that are not already in =
the main Module into their correct places. Optionally appends the Module =
to the specified node prior to the render's execution. NOTE: For Modules =
without existing markup, the appendToNode argument is REQUIRED. If this =
argument is ommitted and the current element is not present in the =
document, the function will return false, indicating that the render was =
a failure.=0A=
	* @method render=0A=
	* @param {String}	appendToNode	The element id to which the Module =
should be appended to prior to rendering <em>OR</em>=0A=
	* @param {HTMLElement}	appendToNode	The element to which the Module =
should be appended to prior to rendering=0A=
	* @param {HTMLElement}	moduleElement	OPTIONAL. The element that =
represents the actual Standard Module container.=0A=
	* @return {Boolean} Success or failure of the render=0A=
	*/=0A=
	render : function(appendToNode, moduleElement) {=0A=
		this.beforeRenderEvent.fire();=0A=
=0A=
		if (! moduleElement) {=0A=
			moduleElement =3D this.element;=0A=
		}=0A=
=0A=
		var me =3D this;=0A=
		var appendTo =3D function(element) {=0A=
			if (typeof element =3D=3D "string") {=0A=
				element =3D document.getElementById(element);=0A=
			}=0A=
=0A=
			if (element) {=0A=
				element.appendChild(me.element);=0A=
				me.appendEvent.fire();=0A=
			}=0A=
		};=0A=
=0A=
		if (appendToNode) {=0A=
			appendTo(appendToNode);=0A=
		} else { // No node was passed in. If the element is not pre-marked =
up, this fails=0A=
			if (! YAHOO.util.Dom.inDocument(this.element)) {=0A=
				return false;=0A=
			}=0A=
		}=0A=
=0A=
		// Need to get everything into the DOM if it isn't already=0A=
=0A=
		if (this.header && ! YAHOO.util.Dom.inDocument(this.header)) {=0A=
			// There is a header, but it's not in the DOM yet... need to add it=0A=
			var firstChild =3D moduleElement.firstChild;=0A=
			if (firstChild) { // Insert before first child if exists=0A=
				moduleElement.insertBefore(this.header, firstChild);=0A=
			} else { // Append to empty body because there are no children=0A=
				moduleElement.appendChild(this.header);=0A=
			}=0A=
		}=0A=
=0A=
		if (this.body && ! YAHOO.util.Dom.inDocument(this.body)) {=0A=
			// There is a body, but it's not in the DOM yet... need to add it=0A=
			if (this.footer && YAHOO.util.Dom.isAncestor(this.moduleElement, =
this.footer)) { // Insert before footer if exists in DOM=0A=
				moduleElement.insertBefore(this.body, this.footer);=0A=
			} else { // Append to element because there is no footer=0A=
				moduleElement.appendChild(this.body);=0A=
			}=0A=
		}=0A=
=0A=
		if (this.footer && ! YAHOO.util.Dom.inDocument(this.footer)) {=0A=
			// There is a footer, but it's not in the DOM yet... need to add it=0A=
			moduleElement.appendChild(this.footer);=0A=
		}=0A=
=0A=
		this.renderEvent.fire();=0A=
		return true;=0A=
	},=0A=
=0A=
	/**=0A=
	* Removes the Module element from the DOM and sets all child elements =
to null.=0A=
	* @method destroy=0A=
	*/=0A=
	destroy : function() {=0A=
		var parent;=0A=
=0A=
		if (this.element) {=0A=
			YAHOO.util.Event.purgeElement(this.element, true);=0A=
			parent =3D this.element.parentNode;=0A=
		}=0A=
		if (parent) {=0A=
			parent.removeChild(this.element);=0A=
		}=0A=
=0A=
		this.element =3D null;=0A=
		this.header =3D null;=0A=
		this.body =3D null;=0A=
		this.footer =3D null;=0A=
=0A=
		for (var e in this) {=0A=
			if (e instanceof YAHOO.util.CustomEvent) {=0A=
				e.unsubscribeAll();=0A=
			}=0A=
		}=0A=
=0A=
		YAHOO.widget.Module.textResizeEvent.unsubscribe(this.onDomResize, =
this);=0A=
=0A=
		this.destroyEvent.fire();=0A=
	},=0A=
=0A=
	/**=0A=
	* Shows the Module element by setting the visible configuration =
property to true. Also fires two events: beforeShowEvent prior to the =
visibility change, and showEvent after.=0A=
	* @method show=0A=
	*/=0A=
	show : function() {=0A=
		this.cfg.setProperty("visible", true);=0A=
	},=0A=
=0A=
	/**=0A=
	* Hides the Module element by setting the visible configuration =
property to false. Also fires two events: beforeHideEvent prior to the =
visibility change, and hideEvent after.=0A=
	* @method hide=0A=
	*/=0A=
	hide : function() {=0A=
		this.cfg.setProperty("visible", false);=0A=
	},=0A=
=0A=
	// BUILT-IN EVENT HANDLERS FOR MODULE //=0A=
=0A=
	/**=0A=
	* Default event handler for changing the visibility property of a =
Module. By default, this is achieved by switching the "display" style =
between "block" and "none".=0A=
	* This method is responsible for firing showEvent and hideEvent.=0A=
	* @param {String} type	The CustomEvent type (usually the property name)=0A=
	* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
	* @param {Object} obj	The scope object. For configuration handlers, =
this will usually equal the owner.=0A=
	* @method configVisible=0A=
	*/=0A=
	configVisible : function(type, args, obj) {=0A=
		var visible =3D args[0];=0A=
		if (visible) {=0A=
			this.beforeShowEvent.fire();=0A=
			YAHOO.util.Dom.setStyle(this.element, "display", "block");=0A=
			this.showEvent.fire();=0A=
		} else {=0A=
			this.beforeHideEvent.fire();=0A=
			YAHOO.util.Dom.setStyle(this.element, "display", "none");=0A=
			this.hideEvent.fire();=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Default event handler for the "monitorresize" configuration property=0A=
	* @param {String} type	The CustomEvent type (usually the property name)=0A=
	* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
	* @param {Object} obj	The scope object. For configuration handlers, =
this will usually equal the owner.=0A=
	* @method configMonitorResize=0A=
	*/=0A=
	configMonitorResize : function(type, args, obj) {=0A=
		var monitor =3D args[0];=0A=
		if (monitor) {=0A=
			this.initResizeMonitor();=0A=
		} else {=0A=
			YAHOO.widget.Module.textResizeEvent.unsubscribe(this.onDomResize, =
this, true);=0A=
			this.resizeMonitor =3D null;=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* Returns a String representation of the Object.=0A=
* @method toString=0A=
* @return {String}	The string representation of the Module=0A=
*/=0A=
YAHOO.widget.Module.prototype.toString =3D function() {=0A=
	return "Module " + this.id;=0A=
};=0A=
=0A=
/**=0A=
* Overlay is a Module that is absolutely positioned above the page flow. =
It has convenience methods for positioning and sizing, as well as =
options for controlling zIndex and constraining the Overlay's position =
to the current visible viewport. Overlay also contains a dynamicly =
generated IFRAME which is placed beneath it for Internet Explorer 6 and =
5.x so that it will be properly rendered above SELECT elements.=0A=
* @namespace YAHOO.widget=0A=
* @class Overlay=0A=
* @extends YAHOO.widget.Module=0A=
* @param {String}	el	The element ID representing the Overlay <em>OR</em>=0A=
* @param {HTMLElement}	el	The element representing the Overlay=0A=
* @param {Object}	userConfig	The configuration object literal containing =
10/23/2006the configuration that should be set for this Overlay. See =
configuration documentation for more details.=0A=
* @constructor=0A=
*/=0A=
YAHOO.widget.Overlay =3D function(el, userConfig) {=0A=
	YAHOO.widget.Overlay.superclass.constructor.call(this, el, userConfig);=0A=
};=0A=
=0A=
YAHOO.extend(YAHOO.widget.Overlay, YAHOO.widget.Module);=0A=
=0A=
/**=0A=
* The URL that will be placed in the iframe=0A=
* @property YAHOO.widget.Overlay.IFRAME_SRC=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Overlay.IFRAME_SRC =3D "javascript:false;";=0A=
=0A=
/**=0A=
* Constant representing the top left corner of an element, used for =
configuring the context element alignment=0A=
* @property YAHOO.widget.Overlay.TOP_LEFT=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Overlay.TOP_LEFT =3D "tl";=0A=
=0A=
/**=0A=
* Constant representing the top right corner of an element, used for =
configuring the context element alignment=0A=
* @property YAHOO.widget.Overlay.TOP_RIGHT=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Overlay.TOP_RIGHT =3D "tr";=0A=
=0A=
/**=0A=
* Constant representing the top bottom left corner of an element, used =
for configuring the context element alignment=0A=
* @property YAHOO.widget.Overlay.BOTTOM_LEFT=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Overlay.BOTTOM_LEFT =3D "bl";=0A=
=0A=
/**=0A=
* Constant representing the bottom right corner of an element, used for =
configuring the context element alignment=0A=
* @property YAHOO.widget.Overlay.BOTTOM_RIGHT=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Overlay.BOTTOM_RIGHT =3D "br";=0A=
=0A=
/**=0A=
* Constant representing the default CSS class used for an Overlay=0A=
* @property YAHOO.widget.Overlay.CSS_OVERLAY=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.Overlay.CSS_OVERLAY =3D "yui-overlay";=0A=
=0A=
/**=0A=
* The Overlay initialization method, which is executed for Overlay and =
all of its subclasses. This method is automatically called by the =
constructor, and  sets up all DOM references for pre-existing markup, =
and creates required markup if it is not already present.=0A=
* @method init=0A=
* @param {String}	el	The element ID representing the Overlay <em>OR</em>=0A=
* @param {HTMLElement}	el	The element representing the Overlay=0A=
* @param {Object}	userConfig	The configuration object literal containing =
the configuration that should be set for this Overlay. See configuration =
documentation for more details.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.init =3D function(el, userConfig) {=0A=
	YAHOO.widget.Overlay.superclass.init.call(this, el/*, userConfig*/);  =
// Note that we don't pass the user config in here yet because we only =
want it executed once, at the lowest subclass level=0A=
=0A=
	this.beforeInitEvent.fire(YAHOO.widget.Overlay);=0A=
=0A=
	YAHOO.util.Dom.addClass(this.element, YAHOO.widget.Overlay.CSS_OVERLAY);=0A=
=0A=
	if (userConfig) {=0A=
		this.cfg.applyConfig(userConfig, true);=0A=
	}=0A=
=0A=
	if (this.platform =3D=3D "mac" && this.browser =3D=3D "gecko") {=0A=
		if (! =
YAHOO.util.Config.alreadySubscribed(this.showEvent,this.showMacGeckoScrol=
lbars,this)) {=0A=
			this.showEvent.subscribe(this.showMacGeckoScrollbars,this,true);=0A=
		}=0A=
		if (! =
YAHOO.util.Config.alreadySubscribed(this.hideEvent,this.hideMacGeckoScrol=
lbars,this)) {=0A=
			this.hideEvent.subscribe(this.hideMacGeckoScrollbars,this,true);=0A=
		}=0A=
	}=0A=
=0A=
	this.initEvent.fire(YAHOO.widget.Overlay);=0A=
=0A=
};=0A=
=0A=
/**=0A=
* Initializes the custom events for Overlay which are fired =
automatically at appropriate times by the Overlay class.=0A=
* @method initEvents=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.initEvents =3D function() {=0A=
	YAHOO.widget.Overlay.superclass.initEvents.call(this);=0A=
=0A=
	/**=0A=
	* CustomEvent fired before the Overlay is moved.=0A=
	* @event beforeMoveEvent=0A=
	* @param {Number} x	x coordinate=0A=
	* @param {Number} y	y coordinate=0A=
	*/=0A=
	this.beforeMoveEvent =3D new YAHOO.util.CustomEvent("beforeMove", this);=0A=
=0A=
	/**=0A=
	* CustomEvent fired after the Overlay is moved.=0A=
	* @event moveEvent=0A=
	* @param {Number} x	x coordinate=0A=
	* @param {Number} y	y coordinate=0A=
	*/=0A=
	this.moveEvent =3D new YAHOO.util.CustomEvent("move", this);=0A=
};=0A=
=0A=
/**=0A=
* Initializes the class's configurable properties which can be changed =
using the Overlay's Config object (cfg).=0A=
* @method initDefaultConfig=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.initDefaultConfig =3D function() {=0A=
	YAHOO.widget.Overlay.superclass.initDefaultConfig.call(this);=0A=
=0A=
	// Add overlay config properties //=0A=
=0A=
	/**=0A=
	* The absolute x-coordinate position of the Overlay=0A=
	* @config x=0A=
	* @type Number=0A=
	* @default null=0A=
	*/=0A=
	this.cfg.addProperty("x", { handler:this.configX, =
validator:this.cfg.checkNumber, suppressEvent:true, =
supercedes:["iframe"] } );=0A=
=0A=
	/**=0A=
	* The absolute y-coordinate position of the Overlay=0A=
	* @config y=0A=
	* @type Number=0A=
	* @default null=0A=
	*/=0A=
	this.cfg.addProperty("y", { handler:this.configY, =
validator:this.cfg.checkNumber, suppressEvent:true, =
supercedes:["iframe"] } );=0A=
=0A=
	/**=0A=
	* An array with the absolute x and y positions of the Overlay=0A=
	* @config xy=0A=
	* @type Number[]=0A=
	* @default null=0A=
	*/=0A=
	this.cfg.addProperty("xy",{ handler:this.configXY, suppressEvent:true, =
supercedes:["iframe"] } );=0A=
=0A=
	/**=0A=
	* The array of context arguments for context-sensitive positioning. The =
format is: [id or element, element corner, context corner]. For example, =
setting this property to ["img1", "tl", "bl"] would align the Overlay's =
top left corner to the context element's bottom left corner.=0A=
	* @config context=0A=
	* @type Array=0A=
	* @default null=0A=
	*/=0A=
	this.cfg.addProperty("context",	{ handler:this.configContext, =
suppressEvent:true, supercedes:["iframe"] } );=0A=
=0A=
	/**=0A=
	* True if the Overlay should be anchored to the center of the viewport.=0A=
	* @config fixedcenter=0A=
	* @type Boolean=0A=
	* @default false=0A=
	*/=0A=
	this.cfg.addProperty("fixedcenter", { value:false, =
handler:this.configFixedCenter, validator:this.cfg.checkBoolean, =
supercedes:["iframe","visible"] } );=0A=
=0A=
	/**=0A=
	* CSS width of the Overlay.=0A=
	* @config width=0A=
	* @type String=0A=
	* @default null=0A=
	*/=0A=
	this.cfg.addProperty("width", { handler:this.configWidth, =
suppressEvent:true, supercedes:["iframe"] } );=0A=
=0A=
	/**=0A=
	* CSS height of the Overlay.=0A=
	* @config height=0A=
	* @type String=0A=
	* @default null=0A=
	*/=0A=
	this.cfg.addProperty("height", { handler:this.configHeight, =
suppressEvent:true, supercedes:["iframe"] } );=0A=
=0A=
	/**=0A=
	* CSS z-index of the Overlay.=0A=
	* @config zIndex=0A=
	* @type Number=0A=
	* @default null=0A=
	*/=0A=
	this.cfg.addProperty("zIndex", { value:null, handler:this.configzIndex =
} );=0A=
=0A=
	/**=0A=
	* True if the Overlay should be prevented from being positioned out of =
the viewport.=0A=
	* @config constraintoviewport=0A=
	* @type Boolean=0A=
	* @default false=0A=
	*/=0A=
	this.cfg.addProperty("constraintoviewport", { value:false, =
handler:this.configConstrainToViewport, validator:this.cfg.checkBoolean, =
supercedes:["iframe","x","y","xy"] } );=0A=
=0A=
	/**=0A=
	* True if the Overlay should have an IFRAME shim (for correcting the =
select z-index bug in IE6 and below).=0A=
	* @config iframe=0A=
	* @type Boolean=0A=
	* @default true for IE6 and below, false for all others=0A=
	*/=0A=
	this.cfg.addProperty("iframe", { value:(this.browser =3D=3D "ie" ? true =
: false), handler:this.configIframe, validator:this.cfg.checkBoolean, =
supercedes:["zIndex"] } );=0A=
};=0A=
=0A=
/**=0A=
* Moves the Overlay to the specified position. This function is =
identical to calling this.cfg.setProperty("xy", [x,y]);=0A=
* @method moveTo=0A=
* @param {Number}	x	The Overlay's new x position=0A=
* @param {Number}	y	The Overlay's new y position=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.moveTo =3D function(x, y) {=0A=
	this.cfg.setProperty("xy",[x,y]);=0A=
};=0A=
=0A=
/**=0A=
* Adds a special CSS class to the Overlay when Mac/Gecko is in use, to =
work around a Gecko bug where=0A=
* scrollbars cannot be hidden. See =
https://bugzilla.mozilla.org/show_bug.cgi?id=3D187435=0A=
* @method hideMacGeckoScrollbars=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.hideMacGeckoScrollbars =3D function() {=0A=
	YAHOO.util.Dom.removeClass(this.element, "show-scrollbars");=0A=
	YAHOO.util.Dom.addClass(this.element, "hide-scrollbars");=0A=
};=0A=
=0A=
/**=0A=
* Removes a special CSS class from the Overlay when Mac/Gecko is in use, =
to work around a Gecko bug where=0A=
* scrollbars cannot be hidden. See =
https://bugzilla.mozilla.org/show_bug.cgi?id=3D187435=0A=
* @method showMacGeckoScrollbars=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.showMacGeckoScrollbars =3D function() {=0A=
	YAHOO.util.Dom.removeClass(this.element, "hide-scrollbars");=0A=
	YAHOO.util.Dom.addClass(this.element, "show-scrollbars");=0A=
};=0A=
=0A=
// BEGIN BUILT-IN PROPERTY EVENT HANDLERS //=0A=
=0A=
/**=0A=
* The default event handler fired when the "visible" property is =
changed. This method is responsible for firing showEvent and hideEvent.=0A=
* @method configVisible=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configVisible =3D function(type, args, =
obj) {=0A=
	var visible =3D args[0];=0A=
	var currentVis =3D YAHOO.util.Dom.getStyle(this.element, "visibility");=0A=
=0A=
	if (currentVis =3D=3D "inherit") {=0A=
		var e =3D this.element.parentNode;=0A=
		while (e.nodeType !=3D 9 && e.nodeType !=3D 11) {=0A=
			currentVis =3D YAHOO.util.Dom.getStyle(e, "visibility");=0A=
			if (currentVis !=3D "inherit") { break; }=0A=
			e =3D e.parentNode;=0A=
		}=0A=
		if (currentVis =3D=3D "inherit") {=0A=
			currentVis =3D "visible";=0A=
		}=0A=
	}=0A=
=0A=
	var effect =3D this.cfg.getProperty("effect");=0A=
=0A=
	var effectInstances =3D [];=0A=
	if (effect) {=0A=
		if (effect instanceof Array) {=0A=
			for (var i=3D0;i<effect.length;i++) {=0A=
				var eff =3D effect[i];=0A=
				effectInstances[effectInstances.length] =3D eff.effect(this, =
eff.duration);=0A=
			}=0A=
		} else {=0A=
			effectInstances[effectInstances.length] =3D effect.effect(this, =
effect.duration);=0A=
		}=0A=
	}=0A=
=0A=
	var isMacGecko =3D (this.platform =3D=3D "mac" && this.browser =3D=3D =
"gecko");=0A=
=0A=
	if (visible) { // Show=0A=
		if (isMacGecko) {=0A=
			this.showMacGeckoScrollbars();=0A=
		}=0A=
=0A=
		if (effect) { // Animate in=0A=
			if (visible) { // Animate in if not showing=0A=
				if (currentVis !=3D "visible" || currentVis =3D=3D=3D "") {=0A=
					this.beforeShowEvent.fire();=0A=
					for (var j=3D0;j<effectInstances.length;j++) {=0A=
						var ei =3D effectInstances[j];=0A=
						if (j =3D=3D=3D 0 && ! =
YAHOO.util.Config.alreadySubscribed(ei.animateInCompleteEvent,this.showEv=
ent.fire,this.showEvent)) {=0A=
							=
ei.animateInCompleteEvent.subscribe(this.showEvent.fire,this.showEvent,tr=
ue); // Delegate showEvent until end of animateInComplete=0A=
						}=0A=
						ei.animateIn();=0A=
					}=0A=
				}=0A=
			}=0A=
		} else { // Show=0A=
			if (currentVis !=3D "visible" || currentVis =3D=3D=3D "") {=0A=
				this.beforeShowEvent.fire();=0A=
				YAHOO.util.Dom.setStyle(this.element, "visibility", "visible");=0A=
				this.cfg.refireEvent("iframe");=0A=
				this.showEvent.fire();=0A=
			}=0A=
		}=0A=
=0A=
	} else { // Hide=0A=
		if (isMacGecko) {=0A=
			this.hideMacGeckoScrollbars();=0A=
		}=0A=
=0A=
		if (effect) { // Animate out if showing=0A=
			if (currentVis =3D=3D "visible") {=0A=
				this.beforeHideEvent.fire();=0A=
				for (var k=3D0;k<effectInstances.length;k++) {=0A=
					var h =3D effectInstances[k];=0A=
					if (k =3D=3D=3D 0 && ! =
YAHOO.util.Config.alreadySubscribed(h.animateOutCompleteEvent,this.hideEv=
ent.fire,this.hideEvent)) {=0A=
						=
h.animateOutCompleteEvent.subscribe(this.hideEvent.fire,this.hideEvent,tr=
ue); // Delegate hideEvent until end of animateOutComplete=0A=
					}=0A=
					h.animateOut();=0A=
				}=0A=
			} else if (currentVis =3D=3D=3D "") {=0A=
				YAHOO.util.Dom.setStyle(this.element, "visibility", "hidden");=0A=
			}=0A=
		} else { // Simple hide=0A=
			if (currentVis =3D=3D "visible" || currentVis =3D=3D=3D "") {=0A=
				this.beforeHideEvent.fire();=0A=
				YAHOO.util.Dom.setStyle(this.element, "visibility", "hidden");=0A=
				this.cfg.refireEvent("iframe");=0A=
				this.hideEvent.fire();=0A=
			}=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* Center event handler used for centering on scroll/resize, but only if =
the Overlay is visible=0A=
* @method doCenterOnDOMEvent=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.doCenterOnDOMEvent =3D function() {=0A=
	if (this.cfg.getProperty("visible")) {=0A=
		this.center();=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "fixedcenter" property is =
changed.=0A=
* @method configFixedCenter=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configFixedCenter =3D function(type, =
args, obj) {=0A=
	var val =3D args[0];=0A=
=0A=
	if (val) {=0A=
		this.center();=0A=
=0A=
		if (! YAHOO.util.Config.alreadySubscribed(this.beforeShowEvent, =
this.center, this)) {=0A=
			this.beforeShowEvent.subscribe(this.center, this, true);=0A=
		}=0A=
=0A=
		if (! =
YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEven=
t, this.doCenterOnDOMEvent, this)) {=0A=
			=
YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.doCenterOnDOMEvent,=
 this, true);=0A=
		}=0A=
=0A=
		if (! =
YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowScrollEven=
t, this.doCenterOnDOMEvent, this)) {=0A=
			YAHOO.widget.Overlay.windowScrollEvent.subscribe( =
this.doCenterOnDOMEvent, this, true);=0A=
		}=0A=
	} else {=0A=
		=
YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEven=
t, this);=0A=
		=
YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEven=
t, this);=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "height" property is changed.=0A=
* @method configHeight=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configHeight =3D function(type, args, =
obj) {=0A=
	var height =3D args[0];=0A=
	var el =3D this.element;=0A=
	YAHOO.util.Dom.setStyle(el, "height", height);=0A=
	this.cfg.refireEvent("iframe");=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "width" property is changed.=0A=
* @method configWidth=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configWidth =3D function(type, args, obj) =
{=0A=
	var width =3D args[0];=0A=
	var el =3D this.element;=0A=
	YAHOO.util.Dom.setStyle(el, "width", width);=0A=
	this.cfg.refireEvent("iframe");=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "zIndex" property is changed.=0A=
* @method configzIndex=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configzIndex =3D function(type, args, =
obj) {=0A=
	var zIndex =3D args[0];=0A=
=0A=
	var el =3D this.element;=0A=
=0A=
	if (! zIndex) {=0A=
		zIndex =3D YAHOO.util.Dom.getStyle(el, "zIndex");=0A=
		if (! zIndex || isNaN(zIndex)) {=0A=
			zIndex =3D 0;=0A=
		}=0A=
	}=0A=
=0A=
	if (this.iframe) {=0A=
		if (zIndex <=3D 0) {=0A=
			zIndex =3D 1;=0A=
		}=0A=
		YAHOO.util.Dom.setStyle(this.iframe, "zIndex", (zIndex-1));=0A=
	}=0A=
=0A=
	YAHOO.util.Dom.setStyle(el, "zIndex", zIndex);=0A=
	this.cfg.setProperty("zIndex", zIndex, true);=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "xy" property is changed.=0A=
* @method configXY=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configXY =3D function(type, args, obj) {=0A=
	var pos =3D args[0];=0A=
	var x =3D pos[0];=0A=
	var y =3D pos[1];=0A=
=0A=
	this.cfg.setProperty("x", x);=0A=
	this.cfg.setProperty("y", y);=0A=
=0A=
	this.beforeMoveEvent.fire([x,y]);=0A=
=0A=
	x =3D this.cfg.getProperty("x");=0A=
	y =3D this.cfg.getProperty("y");=0A=
=0A=
=0A=
	this.cfg.refireEvent("iframe");=0A=
	this.moveEvent.fire([x,y]);=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "x" property is changed.=0A=
* @method configX=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configX =3D function(type, args, obj) {=0A=
	var x =3D args[0];=0A=
	var y =3D this.cfg.getProperty("y");=0A=
=0A=
	this.cfg.setProperty("x", x, true);=0A=
	this.cfg.setProperty("y", y, true);=0A=
=0A=
	this.beforeMoveEvent.fire([x,y]);=0A=
=0A=
	x =3D this.cfg.getProperty("x");=0A=
	y =3D this.cfg.getProperty("y");=0A=
=0A=
	YAHOO.util.Dom.setX(this.element, x, true);=0A=
=0A=
	this.cfg.setProperty("xy", [x, y], true);=0A=
=0A=
	this.cfg.refireEvent("iframe");=0A=
	this.moveEvent.fire([x, y]);=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "y" property is changed.=0A=
* @method configY=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configY =3D function(type, args, obj) {=0A=
	var x =3D this.cfg.getProperty("x");=0A=
	var y =3D args[0];=0A=
=0A=
	this.cfg.setProperty("x", x, true);=0A=
	this.cfg.setProperty("y", y, true);=0A=
=0A=
	this.beforeMoveEvent.fire([x,y]);=0A=
=0A=
	x =3D this.cfg.getProperty("x");=0A=
	y =3D this.cfg.getProperty("y");=0A=
=0A=
	YAHOO.util.Dom.setY(this.element, y, true);=0A=
=0A=
	this.cfg.setProperty("xy", [x, y], true);=0A=
=0A=
	this.cfg.refireEvent("iframe");=0A=
	this.moveEvent.fire([x, y]);=0A=
};=0A=
=0A=
/**=0A=
* Shows the iframe shim, if it has been enabled=0A=
* @method showIframe=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.showIframe =3D function() {=0A=
	if (this.iframe) {=0A=
		this.iframe.style.display =3D "block";=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* Hides the iframe shim, if it has been enabled=0A=
* @method hideIframe=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.hideIframe =3D function() {=0A=
	if (this.iframe) {=0A=
		this.iframe.style.display =3D "none";=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "iframe" property is changed.=0A=
* @method configIframe=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configIframe =3D function(type, args, =
obj) {=0A=
=0A=
	var val =3D args[0];=0A=
=0A=
	if (val) { // IFRAME shim is enabled=0A=
=0A=
		if (! YAHOO.util.Config.alreadySubscribed(this.showEvent, =
this.showIframe, this)) {=0A=
			this.showEvent.subscribe(this.showIframe, this, true);=0A=
		}=0A=
		if (! YAHOO.util.Config.alreadySubscribed(this.hideEvent, =
this.hideIframe, this)) {=0A=
			this.hideEvent.subscribe(this.hideIframe, this, true);=0A=
		}=0A=
=0A=
		var x =3D this.cfg.getProperty("x");=0A=
		var y =3D this.cfg.getProperty("y");=0A=
=0A=
		if (! x || ! y) {=0A=
			this.syncPosition();=0A=
			x =3D this.cfg.getProperty("x");=0A=
			y =3D this.cfg.getProperty("y");=0A=
		}=0A=
=0A=
=0A=
		if (! isNaN(x) && ! isNaN(y)) {=0A=
			if (! this.iframe) {=0A=
				this.iframe =3D document.createElement("iframe");=0A=
				if (this.isSecure) {=0A=
					this.iframe.src =3D YAHOO.widget.Overlay.IFRAME_SRC;=0A=
				}=0A=
=0A=
				var parent =3D this.element.parentNode;=0A=
				if (parent) {=0A=
					parent.appendChild(this.iframe);=0A=
				} else {=0A=
					document.body.appendChild(this.iframe);=0A=
				}=0A=
=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "position", "absolute");=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "border", "none");=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "margin", "0");=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "padding", "0");=0A=
				YAHOO.util.Dom.setStyle(this.iframe, "opacity", "0");=0A=
				if (this.cfg.getProperty("visible")) {=0A=
					this.showIframe();=0A=
				} else {=0A=
					this.hideIframe();=0A=
				}=0A=
			}=0A=
=0A=
			var iframeDisplay =3D YAHOO.util.Dom.getStyle(this.iframe, "display");=0A=
=0A=
			if (iframeDisplay =3D=3D "none") {=0A=
				this.iframe.style.display =3D "block";=0A=
			}=0A=
=0A=
			YAHOO.util.Dom.setXY(this.iframe, [x,y]);=0A=
=0A=
			var width =3D this.element.clientWidth;=0A=
			var height =3D this.element.clientHeight;=0A=
=0A=
			YAHOO.util.Dom.setStyle(this.iframe, "width", (width+2) + "px");=0A=
			YAHOO.util.Dom.setStyle(this.iframe, "height", (height+2) + "px");=0A=
=0A=
			if (iframeDisplay =3D=3D "none") {=0A=
				this.iframe.style.display =3D "none";=0A=
			}=0A=
		}=0A=
	} else {=0A=
		if (this.iframe) {=0A=
			this.iframe.style.display =3D "none";=0A=
		}=0A=
		this.showEvent.unsubscribe(this.showIframe, this);=0A=
		this.hideEvent.unsubscribe(this.hideIframe, this);=0A=
	}=0A=
};=0A=
=0A=
=0A=
/**=0A=
* The default event handler fired when the "constraintoviewport" =
property is changed.=0A=
* @method configConstrainToViewport=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configConstrainToViewport =3D =
function(type, args, obj) {=0A=
	var val =3D args[0];=0A=
	if (val) {=0A=
		if (! YAHOO.util.Config.alreadySubscribed(this.beforeMoveEvent, =
this.enforceConstraints, this)) {=0A=
			this.beforeMoveEvent.subscribe(this.enforceConstraints, this, true);=0A=
		}=0A=
	} else {=0A=
		this.beforeMoveEvent.unsubscribe(this.enforceConstraints, this);=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* The default event handler fired when the "context" property is changed.=0A=
* @method configContext=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.configContext =3D function(type, args, =
obj) {=0A=
	var contextArgs =3D args[0];=0A=
=0A=
	if (contextArgs) {=0A=
		var contextEl =3D contextArgs[0];=0A=
		var elementMagnetCorner =3D contextArgs[1];=0A=
		var contextMagnetCorner =3D contextArgs[2];=0A=
=0A=
		if (contextEl) {=0A=
			if (typeof contextEl =3D=3D "string") {=0A=
				this.cfg.setProperty("context", =
[document.getElementById(contextEl),elementMagnetCorner,contextMagnetCorn=
er], true);=0A=
			}=0A=
=0A=
			if (elementMagnetCorner && contextMagnetCorner) {=0A=
				this.align(elementMagnetCorner, contextMagnetCorner);=0A=
			}=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
=0A=
// END BUILT-IN PROPERTY EVENT HANDLERS //=0A=
=0A=
/**=0A=
* Aligns the Overlay to its context element using the specified corner =
points (represented by the constants TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, =
and BOTTOM_RIGHT.=0A=
* @method align=0A=
* @param {String} elementAlign		The String representing the corner of =
the Overlay that should be aligned to the context element=0A=
* @param {String} contextAlign		The corner of the context element that =
the elementAlign corner should stick to.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.align =3D function(elementAlign, =
contextAlign) {=0A=
	var contextArgs =3D this.cfg.getProperty("context");=0A=
	if (contextArgs) {=0A=
		var context =3D contextArgs[0];=0A=
=0A=
		var element =3D this.element;=0A=
		var me =3D this;=0A=
=0A=
		if (! elementAlign) {=0A=
			elementAlign =3D contextArgs[1];=0A=
		}=0A=
=0A=
		if (! contextAlign) {=0A=
			contextAlign =3D contextArgs[2];=0A=
		}=0A=
=0A=
		if (element && context) {=0A=
			var contextRegion =3D YAHOO.util.Dom.getRegion(context);=0A=
=0A=
			var doAlign =3D function(v,h) {=0A=
				switch (elementAlign) {=0A=
					case YAHOO.widget.Overlay.TOP_LEFT:=0A=
						me.moveTo(h,v);=0A=
						break;=0A=
					case YAHOO.widget.Overlay.TOP_RIGHT:=0A=
						me.moveTo(h-element.offsetWidth,v);=0A=
						break;=0A=
					case YAHOO.widget.Overlay.BOTTOM_LEFT:=0A=
						me.moveTo(h,v-element.offsetHeight);=0A=
						break;=0A=
					case YAHOO.widget.Overlay.BOTTOM_RIGHT:=0A=
						me.moveTo(h-element.offsetWidth,v-element.offsetHeight);=0A=
						break;=0A=
				}=0A=
			};=0A=
=0A=
			switch (contextAlign) {=0A=
				case YAHOO.widget.Overlay.TOP_LEFT:=0A=
					doAlign(contextRegion.top, contextRegion.left);=0A=
					break;=0A=
				case YAHOO.widget.Overlay.TOP_RIGHT:=0A=
					doAlign(contextRegion.top, contextRegion.right);=0A=
					break;=0A=
				case YAHOO.widget.Overlay.BOTTOM_LEFT:=0A=
					doAlign(contextRegion.bottom, contextRegion.left);=0A=
					break;=0A=
				case YAHOO.widget.Overlay.BOTTOM_RIGHT:=0A=
					doAlign(contextRegion.bottom, contextRegion.right);=0A=
					break;=0A=
			}=0A=
		}=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* The default event handler executed when the moveEvent is fired, if the =
"constraintoviewport" is set to true.=0A=
* @method enforceConstraints=0A=
* @param {String} type	The CustomEvent type (usually the property name)=0A=
* @param {Object[]}	args	The CustomEvent arguments. For configuration =
handlers, args[0] will equal the newly applied value for the property.=0A=
* @param {Object} obj	The scope object. For configuration handlers, this =
will usually equal the owner.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.enforceConstraints =3D function(type, =
args, obj) {=0A=
	var pos =3D args[0];=0A=
=0A=
	var x =3D pos[0];=0A=
	var y =3D pos[1];=0A=
=0A=
	var offsetHeight =3D this.element.offsetHeight;=0A=
	var offsetWidth =3D this.element.offsetWidth;=0A=
=0A=
	var viewPortWidth =3D YAHOO.util.Dom.getViewportWidth();=0A=
	var viewPortHeight =3D YAHOO.util.Dom.getViewportHeight();=0A=
=0A=
	var scrollX =3D document.documentElement.scrollLeft || =
document.body.scrollLeft;=0A=
	var scrollY =3D document.documentElement.scrollTop || =
document.body.scrollTop;=0A=
=0A=
	var topConstraint =3D scrollY + 10;=0A=
	var leftConstraint =3D scrollX + 10;=0A=
	var bottomConstraint =3D scrollY + viewPortHeight - offsetHeight - 10;=0A=
	var rightConstraint =3D scrollX + viewPortWidth - offsetWidth - 10;=0A=
=0A=
	if (x < leftConstraint) {=0A=
		x =3D leftConstraint;=0A=
	} else if (x > rightConstraint) {=0A=
		x =3D rightConstraint;=0A=
	}=0A=
=0A=
	if (y < topConstraint) {=0A=
		y =3D topConstraint;=0A=
	} else if (y > bottomConstraint) {=0A=
		y =3D bottomConstraint;=0A=
	}=0A=
=0A=
	this.cfg.setProperty("x", x, true);=0A=
	this.cfg.setProperty("y", y, true);=0A=
	this.cfg.setProperty("xy", [x,y], true);=0A=
};=0A=
=0A=
/**=0A=
* Centers the container in the viewport.=0A=
* @method center=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.center =3D function() {=0A=
	var scrollX =3D document.documentElement.scrollLeft || =
document.body.scrollLeft;=0A=
	var scrollY =3D document.documentElement.scrollTop || =
document.body.scrollTop;=0A=
=0A=
	var viewPortWidth =3D YAHOO.util.Dom.getClientWidth();=0A=
	var viewPortHeight =3D YAHOO.util.Dom.getClientHeight();=0A=
=0A=
	var elementWidth =3D this.element.offsetWidth;=0A=
	var elementHeight =3D this.element.offsetHeight;=0A=
=0A=
	var x =3D (viewPortWidth / 2) - (elementWidth / 2) + scrollX;=0A=
	var y =3D (viewPortHeight / 2) - (elementHeight / 2) + scrollY;=0A=
=0A=
	this.cfg.setProperty("xy", [parseInt(x, 10), parseInt(y, 10)]);=0A=
=0A=
	this.cfg.refireEvent("iframe");=0A=
};=0A=
=0A=
/**=0A=
* Synchronizes the Panel's "xy", "x", and "y" properties with the =
Panel's position in the DOM. This is primarily used to update position =
information during drag & drop.=0A=
* @method syncPosition=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.syncPosition =3D function() {=0A=
	var pos =3D YAHOO.util.Dom.getXY(this.element);=0A=
	this.cfg.setProperty("x", pos[0], true);=0A=
	this.cfg.setProperty("y", pos[1], true);=0A=
	this.cfg.setProperty("xy", pos, true);=0A=
};=0A=
=0A=
/**=0A=
* Event handler fired when the resize monitor element is resized.=0A=
* @method onDomResize=0A=
* @param {DOMEvent} e	The resize DOM event=0A=
* @param {Object} obj	The scope object=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.onDomResize =3D function(e, obj) {=0A=
	YAHOO.widget.Overlay.superclass.onDomResize.call(this, e, obj);=0A=
	var me =3D this;=0A=
	setTimeout(function() {=0A=
		me.syncPosition();=0A=
		me.cfg.refireEvent("iframe");=0A=
		me.cfg.refireEvent("context");=0A=
	}, 0);=0A=
};=0A=
=0A=
/**=0A=
* Removes the Overlay element from the DOM and sets all child elements =
to null.=0A=
* @method destroy=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.destroy =3D function() {=0A=
	if (this.iframe) {=0A=
		this.iframe.parentNode.removeChild(this.iframe);=0A=
	}=0A=
=0A=
	this.iframe =3D null;=0A=
=0A=
	=
YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.doCenterOnDOMEven=
t, this);=0A=
	=
YAHOO.widget.Overlay.windowScrollEvent.unsubscribe(this.doCenterOnDOMEven=
t, this);=0A=
=0A=
	YAHOO.widget.Overlay.superclass.destroy.call(this);=0A=
};=0A=
=0A=
/**=0A=
* Returns a String representation of the object.=0A=
* @method toString=0A=
* @return {String} The string representation of the Overlay.=0A=
*/=0A=
YAHOO.widget.Overlay.prototype.toString =3D function() {=0A=
	return "Overlay " + this.id;=0A=
};=0A=
=0A=
/**=0A=
* A singleton CustomEvent used for reacting to the DOM event for window =
scroll=0A=
* @event YAHOO.widget.Overlay.windowScrollEvent=0A=
*/=0A=
YAHOO.widget.Overlay.windowScrollEvent =3D new =
YAHOO.util.CustomEvent("windowScroll");=0A=
=0A=
/**=0A=
* A singleton CustomEvent used for reacting to the DOM event for window =
resize=0A=
* @event YAHOO.widget.Overlay.windowResizeEvent=0A=
*/=0A=
YAHOO.widget.Overlay.windowResizeEvent =3D new =
YAHOO.util.CustomEvent("windowResize");=0A=
=0A=
/**=0A=
* The DOM event handler used to fire the CustomEvent for window scroll=0A=
* @method YAHOO.widget.Overlay.windowScrollHandler=0A=
* @static=0A=
* @param {DOMEvent} e The DOM scroll event=0A=
*/=0A=
YAHOO.widget.Overlay.windowScrollHandler =3D function(e) {=0A=
	if (YAHOO.widget.Module.prototype.browser =3D=3D "ie" || =
YAHOO.widget.Module.prototype.browser =3D=3D "ie7") {=0A=
		if (! window.scrollEnd) {=0A=
			window.scrollEnd =3D -1;=0A=
		}=0A=
		clearTimeout(window.scrollEnd);=0A=
		window.scrollEnd =3D setTimeout(function() { =
YAHOO.widget.Overlay.windowScrollEvent.fire(); }, 1);=0A=
	} else {=0A=
		YAHOO.widget.Overlay.windowScrollEvent.fire();=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* The DOM event handler used to fire the CustomEvent for window resize=0A=
* @method YAHOO.widget.Overlay.windowResizeHandler=0A=
* @static=0A=
* @param {DOMEvent} e The DOM resize event=0A=
*/=0A=
YAHOO.widget.Overlay.windowResizeHandler =3D function(e) {=0A=
	if (YAHOO.widget.Module.prototype.browser =3D=3D "ie" || =
YAHOO.widget.Module.prototype.browser =3D=3D "ie7") {=0A=
		if (! window.resizeEnd) {=0A=
			window.resizeEnd =3D -1;=0A=
		}=0A=
		clearTimeout(window.resizeEnd);=0A=
		window.resizeEnd =3D setTimeout(function() { =
YAHOO.widget.Overlay.windowResizeEvent.fire(); }, 100);=0A=
	} else {=0A=
		YAHOO.widget.Overlay.windowResizeEvent.fire();=0A=
	}=0A=
};=0A=
=0A=
/**=0A=
* A boolean that indicated whether the window resize and scroll events =
have already been subscribed to.=0A=
* @property YAHOO.widget.Overlay._initialized=0A=
* @private=0A=
* @type Boolean=0A=
*/=0A=
YAHOO.widget.Overlay._initialized =3D null;=0A=
=0A=
if (YAHOO.widget.Overlay._initialized =3D=3D=3D null) {=0A=
	YAHOO.util.Event.addListener(window, "scroll", =
YAHOO.widget.Overlay.windowScrollHandler);=0A=
	YAHOO.util.Event.addListener(window, "resize", =
YAHOO.widget.Overlay.windowResizeHandler);=0A=
=0A=
	YAHOO.widget.Overlay._initialized =3D true;=0A=
}=0A=
=0A=
/**=0A=
* OverlayManager is used for maintaining the focus status of multiple =
Overlays.* @namespace YAHOO.widget=0A=
* @namespace YAHOO.widget=0A=
* @class OverlayManager=0A=
* @constructor=0A=
* @param {Array}	overlays	Optional. A collection of Overlays to register =
with the manager.=0A=
* @param {Object}	userConfig		The object literal representing the user =
configuration of the OverlayManager=0A=
*/=0A=
YAHOO.widget.OverlayManager =3D function(userConfig) {=0A=
	this.init(userConfig);=0A=
};=0A=
=0A=
/**=0A=
* The CSS class representing a focused Overlay=0A=
* @property YAHOO.widget.OverlayManager.CSS_FOCUSED=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.widget.OverlayManager.CSS_FOCUSED =3D "focused";=0A=
=0A=
YAHOO.widget.OverlayManager.prototype =3D {=0A=
	/**=0A=
	* The class's constructor function=0A=
	* @property contructor=0A=
	* @type Function=0A=
	*/=0A=
	constructor : YAHOO.widget.OverlayManager,=0A=
=0A=
	/**=0A=
	* The array of Overlays that are currently registered=0A=
	* @property overlays=0A=
	* @type YAHOO.widget.Overlay[]=0A=
	*/=0A=
	overlays : null,=0A=
=0A=
	/**=0A=
	* Initializes the default configuration of the OverlayManager=0A=
	* @method initDefaultConfig=0A=
	*/=0A=
	initDefaultConfig : function() {=0A=
		/**=0A=
		* The collection of registered Overlays in use by the OverlayManager=0A=
		* @config overlays=0A=
		* @type YAHOO.widget.Overlay[]=0A=
		* @default null=0A=
		*/=0A=
		this.cfg.addProperty("overlays", { suppressEvent:true } );=0A=
=0A=
		/**=0A=
		* The default DOM event that should be used to focus an Overlay=0A=
		* @config focusevent=0A=
		* @type String=0A=
		* @default "mousedown"=0A=
		*/=0A=
		this.cfg.addProperty("focusevent", { value:"mousedown" } );=0A=
	},=0A=
=0A=
	/**=0A=
	* Initializes the OverlayManager=0A=
	* @method init=0A=
	* @param {YAHOO.widget.Overlay[]}	overlays	Optional. A collection of =
Overlays to register with the manager.=0A=
	* @param {Object}	userConfig		The object literal representing the user =
configuration of the OverlayManager=0A=
	*/=0A=
	init : function(userConfig) {=0A=
		/**=0A=
		* The OverlayManager's Config object used for monitoring configuration =
properties.=0A=
		* @property cfg=0A=
		* @type YAHOO.util.Config=0A=
		*/=0A=
		this.cfg =3D new YAHOO.util.Config(this);=0A=
=0A=
		this.initDefaultConfig();=0A=
=0A=
		if (userConfig) {=0A=
			this.cfg.applyConfig(userConfig, true);=0A=
		}=0A=
		this.cfg.fireQueue();=0A=
=0A=
		/**=0A=
		* The currently activated Overlay=0A=
		* @property activeOverlay=0A=
		* @private=0A=
		* @type YAHOO.widget.Overlay=0A=
		*/=0A=
		var activeOverlay =3D null;=0A=
=0A=
		/**=0A=
		* Returns the currently focused Overlay=0A=
		* @method getActive=0A=
		* @return {YAHOO.widget.Overlay}	The currently focused Overlay=0A=
		*/=0A=
		this.getActive =3D function() {=0A=
			return activeOverlay;=0A=
		};=0A=
=0A=
		/**=0A=
		* Focuses the specified Overlay=0A=
		* @method focus=0A=
		* @param {YAHOO.widget.Overlay} overlay	The Overlay to focus=0A=
		* @param {String} overlay	The id of the Overlay to focus=0A=
		*/=0A=
		this.focus =3D function(overlay) {=0A=
			var o =3D this.find(overlay);=0A=
			if (o) {=0A=
				this.blurAll();=0A=
				activeOverlay =3D o;=0A=
				YAHOO.util.Dom.addClass(activeOverlay.element, =
YAHOO.widget.OverlayManager.CSS_FOCUSED);=0A=
				this.overlays.sort(this.compareZIndexDesc);=0A=
				var topZIndex =3D YAHOO.util.Dom.getStyle(this.overlays[0].element, =
"zIndex");=0A=
				if (! isNaN(topZIndex) && this.overlays[0] !=3D overlay) {=0A=
					activeOverlay.cfg.setProperty("zIndex", (parseInt(topZIndex, 10) + =
2));=0A=
				}=0A=
				this.overlays.sort(this.compareZIndexDesc);=0A=
			}=0A=
		};=0A=
=0A=
		/**=0A=
		* Removes the specified Overlay from the manager=0A=
		* @method remove=0A=
		* @param {YAHOO.widget.Overlay}	overlay	The Overlay to remove=0A=
		* @param {String} overlay	The id of the Overlay to remove=0A=
		*/=0A=
		this.remove =3D function(overlay) {=0A=
			var o =3D this.find(overlay);=0A=
			if (o) {=0A=
				var originalZ =3D YAHOO.util.Dom.getStyle(o.element, "zIndex");=0A=
				o.cfg.setProperty("zIndex", -1000, true);=0A=
				this.overlays.sort(this.compareZIndexDesc);=0A=
				this.overlays =3D this.overlays.slice(0, this.overlays.length-1);=0A=
				o.cfg.setProperty("zIndex", originalZ, true);=0A=
=0A=
				o.cfg.setProperty("manager", null);=0A=
				o.focusEvent =3D null;=0A=
				o.blurEvent =3D null;=0A=
				o.focus =3D null;=0A=
				o.blur =3D null;=0A=
			}=0A=
		};=0A=
=0A=
		/**=0A=
		* Removes focus from all registered Overlays in the manager=0A=
		* @method blurAll=0A=
		*/=0A=
		this.blurAll =3D function() {=0A=
			activeOverlay =3D null;=0A=
			for (var o=3D0;o<this.overlays.length;o++) {=0A=
				YAHOO.util.Dom.removeClass(this.overlays[o].element, =
YAHOO.widget.OverlayManager.CSS_FOCUSED);=0A=
			}=0A=
		};=0A=
=0A=
		var overlays =3D this.cfg.getProperty("overlays");=0A=
=0A=
		if (! this.overlays) {=0A=
			this.overlays =3D [];=0A=
		}=0A=
=0A=
		if (overlays) {=0A=
			this.register(overlays);=0A=
			this.overlays.sort(this.compareZIndexDesc);=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Registers an Overlay or an array of Overlays with the manager. Upon =
registration, the Overlay receives functions for focus and blur, along =
with CustomEvents for each.=0A=
	* @method register=0A=
	* @param {YAHOO.widget.Overlay}	overlay		An Overlay to register with =
the manager.=0A=
	* @param {YAHOO.widget.Overlay[]}	overlay		An array of Overlays to =
register with the manager.=0A=
	* @return	{Boolean}	True if any Overlays are registered.=0A=
	*/=0A=
	register : function(overlay) {=0A=
		if (overlay instanceof YAHOO.widget.Overlay) {=0A=
			overlay.cfg.addProperty("manager", { value:this } );=0A=
=0A=
			overlay.focusEvent =3D new YAHOO.util.CustomEvent("focus");=0A=
			overlay.blurEvent =3D new YAHOO.util.CustomEvent("blur");=0A=
=0A=
			var mgr=3Dthis;=0A=
=0A=
			overlay.focus =3D function() {=0A=
				mgr.focus(this);=0A=
				this.focusEvent.fire();=0A=
			};=0A=
=0A=
			overlay.blur =3D function() {=0A=
				mgr.blurAll();=0A=
				this.blurEvent.fire();=0A=
			};=0A=
=0A=
			var focusOnDomEvent =3D function(e,obj) {=0A=
				overlay.focus();=0A=
			};=0A=
=0A=
			var focusevent =3D this.cfg.getProperty("focusevent");=0A=
			=
YAHOO.util.Event.addListener(overlay.element,focusevent,focusOnDomEvent,t=
his,true);=0A=
=0A=
			var zIndex =3D YAHOO.util.Dom.getStyle(overlay.element, "zIndex");=0A=
			if (! isNaN(zIndex)) {=0A=
				overlay.cfg.setProperty("zIndex", parseInt(zIndex, 10));=0A=
			} else {=0A=
				overlay.cfg.setProperty("zIndex", 0);=0A=
			}=0A=
=0A=
			this.overlays.push(overlay);=0A=
			return true;=0A=
		} else if (overlay instanceof Array) {=0A=
			var regcount =3D 0;=0A=
			for (var i=3D0;i<overlay.length;i++) {=0A=
				if (this.register(overlay[i])) {=0A=
					regcount++;=0A=
				}=0A=
			}=0A=
			if (regcount > 0) {=0A=
				return true;=0A=
			}=0A=
		} else {=0A=
			return false;=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Attempts to locate an Overlay by instance or ID.=0A=
	* @method find=0A=
	* @param {YAHOO.widget.Overlay}	overlay		An Overlay to locate within =
the manager=0A=
	* @param {String}	overlay		An Overlay id to locate within the manager=0A=
	* @return	{YAHOO.widget.Overlay}	The requested Overlay, if found, or =
null if it cannot be located.=0A=
	*/=0A=
	find : function(overlay) {=0A=
		if (overlay instanceof YAHOO.widget.Overlay) {=0A=
			for (var o=3D0;o<this.overlays.length;o++) {=0A=
				if (this.overlays[o] =3D=3D overlay) {=0A=
					return this.overlays[o];=0A=
				}=0A=
			}=0A=
		} else if (typeof overlay =3D=3D "string") {=0A=
			for (var p=3D0;p<this.overlays.length;p++) {=0A=
				if (this.overlays[p].id =3D=3D overlay) {=0A=
					return this.overlays[p];=0A=
				}=0A=
			}=0A=
		}=0A=
		return null;=0A=
	},=0A=
=0A=
	/**=0A=
	* Used for sorting the manager's Overlays by z-index.=0A=
	* @method compareZIndexDesc=0A=
	* @private=0A=
	* @return {Number}	0, 1, or -1, depending on where the Overlay should =
fall in the stacking order.=0A=
	*/=0A=
	compareZIndexDesc : function(o1, o2) {=0A=
		var zIndex1 =3D o1.cfg.getProperty("zIndex");=0A=
		var zIndex2 =3D o2.cfg.getProperty("zIndex");=0A=
=0A=
		if (zIndex1 > zIndex2) {=0A=
			return -1;=0A=
		} else if (zIndex1 < zIndex2) {=0A=
			return 1;=0A=
		} else {=0A=
			return 0;=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Shows all Overlays in the manager.=0A=
	* @method showAll=0A=
	*/=0A=
	showAll : function() {=0A=
		for (var o=3D0;o<this.overlays.length;o++) {=0A=
			this.overlays[o].show();=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Hides all Overlays in the manager.=0A=
	* @method hideAll=0A=
	*/=0A=
	hideAll : function() {=0A=
		for (var o=3D0;o<this.overlays.length;o++) {=0A=
			this.overlays[o].hide();=0A=
		}=0A=
	},=0A=
=0A=
	/**=0A=
	* Returns a string representation of the object.=0A=
	* @method toString=0A=
	* @return {String}	The string representation of the OverlayManager=0A=
	*/=0A=
	toString : function() {=0A=
		return "OverlayManager";=0A=
	}=0A=
=0A=
};=0A=
=0A=
/**=0A=
* KeyListener is a utility that provides an easy interface for listening =
for keydown/keyup events fired against DOM elements.=0A=
* @namespace YAHOO.util=0A=
* @class KeyListener=0A=
* @constructor=0A=
* @param {HTMLElement}	attachTo	The element or element ID to which the =
key event should be attached=0A=
* @param {String}	attachTo	The element or element ID to which the key =
event should be attached=0A=
* @param {Object}	keyData		The object literal representing the key(s) to =
detect. Possible attributes are shift(boolean), alt(boolean), =
ctrl(boolean) and keys(either an int or an array of ints representing =
keycodes).=0A=
* @param {Function}	handler		The CustomEvent handler to fire when the =
key event is detected=0A=
* @param {Object}	handler		An object literal representing the handler.=0A=
* @param {String}	event		Optional. The event (keydown or keyup) to =
listen for. Defaults automatically to keydown.=0A=
*/=0A=
YAHOO.util.KeyListener =3D function(attachTo, keyData, handler, event) {=0A=
	if (! attachTo) {=0A=
	}=0A=
	if (! keyData) {=0A=
	}=0A=
	if (! handler) {=0A=
	}=0A=
=0A=
	if (! event) {=0A=
		event =3D YAHOO.util.KeyListener.KEYDOWN;=0A=
	}=0A=
=0A=
	/**=0A=
	* The CustomEvent fired internally when a key is pressed=0A=
	* @event keyEvent=0A=
	* @private=0A=
	* @param {Object}	keyData		The object literal representing the key(s) =
to detect. Possible attributes are shift(boolean), alt(boolean), =
ctrl(boolean) and keys(either an int or an array of ints representing =
keycodes).=0A=
	*/=0A=
	var keyEvent =3D new YAHOO.util.CustomEvent("keyPressed");=0A=
=0A=
	/**=0A=
	* The CustomEvent fired when the KeyListener is enabled via the =
enable() function=0A=
	* @event enabledEvent=0A=
	* @param {Object}	keyData		The object literal representing the key(s) =
to detect. Possible attributes are shift(boolean), alt(boolean), =
ctrl(boolean) and keys(either an int or an array of ints representing =
keycodes).=0A=
	*/=0A=
	this.enabledEvent =3D new YAHOO.util.CustomEvent("enabled");=0A=
=0A=
	/**=0A=
	* The CustomEvent fired when the KeyListener is disabled via the =
disable() function=0A=
	* @event disabledEvent=0A=
	* @param {Object}	keyData		The object literal representing the key(s) =
to detect. Possible attributes are shift(boolean), alt(boolean), =
ctrl(boolean) and keys(either an int or an array of ints representing =
keycodes).=0A=
	*/=0A=
	this.disabledEvent =3D new YAHOO.util.CustomEvent("disabled");=0A=
=0A=
	if (typeof attachTo =3D=3D 'string') {=0A=
		attachTo =3D document.getElementById(attachTo);=0A=
	}=0A=
=0A=
	if (typeof handler =3D=3D 'function') {=0A=
		keyEvent.subscribe(handler);=0A=
	} else {=0A=
		keyEvent.subscribe(handler.fn, handler.scope, handler.correctScope);=0A=
	}=0A=
=0A=
	/**=0A=
	* Handles the key event when a key is pressed.=0A=
	* @method handleKeyPress=0A=
	* @param {DOMEvent} e	The keypress DOM event=0A=
	* @param {Object}	obj	The DOM event scope object=0A=
	* @private=0A=
	*/=0A=
	function handleKeyPress(e, obj) {=0A=
		if (! keyData.shift) {=0A=
			keyData.shift =3D false;=0A=
		}=0A=
		if (! keyData.alt) {=0A=
			keyData.alt =3D false;=0A=
		}=0A=
		if (! keyData.ctrl) {=0A=
			keyData.ctrl =3D false;=0A=
		}=0A=
=0A=
		// check held down modifying keys first=0A=
		if (e.shiftKey =3D=3D keyData.shift &&=0A=
			e.altKey   =3D=3D keyData.alt &&=0A=
			e.ctrlKey  =3D=3D keyData.ctrl) { // if we pass this, all modifiers =
match=0A=
=0A=
			var dataItem;=0A=
			var keyPressed;=0A=
=0A=
			if (keyData.keys instanceof Array) {=0A=
				for (var i=3D0;i<keyData.keys.length;i++) {=0A=
					dataItem =3D keyData.keys[i];=0A=
=0A=
					if (dataItem =3D=3D e.charCode ) {=0A=
						keyEvent.fire(e.charCode, e);=0A=
						break;=0A=
					} else if (dataItem =3D=3D e.keyCode) {=0A=
						keyEvent.fire(e.keyCode, e);=0A=
						break;=0A=
					}=0A=
				}=0A=
			} else {=0A=
				dataItem =3D keyData.keys;=0A=
				if (dataItem =3D=3D e.charCode ) {=0A=
					keyEvent.fire(e.charCode, e);=0A=
				} else if (dataItem =3D=3D e.keyCode) {=0A=
					keyEvent.fire(e.keyCode, e);=0A=
				}=0A=
			}=0A=
		}=0A=
	}=0A=
=0A=
	/**=0A=
	* Enables the KeyListener by attaching the DOM event listeners to the =
target DOM element=0A=
	* @method enable=0A=
	*/=0A=
	this.enable =3D function() {=0A=
		if (! this.enabled) {=0A=
			YAHOO.util.Event.addListener(attachTo, event, handleKeyPress);=0A=
			this.enabledEvent.fire(keyData);=0A=
		}=0A=
		/**=0A=
		* Boolean indicating the enabled/disabled state of the Tooltip=0A=
		* @property enabled=0A=
		* @type Boolean=0A=
		*/=0A=
		this.enabled =3D true;=0A=
	};=0A=
=0A=
	/**=0A=
	* Disables the KeyListener by removing the DOM event listeners from the =
target DOM element=0A=
	* @method disable=0A=
	*/=0A=
	this.disable =3D function() {=0A=
		if (this.enabled) {=0A=
			YAHOO.util.Event.removeListener(attachTo, event, handleKeyPress);=0A=
			this.disabledEvent.fire(keyData);=0A=
		}=0A=
		this.enabled =3D false;=0A=
	};=0A=
=0A=
	/**=0A=
	* Returns a String representation of the object.=0A=
	* @method toString=0A=
	* @return {String}	The string representation of the KeyListener=0A=
	*/=0A=
	this.toString =3D function() {=0A=
		return "KeyListener [" + keyData.keys + "] " + attachTo.tagName + =
(attachTo.id ? "[" + attachTo.id + "]" : "");=0A=
	};=0A=
=0A=
};=0A=
=0A=
/**=0A=
* Constant representing the DOM "keydown" event.=0A=
* @property YAHOO.util.KeyListener.KEYDOWN=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.util.KeyListener.KEYDOWN =3D "keydown";=0A=
=0A=
/**=0A=
* Constant representing the DOM "keyup" event.=0A=
* @property YAHOO.util.KeyListener.KEYUP=0A=
* @static=0A=
* @final=0A=
* @type String=0A=
*/=0A=
YAHOO.util.KeyListener.KEYUP =3D "keyup";=0A=
=0A=
/**=0A=
* ContainerEffect encapsulates animation transitions that are executed =
when an Overlay is shown or hidden.=0A=
* @namespace YAHOO.widget=0A=
* @class ContainerEffect=0A=
* @constructor=0A=
* @param {YAHOO.widget.Overlay}	overlay		The Overlay that the animation =
should be associated with=0A=
* @param {Object}	attrIn		The object literal representing the animation =
arguments to be used for the animate-in transition. The arguments for =
this literal are: attributes(object, see YAHOO.util.Anim for =
description), duration(Number), and method(i.e. =
YAHOO.util.Easing.easeIn).=0A=
* @param {Object}	attrOut		The object literal representing the animation =
arguments to be used for the animate-out transition. The arguments for =
this literal are: attributes(object, see YAHOO.util.Anim for =
description), duration(Number), and method(i.e. =
YAHOO.util.Easing.easeIn).=0A=
* @param {HTMLElement}	targetElement	Optional. The target element that =
should be animated during the transition. Defaults to overlay.element.=0A=
* @param {class}	Optional. The animation class to instantiate. Defaults =
to YAHOO.util.Anim. Other options include YAHOO.util.Motion.=0A=
*/=0A=
YAHOO.widget.ContainerEffect =3D function(overlay, attrIn, attrOut, =
targetElement, animClass) {=0A=
	if (! animClass) {=0A=
		animClass =3D YAHOO.util.Anim;=0A=
	}=0A=
=0A=
	/**=0A=
	* The overlay to animate=0A=
	* @property overlay=0A=
	* @type YAHOO.widget.Overlay=0A=
	*/=0A=
	this.overlay =3D overlay;=0A=
	/**=0A=
	* The animation attributes to use when transitioning into view=0A=
	* @property attrIn=0A=
	* @type Object=0A=
	*/=0A=
	this.attrIn =3D attrIn;=0A=
	/**=0A=
	* The animation attributes to use when transitioning out of view=0A=
	* @property attrOut=0A=
	* @type Object=0A=
	*/=0A=
	this.attrOut =3D attrOut;=0A=
	/**=0A=
	* The target element to be animated=0A=
	* @property targetElement=0A=
	* @type HTMLElement=0A=
	*/=0A=
	this.targetElement =3D targetElement || overlay.element;=0A=
	/**=0A=
	* The animation class to use for animating the overlay=0A=
	* @property animClass=0A=
	* @type class=0A=
	*/=0A=
	this.animClass =3D animClass;=0A=
};=0A=
=0A=
/**=0A=
* Initializes the animation classes and events.=0A=
* @method init=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.init =3D function() {=0A=
	this.beforeAnimateInEvent =3D new =
YAHOO.util.CustomEvent("beforeAnimateIn");=0A=
	this.beforeAnimateOutEvent =3D new =
YAHOO.util.CustomEvent("beforeAnimateOut");=0A=
=0A=
	this.animateInCompleteEvent =3D new =
YAHOO.util.CustomEvent("animateInComplete");=0A=
	this.animateOutCompleteEvent =3D new =
YAHOO.util.CustomEvent("animateOutComplete");=0A=
=0A=
	this.animIn =3D new this.animClass(this.targetElement, =
this.attrIn.attributes, this.attrIn.duration, this.attrIn.method);=0A=
	this.animIn.onStart.subscribe(this.handleStartAnimateIn, this);=0A=
	this.animIn.onTween.subscribe(this.handleTweenAnimateIn, this);=0A=
	this.animIn.onComplete.subscribe(this.handleCompleteAnimateIn, this);=0A=
=0A=
	this.animOut =3D new this.animClass(this.targetElement, =
this.attrOut.attributes, this.attrOut.duration, this.attrOut.method);=0A=
	this.animOut.onStart.subscribe(this.handleStartAnimateOut, this);=0A=
	this.animOut.onTween.subscribe(this.handleTweenAnimateOut, this);=0A=
	this.animOut.onComplete.subscribe(this.handleCompleteAnimateOut, this);=0A=
};=0A=
=0A=
/**=0A=
* Triggers the in-animation.=0A=
* @method animateIn=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.animateIn =3D function() {=0A=
	this.beforeAnimateInEvent.fire();=0A=
	this.animIn.animate();=0A=
};=0A=
=0A=
/**=0A=
* Triggers the out-animation.=0A=
* @method animateOut=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.animateOut =3D function() {=0A=
	this.beforeAnimateOutEvent.fire();=0A=
	this.animOut.animate();=0A=
};=0A=
=0A=
/**=0A=
* The default onStart handler for the in-animation.=0A=
* @method handleStartAnimateIn=0A=
* @param {String} type	The CustomEvent type=0A=
* @param {Object[]}	args	The CustomEvent arguments=0A=
* @param {Object} obj	The scope object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.handleStartAnimateIn =3D =
function(type, args, obj) { };=0A=
/**=0A=
* The default onTween handler for the in-animation.=0A=
* @method handleTweenAnimateIn=0A=
* @param {String} type	The CustomEvent type=0A=
* @param {Object[]}	args	The CustomEvent arguments=0A=
* @param {Object} obj	The scope object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateIn =3D =
function(type, args, obj) { };=0A=
/**=0A=
* The default onComplete handler for the in-animation.=0A=
* @method handleCompleteAnimateIn=0A=
* @param {String} type	The CustomEvent type=0A=
* @param {Object[]}	args	The CustomEvent arguments=0A=
* @param {Object} obj	The scope object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateIn =3D =
function(type, args, obj) { };=0A=
=0A=
/**=0A=
* The default onStart handler for the out-animation.=0A=
* @method handleStartAnimateOut=0A=
* @param {String} type	The CustomEvent type=0A=
* @param {Object[]}	args	The CustomEvent arguments=0A=
* @param {Object} obj	The scope object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.handleStartAnimateOut =3D =
function(type, args, obj) { };=0A=
/**=0A=
* The default onTween handler for the out-animation.=0A=
* @method handleTweenAnimateOut=0A=
* @param {String} type	The CustomEvent type=0A=
* @param {Object[]}	args	The CustomEvent arguments=0A=
* @param {Object} obj	The scope object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.handleTweenAnimateOut =3D =
function(type, args, obj) { };=0A=
/**=0A=
* The default onComplete handler for the out-animation.=0A=
* @method handleCompleteAnimateOut=0A=
* @param {String} type	The CustomEvent type=0A=
* @param {Object[]}	args	The CustomEvent arguments=0A=
* @param {Object} obj	The scope object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.handleCompleteAnimateOut =3D =
function(type, args, obj) { };=0A=
=0A=
/**=0A=
* Returns a string representation of the object.=0A=
* @method toString=0A=
* @return {String}	The string representation of the ContainerEffect=0A=
*/=0A=
YAHOO.widget.ContainerEffect.prototype.toString =3D function() {=0A=
	var output =3D "ContainerEffect";=0A=
	if (this.overlay) {=0A=
		output +=3D " [" + this.overlay.toString() + "]";=0A=
	}=0A=
	return output;=0A=
};=0A=
=0A=
/**=0A=
* A pre-configured ContainerEffect instance that can be used for fading =
an overlay in and out.=0A=
* @method FADE=0A=
* @static=0A=
* @param {Overlay}	overlay	The Overlay object to animate=0A=
* @param {Number}	dur	The duration of the animation=0A=
* @return {ContainerEffect}	The configured ContainerEffect object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.FADE =3D function(overlay, dur) {=0A=
	var fade =3D new YAHOO.widget.ContainerEffect(overlay, { =
attributes:{opacity: {from:0, to:1}}, duration:dur, =
method:YAHOO.util.Easing.easeIn }, { attributes:{opacity: {to:0}}, =
duration:dur, method:YAHOO.util.Easing.easeOut}, overlay.element );=0A=
=0A=
	fade.handleStartAnimateIn =3D function(type,args,obj) {=0A=
		YAHOO.util.Dom.addClass(obj.overlay.element, "hide-select");=0A=
=0A=
		if (! obj.overlay.underlay) {=0A=
			obj.overlay.cfg.refireEvent("underlay");=0A=
		}=0A=
=0A=
		if (obj.overlay.underlay) {=0A=
			obj.initialUnderlayOpacity =3D =
YAHOO.util.Dom.getStyle(obj.overlay.underlay, "opacity");=0A=
			obj.overlay.underlay.style.filter =3D null;=0A=
		}=0A=
=0A=
		YAHOO.util.Dom.setStyle(obj.overlay.element, "visibility", "visible");=0A=
		YAHOO.util.Dom.setStyle(obj.overlay.element, "opacity", 0);=0A=
	};=0A=
=0A=
	fade.handleCompleteAnimateIn =3D function(type,args,obj) {=0A=
		YAHOO.util.Dom.removeClass(obj.overlay.element, "hide-select");=0A=
=0A=
		if (obj.overlay.element.style.filter) {=0A=
			obj.overlay.element.style.filter =3D null;=0A=
		}=0A=
=0A=
		if (obj.overlay.underlay) {=0A=
			YAHOO.util.Dom.setStyle(obj.overlay.underlay, "opacity", =
obj.initialUnderlayOpacity);=0A=
		}=0A=
=0A=
		obj.overlay.cfg.refireEvent("iframe");=0A=
		obj.animateInCompleteEvent.fire();=0A=
	};=0A=
=0A=
	fade.handleStartAnimateOut =3D function(type, args, obj) {=0A=
		YAHOO.util.Dom.addClass(obj.overlay.element, "hide-select");=0A=
=0A=
		if (obj.overlay.underlay) {=0A=
			obj.overlay.underlay.style.filter =3D null;=0A=
		}=0A=
	};=0A=
=0A=
	fade.handleCompleteAnimateOut =3D  function(type, args, obj) {=0A=
		YAHOO.util.Dom.removeClass(obj.overlay.element, "hide-select");=0A=
		if (obj.overlay.element.style.filter) {=0A=
			obj.overlay.element.style.filter =3D null;=0A=
		}=0A=
		YAHOO.util.Dom.setStyle(obj.overlay.element, "visibility", "hidden");=0A=
		YAHOO.util.Dom.setStyle(obj.overlay.element, "opacity", 1);=0A=
=0A=
		obj.overlay.cfg.refireEvent("iframe");=0A=
=0A=
		obj.animateOutCompleteEvent.fire();=0A=
	};=0A=
=0A=
	fade.init();=0A=
	return fade;=0A=
};=0A=
=0A=
=0A=
/**=0A=
* A pre-configured ContainerEffect instance that can be used for sliding =
an overlay in and out.=0A=
* @method SLIDE=0A=
* @static=0A=
* @param {Overlay}	overlay	The Overlay object to animate=0A=
* @param {Number}	dur	The duration of the animation=0A=
* @return {ContainerEffect}	The configured ContainerEffect object=0A=
*/=0A=
YAHOO.widget.ContainerEffect.SLIDE =3D function(overlay, dur) {=0A=
	var x =3D overlay.cfg.getProperty("x") || =
YAHOO.util.Dom.getX(overlay.element);=0A=
	var y =3D overlay.cfg.getProperty("y") || =
YAHOO.util.Dom.getY(overlay.element);=0A=
=0A=
	var clientWidth =3D YAHOO.util.Dom.getClientWidth();=0A=
	var offsetWidth =3D overlay.element.offsetWidth;=0A=
=0A=
	var slide =3D new YAHOO.widget.ContainerEffect(overlay, {=0A=
															attributes:{ points: { to:[x, y] } },=0A=
															duration:dur,=0A=
															method:YAHOO.util.Easing.easeIn=0A=
														},=0A=
														{=0A=
															attributes:{ points: { to:[(clientWidth+25), y] } },=0A=
															duration:dur,=0A=
															method:YAHOO.util.Easing.easeOut=0A=
														},=0A=
														overlay.element,=0A=
														YAHOO.util.Motion);=0A=
=0A=
=0A=
	slide.handleStartAnimateIn =3D function(type,args,obj) {=0A=
		obj.overlay.element.style.left =3D (-25-offsetWidth) + "px";=0A=
		obj.overlay.element.style.top  =3D y + "px";=0A=
	};=0A=
=0A=
	slide.handleTweenAnimateIn =3D function(type, args, obj) {=0A=
=0A=
=0A=
		var pos =3D YAHOO.util.Dom.getXY(obj.overlay.element);=0A=
=0A=
		var currentX =3D pos[0];=0A=
		var currentY =3D pos[1];=0A=
=0A=
		if (YAHOO.util.Dom.getStyle(obj.overlay.element, "visibility") =3D=3D =
"hidden" && currentX < x) {=0A=
			YAHOO.util.Dom.setStyle(obj.overlay.element, "visibility", "visible");=0A=
		}=0A=
=0A=
		obj.overlay.cfg.setProperty("xy", [currentX,currentY], true);=0A=
		obj.overlay.cfg.refireEvent("iframe");=0A=
	};=0A=
=0A=
	slide.handleCompleteAnimateIn =3D function(type, args, obj) {=0A=
		obj.overlay.cfg.setProperty("xy", [x,y], true);=0A=
		obj.startX =3D x;=0A=
		obj.startY =3D y;=0A=
		obj.overlay.cfg.refireEvent("iframe");=0A=
		obj.animateInCompleteEvent.fire();=0A=
	};=0A=
=0A=
	slide.handleStartAnimateOut =3D function(type, args, obj) {=0A=
		var vw =3D YAHOO.util.Dom.getViewportWidth();=0A=
=0A=
		var pos =3D YAHOO.util.Dom.getXY(obj.overlay.element);=0A=
=0A=
		var yso =3D pos[1];=0A=
=0A=
		var currentTo =3D obj.animOut.attributes.points.to;=0A=
		obj.animOut.attributes.points.to =3D [(vw+25), yso];=0A=
	};=0A=
=0A=
	slide.handleTweenAnimateOut =3D function(type, args, obj) {=0A=
		var pos =3D YAHOO.util.Dom.getXY(obj.overlay.element);=0A=
=0A=
		var xto =3D pos[0];=0A=
		var yto =3D pos[1];=0A=
=0A=
		obj.overlay.cfg.setProperty("xy", [xto,yto], true);=0A=
		obj.overlay.cfg.refireEvent("iframe");=0A=
	};=0A=
=0A=
	slide.handleCompleteAnimateOut =3D function(type, args, obj) {=0A=
		YAHOO.util.Dom.setStyle(obj.overlay.element, "visibility", "hidden");=0A=
=0A=
		obj.overlay.cfg.setProperty("xy", [x,y]);=0A=
		obj.animateOutCompleteEvent.fire();=0A=
	};=0A=
=0A=
	slide.init();=0A=
	return slide;=0A=
};=0A=
=0A=
YAHOO.register("container_core", YAHOO.widget.Module, {version: "2.2.0", =
build: "127"});=0A=

------=_NextPart_000_0000_01C8916C.DDD66550
Content-Type: application/x-js
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.collegepublisher.com/media/scripts/carousel.js

/**=0A=
 * Copyright (c) 2006, Bill W. Scott=0A=
 * All rights reserved.=0A=
 *=0A=
 * This work is licensed under the Creative Commons Attribution 2.5 =
License. To view a copy =0A=
 * of this license, visit http://creativecommons.org/licenses/by/2.5/ or =
send a letter to =0A=
 * Creative Commons, 543 Howard Street, 5th Floor, San Francisco, =
California, 94105, USA.=0A=
 *=0A=
 * This work was created by Bill Scott (billwscott.com, =
looksgoodworkswell.com).=0A=
 * =0A=
 * The only attribution I require is to keep this notice of copyright & =
license =0A=
 * in this original source file.=0A=
 *=0A=
 * Version 0.4.0 - 01.29.2007=0A=
 *=0A=
 */=0A=
YAHOO.namespace("extension");=0A=
=0A=
/**=0A=
* @class =0A=
* The carousel class manages a content list (a set of LI elements within =
an UL list)  that can be displayed horizontally or vertically. The =
content can be scrolled back and forth  with or without animation. The =
content can reference static HTML content or the list items can  be =
created dynamically on-the-fly (with or without Ajax). The navigation =
and event handling  can be externalized from the class.=0A=
* @param {object|string} carouselElementID The element ID (id name or id =
object) of the DIV that will become a carousel=0A=
* @param {object} carouselCfg The configuration object literal =
containing the configuration that should be set for this module. See =
configuration documentation for more details.=0A=
* @constructor=0A=
*/=0A=
YAHOO.extension.Carousel =3D function(carouselElementID, carouselCfg) {=0A=
 		this.init(carouselElementID, carouselCfg);=0A=
	};=0A=
=0A=
YAHOO.extension.Carousel.prototype =3D {=0A=
=0A=
=0A=
	/**=0A=
	 * Constant denoting that the carousel size is unbounded (no limits set =
on scrolling)=0A=
	 * @type number=0A=
	 */=0A=
	UNBOUNDED_SIZE: 1000000,=0A=
	=0A=
	/**=0A=
	 * Initializes the carousel object and all of its local members.=0A=
     * @param {object|string} carouselElementID The element ID (id name =
or id object) =0A=
     * of the DIV that will become a carousel=0A=
     * @param {object} carouselCfg The configuration object literal =
containing the =0A=
     * configuration that should be set for this module. See =
configuration documentation for more details.=0A=
	 */=0A=
	init: function(carouselElementID, carouselCfg) {=0A=
=0A=
		var oThis =3D this;=0A=
=0A=
		// CSS style classes=0A=
		var carouselListClass =3D "carousel-list";=0A=
		var carouselClipRegionClass =3D "carousel-clip-region";=0A=
		var carouselNextClass =3D "carousel-next";=0A=
		var carouselPrevClass =3D "carousel-prev";=0A=
=0A=
 		this.carouselElemID =3D carouselElementID;=0A=
 		this.carouselElem =3D YAHOO.util.Dom.get(carouselElementID);=0A=
=0A=
 		this.prevEnabled =3D true;=0A=
 		this.nextEnabled =3D true;=0A=
 		=0A=
 		// Create the config object=0A=
 		this.cfg =3D new YAHOO.util.Config(this);=0A=
=0A=
		/**=0A=
		 * orientation property. =0A=
		 * Either "horizontal" or "vertical". Changes carousel from a =0A=
		 * left/right style carousel to a up/down style carousel.=0A=
		 */=0A=
		this.cfg.addProperty("orientation", { =0A=
				value:"horizontal", =0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.orientation =3D args[0];=0A=
					oThis.reload();=0A=
				},=0A=
				validator: function(orientation) {=0A=
				    if(typeof orientation =3D=3D "string") {=0A=
				        return =
("horizontal,vertical".indexOf(orientation.toLowerCase()) !=3D -1);=0A=
				    } else {=0A=
						return false;=0A=
					}=0A=
				}=0A=
		} );		=0A=
=0A=
		/**=0A=
		 * size property. =0A=
		 * The upper hand for scrolling in the 'next' set of content. =0A=
		 * Set to a large value by default (this means unlimited scrolling.) =0A=
		 */=0A=
		this.cfg.addProperty("size", { =0A=
				value:this.UNBOUNDED_SIZE,=0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.size =3D args[0];=0A=
					oThis.reload();=0A=
				},=0A=
				validator: oThis.cfg.checkNumber=0A=
		} );=0A=
=0A=
		/**=0A=
		 * numVisible property. =0A=
		 * The number of items that will be visible.=0A=
		 */=0A=
		this.cfg.addProperty("numVisible", { =0A=
				value:3,=0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.numVisible =3D args[0];=0A=
					oThis.load();=0A=
				},=0A=
				validator: oThis.cfg.checkNumber=0A=
		} );=0A=
=0A=
		/**=0A=
		 * firstVisible property. =0A=
		 * Sets which item should be the first visible item in the carousel. =
Use to set which item will=0A=
		 * display as the first element when the carousel is first displayed. =
After the carousel is created,=0A=
		 * you can manipulate which item is the first visible by using the =
moveTo() or scrollTo() convenience=0A=
		 * methods.=0A=
		 */=0A=
		this.cfg.addProperty("firstVisible", { =0A=
				value:1,=0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.moveTo(args[0]);=0A=
				},=0A=
				validator: oThis.cfg.checkNumber=0A=
		} );=0A=
=0A=
		/**=0A=
		 * scrollInc property. =0A=
		 * The number of items to scroll by. Think of this as the page =
increment.=0A=
		 */=0A=
		this.cfg.addProperty("scrollInc", { =0A=
				value:3,=0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.scrollInc =3D args[0];=0A=
				},=0A=
				validator: oThis.cfg.checkNumber=0A=
		} );=0A=
		=0A=
		/**=0A=
		 * animationSpeed property. =0A=
		 * The time (in seconds) it takes to complete the scroll animation. =0A=
		 * If set to 0, animated transitions are turned off and the new page =
of content is =0A=
		 * moved immdediately into place.=0A=
		 */=0A=
		this.cfg.addProperty("animationSpeed", { =0A=
				value:0.25,=0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.animationSpeed =3D args[0];=0A=
				},=0A=
				validator: oThis.cfg.checkNumber=0A=
		} );=0A=
=0A=
		/**=0A=
		 * animationMethod property. =0A=
		 * The <a =
href=3D"http://developer.yahoo.com/yui/docs/animation/YAHOO.util.Easing.h=
tml">YAHOO.util.Easing</a> =0A=
		 * method.=0A=
		 */=0A=
		this.cfg.addProperty("animationMethod", { =0A=
				value:  YAHOO.util.Easing.easeOut,=0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.animationMethod =3D args[0];=0A=
				}=0A=
		} );=0A=
		=0A=
		/**=0A=
		 * animationCompleteHandler property. =0A=
		 * JavaScript function that is called when the Carousel finishes =
animation =0A=
		 * after a next or previous nagivation. =0A=
		 * Only invoked if animationSpeed > 0. =0A=
		 * Two parameters are passed: type (set to 'onAnimationComplete') and =0A=
		 * args array (args[0] =3D direction [either: 'next' or 'previous']).=0A=
		 */=0A=
		this.cfg.addProperty("animationCompleteHandler", { =0A=
				value:null,=0A=
				handler: function(type, args, carouselElem) {=0A=
					if(oThis.animationCompleteEvt) {=0A=
						=
oThis.animationCompleteEvt.unsubscribe(oThis.animationCompleteHandler, =
oThis);=0A=
					}=0A=
					oThis.animationCompleteHandler =3D args[0];=0A=
					if(oThis._isValidObj(oThis.animationCompleteHandler)) {=0A=
						oThis.animationCompleteEvt =3D new =
YAHOO.util.CustomEvent("onAnimationComplete", oThis);=0A=
						=
oThis.animationCompleteEvt.subscribe(oThis.animationCompleteHandler, =
oThis);=0A=
					}=0A=
				}=0A=
		} );=0A=
		=0A=
		/**=0A=
		 * autoPlay property. =0A=
		 * Specifies how many milliseconds to periodically auto scroll the =
content. =0A=
		 * If set to 0 (default) then autoPlay is turned off. =0A=
		 * If the user interacts by clicking left or right navigation, =
autoPlay is turned off. =0A=
		 * You can restart autoPlay by calling the <em>startAutoPlay()</em>. =0A=
		 * If you externally control navigation (with your own event handlers) =0A=
		 * then you may want to turn off the autoPlay by =
calling<em>stopAutoPlay()</em>=0A=
		 */=0A=
		this.cfg.addProperty("autoPlay", { =0A=
				value:0,=0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.autoPlay =3D args[0];=0A=
					if(oThis.autoPlay > 0)=0A=
						oThis.startAutoPlay();=0A=
					else=0A=
						oThis.stopAutoPlay();=0A=
				}=0A=
		} );=0A=
		=0A=
		/**=0A=
		 * wrap property. =0A=
		 * Specifies whether to wrap when at the end of scrolled content. When =
the end is reached,=0A=
		 * the carousel will scroll backwards to the item 1 (the =
animationSpeed parameter is used to =0A=
		 * determine how quickly it should animate back to the start.)=0A=
		 * Ignored if the <em>size</em> attribute is not explicitly set =0A=
		 * (i.e., value equals YAHOO.extension.Carousel.UNBOUNDED_SIZE)=0A=
		 */=0A=
		this.cfg.addProperty("wrap", { =0A=
				value:false,=0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.wrap =3D args[0];=0A=
				},=0A=
				validator: oThis.cfg.checkBoolean=0A=
		} );=0A=
		=0A=
		/**=0A=
		 * navMargin property. =0A=
		 * The margin space for the navigation controls. This is only useful =
for horizontal carousels =0A=
		 * in which you have embedded navigation controls. =0A=
		 * The <em>navMargin</em> allocates space between the left and right =
margins =0A=
		 * (each navMargin wide) giving space for the navigation controls.=0A=
		 */=0A=
		this.cfg.addProperty("navMargin", { =0A=
				value:0,=0A=
				handler: function(type, args, carouselElem) {=0A=
					oThis.navMargin =3D args[0];=0A=
				},=0A=
				validator: oThis.cfg.checkNumber=0A=
		} );=0A=
		=0A=
		// For backward compatibility. Deprecated.=0A=
		this.cfg.addProperty("prevElementID", { =0A=
			value: null,=0A=
			handler: function(type, args, carouselElem) {=0A=
				if(oThis.carouselPrev) {=0A=
					YAHOO.util.Event.removeListener(oThis.carouselPrev, "click", =
oThis._scrollPrev);=0A=
				} =0A=
				oThis.prevElementID =3D args[0];=0A=
				if(oThis.prevElementID =3D=3D null) {=0A=
					oThis.carouselPrev =3D =
YAHOO.util.Dom.getElementsByClassName(carouselPrevClass, =0A=
														"div", oThis.carouselElem)[0];=0A=
				} else {=0A=
					oThis.carouselPrev =3D YAHOO.util.Dom.get(oThis.prevElementID);=0A=
				}=0A=
				YAHOO.util.Event.addListener(oThis.carouselPrev, "click", =
oThis._scrollPrev, oThis);=0A=
			}=0A=
		});=0A=
		=0A=
		/**=0A=
		 * prevElement property. =0A=
		 * An element or elements that will provide the previous navigation =
control.=0A=
		 * prevElement may be a single element or an array of elements. The =
values may be strings denoting=0A=
		 * the ID of the element or the object itself.=0A=
		 * If supplied, then events are wired to this control to fire scroll =
events to move the carousel to=0A=
		 * the previous content. =0A=
		 * You may want to provide your own interaction for controlling the =
carousel. If=0A=
		 * so leave this unset and provide your own event handling mechanism.=0A=
		 */=0A=
		this.cfg.addProperty("prevElement", { =0A=
				value:null,=0A=
				handler: function(type, args, carouselElem) {=0A=
					if(oThis.carouselPrev) {=0A=
						YAHOO.util.Event.removeListener(oThis.carouselPrev, "click", =
oThis._scrollPrev);=0A=
					} =0A=
					oThis.prevElementID =3D args[0];=0A=
					if(oThis.prevElementID =3D=3D null) {=0A=
						oThis.carouselPrev =3D =
YAHOO.util.Dom.getElementsByClassName(carouselPrevClass, =0A=
															"div", oThis.carouselElem)[0];=0A=
					} else {=0A=
						oThis.carouselPrev =3D YAHOO.util.Dom.get(oThis.prevElementID);=0A=
					}=0A=
					YAHOO.util.Event.addListener(oThis.carouselPrev, "click", =
oThis._scrollPrev, oThis);=0A=
				}=0A=
		} );=0A=
		=0A=
		// For backward compatibility. Deprecated.=0A=
		this.cfg.addProperty("nextElementID", { =0A=
			value: null,=0A=
			handler: function(type, args, carouselElem) {=0A=
				if(oThis.carouselNext) {=0A=
					YAHOO.util.Event.removeListener(oThis.carouselNext, "click", =
oThis._scrollNext);=0A=
				} =0A=
				oThis.nextElementID =3D args[0];=0A=
				if(oThis.nextElementID =3D=3D null) {=0A=
					oThis.carouselNext =3D =
YAHOO.util.Dom.getElementsByClassName(carouselNextClass, =0A=
														"div", oThis.carouselElem);=0A=
				} else {=0A=
					oThis.carouselNext =3D YAHOO.util.Dom.get(oThis.nextElementID);=0A=
				}=0A=
				if(oThis.carouselNext) {=0A=
					YAHOO.util.Event.addListener(oThis.carouselNext, "click", =
oThis._scrollNext, oThis);=0A=
				} =0A=
			}=0A=
		});=0A=
		=0A=
		/**=0A=
		 * nextElement property. =0A=
		 * An element or elements that will provide the next navigation =
control.=0A=
		 * nextElement may be a single element or an array of elements. The =
values may be strings denoting=0A=
		 * the ID of the element or the object itself.=0A=
		 * If supplied, then events are wired to this control to fire scroll =
events to move the carousel to=0A=
		 * the next content. =0A=
		 * You may want to provide your own interaction for controlling the =
carousel. If=0A=
		 * so leave this unset and provide your own event handling mechanism.=0A=
		 */=0A=
		this.cfg.addProperty("nextElement", { =0A=
				value:null,=0A=
				handler: function(type, args, carouselElem) {=0A=
					if(oThis.carouselNext) {=0A=
						YAHOO.util.Event.removeListener(oThis.carouselNext, "click", =
oThis._scrollNext);=0A=
					} =0A=
					oThis.nextElementID =3D args[0];=0A=
					if(oThis.nextElementID =3D=3D null) {=0A=
						oThis.carouselNext =3D =
YAHOO.util.Dom.getElementsByClassName(carouselNextClass, =0A=
															"div", oThis.carouselElem);=0A=
					} else {=0A=
						oThis.carouselNext =3D YAHOO.util.Dom.get(oThis.nextElementID);=0A=
					}=0A=
					if(oThis.carouselNext) {=0A=
						YAHOO.util.Event.addListener(oThis.carouselNext, "click", =
oThis._scrollNext, oThis);=0A=
					} =0A=
				}=0A=
		} );=0A=
		=0A=
		/**=0A=
		 * loadInitHandler property. =0A=
		 * JavaScript function that is called when the Carousel needs to load =0A=
		 * the initial set of visible items. Two parameters are passed: =0A=
		 * type (set to 'onLoadInit') and an argument array (args[0] =3D start =
index, args[1] =3D last index).=0A=
		 */=0A=
		this.cfg.addProperty("loadInitHandler", { =0A=
				value:null,=0A=
				handler: function(type, args, carouselElem) {=0A=
					if(oThis.loadInitHandlerEvt) {=0A=
						oThis.loadInitHandlerEvt.unsubscribe(oThis.loadInitHandler, oThis);=0A=
					}=0A=
					oThis.loadInitHandler =3D args[0];=0A=
					if(oThis.loadInitHandlerEvt) {=0A=
						oThis.loadInitHandlerEvt =3D new =
YAHOO.util.CustomEvent("onLoadInit", oThis);=0A=
						oThis.loadInitHandlerEvt.subscribe(oThis.loadInitHandler, oThis);=0A=
					}=0A=
				}=0A=
		} );=0A=
		=0A=
		/**=0A=
		 * loadNextHandler property. =0A=
		 * JavaScript function that is called when the Carousel needs to load =0A=
		 * the next set of items (in response to the user navigating to the =
next set.) =0A=
		 * Two parameters are passed: type (set to 'onLoadNext') and =0A=
		 * args array (args[0] =3D start index, args[1] =3D last index).=0A=
		 */=0A=
		this.cfg.addProperty("loadNextHandler", { =0A=
				value:null,=0A=
				handler: function(type, args, carouselElem) {=0A=
					if(oThis.loadNextHandlerEvt) {=0A=
						oThis.loadNextHandlerEvt.unsubscribe(oThis.loadNextHandler, oThis);=0A=
					}=0A=
					oThis.loadNextHandler =3D args[0];=0A=
					if(oThis.loadNextHandlerEvt) {=0A=
						oThis.loadNextHandlerEvt =3D new =
YAHOO.util.CustomEvent("onLoadNext", oThis);=0A=
						oThis.loadNextHandlerEvt.subscribe(oThis.loadNextHandler, oThis);=0A=
					}=0A=
				}=0A=
		} );=0A=
				=0A=
		/**=0A=
		 * loadPrevHandler property. =0A=
		 * JavaScript function that is called when the Carousel needs to load =0A=
		 * the previous set of items (in response to the user navigating to =
the previous set.) =0A=
		 * Two parameters are passed: type (set to 'onLoadPrev') and args =
array =0A=
		 * (args[0] =3D start index, args[1] =3D last index).=0A=
		 */=0A=
		this.cfg.addProperty("loadPrevHandler", { =0A=
				value:null,=0A=
				handler: function(type, args, carouselElem) {=0A=
					if(oThis.loadPrevHandlerEvt) {=0A=
						oThis.loadPrevHandlerEvt.unsubscribe(oThis.loadPrevHandler, oThis);=0A=
					}=0A=
					oThis.loadPrevHandler =3D args[0];=0A=
					if(oThis.loadPrevHandlerEvt) {=0A=
						oThis.loadPrevHandlerEvt =3D new =
YAHOO.util.CustomEvent("onLoadPrev", oThis);=0A=
						oThis.loadPrevHandlerEvt.subscribe(oThis.loadPrevHandler, oThis);=0A=
					}=0A=
				}=0A=
		} );=0A=
		=0A=
		/**=0A=
		 * prevButtonStateHandler property. =0A=
		 * JavaScript function that is called when the enabled state of the =0A=
		 * 'previous' control is changing. The responsibility of =0A=
		 * this method is to enable or disable the 'previous' control. =0A=
		 * Two parameters are passed to this method: <em>type</em> =0A=
		 * (which is set to "onPrevButtonStateChange") and <em>args</em>, =0A=
		 * an array that contains two values. =0A=
		 * The parameter args[0] is a flag denoting whether the 'previous' =
control =0A=
		 * is being enabled or disabled. The parameter args[1] is the element =
object =0A=
		 * derived from the <em>prevElement</em> parameter.=0A=
		 * If you do not supply a prevElement then you will need to track=0A=
		 * the elements that you would want to enable/disable while handling =
the state change.=0A=
		 */=0A=
		this.cfg.addProperty("prevButtonStateHandler", { =0A=
				value:null,=0A=
				handler: function(type, args, carouselElem) {=0A=
					if(oThis.prevButtonStateHandler) {=0A=
						=
oThis.prevButtonStateHandlerEvt.unsubscribe(oThis.prevButtonStateHandler,=
 oThis);=0A=
					}=0A=
					oThis.prevButtonStateHandler =3D args[0];=0A=
					if(oThis.prevButtonStateHandler) {=0A=
						oThis.prevButtonStateHandlerEvt =3D new =
YAHOO.util.CustomEvent("onPrevButtonStateChange", oThis);=0A=
						=
oThis.prevButtonStateHandlerEvt.subscribe(oThis.prevButtonStateHandler, =
oThis);=0A=
					}=0A=
				}=0A=
		} );=0A=
		=0A=
		/**=0A=
		 * nextButtonStateHandler property. =0A=
		 * JavaScript function that is called when the enabled state of the =0A=
		 * 'next' control is changing. The responsibility of =0A=
		 * this method is to enable or disable the 'next' control. =0A=
		 * Two parameters are passed to this method: <em>type</em> =0A=
		 * (which is set to "onNextButtonStateChange") and <em>args</em>, =0A=
		 * an array that contains two values. =0A=
		 * The parameter args[0] is a flag denoting whether the 'next' control =0A=
		 * is being enabled or disabled. The parameter args[1] is the element =
object =0A=
		 * derived from the <em>nextElement</em> parameter.=0A=
		 * If you do not supply a nextElement then you will need to track=0A=
		 * the elements that you would want to enable/disable while handling =
the state change.=0A=
		 */=0A=
		this.cfg.addProperty("nextButtonStateHandler", { =0A=
				value:null,=0A=
				handler: function(type, args, carouselElem) {=0A=
					if(oThis.nextButtonStateHandler) {=0A=
						=
oThis.nextButtonStateHandlerEvt.unsubscribe(oThis.nextButtonStateHandler,=
 oThis);=0A=
					}=0A=
					oThis.nextButtonStateHandler =3D args[0];=0A=
					if(oThis.nextButtonStateHandler) {=0A=
						oThis.nextButtonStateHandlerEvt =3D new =
YAHOO.util.CustomEvent("onNextButtonStateChange", oThis);=0A=
						=
oThis.nextButtonStateHandlerEvt.subscribe(oThis.nextButtonStateHandler, =
oThis);=0A=
					}=0A=
				}=0A=
		} );=0A=
		=0A=
		=0A=
 		if(carouselCfg) {=0A=
 			this.cfg.applyConfig(carouselCfg);=0A=
 		}=0A=
 		=0A=
 		this.scrollInc =3D this.cfg.getProperty("scrollInc");=0A=
		this.navMargin =3D this.cfg.getProperty("navMargin");=0A=
		this.loadInitHandler =3D this.cfg.getProperty("loadInitHandler");=0A=
		this.loadNextHandler =3D this.cfg.getProperty("loadNextHandler");=0A=
		this.loadPrevHandler =3D this.cfg.getProperty("loadPrevHandler");=0A=
		this.prevButtonStateHandler =3D =
this.cfg.getProperty("prevButtonStateHandler");=0A=
		this.nextButtonStateHandler =3D =
this.cfg.getProperty("nextButtonStateHandler");=0A=
		this.animationCompleteHandler =3D =
this.cfg.getProperty("animationCompleteHandler");=0A=
		this.size =3D this.cfg.getProperty("size");=0A=
		this.wrap =3D this.cfg.getProperty("wrap");=0A=
		this.animationMethod =3D this.cfg.getProperty("animationMethod");=0A=
		this.orientation =3D this.cfg.getProperty("orientation");=0A=
		this.nextElementID =3D this.cfg.getProperty("nextElementID");=0A=
		if(!this.nextElementID) =0A=
			this.nextElementID =3D this.cfg.getProperty("nextElement");=0A=
		=0A=
		this.prevElementID =3D this.cfg.getProperty("prevElementID");=0A=
		if(!this.prevElementID) =0A=
			this.prevElementID =3D this.cfg.getProperty("prevElement");=0A=
=0A=
		this.autoPlay =3D this.cfg.getProperty("autoPlay");=0A=
		this.autoPlayTimer =3D null;=0A=
		this.numVisible =3D this.cfg.getProperty("numVisible");=0A=
		this.firstVisible =3D this.cfg.getProperty("firstVisible");=0A=
		this.lastVisible =3D this.firstVisible;=0A=
		this.lastPrebuiltIdx =3D 0;=0A=
		this.currSize =3D 0;=0A=
		 		=0A=
 		// prefetch elements=0A=
 		this.carouselList =3D =
YAHOO.util.Dom.getElementsByClassName(carouselListClass, =0A=
												"ul", this.carouselElem)[0];=0A=
							=0A=
		if(this.nextElementID =3D=3D null) {=0A=
			this.carouselNext =3D =
YAHOO.util.Dom.getElementsByClassName(carouselNextClass, =0A=
												"div", this.carouselElem)[0];=0A=
		} else {=0A=
			this.carouselNext =3D YAHOO.util.Dom.get(this.nextElementID);=0A=
		}=0A=
=0A=
		if(this.prevElementID =3D=3D null) {=0A=
 			this.carouselPrev =3D =
YAHOO.util.Dom.getElementsByClassName(carouselPrevClass, =0A=
												"div", this.carouselElem)[0];=0A=
		} else {=0A=
			this.carouselPrev =3D YAHOO.util.Dom.get(this.prevElementID);=0A=
		}=0A=
		=0A=
		this.clipReg =3D =
YAHOO.util.Dom.getElementsByClassName(carouselClipRegionClass, =0A=
												"div", this.carouselElem)[0];=0A=
												=0A=
		// add a style class dynamically so that the correct styles get =
applied for a vertical carousel=0A=
		if(this.isVertical()) {=0A=
			YAHOO.util.Dom.addClass(this.carouselList, "carousel-vertical");=0A=
		}=0A=
		=0A=
		// initialize the animation objects for next/previous=0A=
 		this.scrollNextAnim =3D new YAHOO.util.Motion(this.carouselList, =
this.scrollNextParams, =0A=
   								this.cfg.getProperty("animationSpeed"), this.animationMethod);=0A=
 		this.scrollPrevAnim =3D new YAHOO.util.Motion(this.carouselList, =
this.scrollPrevParams, =0A=
   								this.cfg.getProperty("animationSpeed"), this.animationMethod);=0A=
		=0A=
		// If they supplied a nextElementID then wire an event listener for =
the click=0A=
		if(this.carouselNext) {=0A=
			YAHOO.util.Event.addListener(this.carouselNext, "click", =
this._scrollNext, this);=0A=
		} =0A=
		=0A=
		// If they supplied a prevElementID then wire an event listener for =
the click=0A=
		if(this.carouselPrev) {=0A=
			YAHOO.util.Event.addListener(this.carouselPrev, "click", =
this._scrollPrev, this);=0A=
		}=0A=
				=0A=
		// Wire up the various event handlers that they might have supplied=0A=
		if(this.loadInitHandler) {=0A=
			this.loadInitHandlerEvt =3D new YAHOO.util.CustomEvent("onLoadInit", =
this);=0A=
			this.loadInitHandlerEvt.subscribe(this.loadInitHandler, this);=0A=
		}=0A=
		if(this.loadNextHandler) {=0A=
			this.loadNextHandlerEvt =3D new YAHOO.util.CustomEvent("onLoadNext", =
this);=0A=
			this.loadNextHandlerEvt.subscribe(this.loadNextHandler, this);=0A=
		}=0A=
		if(this.loadPrevHandler) {=0A=
			this.loadPrevHandlerEvt =3D new YAHOO.util.CustomEvent("onLoadPrev", =
this);=0A=
			this.loadPrevHandlerEvt.subscribe(this.loadPrevHandler, this);=0A=
		}=0A=
		if(this.animationCompleteHandler) {=0A=
			this.animationCompleteEvt =3D new =
YAHOO.util.CustomEvent("onAnimationComplete", this);=0A=
			this.animationCompleteEvt.subscribe(this.animationCompleteHandler, =
this);=0A=
		}=0A=
		if(this.prevButtonStateHandler) {=0A=
			this.prevButtonStateHandlerEvt =3D new =
YAHOO.util.CustomEvent("onPrevButtonStateChange", =0A=
							this);=0A=
			this.prevButtonStateHandlerEvt.subscribe(this.prevButtonStateHandler, =
this);=0A=
		}=0A=
		if(this.nextButtonStateHandler) {=0A=
			this.nextButtonStateHandlerEvt =3D new =
YAHOO.util.CustomEvent("onNextButtonStateChange", this);=0A=
			this.nextButtonStateHandlerEvt.subscribe(this.nextButtonStateHandler, =
this);=0A=
		}=0A=
		=0A=
		// Since loading may take some time, wire up a listener to fire when =
at least the first=0A=
		// element actually gets loaded=0A=
  		YAHOO.util.Event.onAvailable(this.carouselElemID + "-item-1", =
this._calculateSize, this);=0A=
  		=0A=
  		// Call the initial loading sequence=0A=
		this._loadInitial();	=0A=
=0A=
	},=0A=
	=0A=
	// /////////////////// Public API =
//////////////////////////////////////////=0A=
=0A=
	/**=0A=
	 * Clears all items from the list and resets to the carousel to its =
original initial state.=0A=
	 */=0A=
	clear: function() {=0A=
		this.moveTo(1);=0A=
		this._removeChildrenFromNode(this.carouselList);=0A=
		this.stopAutoPlay();=0A=
		this.firstVisible =3D 1;=0A=
		this.lastVisible =3D 1;=0A=
		this.lastPrebuiltIdx =3D 0;=0A=
		this.currSize =3D 0;=0A=
		this.size =3D this.cfg.getProperty("size");=0A=
	},=0A=
	=0A=
	/**=0A=
	 * Clears all items from the list and calls the loadInitHandler to load =
new items into the list. =0A=
	 * The carousel size is reset to the original size set during creation.=0A=
	 * @param {number}	numVisible	Optional parameter: numVisible. =0A=
	 * If set, the carousel will resize on the reload to show numVisible =
items.=0A=
	 */=0A=
	reload: function(numVisible) {=0A=
		// this should be deprecated, not needed since can be set via property =
change=0A=
	    if(this._isValidObj(numVisible)) {=0A=
	    	this.numVisible =3D numVisible;=0A=
	    }=0A=
		this.clear();=0A=
		YAHOO.util.Event.onAvailable(this.carouselElemID + "-item-1", =
this._calculateSize, this);  		=0A=
		this._loadInitial();=0A=
	},=0A=
=0A=
	load: function() {=0A=
		YAHOO.util.Event.onAvailable(this.carouselElemID + "-item-1", =
this._calculateSize, this);  		=0A=
		this._loadInitial();=0A=
	},=0A=
	=0A=
	/**=0A=
	 * Clears all items from the list and calls the loadInitHandler to load =
new items into the list. =0A=
	 * The carousel size is reset to the original size set during creation.=0A=
	 * With patch from Dan Hobbs for handling unordered loading.=0A=
	 * @param {number}	idx	which item in the list to potentially create. =0A=
	 * If item already exists it will not create a new item.=0A=
	 * @param {string}	innerHTML	The innerHTML string to use to create the =
contents of an LI element.=0A=
	 */=0A=
	addItem: function(idx, innerHTMLOrElem) {=0A=
		=0A=
        var liElem =3D this.getCarouselItem(idx);=0A=
=0A=
		// Need to create the li=0A=
		if(!this._isValidObj(liElem)) {=0A=
			liElem =3D this._createItem(idx, innerHTMLOrElem);=0A=
			this.carouselList.appendChild(liElem);=0A=
			=0A=
		} else if(this._isValidObj(liElem.placeholder)) {		=0A=
	    	var newLiElem =3D this._createItem(idx, innerHTMLOrElem);=0A=
			//var oldLiElem =3D this.carouselList.getElementsByTagName("li")[idx =
- 1];=0A=
			this.carouselList.replaceChild(newLiElem, liElem);=0A=
		}=0A=
		if(this.isVertical()) {=0A=
			YAHOO.util.Dom.setStyle(liElem, "height", liElem.offsetHeight + "px");=0A=
		}=0A=
		=0A=
		return liElem;=0A=
=0A=
	},=0A=
=0A=
	/**=0A=
	 * Inserts a new LI item before the index specified. Uses the innerHTML =
to create the contents of the new LI item=0A=
	 * @param {number}	refIdx	which item in the list to insert this item =
before. =0A=
	 * @param {string}	innerHTML	The innerHTML string to use to create the =
contents of an LI element.=0A=
	 */=0A=
	insertBefore: function(refIdx, innerHTML) {=0A=
		if(refIdx < 1) {=0A=
			refIdx =3D 1;=0A=
		}=0A=
		=0A=
		var insertionIdx =3D refIdx - 1;=0A=
		=0A=
		if(insertionIdx > this.lastPrebuiltIdx) {=0A=
			this._prebuildItems(this.lastPrebuiltIdx, refIdx); // is this right?=0A=
		}=0A=
		=0A=
		var liElem =3D this._insertBeforeItem(refIdx, innerHTML);=0A=
		=0A=
		// depends on recalculation of this.size above=0A=
		if(this.firstVisible > insertionIdx || this.lastVisible < this.size) {=0A=
			if(this.nextEnabled =3D=3D=3D false) {=0A=
				this._enableNext();=0A=
			}=0A=
		}=0A=
=0A=
		return liElem;=0A=
	},=0A=
	=0A=
	/**=0A=
	 * Inserts a new LI item after the index specified. Uses the innerHTML =
to create the contents of the new LI item=0A=
	 * @param {number}	refIdx	which item in the list to insert this item =
after. =0A=
	 * @param {string}	innerHTML	The innerHTML string to use to create the =
contents of an LI element.=0A=
	 */=0A=
	insertAfter: function(refIdx, innerHTML) {=0A=
	=0A=
		if(refIdx > this.size) {=0A=
			refIdx =3D this.size;=0A=
		}=0A=
		=0A=
		var insertionIdx =3D refIdx + 1;			=0A=
		=0A=
		// if we are inserting this item past where we have prebuilt items, =
then=0A=
		// prebuild up to this point.=0A=
		if(insertionIdx > this.lastPrebuiltIdx) {=0A=
			this._prebuildItems(this.lastPrebuiltIdx, insertionIdx+1);=0A=
		}=0A=
=0A=
		var liElem =3D this._insertAfterItem(refIdx, innerHTML);		=0A=
=0A=
		if(insertionIdx > this.size) {=0A=
			this.size =3D insertionIdx;=0A=
			if(this.nextEnabled =3D=3D=3D false) {=0A=
				this._enableNext();=0A=
			}=0A=
		}=0A=
		=0A=
		// depends on recalculation of this.size above=0A=
		if(this.firstVisible > insertionIdx || this.lastVisible < this.size) {=0A=
			if(this.nextEnabled =3D=3D=3D false) {=0A=
				this._enableNext();=0A=
			}=0A=
		}=0A=
=0A=
		return liElem;=0A=
	},	=0A=
=0A=
	/**=0A=
	 * Simulates a next button event. Causes the carousel to scroll the =
next set of content into view.=0A=
	 */=0A=
	scrollNext: function() {=0A=
		this._scrollNext(null, this);=0A=
		=0A=
		// we know the timer has expired.=0A=
		//if(this.autoPlayTimer) clearTimeout(this.autoPlayTimer);=0A=
		this.autoPlayTimer =3D null;=0A=
		if(this.autoPlay !=3D=3D 0) {=0A=
			this.autoPlayTimer =3D this.startAutoPlay();=0A=
		}=0A=
	},=0A=
	=0A=
	/**=0A=
	 * Simulates a prev button event. Causes the carousel to scroll the =
previous set of content into view.=0A=
	 */=0A=
	scrollPrev: function() {=0A=
		this._scrollPrev(null, this);=0A=
	},=0A=
	=0A=
	/**=0A=
	 * Scrolls the content to place itemNum as the start item in the view =0A=
	 * (if size is specified, the last element will not scroll past the =
end.). =0A=
	 * Uses current animation speed & method.=0A=
	 * @param {number}	newStart	The item to scroll to. =0A=
	 */=0A=
	scrollTo: function(newStart) {=0A=
		this._position(newStart, true);=0A=
	},=0A=
=0A=
	/**=0A=
	 * Moves the content to place itemNum as the start item in the view =0A=
	 * (if size is specified, the last element will not scroll past the =
end.) =0A=
	 * Ignores animation speed & method; moves directly to the item. =0A=
	 * Note that you can also set the <em>firstVisible</em> property upon =
initialization =0A=
	 * to get the carousel to start at a position different than 1.	=0A=
	 * @param {number}	newStart	The item to move directly to. =0A=
	 */=0A=
	moveTo: function(newStart) {=0A=
		this._position(newStart, false);=0A=
	},=0A=
=0A=
	/**=0A=
	 * Starts up autoplay. If autoPlay has been stopped (by calling =
stopAutoPlay or by user interaction), =0A=
	 * you can start it back up by using this method.=0A=
	 * @param {number}	interval	optional parameter that sets the interval =0A=
	 * for auto play the next time that autoplay fires. =0A=
	 */=0A=
	startAutoPlay: function(interval) {=0A=
		// if interval is passed as arg, then set autoPlay to this interval.=0A=
		if(this._isValidObj(interval)) {=0A=
			this.autoPlay =3D interval;=0A=
		}=0A=
		=0A=
		// if we already are playing, then do nothing.=0A=
		if(this.autoPlayTimer !=3D=3D null) {=0A=
			return this.autoPlayTimer;=0A=
		}=0A=
				=0A=
		var oThis =3D this;  =0A=
		var autoScroll =3D function() { oThis.scrollNext(); };=0A=
		this.autoPlayTimer =3D setTimeout( autoScroll, this.autoPlay );=0A=
		=0A=
		return this.autoPlayTimer;=0A=
	},=0A=
=0A=
	/**=0A=
	 * Stops autoplay. Useful for when you want to control what events will =
stop the autoplay feature. =0A=
	 * Call <em>startAutoPlay()</em> to restart autoplay.=0A=
	 */=0A=
	stopAutoPlay: function() {=0A=
		if (this.autoPlayTimer !=3D=3D null) {=0A=
			clearTimeout(this.autoPlayTimer);=0A=
			this.autoPlayTimer =3D null;=0A=
		}=0A=
	},=0A=
	=0A=
	/**=0A=
	 * Returns whether the carousel's orientation is set to vertical.=0A=
	 */=0A=
	isVertical: function() {=0A=
		return (this.orientation !=3D "horizontal");=0A=
	},=0A=
	=0A=
	=0A=
	/**=0A=
	 * Check to see if an element (by index) has been loaded or not. If the =
item is simply pre-built, but not=0A=
	 * loaded this will return false. If the item has not been pre-built it =
will also return false.=0A=
	 * @param {number}	idx	Index of the element to check load status for. =0A=
	 */=0A=
	isItemLoaded: function(idx) {=0A=
		var liElem =3D this.getCarouselItem(idx);=0A=
		=0A=
		// if item exists and is not a placeholder, then it is already loaded.=0A=
		if(this._isValidObj(liElem) && !this._isValidObj(liElem.placeholder)) {=0A=
			return true;=0A=
		}=0A=
		=0A=
		return false;=0A=
	},=0A=
	=0A=
	/**=0A=
	 * Lookup the element object for a carousel list item by index.=0A=
	 * @param {number}	idx	Index of the element to lookup. =0A=
	 */=0A=
	getCarouselItem: function(idx) {=0A=
		var elemName =3D this.carouselElemID + "-item-" + idx;=0A=
 		var liElem =3D YAHOO.util.Dom.get(elemName);=0A=
		return liElem;	=0A=
	},=0A=
	=0A=
	show: function() {=0A=
		YAHOO.util.Dom.setStyle(this.carouselElem, "display", "block");=0A=
		this.calculateSize();=0A=
	},=0A=
	=0A=
	hide: function() {=0A=
		YAHOO.util.Dom.setStyle(this.carouselElem, "display", "none");=0A=
	},=0A=
=0A=
	calculateSize: function() {=0A=
 		var ulKids =3D this.carouselList.childNodes;=0A=
 		var li =3D null;=0A=
		for(var i=3D0; i<ulKids.length; i++) {=0A=
		=0A=
			li =3D ulKids[i];=0A=
			if(li.tagName =3D=3D "LI" || li.tagName =3D=3D "li") {=0A=
				break;=0A=
			}=0A=
		}=0A=
		var liPaddingWidth;=0A=
		if(this.isVertical()) {=0A=
			YAHOO.util.Dom.removeClass(this.carouselList, "carousel-horizontal");=0A=
			YAHOO.util.Dom.removeClass(this.carouselList, "carousel-vertical");=0A=
			YAHOO.util.Dom.addClass(this.carouselList, "carousel-vertical");=0A=
			liPaddingWidth =3D parseInt(YAHOO.util.Dom.getStyle(li, =
"paddingLeft"),10) + =0A=
						parseInt(YAHOO.util.Dom.getStyle(li, "paddingRight"),10) + =0A=
						parseInt(YAHOO.util.Dom.getStyle(li, "marginLeft"),10) + =0A=
						parseInt(YAHOO.util.Dom.getStyle(li, "marginRight"),10);=0A=
			var liPaddingHeight =3D parseInt(YAHOO.util.Dom.getStyle(li, =
"paddingTop"),10) + =0A=
						parseInt(YAHOO.util.Dom.getStyle(li, "paddingBottom"),10) + =0A=
						parseInt(YAHOO.util.Dom.getStyle(li, "marginTop"),10) + =0A=
						parseInt(YAHOO.util.Dom.getStyle(li, "marginBottom"),10);=0A=
			=0A=
			this.scrollAmountPerInc =3D (li.offsetHeight+liPaddingHeight);=0A=
			this.clipReg.style.width =3D (li.offsetWidth + liPaddingWidth) + "px";=0A=
			this.clipReg.style.height =3D =
(this.scrollAmountPerInc*this.numVisible) + "px";=0A=
			this.carouselElem.style.width =3D (li.offsetWidth + liPaddingWidth*2) =
+ "px";			=0A=
=0A=
			// if we set the initial start > 1 then this will adjust the scrolled =
location=0A=
			var currY =3D YAHOO.util.Dom.getY(this.carouselList);	=0A=
			YAHOO.util.Dom.setY(this.carouselList, =0A=
							currY - this.scrollAmountPerInc*(this.firstVisible-1));=0A=
		} else {=0A=
			YAHOO.util.Dom.removeClass(this.carouselList, "carousel-vertical");=0A=
			YAHOO.util.Dom.removeClass(this.carouselList, "carousel-horizontal");=0A=
			YAHOO.util.Dom.addClass(this.carouselList, "carousel-horizontal");=0A=
			liPaddingWidth =3D parseInt(YAHOO.util.Dom.getStyle(li, =
"paddingLeft"),10) + =0A=
						parseInt(YAHOO.util.Dom.getStyle(li, "paddingRight"),10) + =0A=
						parseInt(YAHOO.util.Dom.getStyle(li, "marginLeft"),10) + =0A=
						parseInt(YAHOO.util.Dom.getStyle(li, "marginRight"),10);=0A=
						=0A=
			this.scrollAmountPerInc =3D (li.offsetWidth+liPaddingWidth);=0A=
			this.carouselElem.style.width =3D =
((this.scrollAmountPerInc*this.numVisible)+this.navMargin*2) + "px";=0A=
			this.clipReg.style.width =3D =
(this.scrollAmountPerInc*this.numVisible)+"px";=0A=
=0A=
			// if we set the initial start > 1 then this will adjust the scrolled =
location=0A=
			var currX =3D YAHOO.util.Dom.getX(this.carouselList);=0A=
			YAHOO.util.Dom.setX(this.carouselList, =0A=
							currX - this.scrollAmountPerInc*(this.firstVisible-1));=0A=
		}=0A=
	},=0A=
	=0A=
	// /////////////////// PRIVATE API =
//////////////////////////////////////////=0A=
	_calculateSize: function(me) {=0A=
		me.calculateSize();=0A=
		YAHOO.util.Dom.setStyle(me.carouselElem, "visibility", "visible");=0A=
	},=0A=
=0A=
	// From Mike Chambers: =
http://weblogs.macromedia.com/mesh/archives/2006/01/removing_html_e.html=0A=
	_removeChildrenFromNode: function(node)=0A=
	{=0A=
		if(!this._isValidObj(node))=0A=
		{=0A=
      		return;=0A=
		}=0A=
   =0A=
		var len =3D node.childNodes.length;=0A=
   =0A=
		while (node.hasChildNodes())=0A=
		{=0A=
			node.removeChild(node.firstChild);=0A=
		}=0A=
	},=0A=
	=0A=
	_prebuildLiElem: function(idx) {=0A=
		var liElem =3D document.createElement("li");=0A=
		liElem.id =3D this.carouselElemID + "-item-" + idx;=0A=
		// this is default flag to know that we're not really loaded yet.=0A=
		liElem.placeholder =3D true;   =0A=
		this.carouselList.appendChild(liElem);=0A=
		=0A=
		this.lastPrebuiltIdx =3D (idx > this.lastPrebuiltIdx) ? idx : =
this.lastPrebuiltIdx;=0A=
	},=0A=
	=0A=
	_createItem: function(idx, innerHTMLOrElem) {=0A=
		var liElem =3D document.createElement("li");=0A=
		liElem.id =3D this.carouselElemID + "-item-" + idx;=0A=
=0A=
		// if String then assume innerHTML, else an elem object=0A=
		if(typeof(innerHTMLOrElem) =3D=3D=3D "string") {=0A=
			liElem.innerHTML =3D innerHTMLOrElem;=0A=
		} else {=0A=
			liElem.appendChild(innerHTMLOrElem);=0A=
		}=0A=
		=0A=
		return liElem;=0A=
	},=0A=
	=0A=
	// idx is the location to insert after=0A=
	_insertAfterItem: function(refIdx, innerHTMLOrElem) {=0A=
		return this._insertBeforeItem(refIdx+1, innerHTMLOrElem);=0A=
	},=0A=
	=0A=
	=0A=
	_insertBeforeItem: function(refIdx, innerHTMLOrElem) {=0A=
=0A=
		var refItem =3D this.getCarouselItem(refIdx);=0A=
		=0A=
		if(this.size !=3D this.UNBOUNDED_SIZE) {=0A=
			this.size +=3D 1;=0A=
		}=0A=
				=0A=
		for(var i=3Dthis.lastPrebuiltIdx; i>=3DrefIdx; i--) {=0A=
			var anItem =3D this.getCarouselItem(i);=0A=
			if(this._isValidObj(anItem)) {=0A=
				anItem.id =3D this.carouselElemID + "-item-" + (i+1);=0A=
			}=0A=
		}=0A=
=0A=
		var liElem =3D this._createItem(refIdx, innerHTMLOrElem);=0A=
		=0A=
		var insertedItem =3D this.carouselList.insertBefore(liElem, refItem);=0A=
		this.lastPrebuiltIdx +=3D 1;=0A=
		=0A=
		return liElem;=0A=
	},=0A=
	=0A=
	// TEST THIS... think it has to do with prebuild=0A=
	insertAfterEnd: function(innerHTMLOrElem) {=0A=
		return this.insertAfter(this.size, innerHTMLOrElem);=0A=
	},=0A=
		=0A=
	_position: function(newStart, showAnimation) {=0A=
		// do we bypass the isAnimated check?=0A=
		if(newStart > this.firstVisible) {=0A=
			var inc =3D newStart - this.firstVisible;=0A=
			this._scrollNextInc(this, inc, showAnimation);=0A=
		} else {=0A=
			var dec =3D this.firstVisible - newStart;=0A=
			this._scrollPrevInc(this, dec, showAnimation);=0A=
		}=0A=
	},=0A=
	=0A=
	=0A=
	// event handler=0A=
	_scrollNext: function(e, carousel) {=0A=
		if(carousel.scrollNextAnim.isAnimated()) {=0A=
			return false; // might be better to set ourself waiting for animation =
completion and=0A=
			// then just do this function. that will allow faster scroll =
responses.=0A=
		}=0A=
=0A=
		// if fired by an event and wrap is set and we are already at end then =
wrap=0A=
		var currEnd =3D carousel.firstVisible + carousel.numVisible-1;=0A=
		if(carousel.wrap && currEnd =3D=3D carousel.size) {=0A=
			carousel.scrollTo(1);=0A=
		} else if(e !=3D=3D null) { // event fired this so disable autoplay=0A=
			carousel.stopAutoPlay();=0A=
			carousel._scrollNextInc(carousel, carousel.scrollInc, =
(carousel.cfg.getProperty("animationSpeed") !=3D=3D 0));=0A=
		} else {=0A=
			carousel._scrollNextInc(carousel, carousel.scrollInc, =
(carousel.cfg.getProperty("animationSpeed") !=3D=3D 0));=0A=
		}=0A=
=0A=
=0A=
	},=0A=
	=0A=
	// probably no longer need carousel passed in, this should be correct =
now.=0A=
	_scrollNextInc: function(carousel, inc, showAnimation) {=0A=
=0A=
		var currFirstVisible =3D carousel.firstVisible;=0A=
		=0A=
		var newEnd =3D carousel.firstVisible + inc + carousel.numVisible - 1;=0A=
		newEnd =3D (newEnd > carousel.size) ? carousel.size : newEnd;=0A=
		var newStart =3D newEnd - carousel.numVisible + 1;=0A=
		inc =3D newStart - carousel.firstVisible;=0A=
		carousel.firstVisible =3D newStart;=0A=
=0A=
		// if the prev button is disabled and start is now past 1, then enable =
it=0A=
		if((carousel.prevEnabled =3D=3D=3D false) && (carousel.firstVisible > =
1)) {=0A=
			carousel._enablePrev();=0A=
		}=0A=
		// if next is enabled && we are now at the end, then disable=0A=
		if((carousel.nextEnabled =3D=3D=3D true) && (newEnd =3D=3D =
carousel.size)) {=0A=
			carousel._disableNext();=0A=
		}=0A=
		=0A=
		if(inc > 0) {=0A=
			if(carousel._isValidObj(carousel.loadNextHandler)) {=0A=
				carousel.lastVisible =3D carousel.firstVisible + carousel.numVisible =
- 1;=0A=
				=0A=
				carousel.currSize =3D (carousel.lastVisible > carousel.currSize) ?=0A=
											carousel.lastVisible : carousel.currSize;=0A=
											=0A=
				var alreadyCached =3D carousel._areAllItemsLoaded(currFirstVisible, =0A=
										carousel.lastVisible);=0A=
				carousel.loadNextHandlerEvt.fire(carousel.firstVisible, =
carousel.lastVisible, alreadyCached);=0A=
			}=0A=
			=0A=
			if(showAnimation) {=0A=
	 			var nextParams =3D { points: { by: =
[-carousel.scrollAmountPerInc*inc, 0] } };=0A=
	 			if(carousel.isVertical()) {=0A=
	 				nextParams =3D { points: { by: [0, =
-carousel.scrollAmountPerInc*inc] } };=0A=
	 			}=0A=
 		=0A=
	 			carousel.scrollNextAnim =3D new =
YAHOO.util.Motion(carousel.carouselList, =0A=
	 							nextParams, =0A=
   								carousel.cfg.getProperty("animationSpeed"), =
carousel.animationMethod);=0A=
				if(carousel._isValidObj(carousel.animationCompleteHandler)) {=0A=
					=
carousel.scrollNextAnim.onComplete.subscribe(this._handleAnimationComplet=
e, [carousel, "next"]);=0A=
				}=0A=
				carousel.scrollNextAnim.animate();=0A=
			} else {=0A=
				if(carousel.isVertical()) {=0A=
					var currY =3D YAHOO.util.Dom.getY(carousel.carouselList);=0A=
										=0A=
					YAHOO.util.Dom.setY(carousel.carouselList, =0A=
								currY - carousel.scrollAmountPerInc*inc);=0A=
				} else {=0A=
					var currX =3D YAHOO.util.Dom.getX(carousel.carouselList);=0A=
					YAHOO.util.Dom.setX(carousel.carouselList, =0A=
								currX - carousel.scrollAmountPerInc*inc);=0A=
				}=0A=
			}=0A=
			=0A=
		}=0A=
		=0A=
		return false;=0A=
	},=0A=
	=0A=
	_handleAnimationComplete: function(type, args, argList) {=0A=
		var carousel =3D argList[0];=0A=
		var direction =3D argList[1];=0A=
		=0A=
		carousel.animationCompleteEvt.fire(direction);=0A=
=0A=
		=0A=
	},=0A=
	=0A=
	// If EVERY item is already loaded in the range then return true=0A=
	// Also prebuild whatever is not already created.=0A=
	_areAllItemsLoaded: function(first, last) {=0A=
		var itemsLoaded =3D true;=0A=
		for(var i=3Dfirst; i<=3Dlast; i++) {=0A=
			var liElem =3D this.getCarouselItem(i);=0A=
			=0A=
			// If the li elem does not exist, then prebuild it in the correct =
order=0A=
			// but still flag as not loaded (just prebuilt the li item.=0A=
			if(!this._isValidObj(liElem)) {=0A=
				this._prebuildLiElem(i);=0A=
				itemsLoaded =3D false;=0A=
			// but if the item exists and is a placeholder, then=0A=
			// note that this item is not loaded (only a placeholder)=0A=
			} else if(this._isValidObj(liElem.placeholder)) {=0A=
				itemsLoaded =3D false;=0A=
			}=0A=
		}=0A=
		return itemsLoaded;=0A=
	}, =0A=
	=0A=
	_prebuildItems: function(first, last) {=0A=
		for(var i=3Dfirst; i<=3Dlast; i++) {=0A=
			var liElem =3D this.getCarouselItem(i);=0A=
			=0A=
			// If the li elem does not exist, then prebuild it in the correct =
order=0A=
			// but still flag as not loaded (just prebuilt the li item.=0A=
			if(!this._isValidObj(liElem)) {=0A=
				this._prebuildLiElem(i);=0A=
			}=0A=
		}=0A=
	}, =0A=
=0A=
	_scrollPrev: function(e, carousel) {=0A=
		if(carousel.scrollPrevAnim.isAnimated()) {=0A=
			return false;=0A=
		}=0A=
		carousel._scrollPrevInc(carousel, carousel.scrollInc, =
(carousel.cfg.getProperty("animationSpeed") !=3D=3D 0));=0A=
	},=0A=
	=0A=
	_scrollPrevInc: function(carousel, dec, showAnimation) {=0A=
=0A=
		var currLastVisible =3D carousel.lastVisible;=0A=
		var newStart =3D carousel.firstVisible - dec;=0A=
		newStart =3D (newStart <=3D 1) ? 1 : (newStart);=0A=
		var newDec =3D carousel.firstVisible - newStart;=0A=
		carousel.firstVisible =3D newStart;=0A=
		=0A=
		// if prev is enabled && we are now at position 1, then disable=0A=
		if((carousel.prevEnabled =3D=3D=3D true) && (carousel.firstVisible =
=3D=3D 1)) {=0A=
			carousel._disablePrev();=0A=
		}=0A=
		// if the next button is disabled and end is < size, then enable it=0A=
		if((carousel.nextEnabled =3D=3D=3D false) && =0A=
						((carousel.firstVisible + carousel.numVisible - 1) < =
carousel.size)) {=0A=
			carousel._enableNext();=0A=
		}=0A=
=0A=
		// if we are decrementing=0A=
		if(newDec > 0) {			=0A=
			if(carousel._isValidObj(carousel.loadPrevHandler)) {=0A=
				carousel.lastVisible =3D carousel.firstVisible + carousel.numVisible =
- 1;=0A=
=0A=
				carousel.currSize =3D (carousel.lastVisible > carousel.currSize) ?=0A=
											carousel.lastVisible : carousel.currSize;=0A=
=0A=
				var alreadyCached =3D =
carousel._areAllItemsLoaded(carousel.firstVisible, =0A=
									currLastVisible);=0A=
				carousel.loadPrevHandlerEvt.fire(carousel.firstVisible, =
carousel.lastVisible, alreadyCached);=0A=
			}=0A=
=0A=
			if(showAnimation) {=0A=
	 			var prevParams =3D { points: { by: =
[carousel.scrollAmountPerInc*newDec, 0] } };=0A=
	 			if(carousel.isVertical()) {=0A=
	 				prevParams =3D { points: { by: [0, =
carousel.scrollAmountPerInc*newDec] } };=0A=
	 			}=0A=
 		=0A=
	 			carousel.scrollPrevAnim =3D new =
YAHOO.util.Motion(carousel.carouselList,=0A=
	 							prevParams, =0A=
   								carousel.cfg.getProperty("animationSpeed"), =
carousel.animationMethod);=0A=
				if(carousel._isValidObj(carousel.animationCompleteHandler)) {=0A=
					=
carousel.scrollPrevAnim.onComplete.subscribe(this._handleAnimationComplet=
e, [carousel, "prev"]);=0A=
				}=0A=
				carousel.scrollPrevAnim.animate();=0A=
			} else {=0A=
				if(carousel.isVertical()) {=0A=
					var currY =3D YAHOO.util.Dom.getY(carousel.carouselList);=0A=
					YAHOO.util.Dom.setY(carousel.carouselList, currY + =0A=
							carousel.scrollAmountPerInc*newDec);				=0A=
				} else {=0A=
					var currX =3D YAHOO.util.Dom.getX(carousel.carouselList);=0A=
					YAHOO.util.Dom.setX(carousel.carouselList, currX + =0A=
							carousel.scrollAmountPerInc*newDec);=0A=
				}=0A=
			}=0A=
		}=0A=
		=0A=
		return false;=0A=
	},=0A=
	=0A=
	/**=0A=
	 * _loadInitial looks at firstItemVisible for the start (not =
necessarily 1)=0A=
	 */=0A=
	_loadInitial: function() {=0A=
		this.lastVisible =3D this.firstVisible + this.numVisible - 1;=0A=
=0A=
		this.currSize =3D (this.lastVisible > this.currSize) ?=0A=
									this.lastVisible : this.currSize;=0A=
=0A=
		// Since firstItemVisible can be > 1 need to check for disabling either=0A=
		// previous or next controls=0A=
		if(this.firstVisible =3D=3D 1) {=0A=
			this._disablePrev();=0A=
		}=0A=
		if(this.lastVisible =3D=3D this.size) {=0A=
			this._disableNext();=0A=
		}=0A=
		=0A=
		// Load from 1 to the last visible=0A=
		// The _calculateSize method will adjust the scroll position=0A=
		// for starts > 1=0A=
		if(this._isValidObj(this.loadInitHandler)) {=0A=
			var alreadyCached =3D this._areAllItemsLoaded(1, this.lastVisible);=0A=
			this.loadInitHandlerEvt.fire(1, this.lastVisible, alreadyCached);=0A=
		}=0A=
		=0A=
		if(this.autoPlay !=3D=3D 0) {=0A=
			this.autoPlayTimer =3D this.startAutoPlay();=0A=
		}		=0A=
    },=0A=
		=0A=
	_disablePrev: function() {=0A=
		this.prevEnabled =3D false;=0A=
		if(this._isValidObj(this.prevButtonStateHandlerEvt)) {=0A=
			this.prevButtonStateHandlerEvt.fire(false, this.carouselPrev);=0A=
		}=0A=
		if(this._isValidObj(this.carouselPrev)) {=0A=
			YAHOO.util.Event.removeListener(this.carouselPrev, "click", =
this._scrollPrev);=0A=
		}=0A=
	},=0A=
	=0A=
	_enablePrev: function() {=0A=
		this.prevEnabled =3D true;=0A=
		if(this._isValidObj(this.prevButtonStateHandlerEvt)) {=0A=
			this.prevButtonStateHandlerEvt.fire(true, this.carouselPrev);=0A=
		}=0A=
		if(this._isValidObj(this.carouselPrev)) {=0A=
			YAHOO.util.Event.addListener(this.carouselPrev, "click", =
this._scrollPrev, this);=0A=
		}=0A=
	},=0A=
		=0A=
	_disableNext: function() {=0A=
		if(this.wrap) {=0A=
			return;=0A=
		}=0A=
		=0A=
		this.nextEnabled =3D false;=0A=
		if(this._isValidObj(this.nextButtonStateHandlerEvt)) {=0A=
			this.nextButtonStateHandlerEvt.fire(false, this.carouselNext);=0A=
		}=0A=
		if(this._isValidObj(this.carouselNext)) {=0A=
			YAHOO.util.Event.removeListener(this.carouselNext, "click", =
this._scrollNext);=0A=
		}=0A=
	},=0A=
	=0A=
	_enableNext: function() {=0A=
		this.nextEnabled =3D true;=0A=
		if(this._isValidObj(this.nextButtonStateHandlerEvt)) {=0A=
			this.nextButtonStateHandlerEvt.fire(true, this.carouselNext);=0A=
		}=0A=
		if(this._isValidObj(this.carouselNext)) {=0A=
			YAHOO.util.Event.addListener(this.carouselNext, "click", =
this._scrollNext, this);=0A=
		}=0A=
	},=0A=
		=0A=
	_isValidObj: function(obj) {=0A=
=0A=
		if (null =3D=3D obj) {=0A=
			return false;=0A=
		}=0A=
		if ("undefined" =3D=3D typeof(obj) ) {=0A=
			return false;=0A=
		}=0A=
		return true;=0A=
	}=0A=
};=0A=

------=_NextPart_000_0000_01C8916C.DDD66550--
