From: "Saved by Windows Internet Explorer 8"
Subject: Tetra Tech - Investor Relations - Press Release
Date: Tue, 20 Oct 2009 14:30:33 -0400
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CA5191.E1933830"
X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6002.18005

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CA5191.E1933830
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://phx.corporate-ir.net/phoenix.zhtml?c=109552&p=irol-newsArticle_print&ID=1334239&highlight=

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Tetra Tech - Investor Relations - Press =
Release</TITLE><!--###PHBoeHBhZ2U+PHRpbWVTdGFtcD4xMC8yMC8yMDA5IDI6MzA6MzA=
gUE08L3RpbWVTdGFtcD48dGltZVRpbGxDQ0JOUmVmcmVzaD4xODA8L3RpbWVUaWxsQ0NCTlJl=
ZnJlc2g+PC9waHhwYWdlPg=3D=3D###-->
<META content=3D"text/html; charset=3Dutf-8" http-equiv=3DContent-Type>
<META name=3Dkeywords=20
content=3D"infrastructure, resource management,waste water, management, =
engineering, biology, homeland security, architechture">
<META name=3Ddescription=20
content=3D"a leading provider of consulting, engineering and technical =
services">
<SCRIPT language=3DJavaScript=20
src=3D"http://phx.corporate-ir.net/client/10/109552/script/form_state_man=
ager.js"></SCRIPT>
<NOSCRIPT>
<META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18813"></HEAD>
<BODY>In order to bring you the best possible user experience, this site =
uses=20
Javascript. If you are seeing this message, it is likely that the =
Javascript=20
option in your browser is disabled. For optimal viewing of this site, =
please=20
ensure that Javascript is enabled for your browser. </NOSCRIPT>
<SCRIPT language=3DJavaScript=20
src=3D"http://phx.corporate-ir.net/client/10/109552/script/jsscript.js"><=
/SCRIPT>
<LINK rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://phx.corporate-ir.net/client/10/109552/css/printer.css"><LI=
NK=20
rel=3Dstylesheet type=3Dtext/css=20
href=3D"http://phx.corporate-ir.net/client/10/109552/css/ccbnIR.css">
<SCRIPT language=3DJavaScript=20
src=3D"http://media.corporate-ir.net/media_files/irol/global_js/phoenix.j=
s"></SCRIPT>

<SCRIPT type=3Dtext/javascript>
                function VerticalDots() {
    	            var main =3D document.getElementById('main_content');
    	            var col3 =3D document.getElementById('col3');
    	            var pad =3D 28;
    	            var x
    	            main.style.height =3D 'auto';
    	            col3.style.height =3D 'auto';
    	           =20
    	            if (main.offsetHeight >=3D col3.offsetHeight)
    	               x =3D ((main.offsetHeight - pad) * .9);
    	            else
    	               x =3D ((col3.offsetHeight - pad) * .9);=20
                =09
    	            var leftpad =3D document.getElementById('leftpad');
    	            var rightpad =3D document.getElementById('rightpad');
    	            var left =3D document.getElementById('innerleft');
    	            var right =3D document.getElementById('innerright');
    	            leftpad.style.height =3D pad + "px";
    	            leftpad.style.height =3D pad + "px";
    	            rightpad.style.height =3D pad + "px";
    	            left.style.height =3D x + "px";
    	            right.style.height =3D x + "px";
                }
   =20
            </SCRIPT>

<DIV>
<TABLE style=3D"WIDTH: 650px">
  <TBODY>
  <TR>
    <TD>
      <DIV id=3Dheader><A href=3D"http://www.tetratech.com/"><IMG =
align=3Dleft=20
      =
src=3D"http://media.corporate-ir.net/media_files/irol/10/109552/images/ta=
gline_horz_logo.gif"></A></DIV></TD></TR>
  <TR>
    <TD>
      <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D650>
        <TBODY>
        <TR>
          <TD>
            <HR=20
            style=3D"BORDER-BOTTOM: #cccccc 1px dashed; BORDER-LEFT: =
#cccccc 1px dashed; WIDTH: 650px; BORDER-TOP: #cccccc 1px dashed; =
BORDER-RIGHT: #cccccc 1px dashed">
          </TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD width=3D650>
      <DIV style=3D"WIDTH: 650px">
      <H2>Press Release</H2>
      <P>
      <TABLE border=3D0 cellSpacing=3D0 cellPadding=3D0 width=3D"100%">
        <TBODY>
        <TR class=3DccbnBgTtl>
          <TD vAlign=3Dtop><SPAN class=3Dnewsh2>Tetra Tech Wins $500 =
Million=20
            National Design-Build Contract with the U.S. Coast=20
Guard</SPAN></TD></TR>
        <TR class=3DccbnBgTxt>
          <TD vAlign=3Dtop><SPAN class=3DccbnTxt>PASADENA, Calif., Sep =
22, 2009=20
            (BUSINESS WIRE) -- Tetra Tech, Inc. (NASDAQ: TTEK) announced =
today=20
            that the TtEC-Tesoro Joint Venture was awarded a National =
Multiple=20
            Award Construction Contract (NMACC) with the U.S. Coast =
Guard that=20
            has a ceiling up to $500 million. The new contract will be =
used to=20
            execute construction and design-build projects at U.S. Coast =
Guard=20
            installations and U.S. Department of Homeland Security =
facilities=20
            across the United States and U.S. territories. The NMACC may =
include=20
            a variety of operational, waterfront, housing, and medical=20
            facilities, among other projects. Four other contractors =
were each=20
            awarded contracts with $500 million ceilings under this $2.5 =
billion=20
            total capacity, seven-year, indefinite delivery/indefinite =
quantity=20
            contract.=20
            <P>Tetra Tech's CEO, Dan Batrack, said, "This contract =
represents a=20
            significant expansion in our contracting capacity for the =
U.S. Coast=20
            Guard and U.S. Department of Homeland Security." </P>
            <P><B>About Tetra Tech</B> (<A=20
            =
href=3D"http://cts.businesswire.com/ct/CT?id=3Dsmartlink&amp;url=3Dhttp%3=
A%2F%2Fwww.tetratech.com&amp;esheet=3D6055489&amp;lan=3Den_US&amp;anchor=3D=
www.tetratech.com&amp;index=3D1">http://cts.businesswire.com/ct/CT?id=3Ds=
martlink&amp;url=3Dhttp%3A%2F%2Fwww.tetratech.com&amp;esheet=3D6055489&am=
p;lan=3Den_US&amp;anchor=3Dwww.tetratech.com&amp;index=3D1</A>)=20
            </P>
            <P>Tetra Tech is a leading provider of consulting, =
engineering,=20
            program management, construction, and technical services =
addressing=20
            the resource management and infrastructure markets. The =
Company=20
            supports government and commercial clients by providing =
innovative=20
            solutions focused on water, the environment, and energy. =
With more=20
            than 10,000 employees worldwide, Tetra Tech's capabilities =
span the=20
            entire project life cycle. </P>
            <P><I>Any statements made in this release that are not based =
on=20
            historical fact are forward-looking statements.</I> <I>Any=20
            forward-looking statements made in this release represent=20
            management's best judgment as to what may occur in the =
future.</I>=20
            <I>However, Tetra Tech's actual outcome and results are not=20
            guaranteed and are subject to certain risks, uncertainties =
and=20
            assumptions ("Future Factors"), and may differ materially =
from what=20
            is expressed.</I> <I>For a description of Future Factors =
that could=20
            cause actual results to differ materially from such =
forward-looking=20
            statements, see the discussion under the section "Risk =
Factors"=20
            included in the Company's Form 10-K and 10-Q filings with =
the=20
            Securities and Exchange Commission.</I> </P>
            <P><IMG alt=3D""=20
            =
src=3D"http://cts.businesswire.com/ct/CT?id=3Dbwnews&amp;sty=3D2009092200=
5370r1&amp;sid=3Dcmtx2&amp;distro=3Dnx"><SPAN=20
            class=3Dbwct31415></SPAN> </P>
            <P>SOURCE: Tetra Tech, Inc. </P>
            <P>Tetra Tech, Inc.<BR>Jorge Casado, Investor =
Relations<BR>Talia=20
            Starkey, Media &amp; Public Relations<BR>626-470-2844=20
        </P></SPAN></TD></TR></TBODY></TABLE></P></DIV>
      <DIV style=3D"WIDTH: 650px; FLOAT: left"><BR></DIV></TD></TR>
  <TR>
    <TD>
      <TABLE cellSpacing=3D0 cellPadding=3D0 width=3D650>
        <TBODY>
        <TR>
          <TD>
            <HR=20
            style=3D"BORDER-BOTTOM: #cccccc 1px dashed; BORDER-LEFT: =
#cccccc 1px dashed; WIDTH: 650px; BORDER-TOP: #cccccc 1px dashed; =
BORDER-RIGHT: #cccccc 1px dashed">
          </TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD width=3D650>
      <DIV style=3D"WIDTH: 650px"=20
      =
id=3Dfooter_center><BR>www.tetratech.com&nbsp;&nbsp;|&nbsp;&nbsp;=C2=A9 =
2007=20
      Tetra Tech, Inc. =
<BR></DIV></TD></TR></TBODY></TABLE></DIV></BODY></HTML>

------=_NextPart_000_0000_01CA5191.E1933830
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://media.corporate-ir.net/media_files/irol/10/109552/images/tagline_horz_logo.gif

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
tehLn3nWv37wsq993AHAf2QMAQA7

------=_NextPart_000_0000_01CA5191.E1933830
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: http://cts.businesswire.com/ct/CT?id=bwnews&sty=20090922005370r1&sid=cmtx2&distro=nx

R0lGODlhAQABAIAAAMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==

------=_NextPart_000_0000_01CA5191.E1933830
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://phx.corporate-ir.net/client/10/109552/css/printer.css

#footer_center {
	TEXT-ALIGN: center; WIDTH: 100%; FLOAT: left; COLOR: #666666; =
FONT-SIZE: 11px
}
#footer_left {
	PADDING-LEFT: 10px; WIDTH: 250px; FLOAT: left; COLOR: #666666; =
FONT-SIZE: 11px
}
#footer_right {
	TEXT-ALIGN: right; WIDTH: 650px; PADDING-RIGHT: 10px; FLOAT: right; =
FONT-SIZE: 95%
}
DIV {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
FONT-FAMILY: arial, helvetica, sans-serif; PADDING-TOP: 3px
}
P {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
FONT-FAMILY: arial, helvetica, sans-serif; PADDING-TOP: 3px
}
TH {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
FONT-FAMILY: arial, helvetica, sans-serif; PADDING-TOP: 3px
}
TD {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
FONT-FAMILY: arial, helvetica, sans-serif; PADDING-TOP: 3px
}
LI {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
FONT-FAMILY: arial, helvetica, sans-serif; PADDING-TOP: 3px
}
DD {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
FONT-FAMILY: arial, helvetica, sans-serif; PADDING-TOP: 3px
}
DL {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
FONT-FAMILY: arial, helvetica, sans-serif; PADDING-TOP: 3px
}
DT {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; =
FONT-FAMILY: arial, helvetica, sans-serif; PADDING-TOP: 3px
}
.textbold {
	LINE-HEIGHT: 130%; BACKGROUND-COLOR: #ffffff; FONT-FAMILY: verdana, =
arial, helvetica, sans-serif; COLOR: #666666; FONT-SIZE: 10px; =
FONT-WEIGHT: bold
}
.textblue {
	LINE-HEIGHT: 130%; BACKGROUND-COLOR: #ffffff; FONT-FAMILY: verdana, =
arial, helvetica, sans-serif; COLOR: #006699; FONT-SIZE: 10px; =
FONT-WEIGHT: bold
}
DT {
	FONT-WEIGHT: bold
}
OL {
	LINE-HEIGHT: 1.5em
}
LI {
	LINE-HEIGHT: 1.5em
}
DL {
	LINE-HEIGHT: 1.5em
}
DT {
	LINE-HEIGHT: 1.5em
}
DD {
	LINE-HEIGHT: 1.5em
}
UL {
	POSITION: relative; LIST-STYLE-TYPE: none; PADDING-LEFT: 8px; =
MARGIN-LEFT: 8px; LIST-STYLE-IMAGE: =
url(/tetratech/images/square_bul.gif)
}
UL.none {
	POSITION: relative; LIST-STYLE-TYPE: none; PADDING-LEFT: 2px; =
MARGIN-LEFT: 2px; LIST-STYLE-IMAGE: url(/tetratech/images/spacergif.gif)
}
LI {
	PADDING-BOTTOM: 2px; LINE-HEIGHT: 1.2em; MARGIN-LEFT: 6px; PADDING-TOP: =
1px
}
P {
	PADDING-BOTTOM: 2px; MARGIN: 2px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; PADDING-TOP: 2px
}
.first {
	MARGIN-TOP: 0px; PADDING-TOP: 0px
}
IMG {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: =
0px
}
#img_right {
	PADDING-BOTTOM: 3px; PADDING-LEFT: 4px; PADDING-RIGHT: 5px; FLOAT: =
right; PADDING-TOP: 0px
}
#img_left {
	PADDING-BOTTOM: 3px; PADDING-LEFT: 0px; PADDING-RIGHT: 8px; FLOAT: =
left; PADDING-TOP: 0px
}
#img_no_float {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 8px; =
PADDING-TOP: 0px
}
.vs0 {
	MARGIN-TOP: 0px; PADDING-TOP: 0px
}
.ahem {
	DISPLAY: none
}
CODE {
	FONT: 12px "andale mono", monaco, courier, "courier new", monospace; =
BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #06c
}
TT {
	FONT: 12px "andale mono", monaco, courier, "courier new", monospace; =
BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #06c
}
PRE {
	FONT: 12px "andale mono", monaco, courier, "courier new", monospace; =
BACKGROUND: none transparent scroll repeat 0% 0%; COLOR: #06c
}
.libnavt {
	BORDER-BOTTOM: #fff 1px solid
}
.libnavb {
	BORDER-BOTTOM: #ccc 1px solid; BORDER-TOP: #ccc 1px solid
}
.small {
	FONT-SIZE: 11px
}
.white {
	BACKGROUND-COLOR: #699; COLOR: #fff
}
.choicesbox {
	BORDER-BOTTOM: #366 1px dotted; BORDER-LEFT: #366 1px dotted; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #699; MARGIN-TOP: 10px; =
PADDING-LEFT: 10px; PADDING-RIGHT: 5px; COLOR: #fff; BORDER-TOP: #366 =
1px dotted; BORDER-RIGHT: #366 1px dotted; PADDING-TOP: 3px
}
.choicesbox2 {
	BORDER-BOTTOM: #366 1px dotted; BORDER-LEFT: #366 1px dotted; =
PADDING-BOTTOM: 5px; BACKGROUND-COLOR: #fff; MARGIN-TOP: 10px; =
PADDING-LEFT: 10px; PADDING-RIGHT: 5px; COLOR: #000; BORDER-TOP: #366 =
1px dotted; BORDER-RIGHT: #366 1px dotted; PADDING-TOP: 3px
}
.choicesbox A:link {
	COLOR: #000
}
.choicesbox A:visited {
	COLOR: #333
}
.choicesbox A:active {
	COLOR: #fff
}
.choicesbox A:hover {
	COLOR: #fff
}
.caption {
	BACKGROUND-COLOR: transparent; FONT: 10px verdana, arial, helvetica, =
sans-serif; COLOR: #366
}
.fineprint {
	BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; =
PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff; PADDING-LEFT: 3px; =
PADDING-RIGHT: 3px; FONT: 10px verdana, arial, helvetica, sans-serif; =
MARGIN-BOTTOM: 30px; COLOR: #000; BORDER-TOP: 0px; BORDER-RIGHT: 0px; =
PADDING-TOP: 5px
}
.h3 {
	TEXT-ALIGN: left; BACKGROUND-ATTACHMENT: fixed; BACKGROUND-REPEAT: =
no-repeat; FONT: bold 12px Verdana, Arial, Helvetica, sans-serif; =
WHITE-SPACE: normal; BACKGROUND-POSITION: left center; LETTER-SPACING: =
normal; WORD-SPACING: normal
}
BODY {
	PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; MARGIN: 0px; =
PADDING-LEFT: 0px; WIDTH: 700px; PADDING-RIGHT: 0px; FONT-FAMILY: Arial, =
Helvetica, sans-serif; FONT-SIZE: 70%; PADDING-TOP: 0px
}
A:link {
	COLOR: #006699
}
A:hover {
	COLOR: #0099ff
}
A:hover:visited {
	COLOR: #0099ff
}
A:visited {
	COLOR: #663366
}
DIV {
	BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: =
0px; PADDING-TOP: 0px
}
#container {
	POSITION: relative; WIDTH: 700px; MARGIN-BOTTOM: 0px
}
#header {
	WIDTH: 700px; FLOAT: left; PADDING-TOP: 8px
}
#mainnav {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 700px; PADDING-RIGHT: =
0px; FLOAT: left; PADDING-TOP: 0px
}
#feature {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 700px; PADDING-RIGHT: =
0px; FLOAT: left; PADDING-TOP: 0px
}
#main-holder {
	WIDTH: 700px; FLOAT: left
}
#main_holder_2col {
	WIDTH: 700px; FLOAT: left
}
#col3 {
	TEXT-ALIGN: left; PADDING-LEFT: 5px; WIDTH: 240px; FLOAT: right; =
PADDING-TOP: 10px
}
#print_container {
	POSITION: relative; PADDING-LEFT: 8px; WIDTH: 700px; MARGIN-BOTTOM: 0px
}
#print_holder {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 795px; PADDING-RIGHT: =
0px; FLOAT: left; MARGIN-LEFT: 2px; PADDING-TOP: 0px
}
#main {
	TEXT-ALIGN: left; PADDING-LEFT: 2px; WIDTH: 500px; FLOAT: left; =
MARGIN-LEFT: 3px; PADDING-TOP: 10px
}
#main_with_printer_friendly {
	TEXT-ALIGN: left; PADDING-LEFT: 0px; WIDTH: 500px; FLOAT: left; =
MARGIN-LEFT: 3px; PADDING-TOP: 0px
}
#bio_with_printer_friendly {
	TEXT-ALIGN: left; PADDING-LEFT: 0px; WIDTH: 500px; FLOAT: left; =
MARGIN-LEFT: 3px; PADDING-TOP: 0px
}
#main_body {
	PADDING-LEFT: 3px; WIDTH: 700px; MARGIN-LEFT: 2px; PADDING-TOP: 10px
}
#printer_friendly_full_right {
	PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 8px; FLOAT: =
right; PADDING-TOP: 0px
}
#subnav {
	TEXT-ALIGN: left; PADDING-LEFT: 8px; WIDTH: 172px; FLOAT: left; =
PADDING-TOP: 5px
}
#footer {
	POSITION: static; WIDTH: 700px; BOTTOM: 0px; FLOAT: left; PADDING-TOP: =
15px
}
A.navitembold:link {
	COLOR: #006699; FONT-SIZE: 105%; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.navitembold:visited {
	COLOR: #006699; FONT-SIZE: 105%; FONT-WEIGHT: bold; TEXT-DECORATION: =
none
}
A.navitembold:hover {
	COLOR: #0099ff; FONT-SIZE: 105%; FONT-WEIGHT: bold; TEXT-DECORATION: =
underline
}
A.navitembold:hover:visited {
	COLOR: #0099ff; FONT-SIZE: 105%; FONT-WEIGHT: bold; TEXT-DECORATION: =
underline
}
A.navitem:link {
	COLOR: #006699; TEXT-DECORATION: none
}
A.navitem:visited {
	COLOR: #006699; TEXT-DECORATION: none
}
A.navitem:hover {
	COLOR: #0099ff; TEXT-DECORATION: underline
}
A.navitem:hover:visited {
	COLOR: #0099ff; TEXT-DECORATION: underline
}
A.navitemselected:link {
	COLOR: #00ccff; TEXT-DECORATION: none
}
A.navitemselected:visited {
	COLOR: #00ccff; TEXT-DECORATION: none
}
A.navitemselected:hover {
	COLOR: #0099ff; TEXT-DECORATION: underline
}
A.navitemselected:hover:visited {
	COLOR: #0099ff; TEXT-DECORATION: underline
}
A.blnavitem:link {
	COLOR: #000000; TEXT-DECORATION: none
}
A.blnavitem:visited {
	COLOR: #000000; TEXT-DECORATION: none
}
A.blnavitem:hover {
	COLOR: #0099ff; TEXT-DECORATION: underline
}
A.blnavitem:hover:visited {
	COLOR: #0099ff; TEXT-DECORATION: underline
}
H2 {
	PADDING-BOTTOM: 5px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; COLOR: #666666; FONT-SIZE: 14px; PADDING-TOP: 0px
}
H3 {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: =
0px; COLOR: #000000; FONT-SIZE: 12px; PADDING-TOP: 6px
}
H4 {
	PADDING-BOTTOM: 3px; LINE-HEIGHT: 85%; MARGIN: 3px 0px 2px; =
PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #000000; FONT-SIZE: 105%; =
PADDING-TOP: 4px
}
linespace {
	FONT-SIZE: 8px
}
.form {
	PADDING-BOTTOM: 0px; MARGIN: 5px 0px 2px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
#horzdots {
	BACKGROUND-IMAGE: url(/tetratech/images/dotted_line.gif); MARGIN: 6px =
0px 8px; WIDTH: 100%; HEIGHT: 3px; FONT-SIZE: 1px
}
#vertdots {
	BACKGROUND-IMAGE: url(/tetratech/images/dotted_line.gif); =
PADDING-BOTTOM: 0px; MARGIN: 0px 3px 0px 0px; PADDING-LEFT: 0px; WIDTH: =
3px; PADDING-RIGHT: 0px; HEIGHT: 70px; FONT-SIZE: 1px; PADDING-TOP: 0px
}
#vertdotsfull {
	BACKGROUND-IMAGE: url(/tetratech/images/dotted_line.gif); =
PADDING-BOTTOM: 0px; MARGIN: 0px 3px 0px 0px; PADDING-LEFT: 0px; WIDTH: =
3px; PADDING-RIGHT: 0px; HEIGHT: 120px; FONT-SIZE: 1px; PADDING-TOP: 0px
}
.left_100 {
	WIDTH: 100%; FLOAT: left
}
.list_box {
	FONT-SIZE: 80%
}
.img_left {
	PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 8px; FLOAT: =
left; PADDING-TOP: 3px
}
#photonav_left {
	WIDTH: 350px; FLOAT: left
}
#photonav_right {
	WIDTH: 350px; FLOAT: right
}
#photonav_full_left {
	WIDTH: 100%; FLOAT: left
}
#photonav_full_right {
	WIDTH: 100%; FLOAT: left
}
#fullwidth {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; =
PADDING-RIGHT: 0px; PADDING-TOP: 0px
}
.highlighted {
	BACKGROUND-IMAGE: url(/tetratech/images/BlueFadeBox.gif); =
BACKGROUND-REPEAT: repeat-x; PADDING-TOP: 4px
}
llwidth {
	PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; =
PADDING-RIGHT: 0px; PADDING-TOP: 0px
}

------=_NextPart_000_0000_01CA5191.E1933830
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://phx.corporate-ir.net/client/10/109552/css/ccbnIR.css

.bwcellpaddingbottom1 {
	PADDING-BOTTOM: 2px; FONT: 100% arial
}
.bwcellpaddingbottom3 {
	PADDING-BOTTOM: 4px; FONT: 100% arial
}
.bwcellpaddingleft0 {
	PADDING-LEFT: 0px; FONT: 100% arial
}
.bwcellpaddingleft1 {
	PADDING-LEFT: 5px; FONT: 100% arial
}
.bwcellpaddingleft2 {
	PADDING-LEFT: 10px; FONT: 100% arial
}
.bwcellpaddingleft4 {
	PADDING-LEFT: 20px; FONT: 100% arial
}
.bwcellpaddingleft5 {
	PADDING-LEFT: 25px; FONT: 100% arial
}
.bwcellpaddingleft6 {
	PADDING-LEFT: 30px; FONT: 100% arial
}
.bwcellpaddingleft7 {
	PADDING-LEFT: 35px; FONT: 100% arial
}
.bwcellpaddingleft8 {
	PADDING-LEFT: 40px; FONT: 100% arial
}
.bwcellpaddingright0 {
	PADDING-RIGHT: 0px; FONT: 100% arial
}
.bwcellparagraphmargin {
	MARGIN-TOP: 0px; FONT: 100% arial; MARGIN-BOTTOM: 0px
}
.bwdoublebottomborder {
	BORDER-BOTTOM: black 2.25pt double; FONT: 100% arial
}
.bwlistitemmarginbottom {
	FONT: 100% arial; MARGIN-BOTTOM: 10px
}
.bwsinglebottomborder {
	BORDER-BOTTOM: black 1pt solid; FONT: 100% arial
}
.bwtablebottommargin {
	FONT: 100% arial; MARGIN-BOTTOM: 10px
}
.bwtextaligncenter {
	TEXT-ALIGN: center; FONT: 100% arial
}
.bwtextalignleft {
	TEXT-ALIGN: left; FONT: 100% arial
}
.bwtextalignright {
	TEXT-ALIGN: right; FONT: 100% arial
}
.bwunderlinestyle {
	FONT: 100% arial; TEXT-DECORATION: underline
}
.bwverticalalignbottom {
	FONT: 100% arial; VERTICAL-ALIGN: bottom
}
.bwverticalaligntop {
	FONT: 100% arial; VERTICAL-ALIGN: top
}
.bwwhitespacenowrap {
	FONT: 100% arial; WHITE-SPACE: nowrap
}
.newsh2 {
	PADDING-BOTTOM: 5px; MARGIN: 0px 0px 3px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; COLOR: #000; FONT-SIZE: 12px; FONT-WEIGHT: bold; =
PADDING-TOP: 0px
}
.ccbnTblTtl {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px; FONT-WEIGHT: =
bold
}
.ccbnBgTblTtl TD {
	BORDER-BOTTOM: #6699cc 1px solid; TEXT-ALIGN: left; PADDING-BOTTOM: =
0px; MARGIN: 0px 2px 0px 0px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; =
BORDER-RIGHT: #6699cc 1px solid; PADDING-TOP: 3px
}
TR.ccbnBgTblTtl .ccbnNoborder {
	BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-TOP: =
medium none; BORDER-RIGHT: medium none
}
.ccbnBgTblTtl {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblSubTtl {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTblSubTtl {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblOdd {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTblOdd {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblEven {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTblEven {
	BACKGROUND-COLOR: #eeeeee
}
.ccbnTblTxt {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTblTxt {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblTxtBold {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px; FONT-WEIGHT: =
bold
}
.ccbnBgTblTxtBold {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblHighlight {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTblHighlight {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblSubTxt {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTblSubTxt {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblLnk {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTblLnk {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblHighlightLnk {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTblHighlightLnk {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblLabelLnk {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTblLabelLnk {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTtl {
	PADDING-BOTTOM: 0px; MARGIN: 0px 0px 16px; PADDING-LEFT: 0px; =
PADDING-RIGHT: 0px; FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: =
#333; FONT-SIZE: 12pt; FONT-WEIGHT: bold; PADDING-TOP: 0px
}
.ccbnBgTtl {
	BACKGROUND-COLOR: #ffffff
}
.ccbnSubTtl {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgSubTtl {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTxt {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgTxt {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTxtBold {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px; FONT-WEIGHT: =
bold
}
.ccbnBgTxtBold {
	BACKGROUND-COLOR: #ffffff
}
.ccbnSubTxt {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgSubTxt {
	BACKGROUND-COLOR: #ffffff
}
.ccbnRequired {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #ff0000; FONT-SIZE: =
11px
}
.ccbnBgRequired {
	BACKGROUND-COLOR: #ffffff
}
.ccbnError {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #ff0000; FONT-SIZE: =
11px
}
.ccbnBgError {
	BACKGROUND-COLOR: #ffffff
}
.ccbnConfirmBold {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #ff0000; FONT-SIZE: =
11px; FONT-WEIGHT: bold
}
.ccbnBgConfirmBold {
	BACKGROUND-COLOR: #ffffff
}
.ccbnNeg {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #ff0000; FONT-SIZE: =
11px
}
.ccbnBgNeg {
	BACKGROUND-COLOR: #ffffff
}
.ccbnPos {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #009900; FONT-SIZE: =
11px; FONT-WEIGHT: bold
}
.ccbnBgPos {
	BACKGROUND-COLOR: #ffffff
}
.ccbnPrice {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px; FONT-WEIGHT: =
bold
}
.ccbnBgPrice {
	BACKGROUND-COLOR: #ffffff
}
.ccbnLnk {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #006699; FONT-SIZE: =
11px
}
.ccbnBgLnk {
	BACKGROUND-COLOR: #ffffff
}
.ccbnSubLnk {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #006699; FONT-SIZE: =
11px
}
.ccbnBgSubLnk {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblSubLnk {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #006699; FONT-SIZE: =
11px
}
.ccbnBgTblSubLnk {
	BACKGROUND-COLOR: #ffffff
}
.modDisclaimer {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #666666; FONT-SIZE: =
11px
}
.ccbnDisclaimer {
	FONT-FAMILY: Arial, Helvetica, san-serif; COLOR: #666666; FONT-SIZE: =
11px
}
.ccbnBgDisclaimer {
	BACKGROUND-COLOR: #ffffff
}
.ccbnLabel {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px; FONT-WEIGHT: =
bold
}
.ccbnBgLabel {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblLabelLeft {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px; FONT-WEIGHT: =
bold
}
.ccbnBgTblLabelLeft {
	BACKGROUND-COLOR: #ffffff
}
.ccbnTblLabelTop {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px; FONT-WEIGHT: =
bold
}
.ccbnBgTblLabelTop {
	BACKGROUND-COLOR: #ffffff
}
.ccbnNav {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnSelect {
	LINE-HEIGHT: 10px; COLOR: #666; FONT-SIZE: 11px
}
.ccbnBgSelect {
	BACKGROUND-COLOR: #ffffff
}
.ccbnInput {
	LINE-HEIGHT: 10px; COLOR: #666; FONT-SIZE: 11px
}
.ccbnBgInput {
	BACKGROUND-COLOR: #ffffff
}
.ccbnButton {
	COLOR: #666; FONT-SIZE: 11px
}
.ccbnBgButton {
	BACKGROUND-COLOR: #ffffff
}
.ccbnOutline {
	BACKGROUND-COLOR: #ffffff
}
.ccbnOutlineChart {
	BACKGROUND-COLOR: #ffffff
}
.ccbnOutlineQuote {
	BACKGROUND-COLOR: #ffffff
}
.ccbnBgChart {
	BACKGROUND-COLOR: #ffffff
}
.ccbnBgLine {
	BACKGROUND-COLOR: #ffffff
}
.ccbnBgSpacer {
	BACKGROUND-COLOR: #ffffff
}
.ccbnEnumBodyBg {
	BACKGROUND-COLOR: #ffffff
}
.ccbnEnumBg {
	BACKGROUND-COLOR: #ffffff
}
.ccbnEnumBgLogo {
	BACKGROUND-COLOR: #ffffff
}
.ccbnEnumHighlightLt {
	BACKGROUND-COLOR: #ffffff
}
.ccbnEnumHighlight {
	BACKGROUND-COLOR: #ffffff
}
.ccbnEnumShadow {
	BACKGROUND-COLOR: #ffffff
}
.ccbnEnumShadowDk {
	BACKGROUND-COLOR: #ffffff
}
.ccbnEnumTabLnk {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
A.ccbnEnumTabLnk:link {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
A.ccbnEnumTabLnk:hover {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
A.ccbnEnumTabLnk:active {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
A.ccbnEnumTabLnk:visited {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnEnumPeerListLnk {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnEnumTxtEven {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnEnumTxtOdd {
	FONT-FAMILY: Arial, Helvetica, san-serif; FONT-SIZE: 11px
}
.ccbnBgEnumTblEven {
	BACKGROUND-COLOR: #ffffff
}
.ccbnBgEnumTblOdd {
	BACKGROUND-COLOR: #ffffff
}
.ccbnPopover {
	Z-INDEX: 999; BORDER-BOTTOM: #000 1px solid; POSITION: absolute; =
TEXT-ALIGN: left; BORDER-LEFT: #000 1px solid; WIDTH: 200px; BACKGROUND: =
#ffffff; HEIGHT: 100px; VISIBILITY: hidden; OVERFLOW: auto; BORDER-TOP: =
#000 1px solid; BORDER-RIGHT: #000 1px solid
}
.ccbnDefinitionHover {
	WIDTH: 250px; HEIGHT: auto
}
.ccbnEventHeaderHover {
=09
}
.ccbnBioHover {
=09
}
.ccbnNewsHover {
	WIDTH: 200px; HEIGHT: auto
}
.ccbnRowHoverTbl TR:hover TD {
	BACKGROUND: #eeeeee
}
.ccbnRowHoverTbl TR.ccbnIE6Over TD {
	BACKGROUND: #eeeeee
}
.ccbnRowHoverTbl TR.ccbnBgTblTtl:hover TD {
=09
}
.ccbnScroll {
	POSITION: relative; HEIGHT: 160px; OVERFLOW: hidden
}
.ccbnCalendarTable TBODY TD.ccbnEvent:hover {
=09
}
.ccbnCalendarTable TBODY TD.ccbnIE6Over {
=09
}
.ccbnCalendarTable THEAD TD.ccbnCalButton:hover {
	BACKGROUND: #cccccc
}
.ccbnCalendarTable THEAD TD.ccbnIE6Over {
	BACKGROUND: #cccccc
}
.ccbnCalendarDiv {
	Z-INDEX: 999; HEIGHT: auto; ; HEIGHT: =
expression(this.scrollHeight>100?"100px":"auto"); MAX-HEIGHT: 100px
}
.ccbnCalendarHelpDiv {
	Z-INDEX: 999; BACKGROUND: #ffffff; HEIGHT: 400px
}
.ccbnCalendarDivClick {
	HEIGHT: 230px; OVERFLOW: auto
}
.ccbnWeekend {
=09
}
.ccbnToday {
	BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: =
#000 1px solid; BORDER-RIGHT: #000 1px solid
}
.ccbnEvent {
	BACKGROUND: #bbbbbb
}
.ccbnCalButton {
=09
}
.ccbnDay {
=09
}
.ccbnName {
=09
}
.ccbnCalendar {
	CURSOR: default
}
.ccbnCalendarTable {
=09
}
.ccbnCalCenterTitle {
	PADDING-LEFT: 2.5em
}
.ccbnCalIconAnalyst {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_am.=
gif) no-repeat
}
.ccbnCalIconConference {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_cf.=
gif) no-repeat
}
.ccbnCalIconConferencePres {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_cp.=
gif) no-repeat
}
.ccbnCalIconConferenceCall {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_cc-=
ne.gif) no-repeat
}
.ccbnCalIconCustom {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_cus=
tom.gif) no-repeat
}
.ccbnCalIconEarningsConfCall {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_cc-=
er.gif) no-repeat
}
.ccbnCalIconEarnings {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_er.=
gif) no-repeat
}
.ccbnCalIconReports {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_fin=
_rpt.gif) no-repeat
}
.ccbnCalIconMA {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_ma.=
gif) no-repeat
}
.ccbnCalIconGuidance {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_ga.=
gif) no-repeat
}
.ccbnCalIconOther {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_oc.=
gif) no-repeat
}
.ccbnCalIconSalesCall {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_sc.=
gif) no-repeat
}
.ccbnCalIconSalesRelease {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_sar=
.gif) no-repeat
}
.ccbnCalIconShareholders {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_sm.=
gif) no-repeat
}
.ccbnCalIconNewsRelease {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_new=
s.gif) no-repeat
}
.ccbnCalIconSEC {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_sec=
.gif) no-repeat
}
.ccbnCalIconPresentations {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_pre=
s.gif) no-repeat
}
.ccbnCalIcon52WeekHigh {
	BACKGROUND: =
url(http://media.corporate-ir.net/media_files/irol/global_images/icon_52w=
kh.gif) no-repeat
}
.ccbnCalIconAnalyst {
	PADDING-LEFT: 20px
}
.ccbnCalIconConference {
	PADDING-LEFT: 20px
}
.ccbnCalIconConferencePres {
	PADDING-LEFT: 20px
}
.ccbnCalIconConferenceCall {
	PADDING-LEFT: 20px
}
.ccbnCalIconCustom {
	PADDING-LEFT: 20px
}
.ccbnCalIconEarningsConfCall {
	PADDING-LEFT: 20px
}
.ccbnCalIconEarnings {
	PADDING-LEFT: 20px
}
.ccbnCalIconReports {
	PADDING-LEFT: 20px
}
.ccbnCalIconMA {
	PADDING-LEFT: 20px
}
.ccbnCalIconGuidance {
	PADDING-LEFT: 20px
}
.ccbnCalIconOther {
	PADDING-LEFT: 20px
}
.ccbnCalIconSalesCall {
	PADDING-LEFT: 20px
}
.ccbnCalIconSalesRelease {
	PADDING-LEFT: 20px
}
.ccbnCalIconShareholders {
	PADDING-LEFT: 20px
}
.ccbnCalIconNewsRelease {
	PADDING-LEFT: 20px
}
.ccbnCalIconSEC {
	PADDING-LEFT: 20px
}
.ccbnCalIconPresentations {
	PADDING-LEFT: 20px
}
.ccbnCalIcon52WeekHigh {
	PADDING-LEFT: 20px
}
.ccbnEmpty {
	VISIBILITY: hidden
}
TD.ccbnCalButton:hover DIV.ccbnCalendarHelpDiv {
	Z-INDEX: 100; VISIBILITY: visible
}
.ccbnCalendarTable THEAD TD.ccbnIE6Over DIV.ccbnCalendarHelpDiv {
	Z-INDEX: 100; VISIBILITY: visible
}
TD.ccbnEvent:hover DIV.ccbnCalendarDiv {
	Z-INDEX: 100; VISIBILITY: visible
}
.ccbnCalendarTable TBODY TD.ccbnIE6Over DIV.ccbnCalendarDiv {
	Z-INDEX: 100; VISIBILITY: visible
}

------=_NextPart_000_0000_01CA5191.E1933830
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://phx.corporate-ir.net/client/10/109552/script/form_state_manager.js

var fsman;

	function FormState(formObj) {
		this.formObj =3D formObj;	=09
		this.formObj.onclick =3D fsmanScan;
		this.formObj.onkeyup =3D fsmanScan;
		this.formObj.onfocus =3D fsmanScan;
		this.formObj.onchange =3D fsmanScan;
		this.registeredButtons =3D new Array();
		this.allElements =3D new Array(formObj.elements.length);
		var elementObj;
		for (var j =3D 0; j < formObj.elements.length; j++) {
			elementObj =3D formObj.elements[j];
			var elementValue =3D "";
			var noscan =3D elementObj.getAttribute("noscan");
			if (noscan !=3D null && noscan.length > 1) {
				this.allElements[j] =3D "noscan";
			} else {
				switch (elementObj.type) {

					case ("text"):
					case ("textarea"):
					case ("hidden"):
					case ("password"):
						elementValue =3D elementObj.value;
						break;
					case ("radio"):
					case ("checkbox"):
						elementValue =3D elementObj.defaultChecked;
						break;
					case ("select-one"):
						elementValue =3D elementObj.selectedIndex;
						break;
					case ("select-multiple"):
						for (var k =3D 0; k < elementObj.options.length; k++) {
							// the value is a string representing the selected state of each =
option
							elementValue +=3D =
elementObj.options[k].defaultSelected.toString();
						}
						break;
				}
				this.allElements[j] =3D elementValue;
			}
		}
	}

	FormState.prototype.hasChanged =3D function () {

		var elementObj;
		var formState;
		var elementValue;
		var elemHasChanged =3D false;
		for (var i =3D 0; i < this.formObj.elements.length; i++) {
			elementObj =3D this.formObj.elements[i];
			elementValue =3D this.allElements[i];
			var noscan =3D elementObj.getAttribute("noscan");
			if (noscan !=3D null && noscan.length > 1) {
				elemHasChanged =3D false;
			} else {		=09
				switch (elementObj.type) {
					case ("text"):
					case ("textarea"):
					case ("hidden"):
					case ("password"):
						elemHasChanged =3D (elementValue !=3D elementObj.value);
						break;
					case ("radio"):
					case ("checkbox"):
						if ((elementValue =3D=3D false && elementObj.checked) || =
(elementValue =3D=3D true && !elementObj.checked)) {
							elemHasChanged =3D true;
						}
						break;
					case ("select-one"):
						elemHasChanged =3D (elementValue !=3D elementObj.selectedIndex);
						break;
					case ("select-multiple"):
						var multiValueString =3D "";
						for (var k =3D 0; k < elementObj.options.length; k++) {
							multiValueString +=3D elementObj.options[k].selected.toString();
						}
						elemHasChanged =3D (elementValue !=3D multiValueString);

				}
			}
			if (elemHasChanged) {
				return true;
			}
		}
		return elemHasChanged;
	}
=09
	FormState.prototype.scan =3D function () {
		if (this.hasChanged()) {
			this.unlockButtons();
			return true;
		} else {
			this.lockButtons();
			return false;
		}	=09
	}
=09
	FormState.prototype.register =3D function (buttonObj) {
		if (buttonObj !=3D null) {
			buttonObj.disabled =3D true;
			this.registeredButtons[this.registeredButtons.length] =3D buttonObj;
		}
	}
=09
	FormState.prototype.unlockButtons =3D function () {
		for (var i =3D 0; i < this.registeredButtons.length; i++) {
			this.registeredButtons[i].disabled =3D false;
		}
	}=09
=09
	FormState.prototype.lockButtons =3D function () {
		for (var i =3D 0; i < this.registeredButtons.length; i++) {
			this.registeredButtons[i].disabled =3D true;
		}
	}
=09
=09
	function FormStateManager(documentString, sff) {
		this.initialized =3D false;
		this.allForms =3D null;
		this.doc =3D null;	=09
		this.docString =3D documentString;	=09
		this.registeredButtons =3D new Array();
		this.selectFirstField =3D (sff) ? true : false;
		this.forceApplyButtonLockFlag =3D false;
		this.noscan =3D false;
		this.initialize();
	}

	FormStateManager.prototype.initialize =3D function () {
		this.initialized =3D false;
		this.forceApplyButtonLockFlag =3D false;
		this.allForms =3D new Array();
	=09
	=09
		if (this.docString !=3D null) {
			this.doc =3D eval(this.docString);
			if (this.doc !=3D null && this.doc.forms.length > 0) {
				this.allForms =3D new Array();
				var formStateObj;
				for (var i =3D 0; i < this.doc.forms.length; i++) {
					var formStateObj =3D new FormState(this.doc.forms[i]);
					this.registerFormState(formStateObj);
					if (i =3D=3D 0) {
						this.focusFirst(this.doc.forms[i]);
					}
				}
				this.doc.onunload =3D fsmanInitialize;
			} else {
				setTimeout("fsmanInitialize()", 500);
				return;
			}
		}
	}
=09
	FormStateManager.prototype.registerFormState =3D function(formStateObj) =
{
		if (formStateObj !=3D null) {					=09
			this.allForms[this.allForms.length] =3D formStateObj;
			this.initialized =3D true;
		}
	}
=09
	FormStateManager.prototype.focusFirst =3D function (formObj) {
		var elementObj;
		for (var e =3D 0; e < formObj.elements.length; e++) {
			elementObj =3D formObj.elements[e];
			if (elementObj.type =3D=3D "text" || elementObj.type =3D=3D =
"textarea") {
				if (this.selectFirstField) {
					elementObj.select();=09
				} else {
					elementObj.focus();=09
				}=09
				break;
			}
		}=09
	}

	FormStateManager.prototype.hasChanged =3D function () {
		if (!this.initialized) {
			this.initialize();
			return false;
		}
		for (var i =3D 0; i < this.allForms.length; i++) {
			formStateObj =3D this.allForms[i];
			if (formStateObj.hasChanged()) {
				return true;
			}
		}
		return false;
	}
=09
	FormStateManager.prototype.scan =3D function () {
		if (this.noscan) return;
		var childFSHasChanged =3D false;
		var fsObj;
		for (var i =3D 0; i < this.allForms.length; i++) {
			fsObj =3D this.allForms[i];
			if (fsObj.scan()) {
				childFSHasChanged =3D true;
			}
		}
	=09
		if (childFSHasChanged) {
			this.unlockButtons();
		} else {
			this.lockButtons();
		}
	}=09

	FormStateManager.prototype.register =3D function (buttonObj) {
		if (buttonObj !=3D null) {
			buttonObj.disabled =3D true;
			this.registeredButtons[this.registeredButtons.length] =3D buttonObj;
		}
	}
=09
	FormStateManager.prototype.unlockButtons =3D function () {
		for (var i =3D 0; i < this.registeredButtons.length; i++) {
			button =3D this.registeredButtons[i];
			if (button.name =3D=3D "mainSubmit") {
				if (this.forceApplyButtonLockFlag) continue;
			}
			button.disabled =3D false;
		}
	}=09
=09
	FormStateManager.prototype.lockButtons =3D function () {
		for (var i =3D 0; i < this.registeredButtons.length; i++) {
			this.registeredButtons[i].disabled =3D true;
		}
	}
=09
	FormStateManager.prototype.lockApplyButton =3D function () {
		for (var i =3D 0; i < this.registeredButtons.length; i++) {
			button =3D this.registeredButtons[i];
		=09
			if (button.name =3D=3D "mainSubmit") {
				button.disabled =3D true;
			}

		}
	}=09
=09
	FormStateManager.prototype.unlockApplyButton =3D function () {
		// Check bypass lock
		if (this.forceApplyButtonLockFlag) return;
	=09
		for (var i =3D 0; i < this.registeredButtons.length; i++) {
			button =3D this.registeredButtons[i];
		=09
			if (button.name =3D=3D "mainSubmit") {
				button.disabled =3D false;
			}

		}
	}
=09
	FormStateManager.prototype.unlockResetButton =3D function () {
		for (var i =3D 0; i < this.registeredButtons.length; i++) {
			button =3D this.registeredButtons[i];
			if (button.name =3D=3D "mainReset") {
				button.disabled =3D false;
			}

		}
	}=09
=09
	FormStateManager.prototype.lockResetButton =3D function () {
		for (var i =3D 0; i < this.registeredButtons.length; i++) {
			button =3D this.registeredButtons[i];

			if (button.name =3D=3D "mainReset") {
				button.disabled =3D true;
			}

		}
	}
=09

	FormStateManager.prototype.forceApplyButtonLock =3D function () {
		this.forceApplyButtonLockFlag =3D true;=09
	}
=09
	FormStateManager.prototype.clearApplyButtonLock =3D function () {
		this.forceApplyButtonLockFlag =3D false;=09
	}
=09
	FormStateManager.prototype.disableScan =3D function () {
		this.noscan =3D true;=09
	}=09
=09
	FormStateManager.prototype.enableScan =3D function () {
		this.noscan =3D false;=09
	}	=09

	function unlockButtons() {
		if (fsman !=3D null) {
			setTimeout("fsman.unlockButtons()", 50);
		}
	}
=09
	function lockButtons() {
		if (fsman !=3D null) {
			setTimeout("fsman.lockButtons()", 50);
		}=09
	}
=09
	function unlockApplyButton() {
		if (fsman !=3D null) {
			setTimeout("fsman.unlockApplyButton()", 50);=09
		}
	}
=09
	function lockApplyButton() {
		if (fsman !=3D null) {
			setTimeout("fsman.lockApplyButton()", 50);
		}		=09
	}
=09
	function unlockResetButton() {
		if (fsman !=3D null) {
			setTimeout("fsman.unlockResetButton()", 50);=09
		}=09
	}
=09
	function lockResetButton() {
		if (fsman !=3D null) {
			setTimeout("fsman.lockResetButton()", 50);
		}=09
	}
=09
	function forceApplyButtonLock() {
		if (fsman !=3D null) {
			setTimeout("fsman.forceApplyButtonLock()", 50);
		}=09
	}
=09
	function clearApplyButtonLock() {
		if (fsman !=3D null) {
			setTimeout("fsman.clearApplyButtonLock()", 50);
		}=09
	}=09
=09
	function fsmanScan() {
		setTimeout("fsman.scan()", 50);
	}
	function fsmanInitialize() {
		fsman.initialize();	=09
	}
------=_NextPart_000_0000_01CA5191.E1933830
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://phx.corporate-ir.net/client/10/109552/script/jsscript.js

<!--

function MM_reloadPage(init) {  //reloads the window if Nav4 resized

  if (init=3D=3Dtrue) with (navigator) {if =
((appName=3D=3D"Netscape")&&(parseInt(appVersion)=3D=3D4)) {

    document.MM_pgW=3DinnerWidth; document.MM_pgH=3DinnerHeight; =
onresize=3DMM_reloadPage; }}

  else if (innerWidth!=3Ddocument.MM_pgW || =
innerHeight!=3Ddocument.MM_pgH) location.reload();

}

MM_reloadPage(true);



function MM_swapImgRestore() { //v3.0

  var i,x,a=3Ddocument.MM_sr; =
for(i=3D0;a&&i<a.length&&(x=3Da[i])&&x.oSrc;i++) x.src=3Dx.oSrc;

}



function MM_preloadImages() { //v3.0

  var d=3Ddocument; if(d.images){ if(!d.MM_p) d.MM_p=3Dnew Array();

    var i,j=3Dd.MM_p.length,a=3DMM_preloadImages.arguments; for(i=3D0; =
i<a.length; i++)

    if (a[i].indexOf("#")!=3D0){ d.MM_p[j]=3Dnew Image; =
d.MM_p[j++].src=3Da[i];}}

}



function MM_findObj(n, d) { //v4.01

  var p,i,x;  if(!d) d=3Ddocument; =
if((p=3Dn.indexOf("?"))>0&&parent.frames.length) {

    d=3Dparent.frames[n.substring(p+1)].document; n=3Dn.substring(0,p);}

  if(!(x=3Dd[n])&&d.all) x=3Dd.all[n]; for =
(i=3D0;!x&&i<d.forms.length;i++) x=3Dd.forms[i][n];

  for(i=3D0;!x&&d.layers&&i<d.layers.length;i++) =
x=3DMM_findObj(n,d.layers[i].document);

  if(!x && d.getElementById) x=3Dd.getElementById(n); return x;

}



function MM_swapImage() { //v3.0

  var i,j=3D0,x,a=3DMM_swapImage.arguments; document.MM_sr=3Dnew Array; =
for(i=3D0;i<(a.length-2);i+=3D3)

   if ((x=3DMM_findObj(a[i]))!=3Dnull){document.MM_sr[j++]=3Dx; =
if(!x.oSrc) x.oSrc=3Dx.src; x.src=3Da[i+2];}

}



function openBrowserWindow(theURL,winName,features) {

  window.open(theURL,winName,features);

}



function SubmitSubsidiary() {

	document.PickSubsidiary.submit();

}



function openThis(newUrl,winStats){

	newWin =3D =
open(newUrl,'_blank','width=3D400,height=3D500,left=3D200,scrollbars=3Dye=
s');

}



function statePicked(value){

	var listMover;

	listMover =3D ("list.asp?state=3D" + value);

	openThis(listMover);

=09

}

//-->
------=_NextPart_000_0000_01CA5191.E1933830
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://media.corporate-ir.net/media_files/irol/global_js/phoenix.js

/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Name: SetChecked()
Author: Jgreen
Use: checks or unchecks all checkboxes
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/	=09
function SetChecked(blnVal)=20
{
	var sForm 	=3D document.frmCompare;
	var sLength =3D sForm.elements.length;

	for(var i =3D 0; i < sLength; i++)=20
	{
		var sElement =3D sForm.elements[i];
		if (sElement.name.substr(0,4) =3D=3D 'comp')=20
			sElement.checked =3D blnVal;
	}
}

/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Name: ValidateChart()
Author: Jgreen
Use: Function Validates that Intraday Times and Frequencies
     are only charted vs. each other.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/		=09
function ValidateChart(me)
{
	var sFreq =3D =
me.control_freq.options[me.control_freq.selectedIndex].value;
	var sTime =3D =
me.control_time.options[me.control_time.selectedIndex].value;
	var iTime =3D 1;
	var iFreq =3D 1;
=09
	var sTimeSubstr =3D sTime.substr(sTime.length - 2,2);
	if ((sTimeSubstr =3D=3D "hr") || (sTimeSubstr =3D=3D "dy"))
		iTime =3D 0;
=09
	var sFreqSubstr =3D sFreq.substr(sFreq.length - 2,2);
	if ((sFreqSubstr =3D=3D "mi" ) || (sFreqSubstr =3D=3D "hr" ))=20
		iFreq =3D 0;
=09
	var iCount =3D iFreq + iTime;
	if (iCount =3D=3D 1)
	{
		alert("Intraday Times and Frequencies must be charted together");
		return false;
	}
	else
	{
		return true;
	}
}

/* *****************************************
added by Paul McGeehan
takes into account all necessary CCBN javascript
******************************************** */
function openCapsule(url, name, prop)
					{
				sizedWindow =3D window.open(url, name, prop);
					{
					setTimeout('sizedWindow.focus();', 250);
					}
				}
		=09

function go(where) {
				if (where !=3D "-") {
				self.location =3D where;
			=09
			}
		}
			=20
			function navigate(obj) {
			    idx =3D obj.selectedIndex;
			    url =3D obj.options[idx].value;
		=09
			    if (url =3D=3D "URL") {
			        str =3D obj.options[idx].text;
			        i =3D 0;
			        finished =3D false;
		=09
			        while (!finished) {
			            if (((str.charAt(i) > "A") && (str.charAt(i) < "z")) || i =
>=3D str.length)
			                finished =3D true;
			            else
			                i++;
			        }
		=09
			        url =3D =
window.location.protocol+'//'+window.location.host+"http:/" + =
str.substring(i,str.length);
			    }
		=09
			    if (url !=3D "") {
			        window.location =3D url;
			    }
			}

/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Author: JDelia
Use: For use with News Navigation
1) write the select drop-down to the page and;=20
2) handle the changing of the page when an new option is selected
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/
function ccbnGetQS(){
  var theLocation =3D self.location;
  var ccbn_i, qString =3D theLocation.search.substr(1);
  var queryString =3D new Object();
  if (qString.length > 0) {
    var params =3D qString.replace(/\+/g, " ").split("&");
	for (ccbn_i =3D 0; ccbn_i < params.length; ccbn_i++) {
	  params[ccbn_i] =3D unescape(params[ccbn_i]).split("=3D");
	  queryString[params[ccbn_i][0]] =3D params[ccbn_i][1];
	}
  }
  return queryString;
 }

function ccbnWriteOption(nyo, year){
  var queryString =3D ccbnGetQS();
  document.write('<option value=3D"' + nyo + '"');
  if(nyo=3D=3DqueryString["nyo"]){
      document.write(' selected=3D"selected"');
  }
  document.write('>' + year + '</option>');
}

function ccbnNewsGo(theSelect){
  var yearOffset =3D theSelect.options[theSelect.selectedIndex].value;
  var theLocation =3D self.location; =20
  var tempLocation;
  var queryString =3D ccbnGetQS();
   if(yearOffset=3D=3D-1) return
   if(queryString["nyo"]){
     var currentNYO=3D"&nyo=3D" + queryString["nyo"];
     var replaceNYO=3D"&nyo=3D" + yearOffset;
         tempLocation =3D =
theLocation.href.replace(currentNYO,replaceNYO);
   }
   else{
      tempLocation =3D theLocation + "&nyo=3D" + yearOffset
   }
  =20
   if(queryString["t"]){
     var currentSearch=3D"&t=3D" + queryString["t"];
     var replaceSearch=3D""; =20
         tempLocation =3D =
tempLocation.replace(currentSearch,replaceSearch);
   }
   location =3D tempLocation;
}

/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Author: JDelia
Use: Created for Edgar Interactive Charts but can be used
for other functionality going forward
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/
/*      CONSTANTS      */
var CCBN_SHOW =3D "visible";
var CCBN_HIDE =3D "hidden";
var CCBN_SHOW_DISPLAY =3D "block";
var CCBN_HIDE_DISPLAY =3D "none";
var CCBN_TIMER =3D 500;
var CCBN_GET_X =3D 0;
var CCBN_GET_Y =3D 1;
var CCBN_GET_XY =3D 2;
var CCBN_BIOHOVER =3D 0;
var CCBN_NEWSHOVER =3D 1;
var CCBN_EVENTHOVER =3D 2;
var CCBN_DEFINITIONHOVER =3D 3;
var CCBN_OVER =3D 0;
var CCBN_OUT =3D 1;
var CCBN_IE =3D "Microsoft Internet Explorer";
/*      CONSTANTS      */

/* GLOBALS */
var ccbn_mozMouseX, ccbn_mozMouseY, ccbn_popover_width, ccbn_fhObj, =
ccbnTimeout, ccbnHoverReady;

var ccbn_appName=3Dnavigator.appName;
var ccbn_appVersion=3Dnavigator.appVersion;
var ccbn_offsetX=3D10;
var ccbn_offsetY=3D5;
var ccbn_no_doctype=3Dfalse;
/* GLOBALS */

/* used to add new window events (onmouseover, onresize, etc) without=20
   losing any other events that have been set */
function ccbnAddEvent(which, func){
	var oldEvent =3D which;
	if(typeof oldEvent !=3D 'function') newEvent =3D func;
	else{
		newEvent =3D function(){
			if(oldEvent) oldEvent();
			func();
		}
	}
	return newEvent
}

/* used to add new window onload event without=20
   losing any other events that have been set */
function ccbnAddLoadEvent(_function){=20
	var _onload =3D window.onload;
	if ( typeof window.onload !=3D 'function' ){
		if ( window.onload ){
			window.onload =3D _function;
		}
		else{
			var _addEventListener =3D window.addEventListener || =
document.addEventListener;
			var _attachEvent =3D window.attachEvent || document.attachEvent;
			if ( _addEventListener ){
				_addEventListener('load', _function, true);
				return true;
			}
			else if ( _attachEvent ){
				var _result =3D _attachEvent('onload', _function);
				return _result;
			}
			else{
				//todo: preloading fix for ie5.2 on mac os
				return false;
			}
		}
	}=20
	else{
		window.onload =3D function(){
			_onload();
			_function();
		}
	}
}

function ccbnCloneToBody(objID){
	var obj =3D ccbnGetObj(objID);
	if(obj.parentNode!=3Ddocument.body){
		var tmpNode =3D obj.cloneNode(true);
		tmpNode.style.left=3DtmpNode.style.top=3D0;
		obj.parentNode.removeChild(obj);
		document.body.appendChild(tmpNode);
	}
}

function ccbnCloseObj(id){ if(!ccbnGetObj(id)) return; =
ccbnShowHide(ccbnGetObj(id),CCBN_HIDE); }

/* moves the object to the specified X and Y coordinates */
function ccbnDoMove(objectID, moveToX, moveToY, moveToPx) {
    if (document.layers && document.layers[objectID] !=3D null) {
        document.layers[objectID].left =3D moveToX + moveToPx;
        document.layers[objectID].top =3D moveToY + moveToPx;
    }
    else if (document.all) {
        document.all[objectID].style.posLeft =3D moveToX;
        document.all[objectID].style.posTop =3D moveToY;
    }
    else if (document.getElementById){
       document.getElementById(objectID).style.left =3D moveToX + =
moveToPx;
       document.getElementById(objectID).style.top =3D moveToY + =
moveToPx;
    }
}

function =
ccbnEObj(){return(ccbn_appName=3D=3D"Netscape"?'event':'\'\'');}

/* finds the position of the object and returns X and Y coordinates in =
an array */
function ccbnFindPos(obj){
	var curleft =3D curtop =3D 0;
	if (obj.offsetParent) {
		curleft =3D obj.offsetLeft;
		curtop =3D obj.offsetTop;
		while (obj =3D obj.offsetParent){
			curleft +=3D obj.offsetLeft;
			curtop +=3D obj.offsetTop;
		}
	}
	return [curleft,curtop];
}

/* splits a string based on the & character
   returns the parameter / value pair as an object */
function ccbnGetArgs(query){
	var args =3D new Object();
	var pairs =3D query.split("&");
	for(ccbn_i=3D0; ccbn_i<pairs.length;ccbn_i++){
		var pos =3D pairs[ccbn_i].indexOf('=3D');
		if(pos =3D=3D -1){ break;}
		var argname =3D pairs[ccbn_i].substring(0,pos);
		var value =3D pairs[ccbn_i].substring(pos+1);
		args[argname] =3D unescape(value);
	}
	return args;
}

/* returns the dimensions of the browser window
   parameter getWhich
   			0 - returns the width of the window
			1 - returns the height of the window
			2 - returns both width and height
 */
function ccbnGetBrowserDimensions(getWhich){
	var tmpX, tmpY, tmpArray;
	if (self.innerHeight) // all except Explorer
	{
		tmpX =3D self.innerWidth;
		tmpY =3D self.innerHeight;
	}
	else if (document.documentElement && =
document.documentElement.clientHeight) // Explorer 6 Strict Mode
	{
		tmpX =3D document.documentElement.clientWidth;
		tmpY =3D document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		tmpX =3D document.body.clientWidth;
		tmpY =3D document.body.clientHeight;
	}
=09
	tmpArray =3D new Array(tmpX, tmpY);
	if(getWhich =3D=3D CCBN_GET_XY) return tmpArray;
	else return tmpArray[getWhich];
}

/* finds the value of the selector that is passed */
function ccbnGetCSSValue(selector){
       var ccbn_sheetList =3D document.styleSheets;
       var ccbn_ruleList;
       var ccbn_i, ccbn_j;
	  =20
       for (ccbn_i=3D0;ccbn_i<ccbn_sheetList.length;ccbn_i++)
       {
	   	try{
           if(ccbn_sheetList[ccbn_i].rules) ccbn_ruleList =3D =
ccbn_sheetList[ccbn_i].rules;
		   else if(ccbn_sheetList[ccbn_i].cssRules) ccbn_ruleList =3D =
ccbn_sheetList[ccbn_i].cssRules;
		   else break;

           for (ccbn_j=3D0; ccbn_j<ccbn_ruleList.length; ccbn_j++)
           {
               if (ccbn_ruleList[ccbn_j].selectorText =3D=3D selector)
               {
			   	   var ccbn_cssValue =3D =
ccbn_ruleList[ccbn_j].style.cssText.toLowerCase();
				   ccbn_cssValue=3Dccbn_cssValue.replace(/; /g, ';');
               }  =20
           }
		  }
		  catch(e){}  //try catch for cross domain access issue
       }
	return ccbn_cssValue;	  =20
}

/* find the current position of the mouse */
function ccbnGetMouseXY(e) {
  if(ccbn_appName!=3D"Netscape") { // grab the x-y pos.s if browser is =
IE
    if ((!document.compatMode || document.compatMode =3D=3D =
'BackCompat') && document.body && typeof document.body.scrollLeft !=3D =
'undefined'){
        ccbn_scrollLeft =3D document.body.scrollLeft;
        ccbn_scrollTop =3D document.body.scrollTop;
     }
     else{
        ccbn_scrollLeft =3D document.documentElement.scrollLeft;
        ccbn_scrollTop =3D document.documentElement.scrollTop;
    }
    ccbn_tempX =3D event.clientX + ccbn_scrollLeft;
    ccbn_tempY =3D event.clientY + ccbn_scrollTop;
  } else {  // grab the x-y pos.s if browser is NS
    ccbn_tempX =3D e.pageX;
    ccbn_tempY =3D e.pageY;
  } =20

  // catch possible negative values in NS4
  if (ccbn_tempX < 0){ccbn_tempX =3D 0}
  if (ccbn_tempY < 0){ccbn_tempY =3D 0} =20

  ccbn_mozMouseX =3D ccbn_tempX;
  ccbn_mozMouseY =3D ccbn_tempY;
  return true;
}

/* returns the ccbnAjaxObject based on the module name that is passed */
function ccbnGetAjaxObjByModuleName(moduleName){
	for(ccbn_i=3D0;ccbn_i<ccbnAjaxObject.length;ccbn_i++){
		if(ccbnAjaxObject[ccbn_i].moduleName =3D=3D moduleName) {
			return ccbnAjaxObject[ccbn_i];
		}
	}
}

/* cross browser method that finds named DOM objects on a page */
function ccbnGetObj(objName){
	if (document.layers && document.layers[objName] !=3D null){ return =
document.layers[objName]; }
	else if (document.all){ return document.all[objName]; }
	else if (document.getElementById){ return =
document.getElementById(objName); }
}

/* function called by the mouse over moudles to display hidden divs */
function ccbnHandleHover(theAnchor, theType, theEvent){
	var ccbnTheHref =3D theAnchor.href.toLowerCase();
	var anchorArgs =3D ccbnGetArgs(ccbnTheHref);
=09
	var theID;
=09
	if(!ccbnHoverReady){ ccbnSetupHovers(); return; }
	switch(theType){
			case CCBN_BIOHOVER:			if(theEvent=3D=3DCCBN_OVER){
											if(!anchorArgs.id) break;
											theID =3D "bio" + anchorArgs.id;
											ccbnOpenObj(theID);
										}
										else ccbnStartTimer();
										break;
			case CCBN_NEWSHOVER:		if(theEvent=3D=3DCCBN_OVER){
											if(!anchorArgs.id) break;
											theID =3D "release" + anchorArgs.id;
											ccbnOpenObj(theID);
										}
										else ccbnStartTimer();
										break;
			case CCBN_EVENTHOVER:		if(theEvent=3D=3DCCBN_OVER){
											if(anchorArgs.item_id) theID =3D "eventHeader" + =
anchorArgs.item_id;
											else if(anchorArgs.eventid) theID =3D "eventHeader" + =
anchorArgs.eventid;
											else break;
											ccbnOpenObj(theID);
										}
										else ccbnStartTimer();
										break;
			case CCBN_DEFINITIONHOVER:	if(theEvent=3D=3DCCBN_OVER){
											anchorArgs =3D ccbnGetArgs(theAnchor.href);  //have to redo =
this because of case sensitivity
											var defID =3D anchorArgs.def_id;
											var refModuleType =3D anchorArgs.mt;
											var defSource =3D refModuleType;
										=09
											/* remove bad characters from definition id */
											defID =3D defID.replace(/%*/g,"")
										=09
											/*  need to change value of refMoudleType in certain =
situations
											    this logic matches the logic found in the Engine */
											if(refModuleType =3D=3D "TFSnapshot"){
												defSource =3D "Multex";
												switch(defID){
													case "APR2REV": case "APRCFPS": case "APRICE2BK": case =
"ATOTD2EQ":
													case "DIVTRENDGR": case "REVTRENDGR": case "NITRENDGR": =
case "ACURRATIO":
														defSource =3D "Worldscope";
												}
											}
										=09
											if(refModuleType =3D=3D "TFTradingStatistics"){
												defSource =3D "Multex Market Guide";
												switch(defID){
													case "6": case "7": case "17":
														defSource =3D "MarketWatch";
												}
											}
										=09
											if(refModuleType =3D=3D "TFRatios"){
												switch(defID){
													case "AROIPCT": case "APMGN": case "APMGNPCT": case "316": =
case "ACURRATIO":
													case "AINVTURN": case "ARECTURN": case "AASTTURN": case =
"AROAPCT": case "AROEPCT":
													case "391": case "APR2REV": case "APRCFPS": case =
"ATOTD2EQ": case "APRICE2BK": case "APRICE2BK":
														defSource =3D "Worldscope";
														break;
													case "308":
														defSource =3D "Multex";
														break;
												}
											}
										=09
											if(refModuleType =3D=3D "WS") defSource =3D "Worldscope";
											if(refModuleType =3D=3D "SEC") defSource =3D "SECFeed";
											if(refModuleType =3D=3D "HL") defSource =3D "Highline";
											if(refModuleType =3D=3D "TR") defSource =3D "Reuters";
											theID =3D "definition" + defID + defSource.substring(0,5);
											ccbnOpenObj(theID);
										}
										else ccbnStartTimer();
										break;
	}
}

function ccbnForceHide(){ if(!ccbn_fhObj) return; var ccbn_tmpObjId =3D =
ccbn_fhObj.id; ccbnShowHide(ccbn_fhObj,CCBN_HIDE); =
ccbnDoMove(ccbn_tmpObjId, -1000, -1000, =
((ccbn_appName=3D=3D"Netscape")?'px':''))}

/* prepares an object to be moved */
function =
ccbnMoveObj(objectID,e,resolved_x,resolved_y,absolute_div,abs_x) {
	var tmpX =3D (resolved_x)?resolved_x:ccbn_mozMouseX;
	var tmpY =3D (resolved_y)?resolved_y:ccbn_mozMouseY;
	var ccbn_x =3D tmpX + ccbn_offsetX;
	var ccbn_y =3D tmpY + ccbn_offsetY;
	abs_x =3D abs_x ? abs_x : ccbn_x;
	var ccbn_px=3Dccbn_appName=3D=3D"Netscape"?'px':'';
	var ccbn_cssValue;
=09
	ccbn_browser_x =3D ccbnGetBrowserDimensions(CCBN_GET_X);
=09
	//if the global variable for the popover width has not yet been set, =
get the width
	if(ccbn_popover_width =3D=3D null || isNaN(ccbn_popover_width)){
		var tmpClassNames =3D ccbnGetObj(objectID).className.split(" ");
		for(ccbn_i=3D0;ccbn_i<tmpClassNames.length;ccbn_i++){
			ccbn_cssValue =3D ccbnGetCSSValue("." + tmpClassNames[ccbn_i]);
			if(ccbn_cssValue && ccbn_cssValue.lastIndexOf(";width: ") !=3D -1) =
ccbn_popover_width =3D parseInt( =
ccbn_cssValue.substring(ccbn_cssValue.lastIndexOf(";width: =
")+8,ccbn_cssValue.length));
			 if(ccbn_popover_width =3D=3D null || isNaN(ccbn_popover_width)){ =
ccbn_popover_width =3D 300;}
		 }
	}
=09
	//if the div is not supposed to be relatively positioned
	//clone the div from its current parent onto the document.body
	if(absolute_div) ccbnCloneToBody(objectID);
=09
	//if the div is too wide to fit in the window, put it to the left of =
the node
	if(abs_x+ccbn_popover_width > ccbn_browser_x) ccbn_x -=3D =
ccbn_popover_width;=09
=09
	//move the object
	ccbnDoMove(objectID, ccbn_x, ccbn_y, ccbn_px);
}

function ccbnOpenObj(id){
	ccbnStopTimer();
	ccbnForceHide();
	if(!ccbnGetObj(id)) return;
	ccbnMoveObj(id,ccbnEObj(),null,null,true);
	ccbnShowHide(ccbnGetObj(id),CCBN_SHOW);
}

function ccbnSetInnerHtml(el,inner){ el.innerHTML =3D inner; }

function ccbnSetupHovers(){
	if(!ccbnHoverReady){
		// If NS then set up for mouse capture
		if(document.captureEvents){ document.captureEvents(Event.MOUSEMOVE); }
	=09
		// Set-up to use getMouseXY function onMouseMove
		document.onmousemove =3D ccbnAddEvent(document.onmousemove, =
ccbnGetMouseXY);
	=09
		ccbnHoverReady=3Dtrue;
	}
}

function ccbnSetupAjax(){
	for(ccbn_i=3D0;ccbn_i<ccbnAjaxObject.length;ccbn_i++){
		ccbnAjaxObject[ccbn_i].init();
	}
}

function ccbnShowHide(el,which){ el.style.visibility =3D which; =
if(which=3D=3DCCBN_SHOW) ccbn_fhObj=3Del; else ccbn_fhObj =3D '';}
function ccbnShowHide_Display(el,which){ el.style.display =3D which;}

function ccbnStopTimer(){ clearTimeout(ccbnTimeout); }

function ccbnStartTimer(timerOverride){
	//allows end users to set a specific time to wait
	if(timerOverride > -1) CCBN_TIMER =3D timerOverride;
	ccbnTimeout =3D setTimeout(ccbnForceHide,CCBN_TIMER);
}


/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Author: JDelia
Use: Animated Anchor Jumps
	This script originally found at Brand Spanking New:
	http://www.brandspankingnew.net/archive/2005/09/animated_anchor.html
	Then modified for IE support by Steve Cochrane (hq at stevecochrane dot =
com)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/=09

/* needs to be on page or in module
// initializes the script
window.onload =3D ccbnAddEvent(window.onload, ccbnReplaceAnchorLinks);
*/

/* GLOBALS */
var ccbnScrollInterval;
var ccbnScrTime, ccbnScrSt, ccbnScrDist, ccbnScrDur, ccbnScrInt;
/* GLOBALS */

// Found this script at =
http://blog.firetree.net/2005/07/04/javascript-find-position/
// Just used here to provide offsetTop functionality for IE
function ccbnFindPosY(obj) {
    var curtop =3D 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop +=3D obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj =3D obj.offsetParent;
        }
    else if(obj.y)
        curtop +=3D obj.y;
    return curtop;
}

function ccbnReplaceAnchorLinks(){
	var anchors, ccbn_i, targ, targarr;

	if (!document.getElementById) return;
=09
	// get all anchors
	anchors =3D document.getElementsByTagName("a");
=09
	for (ccbn_i=3D0;ccbn_i<anchors.length;ccbn_i++)
	{
		// check if href links to an anchor on this page
		if ( anchors[ccbn_i].href.indexOf("#") !=3D -1)
		{
			// get name of target anchor
			targ =3D anchors[ccbn_i].href.substring( =
anchors[ccbn_i].href.indexOf("#")+1 );
		=09
			// find target anchor
			targarr =3D document.getElementsByName( targ );
		=09
			if (targarr.length)
			{
				anchors[ccbn_i].className =3D (targarr[0].offsetTop < =
anchors[ccbn_i].offsetTop) ? "up" : "down";
				anchors[ccbn_i].id =3D "__" + targ;	// save target as id with prefix =
(used in onclick function below)
				anchors[ccbn_i].onclick =3D function () { ccbnScrollToAnchor( =
this.id.substring( 2 ) ); return false; };
			}
		}
	=09
	}
}

function ccbnScrollPage(){
	ccbnScrTime +=3D ccbnScrInt;
	if (ccbnScrTime < ccbnScrDur) {
		window.scrollTo( 0, =
ccbnEaseInOut(ccbnScrTime,ccbnScrSt,ccbnScrDist,ccbnScrDur) );
	}else{
		window.scrollTo( 0, ccbnScrSt+ccbnScrDist );
		clearInterval(ccbnScrollInterval);
	}
}

function ccbnScrollToAnchor(aname){
	var anchors, ccbn_i, ele, elePosY, heightCorrection;

	if (!document.getElementById)
		return;
=09
	// get anchor
	anchors =3D document.getElementsByTagName("a");
	for (ccbn_i=3D0;ccbn_i<anchors.length;ccbn_i++) {
		if (anchors[ccbn_i].name =3D=3D aname) {
			ele =3D anchors[ccbn_i];
			ccbn_i =3D anchors.length;
		}
	}
=09
	// Find anchor's Y position
	elePosY =3D ccbnFindPosY(ele);
=09
	//	The following is just to give some vertical space above where the =
anchor lands,=20
	//	in case you think it stops too close to the top of the window.  Set =
to 0 if unnecessary.
	heightCorrection =3D 30;
=09
	// set scroll target
	if (typeof (window.pageYOffset) =3D=3D 'number') {
		// Non-IE modern browsers
		ccbnScrSt =3D window.pageYOffset;
		ccbnScrDist =3D elePosY - heightCorrection - ccbnScrSt;
		ccbnScrDur =3D 500;
	} else if (document.documentElement) {
		// IE in Standards Compliance mode
		ccbnScrSt =3D document.documentElement.scrollTop;
		ccbnScrDist =3D elePosY - ccbnScrSt;
		if (window.XMLHttpRequest) {
			// IE7
			ccbnScrDur =3D 500;
		} else {
			// IE6
			ccbnScrDur =3D 1500;
		}
	} else if (document.body && (document.body.scrollLeft || =
document.body.scrollTop) ) {
		// DOM compliant method, IE Quirks Mode
		ccbnScrSt =3D document.body.scrollTop;
		ccbnScrDist =3D elePosY - ccbnScrSt;
		ccbnScrDur =3D 500;
	}

	ccbnScrTime =3D 0;
	ccbnScrInt =3D 10;
=09
	// set interval
	clearInterval(ccbnScrollInterval);
	ccbnScrollInterval =3D setInterval( ccbnScrollPage, ccbnScrInt );
}

/*
EASING FUNCTIONS
*/

function ccbnEaseInOut(t,b,c,d)
{
	return c/2 * (1 - Math.cos(Math.PI*t/d)) + b;
}

/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Author: JDelia
Use: Scroll divs within a container
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/
var IdNo=3D0;
function =
ccbnScroller(scrollContainer,scrollWidth,scrollHeight,scrollPause,scrollS=
peed,scrollTime,scrollDirection){
/* ||||||||||||||||||||||||||||||||||||||||||||||||||||
	ccbnScroller - This is an object that will scroll
	all div's that are contained within the scrollContainer
	arguments
	scrollContainer - an object that contains the divs to be scrolled
	scrollHeight - this is an integer representing the height, in pixels, =
of the container
	scrollPause - this is an integer representing the amount of time to =
wait once a div has completed its scroll, before triggering the next div =
to begin its scroll; the time is in milliseconds
	scrollSpeed - this is an integer representing the number of pixels to =
move the div each time the move is triggered
	scrollTime - this is an integer representing the amount of time to wait =
before triggering the movement; the time is in milliseconds (1000 =3D 1 =
second)
					Example
					scrollPause =3D 5000
					scrollSpeed =3D 1
					scrollTime =3D 10
					The div will move by 1 pixel every 10 milliseconds.  Once it has =
finished scrolling, the current div will remain on the page for 5000 =
milliseconds before the next div will begin to scroll
   |||||||||||||||||||||||||||||||||||||||||||||||||||| */
  =20
	//Save a reference to myself
	this.id =3D "myObject" + IdNo++;
	window[this.id] =3D this;
=09
	this.container=3DscrollContainer;
	this.layers=3Dthis.container.getElementsByTagName("div");
	this.layerCount=3Dthis.layers.length;
	this.currentLayer=3D1;
	this.scrollTime=3DscrollTime;
	this.scrollSpeed=3DscrollSpeed;
	this.scrollPause=3DscrollPause;
	this.scrollWidth=3DscrollWidth;
	this.scrollHeight=3DscrollHeight;
	/* =20
		scrollDirection:
		0 =3D scrolls from below
		1 =3D scrolls from above
		2 =3D scrolls from right to left
		3 =3D scrolls from left to right
	*/=09
	this.scrollDirection=3DscrollDirection;
	this.currentLayerY;
	this.currentLayerX;=09
	this.scrollLayerY=3D0;
	this.scrollLayerX=3D0;
	this.ccbn_px=3Dnavigator.appName=3D=3D"Netscape"?'px':'';
	this.runTimeout;
	this.scrollTimeout;
=09
	this.stopped;
=09
	this.scrollTop;
	this.scrollRight;
	this.scrollBottom;
	this.scrollLeft;
	this.previousLayer;
	this.scrollLayer;

	this.ccbnStartScroll=3DccbnStartScroll;
	this.ccbnStopScroll=3DccbnStopScroll;
	this.ccbnDoScroll=3DccbnDoScroll;=09
	this.ccbnRunScroll=3DccbnRunScroll;
	this.ccbnRestartScroll=3DccbnRestartScroll;
=09
	this.ccbnSetScrollLayerBoundaries=3DccbnSetScrollLayerBoundaries
=09
}

function ccbnStartScroll(){
	ccbnDoMove(this.layers[this.currentLayer].id, 0, (-this.scrollHeight), =
this.ccbn_px);
	ccbnDoMove(this.layers[0].id, -1000, -1000, this.ccbn_px);  //move the =
loading... div=09
	this.currentLayerY=3D-this.scrollHeight;
	this.currentLayerX=3D0;
	=
this.runTimeout=3DsetTimeout("window."+this.id+".ccbnRunScroll()",this.sc=
rollPause);
}

function ccbnStopScroll(){
	this.stopped=3Dtrue;
	clearTimeout(this.runTimeout);
}

function ccbnRestartScroll(){
	this.stopped=3Dfalse;
	=
this.runTimeout=3DsetTimeout("window."+this.id+".ccbnRunScroll()",this.sc=
rollPause);
}

function ccbnRunScroll(){
	//if the user has hovered over the div, the scroller is stopped
	if(this.stopped) return;
=09
	//move the layer that is now hidden to its original position and zindex
	if(this.previousLayer) =
ccbnSetZIndex(this.layers[this.previousLayer].id,-1);
=09
	//set the index of the currently shown layer
	ccbnSetZIndex(this.layers[this.currentLayer].id,0);
=09
	//set the scrollLayer by incremening the currentLayer or, if we have =
reached the count, setting it back to 1
	=
this.scrollLayer=3D(this.currentLayer=3D=3D(this.layerCount-1))?1:this.cu=
rrentLayer+1;

	this.ccbnSetScrollLayerBoundaries();

	//set the zIndex for the scrollLayer
	ccbnSetZIndex(this.layers[this.scrollLayer].id,1);	=09
=09
	//move the scroll layer into position which is directly under the =
clipped area
	ccbnDoMove(this.layers[this.scrollLayer].id, (this.scrollLayerX), =
(this.scrollLayerY), this.ccbn_px);
=09
	//begin the scroll process
	this.scrollTimeout=3Dthis.ccbnDoScroll();
	=09
}

function ccbnSetScrollLayerBoundaries(){
	switch(this.scrollDirection){
		case 0:=09
				//set the scrollTop for the current layer
				this.scrollTop=3Dthis.scrollHeight*-this.scrollLayer;

				//set the scrollScrollLayerY to zero it out
				this.scrollLayerY=3Dthis.scrollTop+this.scrollHeight;
			=09
				break;
	=09
		case 1:
				//set the scrollTop for the current layer
				this.scrollTop=3Dthis.scrollHeight*-this.scrollLayer;
					=09
				//set the scrollScrollLayerY to zero it out
				this.scrollLayerY=3Dthis.scrollTop;
					=09
				//set the scrollTop for the current layer
				this.scrollLeft=3D0;
				this.scrollLayerX=3Dthis.scrollWidth;
			=09
				break;
	}
}

function ccbnDoScroll(){
	switch(this.scrollDirection){
		case 0:
=09
			if(this.scrollLayerY!=3Dthis.scrollTop){
				var =
ccbn_y=3D((this.scrollLayerY-this.scrollSpeed)<this.scrollTop)?this.scrol=
lTop:(this.scrollLayerY-this.scrollSpeed);
				ccbnDoMove(this.layers[this.scrollLayer].id, 0, ccbn_y, =
this.ccbn_px);
				this.scrollLayerY=3Dccbn_y;
				var ccbn_yCur=3Dthis.currentLayerY-this.scrollSpeed;
				ccbnDoMove(this.layers[this.currentLayer].id, 0, ccbn_yCur, =
this.ccbn_px);
				this.currentLayerY=3Dccbn_yCur;	=09
				=
this.scrollTimeout=3DsetTimeout("window."+this.id+".ccbnDoScroll()",this.=
scrollTime);
			}
			else{
				//scroll is complete, reset values
				this.previousLayer=3Dthis.currentLayer;
				this.currentLayer=3Dthis.scrollLayer;
				this.currentLayerY=3Dthis.scrollLayerY;
				clearTimeout(this.scrollTimeout);
				clearTimeout(this.runTimeout);
			=09
				//run the next scroll
				=
this.runTimeout=3DsetTimeout("window."+this.id+".ccbnRunScroll()",this.sc=
rollPause);=09
			}
		=09
			break;
	=09
		case 1:
	=09
			if(this.scrollLayerX!=3Dthis.scrollLeft){
				var =
ccbn_x=3D((this.scrollLayerX-this.scrollSpeed)<this.scrollLeft)?this.scro=
llLeft:(this.scrollLayerX-this.scrollSpeed);
				ccbnDoMove(this.layers[this.scrollLayer].id, ccbn_x, =
this.scrollLayerY, this.ccbn_px);
				this.scrollLayerX=3Dccbn_x;
				var ccbn_xCur=3Dthis.currentLayerX-this.scrollSpeed;
				var jdx =3D =
(this.scrollLayerY+(this.scrollHeight*(this.scrollLayer)))
				ccbnDoMove(this.layers[this.currentLayer].id, ccbn_xCur, jdx, =
this.ccbn_px);
				this.currentLayerX=3Dccbn_xCur;	=09
				=
this.scrollTimeout=3DsetTimeout("window."+this.id+".ccbnDoScroll()",this.=
scrollTime);
			}
			else{
				//scroll is complete, reset values
				this.previousLayer=3Dthis.currentLayer;
				this.currentLayer=3Dthis.scrollLayer;
				this.currentLayerX=3Dthis.scrollLayerX;
				clearTimeout(this.scrollTimeout);
				clearTimeout(this.runTimeout);
			=09
				//run the next scroll
				=
this.runTimeout=3DsetTimeout("window."+this.id+".ccbnRunScroll()",this.sc=
rollPause);=09
			}
		=09
			break;
=09
	}
}

function ccbnSetZIndex(objID,index){
    if (document.layers && document.layers[objID] !=3D null) {
        document.layers[objID].zIndex =3D index;
    }
    else if (document.all) {
        document.all[objID].style.zIndex =3D index;
    }
    else if (document.getElementById){
       document.getElementById(objID).style.zIndex =3D index;
    }
}

/*'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Author: JDelia
Use: Global Ajax functions
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''*/

function ccbnAjax(moduleName, CMID, queryString, moduleContainer, =
refreshRate, objectArrayID){
	var theURL;

	//properties
	this.moduleName=3DmoduleName;
	this.CMID =3D CMID;
	this.queryString=3DqueryString;
	this.container=3DmoduleContainer;
	this.refreshRate=3DrefreshRate;
	this.objectArrayID=3DobjectArrayID;
=09
	//methods
	//initialize the ajax object
	this.init=3Dfunction(){
		//set the container and make sure it is an Object
		=
this.container=3D(typeof(this.container)!=3D'object')?ccbnGetObj(this.con=
tainer):this.container;			=09

		//set the URL we will hit to get the HTML
		this.setURL();
	=09
		//start running the ajax calls		=09
		if(this.refreshRate) =
setTimeout("ccbnAjaxObject["+this.objectArrayID+"].executeXMLReq("+this.o=
bjectArrayID+")",this.refreshRate);
	};
		=09
	//creates and sets the module URL
	this.setURL=3Dfunction(){	=09
		theURL =3D "phoenix.zhtml?c=3D" + this.CMID + "&m=3D" + =
this.moduleName + this.queryString;
		//add on any other parameters that exists other than p, m, c and ym
		var queryString =3D ccbnGetQS();
		for(var param in queryString){
			if(param!=3D"p" && param!=3D"m" && param!=3D"c" && param!=3D"ym") =
theURL+=3D"&" + param + "=3D" + queryString[param];
		}
	};
=09
	//code that is to be executed after the Request is complete		=09
	this.executeAfterReq=3Dfunction(x,m){
		=
ccbnSetInnerHtml(ccbnAjaxObject[x].xmlReq[m].responseText,ccbnAjaxObject[=
x].container);
		if(ccbnAjaxObject[x].refreshRate) =
setTimeout("ccbnAjaxObject["+x+"].executeXMLReq("+x+")",ccbnAjaxObject[x]=
.refreshRate);
	}
=09
	this.xmlReq =3D new Array();
	//executes the Request back to the server	=09
	this.executeXMLReq=3Dfunction(x,q,r){
		if(q){ this.queryString=3Dq; this.setURL(); }
		this.xmlReq[r] =3D new setXMLReq();
		if(this.xmlReq[r]){
			this.xmlReq[r].onreadystatechange=3Dfunction(){
				if(ccbnAjaxObject[x].xmlReq[r].readyState =3D=3D 4 && =
ccbnAjaxObject[x].xmlReq[r].status =3D=3D 200){
					ccbnAjaxObject[x].executeAfterReq(x,r);
				}
			};
		}
	=09
		//if either of this are null we can't create the URL so we bail out
		if(ccbnAjaxObject[x].CMID =3D=3D null || ccbnAjaxObject[x].moduleName =
=3D=3D null)
		    return;
	=09
		this.xmlReq[r].open("GET", theURL, true);
		this.xmlReq[r].send(null);
	};
=09
	//creates the XMLHttpRequest object
	function setXMLReq(){
						if (window.XMLHttpRequest){
							try{ xmlRequest =3D new XMLHttpRequest(); }
							catch (e){ xmlRequest =3D false; }
						}
						else if (window.ActiveXObject){
							try{ xmlRequest =3D new ActiveXObject("Msxml2.XMLHTTP"); }
							catch (e){
								try{ xmlRequest =3D new ActiveXObject("Microsoft.XMLHTTP"); }
								catch (e){ xmlRequest =3D false; }
							}
						}
						return xmlRequest
	}=09
}

/* IE6 doesn't recognize :hover on TDs or TRs - this is a work around */
var ccbnHiliteSuffix =3D 'ccbnIE6Over';
function ccbnAddClass(theObj, classToAdd){
	theObj.className =3D theObj.className + ' ' + classToAdd
}

function ccbnRemoveClass(theObj, classToRemove){
	var cls =3D theObj.className.split(" ");
	var ar =3D new Array();
	for (var ccbn_i =3D cls.length; ccbn_i > 0;) {
		if (cls[--ccbn_i] !=3D classToRemove) {
			ar[ar.length] =3D cls[ccbn_i];
		}
	}
=09
	theObj.className =3D ar.join(" ");
}

function ccbnIE6TurnHoversOn(){
	//               Only do this for IE6 or if browser is IE and there is =
no doctype
	if ((document.documentElement && !window.XMLHttpRequest)  ||  =
(document.all && ccbn_no_doctype)){
		var divs =3D document.getElementsByTagName('div');
		var tables =3D document.getElementsByTagName('table');
		//company calendar project
		//only enable IE6 hover for cells with ccbnCalButton or ccbnDay class =
name
		var hoverEnabled =3D new Array("ccbnCalButton", "ccbnDay");
		for(ccbn_i=3D0;ccbn_i < divs.length; ccbn_i++){
			if(divs[ccbn_i].id.indexOf("month") !=3D -1){
				var tds =3D divs[ccbn_i].getElementsByTagName('td');
				for(ccbn_j=3D0;ccbn_j < tds.length; ccbn_j++){
					for(ccbn_k=3D0; ccbn_k < hoverEnabled.length; ccbn_k++){
						if(tds[ccbn_j].className.indexOf(hoverEnabled[ccbn_k]) !=3D -1){
							tds[ccbn_j].onmouseover =3D function(){ =
ccbnAddClass(this,ccbnHiliteSuffix); };
							tds[ccbn_j].onmouseout =3D function(){ =
ccbnRemoveClass(this,ccbnHiliteSuffix); };
						}
					}
				}
			}
		}
		//row highlighting on tables
		for(ccbn_i=3D0;ccbn_i < tables.length; ccbn_i++){
			if(tables[ccbn_i].className.indexOf("ccbnRowHoverTbl") !=3D -1){
				var trs =3D tables[ccbn_i].getElementsByTagName('tr');
				for(ccbn_j=3D0;ccbn_j < trs.length; ccbn_j++){
					if(trs[ccbn_j].className.indexOf("ccbnBgTblTtl") =3D=3D -1){  //do =
not want to highlight the table titles
						trs[ccbn_j].onmouseover =3D function(){ =
ccbnAddClass(this,ccbnHiliteSuffix); };
						trs[ccbn_j].onmouseout =3D function(){ =
ccbnRemoveClass(this,ccbnHiliteSuffix); };
					}
				}
			}
		}
	}
}

//global ajax object
var ccbnAjaxObject =3D new Array();

//initialize any ajax objects onload
ccbnAddLoadEvent(ccbnSetupAjax);

------=_NextPart_000_0000_01CA5191.E1933830--
