From: Subject: Report: U.S. now a steal for businesses compared with other large industrial nations - Los Angeles Times Date: Mon, 18 Aug 2008 15:48:26 -0700 MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_0000_01C90149.DA9862B0"; type="text/html" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1896 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://articles.latimes.com/2008/mar/28/business/fi-cheap28 Report: U.S. now a = steal for businesses compared with other large industrial nations - Los = Angeles Times
You are here: LAT Home=20 > Articles > 2008 > March > 28 > Business =
 

Archive for Friday, March 28,=20 2008

Report: U.S. now a steal for businesses = compared=20 with other large industrial nations

March 28, = 2008

NEW YORK =96 Thanks to the weakened dollar, = the U.S. has leapfrogged France, Britain and other = European=20 countries as a cheaper place to do business.

A new study released by the auditing and consulting firm KPMG shows that the U.S. = moved up on=20 the list of most cost-efficient places around the world. Researchers = compared=20 136 cities in 10 countries in North America, Europe and Asia, but did = not=20 include fast-growing China.

Mark MacDonald, the global director of KPMG = Competitive Alternatives, said the survey authors found the U.S. to be more cost competitive than they=92d ever = seen because=20 of the plunging dollar.

In 2006, the U.S. ranked seventh, and = lagged behind=20 several other G7 countries. This year, though, = only=20 Mexico and Canada were cheaper. The U.S. is = now cheaper=20 than Britain, the Netherlands, Italy and France.

=93Now the cost of business is considerably = higher in=20 these countries due largely to the depreciation of the U.S. dollar,=94 MacDonald said.

=93Currency change was a central theme in = this year=92s=20 study,=94 study co-author Glenn Mair said.

Mair, director of MMK Consulting Inc., said = the=20 double-digit gains in the value of the Canadian dollar, Australian = dollar,=20 British pound and other currencies when compared to the dollar had = shifted the=20 competitiveness equation.

Mexico, which is new to the study, was cheapest overall. It was added = to=20 incorporate a major trading country that is a party to the North = American Free=20 Trade Agreement.

The study is done every two years, and the 2008 survey was the = seventh KPMG has done.

Among the larger cities, the cheapest cities in which to operate were = Puebla,=20 Guadalajara and Monterrey, all in Mexico. In the U.S.,=20 the cheapest places were Atlanta, Tampa, Fla., and the Dallas-Fort=20 Worth area.

The San Francisco Bay Area =96 which includes Silicon Valley and San = Jose =96 was=20 the most expensive in the nation, edging out New York for that dubious=20 distinction. London, Frankfurt and Manchester, England, were all more = expensive=20 than San Francisco.

Paris was slightly less expensive than New York.

The study measured competitiveness using labor costs, taxes, real = estate and=20 utilities, as well as non-monetary factors. It included Australia, = Canada,=20 France, Germany, Italy, Japan, Mexico, the Netherlands, Britain and all = 50=20 states in the U.S. Those were all compared = against a=20 benchmark developed by taking the average cost of doing business in = U.S. locations.

Save/Share:    =20 =20   =20   =20   =20    =20 =20   =20

California and = the world. Get=20 the Times from $1.35 a week

Ads= by=20 Google
| Email This=20 | Print This | Text Size: 3DIncrease 3DDecrease=20=20
Advertisement
 
  1. College=20 Summit encourages low-income high school seniors with average = grades=20
  2. This=20 is one fight Jeff Kent isn't going to win=20
  3. Loving=20 your house again=20
  4. Use=20 it or lose it: Yes, it's true=20
  5. Free=20 digital texts begin to challenge costly college textbooks in = California=20
  6. Bacteria=20 played a role in 1918 pandemic flu deaths, scientists say=20
  7. Who's=20 rich? McCain and Obama have very different definitions=20
  8. Foreign=20 airlines cutting flights to Los Angeles International Airport=20
  9. L.A.=20 could learn a thing or two from Portland=20
  10. Vinyl=20 records make a return
  1. Who's=20 rich? McCain and Obama have very different definitions=20
  2. Musharraf's=20 upcoming speech sets off speculation=20
  3. 'Tropic=20 Thunder' bolts ahead of 'Dark Knight' at the box office=20
  4. Obama,=20 back on campaign trail, calls McCain a continuation of Bush=20
  5. Nastia=20 Liukin loses tiebreaker and the gold medal for uneven bars=20
  6. Andre=20 Ethier helps Dodgers walk off with a win=20
  7. Free=20 digital texts begin to challenge costly college textbooks in = California=20
  8. Man=20 fatally shoots himself in Rosemead after police chase, fiery crash =
  9. Vinyl=20 records make a return=20
  10. Forever=20 21 development on South Central Farm site is protested=20
Advertisement
 
 
 
LAT Home |=20 My LATimes | Print=20 Edition | All=20 Sections
Jobs= | Cars.= com |=20 Real=20 Estate | More=20 Classifieds

Business

=20 = =


 
 

More on LATimes.com

California/Local News | = Business | Sports | World News | = Entertainment | = Health | Travel | Opinion

Classifieds

CareerBuilder |=20 Apartments.com | Cars.com | Shopping=20 | Recycler | Jobs | Pets | All Classifieds =

3D"Los

Copyright 2008 Los Angeles Times
Privacy=20 Policy | T= erms of=20 Service | Advertise | = Home=20 Delivery | Permissions=20 | Help & = Services | Contact=20

 
------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/external/mixx.gif R0lGODlhEQASAMQAAP///6oXH8MoLsMmLcInLcQnMMQnLuRNVv///f7//+RNVMMmL//+/9Y/RsIn L8MoMNQ/RdVARtQ+R/7+/tU+RakYH6sYIKkYHeVOVeVOV+ZMVNU+Q+NMU+NNVuZMVqwWHyH5BAAA AAAALAAAAAARABIAAAWuIJAAZGmSCXIy5wRMyVgyTUNFzdZIkQRRJglHozgcMIdO0RgoQRSFwqBA MBAIjoKgSaIoHIOB46ElCAyLJgOSGRBOKoRAUAE0FA/0S2UKcyEeBQ8qbxMLDAhVagARBwIkCyQG AAwCBVx2B28AkQADAAhomI2PAAUkpQIDFk54A2cDC3MOBJcoEQoGA1avBQZgDx8lEo5Vta8PWAR1 JQHOARbPARfOJ9bXKNgmKQAhADs= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/external/google.gif R0lGODlhEQASAMQAAGeaZ+r9/SQ7eLjT/pCoyvb85tj/2Dlej/T//pI5NOf+2Bokif3+/H2N59v7 /k1qo8fU08/b+P7884+cp+j/5sv3+9Tn9fP+9Gh10/v3/tX/4e/1/vTz8P/28rz3vfDr/ywAAAAA EQASAAAFsiAjjmQ5HkCqrqt4KDBseJpGFVWVuNflEA+B8EEYBCg7xiEQqAgsm41jINQUkocLAqOQ dDKZiwWC6CQfgYng9mUgmBcJVtMQMDpuMAIhuboqBwcdEhciG3sFfkoOBwIcDD0MEnsIigcODwsM HAgXHBAfYxdYCBMLAZ0SEQILCxNmIg8ZGwJkmxmhCwQZWEwWCw0OAQ5TupZ7ARitQkIYFHIuNhoO GgbW1zVJLNsqSSbfIyEAOw== ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/external/digg.gif R0lGODlhEQASAMQAANDQ0PT09Pj4+MvLy9zc3Ozs7N7e3p6enqioqNjY2NbW1qamppKSkujo6OHh 4ZWVla+vr6KiouPj4+bm5uTk5KSkpNTU1JycnJaWlvz8/P39/Zqamvv7+/7+/pmZmf///ywAAAAA EQASAAAFx+AnjmQ5dqf2ZR/HneKrZa+LQMjyoGNwXBfVJ9KZXQg8TkSQ6WA6AoSg0PAYWJ8Dp8MJ OB6QRWFCwCwqoseqYEhsohIH4JLwiDCfAoEwwDM2HoB1IhsacQADGwETCQAECQpqHxoXGAyVOXkN BA4Xki0fhZMQAhMGDgkHBDEfHQcCrREfFAaPDBMnHhh2HxAZBAgEFh4JMRuTH08XHw4IAAp0IxgC Ag3HCx8KCBYADBIjuoAPHAcbGBeXG6siASKwH+08NCb0JiEAOw== ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/external/delicious.gif R0lGODlhEQASAMQAAPr6/icpKrq7txYD+CYhn+fo/eXl4p2gwx8bagYFB9zc29rc1CoR9VlTn/j/ 7eDh3tXV1ezy/vz+99LTy0E8ozQtwvLu/x8gHvj/9jw6O0BCPeLh6cDF2/j4+AAAAP///ywAAAAA EQASAAAFl+AnjmQ5BleApghCtO0lyqIkRQ2l6w0dAB+ABBMhDI7IgCjQAQ4jFeSRofzQAA4HVDqg zkRYbVTqtX5sQMsYWf5JDLfCelq9ZDIafObA7x98HoGCHB0FhgUWdQmBCY0CDwoLkgtVAYyMAgYP C5GUSx6LoAkCBQqREwY0F4yNowYbCpsPlYKhArAKEJB1KikpKCorVSbEIyEAOw== ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/external/facebook.gif R0lGODlhEQASAMQAAGmGt+v7/0tYdf34/0VUmEhghzdXikRYh/r+89fu//X+/+///ztWmjpjj/b5 /z1blD5ZnGd3rj5UkWdxjjpaoff/+jhYkTNakjFahnuAwj9QfURdnF5zoHuFtv7+/v///ywAAAAA EQASAAAFjeAnjmRpnmghrKxwsBP5WA/EWMehaoREWjSb5MEJGCUbko3BgBAOxsCCQFAym4+DQuGi kpoS2guBEPCqoybk8VgsyJUpWkRhbC6NRIKsb5LqGwYYDwVkLnY/FgwNDQ8aDh4CBhcXShsMGBgG Bx4OAg+UJACjoxEZAwMRow2iABmkpwMdqyQttjAoubq5IQA7 ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/external/yahoo.gif R0lGODlhEQASAMQAAP/Kzf3x5GAAAP/+88sXFagpM84TMfz9/xICAv/++v/0///4//z08PX//+v/ ///u+fwBBf/S6JkkMv/j67oSEsghG/j3/f/7+/r+//n/+3c+P///7fv////9//7+/v///ywAAAAA EQASAAAFtuAnjmQ5dlfiMcPWdVnGedclLkmatBYs07bP4NJxOBQL5GswwDREtaJj8UguBw2MKBIB cCeMjXjD4dREhXRBonmMyeYgokIgCBANg4FQoVQgECIHAHQVDQ4RewKEgCIoAXUVAHoIC5MFCI4X AwAEfnYLHXoFAiIJFhYXG4CZHQprCBmCBxYHqxB4HQsRAgcMghYDEmsSwwEaGhMJCSIeQgLQ0QEM CA8DzM0e2tvbJh/c4M7e4yYhADs= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/external/reddit.gif R0lGODlhEQASAMQAAK6wsmppaPexlsjDwebn5/X/+8uWfv/ozoaFg/Xz7//9/8FwUpSUldPW2P36 9vf39+3t8Oz18v7Gqv/++tDNy6Cdm/v6/Hl3ePj///r/+PL0+d/f3ru9vv39/f/+/////ywAAAAA EQASAAAFvOAnjmQpZlmhqlh0MRcCdN2HrgWGAVxUIZyP5eMpeiwJACDGgRBIxkrgAqAQNgBEgAGp iSYBxEEgOUgECUagQZpc0AbDeOHYXBJDj0LBAVg0EB8JBB0UFSN6ChAXAxAMAAwbFBcbHw82KxFa FRUwlJYnKxgxAwOGAQleRHseGzI6Fg1AeasKFosAGhgFSw0el18TEw9SDhMfCAipRcHCGwEUDhAB QSKqIg9TAQAB3ZXXHx0PFH19pcAm6SYhADs= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/external/newsvine.gif R0lGODlhEQASAJEAAP///wBUIv///wAAACH5BAEAAAIALAAAAAARABIAAAI2hI+Zwe2xGJAPnmZg RS9reXUWFn4eeWZTV4IUeGIjvJo1TX4Ot681v5tZYq4eUYci3oaKJqIAADs= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/btn-text-increase.gif R0lGODlhCQAJAIABAAB6qv///yH5BAEAAAEALAAAAAAJAAkAAAIRhI+hG7bwoJINIktzjizeUwAA Ow== ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/btn-text-decrease.gif R0lGODlhCQAJAIABAAB6qv///yH5BAEAAAEALAAAAAAJAAkAAAIQhI+hG8brXgPzTHllfKiDAgA7 ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://ad.doubleclick.net/adj/trb.latimes/biz;ptype=s;rg=ur;pos=1;dcopt=ist;sz=300x250;tile=1;ord=87654321? document.write('');=0A= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://ad.doubleclick.net/adj/trb.latimes/biz;ptype=s;rg=ur;pos=2;sz=300x250;tile=2;ord=87654321? document.write('');=0A= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://ad.doubleclick.net/adj/trb.latimes/biz;ptype=s;rg=ur;pos=T;sz=728x90;tile=3;ord=87654321? document.write('3D"Click');=0A= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/logo-lat-main.gif?1217444655 R0lGODlh3wAdAMQAAAAAAP///2pnaH16e6KgoZiWl4aEhb28vXNxcY+Njfb19ePi4trZ2cfGxrSz s6uqquzs7NDQ0P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEA ABIALAAAAADfAB0AAAX/YCAGixIwAzMu6ui+cCzDDfE0AWTOfO//wKAQthgajwFFwaBoCJ6E4sOB PD6ez8JgV+26FASu9+cYYAWGR0R8SojA7DFSYRAsCOczTu5TIBIIWAN8XnRoEIQ8eHlnaQ4OD38k gQYQRYlGCWgGBA2BZ26YPIh+WIiiQhB1TwiXqCIOjLJnBBGfT0yvPwxYexADdQkHuj1XT8PEPgYF Zw/EpZyQCauyCBAFzFlxyS/GVCOh3DzUBuI+xgItr57qAQ0FCAYDf08DBKcnDu3mMJoC4QEA8oGA zwcEBGaeuOIHI9aTfUYguiCgroGZBAwMtIL1jWEfBv4GgfPhqWMMMAMa/yh4FOTAA3TOYKBwRaAS DwXTFsY4sHGEw3QxyugcUZKggFFv/B0o1ZHlCgR73hAg8BSZ1Fwzrgl04QCBAwgREvgTgG+ri2tY DAwNECEhFqs+BixYIIhGL5ysIsjgyQquCxS4uPzcBxgNDLSg+qzCsUidU3efYhpC0+RTmCSrEEhc +cnvCWpQsgnoaDZJ11sCvLpYoMktZSALRLpdiK5enpgjUID+VxBkaiy4B+fWdAv3SjRneo7LIuKT 428/nzyIfcY1mga7Tbqbd8YVBDyomTipNxIGAee1DwVYJEDBgUdRf7wUAdNFg7bAD+SxWVgfagTI sBfBGXoFINx6WAyYYP8AfKUTwSMHFCTDT6e85dM3DWSUIAvopLBbA+mFUlgCom2B4EMNQGiCAt2J YBZ7KhRmWADUVCGXCHSR94JwnmBRgAgQYEGFEgS6iEUA6Gx04FhIYtHKgUF88mNzT4TzmIFYqIOF G3gd6U4zb2ypgFs/whiDaN+YBeWWRj6BRGwuzLZjljgKOYKdIpiJpZs0ArcnUH+KQM0DvDwkRKGj jSDaJVeuWaWiXrKFZwBs5vgQlC4o+I+LQdEpApsBbcnAVBLyMN8I+kk3p6GfPtHRpAf+BGRqyMTq ZZBQneCkAwcMUCAPUGpKlYEmObopLJEi+uqjWCZQxE8pEYDRCCwyq6b/p5Qyax0W9/wAjFhiUSOS T9hOCqunsqJQgGDoHqnuDuzlMe0MmCYkUqPlMhuoCMre+WhXVokmbwsJhXItq9kea9EsCPhg6SwL Gbtsosiy+tMDKawK6MUZDzcLoJ0e4wI6HHGV77H76uqqvwIAs+5fYzHSJjIHgwyqCE4YENbNM2AM LriDmoywuStXvLGQcdjq6jYZIRBBvMD6+JeXLDnw7MlWJkt0ahJBprNooXxySs1a6oskVjzLcOML QepodNkUJ9xUu3w2RPdRMsR2CZMzjPdEQcwRG5AKxmZdd7+tokyDNYlzqaqgDKjDwBS9sBwOdlyk DUNbMlDjisQsz21x/6SwXD163aVPog7fMrQdOAkWO+AEIoWTe/jWAH3Hr3JsDqjzA7sZ0BUDAl/m pAnYRRC5CXW1foBYejGwUKoCBHcybruacCA6FOHI+PbctrCANWMSygAiY5U6ES3INgVIOX/+evNP OyCKPSsOwOtGbAdEjsgZJ/rYprpSnUJ5RQEPS00sDniS9AxgAAVxXcMWgJjUNOAAfhPAAQgQnZY9 yFOo+UevLiGuAzRoSxYpwm6mwZseHKQRXYkKYgokGgAd4GEcVEVaUkQ9DaohD16piQJKQQsoGEWA rIJAzBS4g221UAZLFNkLyOG0eKllfGcYxsJm4Yt4peZz1aGgF5UkC/9fASGD9eCgA8YyrD99kTp+ siIEGHCLXG0xLSYQWFoukY1o9I8BGzTbnwqAj7Y8wh8A4sF4wIWLGGRwWOPBCnU0Y59PGABRkgBS NpSDs8CM4DusuAQCpnAeKGyjbyFkBG46qR7MPCEqqbrMJL5on4Tk4iCPYI9JCrAGGYABIgvg5QsO MKU2rIUr+ftkFGRgjFWCSAxK0In0XoI8J72AeGvBnEwK4ArGJaETRwClLAogkbBAU5j2WWUOuLmT l52gYTgipy4Q6JEfEIkVy8zBqErThWMeQQEMeMQjGHBKfvizngidTB7s4QA8eAahEI2oRMfQwWoU dKIYzahGXwCMR8AWQxa/2qhIR6rR+LDlAeDqFklXOoQQAAA7 ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://ad.doubleclick.net/adj/trb.latimes/biz;ptype=s;rg=ur;pos=1;sz=88x31;tile=4;ord=87654321? document.write('3D"Click');=0A= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://articles.latimes.com/images/logo-lat-gray.gif R0lGODlhkAASAMQAAJ2dndHR0ampqb29vdbW1qGhoerq6rGxsa2trc3NzeHh4cXFxZqamrW1tdnZ 2e3t7cHBwbm5uaWlpfz8/MrKyvj4+Pb29vPz897e3vLy8ubm5uTk5Nzc3PDw8P////v7+yH5BAAA AAAALAAAAACQABIAAAX/oOc5nYNw36aIbOu+rTUIFGbBeA5Xn+63ikDCoamwOgbPZfJr4gYHCoDB EAg2Th3hUKjess7HIfIFtyYQKhWAGAQICMJGMNAwzT8C46AgFAoSAXg5AQwFSYM5GQdUEIkiegIH XGpUBQ4NVAuPOhEMDh4TCQ9lnCyFDBSmLxUGCAybiR8RBBUWAQcCEhESBxsVFw4YqzgCDAQetzAP ARcvfRkcRjAfC8YHd6EOGR4GBNksG8gvD6AimQktGQQ9LLcGCistHxrdCA0BAqAE5hnDIgrqVSDg zEOHWi80cHBxIUAHDCuMOaog6IwDCXsQJUswRcKAdgmHMACAJdkABhEw/0gsU0EKgwHcRNzCuHAC OhEfCBir6GHDqwIC5LnAAOCAhQYFbhBAtgHjgg8OABTgcPLAAwPGBhTc2KWkB5WGrng4mZRiCwwN 6EwpIAgDgigRBmh8EQBDhi7pPGhoMOXAqz0PPMC5RwXBCgUIgFbp4OHmBr7GDlUYAAAChAbjXHQo AMDA3QKMl3oIgLHAhgVdBHhi4JERAwRJTAh4JcDCBcoDBqQUwYEKCp4e0jSYoMDY8EyxdFRjUnWa hVcKjo5cwWhByymq0kTQgDFChZsUXmt41cDByJg4wjdQYgyZ6NFePCxgAGFCeAYBKqwelgmChi4L 9FbAViJUkJVZLISHjf8H4TniiQAYEFAPDhokwEMhBUz4HAPDbGBIEidNtBN861HA1ncMpFOIAIIB QEFUsGDgwDQuVCdCVSOMs+IN84mIXzdSBXbSAMEVQAAGI9WAQTaZeAecgj3MR2QaahTwFAwJAKUL Faok88pCG0hVjyeOWGCMinsQsEASNqUInwABLLCCBlOo4YsLE7wSiwKGZOCAjvH16OWPBkgFIgOY LRCYAnWO1MCEJyXwwZN7MCGlBxUkIMECrwDAmAvfTXJAAxgd0MOGYBoyJn3JnAkfW1+0iaaLBU0w 3gEQTJEXC3kiKsIFAnjqAAkNBcqqmYQaOlYVCIUyR1xUVITUBZm200H/VVG+BMlCGKLHggaxTDBB IQDUs+EwGny47CbIonnAESgKsuIdjDVUQa+ZseAJACvkiUCOCXhThRGCVvAKMoUWIKS2oTDGDKbG DDOBAJhFQPEAFCxwUmUWqCdYA3YVIoG3E2wQAQUPBObBA10IAuwxX033ASNXICtIeBJg8IEC1lUn ykj5GUBBBg0koEEGrwDHW2FXIVCPW8OJzJh2E3RwZskA8DvBgzpzEIAYARjwQLDIINmoGhx04BoC CGxH50gS0DHXUVNI9c+ycVxkCD9UCMDBAmtFgJdgXbABQQczj7QAARi9tkAHaWQtSbNnnFQFAgtc gBYDCyVAxQEG7DvA3hxAE2UIBhyNdEAC0knegDQe+DXA4nFSzEQFgBspgsaosfUCBR5RFkELBPRV QgFWTQA4BDdogJsnOXdDGQKfbgDUCg8ALgASqx8AQATeuiBDnX/s/WsELk6A1VRfIW+AfQBo1dNJ DXzAQdHeQ7CVDZp9CpDKXzGCBuYSDmfYikATIEACqheTkolAAwGAwAA6YIEECCA5CvCW2FqgAcZo wFwKAAcMJkAVvxRtbhNamUYMECsFgGQC/MNAEi4gFGLY8Czkw1w+anjDHZSih0AMYoH8coDGUWEA IhSiEpsQAgA7 ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Location: http://m.trb.com/b/ss/tribprod/1/H.14--NS/0 R0lGODlhAgACAIAAAP///wAAACH5BAEAAAAALAAAAAACAAIAAAIChFEAOw== ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://articles.latimes.com/stylesheets/main.css?1217444655 HTML { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } BODY { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } DIV { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } SPAN { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } OBJECT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } IFRAME { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } H1 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } H2 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } H3 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } H4 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } H5 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } H6 { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } P { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } BLOCKQUOTE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } PRE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } A { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } abbr { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } ACRONYM { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } ADDRESS { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } CODE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } DEL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } DFN { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } EM { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } IMG { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } Q { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } DL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } DT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } DD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } OL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } UL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } LI { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } FIELDSET { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } FORM { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } LABEL { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } LEGEND { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } TABLE { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } CAPTION { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } TBODY { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } TFOOT { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } THEAD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } TR { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } TH { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } TD { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; = BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 100%; BORDER-BOTTOM-WIDTH: 0px; = PADDING-BOTTOM: 0px; MARGIN: 0px; VERTICAL-ALIGN: baseline; PADDING-TOP: = 0px; FONT-FAMILY: inherit; BORDER-RIGHT-WIDTH: 0px } BODY { FONT-SIZE: 75%; COLOR: #333; FONT-FAMILY: arial, helvetica, sans-serif } H1 { FONT-SIZE: 225% } A { TEXT-DECORATION: none } A:link { COLOR: #007aaa; TEXT-DECORATION: none } A:visited { COLOR: #20576b } A:hover { TEXT-DECORATION: underline } UNKNOWN { FONT-WEIGHT: bold; COLOR: red } EM { FONT-STYLE: italic } BODY { BACKGROUND: url(../images/bg.gif) #e5e6da fixed repeat-x 0px 90px; = MARGIN: 0px } #container { PADDING-RIGHT: 1px; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; MARGIN: 0px = auto; PADDING-TOP: 1px; POSITION: relative } DIV.hidden { DISPLAY: none } DIV#container { WIDTH: 996px } .canvas_outer { BACKGROUND: url(../images/canvas-shadow-left.png) repeat-y; WIDTH: = 996px } .canvas_inner { BACKGROUND: url(../images/canvas-shadow-right.png) repeat-y right top; = WIDTH: 996px } .canvas_content { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: white; = PADDING-BOTTOM: 0px; MARGIN: 0px 8px; PADDING-TOP: 0px } .canvas_bottom_left { BACKGROUND: url(../images/canvas-shadow-bottom-left.png) no-repeat left = top } .canvas_bottom_right { BACKGROUND: url(../images/canvas-shadow-bottom-right.png) no-repeat = right top } .canvas_bottom { BACKGROUND: url(../images/canvas-shadow-bottom.png) repeat-x 50% top; = MARGIN: 0px 8px } .canvas_top_left { BACKGROUND: url(../images/canvas-shadow-top-left.png) no-repeat left = bottom } .canvas_top_right { BACKGROUND: url(../images/canvas-shadow-top-right.png) no-repeat right = bottom } .canvas_top { BACKGROUND: url(../images/canvas-shadow-top.png) repeat-x 50% bottom; = MARGIN: 0px 8px } .canvas_bottom { FONT-SIZE: 4px } .canvas_top { FONT-SIZE: 4px } #branding { LEFT: 1px; WIDTH: 996px; POSITION: absolute; TOP: 0px } .leaderboard { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; MARGIN: 0px = auto; WIDTH: 728px; PADDING-TOP: 5px; TEXT-ALIGN: center } .leaderboard IMG { VERTICAL-ALIGN: middle } #nav_tools { PADDING-RIGHT: 8px; BORDER-TOP: #ccc 1px solid; PADDING-LEFT: 8px; = FONT-SIZE: 92%; PADDING-BOTTOM: 8px; PADDING-TOP: 8px; POSITION: = relative; TEXT-ALIGN: right } #nav_tools A { MARGIN-LEFT: 0.75em } #nav_main { PADDING-RIGHT: 9px; PADDING-LEFT: 9px; FONT-SIZE: 92%; PADDING-BOTTOM: = 1px; COLOR: #b4b4b4; PADDING-TOP: 1px } #nav_main A { COLOR: #323232 } #nav_features { FLOAT: left } #nav_features A { PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #nav_features A.end { BORDER-TOP-WIDTH: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px } #nav_classified { FLOAT: right; TEXT-ALIGN: right } #nav_classified A { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-WEIGHT: bold; = PADDING-BOTTOM: 0px; PADDING-TOP: 0px } #nav_classified A.end { BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; BORDER-LEFT-WIDTH: 0px; = BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px } #masthead { PADDING-RIGHT: 9px; PADDING-LEFT: 9px; FLOAT: left; PADDING-BOTTOM: = 7px; PADDING-TOP: 9px } #branding_logo { FONT-SIZE: 235%; FLOAT: left; MARGIN: 2px 15px 0px 0px; WIDTH: 225px } #branding_section { DISPLAY: inline; PADDING-LEFT: 15px; FONT-WEIGHT: normal; FONT-SIZE: = 235%; BORDER-LEFT: #ccc 1px solid; COLOR: #2286aa } #branding_section .beta { FONT-WEIGHT: bold; FONT-SIZE: 40%; MARGIN-LEFT: 0.5em; COLOR: #c4c9c9 } #branding_section A:visited { COLOR: #007aaa } #sitesearch { MARGIN-TOP: 10px; DISPLAY: block; FONT-SIZE: 100%; FLOAT: right; WIDTH: = 475px } #sitesearch { DISPLAY: inline; VERTICAL-ALIGN: middle } #sitesearch .search_input { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 18px; = BORDER-LEFT-COLOR: #ccc; BORDER-BOTTOM-COLOR: #ccc; PADDING-BOTTOM: 0px; = WIDTH: 240px; BORDER-TOP-STYLE: inset; BORDER-TOP-COLOR: #ccc; = PADDING-TOP: 0px; BORDER-RIGHT-STYLE: inset; BORDER-LEFT-STYLE: inset; = BORDER-RIGHT-COLOR: #ccc; BORDER-BOTTOM-STYLE: inset } #sitesearch .btn { BORDER-RIGHT: 0px; PADDING-RIGHT: 10px; BORDER-TOP: 0px; PADDING-LEFT: = 10px; FONT-WEIGHT: bold; FONT-SIZE: 90%; BACKGROUND: = url(/images/home-searchbtn3-bg.gif) no-repeat left top; PADDING-BOTTOM: = 8px; MARGIN: 0px; TEXT-TRANSFORM: uppercase; BORDER-LEFT: 0px; WIDTH: = 70px; COLOR: #fff; PADDING-TOP: 4px; BORDER-BOTTOM: 0px; TEXT-ALIGN: = center } #sitesearch .btn_image { =09 } #small_ad { WIDTH: 88px; HEIGHT: 31px } #small_ad SCRIPT { DISPLAY: none } #small_ad IMG { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } #nav_section { BORDER-TOP-WIDTH: 0px; CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: = 0px; FONT-SIZE: 100%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; TEXT-ALIGN: = center } #nav_section .nav { BACKGROUND: url(../images/hrz-nav-bg.gif) repeat-x; FLOAT: left; = OVERFLOW: hidden; WIDTH: 100%; HEIGHT: 28px } #nav_section .nav UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } #nav_section .nav LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; BACKGROUND: = url(../images/hrz-nav-sep.gif) no-repeat right top; FLOAT: left; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px } #nav_section .nav A { PADDING-RIGHT: 16px; DISPLAY: block; PADDING-LEFT: 16px; = PADDING-BOTTOM: 6px; COLOR: white; PADDING-TOP: 6px } #nav_section .nav LI.last { WIDTH: 93px } #nav_section .nav LI.selected { BACKGROUND: url(../images/hrz-nav-bg-sel.gif) repeat-x right top } .topic-entertainment #nav_section { CLEAR: both; PADDING-RIGHT: 4px; BORDER-TOP: #e5e6da 1px solid; = PADDING-LEFT: 4px; FONT-SIZE: 120%; PADDING-BOTTOM: 4px; PADDING-TOP: = 4px; HEIGHT: 28px; TEXT-ALIGN: center } .topic-entertainment #nav_section .nav { DISPLAY: inline } #content { MARGIN-TOP: 224px } #content .canvas_content { PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: white; = PADDING-BOTTOM: 8px; WIDTH: 964px; PADDING-TOP: 8px } #content_main { PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FLOAT: left; PADDING-BOTTOM: = 8px; MARGIN: 0px; WIDTH: 580px; PADDING-TOP: 8px } #content_sub { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: right; PADDING-BOTTOM: = 0px; MARGIN: 0px; WIDTH: 350px; PADDING-TOP: 0px } #content H1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 5px; COLOR: #545454; PADDING-TOP: 0px } #content H2 { CLEAR: left; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 180%; = PADDING-BOTTOM: 0.25em; COLOR: #545454; PADDING-TOP: 0.75em } H3 { FONT-SIZE: 160%; COLOR: #545454 } #content H4 { FONT-SIZE: 150% } #content P { LINE-HEIGHT: 140% } .topic-entertainment #content { MARGIN-TOP: 232px; POSITION: relative } #site_info { CLEAR: both; MARGIN-BOTTOM: 50px; WIDTH: 996px; POSITION: relative } #site_info { COLOR: #9a9a9a } #site_info A { COLOR: #9a9a9a } #copyright H3 { PADDING-RIGHT: 10px; DISPLAY: inline } #copyright IMG { VERTICAL-ALIGN: middle } #site_info H4 { FONT-WEIGHT: bold; FONT-SIZE: 100%; COLOR: #9a9a9a } #site_info .canvas_content { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; BACKGROUND: white; = PADDING-BOTTOM: 18px; LINE-HEIGHT: 140%; PADDING-TOP: 18px } .column_3#site_info .column { PADDING-RIGHT: 3%; FLOAT: left; PADDING-BOTTOM: 2em; WIDTH: 30%; COLOR: = #b5b5b5; LINE-HEIGHT: 160% } #copyright { CLEAR: both; BORDER-TOP: #e5e6da 1px solid; FONT-SIZE: 98%; WIDTH: = 100%; PADDING-TOP: 15px; TEXT-ALIGN: right } #copyright DIV { FLOAT: left } #breadcrumbs { PADDING-RIGHT: 17px; PADDING-LEFT: 17px; PADDING-BOTTOM: 2px; = PADDING-TOP: 2px } #email_and_print { PADDING-BOTTOM: 7px; MARGIN: 1em 7px; COLOR: #007aaa; TEXT-ALIGN: right } #email_and_print IMG { VERTICAL-ALIGN: top } #content_sub .ad_mrec { BORDER-RIGHT: #e6e6da 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: = #e6e6da 1px solid; PADDING-LEFT: 0px; MARGIN-BOTTOM: 1em; = PADDING-BOTTOM: 20px; BORDER-LEFT: #e6e6da 1px solid; PADDING-TOP: 20px; = BORDER-BOTTOM: #e6e6da 1px solid; POSITION: relative; TEXT-ALIGN: center } .advertisement { BORDER-RIGHT: #e6e6da 1px solid; PADDING-RIGHT: 1.5em; BORDER-TOP: = #e6e6da 1px solid; PADDING-LEFT: 1.5em; PADDING-BOTTOM: 20px; MARGIN: = 2ex 0px 1em; BORDER-LEFT: #e6e6da 1px solid; PADDING-TOP: 15px; = BORDER-BOTTOM: #e6e6da 1px solid; POSITION: relative; TEXT-ALIGN: center } .advertisement .ad_heading { WIDTH: 100%; POSITION: relative; TOP: -2.85ex; TEXT-ALIGN: center } .advertisement .ad_heading SPAN { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; FONT-SIZE: 80%; PADDING-BOTTOM: = 5px; TEXT-TRANSFORM: uppercase; COLOR: #9e987c; PADDING-TOP: 5px; = BACKGROUND-COLOR: white } .advertisement .ad_heading A { FONT-WEIGHT: normal; COLOR: #9e987c } #adsense .text-ad-ent { FONT-SIZE: 95%; MARGIN: 2ex 0px; TEXT-ALIGN: left } .amazon_ad { MARGIN: 1.5em auto; WIDTH: 500px } .box_striped#feeds { PADDING-RIGHT: 9px; PADDING-LEFT: 9px; FONT-SIZE: 95%; PADDING-BOTTOM: = 12px; WIDTH: 332px; PADDING-TOP: 12px } #feeds .subscribe { PADDING-RIGHT: 10px; FLOAT: left; WIDTH: 80px } #feeds .buttons { FLOAT: right; WIDTH: 240px; TEXT-ALIGN: left } #feeds .outer { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px; BORDER-BOTTOM: #c1c3b2 1px solid } #feeds #btn_mylatimes { WIDTH: 103px } #feeds #btn_more_rss { MARGIN-LEFT: 9px; WIDTH: 125px } #feeds .inner { BORDER-RIGHT: #e5e6da 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: = #e5e6da 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; = BORDER-LEFT: #e5e6da 1px solid; COLOR: #545454; PADDING-TOP: 0px; = BORDER-BOTTOM: #e5e6da 1px solid; HEIGHT: 16px; BACKGROUND-COLOR: #fff } #feeds IMG { VERTICAL-ALIGN: middle } #feeds IMG.border { BORDER-RIGHT: #e5e6da 1px solid } #feeds .my_lat { FONT-WEIGHT: bold; FONT-SIZE: 110%; COLOR: #3f75af! important; = LINE-HEIGHT: 100% } #feeds .my_lat_color { COLOR: #1b4473! important } #feeds A { COLOR: #545454 } #feeds A:hover { TEXT-DECORATION: none } #save_share { MARGIN: 1em 0px } .box_solid { BACKGROUND: #e5e6da; POSITION: relative } .box_border { BORDER-RIGHT: #e5e6da 3px solid; BORDER-TOP: #e5e6da 3px solid; = BORDER-LEFT: #e5e6da 3px solid; BORDER-BOTTOM: #e5e6da 3px solid; = POSITION: relative } .box_faded { BACKGROUND: url(../images/bg-about-gradient.gif) repeat-x; POSITION: = relative } .box_striped { BACKGROUND: url(../images/bg-diag-stripes-tan.gif); POSITION: relative } .box_faded { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; MARGIN-BOTTOM: 1em; = PADDING-BOTTOM: 12px; PADDING-TOP: 8px } .box_solid { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; MARGIN-BOTTOM: 1em; = PADDING-BOTTOM: 12px; PADDING-TOP: 8px } .box_striped { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; MARGIN-BOTTOM: 1em; = PADDING-BOTTOM: 12px; PADDING-TOP: 8px } .box_border { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; MARGIN-BOTTOM: 1em; = PADDING-BOTTOM: 12px; PADDING-TOP: 8px } .box_faded .content { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: white; = PADDING-BOTTOM: 5px; PADDING-TOP: 5px } .box_solid .content { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: white; = PADDING-BOTTOM: 5px; PADDING-TOP: 5px } .box_striped .content { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: white; = PADDING-BOTTOM: 5px; PADDING-TOP: 5px } .box_border .content { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: white; = PADDING-BOTTOM: 5px; PADDING-TOP: 5px } .box_faded H2 { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: = 180%! important; PADDING-BOTTOM: 4px! important; MARGIN: 0px; = PADDING-TOP: 0px! important } .box_solid H2 { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: = 180%! important; PADDING-BOTTOM: 4px! important; MARGIN: 0px; = PADDING-TOP: 0px! important } .box_striped H2 { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: = 180%! important; PADDING-BOTTOM: 4px! important; MARGIN: 0px; = PADDING-TOP: 0px! important } .box_border H2 { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: = 180%! important; PADDING-BOTTOM: 4px! important; MARGIN: 0px; = PADDING-TOP: 0px! important } .box_heading { PADDING-RIGHT: 0px! important; PADDING-LEFT: 0px! important; FONT-SIZE: = 180%! important; PADDING-BOTTOM: 4px! important; MARGIN: 0px; = PADDING-TOP: 0px! important } .buttons { TEXT-ALIGN: center } #content_sub .content { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 15px; = PADDING-TOP: 10px } .clear { CLEAR: both; FONT-SIZE: 1px; FLOAT: none; WIDTH: 100%; LINE-HEIGHT: = 1px; HEIGHT: 1px } .clear_left { CLEAR: left; FONT-SIZE: 1px; FLOAT: none; WIDTH: 100%; LINE-HEIGHT: = 1px; HEIGHT: 1px } HR { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = #e5e6da; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 100%; = COLOR: #e5e6da; BORDER-TOP-STYLE: none; LINE-HEIGHT: 1px; PADDING-TOP: = 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 0.1em; = BORDER-BOTTOM-STYLE: none } HR.section_divider { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = #e5e6da; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 100%; = COLOR: #e5e6da; BORDER-TOP-STYLE: none; LINE-HEIGHT: 1px; PADDING-TOP: = 0px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 0.1em; = BORDER-BOTTOM-STYLE: none } HR.clear { CLEAR: both; BORDER-RIGHT: #e5e6da 1px solid; BORDER-TOP: #e5e6da 1px = solid; BACKGROUND: white; FLOAT: none; BORDER-LEFT: #e5e6da 1px solid; = WIDTH: 100%; LINE-HEIGHT: 1px; BORDER-BOTTOM: #e5e6da 1px solid; HEIGHT: = 1px } .column { FLOAT: left } .half LI { WIDTH: 50% } .half .column { WIDTH: 50% } .half IMG { WIDTH: 120px; HEIGHT: 83px } .third LI { WIDTH: 33% } .third .column { WIDTH: 33% } .third IMG { WIDTH: 80px; HEIGHT: 55px } .fifth LI { WIDTH: 20% } .fifth .column { WIDTH: 20% } .fifth IMG { =09 } .subtext { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2ex; COLOR: = #9a9a9a; PADDING-TOP: 3px } .small { FONT-SIZE: 11px } .fleft { FLOAT: left } .fright { FLOAT: right } .centered { TEXT-ALIGN: center } .clear { CLEAR: both } .raquo_bullet { COLOR: #007aaa; TEXT-INDENT: -0.75em; LIST-STYLE-TYPE: none } .raquo_bullet LI:unknown { content: "=BB " } .box_faded#most_tabs { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; PADDING-BOTTOM: 12px; MARGIN: = 0px; PADDING-TOP: 12px } #most_tabs .tab_panel { DISPLAY: none } #most_tabs .selected { DISPLAY: block } #most_tabs .tabs { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } #most_tabs .tabs LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(../images/tab-right.gif) no-repeat right top; FLOAT: left; = PADDING-BOTTOM: 0px; MARGIN: 0px 0px 0px 1px; WIDTH: 33%; PADDING-TOP: = 0px; WHITE-SPACE: nowrap } #most_tabs .tabs A { PADDING-RIGHT: 1px; DISPLAY: block; PADDING-LEFT: 0px; FONT-SIZE: 110%; = BACKGROUND: url(../images/tab-left.gif) no-repeat left top; = PADDING-BOTTOM: 6px; MARGIN: 0px; COLOR: #545454; PADDING-TOP: 5px; = TEXT-ALIGN: center } #most_tabs .tabs LI.selected { BACKGROUND: url(../images/tab-selected-right.gif) no-repeat right top } #most_tabs .tabs LI.selected A { FONT-WEIGHT: bold; BACKGROUND: url(../images/tab-selected-left.gif) = no-repeat left top } #most_tabs .content { CLEAR: both; BORDER-RIGHT: white 1px solid; PADDING-RIGHT: 12px; = BORDER-TOP: white 1px solid; PADDING-LEFT: 12px; PADDING-BOTTOM: 12px; = BORDER-LEFT: white 1px solid; PADDING-TOP: 12px; BORDER-BOTTOM: white = 1px solid } #most_tabs .content LI { MARGIN: 0.5ex 1.5em 1.5ex } #related_topics .content { POSITION: relative } #related_topics_list { WIDTH: 100%; LIST-STYLE-TYPE: none } #related_topics_list LI { FLOAT: left; PADDING-TOP: 5px; TEXT-ALIGN: center } #related_topics_list IMG { BORDER-RIGHT: #e5e6da 2px solid; BORDER-TOP: #e5e6da 2px solid; = BORDER-LEFT: #e5e6da 2px solid; BORDER-BOTTOM: #e5e6da 2px solid } .box_solid#article_photo { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; PADDING-BOTTOM: 0px; MARGIN: = 1em 0px 0px; PADDING-TOP: 12px; TEXT-ALIGN: center } .box_solid#article_photo P { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 95%; PADDING-BOTTOM: = 2px; VERTICAL-ALIGN: bottom; COLOR: #9a9a9a; PADDING-TOP: 2px; = TEXT-ALIGN: right } #article_photo_caption { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 5px; MARGIN: = 0px; PADDING-TOP: 5px; BORDER-BOTTOM: #e5e6da 1px solid } #article_photo_caption STRONG { TEXT-TRANSFORM: uppercase } #article_content { MARGIN-BOTTOM: 7px; PADDING-BOTTOM: 12px } #article_content H3 { MARGIN-TOP: 2ex; FONT-WEIGHT: bold; FONT-SIZE: 100% } #article_content HR { MARGIN: 1em 0px } #article_content .subhead { FONT-SIZE: 115%; MARGIN: 1em 0px; COLOR: #666; FONT-STYLE: italic; = FONT-FAMILY: Georgia, "Times New Roman" } .kicker { TEXT-TRANSFORM: uppercase; COLOR: #888; LETTER-SPACING: 0.1em } #article_body { PADDING-TOP: 1ex } #article_body P { FONT-SIZE: 115%; MARGIN: 2ex 0px } #article_body .caps { FONT-SIZE: 95% } .byline { FONT-SIZE: 115%; MARGIN: 2ex 0px 0px } .date { COLOR: #9a9a9a } #corrections { BORDER-RIGHT: #e5e6da 1px; BORDER-TOP: #e5e6da 1px solid; = MARGIN-BOTTOM: 2em; BORDER-LEFT: #e5e6da 1px; BORDER-BOTTOM: #e5e6da 1px = solid } .correction { PADDING-RIGHT: 1em; PADDING-LEFT: 1em; FONT-SIZE: 110%; PADDING-BOTTOM: = 1em; LINE-HEIGHT: 140%; PADDING-TOP: 1em } .for_the_record { FONT-WEIGHT: bold; FONT-SIZE: 0.95em; TEXT-TRANSFORM: uppercase } .correction_note { PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; BACKGROUND: = #fea; PADDING-BOTTOM: 1px; COLOR: #948454; PADDING-TOP: 1px } #article_related H4 { FONT-WEIGHT: bold; FONT-SIZE: 120%; TEXT-TRANSFORM: uppercase } #article_galleries { MARGIN-TOP: 2ex; LIST-STYLE-TYPE: none } #article_galleries LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px; PADDING-TOP: 0px } #article_galleries .photo IMG { BORDER-RIGHT: #d0d0c4 2px solid; BORDER-TOP: #d0d0c4 2px solid; = BORDER-LEFT: #d0d0c4 2px solid; BORDER-BOTTOM: #d0d0c4 2px solid } #article_galleries .photo P { MARGIN-BOTTOM: 0px } #article_galleries .photo STRONG { TEXT-TRANSFORM: uppercase; COLOR: #ff984d } #article_stories { FLOAT: left } #article_stories UL { MARGIN-TOP: 2ex } #article_stories LI { MARGIN-BOTTOM: 2ex; MARGIN-LEFT: 0.75em } .related_articles { FONT-SIZE: 115% } .additional_links { FONT-SIZE: 115% } .additional_links { MARGIN-TOP: 1em; MARGIN-BOTTOM: 1.5em } .additional_links DIV { FONT-WEIGHT: bold; MARGIN-BOTTOM: 0.5em } .related_articles H3 { FONT-SIZE: 110% } .related_articles UL { MARGIN-TOP: 0.2em; PADDING-LEFT: 1.5em; MARGIN-BOTTOM: 1.5em } .related_articles LI { MARGIN-BOTTOM: 0.2em } .related_articles SPAN { FONT-SIZE: 0.9em; MARGIN-LEFT: 0.1em } .related_keywords UL { FONT-SIZE: 120%; LIST-STYLE-TYPE: none } #pagination { FLOAT: right; TEXT-ALIGN: right } #pagination .single_page { MARGIN-LEFT: 1.5em } #save_share IMG { BORDER-RIGHT: #e5e6da 1px solid; BORDER-TOP: #e5e6da 1px solid; = VERTICAL-ALIGN: middle; BORDER-LEFT: #e5e6da 1px solid; BORDER-BOTTOM: = #e5e6da 1px solid } #user_comments { MARGIN: 7ex 0px 3ex } #user_comments H3 { FONT-SIZE: 200% } #user_comments H4 { FONT-WEIGHT: bold; MARGIN: 1.5ex 0px 2.5ex; TEXT-TRANSFORM: uppercase } #user_comments LABEL { DISPLAY: block; FONT-WEIGHT: bold } #user_comments #comment_name { DISPLAY: block; WIDTH: 100% } #user_comments #comment_box { DISPLAY: block; WIDTH: 100% } #comment_form { FLOAT: left; WIDTH: 45% } #comment_form DIV { MARGIN-BOTTOM: 2.5ex } #comment_form P { MARGIN-BOTTOM: 2.5ex } P#comments_tos { FONT-SIZE: 95%; MARGIN-BOTTOM: 1.5ex } #discussion { FLOAT: right; WIDTH: 45% } #discussion OL { LIST-STYLE-POSITION: inside } #discussion LI { MARGIN-BOTTOM: 2.5ex } #discussion .submitted_by { COLOR: #9a9a9a } #discussion SPAN.submitted_name { COLOR: #545454 } #paper_subscription { BORDER-RIGHT: #e5e6da 0px solid; PADDING-RIGHT: 2ex; BORDER-TOP: = #e5e6da 1px solid; PADDING-LEFT: 2ex; PADDING-BOTTOM: 2ex; MARGIN: 1ex = 0px; BORDER-LEFT: #e5e6da 0px solid; PADDING-TOP: 2ex; BORDER-BOTTOM: = #e5e6da 1px solid; TEXT-ALIGN: center } #small_feature { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; MARGIN-BOTTOM: 6ex; = PADDING-BOTTOM: 0.5ex; PADDING-TOP: 1ex; BORDER-BOTTOM: #e5e6da 1px = solid } #small_feature .box_solid { PADDING-RIGHT: 15px; PADDING-LEFT: 15px; PADDING-BOTTOM: 15px; = PADDING-TOP: 15px; POSITION: static } #small_feature UL { PADDING-LEFT: 1em; FLOAT: left; MARGIN-LEFT: 0.5em; BORDER-LEFT: = #ddded3 1px solid; WIDTH: 49% } #small_feature LI { MARGIN-LEFT: 1.5em } #small_article { FLOAT: left; WIDTH: 46% } #small_article IMG { PADDING-RIGHT: 1em; FLOAT: left } #small_article P { FLOAT: left; WIDTH: 65% } #small_article STRONG A { FONT-WEIGHT: bold; COLOR: #ff6701 } #gallery_main { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FLOAT: left; PADDING-BOTTOM: = 30px; WIDTH: 585px; PADDING-TOP: 7px; POSITION: relative } #gallery_sub { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FLOAT: right; PADDING-BOTTOM: = 0px; WIDTH: 345px; PADDING-TOP: 0px; POSITION: relative } #inpage_gallery { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 2ex; WIDTH: = 585px; PADDING-TOP: 2ex; TEXT-ALIGN: center } #gallery_nav { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; FONT-SIZE: 95%; = PADDING-BOTTOM: 8px; PADDING-TOP: 8px; BACKGROUND-COLOR: #ecede5 } #photo_credit { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; FONT-SIZE: 95%; = PADDING-BOTTOM: 8px; PADDING-TOP: 8px; BACKGROUND-COLOR: #ecede5 } #prev_photo { PADDING-LEFT: 10px; FONT-WEIGHT: bold; BACKGROUND: = url(../images/prev-inactive.gif) no-repeat left center; FLOAT: left } A#prev_photo { BACKGROUND: url(../images/prev-active.gif) no-repeat left center } #next_photo { PADDING-RIGHT: 10px; FONT-WEIGHT: bold; BACKGROUND: = url(../images/next-inactive.gif) no-repeat right center; FLOAT: right } A#next_photo { BACKGROUND: url(../images/next-active.gif) no-repeat right center } #photo_matte { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(../images/bg-inpage-gallery.gif) center top; PADDING-BOTTOM: 0px; = MARGIN: 1px 0px; OVERFLOW: hidden; WIDTH: 585px; PADDING-TOP: 0px; = HEIGHT: 425px } #photo_matte { VERTICAL-ALIGN: middle } #photo_matte SPAN { TEXT-ALIGN: center } #inpage_gallery #save_share { MARGIN: 5ex 0px } #gallery_photo_text { MARGIN-TOP: 6.5ex } #gallery_photo_text H2 { FONT-WEIGHT: bold; FONT-SIZE: 120% } #gallery_photo_text P { MARGIN: 2.5ex 0px } #more_galleries { POSITION: relative } #more_galleries H2 { FONT-SIZE: 200%; MARGIN-BOTTOM: 0.75ex } #more_galleries .content { PADDING-RIGHT: 12px; PADDING-LEFT: 12px; BACKGROUND: white; = PADDING-BOTTOM: 8px; PADDING-TOP: 8px } #more_galleries UL { FONT-WEIGHT: bold; LIST-STYLE-TYPE: none } #more_galleries UL LI { PADDING-BOTTOM: 3ex } H2.highlight_name { MARGIN-BOTTOM: 0.5em } H2.highlight_name A { COLOR: #a28333 } A.contextual_link { FONT-WEIGHT: bold } #archive_home { BACKGROUND: url(/images/bg-feature-gradient.gif) repeat-x 50% bottom; = MARGIN-BOTTOM: 3em } .archive_view { PADDING-RIGHT: 2%; PADDING-LEFT: 2%; FLOAT: left; PADDING-BOTTOM: 2%; = WIDTH: 46%; PADDING-TOP: 2% } UL.years_list { FONT-SIZE: 160%; MARGIN: 1em 0px; LINE-HEIGHT: 130%; LIST-STYLE-TYPE: = none } UL.keywords_list { FONT-SIZE: 160%; MARGIN: 1em 0px; LINE-HEIGHT: 130%; LIST-STYLE-TYPE: = none } .monthly_links { MARGIN-TOP: -0.2em; FONT-WEIGHT: bold; MARGIN-LEFT: 0.8em; = LIST-STYLE-TYPE: none } .monthly_keyword_links { MARGIN-TOP: 0em; MARGIN-LEFT: 0.8em } #article_links_404 { MARGIN-TOP: 1em; FONT-SIZE: 120%; MARGIN-LEFT: 2.8em } H1 .kicker { FONT-SIZE: 12px; TEXT-TRANSFORM: uppercase } .keywords { MARGIN: 2em 0px } .keywords UL { MARGIN: 0.25em 0px 0.5em 0.5em } .keywords LI { MARGIN: 0.25em 0px 0px 1.5em } .keyword_count { PADDING-RIGHT: 0.2em; PADDING-LEFT: 0.2em; PADDING-BOTTOM: 0px; = MARGIN-RIGHT: 0.4em; PADDING-TOP: 0px } A.keyword_link { COLOR: #545454 } #content .kw_5 { MARGIN-BOTTOM: 24px } #content .kw_6 { MARGIN-BOTTOM: 24px } #content .kw_7 { MARGIN-BOTTOM: 24px } #content .kw_8 { MARGIN-BOTTOM: 24px } #content .kw_9 { MARGIN-BOTTOM: 24px } #content .kw_10 { MARGIN-BOTTOM: 24px } #content .kw_11 { MARGIN-BOTTOM: 24px } #content .kw_11 H3 { BORDER-TOP: #343434 3px solid; FONT-SIZE: 32px } #content .kw_11 H3 .keyword_count { BACKGROUND: #343434; COLOR: white } #content .kw_10 H3 { BORDER-TOP: #3d3d3d 3px solid; FONT-SIZE: 30px } #content .kw_10 H3 .keyword_count { BACKGROUND: #3d3d3d; COLOR: white } #content .kw_9 H3 { BORDER-TOP: #444 2px solid; FONT-SIZE: 28px } #content .kw_9 H3 .keyword_count { BACKGROUND: #444; COLOR: white } #content .kw_8 H3 { BORDER-TOP: #4d4d4d 2px solid; FONT-SIZE: 26px } #content .kw_8 H3 .keyword_count { BACKGROUND: #4d4d4d; COLOR: white } #content .kw_7 H3 { BORDER-TOP: #545454 2px solid; FONT-SIZE: 24px } #content .kw_7 H3 .keyword_count { BACKGROUND: #545454; COLOR: white } #content .kw_6 H3 { BORDER-TOP: #646464 2px solid; FONT-SIZE: 22px } #content .kw_6 H3 .keyword_count { BACKGROUND: #646464; COLOR: white } #content .kw_5 H3 { BORDER-TOP: #747474 2px solid; FONT-SIZE: 20px } #content .kw_5 H3 .keyword_count { BACKGROUND: #747474; COLOR: white } #content .kw_4 { FLOAT: left; WIDTH: 49% } #content .kw_4 H3 { BORDER-TOP: #848484 1px solid; FONT-SIZE: 18px } #content .kw_4 H3 .keyword_count { BACKGROUND: #848484; COLOR: white } #content .kw_3 { FLOAT: left; WIDTH: 49% } #content .kw_3 H3 { BORDER-TOP: #949494 1px solid; FONT-SIZE: 16px } #content .kw_3 H3 .keyword_count { BACKGROUND: #949494; COLOR: white } #content .kw_2 { FLOAT: left; WIDTH: 49% } #content .kw_2 H3 { BORDER-TOP: #a4a4a4 1px solid; FONT-SIZE: 14px } #content .kw_2 H3 .keyword_count { BACKGROUND: #a4a4a4; COLOR: white } .newline { CLEAR: left; MARGIN-RIGHT: 2% } #keyword_articles { FONT-SIZE: 14px; MARGIN: 1em 0px 2em } #keyword_articles H2 { BORDER-TOP: #e6e6da 1px solid; MARGIN-TOP: 0.75em; FONT-SIZE: 18px; = PADDING-TOP: 0.5em } #keyword_articles H2 A { COLOR: #545454 } #keyword_articles UL { PADDING-LEFT: 1.5em } #keyword_articles UL.short_list { PADDING-LEFT: 4px; LIST-STYLE-TYPE: none } #keyword_articles UL.short_list LI { PADDING-RIGHT: 0px; BORDER-TOP: #545454 1px dotted; PADDING-LEFT: 0px; = PADDING-BOTTOM: 0.5em; PADDING-TOP: 0.5em } #keyword_articles LI { MARGIN-BOTTOM: 0.25em } #keyword_articles .section { FONT-SIZE: 0.8em; TEXT-TRANSFORM: uppercase; COLOR: #ff730c } #content #keyword_articles .kw_date { FONT-SIZE: 12px; COLOR: #999 } #related { FONT-SIZE: 13px; MARGIN-BOTTOM: 3em } #tag_cloud { MARGIN: 1em 0px 2em } #explore_list { FONT-SIZE: 14px; MARGIN-BOTTOM: 1.25em; LINE-HEIGHT: 1.5em; = LIST-STYLE-TYPE: none } #keyword_day_nav { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: = url(/images/bg-header-gradient.gif) repeat-x; PADDING-BOTTOM: 5px; = MARGIN: 1em 0px 2em; PADDING-TOP: 5px } #keyword_day_nav DIV { FLOAT: left; WIDTH: 33% } #keyword_day_nav .center_link { TEXT-ALIGN: center } #keyword_day_nav .right_link { TEXT-ALIGN: center } .group { FLOAT: left; MARGIN-LEFT: 5px; WIDTH: 48% } .date_link A { COLOR: white; TEXT-ALIGN: center } #year H3 { MARGIN: 0.5em 0px } #year .month { MARGIN-TOP: 2em; PADDING-BOTTOM: 2em } #year A.day_number:hover { FONT-WEIGHT: bold; BACKGROUND: #007aaa; COLOR: white; TEXT-DECORATION: = none } #year .day_number { PADDING-BOTTOM: 1.5em } #year .monthName { DISPLAY: none } #year .calendar TABLE { FLOAT: left; WIDTH: 48% } #year .calendar_helper TD { HEIGHT: 36px } .calendar_helper TH { PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-WEIGHT: bold; FONT-SIZE: = 11px; PADDING-BOTTOM: 2px; PADDING-TOP: 2px; TEXT-ALIGN: right } .calendar_helper TD { BORDER-TOP: #e6e6da 1px solid; FONT-SIZE: 11px; WIDTH: 14%; TEXT-ALIGN: = right } .calendar_helper TD.otherMonth { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; BACKGROUND: #eee; = PADDING-BOTTOM: 2px; COLOR: #999; PADDING-TOP: 2px } .calendar_helper .day { =09 } .calendar_helper .today { FONT-WEIGHT: bold; BACKGROUND: #fffadd } #year .popular_articles { FLOAT: left; MARGIN-LEFT: 4%; WIDTH: 48% } #year .popular_articles OL { PADDING-LEFT: 1.5em } #year .popular_articles LI { MARGIN-TOP: 0.3em } .nav_years { MARGIN-TOP: 1em; FONT-WEIGHT: bold; MARGIN-BOTTOM: 1em } .nav_years .next { FLOAT: right } #years_bottom { MARGIN-BOTTOM: 4em } #month .empty_day { HEIGHT: 72px } .monthly_archive #content_sub { DISPLAY: none } .monthly_archive #content_main { WIDTH: 98% } #month .calendar_helper { WIDTH: 800px } #month .calendar_helper CAPTION { VISIBILITY: hidden } .article_dot { BORDER-RIGHT: white 1px solid; BORDER-TOP: white 1px solid; DISPLAY: = block; BACKGROUND: #ccc; FLOAT: left; WIDTH: 7px; POSITION: relative; = HEIGHT: 7px; TEXT-DECORATION: none } .article_dot:hover { BACKGROUND: #ff0; TEXT-DECORATION: none } #month .day_number { PADDING-BOTTOM: 5em } .article_blocks { PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; = PADDING-TOP: 3px; POSITION: relative } .section_blocks:hover .section_title { DISPLAY: inline } .link_title { BORDER-RIGHT: #cdcebe 2px solid; DISPLAY: none; Z-INDEX: 1000; LEFT: = -50px; BORDER-LEFT: white 1px solid; WIDTH: 200px; BORDER-BOTTOM: = #cdcebe 2px solid; POSITION: absolute; TOP: 16px; BACKGROUND-COLOR: = #eeefe7; TEXT-ALIGN: left; TEXT-DECORATION: none } .link_title .section { BORDER-RIGHT: white 1px solid; PADDING-RIGHT: 5px; PADDING-LEFT: 5px; = FONT-WEIGHT: bold; BACKGROUND: #dfe0d3; PADDING-BOTTOM: 2px; COLOR: = #64635f; PADDING-TOP: 2px } .link_title .text { BORDER-RIGHT: white 1px solid; PADDING-RIGHT: 5px; PADDING-LEFT: 5px; = FONT-SIZE: 15px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px } .link_title .date { PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 8px; COLOR: = #64635f; PADDING-TOP: 0px } .article_dot:hover .link_title { DISPLAY: block } .section_title { PADDING-RIGHT: 4px; DISPLAY: none; PADDING-LEFT: 4px; FONT-WEIGHT: = bold; LEFT: 0px; PADDING-BOTTOM: 2px; COLOR: white; PADDING-TOP: 2px; = POSITION: absolute; TOP: -14px; TEXT-ALIGN: left } .sec_business .section_title { BACKGROUND: #060 } .sec_calendar .section_title { BACKGROUND: #639 } .sec_editorial_pages .section_title { BACKGROUND: #990 } .sec_features .section_title { BACKGROUND: #900 } .sec_metro .section_title { BACKGROUND: #199 } .sec_news .section_title { BACKGROUND: #006 } .sec_sports .section_title { BACKGROUND: #d62 } #month TD:hover { BACKGROUND: #ffc; TEXT-DECORATION: none } #month TD:hover A { TEXT-DECORATION: none } #month SPAN.day_number { FONT-SIZE: 1.5em } #month .day_keywords { PADDING-RIGHT: 0px; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 1em; = LINE-HEIGHT: 120%; PADDING-TOP: 0px; TEXT-ALIGN: left } #month .day_keywords .first { COLOR: #a28333 } #month .day_keywords .not-first { COLOR: #007aaa } #month .day_keywords DIV { MARGIN-TOP: 4px } A.green { BACKGROUND: green } .keyword-0 { FONT-SIZE: 150% } .keyword-1 { FONT-SIZE: 140% } .keyword-2 { FONT-SIZE: 130% } .keyword-3 { FONT-SIZE: 120% } .keyword-4 { FONT-SIZE: 110% } .keyword-5 { FONT-SIZE: 100% } .css1 { BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-LEFT: = #999 1px solid; LINE-HEIGHT: 1.5em; BORDER-BOTTOM: #999 1px solid } .css2 { BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-LEFT: = #999 1px solid; LINE-HEIGHT: 1.5em; BORDER-BOTTOM: #999 1px solid } .css3 { BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-LEFT: = #999 1px solid; LINE-HEIGHT: 1.5em; BORDER-BOTTOM: #999 1px solid } .css4 { BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-LEFT: = #999 1px solid; LINE-HEIGHT: 1.5em; BORDER-BOTTOM: #999 1px solid } .css5 { BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-LEFT: = #999 1px solid; LINE-HEIGHT: 1.5em; BORDER-BOTTOM: #999 1px solid } .css6 { BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-LEFT: = #999 1px solid; LINE-HEIGHT: 1.5em; BORDER-BOTTOM: #999 1px solid } .css1 { FONT-SIZE: 100%; BACKGROUND-COLOR: #e5e6da } .css2 { FONT-SIZE: 110%; BACKGROUND-COLOR: #e5e6cb } .css3 { FONT-SIZE: 120%; BACKGROUND-COLOR: #e5e6ba } .css4 { FONT-SIZE: 135%; BACKGROUND-COLOR: #e5e6a9 } .css5 { FONT-SIZE: 150%; BACKGROUND-COLOR: #e5e698 } .css6 { FONT-SIZE: 165%; BACKGROUND-COLOR: #e5e687 } #lead_articles .article { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1.25em; = PADDING-TOP: 1.25em; BORDER-BOTTOM: #bbb 1px dotted } .article_list_item { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1.25em; = PADDING-TOP: 1.25em } UNKNOWN { BORDER-TOP: #bbb 1px dotted } #lead_articles .article .info { MARGIN-BOTTOM: 0.3em; COLOR: #9999a2 } .article_list_item .info { MARGIN-BOTTOM: 0.3em; COLOR: #9999a2 } #lead_articles .article .info .section { FONT-WEIGHT: bold; COLOR: #ff7300 } .article_list_item .info .section { FONT-WEIGHT: bold; COLOR: #ff7300 } #lead_articles .article DIV { FONT-SIZE: 1.15em; LINE-HEIGHT: 1.3em } .article_list_item DIV { FONT-SIZE: 1.15em; LINE-HEIGHT: 1.3em } #lead_articles .article IMG { BORDER-RIGHT: #e5e6da 2px solid; BORDER-TOP: #e5e6da 2px solid; = BORDER-LEFT: #e5e6da 2px solid; BORDER-BOTTOM: #e5e6da 2px solid } .article_list_item IMG { BORDER-RIGHT: #e5e6da 2px solid; BORDER-TOP: #e5e6da 2px solid; = BORDER-LEFT: #e5e6da 2px solid; BORDER-BOTTOM: #e5e6da 2px solid } #columnists { BACKGROUND: url(/images/bg-diag-stripes-tan.gif); MARGIN-BOTTOM: 2em; = PADDING-BOTTOM: 1em } .columnist { CLEAR: both; PADDING-RIGHT: 1em; PADDING-LEFT: 1em; PADDING-BOTTOM: = 0px; PADDING-TOP: 1em } .columnist IMG { BORDER-RIGHT: #e5e6da 3px solid; BORDER-TOP: #e5e6da 3px solid; FLOAT: = left; BORDER-LEFT: #e5e6da 3px solid; MARGIN-RIGHT: 1em; BORDER-BOTTOM: = #e5e6da 3px solid } .columnist_feature { PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: white; = PADDING-BOTTOM: 8px; MARGIN-LEFT: 70px; PADDING-TOP: 8px } .columnist H3 A { FONT-SIZE: 110%; COLOR: #545454 } .columnist .info .section { FONT-WEIGHT: bold; COLOR: #ff7300 } .author_column { FLOAT: left; WIDTH: 32%; LIST-STYLE-TYPE: none } .fresh { PADDING-RIGHT: 2px; PADDING-LEFT: 2px; FONT-SIZE: 9px; BACKGROUND: = #ff0; PADDING-BOTTOM: 1px; COLOR: black; PADDING-TOP: 1px } #content H4.article_list_date { PADDING-RIGHT: 8px; MARGIN-TOP: 2em; PADDING-LEFT: 8px; FONT-SIZE: = 1.1em; BACKGROUND: #deeeff; PADDING-BOTTOM: 2px; PADDING-TOP: 2px } #next_prev_links { MARGIN-BOTTOM: 1em } UNKNOWN { FONT-SIZE: 13px } #navigation { WIDTH: 100% } #navigation #link_to_past { FLOAT: left } #navigation #link_to_future { FLOAT: right } #navigation #dateline H1 { TEXT-ALIGN: center } #navigation #sort { TEXT-ALIGN: right } #sidenav { BORDER-RIGHT: #545454 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: = #545454 1px solid; PADDING-LEFT: 3px; FLOAT: left; PADDING-BOTTOM: 3px; = BORDER-LEFT: #545454 1px solid; PADDING-TOP: 3px; BORDER-BOTTOM: #545454 = 1px solid } #lead_articles .lead { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 1.3em; BACKGROUND: = #f5f6ea; PADDING-BOTTOM: 10px; PADDING-TOP: 10px } #lead_articles .photo { FLOAT: left; WIDTH: 120px; MARGIN-RIGHT: 10px; HEIGHT: 120px } #lead_photos { PADDING-BOTTOM: 10px } #lead_photos .photo { FONT-WEIGHT: bold; FONT-SIZE: 1.2em; FLOAT: left; MARGIN-BOTTOM: 5px; = WIDTH: 285px; COLOR: white; MARGIN-RIGHT: 5px; POSITION: relative; = HEIGHT: 250px } #lead_photos .photo .text { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; FONT-SIZE: 1.1em; RIGHT: 0px; = FILTER: alpha(opacity=3D70); BACKGROUND-IMAGE: url(/images/overlay.png); = PADDING-BOTTOM: 4px; BOTTOM: 0px; PADDING-TOP: 4px; POSITION: absolute; = opacity: 0.7 } #lead_photos .photo .long { FONT-SIZE: 1em } #lead_photos .photo .short { FONT-SIZE: 1.2em } #lead_photos .photo:hover .text { FILTER: alpha(opacity=3D100); opacity: 1.0 } #lead_photos .photo .section { COLOR: #f90 } #lead_photos A:hover { TEXT-DECORATION: none } .section_filter { PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: #f5f6ea; FLOAT: = right; PADDING-BOTTOM: 8px; WIDTH: 100px; PADDING-TOP: 8px } .section_filter H3 { FONT-WEIGHT: bold; FONT-SIZE: 1.1em; MARGIN-BOTTOM: 0.5em } .section_filter UL { LIST-STYLE-TYPE: none } .section_filter LI.selected { FONT-WEIGHT: bold } #archive_nav { MARGIN-TOP: 30px; FONT-SIZE: 1.2em; POSITION: relative } #archive_nav H3 { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; FONT-SIZE: 13px; BACKGROUND: = #e5e6da; PADDING-BOTTOM: 4px; TEXT-TRANSFORM: uppercase; PADDING-TOP: = 4px; LETTER-SPACING: 0.1em } .archive { MARGIN-BOTTOM: 1em; BORDER-LEFT: #e5e6da 1px solid; WIDTH: 60% } #content #archive_nav .archive H4 { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-WEIGHT: bold; FONT-SIZE: = 1em; PADDING-BOTTOM: 0.25em; PADDING-TOP: 0.5em } .by_date { FLOAT: left; WIDTH: 30% } .archive UL { LIST-STYLE-TYPE: none } .archive LI A { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: = 2px; PADDING-TOP: 2px } .archive LI LI A { PADDING-LEFT: 20px } .archive LI A:hover { BACKGROUND: #e5e6da; TEXT-DECORATION: none } .by_writer { MARGIN-LEFT: 35% } .by_keyword { MARGIN-LEFT: 35% } .by_keyword { BORDER-TOP: #e5e6da 3px solid } .archive .all_link A { DISPLAY: block; FONT-WEIGHT: bold; FONT-SIZE: 0.9em; TEXT-ALIGN: right } #related_keywords_sidebar { PADDING-RIGHT: 0px; PADDING-LEFT: 8px; FONT-SIZE: 105%; BACKGROUND: = white; FLOAT: right; PADDING-BOTTOM: 8px; MARGIN: 0px 0px 6px 6px; = BORDER-LEFT: #e5e6da 1px solid; WIDTH: 120px; PADDING-TOP: 0px } #related_keywords_sidebar UL { LIST-STYLE-TYPE: none } #related_keywords_sidebar LI { MARGIN-TOP: 3px } #content_cap H1 { FONT-SIZE: 20px; MARGIN-BOTTOM: 0px } #content #content_cap H2 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: = 17px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 20px; PADDING-TOP: 0px } #day_view H2 { CLEAR: left; PADDING-TOP: 1em } .photo_article { CLEAR: left; PADDING-TOP: 1em } .photo_article .section { FONT-WEIGHT: bold; COLOR: #ff730c } .important_article .section { FONT-WEIGHT: bold; COLOR: #ff730c } .photo_article .excerpt { FONT-SIZE: 110% } .important_article { CLEAR: left; MARGIN-TOP: 1em } .listed_article { CLEAR: left; LIST-STYLE-TYPE: none } .section_articles UL { CLEAR: left; FONT-SIZE: 13px; MARGIN-LEFT: 15px } .section_articles .author { FONT-SIZE: 11px; COLOR: #999 } .section_articles .author A:link { FONT-SIZE: 11px; COLOR: #999 } .section_articles .author A:visited { FONT-SIZE: 11px; COLOR: #999 } #article_count { FONT-SIZE: 1.3em; MARGIN-BOTTOM: 1em } .archive_day .calendar_helper { MARGIN: 0px auto; WIDTH: 300px } .archive_day .calendar_helper CAPTION { PADDING-RIGHT: 3px; PADDING-LEFT: 3px; FONT-WEIGHT: bold; FONT-SIZE: = 15px; BACKGROUND: #2286aa; PADDING-BOTTOM: 3px; COLOR: white; = PADDING-TOP: 3px } .archive_day .calendar_helper .day_number { PADDING-RIGHT: 2px; DISPLAY: block; PADDING-LEFT: 2px; FONT-SIZE: 13px; = PADDING-BOTTOM: 2px; PADDING-TOP: 2px; HEIGHT: 32px } .archive_day .calendar_helper .day_number:hover { BACKGROUND: #fffadd; TEXT-DECORATION: none } .archive_day .selected_day { FONT-WEIGHT: bold; BACKGROUND: #2286aa; COLOR: white } .archive_day .calendar_helper .selected_day:hover { FONT-WEIGHT: bold; BACKGROUND: #2286aa; COLOR: white } ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://articles.latimes.com/stylesheets/ie.css?1217444655 BODY { BACKGROUND: #e1e1d7; MARGIN: 0px } .canvas_bottom { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.canvas_bottom_left { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.canvas_bottom_right { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.canvas_top_left { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.canvas_top_right { BACKGROUND: none transparent scroll repeat 0% 0% } DIV.canvas_top { FONT-SIZE: 11px; BACKGROUND: url(../images/bg-top-fade.gif) no-repeat = center top; MARGIN: 0px } DIV.canvas_outer { BACKGROUND: url(../images/bg-content-fade.gif) repeat-y center top; = MARGIN: 0px } DIV.canvas_inner { BACKGROUND: url(../images/bg-bottom-fade.gif) no-repeat center bottom; = PADDING-BOTTOM: 7px; MARGIN: 0px } .canvas_content { PADDING-TOP: 1px! important } DIV#content_main { =09 } DIV#gallery_main { =09 } .leaderboard { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 4px; = PADDING-TOP: 5px } #masthead { PADDING-RIGHT: 8px; PADDING-LEFT: 9px; PADDING-BOTTOM: 7px; = PADDING-TOP: 10px } #content { MARGIN-TOP: 201px } .article-entertainment #content { MARGIN-TOP: 237px } .raquo_bullet { LIST-STYLE-IMAGE: url(../images/bullet-raquo.gif); MARGIN-LEFT: 0.75em! = important; TEXT-INDENT: 0px; LIST-STYLE-TYPE: disc } .advertisement { PADDING-RIGHT: 1.5em; PADDING-LEFT: 1.5em; PADDING-BOTTOM: 20px; = PADDING-TOP: 10px } .advertisement .ad_heading { TOP: -3.15ex } #adsense .ad_heading { TOP: -1.5ex } #photo_matte { VERTICAL-ALIGN: baseline } #photo_matte SPAN { FONT-SIZE: 3100%; LINE-HEIGHT: 425px } ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: 7bit Content-Location: http://articles.latimes.com/stylesheets/large-text.css?1217444655 #article_body P { FONT-SIZE: 140% } #article_body DIV { } .byline { FONT-SIZE: 115% } ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: 7bit Content-Location: http://articles.latimes.com/stylesheets/medium-text.css?1217444655 #article_body P { FONT-SIZE: 125% } #article_body DIV { } .byline { FONT-SIZE: 100% } ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: 7bit Content-Location: http://articles.latimes.com/stylesheets/small-text.css?1217444655 #article_body P { FONT-SIZE: 110% } #article_body DIV { } .byline { FONT-SIZE: 85% } ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://articles.latimes.com/stylesheets/print.css?1217444655 BODY { COLOR: black! important } BODY { COLOR: black! important } A:hover { TEXT-DECORATION: none } UNKNOWN { FONT-WEIGHT: normal } BODY { BACKGROUND: none transparent scroll repeat 0% 0%; MARGIN: 0px } DIV#container { WIDTH: auto; POSITION: static } .canvas_outer { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: auto; = PADDING-TOP: 0px } .canvas_inner { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: auto; = PADDING-TOP: 0px } .canvas_content { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px } .canvas_bottom_left { DISPLAY: none } .canvas_bottom_right { DISPLAY: none } .canvas_bottom { DISPLAY: none } .canvas_top_left { DISPLAY: none } .canvas_top_right { DISPLAY: none } .canvas_top { DISPLAY: none } #branding { WIDTH: auto; BORDER-BOTTOM: #000 1px solid } #nav_tools { DISPLAY: none } #nav_main { DISPLAY: none } #sitesearch { WIDTH: auto } #sitesearch #search { DISPLAY: none } #nav_section .nav { DISPLAY: none! important } #content { MARGIN-TOP: 160px! important; POSITION: relative } #content .canvas_content { BACKGROUND: none transparent scroll repeat 0% 0%; WIDTH: auto } #content_main { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: = 0px; MARGIN: 0px; WIDTH: auto; PADDING-TOP: 0px } #content_sub { DISPLAY: none! important } #site_info { MARGIN-BOTTOM: 0px; WIDTH: auto } #site_info .canvas_content { BACKGROUND: none transparent scroll repeat 0% 0% } .column_3#site_info .column { DISPLAY: none } #copyright { BORDER-TOP: black 1px solid } #copyright SPAN { DISPLAY: none } #copyright IMG { DISPLAY: none } #breadcrumbs { PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; PADDING-BOTTOM: 1ex; = PADDING-TOP: 1ex } #email_and_print { DISPLAY: none } .advertisement { BORDER-LEFT-COLOR: black; BORDER-BOTTOM-COLOR: black; BORDER-TOP-COLOR: = black; BORDER-RIGHT-COLOR: black } .advertisement .ad_heading SPAN { BACKGROUND-COLOR: transparent } #adsense { DISPLAY: none } #feeds { DISPLAY: none } .box_faded { BORDER-RIGHT: #666 2px solid; BORDER-TOP: #666 2px solid; BACKGROUND: = none transparent scroll repeat 0% 0%; BORDER-LEFT: #666 2px solid; = BORDER-BOTTOM: #666 2px solid } .box_solid { BORDER-RIGHT: #666 2px solid; BORDER-TOP: #666 2px solid; BACKGROUND: = none transparent scroll repeat 0% 0%; BORDER-LEFT: #666 2px solid; = BORDER-BOTTOM: #666 2px solid } .box_striped { BORDER-RIGHT: #666 2px solid; BORDER-TOP: #666 2px solid; BACKGROUND: = none transparent scroll repeat 0% 0%; BORDER-LEFT: #666 2px solid; = BORDER-BOTTOM: #666 2px solid } .box_border { BORDER-RIGHT: #666 2px solid; BORDER-TOP: #666 2px solid; BACKGROUND: = none transparent scroll repeat 0% 0%; BORDER-LEFT: #666 2px solid; = BORDER-BOTTOM: #666 2px solid } .box_faded .content { BACKGROUND: none transparent scroll repeat 0% 0% } .box_solid .content { BACKGROUND: none transparent scroll repeat 0% 0% } .box_striped .content { BACKGROUND: none transparent scroll repeat 0% 0% } .box_border .content { BACKGROUND: none transparent scroll repeat 0% 0% } HR { BACKGROUND: black } HR.section_divider { BACKGROUND: black } HR.clear { BORDER-LEFT-COLOR: black; BACKGROUND: none transparent scroll repeat 0% = 0%; BORDER-BOTTOM-COLOR: black; BORDER-TOP-COLOR: black; = BORDER-RIGHT-COLOR: black } .section_filter A { DISPLAY: none } #article_photo_caption { BORDER-BOTTOM: #000 1px solid } #article_content { BORDER-BOTTOM: #000 1px solid } #article_related { DISPLAY: none } #article_content .section { DISPLAY: none } #save_share { DISPLAY: none } #discuss_link { DISPLAY: none } #discussion .all_comments { DISPLAY: none } #paper_subscription { BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-LEFT: = #000 1px solid; BORDER-BOTTOM: #000 1px solid } #small_feature { DISPLAY: none } #gallery_main { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: = 0px; WIDTH: auto; PADDING-TOP: 0px; POSITION: static; HEIGHT: auto! = important } #gallery_sub { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: = 0px; WIDTH: auto; PADDING-TOP: 0px; POSITION: static } #inpage_gallery { MARGIN: 2ex 0px; WIDTH: auto } #gallery_nav { BACKGROUND-COLOR: transparent } #photo_credit { BACKGROUND-COLOR: transparent } #prev_photo { DISPLAY: none } #next_photo { DISPLAY: none } ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/x-javascript Content-Transfer-Encoding: quoted-printable Content-Location: http://topics.latimes.com/javascripts/contextual_links.js var TopicsContextualLinks =3D function() {=0A= // Since this is served from topics, we know the index url which works = as our base=0A= var base_url =3D 'http://topics.latimes.com/';=0A= var section =3D null;=0A= =0A= var iframe =3D null;=0A= =0A= // where the content we're going to parse resides=0A= var content_div =3D null;=0A= // where the related topics lives=0A= var related_div =3D null;=0A= var on_load_function =3D null;=0A= var count =3D 6;=0A= // passing url so we can cache the results=0A= var post_url =3D base_url + "topics/topics_in_text/" + = window.location.hostname + window.location.pathname;=0A= if (post_url.search('.html$') =3D=3D -1) {=0A= post_url =3D post_url + ".html"=0A= }=0A= =0A= =0A= // add a couple of useful methods normally added by prototype=0A= if (!Array.prototype.each) {=0A= Array.prototype.each =3D function(f) {for(var = i=3D0;i 0) {=0A= embedLinks(content_div, topics);=0A= if (related_div) relatedTopics(related_div, count, topics, false);=0A= } else if (related_div) {=0A= // no data but need to load popular topics=0A= doOnLoad(iframe, function() {=0A= var hot_topics =3D getData();=0A= relatedTopics(related_div, count, hot_topics, true);=0A= });=0A= iframe.contentWindow.location.replace(base_url + = "topics/hot_topics");=0A= }=0A= }=0A= =0A= function getData() {=0A= ret =3D [];=0A= data =3D iframe.contentWindow.topics;=0A= if (data) {=0A= for (var i =3D 0, length =3D data.length; i < length; i++)=0A= ret.push(data[i]);=0A= }=0A= return ret;=0A= }=0A= =0A= function iframe_document(iframe) {=0A= var iframedoc;=0A= if (iframe.contentDocument) {=0A= // For NS6=0A= iframedoc =3D iframe.contentDocument; =0A= } else if (iframe.contentWindow) {=0A= // For IE5.5 and IE6=0A= iframedoc =3D iframe.contentWindow.document;=0A= } else if (iframe.document) {=0A= // For IE5=0A= iframedoc =3D iframe.document;=0A= }=0A= return iframedoc;=0A= }=0A= =0A= function embedLinks(text_div, topics) {=0A= var node =3D text_div;=0A= if (node =3D=3D null) return;=0A= topics.each(function(topic) {=0A= regex =3D "(^|[^\\w])" + topic.name.replace(/ /g, '\\s') + = "([^\\w]|$)";=0A= doEmbedLinks(node, topic, regex);=0A= });=0A= }=0A= =0A= function doEmbedLinks(node, topic, regex) {=0A= if (node.nodeName.toLowerCase() =3D=3D 'a') {=0A= // ignore links=0A= }=0A= else if (node.nodeName =3D=3D "#text") { // text=0A= if ((index =3D node.nodeValue.search(regex)) > -1) {=0A= // don't want to get first \w character=0A= if (node.nodeValue.charAt(index).search(/\s/) =3D=3D 0) index++;=0A= node =3D node.splitText(index + = topic.name.length).previousSibling;=0A= node =3D node.splitText(index).previousSibling;=0A= nameNode =3D node.nextSibling;=0A= linkNode =3D document.createElement("a");=0A= linkNode.setAttribute("href", topic.url);=0A= linkNode.setAttribute("class", "contextual_link");=0A= nameNode.parentNode.replaceChild(linkNode, nameNode);=0A= linkNode.appendChild(nameNode);=0A= return true;=0A= }=0A= }=0A= else if (node.childNodes) {=0A= node =3D node.childNodes[0];=0A= while (node) {=0A= if (doEmbedLinks(node, topic, regex)) return true;=0A= node =3D node.nextSibling;=0A= // using nextSibling because the childNode list will grow =0A= // from the use of splitText above -- we want to get everything!=0A= }=0A= }=0A= return false;=0A= }=0A= =0A= function relatedTopics(div, count, topics, hot) {=0A= if (div =3D=3D null) return;=0A= if (!count) count =3D 4;=0A= var matchesHTML;=0A= if (hot) {=0A= matchesHTML =3D '

Popular Topics

';=0A= } else {=0A= matchesHTML =3D '

Related Topics

';=0A= }=0A= matchesHTML +=3D '
    ';=0A= if (topics.length < count) count =3D topics.length;=0A= for (var i =3D 0; i < count; i++) {=0A= matchesHTML +=3D createTopicLink(topics[i]);=0A= }=0A= matchesHTML +=3D '
 
';=0A= div.innerHTML =3D matchesHTML;=0A= document.getElementById('related_topics_list').className =3D = getLayoutName(count);=0A= }=0A= =0A= function createTopicLink(topic) {=0A= var html =3D "
  • ";=0A= if (topic.photo_url) {=0A= html +=3D "
    ";=0A= }=0A= // re-replace \s in the name=0A= var name =3D topic.name.replace(/\\s/g," ");=0A= html +=3D ""+name+"
  • "; =0A= return html;=0A= }=0A= =0A= function getLayoutName(elements) {=0A= switch (elements) {=0A= case 1: result =3D 'half'; break;=0A= case 2: result =3D 'half'; break;=0A= case 4: result =3D 'half'; break;=0A= default: result =3D 'third';=0A= }=0A= return result;=0A= }=0A= =0A= // public methods=0A= return {=0A= link_topics_on_load: function(text_div, topics_div, count, section) {=0A= doOnLoad(window, function() { = TopicsContextualLinks.topics_links(text_div, topics_div, count, section) = });=0A= },=0A= =0A= topics_links: function(text_div, topics_div, size, topic_section) {=0A= section =3D topic_section;=0A= count =3D size;=0A= content_div =3D document.getElementById(text_div);=0A= if (content_div =3D=3D null) return;=0A= related_div =3D document.getElementById(topics_div);=0A= document.domain =3D "latimes.com";=0A= iframe =3D document.createElement("iframe");=0A= iframe.id =3D "CLIFrame";=0A= iframe.style.visibility =3D "hidden";=0A= iframe =3D document.body.appendChild(iframe);=0A= =0A= on_load_function =3D function() {=0A= removeOnLoad(iframe, on_load_function);=0A= iframedoc =3D iframe_document(iframe);=0A= =0A= if ((iframe.contentWindow.topics.length > 0) || =0A= iframe.contentWindow.post) {=0A= // data was cached=0A= loadData();=0A= return;=0A= }=0A= =0A= var form =3D iframedoc.createElement("form");=0A= form.action =3D post_url;=0A= form.method =3D "POST";=0A= var field =3D iframedoc.createElement("input");=0A= field.type =3D "text";=0A= field.name =3D "text";=0A= field.value =3D escape(content_div.innerHTML);=0A= field =3D form.appendChild(field);=0A= form =3D iframedoc.body.appendChild(form);=0A= =0A= on_load_function =3D function() {=0A= removeOnLoad(iframe, on_load_function);=0A= loadData();=0A= };=0A= doOnLoad(iframe, on_load_function);=0A= =0A= form.submit();=0A= // doing this here because FF doesn't work otherwise for some = reason=0A= iframe.setAttribute("style", "display:none; visibility:hidden; = width:0px; height:0px; border:0px;");=0A= };=0A= =0A= iframe =3D document.body.appendChild(iframe);=0A= =0A= doOnLoad(iframe, on_load_function);=0A= =0A= iframe.contentWindow.location.replace(post_url);=0A= }=0A= =0A= };=0A= }();=0A= =0A= =0A= =0A= =0A= var topics_div;=0A= var count;=0A= =0A= function relatedTopics(text, div, c) {=0A= topics_div =3D div;=0A= count =3D c;=0A= }=0A= =0A= function embedLinks(text_div) {=0A= TopicsContextualLinks.topics_links(text_div, topics_div, count)=0A= }=0A= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://articles.latimes.com/javascripts/prototype.js?1217444655 /* Prototype JavaScript framework, version 1.6.0.1=0A= * (c) 2005-2007 Sam Stephenson=0A= *=0A= * Prototype is freely distributable under the terms of an MIT-style = license.=0A= * For details, see the Prototype web site: http://www.prototypejs.org/=0A= *=0A= = *------------------------------------------------------------------------= --*/=0A= =0A= var Prototype =3D {=0A= Version: '1.6.0.1',=0A= =0A= Browser: {=0A= IE: !!(window.attachEvent && !window.opera),=0A= Opera: !!window.opera,=0A= WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,=0A= Gecko: navigator.userAgent.indexOf('Gecko') > -1 && = navigator.userAgent.indexOf('KHTML') =3D=3D -1,=0A= MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A= },=0A= =0A= BrowserFeatures: {=0A= XPath: !!document.evaluate,=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: ']*>([\\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, value =3D Object.extend((function(m) {=0A= return function() { return ancestor[m].apply(this, arguments) = };=0A= })(property).wrap(method), {=0A= valueOf: function() { return method },=0A= toString: function() { return method.toString() }=0A= });=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() : object.toString();=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=0A= },=0A= =0A= toJSON: function(object) {=0A= var type =3D typeof object;=0A= switch (type) {=0A= case 'undefined':=0A= case 'function':=0A= case 'unknown': return;=0A= case 'boolean': return object.toString();=0A= }=0A= =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 && object.constructor =3D=3D=3D Array;=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].split(",").inv= oke("strip");=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= 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= Function.prototype.defer =3D Function.prototype.delay.curry(0.01);=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,'>');=0A= },=0A= unescapeHTML: function() {=0A= return = this.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= with (String.prototype.escapeHTML) div.appendChild(text);=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= }.bind(this));=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= iterator =3D iterator.bind(context);=0A= try {=0A= this._each(function(value) {=0A= iterator(value, index++);=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= return this;=0A= },=0A= =0A= eachSlice: function(number, iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var index =3D -number, slices =3D [], array =3D this.toArray();=0A= while ((index +=3D number) < array.length)=0A= slices.push(array.slice(index, index+number));=0A= return slices.collect(iterator, context);=0A= },=0A= =0A= all: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!iterator(value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= any: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result =3D false;=0A= this.each(function(value, index) {=0A= if (result =3D !!iterator(value, index))=0A= throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= collect: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(iterator(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= detect: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var result;=0A= this.each(function(value, index) {=0A= if (iterator(value, index)) {=0A= result =3D value;=0A= throw $break;=0A= }=0A= });=0A= return result;=0A= },=0A= =0A= findAll: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= grep: function(filter, iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : 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(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= iterator =3D iterator.bind(context);=0A= this.each(function(value, index) {=0A= memo =3D iterator(memo, value, index);=0A= });=0A= return memo;=0A= },=0A= =0A= invoke: function(method) {=0A= var args =3D $A(arguments).slice(1);=0A= return this.map(function(value) {=0A= return value[method].apply(value, args);=0A= });=0A= },=0A= =0A= max: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator(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 ? iterator.bind(context) : Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator(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 ? iterator.bind(context) : Prototype.K;=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= (iterator(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= iterator =3D iterator.bind(context);=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (!iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= sortBy: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= return this.map(function(value, index) {=0A= return {value: value, criteria: iterator(value, index)};=0A= }).sort(function(left, right) {=0A= var a =3D left.criteria, b =3D right.criteria;=0A= return a < b ? -1 : a > b ? 1 : 0;=0A= }).pluck('value');=0A= },=0A= =0A= toArray: function() {=0A= return this.map();=0A= },=0A= =0A= zip: function() {=0A= var iterator =3D Prototype.K, args =3D $A(arguments);=0A= if (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 '#';=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, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= }=0A= =0A= if (Prototype.Browser.WebKit) {=0A= function $A(iterable) {=0A= if (!iterable) return [];=0A= if (!(Object.isFunction(iterable) && iterable =3D=3D '[object = NodeList]') &&=0A= iterable.toArray) return iterable.toArray();=0A= var length =3D iterable.length, 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) {=0A= $R(0, this, true).each(iterator);=0A= return this;=0A= },=0A= =0A= toPaddedString: function(length, radix) {=0A= var string =3D this.toString(radix || 10);=0A= return '0'.times(length - string.length) + string;=0A= },=0A= =0A= toJSON: function() {=0A= return isFinite(this) ? this.toString() : 'null';=0A= }=0A= });=0A= =0A= $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= 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.map(function(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 values.map(toQueryPair.curry(key)).join('&');=0A= }=0A= return toQueryPair(key, values);=0A= }).join('&');=0A= },=0A= =0A= inspect: function() {=0A= return '#';=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 && 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= getHeader: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name);=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= } 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= } 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= }).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).style.display =3D 'none';=0A= return element;=0A= },=0A= =0A= show: function(element) {=0A= $(element).style.display =3D '';=0A= return element;=0A= },=0A= =0A= remove: function(element) {=0A= element =3D $(element);=0A= element.parentNode.removeChild(element);=0A= return element;=0A= },=0A= =0A= update: function(element, 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, t, range;=0A= =0A= for (position in insertions) {=0A= content =3D insertions[position];=0A= position =3D position.toLowerCase();=0A= t =3D Element._insertionTranslations[position];=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= t.insert(element, content);=0A= continue;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= =0A= range =3D element.ownerDocument.createRange();=0A= t.initializeRange(element, range);=0A= t.insert(element, = range.createContextualFragment(content.stripScripts()));=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).getElementsBySelector("*");=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 expression ? Selector.findElement(ancestors, expression, = index) :=0A= ancestors[index || 0];=0A= },=0A= =0A= down: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return element.firstDescendant();=0A= var descendants =3D element.descendants();=0A= return expression ? Selector.findElement(descendants, expression, = index) :=0A= descendants[index || 0];=0A= },=0A= =0A= previous: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element));=0A= var previousSiblings =3D element.previousSiblings();=0A= return expression ? Selector.findElement(previousSiblings, = expression, index) :=0A= previousSiblings[index || 0];=0A= },=0A= =0A= next: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element));=0A= var nextSiblings =3D element.nextSiblings();=0A= return expression ? Selector.findElement(nextSiblings, expression, = index) :=0A= nextSiblings[index || 0];=0A= },=0A= =0A= 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= var originalAncestor =3D ancestor;=0A= =0A= if (element.compareDocumentPosition)=0A= return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A= =0A= if (element.sourceIndex && !Prototype.Browser.Opera) {=0A= var e =3D element.sourceIndex, a =3D ancestor.sourceIndex,=0A= nextAncestor =3D ancestor.nextSibling;=0A= if (!nextAncestor) {=0A= do { ancestor =3D ancestor.parentNode; }=0A= while (!(nextAncestor =3D ancestor.nextSibling) && = ancestor.parentNode);=0A= }=0A= if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);=0A= }=0A= =0A= while (element =3D element.parentNode)=0A= if (element =3D=3D originalAncestor) return true;=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) {=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 (window.opera) {=0A= element.style.top =3D 0;=0A= element.style.left =3D 0;=0A= }=0A= }=0A= return element;=0A= },=0A= =0A= undoPositioned: function(element) {=0A= element =3D $(element);=0A= if (element._madePositioned) {=0A= element._madePositioned =3D undefined;=0A= element.style.position =3D=0A= element.style.top =3D=0A= element.style.left =3D=0A= element.style.bottom =3D=0A= element.style.right =3D '';=0A= }=0A= return element;=0A= },=0A= =0A= makeClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return element;=0A= element._overflow =3D Element.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 =3D=3D 'BODY') break;=0A= var p =3D Element.getStyle(element, 'position');=0A= if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A= }=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'absolute') return;=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;=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 =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= =0A= if (!document.createRange || Prototype.Browser.Opera) {=0A= Element.Methods.insert =3D 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 t =3D Element._insertionTranslations, content, position, pos, = tagName;=0A= =0A= for (position in insertions) {=0A= content =3D insertions[position];=0A= position =3D position.toLowerCase();=0A= pos =3D t[position];=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= pos.insert(element, content);=0A= continue;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A= ? element.parentNode : element).tagName.toUpperCase();=0A= =0A= if (t.tags[tagName]) {=0A= var fragments =3D = Element._getContentFromAnonymousElement(tagName, content.stripScripts());=0A= if (position =3D=3D 'top' || position =3D=3D 'after') = fragments.reverse();=0A= fragments.each(pos.insert.curry(element));=0A= }=0A= else element.insertAdjacentHTML(pos.adjacency, = content.stripScripts());=0A= =0A= content.evalScripts.bind(content).defer();=0A= }=0A= =0A= return element;=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= $w('positionedOffset getOffsetParent = viewportOffset').each(function(method) {=0A= Element.Methods[method] =3D Element.Methods[method].wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= var position =3D element.getStyle('position');=0A= if (position !=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= =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.clone(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').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 =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 (document.createElement('div').outerHTML) {=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= div.innerHTML =3D t[0] + html + t[1];=0A= t[2].times(function() { div =3D div.firstChild });=0A= return $A(div.childNodes);=0A= };=0A= =0A= Element._insertionTranslations =3D {=0A= before: {=0A= adjacency: 'beforeBegin',=0A= insert: function(element, node) {=0A= element.parentNode.insertBefore(node, element);=0A= },=0A= initializeRange: function(element, range) {=0A= range.setStartBefore(element);=0A= }=0A= },=0A= top: {=0A= adjacency: 'afterBegin',=0A= insert: function(element, node) {=0A= element.insertBefore(node, element.firstChild);=0A= },=0A= initializeRange: function(element, range) {=0A= range.selectNodeContents(element);=0A= range.collapse(true);=0A= }=0A= },=0A= bottom: {=0A= adjacency: 'beforeEnd',=0A= insert: function(element, node) {=0A= element.appendChild(node);=0A= }=0A= },=0A= after: {=0A= adjacency: 'afterEnd',=0A= insert: function(element, node) {=0A= element.parentNode.insertBefore(node, element.nextSibling);=0A= },=0A= initializeRange: function(element, range) {=0A= range.setStartAfter(element);=0A= }=0A= },=0A= tags: {=0A= TABLE: ['', '
    ', 1],=0A= TBODY: ['', '
    ', 2],=0A= TR: ['', '
    ', 3],=0A= TD: ['
    ', '
    ', 4],=0A= SELECT: ['', 1]=0A= }=0A= };=0A= =0A= (function() {=0A= this.bottom.initializeRange =3D this.top.initializeRange;=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, 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 { };=0A= var B =3D Prototype.Browser;=0A= $w('width height').each(function(d) {=0A= var D =3D d.capitalize();=0A= dimensions[d] =3D (B.WebKit && !document.evaluate) ? self['inner' = + D] :=0A= (B.Opera) ? document.body['client' + D] : = document.documentElement['client' + D];=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=E2=80=99s = DomQuery,=0A= * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style=0A= * license. Please see http://www.yui-ext.com/ for more information. */=0A= =0A= var Selector =3D Class.create({=0A= initialize: function(expression) {=0A= this.expression =3D expression.strip();=0A= this.compileMatcher();=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(this.expression))=0A= return false;=0A= =0A= return true;=0A= },=0A= =0A= compileMatcher: function() {=0A= if (this.shouldUseXPath())=0A= return this.compileXPathMatcher();=0A= =0A= var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers,=0A= c =3D Selector.criteria, le, p, m;=0A= =0A= if (Selector._cache[e]) {=0A= this.matcher =3D Selector._cache[e];=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= if (this.xpath) return document._getElementsByXPath(this.xpath, = root);=0A= return this.matcher(root);=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 "#";=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 or = translate(text(), ' \t\r\n', '') =3D '')]",=0A= 'checked': "[@checked]",=0A= 'disabled': "[@disabled]",=0A= 'enabled': "[not(@disabled)]",=0A= 'not': function(m) {=0A= var e =3D m[6], p =3D Selector.patterns,=0A= x =3D Selector.xpath, le, 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 =3D false;',=0A= attr: function(m) {=0A= m[3] =3D (m[5] || m[6]);=0A= return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = =3D false;').evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A= return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m);=0A= },=0A= descendant: 'c =3D "descendant";',=0A= child: 'c =3D "child";',=0A= adjacent: 'c =3D "adjacent";',=0A= laterSibling: 'c =3D "laterSibling";'=0A= },=0A= =0A= patterns: {=0A= // combinators must be listed first=0A= // (and descendant needs to be last combinator)=0A= laterSibling: /^\s*~\s*/,=0A= child: /^\s*>\s*/,=0A= adjacent: /^\s*\+\s*/,=0A= descendant: /^\s/,=0A= =0A= // selectors follow=0A= tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,=0A= id: /^#([\w\-\*]+)(\b|$)/,=0A= className: /^\.([\w\-\*]+)(\b|$)/,=0A= pseudo: = /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|(?=3D\s)|(?=3D:))/,=0A= attrPresence: /^\[([\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 Selector.operators[matches[2]](nodeValue, matches[3]);=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= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._counted =3D true;=0A= return nodes;=0A= },=0A= =0A= unmark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._counted =3D undefined;=0A= return nodes;=0A= },=0A= =0A= // mark each child node with its position (for nth calls)=0A= // "ofType" flag indicates whether we're indexing for nth-of-type=0A= // rather than nth-child=0A= index: function(parentNode, reverse, ofType) {=0A= parentNode._counted =3D true;=0A= if (reverse) {=0A= for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) {=0A= var node =3D nodes[i];=0A= if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++;=0A= }=0A= } else {=0A= for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++)=0A= if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++;=0A= }=0A= },=0A= =0A= // filters out duplicates and extends all nodes=0A= unique: function(nodes) {=0A= if (nodes.length =3D=3D 0) return nodes;=0A= var results =3D [], n;=0A= for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A= if (!(n =3D nodes[i])._counted) {=0A= n._counted =3D true;=0A= results.push(Element.extend(n));=0A= }=0A= return Selector.handlers.unmark(results);=0A= },=0A= =0A= // COMBINATOR FUNCTIONS=0A= descendant: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName('*'));=0A= return results;=0A= },=0A= =0A= child: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= for (var j =3D 0, child; child =3D node.childNodes[j]; j++)=0A= if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child);=0A= }=0A= return results;=0A= },=0A= =0A= adjacent: function(nodes) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= var next =3D this.nextElementSibling(node);=0A= if (next) results.push(next);=0A= }=0A= return results;=0A= },=0A= =0A= laterSibling: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, Element.nextSiblings(node));=0A= return results;=0A= },=0A= =0A= nextElementSibling: function(node) {=0A= while (node =3D node.nextSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= previousElementSibling: function(node) {=0A= while (node =3D node.previousSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= // TOKEN FUNCTIONS=0A= tagName: function(nodes, root, tagName, combinator) {=0A= tagName =3D tagName.toUpperCase();=0A= var results =3D [], h =3D Selector.handlers;=0A= if (nodes) {=0A= if (combinator) {=0A= // fastlane for ordinary descendant combinators=0A= if (combinator =3D=3D "descendant") {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName(tagName));=0A= return results;=0A= } else nodes =3D this[combinator](nodes);=0A= if (tagName =3D=3D "*") return nodes;=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.tagName.toUpperCase() =3D=3D tagName) = results.push(node);=0A= return results;=0A= } else return root.getElementsByTagName(tagName);=0A= },=0A= =0A= id: function(nodes, root, id, combinator) {=0A= var targetNode =3D $(id), h =3D Selector.handlers;=0A= if (!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) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= var results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.hasAttribute(node, attr)) results.push(node);=0A= return results;=0A= },=0A= =0A= attr: function(nodes, root, attr, value, operator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= var handler =3D Selector.operators[operator], results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= var nodeValue =3D Element.readAttribute(node, attr);=0A= if (nodeValue =3D=3D=3D null) continue;=0A= if (handler(nodeValue, value)) results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= pseudo: function(nodes, name, value, root, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= return Selector.pseudos[name](nodes, value, root);=0A= }=0A= },=0A= =0A= pseudos: {=0A= 'first-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.previousElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'last-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.nextElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'only-child': function(nodes, value, root) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!h.previousElementSibling(node) && = !h.nextElementSibling(node))=0A= results.push(node);=0A= return results;=0A= },=0A= 'nth-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root);=0A= },=0A= 'nth-last-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true);=0A= },=0A= 'nth-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, false, true);=0A= },=0A= 'nth-last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true, true);=0A= },=0A= 'first-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, false, true);=0A= },=0A= 'last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, true, true);=0A= },=0A= 'only-of-type': function(nodes, formula, root) {=0A= var p =3D Selector.pseudos;=0A= return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root);=0A= },=0A= =0A= // handles the an+b logic=0A= getIndices: function(a, b, total) {=0A= if (a =3D=3D 0) return b > 0 ? [b] : [];=0A= return $R(1, total).inject([], function(memo, i) {=0A= if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A= return memo;=0A= });=0A= },=0A= =0A= // handles nth(-last)-child, nth(-last)-of-type, and = (first|last)-of-type=0A= nth: function(nodes, formula, root, reverse, ofType) {=0A= if (nodes.length =3D=3D 0) return [];=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A= h.mark(nodes);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= if (!node.parentNode._counted) {=0A= h.index(node.parentNode, reverse, ofType);=0A= indexed.push(node.parentNode);=0A= }=0A= }=0A= if (formula.match(/^\d+$/)) { // just a number=0A= formula =3D Number(formula);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.nodeIndex =3D=3D formula) results.push(node);=0A= } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b=0A= if (m[1] =3D=3D "-") m[1] =3D -1;=0A= var a =3D m[1] ? Number(m[1]) : 1;=0A= var b =3D m[2] ? Number(m[2]) : 0;=0A= var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A= for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) {=0A= for (var j =3D 0; j < l; j++)=0A= if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A= }=0A= }=0A= h.unmark(nodes);=0A= h.unmark(indexed);=0A= return results;=0A= },=0A= =0A= 'empty': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= // IE treats comments as element nodes=0A= if (node.tagName =3D=3D '!' || (node.firstChild && = !node.innerHTML.match(/^\s*$/))) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= 'not': function(nodes, selector, root) {=0A= var h =3D Selector.handlers, selectorType, m;=0A= var exclusions =3D new Selector(selector).findElements(root);=0A= h.mark(exclusions);=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node._counted) results.push(node);=0A= h.unmark(exclusions);=0A= return results;=0A= },=0A= =0A= 'enabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'disabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'checked': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.checked) results.push(node);=0A= return results;=0A= }=0A= },=0A= =0A= operators: {=0A= '=3D': function(nv, v) { return nv =3D=3D v; },=0A= '!=3D': function(nv, v) { return nv !=3D v; },=0A= '^=3D': function(nv, v) { return nv.startsWith(v); },=0A= '$=3D': function(nv, v) { return nv.endsWith(v); },=0A= '*=3D': function(nv, v) { return nv.include(v); },=0A= '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); },=0A= '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + = '-').include('-' + v.toUpperCase() + '-'); }=0A= },=0A= =0A= matchElements: function(elements, expression) {=0A= var matches =3D new Selector(expression).findElements(), h =3D = Selector.handlers;=0A= h.mark(matches);=0A= for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++)=0A= if (element._counted) results.push(element);=0A= h.unmark(matches);=0A= return results;=0A= },=0A= =0A= findElement: function(elements, expression, index) {=0A= if (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= var exprs =3D expressions.join(',');=0A= expressions =3D [];=0A= exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {=0A= expressions.push(m[1].strip());=0A= });=0A= var results =3D [], h =3D Selector.handlers;=0A= for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A= selector =3D new Selector(expressions[i].strip());=0A= h.concat(results, selector.findElements(element));=0A= }=0A= return (l > 1) ? h.unique(results) : results;=0A= }=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= // IE returns comment nodes on getElementsByTagName("*").=0A= // Filter them out.=0A= Selector.handlers.concat =3D 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= =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 '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.blur();=0A= element.disabled =3D true;=0A= return element;=0A= },=0A= =0A= enable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D false;=0A= return element;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Field =3D Form.Element;=0A= var $F =3D Form.Element.Methods.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element, 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, index) {=0A= if (Object.isUndefined(index))=0A= return this[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=0A= else {=0A= var opt, value, single =3D !Object.isArray(index);=0A= for (var i =3D 0, length =3D element.length; i < length; i++) {=0A= opt =3D element.options[i];=0A= value =3D this.optionValue(opt);=0A= if (single) {=0A= if (value =3D=3D index) {=0A= opt.selected =3D true;=0A= return;=0A= }=0A= }=0A= else opt.selected =3D index.include(value);=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= var node =3D Event.extend(event).target;=0A= return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? = node.parentNode : 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= return {=0A= x: event.pageX || (event.clientX +=0A= (document.documentElement.scrollLeft || = document.body.scrollLeft)),=0A= y: event.pageY || (event.clientY +=0A= (document.documentElement.scrollTop || = document.body.scrollTop))=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._eventID) return element._eventID;=0A= arguments.callee.id =3D arguments.callee.id || 1;=0A= return element._eventID =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= if (window.attachEvent) {=0A= window.attachEvent("onunload", destroyCache);=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= if (document.createEvent) {=0A= var event =3D document.createEvent("HTMLEvents");=0A= event.initEvent("dataavailable", true, true);=0A= } else {=0A= var 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= });=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, fired =3D false;=0A= =0A= function fireContentLoadedEvent() {=0A= if (fired) return;=0A= if (timer) window.clearInterval(timer);=0A= document.fire("dom:loaded");=0A= fired =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("');=0A= document.write('');=0A= document.write('');=0A= =0A= digg_width =3D typeof digg_width =3D=3D 'string' ? digg_width : '300px';=0A= digg_height =3D typeof digg_height =3D=3D 'string' ? digg_height : = '350px';=0A= digg_border =3D typeof digg_border =3D=3D 'number' ? digg_border : 1;=0A= digg_target =3D typeof digg_target =3D=3D 'number' ? '_blank' : '';=0A= digg_count =3D typeof digg_count =3D=3D 'number' ? 'no-digg-count' : = '';=0A= digg_description =3D typeof digg_description =3D=3D 'number' ? '' : = 'no-digg-description';=0A= digg_theme =3D typeof digg_theme =3D=3D 'string' ? digg_theme !=3D = 'digg-widget-unstyled' ? 'digg-widget '+digg_theme : digg_theme : = 'digg-widget digg-widget-theme1';=0A= digg_title =3D typeof digg_title =3D=3D 'string' ? digg_title : 'All = popular stories in All Topics';=0A= digg_custom_header =3D typeof digg_custom_header =3D=3D 'string' ? = 'background: '+digg_custom_header+';' : '';=0A= digg_custom_border =3D typeof digg_custom_border =3D=3D 'string' ? = 'border-color: '+digg_custom_border+';' : '';=0A= digg_custom_link =3D typeof digg_custom_link =3D=3D 'string' ? = digg_custom_link : '';=0A= digg_custom_hoverlink =3D typeof digg_custom_hoverlink =3D=3D 'string' = ? digg_custom_hoverlink : '';=0A= digg_custom_footer =3D typeof digg_custom_footer =3D=3D 'string' ? ' = style=3D"color: '+digg_custom_footer+'"' : '';=0A= digg_id =3D typeof digg_id =3D=3D 'string' ? ''+digg_id+'' : = 'digg-widget-container';=0A= =0A= document.write('
    ');=0A= document.write('');=0A= document.write('
    '+digg_title+'
    ');=0A= document.write('
      ');=0A= document.write('
      ');=0A= =0A= function diggwb(obj) {=0A= if (!$j) setTimeout(function() { diggwb(obj); }, 200); //hack for IE = not loading scripts that are included via document.write until it = decides too=0A= $j('#'+digg_id+' ul').html('');=0A= var tpl =3D function() {=0A= return [=0A= 'li', {}, [=0A= 'a', { 'href': this.href+'?OTC-widget', 'class': = 'digg-count' }, this.diggs+' diggs',=0A= 'h3', {}, [=0A= 'a', { 'href': this.href+'?OTC-widget', 'target': = digg_target, 'style': 'color: '+digg_custom_link+' ' }, this.title=0A= ],=0A= 'p', {}, this.description=0A= ]=0A= ];=0A= };=0A= if(!obj) {=0A= $j('#'+digg_id+' ul').html('We were unable to retrieve matching = stories from Digg. Please refresh the page to try again.');=0A= }=0A= if(!obj.stories || obj.stories.length =3D=3D 0) {=0A= $j('#'+digg_id+' ul').html('Currently, there are no recent = stories of this type on Digg.');=0A= }=0A= for (var i =3D 0 ; i < obj.stories.length ; i++) {=0A= if(obj.stories[i].diggs > 10000) {=0A= obj.stories[i].diggs =3D = Math.floor(obj.stories[i].diggs/1000)+'K+';=0A= }=0A= $j('#'+digg_id+' ul').tplAppend(obj.stories[i], tpl);=0A= }=0A= if(digg_custom_hoverlink !=3D '') {=0A= $j('#'+digg_id+' ul a').hover(function(){$j(this).css('color', = digg_custom_hoverlink)}, function() {$j(this).css('color', = digg_custom_link)});=0A= }=0A= }=0A= ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://digg.com/tools/services?type=javascript&callback=diggwb&endPoint=/stories/upcoming&domain=www.latimes.com&sort=digg_count-desc&count=10 diggwb({"timestamp":1219099726,"total":"29","offset":0,"stories":[{"id":8= 033574,"link":"http:\/\/www.latimes.com\/news\/la-na-turin17-2008aug17,0,= 7564012.story?track=3Drss","submit_date":1219016718,"diggs":99,"comments"= :19,"title":"Shroud of Turin Stirs New Controversy ","description":"A = Colorado couple researching the shroud dispute radiocarbon dating of the = alleged burial cloth of Jesus, and Oxford has agreed to help them = reexamine the findings. = ","status":"upcoming","media":"news","user":{"name":"kineticworm","icon":= "http:\/\/digg.com\/users\/kineticworm\/l.png","registered":1184820481,"p= rofileviews":6093},"topic":{"name":"World = News","short_name":"world_news"},"container":{"name":"World & = Business","short_name":"world_business"},"thumbnail":{"originalwidth":300= ,"originalheight":425,"contentType":"image\/jpeg","src":"http:\/\/digg.co= m\/world_news\/Shroud_of_Turin_Stirs_New_Controversy\/t.jpg","width":80,"= height":80},"href":"http:\/\/digg.com\/world_news\/Shroud_of_Turin_Stirs_= New_Controversy"},{"id":"8045606","link":"http:\/\/www.latimes.com\/busin= ess\/la-fi-ea19-2008aug19,1,6523471.story","submit_date":1219082232,"digg= s":91,"comments":0,"title":"Electronic Arts Will Let Take-Two Offer = Expire today","description":"EA will let its offer to buy Take-Two = Interactive Software Inc. expire tonight because the companies won't be = able to merge in time for the holidays.Missing the holiday shopping = season forces EA to reevaluate its $25.74-a-share bid, CEO John = Riccitiello said in a letter today to Take-Two Chairman. NY based = Take-Two had rejected the = offer.","status":"upcoming","media":"news","user":{"name":"optimusprime01= ","icon":"http:\/\/digg.com\/users\/optimusprime01\/l.png","registered":1= 188127607,"profileviews":18971,"fullname":"Optimus = Prime"},"topic":{"name":"Gaming Industry = News","short_name":"gaming_news"},"container":{"name":"Gaming","short_nam= e":"gaming"},"href":"http:\/\/digg.com\/gaming_news\/Electronic_Arts_Will= _Let_Take_Two_Offer_Expire_today"},{"id":"8046102","link":"http:\/\/www.l= atimes.com\/business\/la-fi-coverspeed17-2008aug17,0,5505061.story","subm= it_date":1219084073,"diggs":70,"comments":1,"title":"How to test your = broadband speed","description":"This article explains how to test your = current internet connection with a free online speed = test.","status":"upcoming","media":"news","user":{"name":"LoriAngel","ico= n":"http:\/\/digg.com\/users\/LoriAngel\/l.png","registered":1212080587,"= profileviews":1431,"fullname":"Lori = Deschene"},"topic":{"name":"Software","short_name":"software"},"container= ":{"name":"Technology","short_name":"technology"},"thumbnail":{"originalw= idth":140,"originalheight":110,"contentType":"image\/jpeg","src":"http:\/= \/digg.com\/software\/How_to_test_your_broadband_speed\/t.jpg","width":80= ,"height":80},"href":"http:\/\/digg.com\/software\/How_to_test_your_broad= band_speed"},{"id":"8038843","link":"http:\/\/www.latimes.com\/news\/poli= tics\/la-na-rich18-2008aug18,0,3413584.story","submit_date":1219051520,"d= iggs":20,"comments":2,"title":"Who's rich? McCain and Obama have very = different definitions","description":"To Pastor Rick Warren's question, = Obama says someone making more than $250,000. McCain gives a figure of = $5 million per year. His campaign says he was = joking.","status":"upcoming","media":"news","user":{"name":"matungi","ico= n":"http:\/\/digg.com\/img\/udl.png","registered":1207106767,"profileview= s":65,"fullname":"Mikell Hagood"},"topic":{"name":"US Elections = 2008","short_name":"2008_us_elections"},"container":{"name":"World & = Business","short_name":"world_business"},"href":"http:\/\/digg.com\/2008_= us_elections\/Who_s_rich_McCain_and_Obama_have_very_different_definitions= "},{"id":8049478,"link":"http:\/\/www.latimes.com\/sports\/la-sp-olyheisl= er18-2008aug18,0,7171025.story","submit_date":1219098124,"diggs":22,"comm= ents":0,"title":"Call the U.S. Men the Esteem = Team","description":"What's being redeemed isn't only their record but = their global reputation, which had suffered in the years since 1992's = Dream Team.As \"cheesy\" as Nike's nickname for this team may be -- as = Nike spokesman Kobe Bryant keeps noting -- the U.S. has more to redeem = than its primacy in = basketball.","status":"upcoming","media":"news","user":{"name":"optimuspr= ime01","icon":"http:\/\/digg.com\/users\/optimusprime01\/l.png","register= ed":1188127607,"profileviews":18971,"fullname":"Optimus = Prime"},"topic":{"name":"Basketball","short_name":"basketball"},"containe= r":{"name":"Sports","short_name":"sports"},"thumbnail":{"originalwidth":5= 00,"originalheight":300,"contentType":"image\/jpeg","src":"http:\/\/digg.= com\/basketball\/Call_the_U_S_Men_the_Esteem_Team\/t.jpg","width":80,"hei= ght":80},"href":"http:\/\/digg.com\/basketball\/Call_the_U_S_Men_the_Este= em_Team"},{"id":"8045178","link":"http:\/\/www.latimes.com\/features\/pri= ntedition\/health\/la-he-marijuanapro18-2008aug18,0,3980553.story","submi= t_date":1219080659,"diggs":14,"comments":0,"title":"Pro: Marijuana use = for chronic pain and nausea","description":"Medical marijuana use has a = history stretching back thousands of years. In prebiblical times, the = plant was used as medicinal tea in China, a stress antidote in India and = a pain- reliever for earaches, childbirth and more throughout Asia, the = Middle East and = Africa.","status":"upcoming","media":"news","user":{"name":"devincalloway= ","icon":"http:\/\/digg.com\/users\/devincalloway\/l.png","registered":11= 73429458,"profileviews":786},"topic":{"name":"Health","short_name":"healt= h"},"container":{"name":"Lifestyle","short_name":"lifestyle"},"thumbnail"= :{"originalwidth":140,"originalheight":111,"contentType":"image\/jpeg","s= rc":"http:\/\/digg.com\/health\/Pro_Marijuana_use_for_chronic_pain_and_na= usea_2\/t.jpg","width":80,"height":80},"href":"http:\/\/digg.com\/health\= /Pro_Marijuana_use_for_chronic_pain_and_nausea_2"},{"id":"8043156","link"= :"http:\/\/www.latimes.com\/news\/politics\/la-na-mccain15-2008aug15,0,11= 86560.story","submit_date":1219073389,"diggs":6,"comments":1,"title":"McC= ain Does not Rule out Going to War with Russia","description":"At his = Aspen Institute press conference, McCain doesn't rule out going to war = with = Russia.","status":"upcoming","media":"news","user":{"name":"ileen4justice= ","icon":"http:\/\/digg.com\/users\/ileen4justice\/l.png","registered":11= 75272417,"profileviews":2680,"fullname":"Ileen = "},"topic":{"name":"Political = News","short_name":"politics"},"container":{"name":"World & = Business","short_name":"world_business"},"thumbnail":{"originalwidth":140= ,"originalheight":110,"contentType":"image\/gif","src":"http:\/\/digg.com= \/politics\/McCain_Does_not_Rule_out_Going_to_War_with_Russia\/t.gif","wi= dth":80,"height":80},"href":"http:\/\/digg.com\/politics\/McCain_Does_not= _Rule_out_Going_to_War_with_Russia"},{"id":"8036766","link":"http:\/\/www= .latimes.com\/sports\/la-sp-usc14-2008aug14,0,2415417.story","submit_date= ":1219037996,"diggs":6,"comments":0,"title":"Jock Itch Sidelines USC = Football Players","description":"I hope they lose to UVa on August 30 = because of = this.","status":"upcoming","media":"news","user":{"name":"mattcc42","icon= ":"http:\/\/digg.com\/users\/mattcc42\/l.png","registered":1153948164,"pr= ofileviews":430},"topic":{"name":"American & Canadian = Football","short_name":"football"},"container":{"name":"Sports","short_na= me":"sports"},"thumbnail":{"originalwidth":140,"originalheight":110,"cont= entType":"image\/jpeg","src":"http:\/\/digg.com\/football\/Jock_Itch_Side= lines_USC_Football_Players\/t.jpg","width":80,"height":80},"href":"http:\= /\/digg.com\/football\/Jock_Itch_Sidelines_USC_Football_Players"},{"id":"= 8035328","link":"http:\/\/www.latimes.com\/news\/nationworld\/world\/la-f= g-breakaway18-2008aug18,0,3381598.story","submit_date":1219028533,"diggs"= :6,"comments":3,"title":"Russia's claim of Georgia genocide in South = Ossetia - Los An","description":"South Ossetian city Tskhinvali slowly = emerges from shell shock, but the damage doesn't appear to be on the = scale Russia claimed. Residents blame the bloodshed on Georgia and = regard Russia as = savior.","status":"upcoming","media":"news","user":{"name":"mak31","icon"= :"http:\/\/digg.com\/img\/udl.png","registered":1198767241,"profileviews"= :12,"fullname":"m a ko"},"topic":{"name":"Political = News","short_name":"politics"},"container":{"name":"World & = Business","short_name":"world_business"},"thumbnail":{"originalwidth":140= ,"originalheight":110,"contentType":"image\/jpeg","src":"http:\/\/digg.co= m\/politics\/Russia_s_claim_of_Georgia_genocide_in_South_Ossetia_Los_An\/= t.jpg","width":80,"height":80},"href":"http:\/\/digg.com\/politics\/Russi= a_s_claim_of_Georgia_genocide_in_South_Ossetia_Los_An"},{"id":"8033337","= link":"http:\/\/www.latimes.com\/news\/nationworld\/world\/la-fg-pillars1= 8-2008aug18,0,7994401.story?page=3D2","submit_date":1219015121,"diggs":6,= "comments":1,"title":"Georgia-Russia conflict a blow to Bush foreign = policy - Los ","description":"The president's reliance on diplomacy = based on personal relations with leaders such as Putin and his push to = establish democracies from the top down has proved not so = viable.","status":"upcoming","media":"news","user":{"name":"GrownupPhan",= "icon":"http:\/\/digg.com\/users\/GrownupPhan\/l.png","registered":113471= 8672,"profileviews":863},"topic":{"name":"World = News","short_name":"world_news"},"container":{"name":"World & = Business","short_name":"world_business"},"href":"http:\/\/digg.com\/world= _news\/Georgia_Russia_conflict_a_blow_to_Bush_foreign_policy_Los"}],"coun= t":10}) ------=_NextPart_000_0000_01C90149.DA9862B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://articles.latimes.com/javascripts/s_code.js?1217444655 /* SiteCatalyst code version: H.9.=0A= Copyright 1997-2008 Omniture, Inc. More info available at=0A= http://www.omniture.com */=0A= /************************ ADDITIONAL FEATURES ************************=0A= Plugins=0A= */=0A= /* Specify the Report Suite ID(s) to track here */=0A= var s_account=3D'triblatarticlesprod';=0A= var s=3Ds_gi(s_account)=0A= =0A= /************************** CONFIG SECTION **************************/=0A= /* You may add or alter any code config here. */=0A= /* E-commerce Config */=0A= s.currencyCode=3D"USD"=0A= /* Link Tracking Config */=0A= s.trackDownloadLinks=3Dtrue=0A= s.trackExternalLinks=3Dtrue=0A= s.trackInlineStats=3Dtrue=0A= s.linkDownloadFileTypes=3D"exe,zip,wav,mp3,mov,mpg,avi,wmv,doc,pdf,xls"=0A= s.linkInternalFilters=3D"javascript:,topics.latimes.com"=0A= s.linkLeaveQueryString=3Dfalse=0A= s.linkTrackVars=3D"server"=0A= s.linkTrackEvents=3D"None"=0A= =0A= /* Set URL to prop 26 */=0A= s.prop26=3Dwindow.location.pathname;=0A= =0A= /* Plugin Config */=0A= s.usePlugins=3Dtrue=0A= function s_doPlugins(s) {=0A= =0A= if(!s.campaign){=0A= =0A= /* Set campaign if cid is found */=0A= s.campaign=3Ds.getQueryParam('cid,track,gcid','');=0A= =0A= /* getValOnce used to deflate campaign click-throughs */=0A= s.campaign=3Ds.getValOnce(s.campaign,"ctc",0)=0A= }=0A= /* Set event 5 (page view) on every page */=0A= s.events=3Ds.events?s.events+',event5':'event5';=0A= =0A= /* Set days since last visit */=0A= s.eVar25=3Ds.getDaysSinceLastVisit();=0A= =0A= =0A= var t =3D new Date();cct=3Dt.getTime();=0A= var month =3D t.getMonth();var day =3D t.getDate();var year =3D = t.getFullYear();=0A= var = mon=3D['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov',= 'Dec'];=0A= var thism=3Dmon[month];var currentDate =3D (thism + = year);String(currentDate);=0A= if(year!=3D'2008'){currentDate=3D=3D'Date Unavailable'};=0A= =0A= =0A= /* Repeat Visitor by campaign */=0A= =0A= =0A= var temp1=3Ds.getQueryParam('gcid');var = temp2=3Ds.getQueryParam('track');var temp3=3Ds.getQueryParam('ctrack');=0A= var temp4=3Ds.getQueryParam('coll');var = temp5=3Ds.getQueryParam('cmp');var temp6;=0A= if(temp1){temp6=3DcurrentDate+':'+'gcid:'+temp1};if(temp2){temp6=3Dcurren= tDate+':'+'track:'+temp2};if(temp3){temp6=3DcurrentDate+':'+'ctrack:'+tem= p3};=0A= if(temp4){temp6=3DcurrentDate+':'+'coll:'+temp4};if(temp5){temp6=3Dcurren= tDate+':'+'cmp:'+temp5};=0A= var isFtcv =3D s.c_r('s_ftcv');var isVisit =3D s.c_r('s_current');=0A= var ex=3Dnew Date();ct=3Dex.getTime();ex.setTime(ct+90*24*60*60*1000) // = 90 days expire;=0A= var ccxp=3Dnew Date();var = cct=3Dccxp.getTime();ccxp.setTime(cct+30*60*1000); // expire in 30 min=0A= if((temp6) && = (!isFtcv)){s.c_w('s_ftcv',temp6,ex);s.c_w('s_current',temp6,ccxp);=0A= s.events=3Ds.apl(s.events,'event9',',','1');s.eVar26=3Dtemp6};=0A= if((isFtcv) && = (!isVisit)){s.events=3Ds.apl(s.events,'event10',',','1')}//Set Repeat = visit event;=0A= =0A= =0A= /* Set event for unique searches if prop3 is found */=0A= =0A= if(s.prop3){=0A= s.prop3=3Ds.prop3.toLowerCase();=0A= s.eVar3=3Ds.prop3;=0A= var t_search=3Ds.getValOnce(s.eVar3,'ev3',0)=0A= if(t_search)=0A= s.events=3Ds.apl(s.events,'event6',1)=0A= }=0A= =0A= /* Plugin: timeparting - PST */=0A= s.prop34=3Ds.getTimeParting('h','-8','2008');=0A= s.prop33=3Ds.getTimeParting('d','-8','2008');=0A= s.prop35=3Ds.getTimeParting('w','-8','2008');=0A= =0A= =0A= }=0A= s.doPlugins=3Ds_doPlugins=0A= /************************** PLUGINS SECTION *************************/=0A= /* You may insert any plugins you wish to use here. */=0A= =0A= /*=0A= * Plugin: Days since last Visit 1.0.H=0A= */=0A= s.getDaysSinceLastVisit=3Dnew Function(""=0A= +"var s=3Dthis,e=3Dnew = Date(),cval,ct=3De.getTime(),c=3D's_lastvisit',day=3D24*"=0A= +"60*60*1000;e.setTime(ct+3*365*day);cval=3Ds.c_r(c);if(!cval){s.c_w(c,"=0A= +"ct,e);return 'First page view or cookies not supported';}else{var d"=0A= +"=3Dct-cval;if(d>30*60*1000){if(d>30*day){s.c_w(c,ct,e);return 'More t"=0A= +"han 30 days';}if(d<30*day+1 && d>7*day){s.c_w(c,ct,e);return 'More "=0A= +"than 7 days';}if(d<7*day+1 && d>day){s.c_w(c,ct,e);return 'Less tha"=0A= +"n 7 days';}if(d-1){q=3Du.substring(i+1);v"=0A= +"=3Ds.pt(q,'&','p_gvf',k)}return v");=0A= s.p_gvf=3Dnew Function("t","k",""=0A= +"if(t){var = s=3Dthis,i=3Dt.indexOf('=3D'),p=3Di<0?t:t.substring(0,i),v=3Di<0?'T"=0A= +"rue':t.substring(i+1);if(p.toLowerCase()=3D=3Dk.toLowerCase())return = s."=0A= +"epa(v)}return ''");=0A= =0A= /*=0A= * Plugin Utility: apl v1.1=0A= */=0A= s.apl=3Dnew Function("L","v","d","u",""=0A= +"var s=3Dthis,m=3D0;if(!L)L=3D'';if(u){var = i,n,a=3Ds.split(L,d);for(i=3D0;i-1?i:l.length;a[x"=0A= +"++]=3Dl.substring(0,i);l=3Dl.substring(i+d.length);}return a");=0A= =0A= /*=0A= * Plugin: getTimeParting 1.3 - Set timeparting values based on time zone=0A= */=0A= =0A= s.getTimeParting=3Dnew Function("t","z","y",""=0A= +"dc=3Dnew Date('1/1/2000');var f=3D15;var ne=3D8;if(dc.getDay()!=3D6||"=0A= +"dc.getMonth()!=3D0){return'Data Not Available'}else{;z=3DparseInt(z);"=0A= +"if(y=3D=3D'2009'){f=3D8;ne=3D1};gmar=3Dnew = Date('3/1/'+y);dsts=3Df-gmar.getDay("=0A= +");gnov=3Dnew Date('11/1/'+y);dste=3Dne-gnov.getDay();spr=3Dnew = Date('3/'"=0A= +"+dsts+'/'+y);fl=3Dnew Date('11/'+dste+'/'+y);cd=3Dnew Date();"=0A= +"if(cd>spr&&cd3"=0A= +"0){mint=3D'30'}if(thish>=3D12){ap=3D'PM';thish=3Dthish-12};if = (thish=3D=3D0){th"=0A= +"ish=3D12};if(thisd=3D=3D6||thisd=3D=3D0){dt=3D'Weekend'};var = timestring=3Dthish+'"=0A= +":'+mint+ap;var daystring=3Ddow;var = endstring=3Ddt;if(t=3D=3D'h'){return tim"=0A= +"estring}if(t=3D=3D'd'){return daystring};if(t=3D=3D'w'){return ap}}};"=0A= );=0A= =0A= /* WARNING: Changing any of the below variables will cause drastic=0A= changes to how your visitor data is collected. Changes should only be=0A= made when instructed to do so by your account manager.*/=0A= s.visitorNamespace=3D"tribuneinteractive"=0A= s.trackingServer=3D"m.trb.com"=0A= s.trackingServerSecure=3D"sm.trb.com"=0A= s.dc=3D122=0A= =0A= /************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/=0A= var s_objectID;function s_c2fe(f){var x=3D'',s=3D0,e,a,b,c;while(1){e=3D=0A= f.indexOf('"',s);b=3Df.indexOf('\\',s);c=3Df.indexOf("\n",s);if(e<0||(b>=3D=0A= 0&&b=3D0&&c=3D0){x+=3D(e>s?f.substrin= g(s,e):=0A= '')+(e=3D=3Dc?'\\n':'\\'+f.substring(e,e+1));s=3De+1}else return x=0A= +f.substring(s)}return f}function s_c2fa(f){var s=3Df.indexOf('(')+1,e=3D=0A= f.indexOf(')'),a=3D'',c;while(s>=3D0&&s=3D0){d=3D1;q=3D'';x=3D0;f=3Dc.substring(s)= ;a=3D=0A= s_c2fa(f);e=3Do=3Dc.indexOf('{',s);e++;while(d>0){h=3Dc.substring(e,e+1);= if(=0A= q){if(h=3D=3Dq&&!x)q=3D'';if(h=3D=3D'\\')x=3Dx?0:1;else = x=3D0}else{if(h=3D=3D'"'||h=3D=3D"'"=0A= )q=3Dh;if(h=3D=3D'{')d++;if(h=3D=3D'}')d--}if(d>0)e++}c=3Dc.substring(0,s= )=0A= +'new Function('+(a?a+',':'')+'"'+s_c2fe(c.substring(o+1,e))+'")'=0A= +c.substring(e+1);s=3Dc.indexOf('function')}fc+=3Ds_c2fe(c)+';return = s");'=0A= eval(fc);return f}function s_gi(un,pg,ss){var c=3D"function s_c(un,pg,s"=0A= +"s){var s=3Dthis;s.wd=3Dwindow;if(!s.wd.s_c_in){s.wd.s_c_il=3Dnew = Array;s."=0A= +"wd.s_c_in=3D0;}s._il=3Ds.wd.s_c_il;s._in=3Ds.wd.s_c_in;s._il[s._in]=3Ds= ;s.w"=0A= +"d.s_c_in++;s.m=3Dfunction(m){return = (''+m).indexOf('{')<0};s.fl=3Dfunct"=0A= +"ion(x,l){return x?(''+x).substring(0,l):x};s.co=3Dfunction(o){if(!o)r"=0A= +"eturn o;var n=3Dnew Object,x;for(x in o)if(x.indexOf('select')<0&&x.i"=0A= +"ndexOf('filter')<0)n[x]=3Do[x];return = n};s.num=3Dfunction(x){x=3D''+x;for"=0A= +"(var p=3D0;p=3D0){x=3Dx.substring(0,i)+n+x.substring(i+o.length);i=3Dx.ind= ex"=0A= +"Of(o,i+n.length)}return x};s.ape=3Dfunction(x){var = s=3Dthis,i;x=3Dx?s.rep"=0A= +"(escape(''+x),'+','%2B'):x;if(x&&s.charSet&&s.em=3D=3D1&&x.indexOf('%u'= "=0A= +")<0&&x.indexOf('%U')<0){i=3Dx.indexOf('%');while(i>=3D0){i++;if(('89ABC= "=0A= +"DEFabcdef').indexOf(x.substring(i,i+1))>=3D0)return x.substring(0,i)+"=0A= +"'u00'+x.substring(i);i=3Dx.indexOf('%',i)}}return = x};s.epa=3Dfunction(x"=0A= +"){var s=3Dthis;return x?unescape(s.rep(''+x,'+',' = ')):x};s.pt=3Dfunctio"=0A= +"n(x,d,f,a){var = s=3Dthis,t=3Dx,z=3D0,y,r;while(t){y=3Dt.indexOf(d);y=3Dy<0?t.l"=0A= +"ength:y;t=3Dt.substring(0,y);r=3Ds.m(f)?s[f](t,a):f(t,a);if(r)return = r;"=0A= +"z+=3Dy+d.length;t=3Dx.substring(z,x.length);t=3Dz=3D0)a=3Da.substring(0,"=0A= +"c);if(t.substring(0,2)=3D=3D's_')t=3Dt.substring(2);return = (t!=3D''&&t=3D=3Da)}"=0A= +";s.fsf=3Dfunction(t,a){var = s=3Dthis;if(s.pt(a,',','isf',t))s.fsg+=3D(s.fs"=0A= +"g!=3D''?',':'')+t;return 0};s.fs=3Dfunction(x,f){var = s=3Dthis;s.fsg=3D'';s."=0A= +"pt(x,',','fsf',f);return s.fsg};s.c_d=3D'';s.c_gdf=3Dfunction(t,a){var = "=0A= +"s=3Dthis;if(!s.num(t))return 1;return 0};s.c_gd=3Dfunction(){var = s=3Dthis"=0A= +",d=3Ds.wd.location.hostname,n=3Ds.fpCookieDomainPeriods,p;if(!n)n=3Ds.c= oo"=0A= +"kieDomainPeriods;if(d&&!s.c_d){n=3Dn?parseInt(n):2;n=3Dn>2?n:2;p=3Dd.la= st"=0A= +"IndexOf('.');if(p>=3D0){while(p>=3D0&&n>1){p=3Dd.lastIndexOf('.',p-1);n= --"=0A= +"}s.c_d=3Dp>0&&s.pt(d,'.','c_gdf',0)?d.substring(p):d}}return s.c_d};s"=0A= +".c_r=3Dfunction(k){var s=3Dthis;k=3Ds.ape(k);var c=3D' = '+s.d.cookie,i=3Dc.ind"=0A= +"exOf(' = '+k+'=3D'),e=3Di<0?i:c.indexOf(';',i),v=3Di<0?'':s.epa(c.substring"=0A= +"(i+2+k.length,e<0?c.length:e));return = v!=3D'[[B]]'?v:''};s.c_w=3Dfuncti"=0A= +"on(k,v,e){var = s=3Dthis,d=3Ds.c_gd(),l=3Ds.cookieLifetime,t;v=3D''+v;l=3Dl?(''"=0A= +"+l).toUpperCase():'';if(e&&l!=3D'SESSION'&&l!=3D'NONE'){t=3D(v!=3D''?pa= rseI"=0A= +"nt(l?l:0):-60);if(t){e=3Dnew Date;e.setTime(e.getTime()+(t*1000))}}if"=0A= +"(k&&l!=3D'NONE'){s.d.cookie=3Dk+'=3D'+s.ape(v!=3D''?v:'[[B]]')+'; = path=3D/;'+"=0A= +"(e&&l!=3D'SESSION'?' expires=3D'+e.toGMTString()+';':'')+(d?' = domain=3D'+"=0A= +"d+';':'');return s.c_r(k)=3D=3Dv}return = 0};s.eh=3Dfunction(o,e,r,f){var s"=0A= +"=3Dthis,b=3D's_'+e+'_'+s._in,n=3D-1,l,i,x;if(!s.ehl)s.ehl=3Dnew = Array;l=3Ds.e"=0A= +"hl;for(i=3D0;i=3D5&&(!s.isopera||s.apv>=3D7))eval('t"=0A= +"ry{r=3Ds.m(f)?s[f](a):f(a)}catch(e){r=3Ds.m(t)?s[t](e):t(e)}');else{if(= "=0A= +"s.ismac&&s.u.indexOf('MSIE = 4')>=3D0)r=3Ds.m(b)?s[b](a):b(a);else{s.eh(s"=0A= +".wd,'onerror',0,o);r=3Ds.m(f)?s[f](a):f(a);s.eh(s.wd,'onerror',1)}}re"=0A= +"turn r};s.gtfset=3Dfunction(e){var s=3Dthis;return = s.tfs};s.gtfsoe=3Dnew "=0A= +"Function('e','var s=3Ds_c_il['+s._in+'];s.eh(window,\"onerror\",1);s."=0A= +"etfs=3D1;var c=3Ds.t();if(c)s.d.write(c);s.etfs=3D0;return = true');s.gtfsf"=0A= +"b=3Dfunction(a){return window};s.gtfsf=3Dfunction(w){var = s=3Dthis,p=3Dw.par"=0A= +"ent,l=3Dw.location;s.tfs=3Dw;if(p&&p.location!=3Dl&&p.location.host=3D=3D= l.ho"=0A= +"st){s.tfs=3Dp;return s.gtfsf(s.tfs)}return = s.tfs};s.gtfs=3Dfunction(){v"=0A= +"ar = s=3Dthis;if(!s.tfs){s.tfs=3Ds.wd;if(!s.etfs)s.tfs=3Ds.cet('gtfsf',s.tf"=0A= +"s,'gtfset',s.gtfsoe,'gtfsfb')}return s.tfs};s.ca=3Dfunction(){var = s=3Dt"=0A= +"his,imn=3D's_i_'+s.fun;if(s.d.images&&s.apv>=3D3&&(!s.isopera||s.apv>=3D= 7"=0A= +")&&(s.ns6<0||s.apv>=3D6.1)){s.ios=3D1;if(!s.d.images[imn]&&(!s.isns||(s= "=0A= +".apv<4||s.apv>=3D5))){s.d.write('');if(!s.d.images[imn])s.ios=3D0}}};s.mr=3Dfunc"=0A= +"tion(sess,q,ta){var = s=3Dthis,dc=3Ds.dc,t1=3Ds.trackingServer,t2=3Ds.trackin"=0A= +"gServerSecure,ns=3Ds.visitorNamespace,unc=3Ds.rep(s.fun,'_','-'),imn=3D= 's"=0A= +"_i_'+s.fun,im,b,e,rs=3D'http'+(s.ssl?'s':'')+'://'+(t1?(s.ssl&&t2?t2:"=0A= +"t1):((ns?ns:(s.ssl?'102':unc))+'.'+(s.dc?s.dc:112)+'.2o7.net'))+'/b"=0A= +"/ss/'+s.un+'/1/H.9-Pdvu-2/'+sess+'?[AQB]&ndh=3D1'+(q?q:'')+(s.q?s.q:'"=0A= +"')+'&[AQE]';if(s.isie&&!s.ismac){if(s.apv>5.5)rs=3Ds.fl(rs,4095);else"=0A= +" rs=3Ds.fl(rs,2047)}if(s.ios||s.ss){if = (!s.ss)s.ca();im=3Ds.wd[imn]?s.w"=0A= +"d[imn]:s.d.images[imn];if(!im)im=3Ds.wd[imn]=3Dnew = Image;im.src=3Drs;if(r"=0A= +"s.indexOf('&pe=3D')>=3D0&&(!ta||ta=3D=3D'_self'||ta=3D=3D'_top'||(s.wd.= name&&ta"=0A= +"=3D=3Ds.wd.name))){b=3De=3Dnew = Date;while(e.getTime()-b.getTime()<500)e=3Dnew"=0A= +" Date}return ''}return ''};s.gg=3Dfunction(v){var s=3Dthis;return = s.wd['s_'+v"=0A= +"]};s.glf=3Dfunction(t,a){if(t.substring(0,2)=3D=3D's_')t=3Dt.substring(= 2);v"=0A= +"ar s=3Dthis,v=3Ds.gg(t);if(v)s[t]=3Dv};s.gl=3Dfunction(v){var = s=3Dthis;s.pt(v"=0A= +",',','glf',0)};s.gv=3Dfunction(v){var s=3Dthis;return = s['vpm_'+v]?s['vp"=0A= +"v_'+v]:(s[v]?s[v]:'')};s.havf=3Dfunction(t,a){var = s=3Dthis,b=3Dt.substrin"=0A= +"g(0,4),x=3Dt.substring(4),n=3DparseInt(x),k=3D'g_'+t,m=3D'vpm_'+t,q=3Dt= ,v=3Ds.l"=0A= +"inkTrackVars,e=3Ds.linkTrackEvents;s[k]=3Ds.gv(t);if(s.lnk||s.eo){v=3Dv= ?v"=0A= +"+','+s.vl_l:'';if(v&&!s.pt(v,',','isf',t))s[k]=3D'';if(t=3D=3D'events'&= &e"=0A= +")s[k]=3Ds.fs(s[k],e)}s[m]=3D0;if(t=3D=3D'visitorID')q=3D'vid';else = if(t=3D=3D'pag"=0A= +"eURL')q=3D'g';else if(t=3D=3D'referrer')q=3D'r';else = if(t=3D=3D'vmk')q=3D'vmt';el"=0A= +"se = if(t=3D=3D'charSet'){q=3D'ce';if(s[k]&&s.em=3D=3D2)s[k]=3D'UTF-8'}else = if(t=3D"=0A= +"=3D'visitorNamespace')q=3D'ns';else = if(t=3D=3D'cookieDomainPeriods')q=3D'cdp'"=0A= +";else if(t=3D=3D'cookieLifetime')q=3D'cl';else = if(t=3D=3D'variableProvider')q"=0A= +"=3D'vvp';else if(t=3D=3D'currencyCode')q=3D'cc';else = if(t=3D=3D'channel')q=3D'ch'"=0A= +";else if(t=3D=3D'campaign')q=3D'v0';else if(s.num(x)) = {if(b=3D=3D'prop')q=3D'c'"=0A= +"+n;else if(b=3D=3D'eVar')q=3D'v'+n;else = if(b=3D=3D'hier'){q=3D'h'+n;s[k]=3Ds.fl(s"=0A= +"[k],255)}}if(s[k]&&t!=3D'linkName'&&t!=3D'linkType')s.qav+=3D'&'+q+'=3D= '+s."=0A= +"ape(s[k]);return ''};s.hav=3Dfunction(){var = s=3Dthis;s.qav=3D'';s.pt(s.vl"=0A= +"_t,',','havf',0);return = s.qav};s.lnf=3Dfunction(t,h){t=3Dt?t.toLowerCas"=0A= +"e():'';h=3Dh?h.toLowerCase():'';var = te=3Dt.indexOf('=3D');if(t&&te>0&&h.i"=0A= +"ndexOf(t.substring(te+1))>=3D0)return t.substring(0,te);return ''};s."=0A= +"ln=3Dfunction(h){var s=3Dthis,n=3Ds.linkNames;if(n)return = s.pt(n,',','lnf"=0A= +"',h);return = ''};s.ltdf=3Dfunction(t,h){t=3Dt?t.toLowerCase():'';h=3Dh?h.t"=0A= +"oLowerCase():'';var = qi=3Dh.indexOf('?');h=3Dqi>=3D0?h.substring(0,qi):h;i"=0A= +"f(t&&h.substring(h.length-(t.length+1))=3D=3D'.'+t)return 1;return = 0};s"=0A= +".ltef=3Dfunction(t,h){t=3Dt?t.toLowerCase():'';h=3Dh?h.toLowerCase():''= ;i"=0A= +"f(t&&h.indexOf(t)>=3D0)return 1;return 0};s.lt=3Dfunction(h){var = s=3Dthis"=0A= +",lft=3Ds.linkDownloadFileTypes,lef=3Ds.linkExternalFilters,lif=3Ds.link= In"=0A= +"ternalFilters;lif=3Dlif?lif:s.wd.location.hostname;h=3Dh.toLowerCase();= "=0A= +"if(s.trackDownloadLinks&&lft&&s.pt(lft,',','ltdf',h))return 'd';if("=0A= +"s.trackExternalLinks&&(lef||lif)&&(!lef||s.pt(lef,',','ltef',h))&&("=0A= +"!lif||!s.pt(lif,',','ltef',h)))return 'e';return ''};s.lc=3Dnew Funct"=0A= +"ion('e','var = s=3Ds_c_il['+s._in+'],b=3Ds.eh(this,\"onclick\");s.lnk=3Ds.c"=0A= +"o(this);s.t();s.lnk=3D0;if(b)return this[b](e);return = true');s.bc=3Dnew"=0A= +" Function('e','var s=3Ds_c_il['+s._in+'],f;if(s.d&&s.d.all&&s.d.all.c"=0A= +"ppXYctnr)return;s.eo=3De.srcElement?e.srcElement:e.target;eval(\"try{"=0A= +"if(s.eo&&(s.eo.tagName||s.eo.parentElement||s.eo.parentNode))s.t()}"=0A= +"catch(f){}\");s.eo=3D0');s.ot=3Dfunction(o){var = a=3Do.type,b=3Do.tagName;re"=0A= +"turn (a&&a.toUpperCase?a:b&&b.toUpperCase?b:o.href?'A':'').toUpperC"=0A= +"ase()};s.oid=3Dfunction(o){var = s=3Dthis,t=3Ds.ot(o),p=3Do.protocol,c=3Do.oncl"=0A= +"ick,n=3D'',x=3D0;if(!o.s_oid){if(o.href&&(t=3D=3D'A'||t=3D=3D'AREA')&&(= !c||!p||"=0A= +"p.toLowerCase().indexOf('javascript')<0))n=3Do.href;else = if(c){n=3Ds.re"=0A= +"p(s.rep(s.rep(s.rep(''+c,\"\\r\",''),\"\\n\",''),\"\\t\",''),' ',''"=0A= +");x=3D2}else = if(o.value&&(t=3D=3D'INPUT'||t=3D=3D'SUBMIT')){n=3Do.value;x=3D3}els"=0A= +"e = if(o.src&&t=3D=3D'IMAGE')n=3Do.src;if(n){o.s_oid=3Ds.fl(n,100);o.s_oidt=3D= x"=0A= +"}}return o.s_oid};s.rqf=3Dfunction(t,un){var = s=3Dthis,e=3Dt.indexOf('=3D'),"=0A= +"u=3De>=3D0?','+t.substring(0,e)+',':'';return = u&&u.indexOf(','+un+',')>"=0A= +"=3D0?s.epa(t.substring(e+1)):''};s.rq=3Dfunction(un){var = s=3Dthis,c=3Dun.in"=0A= +"dexOf(','),v=3Ds.c_r('s_sq'),q=3D'';if(c<0)return = s.pt(v,'&','rqf',un);"=0A= +"return s.pt(un,',','rq',0)};s.sqp=3Dfunction(t,a){var = s=3Dthis,e=3Dt.inde"=0A= +"xOf('=3D'),q=3De<0?'':s.epa(t.substring(e+1));s.sqq[q]=3D'';if(e>=3D0)s= .pt("=0A= +"t.substring(0,e),',','sqs',q);return 0};s.sqs=3Dfunction(un,q){var = s=3D"=0A= +"this;s.squ[un]=3Dq;return 0};s.sq=3Dfunction(q){var = s=3Dthis,k=3D's_sq',v=3Ds"=0A= +".c_r(k),x,c=3D0;s.sqq=3Dnew Object;s.squ=3Dnew = Object;s.sqq[q]=3D'';s.pt(v,"=0A= +"'&','sqp',0);s.pt(s.un,',','sqs',q);v=3D'';for(x in s.squ)s.sqq[s.squ"=0A= +"[x]]+=3D(s.sqq[s.squ[x]]?',':'')+x;for(x in = s.sqq)if(x&&s.sqq[x]&&(x=3D"=0A= +"=3Dq||c<2)){v+=3D(v?'&':'')+s.sqq[x]+'=3D'+s.ape(x);c++}return = s.c_w(k,v,"=0A= +"0)};s.wdl=3Dnew Function('e','var = s=3Ds_c_il['+s._in+'],r=3Dtrue,b=3Ds.eh(s"=0A= +".wd,\"onload\"),i,o,oc;if(b)r=3Dthis[b](e);for(i=3D0;i=3D0)&&oc.indexOf(\".tl(\")<0)"=0A= +"s.eh(o,\"onclick\",0,s.lc);}return r');s.wds=3Dfunction(){var = s=3Dthis;"=0A= +"if(s.apv>3&&(!s.isie||!s.ismac||s.apv>=3D5)){if(s.b&&s.b.attachEvent)"=0A= +"s.b.attachEvent('onclick',s.bc);else if(s.b&&s.b.addEventListener)s"=0A= +".b.addEventListener('click',s.bc,false);else s.eh(s.wd,'onload',0,s"=0A= +".wdl)}};s.vs=3Dfunction(x){var = s=3Dthis,v=3Ds.visitorSampling,g=3Ds.visitor"=0A= +"SamplingGroup,k=3D's_vsn_'+s.un+(g?'_'+g:''),n=3Ds.c_r(k),e=3Dnew = Date,y=3D"=0A= +"e.getYear();e.setYear(y+10+(y<1900?1900:0));if(v){v*=3D100;if(!n){if("=0A= +"!s.c_w(k,x,e))return 0;n=3Dx}if(n%10000>v)return 0}return 1};s.dyasmf"=0A= +"=3Dfunction(t,m){if(t&&m&&m.indexOf(t)>=3D0)return 1;return = 0};s.dyasf=3D"=0A= +"function(t,m){var = s=3Dthis,i=3Dt?t.indexOf('=3D'):-1,n,x;if(i>=3D0&&m){var "=0A= +"n=3Dt.substring(0,i),x=3Dt.substring(i+1);if(s.pt(x,',','dyasmf',m))ret= "=0A= +"urn n}return 0};s.uns=3Dfunction(){var = s=3Dthis,x=3Ds.dynamicAccountSelec"=0A= +"tion,l=3Ds.dynamicAccountList,m=3Ds.dynamicAccountMatch,n,i;s.un.toLowe= "=0A= +"rCase();if(x&&l){if(!m)m=3Ds.wd.location.host;if(!m.toLowerCase)m=3D''+= "=0A= +"m;l=3Dl.toLowerCase();m=3Dm.toLowerCase();n=3Ds.pt(l,';','dyasf',m);if(= n)"=0A= +"s.un=3Dn}i=3Ds.un.indexOf(',');s.fun=3Di<0?s.un:s.un.substring(0,i)};s.= sa"=0A= +"=3Dfunction(un){s.un=3Dun;if(!s.oun)s.oun=3Dun;else = if((','+s.oun+',').in"=0A= +"dexOf(un)<0)s.oun+=3D','+un;s.uns()};s.t=3Dfunction(){var = s=3Dthis,trk=3D1,"=0A= +"tm=3Dnew = Date,sed=3DMath&&Math.random?Math.floor(Math.random()*10000000"=0A= +"000000):tm.getTime(),sess=3D's'+Math.floor(tm.getTime()/10800000)%10+"=0A= +"sed,yr=3Dtm.getYear(),vt=3Dtm.getDate()+'/'+tm.getMonth()+'/'+(yr<1900?= "=0A= +"yr+1900:yr)+' '+tm.getHours()+':'+tm.getMinutes()+':'+tm.getSeconds"=0A= +"()+' '+tm.getDay()+' = '+tm.getTimezoneOffset(),tfs=3Ds.gtfs(),ta=3D'',q=3D"=0A= +"'',qs=3D'';s.uns();if(!s.q){var = tl=3Dtfs.location,x=3D'',c=3D'',v=3D'',p=3D'',b"=0A= +"w=3D'',bh=3D'',j=3D'1.0',k=3Ds.c_w('s_cc','true',0)?'Y':'N',hp=3D'',ct=3D= '',pn=3D"=0A= +"0,ps;if(s.apv>=3D4)x=3Dscreen.width+'x'+screen.height;if(s.isns||s.isop= "=0A= +"era){if(s.apv>=3D3){j=3D'1.1';v=3Ds.n.javaEnabled()?'Y':'N';if(s.apv>=3D= 4){"=0A= +"j=3D'1.2';c=3Dscreen.pixelDepth;bw=3Ds.wd.innerWidth;bh=3Ds.wd.innerHei= ght;"=0A= +"if(s.apv>=3D4.06)j=3D'1.3'}}s.pl=3Ds.n.plugins}else = if(s.isie){if(s.apv>=3D"=0A= +"4){v=3Ds.n.javaEnabled()?'Y':'N';j=3D'1.2';c=3Dscreen.colorDepth;if(s.a= pv"=0A= +">=3D5){bw=3Ds.d.documentElement.offsetWidth;bh=3Ds.d.documentElement.of= fs"=0A= +"etHeight;j=3D'1.3';if(!s.ismac&&s.b){s.b.addBehavior('#default#homePa"=0A= +"ge');hp=3Ds.b.isHomePage(tl)?\"Y\":\"N\";s.b.addBehavior('#default#cl"=0A= +"ientCaps');ct=3Ds.b.connectionType}}}else = r=3D''}if(s.pl)while(pn=3D0&&oc.indexOf(\".s_oc(\")<0)||oc.indexOf(\".tl(\")>=3D0)return= "=0A= +" = ''}ta=3Dn?o.target:1;h=3Do.href?o.href:'';i=3Dh.indexOf('?');h=3Ds.linkLe= a"=0A= +"veQueryString||i<0?h:h.substring(0,i);l=3Ds.linkName?s.linkName:s.ln("=0A= +"h);t=3Ds.linkType?s.linkType.toLowerCase():s.lt(h);if(t&&(h||l))q+=3D'&= "=0A= +"pe=3Dlnk_'+(t=3D=3D'd'||t=3D=3D'e'?s.ape(t):'o')+(h?'&pev1=3D'+s.ape(h)= :'')+(l?"=0A= +"'&pev2=3D'+s.ape(l):'');else = trk=3D0;if(s.trackInlineStats){if(!p){p=3Ds."=0A= +"gv('pageURL');w=3D0}t=3Ds.ot(o);i=3Do.sourceIndex;if(s.gg('objectID')){= n=3D"=0A= +"s.gg('objectID');x=3D1;i=3D1}if(p&&n&&t)qs=3D'&pid=3D'+s.ape(s.fl(p,255= ))+("=0A= +"w?'&pidt=3D'+w:'')+'&oid=3D'+s.ape(s.fl(n,100))+(x?'&oidt=3D'+x:'')+'&o= t=3D"=0A= +"'+s.ape(t)+(i?'&oi=3D'+i:'')}}if(!trk&&!qs)return '';if(s.p_r)s.p_r()"=0A= +";var = code=3D'';if(trk&&s.vs(sed))code=3Ds.mr(sess,(vt?'&t=3D'+s.ape(vt):'"=0A= +"')+s.hav()+q+(qs?qs:s.rq(s.un)),ta);s.sq(trk?'':qs);s.lnk=3Ds.eo=3Ds.li= "=0A= +"nkName=3Ds.linkType=3Ds.wd.s_objectID=3Ds.ppu=3D'';return = code};s.tl=3Dfuncti"=0A= +"on(o,t,n){var = s=3Dthis;s.lnk=3Ds.co(o);s.linkType=3Dt;s.linkName=3Dn;s.t()}"=0A= +";s.ssl=3D(s.wd.location.protocol.toLowerCase().indexOf('https')>=3D0);s= "=0A= +".d=3Ddocument;s.b=3Ds.d.body;s.n=3Dnavigator;s.u=3Ds.n.userAgent;s.ns6=3D= s.u."=0A= +"indexOf('Netscape6/');var = apn=3Ds.n.appName,v=3Ds.n.appVersion,ie=3Dv.ind"=0A= +"exOf('MSIE '),o=3Ds.u.indexOf('Opera = '),i;if(v.indexOf('Opera')>=3D0||o"=0A= +">0)apn=3D'Opera';s.isie=3D(apn=3D=3D'Microsoft Internet = Explorer');s.isns=3D("=0A= +"apn=3D=3D'Netscape');s.isopera=3D(apn=3D=3D'Opera');s.ismac=3D(s.u.inde= xOf('Mac"=0A= +"')>=3D0);if(o>0)s.apv=3DparseFloat(s.u.substring(o+6));else = if(ie>0){s."=0A= +"apv=3DparseInt(i=3Dv.substring(ie+5));if(s.apv>3)s.apv=3DparseFloat(i)}= el"=0A= +"se if(s.ns6>0)s.apv=3DparseFloat(s.u.substring(s.ns6+10));else = s.apv=3D"=0A= +"parseFloat(v);s.em=3D0;if(String.fromCharCode){i=3Descape(String.fromCh= "=0A= +"arCode(256)).toUpperCase();s.em=3D(i=3D=3D'%C4%80'?2:(i=3D=3D'%U0100'?1= :0))}s"=0A= +".sa(un);s.vl_l=3D'visitorID,vmk,ppu,charSet,visitorNamespace,cookieDo"=0A= +"mainPeriods,cookieLifetime,pageName,pageURL,referrer,currencyCode,p"=0A= +"urchaseID';s.vl_t=3Ds.vl_l+',variableProvider,channel,server,pageType"=0A= +",campaign,state,zip,events,products,linkName,linkType';for(var n=3D1;"=0A= +"n<51;n++)s.vl_t+=3D',prop'+n+',eVar'+n+',hier'+n;s.vl_g=3Ds.vl_t+',trac= "=0A= +"kDownloadLinks,trackExternalLinks,trackInlineStats,linkLeaveQuerySt"=0A= +"ring,linkDownloadFileTypes,linkExternalFilters,linkInternalFilters,"=0A= +"linkNames';if(pg)s.gl(s.vl_g);s.ss=3Dss;if(!ss){s.wds();s.ca()}}",=0A= l=3Dwindow.s_c_il,n=3Dnavigator,u=3Dn.userAgent,v=3Dn.appVersion,e=3Dv.in= dexOf(=0A= 'MSIE = '),m=3Du.indexOf('Netscape6/'),a,i,s;if(l)for(i=3D0;i0){a=3DparseInt(i=3Dv.substring(e+5));if(a>3)a=3DparseFloat(i)}=0A= else if(m>0)a=3DparseFloat(u.substring(m+10));else a=3DparseFloat(v);if(a=0A= >=3D5&&v.indexOf('Opera')<0&&u.indexOf('Opera')<0){eval(c);return new=0A= s_c(un,pg,ss)}else s=3Ds_c2f(c);return s(un,pg,ss)} ------=_NextPart_000_0000_01C90149.DA9862B0--