Loading...
The URL can be used to link to this page
Your browser does not support the video tag.
Home
My WebLink
About
McDonald.mht
From: <Saved by Windows Internet Explorer 8> Subject: Account Date: Tue, 25 May 2010 14:43:29 -0600 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01CAFC18.A3C14F10" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/taxweb/account.jsp?accountNum=R290136 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML xml:lang=3D"en"=20 xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>Account</TITLE> <META content=3D"text/html; charset=3Diso-8859-1" = http-equiv=3DContent-Type><LINK=20 rel=3Dstylesheet type=3Dtext/css=20 href=3D"https://act.garfield-county.com/assessor/web/css/base.css"=20 media=3Dscreen></LINK><LINK rel=3Dstylesheet type=3Dtext/css=20 href=3D"https://act.garfield-county.com/assessor/web/css/print.css"=20 media=3Dprint></LINK><LINK rel=3Dstylesheet type=3Dtext/css=20 href=3D"https://act.garfield-county.com/assessor/web/custom/custom.css"=20 media=3Dscreen></LINK><LINK rel=3Dstylesheet type=3Dtext/css=20 href=3D"https://act.garfield-county.com/assessor/web/css/tooltip.css"=20 media=3Dscreen></LINK><LINK rel=3Dstylesheet type=3Dtext/css=20 href=3D"https://act.garfield-county.com/assessor/web/css/drop3.css"=20 media=3Dscreen></LINK><LINK rel=3Dstylesheet type=3Dtext/css=20 href=3D"https://act.garfield-county.com/assessor/web/includes/modalbox1.6= .0/modalbox.css"=20 media=3Dscreen></LINK> <SCRIPT type=3Dtext/javascript=20 src=3D"https://act.garfield-county.com/assessor/web/includes/prototype/pr= ototype.js"></SCRIPT> <SCRIPT type=3Dtext/javascript=20 src=3D"https://act.garfield-county.com/assessor/web/includes/script.aculo= .us/scriptaculous.js"></SCRIPT> <SCRIPT type=3Dtext/javascript=20 src=3D"https://act.garfield-county.com/assessor/web/includes/tooltip-v0.2= .js"></SCRIPT> <SCRIPT type=3Dtext/javascript=20 src=3D"https://act.garfield-county.com/assessor/web/includes/tabbedlayout= .js"></SCRIPT> <SCRIPT type=3Dtext/javascript=20 src=3D"https://act.garfield-county.com/assessor/web/includes/modalbox1.6.= 0/modalbox.js"></SCRIPT> <SCRIPT type=3Dtext/javascript=20 src=3D"https://act.garfield-county.com/assessor/web/includes/sessionTimeo= ut.jsp"></SCRIPT> <META name=3DGENERATOR content=3D"MSHTML 8.00.6001.18904"></HEAD> <BODY id=3DPAGE_ACCOUNT> <TABLE id=3Dcolumns> <TBODY> <TR> <TD id=3Dheader_cell colSpan=3D2> <DIV id=3Dheader> <H1></H1></DIV> <DIV id=3Dnav> <UL> <LI class=3Dfirst><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/search.jsp">Accou= nt=20 Search</A>=20 <LI><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/saleSearch.jsp">S= ale=20 Search</A>=20 <LI><A=20 = href=3D"https://act.garfield-county.com/assessor/web/help.jsp">Help?</A> = <LI><A=20 = href=3D"https://act.garfield-county.com/assessor/web/logout.jsp">Logout=20 Public</A>=20 <LI><A=20 = href=3D"https://act.garfield-county.com/recorder/web">RecorderWeb</A>=20 <LI><A=20 = href=3D"https://act.garfield-county.com/treasurer/web/">TreasurerWeb</A> = </LI></UL></DIV></TD></TR> <TR> <TD id=3Dleft_column> <DIV id=3Dleft> <H1>Account Information</H1> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3D">Account=20 Summary</A><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DR290136.1273242016810">Remarks</A><BR> &nb= sp;<A=20 class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DOWN272S627.1273242013762">Owner=20 Information</A><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEHISTR290136">Sale=20 History</A><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DAccountValue">Assessment=20 History</A><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DTaxDocument">Tax=20 History</A><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3D&viewer=3Dtrue">Attachment(s)</A><BR><B>Acc= ount=20 Detail</B><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DModelC2796206.1155016800000">Land</A><BR> = <A=20 class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DModelC2796207.1155016800000">Land</A><BR> = <A=20 class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DModelC2796208.1155016800000">Land</A><BR> = <A=20 class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DModelC2796209.1155016800000">Land</A><BR> = <A=20 class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DModelC2796210.1155016800001">Residential</A><BR= > <A=20 class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DModelC2796211.1155016800002">XFOB</A><BR> = <A=20 class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DModelC2796212.1155016800002">XFOB</A><BR> = <A=20 class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DModelC2796213.1155016800002">XFOB</A><BR><B>Tra= nsfers</B><BR> <A=20 class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368922">B:=20 1070 P: 0289</A><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368923">B:=20 1004 P: 0404</A><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368921">B:=20 0569 P: 0510</A><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368920">B:=20 0550 P: 0940</A><BR> <A class=3Dnull=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368919">B:=20 0542 P: 0446</A><BR></DIV></TD> <TD id=3Dright_column> <DIV id=3Dmiddle> <H1>Account: R290136</H1> <H1></H1><!--Start TableHtmlLayout--> <TABLE class=3DaccountSummary> <TBODY> <TR vAlign=3Dtop> <TH><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DR290136.1273242016810">Location</A></TH> <TH><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DOWN272S627.1273242013762">Owner=20 Information</A></TH> <TH><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DAccountValue">Assessment=20 History</A></TH></TR> <TR vAlign=3Dtop> <TD vAlign=3Dtop width=3D"40%"><!-- BEGIN What happens in the = location text stays in the location text --> <TABLE width=3D"100%"> <TBODY> <TR> <TD><B>Parcel Number</B> 2165-173-00-004</TD></TR> <TR> <TD><B>Units1</B> </TD></TR> <TR> <TD><B>Situs Address</B> </TD></TR> <TR> <TD><B>City</B> Debeque</TD></TR> <TR> <TD><B>ZipCode</B> 81630</TD></TR> <TR> <TD><B>Tax Area</B> 029 - J-49HBDF - 029</TD></TR> <TR> <TD><B>Legal Summary</B> Section: 17 Township: 6 Range: = 99=20 SEC. 17&18 TR = 48,49,51</TD></TR></TBODY></TABLE><!-- BEGIN What happens in the = location text stays in the location text --></TD> <TD vAlign=3Dtop width=3D"40%"> <TABLE> <TBODY> <TR> <TD><B>Owner Name</B> MCDONALD, DAVID S</TD></TR> <TR> <TD><B>Owner Address</B> PO BOX 2991 <BR>GRAND JUNCTION, = CO=20 81502</TD></TR></TBODY></TABLE></TD> <TD vAlign=3Dtop width=3D"40%"> <TABLE width=3D"100%"> <TBODY> <TR> <TD align=3Dleft><B>Actual</B> (2010)</TD> <TD align=3Dright>$69,260</TD></TR> <TR> <TD align=3Dleft><B>Primary Taxable</B></TD> <TD align=3Dright>$8,540</TD></TR></TBODY></TABLE> <TABLE width=3D"100%"> <CAPTION><B>Tax Area:</B> 029 <B>Mill = Levy</B>:=20 28.6170</CAPTION> <TBODY> <TR> <TH align=3Dleft>Type</TH> <TH align=3Dleft>Actual</TH> <TH align=3Dleft>Assessed</TH> <TH align=3Dleft>Acres</TH> <TH align=3Dleft>Units</TH></TR> <TR> <TD>Improvement</TD> <TD>$55,840</TD> <TD>$4,650</TD> <TD></TD> <TD>1.000</TD></TR> <TR> <TD>Land</TD> <TD>$13,420</TD> <TD>$3,890</TD> <TD>360.000</TD> <TD></TD></TR></TBODY></TABLE><BR></TD></TR> <TR vAlign=3Dtop> <TH colSpan=3D3><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368922">Transfers</A></TH></TR> <TR vAlign=3Dtop> <TD vAlign=3Dtop colSpan=3D3> <TABLE width=3D"100%"> <TBODY> <TR> <TD align=3Dmiddle><B>Sale Price</B></TD> <TD align=3Dmiddle><B>Sale Date</B></TD> <TD align=3Dmiddle><B>Doc Type</B></TD> <TD align=3Dmiddle><B>Book Page</B></TD></TR> <TR> <TD></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368922">06/01/1998</A></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368922">Deeds</A></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368922">B:=20 1070 P: 0289</A></TD></TR> <TR> <TD></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368923">12/18/1996</A></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368923">Deeds</A></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368923">B:=20 1004 P: 0404</A></TD></TR> <TR> <TD></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368921">01/01/1900</A></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368921">Deeds</A></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368921">B:=20 0569 P: 0510</A></TD></TR> <TR> <TD></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368920">01/01/1900</A></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368920">Deeds</A></TD> <TD align=3Dmiddle><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSALEC5368920">B:=20 0550 P: 0940</A></TD></TR></TBODY></TABLE></TD></TR> <TR vAlign=3Dtop> <TH><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DTaxDocument">Tax=20 History</A></TH> <TH colSpan=3D2>Images</TH></TR> <TR vAlign=3Dtop> <TD vAlign=3Dtop> <TABLE width=3D"100%"> <TBODY> <TR> <TH align=3Dright>Tax Year</TH> <TH align=3Dright>Taxes</TH></TR> <TR> <TD align=3Dright><B>*</B>2010</TD> <TD align=3Dright>$244.40</TD></TR> <TR> <TD align=3Dright>2009</TD> <TD = align=3Dright>$244.40</TD></TR></TBODY></TABLE><B>*</B>=20 Estimated</TD> <TD vAlign=3Dtop colSpan=3D2> <DIV id=3Dtab_control_4446> <UL id=3Dtabs class=3Dtabs> <LI><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136#tab_4446_0">Sketch</A>=20 </LI> <LI><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136#tab_4446_1">GIS</A>=20 </LI></UL> <DIV id=3Dtabcontentcontainer> <DIV id=3Dtab_4446_0 class=3Dtab_page> <DIV class=3Dthumb><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DSKETCH&sketchNum=3D1&page=3D1"><IMG=20 = src=3D"https://act.garfield-county.com/assessor/taxweb/sketchPicture.jsp?= accountId=3DR290136.1273242016810&sketchNum=3D1&page=3D1&widt= h=3D320&height=3D320">=20 </A></DIV></DIV> <DIV id=3Dtab_4446_1 class=3Dtab_page> <DIV class=3Dthumb><A=20 = href=3D"https://act.garfield-county.com/assessor/taxweb/account.jsp?accou= ntNum=3DR290136&doc=3DGIS&page=3D1&viewer=3Dtrue"><IMG=20 = src=3D"https://act.garfield-county.com/assessor/taxweb/gisPicture.jsp?acc= ountNum=3DR290136.1273242016810&width=3D320&height=3D320"></A></D= IV></DIV></DIV></DIV> <SCRIPT = type=3Dtext/javascript>TabControl('tab_control_4446', { current: = 'tab_4446_0' });</SCRIPT> </TD></TR></TBODY></TABLE><!--END = TableHtmlLayout--></DIV></TD></TR> <TR> <TD id=3Dfooter_cell colSpan=3D2> <TABLE id=3Dfooter> <TBODY> <TR> <TD></TD> <TD class=3Dcenter>Copyright (c) 2010, Tyler Technologies, = Inc. All=20 Rights Reserved </TD> <TD class=3Dright><IMG alt=3D""=20 = src=3D"https://act.garfield-county.com/assessor/web/images/tylerlogo-mini= .jpg">=20 = </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></BODY></HTML> ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: https://act.garfield-county.com/assessor/taxweb/sketchPicture.jsp?accountId=R290136.1273242016810&sketchNum=1&page=1&width=320&height=320 /9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAFAAUADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiivwh/4LPft2fGX9h7wXqXxD/Z7+N/ h+6/aR0bw/8ABjT/ANmD9gXxN8IINW079t/4hfGn4+2HwU8caVbazdxQfFb9orxB8MPC2v6F4t8J /BT9i3xx8KfiZ8FfFSaN4z/aYuvip8Lvjt8JfBWmAH7vUV+QP/BJT9oj4i/tRaP+0b8QNb/at/4a R+GXw++IHgr4F+BNPnsP2WPGGseGPEeneBLL9obxR4p8XftKfseXGl/AX46/EDxH4F/aY+D3ww+I uifCf4b/AA9+FnwE8d/AjxF8IfBur/tDXuieJ/2tvj/+v1ABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB+QP7Uf/AAXq/wCCT37F3x28c/s0ftL/ALVn /Ctfjb8Nf+EZ/wCE18Ff8KM/aS8Y/wBi/wDCY+DvD3j/AMOf8VH4A+DvirwlqP8AaPhLxVoOrf8A Ep16/wDsf2/7Bf8A2XU7W9srf5//AOIo7/ghR/0fN/5rN+2H/wDQ+0f8E8P+U6//AAcVf94jf/WP PG1fv9QB+AP/ABFHf8EKP+j5v/NZv2w//ofaP+Io7/ghR/0fN/5rN+2H/wDQ+1+/1FAH4A/8RR3/ AAQo/wCj5v8AzWb9sP8A+h9o/wCIo7/ghR/0fN/5rN+2H/8AQ+1+/wBRQB+AP/EUd/wQo/6Pm/8A NZv2w/8A6H2j/iKO/wCCFH/R83/ms37Yf/0Ptfv9RQB+AP8AxFHf8EKP+j5v/NZv2w//AKH2j/iK O/4IUf8AR83/AJrN+2H/APQ+1+/1FAH4A/8AEUd/wQo/6Pm/81m/bD/+h9o/4ijv+CFH/R83/ms3 7Yf/AND7X7/UUAfgD/xFHf8ABCj/AKPm/wDNZv2w/wD6H2j/AIijv+CFH/R83/ms37Yf/wBD7X7/ AFFAH4A/8RR3/BCj/o+b/wA1m/bD/wDofaP+Io7/AIIUf9Hzf+azfth//Q+1+/1FAH4A/wDEUd/w Qo/6Pm/81m/bD/8AofaP+Io7/ghR/wBHzf8Ams37Yf8A9D7X7/UUAfgD/wARR3/BCj/o+b/zWb9s P/6H2j/iKO/4IUf9Hzf+azfth/8A0Ptfv9RQB+AP/EUd/wAEKP8Ao+b/AM1m/bD/APofaP8AiKO/ 4IUf9Hzf+azfth//AEPtfv8AUUAfgD/xFHf8EKP+j5v/ADWb9sP/AOh9r6//AGKf+CzP/BNj/gol 8U9f+Cn7HX7SH/C4Pib4X+H+q/FLXfDP/Cn/AI9fD/7D4E0TxH4V8J6nrv8AbPxS+F3gnw/c/ZvE Hjbwxp/9mWeq3GsTf2n9qt9PlsrLULm0/T+vwB/52mv+8AP/AMEUoA/f6iiigAooooAKKKKACiii gAooooAKKKKACiiigAooooA/AH/gnh/ynX/4OKv+8Rv/AKx542r9/q/AH/gnh/ynX/4OKv8AvEb/ AOseeNq/f6gAooooAKKKKACiiigAooooAKKK/EH44ftw/tf+ENU/4LC+PfAHiP8AZ/svhl/wTE+H /jXXfDnww8a/snftAax4j+KOsW//AATj8A/tX+CtQvf2qLL9pbwT8H7n7N8YPG17pvj/AOFvgr4S a3478N/CzQPDkfiPU/BV78YPAHj9gD9vqK/AH4i/t7/t4fD3WP2VvDPhGX4f/tBeLf2gvh/+2J8X PD/gnT/+CW/7e37Ofjv4mXX7Ofjv9kf4bfDj9nHU/A3xO/aH8ZeLf2I/+FseLfjP8RbbXf27f2qd GvP2cfhno958LfFniL4dt4SZdc+IX7/UAFFFFABRRRQAUUUUAFFFFABX4A/87TX/AHgB/wDgilfv 9X4A/wDO01/3gB/+CKUAfv8AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfgD8B/2GvjtZ/8A BXDVf2hfi/8ABb7B8LfB3/DY/wAYtG+M+g674OtfDnj347fErxv4M+F/7KF1f+KNN/aD1f8AaS+P 3/Co/wBhPx58ffhvpPg/9rP4E2vg79kL4p/Er9pfwH+yV8Qr/wDZS8Y/swfDP4F/v9RRQB+AP/BP D/lOv/wcVf8AeI3/ANY88bV+/wBX4A/8E8P+U6//AAcVf94jf/WPPG1fv9QAUUUUAFFFFABRRRQA UUUUAeP/AB+8WeKvAfwa+IXjPwd4m+D/AIG1fwx4fm1u8+Inx+1nUdE+DXwv8K6fPb3Hjr4sfEKT S7nSbnWfD/wr8Ep4h+Ic3g2Xxb8NNO8fT+GrfwPrHxh+DGkeIb74r+Dv5wvjX/wV4/aVtINP+DPx f/Zt+D/ijSPj/wDGC1/4Jxaf8PvHP7O/xvbwr8SPjL8Zvg1qvxT+H/jv4k6T8SPFWj+G/hz4g/aB +DfjD4A6jof/AASb/aQT4aQDTv2s/BPhj4qf8FWPBOr/AAN/b00X9kP+l34pfCf4WfHHwJrvwt+N fw0+H/xg+GXij+zP+Em+HXxS8G+HPiB4E8Rf2JrGn+ItG/t3wj4s03V/D+r/ANkeINI0rXdM/tDT 7j7BrGmafqdr5V7ZW08XgFn/AME9v2BdO/4Rz+z/ANh79kCw/wCEO+H/AI1+E/hH7H+zT8F7X/hF fhZ8Sv8AhP8A/hYvw08OeR4KT+w/h/4+/wCFr/FL/hNfBumfZfDnir/hZXj/APt3Tb//AITHxF/a IB+cH7LH7av7NX7Kn7HvwJ+I+j/saeH/ANnL4HfGH9p/9oH4LfGn4pfAb4O/BD9ij9l/4K/EL4Jf HPxn+zDd/tJ/tT/D39oH4l/Arxv+zL4f+Ntt8EotZ0vwf4x034pfEz4eeIE8KfsoeIfE/jz443vw g0f4s/p/+xT8a/FX7S37I/7OX7SXjHT/AA/omr/tFfB/wP8AHyz8L+GbXUYNO8EeFfjPolr8SvAv w9ub/VNV1S58VeIPh54J8T+HvBHiz4gxQ+GNO+JPirQNZ+IGj/Dz4YaR4lsfhz4W6DTP2Tv2WNE8 CfC34W6N+zT+z/pHwy+B3xA0/wCLHwU+HWmfBv4dWHgT4P8AxT0jWNd8RaV8S/hb4RtfDkXh/wCH /wAQNM8QeKPE2u6f4y8J6fpHiOy1jxFrup22pRXur6hPce/0AFFFFABRRRQAUUUUAFFFFABX4A/8 7TX/AHgB/wDgilfv9X4A/wDO01/3gB/+CKUAfv8AV+APwH/Ya+O1n/wVw1X9oX4v/Bb7B8LfB3/D Y/xi0b4z6Drvg618OePfjt8SvG/gz4X/ALKF1f8AijTf2g9X/aS+P3/Co/2E/Hnx9+G+k+D/ANrP 4E2vg79kL4p/Er9pfwH+yV8Qr/8AZS8Y/swfDP4F/v8AUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFc/4stvFV54V8TWfgXWfD/hzxtdeH9ZtvB3iHxZ4Z1Hxp4V0LxVPp1zF4e1nxN4O0fxZ4C1fx Z4f0vV2s77WfDOl+OvBeo67p0Fzpdj4s8OXN1FrFn0FfIH7a37ev7J3/AATt+FmgfGv9sX4rf8Kf +GXij4gaV8LdC8Tf8IL8SfiB9u8d634c8V+LNM0L+xvhb4O8beILb7T4f8E+J9Q/tO80q30eH+zP stxqEV7e6fbXYB+AP/BvP8UvHfxx/bd/4Kk/Gv4pa7/wlHxN+MH7IH/Bvv8AFL4i+Jv7M0fRP+Ei 8d/ED/gmofFni7Xf7G8O6fpHh/SP7X8QavqGof2ZoWlaZo9h9o+y6Zp9lZRQW0X9XtfxB/saf8F6 v+CT3wo/4Kxf8FoP2l/H/wC1Z/YHwS/ay/4d0/8ADP8A41/4UZ+0lqn/AAn3/CiP2bfFHgD4rf8A FOaL8HdR8W+Ff+EV8W6jZ6T/AMVroPhz+3PO+3+HP7Y0yOW9T9fv+Io7/ghR/wBHzf8Ams37Yf8A 9D7QB+/1FfgD/wARR3/BCj/o+b/zWb9sP/6H2j/iKO/4IUf9Hzf+azfth/8A0PtAH7/UV+AP/EUd /wAEKP8Ao+b/AM1m/bD/APofaP8AiKO/4IUf9Hzf+azfth//AEPtAH7/AFFfgD/xFHf8EKP+j5v/ ADWb9sP/AOh9o/4ijv8AghR/0fN/5rN+2H/9D7QB+/1FfgD/AMRR3/BCj/o+b/zWb9sP/wCh9o/4 ijv+CFH/AEfN/wCazfth/wD0PtAH7/V4B+1H4w/4QP4E+OfFMvxi/wCGe9MsP+EZtfEfx0/4V7/w sr/hUfg7WfGPh7RPGvxC/si9tdR8JeFf+EV8JajrWr/8Li+K2ieJ/gT8Afsv/C9P2gPB/jH4JfDr x/4W1f8AID/iKO/4IUf9Hzf+azfth/8A0PtH/EUd/wAEKP8Ao+b/AM1m/bD/APofaAPP/wBk/wCM f7Xf7anxi+EV38CP+ClPxA1X4f8Aw9+IHxb+I/x+vLL4U/sUfEz4E/E39lj4Dft2fF/9jr9m7wz4 cuPD37P3gP4gXPxA/wCCkXw//Ze+PPxg8a/tFfCD49a/8Ovgv4x+Gfj+bwZ8A/h78P8A43/s7eGP Av8AR9X4A/8AEUd/wQo/6Pm/81m/bD/+h9o/4ijv+CFH/R83/ms37Yf/AND7QB+/1FfgD/xFHf8A BCj/AKPm/wDNZv2w/wD6H2j/AIijv+CFH/R83/ms37Yf/wBD7QB+/wBRX4A/8RR3/BCj/o+b/wA1 m/bD/wDofaP+Io7/AIIUf9Hzf+azfth//Q+0Afv9RX4A/wDEUd/wQo/6Pm/81m/bD/8AofaP+Io7 /ghR/wBHzf8Ams37Yf8A9D7QB+/1FfgD/wARR3/BCj/o+b/zWb9sP/6H2j/iKO/4IUf9Hzf+azft h/8A0PtAH7/V+AP/ADtNf94Af/gilH/EUd/wQo/6Pm/81m/bD/8Aofa/IH/h/V/wSe/4f6f8Nrf8 NWf8Yy/8OgP+GXP+Fl/8KM/aS/5Lt/w2f/wtj/hBv+EN/wCFO/8ACwP+Sf8A/E//AOEm/wCEU/4Q 7/mFf8JD/bX/ABLaAP7fKK8A/Zc/aj+BP7aPwJ8DftL/ALNHjn/hZXwS+JX/AAk3/CFeNf8AhGfG Pg7+2v8AhDvGPiHwB4j/AOKc8f8Ah7wr4t07+zvFvhXXtJ/4m2g2H2z7B9vsPtWmXVle3Hv9ABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABX4A/8ABfT/AJwr/wDaf7/gnJ/72Sv3+r8Af+C+n/OFf/tP 9/wTk/8AeyUAfv8AUUUUAFFFFABRRRQAUUUUAFFFFABXn/iL4sfCzwh47+HXwt8WfEv4f+F/ib8Y P+Eu/wCFSfDrxF4y8OaJ47+KP/Cv9Hg8RePf+FdeEdS1K28QeNv+EJ8P3Ntrvi7/AIRnT9T/AOEb 0e4g1PWfsVlLHO3oFfjD/wAFff8Agn78ff8AgoN8EPiv+zH8IoP2YPBngn9qfw/+zT4B+M3x88bR +NPD/wAffhP4V/Z7/aVt/jgl7oeneGPBnjLSP2pfD93pGr+KrT4bfBvxV42/Zi074R+NL3xz4iHx Q8dW3xu1Gy+FoB+n3wk/aF+AXx+06PWPgT8cfg/8atIl8P6b4si1T4SfEvwX8R9Ok8K6z4q8e+Bd H8TR33g7WtZtn8P6t42+FfxP8HabrKynTr7xV8OPHvh61uZdX8H+IbPTvYK/OD/gnf8Asw/GX4CQ ftI+O/2kdD+D7fHH48fGDw74mvvH3gTxpB8ZviZ4v+HvhP4NfDbwzpdt8cv2hbz9mP8AZQ8SfE7x BF8ZF+Pnj3wR4Tf4XaX8M/2ffh78TtA+Av7P+jeAvgd4C8C/DTwb+j9ABRRRQAUUUUAFFFFABRRR QAUUUUAfgD/wa4/8oKP2Gf8Au5n/ANbD/aCr9/q/AH/g1x/5QUfsM/8AdzP/AK2H+0FX7/UAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFfgD/wAF9P8AnCv/ANp/v+Ccn/vZK/f6vwB/4L6f84V/+0/3 /BOT/wB7JQB+/wBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FAH4A/8ABrj/AMoKP2Gf+7mf/Ww/2gq/f6vwB/4Ncf8AlBR+wz/3cz/62H+0FX7/AFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABX4A/8F9P+cK//af7/gnJ/wC9kr9/q/AH/gvp/wA4V/8AtP8Af8E5 P/eyUAfv9RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH4A/ 8GuP/KCj9hn/ALuZ/wDWw/2gq/f6vwB/4Ncf+UFH7DP/AHcz/wCth/tBV+/1ABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABX4A/8ABfT/AJwr/wDaf7/gnJ/72Sv3+r8Af+C+n/OFf/tP9/wTk/8AeyUA fv8AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB+AP/AAa4 /wDKCj9hn/u5n/1sP9oKv3+r8Af+DXH/AJQUfsM/93M/+th/tBV+/wBQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAV+AP/BfT/nCv/2n+/4Jyf8AvZK/f6vwB/4L6f8AOFf/ALT/AH/BOT/3slAH7/UU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB+AP/Brj/ygo/YZ /wC7mf8A1sP9oKv3+r8Af+DXH/lBR+wz/wB3M/8ArYf7QVfv9QAUUUUAFFFFABRRRQAUUUUAFFFF ABRRX5gftL/tC/tT+Bvjtq3w++HXxI/ZA+HXw/sPh/f/ABC8b+K/in4D+IvxK/4Zb+BPhjwdr3jT WP20/wBqHxTH8d/2bfh/4Z+H/jT4geB/F37LXwx/Zmg1vRvGPiX7L4s/bL8O/tCeMfh/+z3+0h+z x8OAD9P6/AH/AIL6f84V/wDtP9/wTk/97JX6P/8ABP3xt+2h8S/gFD8Rv23dD+D/AIY8beP/ABBH 42+Evhr4XfDb4rfBrxV4e+AXirwX4M13wHof7SHwg+Lnjn4n6v8ACn9p/SdXv/Flh8YPht4a+JXx D8F+BtRt9P8AC+jeOfFtzpepa/qH5wf8F9P+cK//AGn+/wCCcn/vZKAP3+ooooAKKKKACiiigAoo ooAKKKKACvkDWv29f2TvDv8Aw0BJrXxW+wWX7Mnw/wDit8UvitrMvgX4kt4cl8CfATzbb9oDXfhT 4mi8HSeH/wBoP/hnzxBHF4C/aA0z9n/UvidrHwO+Keo6L8JPitp/hH4m69ovhO/9A/aq/aQ8Cfsf /s4/Gj9qD4naP8QPEHw/+Bnw/wBf+IvizRvhb4I1j4heO9Q0fw/am5uYNC8M6NH/ALr6n4i8QX3h /wACeCtHTUPGnxH8XeDPh/4f8TeLNF/nB1zwTo/xJ8HeBf8AgnN4x1P9oD9oj9nL4FfD/wDap/Zv /YV8Gfsv/ss+BPhl+0J8dtH/AGfvgT8Wv+CUf7TmseLP2nvjH+2d40+Aulf8Me+Bf2h/G/gj4p+N /wBpL9nn/gn14E+O37TE3wx8V/soyfFLwZqGl/Br4kgH7/fFL9u79mf4P3Wu6Z4s8UfEDV/EHh39 oDTP2XNQ8IfC34AftCfHHx3cfHbV/wBnHT/2ubXwNoXgL4KfCz4geM/FHlfs5anbfFLU/E3hnQtX 8HaJo8WoafrPiGw8QaRqukWX0/4T8Tad408K+GfGOj23iCz0jxZ4f0bxNpdn4s8J+KvAXiq107Xd OttUsbbxN4F8daN4c8beC/EEFtdRRaz4T8Y+HtC8VeHNRW50fxDo2l6vZ3ljB/JF8EvhJ+yd+1B8 NvivJ+xr+2R8QPhN+z/oH7X/AIq/4K7/AAi/aR+LfhL4k/D34J+D/wBnGw/ZO8c/8E7/ABd8FvDX iL9mr9sb9i79pr9ln9n/APZ01rwR8SfAXwK/4XVqX7Gtrqvwi+BniD4SfBLwb+0r+z/8AfjZ8SYf 6Pv2eP2uvhZ8ddY8LfDr4c/FX4f/ALS/iCw/Z/8ACnxi+I/x6/Z4bw5L+zjN/wAJD478afB/w/de Frtfin8Rb0/8LT+JvwX/AGioPCng/wAIeLvjN/wrK1+B3jTw78ZviF4d8Qah8MZvikAfX9FFFABR RRQAUUUUAFFFFABRRRQB+AP/AAa4/wDKCj9hn/u5n/1sP9oKv3+r8Af+DXH/AJQUfsM/93M/+th/ tBV+j/7b3xr+PvwQ8K+B9d+Aun/B/wAR+JNY8QajpOg/Czx3a+NNf+Jn7TPxMg05dW8BfspfA3Rf C+q+FNI+H3iD4s6Rp/j3xL43/ay8d6/40+Hv7IPw9+Gev/F/4o/AT4i/Bu1+JvxB+CgB9v0V+YH7 HvxQ/b6+JH7R3xx0r4t+PP2QPit+yL8IP+El+Dtt8UvhD8BPjR8A/iT4z/an8LXXw41PxZa/D/T/ ABN+01+1R8MvHv7P/wANLLxD48+C3xI8YR+OPC3xF8P/ALWPw0+J/wAHNS+HukQ/CnWdd8S/p/QA UUUUAFFFFABRRRQAUUUUAFfMHiz9iL9i/wAe/EzxN8avHX7In7MHjT4yeNPD+s+E/GPxa8WfAL4U +I/iZ4s8K+I/h7c/CPxD4Z8TePNY8J3ninXvD+u/Cm8vPhjrOjapqt1p2qfD26ufBd9bT+G55dNb 6fooAK/AH/gvp/zhX/7T/f8ABOT/AN7JX7/V+AP/AAX0/wCcK/8A2n+/4Jyf+9koA/f6iiigAooo oAKKKKACiiigAooooA8f/aF+CnhX9pT4BfHD9nPx1qHiDSfBPx++D/xL+CnjHVPCd1p1j4q03wr8 VPBeteBfEOoeGb7WNK17SLPxBZ6Rrt5caNdapoes6db6jHbTX2lajbJLZzfAHxh/4JG/CT4sz+Ml sf2h/wBp/wCFWh+KvEHxY1Kw8I/D2+/Z41Twr4U8K/tKfGXRP2j/ANr74SW+mfFz9nT4pyfEL4P/ ALYX7QfhPwV8T/j94C+OV18WdO1DTvDE3wJ+H0nw8/Zc8e/Fn4FfEH9X6KAPzg/Zn/4Jl/CT9lz4 +6n+0L4P+KXxg8U+JNZ8P/HmHWPC/izSf2eNJ8K658TP2q/GnwF+JX7T3x+8TX/wt+APw1+Ini74 wfG74ifs6+BPE2s3Hi3x9rnw9+H2nPc/DT4H/D34V/BvQPh78OfBHoH7GP7Anwa/Yh07xK/w/wDF Hxg+I/jbxp4f8JeDPFXxG+MnxBn8R6jJ8Pfhr4q+Knij4RfCvwD8NfCuneCP2fPgD8H/AINx/GPx v4Y+F/wh/Zt+DPwc+GfhbwrdWWnQ+FJ7mzF/J9v0UAFFFFABRRRQAUUUUAFFFFABRRRQB+AP/Brj /wAoKP2Gf+7mf/Ww/wBoKv1/+On7J37LH7UH/CLf8NL/ALNP7P8A+0R/wg/9t/8ACFf8L0+Dfw6+ Lf8Awh//AAk39kf8JJ/wi3/Cf+HPEH/CP/8ACQf8I/oP9t/2T9k/tX+xNI+3/aP7Ns/J/ID/AINc f+UFH7DP/dzP/rYf7QVfv9QBz/hnwn4V8F6dc6P4O8M+H/CekXniDxZ4svNL8M6Np2g6ddeKvHvi rWfHXjrxNc2Ol21rbT+IPGnjbxH4h8Y+LNZlibUfEfirXdZ8Q6xc3mr6pfXk/QUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAV+AP/BfT/nCv/2n+/4Jyf8AvZK/f6vwB/4L6f8AOFf/ALT/AH/BOT/3slAH 7/UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB+AP/Brj/yg o/YZ/wC7mf8A1sP9oKv3+r8Af+DXH/lBR+wz/wB3M/8ArYf7QVfv9QAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAV+AP/AAX0/wCcK/8A2n+/4Jyf+9kr9/q/AH/gvp/zhX/7T/f8E5P/AHslAH7/AFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfgD/wAGuP8Aygo/ YZ/7uZ/9bD/aCr9/q/AH/g1x/wCUFH7DP/dzP/rYf7QVfv8AUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFfgD/wX0/5wr/9p/v+Ccn/AL2Sv3+r8Af+C+n/ADhX/wC0/wB/wTk/97JQB+/1FFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfgD/wa4/8oKP2Gf8Au5n/ ANbD/aCr9/q/AH/g1x/5QUfsM/8AdzP/AK2H+0FX7/UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FfgD/wAF9P8AnCv/ANp/v+Ccn/vZK/f6vwB/4L6f84V/+0/3/BOT/wB7JQB+/wBRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH4A/8ABrj/AMoKP2Gf+7mf/Ww/ 2gq/f6vwB/4Ncf8AlBR+wz/3cz/62H+0FX7/AFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABX4A/ 8F9P+cK//af7/gnJ/wC9kr9/q/EH/guh+z7+1j8cfhZ+wZ4s/Y6+AH/DTHxN/ZP/AOCn/wCy7+2L rvwk/wCFq/Db4M/8JF4E+BXhz4ualqdn/wAJ78Uta0jw/pH9r+INX8MeGftFnbeI9YsP7e/tm38M avZaXqEcQB+31FfgD/w8P/4Lr/8ASur/AOdcv2PP/mJo/wCHh/8AwXX/AOldX/zrl+x5/wDMTQB+ /wBRX4A/8PD/APguv/0rq/8AnXL9jz/5iaP+Hh//AAXX/wCldX/zrl+x5/8AMTQB+/1FfgD/AMPD /wDguv8A9K6v/nXL9jz/AOYmj/h4f/wXX/6V1f8Azrl+x5/8xNAH7/UV+AP/AA8P/wCC6/8A0rq/ +dcv2PP/AJiaP+Hh/wDwXX/6V1f/ADrl+x5/8xNAH7/UV+AP/Dw//guv/wBK6v8A51y/Y8/+Ymj/ AIeH/wDBdf8A6V1f/OuX7Hn/AMxNAH7/AFFfgD/w8P8A+C6//Sur/wCdcv2PP/mJo/4eH/8ABdf/ AKV1f/OuX7Hn/wAxNAH7/UV+AP8Aw8P/AOC6/wD0rq/+dcv2PP8A5iaP+Hh//Bdf/pXV/wDOuX7H n/zE0Afv9RX4A/8ADw//AILr/wDSur/51y/Y8/8AmJo/4eH/APBdf/pXV/8AOuX7Hn/zE0Afv9RX 4A/8PD/+C6//AErq/wDnXL9jz/5iaP8Ah4f/AMF1/wDpXV/865fsef8AzE0Afv8AUV+AP/Dw/wD4 Lr/9K6v/AJ1y/Y8/+Ymj/h4f/wAF1/8ApXV/865fsef/ADE0Afv9RX4A/wDDw/8A4Lr/APSur/51 y/Y8/wDmJo/4eH/8F1/+ldX/AM65fsef/MTQB+/1FfgD/wAPD/8Aguv/ANK6v/nXL9jz/wCYmj/h 4f8A8F1/+ldX/wA65fsef/MTQAf8GuP/ACgo/YZ/7uZ/9bD/AGgq/f6vyB/4IK/sufHb9i7/AIJP fsp/s0ftL+Bv+Fa/G34a/wDC8/8AhNfBX/CTeDvGP9i/8Jj+0n8YvH/hz/io/AHiHxV4S1H+0fCX irQdW/4lOvX/ANj+3/YL/wCy6na3tlb/AK/UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFfAH7cX7bfiP9h/w5J8Y/FfwK/4Sr9mXwV/wrWz+L3xXl+Nfws+ G/iPT/Efxu+Kel/BL4YeHPhT4V+JGo+H/h/4g/4R/wCIHiDwtqv7QHjX9of40/so/Cz4VfCzxdov jjwX4/8AjLrWk/EDwN4G+/6+QP2kP2Cv2Tv2udY0fWf2hvhT/wALC/s7/hCINc8Pt46+JPhXwJ8V dH+GfjuP4nfDbwj+0J8OPBPjHw38P/2l/h/8PPiAdT8WeBPh1+0H4Z+JngTwhrHirx5c+HvDunf8 LC8cr4hAPH/+Cf8A+3h4q/bc1H4+2Wo/BXw/8P8ASP2ePEHgD4X+KPHvg34uaj8RfBfiH4++IPCt z8Tfib8G9E0Hx78JfgJ8dvCHiD9n34beMvgHp3xhsvjh8D/g/wCNPC3x98d/Fj4B3vgGDV/gBr3i jxX+j9eAfs9/sxfCL9l/R/HmjfCS0+IH/F0PiA3xS+IXiD4pfGz42ftAeO/GHjv/AIQTwJ8MYdd1 34j/AB++IXxN+IF79i+H/wAMvAfhPTNMk8Tf2PpWj+GdPttN0+0/0hpvf6ACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK/nh/4KH/ALR/ /BS74Z/tI/GPwv8As6eFv2n9Y8LL+zB+0fqPwJtfhD8ENJ8WfDO1+IXhn9hb47/E/wCGHxB8Ztdf sO/tM6H8U/EF3+1H4R0P4VeFPC9x+3h+yX8TNd+IWqfCvwVN+wJ49+FNi3x2/a56D4t/t3f8FcLP /hSHhH4K/sEf2x8Wvi/+z/8AtC+N/snjD4TeN2+BPhD9pjwJ/wALmm/4ZR+MXx6/4Xh4O/4UT/wo n/hDvhx4d+Hv7SWs/Drx3+z3/wAFY/GPjO1n+AXjH9ir4S6x/wALg8LAH7/UV/PD8QP2rv8Agrv4 48D+G7v9nXwd4fT47ab8YNVtrf4U+Of+Cd/7Tfww+GfjL4Z6N+xL+3X8Q/hnrPxJ+Knxv+NfhLwt ZeH/ANsz4rfCz9mHxZofhnwd8SfhX8Qv+CbPxC+MXgn9lT9sXxZ8W/iTpPi/w348+gP2u/2gf+Ck ngP9tDxZ8K/2SPCPh/x94b8Vfswfs9SfBPwP8Yf2XvjzqnwC1f4++Mfit+1f4U+Mfj3xl+3V8K59 M+Hf7Pvh/wDZ9+HemfBD42fFj4SfFaHx540/aD8F+GNE+Dn7Mmm/Dz4yfFCHxL4iAP2eor8gfGX7 YX7WP7S//BOP4T/HH9j/AOB3xA+D/wAev21f7Sb9nuTWfDXw2+PF98Gfgnrel/Ev4t+BP2hPiPpq /Efwb8GNB+IHxP8A2WPh3Za18FfAnxK+Jdv8IvD37ZPxq+AX7PXx48eWfgW98eePdP8Ah/8A4ey/ 8FJPFT/HPX/hZ+w34g8bav8ADjw/8DLjxR+ylo37M/x5l+Mv7M2ifFH9gz9lz9rD4m/FHxZ8f/Hv xH+EXwJ/a0+MHwG+JPx11r4QW3/BMP4faF+zd+1x8bIIvDPiXSfHHw40i117VXAP6XqK/MD9iP8A ar/a/wDjR47sPCX7Q/7Of/CvvCWv/s/+DvjBpHxMn+GP7QHwU1jSvHer6P8ADO81b4C+Lvhb8RPC fjvwlo/xA0fwl478L/F/4i3Y/aLfR/hz47+KHiL9ib4Rzftc+Lf2JP2sP2m7HwD9l34l/wDBT/Xf 2p/+Fa/GbTfiBL8EtY/a/wD25vjtp/xe8W/CfwB4E8HaX+xt8J/iL+1H+yb8Lf2HEt9C8G/8Jb/w sD/hLf8Ahi39uL4I/G7xbH4Yvv2k/gT47+Mul6P4+1jTPgJqdp8YgD9vqK/nh8TfGT/gtHp/7Y1t 8LtL8A+INc/Zu8P/ALT/AIT+DcvxR8M/C/4cwp45074vftyaN+2JrHj658ReMbLSLO0/Zg/Za/4I 6+Db79jvxZ8ULPw74O8VeIf28/ixrPwu8C3v7RnxR03w98Uvhofs5/tZ/wDBZm8+EqeMvit+zz4f 1jw34W/Zg+Adj4l1rxZ+zf8AEjwp8fdB+Puv/s8f8ExPiD8X/jf4m+FmhfFLwrq/7R3h/wAHav8A tLft7+JNZ/ZZ/Zo+AXwz8aa740/Yjuf2YPB/xG8PfGT4i6BpNmAf0PUV/OD8RP8Ago5/wWI8K/BP 4f8AxN8Bf8E5v+Fr/FqP9n/9mH4x/E39lyD4QfHLwDrGo+Etc+EXwr+MP7VnxU8I/H3xB4r1H4f+ FfiB4V+IGo/Fv9iv4df8E1dS8H+Pv24tO8d6H4d/a0ki+K/wljHwd8Vewfso/t4/8FJPiB+0P+y3 8Iv2p/2RPEHwY0j4u+H/AB5c/Eq58FfsmfHnxd4f+G/ir4SfCTUfBfxG0b4z/tEX/wAXrL9nb9nr w/4o/a2+EHxl8VfsneJvh94q/ba1H9pr9l/4j/AAeMPCf7M+r6x4X+KvxtAP3eor8wP+CT/7TX7X /wC1V+z34t8f/tpfCX/hT/xN0r4geENC0fw//wAMzftAfspefo+t/sz/ALPHxO8b6f8A8K4/aQ8W eMvHWvf8Kw+PXxE+M3wI/wCFpaPqlv4E+Jn/AAqX/hKfCWmWVleyK/6f0AFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/9k= ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: https://act.garfield-county.com/assessor/taxweb/gisPicture.jsp?accountNum=R290136.1273242016810&width=320&height=320 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 fvQspT4AHlf8/jG+0LEAAAAASUVORK5CYII= ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: https://act.garfield-county.com/assessor/web/images/tylerlogo-mini.jpg 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 m7Bew7sSQSSfUSxP5Pf1/9k= ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/taxweb/document.css .fieldLabel { PADDING-RIGHT: 0.5em; FONT-WEIGHT: 600 } .fieldGroup TD { PADDING-TOP: 30px } .iDoc { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 15px; MARGIN: 15px 0px; PADDING-LEFT: 15px; WIDTH: 95%; = PADDING-RIGHT: 15px; BACKGROUND: #eee; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 15px; -moz-border-radius: 7px } .iDoc TR.tableRow2 TD { BACKGROUND: #ffc } .iDoc .label { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } .tableHtmlLayout { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #thumb_set { MARGIN: 0px 15px 0px 0px; WIDTH: 112px; FLOAT: left } #thumb_set .thumb { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 5px; MARGIN: 0px 0px 5px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px = solid; PADDING-TOP: 5px } .thumb A IMG { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } #selected_photo { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = MARGIN-BOTTOM: 15px; FLOAT: left; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 5px } #related_documents { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; = PADDING-RIGHT: 0px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px = solid; PADDING-TOP: 0px } #related_documents #searchResultsTable TABLE { WIDTH: 100% } #related_documents #searchResultsTable TABLE A { DISPLAY: block } #related_documents .tooltip { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = BACKGROUND-COLOR: #ffc; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc = 1px solid; -moz-border-radius: 7px } #related_documents .tooltip TABLE { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } #related_documents .tooltip TABLE TD { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } .highlight { BACKGROUND-COLOR: #ffc } A.highlight { BACKGROUND-COLOR: #ffc; DISPLAY: block; TEXT-DECORATION: none = !important } .selectable:visited { DISPLAY: block; TEXT-DECORATION: none !important } .selectable:link { DISPLAY: block; TEXT-DECORATION: none !important } selectable:active { DISPLAY: block; TEXT-DECORATION: none !important } .summaryTable { OVERFLOW-X: visible; OVERFLOW-Y: scroll; HEIGHT: 150px } .viewAttachment A.iconic { BORDER-BOTTOM-STYLE: none; PADDING-BOTTOM: 5px; MARGIN: 2px -3px 0px = 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: = url(../images/header-gradient.png) #eee repeat-x; HEIGHT: auto; COLOR: = #333; PADDING-TOP: 5px; -moz-border-radius-topleft: 2px; = -moz-border-radius-topright: 2px } .viewAttachment A.iconic:hover { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BORDER-RIGHT-COLOR: = #fc3; BORDER-LEFT-COLOR: #fc3 } .viewAttachment A.selected.iconic:hover { BORDER-BOTTOM-COLOR: #fc3; BORDER-TOP-COLOR: #fc3; BORDER-RIGHT-COLOR: = #fc3; BORDER-LEFT-COLOR: #fc3 } .viewAttachment A.selected.iconic { BORDER-BOTTOM-COLOR: #888; PADDING-BOTTOM: 7px; MARGIN-TOP: 0px; = BORDER-TOP-COLOR: #888; BACKGROUND: white; COLOR: black; = BORDER-RIGHT-COLOR: #888; BORDER-LEFT-COLOR: #888; CURSOR: default } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/taxweb/search.css #pdfBuilder { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 7px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #recentSearhes UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 7px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; CLEAR: both; PADDING-TOP: 0px } #pdfBuilder LI.attachment { BORDER-BOTTOM: #ccc 1px solid } #pdfBuilder LI.attachment:hover { BACKGROUND: #ffc } #updateablePdfWidget SPAN.clearSpan { FLOAT: right } #updateablePdfWidget SPAN.removeSpan { FLOAT: right } #updateablePdfWidget H1 { FLOAT: left } .noWrap { DISPLAY: block; WHITE-SPACE: nowrap } .noWrap A { DISPLAY: block } .widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; = MARGIN-BOTTOM: 10px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 7px } .widget H1 { MARGIN: 0px 0px 7px; FONT-SIZE: 95% } .widget H2 { MARGIN: 0px 0px 7px; FONT-SIZE: 90% } .widget H3 { MARGIN: 0px 0px 7px; FONT-SIZE: 85% } .widget H4 { MARGIN: 0px 0px 7px; FONT-SIZE: 80% } .widget H5 { MARGIN: 0px 0px 7px; FONT-SIZE: 75% } .widget UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .widget LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } #searchControl H1 { MARGIN: 0px 0px 7px; FONT-SIZE: 95% } #searchControl SELECT { MARGIN-BOTTOM: 17px } #searchResultsTable { CLEAR: right } #searchResultsTable .tableHeaderAction { CURSOR: pointer } #searchResultsTable TD A { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none; TEXT-DECORATION: none !important } #searchResultsTable A IMG { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } DIV#searchResultsTable A { DISPLAY: inline } .widget#myCart .checkout { FLOAT: right } .lighter { COLOR: #777 } .purchaseLinks { TEXT-ALIGN: right; FLOAT: right } .purchaseLinks A { CURSOR: pointer } .clickable { CURSOR: pointer } .inlineRelatedDocs TR.tableRow1 A.trigger { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; = PADDING-TOP: 7px } .inlineRelatedDocs TR.tableRow2 A.trigger { PADDING-BOTTOM: 7px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; = PADDING-TOP: 7px } INPUT.multisuggest { WIDTH: 265px } DIV.multisuggestdropdown { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc = 1px solid; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: white; MARGIN: 0px; = PADDING-LEFT: 0px; WIDTH: 250px; PADDING-RIGHT: 0px; BORDER-TOP: #ccc = 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 0px } DIV.multisuggestdropdown UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } DIV.multisuggestdropdown UL LI.selected { BACKGROUND-COLOR: #ffb } DIV.multisuggestdropdown UL LI { PADDING-BOTTOM: 2px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 2px; PADDING-RIGHT: 2px; DISPLAY: block; FONT-SIZE: 90%; CURSOR: = pointer; PADDING-TOP: 2px } DIV.multisuggestoverlay { Z-INDEX: 99; POSITION: absolute; TEXT-ALIGN: center; FILTER: = alpha(opacity =3D 80); LINE-HEIGHT: 0; BACKGROUND-COLOR: #fff; WIDTH: = 100%; HEIGHT: 100%; TOP: 0px; LEFT: 0px; opacity: 0.8; -moz-opacity: 0.8 } DIV.multisuggestlightbox { Z-INDEX: 100; POSITION: absolute; TEXT-ALIGN: center; LINE-HEIGHT: 0; = WIDTH: 100%; DISPLAY: none } DIV.multisuggestdialog { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px = solid; PADDING-BOTTOM: 16px; BACKGROUND-COLOR: white; MARGIN: 0px auto; = PADDING-LEFT: 16px; WIDTH: 50%; PADDING-RIGHT: 16px; DISPLAY: none; = BORDER-TOP: #ccc 1px solid; TOP: 25%; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 16px; LEFT: 25% } DIV.multisuggestdialoglist { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 16px; BACKGROUND-COLOR: white; MARGIN: 0px; = PADDING-LEFT: 16px; WIDTH: auto; PADDING-RIGHT: 16px; HEIGHT: 250px; = FONT-SIZE: 90%; OVERFLOW: auto; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 16px } DIV#fraudAlertDisclaimer { HEIGHT: 250px; OVERFLOW: auto } TABLE#fraudAlertManageAlertListComponent { WIDTH: 100% } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/taxweb/report.css TABLE.reports TD { BORDER-BOTTOM: #ccc 1px dotted; PADDING-BOTTOM: 7px !important; = PADDING-LEFT: 17px !important; PADDING-RIGHT: 7px !important; = PADDING-TOP: 7px !important } TABLE.reports TR.even TD { BACKGROUND-COLOR: #eee !important } TABLE.reports { PADDING-BOTTOM: 10px; PADDING-LEFT: 10px; WIDTH: 100%; PADDING-RIGHT: = 10px; PADDING-TOP: 10px } TABLE.reports TD { TEXT-ALIGN: left; PADDING-BOTTOM: 2px; PADDING-LEFT: 17px; = PADDING-RIGHT: 17px; PADDING-TOP: 2px } TABLE.reports TH { TEXT-ALIGN: left; PADDING-BOTTOM: 2px; PADDING-LEFT: 17px; = PADDING-RIGHT: 17px; PADDING-TOP: 2px } P.createReport { BACKGROUND: url(../images/create-report.png) no-repeat; HEIGHT: 24px } P.createReport:hover { BACKGROUND-IMAGE: url(../images/create-report-hi.png) } P.createReport A { PADDING-LEFT: 30px; VERTICAL-ALIGN: middle; PADDING-TOP: 7px } #middle #reportMessages { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 7px; BACKGROUND-COLOR: #fff3d0; PADDING-LEFT: 7px; = PADDING-RIGHT: 7px; MARGIN-BOTTOM: 7px; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 7px; -moz-border-radius: 7px } #clearMessages { TEXT-ALIGN: right; DISPLAY: block; FLOAT: right } #middle > #loadingMessage { POSITION: fixed } #generatingMessage { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: center; BORDER-LEFT: #ccc = 1px solid; PADDING-BOTTOM: 50px; MARGIN: auto; PADDING-LEFT: 0px; WIDTH: = 100%; PADDING-RIGHT: 0px; BACKGROUND: url(../images/loading.gif) #eee = no-repeat 50% 85%; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px = solid; PADDING-TOP: 20px; -moz-border-radius: 7px } #loadingMessage { Z-INDEX: 1000; POSITION: absolute; TEXT-ALIGN: right; PADDING-BOTTOM: = 7px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BACKGROUND: #fe7 no-repeat; = TOP: 0px; RIGHT: 0px; PADDING-TOP: 3px } #loadingMessage IMG { PADDING-BOTTOM: 0px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; = PADDING-TOP: 5px } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/taxweb/calendar.css #calendarContainer { BACKGROUND: url(../images/cal_bg.gif) left bottom; BORDER-TOP: #ccc 1px = solid; BORDER-RIGHT: #ccc 1px solid } .cal { TEXT-ALIGN: center; BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; COLOR: #222; BORDER-LEFT-WIDTH: 0px; = FONT-WEIGHT: normal } .cal IMG { BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: = 0px; BORDER-LEFT-WIDTH: 0px } .cal BUTTON { MIN-WIDTH: 25px; PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; = BACKGROUND-COLOR: transparent; MARGIN: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; = BORDER-LEFT-WIDTH: 0px; CURSOR: pointer; PADDING-TOP: 0px } .cal BUTTON.today { BORDER-BOTTOM: #222 1px solid; BORDER-LEFT: #222 1px solid; = BACKGROUND-COLOR: #fab; BORDER-TOP: #222 1px solid; BORDER-RIGHT: #222 = 1px solid } .cal BUTTON.selected { BORDER-BOTTOM: #222 1px solid; BORDER-LEFT: #222 1px solid; BORDER-TOP: = #222 1px solid; BORDER-RIGHT: #222 1px solid } .cal .dow TD { WIDTH: 18px } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/taxweb/cart.css #shoppingCart { WIDTH: 100%; BORDER-COLLAPSE: collapse } #shoppingCart TR.no_hover:hover { BACKGROUND: #fff } #shoppingCart TD { VERTICAL-ALIGN: top } #shoppingCart TD.item { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; PADDING-TOP: 10px } #shoppingCart UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; TEXT-INDENT: 0px; MARGIN: = 10px 0px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #shoppingCart .preview { PADDING-BOTTOM: 5px; PADDING-LEFT: 16px; PADDING-RIGHT: 0px; = BACKGROUND: url(../images/view.png) no-repeat 0px 0px; FONT-WEIGHT: = normal; PADDING-TOP: 0px } .itemDetails { FLOAT: right } .prices { FLOAT: right } .prices TD.total { BORDER-TOP: #ccc 1px solid } TD.label { TEXT-ALIGN: right; PADDING-RIGHT: 5px; FONT-WEIGHT: 600 } .historyDate { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; FLOAT: right; PADDING-TOP: 0px } .historyTable { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; CLEAR: right; PADDING-TOP: 0px } .receiptHistoryLegend { MARGIN-BOTTOM: 50px; PADDING-TOP: 0px } .fundsAvailable { =09 } .balanceDue { =09 } .productParams { TEXT-ALIGN: left } DIV.productSelection TD.parameterColumn { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = PADDING-TOP: 15px } .productSelection { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 0px; MARGIN: 15px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; CLEAR: both; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px = solid; PADDING-TOP: 0px } #addressSet { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 0px; MARGIN: 15px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; CLEAR: both; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px = solid; PADDING-TOP: 0px } .productSelection H1 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; = PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BACKGROUND: = url(../images/header-gradient.png) #eee repeat-x; PADDING-TOP: 3px } #addressSet H1 { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; MARGIN: 0px; = PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BACKGROUND: = url(../images/header-gradient.png) #eee repeat-x; PADDING-TOP: 3px } .productSelection FIELDSET { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BACKGROUND: none transparent scroll repeat 0% 0%; = BORDER-LEFT-STYLE: none } .productSelection TD.summary { BORDER-RIGHT: #ccc 1px solid } .productSelection .summary DIV { MARGIN: 0px 15px 15px } .productSelection .productParams { MARGIN: 0px 15px 15px } #addressSet .productParams { MARGIN: 0px 15px 15px } #addressSet H1 { MARGIN-BOTTOM: 15px } DIV.productSelection .summary DIV TD { VERTICAL-ALIGN: top } #changeAllLabel { TEXT-ALIGN: right; PADDING-BOTTOM: 20px; PADDING-LEFT: 20px; = PADDING-RIGHT: 20px; FLOAT: right; MARGIN-RIGHT: 5px; PADDING-TOP: 20px } DIV.changeAllWarning { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left !important; = BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: 5px; BACKGROUND-COLOR: = #ffc; MARGIN: -5px 0px 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = FLOAT: right; CLEAR: both; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: = #ccc 1px solid; PADDING-TOP: 5px } .highlighted-bg { BACKGROUND-COLOR: rgb(255,255,234) } .receiptDisplay TD { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; = PADDING-TOP: 0px } .receiptDisplay TD.bottomBorder { BORDER-BOTTOM: #ccc 1px solid } TABLE.purchasedSubscriptions TH { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; BACKGROUND: none transparent scroll repeat 0% 0%; = COLOR: black; PADDING-TOP: 0px } TABLE.purchasedSubscriptions TD { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; BACKGROUND: none transparent scroll repeat 0% 0%; = COLOR: black; PADDING-TOP: 0px } TABLE.purchasedSubscriptions { MARGIN-BOTTOM: 17px; CLEAR: left } .productGroup:hover { BACKGROUND-COLOR: #f0f0f0 } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/taxweb/tabs.css .tabs { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 5px 0px 0px 5px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .tabs LI { BORDER-BOTTOM-STYLE: none; BORDER-LEFT: #ccc 1px solid; PADDING-BOTTOM: = 5px; MARGIN: 1px 5px 0px 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; = BACKGROUND: url(../images/tab.gif) no-repeat right top; FLOAT: left; = PADDING-TOP: 5px } .tabs LI.active { BACKGROUND: url(../images/selected_tab.gif) right top } .tabs LI A { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: = 5px; PADDING-TOP: 5px } #tab_control { PADDING-BOTTOM: 0px; MARGIN: 5px 0px 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; PADDING-TOP: 5px } #tabcontentcontainer { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 15px; MARGIN: -1px 0px 0px; PADDING-LEFT: 15px; = PADDING-RIGHT: 15px; BACKGROUND: #fff; CLEAR: left; BORDER-TOP: #ccc 1px = solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 15px } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/taxweb/treasurer.css .dashboard-widget { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 0px; MARGIN-TOP: 17px; PADDING-LEFT: 0px; WIDTH: 45%; = PADDING-RIGHT: 0px; BACKGROUND: #fff; FLOAT: left; BORDER-TOP: #ccc 1px = solid; MARGIN-RIGHT: 17px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: = 0px } .dashboard-widget P.error { BACKGROUND-IMAGE: none } .dashboard-widget H1 { PADDING-BOTTOM: 7px; MARGIN: 0px; PADDING-LEFT: 7px; PADDING-RIGHT: = 7px; BACKGROUND: #eee; COLOR: #222; FONT-SIZE: 95%; PADDING-TOP: 7px } .dashboard-widget H1 #spinner { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 70px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } .dashboard-widget TABLE { MARGIN: 10px 17px } .dashboard-widget TABLE .label { TEXT-ALIGN: left } .dashboard-widget TABLE TR.hasLabel TD { PADDING-TOP: 7px } .dashboard-widgetwidget UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } .dashboard-widgetwidget LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } .tax-value TD { PADDING-BOTTOM: 1px; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; = PADDING-TOP: 1px } #updateInquiry { MARGIN: 17px; FLOAT: right } #paymentLinks TABLE { WIDTH: 100% } #paymentLinks TABLE TD { PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; = VERTICAL-ALIGN: top; PADDING-TOP: 3px } #paymentLinks P { FONT-STYLE: italic } TABLE.account { BORDER-BOTTOM: #ccc 1px; BORDER-LEFT: #ccc 1px solid; MARGIN: 3px 3px = 12px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc = 1px } .account THEAD { TEXT-ALIGN: left; PADDING-BOTTOM: 7px; MARGIN: 0px; PADDING-LEFT: 7px; = PADDING-RIGHT: 7px; BACKGROUND: #eee; COLOR: #222; FONT-SIZE: 95%; = PADDING-TOP: 7px } .account TH { PADDING-BOTTOM: 1px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; = PADDING-TOP: 1px } .account TD { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 15px; = PADDING-RIGHT: 15px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 3px } .account TR.even { BACKGROUND-COLOR: #eee } TABLE.condensed { BORDER-BOTTOM: #ccc 1px; BORDER-LEFT: #ccc 1px solid; MARGIN: 3px 3px = 12px; BACKGROUND: #fff; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc = 1px } TABLE.condensed THEAD { TEXT-ALIGN: left; PADDING-BOTTOM: 3px; MARGIN: 0px; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; BACKGROUND: #eee; COLOR: #222; FONT-WEIGHT: bold; = PADDING-TOP: 3px } TABLE.condensed TD.rowheader { FONT-WEIGHT: bold } TABLE.condensed TH.colheader { PADDING-BOTTOM: 1px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; = PADDING-TOP: 1px } TABLE.condensed TD { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 5px } TABLE.condensed TR.even { BACKGROUND-COLOR: #eee } TABLE.condensed TR.total { BACKGROUND-COLOR: #eee } TABLE.condensed TR.total TD { FONT-WEIGHT: bold } DIV.activelink { COLOR: #aaa; FONT-WEIGHT: bold } .pdfDownloadLink { PADDING-BOTTOM: 1px; PADDING-LEFT: 28px; DISPLAY: block; BACKGROUND: = url(../images/pdf-document.png) no-repeat 0px 0px; HEIGHT: 24px; = FONT-SIZE: 75%; PADDING-TOP: 1px } .total { FONT-WEIGHT: bold } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/taxweb/tax.css #TaxAccountSummary { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: = 0px; BORDER-COLLAPSE: collapse; MARGIN-BOTTOM: 15px; PADDING-TOP: 0px } #TaxAccountDetail { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: = 0px; BORDER-COLLAPSE: collapse; MARGIN-BOTTOM: 15px; PADDING-TOP: 0px } DIV.iDoc #TaxAccountDetail { MARGIN-BOTTOM: 0px } #TaxAccountSummary TD { BORDER-BOTTOM: #ccc 1px dashed; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; PADDING-TOP: 5px } #TaxAccountDetail TD { BORDER-BOTTOM: #ccc 1px dashed; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; PADDING-TOP: 5px } #TaxAccountSummary TR:unknown TD { BORDER-BOTTOM-STYLE: none } #TaxAccountDetail TR:unknown TD { BORDER-BOTTOM-STYLE: none } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/css/base.css @import url( document.css ); @import url( search.css ); @import url( report.css ); @import url( calendar.css ); @import url( cart.css ); @import url( tabs.css ); @import url( treasurer.css ); @import url( tax.css ); BODY { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #fff; FONT-STYLE: normal; = MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; = FONT-FAMILY: arial, helvetica, sans-serif; COLOR: #222; FONT-SIZE: 80%; = PADDING-TOP: 0px } * { FONT-FAMILY: arial, helvetica, sans-serif } A { COLOR: #1d4aa5; TEXT-DECORATION: underline !important } A:visited { COLOR: #a74992; TEXT-DECORATION: underline !important } A:hover { COLOR: #f90; TEXT-DECORATION: underline !important } A:active { COLOR: #f90; TEXT-DECORATION: underline !important } #version { TEXT-ALIGN: right; COLOR: #888; FONT-SIZE: 75% } .attribution { FONT-SIZE: 75% } P.error { PADDING-BOTTOM: 2px; FONT-STYLE: italic; MIN-HEIGHT: 48px; = PADDING-LEFT: 52px; PADDING-RIGHT: 2px; BACKGROUND: = url(../images/warning.png) no-repeat 0px 50%; COLOR: red; PADDING-TOP: = 24px } P.warning { PADDING-BOTTOM: 2px; FONT-STYLE: italic; MIN-HEIGHT: 48px; = PADDING-LEFT: 52px; PADDING-RIGHT: 2px; BACKGROUND: = url(../images/info.png) no-repeat 0px 50%; COLOR: #f60; PADDING-TOP: = 24px } DIV.warning { BORDER-BOTTOM: 1px solid; BORDER-LEFT: 1px solid; PADDING-BOTTOM: 6px; = MIN-HEIGHT: 24px; PADDING-LEFT: 32px; WIDTH: 300px; PADDING-RIGHT: 6px; = BACKGROUND: url(../images/important.png) #fbdcbd no-repeat 4px 4px; = COLOR: #f57900; BORDER-TOP: 1px solid; FONT-WEIGHT: bold; BORDER-RIGHT: = 1px solid; PADDING-TOP: 6px } DIV.warning H1 { PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; COLOR: #f57900; PADDING-TOP: 0px } DIV.warning P { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; COLOR: #222; PADDING-TOP: 0px } P.info { PADDING-BOTTOM: 2px; FONT-STYLE: italic; MIN-HEIGHT: 48px; = PADDING-LEFT: 52px; PADDING-RIGHT: 2px; BACKGROUND: = url(../images/info.png) no-repeat 0px 50%; PADDING-TOP: 24px } TH A { COLOR: #fff; TEXT-DECORATION: underline } TH A:active { =09 } TH A:hover { COLOR: #fff; TEXT-DECORATION: underline } TH A:visited { COLOR: #fff; TEXT-DECORATION: underline } #header { PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: = 10px; PADDING-TOP: 10px } #header H1 { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } INPUT.invalid { PADDING-RIGHT: 24px; BACKGROUND: url(../images/warning-sm.png) white = no-repeat 100% 0% } SELECT.invalid { BACKGROUND: #fab } FIELDSET.invalid { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: = red 1px solid; BORDER-RIGHT: red 1px solid } TABLE.invalid { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: = red 1px solid; BORDER-RIGHT: red 1px solid } TABLE.outlined TD { BORDER-BOTTOM: #ccc 1px solid } .combobox { MIN-WIDTH: 150px; MAX-WIDTH: 300px } #nav { WIDTH: 100% } #nav UL { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; = PADDING-RIGHT: 0px; DISPLAY: block; FONT-WEIGHT: 600; PADDING-TOP: 5px } #nav UL LI { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px } #nav UL LI A { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: = 10px; PADDING-TOP: 0px } #nav UL LI.first A { BORDER-LEFT-STYLE: none } #columns { WIDTH: 100%; BORDER-COLLAPSE: collapse } #header_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } #left_column { VERTICAL-ALIGN: top } #right_column { VERTICAL-ALIGN: top } #left_column { WIDTH: 20% } #right_column { WIDTH: 75% } #left { PADDING-BOTTOM: 5px; MIN-HEIGHT: 450px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; PADDING-TOP: 5px } #middle { PADDING-BOTTOM: 10px; MARGIN: 0px 0px 15px; PADDING-LEFT: 10px; WIDTH: = 97%; PADDING-RIGHT: 10px; PADDING-TOP: 10px } #middle_left { PADDING-BOTTOM: 0px; MARGIN: 0px 50px 0px 0px; PADDING-LEFT: 0px; = WIDTH: 50%; PADDING-RIGHT: 50px; VERTICAL-ALIGN: top; BORDER-RIGHT: #ccc = 1px solid; PADDING-TOP: 0px } #middle_right { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 50px; WIDTH: 50%; = PADDING-RIGHT: 0px; VERTICAL-ALIGN: top; PADDING-TOP: 0px } #footer_cell { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = PADDING-TOP: 0px } #footer { WIDTH: 100%; CLEAR: both } #accountTypes { MARGIN-BOTTOM: 15px } #sort_search_results { WIDTH: 180px } #searchResultsTable { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 15px; PADDING-LEFT: 0px; = WIDTH: 100%; PADDING-RIGHT: 0px; PADDING-TOP: 15px } #searchResultsTable TH { TEXT-ALIGN: left } #searchResultsTable A { DISPLAY: block } #searchResultsTable TD { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = VERTICAL-ALIGN: top; PADDING-TOP: 5px } #searchResultsTable TABLE { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-COLLAPSE: = collapse; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none } #searchResultsTable TABLE TABLE TD { PADDING-TOP: 0px } .summary TABLE { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-SPACING: 0; WIDTH: 100%; = BORDER-TOP: 0px; BORDER-RIGHT: 0px } .summary TABLE TD { BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-SPACING: 0; BORDER-TOP: = 0px; BORDER-RIGHT: 0px } .accountThumb { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } TABLE#footer TR TD { WIDTH: 33%; VERTICAL-ALIGN: top } TABLE#footer TR TD.center { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = VERTICAL-ALIGN: top; PADDING-TOP: 0px } TABLE#footer TR TD.right { TEXT-ALIGN: right } DIV.flowLayout DIV { MARGIN: 0px 10px 10px 0px; FLOAT: left } DIV.flowLayout_clear { CLEAR: left } .center { TEXT-ALIGN: center } H1 { COLOR: #000; FONT-SIZE: 125%; FONT-WEIGHT: 600 } H2 { COLOR: #000; FONT-SIZE: 110%; FONT-WEIGHT: 600 } H3 { COLOR: #000; FONT-SIZE: 100%; FONT-WEIGHT: 600 } H4 { COLOR: #000; FONT-SIZE: 90%; FONT-WEIGHT: 600 } H5 { COLOR: #000; FONT-SIZE: 85%; FONT-WEIGHT: 600 } HR { BORDER-BOTTOM: #ccc 1px solid; BORDER-RIGHT-STYLE: none; MARGIN: 15px = 0px; BORDER-TOP-STYLE: none; BORDER-LEFT-STYLE: none } TH { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BACKGROUND: = #003366; COLOR: white; PADDING-TOP: 5px } TH A { COLOR: white; TEXT-DECORATION: none } TABLE { BORDER-SPACING: 0px } .sortableDataTable TH { BORDER-RIGHT: #ccc 1px solid } .sortableDataTable TD { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 5px; PADDING-LEFT: 15px; = PADDING-RIGHT: 15px; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: 5px } .sortableDataTable TD TD { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none } .sortableDataTable TR.highlightable:hover { BACKGROUND: #abcdf3 } .sortableDataTable { BORDER-LEFT: #ccc 1px solid; BORDER-SPACING: 0; WIDTH: 100%; = BORDER-COLLAPSE: collapse } .tableRow1 { BACKGROUND: #ffffff } #searchResultsTable .odd { BACKGROUND: #ffffff } .tableRow2 { BACKGROUND: #eeeeee } #searchResultsTable .even { BACKGROUND: #eeeeee } .tableRow2 TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-TOP: #ccc 1px solid } #searchResultsTable .even TD { BORDER-BOTTOM: #ccc 1px solid; BORDER-TOP: #ccc 1px solid } .tableRow2 TD TD { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } #searchResultsTable .even TD TD { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } TABLE.stripe TBODY TR.oddRow { BACKGROUND-COLOR: #eee } TABLE.stripe { BORDER-COLLAPSE: collapse } .newReport { BACKGROUND-COLOR: #ffc; FONT-WEIGHT: bold } .tooltipv2 { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left; BORDER-LEFT: #ccc 1px = solid; PADDING-BOTTOM: 15px; PADDING-LEFT: 15px; WIDTH: 200px; = PADDING-RIGHT: 15px; BACKGROUND: #ffc; COLOR: #222; BORDER-TOP: #ccc 1px = solid; FONT-WEIGHT: normal; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: = 15px } .trigger { CURSOR: help } .clickable { CURSOR: pointer } .text { WIDTH: 100% } INPUT.text { WIDTH: 150px } #delete { VERTICAL-ALIGN: bottom } .deleteIcon IMG { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } #search_results TD.item { BORDER-BOTTOM: #ccc 1px solid; PADDING-BOTTOM: 10px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; PADDING-TOP: 10px } P.print { BACKGROUND: url(../images/printer.png) no-repeat; HEIGHT: 32px } P.print A { PADDING-LEFT: 30px; VERTICAL-ALIGN: middle } A.iconic { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #eee; MARGIN: 10px 15px 25px 0px; = PADDING-LEFT: 40px; PADDING-RIGHT: 10px; DISPLAY: block; FLOAT: left; = HEIGHT: 32px; VERTICAL-ALIGN: bottom; BORDER-TOP: #ccc 1px solid; = BORDER-RIGHT: #ccc 1px solid; TEXT-DECORATION: none !important; = PADDING-TOP: 10px } A.print { BACKGROUND: url(../images/printer.png) #eee no-repeat 6px 50%; FLOAT: = right; MARGIN-RIGHT: 0px } A.modifySearch { BACKGROUND: url(../images/modify-search.png) #eee no-repeat 6px 50% } A.newSearch { BACKGROUND: url(../images/new-search.png) #eee no-repeat 6px 50% } #reportTypes { LIST-STYLE-TYPE: none } .tabcontent { DISPLAY: none } DIV.suggestions { Z-INDEX: 5; BORDER-BOTTOM: black 1px solid; POSITION: absolute; = BORDER-LEFT: black 1px solid; BACKGROUND-COLOR: white; COLOR: black; = BORDER-TOP: black 1px solid; CURSOR: default; BORDER-RIGHT: black 1px = solid } DIV.suggestions DIV { PADDING-BOTTOM: 0px; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; = PADDING-TOP: 0px } DIV.suggestions DIV.selected { BACKGROUND: #036; COLOR: #f90 } .viewAttachment IFRAME { WIDTH: 100%; HEIGHT: 750px } .tabbed_iframe { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; WIDTH: = 100%; HEIGHT: 220px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px = solid } FIELDSET { BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px solid; = PADDING-BOTTOM: 15px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; = BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px solid; PADDING-TOP: = 15px } #userForm FIELDSET { MARGIN-BOTTOM: 35px } #userForm FIELDSET LEGEND { PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; = FONT-WEIGHT: bold; PADDING-TOP: 5px } SPAN.dim { COLOR: #aaa } SELECT#state { MIN-WIDTH: 25px; WIDTH: 50px } .boldRight { TEXT-ALIGN: right; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; PADDING-TOP: 5px } .boldLeft { TEXT-ALIGN: left; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; PADDING-TOP: 5px } .boldRightTop { TEXT-ALIGN: right; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; VERTICAL-ALIGN: top; PADDING-TOP: 5px } .boldLeftTop { TEXT-ALIGN: left; PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; = PADDING-RIGHT: 5px; VERTICAL-ALIGN: top; PADDING-TOP: 5px } #productType { MARGIN: 0px 0px 25px } #pageRange { PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: = 5px; PADDING-TOP: 5px } #myDocuments { LIST-STYLE-TYPE: none } #myDocuments TD { PADDING-BOTTOM: 15px; PADDING-LEFT: 15px; PADDING-RIGHT: 15px; = PADDING-TOP: 15px } .hidden { DISPLAY: none } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/css/print.css BODY { PADDING-BOTTOM: 0px; BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; FONT-SIZE: 9pt; BORDER-LEFT-WIDTH: 0px; = PADDING-TOP: 0px } TH { BORDER-BOTTOM: #ccc 1px solid; TEXT-ALIGN: left } TD { FONT-SIZE: 9pt } .no_print { DISPLAY: none; VISIBILITY: hidden } #searchResultsTable A { TEXT-DECORATION: none } DIV#header { DISPLAY: none; VISIBILITY: hidden } DIV#nav { DISPLAY: none; VISIBILITY: hidden } DIV#left { DISPLAY: none; VISIBILITY: hidden } #left_column { DISPLAY: none; VISIBILITY: hidden } #middle { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ffffff; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #footer_cell { DISPLAY: none; VISIBILITY: hidden } .center { TEXT-ALIGN: center } H1 { FONT-SIZE: 14pt } A.nav { COLOR: white; TEXT-DECORATION: none } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/custom/custom.css #header { BACKGROUND: url(GarfieldheaderBG.jpg) #135 no-repeat left center; = HEIGHT: 80px } #header H1 { COLOR: #135; FONT-SIZE: 200% } #nav UL { BORDER-BOTTOM: #ccc 1px solid; MIN-HEIGHT: 10px; BACKGROUND: #036; = BORDER-TOP: #030 1px solid } #nav A { BORDER-LEFT: #ccc 2px solid; COLOR: #ddd; TEXT-DECORATION: none } #nav A.visited { BORDER-LEFT: #ccc 2px solid; COLOR: #ddd; TEXT-DECORATION: none } #nav A:hover { COLOR: #fc3; TEXT-DECORATION: none } #left_column { BACKGROUND: #eee; BORDER-RIGHT: #ccc 1px solid } A { COLOR: #1d4aa5 } A:visited { COLOR: #a74992 } A:hover { COLOR: #f90 } #footer { BORDER-BOTTOM: #036 0px solid; BORDER-LEFT: #036 0px solid; COLOR: = #888; FONT-SIZE: 75%; BORDER-TOP: #036 20px solid; BORDER-RIGHT: #036 = 0px solid } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/css/tooltip.css .tooltip { BORDER-BOTTOM: #ccc 1px solid; POSITION: absolute; BORDER-LEFT: #ccc = 1px solid; PADDING-BOTTOM: 2px; BACKGROUND-COLOR: rgb(255,255,234); = MARGIN: 1em; PADDING-LEFT: 2px; WIDTH: 350px; PADDING-RIGHT: 2px; = FONT-SIZE: 12px; BORDER-TOP: #ccc 1px solid; BORDER-RIGHT: #ccc 1px = solid; PADDING-TOP: 2px; -moz-border-radius: 7px } DIV#tooltip_main { TEXT-ALIGN: left; PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; = PADDING-RIGHT: 0px; FONT-FAMILY: Arial 14px; BACKGROUND: = url(../images/MontroseAssr.png) #ffffff no-repeat 1px 0px; PADDING-TOP: = 0px } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/css/drop3.css .preload1 { BACKGROUND: url(../images/drop3/blank_over.gif) } .preload2 { BACKGROUND: url(../images/drop3/blank_overa.gif) } .menu2 { Z-INDEX: 500; POSITION: relative; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: = none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; = FONT-FAMILY: arial, verdana, sans-serif; BACKGROUND: = url(../images/drop3/barbg.gif); HEIGHT: 28px; PADDING-TOP: 0px } .menu2 LI.top { DISPLAY: block; FLOAT: left } .menu2 LI A.top_link { PADDING-BOTTOM: 0px; LINE-HEIGHT: 27px; PADDING-LEFT: 12px; = PADDING-RIGHT: 0px; DISPLAY: block; BACKGROUND: = url(../images/drop3/blank.gif); FLOAT: left; HEIGHT: 28px; COLOR: #222; = FONT-SIZE: 11px; CURSOR: pointer; FONT-WEIGHT: bold; TEXT-DECORATION: = none !important; PADDING-TOP: 0px } .menu2 LI A.top_link SPAN { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; DISPLAY: = block; BACKGROUND: url(../images/drop3/blank.gif) right top; FLOAT: = left; HEIGHT: 28px; PADDING-TOP: 0px } .menu2 LI A.top_link SPAN.down { PADDING-BOTTOM: 0px; PADDING-LEFT: 12px; PADDING-RIGHT: 24px; DISPLAY: = block; BACKGROUND: url(../images/drop3/blanka.gif) no-repeat right top; = FLOAT: left; HEIGHT: 28px; PADDING-TOP: 0px } .menu2 LI A.top_link:hover { BACKGROUND: url(../images/drop3/blank_over.gif) no-repeat; COLOR: #fff } .menu2 LI A.top_link:hover SPAN { BACKGROUND: url(../images/drop3/blank_over.gif) no-repeat right top } .menu2 LI A.top_link:hover SPAN.down { BACKGROUND: url(../images/drop3/blank_overa.gif) no-repeat right top } .menu2 LI:hover > A.top_link { BACKGROUND: url(../images/drop3/blank_over.gif) no-repeat; COLOR: #222 } .menu2 LI:hover > A.top_link SPAN { BACKGROUND: url(../images/drop3/blank_over.gif) no-repeat right top } .menu2 LI:hover > A.top_link SPAN.down { BACKGROUND: url(../images/drop3/blank_overa.gif) no-repeat right top } .menu2 TABLE { POSITION: absolute; WIDTH: 0px; BORDER-COLLAPSE: collapse; HEIGHT: 0px; = TOP: 0px; LEFT: 0px } .menu2 A:hover { Z-INDEX: 200; POSITION: relative; VISIBILITY: visible } .menu2 LI:hover { Z-INDEX: 200; POSITION: relative } .menu2 UL { POSITION: absolute; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 0px; PADDING-RIGHT: 0px; HEIGHT: 0px; = TOP: -9999px; PADDING-TOP: 0px; LEFT: -9999px } .menu2 :hover UL UL { POSITION: absolute; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 0px; PADDING-RIGHT: 0px; HEIGHT: 0px; = TOP: -9999px; PADDING-TOP: 0px; LEFT: -9999px } .menu2 :hover UL :hover UL UL { POSITION: absolute; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 0px; PADDING-RIGHT: 0px; HEIGHT: 0px; = TOP: -9999px; PADDING-TOP: 0px; LEFT: -9999px } .menu2 :hover UL :hover UL :hover UL UL { POSITION: absolute; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 0px; PADDING-RIGHT: 0px; HEIGHT: 0px; = TOP: -9999px; PADDING-TOP: 0px; LEFT: -9999px } .menu2 :hover UL :hover UL :hover UL :hover UL UL { POSITION: absolute; PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: = 0px; PADDING-LEFT: 0px; WIDTH: 0px; PADDING-RIGHT: 0px; HEIGHT: 0px; = TOP: -9999px; PADDING-TOP: 0px; LEFT: -9999px } .menu2 :hover UL.sub { Z-INDEX: 300; BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px = solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 120px; = PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; BACKGROUND: #fff; HEIGHT: auto; = BORDER-TOP: #ccc 1px solid; TOP: 28px; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 3px; LEFT: 0px } .menu2 :hover UL.sub LI { POSITION: relative; WIDTH: 90px; DISPLAY: block; FLOAT: left; HEIGHT: = 20px; FONT-WEIGHT: normal } .menu2 :hover UL.sub LI A { LINE-HEIGHT: 20px; TEXT-INDENT: 5px; WIDTH: 120px; DISPLAY: block; = HEIGHT: 20px; COLOR: #000; FONT-SIZE: 11px; TEXT-DECORATION: none = !important } .menu2 :hover UL.sub LI A.fly { BACKGROUND: url(arrow.gif) #fff no-repeat 80px 7px } .menu2 :hover UL.sub LI A:hover { BACKGROUND: #036; COLOR: #fff } .menu2 :hover UL.sub LI A.fly:hover { BACKGROUND: url(../images/drop3/arrow_over.gif) #036 no-repeat 80px = 7px; COLOR: #222 } .menu2 :hover UL LI:hover > A.fly { BACKGROUND: url(../images/drop3/arrow_over.gif) #036 no-repeat 80px = 7px; COLOR: #222 } .menu2 :hover UL :hover UL { Z-INDEX: 400; BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px = solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 90px; = PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; BACKGROUND: #fff; HEIGHT: auto; = BORDER-TOP: #ccc 1px solid; TOP: -4px; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 3px; LEFT: 90px } .menu2 :hover UL :hover UL :hover UL { Z-INDEX: 400; BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px = solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 90px; = PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; BACKGROUND: #fff; HEIGHT: auto; = BORDER-TOP: #ccc 1px solid; TOP: -4px; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 3px; LEFT: 90px } .menu2 :hover UL :hover UL :hover UL :hover UL { Z-INDEX: 400; BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px = solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 90px; = PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; BACKGROUND: #fff; HEIGHT: auto; = BORDER-TOP: #ccc 1px solid; TOP: -4px; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 3px; LEFT: 90px } .menu2 :hover UL :hover UL :hover UL :hover UL :hover UL { Z-INDEX: 400; BORDER-BOTTOM: #ccc 1px solid; BORDER-LEFT: #ccc 1px = solid; PADDING-BOTTOM: 3px; PADDING-LEFT: 3px; WIDTH: 90px; = PADDING-RIGHT: 3px; WHITE-SPACE: nowrap; BACKGROUND: #fff; HEIGHT: auto; = BORDER-TOP: #ccc 1px solid; TOP: -4px; BORDER-RIGHT: #ccc 1px solid; = PADDING-TOP: 3px; LEFT: 90px } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/includes/modalbox1.6.0/modalbox.css #MB_overlay { Z-INDEX: 9999; POSITION: absolute; BACKGROUND-COLOR: #000 !important; = MARGIN: auto; WIDTH: 100%; HEIGHT: 100%; TOP: 0px; LEFT: 0px } [id]#MB_overlay { POSITION: fixed } #MB_window { Z-INDEX: 10000; BORDER-BOTTOM: 0px solid; POSITION: absolute; = TEXT-ALIGN: left; BORDER-LEFT: 0px solid; BORDER-TOP: 0px solid; TOP: = 0px; BORDER-RIGHT: 0px solid } [id]#MB_window { POSITION: fixed !important } #MB_frame { POSITION: relative; BACKGROUND-COLOR: #efefef; HEIGHT: 100% } #MB_header { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } #MB_content { PADDING-BOTTOM: 6px; PADDING-LEFT: 0.75em; PADDING-RIGHT: 0.75em; = OVERFLOW: auto; PADDING-TOP: 6px } #MB_caption { TEXT-ALIGN: left; PADDING-BOTTOM: 0.5em; MARGIN: 0px; PADDING-LEFT: = 0.75em; PADDING-RIGHT: 2em; FONT: bold 100% "Lucida Grande", Arial, = sans-serif; PADDING-TOP: 0.5em; text-shadow: #FFF 0 1px 0 } #MB_close { POSITION: absolute; PADDING-BOTTOM: 2px; PADDING-LEFT: 3px; = PADDING-RIGHT: 3px; DISPLAY: block; FONT-SIZE: 13px; TOP: 4px; RIGHT: = 5px; FONT-WEIGHT: bold; TEXT-DECORATION: none; PADDING-TOP: 2px } #MB_close:hover { BACKGROUND: none transparent scroll repeat 0% 0% } #MB_loading { PADDING-BOTTOM: 1.5em; TEXT-INDENT: -10000px; PADDING-LEFT: 1.5em; = PADDING-RIGHT: 1.5em; BACKGROUND: url(spinner.gif) no-repeat 50% 0px; = PADDING-TOP: 1.5em } #MB_frame { PADDING-BOTTOM: 7px; -moz-border-radius: 7px; -webkit-border-radius: = 7px; border-radius: 7px } #MB_window { BACKGROUND-COLOR: #efefef; COLOR: #000; -moz-border-radius: 7px; = -webkit-border-radius: 7px; border-radius: 7px; -webkit-box-shadow: 0 = 8px 64px #000; -moz-box-shadow: 0 0 64px #000; box-shadow: 0 0 64px #000 } #MB_content { BORDER-TOP: #f9f9f9 1px solid } #MB_header { BORDER-BOTTOM: #ccc 1px solid; BACKGROUND-COLOR: #ddd } #MB_caption { COLOR: #000 } #MB_close { COLOR: #777 } #MB_close:hover { COLOR: #000 } .MB_alert { TEXT-ALIGN: center; MARGIN: 10px 0px } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/includes/prototype/prototype.js /* Prototype JavaScript framework, version 1.6.0.3=0A= * (c) 2005-2008 Sam Stephenson=0A= *=0A= * Prototype is freely distributable under the terms of an MIT-style = license.=0A= * For details, see the Prototype web site: http://www.prototypejs.org/=0A= *=0A= = *------------------------------------------------------------------------= --*/=0A= =0A= var Prototype =3D {=0A= Version: '1.6.0.3',=0A= =0A= Browser: {=0A= IE: !!(window.attachEvent &&=0A= navigator.userAgent.indexOf('Opera') =3D=3D=3D -1),=0A= Opera: navigator.userAgent.indexOf('Opera') > -1,=0A= WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A= Gecko: navigator.userAgent.indexOf('Gecko') > -1 &&=0A= navigator.userAgent.indexOf('KHTML') =3D=3D=3D -1,=0A= MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A= },=0A= =0A= BrowserFeatures: {=0A= XPath: !!document.evaluate,=0A= SelectorsAPI: !!document.querySelector,=0A= ElementExtensions: !!window.HTMLElement,=0A= SpecificElementExtensions:=0A= document.createElement('div')['__proto__'] &&=0A= document.createElement('div')['__proto__'] !=3D=3D=0A= document.createElement('form')['__proto__']=0A= },=0A= =0A= ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',=0A= JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A= =0A= emptyFunction: function() { },=0A= K: function(x) { return x }=0A= };=0A= =0A= if (Prototype.Browser.MobileSafari)=0A= Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A= =0A= =0A= /* Based on Alex Arnell's inheritance implementation. */=0A= var Class =3D {=0A= create: function() {=0A= var parent =3D null, properties =3D $A(arguments);=0A= if (Object.isFunction(properties[0]))=0A= parent =3D properties.shift();=0A= =0A= function klass() {=0A= this.initialize.apply(this, arguments);=0A= }=0A= =0A= Object.extend(klass, Class.Methods);=0A= klass.superclass =3D parent;=0A= klass.subclasses =3D [];=0A= =0A= if (parent) {=0A= var subclass =3D function() { };=0A= subclass.prototype =3D parent.prototype;=0A= klass.prototype =3D new subclass;=0A= parent.subclasses.push(klass);=0A= }=0A= =0A= for (var i =3D 0; i < properties.length; i++)=0A= klass.addMethods(properties[i]);=0A= =0A= if (!klass.prototype.initialize)=0A= klass.prototype.initialize =3D Prototype.emptyFunction;=0A= =0A= klass.prototype.constructor =3D klass;=0A= =0A= return klass;=0A= }=0A= };=0A= =0A= Class.Methods =3D {=0A= addMethods: function(source) {=0A= var ancestor =3D this.superclass && this.superclass.prototype;=0A= var properties =3D Object.keys(source);=0A= =0A= if (!Object.keys({ toString: true }).length)=0A= properties.push("toString", "valueOf");=0A= =0A= for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A= var property =3D properties[i], value =3D source[property];=0A= if (ancestor && Object.isFunction(value) &&=0A= value.argumentNames().first() =3D=3D "$super") {=0A= var method =3D value;=0A= value =3D (function(m) {=0A= return function() { return ancestor[m].apply(this, arguments) = };=0A= })(property).wrap(method);=0A= =0A= value.valueOf =3D method.valueOf.bind(method);=0A= value.toString =3D method.toString.bind(method);=0A= }=0A= this.prototype[property] =3D value;=0A= }=0A= =0A= return this;=0A= }=0A= };=0A= =0A= var Abstract =3D { };=0A= =0A= Object.extend =3D function(destination, source) {=0A= for (var property in source)=0A= destination[property] =3D source[property];=0A= return destination;=0A= };=0A= =0A= Object.extend(Object, {=0A= inspect: function(object) {=0A= try {=0A= if (Object.isUndefined(object)) return 'undefined';=0A= if (object =3D=3D=3D null) return 'null';=0A= return object.inspect ? object.inspect() : String(object);=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=0A= },=0A= =0A= toJSON: function(object) {=0A= var type =3D typeof object;=0A= switch (type) {=0A= case 'undefined':=0A= case 'function':=0A= case 'unknown': return;=0A= case 'boolean': return object.toString();=0A= }=0A= =0A= if (object =3D=3D=3D null) return 'null';=0A= if (object.toJSON) return object.toJSON();=0A= if (Object.isElement(object)) return;=0A= =0A= var results =3D [];=0A= for (var property in object) {=0A= var value =3D Object.toJSON(object[property]);=0A= if (!Object.isUndefined(value))=0A= results.push(property.toJSON() + ': ' + value);=0A= }=0A= =0A= return '{' + results.join(', ') + '}';=0A= },=0A= =0A= toQueryString: function(object) {=0A= return $H(object).toQueryString();=0A= },=0A= =0A= toHTML: function(object) {=0A= return object && object.toHTML ? object.toHTML() : = String.interpret(object);=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= isElement: function(object) {=0A= return !!(object && object.nodeType =3D=3D 1);=0A= },=0A= =0A= isArray: function(object) {=0A= return object !=3D null && typeof object =3D=3D "object" &&=0A= 'splice' in object && 'join' in object;=0A= },=0A= =0A= isHash: function(object) {=0A= return object instanceof Hash;=0A= },=0A= =0A= isFunction: function(object) {=0A= return typeof object =3D=3D "function";=0A= },=0A= =0A= isString: function(object) {=0A= return typeof object =3D=3D "string";=0A= },=0A= =0A= isNumber: function(object) {=0A= return typeof object =3D=3D "number";=0A= },=0A= =0A= isUndefined: function(object) {=0A= return typeof object =3D=3D "undefined";=0A= }=0A= });=0A= =0A= Object.extend(Function.prototype, {=0A= argumentNames: function() {=0A= var names =3D = this.toString().match(/^[\s\(]*function[^(]*\(([^\)]*)\)/)[1]=0A= .replace(/\s+/g, '').split(',');=0A= return names.length =3D=3D 1 && !names[0] ? [] : names;=0A= },=0A= =0A= bind: function() {=0A= if (arguments.length < 2 && Object.isUndefined(arguments[0])) return = this;=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= bindAsEventListener: function() {=0A= var __method =3D this, args =3D $A(arguments), object =3D = args.shift();=0A= return function(event) {=0A= return __method.apply(object, [event || = window.event].concat(args));=0A= }=0A= },=0A= =0A= curry: function() {=0A= if (!arguments.length) return this;=0A= var __method =3D this, args =3D $A(arguments);=0A= return function() {=0A= return __method.apply(this, args.concat($A(arguments)));=0A= }=0A= },=0A= =0A= delay: function() {=0A= var __method =3D this, args =3D $A(arguments), timeout =3D = args.shift() * 1000;=0A= return window.setTimeout(function() {=0A= return __method.apply(__method, args);=0A= }, timeout);=0A= },=0A= =0A= defer: function() {=0A= var args =3D [0.01].concat($A(arguments));=0A= return this.delay.apply(this, args);=0A= },=0A= =0A= wrap: function(wrapper) {=0A= var __method =3D this;=0A= return function() {=0A= return wrapper.apply(this, = [__method.bind(this)].concat($A(arguments)));=0A= }=0A= },=0A= =0A= methodize: function() {=0A= if (this._methodized) return this._methodized;=0A= var __method =3D this;=0A= return this._methodized =3D function() {=0A= return __method.apply(null, [this].concat($A(arguments)));=0A= };=0A= }=0A= });=0A= =0A= Date.prototype.toJSON =3D function() {=0A= return '"' + this.getUTCFullYear() + '-' +=0A= (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A= this.getUTCDate().toPaddedString(2) + 'T' +=0A= this.getUTCHours().toPaddedString(2) + ':' +=0A= this.getUTCMinutes().toPaddedString(2) + ':' +=0A= this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A= };=0A= =0A= 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= RegExp.prototype.match =3D RegExp.prototype.test;=0A= =0A= RegExp.escape =3D function(str) {=0A= return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var PeriodicalExecuter =3D Class.create({=0A= initialize: function(callback, frequency) {=0A= this.callback =3D callback;=0A= this.frequency =3D frequency;=0A= this.currentlyExecuting =3D false;=0A= =0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000);=0A= },=0A= =0A= execute: function() {=0A= this.callback(this);=0A= },=0A= =0A= stop: function() {=0A= if (!this.timer) return;=0A= clearInterval(this.timer);=0A= this.timer =3D null;=0A= },=0A= =0A= onTimerEvent: function() {=0A= if (!this.currentlyExecuting) {=0A= try {=0A= this.currentlyExecuting =3D true;=0A= this.execute();=0A= } finally {=0A= this.currentlyExecuting =3D false;=0A= }=0A= }=0A= }=0A= });=0A= Object.extend(String, {=0A= interpret: function(value) {=0A= return value =3D=3D null ? '' : String(value);=0A= },=0A= specialChar: {=0A= '\b': '\\b',=0A= '\t': '\\t',=0A= '\n': '\\n',=0A= '\f': '\\f',=0A= '\r': '\\r',=0A= '\\': '\\\\'=0A= }=0A= });=0A= =0A= Object.extend(String.prototype, {=0A= gsub: function(pattern, replacement) {=0A= var result =3D '', source =3D this, match;=0A= replacement =3D arguments.callee.prepareReplacement(replacement);=0A= =0A= while (source.length > 0) {=0A= if (match =3D source.match(pattern)) {=0A= result +=3D source.slice(0, match.index);=0A= result +=3D String.interpret(replacement(match));=0A= source =3D source.slice(match.index + match[0].length);=0A= } else {=0A= result +=3D source, source =3D '';=0A= }=0A= }=0A= return result;=0A= },=0A= =0A= sub: function(pattern, replacement, count) {=0A= replacement =3D this.gsub.prepareReplacement(replacement);=0A= count =3D Object.isUndefined(count) ? 1 : count;=0A= =0A= return this.gsub(pattern, function(match) {=0A= if (--count < 0) return match[0];=0A= return replacement(match);=0A= });=0A= },=0A= =0A= scan: function(pattern, iterator) {=0A= this.gsub(pattern, iterator);=0A= return String(this);=0A= },=0A= =0A= truncate: function(length, truncation) {=0A= length =3D length || 30;=0A= truncation =3D Object.isUndefined(truncation) ? '...' : truncation;=0A= return this.length > length ?=0A= this.slice(0, length - truncation.length) + truncation : = String(this);=0A= },=0A= =0A= strip: function() {=0A= return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A= },=0A= =0A= stripTags: function() {=0A= return this.replace(/<\/?[^>]+>/gi, '');=0A= },=0A= =0A= stripScripts: function() {=0A= return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A= },=0A= =0A= extractScripts: function() {=0A= var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A= var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A= return (this.match(matchAll) || []).map(function(scriptTag) {=0A= return (scriptTag.match(matchOne) || ['', ''])[1];=0A= });=0A= },=0A= =0A= evalScripts: function() {=0A= return this.extractScripts().map(function(script) { return = eval(script) });=0A= },=0A= =0A= escapeHTML: function() {=0A= var self =3D arguments.callee;=0A= self.text.data =3D this;=0A= return self.div.innerHTML;=0A= },=0A= =0A= unescapeHTML: function() {=0A= var div =3D new Element('div');=0A= div.innerHTML =3D this.stripTags();=0A= return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A= $A(div.childNodes).inject('', function(memo, node) { return = memo+node.nodeValue }) :=0A= div.childNodes[0].nodeValue) : '';=0A= },=0A= =0A= toQueryParams: function(separator) {=0A= var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A= if (!match) return { };=0A= =0A= return match[1].split(separator || '&').inject({ }, function(hash, = pair) {=0A= if ((pair =3D pair.split('=3D'))[0]) {=0A= var key =3D decodeURIComponent(pair.shift());=0A= var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A= if (value !=3D undefined) value =3D decodeURIComponent(value);=0A= =0A= if (key in hash) {=0A= if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A= hash[key].push(value);=0A= }=0A= else hash[key] =3D value;=0A= }=0A= return hash;=0A= });=0A= },=0A= =0A= toArray: function() {=0A= return this.split('');=0A= },=0A= =0A= succ: function() {=0A= return this.slice(0, this.length - 1) +=0A= String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A= },=0A= =0A= times: function(count) {=0A= return count < 1 ? '' : new Array(count + 1).join(this);=0A= },=0A= =0A= camelize: function() {=0A= var parts =3D this.split('-'), len =3D parts.length;=0A= if (len =3D=3D 1) return parts[0];=0A= =0A= var camelized =3D this.charAt(0) =3D=3D '-'=0A= ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A= : parts[0];=0A= =0A= for (var i =3D 1; i < len; i++)=0A= camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1);=0A= =0A= return camelized;=0A= },=0A= =0A= capitalize: function() {=0A= return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase();=0A= },=0A= =0A= underscore: function() {=0A= return this.gsub(/::/, = '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{= 1}_#{2}').gsub(/-/,'_').toLowerCase();=0A= },=0A= =0A= dasherize: function() {=0A= return this.gsub(/_/,'-');=0A= },=0A= =0A= inspect: function(useDoubleQuotes) {=0A= var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A= var character =3D String.specialChar[match[0]];=0A= return character ? character : '\\u00' + = match[0].charCodeAt().toPaddedString(2, 16);=0A= });=0A= if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"';=0A= return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A= },=0A= =0A= toJSON: function() {=0A= return this.inspect(true);=0A= },=0A= =0A= unfilterJSON: function(filter) {=0A= return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A= },=0A= =0A= isJSON: function() {=0A= var str =3D this;=0A= if (str.blank()) return false;=0A= str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A= return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A= },=0A= =0A= evalJSON: function(sanitize) {=0A= var json =3D this.unfilterJSON();=0A= try {=0A= if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A= } catch (e) { }=0A= throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A= },=0A= =0A= include: function(pattern) {=0A= return this.indexOf(pattern) > -1;=0A= },=0A= =0A= startsWith: function(pattern) {=0A= return this.indexOf(pattern) =3D=3D=3D 0;=0A= },=0A= =0A= endsWith: function(pattern) {=0A= var d =3D this.length - pattern.length;=0A= return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A= },=0A= =0A= empty: function() {=0A= return this =3D=3D '';=0A= },=0A= =0A= blank: function() {=0A= return /^\s*$/.test(this);=0A= },=0A= =0A= interpolate: function(object, pattern) {=0A= return new Template(this, pattern).evaluate(object);=0A= }=0A= });=0A= =0A= if (Prototype.Browser.WebKit || Prototype.Browser.IE) = Object.extend(String.prototype, {=0A= escapeHTML: function() {=0A= return = this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');=0A= },=0A= unescapeHTML: function() {=0A= return = this.stripTags().replace(/&/g,'&').replace(/</g,'<').replace(/>= /g,'>');=0A= }=0A= });=0A= =0A= String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A= if (Object.isFunction(replacement)) return replacement;=0A= var template =3D new Template(replacement);=0A= return function(match) { return template.evaluate(match) };=0A= };=0A= =0A= String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A= =0A= Object.extend(String.prototype.escapeHTML, {=0A= div: document.createElement('div'),=0A= text: document.createTextNode('')=0A= });=0A= =0A= String.prototype.escapeHTML.div.appendChild(String.prototype.escapeHTML.t= ext);=0A= =0A= var Template =3D Class.create({=0A= initialize: function(template, pattern) {=0A= this.template =3D template.toString();=0A= this.pattern =3D pattern || Template.Pattern;=0A= },=0A= =0A= evaluate: function(object) {=0A= if (Object.isFunction(object.toTemplateReplacements))=0A= object =3D object.toTemplateReplacements();=0A= =0A= return this.template.gsub(this.pattern, function(match) {=0A= if (object =3D=3D null) return '';=0A= =0A= var before =3D match[1] || '';=0A= if (before =3D=3D '\\') return match[2];=0A= =0A= var ctx =3D object, expr =3D match[3];=0A= var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;=0A= match =3D pattern.exec(expr);=0A= if (match =3D=3D null) return before;=0A= =0A= while (match !=3D null) {=0A= var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', = ']') : match[1];=0A= ctx =3D ctx[comp];=0A= if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A= expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : = match[0].length);=0A= match =3D pattern.exec(expr);=0A= }=0A= =0A= return before + String.interpret(ctx);=0A= });=0A= }=0A= });=0A= Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A= =0A= var $break =3D { };=0A= =0A= var Enumerable =3D {=0A= each: function(iterator, context) {=0A= var index =3D 0;=0A= try {=0A= this._each(function(value) {=0A= iterator.call(context, value, index++);=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= return this;=0A= },=0A= =0A= eachSlice: function(number, iterator, context) {=0A= var index =3D -number, slices =3D [], array =3D this.toArray();=0A= if (number < 1) return array;=0A= while ((index +=3D number) < array.length)=0A= slices.push(array.slice(index, index+number));=0A= return slices.collect(iterator, context);=0A= },=0A= =0A= all: function(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!iterator.call(context, value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= any: function(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result =3D false;=0A= this.each(function(value, index) {=0A= if (result =3D !!iterator.call(context, value, index))=0A= throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= collect: function(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(iterator.call(context, value, index));=0A= });=0A= return results;=0A= },=0A= =0A= detect: function(iterator, context) {=0A= var result;=0A= this.each(function(value, index) {=0A= if (iterator.call(context, value, index)) {=0A= result =3D value;=0A= throw $break;=0A= }=0A= });=0A= return result;=0A= },=0A= =0A= findAll: function(iterator, context) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (iterator.call(context, value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= grep: function(filter, iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var results =3D [];=0A= =0A= if (Object.isString(filter))=0A= filter =3D new RegExp(filter);=0A= =0A= this.each(function(value, index) {=0A= if (filter.match(value))=0A= results.push(iterator.call(context, value, index));=0A= });=0A= return results;=0A= },=0A= =0A= include: function(object) {=0A= if (Object.isFunction(this.indexOf))=0A= if (this.indexOf(object) !=3D -1) return true;=0A= =0A= var found =3D false;=0A= this.each(function(value) {=0A= if (value =3D=3D object) {=0A= found =3D true;=0A= throw $break;=0A= }=0A= });=0A= return found;=0A= },=0A= =0A= inGroupsOf: function(number, fillWith) {=0A= fillWith =3D Object.isUndefined(fillWith) ? null : fillWith;=0A= return this.eachSlice(number, function(slice) {=0A= while(slice.length < number) slice.push(fillWith);=0A= return slice;=0A= });=0A= },=0A= =0A= inject: function(memo, iterator, context) {=0A= this.each(function(value, index) {=0A= memo =3D iterator.call(context, memo, value, index);=0A= });=0A= return memo;=0A= },=0A= =0A= 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, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator.call(context, value, index);=0A= if (result =3D=3D null || value >=3D result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= min: function(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator.call(context, value, index);=0A= if (result =3D=3D null || value < result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= partition: function(iterator, context) {=0A= iterator =3D iterator || Prototype.K;=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= (iterator.call(context, value, index) ?=0A= trues : falses).push(value);=0A= });=0A= return [trues, falses];=0A= },=0A= =0A= pluck: function(property) {=0A= var results =3D [];=0A= this.each(function(value) {=0A= results.push(value[property]);=0A= });=0A= return results;=0A= },=0A= =0A= reject: function(iterator, context) {=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (!iterator.call(context, value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= sortBy: function(iterator, context) {=0A= return this.map(function(value, index) {=0A= return {=0A= value: value,=0A= criteria: iterator.call(context, value, index)=0A= };=0A= }).sort(function(left, right) {=0A= var a =3D left.criteria, b =3D right.criteria;=0A= return a < b ? -1 : a > b ? 1 : 0;=0A= }).pluck('value');=0A= },=0A= =0A= toArray: function() {=0A= return this.map();=0A= },=0A= =0A= zip: function() {=0A= var iterator =3D Prototype.K, args =3D $A(arguments);=0A= if (Object.isFunction(args.last()))=0A= iterator =3D args.pop();=0A= =0A= var collections =3D [this].concat(args).map($A);=0A= return this.map(function(value, index) {=0A= return iterator(collections.pluck(index));=0A= });=0A= },=0A= =0A= 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= filter: Enumerable.findAll,=0A= member: Enumerable.include,=0A= entries: Enumerable.toArray,=0A= every: Enumerable.all,=0A= some: Enumerable.any=0A= });=0A= function $A(iterable) {=0A= if (!iterable) return [];=0A= if (iterable.toArray) return iterable.toArray();=0A= var length =3D iterable.length || 0, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= }=0A= =0A= if (Prototype.Browser.WebKit) {=0A= $A =3D function(iterable) {=0A= if (!iterable) return [];=0A= // In Safari, only use the `toArray` method if it's not a NodeList.=0A= // A NodeList is a function, has an function `item` property, and a = numeric=0A= // `length` property. Adapted from Google Doctype.=0A= if (!(typeof iterable =3D=3D=3D 'function' && typeof iterable.length = =3D=3D=3D=0A= 'number' && typeof iterable.item =3D=3D=3D 'function') && = iterable.toArray)=0A= return iterable.toArray();=0A= var length =3D iterable.length || 0, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= };=0A= }=0A= =0A= Array.from =3D $A;=0A= =0A= Object.extend(Array.prototype, Enumerable);=0A= =0A= if (!Array.prototype._reverse) 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(Object.isArray(value) ?=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= reverse: function(inline) {=0A= return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A= },=0A= =0A= reduce: function() {=0A= return this.length > 1 ? this : this[0];=0A= },=0A= =0A= uniq: function(sorted) {=0A= return this.inject([], function(array, value, index) {=0A= if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value)))=0A= array.push(value);=0A= return array;=0A= });=0A= },=0A= =0A= intersect: function(array) {=0A= return this.uniq().findAll(function(item) {=0A= return array.detect(function(value) { return item =3D=3D=3D 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= toJSON: function() {=0A= var results =3D [];=0A= this.each(function(object) {=0A= var value =3D Object.toJSON(object);=0A= if (!Object.isUndefined(value)) results.push(value);=0A= });=0A= return '[' + results.join(', ') + ']';=0A= }=0A= });=0A= =0A= // use native browser JS 1.6 implementation if available=0A= if (Object.isFunction(Array.prototype.forEach))=0A= Array.prototype._each =3D Array.prototype.forEach;=0A= =0A= if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, = i) {=0A= i || (i =3D 0);=0A= var length =3D this.length;=0A= if (i < 0) i =3D length + i;=0A= for (; i < length; i++)=0A= if (this[i] =3D=3D=3D item) return i;=0A= return -1;=0A= };=0A= =0A= if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D = function(item, i) {=0A= i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A= var n =3D this.slice(0, i).reverse().indexOf(item);=0A= return (n < 0) ? n : i - n - 1;=0A= };=0A= =0A= Array.prototype.toArray =3D Array.prototype.clone;=0A= =0A= function $w(string) {=0A= if (!Object.isString(string)) return [];=0A= string =3D string.strip();=0A= return string ? string.split(/\s+/) : [];=0A= }=0A= =0A= if (Prototype.Browser.Opera){=0A= Array.prototype.concat =3D function() {=0A= var array =3D [];=0A= for (var i =3D 0, length =3D this.length; i < length; i++) = array.push(this[i]);=0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= if (Object.isArray(arguments[i])) {=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= Object.extend(Number.prototype, {=0A= toColorPart: function() {=0A= return this.toPaddedString(2, 16);=0A= },=0A= =0A= succ: function() {=0A= return this + 1;=0A= },=0A= =0A= times: function(iterator, context) {=0A= $R(0, this, true).each(iterator, context);=0A= return this;=0A= },=0A= =0A= toPaddedString: function(length, radix) {=0A= var string =3D this.toString(radix || 10);=0A= return '0'.times(length - string.length) + string;=0A= },=0A= =0A= toJSON: function() {=0A= return isFinite(this) ? this.toString() : 'null';=0A= }=0A= });=0A= =0A= $w('abs round ceil floor').each(function(method){=0A= Number.prototype[method] =3D Math[method].methodize();=0A= });=0A= function $H(object) {=0A= return new Hash(object);=0A= };=0A= =0A= var Hash =3D Class.create(Enumerable, (function() {=0A= =0A= function toQueryPair(key, value) {=0A= if (Object.isUndefined(value)) return key;=0A= return key + '=3D' + encodeURIComponent(String.interpret(value));=0A= }=0A= =0A= return {=0A= initialize: function(object) {=0A= this._object =3D Object.isHash(object) ? object.toObject() : = Object.clone(object);=0A= },=0A= =0A= _each: function(iterator) {=0A= for (var key in this._object) {=0A= var value =3D this._object[key], pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= },=0A= =0A= set: function(key, value) {=0A= return this._object[key] =3D value;=0A= },=0A= =0A= get: function(key) {=0A= // simulating poorly supported hasOwnProperty=0A= if (this._object[key] !=3D=3D Object.prototype[key])=0A= return this._object[key];=0A= },=0A= =0A= unset: function(key) {=0A= var value =3D this._object[key];=0A= delete this._object[key];=0A= return value;=0A= },=0A= =0A= toObject: function() {=0A= return Object.clone(this._object);=0A= },=0A= =0A= keys: function() {=0A= return this.pluck('key');=0A= },=0A= =0A= values: function() {=0A= return this.pluck('value');=0A= },=0A= =0A= index: function(value) {=0A= var match =3D this.detect(function(pair) {=0A= return pair.value =3D=3D=3D value;=0A= });=0A= return match && match.key;=0A= },=0A= =0A= merge: function(object) {=0A= return this.clone().update(object);=0A= },=0A= =0A= update: function(object) {=0A= return new Hash(object).inject(this, function(result, pair) {=0A= result.set(pair.key, pair.value);=0A= return result;=0A= });=0A= },=0A= =0A= toQueryString: function() {=0A= return this.inject([], function(results, pair) {=0A= var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A= =0A= if (values && typeof values =3D=3D 'object') {=0A= if (Object.isArray(values))=0A= return results.concat(values.map(toQueryPair.curry(key)));=0A= } else results.push(toQueryPair(key, values));=0A= return results;=0A= }).join('&');=0A= },=0A= =0A= inspect: function() {=0A= return '#<Hash:{' + this.map(function(pair) {=0A= return pair.map(Object.inspect).join(': ');=0A= }).join(', ') + '}>';=0A= },=0A= =0A= toJSON: function() {=0A= return Object.toJSON(this.toObject());=0A= },=0A= =0A= clone: function() {=0A= return new Hash(this);=0A= }=0A= }=0A= })());=0A= =0A= Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;=0A= Hash.from =3D $H;=0A= var ObjectRange =3D Class.create(Enumerable, {=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 (Object.isFunction(responder[callback])) {=0A= try {=0A= responder[callback].apply(responder, [request, transport, = json]);=0A= } catch (e) { }=0A= }=0A= });=0A= }=0A= };=0A= =0A= Object.extend(Ajax.Responders, Enumerable);=0A= =0A= Ajax.Responders.register({=0A= onCreate: function() { Ajax.activeRequestCount++ },=0A= onComplete: function() { Ajax.activeRequestCount-- }=0A= });=0A= =0A= Ajax.Base =3D Class.create({=0A= initialize: function(options) {=0A= this.options =3D {=0A= method: 'post',=0A= asynchronous: true,=0A= contentType: 'application/x-www-form-urlencoded',=0A= encoding: 'UTF-8',=0A= parameters: '',=0A= evalJSON: true,=0A= evalJS: true=0A= };=0A= Object.extend(this.options, options || { });=0A= =0A= this.options.method =3D this.options.method.toLowerCase();=0A= =0A= if (Object.isString(this.options.parameters))=0A= this.options.parameters =3D = this.options.parameters.toQueryParams();=0A= else if (Object.isHash(this.options.parameters))=0A= this.options.parameters =3D this.options.parameters.toObject();=0A= }=0A= });=0A= =0A= Ajax.Request =3D Class.create(Ajax.Base, {=0A= _complete: false,=0A= =0A= initialize: function($super, url, options) {=0A= $super(options);=0A= this.transport =3D Ajax.getTransport();=0A= this.request(url);=0A= },=0A= =0A= request: function(url) {=0A= this.url =3D url;=0A= this.method =3D this.options.method;=0A= var params =3D Object.clone(this.options.parameters);=0A= =0A= if (!['get', 'post'].include(this.method)) {=0A= // simulate other verbs over post=0A= params['_method'] =3D this.method;=0A= this.method =3D 'post';=0A= }=0A= =0A= this.parameters =3D params;=0A= =0A= if (params =3D Object.toQueryString(params)) {=0A= // when GET, append parameters to URL=0A= if (this.method =3D=3D 'get')=0A= this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A= else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A= params +=3D '&_=3D';=0A= }=0A= =0A= try {=0A= var response =3D new Ajax.Response(this);=0A= if (this.options.onCreate) this.options.onCreate(response);=0A= Ajax.Responders.dispatch('onCreate', this, response);=0A= =0A= this.transport.open(this.method.toUpperCase(), this.url,=0A= this.options.asynchronous);=0A= =0A= if (this.options.asynchronous) = this.respondToReadyState.bind(this).defer(1);=0A= =0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= this.setRequestHeaders();=0A= =0A= this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null;=0A= this.transport.send(this.body);=0A= =0A= /* Force Firefox to handle ready state 4 for synchronous requests = */=0A= if (!this.options.asynchronous && this.transport.overrideMimeType)=0A= this.onStateChange();=0A= =0A= }=0A= catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= onStateChange: function() {=0A= var readyState =3D this.transport.readyState;=0A= if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A= this.respondToReadyState(this.transport.readyState);=0A= },=0A= =0A= setRequestHeaders: function() {=0A= var headers =3D {=0A= 'X-Requested-With': 'XMLHttpRequest',=0A= 'X-Prototype-Version': Prototype.Version,=0A= 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*'=0A= };=0A= =0A= if (this.method =3D=3D 'post') {=0A= headers['Content-type'] =3D this.options.contentType +=0A= (this.options.encoding ? '; charset=3D' + this.options.encoding = : '');=0A= =0A= /* Force "Connection: close" for older Mozilla browsers to work=0A= * around a bug where XMLHttpRequest sends an incorrect=0A= * Content-length header. See Mozilla Bugzilla #246651.=0A= */=0A= if (this.transport.overrideMimeType &&=0A= (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005)=0A= headers['Connection'] =3D 'close';=0A= }=0A= =0A= // user-defined headers=0A= if (typeof this.options.requestHeaders =3D=3D 'object') {=0A= var extras =3D this.options.requestHeaders;=0A= =0A= if (Object.isFunction(extras.push))=0A= for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A= headers[extras[i]] =3D extras[i+1];=0A= else=0A= $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value });=0A= }=0A= =0A= for (var name in headers)=0A= this.transport.setRequestHeader(name, headers[name]);=0A= },=0A= =0A= success: function() {=0A= var status =3D this.getStatus();=0A= return !status || (status >=3D 200 && status < 300);=0A= },=0A= =0A= getStatus: function() {=0A= try {=0A= return this.transport.status || 0;=0A= } catch (e) { return 0 }=0A= },=0A= =0A= respondToReadyState: function(readyState) {=0A= var state =3D Ajax.Request.Events[readyState], response =3D new = Ajax.Response(this);=0A= =0A= if (state =3D=3D 'Complete') {=0A= try {=0A= this._complete =3D true;=0A= (this.options['on' + response.status]=0A= || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A= || Prototype.emptyFunction)(response, response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= var contentType =3D response.getHeader('Content-type');=0A= if (this.options.evalJS =3D=3D 'force'=0A= || (this.options.evalJS && this.isSameOrigin() && contentType=0A= && = contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s= *$/i)))=0A= this.evalResponse();=0A= }=0A= =0A= try {=0A= (this.options['on' + state] || Prototype.emptyFunction)(response, = response.headerJSON);=0A= Ajax.Responders.dispatch('on' + state, this, response, = response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= if (state =3D=3D 'Complete') {=0A= // avoid memory leak in MSIE: clean up=0A= this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A= }=0A= },=0A= =0A= isSameOrigin: function() {=0A= var m =3D this.url.match(/^\s*https?:\/\/[^\/]*/);=0A= return !m || (m[0] =3D=3D = '#{protocol}//#{domain}#{port}'.interpolate({=0A= protocol: location.protocol,=0A= domain: document.domain,=0A= port: location.port ? ':' + location.port : ''=0A= }));=0A= },=0A= =0A= getHeader: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name) || null;=0A= } catch (e) { return null }=0A= },=0A= =0A= evalResponse: function() {=0A= try {=0A= return eval((this.transport.responseText || '').unfilterJSON());=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= dispatchException: function(exception) {=0A= (this.options.onException || Prototype.emptyFunction)(this, = exception);=0A= Ajax.Responders.dispatch('onException', this, exception);=0A= }=0A= });=0A= =0A= Ajax.Request.Events =3D=0A= ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A= =0A= Ajax.Response =3D Class.create({=0A= initialize: function(request){=0A= this.request =3D request;=0A= var transport =3D this.transport =3D request.transport,=0A= readyState =3D this.readyState =3D transport.readyState;=0A= =0A= if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) = {=0A= this.status =3D this.getStatus();=0A= this.statusText =3D this.getStatusText();=0A= this.responseText =3D String.interpret(transport.responseText);=0A= this.headerJSON =3D this._getHeaderJSON();=0A= }=0A= =0A= if(readyState =3D=3D 4) {=0A= var xml =3D transport.responseXML;=0A= this.responseXML =3D Object.isUndefined(xml) ? null : xml;=0A= this.responseJSON =3D this._getResponseJSON();=0A= }=0A= },=0A= =0A= status: 0,=0A= statusText: '',=0A= =0A= getStatus: Ajax.Request.prototype.getStatus,=0A= =0A= getStatusText: function() {=0A= try {=0A= return this.transport.statusText || '';=0A= } catch (e) { return '' }=0A= },=0A= =0A= getHeader: Ajax.Request.prototype.getHeader,=0A= =0A= getAllHeaders: function() {=0A= try {=0A= return this.getAllResponseHeaders();=0A= } catch (e) { return null }=0A= },=0A= =0A= getResponseHeader: function(name) {=0A= return this.transport.getResponseHeader(name);=0A= },=0A= =0A= getAllResponseHeaders: function() {=0A= return this.transport.getAllResponseHeaders();=0A= },=0A= =0A= _getHeaderJSON: function() {=0A= var json =3D this.getHeader('X-JSON');=0A= if (!json) return null;=0A= json =3D decodeURIComponent(escape(json));=0A= try {=0A= return json.evalJSON(this.request.options.sanitizeJSON ||=0A= !this.request.isSameOrigin());=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= },=0A= =0A= _getResponseJSON: function() {=0A= var options =3D this.request.options;=0A= if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A= !(this.getHeader('Content-type') || = '').include('application/json')) ||=0A= this.responseText.blank())=0A= return null;=0A= try {=0A= return this.responseText.evalJSON(options.sanitizeJSON ||=0A= !this.request.isSameOrigin());=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= }=0A= });=0A= =0A= Ajax.Updater =3D Class.create(Ajax.Request, {=0A= initialize: function($super, container, url, options) {=0A= this.container =3D {=0A= success: (container.success || container),=0A= failure: (container.failure || (container.success ? null : = container))=0A= };=0A= =0A= options =3D Object.clone(options);=0A= var onComplete =3D options.onComplete;=0A= options.onComplete =3D (function(response, json) {=0A= this.updateContent(response.responseText);=0A= if (Object.isFunction(onComplete)) onComplete(response, json);=0A= }).bind(this);=0A= =0A= $super(url, options);=0A= },=0A= =0A= updateContent: function(responseText) {=0A= var receiver =3D this.container[this.success() ? 'success' : = 'failure'],=0A= options =3D this.options;=0A= =0A= if (!options.evalScripts) responseText =3D = responseText.stripScripts();=0A= =0A= if (receiver =3D $(receiver)) {=0A= if (options.insertion) {=0A= if (Object.isString(options.insertion)) {=0A= var insertion =3D { }; insertion[options.insertion] =3D = responseText;=0A= receiver.insert(insertion);=0A= }=0A= else options.insertion(receiver, responseText);=0A= }=0A= else receiver.update(responseText);=0A= }=0A= }=0A= });=0A= =0A= Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A= initialize: function($super, container, url, options) {=0A= $super(options);=0A= this.onComplete =3D this.options.onComplete;=0A= =0A= this.frequency =3D (this.options.frequency || 2);=0A= this.decay =3D (this.options.decay || 1);=0A= =0A= this.updater =3D { };=0A= this.container =3D container;=0A= this.url =3D url;=0A= =0A= this.start();=0A= },=0A= =0A= start: function() {=0A= this.options.onComplete =3D this.updateComplete.bind(this);=0A= this.onTimerEvent();=0A= },=0A= =0A= stop: function() {=0A= this.updater.options.onComplete =3D undefined;=0A= clearTimeout(this.timer);=0A= (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A= },=0A= =0A= updateComplete: function(response) {=0A= if (this.options.decay) {=0A= this.decay =3D (response.responseText =3D=3D this.lastText ?=0A= this.decay * this.options.decay : 1);=0A= =0A= this.lastText =3D response.responseText;=0A= }=0A= this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * = this.frequency);=0A= },=0A= =0A= onTimerEvent: function() {=0A= this.updater =3D new Ajax.Updater(this.container, this.url, = this.options);=0A= }=0A= });=0A= function $(element) {=0A= if (arguments.length > 1) {=0A= for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++)=0A= elements.push($(arguments[i]));=0A= return elements;=0A= }=0A= if (Object.isString(element))=0A= element =3D document.getElementById(element);=0A= return Element.extend(element);=0A= }=0A= =0A= if (Prototype.BrowserFeatures.XPath) {=0A= document._getElementsByXPath =3D function(expression, parentElement) {=0A= var results =3D [];=0A= var query =3D document.evaluate(expression, $(parentElement) || = document,=0A= null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A= for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A= results.push(Element.extend(query.snapshotItem(i)));=0A= return results;=0A= };=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!window.Node) var Node =3D { };=0A= =0A= if (!Node.ELEMENT_NODE) {=0A= // DOM level 2 ECMAScript Language Binding=0A= Object.extend(Node, {=0A= ELEMENT_NODE: 1,=0A= ATTRIBUTE_NODE: 2,=0A= TEXT_NODE: 3,=0A= CDATA_SECTION_NODE: 4,=0A= ENTITY_REFERENCE_NODE: 5,=0A= ENTITY_NODE: 6,=0A= PROCESSING_INSTRUCTION_NODE: 7,=0A= COMMENT_NODE: 8,=0A= DOCUMENT_NODE: 9,=0A= DOCUMENT_TYPE_NODE: 10,=0A= DOCUMENT_FRAGMENT_NODE: 11,=0A= NOTATION_NODE: 12=0A= });=0A= }=0A= =0A= (function() {=0A= var element =3D this.Element;=0A= this.Element =3D function(tagName, attributes) {=0A= attributes =3D attributes || { };=0A= tagName =3D tagName.toLowerCase();=0A= var cache =3D Element.cache;=0A= if (Prototype.Browser.IE && attributes.name) {=0A= tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A= delete attributes.name;=0A= return Element.writeAttribute(document.createElement(tagName), = attributes);=0A= }=0A= if (!cache[tagName]) cache[tagName] =3D = Element.extend(document.createElement(tagName));=0A= return Element.writeAttribute(cache[tagName].cloneNode(false), = attributes);=0A= };=0A= Object.extend(this.Element, element || { });=0A= if (element) this.Element.prototype =3D element.prototype;=0A= }).call(window);=0A= =0A= Element.cache =3D { };=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 =3D $(element);=0A= element.style.display =3D 'none';=0A= return element;=0A= },=0A= =0A= show: function(element) {=0A= element =3D $(element);=0A= element.style.display =3D '';=0A= return element;=0A= },=0A= =0A= remove: function(element) {=0A= element =3D $(element);=0A= element.parentNode.removeChild(element);=0A= return element;=0A= },=0A= =0A= update: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) return = element.update().insert(content);=0A= content =3D Object.toHTML(content);=0A= element.innerHTML =3D content.stripScripts();=0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= },=0A= =0A= replace: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= else if (!Object.isElement(content)) {=0A= content =3D Object.toHTML(content);=0A= var range =3D element.ownerDocument.createRange();=0A= range.selectNode(element);=0A= content.evalScripts.bind(content).defer();=0A= content =3D range.createContextualFragment(content.stripScripts());=0A= }=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= },=0A= =0A= insert: function(element, insertions) {=0A= element =3D $(element);=0A= =0A= if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A= Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML)))=0A= insertions =3D {bottom:insertions};=0A= =0A= var content, insert, tagName, childNodes;=0A= =0A= for (var position in insertions) {=0A= content =3D insertions[position];=0A= position =3D position.toLowerCase();=0A= insert =3D Element._insertionTranslations[position];=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= insert(element, content);=0A= continue;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= =0A= tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A= ? element.parentNode : element).tagName.toUpperCase();=0A= =0A= childNodes =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= =0A= if (position =3D=3D 'top' || position =3D=3D 'after') = childNodes.reverse();=0A= childNodes.each(insert.curry(element));=0A= =0A= content.evalScripts.bind(content).defer();=0A= }=0A= =0A= return element;=0A= },=0A= =0A= wrap: function(element, wrapper, attributes) {=0A= element =3D $(element);=0A= if (Object.isElement(wrapper))=0A= $(wrapper).writeAttribute(attributes || { });=0A= else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, = attributes);=0A= else wrapper =3D new Element('div', wrapper);=0A= if (element.parentNode)=0A= element.parentNode.replaceChild(wrapper, element);=0A= wrapper.appendChild(element);=0A= return wrapper;=0A= },=0A= =0A= inspect: function(element) {=0A= element =3D $(element);=0A= var result =3D '<' + element.tagName.toLowerCase();=0A= $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A= var property =3D pair.first(), attribute =3D pair.last();=0A= var value =3D (element[property] || '').toString();=0A= if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true);=0A= });=0A= return result + '>';=0A= },=0A= =0A= recursivelyCollect: function(element, property) {=0A= element =3D $(element);=0A= var elements =3D [];=0A= while (element =3D element[property])=0A= if (element.nodeType =3D=3D 1)=0A= elements.push(Element.extend(element));=0A= return elements;=0A= },=0A= =0A= ancestors: function(element) {=0A= return $(element).recursivelyCollect('parentNode');=0A= },=0A= =0A= descendants: function(element) {=0A= return $(element).select("*");=0A= },=0A= =0A= firstDescendant: function(element) {=0A= element =3D $(element).firstChild;=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= return $(element);=0A= },=0A= =0A= immediateDescendants: function(element) {=0A= if (!(element =3D $(element).firstChild)) return [];=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= if (element) return [element].concat($(element).nextSiblings());=0A= return [];=0A= },=0A= =0A= previousSiblings: function(element) {=0A= return $(element).recursivelyCollect('previousSibling');=0A= },=0A= =0A= nextSiblings: function(element) {=0A= return $(element).recursivelyCollect('nextSibling');=0A= },=0A= =0A= siblings: function(element) {=0A= element =3D $(element);=0A= return = element.previousSiblings().reverse().concat(element.nextSiblings());=0A= },=0A= =0A= match: function(element, selector) {=0A= if (Object.isString(selector))=0A= selector =3D new Selector(selector);=0A= return selector.match($(element));=0A= },=0A= =0A= up: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return $(element.parentNode);=0A= var ancestors =3D element.ancestors();=0A= return Object.isNumber(expression) ? ancestors[expression] :=0A= Selector.findElement(ancestors, expression, index);=0A= },=0A= =0A= down: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return element.firstDescendant();=0A= return Object.isNumber(expression) ? = element.descendants()[expression] :=0A= Element.select(element, expression)[index || 0];=0A= },=0A= =0A= previous: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element));=0A= var previousSiblings =3D element.previousSiblings();=0A= return Object.isNumber(expression) ? previousSiblings[expression] :=0A= Selector.findElement(previousSiblings, expression, index);=0A= },=0A= =0A= next: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element));=0A= var nextSiblings =3D element.nextSiblings();=0A= return Object.isNumber(expression) ? nextSiblings[expression] :=0A= Selector.findElement(nextSiblings, expression, index);=0A= },=0A= =0A= select: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element, args);=0A= },=0A= =0A= adjacent: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element.parentNode, = args).without(element);=0A= },=0A= =0A= identify: function(element) {=0A= element =3D $(element);=0A= var id =3D element.readAttribute('id'), self =3D arguments.callee;=0A= if (id) return id;=0A= do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));=0A= element.writeAttribute('id', id);=0A= return id;=0A= },=0A= =0A= readAttribute: function(element, name) {=0A= element =3D $(element);=0A= if (Prototype.Browser.IE) {=0A= var t =3D Element._attributeTranslations.read;=0A= if (t.values[name]) return t.values[name](element, name);=0A= if (t.names[name]) name =3D t.names[name];=0A= if (name.include(':')) {=0A= return (!element.attributes || !element.attributes[name]) ? null = :=0A= element.attributes[name].value;=0A= }=0A= }=0A= return element.getAttribute(name);=0A= },=0A= =0A= writeAttribute: function(element, name, value) {=0A= element =3D $(element);=0A= var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A= =0A= if (typeof name =3D=3D 'object') attributes =3D name;=0A= else attributes[name] =3D Object.isUndefined(value) ? true : value;=0A= =0A= for (var attr in attributes) {=0A= name =3D t.names[attr] || attr;=0A= value =3D attributes[attr];=0A= if (t.values[attr]) name =3D t.values[attr](element, value);=0A= if (value =3D=3D=3D false || value =3D=3D=3D null)=0A= element.removeAttribute(name);=0A= else if (value =3D=3D=3D true)=0A= element.setAttribute(name, name);=0A= else element.setAttribute(name, value);=0A= }=0A= return element;=0A= },=0A= =0A= getHeight: function(element) {=0A= return $(element).getDimensions().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= return (elementClassName.length > 0 && (elementClassName =3D=3D = className ||=0A= new RegExp("(^|\\s)" + className + = "(\\s|$)").test(elementClassName)));=0A= },=0A= =0A= addClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= if (!element.hasClassName(className))=0A= element.className +=3D (element.className ? ' ' : '') + className;=0A= return element;=0A= },=0A= =0A= removeClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= element.className =3D element.className.replace(=0A= new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A= return element;=0A= },=0A= =0A= toggleClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= return element[element.hasClassName(className) ?=0A= 'removeClassName' : 'addClassName'](className);=0A= },=0A= =0A= // removes whitespace-only text node children=0A= cleanWhitespace: function(element) {=0A= element =3D $(element);=0A= var node =3D element.firstChild;=0A= while (node) {=0A= var nextNode =3D node.nextSibling;=0A= if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A= element.removeChild(node);=0A= node =3D nextNode;=0A= }=0A= return element;=0A= },=0A= =0A= empty: function(element) {=0A= return $(element).innerHTML.blank();=0A= },=0A= =0A= descendantOf: function(element, ancestor) {=0A= element =3D $(element), ancestor =3D $(ancestor);=0A= =0A= if (element.compareDocumentPosition)=0A= return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A= =0A= if (ancestor.contains)=0A= return ancestor.contains(element) && ancestor !=3D=3D element;=0A= =0A= while (element =3D element.parentNode)=0A= if (element =3D=3D ancestor) return true;=0A= =0A= return false;=0A= },=0A= =0A= scrollTo: function(element) {=0A= element =3D $(element);=0A= var pos =3D element.cumulativeOffset();=0A= window.scrollTo(pos[0], pos[1]);=0A= return element;=0A= },=0A= =0A= getStyle: function(element, style) {=0A= element =3D $(element);=0A= style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value || value =3D=3D 'auto') {=0A= var css =3D document.defaultView.getComputedStyle(element, null);=0A= value =3D css ? css[style] : null;=0A= }=0A= if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A= return value =3D=3D 'auto' ? null : value;=0A= },=0A= =0A= getOpacity: function(element) {=0A= return $(element).getStyle('opacity');=0A= },=0A= =0A= setStyle: function(element, styles) {=0A= element =3D $(element);=0A= var elementStyle =3D element.style, match;=0A= if (Object.isString(styles)) {=0A= element.style.cssText +=3D ';' + styles;=0A= return styles.include('opacity') ?=0A= element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : = element;=0A= }=0A= for (var property in styles)=0A= if (property =3D=3D 'opacity') = element.setOpacity(styles[property]);=0A= else=0A= elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ?=0A= (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : = 'styleFloat') :=0A= property] =3D styles[property];=0A= =0A= return element;=0A= },=0A= =0A= setOpacity: function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= return element;=0A= },=0A= =0A= getDimensions: function(element) {=0A= element =3D $(element);=0A= var display =3D element.getStyle('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 (Prototype.Browser.Opera) {=0A= element.style.top =3D 0;=0A= element.style.left =3D 0;=0A= }=0A= }=0A= return element;=0A= },=0A= =0A= undoPositioned: function(element) {=0A= element =3D $(element);=0A= if (element._madePositioned) {=0A= element._madePositioned =3D undefined;=0A= element.style.position =3D=0A= element.style.top =3D=0A= element.style.left =3D=0A= element.style.bottom =3D=0A= element.style.right =3D '';=0A= }=0A= return element;=0A= },=0A= =0A= makeClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return element;=0A= element._overflow =3D Element.getStyle(element, 'overflow') || = 'auto';=0A= if (element._overflow !=3D=3D 'hidden')=0A= element.style.overflow =3D 'hidden';=0A= return element;=0A= },=0A= =0A= undoClipping: function(element) {=0A= element =3D $(element);=0A= if (!element._overflow) return element;=0A= element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow;=0A= element._overflow =3D null;=0A= return element;=0A= },=0A= =0A= cumulativeOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= positionedOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= if (element) {=0A= if (element.tagName.toUpperCase() =3D=3D 'BODY') break;=0A= var p =3D Element.getStyle(element, 'position');=0A= if (p !=3D=3D 'static') break;=0A= }=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'absolute') return element;=0A= // Position.prepare(); // To be done manually by Scripty when it = needs it.=0A= =0A= var offsets =3D element.positionedOffset();=0A= var top =3D offsets[1];=0A= var left =3D offsets[0];=0A= var width =3D element.clientWidth;=0A= var height =3D element.clientHeight;=0A= =0A= element._originalLeft =3D left - parseFloat(element.style.left || = 0);=0A= element._originalTop =3D top - parseFloat(element.style.top || = 0);=0A= element._originalWidth =3D element.style.width;=0A= element._originalHeight =3D element.style.height;=0A= =0A= element.style.position =3D 'absolute';=0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.width =3D width + 'px';=0A= element.style.height =3D height + 'px';=0A= return element;=0A= },=0A= =0A= relativize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'relative') return element;=0A= // Position.prepare(); // To be done manually by Scripty when it = needs it.=0A= =0A= element.style.position =3D 'relative';=0A= var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0);=0A= var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0);=0A= =0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.height =3D element._originalHeight;=0A= element.style.width =3D element._originalWidth;=0A= return element;=0A= },=0A= =0A= cumulativeScrollOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.scrollTop || 0;=0A= valueL +=3D element.scrollLeft || 0;=0A= element =3D element.parentNode;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= getOffsetParent: function(element) {=0A= if (element.offsetParent) return $(element.offsetParent);=0A= if (element =3D=3D document.body) return $(element);=0A= =0A= while ((element =3D element.parentNode) && element !=3D = document.body)=0A= if (Element.getStyle(element, 'position') !=3D 'static')=0A= return $(element);=0A= =0A= return $(document.body);=0A= },=0A= =0A= viewportOffset: function(forElement) {=0A= var valueT =3D 0, valueL =3D 0;=0A= =0A= var element =3D forElement;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= =0A= // Safari fix=0A= if (element.offsetParent =3D=3D document.body &&=0A= Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A= =0A= } while (element =3D element.offsetParent);=0A= =0A= element =3D forElement;=0A= do {=0A= if (!Prototype.Browser.Opera || (element.tagName && = (element.tagName.toUpperCase() =3D=3D 'BODY'))) {=0A= valueT -=3D element.scrollTop || 0;=0A= valueL -=3D element.scrollLeft || 0;=0A= }=0A= } while (element =3D element.parentNode);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= clonePosition: function(element, source) {=0A= var options =3D Object.extend({=0A= setLeft: true,=0A= setTop: true,=0A= setWidth: true,=0A= setHeight: true,=0A= offsetTop: 0,=0A= offsetLeft: 0=0A= }, arguments[2] || { });=0A= =0A= // find page position of source=0A= source =3D $(source);=0A= var p =3D source.viewportOffset();=0A= =0A= // find coordinate system to use=0A= element =3D $(element);=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(element, 'position') =3D=3D 'absolute') {=0A= parent =3D element.getOffsetParent();=0A= delta =3D parent.viewportOffset();=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) element.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px';=0A= if (options.setTop) element.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px';=0A= if (options.setWidth) element.style.width =3D source.offsetWidth + = 'px';=0A= if (options.setHeight) element.style.height =3D source.offsetHeight = + 'px';=0A= return element;=0A= }=0A= };=0A= =0A= Element.Methods.identify.counter =3D 1;=0A= =0A= Object.extend(Element.Methods, {=0A= getElementsBySelector: Element.Methods.select,=0A= childElements: Element.Methods.immediateDescendants=0A= });=0A= =0A= Element._attributeTranslations =3D {=0A= write: {=0A= names: {=0A= className: 'class',=0A= htmlFor: 'for'=0A= },=0A= values: { }=0A= }=0A= };=0A= =0A= if (Prototype.Browser.Opera) {=0A= Element.Methods.getStyle =3D Element.Methods.getStyle.wrap(=0A= function(proceed, element, style) {=0A= switch (style) {=0A= case 'left': case 'top': case 'right': case 'bottom':=0A= if (proceed(element, 'position') =3D=3D=3D 'static') return = null;=0A= case 'height': case 'width':=0A= // returns '0px' for hidden elements; we want it to return null=0A= if (!Element.visible(element)) return null;=0A= =0A= // returns the border-box dimensions rather than the = content-box=0A= // dimensions, so we subtract padding and borders from the = value=0A= var dim =3D parseInt(proceed(element, style), 10);=0A= =0A= if (dim !=3D=3D element['offset' + style.capitalize()])=0A= return dim + 'px';=0A= =0A= var properties;=0A= if (style =3D=3D=3D 'height') {=0A= properties =3D ['border-top-width', 'padding-top',=0A= 'padding-bottom', 'border-bottom-width'];=0A= }=0A= else {=0A= properties =3D ['border-left-width', 'padding-left',=0A= 'padding-right', 'border-right-width'];=0A= }=0A= return properties.inject(dim, function(memo, property) {=0A= var val =3D proceed(element, property);=0A= return val =3D=3D=3D null ? memo : memo - parseInt(val, 10);=0A= }) + 'px';=0A= default: return proceed(element, style);=0A= }=0A= }=0A= );=0A= =0A= Element.Methods.readAttribute =3D Element.Methods.readAttribute.wrap(=0A= function(proceed, element, attribute) {=0A= if (attribute =3D=3D=3D 'title') return element.title;=0A= return proceed(element, attribute);=0A= }=0A= );=0A= }=0A= =0A= else if (Prototype.Browser.IE) {=0A= // IE doesn't report offsets correctly for static elements, so we = change them=0A= // to "relative" to get the values, then change them back.=0A= Element.Methods.getOffsetParent =3D = Element.Methods.getOffsetParent.wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= // IE throws an error if element is not in document=0A= try { element.offsetParent }=0A= catch(e) { return $(document.body) }=0A= var position =3D element.getStyle('position');=0A= if (position !=3D=3D 'static') return proceed(element);=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= =0A= $w('positionedOffset viewportOffset').each(function(method) {=0A= Element.Methods[method] =3D Element.Methods[method].wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= try { element.offsetParent }=0A= catch(e) { return Element._returnOffset(0,0) }=0A= var position =3D element.getStyle('position');=0A= if (position !=3D=3D 'static') return proceed(element);=0A= // Trigger hasLayout on the offset parent so that IE6 reports=0A= // accurate offsetTop and offsetLeft values for position: fixed.=0A= var offsetParent =3D element.getOffsetParent();=0A= if (offsetParent && offsetParent.getStyle('position') =3D=3D=3D = 'fixed')=0A= offsetParent.setStyle({ zoom: 1 });=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= });=0A= =0A= Element.Methods.cumulativeOffset =3D = Element.Methods.cumulativeOffset.wrap(=0A= function(proceed, element) {=0A= try { element.offsetParent }=0A= catch(e) { return Element._returnOffset(0,0) }=0A= return proceed(element);=0A= }=0A= );=0A= =0A= Element.Methods.getStyle =3D function(element, style) {=0A= element =3D $(element);=0A= style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value && element.currentStyle) value =3D = element.currentStyle[style];=0A= =0A= if (style =3D=3D 'opacity') {=0A= if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/))=0A= if (value[1]) return parseFloat(value[1]) / 100;=0A= return 1.0;=0A= }=0A= =0A= if (value =3D=3D 'auto') {=0A= if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none'))=0A= return element['offset' + style.capitalize()] + 'px';=0A= return null;=0A= }=0A= return value;=0A= };=0A= =0A= Element.Methods.setOpacity =3D function(element, value) {=0A= function stripAlpha(filter){=0A= return filter.replace(/alpha\([^\)]*\)/gi,'');=0A= }=0A= element =3D $(element);=0A= var currentStyle =3D element.currentStyle;=0A= if ((currentStyle && !currentStyle.hasLayout) ||=0A= (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A= element.style.zoom =3D 1;=0A= =0A= var filter =3D element.getStyle('filter'), style =3D element.style;=0A= if (value =3D=3D 1 || value =3D=3D=3D '') {=0A= (filter =3D stripAlpha(filter)) ?=0A= style.filter =3D filter : style.removeAttribute('filter');=0A= return element;=0A= } else if (value < 0.00001) value =3D 0;=0A= style.filter =3D stripAlpha(filter) +=0A= 'alpha(opacity=3D' + (value * 100) + ')';=0A= return element;=0A= };=0A= =0A= Element._attributeTranslations =3D {=0A= read: {=0A= names: {=0A= 'class': 'className',=0A= 'for': 'htmlFor'=0A= },=0A= values: {=0A= _getAttr: function(element, attribute) {=0A= return element.getAttribute(attribute, 2);=0A= },=0A= _getAttrNode: function(element, attribute) {=0A= var node =3D element.getAttributeNode(attribute);=0A= return node ? node.value : "";=0A= },=0A= _getEv: function(element, attribute) {=0A= attribute =3D element.getAttribute(attribute);=0A= return attribute ? attribute.toString().slice(23, -2) : null;=0A= },=0A= _flag: function(element, attribute) {=0A= return $(element).hasAttribute(attribute) ? attribute : null;=0A= },=0A= style: function(element) {=0A= return element.style.cssText.toLowerCase();=0A= },=0A= title: function(element) {=0A= return element.title;=0A= }=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.write =3D {=0A= names: Object.extend({=0A= cellpadding: 'cellPadding',=0A= cellspacing: 'cellSpacing'=0A= }, Element._attributeTranslations.read.names),=0A= values: {=0A= checked: function(element, value) {=0A= element.checked =3D !!value;=0A= },=0A= =0A= style: function(element, value) {=0A= element.style.cssText =3D value ? value : '';=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.has =3D {};=0A= =0A= $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A= 'encType maxLength readOnly longDesc = frameBorder').each(function(attr) {=0A= Element._attributeTranslations.write.names[attr.toLowerCase()] =3D = attr;=0A= Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A= });=0A= =0A= (function(v) {=0A= Object.extend(v, {=0A= href: v._getAttr,=0A= src: v._getAttr,=0A= type: v._getAttr,=0A= action: v._getAttrNode,=0A= disabled: v._flag,=0A= checked: v._flag,=0A= readonly: v._flag,=0A= multiple: v._flag,=0A= onload: v._getEv,=0A= onunload: v._getEv,=0A= onclick: v._getEv,=0A= ondblclick: v._getEv,=0A= onmousedown: v._getEv,=0A= onmouseup: v._getEv,=0A= onmouseover: v._getEv,=0A= onmousemove: v._getEv,=0A= onmouseout: v._getEv,=0A= onfocus: v._getEv,=0A= onblur: v._getEv,=0A= onkeypress: v._getEv,=0A= onkeydown: v._getEv,=0A= onkeyup: v._getEv,=0A= onsubmit: v._getEv,=0A= onreset: v._getEv,=0A= onselect: v._getEv,=0A= onchange: v._getEv=0A= });=0A= })(Element._attributeTranslations.read.values);=0A= }=0A= =0A= else if (Prototype.Browser.Gecko && = /rv:1\.8\.0/.test(navigator.userAgent)) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A= (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A= return element;=0A= };=0A= }=0A= =0A= else if (Prototype.Browser.WebKit) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= =0A= if (value =3D=3D 1)=0A= if(element.tagName.toUpperCase() =3D=3D 'IMG' && element.width) {=0A= element.width++; element.width--;=0A= } else try {=0A= var n =3D document.createTextNode(' ');=0A= element.appendChild(n);=0A= element.removeChild(n);=0A= } catch (e) { }=0A= =0A= return element;=0A= };=0A= =0A= // Safari returns margins on body which is incorrect if the child is = absolutely=0A= // positioned. For performance reasons, redefine = Element#cumulativeOffset for=0A= // KHTML/WebKit only.=0A= Element.Methods.cumulativeOffset =3D function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= if (element.offsetParent =3D=3D document.body)=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break;=0A= =0A= element =3D element.offsetParent;=0A= } while (element);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= };=0A= }=0A= =0A= if (Prototype.Browser.IE || Prototype.Browser.Opera) {=0A= // IE and Opera are missing .innerHTML support for TABLE-related and = SELECT elements=0A= Element.Methods.update =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) return = element.update().insert(content);=0A= =0A= content =3D Object.toHTML(content);=0A= var tagName =3D element.tagName.toUpperCase();=0A= =0A= if (tagName in Element._insertionTranslations.tags) {=0A= $A(element.childNodes).each(function(node) { = element.removeChild(node) });=0A= Element._getContentFromAnonymousElement(tagName, = content.stripScripts())=0A= .each(function(node) { element.appendChild(node) });=0A= }=0A= else element.innerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= if ('outerHTML' in document.createElement('div')) {=0A= Element.Methods.replace =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= var parent =3D element.parentNode, tagName =3D = parent.tagName.toUpperCase();=0A= =0A= if (Element._insertionTranslations.tags[tagName]) {=0A= var nextSibling =3D element.next();=0A= var fragments =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= parent.removeChild(element);=0A= if (nextSibling)=0A= fragments.each(function(node) { parent.insertBefore(node, = nextSibling) });=0A= else=0A= fragments.each(function(node) { parent.appendChild(node) });=0A= }=0A= else element.outerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= Element._returnOffset =3D function(l, t) {=0A= var result =3D [l, t];=0A= result.left =3D l;=0A= result.top =3D t;=0A= return result;=0A= };=0A= =0A= Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A= var div =3D new Element('div'), t =3D = Element._insertionTranslations.tags[tagName];=0A= if (t) {=0A= div.innerHTML =3D t[0] + html + t[1];=0A= t[2].times(function() { div =3D div.firstChild });=0A= } else div.innerHTML =3D html;=0A= return $A(div.childNodes);=0A= };=0A= =0A= Element._insertionTranslations =3D {=0A= before: function(element, node) {=0A= element.parentNode.insertBefore(node, element);=0A= },=0A= top: function(element, node) {=0A= element.insertBefore(node, element.firstChild);=0A= },=0A= bottom: function(element, node) {=0A= element.appendChild(node);=0A= },=0A= after: function(element, node) {=0A= element.parentNode.insertBefore(node, element.nextSibling);=0A= },=0A= tags: {=0A= TABLE: ['<table>', '</table>', 1],=0A= TBODY: ['<table><tbody>', '</tbody></table>', 2],=0A= TR: ['<table><tbody><tr>', '</tr></tbody></table>', 3],=0A= TD: ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],=0A= SELECT: ['<select>', '</select>', 1]=0A= }=0A= };=0A= =0A= (function() {=0A= Object.extend(this.tags, {=0A= THEAD: this.tags.TBODY,=0A= TFOOT: this.tags.TBODY,=0A= TH: this.tags.TD=0A= });=0A= }).call(Element._insertionTranslations);=0A= =0A= Element.Methods.Simulated =3D {=0A= hasAttribute: function(element, attribute) {=0A= attribute =3D Element._attributeTranslations.has[attribute] || = attribute;=0A= var node =3D $(element).getAttributeNode(attribute);=0A= return !!(node && node.specified);=0A= }=0A= };=0A= =0A= Element.Methods.ByTag =3D { };=0A= =0A= Object.extend(Element, Element.Methods);=0A= =0A= if (!Prototype.BrowserFeatures.ElementExtensions &&=0A= document.createElement('div')['__proto__']) {=0A= window.HTMLElement =3D { };=0A= window.HTMLElement.prototype =3D = document.createElement('div')['__proto__'];=0A= Prototype.BrowserFeatures.ElementExtensions =3D true;=0A= }=0A= =0A= Element.extend =3D (function() {=0A= if (Prototype.BrowserFeatures.SpecificElementExtensions)=0A= return Prototype.K;=0A= =0A= var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A= =0A= var extend =3D Object.extend(function(element) {=0A= if (!element || element._extendedByPrototype ||=0A= element.nodeType !=3D 1 || element =3D=3D window) return element;=0A= =0A= var methods =3D Object.clone(Methods),=0A= tagName =3D element.tagName.toUpperCase(), property, value;=0A= =0A= // extend methods for specific tags=0A= if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A= =0A= for (property in methods) {=0A= value =3D methods[property];=0A= if (Object.isFunction(value) && !(property in element))=0A= element[property] =3D value.methodize();=0A= }=0A= =0A= element._extendedByPrototype =3D Prototype.emptyFunction;=0A= return element;=0A= =0A= }, {=0A= refresh: function() {=0A= // extend methods for all tags (Safari doesn't need this)=0A= if (!Prototype.BrowserFeatures.ElementExtensions) {=0A= Object.extend(Methods, Element.Methods);=0A= Object.extend(Methods, Element.Methods.Simulated);=0A= }=0A= }=0A= });=0A= =0A= extend.refresh();=0A= return extend;=0A= })();=0A= =0A= Element.hasAttribute =3D function(element, attribute) {=0A= if (element.hasAttribute) return element.hasAttribute(attribute);=0A= return Element.Methods.Simulated.hasAttribute(element, attribute);=0A= };=0A= =0A= Element.addMethods =3D function(methods) {=0A= var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A= =0A= if (!methods) {=0A= Object.extend(Form, Form.Methods);=0A= Object.extend(Form.Element, Form.Element.Methods);=0A= Object.extend(Element.Methods.ByTag, {=0A= "FORM": Object.clone(Form.Methods),=0A= "INPUT": Object.clone(Form.Element.Methods),=0A= "SELECT": Object.clone(Form.Element.Methods),=0A= "TEXTAREA": Object.clone(Form.Element.Methods)=0A= });=0A= }=0A= =0A= if (arguments.length =3D=3D 2) {=0A= var tagName =3D methods;=0A= methods =3D arguments[1];=0A= }=0A= =0A= if (!tagName) Object.extend(Element.Methods, methods || { });=0A= else {=0A= if (Object.isArray(tagName)) tagName.each(extend);=0A= else extend(tagName);=0A= }=0A= =0A= function extend(tagName) {=0A= tagName =3D tagName.toUpperCase();=0A= if (!Element.Methods.ByTag[tagName])=0A= Element.Methods.ByTag[tagName] =3D { };=0A= Object.extend(Element.Methods.ByTag[tagName], methods);=0A= }=0A= =0A= function copy(methods, destination, onlyIfAbsent) {=0A= onlyIfAbsent =3D onlyIfAbsent || false;=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (!Object.isFunction(value)) continue;=0A= if (!onlyIfAbsent || !(property in destination))=0A= destination[property] =3D value.methodize();=0A= }=0A= }=0A= =0A= function findDOMClass(tagName) {=0A= var klass;=0A= var trans =3D {=0A= "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A= "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList",=0A= "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading",=0A= "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A= "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION":=0A= "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A= "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR":=0A= "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A= "FrameSet", "IFRAME": "IFrame"=0A= };=0A= if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A= if (window[klass]) return window[klass];=0A= =0A= window[klass] =3D { };=0A= window[klass].prototype =3D = document.createElement(tagName)['__proto__'];=0A= return window[klass];=0A= }=0A= =0A= if (F.ElementExtensions) {=0A= copy(Element.Methods, HTMLElement.prototype);=0A= copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A= }=0A= =0A= if (F.SpecificElementExtensions) {=0A= for (var tag in Element.Methods.ByTag) {=0A= var klass =3D findDOMClass(tag);=0A= if (Object.isUndefined(klass)) continue;=0A= copy(T[tag], klass.prototype);=0A= }=0A= }=0A= =0A= Object.extend(Element, Element.Methods);=0A= delete Element.ByTag;=0A= =0A= if (Element.extend.refresh) Element.extend.refresh();=0A= Element.cache =3D { };=0A= };=0A= =0A= document.viewport =3D {=0A= getDimensions: function() {=0A= var dimensions =3D { }, B =3D Prototype.Browser;=0A= $w('width height').each(function(d) {=0A= var D =3D d.capitalize();=0A= if (B.WebKit && !document.evaluate) {=0A= // Safari <3.0 needs self.innerWidth/Height=0A= dimensions[d] =3D self['inner' + D];=0A= } else if (B.Opera && parseFloat(window.opera.version()) < 9.5) {=0A= // Opera <9.5 needs document.body.clientWidth/Height=0A= dimensions[d] =3D document.body['client' + D]=0A= } else {=0A= dimensions[d] =3D document.documentElement['client' + D];=0A= }=0A= });=0A= return dimensions;=0A= },=0A= =0A= getWidth: function() {=0A= return this.getDimensions().width;=0A= },=0A= =0A= getHeight: function() {=0A= return this.getDimensions().height;=0A= },=0A= =0A= getScrollOffsets: function() {=0A= return Element._returnOffset(=0A= window.pageXOffset || document.documentElement.scrollLeft || = document.body.scrollLeft,=0A= window.pageYOffset || document.documentElement.scrollTop || = document.body.scrollTop);=0A= }=0A= };=0A= /* Portions of the Selector class are derived from Jack Slocum's = DomQuery,=0A= * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style=0A= * license. Please see http://www.yui-ext.com/ for more information. */=0A= =0A= var Selector =3D Class.create({=0A= initialize: function(expression) {=0A= this.expression =3D expression.strip();=0A= =0A= if (this.shouldUseSelectorsAPI()) {=0A= this.mode =3D 'selectorsAPI';=0A= } else if (this.shouldUseXPath()) {=0A= this.mode =3D 'xpath';=0A= this.compileXPathMatcher();=0A= } else {=0A= this.mode =3D "normal";=0A= this.compileMatcher();=0A= }=0A= =0A= },=0A= =0A= shouldUseXPath: function() {=0A= if (!Prototype.BrowserFeatures.XPath) return false;=0A= =0A= var e =3D this.expression;=0A= =0A= // Safari 3 chokes on :*-of-type and :empty=0A= if (Prototype.Browser.WebKit &&=0A= (e.include("-of-type") || e.include(":empty")))=0A= return false;=0A= =0A= // XPath can't do namespaced attributes, nor can it read=0A= // the "checked" property from DOM nodes=0A= if ((/(\[[\w-]*?:|:checked)/).test(e))=0A= return false;=0A= =0A= return true;=0A= },=0A= =0A= shouldUseSelectorsAPI: function() {=0A= if (!Prototype.BrowserFeatures.SelectorsAPI) return false;=0A= =0A= if (!Selector._div) Selector._div =3D new Element('div');=0A= =0A= // Make sure the browser treats the selector as valid. Test on an=0A= // isolated element to minimize cost of this check.=0A= try {=0A= Selector._div.querySelector(this.expression);=0A= } catch(e) {=0A= return false;=0A= }=0A= =0A= return true;=0A= },=0A= =0A= compileMatcher: function() {=0A= var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers,=0A= c =3D Selector.criteria, le, p, m;=0A= =0A= if (Selector._cache[e]) {=0A= this.matcher =3D Selector._cache[e];=0A= return;=0A= }=0A= =0A= this.matcher =3D ["this.matcher =3D function(root) {",=0A= "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"];=0A= =0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= p =3D ps[i];=0A= if (m =3D e.match(p)) {=0A= this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :=0A= new Template(c[i]).evaluate(m));=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= =0A= this.matcher.push("return h.unique(n);\n}");=0A= eval(this.matcher.join('\n'));=0A= Selector._cache[this.expression] =3D this.matcher;=0A= },=0A= =0A= compileXPathMatcher: function() {=0A= var e =3D this.expression, ps =3D Selector.patterns,=0A= x =3D Selector.xpath, le, m;=0A= =0A= if (Selector._cache[e]) {=0A= this.xpath =3D Selector._cache[e]; return;=0A= }=0A= =0A= this.matcher =3D ['.//*'];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= if (m =3D e.match(ps[i])) {=0A= this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :=0A= new Template(x[i]).evaluate(m));=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= =0A= this.xpath =3D this.matcher.join('');=0A= Selector._cache[this.expression] =3D this.xpath;=0A= },=0A= =0A= findElements: function(root) {=0A= root =3D root || document;=0A= var e =3D this.expression, results;=0A= =0A= switch (this.mode) {=0A= case 'selectorsAPI':=0A= // querySelectorAll queries document-wide, then filters to = descendants=0A= // of the context element. That's not what we want.=0A= // Add an explicit context to the selector if necessary.=0A= if (root !=3D=3D document) {=0A= var oldId =3D root.id, id =3D $(root).identify();=0A= e =3D "#" + id + " " + e;=0A= }=0A= =0A= results =3D $A(root.querySelectorAll(e)).map(Element.extend);=0A= root.id =3D oldId;=0A= =0A= return results;=0A= case 'xpath':=0A= return document._getElementsByXPath(this.xpath, root);=0A= default:=0A= return this.matcher(root);=0A= }=0A= },=0A= =0A= match: function(element) {=0A= this.tokens =3D [];=0A= =0A= var e =3D this.expression, ps =3D Selector.patterns, as =3D = Selector.assertions;=0A= var le, p, m;=0A= =0A= while (e && le !=3D=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= p =3D ps[i];=0A= if (m =3D e.match(p)) {=0A= // use the Selector.assertions methods unless the selector=0A= // is too complex.=0A= if (as[i]) {=0A= this.tokens.push([i, Object.clone(m)]);=0A= e =3D e.replace(m[0], '');=0A= } else {=0A= // reluctantly do a document-wide search=0A= // and look for a match in the array=0A= return this.findElements(document).include(element);=0A= }=0A= }=0A= }=0A= }=0A= =0A= var match =3D true, name, matches;=0A= for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A= name =3D token[0], matches =3D token[1];=0A= if (!Selector.assertions[name](element, matches)) {=0A= match =3D false; break;=0A= }=0A= }=0A= =0A= return match;=0A= },=0A= =0A= toString: function() {=0A= return this.expression;=0A= },=0A= =0A= inspect: function() {=0A= return "#<Selector:" + this.expression.inspect() + ">";=0A= }=0A= });=0A= =0A= Object.extend(Selector, {=0A= _cache: { },=0A= =0A= xpath: {=0A= descendant: "//*",=0A= child: "/*",=0A= adjacent: "/following-sibling::*[1]",=0A= laterSibling: '/following-sibling::*',=0A= tagName: function(m) {=0A= if (m[1] =3D=3D '*') return '';=0A= return "[local-name()=3D'" + m[1].toLowerCase() +=0A= "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A= },=0A= className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A= id: "[@id=3D'#{1}']",=0A= attrPresence: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= return new Template("[@#{1}]").evaluate(m);=0A= },=0A= attr: function(m) {=0A= m[1] =3D m[1].toLowerCase();=0A= m[3] =3D m[5] || m[6];=0A= return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= var h =3D Selector.xpath.pseudos[m[1]];=0A= if (!h) return '';=0A= if (Object.isFunction(h)) return h(m);=0A= return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A= },=0A= operators: {=0A= '=3D': "[@#{1}=3D'#{3}']",=0A= '!=3D': "[@#{1}!=3D'#{3}']",=0A= '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A= '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']",=0A= '*=3D': "[contains(@#{1}, '#{3}')]",=0A= '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A= '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A= },=0A= pseudos: {=0A= 'first-child': '[not(preceding-sibling::*)]',=0A= 'last-child': '[not(following-sibling::*)]',=0A= 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]',=0A= 'empty': "[count(*) =3D 0 and (count(text()) =3D 0)]",=0A= 'checked': "[@checked]",=0A= 'disabled': "[(@disabled) and (@type!=3D'hidden')]",=0A= 'enabled': "[not(@disabled) and (@type!=3D'hidden')]",=0A= 'not': function(m) {=0A= var e =3D m[6], p =3D Selector.patterns,=0A= x =3D Selector.xpath, le, v;=0A= =0A= var exclusion =3D [];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in p) {=0A= if (m =3D e.match(p[i])) {=0A= v =3D Object.isFunction(x[i]) ? x[i](m) : new = Template(x[i]).evaluate(m);=0A= exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= return "[not(" + exclusion.join(" and ") + ")]";=0A= },=0A= 'nth-child': function(m) {=0A= return = Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A= },=0A= 'nth-last-child': function(m) {=0A= return = Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A= },=0A= 'nth-of-type': function(m) {=0A= return Selector.xpath.pseudos.nth("position() ", m);=0A= },=0A= 'nth-last-of-type': function(m) {=0A= return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", = m);=0A= },=0A= 'first-of-type': function(m) {=0A= m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A= },=0A= 'last-of-type': function(m) {=0A= m[6] =3D "1"; return = Selector.xpath.pseudos['nth-last-of-type'](m);=0A= },=0A= 'only-of-type': function(m) {=0A= var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + = p['last-of-type'](m);=0A= },=0A= nth: function(fragment, m) {=0A= var mm, formula =3D m[6], predicate;=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A= return '[' + fragment + "=3D " + mm[1] + ']';=0A= if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A= if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A= var a =3D mm[1] ? Number(mm[1]) : 1;=0A= var b =3D mm[2] ? Number(mm[2]) : 0;=0A= predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A= "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A= return new Template(predicate).evaluate({=0A= fragment: fragment, a: a, b: b });=0A= }=0A= }=0A= }=0A= },=0A= =0A= criteria: {=0A= tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;',=0A= className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;',=0A= id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;',=0A= attrPresence: 'n =3D h.attrPresence(n, r, "#{1}", c); c =3D false;',=0A= attr: function(m) {=0A= m[3] =3D (m[5] || m[6]);=0A= return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}", = c); c =3D false;').evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A= return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m);=0A= },=0A= descendant: 'c =3D "descendant";',=0A= child: 'c =3D "child";',=0A= adjacent: 'c =3D "adjacent";',=0A= laterSibling: 'c =3D "laterSibling";'=0A= },=0A= =0A= patterns: {=0A= // combinators must be listed first=0A= // (and descendant needs to be last combinator)=0A= laterSibling: /^\s*~\s*/,=0A= child: /^\s*>\s*/,=0A= adjacent: /^\s*\+\s*/,=0A= descendant: /^\s/,=0A= =0A= // selectors follow=0A= tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,=0A= id: /^#([\w\-\*]+)(\b|$)/,=0A= className: /^\.([\w\-\*]+)(\b|$)/,=0A= pseudo:=0A= /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|(?=3D\s|[:+~>]))/,=0A= attrPresence: /^\[((?:[\w]+:)?[\w]+)\]/,=0A= attr: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^= \]]*?)))?\]/=0A= },=0A= =0A= // for Selector.match and Element#match=0A= assertions: {=0A= tagName: function(element, matches) {=0A= return matches[1].toUpperCase() =3D=3D = element.tagName.toUpperCase();=0A= },=0A= =0A= className: function(element, matches) {=0A= return Element.hasClassName(element, matches[1]);=0A= },=0A= =0A= id: function(element, matches) {=0A= return element.id =3D=3D=3D matches[1];=0A= },=0A= =0A= attrPresence: function(element, matches) {=0A= return Element.hasAttribute(element, matches[1]);=0A= },=0A= =0A= attr: function(element, matches) {=0A= var nodeValue =3D Element.readAttribute(element, matches[1]);=0A= return nodeValue && Selector.operators[matches[2]](nodeValue, = matches[5] || matches[6]);=0A= }=0A= },=0A= =0A= handlers: {=0A= // UTILITY FUNCTIONS=0A= // joins two collections=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= a.push(node);=0A= return a;=0A= },=0A= =0A= // marks an array of nodes for counting=0A= mark: function(nodes) {=0A= var _true =3D Prototype.emptyFunction;=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._countedByPrototype =3D _true;=0A= return nodes;=0A= },=0A= =0A= unmark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._countedByPrototype =3D undefined;=0A= return nodes;=0A= },=0A= =0A= // mark each child node with its position (for nth calls)=0A= // "ofType" flag indicates whether we're indexing for nth-of-type=0A= // rather than nth-child=0A= index: function(parentNode, reverse, ofType) {=0A= parentNode._countedByPrototype =3D Prototype.emptyFunction;=0A= if (reverse) {=0A= for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) {=0A= var node =3D nodes[i];=0A= if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++;=0A= }=0A= } else {=0A= for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++)=0A= if (node.nodeType =3D=3D 1 && (!ofType || = node._countedByPrototype)) node.nodeIndex =3D j++;=0A= }=0A= },=0A= =0A= // filters out duplicates and extends all nodes=0A= unique: function(nodes) {=0A= if (nodes.length =3D=3D 0) return nodes;=0A= var results =3D [], n;=0A= for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A= if (!(n =3D nodes[i])._countedByPrototype) {=0A= n._countedByPrototype =3D Prototype.emptyFunction;=0A= results.push(Element.extend(n));=0A= }=0A= return Selector.handlers.unmark(results);=0A= },=0A= =0A= // COMBINATOR FUNCTIONS=0A= descendant: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName('*'));=0A= return results;=0A= },=0A= =0A= child: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A= if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child);=0A= }=0A= return results;=0A= },=0A= =0A= adjacent: function(nodes) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= var next =3D this.nextElementSibling(node);=0A= if (next) results.push(next);=0A= }=0A= return results;=0A= },=0A= =0A= laterSibling: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, Element.nextSiblings(node));=0A= return results;=0A= },=0A= =0A= nextElementSibling: function(node) {=0A= while (node =3D node.nextSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= previousElementSibling: function(node) {=0A= while (node =3D node.previousSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= // TOKEN FUNCTIONS=0A= tagName: function(nodes, root, tagName, combinator) {=0A= var uTagName =3D tagName.toUpperCase();=0A= var results =3D [], h =3D Selector.handlers;=0A= if (nodes) {=0A= if (combinator) {=0A= // fastlane for ordinary descendant combinators=0A= if (combinator =3D=3D "descendant") {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName(tagName));=0A= return results;=0A= } else nodes =3D this[combinator](nodes);=0A= if (tagName =3D=3D "*") return nodes;=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.tagName.toUpperCase() =3D=3D=3D uTagName) = results.push(node);=0A= return results;=0A= } else return root.getElementsByTagName(tagName);=0A= },=0A= =0A= id: function(nodes, root, id, combinator) {=0A= var targetNode =3D $(id), h =3D Selector.handlers;=0A= if (!targetNode) return [];=0A= if (!nodes && root =3D=3D document) return [targetNode];=0A= if (nodes) {=0A= if (combinator) {=0A= if (combinator =3D=3D 'child') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (targetNode.parentNode =3D=3D node) return [targetNode];=0A= } else if (combinator =3D=3D 'descendant') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.descendantOf(targetNode, node)) return = [targetNode];=0A= } else if (combinator =3D=3D 'adjacent') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node)=0A= return [targetNode];=0A= } else nodes =3D h[combinator](nodes);=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node =3D=3D targetNode) return [targetNode];=0A= return [];=0A= }=0A= return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : [];=0A= },=0A= =0A= className: function(nodes, root, className, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= return Selector.handlers.byClassName(nodes, root, className);=0A= },=0A= =0A= byClassName: function(nodes, root, className) {=0A= if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A= var needle =3D ' ' + className + ' ';=0A= for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) {=0A= nodeClassName =3D node.className;=0A= if (nodeClassName.length =3D=3D 0) continue;=0A= if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle))=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= attrPresence: function(nodes, root, attr, combinator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= var results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.hasAttribute(node, attr)) results.push(node);=0A= return results;=0A= },=0A= =0A= attr: function(nodes, root, attr, value, operator, combinator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= var handler =3D Selector.operators[operator], results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= var nodeValue =3D Element.readAttribute(node, attr);=0A= if (nodeValue =3D=3D=3D null) continue;=0A= if (handler(nodeValue, value)) results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= pseudo: function(nodes, name, value, root, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= return Selector.pseudos[name](nodes, value, root);=0A= }=0A= },=0A= =0A= pseudos: {=0A= 'first-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.previousElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'last-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.nextElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'only-child': function(nodes, value, root) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!h.previousElementSibling(node) && = !h.nextElementSibling(node))=0A= results.push(node);=0A= return results;=0A= },=0A= 'nth-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root);=0A= },=0A= 'nth-last-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true);=0A= },=0A= 'nth-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, false, true);=0A= },=0A= 'nth-last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true, true);=0A= },=0A= 'first-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, false, true);=0A= },=0A= 'last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, true, true);=0A= },=0A= 'only-of-type': function(nodes, formula, root) {=0A= var p =3D Selector.pseudos;=0A= return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root);=0A= },=0A= =0A= // handles the an+b logic=0A= getIndices: function(a, b, total) {=0A= if (a =3D=3D 0) return b > 0 ? [b] : [];=0A= return $R(1, total).inject([], function(memo, i) {=0A= if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A= return memo;=0A= });=0A= },=0A= =0A= // handles nth(-last)-child, nth(-last)-of-type, and = (first|last)-of-type=0A= nth: function(nodes, formula, root, reverse, ofType) {=0A= if (nodes.length =3D=3D 0) return [];=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A= h.mark(nodes);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= if (!node.parentNode._countedByPrototype) {=0A= h.index(node.parentNode, reverse, ofType);=0A= indexed.push(node.parentNode);=0A= }=0A= }=0A= if (formula.match(/^\d+$/)) { // just a number=0A= formula =3D Number(formula);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.nodeIndex =3D=3D formula) results.push(node);=0A= } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b=0A= if (m[1] =3D=3D "-") m[1] =3D -1;=0A= var a =3D m[1] ? Number(m[1]) : 1;=0A= var b =3D m[2] ? Number(m[2]) : 0;=0A= var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A= for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) {=0A= for (var j =3D 0; j < l; j++)=0A= if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A= }=0A= }=0A= h.unmark(nodes);=0A= h.unmark(indexed);=0A= return results;=0A= },=0A= =0A= 'empty': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= // IE treats comments as element nodes=0A= if (node.tagName =3D=3D '!' || node.firstChild) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= 'not': function(nodes, selector, root) {=0A= var h =3D Selector.handlers, selectorType, m;=0A= var exclusions =3D new Selector(selector).findElements(root);=0A= h.mark(exclusions);=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node._countedByPrototype) results.push(node);=0A= h.unmark(exclusions);=0A= return results;=0A= },=0A= =0A= 'enabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node.disabled && (!node.type || node.type !=3D=3D 'hidden'))=0A= results.push(node);=0A= return results;=0A= },=0A= =0A= 'disabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'checked': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.checked) results.push(node);=0A= return results;=0A= }=0A= },=0A= =0A= operators: {=0A= '=3D': function(nv, v) { return nv =3D=3D v; },=0A= '!=3D': function(nv, v) { return nv !=3D v; },=0A= '^=3D': function(nv, v) { return nv =3D=3D v || nv && = nv.startsWith(v); },=0A= '$=3D': function(nv, v) { return nv =3D=3D v || nv && = nv.endsWith(v); },=0A= '*=3D': function(nv, v) { return nv =3D=3D v || nv && nv.include(v); = },=0A= '$=3D': function(nv, v) { return nv.endsWith(v); },=0A= '*=3D': function(nv, v) { return nv.include(v); },=0A= '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); },=0A= '|=3D': function(nv, v) { return ('-' + (nv || "").toUpperCase() +=0A= '-').include('-' + (v || "").toUpperCase() + '-'); }=0A= },=0A= =0A= split: function(expression) {=0A= var expressions =3D [];=0A= expression.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, = function(m) {=0A= expressions.push(m[1].strip());=0A= });=0A= return expressions;=0A= },=0A= =0A= matchElements: function(elements, expression) {=0A= var matches =3D $$(expression), h =3D Selector.handlers;=0A= h.mark(matches);=0A= for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++)=0A= if (element._countedByPrototype) results.push(element);=0A= h.unmark(matches);=0A= return results;=0A= },=0A= =0A= findElement: function(elements, expression, index) {=0A= if (Object.isNumber(expression)) {=0A= index =3D expression; expression =3D false;=0A= }=0A= return Selector.matchElements(elements, expression || '*')[index || = 0];=0A= },=0A= =0A= findChildElements: function(element, expressions) {=0A= expressions =3D Selector.split(expressions.join(','));=0A= var results =3D [], h =3D Selector.handlers;=0A= for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A= selector =3D new Selector(expressions[i].strip());=0A= h.concat(results, selector.findElements(element));=0A= }=0A= return (l > 1) ? h.unique(results) : results;=0A= }=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= Object.extend(Selector.handlers, {=0A= // IE returns comment nodes on getElementsByTagName("*").=0A= // Filter them out.=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= if (node.tagName !=3D=3D "!") a.push(node);=0A= return a;=0A= },=0A= =0A= // IE improperly serializes _countedByPrototype in (inner|outer)HTML.=0A= unmark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node.removeAttribute('_countedByPrototype');=0A= return nodes;=0A= }=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, options) {=0A= if (typeof options !=3D 'object') options =3D { hash: !!options };=0A= else if (Object.isUndefined(options.hash)) options.hash =3D true;=0A= var key, value, submitted =3D false, submit =3D options.submit;=0A= =0A= var data =3D elements.inject({ }, function(result, element) {=0A= if (!element.disabled && element.name) {=0A= key =3D element.name; value =3D $(element).getValue();=0A= if (value !=3D null && element.type !=3D 'file' && (element.type = !=3D 'submit' || (!submitted &&=0A= submit !=3D=3D false && (!submit || key =3D=3D submit) && = (submitted =3D true)))) {=0A= if (key in result) {=0A= // a key is already present; construct an array of values=0A= if (!Object.isArray(result[key])) result[key] =3D = [result[key]];=0A= result[key].push(value);=0A= }=0A= else result[key] =3D value;=0A= }=0A= }=0A= return result;=0A= });=0A= =0A= return options.hash ? data : Object.toQueryString(data);=0A= }=0A= };=0A= =0A= Form.Methods =3D {=0A= serialize: function(form, options) {=0A= return Form.serializeElements(Form.getElements(form), options);=0A= },=0A= =0A= getElements: function(form) {=0A= return $A($(form).getElementsByTagName('*')).inject([],=0A= function(elements, child) {=0A= if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A= elements.push(Element.extend(child));=0A= return elements;=0A= }=0A= );=0A= },=0A= =0A= getInputs: function(form, typeName, name) {=0A= form =3D $(form);=0A= var inputs =3D form.getElementsByTagName('input');=0A= =0A= if (!typeName && !name) return $A(inputs).map(Element.extend);=0A= =0A= for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) {=0A= var input =3D inputs[i];=0A= if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name))=0A= continue;=0A= matchingInputs.push(Element.extend(input));=0A= }=0A= =0A= return matchingInputs;=0A= },=0A= =0A= disable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('disable');=0A= return form;=0A= },=0A= =0A= enable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('enable');=0A= return form;=0A= },=0A= =0A= findFirstElement: function(form) {=0A= var elements =3D $(form).getElements().findAll(function(element) {=0A= return 'hidden' !=3D element.type && !element.disabled;=0A= });=0A= var firstByIndex =3D elements.findAll(function(element) {=0A= return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A= }).sortBy(function(element) { return element.tabIndex }).first();=0A= =0A= return firstByIndex ? firstByIndex : elements.find(function(element) = {=0A= return ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase());=0A= });=0A= },=0A= =0A= focusFirstElement: function(form) {=0A= form =3D $(form);=0A= form.findFirstElement().activate();=0A= return form;=0A= },=0A= =0A= request: function(form, options) {=0A= form =3D $(form), options =3D Object.clone(options || { });=0A= =0A= var params =3D options.parameters, action =3D = form.readAttribute('action') || '';=0A= if (action.blank()) action =3D window.location.href;=0A= options.parameters =3D form.serialize(true);=0A= =0A= if (params) {=0A= if (Object.isString(params)) params =3D params.toQueryParams();=0A= Object.extend(options.parameters, params);=0A= }=0A= =0A= if (form.hasAttribute('method') && !options.method)=0A= options.method =3D form.method;=0A= =0A= return new Ajax.Request(action, options);=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= 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 Object.toQueryString(pair);=0A= }=0A= }=0A= return '';=0A= },=0A= =0A= getValue: function(element) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= return Form.Element.Serializers[method](element);=0A= },=0A= =0A= setValue: function(element, value) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= Form.Element.Serializers[method](element, value);=0A= return element;=0A= },=0A= =0A= clear: function(element) {=0A= $(element).value =3D '';=0A= return element;=0A= },=0A= =0A= present: function(element) {=0A= return $(element).value !=3D '';=0A= },=0A= =0A= activate: function(element) {=0A= element =3D $(element);=0A= try {=0A= element.focus();=0A= if (element.select && (element.tagName.toLowerCase() !=3D 'input' = ||=0A= !['button', 'reset', 'submit'].include(element.type)))=0A= element.select();=0A= } catch (e) { }=0A= return element;=0A= },=0A= =0A= disable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D true;=0A= return element;=0A= },=0A= =0A= enable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D false;=0A= return element;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Field =3D Form.Element;=0A= var $F =3D Form.Element.Methods.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element, value) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= return Form.Element.Serializers.inputSelector(element, value);=0A= default:=0A= return Form.Element.Serializers.textarea(element, value);=0A= }=0A= },=0A= =0A= inputSelector: function(element, value) {=0A= if (Object.isUndefined(value)) return element.checked ? = element.value : null;=0A= else element.checked =3D !!value;=0A= },=0A= =0A= textarea: function(element, value) {=0A= if (Object.isUndefined(value)) return element.value;=0A= else element.value =3D value;=0A= },=0A= =0A= select: function(element, value) {=0A= if (Object.isUndefined(value))=0A= return this[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=0A= else {=0A= var opt, currentValue, single =3D !Object.isArray(value);=0A= for (var i =3D 0, length =3D element.length; i < length; i++) {=0A= opt =3D element.options[i];=0A= currentValue =3D this.optionValue(opt);=0A= if (single) {=0A= if (currentValue =3D=3D value) {=0A= opt.selected =3D true;=0A= return;=0A= }=0A= }=0A= else opt.selected =3D value.include(currentValue);=0A= }=0A= }=0A= },=0A= =0A= selectOne: function(element) {=0A= var index =3D element.selectedIndex;=0A= return index >=3D 0 ? this.optionValue(element.options[index]) : = null;=0A= },=0A= =0A= selectMany: function(element) {=0A= var values, length =3D element.length;=0A= if (!length) return null;=0A= =0A= for (var i =3D 0, values =3D []; i < length; i++) {=0A= var opt =3D element.options[i];=0A= if (opt.selected) values.push(this.optionValue(opt));=0A= }=0A= return values;=0A= },=0A= =0A= optionValue: function(opt) {=0A= // 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 Class.create(PeriodicalExecuter, {=0A= initialize: function($super, element, frequency, callback) {=0A= $super(callback, frequency);=0A= this.element =3D $(element);=0A= this.lastValue =3D this.getValue();=0A= },=0A= =0A= execute: function() {=0A= var value =3D this.getValue();=0A= if (Object.isString(this.lastValue) && Object.isString(value) ?=0A= this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= }=0A= });=0A= =0A= Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.EventObserver =3D Class.create({=0A= initialize: function(element, callback) {=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A= this.registerFormCallbacks();=0A= else=0A= this.registerCallback(this.element);=0A= },=0A= =0A= onElementEvent: function() {=0A= var value =3D this.getValue();=0A= if (this.lastValue !=3D value) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= },=0A= =0A= registerFormCallbacks: function() {=0A= Form.getElements(this.element).each(this.registerCallback, this);=0A= },=0A= =0A= registerCallback: function(element) {=0A= if (element.type) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= Event.observe(element, 'click', = this.onElementEvent.bind(this));=0A= break;=0A= default:=0A= Event.observe(element, 'change', = this.onElementEvent.bind(this));=0A= break;=0A= }=0A= }=0A= }=0A= });=0A= =0A= Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= if (!window.Event) var Event =3D { };=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= KEY_INSERT: 45,=0A= =0A= cache: { },=0A= =0A= relatedTarget: function(event) {=0A= var element;=0A= switch(event.type) {=0A= case 'mouseover': element =3D event.fromElement; break;=0A= case 'mouseout': element =3D event.toElement; break;=0A= default: return null;=0A= }=0A= return Element.extend(element);=0A= }=0A= });=0A= =0A= Event.Methods =3D (function() {=0A= var isButton;=0A= =0A= if (Prototype.Browser.IE) {=0A= var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A= isButton =3D function(event, code) {=0A= return event.button =3D=3D buttonMap[code];=0A= };=0A= =0A= } else if (Prototype.Browser.WebKit) {=0A= isButton =3D function(event, code) {=0A= switch (code) {=0A= case 0: return event.which =3D=3D 1 && !event.metaKey;=0A= case 1: return event.which =3D=3D 1 && event.metaKey;=0A= default: return false;=0A= }=0A= };=0A= =0A= } else {=0A= isButton =3D function(event, code) {=0A= return event.which ? (event.which =3D=3D=3D code + 1) : = (event.button =3D=3D=3D code);=0A= };=0A= }=0A= =0A= return {=0A= isLeftClick: function(event) { return isButton(event, 0) },=0A= isMiddleClick: function(event) { return isButton(event, 1) },=0A= isRightClick: function(event) { return isButton(event, 2) },=0A= =0A= element: function(event) {=0A= event =3D Event.extend(event);=0A= =0A= var node =3D event.target,=0A= type =3D event.type,=0A= currentTarget =3D event.currentTarget;=0A= =0A= if (currentTarget && currentTarget.tagName) {=0A= // Firefox screws up the "click" event when moving between radio = buttons=0A= // via arrow keys. It also screws up the "load" and "error" = events on images,=0A= // reporting the document as the target instead of the original = image.=0A= if (type =3D=3D=3D 'load' || type =3D=3D=3D 'error' ||=0A= (type =3D=3D=3D 'click' && currentTarget.tagName.toLowerCase() = =3D=3D=3D 'input'=0A= && currentTarget.type =3D=3D=3D 'radio'))=0A= node =3D currentTarget;=0A= }=0A= if (node.nodeType =3D=3D Node.TEXT_NODE) node =3D node.parentNode;=0A= return Element.extend(node);=0A= },=0A= =0A= findElement: function(event, expression) {=0A= var element =3D Event.element(event);=0A= if (!expression) return element;=0A= var elements =3D [element].concat(element.ancestors());=0A= return Selector.findElement(elements, expression, 0);=0A= },=0A= =0A= pointer: function(event) {=0A= var docElement =3D document.documentElement,=0A= body =3D document.body || { scrollLeft: 0, scrollTop: 0 };=0A= return {=0A= x: event.pageX || (event.clientX +=0A= (docElement.scrollLeft || body.scrollLeft) -=0A= (docElement.clientLeft || 0)),=0A= y: event.pageY || (event.clientY +=0A= (docElement.scrollTop || body.scrollTop) -=0A= (docElement.clientTop || 0))=0A= };=0A= },=0A= =0A= pointerX: function(event) { return Event.pointer(event).x },=0A= pointerY: function(event) { return Event.pointer(event).y },=0A= =0A= stop: function(event) {=0A= Event.extend(event);=0A= event.preventDefault();=0A= event.stopPropagation();=0A= event.stopped =3D true;=0A= }=0A= };=0A= })();=0A= =0A= Event.extend =3D (function() {=0A= var methods =3D Object.keys(Event.Methods).inject({ }, function(m, = name) {=0A= m[name] =3D Event.Methods[name].methodize();=0A= return m;=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= Object.extend(methods, {=0A= stopPropagation: function() { this.cancelBubble =3D true },=0A= preventDefault: function() { this.returnValue =3D false },=0A= inspect: function() { return "[object Event]" }=0A= });=0A= =0A= return function(event) {=0A= if (!event) return false;=0A= if (event._extendedByPrototype) return event;=0A= =0A= event._extendedByPrototype =3D Prototype.emptyFunction;=0A= var pointer =3D Event.pointer(event);=0A= Object.extend(event, {=0A= target: event.srcElement,=0A= relatedTarget: Event.relatedTarget(event),=0A= pageX: pointer.x,=0A= pageY: pointer.y=0A= });=0A= return Object.extend(event, methods);=0A= };=0A= =0A= } else {=0A= Event.prototype =3D Event.prototype || = document.createEvent("HTMLEvents")['__proto__'];=0A= Object.extend(Event.prototype, methods);=0A= return Prototype.K;=0A= }=0A= })();=0A= =0A= Object.extend(Event, (function() {=0A= var cache =3D Event.cache;=0A= =0A= function getEventID(element) {=0A= if (element._prototypeEventID) return element._prototypeEventID[0];=0A= arguments.callee.id =3D arguments.callee.id || 1;=0A= return element._prototypeEventID =3D [++arguments.callee.id];=0A= }=0A= =0A= function getDOMEventName(eventName) {=0A= if (eventName && eventName.include(':')) return "dataavailable";=0A= return eventName;=0A= }=0A= =0A= function getCacheForID(id) {=0A= return cache[id] =3D cache[id] || { };=0A= }=0A= =0A= function getWrappersForEventName(id, eventName) {=0A= var c =3D getCacheForID(id);=0A= return c[eventName] =3D c[eventName] || [];=0A= }=0A= =0A= function createWrapper(element, eventName, handler) {=0A= var id =3D getEventID(element);=0A= var c =3D getWrappersForEventName(id, eventName);=0A= if (c.pluck("handler").include(handler)) return false;=0A= =0A= var wrapper =3D function(event) {=0A= if (!Event || !Event.extend ||=0A= (event.eventName && event.eventName !=3D eventName))=0A= return false;=0A= =0A= Event.extend(event);=0A= handler.call(element, event);=0A= };=0A= =0A= wrapper.handler =3D handler;=0A= c.push(wrapper);=0A= return wrapper;=0A= }=0A= =0A= function findWrapper(id, eventName, handler) {=0A= var c =3D getWrappersForEventName(id, eventName);=0A= return c.find(function(wrapper) { return wrapper.handler =3D=3D = handler });=0A= }=0A= =0A= function destroyWrapper(id, eventName, handler) {=0A= var c =3D getCacheForID(id);=0A= if (!c[eventName]) return false;=0A= c[eventName] =3D c[eventName].without(findWrapper(id, eventName, = handler));=0A= }=0A= =0A= function destroyCache() {=0A= for (var id in cache)=0A= for (var eventName in cache[id])=0A= cache[id][eventName] =3D null;=0A= }=0A= =0A= =0A= // Internet Explorer needs to remove event handlers on page unload=0A= // in order to avoid memory leaks.=0A= if (window.attachEvent) {=0A= window.attachEvent("onunload", destroyCache);=0A= }=0A= =0A= // Safari has a dummy event handler on page unload so that it won't=0A= // use its bfcache. Safari <=3D 3.1 has an issue with restoring the = "document"=0A= // object when page is returned to via the back button using its = bfcache.=0A= if (Prototype.Browser.WebKit) {=0A= window.addEventListener('unload', Prototype.emptyFunction, false);=0A= }=0A= =0A= return {=0A= observe: function(element, eventName, handler) {=0A= element =3D $(element);=0A= var name =3D getDOMEventName(eventName);=0A= =0A= var wrapper =3D createWrapper(element, eventName, handler);=0A= if (!wrapper) return element;=0A= =0A= if (element.addEventListener) {=0A= element.addEventListener(name, wrapper, false);=0A= } else {=0A= element.attachEvent("on" + name, wrapper);=0A= }=0A= =0A= return element;=0A= },=0A= =0A= stopObserving: function(element, eventName, handler) {=0A= element =3D $(element);=0A= var id =3D getEventID(element), name =3D = getDOMEventName(eventName);=0A= =0A= if (!handler && eventName) {=0A= getWrappersForEventName(id, eventName).each(function(wrapper) {=0A= element.stopObserving(eventName, wrapper.handler);=0A= });=0A= return element;=0A= =0A= } else if (!eventName) {=0A= Object.keys(getCacheForID(id)).each(function(eventName) {=0A= element.stopObserving(eventName);=0A= });=0A= return element;=0A= }=0A= =0A= var wrapper =3D findWrapper(id, eventName, handler);=0A= if (!wrapper) return element;=0A= =0A= if (element.removeEventListener) {=0A= element.removeEventListener(name, wrapper, false);=0A= } else {=0A= element.detachEvent("on" + name, wrapper);=0A= }=0A= =0A= destroyWrapper(id, eventName, handler);=0A= =0A= return element;=0A= },=0A= =0A= fire: function(element, eventName, memo) {=0A= element =3D $(element);=0A= if (element =3D=3D document && document.createEvent && = !element.dispatchEvent)=0A= element =3D document.documentElement;=0A= =0A= var event;=0A= if (document.createEvent) {=0A= event =3D document.createEvent("HTMLEvents");=0A= event.initEvent("dataavailable", true, true);=0A= } else {=0A= event =3D document.createEventObject();=0A= event.eventType =3D "ondataavailable";=0A= }=0A= =0A= event.eventName =3D eventName;=0A= event.memo =3D memo || { };=0A= =0A= if (document.createEvent) {=0A= element.dispatchEvent(event);=0A= } else {=0A= element.fireEvent(event.eventType, event);=0A= }=0A= =0A= return Event.extend(event);=0A= }=0A= };=0A= })());=0A= =0A= Object.extend(Event, Event.Methods);=0A= =0A= Element.addMethods({=0A= fire: Event.fire,=0A= observe: Event.observe,=0A= stopObserving: Event.stopObserving=0A= });=0A= =0A= Object.extend(document, {=0A= fire: Element.Methods.fire.methodize(),=0A= observe: Element.Methods.observe.methodize(),=0A= stopObserving: Element.Methods.stopObserving.methodize(),=0A= loaded: false=0A= });=0A= =0A= (function() {=0A= /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A= Matthias Miller, Dean Edwards and John Resig. */=0A= =0A= var timer;=0A= =0A= function fireContentLoadedEvent() {=0A= if (document.loaded) return;=0A= if (timer) window.clearInterval(timer);=0A= document.fire("dom:loaded");=0A= document.loaded =3D true;=0A= }=0A= =0A= if (document.addEventListener) {=0A= if (Prototype.Browser.WebKit) {=0A= timer =3D window.setInterval(function() {=0A= if (/loaded|complete/.test(document.readyState))=0A= fireContentLoadedEvent();=0A= }, 0);=0A= =0A= Event.observe(window, "load", fireContentLoadedEvent);=0A= =0A= } else {=0A= document.addEventListener("DOMContentLoaded",=0A= fireContentLoadedEvent, false);=0A= }=0A= =0A= } else {=0A= document.write("<script id=3D__onDOMContentLoaded defer = src=3D//:><\/script>");=0A= $("__onDOMContentLoaded").onreadystatechange =3D function() {=0A= if (this.readyState =3D=3D "complete") {=0A= this.onreadystatechange =3D null;=0A= fireContentLoadedEvent();=0A= }=0A= };=0A= }=0A= })();=0A= /*------------------------------- DEPRECATED = -------------------------------*/=0A= =0A= Hash.toQueryString =3D Object.toQueryString;=0A= =0A= var Toggle =3D { display: Element.toggle };=0A= =0A= Element.Methods.childOf =3D Element.Methods.descendantOf;=0A= =0A= var Insertion =3D {=0A= Before: function(element, content) {=0A= return Element.insert(element, {before:content});=0A= },=0A= =0A= Top: function(element, content) {=0A= return Element.insert(element, {top:content});=0A= },=0A= =0A= Bottom: function(element, content) {=0A= return Element.insert(element, {bottom:content});=0A= },=0A= =0A= After: function(element, content) {=0A= return Element.insert(element, {after:content});=0A= }=0A= };=0A= =0A= var $continue =3D new Error('"throw $continue" is deprecated, use = "return" instead');=0A= =0A= // This should be moved to script.aculo.us; notice the deprecated methods=0A= // further below, that map to the newer Element methods.=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= // 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 Element.cumulativeOffset(element);=0A= =0A= return (y >=3D this.offset[1] &&=0A= y < this.offset[1] + element.offsetHeight &&=0A= x >=3D this.offset[0] &&=0A= x < this.offset[0] + element.offsetWidth);=0A= },=0A= =0A= withinIncludingScrolloffsets: function(element, x, y) {=0A= var offsetcache =3D Element.cumulativeScrollOffset(element);=0A= =0A= this.xcomp =3D x + offsetcache[0] - this.deltaX;=0A= this.ycomp =3D y + offsetcache[1] - this.deltaY;=0A= this.offset =3D Element.cumulativeOffset(element);=0A= =0A= return (this.ycomp >=3D this.offset[1] &&=0A= this.ycomp < this.offset[1] + element.offsetHeight &&=0A= this.xcomp >=3D this.offset[0] &&=0A= this.xcomp < this.offset[0] + element.offsetWidth);=0A= },=0A= =0A= // 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= // Deprecation layer -- use newer Element methods now (1.5.2).=0A= =0A= cumulativeOffset: Element.Methods.cumulativeOffset,=0A= =0A= positionedOffset: Element.Methods.positionedOffset,=0A= =0A= absolutize: function(element) {=0A= Position.prepare();=0A= return Element.absolutize(element);=0A= },=0A= =0A= relativize: function(element) {=0A= Position.prepare();=0A= return Element.relativize(element);=0A= },=0A= =0A= realOffset: Element.Methods.cumulativeScrollOffset,=0A= =0A= offsetParent: Element.Methods.getOffsetParent,=0A= =0A= page: Element.Methods.viewportOffset,=0A= =0A= clone: function(source, target, options) {=0A= options =3D options || { };=0A= return Element.clonePosition(target, source, options);=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!document.getElementsByClassName) document.getElementsByClassName = =3D function(instanceMethods){=0A= function iter(name) {=0A= return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' = " + name + " ')]";=0A= }=0A= =0A= instanceMethods.getElementsByClassName =3D = Prototype.BrowserFeatures.XPath ?=0A= function(element, className) {=0A= className =3D className.toString().strip();=0A= var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') = : iter(className);=0A= return cond ? document._getElementsByXPath('.//*' + cond, element) : = [];=0A= } : function(element, className) {=0A= className =3D className.toString().strip();=0A= var elements =3D [], classNames =3D (/\s/.test(className) ? = $w(className) : null);=0A= if (!classNames && !className) return elements;=0A= =0A= var nodes =3D $(element).getElementsByTagName('*');=0A= className =3D ' ' + className + ' ';=0A= =0A= for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {=0A= if (child.className && (cn =3D ' ' + child.className + ' ') && = (cn.include(className) ||=0A= (classNames && classNames.all(function(name) {=0A= return !name.toString().blank() && cn.include(' ' + name + ' = ');=0A= }))))=0A= elements.push(Element.extend(child));=0A= }=0A= return elements;=0A= };=0A= =0A= return function(className, parentElement) {=0A= return $(parentElement || = document.body).getElementsByClassName(className);=0A= };=0A= }(Element.Methods);=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Element.ClassNames =3D Class.create();=0A= Element.ClassNames.prototype =3D {=0A= initialize: function(element) {=0A= this.element =3D $(element);=0A= },=0A= =0A= _each: function(iterator) {=0A= this.element.className.split(/\s+/).select(function(name) {=0A= return name.length > 0;=0A= })._each(iterator);=0A= },=0A= =0A= set: function(className) {=0A= this.element.className =3D className;=0A= },=0A= =0A= add: function(classNameToAdd) {=0A= if (this.include(classNameToAdd)) return;=0A= this.set($A(this).concat(classNameToAdd).join(' '));=0A= },=0A= =0A= remove: function(classNameToRemove) {=0A= if (!this.include(classNameToRemove)) return;=0A= this.set($A(this).without(classNameToRemove).join(' '));=0A= },=0A= =0A= toString: function() {=0A= return $A(this).join(' ');=0A= }=0A= };=0A= =0A= Object.extend(Element.ClassNames.prototype, Enumerable);=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Element.addMethods(); ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/includes/script.aculo.us/scriptaculous.js // script.aculo.us scriptaculous.js v1.8.2, Tue Nov 18 18:30:58 +0100 = 2008=0A= =0A= // Copyright (c) 2005-2008 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.8.2',=0A= require: function(libraryName) {=0A= // inserting via DOM fails in Safari 2.0, so brute force approach=0A= document.write('<script type=3D"text/javascript" = src=3D"'+libraryName+'"><\/script>');=0A= },=0A= REQUIRED_PROTOTYPE: '1.6.0.3',=0A= load: function() {=0A= function convertVersionString(versionString) {=0A= var v =3D versionString.replace(/_.*|\./g, '');=0A= v =3D parseInt(v + '0'.times(4-v.length));=0A= return versionString.indexOf('_') > -1 ? v-1 : v;=0A= }=0A= =0A= if((typeof Prototype=3D=3D'undefined') ||=0A= (typeof Element =3D=3D 'undefined') ||=0A= (typeof Element.Methods=3D=3D'undefined') ||=0A= (convertVersionString(Prototype.Version) <=0A= convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))=0A= throw("script.aculo.us requires the Prototype JavaScript = framework >=3D " +=0A= Scriptaculous.REQUIRED_PROTOTYPE);=0A= =0A= var js =3D /scriptaculous\.js(\?.*)?$/;=0A= $$('head script[src]').findAll(function(s) {=0A= return s.src.match(js);=0A= }).each(function(s) {=0A= var path =3D s.src.replace(js, ''),=0A= includes =3D s.src.match(/\?.*load=3D([a-z,]*)/);=0A= (includes ? includes[1] : = 'builder,effects,dragdrop,controls,slider,sound').split(',').each(=0A= function(include) { Scriptaculous.require(path+include+'.js') });=0A= });=0A= }=0A= };=0A= =0A= Scriptaculous.load(); ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/includes/tooltip-v0.2.js /*=0A= * Copyright (c) 2006 Jonathan Weiss <jw@innerewut.de>=0A= *=0A= * Permission to use, copy, modify, and distribute this software for any=0A= * purpose with or without fee is hereby granted, provided that the above=0A= * copyright notice and this permission notice appear in all copies.=0A= *=0A= * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL = WARRANTIES=0A= * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF=0A= * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE = FOR=0A= * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES=0A= * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN=0A= * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT = OF=0A= * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.=0A= */=0A= =0A= /*=0A= * Modified from original version to turn off tooltip while a select box = is open=0A= */=0A= =0A= =0A= /* tooltip-0.2.js - Small tooltip library on top of Prototype =0A= * by Jonathan Weiss <jw@innerewut.de> distributed under the BSD = license. =0A= *=0A= * This tooltip library works in two modes. If it gets a valid DOM = element =0A= * or DOM id as an argument it uses this element as the tooltip. This =0A= * element will be placed (and shown) near the mouse pointer when a = trigger-=0A= * element is moused-over.=0A= * If it gets only a text as an argument instead of a DOM id or DOM = element=0A= * it will create a div with the classname 'tooltip' that holds the = given text.=0A= * This newly created div will be used as the tooltip. This is usefull = if you =0A= * want to use tooltip.js to create popups out of title attributes.=0A= * =0A= *=0A= * Usage: =0A= * <script src=3D"/javascripts/prototype.js" = type=3D"text/javascript"></script>=0A= * <script src=3D"/javascripts/tooltip.js" = type=3D"text/javascript"></script>=0A= * <script type=3D"text/javascript">=0A= * // with valid DOM id=0A= * var my_tooltip =3D new Tooltip('id_of_trigger_element', = 'id_of_tooltip_to_show_element')=0A= *=0A= * // with text=0A= * var my_other_tooltip =3D new Tooltip('id_of_trigger_element', 'a = nice description')=0A= *=0A= * // create popups for each element with a title attribute=0A= * Event.observe(window,"load",function() {=0A= * $$("*").findAll(function(node){=0A= * return node.getAttribute('title');=0A= * }).each(function(node){=0A= * new Tooltip(node,node.title);=0A= * node.removeAttribute("title");=0A= * });=0A= * });=0A= * =0A= * </script>=0A= * =0A= * Now whenever you trigger a mouseOver on the `trigger` element, the = tooltip element will=0A= * be shown. On o mouseOut the tooltip disappears. =0A= * =0A= * Example:=0A= * =0A= * <script src=3D"/javascripts/prototype.js" = type=3D"text/javascript"></script>=0A= * <script src=3D"/javascripts/scriptaculous.js" = type=3D"text/javascript"></script>=0A= * <script src=3D"/javascripts/tooltip.js" = type=3D"text/javascript"></script>=0A= *=0A= * <div id=3D'tooltip' style=3D"display:none; margin: 5px; = background-color: red;">=0A= * Detail infos on product 1....<br />=0A= * </div>=0A= *=0A= * <div id=3D'product_1'>=0A= * This is product 1=0A= * </div>=0A= *=0A= * <script type=3D"text/javascript">=0A= * var my_tooltip =3D new Tooltip('product_1', 'tooltip')=0A= * </script>=0A= *=0A= * You can use my_tooltip.destroy() to remove the event observers and = thereby the tooltip.=0A= */=0A= =0A= var Tooltip =3D Class.create();=0A= Tooltip.prototype =3D {=0A= initialize: function(element, tool_tip) {=0A= var options =3D Object.extend({=0A= default_css: false,=0A= margin: "0px",=0A= padding: "15px",=0A= border: "1px solid #ff0",=0A= backgroundColor: "#d6d6fc",=0A= min_distance_x: 5,=0A= min_distance_y: 5,=0A= delta_x: 0,=0A= delta_y: 0,=0A= zindex: 1000=0A= }, arguments[2] || {});=0A= =0A= this.element =3D $(element);=0A= =0A= this.options =3D options;=0A= =0A= // use the supplied tooltip element or create our own div=0A= if($(tool_tip)) {=0A= this.tool_tip =3D $(tool_tip);=0A= } else {=0A= this.tool_tip =3D $(document.createElement("div")); =0A= document.body.appendChild(this.tool_tip);=0A= this.tool_tip.addClassName("tooltip");=0A= this.tool_tip.appendChild(document.createTextNode(tool_tip));=0A= }=0A= =0A= // hide the tool-tip by default=0A= this.tool_tip.hide();=0A= =0A= this.eventMouseOver =3D this.showTooltip.bindAsEventListener(this);=0A= this.eventMouseOut =3D this.hideTooltip.bindAsEventListener(this);=0A= this.eventMouseMove =3D this.moveTooltip.bindAsEventListener(this);=0A= =0A= this.registerEvents();=0A= },=0A= =0A= destroy: function() {=0A= Event.stopObserving(this.element, "mouseover", this.eventMouseOver);=0A= Event.stopObserving(this.element, "mouseout", this.eventMouseOut);=0A= Event.stopObserving(this.element, "mousemove", this.eventMouseMove);=0A= },=0A= =0A= registerEvents: function() {=0A= Event.observe(this.element, "mouseover", this.eventMouseOver);=0A= Event.observe(this.element, "mouseout", this.eventMouseOut);=0A= Event.observe(this.element, "mousemove", this.eventMouseMove);=0A= },=0A= =0A= moveTooltip: function(event){=0A= Event.stop(event);=0A= // get Mouse position=0A= var elem =3D (event.target) ? event.target : event.srcElement;=0A= if (elem.tagName.toUpperCase() =3D=3D "OPTION") {=0A= this.hideTooltip(event);=0A= return;=0A= }=0A= var mouse_x =3D Event.pointerX(event);=0A= var mouse_y =3D Event.pointerY(event);=0A= =0A= // decide if wee need to switch sides for the tooltip=0A= var dimensions =3D Element.getDimensions( this.tool_tip );=0A= var element_width =3D dimensions.width;=0A= var element_height =3D dimensions.height;=0A= =0A= if ( (element_width + mouse_x) >=3D ( this.getWindowWidth() - = this.options.min_distance_x) ){ // too big for X=0A= mouse_x =3D mouse_x - element_width;=0A= // apply min_distance to make sure that the mouse is not on the = tool-tip=0A= mouse_x =3D mouse_x - this.options.min_distance_x;=0A= } else {=0A= mouse_x =3D mouse_x + this.options.min_distance_x;=0A= }=0A= =0A= if ( (element_height + mouse_y) >=3D ( this.getWindowHeight() - = this.options.min_distance_y) ){ // too big for Y=0A= mouse_y =3D mouse_y - element_height;=0A= // apply min_distance to make sure that the mouse is not on the = tool-tip=0A= mouse_y =3D mouse_y - this.options.min_distance_y;=0A= } else {=0A= mouse_y =3D mouse_y + this.options.min_distance_y;=0A= } =0A= =0A= // now set the right styles=0A= this.setStyles(mouse_x, mouse_y);=0A= },=0A= =0A= =0A= showTooltip: function(event) {=0A= Event.stop(event);=0A= this.moveTooltip(event);=0A= new Element.show(this.tool_tip);=0A= },=0A= =0A= setStyles: function(x, y){=0A= // set the right styles to position the tool tip=0A= Element.setStyle(this.tool_tip, { position:'absolute',=0A= top:y + this.options.delta_y + "px",=0A= left:x + this.options.delta_x + "px",=0A= zindex:this.options.zindex=0A= });=0A= =0A= // apply default theme if wanted=0A= if (this.options.default_css){=0A= Element.setStyle(this.tool_tip, { margin:this.options.margin,=0A= padding:this.options.padding,=0A= = backgroundColor:this.options.backgroundColor,=0A= zindex:this.options.zindex=0A= }); =0A= } =0A= },=0A= =0A= hideTooltip: function(event){=0A= new Element.hide(this.tool_tip);=0A= },=0A= =0A= getWindowHeight: function(){=0A= var innerHeight;=0A= if (navigator.appVersion.indexOf('MSIE')>0) {=0A= innerHeight =3D document.body.clientHeight;=0A= } else {=0A= innerHeight =3D window.innerHeight;=0A= }=0A= return innerHeight; =0A= },=0A= =0A= getWindowWidth: function(){=0A= var innerWidth;=0A= if (navigator.appVersion.indexOf('MSIE')>0) {=0A= innerWidth =3D document.body.clientWidth;=0A= } else {=0A= innerWidth =3D window.innerWidth;=0A= }=0A= return innerWidth; =0A= }=0A= =0A= }=0A= ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/includes/tabbedlayout.js // Written by Sean Treadway 2006 sean@treadway.info=0A= // Free Beer and Free Speech - the best license of all=0A= =0A= TabControl =3D function(control_id, options) {=0A= var id =3D "#" + control_id;=0A= $$(id+' ul.tabs li a').each(function(a) {=0A= var page =3D a.getAttribute('href').match(/[-_\w]+$/i)[0];=0A= =0A= if (page !=3D options['current']) { $(page).hide() } =0A= else { $(a.parentNode).addClassName('active') }=0A= =0A= var showTab =3D function(e) {=0A= $$(id+' ul.tabs li.active').each(function(e) { = e.removeClassName('active'); })=0A= $$(id+' .tab_page[id!=3D'+page+']').each(function(e) { e.hide() });=0A= $(a.parentNode).addClassName('active');=0A= $(page).show();=0A= Event.stop(e);=0A= };=0A= =0A= Event.observe(a, 'click', showTab);=0A= });=0A= } ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/includes/modalbox1.6.0/modalbox.js /*=0A= ModalBox - The pop-up window thingie with AJAX, based on prototype and = script.aculo.us.=0A= =0A= Copyright Andrey Okonetchnikov (andrej.okonetschnikow@gmail.com), = 2006-2007=0A= All rights reserved.=0A= =0A= VERSION 1.6.0=0A= Last Modified: 12/13/2007=0A= */=0A= =0A= if (!window.Modalbox)=0A= var Modalbox =3D new Object();=0A= =0A= Modalbox.Methods =3D {=0A= overrideAlert: false, // Override standard browser alert message with = ModalBox=0A= focusableElements: new Array,=0A= currFocused: 0,=0A= initialized: false,=0A= active: true,=0A= options: {=0A= title: "ModalBox Window", // Title of the ModalBox window=0A= overlayClose: true, // Close modal box by clicking on overlay=0A= width: 500, // Default width in px=0A= height: 90, // Default height in px=0A= overlayOpacity: .65, // Default overlay opacity=0A= overlayDuration: .25, // Default overlay fade in/out duration in = seconds=0A= slideDownDuration: .5, // Default Modalbox appear slide down effect in = seconds=0A= slideUpDuration: .5, // Default Modalbox hiding slide up effect in = seconds=0A= resizeDuration: .25, // Default resize duration seconds=0A= inactiveFade: true, // Fades MB window on inactive state=0A= transitions: true, // Toggles transition effects. Transitions are = enabled by default=0A= loadingString: "Please wait. Loading...", // Default loading string = message=0A= closeString: "Close window", // Default title attribute for close = window link=0A= closeValue: "×", // Default string for close link in the header=0A= params: {},=0A= method: 'get', // Default Ajax request method=0A= autoFocusing: true, // Toggles auto-focusing for form elements. = Disable for long text pages.=0A= aspnet: false // Should be use then using with ASP.NET costrols. Then = true Modalbox window will be injected into the first form element.=0A= },=0A= _options: new Object,=0A= =0A= setOptions: function(options) {=0A= Object.extend(this.options, options || {});=0A= },=0A= =0A= _init: function(options) {=0A= // Setting up original options with default options=0A= Object.extend(this._options, this.options);=0A= this.setOptions(options);=0A= =0A= //Create the overlay=0A= this.MBoverlay =3D new Element("div", { id: "MB_overlay", opacity: "0" = });=0A= =0A= //Create DOm for the window=0A= this.MBwindow =3D new Element("div", {id: "MB_window", style: = "display: none"}).update(=0A= this.MBframe =3D new Element("div", {id: "MB_frame"}).update(=0A= this.MBheader =3D new Element("div", {id: "MB_header"}).update(=0A= this.MBcaption =3D new Element("div", {id: "MB_caption"})=0A= )=0A= )=0A= );=0A= this.MBclose =3D new Element("a", {id: "MB_close", title: = this.options.closeString, href: "#"}).update("<span>" + = this.options.closeValue + "</span>");=0A= this.MBheader.insert({'bottom':this.MBclose});=0A= =0A= this.MBcontent =3D new Element("div", {id: "MB_content"}).update(=0A= this.MBloading =3D new Element("div", {id: = "MB_loading"}).update(this.options.loadingString)=0A= );=0A= this.MBframe.insert({'bottom':this.MBcontent});=0A= =0A= // Inserting into DOM. If parameter set and form element have been = found will inject into it. Otherwise will inject into body as topmost = element.=0A= // Be sure to set padding and marging to null via CSS for both body = and (in case of asp.net) form elements. =0A= var injectToEl =3D this.options.aspnet ? $(document.body).down('form') = : $(document.body);=0A= injectToEl.insert({'top':this.MBwindow});=0A= injectToEl.insert({'top':this.MBoverlay});=0A= =0A= // Initial scrolling position of the window. To be used for remove = scrolling effect during ModalBox appearing=0A= this.initScrollX =3D window.pageXOffset || document.body.scrollLeft || = document.documentElement.scrollLeft;=0A= this.initScrollY =3D window.pageYOffset || document.body.scrollTop || = document.documentElement.scrollTop;=0A= =0A= //Adding event observers=0A= this.hideObserver =3D this._hide.bindAsEventListener(this);=0A= this.kbdObserver =3D this._kbdHandler.bindAsEventListener(this);=0A= this._initObservers();=0A= =0A= this.initialized =3D true; // Mark as initialized=0A= },=0A= =0A= show: function(content, options) {=0A= if(!this.initialized) this._init(options); // Check for is already = initialized=0A= =0A= this.content =3D content;=0A= this.setOptions(options);=0A= =0A= if(this.options.title) // Updating title of the MB=0A= $(this.MBcaption).update(this.options.title);=0A= else { // If title isn't given, the header will not displayed=0A= $(this.MBheader).hide();=0A= $(this.MBcaption).hide();=0A= }=0A= =0A= if(this.MBwindow.style.display =3D=3D "none") { // First modal box = appearing=0A= this._appear();=0A= this.event("onShow"); // Passing onShow callback=0A= }=0A= else { // If MB already on the screen, update it=0A= this._update();=0A= this.event("onUpdate"); // Passing onUpdate callback=0A= } =0A= },=0A= =0A= hide: function(options) { // External hide method to use from external = HTML and JS=0A= if(this.initialized) {=0A= // Reading for options/callbacks except if event given as a pararmeter=0A= if(options && typeof options.element !=3D 'function') = Object.extend(this.options, options); =0A= // Passing beforeHide callback=0A= this.event("beforeHide");=0A= if(this.options.transitions)=0A= Effect.SlideUp(this.MBwindow, { duration: = this.options.slideUpDuration, transition: Effect.Transitions.sinoidal, = afterFinish: this._deinit.bind(this) } );=0A= else {=0A= $(this.MBwindow).hide();=0A= this._deinit();=0A= }=0A= } else throw("Modalbox is not initialized.");=0A= },=0A= =0A= _hide: function(event) { // Internal hide method to use with overlay = and close link=0A= event.stop(); // Stop event propaganation for link elements=0A= /* Then clicked on overlay we'll check the option and in case of = overlayClose =3D=3D false we'll break hiding execution [Fix for #139] */=0A= if(event.element().id =3D=3D 'MB_overlay' && = !this.options.overlayClose) return false;=0A= this.hide();=0A= },=0A= =0A= alert: function(message){=0A= var html =3D '<div class=3D"MB_alert"><p>' + message + '</p><input = type=3D"button" onclick=3D"Modalbox.hide()" value=3D"OK" /></div>';=0A= Modalbox.show(html, {title: 'Alert: ' + document.title, width: 300});=0A= },=0A= =0A= _appear: function() { // First appearing of MB=0A= if(Prototype.Browser.IE && !navigator.appVersion.match(/\b7.0\b/)) { = // Preparing IE 6 for showing modalbox=0A= window.scrollTo(0,0);=0A= this._prepareIE("100%", "hidden"); =0A= }=0A= this._setWidth();=0A= this._setPosition();=0A= if(this.options.transitions) {=0A= $(this.MBoverlay).setStyle({opacity: 0});=0A= new Effect.Fade(this.MBoverlay, {=0A= from: 0, =0A= to: this.options.overlayOpacity, =0A= duration: this.options.overlayDuration, =0A= afterFinish: function() {=0A= new Effect.SlideDown(this.MBwindow, {=0A= duration: this.options.slideDownDuration, =0A= transition: Effect.Transitions.sinoidal, =0A= afterFinish: function(){ =0A= this._setPosition(); =0A= this.loadContent();=0A= }.bind(this)=0A= });=0A= }.bind(this)=0A= });=0A= } else {=0A= $(this.MBoverlay).setStyle({opacity: this.options.overlayOpacity});=0A= $(this.MBwindow).show();=0A= this._setPosition(); =0A= this.loadContent();=0A= }=0A= this._setWidthAndPosition =3D = this._setWidthAndPosition.bindAsEventListener(this);=0A= Event.observe(window, "resize", this._setWidthAndPosition);=0A= },=0A= =0A= resize: function(byWidth, byHeight, options) { // Change size of MB = without loading content=0A= var wHeight =3D $(this.MBwindow).getHeight();=0A= var wWidth =3D $(this.MBwindow).getWidth();=0A= var hHeight =3D $(this.MBheader).getHeight();=0A= var cHeight =3D $(this.MBcontent).getHeight();=0A= var newHeight =3D ((wHeight - hHeight + byHeight) < cHeight) ? = (cHeight + hHeight - wHeight) : byHeight;=0A= if(options) this.setOptions(options); // Passing callbacks=0A= if(this.options.transitions) {=0A= new Effect.ScaleBy(this.MBwindow, byWidth, newHeight, {=0A= duration: this.options.resizeDuration, =0A= afterFinish: function() { =0A= this.event("_afterResize"); // Passing internal callback=0A= this.event("afterResize"); // Passing callback=0A= }.bind(this)=0A= });=0A= } else {=0A= this.MBwindow.setStyle({width: wWidth + byWidth + "px", height: = wHeight + newHeight + "px"});=0A= setTimeout(function() {=0A= this.event("_afterResize"); // Passing internal callback=0A= this.event("afterResize"); // Passing callback=0A= }.bind(this), 1);=0A= =0A= }=0A= =0A= },=0A= =0A= resizeToContent: function(options){=0A= =0A= // Resizes the modalbox window to the actual content height.=0A= // This might be useful to resize modalbox after some content = modifications which were changed ccontent height.=0A= =0A= var byHeight =3D this.options.height - this.MBwindow.offsetHeight;=0A= if(byHeight !=3D 0) {=0A= if(options) this.setOptions(options); // Passing callbacks=0A= Modalbox.resize(0, byHeight);=0A= }=0A= },=0A= =0A= resizeToInclude: function(element, options){=0A= =0A= // Resizes the modalbox window to the camulative height of element. = Calculations are using CSS properties for margins and border.=0A= // This method might be useful to resize modalbox before including or = updating content.=0A= =0A= var el =3D $(element);=0A= var elHeight =3D el.getHeight() + parseInt(el.getStyle('margin-top')) = + parseInt(el.getStyle('margin-bottom')) + = parseInt(el.getStyle('border-top-width')) + = parseInt(el.getStyle('border-bottom-width'));=0A= if(elHeight > 0) {=0A= if(options) this.setOptions(options); // Passing callbacks=0A= Modalbox.resize(0, elHeight);=0A= }=0A= },=0A= =0A= _update: function() { // Updating MB in case of wizards=0A= $(this.MBcontent).update("");=0A= this.MBcontent.appendChild(this.MBloading);=0A= $(this.MBloading).update(this.options.loadingString);=0A= this.currentDims =3D [this.MBwindow.offsetWidth, = this.MBwindow.offsetHeight];=0A= Modalbox.resize((this.options.width - this.currentDims[0]), = (this.options.height - this.currentDims[1]), {_afterResize: = this._loadAfterResize.bind(this) });=0A= },=0A= =0A= loadContent: function () {=0A= if(this.event("beforeLoad") !=3D false) { // If callback passed false, = skip loading of the content=0A= if(typeof this.content =3D=3D 'string') {=0A= var htmlRegExp =3D new RegExp(/<\/?[^>]+>/gi);=0A= if(htmlRegExp.test(this.content)) { // Plain HTML given as a = parameter=0A= this._insertContent(this.content.stripScripts());=0A= this._putContent(function(){=0A= this.content.extractScripts().map(function(script) { =0A= return eval(script.replace("<!--", "").replace("// -->", ""));=0A= }.bind(window));=0A= }.bind(this));=0A= } else // URL given as a parameter. We'll request it via Ajax=0A= new Ajax.Request( this.content, { method: = this.options.method.toLowerCase(), parameters: this.options.params, =0A= onSuccess: function(transport) {=0A= var response =3D new String(transport.responseText);=0A= this._insertContent(transport.responseText.stripScripts());=0A= this._putContent(function(){=0A= response.extractScripts().map(function(script) { =0A= return eval(script.replace("<!--", "").replace("// -->", ""));=0A= }.bind(window));=0A= });=0A= }.bind(this),=0A= onException: function(instance, exception){=0A= Modalbox.hide();=0A= throw('Modalbox Loading Error: ' + exception);=0A= }=0A= });=0A= =0A= } else if (typeof this.content =3D=3D 'object') {// HTML Object is = given=0A= this._insertContent(this.content);=0A= this._putContent();=0A= } else {=0A= Modalbox.hide();=0A= throw('Modalbox Parameters Error: Please specify correct URL or HTML = element (plain HTML or object)');=0A= }=0A= }=0A= },=0A= =0A= _insertContent: function(content){=0A= $(this.MBcontent).hide().update("");=0A= if(typeof content =3D=3D 'string') {=0A= setTimeout(function() { // Hack to disable content flickering in = Firefox=0A= this.MBcontent.update(content);=0A= }.bind(this), 1);=0A= } else if (typeof content =3D=3D 'object') { // HTML Object is given=0A= var _htmlObj =3D content.cloneNode(true); // If node already a part = of DOM we'll clone it=0A= // If clonable element has ID attribute defined, modifying it to = prevent duplicates=0A= if(content.id) content.id =3D "MB_" + content.id;=0A= /* Add prefix for IDs on all elements inside the DOM node */=0A= $(content).select('*[id]').each(function(el){ el.id =3D "MB_" + = el.id; });=0A= this.MBcontent.appendChild(_htmlObj);=0A= this.MBcontent.down().show(); // Toggle visibility for hidden nodes=0A= if(Prototype.Browser.IE) // Toggling back visibility for hidden = selects in IE=0A= $$("#MB_content select").invoke('setStyle', {'visibility': ''});=0A= }=0A= },=0A= =0A= _putContent: function(callback){=0A= // Prepare and resize modal box for content=0A= if(this.options.height =3D=3D this._options.height) {=0A= setTimeout(function() { // MSIE sometimes doesn't display content = correctly=0A= Modalbox.resize(0, $(this.MBcontent).getHeight() - = $(this.MBwindow).getHeight() + $(this.MBheader).getHeight(), {=0A= afterResize: function(){=0A= this.MBcontent.show().makePositioned();=0A= this.focusableElements =3D this._findFocusableElements();=0A= this._setFocus(); // Setting focus on first 'focusable' element in = content (input, select, textarea, link or button)=0A= setTimeout(function(){ // MSIE fix=0A= if(callback !=3D undefined)=0A= callback(); // Executing internal JS from loaded content=0A= this.event("afterLoad"); // Passing callback=0A= }.bind(this),1);=0A= }.bind(this)=0A= });=0A= }.bind(this), 1);=0A= } else { // Height is defined. Creating a scrollable window=0A= this._setWidth();=0A= this.MBcontent.setStyle({overflow: 'auto', height: = $(this.MBwindow).getHeight() - $(this.MBheader).getHeight() - 13 + = 'px'});=0A= this.MBcontent.show();=0A= this.focusableElements =3D this._findFocusableElements();=0A= this._setFocus(); // Setting focus on first 'focusable' element in = content (input, select, textarea, link or button)=0A= setTimeout(function(){ // MSIE fix=0A= if(callback !=3D undefined)=0A= callback(); // Executing internal JS from loaded content=0A= this.event("afterLoad"); // Passing callback=0A= }.bind(this),1);=0A= }=0A= },=0A= =0A= activate: function(options){=0A= this.setOptions(options);=0A= this.active =3D true;=0A= $(this.MBclose).observe("click", this.hideObserver);=0A= if(this.options.overlayClose)=0A= $(this.MBoverlay).observe("click", this.hideObserver);=0A= $(this.MBclose).show();=0A= if(this.options.transitions && this.options.inactiveFade)=0A= new Effect.Appear(this.MBwindow, {duration: = this.options.slideUpDuration});=0A= },=0A= =0A= deactivate: function(options) {=0A= this.setOptions(options);=0A= this.active =3D false;=0A= $(this.MBclose).stopObserving("click", this.hideObserver);=0A= if(this.options.overlayClose)=0A= $(this.MBoverlay).stopObserving("click", this.hideObserver);=0A= $(this.MBclose).hide();=0A= if(this.options.transitions && this.options.inactiveFade)=0A= new Effect.Fade(this.MBwindow, {duration: = this.options.slideUpDuration, to: .75});=0A= },=0A= =0A= _initObservers: function(){=0A= $(this.MBclose).observe("click", this.hideObserver);=0A= if(this.options.overlayClose)=0A= $(this.MBoverlay).observe("click", this.hideObserver);=0A= if(Prototype.Browser.IE)=0A= Event.observe(document, "keydown", this.kbdObserver);=0A= else=0A= Event.observe(document, "keypress", this.kbdObserver);=0A= },=0A= =0A= _removeObservers: function(){=0A= $(this.MBclose).stopObserving("click", this.hideObserver);=0A= if(this.options.overlayClose)=0A= $(this.MBoverlay).stopObserving("click", this.hideObserver);=0A= if(Prototype.Browser.IE)=0A= Event.stopObserving(document, "keydown", this.kbdObserver);=0A= else=0A= Event.stopObserving(document, "keypress", this.kbdObserver);=0A= },=0A= =0A= _loadAfterResize: function() {=0A= this._setWidth();=0A= this._setPosition();=0A= this.loadContent();=0A= },=0A= =0A= _setFocus: function() { =0A= /* Setting focus to the first 'focusable' element which is one with = tabindex =3D 1 or the first in the form loaded. */=0A= if(this.focusableElements.length > 0 && this.options.autoFocusing = =3D=3D true) {=0A= var firstEl =3D this.focusableElements.find(function (el){=0A= return el.tabIndex =3D=3D 1;=0A= }) || this.focusableElements.first();=0A= this.currFocused =3D = this.focusableElements.toArray().indexOf(firstEl);=0A= firstEl.focus(); // Focus on first focusable element except close = button=0A= } else if($(this.MBclose).visible())=0A= $(this.MBclose).focus(); // If no focusable elements exist focus on = close button=0A= },=0A= =0A= _findFocusableElements: function(){ // Collect form elements or links = from MB content=0A= this.MBcontent.select('input:not([type~=3Dhidden]), select, textarea, = button, a[href]').invoke('addClassName', 'MB_focusable');=0A= return this.MBcontent.select('.MB_focusable');=0A= },=0A= =0A= _kbdHandler: function(event) {=0A= var node =3D event.element();=0A= switch(event.keyCode) {=0A= case Event.KEY_TAB:=0A= event.stop();=0A= =0A= /* Switching currFocused to the element which was focused by mouse = instead of TAB-key. Fix for #134 */ =0A= if(node !=3D this.focusableElements[this.currFocused])=0A= this.currFocused =3D this.focusableElements.toArray().indexOf(node);=0A= =0A= if(!event.shiftKey) { //Focusing in direct order=0A= if(this.currFocused =3D=3D this.focusableElements.length - 1) {=0A= this.focusableElements.first().focus();=0A= this.currFocused =3D 0;=0A= } else {=0A= this.currFocused++;=0A= this.focusableElements[this.currFocused].focus();=0A= }=0A= } else { // Shift key is pressed. Focusing in reverse order=0A= if(this.currFocused =3D=3D 0) {=0A= this.focusableElements.last().focus();=0A= this.currFocused =3D this.focusableElements.length - 1;=0A= } else {=0A= this.currFocused--;=0A= this.focusableElements[this.currFocused].focus();=0A= }=0A= }=0A= break; =0A= case Event.KEY_ESC:=0A= if(this.active) this._hide(event);=0A= break;=0A= case 32:=0A= this._preventScroll(event);=0A= break;=0A= case 0: // For Gecko browsers compatibility=0A= if(event.which =3D=3D 32) this._preventScroll(event);=0A= break;=0A= case Event.KEY_UP:=0A= case Event.KEY_DOWN:=0A= case Event.KEY_PAGEDOWN:=0A= case Event.KEY_PAGEUP:=0A= case Event.KEY_HOME:=0A= case Event.KEY_END:=0A= // Safari operates in slightly different way. This realization is = still buggy in Safari.=0A= if(Prototype.Browser.WebKit && !["textarea", = "select"].include(node.tagName.toLowerCase()))=0A= event.stop();=0A= else if( (node.tagName.toLowerCase() =3D=3D "input" && ["submit", = "button"].include(node.type)) || (node.tagName.toLowerCase() =3D=3D "a") = )=0A= event.stop();=0A= break;=0A= }=0A= },=0A= =0A= _preventScroll: function(event) { // Disabling scrolling by "space" key=0A= if(!["input", "textarea", "select", = "button"].include(event.element().tagName.toLowerCase())) =0A= event.stop();=0A= },=0A= =0A= _deinit: function()=0A= { =0A= this._removeObservers();=0A= Event.stopObserving(window, "resize", this._setWidthAndPosition );=0A= if(this.options.transitions) {=0A= Effect.toggle(this.MBoverlay, 'appear', {duration: = this.options.overlayDuration, afterFinish: = this._removeElements.bind(this) });=0A= } else {=0A= this.MBoverlay.hide();=0A= this._removeElements();=0A= }=0A= $(this.MBcontent).setStyle({overflow: '', height: ''});=0A= },=0A= =0A= _removeElements: function () {=0A= $(this.MBoverlay).remove();=0A= $(this.MBwindow).remove();=0A= if(Prototype.Browser.IE && !navigator.appVersion.match(/\b7.0\b/)) {=0A= this._prepareIE("", ""); // If set to auto MSIE will show horizontal = scrolling=0A= window.scrollTo(this.initScrollX, this.initScrollY);=0A= }=0A= =0A= /* Replacing prefixes 'MB_' in IDs for the original content */=0A= if(typeof this.content =3D=3D 'object') {=0A= if(this.content.id && this.content.id.match(/MB_/)) {=0A= this.content.id =3D this.content.id.replace(/MB_/, "");=0A= }=0A= this.content.select('*[id]').each(function(el){ el.id =3D = el.id.replace(/MB_/, ""); });=0A= }=0A= /* Initialized will be set to false */=0A= this.initialized =3D false;=0A= this.event("afterHide"); // Passing afterHide callback=0A= this.setOptions(this._options); //Settings options object into intial = state=0A= },=0A= =0A= _setWidth: function () { //Set size=0A= $(this.MBwindow).setStyle({width: this.options.width + "px", height: = this.options.height + "px"});=0A= },=0A= =0A= _setPosition: function () {=0A= $(this.MBwindow).setStyle({left: = Math.round((Element.getWidth(document.body) - = Element.getWidth(this.MBwindow)) / 2 ) + "px"});=0A= },=0A= =0A= _setWidthAndPosition: function () {=0A= $(this.MBwindow).setStyle({width: this.options.width + "px"});=0A= this._setPosition();=0A= },=0A= =0A= _getScrollTop: function () { //From: = http://www.quirksmode.org/js/doctypes.html=0A= var theTop;=0A= if (document.documentElement && document.documentElement.scrollTop)=0A= theTop =3D document.documentElement.scrollTop;=0A= else if (document.body)=0A= theTop =3D document.body.scrollTop;=0A= return theTop;=0A= },=0A= _prepareIE: function(height, overflow){=0A= $$('html, body').invoke('setStyle', {width: height, height: height, = overflow: overflow}); // IE requires width and height set to 100% and = overflow hidden=0A= $$("select").invoke('setStyle', {'visibility': overflow}); // Toggle = visibility for all selects in the common document=0A= },=0A= event: function(eventName) {=0A= if(this.options[eventName]) {=0A= var returnValue =3D this.options[eventName](); // Executing callback=0A= this.options[eventName] =3D null; // Removing callback after execution=0A= if(returnValue !=3D undefined) =0A= return returnValue;=0A= else =0A= return true;=0A= }=0A= return true;=0A= }=0A= };=0A= =0A= Object.extend(Modalbox, Modalbox.Methods);=0A= =0A= if(Modalbox.overrideAlert) window.alert =3D Modalbox.alert;=0A= =0A= Effect.ScaleBy =3D Class.create();=0A= Object.extend(Object.extend(Effect.ScaleBy.prototype, = Effect.Base.prototype), {=0A= initialize: function(element, byWidth, byHeight, options) {=0A= this.element =3D $(element)=0A= var options =3D Object.extend({=0A= scaleFromTop: true,=0A= scaleMode: 'box', // 'box' or 'contents' or {} with = provided values=0A= scaleByWidth: byWidth,=0A= scaleByHeight: byHeight=0A= }, arguments[3] || {});=0A= this.start(options);=0A= },=0A= setup: function() {=0A= this.elementPositioning =3D this.element.getStyle('position');=0A= =0A= this.originalTop =3D this.element.offsetTop;=0A= this.originalLeft =3D this.element.offsetLeft;=0A= =0A= this.dims =3D null;=0A= if(this.options.scaleMode=3D=3D'box')=0A= this.dims =3D [this.element.offsetHeight, = this.element.offsetWidth];=0A= if(/^content/.test(this.options.scaleMode))=0A= this.dims =3D [this.element.scrollHeight, = this.element.scrollWidth];=0A= if(!this.dims)=0A= this.dims =3D [this.options.scaleMode.originalHeight,=0A= this.options.scaleMode.originalWidth];=0A= =0A= this.deltaY =3D this.options.scaleByHeight;=0A= this.deltaX =3D this.options.scaleByWidth;=0A= },=0A= update: function(position) {=0A= var currentHeight =3D this.dims[0] + (this.deltaY * position);=0A= var currentWidth =3D this.dims[1] + (this.deltaX * position);=0A= =0A= currentHeight =3D (currentHeight > 0) ? currentHeight : 0;=0A= currentWidth =3D (currentWidth > 0) ? currentWidth : 0;=0A= =0A= this.setDimensions(currentHeight, currentWidth);=0A= },=0A= =0A= setDimensions: function(height, width) {=0A= var d =3D {};=0A= d.width =3D width + 'px';=0A= d.height =3D height + 'px';=0A= =0A= var topd =3D Math.round((height - this.dims[0])/2);=0A= var leftd =3D Math.round((width - this.dims[1])/2);=0A= if(this.elementPositioning =3D=3D 'absolute' || this.elementPositioning = =3D=3D 'fixed') {=0A= if(!this.options.scaleFromTop) d.top =3D this.originalTop-topd + 'px';=0A= d.left =3D this.originalLeft-leftd + 'px';=0A= } else {=0A= if(!this.options.scaleFromTop) d.top =3D -topd + 'px';=0A= d.left =3D -leftd + 'px';=0A= }=0A= this.element.setStyle(d);=0A= }=0A= }); ------=_NextPart_000_0000_01CAFC18.A3C14F10 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: https://act.garfield-county.com/assessor/web/includes/sessionTimeout.jsp =0A= =0A= =0A= =0A= // shave 2 minutes off actual server timeout to avoid having the server = expire before the client=0A= var sessionTimeoutSetting =3D 458;=0A= var warnExecuter;=0A= var countdownExecuter;=0A= var timeRemaining;=0A= =0A= =0A= function keepAlive() {=0A= try {=0A= Modalbox.hide();=0A= } catch (e) {}=0A= startExecuter()=0A= if (countdownExecuter !=3D null) {=0A= countdownExecuter.stop();=0A= countdownExecuter =3D null;=0A= }=0A= // TODO: Ping server=0A= new Ajax.Request('../web/about.jsp');=0A= }=0A= =0A= function countdown() {=0A= var p =3D $('timeoutMessage');=0A= if (p) {=0A= p.update('You have been idle for ' + sessionTimeoutSetting + ' = minutes.<br/>You will be logged out in ' + timeRemaining + ' second' + = (timeRemaining=3D=3D1 ? '' : 's') + '.');=0A= Modalbox.resizeToContent();=0A= }=0A= if (timeRemaining <=3D 0 && countdownExecuter!=3Dnull) {=0A= countdownExecuter.stop();=0A= // forward user to logout page=0A= // CONSIDER: Call something a bit more lightweight =0A= window.location.href=3D'../web/logout.jsp?expired=3Dtrue';=0A= }=0A= timeRemaining--;=0A= }=0A= =0A= function warnUserTimeout(pe) {=0A= warnExecuter.stop();=0A= timeRemaining =3D 30;=0A= countdownExecuter =3D new PeriodicalExecuter(countdown, 1);=0A= =0A= Modalbox.show('<p id=3D"timeoutMessage"></p><input type=3D"button" = onClick=3D"Modalbox.hide();" value=3D"Stay logged in"/>',=0A= {=0A= title: '',=0A= width: 300,=0A= transitions: false,=0A= afterHide: keepAlive=0A= }=0A= );=0A= }=0A= =0A= function startExecuter() {=0A= // show dialog 30 seconds before timeout actually occurs so the session = will still be available =0A= warnExecuter =3D new PeriodicalExecuter(warnUserTimeout, = sessionTimeoutSetting*60 - 30);=0A= }=0A= =0A= startExecuter(); ------=_NextPart_000_0000_01CAFC18.A3C14F10--